@aiquants/markdown 1.6.1 → 1.8.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 (237) hide show
  1. package/dist/{abnfDiagram-VRR7QNED-DVICL1SS.cjs → abnfDiagram-VRR7QNED-BKvRUGcR.cjs} +2 -2
  2. package/dist/{abnfDiagram-VRR7QNED-DVICL1SS.cjs.map → abnfDiagram-VRR7QNED-BKvRUGcR.cjs.map} +1 -1
  3. package/dist/{abnfDiagram-VRR7QNED-RZnm_ZZC.js → abnfDiagram-VRR7QNED-C-27Yna6.js} +4 -4
  4. package/dist/{abnfDiagram-VRR7QNED-RZnm_ZZC.js.map → abnfDiagram-VRR7QNED-C-27Yna6.js.map} +1 -1
  5. package/dist/{arc-BmnitkkN.cjs → arc-CUOoCqkh.cjs} +2 -2
  6. package/dist/{arc-BmnitkkN.cjs.map → arc-CUOoCqkh.cjs.map} +1 -1
  7. package/dist/{arc-C-DBDbuo.js → arc-UxDDNW0x.js} +2 -2
  8. package/dist/{arc-C-DBDbuo.js.map → arc-UxDDNW0x.js.map} +1 -1
  9. package/dist/{architectureDiagram-ZJ3FMSHR-_FBgGrSC.js → architectureDiagram-ZJ3FMSHR-Ch5Nf0Ae.js} +3 -3
  10. package/dist/{architectureDiagram-ZJ3FMSHR-_FBgGrSC.js.map → architectureDiagram-ZJ3FMSHR-Ch5Nf0Ae.js.map} +1 -1
  11. package/dist/{architectureDiagram-ZJ3FMSHR-CCAJeMnU.cjs → architectureDiagram-ZJ3FMSHR-kO8dZQKK.cjs} +2 -2
  12. package/dist/{architectureDiagram-ZJ3FMSHR-CCAJeMnU.cjs.map → architectureDiagram-ZJ3FMSHR-kO8dZQKK.cjs.map} +1 -1
  13. package/dist/{blockDiagram-677ZJIJ3-W3Ryiu2c.cjs → blockDiagram-677ZJIJ3-BbjxBeAD.cjs} +2 -2
  14. package/dist/{blockDiagram-677ZJIJ3-W3Ryiu2c.cjs.map → blockDiagram-677ZJIJ3-BbjxBeAD.cjs.map} +1 -1
  15. package/dist/{blockDiagram-677ZJIJ3-CLkOcrVQ.js → blockDiagram-677ZJIJ3-CuCBVVNa.js} +4 -4
  16. package/dist/{blockDiagram-677ZJIJ3-CLkOcrVQ.js.map → blockDiagram-677ZJIJ3-CuCBVVNa.js.map} +1 -1
  17. package/dist/{c4Diagram-LMCZKHZV-FhSkJ7-q.js → c4Diagram-LMCZKHZV-BdJV5ivG.js} +3 -3
  18. package/dist/{c4Diagram-LMCZKHZV-FhSkJ7-q.js.map → c4Diagram-LMCZKHZV-BdJV5ivG.js.map} +1 -1
  19. package/dist/{c4Diagram-LMCZKHZV-B--cDHXw.cjs → c4Diagram-LMCZKHZV-BgTfc_W8.cjs} +2 -2
  20. package/dist/{c4Diagram-LMCZKHZV-B--cDHXw.cjs.map → c4Diagram-LMCZKHZV-BgTfc_W8.cjs.map} +1 -1
  21. package/dist/channel-BaZK7NhX.js +6 -0
  22. package/dist/{channel-B6gYWXtQ.js.map → channel-BaZK7NhX.js.map} +1 -1
  23. package/dist/channel-DcZBUEY6.cjs +2 -0
  24. package/dist/{channel-CZceKK2b.cjs.map → channel-DcZBUEY6.cjs.map} +1 -1
  25. package/dist/{chunk-2Q5K7J3B-CLA9LZQs.js → chunk-2Q5K7J3B-CSlHTmMh.js} +2 -2
  26. package/dist/{chunk-2Q5K7J3B-CLA9LZQs.js.map → chunk-2Q5K7J3B-CSlHTmMh.js.map} +1 -1
  27. package/dist/{chunk-2Q5K7J3B-UoZ4tiIj.cjs → chunk-2Q5K7J3B-D9s6eCoM.cjs} +2 -2
  28. package/dist/{chunk-2Q5K7J3B-UoZ4tiIj.cjs.map → chunk-2Q5K7J3B-D9s6eCoM.cjs.map} +1 -1
  29. package/dist/{chunk-32BRIVSS-CrDpazxa.js → chunk-32BRIVSS-CXH5EQUk.js} +2 -2
  30. package/dist/{chunk-32BRIVSS-CrDpazxa.js.map → chunk-32BRIVSS-CXH5EQUk.js.map} +1 -1
  31. package/dist/{chunk-32BRIVSS-CyUS1-2x.cjs → chunk-32BRIVSS-D2F2B9TZ.cjs} +2 -2
  32. package/dist/{chunk-32BRIVSS-CyUS1-2x.cjs.map → chunk-32BRIVSS-D2F2B9TZ.cjs.map} +1 -1
  33. package/dist/{chunk-5VM5RSS4-DnTlok-Z.js → chunk-5VM5RSS4-BhTMtA9l.js} +2 -2
  34. package/dist/{chunk-5VM5RSS4-DnTlok-Z.js.map → chunk-5VM5RSS4-BhTMtA9l.js.map} +1 -1
  35. package/dist/{chunk-5VM5RSS4-DCM2evxn.cjs → chunk-5VM5RSS4-CxjaLXsB.cjs} +2 -2
  36. package/dist/{chunk-5VM5RSS4-DCM2evxn.cjs.map → chunk-5VM5RSS4-CxjaLXsB.cjs.map} +1 -1
  37. package/dist/{chunk-EX3LRPZG-CDcYLfTb.cjs → chunk-EX3LRPZG-BCQ_eMbL.cjs} +2 -2
  38. package/dist/{chunk-EX3LRPZG-CDcYLfTb.cjs.map → chunk-EX3LRPZG-BCQ_eMbL.cjs.map} +1 -1
  39. package/dist/{chunk-EX3LRPZG-BXZN3BP6.js → chunk-EX3LRPZG-BOcBE4jP.js} +5 -5
  40. package/dist/{chunk-EX3LRPZG-BXZN3BP6.js.map → chunk-EX3LRPZG-BOcBE4jP.js.map} +1 -1
  41. package/dist/{chunk-JWPE2WC7-BOZsBb5v.js → chunk-JWPE2WC7-C20BXRVN.js} +2 -2
  42. package/dist/{chunk-JWPE2WC7-BOZsBb5v.js.map → chunk-JWPE2WC7-C20BXRVN.js.map} +1 -1
  43. package/dist/{chunk-JWPE2WC7-u2Y2E01t.cjs → chunk-JWPE2WC7-CLCAyxUO.cjs} +2 -2
  44. package/dist/{chunk-JWPE2WC7-u2Y2E01t.cjs.map → chunk-JWPE2WC7-CLCAyxUO.cjs.map} +1 -1
  45. package/dist/{chunk-MOJQB5TN-CODLoYka.js → chunk-MOJQB5TN-B_C5dwTy.js} +2 -2
  46. package/dist/{chunk-MOJQB5TN-CODLoYka.js.map → chunk-MOJQB5TN-B_C5dwTy.js.map} +1 -1
  47. package/dist/{chunk-MOJQB5TN-D9XmnzfN.cjs → chunk-MOJQB5TN-Bbpbi357.cjs} +2 -2
  48. package/dist/{chunk-MOJQB5TN-D9XmnzfN.cjs.map → chunk-MOJQB5TN-Bbpbi357.cjs.map} +1 -1
  49. package/dist/{chunk-PUDLZKDR-Vzafz0p_.js → chunk-PUDLZKDR-C0EKSRvH.js} +7 -7
  50. package/dist/{chunk-PUDLZKDR-Vzafz0p_.js.map → chunk-PUDLZKDR-C0EKSRvH.js.map} +1 -1
  51. package/dist/{chunk-PUDLZKDR-DIlJh7gW.cjs → chunk-PUDLZKDR-Cpp-nasK.cjs} +2 -2
  52. package/dist/{chunk-PUDLZKDR-DIlJh7gW.cjs.map → chunk-PUDLZKDR-Cpp-nasK.cjs.map} +1 -1
  53. package/dist/{chunk-RYQCIY6F-D7RgZ_ri.js → chunk-RYQCIY6F-BuIkG6A2.js} +2 -2
  54. package/dist/{chunk-RYQCIY6F-D7RgZ_ri.js.map → chunk-RYQCIY6F-BuIkG6A2.js.map} +1 -1
  55. package/dist/{chunk-RYQCIY6F-BgbNR_-2.cjs → chunk-RYQCIY6F-he5fUSYo.cjs} +2 -2
  56. package/dist/{chunk-RYQCIY6F-BgbNR_-2.cjs.map → chunk-RYQCIY6F-he5fUSYo.cjs.map} +1 -1
  57. package/dist/{chunk-V7JOEXUC-BtRbpCVo.cjs → chunk-V7JOEXUC-BcBXzffo.cjs} +2 -2
  58. package/dist/{chunk-V7JOEXUC-BtRbpCVo.cjs.map → chunk-V7JOEXUC-BcBXzffo.cjs.map} +1 -1
  59. package/dist/{chunk-V7JOEXUC-Csiot9oO.js → chunk-V7JOEXUC-DWnZRQBl.js} +6 -6
  60. package/dist/{chunk-V7JOEXUC-Csiot9oO.js.map → chunk-V7JOEXUC-DWnZRQBl.js.map} +1 -1
  61. package/dist/{chunk-VR4S4FIN-DH6f42Mu.js → chunk-VR4S4FIN-BWCLM0a0.js} +2 -2
  62. package/dist/{chunk-VR4S4FIN-DH6f42Mu.js.map → chunk-VR4S4FIN-BWCLM0a0.js.map} +1 -1
  63. package/dist/{chunk-VR4S4FIN-y0SDmoh2.cjs → chunk-VR4S4FIN-Bd3wwAe8.cjs} +2 -2
  64. package/dist/{chunk-VR4S4FIN-y0SDmoh2.cjs.map → chunk-VR4S4FIN-Bd3wwAe8.cjs.map} +1 -1
  65. package/dist/{chunk-XXDRQBXY-rC42S5QT.cjs → chunk-XXDRQBXY-C2UaLfce.cjs} +2 -2
  66. package/dist/{chunk-XXDRQBXY-rC42S5QT.cjs.map → chunk-XXDRQBXY-C2UaLfce.cjs.map} +1 -1
  67. package/dist/{chunk-XXDRQBXY-Csac6tCf.js → chunk-XXDRQBXY-qt9x9red.js} +2 -2
  68. package/dist/{chunk-XXDRQBXY-Csac6tCf.js.map → chunk-XXDRQBXY-qt9x9red.js.map} +1 -1
  69. package/dist/{classDiagram-OUVF2IWQ-Dd9EcDqY.js → classDiagram-OUVF2IWQ-B0lJPbAq.js} +3 -3
  70. package/dist/{classDiagram-OUVF2IWQ-Dd9EcDqY.js.map → classDiagram-OUVF2IWQ-B0lJPbAq.js.map} +1 -1
  71. package/dist/{classDiagram-OUVF2IWQ-Vq3KKBUy.cjs → classDiagram-OUVF2IWQ-BoGCNSIO.cjs} +2 -2
  72. package/dist/{classDiagram-OUVF2IWQ-Vq3KKBUy.cjs.map → classDiagram-OUVF2IWQ-BoGCNSIO.cjs.map} +1 -1
  73. package/dist/{classDiagram-v2-EOCWNBFH-Dd9EcDqY.js → classDiagram-v2-EOCWNBFH-B0lJPbAq.js} +3 -3
  74. package/dist/{classDiagram-v2-EOCWNBFH-Dd9EcDqY.js.map → classDiagram-v2-EOCWNBFH-B0lJPbAq.js.map} +1 -1
  75. package/dist/{classDiagram-v2-EOCWNBFH-Vq3KKBUy.cjs → classDiagram-v2-EOCWNBFH-BoGCNSIO.cjs} +2 -2
  76. package/dist/{classDiagram-v2-EOCWNBFH-Vq3KKBUy.cjs.map → classDiagram-v2-EOCWNBFH-BoGCNSIO.cjs.map} +1 -1
  77. package/dist/{cose-bilkent-JH36ORCC-BAYFBSur.js → cose-bilkent-JH36ORCC-BXH9dl_0.js} +2 -2
  78. package/dist/{cose-bilkent-JH36ORCC-BAYFBSur.js.map → cose-bilkent-JH36ORCC-BXH9dl_0.js.map} +1 -1
  79. package/dist/{cose-bilkent-JH36ORCC-CsHaaKi1.cjs → cose-bilkent-JH36ORCC-DRBzHIcA.cjs} +2 -2
  80. package/dist/{cose-bilkent-JH36ORCC-CsHaaKi1.cjs.map → cose-bilkent-JH36ORCC-DRBzHIcA.cjs.map} +1 -1
  81. package/dist/{cynefinDiagram-TSTJHNR4-CSZqIj_l.js → cynefinDiagram-TSTJHNR4-2jnqksgG.js} +3 -3
  82. package/dist/{cynefinDiagram-TSTJHNR4-CSZqIj_l.js.map → cynefinDiagram-TSTJHNR4-2jnqksgG.js.map} +1 -1
  83. package/dist/{cynefinDiagram-TSTJHNR4-BEPBV57_.cjs → cynefinDiagram-TSTJHNR4-Ge9B88rS.cjs} +2 -2
  84. package/dist/{cynefinDiagram-TSTJHNR4-BEPBV57_.cjs.map → cynefinDiagram-TSTJHNR4-Ge9B88rS.cjs.map} +1 -1
  85. package/dist/{dagre-VKFMJZFB-D9fBL_yM.js → dagre-VKFMJZFB-BqLynzOx.js} +3 -3
  86. package/dist/{dagre-VKFMJZFB-D9fBL_yM.js.map → dagre-VKFMJZFB-BqLynzOx.js.map} +1 -1
  87. package/dist/{dagre-VKFMJZFB-BlRE-U3S.cjs → dagre-VKFMJZFB-C7QheUvc.cjs} +2 -2
  88. package/dist/{dagre-VKFMJZFB-BlRE-U3S.cjs.map → dagre-VKFMJZFB-C7QheUvc.cjs.map} +1 -1
  89. package/dist/{diagram-FQU43EPY-Di26xB9f.cjs → diagram-FQU43EPY-CSPyECaU.cjs} +2 -2
  90. package/dist/{diagram-FQU43EPY-Di26xB9f.cjs.map → diagram-FQU43EPY-CSPyECaU.cjs.map} +1 -1
  91. package/dist/{diagram-FQU43EPY-DPR8KMs9.js → diagram-FQU43EPY-DUwsAw4u.js} +3 -3
  92. package/dist/{diagram-FQU43EPY-DPR8KMs9.js.map → diagram-FQU43EPY-DUwsAw4u.js.map} +1 -1
  93. package/dist/{diagram-G47NLZAW-71hjWkYs.cjs → diagram-G47NLZAW-BaP0Lyg0.cjs} +2 -2
  94. package/dist/{diagram-G47NLZAW-71hjWkYs.cjs.map → diagram-G47NLZAW-BaP0Lyg0.cjs.map} +1 -1
  95. package/dist/{diagram-G47NLZAW-BfL1Ut0H.js → diagram-G47NLZAW-h09HILJg.js} +4 -4
  96. package/dist/{diagram-G47NLZAW-BfL1Ut0H.js.map → diagram-G47NLZAW-h09HILJg.js.map} +1 -1
  97. package/dist/{diagram-NH7WQ7WH-BjJctDxT.js → diagram-NH7WQ7WH-BE3XRcGY.js} +3 -3
  98. package/dist/{diagram-NH7WQ7WH-BjJctDxT.js.map → diagram-NH7WQ7WH-BE3XRcGY.js.map} +1 -1
  99. package/dist/{diagram-NH7WQ7WH-B4uTamuE.cjs → diagram-NH7WQ7WH-DyJw7-Gl.cjs} +2 -2
  100. package/dist/{diagram-NH7WQ7WH-B4uTamuE.cjs.map → diagram-NH7WQ7WH-DyJw7-Gl.cjs.map} +1 -1
  101. package/dist/{diagram-OA4YK3LP-BoFOwiXF.js → diagram-OA4YK3LP-BfAM9MZv.js} +4 -4
  102. package/dist/{diagram-OA4YK3LP-BoFOwiXF.js.map → diagram-OA4YK3LP-BfAM9MZv.js.map} +1 -1
  103. package/dist/{diagram-OA4YK3LP-C1ORbLEL.cjs → diagram-OA4YK3LP-DqYpt5F6.cjs} +2 -2
  104. package/dist/{diagram-OA4YK3LP-C1ORbLEL.cjs.map → diagram-OA4YK3LP-DqYpt5F6.cjs.map} +1 -1
  105. package/dist/{diagram-WEI45ONY-COXEDGCZ.js → diagram-WEI45ONY-DtFOpBM4.js} +3 -3
  106. package/dist/{diagram-WEI45ONY-COXEDGCZ.js.map → diagram-WEI45ONY-DtFOpBM4.js.map} +1 -1
  107. package/dist/{diagram-WEI45ONY-BzuHWp9D.cjs → diagram-WEI45ONY-fz5dqgqy.cjs} +2 -2
  108. package/dist/{diagram-WEI45ONY-BzuHWp9D.cjs.map → diagram-WEI45ONY-fz5dqgqy.cjs.map} +1 -1
  109. package/dist/{ebnfDiagram-CCIWWBDH-N0w7QwtK.js → ebnfDiagram-CCIWWBDH-CyKVhKIb.js} +4 -4
  110. package/dist/{ebnfDiagram-CCIWWBDH-N0w7QwtK.js.map → ebnfDiagram-CCIWWBDH-CyKVhKIb.js.map} +1 -1
  111. package/dist/{ebnfDiagram-CCIWWBDH-DE7OPvSn.cjs → ebnfDiagram-CCIWWBDH-Haez4su4.cjs} +2 -2
  112. package/dist/{ebnfDiagram-CCIWWBDH-DE7OPvSn.cjs.map → ebnfDiagram-CCIWWBDH-Haez4su4.cjs.map} +1 -1
  113. package/dist/{erDiagram-Q63AITRT-CqsM_S0E.js → erDiagram-Q63AITRT-9hM3kPUW.js} +5 -5
  114. package/dist/{erDiagram-Q63AITRT-CqsM_S0E.js.map → erDiagram-Q63AITRT-9hM3kPUW.js.map} +1 -1
  115. package/dist/{erDiagram-Q63AITRT-KvBvwG4T.cjs → erDiagram-Q63AITRT-BGEWGa_b.cjs} +2 -2
  116. package/dist/{erDiagram-Q63AITRT-KvBvwG4T.cjs.map → erDiagram-Q63AITRT-BGEWGa_b.cjs.map} +1 -1
  117. package/dist/{extractHeadings-BiNpEj-K.js → extractHeadings-BH0T7P4n.js} +3834 -3824
  118. package/dist/{extractHeadings-BiNpEj-K.js.map → extractHeadings-BH0T7P4n.js.map} +1 -1
  119. package/dist/{extractHeadings-vnYM8Eet.cjs → extractHeadings-BsiIYa_e.cjs} +62 -62
  120. package/dist/{extractHeadings-vnYM8Eet.cjs.map → extractHeadings-BsiIYa_e.cjs.map} +1 -1
  121. package/dist/flowDiagram-23GEKE2U-B9LX4RXy.cjs +2 -0
  122. package/dist/flowDiagram-23GEKE2U-B9LX4RXy.cjs.map +1 -0
  123. package/dist/flowDiagram-23GEKE2U-Dk7STu-u.js +8 -0
  124. package/dist/flowDiagram-23GEKE2U-Dk7STu-u.js.map +1 -0
  125. package/dist/{ganttDiagram-NO4QXBWP-DvdToLYa.cjs → ganttDiagram-NO4QXBWP-4BbeHi64.cjs} +2 -2
  126. package/dist/{ganttDiagram-NO4QXBWP-DvdToLYa.cjs.map → ganttDiagram-NO4QXBWP-4BbeHi64.cjs.map} +1 -1
  127. package/dist/{ganttDiagram-NO4QXBWP-C2P9ON6O.js → ganttDiagram-NO4QXBWP-DtM5HL0C.js} +3 -3
  128. package/dist/{ganttDiagram-NO4QXBWP-C2P9ON6O.js.map → ganttDiagram-NO4QXBWP-DtM5HL0C.js.map} +1 -1
  129. package/dist/{gitGraphDiagram-IHSO6WYX-BkZsK9Hm.cjs → gitGraphDiagram-IHSO6WYX-D1NSh545.cjs} +2 -2
  130. package/dist/{gitGraphDiagram-IHSO6WYX-BkZsK9Hm.cjs.map → gitGraphDiagram-IHSO6WYX-D1NSh545.cjs.map} +1 -1
  131. package/dist/{gitGraphDiagram-IHSO6WYX-DVSslxqP.js → gitGraphDiagram-IHSO6WYX-DFSd1OPO.js} +4 -4
  132. package/dist/{gitGraphDiagram-IHSO6WYX-DVSslxqP.js.map → gitGraphDiagram-IHSO6WYX-DFSd1OPO.js.map} +1 -1
  133. package/dist/index.cjs +1 -1
  134. package/dist/index.client.cjs +1 -1
  135. package/dist/index.client.js +1 -1
  136. package/dist/index.js +1 -1
  137. package/dist/{infoDiagram-FWYZ7A6U-Cd3TPtAG.cjs → infoDiagram-FWYZ7A6U-4wrBBE6X.cjs} +2 -2
  138. package/dist/{infoDiagram-FWYZ7A6U-Cd3TPtAG.cjs.map → infoDiagram-FWYZ7A6U-4wrBBE6X.cjs.map} +1 -1
  139. package/dist/{infoDiagram-FWYZ7A6U-vPnKgn2w.js → infoDiagram-FWYZ7A6U-ZRUjO8nW.js} +2 -2
  140. package/dist/{infoDiagram-FWYZ7A6U-vPnKgn2w.js.map → infoDiagram-FWYZ7A6U-ZRUjO8nW.js.map} +1 -1
  141. package/dist/{ishikawaDiagram-FXEZZL3T-CR9ySQXh.cjs → ishikawaDiagram-FXEZZL3T-DE9GPbED.cjs} +2 -2
  142. package/dist/{ishikawaDiagram-FXEZZL3T-CR9ySQXh.cjs.map → ishikawaDiagram-FXEZZL3T-DE9GPbED.cjs.map} +1 -1
  143. package/dist/{ishikawaDiagram-FXEZZL3T-BkgUhFd7.js → ishikawaDiagram-FXEZZL3T-DNgqlFhZ.js} +2 -2
  144. package/dist/{ishikawaDiagram-FXEZZL3T-BkgUhFd7.js.map → ishikawaDiagram-FXEZZL3T-DNgqlFhZ.js.map} +1 -1
  145. package/dist/{journeyDiagram-5HDEW3XC-CeLukjGs.js → journeyDiagram-5HDEW3XC-BXlXmDhR.js} +5 -5
  146. package/dist/{journeyDiagram-5HDEW3XC-CeLukjGs.js.map → journeyDiagram-5HDEW3XC-BXlXmDhR.js.map} +1 -1
  147. package/dist/{journeyDiagram-5HDEW3XC-C_kouMqJ.cjs → journeyDiagram-5HDEW3XC-jcXDYbA9.cjs} +2 -2
  148. package/dist/{journeyDiagram-5HDEW3XC-C_kouMqJ.cjs.map → journeyDiagram-5HDEW3XC-jcXDYbA9.cjs.map} +1 -1
  149. package/dist/{kanban-definition-HUTT4EX6-B7sK7KKo.js → kanban-definition-HUTT4EX6-C9IdgWIg.js} +3 -3
  150. package/dist/{kanban-definition-HUTT4EX6-B7sK7KKo.js.map → kanban-definition-HUTT4EX6-C9IdgWIg.js.map} +1 -1
  151. package/dist/{kanban-definition-HUTT4EX6-C72m9SkW.cjs → kanban-definition-HUTT4EX6-D5_pDh9h.cjs} +2 -2
  152. package/dist/{kanban-definition-HUTT4EX6-C72m9SkW.cjs.map → kanban-definition-HUTT4EX6-D5_pDh9h.cjs.map} +1 -1
  153. package/dist/{linear-DA8CNisd.js → linear-CTibpBci.js} +2 -2
  154. package/dist/{linear-DA8CNisd.js.map → linear-CTibpBci.js.map} +1 -1
  155. package/dist/{linear-BgdXLHZt.cjs → linear-DDWdtbxq.cjs} +2 -2
  156. package/dist/{linear-BgdXLHZt.cjs.map → linear-DDWdtbxq.cjs.map} +1 -1
  157. package/dist/{mindmap-definition-LN4V7U3C-C7YrqUCf.js → mindmap-definition-LN4V7U3C-CXaKAu6n.js} +4 -4
  158. package/dist/{mindmap-definition-LN4V7U3C-C7YrqUCf.js.map → mindmap-definition-LN4V7U3C-CXaKAu6n.js.map} +1 -1
  159. package/dist/{mindmap-definition-LN4V7U3C-CirMzlY5.cjs → mindmap-definition-LN4V7U3C-gBn938NF.cjs} +2 -2
  160. package/dist/{mindmap-definition-LN4V7U3C-CirMzlY5.cjs.map → mindmap-definition-LN4V7U3C-gBn938NF.cjs.map} +1 -1
  161. package/dist/{pegDiagram-2B236MQR-DpzcFesN.js → pegDiagram-2B236MQR-BiQyejnD.js} +4 -4
  162. package/dist/{pegDiagram-2B236MQR-DpzcFesN.js.map → pegDiagram-2B236MQR-BiQyejnD.js.map} +1 -1
  163. package/dist/{pegDiagram-2B236MQR-BWo1kluM.cjs → pegDiagram-2B236MQR-fR_9AvHk.cjs} +2 -2
  164. package/dist/{pegDiagram-2B236MQR-BWo1kluM.cjs.map → pegDiagram-2B236MQR-fR_9AvHk.cjs.map} +1 -1
  165. package/dist/{pieDiagram-ENE6RG2P-iRoOiNc4.cjs → pieDiagram-ENE6RG2P-BZtqlfyU.cjs} +2 -2
  166. package/dist/{pieDiagram-ENE6RG2P-iRoOiNc4.cjs.map → pieDiagram-ENE6RG2P-BZtqlfyU.cjs.map} +1 -1
  167. package/dist/{pieDiagram-ENE6RG2P-B6RHvEHE.js → pieDiagram-ENE6RG2P-CZTZpVqy.js} +4 -4
  168. package/dist/{pieDiagram-ENE6RG2P-B6RHvEHE.js.map → pieDiagram-ENE6RG2P-CZTZpVqy.js.map} +1 -1
  169. package/dist/{quadrantDiagram-ABIIQ3AL-9Gb8LEQi.js → quadrantDiagram-ABIIQ3AL-ByHTxHrm.js} +3 -3
  170. package/dist/{quadrantDiagram-ABIIQ3AL-9Gb8LEQi.js.map → quadrantDiagram-ABIIQ3AL-ByHTxHrm.js.map} +1 -1
  171. package/dist/{quadrantDiagram-ABIIQ3AL-DKbTOjNz.cjs → quadrantDiagram-ABIIQ3AL-CC5w4CkE.cjs} +2 -2
  172. package/dist/{quadrantDiagram-ABIIQ3AL-DKbTOjNz.cjs.map → quadrantDiagram-ABIIQ3AL-CC5w4CkE.cjs.map} +1 -1
  173. package/dist/{railroadDiagram-RFXS5EU6-CXgCaCb_.js → railroadDiagram-RFXS5EU6-C99zfAzl.js} +4 -4
  174. package/dist/{railroadDiagram-RFXS5EU6-CXgCaCb_.js.map → railroadDiagram-RFXS5EU6-C99zfAzl.js.map} +1 -1
  175. package/dist/{railroadDiagram-RFXS5EU6-SOxzO7C3.cjs → railroadDiagram-RFXS5EU6-_YckPr2T.cjs} +2 -2
  176. package/dist/{railroadDiagram-RFXS5EU6-SOxzO7C3.cjs.map → railroadDiagram-RFXS5EU6-_YckPr2T.cjs.map} +1 -1
  177. package/dist/{requirementDiagram-TGXJPOKE-B6RQ9Kpp.cjs → requirementDiagram-TGXJPOKE-BCeWSLF4.cjs} +2 -2
  178. package/dist/{requirementDiagram-TGXJPOKE-B6RQ9Kpp.cjs.map → requirementDiagram-TGXJPOKE-BCeWSLF4.cjs.map} +1 -1
  179. package/dist/{requirementDiagram-TGXJPOKE-DbSm2ehr.js → requirementDiagram-TGXJPOKE-DBzuXzE9.js} +4 -4
  180. package/dist/{requirementDiagram-TGXJPOKE-DbSm2ehr.js.map → requirementDiagram-TGXJPOKE-DBzuXzE9.js.map} +1 -1
  181. package/dist/{sankeyDiagram-HTMAVEWB-BNqZ6R3H.js → sankeyDiagram-HTMAVEWB-ChQ2ozXn.js} +2 -2
  182. package/dist/{sankeyDiagram-HTMAVEWB-BNqZ6R3H.js.map → sankeyDiagram-HTMAVEWB-ChQ2ozXn.js.map} +1 -1
  183. package/dist/{sankeyDiagram-HTMAVEWB-DgGDy2eG.cjs → sankeyDiagram-HTMAVEWB-DQOfpr04.cjs} +2 -2
  184. package/dist/{sankeyDiagram-HTMAVEWB-DgGDy2eG.cjs.map → sankeyDiagram-HTMAVEWB-DQOfpr04.cjs.map} +1 -1
  185. package/dist/{sequenceDiagram-DBY2YBRQ-Bf3EtJcL.js → sequenceDiagram-DBY2YBRQ-CCzsdQ__.js} +4 -4
  186. package/dist/{sequenceDiagram-DBY2YBRQ-Bf3EtJcL.js.map → sequenceDiagram-DBY2YBRQ-CCzsdQ__.js.map} +1 -1
  187. package/dist/{sequenceDiagram-DBY2YBRQ-BuKDthxK.cjs → sequenceDiagram-DBY2YBRQ-D2R8WWiq.cjs} +2 -2
  188. package/dist/{sequenceDiagram-DBY2YBRQ-BuKDthxK.cjs.map → sequenceDiagram-DBY2YBRQ-D2R8WWiq.cjs.map} +1 -1
  189. package/dist/{sizeCapture-X5ZJPWSS-CNWx6elV.js → sizeCapture-X5ZJPWSS-9Q2RBacx.js} +2 -2
  190. package/dist/{sizeCapture-X5ZJPWSS-CNWx6elV.js.map → sizeCapture-X5ZJPWSS-9Q2RBacx.js.map} +1 -1
  191. package/dist/{sizeCapture-X5ZJPWSS-NRqA0pmT.cjs → sizeCapture-X5ZJPWSS-CedNWC9b.cjs} +2 -2
  192. package/dist/{sizeCapture-X5ZJPWSS-NRqA0pmT.cjs.map → sizeCapture-X5ZJPWSS-CedNWC9b.cjs.map} +1 -1
  193. package/dist/src/components/MarkdownRenderer.d.ts +31 -1
  194. package/dist/src/components/MarkdownRenderer.d.ts.map +1 -1
  195. package/dist/src/components/MarkdownViewer.d.ts +9 -1
  196. package/dist/src/components/MarkdownViewer.d.ts.map +1 -1
  197. package/dist/src/index.client.d.ts +1 -1
  198. package/dist/src/index.client.d.ts.map +1 -1
  199. package/dist/{stateDiagram-2N3HPSRC-DqhvonPY.cjs → stateDiagram-2N3HPSRC-BFjEDzN5.cjs} +2 -2
  200. package/dist/{stateDiagram-2N3HPSRC-DqhvonPY.cjs.map → stateDiagram-2N3HPSRC-BFjEDzN5.cjs.map} +1 -1
  201. package/dist/{stateDiagram-2N3HPSRC-Bdphi4r-.js → stateDiagram-2N3HPSRC-DVXBUdgS.js} +3 -3
  202. package/dist/{stateDiagram-2N3HPSRC-Bdphi4r-.js.map → stateDiagram-2N3HPSRC-DVXBUdgS.js.map} +1 -1
  203. package/dist/{stateDiagram-v2-6OUMAXLB-p9rvsC9-.cjs → stateDiagram-v2-6OUMAXLB-BpxIqbgw.cjs} +2 -2
  204. package/dist/{stateDiagram-v2-6OUMAXLB-p9rvsC9-.cjs.map → stateDiagram-v2-6OUMAXLB-BpxIqbgw.cjs.map} +1 -1
  205. package/dist/{stateDiagram-v2-6OUMAXLB-DdB47j1a.js → stateDiagram-v2-6OUMAXLB-etkgI8XE.js} +3 -3
  206. package/dist/{stateDiagram-v2-6OUMAXLB-DdB47j1a.js.map → stateDiagram-v2-6OUMAXLB-etkgI8XE.js.map} +1 -1
  207. package/dist/{swimlanes-5IMT3BWC-JZVn9oCR.cjs → swimlanes-5IMT3BWC-ByyaHYdJ.cjs} +2 -2
  208. package/dist/{swimlanes-5IMT3BWC-JZVn9oCR.cjs.map → swimlanes-5IMT3BWC-ByyaHYdJ.cjs.map} +1 -1
  209. package/dist/{swimlanes-5IMT3BWC-BMZk0Lp2.js → swimlanes-5IMT3BWC-CRF_hU5-.js} +4 -4
  210. package/dist/{swimlanes-5IMT3BWC-BMZk0Lp2.js.map → swimlanes-5IMT3BWC-CRF_hU5-.js.map} +1 -1
  211. package/dist/{swimlanesDiagram-G3AALYLV-DxEegQkl.cjs → swimlanesDiagram-G3AALYLV-DmAVTn1y.cjs} +2 -2
  212. package/dist/{swimlanesDiagram-G3AALYLV-DxEegQkl.cjs.map → swimlanesDiagram-G3AALYLV-DmAVTn1y.cjs.map} +1 -1
  213. package/dist/{swimlanesDiagram-G3AALYLV-DNhrqmqB.js → swimlanesDiagram-G3AALYLV-qE56wCfv.js} +3 -3
  214. package/dist/{swimlanesDiagram-G3AALYLV-DNhrqmqB.js.map → swimlanesDiagram-G3AALYLV-qE56wCfv.js.map} +1 -1
  215. package/dist/{timeline-definition-FHXFAJF6-BjxOaDZF.cjs → timeline-definition-FHXFAJF6-CYpydtqC.cjs} +2 -2
  216. package/dist/{timeline-definition-FHXFAJF6-BjxOaDZF.cjs.map → timeline-definition-FHXFAJF6-CYpydtqC.cjs.map} +1 -1
  217. package/dist/{timeline-definition-FHXFAJF6-C4kHuqGr.js → timeline-definition-FHXFAJF6-U6tU13YO.js} +3 -3
  218. package/dist/{timeline-definition-FHXFAJF6-C4kHuqGr.js.map → timeline-definition-FHXFAJF6-U6tU13YO.js.map} +1 -1
  219. package/dist/{vennDiagram-L72KCM5P-nQ40EeIj.cjs → vennDiagram-L72KCM5P-CfbVR5CF.cjs} +2 -2
  220. package/dist/{vennDiagram-L72KCM5P-nQ40EeIj.cjs.map → vennDiagram-L72KCM5P-CfbVR5CF.cjs.map} +1 -1
  221. package/dist/{vennDiagram-L72KCM5P-faE6oCYZ.js → vennDiagram-L72KCM5P-q79Xn7UV.js} +2 -2
  222. package/dist/{vennDiagram-L72KCM5P-faE6oCYZ.js.map → vennDiagram-L72KCM5P-q79Xn7UV.js.map} +1 -1
  223. package/dist/{wardleyDiagram-EHGQE667-COQa-JdJ.js → wardleyDiagram-EHGQE667-BG3W74MX.js} +3 -3
  224. package/dist/{wardleyDiagram-EHGQE667-COQa-JdJ.js.map → wardleyDiagram-EHGQE667-BG3W74MX.js.map} +1 -1
  225. package/dist/{wardleyDiagram-EHGQE667-ByYfznTT.cjs → wardleyDiagram-EHGQE667-CSJ22zfj.cjs} +2 -2
  226. package/dist/{wardleyDiagram-EHGQE667-ByYfznTT.cjs.map → wardleyDiagram-EHGQE667-CSJ22zfj.cjs.map} +1 -1
  227. package/dist/{xychartDiagram-FW5EYKEG-D7FhqNeM.js → xychartDiagram-FW5EYKEG-BISI4a7c.js} +3 -3
  228. package/dist/{xychartDiagram-FW5EYKEG-D7FhqNeM.js.map → xychartDiagram-FW5EYKEG-BISI4a7c.js.map} +1 -1
  229. package/dist/{xychartDiagram-FW5EYKEG-BHBIM0-w.cjs → xychartDiagram-FW5EYKEG-Df8hBgvh.cjs} +2 -2
  230. package/dist/{xychartDiagram-FW5EYKEG-BHBIM0-w.cjs.map → xychartDiagram-FW5EYKEG-Df8hBgvh.cjs.map} +1 -1
  231. package/package.json +1 -1
  232. package/dist/channel-B6gYWXtQ.js +0 -6
  233. package/dist/channel-CZceKK2b.cjs +0 -2
  234. package/dist/flowDiagram-23GEKE2U-BNIQEPQk.cjs +0 -2
  235. package/dist/flowDiagram-23GEKE2U-BNIQEPQk.cjs.map +0 -1
  236. package/dist/flowDiagram-23GEKE2U-Cu3z7Hd2.js +0 -8
  237. package/dist/flowDiagram-23GEKE2U-Cu3z7Hd2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"blockDiagram-677ZJIJ3-CLkOcrVQ.js","sources":["../../../node_modules/.pnpm/es-toolkit@1.47.0/node_modules/es-toolkit/dist/compat/predicate/isArray.mjs","../../../node_modules/.pnpm/es-toolkit@1.47.0/node_modules/es-toolkit/dist/compat/object/clone.mjs","../../../node_modules/.pnpm/mermaid@11.16.0/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-677ZJIJ3.mjs"],"sourcesContent":["//#region src/compat/predicate/isArray.ts\n/**\n* Checks if the given value is an array.\n*\n* This function tests whether the provided value is an array or not.\n* It returns `true` if the value is an array, and `false` otherwise.\n*\n* This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an array.\n*\n* @param {any} value - The value to test if it is an array.\n* @returns {value is any[]} `true` if the value is an array, `false` otherwise.\n*\n* @example\n* const value1 = [1, 2, 3];\n* const value2 = 'abc';\n* const value3 = () => {};\n*\n* console.log(isArray(value1)); // true\n* console.log(isArray(value2)); // false\n* console.log(isArray(value3)); // false\n*/\nfunction isArray(value) {\n\treturn Array.isArray(value);\n}\n//#endregion\nexport { isArray };\n","import { isPrimitive } from \"../../predicate/isPrimitive.mjs\";\nimport { getTag } from \"../_internal/getTag.mjs\";\nimport { argumentsTag, arrayBufferTag, arrayTag, booleanTag, dataViewTag, dateTag, float32ArrayTag, float64ArrayTag, int16ArrayTag, int32ArrayTag, int8ArrayTag, mapTag, numberTag, objectTag, regexpTag, setTag, stringTag, symbolTag, uint16ArrayTag, uint32ArrayTag, uint8ArrayTag, uint8ClampedArrayTag } from \"../_internal/tags.mjs\";\nimport { isArray } from \"../predicate/isArray.mjs\";\nimport { isTypedArray } from \"../predicate/isTypedArray.mjs\";\n//#region src/compat/object/clone.ts\n/**\n* Creates a shallow clone of the given object.\n*\n* @template T - The type of the object.\n* @param {T} obj - The object to clone.\n* @returns {T} - A shallow clone of the given object.\n*\n* @example\n* // Clone a primitive objs\n* const num = 29;\n* const clonedNum = clone(num);\n* console.log(clonedNum); // 29\n* console.log(clonedNum === num); // true\n*\n* @example\n* // Clone an array\n* const arr = [1, 2, 3];\n* const clonedArr = clone(arr);\n* console.log(clonedArr); // [1, 2, 3]\n* console.log(clonedArr === arr); // false\n*\n* @example\n* // Clone an object\n* const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] };\n* const clonedObj = clone(obj);\n* console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] }\n* console.log(clonedObj === obj); // false\n*/\nfunction clone(obj) {\n\tif (isPrimitive(obj)) return obj;\n\tconst tag = getTag(obj);\n\tif (!isCloneableObject(obj)) return {};\n\tif (isArray(obj)) {\n\t\tconst result = Array.from(obj);\n\t\tif (obj.length > 0 && typeof obj[0] === \"string\" && Object.hasOwn(obj, \"index\")) {\n\t\t\tresult.index = obj.index;\n\t\t\tresult.input = obj.input;\n\t\t}\n\t\treturn result;\n\t}\n\tif (isTypedArray(obj)) {\n\t\tconst typedArray = obj;\n\t\tconst Ctor = typedArray.constructor;\n\t\treturn new Ctor(typedArray.buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\tif (tag === \"[object ArrayBuffer]\") return new ArrayBuffer(obj.byteLength);\n\tif (tag === \"[object DataView]\") {\n\t\tconst dataView = obj;\n\t\tconst buffer = dataView.buffer;\n\t\tconst byteOffset = dataView.byteOffset;\n\t\tconst byteLength = dataView.byteLength;\n\t\tconst clonedBuffer = new ArrayBuffer(byteLength);\n\t\tconst srcView = new Uint8Array(buffer, byteOffset, byteLength);\n\t\tnew Uint8Array(clonedBuffer).set(srcView);\n\t\treturn new DataView(clonedBuffer);\n\t}\n\tif (tag === \"[object Boolean]\" || tag === \"[object Number]\" || tag === \"[object String]\") {\n\t\tconst Ctor = obj.constructor;\n\t\tconst clone = new Ctor(obj.valueOf());\n\t\tif (tag === \"[object String]\") cloneStringObjectProperties(clone, obj);\n\t\telse copyOwnProperties(clone, obj);\n\t\treturn clone;\n\t}\n\tif (tag === \"[object Date]\") return new Date(Number(obj));\n\tif (tag === \"[object RegExp]\") {\n\t\tconst regExp = obj;\n\t\tconst clone = new RegExp(regExp.source, regExp.flags);\n\t\tclone.lastIndex = regExp.lastIndex;\n\t\treturn clone;\n\t}\n\tif (tag === \"[object Symbol]\") return Object(Symbol.prototype.valueOf.call(obj));\n\tif (tag === \"[object Map]\") {\n\t\tconst map = obj;\n\t\tconst result = /* @__PURE__ */ new Map();\n\t\tmap.forEach((obj, key) => {\n\t\t\tresult.set(key, obj);\n\t\t});\n\t\treturn result;\n\t}\n\tif (tag === \"[object Set]\") {\n\t\tconst set = obj;\n\t\tconst result = /* @__PURE__ */ new Set();\n\t\tset.forEach((obj) => {\n\t\t\tresult.add(obj);\n\t\t});\n\t\treturn result;\n\t}\n\tif (tag === \"[object Arguments]\") {\n\t\tconst args = obj;\n\t\tconst result = {};\n\t\tcopyOwnProperties(result, args);\n\t\tresult.length = args.length;\n\t\tresult[Symbol.iterator] = args[Symbol.iterator];\n\t\treturn result;\n\t}\n\tconst result = {};\n\tcopyPrototype(result, obj);\n\tcopyOwnProperties(result, obj);\n\tcopySymbolProperties(result, obj);\n\treturn result;\n}\nfunction isCloneableObject(object) {\n\tswitch (getTag(object)) {\n\t\tcase argumentsTag:\n\t\tcase arrayTag:\n\t\tcase arrayBufferTag:\n\t\tcase dataViewTag:\n\t\tcase booleanTag:\n\t\tcase dateTag:\n\t\tcase float32ArrayTag:\n\t\tcase float64ArrayTag:\n\t\tcase int8ArrayTag:\n\t\tcase int16ArrayTag:\n\t\tcase int32ArrayTag:\n\t\tcase mapTag:\n\t\tcase numberTag:\n\t\tcase objectTag:\n\t\tcase regexpTag:\n\t\tcase setTag:\n\t\tcase stringTag:\n\t\tcase symbolTag:\n\t\tcase uint8ArrayTag:\n\t\tcase uint8ClampedArrayTag:\n\t\tcase uint16ArrayTag:\n\t\tcase uint32ArrayTag: return true;\n\t\tdefault: return false;\n\t}\n}\nfunction copyOwnProperties(target, source) {\n\tfor (const key in source) if (Object.hasOwn(source, key)) target[key] = source[key];\n}\nfunction copySymbolProperties(target, source) {\n\tconst symbols = Object.getOwnPropertySymbols(source);\n\tfor (let i = 0; i < symbols.length; i++) {\n\t\tconst symbol = symbols[i];\n\t\tif (Object.prototype.propertyIsEnumerable.call(source, symbol)) target[symbol] = source[symbol];\n\t}\n}\nfunction cloneStringObjectProperties(target, source) {\n\tconst stringLength = source.valueOf().length;\n\tfor (const key in source) if (Object.hasOwn(source, key) && (Number.isNaN(Number(key)) || Number(key) >= stringLength)) target[key] = source[key];\n}\nfunction copyPrototype(target, source) {\n\tconst proto = Object.getPrototypeOf(source);\n\tif (proto !== null) {\n\t\tif (typeof source.constructor === \"function\") Object.setPrototypeOf(target, proto);\n\t}\n}\n//#endregion\nexport { clone };\n","import {\n getIconStyles\n} from \"./chunk-5VM5RSS4.mjs\";\nimport {\n computeLabelTransform,\n getLineFunctionsWithOffset\n} from \"./chunk-7BUUIJ7U.mjs\";\nimport {\n configureLabelImages,\n getSubGraphTitleMargins\n} from \"./chunk-OGEWGWER.mjs\";\nimport {\n createText\n} from \"./chunk-Q4XR5HBZ.mjs\";\nimport \"./chunk-HOUHSVGY.mjs\";\nimport {\n decodeEntities,\n getStylesFromArray,\n utils_default\n} from \"./chunk-ICXQ74PX.mjs\";\nimport {\n clear,\n common_default,\n configureSvgSize,\n getConfig,\n getConfig2,\n getEffectiveHtmlLabels,\n getUrl,\n sanitizeText\n} from \"./chunk-WYO6CB5R.mjs\";\nimport {\n log\n} from \"./chunk-X3CZISLH.mjs\";\nimport {\n __name\n} from \"./chunk-Y2CYZVJY.mjs\";\n\n// src/diagrams/block/parser/block.jison\nvar parser = (function() {\n var o = /* @__PURE__ */ __name(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [1, 15], $V1 = [1, 7], $V2 = [1, 13], $V3 = [1, 14], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 10, 21, 28, 29, 30, 31, 39, 43, 46], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 10, 15, 16, 21, 28, 29, 30, 31, 39, 43, 46], $Vd = [8, 10, 15, 16, 21, 27, 28, 29, 30, 31, 39, 43, 46], $Ve = [1, 49];\n var parser2 = {\n trace: /* @__PURE__ */ __name(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"spaceLines\": 3, \"SPACELINE\": 4, \"NL\": 5, \"separator\": 6, \"SPACE\": 7, \"EOF\": 8, \"start\": 9, \"BLOCK_DIAGRAM_KEY\": 10, \"document\": 11, \"stop\": 12, \"statement\": 13, \"link\": 14, \"LINK\": 15, \"START_LINK\": 16, \"LINK_LABEL\": 17, \"STR\": 18, \"nodeStatement\": 19, \"columnsStatement\": 20, \"SPACE_BLOCK\": 21, \"blockStatement\": 22, \"classDefStatement\": 23, \"cssClassStatement\": 24, \"styleStatement\": 25, \"node\": 26, \"SIZE\": 27, \"COLUMNS\": 28, \"id-block\": 29, \"end\": 30, \"NODE_ID\": 31, \"nodeShapeNLabel\": 32, \"dirList\": 33, \"DIR\": 34, \"NODE_DSTART\": 35, \"NODE_DEND\": 36, \"BLOCK_ARROW_START\": 37, \"BLOCK_ARROW_END\": 38, \"classDef\": 39, \"CLASSDEF_ID\": 40, \"CLASSDEF_STYLEOPTS\": 41, \"DEFAULT\": 42, \"class\": 43, \"CLASSENTITY_IDS\": 44, \"STYLECLASS\": 45, \"style\": 46, \"STYLE_ENTITY_IDS\": 47, \"STYLE_DEFINITION_DATA\": 48, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACELINE\", 5: \"NL\", 7: \"SPACE\", 8: \"EOF\", 10: \"BLOCK_DIAGRAM_KEY\", 15: \"LINK\", 16: \"START_LINK\", 17: \"LINK_LABEL\", 18: \"STR\", 21: \"SPACE_BLOCK\", 27: \"SIZE\", 28: \"COLUMNS\", 29: \"id-block\", 30: \"end\", 31: \"NODE_ID\", 34: \"DIR\", 35: \"NODE_DSTART\", 36: \"NODE_DEND\", 37: \"BLOCK_ARROW_START\", 38: \"BLOCK_ARROW_END\", 39: \"classDef\", 40: \"CLASSDEF_ID\", 41: \"CLASSDEF_STYLEOPTS\", 42: \"DEFAULT\", 43: \"class\", 44: \"CLASSENTITY_IDS\", 45: \"STYLECLASS\", 46: \"style\", 47: \"STYLE_ENTITY_IDS\", 48: \"STYLE_DEFINITION_DATA\" },\n productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [33, 1], [33, 2], [32, 3], [32, 4], [23, 3], [23, 3], [24, 3], [25, 3]],\n performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.getLogger().debug(\"Rule: separator (NL) \");\n break;\n case 5:\n yy.getLogger().debug(\"Rule: separator (Space) \");\n break;\n case 6:\n yy.getLogger().debug(\"Rule: separator (EOF) \");\n break;\n case 7:\n yy.getLogger().debug(\"Rule: hierarchy: \", $$[$0 - 1]);\n yy.setHierarchy($$[$0 - 1]);\n break;\n case 8:\n yy.getLogger().debug(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().debug(\"Stop EOF \");\n break;\n case 10:\n yy.getLogger().debug(\"Stop NL2 \");\n break;\n case 11:\n yy.getLogger().debug(\"Stop EOF2 \");\n break;\n case 12:\n yy.getLogger().debug(\"Rule: statement: \", $$[$0]);\n typeof $$[$0].length === \"number\" ? this.$ = $$[$0] : this.$ = [$$[$0]];\n break;\n case 13:\n yy.getLogger().debug(\"Rule: statement #2: \", $$[$0 - 1]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 14:\n yy.getLogger().debug(\"Rule: link: \", $$[$0], yytext);\n this.$ = { edgeTypeStr: $$[$0], label: \"\" };\n break;\n case 15:\n yy.getLogger().debug(\"Rule: LABEL link: \", $$[$0 - 3], $$[$0 - 1], $$[$0]);\n this.$ = { edgeTypeStr: $$[$0], label: $$[$0 - 1] };\n break;\n case 18:\n const num = parseInt($$[$0]);\n const spaceId = yy.generateId();\n this.$ = { id: spaceId, type: \"space\", label: \"\", width: num, children: [] };\n break;\n case 23:\n yy.getLogger().debug(\"Rule: (nodeStatement link node) \", $$[$0 - 2], $$[$0 - 1], $$[$0], \" typestr: \", $$[$0 - 1].edgeTypeStr);\n const edgeData = yy.edgeStrToEdgeData($$[$0 - 1].edgeTypeStr);\n const startEdgeData = yy.edgeStrToEdgeStartData($$[$0 - 1].edgeTypeStr);\n const lineThickness = yy.edgeStrToThickness($$[$0 - 1].edgeTypeStr);\n const linePattern = yy.edgeStrToPattern($$[$0 - 1].edgeTypeStr);\n this.$ = [\n { id: $$[$0 - 2].id, label: $$[$0 - 2].label, type: $$[$0 - 2].type, directions: $$[$0 - 2].directions },\n { id: $$[$0 - 2].id + \"-\" + $$[$0].id, start: $$[$0 - 2].id, end: $$[$0].id, label: $$[$0 - 1].label, type: \"edge\", thickness: lineThickness, pattern: linePattern, directions: $$[$0].directions, arrowTypeEnd: edgeData, arrowTypeStart: startEdgeData },\n { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions }\n ];\n break;\n case 24:\n yy.getLogger().debug(\"Rule: nodeStatement (abc88 node size) \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1].id, label: $$[$0 - 1].label, type: yy.typeStr2Type($$[$0 - 1].typeStr), directions: $$[$0 - 1].directions, widthInColumns: parseInt($$[$0], 10) };\n break;\n case 25:\n yy.getLogger().debug(\"Rule: nodeStatement (node) \", $$[$0]);\n this.$ = { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions, widthInColumns: 1 };\n break;\n case 26:\n yy.getLogger().debug(\"APA123\", this ? this : \"na\");\n yy.getLogger().debug(\"COLUMNS: \", $$[$0]);\n this.$ = { type: \"column-setting\", columns: $$[$0] === \"auto\" ? -1 : parseInt($$[$0]) };\n break;\n case 27:\n yy.getLogger().debug(\"Rule: id-block statement : \", $$[$0 - 2], $$[$0 - 1]);\n const id2 = yy.generateId();\n this.$ = { ...$$[$0 - 2], type: \"composite\", children: $$[$0 - 1] };\n break;\n case 28:\n yy.getLogger().debug(\"Rule: blockStatement : \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n const id = yy.generateId();\n this.$ = { id, type: \"composite\", label: \"\", children: $$[$0 - 1] };\n break;\n case 29:\n yy.getLogger().debug(\"Rule: node (NODE_ID separator): \", $$[$0]);\n this.$ = { id: $$[$0] };\n break;\n case 30:\n yy.getLogger().debug(\"Rule: node (NODE_ID nodeShapeNLabel separator): \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1], label: $$[$0].label, typeStr: $$[$0].typeStr, directions: $$[$0].directions };\n break;\n case 31:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0]);\n this.$ = [$$[$0]];\n break;\n case 32:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0 - 1], $$[$0]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 33:\n yy.getLogger().debug(\"Rule: nodeShapeNLabel: \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 2] + $$[$0], label: $$[$0 - 1] };\n break;\n case 34:\n yy.getLogger().debug(\"Rule: BLOCK_ARROW nodeShapeNLabel: \", $$[$0 - 3], $$[$0 - 2], \" #3:\", $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 3] + $$[$0], label: $$[$0 - 2], directions: $$[$0 - 1] };\n break;\n case 35:\n case 36:\n this.$ = { type: \"classDef\", id: $$[$0 - 1].trim(), css: $$[$0].trim() };\n break;\n case 37:\n this.$ = { type: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 38:\n this.$ = { type: \"applyStyles\", id: $$[$0 - 1].trim(), stylesStr: $$[$0].trim() };\n break;\n }\n }, \"anonymous\"),\n table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 10: $V0, 11: 3, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 8: [1, 20] }, o($V8, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 10: $V0, 21: $V1, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }), o($V9, [2, 16], { 14: 22, 15: $Va, 16: $Vb }), o($V9, [2, 17]), o($V9, [2, 18]), o($V9, [2, 19]), o($V9, [2, 20]), o($V9, [2, 21]), o($V9, [2, 22]), o($Vc, [2, 25], { 27: [1, 25] }), o($V9, [2, 26]), { 19: 26, 26: 12, 31: $V4 }, { 10: $V0, 11: 27, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 40: [1, 28], 42: [1, 29] }, { 44: [1, 30] }, { 47: [1, 31] }, o($Vd, [2, 29], { 32: 32, 35: [1, 33], 37: [1, 34] }), { 1: [2, 7] }, o($V8, [2, 13]), { 26: 35, 31: $V4 }, { 31: [2, 14] }, { 17: [1, 36] }, o($Vc, [2, 24]), { 10: $V0, 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 30: [1, 38] }, { 41: [1, 39] }, { 41: [1, 40] }, { 45: [1, 41] }, { 48: [1, 42] }, o($Vd, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, o($Vc, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, o($V9, [2, 28]), o($V9, [2, 35]), o($V9, [2, 36]), o($V9, [2, 37]), o($V9, [2, 38]), { 36: [1, 47] }, { 33: 48, 34: $Ve }, { 15: [1, 50] }, o($V9, [2, 27]), o($Vd, [2, 33]), { 38: [1, 51] }, { 33: 52, 34: $Ve, 38: [2, 31] }, { 31: [2, 15] }, o($Vd, [2, 34]), { 38: [2, 32] }],\n defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] },\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n }, \"parseError\"),\n parse: /* @__PURE__ */ __name(function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n __name(popStack, \"popStack\");\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n __name(lex, \"lex\");\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }, \"parse\")\n };\n var lexer = /* @__PURE__ */ (function() {\n var lexer2 = {\n EOF: 1,\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n }, \"parseError\"),\n // resets the lexer, sets new input\n setInput: /* @__PURE__ */ __name(function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n }, \"setInput\"),\n // consumes and returns one char from the input\n input: /* @__PURE__ */ __name(function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n }, \"input\"),\n // unshifts one char (or a string) into the input\n unput: /* @__PURE__ */ __name(function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n }, \"unput\"),\n // When called from action, caches matched text and appends it on next action\n more: /* @__PURE__ */ __name(function() {\n this._more = true;\n return this;\n }, \"more\"),\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: /* @__PURE__ */ __name(function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n }, \"reject\"),\n // retain first n characters of the match\n less: /* @__PURE__ */ __name(function(n) {\n this.unput(this.match.slice(n));\n }, \"less\"),\n // displays already matched input, i.e. for error messages\n pastInput: /* @__PURE__ */ __name(function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n }, \"pastInput\"),\n // displays upcoming input, i.e. for error messages\n upcomingInput: /* @__PURE__ */ __name(function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n }, \"upcomingInput\"),\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: /* @__PURE__ */ __name(function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n }, \"showPosition\"),\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: /* @__PURE__ */ __name(function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n }, \"test_match\"),\n // return next match in input\n next: /* @__PURE__ */ __name(function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n }, \"next\"),\n // return next match that has a token\n lex: /* @__PURE__ */ __name(function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n }, \"lex\"),\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: /* @__PURE__ */ __name(function begin(condition) {\n this.conditionStack.push(condition);\n }, \"begin\"),\n // pop the previously active lexer condition state off the condition stack\n popState: /* @__PURE__ */ __name(function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n }, \"popState\"),\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: /* @__PURE__ */ __name(function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n }, \"_currentRules\"),\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: /* @__PURE__ */ __name(function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n }, \"topState\"),\n // alias for begin(condition)\n pushState: /* @__PURE__ */ __name(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ __name(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: {},\n performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n yy.getLogger().debug(\"Found block-beta\");\n return 10;\n break;\n case 1:\n yy.getLogger().debug(\"Found id-block\");\n return 29;\n break;\n case 2:\n yy.getLogger().debug(\"Found block\");\n return 10;\n break;\n case 3:\n yy.getLogger().debug(\".\", yy_.yytext);\n break;\n case 4:\n yy.getLogger().debug(\"_\", yy_.yytext);\n break;\n case 5:\n return 5;\n break;\n case 6:\n yy_.yytext = -1;\n return 28;\n break;\n case 7:\n yy_.yytext = yy_.yytext.replace(/columns\\s+/, \"\");\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 28;\n break;\n case 8:\n this.pushState(\"md_string\");\n break;\n case 9:\n return \"MD_STR\";\n break;\n case 10:\n this.popState();\n break;\n case 11:\n this.pushState(\"string\");\n break;\n case 12:\n yy.getLogger().debug(\"LEX: POPPING STR:\", yy_.yytext);\n this.popState();\n break;\n case 13:\n yy.getLogger().debug(\"LEX: STR end:\", yy_.yytext);\n return \"STR\";\n break;\n case 14:\n yy_.yytext = yy_.yytext.replace(/space\\:/, \"\");\n yy.getLogger().debug(\"SPACE NUM (LEX)\", yy_.yytext);\n return 21;\n break;\n case 15:\n yy_.yytext = \"1\";\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 21;\n break;\n case 16:\n return 42;\n break;\n case 17:\n return \"LINKSTYLE\";\n break;\n case 18:\n return \"INTERPOLATE\";\n break;\n case 19:\n this.pushState(\"CLASSDEF\");\n return 39;\n break;\n case 20:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n break;\n case 21:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 40;\n break;\n case 22:\n this.popState();\n return 41;\n break;\n case 23:\n this.pushState(\"CLASS\");\n return 43;\n break;\n case 24:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 44;\n break;\n case 25:\n this.popState();\n return 45;\n break;\n case 26:\n this.pushState(\"STYLE_STMNT\");\n return 46;\n break;\n case 27:\n this.popState();\n this.pushState(\"STYLE_DEFINITION\");\n return 47;\n break;\n case 28:\n this.popState();\n return 48;\n break;\n case 29:\n this.pushState(\"acc_title\");\n return \"acc_title\";\n break;\n case 30:\n this.popState();\n return \"acc_title_value\";\n break;\n case 31:\n this.pushState(\"acc_descr\");\n return \"acc_descr\";\n break;\n case 32:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 33:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return \"acc_descr_multiline_value\";\n break;\n case 36:\n return 30;\n break;\n case 37:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 38:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 39:\n this.popState();\n yy.getLogger().debug(\"Lex: ))\");\n return \"NODE_DEND\";\n break;\n case 40:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 41:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 42:\n this.popState();\n yy.getLogger().debug(\"Lex: (-\");\n return \"NODE_DEND\";\n break;\n case 43:\n this.popState();\n yy.getLogger().debug(\"Lex: -)\");\n return \"NODE_DEND\";\n break;\n case 44:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 45:\n this.popState();\n yy.getLogger().debug(\"Lex: ]]\");\n return \"NODE_DEND\";\n break;\n case 46:\n this.popState();\n yy.getLogger().debug(\"Lex: (\");\n return \"NODE_DEND\";\n break;\n case 47:\n this.popState();\n yy.getLogger().debug(\"Lex: ])\");\n return \"NODE_DEND\";\n break;\n case 48:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 49:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 50:\n this.popState();\n yy.getLogger().debug(\"Lex: )]\");\n return \"NODE_DEND\";\n break;\n case 51:\n this.popState();\n yy.getLogger().debug(\"Lex: )\");\n return \"NODE_DEND\";\n break;\n case 52:\n this.popState();\n yy.getLogger().debug(\"Lex: ]>\");\n return \"NODE_DEND\";\n break;\n case 53:\n this.popState();\n yy.getLogger().debug(\"Lex: ]\");\n return \"NODE_DEND\";\n break;\n case 54:\n yy.getLogger().debug(\"Lexa: -)\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 55:\n yy.getLogger().debug(\"Lexa: (-\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 56:\n yy.getLogger().debug(\"Lexa: ))\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 57:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 58:\n yy.getLogger().debug(\"Lex: (((\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 59:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 60:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 61:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 62:\n yy.getLogger().debug(\"Lexc: >\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 63:\n yy.getLogger().debug(\"Lexa: ([\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 64:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 65:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 66:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 67:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 68:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 69:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 70:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 71:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 72:\n yy.getLogger().debug(\"Lexa: [\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 73:\n this.pushState(\"BLOCK_ARROW\");\n yy.getLogger().debug(\"LEX ARR START\");\n return 37;\n break;\n case 74:\n yy.getLogger().debug(\"Lex: NODE_ID\", yy_.yytext);\n return 31;\n break;\n case 75:\n yy.getLogger().debug(\"Lex: EOF\", yy_.yytext);\n return 8;\n break;\n case 76:\n this.pushState(\"md_string\");\n break;\n case 77:\n this.pushState(\"md_string\");\n break;\n case 78:\n return \"NODE_DESCR\";\n break;\n case 79:\n this.popState();\n break;\n case 80:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n break;\n case 81:\n yy.getLogger().debug(\"LEX ARR: Starting string\");\n this.pushState(\"string\");\n break;\n case 82:\n yy.getLogger().debug(\"LEX: NODE_DESCR:\", yy_.yytext);\n return \"NODE_DESCR\";\n break;\n case 83:\n yy.getLogger().debug(\"LEX POPPING\");\n this.popState();\n break;\n case 84:\n yy.getLogger().debug(\"Lex: =>BAE\");\n this.pushState(\"ARROW_DIR\");\n break;\n case 85:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (right): dir:\", yy_.yytext);\n return \"DIR\";\n break;\n case 86:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (left):\", yy_.yytext);\n return \"DIR\";\n break;\n case 87:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (x):\", yy_.yytext);\n return \"DIR\";\n break;\n case 88:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (y):\", yy_.yytext);\n return \"DIR\";\n break;\n case 89:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (up):\", yy_.yytext);\n return \"DIR\";\n break;\n case 90:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (down):\", yy_.yytext);\n return \"DIR\";\n break;\n case 91:\n yy_.yytext = \"]>\";\n yy.getLogger().debug(\"Lex (ARROW_DIR end):\", yy_.yytext);\n this.popState();\n this.popState();\n return \"BLOCK_ARROW_END\";\n break;\n case 92:\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 93:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 94:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 95:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 96:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 97:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 98:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 99:\n this.pushState(\"md_string\");\n break;\n case 100:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n return \"LINK_LABEL\";\n break;\n case 101:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 102:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 103:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 104:\n yy.getLogger().debug(\"Lex: COLON\", yy_.yytext);\n yy_.yytext = yy_.yytext.slice(1);\n return 27;\n break;\n }\n }, \"anonymous\"),\n rules: [/^(?:block-beta\\b)/, /^(?:block:)/, /^(?:block\\b)/, /^(?:[\\s]+)/, /^(?:[\\n]+)/, /^(?:((\\u000D\\u000A)|(\\u000A)))/, /^(?:columns\\s+auto\\b)/, /^(?:columns\\s+[\\d]+)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:space[:]\\d+)/, /^(?:space\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\s+)/, /^(?:DEFAULT\\s+)/, /^(?:\\w+\\s+)/, /^(?:[^\\n]*)/, /^(?:class\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:style\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:end\\b\\s*)/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:[\\)]\\))/, /^(?:\\}\\})/, /^(?:\\})/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\()/, /^(?:\\]\\])/, /^(?:\\()/, /^(?:\\]\\))/, /^(?:\\\\\\])/, /^(?:\\/\\])/, /^(?:\\)\\])/, /^(?:[\\)])/, /^(?:\\]>)/, /^(?:[\\]])/, /^(?:-\\))/, /^(?:\\(-)/, /^(?:\\)\\))/, /^(?:\\))/, /^(?:\\(\\(\\()/, /^(?:\\(\\()/, /^(?:\\{\\{)/, /^(?:\\{)/, /^(?:>)/, /^(?:\\(\\[)/, /^(?:\\()/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\[\\\\)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:\\[)/, /^(?:<\\[)/, /^(?:[^\\(\\[\\n\\-\\)\\{\\}\\s\\<\\>:=]+)/, /^(?:$)/, /^(?:[\"][`])/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:\\]>\\s*\\()/, /^(?:,?\\s*right\\s*)/, /^(?:,?\\s*left\\s*)/, /^(?:,?\\s*x\\s*)/, /^(?:,?\\s*y\\s*)/, /^(?:,?\\s*up\\s*)/, /^(?:,?\\s*down\\s*)/, /^(?:\\)\\s*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[\"][`])/, /^(?:[\"])/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?::\\d+)/],\n conditions: { \"STYLE_DEFINITION\": { \"rules\": [28], \"inclusive\": false }, \"STYLE_STMNT\": { \"rules\": [27], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [22], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [20, 21], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [25], \"inclusive\": false }, \"CLASS\": { \"rules\": [24], \"inclusive\": false }, \"LLABEL\": { \"rules\": [99, 100, 101, 102, 103], \"inclusive\": false }, \"ARROW_DIR\": { \"rules\": [85, 86, 87, 88, 89, 90, 91], \"inclusive\": false }, \"BLOCK_ARROW\": { \"rules\": [76, 81, 84], \"inclusive\": false }, \"NODE\": { \"rules\": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 77, 80], \"inclusive\": false }, \"md_string\": { \"rules\": [9, 10, 78, 79], \"inclusive\": false }, \"space\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [12, 13, 82, 83], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [34, 35], \"inclusive\": false }, \"acc_descr\": { \"rules\": [32], \"inclusive\": false }, \"acc_title\": { \"rules\": [30], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 15, 16, 17, 18, 19, 23, 26, 29, 31, 33, 36, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 92, 93, 94, 95, 96, 97, 98, 104], \"inclusive\": true } }\n };\n return lexer2;\n })();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n})();\nparser.parser = parser;\nvar block_default = parser;\n\n// src/diagrams/block/blockDB.ts\nimport { clone } from \"es-toolkit/compat\";\nvar blockDatabase = /* @__PURE__ */ new Map();\nvar edgeList = [];\nvar edgeCount = /* @__PURE__ */ new Map();\nvar COLOR_KEYWORD = \"color\";\nvar FILL_KEYWORD = \"fill\";\nvar BG_FILL = \"bgFill\";\nvar STYLECLASS_SEP = \",\";\nvar classes = /* @__PURE__ */ new Map();\nvar diagramId = \"\";\nvar sanitizeText2 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, getConfig2()), \"sanitizeText\");\nvar addStyleClass = /* @__PURE__ */ __name(function(id, styleAttributes = \"\") {\n let foundClass = classes.get(id);\n if (!foundClass) {\n foundClass = { id, styles: [], textStyles: [] };\n classes.set(id, foundClass);\n }\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (RegExp(COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n}, \"addStyleClass\");\nvar addStyle2Node = /* @__PURE__ */ __name(function(id, styles = \"\") {\n const foundBlock = blockDatabase.get(id);\n if (styles !== void 0 && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n}, \"addStyle2Node\");\nvar setCssClass = /* @__PURE__ */ __name(function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundBlock = blockDatabase.get(id);\n if (foundBlock === void 0) {\n const trimmedId = id.trim();\n foundBlock = { id: trimmedId, type: \"na\", children: [] };\n blockDatabase.set(trimmedId, foundBlock);\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n}, \"setCssClass\");\nvar populateBlockDatabase = /* @__PURE__ */ __name((_blockList, parent) => {\n const blockList = _blockList.flat();\n const children = [];\n const columnSettingBlock = blockList.find((b) => b?.type === \"column-setting\");\n const column = columnSettingBlock?.columns ?? -1;\n for (const block of blockList) {\n if (typeof column === \"number\" && column > 0 && block.type !== \"column-setting\" && typeof block.widthInColumns === \"number\" && block.widthInColumns > column) {\n log.warn(\n `Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`\n );\n }\n if (block.label) {\n block.label = sanitizeText2(block.label);\n }\n if (block.type === \"classDef\") {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === \"applyClass\") {\n setCssClass(block.id, block?.styleClass ?? \"\");\n continue;\n }\n if (block.type === \"applyStyles\") {\n if (block?.stylesStr) {\n addStyle2Node(block.id, block?.stylesStr);\n }\n continue;\n }\n if (block.type === \"column-setting\") {\n parent.columns = block.columns ?? -1;\n } else if (block.type === \"edge\") {\n const count = (edgeCount.get(block.id) ?? 0) + 1;\n edgeCount.set(block.id, count);\n block.id = count + \"-\" + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === \"composite\") {\n block.label = \"\";\n } else {\n block.label = block.id;\n }\n }\n const existingBlock = blockDatabase.get(block.id);\n if (existingBlock === void 0) {\n blockDatabase.set(block.id, block);\n } else {\n if (block.type !== \"na\") {\n existingBlock.type = block.type;\n }\n if (block.label !== block.id) {\n existingBlock.label = block.label;\n }\n }\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === \"space\") {\n const w = block.width ?? 1;\n for (let j = 0; j < w; j++) {\n const newBlock = clone(block);\n newBlock.id = newBlock.id + \"-\" + j;\n blockDatabase.set(newBlock.id, newBlock);\n children.push(newBlock);\n }\n } else if (existingBlock === void 0) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n}, \"populateBlockDatabase\");\nvar blocks = [];\nvar rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\nvar clear2 = /* @__PURE__ */ __name(() => {\n log.debug(\"Clear called\");\n clear();\n rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\n blockDatabase = /* @__PURE__ */ new Map([[\"root\", rootBlock]]);\n blocks = [];\n classes = /* @__PURE__ */ new Map();\n edgeList = [];\n edgeCount = /* @__PURE__ */ new Map();\n diagramId = \"\";\n}, \"clear\");\nfunction typeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"[]\":\n return \"square\";\n case \"()\":\n log.debug(\"we have a round\");\n return \"round\";\n case \"(())\":\n return \"circle\";\n case \">]\":\n return \"rect_left_inv_arrow\";\n case \"{}\":\n return \"diamond\";\n case \"{{}}\":\n return \"hexagon\";\n case \"([])\":\n return \"stadium\";\n case \"[[]]\":\n return \"subroutine\";\n case \"[()]\":\n return \"cylinder\";\n case \"((()))\":\n return \"doublecircle\";\n case \"[//]\":\n return \"lean_right\";\n case \"[\\\\\\\\]\":\n return \"lean_left\";\n case \"[/\\\\]\":\n return \"trapezoid\";\n case \"[\\\\/]\":\n return \"inv_trapezoid\";\n case \"<[]>\":\n return \"block_arrow\";\n default:\n return \"na\";\n }\n}\n__name(typeStr2Type, \"typeStr2Type\");\nfunction edgeTypeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"==\":\n return \"thick\";\n default:\n return \"normal\";\n }\n}\n__name(edgeTypeStr2Type, \"edgeTypeStr2Type\");\nfunction edgeStrToEdgeData(typeStr) {\n const lastChar = typeStr.trim().slice(-1);\n switch (lastChar) {\n case \"x\":\n return \"arrow_cross\";\n case \"o\":\n return \"arrow_circle\";\n case \">\":\n return \"arrow_point\";\n default:\n return \"\";\n }\n}\n__name(edgeStrToEdgeData, \"edgeStrToEdgeData\");\nfunction edgeStrToEdgeStartData(typeStr) {\n const firstChar = typeStr.trim().charAt(0);\n switch (firstChar) {\n case \"x\":\n return \"arrow_cross\";\n case \"o\":\n return \"arrow_circle\";\n case \"<\":\n return \"arrow_point\";\n default:\n return \"arrow_open\";\n }\n}\n__name(edgeStrToEdgeStartData, \"edgeStrToEdgeStartData\");\nfunction edgeStrToThickness(typeStr) {\n return typeStr.includes(\"==\") ? \"thick\" : \"normal\";\n}\n__name(edgeStrToThickness, \"edgeStrToThickness\");\nfunction edgeStrToPattern(typeStr) {\n if (typeStr.includes(\".-\")) {\n return \"dotted\";\n }\n return \"solid\";\n}\n__name(edgeStrToPattern, \"edgeStrToPattern\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nvar setHierarchy = /* @__PURE__ */ __name((block) => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n}, \"setHierarchy\");\nvar getColumns = /* @__PURE__ */ __name((blockId) => {\n const block = blockDatabase.get(blockId);\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n}, \"getColumns\");\nvar getBlocksFlat = /* @__PURE__ */ __name(() => {\n return [...blockDatabase.values()];\n}, \"getBlocksFlat\");\nvar getBlocks = /* @__PURE__ */ __name(() => {\n return blocks || [];\n}, \"getBlocks\");\nvar getEdges = /* @__PURE__ */ __name(() => {\n return edgeList;\n}, \"getEdges\");\nvar getBlock = /* @__PURE__ */ __name((id) => {\n return blockDatabase.get(id);\n}, \"getBlock\");\nvar setBlock = /* @__PURE__ */ __name((block) => {\n blockDatabase.set(block.id, block);\n}, \"setBlock\");\nvar setDiagramId = /* @__PURE__ */ __name((id) => {\n diagramId = id;\n}, \"setDiagramId\");\nvar getDiagramId = /* @__PURE__ */ __name(() => diagramId, \"getDiagramId\");\nvar getLogger = /* @__PURE__ */ __name(() => log, \"getLogger\");\nvar getClasses = /* @__PURE__ */ __name(function() {\n return classes;\n}, \"getClasses\");\nvar db = {\n getConfig: /* @__PURE__ */ __name(() => getConfig().block, \"getConfig\"),\n typeStr2Type,\n edgeTypeStr2Type,\n edgeStrToEdgeData,\n edgeStrToEdgeStartData,\n edgeStrToThickness,\n edgeStrToPattern,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses,\n clear: clear2,\n generateId,\n setDiagramId,\n getDiagramId\n};\nvar blockDB_default = db;\n\n// src/diagrams/block/styles.ts\nimport * as khroma from \"khroma\";\nvar fade = /* @__PURE__ */ __name((color, opacity) => {\n const channel2 = khroma.channel;\n const r = channel2(color, \"r\");\n const g = channel2(color, \"g\");\n const b = channel2(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n}, \"fade\");\nvar getStyles = /* @__PURE__ */ __name((options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \\`<p>\\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg, 0.5)};\n fill: ${fade(options.clusterBkg, 0.5)};\n stroke: ${fade(options.clusterBorder, 0.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/block/blockRenderer.ts\nimport { select as d3select } from \"d3\";\n\n// src/dagre-wrapper/markers.js\nvar insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n}, \"insertMarkers\");\nvar extension = /* @__PURE__ */ __name((elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n}, \"extension\");\nvar composition = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n}, \"composition\");\nvar aggregation = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n}, \"aggregation\");\nvar dependency = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 6).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n}, \"dependency\");\nvar lollipop = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n}, \"lollipop\");\nvar point = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 6).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 4.5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n}, \"point\");\nvar circle = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n}, \"circle\");\nvar cross = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n}, \"cross\");\nvar barb = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n}, \"barb\");\nvar markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb\n};\nvar markers_default = insertMarkers;\n\n// src/diagrams/block/layout.ts\nfunction calculateBlockPosition(columns, position) {\n if (columns === 0 || !Number.isInteger(columns)) {\n throw new Error(\"Columns must be an integer !== 0.\");\n }\n if (position < 0 || !Number.isInteger(position)) {\n throw new Error(\"Position must be a non-negative integer.\" + position);\n }\n if (columns < 0) {\n return { px: position, py: 0 };\n }\n if (columns === 1) {\n return { px: 0, py: position };\n }\n const px = position % columns;\n const py = Math.floor(position / columns);\n return { px, py };\n}\n__name(calculateBlockPosition, \"calculateBlockPosition\");\nvar getMaxChildSize = /* @__PURE__ */ __name((block) => {\n let maxWidth = 0;\n let maxHeight = 0;\n for (const child of block.children) {\n const { width, height, x, y } = child.size ?? { width: 0, height: 0, x: 0, y: 0 };\n log.debug(\n \"getMaxChildSize abc95 child:\",\n child.id,\n \"width:\",\n width,\n \"height:\",\n height,\n \"x:\",\n x,\n \"y:\",\n y,\n child.type\n );\n if (child.type === \"space\") {\n continue;\n }\n const normalizedWidth = width / (child.widthInColumns ?? 1);\n if (normalizedWidth > maxWidth) {\n maxWidth = normalizedWidth;\n }\n if (height > maxHeight) {\n maxHeight = height;\n }\n }\n return { width: maxWidth, height: maxHeight };\n}, \"getMaxChildSize\");\nfunction setBlockSizes(block, db2, siblingWidth = 0, siblingHeight = 0, padding = 8) {\n log.debug(\n \"setBlockSizes abc95 (start)\",\n block.id,\n block?.size?.x,\n \"block width =\",\n block?.size,\n \"siblingWidth\",\n siblingWidth\n );\n if (!block?.size?.width) {\n block.size = {\n width: siblingWidth,\n height: siblingHeight,\n x: 0,\n y: 0\n };\n }\n let maxWidth = 0;\n let maxHeight = 0;\n if (block.children?.length > 0) {\n for (const child of block.children) {\n setBlockSizes(child, db2, 0, 0, padding);\n }\n const childSize = getMaxChildSize(block);\n maxWidth = childSize.width;\n maxHeight = childSize.height;\n log.debug(\"setBlockSizes abc95 maxWidth of\", block.id, \":s children is \", maxWidth, maxHeight);\n for (const child of block.children) {\n if (child.size) {\n log.debug(\n `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`\n );\n child.size.width = maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1);\n child.size.height = maxHeight;\n child.size.x = 0;\n child.size.y = 0;\n log.debug(\n `abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`\n );\n }\n }\n for (const child of block.children) {\n setBlockSizes(child, db2, maxWidth, maxHeight, padding);\n }\n const columns = block.columns ?? -1;\n let numItems = 0;\n for (const child of block.children) {\n numItems += child.widthInColumns ?? 1;\n }\n let xSize = block.children.length;\n if (columns > 0 && columns < numItems) {\n xSize = columns;\n }\n const ySize = Math.ceil(numItems / xSize);\n let width = xSize * (maxWidth + padding) + padding;\n let height = ySize * (maxHeight + padding) + padding;\n if (width < siblingWidth) {\n log.debug(\n `Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`\n );\n width = siblingWidth;\n height = siblingHeight;\n const childWidth = (siblingWidth - xSize * padding - padding) / xSize;\n const childHeight = (siblingHeight - ySize * padding - padding) / ySize;\n log.debug(\"Size indata abc88\", block.id, \"childWidth\", childWidth, \"maxWidth\", maxWidth);\n log.debug(\"Size indata abc88\", block.id, \"childHeight\", childHeight, \"maxHeight\", maxHeight);\n log.debug(\"Size indata abc88 xSize\", xSize, \"padding\", padding);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n child.size.height = childHeight;\n child.size.x = 0;\n child.size.y = 0;\n }\n }\n }\n log.debug(\n `abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block.children.length} width=${Math.max(width, block.size?.width || 0)}`\n );\n if (width < (block?.size?.width || 0)) {\n width = block?.size?.width || 0;\n const num = columns > 0 ? Math.min(block.children.length, columns) : block.children.length;\n if (num > 0) {\n const childWidth = (width - num * padding - padding) / num;\n log.debug(\"abc95 (growing to fit) width\", block.id, width, block.size?.width, childWidth);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n }\n }\n }\n }\n block.size = {\n width,\n height,\n x: 0,\n y: 0\n };\n }\n log.debug(\n \"setBlockSizes abc94 (done)\",\n block.id,\n block?.size?.x,\n block?.size?.width,\n block?.size?.y,\n block?.size?.height\n );\n}\n__name(setBlockSizes, \"setBlockSizes\");\nfunction layoutBlocks(block, db2, padding = 8) {\n log.debug(\n `abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n const columns = block.columns ?? -1;\n log.debug(\"layoutBlocks columns abc95\", block.id, \"=>\", columns, block);\n if (block.children && // find max width of children\n block.children.length > 0) {\n const width = block?.children[0]?.size?.width ?? 0;\n const widthOfChildren = block.children.length * width + (block.children.length - 1) * padding;\n log.debug(\"widthOfChildren 88\", widthOfChildren, \"posX\");\n const rowHeights = /* @__PURE__ */ new Map();\n {\n let colPos = 0;\n for (const child of block.children) {\n if (!child.size) {\n continue;\n }\n const { py } = calculateBlockPosition(columns, colPos);\n const currentMax = rowHeights.get(py) ?? 0;\n if (child.size.height > currentMax) {\n rowHeights.set(py, child.size.height);\n }\n let filled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n filled = Math.min(filled, columns - colPos % columns);\n }\n colPos += filled;\n }\n }\n const rowYOffsets = /* @__PURE__ */ new Map();\n {\n let offset = 0;\n const rows = [...rowHeights.keys()].sort((a, b) => a - b);\n for (const row of rows) {\n rowYOffsets.set(row, offset);\n offset += (rowHeights.get(row) ?? 0) + padding;\n }\n }\n let columnPos = 0;\n log.debug(\"abc91 block?.size?.x\", block.id, block?.size?.x);\n let startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n let rowPos = 0;\n for (const child of block.children) {\n const parent = block;\n if (!child.size) {\n continue;\n }\n const { width: width2, height } = child.size;\n const { px, py } = calculateBlockPosition(columns, columnPos);\n if (py != rowPos) {\n rowPos = py;\n startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n log.debug(\"New row in layout for block\", block.id, \" and child \", child.id, rowPos);\n }\n log.debug(\n `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${parent?.size?.x},${parent?.size?.y}) parent: ${parent.id} width: ${width2}${padding}`\n );\n if (parent.size) {\n const halfWidth = width2 / 2;\n child.size.x = startingPosX + padding + halfWidth;\n log.debug(\n `abc91 layout blocks (calc) px, pyid:${child.id} startingPos=X${startingPosX} new startingPosX${child.size.x} ${halfWidth} padding=${padding} width=${width2} halfWidth=${halfWidth} => x:${child.size.x} y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n startingPosX = child.size.x + halfWidth;\n const rowYOffset = rowYOffsets.get(py) ?? 0;\n const rowHeight = rowHeights.get(py) ?? height;\n child.size.y = parent.size.y - parent.size.height / 2 + rowYOffset + rowHeight / 2 + padding;\n log.debug(\n `abc88 layout blocks (calc) px, pyid:${child.id}startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${child.widthInColumns}(width * (child?.w || 1)) / 2${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n }\n if (child.children) {\n layoutBlocks(child, db2, padding);\n }\n let columnsFilled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n columnsFilled = Math.min(columnsFilled, columns - columnPos % columns);\n }\n columnPos += columnsFilled;\n log.debug(\"abc88 columnsPos\", child, columnPos);\n }\n }\n log.debug(\n `layout blocks (<==layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n}\n__name(layoutBlocks, \"layoutBlocks\");\nfunction findBounds(block, { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) {\n if (block.size && block.id !== \"root\") {\n const { x, y, width, height } = block.size;\n if (x - width / 2 < minX) {\n minX = x - width / 2;\n }\n if (y - height / 2 < minY) {\n minY = y - height / 2;\n }\n if (x + width / 2 > maxX) {\n maxX = x + width / 2;\n }\n if (y + height / 2 > maxY) {\n maxY = y + height / 2;\n }\n }\n if (block.children) {\n for (const child of block.children) {\n ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY }));\n }\n }\n return { minX, minY, maxX, maxY };\n}\n__name(findBounds, \"findBounds\");\nfunction layout(db2) {\n const root = db2.getBlock(\"root\");\n if (!root) {\n return;\n }\n const padding = getConfig2()?.block?.padding ?? 8;\n setBlockSizes(root, db2, 0, 0, padding);\n layoutBlocks(root, db2, padding);\n log.debug(\"getBlocks\", JSON.stringify(root, null, 2));\n const { minX, minY, maxX, maxY } = findBounds(root);\n const height = maxY - minY;\n const width = maxX - minX;\n return { x: minX, y: minY, width, height };\n}\n__name(layout, \"layout\");\n\n// src/diagrams/block/renderHelpers.ts\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\n\n// src/dagre-wrapper/createLabel.js\nvar createLabel = /* @__PURE__ */ __name(async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n const config = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY\n },\n config\n );\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select } from \"d3\";\n\n// src/dagre-wrapper/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n}, \"addEdgeMarkers\");\nvar arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nvar addEdgeMarker = /* @__PURE__ */ __name((svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n}, \"addEdgeMarker\");\n\n// src/dagre-wrapper/edges.js\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {\n const config = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n const isMarkdown = edge.labelType === \"markdown\";\n const labelElement = await createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n // TODO: The old code only set addSvgBackground when using markdown, but\n // this function is only used by block diagrams which never use markdown.\n addSvgBackground: isMarkdown,\n isNode: false,\n markdown: isMarkdown,\n // If using markdown, wrap using default width\n width: isMarkdown ? void 0 : Number.POSITIVE_INFINITY\n },\n config\n );\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n let transformBbox = bbox;\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n transformBbox = bbox;\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n } else {\n const textEl = select(labelElement).select(\"text\").node();\n if (textEl && typeof textEl.getBBox === \"function\") {\n transformBbox = textEl.getBBox();\n }\n }\n label.attr(\"transform\", computeLabelTransform(transformBbox, useHtmlLabels));\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n const startLabelElement = await createLabel_default(inner, edge.startLabelLeft, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n const startLabelElement = await createLabel_default(inner, edge.startLabelRight, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n const endLabelElement = await createLabel_default(endEdgeLabelLeft, edge.endLabelLeft, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n const endLabelElement = await createLabel_default(\n endEdgeLabelRight,\n edge.endLabelRight,\n edge.labelStyle\n );\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getEffectiveHtmlLabels(getConfig2()) && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig2();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n}, \"cutPathAtIntersect\");\nvar insertEdge = /* @__PURE__ */ __name(function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if (head?.intersect && tail?.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n}, \"insertEdge\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select3 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node, totalWidth) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = totalWidth ?? bbox.width + 2 * midpoint + node.padding;\n const padding = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left point of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left point of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point2) {\n return intersect_ellipse_default(node, rx, rx, point2);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersect_line_default(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select2 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(config);\n if (!_classes) {\n classes2 = \"node default\";\n } else {\n classes2 = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config),\n {\n useHtmlLabels,\n width: node.width || config.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config\n );\n } else {\n text = await createLabel_default(\n label,\n sanitizeText(decodeEntities(labelText), config),\n node.labelStyle,\n false,\n isNode\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (getEffectiveHtmlLabels(config)) {\n const div = text.children[0];\n const dv = select2(text);\n await configureLabelImages(div, labelText);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig2());\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect_default.circle(node, 14, point2);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = node.positioned ? node.height : bbox.height + node.padding;\n const m = h / f;\n const w = node.positioned ? node.width : bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const naturalW = bbox.width + 2 * m + node.padding;\n const isSpanning = node.positioned && (node.widthInColumns ?? 1) > 1 && node.width > naturalW;\n const w = isSpanning ? node.width : naturalW;\n const points = getArrowPoints(node.directions, bbox, node, w);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect_default.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = await createLabel_default(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = text.children[0];\n const dv = select3(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = await createLabel_default(\n label,\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n );\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = descr.children[0];\n const dv = select3(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select3(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select3(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle2 = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name(async (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = await createLabel_default(\n labelContainer,\n interfaceLabelText,\n node.labelStyle,\n true,\n true\n );\n let interfaceBBox = interfaceLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = interfaceLabel.children[0];\n const dv = select3(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getEffectiveHtmlLabels(getConfig2())) {\n classTitleString += \"&lt;\" + node.classData.type + \"&gt;\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = await createLabel_default(\n labelContainer,\n classTitleString,\n node.labelStyle,\n true,\n true\n );\n select3(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = classTitleLabel.children[0];\n const dv = select3(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig2())) {\n parsedText = parsedText.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n }\n const lbl = await createLabel_default(\n labelContainer,\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig2())) {\n displayText = displayText.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n }\n const lbl = await createLabel_default(\n labelContainer,\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select3(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select3(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"class_box\");\nvar shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle: circle2,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note_default,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nvar nodeElems = {};\nvar insertNode = /* @__PURE__ */ __name(async (elem, node, renderOptions) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig2().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, renderOptions);\n } else {\n el = await shapes[node.shape](elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n}, \"insertNode\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\n// src/diagrams/block/renderHelpers.ts\nfunction getNodeFromBlock(block, db2, positioned = false) {\n const vertex = block;\n let classStr = \"default\";\n if ((vertex?.classes?.length || 0) > 0) {\n classStr = (vertex?.classes ?? []).join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n let radius = 0;\n let shape = \"\";\n let padding;\n switch (vertex.type) {\n case \"round\":\n radius = 5;\n shape = \"rect\";\n break;\n case \"composite\":\n radius = 0;\n shape = \"composite\";\n padding = 0;\n break;\n case \"square\":\n shape = \"rect\";\n break;\n case \"diamond\":\n shape = \"question\";\n break;\n case \"hexagon\":\n shape = \"hexagon\";\n break;\n case \"block_arrow\":\n shape = \"block_arrow\";\n break;\n case \"odd\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n shape = \"lean_right\";\n break;\n case \"lean_left\":\n shape = \"lean_left\";\n break;\n case \"trapezoid\":\n shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n shape = \"inv_trapezoid\";\n break;\n case \"rect_left_inv_arrow\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n shape = \"circle\";\n break;\n case \"ellipse\":\n shape = \"ellipse\";\n break;\n case \"stadium\":\n shape = \"stadium\";\n break;\n case \"subroutine\":\n shape = \"subroutine\";\n break;\n case \"cylinder\":\n shape = \"cylinder\";\n break;\n case \"group\":\n shape = \"rect\";\n break;\n case \"doublecircle\":\n shape = \"doublecircle\";\n break;\n default:\n shape = \"rect\";\n }\n const styles = getStylesFromArray(vertex?.styles ?? []);\n const vertexText = vertex.label;\n const bounds = vertex.size ?? { width: 0, height: 0, x: 0, y: 0 };\n const dbDiagramId = db2.getDiagramId();\n const node = {\n labelStyle: styles.labelStyle,\n shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: dbDiagramId ? `${dbDiagramId}-${vertex.id}` : vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: void 0,\n type: vertex.type,\n padding: padding ?? getConfig()?.block?.padding ?? 0,\n widthInColumns: vertex.widthInColumns ?? 1\n };\n return node;\n}\n__name(getNodeFromBlock, \"getNodeFromBlock\");\nasync function calculateBlockSize(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, false);\n if (node.type === \"group\") {\n return;\n }\n const config = getConfig();\n const nodeEl = await insertNode(elem, node, { config });\n const boundingBox = nodeEl.node().getBBox();\n const obj = db2.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db2.setBlock(obj);\n nodeEl.remove();\n}\n__name(calculateBlockSize, \"calculateBlockSize\");\nasync function insertBlockPositioned(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, true);\n const obj = db2.getBlock(node.id);\n if (obj.type !== \"space\") {\n const config = getConfig();\n await insertNode(elem, node, { config });\n block.intersect = node?.intersect;\n positionNode(node);\n }\n}\n__name(insertBlockPositioned, \"insertBlockPositioned\");\nasync function performOperations(elem, blocks2, db2, operation) {\n for (const block of blocks2) {\n await operation(elem, block, db2);\n if (block.children) {\n await performOperations(elem, block.children, db2, operation);\n }\n }\n}\n__name(performOperations, \"performOperations\");\nasync function calculateBlockSizes(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, calculateBlockSize);\n}\n__name(calculateBlockSizes, \"calculateBlockSizes\");\nasync function insertBlocks(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, insertBlockPositioned);\n}\n__name(insertBlocks, \"insertBlocks\");\nasync function insertEdges(elem, edges, blocks2, db2, id) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n });\n g.setGraph({\n rankdir: \"TB\",\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8\n });\n for (const block of blocks2) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect\n });\n }\n }\n for (const edge of edges) {\n if (edge.start && edge.end) {\n const startBlock = db2.getBlock(edge.start);\n const endBlock = db2.getBlock(edge.end);\n if (startBlock?.size && endBlock?.size) {\n const start2 = startBlock.size;\n const end2 = endBlock.size;\n const points = [\n { x: start2.x, y: start2.y },\n { x: start2.x + (end2.x - start2.x) / 2, y: start2.y + (end2.y - start2.y) / 2 },\n { x: end2.x, y: end2.y }\n ];\n const prefixedEdgeId = id ? `${id}-${edge.id}` : edge.id;\n const thicknessClass = edge.thickness === \"thick\" ? \"edge-thickness-thick\" : \"edge-thickness-normal\";\n const patternClass = edge.pattern === \"dotted\" ? \"edge-pattern-dotted\" : \"edge-pattern-solid\";\n const dynamicClasses = `${thicknessClass} ${patternClass} flowchart-link LS-a1 LE-b1`;\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: prefixedEdgeId },\n {\n ...edge,\n id: prefixedEdgeId,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: dynamicClasses\n },\n void 0,\n \"block\",\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: \"stroke: #333; stroke-width: 1.5px;fill:none;\",\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: dynamicClasses\n });\n positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points\n }\n );\n }\n }\n }\n }\n}\n__name(insertEdges, \"insertEdges\");\n\n// src/diagrams/block/blockRenderer.ts\nvar getClasses2 = /* @__PURE__ */ __name(function(text, diagObj) {\n return diagObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diagObj) {\n const { securityLevel, block: conf } = getConfig();\n const db2 = diagObj.db;\n db2.setDiagramId(id);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = d3select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? d3select(sandboxElement.nodes()[0].contentDocument.body) : d3select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : d3select(`[id=\"${id}\"]`);\n const markers2 = [\"point\", \"circle\", \"cross\"];\n markers_default(svg, markers2, diagObj.type, id);\n const bl = db2.getBlocks();\n const blArr = db2.getBlocksFlat();\n const edges = db2.getEdges();\n const nodes = svg.insert(\"g\").attr(\"class\", \"block\");\n await calculateBlockSizes(nodes, bl, db2);\n const bounds = layout(db2);\n await insertBlocks(nodes, bl, db2);\n await insertEdges(nodes, edges, blArr, db2, id);\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug(\"Here Bounds\", bounds, bounds2);\n svg.attr(\n \"viewBox\",\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n}, \"draw\");\nvar blockRenderer_default = {\n draw,\n getClasses: getClasses2\n};\n\n// src/diagrams/block/blockDiagram.ts\nvar diagram = {\n parser: block_default,\n db: blockDB_default,\n renderer: blockRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"names":["isArray","value","clone","obj","isPrimitive","tag","getTag","isCloneableObject","result","isTypedArray","typedArray","Ctor","dataView","buffer","byteOffset","byteLength","clonedBuffer","srcView","cloneStringObjectProperties","copyOwnProperties","regExp","map","key","set","args","copyPrototype","copySymbolProperties","object","argumentsTag","arrayTag","arrayBufferTag","dataViewTag","booleanTag","dateTag","float32ArrayTag","float64ArrayTag","int8ArrayTag","int16ArrayTag","int32ArrayTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","uint8ArrayTag","uint8ClampedArrayTag","uint16ArrayTag","uint32ArrayTag","target","source","symbols","i","symbol","stringLength","proto","parser","o","__name","k","v","o2","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","num","spaceId","edgeData","startEdgeData","lineThickness","linePattern","id","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","lexer2","sharedState","yyloc","ranges","popStack","n","lex","token","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","block_default","blockDatabase","edgeList","edgeCount","COLOR_KEYWORD","FILL_KEYWORD","BG_FILL","STYLECLASS_SEP","classes","diagramId","sanitizeText2","txt","common_default","getConfig2","addStyleClass","styleAttributes","foundClass","attrib","fixedAttrib","newStyle2","addStyle2Node","styles","foundBlock","setCssClass","itemIds","cssClassName","trimmedId","populateBlockDatabase","_blockList","parent","blockList","children","column","b","block","log","count","existingBlock","w","j","newBlock","blocks","rootBlock","clear2","clear","typeStr2Type","typeStr","edgeTypeStr2Type","edgeStrToEdgeData","edgeStrToEdgeStartData","edgeStrToThickness","edgeStrToPattern","cnt","generateId","setHierarchy","getColumns","blockId","getBlocksFlat","getBlocks","getEdges","getBlock","setBlock","setDiagramId","getDiagramId","getLogger","getClasses","db","getConfig","blockDB_default","fade","color","opacity","channel2","khroma.channel","g","khroma.rgba","getStyles","options","getIconStyles","styles_default","insertMarkers","elem","markerArray","type","markerName","markers","extension","composition","aggregation","dependency","lollipop","point","circle","cross","barb","markers_default","calculateBlockPosition","columns","position","px","py","getMaxChildSize","maxWidth","maxHeight","child","width","height","x","y","normalizedWidth","setBlockSizes","db2","siblingWidth","siblingHeight","padding","childSize","numItems","xSize","ySize","childWidth","childHeight","layoutBlocks","widthOfChildren","rowHeights","colPos","currentMax","filled","rowYOffsets","offset","rows","a","row","columnPos","startingPosX","rowPos","width2","halfWidth","rowYOffset","rowHeight","columnsFilled","findBounds","minX","minY","maxX","maxY","layout","root","createLabel","element","_vertexText","style","isTitle","isNode","vertexText","config","useHtmlLabels","getEffectiveHtmlLabels","createText","createLabel_default","addEdgeMarkers","svgPath","edge","url","diagramType","addEdgeMarker","arrowTypesMap","arrowType","endMarkerType","suffix","edgeLabels","terminalLabels","insertEdgeLabel","edgeLabel","label","isMarkdown","labelElement","bbox","transformBbox","div","dv","select","textEl","computeLabelTransform","fo","startEdgeLabelLeft","inner","startLabelElement","slBox","setTerminalWidth","startEdgeLabelRight","endEdgeLabelLeft","endLabelElement","endEdgeLabelRight","positionEdgeLabel","paths","path","siteConfig","subGraphTitleTotalMargin","getSubGraphTitleMargins","el","pos","utils_default","outsideNode","node","point2","dx","dy","h","intersection","outsidePoint","insidePoint","Q","R","q","res","_x","_y","cutPathAtIntersect","_points","boundaryNode","points","lastPointOutside","isInside","inter","pointPresent","e","insertEdge","clusterDb","graph","pointsHasChanged","tail","head","lineData","curve","curveBasis","getLineFunctionsWithOffset","lineFunction","line","strokeClasses","getUrl","expandAndDeduplicateDirections","directions","uniqueDirections","direction","getArrowPoints","duplicatedDirections","totalWidth","f","midpoint","intersectNode","intersect_node_default","intersectEllipse","rx","ry","cx","cy","det","intersect_ellipse_default","intersectCircle","intersect_circle_default","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","sameSign","intersect_line_default","intersect_polygon_default","intersectPolygon","polyPoints","x1","y1","intersections","entry","left","top","intersect","pdx","pdy","distp","qdx","qdy","distq","intersectRect","sx","sy","intersect_rect_default","intersect_default","labelHelper","_classes","classes2","shapeSvg","labelText","text","sanitizeText","decodeEntities","halfPadding","select2","configureLabelImages","updateNodeBounds","insertPolygonShape","d","note","rect2","note_default","formatClass","getClassesFromNode","otherClasses","question","s","questionElem","choice","hexagon","m","hex","block_arrow","naturalW","blockArrow","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","rect","totalHeight","propKeys","applyNodePropertyBorders","propKey","composite","labelRect","borders","strokeDashArray","addBorder","length","skipBorder","rectWithTitle","innerLine","text2","title","select3","textRows","titleBox","descr","stadium","circle2","circle3","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","dir","end","class_box","rowPadding","lineHeight","topLine","bottomLine","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","member","parsedInfo","parsedText","lbl","classMethods","displayText","diffX2","diffX","memberBBox","shapes","nodeElems","insertNode","renderOptions","newEl","positionNode","diff","getNodeFromBlock","positioned","vertex","classStr","radius","getStylesFromArray","bounds","dbDiagramId","calculateBlockSize","nodeEl","boundingBox","insertBlockPositioned","performOperations","blocks2","operation","calculateBlockSizes","insertBlocks","insertEdges","edges","graphlib.Graph","startBlock","endBlock","start2","end2","prefixedEdgeId","thicknessClass","patternClass","dynamicClasses","getClasses2","diagObj","draw","_version","securityLevel","conf","sandboxElement","d3select","svg","bl","blArr","nodes","bounds2","magicFactor","useMaxWidth","configureSvgSize","blockRenderer_default","diagram"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"blockDiagram-677ZJIJ3-CuCBVVNa.js","sources":["../../../node_modules/.pnpm/es-toolkit@1.47.0/node_modules/es-toolkit/dist/compat/predicate/isArray.mjs","../../../node_modules/.pnpm/es-toolkit@1.47.0/node_modules/es-toolkit/dist/compat/object/clone.mjs","../../../node_modules/.pnpm/mermaid@11.16.0/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-677ZJIJ3.mjs"],"sourcesContent":["//#region src/compat/predicate/isArray.ts\n/**\n* Checks if the given value is an array.\n*\n* This function tests whether the provided value is an array or not.\n* It returns `true` if the value is an array, and `false` otherwise.\n*\n* This function can also serve as a type predicate in TypeScript, narrowing the type of the argument to an array.\n*\n* @param {any} value - The value to test if it is an array.\n* @returns {value is any[]} `true` if the value is an array, `false` otherwise.\n*\n* @example\n* const value1 = [1, 2, 3];\n* const value2 = 'abc';\n* const value3 = () => {};\n*\n* console.log(isArray(value1)); // true\n* console.log(isArray(value2)); // false\n* console.log(isArray(value3)); // false\n*/\nfunction isArray(value) {\n\treturn Array.isArray(value);\n}\n//#endregion\nexport { isArray };\n","import { isPrimitive } from \"../../predicate/isPrimitive.mjs\";\nimport { getTag } from \"../_internal/getTag.mjs\";\nimport { argumentsTag, arrayBufferTag, arrayTag, booleanTag, dataViewTag, dateTag, float32ArrayTag, float64ArrayTag, int16ArrayTag, int32ArrayTag, int8ArrayTag, mapTag, numberTag, objectTag, regexpTag, setTag, stringTag, symbolTag, uint16ArrayTag, uint32ArrayTag, uint8ArrayTag, uint8ClampedArrayTag } from \"../_internal/tags.mjs\";\nimport { isArray } from \"../predicate/isArray.mjs\";\nimport { isTypedArray } from \"../predicate/isTypedArray.mjs\";\n//#region src/compat/object/clone.ts\n/**\n* Creates a shallow clone of the given object.\n*\n* @template T - The type of the object.\n* @param {T} obj - The object to clone.\n* @returns {T} - A shallow clone of the given object.\n*\n* @example\n* // Clone a primitive objs\n* const num = 29;\n* const clonedNum = clone(num);\n* console.log(clonedNum); // 29\n* console.log(clonedNum === num); // true\n*\n* @example\n* // Clone an array\n* const arr = [1, 2, 3];\n* const clonedArr = clone(arr);\n* console.log(clonedArr); // [1, 2, 3]\n* console.log(clonedArr === arr); // false\n*\n* @example\n* // Clone an object\n* const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] };\n* const clonedObj = clone(obj);\n* console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] }\n* console.log(clonedObj === obj); // false\n*/\nfunction clone(obj) {\n\tif (isPrimitive(obj)) return obj;\n\tconst tag = getTag(obj);\n\tif (!isCloneableObject(obj)) return {};\n\tif (isArray(obj)) {\n\t\tconst result = Array.from(obj);\n\t\tif (obj.length > 0 && typeof obj[0] === \"string\" && Object.hasOwn(obj, \"index\")) {\n\t\t\tresult.index = obj.index;\n\t\t\tresult.input = obj.input;\n\t\t}\n\t\treturn result;\n\t}\n\tif (isTypedArray(obj)) {\n\t\tconst typedArray = obj;\n\t\tconst Ctor = typedArray.constructor;\n\t\treturn new Ctor(typedArray.buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\tif (tag === \"[object ArrayBuffer]\") return new ArrayBuffer(obj.byteLength);\n\tif (tag === \"[object DataView]\") {\n\t\tconst dataView = obj;\n\t\tconst buffer = dataView.buffer;\n\t\tconst byteOffset = dataView.byteOffset;\n\t\tconst byteLength = dataView.byteLength;\n\t\tconst clonedBuffer = new ArrayBuffer(byteLength);\n\t\tconst srcView = new Uint8Array(buffer, byteOffset, byteLength);\n\t\tnew Uint8Array(clonedBuffer).set(srcView);\n\t\treturn new DataView(clonedBuffer);\n\t}\n\tif (tag === \"[object Boolean]\" || tag === \"[object Number]\" || tag === \"[object String]\") {\n\t\tconst Ctor = obj.constructor;\n\t\tconst clone = new Ctor(obj.valueOf());\n\t\tif (tag === \"[object String]\") cloneStringObjectProperties(clone, obj);\n\t\telse copyOwnProperties(clone, obj);\n\t\treturn clone;\n\t}\n\tif (tag === \"[object Date]\") return new Date(Number(obj));\n\tif (tag === \"[object RegExp]\") {\n\t\tconst regExp = obj;\n\t\tconst clone = new RegExp(regExp.source, regExp.flags);\n\t\tclone.lastIndex = regExp.lastIndex;\n\t\treturn clone;\n\t}\n\tif (tag === \"[object Symbol]\") return Object(Symbol.prototype.valueOf.call(obj));\n\tif (tag === \"[object Map]\") {\n\t\tconst map = obj;\n\t\tconst result = /* @__PURE__ */ new Map();\n\t\tmap.forEach((obj, key) => {\n\t\t\tresult.set(key, obj);\n\t\t});\n\t\treturn result;\n\t}\n\tif (tag === \"[object Set]\") {\n\t\tconst set = obj;\n\t\tconst result = /* @__PURE__ */ new Set();\n\t\tset.forEach((obj) => {\n\t\t\tresult.add(obj);\n\t\t});\n\t\treturn result;\n\t}\n\tif (tag === \"[object Arguments]\") {\n\t\tconst args = obj;\n\t\tconst result = {};\n\t\tcopyOwnProperties(result, args);\n\t\tresult.length = args.length;\n\t\tresult[Symbol.iterator] = args[Symbol.iterator];\n\t\treturn result;\n\t}\n\tconst result = {};\n\tcopyPrototype(result, obj);\n\tcopyOwnProperties(result, obj);\n\tcopySymbolProperties(result, obj);\n\treturn result;\n}\nfunction isCloneableObject(object) {\n\tswitch (getTag(object)) {\n\t\tcase argumentsTag:\n\t\tcase arrayTag:\n\t\tcase arrayBufferTag:\n\t\tcase dataViewTag:\n\t\tcase booleanTag:\n\t\tcase dateTag:\n\t\tcase float32ArrayTag:\n\t\tcase float64ArrayTag:\n\t\tcase int8ArrayTag:\n\t\tcase int16ArrayTag:\n\t\tcase int32ArrayTag:\n\t\tcase mapTag:\n\t\tcase numberTag:\n\t\tcase objectTag:\n\t\tcase regexpTag:\n\t\tcase setTag:\n\t\tcase stringTag:\n\t\tcase symbolTag:\n\t\tcase uint8ArrayTag:\n\t\tcase uint8ClampedArrayTag:\n\t\tcase uint16ArrayTag:\n\t\tcase uint32ArrayTag: return true;\n\t\tdefault: return false;\n\t}\n}\nfunction copyOwnProperties(target, source) {\n\tfor (const key in source) if (Object.hasOwn(source, key)) target[key] = source[key];\n}\nfunction copySymbolProperties(target, source) {\n\tconst symbols = Object.getOwnPropertySymbols(source);\n\tfor (let i = 0; i < symbols.length; i++) {\n\t\tconst symbol = symbols[i];\n\t\tif (Object.prototype.propertyIsEnumerable.call(source, symbol)) target[symbol] = source[symbol];\n\t}\n}\nfunction cloneStringObjectProperties(target, source) {\n\tconst stringLength = source.valueOf().length;\n\tfor (const key in source) if (Object.hasOwn(source, key) && (Number.isNaN(Number(key)) || Number(key) >= stringLength)) target[key] = source[key];\n}\nfunction copyPrototype(target, source) {\n\tconst proto = Object.getPrototypeOf(source);\n\tif (proto !== null) {\n\t\tif (typeof source.constructor === \"function\") Object.setPrototypeOf(target, proto);\n\t}\n}\n//#endregion\nexport { clone };\n","import {\n getIconStyles\n} from \"./chunk-5VM5RSS4.mjs\";\nimport {\n computeLabelTransform,\n getLineFunctionsWithOffset\n} from \"./chunk-7BUUIJ7U.mjs\";\nimport {\n configureLabelImages,\n getSubGraphTitleMargins\n} from \"./chunk-OGEWGWER.mjs\";\nimport {\n createText\n} from \"./chunk-Q4XR5HBZ.mjs\";\nimport \"./chunk-HOUHSVGY.mjs\";\nimport {\n decodeEntities,\n getStylesFromArray,\n utils_default\n} from \"./chunk-ICXQ74PX.mjs\";\nimport {\n clear,\n common_default,\n configureSvgSize,\n getConfig,\n getConfig2,\n getEffectiveHtmlLabels,\n getUrl,\n sanitizeText\n} from \"./chunk-WYO6CB5R.mjs\";\nimport {\n log\n} from \"./chunk-X3CZISLH.mjs\";\nimport {\n __name\n} from \"./chunk-Y2CYZVJY.mjs\";\n\n// src/diagrams/block/parser/block.jison\nvar parser = (function() {\n var o = /* @__PURE__ */ __name(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [1, 15], $V1 = [1, 7], $V2 = [1, 13], $V3 = [1, 14], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 10, 21, 28, 29, 30, 31, 39, 43, 46], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 10, 15, 16, 21, 28, 29, 30, 31, 39, 43, 46], $Vd = [8, 10, 15, 16, 21, 27, 28, 29, 30, 31, 39, 43, 46], $Ve = [1, 49];\n var parser2 = {\n trace: /* @__PURE__ */ __name(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"spaceLines\": 3, \"SPACELINE\": 4, \"NL\": 5, \"separator\": 6, \"SPACE\": 7, \"EOF\": 8, \"start\": 9, \"BLOCK_DIAGRAM_KEY\": 10, \"document\": 11, \"stop\": 12, \"statement\": 13, \"link\": 14, \"LINK\": 15, \"START_LINK\": 16, \"LINK_LABEL\": 17, \"STR\": 18, \"nodeStatement\": 19, \"columnsStatement\": 20, \"SPACE_BLOCK\": 21, \"blockStatement\": 22, \"classDefStatement\": 23, \"cssClassStatement\": 24, \"styleStatement\": 25, \"node\": 26, \"SIZE\": 27, \"COLUMNS\": 28, \"id-block\": 29, \"end\": 30, \"NODE_ID\": 31, \"nodeShapeNLabel\": 32, \"dirList\": 33, \"DIR\": 34, \"NODE_DSTART\": 35, \"NODE_DEND\": 36, \"BLOCK_ARROW_START\": 37, \"BLOCK_ARROW_END\": 38, \"classDef\": 39, \"CLASSDEF_ID\": 40, \"CLASSDEF_STYLEOPTS\": 41, \"DEFAULT\": 42, \"class\": 43, \"CLASSENTITY_IDS\": 44, \"STYLECLASS\": 45, \"style\": 46, \"STYLE_ENTITY_IDS\": 47, \"STYLE_DEFINITION_DATA\": 48, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACELINE\", 5: \"NL\", 7: \"SPACE\", 8: \"EOF\", 10: \"BLOCK_DIAGRAM_KEY\", 15: \"LINK\", 16: \"START_LINK\", 17: \"LINK_LABEL\", 18: \"STR\", 21: \"SPACE_BLOCK\", 27: \"SIZE\", 28: \"COLUMNS\", 29: \"id-block\", 30: \"end\", 31: \"NODE_ID\", 34: \"DIR\", 35: \"NODE_DSTART\", 36: \"NODE_DEND\", 37: \"BLOCK_ARROW_START\", 38: \"BLOCK_ARROW_END\", 39: \"classDef\", 40: \"CLASSDEF_ID\", 41: \"CLASSDEF_STYLEOPTS\", 42: \"DEFAULT\", 43: \"class\", 44: \"CLASSENTITY_IDS\", 45: \"STYLECLASS\", 46: \"style\", 47: \"STYLE_ENTITY_IDS\", 48: \"STYLE_DEFINITION_DATA\" },\n productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [33, 1], [33, 2], [32, 3], [32, 4], [23, 3], [23, 3], [24, 3], [25, 3]],\n performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.getLogger().debug(\"Rule: separator (NL) \");\n break;\n case 5:\n yy.getLogger().debug(\"Rule: separator (Space) \");\n break;\n case 6:\n yy.getLogger().debug(\"Rule: separator (EOF) \");\n break;\n case 7:\n yy.getLogger().debug(\"Rule: hierarchy: \", $$[$0 - 1]);\n yy.setHierarchy($$[$0 - 1]);\n break;\n case 8:\n yy.getLogger().debug(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().debug(\"Stop EOF \");\n break;\n case 10:\n yy.getLogger().debug(\"Stop NL2 \");\n break;\n case 11:\n yy.getLogger().debug(\"Stop EOF2 \");\n break;\n case 12:\n yy.getLogger().debug(\"Rule: statement: \", $$[$0]);\n typeof $$[$0].length === \"number\" ? this.$ = $$[$0] : this.$ = [$$[$0]];\n break;\n case 13:\n yy.getLogger().debug(\"Rule: statement #2: \", $$[$0 - 1]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 14:\n yy.getLogger().debug(\"Rule: link: \", $$[$0], yytext);\n this.$ = { edgeTypeStr: $$[$0], label: \"\" };\n break;\n case 15:\n yy.getLogger().debug(\"Rule: LABEL link: \", $$[$0 - 3], $$[$0 - 1], $$[$0]);\n this.$ = { edgeTypeStr: $$[$0], label: $$[$0 - 1] };\n break;\n case 18:\n const num = parseInt($$[$0]);\n const spaceId = yy.generateId();\n this.$ = { id: spaceId, type: \"space\", label: \"\", width: num, children: [] };\n break;\n case 23:\n yy.getLogger().debug(\"Rule: (nodeStatement link node) \", $$[$0 - 2], $$[$0 - 1], $$[$0], \" typestr: \", $$[$0 - 1].edgeTypeStr);\n const edgeData = yy.edgeStrToEdgeData($$[$0 - 1].edgeTypeStr);\n const startEdgeData = yy.edgeStrToEdgeStartData($$[$0 - 1].edgeTypeStr);\n const lineThickness = yy.edgeStrToThickness($$[$0 - 1].edgeTypeStr);\n const linePattern = yy.edgeStrToPattern($$[$0 - 1].edgeTypeStr);\n this.$ = [\n { id: $$[$0 - 2].id, label: $$[$0 - 2].label, type: $$[$0 - 2].type, directions: $$[$0 - 2].directions },\n { id: $$[$0 - 2].id + \"-\" + $$[$0].id, start: $$[$0 - 2].id, end: $$[$0].id, label: $$[$0 - 1].label, type: \"edge\", thickness: lineThickness, pattern: linePattern, directions: $$[$0].directions, arrowTypeEnd: edgeData, arrowTypeStart: startEdgeData },\n { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions }\n ];\n break;\n case 24:\n yy.getLogger().debug(\"Rule: nodeStatement (abc88 node size) \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1].id, label: $$[$0 - 1].label, type: yy.typeStr2Type($$[$0 - 1].typeStr), directions: $$[$0 - 1].directions, widthInColumns: parseInt($$[$0], 10) };\n break;\n case 25:\n yy.getLogger().debug(\"Rule: nodeStatement (node) \", $$[$0]);\n this.$ = { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions, widthInColumns: 1 };\n break;\n case 26:\n yy.getLogger().debug(\"APA123\", this ? this : \"na\");\n yy.getLogger().debug(\"COLUMNS: \", $$[$0]);\n this.$ = { type: \"column-setting\", columns: $$[$0] === \"auto\" ? -1 : parseInt($$[$0]) };\n break;\n case 27:\n yy.getLogger().debug(\"Rule: id-block statement : \", $$[$0 - 2], $$[$0 - 1]);\n const id2 = yy.generateId();\n this.$ = { ...$$[$0 - 2], type: \"composite\", children: $$[$0 - 1] };\n break;\n case 28:\n yy.getLogger().debug(\"Rule: blockStatement : \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n const id = yy.generateId();\n this.$ = { id, type: \"composite\", label: \"\", children: $$[$0 - 1] };\n break;\n case 29:\n yy.getLogger().debug(\"Rule: node (NODE_ID separator): \", $$[$0]);\n this.$ = { id: $$[$0] };\n break;\n case 30:\n yy.getLogger().debug(\"Rule: node (NODE_ID nodeShapeNLabel separator): \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1], label: $$[$0].label, typeStr: $$[$0].typeStr, directions: $$[$0].directions };\n break;\n case 31:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0]);\n this.$ = [$$[$0]];\n break;\n case 32:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0 - 1], $$[$0]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 33:\n yy.getLogger().debug(\"Rule: nodeShapeNLabel: \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 2] + $$[$0], label: $$[$0 - 1] };\n break;\n case 34:\n yy.getLogger().debug(\"Rule: BLOCK_ARROW nodeShapeNLabel: \", $$[$0 - 3], $$[$0 - 2], \" #3:\", $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 3] + $$[$0], label: $$[$0 - 2], directions: $$[$0 - 1] };\n break;\n case 35:\n case 36:\n this.$ = { type: \"classDef\", id: $$[$0 - 1].trim(), css: $$[$0].trim() };\n break;\n case 37:\n this.$ = { type: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 38:\n this.$ = { type: \"applyStyles\", id: $$[$0 - 1].trim(), stylesStr: $$[$0].trim() };\n break;\n }\n }, \"anonymous\"),\n table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 10: $V0, 11: 3, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 8: [1, 20] }, o($V8, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 10: $V0, 21: $V1, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }), o($V9, [2, 16], { 14: 22, 15: $Va, 16: $Vb }), o($V9, [2, 17]), o($V9, [2, 18]), o($V9, [2, 19]), o($V9, [2, 20]), o($V9, [2, 21]), o($V9, [2, 22]), o($Vc, [2, 25], { 27: [1, 25] }), o($V9, [2, 26]), { 19: 26, 26: 12, 31: $V4 }, { 10: $V0, 11: 27, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 40: [1, 28], 42: [1, 29] }, { 44: [1, 30] }, { 47: [1, 31] }, o($Vd, [2, 29], { 32: 32, 35: [1, 33], 37: [1, 34] }), { 1: [2, 7] }, o($V8, [2, 13]), { 26: 35, 31: $V4 }, { 31: [2, 14] }, { 17: [1, 36] }, o($Vc, [2, 24]), { 10: $V0, 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 30: [1, 38] }, { 41: [1, 39] }, { 41: [1, 40] }, { 45: [1, 41] }, { 48: [1, 42] }, o($Vd, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, o($Vc, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, o($V9, [2, 28]), o($V9, [2, 35]), o($V9, [2, 36]), o($V9, [2, 37]), o($V9, [2, 38]), { 36: [1, 47] }, { 33: 48, 34: $Ve }, { 15: [1, 50] }, o($V9, [2, 27]), o($Vd, [2, 33]), { 38: [1, 51] }, { 33: 52, 34: $Ve, 38: [2, 31] }, { 31: [2, 15] }, o($Vd, [2, 34]), { 38: [2, 32] }],\n defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] },\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n }, \"parseError\"),\n parse: /* @__PURE__ */ __name(function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n __name(popStack, \"popStack\");\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n __name(lex, \"lex\");\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }, \"parse\")\n };\n var lexer = /* @__PURE__ */ (function() {\n var lexer2 = {\n EOF: 1,\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n }, \"parseError\"),\n // resets the lexer, sets new input\n setInput: /* @__PURE__ */ __name(function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n }, \"setInput\"),\n // consumes and returns one char from the input\n input: /* @__PURE__ */ __name(function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n }, \"input\"),\n // unshifts one char (or a string) into the input\n unput: /* @__PURE__ */ __name(function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n }, \"unput\"),\n // When called from action, caches matched text and appends it on next action\n more: /* @__PURE__ */ __name(function() {\n this._more = true;\n return this;\n }, \"more\"),\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: /* @__PURE__ */ __name(function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n }, \"reject\"),\n // retain first n characters of the match\n less: /* @__PURE__ */ __name(function(n) {\n this.unput(this.match.slice(n));\n }, \"less\"),\n // displays already matched input, i.e. for error messages\n pastInput: /* @__PURE__ */ __name(function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n }, \"pastInput\"),\n // displays upcoming input, i.e. for error messages\n upcomingInput: /* @__PURE__ */ __name(function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n }, \"upcomingInput\"),\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: /* @__PURE__ */ __name(function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n }, \"showPosition\"),\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: /* @__PURE__ */ __name(function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n }, \"test_match\"),\n // return next match in input\n next: /* @__PURE__ */ __name(function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n }, \"next\"),\n // return next match that has a token\n lex: /* @__PURE__ */ __name(function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n }, \"lex\"),\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: /* @__PURE__ */ __name(function begin(condition) {\n this.conditionStack.push(condition);\n }, \"begin\"),\n // pop the previously active lexer condition state off the condition stack\n popState: /* @__PURE__ */ __name(function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n }, \"popState\"),\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: /* @__PURE__ */ __name(function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n }, \"_currentRules\"),\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: /* @__PURE__ */ __name(function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n }, \"topState\"),\n // alias for begin(condition)\n pushState: /* @__PURE__ */ __name(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ __name(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: {},\n performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n yy.getLogger().debug(\"Found block-beta\");\n return 10;\n break;\n case 1:\n yy.getLogger().debug(\"Found id-block\");\n return 29;\n break;\n case 2:\n yy.getLogger().debug(\"Found block\");\n return 10;\n break;\n case 3:\n yy.getLogger().debug(\".\", yy_.yytext);\n break;\n case 4:\n yy.getLogger().debug(\"_\", yy_.yytext);\n break;\n case 5:\n return 5;\n break;\n case 6:\n yy_.yytext = -1;\n return 28;\n break;\n case 7:\n yy_.yytext = yy_.yytext.replace(/columns\\s+/, \"\");\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 28;\n break;\n case 8:\n this.pushState(\"md_string\");\n break;\n case 9:\n return \"MD_STR\";\n break;\n case 10:\n this.popState();\n break;\n case 11:\n this.pushState(\"string\");\n break;\n case 12:\n yy.getLogger().debug(\"LEX: POPPING STR:\", yy_.yytext);\n this.popState();\n break;\n case 13:\n yy.getLogger().debug(\"LEX: STR end:\", yy_.yytext);\n return \"STR\";\n break;\n case 14:\n yy_.yytext = yy_.yytext.replace(/space\\:/, \"\");\n yy.getLogger().debug(\"SPACE NUM (LEX)\", yy_.yytext);\n return 21;\n break;\n case 15:\n yy_.yytext = \"1\";\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 21;\n break;\n case 16:\n return 42;\n break;\n case 17:\n return \"LINKSTYLE\";\n break;\n case 18:\n return \"INTERPOLATE\";\n break;\n case 19:\n this.pushState(\"CLASSDEF\");\n return 39;\n break;\n case 20:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n break;\n case 21:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 40;\n break;\n case 22:\n this.popState();\n return 41;\n break;\n case 23:\n this.pushState(\"CLASS\");\n return 43;\n break;\n case 24:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 44;\n break;\n case 25:\n this.popState();\n return 45;\n break;\n case 26:\n this.pushState(\"STYLE_STMNT\");\n return 46;\n break;\n case 27:\n this.popState();\n this.pushState(\"STYLE_DEFINITION\");\n return 47;\n break;\n case 28:\n this.popState();\n return 48;\n break;\n case 29:\n this.pushState(\"acc_title\");\n return \"acc_title\";\n break;\n case 30:\n this.popState();\n return \"acc_title_value\";\n break;\n case 31:\n this.pushState(\"acc_descr\");\n return \"acc_descr\";\n break;\n case 32:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 33:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return \"acc_descr_multiline_value\";\n break;\n case 36:\n return 30;\n break;\n case 37:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 38:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 39:\n this.popState();\n yy.getLogger().debug(\"Lex: ))\");\n return \"NODE_DEND\";\n break;\n case 40:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 41:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 42:\n this.popState();\n yy.getLogger().debug(\"Lex: (-\");\n return \"NODE_DEND\";\n break;\n case 43:\n this.popState();\n yy.getLogger().debug(\"Lex: -)\");\n return \"NODE_DEND\";\n break;\n case 44:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 45:\n this.popState();\n yy.getLogger().debug(\"Lex: ]]\");\n return \"NODE_DEND\";\n break;\n case 46:\n this.popState();\n yy.getLogger().debug(\"Lex: (\");\n return \"NODE_DEND\";\n break;\n case 47:\n this.popState();\n yy.getLogger().debug(\"Lex: ])\");\n return \"NODE_DEND\";\n break;\n case 48:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 49:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 50:\n this.popState();\n yy.getLogger().debug(\"Lex: )]\");\n return \"NODE_DEND\";\n break;\n case 51:\n this.popState();\n yy.getLogger().debug(\"Lex: )\");\n return \"NODE_DEND\";\n break;\n case 52:\n this.popState();\n yy.getLogger().debug(\"Lex: ]>\");\n return \"NODE_DEND\";\n break;\n case 53:\n this.popState();\n yy.getLogger().debug(\"Lex: ]\");\n return \"NODE_DEND\";\n break;\n case 54:\n yy.getLogger().debug(\"Lexa: -)\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 55:\n yy.getLogger().debug(\"Lexa: (-\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 56:\n yy.getLogger().debug(\"Lexa: ))\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 57:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 58:\n yy.getLogger().debug(\"Lex: (((\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 59:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 60:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 61:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 62:\n yy.getLogger().debug(\"Lexc: >\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 63:\n yy.getLogger().debug(\"Lexa: ([\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 64:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 65:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 66:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 67:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 68:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 69:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 70:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 71:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 72:\n yy.getLogger().debug(\"Lexa: [\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 73:\n this.pushState(\"BLOCK_ARROW\");\n yy.getLogger().debug(\"LEX ARR START\");\n return 37;\n break;\n case 74:\n yy.getLogger().debug(\"Lex: NODE_ID\", yy_.yytext);\n return 31;\n break;\n case 75:\n yy.getLogger().debug(\"Lex: EOF\", yy_.yytext);\n return 8;\n break;\n case 76:\n this.pushState(\"md_string\");\n break;\n case 77:\n this.pushState(\"md_string\");\n break;\n case 78:\n return \"NODE_DESCR\";\n break;\n case 79:\n this.popState();\n break;\n case 80:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n break;\n case 81:\n yy.getLogger().debug(\"LEX ARR: Starting string\");\n this.pushState(\"string\");\n break;\n case 82:\n yy.getLogger().debug(\"LEX: NODE_DESCR:\", yy_.yytext);\n return \"NODE_DESCR\";\n break;\n case 83:\n yy.getLogger().debug(\"LEX POPPING\");\n this.popState();\n break;\n case 84:\n yy.getLogger().debug(\"Lex: =>BAE\");\n this.pushState(\"ARROW_DIR\");\n break;\n case 85:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (right): dir:\", yy_.yytext);\n return \"DIR\";\n break;\n case 86:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (left):\", yy_.yytext);\n return \"DIR\";\n break;\n case 87:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (x):\", yy_.yytext);\n return \"DIR\";\n break;\n case 88:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (y):\", yy_.yytext);\n return \"DIR\";\n break;\n case 89:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (up):\", yy_.yytext);\n return \"DIR\";\n break;\n case 90:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (down):\", yy_.yytext);\n return \"DIR\";\n break;\n case 91:\n yy_.yytext = \"]>\";\n yy.getLogger().debug(\"Lex (ARROW_DIR end):\", yy_.yytext);\n this.popState();\n this.popState();\n return \"BLOCK_ARROW_END\";\n break;\n case 92:\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 93:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 94:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 95:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 96:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 97:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 98:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 99:\n this.pushState(\"md_string\");\n break;\n case 100:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n return \"LINK_LABEL\";\n break;\n case 101:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 102:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 103:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 104:\n yy.getLogger().debug(\"Lex: COLON\", yy_.yytext);\n yy_.yytext = yy_.yytext.slice(1);\n return 27;\n break;\n }\n }, \"anonymous\"),\n rules: [/^(?:block-beta\\b)/, /^(?:block:)/, /^(?:block\\b)/, /^(?:[\\s]+)/, /^(?:[\\n]+)/, /^(?:((\\u000D\\u000A)|(\\u000A)))/, /^(?:columns\\s+auto\\b)/, /^(?:columns\\s+[\\d]+)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:space[:]\\d+)/, /^(?:space\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\s+)/, /^(?:DEFAULT\\s+)/, /^(?:\\w+\\s+)/, /^(?:[^\\n]*)/, /^(?:class\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:style\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:end\\b\\s*)/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:[\\)]\\))/, /^(?:\\}\\})/, /^(?:\\})/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\()/, /^(?:\\]\\])/, /^(?:\\()/, /^(?:\\]\\))/, /^(?:\\\\\\])/, /^(?:\\/\\])/, /^(?:\\)\\])/, /^(?:[\\)])/, /^(?:\\]>)/, /^(?:[\\]])/, /^(?:-\\))/, /^(?:\\(-)/, /^(?:\\)\\))/, /^(?:\\))/, /^(?:\\(\\(\\()/, /^(?:\\(\\()/, /^(?:\\{\\{)/, /^(?:\\{)/, /^(?:>)/, /^(?:\\(\\[)/, /^(?:\\()/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\[\\\\)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:\\[)/, /^(?:<\\[)/, /^(?:[^\\(\\[\\n\\-\\)\\{\\}\\s\\<\\>:=]+)/, /^(?:$)/, /^(?:[\"][`])/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:\\]>\\s*\\()/, /^(?:,?\\s*right\\s*)/, /^(?:,?\\s*left\\s*)/, /^(?:,?\\s*x\\s*)/, /^(?:,?\\s*y\\s*)/, /^(?:,?\\s*up\\s*)/, /^(?:,?\\s*down\\s*)/, /^(?:\\)\\s*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[\"][`])/, /^(?:[\"])/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?::\\d+)/],\n conditions: { \"STYLE_DEFINITION\": { \"rules\": [28], \"inclusive\": false }, \"STYLE_STMNT\": { \"rules\": [27], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [22], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [20, 21], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [25], \"inclusive\": false }, \"CLASS\": { \"rules\": [24], \"inclusive\": false }, \"LLABEL\": { \"rules\": [99, 100, 101, 102, 103], \"inclusive\": false }, \"ARROW_DIR\": { \"rules\": [85, 86, 87, 88, 89, 90, 91], \"inclusive\": false }, \"BLOCK_ARROW\": { \"rules\": [76, 81, 84], \"inclusive\": false }, \"NODE\": { \"rules\": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 77, 80], \"inclusive\": false }, \"md_string\": { \"rules\": [9, 10, 78, 79], \"inclusive\": false }, \"space\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [12, 13, 82, 83], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [34, 35], \"inclusive\": false }, \"acc_descr\": { \"rules\": [32], \"inclusive\": false }, \"acc_title\": { \"rules\": [30], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 15, 16, 17, 18, 19, 23, 26, 29, 31, 33, 36, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 92, 93, 94, 95, 96, 97, 98, 104], \"inclusive\": true } }\n };\n return lexer2;\n })();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n})();\nparser.parser = parser;\nvar block_default = parser;\n\n// src/diagrams/block/blockDB.ts\nimport { clone } from \"es-toolkit/compat\";\nvar blockDatabase = /* @__PURE__ */ new Map();\nvar edgeList = [];\nvar edgeCount = /* @__PURE__ */ new Map();\nvar COLOR_KEYWORD = \"color\";\nvar FILL_KEYWORD = \"fill\";\nvar BG_FILL = \"bgFill\";\nvar STYLECLASS_SEP = \",\";\nvar classes = /* @__PURE__ */ new Map();\nvar diagramId = \"\";\nvar sanitizeText2 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, getConfig2()), \"sanitizeText\");\nvar addStyleClass = /* @__PURE__ */ __name(function(id, styleAttributes = \"\") {\n let foundClass = classes.get(id);\n if (!foundClass) {\n foundClass = { id, styles: [], textStyles: [] };\n classes.set(id, foundClass);\n }\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (RegExp(COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n}, \"addStyleClass\");\nvar addStyle2Node = /* @__PURE__ */ __name(function(id, styles = \"\") {\n const foundBlock = blockDatabase.get(id);\n if (styles !== void 0 && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n}, \"addStyle2Node\");\nvar setCssClass = /* @__PURE__ */ __name(function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundBlock = blockDatabase.get(id);\n if (foundBlock === void 0) {\n const trimmedId = id.trim();\n foundBlock = { id: trimmedId, type: \"na\", children: [] };\n blockDatabase.set(trimmedId, foundBlock);\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n}, \"setCssClass\");\nvar populateBlockDatabase = /* @__PURE__ */ __name((_blockList, parent) => {\n const blockList = _blockList.flat();\n const children = [];\n const columnSettingBlock = blockList.find((b) => b?.type === \"column-setting\");\n const column = columnSettingBlock?.columns ?? -1;\n for (const block of blockList) {\n if (typeof column === \"number\" && column > 0 && block.type !== \"column-setting\" && typeof block.widthInColumns === \"number\" && block.widthInColumns > column) {\n log.warn(\n `Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`\n );\n }\n if (block.label) {\n block.label = sanitizeText2(block.label);\n }\n if (block.type === \"classDef\") {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === \"applyClass\") {\n setCssClass(block.id, block?.styleClass ?? \"\");\n continue;\n }\n if (block.type === \"applyStyles\") {\n if (block?.stylesStr) {\n addStyle2Node(block.id, block?.stylesStr);\n }\n continue;\n }\n if (block.type === \"column-setting\") {\n parent.columns = block.columns ?? -1;\n } else if (block.type === \"edge\") {\n const count = (edgeCount.get(block.id) ?? 0) + 1;\n edgeCount.set(block.id, count);\n block.id = count + \"-\" + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === \"composite\") {\n block.label = \"\";\n } else {\n block.label = block.id;\n }\n }\n const existingBlock = blockDatabase.get(block.id);\n if (existingBlock === void 0) {\n blockDatabase.set(block.id, block);\n } else {\n if (block.type !== \"na\") {\n existingBlock.type = block.type;\n }\n if (block.label !== block.id) {\n existingBlock.label = block.label;\n }\n }\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === \"space\") {\n const w = block.width ?? 1;\n for (let j = 0; j < w; j++) {\n const newBlock = clone(block);\n newBlock.id = newBlock.id + \"-\" + j;\n blockDatabase.set(newBlock.id, newBlock);\n children.push(newBlock);\n }\n } else if (existingBlock === void 0) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n}, \"populateBlockDatabase\");\nvar blocks = [];\nvar rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\nvar clear2 = /* @__PURE__ */ __name(() => {\n log.debug(\"Clear called\");\n clear();\n rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\n blockDatabase = /* @__PURE__ */ new Map([[\"root\", rootBlock]]);\n blocks = [];\n classes = /* @__PURE__ */ new Map();\n edgeList = [];\n edgeCount = /* @__PURE__ */ new Map();\n diagramId = \"\";\n}, \"clear\");\nfunction typeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"[]\":\n return \"square\";\n case \"()\":\n log.debug(\"we have a round\");\n return \"round\";\n case \"(())\":\n return \"circle\";\n case \">]\":\n return \"rect_left_inv_arrow\";\n case \"{}\":\n return \"diamond\";\n case \"{{}}\":\n return \"hexagon\";\n case \"([])\":\n return \"stadium\";\n case \"[[]]\":\n return \"subroutine\";\n case \"[()]\":\n return \"cylinder\";\n case \"((()))\":\n return \"doublecircle\";\n case \"[//]\":\n return \"lean_right\";\n case \"[\\\\\\\\]\":\n return \"lean_left\";\n case \"[/\\\\]\":\n return \"trapezoid\";\n case \"[\\\\/]\":\n return \"inv_trapezoid\";\n case \"<[]>\":\n return \"block_arrow\";\n default:\n return \"na\";\n }\n}\n__name(typeStr2Type, \"typeStr2Type\");\nfunction edgeTypeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"==\":\n return \"thick\";\n default:\n return \"normal\";\n }\n}\n__name(edgeTypeStr2Type, \"edgeTypeStr2Type\");\nfunction edgeStrToEdgeData(typeStr) {\n const lastChar = typeStr.trim().slice(-1);\n switch (lastChar) {\n case \"x\":\n return \"arrow_cross\";\n case \"o\":\n return \"arrow_circle\";\n case \">\":\n return \"arrow_point\";\n default:\n return \"\";\n }\n}\n__name(edgeStrToEdgeData, \"edgeStrToEdgeData\");\nfunction edgeStrToEdgeStartData(typeStr) {\n const firstChar = typeStr.trim().charAt(0);\n switch (firstChar) {\n case \"x\":\n return \"arrow_cross\";\n case \"o\":\n return \"arrow_circle\";\n case \"<\":\n return \"arrow_point\";\n default:\n return \"arrow_open\";\n }\n}\n__name(edgeStrToEdgeStartData, \"edgeStrToEdgeStartData\");\nfunction edgeStrToThickness(typeStr) {\n return typeStr.includes(\"==\") ? \"thick\" : \"normal\";\n}\n__name(edgeStrToThickness, \"edgeStrToThickness\");\nfunction edgeStrToPattern(typeStr) {\n if (typeStr.includes(\".-\")) {\n return \"dotted\";\n }\n return \"solid\";\n}\n__name(edgeStrToPattern, \"edgeStrToPattern\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nvar setHierarchy = /* @__PURE__ */ __name((block) => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n}, \"setHierarchy\");\nvar getColumns = /* @__PURE__ */ __name((blockId) => {\n const block = blockDatabase.get(blockId);\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n}, \"getColumns\");\nvar getBlocksFlat = /* @__PURE__ */ __name(() => {\n return [...blockDatabase.values()];\n}, \"getBlocksFlat\");\nvar getBlocks = /* @__PURE__ */ __name(() => {\n return blocks || [];\n}, \"getBlocks\");\nvar getEdges = /* @__PURE__ */ __name(() => {\n return edgeList;\n}, \"getEdges\");\nvar getBlock = /* @__PURE__ */ __name((id) => {\n return blockDatabase.get(id);\n}, \"getBlock\");\nvar setBlock = /* @__PURE__ */ __name((block) => {\n blockDatabase.set(block.id, block);\n}, \"setBlock\");\nvar setDiagramId = /* @__PURE__ */ __name((id) => {\n diagramId = id;\n}, \"setDiagramId\");\nvar getDiagramId = /* @__PURE__ */ __name(() => diagramId, \"getDiagramId\");\nvar getLogger = /* @__PURE__ */ __name(() => log, \"getLogger\");\nvar getClasses = /* @__PURE__ */ __name(function() {\n return classes;\n}, \"getClasses\");\nvar db = {\n getConfig: /* @__PURE__ */ __name(() => getConfig().block, \"getConfig\"),\n typeStr2Type,\n edgeTypeStr2Type,\n edgeStrToEdgeData,\n edgeStrToEdgeStartData,\n edgeStrToThickness,\n edgeStrToPattern,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses,\n clear: clear2,\n generateId,\n setDiagramId,\n getDiagramId\n};\nvar blockDB_default = db;\n\n// src/diagrams/block/styles.ts\nimport * as khroma from \"khroma\";\nvar fade = /* @__PURE__ */ __name((color, opacity) => {\n const channel2 = khroma.channel;\n const r = channel2(color, \"r\");\n const g = channel2(color, \"g\");\n const b = channel2(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n}, \"fade\");\nvar getStyles = /* @__PURE__ */ __name((options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \\`<p>\\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg, 0.5)};\n fill: ${fade(options.clusterBkg, 0.5)};\n stroke: ${fade(options.clusterBorder, 0.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/block/blockRenderer.ts\nimport { select as d3select } from \"d3\";\n\n// src/dagre-wrapper/markers.js\nvar insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n}, \"insertMarkers\");\nvar extension = /* @__PURE__ */ __name((elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n}, \"extension\");\nvar composition = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n}, \"composition\");\nvar aggregation = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n}, \"aggregation\");\nvar dependency = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 6).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n}, \"dependency\");\nvar lollipop = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n}, \"lollipop\");\nvar point = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 6).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 4.5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n}, \"point\");\nvar circle = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n}, \"circle\");\nvar cross = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n}, \"cross\");\nvar barb = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n}, \"barb\");\nvar markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb\n};\nvar markers_default = insertMarkers;\n\n// src/diagrams/block/layout.ts\nfunction calculateBlockPosition(columns, position) {\n if (columns === 0 || !Number.isInteger(columns)) {\n throw new Error(\"Columns must be an integer !== 0.\");\n }\n if (position < 0 || !Number.isInteger(position)) {\n throw new Error(\"Position must be a non-negative integer.\" + position);\n }\n if (columns < 0) {\n return { px: position, py: 0 };\n }\n if (columns === 1) {\n return { px: 0, py: position };\n }\n const px = position % columns;\n const py = Math.floor(position / columns);\n return { px, py };\n}\n__name(calculateBlockPosition, \"calculateBlockPosition\");\nvar getMaxChildSize = /* @__PURE__ */ __name((block) => {\n let maxWidth = 0;\n let maxHeight = 0;\n for (const child of block.children) {\n const { width, height, x, y } = child.size ?? { width: 0, height: 0, x: 0, y: 0 };\n log.debug(\n \"getMaxChildSize abc95 child:\",\n child.id,\n \"width:\",\n width,\n \"height:\",\n height,\n \"x:\",\n x,\n \"y:\",\n y,\n child.type\n );\n if (child.type === \"space\") {\n continue;\n }\n const normalizedWidth = width / (child.widthInColumns ?? 1);\n if (normalizedWidth > maxWidth) {\n maxWidth = normalizedWidth;\n }\n if (height > maxHeight) {\n maxHeight = height;\n }\n }\n return { width: maxWidth, height: maxHeight };\n}, \"getMaxChildSize\");\nfunction setBlockSizes(block, db2, siblingWidth = 0, siblingHeight = 0, padding = 8) {\n log.debug(\n \"setBlockSizes abc95 (start)\",\n block.id,\n block?.size?.x,\n \"block width =\",\n block?.size,\n \"siblingWidth\",\n siblingWidth\n );\n if (!block?.size?.width) {\n block.size = {\n width: siblingWidth,\n height: siblingHeight,\n x: 0,\n y: 0\n };\n }\n let maxWidth = 0;\n let maxHeight = 0;\n if (block.children?.length > 0) {\n for (const child of block.children) {\n setBlockSizes(child, db2, 0, 0, padding);\n }\n const childSize = getMaxChildSize(block);\n maxWidth = childSize.width;\n maxHeight = childSize.height;\n log.debug(\"setBlockSizes abc95 maxWidth of\", block.id, \":s children is \", maxWidth, maxHeight);\n for (const child of block.children) {\n if (child.size) {\n log.debug(\n `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`\n );\n child.size.width = maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1);\n child.size.height = maxHeight;\n child.size.x = 0;\n child.size.y = 0;\n log.debug(\n `abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`\n );\n }\n }\n for (const child of block.children) {\n setBlockSizes(child, db2, maxWidth, maxHeight, padding);\n }\n const columns = block.columns ?? -1;\n let numItems = 0;\n for (const child of block.children) {\n numItems += child.widthInColumns ?? 1;\n }\n let xSize = block.children.length;\n if (columns > 0 && columns < numItems) {\n xSize = columns;\n }\n const ySize = Math.ceil(numItems / xSize);\n let width = xSize * (maxWidth + padding) + padding;\n let height = ySize * (maxHeight + padding) + padding;\n if (width < siblingWidth) {\n log.debug(\n `Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`\n );\n width = siblingWidth;\n height = siblingHeight;\n const childWidth = (siblingWidth - xSize * padding - padding) / xSize;\n const childHeight = (siblingHeight - ySize * padding - padding) / ySize;\n log.debug(\"Size indata abc88\", block.id, \"childWidth\", childWidth, \"maxWidth\", maxWidth);\n log.debug(\"Size indata abc88\", block.id, \"childHeight\", childHeight, \"maxHeight\", maxHeight);\n log.debug(\"Size indata abc88 xSize\", xSize, \"padding\", padding);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n child.size.height = childHeight;\n child.size.x = 0;\n child.size.y = 0;\n }\n }\n }\n log.debug(\n `abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block.children.length} width=${Math.max(width, block.size?.width || 0)}`\n );\n if (width < (block?.size?.width || 0)) {\n width = block?.size?.width || 0;\n const num = columns > 0 ? Math.min(block.children.length, columns) : block.children.length;\n if (num > 0) {\n const childWidth = (width - num * padding - padding) / num;\n log.debug(\"abc95 (growing to fit) width\", block.id, width, block.size?.width, childWidth);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n }\n }\n }\n }\n block.size = {\n width,\n height,\n x: 0,\n y: 0\n };\n }\n log.debug(\n \"setBlockSizes abc94 (done)\",\n block.id,\n block?.size?.x,\n block?.size?.width,\n block?.size?.y,\n block?.size?.height\n );\n}\n__name(setBlockSizes, \"setBlockSizes\");\nfunction layoutBlocks(block, db2, padding = 8) {\n log.debug(\n `abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n const columns = block.columns ?? -1;\n log.debug(\"layoutBlocks columns abc95\", block.id, \"=>\", columns, block);\n if (block.children && // find max width of children\n block.children.length > 0) {\n const width = block?.children[0]?.size?.width ?? 0;\n const widthOfChildren = block.children.length * width + (block.children.length - 1) * padding;\n log.debug(\"widthOfChildren 88\", widthOfChildren, \"posX\");\n const rowHeights = /* @__PURE__ */ new Map();\n {\n let colPos = 0;\n for (const child of block.children) {\n if (!child.size) {\n continue;\n }\n const { py } = calculateBlockPosition(columns, colPos);\n const currentMax = rowHeights.get(py) ?? 0;\n if (child.size.height > currentMax) {\n rowHeights.set(py, child.size.height);\n }\n let filled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n filled = Math.min(filled, columns - colPos % columns);\n }\n colPos += filled;\n }\n }\n const rowYOffsets = /* @__PURE__ */ new Map();\n {\n let offset = 0;\n const rows = [...rowHeights.keys()].sort((a, b) => a - b);\n for (const row of rows) {\n rowYOffsets.set(row, offset);\n offset += (rowHeights.get(row) ?? 0) + padding;\n }\n }\n let columnPos = 0;\n log.debug(\"abc91 block?.size?.x\", block.id, block?.size?.x);\n let startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n let rowPos = 0;\n for (const child of block.children) {\n const parent = block;\n if (!child.size) {\n continue;\n }\n const { width: width2, height } = child.size;\n const { px, py } = calculateBlockPosition(columns, columnPos);\n if (py != rowPos) {\n rowPos = py;\n startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n log.debug(\"New row in layout for block\", block.id, \" and child \", child.id, rowPos);\n }\n log.debug(\n `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${parent?.size?.x},${parent?.size?.y}) parent: ${parent.id} width: ${width2}${padding}`\n );\n if (parent.size) {\n const halfWidth = width2 / 2;\n child.size.x = startingPosX + padding + halfWidth;\n log.debug(\n `abc91 layout blocks (calc) px, pyid:${child.id} startingPos=X${startingPosX} new startingPosX${child.size.x} ${halfWidth} padding=${padding} width=${width2} halfWidth=${halfWidth} => x:${child.size.x} y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n startingPosX = child.size.x + halfWidth;\n const rowYOffset = rowYOffsets.get(py) ?? 0;\n const rowHeight = rowHeights.get(py) ?? height;\n child.size.y = parent.size.y - parent.size.height / 2 + rowYOffset + rowHeight / 2 + padding;\n log.debug(\n `abc88 layout blocks (calc) px, pyid:${child.id}startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${child.widthInColumns}(width * (child?.w || 1)) / 2${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n }\n if (child.children) {\n layoutBlocks(child, db2, padding);\n }\n let columnsFilled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n columnsFilled = Math.min(columnsFilled, columns - columnPos % columns);\n }\n columnPos += columnsFilled;\n log.debug(\"abc88 columnsPos\", child, columnPos);\n }\n }\n log.debug(\n `layout blocks (<==layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n}\n__name(layoutBlocks, \"layoutBlocks\");\nfunction findBounds(block, { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) {\n if (block.size && block.id !== \"root\") {\n const { x, y, width, height } = block.size;\n if (x - width / 2 < minX) {\n minX = x - width / 2;\n }\n if (y - height / 2 < minY) {\n minY = y - height / 2;\n }\n if (x + width / 2 > maxX) {\n maxX = x + width / 2;\n }\n if (y + height / 2 > maxY) {\n maxY = y + height / 2;\n }\n }\n if (block.children) {\n for (const child of block.children) {\n ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY }));\n }\n }\n return { minX, minY, maxX, maxY };\n}\n__name(findBounds, \"findBounds\");\nfunction layout(db2) {\n const root = db2.getBlock(\"root\");\n if (!root) {\n return;\n }\n const padding = getConfig2()?.block?.padding ?? 8;\n setBlockSizes(root, db2, 0, 0, padding);\n layoutBlocks(root, db2, padding);\n log.debug(\"getBlocks\", JSON.stringify(root, null, 2));\n const { minX, minY, maxX, maxY } = findBounds(root);\n const height = maxY - minY;\n const width = maxX - minX;\n return { x: minX, y: minY, width, height };\n}\n__name(layout, \"layout\");\n\n// src/diagrams/block/renderHelpers.ts\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\n\n// src/dagre-wrapper/createLabel.js\nvar createLabel = /* @__PURE__ */ __name(async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n const config = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY\n },\n config\n );\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select } from \"d3\";\n\n// src/dagre-wrapper/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n}, \"addEdgeMarkers\");\nvar arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nvar addEdgeMarker = /* @__PURE__ */ __name((svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n}, \"addEdgeMarker\");\n\n// src/dagre-wrapper/edges.js\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {\n const config = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n const isMarkdown = edge.labelType === \"markdown\";\n const labelElement = await createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n // TODO: The old code only set addSvgBackground when using markdown, but\n // this function is only used by block diagrams which never use markdown.\n addSvgBackground: isMarkdown,\n isNode: false,\n markdown: isMarkdown,\n // If using markdown, wrap using default width\n width: isMarkdown ? void 0 : Number.POSITIVE_INFINITY\n },\n config\n );\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n let transformBbox = bbox;\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n transformBbox = bbox;\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n } else {\n const textEl = select(labelElement).select(\"text\").node();\n if (textEl && typeof textEl.getBBox === \"function\") {\n transformBbox = textEl.getBBox();\n }\n }\n label.attr(\"transform\", computeLabelTransform(transformBbox, useHtmlLabels));\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n const startLabelElement = await createLabel_default(inner, edge.startLabelLeft, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n const startLabelElement = await createLabel_default(inner, edge.startLabelRight, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n const endLabelElement = await createLabel_default(endEdgeLabelLeft, edge.endLabelLeft, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n const endLabelElement = await createLabel_default(\n endEdgeLabelRight,\n edge.endLabelRight,\n edge.labelStyle\n );\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getEffectiveHtmlLabels(getConfig2()) && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig2();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n}, \"cutPathAtIntersect\");\nvar insertEdge = /* @__PURE__ */ __name(function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if (head?.intersect && tail?.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n}, \"insertEdge\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select3 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node, totalWidth) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = totalWidth ?? bbox.width + 2 * midpoint + node.padding;\n const padding = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left point of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left point of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point2) {\n return intersect_ellipse_default(node, rx, rx, point2);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersect_line_default(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select2 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(config);\n if (!_classes) {\n classes2 = \"node default\";\n } else {\n classes2 = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config),\n {\n useHtmlLabels,\n width: node.width || config.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config\n );\n } else {\n text = await createLabel_default(\n label,\n sanitizeText(decodeEntities(labelText), config),\n node.labelStyle,\n false,\n isNode\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (getEffectiveHtmlLabels(config)) {\n const div = text.children[0];\n const dv = select2(text);\n await configureLabelImages(div, labelText);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig2());\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect_default.circle(node, 14, point2);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = node.positioned ? node.height : bbox.height + node.padding;\n const m = h / f;\n const w = node.positioned ? node.width : bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const naturalW = bbox.width + 2 * m + node.padding;\n const isSpanning = node.positioned && (node.widthInColumns ?? 1) > 1 && node.width > naturalW;\n const w = isSpanning ? node.width : naturalW;\n const points = getArrowPoints(node.directions, bbox, node, w);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect_default.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = await createLabel_default(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = text.children[0];\n const dv = select3(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = await createLabel_default(\n label,\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n );\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = descr.children[0];\n const dv = select3(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select3(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select3(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle2 = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name(async (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = await createLabel_default(\n labelContainer,\n interfaceLabelText,\n node.labelStyle,\n true,\n true\n );\n let interfaceBBox = interfaceLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = interfaceLabel.children[0];\n const dv = select3(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getEffectiveHtmlLabels(getConfig2())) {\n classTitleString += \"&lt;\" + node.classData.type + \"&gt;\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = await createLabel_default(\n labelContainer,\n classTitleString,\n node.labelStyle,\n true,\n true\n );\n select3(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = classTitleLabel.children[0];\n const dv = select3(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig2())) {\n parsedText = parsedText.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n }\n const lbl = await createLabel_default(\n labelContainer,\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig2())) {\n displayText = displayText.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n }\n const lbl = await createLabel_default(\n labelContainer,\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select3(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select3(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"class_box\");\nvar shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle: circle2,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note_default,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nvar nodeElems = {};\nvar insertNode = /* @__PURE__ */ __name(async (elem, node, renderOptions) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig2().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, renderOptions);\n } else {\n el = await shapes[node.shape](elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n}, \"insertNode\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\n// src/diagrams/block/renderHelpers.ts\nfunction getNodeFromBlock(block, db2, positioned = false) {\n const vertex = block;\n let classStr = \"default\";\n if ((vertex?.classes?.length || 0) > 0) {\n classStr = (vertex?.classes ?? []).join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n let radius = 0;\n let shape = \"\";\n let padding;\n switch (vertex.type) {\n case \"round\":\n radius = 5;\n shape = \"rect\";\n break;\n case \"composite\":\n radius = 0;\n shape = \"composite\";\n padding = 0;\n break;\n case \"square\":\n shape = \"rect\";\n break;\n case \"diamond\":\n shape = \"question\";\n break;\n case \"hexagon\":\n shape = \"hexagon\";\n break;\n case \"block_arrow\":\n shape = \"block_arrow\";\n break;\n case \"odd\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n shape = \"lean_right\";\n break;\n case \"lean_left\":\n shape = \"lean_left\";\n break;\n case \"trapezoid\":\n shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n shape = \"inv_trapezoid\";\n break;\n case \"rect_left_inv_arrow\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n shape = \"circle\";\n break;\n case \"ellipse\":\n shape = \"ellipse\";\n break;\n case \"stadium\":\n shape = \"stadium\";\n break;\n case \"subroutine\":\n shape = \"subroutine\";\n break;\n case \"cylinder\":\n shape = \"cylinder\";\n break;\n case \"group\":\n shape = \"rect\";\n break;\n case \"doublecircle\":\n shape = \"doublecircle\";\n break;\n default:\n shape = \"rect\";\n }\n const styles = getStylesFromArray(vertex?.styles ?? []);\n const vertexText = vertex.label;\n const bounds = vertex.size ?? { width: 0, height: 0, x: 0, y: 0 };\n const dbDiagramId = db2.getDiagramId();\n const node = {\n labelStyle: styles.labelStyle,\n shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: dbDiagramId ? `${dbDiagramId}-${vertex.id}` : vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: void 0,\n type: vertex.type,\n padding: padding ?? getConfig()?.block?.padding ?? 0,\n widthInColumns: vertex.widthInColumns ?? 1\n };\n return node;\n}\n__name(getNodeFromBlock, \"getNodeFromBlock\");\nasync function calculateBlockSize(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, false);\n if (node.type === \"group\") {\n return;\n }\n const config = getConfig();\n const nodeEl = await insertNode(elem, node, { config });\n const boundingBox = nodeEl.node().getBBox();\n const obj = db2.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db2.setBlock(obj);\n nodeEl.remove();\n}\n__name(calculateBlockSize, \"calculateBlockSize\");\nasync function insertBlockPositioned(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, true);\n const obj = db2.getBlock(node.id);\n if (obj.type !== \"space\") {\n const config = getConfig();\n await insertNode(elem, node, { config });\n block.intersect = node?.intersect;\n positionNode(node);\n }\n}\n__name(insertBlockPositioned, \"insertBlockPositioned\");\nasync function performOperations(elem, blocks2, db2, operation) {\n for (const block of blocks2) {\n await operation(elem, block, db2);\n if (block.children) {\n await performOperations(elem, block.children, db2, operation);\n }\n }\n}\n__name(performOperations, \"performOperations\");\nasync function calculateBlockSizes(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, calculateBlockSize);\n}\n__name(calculateBlockSizes, \"calculateBlockSizes\");\nasync function insertBlocks(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, insertBlockPositioned);\n}\n__name(insertBlocks, \"insertBlocks\");\nasync function insertEdges(elem, edges, blocks2, db2, id) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n });\n g.setGraph({\n rankdir: \"TB\",\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8\n });\n for (const block of blocks2) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect\n });\n }\n }\n for (const edge of edges) {\n if (edge.start && edge.end) {\n const startBlock = db2.getBlock(edge.start);\n const endBlock = db2.getBlock(edge.end);\n if (startBlock?.size && endBlock?.size) {\n const start2 = startBlock.size;\n const end2 = endBlock.size;\n const points = [\n { x: start2.x, y: start2.y },\n { x: start2.x + (end2.x - start2.x) / 2, y: start2.y + (end2.y - start2.y) / 2 },\n { x: end2.x, y: end2.y }\n ];\n const prefixedEdgeId = id ? `${id}-${edge.id}` : edge.id;\n const thicknessClass = edge.thickness === \"thick\" ? \"edge-thickness-thick\" : \"edge-thickness-normal\";\n const patternClass = edge.pattern === \"dotted\" ? \"edge-pattern-dotted\" : \"edge-pattern-solid\";\n const dynamicClasses = `${thicknessClass} ${patternClass} flowchart-link LS-a1 LE-b1`;\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: prefixedEdgeId },\n {\n ...edge,\n id: prefixedEdgeId,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: dynamicClasses\n },\n void 0,\n \"block\",\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: \"stroke: #333; stroke-width: 1.5px;fill:none;\",\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: dynamicClasses\n });\n positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points\n }\n );\n }\n }\n }\n }\n}\n__name(insertEdges, \"insertEdges\");\n\n// src/diagrams/block/blockRenderer.ts\nvar getClasses2 = /* @__PURE__ */ __name(function(text, diagObj) {\n return diagObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diagObj) {\n const { securityLevel, block: conf } = getConfig();\n const db2 = diagObj.db;\n db2.setDiagramId(id);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = d3select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? d3select(sandboxElement.nodes()[0].contentDocument.body) : d3select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : d3select(`[id=\"${id}\"]`);\n const markers2 = [\"point\", \"circle\", \"cross\"];\n markers_default(svg, markers2, diagObj.type, id);\n const bl = db2.getBlocks();\n const blArr = db2.getBlocksFlat();\n const edges = db2.getEdges();\n const nodes = svg.insert(\"g\").attr(\"class\", \"block\");\n await calculateBlockSizes(nodes, bl, db2);\n const bounds = layout(db2);\n await insertBlocks(nodes, bl, db2);\n await insertEdges(nodes, edges, blArr, db2, id);\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug(\"Here Bounds\", bounds, bounds2);\n svg.attr(\n \"viewBox\",\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n}, \"draw\");\nvar blockRenderer_default = {\n draw,\n getClasses: getClasses2\n};\n\n// src/diagrams/block/blockDiagram.ts\nvar diagram = {\n parser: block_default,\n db: blockDB_default,\n renderer: blockRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"names":["isArray","value","clone","obj","isPrimitive","tag","getTag","isCloneableObject","result","isTypedArray","typedArray","Ctor","dataView","buffer","byteOffset","byteLength","clonedBuffer","srcView","cloneStringObjectProperties","copyOwnProperties","regExp","map","key","set","args","copyPrototype","copySymbolProperties","object","argumentsTag","arrayTag","arrayBufferTag","dataViewTag","booleanTag","dateTag","float32ArrayTag","float64ArrayTag","int8ArrayTag","int16ArrayTag","int32ArrayTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","uint8ArrayTag","uint8ClampedArrayTag","uint16ArrayTag","uint32ArrayTag","target","source","symbols","i","symbol","stringLength","proto","parser","o","__name","k","v","o2","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","num","spaceId","edgeData","startEdgeData","lineThickness","linePattern","id","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","lexer2","sharedState","yyloc","ranges","popStack","n","lex","token","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","block_default","blockDatabase","edgeList","edgeCount","COLOR_KEYWORD","FILL_KEYWORD","BG_FILL","STYLECLASS_SEP","classes","diagramId","sanitizeText2","txt","common_default","getConfig2","addStyleClass","styleAttributes","foundClass","attrib","fixedAttrib","newStyle2","addStyle2Node","styles","foundBlock","setCssClass","itemIds","cssClassName","trimmedId","populateBlockDatabase","_blockList","parent","blockList","children","column","b","block","log","count","existingBlock","w","j","newBlock","blocks","rootBlock","clear2","clear","typeStr2Type","typeStr","edgeTypeStr2Type","edgeStrToEdgeData","edgeStrToEdgeStartData","edgeStrToThickness","edgeStrToPattern","cnt","generateId","setHierarchy","getColumns","blockId","getBlocksFlat","getBlocks","getEdges","getBlock","setBlock","setDiagramId","getDiagramId","getLogger","getClasses","db","getConfig","blockDB_default","fade","color","opacity","channel2","khroma.channel","g","khroma.rgba","getStyles","options","getIconStyles","styles_default","insertMarkers","elem","markerArray","type","markerName","markers","extension","composition","aggregation","dependency","lollipop","point","circle","cross","barb","markers_default","calculateBlockPosition","columns","position","px","py","getMaxChildSize","maxWidth","maxHeight","child","width","height","x","y","normalizedWidth","setBlockSizes","db2","siblingWidth","siblingHeight","padding","childSize","numItems","xSize","ySize","childWidth","childHeight","layoutBlocks","widthOfChildren","rowHeights","colPos","currentMax","filled","rowYOffsets","offset","rows","a","row","columnPos","startingPosX","rowPos","width2","halfWidth","rowYOffset","rowHeight","columnsFilled","findBounds","minX","minY","maxX","maxY","layout","root","createLabel","element","_vertexText","style","isTitle","isNode","vertexText","config","useHtmlLabels","getEffectiveHtmlLabels","createText","createLabel_default","addEdgeMarkers","svgPath","edge","url","diagramType","addEdgeMarker","arrowTypesMap","arrowType","endMarkerType","suffix","edgeLabels","terminalLabels","insertEdgeLabel","edgeLabel","label","isMarkdown","labelElement","bbox","transformBbox","div","dv","select","textEl","computeLabelTransform","fo","startEdgeLabelLeft","inner","startLabelElement","slBox","setTerminalWidth","startEdgeLabelRight","endEdgeLabelLeft","endLabelElement","endEdgeLabelRight","positionEdgeLabel","paths","path","siteConfig","subGraphTitleTotalMargin","getSubGraphTitleMargins","el","pos","utils_default","outsideNode","node","point2","dx","dy","h","intersection","outsidePoint","insidePoint","Q","R","q","res","_x","_y","cutPathAtIntersect","_points","boundaryNode","points","lastPointOutside","isInside","inter","pointPresent","e","insertEdge","clusterDb","graph","pointsHasChanged","tail","head","lineData","curve","curveBasis","getLineFunctionsWithOffset","lineFunction","line","strokeClasses","getUrl","expandAndDeduplicateDirections","directions","uniqueDirections","direction","getArrowPoints","duplicatedDirections","totalWidth","f","midpoint","intersectNode","intersect_node_default","intersectEllipse","rx","ry","cx","cy","det","intersect_ellipse_default","intersectCircle","intersect_circle_default","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","sameSign","intersect_line_default","intersect_polygon_default","intersectPolygon","polyPoints","x1","y1","intersections","entry","left","top","intersect","pdx","pdy","distp","qdx","qdy","distq","intersectRect","sx","sy","intersect_rect_default","intersect_default","labelHelper","_classes","classes2","shapeSvg","labelText","text","sanitizeText","decodeEntities","halfPadding","select2","configureLabelImages","updateNodeBounds","insertPolygonShape","d","note","rect2","note_default","formatClass","getClassesFromNode","otherClasses","question","s","questionElem","choice","hexagon","m","hex","block_arrow","naturalW","blockArrow","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","rect","totalHeight","propKeys","applyNodePropertyBorders","propKey","composite","labelRect","borders","strokeDashArray","addBorder","length","skipBorder","rectWithTitle","innerLine","text2","title","select3","textRows","titleBox","descr","stadium","circle2","circle3","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","dir","end","class_box","rowPadding","lineHeight","topLine","bottomLine","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","member","parsedInfo","parsedText","lbl","classMethods","displayText","diffX2","diffX","memberBBox","shapes","nodeElems","insertNode","renderOptions","newEl","positionNode","diff","getNodeFromBlock","positioned","vertex","classStr","radius","getStylesFromArray","bounds","dbDiagramId","calculateBlockSize","nodeEl","boundingBox","insertBlockPositioned","performOperations","blocks2","operation","calculateBlockSizes","insertBlocks","insertEdges","edges","graphlib.Graph","startBlock","endBlock","start2","end2","prefixedEdgeId","thicknessClass","patternClass","dynamicClasses","getClasses2","diagObj","draw","_version","securityLevel","conf","sandboxElement","d3select","svg","bl","blArr","nodes","bounds2","magicFactor","useMaxWidth","configureSvgSize","blockRenderer_default","diagram"],"mappings":"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","x_google_ignoreList":[0,1,2]}