diff --git a/src/store/actions.ts b/src/store/actions.ts index ead860ad..d3f49209 100644 --- a/src/store/actions.ts +++ b/src/store/actions.ts @@ -116,8 +116,6 @@ export default (state: FlowState, getters: FlowGetters): FlowActions => { } const setEdges: FlowActions['setEdges'] = (edges) => { state.edges = edges.flatMap((edge) => { - const parsed = parseEdge(edge) - const sourceNode = getters.getNode.value(edge.source)! const targetNode = getters.getNode.value(edge.target)! if (!sourceNode || typeof sourceNode === 'undefined') @@ -125,11 +123,10 @@ export default (state: FlowState, getters: FlowGetters): FlowActions => { if (!targetNode || typeof targetNode === 'undefined') console.warn(`couldn't create edge for target id: ${edge.target}; edge id: ${edge.id}`) - return { - ...parsed, + return parseEdge(edge, { sourceNode, targetNode, - } + }) }) } diff --git a/src/utils/graph.ts b/src/utils/graph.ts index 443a3ed4..b35ffbc5 100644 --- a/src/utils/graph.ts +++ b/src/utils/graph.ts @@ -183,7 +183,11 @@ export const parseNode = (node: Node, nodeExtent: CoordinateExtent): GraphNode = dragging: false, }) -export const parseEdge = (edge: Edge): GraphEdge => ({ +export const parseEdge = ( + edge: Edge, + defaults: Partial & { sourceNode: GraphNode; targetNode: GraphNode }, +): GraphEdge => ({ + ...defaults, ...edge, source: edge.source.toString(), target: edge.target.toString(), @@ -191,8 +195,6 @@ export const parseEdge = (edge: Edge): GraphEdge => ({ targetHandle: edge.targetHandle ? edge.targetHandle.toString() : undefined, id: edge.id.toString(), type: edge.type ?? 'default', - sourceNode: {} as any, - targetNode: {} as any, }) const getBoundsOfBoxes = (box1: Box, box2: Box): Box => ({