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