line.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. var __rest = (this && this.__rest) || function (s, e) {
  3. var t = {};
  4. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
  5. t[p] = s[p];
  6. if (s != null && typeof Object.getOwnPropertySymbols === "function")
  7. for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  8. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
  9. t[p[i]] = s[p[i]];
  10. }
  11. return t;
  12. };
  13. Object.defineProperty(exports, "__esModule", { value: true });
  14. exports.bottom = exports.top = exports.right = exports.left = exports.line = void 0;
  15. const x6_geometry_1 = require("@antv/x6-geometry");
  16. const util_1 = require("./util");
  17. const line = (portsPositionArgs, elemBBox, groupPositionArgs) => {
  18. const start = (0, util_1.normalizePoint)(elemBBox, groupPositionArgs.start || elemBBox.getOrigin());
  19. const end = (0, util_1.normalizePoint)(elemBBox, groupPositionArgs.end || elemBBox.getCorner());
  20. return lineLayout(portsPositionArgs, start, end, groupPositionArgs);
  21. };
  22. exports.line = line;
  23. const left = (portsPositionArgs, elemBBox, groupPositionArgs) => {
  24. return lineLayout(portsPositionArgs, elemBBox.getTopLeft(), elemBBox.getBottomLeft(), groupPositionArgs);
  25. };
  26. exports.left = left;
  27. const right = (portsPositionArgs, elemBBox, groupPositionArgs) => {
  28. return lineLayout(portsPositionArgs, elemBBox.getTopRight(), elemBBox.getBottomRight(), groupPositionArgs);
  29. };
  30. exports.right = right;
  31. const top = (portsPositionArgs, elemBBox, groupPositionArgs) => {
  32. return lineLayout(portsPositionArgs, elemBBox.getTopLeft(), elemBBox.getTopRight(), groupPositionArgs);
  33. };
  34. exports.top = top;
  35. const bottom = (portsPositionArgs, elemBBox, groupPositionArgs) => {
  36. return lineLayout(portsPositionArgs, elemBBox.getBottomLeft(), elemBBox.getBottomRight(), groupPositionArgs);
  37. };
  38. exports.bottom = bottom;
  39. function lineLayout(portsPositionArgs, p1, p2, groupPositionArgs) {
  40. const line = new x6_geometry_1.Line(p1, p2);
  41. const length = portsPositionArgs.length;
  42. return portsPositionArgs.map((_a, index) => {
  43. var { strict } = _a, offset = __rest(_a, ["strict"]);
  44. const ratio = strict || groupPositionArgs.strict
  45. ? (index + 1) / (length + 1)
  46. : (index + 0.5) / length;
  47. const p = line.pointAt(ratio);
  48. if (offset.dx || offset.dy) {
  49. p.translate(offset.dx || 0, offset.dy || 0);
  50. }
  51. return (0, util_1.toResult)(p.round(), 0, offset);
  52. });
  53. }
  54. //# sourceMappingURL=line.js.map