jekyll-ham 1.0.4 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (366) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -2
  3. data/_layouts/default.html +6 -0
  4. data/_layouts/page.html +1 -1
  5. data/assets/mermaid/Diagram.d.ts +33 -0
  6. data/assets/mermaid/Tableau10-31042135.js +10 -0
  7. data/assets/mermaid/Tableau10-558cc280.js +9 -0
  8. data/assets/mermaid/__mocks__/mermaidAPI.d.ts +13 -0
  9. data/assets/mermaid/accessibility.d.ts +27 -0
  10. data/assets/mermaid/accessibility.spec.d.ts +1 -0
  11. data/assets/mermaid/arc-c0f908ab.js +148 -0
  12. data/assets/mermaid/arc-d1f6357e.js +86 -0
  13. data/assets/mermaid/array-2ff2c7a6.js +6 -0
  14. data/assets/mermaid/array-b7dcf730.js +6 -0
  15. data/assets/mermaid/assignWithDepth.d.ts +30 -0
  16. data/assets/mermaid/blockDiagram-5dc23a45.js +1230 -0
  17. data/assets/mermaid/blockDiagram-9f4a6865.js +1822 -0
  18. data/assets/mermaid/blockDiagram-efe38566.js +1818 -0
  19. data/assets/mermaid/c4Diagram-1e775db3.js +1579 -0
  20. data/assets/mermaid/c4Diagram-ae766693.js +2473 -0
  21. data/assets/mermaid/c4Diagram-af207393.js +2463 -0
  22. data/assets/mermaid/channel-ebbc4130.js +5 -0
  23. data/assets/mermaid/channel-f9001828.js +8 -0
  24. data/assets/mermaid/classDiagram-72b9c71d.js +356 -0
  25. data/assets/mermaid/classDiagram-f52caa06.js +220 -0
  26. data/assets/mermaid/classDiagram-fb54d2a0.js +363 -0
  27. data/assets/mermaid/classDiagram-v2-640c694e.js +206 -0
  28. data/assets/mermaid/classDiagram-v2-a2b738ad.js +298 -0
  29. data/assets/mermaid/classDiagram-v2-fedb80f6.js +290 -0
  30. data/assets/mermaid/clone-9ea6bfeb.js +8 -0
  31. data/assets/mermaid/clone-afc2f047.js +8 -0
  32. data/assets/mermaid/config.d.ts +98 -0
  33. data/assets/mermaid/config.spec.d.ts +1 -0
  34. data/assets/mermaid/config.type.d.ts +1534 -0
  35. data/assets/mermaid/createText-03b82060.js +2966 -0
  36. data/assets/mermaid/createText-b70fe78a.js +4929 -0
  37. data/assets/mermaid/createText-ca0c5216.js +251 -0
  38. data/assets/mermaid/dagre-wrapper/blockArrowHelper.d.ts +8 -0
  39. data/assets/mermaid/dagre-wrapper/clusters.d.ts +4 -0
  40. data/assets/mermaid/dagre-wrapper/createLabel.d.ts +9 -0
  41. data/assets/mermaid/dagre-wrapper/edgeMarker.d.ts +12 -0
  42. data/assets/mermaid/dagre-wrapper/edgeMarker.spec.d.ts +1 -0
  43. data/assets/mermaid/dagre-wrapper/edges.d.ts +14 -0
  44. data/assets/mermaid/dagre-wrapper/index.d.ts +1 -0
  45. data/assets/mermaid/dagre-wrapper/intersect/index.d.ts +13 -0
  46. data/assets/mermaid/dagre-wrapper/intersect/intersect-circle.d.ts +10 -0
  47. data/assets/mermaid/dagre-wrapper/intersect/intersect-ellipse.d.ts +11 -0
  48. data/assets/mermaid/dagre-wrapper/intersect/intersect-line.d.ts +13 -0
  49. data/assets/mermaid/dagre-wrapper/intersect/intersect-node.d.ts +6 -0
  50. data/assets/mermaid/dagre-wrapper/intersect/intersect-polygon.d.ts +10 -0
  51. data/assets/mermaid/dagre-wrapper/intersect/intersect-rect.d.ts +5 -0
  52. data/assets/mermaid/dagre-wrapper/markers.d.ts +2 -0
  53. data/assets/mermaid/dagre-wrapper/mermaid-graphlib.d.ts +8 -0
  54. data/assets/mermaid/dagre-wrapper/nodes.d.ts +4 -0
  55. data/assets/mermaid/dagre-wrapper/shapes/note.d.ts +2 -0
  56. data/assets/mermaid/dagre-wrapper/shapes/util.d.ts +14 -0
  57. data/assets/mermaid/defaultConfig.d.ts +12 -0
  58. data/assets/mermaid/diagram-api/comments.d.ts +6 -0
  59. data/assets/mermaid/diagram-api/comments.spec.d.ts +1 -0
  60. data/assets/mermaid/diagram-api/detectType.d.ts +42 -0
  61. data/assets/mermaid/diagram-api/diagram-orchestration.d.ts +1 -0
  62. data/assets/mermaid/diagram-api/diagram-orchestration.spec.d.ts +1 -0
  63. data/assets/mermaid/diagram-api/diagramAPI.d.ts +31 -0
  64. data/assets/mermaid/diagram-api/diagramAPI.spec.d.ts +1 -0
  65. data/assets/mermaid/diagram-api/frontmatter.d.ts +18 -0
  66. data/assets/mermaid/diagram-api/frontmatter.spec.d.ts +1 -0
  67. data/assets/mermaid/diagram-api/loadDiagram.d.ts +1 -0
  68. data/assets/mermaid/diagram-api/regexes.d.ts +3 -0
  69. data/assets/mermaid/diagram-api/types.d.ts +84 -0
  70. data/assets/mermaid/diagram.spec.d.ts +1 -0
  71. data/assets/mermaid/diagrams/block/blockDB.d.ts +54 -0
  72. data/assets/mermaid/diagrams/block/blockDetector.d.ts +3 -0
  73. data/assets/mermaid/diagrams/block/blockDiagram.d.ts +2 -0
  74. data/assets/mermaid/diagrams/block/blockRenderer.d.ts +15 -0
  75. data/assets/mermaid/diagrams/block/blockTypes.d.ts +36 -0
  76. data/assets/mermaid/diagrams/block/blockUtils.d.ts +1 -0
  77. data/assets/mermaid/diagrams/block/layout.d.ts +13 -0
  78. data/assets/mermaid/diagrams/block/layout.spec.d.ts +1 -0
  79. data/assets/mermaid/diagrams/block/parser/block.spec.d.ts +1 -0
  80. data/assets/mermaid/diagrams/block/renderHelpers.d.ts +10 -0
  81. data/assets/mermaid/diagrams/block/styles.d.ts +18 -0
  82. data/assets/mermaid/diagrams/c4/c4Db.d.ts +127 -0
  83. data/assets/mermaid/diagrams/c4/c4Detector.d.ts +3 -0
  84. data/assets/mermaid/diagrams/c4/c4Diagram.d.ts +2 -0
  85. data/assets/mermaid/diagrams/c4/c4Renderer.d.ts +12 -0
  86. data/assets/mermaid/diagrams/c4/styles.d.ts +2 -0
  87. data/assets/mermaid/diagrams/c4/svgDraw.d.ts +36 -0
  88. data/assets/mermaid/diagrams/class/classDb.d.ts +144 -0
  89. data/assets/mermaid/diagrams/class/classDetector-V2.d.ts +3 -0
  90. data/assets/mermaid/diagrams/class/classDetector.d.ts +3 -0
  91. data/assets/mermaid/diagrams/class/classDiagram-v2.d.ts +2 -0
  92. data/assets/mermaid/diagrams/class/classDiagram.d.ts +2 -0
  93. data/assets/mermaid/diagrams/class/classDiagram.spec.d.ts +1 -0
  94. data/assets/mermaid/diagrams/class/classRenderer-v2.d.ts +57 -0
  95. data/assets/mermaid/diagrams/class/classRenderer.d.ts +5 -0
  96. data/assets/mermaid/diagrams/class/classTypes.d.ts +78 -0
  97. data/assets/mermaid/diagrams/class/classTypes.spec.d.ts +1 -0
  98. data/assets/mermaid/diagrams/class/styles.d.ts +2 -0
  99. data/assets/mermaid/diagrams/class/svgDraw.d.ts +25 -0
  100. data/assets/mermaid/diagrams/common/common.d.ts +110 -0
  101. data/assets/mermaid/diagrams/common/common.spec.d.ts +1 -0
  102. data/assets/mermaid/diagrams/common/commonDb.d.ts +7 -0
  103. data/assets/mermaid/diagrams/common/commonTypes.d.ts +51 -0
  104. data/assets/mermaid/diagrams/common/svgDrawCommon.d.ts +15 -0
  105. data/assets/mermaid/diagrams/er/erDb.d.ts +49 -0
  106. data/assets/mermaid/diagrams/er/erDetector.d.ts +3 -0
  107. data/assets/mermaid/diagrams/er/erDiagram.d.ts +34 -0
  108. data/assets/mermaid/diagrams/er/erMarkers.d.ts +24 -0
  109. data/assets/mermaid/diagrams/er/erRenderer.d.ts +19 -0
  110. data/assets/mermaid/diagrams/er/erRenderer.spec.d.ts +1 -0
  111. data/assets/mermaid/diagrams/er/styles.d.ts +2 -0
  112. data/assets/mermaid/diagrams/error/errorDiagram.d.ts +3 -0
  113. data/assets/mermaid/diagrams/error/errorRenderer.d.ts +12 -0
  114. data/assets/mermaid/diagrams/flowchart/elk/detector.d.ts +3 -0
  115. data/assets/mermaid/diagrams/flowchart/elk/detector.spec.d.ts +1 -0
  116. data/assets/mermaid/diagrams/flowchart/elk/flowRenderer-elk.d.ts +10 -0
  117. data/assets/mermaid/diagrams/flowchart/elk/flowchart-elk-definition.d.ts +10 -0
  118. data/assets/mermaid/diagrams/flowchart/elk/render-utils.d.ts +5 -0
  119. data/assets/mermaid/diagrams/flowchart/elk/render-utils.spec.d.ts +1 -0
  120. data/assets/mermaid/diagrams/flowchart/elk/styles.d.ts +19 -0
  121. data/assets/mermaid/diagrams/flowchart/flowChartShapes.d.ts +9 -0
  122. data/assets/mermaid/diagrams/flowchart/flowDb.d.ts +87 -0
  123. data/assets/mermaid/diagrams/flowchart/flowDetector-v2.d.ts +3 -0
  124. data/assets/mermaid/diagrams/flowchart/flowDetector.d.ts +3 -0
  125. data/assets/mermaid/diagrams/flowchart/flowDiagram-v2.d.ts +57 -0
  126. data/assets/mermaid/diagrams/flowchart/flowDiagram.d.ts +57 -0
  127. data/assets/mermaid/diagrams/flowchart/flowRenderer-v2.d.ts +13 -0
  128. data/assets/mermaid/diagrams/flowchart/flowRenderer.d.ts +13 -0
  129. data/assets/mermaid/diagrams/flowchart/styles.d.ts +18 -0
  130. data/assets/mermaid/diagrams/gantt/ganttDb.d.ts +106 -0
  131. data/assets/mermaid/diagrams/gantt/ganttDb.spec.d.ts +1 -0
  132. data/assets/mermaid/diagrams/gantt/ganttDetector.d.ts +3 -0
  133. data/assets/mermaid/diagrams/gantt/ganttDiagram.d.ts +2 -0
  134. data/assets/mermaid/diagrams/gantt/ganttRenderer.d.ts +7 -0
  135. data/assets/mermaid/diagrams/gantt/styles.d.ts +2 -0
  136. data/assets/mermaid/diagrams/git/gitGraphAst.d.ts +61 -0
  137. data/assets/mermaid/diagrams/git/gitGraphDetector.d.ts +3 -0
  138. data/assets/mermaid/diagrams/git/gitGraphDiagram.d.ts +2 -0
  139. data/assets/mermaid/diagrams/git/gitGraphRenderer.d.ts +5 -0
  140. data/assets/mermaid/diagrams/git/styles.d.ts +2 -0
  141. data/assets/mermaid/diagrams/info/info.spec.d.ts +1 -0
  142. data/assets/mermaid/diagrams/info/infoDb.d.ts +5 -0
  143. data/assets/mermaid/diagrams/info/infoDetector.d.ts +2 -0
  144. data/assets/mermaid/diagrams/info/infoDiagram.d.ts +2 -0
  145. data/assets/mermaid/diagrams/info/infoRenderer.d.ts +4 -0
  146. data/assets/mermaid/diagrams/info/infoTypes.d.ts +9 -0
  147. data/assets/mermaid/diagrams/mindmap/detector.d.ts +3 -0
  148. data/assets/mermaid/diagrams/mindmap/mindmap-definition.d.ts +2 -0
  149. data/assets/mermaid/diagrams/mindmap/mindmap.spec.d.ts +1 -0
  150. data/assets/mermaid/diagrams/mindmap/mindmapDb.d.ts +30 -0
  151. data/assets/mermaid/diagrams/mindmap/mindmapRenderer.d.ts +21 -0
  152. data/assets/mermaid/diagrams/mindmap/mindmapTypes.d.ts +20 -0
  153. data/assets/mermaid/diagrams/mindmap/styles.d.ts +3 -0
  154. data/assets/mermaid/diagrams/mindmap/svgDraw.d.ts +13 -0
  155. data/assets/mermaid/diagrams/pie/pie.spec.d.ts +1 -0
  156. data/assets/mermaid/diagrams/pie/pieDb.d.ts +6 -0
  157. data/assets/mermaid/diagrams/pie/pieDetector.d.ts +2 -0
  158. data/assets/mermaid/diagrams/pie/pieDiagram.d.ts +2 -0
  159. data/assets/mermaid/diagrams/pie/pieRenderer.d.ts +13 -0
  160. data/assets/mermaid/diagrams/pie/pieStyles.d.ts +3 -0
  161. data/assets/mermaid/diagrams/pie/pieTypes.d.ts +53 -0
  162. data/assets/mermaid/diagrams/quadrant-chart/parser/quadrant.jison.spec.d.ts +1 -0
  163. data/assets/mermaid/diagrams/quadrant-chart/quadrantBuilder.d.ts +118 -0
  164. data/assets/mermaid/diagrams/quadrant-chart/quadrantDb.d.ts +38 -0
  165. data/assets/mermaid/diagrams/quadrant-chart/quadrantDetector.d.ts +3 -0
  166. data/assets/mermaid/diagrams/quadrant-chart/quadrantDiagram.d.ts +2 -0
  167. data/assets/mermaid/diagrams/quadrant-chart/quadrantRenderer.d.ts +6 -0
  168. data/assets/mermaid/diagrams/requirement/requirementDb.d.ts +70 -0
  169. data/assets/mermaid/diagrams/requirement/requirementDetector.d.ts +3 -0
  170. data/assets/mermaid/diagrams/requirement/requirementDiagram.d.ts +2 -0
  171. data/assets/mermaid/diagrams/requirement/requirementMarkers.d.ts +10 -0
  172. data/assets/mermaid/diagrams/requirement/requirementRenderer.d.ts +7 -0
  173. data/assets/mermaid/diagrams/requirement/styles.d.ts +2 -0
  174. data/assets/mermaid/diagrams/sankey/parser/sankey.spec.d.ts +1 -0
  175. data/assets/mermaid/diagrams/sankey/sankeyDB.d.ts +36 -0
  176. data/assets/mermaid/diagrams/sankey/sankeyDetector.d.ts +3 -0
  177. data/assets/mermaid/diagrams/sankey/sankeyDiagram.d.ts +2 -0
  178. data/assets/mermaid/diagrams/sankey/sankeyRenderer.d.ts +14 -0
  179. data/assets/mermaid/diagrams/sankey/sankeyUtils.d.ts +1 -0
  180. data/assets/mermaid/diagrams/sequence/sequenceDb.d.ts +153 -0
  181. data/assets/mermaid/diagrams/sequence/sequenceDetector.d.ts +3 -0
  182. data/assets/mermaid/diagrams/sequence/sequenceDiagram.d.ts +2 -0
  183. data/assets/mermaid/diagrams/sequence/sequenceRenderer.d.ts +202 -0
  184. data/assets/mermaid/diagrams/sequence/styles.d.ts +2 -0
  185. data/assets/mermaid/diagrams/sequence/svgDraw.d.ts +73 -0
  186. data/assets/mermaid/diagrams/state/id-cache.d.ts +11 -0
  187. data/assets/mermaid/diagrams/state/shapes.d.ts +14 -0
  188. data/assets/mermaid/diagrams/state/stateCommon.d.ts +22 -0
  189. data/assets/mermaid/diagrams/state/stateDb.d.ts +91 -0
  190. data/assets/mermaid/diagrams/state/stateDetector-V2.d.ts +3 -0
  191. data/assets/mermaid/diagrams/state/stateDetector.d.ts +3 -0
  192. data/assets/mermaid/diagrams/state/stateDiagram-v2.d.ts +2 -0
  193. data/assets/mermaid/diagrams/state/stateDiagram.d.ts +2 -0
  194. data/assets/mermaid/diagrams/state/stateRenderer-v2.d.ts +20 -0
  195. data/assets/mermaid/diagrams/state/stateRenderer.d.ts +7 -0
  196. data/assets/mermaid/diagrams/state/styles.d.ts +2 -0
  197. data/assets/mermaid/diagrams/timeline/detector.d.ts +3 -0
  198. data/assets/mermaid/diagrams/timeline/styles.d.ts +2 -0
  199. data/assets/mermaid/diagrams/timeline/svgDraw.d.ts +46 -0
  200. data/assets/mermaid/diagrams/timeline/timeline-definition.d.ts +10 -0
  201. data/assets/mermaid/diagrams/timeline/timelineDb.d.ts +20 -0
  202. data/assets/mermaid/diagrams/timeline/timelineRenderer.d.ts +19 -0
  203. data/assets/mermaid/diagrams/user-journey/journeyDb.d.ts +30 -0
  204. data/assets/mermaid/diagrams/user-journey/journeyDetector.d.ts +3 -0
  205. data/assets/mermaid/diagrams/user-journey/journeyDiagram.d.ts +2 -0
  206. data/assets/mermaid/diagrams/user-journey/journeyRenderer.d.ts +30 -0
  207. data/assets/mermaid/diagrams/user-journey/styles.d.ts +2 -0
  208. data/assets/mermaid/diagrams/user-journey/svgDraw.d.ts +20 -0
  209. data/assets/mermaid/diagrams/xychart/chartBuilder/components/axis/bandAxis.d.ts +12 -0
  210. data/assets/mermaid/diagrams/xychart/chartBuilder/components/axis/baseAxis.d.ts +38 -0
  211. data/assets/mermaid/diagrams/xychart/chartBuilder/components/axis/index.d.ts +12 -0
  212. data/assets/mermaid/diagrams/xychart/chartBuilder/components/axis/linearAxis.d.ts +11 -0
  213. data/assets/mermaid/diagrams/xychart/chartBuilder/components/chartTitle.d.ts +16 -0
  214. data/assets/mermaid/diagrams/xychart/chartBuilder/components/plot/barPlot.d.ts +12 -0
  215. data/assets/mermaid/diagrams/xychart/chartBuilder/components/plot/index.d.ts +20 -0
  216. data/assets/mermaid/diagrams/xychart/chartBuilder/components/plot/linePlot.d.ts +11 -0
  217. data/assets/mermaid/diagrams/xychart/chartBuilder/index.d.ts +5 -0
  218. data/assets/mermaid/diagrams/xychart/chartBuilder/interfaces.d.ts +132 -0
  219. data/assets/mermaid/diagrams/xychart/chartBuilder/orchestrator.d.ts +12 -0
  220. data/assets/mermaid/diagrams/xychart/chartBuilder/textDimensionCalculator.d.ts +10 -0
  221. data/assets/mermaid/diagrams/xychart/parser/xychart.jison.spec.d.ts +1 -0
  222. data/assets/mermaid/diagrams/xychart/xychartDb.d.ts +40 -0
  223. data/assets/mermaid/diagrams/xychart/xychartDetector.d.ts +3 -0
  224. data/assets/mermaid/diagrams/xychart/xychartDiagram.d.ts +2 -0
  225. data/assets/mermaid/diagrams/xychart/xychartRenderer.d.ts +6 -0
  226. data/assets/mermaid/docs/vite.config.d.ts +2 -0
  227. data/assets/mermaid/edges-066a5561.js +1840 -0
  228. data/assets/mermaid/edges-16357fde.js +1083 -0
  229. data/assets/mermaid/edges-ce5cfb7c.js +1840 -0
  230. data/assets/mermaid/erDiagram-09d1c15f.js +1176 -0
  231. data/assets/mermaid/erDiagram-543717f2.js +1321 -0
  232. data/assets/mermaid/erDiagram-c7ff1bec.js +931 -0
  233. data/assets/mermaid/errors.d.ts +3 -0
  234. data/assets/mermaid/flowDb-9a89ea33.js +1126 -0
  235. data/assets/mermaid/flowDb-ba9bd7fa.js +1713 -0
  236. data/assets/mermaid/flowDb-c1833063.js +1714 -0
  237. data/assets/mermaid/flowDiagram-aadb13b0.js +797 -0
  238. data/assets/mermaid/flowDiagram-b222e15a.js +614 -0
  239. data/assets/mermaid/flowDiagram-b5e7ba30.js +1278 -0
  240. data/assets/mermaid/flowDiagram-v2-13329dc7.js +40 -0
  241. data/assets/mermaid/flowDiagram-v2-54711e03.js +32 -0
  242. data/assets/mermaid/flowDiagram-v2-f2119625.js +25 -0
  243. data/assets/mermaid/flowchart-elk-definition-2d49707c.js +93397 -0
  244. data/assets/mermaid/flowchart-elk-definition-ae0efee6.js +814 -0
  245. data/assets/mermaid/flowchart-elk-definition-cf813a97.js +48407 -0
  246. data/assets/mermaid/ganttDiagram-12cf43db.js +3445 -0
  247. data/assets/mermaid/ganttDiagram-3c2fde2b.js +2501 -0
  248. data/assets/mermaid/ganttDiagram-b62c793e.js +2061 -0
  249. data/assets/mermaid/gitGraphDiagram-942e62fe.js +1800 -0
  250. data/assets/mermaid/gitGraphDiagram-b9392a12.js +1790 -0
  251. data/assets/mermaid/gitGraphDiagram-c3a0619c.js +1264 -0
  252. data/assets/mermaid/graph-0ee63739.js +881 -0
  253. data/assets/mermaid/graph-fe24fab6.js +1285 -0
  254. data/assets/mermaid/index-01f381cb.js +622 -0
  255. data/assets/mermaid/index-bb6d8841.js +373 -0
  256. data/assets/mermaid/index-fc479858.js +663 -0
  257. data/assets/mermaid/infoDiagram-2f5c50c0.js +319 -0
  258. data/assets/mermaid/infoDiagram-94cd232f.js +520 -0
  259. data/assets/mermaid/infoDiagram-d0d5c9bd.js +510 -0
  260. data/assets/mermaid/init-cc95ec8e.js +16 -0
  261. data/assets/mermaid/init-f9637058.js +16 -0
  262. data/assets/mermaid/interactionDb.d.ts +2 -0
  263. data/assets/mermaid/journeyDiagram-14fe341a.js +804 -0
  264. data/assets/mermaid/journeyDiagram-6625b456.js +1191 -0
  265. data/assets/mermaid/journeyDiagram-b56e6921.js +1183 -0
  266. data/assets/mermaid/katex-d90b6d29.js +11624 -0
  267. data/assets/mermaid/katex-ffb0e8f1.js +14432 -0
  268. data/assets/mermaid/layout-163b9689.js +2314 -0
  269. data/assets/mermaid/layout-fd473db2.js +1536 -0
  270. data/assets/mermaid/line-24d93f1b.js +34 -0
  271. data/assets/mermaid/line-87f517ef.js +50 -0
  272. data/assets/mermaid/linear-0ad15847.js +595 -0
  273. data/assets/mermaid/linear-9bcf74c4.js +447 -0
  274. data/assets/mermaid/logger.d.ts +9 -0
  275. data/assets/mermaid/mermaid-6dc72991.js +6461 -0
  276. data/assets/mermaid/mermaid-9f2aa176.js +8112 -0
  277. data/assets/mermaid/mermaid-dcacb631.js +12793 -0
  278. data/assets/mermaid/mermaid.core.mjs +14 -0
  279. data/assets/mermaid/mermaid.d.ts +146 -0
  280. data/assets/mermaid/mermaid.esm.min.mjs +4 -0
  281. data/assets/mermaid/mermaid.esm.mjs +4 -0
  282. data/assets/mermaid/mermaid.js +195755 -0
  283. data/assets/mermaid/mermaid.min.js +2029 -0
  284. data/assets/mermaid/mermaid.spec.d.ts +1 -0
  285. data/assets/mermaid/mermaidAPI.d.ts +170 -0
  286. data/assets/mermaid/mermaidAPI.spec.d.ts +1 -0
  287. data/assets/mermaid/mindmap-definition-307c710a.js +1177 -0
  288. data/assets/mermaid/mindmap-definition-696ddea4.js +32342 -0
  289. data/assets/mermaid/mindmap-definition-9399c7e6.js +18760 -0
  290. data/assets/mermaid/ordinal-475e0c0c.js +82 -0
  291. data/assets/mermaid/ordinal-5695958c.js +65 -0
  292. data/assets/mermaid/path-39bad7e2.js +118 -0
  293. data/assets/mermaid/path-428ebac9.js +91 -0
  294. data/assets/mermaid/pieDiagram-828dae43.js +502 -0
  295. data/assets/mermaid/pieDiagram-bb1d19e5.js +722 -0
  296. data/assets/mermaid/pieDiagram-e854eaf0.js +772 -0
  297. data/assets/mermaid/preprocess.d.ts +10 -0
  298. data/assets/mermaid/quadrantDiagram-25a9848b.js +1199 -0
  299. data/assets/mermaid/quadrantDiagram-5fa00455.js +904 -0
  300. data/assets/mermaid/quadrantDiagram-c759a472.js +1207 -0
  301. data/assets/mermaid/rendering-util/createText.d.ts +11 -0
  302. data/assets/mermaid/rendering-util/handle-markdown-text.d.ts +6 -0
  303. data/assets/mermaid/rendering-util/handle-markdown-text.spec.d.ts +1 -0
  304. data/assets/mermaid/rendering-util/selectSvgElement.d.ts +8 -0
  305. data/assets/mermaid/rendering-util/splitText.d.ts +24 -0
  306. data/assets/mermaid/rendering-util/splitText.spec.d.ts +1 -0
  307. data/assets/mermaid/rendering-util/uid.d.ts +8 -0
  308. data/assets/mermaid/requirementDiagram-03163dc4.js +769 -0
  309. data/assets/mermaid/requirementDiagram-87253d64.js +1098 -0
  310. data/assets/mermaid/requirementDiagram-a721e157.js +1091 -0
  311. data/assets/mermaid/sankeyDiagram-33525efb.js +1198 -0
  312. data/assets/mermaid/sankeyDiagram-52ec8976.js +818 -0
  313. data/assets/mermaid/sankeyDiagram-707fac0f.js +660 -0
  314. data/assets/mermaid/sequenceDiagram-6894f283.js +3346 -0
  315. data/assets/mermaid/sequenceDiagram-9813c129.js +3336 -0
  316. data/assets/mermaid/sequenceDiagram-b517d154.js +2234 -0
  317. data/assets/mermaid/setupGraphViewbox.d.ts +3 -0
  318. data/assets/mermaid/stateDiagram-5dee940d.js +474 -0
  319. data/assets/mermaid/stateDiagram-5ec31577.js +467 -0
  320. data/assets/mermaid/stateDiagram-fca82b5b.js +275 -0
  321. data/assets/mermaid/stateDiagram-v2-1992cada.js +333 -0
  322. data/assets/mermaid/stateDiagram-v2-992e82a1.js +325 -0
  323. data/assets/mermaid/stateDiagram-v2-ed04200a.js +190 -0
  324. data/assets/mermaid/styles-0784dbeb.js +1363 -0
  325. data/assets/mermaid/styles-11e81fdd.js +1089 -0
  326. data/assets/mermaid/styles-36a1a2e8.js +1483 -0
  327. data/assets/mermaid/styles-483fbfea.js +509 -0
  328. data/assets/mermaid/styles-727cdd61.js +571 -0
  329. data/assets/mermaid/styles-b83b31c9.js +1484 -0
  330. data/assets/mermaid/styles-cacbff60.js +960 -0
  331. data/assets/mermaid/styles-e75131e4.js +433 -0
  332. data/assets/mermaid/styles-f80da881.js +1363 -0
  333. data/assets/mermaid/styles.d.ts +12 -0
  334. data/assets/mermaid/styles.spec.d.ts +1 -0
  335. data/assets/mermaid/svgDrawCommon-5e1cfd1d.js +101 -0
  336. data/assets/mermaid/svgDrawCommon-d6ab583c.js +100 -0
  337. data/assets/mermaid/svgDrawCommon-ecc5f780.js +64 -0
  338. data/assets/mermaid/tests/MockedD3.d.ts +45 -0
  339. data/assets/mermaid/tests/setup.d.ts +1 -0
  340. data/assets/mermaid/tests/util.d.ts +3 -0
  341. data/assets/mermaid/themes/erDiagram-oldHardcodedValues.d.ts +7 -0
  342. data/assets/mermaid/themes/index.d.ts +24 -0
  343. data/assets/mermaid/themes/theme-base.d.ts +189 -0
  344. data/assets/mermaid/themes/theme-dark.d.ts +177 -0
  345. data/assets/mermaid/themes/theme-default.d.ts +188 -0
  346. data/assets/mermaid/themes/theme-forest.d.ts +185 -0
  347. data/assets/mermaid/themes/theme-helpers.d.ts +1 -0
  348. data/assets/mermaid/themes/theme-neutral.d.ts +182 -0
  349. data/assets/mermaid/timeline-definition-23ce0e2e.js +1211 -0
  350. data/assets/mermaid/timeline-definition-4ee9bff4.js +795 -0
  351. data/assets/mermaid/timeline-definition-bf702344.js +1219 -0
  352. data/assets/mermaid/types.d.ts +31 -0
  353. data/assets/mermaid/utils/imperativeState.d.ts +32 -0
  354. data/assets/mermaid/utils/imperativeState.spec.d.ts +1 -0
  355. data/assets/mermaid/utils/lineWithOffset.d.ts +5 -0
  356. data/assets/mermaid/utils/sanitizeDirective.d.ts +7 -0
  357. data/assets/mermaid/utils/subGraphTitleMargins.d.ts +8 -0
  358. data/assets/mermaid/utils/subGraphTitleMargins.spec.d.ts +1 -0
  359. data/assets/mermaid/utils.d.ts +286 -0
  360. data/assets/mermaid/utils.spec.d.ts +1 -0
  361. data/assets/mermaid/xychartDiagram-de2e5521.js +1800 -0
  362. data/assets/mermaid/xychartDiagram-e5e6b652.js +1284 -0
  363. data/assets/mermaid/xychartDiagram-f11f50a6.js +1745 -0
  364. data/assets/tables.css +23 -0
  365. data/assets/toURI.js +142 -0
  366. metadata +363 -2
@@ -0,0 +1,1840 @@
1
+ import { l as log, p as evaluate, c as getConfig, b7 as decodeEntities, j as d3select, d as sanitizeText, A as utils, F as curveBasis } from "./mermaid-dcacb631.js";
2
+ import { a as createText } from "./createText-b70fe78a.js";
3
+ import { l as line } from "./line-87f517ef.js";
4
+ const insertMarkers = (elem, markerArray, type, id) => {
5
+ markerArray.forEach((markerName) => {
6
+ markers[markerName](elem, type, id);
7
+ });
8
+ };
9
+ const extension = (elem, type, id) => {
10
+ log.trace("Making markers for ", id);
11
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-extensionStart").attr("class", "marker extension " + type).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
12
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-extensionEnd").attr("class", "marker extension " + type).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
13
+ };
14
+ const composition = (elem, type, id) => {
15
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-compositionStart").attr("class", "marker composition " + type).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
16
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-compositionEnd").attr("class", "marker composition " + type).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
17
+ };
18
+ const aggregation = (elem, type, id) => {
19
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-aggregationStart").attr("class", "marker aggregation " + type).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
20
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-aggregationEnd").attr("class", "marker aggregation " + type).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
21
+ };
22
+ const dependency = (elem, type, id) => {
23
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-dependencyStart").attr("class", "marker dependency " + type).attr("refX", 6).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
24
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-dependencyEnd").attr("class", "marker dependency " + type).attr("refX", 13).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
25
+ };
26
+ const lollipop = (elem, type, id) => {
27
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-lollipopStart").attr("class", "marker lollipop " + type).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6);
28
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-lollipopEnd").attr("class", "marker lollipop " + type).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6);
29
+ };
30
+ const point = (elem, type, id) => {
31
+ elem.append("marker").attr("id", id + "_" + type + "-pointEnd").attr("class", "marker " + type).attr("viewBox", "0 0 10 10").attr("refX", 6).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
32
+ elem.append("marker").attr("id", id + "_" + type + "-pointStart").attr("class", "marker " + type).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
33
+ };
34
+ const circle$1 = (elem, type, id) => {
35
+ elem.append("marker").attr("id", id + "_" + type + "-circleEnd").attr("class", "marker " + type).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
36
+ elem.append("marker").attr("id", id + "_" + type + "-circleStart").attr("class", "marker " + type).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
37
+ };
38
+ const cross = (elem, type, id) => {
39
+ elem.append("marker").attr("id", id + "_" + type + "-crossEnd").attr("class", "marker cross " + type).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0");
40
+ elem.append("marker").attr("id", id + "_" + type + "-crossStart").attr("class", "marker cross " + type).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0");
41
+ };
42
+ const barb = (elem, type, id) => {
43
+ elem.append("defs").append("marker").attr("id", id + "_" + type + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "strokeWidth").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z");
44
+ };
45
+ const markers = {
46
+ extension,
47
+ composition,
48
+ aggregation,
49
+ dependency,
50
+ lollipop,
51
+ point,
52
+ circle: circle$1,
53
+ cross,
54
+ barb
55
+ };
56
+ const insertMarkers$1 = insertMarkers;
57
+ function applyStyle(dom, styleFn) {
58
+ if (styleFn) {
59
+ dom.attr("style", styleFn);
60
+ }
61
+ }
62
+ function addHtmlLabel(node) {
63
+ const fo = d3select(document.createElementNS("http://www.w3.org/2000/svg", "foreignObject"));
64
+ const div = fo.append("xhtml:div");
65
+ const label = node.label;
66
+ const labelClass = node.isNode ? "nodeLabel" : "edgeLabel";
67
+ div.html(
68
+ '<span class="' + labelClass + '" ' + (node.labelStyle ? 'style="' + node.labelStyle + '"' : "") + ">" + label + "</span>"
69
+ );
70
+ applyStyle(div, node.labelStyle);
71
+ div.style("display", "inline-block");
72
+ div.style("white-space", "nowrap");
73
+ div.attr("xmlns", "http://www.w3.org/1999/xhtml");
74
+ return fo.node();
75
+ }
76
+ const createLabel = (_vertexText, style, isTitle, isNode) => {
77
+ let vertexText = _vertexText || "";
78
+ if (typeof vertexText === "object") {
79
+ vertexText = vertexText[0];
80
+ }
81
+ if (evaluate(getConfig().flowchart.htmlLabels)) {
82
+ vertexText = vertexText.replace(/\\n|\n/g, "<br />");
83
+ log.debug("vertexText" + vertexText);
84
+ const node = {
85
+ isNode,
86
+ label: decodeEntities(vertexText).replace(
87
+ /fa[blrs]?:fa-[\w-]+/g,
88
+ // cspell: disable-line
89
+ (s) => `<i class='${s.replace(":", " ")}'></i>`
90
+ ),
91
+ labelStyle: style.replace("fill:", "color:")
92
+ };
93
+ let vertexNode = addHtmlLabel(node);
94
+ return vertexNode;
95
+ } else {
96
+ const svgLabel = document.createElementNS("http://www.w3.org/2000/svg", "text");
97
+ svgLabel.setAttribute("style", style.replace("color:", "fill:"));
98
+ let rows = [];
99
+ if (typeof vertexText === "string") {
100
+ rows = vertexText.split(/\\n|\n|<br\s*\/?>/gi);
101
+ } else if (Array.isArray(vertexText)) {
102
+ rows = vertexText;
103
+ } else {
104
+ rows = [];
105
+ }
106
+ for (const row of rows) {
107
+ const tspan = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
108
+ tspan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve");
109
+ tspan.setAttribute("dy", "1em");
110
+ tspan.setAttribute("x", "0");
111
+ if (isTitle) {
112
+ tspan.setAttribute("class", "title-row");
113
+ } else {
114
+ tspan.setAttribute("class", "row");
115
+ }
116
+ tspan.textContent = row.trim();
117
+ svgLabel.appendChild(tspan);
118
+ }
119
+ return svgLabel;
120
+ }
121
+ };
122
+ const createLabel$1 = createLabel;
123
+ const labelHelper = async (parent, node, _classes, isNode) => {
124
+ let classes;
125
+ const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);
126
+ if (!_classes) {
127
+ classes = "node default";
128
+ } else {
129
+ classes = _classes;
130
+ }
131
+ const shapeSvg = parent.insert("g").attr("class", classes).attr("id", node.domId || node.id);
132
+ const label = shapeSvg.insert("g").attr("class", "label").attr("style", node.labelStyle);
133
+ let labelText;
134
+ if (node.labelText === void 0) {
135
+ labelText = "";
136
+ } else {
137
+ labelText = typeof node.labelText === "string" ? node.labelText : node.labelText[0];
138
+ }
139
+ const textNode = label.node();
140
+ let text;
141
+ if (node.labelType === "markdown") {
142
+ text = createText(label, sanitizeText(decodeEntities(labelText), getConfig()), {
143
+ useHtmlLabels,
144
+ width: node.width || getConfig().flowchart.wrappingWidth,
145
+ classes: "markdown-node-label"
146
+ });
147
+ } else {
148
+ text = textNode.appendChild(
149
+ createLabel$1(
150
+ sanitizeText(decodeEntities(labelText), getConfig()),
151
+ node.labelStyle,
152
+ false,
153
+ isNode
154
+ )
155
+ );
156
+ }
157
+ let bbox = text.getBBox();
158
+ const halfPadding = node.padding / 2;
159
+ if (evaluate(getConfig().flowchart.htmlLabels)) {
160
+ const div = text.children[0];
161
+ const dv = d3select(text);
162
+ const images = div.getElementsByTagName("img");
163
+ if (images) {
164
+ const noImgText = labelText.replace(/<img[^>]*>/g, "").trim() === "";
165
+ await Promise.all(
166
+ [...images].map(
167
+ (img) => new Promise((res) => {
168
+ function setupImage() {
169
+ img.style.display = "flex";
170
+ img.style.flexDirection = "column";
171
+ if (noImgText) {
172
+ const bodyFontSize = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;
173
+ const enlargingFactor = 5;
174
+ const width = parseInt(bodyFontSize, 10) * enlargingFactor + "px";
175
+ img.style.minWidth = width;
176
+ img.style.maxWidth = width;
177
+ } else {
178
+ img.style.width = "100%";
179
+ }
180
+ res(img);
181
+ }
182
+ setTimeout(() => {
183
+ if (img.complete) {
184
+ setupImage();
185
+ }
186
+ });
187
+ img.addEventListener("error", setupImage);
188
+ img.addEventListener("load", setupImage);
189
+ })
190
+ )
191
+ );
192
+ }
193
+ bbox = div.getBoundingClientRect();
194
+ dv.attr("width", bbox.width);
195
+ dv.attr("height", bbox.height);
196
+ }
197
+ if (useHtmlLabels) {
198
+ label.attr("transform", "translate(" + -bbox.width / 2 + ", " + -bbox.height / 2 + ")");
199
+ } else {
200
+ label.attr("transform", "translate(0, " + -bbox.height / 2 + ")");
201
+ }
202
+ if (node.centerLabel) {
203
+ label.attr("transform", "translate(" + -bbox.width / 2 + ", " + -bbox.height / 2 + ")");
204
+ }
205
+ label.insert("rect", ":first-child");
206
+ return { shapeSvg, bbox, halfPadding, label };
207
+ };
208
+ const updateNodeBounds = (node, element) => {
209
+ const bbox = element.node().getBBox();
210
+ node.width = bbox.width;
211
+ node.height = bbox.height;
212
+ };
213
+ function insertPolygonShape(parent, w, h, points) {
214
+ return parent.insert("polygon", ":first-child").attr(
215
+ "points",
216
+ points.map(function(d) {
217
+ return d.x + "," + d.y;
218
+ }).join(" ")
219
+ ).attr("class", "label-container").attr("transform", "translate(" + -w / 2 + "," + h / 2 + ")");
220
+ }
221
+ function intersectNode(node, point2) {
222
+ return node.intersect(point2);
223
+ }
224
+ function intersectEllipse(node, rx, ry, point2) {
225
+ var cx = node.x;
226
+ var cy = node.y;
227
+ var px = cx - point2.x;
228
+ var py = cy - point2.y;
229
+ var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);
230
+ var dx = Math.abs(rx * ry * px / det);
231
+ if (point2.x < cx) {
232
+ dx = -dx;
233
+ }
234
+ var dy = Math.abs(rx * ry * py / det);
235
+ if (point2.y < cy) {
236
+ dy = -dy;
237
+ }
238
+ return { x: cx + dx, y: cy + dy };
239
+ }
240
+ function intersectCircle(node, rx, point2) {
241
+ return intersectEllipse(node, rx, rx, point2);
242
+ }
243
+ function intersectLine(p1, p2, q1, q2) {
244
+ var a1, a2, b1, b2, c1, c2;
245
+ var r1, r2, r3, r4;
246
+ var denom, offset, num;
247
+ var x, y;
248
+ a1 = p2.y - p1.y;
249
+ b1 = p1.x - p2.x;
250
+ c1 = p2.x * p1.y - p1.x * p2.y;
251
+ r3 = a1 * q1.x + b1 * q1.y + c1;
252
+ r4 = a1 * q2.x + b1 * q2.y + c1;
253
+ if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {
254
+ return;
255
+ }
256
+ a2 = q2.y - q1.y;
257
+ b2 = q1.x - q2.x;
258
+ c2 = q2.x * q1.y - q1.x * q2.y;
259
+ r1 = a2 * p1.x + b2 * p1.y + c2;
260
+ r2 = a2 * p2.x + b2 * p2.y + c2;
261
+ if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {
262
+ return;
263
+ }
264
+ denom = a1 * b2 - a2 * b1;
265
+ if (denom === 0) {
266
+ return;
267
+ }
268
+ offset = Math.abs(denom / 2);
269
+ num = b1 * c2 - b2 * c1;
270
+ x = num < 0 ? (num - offset) / denom : (num + offset) / denom;
271
+ num = a2 * c1 - a1 * c2;
272
+ y = num < 0 ? (num - offset) / denom : (num + offset) / denom;
273
+ return { x, y };
274
+ }
275
+ function sameSign(r1, r2) {
276
+ return r1 * r2 > 0;
277
+ }
278
+ function intersectPolygon(node, polyPoints, point2) {
279
+ var x1 = node.x;
280
+ var y1 = node.y;
281
+ var intersections = [];
282
+ var minX = Number.POSITIVE_INFINITY;
283
+ var minY = Number.POSITIVE_INFINITY;
284
+ if (typeof polyPoints.forEach === "function") {
285
+ polyPoints.forEach(function(entry) {
286
+ minX = Math.min(minX, entry.x);
287
+ minY = Math.min(minY, entry.y);
288
+ });
289
+ } else {
290
+ minX = Math.min(minX, polyPoints.x);
291
+ minY = Math.min(minY, polyPoints.y);
292
+ }
293
+ var left = x1 - node.width / 2 - minX;
294
+ var top = y1 - node.height / 2 - minY;
295
+ for (var i = 0; i < polyPoints.length; i++) {
296
+ var p1 = polyPoints[i];
297
+ var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];
298
+ var intersect2 = intersectLine(
299
+ node,
300
+ point2,
301
+ { x: left + p1.x, y: top + p1.y },
302
+ { x: left + p2.x, y: top + p2.y }
303
+ );
304
+ if (intersect2) {
305
+ intersections.push(intersect2);
306
+ }
307
+ }
308
+ if (!intersections.length) {
309
+ return node;
310
+ }
311
+ if (intersections.length > 1) {
312
+ intersections.sort(function(p, q) {
313
+ var pdx = p.x - point2.x;
314
+ var pdy = p.y - point2.y;
315
+ var distp = Math.sqrt(pdx * pdx + pdy * pdy);
316
+ var qdx = q.x - point2.x;
317
+ var qdy = q.y - point2.y;
318
+ var distq = Math.sqrt(qdx * qdx + qdy * qdy);
319
+ return distp < distq ? -1 : distp === distq ? 0 : 1;
320
+ });
321
+ }
322
+ return intersections[0];
323
+ }
324
+ const intersectRect = (node, point2) => {
325
+ var x = node.x;
326
+ var y = node.y;
327
+ var dx = point2.x - x;
328
+ var dy = point2.y - y;
329
+ var w = node.width / 2;
330
+ var h = node.height / 2;
331
+ var sx, sy;
332
+ if (Math.abs(dy) * w > Math.abs(dx) * h) {
333
+ if (dy < 0) {
334
+ h = -h;
335
+ }
336
+ sx = dy === 0 ? 0 : h * dx / dy;
337
+ sy = h;
338
+ } else {
339
+ if (dx < 0) {
340
+ w = -w;
341
+ }
342
+ sx = w;
343
+ sy = dx === 0 ? 0 : w * dy / dx;
344
+ }
345
+ return { x: x + sx, y: y + sy };
346
+ };
347
+ const intersectRect$1 = intersectRect;
348
+ const intersect = {
349
+ node: intersectNode,
350
+ circle: intersectCircle,
351
+ ellipse: intersectEllipse,
352
+ polygon: intersectPolygon,
353
+ rect: intersectRect$1
354
+ };
355
+ const note = async (parent, node) => {
356
+ const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;
357
+ if (!useHtmlLabels) {
358
+ node.centerLabel = true;
359
+ }
360
+ const { shapeSvg, bbox, halfPadding } = await labelHelper(
361
+ parent,
362
+ node,
363
+ "node " + node.classes,
364
+ true
365
+ );
366
+ log.info("Classes = ", node.classes);
367
+ const rect2 = shapeSvg.insert("rect", ":first-child");
368
+ rect2.attr("rx", node.rx).attr("ry", node.ry).attr("x", -bbox.width / 2 - halfPadding).attr("y", -bbox.height / 2 - halfPadding).attr("width", bbox.width + node.padding).attr("height", bbox.height + node.padding);
369
+ updateNodeBounds(node, rect2);
370
+ node.intersect = function(point2) {
371
+ return intersect.rect(node, point2);
372
+ };
373
+ return shapeSvg;
374
+ };
375
+ const note$1 = note;
376
+ const expandAndDeduplicateDirections = (directions) => {
377
+ const uniqueDirections = /* @__PURE__ */ new Set();
378
+ for (const direction of directions) {
379
+ switch (direction) {
380
+ case "x":
381
+ uniqueDirections.add("right");
382
+ uniqueDirections.add("left");
383
+ break;
384
+ case "y":
385
+ uniqueDirections.add("up");
386
+ uniqueDirections.add("down");
387
+ break;
388
+ default:
389
+ uniqueDirections.add(direction);
390
+ break;
391
+ }
392
+ }
393
+ return uniqueDirections;
394
+ };
395
+ const getArrowPoints = (duplicatedDirections, bbox, node) => {
396
+ const directions = expandAndDeduplicateDirections(duplicatedDirections);
397
+ const f = 2;
398
+ const height = bbox.height + 2 * node.padding;
399
+ const midpoint = height / f;
400
+ const width = bbox.width + 2 * midpoint + node.padding;
401
+ const padding = node.padding / 2;
402
+ if (directions.has("right") && directions.has("left") && directions.has("up") && directions.has("down")) {
403
+ return [
404
+ // Bottom
405
+ { x: 0, y: 0 },
406
+ { x: midpoint, y: 0 },
407
+ { x: width / 2, y: 2 * padding },
408
+ { x: width - midpoint, y: 0 },
409
+ { x: width, y: 0 },
410
+ // Right
411
+ { x: width, y: -height / 3 },
412
+ { x: width + 2 * padding, y: -height / 2 },
413
+ { x: width, y: -2 * height / 3 },
414
+ { x: width, y: -height },
415
+ // Top
416
+ { x: width - midpoint, y: -height },
417
+ { x: width / 2, y: -height - 2 * padding },
418
+ { x: midpoint, y: -height },
419
+ // Left
420
+ { x: 0, y: -height },
421
+ { x: 0, y: -2 * height / 3 },
422
+ { x: -2 * padding, y: -height / 2 },
423
+ { x: 0, y: -height / 3 }
424
+ ];
425
+ }
426
+ if (directions.has("right") && directions.has("left") && directions.has("up")) {
427
+ return [
428
+ { x: midpoint, y: 0 },
429
+ { x: width - midpoint, y: 0 },
430
+ { x: width, y: -height / 2 },
431
+ { x: width - midpoint, y: -height },
432
+ { x: midpoint, y: -height },
433
+ { x: 0, y: -height / 2 }
434
+ ];
435
+ }
436
+ if (directions.has("right") && directions.has("left") && directions.has("down")) {
437
+ return [
438
+ { x: 0, y: 0 },
439
+ { x: midpoint, y: -height },
440
+ { x: width - midpoint, y: -height },
441
+ { x: width, y: 0 }
442
+ ];
443
+ }
444
+ if (directions.has("right") && directions.has("up") && directions.has("down")) {
445
+ return [
446
+ { x: 0, y: 0 },
447
+ { x: width, y: -midpoint },
448
+ { x: width, y: -height + midpoint },
449
+ { x: 0, y: -height }
450
+ ];
451
+ }
452
+ if (directions.has("left") && directions.has("up") && directions.has("down")) {
453
+ return [
454
+ { x: width, y: 0 },
455
+ { x: 0, y: -midpoint },
456
+ { x: 0, y: -height + midpoint },
457
+ { x: width, y: -height }
458
+ ];
459
+ }
460
+ if (directions.has("right") && directions.has("left")) {
461
+ return [
462
+ { x: midpoint, y: 0 },
463
+ { x: midpoint, y: -padding },
464
+ { x: width - midpoint, y: -padding },
465
+ { x: width - midpoint, y: 0 },
466
+ { x: width, y: -height / 2 },
467
+ { x: width - midpoint, y: -height },
468
+ { x: width - midpoint, y: -height + padding },
469
+ { x: midpoint, y: -height + padding },
470
+ { x: midpoint, y: -height },
471
+ { x: 0, y: -height / 2 }
472
+ ];
473
+ }
474
+ if (directions.has("up") && directions.has("down")) {
475
+ return [
476
+ // Bottom center
477
+ { x: width / 2, y: 0 },
478
+ // Left pont of bottom arrow
479
+ { x: 0, y: -padding },
480
+ { x: midpoint, y: -padding },
481
+ // Left top over vertical section
482
+ { x: midpoint, y: -height + padding },
483
+ { x: 0, y: -height + padding },
484
+ // Top of arrow
485
+ { x: width / 2, y: -height },
486
+ { x: width, y: -height + padding },
487
+ // Top of right vertical bar
488
+ { x: width - midpoint, y: -height + padding },
489
+ { x: width - midpoint, y: -padding },
490
+ { x: width, y: -padding }
491
+ ];
492
+ }
493
+ if (directions.has("right") && directions.has("up")) {
494
+ return [
495
+ { x: 0, y: 0 },
496
+ { x: width, y: -midpoint },
497
+ { x: 0, y: -height }
498
+ ];
499
+ }
500
+ if (directions.has("right") && directions.has("down")) {
501
+ return [
502
+ { x: 0, y: 0 },
503
+ { x: width, y: 0 },
504
+ { x: 0, y: -height }
505
+ ];
506
+ }
507
+ if (directions.has("left") && directions.has("up")) {
508
+ return [
509
+ { x: width, y: 0 },
510
+ { x: 0, y: -midpoint },
511
+ { x: width, y: -height }
512
+ ];
513
+ }
514
+ if (directions.has("left") && directions.has("down")) {
515
+ return [
516
+ { x: width, y: 0 },
517
+ { x: 0, y: 0 },
518
+ { x: width, y: -height }
519
+ ];
520
+ }
521
+ if (directions.has("right")) {
522
+ return [
523
+ { x: midpoint, y: -padding },
524
+ { x: midpoint, y: -padding },
525
+ { x: width - midpoint, y: -padding },
526
+ { x: width - midpoint, y: 0 },
527
+ { x: width, y: -height / 2 },
528
+ { x: width - midpoint, y: -height },
529
+ { x: width - midpoint, y: -height + padding },
530
+ // top left corner of arrow
531
+ { x: midpoint, y: -height + padding },
532
+ { x: midpoint, y: -height + padding }
533
+ ];
534
+ }
535
+ if (directions.has("left")) {
536
+ return [
537
+ { x: midpoint, y: 0 },
538
+ { x: midpoint, y: -padding },
539
+ // Two points, the right corners
540
+ { x: width - midpoint, y: -padding },
541
+ { x: width - midpoint, y: -height + padding },
542
+ { x: midpoint, y: -height + padding },
543
+ { x: midpoint, y: -height },
544
+ { x: 0, y: -height / 2 }
545
+ ];
546
+ }
547
+ if (directions.has("up")) {
548
+ return [
549
+ // Bottom center
550
+ { x: midpoint, y: -padding },
551
+ // Left top over vertical section
552
+ { x: midpoint, y: -height + padding },
553
+ { x: 0, y: -height + padding },
554
+ // Top of arrow
555
+ { x: width / 2, y: -height },
556
+ { x: width, y: -height + padding },
557
+ // Top of right vertical bar
558
+ { x: width - midpoint, y: -height + padding },
559
+ { x: width - midpoint, y: -padding }
560
+ ];
561
+ }
562
+ if (directions.has("down")) {
563
+ return [
564
+ // Bottom center
565
+ { x: width / 2, y: 0 },
566
+ // Left pont of bottom arrow
567
+ { x: 0, y: -padding },
568
+ { x: midpoint, y: -padding },
569
+ // Left top over vertical section
570
+ { x: midpoint, y: -height + padding },
571
+ { x: width - midpoint, y: -height + padding },
572
+ { x: width - midpoint, y: -padding },
573
+ { x: width, y: -padding }
574
+ ];
575
+ }
576
+ return [{ x: 0, y: 0 }];
577
+ };
578
+ const formatClass = (str) => {
579
+ if (str) {
580
+ return " " + str;
581
+ }
582
+ return "";
583
+ };
584
+ const getClassesFromNode = (node, otherClasses) => {
585
+ return `${otherClasses ? otherClasses : "node default"}${formatClass(node.classes)} ${formatClass(
586
+ node.class
587
+ )}`;
588
+ };
589
+ const question = async (parent, node) => {
590
+ const { shapeSvg, bbox } = await labelHelper(
591
+ parent,
592
+ node,
593
+ getClassesFromNode(node, void 0),
594
+ true
595
+ );
596
+ const w = bbox.width + node.padding;
597
+ const h = bbox.height + node.padding;
598
+ const s = w + h;
599
+ const points = [
600
+ { x: s / 2, y: 0 },
601
+ { x: s, y: -s / 2 },
602
+ { x: s / 2, y: -s },
603
+ { x: 0, y: -s / 2 }
604
+ ];
605
+ log.info("Question main (Circle)");
606
+ const questionElem = insertPolygonShape(shapeSvg, s, s, points);
607
+ questionElem.attr("style", node.style);
608
+ updateNodeBounds(node, questionElem);
609
+ node.intersect = function(point2) {
610
+ log.warn("Intersect called");
611
+ return intersect.polygon(node, points, point2);
612
+ };
613
+ return shapeSvg;
614
+ };
615
+ const choice = (parent, node) => {
616
+ const shapeSvg = parent.insert("g").attr("class", "node default").attr("id", node.domId || node.id);
617
+ const s = 28;
618
+ const points = [
619
+ { x: 0, y: s / 2 },
620
+ { x: s / 2, y: 0 },
621
+ { x: 0, y: -s / 2 },
622
+ { x: -s / 2, y: 0 }
623
+ ];
624
+ const choice2 = shapeSvg.insert("polygon", ":first-child").attr(
625
+ "points",
626
+ points.map(function(d) {
627
+ return d.x + "," + d.y;
628
+ }).join(" ")
629
+ );
630
+ choice2.attr("class", "state-start").attr("r", 7).attr("width", 28).attr("height", 28);
631
+ node.width = 28;
632
+ node.height = 28;
633
+ node.intersect = function(point2) {
634
+ return intersect.circle(node, 14, point2);
635
+ };
636
+ return shapeSvg;
637
+ };
638
+ const hexagon = async (parent, node) => {
639
+ const { shapeSvg, bbox } = await labelHelper(
640
+ parent,
641
+ node,
642
+ getClassesFromNode(node, void 0),
643
+ true
644
+ );
645
+ const f = 4;
646
+ const h = bbox.height + node.padding;
647
+ const m = h / f;
648
+ const w = bbox.width + 2 * m + node.padding;
649
+ const points = [
650
+ { x: m, y: 0 },
651
+ { x: w - m, y: 0 },
652
+ { x: w, y: -h / 2 },
653
+ { x: w - m, y: -h },
654
+ { x: m, y: -h },
655
+ { x: 0, y: -h / 2 }
656
+ ];
657
+ const hex = insertPolygonShape(shapeSvg, w, h, points);
658
+ hex.attr("style", node.style);
659
+ updateNodeBounds(node, hex);
660
+ node.intersect = function(point2) {
661
+ return intersect.polygon(node, points, point2);
662
+ };
663
+ return shapeSvg;
664
+ };
665
+ const block_arrow = async (parent, node) => {
666
+ const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);
667
+ const f = 2;
668
+ const h = bbox.height + 2 * node.padding;
669
+ const m = h / f;
670
+ const w = bbox.width + 2 * m + node.padding;
671
+ const points = getArrowPoints(node.directions, bbox, node);
672
+ const blockArrow = insertPolygonShape(shapeSvg, w, h, points);
673
+ blockArrow.attr("style", node.style);
674
+ updateNodeBounds(node, blockArrow);
675
+ node.intersect = function(point2) {
676
+ return intersect.polygon(node, points, point2);
677
+ };
678
+ return shapeSvg;
679
+ };
680
+ const rect_left_inv_arrow = async (parent, node) => {
681
+ const { shapeSvg, bbox } = await labelHelper(
682
+ parent,
683
+ node,
684
+ getClassesFromNode(node, void 0),
685
+ true
686
+ );
687
+ const w = bbox.width + node.padding;
688
+ const h = bbox.height + node.padding;
689
+ const points = [
690
+ { x: -h / 2, y: 0 },
691
+ { x: w, y: 0 },
692
+ { x: w, y: -h },
693
+ { x: -h / 2, y: -h },
694
+ { x: 0, y: -h / 2 }
695
+ ];
696
+ const el = insertPolygonShape(shapeSvg, w, h, points);
697
+ el.attr("style", node.style);
698
+ node.width = w + h;
699
+ node.height = h;
700
+ node.intersect = function(point2) {
701
+ return intersect.polygon(node, points, point2);
702
+ };
703
+ return shapeSvg;
704
+ };
705
+ const lean_right = async (parent, node) => {
706
+ const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);
707
+ const w = bbox.width + node.padding;
708
+ const h = bbox.height + node.padding;
709
+ const points = [
710
+ { x: -2 * h / 6, y: 0 },
711
+ { x: w - h / 6, y: 0 },
712
+ { x: w + 2 * h / 6, y: -h },
713
+ { x: h / 6, y: -h }
714
+ ];
715
+ const el = insertPolygonShape(shapeSvg, w, h, points);
716
+ el.attr("style", node.style);
717
+ updateNodeBounds(node, el);
718
+ node.intersect = function(point2) {
719
+ return intersect.polygon(node, points, point2);
720
+ };
721
+ return shapeSvg;
722
+ };
723
+ const lean_left = async (parent, node) => {
724
+ const { shapeSvg, bbox } = await labelHelper(
725
+ parent,
726
+ node,
727
+ getClassesFromNode(node, void 0),
728
+ true
729
+ );
730
+ const w = bbox.width + node.padding;
731
+ const h = bbox.height + node.padding;
732
+ const points = [
733
+ { x: 2 * h / 6, y: 0 },
734
+ { x: w + h / 6, y: 0 },
735
+ { x: w - 2 * h / 6, y: -h },
736
+ { x: -h / 6, y: -h }
737
+ ];
738
+ const el = insertPolygonShape(shapeSvg, w, h, points);
739
+ el.attr("style", node.style);
740
+ updateNodeBounds(node, el);
741
+ node.intersect = function(point2) {
742
+ return intersect.polygon(node, points, point2);
743
+ };
744
+ return shapeSvg;
745
+ };
746
+ const trapezoid = async (parent, node) => {
747
+ const { shapeSvg, bbox } = await labelHelper(
748
+ parent,
749
+ node,
750
+ getClassesFromNode(node, void 0),
751
+ true
752
+ );
753
+ const w = bbox.width + node.padding;
754
+ const h = bbox.height + node.padding;
755
+ const points = [
756
+ { x: -2 * h / 6, y: 0 },
757
+ { x: w + 2 * h / 6, y: 0 },
758
+ { x: w - h / 6, y: -h },
759
+ { x: h / 6, y: -h }
760
+ ];
761
+ const el = insertPolygonShape(shapeSvg, w, h, points);
762
+ el.attr("style", node.style);
763
+ updateNodeBounds(node, el);
764
+ node.intersect = function(point2) {
765
+ return intersect.polygon(node, points, point2);
766
+ };
767
+ return shapeSvg;
768
+ };
769
+ const inv_trapezoid = async (parent, node) => {
770
+ const { shapeSvg, bbox } = await labelHelper(
771
+ parent,
772
+ node,
773
+ getClassesFromNode(node, void 0),
774
+ true
775
+ );
776
+ const w = bbox.width + node.padding;
777
+ const h = bbox.height + node.padding;
778
+ const points = [
779
+ { x: h / 6, y: 0 },
780
+ { x: w - h / 6, y: 0 },
781
+ { x: w + 2 * h / 6, y: -h },
782
+ { x: -2 * h / 6, y: -h }
783
+ ];
784
+ const el = insertPolygonShape(shapeSvg, w, h, points);
785
+ el.attr("style", node.style);
786
+ updateNodeBounds(node, el);
787
+ node.intersect = function(point2) {
788
+ return intersect.polygon(node, points, point2);
789
+ };
790
+ return shapeSvg;
791
+ };
792
+ const rect_right_inv_arrow = async (parent, node) => {
793
+ const { shapeSvg, bbox } = await labelHelper(
794
+ parent,
795
+ node,
796
+ getClassesFromNode(node, void 0),
797
+ true
798
+ );
799
+ const w = bbox.width + node.padding;
800
+ const h = bbox.height + node.padding;
801
+ const points = [
802
+ { x: 0, y: 0 },
803
+ { x: w + h / 2, y: 0 },
804
+ { x: w, y: -h / 2 },
805
+ { x: w + h / 2, y: -h },
806
+ { x: 0, y: -h }
807
+ ];
808
+ const el = insertPolygonShape(shapeSvg, w, h, points);
809
+ el.attr("style", node.style);
810
+ updateNodeBounds(node, el);
811
+ node.intersect = function(point2) {
812
+ return intersect.polygon(node, points, point2);
813
+ };
814
+ return shapeSvg;
815
+ };
816
+ const cylinder = async (parent, node) => {
817
+ const { shapeSvg, bbox } = await labelHelper(
818
+ parent,
819
+ node,
820
+ getClassesFromNode(node, void 0),
821
+ true
822
+ );
823
+ const w = bbox.width + node.padding;
824
+ const rx = w / 2;
825
+ const ry = rx / (2.5 + w / 50);
826
+ const h = bbox.height + ry + node.padding;
827
+ const shape = "M 0," + ry + " a " + rx + "," + ry + " 0,0,0 " + w + " 0 a " + rx + "," + ry + " 0,0,0 " + -w + " 0 l 0," + h + " a " + rx + "," + ry + " 0,0,0 " + w + " 0 l 0," + -h;
828
+ const el = shapeSvg.attr("label-offset-y", ry).insert("path", ":first-child").attr("style", node.style).attr("d", shape).attr("transform", "translate(" + -w / 2 + "," + -(h / 2 + ry) + ")");
829
+ updateNodeBounds(node, el);
830
+ node.intersect = function(point2) {
831
+ const pos = intersect.rect(node, point2);
832
+ const x = pos.x - node.x;
833
+ if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {
834
+ let y = ry * ry * (1 - x * x / (rx * rx));
835
+ if (y != 0) {
836
+ y = Math.sqrt(y);
837
+ }
838
+ y = ry - y;
839
+ if (point2.y - node.y > 0) {
840
+ y = -y;
841
+ }
842
+ pos.y += y;
843
+ }
844
+ return pos;
845
+ };
846
+ return shapeSvg;
847
+ };
848
+ const rect = async (parent, node) => {
849
+ const { shapeSvg, bbox, halfPadding } = await labelHelper(
850
+ parent,
851
+ node,
852
+ "node " + node.classes + " " + node.class,
853
+ true
854
+ );
855
+ const rect2 = shapeSvg.insert("rect", ":first-child");
856
+ const totalWidth = node.positioned ? node.width : bbox.width + node.padding;
857
+ const totalHeight = node.positioned ? node.height : bbox.height + node.padding;
858
+ const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;
859
+ const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;
860
+ rect2.attr("class", "basic label-container").attr("style", node.style).attr("rx", node.rx).attr("ry", node.ry).attr("x", x).attr("y", y).attr("width", totalWidth).attr("height", totalHeight);
861
+ if (node.props) {
862
+ const propKeys = new Set(Object.keys(node.props));
863
+ if (node.props.borders) {
864
+ applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);
865
+ propKeys.delete("borders");
866
+ }
867
+ propKeys.forEach((propKey) => {
868
+ log.warn(`Unknown node property ${propKey}`);
869
+ });
870
+ }
871
+ updateNodeBounds(node, rect2);
872
+ node.intersect = function(point2) {
873
+ return intersect.rect(node, point2);
874
+ };
875
+ return shapeSvg;
876
+ };
877
+ const composite = async (parent, node) => {
878
+ const { shapeSvg, bbox, halfPadding } = await labelHelper(
879
+ parent,
880
+ node,
881
+ "node " + node.classes,
882
+ true
883
+ );
884
+ const rect2 = shapeSvg.insert("rect", ":first-child");
885
+ const totalWidth = node.positioned ? node.width : bbox.width + node.padding;
886
+ const totalHeight = node.positioned ? node.height : bbox.height + node.padding;
887
+ const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;
888
+ const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;
889
+ rect2.attr("class", "basic cluster composite label-container").attr("style", node.style).attr("rx", node.rx).attr("ry", node.ry).attr("x", x).attr("y", y).attr("width", totalWidth).attr("height", totalHeight);
890
+ if (node.props) {
891
+ const propKeys = new Set(Object.keys(node.props));
892
+ if (node.props.borders) {
893
+ applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);
894
+ propKeys.delete("borders");
895
+ }
896
+ propKeys.forEach((propKey) => {
897
+ log.warn(`Unknown node property ${propKey}`);
898
+ });
899
+ }
900
+ updateNodeBounds(node, rect2);
901
+ node.intersect = function(point2) {
902
+ return intersect.rect(node, point2);
903
+ };
904
+ return shapeSvg;
905
+ };
906
+ const labelRect = async (parent, node) => {
907
+ const { shapeSvg } = await labelHelper(parent, node, "label", true);
908
+ log.trace("Classes = ", node.class);
909
+ const rect2 = shapeSvg.insert("rect", ":first-child");
910
+ const totalWidth = 0;
911
+ const totalHeight = 0;
912
+ rect2.attr("width", totalWidth).attr("height", totalHeight);
913
+ shapeSvg.attr("class", "label edgeLabel");
914
+ if (node.props) {
915
+ const propKeys = new Set(Object.keys(node.props));
916
+ if (node.props.borders) {
917
+ applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);
918
+ propKeys.delete("borders");
919
+ }
920
+ propKeys.forEach((propKey) => {
921
+ log.warn(`Unknown node property ${propKey}`);
922
+ });
923
+ }
924
+ updateNodeBounds(node, rect2);
925
+ node.intersect = function(point2) {
926
+ return intersect.rect(node, point2);
927
+ };
928
+ return shapeSvg;
929
+ };
930
+ function applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {
931
+ const strokeDashArray = [];
932
+ const addBorder = (length) => {
933
+ strokeDashArray.push(length, 0);
934
+ };
935
+ const skipBorder = (length) => {
936
+ strokeDashArray.push(0, length);
937
+ };
938
+ if (borders.includes("t")) {
939
+ log.debug("add top border");
940
+ addBorder(totalWidth);
941
+ } else {
942
+ skipBorder(totalWidth);
943
+ }
944
+ if (borders.includes("r")) {
945
+ log.debug("add right border");
946
+ addBorder(totalHeight);
947
+ } else {
948
+ skipBorder(totalHeight);
949
+ }
950
+ if (borders.includes("b")) {
951
+ log.debug("add bottom border");
952
+ addBorder(totalWidth);
953
+ } else {
954
+ skipBorder(totalWidth);
955
+ }
956
+ if (borders.includes("l")) {
957
+ log.debug("add left border");
958
+ addBorder(totalHeight);
959
+ } else {
960
+ skipBorder(totalHeight);
961
+ }
962
+ rect2.attr("stroke-dasharray", strokeDashArray.join(" "));
963
+ }
964
+ const rectWithTitle = (parent, node) => {
965
+ let classes;
966
+ if (!node.classes) {
967
+ classes = "node default";
968
+ } else {
969
+ classes = "node " + node.classes;
970
+ }
971
+ const shapeSvg = parent.insert("g").attr("class", classes).attr("id", node.domId || node.id);
972
+ const rect2 = shapeSvg.insert("rect", ":first-child");
973
+ const innerLine = shapeSvg.insert("line");
974
+ const label = shapeSvg.insert("g").attr("class", "label");
975
+ const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;
976
+ let title = "";
977
+ if (typeof text2 === "object") {
978
+ title = text2[0];
979
+ } else {
980
+ title = text2;
981
+ }
982
+ log.info("Label text abc79", title, text2, typeof text2 === "object");
983
+ const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));
984
+ let bbox = { width: 0, height: 0 };
985
+ if (evaluate(getConfig().flowchart.htmlLabels)) {
986
+ const div = text.children[0];
987
+ const dv = d3select(text);
988
+ bbox = div.getBoundingClientRect();
989
+ dv.attr("width", bbox.width);
990
+ dv.attr("height", bbox.height);
991
+ }
992
+ log.info("Text 2", text2);
993
+ const textRows = text2.slice(1, text2.length);
994
+ let titleBox = text.getBBox();
995
+ const descr = label.node().appendChild(
996
+ createLabel$1(textRows.join ? textRows.join("<br/>") : textRows, node.labelStyle, true, true)
997
+ );
998
+ if (evaluate(getConfig().flowchart.htmlLabels)) {
999
+ const div = descr.children[0];
1000
+ const dv = d3select(descr);
1001
+ bbox = div.getBoundingClientRect();
1002
+ dv.attr("width", bbox.width);
1003
+ dv.attr("height", bbox.height);
1004
+ }
1005
+ const halfPadding = node.padding / 2;
1006
+ d3select(descr).attr(
1007
+ "transform",
1008
+ "translate( " + // (titleBox.width - bbox.width) / 2 +
1009
+ (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + ", " + (titleBox.height + halfPadding + 5) + ")"
1010
+ );
1011
+ d3select(text).attr(
1012
+ "transform",
1013
+ "translate( " + // (titleBox.width - bbox.width) / 2 +
1014
+ (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + ", 0)"
1015
+ );
1016
+ bbox = label.node().getBBox();
1017
+ label.attr(
1018
+ "transform",
1019
+ "translate(" + -bbox.width / 2 + ", " + (-bbox.height / 2 - halfPadding + 3) + ")"
1020
+ );
1021
+ rect2.attr("class", "outer title-state").attr("x", -bbox.width / 2 - halfPadding).attr("y", -bbox.height / 2 - halfPadding).attr("width", bbox.width + node.padding).attr("height", bbox.height + node.padding);
1022
+ innerLine.attr("class", "divider").attr("x1", -bbox.width / 2 - halfPadding).attr("x2", bbox.width / 2 + halfPadding).attr("y1", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr("y2", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);
1023
+ updateNodeBounds(node, rect2);
1024
+ node.intersect = function(point2) {
1025
+ return intersect.rect(node, point2);
1026
+ };
1027
+ return shapeSvg;
1028
+ };
1029
+ const stadium = async (parent, node) => {
1030
+ const { shapeSvg, bbox } = await labelHelper(
1031
+ parent,
1032
+ node,
1033
+ getClassesFromNode(node, void 0),
1034
+ true
1035
+ );
1036
+ const h = bbox.height + node.padding;
1037
+ const w = bbox.width + h / 4 + node.padding;
1038
+ const rect2 = shapeSvg.insert("rect", ":first-child").attr("style", node.style).attr("rx", h / 2).attr("ry", h / 2).attr("x", -w / 2).attr("y", -h / 2).attr("width", w).attr("height", h);
1039
+ updateNodeBounds(node, rect2);
1040
+ node.intersect = function(point2) {
1041
+ return intersect.rect(node, point2);
1042
+ };
1043
+ return shapeSvg;
1044
+ };
1045
+ const circle = async (parent, node) => {
1046
+ const { shapeSvg, bbox, halfPadding } = await labelHelper(
1047
+ parent,
1048
+ node,
1049
+ getClassesFromNode(node, void 0),
1050
+ true
1051
+ );
1052
+ const circle2 = shapeSvg.insert("circle", ":first-child");
1053
+ circle2.attr("style", node.style).attr("rx", node.rx).attr("ry", node.ry).attr("r", bbox.width / 2 + halfPadding).attr("width", bbox.width + node.padding).attr("height", bbox.height + node.padding);
1054
+ log.info("Circle main");
1055
+ updateNodeBounds(node, circle2);
1056
+ node.intersect = function(point2) {
1057
+ log.info("Circle intersect", node, bbox.width / 2 + halfPadding, point2);
1058
+ return intersect.circle(node, bbox.width / 2 + halfPadding, point2);
1059
+ };
1060
+ return shapeSvg;
1061
+ };
1062
+ const doublecircle = async (parent, node) => {
1063
+ const { shapeSvg, bbox, halfPadding } = await labelHelper(
1064
+ parent,
1065
+ node,
1066
+ getClassesFromNode(node, void 0),
1067
+ true
1068
+ );
1069
+ const gap = 5;
1070
+ const circleGroup = shapeSvg.insert("g", ":first-child");
1071
+ const outerCircle = circleGroup.insert("circle");
1072
+ const innerCircle = circleGroup.insert("circle");
1073
+ circleGroup.attr("class", node.class);
1074
+ outerCircle.attr("style", node.style).attr("rx", node.rx).attr("ry", node.ry).attr("r", bbox.width / 2 + halfPadding + gap).attr("width", bbox.width + node.padding + gap * 2).attr("height", bbox.height + node.padding + gap * 2);
1075
+ innerCircle.attr("style", node.style).attr("rx", node.rx).attr("ry", node.ry).attr("r", bbox.width / 2 + halfPadding).attr("width", bbox.width + node.padding).attr("height", bbox.height + node.padding);
1076
+ log.info("DoubleCircle main");
1077
+ updateNodeBounds(node, outerCircle);
1078
+ node.intersect = function(point2) {
1079
+ log.info("DoubleCircle intersect", node, bbox.width / 2 + halfPadding + gap, point2);
1080
+ return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);
1081
+ };
1082
+ return shapeSvg;
1083
+ };
1084
+ const subroutine = async (parent, node) => {
1085
+ const { shapeSvg, bbox } = await labelHelper(
1086
+ parent,
1087
+ node,
1088
+ getClassesFromNode(node, void 0),
1089
+ true
1090
+ );
1091
+ const w = bbox.width + node.padding;
1092
+ const h = bbox.height + node.padding;
1093
+ const points = [
1094
+ { x: 0, y: 0 },
1095
+ { x: w, y: 0 },
1096
+ { x: w, y: -h },
1097
+ { x: 0, y: -h },
1098
+ { x: 0, y: 0 },
1099
+ { x: -8, y: 0 },
1100
+ { x: w + 8, y: 0 },
1101
+ { x: w + 8, y: -h },
1102
+ { x: -8, y: -h },
1103
+ { x: -8, y: 0 }
1104
+ ];
1105
+ const el = insertPolygonShape(shapeSvg, w, h, points);
1106
+ el.attr("style", node.style);
1107
+ updateNodeBounds(node, el);
1108
+ node.intersect = function(point2) {
1109
+ return intersect.polygon(node, points, point2);
1110
+ };
1111
+ return shapeSvg;
1112
+ };
1113
+ const start = (parent, node) => {
1114
+ const shapeSvg = parent.insert("g").attr("class", "node default").attr("id", node.domId || node.id);
1115
+ const circle2 = shapeSvg.insert("circle", ":first-child");
1116
+ circle2.attr("class", "state-start").attr("r", 7).attr("width", 14).attr("height", 14);
1117
+ updateNodeBounds(node, circle2);
1118
+ node.intersect = function(point2) {
1119
+ return intersect.circle(node, 7, point2);
1120
+ };
1121
+ return shapeSvg;
1122
+ };
1123
+ const forkJoin = (parent, node, dir) => {
1124
+ const shapeSvg = parent.insert("g").attr("class", "node default").attr("id", node.domId || node.id);
1125
+ let width = 70;
1126
+ let height = 10;
1127
+ if (dir === "LR") {
1128
+ width = 10;
1129
+ height = 70;
1130
+ }
1131
+ const shape = shapeSvg.append("rect").attr("x", -1 * width / 2).attr("y", -1 * height / 2).attr("width", width).attr("height", height).attr("class", "fork-join");
1132
+ updateNodeBounds(node, shape);
1133
+ node.height = node.height + node.padding / 2;
1134
+ node.width = node.width + node.padding / 2;
1135
+ node.intersect = function(point2) {
1136
+ return intersect.rect(node, point2);
1137
+ };
1138
+ return shapeSvg;
1139
+ };
1140
+ const end = (parent, node) => {
1141
+ const shapeSvg = parent.insert("g").attr("class", "node default").attr("id", node.domId || node.id);
1142
+ const innerCircle = shapeSvg.insert("circle", ":first-child");
1143
+ const circle2 = shapeSvg.insert("circle", ":first-child");
1144
+ circle2.attr("class", "state-start").attr("r", 7).attr("width", 14).attr("height", 14);
1145
+ innerCircle.attr("class", "state-end").attr("r", 5).attr("width", 10).attr("height", 10);
1146
+ updateNodeBounds(node, circle2);
1147
+ node.intersect = function(point2) {
1148
+ return intersect.circle(node, 7, point2);
1149
+ };
1150
+ return shapeSvg;
1151
+ };
1152
+ const class_box = (parent, node) => {
1153
+ const halfPadding = node.padding / 2;
1154
+ const rowPadding = 4;
1155
+ const lineHeight = 8;
1156
+ let classes;
1157
+ if (!node.classes) {
1158
+ classes = "node default";
1159
+ } else {
1160
+ classes = "node " + node.classes;
1161
+ }
1162
+ const shapeSvg = parent.insert("g").attr("class", classes).attr("id", node.domId || node.id);
1163
+ const rect2 = shapeSvg.insert("rect", ":first-child");
1164
+ const topLine = shapeSvg.insert("line");
1165
+ const bottomLine = shapeSvg.insert("line");
1166
+ let maxWidth = 0;
1167
+ let maxHeight = rowPadding;
1168
+ const labelContainer = shapeSvg.insert("g").attr("class", "label");
1169
+ let verticalPos = 0;
1170
+ const hasInterface = node.classData.annotations && node.classData.annotations[0];
1171
+ const interfaceLabelText = node.classData.annotations[0] ? "«" + node.classData.annotations[0] + "»" : "";
1172
+ const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));
1173
+ let interfaceBBox = interfaceLabel.getBBox();
1174
+ if (evaluate(getConfig().flowchart.htmlLabels)) {
1175
+ const div = interfaceLabel.children[0];
1176
+ const dv = d3select(interfaceLabel);
1177
+ interfaceBBox = div.getBoundingClientRect();
1178
+ dv.attr("width", interfaceBBox.width);
1179
+ dv.attr("height", interfaceBBox.height);
1180
+ }
1181
+ if (node.classData.annotations[0]) {
1182
+ maxHeight += interfaceBBox.height + rowPadding;
1183
+ maxWidth += interfaceBBox.width;
1184
+ }
1185
+ let classTitleString = node.classData.label;
1186
+ if (node.classData.type !== void 0 && node.classData.type !== "") {
1187
+ if (getConfig().flowchart.htmlLabels) {
1188
+ classTitleString += "&lt;" + node.classData.type + "&gt;";
1189
+ } else {
1190
+ classTitleString += "<" + node.classData.type + ">";
1191
+ }
1192
+ }
1193
+ const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));
1194
+ d3select(classTitleLabel).attr("class", "classTitle");
1195
+ let classTitleBBox = classTitleLabel.getBBox();
1196
+ if (evaluate(getConfig().flowchart.htmlLabels)) {
1197
+ const div = classTitleLabel.children[0];
1198
+ const dv = d3select(classTitleLabel);
1199
+ classTitleBBox = div.getBoundingClientRect();
1200
+ dv.attr("width", classTitleBBox.width);
1201
+ dv.attr("height", classTitleBBox.height);
1202
+ }
1203
+ maxHeight += classTitleBBox.height + rowPadding;
1204
+ if (classTitleBBox.width > maxWidth) {
1205
+ maxWidth = classTitleBBox.width;
1206
+ }
1207
+ const classAttributes = [];
1208
+ node.classData.members.forEach((member) => {
1209
+ const parsedInfo = member.getDisplayDetails();
1210
+ let parsedText = parsedInfo.displayText;
1211
+ if (getConfig().flowchart.htmlLabels) {
1212
+ parsedText = parsedText.replace(/</g, "&lt;").replace(/>/g, "&gt;");
1213
+ }
1214
+ const lbl = labelContainer.node().appendChild(
1215
+ createLabel$1(
1216
+ parsedText,
1217
+ parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,
1218
+ true,
1219
+ true
1220
+ )
1221
+ );
1222
+ let bbox = lbl.getBBox();
1223
+ if (evaluate(getConfig().flowchart.htmlLabels)) {
1224
+ const div = lbl.children[0];
1225
+ const dv = d3select(lbl);
1226
+ bbox = div.getBoundingClientRect();
1227
+ dv.attr("width", bbox.width);
1228
+ dv.attr("height", bbox.height);
1229
+ }
1230
+ if (bbox.width > maxWidth) {
1231
+ maxWidth = bbox.width;
1232
+ }
1233
+ maxHeight += bbox.height + rowPadding;
1234
+ classAttributes.push(lbl);
1235
+ });
1236
+ maxHeight += lineHeight;
1237
+ const classMethods = [];
1238
+ node.classData.methods.forEach((member) => {
1239
+ const parsedInfo = member.getDisplayDetails();
1240
+ let displayText = parsedInfo.displayText;
1241
+ if (getConfig().flowchart.htmlLabels) {
1242
+ displayText = displayText.replace(/</g, "&lt;").replace(/>/g, "&gt;");
1243
+ }
1244
+ const lbl = labelContainer.node().appendChild(
1245
+ createLabel$1(
1246
+ displayText,
1247
+ parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,
1248
+ true,
1249
+ true
1250
+ )
1251
+ );
1252
+ let bbox = lbl.getBBox();
1253
+ if (evaluate(getConfig().flowchart.htmlLabels)) {
1254
+ const div = lbl.children[0];
1255
+ const dv = d3select(lbl);
1256
+ bbox = div.getBoundingClientRect();
1257
+ dv.attr("width", bbox.width);
1258
+ dv.attr("height", bbox.height);
1259
+ }
1260
+ if (bbox.width > maxWidth) {
1261
+ maxWidth = bbox.width;
1262
+ }
1263
+ maxHeight += bbox.height + rowPadding;
1264
+ classMethods.push(lbl);
1265
+ });
1266
+ maxHeight += lineHeight;
1267
+ if (hasInterface) {
1268
+ let diffX2 = (maxWidth - interfaceBBox.width) / 2;
1269
+ d3select(interfaceLabel).attr(
1270
+ "transform",
1271
+ "translate( " + (-1 * maxWidth / 2 + diffX2) + ", " + -1 * maxHeight / 2 + ")"
1272
+ );
1273
+ verticalPos = interfaceBBox.height + rowPadding;
1274
+ }
1275
+ let diffX = (maxWidth - classTitleBBox.width) / 2;
1276
+ d3select(classTitleLabel).attr(
1277
+ "transform",
1278
+ "translate( " + (-1 * maxWidth / 2 + diffX) + ", " + (-1 * maxHeight / 2 + verticalPos) + ")"
1279
+ );
1280
+ verticalPos += classTitleBBox.height + rowPadding;
1281
+ topLine.attr("class", "divider").attr("x1", -maxWidth / 2 - halfPadding).attr("x2", maxWidth / 2 + halfPadding).attr("y1", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr("y2", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);
1282
+ verticalPos += lineHeight;
1283
+ classAttributes.forEach((lbl) => {
1284
+ d3select(lbl).attr(
1285
+ "transform",
1286
+ "translate( " + -maxWidth / 2 + ", " + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + ")"
1287
+ );
1288
+ const memberBBox = lbl == null ? void 0 : lbl.getBBox();
1289
+ verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;
1290
+ });
1291
+ verticalPos += lineHeight;
1292
+ bottomLine.attr("class", "divider").attr("x1", -maxWidth / 2 - halfPadding).attr("x2", maxWidth / 2 + halfPadding).attr("y1", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr("y2", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);
1293
+ verticalPos += lineHeight;
1294
+ classMethods.forEach((lbl) => {
1295
+ d3select(lbl).attr(
1296
+ "transform",
1297
+ "translate( " + -maxWidth / 2 + ", " + (-1 * maxHeight / 2 + verticalPos) + ")"
1298
+ );
1299
+ const memberBBox = lbl == null ? void 0 : lbl.getBBox();
1300
+ verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;
1301
+ });
1302
+ rect2.attr("style", node.style).attr("class", "outer title-state").attr("x", -maxWidth / 2 - halfPadding).attr("y", -(maxHeight / 2) - halfPadding).attr("width", maxWidth + node.padding).attr("height", maxHeight + node.padding);
1303
+ updateNodeBounds(node, rect2);
1304
+ node.intersect = function(point2) {
1305
+ return intersect.rect(node, point2);
1306
+ };
1307
+ return shapeSvg;
1308
+ };
1309
+ const shapes = {
1310
+ rhombus: question,
1311
+ composite,
1312
+ question,
1313
+ rect,
1314
+ labelRect,
1315
+ rectWithTitle,
1316
+ choice,
1317
+ circle,
1318
+ doublecircle,
1319
+ stadium,
1320
+ hexagon,
1321
+ block_arrow,
1322
+ rect_left_inv_arrow,
1323
+ lean_right,
1324
+ lean_left,
1325
+ trapezoid,
1326
+ inv_trapezoid,
1327
+ rect_right_inv_arrow,
1328
+ cylinder,
1329
+ start,
1330
+ end,
1331
+ note: note$1,
1332
+ subroutine,
1333
+ fork: forkJoin,
1334
+ join: forkJoin,
1335
+ class_box
1336
+ };
1337
+ let nodeElems = {};
1338
+ const insertNode = async (elem, node, dir) => {
1339
+ let newEl;
1340
+ let el;
1341
+ if (node.link) {
1342
+ let target;
1343
+ if (getConfig().securityLevel === "sandbox") {
1344
+ target = "_top";
1345
+ } else if (node.linkTarget) {
1346
+ target = node.linkTarget || "_blank";
1347
+ }
1348
+ newEl = elem.insert("svg:a").attr("xlink:href", node.link).attr("target", target);
1349
+ el = await shapes[node.shape](newEl, node, dir);
1350
+ } else {
1351
+ el = await shapes[node.shape](elem, node, dir);
1352
+ newEl = el;
1353
+ }
1354
+ if (node.tooltip) {
1355
+ el.attr("title", node.tooltip);
1356
+ }
1357
+ if (node.class) {
1358
+ el.attr("class", "node default " + node.class);
1359
+ }
1360
+ newEl.attr("data-node", "true");
1361
+ newEl.attr("data-id", node.id);
1362
+ nodeElems[node.id] = newEl;
1363
+ if (node.haveCallback) {
1364
+ nodeElems[node.id].attr("class", nodeElems[node.id].attr("class") + " clickable");
1365
+ }
1366
+ return newEl;
1367
+ };
1368
+ const setNodeElem = (elem, node) => {
1369
+ nodeElems[node.id] = elem;
1370
+ };
1371
+ const clear$1 = () => {
1372
+ nodeElems = {};
1373
+ };
1374
+ const positionNode = (node) => {
1375
+ const el = nodeElems[node.id];
1376
+ log.trace(
1377
+ "Transforming node",
1378
+ node.diff,
1379
+ node,
1380
+ "translate(" + (node.x - node.width / 2 - 5) + ", " + node.width / 2 + ")"
1381
+ );
1382
+ const padding = 8;
1383
+ const diff = node.diff || 0;
1384
+ if (node.clusterNode) {
1385
+ el.attr(
1386
+ "transform",
1387
+ "translate(" + (node.x + diff - node.width / 2) + ", " + (node.y - node.height / 2 - padding) + ")"
1388
+ );
1389
+ } else {
1390
+ el.attr("transform", "translate(" + node.x + ", " + node.y + ")");
1391
+ }
1392
+ return diff;
1393
+ };
1394
+ const getSubGraphTitleMargins = ({
1395
+ flowchart
1396
+ }) => {
1397
+ var _a, _b;
1398
+ const subGraphTitleTopMargin = ((_a = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _a.top) ?? 0;
1399
+ const subGraphTitleBottomMargin = ((_b = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _b.bottom) ?? 0;
1400
+ const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;
1401
+ return {
1402
+ subGraphTitleTopMargin,
1403
+ subGraphTitleBottomMargin,
1404
+ subGraphTitleTotalMargin
1405
+ };
1406
+ };
1407
+ const markerOffsets = {
1408
+ aggregation: 18,
1409
+ extension: 18,
1410
+ composition: 18,
1411
+ dependency: 6,
1412
+ lollipop: 13.5,
1413
+ arrow_point: 5.3
1414
+ };
1415
+ function calculateDeltaAndAngle(point1, point2) {
1416
+ if (point1 === void 0 || point2 === void 0) {
1417
+ return { angle: 0, deltaX: 0, deltaY: 0 };
1418
+ }
1419
+ point1 = pointTransformer(point1);
1420
+ point2 = pointTransformer(point2);
1421
+ const [x1, y1] = [point1.x, point1.y];
1422
+ const [x2, y2] = [point2.x, point2.y];
1423
+ const deltaX = x2 - x1;
1424
+ const deltaY = y2 - y1;
1425
+ return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };
1426
+ }
1427
+ const pointTransformer = (data) => {
1428
+ if (Array.isArray(data)) {
1429
+ return { x: data[0], y: data[1] };
1430
+ }
1431
+ return data;
1432
+ };
1433
+ const getLineFunctionsWithOffset = (edge) => {
1434
+ return {
1435
+ x: function(d, i, data) {
1436
+ let offset = 0;
1437
+ if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {
1438
+ const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);
1439
+ offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);
1440
+ } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {
1441
+ const { angle, deltaX } = calculateDeltaAndAngle(
1442
+ data[data.length - 1],
1443
+ data[data.length - 2]
1444
+ );
1445
+ offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);
1446
+ }
1447
+ return pointTransformer(d).x + offset;
1448
+ },
1449
+ y: function(d, i, data) {
1450
+ let offset = 0;
1451
+ if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {
1452
+ const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);
1453
+ offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);
1454
+ } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {
1455
+ const { angle, deltaY } = calculateDeltaAndAngle(
1456
+ data[data.length - 1],
1457
+ data[data.length - 2]
1458
+ );
1459
+ offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);
1460
+ }
1461
+ return pointTransformer(d).y + offset;
1462
+ }
1463
+ };
1464
+ };
1465
+ const addEdgeMarkers = (svgPath, edge, url, id, diagramType) => {
1466
+ if (edge.arrowTypeStart) {
1467
+ addEdgeMarker(svgPath, "start", edge.arrowTypeStart, url, id, diagramType);
1468
+ }
1469
+ if (edge.arrowTypeEnd) {
1470
+ addEdgeMarker(svgPath, "end", edge.arrowTypeEnd, url, id, diagramType);
1471
+ }
1472
+ };
1473
+ const arrowTypesMap = {
1474
+ arrow_cross: "cross",
1475
+ arrow_point: "point",
1476
+ arrow_barb: "barb",
1477
+ arrow_circle: "circle",
1478
+ aggregation: "aggregation",
1479
+ extension: "extension",
1480
+ composition: "composition",
1481
+ dependency: "dependency",
1482
+ lollipop: "lollipop"
1483
+ };
1484
+ const addEdgeMarker = (svgPath, position, arrowType, url, id, diagramType) => {
1485
+ const endMarkerType = arrowTypesMap[arrowType];
1486
+ if (!endMarkerType) {
1487
+ log.warn(`Unknown arrow type: ${arrowType}`);
1488
+ return;
1489
+ }
1490
+ const suffix = position === "start" ? "Start" : "End";
1491
+ svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);
1492
+ };
1493
+ let edgeLabels = {};
1494
+ let terminalLabels = {};
1495
+ const clear = () => {
1496
+ edgeLabels = {};
1497
+ terminalLabels = {};
1498
+ };
1499
+ const insertEdgeLabel = (elem, edge) => {
1500
+ const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);
1501
+ const labelElement = edge.labelType === "markdown" ? createText(elem, edge.label, {
1502
+ style: edge.labelStyle,
1503
+ useHtmlLabels,
1504
+ addSvgBackground: true
1505
+ }) : createLabel$1(edge.label, edge.labelStyle);
1506
+ const edgeLabel = elem.insert("g").attr("class", "edgeLabel");
1507
+ const label = edgeLabel.insert("g").attr("class", "label");
1508
+ label.node().appendChild(labelElement);
1509
+ let bbox = labelElement.getBBox();
1510
+ if (useHtmlLabels) {
1511
+ const div = labelElement.children[0];
1512
+ const dv = d3select(labelElement);
1513
+ bbox = div.getBoundingClientRect();
1514
+ dv.attr("width", bbox.width);
1515
+ dv.attr("height", bbox.height);
1516
+ }
1517
+ label.attr("transform", "translate(" + -bbox.width / 2 + ", " + -bbox.height / 2 + ")");
1518
+ edgeLabels[edge.id] = edgeLabel;
1519
+ edge.width = bbox.width;
1520
+ edge.height = bbox.height;
1521
+ let fo;
1522
+ if (edge.startLabelLeft) {
1523
+ const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);
1524
+ const startEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals");
1525
+ const inner = startEdgeLabelLeft.insert("g").attr("class", "inner");
1526
+ fo = inner.node().appendChild(startLabelElement);
1527
+ const slBox = startLabelElement.getBBox();
1528
+ inner.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
1529
+ if (!terminalLabels[edge.id]) {
1530
+ terminalLabels[edge.id] = {};
1531
+ }
1532
+ terminalLabels[edge.id].startLeft = startEdgeLabelLeft;
1533
+ setTerminalWidth(fo, edge.startLabelLeft);
1534
+ }
1535
+ if (edge.startLabelRight) {
1536
+ const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);
1537
+ const startEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals");
1538
+ const inner = startEdgeLabelRight.insert("g").attr("class", "inner");
1539
+ fo = startEdgeLabelRight.node().appendChild(startLabelElement);
1540
+ inner.node().appendChild(startLabelElement);
1541
+ const slBox = startLabelElement.getBBox();
1542
+ inner.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
1543
+ if (!terminalLabels[edge.id]) {
1544
+ terminalLabels[edge.id] = {};
1545
+ }
1546
+ terminalLabels[edge.id].startRight = startEdgeLabelRight;
1547
+ setTerminalWidth(fo, edge.startLabelRight);
1548
+ }
1549
+ if (edge.endLabelLeft) {
1550
+ const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);
1551
+ const endEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals");
1552
+ const inner = endEdgeLabelLeft.insert("g").attr("class", "inner");
1553
+ fo = inner.node().appendChild(endLabelElement);
1554
+ const slBox = endLabelElement.getBBox();
1555
+ inner.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
1556
+ endEdgeLabelLeft.node().appendChild(endLabelElement);
1557
+ if (!terminalLabels[edge.id]) {
1558
+ terminalLabels[edge.id] = {};
1559
+ }
1560
+ terminalLabels[edge.id].endLeft = endEdgeLabelLeft;
1561
+ setTerminalWidth(fo, edge.endLabelLeft);
1562
+ }
1563
+ if (edge.endLabelRight) {
1564
+ const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);
1565
+ const endEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals");
1566
+ const inner = endEdgeLabelRight.insert("g").attr("class", "inner");
1567
+ fo = inner.node().appendChild(endLabelElement);
1568
+ const slBox = endLabelElement.getBBox();
1569
+ inner.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
1570
+ endEdgeLabelRight.node().appendChild(endLabelElement);
1571
+ if (!terminalLabels[edge.id]) {
1572
+ terminalLabels[edge.id] = {};
1573
+ }
1574
+ terminalLabels[edge.id].endRight = endEdgeLabelRight;
1575
+ setTerminalWidth(fo, edge.endLabelRight);
1576
+ }
1577
+ return labelElement;
1578
+ };
1579
+ function setTerminalWidth(fo, value) {
1580
+ if (getConfig().flowchart.htmlLabels && fo) {
1581
+ fo.style.width = value.length * 9 + "px";
1582
+ fo.style.height = "12px";
1583
+ }
1584
+ }
1585
+ const positionEdgeLabel = (edge, paths) => {
1586
+ log.debug("Moving label abc88 ", edge.id, edge.label, edgeLabels[edge.id], paths);
1587
+ let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;
1588
+ const siteConfig = getConfig();
1589
+ const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);
1590
+ if (edge.label) {
1591
+ const el = edgeLabels[edge.id];
1592
+ let x = edge.x;
1593
+ let y = edge.y;
1594
+ if (path) {
1595
+ const pos = utils.calcLabelPosition(path);
1596
+ log.debug(
1597
+ "Moving label " + edge.label + " from (",
1598
+ x,
1599
+ ",",
1600
+ y,
1601
+ ") to (",
1602
+ pos.x,
1603
+ ",",
1604
+ pos.y,
1605
+ ") abc88"
1606
+ );
1607
+ if (paths.updatedPath) {
1608
+ x = pos.x;
1609
+ y = pos.y;
1610
+ }
1611
+ }
1612
+ el.attr("transform", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);
1613
+ }
1614
+ if (edge.startLabelLeft) {
1615
+ const el = terminalLabels[edge.id].startLeft;
1616
+ let x = edge.x;
1617
+ let y = edge.y;
1618
+ if (path) {
1619
+ const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, "start_left", path);
1620
+ x = pos.x;
1621
+ y = pos.y;
1622
+ }
1623
+ el.attr("transform", `translate(${x}, ${y})`);
1624
+ }
1625
+ if (edge.startLabelRight) {
1626
+ const el = terminalLabels[edge.id].startRight;
1627
+ let x = edge.x;
1628
+ let y = edge.y;
1629
+ if (path) {
1630
+ const pos = utils.calcTerminalLabelPosition(
1631
+ edge.arrowTypeStart ? 10 : 0,
1632
+ "start_right",
1633
+ path
1634
+ );
1635
+ x = pos.x;
1636
+ y = pos.y;
1637
+ }
1638
+ el.attr("transform", `translate(${x}, ${y})`);
1639
+ }
1640
+ if (edge.endLabelLeft) {
1641
+ const el = terminalLabels[edge.id].endLeft;
1642
+ let x = edge.x;
1643
+ let y = edge.y;
1644
+ if (path) {
1645
+ const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, "end_left", path);
1646
+ x = pos.x;
1647
+ y = pos.y;
1648
+ }
1649
+ el.attr("transform", `translate(${x}, ${y})`);
1650
+ }
1651
+ if (edge.endLabelRight) {
1652
+ const el = terminalLabels[edge.id].endRight;
1653
+ let x = edge.x;
1654
+ let y = edge.y;
1655
+ if (path) {
1656
+ const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, "end_right", path);
1657
+ x = pos.x;
1658
+ y = pos.y;
1659
+ }
1660
+ el.attr("transform", `translate(${x}, ${y})`);
1661
+ }
1662
+ };
1663
+ const outsideNode = (node, point2) => {
1664
+ const x = node.x;
1665
+ const y = node.y;
1666
+ const dx = Math.abs(point2.x - x);
1667
+ const dy = Math.abs(point2.y - y);
1668
+ const w = node.width / 2;
1669
+ const h = node.height / 2;
1670
+ if (dx >= w || dy >= h) {
1671
+ return true;
1672
+ }
1673
+ return false;
1674
+ };
1675
+ const intersection = (node, outsidePoint, insidePoint) => {
1676
+ log.debug(`intersection calc abc89:
1677
+ outsidePoint: ${JSON.stringify(outsidePoint)}
1678
+ insidePoint : ${JSON.stringify(insidePoint)}
1679
+ node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);
1680
+ const x = node.x;
1681
+ const y = node.y;
1682
+ const dx = Math.abs(x - insidePoint.x);
1683
+ const w = node.width / 2;
1684
+ let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;
1685
+ const h = node.height / 2;
1686
+ const Q = Math.abs(outsidePoint.y - insidePoint.y);
1687
+ const R = Math.abs(outsidePoint.x - insidePoint.x);
1688
+ if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {
1689
+ let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;
1690
+ r = R * q / Q;
1691
+ const res = {
1692
+ x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,
1693
+ y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q
1694
+ };
1695
+ if (r === 0) {
1696
+ res.x = outsidePoint.x;
1697
+ res.y = outsidePoint.y;
1698
+ }
1699
+ if (R === 0) {
1700
+ res.x = outsidePoint.x;
1701
+ }
1702
+ if (Q === 0) {
1703
+ res.y = outsidePoint.y;
1704
+ }
1705
+ log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);
1706
+ return res;
1707
+ } else {
1708
+ if (insidePoint.x < outsidePoint.x) {
1709
+ r = outsidePoint.x - w - x;
1710
+ } else {
1711
+ r = x - w - outsidePoint.x;
1712
+ }
1713
+ let q = Q * r / R;
1714
+ let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;
1715
+ let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;
1716
+ log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });
1717
+ if (r === 0) {
1718
+ _x = outsidePoint.x;
1719
+ _y = outsidePoint.y;
1720
+ }
1721
+ if (R === 0) {
1722
+ _x = outsidePoint.x;
1723
+ }
1724
+ if (Q === 0) {
1725
+ _y = outsidePoint.y;
1726
+ }
1727
+ return { x: _x, y: _y };
1728
+ }
1729
+ };
1730
+ const cutPathAtIntersect = (_points, boundaryNode) => {
1731
+ log.debug("abc88 cutPathAtIntersect", _points, boundaryNode);
1732
+ let points = [];
1733
+ let lastPointOutside = _points[0];
1734
+ let isInside = false;
1735
+ _points.forEach((point2) => {
1736
+ if (!outsideNode(boundaryNode, point2) && !isInside) {
1737
+ const inter = intersection(boundaryNode, lastPointOutside, point2);
1738
+ let pointPresent = false;
1739
+ points.forEach((p) => {
1740
+ pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;
1741
+ });
1742
+ if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {
1743
+ points.push(inter);
1744
+ }
1745
+ isInside = true;
1746
+ } else {
1747
+ lastPointOutside = point2;
1748
+ if (!isInside) {
1749
+ points.push(point2);
1750
+ }
1751
+ }
1752
+ });
1753
+ return points;
1754
+ };
1755
+ const insertEdge = function(elem, e, edge, clusterDb, diagramType, graph, id) {
1756
+ let points = edge.points;
1757
+ log.debug("abc88 InsertEdge: edge=", edge, "e=", e);
1758
+ let pointsHasChanged = false;
1759
+ const tail = graph.node(e.v);
1760
+ var head = graph.node(e.w);
1761
+ if ((head == null ? void 0 : head.intersect) && (tail == null ? void 0 : tail.intersect)) {
1762
+ points = points.slice(1, edge.points.length - 1);
1763
+ points.unshift(tail.intersect(points[0]));
1764
+ points.push(head.intersect(points[points.length - 1]));
1765
+ }
1766
+ if (edge.toCluster) {
1767
+ log.debug("to cluster abc88", clusterDb[edge.toCluster]);
1768
+ points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);
1769
+ pointsHasChanged = true;
1770
+ }
1771
+ if (edge.fromCluster) {
1772
+ log.debug("from cluster abc88", clusterDb[edge.fromCluster]);
1773
+ points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();
1774
+ pointsHasChanged = true;
1775
+ }
1776
+ const lineData = points.filter((p) => !Number.isNaN(p.y));
1777
+ let curve = curveBasis;
1778
+ if (edge.curve && (diagramType === "graph" || diagramType === "flowchart")) {
1779
+ curve = edge.curve;
1780
+ }
1781
+ const { x, y } = getLineFunctionsWithOffset(edge);
1782
+ const lineFunction = line().x(x).y(y).curve(curve);
1783
+ let strokeClasses;
1784
+ switch (edge.thickness) {
1785
+ case "normal":
1786
+ strokeClasses = "edge-thickness-normal";
1787
+ break;
1788
+ case "thick":
1789
+ strokeClasses = "edge-thickness-thick";
1790
+ break;
1791
+ case "invisible":
1792
+ strokeClasses = "edge-thickness-thick";
1793
+ break;
1794
+ default:
1795
+ strokeClasses = "";
1796
+ }
1797
+ switch (edge.pattern) {
1798
+ case "solid":
1799
+ strokeClasses += " edge-pattern-solid";
1800
+ break;
1801
+ case "dotted":
1802
+ strokeClasses += " edge-pattern-dotted";
1803
+ break;
1804
+ case "dashed":
1805
+ strokeClasses += " edge-pattern-dashed";
1806
+ break;
1807
+ }
1808
+ const svgPath = elem.append("path").attr("d", lineFunction(lineData)).attr("id", edge.id).attr("class", " " + strokeClasses + (edge.classes ? " " + edge.classes : "")).attr("style", edge.style);
1809
+ let url = "";
1810
+ if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {
1811
+ url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search;
1812
+ url = url.replace(/\(/g, "\\(");
1813
+ url = url.replace(/\)/g, "\\)");
1814
+ }
1815
+ addEdgeMarkers(svgPath, edge, url, id, diagramType);
1816
+ let paths = {};
1817
+ if (pointsHasChanged) {
1818
+ paths.updatedPath = points;
1819
+ }
1820
+ paths.originalPath = edge.points;
1821
+ return paths;
1822
+ };
1823
+ export {
1824
+ insertMarkers$1 as a,
1825
+ clear$1 as b,
1826
+ createLabel$1 as c,
1827
+ clear as d,
1828
+ insertNode as e,
1829
+ insertEdgeLabel as f,
1830
+ getSubGraphTitleMargins as g,
1831
+ insertEdge as h,
1832
+ intersectRect$1 as i,
1833
+ positionEdgeLabel as j,
1834
+ getLineFunctionsWithOffset as k,
1835
+ labelHelper as l,
1836
+ addEdgeMarkers as m,
1837
+ positionNode as p,
1838
+ setNodeElem as s,
1839
+ updateNodeBounds as u
1840
+ };