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} />