feat(core): add option to enable/disable replacing id when updating an edge
This commit is contained in:
@@ -93,32 +93,34 @@ export const addEdge = (edgeParams: Edge | Connection, edges: Edge[]): Edge[] =>
|
|||||||
return edges.concat(edge);
|
return edges.concat(edge);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateEdge = (oldEdge: Edge, newConnection: Connection, edges: Edge[]): Edge[] => {
|
export const updateEdge = (oldEdge: Edge, newConnection: Connection, edges: Edge[], shouldReplaceId = true): Edge[] => {
|
||||||
|
const { id: oldEdgeId, ...rest } = oldEdge;
|
||||||
|
|
||||||
if (!newConnection.source || !newConnection.target) {
|
if (!newConnection.source || !newConnection.target) {
|
||||||
devWarn('006', errorMessages['006']());
|
devWarn('006', errorMessages['006']());
|
||||||
|
|
||||||
return edges;
|
return edges;
|
||||||
}
|
}
|
||||||
|
|
||||||
const foundEdge = edges.find((e) => e.id === oldEdge.id) as Edge;
|
const foundEdge = edges.find((e) => e.id === oldEdgeId) as Edge;
|
||||||
|
|
||||||
if (!foundEdge) {
|
if (!foundEdge) {
|
||||||
devWarn('007', errorMessages['007'](oldEdge.id));
|
devWarn('007', errorMessages['007'](oldEdgeId));
|
||||||
|
|
||||||
return edges;
|
return edges;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove old edge and create the new edge with parameters of old edge.
|
// Remove old edge and create the new edge with parameters of old edge.
|
||||||
const edge = {
|
const edge = {
|
||||||
...oldEdge,
|
...rest,
|
||||||
id: getEdgeId(newConnection),
|
id: shouldReplaceId ? getEdgeId(newConnection) : oldEdgeId,
|
||||||
source: newConnection.source,
|
source: newConnection.source,
|
||||||
target: newConnection.target,
|
target: newConnection.target,
|
||||||
sourceHandle: newConnection.sourceHandle,
|
sourceHandle: newConnection.sourceHandle,
|
||||||
targetHandle: newConnection.targetHandle,
|
targetHandle: newConnection.targetHandle,
|
||||||
} as Edge;
|
} as Edge;
|
||||||
|
|
||||||
return edges.filter((e) => e.id !== oldEdge.id).concat(edge);
|
return edges.filter((e) => e.id !== oldEdgeId).concat(edge);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const pointToRendererPoint = (
|
export const pointToRendererPoint = (
|
||||||
|
|||||||
Reference in New Issue
Block a user