diff --git a/packages/core/src/store/actions.ts b/packages/core/src/store/actions.ts index 59e0f26e..2065d248 100644 --- a/packages/core/src/store/actions.ts +++ b/packages/core/src/store/actions.ts @@ -520,7 +520,15 @@ export function useActions( const connections = getConnectedEdges(nodes).filter((edge) => (isDef(edge.deletable) ? edge.deletable : true)) edgeChanges.push( - ...connections.map((connection) => createEdgeRemoveChange(connection.id, connection.source, connection.target)), + ...connections.map((connection) => + createEdgeRemoveChange( + connection.id, + connection.source, + connection.target, + connection.sourceHandle, + connection.targetHandle, + ), + ), ) } @@ -590,7 +598,15 @@ export function useActions( return } - changes.push(createEdgeRemoveChange(typeof item === 'string' ? item : item.id, currEdge.source, currEdge.target)) + changes.push( + createEdgeRemoveChange( + typeof item === 'string' ? item : item.id, + currEdge.source, + currEdge.target, + currEdge.sourceHandle, + currEdge.targetHandle, + ), + ) }) state.hooks.edgesChange.trigger(changes) diff --git a/packages/core/src/types/changes.ts b/packages/core/src/types/changes.ts index 18beb380..051aac95 100644 --- a/packages/core/src/types/changes.ts +++ b/packages/core/src/types/changes.ts @@ -55,6 +55,8 @@ export type EdgeSelectionChange = NodeSelectionChange export interface EdgeRemoveChange extends NodeRemoveChange { source: string target: string + sourceHandle: string | null + targetHandle: string | null } export interface EdgeAddChange { diff --git a/packages/core/src/utils/changes.ts b/packages/core/src/utils/changes.ts index d54f55a1..e5783858 100644 --- a/packages/core/src/utils/changes.ts +++ b/packages/core/src/utils/changes.ts @@ -235,11 +235,19 @@ export function createNodeRemoveChange(id: string): NodeRemoveChange { } } -export function createEdgeRemoveChange(id: string, source: string, target: string): EdgeRemoveChange { +export function createEdgeRemoveChange( + id: string, + source: string, + target: string, + sourceHandle?: string | null, + targetHandle?: string | null, +): EdgeRemoveChange { return { id, source, target, + sourceHandle: sourceHandle || null, + targetHandle: targetHandle || null, type: 'remove', } }