render()

in src/components/ForceGraphLink.js [45:81]


  render() {
    const { link, strokeWidth, className, edgeOffset, ...spreadable } = this.props;

    if (typeof edgeOffset === 'number') {
      const { x1, x2, y1, y2 } = spreadable;
      const xLen = x1 + x2;
      const yLen = y1 + y2;
      const length = Math.sqrt(Math.pow(xLen, 2) + Math.pow(yLen, 2));
      const offsetFactor = edgeOffset / length;
      const xOffset = offsetFactor * xLen;
      const yOffset = offsetFactor * yLen;

      if (x1 > x2) {
        spreadable.x1 -= xOffset;
        spreadable.x2 += xOffset;
      } else if (x1 < x2) {
        spreadable.x1 += xOffset;
        spreadable.x2 -= xOffset;
      }

      if (y1 > y2) {
        spreadable.y1 -= yOffset;
        spreadable.y2 += yOffset;
      } else if (y1 < y2) {
        spreadable.y1 += yOffset;
        spreadable.y2 -= yOffset;
      }
    }

    return (
      <line
        className={`rv-force__link ${className}`}
        strokeWidth={strokeWidth || Math.sqrt(link.value)}
        {...spreadable}
      />
    );
  }