From d4179ac5925e8144dd29ff383b85deb5ee165b26 Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 5 Oct 2023 12:28:06 +0200 Subject: [PATCH] feat(svelte) added getConnectedEdges to useSvelteFlow --- packages/svelte/src/lib/hooks/useSvelteFlow.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/lib/hooks/useSvelteFlow.ts b/packages/svelte/src/lib/hooks/useSvelteFlow.ts index 366f104d..191b2ea0 100644 --- a/packages/svelte/src/lib/hooks/useSvelteFlow.ts +++ b/packages/svelte/src/lib/hooks/useSvelteFlow.ts @@ -10,7 +10,7 @@ import { } from '@xyflow/system'; import { useStore } from '$lib/store'; -import type { FitViewOptions } from '$lib/types'; +import type { Edge, FitViewOptions, Node } from '$lib/types'; import type { SvelteFlowStore } from '$lib/store/types'; export function useSvelteFlow(): { @@ -26,6 +26,7 @@ export function useSvelteFlow(): { viewport: Writable; nodes: SvelteFlowStore['nodes']; edges: SvelteFlowStore['edges']; + getConnectedEdges: (id: string | (Partial & { id: Node['id'] })[]) => Edge[]; } { const { zoomIn, @@ -86,6 +87,20 @@ export function useSvelteFlow(): { }, nodes, edges, + getConnectedEdges: (node) => { + const _edges = get(edges); + + const nodeIds = new Set(); + if (typeof node === 'string') { + nodeIds.add(node); + } else if (node.length >= 1) { + node.forEach((n) => { + nodeIds.add(n.id); + }); + } + + return _edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target)); + }, viewport: viewport }; }