Skip to content

Commit 7a01377

Browse files
committed
feat(core): add source and target node ids to edge remove changes
1 parent db16495 commit 7a01377

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

packages/core/src/store/actions.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ import {
3030
applyChanges,
3131
clamp,
3232
createAdditionChange,
33+
createEdgeRemoveChange,
3334
createGraphNodes,
34-
createRemoveChange,
35+
createNodeRemoveChange,
3536
createSelectionChange,
3637
getConnectedEdges,
3738
getDimensions,
@@ -520,7 +521,9 @@ export function useActions(
520521
function createEdgeRemovalChanges(nodes: Node[]) {
521522
const connections = getConnectedEdges(nodes, state.edges).filter((edge) => (isDef(edge.deletable) ? edge.deletable : true))
522523

523-
edgeChanges.push(...connections.map((connection) => createRemoveChange(connection.id)))
524+
edgeChanges.push(
525+
...connections.map((connection) => createEdgeRemoveChange(connection.id, connection.source, connection.target)),
526+
)
524527
}
525528

526529
// recursively get all children and if the child is a parent, get those children as well until all nodes have been removed that are children of the current node
@@ -529,7 +532,7 @@ export function useActions(
529532

530533
if (children.length) {
531534
const childIds = children.map((n) => n.id)
532-
nodeChanges.push(...childIds.map((id) => createRemoveChange(id)))
535+
nodeChanges.push(...childIds.map((id) => createNodeRemoveChange(id)))
533536

534537
if (removeConnectedEdges) {
535538
createEdgeRemovalChanges(children)
@@ -552,7 +555,7 @@ export function useActions(
552555
return
553556
}
554557

555-
nodeChanges.push(createRemoveChange(currNode.id))
558+
nodeChanges.push(createNodeRemoveChange(currNode.id))
556559

557560
if (removeConnectedEdges) {
558561
createEdgeRemovalChanges([currNode])
@@ -589,7 +592,7 @@ export function useActions(
589592
return
590593
}
591594

592-
changes.push(createRemoveChange(typeof item === 'string' ? item : item.id))
595+
changes.push(createEdgeRemoveChange(typeof item === 'string' ? item : item.id, currEdge.source, currEdge.target))
593596
})
594597

595598
state.hooks.edgesChange.trigger(changes)

packages/core/src/types/changes.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ export type NodeChange = NodeDimensionChange | NodePositionChange | NodeSelectio
5151

5252
export type EdgeSelectionChange = NodeSelectionChange
5353

54-
export type EdgeRemoveChange = NodeRemoveChange
54+
export interface EdgeRemoveChange extends NodeRemoveChange {
55+
source: string
56+
target: string
57+
}
5558

5659
export interface EdgeAddChange<Data = ElementData> {
5760
item: GraphEdge<Data>

packages/core/src/utils/changes.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,22 @@ export function createAdditionChange<
228228
}
229229
}
230230

231-
export function createRemoveChange(id: string): NodeRemoveChange | EdgeRemoveChange {
231+
export function createNodeRemoveChange(id: string): NodeRemoveChange {
232232
return {
233233
id,
234234
type: 'remove',
235235
}
236236
}
237237

238+
export function createEdgeRemoveChange(id: string, source: string, target: string): EdgeRemoveChange {
239+
return {
240+
id,
241+
source,
242+
target,
243+
type: 'remove',
244+
}
245+
}
246+
238247
export function getSelectionChanges(elements: FlowElements, selectedIds: string[]) {
239248
return elements.reduce(
240249
(res, item) => {

0 commit comments

Comments
 (0)