From d43a1716e5123beddbfd9e006e2ce07cbe5410bb Mon Sep 17 00:00:00 2001 From: peterkogo Date: Thu, 16 Jan 2025 10:36:13 +0100 Subject: [PATCH 1/2] fix connectionLookup keys, to prevent overlaps --- .../src/examples/UseNodeConnections/MultiHandleNode.tsx | 7 ++++--- examples/react/src/examples/UseNodeConnections/index.tsx | 7 ++++--- packages/system/src/utils/store.ts | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/examples/react/src/examples/UseNodeConnections/MultiHandleNode.tsx b/examples/react/src/examples/UseNodeConnections/MultiHandleNode.tsx index 5d64f81d..3191221c 100644 --- a/examples/react/src/examples/UseNodeConnections/MultiHandleNode.tsx +++ b/examples/react/src/examples/UseNodeConnections/MultiHandleNode.tsx @@ -28,10 +28,11 @@ function CustomHandle({ nodeId, ...handleProps }: HandleProps & { nodeId: string const CustomNode: FC = ({ id }) => { return (
- + +
node {id}
- - + +
); }; diff --git a/examples/react/src/examples/UseNodeConnections/index.tsx b/examples/react/src/examples/UseNodeConnections/index.tsx index c6aa4a68..6b41018e 100644 --- a/examples/react/src/examples/UseNodeConnections/index.tsx +++ b/examples/react/src/examples/UseNodeConnections/index.tsx @@ -69,17 +69,16 @@ const initEdges = [ source: '1', target: '3', }, - { id: 'e4a-5', source: '4', - sourceHandle: 'a', + sourceHandle: 's1', target: '5', }, { id: 'e4b-5', source: '4', - sourceHandle: 'b', + sourceHandle: 's2', target: '6', }, ]; @@ -92,6 +91,8 @@ const CustomNodeFlow = () => { const [nodes, setNodes, onNodesChange] = useNodesState(initNodes); const [edges, setEdges, onEdgesChange] = useEdgesState(initEdges); + console.log(edges); + const onConnect = useCallback((connection: Connection) => setEdges((eds) => addEdge(connection, eds)), [setEdges]); return ( diff --git a/packages/system/src/utils/store.ts b/packages/system/src/utils/store.ts index bccb115d..7eb7ccdb 100644 --- a/packages/system/src/utils/store.ts +++ b/packages/system/src/utils/store.ts @@ -483,8 +483,8 @@ export function updateConnectionLookup(connectionLookup: ConnectionLookup, edgeL const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge; const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle }; - const sourceKey = `${sourceNode}-${sourceHandle}`; - const targetKey = `${targetNode}-${targetHandle}`; + const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`; + const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`; addConnectionToLookup('source', connection, targetKey, connectionLookup, sourceNode, sourceHandle); addConnectionToLookup('target', connection, sourceKey, connectionLookup, targetNode, targetHandle); From 592c7eaf9574fc69df3123837da95f85877b23e8 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Thu, 16 Jan 2025 10:37:23 +0100 Subject: [PATCH 2/2] chore(changeset) add --- .changeset/old-bikes-wave.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/old-bikes-wave.md diff --git a/.changeset/old-bikes-wave.md b/.changeset/old-bikes-wave.md new file mode 100644 index 00000000..7e802939 --- /dev/null +++ b/.changeset/old-bikes-wave.md @@ -0,0 +1,7 @@ +--- +'@xyflow/system': patch +'@xyflow/react': patch +'@xyflow/svelte': patch +--- + +Fix useNodeConnection hook not returning all connected edges.