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