From 8e7ee88ca3241a0a71682389cb8886eef3995501 Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 5 Oct 2023 12:24:35 +0200 Subject: [PATCH] feat(react) added getConnectedEdges to useReactFlow --- packages/react/src/hooks/useReactFlow.ts | 17 +++++++++++++++++ packages/react/src/types/instance.ts | 1 + 2 files changed, 18 insertions(+) diff --git a/packages/react/src/hooks/useReactFlow.ts b/packages/react/src/hooks/useReactFlow.ts index 45a8dbe1..cec31cc8 100644 --- a/packages/react/src/hooks/useReactFlow.ts +++ b/packages/react/src/hooks/useReactFlow.ts @@ -223,6 +223,21 @@ export default function useReactFlow(): ReactFlo [] ); + const getConnectedEdges = useCallback((node) => { + const edges = store.getState().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)); + }, []); + return useMemo(() => { return { ...viewportHelper, @@ -238,6 +253,7 @@ export default function useReactFlow(): ReactFlo deleteElements, getIntersectingNodes, isNodeIntersecting, + getConnectedEdges, }; }, [ viewportHelper, @@ -253,5 +269,6 @@ export default function useReactFlow(): ReactFlo deleteElements, getIntersectingNodes, isNodeIntersecting, + getConnectedEdges, ]); } diff --git a/packages/react/src/types/instance.ts b/packages/react/src/types/instance.ts index 239d339f..0bc61617 100644 --- a/packages/react/src/types/instance.ts +++ b/packages/react/src/types/instance.ts @@ -39,6 +39,7 @@ export namespace Instance { area: Rect, partially?: boolean ) => boolean; + export type getConnectedEdges = (id: string | (Partial & { id: Node['id'] })[]) => Edge[]; } export type ReactFlowInstance = {