UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering.

61 lines 2.05 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.oneSide = void 0; var util_1 = require("../../util"); /** * Routes the edge always to/from a certain side */ var oneSide = function (vertices, options, edgeView) { var side = options.side || 'bottom'; var padding = util_1.NumberExt.normalizeSides(options.padding || 40); var sourceBBox = edgeView.sourceBBox; var targetBBox = edgeView.targetBBox; var sourcePoint = sourceBBox.getCenter(); var targetPoint = targetBBox.getCenter(); var coord; var dim; var factor; switch (side) { case 'top': factor = -1; coord = 'y'; dim = 'height'; break; case 'left': factor = -1; coord = 'x'; dim = 'width'; break; case 'right': factor = 1; coord = 'x'; dim = 'width'; break; case 'bottom': default: factor = 1; coord = 'y'; dim = 'height'; break; } // Move the points from the center of the element to outside of it. sourcePoint[coord] += factor * (sourceBBox[dim] / 2 + padding[side]); targetPoint[coord] += factor * (targetBBox[dim] / 2 + padding[side]); // Make edge orthogonal (at least the first and last vertex). if (factor * (sourcePoint[coord] - targetPoint[coord]) > 0) { targetPoint[coord] = sourcePoint[coord]; } else { sourcePoint[coord] = targetPoint[coord]; } return __spreadArrays([sourcePoint.toJSON()], vertices, [targetPoint.toJSON()]); }; exports.oneSide = oneSide; //# sourceMappingURL=oneside.js.map