@flyfish-group/file-viewer-web 1.0.9

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 (201) hide show
  1. package/LICENSE +160 -0
  2. package/README.md +41 -0
  3. package/dist/index.d.ts +60 -0
  4. package/dist/index.js +165 -0
  5. package/dist/node.d.ts +23 -0
  6. package/dist/node.js +43 -0
  7. package/package.json +67 -0
  8. package/scripts/copy-assets.mjs +59 -0
  9. package/viewer/assets/AudioViewer-0CSMvCtp.css +1 -0
  10. package/viewer/assets/AudioViewer-HHLkFx24.js +1 -0
  11. package/viewer/assets/CadViewer-BYC0zQ0T.js +1 -0
  12. package/viewer/assets/CadViewer-Cv8b95Gj.css +1 -0
  13. package/viewer/assets/CodeViewer-HGV-dwr6.css +1 -0
  14. package/viewer/assets/CodeViewer-VQE6BewI.js +4 -0
  15. package/viewer/assets/DrawingViewer-BtEGTvJQ.js +2 -0
  16. package/viewer/assets/DrawingViewer-CHm6iXmV.css +1 -0
  17. package/viewer/assets/EpubViewer-5hOhOgl5.js +2 -0
  18. package/viewer/assets/EpubViewer-Cci0l1Vm.css +1 -0
  19. package/viewer/assets/ImageViewer-D2_fTk_7.css +10 -0
  20. package/viewer/assets/ImageViewer-D8t2LOeu.js +1 -0
  21. package/viewer/assets/MarkdownViewer-47tSKoCN.css +1 -0
  22. package/viewer/assets/MarkdownViewer-CauCMix8.js +64 -0
  23. package/viewer/assets/OfdViewer-DZCDN3UD.css +1 -0
  24. package/viewer/assets/OfdViewer-d-bt92VG.js +2 -0
  25. package/viewer/assets/PdfView-BmvyynSl.js +558 -0
  26. package/viewer/assets/PdfView-CS_IFVnD.css +1 -0
  27. package/viewer/assets/PptxRender-BQ5mqB0E.css +1 -0
  28. package/viewer/assets/PptxRender-DPUrsWGR.js +32 -0
  29. package/viewer/assets/UmdViewer-DgDIrlID.js +3 -0
  30. package/viewer/assets/UmdViewer-DpObj56a.css +1 -0
  31. package/viewer/assets/XlsxTable-BxlH06s2.css +1 -0
  32. package/viewer/assets/XlsxTable-Dca8o5_N.js +5 -0
  33. package/viewer/assets/ar-SA-G6X2FPQ2-DWAZRxPu.js +10 -0
  34. package/viewer/assets/arc-Dimj_7G-.js +1 -0
  35. package/viewer/assets/architecture-7EHR7CIX-PuoqTBea.js +1 -0
  36. package/viewer/assets/architectureDiagram-3BPJPVTR-ourcMGqp.js +36 -0
  37. package/viewer/assets/az-AZ-76LH7QW2-CD-SA1wC.js +1 -0
  38. package/viewer/assets/bg-BG-XCXSNQG7-lFFvFyxW.js +5 -0
  39. package/viewer/assets/blockDiagram-GPEHLZMM-DETJLwVU.js +132 -0
  40. package/viewer/assets/bn-BD-2XOGV67Q-CuUcZaL8.js +5 -0
  41. package/viewer/assets/c4Diagram-AAUBKEIU-DCfnD0yS.js +10 -0
  42. package/viewer/assets/ca-ES-6MX7JW3Y-Cj4OlC6R.js +8 -0
  43. package/viewer/assets/channel-Cvj3_InT.js +1 -0
  44. package/viewer/assets/chunk-2J33WTMH-vXxffsmH.js +1 -0
  45. package/viewer/assets/chunk-3OPIFGDE-C9LtEwmG.js +62 -0
  46. package/viewer/assets/chunk-4BX2VUAB-CIKyExbu.js +1 -0
  47. package/viewer/assets/chunk-55IACEB6-uprZKw0K.js +1 -0
  48. package/viewer/assets/chunk-5ZQYHXKU-C2girjDc.js +2 -0
  49. package/viewer/assets/chunk-6U3AYISY-sM9HnDSj.js +12 -0
  50. package/viewer/assets/chunk-727SXJPM-BJJusOVj.js +206 -0
  51. package/viewer/assets/chunk-AGHRB4JF-vbzngFky.js +1 -0
  52. package/viewer/assets/chunk-AQP2D5EJ-BPoH0fiI.js +231 -0
  53. package/viewer/assets/chunk-BSJP7CBP-9m7kELGq.js +1 -0
  54. package/viewer/assets/chunk-CSCIHK7Q-OdsAx3G8.js +124 -0
  55. package/viewer/assets/chunk-EIO257PC-B13QElRc.js +22 -0
  56. package/viewer/assets/chunk-FMBD7UC4-DiXlV5mw.js +15 -0
  57. package/viewer/assets/chunk-K2UTITRG-CJkr0tXj.js +35 -0
  58. package/viewer/assets/chunk-KSCS5N6A-WSLcjFr5.js +10 -0
  59. package/viewer/assets/chunk-L5ZTLDWV-B_HlbJUe.js +1 -0
  60. package/viewer/assets/chunk-LZXEDZCA-Cqd1LSkM.js +2 -0
  61. package/viewer/assets/chunk-ND2GUHAM-28eJdx7E.js +1 -0
  62. package/viewer/assets/chunk-NZK2D7GU-BUIZFEFT.js +1 -0
  63. package/viewer/assets/chunk-O5CBEL6O-DZNjSn6F.js +70 -0
  64. package/viewer/assets/chunk-QZHKN3VN-DQmrlo26.js +1 -0
  65. package/viewer/assets/chunk-SRAX5OIU-D2mqL_eA.js +1 -0
  66. package/viewer/assets/chunk-WU5MYG2G-CI2E4kog.js +1 -0
  67. package/viewer/assets/chunk-XPW4576I-CvDbpA2d.js +32 -0
  68. package/viewer/assets/chunk-Z3N5DIM6-DVAc8Qv7.js +1 -0
  69. package/viewer/assets/chunk-ZUYEQ4TG-DaQMhOk1.js +7 -0
  70. package/viewer/assets/classDiagram-4FO5ZUOK-BR_8dE4R.js +1 -0
  71. package/viewer/assets/classDiagram-v2-Q7XG4LA2-BSPdc-Mh.js +1 -0
  72. package/viewer/assets/cose-bilkent-S5V4N54A-DT4OXn3T.js +1 -0
  73. package/viewer/assets/cs-CZ-2BRQDIVT-9YP2OnzR.js +11 -0
  74. package/viewer/assets/cytoscape.esm-DQPqE0MR.js +321 -0
  75. package/viewer/assets/da-DK-5WZEPLOC-DyH5OvyC.js +5 -0
  76. package/viewer/assets/dagre-BM42HDAG-BQqjetsc.js +4 -0
  77. package/viewer/assets/dagre-D7L3ChvY.js +1 -0
  78. package/viewer/assets/de-DE-XR44H4JA-Dm-lIYs8.js +8 -0
  79. package/viewer/assets/defaultLocale-GXPQCpCV.js +1 -0
  80. package/viewer/assets/diagram-2AECGRRQ-DQj687EE.js +43 -0
  81. package/viewer/assets/diagram-5GNKFQAL-C9cKajpJ.js +10 -0
  82. package/viewer/assets/diagram-KO2AKTUF-BrHr9ddz.js +3 -0
  83. package/viewer/assets/diagram-LMA3HP47-B_3VIpAA.js +24 -0
  84. package/viewer/assets/diagram-OG6HWLK6-CKGkIofl.js +24 -0
  85. package/viewer/assets/directory-open-01563666-DJpMaT5E.js +1 -0
  86. package/viewer/assets/directory-open-4ed118d0-vrMz6VGC.js +1 -0
  87. package/viewer/assets/dist-BWLXExfL.js +27 -0
  88. package/viewer/assets/dist-Bl_HJvJC.js +1 -0
  89. package/viewer/assets/dist-CDIdMEAB.js +7 -0
  90. package/viewer/assets/docx-preview-CiJ_X4bw.js +20 -0
  91. package/viewer/assets/el-GR-BZB4AONW-r581kidc.js +10 -0
  92. package/viewer/assets/en-B4ZKOASM-Crn8bm25.js +1 -0
  93. package/viewer/assets/erDiagram-TEJ5UH35-BEdSv6Fr.js +85 -0
  94. package/viewer/assets/es-ES-U4NZUMDT-Cwbu6VfM.js +9 -0
  95. package/viewer/assets/eu-ES-A7QVB2H4-BQQ8mY2m.js +11 -0
  96. package/viewer/assets/eventmodeling-FCH6USID-ClPyqCMG.js +1 -0
  97. package/viewer/assets/fa-IR-HGAKTJCU-eYy7h0Hx.js +8 -0
  98. package/viewer/assets/fi-FI-Z5N7JZ37-0dUJDB5b.js +6 -0
  99. package/viewer/assets/file-open-002ab408-D8YX4_im.js +1 -0
  100. package/viewer/assets/file-open-7c801643-ssV9zcu_.js +1 -0
  101. package/viewer/assets/file-save-3189631c-DxUkN-yO.js +1 -0
  102. package/viewer/assets/file-save-745eba88-VPL_lGKy.js +1 -0
  103. package/viewer/assets/flowDiagram-I6XJVG4X-BuWsqPkc.js +162 -0
  104. package/viewer/assets/fr-FR-RHASNOE6-CcYw1Zvt.js +9 -0
  105. package/viewer/assets/ganttDiagram-6RSMTGT7-CJySS69b.js +292 -0
  106. package/viewer/assets/gitGraph-WXDBUCRP-ce180Qdx.js +1 -0
  107. package/viewer/assets/gitGraphDiagram-PVQCEYII-DR2VhZO_.js +106 -0
  108. package/viewer/assets/gl-ES-HMX3MZ6V-C3Iv5ndX.js +10 -0
  109. package/viewer/assets/graphlib-Bk2wNdF0.js +1 -0
  110. package/viewer/assets/he-IL-6SHJWFNN-CL8Or2hC.js +10 -0
  111. package/viewer/assets/hi-IN-IWLTKZ5I-DgAD87B-.js +4 -0
  112. package/viewer/assets/hu-HU-A5ZG7DT2-B8ITrvUt.js +7 -0
  113. package/viewer/assets/id-ID-SAP4L64H-VQ2OqDi1.js +10 -0
  114. package/viewer/assets/image-GAAHSSAO-DbYjE9JA.js +1 -0
  115. package/viewer/assets/image-blob-reduce.esm-Co0wHMYu.js +2 -0
  116. package/viewer/assets/index-0hvuUhZv.js +106 -0
  117. package/viewer/assets/index-Bwjgtadn.css +1 -0
  118. package/viewer/assets/info-J43DQDTF-CMRAUPs-.js +1 -0
  119. package/viewer/assets/infoDiagram-5YYISTIA-DxNv4IA7.js +2 -0
  120. package/viewer/assets/init-Bj57mB65.js +1 -0
  121. package/viewer/assets/ishikawaDiagram-YF4QCWOH-2rCqsio7.js +70 -0
  122. package/viewer/assets/it-IT-JPQ66NNP-D777F8zf.js +11 -0
  123. package/viewer/assets/ja-JP-DBVTYXUO-D1PJdPJe.js +8 -0
  124. package/viewer/assets/journeyDiagram-JHISSGLW-DQQq5Lp7.js +139 -0
  125. package/viewer/assets/jszip.min-D1xSKQ08.js +2 -0
  126. package/viewer/assets/kaa-6HZHGXH3-fRgBr8Mi.js +1 -0
  127. package/viewer/assets/kab-KAB-ZGHBKWFO-DlQ49dRn.js +8 -0
  128. package/viewer/assets/kanban-definition-UN3LZRKU-B5eO6Mg1.js +89 -0
  129. package/viewer/assets/katex-C22v-RF3.js +257 -0
  130. package/viewer/assets/kk-KZ-P5N5QNE5-Hq_H-Gj0.js +1 -0
  131. package/viewer/assets/km-KH-HSX4SM5Z-BhI31DxZ.js +11 -0
  132. package/viewer/assets/ko-KR-MTYHY66A-ImUZQcvz.js +9 -0
  133. package/viewer/assets/ku-TR-6OUDTVRD-DfaC8QXn.js +9 -0
  134. package/viewer/assets/linear-CjCAJGt1.js +1 -0
  135. package/viewer/assets/logo-DG62cSZK.png +0 -0
  136. package/viewer/assets/lt-LT-XHIRWOB4-I-ZCC3dU.js +3 -0
  137. package/viewer/assets/lv-LV-5QDEKY6T-Qq5QdgfN.js +7 -0
  138. package/viewer/assets/mermaid-parser.core-Bdy3q53b.js +161 -0
  139. package/viewer/assets/mindmap-definition-RKZ34NQL-m96D2ClP.js +96 -0
  140. package/viewer/assets/mr-IN-CRQNXWMA-BeP3PnlU.js +13 -0
  141. package/viewer/assets/my-MM-5M5IBNSE-BYx0eFn7.js +1 -0
  142. package/viewer/assets/nb-NO-T6EIAALU-C9J5JzGe.js +10 -0
  143. package/viewer/assets/nl-NL-IS3SIHDZ-CMVLrD7F.js +8 -0
  144. package/viewer/assets/nn-NO-6E72VCQL-BBxsrvc2.js +8 -0
  145. package/viewer/assets/oc-FR-POXYY2M6-CHEXPovt.js +8 -0
  146. package/viewer/assets/ofd-D8TA6tcU.js +6 -0
  147. package/viewer/assets/ordinal-CEZ33b-s.js +1 -0
  148. package/viewer/assets/pa-IN-N4M65BXN-Bnyu119-.js +4 -0
  149. package/viewer/assets/packet-YPE3B663-mGtuymGQ.js +1 -0
  150. package/viewer/assets/pdf.worker-BZPf8fJG.js +50 -0
  151. package/viewer/assets/percentages-BXMCSKIN-CBvdjJLu.js +1 -0
  152. package/viewer/assets/pica-CB7jwGa3.js +2 -0
  153. package/viewer/assets/pie-DUmD7IHG.js +1 -0
  154. package/viewer/assets/pie-LRSECV5Y-CGMZQePM.js +1 -0
  155. package/viewer/assets/pieDiagram-4H26LBE5-DVleOheM.js +30 -0
  156. package/viewer/assets/pl-PL-T2D74RX3-Cw72z8vE.js +9 -0
  157. package/viewer/assets/pptx.worker-c0GnmoEE.js +23 -0
  158. package/viewer/assets/prod-Npfld6sP.js +149 -0
  159. package/viewer/assets/pt-BR-5N22H2LF-ok3TV3dt.js +9 -0
  160. package/viewer/assets/pt-PT-UZXXM6DQ-BX423IXU.js +9 -0
  161. package/viewer/assets/quadrantDiagram-W4KKPZXB-CV_EkNJ-.js +7 -0
  162. package/viewer/assets/radar-GUYGQ44K-C81hKZN2.js +1 -0
  163. package/viewer/assets/requirementDiagram-4Y6WPE33-B_kmlnjO.js +84 -0
  164. package/viewer/assets/ro-RO-JPDTUUEW-Pv4aDgxu.js +11 -0
  165. package/viewer/assets/rough.esm-BrTFrov0.js +1 -0
  166. package/viewer/assets/roundRect-BDOnP7qU.js +1 -0
  167. package/viewer/assets/ru-RU-B4JR7IUQ-BGRCDPgW.js +9 -0
  168. package/viewer/assets/sankeyDiagram-5OEKKPKP-CCXvqmNS.js +40 -0
  169. package/viewer/assets/sequenceDiagram-3UESZ5HK-CoR9l1O_.js +162 -0
  170. package/viewer/assets/sheet.worker-DXcmIjpw.js +68 -0
  171. package/viewer/assets/si-LK-N5RQ5JYF-CSeZ8jFh.js +1 -0
  172. package/viewer/assets/sk-SK-C5VTKIMK-BrMoO_Q1.js +6 -0
  173. package/viewer/assets/sl-SI-NN7IZMDC-B_x--94y.js +6 -0
  174. package/viewer/assets/src-BBw8FbvP.js +1 -0
  175. package/viewer/assets/src-BbUo_1sw.js +5 -0
  176. package/viewer/assets/stateDiagram-AJRCARHV-DdTaUVJA.js +1 -0
  177. package/viewer/assets/stateDiagram-v2-BHNVJYJU-D9_r8kG7.js +1 -0
  178. package/viewer/assets/subset-shared.chunk-DpZLNUjP.js +1 -0
  179. package/viewer/assets/subset-worker.chunk-DoDHTOze.js +1 -0
  180. package/viewer/assets/sv-SE-XGPEYMSR-BB4gq_Zc.js +10 -0
  181. package/viewer/assets/ta-IN-2NMHFXQM-9zxtttPw.js +9 -0
  182. package/viewer/assets/th-TH-HPSO5L25-Bu674ZxS.js +2 -0
  183. package/viewer/assets/time-0omzMTb_.js +1 -0
  184. package/viewer/assets/timeline-definition-PNZ67QCA-CLUsDmue.js +120 -0
  185. package/viewer/assets/tr-TR-DEFEU3FU-BOU8hW6c.js +7 -0
  186. package/viewer/assets/treeView-BLDUP644-NZTNRLdP.js +1 -0
  187. package/viewer/assets/treemap-LRROVOQU-BMknj0en.js +1 -0
  188. package/viewer/assets/uk-UA-QMV73CPH-DExt1pCB.js +6 -0
  189. package/viewer/assets/vennDiagram-CIIHVFJN-DFmAzwyu.js +34 -0
  190. package/viewer/assets/vi-VN-M7AON7JQ-ChzDxy_w.js +5 -0
  191. package/viewer/assets/wardley-L42UT6IY-D9i-Iven.js +1 -0
  192. package/viewer/assets/wardleyDiagram-YWT4CUSO-DpnSL_l7.js +78 -0
  193. package/viewer/assets/worker-ref-zQl5Zn-S.js +1 -0
  194. package/viewer/assets/xlsx-ff7ER-JZ.png +0 -0
  195. package/viewer/assets/xychartDiagram-2RQKCTM6-DTybmPGf.js +7 -0
  196. package/viewer/assets/zh-CN-LNUGB5OW-AIyEr3br.js +10 -0
  197. package/viewer/assets/zh-HK-E62DVLB3-CyQvIghB.js +1 -0
  198. package/viewer/assets/zh-TW-RAJ6MFWO-C9bb32Ou.js +9 -0
  199. package/viewer/favicon.ico +0 -0
  200. package/viewer/flyfish-viewer-manifest.json +5 -0
  201. package/viewer/index.html +14 -0
@@ -0,0 +1,27 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./c4Diagram-AAUBKEIU-DCfnD0yS.js","./dist-Bl_HJvJC.js","./index-0hvuUhZv.js","./index-Bwjgtadn.css","./src-BBw8FbvP.js","./chunk-5ZQYHXKU-C2girjDc.js","./chunk-AGHRB4JF-vbzngFky.js","./chunk-CSCIHK7Q-OdsAx3G8.js","./chunk-ND2GUHAM-28eJdx7E.js","./flowDiagram-I6XJVG4X-BuWsqPkc.js","./chunk-O5CBEL6O-DZNjSn6F.js","./channel-Cvj3_InT.js","./chunk-2J33WTMH-vXxffsmH.js","./chunk-3OPIFGDE-C9LtEwmG.js","./chunk-L5ZTLDWV-B_HlbJUe.js","./chunk-NZK2D7GU-BUIZFEFT.js","./rough.esm-BrTFrov0.js","./chunk-55IACEB6-uprZKw0K.js","./chunk-BSJP7CBP-9m7kELGq.js","./chunk-FMBD7UC4-DiXlV5mw.js","./chunk-KSCS5N6A-WSLcjFr5.js","./chunk-LZXEDZCA-Cqd1LSkM.js","./chunk-XPW4576I-CvDbpA2d.js","./erDiagram-TEJ5UH35-BEdSv6Fr.js","./gitGraphDiagram-PVQCEYII-DR2VhZO_.js","./mermaid-parser.core-Bdy3q53b.js","./chunk-4BX2VUAB-CIKyExbu.js","./chunk-QZHKN3VN-DQmrlo26.js","./ganttDiagram-6RSMTGT7-CJySS69b.js","./linear-CjCAJGt1.js","./defaultLocale-GXPQCpCV.js","./init-Bj57mB65.js","./time-0omzMTb_.js","./infoDiagram-5YYISTIA-DxNv4IA7.js","./chunk-WU5MYG2G-CI2E4kog.js","./pieDiagram-4H26LBE5-DVleOheM.js","./ordinal-CEZ33b-s.js","./arc-Dimj_7G-.js","./pie-DUmD7IHG.js","./quadrantDiagram-W4KKPZXB-CV_EkNJ-.js","./xychartDiagram-2RQKCTM6-DTybmPGf.js","./requirementDiagram-4Y6WPE33-B_kmlnjO.js","./sequenceDiagram-3UESZ5HK-CoR9l1O_.js","./classDiagram-4FO5ZUOK-BR_8dE4R.js","./chunk-727SXJPM-BJJusOVj.js","./classDiagram-v2-Q7XG4LA2-BSPdc-Mh.js","./stateDiagram-AJRCARHV-DdTaUVJA.js","./dagre-D7L3ChvY.js","./graphlib-Bk2wNdF0.js","./chunk-AQP2D5EJ-BPoH0fiI.js","./stateDiagram-v2-BHNVJYJU-D9_r8kG7.js","./journeyDiagram-JHISSGLW-DQQq5Lp7.js","./timeline-definition-PNZ67QCA-CLUsDmue.js","./mindmap-definition-RKZ34NQL-m96D2ClP.js","./kanban-definition-UN3LZRKU-B5eO6Mg1.js","./sankeyDiagram-5OEKKPKP-CCXvqmNS.js","./diagram-LMA3HP47-B_3VIpAA.js","./diagram-2AECGRRQ-DQj687EE.js","./blockDiagram-GPEHLZMM-DETJLwVU.js","./diagram-5GNKFQAL-C9cKajpJ.js","./architectureDiagram-3BPJPVTR-ourcMGqp.js","./cytoscape.esm-DQPqE0MR.js","./diagram-KO2AKTUF-BrHr9ddz.js","./ishikawaDiagram-YF4QCWOH-2rCqsio7.js","./vennDiagram-CIIHVFJN-DFmAzwyu.js","./diagram-OG6HWLK6-CKGkIofl.js","./wardleyDiagram-YWT4CUSO-DpnSL_l7.js"])))=>i.map(i=>d[i]);
2
+ import{D as e,t}from"./index-0hvuUhZv.js";import{i as n,n as r,r as i}from"./chunk-AGHRB4JF-vbzngFky.js";import{$ as a,C as o,E as s,I as c,L as l,N as u,P as d,Q as f,S as p,T as m,V as h,W as g,X as _,Z as v,_ as y,b,c as x,g as S,l as C,m as w,n as ee,p as te,q as ne,r as T,t as re,u as ie}from"./chunk-CSCIHK7Q-OdsAx3G8.js";import{Q as E}from"./src-BBw8FbvP.js";import{G as ae,a as D,b as oe,f as se,g as ce,h as le,i as ue,o as de,v as fe,y as pe}from"./chunk-5ZQYHXKU-C2girjDc.js";import{t as me}from"./chunk-WU5MYG2G-CI2E4kog.js";import{n as he,t as ge}from"./chunk-XPW4576I-CvDbpA2d.js";import"./chunk-BSJP7CBP-9m7kELGq.js";import"./chunk-L5ZTLDWV-B_HlbJUe.js";import"./chunk-NZK2D7GU-BUIZFEFT.js";import{i as _e,o as ve}from"./chunk-O5CBEL6O-DZNjSn6F.js";import"./chunk-3OPIFGDE-C9LtEwmG.js";import"./chunk-KSCS5N6A-WSLcjFr5.js";import{n as ye}from"./chunk-LZXEDZCA-Cqd1LSkM.js";var be={rect:`rectangle`,circle:`ellipse`},xe={startOnLoad:!1,flowchart:{curve:`linear`},themeVariables:{fontSize:`20px`},maxEdges:500,maxTextSize:5e4},O=class{constructor({converter:e}){this.convert=(e,t)=>this.converter(e,{...t,fontSize:t.fontSize||20}),this.converter=e}},k;(function(e){e.ROUND=`round`,e.STADIUM=`stadium`,e.DOUBLECIRCLE=`doublecircle`,e.CIRCLE=`circle`,e.DIAMOND=`diamond`,e.CYLINDER=`cylinder`})(k||={});var A;(function(e){e.COLOR=`color`})(A||={});var j;(function(e){e.FILL=`fill`,e.STROKE=`stroke`,e.STROKE_WIDTH=`stroke-width`,e.STROKE_DASHARRAY=`stroke-dasharray`})(j||={});var Se=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.removeMarkdown=void 0,e.removeMarkdown=function(e,t){t===void 0&&(t={listUnicodeChar:``}),t||={},t.listUnicodeChar=t.hasOwnProperty(`listUnicodeChar`)?t.listUnicodeChar:!1,t.stripListLeaders=t.hasOwnProperty(`stripListLeaders`)?t.stripListLeaders:!0,t.gfm=t.hasOwnProperty(`gfm`)?t.gfm:!0,t.useImgAltText=t.hasOwnProperty(`useImgAltText`)?t.useImgAltText:!0,t.preserveLinks=t.hasOwnProperty(`preserveLinks`)?t.preserveLinks:!1;var n=e||``;n=n.replace(/^(-\s*?|\*\s*?|_\s*?){3,}\s*$/gm,``);try{t.stripListLeaders&&(n=t.listUnicodeChar?n.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm,t.listUnicodeChar+` $1`):n.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm,`$1`)),t.gfm&&(n=n.replace(/\n={2,}/g,`
3
+ `).replace(/~{3}.*\n/g,``).replace(/~~/g,``).replace(/`{3}.*\n/g,``)),t.preserveLinks&&(n=n.replace(/\[(.*?)\][\[\(](.*?)[\]\)]/g,`$1 ($2)`)),n=n.replace(/<[^>]*>/g,``).replace(/^[=\-]{2,}\s*$/g,``).replace(/\[\^.+?\](\: .*?$)?/g,``).replace(/\s{0,2}\[.*?\]: .*?$/g,``).replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g,t.useImgAltText?`$1`:``).replace(/\[(.*?)\][\[\(].*?[\]\)]/g,`$1`).replace(/^\s{0,3}>\s?/g,``).replace(/(^|\n)\s{0,3}>\s?/g,`
4
+
5
+ `).replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g,``).replace(/^(\n)?\s{0,}#{1,6}\s+| {0,}(\n)?\s{0,}#{0,} {0,}(\n)?\s{0,}$/gm,`$1$2$3`).replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g,`$2`).replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g,`$2`).replace(/(`{3,})(.*?)\1/gm,`$2`).replace(/`(.+?)`/g,`$1`).replace(/\n{2,}/g,`
6
+
7
+ `)}catch(t){return console.error(t),e}return n}}))(),Ce={arrow_circle:{endArrowhead:`circle`},arrow_cross:{endArrowhead:`bar`},arrow_open:{endArrowhead:null,startArrowhead:null},double_arrow_circle:{endArrowhead:`circle`,startArrowhead:`circle`},double_arrow_cross:{endArrowhead:`bar`,startArrowhead:`bar`},double_arrow_point:{endArrowhead:`arrow`,startArrowhead:`arrow`}},we=e=>Ce[e],Te=e=>{let t=e.text;return e.labelType===`markdown`&&(t=(0,Se.removeMarkdown)(e.text)),Ee(t)},Ee=e=>e.replace(/\s?(fa|fab):[a-zA-Z0-9-]+/g,``),De=e=>{let t={};return Object.keys(e).forEach(n=>{switch(n){case j.FILL:t.backgroundColor=e[n],t.fillStyle=`solid`;break;case j.STROKE:t.strokeColor=e[n];break;case j.STROKE_WIDTH:t.strokeWidth=Number(e[n]?.split(`px`)[0]);break;case j.STROKE_DASHARRAY:t.strokeStyle=`dashed`;break}}),t},Oe=e=>{let t={};return Object.keys(e).forEach(n=>{switch(n){case A.COLOR:t.strokeColor=e[n];break}}),t},ke=(e,t)=>[e,t],Ae=32,je=.62,Me=12,Ne=12,Pe=(e,t)=>Math.max(20,Math.ceil(e.length*t*je)),Fe=(e,t,n,r)=>{let i=r||20;if(e!==k.CYLINDER||!t||t.includes(`
8
+ `))return i;let a=Math.max(20,n-Me);return Pe(t,i)<=a?i:Math.max(Ne,Math.floor(a/(t.length*je)))},Ie=e=>{let t={};e.subGraphs.map(n=>{n.nodeIds.forEach(r=>{t[n.id]={id:n.id,parent:null,isLeaf:!1},t[r]={id:r,parent:n.id,isLeaf:e.vertices[r]!==void 0}})});let n={};return[...Object.keys(e.vertices),...e.subGraphs.map(e=>e.id)].forEach(e=>{if(!t[e])return;let r=t[e],i=[];for(r.isLeaf||i.push(`subgraph_group_${r.id}`);r.parent;)i.push(`subgraph_group_${r.parent}`),r=t[r.parent];n[e]=i}),{getGroupIds:e=>n[e]||[],getParentId:e=>t[e]?t[e].parent:null}},Le=new O({converter:(e,t)=>{let n=[],r=t.fontSize,{getGroupIds:i,getParentId:a}=Ie(e);return e.subGraphs.reverse().forEach(e=>{let t=i(e.id),a=Te(e),o=Pe(a,r||16)+Ae*2,s=Math.max(e.width,o),c=e.x-(s-e.width)/2,l=De(e.containerStyle),u=Oe(e.labelStyle),d={id:e.id,type:`rectangle`,groupIds:t,x:c,y:e.y,width:s,height:e.height,label:{groupIds:t,text:a,fontSize:r,verticalAlign:`top`,...u},...l};n.push(d)}),Object.values(e.vertices).forEach(e=>{if(!e)return;let t=i(e.id),a=Te(e),o=Fe(e.type,a,e.width,r),s=De(e.containerStyle),c=Oe(e.labelStyle),l={id:e.id,type:`rectangle`,groupIds:t,x:e.x,y:e.y,width:e.width,height:e.height,strokeWidth:2,label:{groupIds:t,text:a,fontSize:o,...c},link:e.link||null,...s};switch(e.type){case k.STADIUM:l={...l,roundness:{type:3}};break;case k.ROUND:l={...l,roundness:{type:3}};break;case k.DOUBLECIRCLE:{t.push(`doublecircle_${e.id}}`);let r={type:`ellipse`,groupIds:t,x:e.x+5,y:e.y+5,width:e.width-10,height:e.height-10,strokeWidth:2,roundness:{type:3},label:{groupIds:t,text:a,fontSize:o,...c}};l={...l,groupIds:t,type:`ellipse`},n.push(r);break}case k.CIRCLE:l.type=`ellipse`;break;case k.DIAMOND:l.type=`diamond`;break}n.push(l)}),e.edges.forEach(e=>{let t=[],o=a(e.start),s=a(e.end);o&&o===s&&(t=i(o));let{startX:c,startY:l,reflectionPoints:u}=e,d=u.map(e=>ke(e.x-u[0].x,e.y-u[0].y)),f=we(e.type||`arrow_point`),p=n.find(t=>t.id===e.start),m=n.find(t=>t.id===e.end);if(!p||!m)return;let h={id:`${e.start}_${e.end}`,type:`arrow`,groupIds:t,x:c,y:l,strokeWidth:e.stroke===`thick`?4:2,strokeStyle:e.stroke===`dotted`?`dashed`:void 0,points:d,...e.text?{label:{text:Te(e),fontSize:r,groupIds:t}}:{},roundness:{type:2},...f,start:{id:p.id||``},end:{id:m.id||``}};n.push(h)}),{elements:n}}}),M=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((e,t)=>(t&=63,t<36?e+=t.toString(36):t<62?e+=(t-26).toString(36).toUpperCase():t>62?e+=`-`:e+=`_`,e),``),Re=new O({converter:e=>{let t=M(),{width:n,height:r}=e,i={type:`image`,x:0,y:0,width:n,height:r,status:`saved`,fileId:t};return{files:{[t]:{id:t,mimeType:e.mimeType,dataURL:e.dataURL}},elements:[i]}}}),ze=(e,t)=>[e,t],Be=e=>e.replace(/\\n/g,`
9
+ `),N=e=>{let t={type:`line`,x:e.startX,y:e.startY,points:[ze(0,0),ze(e.endX-e.startX,e.endY-e.startY)],width:e.endX-e.startX,height:e.endY-e.startY,strokeStyle:e.strokeStyle||`solid`,strokeColor:e.strokeColor||`#000`,strokeWidth:e.strokeWidth||1};return e.groupId&&Object.assign(t,{groupIds:[e.groupId]}),e.id&&Object.assign(t,{id:e.id}),t},P=e=>{let t={type:`text`,x:e.x,y:e.y,width:e.width,height:e.height,text:Be(e.text)||``,fontSize:e.fontSize,verticalAlign:`top`,strokeColor:e.color};return e.groupId&&Object.assign(t,{groupIds:[e.groupId]}),e.id&&Object.assign(t,{id:e.id}),t},Ve=e=>{let t={text:Be(e?.label?.text||``),fontSize:e?.label?.fontSize,textAlign:e.label?.textAlign,verticalAlign:e.label?.verticalAlign||`middle`,strokeColor:e.label?.color||`#000`,...e.groupId?{groupIds:[e.groupId]}:{}},n={};e.type===`rectangle`&&e.subtype===`activation`&&(n={backgroundColor:`#e9ecef`,fillStyle:`solid`});let r={id:e.id,type:e.type,x:e.x,y:e.y,width:e.width,height:e.height,label:t,strokeStyle:e?.strokeStyle,strokeWidth:e?.strokeWidth,strokeColor:e?.strokeColor,backgroundColor:e?.bgColor,fillStyle:`solid`,...n};return e.groupId&&Object.assign(r,{groupIds:[e.groupId]}),r},He=e=>{let t={type:`arrow`,x:e.startX,y:e.startY,points:e.points?.map(([e,t])=>ze(e,t))||[ze(0,0),ze(e.endX-e.startX,e.endY-e.startY)],width:e.endX-e.startX,height:e.endY-e.startY,strokeStyle:e?.strokeStyle||`solid`,endArrowhead:e?.endArrowhead||null,startArrowhead:e?.startArrowhead||null,label:{text:Be(e?.label?.text||``),fontSize:16,textAlign:e?.label?.textAlign,verticalAlign:e?.label?.verticalAlign},roundness:{type:2},start:e.start,end:e.end};return e.groupId&&Object.assign(t,{groupIds:[e.groupId]}),t},Ue=10,We=16,Ge=24,Ke=4,qe=e=>{if(!e)return!0;let t=e.trim().toLowerCase();return t===`transparent`||t===`none`||t===`rgba(0,0,0,0)`||t===`rgba(0, 0, 0, 0)`},Je=(e,t)=>Math.max(20,Math.round(e.length*t*.6)),Ye=(e,t,n=!0)=>{let r=e,i=r.groupIds??[];if(i.includes(t)||(r.groupIds=[...i,t]),!n||!r.label)return;let a=r.label.groupIds??[];a.includes(t)||(r.label.groupIds=[...a,t])},Xe=new O({converter:e=>{let t=[],n=[];if(Object.values(e.nodes).forEach(e=>{!e||!e.length||e.forEach(e=>{let r;switch(e.type){case`line`:r=N(e);break;case`rectangle`:case`ellipse`:r=Ve(e);break;case`text`:r=P(e);break;default:throw`unknown type ${e.type}`}e.type===`rectangle`&&e?.subtype===`activation`?n.push(r):t.push(r)})}),Object.values(e.lines).forEach(e=>{e&&t.push(N(e))}),Object.values(e.arrows).forEach(e=>{e&&(t.push(He(e)),e.sequenceNumber&&t.push(Ve(e.sequenceNumber)))}),t.push(...n),e.loops){let{lines:n,texts:r,nodes:i}=e.loops;n.forEach(e=>{t.push(N(e))}),r.forEach(e=>{t.push(P(e))}),i.forEach(e=>{t.push(Ve(e))})}return e.groups&&e.groups.forEach(e=>{let{actorKeys:n,name:r}=e,i=1/0,a=1/0,o=0,s=0;if(!n.length)return;let c=t.filter(e=>{if(e.id){let t=e.id.indexOf(`-`),r=e.id.substring(0,t);return n.includes(r)}return!1});if(!c.length||(c.forEach(e=>{e.x===void 0||e.y===void 0||e.width===void 0||e.height===void 0||(i=Math.min(i,e.x),a=Math.min(a,e.y),o=Math.max(o,e.x+e.width),s=Math.max(s,e.y+e.height))}),!Number.isFinite(i)||!Number.isFinite(a)||!Number.isFinite(o)||!Number.isFinite(s)))return;let l=i-Ue,u=a-Ue,d=o-i+Ue*2,f=s-a+Ue*2,p=M(),m=M(),h=Ve({type:`rectangle`,x:l,y:u,width:d,height:f,bgColor:qe(e.fill)?void 0:e.fill,strokeColor:`#1f1f1f`,strokeWidth:1,id:p,groupId:m});if(t.unshift(h),t.forEach(e=>{e.id!==p&&(e.x===void 0||e.y===void 0||e.width===void 0||e.height===void 0||e.x>=i&&e.x+e.width<=o&&e.y>=a&&e.y+e.height<=s&&Ye(e,m))}),r){let e=P({type:`text`,id:M(),text:r,x:l+Ke,y:u-Ge,width:Je(r,We),height:We+8,fontSize:We,color:`#1f1f1f`,groupId:m});Ye(e,m,!1),t.push(e)}}),{elements:t}}}),Ze=new O({converter:e=>{let t=[];return e.nodes.forEach(e=>{!e||!e.length||e.forEach(e=>{let n;switch(e.type){case`line`:n=N(e);break;case`rectangle`:case`ellipse`:n=Ve(e);break;case`text`:n=P(e);break;default:throw`unknown type ${e.type}`}t.push(n)})}),Object.values(e.lines).forEach(e=>{e&&t.push(N(e))}),Object.values(e.arrows).forEach(e=>{if(!e)return;let n=He(e);t.push(n)}),Object.values(e.text).forEach(e=>{let n=P(e);t.push(n)}),Object.values(e.namespaces).forEach(n=>{let r=Object.keys(n.classes),i=[...r],a=[...e.lines,...e.arrows,...e.text];r.forEach(e=>{let t=a.filter(t=>t.metadata&&t.metadata.classId===e).map(e=>e.id);t.length&&i.push(...t)});let o={type:`frame`,id:M(),name:n.id,children:i};t.push(o)}),{elements:t}}}),Qe=new O({converter:e=>{let t=[];return e.nodes.forEach(e=>{!e||!e.length||e.forEach(e=>{let n;switch(e.type){case`line`:n=N(e);break;case`rectangle`:case`ellipse`:n=Ve(e);break;case`text`:n=P(e);break;default:throw`unknown type ${e.type}`}t.push(n)})}),e.lines.forEach(e=>{t.push(N(e))}),e.arrows.forEach(e=>{t.push(He(e))}),e.text.forEach(e=>{t.push(P(e))}),{elements:t}}}),$e=(e,t)=>[e,t],et=16,tt=14,nt=1,rt=`#000000`,it=5,at=it*2,ot=it*2,st=1.25,ct=new Set([`choice`,`fork`,`join`,`stateStart`,`stateEnd`,`divider`]),lt=e=>e.shape===`stateEnd`?[`state_end_group_${e.id}`]:void 0,ut=e=>e.shape===`rectWithTitle`&&e.description.length?[e.text,...e.description].join(`
10
+ `):e.text,F,dt=()=>{if(F!==void 0)return F;if(typeof document>`u`)return F=null,F;try{F=document.createElement(`canvas`).getContext(`2d`)}catch{F=null}return F},I=(e,t)=>{let n=dt();return n?(n.font=`${t}px Excalifont, sans-serif`,n.measureText(e).width):e.length*t*.6},ft=(e,t,n)=>{if(I(e,t)<=n)return[e];let r=[],i=``;for(let a of e){let e=`${i}${a}`;if(i&&I(e,t)>n){r.push(i),i=a;continue}i=e}return i&&r.push(i),r},pt=(e,t,n)=>{if(!e.trim()||I(e,t)<=n)return e;let r=e.split(/\s+/).filter(Boolean),i=[],a=``;for(let e of r){let r=ft(e,t,n);for(let[e,o]of r.entries()){let r=a?`${a}${a&&e===0?` `:``}${o}`:o;if(I(r,t)<=n){a=r;continue}a&&i.push(a),a=o}r.length}return i.push(a),i.join(`
11
+ `)},mt=(e,t,n)=>{let r=e.map(e=>pt(e,t,n)).join(`
12
+ `).split(`
13
+ `);return{width:Math.max(...r.map(e=>I(e,t))),height:r.length*t*st}},ht=(e,t,n,r)=>{let i=e.split(`
14
+ `);for(let e=et;e>=tt;e-=nt){let{height:r}=mt(i,e,t);if(r<=n)return e}return r},gt=e=>{let t=ut(e);if(!t||ct.has(e.shape))return et;let n=Math.max(1,e.width-at),r=Math.max(1,e.height-ot),i=t.split(`
15
+ `);return i.length>1&&Math.max(...i.map(e=>I(e,et)))<=n?et:ht(t,n,r,i.length===1?et:tt)},_t=e=>{if(ct.has(e.shape))return;let t=ut(e);if(t)return{text:t,fontSize:gt(e),verticalAlign:e.shape===`rectWithTitle`||e.shape===`roundedWithTitle`?`top`:`middle`,...Oe(e.labelStyle)}},vt=e=>{let t=De(e.containerStyle),n=_t(e),r=e.shape===`choice`?`diamond`:e.shape===`stateStart`||e.shape===`stateEnd`?`ellipse`:`rectangle`,i=e.shape===`rect`||e.shape===`rectWithTitle`||e.shape===`roundedWithTitle`,a=e.shape===`stateStart`||e.shape===`fork`||e.shape===`join`,o=t.backgroundColor||t.strokeColor||rt,s=t.strokeColor||t.backgroundColor||rt;return{id:e.id,type:r,...lt(e)?{groupIds:lt(e)}:{},x:e.x,y:e.y,width:e.width,height:e.height,...n?{label:n}:{},...t,...i?{roundness:{type:3}}:{},...a?{backgroundColor:o,strokeColor:s,fillStyle:`solid`}:{}}},yt=e=>{if(!e.dividerLine)return null;let t=De(e.containerStyle);return{id:`${e.id}__divider`,type:`line`,x:e.dividerLine.startX,y:e.dividerLine.startY,width:e.dividerLine.endX-e.dividerLine.startX,height:e.dividerLine.endY-e.dividerLine.startY,points:[$e(0,0),$e(e.dividerLine.endX-e.dividerLine.startX,e.dividerLine.endY-e.dividerLine.startY)],strokeColor:t.strokeColor||`#000`,strokeWidth:t.strokeWidth||1}},bt=e=>{let t=De(e.containerStyle),n=Math.max(2,Math.min(e.width,e.height)*.32),r=e.endInnerColor||t.strokeColor||t.backgroundColor||rt;return{id:`${e.id}__inner`,type:`ellipse`,groupIds:lt(e),x:e.x+n,y:e.y+n,width:Math.max(1,e.width-n*2),height:Math.max(1,e.height-n*2),backgroundColor:r,strokeColor:r,fillStyle:`solid`,strokeWidth:1}},xt=e=>{let t=e.reflectionPoints.map((e,t,n)=>{let r=n[0];return t===0?$e(0,0):$e(e.x-r.x,e.y-r.y)});return{id:e.id,type:`arrow`,x:e.startX,y:e.startY,width:e.endX-e.startX,height:e.endY-e.startY,points:t,strokeColor:e.strokeColor||`#000`,strokeWidth:e.strokeWidth||2,strokeStyle:e.strokeStyle||`solid`,endArrowhead:e.isNoteEdge?null:`triangle`,roundness:{type:2},start:{id:e.start},end:{id:e.end},...e.text?{label:{text:e.text,fontSize:16}}:{}}},St=new O({converter:e=>{let t=[];return e.nodes.forEach(e=>{if(!e.isRenderable)return;let n=vt(e);t.push(n);let r=yt(e);r&&t.push(r),e.shape===`stateEnd`&&t.push(bt(e))}),e.edges.forEach(e=>{t.push(xt(e))}),{elements:t}}}),L=e=>{e=wt(e);let t=e.replace(/#(\d+);/g,`&#$1;`).replace(/#([a-z]+);/g,`&$1;`),n=document.createElement(`textarea`);return n.innerHTML=t,n.value},R=e=>{let t=e.getAttribute(`transform`)?.match(/translate\(([ \d.-]+),\s*([\d.-]+)\)/),n=0,r=0;return t&&(n=Number(t[1]),r=Number(t[2])),{transformX:n,transformY:r}},Ct=e=>{let t=e;return t=t.replace(/style.*:\S*#.*;/g,e=>e.substring(0,e.length-1)),t=t.replace(/classDef.*:\S*#.*;/g,e=>e.substring(0,e.length-1)),t=t.replace(/#\w+;/g,e=>{let t=e.substring(1,e.length-1);return/^\+?\d+$/.test(t)?`fl°°${t}¶ß`:`fl°${t}¶ß`}),t},wt=function(e){return e.replace(/fl°°/g,`#`).replace(/fl°/g,`&`).replace(/¶ß/g,`;`)},Tt=.5,Et=(e,t=Tt)=>{let n=[];return e.forEach(e=>{let r=n[n.length-1];if(!r){n.push(e);return}Math.hypot(e[0]-r[0],e[1]-r[1])<=t||n.push(e)}),n},Dt=e=>{let t=e.getAttribute(`d`);if(!t)return null;let n=Array.from(t.matchAll(/-?\d*\.?\d+(?:e[-+]?\d+)?/gi),e=>Number(e[0]));return n.length<4?null:{startX:n[0],startY:n[1],endX:n[n.length-2],endY:n[n.length-1]}},Ot=e=>{let t=e.getAttribute(`data-points`);if(!t){let t=Dt(e);return t?[{x:t.startX,y:t.startY},{x:t.endX,y:t.endY}]:[]}try{let e=atob(t),n=JSON.parse(e);return Array.isArray(n)?n.filter(e=>e&&typeof e.x==`number`&&typeof e.y==`number`&&Number.isFinite(e.x)&&Number.isFinite(e.y)):[]}catch{return[]}},kt=(e,t={x:0,y:0},n=`LM`)=>{if(e.tagName.toLowerCase()!==`path`)throw Error(`Invalid input: Expected an HTMLElement of tag "path", got ${e.tagName}`);let r=e.getAttribute(`d`);if(!r)throw Error(`Path element does not contain a "d" attribute`);let i=r.split(RegExp(`(?=[${n}])`)),a=i[0].substring(1).split(`,`).map(e=>parseFloat(e)),o=i[i.length-1].substring(1).split(`,`).map(e=>parseFloat(e)),s=i.map(e=>{let t=e[0],n=e.substring(1).split(`,`).map(e=>parseFloat(e));return t===`C`?{x:n[4],y:n[5],command:t}:{x:n[0],y:n[1],command:t}}).filter((e,t,n)=>{if(t===0||t===n.length-1)return!0;if(e.x===n[t-1].x&&e.y===n[t-1].y||t===n.length-2&&e.command===`C`)return!1;if(t===n.length-2&&(n[t-1].x===e.x||n[t-1].y===e.y)){let t=n[n.length-1];return Math.hypot(t.x-e.x,t.y-e.y)>20}return e.x!==n[t-1].x||e.y!==n[t-1].y}).map(e=>({x:e.x+t.x,y:e.y+t.y}));return{startX:a[0]+t.x,startY:a[1]+t.y,endX:o[0]+t.x,endY:o[1]+t.y,reflectionPoints:s}},At=e=>({...e,elements:e.elements.map(e=>{if(!(`points`in e)||!Array.isArray(e.points))return e;let t=e.points;if(t.length<2)return e;let n=Et(t);return n.length===t.length?e:{...e,points:n}})}),jt=(e,t={})=>At((()=>{switch(e.type){case`graphImage`:return Re.convert(e,t);case`flowchart`:return Le.convert(e,t);case`sequence`:return Xe.convert(e,t);case`class`:return Ze.convert(e,t);case`erd`:return Qe.convert(e,t);case`state`:return St.convert(e,t);default:throw Error(`graphToExcalidraw: unknown graph type "${e.type}, only flowcharts are supported!"`)}})());function Mt(e){let t=e?.constructor;return e===(typeof t==`function`?t.prototype:Object.prototype)}function Nt(e){if(e==null)return!0;if(ae(e))return typeof e.splice!=`function`&&typeof e!=`string`&&!oe(e)&&!fe(e)&&!pe(e)?!1:e.length===0;if(typeof e==`object`){if(e instanceof Map||e instanceof Set)return e.size===0;let t=Object.keys(e);return Mt(e)?t.filter(e=>e!==`constructor`).length===0:t.length===0}return!0}var Pt=`comm`,Ft=`rule`,It=`decl`,Lt=`@import`,Rt=`@namespace`,zt=`@keyframes`,Bt=`@layer`,Vt=Math.abs,Ht=String.fromCharCode;function Ut(e){return e.trim()}function Wt(e,t,n){return e.replace(t,n)}function z(e,t){return e.charCodeAt(t)|0}function B(e,t,n){return e.slice(t,n)}function V(e){return e.length}function Gt(e){return e.length}function Kt(e,t){return t.push(e),e}var qt=1,Jt=1,Yt=0,H=0,U=0,Xt=``;function Zt(e,t,n,r,i,a,o,s){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:qt,column:Jt,length:o,return:``,siblings:s}}function Qt(){return U}function $t(){return U=H>0?z(Xt,--H):0,Jt--,U===10&&(Jt=1,qt--),U}function W(){return U=H<Yt?z(Xt,H++):0,Jt++,U===10&&(Jt=1,qt++),U}function G(){return z(Xt,H)}function en(){return H}function tn(e,t){return B(Xt,e,t)}function nn(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function rn(e){return qt=Jt=1,Yt=V(Xt=e),H=0,[]}function an(e){return Xt=``,e}function on(e){return Ut(tn(H-1,ln(e===91?e+2:e===40?e+1:e)))}function sn(e){for(;(U=G())&&U<33;)W();return nn(e)>2||nn(U)>3?``:` `}function cn(e,t){for(;--t&&W()&&!(U<48||U>102||U>57&&U<65||U>70&&U<97););return tn(e,en()+(t<6&&G()==32&&W()==32))}function ln(e){for(;W();)switch(U){case e:return H;case 34:case 39:e!==34&&e!==39&&ln(U);break;case 40:e===41&&ln(e);break;case 92:W();break}return H}function un(e,t){for(;W()&&e+U!==57&&!(e+U===84&&G()===47););return`/*`+tn(t,H-1)+`*`+Ht(e===47?e:W())}function dn(e){for(;!nn(G());)W();return tn(e,H)}function fn(e){return an(pn(``,null,null,null,[``],e=rn(e),0,[0],e))}function pn(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=0,b=``,x=i,S=a,C=r,w=b;g;)switch(m=y,y=W()){case 40:m!=108&&z(w,d-1)==58?(v++,w+=`(`):w+=on(y);break;case 41:v--,w+=`)`;break;case 34:case 39:case 91:w+=on(y);break;case 9:case 10:case 13:case 32:if(v>0){w+=Ht(y);break}w+=sn(m);break;case 92:w+=cn(en()-1,7);continue;case 47:switch(G()){case 42:case 47:Kt(hn(un(W(),en()),t,n,c),c),(nn(m||1)==5||nn(G()||1)==5)&&V(w)&&B(w,-1,void 0)!==` `&&(w+=` `);break;default:w+=`/`}break;case 123*h:s[l++]=V(w)*_;case 125*h:case 59:case 0:if(v>0&&y){w+=Ht(y);break}switch(y){case 0:case 125:g=0;case 59+u:_==-1&&(w=Wt(w,/\f/g,``)),p>0&&(V(w)-d||h===0)&&Kt(p>32?gn(w+`;`,r,n,d-1,c):gn(Wt(w,` `,``)+`;`,r,n,d-2,c),c);break;case 59:w+=`;`;default:if(Kt(C=mn(w,t,n,l,u,i,s,b,x=[],S=[],d,a),a),y===123)if(u===0)pn(w,t,C,C,x,a,d,s,S);else{switch(f){case 99:if(z(w,3)===110)break;case 108:if(z(w,2)===97)break;default:u=0;case 100:case 109:case 115:}u?pn(e,C,C,r&&Kt(mn(e,C,C,0,0,i,s,b,i,x=[],d,S),S),i,S,d,s,r?x:S):pn(w,C,C,C,[``],S,0,s,S)}}l=u=p=0,h=_=1,b=w=``,d=o;break;case 58:d=1+V(w),p=m;default:if(h<1){if(y==123)--h;else if(y==125&&h++==0&&$t()==125)continue}switch(w+=Ht(y),y*h){case 38:_=u>0?1:(w+=`\f`,-1);break;case 44:if(v>0)break;s[l++]=(V(w)-1)*_,_=1;break;case 64:G()===45&&(w+=on(W())),f=G(),u=d=V(b=w+=dn(en())),y++;break;case 45:m===45&&V(w)==2&&(h=0)}}return a}function mn(e,t,n,r,i,a,o,s,c,l,u,d){for(var f=i-1,p=i===0?a:[``],m=Gt(p),h=0,g=0,_=0;h<r;++h)for(var v=0,y=B(e,f+1,f=Vt(g=o[h])),b=e;v<m;++v)(b=Ut(g>0?p[v]+` `+y:Wt(y,/&\f/g,p[v])))&&(c[_++]=b);return Zt(e,t,n,i===0?Ft:s,c,l,u,d)}function hn(e,t,n,r){return Zt(e,t,n,Pt,Ht(Qt()),B(e,2,-2),0,r)}function gn(e,t,n,r,i){return Zt(e,t,n,It,B(e,0,r),B(e,r+1,-1),r,i)}function _n(e,t){for(var n=``,r=0;r<e.length;r++)n+=t(e[r],r,e,t)||``;return n}function vn(e,t,n,r){switch(e.type){case Bt:if(e.children.length)break;case Lt:case Rt:case It:return e.return=e.return||e.value;case Pt:return``;case zt:return e.return=e.value+`{`+_n(e.children,r)+`}`;case Ft:if(!V(e.value=e.props.join(`,`)))return``}return V(n=_n(e.children,r))?e.return=e.value+`{`+n+`}`:``}function yn(e){var t=Gt(e);return function(n,r,i,a){for(var o=``,s=0;s<t;s++)o+=e[s](n,r,i,a)||``;return o}}var bn=`c4`,xn={id:bn,detector:r(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./c4Diagram-AAUBKEIU-DCfnD0yS.js`);return{diagram:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url);return{id:bn,diagram:e}},`loader`)},Sn=`flowchart`,Cn={id:Sn,detector:r((e,t)=>t?.flowchart?.defaultRenderer===`dagre-wrapper`||t?.flowchart?.defaultRenderer===`elk`?!1:/^\s*graph/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./flowDiagram-I6XJVG4X-BuWsqPkc.js`);return{diagram:e}},__vite__mapDeps([9,10,4,5,1,2,3,6,7,11,12,13,14,15,16,17,18,19,20,21,8,22]),import.meta.url);return{id:Sn,diagram:e}},`loader`)},wn=`flowchart-v2`,Tn={id:wn,detector:r((e,t)=>t?.flowchart?.defaultRenderer===`dagre-d3`?!1:(t?.flowchart?.defaultRenderer===`elk`&&(t.layout=`elk`),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer===`dagre-wrapper`?!0:/^\s*flowchart/.test(e)),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./flowDiagram-I6XJVG4X-BuWsqPkc.js`);return{diagram:e}},__vite__mapDeps([9,10,4,5,1,2,3,6,7,11,12,13,14,15,16,17,18,19,20,21,8,22]),import.meta.url);return{id:wn,diagram:e}},`loader`)},En=`er`,Dn={id:En,detector:r(e=>/^\s*erDiagram/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./erDiagram-TEJ5UH35-BEdSv6Fr.js`);return{diagram:e}},__vite__mapDeps([23,10,4,5,1,2,3,6,7,11,12,13,14,15,16,17,18,20,21]),import.meta.url);return{id:En,diagram:e}},`loader`)},On=`gitGraph`,kn={id:On,detector:r(e=>/^\s*gitGraph/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./gitGraphDiagram-PVQCEYII-DR2VhZO_.js`);return{diagram:e}},__vite__mapDeps([24,25,2,3,4,5,1,6,7,26,27]),import.meta.url);return{id:On,diagram:e}},`loader`)},An=`gantt`,jn={id:An,detector:r(e=>/^\s*gantt/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./ganttDiagram-6RSMTGT7-CJySS69b.js`);return{diagram:e}},__vite__mapDeps([28,2,3,1,29,4,30,31,32,5,6,7]),import.meta.url);return{id:An,diagram:e}},`loader`)},Mn=`info`,Nn={id:Mn,detector:r(e=>/^\s*info/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./infoDiagram-5YYISTIA-DxNv4IA7.js`);return{diagram:e}},__vite__mapDeps([33,25,2,3,6,7,34,4]),import.meta.url);return{id:Mn,diagram:e}},`loader`)},Pn=`pie`,Fn={id:Pn,detector:r(e=>/^\s*pie/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./pieDiagram-4H26LBE5-DVleOheM.js`);return{diagram:e}},__vite__mapDeps([35,25,2,3,4,36,31,37,5,1,6,7,38,26,34]),import.meta.url);return{id:Pn,diagram:e}},`loader`)},In=`quadrantChart`,Ln={id:In,detector:r(e=>/^\s*quadrantChart/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./quadrantDiagram-W4KKPZXB-CV_EkNJ-.js`);return{diagram:e}},__vite__mapDeps([39,29,4,30,31,6,2,3,7]),import.meta.url);return{id:In,diagram:e}},`loader`)},Rn=`xychart`,zn={id:Rn,detector:r(e=>/^\s*xychart(-beta)?/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./xychartDiagram-2RQKCTM6-DTybmPGf.js`);return{diagram:e}},__vite__mapDeps([40,10,4,5,1,2,3,6,7,29,30,31,36,34]),import.meta.url);return{id:Rn,diagram:e}},`loader`)},Bn=`requirement`,Vn={id:Bn,detector:r(e=>/^\s*requirement(Diagram)?/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./requirementDiagram-4Y6WPE33-B_kmlnjO.js`);return{diagram:e}},__vite__mapDeps([41,10,4,5,1,2,3,6,7,12,13,14,15,16,17,18,20,21]),import.meta.url);return{id:Bn,diagram:e}},`loader`)},Hn=`sequence`,Un={id:Hn,detector:r(e=>/^\s*sequenceDiagram/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./sequenceDiagram-3UESZ5HK-CoR9l1O_.js`);return{diagram:e}},__vite__mapDeps([42,1,2,3,4,5,6,7,8,27,22]),import.meta.url);return{id:Hn,diagram:e}},`loader`)},Wn=`class`,Gn={id:Wn,detector:r((e,t)=>t?.class?.defaultRenderer===`dagre-wrapper`?!1:/^\s*classDiagram/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./classDiagram-4FO5ZUOK-BR_8dE4R.js`);return{diagram:e}},__vite__mapDeps([43,10,4,5,1,2,3,6,7,12,13,14,15,16,17,44,19,21,20,18,8]),import.meta.url);return{id:Wn,diagram:e}},`loader`)},Kn=`classDiagram`,qn={id:Kn,detector:r((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer===`dagre-wrapper`?!0:/^\s*classDiagram-v2/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./classDiagram-v2-Q7XG4LA2-BSPdc-Mh.js`);return{diagram:e}},__vite__mapDeps([45,10,4,5,1,2,3,6,7,12,13,14,15,16,17,44,19,21,20,18,8]),import.meta.url);return{id:Kn,diagram:e}},`loader`)},Jn=`state`,Yn={id:Jn,detector:r((e,t)=>t?.state?.defaultRenderer===`dagre-wrapper`?!1:/^\s*stateDiagram/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./stateDiagram-AJRCARHV-DdTaUVJA.js`);return{diagram:e}},__vite__mapDeps([46,10,4,5,1,2,3,6,7,47,48,12,13,14,15,16,17,49,21,20,18]),import.meta.url);return{id:Jn,diagram:e}},`loader`)},Xn=`stateDiagram`,Zn={id:Xn,detector:r((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer===`dagre-wrapper`),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./stateDiagram-v2-BHNVJYJU-D9_r8kG7.js`);return{diagram:e}},__vite__mapDeps([50,10,4,5,1,2,3,6,7,12,13,14,15,16,17,49,21,20,18]),import.meta.url);return{id:Xn,diagram:e}},`loader`)},Qn=`journey`,$n={id:Qn,detector:r(e=>/^\s*journey/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./journeyDiagram-JHISSGLW-DQQq5Lp7.js`);return{diagram:e}},__vite__mapDeps([51,4,37,6,2,3,7,19,8,1]),import.meta.url);return{id:Qn,diagram:e}},`loader`)},er={draw:r((e,t,n)=>{i.debug(`rendering svg for syntax error
16
+ `);let r=me(t),a=r.append(`g`);r.attr(`viewBox`,`0 0 2412 512`),x(r,100,512,!0),a.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z`),a.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z`),a.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z`),a.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z`),a.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z`),a.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z`),a.append(`text`).attr(`class`,`error-text`).attr(`x`,1440).attr(`y`,250).attr(`font-size`,`150px`).style(`text-anchor`,`middle`).text(`Syntax error in text`),a.append(`text`).attr(`class`,`error-text`).attr(`x`,1250).attr(`y`,400).attr(`font-size`,`100px`).style(`text-anchor`,`middle`).text(`mermaid version ${n}`)},`draw`)},tr=er,nr={db:{},renderer:er,parser:{parse:r(()=>{},`parse`)}},rr=`flowchart-elk`,ir={id:rr,detector:r((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer===`elk`?(t.layout=`elk`,!0):!1,`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./flowDiagram-I6XJVG4X-BuWsqPkc.js`);return{diagram:e}},__vite__mapDeps([9,10,4,5,1,2,3,6,7,11,12,13,14,15,16,17,18,19,20,21,8,22]),import.meta.url);return{id:rr,diagram:e}},`loader`)},ar=`timeline`,or={id:ar,detector:r(e=>/^\s*timeline/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./timeline-definition-PNZ67QCA-CLUsDmue.js`);return{diagram:e}},__vite__mapDeps([52,4,37,5,1,2,3,6,7,34]),import.meta.url);return{id:ar,diagram:e}},`loader`)},sr=`mindmap`,cr={id:sr,detector:r(e=>/^\s*mindmap/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./mindmap-definition-RKZ34NQL-m96D2ClP.js`);return{diagram:e}},__vite__mapDeps([53,10,4,5,1,2,3,6,7,12,13,14,15,16,17,18,20,21]),import.meta.url);return{id:sr,diagram:e}},`loader`)},lr=`kanban`,ur={id:lr,detector:r(e=>/^\s*kanban/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./kanban-definition-UN3LZRKU-B5eO6Mg1.js`);return{diagram:e}},__vite__mapDeps([54,10,4,5,1,2,3,6,7,13,14,15,16,19,34,22]),import.meta.url);return{id:lr,diagram:e}},`loader`)},dr=`sankey`,fr={id:dr,detector:r(e=>/^\s*sankey(-beta)?/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./sankeyDiagram-5OEKKPKP-CCXvqmNS.js`);return{diagram:e}},__vite__mapDeps([55,4,36,31,6,2,3,7]),import.meta.url);return{id:dr,diagram:e}},`loader`)},pr=`packet`,mr={id:pr,detector:r(e=>/^\s*packet(-beta)?/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./diagram-LMA3HP47-B_3VIpAA.js`);return{diagram:e}},__vite__mapDeps([56,25,2,3,5,1,4,6,7,26,34]),import.meta.url);return{id:pr,diagram:e}},`loader`)},hr=`radar`,gr={id:hr,detector:r(e=>/^\s*radar-beta/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./diagram-2AECGRRQ-DQj687EE.js`);return{diagram:e}},__vite__mapDeps([57,25,2,3,5,1,4,6,7,26,34]),import.meta.url);return{id:hr,diagram:e}},`loader`)},_r=`block`,vr={id:_r,detector:r(e=>/^\s*block(-beta)?/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./blockDiagram-GPEHLZMM-DETJLwVU.js`);return{diagram:e}},__vite__mapDeps([58,10,4,5,1,2,3,6,7,48,11,18,19,14]),import.meta.url);return{id:_r,diagram:e}},`loader`)},yr=`treeView`,br={id:yr,detector:r(e=>/^\s*treeView-beta/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./diagram-5GNKFQAL-C9cKajpJ.js`);return{diagram:e}},__vite__mapDeps([59,25,2,3,5,1,4,6,7,26,27,34]),import.meta.url);return{id:yr,diagram:e}},`loader`)},xr=`architecture`,Sr={id:xr,detector:r(e=>/^\s*architecture/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./architectureDiagram-3BPJPVTR-ourcMGqp.js`);return{diagram:e}},__vite__mapDeps([60,2,3,10,4,5,1,6,7,25,61,26,34]),import.meta.url);return{id:xr,diagram:e}},`loader`)},Cr=`eventmodeling`,wr={id:Cr,detector:r(e=>/^\s*eventmodeling/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./diagram-KO2AKTUF-BrHr9ddz.js`);return{diagram:e}},__vite__mapDeps([62,25,2,3,4,5,1,6,7,26]),import.meta.url);return{id:Cr,diagram:e}},`loader`)},Tr=`ishikawa`,Er={id:Tr,detector:r(e=>/^\s*ishikawa(-beta)?\b/i.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./ishikawaDiagram-YF4QCWOH-2rCqsio7.js`);return{diagram:e}},__vite__mapDeps([63,5,1,2,3,4,6,7,34,16]),import.meta.url);return{id:Tr,diagram:e}},`loader`)},Dr=`venn`,Or={id:Dr,detector:r(e=>/^\s*venn-beta/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./vennDiagram-CIIHVFJN-DFmAzwyu.js`);return{diagram:e}},__vite__mapDeps([64,4,5,1,2,3,6,7,34,16]),import.meta.url);return{id:Dr,diagram:e}},`loader`)},kr=`treemap`,Ar={id:kr,detector:r(e=>/^\s*treemap/.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./diagram-OG6HWLK6-CKGkIofl.js`);return{diagram:e}},__vite__mapDeps([65,25,2,3,4,30,36,31,5,1,6,7,12,26,15,34]),import.meta.url);return{id:kr,diagram:e}},`loader`)},jr=`wardley-beta`,Mr={id:jr,detector:r(e=>/^\s*wardley-beta/i.test(e),`detector`),loader:r(async()=>{let{diagram:e}=await t(async()=>{let{diagram:e}=await import(`./wardleyDiagram-YWT4CUSO-DpnSL_l7.js`);return{diagram:e}},__vite__mapDeps([66,25,2,3,5,1,4,6,7,26,34]),import.meta.url);return{id:jr,diagram:e}},`loader`)},Nr=!1,Pr=r(()=>{Nr||(Nr=!0,u(`error`,nr,e=>e.toLowerCase().trim()===`error`),u(`---`,{db:{clear:r(()=>{},`clear`)},styles:{},renderer:{draw:r(()=>{},`draw`)},parser:{parse:r(()=>{throw Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},`parse`)},init:r(()=>null,`init`)},e=>e.toLowerCase().trimStart().startsWith(`---`)),d(ir,cr,Sr),d(xn,ur,qn,Gn,Dn,jn,Nn,Fn,Vn,Un,Tn,Cn,or,kn,Zn,Yn,$n,Ln,fr,mr,zn,vr,wr,br,gr,Er,Ar,Or,Mr))},`addDiagrams`),Fr=r(async()=>{i.debug(`Loading registered diagrams`);let e=(await Promise.allSettled(Object.entries(w).map(async([e,{detector:t,loader:n}])=>{if(n)try{p(e)}catch{try{let{diagram:e,id:r}=await n();u(r,e,t)}catch(t){throw i.error(`Failed to load external diagram with key ${e}. Removing from detectors.`),delete w[e],t}}}))).filter(e=>e.status===`rejected`);if(e.length>0){i.error(`Failed to load ${e.length} external diagrams`);for(let t of e)i.error(t);throw Error(`Failed to load ${e.length} external diagrams`)}},`loadRegisteredDiagrams`),Ir=`graphics-document document`;function Lr(e,t){e.attr(`role`,Ir),t!==``&&e.attr(`aria-roledescription`,t)}r(Lr,`setA11yDiagramInfo`);function Rr(e,t,n,r){if(e.insert!==void 0){if(n){let t=`chart-desc-${r}`;e.attr(`aria-describedby`,t),e.insert(`desc`,`:first-child`).attr(`id`,t).text(n)}if(t){let n=`chart-title-${r}`;e.attr(`aria-labelledby`,n),e.insert(`title`,`:first-child`).attr(`id`,n).text(t)}}}r(Rr,`addSVGa11yTitleDescription`);var zr=class e{constructor(e,t,n,r,i){this.type=e,this.text=t,this.db=n,this.parser=r,this.renderer=i}static{r(this,`Diagram`)}static async fromText(t,n={}){let r=b(),i=te(t,r);t=de(t)+`
17
+ `;try{p(i)}catch{let e=o(i);if(!e)throw new re(`Diagram ${i} not found.`);let{id:t,diagram:n}=await e();u(t,n)}let{db:a,parser:s,renderer:c,init:l}=p(i);return s.parser&&(s.parser.yy=a),a.clear?.(),l?.(r),n.title&&a.setDiagramTitle?.(n.title),await s.parse(t),new e(i,t,a,s,c)}async render(e,t){await this.renderer.draw(this.text,e,t,this)}getParser(){return this.parser}getType(){return this.type}},Br=[],Vr=r(()=>{Br.forEach(e=>{e()}),Br=[]},`attachFunctions`),Hr=r(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,``).trimStart(),`cleanupComments`);function Ur(e){let t=e.match(y);if(!t)return{text:e,metadata:{}};let n=he(t[1],{schema:ge})??{};n=typeof n==`object`&&!Array.isArray(n)?n:{};let r={};return n.displayMode&&(r.displayMode=n.displayMode.toString()),n.title&&(r.title=n.title.toString()),n.config&&(r.config=n.config),{text:e.slice(t[0].length),metadata:r}}r(Ur,`extractFrontMatter`);var Wr=r(e=>e.replace(/\r\n?/g,`
18
+ `).replace(/<(\w+)([^>]*)>/g,(e,t,n)=>`<`+t+n.replace(/="([^"]*)"/g,`='$1'`)+`>`),`cleanupText`),Gr=r(e=>{let{text:t,metadata:n}=Ur(e),{displayMode:r,title:i,config:a={}}=n;return r&&(a.gantt||={},a.gantt.displayMode=r),{title:i,config:a,text:t}},`processFrontmatter`),Kr=r(e=>{let t=ce.detectInit(e)??{},n=ce.detectDirective(e,`wrap`);return Array.isArray(n)?t.wrap=n.some(({type:e})=>e===`wrap`):n?.type===`wrap`&&(t.wrap=!0),{text:le(e),directive:t}},`processDirectives`);function qr(e){let t=Gr(Wr(e)),n=Kr(t.text),r=ue(t.config,n.directive);return e=Hr(n.text),{code:e,title:t.title,config:r}}r(qr,`preprocessDiagram`);function Jr(e){let t=new TextEncoder().encode(e),n=Array.from(t,e=>String.fromCodePoint(e)).join(``);return btoa(n)}r(Jr,`toBase64`);var Yr=5e4,Xr=`graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa`,Zr=`sandbox`,Qr=`loose`,$r=`http://www.w3.org/2000/svg`,ei=`http://www.w3.org/1999/xlink`,ti=`http://www.w3.org/1999/xhtml`,ni=`100%`,ri=`100%`,ii=`border:0;margin:0;`,ai=`margin:0`,oi=`allow-top-navigation-by-user-activation allow-popups`,si=`The "iframe" tag is not supported by your browser.`,ci=[`foreignobject`],li=[`dominant-baseline`];function ui(e){let t=qr(e);return c(),ee(t.config??{}),t}r(ui,`processAndSetConfigs`);async function di(e,t){Pr();try{let{code:t,config:n}=ui(e);return{diagramType:(await Ci(t)).type,config:n}}catch(e){if(t?.suppressErrors)return!1;throw e}}r(di,`parse`);var fi=r((e,t,n=[])=>`.${e} ${t} ${l(`{ ${n.join(` !important; `)} !important; }`)}`,`cssImportantStyles`),pi=r((e,t=new Map)=>{let n=new CSSStyleSheet;if(e.fontFamily!==void 0&&n.insertRule(`:root { --mermaid-font-family: ${e.fontFamily}}`,n.cssRules.length),e.altFontFamily!==void 0&&n.insertRule(`:root { --mermaid-alt-font-family: ${e.altFontFamily}}`,n.cssRules.length),t instanceof Map){let r=m(e)?[`> *`,`span`]:[`rect`,`polygon`,`ellipse`,`circle`,`path`];t.forEach(e=>{Nt(e.styles)||r.forEach(t=>{n.insertRule(fi(e.id,t,e.styles),n.cssRules.length)}),Nt(e.textStyles)||n.insertRule(fi(e.id,`tspan`,(e?.textStyles||[]).map(e=>e.replace(`color`,`fill`))),n.cssRules.length)})}let r=``;if(e.themeCSS!==void 0)if(typeof n.replaceSync==`function`){let t=new CSSStyleSheet;t.replaceSync(e.themeCSS),r=C(t)+`
19
+ `}else r+=`${e.themeCSS}
20
+ `;return r+C(n)},`createCssStyles`),mi=r((e,t)=>_n(fn(`${e}{${t}}`),yn([r(function(t,n,r,a){if(t.type===`rule`&&Array.isArray(t.props)){if(t.parent&&t.parent.type===`@keyframes`)return;t.props=t.props.map(t=>t.startsWith(e)?t:`${e} ${t}`)}else t.type.startsWith(`@`)&&([`@media`,`@supports`,`@layer`,`@scope`,`@container`,`@starting-style`,`@keyframes`].includes(t.type)||(i.warn(`Removing unsupported at-rule ${t.type} from CSS`),t.type=Pt))},`addNamespace`),vn])),`compileCSS`),hi=r((e,t,n,r)=>mi(r,_(t,pi(e,n),{...e.themeVariables,theme:e.theme,look:e.look},r)),`createUserStyles`),gi=r((e=``,t,n)=>{let r=e;return!n&&!t&&(r=r.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,`marker-end="url(#`)),r=D(r),r=r.replace(/<br>/g,`<br/>`),r},`cleanUpSvgCode`),_i=r((e=``,t)=>`<iframe style="width:${ni};height:${t?.viewBox?.baseVal?.height?t.viewBox.baseVal.height+`px`:ri};${ii}" src="data:text/html;charset=UTF-8;base64,${Jr(`<body style="${ai}">${e}</body>`)}" sandbox="${oi}">
21
+ ${si}
22
+ </iframe>`,`putIntoIFrame`),vi=r((e,t,n,r,i)=>{let a=e.append(`div`);a.attr(`id`,n),r&&a.attr(`style`,r);let o=a.append(`svg`).attr(`id`,t).attr(`width`,`100%`).attr(`xmlns`,$r);return i&&o.attr(`xmlns:xlink`,i),o.append(`g`),e},`appendDivSvgG`);function yi(e,t){return e.append(`iframe`).attr(`id`,t).attr(`style`,`width: 100%; height: 100%;`).attr(`sandbox`,``)}r(yi,`sandboxedIframe`);var bi=r((e,t,n,r)=>{e.getElementById(t)?.remove(),e.getElementById(n)?.remove(),e.getElementById(r)?.remove()},`removeExistingElements`),xi=r(async function(e,t,n){Pr();let o=ui(t);t=o.code;let s=b();i.debug(s),t.length>(s?.maxTextSize??Yr)&&(t=Xr);let c=`#${e}`,l=`i`+e,u=`#`+l,d=`d`+e,f=`#`+d,p=r(()=>{let e=E(h?u:f).node();e&&`remove`in e&&e.remove()},`removeTempElements`),m=E(document.body),h=s.securityLevel===Zr,g=s.securityLevel===Qr,_=s.fontFamily;n===void 0?(bi(document,e,d,l),h?(m=E(yi(E(document.body),l).nodes()[0].contentDocument.body),m.node().style.margin=`0`):m=E(`body`),vi(m,e,d)):(n&&(n.innerHTML=``),h?(m=E(yi(E(n),l).nodes()[0].contentDocument.body),m.node().style.margin=`0`):m=E(n),vi(m,e,d,`font-family: ${_}`,ei));let v,y;try{v=await zr.fromText(t,{title:o.title})}catch(e){if(s.suppressErrorRendering)throw p(),e;v=await zr.fromText(`error`),y=e}let x=m.select(f).node(),C=v.type,w=x.firstChild,ee=w.firstChild,te=v.renderer.getClasses?.(t,v),ne=hi(s,C,te,c),T=document.createElement(`style`);T.innerHTML=ne,w.insertBefore(T,ee);try{await v.renderer.draw(t,e,`11.15.0`,v)}catch(n){throw s.suppressErrorRendering?p():tr.draw(t,e,`11.15.0`),n}let re=m.select(`${f} svg`),ie=v.db.getAccTitle?.(),ae=v.db.getAccDescription?.();wi(C,re,ie,ae),m.select(`[id="${e}"]`).selectAll(`foreignobject > *`).attr(`xmlns`,ti);let D=m.select(f).node().innerHTML;if(i.debug(`config.arrowMarkerAbsolute`,s.arrowMarkerAbsolute),D=gi(D,h,S(s.arrowMarkerAbsolute)),h){let e=m.select(f+` svg`).node();D=_i(D,e)}else g||(D=a.sanitize(D,{ADD_TAGS:ci,ADD_ATTR:li,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(Vr(),y)throw y;return p(),{diagramType:C,svg:D,bindFunctions:v.db.bindFunctions}},`render`);function Si(e={}){let t=T({},e);t?.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables||={},t.themeVariables.fontFamily=t.fontFamily),h(t),t?.theme&&t.theme in v?t.themeVariables=v[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=v.default.getThemeVariables(t.themeVariables)),n((typeof t==`object`?ne(t):s()).logLevel),Pr()}r(Si,`initialize`);var Ci=r((e,t={})=>{let{code:n}=qr(e);return zr.fromText(n,t)},`getDiagramFromText`);function wi(e,t,n,r){Lr(t,e),Rr(t,n,r,t.attr(`id`))}r(wi,`addA11yInfo`);var K=Object.freeze({render:xi,parse:di,getDiagramFromText:Ci,initialize:Si,getConfig:b,setConfig:g,getSiteConfig:s,updateSiteConfig:f,reset:r(()=>{c()},`reset`),globalReset:r(()=>{c(ie)},`globalReset`),defaultConfig:ie});n(b().logLevel),c(b());var Ti=r((e,t,n)=>{i.warn(e),se(e)?(n&&n(e.str,e.hash),t.push({...e,message:e.str,error:e})):(n&&n(e),e instanceof Error&&t.push({str:e.message,message:e.message,hash:e.name,error:e}))},`handleError`),Ei=r(async function(e={querySelector:`.mermaid`}){try{await Di(e)}catch(t){if(se(t)&&i.error(t.str),q.parseError&&q.parseError(t),!e.suppressErrors)throw i.error(`Use the suppressErrors option to suppress these errors`),t}},`run`),Di=r(async function({postRenderCallback:e,querySelector:t,nodes:n}={querySelector:`.mermaid`}){let r=K.getConfig();i.debug(`${e?``:`No `}Callback function found`);let a;if(n)a=n;else if(t)a=document.querySelectorAll(t);else throw Error(`Nodes and querySelector are both undefined`);i.debug(`Found ${a.length} diagrams`),r?.startOnLoad!==void 0&&(i.debug(`Start On Load: `+r?.startOnLoad),K.updateSiteConfig({startOnLoad:r?.startOnLoad}));let o=new ce.InitIDGenerator(r.deterministicIds,r.deterministicIDSeed),s,c=[];for(let t of Array.from(a)){if(i.info(`Rendering diagram: `+t.id),t.getAttribute(`data-processed`))continue;t.setAttribute(`data-processed`,`true`);let n=`mermaid-${o.next()}`;s=t.innerHTML,s=ve(ce.entityDecode(s)).trim().replace(/<br\s*\/?>/gi,`<br/>`);let r=ce.detectInit(s);r&&i.debug(`Detected early reinit: `,r);try{let{svg:r,bindFunctions:i}=await Li(n,s,t);t.innerHTML=r,e&&await e(n),i&&i(t)}catch(e){Ti(e,c,q.parseError)}}if(c.length>0)throw c[0]},`runThrowsErrors`),Oi=r(function(e){K.initialize(e)},`initialize`),ki=r(async function(e,t,n){i.warn(`mermaid.init is deprecated. Please use run instead.`),e&&Oi(e);let r={postRenderCallback:n,querySelector:`.mermaid`};typeof t==`string`?r.querySelector=t:t&&(t instanceof HTMLElement?r.nodes=[t]:r.nodes=t),await Ei(r)},`init`),Ai=r(async(e,{lazyLoad:t=!0}={})=>{Pr(),d(...e),t===!1&&await Fr()},`registerExternalDiagrams`),ji=r(function(){if(q.startOnLoad){let{startOnLoad:e}=K.getConfig();e&&q.run().catch(e=>i.error(`Mermaid failed to initialize`,e))}},`contentLoaded`);typeof document<`u`&&window.addEventListener(`load`,ji,!1);var Mi=r(function(e){q.parseError=e},`setParseErrorHandler`),Ni=[],Pi=!1,Fi=r(async()=>{if(!Pi){for(Pi=!0;Ni.length>0;){let e=Ni.shift();if(e)try{await e()}catch(e){i.error(`Error executing queue`,e)}}Pi=!1}},`executeQueue`),Ii=r(async(e,t)=>new Promise((n,a)=>{let o=r(()=>new Promise((r,o)=>{K.parse(e,t).then(e=>{r(e),n(e)},e=>{i.error(`Error parsing`,e),q.parseError?.(e),o(e),a(e)})}),`performCall`);Ni.push(o),Fi().catch(a)}),`parse`),Li=r((e,t,n)=>new Promise((a,o)=>{let s=r(()=>new Promise((r,s)=>{K.render(e,t,n).then(e=>{r(e),a(e)},e=>{i.error(`Error parsing`,e),q.parseError?.(e),s(e),o(e)})}),`performCall`);Ni.push(s),Fi().catch(o)}),`render`),q={startOnLoad:!0,mermaidAPI:K,parse:Ii,render:Li,init:ki,run:Ei,registerExternalDiagrams:Ai,registerLayoutLoaders:ye,initialize:Oi,parseError:void 0,contentLoaded:ji,setParseErrorHandler:Mi,detectType:te,registerIconPacks:_e,getRegisteredDiagramsMetadata:r(()=>Object.keys(w).map(e=>({id:e})),`getRegisteredDiagramsMetadata`)},Ri=q,J=e=>e.replace(/\s*!important\s*$/i,``).trim(),zi=(e,t)=>{let n=t;for(;n<e.length&&/\s/.test(e[n]);)n+=1;let r=n;for(;n<e.length&&/[a-z-]/i.test(e[n]);)n+=1;if(n===r)return!1;for(;n<e.length&&/\s/.test(e[n]);)n+=1;return e[n]===`:`},Y=e=>{let t=[],n=0;for(;n<e.length;){for(;n<e.length&&/[\s;,]/.test(e[n]);)n+=1;if(n>=e.length)break;let r=n;for(;n<e.length&&e[n]!==`:`&&!(e[n]===`;`||e[n]===`,`);)n+=1;if(n>=e.length||e[n]!==`:`)break;let i=e.substring(r,n).trim().toLowerCase();n+=1;let a=n,o=0,s=null;for(;n<e.length;){let t=e[n];if(s){t===s&&e[n-1]!==`\\`&&(s=null),n+=1;continue}if(t===`"`||t===`'`){s=t,n+=1;continue}if(t===`(`){o+=1,n+=1;continue}if(t===`)`){o=Math.max(0,o-1),n+=1;continue}if(o===0&&(t===`;`||t===`,`||/\s/.test(t)&&zi(e,n)))break;n+=1}let c=J(e.substring(a,n));i&&c&&t.push({property:i,value:c}),n<e.length&&(e[n]===`;`||e[n]===`,`)&&(n+=1)}return t},X=e=>{let t=J(e);if(!t)return!1;if(typeof CSS<`u`&&typeof CSS.supports==`function`)return CSS.supports(`color`,t);if(typeof document<`u`){let e=document.createElement(`div`);return e.style.color=``,e.style.color=t,e.style.color!==``}return!1},Bi=(e,t)=>{let n=e.getAttribute(`style`);return n&&Y(n).find(e=>e.property===t)?.value||``},Vi=(...e)=>{for(let t of e){let e=J(t||``);if(X(e))return e}},Hi=(e,t)=>{let n=e.querySelector(`text, foreignObject, div, span, p`)||e,r=Vi(n.getAttribute?.(`fill`),Bi(n,`fill`),n.style?.fill);if(r)return r;let i=Vi(n.getAttribute?.(`color`),Bi(n,`color`),n.style?.color);if(i)return i;let a=Vi(t);if(a)return a},Ui=(e,t,n)=>{switch(t){case j.FILL:case j.STROKE:X(n)&&(e[t]=n);break;case j.STROKE_WIDTH:case j.STROKE_DASHARRAY:e[t]=n;break}},Wi=(e,t,n)=>{t===A.COLOR&&X(n)&&(e[A.COLOR]=n)},Gi=(e,t,n)=>{e&&Y(e).forEach(({property:e,value:r})=>{Ui(t,e,r),Wi(n,e,r)})},Ki=(e,t)=>{e&&Y(e).forEach(({property:e,value:n})=>{if(e===`fill`&&X(n)){t[A.COLOR]=n;return}Wi(t,e,n)})},qi=(e,t)=>{e&&[[j.FILL,e.getAttribute(`fill`)],[j.STROKE,e.getAttribute(`stroke`)],[j.STROKE_WIDTH,e.getAttribute(`stroke-width`)],[j.STROKE_DASHARRAY,e.getAttribute(`stroke-dasharray`)]].forEach(([e,n])=>{let r=J(n||``);r&&Ui(t,e,r)})},Ji=(e,t)=>{if(!e)return;let n=J(e.getAttribute(`fill`)||e.getAttribute(`color`)||``);X(n)&&(t[A.COLOR]=n)},Yi=(e,t,n,r)=>{if(!(t instanceof Map))return;let i=t.get(e);i&&(i.styles?.forEach(e=>{Y(e).forEach(({property:e,value:t})=>{Ui(n,e,t),Wi(r,e,t)})}),i.textStyles?.forEach(e=>{Y(e).forEach(({property:e,value:t})=>{Wi(r,e,t)})}))},Xi=(e,t,n)=>{let r=e.nodes.map(e=>e.startsWith(`flowchart-`)?e.split(`-`)[1]:e),i=t.querySelector(`[id='${e.id}']`);if(!i)throw Error(`SubGraph element not found`);let a=$i(i,t),o=i.getBBox(),s={width:o.width,height:o.height},c={},l={},u=i.querySelector(`:scope > rect, :scope > path, :scope > polygon, :scope > ellipse`)||i.querySelector(`.cluster > rect, .cluster > path, .cluster > polygon, .cluster > ellipse`)||i.querySelector(`rect, path, polygon, ellipse`);Gi(i.getAttribute(`style`),c,l),Gi(u?.getAttribute(`style`),c,l),qi(u,c);let d=i.querySelector(`.cluster-label text, .cluster-label tspan`)||i.querySelector(`text`);return Ki(d?.getAttribute(`style`),l),Ji(d,l),Yi(e.id,n,c,l),e.classes?.forEach(e=>{Yi(e,n,c,l)}),{id:e.id,nodeIds:r,text:L(e.title),labelType:`text`,...a,...s,containerStyle:c,labelStyle:l}},Zi=(e,t,n)=>{let r=t.querySelector(`[id*="${e.domId}"]`);if(!r)return;let i;r.parentElement?.tagName.toLowerCase()===`a`&&(i=r.parentElement.getAttribute(`xlink:href`));let a=$i(i?r.parentElement:r,t),o=r.getBBox(),s={width:o.width,height:o.height},c={},l={};e.classes&&n instanceof Map&&(Array.isArray(e.classes)?e.classes:[e.classes]).forEach(e=>{Yi(e,n,c,l)}),e.styles?.forEach(e=>{Gi(e,c,l)});let u=r.querySelector(`.label-container`);return Gi(u?.getAttribute(`style`),c,l),qi(u,c),Array.from(r.querySelectorAll(`.label, .nodeLabel, .label text, .label tspan, .label span, .label div`)).forEach(e=>{Ki(e.getAttribute(`style`),l),Ji(e,l)}),{id:e.id,labelType:e.labelType,text:L(e.text||``),type:e.type,link:i||void 0,...a,...s,containerStyle:c,labelStyle:l}},Qi=(e,t,n)=>{let r=n.querySelector(`[id*="${e.id}"]`);if(!r)throw Error(`Edge element not found`);let i=kt(r,$i(r,n));return e.length=void 0,{...e,...i,text:L(e.text)}},$i=(e,t)=>{if(!e)throw Error(`Element not found`);let n=e.parentElement?.parentElement,r=e.childNodes[0],i={x:0,y:0};if(r){let{transformX:e,transformY:t}=R(r),n=r.getBBox();i={x:Number(r.getAttribute(`x`))||e+n.x||0,y:Number(r.getAttribute(`y`))||t+n.y||0}}let{transformX:a,transformY:o}=R(e),s={x:a+i.x,y:o+i.y};for(;n&&n.id!==t.id;){if(n.classList.value===`root`&&n.hasAttribute(`transform`)){let{transformX:e,transformY:t}=R(n);s.x+=e,s.y+=t}n=n.parentElement}return s},ea=(e,t)=>{let n=e.getVertices(),r=e.getEdges(),i=e.getSubGraphs(),a=e.getClasses(),o={},s=a instanceof Map?a:{};n instanceof Map?n.forEach((e,n)=>{o[n]=Zi(e,t,s)}):typeof n==`object`&&n&&Object.entries(n).forEach(([e,n])=>{o[e]=Zi(n,t,s)});let c=new Map,l=(Array.isArray(r)?r:[]).map(e=>{if(!t.querySelector(`[id*="${e.id}"]`))return null;let n=`${e.start}-${e.end}`,r=c.get(n)||0;return c.set(n,r+1),Qi(e,r,t)}).filter(e=>e!==null&&e.reflectionPoints.length>1);return{type:`flowchart`,subGraphs:(Array.isArray(i)?i:[]).map(e=>Xi(e,t,s)),vertices:o,edges:l}},ta=(e,t)=>{let n={};t?.label&&(n.label={text:L(t.label),fontSize:16});let r=e.tagName;if(r===`line`)n.startX=Number(e.getAttribute(`x1`)),n.startY=Number(e.getAttribute(`y1`)),n.endX=Number(e.getAttribute(`x2`)),n.endY=Number(e.getAttribute(`y2`));else if(r===`path`){let t=e.getAttribute(`d`);if(!t)throw Error(`Path element does not contain a "d" attribute`);let r=t.split(/(?=[LC])/),i=r[0].substring(1).split(`,`).map(e=>parseFloat(e)),a=[];r.forEach(e=>{let t=e.substring(1).trim().split(` `).map(e=>{let[t,n]=e.split(`,`);return[parseFloat(t)-i[0],parseFloat(n)-i[1]]});a.push(...t)});let o=a[a.length-1];n.startX=i[0],n.startY=i[1],n.endX=o[0],n.endY=o[1],n.points=a}t?.label&&(n.startY-=10,n.endY-=10);let i=e.getAttribute(`stroke`),a=(i&&i!==`none`?i:``)||getComputedStyle(e).stroke||``;return n.strokeColor=a?J(a):null,n.strokeWidth=Number(e.getAttribute(`stroke-width`)),n.type=`arrow`,n.strokeStyle=t?.strokeStyle||`solid`,n.startArrowhead=t?.startArrowhead||null,n.endArrowhead=t?.endArrowhead||null,n},na=(e,t,n,r,i)=>{let a={};return a.type=`arrow`,a.startX=e,a.startY=t,a.endX=n,a.endY=r,Object.assign(a,{...i}),a},ra=(e,t,n,r)=>({type:`text`,x:e,y:t,text:n,width:r?.width||20,height:r?.height||20,fontSize:r?.fontSize||20,id:r?.id,color:r?.color,groupId:r?.groupId,metadata:r?.metadata}),ia=(e,t,n)=>{let r={},i=Number(e.getAttribute(`x`)),a=Number(e.getAttribute(`y`));r.type=`text`,r.text=L(t),n?.id&&(r.id=n.id),n?.groupId&&(r.groupId=n.groupId);let o=e.getBBox();return r.width=o.width,r.height=o.height,r.x=i-o.width/2,r.y=a,r.fontSize=parseInt(getComputedStyle(e).fontSize),r.color=Hi(e),r},Z=(e,t,n={})=>{let r={};r.type=t;let{label:i,subtype:a,id:o,groupId:s}=n;r.id=o,s&&(r.groupId=s),i&&(r.label={text:L(i.text),fontSize:16,textAlign:i?.textAlign,verticalAlign:i?.verticalAlign});let c=e.getBBox();switch(r.x=c.x,r.y=c.y,r.width=c.width,r.height=c.height,r.subtype=a,a){case`highlight`:let t=e.getAttribute(`fill`);t&&(r.bgColor=J(t));break;case`note`:r.strokeStyle=`dashed`;break}return r},aa=(e,t,n,r,i,a)=>{let o={};o.startX=t,o.startY=n,o.endX=r,a?.groupId&&(o.groupId=a.groupId),a?.id&&(o.id=a.id),o.endY=i;let s=e.getAttribute(`stroke`);return o.strokeColor=s?J(s):null,o.strokeWidth=Number(e.getAttribute(`stroke-width`)),o.type=`line`,o},oa={0:`SOLID`,1:`DOTTED`,3:`SOLID_CROSS`,4:`DOTTED_CROSS`,5:`SOLID_OPEN`,6:`DOTTED_OPEN`,24:`SOLID_POINT`,25:`DOTTED_POINT`},Q={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32},sa=e=>{let t;switch(e){case Q.SOLID:case Q.SOLID_CROSS:case Q.SOLID_OPEN:case Q.SOLID_POINT:t=`solid`;break;case Q.DOTTED:case Q.DOTTED_CROSS:case Q.DOTTED_OPEN:case Q.DOTTED_POINT:t=`dotted`;break;default:t=`solid`;break}return t},ca=(e,t)=>{if(e.nextElementSibling?.classList.contains(`sequenceNumber`)){let n=e.nextElementSibling?.textContent;if(!n)throw Error(`sequence number not present`);let r={type:`rectangle`,x:t.startX-10,y:t.startY-15,label:{text:n,fontSize:14},bgColor:`#e9ecef`,height:30,subtype:`sequence`};Object.assign(t,{sequenceNumber:r})}},la=(e,t,n)=>{if(!e)throw`root node not found`;let r=M(),i=Array.from(e.children),a=[];return i.forEach((e,i)=>{let o=`${n?.id}-${i}`,s;switch(e.tagName){case`line`:s=aa(e,Number(e.getAttribute(`x1`)),Number(e.getAttribute(`y1`)),Number(e.getAttribute(`x2`)),Number(e.getAttribute(`y2`)),{groupId:r,id:o});break;case`text`:s=ia(e,t,{groupId:r,id:o});break;case`circle`:s=Z(e,`ellipse`,{label:e.textContent?{text:e.textContent}:void 0,groupId:r,id:o});default:s=Z(e,be[e.tagName],{label:e.textContent?{text:e.textContent}:void 0,groupId:r,id:o})}a.push(s)}),a},ua=(e,t)=>{let n=t.getAttribute(`fill`),r=t.getAttribute(`stroke`),i=t.getAttribute(`stroke-width`),a=t.getAttribute(`stroke-dasharray`);n&&n!==`none`&&(e.bgColor=J(n)),r&&r!==`none`&&(e.strokeColor=J(r)),i&&(e.strokeWidth=Number(i)),a&&a.trim()&&(e.strokeStyle=`dashed`)},da=(e,t)=>{let n=Array.from(t.querySelectorAll(`.actor-top`)),r=Array.from(t.querySelectorAll(`.actor-bottom`)),i=[],a=[],o={},s=e instanceof Map?Array.from(e.values()):Object.values(e),c=Array.from(t.querySelectorAll(`.actor-line`)),l=(e,t)=>{let n=e.name,r=c.find(e=>e.getAttribute(`name`)===n);if(r)return r;let i=e.type===`participant`?t.parentElement?.previousElementSibling:t.previousElementSibling;return i?i.tagName===`line`?i:i.querySelector(`line`):null};return s.forEach(e=>{let t=n.find(t=>t.getAttribute(`name`)===e.name),s=r.find(t=>t.getAttribute(`name`)===e.name);if(!t||!s)throw`root not found`;let c=e.description;if(e.type===`participant`){let n=Z(t,`rectangle`,{id:`${e.name}-top`,label:{text:c},subtype:`actor`});if(ua(n,t),!n)throw`Top Node element not found!`;i.push([n]);let r=Z(s,`rectangle`,{id:`${e.name}-bottom`,label:{text:c},subtype:`actor`});o[e.name]={topId:`${e.name}-top`,bottomId:`${e.name}-bottom`,bindType:`rectangle`},ua(r,s),i.push([r]);let u=l(e,t);if(u?.tagName!==`line`)throw`Line not found`;let d=Number(u.getAttribute(`x1`));if(!n.height)throw`Top node element height is null`;let f=n.y+n.height,p=r.y,m=aa(u,d,f,Number(u.getAttribute(`x2`)),p);a.push(m)}else if(e.type===`actor`){let n=la(t,c,{id:`${e.name}-top`});i.push(n);let r=la(s,c,{id:`${e.name}-bottom`});i.push(r);let u=l(e,t);if(u?.tagName!==`line`)throw`Line not found`;let d=Number(u.getAttribute(`x1`)),f=Number(u.getAttribute(`y1`)),p=Number(u.getAttribute(`x2`)),m=r.find(e=>e.type===`ellipse`);if(m){let e=m.y,t=aa(u,d,f,p,e);a.push(t)}let h=n.find(e=>e.type===`ellipse`),g=r.find(e=>e.type===`ellipse`);h?.id&&g?.id&&(o[e.name]={topId:h.id,bottomId:g.id,bindType:`ellipse`})}}),{nodes:i,lines:a,actorMap:o}},fa=(e,t,n)=>{let r=[],i=Array.from(t.querySelectorAll(`[class*="messageLine"]`)),a=Object.keys(oa),o=e.filter(e=>a.includes(e.type.toString()));return i.forEach((e,t)=>{let i=o[t],a=oa[i.type],s=ta(e,{label:i?.message,strokeStyle:sa(i.type),endArrowhead:a===`SOLID_OPEN`||a===`DOTTED_OPEN`?null:`arrow`}),c=n[i.from],l=n[i.to];c?.topId&&l?.topId&&(s.start={type:c.bindType||`rectangle`,id:c.topId},s.end={type:l.bindType||`rectangle`,id:l.topId}),ca(e,s),r.push(s)}),r},pa=(e,t)=>{let n=Array.from(t.querySelectorAll(`.note`)).map(e=>e.parentElement),r=e.filter(e=>e.type===Q.NOTE),i=[];return n.forEach((e,t)=>{if(!e)return;let n=e.firstChild,a=r[t].message,o=Z(n,`rectangle`,{label:{text:a},subtype:`note`}),s=n.getAttribute(`fill`),c=n.getAttribute(`stroke`),l=n.getAttribute(`stroke-width`),u=n.getAttribute(`stroke-dasharray`);s&&s!==`none`&&(o.bgColor=J(s)),c&&c!==`none`&&(o.strokeColor=J(c)),l&&(o.strokeWidth=Number(l)),u&&u.trim()&&(o.strokeStyle=`dashed`),i.push(o)}),i},ma=e=>{let t=Array.from(e.querySelectorAll(`[class*=activation]`)),n=[];return t.forEach(e=>{let t=Z(e,`rectangle`,{label:{text:``},subtype:`activation`});(()=>{let n=e.getAttribute(`fill`),r=e.getAttribute(`stroke`),i=e.getAttribute(`stroke-width`),a=e.getAttribute(`stroke-dasharray`);n&&n!==`none`&&(t.bgColor=J(n)),r&&r!==`none`&&(t.strokeColor=J(r)),i&&(t.strokeWidth=Number(i)),a&&a.trim()&&(t.strokeStyle=`dashed`)})(),n.push(t)}),n},ha=(e,t)=>{let n=Array.from(t.querySelectorAll(`.loopLine`)),r=[],i=[],a=[];n.forEach(e=>{let t=aa(e,Number(e.getAttribute(`x1`)),Number(e.getAttribute(`y1`)),Number(e.getAttribute(`x2`)),Number(e.getAttribute(`y2`)));t.strokeStyle=`dotted`,t.strokeColor=`#adb5bd`,t.strokeWidth=2,r.push(t)});let o=Array.from(t.querySelectorAll(`.loopText`)),s=e.filter(e=>e.type===Q.CRITICAL_START).map(e=>e.message);o.forEach(e=>{let t=e.textContent||``,n=ia(e,t),r=t.match(/\[(.*?)\]/)?.[1]||``;s.includes(r)&&(n.x+=16),i.push(n)});let c=Array.from(t?.querySelectorAll(`.labelBox`)),l=Array.from(t?.querySelectorAll(`.labelText`));return c.forEach((e,t)=>{let n=Z(e,`rectangle`,{label:{text:l[t]?.textContent||``}});n.strokeColor=`#adb5bd`,n.bgColor=`#e9ecef`,n.width=void 0,a.push(n)}),{lines:r,texts:i,nodes:a}},ga=e=>{let t=Array.from(e.querySelectorAll(`.rect`)).filter(e=>e.parentElement?.tagName!==`g`),n=[];return t.forEach(e=>{let t=Z(e,`rectangle`,{label:{text:``},subtype:`highlight`});n.push(t)}),n},_a=(e,t)=>{let n=e.db,r=[],i=n.getBoxes().map(e=>({...e,fill:J(e.fill||``)})),a=ga(t),{nodes:o,lines:s,actorMap:c}=da(n.getActors(),t),l=n.getMessages(),u=fa(l,t,c),d=pa(l,t),f=ma(t),p=ha(l,t);return r.push(a),r.push(...o),r.push(d),r.push(f),{type:`sequence`,lines:s,arrows:u,nodes:r,loops:p,groups:i}},va=e=>{let t={};return e&&e.forEach(e=>{Y(e).forEach(({property:e,value:n})=>{e&&n&&(t[e]=J(n))})}),t},ya={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},ba={LINE:0,DOTTED_LINE:1},xa=16,Sa=e=>{let t;switch(e){case ba.LINE:t=`solid`;break;case ba.DOTTED_LINE:t=`dotted`;break;default:t=`solid`}return t},Ca=e=>{let t;switch(e){case ya.AGGREGATION:t=`diamond_outline`;break;case ya.COMPOSITION:t=`diamond`;break;case ya.EXTENSION:t=`triangle_outline`;break;case`none`:t=null;break;case ya.DEPENDENCY:default:t=`arrow`;break}return t},wa=(e,t)=>{let n=0,r=0,i=e;for(;i&&i!==t;){let{transformX:e,transformY:t}=R(i);n+=e,r+=t,i=i.parentElement}return{tx:n,ty:r}},Ta=new Set([`triangle_outline`,`diamond`,`diamond_outline`]),Ea=(e,t=.5)=>{if(e.length<=2)return[...e];let n=[e[0]];for(let r=1;r<e.length-1;r++){let i=n[n.length-1],a=e[r],o=e[r+1],s=o.x-i.x,c=o.y-i.y,l=Math.hypot(s,c);if(!l)continue;let u=Math.abs(s*(a.y-i.y)-c*(a.x-i.x))/l,d=((a.x-i.x)*s+(a.y-i.y)*c)/(l*l);u<=t&&d>=-t&&d<=1+t||n.push(a)}return n.push(e[e.length-1]),n},Da=e=>{let t=Et(Ot(e).map(e=>[e.x,e.y])).map(([e,t])=>({x:e,y:t})),n=Dt(e);return n&&t.length>=2&&(t[0]={x:n.startX,y:n.startY},t[t.length-1]={x:n.endX,y:n.endY}),Ea(t)},Oa=(e,t,n)=>{let r=e.x-t.x,i=e.y-t.y,a=Math.hypot(r,i);return a?{x:e.x+r/a*n,y:e.y+i/a*n}:e},ka=(e,t)=>{let n=Et(t.map(e=>[e.x,e.y])).map(([e,t])=>({x:e,y:t}));if(n.length<2)throw Error(`Arrow route must contain at least two points`);let r=n[0],i=n[n.length-1];e.startX=r.x,e.startY=r.y,e.endX=i.x,e.endY=i.y,e.points=n.map(e=>[e.x-r.x,e.y-r.y])},Aa=e=>{let t=e.points?.map(([t,n])=>({x:e.startX+t,y:e.startY+n})).filter(e=>Number.isFinite(e.x)&&Number.isFinite(e.y));if(!t||t.length<2)return e;let n=[...t],r=!!e.startArrowhead&&Ta.has(e.startArrowhead),i=!!e.endArrowhead&&Ta.has(e.endArrowhead);if(!r&&!i)return e;if(r&&(n[0]=Oa(n[0],n[1],xa)),i){let e=n.length-1;n[e]=Oa(n[e],n[e-1],xa)}return ka(e,n),e},ja=(e,t)=>{let n=J(e.getAttribute(`stroke`)||getComputedStyle(e).stroke||``),r=parseFloat(e.getAttribute(`stroke-width`)||getComputedStyle(e).strokeWidth||`1`);X(n)&&n!==`none`&&(t.strokeColor=n),Number.isFinite(r)&&r>0&&(t.strokeWidth=r)},Ma=e=>{let t=[];return e.forEach(e=>{Da(e).forEach(e=>{let n=t[t.length-1];n&&n.x===e.x&&n.y===e.y||t.push(e)})}),Ea(t)},Na=(e,t,n)=>{if(e.length<2)throw Error(`Class diagram edge ${t?.id||`<unknown>`} is missing usable path points`);let r=e[0],i=e[e.length-1],a=na(r.x,r.y,i.x,i.y,{id:t?.getAttribute(`data-id`)||t?.id||void 0,...n,points:e.map(e=>[e.x-r.x,e.y-r.y])});return t&&ja(t,a),Aa(a)},Pa=(e,t)=>Na(Ma(e),e[0],t),Fa=(e,t)=>{let n=Da(e);return Na([n[0],n[n.length-1]],e,t)},Ia=(e,t)=>Pa([e],t),La=(e,t)=>[`${e}-cyclic-special-1`,`${e}-cyclic-special-mid`,`${e}-cyclic-special-2`].map(e=>t.querySelector(`path[id="${e}"][data-edge="true"]`)).filter(e=>e!==null),Ra=e=>e.points?.map(([t,n])=>({x:e.startX+t,y:e.startY+n})).filter(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))||[],za=(e,t)=>{let n=Ra(e);if(n.length<2)return null;let r=t===`start`,i=r?n[0]:n[n.length-1],a=r?n[1]:n[n.length-2],o=a.x===i.x?r?-1:1:Math.sign(a.x-i.x),s=a.y===i.y?1:Math.sign(a.y-i.y);return{x:i.x+o*20,y:i.y+(s>=0?12:-28)}},Ba=(e,t)=>{let n=e;for(;n&&n!==t;){if(n.classList.contains(`annotation-group`)||n.classList.contains(`label-group`))return`header`;if(n.classList.contains(`members-group`))return`members`;if(n.classList.contains(`methods-group`))return`methods`;n=n.parentElement}return`other`},Va=(e,t,n)=>{let r=[],i=[],a=[];return Object.values(e).forEach(e=>{let{domId:o,id:s}=e,c=M(),l=va(e.styles||e.cssStyles),u;try{u=n?n(s):void 0}catch{u=void 0}let d=u&&t.querySelector(`#${u}`)||t.querySelector(`#${o}`)||t.querySelector(`[data-id='${s}']`)||(e=>{let n=RegExp(`^classId-${e}(?:-|$)`);return Array.from(t.querySelectorAll(`[id]`)).filter(e=>n.test(e.id))[0]})(s);if(!d)throw Error(`DOM Node with id ${o} not found`);let f=d.querySelector(`rect`)||d,p=f.getBBox(),{tx:m,ty:h}=wa(f,t),g={type:`rectangle`,id:s,groupId:c,x:p.x+m,y:p.y+h,width:p.width,height:p.height,metadata:{classId:s}},_=f.getAttribute(`fill`),v=f.getAttribute(`stroke`),y=f.getAttribute(`stroke-width`),b=f.getAttribute(`stroke-dasharray`),x=getComputedStyle(f),S=J(_||l.fill||(_?x.fill:``)),C=J(v||l.stroke||(v?x.stroke:``)),w=y||l[`stroke-width`]||(y?x.strokeWidth:``),ee=b||l[`stroke-dasharray`]||(b?x.strokeDasharray===`none`?``:x.strokeDasharray:``),te=e=>{if(!e||!X(e))return!1;let t=e.toLowerCase();return!(t===`none`||t===`transparent`||t===`rgba(0, 0, 0, 0)`||t===`black`||t===`#000`||t===`#000000`||t===`rgb(0, 0, 0)`||t===`rgba(0, 0, 0, 1)`)};te(S)?g.bgColor=S:g.bgColor=void 0,te(C)?g.strokeColor=C:g.strokeColor=void 0,w?g.strokeWidth=Number(w):g.strokeWidth=void 0,ee&&ee.trim().length>0?g.strokeStyle=`dashed`:g.strokeStyle=void 0,r.push(g),[...Array.from(d.querySelectorAll(`line`)),...Array.from(d.querySelectorAll(`g.divider path`))].forEach(e=>{let{tx:n,ty:r}=wa(e,t),a,o,l,u;if(e.tagName.toLowerCase()===`line`)a=Number(e.getAttribute(`x1`))+n,o=Number(e.getAttribute(`y1`))+r,l=Number(e.getAttribute(`x2`))+n,u=Number(e.getAttribute(`y2`))+r;else{let t=e.getBBox();a=t.x+n,l=t.x+t.width+n;let i=t.y+t.height/2+r;o=i,u=i}if(a===l&&o===u)return;let d=aa(e,a,o,l,u,{groupId:c,id:M()});g.strokeColor?d.strokeColor=g.strokeColor:d.strokeColor=void 0,g.strokeWidth===void 0?d.strokeWidth=void 0:d.strokeWidth=g.strokeWidth,g.strokeStyle?d.strokeStyle=g.strokeStyle:d.strokeStyle=void 0,d.metadata={classId:s},i.push(d)});let ne=Array.from(d.querySelectorAll(`text, foreignObject`)),T=[];ne.forEach(e=>{let n=e.tagName.toLowerCase()===`foreignobject`,r=n?[]:Array.from(e.querySelectorAll(`tspan`)),i=r.length?r.map(e=>e.textContent?.trim()).filter(Boolean).join(`
23
+ `):e.textContent?.trim()||``;if(!i)return;let a=e.getBBox(),{ty:o}=wa(e,t),s=parseFloat(getComputedStyle(e).fontSize||``);if(n&&(!Number.isFinite(s)||!s)){let t=e.querySelector(`div, span, p`);t&&(s=parseFloat(getComputedStyle(t).fontSize||``))}(!Number.isFinite(s)||s<=0)&&(s=Math.max(12,a.height*.6)),s*=.9;let c=Hi(e,l.color);T.push({section:Ba(e,d),text:L(i),x:a.x,y:a.y+o,width:g&&g.width?Math.max(g.width-8,a.width):a.width,height:a.height,fontSize:s,color:c})});let re=T.filter(e=>e.section===`header`).sort((e,t)=>e.y-t.y||e.x-t.x);if(!g.label){let e=re.length===0&&T.length===1?T:re;e.length>0&&(g.label={text:e.map(e=>e.text).join(`
24
+ `),fontSize:Math.max(...e.map(e=>e.fontSize)),color:e.find(e=>e.color)?.color,verticalAlign:`top`})}T.filter(e=>re.length>0?e.section!==`header`:!(g.label&&T.length===1)).forEach(e=>{let t=ra((g?.x||0)+4,e.y,e.text,{width:e.width,height:e.height,fontSize:e.fontSize,color:e.color,id:M(),groupId:c,metadata:{classId:s}});a.push(t)})}),{nodes:r,lines:i,text:a}},Ha=(e,t,n,r)=>{let i=Array.from(n.querySelectorAll(`.edgePaths path[data-edge="true"]:not([id^="edgeNote"]):not([id*="-cyclic-special-"])`));if(e.length===0)return{arrows:[],text:[]};let a=[],o=[],s=0;return e.forEach(e=>{let{id1:c,id2:l,relation:u}=e,d=t.find(e=>e.id===c),f=t.find(e=>e.id===l);if(!d)throw Error(`parseRelations: Cannot find node with id ${c}`);if(!f)throw Error(`parseRelations: Cannot find node with id ${l}`);let p=Sa(u.lineType),m=Ca(u.type1),h=Ca(u.type2),g;if(c===l){let t=La(c,n);if(!t.length)throw Error(`parseRelations: Cannot find rendered SVG edge for relation ${c} -> ${l}`);g=Pa(t,{strokeStyle:p,startArrowhead:m,endArrowhead:h,label:e.title?{text:e.title}:void 0,start:{type:`rectangle`,id:d.id},end:{type:`rectangle`,id:f.id}})}else{let t=i[s];if(!t)throw Error(`parseRelations: Cannot find rendered SVG edge for relation ${c} -> ${l}`);s+=1,g=Fa(t,{strokeStyle:p,startArrowhead:m,endArrowhead:h,label:e.title?{text:e.title}:void 0,start:{type:`rectangle`,id:d.id},end:{type:`rectangle`,id:f.id}})}a.push(g);let{relationTitle1:_,relationTitle2:v}=e,y=c===l,b,x;if(_&&_!==`none`){if(y){let e=za(g,`start`);e&&(b=e.x,x=e.y)}else switch(r){case`TB`:b=g.startX-20,g.endX<g.startX&&(b-=15),x=g.startY+15;break;case`BT`:b=g.startX+20,g.endX>g.startX&&(b+=15),x=g.startY-15;break;case`LR`:b=g.startX+20,x=g.startY+15,g.endY>g.startY&&(x+=15);break;case`RL`:b=g.startX-20,x=g.startY-15,g.startY>g.endY&&(x-=15);break;default:b=g.startX-20,x=g.startY+15}b??=g.startX-20,x??=g.startY+15;let e=ra(b,x,_,{fontSize:16});o.push(e)}if(v&&v!==`none`){if(y){let e=za(g,`end`);e&&(b=e.x,x=e.y)}else switch(r){case`TB`:b=g.endX+20,g.endX<g.startX&&(b+=15),x=g.endY-15;break;case`BT`:b=g.endX-20,g.endX>g.startX&&(b-=15),x=g.endY+15;break;case`LR`:b=g.endX-20,x=g.endY-15,g.endY>g.startY&&(x-=15);break;case`RL`:b=g.endX+20,x=g.endY+15,g.startY>g.endY&&(x+=15);break;default:b=g.endX+20,x=g.endY-15}b??=g.endX+20,x??=g.endY+15;let e=ra(b,x,v,{fontSize:16});o.push(e)}}),{arrows:a,text:o}},Ua=(e,t,n)=>{let r=[],i=[];return e.forEach((e,a)=>{let{id:o,text:s,class:c}=e,l=t.querySelector(`#${o}`);if(!l)throw Error(`Node with id ${o} not found!`);let{transformX:u,transformY:d}=R(l),f=l.firstChild,p=Z(f,`rectangle`,{id:o,subtype:`note`,label:{text:s}});if(Object.assign(p,{x:p.x+u,y:p.y+d}),r.push(p),c){let e=n.find(e=>e.id===c);if(!e)throw Error(`class node with id ${c} not found!`);let r=t.querySelector(`path[id="edgeNote${a+1}"][data-edge="true"]`);if(r){i.push(Ia(r,{strokeStyle:`dotted`,startArrowhead:null,endArrowhead:null,start:{id:p.id,type:`rectangle`},end:{id:e.id,type:`rectangle`}}));return}let o=p.x+(p.width||0)/2,s=p.y+(p.height||0),l=o,u=e.y,d=na(o,s,l,u,{strokeStyle:`dotted`,startArrowhead:null,endArrowhead:null,start:{id:p.id,type:`rectangle`},end:{id:e.id,type:`rectangle`}});i.push(d)}}),{notes:r,connectors:i}},Wa=(e,t)=>{let n=e.db,r=n.getDirection?.()||`TB`,i=[],a=[],o=[],s=[],c=n.getNamespaces?.()||[],l=n.getClasses?.()||{},u=l instanceof Map?Object.fromEntries(l):l;if(u&&Object.keys(u).length){let e=Va(u,t,typeof n.lookUpDomId==`function`?n.lookUpDomId.bind(n):void 0);i.push(e.nodes),a.push(...e.lines),o.push(...e.text),s.push(...e.nodes)}let{arrows:d,text:f}=Ha(n.getRelations?.()||[],s,t,r),{notes:p,connectors:m}=Ua(n.getNotes?.()||[],t,s);return i.push(p),d.push(...m),o.push(...f),{type:`class`,nodes:i,lines:a,arrows:d,text:o,namespaces:c}},Ga=18,Ka=e=>{let t={};return e&&e.forEach(e=>{Y(e).forEach(({property:e,value:n})=>{e&&n&&(t[e]=J(n))})}),t},qa=e=>{if(e==null||e===``)return;let t=typeof e==`number`?e:parseFloat(J(e));if(!(!Number.isFinite(t)||t<=0))return t},Ja=(e,t)=>{let n=0,r=0,i=e;for(;i&&i!==t;){let{transformX:e,transformY:t}=R(i);n+=e,r+=t,i=i.parentElement}return{tx:n,ty:r}},Ya=e=>{let t=Array.from(e.querySelectorAll(`tspan`));return L(t.length?t.map(e=>e.textContent?.trim()).filter(Boolean).join(`
25
+ `):e.textContent?.trim()||``)},Xa=e=>{let t=e.querySelector(`text, foreignObject, div, span, p`)||e,n=parseFloat(getComputedStyle(t).fontSize||``);return(!Number.isFinite(n)||n<=0)&&(n=Math.max(12,e.getBBox().height*.75)),n},Za=(e,t,n)=>{let r=Ya(e);if(!r)return null;let i=e.getBBox(),{tx:a,ty:o}=Ja(e,t);return{className:e.getAttribute(`class`)||``,text:r,x:i.x+a,y:i.y+o,width:i.width,height:i.height,fontSize:Xa(e),color:Hi(e,n)}},Qa=(e,t,n,r,i,a,o)=>{let{tx:s,ty:c}=Ja(e,t),l=0,u=0,d=0,f=0;if(e.tagName.toLowerCase()===`line`)l=Number(e.getAttribute(`x1`))+s,u=Number(e.getAttribute(`y1`))+c,d=Number(e.getAttribute(`x2`))+s,f=Number(e.getAttribute(`y2`))+c;else{let t=Dt(e);if(!t)return null;l=t.startX+s,u=t.startY+c,d=t.endX+s,f=t.endY+c}let p={type:`line`,id:M(),groupId:n,startX:l,startY:u,endX:d,endY:f,metadata:{entityId:r}};return i&&X(i)&&i!==`none`&&(p.strokeColor=i),a!==void 0&&(p.strokeWidth=a),o&&(p.strokeStyle=o),p},$a=e=>{switch(e?.toLowerCase()){case`one`:return`cardinality_one`;case`many`:return`cardinality_many`;case`only_one`:return`cardinality_exactly_one`;case`one_or_more`:return`cardinality_one_or_many`;case`zero_or_one`:return`cardinality_zero_or_one`;case`zero_or_more`:return`cardinality_zero_or_many`;default:return null}},eo=e=>{switch(e){case`dotted`:return`dotted`;case`dashed`:return`dashed`;default:return`solid`}},to=(e,t)=>{let n=t.querySelector(`path[id="${e.id}"][data-edge="true"]`);return n?[n]:e.start===e.end?[`${e.start}-cyclic-special-1`,`${e.start}-cyclic-special-mid`,`${e.start}-cyclic-special-2`].map(e=>t.querySelector(`path[id="${e}"][data-edge="true"]`)).filter(e=>e!==null):[]},no=e=>{let t=[];return e.forEach(e=>{Ot(e).forEach(e=>{let n=t[t.length-1];n&&n.x===e.x&&n.y===e.y||t.push(e)})}),t},ro=(e,t)=>{let n=t.querySelector(`[id="${e.id}"]`);if(!n)throw Error(`ER entity ${e.id} not found in rendered SVG`);let r=e.attributes.length?M():void 0,i=n.getBBox(),{tx:a,ty:o}=Ja(n,t),s=Ka([...e.cssStyles||[],...e.cssCompiledStyles||[]]),c=J(s.fill||``),l=J(s.stroke||``),u=qa(s[`stroke-width`]),d=J(s[`stroke-dasharray`]||``),f=Array.from(n.querySelectorAll(`g.label`)).map(e=>Za(e,t,s.color)).filter(e=>e!==null),p=f.find(e=>e.className.includes(`name`))||f[0],m=f.filter(e=>e!==p),h=p?.text||L(e.alias||e.label||``),g={type:`rectangle`,id:e.id,groupId:r,x:i.x+a,y:i.y+o,width:i.width,height:i.height,label:{text:h,fontSize:e.attributes.length?Ga:p?.fontSize||16,color:p?.color,textAlign:`center`,verticalAlign:e.attributes.length?`top`:`middle`},metadata:{entityId:e.id,entityLabel:e.label,entityAlias:e.alias}};return X(c)&&c!==`none`&&(g.bgColor=c),X(l)&&l!==`none`&&(g.strokeColor=l),u&&Number.isFinite(u)&&u>0&&(g.strokeWidth=u),d&&d!==`none`&&(g.strokeStyle=`dashed`),{container:g,lines:Array.from(n.querySelectorAll(`.divider path, path.divider, line.divider`)).map(n=>Qa(n,t,r,e.id,g.strokeColor,g.strokeWidth,g.strokeStyle)).filter(e=>e!==null),text:m.map(t=>ra(t.x,t.y,t.text,{id:M(),groupId:r,width:t.width,height:t.height,fontSize:Ga,color:t.color,metadata:{entityId:e.id}}))}},io=(e,t)=>{let n=to(e,t);if(!n.length)throw Error(`ER relationship ${e.id} not found in rendered SVG`);let r=no(n);if(r.length<2)throw Error(`ER relationship ${e.id} is missing usable path points`);let i=r[0],a=r[r.length-1],o=n[0],s=J(o.getAttribute(`stroke`)||getComputedStyle(o).stroke||``),c=Number(o.getAttribute(`stroke-width`)||getComputedStyle(o).strokeWidth||1),l=na(i.x,i.y,a.x,a.y,{id:e.id,label:e.label?{text:L(e.label),fontSize:16,textAlign:`center`}:void 0,strokeStyle:eo(e.pattern),startArrowhead:$a(e.arrowTypeStart),endArrowhead:$a(e.arrowTypeEnd),start:{type:`rectangle`,id:e.start},end:{type:`rectangle`,id:e.end},points:r.map(e=>[e.x-i.x,e.y-i.y])});return X(s)&&s!==`none`&&(l.strokeColor=s),Number.isFinite(c)&&c>0&&(l.strokeWidth=c),l},ao=(e,t)=>{let n=e.getData(),r=n.nodes,i=n.edges,a=[],o=[],s=[];r.forEach(e=>{let n=ro(e,t);a.push(n.container),o.push(...n.lines),s.push(...n.text)});let c=i.map(e=>io(e,t));return{type:`erd`,nodes:[a],lines:o,arrows:c,text:s}},$=e=>{let t=J(e||``);return!t||t===`none`||t===`transparent`||t===`rgba(0, 0, 0, 0)`||t===`rgba(0,0,0,0)`?!1:X(t)},oo=(e,t,n)=>{switch(t){case j.FILL:case j.STROKE:$(n)&&(e[t]=J(n));break;case j.STROKE_WIDTH:case j.STROKE_DASHARRAY:J(n)&&(e[t]=J(n));break}},so=(e,t,n)=>{t===A.COLOR&&$(n)&&(e[A.COLOR]=J(n))},co=(e,t,n)=>{e&&Y(e).forEach(({property:e,value:r})=>{oo(t,e,r),so(n,e,r)})},lo=(e,t)=>{e&&Y(e).forEach(({property:e,value:n})=>{if(e===j.FILL&&$(n)){t[A.COLOR]=J(n);return}so(t,e,n)})},uo=e=>{let t=new Set;return e.filter(Boolean).forEach(e=>{Y(e||``).forEach(({property:e})=>{t.add(e)})}),t},fo=(e,t,n)=>{e&&[[j.FILL,e.getAttribute(`fill`)],[j.STROKE,e.getAttribute(`stroke`)],[j.STROKE_WIDTH,e.getAttribute(`stroke-width`)],[j.STROKE_DASHARRAY,e.getAttribute(`stroke-dasharray`)]].forEach(([e,r])=>{if(!n.has(e)||t[e])return;let i=J(r||``);i&&oo(t,e,i)})},po=(e,t,n)=>{if(!e)return;let r=[e,...Array.from(e.querySelectorAll(`text, foreignObject, div, span, p`))];for(let e of r){if(t[A.COLOR]||(n.has(A.COLOR)||n.has(j.FILL))&&(lo(e.getAttribute(`style`),t),t[A.COLOR]))break;let r=J(e.getAttribute(`fill`)||e.getAttribute(`color`)||``);(n.has(A.COLOR)||n.has(j.FILL))&&$(r)&&(t[A.COLOR]=r)}},mo=(e,t)=>{let n=0,r=0,i=e;for(;i&&i!==t;){let{transformX:e,transformY:t}=R(i);n+=e,r+=t,i=i.parentElement}return{tx:n,ty:r}},ho=(e,t)=>{let n=e.getBBox(),{tx:r,ty:i}=mo(e,t);return{x:n.x+r,y:n.y+i,width:n.width,height:n.height}},go=(e,t)=>{let n=e.querySelector(`line.divider`);if(!n)return;let{tx:r,ty:i}=mo(n,t);return{startX:Number(n.getAttribute(`x1`))+r,startY:Number(n.getAttribute(`y1`))+i,endX:Number(n.getAttribute(`x2`))+r,endY:Number(n.getAttribute(`y2`))+i}},_o=e=>{let t=e.getBBox();return Math.abs(t.width*t.height)},vo=(e,t)=>{let n=e.getAttribute(`style`);if(!n)return;let r=Y(n).find(e=>e.property===t);if(r)return J(r.value)},yo=(e,t)=>{let n=e.map(e=>({element:e,area:_o(e)})).filter(({area:e})=>Number.isFinite(e)&&e>0);return n.length===0?null:n.sort((e,n)=>t===`largest`?n.area-e.area:e.area-n.area)[0].element},bo=(e,t)=>{if(!e||!t.has(j.FILL)&&!t.has(j.STROKE))return;let n=J(e.getAttribute(`fill`)||vo(e,j.FILL)||``),r=J(e.getAttribute(`stroke`)||vo(e,j.STROKE)||``);if($(n))return n;if($(r))return r},xo=(e,t)=>bo(yo(Array.from(e.querySelectorAll(`circle, ellipse, path`)),`smallest`),t),So=e=>{if(e.length<2)return e;let t=e.slice(1),n=t.filter(e=>e.trim().length>0).reduce((e,t)=>{let n=t.match(/^\s*/)?.[0].length??0;return Math.min(e,n)},1/0);return!Number.isFinite(n)||n<=0?e.map(e=>e.trimEnd()):[e[0].trimEnd(),...t.map(e=>e.replace(RegExp(`^\\s{0,${n}}`),``).trimEnd())]},Co=e=>So(Array.isArray(e.label)?e.label.map(e=>L(e)):L(e.label||``).split(`
26
+ `)).join(`
27
+ `),wo=e=>e.description?(Array.isArray(e.description)?e.description:[e.description]).map(e=>L(e)).filter(e=>e.length>0):[],To=e=>{let t=new Set,n=e=>(e&&t.add(e),e),r=e=>n(e.find(e=>!t.has(e))||null);return t=>{let i=[`[id='${t.domId}']`,`[id='${t.id}']`,`[data-id='${t.id}']`];for(let t of i){let r=e.querySelector(t);if(r)return n(r)}switch(t.shape){case`divider`:return r(Array.from(e.querySelectorAll(`g.statediagram-cluster-alt`)));case`stateStart`:return r(Array.from(e.querySelectorAll(`g.node.default`)).filter(e=>e.querySelector(`circle.state-start`)));case`stateEnd`:return r(Array.from(e.querySelectorAll(`g.node.default`)).filter(e=>!e.querySelector(`circle.state-start`)));default:return null}}},Eo=(e,t)=>{switch(t){case`roundedWithTitle`:return e.querySelector(`rect.outer`)||e.querySelector(`rect`)||e;case`divider`:return e.querySelector(`rect.divider`)||e.querySelector(`rect`)||e;case`rectWithTitle`:return e.querySelector(`rect.outer`)||e.querySelector(`rect`)||e;case`stateStart`:return yo(Array.from(e.querySelectorAll(`circle, ellipse, path`)),`largest`)||e;case`stateEnd`:return yo(Array.from(e.querySelectorAll(`circle, ellipse, path`)),`largest`)||e;default:return e.querySelector(`rect, path, circle, ellipse, polygon`)||e}},Do=(e,t,n)=>{let r=n(e);if(!r)throw Error(`State node element not found for "${e.id}"`);let i=Eo(r,e.shape),a={},o={},s=[e.labelStyle,...e.cssCompiledStyles||[],...e.cssStyles||[]],c=uo(s);s.filter(Boolean).forEach(e=>{co(e,a,o)}),fo(i,a,c),po(r,o,c);let l=ho(i,t);return{id:e.id,shape:e.shape,text:Co(e),description:wo(e),x:l.x,y:l.y,width:l.width,height:l.height,parentId:e.parentId,position:e.position,containerStyle:a,labelStyle:o,dividerLine:e.shape===`rectWithTitle`?go(r,t):void 0,endInnerColor:e.shape===`stateEnd`?xo(r,c):void 0,isRenderable:e.shape!==`noteGroup`}},Oo=(e,t)=>{let n=t.querySelector(`[id='${e.id}']`);if(!n)return null;let{tx:r,ty:i}=mo(n,t),a=kt(n,{x:r,y:i},`MCL`);if(a.reflectionPoints.length<2)return null;let o={},s=(e,t)=>{switch(e){case j.STROKE:$(t)&&(o.strokeColor=J(t));break;case j.STROKE_WIDTH:{let e=parseFloat(J(t));Number.isFinite(e)&&e>0&&(o.strokeWidth=e);break}case j.STROKE_DASHARRAY:J(t)&&(o.strokeStyle=`dashed`);break}};[e.style].filter(Boolean).forEach(e=>{Y(e||``).forEach(({property:e,value:t})=>{s(e,t)})});let c=e.arrowhead===`none`||e.classes?.includes(`note-edge`);return{id:e.id,start:e.start,end:e.end,text:L(e.label||``),...a,strokeColor:o.strokeColor,strokeWidth:o.strokeWidth,strokeStyle:c?`dashed`:o.strokeStyle,isNoteEdge:c}},ko=(e,t)=>{let{nodes:n,edges:r}=e.getData(),i=To(t);return{type:`state`,nodes:n.map(e=>Do(e,t,i)),edges:r.map(e=>Oo(e,t)).filter(e=>e!==null)}},Ao=Promise.resolve(),jo=e=>{let t=Ao.then(e,e);return Ao=t.then(()=>void 0,()=>void 0),t},Mo=null,No=0,Po=e=>JSON.stringify(e),Fo=e=>{let t=e.querySelector(`svg`);if(!t)throw Error(`SVG element not found`);let n=t.getBoundingClientRect(),r=n.width,i=n.height;t.setAttribute(`width`,`${r}`),t.setAttribute(`height`,`${i}`);let a=unescape(encodeURIComponent(t.outerHTML));return{type:`graphImage`,mimeType:`image/svg+xml`,dataURL:`data:image/svg+xml;base64,${btoa(a)}`,width:r,height:i}},Io=async(e,t=xe)=>jo(async()=>{let n=t.themeVariables?.fontSize??xe.themeVariables.fontSize,r={...xe,...t,fontSize:n,themeVariables:{...xe.themeVariables,...t.themeVariables,fontSize:n}},i=Po(r);i!==Mo&&(Ri.initialize(r),Mo=i);let a=await Ri.mermaidAPI.getDiagramFromText(Ct(e)),o=`mermaid-to-excalidraw-${No++}`,s=document.createElement(`div`);s.setAttribute(`style`,`opacity: 0; position: fixed; z-index: -1; left: -99999px; top: -99999px;`);let c=`${o}-container`;s.id=c,document.getElementById(c)?.remove(),document.body.appendChild(s);try{let{svg:t}=await Ri.render(o,e,s);s.innerHTML=t;let n;try{switch(a.type){case`flowchart-v2`:case`graph`:n=ea(a.db,s);break;case`sequence`:n=_a(a,s);break;case`class`:case`classDiagram`:n=Wa(a,s);break;case`er`:n=ao(a.db,s);break;case`state`:case`stateDiagram`:n=ko(a.db,s);break;default:n=Fo(s)}}catch(e){console.error(`Error processing Mermaid diagram:`,e),n=Fo(s)}return n}finally{s.remove()}}),Lo=async(e,t)=>{let n=t||{},r=parseInt(n.themeVariables?.fontSize??``)||20;return jt(await Io(e,{...n,themeVariables:{...n.themeVariables}}),{fontSize:r})};export{Lo as parseMermaidToExcalidraw};
@@ -0,0 +1 @@
1
+ import{D as e}from"./index-0hvuUhZv.js";var t=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0,e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,e.htmlCtrlEntityRegex=/&(newline|tab);/gi,e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,e.urlSchemeRegex=/^.+(:|&colon;)/gim,e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,e.relativeFirstCharacters=[`.`,`/`],e.BLANK_URL=`about:blank`})),n=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.sanitizeUrl=s;var n=t();function r(e){return n.relativeFirstCharacters.indexOf(e[0])>-1}function i(e){return e.replace(n.ctrlCharactersRegex,``).replace(n.htmlEntitiesRegex,function(e,t){return String.fromCharCode(t)})}function a(e){return URL.canParse(e)}function o(e){try{return decodeURIComponent(e)}catch{return e}}function s(e){if(!e)return n.BLANK_URL;var t,s=o(e.trim());do s=i(s).replace(n.htmlCtrlEntityRegex,``).replace(n.ctrlCharactersRegex,``).replace(n.whitespaceEscapeCharsRegex,``).trim(),s=o(s),t=s.match(n.ctrlCharactersRegex)||s.match(n.htmlEntitiesRegex)||s.match(n.htmlCtrlEntityRegex)||s.match(n.whitespaceEscapeCharsRegex);while(t&&t.length>0);var c=s;if(!c)return n.BLANK_URL;if(r(c))return c;var l=c.trimStart(),u=l.match(n.urlSchemeRegex);if(!u)return c;var d=u[0].toLowerCase().trim();if(n.invalidProtocolRegex.test(d))return n.BLANK_URL;var f=l.replace(/\\/g,`/`);if(d===`mailto:`||d.includes(`://`))return f;if(d===`http:`||d===`https:`){if(!a(f))return n.BLANK_URL;var p=new URL(f);return p.protocol=p.protocol.toLowerCase(),p.hostname=p.hostname.toLowerCase(),p.toString()}return f}}));export{n as t};
@@ -0,0 +1,7 @@
1
+ function e(r,i,a=0,o=r.length-1,s=n){for(;o>a;){if(o-a>600){let t=o-a+1,n=i-a+1,c=Math.log(t),l=.5*Math.exp(2*c/3),u=.5*Math.sqrt(c*l*(t-l)/t)*(n-t/2<0?-1:1);e(r,i,Math.max(a,Math.floor(i-n*l/t+u)),Math.min(o,Math.floor(i+(t-n)*l/t+u)),s)}let n=r[i],c=a,l=o;for(t(r,a,i),s(r[o],n)>0&&t(r,a,o);c<l;){for(t(r,c,l),c++,l--;s(r[c],n)<0;)c++;for(;s(r[l],n)>0;)l--}s(r[a],n)===0?t(r,a,l):(l++,t(r,l,o)),l<=i&&(a=l+1),i<=l&&(o=l-1)}}function t(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function n(e,t){return e<t?-1:+(e>t)}var r=class{constructor(e=9){this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(e){let t=this.data,n=[];if(!h(e,t))return n;let r=this.toBBox,i=[];for(;t;){for(let a=0;a<t.children.length;a++){let o=t.children[a],s=t.leaf?r(o):o;h(e,s)&&(t.leaf?n.push(o):m(e,s)?this._all(o,n):i.push(o))}t=i.pop()}return n}collides(e){let t=this.data;if(!h(e,t))return!1;let n=[];for(;t;){for(let r=0;r<t.children.length;r++){let i=t.children[r],a=t.leaf?this.toBBox(i):i;if(h(e,a)){if(t.leaf||m(e,a))return!0;n.push(i)}}t=n.pop()}return!1}load(e){if(!(e&&e.length))return this;if(e.length<this._minEntries){for(let t=0;t<e.length;t++)this.insert(e[t]);return this}let t=this._build(e.slice(),0,e.length-1,0);if(!this.data.children.length)this.data=t;else if(this.data.height===t.height)this._splitRoot(this.data,t);else{if(this.data.height<t.height){let e=this.data;this.data=t,t=e}this._insert(t,this.data.height-t.height-1,!0)}return this}insert(e){return e&&this._insert(e,this.data.height-1),this}clear(){return this.data=g([]),this}remove(e,t){if(!e)return this;let n=this.data,r=this.toBBox(e),a=[],o=[],s,c,l;for(;n||a.length;){if(n||(n=a.pop(),c=a[a.length-1],s=o.pop(),l=!0),n.leaf){let r=i(e,n.children,t);if(r!==-1)return n.children.splice(r,1),a.push(n),this._condense(a),this}!l&&!n.leaf&&m(n,r)?(a.push(n),o.push(s),s=0,c=n,n=n.children[0]):c?(s++,n=c.children[s],l=!1):n=null}return this}toBBox(e){return e}compareMinX(e,t){return e.minX-t.minX}compareMinY(e,t){return e.minY-t.minY}toJSON(){return this.data}fromJSON(e){return this.data=e,this}_all(e,t){let n=[];for(;e;)e.leaf?t.push(...e.children):n.push(...e.children),e=n.pop();return t}_build(e,t,n,r){let i=n-t+1,o=this._maxEntries,s;if(i<=o)return s=g(e.slice(t,n+1)),a(s,this.toBBox),s;r||(r=Math.ceil(Math.log(i)/Math.log(o)),o=Math.ceil(i/o**(r-1))),s=g([]),s.leaf=!1,s.height=r;let c=Math.ceil(i/o),l=c*Math.ceil(Math.sqrt(o));_(e,t,n,l,this.compareMinX);for(let i=t;i<=n;i+=l){let t=Math.min(i+l-1,n);_(e,i,t,c,this.compareMinY);for(let n=i;n<=t;n+=c){let i=Math.min(n+c-1,t);s.children.push(this._build(e,n,i,r-1))}}return a(s,this.toBBox),s}_chooseSubtree(e,t,n,r){for(;r.push(t),!(t.leaf||r.length-1===n);){let n=1/0,r=1/0,i;for(let a=0;a<t.children.length;a++){let o=t.children[a],s=u(o),c=f(e,o)-s;c<r?(r=c,n=s<n?s:n,i=o):c===r&&s<n&&(n=s,i=o)}t=i||t.children[0]}return t}_insert(e,t,n){let r=n?e:this.toBBox(e),i=[],a=this._chooseSubtree(r,this.data,t,i);for(a.children.push(e),s(a,r);t>=0&&i[t].children.length>this._maxEntries;)this._split(i,t),t--;this._adjustParentBBoxes(r,i,t)}_split(e,t){let n=e[t],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);let o=this._chooseSplitIndex(n,i,r),s=g(n.children.splice(o,n.children.length-o));s.height=n.height,s.leaf=n.leaf,a(n,this.toBBox),a(s,this.toBBox),t?e[t-1].children.push(s):this._splitRoot(n,s)}_splitRoot(e,t){this.data=g([e,t]),this.data.height=e.height+1,this.data.leaf=!1,a(this.data,this.toBBox)}_chooseSplitIndex(e,t,n){let r,i=1/0,a=1/0;for(let s=t;s<=n-t;s++){let t=o(e,0,s,this.toBBox),c=o(e,s,n,this.toBBox),l=p(t,c),d=u(t)+u(c);l<i?(i=l,r=s,a=d<a?d:a):l===i&&d<a&&(a=d,r=s)}return r||n-t}_chooseSplitAxis(e,t,n){let r=e.leaf?this.compareMinX:c,i=e.leaf?this.compareMinY:l;this._allDistMargin(e,t,n,r)<this._allDistMargin(e,t,n,i)&&e.children.sort(r)}_allDistMargin(e,t,n,r){e.children.sort(r);let i=this.toBBox,a=o(e,0,t,i),c=o(e,n-t,n,i),l=d(a)+d(c);for(let r=t;r<n-t;r++){let t=e.children[r];s(a,e.leaf?i(t):t),l+=d(a)}for(let r=n-t-1;r>=t;r--){let t=e.children[r];s(c,e.leaf?i(t):t),l+=d(c)}return l}_adjustParentBBoxes(e,t,n){for(let r=n;r>=0;r--)s(t[r],e)}_condense(e){for(let t=e.length-1,n;t>=0;t--)e[t].children.length===0?t>0?(n=e[t-1].children,n.splice(n.indexOf(e[t]),1)):this.clear():a(e[t],this.toBBox)}};function i(e,t,n){if(!n)return t.indexOf(e);for(let r=0;r<t.length;r++)if(n(e,t[r]))return r;return-1}function a(e,t){o(e,0,e.children.length,t,e)}function o(e,t,n,r,i){i||=g(null),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(let a=t;a<n;a++){let t=e.children[a];s(i,e.leaf?r(t):t)}return i}function s(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function c(e,t){return e.minX-t.minX}function l(e,t){return e.minY-t.minY}function u(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function d(e){return e.maxX-e.minX+(e.maxY-e.minY)}function f(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function p(e,t){let n=Math.max(e.minX,t.minX),r=Math.max(e.minY,t.minY),i=Math.min(e.maxX,t.maxX),a=Math.min(e.maxY,t.maxY);return Math.max(0,i-n)*Math.max(0,a-r)}function m(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function h(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function g(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function _(t,n,r,i,a){let o=[n,r];for(;o.length;){if(r=o.pop(),n=o.pop(),r-n<=i)continue;let s=n+Math.ceil((r-n)/i/2)*i;e(t,s,n,r,a),o.push(n,s,s,r)}}function v(e){let t=e.replace(/\r\n?/g,`
2
+ `),n=[],r=t.length,i=0;for(;i<r;){for(;i<r&&t.charCodeAt(i)===10;)i++;if(i>=r)break;let e=t.indexOf(`
3
+ `,i);e===-1&&(e=r);let a=t.substring(i,e).trim();i=e+1;let o=parseInt(a,10);if(isNaN(o)){i<r&&(e=t.indexOf(`
4
+ `,i),e===-1&&(e=r),i=e+1);continue}if(i>=r)break;e=t.indexOf(`
5
+ `,i),e===-1&&(e=r);let s=t.substring(i,e).replace(/\s+$/,``);i=e+1,n.push({code:o,value:s})}return n}function y(e,t,n){for(;t<e.length;){let r=e[t];if(r.code===0&&r.value===`ENDSEC`)return t+1;if(r.code===9){let i=r.value;switch(t++,i){case`$ACADVER`:t<e.length&&(n.acadVersion=e[t].value,t++);break;case`$EXTMIN`:if(t<e.length){let r=b(e,t);n.extMin=r.point,t=r.nextIndex}break;case`$EXTMAX`:if(t<e.length){let r=b(e,t);n.extMax=r.point,t=r.nextIndex}break;case`$INSUNITS`:t<e.length&&(n.insUnits=parseInt(e[t].value,10),t++);break;case`$MEASUREMENT`:t<e.length&&(n.measurement=parseInt(e[t].value,10),t++);break;case`$LTSCALE`:t<e.length&&(n.ltScale=parseFloat(e[t].value),t++);break;case`$DWGCODEPAGE`:t<e.length&&(n.dwgCodePage=e[t].value,t++);break;case`$HANDSEED`:t<e.length&&(n.handleSeed=e[t].value,t++);break;default:for(;t<e.length&&e[t].code!==9&&e[t].code!==0;)n[i]=e[t].value,t++}}else t++}return t}function b(e,t){let n={x:0,y:0,z:0};for(;t<e.length;){let r=e[t].code;if(r===10)n.x=parseFloat(e[t].value),t++;else if(r===20)n.y=parseFloat(e[t].value),t++;else if(r===30)n.z=parseFloat(e[t].value),t++;else break}return{point:n,nextIndex:t}}function ee(e,t,n){for(;t<e.length;){let r=e[t];if(r.code===0&&r.value===`ENDSEC`)return t+1;if(r.code===0&&r.value===`TABLE`){if(t++,t>=e.length)break;let r=e[t].value;switch(t++,r){case`LAYER`:t=ne(e,t,n.layers);break;case`LTYPE`:t=x(e,t,n.lineTypes);break;case`STYLE`:t=S(e,t,n.styles);break;default:t=te(e,t);break}}else t++}return t}function te(e,t){for(;t<e.length;){if(e[t].code===0&&e[t].value===`ENDTAB`)return t+1;t++}return t}function ne(e,t,n){for(;t<e.length;){let r=e[t];if(r.code===0&&r.value===`ENDTAB`)return t+1;if(r.code===0&&r.value===`LAYER`){t++;let r={name:`0`,color:7,lineType:`Continuous`,flags:0,lineWeight:-3,isOff:!1,isFrozen:!1,isLocked:!1};for(;t<e.length&&e[t].code!==0;){let n=e[t];switch(n.code){case 2:r.name=n.value;break;case 6:r.lineType=n.value;break;case 62:r.color=parseInt(n.value,10);break;case 70:r.flags=parseInt(n.value,10);break;case 370:r.lineWeight=parseInt(n.value,10);break;case 420:r.trueColor=parseInt(n.value,10);break}t++}n.set(r.name,r)}else t++}return t}function x(e,t,n){for(;t<e.length;){let r=e[t];if(r.code===0&&r.value===`ENDTAB`)return t+1;if(r.code===0&&r.value===`LTYPE`){t++;let r={name:``,description:``,pattern:[],totalLength:0};for(;t<e.length&&e[t].code!==0;){let n=e[t];switch(n.code){case 2:r.name=n.value;break;case 3:r.description=n.value;break;case 40:r.totalLength=parseFloat(n.value);break;case 49:r.pattern.push(parseFloat(n.value));break}t++}r.name&&n.set(r.name,r)}else t++}return t}function S(e,t,n){for(;t<e.length;){let r=e[t];if(r.code===0&&r.value===`ENDTAB`)return t+1;if(r.code===0&&r.value===`STYLE`){t++;let r={name:``,fontName:``,bigFontName:``,height:0,widthFactor:1,obliqueAngle:0};for(;t<e.length&&e[t].code!==0;){let n=e[t];switch(n.code){case 2:r.name=n.value;break;case 3:r.fontName=n.value;break;case 4:r.bigFontName=n.value;break;case 40:r.height=parseFloat(n.value);break;case 41:r.widthFactor=parseFloat(n.value);break;case 50:r.obliqueAngle=parseFloat(n.value);break}t++}r.name&&n.set(r.name,r)}else t++}return t}function C(e){let t={type:``,layer:`0`,color:256,lineType:`BYLAYER`,lineTypeScale:1,lineWeight:-1,visible:!0,extrusion:{x:0,y:0,z:1}};for(let n of e)switch(n.code){case 5:t.handle=n.value;break;case 8:t.layer=n.value;break;case 6:t.lineType=n.value;break;case 48:t.lineTypeScale=parseFloat(n.value);break;case 60:t.visible=n.value===`0`||n.value===``;break;case 62:t.color=parseInt(n.value,10);break;case 370:t.lineWeight=parseInt(n.value,10);break;case 420:t.trueColor=parseInt(n.value,10);break;case 210:t.extrusion.x=parseFloat(n.value);break;case 220:t.extrusion.y=parseFloat(n.value);break;case 230:t.extrusion.z=parseFloat(n.value);break}return t}function w(e){let t={...C(e),type:`LINE`,start:{x:0,y:0,z:0},end:{x:0,y:0,z:0}};for(let n of e)switch(n.code){case 10:t.start.x=parseFloat(n.value);break;case 20:t.start.y=parseFloat(n.value);break;case 30:t.start.z=parseFloat(n.value);break;case 11:t.end.x=parseFloat(n.value);break;case 21:t.end.y=parseFloat(n.value);break;case 31:t.end.z=parseFloat(n.value);break}return t}function T(e){let t={...C(e),type:`CIRCLE`,center:{x:0,y:0,z:0},radius:0};for(let n of e)switch(n.code){case 10:t.center.x=parseFloat(n.value);break;case 20:t.center.y=parseFloat(n.value);break;case 30:t.center.z=parseFloat(n.value);break;case 40:t.radius=parseFloat(n.value);break}return t}function E(e){let t={...C(e),type:`ARC`,center:{x:0,y:0,z:0},radius:0,startAngle:0,endAngle:360};for(let n of e)switch(n.code){case 10:t.center.x=parseFloat(n.value);break;case 20:t.center.y=parseFloat(n.value);break;case 30:t.center.z=parseFloat(n.value);break;case 40:t.radius=parseFloat(n.value);break;case 50:t.startAngle=parseFloat(n.value);break;case 51:t.endAngle=parseFloat(n.value);break}return t}function re(e){let t={...C(e),type:`LWPOLYLINE`,vertices:[],closed:!1,constantWidth:0,elevation:0},n=null;for(let r of e)switch(r.code){case 70:t.closed=(parseInt(r.value,10)&1)!=0;break;case 38:t.elevation=parseFloat(r.value);break;case 43:t.constantWidth=parseFloat(r.value);break;case 10:n&&t.vertices.push(n),n={x:parseFloat(r.value),y:0,bulge:0,startWidth:0,endWidth:0};break;case 20:n&&(n.y=parseFloat(r.value));break;case 40:n&&(n.startWidth=parseFloat(r.value));break;case 41:n&&(n.endWidth=parseFloat(r.value));break;case 42:n&&(n.bulge=parseFloat(r.value));break}return n&&t.vertices.push(n),t}function ie(e){let t={...C(e),type:`POLYLINE`,vertices:[],closed:!1,is3d:!1};for(let n of e)switch(n.code){case 70:{let e=parseInt(n.value,10);t.closed=(e&1)!=0,t.is3d=(e&8)!=0;break}}return t}function ae(e){let t={...C(e),type:`ELLIPSE`,center:{x:0,y:0,z:0},majorAxis:{x:1,y:0,z:0},minorRatio:1,startParam:0,endParam:Math.PI*2};for(let n of e)switch(n.code){case 10:t.center.x=parseFloat(n.value);break;case 20:t.center.y=parseFloat(n.value);break;case 30:t.center.z=parseFloat(n.value);break;case 11:t.majorAxis.x=parseFloat(n.value);break;case 21:t.majorAxis.y=parseFloat(n.value);break;case 31:t.majorAxis.z=parseFloat(n.value);break;case 40:t.minorRatio=parseFloat(n.value);break;case 41:t.startParam=parseFloat(n.value);break;case 42:t.endParam=parseFloat(n.value);break}return t}function oe(e){let t={...C(e),type:`SPLINE`,degree:3,flags:0,knots:[],controlPoints:[],fitPoints:[],weights:[]},n=null,r=null;for(let i of e)switch(i.code){case 70:t.flags=parseInt(i.value,10);break;case 71:t.degree=parseInt(i.value,10);break;case 40:t.knots.push(parseFloat(i.value));break;case 41:t.weights.push(parseFloat(i.value));break;case 10:n&&t.controlPoints.push(n),n={x:parseFloat(i.value),y:0,z:0};break;case 20:n&&(n.y=parseFloat(i.value));break;case 30:n&&(n.z=parseFloat(i.value));break;case 11:r&&t.fitPoints.push(r),r={x:parseFloat(i.value),y:0,z:0};break;case 21:r&&(r.y=parseFloat(i.value));break;case 31:r&&(r.z=parseFloat(i.value));break;case 12:t.startTangent||={x:0,y:0,z:0},t.startTangent.x=parseFloat(i.value);break;case 22:t.startTangent&&(t.startTangent.y=parseFloat(i.value));break;case 32:t.startTangent&&(t.startTangent.z=parseFloat(i.value));break;case 13:t.endTangent||={x:0,y:0,z:0},t.endTangent.x=parseFloat(i.value);break;case 23:t.endTangent&&(t.endTangent.y=parseFloat(i.value));break;case 33:t.endTangent&&(t.endTangent.z=parseFloat(i.value));break}return n&&t.controlPoints.push(n),r&&t.fitPoints.push(r),t}function se(e){let t={...C(e),type:`TEXT`,text:``,insertionPoint:{x:0,y:0,z:0},height:1,rotation:0,widthFactor:1,obliqueAngle:0,style:`STANDARD`,hAlign:0,vAlign:0,generationFlags:0};for(let n of e)switch(n.code){case 1:t.text=n.value;break;case 10:t.insertionPoint.x=parseFloat(n.value);break;case 20:t.insertionPoint.y=parseFloat(n.value);break;case 30:t.insertionPoint.z=parseFloat(n.value);break;case 11:t.alignmentPoint||={x:0,y:0,z:0},t.alignmentPoint.x=parseFloat(n.value);break;case 21:t.alignmentPoint||={x:0,y:0,z:0},t.alignmentPoint.y=parseFloat(n.value);break;case 31:t.alignmentPoint||={x:0,y:0,z:0},t.alignmentPoint.z=parseFloat(n.value);break;case 40:t.height=parseFloat(n.value);break;case 41:t.widthFactor=parseFloat(n.value);break;case 50:t.rotation=parseFloat(n.value);break;case 51:t.obliqueAngle=parseFloat(n.value);break;case 7:t.style=n.value;break;case 71:t.generationFlags=parseInt(n.value,10);break;case 72:t.hAlign=parseInt(n.value,10);break;case 73:t.vAlign=parseInt(n.value,10);break}return t}function ce(e){let t={...C(e),type:`MTEXT`,text:``,insertionPoint:{x:0,y:0,z:0},height:1,width:0,attachmentPoint:1,drawingDirection:1,rotation:0,lineSpacingStyle:1,lineSpacingFactor:1,style:`STANDARD`,bgFill:0,bgFillScale:1.5},n=[];for(let r of e)switch(r.code){case 1:n.push(r.value);break;case 3:n.push(r.value);break;case 7:t.style=r.value;break;case 10:t.insertionPoint.x=parseFloat(r.value);break;case 20:t.insertionPoint.y=parseFloat(r.value);break;case 30:t.insertionPoint.z=parseFloat(r.value);break;case 11:t.textDirection||={x:0,y:0,z:0},t.textDirection.x=parseFloat(r.value);break;case 21:t.textDirection||={x:0,y:0,z:0},t.textDirection.y=parseFloat(r.value);break;case 31:t.textDirection||={x:0,y:0,z:0},t.textDirection.z=parseFloat(r.value);break;case 40:t.height=parseFloat(r.value);break;case 41:t.width=parseFloat(r.value);break;case 44:t.lineSpacingFactor=parseFloat(r.value);break;case 50:t.rotation=parseFloat(r.value);break;case 71:t.attachmentPoint=parseInt(r.value,10);break;case 72:t.drawingDirection=parseInt(r.value,10);break;case 73:t.lineSpacingStyle=parseInt(r.value,10);break;case 90:t.bgFill=parseInt(r.value,10);break}return t.text=n.join(``),t}function le(e){let t={...C(e),type:`INSERT`,blockName:``,insertionPoint:{x:0,y:0,z:0},scaleX:1,scaleY:1,scaleZ:1,rotation:0,columnCount:1,rowCount:1,columnSpacing:0,rowSpacing:0,attribs:[]};for(let n of e)switch(n.code){case 2:t.blockName=n.value;break;case 10:t.insertionPoint.x=parseFloat(n.value);break;case 20:t.insertionPoint.y=parseFloat(n.value);break;case 30:t.insertionPoint.z=parseFloat(n.value);break;case 41:t.scaleX=parseFloat(n.value);break;case 42:t.scaleY=parseFloat(n.value);break;case 43:t.scaleZ=parseFloat(n.value);break;case 44:t.columnSpacing=parseFloat(n.value);break;case 45:t.rowSpacing=parseFloat(n.value);break;case 50:t.rotation=parseFloat(n.value);break;case 70:t.columnCount=parseInt(n.value,10)||1;break;case 71:t.rowCount=parseInt(n.value,10)||1;break}return t}function ue(e){let t={...C(e),type:`DIMENSION`,blockName:``,dimStyle:`STANDARD`,dimType:0,defPoint:{x:0,y:0,z:0},textMidpoint:{x:0,y:0,z:0},textOverride:``,rotation:0,textRotation:0,leaderLength:0};for(let n of e)switch(n.code){case 1:t.textOverride=n.value;break;case 2:t.blockName=n.value;break;case 3:t.dimStyle=n.value;break;case 10:t.defPoint.x=parseFloat(n.value);break;case 20:t.defPoint.y=parseFloat(n.value);break;case 30:t.defPoint.z=parseFloat(n.value);break;case 11:t.textMidpoint.x=parseFloat(n.value);break;case 21:t.textMidpoint.y=parseFloat(n.value);break;case 31:t.textMidpoint.z=parseFloat(n.value);break;case 13:t.defPoint2||={x:0,y:0,z:0},t.defPoint2.x=parseFloat(n.value);break;case 23:t.defPoint2||={x:0,y:0,z:0},t.defPoint2.y=parseFloat(n.value);break;case 33:t.defPoint2||={x:0,y:0,z:0},t.defPoint2.z=parseFloat(n.value);break;case 14:t.defPoint3||={x:0,y:0,z:0},t.defPoint3.x=parseFloat(n.value);break;case 24:t.defPoint3||={x:0,y:0,z:0},t.defPoint3.y=parseFloat(n.value);break;case 34:t.defPoint3||={x:0,y:0,z:0},t.defPoint3.z=parseFloat(n.value);break;case 15:t.defPoint4||={x:0,y:0,z:0},t.defPoint4.x=parseFloat(n.value);break;case 25:t.defPoint4||={x:0,y:0,z:0},t.defPoint4.y=parseFloat(n.value);break;case 35:t.defPoint4||={x:0,y:0,z:0},t.defPoint4.z=parseFloat(n.value);break;case 16:t.defPoint5||={x:0,y:0,z:0},t.defPoint5.x=parseFloat(n.value);break;case 26:t.defPoint5||={x:0,y:0,z:0},t.defPoint5.y=parseFloat(n.value);break;case 36:t.defPoint5||={x:0,y:0,z:0},t.defPoint5.z=parseFloat(n.value);break;case 40:t.leaderLength=parseFloat(n.value);break;case 50:t.rotation=parseFloat(n.value);break;case 53:t.textRotation=parseFloat(n.value);break;case 70:t.dimType=parseInt(n.value,10);break}return t}function de(e){let t={...C(e),type:`HATCH`,patternName:``,solidFill:!0,associative:!1,hatchStyle:0,patternType:1,patternAngle:0,patternScale:1,boundaryPaths:[]},n=0;for(;n<e.length;){let r=e[n];switch(r.code){case 2:t.patternName=r.value;break;case 41:t.patternScale=parseFloat(r.value);break;case 52:t.patternAngle=parseFloat(r.value);break;case 70:t.solidFill=r.value===`1`;break;case 71:t.associative=r.value===`1`;break;case 75:t.hatchStyle=parseInt(r.value,10);break;case 76:t.patternType=parseInt(r.value,10);break;case 91:{let i=parseInt(r.value,10);n++;for(let r=0;r<i&&n<e.length;r++){let r=fe(e,n);t.boundaryPaths.push(r.path),n=r.nextIndex}continue}}n++}return t}function fe(e,t){let n=0;return t<e.length&&e[t].code===92&&(n=parseInt(e[t].value,10),t++),n&2?pe(e,t,n):me(e,t,n)}function pe(e,t,n){let r={type:`polyline`,vertices:[],bulges:[],flags:n},i=!1;t<e.length&&e[t].code===72&&(i=e[t].value===`1`,t++),t<e.length&&e[t].code===73&&(r.isClosed=e[t].value===`1`,t++);let a=0;t<e.length&&e[t].code===93&&(a=parseInt(e[t].value,10),t++);for(let n=0;n<a&&t<e.length;n++){let n={x:0,y:0};e[t].code===10&&(n.x=parseFloat(e[t].value),t++),t<e.length&&e[t].code===20&&(n.y=parseFloat(e[t].value),t++),r.vertices.push(n),i&&t<e.length&&e[t].code===42?(r.bulges.push(parseFloat(e[t].value)),t++):i&&r.bulges.push(0)}for(;t<e.length&&(e[t].code===97||e[t].code===330);)if(e[t].code===97){let n=parseInt(e[t].value,10);t++;for(let r=0;r<n&&t<e.length&&e[t].code===330;r++)t++}else t++;return{path:r,nextIndex:t}}function me(e,t,n){let r={type:`edges`,edges:[],flags:n},i=0;t<e.length&&e[t].code===93&&(i=parseInt(e[t].value,10),t++);for(let n=0;n<i&&t<e.length&&e[t].code===72;n++){let n=parseInt(e[t].value,10);switch(t++,n){case 1:{let n={type:`line`,start:{x:0,y:0},end:{x:0,y:0}};t<e.length&&e[t].code===10&&(n.start.x=parseFloat(e[t].value),t++),t<e.length&&e[t].code===20&&(n.start.y=parseFloat(e[t].value),t++),t<e.length&&e[t].code===11&&(n.end.x=parseFloat(e[t].value),t++),t<e.length&&e[t].code===21&&(n.end.y=parseFloat(e[t].value),t++),r.edges.push(n);break}case 2:{let n={type:`arc`,center:{x:0,y:0},radius:0,startAngle:0,endAngle:360,ccw:!0};t<e.length&&e[t].code===10&&(n.center.x=parseFloat(e[t].value),t++),t<e.length&&e[t].code===20&&(n.center.y=parseFloat(e[t].value),t++),t<e.length&&e[t].code===40&&(n.radius=parseFloat(e[t].value),t++),t<e.length&&e[t].code===50&&(n.startAngle=parseFloat(e[t].value),t++),t<e.length&&e[t].code===51&&(n.endAngle=parseFloat(e[t].value),t++),t<e.length&&e[t].code===73&&(n.ccw=e[t].value===`1`,t++),r.edges.push(n);break}case 3:{let n={type:`ellipse`,center:{x:0,y:0},majorAxis:{x:1,y:0},minorRatio:1,startAngle:0,endAngle:Math.PI*2,ccw:!0};t<e.length&&e[t].code===10&&(n.center.x=parseFloat(e[t].value),t++),t<e.length&&e[t].code===20&&(n.center.y=parseFloat(e[t].value),t++),t<e.length&&e[t].code===11&&(n.majorAxis.x=parseFloat(e[t].value),t++),t<e.length&&e[t].code===21&&(n.majorAxis.y=parseFloat(e[t].value),t++),t<e.length&&e[t].code===40&&(n.minorRatio=parseFloat(e[t].value),t++),t<e.length&&e[t].code===50&&(n.startAngle=parseFloat(e[t].value),t++),t<e.length&&e[t].code===51&&(n.endAngle=parseFloat(e[t].value),t++),t<e.length&&e[t].code===73&&(n.ccw=e[t].value===`1`,t++),r.edges.push(n);break}case 4:{let n=3,i=[],a=[];t<e.length&&e[t].code===94&&(n=parseInt(e[t].value,10),t++),t<e.length&&e[t].code===73&&t++,t<e.length&&e[t].code===74&&t++;let o=0;t<e.length&&e[t].code===95&&(o=parseInt(e[t].value,10),t++);let s=0;t<e.length&&e[t].code===96&&(s=parseInt(e[t].value,10),t++);for(let n=0;n<o&&t<e.length&&e[t].code===40;n++)i.push(parseFloat(e[t].value)),t++;for(let n=0;n<s&&t<e.length;n++){let n={x:0,y:0};e[t].code===10&&(n.x=parseFloat(e[t].value),t++),t<e.length&&e[t].code===20&&(n.y=parseFloat(e[t].value),t++),a.push(n)}r.edges.push({type:`spline`,degree:n,knots:i,controlPoints:a});break}}}for(;t<e.length&&(e[t].code===97||e[t].code===330);)if(e[t].code===97){let n=parseInt(e[t].value,10);t++;for(let r=0;r<n&&t<e.length&&e[t].code===330;r++)t++}else t++;return{path:r,nextIndex:t}}function he(e){let t={...C(e),type:`POINT`,position:{x:0,y:0,z:0}};for(let n of e)switch(n.code){case 10:t.position.x=parseFloat(n.value);break;case 20:t.position.y=parseFloat(n.value);break;case 30:t.position.z=parseFloat(n.value);break}return t}function D(e,t,n){for(;t<e.length;){let r=e[t];if(r.code!==0){t++;continue}let i=r.value;if(i===`ENDSEC`||i===`ENDBLK`)return t+1;t++;let a=[];for(;t<e.length&&e[t].code!==0;)a.push(e[t]),t++;switch(i){case`LINE`:n.push(w(a));break;case`CIRCLE`:n.push(T(a));break;case`ARC`:n.push(E(a));break;case`LWPOLYLINE`:n.push(re(a));break;case`ELLIPSE`:n.push(ae(a));break;case`SPLINE`:n.push(oe(a));break;case`TEXT`:n.push(se(a));break;case`MTEXT`:n.push(ce(a));break;case`INSERT`:{let r=le(a);a.some(e=>e.code===66&&e.value===`1`)&&(t=_e(e,t,r.attribs)),n.push(r);break}case`DIMENSION`:n.push(ue(a));break;case`HATCH`:n.push(de(a));break;case`POINT`:n.push(he(a));break;case`POLYLINE`:{let r=ie(a);t=ge(e,t,r.vertices),n.push(r);break}}}return t}function ge(e,t,n){for(;t<e.length;){if(e[t].code!==0){t++;continue}let r=e[t].value;if(r===`SEQEND`)return t+1;if(r===`ENDSEC`||r===`ENDBLK`)return t;if(r===`VERTEX`){t++;let r={x:0,y:0,bulge:0,startWidth:0,endWidth:0};for(;t<e.length&&e[t].code!==0;){let n=e[t];switch(n.code){case 10:r.x=parseFloat(n.value);break;case 20:r.y=parseFloat(n.value);break;case 42:r.bulge=parseFloat(n.value);break;case 40:r.startWidth=parseFloat(n.value);break;case 41:r.endWidth=parseFloat(n.value);break}t++}n.push(r)}else for(t++;t<e.length&&e[t].code!==0;)t++}return t}function _e(e,t,n){for(;t<e.length;){if(e[t].code!==0){t++;continue}let r=e[t].value;if(r===`SEQEND`)return t+1;if(r===`ENDSEC`||r===`ENDBLK`)return t;if(r===`ATTRIB`){t++;let r={tag:``,text:``,insertionPoint:{x:0,y:0,z:0},height:1,rotation:0,style:`STANDARD`,layer:`0`,color:256};for(;t<e.length&&e[t].code!==0;){let n=e[t];switch(n.code){case 1:r.text=n.value;break;case 2:r.tag=n.value;break;case 7:r.style=n.value;break;case 8:r.layer=n.value;break;case 10:r.insertionPoint.x=parseFloat(n.value);break;case 20:r.insertionPoint.y=parseFloat(n.value);break;case 30:r.insertionPoint.z=parseFloat(n.value);break;case 40:r.height=parseFloat(n.value);break;case 50:r.rotation=parseFloat(n.value);break;case 62:r.color=parseInt(n.value,10);break}t++}n.push(r)}else for(t++;t<e.length&&e[t].code!==0;)t++}return t}function ve(e,t,n){for(;t<e.length;){let r=e[t];if(r.code===0&&r.value===`ENDSEC`)return t+1;if(r.code===0&&r.value===`BLOCK`){t++;let r={name:``,basePoint:{x:0,y:0,z:0},entities:[],flags:0};for(;t<e.length&&e[t].code!==0;){let n=e[t];switch(n.code){case 2:r.name=n.value;break;case 8:break;case 10:r.basePoint.x=parseFloat(n.value);break;case 20:r.basePoint.y=parseFloat(n.value);break;case 30:r.basePoint.z=parseFloat(n.value);break;case 70:r.flags=parseInt(n.value,10);break}t++}t=D(e,t,r.entities),r.name&&!r.name.startsWith(`*Model_Space`)&&!r.name.startsWith(`*Paper_Space`)&&n.set(r.name,r)}else t++}return t}var O=`AutoCAD Binary DXF`,ye={ANSI_874:`windows-874`,ANSI_932:`shift_jis`,ANSI_936:`gbk`,ANSI_949:`euc-kr`,ANSI_950:`big5`,ANSI_1250:`windows-1250`,ANSI_1251:`windows-1251`,ANSI_1252:`windows-1252`,ANSI_1253:`windows-1253`,ANSI_1254:`windows-1254`,ANSI_1255:`windows-1255`,ANSI_1256:`windows-1256`,ANSI_1257:`windows-1257`,ANSI_1258:`windows-1258`},be=`AC1021`;function xe(){return{acadVersion:``,insUnits:0,measurement:0,ltScale:1}}function k(e){return e.replace(/\\U\+([0-9A-Fa-f]{4})/g,(e,t)=>String.fromCodePoint(parseInt(t,16)))}function Se(e){if(typeof e==`string`)return k(e);let t=new Uint8Array(e);if(new TextDecoder(`ascii`).decode(t.slice(0,O.length))===O)throw new A(`Binary DXF format is not supported. Please export as ASCII DXF.`);let n=new TextDecoder(`utf-8`).decode(e),r=n.match(/\$ACADVER[\s\S]*?\n\s*1\s*\n\s*(\S+)/)?.[1]??``;if(r&&r<be){let t=ye[n.match(/\$DWGCODEPAGE[\s\S]*?\n\s*3\s*\n\s*(\S+)/)?.[1]??``]??`windows-1252`;t!==`utf-8`&&(n=new TextDecoder(t).decode(e))}return k(n)}function Ce(e,t){for(;t<e.length;){if(e[t].code===0&&e[t].value===`ENDSEC`)return t+1;t++}return t}function we(e){e.layers.has(`0`)||e.layers.set(`0`,{name:`0`,color:7,lineType:`Continuous`,flags:0,lineWeight:-3,isOff:!1,isFrozen:!1,isLocked:!1})}function Te(e){for(let[,t]of e.layers)t.isOff=t.color<0,t.isOff&&(t.color=Math.abs(t.color)),t.isFrozen=(t.flags&1)!=0,t.isLocked=(t.flags&4)!=0}var A=class extends Error{constructor(e,t){super(e),this.cause=t,this.name=`DxfParseError`}};function j(e){if(typeof e==`string`){if(e.length===0)throw new A(`Input is empty. Expected a DXF string or ArrayBuffer.`)}else if(e instanceof ArrayBuffer){if(e.byteLength===0)throw new A(`Input ArrayBuffer is empty.`)}else throw new A(`Invalid input type. Expected a string or ArrayBuffer.`);let t;try{t=Se(e)}catch(e){throw e instanceof A?e:new A(`Failed to decode DXF input.`,e)}let n;try{n=v(t)}catch(e){throw new A(`Failed to tokenize DXF content.`,e)}if(n.length===0)throw new A(`DXF content produced no tokens. The input may not be a valid DXF file.`);let r={header:xe(),layers:new Map,lineTypes:new Map,styles:new Map,blocks:new Map,entities:[]};try{let e=0;for(;e<n.length;){let t=n[e];if(t.code===0&&t.value===`SECTION`){if(e++,e>=n.length)break;let t=n[e].value;switch(e++,t){case`HEADER`:e=y(n,e,r.header);break;case`TABLES`:e=ee(n,e,r);break;case`BLOCKS`:e=ve(n,e,r.blocks);break;case`ENTITIES`:e=D(n,e,r.entities);break;default:e=Ce(n,e);break}}else if(t.code===0&&t.value===`EOF`)break;else e++}}catch(e){throw new A(`Failed to parse DXF sections.`,e)}return we(r),Te(r),r}var Ee=`#000000.#FF0000.#FFFF00.#00FF00.#00FFFF.#0000FF.#FF00FF.#FFFFFF.#808080.#C0C0C0.#FF0000.#FF7F7F.#A50000.#A55252.#7F0000.#7F3F3F.#4C0000.#4C2626.#260000.#261313.#FF3F00.#FF9F7F.#A52900.#A56752.#7F1F00.#7F4F3F.#4C1300.#4C2F26.#260900.#261713.#FF7F00.#FFBF7F.#A55200.#A57C52.#7F3F00.#7F5F3F.#4C2600.#4C3926.#261300.#261C13.#FFBF00.#FFDF7F.#A57C00.#A59152.#7F5F00.#7F6F3F.#4C3900.#4C4226.#261C00.#262113.#FFFF00.#FFFF7F.#A5A500.#A5A552.#7F7F00.#7F7F3F.#4C4C00.#4C4C26.#262600.#262613.#BFFF00.#DFFF7F.#7CA500.#91A552.#5F7F00.#6F7F3F.#394C00.#424C26.#1C2600.#212613.#7FFF00.#BFFF7F.#52A500.#7CA552.#3F7F00.#5F7F3F.#264C00.#394C26.#132600.#1C2613.#3FFF00.#9FFF7F.#29A500.#67A552.#1F7F00.#4F7F3F.#134C00.#2F4C26.#092600.#172613.#00FF00.#7FFF7F.#00A500.#52A552.#007F00.#3F7F3F.#004C00.#264C26.#002600.#132613.#00FF3F.#7FFF9F.#00A529.#52A567.#007F1F.#3F7F4F.#004C13.#264C2F.#002609.#132617.#00FF7F.#7FFFBF.#00A552.#52A57C.#007F3F.#3F7F5F.#004C26.#264C39.#002613.#13261C.#00FFBF.#7FFFDF.#00A57C.#52A591.#007F5F.#3F7F6F.#004C39.#264C42.#00261C.#132621.#00FFFF.#7FFFFF.#00A5A5.#52A5A5.#007F7F.#3F7F7F.#004C4C.#264C4C.#002626.#132626.#00BFFF.#7FDFFF.#007CA5.#5291A5.#005F7F.#3F6F7F.#00394C.#26424C.#001C26.#132126.#007FFF.#7FBFFF.#0052A5.#527CA5.#003F7F.#3F5F7F.#00264C.#26394C.#001326.#131C26.#003FFF.#7F9FFF.#0029A5.#5267A5.#001F7F.#3F4F7F.#00134C.#262F4C.#000926.#131726.#0000FF.#7F7FFF.#0000A5.#5252A5.#00007F.#3F3F7F.#00004C.#26264C.#000026.#131326.#3F00FF.#9F7FFF.#2900A5.#6752A5.#1F007F.#4F3F7F.#13004C.#2F264C.#090026.#171326.#7F00FF.#BF7FFF.#5200A5.#7C52A5.#3F007F.#5F3F7F.#26004C.#39264C.#130026.#1C1326.#BF00FF.#DF7FFF.#7C00A5.#9152A5.#5F007F.#6F3F7F.#39004C.#42264C.#1C0026.#211326.#FF00FF.#FF7FFF.#A500A5.#A552A5.#7F007F.#7F3F7F.#4C004C.#4C264C.#260026.#261326.#FF00BF.#FF7FDF.#A5007C.#A55291.#7F005F.#7F3F6F.#4C0039.#4C2642.#26001C.#261321.#FF007F.#FF7FBF.#A50052.#A5527C.#7F003F.#7F3F5F.#4C0026.#4C2639.#260013.#26131C.#FF003F.#FF7F9F.#A50029.#A55267.#7F001F.#7F3F4F.#4C0013.#4C262F.#260009.#261317.#333333.#505050.#696969.#828282.#BEBEBE.#FFFFFF`.split(`.`);function De(e){if(!(e===0||e===256)&&!(e<0||e>255))return Ee[e]}var M={dark:{backgroundColor:`#1a1a2e`,defaultEntityColor:`#ffffff`,selectionColor:`#00ff88`,measureColor:`#ffaa00`,gridColor:`#333333`,crosshairColor:`#555555`},light:{backgroundColor:`#ffffff`,defaultEntityColor:`#000000`,selectionColor:`#0066ff`,measureColor:`#ff6600`,gridColor:`#dddddd`,crosshairColor:`#cccccc`}};function N(e,t,n){return[t*e.scale+e.offsetX,-n*e.scale+e.offsetY]}function P(e,t,n){return[(t-e.offsetX)/e.scale,-(n-e.offsetY)/e.scale]}function Oe(e,t){let n=window.devicePixelRatio||1;e.setTransform(t.scale*n,0,0,-t.scale*n,t.offsetX*n,t.offsetY*n)}function ke(e,t,n,r,i,a,o=.05){let s=i-n,c=a-r;if(s<=0||c<=0)return{scale:1,offsetX:e/2,offsetY:t/2};let l=e/s,u=t/c,d=Math.min(l,u)*(1-o*2),f=(n+i)/2,p=(r+a)/2;return{scale:d,offsetX:e/2-f*d,offsetY:t/2+p*d}}function Ae(e,t,n,r,i=1e-4,a=1e5){let o=Math.max(i,Math.min(a,e.scale*r)),s=o/e.scale;return{scale:o,offsetX:t-(t-e.offsetX)*s,offsetY:n-(n-e.offsetY)*s}}var je=class{transform={scale:1,offsetX:0,offsetY:0};minScale;maxScale;constructor(e){this.minScale=e.minZoom,this.maxScale=e.maxZoom}getTransform(){return this.transform}setTransform(e){this.transform=e}pan(e,t){this.transform={...this.transform,offsetX:this.transform.offsetX+e,offsetY:this.transform.offsetY+t}}zoom(e,t,n){this.transform=Ae(this.transform,e,t,n,this.minScale,this.maxScale)}};function F(e,t){return e===7?t===`dark`?`#ffffff`:`#000000`:De(e)??`#ffffff`}function I(e,t,n,r){if(e.trueColor!==void 0)return`rgb(${e.trueColor>>16&255},${e.trueColor>>8&255},${e.trueColor&255})`;if(e.color===0)return r??M[n].defaultEntityColor;if(e.color!==256)return F(e.color,n);let i=t.get(e.layer);return i?i.trueColor===void 0?F(Math.abs(i.color),n):`rgb(${i.trueColor>>16&255},${i.trueColor>>8&255},${i.trueColor&255})`:M[n].defaultEntityColor}function Me(e,t){e.beginPath(),e.moveTo(t.start.x,t.start.y),e.lineTo(t.end.x,t.end.y),e.stroke()}function Ne(e,t){t.radius<=0||(e.beginPath(),e.arc(t.center.x,t.center.y,t.radius,0,Math.PI*2),e.stroke())}function Pe(e,t){if(t.radius<=0)return;let n=t.startAngle*Math.PI/180,r=t.endAngle*Math.PI/180;e.beginPath(),e.arc(t.center.x,t.center.y,t.radius,n,r,!1),e.stroke()}function Fe(e,t,n,r,i){let a=n-e,o=r-t,s=Math.sqrt(a*a+o*o);if(s<1e-10)return{cx:e,cy:t,radius:0,startAngle:0,endAngle:0,anticlockwise:!1};let c=Math.abs(i)*s/2,l=((s/2)**2+c**2)/(2*c),u=(e+n)/2,d=(t+r)/2,f=-o/s,p=a/s,m=l-c,h=i>0?1:-1,g=u+h*m*f,_=d+h*m*p;return{cx:g,cy:_,radius:l,startAngle:Math.atan2(t-_,e-g),endAngle:Math.atan2(r-_,n-g),anticlockwise:i<0}}function L(e,t,n,r,i,a){let o=Fe(t,n,r,i,a);if(o.radius<1e-10){e.lineTo(r,i);return}e.arc(o.cx,o.cy,o.radius,o.startAngle,o.endAngle,o.anticlockwise)}function Ie(e,t){let n=t.vertices;if(n.length<2)return;e.beginPath(),e.moveTo(n[0].x,n[0].y);let r=t.closed?n.length:n.length-1;for(let t=0;t<r;t++){let r=n[t],i=n[(t+1)%n.length];Math.abs(r.bulge)<1e-10?e.lineTo(i.x,i.y):L(e,r.x,r.y,i.x,i.y,r.bulge)}e.stroke()}function Le(e,t){let n=t.vertices;if(n.length<2)return;e.beginPath(),e.moveTo(n[0].x,n[0].y);let r=t.closed?n.length:n.length-1;for(let t=0;t<r;t++){let r=n[t],i=n[(t+1)%n.length],a=r.bulge??0;Math.abs(a)<1e-10?e.lineTo(i.x,i.y):L(e,r.x,r.y,i.x,i.y,a)}e.stroke()}function Re(e,t){let n=Math.sqrt(t.majorAxis.x**2+t.majorAxis.y**2+t.majorAxis.z**2);if(n<1e-10||t.minorRatio<=0)return;let r=n*t.minorRatio,i=Math.atan2(t.majorAxis.y,t.majorAxis.x);e.beginPath(),e.ellipse(t.center.x,t.center.y,n,r,i,t.startParam,t.endParam,!1),e.stroke()}function ze(e,t,n,r,i){let a=t.length-1,o=e;for(;o<a&&n[o+1]<=r;)o++;let s=[],c=[];for(let n=0;n<=e;n++){let r=o-e+n;s.push({...t[r]}),c.push(i?i[r]:1)}for(let t=1;t<=e;t++)for(let a=e;a>=t;a--){let l=o-e+a,u=n[l+e-t+1]-n[l];if(Math.abs(u)<1e-10)continue;let d=(r-n[l])/u,f=s[a],p=s[a-1];if(i){let e=c[a-1]*(1-d),t=c[a]*d,n=e+t;if(Math.abs(n)<1e-10)continue;f.x=(p.x*e+f.x*t)/n,f.y=(p.y*e+f.y*t)/n,f.z=(p.z*e+f.z*t)/n,c[a]=n}else f.x=(1-d)*p.x+d*f.x,f.y=(1-d)*p.y+d*f.y,f.z=(1-d)*p.z+d*f.z}return s[e]??{x:0,y:0,z:0}}function Be(e){if(e.length<2)return e.map(e=>({x:e.x,y:e.y}));let t=[],n=e.length;for(let r=0;r<n-1;r++){let i=e[Math.max(0,r-1)],a=e[r],o=e[Math.min(n-1,r+1)],s=e[Math.min(n-1,r+2)];for(let e=0;e<=(r===n-2?10:9);e++){let n=e/10,r=n*n,c=r*n,l=.5*(2*a.x+(-i.x+o.x)*n+(2*i.x-5*a.x+4*o.x-s.x)*r+(-i.x+3*a.x-3*o.x+s.x)*c),u=.5*(2*a.y+(-i.y+o.y)*n+(2*i.y-5*a.y+4*o.y-s.y)*r+(-i.y+3*a.y-3*o.y+s.y)*c);t.push({x:l,y:u})}}return t}function R(e,t){if(e.degree===1)return e.controlPoints.map(e=>({x:e.x,y:e.y}));if(e.controlPoints.length===0&&e.fitPoints.length>=2)return Be(e.fitPoints);if(e.controlPoints.length<e.degree+1||e.knots.length<e.controlPoints.length+e.degree+1)return[];let n=[],r=e.knots[e.degree],i=e.knots[e.knots.length-e.degree-1];if(i<=r)return[];let a=Math.max(e.controlPoints.length*10,Math.ceil((i-r)/t)),o=Math.min(a,5e3),s=e.weights.length>0?e.weights:void 0;for(let t=0;t<=o;t++){let a=r+(i-r)*(t/o),c=ze(e.degree,e.controlPoints,e.knots,a,s);n.push({x:c.x,y:c.y})}return n}function Ve(e,t,n){let r=R(t,n);if(!(r.length<2)){e.beginPath(),e.moveTo(r[0].x,r[0].y);for(let t=1;t<r.length;t++)e.lineTo(r[t].x,r[t].y);t.flags&1&&e.closePath(),e.stroke()}}var He={standard:`Arial, sans-serif`,arial:`Arial, sans-serif`,"arial.ttf":`Arial, sans-serif`,"romans.shx":`"Courier New", monospace`,"simplex.shx":`"Courier New", monospace`,"txt.shx":`monospace`,"monotxt.shx":`monospace`,"isocp.shx":`"Courier New", monospace`,"isocpeur.shx":`"Courier New", monospace`,"times.ttf":`"Times New Roman", serif`,"timesnr.ttf":`"Times New Roman", serif`,"gothic.ttf":`"Century Gothic", sans-serif`};function z(e){return He[e.toLowerCase().trim()]||`sans-serif`}function Ue(e,t,n){if(!t.text||t.height<n*4)return;let r=t.hAlign!==0||t.vAlign!==0,i=r&&t.alignmentPoint?t.alignmentPoint.x:t.insertionPoint.x,a=r&&t.alignmentPoint?t.alignmentPoint.y:t.insertionPoint.y;if(e.save(),e.translate(i,a),e.scale(1,-1),t.rotation&&e.rotate(-t.rotation*Math.PI/180),t.widthFactor!==1&&e.scale(t.widthFactor,1),t.obliqueAngle){let n=Math.tan(t.obliqueAngle*Math.PI/180);e.transform(1,0,n,1,0,0)}let o=(t.generationFlags&2)!=0,s=(t.generationFlags&4)!=0;o&&e.scale(-1,1),s&&e.scale(1,-1);let c=z(t.style||`Standard`);switch(e.font=`${t.height}px ${c}`,t.hAlign){case 0:e.textAlign=`left`;break;case 1:e.textAlign=`center`;break;case 2:e.textAlign=`right`;break;case 3:e.textAlign=`left`;break;case 4:e.textAlign=`center`;break;case 5:e.textAlign=`left`;break;default:e.textAlign=`left`}switch(t.vAlign){case 0:e.textBaseline=`alphabetic`;break;case 1:e.textBaseline=`bottom`;break;case 2:e.textBaseline=`middle`;break;case 3:e.textBaseline=`top`;break;default:e.textBaseline=`alphabetic`}e.fillText(t.text,0,0),e.restore()}function We(e){return e.replace(/\\P/g,`
6
+ `).replace(/\\[fFHWQTCAaLlOoKk][^;]*;/g,``).replace(/\\\\/g,`\\`).replace(/\\~/g,`\xA0`).replace(/\{/g,``).replace(/\}/g,``).replace(/\\S[^;]*;/g,``).trim()}function Ge(e,t,n){if(!t.text||t.height<n*4)return;e.save(),e.translate(t.insertionPoint.x,t.insertionPoint.y),e.scale(1,-1);let r=t.textDirection?Math.atan2(t.textDirection.y,t.textDirection.x):(t.rotation||0)*Math.PI/180;r&&e.rotate(-r);let i=We(t.text).split(`
7
+ `),a=t.height*(t.lineSpacingFactor||1.4),o=z(t.style||`Standard`);e.font=`${t.height}px ${o}`;let s=(t.attachmentPoint-1)%3,c=Math.floor((t.attachmentPoint-1)/3);e.textAlign=[`left`,`center`,`right`][s]??`left`;let l=0,u=i.length*a;switch(c){case 0:l=t.height;break;case 1:l=t.height-u/2;break;case 2:l=t.height-u;break}for(let t=0;t<i.length;t++)e.fillText(i[t],0,l+t*a);e.restore()}var Ke=100;function qe(e,t,n,r=0){if(r>Ke)return null;if(n.has(e))return n.get(e);let i=t.blocks.get(e);if(!i)return n.set(e,null),null;n.set(e,null);let a=1/0,o=1/0,s=-1/0,c=-1/0,l=!1;for(let e of i.entities){let i;i=e.type===`INSERT`?B(e,t,n,r+1):W(e),i&&(l=!0,a=Math.min(a,i.minX),o=Math.min(o,i.minY),s=Math.max(s,i.maxX),c=Math.max(c,i.maxY))}let u=l?{minX:a,minY:o,maxX:s,maxY:c}:null;return n.set(e,u),u}function B(e,t,n,r=0){let i=qe(e.blockName,t,n,r);if(!i)return null;let a=t.blocks.get(e.blockName);if(!a)return null;let o=a.basePoint.x,s=a.basePoint.y,c=i.minX-o,l=i.minY-s,u=i.maxX-o,d=i.maxY-s,f=e.scaleX,p=e.scaleY,m=c*f,h=u*f,g=l*p,_=d*p;if(m>h){let e=m;m=h,h=e}if(g>_){let e=g;g=_,_=e}let v=(e.rotation||0)*Math.PI/180;if(Math.abs(v)<1e-10){let t=e.insertionPoint.x,n=e.insertionPoint.y,r=m+t,i=g+n,a=h+t,o=_+n,s=Math.max(1,e.columnCount),c=Math.max(1,e.rowCount);if(s>1||c>1){let t=(s-1)*e.columnSpacing,n=(c-1)*e.rowSpacing;r=Math.min(r,r+t),a=Math.max(a,a+t),i=Math.min(i,i+n),o=Math.max(o,o+n)}return{minX:r,minY:i,maxX:a,maxY:o}}let y=Math.cos(v),b=Math.sin(v),ee=[{x:m,y:g},{x:h,y:g},{x:h,y:_},{x:m,y:_}],te=e.insertionPoint.x,ne=e.insertionPoint.y,x=1/0,S=1/0,C=-1/0,w=-1/0;for(let e of ee){let t=e.x*y-e.y*b+te,n=e.x*b+e.y*y+ne;x=Math.min(x,t),S=Math.min(S,n),C=Math.max(C,t),w=Math.max(w,n)}let T=Math.max(1,e.columnCount),E=Math.max(1,e.rowCount);if(T>1||E>1){let t=(T-1)*e.columnSpacing,n=(E-1)*e.rowSpacing,r=[{x:0,y:0},{x:t,y:0},{x:t,y:n},{x:0,y:n}];for(let e of r){let t=e.x*y-e.y*b,n=e.x*b+e.y*y;x=Math.min(x,x+t),S=Math.min(S,S+n),C=Math.max(C,C+t),w=Math.max(w,w+n)}}return{minX:x,minY:S,maxX:C,maxY:w}}function Je(e,t){let n=1/0,r=1/0,i=-1/0,a=-1/0,o=!1,s=t?new Map:void 0;for(let c of e){let e=t&&s?V(c,t,s):W(c);e&&(o=!0,n=Math.min(n,e.minX),r=Math.min(r,e.minY),i=Math.max(i,e.maxX),a=Math.max(a,e.maxY))}return o?{minX:n,minY:r,maxX:i,maxY:a}:null}function V(e,t,n){return e.type===`INSERT`?B(e,t,n):W(e)}var H=null;function Ye(e){let t=new Map;for(let[n,r]of e.blocks){let e=Array(r.entities.length);for(let t=0;t<r.entities.length;t++)e[t]=W(r.entities[t]);t.set(n,e)}return t}function Xe(e){H=e}function U(){H=null}function Ze(e,t){if(!H)return;let n=H.get(e);if(!(!n||t>=n.length))return n[t]}function W(e){switch(e.type){case`LINE`:return{minX:Math.min(e.start.x,e.end.x),minY:Math.min(e.start.y,e.end.y),maxX:Math.max(e.start.x,e.end.x),maxY:Math.max(e.start.y,e.end.y)};case`CIRCLE`:return{minX:e.center.x-e.radius,minY:e.center.y-e.radius,maxX:e.center.x+e.radius,maxY:e.center.y+e.radius};case`ARC`:return{minX:e.center.x-e.radius,minY:e.center.y-e.radius,maxX:e.center.x+e.radius,maxY:e.center.y+e.radius};case`LWPOLYLINE`:case`POLYLINE`:{if(e.vertices.length===0)return null;let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e.vertices)t=Math.min(t,a.x),n=Math.min(n,a.y),r=Math.max(r,a.x),i=Math.max(i,a.y);return{minX:t,minY:n,maxX:r,maxY:i}}case`ELLIPSE`:{let t=Math.sqrt(e.majorAxis.x**2+e.majorAxis.y**2);return{minX:e.center.x-t,minY:e.center.y-t,maxX:e.center.x+t,maxY:e.center.y+t}}case`TEXT`:return{minX:e.insertionPoint.x,minY:e.insertionPoint.y,maxX:e.insertionPoint.x+e.height*e.text.length*.6,maxY:e.insertionPoint.y+e.height};case`MTEXT`:return{minX:e.insertionPoint.x,minY:e.insertionPoint.y-e.height,maxX:e.insertionPoint.x+(e.width||e.height*10),maxY:e.insertionPoint.y+e.height};case`SPLINE`:{if(e.controlPoints.length===0)return null;let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e.controlPoints)t=Math.min(t,a.x),n=Math.min(n,a.y),r=Math.max(r,a.x),i=Math.max(i,a.y);return{minX:t,minY:n,maxX:r,maxY:i}}case`POINT`:return{minX:e.position.x,minY:e.position.y,maxX:e.position.x,maxY:e.position.y};case`INSERT`:return{minX:e.insertionPoint.x,minY:e.insertionPoint.y,maxX:e.insertionPoint.x,maxY:e.insertionPoint.y};case`DIMENSION`:return e.defPoint?{minX:Math.min(e.defPoint.x,e.defPoint2?.x??e.defPoint.x,e.defPoint3?.x??e.defPoint.x),minY:Math.min(e.defPoint.y,e.defPoint2?.y??e.defPoint.y,e.defPoint3?.y??e.defPoint.y),maxX:Math.max(e.defPoint.x,e.defPoint2?.x??e.defPoint.x,e.defPoint3?.x??e.defPoint.x),maxY:Math.max(e.defPoint.y,e.defPoint2?.y??e.defPoint.y,e.defPoint3?.y??e.defPoint.y)}:null;case`HATCH`:{let t=1/0,n=1/0,r=-1/0,i=-1/0,a=!1;for(let o of e.boundaryPaths)if(o.vertices)for(let e of o.vertices)a=!0,t=Math.min(t,e.x),n=Math.min(n,e.y),r=Math.max(r,e.x),i=Math.max(i,e.y);return a?{minX:t,minY:n,maxX:r,maxY:i}:null}default:return null}}var Qe=new Set([`LINE`,`ARC`,`CIRCLE`,`LWPOLYLINE`,`POLYLINE`,`ELLIPSE`,`SPLINE`]);function G(e){return Qe.has(e)}function $e(e,t){e.moveTo(t.start.x,t.start.y),e.lineTo(t.end.x,t.end.y)}function et(e,t){if(t.radius<=0)return;let n=t.startAngle*Math.PI/180,r=t.endAngle*Math.PI/180;e.moveTo(t.center.x+t.radius*Math.cos(n),t.center.y+t.radius*Math.sin(n)),e.arc(t.center.x,t.center.y,t.radius,n,r,!1)}function tt(e,t){t.radius<=0||(e.moveTo(t.center.x+t.radius,t.center.y),e.arc(t.center.x,t.center.y,t.radius,0,Math.PI*2))}function nt(e,t){let n=t.vertices;if(n.length<2)return;e.moveTo(n[0].x,n[0].y);let r=t.closed?n.length:n.length-1;for(let t=0;t<r;t++){let r=n[t],i=n[(t+1)%n.length];Math.abs(r.bulge)<1e-10?e.lineTo(i.x,i.y):L(e,r.x,r.y,i.x,i.y,r.bulge)}}function rt(e,t){let n=t.vertices;if(n.length<2)return;e.moveTo(n[0].x,n[0].y);let r=t.closed?n.length:n.length-1;for(let t=0;t<r;t++){let r=n[t],i=n[(t+1)%n.length],a=r.bulge??0;Math.abs(a)<1e-10?e.lineTo(i.x,i.y):L(e,r.x,r.y,i.x,i.y,a)}}function it(e,t){let n=Math.sqrt(t.majorAxis.x**2+t.majorAxis.y**2+t.majorAxis.z**2);if(n<1e-10||t.minorRatio<=0)return;let r=n*t.minorRatio,i=Math.atan2(t.majorAxis.y,t.majorAxis.x),a=Math.cos(i),o=Math.sin(i),s=Math.cos(t.startParam),c=Math.sin(t.startParam);e.moveTo(t.center.x+n*a*s-r*o*c,t.center.y+n*o*s+r*a*c),e.ellipse(t.center.x,t.center.y,n,r,i,t.startParam,t.endParam,!1)}function at(e,t,n){let r=R(t,n);if(!(r.length<2)){e.moveTo(r[0].x,r[0].y);for(let t=1;t<r.length;t++)e.lineTo(r[t].x,r[t].y);t.flags&1&&e.closePath()}}function K(e,t,n){switch(t.type){case`LINE`:$e(e,t);break;case`ARC`:et(e,t);break;case`CIRCLE`:tt(e,t);break;case`LWPOLYLINE`:nt(e,t);break;case`POLYLINE`:rt(e,t);break;case`ELLIPSE`:it(e,t);break;case`SPLINE`:at(e,t,n);break}}var ot=100,st=.5;function ct(e,t,n,r,i,a,o=0,s){if(o>ot)return;let c=n.blocks.get(t.blockName);if(!c)return;let l=Math.max(1,t.columnCount),u=Math.max(1,t.rowCount);for(let d=0;d<u;d++)for(let u=0;u<l;u++){e.save();let l=t.insertionPoint.x+u*t.columnSpacing,f=t.insertionPoint.y+d*t.rowSpacing;e.translate(l,f),t.rotation&&e.rotate(t.rotation*Math.PI/180),e.scale(t.scaleX,t.scaleY),e.translate(-c.basePoint.x,-c.basePoint.y);let p=a/(Math.max(Math.abs(t.scaleX),Math.abs(t.scaleY))||1),m=null,h=c.entities;for(let a=0;a<h.length;a++){let c=h[a];if(c.type!==`INSERT`){let e=Ze(t.blockName,a),n=e===void 0?W(c):e;if(n){let e=Math.max(n.maxX-n.minX,n.maxY-n.minY);if(e>0&&e/p<st)continue}}let l=I(c,n.layers,i);c.type!==`INSERT`&&G(c.type)?(l!==m&&(m!==null&&(e.stroke(),s&&s.drawCalls++),m=l,e.beginPath(),e.strokeStyle=l,e.lineWidth=p),K(e,c,p),s&&(s.byType[c.type]=(s.byType[c.type]??0)+1)):(m!==null&&(e.stroke(),s&&s.drawCalls++,m=null),e.strokeStyle=l,e.fillStyle=l,e.lineWidth=p,c.type===`INSERT`?ct(e,c,n,r,i,p,o+1,s):q(e,c,n,r,i,p,s))}m!==null&&(e.stroke(),s&&s.drawCalls++),e.restore()}}function lt(e,t,n,r,i,a,o){if(t.blockName){let s=n.blocks.get(t.blockName);if(s){for(let t of s.entities){let s=I(t,n.layers,i);e.strokeStyle=s,e.fillStyle=s,e.lineWidth=a,q(e,t,n,r,i,a,o)}return}}t.defPoint2&&t.defPoint3&&(e.beginPath(),e.moveTo(t.defPoint2.x,t.defPoint2.y),e.lineTo(t.defPoint.x,t.defPoint.y),e.stroke(),e.beginPath(),e.moveTo(t.defPoint3.x,t.defPoint3.y),e.lineTo(t.defPoint.x,t.defPoint.y),e.stroke())}function ut(e,t){if(t.boundaryPaths.length!==0){e.beginPath();for(let n of t.boundaryPaths)if(n.type===`polyline`&&n.vertices&&n.vertices.length>0){let t=n.vertices[0];e.moveTo(t.x,t.y);for(let t=1;t<n.vertices.length;t++){let r=n.vertices[t-1],i=n.vertices[t],a=n.bulges?.[t-1]??0;Math.abs(a)<1e-10?e.lineTo(i.x,i.y):L(e,r.x,r.y,i.x,i.y,a)}n.isClosed&&e.closePath()}else if(n.type===`edges`&&n.edges)for(let t=0;t<n.edges.length;t++){let r=n.edges[t];if(r.type===`line`)t===0&&e.moveTo(r.start.x,r.start.y),e.lineTo(r.end.x,r.end.y);else if(r.type===`arc`){if(t===0){let t=r.center.x+r.radius*Math.cos(r.startAngle*Math.PI/180),n=r.center.y+r.radius*Math.sin(r.startAngle*Math.PI/180);e.moveTo(t,n)}e.arc(r.center.x,r.center.y,r.radius,r.startAngle*Math.PI/180,r.endAngle*Math.PI/180,!r.ccw)}}t.solidFill&&(e.globalAlpha=.3,e.fill(`evenodd`),e.globalAlpha=1),e.stroke()}}function dt(e,t,n){let r=n*3;e.beginPath(),e.arc(t.position.x,t.position.y,r,0,Math.PI*2),e.fill()}function q(e,t,n,r,i,a,o){switch(o&&(o.drawCalls++,o.byType[t.type]=(o.byType[t.type]??0)+1),t.type){case`LINE`:Me(e,t);break;case`CIRCLE`:Ne(e,t);break;case`ARC`:Pe(e,t);break;case`LWPOLYLINE`:Ie(e,t);break;case`POLYLINE`:Le(e,t);break;case`ELLIPSE`:Re(e,t);break;case`SPLINE`:Ve(e,t,a);break;case`TEXT`:Ue(e,t,a);break;case`MTEXT`:Ge(e,t,a);break;case`INSERT`:ct(e,t,n,r,i,a,0,o);break;case`DIMENSION`:lt(e,t,n,r,i,a,o);break;case`HATCH`:ut(e,t);break;case`POINT`:dt(e,t,a);break}}var ft=.5,pt=class{constructor(e){this.canvas=e;let t=e.getContext(`2d`,{alpha:!1});if(!t)throw Error(`Failed to get 2D rendering context. The canvas may already have a different context type, or canvas rendering is not available in this environment.`);this.ctx=t,this.updateSize()}ctx;width=0;height=0;getContext(){return this.ctx}getWidth(){return this.width}getHeight(){return this.height}updateSize(){let e=window.devicePixelRatio||1,t=this.canvas.getBoundingClientRect();this.width=t.width,this.height=t.height,this.canvas.width=t.width*e,this.canvas.height=t.height*e}render(e,t,n,r,i,a,o){let s=this.ctx,c=window.devicePixelRatio||1,l={entitiesDrawn:0,entitiesSkipped:0,drawCalls:0,byType:{}};s.setTransform(c,0,0,c,0,0),s.fillStyle=M[n].backgroundColor,s.fillRect(0,0,this.width,this.height),Oe(s,t);let u=1/t.scale;s.lineCap=`round`,s.lineJoin=`round`;let d=null;for(let i=0;i<e.entities.length;i++){let c=e.entities[i];if(!c.visible){l.entitiesSkipped++;continue}if(!r.has(c.layer)){l.entitiesSkipped++;continue}if(a&&!a.has(i)){l.entitiesSkipped++;continue}if(o){let e=o[i];if(e){let n=(e.maxX-e.minX)*t.scale,r=(e.maxY-e.minY)*t.scale;if(Math.max(n,r)<ft){l.entitiesSkipped++;continue}}}let f=I(c,e.layers,n);G(c.type)?(f!==d&&(d!==null&&(s.stroke(),l.drawCalls++),d=f,s.beginPath(),s.strokeStyle=f,s.lineWidth=u),K(s,c,u),l.entitiesDrawn++,l.byType[c.type]=(l.byType[c.type]??0)+1):(d!==null&&(s.stroke(),l.drawCalls++,d=null),s.strokeStyle=f,s.fillStyle=f,s.lineWidth=u,l.entitiesDrawn++,q(s,c,e,t,n,u,l))}if(d!==null&&(s.stroke(),l.drawCalls++),i>=0&&i<e.entities.length){let r=e.entities[i];Oe(s,t),s.strokeStyle=M[n].selectionColor,s.fillStyle=M[n].selectionColor,s.lineWidth=u*3,q(s,r,e,t,n,u)}return l}renderEmpty(e){let t=this.ctx,n=window.devicePixelRatio||1;t.setTransform(n,0,0,n,0,0),t.fillStyle=M[e].backgroundColor,t.fillRect(0,0,this.width,this.height)}destroy(){}},mt={showFps:!0,showRenderStats:!0,showDocumentInfo:!0,showTimings:!0,showCamera:!0,position:`top-left`};function J(e){return{...mt,...e}}function ht(e){return e===0?`0 B`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function gt(e){return e>=1?`${e.toFixed(2)}x`:`1:${(1/e).toFixed(1)}`}var _t=`11px monospace`,vt=15,yt=8,Y=8,X=10;function bt(e,t,n,r,i,a){e.setTransform(1,0,0,1,0,0);let o=[];if(r.showFps&&o.push([`FPS: ${t.fps} Frame: ${t.frameTime.toFixed(1)}ms`]),r.showRenderStats){let e=t.renderStats.entitiesDrawn+t.renderStats.entitiesSkipped,n=[`Drawn: ${t.renderStats.entitiesDrawn} / ${e} Calls: ${t.renderStats.drawCalls}`],r=Object.entries(t.renderStats.byType).sort(([,e],[,t])=>t-e).slice(0,6).map(([e,t])=>`${e}: ${t}`).join(` `);r&&n.push(r),o.push(n)}if(r.showDocumentInfo){let e=[`Layers: ${t.visibleLayerCount} / ${t.layerCount} Blocks: ${t.blockCount}`];t.dxfVersion&&e.push(`DXF: ${t.dxfVersion}`),t.fileName&&e.push(`File: ${t.fileName}`),t.fileSize>0&&e.push(`Size: ${ht(t.fileSize)}`),o.push(e)}if(r.showTimings){let e=[];t.parseTime>0&&e.push(`Parse: ${t.parseTime.toFixed(0)}ms`),t.spatialIndexBuildTime>0&&e.push(`Index: ${t.spatialIndexBuildTime.toFixed(0)}ms`),t.totalLoadTime>0&&e.push(`Load: ${t.totalLoadTime.toFixed(0)}ms`),e.length>0&&o.push([e.join(` `)])}if(r.showCamera){let e=t.viewportBounds;o.push([`Zoom: ${gt(t.zoom)} Pixel: ${t.pixelSize.toFixed(2)}`,`View: [${e.minX.toFixed(0)}, ${e.minY.toFixed(0)}] \u2192 [${e.maxX.toFixed(0)}, ${e.maxY.toFixed(0)}]`])}if(o.length===0)return;e.font=_t;let s=[];for(let e=0;e<o.length;e++){e>0&&s.push({text:``,isSeparator:!0});for(let t of o[e])s.push({text:t,isSeparator:!1})}let c=0;for(let t of s)if(!t.isSeparator){let n=e.measureText(t.text).width;n>c&&(c=n)}let l=c+Y*2,u=Y*2;for(let e of s)u+=e.isSeparator?yt:vt;let d,f;switch(r.position){case`top-left`:d=X,f=X;break;case`top-right`:d=i-l-X,f=X;break;case`bottom-left`:d=X,f=a-u-X;break;case`bottom-right`:d=i-l-X,f=a-u-X;break}let p=M[n];e.fillStyle=n===`dark`?`rgba(0, 0, 0, 0.75)`:`rgba(255, 255, 255, 0.85)`,e.fillRect(d,f,l,u),e.strokeStyle=n===`dark`?`rgba(255, 255, 255, 0.15)`:`rgba(0, 0, 0, 0.15)`,e.lineWidth=1,e.strokeRect(d+.5,f+.5,l-1,u-1),e.fillStyle=n===`dark`?p.defaultEntityColor:`rgba(0, 0, 0, 0.85)`,e.textAlign=`left`,e.textBaseline=`top`;let m=f+Y;for(let t of s)t.isSeparator?m+=yt:(e.fillText(t.text,d+Y,m),m+=vt)}var xt=class{layers=new Map;visibility=new Map;colorOverrides=new Map;visibleCache=null;setLayers(e){this.layers=new Map(e),this.visibility.clear(),this.colorOverrides.clear(),this.visibleCache=null;for(let[e,t]of this.layers)this.visibility.set(e,!t.isOff&&!t.isFrozen)}getAllLayers(){return Array.from(this.layers.values())}setVisible(e,t){this.visibility.set(e,t),this.visibleCache=null}isVisible(e){return this.visibility.get(e)??!0}setColorOverride(e,t){this.colorOverrides.set(e,t)}getColorOverride(e){return this.colorOverrides.get(e)}getVisibleLayerNames(){if(this.visibleCache)return this.visibleCache;let e=new Set;for(let[t,n]of this.visibility)n&&e.add(t);return this.visibleCache=e,e}clear(){this.layers.clear(),this.visibility.clear(),this.colorOverrides.clear(),this.visibleCache=null}},St=class{listeners=new Map;on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){this.listeners.get(e)?.delete(t)}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)e(t)}removeAllListeners(){this.listeners.clear()}},Ct=class{constructor(e,t){this.canvas=e,this.viewer=t,this.onPointerDown=this.handlePointerDown.bind(this),this.onPointerMove=this.handlePointerMove.bind(this),this.onPointerUp=this.handlePointerUp.bind(this),this.onWheel=this.handleWheel.bind(this),this.onTouchStart=this.handleTouchStart.bind(this),this.onTouchMove=this.handleTouchMove.bind(this),this.onTouchEnd=this.handleTouchEnd.bind(this),this.onContextMenu=e=>e.preventDefault(),e.addEventListener(`pointerdown`,this.onPointerDown),e.addEventListener(`pointermove`,this.onPointerMove),e.addEventListener(`pointerup`,this.onPointerUp),e.addEventListener(`wheel`,this.onWheel,{passive:!1}),e.addEventListener(`touchstart`,this.onTouchStart,{passive:!1}),e.addEventListener(`touchmove`,this.onTouchMove,{passive:!1}),e.addEventListener(`touchend`,this.onTouchEnd),e.addEventListener(`contextmenu`,this.onContextMenu)}isPanning=!1;lastX=0;lastY=0;touches=new Map;onPointerDown;onPointerMove;onPointerUp;onWheel;onTouchStart;onTouchMove;onTouchEnd;onContextMenu;destroy(){this.canvas.removeEventListener(`pointerdown`,this.onPointerDown),this.canvas.removeEventListener(`pointermove`,this.onPointerMove),this.canvas.removeEventListener(`pointerup`,this.onPointerUp),this.canvas.removeEventListener(`wheel`,this.onWheel),this.canvas.removeEventListener(`touchstart`,this.onTouchStart),this.canvas.removeEventListener(`touchmove`,this.onTouchMove),this.canvas.removeEventListener(`touchend`,this.onTouchEnd),this.canvas.removeEventListener(`contextmenu`,this.onContextMenu)}handlePointerDown(e){let t=this.viewer.getTool(),n=this.canvas.getBoundingClientRect(),r=e.clientX-n.left,i=e.clientY-n.top;e.button===0&&t===`pan`||e.button===1?this.startPan(e,r,i):e.button===0&&(t===`select`||t===`measure`)&&this.viewer.handleClick(r,i)}startPan(e,t,n){this.isPanning=!0,this.lastX=t,this.lastY=n,this.canvas.setPointerCapture(e.pointerId),this.canvas.style.cursor=`grabbing`}handlePointerMove(e){let t=this.canvas.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;if(this.isPanning){let e=n-this.lastX,t=r-this.lastY;this.lastX=n,this.lastY=r,this.viewer.handlePan(e,t)}else this.viewer.handleMouseMove(n,r)}handlePointerUp(e){this.isPanning&&(this.isPanning=!1,this.canvas.releasePointerCapture(e.pointerId),this.canvas.style.cursor=this.viewer.getTool()===`pan`?`grab`:`crosshair`)}handleWheel(e){e.preventDefault();let t=this.canvas.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=-Math.sign(e.deltaY),a=this.viewer.getZoomSpeed(),o=i>0?a:1/a;this.viewer.handleZoom(n,r,o)}handleTouchStart(e){e.preventDefault();for(let t of Array.from(e.changedTouches))this.touches.set(t.identifier,{x:t.clientX,y:t.clientY})}handleTouchMove(e){if(e.preventDefault(),this.touches.size===2&&e.touches.length===2){let t=e.touches[0],n=e.touches[1],r=Array.from(this.touches.values()),i=Math.hypot(r[0].x-r[1].x,r[0].y-r[1].y),a=Math.hypot(t.clientX-n.clientX,t.clientY-n.clientY);if(i>0){let e=a/i,o=this.canvas.getBoundingClientRect(),s=(r[0].x+r[1].x)/2-o.left,c=(r[0].y+r[1].y)/2-o.top,l=(t.clientX+n.clientX)/2-o.left,u=(t.clientY+n.clientY)/2-o.top;this.viewer.handleZoom(s,c,e),this.viewer.handlePan(l-s,u-c)}}else if(this.touches.size===1&&e.touches.length===1){let t=e.touches[0],n=this.touches.get(t.identifier);n&&this.viewer.handlePan(t.clientX-n.x,t.clientY-n.y)}for(let t of Array.from(e.changedTouches))this.touches.set(t.identifier,{x:t.clientX,y:t.clientY})}handleTouchEnd(e){for(let t of Array.from(e.changedTouches))this.touches.delete(t.identifier)}},wt=5,Tt=class{tree=new r;items=[];entityBBoxes=[];build(e,t){this.items=[],this.entityBBoxes=Array(e.length).fill(null);let n=t?new Map:void 0;for(let r=0;r<e.length;r++){let i=e[r],a=t&&n?V(i,t,n):W(i);this.entityBBoxes[r]=a,a&&this.items.push({...a,entityIndex:r})}this.tree.clear(),this.tree.load(this.items)}search(e,t,n,r){return this.tree.search({minX:e,minY:t,maxX:n,maxY:r})}getEntityBBox(e){return this.entityBBoxes[e]??null}getEntityBBoxes(){return this.entityBBoxes}clear(){this.tree.clear(),this.items=[],this.entityBBoxes=[]}};function Et(e,t,n,r,i,a){let o=wt/a,s=r.search(e-o,t-o,e+o,t+o),c=o,l=-1;for(let r=s.length-1;r>=0;r--){let a=s[r],o=n[a.entityIndex];if(!o||!i.has(o.layer)||!o.visible)continue;let u=Dt(e,t,o);u<c&&(c=u,l=a.entityIndex)}return l}function Dt(e,t,n){switch(n.type){case`LINE`:return Z(e,t,n.start.x,n.start.y,n.end.x,n.end.y);case`CIRCLE`:return Ot(e,t,n.center.x,n.center.y,n.radius);case`ARC`:return kt(e,t,n.center.x,n.center.y,n.radius,n.startAngle*Math.PI/180,n.endAngle*Math.PI/180);case`LWPOLYLINE`:case`POLYLINE`:{let r=1/0,i=n.vertices,a=n.closed?i.length:i.length-1;for(let n=0;n<a;n++){let a=i[n],o=i[(n+1)%i.length],s=Z(e,t,a.x,a.y,o.x,o.y);r=Math.min(r,s)}return r}case`ELLIPSE`:return jt(e,t,n.center.x,n.center.y,n.majorAxis,n.minorRatio);case`TEXT`:case`MTEXT`:{let r=W(n);return r?At(e,t,r.minX,r.minY,r.maxX,r.maxY):1/0}case`POINT`:return Math.hypot(e-n.position.x,t-n.position.y);case`SPLINE`:{let r=1/0,i=n.controlPoints;for(let n=0;n<i.length-1;n++){let a=Z(e,t,i[n].x,i[n].y,i[n+1].x,i[n+1].y);r=Math.min(r,a)}return r}default:return 1/0}}function Z(e,t,n,r,i,a){let o=i-n,s=a-r,c=o*o+s*s;if(c===0)return Math.hypot(e-n,t-r);let l=((e-n)*o+(t-r)*s)/c;l=Math.max(0,Math.min(1,l));let u=n+l*o,d=r+l*s;return Math.hypot(e-u,t-d)}function Ot(e,t,n,r,i){return Math.abs(Math.hypot(e-n,t-r)-i)}function kt(e,t,n,r,i,a,o){let s=(Math.atan2(t-r,e-n)%(2*Math.PI)+2*Math.PI)%(2*Math.PI),c=(a%(2*Math.PI)+2*Math.PI)%(2*Math.PI),l=(o%(2*Math.PI)+2*Math.PI)%(2*Math.PI);if(c<=l?s>=c&&s<=l:s>=c||s<=l)return Math.abs(Math.hypot(e-n,t-r)-i);let u=Math.hypot(e-(n+i*Math.cos(a)),t-(r+i*Math.sin(a))),d=Math.hypot(e-(n+i*Math.cos(o)),t-(r+i*Math.sin(o)));return Math.min(u,d)}function At(e,t,n,r,i,a){if(e>=n&&e<=i&&t>=r&&t<=a)return 0;let o=Math.max(n-e,0,e-i),s=Math.max(r-t,0,t-a);return Math.hypot(o,s)}function jt(e,t,n,r,i,a){let o=Math.atan2(i.y,i.x),s=Math.cos(-o),c=Math.sin(-o),l=(e-n)*s-(t-r)*c,u=(e-n)*c+(t-r)*s,d=Math.sqrt(i.x**2+i.y**2),f=d*a;if(d<1e-10)return Math.hypot(e-n,t-r);let p=d/f*u,m=Math.hypot(l,p);if(m<1e-10)return d;let h=l/m*d,g=u/m*f;return Math.hypot(l-h,u-g)}var Mt=class{state={phase:`idle`};currentSnap=null;activate(){this.state={phase:`first-point`},this.currentSnap=null}deactivate(){this.state={phase:`idle`},this.currentSnap=null}handleClick(e,t,n){let r=n?n.point:{x:e,y:t};switch(this.state.phase){case`first-point`:return this.state={phase:`second-point`,firstPoint:r,firstSnap:n??void 0},null;case`second-point`:{let e=this.state.firstPoint,t=r,n=t.x-e.x,i=t.y-e.y,a=Math.sqrt(n*n+i*i),o=Math.atan2(i,n)*180/Math.PI;return this.state={phase:`done`,firstPoint:e,secondPoint:t,distance:a,angle:o},{distance:a,angle:o,deltaX:n,deltaY:i,points:[e,t]}}case`done`:return this.state={phase:`second-point`,firstPoint:r},null;default:return null}}handleMove(e){this.currentSnap=e}};function Nt(e,t,n,r,i,a=new Set([`endpoint`,`midpoint`,`center`])){let o=10/i,s=[],c=r.search(e-o,t-o,e+o,t+o);for(let r of c){let i=n[r.entityIndex];if(!i)continue;let c=r.entityIndex;switch(i.type){case`LINE`:a.has(`endpoint`)&&(Q(s,i.start.x,i.start.y,`endpoint`,c,e,t,o),Q(s,i.end.x,i.end.y,`endpoint`,c,e,t,o)),a.has(`midpoint`)&&Q(s,(i.start.x+i.end.x)/2,(i.start.y+i.end.y)/2,`midpoint`,c,e,t,o);break;case`CIRCLE`:if(a.has(`center`)&&Q(s,i.center.x,i.center.y,`center`,c,e,t,o),a.has(`endpoint`))for(let n of[0,Math.PI/2,Math.PI,3*Math.PI/2])Q(s,i.center.x+i.radius*Math.cos(n),i.center.y+i.radius*Math.sin(n),`endpoint`,c,e,t,o);break;case`ARC`:if(a.has(`center`)&&Q(s,i.center.x,i.center.y,`center`,c,e,t,o),a.has(`endpoint`)){let n=i.startAngle*Math.PI/180,r=i.endAngle*Math.PI/180;Q(s,i.center.x+i.radius*Math.cos(n),i.center.y+i.radius*Math.sin(n),`endpoint`,c,e,t,o),Q(s,i.center.x+i.radius*Math.cos(r),i.center.y+i.radius*Math.sin(r),`endpoint`,c,e,t,o)}break;case`LWPOLYLINE`:case`POLYLINE`:if(a.has(`endpoint`))for(let n of i.vertices)Q(s,n.x,n.y,`endpoint`,c,e,t,o);if(a.has(`midpoint`))for(let n=0;n<i.vertices.length-1;n++){let r=i.vertices[n],a=i.vertices[n+1];Q(s,(r.x+a.x)/2,(r.y+a.y)/2,`midpoint`,c,e,t,o)}break;case`ELLIPSE`:a.has(`center`)&&Q(s,i.center.x,i.center.y,`center`,c,e,t,o);break;case`TEXT`:a.has(`endpoint`)&&Q(s,i.insertionPoint.x,i.insertionPoint.y,`endpoint`,c,e,t,o);break;case`MTEXT`:a.has(`endpoint`)&&Q(s,i.insertionPoint.x,i.insertionPoint.y,`endpoint`,c,e,t,o);break}}return s.sort((n,r)=>Math.hypot(n.point.x-e,n.point.y-t)-Math.hypot(r.point.x-e,r.point.y-t)),s}function Q(e,t,n,r,i,a,o,s){Math.hypot(t-a,n-o)<=s&&e.push({point:{x:t,y:n},type:r,entityIndex:i})}function Pt(e,t,n,r,i,a){let o=M[a];e.setTransform(1,0,0,1,0,0);let s=n.state;if(n.currentSnap){let[r,i]=N(t,n.currentSnap.point.x,n.currentSnap.point.y);Ft(e,r,i,n.currentSnap.type,o.measureColor)}if(s.phase===`second-point`){let[c,l]=N(t,s.firstPoint.x,s.firstPoint.y),u,d;if(n.currentSnap){let[e,r]=N(t,n.currentSnap.point.x,n.currentSnap.point.y);u=e,d=r}else u=r,d=i;e.strokeStyle=o.measureColor,e.lineWidth=1.5,e.setLineDash([6,3]),e.beginPath(),e.moveTo(c,l),e.lineTo(u,d),e.stroke(),e.setLineDash([]),$(e,c,l,o.measureColor),$(e,u,d,o.measureColor);let f,p;n.currentSnap?(f=n.currentSnap.point.x,p=n.currentSnap.point.y):[f,p]=P(t,r,i);let m=Math.hypot(f-s.firstPoint.x,p-s.firstPoint.y);It(e,(c+u)/2,(l+d)/2,m,a)}if(s.phase===`done`){let[n,r]=N(t,s.firstPoint.x,s.firstPoint.y),[i,c]=N(t,s.secondPoint.x,s.secondPoint.y);e.strokeStyle=o.measureColor,e.lineWidth=2,e.beginPath(),e.moveTo(n,r),e.lineTo(i,c),e.stroke(),$(e,n,r,o.measureColor),$(e,i,c,o.measureColor),It(e,(n+i)/2,(r+c)/2,s.distance,a)}}function Ft(e,t,n,r,i){switch(e.strokeStyle=i,e.lineWidth=2,r){case`endpoint`:e.strokeRect(t-8/2,n-8/2,8,8);break;case`midpoint`:e.beginPath(),e.moveTo(t,n-8/2),e.lineTo(t+8/2,n+8/2),e.lineTo(t-8/2,n+8/2),e.closePath(),e.stroke();break;case`center`:e.beginPath(),e.arc(t,n,8/2,0,Math.PI*2),e.stroke();break;case`nearest`:e.beginPath(),e.moveTo(t-8/2,n-8/2),e.lineTo(t+8/2,n+8/2),e.moveTo(t+8/2,n-8/2),e.lineTo(t-8/2,n+8/2),e.stroke();break}}function $(e,t,n,r){e.fillStyle=r,e.beginPath(),e.arc(t,n,4,0,Math.PI*2),e.fill()}function It(e,t,n,r,i){let a=r.toFixed(4);e.font=`13px monospace`,e.textAlign=`center`,e.textBaseline=`bottom`;let o=e.measureText(a),s=t-o.width/2-4,c=n-20,l=o.width+8;e.fillStyle=i===`dark`?`rgba(0,0,0,0.8)`:`rgba(255,255,255,0.9)`,e.fillRect(s,c,l,18),e.fillStyle=M[i].measureColor,e.fillText(a,t,n-6)}var Lt=class{worker=null;blobUrl=null;nextId=1;pending=new Map;getWorker(){return this.worker?this.worker:(this.blobUrl=URL.createObjectURL(new Blob(['"use strict";(()=>{function h(a){let e=a.replace(/\\r\\n?/g,`\n`),t=[],r=e.length,n=0;for(;n<r;){for(;n<r&&e.charCodeAt(n)===10;)n++;if(n>=r)break;let o=e.indexOf(`\n`,n);o===-1&&(o=r);let c=e.substring(n,o).trim();n=o+1;let s=parseInt(c,10);if(isNaN(s)){n<r&&(o=e.indexOf(`\n`,n),o===-1&&(o=r),n=o+1);continue}if(n>=r)break;o=e.indexOf(`\n`,n),o===-1&&(o=r);let p=e.substring(n,o).replace(/\\s+$/,"");n=o+1,t.push({code:s,value:p})}return t}function m(a,e,t){for(;e<a.length;){let r=a[e];if(r.code===0&&r.value==="ENDSEC")return e+1;if(r.code===9){let n=r.value;switch(e++,n){case"$ACADVER":e<a.length&&(t.acadVersion=a[e].value,e++);break;case"$EXTMIN":if(e<a.length){let o=v(a,e);t.extMin=o.point,e=o.nextIndex}break;case"$EXTMAX":if(e<a.length){let o=v(a,e);t.extMax=o.point,e=o.nextIndex}break;case"$INSUNITS":e<a.length&&(t.insUnits=parseInt(a[e].value,10),e++);break;case"$MEASUREMENT":e<a.length&&(t.measurement=parseInt(a[e].value,10),e++);break;case"$LTSCALE":e<a.length&&(t.ltScale=parseFloat(a[e].value),e++);break;case"$DWGCODEPAGE":e<a.length&&(t.dwgCodePage=a[e].value,e++);break;case"$HANDSEED":e<a.length&&(t.handleSeed=a[e].value,e++);break;default:for(;e<a.length&&a[e].code!==9&&a[e].code!==0;)t[n]=a[e].value,e++}}else e++}return e}function v(a,e){let t={x:0,y:0,z:0};for(;e<a.length;){let r=a[e].code;if(r===10)t.x=parseFloat(a[e].value),e++;else if(r===20)t.y=parseFloat(a[e].value),e++;else if(r===30)t.z=parseFloat(a[e].value),e++;else break}return{point:t,nextIndex:e}}function k(a,e,t){for(;e<a.length;){let r=a[e];if(r.code===0&&r.value==="ENDSEC")return e+1;if(r.code===0&&r.value==="TABLE"){if(e++,e>=a.length)break;let n=a[e].value;switch(e++,n){case"LAYER":e=H(a,e,t.layers);break;case"LTYPE":e=O(a,e,t.lineTypes);break;case"STYLE":e=_(a,e,t.styles);break;default:e=R(a,e);break}}else e++}return e}function R(a,e){for(;e<a.length;){if(a[e].code===0&&a[e].value==="ENDTAB")return e+1;e++}return e}function H(a,e,t){for(;e<a.length;){let r=a[e];if(r.code===0&&r.value==="ENDTAB")return e+1;if(r.code===0&&r.value==="LAYER"){e++;let n={name:"0",color:7,lineType:"Continuous",flags:0,lineWeight:-3,isOff:!1,isFrozen:!1,isLocked:!1};for(;e<a.length&&a[e].code!==0;){let o=a[e];switch(o.code){case 2:n.name=o.value;break;case 6:n.lineType=o.value;break;case 62:n.color=parseInt(o.value,10);break;case 70:n.flags=parseInt(o.value,10);break;case 370:n.lineWeight=parseInt(o.value,10);break;case 420:n.trueColor=parseInt(o.value,10);break}e++}t.set(n.name,n)}else e++}return e}function O(a,e,t){for(;e<a.length;){let r=a[e];if(r.code===0&&r.value==="ENDTAB")return e+1;if(r.code===0&&r.value==="LTYPE"){e++;let n={name:"",description:"",pattern:[],totalLength:0};for(;e<a.length&&a[e].code!==0;){let o=a[e];switch(o.code){case 2:n.name=o.value;break;case 3:n.description=o.value;break;case 40:n.totalLength=parseFloat(o.value);break;case 49:n.pattern.push(parseFloat(o.value));break}e++}n.name&&t.set(n.name,n)}else e++}return e}function _(a,e,t){for(;e<a.length;){let r=a[e];if(r.code===0&&r.value==="ENDTAB")return e+1;if(r.code===0&&r.value==="STYLE"){e++;let n={name:"",fontName:"",bigFontName:"",height:0,widthFactor:1,obliqueAngle:0};for(;e<a.length&&a[e].code!==0;){let o=a[e];switch(o.code){case 2:n.name=o.value;break;case 3:n.fontName=o.value;break;case 4:n.bigFontName=o.value;break;case 40:n.height=parseFloat(o.value);break;case 41:n.widthFactor=parseFloat(o.value);break;case 50:n.obliqueAngle=parseFloat(o.value);break}e++}n.name&&t.set(n.name,n)}else e++}return e}function l(a){let e={type:"",layer:"0",color:256,lineType:"BYLAYER",lineTypeScale:1,lineWeight:-1,visible:!0,extrusion:{x:0,y:0,z:1}};for(let t of a)switch(t.code){case 5:e.handle=t.value;break;case 8:e.layer=t.value;break;case 6:e.lineType=t.value;break;case 48:e.lineTypeScale=parseFloat(t.value);break;case 60:e.visible=t.value==="0"||t.value==="";break;case 62:e.color=parseInt(t.value,10);break;case 370:e.lineWeight=parseInt(t.value,10);break;case 420:e.trueColor=parseInt(t.value,10);break;case 210:e.extrusion.x=parseFloat(t.value);break;case 220:e.extrusion.y=parseFloat(t.value);break;case 230:e.extrusion.z=parseFloat(t.value);break}return e}function D(a){let t={...l(a),type:"LINE",start:{x:0,y:0,z:0},end:{x:0,y:0,z:0}};for(let r of a)switch(r.code){case 10:t.start.x=parseFloat(r.value);break;case 20:t.start.y=parseFloat(r.value);break;case 30:t.start.z=parseFloat(r.value);break;case 11:t.end.x=parseFloat(r.value);break;case 21:t.end.y=parseFloat(r.value);break;case 31:t.end.z=parseFloat(r.value);break}return t}function F(a){let t={...l(a),type:"CIRCLE",center:{x:0,y:0,z:0},radius:0};for(let r of a)switch(r.code){case 10:t.center.x=parseFloat(r.value);break;case 20:t.center.y=parseFloat(r.value);break;case 30:t.center.z=parseFloat(r.value);break;case 40:t.radius=parseFloat(r.value);break}return t}function E(a){let t={...l(a),type:"ARC",center:{x:0,y:0,z:0},radius:0,startAngle:0,endAngle:360};for(let r of a)switch(r.code){case 10:t.center.x=parseFloat(r.value);break;case 20:t.center.y=parseFloat(r.value);break;case 30:t.center.z=parseFloat(r.value);break;case 40:t.radius=parseFloat(r.value);break;case 50:t.startAngle=parseFloat(r.value);break;case 51:t.endAngle=parseFloat(r.value);break}return t}function P(a){let t={...l(a),type:"LWPOLYLINE",vertices:[],closed:!1,constantWidth:0,elevation:0},r=null;for(let n of a)switch(n.code){case 70:t.closed=(parseInt(n.value,10)&1)!==0;break;case 38:t.elevation=parseFloat(n.value);break;case 43:t.constantWidth=parseFloat(n.value);break;case 10:r&&t.vertices.push(r),r={x:parseFloat(n.value),y:0,bulge:0,startWidth:0,endWidth:0};break;case 20:r&&(r.y=parseFloat(n.value));break;case 40:r&&(r.startWidth=parseFloat(n.value));break;case 41:r&&(r.endWidth=parseFloat(n.value));break;case 42:r&&(r.bulge=parseFloat(n.value));break}return r&&t.vertices.push(r),t}function T(a){let t={...l(a),type:"POLYLINE",vertices:[],closed:!1,is3d:!1};for(let r of a)if(r.code===70){let n=parseInt(r.value,10);t.closed=(n&1)!==0,t.is3d=(n&8)!==0}return t}function w(a){let t={...l(a),type:"ELLIPSE",center:{x:0,y:0,z:0},majorAxis:{x:1,y:0,z:0},minorRatio:1,startParam:0,endParam:Math.PI*2};for(let r of a)switch(r.code){case 10:t.center.x=parseFloat(r.value);break;case 20:t.center.y=parseFloat(r.value);break;case 30:t.center.z=parseFloat(r.value);break;case 11:t.majorAxis.x=parseFloat(r.value);break;case 21:t.majorAxis.y=parseFloat(r.value);break;case 31:t.majorAxis.z=parseFloat(r.value);break;case 40:t.minorRatio=parseFloat(r.value);break;case 41:t.startParam=parseFloat(r.value);break;case 42:t.endParam=parseFloat(r.value);break}return t}function g(a){let t={...l(a),type:"SPLINE",degree:3,flags:0,knots:[],controlPoints:[],fitPoints:[],weights:[]},r=null,n=null;for(let o of a)switch(o.code){case 70:t.flags=parseInt(o.value,10);break;case 71:t.degree=parseInt(o.value,10);break;case 40:t.knots.push(parseFloat(o.value));break;case 41:t.weights.push(parseFloat(o.value));break;case 10:r&&t.controlPoints.push(r),r={x:parseFloat(o.value),y:0,z:0};break;case 20:r&&(r.y=parseFloat(o.value));break;case 30:r&&(r.z=parseFloat(o.value));break;case 11:n&&t.fitPoints.push(n),n={x:parseFloat(o.value),y:0,z:0};break;case 21:n&&(n.y=parseFloat(o.value));break;case 31:n&&(n.z=parseFloat(o.value));break;case 12:t.startTangent||(t.startTangent={x:0,y:0,z:0}),t.startTangent.x=parseFloat(o.value);break;case 22:t.startTangent&&(t.startTangent.y=parseFloat(o.value));break;case 32:t.startTangent&&(t.startTangent.z=parseFloat(o.value));break;case 13:t.endTangent||(t.endTangent={x:0,y:0,z:0}),t.endTangent.x=parseFloat(o.value);break;case 23:t.endTangent&&(t.endTangent.y=parseFloat(o.value));break;case 33:t.endTangent&&(t.endTangent.z=parseFloat(o.value));break}return r&&t.controlPoints.push(r),n&&t.fitPoints.push(n),t}function I(a){let t={...l(a),type:"TEXT",text:"",insertionPoint:{x:0,y:0,z:0},height:1,rotation:0,widthFactor:1,obliqueAngle:0,style:"STANDARD",hAlign:0,vAlign:0,generationFlags:0};for(let r of a)switch(r.code){case 1:t.text=r.value;break;case 10:t.insertionPoint.x=parseFloat(r.value);break;case 20:t.insertionPoint.y=parseFloat(r.value);break;case 30:t.insertionPoint.z=parseFloat(r.value);break;case 11:t.alignmentPoint||(t.alignmentPoint={x:0,y:0,z:0}),t.alignmentPoint.x=parseFloat(r.value);break;case 21:t.alignmentPoint||(t.alignmentPoint={x:0,y:0,z:0}),t.alignmentPoint.y=parseFloat(r.value);break;case 31:t.alignmentPoint||(t.alignmentPoint={x:0,y:0,z:0}),t.alignmentPoint.z=parseFloat(r.value);break;case 40:t.height=parseFloat(r.value);break;case 41:t.widthFactor=parseFloat(r.value);break;case 50:t.rotation=parseFloat(r.value);break;case 51:t.obliqueAngle=parseFloat(r.value);break;case 7:t.style=r.value;break;case 71:t.generationFlags=parseInt(r.value,10);break;case 72:t.hAlign=parseInt(r.value,10);break;case 73:t.vAlign=parseInt(r.value,10);break}return t}function A(a){let t={...l(a),type:"MTEXT",text:"",insertionPoint:{x:0,y:0,z:0},height:1,width:0,attachmentPoint:1,drawingDirection:1,rotation:0,lineSpacingStyle:1,lineSpacingFactor:1,style:"STANDARD",bgFill:0,bgFillScale:1.5},r=[];for(let n of a)switch(n.code){case 1:r.push(n.value);break;case 3:r.push(n.value);break;case 7:t.style=n.value;break;case 10:t.insertionPoint.x=parseFloat(n.value);break;case 20:t.insertionPoint.y=parseFloat(n.value);break;case 30:t.insertionPoint.z=parseFloat(n.value);break;case 11:t.textDirection||(t.textDirection={x:0,y:0,z:0}),t.textDirection.x=parseFloat(n.value);break;case 21:t.textDirection||(t.textDirection={x:0,y:0,z:0}),t.textDirection.y=parseFloat(n.value);break;case 31:t.textDirection||(t.textDirection={x:0,y:0,z:0}),t.textDirection.z=parseFloat(n.value);break;case 40:t.height=parseFloat(n.value);break;case 41:t.width=parseFloat(n.value);break;case 44:t.lineSpacingFactor=parseFloat(n.value);break;case 50:t.rotation=parseFloat(n.value);break;case 71:t.attachmentPoint=parseInt(n.value,10);break;case 72:t.drawingDirection=parseInt(n.value,10);break;case 73:t.lineSpacingStyle=parseInt(n.value,10);break;case 90:t.bgFill=parseInt(n.value,10);break}return t.text=r.join(""),t}function z(a){let t={...l(a),type:"INSERT",blockName:"",insertionPoint:{x:0,y:0,z:0},scaleX:1,scaleY:1,scaleZ:1,rotation:0,columnCount:1,rowCount:1,columnSpacing:0,rowSpacing:0,attribs:[]};for(let r of a)switch(r.code){case 2:t.blockName=r.value;break;case 10:t.insertionPoint.x=parseFloat(r.value);break;case 20:t.insertionPoint.y=parseFloat(r.value);break;case 30:t.insertionPoint.z=parseFloat(r.value);break;case 41:t.scaleX=parseFloat(r.value);break;case 42:t.scaleY=parseFloat(r.value);break;case 43:t.scaleZ=parseFloat(r.value);break;case 44:t.columnSpacing=parseFloat(r.value);break;case 45:t.rowSpacing=parseFloat(r.value);break;case 50:t.rotation=parseFloat(r.value);break;case 70:t.columnCount=parseInt(r.value,10)||1;break;case 71:t.rowCount=parseInt(r.value,10)||1;break}return t}function S(a){let t={...l(a),type:"DIMENSION",blockName:"",dimStyle:"STANDARD",dimType:0,defPoint:{x:0,y:0,z:0},textMidpoint:{x:0,y:0,z:0},textOverride:"",rotation:0,textRotation:0,leaderLength:0};for(let r of a)switch(r.code){case 1:t.textOverride=r.value;break;case 2:t.blockName=r.value;break;case 3:t.dimStyle=r.value;break;case 10:t.defPoint.x=parseFloat(r.value);break;case 20:t.defPoint.y=parseFloat(r.value);break;case 30:t.defPoint.z=parseFloat(r.value);break;case 11:t.textMidpoint.x=parseFloat(r.value);break;case 21:t.textMidpoint.y=parseFloat(r.value);break;case 31:t.textMidpoint.z=parseFloat(r.value);break;case 13:t.defPoint2||(t.defPoint2={x:0,y:0,z:0}),t.defPoint2.x=parseFloat(r.value);break;case 23:t.defPoint2||(t.defPoint2={x:0,y:0,z:0}),t.defPoint2.y=parseFloat(r.value);break;case 33:t.defPoint2||(t.defPoint2={x:0,y:0,z:0}),t.defPoint2.z=parseFloat(r.value);break;case 14:t.defPoint3||(t.defPoint3={x:0,y:0,z:0}),t.defPoint3.x=parseFloat(r.value);break;case 24:t.defPoint3||(t.defPoint3={x:0,y:0,z:0}),t.defPoint3.y=parseFloat(r.value);break;case 34:t.defPoint3||(t.defPoint3={x:0,y:0,z:0}),t.defPoint3.z=parseFloat(r.value);break;case 15:t.defPoint4||(t.defPoint4={x:0,y:0,z:0}),t.defPoint4.x=parseFloat(r.value);break;case 25:t.defPoint4||(t.defPoint4={x:0,y:0,z:0}),t.defPoint4.y=parseFloat(r.value);break;case 35:t.defPoint4||(t.defPoint4={x:0,y:0,z:0}),t.defPoint4.z=parseFloat(r.value);break;case 16:t.defPoint5||(t.defPoint5={x:0,y:0,z:0}),t.defPoint5.x=parseFloat(r.value);break;case 26:t.defPoint5||(t.defPoint5={x:0,y:0,z:0}),t.defPoint5.y=parseFloat(r.value);break;case 36:t.defPoint5||(t.defPoint5={x:0,y:0,z:0}),t.defPoint5.z=parseFloat(r.value);break;case 40:t.leaderLength=parseFloat(r.value);break;case 50:t.rotation=parseFloat(r.value);break;case 53:t.textRotation=parseFloat(r.value);break;case 70:t.dimType=parseInt(r.value,10);break}return t}function N(a){let t={...l(a),type:"HATCH",patternName:"",solidFill:!0,associative:!1,hatchStyle:0,patternType:1,patternAngle:0,patternScale:1,boundaryPaths:[]},r=0;for(;r<a.length;){let n=a[r];switch(n.code){case 2:t.patternName=n.value;break;case 41:t.patternScale=parseFloat(n.value);break;case 52:t.patternAngle=parseFloat(n.value);break;case 70:t.solidFill=n.value==="1";break;case 71:t.associative=n.value==="1";break;case 75:t.hatchStyle=parseInt(n.value,10);break;case 76:t.patternType=parseInt(n.value,10);break;case 91:{let o=parseInt(n.value,10);r++;for(let c=0;c<o&&r<a.length;c++){let s=W(a,r);t.boundaryPaths.push(s.path),r=s.nextIndex}continue}}r++}return t}function W(a,e){let t=0;return e<a.length&&a[e].code===92&&(t=parseInt(a[e].value,10),e++),(t&2)!==0?X(a,e,t):Y(a,e,t)}function X(a,e,t){let r={type:"polyline",vertices:[],bulges:[],flags:t},n=!1;e<a.length&&a[e].code===72&&(n=a[e].value==="1",e++),e<a.length&&a[e].code===73&&(r.isClosed=a[e].value==="1",e++);let o=0;e<a.length&&a[e].code===93&&(o=parseInt(a[e].value,10),e++);for(let c=0;c<o&&e<a.length;c++){let s={x:0,y:0};a[e].code===10&&(s.x=parseFloat(a[e].value),e++),e<a.length&&a[e].code===20&&(s.y=parseFloat(a[e].value),e++),r.vertices.push(s),n&&e<a.length&&a[e].code===42?(r.bulges.push(parseFloat(a[e].value)),e++):n&&r.bulges.push(0)}for(;e<a.length&&(a[e].code===97||a[e].code===330);)if(a[e].code===97){let c=parseInt(a[e].value,10);e++;for(let s=0;s<c&&e<a.length&&a[e].code===330;s++)e++}else e++;return{path:r,nextIndex:e}}function Y(a,e,t){let r={type:"edges",edges:[],flags:t},n=0;e<a.length&&a[e].code===93&&(n=parseInt(a[e].value,10),e++);for(let o=0;o<n&&e<a.length&&a[e].code===72;o++){let c=parseInt(a[e].value,10);switch(e++,c){case 1:{let s={type:"line",start:{x:0,y:0},end:{x:0,y:0}};e<a.length&&a[e].code===10&&(s.start.x=parseFloat(a[e].value),e++),e<a.length&&a[e].code===20&&(s.start.y=parseFloat(a[e].value),e++),e<a.length&&a[e].code===11&&(s.end.x=parseFloat(a[e].value),e++),e<a.length&&a[e].code===21&&(s.end.y=parseFloat(a[e].value),e++),r.edges.push(s);break}case 2:{let s={type:"arc",center:{x:0,y:0},radius:0,startAngle:0,endAngle:360,ccw:!0};e<a.length&&a[e].code===10&&(s.center.x=parseFloat(a[e].value),e++),e<a.length&&a[e].code===20&&(s.center.y=parseFloat(a[e].value),e++),e<a.length&&a[e].code===40&&(s.radius=parseFloat(a[e].value),e++),e<a.length&&a[e].code===50&&(s.startAngle=parseFloat(a[e].value),e++),e<a.length&&a[e].code===51&&(s.endAngle=parseFloat(a[e].value),e++),e<a.length&&a[e].code===73&&(s.ccw=a[e].value==="1",e++),r.edges.push(s);break}case 3:{let s={type:"ellipse",center:{x:0,y:0},majorAxis:{x:1,y:0},minorRatio:1,startAngle:0,endAngle:Math.PI*2,ccw:!0};e<a.length&&a[e].code===10&&(s.center.x=parseFloat(a[e].value),e++),e<a.length&&a[e].code===20&&(s.center.y=parseFloat(a[e].value),e++),e<a.length&&a[e].code===11&&(s.majorAxis.x=parseFloat(a[e].value),e++),e<a.length&&a[e].code===21&&(s.majorAxis.y=parseFloat(a[e].value),e++),e<a.length&&a[e].code===40&&(s.minorRatio=parseFloat(a[e].value),e++),e<a.length&&a[e].code===50&&(s.startAngle=parseFloat(a[e].value),e++),e<a.length&&a[e].code===51&&(s.endAngle=parseFloat(a[e].value),e++),e<a.length&&a[e].code===73&&(s.ccw=a[e].value==="1",e++),r.edges.push(s);break}case 4:{let s=3,p=[],b=[];e<a.length&&a[e].code===94&&(s=parseInt(a[e].value,10),e++),e<a.length&&a[e].code===73&&e++,e<a.length&&a[e].code===74&&e++;let d=0;e<a.length&&a[e].code===95&&(d=parseInt(a[e].value,10),e++);let x=0;e<a.length&&a[e].code===96&&(x=parseInt(a[e].value,10),e++);for(let f=0;f<d&&e<a.length&&a[e].code===40;f++)p.push(parseFloat(a[e].value)),e++;for(let f=0;f<x&&e<a.length;f++){let y={x:0,y:0};a[e].code===10&&(y.x=parseFloat(a[e].value),e++),e<a.length&&a[e].code===20&&(y.y=parseFloat(a[e].value),e++),b.push(y)}r.edges.push({type:"spline",degree:s,knots:p,controlPoints:b});break}default:break}}for(;e<a.length&&(a[e].code===97||a[e].code===330);)if(a[e].code===97){let o=parseInt(a[e].value,10);e++;for(let c=0;c<o&&e<a.length&&a[e].code===330;c++)e++}else e++;return{path:r,nextIndex:e}}function L(a){let t={...l(a),type:"POINT",position:{x:0,y:0,z:0}};for(let r of a)switch(r.code){case 10:t.position.x=parseFloat(r.value);break;case 20:t.position.y=parseFloat(r.value);break;case 30:t.position.z=parseFloat(r.value);break}return t}function u(a,e,t){for(;e<a.length;){let r=a[e];if(r.code!==0){e++;continue}let n=r.value;if(n==="ENDSEC"||n==="ENDBLK")return e+1;e++;let o=[];for(;e<a.length&&a[e].code!==0;)o.push(a[e]),e++;switch(n){case"LINE":t.push(D(o));break;case"CIRCLE":t.push(F(o));break;case"ARC":t.push(E(o));break;case"LWPOLYLINE":t.push(P(o));break;case"ELLIPSE":t.push(w(o));break;case"SPLINE":t.push(g(o));break;case"TEXT":t.push(I(o));break;case"MTEXT":t.push(A(o));break;case"INSERT":{let c=z(o);o.some(p=>p.code===66&&p.value==="1")&&(e=$(a,e,c.attribs)),t.push(c);break}case"DIMENSION":t.push(S(o));break;case"HATCH":t.push(N(o));break;case"POINT":t.push(L(o));break;case"POLYLINE":{let c=T(o);e=V(a,e,c.vertices),t.push(c);break}default:break}}return e}function V(a,e,t){for(;e<a.length;){if(a[e].code!==0){e++;continue}let r=a[e].value;if(r==="SEQEND")return e+1;if(r==="ENDSEC"||r==="ENDBLK")return e;if(r==="VERTEX"){e++;let n={x:0,y:0,bulge:0,startWidth:0,endWidth:0};for(;e<a.length&&a[e].code!==0;){let o=a[e];switch(o.code){case 10:n.x=parseFloat(o.value);break;case 20:n.y=parseFloat(o.value);break;case 42:n.bulge=parseFloat(o.value);break;case 40:n.startWidth=parseFloat(o.value);break;case 41:n.endWidth=parseFloat(o.value);break}e++}t.push(n)}else for(e++;e<a.length&&a[e].code!==0;)e++}return e}function $(a,e,t){for(;e<a.length;){if(a[e].code!==0){e++;continue}let r=a[e].value;if(r==="SEQEND")return e+1;if(r==="ENDSEC"||r==="ENDBLK")return e;if(r==="ATTRIB"){e++;let n={tag:"",text:"",insertionPoint:{x:0,y:0,z:0},height:1,rotation:0,style:"STANDARD",layer:"0",color:256};for(;e<a.length&&a[e].code!==0;){let o=a[e];switch(o.code){case 1:n.text=o.value;break;case 2:n.tag=o.value;break;case 7:n.style=o.value;break;case 8:n.layer=o.value;break;case 10:n.insertionPoint.x=parseFloat(o.value);break;case 20:n.insertionPoint.y=parseFloat(o.value);break;case 30:n.insertionPoint.z=parseFloat(o.value);break;case 40:n.height=parseFloat(o.value);break;case 50:n.rotation=parseFloat(o.value);break;case 62:n.color=parseInt(o.value,10);break}e++}t.push(n)}else for(e++;e<a.length&&a[e].code!==0;)e++}return e}function B(a,e,t){for(;e<a.length;){let r=a[e];if(r.code===0&&r.value==="ENDSEC")return e+1;if(r.code===0&&r.value==="BLOCK"){e++;let n={name:"",basePoint:{x:0,y:0,z:0},entities:[],flags:0};for(;e<a.length&&a[e].code!==0;){let o=a[e];switch(o.code){case 2:n.name=o.value;break;case 8:break;case 10:n.basePoint.x=parseFloat(o.value);break;case 20:n.basePoint.y=parseFloat(o.value);break;case 30:n.basePoint.z=parseFloat(o.value);break;case 70:n.flags=parseInt(o.value,10);break}e++}e=u(a,e,n.entities),n.name&&!n.name.startsWith("*Model_Space")&&!n.name.startsWith("*Paper_Space")&&t.set(n.name,n)}else e++}return e}var C="AutoCAD Binary DXF",U={ANSI_874:"windows-874",ANSI_932:"shift_jis",ANSI_936:"gbk",ANSI_949:"euc-kr",ANSI_950:"big5",ANSI_1250:"windows-1250",ANSI_1251:"windows-1251",ANSI_1252:"windows-1252",ANSI_1253:"windows-1253",ANSI_1254:"windows-1254",ANSI_1255:"windows-1255",ANSI_1256:"windows-1256",ANSI_1257:"windows-1257",ANSI_1258:"windows-1258"},G="AC1021";function K(){return{acadVersion:"",insUnits:0,measurement:0,ltScale:1}}function j(a){return a.replace(/\\\\U\\+([0-9A-Fa-f]{4})/g,(e,t)=>String.fromCodePoint(parseInt(t,16)))}function q(a){if(typeof a=="string")return j(a);let e=new Uint8Array(a);if(new TextDecoder("ascii").decode(e.slice(0,C.length))===C)throw new i("Binary DXF format is not supported. Please export as ASCII DXF.");let r=new TextDecoder("utf-8").decode(a),o=r.match(/\\$ACADVER[\\s\\S]*?\\n\\s*1\\s*\\n\\s*(\\S+)/)?.[1]??"";if(o&&o<G){let s=r.match(/\\$DWGCODEPAGE[\\s\\S]*?\\n\\s*3\\s*\\n\\s*(\\S+)/)?.[1]??"",p=U[s]??"windows-1252";p!=="utf-8"&&(r=new TextDecoder(p).decode(a))}return j(r)}function Q(a,e){for(;e<a.length;){if(a[e].code===0&&a[e].value==="ENDSEC")return e+1;e++}return e}function Z(a){a.layers.has("0")||a.layers.set("0",{name:"0",color:7,lineType:"Continuous",flags:0,lineWeight:-3,isOff:!1,isFrozen:!1,isLocked:!1})}function J(a){for(let[,e]of a.layers)e.isOff=e.color<0,e.isOff&&(e.color=Math.abs(e.color)),e.isFrozen=(e.flags&1)!==0,e.isLocked=(e.flags&4)!==0}var i=class extends Error{constructor(t,r){super(t);this.cause=r;this.name="DxfParseError"}};function M(a){if(typeof a=="string"){if(a.length===0)throw new i("Input is empty. Expected a DXF string or ArrayBuffer.")}else if(a instanceof ArrayBuffer){if(a.byteLength===0)throw new i("Input ArrayBuffer is empty.")}else throw new i("Invalid input type. Expected a string or ArrayBuffer.");let e;try{e=q(a)}catch(n){throw n instanceof i?n:new i("Failed to decode DXF input.",n)}let t;try{t=h(e)}catch(n){throw new i("Failed to tokenize DXF content.",n)}if(t.length===0)throw new i("DXF content produced no tokens. The input may not be a valid DXF file.");let r={header:K(),layers:new Map,lineTypes:new Map,styles:new Map,blocks:new Map,entities:[]};try{let n=0;for(;n<t.length;){let o=t[n];if(o.code===0&&o.value==="SECTION"){if(n++,n>=t.length)break;let c=t[n].value;switch(n++,c){case"HEADER":n=m(t,n,r.header);break;case"TABLES":n=k(t,n,r);break;case"BLOCKS":n=B(t,n,r.blocks);break;case"ENTITIES":n=u(t,n,r.entities);break;default:n=Q(t,n);break}}else{if(o.code===0&&o.value==="EOF")break;n++}}}catch(n){throw new i("Failed to parse DXF sections.",n)}return Z(r),J(r),r}self.onmessage=a=>{let{type:e,id:t,payload:r}=a.data;if(e==="parse")try{let n=M(r);postMessage({type:"result",id:t,doc:n})}catch(n){let o=n instanceof Error?n.message:String(n);postMessage({type:"error",id:t,message:o})}};})();\n'],{type:`text/javascript`})),this.worker=new Worker(this.blobUrl),this.worker.onmessage=e=>{let{type:t,id:n,doc:r,message:i}=e.data,a=this.pending.get(n);a&&(this.pending.delete(n),t===`result`?a.resolve(this.reviveDocument(r)):t===`error`&&a.reject(Error(i??`Worker parse failed`)))},this.worker.onerror=e=>{let t=Error(e.message??`Worker error`);for(let[,e]of this.pending)e.reject(t);this.pending.clear(),this.destroyWorker()},this.worker)}parse(e){return new Promise((t,n)=>{let r=this.nextId++;this.pending.set(r,{resolve:t,reject:n});let i;try{i=this.getWorker()}catch(e){this.pending.delete(r),n(e instanceof Error?e:Error(String(e)));return}let a={type:`parse`,id:r,payload:e};try{e instanceof ArrayBuffer?i.postMessage(a,[e]):i.postMessage(a)}catch(e){this.pending.delete(r),n(e instanceof Error?e:Error(String(e)))}})}terminate(){this.destroyWorker();let e=Error(`Worker terminated`);for(let[,t]of this.pending)t.reject(e);this.pending.clear()}destroyWorker(){this.worker&&=(this.worker.terminate(),null),this.blobUrl&&=(URL.revokeObjectURL(this.blobUrl),null)}reviveDocument(e){return{...e,layers:this.ensureMap(e.layers),lineTypes:this.ensureMap(e.lineTypes),styles:this.ensureMap(e.styles),blocks:this.ensureMap(e.blocks)}}ensureMap(e){return e instanceof Map?e:e&&typeof e==`object`?new Map(Object.entries(e)):new Map}},Rt=class{canvas;renderer;camera;layerManager;emitter;spatialIndex;measureTool;doc=null;options;currentTool;inputHandler;resizeObserver;formatConverters;workerManager=null;selectedEntityIndex=-1;renderPending=!1;destroyed=!1;loadGeneration=0;mouseScreenX=0;mouseScreenY=0;debugEnabled=!1;debugOptions;lastRenderStats=null;lastDebugStats=null;frameTimestamps=[];lastDoRenderTime=0;lastFrameTime=0;parseTime=0;spatialIndexBuildTime=0;loadedFileName=null;loadedFileSize=0;debugRafId=0;constructor(e,t){this.canvas=e,this.options={theme:t?.theme??`dark`,backgroundColor:t?.backgroundColor,antialias:t?.antialias??!0,minZoom:t?.minZoom??1e-4,maxZoom:t?.maxZoom??1e5,zoomSpeed:t?.zoomSpeed??1.1,initialTool:t?.initialTool??`pan`},this.formatConverters=t?.formatConverters??[],t?.worker&&(this.workerManager=new Lt),t?.debug?(this.debugEnabled=!0,this.debugOptions=J(typeof t.debug==`boolean`?void 0:t.debug)):this.debugOptions=J(),this.renderer=new pt(e),this.camera=new je(this.options),this.layerManager=new xt,this.emitter=new St,this.spatialIndex=new Tt,this.measureTool=new Mt,this.currentTool=this.options.initialTool,this.inputHandler=new Ct(e,this),this.resizeObserver=new ResizeObserver(()=>this.resize()),this.resizeObserver.observe(e),e.style.cursor=this.getCursorForTool(this.currentTool),this.requestRender(),this.debugEnabled&&this.startDebugLoop()}guardDestroyed(){if(this.destroyed)throw Error(`CadViewer: cannot call methods on a destroyed instance.`)}async runConverters(e){for(let t of this.formatConverters){let n=!1;try{n=t.detect(e)}catch{continue}if(n)return t.convert(e)}return null}async loadFile(e){this.guardDestroyed();let t=++this.loadGeneration;this.loadedFileName=e.name,this.loadedFileSize=e.size;let n=await e.arrayBuffer();if(this.destroyed||t!==this.loadGeneration)return;let r=await this.runConverters(n);if(this.destroyed||t!==this.loadGeneration)return;let i=performance.now(),a=r??n;this.doc=await this.parseWithOptionalWorker(a,t),!(this.destroyed||t!==this.loadGeneration)&&(this.parseTime=performance.now()-i,this.onDocumentLoaded())}async loadBuffer(e){this.guardDestroyed();let t=++this.loadGeneration;this.loadedFileName=null,this.loadedFileSize=e.byteLength;let n=await this.runConverters(e);if(this.destroyed||t!==this.loadGeneration)return;let r=performance.now(),i=n??e;this.doc=await this.parseWithOptionalWorker(i,t),!(this.destroyed||t!==this.loadGeneration)&&(this.parseTime=performance.now()-r,this.onDocumentLoaded())}async parseWithOptionalWorker(e,t){if(!this.workerManager)return j(e);try{return await this.workerManager.parse(e)}catch(e){if(this.destroyed||t!==this.loadGeneration)return null;throw e}}loadDocument(e){if(this.guardDestroyed(),++this.loadGeneration,this.loadedFileName=null,this.loadedFileSize=0,this.parseTime=0,!e||!Array.isArray(e.entities)||!(e.layers instanceof Map))throw Error(`CadViewer: invalid DxfDocument — expected entities array and layers Map.`);this.doc=e,this.onDocumentLoaded()}loadString(e){this.guardDestroyed(),++this.loadGeneration,this.loadedFileName=null,this.loadedFileSize=e.length;let t=performance.now();this.doc=j(e),this.parseTime=performance.now()-t,this.onDocumentLoaded()}loadArrayBuffer(e){this.guardDestroyed(),++this.loadGeneration,this.loadedFileName=null,this.loadedFileSize=e.byteLength;let t=performance.now();this.doc=j(e),this.parseTime=performance.now()-t,this.onDocumentLoaded()}clearDocument(){this.guardDestroyed(),++this.loadGeneration,this.doc=null,this.selectedEntityIndex=-1,this.spatialIndex.clear(),U(),this.layerManager.clear(),this.measureTool.deactivate(),this.requestRender()}onDocumentLoaded(){if(!this.doc)return;this.layerManager.setLayers(this.doc.layers);let e=performance.now();this.spatialIndex.build(this.doc.entities,this.doc),Xe(Ye(this.doc)),this.spatialIndexBuildTime=performance.now()-e,this.selectedEntityIndex=-1,this.measureTool.deactivate(),this.currentTool===`measure`&&this.measureTool.activate(),this.fitToView()}fitToView(){if(this.guardDestroyed(),!this.doc)return;let e=this.computeDocumentBounds();if(!e)return;let t=this.canvas.getBoundingClientRect();this.camera.setTransform(ke(t.width,t.height,e.minX,e.minY,e.maxX,e.maxY)),this.requestRender(),this.emitter.emit(`viewchange`,this.camera.getTransform())}zoomTo(e){this.guardDestroyed();let t=this.canvas.getBoundingClientRect(),n=t.width/2,r=t.height/2,i=e/this.camera.getTransform().scale;this.camera.zoom(n,r,i),this.requestRender(),this.emitter.emit(`viewchange`,this.camera.getTransform())}panTo(e,t){this.guardDestroyed();let n=this.canvas.getBoundingClientRect(),r=this.camera.getTransform(),i=e*r.scale+r.offsetX,a=-t*r.scale+r.offsetY,o=n.width/2-i,s=n.height/2-a;this.camera.pan(o,s),this.requestRender(),this.emitter.emit(`viewchange`,this.camera.getTransform())}getViewTransform(){return{...this.camera.getTransform()}}getZoomSpeed(){return this.options.zoomSpeed}getLayers(){return this.layerManager.getAllLayers()}setLayerVisible(e,t){this.guardDestroyed(),this.layerManager.setVisible(e,t),this.requestRender()}setLayerColor(e,t){this.guardDestroyed(),this.layerManager.setColorOverride(e,t),this.requestRender()}setTheme(e){this.guardDestroyed(),this.options.theme=e,this.requestRender()}getTheme(){return this.options.theme}setBackgroundColor(e){this.guardDestroyed(),this.options.backgroundColor=e,this.requestRender()}setTool(e){this.guardDestroyed(),this.currentTool===`measure`&&e!==`measure`&&this.measureTool.deactivate(),this.currentTool=e,this.canvas.style.cursor=this.getCursorForTool(e),e===`measure`&&this.measureTool.activate(),e!==`select`&&(this.selectedEntityIndex=-1),this.requestRender()}getTool(){return this.currentTool}getCursorForTool(e){switch(e){case`pan`:return`grab`;case`select`:return`crosshair`;case`measure`:return`crosshair`}}on(e,t){this.emitter.on(e,t)}off(e,t){this.emitter.off(e,t)}getDocument(){return this.doc}getEntities(){return this.doc?.entities??[]}resize(){this.renderer.updateSize(),this.requestRender()}destroy(){this.destroyed=!0,this.stopDebugLoop(),this.inputHandler.destroy(),this.resizeObserver.disconnect(),this.renderer.destroy(),this.emitter.removeAllListeners(),this.spatialIndex.clear(),U(),this.layerManager.clear(),this.workerManager?.terminate(),this.workerManager=null,this.doc=null}requestRender(){if(!this.destroyed){if(this.debugRafId){this.doRender();return}this.renderPending||(this.renderPending=!0,requestAnimationFrame(()=>{this.renderPending=!1,!this.destroyed&&this.doRender()}))}}doRender(){if(!this.doc){this.renderer.renderEmpty(this.options.theme);return}let e=this.camera.getTransform(),t=this.renderer.getWidth(),n=this.renderer.getHeight(),r=this.computeViewportBounds(e,t,n),i=this.spatialIndex.search(r.minX,r.minY,r.maxX,r.maxY),a=new Set;for(let e=0;e<i.length;e++)a.add(i[e].entityIndex);let o=performance.now(),s=this.renderer.render(this.doc,e,this.options.theme,this.layerManager.getVisibleLayerNames(),this.selectedEntityIndex,a,this.spatialIndex.getEntityBBoxes());this.lastFrameTime=performance.now()-o,this.lastRenderStats=s;let c=performance.now();for(c-this.lastDoRenderTime>=3&&this.frameTimestamps.push(c),this.lastDoRenderTime=c;this.frameTimestamps.length>0&&this.frameTimestamps[0]<c-1e3;)this.frameTimestamps.shift();if(this.currentTool===`measure`&&this.measureTool.state.phase!==`idle`&&Pt(this.renderer.getContext(),this.camera.getTransform(),this.measureTool,this.mouseScreenX,this.mouseScreenY,this.options.theme),this.debugEnabled){let e=this.renderer.getContext(),t=this.buildDebugStats();this.lastDebugStats=t,bt(e,t,this.options.theme,this.debugOptions,this.renderer.getWidth(),this.renderer.getHeight())}}setDebug(e){this.guardDestroyed(),typeof e==`boolean`?this.debugEnabled=e:(this.debugEnabled=!0,this.debugOptions=J(e)),this.debugEnabled?this.startDebugLoop():(this.stopDebugLoop(),this.requestRender())}startDebugLoop(){if(this.debugRafId)return;let e=()=>{if(!this.debugEnabled||this.destroyed){this.debugRafId=0;return}this.doRender(),this.debugRafId=requestAnimationFrame(e)};this.debugRafId=requestAnimationFrame(e)}stopDebugLoop(){this.debugRafId&&=(cancelAnimationFrame(this.debugRafId),0)}getDebugStats(){return this.debugEnabled?this.lastDebugStats:null}buildDebugStats(){let e=this.camera.getTransform(),t=this.renderer.getWidth(),n=this.renderer.getHeight(),r=this.computeViewportBounds(e,t,n);return{fps:this.frameTimestamps.length,frameTime:this.lastFrameTime,renderStats:this.lastRenderStats??{entitiesDrawn:0,entitiesSkipped:0,drawCalls:0,byType:{}},entityCount:this.doc?.entities.length??0,layerCount:this.doc?.layers.size??0,visibleLayerCount:this.layerManager.getVisibleLayerNames().size,blockCount:this.doc?.blocks.size??0,parseTime:this.parseTime,spatialIndexBuildTime:this.spatialIndexBuildTime,totalLoadTime:this.parseTime+this.spatialIndexBuildTime,zoom:e.scale,pixelSize:e.scale>0?1/e.scale:0,viewportBounds:r,fileName:this.loadedFileName,fileSize:this.loadedFileSize,dxfVersion:this.doc?.header.acadVersion??null}}computeViewportBounds(e,t,n){let[r,i]=P(e,0,n),[a,o]=P(e,t,0);return{minX:Math.min(r,a),minY:Math.min(i,o),maxX:Math.max(r,a),maxY:Math.max(i,o)}}handlePan(e,t){this.camera.pan(e,t),this.requestRender(),this.emitter.emit(`viewchange`,this.camera.getTransform())}handleZoom(e,t,n){this.camera.zoom(e,t,n),this.requestRender(),this.emitter.emit(`viewchange`,this.camera.getTransform())}handleClick(e,t){if(!this.doc)return;let n=this.camera.getTransform(),[r,i]=P(n,e,t);switch(this.currentTool){case`select`:this.handleSelect(r,i,e,t);break;case`measure`:{let e=Nt(r,i,this.doc.entities,this.spatialIndex,n.scale),t=e.length>0?e[0]:null,a=this.measureTool.handleClick(r,i,t);this.requestRender(),a&&this.emitter.emit(`measure`,a);break}}}handleMouseMove(e,t){if(this.mouseScreenX=e,this.mouseScreenY=t,this.currentTool===`measure`&&this.doc){let n=this.camera.getTransform(),[r,i]=P(n,e,t),a=Nt(r,i,this.doc.entities,this.spatialIndex,n.scale);this.measureTool.handleMove(a[0]??null),this.requestRender()}}handleSelect(e,t,n,r){if(!this.doc)return;let i=Et(e,t,this.doc.entities,this.spatialIndex,this.layerManager.getVisibleLayerNames(),this.camera.getTransform().scale);if(this.selectedEntityIndex=i,this.requestRender(),i>=0&&this.doc){let a=this.doc.entities[i];a&&this.emitter.emit(`select`,{entity:a,entityIndex:i,worldPoint:{x:e,y:t},screenPoint:{x:n,y:r}})}}computeDocumentBounds(){return this.doc?this.doc.header.extMin&&this.doc.header.extMax?{minX:this.doc.header.extMin.x,minY:this.doc.header.extMin.y,maxX:this.doc.header.extMax.x,maxY:this.doc.header.extMax.y}:Je(this.doc.entities):null}};export{Rt as CadViewer};