@smarter.sh/ui-chat 0.7.1 → 0.9.0

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