feat(core): add option to enable/disable replacing id when updating an edge

This commit is contained in:
braks
2023-02-16 19:48:27 +01:00
parent afa38727fa
commit 1be6dfa8e3
+8 -6
View File
@@ -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 = (