@copilotkitnext/react 0.0.22-alpha.7 → 0.0.22-alpha.8

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 (236) hide show
  1. package/package.json +4 -4
  2. package/dist/KaTeX_AMS-Regular-CYEKBG2K.woff +0 -0
  3. package/dist/KaTeX_AMS-Regular-JKX5W2C4.ttf +0 -0
  4. package/dist/KaTeX_AMS-Regular-U6PRYMIZ.woff2 +0 -0
  5. package/dist/KaTeX_Caligraphic-Bold-5QL5CMTE.woff2 +0 -0
  6. package/dist/KaTeX_Caligraphic-Bold-WZ3QSGD3.woff +0 -0
  7. package/dist/KaTeX_Caligraphic-Bold-ZTS3R3HK.ttf +0 -0
  8. package/dist/KaTeX_Caligraphic-Regular-3LKEU76G.woff +0 -0
  9. package/dist/KaTeX_Caligraphic-Regular-A7XRTZ5Q.ttf +0 -0
  10. package/dist/KaTeX_Caligraphic-Regular-KX5MEWCF.woff2 +0 -0
  11. package/dist/KaTeX_Fraktur-Bold-2QVFK6NQ.woff2 +0 -0
  12. package/dist/KaTeX_Fraktur-Bold-T4SWXBMT.woff +0 -0
  13. package/dist/KaTeX_Fraktur-Bold-WGHVTYOR.ttf +0 -0
  14. package/dist/KaTeX_Fraktur-Regular-2PEIFJSJ.woff2 +0 -0
  15. package/dist/KaTeX_Fraktur-Regular-5U4OPH2X.ttf +0 -0
  16. package/dist/KaTeX_Fraktur-Regular-PQMHCIK6.woff +0 -0
  17. package/dist/KaTeX_Main-Bold-2GA4IZIN.woff +0 -0
  18. package/dist/KaTeX_Main-Bold-W5FBVCZM.ttf +0 -0
  19. package/dist/KaTeX_Main-Bold-YP5VVQRP.woff2 +0 -0
  20. package/dist/KaTeX_Main-BoldItalic-4P4C7HJH.woff +0 -0
  21. package/dist/KaTeX_Main-BoldItalic-N4V3DX7S.woff2 +0 -0
  22. package/dist/KaTeX_Main-BoldItalic-ODMLBJJQ.ttf +0 -0
  23. package/dist/KaTeX_Main-Italic-I43T2HSR.ttf +0 -0
  24. package/dist/KaTeX_Main-Italic-RELBIK7M.woff2 +0 -0
  25. package/dist/KaTeX_Main-Italic-SASNQFN2.woff +0 -0
  26. package/dist/KaTeX_Main-Regular-ARRPAO67.woff2 +0 -0
  27. package/dist/KaTeX_Main-Regular-P5I74A2A.woff +0 -0
  28. package/dist/KaTeX_Main-Regular-W74P5G27.ttf +0 -0
  29. package/dist/KaTeX_Math-BoldItalic-6EBV3DK5.woff +0 -0
  30. package/dist/KaTeX_Math-BoldItalic-K4WTGH3J.woff2 +0 -0
  31. package/dist/KaTeX_Math-BoldItalic-VB447A4D.ttf +0 -0
  32. package/dist/KaTeX_Math-Italic-6KGCHLFN.woff2 +0 -0
  33. package/dist/KaTeX_Math-Italic-KKK3USB2.woff +0 -0
  34. package/dist/KaTeX_Math-Italic-SON4MRCA.ttf +0 -0
  35. package/dist/KaTeX_SansSerif-Bold-RRNVJFFW.woff2 +0 -0
  36. package/dist/KaTeX_SansSerif-Bold-STQ6RXC7.ttf +0 -0
  37. package/dist/KaTeX_SansSerif-Bold-X5M5EMOD.woff +0 -0
  38. package/dist/KaTeX_SansSerif-Italic-HMPFTM52.woff2 +0 -0
  39. package/dist/KaTeX_SansSerif-Italic-PSN4QKYX.woff +0 -0
  40. package/dist/KaTeX_SansSerif-Italic-WTBAZBGY.ttf +0 -0
  41. package/dist/KaTeX_SansSerif-Regular-2TL3USAE.ttf +0 -0
  42. package/dist/KaTeX_SansSerif-Regular-OQCII6EP.woff +0 -0
  43. package/dist/KaTeX_SansSerif-Regular-XIQ62X4E.woff2 +0 -0
  44. package/dist/KaTeX_Script-Regular-72OLXYNA.ttf +0 -0
  45. package/dist/KaTeX_Script-Regular-A5IFOEBS.woff +0 -0
  46. package/dist/KaTeX_Script-Regular-APUWIHLP.woff2 +0 -0
  47. package/dist/KaTeX_Size1-Regular-4HRHTS65.woff +0 -0
  48. package/dist/KaTeX_Size1-Regular-5LRUTBFT.woff2 +0 -0
  49. package/dist/KaTeX_Size1-Regular-7K6AASVL.ttf +0 -0
  50. package/dist/KaTeX_Size2-Regular-222HN3GT.ttf +0 -0
  51. package/dist/KaTeX_Size2-Regular-K5ZHAIS6.woff +0 -0
  52. package/dist/KaTeX_Size2-Regular-LELKET5D.woff2 +0 -0
  53. package/dist/KaTeX_Size3-Regular-TLFPAHDE.woff +0 -0
  54. package/dist/KaTeX_Size3-Regular-UFCO6WCA.ttf +0 -0
  55. package/dist/KaTeX_Size3-Regular-WQRQ47UD.woff2 +0 -0
  56. package/dist/KaTeX_Size4-Regular-7PGNVPQK.ttf +0 -0
  57. package/dist/KaTeX_Size4-Regular-CDMV7U5C.woff2 +0 -0
  58. package/dist/KaTeX_Size4-Regular-PKMWZHNC.woff +0 -0
  59. package/dist/KaTeX_Typewriter-Regular-3F5K6SQ6.ttf +0 -0
  60. package/dist/KaTeX_Typewriter-Regular-MJMFSK64.woff +0 -0
  61. package/dist/KaTeX_Typewriter-Regular-VBYJ4NRC.woff2 +0 -0
  62. package/dist/angular-html-LD6QEAZE.mjs +0 -7
  63. package/dist/angular-html-LD6QEAZE.mjs.map +0 -1
  64. package/dist/angular-ts-FGK7I2F5.mjs +0 -37
  65. package/dist/angular-ts-FGK7I2F5.mjs.map +0 -1
  66. package/dist/angular-ts-XZTE5LQS.mjs +0 -37
  67. package/dist/angular-ts-XZTE5LQS.mjs.map +0 -1
  68. package/dist/apl-VB2EG5RZ.mjs +0 -22
  69. package/dist/apl-VB2EG5RZ.mjs.map +0 -1
  70. package/dist/architectureDiagram-VXUJARFQ-PPLKSFYC.mjs +0 -8712
  71. package/dist/architectureDiagram-VXUJARFQ-PPLKSFYC.mjs.map +0 -1
  72. package/dist/blade-EZDWULER.mjs +0 -26
  73. package/dist/blade-EZDWULER.mjs.map +0 -1
  74. package/dist/blade-HS4Z7O3Y.mjs +0 -26
  75. package/dist/blade-HS4Z7O3Y.mjs.map +0 -1
  76. package/dist/blockDiagram-VD42YOAC-7SIEWHYD.mjs +0 -3618
  77. package/dist/blockDiagram-VD42YOAC-7SIEWHYD.mjs.map +0 -1
  78. package/dist/c4Diagram-YG6GDRKO-G2UUBRHQ.mjs +0 -2495
  79. package/dist/c4Diagram-YG6GDRKO-G2UUBRHQ.mjs.map +0 -1
  80. package/dist/chunk-2BAFECUC.mjs +0 -28
  81. package/dist/chunk-2BAFECUC.mjs.map +0 -1
  82. package/dist/chunk-BF5LDW2L.mjs +0 -65
  83. package/dist/chunk-BF5LDW2L.mjs.map +0 -1
  84. package/dist/chunk-BUEC2HNL.mjs +0 -762
  85. package/dist/chunk-BUEC2HNL.mjs.map +0 -1
  86. package/dist/chunk-CRGJ2YCV.mjs +0 -109
  87. package/dist/chunk-CRGJ2YCV.mjs.map +0 -1
  88. package/dist/chunk-DKZXT4VQ.mjs +0 -19
  89. package/dist/chunk-DKZXT4VQ.mjs.map +0 -1
  90. package/dist/chunk-DYQXFOGA.mjs +0 -34
  91. package/dist/chunk-DYQXFOGA.mjs.map +0 -1
  92. package/dist/chunk-ENI667QL.mjs +0 -806
  93. package/dist/chunk-ENI667QL.mjs.map +0 -1
  94. package/dist/chunk-GEUZOPED.mjs +0 -1834
  95. package/dist/chunk-GEUZOPED.mjs.map +0 -1
  96. package/dist/chunk-GU7334FJ.mjs +0 -538
  97. package/dist/chunk-GU7334FJ.mjs.map +0 -1
  98. package/dist/chunk-HNKEYT4A.mjs +0 -4693
  99. package/dist/chunk-HNKEYT4A.mjs.map +0 -1
  100. package/dist/chunk-HTMHAYGC.mjs +0 -14
  101. package/dist/chunk-HTMHAYGC.mjs.map +0 -1
  102. package/dist/chunk-JRLFMJ6U.mjs +0 -1923
  103. package/dist/chunk-JRLFMJ6U.mjs.map +0 -1
  104. package/dist/chunk-JYRND4DC.mjs +0 -22
  105. package/dist/chunk-JYRND4DC.mjs.map +0 -1
  106. package/dist/chunk-KFEPUFID.mjs +0 -52
  107. package/dist/chunk-KFEPUFID.mjs.map +0 -1
  108. package/dist/chunk-M3UH7XZX.mjs +0 -6222
  109. package/dist/chunk-M3UH7XZX.mjs.map +0 -1
  110. package/dist/chunk-ND4RYWG7.mjs +0 -12
  111. package/dist/chunk-ND4RYWG7.mjs.map +0 -1
  112. package/dist/chunk-VLSLBZME.mjs +0 -51
  113. package/dist/chunk-VLSLBZME.mjs.map +0 -1
  114. package/dist/chunk-WJBV3P3K.mjs +0 -55
  115. package/dist/chunk-WJBV3P3K.mjs.map +0 -1
  116. package/dist/chunk-X2TQ2HDS.mjs +0 -44
  117. package/dist/chunk-X2TQ2HDS.mjs.map +0 -1
  118. package/dist/chunk-YIDZOZG3.mjs +0 -103
  119. package/dist/chunk-YIDZOZG3.mjs.map +0 -1
  120. package/dist/chunk-YLW7IP7V.mjs +0 -14525
  121. package/dist/chunk-YLW7IP7V.mjs.map +0 -1
  122. package/dist/classDiagram-2ON5EDUG-WUV4PTK5.mjs +0 -38
  123. package/dist/classDiagram-2ON5EDUG-WUV4PTK5.mjs.map +0 -1
  124. package/dist/classDiagram-v2-WZHVMYZB-J4QNVYPE.mjs +0 -38
  125. package/dist/classDiagram-v2-WZHVMYZB-J4QNVYPE.mjs.map +0 -1
  126. package/dist/cobol-PNTKRG5I.mjs +0 -17
  127. package/dist/cobol-PNTKRG5I.mjs.map +0 -1
  128. package/dist/crystal-BSMHK65A.mjs +0 -23
  129. package/dist/crystal-BSMHK65A.mjs.map +0 -1
  130. package/dist/dagre-6UL2VRFP-XN667C7N.mjs +0 -710
  131. package/dist/dagre-6UL2VRFP-XN667C7N.mjs.map +0 -1
  132. package/dist/diagram-PSM6KHXK-VA2CF5LZ.mjs +0 -538
  133. package/dist/diagram-PSM6KHXK-VA2CF5LZ.mjs.map +0 -1
  134. package/dist/diagram-QEK2KX5R-H3EHES33.mjs +0 -319
  135. package/dist/diagram-QEK2KX5R-H3EHES33.mjs.map +0 -1
  136. package/dist/diagram-S2PKOQOG-FOQYPB22.mjs +0 -231
  137. package/dist/diagram-S2PKOQOG-FOQYPB22.mjs.map +0 -1
  138. package/dist/edge-JOI74UJM.mjs +0 -19
  139. package/dist/edge-JOI74UJM.mjs.map +0 -1
  140. package/dist/elixir-FEL6DDPJ.mjs +0 -15
  141. package/dist/elixir-FEL6DDPJ.mjs.map +0 -1
  142. package/dist/erDiagram-Q2GNP2WA-IXNJSD2A.mjs +0 -1175
  143. package/dist/erDiagram-Q2GNP2WA-IXNJSD2A.mjs.map +0 -1
  144. package/dist/erb-Q2D6FWX3.mjs +0 -32
  145. package/dist/erb-Q2D6FWX3.mjs.map +0 -1
  146. package/dist/flowDiagram-NV44I4VS-ISKGEBMD.mjs +0 -2349
  147. package/dist/flowDiagram-NV44I4VS-ISKGEBMD.mjs.map +0 -1
  148. package/dist/ganttDiagram-LVOFAZNH-OAL7V7IR.mjs +0 -2344
  149. package/dist/ganttDiagram-LVOFAZNH-OAL7V7IR.mjs.map +0 -1
  150. package/dist/gitGraphDiagram-NY62KEGX-RKN2CCAZ.mjs +0 -1221
  151. package/dist/gitGraphDiagram-NY62KEGX-RKN2CCAZ.mjs.map +0 -1
  152. package/dist/glimmer-js-B32LCGFA.mjs +0 -19
  153. package/dist/glimmer-js-B32LCGFA.mjs.map +0 -1
  154. package/dist/glimmer-ts-4PHFAQCG.mjs +0 -19
  155. package/dist/glimmer-ts-4PHFAQCG.mjs.map +0 -1
  156. package/dist/hack-3ZNSL4KD.mjs +0 -17
  157. package/dist/hack-3ZNSL4KD.mjs.map +0 -1
  158. package/dist/handlebars-ICBC3AZK.mjs +0 -19
  159. package/dist/handlebars-ICBC3AZK.mjs.map +0 -1
  160. package/dist/html-BGY5P773.mjs +0 -6
  161. package/dist/html-BGY5P773.mjs.map +0 -1
  162. package/dist/html-derivative-3HGXHHFE.mjs +0 -7
  163. package/dist/html-derivative-3HGXHHFE.mjs.map +0 -1
  164. package/dist/index.css +0 -2385
  165. package/dist/index.css.map +0 -1
  166. package/dist/infoDiagram-F6ZHWCRC-Z7KMJJ45.mjs +0 -49
  167. package/dist/infoDiagram-F6ZHWCRC-Z7KMJJ45.mjs.map +0 -1
  168. package/dist/jinja-WL6HNMB5.mjs +0 -22
  169. package/dist/jinja-WL6HNMB5.mjs.map +0 -1
  170. package/dist/journeyDiagram-XKPGCS4Q-BMTOBHZ4.mjs +0 -1259
  171. package/dist/journeyDiagram-XKPGCS4Q-BMTOBHZ4.mjs.map +0 -1
  172. package/dist/kanban-definition-3W4ZIXB7-MVFRARF4.mjs +0 -1062
  173. package/dist/kanban-definition-3W4ZIXB7-MVFRARF4.mjs.map +0 -1
  174. package/dist/katex-4R42CMCB.mjs +0 -4
  175. package/dist/katex-4R42CMCB.mjs.map +0 -1
  176. package/dist/liquid-YS3YPW54.mjs +0 -19
  177. package/dist/liquid-YS3YPW54.mjs.map +0 -1
  178. package/dist/logo-mark-OHF64HAY.svg +0 -8
  179. package/dist/mdc-A66KLOT4.mjs +0 -20
  180. package/dist/mdc-A66KLOT4.mjs.map +0 -1
  181. package/dist/mermaid.core-4OWTNZSL.mjs +0 -1587
  182. package/dist/mermaid.core-4OWTNZSL.mjs.map +0 -1
  183. package/dist/mermaid.core-7AUE4M6E.mjs +0 -1587
  184. package/dist/mermaid.core-7AUE4M6E.mjs.map +0 -1
  185. package/dist/mindmap-definition-VGOIOE7T-7FMA2CPY.mjs +0 -1112
  186. package/dist/mindmap-definition-VGOIOE7T-7FMA2CPY.mjs.map +0 -1
  187. package/dist/mindmap-definition-VGOIOE7T-VNF7JZOY.mjs +0 -1112
  188. package/dist/mindmap-definition-VGOIOE7T-VNF7JZOY.mjs.map +0 -1
  189. package/dist/nim-HUBKBJHZ.mjs +0 -26
  190. package/dist/nim-HUBKBJHZ.mjs.map +0 -1
  191. package/dist/perl-QHAMWWQ5.mjs +0 -22
  192. package/dist/perl-QHAMWWQ5.mjs.map +0 -1
  193. package/dist/php-FS5GKSPN.mjs +0 -11
  194. package/dist/php-FS5GKSPN.mjs.map +0 -1
  195. package/dist/pieDiagram-ADFJNKIX-EER3WTCU.mjs +0 -200
  196. package/dist/pieDiagram-ADFJNKIX-EER3WTCU.mjs.map +0 -1
  197. package/dist/pug-WTY5FMEA.mjs +0 -17
  198. package/dist/pug-WTY5FMEA.mjs.map +0 -1
  199. package/dist/quadrantDiagram-AYHSOK5B-WQCIRJOK.mjs +0 -1344
  200. package/dist/quadrantDiagram-AYHSOK5B-WQCIRJOK.mjs.map +0 -1
  201. package/dist/razor-BAB7LFWZ.mjs +0 -17
  202. package/dist/razor-BAB7LFWZ.mjs.map +0 -1
  203. package/dist/requirementDiagram-UZGBJVZJ-RVM6Q2TT.mjs +0 -1179
  204. package/dist/requirementDiagram-UZGBJVZJ-RVM6Q2TT.mjs.map +0 -1
  205. package/dist/rst-AY7U27YM.mjs +0 -41
  206. package/dist/rst-AY7U27YM.mjs.map +0 -1
  207. package/dist/rst-Y2VLYMJI.mjs +0 -41
  208. package/dist/rst-Y2VLYMJI.mjs.map +0 -1
  209. package/dist/ruby-K4BNEYWG.mjs +0 -22
  210. package/dist/ruby-K4BNEYWG.mjs.map +0 -1
  211. package/dist/sankeyDiagram-TZEHDZUN-H7BVEXGO.mjs +0 -1230
  212. package/dist/sankeyDiagram-TZEHDZUN-H7BVEXGO.mjs.map +0 -1
  213. package/dist/sequenceDiagram-WL72ISMW-XBGZSOYI.mjs +0 -3885
  214. package/dist/sequenceDiagram-WL72ISMW-XBGZSOYI.mjs.map +0 -1
  215. package/dist/soy-5QMQV2KL.mjs +0 -15
  216. package/dist/soy-5QMQV2KL.mjs.map +0 -1
  217. package/dist/stateDiagram-FKZM4ZOC-WRIBVFSJ.mjs +0 -467
  218. package/dist/stateDiagram-FKZM4ZOC-WRIBVFSJ.mjs.map +0 -1
  219. package/dist/stateDiagram-v2-4FDKWEC3-SPDO7R6D.mjs +0 -37
  220. package/dist/stateDiagram-v2-4FDKWEC3-SPDO7R6D.mjs.map +0 -1
  221. package/dist/templ-VSARRSO2.mjs +0 -17
  222. package/dist/templ-VSARRSO2.mjs.map +0 -1
  223. package/dist/timeline-definition-IT6M3QCI-PX4A2RIH.mjs +0 -1226
  224. package/dist/timeline-definition-IT6M3QCI-PX4A2RIH.mjs.map +0 -1
  225. package/dist/ts-tags-YK3Q2LIW.mjs +0 -68
  226. package/dist/ts-tags-YK3Q2LIW.mjs.map +0 -1
  227. package/dist/twig-HNMWLN6H.mjs +0 -40
  228. package/dist/twig-HNMWLN6H.mjs.map +0 -1
  229. package/dist/vue-7OSX6ZY5.mjs +0 -10
  230. package/dist/vue-7OSX6ZY5.mjs.map +0 -1
  231. package/dist/vue-html-AQH2V2EU.mjs +0 -20
  232. package/dist/vue-html-AQH2V2EU.mjs.map +0 -1
  233. package/dist/vue-vine-GCYT2IGV.mjs +0 -29
  234. package/dist/vue-vine-GCYT2IGV.mjs.map +0 -1
  235. package/dist/xychartDiagram-PRI3JC2R-65KZQZDU.mjs +0 -1865
  236. package/dist/xychartDiagram-PRI3JC2R-65KZQZDU.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/roughjs@4.6.6/node_modules/roughjs/bundled/rough.esm.js","../../../node_modules/.pnpm/mermaid@11.12.0/node_modules/mermaid/dist/chunks/mermaid.core/chunk-JZLCHNYA.mjs"],"names":["t","e","s","n","o","a","h","r","i","c","l","u","p","f","d","g","M","k","b","y","m","P","v","S","O","L","T","D","A","x","w","q","s2","_","_2","i2","y2"],"mappings":"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","file":"chunk-M3UH7XZX.mjs","sourcesContent":["function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;e<t.length-1;e++){const s=t[e],n=t[e+1];if(s[1]!==n[1]){const t=Math.min(s[1],n[1]);h.push({ymin:t,ymax:Math.max(s[1],n[1]),x:t===s[1]?s[0]:n[0],islope:(n[0]-s[0])/(n[1]-s[1])})}}if(h.sort(((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;e<h.length&&!(h[e].ymin>i);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t<r.length;t+=2){const e=t+1;if(e>=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t<c;t++){const a=p+l+t*n,r=u-h+2*Math.random()*h,i=a-h+2*Math.random()*h,c=this.helper.ellipse(r,i,o,o,e);s.push(...c.ops)}}return{type:\"fillSketch\",ops:s}}}class c{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.dashedLine(s,e)}}dashedLine(t,e){const s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach((t=>{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t<r;t++){const a=t*(s+n),h=a+s,r=[c[0]+a*Math.cos(u)+i*Math.cos(u),c[1]+a*Math.sin(u)+i*Math.sin(u)],l=[c[0]+h*Math.cos(u)+i*Math.cos(u),c[1]+h*Math.sin(u)+i*Math.sin(u)];o.push(...this.helper.doubleLineOps(r[0],r[1],l[0],l[1],e))}})),o}}class l{constructor(t){this.helper=t}fillPolygons(t,e){const s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,o=e.zigzagOffset<0?s:e.zigzagOffset,a=n(t,e=Object.assign({},e,{hachureGap:s+o}));return{type:\"fillSketch\",ops:this.zigzagLines(a,o,e)}}zigzagLines(t,e,s){const n=[];return t.forEach((t=>{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;t<h;t++){const o=2*t*e,a=2*(t+1)*e,h=Math.sqrt(2*Math.pow(e,2)),i=[r[0]+o*Math.cos(c),r[1]+o*Math.sin(c)],l=[r[0]+a*Math.cos(c),r[1]+a*Math.sin(c)],u=[i[0]+h*Math.cos(c+Math.PI/4),i[1]+h*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(i[0],i[1],u[0],u[1],s),...this.helper.doubleLineOps(u[0],u[1],l[0],l[1],s))}})),n}}const u={};class p{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const f=0,d=1,g=2,M={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function k(t,e){return t.type===e}function b(t){const e=[],s=function(t){const e=new Array;for(;\"\"!==t;)if(t.match(/^([ \\t\\r\\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:f,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:d,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:g,text:\"\"},e}(t);let n=\"BOD\",o=0,a=s[o];for(;!k(a,g);){let h=0;const r=[];if(\"BOD\"===n){if(\"M\"!==a.text&&\"m\"!==a.text)return b(\"M0,0\"+t);o++,h=M[a.text],n=a.text}else k(a,d)?h=M[n]:(o++,h=M[a.text],n=a.text);if(!(o+h<s.length))throw new Error(\"Path data ended short\");for(let t=o;t<o+h;t++){const e=s[t];if(!k(e,d))throw new Error(\"Param not a number: \"+n+\",\"+e.text);r[r.length]=+e.text}if(\"number\"!=typeof M[n])throw new Error(\"Bad segment: \"+n);{const t={key:n,data:r};e.push(t),o+=h,a=s[o],\"M\"===n&&(n=\"L\"),\"m\"===n&&(n=\"l\")}}return e}function y(t){let e=0,s=0,n=0,o=0;const a=[];for(const{key:h,data:r}of t)switch(h){case\"M\":a.push({key:\"M\",data:[...r]}),[e,s]=r,[n,o]=r;break;case\"m\":e+=r[0],s+=r[1],a.push({key:\"M\",data:[e,s]}),n=e,o=s;break;case\"L\":a.push({key:\"L\",data:[...r]}),[e,s]=r;break;case\"l\":e+=r[0],s+=r[1],a.push({key:\"L\",data:[e,s]});break;case\"C\":a.push({key:\"C\",data:[...r]}),e=r[4],s=r[5];break;case\"c\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),t<g&&(f=Math.PI-f),s<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),i&&f>d&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e<p.length;e+=3){const s=w(p[e][0],p[e][1],l),n=w(p[e+1][0],p[e+1][1],l),o=w(p[e+2][0],p[e+2][1],l);t.push([s[0],s[1],n[0],n[1],o[0],o[1]])}return t}}const P={randOffset:function(t,e){return G(t,e)},randOffsetWithRange:function(t,e,s){return E(t,e,s)},ellipse:function(t,e,s,n,o){const a=T(s,n,o);return D(t,e,o,a).opset},doubleLineOps:function(t,e,s,n,o){return $(t,e,s,n,o,!0)}};function v(t,e,s,n,o){return{type:\"path\",ops:$(t,e,s,n,o)}}function S(t,e,s){const n=(t||[]).length;if(n>2){const o=[];for(let e=0;e<n-1;e++)o.push(...$(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&o.push(...$(t[n-1][0],t[n-1][1],t[0][0],t[0][1],s)),{type:\"path\",ops:o}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:\"path\",ops:[]}}function O(t,e,s,n,o){return function(t,e){return S(t,!0,e)}([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],o)}function L(t,e){if(t.length){const s=\"number\"==typeof t[0][0]?[t]:t,n=j(s[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:j(s[0],1.5*(1+.22*e.roughness),z(e));for(let t=1;t<s.length;t++){const a=s[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),z(e));for(const e of t)\"move\"!==e.op&&n.push(e);for(const t of s)\"move\"!==t.op&&o.push(t)}}return{type:\"path\",ops:n.concat(o)}}return{type:\"path\",ops:[]}}function T(t,e,s){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/o;let h=Math.abs(t/2),r=Math.abs(e/2);const i=1-s.curveFitting;return h+=G(h*i,s),r+=G(r*i,s),{increment:a,rx:h,ry:r}}function D(t,e,s,n){const[o,a]=F(n.increment,t,e,n.rx,n.ry,1,n.increment*E(.1,E(.4,1,s),s),s);let h=q(o,null,s);if(!s.disableMultiStroke&&0!==s.roughness){const[o]=F(n.increment,t,e,n.rx,n.ry,1.5,0,s),a=q(o,null,s);h=h.concat(a)}return{estimatedPoints:a,opset:{type:\"path\",ops:h}}}function A(t,e,s,n,o,a,h,r,i){const c=t,l=e;let u=Math.abs(s/2),p=Math.abs(n/2);u+=G(.01*u,i),p+=G(.01*p,i);let f=o,d=a;for(;f<0;)f+=2*Math.PI,d+=2*Math.PI;d-f>2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a<o;a++)s.push({op:\"lineTo\",data:[n[a][0]+G(t,e),n[a][1]+G(t,e)]})}}return{type:\"fillPath\",ops:s}}function C(t,e){return function(t,e){let s=t.fillStyle||\"hachure\";if(!u[s])switch(s){case\"zigzag\":u[s]||(u[s]=new h(e));break;case\"cross-hatch\":u[s]||(u[s]=new r(e));break;case\"dots\":u[s]||(u[s]=new i(e));break;case\"dashed\":u[s]||(u[s]=new c(e));break;case\"zigzag-line\":u[s]||(u[s]=new l(e));break;default:s=\"hachure\",u[s]||(u[s]=new o(e))}return u[s]}(e,P).fillPolygons(t,e)}function z(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function W(t){return t.randomizer||(t.randomizer=new p(t.seed||0)),t.randomizer.next()}function E(t,e,s,n=1){return s.roughness*n*(W(s)*(e-t)+t)}function G(t,e,s=1){return E(-t,t,e,s)}function $(t,e,s,n,o,a=!1){const h=a?o.disableMultiStrokeFill:o.disableMultiStroke,r=R(t,e,s,n,o,!0,!1);if(h)return r;const i=R(t,e,s,n,o,!0,!0);return r.concat(i)}function R(t,e,s,n,o,a,h){const r=Math.pow(t-s,2)+Math.pow(e-n,2),i=Math.sqrt(r);let c=1;c=i<200?1:i>500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o<t.length;o++)n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]),o===t.length-1&&n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]);return q(n,null,s)}function q(t,e,s){const n=t.length,o=[];if(n>3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(h*t[e+1][0]-h*t[e-1][0])/6,s[1]+(h*t[e+1][1]-h*t[e-1][1])/6],a[2]=[t[e+1][0]+(h*t[e][0]-h*t[e+2][0])/6,t[e+1][1]+(h*t[e][1]-h*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],o.push({op:\"bcurveTo\",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=s.maxRandomnessOffset;o.push({op:\"lineTo\",data:[e[0]+G(t,s),e[1]+G(t,s)]})}}else 3===n?(o.push({op:\"move\",data:[t[1][0],t[1][1]]}),o.push({op:\"bcurveTo\",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&o.push(...R(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return o}function F(t,e,s,n,o,a,h,r){const i=[],c=[];if(0===r.roughness){t/=4,c.push([e+n*Math.cos(-t),s+o*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),s+o*Math.sin(a)];i.push(t),c.push(t)}c.push([e+n*Math.cos(0),s+o*Math.sin(0)]),c.push([e+n*Math.cos(t),s+o*Math.sin(t)])}else{const l=G(.5,r)-Math.PI/2;c.push([G(a,r)+e+.9*n*Math.cos(l-t),G(a,r)+s+.9*o*Math.sin(l-t)]);const u=2*Math.PI+l-.01;for(let h=l;h<u;h+=t){const t=[G(a,r)+e+n*Math.cos(h),G(a,r)+s+o*Math.sin(h)];i.push(t),c.push(t)}c.push([G(a,r)+e+n*Math.cos(l+2*Math.PI+.5*h),G(a,r)+s+o*Math.sin(l+2*Math.PI+.5*h)]),c.push([G(a,r)+e+.98*n*Math.cos(l+h),G(a,r)+s+.98*o*Math.sin(l+h)]),c.push([G(a,r)+e+.9*n*Math.cos(l+.5*h),G(a,r)+s+.9*o*Math.sin(l+.5*h)])}return[c,i]}function V(t,e,s,n,o,a,h,r,i){const c=a+G(.1,i),l=[];l.push([G(r,i)+e+.9*n*Math.cos(c-t),G(r,i)+s+.9*o*Math.sin(c-t)]);for(let a=c;a<=h;a+=t)l.push([G(r,i)+e+n*Math.cos(a),G(r,i)+s+o*Math.sin(a)]);return l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),q(l,null,i)}function Z(t,e,s,n,o,a,h,r){const i=[],c=[r.maxRandomnessOffset||1,(r.maxRandomnessOffset||1)+.3];let l=[0,0];const u=r.disableMultiStroke?1:2,p=r.preserveVertices;for(let f=0;f<u;f++)0===f?i.push({op:\"move\",data:[h[0],h[1]]}):i.push({op:\"move\",data:[h[0]+(p?0:G(c[0],r)),h[1]+(p?0:G(c[0],r))]}),l=p?[o,a]:[o+G(c[f],r),a+G(c[f],r)],i.push({op:\"bcurveTo\",data:[t+G(c[f],r),e+G(c[f],r),s+G(c[f],r),n+G(c[f],r),l[0],l[1]]});return i}function Q(t){return[...t]}function H(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(Q(t[0]),Q(t[1]),Q(t[2]),Q(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);const o=[],a=1-e;n.push(Q(s[0]));for(let t=1;t+2<s.length;t++){const e=s[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],o[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],o[3]=[s[t+1][0],s[t+1][1]],n.push(o[1],o[2],o[3])}}return n}function N(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function B(t,e,s){const n=N(e,s);if(0===n)return N(t,e);let o=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/n;return o=Math.max(0,Math.min(1,o)),N(t,J(e,s,o))}function J(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function K(t,e,s,n){const o=n||[];if(function(t,e){const s=t[e+0],n=t[e+1],o=t[e+2],a=t[e+3];let h=3*n[0]-2*s[0]-a[0];h*=h;let r=3*n[1]-2*s[1]-a[1];r*=r;let i=3*o[0]-2*a[0]-s[0];i*=i;let c=3*o[1]-2*a[1]-s[1];return c*=c,h<i&&(h=i),r<c&&(r=c),h+r}(t,e)<s){const s=t[e+0];if(o.length){(a=o[o.length-1],h=s,Math.sqrt(N(a,h)))>1&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;n<s-1;++n){const e=B(t[n],h,r);e>i&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s<o;s++){K(t,3*s,e,n)}return s&&s>0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n","import {\n getSubGraphTitleMargins\n} from \"./chunk-CVBHYZKI.mjs\";\nimport {\n compileStyles,\n solidStateFill,\n styles2String,\n userNodeOverrides\n} from \"./chunk-ATLVNIR6.mjs\";\nimport {\n createText,\n getIconSVG\n} from \"./chunk-JA3XYJ7Z.mjs\";\nimport {\n calculateTextWidth,\n decodeEntities,\n handleUndefinedAttr,\n parseFontSize\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n common_default,\n defaultConfig_default,\n evaluate,\n getConfig,\n getConfig2,\n hasKatex,\n parseGenericTypes,\n renderKatexSanitized,\n sanitizeText,\n sanitizeText2\n} from \"./chunk-ABZYJK2D.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 text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: node.width || getConfig2().flowchart?.wrappingWidth,\n // @ts-expect-error -- This is currently not used. Should this be `classes` instead?\n cssClasses: \"markdown-node-label\",\n style: node.labelStyle,\n addSvgBackground: !!node.icon || !!node.img\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 const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = label.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 = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n const width = parsedBodyFontSize * 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 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 || evaluate(getConfig2()?.flowchart?.htmlLabels);\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 (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\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\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select3 } 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\nimport { select as select2 } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nasync function addHtmlLabel(node) {\n const fo = select2(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const config = getConfig2();\n let label = node.label;\n if (node.label && hasKatex(node.label)) {\n label = await renderKatexSanitized(node.label.replace(common_default.lineBreakRegex, \"\\n\"), config);\n }\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n const labelSpan = '<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + // codeql [js/html-constructed-from-input] : false positive\n \">\" + label + \"</span>\";\n div.html(sanitizeText(labelSpan, config));\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"padding-right\", \"1px\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n labelStyle: style ? style.replace(\"fill:\", \"color:\") : style\n };\n let vertexNode = await addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\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.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\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 });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(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.id);\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.id).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 = label.node().appendChild(await createLabel_default(node.label, node.labelStyle, void 0, true));\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(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 - (evaluate(siteConfig.flowchart.htmlLabels) ? 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.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\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 (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(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.id).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 const outerRectClass = \"divider\";\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\");\nasync function bowTieRect(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 + 20;\n const h = bbox.height + node.padding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\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\");\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\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const padding = 12;\n const w = bbox.width + node.padding + padding;\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + padding, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + padding },\n { x: left + padding, 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 padding = options?.padding ?? halfPadding;\n const radius = 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 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 w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\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 w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\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 w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\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 { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 80, minHeight = 20;\n const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 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\");\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\");\nasync function cylinder(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, node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\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 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 = createCylinderPathD(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 }\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 { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const rectOffset = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 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 + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset }\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\");\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 + rectOffset + (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 node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const gap = 5;\n const outerRadius = bbox.width / 2 + halfPadding + gap;\n const innerRadius = bbox.width / 2 + halfPadding;\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\";\nasync function flippedTriangle(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 = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\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})`);\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 = 80, minHeight = 50;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\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\");\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\";\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + (node.padding ?? 0);\n const w = bbox.width + (node.padding ?? 0) * 2.5;\n const { cssStyles } = node;\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let halfWidth = w / 2;\n const m = halfWidth / 6;\n halfWidth = halfWidth + m;\n const halfHeight = h / 2;\n const fixedLength = halfHeight / 2;\n const deducedWidth = halfWidth - fixedLength;\n const points = [\n { x: -deducedWidth, y: -halfHeight },\n { x: 0, y: -halfHeight },\n { x: deducedWidth, y: -halfHeight },\n { x: halfWidth, y: 0 },\n { x: deducedWidth, y: halfHeight },\n { x: 0, y: halfHeight },\n { x: -deducedWidth, y: halfHeight },\n { x: -halfWidth, y: 0 }\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\");\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 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\");\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 { shapeSvg, bbox } = 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 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 { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\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 { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\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 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\");\nasync function linedCylinder(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), node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + (node.padding ?? 0), node.height ?? 0);\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\").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 { 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 / 4;\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\");\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 { 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 rectOffset = 5;\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 - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, 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 const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, { ...options, fill: \"none\" });\n const multiRect2 = shapeSvg.insert(() => innerNode, \":first-child\");\n multiRect2.insert(() => outerNode, \":first-child\");\n multiRect2.attr(\"class\", \"basic label-container\");\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) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (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 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 / 4;\n const finalH = h + waveAmplitude;\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset = 5;\n const { cssStyles } = node;\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset,\n y + finalH + rectOffset,\n x + w - rectOffset,\n y + finalH + rectOffset,\n waveAmplitude,\n 0.8\n );\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + finalH + rectOffset },\n ...wavePoints,\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\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\");\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) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - 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 || getConfig().flowchart?.htmlLabels !== false;\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\");\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;\n const h = bbox.height + node.padding;\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 { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\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\");\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 select4 } 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 = label.node().appendChild(await createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div2 = text2.children[0];\n const dv2 = select4(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 = label.node().appendChild(\n await createLabel_default(\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n const div = descr.children[0];\n const dv = select4(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 select4(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(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\nimport rough39 from \"roughjs\";\nfunction generateArcPoints2(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(generateArcPoints2, \"generateArcPoints\");\nasync function roundedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node?.padding ?? 0;\n const labelPaddingY = node?.padding ?? 0;\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const radius = node.radius || 5;\n const taper = node.taper || 5;\n const { cssStyles } = node;\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.stroke) {\n options.stroke = node.stroke;\n }\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n // Top edge (left to right)\n { x: -w / 2 + taper, y: -h / 2 },\n // Top-left corner start (1)\n { x: w / 2 - taper, y: -h / 2 },\n // Top-right corner start (2)\n ...generateArcPoints2(w / 2 - taper, -h / 2, w / 2, -h / 2 + taper, radius, radius, true),\n // Top-left arc (2 to 3)\n // Right edge (top to bottom)\n { x: w / 2, y: -h / 2 + taper },\n // Top-right taper point (3)\n { x: w / 2, y: h / 2 - taper },\n // Bottom-right taper point (4)\n ...generateArcPoints2(w / 2, h / 2 - taper, w / 2 - taper, h / 2, radius, radius, true),\n // Top-left arc (4 to 5)\n // Bottom edge (right to left)\n { x: w / 2 - taper, y: h / 2 },\n // Bottom-right corner start (5)\n { x: -w / 2 + taper, y: h / 2 },\n // Bottom-left corner start (6)\n ...generateArcPoints2(-w / 2 + taper, h / 2, -w / 2, h / 2 - taper, radius, radius, true),\n // Top-left arc (4 to 5)\n // Left edge (bottom to top)\n { x: -w / 2, y: h / 2 - taper },\n // Bottom-left taper point (7)\n { x: -w / 2, y: -h / 2 + taper },\n // Top-left taper point (8)\n ...generateArcPoints2(-w / 2, -h / 2 + taper, -w / 2 + taper, -h / 2, radius, radius, true)\n // Top-left arc (4 to 5)\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(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough40 from \"roughjs\";\nasync function shadedProcess(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 halfPadding = node?.padding ?? 0;\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 x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\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: x + w + 8, y },\n { x: x + w + 8, y: y + h },\n { x: x - 8, y: y + h },\n { x: x - 8, 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\").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(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (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 rough41 from \"roughjs\";\nasync function slopedRect(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 x = -w / 2;\n const y = -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, 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\");\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 options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: node.labelPaddingX ?? (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough42 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const radius = h / 2;\n const { cssStyles } = node;\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 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: 5,\n ry: 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 rough43 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 } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const rc = rough43.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, 14, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const roughInnerNode = rc.circle(0, 0, 5, {\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 (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough44 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor } = themeVariables;\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 = rough44.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough45 from \"roughjs\";\nasync function subroutine(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = (node?.padding || 0) / 2;\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\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 = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n const l1 = rc.line(x, y, x, y + h, options);\n const l2 = rc.line(x + w, y, x + 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 rough46 from \"roughjs\";\nasync function taggedRect(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 = 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 x = -w / 2;\n const y = -h / 2;\n const tagWidth = 0.2 * h;\n const tagHeight = 0.2 * h;\n const { cssStyles } = node;\n const rc = rough46.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\");\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 rough47 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 / 4;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough47.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.4 },\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.3,\n x + w - tagWidth,\n (y + h) * 1.5,\n -h * 0.03,\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\");\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, node?.width || 0);\n const totalHeight = Math.max(bbox.height + node.padding, 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 rough48 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\");\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const labelPadding = node.look === \"neo\" ? halfPadding * 2 : halfPadding;\n const h = bbox.height + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = bbox.width + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough48.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\");\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 rough49 from \"roughjs\";\nasync function trapezoid(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;\n const h = bbox.height + node.padding;\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 = rough49.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 rough50 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 60, minHeight = 20;\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\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 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\");\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 rough51 from \"roughjs\";\nasync function triangle(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 useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\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 = rough51.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})`);\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 rough52 from \"roughjs\";\nasync function waveEdgedRectangle(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 finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const minWidth = 70;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\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 - 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\");\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 rough53 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 100;\n const minHeight = 50;\n const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const aspectRatio = baseWidth / baseHeight;\n let w = baseWidth;\n let h = baseHeight;\n if (w > h * aspectRatio) {\n h = w / aspectRatio;\n } else {\n w = h * aspectRatio;\n }\n w = Math.max(w, minWidth);\n h = Math.max(h, minHeight);\n const waveAmplitude = Math.min(h * 0.2, h / 4);\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough53.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 rough54 from \"roughjs\";\nasync function windowPane(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 rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough54.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\");\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 rough55 from \"roughjs\";\nimport { select as select5 } from \"d3\";\nasync function erBox(parent, node) {\n const entityNode = node;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\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 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 (!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 = rough55.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 = select5(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 const roughRect = rc.rectangle(x, y, w, h, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\").attr(\"style\", cssStyles.join(\"\"));\n const { themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder } = themeVariables;\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 let roughLine = rc.line(x, nameBBox.height + y, w + x, nameBBox.height + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n roughLine = rc.line(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n if (keysPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n if (commentPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n for (const yOffset2 of yOffsets) {\n roughLine = rc.line(\n x,\n nameBBox.height + y + yOffset2,\n w + x,\n nameBBox.height + y + yOffset2,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n if (nodeStyles && node.look !== \"handDrawn\") {\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 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 = select5(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\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select7 } from \"d3\";\nimport rough56 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select6 } 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 select6(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 = select6(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 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 = rough56.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const w = bbox.width;\n let h = 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 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 + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0),\n options\n );\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n const rectBBox = rect2.node().getBBox();\n shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n const text2 = select7(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 (!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 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 if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + PADDING + GAP * 2,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").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 rough57 from \"roughjs\";\nimport { select as select8 } 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 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 = rough57.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\").attr(\"style\", nodeStyles);\n shapeSvg.selectAll(\".label\").each((_, i, nodes) => {\n const text2 = select8(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 roughLine = rc.line(\n x,\n y + typeHeight + nameHeight + gap,\n x + totalWidth,\n y + typeHeight + nameHeight + gap,\n options\n );\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\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 child.textContent = child.textContent.replaceAll(\"&gt;\", \">\").replaceAll(\"&lt;\", \"<\");\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 = select8(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 rough58 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 = rough58.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 rough59 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 = rough59.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 rough60 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 = rough60.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 = `\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 const bg = shapeSvg.append(\"path\").attr(\"id\", \"node-\" + node.id).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 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"]}