Skip to content

Commit f216fe8

Browse files
committed
fix(useEdgeConnection): ensure single outgoing connection per source handle
Filter existing edges before adding new connection to prevent multiple outgoing edges from the same source handle, with special handling for switch nodes
1 parent b0d6a5c commit f216fe8

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/lib/src/hooks/useEdgeConnection.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,19 @@ export const useEdgeConnection = (edges, updateEdges, setHistoryState, nodes, wo
9797
newEdge.label = `→ ${targetNode?.data?.name || targetNode?.data?.label || 'next'}`;
9898
}
9999

100-
const updatedEdges = addEdge(newEdge, edges);
100+
// Remove existing outgoing edges from the same source handle to ensure only one connection per handle
101+
let filteredEdges = edges;
102+
if (sourceNode?.type === 'switch') {
103+
// For switch nodes, only remove edges from the same source handle
104+
filteredEdges = edges.filter(edge =>
105+
!(edge.source === connection.source && edge.sourceHandle === connection.sourceHandle)
106+
);
107+
} else {
108+
// For non-switch nodes, remove all existing outgoing edges
109+
filteredEdges = edges.filter(edge => edge.source !== connection.source);
110+
}
111+
112+
const updatedEdges = addEdge(newEdge, filteredEdges);
101113
updateEdges(updatedEdges);
102114

103115
// Update history if setHistoryState is provided

0 commit comments

Comments
 (0)