diff --git a/.changeset/many-donkeys-train.md b/.changeset/many-donkeys-train.md new file mode 100644 index 00000000..55ebf762 --- /dev/null +++ b/.changeset/many-donkeys-train.md @@ -0,0 +1,5 @@ +--- +"@vue-flow/core": patch +--- + +Remove edgelookup update when updating connection lookup as edge lookup is computed already diff --git a/packages/core/src/store/actions.ts b/packages/core/src/store/actions.ts index 882aac2e..ccf85354 100644 --- a/packages/core/src/store/actions.ts +++ b/packages/core/src/store/actions.ts @@ -509,7 +509,13 @@ export function useActions(state: State, nodeLookup: ComputedRef, ed } const updateEdge: Actions['updateEdge'] = (oldEdge, newConnection, shouldReplaceId = true) => { - const prevEdge = findEdge(oldEdge.id)! + const prevEdge = findEdge(oldEdge.id) + + if (!prevEdge) { + return false + } + + const prevEdgeIndex = state.edges.indexOf(prevEdge) const newEdge = updateEdgeAction(oldEdge, newConnection, prevEdge, shouldReplaceId, state.hooks.error.trigger) @@ -525,7 +531,7 @@ export function useActions(state: State, nodeLookup: ComputedRef, ed state.edges, ) - state.edges.splice(state.edges.indexOf(prevEdge), 1, validEdge) + state.edges = state.edges.map((edge, index) => (index === prevEdgeIndex ? validEdge : edge)) updateConnectionLookup(state.connectionLookup, edgeLookup.value, [validEdge]) diff --git a/packages/core/src/utils/store.ts b/packages/core/src/utils/store.ts index eb8f2831..349c98de 100644 --- a/packages/core/src/utils/store.ts +++ b/packages/core/src/utils/store.ts @@ -165,7 +165,6 @@ function addConnectionToLookup( export function updateConnectionLookup(connectionLookup: ConnectionLookup, edgeLookup: EdgeLookup, edges: GraphEdge[]) { connectionLookup.clear() - edgeLookup.clear() for (const edge of edges) { const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge @@ -176,8 +175,6 @@ export function updateConnectionLookup(connectionLookup: ConnectionLookup, edgeL addConnectionToLookup('source', connection, targetKey, connectionLookup, sourceNode, sourceHandle) addConnectionToLookup('target', connection, sourceKey, connectionLookup, targetNode, targetHandle) - - edgeLookup.set(edge.id, edge) } }