updateAttachPoints()

in src/models/Node.js [95:123]


  updateAttachPoints() {
    if (this.leftLinks.length === 1) {
      this.leftLinks[0].attachPoints.y2 = this.y;
    } else if (this.leftLinks.length > 1) {
      const totalLeft = sum(this.leftLinks.map(l => l.strokeWidth));
      let startPos = this.y - (totalLeft + (this.leftLinks.length - 1) * 2) / 2;
      this.leftLinks
        .concat()
        .sort((a, b) => a.source.y - b.source.y)
        .forEach(link => {
          link.attachPoints.y2 = startPos + link.strokeWidth / 2;
          startPos += link.strokeWidth + 2;
        });
    }

    if (this.rightLinks.length === 1) {
      this.rightLinks[0].attachPoints.y1 = this.y;
    } else if (this.rightLinks.length > 1) {
      const totalRight = sum(this.rightLinks.map(l => l.strokeWidth));
      let startPos = this.y - (totalRight + (this.rightLinks.length - 1) * 2) / 2;
      this.rightLinks
        .concat()
        .sort((a, b) => a.target.y - b.target.y)
        .forEach(link => {
          link.attachPoints.y1 = startPos + link.strokeWidth / 2;
          startPos += link.strokeWidth + 2;
        });
    }
  }