@zettelgeist/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +64 -0
  3. package/dist/bin.js +2211 -0
  4. package/dist/bin.js.map +7 -0
  5. package/dist/templates/export.html +27 -0
  6. package/dist/templates/skill/SKILL.md +220 -0
  7. package/dist/viewer-bundle/architecture-YZFGNWBL-W2K3EQOM.js +14 -0
  8. package/dist/viewer-bundle/architecture-YZFGNWBL-W2K3EQOM.js.map +7 -0
  9. package/dist/viewer-bundle/architectureDiagram-Q4EWVU46-LCGRUEWT.js +8884 -0
  10. package/dist/viewer-bundle/architectureDiagram-Q4EWVU46-LCGRUEWT.js.map +7 -0
  11. package/dist/viewer-bundle/base.css +248 -0
  12. package/dist/viewer-bundle/blockDiagram-DXYQGD6D-KAM7BOAP.js +3777 -0
  13. package/dist/viewer-bundle/blockDiagram-DXYQGD6D-KAM7BOAP.js.map +7 -0
  14. package/dist/viewer-bundle/board.css +370 -0
  15. package/dist/viewer-bundle/c4Diagram-AHTNJAMY-C3FIQYXA.js +2596 -0
  16. package/dist/viewer-bundle/c4Diagram-AHTNJAMY-C3FIQYXA.js.map +7 -0
  17. package/dist/viewer-bundle/chunk-2QXGXAO5.js +68 -0
  18. package/dist/viewer-bundle/chunk-2QXGXAO5.js.map +7 -0
  19. package/dist/viewer-bundle/chunk-5PZT7VUU.js +67 -0
  20. package/dist/viewer-bundle/chunk-5PZT7VUU.js.map +7 -0
  21. package/dist/viewer-bundle/chunk-5YJCJF2C.js +112 -0
  22. package/dist/viewer-bundle/chunk-5YJCJF2C.js.map +7 -0
  23. package/dist/viewer-bundle/chunk-6LYV7PBV.js +1011 -0
  24. package/dist/viewer-bundle/chunk-6LYV7PBV.js.map +7 -0
  25. package/dist/viewer-bundle/chunk-6VW7D5WX.js +48 -0
  26. package/dist/viewer-bundle/chunk-6VW7D5WX.js.map +7 -0
  27. package/dist/viewer-bundle/chunk-76C5OSD4.js +2048 -0
  28. package/dist/viewer-bundle/chunk-76C5OSD4.js.map +7 -0
  29. package/dist/viewer-bundle/chunk-7NZMPQDX.js +6957 -0
  30. package/dist/viewer-bundle/chunk-7NZMPQDX.js.map +7 -0
  31. package/dist/viewer-bundle/chunk-A634GTZN.js +122 -0
  32. package/dist/viewer-bundle/chunk-A634GTZN.js.map +7 -0
  33. package/dist/viewer-bundle/chunk-AJQJUKMU.js +133 -0
  34. package/dist/viewer-bundle/chunk-AJQJUKMU.js.map +7 -0
  35. package/dist/viewer-bundle/chunk-BM2KPNFW.js +5556 -0
  36. package/dist/viewer-bundle/chunk-BM2KPNFW.js.map +7 -0
  37. package/dist/viewer-bundle/chunk-CIDUOCCG.js +25 -0
  38. package/dist/viewer-bundle/chunk-CIDUOCCG.js.map +7 -0
  39. package/dist/viewer-bundle/chunk-CZHJHAOR.js +6397 -0
  40. package/dist/viewer-bundle/chunk-CZHJHAOR.js.map +7 -0
  41. package/dist/viewer-bundle/chunk-D5RLIWY4.js +125 -0
  42. package/dist/viewer-bundle/chunk-D5RLIWY4.js.map +7 -0
  43. package/dist/viewer-bundle/chunk-DI52DQAC.js +44 -0
  44. package/dist/viewer-bundle/chunk-DI52DQAC.js.map +7 -0
  45. package/dist/viewer-bundle/chunk-EXJQLTIV.js +51 -0
  46. package/dist/viewer-bundle/chunk-EXJQLTIV.js.map +7 -0
  47. package/dist/viewer-bundle/chunk-G3PPZWPW.js +96 -0
  48. package/dist/viewer-bundle/chunk-G3PPZWPW.js.map +7 -0
  49. package/dist/viewer-bundle/chunk-GTW4IDD4.js +30297 -0
  50. package/dist/viewer-bundle/chunk-GTW4IDD4.js.map +7 -0
  51. package/dist/viewer-bundle/chunk-GVE7OA3Z.js +59 -0
  52. package/dist/viewer-bundle/chunk-GVE7OA3Z.js.map +7 -0
  53. package/dist/viewer-bundle/chunk-JBUVKVPY.js +2042 -0
  54. package/dist/viewer-bundle/chunk-JBUVKVPY.js.map +7 -0
  55. package/dist/viewer-bundle/chunk-JQLVOAQB.js +20 -0
  56. package/dist/viewer-bundle/chunk-JQLVOAQB.js.map +7 -0
  57. package/dist/viewer-bundle/chunk-LQMQSYLO.js +101 -0
  58. package/dist/viewer-bundle/chunk-LQMQSYLO.js.map +7 -0
  59. package/dist/viewer-bundle/chunk-MBFAQ3IK.js +34 -0
  60. package/dist/viewer-bundle/chunk-MBFAQ3IK.js.map +7 -0
  61. package/dist/viewer-bundle/chunk-N7G7IIKG.js +25 -0
  62. package/dist/viewer-bundle/chunk-N7G7IIKG.js.map +7 -0
  63. package/dist/viewer-bundle/chunk-NW4YG3NS.js +171 -0
  64. package/dist/viewer-bundle/chunk-NW4YG3NS.js.map +7 -0
  65. package/dist/viewer-bundle/chunk-ODEP5TKB.js +61 -0
  66. package/dist/viewer-bundle/chunk-ODEP5TKB.js.map +7 -0
  67. package/dist/viewer-bundle/chunk-OGKINV23.js +1050 -0
  68. package/dist/viewer-bundle/chunk-OGKINV23.js.map +7 -0
  69. package/dist/viewer-bundle/chunk-OGMSNDVH.js +1994 -0
  70. package/dist/viewer-bundle/chunk-OGMSNDVH.js.map +7 -0
  71. package/dist/viewer-bundle/chunk-QJVSDNAW.js +25 -0
  72. package/dist/viewer-bundle/chunk-QJVSDNAW.js.map +7 -0
  73. package/dist/viewer-bundle/chunk-RBTT26R4.js +2721 -0
  74. package/dist/viewer-bundle/chunk-RBTT26R4.js.map +7 -0
  75. package/dist/viewer-bundle/chunk-RQIPIIE2.js +48 -0
  76. package/dist/viewer-bundle/chunk-RQIPIIE2.js.map +7 -0
  77. package/dist/viewer-bundle/chunk-SRTYTXTX.js +22 -0
  78. package/dist/viewer-bundle/chunk-SRTYTXTX.js.map +7 -0
  79. package/dist/viewer-bundle/chunk-TRL7YIZG.js +1663 -0
  80. package/dist/viewer-bundle/chunk-TRL7YIZG.js.map +7 -0
  81. package/dist/viewer-bundle/chunk-U5T7X4BV.js +172 -0
  82. package/dist/viewer-bundle/chunk-U5T7X4BV.js.map +7 -0
  83. package/dist/viewer-bundle/chunk-UCAW6C6C.js +48 -0
  84. package/dist/viewer-bundle/chunk-UCAW6C6C.js.map +7 -0
  85. package/dist/viewer-bundle/chunk-UEAG4BJQ.js +93 -0
  86. package/dist/viewer-bundle/chunk-UEAG4BJQ.js.map +7 -0
  87. package/dist/viewer-bundle/chunk-UVRE3R6A.js +1039 -0
  88. package/dist/viewer-bundle/chunk-UVRE3R6A.js.map +7 -0
  89. package/dist/viewer-bundle/chunk-VODO7SV4.js +25029 -0
  90. package/dist/viewer-bundle/chunk-VODO7SV4.js.map +7 -0
  91. package/dist/viewer-bundle/chunk-YEU62MVS.js +682 -0
  92. package/dist/viewer-bundle/chunk-YEU62MVS.js.map +7 -0
  93. package/dist/viewer-bundle/chunk-YFQT7PPW.js +987 -0
  94. package/dist/viewer-bundle/chunk-YFQT7PPW.js.map +7 -0
  95. package/dist/viewer-bundle/chunk-Z4G7FG27.js +48 -0
  96. package/dist/viewer-bundle/chunk-Z4G7FG27.js.map +7 -0
  97. package/dist/viewer-bundle/chunk-ZW4Y7DIF.js +2044 -0
  98. package/dist/viewer-bundle/chunk-ZW4Y7DIF.js.map +7 -0
  99. package/dist/viewer-bundle/classDiagram-6PBFFD2Q-7VKYXLUX.js +46 -0
  100. package/dist/viewer-bundle/classDiagram-6PBFFD2Q-7VKYXLUX.js.map +7 -0
  101. package/dist/viewer-bundle/classDiagram-v2-HSJHXN6E-ACCNN7EN.js +46 -0
  102. package/dist/viewer-bundle/classDiagram-v2-HSJHXN6E-ACCNN7EN.js.map +7 -0
  103. package/dist/viewer-bundle/cose-bilkent-S5V4N54A-MUJHAA34.js +5009 -0
  104. package/dist/viewer-bundle/cose-bilkent-S5V4N54A-MUJHAA34.js.map +7 -0
  105. package/dist/viewer-bundle/dagre-KV5264BT-YC5VV3WF.js +739 -0
  106. package/dist/viewer-bundle/dagre-KV5264BT-YC5VV3WF.js.map +7 -0
  107. package/dist/viewer-bundle/dark.css +13 -0
  108. package/dist/viewer-bundle/detail.css +539 -0
  109. package/dist/viewer-bundle/diagram-5BDNPKRD-RXFPVFYK.js +214 -0
  110. package/dist/viewer-bundle/diagram-5BDNPKRD-RXFPVFYK.js.map +7 -0
  111. package/dist/viewer-bundle/diagram-G4DWMVQ6-KN7CBNBQ.js +578 -0
  112. package/dist/viewer-bundle/diagram-G4DWMVQ6-KN7CBNBQ.js.map +7 -0
  113. package/dist/viewer-bundle/diagram-MMDJMWI5-ZN6TQ7ZC.js +345 -0
  114. package/dist/viewer-bundle/diagram-MMDJMWI5-ZN6TQ7ZC.js.map +7 -0
  115. package/dist/viewer-bundle/diagram-TYMM5635-MMTUJ4KA.js +255 -0
  116. package/dist/viewer-bundle/diagram-TYMM5635-MMTUJ4KA.js.map +7 -0
  117. package/dist/viewer-bundle/docs.css +88 -0
  118. package/dist/viewer-bundle/edit-modal-BEGC2AO6.js +176 -0
  119. package/dist/viewer-bundle/edit-modal-BEGC2AO6.js.map +7 -0
  120. package/dist/viewer-bundle/erDiagram-SMLLAGMA-TBHMLD2E.js +1349 -0
  121. package/dist/viewer-bundle/erDiagram-SMLLAGMA-TBHMLD2E.js.map +7 -0
  122. package/dist/viewer-bundle/flowDiagram-DWJPFMVM-BZHLK6QB.js +2501 -0
  123. package/dist/viewer-bundle/flowDiagram-DWJPFMVM-BZHLK6QB.js.map +7 -0
  124. package/dist/viewer-bundle/ganttDiagram-T4ZO3ILL-YBARPTQR.js +2654 -0
  125. package/dist/viewer-bundle/ganttDiagram-T4ZO3ILL-YBARPTQR.js.map +7 -0
  126. package/dist/viewer-bundle/gitGraph-7Q5UKJZL-HENKIQDX.js +14 -0
  127. package/dist/viewer-bundle/gitGraph-7Q5UKJZL-HENKIQDX.js.map +7 -0
  128. package/dist/viewer-bundle/gitGraphDiagram-UUTBAWPF-M4VV3YVA.js +1946 -0
  129. package/dist/viewer-bundle/gitGraphDiagram-UUTBAWPF-M4VV3YVA.js.map +7 -0
  130. package/dist/viewer-bundle/index.html +28 -0
  131. package/dist/viewer-bundle/info-OMHHGYJF-E773USRS.js +14 -0
  132. package/dist/viewer-bundle/info-OMHHGYJF-E773USRS.js.map +7 -0
  133. package/dist/viewer-bundle/infoDiagram-42DDH7IO-C7JGUXKK.js +59 -0
  134. package/dist/viewer-bundle/infoDiagram-42DDH7IO-C7JGUXKK.js.map +7 -0
  135. package/dist/viewer-bundle/ishikawaDiagram-UXIWVN3A-YBC4X4VB.js +1012 -0
  136. package/dist/viewer-bundle/ishikawaDiagram-UXIWVN3A-YBC4X4VB.js.map +7 -0
  137. package/dist/viewer-bundle/journeyDiagram-VCZTEJTY-6WKVEOOO.js +1303 -0
  138. package/dist/viewer-bundle/journeyDiagram-VCZTEJTY-6WKVEOOO.js.map +7 -0
  139. package/dist/viewer-bundle/kanban-definition-6JOO6SKY-URTTHHO4.js +1131 -0
  140. package/dist/viewer-bundle/kanban-definition-6JOO6SKY-URTTHHO4.js.map +7 -0
  141. package/dist/viewer-bundle/katex-QN5266ZE.js +14318 -0
  142. package/dist/viewer-bundle/katex-QN5266ZE.js.map +7 -0
  143. package/dist/viewer-bundle/light.css +15 -0
  144. package/dist/viewer-bundle/main.js +4816 -0
  145. package/dist/viewer-bundle/main.js.map +7 -0
  146. package/dist/viewer-bundle/mermaid.core-AEBXU2JK.js +1708 -0
  147. package/dist/viewer-bundle/mermaid.core-AEBXU2JK.js.map +7 -0
  148. package/dist/viewer-bundle/mindmap-definition-QFDTVHPH-KUMAMRSF.js +1277 -0
  149. package/dist/viewer-bundle/mindmap-definition-QFDTVHPH-KUMAMRSF.js.map +7 -0
  150. package/dist/viewer-bundle/packet-4T2RLAQJ-IRYWWA66.js +14 -0
  151. package/dist/viewer-bundle/packet-4T2RLAQJ-IRYWWA66.js.map +7 -0
  152. package/dist/viewer-bundle/pico.classless.min.css +4 -0
  153. package/dist/viewer-bundle/pie-ZZUOXDRM-JYO4VL5N.js +14 -0
  154. package/dist/viewer-bundle/pie-ZZUOXDRM-JYO4VL5N.js.map +7 -0
  155. package/dist/viewer-bundle/pieDiagram-DEJITSTG-QOEHQN3N.js +238 -0
  156. package/dist/viewer-bundle/pieDiagram-DEJITSTG-QOEHQN3N.js.map +7 -0
  157. package/dist/viewer-bundle/prompt-modal-C4LHI7BS.js +12 -0
  158. package/dist/viewer-bundle/prompt-modal-C4LHI7BS.js.map +7 -0
  159. package/dist/viewer-bundle/quadrantDiagram-34T5L4WZ-SJNPUU5N.js +1409 -0
  160. package/dist/viewer-bundle/quadrantDiagram-34T5L4WZ-SJNPUU5N.js.map +7 -0
  161. package/dist/viewer-bundle/radar-PYXPWWZC-45BRYQSB.js +14 -0
  162. package/dist/viewer-bundle/radar-PYXPWWZC-45BRYQSB.js.map +7 -0
  163. package/dist/viewer-bundle/reason-modal-MK34MQ73.js +68 -0
  164. package/dist/viewer-bundle/reason-modal-MK34MQ73.js.map +7 -0
  165. package/dist/viewer-bundle/requirementDiagram-MS252O5E-UOMT3FCC.js +1311 -0
  166. package/dist/viewer-bundle/requirementDiagram-MS252O5E-UOMT3FCC.js.map +7 -0
  167. package/dist/viewer-bundle/sankeyDiagram-XADWPNL6-LAVJ5C6A.js +1263 -0
  168. package/dist/viewer-bundle/sankeyDiagram-XADWPNL6-LAVJ5C6A.js.map +7 -0
  169. package/dist/viewer-bundle/sequenceDiagram-FGHM5R23-3IWTOUNQ.js +4655 -0
  170. package/dist/viewer-bundle/sequenceDiagram-FGHM5R23-3IWTOUNQ.js.map +7 -0
  171. package/dist/viewer-bundle/stateDiagram-FHFEXIEX-S2OVQQON.js +495 -0
  172. package/dist/viewer-bundle/stateDiagram-FHFEXIEX-S2OVQQON.js.map +7 -0
  173. package/dist/viewer-bundle/stateDiagram-v2-QKLJ7IA2-XNZ3XXSV.js +44 -0
  174. package/dist/viewer-bundle/stateDiagram-v2-QKLJ7IA2-XNZ3XXSV.js.map +7 -0
  175. package/dist/viewer-bundle/timeline-definition-GMOUNBTQ-FHVZ7MHE.js +1646 -0
  176. package/dist/viewer-bundle/timeline-definition-GMOUNBTQ-FHVZ7MHE.js.map +7 -0
  177. package/dist/viewer-bundle/treeView-SZITEDCU-RXZXNYAM.js +14 -0
  178. package/dist/viewer-bundle/treeView-SZITEDCU-RXZXNYAM.js.map +7 -0
  179. package/dist/viewer-bundle/treemap-W4RFUUIX-2IGOFSJM.js +14 -0
  180. package/dist/viewer-bundle/treemap-W4RFUUIX-2IGOFSJM.js.map +7 -0
  181. package/dist/viewer-bundle/vennDiagram-DHZGUBPP-HEAOEXEZ.js +2544 -0
  182. package/dist/viewer-bundle/vennDiagram-DHZGUBPP-HEAOEXEZ.js.map +7 -0
  183. package/dist/viewer-bundle/wardley-RL74JXVD-VSPCLOX2.js +14 -0
  184. package/dist/viewer-bundle/wardley-RL74JXVD-VSPCLOX2.js.map +7 -0
  185. package/dist/viewer-bundle/wardleyDiagram-NUSXRM2D-EBY4FG3X.js +938 -0
  186. package/dist/viewer-bundle/wardleyDiagram-NUSXRM2D-EBY4FG3X.js.map +7 -0
  187. package/dist/viewer-bundle/xychartDiagram-5P7HB3ND-SSMUQEXK.js +1952 -0
  188. package/dist/viewer-bundle/xychartDiagram-5P7HB3ND-SSMUQEXK.js.map +7 -0
  189. package/package.json +51 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/.pnpm/mermaid@11.14.0/node_modules/mermaid/dist/chunks/mermaid.core/chunk-5FUZZQ4R.mjs"],
4
+ "sourcesContent": ["import {\n configureLabelImages,\n getSubGraphTitleMargins\n} from \"./chunk-ZZ45TVLE.mjs\";\nimport {\n compileStyles,\n solidStateFill,\n styles2String,\n userNodeOverrides\n} from \"./chunk-X2U36JSP.mjs\";\nimport {\n createText,\n getIconSVG\n} from \"./chunk-U2HBQHQK.mjs\";\nimport {\n calculateTextWidth,\n decodeEntities,\n handleUndefinedAttr\n} from \"./chunk-5PVQY5BW.mjs\";\nimport {\n evaluate,\n getConfig,\n getConfig2,\n getEffectiveHtmlLabels,\n hasKatex,\n parseGenericTypes,\n sanitizeText,\n sanitizeText2\n} from \"./chunk-ICPOFSXX.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/rendering-elements/shapes/util.ts\nimport { select } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig2()?.htmlLabels);\n if (!_classes) {\n cssClasses = \"node default\";\n } else {\n cssClasses = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", handleUndefinedAttr(node.labelStyle));\n let label;\n if (node.label === void 0) {\n label = \"\";\n } else {\n label = typeof node.label === \"string\" ? node.label : node.label[0];\n }\n const addBackground = !!node.icon || !!node.img;\n const isMarkdown = node.labelType === \"markdown\";\n const text2 = await createText(\n labelEl,\n sanitizeText(decodeEntities(label), getConfig2()),\n {\n useHtmlLabels,\n width: node.width || getConfig2().flowchart?.wrappingWidth,\n classes: isMarkdown ? \"markdown-node-label\" : \"\",\n style: node.labelStyle,\n addSvgBackground: addBackground,\n markdown: isMarkdown\n },\n getConfig2()\n );\n let bbox = text2.getBBox();\n const halfPadding = (node?.padding ?? 0) / 2;\n if (useHtmlLabels) {\n const div = text2.children[0];\n const dv = select(text2);\n await configureLabelImages(div, label);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n}, \"labelHelper\");\nvar insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {\n const useHtmlLabels = options.useHtmlLabels ?? getEffectiveHtmlLabels(getConfig2());\n const labelEl = parent.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", options.labelStyle || \"\");\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: options.width || getConfig2()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img\n });\n let bbox = text2.getBBox();\n const halfPadding = options.padding / 2;\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = text2.children[0];\n const dv = select(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (options.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n}, \"insertLabel\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nvar getNodeClasses = /* @__PURE__ */ __name((node, extra) => (node.look === \"handDrawn\" ? \"rough-node\" : \"node\") + \" \" + node.cssClasses + \" \" + (extra || \"\"), \"getNodeClasses\");\nfunction createPathFromPoints(points) {\n const pointStrings = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`);\n pointStrings.push(\"Z\");\n return pointStrings.join(\" \");\n}\n__name(createPathFromPoints, \"createPathFromPoints\");\nfunction generateFullSineWavePoints(x1, y1, x2, y2, amplitude, numCycles) {\n const points = [];\n const steps = 50;\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n const frequency = 2 * Math.PI / cycleLength;\n const midY = y1 + deltaY / 2;\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n points.push({ x, y });\n }\n return points;\n}\n__name(generateFullSineWavePoints, \"generateFullSineWavePoints\");\nfunction generateCirclePoints(centerX, centerY, radius, numPoints, startAngle, endAngle) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints, \"generateCirclePoints\");\nfunction mergePaths(roughElement) {\n const paths = Array.from(roughElement.childNodes).filter(\n (node) => node.tagName === \"path\"\n );\n const mergedPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n const combinedPathData = paths.map((path) => path.getAttribute(\"d\")).filter((d) => d !== null).join(\" \");\n mergedPath.setAttribute(\"d\", combinedPathData);\n const fillPath = paths.find((path) => path.getAttribute(\"fill\") !== \"none\");\n const strokePath = paths.find((path) => path.getAttribute(\"stroke\") !== \"none\");\n const getAttr = /* @__PURE__ */ __name((element, attr) => {\n return element?.getAttribute(attr) ?? void 0;\n }, \"getAttr\");\n if (fillPath) {\n const fillAttrs = {\n fill: getAttr(fillPath, \"fill\"),\n \"fill-opacity\": getAttr(fillPath, \"fill-opacity\") ?? \"1\"\n };\n Object.entries(fillAttrs).forEach(([attr, value]) => {\n if (value) {\n mergedPath.setAttribute(attr, value);\n }\n });\n }\n if (strokePath) {\n const strokeAttrs = {\n stroke: getAttr(strokePath, \"stroke\"),\n \"stroke-width\": getAttr(strokePath, \"stroke-width\") ?? \"1\",\n \"stroke-opacity\": getAttr(strokePath, \"stroke-opacity\") ?? \"1\"\n };\n Object.entries(strokeAttrs).forEach(([attr, value]) => {\n if (value) {\n mergedPath.setAttribute(attr, value);\n }\n });\n }\n const group = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n group.appendChild(mergedPath);\n return group;\n}\n__name(mergePaths, \"mergePaths\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select2 } from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point) => {\n var x = node.x;\n var y = node.y;\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/rendering-util/rendering-elements/createLabel.js\nvar createLabel = /* @__PURE__ */ __name(async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n const config = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY\n },\n config\n );\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n \"M\",\n x + radius,\n y,\n // Move to the first point\n \"H\",\n x + totalWidth - radius,\n // Draw horizontal line to the beginning of the right corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius,\n // Draw arc to the right top corner\n \"V\",\n y + totalHeight - radius,\n // Draw vertical line down to the beginning of the right bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight,\n // Draw arc to the right bottom corner\n \"H\",\n x + radius,\n // Draw horizontal line to the beginning of the left bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius,\n // Draw arc to the left bottom corner\n \"V\",\n y + radius,\n // Draw vertical line up to the beginning of the left top corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y,\n // Draw arc to the left top corner\n \"Z\"\n // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.domId).attr(\"data-look\", node.look);\n const useHtmlLabels = getEffectiveHtmlLabels(siteConfig);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n let text2;\n if (node.labelType === \"markdown\") {\n text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n } else {\n text2 = await createLabel_default(labelEl, node.label, node.labelStyle || \"\", false, true);\n }\n let bbox = text2.getBBox();\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text2.children[0];\n const dv = select2(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.domId);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.domId).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n let innerRect = shapeSvg.append(\"rect\");\n const text2 = await createLabel_default(label, node.label, node.labelStyle, void 0, true);\n let bbox = text2.getBBox();\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text2.children[0];\n const dv = select2(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n let rect2;\n if (node.look === \"handDrawn\") {\n const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = node.rx || node.ry ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? \"hachure\" : \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"outer\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n }\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (getEffectiveHtmlLabels(siteConfig) ? 0 : 3)})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.domId).attr(\"data-look\", node.look);\n const useHtmlLabels = getEffectiveHtmlLabels(siteConfig);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n let bbox = text2.getBBox();\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text2.children[0];\n const dv = select2(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.domId).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const padding = 0 * node.padding;\n const width = node.width + padding;\n node.diff = -node.padding;\n const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: \"lightgrey\",\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n let outerRectClass = \"outer\";\n if (node.look === \"neo\") {\n outerRectClass = \"divider\";\n } else {\n outerRectClass = \"divider\";\n }\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n }\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = 0;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(async (elem, node) => {\n const shape = node.shape || \"rect\";\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/rendering-util/rendering-elements/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/rendering-util/rendering-elements/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n {\n const a1 = p2.y - p1.y;\n const b1 = p1.x - p2.x;\n const c1 = p2.x * p1.y - p1.x * p2.y;\n const r3 = a1 * q1.x + b1 * q1.y + c1;\n const r4 = a1 * q2.x + b1 * q2.y + c1;\n const epsilon = 1e-6;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n const a2 = q2.y - q1.y;\n const b2 = q1.x - q2.x;\n const c2 = q2.x * q1.y - q1.x * q2.y;\n const r1 = a2 * p1.x + b2 * p1.y + c2;\n const r2 = a2 * p2.x + b2 * p2.y + c2;\n if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {\n return;\n }\n const denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n const offset = Math.abs(denom / 2);\n let num = b1 * c2 - b2 * c1;\n const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n }\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n let intersections = [];\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersect_line_default(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = \"anchor\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const radius = 1;\n const { cssStyles } = node;\n const rc = rough2.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nfunction calculateArcSagitta(chord, radiusX, radiusY) {\n const [semiMajorAxis, semiMinorAxis] = [radiusX, radiusY].sort((a, b) => b - a);\n return semiMinorAxis * (1 - Math.sqrt(1 - (chord / semiMajorAxis / 2) ** 2));\n}\n__name(calculateArcSagitta, \"calculateArcSagitta\");\nasync function bowTieRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const calcTotalHeight = /* @__PURE__ */ __name((labelHeight) => labelHeight + labelPaddingY, \"calcTotalHeight\");\n const calcEllipseRadius = /* @__PURE__ */ __name((totalHeight2) => {\n const ry2 = totalHeight2 / 2;\n const rx2 = ry2 / (2.5 + totalHeight2 / 50);\n return [rx2, ry2];\n }, \"calcEllipseRadius\");\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalHeight = calcTotalHeight(node?.height ? node?.height : bbox.height);\n const [rx, ry] = calcEllipseRadius(totalHeight);\n const sagitta = calculateArcSagitta(totalHeight, rx, ry);\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + sagitta;\n const w = totalWidth - sagitta;\n const h = totalHeight;\n const { cssStyles } = node;\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n ];\n const rc = rough3.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n bowTieRectShape.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n updateNodeBounds(node, bowTieRectShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nvar NOTCH_SIZE = 12;\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 28 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 24 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ?? bbox.width) + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX + NOTCH_SIZE);\n const h = (node?.height ?? bbox.height) + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + NOTCH_SIZE, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + NOTCH_SIZE },\n { x: left + NOTCH_SIZE, y: top }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough4.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const s = Math.max(28, node.width ?? 0);\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const rc = rough5.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPadding = 16;\n const padding = options?.padding ?? halfPadding;\n const radius = node.look === \"neo\" ? bbox.width / 2 + labelPadding * 2 : bbox.width / 2 + padding;\n let circleElem;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough6.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options2);\n circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleElem);\n node.calcIntersect = function(bounds, point) {\n const radius2 = bounds.width / 2;\n return intersect_default.circle(bounds, radius2, point);\n };\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n const xAxis45 = Math.cos(Math.PI / 4);\n const yAxis45 = Math.sin(Math.PI / 4);\n const lineLength = r * 2;\n const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n const rc = rough7.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n crossedCircle2.insert(() => lineNode);\n crossedCircle2.attr(\"class\", \"outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, crossedCircle2);\n node.intersect = function(point) {\n log.info(\"crossedCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const paddingX = node.look === \"neo\" ? 18 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n const w = bbox.width + paddingX;\n const h = bbox.height + paddingY;\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius }\n ];\n const rc = rough8.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n curlyBraceLeftShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceLeftShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node.look === \"neo\" ? 18 : node.padding ?? 0;\n const labelPaddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n const w = bbox.width + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX);\n const h = bbox.height + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius }\n ];\n const rc = rough9.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n curlyBraceRightShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceRightShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node.look === \"neo\" ? 18 : node.padding ?? 0;\n const labelPaddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n const w = bbox.width + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX);\n const h = bbox.height + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const leftCurlyBracePoints = [\n ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rightCurlyBracePoints = [\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rc = rough10.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n curlyBracesShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBracesShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const minWidth = 20, minHeight = 5;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, (bbox.width + labelPaddingX * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + labelPaddingY * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough11.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const totalWidth = w, totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nvar MIN_HEIGHT = 8;\nvar MIN_WIDTH = 8;\nasync function cylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 24 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 24 : nodePadding;\n if (node.width || node.height) {\n const originalWidth = node.width ?? 0;\n node.width = (node.width ?? 0) - labelPaddingY;\n if (node.width < MIN_WIDTH) {\n node.width = MIN_WIDTH;\n }\n const rx2 = originalWidth / 2;\n const ry2 = rx2 / (2.5 + originalWidth / 50);\n node.height = (node.height ?? 0) - labelPaddingX - ry2 * 3;\n if (node.height < MIN_HEIGHT) {\n node.height = MIN_HEIGHT;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node.width ? node.width : bbox.width) + labelPaddingY;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = (node.height ? node.height : bbox.height) + labelPaddingX + ry;\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough12.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container outer-path\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough13 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const paddingX = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + paddingX;\n const h = bbox.height + paddingY;\n const rectOffset2 = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset2 / 2;\n const { cssStyles } = node;\n const rc = rough13.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pts = [\n { x, y: y + rectOffset2 },\n { x: -x, y: y + rectOffset2 },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset2 }\n ];\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n const polygon = shapeSvg.insert(() => poly, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough14 from \"roughjs\";\nasync function doublecircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n const gap = node.look === \"neo\" ? 12 : 5;\n node.labelStyle = labelStyles;\n const padding = node.padding ?? 0;\n const labelPadding = node.look === \"neo\" ? 16 : padding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const outerRadius = (node?.width ? node?.width / 2 : bbox.width / 2) + (labelPadding ?? 0);\n const innerRadius = outerRadius - gap;\n let circleGroup;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough14.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\", \":first-child\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleGroup);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n return intersect_default.circle(node, outerRadius, point);\n };\n return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough15 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n const rc = rough15.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, filledCircle2);\n node.intersect = function(point) {\n log.info(\"filledCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough16 from \"roughjs\";\nvar MIN_HEIGHT2 = 10;\nvar MIN_WIDTH2 = 10;\nasync function flippedTriangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n if (node.width || node.height) {\n node.height = node?.height ?? 0;\n if (node.height < MIN_HEIGHT2) {\n node.height = MIN_HEIGHT2;\n }\n node.width = (node?.width ?? 0) - labelPaddingX - labelPaddingX / 2;\n if (node.width < MIN_WIDTH2) {\n node.width = MIN_WIDTH2;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0);\n const h = node?.height ? node?.height : w + bbox.height;\n const tw = h;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 }\n ];\n const { cssStyles } = node;\n const rc = rough16.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`).attr(\"class\", \"outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, flippedTriangle2);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough17 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n if (dir === \"LR\") {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n const x = -1 * width / 2;\n const y = -1 * height / 2;\n const rc = rough17.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.rectangle(x, y, width, height, options);\n const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, shape);\n const padding = state2?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough18 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 15, minHeight = 10;\n const paddingX = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n if (node.width || node.height) {\n node.height = (node?.height ?? 0) - paddingY * 2;\n if (node.height < minHeight) {\n node.height = minHeight;\n }\n node.width = (node?.width ?? 0) - paddingX * 2;\n if (node.width < minWidth) {\n node.width = minWidth;\n }\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : Math.max(minWidth, bbox.width)) + paddingX * 2;\n const h = (node?.height ? node?.height : Math.max(minHeight, bbox.height)) + paddingY * 2;\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough18.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { radius, point });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough19 from \"roughjs\";\nvar createHexagonPathD = /* @__PURE__ */ __name((x, y, width, height, m) => {\n return [\n `M${x + m},${y}`,\n `L${x + width - m},${y}`,\n `L${x + width},${y - height / 2}`,\n `L${x + width - m},${y - height}`,\n `L${x + m},${y - height}`,\n `L${x},${y - height / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createHexagonPathD\");\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n const f = node.look === \"neo\" ? 3.5 : 4;\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const wa = 70;\n const ha = 32;\n const labelPaddingX = node.look === \"neo\" ? wa : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? ha : nodePadding;\n if (node.width || node.height) {\n const originalHeight = node.height ?? 0;\n const m2 = originalHeight / f;\n node.width = (node?.width ?? 0) - 2 * m2 - labelPaddingY;\n node.height = (node.height ?? 0) - labelPaddingX;\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingX;\n const m = h / f;\n const w = (node?.width ? node?.width : bbox.width) + 2 * m + labelPaddingY;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createHexagonPathD(0, 0, w, h, m);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough20 from \"roughjs\";\nasync function hourglass(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough20.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { points });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough21 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const topLabel = node.pos === \"t\";\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough21.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const iconNode = rc.rectangle(x, y, width, height, options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(icon, \"icon\");\n\n// src/rendering-util/rendering-elements/shapes/iconCircle.ts\nimport rough22 from \"roughjs\";\nasync function iconCircle(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const padding = 20;\n const labelPadding = node.label ? 8 : 0;\n const topLabel = node.pos === \"t\";\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const rc = rough22.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconElem = shapeSvg.append(\"g\");\n if (node.icon) {\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n }\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n const iconNode = rc.circle(0, 0, diameter, options);\n const outerWidth = Math.max(diameter, bbox.width);\n const outerHeight = diameter + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconCircle, \"iconCircle\");\n\n// src/rendering-util/rendering-elements/shapes/iconRounded.ts\nimport rough23 from \"roughjs\";\nasync function iconRounded(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough23.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\").attr(\"class\", \"icon-shape2\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconRounded, \"iconRounded\");\n\n// src/rendering-util/rendering-elements/shapes/iconSquare.ts\nimport rough24 from \"roughjs\";\nasync function iconSquare(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough24.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconSquare, \"iconSquare\");\n\n// src/rendering-util/rendering-elements/shapes/imageSquare.ts\nimport rough25 from \"roughjs\";\nasync function imageSquare(parent, node, { config: { flowchart } }) {\n const img = new Image();\n img.src = node?.img ?? \"\";\n await img.decode();\n const imageNaturalWidth = Number(img.naturalWidth.toString().replace(\"px\", \"\"));\n const imageNaturalHeight = Number(img.naturalHeight.toString().replace(\"px\", \"\"));\n node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const defaultWidth = flowchart?.wrappingWidth;\n node.defaultWidth = flowchart?.wrappingWidth;\n const imageRawWidth = Math.max(\n node.label ? defaultWidth ?? 0 : 0,\n node?.assetWidth ?? imageNaturalWidth\n );\n const imageWidth = node.constraint === \"on\" ? node?.assetHeight ? node.assetHeight * node.imageAspectRatio : imageRawWidth : imageRawWidth;\n const imageHeight = node.constraint === \"on\" ? imageWidth / node.imageAspectRatio : node?.assetHeight ?? imageNaturalHeight;\n node.width = Math.max(imageWidth, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"image-shape default\");\n const topLabel = node.pos === \"t\";\n const x = -imageWidth / 2;\n const y = -imageHeight / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough25.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n const outerWidth = Math.max(imageWidth, bbox.width);\n const outerHeight = imageHeight + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"none\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => imageNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.img) {\n const image = shapeSvg.append(\"image\");\n image.attr(\"href\", node.img);\n image.attr(\"width\", imageWidth);\n image.attr(\"height\", imageHeight);\n image.attr(\"preserveAspectRatio\", \"none\");\n image.attr(\n \"transform\",\n `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n );\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2 : imageHeight / 2 - bbox.height / 2 + labelPadding / 2})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(imageSquare, \"imageSquare\");\n\n// src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts\nimport rough26 from \"roughjs\";\nasync function inv_trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (labelPaddingX ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (labelPaddingY ?? 0) * 2, node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: -3 * h / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough26.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(inv_trapezoid, \"inv_trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/drawRect.ts\nimport rough27 from \"roughjs\";\nasync function drawRect(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n let rect2;\n let { rx, ry } = node;\n const { cssStyles } = node;\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n if (node.look === \"handDrawn\") {\n const rc = rough27.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", handleUndefinedAttr(rx)).attr(\"ry\", handleUndefinedAttr(ry)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n }\n updateNodeBounds(node, rect2);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(drawRect, \"drawRect\");\n\n// src/rendering-util/rendering-elements/shapes/labelRect.ts\nasync function labelRect(parent, node) {\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"label\");\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(labelRect, \"labelRect\");\n\n// src/rendering-util/rendering-elements/shapes/leanLeft.ts\nimport rough28 from \"roughjs\";\nasync function lean_left(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n const points = [\n { x: 0, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: -(3 * h) / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough28.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_left, \"lean_left\");\n\n// src/rendering-util/rendering-elements/shapes/leanRight.ts\nimport rough29 from \"roughjs\";\nasync function lean_right(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough29.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_right, \"lean_right\");\n\n// src/rendering-util/rendering-elements/shapes/lightningBolt.ts\nimport rough30 from \"roughjs\";\nfunction lightningBolt(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const width = Math.max(35, node?.width ?? 0);\n const height = Math.max(35, node?.height ?? 0);\n const gap = 7;\n const points = [\n { x: width, y: 0 },\n { x: 0, y: height + gap / 2 },\n { x: width - 2 * gap, y: height + gap / 2 },\n { x: 0, y: 2 * height },\n { x: width, y: height - gap / 2 },\n { x: 2 * gap, y: height - gap / 2 }\n ];\n const rc = rough30.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const linePath = createPathFromPoints(points);\n const lineNode = rc.path(linePath, options);\n const lightningBolt2 = shapeSvg.insert(() => lineNode, \":first-child\");\n lightningBolt2.attr(\"class\", \"outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n lightningBolt2.attr(\"transform\", `translate(-${width / 2},${-height})`);\n updateNodeBounds(node, lightningBolt2);\n node.intersect = function(point) {\n log.info(\"lightningBolt intersect\", node, point);\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(lightningBolt, \"lightningBolt\");\n\n// src/rendering-util/rendering-elements/shapes/linedCylinder.ts\nimport rough31 from \"roughjs\";\nvar createCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nvar MIN_HEIGHT3 = 10;\nvar MIN_WIDTH3 = 10;\nasync function linedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 24 : nodePadding;\n if (node.width || node.height) {\n const originalWidth = node.width ?? 0;\n node.width = (node.width ?? 0) - labelPaddingX;\n if (node.width < MIN_WIDTH3) {\n node.width = MIN_WIDTH3;\n }\n const rx2 = originalWidth / 2;\n const ry2 = rx2 / (2.5 + originalWidth / 50);\n node.height = (node.height ?? 0) - labelPaddingY - ry2 * 3;\n if (node.height < MIN_HEIGHT3) {\n node.height = MIN_HEIGHT3;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = (node?.height ? node?.height : bbox.height) + ry + labelPaddingY * 2;\n const outerOffset = h * 0.1;\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough31.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n const innerPathData = createInnerCylinderPathD2(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, options);\n const innerLineEl = shapeSvg.insert(() => innerLine, \":first-child\");\n innerLineEl.attr(\"class\", \"line\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container outer-path\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(linedCylinder, \"linedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts\nimport rough32 from \"roughjs\";\nasync function linedWaveEdgedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n if (node.width || node.height) {\n const originalWidth = node.width;\n node.width = (originalWidth ?? 0) * 10 / 11 - labelPaddingX * 2;\n if (node.width < 10) {\n node.width = 10;\n }\n node.height = (node?.height ?? 0) - labelPaddingY * 2;\n if (node.height < 10) {\n node.height = 10;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0) * 2;\n const h = (node?.height ? node?.height : bbox.height) + (labelPaddingY ?? 0) * 2;\n const waveAmplitude = node.look === \"neo\" ? h / 4 : h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough32.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2, y: -finalH / 2 },\n { x: -w / 2, y: finalH / 2 * 1.1 },\n { x: -w / 2, y: -finalH / 2 }\n ];\n const poly = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const waveEdgeRect = shapeSvg.insert(() => poly, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) + w / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(linedWaveEdgedRect, \"linedWaveEdgedRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiRect.ts\nimport rough33 from \"roughjs\";\nasync function multiRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const rectOffset2 = node.look === \"neo\" ? 10 : 5;\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - labelPaddingX * 2 - 2 * rectOffset2, 10);\n node.height = Math.max((node?.height ?? 0) - labelPaddingY * 2 - 2 * rectOffset2, 10);\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + 2 * rectOffset2;\n const totalHeight = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2 + 2 * rectOffset2;\n const w = totalWidth - 2 * rectOffset2;\n const h = totalHeight - 2 * rectOffset2;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough33.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset2, y: y + rectOffset2 },\n { x: x - rectOffset2, y: y + h + rectOffset2 },\n { x: x + w - rectOffset2, y: y + h + rectOffset2 },\n { x: x + w - rectOffset2, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset2 },\n { x: x + w + rectOffset2, y: y + h - rectOffset2 },\n { x: x + w + rectOffset2, y: y - rectOffset2 },\n { x: x + rectOffset2, y: y - rectOffset2 },\n { x: x + rectOffset2, y },\n { x, y },\n { x, y: y + rectOffset2 }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset2 },\n { x: x + w - rectOffset2, y: y + rectOffset2 },\n { x: x + w - rectOffset2, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y },\n { x, y }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n let outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n let innerNode = rc.path(innerPath, options);\n if (node.look !== \"handDrawn\") {\n outerNode = mergePaths(outerNode);\n innerNode = mergePaths(innerNode);\n }\n const multiRect2 = shapeSvg.insert(\"g\", \":first-child\");\n multiRect2.insert(() => outerNode);\n multiRect2.insert(() => innerNode);\n multiRect2.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, multiRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiRect, \"multiRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts\nimport rough34 from \"roughjs\";\nasync function multiWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n let adjustFinalHeight = true;\n if (node.width || node.height) {\n adjustFinalHeight = false;\n node.width = (node?.width ?? 0) - labelPaddingX * 2;\n node.height = (node?.height ?? 0) - labelPaddingY * 3;\n }\n const w = Math.max(bbox.width, node?.width ?? 0) + labelPaddingX * 2;\n const h = Math.max(bbox.height, node?.height ?? 0) + labelPaddingY * 3;\n const waveAmplitude = node.look === \"neo\" ? h / 4 : h / 8;\n const finalH = h + (adjustFinalHeight ? waveAmplitude / 2 : -waveAmplitude / 2);\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset2 = 10;\n const { cssStyles } = node;\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset2,\n y + finalH + rectOffset2,\n x + w - rectOffset2,\n y + finalH + rectOffset2,\n waveAmplitude,\n 0.8\n );\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n const outerPathPoints = [\n { x: x - rectOffset2, y: y + rectOffset2 },\n { x: x - rectOffset2, y: y + finalH + rectOffset2 },\n ...wavePoints,\n { x: x + w - rectOffset2, y: lastWavePoint.y - rectOffset2 },\n { x: x + w, y: lastWavePoint.y - rectOffset2 },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset2 },\n { x: x + w + rectOffset2, y: lastWavePoint.y - 2 * rectOffset2 },\n { x: x + w + rectOffset2, y: y - rectOffset2 },\n { x: x + rectOffset2, y: y - rectOffset2 },\n { x: x + rectOffset2, y },\n { x, y },\n { x, y: y + rectOffset2 }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset2 },\n { x: x + w - rectOffset2, y: y + rectOffset2 },\n { x: x + w - rectOffset2, y: lastWavePoint.y - rectOffset2 },\n { x: x + w, y: lastWavePoint.y - rectOffset2 },\n { x: x + w, y },\n { x, y }\n ];\n const rc = rough34.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, options);\n const shape = shapeSvg.insert(() => outerNode, \":first-child\");\n shape.insert(() => innerNode);\n shape.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n shape.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset2 - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, shape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiWaveEdgedRectangle, \"multiWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/note.ts\nimport rough35 from \"roughjs\";\nasync function note(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig());\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n const rc = rough35.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n fill: themeVariables.noteBkgColor,\n stroke: themeVariables.noteBorderColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => noteShapeNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container outer-path\");\n label.attr(\"class\", \"label noteLabel\");\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(note, \"note\");\n\n// src/rendering-util/rendering-elements/shapes/question.ts\nimport rough36 from \"roughjs\";\nvar createDecisionBoxPathD = /* @__PURE__ */ __name((x, y, size) => {\n return [\n `M${x + size / 2},${y}`,\n `L${x + size},${y - size / 2}`,\n `L${x + size / 2},${y - size}`,\n `L${x},${y - size / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createDecisionBoxPathD\");\nasync function question(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const s = w + h;\n const adjustment = 0.5;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough36.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n polygon.attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.calcIntersect = function(bounds, point) {\n const s2 = bounds.width;\n const points2 = [\n { x: s2 / 2, y: 0 },\n { x: s2, y: -s2 / 2 },\n { x: s2 / 2, y: -s2 },\n { x: 0, y: -s2 / 2 }\n ];\n const res = intersect_default.polygon(bounds, points2, point);\n return { x: res.x - 0.5, y: res.y - 0.5 };\n };\n node.intersect = function(point) {\n return this.calcIntersect(node, point);\n };\n return shapeSvg;\n}\n__name(question, \"question\");\n\n// src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts\nimport rough37 from \"roughjs\";\nasync function rect_left_inv_arrow(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 21 : nodePadding ?? 0;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding ?? 0;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ?? bbox.width) + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX);\n const h = (node?.height ?? bbox.height) + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const x = -w / 2;\n const y = -h / 2;\n const notch = y / 2;\n const points = [\n { x: x + notch, y },\n { x, y: 0 },\n { x: x + notch, y: -y },\n { x: -x, y: -y },\n { x: -x, y }\n ];\n const { cssStyles } = node;\n const rc = rough37.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-notch / 2},0)`);\n label.attr(\n \"transform\",\n `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(rect_left_inv_arrow, \"rect_left_inv_arrow\");\n\n// src/rendering-util/rendering-elements/shapes/rectWithTitle.ts\nimport { select as select3 } from \"d3\";\nimport rough38 from \"roughjs\";\nasync function rectWithTitle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n let classes;\n if (!node.cssClasses) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.cssClasses;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const g = shapeSvg.insert(\"g\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", nodeStyles);\n const description = node.description;\n const title = node.label;\n const text2 = await createLabel_default(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div2 = text2.children[0];\n const dv2 = select3(text2);\n bbox = div2.getBoundingClientRect();\n dv2.attr(\"width\", bbox.width);\n dv2.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", description);\n const textRows = description || [];\n const titleBox = text2.getBBox();\n const descr = await createLabel_default(\n label,\n Array.isArray(textRows) ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n );\n const div = descr.children[0];\n const dv = select3(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n const halfPadding = (node.padding || 0) / 2;\n select3(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select3(text2).attr(\n \"transform\",\n \"translate( \" + (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect2;\n let innerLine;\n if (node.look === \"handDrawn\") {\n const rc = rough38.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n innerLine = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughLine;\n }, \":first-child\");\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n } else {\n rect2 = g.insert(\"rect\", \":first-child\");\n innerLine = g.insert(\"line\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nasync function roundedRect(parent, node, { config: { themeVariables } }) {\n const radius = themeVariables?.radius ?? 5;\n const options = {\n rx: radius,\n ry: radius,\n classes: \"\",\n labelPaddingX: (node?.padding ?? 0) * 1,\n labelPaddingY: (node?.padding ?? 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough39 from \"roughjs\";\nvar FRAME_WIDTH = 8;\nasync function shadedProcess(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const paddingX = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ?? bbox.width) + paddingX * 2 + (node.look === \"neo\" ? FRAME_WIDTH : FRAME_WIDTH * 2);\n const totalHeight = (node?.height ?? bbox.height) + paddingY * 2;\n const w = totalWidth - FRAME_WIDTH;\n const h = totalHeight;\n const x = FRAME_WIDTH - totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x: x + w, y },\n { x: x + w, y: y + h },\n { x: x - FRAME_WIDTH, y: y + h },\n { x: x - FRAME_WIDTH, y },\n { x, y },\n { x, y: y + h }\n ];\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container outer-path\").attr(\"style\", handleUndefinedAttr(cssStyles));\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${FRAME_WIDTH / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough40 from \"roughjs\";\nasync function slopedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - labelPaddingX * 2, 10);\n node.height = Math.max((node?.height ?? 0) / 1.5 - labelPaddingY * 2, 10);\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const totalHeight = ((node?.height ? node?.height : bbox.height) + labelPaddingY * 2) * 1.5;\n const w = totalWidth;\n const h = totalHeight / 1.5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough40.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding * 2;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: node.labelPaddingX ?? labelPaddingX,\n labelPaddingY\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough41 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 20 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const w = bbox.width + h / 4 + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough41.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 + radius, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2 - radius, 0, radius, 50, 270, 450)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n const options = {\n rx: node.look === \"neo\" ? 3 : 5,\n ry: node.look === \"neo\" ? 3 : 5,\n classes: \"flowchart-node\"\n };\n return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough42 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder, nodeShadow } = themeVariables;\n if (node.width || node.height) {\n if ((node.width ?? 0) < 14) {\n node.width = 14;\n }\n if ((node.height ?? 0) < 14) {\n node.height = 14;\n }\n }\n if (!node.width) {\n node.width = 14;\n }\n if (!node.height) {\n node.height = 14;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId ?? node.id);\n const rc = rough42.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.circle(0, 0, node.width, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const innerNodeRadius = (node.width ?? 0) * 5 / 14;\n const roughInnerNode = rc.circle(0, 0, innerNodeRadius, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: \"solid\"\n });\n const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n circle2.insert(() => roughInnerNode);\n if (node.look !== \"handDrawn\") {\n circle2.attr(\"class\", \"outer-path\");\n }\n if (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (node.width < 25 && nodeShadow && node.look !== \"handDrawn\") {\n const svgId = parent.node()?.ownerSVGElement?.id ?? \"\";\n const filterId = svgId ? `${svgId}-drop-shadow-small` : \"drop-shadow-small\";\n circle2.attr(\"style\", `filter:url(#${filterId})`);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, (node.width ?? 0) / 2, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough43 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor, nodeShadow } = themeVariables;\n if (node.width || node.height) {\n if ((node.width ?? 0) < 14) {\n node.width = 14;\n }\n if ((node.height ?? 0) < 14) {\n node.height = 14;\n }\n }\n if (!node.width) {\n node.width = 14;\n }\n if (!node.height) {\n node.height = 14;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let circle2;\n if (node.look === \"handDrawn\") {\n const rc = rough43.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, node.width, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", (node.width ?? 7) / 2).attr(\"width\", node.width ?? 14).attr(\"height\", node.height ?? 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", (node.width ?? 7) / 2).attr(\"width\", node.width ?? 14).attr(\"height\", node.height ?? 14);\n }\n if (node.width < 25 && nodeShadow && node.look !== \"handDrawn\") {\n const svgId = parent.node()?.ownerSVGElement?.id ?? \"\";\n const filterId = svgId ? `${svgId}-drop-shadow-small` : \"drop-shadow-small\";\n circle2.attr(\"style\", `filter:url(#${filterId})`);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, (node.width ?? 7) / 2, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough44 from \"roughjs\";\nvar FRAME_WIDTH2 = 8;\nasync function subroutine(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node?.padding ?? 8;\n const labelPaddingX = node.look === \"neo\" ? 28 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ?? bbox.width) + 2 * FRAME_WIDTH2 + labelPaddingX;\n const totalHeight = (node?.height ?? bbox.height) + labelPaddingY;\n const w = totalWidth - 2 * FRAME_WIDTH2;\n const h = totalHeight;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n if (node.look === \"handDrawn\") {\n const rc = rough44.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.rectangle(x, y, w + 16, h, options);\n const l1 = rc.line(x + FRAME_WIDTH2, y, x + FRAME_WIDTH2, y + h, options);\n const l2 = rc.line(x + FRAME_WIDTH2 + w, y, x + FRAME_WIDTH2 + w, y + h, options);\n shapeSvg.insert(() => l1, \":first-child\");\n shapeSvg.insert(() => l2, \":first-child\");\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n const { cssStyles } = node;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect2);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough45 from \"roughjs\";\nvar TAG_RATIO = 0.2;\nasync function taggedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n if (node.width || node.height) {\n node.height = Math.max((node?.height ?? 0) - labelPaddingY * 2, 10);\n node.width = Math.max(\n (node?.width ?? 0) - labelPaddingX * 2 - TAG_RATIO * (node.height + labelPaddingY * 2),\n 10\n );\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalHeight = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const tagWidth = TAG_RATIO * totalHeight;\n const tagHeight = TAG_RATIO * totalHeight;\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + tagWidth;\n const w = totalWidth - tagWidth;\n const h = totalHeight;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h }\n ];\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n taggedRect2.insert(() => rectNode, \":first-child\");\n taggedRect2.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, taggedRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough46 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough46.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n ];\n const x = -w / 2 + w / 2 * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.3 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.25,\n x + w - tagWidth,\n (y + h) * 1.3,\n -h * 0.02,\n 0.5\n )\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: \"solid\"\n });\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0), node?.width || 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0), node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough47 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nvar MIN_HEIGHT4 = 5;\nvar MIN_WIDTH4 = 10;\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPadding = node.look === \"neo\" ? 12 : nodePadding / 2;\n if (node.width || node.height) {\n const originalHeight = node.height ?? 0;\n node.height = (node.height ?? 0) - labelPadding;\n if (node.height < MIN_HEIGHT4) {\n node.height = MIN_HEIGHT4;\n }\n const ry2 = originalHeight / 2;\n const rx2 = ry2 / (2.5 + originalHeight / 50);\n node.width = (node.width ?? 0) - labelPadding - rx2 * 3;\n if (node.width < MIN_WIDTH4) {\n node.width = MIN_WIDTH4;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node.height ? node.height : bbox.height) + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = (node.width ? node.width : bbox.width) + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough47.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n cylinder2.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n }\n cylinder2.attr(\"label-offset-x\", rx);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, cylinder2);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n let x = rx * rx * (1 - y * y / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n pos.x += x;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough48 from \"roughjs\";\nasync function trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = node.look === \"neo\" ? nodePadding : nodePadding;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough48.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough49 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const minWidth = 15, minHeight = 5;\n if (node.width || node.height) {\n node.height = (node.height ?? 0) - labelPaddingY * 2;\n if (node.height < minHeight) {\n node.height = minHeight;\n }\n node.width = (node.width ?? 0) - labelPaddingX * 2;\n if (node.width < minWidth) {\n node.width = minWidth;\n }\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const { cssStyles } = node;\n const rc = rough49.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 * 0.8, y: -h / 2 },\n { x: w / 2 * 0.8, y: -h / 2 },\n { x: w / 2, y: -h / 2 * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: -h / 2 * 0.6 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough50 from \"roughjs\";\nvar MIN_HEIGHT5 = 10;\nvar MIN_WIDTH5 = 10;\nasync function triangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n if (node.width || node.height) {\n node.width = ((node?.width ?? 0) - labelPaddingX) / 2;\n if (node.width < MIN_WIDTH5) {\n node.width = MIN_WIDTH5;\n }\n node.height = node?.height ?? 0;\n if (node.height < MIN_HEIGHT5) {\n node.height = MIN_HEIGHT5;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX;\n const h = node?.height ? node?.height : w + bbox.height;\n const tw = h;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h }\n ];\n const { cssStyles } = node;\n const rc = rough50.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`).attr(\"class\", \"outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough51 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n let adjustFinalHeight = true;\n if (node.width || node.height) {\n adjustFinalHeight = false;\n node.width = (node?.width ?? 0) - labelPaddingX * 2;\n if (node.width < 10) {\n node.width = 10;\n }\n node.height = (node?.height ?? 0) - labelPaddingY * 2;\n if (node.height < 10) {\n node.height = 10;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0) * 2;\n const h = (node?.height ? node?.height : bbox.height) + (labelPaddingY ?? 0) * 2;\n const waveAmplitude = node.look === \"neo\" ? h / 4 : h / 8;\n const finalH = h + (adjustFinalHeight ? waveAmplitude : -waveAmplitude);\n const { cssStyles } = node;\n const minWidth = 14;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n const rc = rough51.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 }\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 20 : nodePadding;\n if (node.width || node.height) {\n node.width = node?.width ?? 0;\n if (node.width < 20) {\n node.width = 20;\n }\n node.height = node?.height ?? 0;\n if (node.height < 10) {\n node.height = 10;\n }\n const waveAmplitude2 = Math.min(node.height * 0.2, node.height / 4);\n node.height = Math.ceil(node.height - labelPaddingY - waveAmplitude2 * (20 / 9));\n node.width = node.width - labelPaddingX * 2;\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY;\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough52.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n ];\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n waveRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, waveRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough53 from \"roughjs\";\nvar rectOffset = 10;\nasync function windowPane(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const paddingX = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - paddingX * 2 - rectOffset, 10);\n node.height = Math.max((node?.height ?? 0) - paddingY * 2 - rectOffset, 10);\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ? node?.width : bbox.width) + paddingX * 2 + rectOffset;\n const totalHeight = (node?.height ? node?.height : bbox.height) + paddingY * 2 + rectOffset;\n const w = totalWidth - rectOffset;\n const h = totalHeight - rectOffset;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough53.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset }\n ];\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const no = rc.path(path, options);\n const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n windowPane2.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, windowPane2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/erBox.ts\nimport rough54 from \"roughjs\";\nimport { select as select4 } from \"d3\";\nvar COLOR_THEMES = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar REDUX_THEMES = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nasync function erBox(parent, node) {\n const entityNode = node;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\n const { theme, themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder, borderColorArray } = themeVariables;\n if (node.look === \"handDrawn\") {\n const { themeVariables: themeVariables2 } = getConfig();\n const { background } = themeVariables2;\n const backgroundNode = {\n ...node,\n id: node.id + \"-background\",\n domId: (node.domId || node.id) + \"-background\",\n look: \"default\",\n cssStyles: [\"stroke: none\", `fill: ${background}`]\n };\n await erBox(parent, backgroundNode);\n }\n const config = getConfig();\n node.useHtmlLabels = config.htmlLabels;\n let PADDING = config.er?.diagramPadding ?? 10;\n let TEXT_PADDING = config.er?.entityPadding ?? 6;\n const { cssStyles } = node;\n const { labelStyles, nodeStyles } = styles2String(node);\n if (entityNode.attributes.length === 0 && node.label) {\n const options2 = {\n rx: 0,\n ry: 0,\n labelPaddingX: PADDING,\n labelPaddingY: PADDING * 1.5,\n classes: \"\"\n };\n if (calculateTextWidth(node.label, config) + options2.labelPaddingX * 2 < config.er.minEntityWidth) {\n node.width = config.er.minEntityWidth;\n }\n const shapeSvg2 = await drawRect(parent, node, options2);\n if (theme != null && COLOR_THEMES.has(theme)) {\n const colorIndex = entityNode.colorIndex ?? 0;\n shapeSvg2.attr(\"data-color-id\", `color-${colorIndex % borderColorArray.length}`);\n }\n if (!evaluate(config.htmlLabels)) {\n const textElement = shapeSvg2.select(\"text\");\n const bbox = textElement.node()?.getBBox();\n textElement.attr(\"transform\", `translate(${-bbox.width / 2}, 0)`);\n }\n return shapeSvg2;\n }\n if (!config.htmlLabels) {\n PADDING *= 1.25;\n TEXT_PADDING *= 1.25;\n }\n let cssClasses = getNodeClasses(node);\n if (!cssClasses) {\n cssClasses = \"node default\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const nameBBox = await addText(shapeSvg, node.label ?? \"\", config, 0, 0, [\"name\"], labelStyles);\n nameBBox.height += TEXT_PADDING;\n let yOffset = 0;\n const yOffsets = [];\n const rows = [];\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeysWidth = 0;\n let maxCommentWidth = 0;\n let keysPresent = true;\n let commentPresent = true;\n for (const attribute of entityNode.attributes) {\n const typeBBox = await addText(\n shapeSvg,\n attribute.type,\n config,\n 0,\n yOffset,\n [\"attribute-type\"],\n labelStyles\n );\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n const nameBBox2 = await addText(\n shapeSvg,\n attribute.name,\n config,\n 0,\n yOffset,\n [\"attribute-name\"],\n labelStyles\n );\n maxNameWidth = Math.max(maxNameWidth, nameBBox2.width + PADDING);\n const keysBBox = await addText(\n shapeSvg,\n attribute.keys.join(),\n config,\n 0,\n yOffset,\n [\"attribute-keys\"],\n labelStyles\n );\n maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n const commentBBox = await addText(\n shapeSvg,\n attribute.comment,\n config,\n 0,\n yOffset,\n [\"attribute-comment\"],\n labelStyles\n );\n maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n const rowHeight = Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING;\n rows.push({ yOffset, rowHeight });\n yOffset += rowHeight;\n }\n let totalWidthSections = 4;\n if (maxKeysWidth <= PADDING) {\n keysPresent = false;\n maxKeysWidth = 0;\n totalWidthSections--;\n }\n if (maxCommentWidth <= PADDING) {\n commentPresent = false;\n maxCommentWidth = 0;\n totalWidthSections--;\n }\n const shapeBBox = shapeSvg.node().getBBox();\n if (nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) > 0) {\n const difference = nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n maxTypeWidth += difference / totalWidthSections;\n maxNameWidth += difference / totalWidthSections;\n if (maxKeysWidth > 0) {\n maxKeysWidth += difference / totalWidthSections;\n }\n if (maxCommentWidth > 0) {\n maxCommentWidth += difference / totalWidthSections;\n }\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n const rc = rough54.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let totalShapeBBoxHeight = 0;\n if (rows.length > 0) {\n totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0);\n }\n const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0);\n const x = -w / 2;\n const y = -h / 2;\n shapeSvg.selectAll(\"g:not(:first-child)\").each((_, i, nodes) => {\n const text2 = select4(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n if (text2.attr(\"class\").includes(\"attribute-name\")) {\n translateX += maxTypeWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-keys\")) {\n translateX += maxTypeWidth + maxNameWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-comment\")) {\n translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n }\n }\n }\n text2.attr(\n \"transform\",\n `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n );\n });\n shapeSvg.select(\".name\").attr(\"transform\", \"translate(\" + -nameBBox.width / 2 + \", \" + (y + TEXT_PADDING / 2) + \")\");\n if (theme != null && COLOR_THEMES.has(theme)) {\n const colorIndex = entityNode.colorIndex ?? 0;\n shapeSvg.attr(\"data-color-id\", `color-${colorIndex % borderColorArray.length}`);\n }\n const roughRect = rc.rectangle(x, y, w, h, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\").attr(\"class\", \"outer-path\").attr(\"style\", cssStyles.join(\"\"));\n yOffsets.push(0);\n for (const [i, row] of rows.entries()) {\n const contentRowIndex = i + 1;\n const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0;\n const roughRect2 = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, {\n ...options,\n fill: isEven ? rowEven : rowOdd,\n stroke: nodeBorder\n });\n shapeSvg.insert(() => roughRect2, \"g.label\").attr(\"style\", cssStyles.join(\"\")).attr(\"class\", `row-rect-${isEven ? \"even\" : \"odd\"}`);\n }\n const thickness = 1e-4;\n let points = lineToPolygon(x, nameBBox.height + y, w + x, nameBBox.height + y, thickness);\n let roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n points = lineToPolygon(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n if (keysPresent) {\n const xCoord = maxTypeWidth + maxNameWidth + x;\n points = lineToPolygon(xCoord, nameBBox.height + y, xCoord, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n if (commentPresent) {\n const xCoord = maxTypeWidth + maxNameWidth + maxKeysWidth + x;\n points = lineToPolygon(xCoord, nameBBox.height + y, xCoord, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n for (const yOffset2 of yOffsets) {\n const yCoord = nameBBox.height + y + yOffset2;\n points = lineToPolygon(x, yCoord, w + x, yCoord, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n if (nodeStyles && node.look !== \"handDrawn\") {\n if (theme != null && REDUX_THEMES.has(theme)) {\n shapeSvg.selectAll(\"path\").attr(\"style\", nodeStyles);\n } else {\n const allStyle = nodeStyles.split(\";\");\n const strokeStyles = allStyle?.filter((e) => {\n return e.includes(\"stroke\");\n })?.map((s) => `${s}`).join(\"; \");\n shapeSvg.selectAll(\"path\").attr(\"style\", strokeStyles ?? \"\");\n shapeSvg.selectAll(\".row-rect-even path\").attr(\"style\", nodeStyles);\n }\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(erBox, \"erBox\");\nasync function addText(shapeSvg, labelText, config, translateX = 0, translateY = 0, classes = [], style = \"\") {\n const label = shapeSvg.insert(\"g\").attr(\"class\", `label ${classes.join(\" \")}`).attr(\"transform\", `translate(${translateX}, ${translateY})`).attr(\"style\", style);\n if (labelText !== parseGenericTypes(labelText)) {\n labelText = parseGenericTypes(labelText);\n labelText = labelText.replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\");\n }\n const text2 = label.node().appendChild(\n await createText(\n label,\n labelText,\n {\n width: calculateTextWidth(labelText, config) + 100,\n style,\n useHtmlLabels: config.htmlLabels\n },\n config\n )\n );\n if (labelText.includes(\"&lt;\") || labelText.includes(\"&gt;\")) {\n let child = text2.children[0];\n child.textContent = child.textContent.replaceAll(\"&lt;\", \"<\").replaceAll(\"&gt;\", \">\");\n while (child.childNodes[0]) {\n child = child.childNodes[0];\n child.textContent = child.textContent.replaceAll(\"&lt;\", \"<\").replaceAll(\"&gt;\", \">\");\n }\n }\n let bbox = text2.getBBox();\n if (evaluate(config.htmlLabels)) {\n const div = text2.children[0];\n div.style.textAlign = \"start\";\n const dv = select4(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n return bbox;\n}\n__name(addText, \"addText\");\nfunction lineToPolygon(x1, y1, x2, y2, thickness) {\n if (x1 === x2) {\n return [\n { x: x1 - thickness / 2, y: y1 },\n { x: x1 + thickness / 2, y: y1 },\n { x: x2 + thickness / 2, y: y2 },\n { x: x2 - thickness / 2, y: y2 }\n ];\n }\n return [\n { x: x1, y: y1 - thickness / 2 },\n { x: x1, y: y1 + thickness / 2 },\n { x: x2, y: y2 + thickness / 2 },\n { x: x2, y: y2 - thickness / 2 }\n ];\n}\n__name(lineToPolygon, \"lineToPolygon\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select6 } from \"d3\";\nimport rough55 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select5 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText2(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n await addText2(labelGroup, node, 0, [\"font-weight: bolder\"]);\n const labelGroupBBox = labelGroup.node().getBBox();\n labelGroupHeight = labelGroupBBox.height;\n membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText2(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node().getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText2(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n let bbox = shapeSvg.node().getBBox();\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n }\n labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n bbox = shapeSvg.node().getBBox();\n membersGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node().getBBox();\n methodsGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n bbox = shapeSvg.node().getBBox();\n return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText2(parentGroup, node, yOffset, styles = []) {\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n const config = getConfig();\n let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n let textContent = \"\";\n if (\"text\" in node) {\n textContent = node.text;\n } else {\n textContent = node.label;\n }\n if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n textContent = textContent.substring(1);\n }\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n if (!useHtmlLabels) {\n if (styles.includes(\"font-weight: bolder\")) {\n select5(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n }\n numberOfLines = text2.children.length;\n const textChild = text2.children[0];\n if (text2.textContent === \"\" || text2.textContent.includes(\"&gt\")) {\n textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\"&gt;\", \">\").replaceAll(\"&lt;\", \"<\").trim();\n const preserveSpace = textContent[1] === \" \";\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n }\n }\n if (textChild.textContent === \"undefined\") {\n textChild.textContent = \"\";\n }\n bbox = text2.getBBox();\n } else {\n const div = text2.children[0];\n const dv = select5(text2);\n numberOfLines = div.innerHTML.split(\"<br>\").length;\n if (div.innerHTML.includes(\"</math>\")) {\n numberOfLines += div.innerHTML.split(\"<mrow>\").length - 1;\n }\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = textContent.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", \"translate(0,\" + (-bbox.height / (2 * numberOfLines) + yOffset) + \")\");\n return bbox.height;\n}\n__name(addText2, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nasync function classBox(parent, node) {\n const config = getConfig2();\n const { themeVariables } = config;\n const { useGradient } = themeVariables;\n const PADDING = config.class.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n const classNode = node;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.cssStyles = classNode.styles || \"\";\n const styles = classNode.styles?.join(\";\") || nodeStyles || \"\";\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll(\"!important\", \"\").split(\";\");\n }\n const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config.class?.hideEmptyMembersBox;\n const rc = rough55.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const w = Math.max(node.width ?? 0, bbox.width);\n let h = Math.max(node.height ?? 0, bbox.height);\n const nodeHeightGreater = (node.height ?? 0) > bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n const x = -w / 2;\n const y = -h / 2;\n let extraHeight = renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0;\n if (nodeHeightGreater) {\n extraHeight = PADDING * 2;\n }\n const roughRect = rc.rectangle(\n x - PADDING,\n y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0),\n w + 2 * PADDING,\n h + 2 * PADDING + extraHeight,\n options\n );\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container outer-path\");\n const rectBBox = rect2.node().getBBox();\n const annotationGroupHeight = shapeSvg.select(\".annotation-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight = shapeSvg.select(\".label-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight = shapeSvg.select(\".members-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const methodsAreaPlacement = (annotationGroupHeight + labelGroupHeight + y + PADDING - (y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0))) / 2;\n shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n const text2 = select6(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n let newTranslateY = translateY + y + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0);\n if (text2.attr(\"class\").includes(\"methods-group\")) {\n const membersGroupHeightForMethods = Math.max(membersGroupHeight, GAP / 2);\n if (nodeHeightGreater) {\n newTranslateY = Math.max(\n methodsAreaPlacement,\n annotationGroupHeight + labelGroupHeight + membersGroupHeightForMethods + y + GAP * 2 + PADDING\n ) + GAP * 2;\n } else {\n newTranslateY = annotationGroupHeight + labelGroupHeight + membersGroupHeightForMethods + y + GAP * 4 + PADDING;\n }\n }\n if (classNode.members.length === 0 && classNode.methods.length === 0 && config.class?.hideEmptyMembersBox) {\n if (classNode.annotations.length > 0) {\n newTranslateY = translateY - GAP;\n } else {\n newTranslateY = translateY;\n }\n }\n if (!useHtmlLabels) {\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (text2.attr(\"class\").includes(\"label-group\") || text2.attr(\"class\").includes(\"annotation-group\")) {\n newTranslateX = -text2.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll(\"text\").each(function(_2, i2, nodes2) {\n if (window.getComputedStyle(nodes2[i2]).textAnchor === \"middle\") {\n newTranslateX = 0;\n }\n });\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY})`);\n });\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const firstLineY = annotationGroupHeight + labelGroupHeight + y + PADDING;\n const roughLine = rc.line(\n rectBBox.x,\n firstLineY,\n rectBBox.x + rectBBox.width,\n firstLineY + 1e-3,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", `divider${node.look === \"neo\" && !useGradient ? \" neo-line\" : \"\"}`).attr(\"style\", styles);\n }\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const secondLineY = annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING;\n const roughLine = rc.line(\n rectBBox.x,\n nodeHeightGreater ? Math.max(methodsAreaPlacement, secondLineY) : secondLineY,\n rectBBox.x + rectBBox.width,\n (nodeHeightGreater ? Math.max(methodsAreaPlacement, secondLineY) : secondLineY) + 1e-3,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", `divider${node.look === \"neo\" && !useGradient ? \" neo-line\" : \"\"}`).attr(\"style\", styles);\n }\n if (classNode.look !== \"handDrawn\") {\n shapeSvg.selectAll(\"path\").attr(\"style\", styles);\n }\n rect2.select(\":nth-child(2)\").attr(\"style\", styles);\n shapeSvg.selectAll(\".divider\").select(\"path\").attr(\"style\", styles);\n if (node.labelStyle) {\n shapeSvg.selectAll(\"span\").attr(\"style\", node.labelStyle);\n } else {\n shapeSvg.selectAll(\"span\").attr(\"style\", styles);\n }\n if (!useHtmlLabels) {\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n } else if (labelStyles) {\n const match2 = colorRegex.exec(labelStyles);\n if (match2) {\n const colorStyle = match2[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n }\n }\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(classBox, \"classBox\");\n\n// src/rendering-util/rendering-elements/shapes/requirementBox.ts\nimport rough56 from \"roughjs\";\nimport { select as select7 } from \"d3\";\nasync function requirementBox(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const requirementNode = node;\n const elementNode = node;\n const padding = 20;\n const gap = 20;\n const isRequirementNode = \"verifyMethod\" in node;\n const classes = getNodeClasses(node);\n const { themeVariables } = getConfig2();\n const { borderColorArray, requirementEdgeLabelBackground } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId ?? node.id);\n let typeHeight;\n if (isRequirementNode) {\n typeHeight = await addText3(\n shapeSvg,\n `&lt;&lt;${requirementNode.type}&gt;&gt;`,\n 0,\n node.labelStyle\n );\n } else {\n typeHeight = await addText3(shapeSvg, \"&lt;&lt;Element&gt;&gt;\", 0, node.labelStyle);\n }\n let accumulativeHeight = typeHeight;\n const nameHeight = await addText3(\n shapeSvg,\n requirementNode.name,\n accumulativeHeight,\n node.labelStyle + \"; font-weight: bold;\"\n );\n accumulativeHeight += nameHeight + gap;\n if (isRequirementNode) {\n const idHeight = await addText3(\n shapeSvg,\n `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += idHeight;\n const textHeight = await addText3(\n shapeSvg,\n `${requirementNode.text ? `Text: ${requirementNode.text}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += textHeight;\n const riskHeight = await addText3(\n shapeSvg,\n `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += riskHeight;\n await addText3(\n shapeSvg,\n `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n } else {\n const typeHeight2 = await addText3(\n shapeSvg,\n `${elementNode.type ? `Type: ${elementNode.type}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += typeHeight2;\n await addText3(\n shapeSvg,\n `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n }\n const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rc = rough56.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container outer-path\").attr(\"style\", nodeStyles);\n if (borderColorArray?.length) {\n const colorIndex = node.colorIndex ?? 0;\n shapeSvg.attr(\"data-color-id\", `color-${colorIndex % borderColorArray.length}`);\n }\n shapeSvg.selectAll(\".label\").each((_, i, nodes) => {\n const text2 = select7(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n }\n }\n const newTranslateY = translateY - totalHeight / 2;\n let newTranslateX = x + padding / 2;\n if (i === 0 || i === 1) {\n newTranslateX = translateX;\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY + padding})`);\n });\n if (accumulativeHeight > typeHeight + nameHeight + gap) {\n const lineY = y + typeHeight + nameHeight + gap;\n let roughLine;\n if (node.look === \"neo\") {\n const thickness = 1e-3;\n const polygonPoints = [\n [x, lineY],\n [x + totalWidth, lineY],\n [x + totalWidth, lineY + thickness],\n [x, lineY + thickness]\n ];\n roughLine = rc.polygon(polygonPoints, options);\n } else {\n roughLine = rc.line(x, lineY, x + totalWidth, lineY, options);\n }\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n if (nodeStyles && node.look !== \"handDrawn\" && (requirementEdgeLabelBackground || borderColorArray?.length)) {\n shapeSvg.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n return shapeSvg;\n}\n__name(requirementBox, \"requirementBox\");\nasync function addText3(parentGroup, inputText, yOffset, style = \"\") {\n if (inputText === \"\") {\n return 0;\n }\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", style);\n const config = getConfig2();\n const useHtmlLabels = config.htmlLabels ?? true;\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(inputText)),\n {\n width: calculateTextWidth(inputText, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels,\n style\n },\n config\n );\n let bbox;\n if (!useHtmlLabels) {\n const textChild = text2.children[0];\n for (const child of textChild.children) {\n if (style) {\n child.setAttribute(\"style\", style);\n }\n }\n bbox = text2.getBBox();\n bbox.height += 6;\n } else {\n const div = text2.children[0];\n const dv = select7(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n return bbox.height;\n}\n__name(addText3, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/kanbanItem.ts\nimport rough57 from \"roughjs\";\nvar colorFromPriority = /* @__PURE__ */ __name((priority) => {\n switch (priority) {\n case \"Very High\":\n return \"red\";\n case \"High\":\n return \"orange\";\n case \"Medium\":\n return null;\n // no stroke\n case \"Low\":\n return \"blue\";\n case \"Very Low\":\n return \"lightblue\";\n }\n}, \"colorFromPriority\");\nasync function kanbanItem(parent, kanbanNode, { config }) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || \"\";\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n const {\n shapeSvg,\n bbox,\n label: labelElTitle\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n let ticketUrl = \"\";\n let link;\n if (\"ticket\" in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace(\"#TICKET#\", kanbanNode.ticket);\n link = shapeSvg.insert(\"svg:a\", \":first-child\").attr(\"class\", \"kanban-ticket-link\").attr(\"xlink:href\", ticketUrl).attr(\"target\", \"_blank\");\n }\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || \"\",\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n \"assigned\" in kanbanNode && kanbanNode.assigned || \"\",\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj - bbox.height / 2) + \")\"\n );\n labelEl.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n labelElAssigned.attr(\n \"transform\",\n \"translate(\" + (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n let rect2;\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n if (kanbanNode.look === \"handDrawn\") {\n const rc = rough57.svg(shapeSvg);\n const options2 = userNodeOverrides(kanbanNode, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", cssStyles ? cssStyles : null);\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container __APA__\").attr(\"style\", nodeStyles).attr(\"rx\", rx ?? 5).attr(\"ry\", ry ?? 5).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n const priority = \"priority\" in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append(\"line\");\n const lineX = x + 2;\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line.attr(\"x1\", lineX).attr(\"y1\", y1).attr(\"x2\", lineX).attr(\"y2\", y2).attr(\"stroke-width\", \"4\").attr(\"stroke\", colorFromPriority(priority));\n }\n }\n updateNodeBounds(kanbanNode, rect2);\n kanbanNode.height = totalHeight;\n kanbanNode.intersect = function(point) {\n return intersect_default.rect(kanbanNode, point);\n };\n return shapeSvg;\n}\n__name(kanbanItem, \"kanbanItem\");\n\n// src/rendering-util/rendering-elements/shapes/bang.ts\nimport rough58 from \"roughjs\";\nasync function bang(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 10 * halfPadding;\n const h = bbox.height + 8 * halfPadding;\n const r = 0.15 * w;\n const { cssStyles } = node;\n const minWidth = bbox.width + 20;\n const minHeight = bbox.height + 20;\n const effectiveWidth = Math.max(w, minWidth);\n const effectiveHeight = Math.max(h, minHeight);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n let bangElem;\n const path = `M0 0 \n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1}\n\n a${r},${r} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough58.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n bangElem = shapeSvg.insert(() => roughNode, \":first-child\");\n bangElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n bangElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n bangElem.attr(\"transform\", `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`);\n updateNodeBounds(node, bangElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Bang intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(bang, \"bang\");\n\n// src/rendering-util/rendering-elements/shapes/cloud.ts\nimport rough59 from \"roughjs\";\nasync function cloud(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 2 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n const { cssStyles } = node;\n let cloudElem;\n const path = `M0 0 \n a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},0\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough59.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n cloudElem = shapeSvg.insert(() => roughNode, \":first-child\");\n cloudElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n cloudElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n cloudElem.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, cloudElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Cloud intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(cloud, \"cloud\");\n\n// src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts\nasync function defaultMindmapNode(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 8 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const rd = 5;\n const rectPath = node.look === \"neo\" ? `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - rd}\n H${-w / 2}\n Z\n ` : `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - 2 * rd}\n q0,${rd} ${-rd},${rd}\n h${-(w - 2 * rd)}\n q${-rd},0 ${-rd},${-rd}\n Z\n `;\n if (!node.domId) {\n throw new Error(\n `defaultMindmapNode: node \"${node.id}\" is missing a domId \\u2014 was render.ts domId prefixing skipped?`\n );\n }\n const bg = shapeSvg.append(\"path\").attr(\"id\", node.domId).attr(\"class\", \"node-bkg node-\" + node.type).attr(\"style\", nodeStyles).attr(\"d\", rectPath);\n shapeSvg.append(\"line\").attr(\"class\", \"node-line-\").attr(\"x1\", -w / 2).attr(\"y1\", h / 2).attr(\"x2\", w / 2).attr(\"y2\", h / 2);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n shapeSvg.append(() => label.node());\n updateNodeBounds(node, bg);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(defaultMindmapNode, \"defaultMindmapNode\");\n\n// src/rendering-util/rendering-elements/shapes/mindmapCircle.ts\nasync function mindmapCircle(parent, node) {\n const options = {\n padding: node.padding ?? 0\n };\n return circle(parent, node, options);\n}\n__name(mindmapCircle, \"mindmapCircle\");\n\n// src/rendering-util/rendering-elements/shapes.ts\nvar shapesDefs = [\n {\n semanticName: \"Process\",\n name: \"Rectangle\",\n shortName: \"rect\",\n description: \"Standard process shape\",\n aliases: [\"proc\", \"process\", \"rectangle\"],\n internalAliases: [\"squareRect\"],\n handler: squareRect2\n },\n {\n semanticName: \"Event\",\n name: \"Rounded Rectangle\",\n shortName: \"rounded\",\n description: \"Represents an event\",\n aliases: [\"event\"],\n internalAliases: [\"roundedRect\"],\n handler: roundedRect\n },\n {\n semanticName: \"Terminal Point\",\n name: \"Stadium\",\n shortName: \"stadium\",\n description: \"Terminal point\",\n aliases: [\"terminal\", \"pill\"],\n handler: stadium\n },\n {\n semanticName: \"Subprocess\",\n name: \"Framed Rectangle\",\n shortName: \"fr-rect\",\n description: \"Subprocess\",\n aliases: [\"subprocess\", \"subproc\", \"framed-rectangle\", \"subroutine\"],\n handler: subroutine\n },\n {\n semanticName: \"Database\",\n name: \"Cylinder\",\n shortName: \"cyl\",\n description: \"Database storage\",\n aliases: [\"db\", \"database\", \"cylinder\"],\n handler: cylinder\n },\n {\n semanticName: \"Start\",\n name: \"Circle\",\n shortName: \"circle\",\n description: \"Starting point\",\n aliases: [\"circ\"],\n handler: circle\n },\n {\n semanticName: \"Bang\",\n name: \"Bang\",\n shortName: \"bang\",\n description: \"Bang\",\n aliases: [\"bang\"],\n handler: bang\n },\n {\n semanticName: \"Cloud\",\n name: \"Cloud\",\n shortName: \"cloud\",\n description: \"cloud\",\n aliases: [\"cloud\"],\n handler: cloud\n },\n {\n semanticName: \"Decision\",\n name: \"Diamond\",\n shortName: \"diam\",\n description: \"Decision-making step\",\n aliases: [\"decision\", \"diamond\", \"question\"],\n handler: question\n },\n {\n semanticName: \"Prepare Conditional\",\n name: \"Hexagon\",\n shortName: \"hex\",\n description: \"Preparation or condition step\",\n aliases: [\"hexagon\", \"prepare\"],\n handler: hexagon\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Right\",\n shortName: \"lean-r\",\n description: \"Represents input or output\",\n aliases: [\"lean-right\", \"in-out\"],\n internalAliases: [\"lean_right\"],\n handler: lean_right\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Left\",\n shortName: \"lean-l\",\n description: \"Represents output or input\",\n aliases: [\"lean-left\", \"out-in\"],\n internalAliases: [\"lean_left\"],\n handler: lean_left\n },\n {\n semanticName: \"Priority Action\",\n name: \"Trapezoid Base Bottom\",\n shortName: \"trap-b\",\n description: \"Priority action\",\n aliases: [\"priority\", \"trapezoid-bottom\", \"trapezoid\"],\n handler: trapezoid\n },\n {\n semanticName: \"Manual Operation\",\n name: \"Trapezoid Base Top\",\n shortName: \"trap-t\",\n description: \"Represents a manual task\",\n aliases: [\"manual\", \"trapezoid-top\", \"inv-trapezoid\"],\n internalAliases: [\"inv_trapezoid\"],\n handler: inv_trapezoid\n },\n {\n semanticName: \"Stop\",\n name: \"Double Circle\",\n shortName: \"dbl-circ\",\n description: \"Represents a stop point\",\n aliases: [\"double-circle\"],\n internalAliases: [\"doublecircle\"],\n handler: doublecircle\n },\n {\n semanticName: \"Text Block\",\n name: \"Text Block\",\n shortName: \"text\",\n description: \"Text block\",\n handler: text\n },\n {\n semanticName: \"Card\",\n name: \"Notched Rectangle\",\n shortName: \"notch-rect\",\n description: \"Represents a card\",\n aliases: [\"card\", \"notched-rectangle\"],\n handler: card\n },\n {\n semanticName: \"Lined/Shaded Process\",\n name: \"Lined Rectangle\",\n shortName: \"lin-rect\",\n description: \"Lined process shape\",\n aliases: [\"lined-rectangle\", \"lined-process\", \"lin-proc\", \"shaded-process\"],\n handler: shadedProcess\n },\n {\n semanticName: \"Start\",\n name: \"Small Circle\",\n shortName: \"sm-circ\",\n description: \"Small starting point\",\n aliases: [\"start\", \"small-circle\"],\n internalAliases: [\"stateStart\"],\n handler: stateStart\n },\n {\n semanticName: \"Stop\",\n name: \"Framed Circle\",\n shortName: \"fr-circ\",\n description: \"Stop point\",\n aliases: [\"stop\", \"framed-circle\"],\n internalAliases: [\"stateEnd\"],\n handler: stateEnd\n },\n {\n semanticName: \"Fork/Join\",\n name: \"Filled Rectangle\",\n shortName: \"fork\",\n description: \"Fork or join in process flow\",\n aliases: [\"join\"],\n internalAliases: [\"forkJoin\"],\n handler: forkJoin\n },\n {\n semanticName: \"Collate\",\n name: \"Hourglass\",\n shortName: \"hourglass\",\n description: \"Represents a collate operation\",\n aliases: [\"hourglass\", \"collate\"],\n handler: hourglass\n },\n {\n semanticName: \"Comment\",\n name: \"Curly Brace\",\n shortName: \"brace\",\n description: \"Adds a comment\",\n aliases: [\"comment\", \"brace-l\"],\n handler: curlyBraceLeft\n },\n {\n semanticName: \"Comment Right\",\n name: \"Curly Brace\",\n shortName: \"brace-r\",\n description: \"Adds a comment\",\n handler: curlyBraceRight\n },\n {\n semanticName: \"Comment with braces on both sides\",\n name: \"Curly Braces\",\n shortName: \"braces\",\n description: \"Adds a comment\",\n handler: curlyBraces\n },\n {\n semanticName: \"Com Link\",\n name: \"Lightning Bolt\",\n shortName: \"bolt\",\n description: \"Communication link\",\n aliases: [\"com-link\", \"lightning-bolt\"],\n handler: lightningBolt\n },\n {\n semanticName: \"Document\",\n name: \"Document\",\n shortName: \"doc\",\n description: \"Represents a document\",\n aliases: [\"doc\", \"document\"],\n handler: waveEdgedRectangle\n },\n {\n semanticName: \"Delay\",\n name: \"Half-Rounded Rectangle\",\n shortName: \"delay\",\n description: \"Represents a delay\",\n aliases: [\"half-rounded-rectangle\"],\n handler: halfRoundedRectangle\n },\n {\n semanticName: \"Direct Access Storage\",\n name: \"Horizontal Cylinder\",\n shortName: \"h-cyl\",\n description: \"Direct access storage\",\n aliases: [\"das\", \"horizontal-cylinder\"],\n handler: tiltedCylinder\n },\n {\n semanticName: \"Disk Storage\",\n name: \"Lined Cylinder\",\n shortName: \"lin-cyl\",\n description: \"Disk storage\",\n aliases: [\"disk\", \"lined-cylinder\"],\n handler: linedCylinder\n },\n {\n semanticName: \"Display\",\n name: \"Curved Trapezoid\",\n shortName: \"curv-trap\",\n description: \"Represents a display\",\n aliases: [\"curved-trapezoid\", \"display\"],\n handler: curvedTrapezoid\n },\n {\n semanticName: \"Divided Process\",\n name: \"Divided Rectangle\",\n shortName: \"div-rect\",\n description: \"Divided process shape\",\n aliases: [\"div-proc\", \"divided-rectangle\", \"divided-process\"],\n handler: dividedRectangle\n },\n {\n semanticName: \"Extract\",\n name: \"Triangle\",\n shortName: \"tri\",\n description: \"Extraction process\",\n aliases: [\"extract\", \"triangle\"],\n handler: triangle\n },\n {\n semanticName: \"Internal Storage\",\n name: \"Window Pane\",\n shortName: \"win-pane\",\n description: \"Internal storage\",\n aliases: [\"internal-storage\", \"window-pane\"],\n handler: windowPane\n },\n {\n semanticName: \"Junction\",\n name: \"Filled Circle\",\n shortName: \"f-circ\",\n description: \"Junction point\",\n aliases: [\"junction\", \"filled-circle\"],\n handler: filledCircle\n },\n {\n semanticName: \"Loop Limit\",\n name: \"Trapezoidal Pentagon\",\n shortName: \"notch-pent\",\n description: \"Loop limit step\",\n aliases: [\"loop-limit\", \"notched-pentagon\"],\n handler: trapezoidalPentagon\n },\n {\n semanticName: \"Manual File\",\n name: \"Flipped Triangle\",\n shortName: \"flip-tri\",\n description: \"Manual file operation\",\n aliases: [\"manual-file\", \"flipped-triangle\"],\n handler: flippedTriangle\n },\n {\n semanticName: \"Manual Input\",\n name: \"Sloped Rectangle\",\n shortName: \"sl-rect\",\n description: \"Manual input step\",\n aliases: [\"manual-input\", \"sloped-rectangle\"],\n handler: slopedRect\n },\n {\n semanticName: \"Multi-Document\",\n name: \"Stacked Document\",\n shortName: \"docs\",\n description: \"Multiple documents\",\n aliases: [\"documents\", \"st-doc\", \"stacked-document\"],\n handler: multiWaveEdgedRectangle\n },\n {\n semanticName: \"Multi-Process\",\n name: \"Stacked Rectangle\",\n shortName: \"st-rect\",\n description: \"Multiple processes\",\n aliases: [\"procs\", \"processes\", \"stacked-rectangle\"],\n handler: multiRect\n },\n {\n semanticName: \"Stored Data\",\n name: \"Bow Tie Rectangle\",\n shortName: \"bow-rect\",\n description: \"Stored data\",\n aliases: [\"stored-data\", \"bow-tie-rectangle\"],\n handler: bowTieRect\n },\n {\n semanticName: \"Summary\",\n name: \"Crossed Circle\",\n shortName: \"cross-circ\",\n description: \"Summary\",\n aliases: [\"summary\", \"crossed-circle\"],\n handler: crossedCircle\n },\n {\n semanticName: \"Tagged Document\",\n name: \"Tagged Document\",\n shortName: \"tag-doc\",\n description: \"Tagged document\",\n aliases: [\"tag-doc\", \"tagged-document\"],\n handler: taggedWaveEdgedRectangle\n },\n {\n semanticName: \"Tagged Process\",\n name: \"Tagged Rectangle\",\n shortName: \"tag-rect\",\n description: \"Tagged process\",\n aliases: [\"tagged-rectangle\", \"tag-proc\", \"tagged-process\"],\n handler: taggedRect\n },\n {\n semanticName: \"Paper Tape\",\n name: \"Flag\",\n shortName: \"flag\",\n description: \"Paper tape\",\n aliases: [\"paper-tape\"],\n handler: waveRectangle\n },\n {\n semanticName: \"Odd\",\n name: \"Odd\",\n shortName: \"odd\",\n description: \"Odd shape\",\n internalAliases: [\"rect_left_inv_arrow\"],\n handler: rect_left_inv_arrow\n },\n {\n semanticName: \"Lined Document\",\n name: \"Lined Document\",\n shortName: \"lin-doc\",\n description: \"Lined document\",\n aliases: [\"lined-document\"],\n handler: linedWaveEdgedRect\n }\n];\nvar generateShapeMap = /* @__PURE__ */ __name(() => {\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n // Rectangles\n rectWithTitle,\n labelRect,\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n // Kanban diagram\n kanbanItem,\n //Mindmap diagram\n mindmapCircle,\n defaultMindmapNode,\n // class diagram\n classBox,\n // er diagram\n erBox,\n // Requirement diagram\n requirementBox\n };\n const entries = [\n ...Object.entries(undocumentedShapes),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...\"aliases\" in shape ? shape.aliases : [],\n ...\"internalAliases\" in shape ? shape.internalAliases : []\n ];\n return aliases.map((alias) => [alias, shape.handler]);\n })\n ];\n return Object.fromEntries(entries);\n}, \"generateShapeMap\");\nvar shapes2 = generateShapeMap();\nfunction isValidShape(shape) {\n return shape in shapes2;\n}\n__name(isValidShape, \"isValidShape\");\n\n// src/rendering-util/rendering-elements/nodes.ts\nvar nodeElems = /* @__PURE__ */ new Map();\nasync function insertNode(elem, node, renderOptions) {\n let newEl;\n let el;\n if (node.shape === \"rect\") {\n if (node.rx && node.ry) {\n node.shape = \"roundedRect\";\n } else {\n node.shape = \"squareRect\";\n }\n }\n const shapeHandler = node.shape ? shapes2[node.shape] : void 0;\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n if (node.link) {\n let target;\n if (renderOptions.config.securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n newEl.attr(\"data-look\", handleUndefinedAttr(node.look));\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n nodeElems.set(node.id, newEl);\n if (node.haveCallback) {\n newEl.attr(\"class\", newEl.attr(\"class\") + \" clickable\");\n }\n return newEl;\n}\n__name(insertNode, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n nodeElems.set(node.id, elem);\n}, \"setNodeElem\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n nodeElems.clear();\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems.get(node.id);\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\nexport {\n labelHelper,\n updateNodeBounds,\n createLabel_default,\n isValidShape,\n insertCluster,\n clear,\n insertNode,\n setNodeElem,\n clear2,\n positionNode\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }