in src/components/graph-view-v2.js [968:1001]
createNewEdge() {
const { canCreateEdge, nodeKey, onCreateEdge } = this.props;
const { edgesMap, edgeEndNode, hoveredNodeData } = this.state;
if (!hoveredNodeData) {
return;
}
this.removeCustomEdge();
if (edgeEndNode) {
const mapId1 = `${hoveredNodeData[nodeKey]}_${edgeEndNode[nodeKey]}`;
const mapId2 = `${edgeEndNode[nodeKey]}_${hoveredNodeData[nodeKey]}`;
if (
edgesMap &&
hoveredNodeData !== edgeEndNode &&
canCreateEdge &&
canCreateEdge(hoveredNodeData, edgeEndNode) &&
!edgesMap[mapId1] &&
!edgesMap[mapId2]
) {
this.endDragEdge();
// we expect the parent website to set the selected property to the new edge when it's created
if (onCreateEdge) {
onCreateEdge(hoveredNodeData, edgeEndNode);
}
} else {
// make the system understand that the edge creation process is done even though it didn't work.
this.endDragEdge({ edgeEndNode: null });
}
}
}