@plumile/ui 0.1.115 → 0.1.117

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 (274) hide show
  1. package/lib/esm/admin/templates/admin_shell_layout/AdminShellLayout.js +15 -14
  2. package/lib/esm/admin/templates/admin_shell_layout/AdminShellLayout.js.map +1 -1
  3. package/lib/esm/atomic/molecules/markdown/components/MarkdownArticleContainer.css.js +0 -1
  4. package/lib/esm/atomic/molecules/markdown/components/MarkdownDelete.css.js +1 -0
  5. package/lib/esm/backoffice/organisms/backoffice_data_table/BackofficeDataTable.js +59 -56
  6. package/lib/esm/backoffice/organisms/backoffice_data_table/BackofficeDataTable.js.map +1 -1
  7. package/lib/esm/backoffice/organisms/backoffice_data_table/backofficeDataTable.css.js +2 -2
  8. package/lib/esm/backoffice/organisms/backoffice_data_table/backofficeDataTable.css.js.map +1 -1
  9. package/lib/esm/backoffice/organisms/backoffice_virtualized_connection_table/BackofficeVirtualizedConnectionTable.js +3 -2
  10. package/lib/esm/backoffice/organisms/backoffice_virtualized_connection_table/BackofficeVirtualizedConnectionTable.js.map +1 -1
  11. package/lib/esm/backoffice/templates/detail_page_template/DetailPageTemplate.js +42 -39
  12. package/lib/esm/backoffice/templates/detail_page_template/DetailPageTemplate.js.map +1 -1
  13. package/lib/esm/backoffice/templates/detail_page_template/detailPageTemplate.css.js +3 -3
  14. package/lib/esm/backoffice/templates/detail_page_template/detailPageTemplate.css.js.map +1 -1
  15. package/lib/esm/backoffice/templates/list_page_template/ListPageTemplate.js +45 -29
  16. package/lib/esm/backoffice/templates/list_page_template/ListPageTemplate.js.map +1 -1
  17. package/lib/esm/backoffice/templates/list_page_template/listPageTemplate.css.js +73 -13
  18. package/lib/esm/backoffice/templates/list_page_template/listPageTemplate.css.js.map +1 -1
  19. package/lib/esm/components/data-table/DataTable.css.js +52 -52
  20. package/lib/esm/components/data-table/DataTable.css.js.map +1 -1
  21. package/lib/esm/components/data-table/DataTable.js +43 -39
  22. package/lib/esm/components/data-table/DataTable.js.map +1 -1
  23. package/lib/esm/components/data-table/ResponsiveRecordList.css.js +7 -7
  24. package/lib/esm/components/data-table/ResponsiveRecordList.css.js.map +1 -1
  25. package/lib/esm/components/data-table/ResponsiveRecordList.js +86 -61
  26. package/lib/esm/components/data-table/ResponsiveRecordList.js.map +1 -1
  27. package/lib/esm/components/data-table/VirtualizedConnectionTable.js +158 -142
  28. package/lib/esm/components/data-table/VirtualizedConnectionTable.js.map +1 -1
  29. package/lib/esm/components/layout/AppShell.js +2 -1
  30. package/lib/esm/components/layout/AppShell.js.map +1 -1
  31. package/lib/esm/components/layout/PageShell.css.js +8 -8
  32. package/lib/esm/components/layout/PageShell.css.js.map +1 -1
  33. package/lib/esm/components/layout/PageShell.js +115 -107
  34. package/lib/esm/components/layout/PageShell.js.map +1 -1
  35. package/lib/esm/node_modules/dagre-d3-es/src/dagre/layout.js +49 -49
  36. package/lib/esm/node_modules/dagre-d3-es/src/dagre/position/bk.js +69 -69
  37. package/lib/esm/node_modules/es-toolkit/dist/_internal/globalThis.js +8 -0
  38. package/lib/esm/node_modules/es-toolkit/dist/_internal/globalThis.js.map +1 -0
  39. package/lib/esm/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js +8 -0
  40. package/lib/esm/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js.map +1 -0
  41. package/lib/esm/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js +8 -0
  42. package/lib/esm/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js.map +1 -0
  43. package/lib/esm/node_modules/es-toolkit/dist/compat/_internal/getTag.js +8 -0
  44. package/lib/esm/node_modules/es-toolkit/dist/compat/_internal/getTag.js.map +1 -0
  45. package/lib/esm/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +9 -0
  46. package/lib/esm/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js.map +1 -0
  47. package/lib/esm/node_modules/es-toolkit/dist/compat/_internal/tags.js +6 -0
  48. package/lib/esm/node_modules/es-toolkit/dist/compat/_internal/tags.js.map +1 -0
  49. package/lib/esm/node_modules/es-toolkit/dist/compat/function/memoize.js +16 -0
  50. package/lib/esm/node_modules/es-toolkit/dist/compat/function/memoize.js.map +1 -0
  51. package/lib/esm/node_modules/es-toolkit/dist/compat/object/clone.js +101 -0
  52. package/lib/esm/node_modules/es-toolkit/dist/compat/object/clone.js.map +1 -0
  53. package/lib/esm/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +9 -0
  54. package/lib/esm/node_modules/es-toolkit/dist/compat/object/cloneDeep.js.map +1 -0
  55. package/lib/esm/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +33 -0
  56. package/lib/esm/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js.map +1 -0
  57. package/lib/esm/node_modules/es-toolkit/dist/compat/object/merge.js +10 -0
  58. package/lib/esm/node_modules/es-toolkit/dist/compat/object/merge.js.map +1 -0
  59. package/lib/esm/node_modules/es-toolkit/dist/compat/object/mergeWith.js +53 -0
  60. package/lib/esm/node_modules/es-toolkit/dist/compat/object/mergeWith.js.map +1 -0
  61. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isArguments.js +9 -0
  62. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isArguments.js.map +1 -0
  63. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isArray.js +8 -0
  64. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isArray.js.map +1 -0
  65. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js +9 -0
  66. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js.map +1 -0
  67. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js +10 -0
  68. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js.map +1 -0
  69. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js +20 -0
  70. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js.map +1 -0
  71. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js +8 -0
  72. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js.map +1 -0
  73. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +16 -0
  74. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js.map +1 -0
  75. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js +9 -0
  76. package/lib/esm/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js.map +1 -0
  77. package/lib/esm/node_modules/es-toolkit/dist/function/noop.js +6 -0
  78. package/lib/esm/node_modules/es-toolkit/dist/function/noop.js.map +1 -0
  79. package/lib/esm/node_modules/es-toolkit/dist/object/clone.js +28 -0
  80. package/lib/esm/node_modules/es-toolkit/dist/object/clone.js.map +1 -0
  81. package/lib/esm/node_modules/es-toolkit/dist/object/cloneDeepWith.js +118 -0
  82. package/lib/esm/node_modules/es-toolkit/dist/object/cloneDeepWith.js.map +1 -0
  83. package/lib/esm/node_modules/es-toolkit/dist/predicate/isBuffer.js +9 -0
  84. package/lib/esm/node_modules/es-toolkit/dist/predicate/isBuffer.js.map +1 -0
  85. package/lib/esm/node_modules/es-toolkit/dist/predicate/isLength.js +8 -0
  86. package/lib/esm/node_modules/es-toolkit/dist/predicate/isLength.js.map +1 -0
  87. package/lib/esm/node_modules/es-toolkit/dist/predicate/isPrimitive.js +8 -0
  88. package/lib/esm/node_modules/es-toolkit/dist/predicate/isPrimitive.js.map +1 -0
  89. package/lib/esm/node_modules/es-toolkit/dist/predicate/isTypedArray.js +8 -0
  90. package/lib/esm/node_modules/es-toolkit/dist/predicate/isTypedArray.js.map +1 -0
  91. package/lib/esm/node_modules/lodash-es/_arrayLikeKeys.js +8 -8
  92. package/lib/esm/node_modules/lodash-es/_assignMergeValue.js +3 -3
  93. package/lib/esm/node_modules/lodash-es/_assignValue.js +3 -3
  94. package/lib/esm/node_modules/lodash-es/_baseClone.js +31 -31
  95. package/lib/esm/node_modules/lodash-es/_baseForOwn.js +3 -3
  96. package/lib/esm/node_modules/lodash-es/_baseIsEqualDeep.js +10 -10
  97. package/lib/esm/node_modules/lodash-es/_baseMerge.js +9 -9
  98. package/lib/esm/node_modules/lodash-es/_baseMergeDeep.js +17 -17
  99. package/lib/esm/node_modules/lodash-es/_baseOrderBy.js +11 -11
  100. package/lib/esm/node_modules/lodash-es/_baseRest.js +3 -3
  101. package/lib/esm/node_modules/lodash-es/_baseSet.js +4 -4
  102. package/lib/esm/node_modules/lodash-es/_baseSetToString.js +7 -7
  103. package/lib/esm/node_modules/lodash-es/_baseToString.js +5 -5
  104. package/lib/esm/node_modules/lodash-es/_createRange.js +3 -3
  105. package/lib/esm/node_modules/lodash-es/_createSet.js +5 -5
  106. package/lib/esm/node_modules/lodash-es/_flatRest.js +3 -3
  107. package/lib/esm/node_modules/lodash-es/_getSymbolsIn.js +7 -7
  108. package/lib/esm/node_modules/lodash-es/_getTag.js +7 -7
  109. package/lib/esm/node_modules/lodash-es/_hasPath.js +4 -4
  110. package/lib/esm/node_modules/lodash-es/_initCloneByTag.js +8 -8
  111. package/lib/esm/node_modules/lodash-es/_initCloneObject.js +3 -3
  112. package/lib/esm/node_modules/lodash-es/_isFlattenable.js +3 -3
  113. package/lib/esm/node_modules/lodash-es/_isIterateeCall.js +4 -4
  114. package/lib/esm/node_modules/lodash-es/_isKey.js +4 -4
  115. package/lib/esm/node_modules/lodash-es/_setToString.js +3 -3
  116. package/lib/esm/node_modules/lodash-es/defaults.js +9 -9
  117. package/lib/esm/node_modules/lodash-es/forIn.js +3 -3
  118. package/lib/esm/node_modules/lodash-es/isEmpty.js +6 -6
  119. package/lib/esm/node_modules/lodash-es/isPlainObject.js +4 -4
  120. package/lib/esm/node_modules/lodash-es/map.js +3 -3
  121. package/lib/esm/node_modules/lodash-es/merge.js +4 -4
  122. package/lib/esm/node_modules/lodash-es/toNumber.js +7 -7
  123. package/lib/esm/node_modules/lodash-es/union.js +5 -5
  124. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{architectureDiagram-Q4EWVU46.js → architectureDiagram-3BPJPVTR.js} +14 -12
  125. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{architectureDiagram-Q4EWVU46.js.map → architectureDiagram-3BPJPVTR.js.map} +1 -1
  126. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{blockDiagram-DXYQGD6D.js → blockDiagram-GPEHLZMM.js} +453 -428
  127. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-GPEHLZMM.js.map +1 -0
  128. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{c4Diagram-AHTNJAMY.js → c4Diagram-AAUBKEIU.js} +5 -5
  129. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{c4Diagram-AHTNJAMY.js.map → c4Diagram-AAUBKEIU.js.map} +1 -1
  130. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-EDXVE4YY.js → chunk-2J33WTMH.js} +3 -3
  131. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-EDXVE4YY.js.map → chunk-2J33WTMH.js.map} +1 -1
  132. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-5FUZZQ4R.js → chunk-3OPIFGDE.js} +290 -262
  133. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-3OPIFGDE.js.map +1 -0
  134. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-5PVQY5BW.js → chunk-5ZQYHXKU.js} +6 -6
  135. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-5ZQYHXKU.js.map +1 -0
  136. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-4TB4RGXK.js → chunk-727SXJPM.js} +487 -391
  137. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-727SXJPM.js.map +1 -0
  138. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-OYMX7WX6.js → chunk-AQP2D5EJ.js} +157 -147
  139. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-AQP2D5EJ.js.map +1 -0
  140. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-ICPOFSXX.js → chunk-CSCIHK7Q.js} +193 -99
  141. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-CSCIHK7Q.js.map +1 -0
  142. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-ENJZ2VHE.js → chunk-KSCS5N6A.js} +14 -14
  143. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-KSCS5N6A.js.map +1 -0
  144. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-ZZ45TVLE.js → chunk-L5ZTLDWV.js} +4 -4
  145. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-ZZ45TVLE.js.map → chunk-L5ZTLDWV.js.map} +1 -1
  146. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-336JU56O.js → chunk-LZXEDZCA.js} +7 -7
  147. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-336JU56O.js.map → chunk-LZXEDZCA.js.map} +1 -1
  148. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-YZCP3GAM.js → chunk-ND2GUHAM.js} +3 -3
  149. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-YZCP3GAM.js.map → chunk-ND2GUHAM.js.map} +1 -1
  150. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-X2U36JSP.js → chunk-NZK2D7GU.js} +3 -3
  151. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-X2U36JSP.js.map → chunk-NZK2D7GU.js.map} +1 -1
  152. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-U2HBQHQK.js → chunk-O5CBEL6O.js} +4 -4
  153. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-U2HBQHQK.js.map → chunk-O5CBEL6O.js.map} +1 -1
  154. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-426QAEUC.js → chunk-WU5MYG2G.js} +3 -3
  155. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-426QAEUC.js.map → chunk-WU5MYG2G.js.map} +1 -1
  156. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{classDiagram-6PBFFD2Q.js → classDiagram-4FO5ZUOK.js} +13 -13
  157. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{classDiagram-6PBFFD2Q.js.map → classDiagram-4FO5ZUOK.js.map} +1 -1
  158. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{classDiagram-v2-HSJHXN6E.js → classDiagram-v2-Q7XG4LA2.js} +13 -13
  159. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{classDiagram-v2-HSJHXN6E.js.map → classDiagram-v2-Q7XG4LA2.js.map} +1 -1
  160. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{dagre-KV5264BT.js → dagre-BM42HDAG.js} +10 -10
  161. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{dagre-KV5264BT.js.map → dagre-BM42HDAG.js.map} +1 -1
  162. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-MMDJMWI5.js → diagram-2AECGRRQ.js} +5 -5
  163. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-MMDJMWI5.js.map → diagram-2AECGRRQ.js.map} +1 -1
  164. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-5BDNPKRD.js → diagram-5GNKFQAL.js} +5 -5
  165. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-5BDNPKRD.js.map → diagram-5GNKFQAL.js.map} +1 -1
  166. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/diagram-KO2AKTUF.js +435 -0
  167. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/diagram-KO2AKTUF.js.map +1 -0
  168. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-TYMM5635.js → diagram-LMA3HP47.js} +5 -5
  169. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-TYMM5635.js.map → diagram-LMA3HP47.js.map} +1 -1
  170. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-G4DWMVQ6.js → diagram-OG6HWLK6.js} +7 -7
  171. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-G4DWMVQ6.js.map → diagram-OG6HWLK6.js.map} +1 -1
  172. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{erDiagram-SMLLAGMA.js → erDiagram-TEJ5UH35.js} +11 -11
  173. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{erDiagram-SMLLAGMA.js.map → erDiagram-TEJ5UH35.js.map} +1 -1
  174. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{flowDiagram-DWJPFMVM.js → flowDiagram-I6XJVG4X.js} +12 -12
  175. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{flowDiagram-DWJPFMVM.js.map → flowDiagram-I6XJVG4X.js.map} +1 -1
  176. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{ganttDiagram-T4ZO3ILL.js → ganttDiagram-6RSMTGT7.js} +9 -6
  177. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/ganttDiagram-6RSMTGT7.js.map +1 -0
  178. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{gitGraphDiagram-UUTBAWPF.js → gitGraphDiagram-PVQCEYII.js} +4 -4
  179. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{gitGraphDiagram-UUTBAWPF.js.map → gitGraphDiagram-PVQCEYII.js.map} +1 -1
  180. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{infoDiagram-42DDH7IO.js → infoDiagram-5YYISTIA.js} +5 -5
  181. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{infoDiagram-42DDH7IO.js.map → infoDiagram-5YYISTIA.js.map} +1 -1
  182. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{ishikawaDiagram-UXIWVN3A.js → ishikawaDiagram-YF4QCWOH.js} +5 -5
  183. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{ishikawaDiagram-UXIWVN3A.js.map → ishikawaDiagram-YF4QCWOH.js.map} +1 -1
  184. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{journeyDiagram-VCZTEJTY.js → journeyDiagram-JHISSGLW.js} +4 -4
  185. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{journeyDiagram-VCZTEJTY.js.map → journeyDiagram-JHISSGLW.js.map} +1 -1
  186. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{kanban-definition-6JOO6SKY.js → kanban-definition-UN3LZRKU.js} +9 -9
  187. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{kanban-definition-6JOO6SKY.js.map → kanban-definition-UN3LZRKU.js.map} +1 -1
  188. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{mindmap-definition-QFDTVHPH.js → mindmap-definition-RKZ34NQL.js} +12 -12
  189. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{mindmap-definition-QFDTVHPH.js.map → mindmap-definition-RKZ34NQL.js.map} +1 -1
  190. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{pieDiagram-DEJITSTG.js → pieDiagram-4H26LBE5.js} +5 -5
  191. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{pieDiagram-DEJITSTG.js.map → pieDiagram-4H26LBE5.js.map} +1 -1
  192. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{quadrantDiagram-34T5L4WZ.js → quadrantDiagram-W4KKPZXB.js} +316 -289
  193. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/quadrantDiagram-W4KKPZXB.js.map +1 -0
  194. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{requirementDiagram-MS252O5E.js → requirementDiagram-4Y6WPE33.js} +11 -11
  195. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{requirementDiagram-MS252O5E.js.map → requirementDiagram-4Y6WPE33.js.map} +1 -1
  196. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{sankeyDiagram-XADWPNL6.js → sankeyDiagram-5OEKKPKP.js} +80 -31
  197. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{sankeyDiagram-XADWPNL6.js.map → sankeyDiagram-5OEKKPKP.js.map} +1 -1
  198. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{sequenceDiagram-FGHM5R23.js → sequenceDiagram-3UESZ5HK.js} +17 -10
  199. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-3UESZ5HK.js.map +1 -0
  200. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{stateDiagram-FHFEXIEX.js → stateDiagram-AJRCARHV.js} +12 -12
  201. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{stateDiagram-FHFEXIEX.js.map → stateDiagram-AJRCARHV.js.map} +1 -1
  202. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{stateDiagram-v2-QKLJ7IA2.js → stateDiagram-v2-BHNVJYJU.js} +12 -12
  203. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{stateDiagram-v2-QKLJ7IA2.js.map → stateDiagram-v2-BHNVJYJU.js.map} +1 -1
  204. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{timeline-definition-GMOUNBTQ.js → timeline-definition-PNZ67QCA.js} +5 -5
  205. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{timeline-definition-GMOUNBTQ.js.map → timeline-definition-PNZ67QCA.js.map} +1 -1
  206. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{vennDiagram-DHZGUBPP.js → vennDiagram-CIIHVFJN.js} +5 -5
  207. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{vennDiagram-DHZGUBPP.js.map → vennDiagram-CIIHVFJN.js.map} +1 -1
  208. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{wardleyDiagram-NUSXRM2D.js → wardleyDiagram-YWT4CUSO.js} +188 -122
  209. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/wardleyDiagram-YWT4CUSO.js.map +1 -0
  210. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{xychartDiagram-5P7HB3ND.js → xychartDiagram-2RQKCTM6.js} +6 -6
  211. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/{xychartDiagram-5P7HB3ND.js.map → xychartDiagram-2RQKCTM6.js.map} +1 -1
  212. package/lib/esm/node_modules/mermaid/dist/mermaid.core.js +308 -281
  213. package/lib/esm/node_modules/mermaid/dist/mermaid.core.js.map +1 -1
  214. package/lib/esm/node_modules/stylis/src/Enum.js +2 -2
  215. package/lib/esm/node_modules/stylis/src/Enum.js.map +1 -1
  216. package/lib/esm/node_modules/stylis/src/Middleware.js +13 -0
  217. package/lib/esm/node_modules/stylis/src/Middleware.js.map +1 -0
  218. package/lib/esm/node_modules/uuid/dist/rng.js +9 -0
  219. package/lib/esm/node_modules/uuid/dist/rng.js.map +1 -0
  220. package/lib/esm/node_modules/uuid/dist/{esm-browser/stringify.js → stringify.js} +1 -1
  221. package/lib/esm/node_modules/uuid/dist/stringify.js.map +1 -0
  222. package/lib/esm/node_modules/uuid/dist/v4.js +21 -0
  223. package/lib/esm/node_modules/uuid/dist/v4.js.map +1 -0
  224. package/lib/esm/style.css +1 -1
  225. package/lib/types/admin/templates/admin_shell_layout/AdminShellLayout.d.ts +3 -2
  226. package/lib/types/admin/templates/admin_shell_layout/AdminShellLayout.d.ts.map +1 -1
  227. package/lib/types/backoffice/organisms/backoffice_data_table/BackofficeDataTable.d.ts +3 -2
  228. package/lib/types/backoffice/organisms/backoffice_data_table/BackofficeDataTable.d.ts.map +1 -1
  229. package/lib/types/backoffice/organisms/backoffice_data_table/backofficeDataTable.css.d.ts +1 -0
  230. package/lib/types/backoffice/organisms/backoffice_data_table/backofficeDataTable.css.d.ts.map +1 -1
  231. package/lib/types/backoffice/organisms/backoffice_virtualized_connection_table/BackofficeVirtualizedConnectionTable.d.ts +3 -2
  232. package/lib/types/backoffice/organisms/backoffice_virtualized_connection_table/BackofficeVirtualizedConnectionTable.d.ts.map +1 -1
  233. package/lib/types/backoffice/templates/detail_page_template/DetailPageTemplate.d.ts.map +1 -1
  234. package/lib/types/backoffice/templates/detail_page_template/detailPageTemplate.css.d.ts +5 -0
  235. package/lib/types/backoffice/templates/detail_page_template/detailPageTemplate.css.d.ts.map +1 -1
  236. package/lib/types/backoffice/templates/list_page_template/ListPageTemplate.d.ts +1 -0
  237. package/lib/types/backoffice/templates/list_page_template/ListPageTemplate.d.ts.map +1 -1
  238. package/lib/types/backoffice/templates/list_page_template/listPageTemplate.css.d.ts +17 -2
  239. package/lib/types/backoffice/templates/list_page_template/listPageTemplate.css.d.ts.map +1 -1
  240. package/lib/types/components/data-table/DataTable.css.d.ts +2 -0
  241. package/lib/types/components/data-table/DataTable.css.d.ts.map +1 -1
  242. package/lib/types/components/data-table/DataTable.d.ts +5 -2
  243. package/lib/types/components/data-table/DataTable.d.ts.map +1 -1
  244. package/lib/types/components/data-table/ResponsiveRecordList.css.d.ts +2 -0
  245. package/lib/types/components/data-table/ResponsiveRecordList.css.d.ts.map +1 -1
  246. package/lib/types/components/data-table/ResponsiveRecordList.d.ts +1 -1
  247. package/lib/types/components/data-table/ResponsiveRecordList.d.ts.map +1 -1
  248. package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts +3 -2
  249. package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -1
  250. package/lib/types/components/layout/AppShell.d.ts +3 -2
  251. package/lib/types/components/layout/AppShell.d.ts.map +1 -1
  252. package/lib/types/components/layout/PageShell.css.d.ts +3 -0
  253. package/lib/types/components/layout/PageShell.css.d.ts.map +1 -1
  254. package/lib/types/components/layout/PageShell.d.ts +3 -1
  255. package/lib/types/components/layout/PageShell.d.ts.map +1 -1
  256. package/package.json +6 -6
  257. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-DXYQGD6D.js.map +0 -1
  258. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-4TB4RGXK.js.map +0 -1
  259. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-5FUZZQ4R.js.map +0 -1
  260. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-5PVQY5BW.js.map +0 -1
  261. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ENJZ2VHE.js.map +0 -1
  262. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ICPOFSXX.js.map +0 -1
  263. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/chunk-OYMX7WX6.js.map +0 -1
  264. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/ganttDiagram-T4ZO3ILL.js.map +0 -1
  265. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/quadrantDiagram-34T5L4WZ.js.map +0 -1
  266. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-FGHM5R23.js.map +0 -1
  267. package/lib/esm/node_modules/mermaid/dist/chunks/mermaid.core/wardleyDiagram-NUSXRM2D.js.map +0 -1
  268. package/lib/esm/node_modules/uuid/dist/esm-browser/native.js +0 -5
  269. package/lib/esm/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  270. package/lib/esm/node_modules/uuid/dist/esm-browser/rng.js +0 -13
  271. package/lib/esm/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  272. package/lib/esm/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  273. package/lib/esm/node_modules/uuid/dist/esm-browser/v4.js +0 -20
  274. package/lib/esm/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import e from "./_baseGetTag.js";
2
- import t from "./_getPrototype.js";
3
- import n from "./isObjectLike.js";
2
+ import t from "./isObjectLike.js";
3
+ import n from "./_getPrototype.js";
4
4
  //#region ../../node_modules/lodash-es/isPlainObject.js
5
5
  var r = "[object Object]", i = Function.prototype, a = Object.prototype, o = i.toString, s = a.hasOwnProperty, c = o.call(Object);
6
6
  function l(i) {
7
- if (!n(i) || e(i) != r) return !1;
8
- var a = t(i);
7
+ if (!t(i) || e(i) != r) return !1;
8
+ var a = n(i);
9
9
  if (a === null) return !0;
10
10
  var l = s.call(a, "constructor") && a.constructor;
11
11
  return typeof l == "function" && l instanceof l && o.call(l) == c;
@@ -1,10 +1,10 @@
1
- import e from "./isArray.js";
2
- import t from "./_arrayMap.js";
1
+ import e from "./_arrayMap.js";
2
+ import t from "./isArray.js";
3
3
  import n from "./_baseIteratee.js";
4
4
  import r from "./_baseMap.js";
5
5
  //#region ../../node_modules/lodash-es/map.js
6
6
  function i(i, a) {
7
- return (e(i) ? t : r)(i, n(a, 3));
7
+ return (t(i) ? e : r)(i, n(a, 3));
8
8
  }
9
9
  //#endregion
10
10
  export { i as default };
@@ -1,8 +1,8 @@
1
- import e from "./_baseMerge.js";
2
- import t from "./_createAssigner.js";
1
+ import e from "./_createAssigner.js";
2
+ import t from "./_baseMerge.js";
3
3
  //#region ../../node_modules/lodash-es/merge.js
4
- var n = t(function(t, n, r) {
5
- e(t, n, r);
4
+ var n = e(function(e, n, r) {
5
+ t(e, n, r);
6
6
  });
7
7
  //#endregion
8
8
  export { n as default };
@@ -1,17 +1,17 @@
1
- import e from "./isObject.js";
2
- import t from "./isSymbol.js";
3
- import n from "./_baseTrim.js";
1
+ import e from "./isSymbol.js";
2
+ import t from "./_baseTrim.js";
3
+ import n from "./isObject.js";
4
4
  //#region ../../node_modules/lodash-es/toNumber.js
5
5
  var r = NaN, i = /^[-+]0x[0-9a-f]+$/i, a = /^0b[01]+$/i, o = /^0o[0-7]+$/i, s = parseInt;
6
6
  function c(c) {
7
7
  if (typeof c == "number") return c;
8
- if (t(c)) return r;
9
- if (e(c)) {
8
+ if (e(c)) return r;
9
+ if (n(c)) {
10
10
  var l = typeof c.valueOf == "function" ? c.valueOf() : c;
11
- c = e(l) ? l + "" : l;
11
+ c = n(l) ? l + "" : l;
12
12
  }
13
13
  if (typeof c != "string") return c === 0 ? c : +c;
14
- c = n(c);
14
+ c = t(c);
15
15
  var u = a.test(c);
16
16
  return u || o.test(c) ? s(c.slice(2), u ? 2 : 8) : i.test(c) ? r : +c;
17
17
  }
@@ -1,10 +1,10 @@
1
- import e from "./isArrayLikeObject.js";
2
- import t from "./_baseRest.js";
3
- import n from "./_baseFlatten.js";
1
+ import e from "./_baseRest.js";
2
+ import t from "./_baseFlatten.js";
3
+ import n from "./isArrayLikeObject.js";
4
4
  import r from "./_baseUniq.js";
5
5
  //#region ../../node_modules/lodash-es/union.js
6
- var i = t(function(t) {
7
- return r(n(t, 1, e, !0));
6
+ var i = e(function(e) {
7
+ return r(t(e, 1, n, !0));
8
8
  });
9
9
  //#endregion
10
10
  export { i as default };
@@ -1,16 +1,16 @@
1
1
  import { __toESM as e } from "../../../../../_virtual/_rolldown/runtime.js";
2
2
  import { __name as t, log as n } from "./chunk-AGHRB4JF.js";
3
- import { clear as r, defaultConfig_default as i, getAccDescription as a, getAccTitle as o, getConfig as s, getConfig2 as c, getDiagramTitle as l, sanitizeText as u, setAccDescription as d, setAccTitle as f, setDiagramTitle as p, setupGraphViewbox as m } from "./chunk-ICPOFSXX.js";
3
+ import { clear as r, defaultConfig_default as i, getAccDescription as a, getAccTitle as o, getConfig as s, getConfig2 as c, getDiagramTitle as l, sanitizeText as u, setAccDescription as d, setAccTitle as f, setDiagramTitle as p, setupGraphViewbox as m } from "./chunk-CSCIHK7Q.js";
4
4
  import h from "../../../../d3-selection/src/select.js";
5
5
  import "../../../../d3/src/index.js";
6
- import { selectSvgElement as g } from "./chunk-426QAEUC.js";
7
- import { cleanAndMerge as _, getEdgeId as v } from "./chunk-5PVQY5BW.js";
8
- import { createText as y, getIconSVG as b, registerIconPacks as x, unknownIcon as S } from "./chunk-U2HBQHQK.js";
6
+ import { selectSvgElement as g } from "./chunk-WU5MYG2G.js";
7
+ import { cleanAndMerge as _, getEdgeId as v } from "./chunk-5ZQYHXKU.js";
8
+ import { createText as y, getIconSVG as b, registerIconPacks as x, unknownIcon as S } from "./chunk-O5CBEL6O.js";
9
9
  import { populateCommonDb as C } from "./chunk-4BX2VUAB.js";
10
10
  import { parse as w } from "../../../../@mermaid-js/parser/dist/mermaid-parser.core.js";
11
11
  import { cytoscape as T } from "../../../../cytoscape/dist/cytoscape.esm.js";
12
12
  import { require_cytoscape_fcose as E } from "../../../../cytoscape-fcose/cytoscape-fcose.js";
13
- //#region ../../node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-Q4EWVU46.mjs
13
+ //#region ../../node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-3BPJPVTR.mjs
14
14
  var ee = /* @__PURE__ */ e(E(), 1), D = {
15
15
  L: "left",
16
16
  R: "right",
@@ -610,25 +610,27 @@ function $(e, r, i, a, o, { spatialMaps: s, groupAlignments: c }) {
610
610
  }
611
611
  });
612
612
  u.remove(), Y(i, d), K(e, d, o), q(r, d, o), X(a, d);
613
- let f = Z(o, s, c), p = Q(s, o), m = d.layout({
613
+ let f = Z(o, s, c), p = Q(s, o), m = o.getConfigField("iconSize"), g = o.getConfigField("idealEdgeLengthMultiplier") * m, _ = .5 * m, v = o.getConfigField("edgeElasticity"), y = d.layout({
614
614
  name: "fcose",
615
615
  quality: "proof",
616
616
  randomize: o.getConfigField("randomize"),
617
+ nodeSeparation: o.getConfigField("nodeSeparation"),
618
+ numIter: o.getConfigField("numIter"),
617
619
  styleEnabled: !1,
618
620
  animate: !1,
619
621
  nodeDimensionsIncludeLabels: !1,
620
622
  idealEdgeLength(e) {
621
623
  let [t, n] = e.connectedNodes(), { parent: r } = V(t), { parent: i } = V(n);
622
- return r === i ? 1.5 * o.getConfigField("iconSize") : .5 * o.getConfigField("iconSize");
624
+ return r === i ? g : _;
623
625
  },
624
626
  edgeElasticity(e) {
625
627
  let [t, n] = e.connectedNodes(), { parent: r } = V(t), { parent: i } = V(n);
626
- return r === i ? .45 : .001;
628
+ return r === i ? v : .001;
627
629
  },
628
630
  alignmentConstraint: f,
629
631
  relativePlacementConstraint: p
630
632
  });
631
- m.one("layoutstop", () => {
633
+ y.one("layoutstop", () => {
632
634
  function e(e, t, n, r) {
633
635
  let i, a, { x: o, y: s } = e, { x: c, y: l } = t;
634
636
  a = (r - s + (o - n) * (s - l) / (o - c)) / Math.sqrt(1 + ((s - l) / (o - c)) ** 2), i = Math.sqrt((r - s) ** 2 + (n - o) ** 2 - a ** 2);
@@ -665,8 +667,8 @@ function $(e, r, i, a, o, { spatialMaps: s, groupAlignments: c }) {
665
667
  t.style("segment-distances", c), t.style("segment-weights", s);
666
668
  }
667
669
  }
668
- d.endBatch(), m.run();
669
- }), m.run(), d.ready((e) => {
670
+ d.endBatch(), y.run();
671
+ }), y.run(), d.ready((e) => {
670
672
  n.info("Ready", e), l(d);
671
673
  });
672
674
  });
@@ -694,4 +696,4 @@ var de = {
694
696
  //#endregion
695
697
  export { de as diagram };
696
698
 
697
- //# sourceMappingURL=architectureDiagram-Q4EWVU46.js.map
699
+ //# sourceMappingURL=architectureDiagram-3BPJPVTR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"architectureDiagram-Q4EWVU46.js","names":["temp","fcose","select"],"sources":["../../../../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-Q4EWVU46.mjs"],"sourcesContent":["import {\n selectSvgElement\n} from \"./chunk-426QAEUC.mjs\";\nimport {\n createText,\n getIconSVG,\n registerIconPacks,\n unknownIcon\n} from \"./chunk-U2HBQHQK.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n cleanAndMerge,\n getEdgeId\n} from \"./chunk-5PVQY5BW.mjs\";\nimport {\n clear,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getConfig2,\n getDiagramTitle,\n sanitizeText,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox\n} from \"./chunk-ICPOFSXX.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/architecture/architectureParser.ts\nimport { parse } from \"@mermaid-js/parser\";\n\n// src/diagrams/architecture/architectureTypes.ts\nvar ArchitectureDirectionName = {\n L: \"left\",\n R: \"right\",\n T: \"top\",\n B: \"bottom\"\n};\nvar ArchitectureDirectionArrow = {\n L: /* @__PURE__ */ __name((scale) => `${scale},${scale / 2} 0,${scale} 0,0`, \"L\"),\n R: /* @__PURE__ */ __name((scale) => `0,${scale / 2} ${scale},0 ${scale},${scale}`, \"R\"),\n T: /* @__PURE__ */ __name((scale) => `0,0 ${scale},0 ${scale / 2},${scale}`, \"T\"),\n B: /* @__PURE__ */ __name((scale) => `${scale / 2},0 ${scale},${scale} 0,${scale}`, \"B\")\n};\nvar ArchitectureDirectionArrowShift = {\n L: /* @__PURE__ */ __name((orig, arrowSize) => orig - arrowSize + 2, \"L\"),\n R: /* @__PURE__ */ __name((orig, _arrowSize) => orig - 2, \"R\"),\n T: /* @__PURE__ */ __name((orig, arrowSize) => orig - arrowSize + 2, \"T\"),\n B: /* @__PURE__ */ __name((orig, _arrowSize) => orig - 2, \"B\")\n};\nvar getOppositeArchitectureDirection = /* @__PURE__ */ __name(function(x) {\n if (isArchitectureDirectionX(x)) {\n return x === \"L\" ? \"R\" : \"L\";\n } else {\n return x === \"T\" ? \"B\" : \"T\";\n }\n}, \"getOppositeArchitectureDirection\");\nvar isArchitectureDirection = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"L\" || temp === \"R\" || temp === \"T\" || temp === \"B\";\n}, \"isArchitectureDirection\");\nvar isArchitectureDirectionX = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"L\" || temp === \"R\";\n}, \"isArchitectureDirectionX\");\nvar isArchitectureDirectionY = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"T\" || temp === \"B\";\n}, \"isArchitectureDirectionY\");\nvar isArchitectureDirectionXY = /* @__PURE__ */ __name(function(a, b) {\n const aX_bY = isArchitectureDirectionX(a) && isArchitectureDirectionY(b);\n const aY_bX = isArchitectureDirectionY(a) && isArchitectureDirectionX(b);\n return aX_bY || aY_bX;\n}, \"isArchitectureDirectionXY\");\nvar isArchitecturePairXY = /* @__PURE__ */ __name(function(pair) {\n const lhs = pair[0];\n const rhs = pair[1];\n const aX_bY = isArchitectureDirectionX(lhs) && isArchitectureDirectionY(rhs);\n const aY_bX = isArchitectureDirectionY(lhs) && isArchitectureDirectionX(rhs);\n return aX_bY || aY_bX;\n}, \"isArchitecturePairXY\");\nvar isValidArchitectureDirectionPair = /* @__PURE__ */ __name(function(x) {\n return x !== \"LL\" && x !== \"RR\" && x !== \"TT\" && x !== \"BB\";\n}, \"isValidArchitectureDirectionPair\");\nvar getArchitectureDirectionPair = /* @__PURE__ */ __name(function(sourceDir, targetDir) {\n const pair = `${sourceDir}${targetDir}`;\n return isValidArchitectureDirectionPair(pair) ? pair : void 0;\n}, \"getArchitectureDirectionPair\");\nvar shiftPositionByArchitectureDirectionPair = /* @__PURE__ */ __name(function([x, y], pair) {\n const lhs = pair[0];\n const rhs = pair[1];\n if (isArchitectureDirectionX(lhs)) {\n if (isArchitectureDirectionY(rhs)) {\n return [x + (lhs === \"L\" ? -1 : 1), y + (rhs === \"T\" ? 1 : -1)];\n } else {\n return [x + (lhs === \"L\" ? -1 : 1), y];\n }\n } else {\n if (isArchitectureDirectionX(rhs)) {\n return [x + (rhs === \"L\" ? 1 : -1), y + (lhs === \"T\" ? 1 : -1)];\n } else {\n return [x, y + (lhs === \"T\" ? 1 : -1)];\n }\n }\n}, \"shiftPositionByArchitectureDirectionPair\");\nvar getArchitectureDirectionXYFactors = /* @__PURE__ */ __name(function(pair) {\n if (pair === \"LT\" || pair === \"TL\") {\n return [1, 1];\n } else if (pair === \"BL\" || pair === \"LB\") {\n return [1, -1];\n } else if (pair === \"BR\" || pair === \"RB\") {\n return [-1, -1];\n } else {\n return [-1, 1];\n }\n}, \"getArchitectureDirectionXYFactors\");\nvar getArchitectureDirectionAlignment = /* @__PURE__ */ __name(function(a, b) {\n if (isArchitectureDirectionXY(a, b)) {\n return \"bend\";\n } else if (isArchitectureDirectionX(a)) {\n return \"horizontal\";\n }\n return \"vertical\";\n}, \"getArchitectureDirectionAlignment\");\nvar isArchitectureService = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp.type === \"service\";\n}, \"isArchitectureService\");\nvar isArchitectureJunction = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp.type === \"junction\";\n}, \"isArchitectureJunction\");\nvar edgeData = /* @__PURE__ */ __name((edge) => {\n return edge.data();\n}, \"edgeData\");\nvar nodeData = /* @__PURE__ */ __name((node) => {\n return node.data();\n}, \"nodeData\");\n\n// src/diagrams/architecture/architectureDb.ts\nvar DEFAULT_ARCHITECTURE_CONFIG = defaultConfig_default.architecture;\nvar ArchitectureDB = class {\n constructor() {\n this.nodes = {};\n this.groups = {};\n this.edges = [];\n this.registeredIds = {};\n this.elements = {};\n this.diagramId = \"\";\n this.setAccTitle = setAccTitle;\n this.getAccTitle = getAccTitle;\n this.setDiagramTitle = setDiagramTitle;\n this.getDiagramTitle = getDiagramTitle;\n this.getAccDescription = getAccDescription;\n this.setAccDescription = setAccDescription;\n this.clear();\n }\n static {\n __name(this, \"ArchitectureDB\");\n }\n setDiagramId(id) {\n this.diagramId = id;\n }\n getDiagramId() {\n return this.diagramId;\n }\n clear() {\n this.nodes = {};\n this.groups = {};\n this.edges = [];\n this.registeredIds = {};\n this.dataStructures = void 0;\n this.elements = {};\n this.diagramId = \"\";\n clear();\n }\n addService({\n id,\n icon,\n in: parent,\n title,\n iconText\n }) {\n if (this.registeredIds[id] !== void 0) {\n throw new Error(\n `The service id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== void 0) {\n if (id === parent) {\n throw new Error(`The service [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === void 0) {\n throw new Error(\n `The service [${id}]'s parent does not exist. Please make sure the parent is created before this service`\n );\n }\n if (this.registeredIds[parent] === \"node\") {\n throw new Error(`The service [${id}]'s parent is not a group`);\n }\n }\n this.registeredIds[id] = \"node\";\n this.nodes[id] = {\n id,\n type: \"service\",\n icon,\n iconText,\n title,\n edges: [],\n in: parent\n };\n }\n getServices() {\n return Object.values(this.nodes).filter(isArchitectureService);\n }\n addJunction({ id, in: parent }) {\n if (this.registeredIds[id] !== void 0) {\n throw new Error(\n `The junction id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== void 0) {\n if (id === parent) {\n throw new Error(`The junction [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === void 0) {\n throw new Error(\n `The junction [${id}]'s parent does not exist. Please make sure the parent is created before this junction`\n );\n }\n if (this.registeredIds[parent] === \"node\") {\n throw new Error(`The junction [${id}]'s parent is not a group`);\n }\n }\n this.registeredIds[id] = \"node\";\n this.nodes[id] = {\n id,\n type: \"junction\",\n edges: [],\n in: parent\n };\n }\n getJunctions() {\n return Object.values(this.nodes).filter(isArchitectureJunction);\n }\n getNodes() {\n return Object.values(this.nodes);\n }\n getNode(id) {\n return this.nodes[id] ?? null;\n }\n addGroup({ id, icon, in: parent, title }) {\n if (this.registeredIds?.[id] !== void 0) {\n throw new Error(\n `The group id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== void 0) {\n if (id === parent) {\n throw new Error(`The group [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds?.[parent] === void 0) {\n throw new Error(\n `The group [${id}]'s parent does not exist. Please make sure the parent is created before this group`\n );\n }\n if (this.registeredIds?.[parent] === \"node\") {\n throw new Error(`The group [${id}]'s parent is not a group`);\n }\n }\n this.registeredIds[id] = \"group\";\n this.groups[id] = {\n id,\n icon,\n title,\n in: parent\n };\n }\n getGroups() {\n return Object.values(this.groups);\n }\n addEdge({\n lhsId,\n rhsId,\n lhsDir,\n rhsDir,\n lhsInto,\n rhsInto,\n lhsGroup,\n rhsGroup,\n title\n }) {\n if (!isArchitectureDirection(lhsDir)) {\n throw new Error(\n `Invalid direction given for left hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(lhsDir)}`\n );\n }\n if (!isArchitectureDirection(rhsDir)) {\n throw new Error(\n `Invalid direction given for right hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(rhsDir)}`\n );\n }\n if (this.nodes[lhsId] === void 0 && this.groups[lhsId] === void 0) {\n throw new Error(\n `The left-hand id [${lhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n if (this.nodes[rhsId] === void 0 && this.groups[rhsId] === void 0) {\n throw new Error(\n `The right-hand id [${rhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n const lhsGroupId = this.nodes[lhsId].in;\n const rhsGroupId = this.nodes[rhsId].in;\n if (lhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The left-hand id [${lhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n if (rhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The right-hand id [${rhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n const edge = {\n lhsId,\n lhsDir,\n lhsInto,\n lhsGroup,\n rhsId,\n rhsDir,\n rhsInto,\n rhsGroup,\n title\n };\n this.edges.push(edge);\n if (this.nodes[lhsId] && this.nodes[rhsId]) {\n this.nodes[lhsId].edges.push(this.edges[this.edges.length - 1]);\n this.nodes[rhsId].edges.push(this.edges[this.edges.length - 1]);\n }\n }\n getEdges() {\n return this.edges;\n }\n /**\n * Returns the current diagram's adjacency list, spatial map, & group alignments.\n * If they have not been created, run the algorithms to generate them.\n * @returns\n */\n getDataStructures() {\n if (this.dataStructures === void 0) {\n const groupAlignments = {};\n const adjList = Object.entries(this.nodes).reduce((prevOuter, [id, service]) => {\n prevOuter[id] = service.edges.reduce((prevInner, edge) => {\n const lhsGroupId = this.getNode(edge.lhsId)?.in;\n const rhsGroupId = this.getNode(edge.rhsId)?.in;\n if (lhsGroupId && rhsGroupId && lhsGroupId !== rhsGroupId) {\n const alignment = getArchitectureDirectionAlignment(edge.lhsDir, edge.rhsDir);\n if (alignment !== \"bend\") {\n groupAlignments[lhsGroupId] ??= {};\n groupAlignments[lhsGroupId][rhsGroupId] = alignment;\n groupAlignments[rhsGroupId] ??= {};\n groupAlignments[rhsGroupId][lhsGroupId] = alignment;\n }\n }\n if (edge.lhsId === id) {\n const pair = getArchitectureDirectionPair(edge.lhsDir, edge.rhsDir);\n if (pair) {\n prevInner[pair] = edge.rhsId;\n }\n } else {\n const pair = getArchitectureDirectionPair(edge.rhsDir, edge.lhsDir);\n if (pair) {\n prevInner[pair] = edge.lhsId;\n }\n }\n return prevInner;\n }, {});\n return prevOuter;\n }, {});\n const firstId = Object.keys(adjList)[0];\n const visited = { [firstId]: 1 };\n const notVisited = Object.keys(adjList).reduce(\n (prev, id) => id === firstId ? prev : { ...prev, [id]: 1 },\n {}\n );\n const BFS = /* @__PURE__ */ __name((startingId) => {\n const spatialMap = { [startingId]: [0, 0] };\n const queue = [startingId];\n while (queue.length > 0) {\n const id = queue.shift();\n if (id) {\n visited[id] = 1;\n delete notVisited[id];\n const adj = adjList[id];\n const [posX, posY] = spatialMap[id];\n Object.entries(adj).forEach(([dir, rhsId]) => {\n if (!visited[rhsId]) {\n spatialMap[rhsId] = shiftPositionByArchitectureDirectionPair(\n [posX, posY],\n dir\n );\n queue.push(rhsId);\n }\n });\n }\n }\n return spatialMap;\n }, \"BFS\");\n const spatialMaps = [BFS(firstId)];\n while (Object.keys(notVisited).length > 0) {\n spatialMaps.push(BFS(Object.keys(notVisited)[0]));\n }\n this.dataStructures = {\n adjList,\n spatialMaps,\n groupAlignments\n };\n }\n return this.dataStructures;\n }\n setElementForId(id, element) {\n this.elements[id] = element;\n }\n getElementById(id) {\n return this.elements[id];\n }\n getConfig() {\n return cleanAndMerge({\n ...DEFAULT_ARCHITECTURE_CONFIG,\n ...getConfig().architecture\n });\n }\n getConfigField(field) {\n return this.getConfig()[field];\n }\n};\n\n// src/diagrams/architecture/architectureParser.ts\nvar populateDb = /* @__PURE__ */ __name((ast, db) => {\n populateCommonDb(ast, db);\n ast.groups.map((group) => db.addGroup(group));\n ast.services.map((service) => db.addService({ ...service, type: \"service\" }));\n ast.junctions.map((service) => db.addJunction({ ...service, type: \"junction\" }));\n ast.edges.map((edge) => db.addEdge(edge));\n}, \"populateDb\");\nvar parser = {\n parser: {\n // @ts-expect-error - ArchitectureDB is not assignable to DiagramDB\n yy: void 0\n },\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"architecture\", input);\n log.debug(ast);\n const db = parser.parser?.yy;\n if (!(db instanceof ArchitectureDB)) {\n throw new Error(\n \"parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n );\n }\n populateDb(ast, db);\n }, \"parse\")\n};\n\n// src/diagrams/architecture/architectureStyles.ts\nvar getStyles = /* @__PURE__ */ __name((options) => `\n .edge {\n stroke-width: ${options.archEdgeWidth};\n stroke: ${options.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${options.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${options.archGroupBorderColor};\n stroke-width: ${options.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`, \"getStyles\");\nvar architectureStyles_default = getStyles;\n\n// src/diagrams/architecture/architectureRenderer.ts\nimport cytoscape from \"cytoscape\";\nimport fcose from \"cytoscape-fcose\";\nimport { select } from \"d3\";\n\n// src/diagrams/architecture/architectureIcons.ts\nvar wrapIcon = /* @__PURE__ */ __name((icon) => {\n return `<g><rect width=\"80\" height=\"80\" style=\"fill: #087ebf; stroke-width: 0px;\"/>${icon}</g>`;\n}, \"wrapIcon\");\nvar architectureIcons = {\n prefix: \"mermaid-architecture\",\n height: 80,\n width: 80,\n icons: {\n database: {\n body: wrapIcon(\n '<path id=\"b\" data-name=\"4\" d=\"m20,57.86c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path id=\"c\" data-name=\"3\" d=\"m20,45.95c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path id=\"d\" data-name=\"2\" d=\"m20,34.05c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse id=\"e\" data-name=\"1\" cx=\"40\" cy=\"22.14\" rx=\"20\" ry=\"7.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"20\" y1=\"57.86\" x2=\"20\" y2=\"22.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"60\" y1=\"57.86\" x2=\"60\" y2=\"22.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/>'\n )\n },\n server: {\n body: wrapIcon(\n '<rect x=\"17.5\" y=\"17.5\" width=\"45\" height=\"45\" rx=\"2\" ry=\"2\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"17.5\" y1=\"32.5\" x2=\"62.5\" y2=\"32.5\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"17.5\" y1=\"47.5\" x2=\"62.5\" y2=\"47.5\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><g><path d=\"m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: #fff; stroke-width: 0px;\"/><path d=\"m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><path d=\"m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: #fff; stroke-width: 0px;\"/><path d=\"m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><path d=\"m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: #fff; stroke-width: 0px;\"/><path d=\"m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><circle cx=\"32.5\" cy=\"25\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"27.5\" cy=\"25\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"22.5\" cy=\"25\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><circle cx=\"32.5\" cy=\"40\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"27.5\" cy=\"40\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"22.5\" cy=\"40\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><circle cx=\"32.5\" cy=\"55\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"27.5\" cy=\"55\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"22.5\" cy=\"55\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/></g>'\n )\n },\n disk: {\n body: wrapIcon(\n '<rect x=\"20\" y=\"15\" width=\"40\" height=\"50\" rx=\"1\" ry=\"1\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"24\" cy=\"19.17\" rx=\".8\" ry=\".83\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"56\" cy=\"19.17\" rx=\".8\" ry=\".83\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"24\" cy=\"60.83\" rx=\".8\" ry=\".83\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"56\" cy=\"60.83\" rx=\".8\" ry=\".83\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"40\" cy=\"33.75\" rx=\"14\" ry=\"14.58\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"40\" cy=\"33.75\" rx=\"4\" ry=\"4.17\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path d=\"m37.51,42.52l-4.83,13.22c-.26.71-1.1,1.02-1.76.64l-4.18-2.42c-.66-.38-.81-1.26-.33-1.84l9.01-10.8c.88-1.05,2.56-.08,2.09,1.2Z\" style=\"fill: #fff; stroke-width: 0px;\"/>'\n )\n },\n internet: {\n body: wrapIcon(\n '<circle cx=\"40\" cy=\"40\" r=\"22.5\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"40\" y1=\"17.5\" x2=\"40\" y2=\"62.5\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"17.5\" y1=\"40\" x2=\"62.5\" y2=\"40\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path d=\"m39.99,17.51c-15.28,11.1-15.28,33.88,0,44.98\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path d=\"m40.01,17.51c15.28,11.1,15.28,33.88,0,44.98\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"19.75\" y1=\"30.1\" x2=\"60.25\" y2=\"30.1\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"19.75\" y1=\"49.9\" x2=\"60.25\" y2=\"49.9\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/>'\n )\n },\n cloud: {\n body: wrapIcon(\n '<path d=\"m65,47.5c0,2.76-2.24,5-5,5H20c-2.76,0-5-2.24-5-5,0-1.87,1.03-3.51,2.56-4.36-.04-.21-.06-.42-.06-.64,0-2.6,2.48-4.74,5.65-4.97,1.65-4.51,6.34-7.76,11.85-7.76.86,0,1.69.08,2.5.23,2.09-1.57,4.69-2.5,7.5-2.5,6.1,0,11.19,4.38,12.28,10.17,2.14.56,3.72,2.51,3.72,4.83,0,.03,0,.07-.01.1,2.29.46,4.01,2.48,4.01,4.9Z\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/>'\n )\n },\n unknown: unknownIcon,\n blank: {\n body: wrapIcon(\"\")\n }\n }\n};\n\n// src/diagrams/architecture/svgDraw.ts\nvar drawEdges = /* @__PURE__ */ __name(async function(edgesEl, cy, db, diagramId) {\n const padding = db.getConfigField(\"padding\");\n const iconSize = db.getConfigField(\"iconSize\");\n const halfIconSize = iconSize / 2;\n const arrowSize = iconSize / 6;\n const halfArrowSize = arrowSize / 2;\n await Promise.all(\n cy.edges().map(async (edge) => {\n const {\n source,\n sourceDir,\n sourceArrow,\n sourceGroup,\n target,\n targetDir,\n targetArrow,\n targetGroup,\n label\n } = edgeData(edge);\n let { x: startX, y: startY } = edge[0].sourceEndpoint();\n const { x: midX, y: midY } = edge[0].midpoint();\n let { x: endX, y: endY } = edge[0].targetEndpoint();\n const groupEdgeShift = padding + 4;\n if (sourceGroup) {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === \"L\" ? -groupEdgeShift : groupEdgeShift;\n } else {\n startY += sourceDir === \"T\" ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n if (targetGroup) {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === \"L\" ? -groupEdgeShift : groupEdgeShift;\n } else {\n endY += targetDir === \"T\" ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n if (!sourceGroup && db.getNode(source)?.type === \"junction\") {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === \"L\" ? halfIconSize : -halfIconSize;\n } else {\n startY += sourceDir === \"T\" ? halfIconSize : -halfIconSize;\n }\n }\n if (!targetGroup && db.getNode(target)?.type === \"junction\") {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === \"L\" ? halfIconSize : -halfIconSize;\n } else {\n endY += targetDir === \"T\" ? halfIconSize : -halfIconSize;\n }\n }\n if (edge[0]._private.rscratch) {\n const g = edgesEl.insert(\"g\");\n g.insert(\"path\").attr(\"d\", `M ${startX},${startY} L ${midX},${midY} L${endX},${endY} `).attr(\"class\", \"edge\").attr(\"id\", `${diagramId}-${getEdgeId(source, target, { prefix: \"L\" })}`);\n if (sourceArrow) {\n const xShift = isArchitectureDirectionX(sourceDir) ? ArchitectureDirectionArrowShift[sourceDir](startX, arrowSize) : startX - halfArrowSize;\n const yShift = isArchitectureDirectionY(sourceDir) ? ArchitectureDirectionArrowShift[sourceDir](startY, arrowSize) : startY - halfArrowSize;\n g.insert(\"polygon\").attr(\"points\", ArchitectureDirectionArrow[sourceDir](arrowSize)).attr(\"transform\", `translate(${xShift},${yShift})`).attr(\"class\", \"arrow\");\n }\n if (targetArrow) {\n const xShift = isArchitectureDirectionX(targetDir) ? ArchitectureDirectionArrowShift[targetDir](endX, arrowSize) : endX - halfArrowSize;\n const yShift = isArchitectureDirectionY(targetDir) ? ArchitectureDirectionArrowShift[targetDir](endY, arrowSize) : endY - halfArrowSize;\n g.insert(\"polygon\").attr(\"points\", ArchitectureDirectionArrow[targetDir](arrowSize)).attr(\"transform\", `translate(${xShift},${yShift})`).attr(\"class\", \"arrow\");\n }\n if (label) {\n const axis = !isArchitectureDirectionXY(sourceDir, targetDir) ? isArchitectureDirectionX(sourceDir) ? \"X\" : \"Y\" : \"XY\";\n let width = 0;\n if (axis === \"X\") {\n width = Math.abs(startX - endX);\n } else if (axis === \"Y\") {\n width = Math.abs(startY - endY) / 1.5;\n } else {\n width = Math.abs(startX - endX) / 2;\n }\n const textElem = g.append(\"g\");\n await createText(\n textElem,\n label,\n {\n useHtmlLabels: false,\n width,\n classes: \"architecture-service-label\"\n },\n getConfig2()\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n if (axis === \"X\") {\n textElem.attr(\"transform\", \"translate(\" + midX + \", \" + midY + \")\");\n } else if (axis === \"Y\") {\n textElem.attr(\"transform\", \"translate(\" + midX + \", \" + midY + \") rotate(-90)\");\n } else if (axis === \"XY\") {\n const pair = getArchitectureDirectionPair(sourceDir, targetDir);\n if (pair && isArchitecturePairXY(pair)) {\n const bboxOrig = textElem.node().getBoundingClientRect();\n const [x, y] = getArchitectureDirectionXYFactors(pair);\n textElem.attr(\"dominant-baseline\", \"auto\").attr(\"transform\", `rotate(${-1 * x * y * 45})`);\n const bboxNew = textElem.node().getBoundingClientRect();\n textElem.attr(\n \"transform\",\n `\n translate(${midX}, ${midY - bboxOrig.height / 2})\n translate(${x * bboxNew.width / 2}, ${y * bboxNew.height / 2})\n rotate(${-1 * x * y * 45}, 0, ${bboxOrig.height / 2})\n `\n );\n }\n }\n }\n }\n })\n );\n}, \"drawEdges\");\nvar drawGroups = /* @__PURE__ */ __name(async function(groupsEl, cy, db, diagramId) {\n const padding = db.getConfigField(\"padding\");\n const groupIconSize = padding * 0.75;\n const fontSize = db.getConfigField(\"fontSize\");\n const iconSize = db.getConfigField(\"iconSize\");\n const halfIconSize = iconSize / 2;\n await Promise.all(\n cy.nodes().map(async (node) => {\n const data = nodeData(node);\n if (data.type === \"group\") {\n const { h, w, x1, y1 } = node.boundingBox();\n const groupsNode = groupsEl.append(\"rect\");\n groupsNode.attr(\"id\", `${diagramId}-group-${data.id}`).attr(\"x\", x1 + halfIconSize).attr(\"y\", y1 + halfIconSize).attr(\"width\", w).attr(\"height\", h).attr(\"class\", \"node-bkg\");\n const groupLabelContainer = groupsEl.append(\"g\");\n let shiftedX1 = x1;\n let shiftedY1 = y1;\n if (data.icon) {\n const bkgElem = groupLabelContainer.append(\"g\");\n bkgElem.html(\n `<g>${await getIconSVG(data.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })}</g>`\n );\n bkgElem.attr(\n \"transform\",\n \"translate(\" + (shiftedX1 + halfIconSize + 1) + \", \" + (shiftedY1 + halfIconSize + 1) + \")\"\n );\n shiftedX1 += groupIconSize;\n shiftedY1 += fontSize / 2 - 1 - 2;\n }\n if (data.label) {\n const textElem = groupLabelContainer.append(\"g\");\n await createText(\n textElem,\n data.label,\n {\n useHtmlLabels: false,\n width: w,\n classes: \"architecture-service-label\"\n },\n getConfig2()\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"start\").attr(\"text-anchor\", \"start\");\n textElem.attr(\n \"transform\",\n \"translate(\" + (shiftedX1 + halfIconSize + 4) + \", \" + (shiftedY1 + halfIconSize + 2) + \")\"\n );\n }\n db.setElementForId(data.id, groupsNode);\n }\n })\n );\n}, \"drawGroups\");\nvar drawServices = /* @__PURE__ */ __name(async function(db, elem, services, diagramId) {\n const config = getConfig2();\n for (const service of services) {\n const serviceElem = elem.append(\"g\");\n const iconSize = db.getConfigField(\"iconSize\");\n if (service.title) {\n const textElem = serviceElem.append(\"g\");\n await createText(\n textElem,\n service.title,\n {\n useHtmlLabels: false,\n width: iconSize * 1.5,\n classes: \"architecture-service-label\"\n },\n config\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n textElem.attr(\"transform\", \"translate(\" + iconSize / 2 + \", \" + iconSize + \")\");\n }\n const bkgElem = serviceElem.append(\"g\");\n if (service.icon) {\n bkgElem.html(\n `<g>${await getIconSVG(service.icon, { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}</g>`\n );\n } else if (service.iconText) {\n bkgElem.html(\n `<g>${await getIconSVG(\"blank\", { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}</g>`\n );\n const textElemContainer = bkgElem.append(\"g\");\n const fo = textElemContainer.append(\"foreignObject\").attr(\"width\", iconSize).attr(\"height\", iconSize);\n const divElem = fo.append(\"div\").attr(\"class\", \"node-icon-text\").attr(\"style\", `height: ${iconSize}px;`).append(\"div\").html(sanitizeText(service.iconText, config));\n const fontSize = parseInt(\n window.getComputedStyle(divElem.node(), null).getPropertyValue(\"font-size\").replace(/\\D/g, \"\")\n ) ?? 16;\n divElem.attr(\"style\", `-webkit-line-clamp: ${Math.floor((iconSize - 2) / fontSize)};`);\n } else {\n bkgElem.append(\"path\").attr(\"class\", \"node-bkg\").attr(\"id\", `${diagramId}-node-${service.id}`).attr(\n \"d\",\n `M0,${iconSize} V5 Q0,0 5,0 H${iconSize - 5} Q${iconSize},0 ${iconSize},5 V${iconSize} Z`\n );\n }\n serviceElem.attr(\"id\", `${diagramId}-service-${service.id}`).attr(\"class\", \"architecture-service\");\n const { width, height } = serviceElem.node().getBBox();\n service.width = width;\n service.height = height;\n db.setElementForId(service.id, serviceElem);\n }\n return 0;\n}, \"drawServices\");\nvar drawJunctions = /* @__PURE__ */ __name(function(db, elem, junctions, diagramId) {\n junctions.forEach((junction) => {\n const junctionElem = elem.append(\"g\");\n const iconSize = db.getConfigField(\"iconSize\");\n const bkgElem = junctionElem.append(\"g\");\n bkgElem.append(\"rect\").attr(\"id\", `${diagramId}-node-${junction.id}`).attr(\"fill-opacity\", \"0\").attr(\"width\", iconSize).attr(\"height\", iconSize);\n junctionElem.attr(\"class\", \"architecture-junction\");\n const { width, height } = junctionElem._groups[0][0].getBBox();\n junctionElem.width = width;\n junctionElem.height = height;\n db.setElementForId(junction.id, junctionElem);\n });\n}, \"drawJunctions\");\n\n// src/diagrams/architecture/architectureRenderer.ts\nregisterIconPacks([\n {\n name: architectureIcons.prefix,\n icons: architectureIcons\n }\n]);\ncytoscape.use(fcose);\nfunction addServices(services, cy, db) {\n services.forEach((service) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"service\",\n id: service.id,\n icon: service.icon,\n label: service.title,\n parent: service.in,\n width: db.getConfigField(\"iconSize\"),\n height: db.getConfigField(\"iconSize\")\n },\n classes: \"node-service\"\n });\n });\n}\n__name(addServices, \"addServices\");\nfunction addJunctions(junctions, cy, db) {\n junctions.forEach((junction) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"junction\",\n id: junction.id,\n parent: junction.in,\n width: db.getConfigField(\"iconSize\"),\n height: db.getConfigField(\"iconSize\")\n },\n classes: \"node-junction\"\n });\n });\n}\n__name(addJunctions, \"addJunctions\");\nfunction positionNodes(db, cy) {\n cy.nodes().map((node) => {\n const data = nodeData(node);\n if (data.type === \"group\") {\n return;\n }\n data.x = node.position().x;\n data.y = node.position().y;\n const nodeElem = db.getElementById(data.id);\n nodeElem.attr(\"transform\", \"translate(\" + (data.x || 0) + \",\" + (data.y || 0) + \")\");\n });\n}\n__name(positionNodes, \"positionNodes\");\nfunction addGroups(groups, cy) {\n groups.forEach((group) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"group\",\n id: group.id,\n icon: group.icon,\n label: group.title,\n parent: group.in\n },\n classes: \"node-group\"\n });\n });\n}\n__name(addGroups, \"addGroups\");\nfunction addEdges(edges, cy) {\n edges.forEach((parsedEdge) => {\n const { lhsId, rhsId, lhsInto, lhsGroup, rhsInto, lhsDir, rhsDir, rhsGroup, title } = parsedEdge;\n const edgeType = isArchitectureDirectionXY(parsedEdge.lhsDir, parsedEdge.rhsDir) ? \"segments\" : \"straight\";\n const edge = {\n id: `${lhsId}-${rhsId}`,\n label: title,\n source: lhsId,\n sourceDir: lhsDir,\n sourceArrow: lhsInto,\n sourceGroup: lhsGroup,\n sourceEndpoint: lhsDir === \"L\" ? \"0 50%\" : lhsDir === \"R\" ? \"100% 50%\" : lhsDir === \"T\" ? \"50% 0\" : \"50% 100%\",\n target: rhsId,\n targetDir: rhsDir,\n targetArrow: rhsInto,\n targetGroup: rhsGroup,\n targetEndpoint: rhsDir === \"L\" ? \"0 50%\" : rhsDir === \"R\" ? \"100% 50%\" : rhsDir === \"T\" ? \"50% 0\" : \"50% 100%\"\n };\n cy.add({\n group: \"edges\",\n data: edge,\n classes: edgeType\n });\n });\n}\n__name(addEdges, \"addEdges\");\nfunction getAlignments(db, spatialMaps, groupAlignments) {\n const flattenAlignments = /* @__PURE__ */ __name((alignmentObj, alignmentDir) => {\n return Object.entries(alignmentObj).reduce(\n (prev, [dir, alignments2]) => {\n let cnt = 0;\n const arr = Object.entries(alignments2);\n if (arr.length === 1) {\n prev[dir] = arr[0][1];\n return prev;\n }\n for (let i = 0; i < arr.length - 1; i++) {\n for (let j = i + 1; j < arr.length; j++) {\n const [aGroupId, aNodeIds] = arr[i];\n const [bGroupId, bNodeIds] = arr[j];\n const alignment = groupAlignments[aGroupId]?.[bGroupId];\n if (alignment === alignmentDir) {\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];\n } else if (aGroupId === \"default\" || bGroupId === \"default\") {\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];\n } else {\n const keyA = `${dir}-${cnt++}`;\n prev[keyA] = aNodeIds;\n const keyB = `${dir}-${cnt++}`;\n prev[keyB] = bNodeIds;\n }\n }\n }\n return prev;\n },\n {}\n );\n }, \"flattenAlignments\");\n const alignments = spatialMaps.map((spatialMap) => {\n const horizontalAlignments = {};\n const verticalAlignments = {};\n Object.entries(spatialMap).forEach(([id, [x, y]]) => {\n const nodeGroup = db.getNode(id)?.in ?? \"default\";\n horizontalAlignments[y] ??= {};\n horizontalAlignments[y][nodeGroup] ??= [];\n horizontalAlignments[y][nodeGroup].push(id);\n verticalAlignments[x] ??= {};\n verticalAlignments[x][nodeGroup] ??= [];\n verticalAlignments[x][nodeGroup].push(id);\n });\n return {\n horiz: Object.values(flattenAlignments(horizontalAlignments, \"horizontal\")).filter(\n (arr) => arr.length > 1\n ),\n vert: Object.values(flattenAlignments(verticalAlignments, \"vertical\")).filter(\n (arr) => arr.length > 1\n )\n };\n });\n const [horizontal, vertical] = alignments.reduce(\n ([prevHoriz, prevVert], { horiz, vert }) => {\n return [\n [...prevHoriz, ...horiz],\n [...prevVert, ...vert]\n ];\n },\n [[], []]\n );\n return {\n horizontal,\n vertical\n };\n}\n__name(getAlignments, \"getAlignments\");\nfunction getRelativeConstraints(spatialMaps, db) {\n const relativeConstraints = [];\n const posToStr = /* @__PURE__ */ __name((pos) => `${pos[0]},${pos[1]}`, \"posToStr\");\n const strToPos = /* @__PURE__ */ __name((pos) => pos.split(\",\").map((p) => parseInt(p)), \"strToPos\");\n spatialMaps.forEach((spatialMap) => {\n const invSpatialMap = Object.fromEntries(\n Object.entries(spatialMap).map(([id, pos]) => [posToStr(pos), id])\n );\n const queue = [posToStr([0, 0])];\n const visited = {};\n const directions = {\n L: [-1, 0],\n R: [1, 0],\n T: [0, 1],\n B: [0, -1]\n };\n while (queue.length > 0) {\n const curr = queue.shift();\n if (curr) {\n visited[curr] = 1;\n const currId = invSpatialMap[curr];\n if (currId) {\n const currPos = strToPos(curr);\n Object.entries(directions).forEach(([dir, shift]) => {\n const newPos = posToStr([currPos[0] + shift[0], currPos[1] + shift[1]]);\n const newId = invSpatialMap[newPos];\n if (newId && !visited[newPos]) {\n queue.push(newPos);\n relativeConstraints.push({\n [ArchitectureDirectionName[dir]]: newId,\n [ArchitectureDirectionName[getOppositeArchitectureDirection(dir)]]: currId,\n gap: 1.5 * db.getConfigField(\"iconSize\")\n });\n }\n });\n }\n }\n }\n });\n return relativeConstraints;\n}\n__name(getRelativeConstraints, \"getRelativeConstraints\");\nfunction layoutArchitecture(services, junctions, groups, edges, db, { spatialMaps, groupAlignments }) {\n return new Promise((resolve) => {\n const renderEl = select(\"body\").append(\"div\").attr(\"id\", \"cy\").attr(\"style\", \"display:none\");\n const cy = cytoscape({\n container: document.getElementById(\"cy\"),\n style: [\n {\n selector: \"edge\",\n style: {\n \"curve-style\": \"straight\",\n \"source-endpoint\": \"data(sourceEndpoint)\",\n \"target-endpoint\": \"data(targetEndpoint)\"\n }\n },\n {\n selector: \"edge[label]\",\n style: {\n label: \"data(label)\"\n }\n },\n {\n selector: \"edge.segments\",\n style: {\n \"curve-style\": \"segments\",\n \"segment-weights\": \"0\",\n \"segment-distances\": [0.5],\n // @ts-ignore Incorrect library types\n \"edge-distances\": \"endpoints\",\n \"source-endpoint\": \"data(sourceEndpoint)\",\n \"target-endpoint\": \"data(targetEndpoint)\"\n }\n },\n {\n selector: \"node\",\n style: {\n // @ts-ignore Incorrect library types\n \"compound-sizing-wrt-labels\": \"include\"\n }\n },\n {\n selector: \"node[label]\",\n style: {\n \"text-valign\": \"bottom\",\n \"text-halign\": \"center\",\n \"font-size\": `${db.getConfigField(\"fontSize\")}px`\n }\n },\n {\n selector: \".node-service\",\n style: {\n label: \"data(label)\",\n width: \"data(width)\",\n height: \"data(height)\"\n }\n },\n {\n selector: \".node-junction\",\n style: {\n width: \"data(width)\",\n height: \"data(height)\"\n }\n },\n {\n selector: \".node-group\",\n style: {\n // @ts-ignore Incorrect library types\n padding: `${db.getConfigField(\"padding\")}px`\n }\n }\n ],\n layout: {\n name: \"grid\",\n boundingBox: {\n x1: 0,\n x2: 100,\n y1: 0,\n y2: 100\n }\n }\n });\n renderEl.remove();\n addGroups(groups, cy);\n addServices(services, cy, db);\n addJunctions(junctions, cy, db);\n addEdges(edges, cy);\n const alignmentConstraint = getAlignments(db, spatialMaps, groupAlignments);\n const relativePlacementConstraint = getRelativeConstraints(spatialMaps, db);\n const layout = cy.layout({\n name: \"fcose\",\n quality: \"proof\",\n randomize: db.getConfigField(\"randomize\"),\n styleEnabled: false,\n animate: false,\n nodeDimensionsIncludeLabels: false,\n // Adjust the edge parameters if it passes through the border of a group\n // Hacky fix for: https://github.com/iVis-at-Bilkent/cytoscape.js-fcose/issues/67\n idealEdgeLength(edge) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n const elasticity = parentA === parentB ? 1.5 * db.getConfigField(\"iconSize\") : 0.5 * db.getConfigField(\"iconSize\");\n return elasticity;\n },\n edgeElasticity(edge) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n const elasticity = parentA === parentB ? 0.45 : 1e-3;\n return elasticity;\n },\n alignmentConstraint,\n relativePlacementConstraint\n });\n layout.one(\"layoutstop\", () => {\n function getSegmentWeights(source, target, pointX, pointY) {\n let W, D;\n const { x: sX, y: sY } = source;\n const { x: tX, y: tY } = target;\n D = (pointY - sY + (sX - pointX) * (sY - tY) / (sX - tX)) / Math.sqrt(1 + Math.pow((sY - tY) / (sX - tX), 2));\n W = Math.sqrt(Math.pow(pointY - sY, 2) + Math.pow(pointX - sX, 2) - Math.pow(D, 2));\n const distAB = Math.sqrt(Math.pow(tX - sX, 2) + Math.pow(tY - sY, 2));\n W = W / distAB;\n let delta1 = (tX - sX) * (pointY - sY) - (tY - sY) * (pointX - sX);\n switch (true) {\n case delta1 >= 0:\n delta1 = 1;\n break;\n case delta1 < 0:\n delta1 = -1;\n break;\n }\n let delta2 = (tX - sX) * (pointX - sX) + (tY - sY) * (pointY - sY);\n switch (true) {\n case delta2 >= 0:\n delta2 = 1;\n break;\n case delta2 < 0:\n delta2 = -1;\n break;\n }\n D = Math.abs(D) * delta1;\n W = W * delta2;\n return {\n distances: D,\n weights: W\n };\n }\n __name(getSegmentWeights, \"getSegmentWeights\");\n cy.startBatch();\n for (const edge of Object.values(cy.edges())) {\n if (edge.data?.()) {\n const { x: sX, y: sY } = edge.source().position();\n const { x: tX, y: tY } = edge.target().position();\n if (sX !== tX && sY !== tY) {\n const sEP = edge.sourceEndpoint();\n const tEP = edge.targetEndpoint();\n const { sourceDir } = edgeData(edge);\n const [pointX, pointY] = isArchitectureDirectionY(sourceDir) ? [sEP.x, tEP.y] : [tEP.x, sEP.y];\n const { weights, distances } = getSegmentWeights(sEP, tEP, pointX, pointY);\n edge.style(\"segment-distances\", distances);\n edge.style(\"segment-weights\", weights);\n }\n }\n }\n cy.endBatch();\n layout.run();\n });\n layout.run();\n cy.ready((e) => {\n log.info(\"Ready\", e);\n resolve(cy);\n });\n });\n}\n__name(layoutArchitecture, \"layoutArchitecture\");\nvar draw = /* @__PURE__ */ __name(async (text, id, _version, diagObj) => {\n const db = diagObj.db;\n db.setDiagramId(id);\n const services = db.getServices();\n const junctions = db.getJunctions();\n const groups = db.getGroups();\n const edges = db.getEdges();\n const ds = db.getDataStructures();\n const svg = selectSvgElement(id);\n const edgesElem = svg.append(\"g\");\n edgesElem.attr(\"class\", \"architecture-edges\");\n const servicesElem = svg.append(\"g\");\n servicesElem.attr(\"class\", \"architecture-services\");\n const groupElem = svg.append(\"g\");\n groupElem.attr(\"class\", \"architecture-groups\");\n await drawServices(db, servicesElem, services, id);\n drawJunctions(db, servicesElem, junctions, id);\n const cy = await layoutArchitecture(services, junctions, groups, edges, db, ds);\n await drawEdges(edgesElem, cy, db, id);\n await drawGroups(groupElem, cy, db, id);\n positionNodes(db, cy);\n setupGraphViewbox(void 0, svg, db.getConfigField(\"padding\"), db.getConfigField(\"useMaxWidth\"));\n}, \"draw\");\nvar renderer = { draw };\n\n// src/diagrams/architecture/architectureDiagram.ts\nvar diagram = {\n parser,\n get db() {\n return new ArchitectureDB();\n },\n renderer,\n styles: architectureStyles_default\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"architectureDiagram-3BPJPVTR.js","names":["temp","fcose","select"],"sources":["../../../../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-3BPJPVTR.mjs"],"sourcesContent":["import {\n selectSvgElement\n} from \"./chunk-WU5MYG2G.mjs\";\nimport {\n createText,\n getIconSVG,\n registerIconPacks,\n unknownIcon\n} from \"./chunk-O5CBEL6O.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n cleanAndMerge,\n getEdgeId\n} from \"./chunk-5ZQYHXKU.mjs\";\nimport {\n clear,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getConfig2,\n getDiagramTitle,\n sanitizeText,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox\n} from \"./chunk-CSCIHK7Q.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/architecture/architectureParser.ts\nimport { parse } from \"@mermaid-js/parser\";\n\n// src/diagrams/architecture/architectureTypes.ts\nvar ArchitectureDirectionName = {\n L: \"left\",\n R: \"right\",\n T: \"top\",\n B: \"bottom\"\n};\nvar ArchitectureDirectionArrow = {\n L: /* @__PURE__ */ __name((scale) => `${scale},${scale / 2} 0,${scale} 0,0`, \"L\"),\n R: /* @__PURE__ */ __name((scale) => `0,${scale / 2} ${scale},0 ${scale},${scale}`, \"R\"),\n T: /* @__PURE__ */ __name((scale) => `0,0 ${scale},0 ${scale / 2},${scale}`, \"T\"),\n B: /* @__PURE__ */ __name((scale) => `${scale / 2},0 ${scale},${scale} 0,${scale}`, \"B\")\n};\nvar ArchitectureDirectionArrowShift = {\n L: /* @__PURE__ */ __name((orig, arrowSize) => orig - arrowSize + 2, \"L\"),\n R: /* @__PURE__ */ __name((orig, _arrowSize) => orig - 2, \"R\"),\n T: /* @__PURE__ */ __name((orig, arrowSize) => orig - arrowSize + 2, \"T\"),\n B: /* @__PURE__ */ __name((orig, _arrowSize) => orig - 2, \"B\")\n};\nvar getOppositeArchitectureDirection = /* @__PURE__ */ __name(function(x) {\n if (isArchitectureDirectionX(x)) {\n return x === \"L\" ? \"R\" : \"L\";\n } else {\n return x === \"T\" ? \"B\" : \"T\";\n }\n}, \"getOppositeArchitectureDirection\");\nvar isArchitectureDirection = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"L\" || temp === \"R\" || temp === \"T\" || temp === \"B\";\n}, \"isArchitectureDirection\");\nvar isArchitectureDirectionX = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"L\" || temp === \"R\";\n}, \"isArchitectureDirectionX\");\nvar isArchitectureDirectionY = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"T\" || temp === \"B\";\n}, \"isArchitectureDirectionY\");\nvar isArchitectureDirectionXY = /* @__PURE__ */ __name(function(a, b) {\n const aX_bY = isArchitectureDirectionX(a) && isArchitectureDirectionY(b);\n const aY_bX = isArchitectureDirectionY(a) && isArchitectureDirectionX(b);\n return aX_bY || aY_bX;\n}, \"isArchitectureDirectionXY\");\nvar isArchitecturePairXY = /* @__PURE__ */ __name(function(pair) {\n const lhs = pair[0];\n const rhs = pair[1];\n const aX_bY = isArchitectureDirectionX(lhs) && isArchitectureDirectionY(rhs);\n const aY_bX = isArchitectureDirectionY(lhs) && isArchitectureDirectionX(rhs);\n return aX_bY || aY_bX;\n}, \"isArchitecturePairXY\");\nvar isValidArchitectureDirectionPair = /* @__PURE__ */ __name(function(x) {\n return x !== \"LL\" && x !== \"RR\" && x !== \"TT\" && x !== \"BB\";\n}, \"isValidArchitectureDirectionPair\");\nvar getArchitectureDirectionPair = /* @__PURE__ */ __name(function(sourceDir, targetDir) {\n const pair = `${sourceDir}${targetDir}`;\n return isValidArchitectureDirectionPair(pair) ? pair : void 0;\n}, \"getArchitectureDirectionPair\");\nvar shiftPositionByArchitectureDirectionPair = /* @__PURE__ */ __name(function([x, y], pair) {\n const lhs = pair[0];\n const rhs = pair[1];\n if (isArchitectureDirectionX(lhs)) {\n if (isArchitectureDirectionY(rhs)) {\n return [x + (lhs === \"L\" ? -1 : 1), y + (rhs === \"T\" ? 1 : -1)];\n } else {\n return [x + (lhs === \"L\" ? -1 : 1), y];\n }\n } else {\n if (isArchitectureDirectionX(rhs)) {\n return [x + (rhs === \"L\" ? 1 : -1), y + (lhs === \"T\" ? 1 : -1)];\n } else {\n return [x, y + (lhs === \"T\" ? 1 : -1)];\n }\n }\n}, \"shiftPositionByArchitectureDirectionPair\");\nvar getArchitectureDirectionXYFactors = /* @__PURE__ */ __name(function(pair) {\n if (pair === \"LT\" || pair === \"TL\") {\n return [1, 1];\n } else if (pair === \"BL\" || pair === \"LB\") {\n return [1, -1];\n } else if (pair === \"BR\" || pair === \"RB\") {\n return [-1, -1];\n } else {\n return [-1, 1];\n }\n}, \"getArchitectureDirectionXYFactors\");\nvar getArchitectureDirectionAlignment = /* @__PURE__ */ __name(function(a, b) {\n if (isArchitectureDirectionXY(a, b)) {\n return \"bend\";\n } else if (isArchitectureDirectionX(a)) {\n return \"horizontal\";\n }\n return \"vertical\";\n}, \"getArchitectureDirectionAlignment\");\nvar isArchitectureService = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp.type === \"service\";\n}, \"isArchitectureService\");\nvar isArchitectureJunction = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp.type === \"junction\";\n}, \"isArchitectureJunction\");\nvar edgeData = /* @__PURE__ */ __name((edge) => {\n return edge.data();\n}, \"edgeData\");\nvar nodeData = /* @__PURE__ */ __name((node) => {\n return node.data();\n}, \"nodeData\");\n\n// src/diagrams/architecture/architectureDb.ts\nvar DEFAULT_ARCHITECTURE_CONFIG = defaultConfig_default.architecture;\nvar ArchitectureDB = class {\n constructor() {\n this.nodes = {};\n this.groups = {};\n this.edges = [];\n this.registeredIds = {};\n this.elements = {};\n this.diagramId = \"\";\n this.setAccTitle = setAccTitle;\n this.getAccTitle = getAccTitle;\n this.setDiagramTitle = setDiagramTitle;\n this.getDiagramTitle = getDiagramTitle;\n this.getAccDescription = getAccDescription;\n this.setAccDescription = setAccDescription;\n this.clear();\n }\n static {\n __name(this, \"ArchitectureDB\");\n }\n setDiagramId(id) {\n this.diagramId = id;\n }\n getDiagramId() {\n return this.diagramId;\n }\n clear() {\n this.nodes = {};\n this.groups = {};\n this.edges = [];\n this.registeredIds = {};\n this.dataStructures = void 0;\n this.elements = {};\n this.diagramId = \"\";\n clear();\n }\n addService({\n id,\n icon,\n in: parent,\n title,\n iconText\n }) {\n if (this.registeredIds[id] !== void 0) {\n throw new Error(\n `The service id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== void 0) {\n if (id === parent) {\n throw new Error(`The service [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === void 0) {\n throw new Error(\n `The service [${id}]'s parent does not exist. Please make sure the parent is created before this service`\n );\n }\n if (this.registeredIds[parent] === \"node\") {\n throw new Error(`The service [${id}]'s parent is not a group`);\n }\n }\n this.registeredIds[id] = \"node\";\n this.nodes[id] = {\n id,\n type: \"service\",\n icon,\n iconText,\n title,\n edges: [],\n in: parent\n };\n }\n getServices() {\n return Object.values(this.nodes).filter(isArchitectureService);\n }\n addJunction({ id, in: parent }) {\n if (this.registeredIds[id] !== void 0) {\n throw new Error(\n `The junction id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== void 0) {\n if (id === parent) {\n throw new Error(`The junction [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === void 0) {\n throw new Error(\n `The junction [${id}]'s parent does not exist. Please make sure the parent is created before this junction`\n );\n }\n if (this.registeredIds[parent] === \"node\") {\n throw new Error(`The junction [${id}]'s parent is not a group`);\n }\n }\n this.registeredIds[id] = \"node\";\n this.nodes[id] = {\n id,\n type: \"junction\",\n edges: [],\n in: parent\n };\n }\n getJunctions() {\n return Object.values(this.nodes).filter(isArchitectureJunction);\n }\n getNodes() {\n return Object.values(this.nodes);\n }\n getNode(id) {\n return this.nodes[id] ?? null;\n }\n addGroup({ id, icon, in: parent, title }) {\n if (this.registeredIds?.[id] !== void 0) {\n throw new Error(\n `The group id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== void 0) {\n if (id === parent) {\n throw new Error(`The group [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds?.[parent] === void 0) {\n throw new Error(\n `The group [${id}]'s parent does not exist. Please make sure the parent is created before this group`\n );\n }\n if (this.registeredIds?.[parent] === \"node\") {\n throw new Error(`The group [${id}]'s parent is not a group`);\n }\n }\n this.registeredIds[id] = \"group\";\n this.groups[id] = {\n id,\n icon,\n title,\n in: parent\n };\n }\n getGroups() {\n return Object.values(this.groups);\n }\n addEdge({\n lhsId,\n rhsId,\n lhsDir,\n rhsDir,\n lhsInto,\n rhsInto,\n lhsGroup,\n rhsGroup,\n title\n }) {\n if (!isArchitectureDirection(lhsDir)) {\n throw new Error(\n `Invalid direction given for left hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(lhsDir)}`\n );\n }\n if (!isArchitectureDirection(rhsDir)) {\n throw new Error(\n `Invalid direction given for right hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(rhsDir)}`\n );\n }\n if (this.nodes[lhsId] === void 0 && this.groups[lhsId] === void 0) {\n throw new Error(\n `The left-hand id [${lhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n if (this.nodes[rhsId] === void 0 && this.groups[rhsId] === void 0) {\n throw new Error(\n `The right-hand id [${rhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n const lhsGroupId = this.nodes[lhsId].in;\n const rhsGroupId = this.nodes[rhsId].in;\n if (lhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The left-hand id [${lhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n if (rhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The right-hand id [${rhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n const edge = {\n lhsId,\n lhsDir,\n lhsInto,\n lhsGroup,\n rhsId,\n rhsDir,\n rhsInto,\n rhsGroup,\n title\n };\n this.edges.push(edge);\n if (this.nodes[lhsId] && this.nodes[rhsId]) {\n this.nodes[lhsId].edges.push(this.edges[this.edges.length - 1]);\n this.nodes[rhsId].edges.push(this.edges[this.edges.length - 1]);\n }\n }\n getEdges() {\n return this.edges;\n }\n /**\n * Returns the current diagram's adjacency list, spatial map, & group alignments.\n * If they have not been created, run the algorithms to generate them.\n * @returns\n */\n getDataStructures() {\n if (this.dataStructures === void 0) {\n const groupAlignments = {};\n const adjList = Object.entries(this.nodes).reduce((prevOuter, [id, service]) => {\n prevOuter[id] = service.edges.reduce((prevInner, edge) => {\n const lhsGroupId = this.getNode(edge.lhsId)?.in;\n const rhsGroupId = this.getNode(edge.rhsId)?.in;\n if (lhsGroupId && rhsGroupId && lhsGroupId !== rhsGroupId) {\n const alignment = getArchitectureDirectionAlignment(edge.lhsDir, edge.rhsDir);\n if (alignment !== \"bend\") {\n groupAlignments[lhsGroupId] ??= {};\n groupAlignments[lhsGroupId][rhsGroupId] = alignment;\n groupAlignments[rhsGroupId] ??= {};\n groupAlignments[rhsGroupId][lhsGroupId] = alignment;\n }\n }\n if (edge.lhsId === id) {\n const pair = getArchitectureDirectionPair(edge.lhsDir, edge.rhsDir);\n if (pair) {\n prevInner[pair] = edge.rhsId;\n }\n } else {\n const pair = getArchitectureDirectionPair(edge.rhsDir, edge.lhsDir);\n if (pair) {\n prevInner[pair] = edge.lhsId;\n }\n }\n return prevInner;\n }, {});\n return prevOuter;\n }, {});\n const firstId = Object.keys(adjList)[0];\n const visited = { [firstId]: 1 };\n const notVisited = Object.keys(adjList).reduce(\n (prev, id) => id === firstId ? prev : { ...prev, [id]: 1 },\n {}\n );\n const BFS = /* @__PURE__ */ __name((startingId) => {\n const spatialMap = { [startingId]: [0, 0] };\n const queue = [startingId];\n while (queue.length > 0) {\n const id = queue.shift();\n if (id) {\n visited[id] = 1;\n delete notVisited[id];\n const adj = adjList[id];\n const [posX, posY] = spatialMap[id];\n Object.entries(adj).forEach(([dir, rhsId]) => {\n if (!visited[rhsId]) {\n spatialMap[rhsId] = shiftPositionByArchitectureDirectionPair(\n [posX, posY],\n dir\n );\n queue.push(rhsId);\n }\n });\n }\n }\n return spatialMap;\n }, \"BFS\");\n const spatialMaps = [BFS(firstId)];\n while (Object.keys(notVisited).length > 0) {\n spatialMaps.push(BFS(Object.keys(notVisited)[0]));\n }\n this.dataStructures = {\n adjList,\n spatialMaps,\n groupAlignments\n };\n }\n return this.dataStructures;\n }\n setElementForId(id, element) {\n this.elements[id] = element;\n }\n getElementById(id) {\n return this.elements[id];\n }\n getConfig() {\n return cleanAndMerge({\n ...DEFAULT_ARCHITECTURE_CONFIG,\n ...getConfig().architecture\n });\n }\n getConfigField(field) {\n return this.getConfig()[field];\n }\n};\n\n// src/diagrams/architecture/architectureParser.ts\nvar populateDb = /* @__PURE__ */ __name((ast, db) => {\n populateCommonDb(ast, db);\n ast.groups.map((group) => db.addGroup(group));\n ast.services.map((service) => db.addService({ ...service, type: \"service\" }));\n ast.junctions.map((service) => db.addJunction({ ...service, type: \"junction\" }));\n ast.edges.map((edge) => db.addEdge(edge));\n}, \"populateDb\");\nvar parser = {\n parser: {\n // @ts-expect-error - ArchitectureDB is not assignable to DiagramDB\n yy: void 0\n },\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"architecture\", input);\n log.debug(ast);\n const db = parser.parser?.yy;\n if (!(db instanceof ArchitectureDB)) {\n throw new Error(\n \"parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n );\n }\n populateDb(ast, db);\n }, \"parse\")\n};\n\n// src/diagrams/architecture/architectureStyles.ts\nvar getStyles = /* @__PURE__ */ __name((options) => `\n .edge {\n stroke-width: ${options.archEdgeWidth};\n stroke: ${options.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${options.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${options.archGroupBorderColor};\n stroke-width: ${options.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`, \"getStyles\");\nvar architectureStyles_default = getStyles;\n\n// src/diagrams/architecture/architectureRenderer.ts\nimport cytoscape from \"cytoscape\";\nimport fcose from \"cytoscape-fcose\";\nimport { select } from \"d3\";\n\n// src/diagrams/architecture/architectureIcons.ts\nvar wrapIcon = /* @__PURE__ */ __name((icon) => {\n return `<g><rect width=\"80\" height=\"80\" style=\"fill: #087ebf; stroke-width: 0px;\"/>${icon}</g>`;\n}, \"wrapIcon\");\nvar architectureIcons = {\n prefix: \"mermaid-architecture\",\n height: 80,\n width: 80,\n icons: {\n database: {\n body: wrapIcon(\n '<path id=\"b\" data-name=\"4\" d=\"m20,57.86c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path id=\"c\" data-name=\"3\" d=\"m20,45.95c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path id=\"d\" data-name=\"2\" d=\"m20,34.05c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse id=\"e\" data-name=\"1\" cx=\"40\" cy=\"22.14\" rx=\"20\" ry=\"7.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"20\" y1=\"57.86\" x2=\"20\" y2=\"22.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"60\" y1=\"57.86\" x2=\"60\" y2=\"22.14\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/>'\n )\n },\n server: {\n body: wrapIcon(\n '<rect x=\"17.5\" y=\"17.5\" width=\"45\" height=\"45\" rx=\"2\" ry=\"2\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"17.5\" y1=\"32.5\" x2=\"62.5\" y2=\"32.5\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"17.5\" y1=\"47.5\" x2=\"62.5\" y2=\"47.5\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><g><path d=\"m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: #fff; stroke-width: 0px;\"/><path d=\"m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><path d=\"m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: #fff; stroke-width: 0px;\"/><path d=\"m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><path d=\"m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: #fff; stroke-width: 0px;\"/><path d=\"m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><circle cx=\"32.5\" cy=\"25\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"27.5\" cy=\"25\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"22.5\" cy=\"25\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><circle cx=\"32.5\" cy=\"40\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"27.5\" cy=\"40\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"22.5\" cy=\"40\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/></g><g><circle cx=\"32.5\" cy=\"55\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"27.5\" cy=\"55\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/><circle cx=\"22.5\" cy=\"55\" r=\".75\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10;\"/></g>'\n )\n },\n disk: {\n body: wrapIcon(\n '<rect x=\"20\" y=\"15\" width=\"40\" height=\"50\" rx=\"1\" ry=\"1\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"24\" cy=\"19.17\" rx=\".8\" ry=\".83\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"56\" cy=\"19.17\" rx=\".8\" ry=\".83\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"24\" cy=\"60.83\" rx=\".8\" ry=\".83\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"56\" cy=\"60.83\" rx=\".8\" ry=\".83\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"40\" cy=\"33.75\" rx=\"14\" ry=\"14.58\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><ellipse cx=\"40\" cy=\"33.75\" rx=\"4\" ry=\"4.17\" style=\"fill: #fff; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path d=\"m37.51,42.52l-4.83,13.22c-.26.71-1.1,1.02-1.76.64l-4.18-2.42c-.66-.38-.81-1.26-.33-1.84l9.01-10.8c.88-1.05,2.56-.08,2.09,1.2Z\" style=\"fill: #fff; stroke-width: 0px;\"/>'\n )\n },\n internet: {\n body: wrapIcon(\n '<circle cx=\"40\" cy=\"40\" r=\"22.5\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"40\" y1=\"17.5\" x2=\"40\" y2=\"62.5\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"17.5\" y1=\"40\" x2=\"62.5\" y2=\"40\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path d=\"m39.99,17.51c-15.28,11.1-15.28,33.88,0,44.98\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><path d=\"m40.01,17.51c15.28,11.1,15.28,33.88,0,44.98\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"19.75\" y1=\"30.1\" x2=\"60.25\" y2=\"30.1\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/><line x1=\"19.75\" y1=\"49.9\" x2=\"60.25\" y2=\"49.9\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/>'\n )\n },\n cloud: {\n body: wrapIcon(\n '<path d=\"m65,47.5c0,2.76-2.24,5-5,5H20c-2.76,0-5-2.24-5-5,0-1.87,1.03-3.51,2.56-4.36-.04-.21-.06-.42-.06-.64,0-2.6,2.48-4.74,5.65-4.97,1.65-4.51,6.34-7.76,11.85-7.76.86,0,1.69.08,2.5.23,2.09-1.57,4.69-2.5,7.5-2.5,6.1,0,11.19,4.38,12.28,10.17,2.14.56,3.72,2.51,3.72,4.83,0,.03,0,.07-.01.1,2.29.46,4.01,2.48,4.01,4.9Z\" style=\"fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;\"/>'\n )\n },\n unknown: unknownIcon,\n blank: {\n body: wrapIcon(\"\")\n }\n }\n};\n\n// src/diagrams/architecture/svgDraw.ts\nvar drawEdges = /* @__PURE__ */ __name(async function(edgesEl, cy, db, diagramId) {\n const padding = db.getConfigField(\"padding\");\n const iconSize = db.getConfigField(\"iconSize\");\n const halfIconSize = iconSize / 2;\n const arrowSize = iconSize / 6;\n const halfArrowSize = arrowSize / 2;\n await Promise.all(\n cy.edges().map(async (edge) => {\n const {\n source,\n sourceDir,\n sourceArrow,\n sourceGroup,\n target,\n targetDir,\n targetArrow,\n targetGroup,\n label\n } = edgeData(edge);\n let { x: startX, y: startY } = edge[0].sourceEndpoint();\n const { x: midX, y: midY } = edge[0].midpoint();\n let { x: endX, y: endY } = edge[0].targetEndpoint();\n const groupEdgeShift = padding + 4;\n if (sourceGroup) {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === \"L\" ? -groupEdgeShift : groupEdgeShift;\n } else {\n startY += sourceDir === \"T\" ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n if (targetGroup) {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === \"L\" ? -groupEdgeShift : groupEdgeShift;\n } else {\n endY += targetDir === \"T\" ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n if (!sourceGroup && db.getNode(source)?.type === \"junction\") {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === \"L\" ? halfIconSize : -halfIconSize;\n } else {\n startY += sourceDir === \"T\" ? halfIconSize : -halfIconSize;\n }\n }\n if (!targetGroup && db.getNode(target)?.type === \"junction\") {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === \"L\" ? halfIconSize : -halfIconSize;\n } else {\n endY += targetDir === \"T\" ? halfIconSize : -halfIconSize;\n }\n }\n if (edge[0]._private.rscratch) {\n const g = edgesEl.insert(\"g\");\n g.insert(\"path\").attr(\"d\", `M ${startX},${startY} L ${midX},${midY} L${endX},${endY} `).attr(\"class\", \"edge\").attr(\"id\", `${diagramId}-${getEdgeId(source, target, { prefix: \"L\" })}`);\n if (sourceArrow) {\n const xShift = isArchitectureDirectionX(sourceDir) ? ArchitectureDirectionArrowShift[sourceDir](startX, arrowSize) : startX - halfArrowSize;\n const yShift = isArchitectureDirectionY(sourceDir) ? ArchitectureDirectionArrowShift[sourceDir](startY, arrowSize) : startY - halfArrowSize;\n g.insert(\"polygon\").attr(\"points\", ArchitectureDirectionArrow[sourceDir](arrowSize)).attr(\"transform\", `translate(${xShift},${yShift})`).attr(\"class\", \"arrow\");\n }\n if (targetArrow) {\n const xShift = isArchitectureDirectionX(targetDir) ? ArchitectureDirectionArrowShift[targetDir](endX, arrowSize) : endX - halfArrowSize;\n const yShift = isArchitectureDirectionY(targetDir) ? ArchitectureDirectionArrowShift[targetDir](endY, arrowSize) : endY - halfArrowSize;\n g.insert(\"polygon\").attr(\"points\", ArchitectureDirectionArrow[targetDir](arrowSize)).attr(\"transform\", `translate(${xShift},${yShift})`).attr(\"class\", \"arrow\");\n }\n if (label) {\n const axis = !isArchitectureDirectionXY(sourceDir, targetDir) ? isArchitectureDirectionX(sourceDir) ? \"X\" : \"Y\" : \"XY\";\n let width = 0;\n if (axis === \"X\") {\n width = Math.abs(startX - endX);\n } else if (axis === \"Y\") {\n width = Math.abs(startY - endY) / 1.5;\n } else {\n width = Math.abs(startX - endX) / 2;\n }\n const textElem = g.append(\"g\");\n await createText(\n textElem,\n label,\n {\n useHtmlLabels: false,\n width,\n classes: \"architecture-service-label\"\n },\n getConfig2()\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n if (axis === \"X\") {\n textElem.attr(\"transform\", \"translate(\" + midX + \", \" + midY + \")\");\n } else if (axis === \"Y\") {\n textElem.attr(\"transform\", \"translate(\" + midX + \", \" + midY + \") rotate(-90)\");\n } else if (axis === \"XY\") {\n const pair = getArchitectureDirectionPair(sourceDir, targetDir);\n if (pair && isArchitecturePairXY(pair)) {\n const bboxOrig = textElem.node().getBoundingClientRect();\n const [x, y] = getArchitectureDirectionXYFactors(pair);\n textElem.attr(\"dominant-baseline\", \"auto\").attr(\"transform\", `rotate(${-1 * x * y * 45})`);\n const bboxNew = textElem.node().getBoundingClientRect();\n textElem.attr(\n \"transform\",\n `\n translate(${midX}, ${midY - bboxOrig.height / 2})\n translate(${x * bboxNew.width / 2}, ${y * bboxNew.height / 2})\n rotate(${-1 * x * y * 45}, 0, ${bboxOrig.height / 2})\n `\n );\n }\n }\n }\n }\n })\n );\n}, \"drawEdges\");\nvar drawGroups = /* @__PURE__ */ __name(async function(groupsEl, cy, db, diagramId) {\n const padding = db.getConfigField(\"padding\");\n const groupIconSize = padding * 0.75;\n const fontSize = db.getConfigField(\"fontSize\");\n const iconSize = db.getConfigField(\"iconSize\");\n const halfIconSize = iconSize / 2;\n await Promise.all(\n cy.nodes().map(async (node) => {\n const data = nodeData(node);\n if (data.type === \"group\") {\n const { h, w, x1, y1 } = node.boundingBox();\n const groupsNode = groupsEl.append(\"rect\");\n groupsNode.attr(\"id\", `${diagramId}-group-${data.id}`).attr(\"x\", x1 + halfIconSize).attr(\"y\", y1 + halfIconSize).attr(\"width\", w).attr(\"height\", h).attr(\"class\", \"node-bkg\");\n const groupLabelContainer = groupsEl.append(\"g\");\n let shiftedX1 = x1;\n let shiftedY1 = y1;\n if (data.icon) {\n const bkgElem = groupLabelContainer.append(\"g\");\n bkgElem.html(\n `<g>${await getIconSVG(data.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })}</g>`\n );\n bkgElem.attr(\n \"transform\",\n \"translate(\" + (shiftedX1 + halfIconSize + 1) + \", \" + (shiftedY1 + halfIconSize + 1) + \")\"\n );\n shiftedX1 += groupIconSize;\n shiftedY1 += fontSize / 2 - 1 - 2;\n }\n if (data.label) {\n const textElem = groupLabelContainer.append(\"g\");\n await createText(\n textElem,\n data.label,\n {\n useHtmlLabels: false,\n width: w,\n classes: \"architecture-service-label\"\n },\n getConfig2()\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"start\").attr(\"text-anchor\", \"start\");\n textElem.attr(\n \"transform\",\n \"translate(\" + (shiftedX1 + halfIconSize + 4) + \", \" + (shiftedY1 + halfIconSize + 2) + \")\"\n );\n }\n db.setElementForId(data.id, groupsNode);\n }\n })\n );\n}, \"drawGroups\");\nvar drawServices = /* @__PURE__ */ __name(async function(db, elem, services, diagramId) {\n const config = getConfig2();\n for (const service of services) {\n const serviceElem = elem.append(\"g\");\n const iconSize = db.getConfigField(\"iconSize\");\n if (service.title) {\n const textElem = serviceElem.append(\"g\");\n await createText(\n textElem,\n service.title,\n {\n useHtmlLabels: false,\n width: iconSize * 1.5,\n classes: \"architecture-service-label\"\n },\n config\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n textElem.attr(\"transform\", \"translate(\" + iconSize / 2 + \", \" + iconSize + \")\");\n }\n const bkgElem = serviceElem.append(\"g\");\n if (service.icon) {\n bkgElem.html(\n `<g>${await getIconSVG(service.icon, { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}</g>`\n );\n } else if (service.iconText) {\n bkgElem.html(\n `<g>${await getIconSVG(\"blank\", { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}</g>`\n );\n const textElemContainer = bkgElem.append(\"g\");\n const fo = textElemContainer.append(\"foreignObject\").attr(\"width\", iconSize).attr(\"height\", iconSize);\n const divElem = fo.append(\"div\").attr(\"class\", \"node-icon-text\").attr(\"style\", `height: ${iconSize}px;`).append(\"div\").html(sanitizeText(service.iconText, config));\n const fontSize = parseInt(\n window.getComputedStyle(divElem.node(), null).getPropertyValue(\"font-size\").replace(/\\D/g, \"\")\n ) ?? 16;\n divElem.attr(\"style\", `-webkit-line-clamp: ${Math.floor((iconSize - 2) / fontSize)};`);\n } else {\n bkgElem.append(\"path\").attr(\"class\", \"node-bkg\").attr(\"id\", `${diagramId}-node-${service.id}`).attr(\n \"d\",\n `M0,${iconSize} V5 Q0,0 5,0 H${iconSize - 5} Q${iconSize},0 ${iconSize},5 V${iconSize} Z`\n );\n }\n serviceElem.attr(\"id\", `${diagramId}-service-${service.id}`).attr(\"class\", \"architecture-service\");\n const { width, height } = serviceElem.node().getBBox();\n service.width = width;\n service.height = height;\n db.setElementForId(service.id, serviceElem);\n }\n return 0;\n}, \"drawServices\");\nvar drawJunctions = /* @__PURE__ */ __name(function(db, elem, junctions, diagramId) {\n junctions.forEach((junction) => {\n const junctionElem = elem.append(\"g\");\n const iconSize = db.getConfigField(\"iconSize\");\n const bkgElem = junctionElem.append(\"g\");\n bkgElem.append(\"rect\").attr(\"id\", `${diagramId}-node-${junction.id}`).attr(\"fill-opacity\", \"0\").attr(\"width\", iconSize).attr(\"height\", iconSize);\n junctionElem.attr(\"class\", \"architecture-junction\");\n const { width, height } = junctionElem._groups[0][0].getBBox();\n junctionElem.width = width;\n junctionElem.height = height;\n db.setElementForId(junction.id, junctionElem);\n });\n}, \"drawJunctions\");\n\n// src/diagrams/architecture/architectureRenderer.ts\nregisterIconPacks([\n {\n name: architectureIcons.prefix,\n icons: architectureIcons\n }\n]);\ncytoscape.use(fcose);\nfunction addServices(services, cy, db) {\n services.forEach((service) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"service\",\n id: service.id,\n icon: service.icon,\n label: service.title,\n parent: service.in,\n width: db.getConfigField(\"iconSize\"),\n height: db.getConfigField(\"iconSize\")\n },\n classes: \"node-service\"\n });\n });\n}\n__name(addServices, \"addServices\");\nfunction addJunctions(junctions, cy, db) {\n junctions.forEach((junction) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"junction\",\n id: junction.id,\n parent: junction.in,\n width: db.getConfigField(\"iconSize\"),\n height: db.getConfigField(\"iconSize\")\n },\n classes: \"node-junction\"\n });\n });\n}\n__name(addJunctions, \"addJunctions\");\nfunction positionNodes(db, cy) {\n cy.nodes().map((node) => {\n const data = nodeData(node);\n if (data.type === \"group\") {\n return;\n }\n data.x = node.position().x;\n data.y = node.position().y;\n const nodeElem = db.getElementById(data.id);\n nodeElem.attr(\"transform\", \"translate(\" + (data.x || 0) + \",\" + (data.y || 0) + \")\");\n });\n}\n__name(positionNodes, \"positionNodes\");\nfunction addGroups(groups, cy) {\n groups.forEach((group) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"group\",\n id: group.id,\n icon: group.icon,\n label: group.title,\n parent: group.in\n },\n classes: \"node-group\"\n });\n });\n}\n__name(addGroups, \"addGroups\");\nfunction addEdges(edges, cy) {\n edges.forEach((parsedEdge) => {\n const { lhsId, rhsId, lhsInto, lhsGroup, rhsInto, lhsDir, rhsDir, rhsGroup, title } = parsedEdge;\n const edgeType = isArchitectureDirectionXY(parsedEdge.lhsDir, parsedEdge.rhsDir) ? \"segments\" : \"straight\";\n const edge = {\n id: `${lhsId}-${rhsId}`,\n label: title,\n source: lhsId,\n sourceDir: lhsDir,\n sourceArrow: lhsInto,\n sourceGroup: lhsGroup,\n sourceEndpoint: lhsDir === \"L\" ? \"0 50%\" : lhsDir === \"R\" ? \"100% 50%\" : lhsDir === \"T\" ? \"50% 0\" : \"50% 100%\",\n target: rhsId,\n targetDir: rhsDir,\n targetArrow: rhsInto,\n targetGroup: rhsGroup,\n targetEndpoint: rhsDir === \"L\" ? \"0 50%\" : rhsDir === \"R\" ? \"100% 50%\" : rhsDir === \"T\" ? \"50% 0\" : \"50% 100%\"\n };\n cy.add({\n group: \"edges\",\n data: edge,\n classes: edgeType\n });\n });\n}\n__name(addEdges, \"addEdges\");\nfunction getAlignments(db, spatialMaps, groupAlignments) {\n const flattenAlignments = /* @__PURE__ */ __name((alignmentObj, alignmentDir) => {\n return Object.entries(alignmentObj).reduce(\n (prev, [dir, alignments2]) => {\n let cnt = 0;\n const arr = Object.entries(alignments2);\n if (arr.length === 1) {\n prev[dir] = arr[0][1];\n return prev;\n }\n for (let i = 0; i < arr.length - 1; i++) {\n for (let j = i + 1; j < arr.length; j++) {\n const [aGroupId, aNodeIds] = arr[i];\n const [bGroupId, bNodeIds] = arr[j];\n const alignment = groupAlignments[aGroupId]?.[bGroupId];\n if (alignment === alignmentDir) {\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];\n } else if (aGroupId === \"default\" || bGroupId === \"default\") {\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];\n } else {\n const keyA = `${dir}-${cnt++}`;\n prev[keyA] = aNodeIds;\n const keyB = `${dir}-${cnt++}`;\n prev[keyB] = bNodeIds;\n }\n }\n }\n return prev;\n },\n {}\n );\n }, \"flattenAlignments\");\n const alignments = spatialMaps.map((spatialMap) => {\n const horizontalAlignments = {};\n const verticalAlignments = {};\n Object.entries(spatialMap).forEach(([id, [x, y]]) => {\n const nodeGroup = db.getNode(id)?.in ?? \"default\";\n horizontalAlignments[y] ??= {};\n horizontalAlignments[y][nodeGroup] ??= [];\n horizontalAlignments[y][nodeGroup].push(id);\n verticalAlignments[x] ??= {};\n verticalAlignments[x][nodeGroup] ??= [];\n verticalAlignments[x][nodeGroup].push(id);\n });\n return {\n horiz: Object.values(flattenAlignments(horizontalAlignments, \"horizontal\")).filter(\n (arr) => arr.length > 1\n ),\n vert: Object.values(flattenAlignments(verticalAlignments, \"vertical\")).filter(\n (arr) => arr.length > 1\n )\n };\n });\n const [horizontal, vertical] = alignments.reduce(\n ([prevHoriz, prevVert], { horiz, vert }) => {\n return [\n [...prevHoriz, ...horiz],\n [...prevVert, ...vert]\n ];\n },\n [[], []]\n );\n return {\n horizontal,\n vertical\n };\n}\n__name(getAlignments, \"getAlignments\");\nfunction getRelativeConstraints(spatialMaps, db) {\n const relativeConstraints = [];\n const posToStr = /* @__PURE__ */ __name((pos) => `${pos[0]},${pos[1]}`, \"posToStr\");\n const strToPos = /* @__PURE__ */ __name((pos) => pos.split(\",\").map((p) => parseInt(p)), \"strToPos\");\n spatialMaps.forEach((spatialMap) => {\n const invSpatialMap = Object.fromEntries(\n Object.entries(spatialMap).map(([id, pos]) => [posToStr(pos), id])\n );\n const queue = [posToStr([0, 0])];\n const visited = {};\n const directions = {\n L: [-1, 0],\n R: [1, 0],\n T: [0, 1],\n B: [0, -1]\n };\n while (queue.length > 0) {\n const curr = queue.shift();\n if (curr) {\n visited[curr] = 1;\n const currId = invSpatialMap[curr];\n if (currId) {\n const currPos = strToPos(curr);\n Object.entries(directions).forEach(([dir, shift]) => {\n const newPos = posToStr([currPos[0] + shift[0], currPos[1] + shift[1]]);\n const newId = invSpatialMap[newPos];\n if (newId && !visited[newPos]) {\n queue.push(newPos);\n relativeConstraints.push({\n [ArchitectureDirectionName[dir]]: newId,\n [ArchitectureDirectionName[getOppositeArchitectureDirection(dir)]]: currId,\n gap: 1.5 * db.getConfigField(\"iconSize\")\n });\n }\n });\n }\n }\n }\n });\n return relativeConstraints;\n}\n__name(getRelativeConstraints, \"getRelativeConstraints\");\nfunction layoutArchitecture(services, junctions, groups, edges, db, { spatialMaps, groupAlignments }) {\n return new Promise((resolve) => {\n const renderEl = select(\"body\").append(\"div\").attr(\"id\", \"cy\").attr(\"style\", \"display:none\");\n const cy = cytoscape({\n container: document.getElementById(\"cy\"),\n style: [\n {\n selector: \"edge\",\n style: {\n \"curve-style\": \"straight\",\n \"source-endpoint\": \"data(sourceEndpoint)\",\n \"target-endpoint\": \"data(targetEndpoint)\"\n }\n },\n {\n selector: \"edge[label]\",\n style: {\n label: \"data(label)\"\n }\n },\n {\n selector: \"edge.segments\",\n style: {\n \"curve-style\": \"segments\",\n \"segment-weights\": \"0\",\n \"segment-distances\": [0.5],\n // @ts-ignore Incorrect library types\n \"edge-distances\": \"endpoints\",\n \"source-endpoint\": \"data(sourceEndpoint)\",\n \"target-endpoint\": \"data(targetEndpoint)\"\n }\n },\n {\n selector: \"node\",\n style: {\n // @ts-ignore Incorrect library types\n \"compound-sizing-wrt-labels\": \"include\"\n }\n },\n {\n selector: \"node[label]\",\n style: {\n \"text-valign\": \"bottom\",\n \"text-halign\": \"center\",\n \"font-size\": `${db.getConfigField(\"fontSize\")}px`\n }\n },\n {\n selector: \".node-service\",\n style: {\n label: \"data(label)\",\n width: \"data(width)\",\n height: \"data(height)\"\n }\n },\n {\n selector: \".node-junction\",\n style: {\n width: \"data(width)\",\n height: \"data(height)\"\n }\n },\n {\n selector: \".node-group\",\n style: {\n // @ts-ignore Incorrect library types\n padding: `${db.getConfigField(\"padding\")}px`\n }\n }\n ],\n layout: {\n name: \"grid\",\n boundingBox: {\n x1: 0,\n x2: 100,\n y1: 0,\n y2: 100\n }\n }\n });\n renderEl.remove();\n addGroups(groups, cy);\n addServices(services, cy, db);\n addJunctions(junctions, cy, db);\n addEdges(edges, cy);\n const alignmentConstraint = getAlignments(db, spatialMaps, groupAlignments);\n const relativePlacementConstraint = getRelativeConstraints(spatialMaps, db);\n const iconSize = db.getConfigField(\"iconSize\");\n const sameGroupIdealLength = db.getConfigField(\"idealEdgeLengthMultiplier\") * iconSize;\n const crossGroupIdealLength = 0.5 * iconSize;\n const sameGroupElasticity = db.getConfigField(\"edgeElasticity\");\n const layout = cy.layout({\n name: \"fcose\",\n quality: \"proof\",\n randomize: db.getConfigField(\"randomize\"),\n nodeSeparation: db.getConfigField(\"nodeSeparation\"),\n numIter: db.getConfigField(\"numIter\"),\n styleEnabled: false,\n animate: false,\n nodeDimensionsIncludeLabels: false,\n // Adjust the edge parameters if it passes through the border of a group\n // Hacky fix for: https://github.com/iVis-at-Bilkent/cytoscape.js-fcose/issues/67\n idealEdgeLength(edge) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n return parentA === parentB ? sameGroupIdealLength : crossGroupIdealLength;\n },\n edgeElasticity(edge) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n return parentA === parentB ? sameGroupElasticity : 1e-3;\n },\n alignmentConstraint,\n relativePlacementConstraint\n });\n layout.one(\"layoutstop\", () => {\n function getSegmentWeights(source, target, pointX, pointY) {\n let W, D;\n const { x: sX, y: sY } = source;\n const { x: tX, y: tY } = target;\n D = (pointY - sY + (sX - pointX) * (sY - tY) / (sX - tX)) / Math.sqrt(1 + Math.pow((sY - tY) / (sX - tX), 2));\n W = Math.sqrt(Math.pow(pointY - sY, 2) + Math.pow(pointX - sX, 2) - Math.pow(D, 2));\n const distAB = Math.sqrt(Math.pow(tX - sX, 2) + Math.pow(tY - sY, 2));\n W = W / distAB;\n let delta1 = (tX - sX) * (pointY - sY) - (tY - sY) * (pointX - sX);\n switch (true) {\n case delta1 >= 0:\n delta1 = 1;\n break;\n case delta1 < 0:\n delta1 = -1;\n break;\n }\n let delta2 = (tX - sX) * (pointX - sX) + (tY - sY) * (pointY - sY);\n switch (true) {\n case delta2 >= 0:\n delta2 = 1;\n break;\n case delta2 < 0:\n delta2 = -1;\n break;\n }\n D = Math.abs(D) * delta1;\n W = W * delta2;\n return {\n distances: D,\n weights: W\n };\n }\n __name(getSegmentWeights, \"getSegmentWeights\");\n cy.startBatch();\n for (const edge of Object.values(cy.edges())) {\n if (edge.data?.()) {\n const { x: sX, y: sY } = edge.source().position();\n const { x: tX, y: tY } = edge.target().position();\n if (sX !== tX && sY !== tY) {\n const sEP = edge.sourceEndpoint();\n const tEP = edge.targetEndpoint();\n const { sourceDir } = edgeData(edge);\n const [pointX, pointY] = isArchitectureDirectionY(sourceDir) ? [sEP.x, tEP.y] : [tEP.x, sEP.y];\n const { weights, distances } = getSegmentWeights(sEP, tEP, pointX, pointY);\n edge.style(\"segment-distances\", distances);\n edge.style(\"segment-weights\", weights);\n }\n }\n }\n cy.endBatch();\n layout.run();\n });\n layout.run();\n cy.ready((e) => {\n log.info(\"Ready\", e);\n resolve(cy);\n });\n });\n}\n__name(layoutArchitecture, \"layoutArchitecture\");\nvar draw = /* @__PURE__ */ __name(async (text, id, _version, diagObj) => {\n const db = diagObj.db;\n db.setDiagramId(id);\n const services = db.getServices();\n const junctions = db.getJunctions();\n const groups = db.getGroups();\n const edges = db.getEdges();\n const ds = db.getDataStructures();\n const svg = selectSvgElement(id);\n const edgesElem = svg.append(\"g\");\n edgesElem.attr(\"class\", \"architecture-edges\");\n const servicesElem = svg.append(\"g\");\n servicesElem.attr(\"class\", \"architecture-services\");\n const groupElem = svg.append(\"g\");\n groupElem.attr(\"class\", \"architecture-groups\");\n await drawServices(db, servicesElem, services, id);\n drawJunctions(db, servicesElem, junctions, id);\n const cy = await layoutArchitecture(services, junctions, groups, edges, db, ds);\n await drawEdges(edgesElem, cy, db, id);\n await drawGroups(groupElem, cy, db, id);\n positionNodes(db, cy);\n setupGraphViewbox(void 0, svg, db.getConfigField(\"padding\"), db.getConfigField(\"useMaxWidth\"));\n}, \"draw\");\nvar renderer = { draw };\n\n// src/diagrams/architecture/architectureDiagram.ts\nvar diagram = {\n parser,\n get db() {\n return new ArchitectureDB();\n },\n renderer,\n styles: architectureStyles_default\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}