createNewEdge()

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 });
      }
    }
  }