@peasant-labs/fairtrade 0.0.50 → 0.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/lib/{adapter-CVKibszh.js → adapter-VlAohr64.js} +107 -102
  2. package/dist/lib/commons.js +544 -522
  3. package/dist/lib/components.css +1 -1
  4. package/dist/lib/share.js +3 -3
  5. package/dist/lib/tokens.css +2 -2
  6. package/dist/lib/tokens.json +2 -2
  7. package/dist/lib/types/AppSidebar.d.ts +9 -11
  8. package/dist/lib/types/Avatar.d.ts +2 -2
  9. package/dist/lib/types/Dialog.d.ts +1 -1
  10. package/dist/lib/types/Input.d.ts +3 -3
  11. package/dist/lib/types/OverflowList.d.ts +1 -1
  12. package/dist/lib/types/RepoPicker.d.ts +3 -1
  13. package/dist/lib/types/Switch.d.ts +1 -1
  14. package/dist/lib/types/commons/Explore.d.ts +1 -1
  15. package/dist/lib/types/commons/types.d.ts +12 -0
  16. package/dist/lib/types/transcript/IntegrityBadge.d.ts +21 -0
  17. package/dist/lib/types/transcript/TranscriptViewer.d.ts +1 -1
  18. package/dist/lib/types/transcript/TurnCard.d.ts +7 -1
  19. package/dist/lib/types/transcript/WorkGroup.d.ts +3 -1
  20. package/dist/lib/types/transcript/integrity.d.ts +36 -0
  21. package/dist/lib/types/transcript/state-capabilities.d.ts +12 -0
  22. package/dist/lib/types/transcript/view-model.d.ts +4 -0
  23. package/dist/lib/types/transcript/work-summary.d.ts +9 -0
  24. package/dist/lib/types/ui/transcript/view-model.d.ts +4 -0
  25. package/dist/lib/{ui-BOGaFxV-.js → ui-BVkbnMN5.js} +2573 -2341
  26. package/dist/lib/ui.js +2 -2
  27. package/package.json +8 -4
  28. package/dist/lib/abnfDiagram-WEYOIA3C-D4LMNFIJ.js +0 -89
  29. package/dist/lib/arc-1xTxsoRi.js +0 -80
  30. package/dist/lib/architecture-WOLXFQ4H-c6RsZuzu.js +0 -3
  31. package/dist/lib/architectureDiagram-ZHVYKT53-DTINqD5R.js +0 -4145
  32. package/dist/lib/array-CApNbSU9.js +0 -6
  33. package/dist/lib/blockDiagram-RJAE7QA3-CUYHoR3g.js +0 -1946
  34. package/dist/lib/c4Diagram-XDPPPE54-Cdx6_DsI.js +0 -2990
  35. package/dist/lib/channel-DagAO2vE.js +0 -5
  36. package/dist/lib/chunk-2E7WHVMD-BzhgXW3b.js +0 -490
  37. package/dist/lib/chunk-2Q5K7J3B-DWNwIK5Y.js +0 -15
  38. package/dist/lib/chunk-4EMNKR2T-DhFrQz9k.js +0 -236
  39. package/dist/lib/chunk-55XCU76K-CI0GXDkJ.js +0 -61
  40. package/dist/lib/chunk-5VM5RSS4-BAQ-46g4.js +0 -5
  41. package/dist/lib/chunk-7S6XSTFO-CMt_p-O6.js +0 -1373
  42. package/dist/lib/chunk-AQDTSKZB-DrZccIQa.js +0 -1847
  43. package/dist/lib/chunk-DSNLSHJZ-CpA9d2CJ.js +0 -4044
  44. package/dist/lib/chunk-DUW6YSOI-C-tN4Kiv.js +0 -10
  45. package/dist/lib/chunk-EJLWFMJV-B30MNYvY.js +0 -75
  46. package/dist/lib/chunk-HAGFOTED-DMU2JNZM.js +0 -4487
  47. package/dist/lib/chunk-HNE4Q36P-BIA0n2gA.js +0 -363
  48. package/dist/lib/chunk-J5ZVWO5B-CA_-jk8G.js +0 -12
  49. package/dist/lib/chunk-JWPE2WC7-KRpHbrIX.js +0 -8
  50. package/dist/lib/chunk-LNGE3PJU-CMGaAEAh.js +0 -1513
  51. package/dist/lib/chunk-NGNAAXSQ-D7Dvct7J.js +0 -19774
  52. package/dist/lib/chunk-NQOKRVIF-MK9F46y3.js +0 -4258
  53. package/dist/lib/chunk-OYAV6JZA-B1yICcbU.js +0 -10
  54. package/dist/lib/chunk-UHW7PFBP-CLrOaA0y.js +0 -67
  55. package/dist/lib/chunk-VQ5W62QI-_ZR3gKe4.js +0 -26
  56. package/dist/lib/chunk-WQQL4CDK-DFtyhYZq.js +0 -693
  57. package/dist/lib/chunk-XXDRQBXY-uzyNBbgx.js +0 -9
  58. package/dist/lib/chunk-Y2CYZVJY-BYzrzvCI.js +0 -12
  59. package/dist/lib/chunk-YZO67HFG-D1jKt78p.js +0 -275
  60. package/dist/lib/chunk-ZAUX2LTX-7XO0Yj1z.js +0 -37
  61. package/dist/lib/chunk-ZCHMQSOR-CxoKltfF.js +0 -349
  62. package/dist/lib/classDiagram-v2-4MYWR3UA-BPvwhZqw.js +0 -3397
  63. package/dist/lib/cose-bilkent-JH36ORCC-Oj79uOIQ.js +0 -2250
  64. package/dist/lib/cynefin-EF2NZ3EQ-COX3NRum.js +0 -3
  65. package/dist/lib/cynefinDiagram-WF24UDRP-UzTptNAX.js +0 -349
  66. package/dist/lib/cytoscape.esm-0ojxgO9x.js +0 -18161
  67. package/dist/lib/dagre-NK4GIZVX-DWZr-NGm.js +0 -2356
  68. package/dist/lib/defaultLocale-BbgDuMnp.js +0 -201
  69. package/dist/lib/diagram-CBK3MWTC-CsyKuv-w.js +0 -525
  70. package/dist/lib/diagram-I5XIIV2D-DWY2JSPC.js +0 -134
  71. package/dist/lib/diagram-ODIL2UCW-DUptj0JZ.js +0 -301
  72. package/dist/lib/diagram-PFBEJUXE-N5XnIBqM.js +0 -447
  73. package/dist/lib/diagram-RJA3I4VV-B9XgohYo.js +0 -214
  74. package/dist/lib/diagram-TYUNFSNR-XnsJIeAd.js +0 -5084
  75. package/dist/lib/dist-AMlsjiDX.js +0 -59
  76. package/dist/lib/ebnfDiagram-V4P3TTPT-BssHqFox.js +0 -100
  77. package/dist/lib/elk-QONTBCTQ-DwmwqYgP.js +0 -47944
  78. package/dist/lib/erDiagram-KYQIGQAA-BQiXw1Tw.js +0 -1970
  79. package/dist/lib/eventmodeling-K75KTNOO-DDb--yMc.js +0 -3
  80. package/dist/lib/flowDiagram-IUGLLWBU-BEqqF1y2.js +0 -17
  81. package/dist/lib/ganttDiagram-R7GPNTJY-BWtGXxEF.js +0 -3094
  82. package/dist/lib/gitGraph-VSP46ZUC-BSwOaak_.js +0 -3
  83. package/dist/lib/gitGraphDiagram-PDYL7XHY-CHGNuGbk.js +0 -729
  84. package/dist/lib/graphlib-Dndp26xU.js +0 -1267
  85. package/dist/lib/info-OHQRW6UA-Dk06sZRe.js +0 -3
  86. package/dist/lib/infoDiagram-MVDRKAX5-Cdhxnjmi.js +0 -20
  87. package/dist/lib/init-Bwwdo3M6.js +0 -15
  88. package/dist/lib/ishikawaDiagram-HPEHV2GE-Dzhti-GJ.js +0 -719
  89. package/dist/lib/journeyDiagram-BOSHW7O7-C3_vsSjw.js +0 -884
  90. package/dist/lib/kanban-definition-FNSA4HC5-XsfCEsjn.js +0 -976
  91. package/dist/lib/katex-Dw0PnoPU.js +0 -21850
  92. package/dist/lib/line-C9krU3Sv.js +0 -34
  93. package/dist/lib/linear-Cvilv3OA.js +0 -289
  94. package/dist/lib/mermaid-parser.core-I7qQ_fxz.js +0 -638
  95. package/dist/lib/mermaid.core-UNHMAbBP.js +0 -1126
  96. package/dist/lib/mindmap-definition-6OY57UG3-CAua-JvB.js +0 -1011
  97. package/dist/lib/ordinal-C55HfHHp.js +0 -65
  98. package/dist/lib/packet-JDAUHWVQ-DZ-MKx4I.js +0 -3
  99. package/dist/lib/path-DNvJyUE8.js +0 -85
  100. package/dist/lib/pegDiagram-ECIUJNBX-BCxa_IO0.js +0 -94
  101. package/dist/lib/pie-XZMESJXO-DpCa-Nnq.js +0 -3
  102. package/dist/lib/pieDiagram-GNMPY74T-CE_C3dCB.js +0 -205
  103. package/dist/lib/quadrantDiagram-D57K4MC3-CDgzdMoL.js +0 -2001
  104. package/dist/lib/radar-ABXABTNO-BOVK7L9p.js +0 -3
  105. package/dist/lib/railroad-I3PHUGI6-B6spKM0Z.js +0 -3
  106. package/dist/lib/railroad-abnf-LNEFI6M7-DEWqfByZ.js +0 -3
  107. package/dist/lib/railroad-ebnf-DWYD2UWJ-CWRLtxHB.js +0 -3
  108. package/dist/lib/railroad-peg-JR7BVNR7-C-3NHSsk.js +0 -3
  109. package/dist/lib/railroadDiagram-Y72NRBL7-a8YVk8LT.js +0 -76
  110. package/dist/lib/requirementDiagram-EQYSW5RA-B9HolqxU.js +0 -2228
  111. package/dist/lib/rough.esm-a8mysczE.js +0 -1352
  112. package/dist/lib/sankeyDiagram-SY24JHO5-CLFMtMJG.js +0 -970
  113. package/dist/lib/sequenceDiagram-BLEHNHQU-B5wfSV85.js +0 -4253
  114. package/dist/lib/sizeCapture-INFHLROL-BWGCc9aa.js +0 -46
  115. package/dist/lib/src-Dcy0zUZH.js +0 -2153
  116. package/dist/lib/stateDiagram-v2-A6IESKWZ-C92vye4N.js +0 -2143
  117. package/dist/lib/swimlanes-B3ENRKFQ-B6-i-tPc.js +0 -4764
  118. package/dist/lib/swimlanesDiagram-AYQRV4AK-CbkBeql-.js +0 -28
  119. package/dist/lib/timeline-definition-JXYKGLGB-D2Ip4r72.js +0 -1073
  120. package/dist/lib/treeView-D4JQ5SDB-CFaKQ_2T.js +0 -3
  121. package/dist/lib/treemap-SAJKECNS-BQ6z7Z3g.js +0 -3
  122. package/dist/lib/usecaseDiagram-WPOLBNNX-BK1Anch1.js +0 -7190
  123. package/dist/lib/vennDiagram-Q3Y3IDCW-B6YTBqTS.js +0 -1880
  124. package/dist/lib/wardley-7MLQ67FV-DChYwu4i.js +0 -3
  125. package/dist/lib/wardleyDiagram-IVAIDKWA-D5I1qLUK.js +0 -645
  126. package/dist/lib/xychartDiagram-4URNHDU4-B6RXyhTO.js +0 -2218
@@ -1,4764 +0,0 @@
1
- import { m as e } from "./src-Dcy0zUZH.js";
2
- import { n as t } from "./chunk-Y2CYZVJY-BYzrzvCI.js";
3
- import "./chunk-DSNLSHJZ-CpA9d2CJ.js";
4
- import "./chunk-7S6XSTFO-CMt_p-O6.js";
5
- import "./chunk-YZO67HFG-D1jKt78p.js";
6
- import "./chunk-AQDTSKZB-DrZccIQa.js";
7
- import "./chunk-UHW7PFBP-CLrOaA0y.js";
8
- import "./chunk-HAGFOTED-DMU2JNZM.js";
9
- import "./chunk-ZAUX2LTX-7XO0Yj1z.js";
10
- import "./chunk-WQQL4CDK-DFtyhYZq.js";
11
- import "./chunk-HNE4Q36P-BIA0n2gA.js";
12
- import { r as n } from "./chunk-ZCHMQSOR-CxoKltfF.js";
13
- import { t as r } from "./chunk-4EMNKR2T-DhFrQz9k.js";
14
- //#region node_modules/.pnpm/mermaid@12.2.0/node_modules/mermaid/dist/chunks/mermaid.core/swimlanes-B3ENRKFQ.mjs
15
- function i(e, { measure: t }) {
16
- let n = e.config?.swimlane?.lineHops;
17
- if (n === !1) return;
18
- let i = n === "gap" ? "gap" : "arc", a = e.edges.filter((e) => Array.isArray(e.points) && e.points.length >= 2).map((e) => ({
19
- id: e.id,
20
- points: e.points,
21
- curve: e.curve,
22
- arrowTypeStart: e.arrowTypeStart,
23
- arrowTypeEnd: e.arrowTypeEnd
24
- }));
25
- r(t.groups.edgePaths, a, {
26
- enabled: !0,
27
- jumpRadius: 6,
28
- jumpStyle: i
29
- });
30
- }
31
- t(i, "applySwimlaneLineJumps");
32
- var a = "__swimlane_default__", o = 21, s = 20;
33
- function c(e) {
34
- return Math.max(e.padding ?? s, s);
35
- }
36
- t(c, "topLaneHorizontalPadding");
37
- function l(e) {
38
- let { x: t, y: n, width: r, height: i } = e, a = e.swimlaneContentTop;
39
- if (typeof t != "number" || typeof n != "number" || typeof r != "number" || typeof i != "number" || typeof a != "number" || !Number.isFinite(t) || !Number.isFinite(n) || !Number.isFinite(r) || !Number.isFinite(i) || !Number.isFinite(a) || r <= 0 || i <= 0) {
40
- delete e.groupTitleRect;
41
- return;
42
- }
43
- let s = n - i / 2, c = Math.min(a, n + i / 2), l = s + Math.min(o, Math.max(0, c - s));
44
- if (l <= s) {
45
- delete e.groupTitleRect;
46
- return;
47
- }
48
- e.groupTitleRect = {
49
- left: t - r / 2,
50
- right: t + r / 2,
51
- top: s,
52
- bottom: l
53
- };
54
- }
55
- t(l, "assignTopLaneTitleRect");
56
- function u(e) {
57
- let t = e.direction, n = e.nodes ??= [];
58
- for (let n of e.nodes ?? []) n.isGroup && !n.parentId && (n.shape = "swimlane", t && (n.direction = t));
59
- let r = n.filter((e) => !e.isGroup && !e.parentId);
60
- if (r.length === 0) return;
61
- let i = n.find((e) => e.id === a);
62
- i ? i.isGroup && (i.shape = "swimlane", t && (i.direction = t)) : (i = {
63
- id: a,
64
- label: "",
65
- isGroup: !0,
66
- shape: "swimlane",
67
- padding: 20,
68
- look: e.config?.look,
69
- colorIndex: n.reduce((e, t) => Math.max(e, t.colorIndex ?? -1), -1) + 1,
70
- ...t ? { direction: t } : {}
71
- }, n.push(i));
72
- for (let e of r) e.parentId = a;
73
- }
74
- t(u, "prepareLayoutForSwimlanes");
75
- function d(e) {
76
- let t = /* @__PURE__ */ new Map();
77
- for (let n of e.nodes ?? []) t.set(n.id, n);
78
- let n = [];
79
- for (let t of e.edges ?? []) {
80
- let e = typeof t.start == "string" ? t.start : void 0, r = typeof t.end == "string" ? t.end : void 0;
81
- !e || !r || t.labelNodeId || n.push({
82
- id: t.id,
83
- src: e,
84
- dst: r,
85
- ref: t
86
- });
87
- }
88
- let r = e.nodes ?? [], i = r.filter((e) => e.isGroup), a = r.filter((e) => !e.isGroup);
89
- return {
90
- nodes: [...[...i].reverse(), ...a].map((e) => e.id),
91
- edges: n,
92
- layout: e,
93
- nodeById: t
94
- };
95
- }
96
- t(d, "toGraphView");
97
- function f(e, t, n, r) {
98
- let { layout: i } = e, a = e.nodeById, o = r?.layerGap ?? 100, s = r?.nodeGap ?? 40, u = 0;
99
- for (let e of t.layers) {
100
- let t = 0;
101
- for (let r of e) {
102
- let e = a.get(r);
103
- if (!e) {
104
- t++;
105
- continue;
106
- }
107
- e.layer = u, e.order = t;
108
- let i = n.x[r] ?? t * s, c = n.y[r] ?? u * o;
109
- e.x = i, e.y = c, t++;
110
- }
111
- u++;
112
- }
113
- let d = i.nodes ?? [], f = /* @__PURE__ */ new Map(), p = [];
114
- for (let e of d) {
115
- if (!e?.isGroup) continue;
116
- e.parentId || p.push(e);
117
- let t = d.filter((t) => t.parentId === e.id), r = Infinity, i = -Infinity, a = Infinity, o = -Infinity;
118
- for (let e of t) {
119
- let t = e.x ?? n.x[e.id], s = e.y ?? n.y[e.id], c = e.width ?? 0, l = e.height ?? 0;
120
- t != null && s != null && (r = Math.min(r, t - c / 2), i = Math.max(i, t + c / 2), a = Math.min(a, s - l / 2), o = Math.max(o, s + l / 2));
121
- }
122
- if (r === Infinity || a === Infinity) e.x = e.x ?? 0, e.y = e.y ?? 0, e.width = e.width ?? 0, e.height = e.height ?? 0;
123
- else {
124
- let t = e.padding ?? 20, n = e.parentId ? t : 2 * c(e), s = t, l = Math.max(0, i - r) + n, u = Math.max(0, o - a) + s, d = (r + i) / 2, p = (a + o) / 2;
125
- e.x = d, e.y = p, e.width = l, e.height = u, f.set(e.id, {
126
- minX: r,
127
- maxX: i,
128
- minY: a,
129
- maxY: o
130
- });
131
- }
132
- }
133
- if (p.length > 0 && f.size > 0) {
134
- let e = Infinity, t = -Infinity, n = 0;
135
- for (let r of p) {
136
- let i = r.padding ?? 20;
137
- i > n && (n = i);
138
- let a = f.get(r.id);
139
- a && (e = Math.min(e, a.minY), t = Math.max(t, a.maxY));
140
- }
141
- if (e !== Infinity && t !== -Infinity) {
142
- let r = Math.max(0, t - e) + 2 * Math.max(n, 36), i = (e + t) / 2;
143
- for (let t of p) t.y = i, t.height = r, t.swimlaneContentTop = e;
144
- let a = [...p].sort((e, t) => (e.x ?? 0) - (t.x ?? 0)), o = [], s = [], u = [];
145
- for (let e of a) {
146
- let t = f.get(e.id);
147
- if (!t) continue;
148
- let n = Math.max(0, t.maxX - t.minX) + 2 * c(e), r = (t.minX + t.maxX) / 2;
149
- o.push(e.id), s.push(r), u.push(n);
150
- }
151
- let d = o.length;
152
- if (d > 0) {
153
- let e = /* @__PURE__ */ new Map();
154
- if (d === 1) e.set(o[0], u[0]);
155
- else {
156
- let t = [];
157
- for (let e = 0; e < d - 1; e++) t.push(s[e + 1] - s[e]);
158
- let n = Array(d);
159
- n[0] = 0;
160
- for (let e = 0; e < d - 1; e++) n[e + 1] = 2 * t[e] - n[e];
161
- let r = 0, i = Infinity;
162
- for (let e = 0; e < d; e++) {
163
- let t = u[e];
164
- e % 2 == 0 ? r = Math.max(r, t - n[e]) : i = Math.min(i, n[e] - t);
165
- }
166
- let a = r;
167
- a = r <= i ? (r + i) / 2 : r;
168
- for (let t = 0; t < d; t++) {
169
- let r = n[t] + (t % 2 == 0 ? a : -a), i = Math.max(u[t], r);
170
- e.set(o[t], i);
171
- }
172
- }
173
- for (let t of p) {
174
- let n = e.get(t.id);
175
- n != null && (t.width = n), l(t);
176
- }
177
- }
178
- }
179
- }
180
- }
181
- t(f, "writeBackToLayoutData");
182
- var p = "[EdgeLabelNodes]";
183
- function m(t) {
184
- let n = [], r = [], i = /* @__PURE__ */ new Map();
185
- for (let e of t.nodes) i.set(e.id, e);
186
- for (let a of t.edges) {
187
- if (!a.label || a.label.length === 0 || a.isLayoutOnly || a.labelNodeId) continue;
188
- let t = a.start ? i.get(a.start) : void 0, o = a.end ? i.get(a.end) : void 0;
189
- if (!t || !o) {
190
- e.warn(p, `Edge ${a.id} has missing source or target node`);
191
- continue;
192
- }
193
- let s = `edge-label-${a.start}-${a.end}-${a.id}`, c = t.parentId === o.parentId ? t.parentId : o.parentId, l = {
194
- id: s,
195
- label: a.label,
196
- edgeStart: a.start ?? "",
197
- edgeEnd: a.end ?? "",
198
- shape: "labelRect",
199
- width: 0,
200
- height: 0,
201
- isEdgeLabel: !0,
202
- isDummy: !0,
203
- parentId: c,
204
- isGroup: !1,
205
- labelStyle: Array.isArray(a.labelStyle) ? a.labelStyle[0] : a.labelStyle ?? "",
206
- ...t.dir ? { dir: t.dir } : {}
207
- };
208
- n.push(l), a.labelNodeId = s, a.label = void 0, a.text = void 0;
209
- let u = {
210
- id: `${a.id}-to-label`,
211
- start: a.start,
212
- end: s,
213
- type: "normal",
214
- isLayoutOnly: !0
215
- }, d = {
216
- id: `${a.id}-from-label`,
217
- start: s,
218
- end: a.end,
219
- type: "normal",
220
- isLayoutOnly: !0
221
- };
222
- r.push(u, d);
223
- }
224
- let a = [...t.nodes, ...n], o = [...t.edges, ...r];
225
- return {
226
- ...t,
227
- nodes: a,
228
- edges: o
229
- };
230
- }
231
- t(m, "createEdgeLabelNodes");
232
- var h = .001;
233
- function g(e) {
234
- let t = e.x ?? 0, n = e.y ?? 0, r = e.width ?? 0, i = e.height ?? 0;
235
- return r > 0 && i > 0 ? {
236
- cx: t,
237
- cy: n,
238
- rect: P(t, n, r, i)
239
- } : void 0;
240
- }
241
- t(g, "measuredNodeRect");
242
- function _(e) {
243
- if (e.isGroup) return;
244
- let t = g(e);
245
- if (t) return {
246
- id: String(e.id ?? ""),
247
- cx: t.cx,
248
- cy: t.cy,
249
- rect: t.rect
250
- };
251
- }
252
- t(_, "nodeBoundsInfoFor");
253
- function v(e, t, n = h) {
254
- return Math.abs(e.x - t.x) < n && Math.abs(e.y - t.y) < n;
255
- }
256
- t(v, "samePoint");
257
- function y(e, t, n = h) {
258
- return Math.abs(e.x - t.x) < n;
259
- }
260
- t(y, "sameX");
261
- function b(e, t, n = h) {
262
- return Math.abs(e.y - t.y) < n;
263
- }
264
- t(b, "sameY");
265
- function x(e, t, n = h) {
266
- return b(e, t, n) && Math.abs(e.x - t.x) > n;
267
- }
268
- t(x, "isHorizontalSegment");
269
- function S(e, t, n = h) {
270
- return y(e, t, n) && Math.abs(e.y - t.y) > n;
271
- }
272
- t(S, "isVerticalSegment");
273
- function C(e, t, n, r) {
274
- return Math.max(0, Math.min(Math.max(e, t), Math.max(n, r)) - Math.max(Math.min(e, t), Math.min(n, r)));
275
- }
276
- t(C, "overlapLength");
277
- function w(e, t, n = h) {
278
- return e.horizontal && t.horizontal && b(e.a, t.a, n) ? C(e.a.x, e.b.x, t.a.x, t.b.x) : e.vertical && t.vertical && y(e.a, t.a, n) ? C(e.a.y, e.b.y, t.a.y, t.b.y) : 0;
279
- }
280
- t(w, "sameAxisSegmentOverlapLength");
281
- function T(e, t = h) {
282
- let n = [];
283
- for (let r = 0; r < e.length - 1; r++) {
284
- let i = e[r], a = e[r + 1], o = x(i, a, t), s = S(i, a, t);
285
- (o || s) && n.push({
286
- index: r,
287
- a: i,
288
- b: a,
289
- horizontal: o,
290
- vertical: s
291
- });
292
- }
293
- return n;
294
- }
295
- t(T, "orthogonalSegmentsForPoints");
296
- function E(e, t = h) {
297
- let n = T(e, t), r = 0;
298
- for (let e = 1; e < n.length; e++) n[e - 1].horizontal !== n[e].horizontal && r++;
299
- return r;
300
- }
301
- t(E, "countOrthogonalBends");
302
- function D(e, t = h) {
303
- let n = [];
304
- for (let r of e) {
305
- let e = n.length > 0 ? n[n.length - 1] : void 0;
306
- (!e || !v(e, r, t)) && n.push({
307
- x: r.x,
308
- y: r.y
309
- });
310
- }
311
- return n;
312
- }
313
- t(D, "dedupeConsecutivePoints");
314
- function O(e, t = h) {
315
- if (!e || e.length !== 4) return;
316
- let [n, r, i, a] = e;
317
- return x(n, r, t) && S(r, i, t) && x(i, a, t) ? {
318
- kind: "HVH",
319
- p0: n,
320
- p1: r,
321
- p2: i,
322
- p3: a
323
- } : S(n, r, t) && x(r, i, t) && S(i, a, t) ? {
324
- kind: "VHV",
325
- p0: n,
326
- p1: r,
327
- p2: i,
328
- p3: a
329
- } : void 0;
330
- }
331
- t(O, "classifyThreeSegmentRoute");
332
- function k(e, t, n, r = 0) {
333
- let i = Math.min(e.x, t.x), a = Math.max(e.x, t.x), o = Math.min(e.y, t.y), s = Math.max(e.y, t.y);
334
- return a > n.left - r && i < n.right + r && s > n.top - r && o < n.bottom + r;
335
- }
336
- t(k, "segmentBoundsOverlapRect");
337
- function A(e, t, n = 0) {
338
- return e.x > t.left + n && e.x < t.right - n && e.y > t.top + n && e.y < t.bottom - n;
339
- }
340
- t(A, "pointInsideRect");
341
- function j(e, t) {
342
- return e.left <= t.left && e.right >= t.right && e.top <= t.top && e.bottom >= t.bottom;
343
- }
344
- t(j, "rectContainsRect");
345
- function M(e, t) {
346
- return e.left < t.right && e.right > t.left && e.top < t.bottom && e.bottom > t.top;
347
- }
348
- t(M, "rectsOverlap");
349
- function N(e, t) {
350
- return {
351
- left: e.left - t,
352
- right: e.right + t,
353
- top: e.top - t,
354
- bottom: e.bottom + t
355
- };
356
- }
357
- t(N, "inflateRect");
358
- function P(e, t, n, r) {
359
- return {
360
- left: e - n / 2,
361
- right: e + n / 2,
362
- top: t - r / 2,
363
- bottom: t + r / 2
364
- };
365
- }
366
- t(P, "rectFromCenterSize");
367
- function F(e) {
368
- return g(e)?.rect;
369
- }
370
- t(F, "rectOfNodeBounds");
371
- function I(e, t) {
372
- switch (t) {
373
- case "top": return {
374
- x: e.cx,
375
- y: e.rect.top
376
- };
377
- case "bottom": return {
378
- x: e.cx,
379
- y: e.rect.bottom
380
- };
381
- case "left": return {
382
- x: e.rect.left,
383
- y: e.cy
384
- };
385
- case "right": return {
386
- x: e.rect.right,
387
- y: e.cy
388
- };
389
- }
390
- }
391
- t(I, "portForRectSide");
392
- function ee(e, t, n, r, i, a = h) {
393
- let o = t === "left" || t === "right", s = r === "left" || r === "right";
394
- if (o && s) {
395
- if (t === "right" && r === "left" && e.x < n.x || t === "left" && r === "right" && e.x > n.x) {
396
- if (b(e, n, a)) return [e, n];
397
- let t = (e.x + n.x) / 2;
398
- return [
399
- e,
400
- {
401
- x: t,
402
- y: e.y
403
- },
404
- {
405
- x: t,
406
- y: n.y
407
- },
408
- n
409
- ];
410
- }
411
- if (t === r) {
412
- if (b(e, n, a)) return;
413
- let r = t === "left" ? Math.min(e.x, n.x) - i : Math.max(e.x, n.x) + i;
414
- return [
415
- e,
416
- {
417
- x: r,
418
- y: e.y
419
- },
420
- {
421
- x: r,
422
- y: n.y
423
- },
424
- n
425
- ];
426
- }
427
- return;
428
- }
429
- if (!o && !s) {
430
- if (t === r) {
431
- if (y(e, n, a)) return;
432
- let r = t === "top" ? Math.min(e.y, n.y) - i : Math.max(e.y, n.y) + i;
433
- return [
434
- e,
435
- {
436
- x: e.x,
437
- y: r
438
- },
439
- {
440
- x: n.x,
441
- y: r
442
- },
443
- n
444
- ];
445
- }
446
- if (!(t === "bottom" && r === "top" && e.y < n.y || t === "top" && r === "bottom" && e.y > n.y)) return;
447
- if (y(e, n, a)) return [e, n];
448
- let o = (e.y + n.y) / 2;
449
- return [
450
- e,
451
- {
452
- x: e.x,
453
- y: o
454
- },
455
- {
456
- x: n.x,
457
- y: o
458
- },
459
- n
460
- ];
461
- }
462
- if (o && !s) {
463
- let i = t === "right" && n.x > e.x || t === "left" && n.x < e.x, a = r === "top" && e.y < n.y || r === "bottom" && e.y > n.y;
464
- return i && a ? [
465
- e,
466
- {
467
- x: n.x,
468
- y: e.y
469
- },
470
- n
471
- ] : void 0;
472
- }
473
- let c = t === "bottom" && n.y > e.y || t === "top" && n.y < e.y, l = r === "left" && e.x < n.x || r === "right" && e.x > n.x;
474
- return c && l ? [
475
- e,
476
- {
477
- x: e.x,
478
- y: n.y
479
- },
480
- n
481
- ] : void 0;
482
- }
483
- t(ee, "buildOrthogonalPortPath");
484
- function L(e, t, n, r) {
485
- return t === "left" || t === "right" ? [
486
- e,
487
- {
488
- x: r,
489
- y: e.y
490
- },
491
- {
492
- x: r,
493
- y: n.y
494
- },
495
- n
496
- ] : [
497
- e,
498
- {
499
- x: e.x,
500
- y: r
501
- },
502
- {
503
- x: n.x,
504
- y: r
505
- },
506
- n
507
- ];
508
- }
509
- t(L, "buildSameSideTrackPath");
510
- function R(e) {
511
- let t = /* @__PURE__ */ new Map(), n = [];
512
- for (let r of e) {
513
- if (r.isEdgeLabel) continue;
514
- let e = _(r);
515
- e && (t.set(e.id, e), n.push({
516
- id: e.id,
517
- rect: e.rect
518
- }));
519
- }
520
- return {
521
- nodeInfoById: t,
522
- realNodeRects: n
523
- };
524
- }
525
- t(R, "collectRealNodeBounds");
526
- function z(e) {
527
- let t = [], n = [];
528
- for (let r of e) {
529
- let e = _(r);
530
- if (!e) continue;
531
- let i = {
532
- id: e.id,
533
- rect: e.rect
534
- };
535
- r.isEdgeLabel ? n.push(i) : t.push(i);
536
- }
537
- return {
538
- realNodeRects: t,
539
- labelNodeRects: n
540
- };
541
- }
542
- t(z, "collectNodeRectEntries");
543
- function te(e, { includeEdgeLabels: t = !0 } = {}) {
544
- let n = [];
545
- for (let r of e) {
546
- if (r.isGroup || !t && r.isEdgeLabel) continue;
547
- let e = r.x ?? 0, i = r.y ?? 0, a = r.width ?? 0, o = r.height ?? 0;
548
- n.push({
549
- nodeId: r.id,
550
- ...P(e, i, a, o)
551
- });
552
- }
553
- return n;
554
- }
555
- t(te, "collectLayoutNodeRects");
556
- function ne(e, t, n = h) {
557
- let r = e.start, i = e.end;
558
- if (!r || !i) return;
559
- let a = t.get(r), o = t.get(i);
560
- if (!(!a || !o)) return {
561
- srcId: r,
562
- dstId: i,
563
- srcInfo: a,
564
- dstInfo: o,
565
- collinearX: Math.abs(a.cx - o.cx) < n,
566
- collinearY: Math.abs(a.cy - o.cy) < n
567
- };
568
- }
569
- t(ne, "getNodePairGeometry");
570
- function B(e, t, n, r = [], i = 0) {
571
- for (let a of n) if (!r.includes(a.id) && k(e, t, a.rect, -i)) return !0;
572
- return !1;
573
- }
574
- t(B, "segmentHitsAnyRect");
575
- function re(e, t, n, r, i = h, a = 1e-6) {
576
- let o = b(e, t, i), s = y(e, t, i), c = b(n, r, i), l = y(n, r, i);
577
- if (o && c || s && l || !(o || s) || !(c || l)) return !1;
578
- let u = o ? {
579
- a: e,
580
- b: t
581
- } : {
582
- a: n,
583
- b: r
584
- }, d = s ? {
585
- a: e,
586
- b: t
587
- } : {
588
- a: n,
589
- b: r
590
- }, f = u.a.y, p = Math.min(u.a.x, u.b.x), m = Math.max(u.a.x, u.b.x), g = d.a.x, _ = Math.min(d.a.y, d.b.y), v = Math.max(d.a.y, d.b.y);
591
- if (g < p || g > m || f < _ || f > v) return !1;
592
- let x = Math.abs(g - u.a.x) < a && Math.abs(f - u.a.y) < a || Math.abs(g - u.b.x) < a && Math.abs(f - u.b.y) < a, S = Math.abs(g - d.a.x) < a && Math.abs(f - d.a.y) < a || Math.abs(g - d.b.x) < a && Math.abs(f - d.b.y) < a;
593
- return !(x && S);
594
- }
595
- t(re, "orthogonalSegmentsCross");
596
- function ie(e, t, n, r, i = h) {
597
- let a = b(e, t, i), o = y(e, t, i), s = b(n, r, i), c = y(n, r, i);
598
- return o && c && y(e, n, i) ? C(e.y, t.y, n.y, r.y) > i : a && s && b(e, n, i) ? C(e.x, t.x, n.x, r.x) > i : !1;
599
- }
600
- t(ie, "sameAxisSegmentsOverlap");
601
- function ae(e, t, n, r, { epsilon: i = h, skipDegenerateOther: a = !1 } = {}) {
602
- for (let o of n) {
603
- if (o === r || o.isLayoutOnly) continue;
604
- let n = o.points;
605
- if (!(!n || n.length < 2)) for (let r = 0; r < n.length - 1; r++) {
606
- let o = n[r], s = n[r + 1];
607
- if (!(a && v(o, s, i)) && (re(e, t, o, s, i) || ie(e, t, o, s, i))) return !0;
608
- }
609
- }
610
- return !1;
611
- }
612
- t(ae, "segmentConflictsWithAnyEdge");
613
- function V(e, t, n, r, i = h) {
614
- let a = b(e, t, i), o = y(e, t, i), s = b(n, r, i), c = y(n, r, i);
615
- if (!(a && c || o && s)) return !1;
616
- let l = a ? {
617
- a: e,
618
- b: t
619
- } : {
620
- a: n,
621
- b: r
622
- }, u = a ? {
623
- a: n,
624
- b: r
625
- } : {
626
- a: e,
627
- b: t
628
- }, d = l.a.y, f = Math.min(l.a.x, l.b.x), p = Math.max(l.a.x, l.b.x), m = u.a.x, g = Math.min(u.a.y, u.b.y), _ = Math.max(u.a.y, u.b.y);
629
- return m > f + i && m < p - i && d > g + i && d < _ - i;
630
- }
631
- t(V, "orthogonalSegmentsStrictlyCross");
632
- function oe(e, t, n) {
633
- let r = Math.min(t, n), i = Math.max(t, n);
634
- return e > r + h && e < i - h;
635
- }
636
- t(oe, "strictlyBetween");
637
- function H(e, t, n) {
638
- return y(e, t) && y(t, n) ? oe(t.y, e.y, n.y) : b(e, t) && b(t, n) ? oe(t.x, e.x, n.x) : !1;
639
- }
640
- t(H, "isCollinearIntermediate");
641
- function U(e) {
642
- let t = !1, n = [];
643
- for (let r = 0; r < e.length; r++) {
644
- let i = n[n.length - 1], a = e[r], o = r + 1 < e.length ? e[r + 1] : void 0;
645
- if (i && o) {
646
- if (v(i, o)) {
647
- r++, t = !0;
648
- continue;
649
- }
650
- if (H(i, a, o)) {
651
- t = !0;
652
- continue;
653
- }
654
- }
655
- n.push(a);
656
- }
657
- return {
658
- points: n,
659
- changed: t
660
- };
661
- }
662
- t(U, "simplifyPolylineOnce");
663
- function W(e) {
664
- let t = [e[0]];
665
- for (let n = 1; n < e.length; n++) {
666
- let r = t[t.length - 1], i = e[n];
667
- if (!y(r, i) && !b(r, i)) {
668
- let e = t.length >= 2 ? t[t.length - 2] : void 0, n = e && y(e, r) ? {
669
- x: r.x,
670
- y: i.y
671
- } : {
672
- x: i.x,
673
- y: r.y
674
- };
675
- t.push(n);
676
- }
677
- t.push(i);
678
- }
679
- let n = [];
680
- for (let e of t) {
681
- let t = n[n.length - 1];
682
- (!t || !v(t, e)) && n.push(e);
683
- }
684
- return n;
685
- }
686
- t(W, "orthogonalizePolyline");
687
- function G(e) {
688
- if (e.length < 3) return e;
689
- let t = [...e];
690
- for (let e = 0; e < 32; e++) {
691
- let e = U(t);
692
- if (t = e.points, !e.changed) break;
693
- }
694
- return t;
695
- }
696
- t(G, "simplifyPolyline");
697
- var K = .001, se = .5, ce = 4;
698
- function le(e, t, n) {
699
- let r = e;
700
- if (r.isLayoutOnly || !r.points || r.points.length < n) return;
701
- let i = r.start ? t.get(r.start) : void 0, a = r.end ? t.get(r.end) : void 0;
702
- return {
703
- edge: r,
704
- points: r.points,
705
- srcRect: i ? F(i) : void 0,
706
- dstRect: a ? F(a) : void 0
707
- };
708
- }
709
- t(le, "endpointContextFor");
710
- function ue(e, t, n) {
711
- if (b(e, t, K)) return {
712
- x: e.x < n.left ? n.left : n.right,
713
- y: e.y
714
- };
715
- if (y(e, t, K)) {
716
- let t = e.y < n.top ? n.top : n.bottom;
717
- return {
718
- x: e.x,
719
- y: t
720
- };
721
- }
722
- return {
723
- x: Math.min(n.right, Math.max(n.left, e.x)),
724
- y: Math.min(n.bottom, Math.max(n.top, e.y))
725
- };
726
- }
727
- t(ue, "segmentEnterPoint");
728
- function de(e, t, n) {
729
- let r = n ? 1 : -1, i = n ? 0 : e.length - 1;
730
- for (; i >= 0 && i < e.length && A(e[i], t, se);) i += r;
731
- if (i < 0 || i >= e.length) return e;
732
- let a = i - r;
733
- if (a < 0 || a >= e.length) return e;
734
- let o = ue(e[i], e[a], t);
735
- return n ? [o, ...e.slice(i)] : [...e.slice(0, i + 1), o];
736
- }
737
- t(de, "clipEndpoint");
738
- function q(e, t) {
739
- for (let n of e) {
740
- let e = le(n, t, 2);
741
- if (!e) continue;
742
- let r = [...e.points];
743
- e.srcRect && (r = de(r, e.srcRect, !0)), e.dstRect && (r = de(r, e.dstRect, !1)), r = G(W(r)), r = xe(r, e.srcRect, e.dstRect), e.edge.points = G(W(r));
744
- }
745
- }
746
- t(q, "clipEdgeEndpointsToNodeBoundaries");
747
- function J(e, t, n, r = !1) {
748
- if (b(e, t, K)) {
749
- if (t.y < n.top - K || t.y > n.bottom + K) return t;
750
- if (r) {
751
- if (e.x < n.left - K) return {
752
- x: n.left,
753
- y: e.y
754
- };
755
- if (e.x > n.right + K) return {
756
- x: n.right,
757
- y: e.y
758
- };
759
- }
760
- return {
761
- x: Math.abs(t.x - n.left) <= Math.abs(t.x - n.right) ? n.left : n.right,
762
- y: e.y
763
- };
764
- }
765
- if (y(e, t, K)) {
766
- if (t.x < n.left - K || t.x > n.right + K) return t;
767
- if (r) {
768
- if (e.y < n.top - K) return {
769
- x: e.x,
770
- y: n.top
771
- };
772
- if (e.y > n.bottom + K) return {
773
- x: e.x,
774
- y: n.bottom
775
- };
776
- }
777
- let i = Math.abs(t.y - n.top) <= Math.abs(t.y - n.bottom);
778
- return {
779
- x: e.x,
780
- y: i ? n.top : n.bottom
781
- };
782
- }
783
- return t;
784
- }
785
- t(J, "snapEndpointToBoundary");
786
- function fe(e, t, n) {
787
- let r = e[t];
788
- for (let i = t + n; i >= 0 && i < e.length; i += n) {
789
- let t = e[i];
790
- if (!v(t, r, K)) return t;
791
- }
792
- return e[t + n];
793
- }
794
- t(fe, "firstDistinctAdjacent");
795
- function pe(e, t) {
796
- let n = e + ce, r = t - ce;
797
- return n <= r ? {
798
- lo: n,
799
- hi: r
800
- } : {
801
- lo: (e + t) / 2,
802
- hi: (e + t) / 2
803
- };
804
- }
805
- t(pe, "cornerClearanceRange");
806
- function me(e, t, n) {
807
- let { lo: r, hi: i } = pe(t, n);
808
- return Math.min(i, Math.max(r, e));
809
- }
810
- t(me, "clampToCornerClearance");
811
- function he(e) {
812
- let t = Math.max(...e.map((e) => e.lo)), n = Math.min(...e.map((e) => e.hi));
813
- if (!(t > n)) return {
814
- lo: t,
815
- hi: n
816
- };
817
- }
818
- t(he, "intersectRanges");
819
- function ge(e, t) {
820
- return t === "left" || t === "right" ? pe(e.top, e.bottom) : pe(e.left, e.right);
821
- }
822
- t(ge, "clearanceRangeForSide");
823
- function _e(e, t, n) {
824
- let r = e.y >= n.top - K && e.y <= n.bottom + K, i = e.x >= n.left - K && e.x <= n.right + K;
825
- if (b(e, t, K) && r) {
826
- if (Math.abs(e.x - n.left) < K) return "left";
827
- if (Math.abs(e.x - n.right) < K) return "right";
828
- }
829
- if (y(e, t, K) && i) {
830
- if (Math.abs(e.y - n.top) < K) return "top";
831
- if (Math.abs(e.y - n.bottom) < K) return "bottom";
832
- }
833
- }
834
- t(_e, "terminalSideForSegment");
835
- function ve(e) {
836
- return e === "left" || e === "right";
837
- }
838
- t(ve, "isHorizontalSide");
839
- function ye(e, t, n, r, i) {
840
- let a = [], o = n ? _e(e, t, n) : void 0, s = r ? _e(t, e, r) : void 0;
841
- return n && o && ve(o) === i && a.push(ge(n, o)), r && s && ve(s) === i && a.push(ge(r, s)), a.length > 0 ? he(a) : void 0;
842
- }
843
- t(ye, "straightClearanceRange");
844
- function be(e, t, n, r, i) {
845
- let a = ye(e, t, n, r, i);
846
- if (!a) return;
847
- let o = i ? e.y : e.x, s = Math.min(a.hi, Math.max(a.lo, o));
848
- if (!(Math.abs(s - o) < K)) return i ? [{
849
- x: e.x,
850
- y: s
851
- }, {
852
- x: t.x,
853
- y: s
854
- }] : [{
855
- x: s,
856
- y: e.y
857
- }, {
858
- x: s,
859
- y: t.y
860
- }];
861
- }
862
- t(be, "clearStraightEndpointCornerAxis");
863
- function xe(e, t, n) {
864
- if (e.length !== 2) return e;
865
- let [r, i] = e;
866
- return b(r, i, K) ? be(r, i, t, n, !0) ?? e : y(r, i, K) ? be(r, i, t, n, !1) ?? e : e;
867
- }
868
- t(xe, "clearStraightEndpointCornerConnections");
869
- function Se(e, t, n) {
870
- return ve(n) ? {
871
- x: e.x,
872
- y: me(e.y, t.top, t.bottom)
873
- } : {
874
- x: me(e.x, t.left, t.right),
875
- y: e.y
876
- };
877
- }
878
- t(Se, "cornerClearedEndpoint");
879
- function Ce(e, t, n, r, i, a) {
880
- let o = e.map((e) => ({ ...e }));
881
- for (let s = t; s >= 0 && s < e.length; s += n) {
882
- let t = e[s];
883
- if (a && !b(t, r, K) || !a && !y(t, r, K)) break;
884
- a ? o[s].y = i.y : o[s].x = i.x;
885
- }
886
- return o;
887
- }
888
- t(Ce, "moveCollinearEndpointRun");
889
- function we(e, t, n) {
890
- if (e.length < 2) return e;
891
- let r = n ? 0 : e.length - 1, i = n ? 1 : -1, a = e[r], o = fe(e, r, i);
892
- if (!o) return e;
893
- let s = _e(a, o, t);
894
- if (!s) return e;
895
- let c = ve(s), l = Se(a, t, s);
896
- return v(a, l, K) ? e : Ce(e, r, i, a, l, c);
897
- }
898
- t(we, "clearEndpointCornerConnection");
899
- function Te(e, t, n) {
900
- let r = Math.min(e.x, t.x) >= n.left - K && Math.max(e.x, t.x) <= n.right + K, i = Math.min(e.y, t.y) >= n.top - K && Math.max(e.y, t.y) <= n.bottom + K;
901
- if (Math.abs(e.y - n.top) < K && Math.abs(t.y - n.top) < K && r) return "top";
902
- if (Math.abs(e.y - n.bottom) < K && Math.abs(t.y - n.bottom) < K && r) return "bottom";
903
- if (Math.abs(e.x - n.left) < K && Math.abs(t.x - n.left) < K && i) return "left";
904
- if (Math.abs(e.x - n.right) < K && Math.abs(t.x - n.right) < K && i) return "right";
905
- }
906
- t(Te, "borderSideForSegment");
907
- function Ee(e, t, n, r) {
908
- switch (e) {
909
- case "top": return y(t, n, K) && n.y < r.top - K;
910
- case "bottom": return y(t, n, K) && n.y > r.bottom + K;
911
- case "left": return b(t, n, K) && n.x < r.left - K;
912
- case "right": return b(t, n, K) && n.x > r.right + K;
913
- }
914
- }
915
- t(Ee, "leavesOutward");
916
- function De(e, t, n) {
917
- if (e.length < 3) return e;
918
- if (n) {
919
- let n = Te(e[0], e[1], t);
920
- return n && Ee(n, e[1], e[2], t) ? e.slice(1) : e;
921
- }
922
- let r = e.length - 1, i = Te(e[r - 1], e[r], t);
923
- return i && Ee(i, e[r - 1], e[r - 2], t) ? e.slice(0, r) : e;
924
- }
925
- t(De, "collapseOwnBorderStub");
926
- function Oe(e, t, n) {
927
- let r = e;
928
- if (t) {
929
- let e = fe(r, 0, 1);
930
- if (e) {
931
- let n = J(e, r[0], t);
932
- n !== r[0] && (r = [n, ...r.slice(1)]);
933
- }
934
- r = De(r, t, !0);
935
- }
936
- if (n) {
937
- let e = r.length - 1, t = fe(r, e, -1);
938
- if (t) {
939
- let i = J(t, r[e], n, !0);
940
- i !== r[e] && (r = [...r.slice(0, e), i]);
941
- }
942
- r = De(r, n, !1);
943
- }
944
- let i = xe(r, t, n);
945
- return i !== r || r.length === 2 ? i : (t && (r = we(r, t, !0)), n && (r = we(r, n, !1)), r);
946
- }
947
- t(Oe, "snapAndCollapseEndpoints");
948
- function ke(e, t) {
949
- for (let n of e) {
950
- let e = le(n, t, 2);
951
- if (!e) continue;
952
- let r = Oe(D(e.points, K), e.srcRect, e.dstRect);
953
- if (r.length < 3) {
954
- e.edge.points = r;
955
- continue;
956
- }
957
- let i = [
958
- r[0],
959
- { ...r[0] },
960
- ...r.slice(1, -1),
961
- r[r.length - 1],
962
- { ...r[r.length - 1] }
963
- ];
964
- e.edge.points = i;
965
- }
966
- }
967
- t(ke, "prepareEdgeEndpointsForRenderer");
968
- function Ae(e) {
969
- return new Map(e.map((e) => [e.id, e]));
970
- }
971
- t(Ae, "buildNodeMap");
972
- function je(e, t) {
973
- let n = e.parentId, r = null;
974
- for (; n;) {
975
- let e = t.get(n);
976
- if (!e?.isGroup) break;
977
- r = e.id, n = e.parentId;
978
- }
979
- return r;
980
- }
981
- t(je, "resolveTopLevelGroupId");
982
- function Me(e, t) {
983
- let n = 0, r = e.parentId;
984
- for (; r;) {
985
- let e = t.get(r);
986
- if (!e?.isGroup) break;
987
- n++, r = e.parentId;
988
- }
989
- return n;
990
- }
991
- t(Me, "groupDepth");
992
- function Ne(e) {
993
- let t = Infinity, n = -Infinity, r = Infinity, i = -Infinity;
994
- for (let a of e) {
995
- let e = a.x, o = a.y;
996
- if (typeof e != "number" || typeof o != "number") continue;
997
- let s = a.width ?? 0, c = a.height ?? 0;
998
- t = Math.min(t, e - s / 2), n = Math.max(n, e + s / 2), r = Math.min(r, o - c / 2), i = Math.max(i, o + c / 2);
999
- }
1000
- return t === Infinity || r === Infinity ? null : {
1001
- minX: t,
1002
- maxX: n,
1003
- minY: r,
1004
- maxY: i
1005
- };
1006
- }
1007
- t(Ne, "boundsForChildren");
1008
- function Pe(e, t) {
1009
- let n = e.padding ?? 20;
1010
- e.x = (t.minX + t.maxX) / 2, e.y = (t.minY + t.maxY) / 2, e.width = Math.max(0, t.maxX - t.minX) + n, e.height = Math.max(0, t.maxY - t.minY) + n;
1011
- }
1012
- t(Pe, "applyGroupBounds");
1013
- function Fe(e) {
1014
- let t = Ae(e), n = e.filter((e) => e.isGroup && e.parentId).sort((e, n) => Me(n, t) - Me(e, t));
1015
- for (let t of n) {
1016
- let n = Ne(e.filter((e) => e.parentId === t.id));
1017
- n && Pe(t, n);
1018
- }
1019
- }
1020
- t(Fe, "recomputeNestedGroupBounds");
1021
- function Ie(e, n) {
1022
- let r = e.nodes ?? [], i = e.edges ?? [], a = r.filter((e) => !e.isGroup), o = Infinity, s = -Infinity;
1023
- for (let e of a) {
1024
- let t = e[n];
1025
- typeof t == "number" && (o = Math.min(o, t), s = Math.max(s, t));
1026
- }
1027
- if (!Number.isFinite(o) || !Number.isFinite(s)) return !1;
1028
- let c = /* @__PURE__ */ t((e) => o + s - e, "mirror");
1029
- for (let e of r) {
1030
- let t = e[n];
1031
- typeof t == "number" && (e[n] = c(t));
1032
- let r = e.groupTitleRect;
1033
- r && (e.groupTitleRect = n === "x" ? {
1034
- ...r,
1035
- left: c(r.right),
1036
- right: c(r.left)
1037
- } : {
1038
- ...r,
1039
- top: c(r.bottom),
1040
- bottom: c(r.top)
1041
- });
1042
- }
1043
- for (let e of i) for (let t of e.points ?? []) t[n] = c(t[n]);
1044
- return !0;
1045
- }
1046
- t(Ie, "mirrorAxis");
1047
- function Le(e) {
1048
- return (e.nodes ?? []).some((e) => !e.isGroup) ? Ie(e, "y") : !0;
1049
- }
1050
- t(Le, "applyBtDirectionTransform");
1051
- function Re(e, t = "LR") {
1052
- let n = e.nodes ?? [], r = e.edges ?? [], i = n.filter((e) => !e.isGroup), a = Infinity, o = Infinity;
1053
- for (let e of i) {
1054
- let t = e.x ?? 0, n = e.y ?? 0;
1055
- t < a && (a = t), n < o && (o = n);
1056
- }
1057
- if (!Number.isFinite(a) || !Number.isFinite(o)) return !1;
1058
- let s = 0, c = 0;
1059
- for (let e of i) s += e.width ?? 0, c += e.height ?? 0;
1060
- let l = s / i.length, u = c / i.length, d = u > 0 ? Math.max(1, l / u) : 1;
1061
- for (let e of i) {
1062
- let t = e.x ?? 0, n = ((e.y ?? 0) - o) * d + 36, r = t - a;
1063
- e.x = n, e.y = r;
1064
- }
1065
- for (let e of r) if (e.points) for (let t of e.points) {
1066
- let e = t.x, n = (t.y - o) * d + 36, r = e - a;
1067
- t.x = n, t.y = r;
1068
- }
1069
- Fe(n);
1070
- let f = n.filter((e) => e.isGroup && !e.parentId);
1071
- if (f.length === 0) return t === "RL" && Ie(e, "x"), !0;
1072
- let p = Ae(n), m = /* @__PURE__ */ new Map();
1073
- for (let e of n) {
1074
- if (e.isGroup) continue;
1075
- let t = je(e, p);
1076
- if (!t) continue;
1077
- let n = m.get(t) ?? [];
1078
- n.push(e), m.set(t, n);
1079
- }
1080
- let h = 0;
1081
- for (let e of f) {
1082
- let t = e.padding ?? 0;
1083
- t > h && (h = t);
1084
- }
1085
- let g = [], _ = Infinity, v = -Infinity;
1086
- for (let e of f) {
1087
- let t = Ne(m.get(e.id) ?? []);
1088
- t && (_ = Math.min(_, t.minX), v = Math.max(v, t.maxX), g.push({
1089
- lane: e,
1090
- contentTop: t.minY,
1091
- contentBottom: t.maxY,
1092
- centerY: (t.minY + t.maxY) / 2
1093
- }));
1094
- }
1095
- if (_ === Infinity || v === -Infinity) return !0;
1096
- let y = Math.max(0, v - _) + 2 * Math.max(h, 10), b = 36 + y, x = (_ + v) / 2 - y / 2 - 36, S = x + b / 2, C = Math.max(h, 36);
1097
- g.sort((e, t) => e.centerY - t.centerY);
1098
- for (let e = 0; e < g.length; e++) {
1099
- let t = g[e], n, r;
1100
- if (n = e === 0 ? t.contentTop - C : (g[e - 1].contentBottom + t.contentTop) / 2, e === g.length - 1) r = t.contentBottom + C;
1101
- else {
1102
- let n = g[e + 1];
1103
- r = (t.contentBottom + n.contentTop) / 2;
1104
- }
1105
- let i = Math.max(0, r - n), a = (n + r) / 2;
1106
- t.lane.x = S, t.lane.y = a, t.lane.width = b, t.lane.height = i, t.lane.swimlaneContentTop = t.contentTop, t.lane.groupTitleRect = {
1107
- left: x,
1108
- right: x + 36,
1109
- top: n,
1110
- bottom: r
1111
- };
1112
- }
1113
- return t === "RL" && Ie(e, "x"), !0;
1114
- }
1115
- t(Re, "applyLrDirectionTransform");
1116
- var ze = 1e-6, Be = 8, Ve = [
1117
- 0,
1118
- Be,
1119
- -Be,
1120
- 2 * Be,
1121
- -2 * Be
1122
- ];
1123
- function He(e, t) {
1124
- let { nodeInfoById: n, realNodeRects: r } = R(t);
1125
- for (let t of e) {
1126
- if (t.isLayoutOnly) continue;
1127
- let i = t.points;
1128
- if (!i || i.length < 4) continue;
1129
- let a = O(D(i, ze), ze);
1130
- if (!a) continue;
1131
- let { p3: o } = a, s = a.kind === "HVH", c = ne(t, n, ze);
1132
- if (!c) continue;
1133
- let { srcId: l, dstId: u, srcInfo: d, dstInfo: f, collinearX: p, collinearY: m } = c;
1134
- if (p || m) continue;
1135
- let h, g = d.rect;
1136
- for (let n of Ve) {
1137
- let i, a, c;
1138
- if (s) {
1139
- let e = f.cy > d.cy ? g.bottom : g.top, t = d.cx + n;
1140
- if (t <= g.left + ze || t >= g.right - ze) continue;
1141
- i = {
1142
- x: t,
1143
- y: e
1144
- }, a = {
1145
- x: t,
1146
- y: o.y
1147
- }, c = {
1148
- x: o.x,
1149
- y: o.y
1150
- };
1151
- } else {
1152
- let e = f.cx > d.cx ? g.right : g.left, t = d.cy + n;
1153
- if (t <= g.top + ze || t >= g.bottom - ze) continue;
1154
- i = {
1155
- x: e,
1156
- y: t
1157
- }, a = {
1158
- x: o.x,
1159
- y: t
1160
- }, c = {
1161
- x: o.x,
1162
- y: o.y
1163
- };
1164
- }
1165
- let p = v(i, a, ze), m = v(a, c, ze);
1166
- if (p && m || !p && B(i, a, r, [l], 1) || !m && B(a, c, r, [u], 1)) continue;
1167
- let _ = !p && ae(i, a, e, t, {
1168
- epsilon: ze,
1169
- skipDegenerateOther: !0
1170
- }), y = !m && ae(a, c, e, t, {
1171
- epsilon: ze,
1172
- skipDegenerateOther: !0
1173
- });
1174
- if (!(_ || y)) {
1175
- h = p ? [a, c] : m ? [i, a] : [
1176
- i,
1177
- a,
1178
- c
1179
- ];
1180
- break;
1181
- }
1182
- }
1183
- h && (t.points = h);
1184
- }
1185
- }
1186
- t(He, "portSwapToLShape");
1187
- function Ue(e, n) {
1188
- let r = .001, { realNodeRects: i, labelNodeRects: a } = z(n.values());
1189
- for (let o of e) {
1190
- if (o.isLayoutOnly) continue;
1191
- let s = o.points;
1192
- if (!s || s.length < 4) continue;
1193
- let c = D(s, r);
1194
- if (c.length < 4) continue;
1195
- let l = c.length - 1, u = c[l], d = c[l - 1], f = c[l - 2], p = u.x - d.x, m = u.y - d.y, h = Math.hypot(p, m);
1196
- if (h >= 10 || h < r) continue;
1197
- let g = d.x - f.x, _ = d.y - f.y;
1198
- if (Math.hypot(g, _) < r) continue;
1199
- let v = x(d, u, r), C = S(d, u, r), w = x(f, d, r), T = S(f, d, r);
1200
- if (!(v && T || C && w)) continue;
1201
- let E = o.end, O = o.start, k = E ? n.get(E) : void 0;
1202
- if (!k) continue;
1203
- let j = k.x ?? 0, M = k.y ?? 0, N = F(k);
1204
- if (!N) continue;
1205
- let P, I;
1206
- if (T) {
1207
- let e = _ < 0;
1208
- P = {
1209
- x: j,
1210
- y: f.y
1211
- }, I = {
1212
- x: j,
1213
- y: e ? N.bottom : N.top
1214
- };
1215
- } else {
1216
- let e = g > 0;
1217
- P = {
1218
- x: f.x,
1219
- y: M
1220
- }, I = {
1221
- x: e ? N.right : N.left,
1222
- y: M
1223
- };
1224
- }
1225
- if (B(P, I, i, E ? [E] : [], -2) || B(P, I, a, [], -2)) continue;
1226
- if (O) {
1227
- let e = n.get(O), t = e ? F(e) : void 0;
1228
- if (t && A(P, t, 2)) continue;
1229
- }
1230
- let ee = /* @__PURE__ */ t((e, t) => `${e.x.toFixed(3)},${e.y.toFixed(3)}|${t.x.toFixed(3)},${t.y.toFixed(3)}`, "ownSegmentKey"), L = /* @__PURE__ */ new Set();
1231
- for (let e = 0; e < c.length - 1; e++) L.add(ee(c[e], c[e + 1]));
1232
- let R = /* @__PURE__ */ t((t, n) => {
1233
- for (let i of e) {
1234
- if (i === o || i.isLayoutOnly) continue;
1235
- let e = i.points;
1236
- if (!(!e || e.length < 2)) for (let i = 0; i < e.length - 1; i++) {
1237
- let a = e[i], o = e[i + 1];
1238
- if (!L.has(ee(a, o)) && V(t, n, a, o, r)) return !0;
1239
- }
1240
- }
1241
- return !1;
1242
- }, "segmentCrossesOtherEdge");
1243
- if (R(P, I)) continue;
1244
- if (l - 3 >= 0) {
1245
- let e = c[l - 3], t = [O, E].filter((e) => !!e);
1246
- if (B(e, P, i, t, -2) || R(e, P)) continue;
1247
- }
1248
- let z = [
1249
- ...c.slice(0, l - 2),
1250
- P,
1251
- I
1252
- ];
1253
- o.points = z;
1254
- let te = o.labelNodeId;
1255
- if (te) {
1256
- let e = n.get(te);
1257
- if (e) {
1258
- let t = e.width ?? 0, n = e.height ?? 0;
1259
- if (t > 0 && n > 0) {
1260
- let i, a, o = -1;
1261
- for (let e = 0; e < z.length - 1; e++) {
1262
- let s = z[e], c = z[e + 1], l = Math.hypot(c.x - s.x, c.y - s.y), u = b(s, c, r), d = y(s, c, r);
1263
- (u && l >= t + 2 || d && l >= n + 2) && l > o && (o = l, i = (s.x + c.x) / 2, a = (s.y + c.y) / 2);
1264
- }
1265
- i !== void 0 && a !== void 0 && (e.x = i, e.y = a);
1266
- }
1267
- }
1268
- }
1269
- }
1270
- }
1271
- t(Ue, "collapseShortTerminalStub");
1272
- var Y = .001, X = 8, We = /* @__PURE__ */ t((e) => typeof e == "string" ? e.toUpperCase() : "", "upperCaseDirection"), Z = T, Ge = /* @__PURE__ */ t((e, t) => y(e, t, Y) || b(e, t, Y), "orthogonallyAligned");
1273
- function Ke(e, n) {
1274
- let r = /* @__PURE__ */ t((e, t) => {
1275
- let n = e.x ?? 0, r = e.y ?? 0, i = t.x - n, a = t.y - r, o = (e.width ?? 0) / 2, s = (e.height ?? 0) / 2;
1276
- return Math.abs(a) * o > Math.abs(i) * s ? (a < 0 && (s = -s), {
1277
- x: n + (a === 0 ? 0 : s * i / a),
1278
- y: r + s
1279
- }) : (i < 0 && (o = -o), {
1280
- x: n + o,
1281
- y: r + (i === 0 ? 0 : o * a / i)
1282
- });
1283
- }, "rectIntersect"), i = /* @__PURE__ */ t((e, t) => {
1284
- let i = D(e.points ?? []);
1285
- if (i.length < 2) return;
1286
- let a = t ? e.start : e.end, o = a ? n.get(a) : void 0, s = o ? F(o) : void 0;
1287
- if (!o || !a || !s) return;
1288
- let c = t ? i[0] : i[i.length - 1], l = t ? i[1] : i[i.length - 2], u = r(o, c), d = c;
1289
- if (Ge(l, u) && (d = l), y(u, d, Y)) return {
1290
- edge: e,
1291
- edgeId: String(e.id ?? ""),
1292
- nodeId: a,
1293
- atStart: t,
1294
- orientation: "V",
1295
- coord: u.x,
1296
- min: Math.min(u.y, d.y),
1297
- max: Math.max(u.y, d.y),
1298
- boundary: u,
1299
- railEnd: d,
1300
- rect: s
1301
- };
1302
- if (b(u, d, Y)) return {
1303
- edge: e,
1304
- edgeId: String(e.id ?? ""),
1305
- nodeId: a,
1306
- atStart: t,
1307
- orientation: "H",
1308
- coord: u.y,
1309
- min: Math.min(u.x, d.x),
1310
- max: Math.max(u.x, d.x),
1311
- boundary: u,
1312
- railEnd: d,
1313
- rect: s
1314
- };
1315
- }, "terminalLaneFor"), a = /* @__PURE__ */ t((e, t) => Math.max(0, Math.min(e.max, t.max) - Math.max(e.min, t.min)), "projectedOverlapLength"), o = /* @__PURE__ */ t((e, t) => e.nodeId !== t.nodeId || e.orientation !== t.orientation ? !1 : e.orientation === "H" ? (Math.abs(e.boundary.x - e.rect.left) < 1 || Math.abs(e.boundary.x - e.rect.right) < 1) && y(e.boundary, t.boundary, 1) : (Math.abs(e.boundary.y - e.rect.top) < 1 || Math.abs(e.boundary.y - e.rect.bottom) < 1) && b(e.boundary, t.boundary, 1), "sameTerminalFace"), s = /* @__PURE__ */ t((e, t) => e.nodeId !== t.nodeId || e.orientation !== t.orientation ? !1 : a(e, t) >= X && Math.abs(e.coord - t.coord) < .5, "exactTerminalLaneConflict"), c = /* @__PURE__ */ t((e, t) => {
1316
- if (e.nodeId !== t.nodeId || e.orientation !== t.orientation || e.orientation !== "H" || e.atStart === t.atStart) return !1;
1317
- let n = a(e, t);
1318
- if (n < X) return !1;
1319
- let r = e.rect.bottom - e.rect.top;
1320
- return n < r || n > 2 * r ? !1 : o(e, t) && Math.abs(e.coord - t.coord) < 16;
1321
- }, "nearTerminalLaneConflict"), l = /* @__PURE__ */ t((e, n) => {
1322
- let r = D(e.edge.points ?? []);
1323
- if (r.length < 2) return;
1324
- let i = e.orientation === "V" ? {
1325
- x: e.boundary.x + n,
1326
- y: e.boundary.y
1327
- } : {
1328
- x: e.boundary.x,
1329
- y: e.boundary.y + n
1330
- }, a = e.orientation === "V" ? {
1331
- x: e.railEnd.x + n,
1332
- y: e.railEnd.y
1333
- } : {
1334
- x: e.railEnd.x,
1335
- y: e.railEnd.y + n
1336
- };
1337
- if (!(/* @__PURE__ */ t(() => Math.abs(e.boundary.y - e.rect.top) < 1 || Math.abs(e.boundary.y - e.rect.bottom) < 1 ? b(i, e.boundary, Y) && i.x >= e.rect.left + 1 && i.x <= e.rect.right - 1 : Math.abs(e.boundary.x - e.rect.left) < 1 || Math.abs(e.boundary.x - e.rect.right) < 1 ? y(i, e.boundary, Y) && i.y >= e.rect.top + 1 && i.y <= e.rect.bottom - 1 : !1, "boundaryStaysOnSameFace"))()) return;
1338
- if (e.atStart) {
1339
- let t = r.length > 1 && v(r[1], e.railEnd, Y), n = r.slice(t ? 2 : 1), o = n[0];
1340
- return o && !Ge(o, a) ? void 0 : [
1341
- i,
1342
- a,
1343
- ...n
1344
- ];
1345
- }
1346
- let o = r.length > 1 && v(r[r.length - 2], e.railEnd, Y), s = r.slice(0, o ? -2 : -1), c = s[s.length - 1];
1347
- if (!(c && !Ge(c, a))) return [
1348
- ...s,
1349
- a,
1350
- i
1351
- ];
1352
- }, "shiftedCandidate"), u = /* @__PURE__ */ t((e) => {
1353
- let t = e.edge, r = D(t.points ?? []);
1354
- if (r.length !== 2) return !1;
1355
- let i = t.start, a = t.end, o = i ? n.get(i) : void 0, s = a ? n.get(a) : void 0;
1356
- if (!o || !s) return !1;
1357
- let c = o.x ?? 0, l = o.y ?? 0, u = s.x ?? 0, d = s.y ?? 0, [f, p] = r;
1358
- return b(f, p, Y) && Math.abs(l - d) < 1 && Math.abs(c - u) > 1 || y(f, p, Y) && Math.abs(c - u) < 1 && Math.abs(l - d) > 1;
1359
- }, "laneIsStraightCollinearConnector"), d = [
1360
- -7,
1361
- 7,
1362
- -14,
1363
- 14,
1364
- -21,
1365
- 21
1366
- ];
1367
- for (let t = 0; t < 8; t++) {
1368
- let t = e.filter((e) => !e.isLayoutOnly).flatMap((e) => [i(e, !0), i(e, !1)]).filter((e) => !!e), n = !1;
1369
- for (let e = 0; e < t.length && !n; e++) for (let r = e + 1; r < t.length && !n; r++) {
1370
- let a = t[e], o = t[r];
1371
- if (a.edge === o.edge || !(s(a, o) || c(a, o))) continue;
1372
- let f = !s(a, o), p = [a, o].sort((e, t) => {
1373
- let n = u(e), r = u(t);
1374
- return n === r ? Number(!t.atStart) - Number(!e.atStart) : Number(n) - Number(r);
1375
- });
1376
- for (let e of p) {
1377
- for (let r of d) {
1378
- let a = l(e, r);
1379
- if (!a) continue;
1380
- let o = i({
1381
- ...e.edge,
1382
- points: a
1383
- }, e.atStart);
1384
- if (!(!o || t.some((t) => t.edge !== e.edge && (s(o, t) || f && c(o, t))))) {
1385
- e.edge.points = a, n = !0;
1386
- break;
1387
- }
1388
- }
1389
- if (n) break;
1390
- }
1391
- }
1392
- if (!n) return;
1393
- }
1394
- }
1395
- t(Ke, "separateSharedRenderedTerminalLanes");
1396
- function qe(e, n) {
1397
- let { realNodeRects: r, labelNodeRects: i } = z(n.values()), a = /* @__PURE__ */ t((t, n) => {
1398
- let a = t.start, o = t.end, s = Z(n);
1399
- if (s.length !== n.length - 1) return !1;
1400
- let c = [a, o].filter((e) => !!e);
1401
- for (let e of s) if (B(e.a, e.b, r, c, -2) || B(e.a, e.b, i, [], -2)) return !1;
1402
- for (let n of e) {
1403
- if (n === t || n.isLayoutOnly) continue;
1404
- let e = n.points;
1405
- if (!(!e || e.length < 2)) {
1406
- for (let t of s) for (let n of Z(D(e))) if (w(t, n, .5) >= X || V(t.a, t.b, n.a, n.b, Y)) return !1;
1407
- }
1408
- }
1409
- return !0;
1410
- }, "candidateIsSafe"), o = /* @__PURE__ */ t((e, t) => {
1411
- if (t + 4 >= e.length) return;
1412
- let n = e[t], r = e[t + 1], i = e[t + 2], a = e[t + 3], o = e[t + 4], s = x(n, r) && S(r, i) && x(i, a) && S(a, o) && y(n, a, Y) && y(n, o, Y) && y(r, i, Y) && (r.x - n.x) * (a.x - i.x) < 0, c = S(n, r) && x(r, i) && S(i, a) && x(a, o) && b(n, a, Y) && b(n, o, Y) && b(r, i, Y) && (r.y - n.y) * (a.y - i.y) < 0;
1413
- if (s || c) return D([
1414
- ...e.slice(0, t + 1),
1415
- o,
1416
- ...e.slice(t + 5)
1417
- ]);
1418
- if (t + 5 >= e.length) return;
1419
- let l = e[t + 5], u = S(n, r) && x(r, i) && S(i, a) && x(a, o) && S(o, l) && y(n, o, Y) && y(n, l, Y) && y(i, a, Y) && (i.x - r.x) * (o.x - a.x) < 0, d = x(n, r) && S(r, i) && x(i, a) && S(a, o) && x(o, l) && b(n, o, Y) && b(n, l, Y) && b(i, a, Y) && (i.y - r.y) * (o.y - a.y) < 0;
1420
- if (!(!u && !d)) return D([
1421
- ...e.slice(0, t + 1),
1422
- l,
1423
- ...e.slice(t + 6)
1424
- ]);
1425
- }, "withoutDogleg");
1426
- for (let t = 0; t < 8; t++) {
1427
- let t = !1;
1428
- for (let n of e) {
1429
- if (n.isLayoutOnly) continue;
1430
- let e = D(n.points ?? []);
1431
- for (let r = 0; r <= e.length - 5; r++) {
1432
- let i = o(e, r);
1433
- if (!(!i || !a(n, i))) {
1434
- n.points = i, t = !0;
1435
- break;
1436
- }
1437
- }
1438
- if (t) break;
1439
- }
1440
- if (!t) return;
1441
- }
1442
- }
1443
- t(qe, "collapseRedundantRectangularDoglegs");
1444
- function Je(e, n) {
1445
- let { realNodeRects: r, labelNodeRects: i } = z(n.values()), a = e.filter((e) => !e.isLayoutOnly), o = /* @__PURE__ */ t((e, t, n) => D(e === t ? n ?? [] : e.points ?? []), "pointsFor"), s = /* @__PURE__ */ t((e, t) => {
1446
- let n = 0;
1447
- for (let r = 0; r < a.length; r++) {
1448
- let i = Z(o(a[r], e, t));
1449
- for (let s = r + 1; s < a.length; s++) {
1450
- let r = Z(o(a[s], e, t));
1451
- for (let e of i) for (let t of r) V(e.a, e.b, t.a, t.b, Y) && n++;
1452
- }
1453
- }
1454
- return n;
1455
- }, "strictCrossingCount"), c = /* @__PURE__ */ t((e) => {
1456
- let t = Z(e);
1457
- if (t.length !== 3) return;
1458
- let n = t[1];
1459
- if (!(t[0].horizontal === n.horizontal || t[2].horizontal === n.horizontal)) return {
1460
- index: n.index,
1461
- horizontal: n.horizontal,
1462
- vertical: n.vertical,
1463
- segment: n
1464
- };
1465
- }, "middleRail"), l = /* @__PURE__ */ t((e, t) => {
1466
- let n = [e.start, e.end].filter((e) => !!e);
1467
- return r.filter((e) => {
1468
- if (n.includes(e.id)) return !1;
1469
- let r = e.rect;
1470
- return t.horizontal ? C(t.a.x, t.b.x, r.left, r.right) >= X && t.a.y >= r.top - 2 && t.a.y <= r.bottom + 2 : C(t.a.y, t.b.y, r.top, r.bottom) >= X && t.a.x >= r.left - 2 && t.a.x <= r.right + 2;
1471
- });
1472
- }, "blockingRectsFor"), u = /* @__PURE__ */ t((e, t, n) => {
1473
- let r = e.map((e) => ({ ...e }));
1474
- if (t.horizontal) r[t.index].y = n, r[t.index + 1].y = n;
1475
- else if (t.vertical) r[t.index].x = n, r[t.index + 1].x = n;
1476
- else return;
1477
- let i = G(D(r));
1478
- return Z(i).length === i.length - 1 ? i : void 0;
1479
- }, "candidateByMovingRail"), d = /* @__PURE__ */ t((e, t, n) => {
1480
- let c = [e.start, e.end].filter((e) => !!e), l = Z(t);
1481
- if (l.length !== t.length - 1) return !1;
1482
- for (let e of l) if (B(e.a, e.b, r, c, -2) || B(e.a, e.b, i, [], -2)) return !1;
1483
- for (let t of a) if (t !== e) {
1484
- for (let e of l) for (let n of Z(o(t))) if (w(e, n, .5) >= X) return !1;
1485
- }
1486
- return s(e, t) <= n;
1487
- }, "candidateIsSafe");
1488
- for (let e = 0; e < 8; e++) {
1489
- let e = s(), t = !1;
1490
- for (let n of a) {
1491
- let r = o(n), i = c(r);
1492
- if (!i) continue;
1493
- let a = l(n, i.segment);
1494
- if (a.length === 0) continue;
1495
- let s = i.horizontal ? [Math.min(...a.map((e) => e.rect.top)) - 20, Math.max(...a.map((e) => e.rect.bottom)) + 20] : [Math.min(...a.map((e) => e.rect.left)) - 20, Math.max(...a.map((e) => e.rect.right)) + 20];
1496
- for (let a of s) {
1497
- let o = u(r, i.segment, a);
1498
- if (!(!o || !d(n, o, e))) {
1499
- n.points = o, t = !0;
1500
- break;
1501
- }
1502
- }
1503
- if (t) break;
1504
- }
1505
- if (!t) return;
1506
- }
1507
- }
1508
- t(Je, "liftObstacleHuggingSameSideRails");
1509
- function Ye(e, n, r) {
1510
- let i = /* @__PURE__ */ t((e) => {
1511
- let t = e.groupTitleRect;
1512
- if (!(!t || typeof t.left != "number" || typeof t.right != "number" || typeof t.top != "number" || typeof t.bottom != "number" || !Number.isFinite(t.left) || !Number.isFinite(t.right) || !Number.isFinite(t.top) || !Number.isFinite(t.bottom) || t.right <= t.left || t.bottom <= t.top)) return {
1513
- left: t.left,
1514
- right: t.right,
1515
- top: t.top,
1516
- bottom: t.bottom
1517
- };
1518
- }, "validTitleRect"), a = /* @__PURE__ */ t((e) => {
1519
- if (!e.isGroup || e.parentId) return;
1520
- let t = We(e.direction ?? r);
1521
- if (t === "LR" || t === "RL" || t === "BT") return;
1522
- let n = i(e), a = e.y, o = e.height;
1523
- if (!n || typeof a != "number" || typeof o != "number" || !Number.isFinite(a) || !Number.isFinite(o) || o <= 0) return;
1524
- let s = n.right - n.left, c = n.bottom - n.top;
1525
- if (!(c <= 0 || s < c)) return {
1526
- node: e,
1527
- rect: n
1528
- };
1529
- }, "topLaneTitleFor"), o = /* @__PURE__ */ t((e, t) => {
1530
- if (!e.horizontal) return !1;
1531
- let n = e.a.y;
1532
- return n < t.top - Y || n > t.bottom + Y ? !1 : C(e.a.x, e.b.x, t.left, t.right) >= X;
1533
- }, "horizontalSegmentIntersectsTitle"), s = [...n.values()].map(a).filter((e) => !!e);
1534
- if (s.length === 0) return;
1535
- let c = 0;
1536
- for (let t of e) {
1537
- if (t.isLayoutOnly) continue;
1538
- let e = D(t.points ?? []);
1539
- for (let t of Z(e)) for (let e of s) o(t, e.rect) && (c = Math.max(c, e.rect.bottom - t.a.y + 4));
1540
- }
1541
- if (!(c <= Y)) for (let e of s) {
1542
- let t = e.node.y, n = e.node.height;
1543
- typeof t != "number" || typeof n != "number" || !Number.isFinite(t) || !Number.isFinite(n) || n <= 0 || (e.node.y = t - c / 2, e.node.height = n + c, e.node.groupTitleRect = {
1544
- ...e.rect,
1545
- top: e.rect.top - c,
1546
- bottom: e.rect.bottom - c
1547
- });
1548
- }
1549
- }
1550
- t(Ye, "liftTopLaneTitleBandsAboveRails");
1551
- function Xe(e, n, r) {
1552
- let i = /* @__PURE__ */ t((e) => {
1553
- let t = e.groupTitleRect;
1554
- if (!(!t || typeof t.left != "number" || typeof t.right != "number" || typeof t.top != "number" || typeof t.bottom != "number" || !Number.isFinite(t.left) || !Number.isFinite(t.right) || !Number.isFinite(t.top) || !Number.isFinite(t.bottom) || t.right <= t.left || t.bottom <= t.top)) return {
1555
- left: t.left,
1556
- right: t.right,
1557
- top: t.top,
1558
- bottom: t.bottom
1559
- };
1560
- }, "validTitleRect"), a = /* @__PURE__ */ t((e) => {
1561
- if (!e.isGroup || e.parentId || We(e.direction ?? r) !== "LR") return;
1562
- let t = i(e), n = e.x, a = e.width;
1563
- if (!t || typeof n != "number" || typeof a != "number" || !Number.isFinite(n) || !Number.isFinite(a) || a <= 0) return;
1564
- let o = t.right - t.left, s = t.bottom - t.top;
1565
- if (!(o <= 0 || s < o)) return {
1566
- node: e,
1567
- rect: t
1568
- };
1569
- }, "leftLaneTitleFor"), o = /* @__PURE__ */ t((e, t) => {
1570
- if (!e.vertical) return !1;
1571
- let n = e.a.x;
1572
- return n < t.left - Y || n > t.right + Y ? !1 : C(e.a.y, e.b.y, t.top, t.bottom) >= X;
1573
- }, "verticalSegmentIntersectsTitle"), s = /* @__PURE__ */ t((e, t) => {
1574
- if (!e.horizontal) return !1;
1575
- let n = e.a.y;
1576
- return n < t.top - Y || n > t.bottom + Y ? !1 : C(e.a.x, e.b.x, t.left, t.right) >= X;
1577
- }, "horizontalSegmentIntersectsTitle"), c = [...n.values()].map(a).filter((e) => !!e);
1578
- if (c.length === 0) return;
1579
- let l = 0;
1580
- for (let t of e) {
1581
- if (t.isLayoutOnly) continue;
1582
- let e = D(t.points ?? []);
1583
- for (let t of Z(e)) for (let e of c) if (o(t, e.rect)) l = Math.max(l, e.rect.right - t.a.x + 4);
1584
- else if (s(t, e.rect)) {
1585
- let n = Math.min(t.a.x, t.b.x);
1586
- l = Math.max(l, e.rect.right - n + 4);
1587
- }
1588
- }
1589
- if (!(l <= Y)) for (let e of c) {
1590
- let t = e.node.x, n = e.node.width;
1591
- typeof t != "number" || typeof n != "number" || !Number.isFinite(t) || !Number.isFinite(n) || n <= 0 || (e.node.x = t - l / 2, e.node.width = n + l, e.node.groupTitleRect = {
1592
- ...e.rect,
1593
- left: e.rect.left - l,
1594
- right: e.rect.right - l
1595
- });
1596
- }
1597
- }
1598
- t(Xe, "shiftLeftLaneTitleBandsLeftOfRails");
1599
- function Ze(e, n) {
1600
- let { realNodeRects: r } = z(n.values()), i = e.filter((e) => !e.isLayoutOnly), a = /* @__PURE__ */ t((e, t = /* @__PURE__ */ new Map()) => D(t.get(e) ?? e.points ?? []), "replacementPointsFor"), o = /* @__PURE__ */ t((e = /* @__PURE__ */ new Map()) => {
1601
- let t = 0;
1602
- for (let n = 0; n < i.length; n++) {
1603
- let r = Z(a(i[n], e));
1604
- for (let o = n + 1; o < i.length; o++) {
1605
- let n = Z(a(i[o], e));
1606
- for (let e of r) for (let r of n) V(e.a, e.b, r.a, r.b, Y) && t++;
1607
- }
1608
- }
1609
- return t;
1610
- }, "crossingCount"), s = /* @__PURE__ */ t((e = /* @__PURE__ */ new Map()) => i.reduce((t, n) => t + E(a(n, e)), 0), "totalBends"), c = /* @__PURE__ */ t((e) => {
1611
- let t = a(e);
1612
- if (t.length < 4) return;
1613
- let n = t[t.length - 2], r = t[t.length - 1];
1614
- if (!(!x(n, r, Y) && !S(n, r, Y))) return {
1615
- tailStart: n,
1616
- terminal: r
1617
- };
1618
- }, "terminalTailFor"), l = /* @__PURE__ */ t((e, t) => {
1619
- let n = a(e);
1620
- if (n.length < 3) return;
1621
- let r = n[0], i = n[1], o;
1622
- if (x(r, i, Y)) o = {
1623
- x: i.x,
1624
- y: t.tailStart.y
1625
- };
1626
- else if (S(r, i, Y)) o = {
1627
- x: t.tailStart.x,
1628
- y: i.y
1629
- };
1630
- else return;
1631
- let s = G(D([
1632
- r,
1633
- i,
1634
- o,
1635
- t.tailStart,
1636
- t.terminal
1637
- ]));
1638
- return Z(s).length === s.length - 1 ? s : void 0;
1639
- }, "candidateWithDestinationTail"), u = /* @__PURE__ */ t((e, t) => {
1640
- let n = [e.start, e.end].filter((e) => !!e);
1641
- for (let e of Z(t)) if (B(e.a, e.b, r, n, -2)) return !0;
1642
- return !1;
1643
- }, "pathHasNodeHit"), d = /* @__PURE__ */ t((e, t, n) => {
1644
- for (let r of i) if (r !== e) {
1645
- for (let e of Z(t)) for (let t of Z(a(r, n))) if (w(e, t, .5) >= X) return !0;
1646
- }
1647
- return !1;
1648
- }, "pathHasSharedTrack"), f = /* @__PURE__ */ t((e, t, n) => !u(e, t) && !d(e, t, n), "candidateIsSafe"), p = /* @__PURE__ */ t(() => {
1649
- let e = /* @__PURE__ */ new Map();
1650
- for (let t of i) {
1651
- let r = t.end;
1652
- if (!r || !n.has(r) || a(t).length < 4) continue;
1653
- let i = e.get(r) ?? [];
1654
- i.push(t), e.set(r, i);
1655
- }
1656
- return e;
1657
- }, "edgesByDestination");
1658
- for (let e = 0; e < 4; e++) {
1659
- let e = o();
1660
- if (e === 0) return;
1661
- let t = s(), n, r = e, i = t;
1662
- for (let t of p().values()) for (let a = 0; a < t.length; a++) for (let u = a + 1; u < t.length; u++) {
1663
- let d = t[a], p = t[u], m = c(d), h = c(p);
1664
- if (!m || !h) continue;
1665
- let g = l(d, h), _ = l(p, m);
1666
- if (!g || !_) continue;
1667
- let v = /* @__PURE__ */ new Map([[d, g], [p, _]]);
1668
- if (!f(d, g, v) || !f(p, _, v)) continue;
1669
- let y = o(v), b = s(v);
1670
- y >= e || y > r || y === r && b >= i || (n = v, r = y, i = b);
1671
- }
1672
- if (!n) return;
1673
- for (let [e, t] of n) e.points = t;
1674
- }
1675
- }
1676
- t(Ze, "swapDestinationTerminalTailsToReduceCrossings");
1677
- function Qe(e, n) {
1678
- let { realNodeRects: r, labelNodeRects: i } = z(n.values()), a = e.filter((e) => !e.isLayoutOnly), o = /* @__PURE__ */ t((e, t = /* @__PURE__ */ new Map()) => D(t.get(e) ?? e.points ?? []), "replacementPointsFor"), s = /* @__PURE__ */ t((e = /* @__PURE__ */ new Map()) => {
1679
- let t = 0;
1680
- for (let n = 0; n < a.length; n++) {
1681
- let r = Z(o(a[n], e));
1682
- for (let i = n + 1; i < a.length; i++) {
1683
- let n = Z(o(a[i], e));
1684
- for (let e of r) for (let r of n) V(e.a, e.b, r.a, r.b, Y) && t++;
1685
- }
1686
- }
1687
- return t;
1688
- }, "strictCrossingCount"), c = /* @__PURE__ */ t((e = /* @__PURE__ */ new Map()) => a.reduce((t, n) => t + E(o(n, e)), 0), "totalBends"), l = /* @__PURE__ */ t((e) => {
1689
- let t = e.start, r = e.end, i = t ? n.get(t) : void 0, a = r ? n.get(r) : void 0, o = i ? F(i) : void 0, s = a ? F(a) : void 0;
1690
- return o && s ? {
1691
- src: o,
1692
- dst: s
1693
- } : void 0;
1694
- }, "endpointRectsFor"), u = /* @__PURE__ */ t((e, t, n) => {
1695
- if (n.index <= 0 || n.index + 1 >= t.length - 1) return;
1696
- let r = l(e);
1697
- if (r) {
1698
- if (n.vertical) {
1699
- let i = n.a.x, a = Math.min(r.src.left, r.dst.left), o = Math.max(r.src.right, r.dst.right), s = i < a - Y ? "left" : i > o + Y ? "right" : void 0;
1700
- return s ? {
1701
- edge: e,
1702
- points: t,
1703
- segmentIndex: n.index,
1704
- axis: "vertical",
1705
- side: s,
1706
- coord: i,
1707
- min: Math.min(n.a.y, n.b.y),
1708
- max: Math.max(n.a.y, n.b.y)
1709
- } : void 0;
1710
- }
1711
- if (n.horizontal) {
1712
- let i = n.a.y, a = Math.min(r.src.top, r.dst.top), o = Math.max(r.src.bottom, r.dst.bottom), s = i < a - Y ? "top" : i > o + Y ? "bottom" : void 0;
1713
- return s ? {
1714
- edge: e,
1715
- points: t,
1716
- segmentIndex: n.index,
1717
- axis: "horizontal",
1718
- side: s,
1719
- coord: i,
1720
- min: Math.min(n.a.x, n.b.x),
1721
- max: Math.max(n.a.x, n.b.x)
1722
- } : void 0;
1723
- }
1724
- }
1725
- }, "externalRailForSegment"), d = /* @__PURE__ */ t(() => {
1726
- let e = [];
1727
- for (let t of a) {
1728
- let n = o(t);
1729
- for (let r of Z(n)) {
1730
- let i = u(t, n, r);
1731
- i && e.push(i);
1732
- }
1733
- }
1734
- return e;
1735
- }, "collectExternalRails"), f = /* @__PURE__ */ t((e, t) => e.edge !== t.edge && e.axis === t.axis && e.side === t.side && C(e.min, e.max, t.min, t.max) >= X, "railsInteract"), p = /* @__PURE__ */ t((e) => {
1736
- let t = [], n = /* @__PURE__ */ new Set();
1737
- for (let r of e) {
1738
- if (n.has(r)) continue;
1739
- let i = [r], a = [];
1740
- for (n.add(r); i.length > 0;) {
1741
- let t = i.pop();
1742
- a.push(t);
1743
- for (let r of e) !n.has(r) && f(t, r) && (n.add(r), i.push(r));
1744
- }
1745
- a.length > 1 && t.push(a);
1746
- }
1747
- return t;
1748
- }, "connectedComponents"), m = /* @__PURE__ */ t((e) => {
1749
- let t = [];
1750
- for (let n of e) t.some((e) => Math.abs(e - n.coord) < Y) || t.push(n.coord);
1751
- for (; t.length < e.length;) {
1752
- let n = Math.min(...t), r = Math.max(...t), i = e[0].side;
1753
- t.push(i === "left" || i === "top" ? n - 12 * (e.length - t.length) : r + 12 * (e.length - t.length));
1754
- }
1755
- return t;
1756
- }, "uniqueCoordsFor"), h = /* @__PURE__ */ t((e) => {
1757
- let n = e.map((e) => e.coord), r = m(e), i = [];
1758
- if (e.length <= 6) {
1759
- let a = Array(r.length).fill(!1), o = [], s = /* @__PURE__ */ t(() => {
1760
- if (o.length === e.length) {
1761
- o.some((e, t) => Math.abs(e - n[t]) >= Y) && i.push([...o]);
1762
- return;
1763
- }
1764
- for (let [e, t] of r.entries()) a[e] || (a[e] = !0, o.push(t), s(), o.pop(), a[e] = !1);
1765
- }, "visit");
1766
- return s(), i;
1767
- }
1768
- for (let e = 0; e < n.length; e++) for (let t = e + 1; t < n.length; t++) {
1769
- let r = [...n];
1770
- [r[e], r[t]] = [r[t], r[e]], i.push(r);
1771
- }
1772
- return i;
1773
- }, "coordinateAssignmentsFor"), g = /* @__PURE__ */ t((e, t) => {
1774
- let n = /* @__PURE__ */ new Map();
1775
- for (let [r, i] of e.entries()) {
1776
- let e = t[r], a = n.get(i.edge) ?? i.points.map((e) => ({
1777
- x: e.x,
1778
- y: e.y
1779
- }));
1780
- i.axis === "vertical" ? (a[i.segmentIndex].x = e, a[i.segmentIndex + 1].x = e) : (a[i.segmentIndex].y = e, a[i.segmentIndex + 1].y = e), n.set(i.edge, a);
1781
- }
1782
- let r = /* @__PURE__ */ new Map();
1783
- for (let [e, t] of n) {
1784
- let n = G(D(t));
1785
- if (Z(n).length !== n.length - 1) return;
1786
- r.set(e, n);
1787
- }
1788
- return r;
1789
- }, "replacementsForAssignment"), _ = /* @__PURE__ */ t((e) => {
1790
- for (let [t, n] of e) {
1791
- let e = [t.start, t.end].filter((e) => !!e);
1792
- for (let t of Z(n)) if (B(t.a, t.b, r, e, -2) || B(t.a, t.b, i, [], -2)) return !1;
1793
- }
1794
- for (let t = 0; t < a.length; t++) {
1795
- let n = a[t], r = e.has(n), i = Z(o(n, e));
1796
- for (let n = t + 1; n < a.length; n++) {
1797
- let t = a[n];
1798
- if (!r && !e.has(t)) continue;
1799
- let s = Z(o(t, e));
1800
- for (let e of i) for (let t of s) if (w(e, t, .5) >= X) return !1;
1801
- }
1802
- }
1803
- return !0;
1804
- }, "candidateIsSafe");
1805
- for (let e = 0; e < 4; e++) {
1806
- let e = s();
1807
- if (e === 0) return;
1808
- let t, n = e, r = c(), i = Infinity;
1809
- for (let a of p(d())) for (let o of h(a)) {
1810
- let l = g(a, o);
1811
- if (!l || !_(l)) continue;
1812
- let u = s(l);
1813
- if (u >= e) continue;
1814
- let d = c(l), f = a.reduce((e, t, n) => e + Math.abs(o[n] - t.coord), 0);
1815
- u > n || u === n && (d > r || d === r && f >= i) || (t = l, n = u, r = d, i = f);
1816
- }
1817
- if (!t) return;
1818
- for (let [e, n] of t) e.points = n;
1819
- }
1820
- }
1821
- t(Qe, "reassignCrossingExternalRailChannels");
1822
- function $e(e, n) {
1823
- let { realNodeRects: r, labelNodeRects: i } = z(n.values()), a = e.filter((e) => !e.isLayoutOnly), o = /* @__PURE__ */ t((e, t, n) => D(e === t ? n ?? [] : e.points ?? []), "pointsFor"), s = /* @__PURE__ */ t((e) => Z(e).reduce((e, t) => {
1824
- let n = t.a.x - t.b.x, r = t.a.y - t.b.y;
1825
- return e + Math.hypot(n, r);
1826
- }, 0), "pathLength"), c = /* @__PURE__ */ t((e, t) => {
1827
- let n = 0;
1828
- for (let r = 0; r < a.length; r++) {
1829
- let i = Z(o(a[r], e, t));
1830
- for (let s = r + 1; s < a.length; s++) {
1831
- let r = Z(o(a[s], e, t));
1832
- for (let e of i) for (let t of r) V(e.a, e.b, t.a, t.b, Y) && n++;
1833
- }
1834
- }
1835
- return n;
1836
- }, "strictCrossingCount"), l = /* @__PURE__ */ t((e, t) => {
1837
- if (e.horizontal) {
1838
- let n = e.a.y;
1839
- return (Math.abs(n - t.top) < 1 || Math.abs(n - t.bottom) < 1) && C(e.a.x, e.b.x, t.left, t.right) >= X;
1840
- }
1841
- if (e.vertical) {
1842
- let n = e.a.x;
1843
- return (Math.abs(n - t.left) < 1 || Math.abs(n - t.right) < 1) && C(e.a.y, e.b.y, t.top, t.bottom) >= X;
1844
- }
1845
- return !1;
1846
- }, "segmentRunsAlongRectBorder"), u = /* @__PURE__ */ t((e) => {
1847
- let t = [e.start, e.end].filter((e) => !!e), r = [];
1848
- for (let e of t) {
1849
- let t = n.get(e), i = t ? F(t) : void 0;
1850
- i && r.push(i);
1851
- }
1852
- return r;
1853
- }, "endpointRectsFor"), d = /* @__PURE__ */ t((e, t) => {
1854
- if (t + 3 >= e.length) return [];
1855
- let n = e[t], r = e[t + 1], i = e[t + 2], a = e[t + 3], o = x(n, r, Y) && S(r, i, Y) && x(i, a, Y), s = S(n, r, Y) && x(r, i, Y) && S(i, a, Y);
1856
- if (!o && !s || !(o ? Math.sign(r.x - n.x) !== Math.sign(a.x - i.x) : Math.sign(r.y - n.y) !== Math.sign(a.y - i.y))) return [];
1857
- let c = y(n, a, Y) || b(n, a, Y) ? [] : [{
1858
- x: n.x,
1859
- y: a.y
1860
- }, {
1861
- x: a.x,
1862
- y: n.y
1863
- }], l = c.length === 0 ? [[...e.slice(0, t + 1), ...e.slice(t + 3)]] : c.map((n) => [
1864
- ...e.slice(0, t + 1),
1865
- n,
1866
- ...e.slice(t + 3)
1867
- ]), u = /* @__PURE__ */ new Set();
1868
- return l.map((e) => G(D(e))).filter((e) => {
1869
- if (Z(e).length !== e.length - 1 || !e.some((e) => v(e, a, Y))) return !1;
1870
- let t = e.map((e) => `${e.x.toFixed(3)},${e.y.toFixed(3)}`).join("|");
1871
- return u.has(t) ? !1 : (u.add(t), !0);
1872
- });
1873
- }, "shortcutCandidatesAt"), f = /* @__PURE__ */ t((e, t, n) => {
1874
- let s = [e.start, e.end].filter((e) => !!e), d = u(e);
1875
- for (let e of Z(t)) if (B(e.a, e.b, r, s, -2) || B(e.a, e.b, i, [], -2) || d.some((t) => l(e, t))) return !1;
1876
- for (let n of a) if (n !== e) {
1877
- for (let e of Z(t)) for (let t of Z(o(n))) if (w(e, t, .5) >= X) return !1;
1878
- }
1879
- return c(e, t) <= n;
1880
- }, "candidateIsSafe");
1881
- for (let e = 0; e < 8; e++) {
1882
- let e = c(), t, n, r = e, i = Infinity, l = Infinity;
1883
- for (let u of a) {
1884
- let a = o(u), p = E(a, Y), m = s(a);
1885
- for (let o = 0; o <= a.length - 4; o++) for (let h of d(a, o)) {
1886
- let a = E(h, Y), o = s(h);
1887
- if (!(a < p || a === p && o < m - Y) || !f(u, h, e)) continue;
1888
- let d = c(u, h);
1889
- d > r || d === r && (a > i || a === i && o >= l) || (t = u, n = h, r = d, i = a, l = o);
1890
- }
1891
- }
1892
- if (!t || !n) return;
1893
- t.points = n;
1894
- }
1895
- }
1896
- t($e, "shortcutRedundantOrthogonalJogs");
1897
- function et(e, n) {
1898
- let r = [];
1899
- for (let e of n.values()) {
1900
- if (e.isGroup || e.isEdgeLabel) continue;
1901
- let t = e.x ?? 0, n = e.y ?? 0, i = F(e);
1902
- i && r.push({
1903
- id: String(e.id ?? ""),
1904
- cx: t,
1905
- cy: n,
1906
- rect: i
1907
- });
1908
- }
1909
- if (r.length === 0) return;
1910
- let i = new Map(r.map((e) => [e.id, e])), a = r.map((e) => ({
1911
- id: e.id,
1912
- rect: e.rect
1913
- })), o = [
1914
- "top",
1915
- "bottom",
1916
- "left",
1917
- "right"
1918
- ], s = {
1919
- top: Math.min(...r.map((e) => e.rect.top)) - 20,
1920
- bottom: Math.max(...r.map((e) => e.rect.bottom)) + 20,
1921
- left: Math.min(...r.map((e) => e.rect.left)) - 20,
1922
- right: Math.max(...r.map((e) => e.rect.right)) + 20
1923
- }, c = e.filter((e) => !e.isLayoutOnly), l = new Map(c.map((e, t) => [e, t])), u = /* @__PURE__ */ t((e) => {
1924
- let t = e === "left" || e === "top" ? -1 : 1, n = [];
1925
- for (let r = 0; r <= 2; r++) n.push(s[e] + t * 20 * r);
1926
- return n;
1927
- }, "outwardTracksForSide"), d = /* @__PURE__ */ t((e, t = /* @__PURE__ */ new Map()) => D(t.get(e) ?? e.points ?? []), "replacementPointsFor"), f = /* @__PURE__ */ t((e, t) => {
1928
- let n = 0;
1929
- for (let r of e) for (let e of t) V(r.a, r.b, e.a, e.b, Y) && n++;
1930
- return n;
1931
- }, "crossingCountBetweenSegments"), p = /* @__PURE__ */ t((e, t) => f(Z(e), Z(t)), "crossingCountBetweenPaths"), m = /* @__PURE__ */ t((e = /* @__PURE__ */ new Map()) => {
1932
- let n = 0, r = [], i = /* @__PURE__ */ new Set(), a = [], o = /* @__PURE__ */ t((e) => {
1933
- i.has(e) || (i.add(e), a.push(e));
1934
- }, "addEdge");
1935
- for (let t = 0; t < c.length; t++) {
1936
- let i = c[t], a = d(i, e);
1937
- for (let s = t + 1; s < c.length; s++) {
1938
- let t = c[s], l = p(a, d(t, e));
1939
- l > 0 && (n += l, r.push({
1940
- first: i,
1941
- second: t,
1942
- count: l
1943
- }), o(i), o(t));
1944
- }
1945
- }
1946
- return a.sort((e, t) => (l.get(e) ?? 0) - (l.get(t) ?? 0)), {
1947
- count: n,
1948
- pairs: r,
1949
- edgeSet: i,
1950
- edges: a
1951
- };
1952
- }, "crossingSnapshot"), h = /* @__PURE__ */ t((e, t) => {
1953
- let n = new Set(t.keys());
1954
- if (n.size === 0) return e.count;
1955
- let r = 0;
1956
- for (let t of e.pairs) (n.has(t.first) || n.has(t.second)) && (r += t.count);
1957
- let i = 0;
1958
- for (let e = 0; e < c.length; e++) {
1959
- let r = c[e], a = n.has(r), o = d(r, t);
1960
- for (let r = e + 1; r < c.length; r++) {
1961
- let e = c[r];
1962
- !a && !n.has(e) || (i += p(o, d(e, t)));
1963
- }
1964
- }
1965
- return e.count - r + i;
1966
- }, "crossingCountWithReplacements"), g = /* @__PURE__ */ t((e) => {
1967
- let t = /* @__PURE__ */ new Map();
1968
- for (let n of e.pairs) {
1969
- let e = t.get(n.first) ?? /* @__PURE__ */ new Set();
1970
- e.add(n.second), t.set(n.first, e);
1971
- let r = t.get(n.second) ?? /* @__PURE__ */ new Set();
1972
- r.add(n.first), t.set(n.second, r);
1973
- }
1974
- let n = [], r = /* @__PURE__ */ new Set();
1975
- for (let i of e.edges) {
1976
- if (r.has(i)) continue;
1977
- let e = [i], a = [];
1978
- for (r.add(i); e.length > 0;) {
1979
- let n = e.pop();
1980
- a.push(n);
1981
- for (let i of t.get(n) ?? []) r.has(i) || (r.add(i), e.push(i));
1982
- }
1983
- a.sort((e, t) => (l.get(e) ?? 0) - (l.get(t) ?? 0)), a.length > 1 && n.push(a);
1984
- }
1985
- return n;
1986
- }, "crossingComponents"), _ = /* @__PURE__ */ t((e) => [e.start, e.end].filter((e) => !!e), "endpointIdsFor"), v = /* @__PURE__ */ t((e) => {
1987
- let t = [];
1988
- for (let n of g(e)) {
1989
- let e = new Set(n), r = new Set(n.flatMap((e) => _(e))), i = [...n];
1990
- for (let t of c) e.has(t) || _(t).some((e) => r.has(e)) && i.push(t);
1991
- i.sort((e, t) => (l.get(e) ?? 0) - (l.get(t) ?? 0)), t.push(i);
1992
- }
1993
- return t;
1994
- }, "pairSearchGroups"), y = /* @__PURE__ */ t((e, t, n) => h(e, /* @__PURE__ */ new Map([[t, n]])), "crossingCountWithSingleReplacement"), b = /* @__PURE__ */ t((e) => {
1995
- let t = /* @__PURE__ */ new Map();
1996
- for (let n of e.pairs) t.set(n.first, (t.get(n.first) ?? 0) + n.count), t.set(n.second, (t.get(n.second) ?? 0) + n.count);
1997
- return t;
1998
- }, "currentCrossingsByEdge"), C = /* @__PURE__ */ t((e) => e.slice(1).reduce((t, n, r) => {
1999
- let i = e[r];
2000
- return t + Math.abs(n.x - i.x) + Math.abs(n.y - i.y);
2001
- }, 0), "pathLength"), T = /* @__PURE__ */ t((e = /* @__PURE__ */ new Map()) => c.reduce((t, n) => t + E(d(n, e)), 0), "totalBends"), O = /* @__PURE__ */ t((e = /* @__PURE__ */ new Map()) => c.reduce((t, n) => t + C(d(n, e)), 0), "totalLength"), k = /* @__PURE__ */ t((e, t, n = /* @__PURE__ */ new Map()) => {
2002
- let r = Z(t);
2003
- for (let t of c) if (t !== e) {
2004
- for (let e of r) for (let r of Z(d(t, n))) if (w(e, r, .5) >= X) return !0;
2005
- }
2006
- return !1;
2007
- }, "pathHasSegmentConflict"), A = /* @__PURE__ */ t((e, t) => {
2008
- let n = [e.start, e.end].filter((e) => !!e);
2009
- for (let e of Z(t)) if (B(e.a, e.b, a, n, -2)) return !0;
2010
- return !1;
2011
- }, "pathHitsNode"), j = /* @__PURE__ */ t((e, t) => {
2012
- let n = G(D(t));
2013
- Z(n).length === n.length - 1 && e.push(n);
2014
- }, "pushOrthogonalCandidate"), M = /* @__PURE__ */ t((e) => e === "left" || e === "right", "sideIsHorizontal"), N = /* @__PURE__ */ t((e, t, n) => {
2015
- switch (t) {
2016
- case "left": return Math.min(e.x, n.x) - 20;
2017
- case "right": return Math.max(e.x, n.x) + 20;
2018
- case "top": return Math.min(e.y, n.y) - 20;
2019
- case "bottom": return Math.max(e.y, n.y) + 20;
2020
- }
2021
- }, "localTrackForSameSide"), P = /* @__PURE__ */ t((e, t, n, r) => {
2022
- let i = n === "left" || n === "top" ? -1 : 1, a = [N(t, n, r), s[n]];
2023
- for (let o of a) for (let a = 0; a <= 2; a++) j(e, L(t, n, r, o + i * 20 * a));
2024
- }, "addSameSideCandidates"), R = /* @__PURE__ */ t((e, t, n, r, i) => {
2025
- for (let a of u(n)) for (let n of u(i)) j(e, [
2026
- t,
2027
- {
2028
- x: a,
2029
- y: t.y
2030
- },
2031
- {
2032
- x: a,
2033
- y: n
2034
- },
2035
- {
2036
- x: r.x,
2037
- y: n
2038
- },
2039
- r
2040
- ]);
2041
- }, "addHorizontalToVerticalCandidates"), z = /* @__PURE__ */ t((e, t, n, r, i) => {
2042
- for (let a of u(n)) for (let n of u(i)) j(e, [
2043
- t,
2044
- {
2045
- x: t.x,
2046
- y: a
2047
- },
2048
- {
2049
- x: n,
2050
- y: a
2051
- },
2052
- {
2053
- x: n,
2054
- y: r.y
2055
- },
2056
- r
2057
- ]);
2058
- }, "addVerticalToHorizontalCandidates"), te = /* @__PURE__ */ t((e, t, n, r, i) => {
2059
- let a = [...u("top"), ...u("bottom")];
2060
- for (let o of u(n)) for (let n of u(i)) for (let i of a) j(e, [
2061
- t,
2062
- {
2063
- x: o,
2064
- y: t.y
2065
- },
2066
- {
2067
- x: o,
2068
- y: i
2069
- },
2070
- {
2071
- x: n,
2072
- y: i
2073
- },
2074
- {
2075
- x: n,
2076
- y: r.y
2077
- },
2078
- r
2079
- ]);
2080
- }, "addHorizontalPairCandidates"), ne = /* @__PURE__ */ t((e, t, n, r, i) => {
2081
- let a = [...u("left"), ...u("right")];
2082
- for (let o of u(n)) for (let n of u(i)) for (let i of a) j(e, [
2083
- t,
2084
- {
2085
- x: t.x,
2086
- y: o
2087
- },
2088
- {
2089
- x: i,
2090
- y: o
2091
- },
2092
- {
2093
- x: i,
2094
- y: n
2095
- },
2096
- {
2097
- x: r.x,
2098
- y: n
2099
- },
2100
- r
2101
- ]);
2102
- }, "addVerticalPairCandidates"), re = /* @__PURE__ */ t((e) => {
2103
- let t = /* @__PURE__ */ new Set();
2104
- return e.map((e) => D(e)).filter((e) => {
2105
- let n = e.map((e) => `${e.x.toFixed(3)},${e.y.toFixed(3)}`).join("|");
2106
- return t.has(n) || e.length < 2 ? !1 : (t.add(n), !0);
2107
- });
2108
- }, "dedupeCandidatePaths"), ie = /* @__PURE__ */ t((e, t, n, r) => {
2109
- let i = [], a = ee(e, t, n, r, 20, Y);
2110
- a && j(i, a), t === r && P(i, e, t, n);
2111
- let o = M(t), s = M(r);
2112
- return o && !s ? R(i, e, t, n, r) : !o && s ? z(i, e, t, n, r) : o ? te(i, e, t, n, r) : ne(i, e, t, n, r), re(i);
2113
- }, "buildCandidatesForSides"), ae = /* @__PURE__ */ t((e, t, n, r) => {
2114
- let i = [...u("left"), ...u("right")], a = [...u("top"), ...u("bottom")];
2115
- for (let s of o) {
2116
- let o = I(r, s), c = s === "top" || s === "bottom" ? u(s) : a;
2117
- for (let r of i) {
2118
- j(e, [
2119
- t,
2120
- n,
2121
- {
2122
- x: r,
2123
- y: n.y
2124
- },
2125
- {
2126
- x: r,
2127
- y: o.y
2128
- },
2129
- o
2130
- ]);
2131
- for (let i of c) j(e, [
2132
- t,
2133
- n,
2134
- {
2135
- x: r,
2136
- y: n.y
2137
- },
2138
- {
2139
- x: r,
2140
- y: i
2141
- },
2142
- {
2143
- x: o.x,
2144
- y: i
2145
- },
2146
- o
2147
- ]);
2148
- }
2149
- }
2150
- }, "addVerticalDepartureOuterTrackCandidates"), oe = /* @__PURE__ */ t((e, t, n, r) => {
2151
- let i = [...u("left"), ...u("right")], a = [...u("top"), ...u("bottom")];
2152
- for (let s of o) {
2153
- let o = I(r, s), c = s === "left" || s === "right" ? u(s) : i;
2154
- for (let r of a) {
2155
- j(e, [
2156
- t,
2157
- n,
2158
- {
2159
- x: n.x,
2160
- y: r
2161
- },
2162
- {
2163
- x: o.x,
2164
- y: r
2165
- },
2166
- o
2167
- ]);
2168
- for (let i of c) j(e, [
2169
- t,
2170
- n,
2171
- {
2172
- x: n.x,
2173
- y: r
2174
- },
2175
- {
2176
- x: i,
2177
- y: r
2178
- },
2179
- {
2180
- x: i,
2181
- y: o.y
2182
- },
2183
- o
2184
- ]);
2185
- }
2186
- }
2187
- }, "addHorizontalDepartureOuterTrackCandidates"), H = /* @__PURE__ */ t((e) => {
2188
- let t = e.start, n = e.end, r = n ? i.get(n) : void 0;
2189
- if (!t || !r) return [];
2190
- let a = D(e.points ?? []);
2191
- if (a.length < 4) return [];
2192
- let o = a[0], s = a[1], c = [];
2193
- return S(o, s, Y) ? ae(c, o, s, r) : x(o, s, Y) && oe(c, o, s, r), c;
2194
- }, "terminalPreservingOuterTrackCandidates"), U = /* @__PURE__ */ t((e) => {
2195
- let t = e.start, n = e.end, r = t ? i.get(t) : void 0, a = n ? i.get(n) : void 0;
2196
- if (!r || !a) return [];
2197
- let s = [];
2198
- for (let e of o) {
2199
- let t = I(r, e);
2200
- for (let n of o) s.push(...ie(t, e, I(a, n), n));
2201
- }
2202
- return s.push(...H(e)), s;
2203
- }, "candidatePathsFor"), W = /* @__PURE__ */ t(() => new Map(c.map((e) => [e, Z(d(e))])), "currentSegmentsByEdge"), K = /* @__PURE__ */ t((e, t, n) => {
2204
- let r = /* @__PURE__ */ new Set();
2205
- for (let i of c) {
2206
- if (i === e) continue;
2207
- let a = n.get(i) ?? Z(d(i));
2208
- t.some((e) => a.some((t) => w(e, t, .5) >= X)) && r.add(i);
2209
- }
2210
- return r;
2211
- }, "sharedTrackConflictsFor"), se = /* @__PURE__ */ t((e, t, n, r) => {
2212
- let i = /* @__PURE__ */ new Set();
2213
- return U(e).map((e) => G(D(e))).filter((t) => {
2214
- if (A(e, t)) return !1;
2215
- let n = t.map((e) => `${e.x.toFixed(3)},${e.y.toFixed(3)}`).join("|");
2216
- return i.has(n) || t.length < 2 ? !1 : (i.add(n), !0);
2217
- }).map((i) => {
2218
- let a = Z(i), o = 0;
2219
- for (let t of c) t !== e && (o += f(a, n.get(t) ?? Z(d(t))));
2220
- return {
2221
- candidate: i,
2222
- candidateSegments: a,
2223
- crossings: t.count - (r.get(e) ?? 0) + o,
2224
- bends: E(i, Y),
2225
- totalBends: E(i),
2226
- length: C(i)
2227
- };
2228
- }).filter(({ crossings: e }) => e <= t.count).sort((e, t) => e.crossings - t.crossings || e.bends - t.bends || e.length - t.length).slice(0, 48).map((t) => ({
2229
- path: t.candidate,
2230
- segments: t.candidateSegments,
2231
- sharedTrackConflicts: K(e, t.candidateSegments, n),
2232
- totalBends: t.totalBends,
2233
- length: t.length
2234
- }));
2235
- }, "pairCandidatesFor"), ce = /* @__PURE__ */ t((e, t, n, r, i, a) => {
2236
- let o = 0;
2237
- for (let n of e.pairs) (n.first === t || n.second === t || n.first === r || n.second === r) && (o += n.count);
2238
- let s = f(n.segments, i.segments);
2239
- for (let e of c) {
2240
- if (e === t || e === r) continue;
2241
- let o = a.get(e) ?? Z(d(e));
2242
- s += f(n.segments, o) + f(i.segments, o);
2243
- }
2244
- return e.count - o + s;
2245
- }, "pairCrossingCount"), le = /* @__PURE__ */ t((e, t) => {
2246
- for (let n of e.sharedTrackConflicts) if (n !== t) return !1;
2247
- return !0;
2248
- }, "conflictsOnlyWith"), ue = /* @__PURE__ */ t((e, t) => e.segments.some((e) => t.segments.some((t) => w(e, t, .5) >= X)), "candidatesShareTrack"), de = /* @__PURE__ */ t((e, t, n, r) => le(t, n.edge) && le(r, e.edge) && !ue(t, r), "pairCandidatesAreCompatible"), q = /* @__PURE__ */ t((e, t, n, r, i) => {
2249
- let a = ce(e.current, t.edge, n, r.edge, i, e.baseSegments);
2250
- if (!(a >= e.current.count)) return {
2251
- replacements: /* @__PURE__ */ new Map([[t.edge, n.path], [r.edge, i.path]]),
2252
- crossings: a,
2253
- bends: e.currentBends - (e.baseBendsByEdge.get(t.edge) ?? 0) - (e.baseBendsByEdge.get(r.edge) ?? 0) + n.totalBends + i.totalBends,
2254
- length: e.currentLength - (e.baseLengthByEdge.get(t.edge) ?? 0) - (e.baseLengthByEdge.get(r.edge) ?? 0) + n.length + i.length
2255
- };
2256
- }, "scorePairReplacement"), J = /* @__PURE__ */ t((e, t) => e.crossings < t.crossings || e.crossings === t.crossings && (e.bends < t.bends || e.bends === t.bends && e.length < t.length), "pairScoreIsBetter"), fe = /* @__PURE__ */ t((e, t, n, r) => {
2257
- let i = r;
2258
- for (let r of t.candidates) for (let a of n.candidates) {
2259
- if (!de(t, r, n, a)) continue;
2260
- let o = q(e, t, r, n, a);
2261
- o && J(o, i) && (i = o);
2262
- }
2263
- return i;
2264
- }, "bestScoreForOptionPair"), pe = /* @__PURE__ */ t((e) => {
2265
- let t = T(), n = O(), r = W(), i = b(e), a = new Map(c.map((e) => [e, E(d(e))])), o = new Map(c.map((e) => [e, C(d(e))])), s = /* @__PURE__ */ new Map(), l = v(e);
2266
- for (let t of l) for (let n of t) {
2267
- if (s.has(n)) continue;
2268
- let t = se(n, e, r, i);
2269
- t.length > 0 && s.set(n, {
2270
- edge: n,
2271
- candidates: t
2272
- });
2273
- }
2274
- let u = {
2275
- replacements: /* @__PURE__ */ new Map(),
2276
- crossings: e.count,
2277
- bends: t,
2278
- length: n
2279
- }, f = {
2280
- current: e,
2281
- currentBends: t,
2282
- currentLength: n,
2283
- baseBendsByEdge: a,
2284
- baseLengthByEdge: o,
2285
- baseSegments: r
2286
- };
2287
- for (let t of l) {
2288
- let n = new Set(t.filter((t) => e.edgeSet.has(t))), r = t.map((e) => s.get(e)).filter((e) => !!e);
2289
- for (let e = 0; e < r.length; e++) {
2290
- let t = r[e];
2291
- for (let i = e + 1; i < r.length; i++) {
2292
- let e = r[i];
2293
- !n.has(t.edge) && !n.has(e.edge) || (u = fe(f, t, e, u));
2294
- }
2295
- }
2296
- }
2297
- return u.replacements.size > 0 ? u.replacements : void 0;
2298
- }, "bestPairedReplacement");
2299
- for (let e = 0; e < 4; e++) {
2300
- let e = m(), t = e.count;
2301
- if (t === 0) return;
2302
- let n, r, i = t, a = Infinity;
2303
- for (let o of e.edges) {
2304
- let s = E(d(o), Y);
2305
- for (let c of U(o)) {
2306
- let l = A(o, c), u = !l && k(o, c), d = y(e, o, c), f = E(c, Y);
2307
- l || u || (d < t || d === t && f < s) && (d > i || d === i && f >= a || (n = o, r = c, i = d, a = f));
2308
- }
2309
- }
2310
- if (n && r) {
2311
- n.points = r;
2312
- continue;
2313
- }
2314
- let o = pe(e);
2315
- if (!o) return;
2316
- for (let [e, t] of o) e.points = t;
2317
- }
2318
- }
2319
- t(et, "resolveRenderedOrthogonalCrossings");
2320
- var tt = .001, nt = 8;
2321
- function rt(e, n) {
2322
- let { nodeInfoById: r, realNodeRects: i } = R(n), a = [
2323
- "top",
2324
- "bottom",
2325
- "left",
2326
- "right"
2327
- ], o = {
2328
- top: Math.min(...i.map((e) => e.rect.top)) - 20,
2329
- bottom: Math.max(...i.map((e) => e.rect.bottom)) + 20,
2330
- left: Math.min(...i.map((e) => e.rect.left)) - 20,
2331
- right: Math.max(...i.map((e) => e.rect.right)) + 20
2332
- }, s = /* @__PURE__ */ t((e, t, n, r) => {
2333
- let i = [], a = ee(e, t, n, r, 20, tt);
2334
- return a && i.push(a), t === r && i.push(L(e, t, n, o[t])), i;
2335
- }, "buildOrthogonalPathCandidates"), c = /* @__PURE__ */ t((e, t) => {
2336
- for (let n = 0; n < e.length - 1; n++) {
2337
- let r = e[n], a = e[n + 1];
2338
- if (B(r, a, i, t, 1)) return !0;
2339
- }
2340
- return !1;
2341
- }, "pathHitsNode"), l = /* @__PURE__ */ t((t, n, r = !1) => {
2342
- let i = 0, a = T(t, tt), o = n.start, s = n.end;
2343
- for (let t of e) {
2344
- if (t === n || t.isLayoutOnly) continue;
2345
- let e = t.start, c = t.end;
2346
- if (!r && o && s && (e === o || e === s || c === o || c === s)) continue;
2347
- let l = t.points;
2348
- if (!(!l || l.length < 2)) for (let e of a) for (let t of T(l, tt)) {
2349
- if (re(e.a, e.b, t.a, t.b, tt, tt)) {
2350
- i++;
2351
- continue;
2352
- }
2353
- w(e, t, tt) >= nt && i++;
2354
- }
2355
- }
2356
- return i;
2357
- }, "pathConflictCount"), u = /* @__PURE__ */ t((e, t) => {
2358
- let n = Math.abs(e.y - t.rect.top), r = Math.abs(e.y - t.rect.bottom), i = Math.abs(e.x - t.rect.left), a = Math.abs(e.x - t.rect.right), o = "top", s = n;
2359
- return r < s && (o = "bottom", s = r), i < s && (o = "left", s = i), a < s && (o = "right", s = a), o;
2360
- }, "nearestSideOfRect"), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ t((e, t, n) => {
2361
- let r = d.get(e) ?? [];
2362
- r.push({
2363
- side: t,
2364
- edgeId: n
2365
- }), d.set(e, r);
2366
- }, "addFaceClaim");
2367
- for (let t of e) {
2368
- if (t.isLayoutOnly) continue;
2369
- let e = t.points ?? [];
2370
- if (e.length < 1) continue;
2371
- let n = t.id ?? "", i = t.start, a = t.end;
2372
- if (i) {
2373
- let t = r.get(i);
2374
- t && f(i, u(e[0], t), n);
2375
- }
2376
- if (a) {
2377
- let t = r.get(a);
2378
- t && f(a, u(e[e.length - 1], t), n);
2379
- }
2380
- }
2381
- let p = /* @__PURE__ */ t((e, t, n) => d.get(e)?.some((e) => e.edgeId !== n && e.side === t) ?? !1, "faceIsClaimed");
2382
- for (let t of e) {
2383
- if (t.isLayoutOnly) continue;
2384
- let e = t.points;
2385
- if (!e || e.length < 2) continue;
2386
- let n = E(e, tt);
2387
- if (n < 4) continue;
2388
- let i = t.start, o = t.end;
2389
- if (!i || !o) continue;
2390
- let m = r.get(i), h = r.get(o);
2391
- if (!m || !h) continue;
2392
- let g = t.id ?? "", _ = l(e, t, !0), v = l(e, t), y, b = _, x = n;
2393
- for (let e of a) {
2394
- if (p(i, e, g)) continue;
2395
- let n = I(m, e);
2396
- for (let r of a) {
2397
- if (p(o, r, g)) continue;
2398
- let a = I(h, r);
2399
- for (let u of s(n, e, a, r)) {
2400
- if (c(u, [i, o])) continue;
2401
- let e = E(u, tt);
2402
- if (_ > 0) {
2403
- let n = l(u, t, !0);
2404
- if (n > b || n === b && e >= x) continue;
2405
- b = n, x = e, y = u;
2406
- continue;
2407
- }
2408
- l(u, t) > v || e < x && (x = e, y = u);
2409
- }
2410
- }
2411
- }
2412
- if (y) {
2413
- t.points = y;
2414
- let e = d.get(i);
2415
- e && d.set(i, e.filter((e) => e.edgeId !== g));
2416
- let n = d.get(o);
2417
- n && d.set(o, n.filter((e) => e.edgeId !== g)), f(i, u(y[0], m), g), f(o, u(y[y.length - 1], h), g);
2418
- }
2419
- }
2420
- }
2421
- t(rt, "simplifyDetouredEdges");
2422
- var Q = .001, it = 10, at = 7;
2423
- function ot(e, t) {
2424
- let n = t ? 0 : e.length - 1, r = t ? 1 : -1, i = e[n], a = e[n + r];
2425
- if (!i || !a) return;
2426
- let o = a.x - i.x, s = a.y - i.y;
2427
- if (!(Math.abs(o) + Math.abs(s) < Q)) {
2428
- if (Math.abs(s) <= Q) {
2429
- let e = i.x + Math.sign(o) * it;
2430
- return {
2431
- left: Math.min(i.x, e),
2432
- right: Math.max(i.x, e),
2433
- top: i.y - at,
2434
- bottom: i.y + at
2435
- };
2436
- }
2437
- if (Math.abs(o) <= Q) {
2438
- let e = i.y + Math.sign(s) * it;
2439
- return {
2440
- left: i.x - at,
2441
- right: i.x + at,
2442
- top: Math.min(i.y, e),
2443
- bottom: Math.max(i.y, e)
2444
- };
2445
- }
2446
- return {
2447
- left: Math.min(i.x, a.x),
2448
- right: Math.max(i.x, a.x),
2449
- top: Math.min(i.y, a.y),
2450
- bottom: Math.max(i.y, a.y)
2451
- };
2452
- }
2453
- }
2454
- t(ot, "markerClearanceRectFor");
2455
- function st(e) {
2456
- return {
2457
- left: Math.min(e.left, e.right),
2458
- right: Math.max(e.left, e.right),
2459
- top: Math.min(e.top, e.bottom),
2460
- bottom: Math.max(e.top, e.bottom)
2461
- };
2462
- }
2463
- t(st, "normalizeRect");
2464
- function ct(e, t) {
2465
- let n = D(t);
2466
- return [ot(n, !0), ot(n, !1)].some((t) => t && M(e, st(t)));
2467
- }
2468
- t(ct, "labelOverlapsOwnMarker");
2469
- function lt(e, n) {
2470
- let r = [];
2471
- for (let t of e) {
2472
- if (t.isLayoutOnly) continue;
2473
- let e = t.points;
2474
- if (!(!e || e.length < 2)) for (let n = 0; n < e.length - 1; n++) r.push({
2475
- edgeId: t.id,
2476
- p1: e[n],
2477
- p2: e[n + 1]
2478
- });
2479
- }
2480
- let i = [], a = [];
2481
- for (let e of n.values()) {
2482
- let t = e.isGroup, n = e.parentId;
2483
- if (t && !n) {
2484
- let t = F(e);
2485
- t && a.push({
2486
- id: e.id,
2487
- rect: t
2488
- });
2489
- continue;
2490
- }
2491
- if (t || e.isEdgeLabel) continue;
2492
- let r = F(e);
2493
- r && i.push({
2494
- nodeId: e.id,
2495
- rect: r
2496
- });
2497
- }
2498
- let o = /* @__PURE__ */ t((e, t) => {
2499
- let n = N(t, 3);
2500
- for (let { nodeId: t, rect: r } of i) if (t !== e && M(n, r)) return !0;
2501
- return !1;
2502
- }, "labelOverlapsForeignNode"), s = /* @__PURE__ */ t((e, t) => {
2503
- let n = N(t, 3);
2504
- for (let t of r) if (t.edgeId !== e && k(t.p1, t.p2, n)) return !0;
2505
- return !1;
2506
- }, "labelOverlapsForeignEdge"), c = /* @__PURE__ */ t((e, t, n) => o(e, n) || s(t, n), "labelOverlapsAnything"), l = [], u = /* @__PURE__ */ t((e) => {
2507
- for (let { id: t, rect: n } of a) if (j(n, e)) return t;
2508
- }, "findContainingLane"), d = /* @__PURE__ */ t((e, t) => l.some((n) => n.labelId !== e && M(t, n.rect)), "overlapsPlacedLabel");
2509
- for (let r of e) {
2510
- if (r.isLayoutOnly) continue;
2511
- let e = r.labelNodeId;
2512
- if (!e) continue;
2513
- let i = n.get(e);
2514
- if (!i) continue;
2515
- let f = r.points;
2516
- if (!f || f.length < 2) continue;
2517
- let p = i.width ?? 0, m = i.height ?? 0;
2518
- if (p <= 0 || m <= 0) continue;
2519
- let h = [];
2520
- for (let e = 0; e < f.length - 1; e++) {
2521
- let t = f[e], n = f[e + 1], r = Math.abs(t.x - n.x), i = Math.abs(t.y - n.y);
2522
- r < Q && i < Q || r >= Q && i >= Q || h.push({
2523
- idx: e,
2524
- length: r + i,
2525
- orientation: r >= Q ? "horizontal" : "vertical",
2526
- midX: (t.x + n.x) / 2,
2527
- midY: (t.y + n.y) / 2
2528
- });
2529
- }
2530
- if (h.length === 0) continue;
2531
- let g = h.length >= 3 ? h.filter((e) => e.idx > 0 && e.idx < h.length - 1) : h, _ = g.length > 0 ? g : h, v = p >= m ? "horizontal" : "vertical", y = /* @__PURE__ */ t((e) => [...e].sort((e, t) => {
2532
- let n = e.orientation === v;
2533
- if (n !== (t.orientation === v)) return n ? -1 : 1;
2534
- let r = e.length >= (e.orientation === "horizontal" ? p : m) + 2;
2535
- return r === t.length >= (t.orientation === "horizontal" ? p : m) + 2 ? t.length - e.length : r ? -1 : 1;
2536
- }), "rankSegments"), b = h[0], x = h[h.length - 1], S = [
2537
- .5,
2538
- .25,
2539
- .75,
2540
- .05,
2541
- .95,
2542
- .15,
2543
- .85,
2544
- .1,
2545
- .9
2546
- ], C = /* @__PURE__ */ t((e, t) => {
2547
- let n = f[e.idx], r = f[e.idx + 1];
2548
- return {
2549
- midX: n.x + (r.x - n.x) * t,
2550
- midY: n.y + (r.y - n.y) * t
2551
- };
2552
- }, "anchorAtT"), w = /* @__PURE__ */ t((e, t, n) => Math.min(n, Math.max(t, e)), "clamp"), T = /* @__PURE__ */ t((e, t) => e.midX >= t.left - Q && e.midX <= t.right + Q && e.midY >= t.top - Q && e.midY <= t.bottom + Q, "pointInsideRectInclusive"), E = /* @__PURE__ */ t((e) => {
2553
- let t = P(e.midX, e.midY, p, m), n = u(t);
2554
- if (n) return {
2555
- laneId: n,
2556
- anchor: e,
2557
- rect: t
2558
- };
2559
- let r = a.find(({ rect: t }) => T(e, t));
2560
- if (!r) return;
2561
- let i = r.rect.left + p / 2 + 1, o = r.rect.right - p / 2 - 1, s = r.rect.top + m / 2 + 1, c = r.rect.bottom - m / 2 - 1;
2562
- if (i > o || s > c) return;
2563
- let l = {
2564
- midX: w(e.midX, i, o),
2565
- midY: w(e.midY, s, c)
2566
- }, d = P(l.midX, l.midY, p, m);
2567
- return T(e, d) ? {
2568
- laneId: r.id,
2569
- anchor: l,
2570
- rect: d
2571
- } : void 0;
2572
- }, "placementForAnchor"), D = /* @__PURE__ */ t((e, t, n) => e.orientation === "horizontal" ? Math.abs(t.midX - n.x) : Math.abs(t.midY - n.y), "distanceAlongSegment"), O = /* @__PURE__ */ t((e, t) => {
2573
- let n = (e.orientation === "horizontal" ? p / 2 : m / 2) + 12;
2574
- if (e === b) {
2575
- let r = f[e.idx];
2576
- if (D(e, t, r) + Q < n) return !1;
2577
- }
2578
- if (e === x) {
2579
- let r = f[e.idx + 1];
2580
- if (D(e, t, r) + Q < n) return !1;
2581
- }
2582
- return !0;
2583
- }, "labelClearsTerminalEndpoints"), k = /* @__PURE__ */ t((t) => {
2584
- let n = y(t);
2585
- for (let t of n) for (let n of S) {
2586
- let i = C(t, n);
2587
- if (!O(t, i)) continue;
2588
- let a = E(i);
2589
- if (a && !ct(a.rect, f) && !d(e, a.rect) && !c(e, r.id, a.rect)) return {
2590
- laneId: a.laneId,
2591
- anchor: a.anchor
2592
- };
2593
- }
2594
- }, "tryPool"), A = /* @__PURE__ */ t((t, n, i = !1) => {
2595
- let a = y(t);
2596
- for (let t of a) {
2597
- let a = {
2598
- midX: t.midX,
2599
- midY: t.midY
2600
- };
2601
- if (n && !O(t, a)) continue;
2602
- let c = E(a);
2603
- if (c && !ct(c.rect, f) && !d(e, c.rect) && !o(e, c.rect) && (i || !s(r.id, c.rect))) return {
2604
- laneId: c.laneId,
2605
- anchor: c.anchor
2606
- };
2607
- }
2608
- }, "findLaneContainingFallback"), j = k(_) ?? (_.length < h.length ? k(h) : void 0) ?? A(h, !0) ?? A(h, !1) ?? A(h, !1, !0);
2609
- if (j) {
2610
- i.x = j.anchor.midX, i.y = j.anchor.midY, i.parentId = j.laneId;
2611
- let t = P(j.anchor.midX, j.anchor.midY, p, m), n = l.findIndex((t) => t.labelId === e);
2612
- n >= 0 ? l[n] = {
2613
- labelId: e,
2614
- rect: t
2615
- } : l.push({
2616
- labelId: e,
2617
- rect: t
2618
- });
2619
- }
2620
- }
2621
- }
2622
- t(lt, "anchorLabelsToPolyline");
2623
- var ut = 1e-6, dt = 8 / 2, ft = 3;
2624
- function pt(e, t) {
2625
- return e < t ? `${e}::${t}` : `${t}::${e}`;
2626
- }
2627
- t(pt, "pairKey");
2628
- function mt(e, n) {
2629
- let { nodeInfoById: r, realNodeRects: i } = R(n), a = /* @__PURE__ */ new Map();
2630
- for (let e of n) {
2631
- let t = e.id;
2632
- if (!e.isGroup && e.isEdgeLabel) {
2633
- a.set(t, {
2634
- w: e.width ?? 0,
2635
- h: e.height ?? 0
2636
- });
2637
- continue;
2638
- }
2639
- }
2640
- let o = /* @__PURE__ */ t((n, r, i, o) => {
2641
- let s = pt(r, i), c = 0, l = /* @__PURE__ */ t((e) => {
2642
- if (!e) return;
2643
- let t = a.get(e);
2644
- if (!t) return;
2645
- let n = o === "x" ? t.w / 2 : t.h / 2;
2646
- n > c && (c = n);
2647
- }, "consider");
2648
- l(n.labelNodeId);
2649
- for (let t of e) {
2650
- if (t === n || t.isLayoutOnly) continue;
2651
- let e = t.start, r = t.end;
2652
- !e || !r || pt(e, r) === s && l(t.labelNodeId);
2653
- }
2654
- return c > 0 ? c + ft : 0;
2655
- }, "labelClearanceFor");
2656
- for (let t of e) {
2657
- if (t.isLayoutOnly) continue;
2658
- let n = t.points;
2659
- if (!O(n, ut)) continue;
2660
- let a = ne(t, r, ut);
2661
- if (!a) continue;
2662
- let { srcId: s, dstId: c, srcInfo: l, dstInfo: u, collinearX: d, collinearY: f } = a;
2663
- if (d === f) continue;
2664
- let p, m;
2665
- if (d) {
2666
- let e = u.cy > l.cy;
2667
- p = {
2668
- x: l.cx,
2669
- y: e ? l.rect.bottom : l.rect.top
2670
- }, m = {
2671
- x: u.cx,
2672
- y: e ? u.rect.top : u.rect.bottom
2673
- };
2674
- } else {
2675
- let e = u.cx > l.cx;
2676
- p = {
2677
- x: e ? l.rect.right : l.rect.left,
2678
- y: l.cy
2679
- }, m = {
2680
- x: e ? u.rect.left : u.rect.right,
2681
- y: u.cy
2682
- };
2683
- }
2684
- if (B(p, m, i, [s, c], 1)) continue;
2685
- let h = o(t, s, c, d ? "x" : "y"), g = h > dt ? h : dt, _ = [
2686
- 0,
2687
- g,
2688
- -g
2689
- ];
2690
- for (let n of _) {
2691
- let r = { ...p }, a = { ...m };
2692
- if (d) {
2693
- if (r.x += n, a.x += n, r.x <= l.rect.left || r.x >= l.rect.right || a.x <= u.rect.left || a.x >= u.rect.right) continue;
2694
- } else if (r.y += n, a.y += n, r.y <= l.rect.top || r.y >= l.rect.bottom || a.y <= u.rect.top || a.y >= u.rect.bottom) continue;
2695
- if (!B(r, a, i, [s, c], 1) && !ae(r, a, e, t, { epsilon: ut })) {
2696
- t.points = [r, a];
2697
- break;
2698
- }
2699
- }
2700
- }
2701
- }
2702
- t(mt, "straightenCollinearSiblingDetours");
2703
- function ht(e, n) {
2704
- let r = .001, { realNodeRects: i, labelNodeRects: a } = z(n.values()), o = /* @__PURE__ */ t((e, t) => T(t, r).map((n) => ({
2705
- ...n,
2706
- edge: e,
2707
- interior: n.index >= 1 && n.index <= t.length - 3
2708
- })), "segmentsFor"), s = /* @__PURE__ */ t(() => {
2709
- let t = [];
2710
- for (let n of e) {
2711
- if (n.isLayoutOnly) continue;
2712
- let e = n.points;
2713
- !e || e.length < 2 || t.push(...o(n, D(e)));
2714
- }
2715
- return t;
2716
- }, "allSegments"), c = /* @__PURE__ */ t((e, t) => e.horizontal && t.horizontal ? C(e.a.x, e.b.x, t.a.x, t.b.x) >= 8 && Math.abs(e.a.y - t.a.y) < 7 : e.vertical && t.vertical ? C(e.a.y, e.b.y, t.a.y, t.b.y) >= 8 && Math.abs(e.a.x - t.a.x) < 7 : !1, "hasCrowdedParallelTrack"), l = /* @__PURE__ */ t((t, n) => {
2717
- let s = t.start, l = t.end, u = o(t, n);
2718
- if (u.length !== n.length - 1) return !1;
2719
- let d = [s, l].filter((e) => !!e), f = t.labelNodeId ? [t.labelNodeId] : [];
2720
- for (let e of u) if (B(e.a, e.b, i, d, -2) || B(e.a, e.b, a, f, -2)) return !1;
2721
- for (let n of e) {
2722
- if (n === t || n.isLayoutOnly) continue;
2723
- let e = n.points;
2724
- if (!(!e || e.length < 2)) {
2725
- for (let t of u) for (let i of o(n, D(e))) if (c(t, i) || V(t.a, t.b, i.a, i.b, r)) return !1;
2726
- }
2727
- }
2728
- return !0;
2729
- }, "candidateIsSafe"), u = /* @__PURE__ */ t((e, t) => {
2730
- let n = D(e.edge.points ?? []);
2731
- if (n.length < 4 || e.index >= n.length - 1) return;
2732
- let r = n.map((e) => ({ ...e }));
2733
- if (e.horizontal) r[e.index].y += t, r[e.index + 1].y += t;
2734
- else if (e.vertical) r[e.index].x += t, r[e.index + 1].x += t;
2735
- else return;
2736
- return o(e.edge, r).length === r.length - 1 ? r : void 0;
2737
- }, "shiftedCandidate"), d = /* @__PURE__ */ t((e, t) => ({
2738
- x: e.x ?? (t.left + t.right) / 2,
2739
- y: e.y ?? (t.top + t.bottom) / 2
2740
- }), "nodeCenter"), f = /* @__PURE__ */ t((e) => {
2741
- let t = e.edge, r = D(t.points ?? []);
2742
- if (r.length !== 4 || e.index !== 1) return;
2743
- let i = t.start ? n.get(t.start) : void 0, a = t.end ? n.get(t.end) : void 0, o = i ? F(i) : void 0, s = a ? F(a) : void 0, c = r.slice(e.index + 2);
2744
- if (!(!i || !a || !o || !s || c.length === 0)) return {
2745
- sourceCenter: d(i, o),
2746
- targetCenter: d(a, s),
2747
- sourceRect: o,
2748
- tail: c
2749
- };
2750
- }, "sourceDetourContextFor"), p = /* @__PURE__ */ t((e, t, n, i, a, o) => {
2751
- let s = i.y >= n.y, c = s ? a.bottom : a.top, l = c + (s ? 20 : -20);
2752
- if (s && e.b.y <= l + r || !s && e.b.y >= l - r) return;
2753
- let u = e.a.x + t;
2754
- return D([
2755
- {
2756
- x: n.x,
2757
- y: c
2758
- },
2759
- {
2760
- x: n.x,
2761
- y: l
2762
- },
2763
- {
2764
- x: u,
2765
- y: l
2766
- },
2767
- {
2768
- x: u,
2769
- y: e.b.y
2770
- },
2771
- ...o
2772
- ], r);
2773
- }, "verticalSourceDetour"), m = /* @__PURE__ */ t((e, t, n, i, a, o) => {
2774
- let s = i.x >= n.x, c = s ? a.right : a.left, l = c + (s ? 20 : -20);
2775
- if (s && e.b.x <= l + r || !s && e.b.x >= l - r) return;
2776
- let u = e.a.y + t;
2777
- return D([
2778
- {
2779
- x: c,
2780
- y: n.y
2781
- },
2782
- {
2783
- x: l,
2784
- y: n.y
2785
- },
2786
- {
2787
- x: l,
2788
- y: u
2789
- },
2790
- {
2791
- x: e.b.x,
2792
- y: u
2793
- },
2794
- ...o
2795
- ], r);
2796
- }, "horizontalSourceDetour"), h = /* @__PURE__ */ t((e, t) => {
2797
- let n = f(e);
2798
- if (n) {
2799
- if (e.vertical) return p(e, t, n.sourceCenter, n.targetCenter, n.sourceRect, n.tail);
2800
- if (e.horizontal) return m(e, t, n.sourceCenter, n.targetCenter, n.sourceRect, n.tail);
2801
- }
2802
- }, "sourceDetourCandidate"), g = [
2803
- -7,
2804
- 7,
2805
- -14,
2806
- 14,
2807
- -21,
2808
- 21
2809
- ];
2810
- for (let e = 0; e < 12; e++) {
2811
- let e = s(), t = !1;
2812
- for (let n = 0; n < e.length && !t; n++) for (let r = n + 1; r < e.length && !t; r++) {
2813
- let i = e[n], a = e[r];
2814
- if (i.edge === a.edge || !c(i, a)) continue;
2815
- let o = [i, a].filter((e) => e.interior);
2816
- for (let e of o) {
2817
- for (let n of g) {
2818
- let r = u(e, n);
2819
- if (r && l(e.edge, r)) {
2820
- e.edge.points = r, t = !0;
2821
- break;
2822
- }
2823
- let i = h(e, n);
2824
- if (i && l(e.edge, i)) {
2825
- e.edge.points = i, t = !0;
2826
- break;
2827
- }
2828
- }
2829
- if (t) break;
2830
- }
2831
- }
2832
- if (!t) return;
2833
- }
2834
- }
2835
- t(ht, "nudgeSharedInteriorSubpaths");
2836
- function gt(e, t, n, r) {
2837
- let i = t.x - e.x, a = t.y - e.y, o = r.x - n.x, s = r.y - n.y, c = i * s - a * o;
2838
- if (Math.abs(c) < 1e-10) return !1;
2839
- let l = n.x - e.x, u = n.y - e.y, d = (l * s - u * o) / c, f = (l * a - u * i) / c, p = .01;
2840
- return d > p && d < 1 - p && f > p && f < 1 - p;
2841
- }
2842
- t(gt, "segmentsIntersect");
2843
- function _t(t) {
2844
- let n = t.nodes ?? [], r = t.edges ?? [], i = [];
2845
- if (!r.length || !n.length) return i;
2846
- let a = te(n), o = [];
2847
- for (let e of r) {
2848
- if (e.isLayoutOnly) continue;
2849
- let t = e.points;
2850
- if (!t || t.length < 2) continue;
2851
- let n = e.start, r = e.end, s = e.labelNodeId, c = e.id ?? `${n}->${r}`;
2852
- for (let e of a) if (!(e.nodeId === n || e.nodeId === r) && !(s && e.nodeId === s)) {
2853
- for (let n = 0; n < t.length - 1; n++) if (k(t[n], t[n + 1], e, -1)) {
2854
- i.push({
2855
- type: "edge-node-overlap",
2856
- edgeId: c,
2857
- targetId: e.nodeId,
2858
- detail: `segment ${n} passes through node "${e.nodeId}"`
2859
- });
2860
- break;
2861
- }
2862
- }
2863
- for (let e = 0; e < t.length - 1; e++) o.push({
2864
- edgeId: c,
2865
- start: n,
2866
- end: r,
2867
- p1: t[e],
2868
- p2: t[e + 1]
2869
- });
2870
- }
2871
- let s = /* @__PURE__ */ new Set();
2872
- for (let e = 0; e < o.length; e++) for (let t = e + 1; t < o.length; t++) {
2873
- let n = o[e], r = o[t];
2874
- if (n.edgeId !== r.edgeId && !(n.start === r.start || n.start === r.end || n.end === r.start || n.end === r.end) && gt(n.p1, n.p2, r.p1, r.p2)) {
2875
- let e = n.edgeId < r.edgeId ? `${n.edgeId}|${r.edgeId}` : `${r.edgeId}|${n.edgeId}`;
2876
- s.has(e) || (s.add(e), i.push({
2877
- type: "edge-edge-crossing",
2878
- edgeId: n.edgeId,
2879
- targetId: r.edgeId,
2880
- detail: `edges "${n.edgeId}" and "${r.edgeId}" cross`
2881
- }));
2882
- }
2883
- }
2884
- if (i.length > 0) {
2885
- let t = i.filter((e) => e.type === "edge-node-overlap").length, n = i.filter((e) => e.type === "edge-edge-crossing").length;
2886
- e.warn(`[SWIMLANE_VALIDATE] ${i.length} issue(s) detected: ${t} edge-node overlap(s), ${n} edge crossing(s)`);
2887
- for (let t of i) e.warn(`[SWIMLANE_VALIDATE] ${t.type}: ${t.detail}`);
2888
- }
2889
- return i;
2890
- }
2891
- t(_t, "validateSwimlanesLayout");
2892
- function vt(e, n) {
2893
- let r = e.nodes ?? [], i = e.edges ?? [], a = r.filter((e) => !e.isGroup);
2894
- if ((n === "LR" || n === "RL") && a.length > 0 && !Re(e, n) || n === "BT" && a.length > 0 && !Le(e)) return;
2895
- for (let e of i) {
2896
- if (e.isLayoutOnly) continue;
2897
- let t = e.points;
2898
- !t || t.length < 2 || (e.points = G(W(t)));
2899
- }
2900
- rt(i, r), mt(i, r), He(i, r);
2901
- let o = /* @__PURE__ */ new Map();
2902
- for (let e of r) o.set(String(e.id), e);
2903
- lt(i, o), q(i, o), Ue(i, o), ht(i, o), Ke(i, o), qe(i, o), Je(i, o), Ze(i, o);
2904
- let s = /* @__PURE__ */ t(() => {
2905
- et(i, o), Ke(i, o), Qe(i, o), $e(i, o), lt(i, o), ke(i, o), Je(i, o), lt(i, o), ke(i, o);
2906
- }, "finalizeRenderedEdges");
2907
- s(), ht(i, o), s(), Ye(i, o, n), Xe(i, o, n), Ye(i, o, n), Xe(i, o, n);
2908
- }
2909
- t(vt, "postProcessSwimlaneLayout");
2910
- function yt(e) {
2911
- let t = new Map(e.nodeById), n = /* @__PURE__ */ new Set(), r = [];
2912
- for (let i of e.edges) {
2913
- if (!t.has(i.src) || !t.has(i.dst)) continue;
2914
- let e = `${i.id}:${i.src}->${i.dst}`;
2915
- n.has(e) || (n.add(e), r.push(i));
2916
- }
2917
- return {
2918
- nodes: [...t.keys()],
2919
- edges: r,
2920
- layout: e.layout,
2921
- nodeById: t
2922
- };
2923
- }
2924
- t(yt, "normalizeGraph");
2925
- function bt(e, t) {
2926
- return e.edges.filter((e) => e.dst === t);
2927
- }
2928
- t(bt, "incoming");
2929
- function xt(e) {
2930
- let t = /* @__PURE__ */ new Map();
2931
- for (let n of e.nodes) t.set(n, []);
2932
- for (let n of e.edges) t.get(n.src).push(n.dst);
2933
- return t;
2934
- }
2935
- t(xt, "buildSuccessorMap");
2936
- function St(e) {
2937
- let t = xt(e);
2938
- for (let e of t.values()) e.sort((e, t) => e.localeCompare(t));
2939
- return t;
2940
- }
2941
- t(St, "buildSortedSuccessorMap");
2942
- function Ct(e) {
2943
- let t = /* @__PURE__ */ new Map();
2944
- for (let n of e.nodes) t.set(n, 0);
2945
- for (let n of e.edges) t.set(n.dst, (t.get(n.dst) ?? 0) + 1);
2946
- return t;
2947
- }
2948
- t(Ct, "buildInDegreeMap");
2949
- function wt(e, n) {
2950
- let r = [...n.entries()].filter(([, e]) => e === 0).map(([e]) => e).sort((e, t) => e.localeCompare(t)), i = new Set(e.edges.flatMap((e) => [e.src, e.dst])), a = /* @__PURE__ */ t((t) => !i.has(t) && !e.nodeById.get(t)?.isGroup, "isUnconnected"), o = [...n.keys()].filter((e) => n.get(e) === 0 && a(e)), s = 0;
2951
- return r.map((e) => a(e) ? o[s++] : e);
2952
- }
2953
- t(wt, "sortedZeroInDegreeNodes");
2954
- function Tt(e, t = () => !0) {
2955
- let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
2956
- for (let t of e.nodes) n.set(t, []), r.set(t, []);
2957
- for (let i of e.edges) t(i) && (r.get(i.src).push(i.dst), n.get(i.dst).push(i.src));
2958
- return {
2959
- preds: n,
2960
- succs: r
2961
- };
2962
- }
2963
- t(Tt, "buildPredecessorSuccessorMaps");
2964
- function Et(e, t, n, r) {
2965
- let i = 0;
2966
- for (let t of e.nodes) r?.skipGroups && e.nodeById.get(t)?.isGroup || (i = Math.max(i, n[t] ?? 0));
2967
- let a = Array.from({ length: i + 1 }, () => []);
2968
- for (let i of t) r?.skipGroups && e.nodeById.get(i)?.isGroup || a[Math.max(0, n[i] ?? 0)].push(i);
2969
- return a;
2970
- }
2971
- t(Et, "buildLayersFromRanks");
2972
- function Dt(e) {
2973
- let t = Ct(e), n = wt(e, t), r = [], i = St(e);
2974
- for (; n.length;) {
2975
- let e = n.shift();
2976
- r.push(e);
2977
- for (let r of i.get(e) ?? []) if (t.set(r, (t.get(r) ?? 0) - 1), (t.get(r) ?? 0) === 0) {
2978
- let e = 0;
2979
- for (; e < n.length && n[e] < r;) e++;
2980
- n.splice(e, 0, r);
2981
- }
2982
- }
2983
- return r.length === e.nodes.length ? r : null;
2984
- }
2985
- t(Dt, "topoSortIfAcyclic");
2986
- function Ot(e) {
2987
- let t = /* @__PURE__ */ new Map(), n = 0;
2988
- for (let r of e) t.set(r, n), n++;
2989
- return t;
2990
- }
2991
- t(Ot, "buildLayerIndex");
2992
- function kt(e) {
2993
- let n = Array(e.length), r = /* @__PURE__ */ t((t, i) => {
2994
- if (i - t <= 1) return 0;
2995
- let a = t + i >> 1, o = r(t, a) + r(a, i), s = t, c = a, l = t;
2996
- for (; s < a || c < i;) c >= i || s < a && e[s] <= e[c] ? n[l++] = e[s++] : (n[l++] = e[c++], o += a - s);
2997
- for (let r = t; r < i; r++) e[r] = n[r];
2998
- return o;
2999
- }, "count");
3000
- return r(0, e.length);
3001
- }
3002
- t(kt, "countInversions");
3003
- function At(e) {
3004
- let n = yt(e), r = /* @__PURE__ */ new Map();
3005
- for (let e of n.nodes) r.set(e, []);
3006
- for (let e of n.edges) r.get(e.src).push(e);
3007
- for (let e of r.values()) e.sort((e, t) => e.dst === t.dst ? e.id.localeCompare(t.id) : e.dst.localeCompare(t.dst));
3008
- let i = /* @__PURE__ */ Object.create(null);
3009
- for (let e of n.nodes) i[e] = 0;
3010
- let a = [], o = /* @__PURE__ */ t((e) => {
3011
- i[e] = 1;
3012
- for (let t of r.get(e) ?? []) {
3013
- let e = t.dst;
3014
- i[e] === 0 ? o(e) : i[e] === 1 && a.push(t);
3015
- }
3016
- i[e] = 2;
3017
- }, "dfs"), s = Ct(n), c = [...n.nodes.filter((e) => (s.get(e) ?? 0) === 0), ...n.nodes.filter((e) => (s.get(e) ?? 0) !== 0)];
3018
- for (let e of c) i[e] === 0 && o(e);
3019
- let l = new Set(a.map((e) => `${e.id}:${e.src}->${e.dst}`)), u = n.edges.map((e) => l.has(`${e.id}:${e.src}->${e.dst}`) ? {
3020
- id: e.id,
3021
- src: e.dst,
3022
- dst: e.src,
3023
- weight: e.weight,
3024
- ref: e.ref
3025
- } : e);
3026
- return {
3027
- acyclic: {
3028
- nodes: [...n.nodes],
3029
- edges: u,
3030
- layout: n.layout,
3031
- nodeById: new Map(n.nodeById)
3032
- },
3033
- reversed: a
3034
- };
3035
- }
3036
- t(At, "removeCycles_DFS");
3037
- function jt(e) {
3038
- let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ t((t) => {
3039
- if (n.has(t)) return n.get(t);
3040
- let i = e.nodeById.get(t);
3041
- if (!i) return n.set(t, null), null;
3042
- let a = i.parentId;
3043
- if (!a) return n.set(t, null), null;
3044
- let o = r(a) ?? a;
3045
- return n.set(t, o), o;
3046
- }, "resolve");
3047
- for (let t of e.nodes) r(t);
3048
- return n;
3049
- }
3050
- t(jt, "buildTopLaneMap");
3051
- function Mt(e) {
3052
- let t = jt(e);
3053
- return (e) => t.get(e) ?? null;
3054
- }
3055
- t(Mt, "createTopLaneResolver");
3056
- function Nt(e) {
3057
- let t = [];
3058
- for (let n of e.layout.nodes ?? []) n.isGroup && !n.parentId && t.push(n.id);
3059
- return [...new Set(t)].reverse();
3060
- }
3061
- t(Nt, "buildTopLaneOrder");
3062
- function Pt(e, t) {
3063
- let n = Nt(e);
3064
- if (!t || t.length === 0) return n;
3065
- let r = new Set(n), i = /* @__PURE__ */ new Set(), a = [];
3066
- for (let e of t) !r.has(e) || i.has(e) || (i.add(e), a.push(e));
3067
- for (let e of n) i.has(e) || a.push(e);
3068
- return a;
3069
- }
3070
- t(Pt, "resolveTopLaneOrder");
3071
- var Ft = { EPSILON: 1e-6 }, It = {
3072
- GRAVITY_ITERATIONS: 8,
3073
- MAX_CROSSING_OPTIMIZATION_PASSES: 4,
3074
- DEFAULT_COMPACT_SINGLE_INPUT: !0
3075
- }, Lt = {
3076
- DEFAULT_LAYER_GAP: 100,
3077
- DEFAULT_NODE_GAP: 40
3078
- };
3079
- function Rt(e, n) {
3080
- let r = yt(e), i = n?.laneOf ?? (() => null), a = n?.rankHint, { preds: o } = Tt(r);
3081
- for (let e of o.values()) e.sort((e, t) => e.localeCompare(t));
3082
- let s = Dt(r) ?? [...r.nodes].sort((e, t) => e.localeCompare(t)), c = /* @__PURE__ */ new Map();
3083
- for (let [e, t] of s.entries()) c.set(t, e);
3084
- let l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map();
3085
- for (let e of r.nodes) u.set(e, []);
3086
- for (let e of s) {
3087
- let t = (o.get(e) ?? []).filter((e) => l.has(e));
3088
- if (t.length > 0) {
3089
- let n = zt(e, t, {
3090
- laneOf: i,
3091
- rankHint: a,
3092
- topoIndex: c
3093
- });
3094
- l.set(e, n), u.get(n).push(e);
3095
- } else l.has(e) || l.set(e, null);
3096
- }
3097
- for (let e of r.nodes) l.has(e) || l.set(e, null);
3098
- let d = /* @__PURE__ */ new Set();
3099
- for (let e of r.nodes) (l.get(e) ?? null) === null && d.add(e);
3100
- let f = [...d].sort((e, t) => {
3101
- let n = c.get(e) ?? 0, r = c.get(t) ?? 0;
3102
- return n === r ? e.localeCompare(t) : n - r;
3103
- }), p = Bt(r), m = /* @__PURE__ */ new Map();
3104
- for (let [e, t] of p.entries()) m.set(e, [...t].sort((e, t) => e.localeCompare(t)));
3105
- let h = Vt(m), g = Ht(m), _ = /* @__PURE__ */ new Map();
3106
- for (let e of r.nodes) _.set(e, []);
3107
- for (let e of g) for (let t of e.nodes) {
3108
- let n = _.get(t);
3109
- n ? n.push(e.id) : _.set(t, [e.id]);
3110
- }
3111
- let v = [], y = [], b = /* @__PURE__ */ new Set(), x = /* @__PURE__ */ t((e) => {
3112
- if (!b.has(e)) {
3113
- b.add(e), v.push(e);
3114
- for (let t of u.get(e) ?? []) x(t);
3115
- y.push(e);
3116
- }
3117
- }, "walk");
3118
- for (let e of f) x(e);
3119
- for (let e of s) x(e);
3120
- return {
3121
- parent: l,
3122
- children: u,
3123
- roots: f,
3124
- componentOf: h,
3125
- blocks: g,
3126
- nodeBlocks: _,
3127
- adjacency: m,
3128
- preorder: v,
3129
- postorder: y,
3130
- topologicalOrder: s
3131
- };
3132
- }
3133
- t(Rt, "buildDrivingTree");
3134
- function zt(e, t, n) {
3135
- let r = n.laneOf(e);
3136
- return [...t].sort((e, t) => {
3137
- let i = n.laneOf(e), a = n.laneOf(t), o = i != null && i === r;
3138
- if (o !== (a != null && a === r)) return o ? -1 : 1;
3139
- let s = n.rankHint?.[e], c = n.rankHint?.[t];
3140
- if (s != null && c != null && s !== c) return c - s;
3141
- let l = n.topoIndex.get(e) ?? 0, u = n.topoIndex.get(t) ?? 0;
3142
- return l === u ? e.localeCompare(t) : l - u;
3143
- })[0];
3144
- }
3145
- t(zt, "chooseParent");
3146
- function Bt(e) {
3147
- let t = /* @__PURE__ */ new Map();
3148
- for (let n of e.nodes) t.set(n, /* @__PURE__ */ new Set());
3149
- for (let n of e.edges) t.get(n.src).add(n.dst), t.get(n.dst).add(n.src);
3150
- return t;
3151
- }
3152
- t(Bt, "buildAdjacency");
3153
- function Vt(e) {
3154
- let t = /* @__PURE__ */ new Map(), n = 0;
3155
- for (let r of e.keys()) {
3156
- if (t.has(r)) continue;
3157
- let i = [r];
3158
- for (; i.length > 0;) {
3159
- let r = i.pop();
3160
- if (!t.has(r)) {
3161
- t.set(r, n);
3162
- for (let n of e.get(r) ?? []) t.has(n) || i.push(n);
3163
- }
3164
- }
3165
- n++;
3166
- }
3167
- return t;
3168
- }
3169
- t(Vt, "assignComponents");
3170
- function Ht(e) {
3171
- let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = [], a = [], o = 0, s = /* @__PURE__ */ t((t, c) => {
3172
- n.set(t, ++o), r.set(t, o);
3173
- for (let l of e.get(t) ?? []) l !== c && (n.has(l) ? (n.get(l) ?? 0) < (n.get(t) ?? 0) && (i.push([t, l]), r.set(t, Math.min(r.get(t) ?? o, n.get(l) ?? o))) : (i.push([t, l]), s(l, t), r.set(t, Math.min(r.get(t) ?? o, r.get(l) ?? o)), (r.get(l) ?? 0) >= (n.get(t) ?? 0) && a.push(Ut(t, l, i, a.length))));
3174
- }, "visit");
3175
- for (let t of e.keys()) n.has(t) || s(t, null);
3176
- return a;
3177
- }
3178
- t(Ht, "computeBlocks");
3179
- function Ut(e, t, n, r) {
3180
- let i = [], a = /* @__PURE__ */ new Set();
3181
- for (; n.length > 0;) {
3182
- let r = n.pop();
3183
- if (i.push(r), a.add(r[0]), a.add(r[1]), r[0] === e && r[1] === t || r[0] === t && r[1] === e) break;
3184
- }
3185
- return {
3186
- id: r,
3187
- edges: i,
3188
- nodes: [...a]
3189
- };
3190
- }
3191
- t(Ut, "popBlock");
3192
- function Wt(e, n, r) {
3193
- let i = [...e.nodes], a = /* @__PURE__ */ new Map();
3194
- for (let [e, t] of i.entries()) a.set(t, e);
3195
- let o = i.length, s = Array(o).fill(-1), c = Array(o).fill(0), l = [], u = /* @__PURE__ */ new Set();
3196
- for (let e of i) {
3197
- let t = r.parent.get(e) ?? null, n = a.get(e);
3198
- n != null && (t ?? (s[n] = -1, c[n] = 0, u.has(e) || (u.add(e), l.push(e))));
3199
- }
3200
- for (; l.length > 0;) {
3201
- let e = l.shift(), t = a.get(e);
3202
- if (t == null) continue;
3203
- let n = r.children.get(e) ?? [];
3204
- for (let e of n) {
3205
- if (u.has(e)) continue;
3206
- let n = a.get(e);
3207
- n != null && (s[n] = t, c[n] = c[t] + 1, u.add(e), l.push(e));
3208
- }
3209
- }
3210
- for (let e of i) {
3211
- if (u.has(e)) continue;
3212
- let t = a.get(e);
3213
- t != null && (s[t] = -1, c[t] = 0, u.add(e));
3214
- }
3215
- let d = Math.max(1, Math.ceil(Math.log2(Math.max(1, o))) + 1), f = Array.from({ length: d }, () => Array(o).fill(-1));
3216
- for (let e = 0; e < o; e++) f[0][e] = s[e];
3217
- for (let e = 1; e < d; e++) for (let t = 0; t < o; t++) {
3218
- let n = f[e - 1][t];
3219
- f[e][t] = n === -1 ? -1 : f[e - 1][n];
3220
- }
3221
- let p = /* @__PURE__ */ t((e, t) => {
3222
- if (e === -1 || t === -1) return -1;
3223
- c[e] < c[t] && ([e, t] = [t, e]);
3224
- let n = c[e] - c[t];
3225
- for (let t = 0; t < d; t++) if (n >> t & 1 && (e = f[t][e], e === -1)) return -1;
3226
- if (e === t) return e;
3227
- for (let n = d - 1; n >= 0; n--) {
3228
- let r = f[n][e], i = f[n][t];
3229
- r === -1 || i === -1 || r !== i && (e = r, t = i);
3230
- }
3231
- return f[0][e];
3232
- }, "lcaIndex"), m = Array.from({ length: o }, () => /* @__PURE__ */ new Map());
3233
- for (let t of e.edges) {
3234
- let e = t.src, r = t.dst, i = n[e], o = n[r];
3235
- if (i == null || o == null || (i > o && ([e, r] = [r, e], [i, o] = [o, i]), i == null || o == null || i === o)) continue;
3236
- let s = a.get(e), c = a.get(r);
3237
- if (s == null || c == null) continue;
3238
- let l = p(s, c);
3239
- if (l === -1) continue;
3240
- let u = m[l];
3241
- for (let e = i; e < o; e++) u.set(e, (u.get(e) ?? 0) + 1);
3242
- }
3243
- let h = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ t((e, t) => {
3244
- if (t.size !== 0) for (let [n, r] of t) e.set(n, (e.get(n) ?? 0) + r);
3245
- }, "mergeInto"), _ = /* @__PURE__ */ new Set(), v = /* @__PURE__ */ t((e) => {
3246
- let t = a.get(e);
3247
- _.add(e);
3248
- let i = t == null ? void 0 : m[t], o = i ? new Map(i) : /* @__PURE__ */ new Map(), s = r.children.get(e) ?? [];
3249
- for (let t of s) {
3250
- let r = v(t), i = n[e];
3251
- if (i != null) {
3252
- let a = h.get(e);
3253
- a || (a = /* @__PURE__ */ new Map(), h.set(e, a));
3254
- let o = r.get(i) ?? 0, s = n[t];
3255
- s != null && s > i && (o += 1), a.set(t, o);
3256
- }
3257
- g(o, r);
3258
- }
3259
- return o;
3260
- }, "dfs");
3261
- for (let e of r.roots) _.has(e) || v(e);
3262
- for (let e of i) _.has(e) || v(e);
3263
- return h;
3264
- }
3265
- t(Wt, "computeSubtreeCrossCounts");
3266
- function Gt(e, n, r) {
3267
- let i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ t((e) => {
3268
- let t = r[e] ?? 0, o = [...n.get(e) ?? []];
3269
- o.sort(Kt(r));
3270
- for (let e of o) {
3271
- a(e);
3272
- let n = i.get(e);
3273
- n != null && (t = Math.min(t, n));
3274
- }
3275
- i.set(e, t);
3276
- }, "annotate");
3277
- for (let t of e) a(t);
3278
- return i;
3279
- }
3280
- t(Gt, "annotateMinimumLayers");
3281
- function Kt(e) {
3282
- return (t, n) => {
3283
- let r = e[t] ?? 0, i = e[n] ?? 0;
3284
- return r === i ? t.localeCompare(n) : r - i;
3285
- };
3286
- }
3287
- t(Kt, "compareByRankThenId");
3288
- function qt(e, n, r, i) {
3289
- let a = 0;
3290
- for (let e of n) {
3291
- let t = r[e] ?? 0;
3292
- t > a && (a = t);
3293
- }
3294
- let o = Array.from({ length: a + 1 }, () => []), s = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ t((e) => {
3295
- if (s.has(e)) return;
3296
- s.add(e);
3297
- let t = r[e] ?? 0;
3298
- o[t] || (o[t] = []), o[t].push(e);
3299
- for (let t of i(e)) c(t);
3300
- }, "emit");
3301
- for (let t of e) c(t);
3302
- for (let e of n) if (!s.has(e)) {
3303
- let t = r[e] ?? 0;
3304
- o[t] || (o[t] = []), o[t].push(e), s.add(e);
3305
- }
3306
- return o;
3307
- }
3308
- t(qt, "emitNodesInTreeOrder");
3309
- function Jt(e) {
3310
- let t = [];
3311
- for (let n of e) {
3312
- let e = /* @__PURE__ */ new Set(), r = [];
3313
- for (let t of n) e.has(t) || (e.add(t), r.push(t));
3314
- t.push(r);
3315
- }
3316
- return t;
3317
- }
3318
- t(Jt, "deduplicateLayers");
3319
- function Yt(e, t, n, r) {
3320
- return (i) => {
3321
- let a = e.get(i) ?? [];
3322
- if (a.length === 0) return [];
3323
- let o = t[i] ?? 0, s = [], c = [], l = n.get(i);
3324
- for (let e of a) {
3325
- let t = r.get(e) ?? o;
3326
- t > o ? s.push({
3327
- child: e,
3328
- min: t
3329
- }) : c.push(e);
3330
- }
3331
- return s.sort((e, t) => e.min === t.min ? e.child.localeCompare(t.child) : e.min - t.min), c.sort((e, t) => {
3332
- let n = l?.get(e) ?? 0, i = l?.get(t) ?? 0;
3333
- if (n !== i) return n - i;
3334
- let a = r.get(e) ?? o, s = r.get(t) ?? o;
3335
- return a === s ? e.localeCompare(t) : a - s;
3336
- }), [...s.map((e) => e.child), ...c];
3337
- };
3338
- }
3339
- t(Yt, "createChildOrderer");
3340
- function Xt(e, t, n) {
3341
- let r = Rt(e, {
3342
- rankHint: t,
3343
- laneOf: n
3344
- }), { children: i, roots: a } = r;
3345
- for (let t of e.nodes) i.has(t) || i.set(t, []);
3346
- let o = Wt(e, t, r), s = [...a].sort(Kt(t)), c = Yt(i, t, o, Gt(s, i, t)), l = qt(s, e.nodes, t, c);
3347
- return l = Jt(l), l;
3348
- }
3349
- t(Xt, "buildMultitreeLayerOrder");
3350
- function Zt(e, t, n) {
3351
- let r = new Set(e), i = new Set(t), a = Ot(t), o = [];
3352
- for (let e of n) r.has(e.src) && i.has(e.dst) && o.push(a.get(e.dst));
3353
- return kt(o);
3354
- }
3355
- t(Zt, "countCrossingsBetweenAdjacent");
3356
- function Qt(e, t, n) {
3357
- let r = [];
3358
- for (let e of t) {
3359
- let t = n[e.src], i = n[e.dst];
3360
- if (t == null || i == null || t === i) continue;
3361
- let a = e.src, o = e.dst, s = t, c = i;
3362
- t > i && (a = e.dst, o = e.src, s = i, c = t);
3363
- for (let t = s; t < c; t++) r.push({
3364
- id: `${e.id}@${t}`,
3365
- src: a,
3366
- dst: o,
3367
- ref: e.ref
3368
- });
3369
- }
3370
- let i = 0;
3371
- for (let t = 0; t + 1 < e.length; t++) i += Zt(e[t], e[t + 1], r);
3372
- return i;
3373
- }
3374
- t(Qt, "totalCrossings");
3375
- function $t(e, t) {
3376
- let n = { ...t }, { preds: r } = Tt(e), i = Mt(e), a = Qt(Xt(e, n, i), e.edges, n), o = It.MAX_CROSSING_OPTIMIZATION_PASSES;
3377
- for (let t = 0; t < o; t++) {
3378
- let t = !1, o = [...e.nodes].sort((e, t) => (n[t] ?? 0) - (n[e] ?? 0));
3379
- for (let s of o) {
3380
- let o = n[s] ?? 0;
3381
- if (o === 0) continue;
3382
- let c = 0;
3383
- for (let e of r.get(s) ?? []) c = Math.max(c, (n[e] ?? 0) + 1);
3384
- if (c >= o) continue;
3385
- let l = o;
3386
- n[s] = c;
3387
- let u = Qt(Xt(e, n, i), e.edges, n);
3388
- u < a ? (a = u, t = !0) : n[s] = l;
3389
- }
3390
- if (!t) break;
3391
- }
3392
- return n;
3393
- }
3394
- t($t, "optimizeRanksByCrossings");
3395
- function en(e, t) {
3396
- let n = Mt(e), r = [...e.nodes].sort((e, n) => (t[e] ?? 0) - (t[n] ?? 0) || e.localeCompare(n));
3397
- for (let i of r) {
3398
- let r = n(i);
3399
- if (!r) continue;
3400
- let a = e.edges.filter((e) => e.src === i);
3401
- if (a.length === 0) continue;
3402
- let o = !1, s = 0;
3403
- for (let e of a) {
3404
- let t = n(e.dst);
3405
- t == null || t === r ? o = !0 : s++;
3406
- }
3407
- if (s === 0 || o) continue;
3408
- let c = 0, l = !1;
3409
- for (let t of e.edges) {
3410
- if (t.dst !== i) continue;
3411
- let e = n(t.src);
3412
- e && (e === r ? l = !0 : c++);
3413
- }
3414
- if (c > 0 || !l) continue;
3415
- let u = t[i] ?? 0, d = u + s, f = 0;
3416
- for (let n of e.edges) n.dst === i && (f = Math.max(f, (t[n.src] ?? 0) + 1));
3417
- let p = Math.max(u, f, d);
3418
- p !== u && (t[i] = p);
3419
- }
3420
- }
3421
- t(en, "adjustCrossLaneSources");
3422
- function tn(e, t) {
3423
- let n = yt(e), r = Dt(n) ?? [...n.nodes].sort(), i = t?.compactSingleInput ?? !1, a = Mt(n), o = /* @__PURE__ */ Object.create(null);
3424
- for (let e of r) {
3425
- let r = bt(n, e), s = t?.ignoreCrossLaneEdges ? r.filter((t) => {
3426
- let n = a(t.src), r = a(e);
3427
- return !n || !r ? !0 : n === r;
3428
- }) : r;
3429
- if (s.length === 0) o[e] = 0;
3430
- else if (i && s.length === 1) {
3431
- let t = s[0].src;
3432
- a(t) === a(e) ? o[e] = (o[t] ?? 0) + 1 : o[e] = o[t] ?? 0;
3433
- } else {
3434
- let t = -Infinity;
3435
- for (let e of s) t = Math.max(t, (o[e.src] ?? 0) + 1);
3436
- o[e] = t === -Infinity ? 0 : t;
3437
- }
3438
- }
3439
- return (t?.optimizeRanksByCrossings ?? !1) && (o = $t(n, o)), t?.ignoreCrossLaneEdges && en(n, o), {
3440
- layers: Xt(n, o, a),
3441
- rankOf: o,
3442
- dummy: /* @__PURE__ */ new Set()
3443
- };
3444
- }
3445
- t(tn, "assignLayers_LongestPath");
3446
- function nn(e, n) {
3447
- let r = yt(e), i = { ...tn(r, {
3448
- compactSingleInput: n?.compactSingleInput,
3449
- ignoreCrossLaneEdges: n?.ignoreCrossLaneEdges,
3450
- optimizeRanksByCrossings: n?.optimizeRanksByCrossings
3451
- }).rankOf }, a = Mt(r), { preds: o, succs: s } = Tt(r, (e) => {
3452
- if (n?.ignoreCrossLaneEdges) {
3453
- let t = a(e.src), n = a(e.dst);
3454
- if (t && n && t !== n) return !1;
3455
- }
3456
- return !0;
3457
- }), c = Dt(r) ?? [...r.nodes], l = [...c].reverse(), u = /* @__PURE__ */ t((e, t) => {
3458
- let n = 0;
3459
- for (let t of o.get(e) ?? []) n = Math.max(n, (i[t] ?? 0) + 1);
3460
- let r = Infinity, a = s.get(e) ?? [];
3461
- return a.length > 0 && (r = Math.min(...a.map((e) => (i[e] ?? 0) - 1))), Number.isFinite(r) || (r = Math.max(n, t)), Math.min(Math.max(t, n), r);
3462
- }, "clampFeasible"), d = It.GRAVITY_ITERATIONS, f = /* @__PURE__ */ t((e) => {
3463
- let t = !1;
3464
- for (let n of e) {
3465
- let e = o.get(n) ?? [], r = s.get(n) ?? [];
3466
- if (e.length === 0 && r.length === 0) continue;
3467
- let a = e.length > 0 ? e.reduce((e, t) => e + (i[t] ?? 0) + 1, 0) / e.length : i[n] ?? 0, c = r.length > 0 ? r.reduce((e, t) => e + (i[t] ?? 0) - 1, 0) / r.length : i[n] ?? 0, l = u(n, Math.round((a + c) / 2));
3468
- l !== i[n] && (i[n] = l, t = !0);
3469
- }
3470
- return t;
3471
- }, "relaxOrder");
3472
- for (let e = 0; e < d; e++) {
3473
- let e = f(c), t = f(l);
3474
- if (!e && !t) break;
3475
- }
3476
- for (let e of c) {
3477
- let t = 0;
3478
- for (let n of o.get(e) ?? []) t = Math.max(t, (i[n] ?? 0) + 1);
3479
- (i[e] ?? 0) < t && (i[e] = t);
3480
- }
3481
- for (let e of l) {
3482
- let t = s.get(e) ?? [];
3483
- if (t.length > 0) {
3484
- let n = Math.min(...t.map((e) => (i[e] ?? 0) - 1));
3485
- (i[e] ?? 0) > n && (i[e] = n);
3486
- }
3487
- }
3488
- return {
3489
- layers: Et(r, c, i),
3490
- rankOf: i,
3491
- dummy: /* @__PURE__ */ new Set()
3492
- };
3493
- }
3494
- t(nn, "assignLayers_Gravity");
3495
- function rn(e) {
3496
- let t = Ct(e), n = St(e), r = wt(e, t), i = [];
3497
- for (; r.length > 0;) {
3498
- let e = [];
3499
- for (let a of r) {
3500
- i.push(a);
3501
- for (let r of n.get(a) ?? []) t.set(r, (t.get(r) ?? 0) - 1), (t.get(r) ?? 0) === 0 && e.push(r);
3502
- }
3503
- r = e.sort((e, t) => e.localeCompare(t));
3504
- }
3505
- return i.length === e.nodes.length ? i : null;
3506
- }
3507
- t(rn, "topoSortByGenerationIfAcyclic");
3508
- function an(e, n) {
3509
- let r = yt(e), i = n?.direction === "LR" ? rn(r) ?? [...r.nodes].sort() : Dt(r) ?? [...r.nodes].sort(), a = Mt(r), o = /* @__PURE__ */ t((e) => a(e) ?? e, "laneOf"), s = /* @__PURE__ */ Object.create(null), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ t((e, t) => n?.ignoreCrossLaneEdges ?? !0 ? +(o(e) === o(t)) : 1, "edgeWeight");
3510
- for (let e of i) {
3511
- if (r.nodeById.get(e)?.isGroup) continue;
3512
- let t = bt(r, e), n = 0;
3513
- if (t.length > 0) for (let r of t) {
3514
- let t = r.src, i = s[t] ?? 0;
3515
- n = Math.max(n, i + l(t, e));
3516
- }
3517
- let i = o(e), a = c.get(i) ?? 0, u = Math.max(n, a);
3518
- s[e] = u, c.set(i, u + 1);
3519
- }
3520
- return {
3521
- layers: Et(r, i, s, { skipGroups: !0 }),
3522
- rankOf: s,
3523
- dummy: /* @__PURE__ */ new Set()
3524
- };
3525
- }
3526
- t(an, "assignLayers_LaneAwareCompact");
3527
- function on(e, n) {
3528
- let r = yt(n), { rankOf: i } = e, a = e.layers.map((e) => [...e]), o = new Set(e.dummy ? [...e.dummy] : []), s = 0, c = new Map(r.nodeById), l = /* @__PURE__ */ t((e) => {
3529
- let t = `placeholder-${s++}`, n = {
3530
- id: t,
3531
- isGroup: !1,
3532
- isDummy: !0,
3533
- width: 0,
3534
- height: 0
3535
- };
3536
- for (c.set(t, n), o.add(t); a.length <= e;) a.push([]);
3537
- return a[e].push(t), i[t] = e, t;
3538
- }, "addDummyAt"), u = [...r.edges].sort((e, t) => e.id === t.id ? e.src === t.src ? e.dst.localeCompare(t.dst) : e.src.localeCompare(t.src) : e.id.localeCompare(t.id)), d = [];
3539
- for (let e of u) {
3540
- let t = i[e.src] ?? 0, n = i[e.dst] ?? 0;
3541
- if (n - t <= 1) {
3542
- d.push(e);
3543
- continue;
3544
- }
3545
- let r = e.src;
3546
- for (let i = t + 1, a = 0; i < n; i++, a++) {
3547
- let t = l(i);
3548
- d.push({
3549
- id: `${e.id}#${a}`,
3550
- src: r,
3551
- dst: t,
3552
- weight: e.weight,
3553
- ref: e.ref
3554
- }), r = t;
3555
- }
3556
- let a = n - t - 2;
3557
- d.push({
3558
- id: `${e.id}#${Math.max(a + 1, 0)}`,
3559
- src: r,
3560
- dst: e.dst,
3561
- weight: e.weight,
3562
- ref: e.ref
3563
- });
3564
- }
3565
- let f = {
3566
- nodes: [...r.nodes, ...[...o].filter((e) => !r.nodes.includes(e))],
3567
- edges: d,
3568
- layout: r.layout,
3569
- nodeById: c
3570
- };
3571
- return {
3572
- layering: {
3573
- layers: a,
3574
- rankOf: i,
3575
- dummy: o
3576
- },
3577
- graphWithDummies: f
3578
- };
3579
- }
3580
- t(on, "makeProperLayering");
3581
- function sn(e) {
3582
- let t = e.length;
3583
- if (t === 0) return Infinity;
3584
- let n = [...e].sort((e, t) => e - t);
3585
- return t % 2 == 1 ? n[(t - 1) / 2] : .5 * (n[t / 2 - 1] + n[t / 2]);
3586
- }
3587
- t(sn, "median");
3588
- function cn(e) {
3589
- return e.length === 0 ? Infinity : e.reduce((e, t) => e + t, 0) / e.length;
3590
- }
3591
- t(cn, "barycenter");
3592
- function ln(e, t, n, r) {
3593
- let i = /* @__PURE__ */ new Map();
3594
- for (let t of e) i.set(t, []);
3595
- for (let e of n) r === "down" ? t.has(e.src) && i.has(e.dst) && i.get(e.dst).push(t.get(e.src)) : t.has(e.dst) && i.has(e.src) && i.get(e.src).push(t.get(e.dst));
3596
- return i;
3597
- }
3598
- t(ln, "neighborPositionsFor");
3599
- function un(e, t, n) {
3600
- let r = n.get(e) ?? 0, i = n.get(t) ?? 0;
3601
- return r === i ? e.localeCompare(t) : r - i;
3602
- }
3603
- t(un, "currentOrderTieBreak");
3604
- function dn(e, t, n) {
3605
- let r = new Set(e), i = new Set(t), a = Ot(e), o = Ot(t), s = [];
3606
- for (let e of n) r.has(e.src) && i.has(e.dst) && s.push({
3607
- u: a.get(e.src),
3608
- v: o.get(e.dst)
3609
- });
3610
- return s.sort((e, t) => e.u === t.u ? e.v - t.v : e.u - t.u), kt(s.map((e) => e.v));
3611
- }
3612
- t(dn, "countCrossingsBetweenAdjacent");
3613
- function fn(e, t, n) {
3614
- return [...e].sort((e, r) => {
3615
- let i = sn(t.get(e) ?? []), a = sn(t.get(r) ?? []);
3616
- return i === a ? un(e, r, n) : isFinite(i) ? isFinite(a) ? i - a : -1 : 1;
3617
- });
3618
- }
3619
- t(fn, "sortByHeuristic");
3620
- function pn(e, t, n, r, i, a) {
3621
- let o = Ot(e), s = Ot(t), c = ln(t, o, n, r);
3622
- if (!i || !a || a.length === 0) return fn(t, c, s);
3623
- let l = /* @__PURE__ */ new Map();
3624
- for (let e of t) {
3625
- let t = i(e), n = l.get(t) ?? [];
3626
- n.push(e), l.set(t, n);
3627
- }
3628
- let u = [];
3629
- for (let e of a) {
3630
- let t = l.get(e);
3631
- if (!t || t.length === 0) continue;
3632
- let n = fn(t, c, s);
3633
- u.push(...n);
3634
- }
3635
- let d = l.get(null);
3636
- if (d && d.length > 0) {
3637
- let e = fn(d, c, s);
3638
- for (let t of e) {
3639
- let e = cn(c.get(t) ?? []), n = u.length;
3640
- if (isFinite(e)) {
3641
- for (let [t, r] of u.entries()) if (e < cn(c.get(r) ?? [])) {
3642
- n = t;
3643
- break;
3644
- }
3645
- }
3646
- u.splice(n, 0, t);
3647
- }
3648
- }
3649
- return u;
3650
- }
3651
- t(pn, "reorderLayer");
3652
- function mn(e, n, r, i, a) {
3653
- let o = [...n], s = new Set(e), c = new Set(n), l = i ? new Set(i) : null, u = r.filter((e) => s.has(e.src) && c.has(e.dst)), d = l ? r.filter((e) => c.has(e.src) && l.has(e.dst)) : void 0, f = /* @__PURE__ */ t((t) => {
3654
- let n = dn(e, t, u);
3655
- return d && i && (n += dn(t, i, d)), n;
3656
- }, "crossingScore"), p = a ? /* @__PURE__ */ new Map() : null;
3657
- if (a && p) for (let e of n) p.set(e, a(e));
3658
- let m = !0, h = f(o);
3659
- for (; m;) {
3660
- m = !1;
3661
- for (let e = 0; e + 1 < o.length; e++) {
3662
- if (p && p.get(o[e]) !== p.get(o[e + 1])) continue;
3663
- let t = h;
3664
- [o[e], o[e + 1]] = [o[e + 1], o[e]];
3665
- let n = f(o);
3666
- n < t ? (h = n, m = !0) : [o[e], o[e + 1]] = [o[e + 1], o[e]];
3667
- }
3668
- }
3669
- return o;
3670
- }
3671
- t(mn, "transposeImprove");
3672
- function hn(e, t, n) {
3673
- let r = e.layers.map((e) => [...e]), i = t.edges, a = Mt(t), o = Pt(t, n?.laneOrder);
3674
- for (let e = 0; e < 3; e++) {
3675
- for (let e = 1; e < r.length; e++) r[e] = pn(r[e - 1], r[e], i, "down", a, o), r[e] = mn(r[e - 1], r[e], i, r[e + 1], a);
3676
- for (let e = r.length - 2; e >= 0; e--) r[e] = pn(r[e + 1], r[e], i, "up", a, o), r[e] = mn(r[e + 1], r[e], i, r[e - 1], a);
3677
- }
3678
- return { layers: r };
3679
- }
3680
- t(hn, "orderLayers");
3681
- function gn(e, n, r) {
3682
- let i = r?.layerGap ?? Lt.DEFAULT_LAYER_GAP, a = r?.nodeGap ?? Lt.DEFAULT_NODE_GAP, o = r?.laneGap ?? a * 2, s = r?.direction ?? "TB", c = s === "LR" || s === "RL", l = e.layers, u = /* @__PURE__ */ Object.create(null), d = /* @__PURE__ */ Object.create(null), f = /* @__PURE__ */ t((e) => n.nodeById.get(e), "getNode"), p = /* @__PURE__ */ t((e) => f(e)?.width ?? 0, "getWidth"), m = /* @__PURE__ */ t((e) => f(e)?.height ?? 0, "getHeight"), h = Mt(n), g = Pt(n, r?.laneOrder), _ = l.map((e) => e.reduce((e, t) => Math.max(e, m(t)), 0)), v = [];
3683
- if (c) for (let e = 0; e + 1 < l.length; e++) {
3684
- let t = l[e].reduce((e, t) => Math.max(e, p(t)), 0), n = l[e + 1].reduce((e, t) => Math.max(e, p(t)), 0), r = _[e], a = _[e + 1], o = r / 2 + a / 2, s = (t + n) / 2, c = Math.max(0, s - o - i);
3685
- v.push(c);
3686
- }
3687
- let y = /* @__PURE__ */ new Set();
3688
- for (let e of l) for (let t of e) y.add(h(t));
3689
- let b = y.has(null), x = g.filter((e) => y.has(e)), S = [...b ? [null] : [], ...x], C = /* @__PURE__ */ Object.create(null);
3690
- for (let e of x) C[e] = 0;
3691
- b && (C.null = 0);
3692
- for (let e of l) {
3693
- let t = /* @__PURE__ */ Object.create(null), n = [];
3694
- for (let r of e) {
3695
- let e = h(r);
3696
- e === null ? n.push(r) : (t[e] ||= []).push(r);
3697
- }
3698
- for (let [e, n] of Object.entries(t)) {
3699
- let t = n.reduce((e, t) => e + p(t), 0) + a * Math.max(0, n.length - 1);
3700
- C[e] = Math.max(C[e] ?? 0, t);
3701
- }
3702
- if (b && n.length) {
3703
- let e = n.reduce((e, t) => e + p(t), 0) + a * Math.max(0, n.length - 1);
3704
- C.null = Math.max(C.null ?? 0, e);
3705
- }
3706
- }
3707
- let w = /* @__PURE__ */ new Map();
3708
- {
3709
- let e = S.map((e) => (e === null ? C.null : C[e]) ?? 0), t = -(e.reduce((e, t) => e + t, 0) + o * Math.max(0, S.length - 1)) / 2;
3710
- for (let n = 0; n < S.length; n++) {
3711
- let r = S[n], i = e[n] ?? 0, a = t + i / 2;
3712
- w.set(r, a), t += i, n < S.length - 1 && (t += o);
3713
- }
3714
- }
3715
- let T = 0;
3716
- for (let [e, t] of l.entries()) {
3717
- let n = _[e] ?? 0, r = /* @__PURE__ */ new Map();
3718
- for (let e of t) {
3719
- let t = h(e), n = r.get(t) ?? [];
3720
- n.push(e), r.set(t, n);
3721
- }
3722
- for (let e of S) {
3723
- let t = r.get(e) ?? [];
3724
- if (t.length === 0) continue;
3725
- let i = w.get(e);
3726
- if (t.length === 1) {
3727
- let e = t[0];
3728
- u[e] = i, d[e] = T + n / 2;
3729
- } else {
3730
- let e = t.map((e) => p(e)), r = i - (e.reduce((e, t) => e + t, 0) + a * (t.length - 1)) / 2;
3731
- for (let [i, o] of t.entries()) {
3732
- let t = e[i];
3733
- u[o] = r + t / 2, d[o] = T + n / 2, r += t + a;
3734
- }
3735
- }
3736
- }
3737
- let o = v[e] ?? 0;
3738
- T += n + i + o;
3739
- }
3740
- let E = /* @__PURE__ */ new Map();
3741
- for (let e of n.edges) {
3742
- let t = e.ref.id;
3743
- E.has(t) || E.set(t, []), E.get(t).push(e);
3744
- }
3745
- for (let [, e] of E) {
3746
- if (e.length === 0) continue;
3747
- let t = e[0].ref, r = t.start, i = t.end;
3748
- if (r == null || i == null) continue;
3749
- let a = Math.round(((u[r] ?? 0) + (u[i] ?? 0)) / 2), o = /* @__PURE__ */ new Set();
3750
- for (let t of e) o.add(t.src), o.add(t.dst);
3751
- for (let e of o) e === r || e === i || n.nodeById.get(e)?.isDummy && (u[e] = a);
3752
- }
3753
- return {
3754
- x: u,
3755
- y: d
3756
- };
3757
- }
3758
- t(gn, "assignCoordinates");
3759
- var _n = 8;
3760
- function vn(e) {
3761
- let t = 2166136261;
3762
- for (let n = 0; n < e.length; n++) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619);
3763
- return t >>> 0;
3764
- }
3765
- t(vn, "hashString");
3766
- function yn(e) {
3767
- let t = e >>> 0;
3768
- return () => {
3769
- t += 1831565813;
3770
- let e = t;
3771
- return e = Math.imul(e ^ e >>> 15, e | 1), e ^= e + Math.imul(e ^ e >>> 7, e | 61), ((e ^ e >>> 14) >>> 0) / 4294967296;
3772
- };
3773
- }
3774
- t(yn, "mulberry32");
3775
- function bn(e, t) {
3776
- let n = [...e], r = yn(t);
3777
- for (let e = n.length - 1; e > 0; e--) {
3778
- let t = Math.floor(r() * (e + 1));
3779
- [n[e], n[t]] = [n[t], n[e]];
3780
- }
3781
- return n;
3782
- }
3783
- t(bn, "deterministicShuffle");
3784
- function xn(e, t) {
3785
- let n = 0;
3786
- for (let [r, i] of e.entries()) n += Math.abs(r - (t.get(i) ?? r));
3787
- return n;
3788
- }
3789
- t(xn, "sourceDistance");
3790
- function Sn(e, t) {
3791
- let n = /* @__PURE__ */ new Map();
3792
- for (let [t, r] of e.entries()) n.set(r, t);
3793
- let r = 0;
3794
- for (let { a: e, b: i, weight: a } of t) {
3795
- let t = n.get(e), o = n.get(i);
3796
- t == null || o == null || (r += a * Math.abs(t - o));
3797
- }
3798
- return r;
3799
- }
3800
- t(Sn, "laneArrangementCost");
3801
- function Cn(e) {
3802
- let t = Nt(e);
3803
- if (t.length < 2) return [];
3804
- let n = new Map(t.map((e, t) => [e, t])), r = Mt(e), i = /* @__PURE__ */ new Map();
3805
- for (let t of e.layout.edges ?? []) {
3806
- if (t.isLayoutOnly) continue;
3807
- let a = typeof t.start == "string" ? t.start : void 0, o = typeof t.end == "string" ? t.end : void 0;
3808
- if (!a || !o || !e.nodeById.has(a) || !e.nodeById.has(o)) continue;
3809
- let s = r(a), c = r(o);
3810
- if (!s || !c || s === c) continue;
3811
- let l = n.get(s), u = n.get(c);
3812
- if (l == null || u == null) continue;
3813
- let [d, f] = l <= u ? [s, c] : [c, s], p = `${d}\0${f}`, m = i.get(p);
3814
- m ? m.weight++ : i.set(p, {
3815
- a: d,
3816
- b: f,
3817
- weight: 1
3818
- });
3819
- }
3820
- return [...i.values()];
3821
- }
3822
- t(Cn, "buildWeightedLaneEdges");
3823
- function wn(e, t, n) {
3824
- let r = [...e], i = Sn(r, t), a = !0, o = 0, s = Math.max(1, r.length);
3825
- for (; a && o < s;) {
3826
- a = !1, o++;
3827
- for (let e = 0; e + 1 < r.length; e++) {
3828
- [r[e], r[e + 1]] = [r[e + 1], r[e]];
3829
- let n = Sn(r, t);
3830
- n < i ? (i = n, a = !0) : [r[e], r[e + 1]] = [r[e + 1], r[e]];
3831
- }
3832
- }
3833
- return {
3834
- order: r,
3835
- cost: i,
3836
- sourceDistance: xn(r, n)
3837
- };
3838
- }
3839
- t(wn, "greedySwitch");
3840
- function Tn(e, t) {
3841
- return e.cost === t.cost ? e.sourceDistance < t.sourceDistance : e.cost < t.cost;
3842
- }
3843
- t(Tn, "isBetterCandidate");
3844
- function En(e, t, n) {
3845
- let r = [...t].sort((e, t) => e.a === t.a ? e.b.localeCompare(t.b) : e.a.localeCompare(t.a)).map(({ a: e, b: t, weight: n }) => `${e}:${t}:${n}`).join("|");
3846
- return vn(`${e.join("|")}#${r}#${n}`);
3847
- }
3848
- t(En, "seedForRestart");
3849
- function Dn(e, t = {}) {
3850
- let n = Nt(e);
3851
- if (n.length < 2) return n;
3852
- let r = Cn(e);
3853
- if (r.length === 0) return n;
3854
- let i = new Map(n.map((e, t) => [e, t])), a = wn(n, r, i), o = Math.max(0, t.restarts ?? _n);
3855
- for (let e = 0; e < o; e++) {
3856
- let t = wn(bn(n, En(n, r, e)), r, i);
3857
- Tn(t, a) && (a = t);
3858
- }
3859
- return a.order;
3860
- }
3861
- t(Dn, "optimizeTopLaneOrder");
3862
- function On(e, t) {
3863
- let n = t?.ignoreCrossLaneEdges ?? !0, r = t?.optimizeRanksByCrossings ?? !0, i = yt(e), a = t?.automaticLaneOrdering ? Dn(i, { restarts: _n }) : void 0, o = At(i), s = o.acyclic, { layering: c, graphWithDummies: l } = on(n ? an(s, {
3864
- compactSingleInput: t?.compactSingleInput ?? It.DEFAULT_COMPACT_SINGLE_INPUT,
3865
- ignoreCrossLaneEdges: !0,
3866
- direction: t?.direction
3867
- }) : nn(s, {
3868
- compactSingleInput: t?.compactSingleInput ?? It.DEFAULT_COMPACT_SINGLE_INPUT,
3869
- ignoreCrossLaneEdges: !1,
3870
- optimizeRanksByCrossings: r
3871
- }), s), u = hn(c, l, { laneOrder: a }), d = gn(u, l, {
3872
- layerGap: t?.layerGap,
3873
- nodeGap: t?.nodeGap,
3874
- direction: t?.direction,
3875
- laneOrder: a
3876
- });
3877
- return {
3878
- acyclic: s,
3879
- reversed: o.reversed,
3880
- layering: c,
3881
- ordered: u,
3882
- coordinates: d
3883
- };
3884
- }
3885
- t(On, "sugiyamaLayout");
3886
- var $ = Ft.EPSILON, kn = 8, An = 15, jn = 15, Mn = 25, Nn = 20, Pn = 10;
3887
- function Fn(e, t, n) {
3888
- let r = e.x ?? 0, i = e.y ?? 0, a = t.x - r, o = t.y - i, s = Math.abs(a), c = Math.abs(o);
3889
- return s < $ && c < $ ? n : c > $ && c * 3 >= s ? o > 0 ? "bottom" : "top" : s > $ ? a > 0 ? "right" : "left" : n;
3890
- }
3891
- t(Fn, "chooseOrthogonalSide");
3892
- function In(e, t) {
3893
- return Math.abs(e.to - t.from) < $ || Math.abs(e.to - t.to) < $ ? e.to : e.from;
3894
- }
3895
- t(In, "sharedLineEndpointCoord");
3896
- function Ln(e, t) {
3897
- return e.orient === "vertical" ? {
3898
- x: e.coord,
3899
- y: t
3900
- } : {
3901
- x: t,
3902
- y: e.coord
3903
- };
3904
- }
3905
- t(Ln, "pointOnLine");
3906
- function Rn(e, n) {
3907
- let r = e.nodes ?? [], i = e.edges ?? [], a = [];
3908
- for (let e of i) e.isLayoutOnly || a.push({
3909
- ...e,
3910
- __originalEdge: e
3911
- });
3912
- let o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = [], l = n === "LR";
3913
- for (let e of r) o.set(e.id, e);
3914
- let u = r.filter((e) => e.isGroup && !e.parentId);
3915
- for (let e of u) {
3916
- let n = { id: e.id }, i = /* @__PURE__ */ t((e) => {
3917
- s.set(e.id, n), r.filter((t) => t.parentId === e.id).forEach(i);
3918
- }, "assignLane");
3919
- i(e);
3920
- }
3921
- let d = r.filter((e) => !e.isGroup && !e.isEdgeLabel).map((e) => {
3922
- let t = e.width ?? 10, n = e.height ?? 10, r = e.x ?? 0, i = e.y ?? 0, a = kn;
3923
- return {
3924
- nodeId: e.id,
3925
- minX: r - t / 2 - a,
3926
- maxX: r + t / 2 + a,
3927
- minY: i - n / 2 - a,
3928
- maxY: i + n / 2 + a,
3929
- visualXHalfExtent: l ? n / 2 + a : t / 2 + a
3930
- };
3931
- }), f = /* @__PURE__ */ t((e, t, n, r) => {
3932
- let i = c.find((n) => n.orientation === e && Math.abs(n.coord - t) < 1);
3933
- return i || (i = {
3934
- id: `pipe-${e}-${t.toFixed(0)}`,
3935
- orientation: e,
3936
- coord: t,
3937
- spanMin: n,
3938
- spanMax: r,
3939
- tracks: []
3940
- }, c.push(i)), i.spanMin = Math.min(i.spanMin, n), i.spanMax = Math.max(i.spanMax, r), i;
3941
- }, "getOrAddPipe"), p = /* @__PURE__ */ t((e, t) => {
3942
- let n = e.width ?? 10, r = e.height ?? 10, i = e.x ?? 0, a = e.y ?? 0;
3943
- switch (t) {
3944
- case "top": return {
3945
- x: i,
3946
- y: a - r / 2
3947
- };
3948
- case "bottom": return {
3949
- x: i,
3950
- y: a + r / 2
3951
- };
3952
- case "left": return {
3953
- x: i - n / 2,
3954
- y: a
3955
- };
3956
- case "right": return {
3957
- x: i + n / 2,
3958
- y: a
3959
- };
3960
- }
3961
- }, "portForSide"), m = /* @__PURE__ */ t((e, t, n) => p(e, Fn(e, t, n ? "bottom" : "top")), "getOrthogonalPort"), h = [], g = [], _ = /* @__PURE__ */ new Set(), v = 1e3, y = /* @__PURE__ */ t((e, t, n) => {
3962
- if (h.length === 0) return 0;
3963
- let r = Math.abs(t.y - n.y) < $, i = Math.abs(t.x - n.x) < $;
3964
- if (!r && !i) return 0;
3965
- let a = 0;
3966
- if (r) {
3967
- let r = t.y, i = Math.min(t.x, n.x) - $, o = Math.max(t.x, n.x) + $;
3968
- if (o <= i) return 0;
3969
- for (let t of h) t.edgeIndex === e || t.orientation !== "vertical" || t.pipe.coord < i || t.pipe.coord > o || t.from - $ <= r && t.to + $ >= r && (a += v);
3970
- } else if (i) {
3971
- let r = t.x, i = Math.min(t.y, n.y) - $, o = Math.max(t.y, n.y) + $;
3972
- if (o <= i) return 0;
3973
- for (let t of h) t.edgeIndex === e || t.orientation !== "horizontal" || t.pipe.coord < i || t.pipe.coord > o || t.from - $ <= r && t.to + $ >= r && (a += v);
3974
- }
3975
- return a;
3976
- }, "crossingPenalty"), b = a.map((e, t) => {
3977
- if (!e.start || !e.end) return {
3978
- idx: t,
3979
- crossLane: 0,
3980
- dx: 0,
3981
- dy: 0
3982
- };
3983
- let n = o.get(e.start), r = o.get(e.end), i = s.get(e.start), a = s.get(e.end);
3984
- return {
3985
- idx: t,
3986
- crossLane: i && a && i.id !== a.id ? 1 : 0,
3987
- dx: n && r ? Math.abs((r.x ?? 0) - (n.x ?? 0)) : 0,
3988
- dy: n && r ? Math.abs((r.y ?? 0) - (n.y ?? 0)) : 0
3989
- };
3990
- }).sort((e, t) => {
3991
- if (e.crossLane !== t.crossLane) return t.crossLane - e.crossLane;
3992
- let n = e.dx + e.dy, r = t.dx + t.dy;
3993
- return Math.abs(n - r) > 1 ? n - r : e.idx - t.idx;
3994
- }).map((e) => e.idx), x = /* @__PURE__ */ t((e, t, n, r) => {
3995
- let i = Math.min(e.x, t.x), a = Math.max(e.x, t.x), o = Math.min(e.y, t.y), s = Math.max(e.y, t.y);
3996
- return !!d.find((c) => n && c.nodeId === n || r && c.nodeId === r ? !1 : Math.abs(e.x - t.x) > $ ? c.minY < e.y && c.maxY > e.y && c.maxX > i && c.minX < a : c.minX < e.x && c.maxX > e.x && c.maxY > o && c.minY < s);
3997
- }, "isSegmentBlocked"), S = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map();
3998
- for (let e of a) !e.start || !e.end || e.start === e.end || (C.set(e.start, (C.get(e.start) ?? 0) + 1), C.set(e.end, (C.get(e.end) ?? 0) + 1));
3999
- let w = /* @__PURE__ */ t((e, t) => Fn(e, t, "bottom"), "determineSide"), T = /* @__PURE__ */ new Map();
4000
- for (let [e, t] of a.entries()) {
4001
- if (!t.start || !t.end || t.start === t.end || t.points && t.points.length > 0) continue;
4002
- let n = o.get(t.start), r = o.get(t.end);
4003
- if (!n || !r) continue;
4004
- let i = (r.x ?? 0) - (n.x ?? 0), a = (r.y ?? 0) - (n.y ?? 0);
4005
- T.set(e, {
4006
- edgeIdx: e,
4007
- srcId: t.start,
4008
- dstId: t.end,
4009
- srcSide: w(n, {
4010
- x: r.x ?? 0,
4011
- y: r.y ?? 0
4012
- }),
4013
- dstSide: w(r, {
4014
- x: n.x ?? 0,
4015
- y: n.y ?? 0
4016
- }),
4017
- absDx: Math.abs(i),
4018
- absDy: Math.abs(a),
4019
- dxSign: Math.sign(i),
4020
- dySign: Math.sign(a)
4021
- });
4022
- }
4023
- let E = /* @__PURE__ */ t((e) => e.srcSide === "top" || e.srcSide === "bottom" ? e.absDx === 0 ? Infinity : e.absDy / e.absDx : e.absDy === 0 ? Infinity : e.absDx / e.absDy, "preferenceStrength"), D = /* @__PURE__ */ t((e) => e.srcSide === "top" || e.srcSide === "bottom" ? e.dxSign >= 0 ? "right" : "left" : e.dySign >= 0 ? "bottom" : "top", "secondarySide"), O = /* @__PURE__ */ new Map();
4024
- for (let e of T.values()) {
4025
- let t = `${e.srcId}:${e.srcSide}`;
4026
- O.has(t) || O.set(t, []), O.get(t).push(e);
4027
- }
4028
- let k = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ t((e, t) => `${e}:${t}`, "loadKey");
4029
- for (let e of T.values()) k.set(A(e.srcId, e.srcSide), (k.get(A(e.srcId, e.srcSide)) ?? 0) + 1), k.set(A(e.dstId, e.dstSide), (k.get(A(e.dstId, e.dstSide)) ?? 0) + 1);
4030
- for (let e of O.values()) if (!(e.length < 2)) {
4031
- e.sort((e, t) => {
4032
- let n = E(e), r = E(t);
4033
- return Math.abs(n - r) > 1e-9 ? r - n : e.edgeIdx - t.edgeIdx;
4034
- });
4035
- for (let t = 1; t < e.length; t++) {
4036
- let n = e[t], r = D(n), i = k.get(A(n.srcId, n.srcSide)) ?? 0, a = k.get(A(n.srcId, r)) ?? 0;
4037
- a >= i || (k.set(A(n.srcId, n.srcSide), i - 1), k.set(A(n.srcId, r), a + 1), n.srcSide = r);
4038
- }
4039
- }
4040
- let j = /* @__PURE__ */ t((e) => {
4041
- let t = e?.shape;
4042
- return t === "question" || t === "diamond";
4043
- }, "isDiamondNode"), M = /* @__PURE__ */ new Map();
4044
- for (let e of T.values()) M.has(e.dstId) || M.set(e.dstId, /* @__PURE__ */ new Set()), M.get(e.dstId).add(e.dstSide);
4045
- for (let e of T.values()) {
4046
- if (!j(o.get(e.srcId))) continue;
4047
- let t = M.get(e.srcId);
4048
- if (!t?.has(e.srcSide)) continue;
4049
- let n = D(e);
4050
- if (t.has(n) || (k.get(A(e.srcId, n)) ?? 0) > 0) continue;
4051
- let r = k.get(A(e.srcId, e.srcSide)) ?? 0;
4052
- k.set(A(e.srcId, e.srcSide), Math.max(0, r - 1)), k.set(A(e.srcId, n), 1), e.srcSide = n;
4053
- }
4054
- for (let e of T.values()) {
4055
- let { edgeIdx: t, srcId: n, dstId: r, srcSide: i, dstSide: a } = e, s = o.get(n), c = o.get(r), l = `${n}:${i}:src`, u = i === "top" || i === "bottom" ? c.x ?? 0 : c.y ?? 0;
4056
- S.has(l) || S.set(l, []), S.get(l).push({
4057
- edgeIdx: t,
4058
- oppositeCoord: u
4059
- });
4060
- let d = `${r}:${a}:dst`, f = a === "top" || a === "bottom" ? s.x ?? 0 : s.y ?? 0;
4061
- S.has(d) || S.set(d, []), S.get(d).push({
4062
- edgeIdx: t,
4063
- oppositeCoord: f
4064
- });
4065
- }
4066
- let N = /* @__PURE__ */ new Map();
4067
- for (let [e, t] of S) {
4068
- if (t.length < 2) continue;
4069
- t.sort((e, t) => e.oppositeCoord - t.oppositeCoord);
4070
- let n = e.split(":"), r = n.slice(0, -2).join(":"), i = n[n.length - 2], a = n[n.length - 1], s = o.get(r);
4071
- if (!s) continue;
4072
- let c = i === "left" || i === "right" ? s.height ?? 10 : s.width ?? 10, l = s.shape, u = l === "question" || l === "diamond" ? c * .3 : c, d = Math.min(20, Math.max(8, u / (t.length + 1))), f = -(d * (t.length - 1)) / 2;
4073
- for (let [e, n] of t.entries()) {
4074
- let t = f + e * d, r = `${n.edgeIdx}:${a}`;
4075
- N.set(r, t);
4076
- }
4077
- }
4078
- let P = /* @__PURE__ */ t((e) => !!a[e]?.labelNodeId, "edgeHasLabelNode"), F = /* @__PURE__ */ t((e, t) => e ? (S.get(`${e}:${t}:src`) ?? []).some(({ edgeIdx: e }) => P(e)) || (S.get(`${e}:${t}:dst`) ?? []).some(({ edgeIdx: e }) => P(e)) : !1, "faceHasLabelNode"), I = /* @__PURE__ */ t((e, t, n) => t === "top" || t === "bottom" ? {
4079
- x: e.x + n,
4080
- y: e.y
4081
- } : {
4082
- x: e.x,
4083
- y: e.y + n
4084
- }, "applyPortOffset"), ee = /* @__PURE__ */ t((e, t, n) => {
4085
- let r = T.get(e), i = {
4086
- x: n.x ?? 0,
4087
- y: n.y ?? 0
4088
- }, a = {
4089
- x: t.x ?? 0,
4090
- y: t.y ?? 0
4091
- }, o = r?.srcSide ?? w(t, i), s = r?.dstSide ?? w(n, a), c = r ? p(t, r.srcSide) : m(t, i, !0), l = r ? p(n, r.dstSide) : m(n, a, !1), u = N.get(`${e}:src`), d = N.get(`${e}:dst`);
4092
- return u !== void 0 && (c = I(c, o, u)), d !== void 0 && (l = I(l, s, d)), {
4093
- pSrcPort: c,
4094
- pDstPort: l,
4095
- srcSide: o,
4096
- dstSide: s
4097
- };
4098
- }, "portsForEdge");
4099
- for (let e of b) {
4100
- let n = a[e];
4101
- if (g[e] = [], !n.start || !n.end || n.points && n.points.length > 0 || n.start === n.end) continue;
4102
- let r = o.get(n.start), i = o.get(n.end);
4103
- if (!r || !i) continue;
4104
- let { pSrcPort: s, pDstPort: u, srcSide: p, dstSide: m } = ee(e, r, i), v = { ...s }, b = { ...u }, w = p === "top" || p === "bottom", T = m === "top" || m === "bottom";
4105
- w ? v.y = s.y > (r.y ?? 0) ? s.y + Nn : s.y - Nn : v.x = s.x > (r.x ?? 0) ? s.x + Nn : s.x - Nn, T ? b.y = u.y > (i.y ?? 0) ? u.y + Nn : u.y - Nn : b.x = u.x > (i.x ?? 0) ? u.x + Nn : u.x - Nn;
4106
- let E = /* @__PURE__ */ t((e, t) => {
4107
- for (let n of d) if (!t.includes(n.nodeId) && e.x > n.minX && e.x < n.maxX && e.y > n.minY && e.y < n.maxY) return {
4108
- inside: !0,
4109
- obstacle: n
4110
- };
4111
- return { inside: !1 };
4112
- }, "isPointInObstacle"), D = /* @__PURE__ */ t((e, t, n, r, i) => {
4113
- if (i) {
4114
- let i = e.y > (t.y ?? 0);
4115
- return {
4116
- x: (n.x ?? 0) >= e.x ? r.maxX + An : r.minX - An,
4117
- y: i ? r.maxY + jn : r.minY - jn,
4118
- leavesPositiveSide: i
4119
- };
4120
- }
4121
- let a = e.x > (t.x ?? 0), o = (n.y ?? 0) >= e.y;
4122
- return {
4123
- x: a ? r.maxX + An : r.minX - An,
4124
- y: o ? r.maxY + jn : r.minY - jn,
4125
- leavesPositiveSide: a
4126
- };
4127
- }, "obstacleDetour"), O = [], k = [n.start, n.end], A = E(v, k);
4128
- if (A.inside && A.obstacle) {
4129
- let e = A.obstacle;
4130
- if (w) {
4131
- let t = D(s, r, i, e, !0);
4132
- v.x = t.x, v.y = t.y;
4133
- let n = t.leavesPositiveSide ? Math.min(e.minY - 2, s.y + Nn) : Math.max(e.maxY + 2, s.y - Nn);
4134
- O = [
4135
- {
4136
- x: s.x,
4137
- y: n
4138
- },
4139
- {
4140
- x: t.x,
4141
- y: n
4142
- },
4143
- {
4144
- x: t.x,
4145
- y: t.y
4146
- }
4147
- ];
4148
- } else {
4149
- let t = D(s, r, i, e, !1), n = t.leavesPositiveSide ? Math.min(e.minX - 2, s.x + Nn) : Math.max(e.maxX + 2, s.x - Nn);
4150
- v.x = t.x, v.y = t.y, O = [
4151
- {
4152
- x: n,
4153
- y: s.y
4154
- },
4155
- {
4156
- x: n,
4157
- y: t.y
4158
- },
4159
- {
4160
- x: t.x,
4161
- y: t.y
4162
- }
4163
- ];
4164
- }
4165
- }
4166
- let j = [], M = E(b, k);
4167
- if (M.inside && M.obstacle) {
4168
- let e = M.obstacle;
4169
- if (T) {
4170
- let t = D(u, i, r, e, !0);
4171
- b.x = t.x, b.y = t.y, j = [{
4172
- x: t.x,
4173
- y: t.y
4174
- }, {
4175
- x: u.x,
4176
- y: t.y
4177
- }];
4178
- } else {
4179
- let t = D(u, i, r, e, !1);
4180
- b.x = t.x, b.y = t.y, j = [{
4181
- x: t.x,
4182
- y: t.y
4183
- }, {
4184
- x: t.x,
4185
- y: u.y
4186
- }];
4187
- }
4188
- }
4189
- if (O.length === 0 && j.length === 0) {
4190
- let t = An, r = Math.abs(v.x - b.x) < t, i = Math.abs(v.y - b.y) < t, a = N.get(`${e}:src`) !== void 0 || N.get(`${e}:dst`) !== void 0, o = (S.get(`${n.start ?? ""}:${p}:src`)?.length ?? 0) + (S.get(`${n.start ?? ""}:${p}:dst`)?.length ?? 0), c = (S.get(`${n.end ?? ""}:${m}:src`)?.length ?? 0) + (S.get(`${n.end ?? ""}:${m}:dst`)?.length ?? 0), l = o > 1 || c > 1, d = C.get(n.start ?? "") ?? 0, f = C.get(n.end ?? "") ?? 0, g = o > 1 && F(n.start, p) || c > 1 && F(n.end, m);
4191
- if ((r || i) && !a && (!l || l && !g && (o <= 1 || d <= 2) && (c <= 1 || f <= 2)) && !x(s, u, n.start, n.end)) {
4192
- n.points = [
4193
- { ...s },
4194
- { ...v },
4195
- { ...b },
4196
- { ...u }
4197
- ], _.add(e);
4198
- let t = i ? "horizontal" : "vertical", r = i ? s.y : s.x, a = i ? Math.min(s.x, u.x) : Math.min(s.y, u.y), o = i ? Math.max(s.x, u.x) : Math.max(s.y, u.y), c = {
4199
- id: `fast-path-${t}-${r.toFixed(0)}-${e}`,
4200
- orientation: t,
4201
- coord: r,
4202
- spanMin: a,
4203
- spanMax: o,
4204
- tracks: []
4205
- };
4206
- h.push({
4207
- edgeIndex: e,
4208
- segmentIndex: 0,
4209
- orientation: t,
4210
- pipe: c,
4211
- trackIndex: 0,
4212
- from: a,
4213
- to: o
4214
- });
4215
- continue;
4216
- }
4217
- }
4218
- v.x = f("vertical", v.x, v.y, v.y).coord, b.x = f("vertical", b.x, b.y, b.y).coord;
4219
- let P = Math.min(v.x, b.x) - 50, I = Math.max(v.x, b.x) + 50, L = Math.min(v.y, b.y) - 50, R = Math.max(v.y, b.y) + 50;
4220
- for (let e of d) {
4221
- let t = Math.min(v.x, b.x), n = Math.max(v.x, b.x), r = Math.min(v.y, b.y), i = Math.max(v.y, b.y);
4222
- e.minX < n && e.maxX > t && e.minY < i && e.maxY > r && (P = Math.min(P, e.minX - Mn), I = Math.max(I, e.maxX + Mn), L = Math.min(L, e.minY - Mn), R = Math.max(R, e.maxY + Mn));
4223
- }
4224
- for (let e of d) {
4225
- if (e.maxX < P || e.minX > I || e.maxY < L || e.minY > R) continue;
4226
- let t = An;
4227
- f("horizontal", e.minY - t, P, I), f("horizontal", e.maxY + t, P, I);
4228
- let n = jn;
4229
- f("vertical", e.minX - n, L, R), f("vertical", e.maxX + n, L, R);
4230
- }
4231
- f("horizontal", v.y, P, I), f("horizontal", b.y, P, I);
4232
- let z = c.filter((e) => e.orientation === "horizontal" && e.coord >= L && e.coord <= R), te = c.filter((e) => e.orientation === "vertical" && e.coord >= P && e.coord <= I), ne = /* @__PURE__ */ t((e, t) => `${e.toFixed(1)},${t.toFixed(1)}`, "getKey"), B = ne(v.x, v.y), re = ne(b.x, b.y), ie = /* @__PURE__ */ new Map(), ae = /* @__PURE__ */ new Map(), V = /* @__PURE__ */ new Map(), oe = /* @__PURE__ */ new Set(), H = [];
4233
- ie.set(B, 0), V.set(B, "n"), H.push({
4234
- key: B,
4235
- f: Math.hypot(b.x - v.x, b.y - v.y),
4236
- pt: v
4237
- }), oe.add(B);
4238
- let U = [], W = /* @__PURE__ */ t((e, t) => x(e, t, n.start, n.end), "checkSegmentBlocked"), G = {
4239
- x: b.x,
4240
- y: v.y
4241
- }, K = W(v, G), se = W(G, b), ce = K || se, le = {
4242
- x: v.x,
4243
- y: b.y
4244
- }, ue = W(v, le), de = W(le, b);
4245
- if (ce ? ue || de || (U = Math.abs(v.x - b.x) < $ ? [v, b] : [
4246
- v,
4247
- le,
4248
- b
4249
- ]) : U = Math.abs(v.y - b.y) < $ || Math.abs(v.x - b.x) < $ ? [v, b] : [
4250
- v,
4251
- G,
4252
- b
4253
- ], U.length === 0) for (; H.length > 0;) {
4254
- H.sort((e, t) => e.f - t.f);
4255
- let t = H.shift();
4256
- if (oe.delete(t.key), t.key === re) {
4257
- let e = re, t = b;
4258
- for (U = [t]; ae.has(e);) {
4259
- let n = ae.get(e);
4260
- U.unshift(n), t = n, e = ne(n.x, n.y);
4261
- }
4262
- break;
4263
- }
4264
- let r = t.pt.x, i = t.pt.y, a = te.sort((e, t) => e.coord - t.coord), o = a.findIndex((e) => Math.abs(e.coord - r) < 1), s = z.sort((e, t) => e.coord - t.coord), c = s.findIndex((e) => Math.abs(e.coord - i) < 1), l = [];
4265
- o > 0 && l.push({
4266
- x: a[o - 1].coord,
4267
- y: i
4268
- }), o >= 0 && o < a.length - 1 && l.push({
4269
- x: a[o + 1].coord,
4270
- y: i
4271
- }), c > 0 && l.push({
4272
- x: r,
4273
- y: s[c - 1].coord
4274
- }), c >= 0 && c < s.length - 1 && l.push({
4275
- x: r,
4276
- y: s[c + 1].coord
4277
- });
4278
- for (let a of l) {
4279
- let o = Math.min(r, a.x), s = Math.max(r, a.x), c = Math.min(i, a.y), l = Math.max(i, a.y);
4280
- if (d.some((e) => e.nodeId === n.start || e.nodeId === n.end ? !1 : o === s ? e.minX < r && e.maxX > r && e.maxY > c && e.minY < l : e.minY < i && e.maxY > i && e.maxX > o && e.minX < s)) continue;
4281
- let u = ne(a.x, a.y), f = Math.abs(a.x - r) + Math.abs(a.y - i), p = y(e, t.pt, a), m = 0, h = b.x - v.x, g = b.y - v.y, _ = a.x - r, x = a.y - i;
4282
- (g > 10 && x < -5 || g < -10 && x > 5) && (m = Math.abs(x) * 100), (h > 10 && _ < -5 || h < -10 && _ > 5) && (m += Math.abs(_) * 50);
4283
- let S = 0, C = V.get(t.key) ?? "n", w = Math.abs(_) > $ ? "h" : "v";
4284
- C !== "n" && C !== w && (S = 50);
4285
- let T = f + p + m + S, E = (ie.get(t.key) ?? Infinity) + T, D = Math.abs(b.x - a.x) + Math.abs(b.y - a.y);
4286
- if (E < (ie.get(u) ?? Infinity)) if (ae.set(u, t.pt), ie.set(u, E), V.set(u, w), !oe.has(u)) H.push({
4287
- key: u,
4288
- f: E + D,
4289
- pt: a
4290
- }), oe.add(u);
4291
- else {
4292
- let e = H.findIndex((e) => e.key === u);
4293
- e !== -1 && (H[e].f = E + D);
4294
- }
4295
- }
4296
- }
4297
- if (U.length === 0 && (U = [
4298
- v,
4299
- {
4300
- x: v.x,
4301
- y: b.y
4302
- },
4303
- b
4304
- ]), U.length > 4) {
4305
- let e = U[0], n = U[U.length - 1], r = Math.min(e.x, n.x), i = Math.max(e.x, n.x), a = Math.min(e.y, n.y), o = Math.max(e.y, n.y);
4306
- for (let e of U) r = Math.min(r, e.x), i = Math.max(i, e.x), a = Math.min(a, e.y), o = Math.max(o, e.y);
4307
- let s = i > Math.max(e.x, n.x), c = r < Math.min(e.x, n.x);
4308
- if (l) {
4309
- let t = jn;
4310
- if (s) {
4311
- let r = Math.max(e.x, n.x), a = Math.min(e.y, n.y), o = Math.max(e.y, n.y), s = d.filter((e) => e.minX < r && e.maxX > r && e.minY < o && e.maxY > a);
4312
- if (s.length > 0) {
4313
- let r = Math.max(e.x, n.x);
4314
- for (let e of s) {
4315
- let n = (e.minX + e.maxX) / 2;
4316
- if (e.visualXHalfExtent === void 0 || isNaN(e.visualXHalfExtent)) continue;
4317
- let i = n + e.visualXHalfExtent + t;
4318
- r = Math.max(r, i);
4319
- }
4320
- isNaN(r) || (i = r);
4321
- }
4322
- }
4323
- if (c) {
4324
- let i = d.filter((r) => r.minX < Math.min(e.x, n.x) + t && r.minY < Math.max(e.y, n.y) && r.maxY > Math.min(e.y, n.y));
4325
- if (i.length > 0) {
4326
- let a = Math.min(e.x, n.x);
4327
- for (let e of i) {
4328
- let n = (e.minX + e.maxX) / 2 - e.visualXHalfExtent - t;
4329
- a = Math.min(a, n);
4330
- }
4331
- r = a;
4332
- }
4333
- }
4334
- }
4335
- let u = /* @__PURE__ */ t((t) => {
4336
- let r = n.y > e.y, i = d.filter((t) => {
4337
- let r = Math.min(e.x, n.x) < t.maxX && Math.max(e.x, n.x) > t.minX, i = Math.min(e.y, n.y) < t.maxY && Math.max(e.y, n.y) > t.minY;
4338
- return r && i;
4339
- }), a = i;
4340
- if (l && i.length > 0) {
4341
- let e = i.filter((e) => e.minX < t && e.maxX > t);
4342
- e.length > 0 && (a = e);
4343
- }
4344
- if (a.length === 0) return n.y;
4345
- let o = An;
4346
- if (r) {
4347
- let e = Math.max(...a.map((e) => e.maxY)) + o;
4348
- if (e < n.y - $) return e;
4349
- } else {
4350
- let e = Math.min(...a.map((e) => e.minY)) - o;
4351
- if (e > n.y + $) return e;
4352
- }
4353
- return n.y;
4354
- }, "findBestReturnY"), f = /* @__PURE__ */ t((t) => {
4355
- let r = u(t), i = {
4356
- x: t,
4357
- y: e.y
4358
- }, a = {
4359
- x: t,
4360
- y: r
4361
- }, o = {
4362
- x: n.x,
4363
- y: r
4364
- }, s = W(e, i), c = W(i, a), l = W(a, o), d = r === n.y ? !1 : W(o, n);
4365
- return !s && !c && !l && !d ? Math.abs(r - n.y) < $ ? [
4366
- e,
4367
- i,
4368
- a,
4369
- n
4370
- ] : [
4371
- e,
4372
- i,
4373
- a,
4374
- o,
4375
- n
4376
- ] : null;
4377
- }, "trySimplifyWithDetourX"), p = s && !c ? f(i) : c && !s ? f(r) : null;
4378
- p && (U = p);
4379
- }
4380
- let q = [
4381
- s,
4382
- ...O,
4383
- ...U,
4384
- ...j.reverse(),
4385
- u
4386
- ];
4387
- if (q.length >= 3) {
4388
- let e = q[q.length - 1], t = q[q.length - 2], n = q[q.length - 3], r = Math.abs(n.y - t.y) < $ && Math.abs(t.y - e.y) < $, i = Math.abs(n.x - t.x) < $ && Math.abs(t.x - e.x) < $;
4389
- if (r) {
4390
- let r = Math.sign(t.x - n.x), i = Math.sign(e.x - n.x);
4391
- r !== 0 && r === i && Math.abs(t.x - n.x) > Math.abs(e.x - n.x) && q.splice(-2, 1);
4392
- } else if (i) {
4393
- let r = Math.sign(t.y - n.y), i = Math.sign(e.y - n.y);
4394
- r !== 0 && r === i && Math.abs(t.y - n.y) > Math.abs(e.y - n.y) && q.splice(-2, 1);
4395
- }
4396
- }
4397
- let J = [q[0]];
4398
- for (let e = 1; e < q.length - 1; e++) {
4399
- if (e === 1) {
4400
- J.push(q[e]);
4401
- continue;
4402
- }
4403
- let t = J[J.length - 1], n = q[e], r = q[e + 1];
4404
- if (Math.abs(t.y - n.y) < $ && Math.abs(n.y - r.y) < $) {
4405
- if (n.x > t.x != r.x > n.x) {
4406
- J.push(n);
4407
- continue;
4408
- }
4409
- continue;
4410
- }
4411
- if (Math.abs(t.x - n.x) < $ && Math.abs(n.x - r.x) < $) {
4412
- if (n.y > t.y != r.y > n.y) {
4413
- J.push(n);
4414
- continue;
4415
- }
4416
- continue;
4417
- }
4418
- J.push(n);
4419
- }
4420
- J.push(q[q.length - 1]);
4421
- for (let t = 0; t < J.length - 1; t++) {
4422
- let n = J[t], r = J[t + 1], i = Math.abs(n.x - r.x) < $ ? "vertical" : "horizontal", a = i === "vertical" ? n.x : n.y, o = i === "vertical" ? Math.min(n.y, r.y) : Math.min(n.x, r.x), s = i === "vertical" ? Math.max(n.y, r.y) : Math.max(n.x, r.x), c = f(i, a, o, s), l = {
4423
- edgeIndex: e,
4424
- segmentIndex: t,
4425
- orientation: i,
4426
- pipe: c,
4427
- trackIndex: 0,
4428
- from: o,
4429
- to: s
4430
- };
4431
- h.push(l), g[e].push(h.length - 1), c.tracks[0] || (c.tracks[0] = {
4432
- index: 0,
4433
- coord: c.coord,
4434
- segments: []
4435
- }), c.tracks[0].segments.push({
4436
- edgeIndex: e,
4437
- segmentIndex: t,
4438
- from: o,
4439
- to: s
4440
- });
4441
- }
4442
- }
4443
- let L = /* @__PURE__ */ t((e, t) => e.from < t.to && t.from < e.to, "segmentsOverlap"), R = /* @__PURE__ */ t((e, t, n, r) => {
4444
- let i = !r.segments.some((n) => (n.edgeIndex !== t.edgeIndex || n.segmentIndex !== t.segmentIndex) && L(n, e)), a = !n.segments.some((n) => (n.edgeIndex !== e.edgeIndex || n.segmentIndex !== e.segmentIndex) && L(n, t));
4445
- return i && a ? (e.trackIndex = r.index, t.trackIndex = n.index, n.segments = [...n.segments.filter((t) => t.edgeIndex !== e.edgeIndex || t.segmentIndex !== e.segmentIndex), {
4446
- edgeIndex: t.edgeIndex,
4447
- segmentIndex: t.segmentIndex,
4448
- from: t.from,
4449
- to: t.to
4450
- }], r.segments = [...r.segments.filter((e) => e.edgeIndex !== t.edgeIndex || e.segmentIndex !== t.segmentIndex), {
4451
- edgeIndex: e.edgeIndex,
4452
- segmentIndex: e.segmentIndex,
4453
- from: e.from,
4454
- to: e.to
4455
- }], !0) : !1;
4456
- }, "trySwapSegmentsAcrossTracks"), z = /* @__PURE__ */ t((e) => {
4457
- let t = e.tracks.length;
4458
- return e.tracks[t] = {
4459
- index: t,
4460
- coord: e.coord,
4461
- segments: []
4462
- }, t;
4463
- }, "createNewTrack"), te = /* @__PURE__ */ t((e, t) => {
4464
- let n = e.pipe.tracks[e.trackIndex];
4465
- n.segments = n.segments.filter((t) => t.edgeIndex !== e.edgeIndex || t.segmentIndex !== e.segmentIndex), e.trackIndex = t, e.pipe.tracks[t].segments.push({
4466
- edgeIndex: e.edgeIndex,
4467
- segmentIndex: e.segmentIndex,
4468
- from: e.from,
4469
- to: e.to
4470
- });
4471
- }, "moveSegmentToTrack"), ne = /* @__PURE__ */ t((e, t) => {
4472
- let n = g[e.edgeIndex];
4473
- for (let r of n) {
4474
- let n = h[r];
4475
- n.pipe === e.pipe && te(n, t);
4476
- }
4477
- }, "moveSegmentChainToTrack"), B = /* @__PURE__ */ t((e) => {
4478
- let t = g[e.edgeIndex], n = t.indexOf(h.indexOf(e)), r = [];
4479
- return n > 0 && r.push(h[t[n - 1]]), n < t.length - 1 && r.push(h[t[n + 1]]), r;
4480
- }, "getAdjacentSegmentsAlongEdge"), re = /* @__PURE__ */ t((e, t) => {
4481
- if (e.orientation === t.orientation) return !1;
4482
- let n = e.orientation === "horizontal" ? e : t, r = e.orientation === "horizontal" ? t : e;
4483
- return r.pipe.coord > n.from && r.pipe.coord < n.to && n.pipe.coord > r.from && n.pipe.coord < r.to;
4484
- }, "haveAnyCrossing"), ie = /* @__PURE__ */ t((e, t) => {
4485
- for (let n of e.tracks) if (!n.segments.some((e) => (e.edgeIndex !== t.edgeIndex || e.segmentIndex !== t.segmentIndex) && L(e, t))) return n.index;
4486
- return -1;
4487
- }, "findAvailableTrack"), ae = /* @__PURE__ */ t((e, t) => {
4488
- if (e.trackIndex === t.trackIndex) return L(e, t);
4489
- let n = B(e), r = B(t);
4490
- return n.some((e) => r.some((t) => re(e, t)));
4491
- }, "segmentsConflict"), V = /* @__PURE__ */ t((e, t, n) => {
4492
- if (R(e, t, e.pipe.tracks[e.trackIndex], t.pipe.tracks[t.trackIndex])) return;
4493
- let r = ie(e.pipe, t);
4494
- n(t, r === -1 ? z(e.pipe) : r);
4495
- }, "resolveTrackConflict"), oe = /* @__PURE__ */ t((e) => {
4496
- let t = 0;
4497
- for (let n = 0; n < e.length; n++) for (let r = n + 1; r < e.length; r++) {
4498
- let i = e[n], a = e[r];
4499
- i.pipe === a.pipe && ae(i, a) && (t++, V(i, a, ne));
4500
- }
4501
- return t;
4502
- }, "resolveHandleConflicts"), H = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ t((e) => {
4503
- if (H.has(e)) return H.get(e);
4504
- let t = g[e];
4505
- if (t.length === 0) {
4506
- let t = {
4507
- dest: 0,
4508
- deviation: 0,
4509
- base: 0,
4510
- delta: 0
4511
- };
4512
- return H.set(e, t), t;
4513
- }
4514
- let n = h[t[0]].pipe.coord, r = n;
4515
- for (let e = 1; e < t.length; e++) {
4516
- let i = h[t[e]];
4517
- if (i.orientation === "horizontal") {
4518
- let e = i.from, t = i.to;
4519
- r = Math.abs(e - n) > Math.abs(t - n) ? e : t;
4520
- break;
4521
- }
4522
- }
4523
- let i = Math.abs(r - n), a = {
4524
- dest: r,
4525
- deviation: i,
4526
- base: n,
4527
- delta: r - n
4528
- };
4529
- return H.set(e, a), a;
4530
- }, "getDestInfo"), W = /* @__PURE__ */ t(() => {
4531
- let e = 0, n = /* @__PURE__ */ new Map();
4532
- for (let [e, t] of a.entries()) g[e].length !== 0 && t.start && (n.has(t.start) || n.set(t.start, []), n.get(t.start).push(e));
4533
- let r = /* @__PURE__ */ t((e) => {
4534
- let t = a[e];
4535
- if (!t.start || !t.end) return 0;
4536
- let n = o.get(t.start), r = o.get(t.end);
4537
- if (!n || !r) return 0;
4538
- let i = (r.x ?? 0) - (n.x ?? 0), s = (r.y ?? 0) - (n.y ?? 0);
4539
- return Math.abs(i) + Math.abs(s);
4540
- }, "getEdgeDistance");
4541
- for (let t of n.values()) {
4542
- t.sort((e, t) => {
4543
- let n = U(e), i = U(t);
4544
- if (Math.abs(n.deviation - i.deviation) > 1) return n.deviation - i.deviation;
4545
- if (Math.abs(n.dest - i.dest) > 1) return n.dest - i.dest;
4546
- let a = r(e), o = r(t);
4547
- if (Math.abs(a - o) > 1) return o - a;
4548
- let s = g[e].length, c = g[t].length;
4549
- if (s !== c) return s - c;
4550
- if (s === 1) {
4551
- let n = g[e][0], r = g[t][0];
4552
- if (h[n] && h[r]) {
4553
- let e = h[n], t = h[r], i = Math.abs(e.to - e.from), a = Math.abs(t.to - t.from);
4554
- if (Math.abs(i - a) > 1) return i - a;
4555
- }
4556
- }
4557
- return 0;
4558
- });
4559
- let n = t.map((e) => h[g[e][0]]);
4560
- e += oe(n);
4561
- }
4562
- return e;
4563
- }, "fixSourceHandleCrossings"), G = /* @__PURE__ */ t(() => {
4564
- let e = 0, n = /* @__PURE__ */ new Map();
4565
- for (let [e, t] of a.entries()) g[e].length !== 0 && t.end && (n.has(t.end) || n.set(t.end, []), n.get(t.end).push(e));
4566
- for (let r of n.values()) {
4567
- r.sort((e, n) => {
4568
- let r = /* @__PURE__ */ t((e) => {
4569
- let t = g[e];
4570
- if (t.length < 2) return 0;
4571
- let n = h[t[t.length - 2]];
4572
- return Math.abs(n.to - n.from);
4573
- }, "getDist"), i = r(e), a = r(n);
4574
- return Math.abs(i - a) > .1 ? i - a : e - n;
4575
- });
4576
- let n = r.map((e) => h[g[e][g[e].length - 1]]);
4577
- e += oe(n);
4578
- }
4579
- return e;
4580
- }, "fixTargetHandleCrossings"), K = /* @__PURE__ */ t(() => {
4581
- let e = 0;
4582
- for (let t of c) {
4583
- let n = [];
4584
- for (let e of t.tracks) for (let t of e.segments) {
4585
- let e = g[t.edgeIndex].find((e) => h[e].segmentIndex === t.segmentIndex);
4586
- e !== void 0 && n.push(h[e]);
4587
- }
4588
- n.sort((e, t) => e.edgeIndex - t.edgeIndex || e.segmentIndex - t.segmentIndex);
4589
- for (let t = 0; t < n.length; t++) for (let r = t + 1; r < n.length; r++) {
4590
- let i = n[t], a = n[r];
4591
- ae(i, a) && (e++, V(i, a, te));
4592
- }
4593
- }
4594
- return e;
4595
- }, "fixPipeCrossings"), se = 0;
4596
- for (; se < 10;) {
4597
- let e = 0;
4598
- if (e += W(), e += G(), e += K(), e === 0) break;
4599
- se++;
4600
- }
4601
- let ce = /* @__PURE__ */ new Map();
4602
- for (let e of c) {
4603
- let n = [];
4604
- e.tracks.forEach((e) => {
4605
- e.segments.forEach((t) => {
4606
- n.push({
4607
- edgeIndex: t.edgeIndex,
4608
- segmentIndex: t.segmentIndex,
4609
- trackIndex: e.index,
4610
- from: t.from,
4611
- to: t.to
4612
- });
4613
- });
4614
- }), n.sort((e, t) => e.from - t.from);
4615
- let r = [];
4616
- if (n.length > 0) {
4617
- let e = [n[0]], t = n[0].to;
4618
- for (let i = 1; i < n.length; i++) {
4619
- let a = n[i];
4620
- a.from < t ? (e.push(a), t = Math.max(t, a.to)) : (r.push(e), e = [a], t = a.to);
4621
- }
4622
- r.push(e);
4623
- }
4624
- for (let n of r) {
4625
- let r = /* @__PURE__ */ new Set();
4626
- n.forEach((e) => r.add(e.trackIndex));
4627
- let i = /* @__PURE__ */ new Map();
4628
- n.forEach((e) => {
4629
- let t = U(e.edgeIndex);
4630
- i.set(e.trackIndex, (i.get(e.trackIndex) ?? 0) + t.delta);
4631
- });
4632
- let a = [...r].filter((e) => (i.get(e) ?? 0) < -1), o = [...r].filter((e) => (i.get(e) ?? 0) > 1), s = [...r].filter((e) => Math.abs(i.get(e) ?? 0) <= 1);
4633
- a.sort((e, t) => (i.get(t) ?? 0) - (i.get(e) ?? 0)), o.sort((e, t) => (i.get(e) ?? 0) - (i.get(t) ?? 0));
4634
- let c = /* @__PURE__ */ t((t, r) => {
4635
- n.filter((e) => e.trackIndex === t).forEach((t) => {
4636
- let n = _.has(t.edgeIndex) ? e.coord : r;
4637
- ce.set(`${t.edgeIndex}-${t.segmentIndex}`, n);
4638
- });
4639
- }, "assignCoord"), l = 0;
4640
- for (let t of a) l++, c(t, e.coord - l * Pn);
4641
- if (s.length === 0 && r.size > 0) {
4642
- let e = [...r].sort((e, t) => Math.abs(i.get(e) ?? 0) - Math.abs(i.get(t) ?? 0))[0], t = a.indexOf(e);
4643
- t !== -1 && a.splice(t, 1);
4644
- let n = o.indexOf(e);
4645
- n !== -1 && o.splice(n, 1), s.push(e);
4646
- }
4647
- let u = 0;
4648
- for (let t of s) {
4649
- if (u === 0) c(t, e.coord);
4650
- else {
4651
- let n = u % 2 == 1 ? 1 : -1, r = Math.ceil(u / 2);
4652
- c(t, e.coord + n * r * Pn * .5);
4653
- }
4654
- u++;
4655
- }
4656
- let d = 0;
4657
- for (let t of o) d++, c(t, e.coord + d * Pn);
4658
- }
4659
- }
4660
- for (let [e, t] of a.entries()) {
4661
- let n = g[e] ?? [];
4662
- if (n.length === 0) continue;
4663
- let r = [], { pSrcPort: i, pDstPort: a } = ee(e, o.get(t.start), o.get(t.end)), s = n.map((e) => {
4664
- let t = h[e], n = ce.get(`${t.edgeIndex}-${t.segmentIndex}`) ?? t.pipe.coord;
4665
- return {
4666
- orient: t.orientation,
4667
- coord: n,
4668
- from: t.from,
4669
- to: t.to
4670
- };
4671
- });
4672
- r.push(i);
4673
- for (let e = 0; e < s.length; e++) {
4674
- let t = s[e], n = r[r.length - 1], i = t.orient === "vertical" ? n.y : n.x, a = t.orient === "vertical" ? n.x : n.y, o = s[e + 1], c = e < s.length - 1;
4675
- if (Math.abs(a - t.coord) > $ && r.push(Ln(t, i)), c && o.orient === t.orient) if (Math.abs(t.coord - o.coord) > $) {
4676
- let e = t.orient === "vertical" ? (i + o.from) / 2 : In(t, o);
4677
- r.push(Ln(t, e), Ln(o, e));
4678
- } else (e === 0 || e === s.length - 2) && r.push(Ln(t, In(t, o)));
4679
- else if (c) r.push(Ln(t, o.coord));
4680
- else {
4681
- let e = Math.abs(t.from - i) < Math.abs(t.to - i) ? t.to : t.from;
4682
- r.push(Ln(t, e));
4683
- }
4684
- }
4685
- let c = r[r.length - 1];
4686
- (Math.abs(c.x - a.x) > $ || Math.abs(c.y - a.y) > $) && r.push(a);
4687
- let l = [];
4688
- r.length > 0 && l.push(r[0]);
4689
- for (let e = 1; e < r.length; e++) {
4690
- let t = r[e], n = l[l.length - 1];
4691
- (Math.abs(t.x - n.x) > $ || Math.abs(t.y - n.y) > $) && l.push(t);
4692
- }
4693
- t.points = l;
4694
- }
4695
- for (let e of a) {
4696
- let t = e.__originalEdge;
4697
- t && e.points && (t.points = e.points);
4698
- }
4699
- e.edges = (e.edges ?? []).filter((e) => !e.isLayoutOnly);
4700
- let le = /* @__PURE__ */ t((e, t) => {
4701
- let n = t.x ?? 0, r = t.y ?? 0, i = t.width ?? 0, a = t.height ?? 0;
4702
- if (i <= 0 || a <= 0) return e;
4703
- let o = n - i / 2, s = n + i / 2, c = r - a / 2, l = r + a / 2;
4704
- if (e.x < o || e.x > s || e.y < c || e.y > l) return e;
4705
- let u = e.x - o, d = s - e.x, f = e.y - c, p = l - e.y, m = Math.min(u, d, f, p);
4706
- return m === u ? {
4707
- x: o,
4708
- y: e.y
4709
- } : m === d ? {
4710
- x: s,
4711
- y: e.y
4712
- } : m === f ? {
4713
- x: e.x,
4714
- y: c
4715
- } : {
4716
- x: e.x,
4717
- y: l
4718
- };
4719
- }, "nodeBoundaryClamp");
4720
- for (let t of e.edges) {
4721
- let e = t.points;
4722
- if (!e || e.length < 2) continue;
4723
- let n = t.start, r = t.end, i = n ? o.get(n) : void 0, a = r ? o.get(r) : void 0;
4724
- i && (e[0] = le(e[0], i)), a && (e[e.length - 1] = le(e[e.length - 1], a));
4725
- }
4726
- return e;
4727
- }
4728
- t(Rn, "routeEdgesOrthogonal");
4729
- function zn(e) {
4730
- return e.direction ?? "TB";
4731
- }
4732
- t(zn, "getSwimlaneDirection");
4733
- function Bn(e) {
4734
- let t = d(e), n = e.config.flowchart?.nodeSpacing ?? 40, r = e.config.flowchart?.rankSpacing ?? 100, i = e.config.swimlane?.ignoreCrossLaneEdges ?? !0, a = e.config.swimlane?.optimizeRanksByCrossings ?? !0, o = e.config.swimlane?.automaticLaneOrdering ?? !1, s = zn(e), { ordered: c, coordinates: l } = On(t, {
4735
- nodeGap: n,
4736
- layerGap: r,
4737
- ignoreCrossLaneEdges: i,
4738
- optimizeRanksByCrossings: a,
4739
- automaticLaneOrdering: o,
4740
- direction: s
4741
- });
4742
- f(t, c, l, {
4743
- nodeGap: n,
4744
- layerGap: r
4745
- });
4746
- for (let t of e.edges ?? []) delete t.points;
4747
- Rn(e, s);
4748
- for (let t of e.edges ?? []) (!t.curve || t.curve === "basis") && (t.curve = "rounded");
4749
- return vt(e, s), _t(e), s;
4750
- }
4751
- t(Bn, "runSwimlaneLayoutCore");
4752
- function Vn(e) {
4753
- u(e);
4754
- let t = m(e);
4755
- e.nodes = t.nodes, e.edges = t.edges;
4756
- }
4757
- t(Vn, "prepareSwimlaneLayout");
4758
- var Hn = n({
4759
- prepareLayout: Vn,
4760
- runLayoutCore: Bn,
4761
- afterPaint: i
4762
- });
4763
- //#endregion
4764
- export { Hn as render };