Merge pull request #2847 from bcakmakoglu/feat/replace-id
feat(core): add option to enable/disable replacing id when updating an edge
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'@reactflow/core': minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Add option to enable/disable replacing edge id when using `updateEdge`
|
||||||
@@ -281,3 +281,7 @@ export type SelectionRect = Rect & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type OnError = (id: string, message: string) => void;
|
export type OnError = (id: string, message: string) => void;
|
||||||
|
|
||||||
|
export interface UpdateEdgeOptions {
|
||||||
|
shouldReplaceId?: boolean;
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@ import {
|
|||||||
Rect,
|
Rect,
|
||||||
NodeInternals,
|
NodeInternals,
|
||||||
NodeOrigin,
|
NodeOrigin,
|
||||||
|
UpdateEdgeOptions,
|
||||||
} from '../types';
|
} from '../types';
|
||||||
import { errorMessages } from '../contants';
|
import { errorMessages } from '../contants';
|
||||||
|
|
||||||
@@ -93,32 +94,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[], options: UpdateEdgeOptions = { 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: options.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