diff --git a/packages/svelte/src/lib/hooks/useNodesEdgesViewport.svelte.ts b/packages/svelte/src/lib/hooks/useNodesEdgesViewport.svelte.ts index a521ebab..41a86a3a 100644 --- a/packages/svelte/src/lib/hooks/useNodesEdgesViewport.svelte.ts +++ b/packages/svelte/src/lib/hooks/useNodesEdgesViewport.svelte.ts @@ -1,4 +1,6 @@ import { useStore } from '$lib/store'; +import type { Edge, Node } from '$lib/types'; +import type { Viewport } from '@xyflow/system'; /** * Hook for getting the current nodes from the store. @@ -12,8 +14,14 @@ export function useNodes() { get current() { return store.nodes; }, - set current(val) { - store.nodes = val; + set current(nodes) { + store.nodes = nodes; + }, + update(updateFn: (nodes: Node[]) => Node[]) { + store.nodes = updateFn(store.nodes); + }, + set(nodes: Node[]) { + store.nodes = nodes; } }; } @@ -30,8 +38,14 @@ export function useEdges() { get current() { return store.edges; }, - set current(val) { - store.edges = val; + set current(edges) { + store.edges = edges; + }, + update(updateFn: (edges: Edge[]) => Edge[]) { + store.edges = updateFn(store.edges); + }, + set(edges: Edge[]) { + store.edges = edges; } }; } @@ -48,8 +62,14 @@ export function useViewport() { get current() { return store.viewport; }, - set current(val) { - store.viewport = val; + set current(viewport: Viewport) { + store.viewport = viewport; + }, + update(updateFn: (viewport: Viewport) => Viewport) { + store.viewport = updateFn(store.viewport); + }, + set(viewport: Viewport) { + store.viewport = viewport; } }; }