feat(core): add source and target node ids to edge remove changes
This commit is contained in:
@@ -30,8 +30,9 @@ import {
|
|||||||
applyChanges,
|
applyChanges,
|
||||||
clamp,
|
clamp,
|
||||||
createAdditionChange,
|
createAdditionChange,
|
||||||
|
createEdgeRemoveChange,
|
||||||
createGraphNodes,
|
createGraphNodes,
|
||||||
createRemoveChange,
|
createNodeRemoveChange,
|
||||||
createSelectionChange,
|
createSelectionChange,
|
||||||
getConnectedEdges,
|
getConnectedEdges,
|
||||||
getDimensions,
|
getDimensions,
|
||||||
@@ -520,7 +521,9 @@ export function useActions(
|
|||||||
function createEdgeRemovalChanges(nodes: Node[]) {
|
function createEdgeRemovalChanges(nodes: Node[]) {
|
||||||
const connections = getConnectedEdges(nodes, state.edges).filter((edge) => (isDef(edge.deletable) ? edge.deletable : true))
|
const connections = getConnectedEdges(nodes, state.edges).filter((edge) => (isDef(edge.deletable) ? edge.deletable : true))
|
||||||
|
|
||||||
edgeChanges.push(...connections.map((connection) => createRemoveChange(connection.id)))
|
edgeChanges.push(
|
||||||
|
...connections.map((connection) => createEdgeRemoveChange(connection.id, connection.source, connection.target)),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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
|
// 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(
|
|||||||
|
|
||||||
if (children.length) {
|
if (children.length) {
|
||||||
const childIds = children.map((n) => n.id)
|
const childIds = children.map((n) => n.id)
|
||||||
nodeChanges.push(...childIds.map((id) => createRemoveChange(id)))
|
nodeChanges.push(...childIds.map((id) => createNodeRemoveChange(id)))
|
||||||
|
|
||||||
if (removeConnectedEdges) {
|
if (removeConnectedEdges) {
|
||||||
createEdgeRemovalChanges(children)
|
createEdgeRemovalChanges(children)
|
||||||
@@ -552,7 +555,7 @@ export function useActions(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeChanges.push(createRemoveChange(currNode.id))
|
nodeChanges.push(createNodeRemoveChange(currNode.id))
|
||||||
|
|
||||||
if (removeConnectedEdges) {
|
if (removeConnectedEdges) {
|
||||||
createEdgeRemovalChanges([currNode])
|
createEdgeRemovalChanges([currNode])
|
||||||
@@ -589,7 +592,7 @@ export function useActions(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
changes.push(createRemoveChange(typeof item === 'string' ? item : item.id))
|
changes.push(createEdgeRemoveChange(typeof item === 'string' ? item : item.id, currEdge.source, currEdge.target))
|
||||||
})
|
})
|
||||||
|
|
||||||
state.hooks.edgesChange.trigger(changes)
|
state.hooks.edgesChange.trigger(changes)
|
||||||
|
|||||||
@@ -51,7 +51,10 @@ export type NodeChange = NodeDimensionChange | NodePositionChange | NodeSelectio
|
|||||||
|
|
||||||
export type EdgeSelectionChange = NodeSelectionChange
|
export type EdgeSelectionChange = NodeSelectionChange
|
||||||
|
|
||||||
export type EdgeRemoveChange = NodeRemoveChange
|
export interface EdgeRemoveChange extends NodeRemoveChange {
|
||||||
|
source: string
|
||||||
|
target: string
|
||||||
|
}
|
||||||
|
|
||||||
export interface EdgeAddChange<Data = ElementData> {
|
export interface EdgeAddChange<Data = ElementData> {
|
||||||
item: GraphEdge<Data>
|
item: GraphEdge<Data>
|
||||||
|
|||||||
@@ -228,13 +228,22 @@ export function createAdditionChange<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createRemoveChange(id: string): NodeRemoveChange | EdgeRemoveChange {
|
export function createNodeRemoveChange(id: string): NodeRemoveChange {
|
||||||
return {
|
return {
|
||||||
id,
|
id,
|
||||||
type: 'remove',
|
type: 'remove',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function createEdgeRemoveChange(id: string, source: string, target: string): EdgeRemoveChange {
|
||||||
|
return {
|
||||||
|
id,
|
||||||
|
source,
|
||||||
|
target,
|
||||||
|
type: 'remove',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function getSelectionChanges(elements: FlowElements, selectedIds: string[]) {
|
export function getSelectionChanges(elements: FlowElements, selectedIds: string[]) {
|
||||||
return elements.reduce(
|
return elements.reduce(
|
||||||
(res, item) => {
|
(res, item) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user