UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering

27 lines 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loop = void 0; const geometry_1 = require("../../geometry"); const loop = (sourcePoint, targetPoint, routePoints, options = {}) => { const fix = routePoints.length === 3 ? 0 : 1; const p1 = geometry_1.Point.create(routePoints[0 + fix]); const p2 = geometry_1.Point.create(routePoints[2 + fix]); const center = geometry_1.Point.create(routePoints[1 + fix]); if (!geometry_1.Point.equals(sourcePoint, targetPoint)) { const middle = new geometry_1.Point((sourcePoint.x + targetPoint.x) / 2, (sourcePoint.y + targetPoint.y) / 2); const angle = middle.angleBetween(geometry_1.Point.create(sourcePoint).rotate(90, middle), center); if (angle > 1) { p1.rotate(180 - angle, middle); p2.rotate(180 - angle, middle); center.rotate(180 - angle, middle); } } const pathData = ` M ${sourcePoint.x} ${sourcePoint.y} Q ${p1.x} ${p1.y} ${center.x} ${center.y} Q ${p2.x} ${p2.y} ${targetPoint.x} ${targetPoint.y} `; return options.raw ? geometry_1.Path.parse(pathData) : pathData; }; exports.loop = loop; //# sourceMappingURL=loop.js.map