diff --git a/packages/svelte/src/lib/container/Pane/Pane.svelte b/packages/svelte/src/lib/container/Pane/Pane.svelte index bd8d9f74..1159d6f2 100644 --- a/packages/svelte/src/lib/container/Pane/Pane.svelte +++ b/packages/svelte/src/lib/container/Pane/Pane.svelte @@ -42,7 +42,6 @@ nodes, edges, transform, - nodeOrigin, dragging, selectionRect, selectionRectMode, @@ -117,8 +116,7 @@ nextUserSelectRect, $transform, selectionMode === SelectionMode.Partial, - true, - $nodeOrigin + true ); const selectedEdgeIds = getConnectedEdges(selectedNodes, $edges).map((e) => e.id); const selectedNodeIds = selectedNodes.map((n) => n.id); diff --git a/packages/svelte/src/lib/hooks/useSvelteFlow.ts b/packages/svelte/src/lib/hooks/useSvelteFlow.ts index 60fdd3ef..9cd685f9 100644 --- a/packages/svelte/src/lib/hooks/useSvelteFlow.ts +++ b/packages/svelte/src/lib/hooks/useSvelteFlow.ts @@ -1,19 +1,42 @@ -import type { ZoomInOut } from '@reactflow/system'; +import type { Viewport, ZoomInOut } from '@reactflow/system'; import { useStore } from '$lib/store'; import type { FitViewOptions } from '$lib/types'; +import { get, writable, type Writable } from 'svelte/store'; +import type { SvelteFlowStore } from '$lib/store/types'; export function useSvelteFlow(): { zoomIn: ZoomInOut; zoomOut: ZoomInOut; fitView: (options?: FitViewOptions) => void; + viewport: Writable; + nodes: SvelteFlowStore['nodes']; + edges: SvelteFlowStore['edges']; } { // how to get the new context here? fit view doesn't work, because the store is not updated (uses old nodes store) - const { zoomIn, zoomOut, fitView } = useStore(); + const { zoomIn, zoomOut, fitView, transform, nodes, edges } = useStore(); + + const transformValues = get(transform); + const viewportWritable = writable({ + x: transformValues[0], + y: transformValues[1], + zoom: transformValues[2] + }); + + transform.subscribe((ts) => + viewportWritable.set({ + x: ts[0], + y: ts[1], + zoom: ts[2] + }) + ); return { zoomIn, zoomOut, - fitView + fitView, + nodes, + edges, + viewport: viewportWritable }; } diff --git a/packages/svelte/src/lib/store/edges-layouted.ts b/packages/svelte/src/lib/store/edges-layouted.ts index 48e2beb7..0433b6a8 100644 --- a/packages/svelte/src/lib/store/edges-layouted.ts +++ b/packages/svelte/src/lib/store/edges-layouted.ts @@ -27,8 +27,6 @@ export function getEdgesLayouted(store: SvelteFlowStoreState) { const sourcePosition = sourceHandle?.position || Position.Bottom; const targetPosition = targetHandle?.position || Position.Top; - console.log(sourceNodeRect); - if (!sourceHandle || !targetHandle) { return null; } diff --git a/packages/svelte/src/lib/utils/index.ts b/packages/svelte/src/lib/utils/index.ts index d923d9d0..cfb0d3f4 100644 --- a/packages/svelte/src/lib/utils/index.ts +++ b/packages/svelte/src/lib/utils/index.ts @@ -1,4 +1,3 @@ -import type { HandleElement, Position } from '@reactflow/system'; import { isNodeBase, isEdgeBase, @@ -6,8 +5,7 @@ import { getOutgoersBase, getIncomersBase, updateEdgeBase, - getConnectedEdgesBase, - getDimensions + getConnectedEdgesBase } from '@reactflow/utils'; import type { DefaultEdgeOptions, DefaultNodeOptions, Edge, Node } from '$lib/types'; import { writable, type Writable } from 'svelte/store'; diff --git a/packages/svelte/src/routes/usesvelteflow/+page.svelte b/packages/svelte/src/routes/usesvelteflow/+page.svelte index d536801f..82d960f3 100644 --- a/packages/svelte/src/routes/usesvelteflow/+page.svelte +++ b/packages/svelte/src/routes/usesvelteflow/+page.svelte @@ -1,32 +1,31 @@ - - - - - - - - - - +
+ + + + + + +
+ + \ No newline at end of file diff --git a/packages/svelte/src/routes/usesvelteflow/Sidebar.svelte b/packages/svelte/src/routes/usesvelteflow/Sidebar.svelte new file mode 100644 index 00000000..c18a8b83 --- /dev/null +++ b/packages/svelte/src/routes/usesvelteflow/Sidebar.svelte @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file