diff --git a/frontend/src/lib/components/graph/FlowGraphV2.svelte b/frontend/src/lib/components/graph/FlowGraphV2.svelte
index 61e1ecbb79..316bb7a7a8 100644
--- a/frontend/src/lib/components/graph/FlowGraphV2.svelte
+++ b/frontend/src/lib/components/graph/FlowGraphV2.svelte
@@ -53,6 +53,7 @@
import SubflowBound from './renderers/nodes/SubflowBound.svelte'
import ViewportResizer from './ViewportResizer.svelte'
import ViewportSynchronizer from './ViewportSynchronizer.svelte'
+ import InitialViewportFitter from './InitialViewportFitter.svelte'
import AssetNode, { computeAssetNodes } from './renderers/nodes/AssetNode.svelte'
import AssetsOverflowedNode from './renderers/nodes/AssetsOverflowedNode.svelte'
import type { FlowGraphAssetContext } from '../flows/types'
@@ -356,7 +357,6 @@
boxSize = layout(dag as any)
}
- const yOffset = insertable ? 100 : 0
const newNodes = dag.descendants().map((des) => ({
id: des.data.id,
position: {
@@ -370,7 +370,7 @@
NODE.width / 2 -
(width - fullWidth) / 2
: 0,
- y: (des.y || 0) + yOffset + (nodeSpacingMap[des.data.id] ?? 0) / 2
+ y: (des.y || 0) + (nodeSpacingMap[des.data.id] ?? 0) / 2
}
}))
@@ -456,6 +456,9 @@
let height = $state(0)
+ // Counter to trigger initial viewport fit after first flow build
+ let initialBuildTrigger = $state(0)
+
// Note feature state
function isSimplifiable(modules: FlowModule[] | undefined): boolean {
@@ -634,7 +637,13 @@
$effect(() => {
;[graph, allowSimplifiedPoll, $showAssets, noteManager.renderCount]
- untrack(() => updateStores())
+ untrack(async () => {
+ await updateStores()
+ // Trigger initial viewport fit after first build
+ if (initialBuildTrigger === 0 && nodes.length > 0) {
+ initialBuildTrigger = 1
+ }
+ })
})
// Add global keyboard event listener for selection controls
@@ -743,6 +752,7 @@
bind:this={viewportSynchronizer}
/>
{/if}
+
{
document.dispatchEvent(new Event('focus'))
diff --git a/frontend/src/lib/components/graph/InitialViewportFitter.svelte b/frontend/src/lib/components/graph/InitialViewportFitter.svelte
new file mode 100644
index 0000000000..ffec0bb00c
--- /dev/null
+++ b/frontend/src/lib/components/graph/InitialViewportFitter.svelte
@@ -0,0 +1,50 @@
+
diff --git a/frontend/src/routes/view_graph/+page.svelte b/frontend/src/routes/view_graph/+page.svelte
index 18b49846a8..86bbba17cf 100644
--- a/frontend/src/routes/view_graph/+page.svelte
+++ b/frontend/src/routes/view_graph/+page.svelte
@@ -4,7 +4,7 @@
import { decodeState } from '$lib/utils'
let content = localStorage.getItem('svelvet')
- const { modules, failureModule, preprocessorModule } = content
+ const { modules, failureModule, preprocessorModule, notes } = content
? decodeState(content)
: { modules: [], failureModule: undefined, preprocessorModule: undefined }
@@ -15,6 +15,7 @@
{modules}
{failureModule}
{preprocessorModule}
+ {notes}
/>