Merge pull request #3537 from wbkd/use-svelte-flow-to-object
feat(svelte) added toObject() on useSvelteFlow
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useSvelteFlow } from '@xyflow/svelte';
|
import { useNodes, useSvelteFlow } from '@xyflow/svelte';
|
||||||
|
|
||||||
const {
|
const {
|
||||||
zoomIn,
|
zoomIn,
|
||||||
@@ -10,8 +10,10 @@
|
|||||||
setViewport,
|
setViewport,
|
||||||
getViewport,
|
getViewport,
|
||||||
viewport,
|
viewport,
|
||||||
nodes
|
toObject
|
||||||
} = useSvelteFlow();
|
} = useSvelteFlow();
|
||||||
|
|
||||||
|
const nodes = useNodes();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<aside>
|
<aside>
|
||||||
@@ -23,6 +25,12 @@
|
|||||||
<button on:click={() => setCenter(0, 0)}>setCenter 0, 0</button>
|
<button on:click={() => setCenter(0, 0)}>setCenter 0, 0</button>
|
||||||
<button on:click={() => setViewport({ x: 100, y: 100, zoom: 2 })}>setViewport</button>
|
<button on:click={() => setViewport({ x: 100, y: 100, zoom: 2 })}>setViewport</button>
|
||||||
<button on:click={() => console.log(getViewport())}>getViewport</button>
|
<button on:click={() => console.log(getViewport())}>getViewport</button>
|
||||||
|
<button
|
||||||
|
on:click={() => {
|
||||||
|
const { nodes, edges, viewport } = toObject();
|
||||||
|
console.log(nodes, edges, viewport);
|
||||||
|
}}>toObject</button
|
||||||
|
>
|
||||||
|
|
||||||
<div class="label">Nodes:</div>
|
<div class="label">Nodes:</div>
|
||||||
{#each $nodes as node (node.id)}
|
{#each $nodes as node (node.id)}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ export function useSvelteFlow(): {
|
|||||||
getConnectedEdges: (id: string | (Partial<Node> & { id: Node['id'] })[]) => Edge[];
|
getConnectedEdges: (id: string | (Partial<Node> & { id: Node['id'] })[]) => Edge[];
|
||||||
getIncomers: (node: string | (Partial<Node> & { id: Node['id'] })) => Node[];
|
getIncomers: (node: string | (Partial<Node> & { id: Node['id'] })) => Node[];
|
||||||
getOutgoers: (node: string | (Partial<Node> & { id: Node['id'] })) => Node[];
|
getOutgoers: (node: string | (Partial<Node> & { id: Node['id'] })) => Node[];
|
||||||
|
toObject: () => { nodes: Node[]; edges: Edge[]; viewport: Viewport };
|
||||||
} {
|
} {
|
||||||
const {
|
const {
|
||||||
zoomIn,
|
zoomIn,
|
||||||
@@ -263,6 +264,19 @@ export function useSvelteFlow(): {
|
|||||||
|
|
||||||
return getOutgoersBase(_node, get(nodes), get(edges));
|
return getOutgoersBase(_node, get(nodes), get(edges));
|
||||||
},
|
},
|
||||||
|
toObject: () => {
|
||||||
|
return {
|
||||||
|
nodes: get(nodes).map((node) => ({
|
||||||
|
...node,
|
||||||
|
// we want to make sure that changes to the nodes object that gets returned by toObject
|
||||||
|
// do not affect the nodes object
|
||||||
|
position: { ...node.position },
|
||||||
|
data: { ...node.data }
|
||||||
|
})),
|
||||||
|
edges: get(edges).map((edge) => ({ ...edge })),
|
||||||
|
viewport: { ...get(viewport) }
|
||||||
|
};
|
||||||
|
},
|
||||||
viewport
|
viewport
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user