collabmd 0.1.55 → 0.1.56

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 (503) hide show
  1. package/README.md +1 -1
  2. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-cMeDxAEL.js → CodeMirrorEditor-UCMRAMCV-CW5HP9uy.js} +1 -1
  3. package/dist/client/assets/{Middleware-DUgFSleI.js → Middleware-DbxtuTyG.js} +1 -1
  4. package/dist/client/assets/{abnfDiagram-VCTEODGH-D2UdmYvj.js → abnfDiagram-VCTEODGH-DY5tILUg.js} +1 -1
  5. package/dist/client/assets/{abnfDiagram-YUKMZFIV-DbmU4Q-X.js → abnfDiagram-WEYOIA3C-BqtDVimc.js} +1 -1
  6. package/dist/client/assets/api-client-utils-DkW9xiiw.js +1 -0
  7. package/dist/client/assets/{ar-SA-5WIASEJP-Di7OimCN.js → ar-SA-5WIASEJP-DbGUC-Fx.js} +1 -1
  8. package/dist/client/assets/{arc-DgcGdgmL.js → arc-Y1ARJVZ4.js} +1 -1
  9. package/dist/client/assets/architecture-7GRP2DOG-DndzY1Hb.js +1 -0
  10. package/dist/client/assets/architecture-WOLXFQ4H-tER6YKVA.js +1 -0
  11. package/dist/client/assets/{architectureDiagram-5GKGNRK7-CSiUzzeN.js → architectureDiagram-5GKGNRK7-D_ZiDWLO.js} +2 -2
  12. package/dist/client/assets/{architectureDiagram-47P4ROYG-C7OjXK9S.js → architectureDiagram-ZHVYKT53-CCmYbVDm.js} +2 -2
  13. package/dist/client/assets/{az-AZ-V5EUQD6C-C19OGTT_.js → az-AZ-V5EUQD6C-qK0euR1T.js} +1 -1
  14. package/dist/client/assets/babel-BaOs8qJH.js +16 -0
  15. package/dist/client/assets/{bg-BG-EXASCMTR-BIt0xWyb.js → bg-BG-EXASCMTR-DHvN8nO_.js} +1 -1
  16. package/dist/client/assets/{blockDiagram-I7D4REHJ-sXfAgK2w.js → blockDiagram-I7D4REHJ-CeN7xDSG.js} +2 -2
  17. package/dist/client/assets/{blockDiagram-E7TT5TSB-DMG-YlZw.js → blockDiagram-RJAE7QA3-CsHpm8AL.js} +2 -2
  18. package/dist/client/assets/{bn-BD-U4SYNFCO-CdNaPy4Q.js → bn-BD-U4SYNFCO-BKKqqvJ1.js} +1 -1
  19. package/dist/client/assets/{bn-IN-HKDJIITE-CdNaPy4Q.js → bn-IN-HKDJIITE-BKKqqvJ1.js} +1 -1
  20. package/dist/client/assets/{browser-BKLM0ThC-BCLQGPD6-CcMAHZXi.js → browser-BKLM0ThC-BCLQGPD6-B6uxmOe1.js} +1 -1
  21. package/dist/client/assets/{c4Diagram-7LVT6UL2-C88V_K-8.js → c4Diagram-7LVT6UL2-Bezmsa8k.js} +1 -1
  22. package/dist/client/assets/{c4Diagram-CRA5TL53-D3F9ElJv.js → c4Diagram-XDPPPE54-COKPOr_O.js} +1 -1
  23. package/dist/client/assets/{ca-ES-2KGUU5XB-C9t-c0cH.js → ca-ES-2KGUU5XB-CYClUOgC.js} +1 -1
  24. package/dist/client/assets/canvasEditor-CWbY0cMf.js +1 -0
  25. package/dist/client/assets/channel-COwKkfba.js +1 -0
  26. package/dist/client/assets/{chunk-24IY7LWP-flnn6SWX.js → chunk-24IY7LWP-DUl0BbtV.js} +1 -1
  27. package/dist/client/assets/chunk-2E4U76K2-CPmbCsOa.js +1 -0
  28. package/dist/client/assets/{chunk-AW2ZBBNX-DL0KGAdi.js → chunk-2E7WHVMD-CnfGYKwC.js} +1 -1
  29. package/dist/client/assets/chunk-2ZTRR5NV-CowhtTwB.js +2 -0
  30. package/dist/client/assets/{chunk-3M4EKCLJ-D-sZGCtO.js → chunk-3M4EKCLJ-BeG5ZU4c.js} +1 -1
  31. package/dist/client/assets/{chunk-3Z5EZCMW-Yx4Q5AcN.js → chunk-3Z5EZCMW-DQ1fwqmG.js} +1 -1
  32. package/dist/client/assets/{chunk-HTAEGDNF-C0PA_N-c.js → chunk-4EMNKR2T-B97vb0rp.js} +1 -1
  33. package/dist/client/assets/{chunk-4HAMMTFA-CQy6Skzw.js → chunk-4HAMMTFA-B3s0XvP_.js} +1 -1
  34. package/dist/client/assets/{chunk-4S7OKTRW-BpUW13a3.js → chunk-4S7OKTRW-DIpJGzf1.js} +1 -1
  35. package/dist/client/assets/{chunk-53FOQ5SW-5lPdGYP4.js → chunk-53FOQ5SW-C3TQxbLr.js} +1 -1
  36. package/dist/client/assets/{chunk-7TKQ45FW-rA2u-WUl.js → chunk-55XCU76K-CZBj2eVM.js} +1 -1
  37. package/dist/client/assets/{chunk-5V3GS4D5-BR7kgIgJ.js → chunk-5V3GS4D5-CD51GF-u.js} +1 -1
  38. package/dist/client/assets/{chunk-6AZGARVD-CnZDr4Cj.js → chunk-6AZGARVD-BD9EvFmU.js} +1 -1
  39. package/dist/client/assets/{chunk-6EIED4P4-Bp8dpTvX.js → chunk-6EIED4P4-CZFyd-Ct.js} +1 -1
  40. package/dist/client/assets/{chunk-6K3QC6MW-DGVRzL6v.js → chunk-6K3QC6MW-BJWmnHdF.js} +1 -1
  41. package/dist/client/assets/{chunk-6TQVIW2G-DgBX-Pv0.js → chunk-6TQVIW2G-DaBcb454.js} +1 -1
  42. package/dist/client/assets/chunk-747NJXEK-D08Z0c6r.js +2 -0
  43. package/dist/client/assets/{chunk-75Z2AOVW-BRdhvVTZ.js → chunk-75Z2AOVW-DLVzmKuL.js} +1 -1
  44. package/dist/client/assets/{chunk-3YJQHVM4-Ctp__8EK.js → chunk-7S6XSTFO-CXBGoJ7Z.js} +1 -1
  45. package/dist/client/assets/{chunk-E2ZNV5FY-D_07zfWd.js → chunk-AQDTSKZB-BpOOnFv4.js} +1 -1
  46. package/dist/client/assets/chunk-BP2KR52E-yBDJ_0ib.js +2 -0
  47. package/dist/client/assets/{chunk-CLGD4ZFX-DJiSE0gD.js → chunk-CLGD4ZFX-BBNA_mHW.js} +1 -1
  48. package/dist/client/assets/{chunk-VPRB5NB3-BqaJfj_v.js → chunk-DSNLSHJZ-DkAaVKkN.js} +2 -2
  49. package/dist/client/assets/{chunk-DU6HZSFF-C-18UZkS.js → chunk-DU6HZSFF-Dz0Q7VKE.js} +2 -2
  50. package/dist/client/assets/{chunk-SVEVUXB4-BnM-LXop.js → chunk-EJLWFMJV-CxNRZ5Ez.js} +1 -1
  51. package/dist/client/assets/{chunk-F27PBJKO-_beIJos4.js → chunk-F27PBJKO-BziR3pku.js} +1 -1
  52. package/dist/client/assets/chunk-F6S3BTY2-Dw9FK6Vq.js +2 -0
  53. package/dist/client/assets/chunk-FBWCRPUE-PUG6Mjdg.js +12 -0
  54. package/dist/client/assets/{chunk-FOHPRMQF-DzxwRta7.js → chunk-FOHPRMQF-COOliuUh.js} +8 -8
  55. package/dist/client/assets/{chunk-GMAD6QVW-DnZH7DxV.js → chunk-GMAD6QVW-B6zS4VJx.js} +1 -1
  56. package/dist/client/assets/{chunk-GVQU2GXP-B0Vm415C.js → chunk-GVQU2GXP-BA8Vt-19.js} +1 -1
  57. package/dist/client/assets/chunk-HAGFOTED-miSk6HXc.js +62 -0
  58. package/dist/client/assets/chunk-HNE4Q36P-BTbX-t8_.js +1 -0
  59. package/dist/client/assets/{chunk-I5DQTOEV-B98XA8VK.js → chunk-I5DQTOEV-qgbr-MbI.js} +1 -1
  60. package/dist/client/assets/{chunk-ICYGCRZG-D97UeqJs.js → chunk-ICYGCRZG-Dv6Hl9ds.js} +1 -1
  61. package/dist/client/assets/{chunk-IH6LHLGP-CvXe34hB.js → chunk-IH6LHLGP-DCTJcBuf.js} +1 -1
  62. package/dist/client/assets/{chunk-IMKFNOWR-DoO8IHzF.js → chunk-IMKFNOWR-DN2Mwt1n.js} +1 -1
  63. package/dist/client/assets/{chunk-KI3K4JFJ-D5XCPRZv.js → chunk-KI3K4JFJ-Hb_e7W2X.js} +1 -1
  64. package/dist/client/assets/{chunk-KPI5JJXK-B2ld5-w4.js → chunk-KPI5JJXK-BoDlpdVM.js} +1 -1
  65. package/dist/client/assets/{chunk-L3NEJ4N5-CvHossEU.js → chunk-L3NEJ4N5-M6XySblQ.js} +1 -1
  66. package/dist/client/assets/{chunk-LNGE3PJU-5nWSl6jJ.js → chunk-LNGE3PJU-CxdyKuxt.js} +4 -4
  67. package/dist/client/assets/{chunk-LNGE3PJU-5-SxdO55.js → chunk-LNGE3PJU-DRjopGY8.js} +4 -4
  68. package/dist/client/assets/{chunk-NGNAAXSQ-DqoPQk1a.js → chunk-NGNAAXSQ-Bw6tHVuc.js} +6 -6
  69. package/dist/client/assets/{chunk-EU5HNXII-CETVNUXF.js → chunk-NQOKRVIF-B_sOt25u.js} +1 -1
  70. package/dist/client/assets/chunk-NZIJZ2A6-CmC5bqJr.js +42 -0
  71. package/dist/client/assets/{chunk-OD3NTWWA-Dz9nCUGX.js → chunk-OD3NTWWA-D7wmrqo1.js} +1 -1
  72. package/dist/client/assets/{chunk-OSK3NFVY-C3JOcBao.js → chunk-OSK3NFVY-DJyrXrea.js} +1 -1
  73. package/dist/client/assets/chunk-OUJLGHUK-DIWqBvm0.js +2 -0
  74. package/dist/client/assets/chunk-OYAV6JZA-kXOh375k.js +1 -0
  75. package/dist/client/assets/{chunk-P2QGCYS3-Bfo8qS8r.js → chunk-P2QGCYS3-DejntbnV.js} +1 -1
  76. package/dist/client/assets/{chunk-POPQ4Y6H-sv6rCftH.js → chunk-POPQ4Y6H-D3VayDzJ.js} +1 -1
  77. package/dist/client/assets/{chunk-PWAF6VOD-B-AT-L2H.js → chunk-PWAF6VOD-CmxcnYFJ.js} +1 -1
  78. package/dist/client/assets/{chunk-QNH66VMT-Cb9xxTwQ.js → chunk-QNH66VMT-De2vWRUE.js} +1 -1
  79. package/dist/client/assets/{chunk-SHT3W25Y-C1lu518T.js → chunk-SHT3W25Y-SAi_Zk5G.js} +1 -1
  80. package/dist/client/assets/{chunk-SRAX5OIU-KFQikY-4.js → chunk-SRAX5OIU-wzfotNc-.js} +1 -1
  81. package/dist/client/assets/{chunk-SVP7TREG-CKqt0syj.js → chunk-SVP7TREG-BtK2J628.js} +1 -1
  82. package/dist/client/assets/{chunk-TICWLB2K-D2ZnWAfF.js → chunk-TICWLB2K-wmAorf_a.js} +1 -1
  83. package/dist/client/assets/{chunk-TLUHSLCS-BMIhqv1X.js → chunk-TLUHSLCS-DA3Sq1kc.js} +1 -1
  84. package/dist/client/assets/{chunk-TPMEZKFX-DIPHIqGb.js → chunk-TPMEZKFX-CarinQak.js} +1 -1
  85. package/dist/client/assets/{chunk-4EA7E6EY-bU4wRJot.js → chunk-UHW7PFBP-ClLfHtva.js} +1 -1
  86. package/dist/client/assets/{chunk-UY3FDG6J-DqSM_0FB.js → chunk-UY3FDG6J-BT57Gakr.js} +1 -1
  87. package/dist/client/assets/{chunk-VPELOWWC-DXayM28-.js → chunk-VPELOWWC-Dk0xIrB-.js} +1 -1
  88. package/dist/client/assets/{chunk-KQW6MTUR-OQ4MyMr_.js → chunk-VQ5W62QI-CxUPWJRX.js} +1 -1
  89. package/dist/client/assets/{chunk-VTWWFHGB-SZnJiyWY.js → chunk-VTWWFHGB-BZsdnDPL.js} +1 -1
  90. package/dist/client/assets/{chunk-VZTHESGH-eHyXmK8W.js → chunk-VZTHESGH-D6CHzqGr.js} +1 -1
  91. package/dist/client/assets/chunk-WQQL4CDK-BiuwKtd-.js +10 -0
  92. package/dist/client/assets/{chunk-X3CZISLH-DwWpRaN8.js → chunk-X3CZISLH-Bwnh_YJ7.js} +1 -1
  93. package/dist/client/assets/{chunk-X3CZISLH-BixgQztF.js → chunk-X3CZISLH-DayjKu55.js} +1 -1
  94. package/dist/client/assets/{chunk-YK26KJH5-DVy3MGMd.js → chunk-XHIXRSVI-C0fC7dJN.js} +1 -1
  95. package/dist/client/assets/{chunk-XXDRQBXY-C7hQHDmQ.js → chunk-XXDRQBXY-BxVnmMBx.js} +1 -1
  96. package/dist/client/assets/{chunk-XXDRQBXY-CdRN9Akd.js → chunk-XXDRQBXY-DBb3y0NH.js} +1 -1
  97. package/dist/client/assets/{chunk-XHIXRSVI-BSN7JlfK.js → chunk-YK26KJH5-ywVSJDLS.js} +1 -1
  98. package/dist/client/assets/{chunk-HJ2JQQFS-DQX7RePR.js → chunk-YZO67HFG-Bg5cZX5R.js} +1 -1
  99. package/dist/client/assets/{chunk-Z5NKEFVG-q6fHH75m.js → chunk-Z5NKEFVG-BPqw37Lj.js} +3 -3
  100. package/dist/client/assets/{chunk-DBDB3WZW-CXleNlok.js → chunk-ZAUX2LTX-Yte1ozQc.js} +1 -1
  101. package/dist/client/assets/chunk-ZCHMQSOR-B3FSat8d.js +1 -0
  102. package/dist/client/assets/chunk-ZO67DCNQ-DnpDWW4I.js +2 -0
  103. package/dist/client/assets/classDiagram-ZZMXUADV-CLl-Ahxw.js +1 -0
  104. package/dist/client/assets/{classDiagram-v2-K4WV4PDN-eaadfJDB.js → classDiagram-v2-4MYWR3UA-rPd2Vhml.js} +1 -1
  105. package/dist/client/assets/classDiagram-v2-VYDZK3BY-CLl-Ahxw.js +1 -0
  106. package/dist/client/assets/{clike-D_6L3tnO.js → clike-xvONpD0Z.js} +1 -1
  107. package/dist/client/assets/{clone-C1hp9FUh.js → clone-BoYpPplK.js} +1 -1
  108. package/dist/client/assets/{comment-markdown-renderer-CpBKaj7H.js → comment-markdown-renderer-a1B3HT_T.js} +1 -1
  109. package/dist/client/assets/{comment-thread-store-DUQsWtnu.js → comment-thread-store-da3_1rfw.js} +1 -1
  110. package/dist/client/assets/{comment-threads-DnfkLVJA.js → comment-threads-mG1CkBKO.js} +1 -1
  111. package/dist/client/assets/{comment-ui-shared-D_pgPUti.js → comment-ui-shared-4bhpJQpv.js} +2 -2
  112. package/dist/client/assets/{cose-bilkent-JH36ORCC-Czr0rwGr.js → cose-bilkent-JH36ORCC-BMHIGaXC.js} +1 -1
  113. package/dist/client/assets/{cose-bilkent-JH36ORCC-DLmEf9HS.js → cose-bilkent-JH36ORCC-Chlyw-Nt.js} +1 -1
  114. package/dist/client/assets/crystal-Bl6YKCG_.js +1 -0
  115. package/dist/client/assets/{cs-CZ-VUCGPRML-BfCoYAgj.js → cs-CZ-VUCGPRML-KFMLw537.js} +1 -1
  116. package/dist/client/assets/cynefin-EF2NZ3EQ-CwzF3ccb.js +1 -0
  117. package/dist/client/assets/cynefin-OW5HDTMX-CeLVR4kL.js +1 -0
  118. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-D2rFQG67.js → cynefinDiagram-5FMLGOSQ-No5A0--Q.js} +1 -1
  119. package/dist/client/assets/{cynefinDiagram-3GCD6N5R-DjpAsBHC.js → cynefinDiagram-WF24UDRP-BvwG2vI4.js} +1 -1
  120. package/dist/client/assets/cytoscape-cose-bilkent-iiiP-uiT.js +1 -0
  121. package/dist/client/assets/cytoscape-fcose-CiCTciSr.js +1 -0
  122. package/dist/client/assets/cytoscape.esm-CCmQRb78.js +321 -0
  123. package/dist/client/assets/{da-DK-NNDP2IVP-DBw9ZNTR.js → da-DK-NNDP2IVP-BpM-jMGR.js} +1 -1
  124. package/dist/client/assets/dagre-D7JM2Yhv.js +1 -0
  125. package/dist/client/assets/dagre-GXQ25YYZ-B0VZWLr5.js +4 -0
  126. package/dist/client/assets/dagre-NK4GIZVX-DoXdmyVb.js +4 -0
  127. package/dist/client/assets/{de-DE-WBQ3DQLR-DYW18Vsr.js → de-CH-I7RAVIZN-BNkaUG5V.js} +1 -1
  128. package/dist/client/assets/{de-CH-I7RAVIZN-DYW18Vsr.js → de-DE-WBQ3DQLR-BNkaUG5V.js} +1 -1
  129. package/dist/client/assets/{diagram-OVF4WLC6-D8_escYE.js → diagram-CBK3MWTC-hfExzGJR.js} +1 -1
  130. package/dist/client/assets/{diagram-UMYRVEAY-Djf7WDjZ.js → diagram-I5XIIV2D-Diz84D6I.js} +1 -1
  131. package/dist/client/assets/{diagram-PFPMY2P6-B1izZfrN.js → diagram-ODIL2UCW-lVgTk1r8.js} +2 -2
  132. package/dist/client/assets/{diagram-ZIFT7M5P-BUUK0oNw.js → diagram-PFBEJUXE-Dm-wXUUU.js} +1 -1
  133. package/dist/client/assets/{diagram-YEKJPTXX-B40bP3Yr.js → diagram-RJA3I4VV-Bv4ZAy4v.js} +1 -1
  134. package/dist/client/assets/{diagram-S7CK7UJ4-BzicH2t-.js → diagram-S7CK7UJ4-ClAT_J6s.js} +2 -2
  135. package/dist/client/assets/diagram-TYUNFSNR-CN-Xc6z9.js +200 -0
  136. package/dist/client/assets/{diagram-UQ7AKVKN-DqX4zTtr.js → diagram-UQ7AKVKN-DJ6uTWCE.js} +1 -1
  137. package/dist/client/assets/{diagram-VSXAHHWV-DnVbfI4Y.js → diagram-VSXAHHWV-C2k4OYGw.js} +1 -1
  138. package/dist/client/assets/{diagram-VX7I27RA-D-Dj0TQC.js → diagram-VX7I27RA-CLX2KoMs.js} +1 -1
  139. package/dist/client/assets/{diagram-Z3DM3KII-_iT7Uz5p.js → diagram-Z3DM3KII-BZcZUF57.js} +1 -1
  140. package/dist/client/assets/{direct-engine-DVLMOJWp-DWtWIifK.js → direct-engine-DVLMOJWp-C_tInsJx.js} +1 -1
  141. package/dist/client/assets/dist-7kwQLW_E.js +1 -0
  142. package/dist/client/assets/dist-B-G-pifG.js +11 -0
  143. package/dist/client/assets/dist-B0vhBQTT.js +13 -0
  144. package/dist/client/assets/dist-BBVAlyPS.js +1 -0
  145. package/dist/client/assets/dist-BGDa8poZ.js +1 -0
  146. package/dist/client/assets/{dist-CqkAY6Ot.js → dist-BJ93nZVx.js} +2 -2
  147. package/dist/client/assets/dist-BS271jN_.js +1 -0
  148. package/dist/client/assets/{dist-DRYFMufe.js → dist-BUgvZKJ6.js} +13 -13
  149. package/dist/client/assets/{dist-CSHJthAI.js → dist-BXomWIuA.js} +1 -1
  150. package/dist/client/assets/dist-BbrmdpPb.js +1 -0
  151. package/dist/client/assets/dist-BfvzS-2t.js +1 -0
  152. package/dist/client/assets/dist-Bt7Xaqyp.js +1 -0
  153. package/dist/client/assets/dist-BtOSkvqt.js +1 -0
  154. package/dist/client/assets/{dist-CKxETpSC.js → dist-C150LLfi.js} +6 -6
  155. package/dist/client/assets/dist-C6YYSeP1.js +9 -0
  156. package/dist/client/assets/{dist-FUFeH5Cx.js → dist-CFzMlwAz.js} +1 -1
  157. package/dist/client/assets/dist-CH86sVcz.js +1 -0
  158. package/dist/client/assets/dist-CP97HJ4M.js +1 -0
  159. package/dist/client/assets/dist-CVDt4G0T.js +1 -0
  160. package/dist/client/assets/{dist-C2niyEh0.js → dist-CbwTIhZ4.js} +1 -1
  161. package/dist/client/assets/dist-CfwwN8_Y.js +1 -0
  162. package/dist/client/assets/{dist-B_J_HbC0.js → dist-CumnGVmJ.js} +1 -1
  163. package/dist/client/assets/dist-CvwwJhwr.js +1 -0
  164. package/dist/client/assets/{dist-It70ktCU.js → dist-D-detfUV.js} +1 -1
  165. package/dist/client/assets/dist-DCaysCNp.js +1 -0
  166. package/dist/client/assets/{dist-CHUI56fT.js → dist-DCgncsfc.js} +3 -3
  167. package/dist/client/assets/dist-DFWn8cbH.js +1 -0
  168. package/dist/client/assets/dist-DKBDZ7Fw.js +1 -0
  169. package/dist/client/assets/{dist-BXXPaoUV.js → dist-DUrzEppq.js} +1 -1
  170. package/dist/client/assets/dist-Db2OLA3a.js +1 -0
  171. package/dist/client/assets/dist-Dd0BffVR.js +1 -0
  172. package/dist/client/assets/dist-X-11q-Vc.js +1 -0
  173. package/dist/client/assets/dist-aNZ025fx.js +23 -0
  174. package/dist/client/assets/{dist-Amm5Pr1C.js → dist-ftwTHAfS.js} +1 -1
  175. package/dist/client/assets/{dist-Bl4yuUS9.js → dist-hiG7zUCa.js} +1 -1
  176. package/dist/client/assets/{document-formatter-DtXmKZcy.js → document-formatter-B_jrdFGJ.js} +1 -1
  177. package/dist/client/assets/{drawioEditor-DO6IOaJ1.js → drawioEditor-DhRXvyRT.js} +2 -2
  178. package/dist/client/assets/{duration-BiuFXtXd.js → duration-DPNtiFfE.js} +1 -1
  179. package/dist/client/assets/{dylan-BCDoL_-p.js → dylan-S7ucR4pR.js} +1 -1
  180. package/dist/client/assets/{ebnfDiagram-PWID7BFC-IemGPf9X.js → ebnfDiagram-PWID7BFC-B8zzvt1e.js} +1 -1
  181. package/dist/client/assets/{ebnfDiagram-VR2GEFS7-9fXqy1DI.js → ebnfDiagram-V4P3TTPT-PjRB23H_.js} +1 -1
  182. package/dist/client/assets/{editor-session-CPsqXY_A.js → editor-session-BnTvcvzz.js} +2 -2
  183. package/dist/client/assets/{el-GR-TYQHVGXW-Dx82YYAS.js → el-GR-TYQHVGXW-BHUJHVd3.js} +1 -1
  184. package/dist/client/assets/elk-QONTBCTQ-DknSb2FG.js +27 -0
  185. package/dist/client/assets/embedpdf-VVX-wFIh.js +1 -0
  186. package/dist/client/assets/{embedpdf-cl9qiF45-CLMxJTMP.js → embedpdf-cl9qiF45-Cv92w6Wn.js} +6 -6
  187. package/dist/client/assets/en-AUO4QW63-CgjNrgHv.js +1 -0
  188. package/dist/client/assets/{erDiagram-O2IAPWRE-Cdadm-HN.js → erDiagram-KYQIGQAA-BHguakEd.js} +1 -1
  189. package/dist/client/assets/{erDiagram-RLTQ6QDP-CGGmjm8t.js → erDiagram-RLTQ6QDP-YPD0-iRc.js} +1 -1
  190. package/dist/client/assets/{es-ES-JEUOREKJ-Rx0NUQDl.js → es-ES-JEUOREKJ-CeuoqqTN.js} +1 -1
  191. package/dist/client/assets/{esm-BzZ1JFVo.js → esm-nC3n5xMZ.js} +5 -5
  192. package/dist/client/assets/{estree-DGmLqopC.js → estree-Cw-tQG5d.js} +4 -4
  193. package/dist/client/assets/{eu-ES-SO5DEEAN-CDYm-BcK.js → eu-ES-SO5DEEAN-D_7bAcKh.js} +1 -1
  194. package/dist/client/assets/eventmodeling-K75KTNOO-BsPoof5R.js +1 -0
  195. package/dist/client/assets/eventmodeling-NTZA5JFV-Bwo1LIKP.js +1 -0
  196. package/dist/client/assets/{excalidraw-element-link-NQnskRkm.js → excalidraw-element-link-BduFAMXS.js} +1 -1
  197. package/dist/client/assets/{excalidraw-scene-DLlw4jyc.js → excalidraw-scene-DzfbvjqT.js} +1 -1
  198. package/dist/client/assets/excalidrawEditor-3jfVRVmE.js +9 -0
  199. package/dist/client/assets/export-page-BiB1AeMg.js +46 -0
  200. package/dist/client/assets/exportDocument-BwukVyB9.js +2 -0
  201. package/dist/client/assets/{fa-IR-I4JNTJHK-CFtHZqoT.js → fa-IR-I4JNTJHK-BeoSOVqB.js} +1 -1
  202. package/dist/client/assets/{fi-FI-REAEF6HQ-BIpjJqIb.js → fi-FI-REAEF6HQ-BqIp6GiK.js} +1 -1
  203. package/dist/client/assets/file-search-D2UfqaRv.js +1 -0
  204. package/dist/client/assets/flowDiagram-HODETNUW-CVKOAnD7.js +1 -0
  205. package/dist/client/assets/flowDiagram-IUGLLWBU-BjEyR0dW.js +1 -0
  206. package/dist/client/assets/{fr-FR-SUCL7J6B-DGAKE8jH.js → fr-FR-SUCL7J6B-Dl3EFjA3.js} +1 -1
  207. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-Duu4KnsU.js → ganttDiagram-EL5Y4UJY-CCUwTKb4.js} +1 -1
  208. package/dist/client/assets/{ganttDiagram-R7TSEDQI-BWy52pjn.js → ganttDiagram-R7GPNTJY-CXLqT-aU.js} +2 -2
  209. package/dist/client/assets/gitGraph-4MIJSDKK-CWZptYrG.js +1 -0
  210. package/dist/client/assets/gitGraph-VSP46ZUC-x2Q42NFN.js +1 -0
  211. package/dist/client/assets/{gitGraphDiagram-XJZIOB7I-DJwp9ilx.js → gitGraphDiagram-PDYL7XHY-BJ9CsrRo.js} +1 -1
  212. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-CaJ0vC1a.js → gitGraphDiagram-WWUBYQGX-OqdVjcEn.js} +1 -1
  213. package/dist/client/assets/{gl-ES-KHCSOGVH-DWKh0CMu.js → gl-ES-KHCSOGVH-DGHdzXnJ.js} +1 -1
  214. package/dist/client/assets/groovy-CUrWKPia.js +1 -0
  215. package/dist/client/assets/{he-IL-JYXVXV2Q-zqbcM-4g.js → he-IL-JYXVXV2Q-DP8F40TD.js} +1 -1
  216. package/dist/client/assets/{hi-IN-BU52H3BO-CY8v6eG9.js → hi-IN-BU52H3BO-B1huAT2Y.js} +1 -1
  217. package/dist/client/assets/{html-BryNQ_yx.js → html-Drt7kOJE.js} +2 -2
  218. package/dist/client/assets/{hu-HU-OWADXDQ3-CEl6Udfh.js → hu-HU-OWADXDQ3-87zhVnWy.js} +1 -1
  219. package/dist/client/assets/{id-ID-2WY7E4VX-CCAeQpPr.js → id-ID-2WY7E4VX-BdFs5w71.js} +1 -1
  220. package/dist/client/assets/image-V6E7PHAZ-DSZxKLH0.js +1 -0
  221. package/dist/client/assets/image-blob-reduce.esm-ZiL83eII.js +2 -0
  222. package/dist/client/assets/image-lightbox-controller-DH39QMBp.js +184 -0
  223. package/dist/client/assets/index-BebSD0ym.js +960 -0
  224. package/dist/client/assets/info-A6RAGUB7-D_xaPiSc.js +1 -0
  225. package/dist/client/assets/info-OHQRW6UA-CBi78irM.js +1 -0
  226. package/dist/client/assets/{infoDiagram-27XIBGKW-DBJh7QOu.js → infoDiagram-27XIBGKW-Ck9hyDJb.js} +1 -1
  227. package/dist/client/assets/{infoDiagram-5W2HQ5XZ-DmWsqJ0w.js → infoDiagram-MVDRKAX5-DcpftzUS.js} +1 -1
  228. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-CeEbSJem.js → ishikawaDiagram-5VMMS53U-CazBMMkQ.js} +2 -2
  229. package/dist/client/assets/{ishikawaDiagram-K3B6WC7H-DH1NI35G.js → ishikawaDiagram-HPEHV2GE-BG5PpI0A.js} +2 -2
  230. package/dist/client/assets/{it-IT-INVHSAJF-DytAgndh.js → it-IT-INVHSAJF-DnUnri32.js} +1 -1
  231. package/dist/client/assets/{ja-JP-JBNTKYP4-BflWlGhw.js → ja-JP-JBNTKYP4-DIs2dSob.js} +1 -1
  232. package/dist/client/assets/javascript-DZ4Qsoqy.js +1 -0
  233. package/dist/client/assets/javascript-lj9EKOz0.js +1 -0
  234. package/dist/client/assets/{journeyDiagram-3NMN7TZE-BoIEEr6U.js → journeyDiagram-3NMN7TZE-DJFGpA3F.js} +1 -1
  235. package/dist/client/assets/{journeyDiagram-COXZFDF6-CnHV2f9V.js → journeyDiagram-BOSHW7O7-CAdC3Sr9.js} +1 -1
  236. package/dist/client/assets/{jsx-runtime-DKj5X9O4.js → jsx-runtime-CldxteV5.js} +1 -1
  237. package/dist/client/assets/{kaa-TC3VIB7V-B-xtZfy0.js → kaa-TC3VIB7V-wP2hxPDI.js} +1 -1
  238. package/dist/client/assets/{kab-KAB-UOUDSQKM-BmO0O4Y4.js → kab-KAB-UOUDSQKM-CwUZUlMm.js} +1 -1
  239. package/dist/client/assets/{kanban-definition-P3RFRI5V-Cxvn5ZAG.js → kanban-definition-FNSA4HC5-DLzqpQsC.js} +1 -1
  240. package/dist/client/assets/{kanban-definition-UXKFOSKX-BY16Tgbr.js → kanban-definition-UXKFOSKX-R91H_Ua5.js} +1 -1
  241. package/dist/client/assets/katex-B_JcIwqj.js +257 -0
  242. package/dist/client/assets/{katex-ZlcWpGUi.js → katex-DJhrJSbw.js} +1 -1
  243. package/dist/client/assets/{kk-KZ-P5H2X7YS-CSQFB8IN.js → kk-KZ-P5H2X7YS-Q3XzFKqf.js} +1 -1
  244. package/dist/client/assets/{km-KH-IHMV2US7-BxrjuEzr.js → km-KH-IHMV2US7-CxtoNVOY.js} +1 -1
  245. package/dist/client/assets/{ko-KR-ZTMANIDF-BnNRXd5J.js → ko-KR-ZTMANIDF-CJeG69_5.js} +1 -1
  246. package/dist/client/assets/{ku-TR-GPJTRB5G-BZM7f2aT.js → ku-TR-GPJTRB5G-D4gY4ec8.js} +1 -1
  247. package/dist/client/assets/{line-DEbP8Ok6.js → line-CttJWsP1.js} +1 -1
  248. package/dist/client/assets/linear-DGppY5mt.js +1 -0
  249. package/dist/client/assets/{lobby-presence-DNNXcuwR.js → lobby-presence-DWGiwZgG.js} +1 -1
  250. package/dist/client/assets/{lt-LT-V3XDOK3P-MVQBOHmF.js → lt-LT-V3XDOK3P-DTiFqRKt.js} +1 -1
  251. package/dist/client/assets/{lv-LV-DVQ3FADO-CrenwAhS.js → lv-LV-DVQ3FADO-BDx0eM98.js} +1 -1
  252. package/dist/client/assets/{markdown-DU84620G.js → markdown-C7cnJl_Q.js} +11 -11
  253. package/dist/client/assets/markdown-headings-CHNl_tgP.js +41 -0
  254. package/dist/client/assets/markdown-it-DWMS_G3H.js +13 -0
  255. package/dist/client/assets/{markdown-math-B96cnrz1.js → markdown-math-CBhbNj1w.js} +8 -8
  256. package/dist/client/assets/{merge-CALoRt3l.js → merge-5Ig019a6.js} +1 -1
  257. package/dist/client/assets/{mermaid-parser.core-R-uwU5kf.js → mermaid-parser.core-B89UfKha.js} +1 -1
  258. package/dist/client/assets/{mermaid-parser.core-mE6t1qEO.js → mermaid-parser.core-Dns-W-xX.js} +1 -1
  259. package/dist/client/assets/{mermaid.core-D8Z6LN7O.js → mermaid.core-8OvaaBlM.js} +3 -3
  260. package/dist/client/assets/{mindmap-definition-LZFPQGKD-DVfFenfJ.js → mindmap-definition-6OY57UG3-0aQEcLTH.js} +11 -9
  261. package/dist/client/assets/{mindmap-definition-YA3MSWOX-DtiE80UJ.js → mindmap-definition-YA3MSWOX-CCSfi8SE.js} +1 -1
  262. package/dist/client/assets/{mr-IN-VZ6HH5FE-B-PHPglH.js → mr-IN-VZ6HH5FE-Cofn25fc.js} +1 -1
  263. package/dist/client/assets/{my-MM-XYKWHRK6-Be5sYp5q.js → my-MM-XYKWHRK6-lMTCoeax.js} +1 -1
  264. package/dist/client/assets/{nb-NO-UNO2GGZJ-BvSKGdja.js → nb-NO-UNO2GGZJ-CEFDplVi.js} +1 -1
  265. package/dist/client/assets/{nginx-8H7HVH4w.js → nginx-C-ORUuei.js} +1 -1
  266. package/dist/client/assets/{nl-NL-76EFHT4P-C2yNx1Cj.js → nl-NL-76EFHT4P-2WbCYdRT.js} +1 -1
  267. package/dist/client/assets/{nn-NO-CFKD7ABE-4NsqlDRP.js → nn-NO-CFKD7ABE-DfK-9yuu.js} +1 -1
  268. package/dist/client/assets/{ntriples-B9h1VB_g.js → ntriples-CzMBulkp.js} +1 -1
  269. package/dist/client/assets/{oc-FR-YBJTCJ3J-B4OTQsWW.js → oc-FR-YBJTCJ3J-BSWusGxV.js} +1 -1
  270. package/dist/client/assets/{pa-IN-SNOXSMRV-CKj_sOG7.js → pa-IN-SNOXSMRV-BYkNTWiO.js} +1 -1
  271. package/dist/client/assets/packet-AYTQ26CC-D6Y_lKZt.js +1 -0
  272. package/dist/client/assets/packet-JDAUHWVQ-DAR0r-Im.js +1 -0
  273. package/dist/client/assets/{pegDiagram-BGZESJAR-DxfvEcwv.js → pegDiagram-ECIUJNBX-VujrKWCK.js} +1 -1
  274. package/dist/client/assets/{pegDiagram-XKGWAZYB-CyozY-Kt.js → pegDiagram-XKGWAZYB-DTA3EjtF.js} +1 -1
  275. package/dist/client/assets/percentages-LWOC67ZH-BO-ZFv57.js +1 -0
  276. package/dist/client/assets/pica-CXv_OHDX.js +2 -0
  277. package/dist/client/assets/{pie-DzWLGKAD.js → pie-Ba_4rf3r.js} +1 -1
  278. package/dist/client/assets/pie-WAS4IAKB-DLhltotv.js +1 -0
  279. package/dist/client/assets/pie-XZMESJXO-5MOdYfI0.js +1 -0
  280. package/dist/client/assets/{pieDiagram-E7YTZNPT-BRdmTkDq.js → pieDiagram-E7YTZNPT-DBz-eVG3.js} +1 -1
  281. package/dist/client/assets/{pieDiagram-CAPJLFHJ-CRlMcrv3.js → pieDiagram-GNMPY74T-CjRzeDCN.js} +1 -1
  282. package/dist/client/assets/{pl-PL-BSY6YFZ3-CFuzA6L0.js → pl-PL-BSY6YFZ3-DQTYFenp.js} +1 -1
  283. package/dist/client/assets/{powershell-BcIto6Sf.js → powershell-D8WpQPaX.js} +1 -1
  284. package/dist/client/assets/preload-helper-khBccGFq.js +1 -0
  285. package/dist/client/assets/preview-diagram-utils-ByzpiwPu.js +3 -0
  286. package/dist/client/assets/preview-render-compiler-B_gyVIfk.js +3 -0
  287. package/dist/client/assets/preview-render-worker-DYGDgbKA.js +579 -0
  288. package/dist/client/assets/prod-BTPZlnru.js +1 -0
  289. package/dist/client/assets/prod-CUXkwl3E.js +144 -0
  290. package/dist/client/assets/{pt-BR-CZDV62R3-CkPMtyNx.js → pt-BR-CZDV62R3-qKOF4THL.js} +1 -1
  291. package/dist/client/assets/{pt-PT-JO57XJJW-CBSnfGtF.js → pt-PT-JO57XJJW-CVFFmqez.js} +1 -1
  292. package/dist/client/assets/pug-CGoiHVBP.js +1 -0
  293. package/dist/client/assets/purify.es-BP9p1Dbb.js +3 -0
  294. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-7QyPIXkF.js → quadrantDiagram-AXDQQJYC-DaTj4J-B.js} +1 -1
  295. package/dist/client/assets/{quadrantDiagram-GDMTTRAM-DE30uqTl.js → quadrantDiagram-D57K4MC3-Bvy8uMKb.js} +1 -1
  296. package/dist/client/assets/quick-switcher-controller-m2gikuD-.js +1 -0
  297. package/dist/client/assets/radar-ABXABTNO-hhs6i-b1.js +1 -0
  298. package/dist/client/assets/radar-RG4KPBEZ-B-2eETsZ.js +1 -0
  299. package/dist/client/assets/railroad-74A4TZTK-B18ef5-Z.js +1 -0
  300. package/dist/client/assets/railroad-I3PHUGI6-v8Mk380c.js +1 -0
  301. package/dist/client/assets/railroad-abnf-HS5TGJTU-CTQaqjqj.js +1 -0
  302. package/dist/client/assets/railroad-abnf-LNEFI6M7-C3t6jbSY.js +1 -0
  303. package/dist/client/assets/railroad-ebnf-DWYD2UWJ-BvF5fO2B.js +1 -0
  304. package/dist/client/assets/railroad-ebnf-LZEXJU2U-BU_P5mpS.js +1 -0
  305. package/dist/client/assets/railroad-peg-JR7BVNR7-B90veE1n.js +1 -0
  306. package/dist/client/assets/railroad-peg-WCYAUIDC-CQCPL33M.js +1 -0
  307. package/dist/client/assets/{railroadDiagram-O6MQD6OU-BPk3RS2D.js → railroadDiagram-O6MQD6OU-DJRswcTS.js} +1 -1
  308. package/dist/client/assets/{railroadDiagram-SM67HX2B-CZRXJ647.js → railroadDiagram-Y72NRBL7-BNjzJfAu.js} +1 -1
  309. package/dist/client/assets/{requirementDiagram-BXWQKSXE-BRwfym6z.js → requirementDiagram-BXWQKSXE-DsljP03a.js} +1 -1
  310. package/dist/client/assets/{requirementDiagram-X7JNWC4A-BofCuLJA.js → requirementDiagram-EQYSW5RA-BKm3hJ3g.js} +1 -1
  311. package/dist/client/assets/{ro-RO-UZ5ICYYN-BOuntc_r.js → ro-RO-UZ5ICYYN-BgFoGyRb.js} +1 -1
  312. package/dist/client/assets/rolldown-runtime-COiEfhsA.js +1 -0
  313. package/dist/client/assets/{ru-RU-AN7JPREC-D-ow3SNR.js → ru-RU-AN7JPREC-C1Q9hhMw.js} +1 -1
  314. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-D4LcrKpW.js → sankeyDiagram-P5KCCOFB-7e3snR42.js} +1 -1
  315. package/dist/client/assets/{sankeyDiagram-UM26HJRW-CLKMDbej.js → sankeyDiagram-SY24JHO5-X6282wPp.js} +1 -1
  316. package/dist/client/assets/{sequenceDiagram-ZO4K6R2Y-CDP_m6ma.js → sequenceDiagram-BLEHNHQU-BytEbBel.js} +4 -4
  317. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-DQjtv-Bs.js → sequenceDiagram-WJ2MYXX4-Fy1RHQht.js} +2 -2
  318. package/dist/client/assets/{si-LK-7CBLD6QQ-c91EepX0.js → si-LK-7CBLD6QQ-B0AJbYON.js} +1 -1
  319. package/dist/client/assets/{sk-SK-SWR6DKBI-D5vFMIL6.js → sk-SK-SWR6DKBI-BSd-r0Zi.js} +1 -1
  320. package/dist/client/assets/{sl-SI-QY5KCFGA-RZhwMpQL.js → sl-SI-QY5KCFGA-Dzrhm7-L.js} +1 -1
  321. package/dist/client/assets/src-C2pSFGeK.js +1 -0
  322. package/dist/client/assets/{src-D5mvpivG.js → src-GGgGZJfE.js} +2 -2
  323. package/dist/client/assets/{standalone-D_lg5NC9.js → standalone-YobQElH8.js} +3 -3
  324. package/dist/client/assets/{stateDiagram-D77RDMKH-DSMvV-kF.js → stateDiagram-D77RDMKH-CW2cSnDj.js} +1 -1
  325. package/dist/client/assets/{stateDiagram-v2-TBUQTH76-Dc5-FKzd.js → stateDiagram-v2-A6IESKWZ-DZU6pVog.js} +1 -1
  326. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-iqEUZMAD.js +1 -0
  327. package/dist/client/assets/subset-shared.chunk-CL3Oizwd.js +1 -0
  328. package/dist/client/assets/{subset-worker.chunk-CoaGye2U.js → subset-worker.chunk-BdPjfgp2.js} +1 -1
  329. package/dist/client/assets/{sv-SE-O3OFCY3J-DnS86_7q.js → sv-SE-O3OFCY3J-6NoVnLTE.js} +1 -1
  330. package/dist/client/assets/swimlanes-42K2YHIH-8FngRMNT.js +1 -0
  331. package/dist/client/assets/swimlanes-B3ENRKFQ-D6BYdY9J.js +1 -0
  332. package/dist/client/assets/swimlanesDiagram-AYQRV4AK-hRw-7uL-.js +8 -0
  333. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DvDPHOsc.js +8 -0
  334. package/dist/client/assets/{ta-IN-V6NHHU6Z-D5jy7_AE.js → ta-IN-V6NHHU6Z-MAwuBBtS.js} +1 -1
  335. package/dist/client/assets/{th-TH-WLSZUSBX-DHehoYR2.js → th-TH-WLSZUSBX-D--o8vzw.js} +1 -1
  336. package/dist/client/assets/{tiki-AK6FwT8q.js → tiki-CvUEFusT.js} +1 -1
  337. package/dist/client/assets/{timeline-definition-24CTP7MA-BvqCvSjy.js → timeline-definition-24CTP7MA-C_Q-Br6X.js} +1 -1
  338. package/dist/client/assets/{timeline-definition-YOQAKGHF-D2XWPSLs.js → timeline-definition-JXYKGLGB-7HLQ94MK.js} +1 -1
  339. package/dist/client/assets/{tr-TR-GUFYG22B-ClVaf8h1.js → tr-TR-GUFYG22B-Bd-NNmz1.js} +1 -1
  340. package/dist/client/assets/treeView-D4JQ5SDB-BR1FV1TU.js +1 -0
  341. package/dist/client/assets/treeView-Q6P3EWNA-3N1U2hq1.js +1 -0
  342. package/dist/client/assets/treemap-SAJKECNS-yO7fe4dH.js +1 -0
  343. package/dist/client/assets/treemap-WGGIJYW6-BFO1obBW.js +1 -0
  344. package/dist/client/assets/{uk-UA-K6SV5NFQ-BLTTtyNB.js → uk-UA-K6SV5NFQ-_OJVmMT9.js} +1 -1
  345. package/dist/client/assets/{usecaseDiagram-VIAY4XPW-CDe-IMjS.js → usecaseDiagram-WPOLBNNX-uIlXI205.js} +6 -6
  346. package/dist/client/assets/{uz-UZ-TVKTZO2G-Bm02Eg3D.js → uz-UZ-TVKTZO2G-BPXzC1bJ.js} +1 -1
  347. package/dist/client/assets/{vault-api-client-DrRW0QwO.js → vault-api-client-DORNT49K.js} +24 -6
  348. package/dist/client/assets/{vault-paths-BT-6nztu.js → vault-paths-R2qcfmE0.js} +1 -1
  349. package/dist/client/assets/{venn.esm-C5rDfA9t.js → venn.esm-BxwF8YNp.js} +1 -1
  350. package/dist/client/assets/{vennDiagram-4TSXK5OY-BW6Qp12d.js → vennDiagram-4TSXK5OY-Cl6f16-U.js} +1 -1
  351. package/dist/client/assets/{vennDiagram-BLWOH2XV-KxIPKpHi.js → vennDiagram-Q3Y3IDCW-DZFF_ntk.js} +1 -1
  352. package/dist/client/assets/{vi-VN-7FKFXJNO-CL3WPhmG.js → vi-VN-7FKFXJNO-CjP0avHF.js} +1 -1
  353. package/dist/client/assets/wardley-7MLQ67FV-CCVlnR9Q.js +1 -0
  354. package/dist/client/assets/wardley-WFR3VGLG-BuSMKsul.js +1 -0
  355. package/dist/client/assets/{wardleyDiagram-YMQ3BMBF-BNYqEy7M.js → wardleyDiagram-IVAIDKWA-bwMSFCgK.js} +1 -1
  356. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-BoCETVsK.js → wardleyDiagram-VM6X3IG4-BbU7rAxb.js} +1 -1
  357. package/dist/client/assets/{worker-engine-BCCrxWYm-1fphds7O.js → worker-engine-BCCrxWYm-BU5lrbSm.js} +1 -1
  358. package/dist/client/assets/workspace-sync-client-B7dmdJGR.js +1 -0
  359. package/dist/client/assets/{xychartDiagram-TAQBALBS-Sv6aaptV.js → xychartDiagram-4URNHDU4-AjWzA402.js} +1 -1
  360. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-eB5Fu9P7.js → xychartDiagram-S5SC5T6Z-C5L6jReS.js} +1 -1
  361. package/dist/client/assets/{yaml-BcZaqAz8.js → yaml-Breo7DWT.js} +4 -4
  362. package/dist/client/assets/{yjs-Jd9fna_Y.js → yjs-ZDLwhBUu.js} +1 -1
  363. package/dist/client/assets/{yjs-provider-reset-guard-Cqu0Z6xH.js → yjs-provider-reset-guard-D5pm5yx8.js} +1 -1
  364. package/dist/client/assets/{zh-CN-AOKVLNNK-DGidDH2b.js → zh-CN-AOKVLNNK-CU0vKHKs.js} +1 -1
  365. package/dist/client/assets/{zh-HK-CDKPF5DC-CRcNR3rk.js → zh-HK-CDKPF5DC-BBhn88ei.js} +1 -1
  366. package/dist/client/assets/{zh-TW-ZVGYESGW-C7Qji1y6.js → zh-TW-ZVGYESGW-od6h3pTc.js} +1 -1
  367. package/dist/client/canvas-editor.html +1 -1
  368. package/dist/client/drawio-editor.html +4 -4
  369. package/dist/client/excalidraw-editor.html +37 -37
  370. package/dist/client/export-document.html +2 -2
  371. package/dist/client/index.html +1 -1
  372. package/package.json +22 -22
  373. package/src/client/application/diagram-preview-export.js +2 -1
  374. package/src/client/application/mermaid-preview-hydrator.js +2 -1
  375. package/src/client/domain/excalidraw-scene.js +13 -11
  376. package/src/client/domain/mermaid-source.js +44 -0
  377. package/src/client/export/export-pipeline.js +7 -6
  378. package/src/client/infrastructure/webmcp-tool-registry.js +5 -8
  379. package/src/client/presentation/git-diff-view-controller.js +3 -3
  380. package/src/domain/excalidraw-room-codec.js +11 -10
  381. package/src/server/domain/collaboration/collaboration-room.js +92 -61
  382. package/src/server/infrastructure/persistence/sidecar-store.js +5 -1
  383. package/dist/client/assets/api-client-utils-C5ESDKMG.js +0 -1
  384. package/dist/client/assets/architecture-7GRP2DOG-BBwRXFv3.js +0 -1
  385. package/dist/client/assets/architecture-WOLXFQ4H-C0NxYiG7.js +0 -1
  386. package/dist/client/assets/babel-Bi_28hhi.js +0 -16
  387. package/dist/client/assets/canvasEditor-sBK7KfrD.js +0 -1
  388. package/dist/client/assets/channel-CgcHBnmr.js +0 -1
  389. package/dist/client/assets/chunk-2BW5OAIV-CNFO1U_e.js +0 -10
  390. package/dist/client/assets/chunk-2E4U76K2-DEnS5IbF.js +0 -1
  391. package/dist/client/assets/chunk-2ZTRR5NV-CnDP55cn.js +0 -2
  392. package/dist/client/assets/chunk-747NJXEK-Cur1aosP.js +0 -2
  393. package/dist/client/assets/chunk-BP2KR52E-DAQ1pzDV.js +0 -2
  394. package/dist/client/assets/chunk-F6S3BTY2-DVWKCAHp.js +0 -2
  395. package/dist/client/assets/chunk-FLFP27SU-CydzbSsY.js +0 -12
  396. package/dist/client/assets/chunk-FVRAUYC3-C7b9SJ81.js +0 -1
  397. package/dist/client/assets/chunk-H5A3YXKD-ChP7mNJq.js +0 -41
  398. package/dist/client/assets/chunk-NTY3LDVX-CVWLK_fh.js +0 -1
  399. package/dist/client/assets/chunk-OUJLGHUK-DA95-S9B.js +0 -2
  400. package/dist/client/assets/chunk-XC4XBNZT-D9oehSn8.js +0 -62
  401. package/dist/client/assets/chunk-Z6ETV63D-DOcrnz-P.js +0 -1
  402. package/dist/client/assets/chunk-ZO67DCNQ-BAOMIkLF.js +0 -2
  403. package/dist/client/assets/classDiagram-ZZMXUADV-BmETdFmC.js +0 -1
  404. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BmETdFmC.js +0 -1
  405. package/dist/client/assets/crystal-Bsdphhtm.js +0 -1
  406. package/dist/client/assets/cynefin-EF2NZ3EQ-DVkJeZ8i.js +0 -1
  407. package/dist/client/assets/cynefin-OW5HDTMX-CF3N9j1_.js +0 -1
  408. package/dist/client/assets/cytoscape-cose-bilkent-NdTYBUiT.js +0 -1
  409. package/dist/client/assets/cytoscape-fcose-DE9_QRG_.js +0 -1
  410. package/dist/client/assets/cytoscape.esm-EK2DW5Qr.js +0 -321
  411. package/dist/client/assets/dagre-C-rnJpZF.js +0 -1
  412. package/dist/client/assets/dagre-GXQ25YYZ-Cku9eia9.js +0 -4
  413. package/dist/client/assets/dagre-W4DXFKR2-DOMOIsPd.js +0 -4
  414. package/dist/client/assets/diagram-2UJZ2QOL-D8WvnEyx.js +0 -200
  415. package/dist/client/assets/dist-26Ce-5t4.js +0 -1
  416. package/dist/client/assets/dist-8MLNn-I6.js +0 -1
  417. package/dist/client/assets/dist-Bkb-_VdB.js +0 -1
  418. package/dist/client/assets/dist-C2CGvCPd.js +0 -1
  419. package/dist/client/assets/dist-CFCSUmJk.js +0 -1
  420. package/dist/client/assets/dist-CJh3Qrid.js +0 -13
  421. package/dist/client/assets/dist-CbKnZGN4.js +0 -1
  422. package/dist/client/assets/dist-Cik4RJXj.js +0 -1
  423. package/dist/client/assets/dist-D2ql2LCd.js +0 -1
  424. package/dist/client/assets/dist-D47MOYFN.js +0 -1
  425. package/dist/client/assets/dist-DBhUaexM.js +0 -1
  426. package/dist/client/assets/dist-DJux6Vc5.js +0 -1
  427. package/dist/client/assets/dist-DLNdMWPH.js +0 -1
  428. package/dist/client/assets/dist-DPJj-Y3l.js +0 -1
  429. package/dist/client/assets/dist-DTGcVSU8.js +0 -1
  430. package/dist/client/assets/dist-DlOxjzWi.js +0 -9
  431. package/dist/client/assets/dist-DogjjM_B.js +0 -1
  432. package/dist/client/assets/dist-Dyv_RvyB.js +0 -23
  433. package/dist/client/assets/dist-QMvcnJHf.js +0 -1
  434. package/dist/client/assets/dist-QN1K2czv.js +0 -11
  435. package/dist/client/assets/dist-W8ilOKl3.js +0 -1
  436. package/dist/client/assets/dist-_17-t9qP.js +0 -1
  437. package/dist/client/assets/dist-uE774WWs.js +0 -1
  438. package/dist/client/assets/elk-IJKZMXRS-DsbrbBYg.js +0 -27
  439. package/dist/client/assets/embedpdf-BfUI-3pv.js +0 -1
  440. package/dist/client/assets/en-7ZVUCEYH-C_VXKxxb.js +0 -1
  441. package/dist/client/assets/eventmodeling-K75KTNOO-BWBlZ5cR.js +0 -1
  442. package/dist/client/assets/eventmodeling-NTZA5JFV-CDy1bN6j.js +0 -1
  443. package/dist/client/assets/excalidrawEditor-W2lZ5Mej.js +0 -9
  444. package/dist/client/assets/export-page-Bomh9oEr.js +0 -46
  445. package/dist/client/assets/exportDocument-BFIOECJ3.js +0 -2
  446. package/dist/client/assets/file-search-Dk2O14Vw.js +0 -1
  447. package/dist/client/assets/flowDiagram-HODETNUW-DcVVYJUZ.js +0 -1
  448. package/dist/client/assets/flowDiagram-OXPTDLAJ-Dy6y46oF.js +0 -1
  449. package/dist/client/assets/gitGraph-4MIJSDKK-B-rpDYbz.js +0 -1
  450. package/dist/client/assets/gitGraph-VSP46ZUC-1499lQAI.js +0 -1
  451. package/dist/client/assets/groovy-CUpZ7dEl.js +0 -1
  452. package/dist/client/assets/image-6XY3GD3F-DCWbu6d4.js +0 -1
  453. package/dist/client/assets/image-blob-reduce.esm-BFq-Mx5V.js +0 -2
  454. package/dist/client/assets/image-lightbox-controller-DAcXEXxT.js +0 -184
  455. package/dist/client/assets/index-D3WGkxfI.js +0 -960
  456. package/dist/client/assets/info-A6RAGUB7-BlutK7BT.js +0 -1
  457. package/dist/client/assets/info-OHQRW6UA-BDFQOo4H.js +0 -1
  458. package/dist/client/assets/javascript-B9I2pbsP.js +0 -1
  459. package/dist/client/assets/javascript-DctB8BJo.js +0 -1
  460. package/dist/client/assets/katex-9NBMfU68.js +0 -257
  461. package/dist/client/assets/linear-DExL6ILt.js +0 -1
  462. package/dist/client/assets/markdown-headings-zYEUahfW.js +0 -41
  463. package/dist/client/assets/markdown-it-DpvIRaVq.js +0 -13
  464. package/dist/client/assets/packet-AYTQ26CC-DvbY8dI6.js +0 -1
  465. package/dist/client/assets/packet-JDAUHWVQ-DJ9K2MA4.js +0 -1
  466. package/dist/client/assets/percentages-LWOC67ZH-VhvllE7L.js +0 -1
  467. package/dist/client/assets/pica-BPrp-GK1.js +0 -2
  468. package/dist/client/assets/pie-WAS4IAKB-DWSm9SSD.js +0 -1
  469. package/dist/client/assets/pie-XZMESJXO-CQIQasY-.js +0 -1
  470. package/dist/client/assets/preload-helper-CYtfOYgs.js +0 -1
  471. package/dist/client/assets/preview-diagram-utils-txBCoW8d.js +0 -1
  472. package/dist/client/assets/preview-render-compiler-D_aJv7Ew.js +0 -3
  473. package/dist/client/assets/preview-render-worker-dFNyrVyB.js +0 -579
  474. package/dist/client/assets/prod-ItolaHmf.js +0 -145
  475. package/dist/client/assets/prod-rdly4JJQ.js +0 -1
  476. package/dist/client/assets/pug-CqqUmdG7.js +0 -1
  477. package/dist/client/assets/purify.es-go7v6Te-.js +0 -3
  478. package/dist/client/assets/quick-switcher-controller-DsK70I7K.js +0 -1
  479. package/dist/client/assets/radar-ABXABTNO-ByfpCXh9.js +0 -1
  480. package/dist/client/assets/radar-RG4KPBEZ-BfNQUEQy.js +0 -1
  481. package/dist/client/assets/railroad-74A4TZTK-BaQ6U6eJ.js +0 -1
  482. package/dist/client/assets/railroad-I3PHUGI6-CTUn9HhI.js +0 -1
  483. package/dist/client/assets/railroad-abnf-HS5TGJTU-BJ3KZw7J.js +0 -1
  484. package/dist/client/assets/railroad-abnf-LNEFI6M7-Ct-b-y0F.js +0 -1
  485. package/dist/client/assets/railroad-ebnf-DWYD2UWJ-BZMYMWOe.js +0 -1
  486. package/dist/client/assets/railroad-ebnf-LZEXJU2U-DA0sEq7w.js +0 -1
  487. package/dist/client/assets/railroad-peg-JR7BVNR7-Dj23PxYc.js +0 -1
  488. package/dist/client/assets/railroad-peg-WCYAUIDC-DCmlICzO.js +0 -1
  489. package/dist/client/assets/rolldown-runtime-Dd_uD5pT.js +0 -1
  490. package/dist/client/assets/src-XiVvaevx.js +0 -1
  491. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-ClmOOUsT.js +0 -1
  492. package/dist/client/assets/subset-shared.chunk-BXlA-9CO.js +0 -1
  493. package/dist/client/assets/swimlanes-42K2YHIH-BUz31lO3.js +0 -1
  494. package/dist/client/assets/swimlanes-N4OXWK64-Dd3dFdPD.js +0 -1
  495. package/dist/client/assets/swimlanesDiagram-K3J5GTZL-Bz9gFdls.js +0 -8
  496. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DoDs3zod.js +0 -8
  497. package/dist/client/assets/treeView-D4JQ5SDB-DcX7Bx0H.js +0 -1
  498. package/dist/client/assets/treeView-Q6P3EWNA-BvHOzbu9.js +0 -1
  499. package/dist/client/assets/treemap-SAJKECNS-BcCHmcAX.js +0 -1
  500. package/dist/client/assets/treemap-WGGIJYW6-oety7paS.js +0 -1
  501. package/dist/client/assets/wardley-7MLQ67FV-DOahSwbZ.js +0 -1
  502. package/dist/client/assets/wardley-WFR3VGLG-BdwDpX_I.js +0 -1
  503. package/dist/client/assets/workspace-sync-client-C_P9wtjf.js +0 -1
@@ -1,184 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./deferred-preview-B-RebLry.css"])))=>i.map(i=>d[i]);
2
- import{d as e,h as t,p as n,v as r}from"./file-kind-BGxTVHan.js";import{d as i,p as a}from"./vault-api-client-DrRW0QwO.js";import{a as o,l as s,o as c,r as l,s as u}from"./api-client-utils-C5ESDKMG.js";import{a as d,c as f,d as p,f as m,h,i as ee,l as te,m as ne,n as g,o as re,p as ie,r as ae,s as oe,t as se,u as _}from"./preview-diagram-utils-txBCoW8d.js";import{t as v}from"./preload-helper-CYtfOYgs.js";import{r as y,t as b}from"./vault-utils-Bct69Xw2.js";import{n as ce,r as x}from"./preview-render-profile-D652PAjA.js";import{a as S,i as C,r as w,s as T,t as E}from"./runtime-paths-qQGhzNx4.js";import{r as D}from"./drawio-room-yBUzk-vg.js";import{n as le}from"./excalidraw-element-link-NQnskRkm.js";var ue=Object.freeze({htmlLabels:!1,flowchart:{defaultRenderer:`dagre-wrapper`,htmlLabels:!1,useMaxWidth:!0},class:{defaultRenderer:`dagre-wrapper`,htmlLabels:!1,useMaxWidth:!0},startOnLoad:!1,theme:`default`}),de=/^\s*%%\{\s*(?:init|initialize)\s*:[\s\S]*?\}%%\s*\n?/gim,O=0;function fe(){return O+=1,`mermaid-export-${O.toString(36)}`}async function k(e){if(typeof e.toBlob==`function`){let t=await new Promise(t=>e.toBlob(t,`image/png`));if(t instanceof Blob)return t}return pe(e.toDataURL(`image/png`))}function pe(e){let[t=``,n=``]=String(e).split(`,`,2),r=t.match(/^data:([^;,]+)?/u)?.[1]||`application/octet-stream`;if(t.includes(`;base64`)){let e=atob(n),t=new Uint8Array(e.length);for(let n=0;n<e.length;n+=1)t[n]=e.charCodeAt(n);return new Blob([t],{type:r})}return new Blob([decodeURIComponent(n)],{type:r})}function me(e){let t=e.cloneNode(!0);if(!(t instanceof SVGSVGElement))throw Error(`Renderer returned invalid SVG`);t.style.removeProperty(`display`),t.style.removeProperty(`margin`),t.style.removeProperty(`max-width`),t.style.removeProperty(`height`),t.style.removeProperty(`width`),t.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`);let{width:n,height:r}=p(t);return t.setAttribute(`width`,String(Math.max(1,Math.ceil(n)))),t.setAttribute(`height`,String(Math.max(1,Math.ceil(r)))),t}function he(e,{padding:t=16}={}){let n=me(e);if(typeof e.getBBox!=`function`)return n;try{let r=e.getBBox();if(!r||r.width<=0||r.height<=0)return n;let i=Math.max(0,Number(t)||0),a=Math.ceil(r.width+i*2),o=Math.ceil(r.height+i*2),s=[Math.floor(r.x-i),Math.floor(r.y-i),a,o];return n.setAttribute(`viewBox`,s.join(` `)),n.setAttribute(`width`,String(a)),n.setAttribute(`height`,String(o)),n.setAttribute(`preserveAspectRatio`,`xMidYMid meet`),n}catch{return n}}function ge({currentFilePath:e=``,diagramKind:a=`diagram`,sourceLine:o=``,targetPath:s=``}={}){let c=i(s);if(c)return r(c)||`${a}-diagram`;let l=i(e),u=r(l)||`document`;return a===`mermaid`&&n(e)||a===`plantuml`&&t(e)?u:o?`${u}-${a}-L${o}`:`${u}-${a}`}function _e(e={}){let t=ge(e);return{baseName:t,pngFileName:`${t}.png`,svgFileName:`${t}.svg`}}function ve(e){let t=me(e);return ie(t)}function ye(e,t={}){return ie(he(e,t))}function be(e){let t=String(e??``).replace(de,``);if(t=`%%{init: ${JSON.stringify(ue)}}%%\n${t}`,/^\s*gantt\b/m.test(t)&&!/\btodayMarker\b/.test(t)){let e=t.split(`
3
- `),n=e.findIndex(e=>/^\s*gantt\b/.test(e));n!==-1&&(e.splice(n+1,0,` todayMarker off`),t=e.join(`
4
- `))}return t}async function A(e,t){if(!e?.initialize||!e?.run)throw Error(`Mermaid runtime is unavailable`);e.initialize(ue);let n=document.createElement(`div`);n.style.position=`fixed`,n.style.left=`-10000px`,n.style.top=`0`,n.style.width=`1200px`,n.style.visibility=`hidden`,n.style.pointerEvents=`none`,document.body.appendChild(n);try{let r=document.createElement(`div`);r.className=`mermaid mermaid-export-node`,r.id=fe(),r.textContent=be(t),n.appendChild(r),await e.run({nodes:[r]});let i=r.querySelector(`svg`);if(!(i instanceof SVGSVGElement))throw Error(`Mermaid export returned no SVG`);return ye(i,{padding:24})}finally{n.remove()}}async function xe(e){let t=m(e),n=await f(d(t)),r=document.createElement(`div`);r.innerHTML=t;let i=r.querySelector(`svg`),{width:a,height:o}=i?p(i):{height:n.naturalHeight||800,width:n.naturalWidth||1200},s=document.createElement(`canvas`);s.width=Math.max(1,Math.ceil(a)),s.height=Math.max(1,Math.ceil(o));let c=s.getContext(`2d`);if(!c)throw Error(`Canvas is unavailable`);return c.fillStyle=`#ffffff`,c.fillRect(0,0,s.width,s.height),c.drawImage(n,0,0,s.width,s.height),k(s)}async function Se(e){if(typeof ClipboardItem!=`function`||!navigator.clipboard?.write)throw Error(`Clipboard image copy is unavailable`);await navigator.clipboard.write([new ClipboardItem({[e.type||`image/png`]:e})])}function Ce(e){return`data-${e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}`}var we=class{constructor(e,{batchSize:t,datasetKeys:n,loadFileSource:r=null,filePathLabel:i,requestIdleRenderFn:a=s,cancelIdleRenderFn:o=l,intersectionObserverFactory:u=(e,t)=>new IntersectionObserver(e,t),isNearViewportFn:d=c,requestAnimationFrameFn:f=e=>requestAnimationFrame(e),shellClassName:p,sourceClassName:m}){this.renderer=e,this.batchSize=t,this.datasetKeys=n,this.loadFileSource=r,this.filePathLabel=i,this.requestIdleRenderFn=a,this.cancelIdleRenderFn=o,this.intersectionObserverFactory=u,this.isNearViewportFn=d,this.requestAnimationFrameFn=f,this.shellClassName=p,this.sourceClassName=m,this.shellSelector=`.${p}`,this.sourceSelector=`.${m}`,this.attributeNames=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,Ce(t)])),this.observer=null,this.idleId=null,this.pendingShells=[],this.hydrationInProgress=!1,this.hydrationToken=0,this.hydrationRenderVersion=null,this.instanceCounter=0,this.preservedShells=[],this.fileInflightRequests=new Map}destroy(){this.cancelHydration(),this.clearPreservedShells()}cancelHydration(){this.hydrationToken+=1,this.hydrationRenderVersion=null,this.observer&&=(this.observer.disconnect(),null),this.cancelIdleRenderFn(this.idleId),this.idleId=null,this.pendingShells=[],this.hydrationInProgress=!1}cancelPendingIdleWork(){this.cancelIdleRenderFn(this.idleId),this.idleId=null}clearPreservedShells(){this.preservedShells.forEach(({shell:e})=>{this.renderer.diagramChrome?.destroyShell?.(e)}),this.preservedShells.length=0}getPreviewShells(){let e=this.renderer.previewElement;if(!e)return[];let t=Array.from(e.querySelectorAll(this.shellSelector)),n=this.renderer.diagramChrome?.syncActiveShell?.();return n?.classList.contains(this.shellClassName)&&!t.includes(n)&&t.push(n),t}getPreservationIdentity(e){let t=e?.getAttribute?.(this.attributeNames.sourceLine);return t?`${this.shellClassName}:${t}`:null}isShellRenderable(e){return this.isShellHydrated(e)||e?.getAttribute?.(`data-diagram-output`)===`true`}isShellError(e){return e?.getAttribute?.(`data-diagram-state`)===`error`}hasPendingWork(){return this.hydrationInProgress||this.pendingShells.length>0}preserveHydratedShellsForCommit(){this.preservedShells.length=0,this.renderer.previewElement&&this.getPreviewShells().filter(e=>this.isShellRenderable(e)).forEach(e=>{let t=e.dataset[this.datasetKeys.key],n=e.querySelector(this.sourceSelector)?.textContent??``,r=e.dataset[this.datasetKeys.target]??``;t&&(n||r)&&(e.isConnected&&(this.renderer.diagramChrome?.captureShellViewState?.(e),e.remove()),this.preservedShells.push({key:t,identity:this.getPreservationIdentity(e),shell:e,source:n,target:r}))})}reconcileHydratedShells(){let e=this.renderer.previewElement;if(!e||this.preservedShells.length===0){this.clearPreservedShells();return}let t=!1;Array.from(e.querySelectorAll(`${this.shellSelector}[${this.attributeNames.key}]`)).forEach(e=>{let n=e.dataset[this.datasetKeys.key],r=n?this.preservedShells.findIndex(e=>e.key===n):-1;if(r===-1){let t=this.getPreservationIdentity(e);r=t?this.preservedShells.findIndex(e=>e.identity===t):-1}if(r===-1)return;let i=this.preservedShells[r],a=e.querySelector(this.sourceSelector)?.textContent??``,o=e.dataset[this.datasetKeys.target]??``,s=this.isShellRenderable(i.shell)&&a!==i.source&&!o;if(!ne({nextSource:a,nextTarget:o,preservedSource:i.source,preservedTarget:i.target})&&!s)return;this.syncPreservedShell(i.shell,e,{sourceChanged:s}),e.replaceWith(i.shell);let c=this.renderer.diagramChrome?.getShellViewState?.(i.shell),l=i.shell.querySelector(`.diagram-preview-frame`);c&&l&&(l.scrollLeft=c.scrollLeft??0,l.scrollTop=c.scrollTop??0),t||=i.shell.classList.contains(`is-maximized`),this.preservedShells.splice(r,1)}),this.preservedShells.forEach(({shell:e})=>{this.renderer.diagramChrome?.destroyShell?.(e)}),this.preservedShells.length=0,this.handleReconcile({restoredMaximizedShell:t})}handleReconcile(){}syncPreservedShell(e,t,{sourceChanged:n=!1}={}){h(e,t,this.attributeNames.sourceLine),h(e,t,this.attributeNames.sourceLineEnd),h(e,t,this.attributeNames.key),h(e,t,this.attributeNames.target),h(e,t,this.attributeNames.label),h(e,t,this.attributeNames.sourceHash),e.classList.add(this.shellClassName),this.removeDatasetValue(e,`queued`);let r=t.querySelector(this.sourceSelector),i=e.querySelector(this.sourceSelector);if(!i&&r&&(i=r.cloneNode(!0),e.prepend(i)),i&&r){let e=r.textContent??``;(e||!t.dataset[this.datasetKeys.target])&&(i.textContent=e),i.hidden=!0}if(n){this.markShellPending(e);return}if(this.isShellError(e)){e.dataset[this.datasetKeys.hydrated]=`true`;return}this.markShellHydrated(e)}getShellErrorCard(e){return e?.querySelector?.(`:scope > .diagram-preview-error-card`)??null}notifyShellLayoutChange(){this.renderer.onPreviewLayoutChange?.({renderVersion:this.renderer.activeRenderVersion})}clearShellErrorCard(e){e&&(this.getShellErrorCard(e)?.remove?.(),this.notifyShellLayoutChange())}getShellLabel(e){return e?.dataset?.[this.datasetKeys.label]||`${this.filePathLabel} diagram`}markShellRendered(e){e&&(e.setAttribute(`data-diagram-output`,`true`),e.removeAttribute(`data-diagram-state`),e.removeAttribute(`aria-busy`),this.clearShellErrorCard(e))}markShellPending(e){return this.isShellRenderable(e)?(this.removeDatasetValue(e,`hydrated`),e.setAttribute(`data-diagram-output`,`true`),e.setAttribute(`data-diagram-state`,`pending`),e.setAttribute(`aria-busy`,`true`),this.getShellErrorCard(e)&&this.clearShellErrorCard(e),!0):!1}markShellError(e,t){if(!this.isShellRenderable(e))return!1;let n=te(t);e.dataset[this.datasetKeys.hydrated]=`true`,e.setAttribute(`data-diagram-output`,`true`),e.setAttribute(`data-diagram-state`,`error`),e.removeAttribute(`aria-busy`),this.getShellErrorCard(e)?.remove?.();let r=this.shellClassName.replace(/-shell$/,``);return e.append(se({key:e.dataset[this.datasetKeys.key],kind:r,label:this.getShellLabel(e),message:n,subtitle:`Showing the last valid result.`})),this.notifyShellLayoutChange(),!0}clearShellOutput(e){this.removeDatasetValue(e,`hydrated`),e?.removeAttribute?.(`data-diagram-output`),e?.removeAttribute?.(`data-diagram-state`),e?.removeAttribute?.(`aria-busy`),this.clearShellErrorCard(e)}markPending(){this.cancelHydration(),this.getPreviewShells().filter(e=>this.isShellRenderable(e)).forEach(e=>{this.markShellPending(e)})}retryShell(e){e?.isConnected&&(this.removeDatasetValue(e,`hydrated`),this.markShellPending(e),this.enqueueShell(e,{prioritize:!0}))}isHydrationCurrent(e,t,n=this.hydrationToken){return!!(t?.isConnected&&n===this.hydrationToken&&(e==null||e===this.hydrationRenderVersion&&e===this.renderer.activeRenderVersion))}setupHydration(e){let t=this.renderer.previewElement,n=this.renderer.previewContainer;if(!t||!n)return 0;let r=Array.from(t.querySelectorAll(this.shellSelector));if(r.length===0)return 0;this.hydrationToken+=1;let i=this.hydrationToken;return this.hydrationRenderVersion=e,this.observer=this.intersectionObserverFactory(e=>{e.forEach(e=>{e.isIntersecting&&this.enqueueShell(e.target)})},{root:n,rootMargin:this.renderer.isLargeDocument?`180px 0px`:`420px 0px`}),r.forEach(e=>this.observer.observe(e)),this.requestAnimationFrameFn(()=>{this.isHydrationCurrent(e,t,i)&&(this.hydrateVisibleShells(),this.renderer.updateHydrationPhase())}),r.length}hydrateVisibleShells(){let e=this.renderer.previewElement,t=this.renderer.previewContainer;if(this.renderer.hydrationPaused||!e||!t)return;if(this.observer&&typeof IntersectionObserver<`u`){Array.from(e.querySelectorAll(this.shellSelector)).forEach(e=>{this.observer.observe(e)});return}let n=this.renderer.isLargeDocument?180:420;Array.from(e.querySelectorAll(this.shellSelector)).forEach(e=>{this.isNearViewportFn(e,t,n)&&this.enqueueShell(e,{prioritize:!0})})}enqueueShell(e,{prioritize:t=!1}={}){!e?.isConnected||this.isShellHydrated(e)||this.isShellQueued(e)||(e.dataset[this.datasetKeys.queued]=`true`,t?this.pendingShells.unshift(e):this.pendingShells.push(e),!this.renderer.hydrationPaused&&(this.renderer.updateHydrationPhase(),this.scheduleHydration()))}scheduleHydration(){this.renderer.hydrationPaused||this.hydrationInProgress||this.idleId!==null||(this.idleId=this.requestIdleRenderFn(()=>{this.idleId=null,this.flushHydrationQueue()},500))}async flushHydrationQueue(){if(this.renderer.hydrationPaused||this.hydrationInProgress)return;let e=this.hydrationToken,t=this.hydrationRenderVersion,n=[];for(;this.pendingShells.length>0&&n.length<this.batchSize;){let e=this.pendingShells.shift();e?.isConnected&&!this.isShellHydrated(e)&&(this.removeDatasetValue(e,`queued`),n.push(e))}if(n.length===0){this.renderer.updateHydrationPhase();return}this.hydrationInProgress=!0,this.renderer.setPhase(`hydrating`);let r;try{r=await this.prepareHydrationBatch(n)}catch(t){if(e!==this.hydrationToken)return;this.handlePrepareHydrationBatchError(n,t),this.hydrationInProgress=!1,this.renderer.updateHydrationPhase();return}for(let i of n){if(e!==this.hydrationToken)return;await this.hydrateShell(i,r,{hydrationToken:e,renderVersion:t})}e===this.hydrationToken&&(this.hydrationInProgress=!1,this.pendingShells.length>0&&this.scheduleHydration(),this.renderer.updateHydrationPhase())}async prepareHydrationBatch(){return null}handlePrepareHydrationBatchError(e,t){}async hydrateShell(){throw Error(`hydrateShell must be implemented by subclasses`)}markShellHydrated(e){this.markShellRendered(e),e.dataset[this.datasetKeys.hydrated]=`true`,e.dataset[this.datasetKeys.instanceId]=String(++this.instanceCounter)}isShellHydrated(e){return e?.dataset?.[this.datasetKeys.hydrated]===`true`}removeDatasetValue(e,t){let n=this.datasetKeys[t];n&&e&&(e.removeAttribute?.(this.attributeNames[t]),e.dataset&&delete e.dataset[n])}isShellQueued(e){return e?.dataset?.[this.datasetKeys.queued]===`true`}async fetchSource(e){let t=String(e??``).trim();if(!t)throw Error(`Missing ${this.filePathLabel} file path`);if(this.fileInflightRequests.has(t))return this.fileInflightRequests.get(t);if(typeof this.loadFileSource!=`function`)throw Error(`Missing ${this.filePathLabel} source loader`);let n=this.loadFileSource(t).finally(()=>{this.fileInflightRequests.delete(t)});return this.fileInflightRequests.set(t,n),n}};function Te(e){try{let t=document.createElement(`template`);t.innerHTML=String(e);let n=t.content?.querySelector?.(`svg`);if(n?.nodeName?.toLowerCase()===`svg`)return n}catch{}return null}var Ee=class extends we{constructor(e,{loadFileSource:t=null}={}){super(e,{batchSize:2,datasetKeys:{hydrated:`mermaidHydrated`,instanceId:`mermaidInstanceId`,key:`mermaidKey`,label:`mermaidLabel`,queued:`mermaidQueued`,sourceHash:`mermaidSourceHash`,sourceLine:`sourceLine`,sourceLineEnd:`sourceLineEnd`,target:`mermaidTarget`},filePathLabel:`Mermaid`,loadFileSource:t,shellClassName:`mermaid-shell`,sourceClassName:`mermaid-source`}),this.currentTheme=document.documentElement?.dataset.theme===`light`?`light`:`dark`,this.diagramChrome=e.diagramChrome,this.loader=null,this.runtime=null,this.renderCache=new Map}cancelHydration({preserveActiveShell:e=!1}={}){super.cancelHydration(),e||this.diagramChrome?.cancelActiveShell?.(`mermaid`)}applyTheme(e){if(e===this.currentTheme)return;this.currentTheme=e;let t=this.runtime;t&&(this.configureMermaid(t),this.resetHydratedShells())}configureMermaid(e){e.initialize({startOnLoad:!1,htmlLabels:!1,flowchart:{defaultRenderer:`dagre-wrapper`,htmlLabels:!1,useMaxWidth:!0},class:{defaultRenderer:`dagre-wrapper`,useMaxWidth:!0},theme:this.currentTheme===`dark`?`dark`:`default`,themeVariables:this.currentTheme===`dark`?{background:`#11161d`,clusterBkg:`#141a22`,edgeLabelBackground:`#11161d`,lineColor:`#9aa7b4`,mainBkg:`#171d26`,nodeBorder:`#303c4b`,primaryBorderColor:`#60a5fa`,primaryColor:`#172a45`,primaryTextColor:`#e6edf3`,secondaryColor:`#1c2530`,tertiaryColor:`#11161d`,titleColor:`#e6edf3`}:{}})}ensureMermaid(){return this.runtime?(this.configureMermaid(this.runtime),Promise.resolve(this.runtime)):(this.loader||=v(()=>import(`./mermaid.core-D8Z6LN7O.js`).then(e=>{let t=e?.default;if(!t)throw Error(`Mermaid runtime failed to initialize`);return this.runtime=t,this.configureMermaid(t),t}),[],import.meta.url).catch(e=>{throw this.loader=null,this.runtime=null,Error(e instanceof Error?e.message:`Failed to load Mermaid runtime`)}),this.loader)}handleReconcile({restoredMaximizedShell:e}){e&&document.body.classList.add(`mermaid-maximized-open`),this.diagramChrome?.syncActiveShell?.()}async prepareHydrationBatch(){return this.ensureMermaid()}handlePrepareHydrationBatchError(e,t){console.warn(`[preview] Mermaid runtime failed to load:`,t)}createRenderHost(){let e=document.createElement(`div`);return e.style.position=`fixed`,e.style.left=`-10000px`,e.style.top=`0`,e.style.width=`1200px`,e.style.visibility=`hidden`,e.style.pointerEvents=`none`,document.body.appendChild(e),e}async hydrateShell(e,t,{hydrationToken:n,renderVersion:r}={}){if(!t||!e?.isConnected||this.isShellHydrated(e)||!this.isHydrationCurrent(r,e,n))return;let i=e.querySelector(`.mermaid-source`);i||(i=document.createElement(`span`),i.className=`mermaid-source`,i.hidden=!0,e.appendChild(i));let a=i.textContent??``;try{if(!a.trim()&&e.dataset.mermaidTarget){if(a=await this.fetchSource(e.dataset.mermaidTarget),!e.isConnected)return;i.textContent=a}if(!a.trim())throw Error(e.dataset.mermaidTarget?`Mermaid file is empty`:`Mermaid source is empty`);if(!this.isHydrationCurrent(r,e,n))return;let o=a;a=this.prepareSource(a);let s=this.getRenderCacheKey(a);if(this.tryMountCachedDiagram(e,{hydrationToken:n,renderCacheKey:s,renderedSource:o,renderVersion:r}))return;e.querySelector(`.mermaid-placeholder-card`)?.remove();let c=document.createElement(`div`);c.className=`mermaid mermaid-render-node`;let l=e.getAttribute(`data-source-line`),u=e.getAttribute(`data-source-line-end`);l&&c.setAttribute(`data-source-line`,l),u&&c.setAttribute(`data-source-line-end`,u),c.textContent=a;let d=this.createRenderHost();try{d.appendChild(c);let{svg:i,bindFunctions:l}=await t.render(`mermaid-${crypto.randomUUID()}`,a,c);if(!this.isHydrationCurrent(r,e,n)||!c.isConnected||c.parentElement!==d)return;c.innerHTML=i,l?.(c),this.enhanceDiagram(e,c,o,s),this.markShellHydrated(e)}finally{d.remove()}}catch(t){if(console.warn(`[preview] Mermaid render failed:`,t),!this.isHydrationCurrent(r,e,n)||this.markShellError(e,t))return;if(this.diagramChrome?.destroyShell?.(e),e.querySelector(`:scope > .mermaid-toolbar`)?.remove(),e.querySelector(`:scope > .mermaid-frame`)?.remove(),e.querySelector(`:scope > .mermaid-render-node`)?.remove(),!e.querySelector(`.mermaid-placeholder-card`)){let n=e.dataset.mermaidKey||`mermaid`,r=te(t);i?.after(se({key:n,kind:`mermaid`,label:e.dataset.mermaidLabel||`Mermaid diagram`,message:r}))}}}prepareSource(e){let t=String(e??``);if(!/%%\{[\s\S]*?\binit\s*:/m.test(t)){let e=this.getPreviewInitConfig(t);e&&(t=`%%{init: ${JSON.stringify(e)}}%%\n${t}`)}if(!/^\s*gantt\b/m.test(t)||/\btodayMarker\b/.test(t))return t;let n=t.split(`
5
- `),r=n.findIndex(e=>/^\s*gantt\b/.test(e));return r===-1?t:(n.splice(r+1,0,` todayMarker off`),n.join(`
6
- `))}getPreviewInitConfig(e){return/^\s*stateDiagram(?:-v2)?\b/m.test(e)||/^\s*classDiagram\b/m.test(e)||/^\s*gantt\b/m.test(e)?{htmlLabels:!1}:null}resetHydratedShells(){let e=this.renderer.previewElement;if(!e)return;let t=Array.from(e.querySelectorAll(`.mermaid-shell[data-mermaid-hydrated="true"]`)),n=this.diagramChrome?.syncActiveShell?.();n?.classList?.contains(`mermaid-shell`)&&!t.includes(n)&&t.push(n),t.length!==0&&t.forEach(e=>{this.diagramChrome?.destroyShell?.(e),this.clearShellOutput(e),e.querySelector(`:scope > .mermaid-toolbar`)?.remove(),e.querySelector(`:scope > .mermaid-frame`)?.remove(),e.querySelector(`:scope > .mermaid-render-node`)?.remove(),e.querySelector(`.mermaid-placeholder-card`)||e.querySelector(`.mermaid-source`)?.after(g(e.dataset.mermaidKey||`mermaid`)),this.enqueueShell(e,{prioritize:!0})})}async renderExportSvgMarkup(e){let t=await this.ensureMermaid();try{return await A(t,e._diagramRenderedSource??e.querySelector(`.mermaid-source`)?.textContent??``)}finally{this.configureMermaid(t)}}enhanceDiagram(e,t,n=``,r=null){let i=t.querySelector(`svg`);if(!i){t.remove();return}let{width:a,height:o}=_(i);r&&this.storeRenderCache(r,i.outerHTML),t.remove(),this.mountDiagramSvg(e,i,{baseWidth:a,baseHeight:o,renderedSource:n})}mountDiagramSvg(e,t,{baseWidth:n,baseHeight:r,renderedSource:i=``}={}){this.diagramChrome.mount(e,{baseHeight:r,baseWidth:n,diagramElement:t,exportFileNames:()=>_e({currentFilePath:this.renderer.getSourceFilePath?.()??``,diagramKind:`mermaid`,sourceLine:e.getAttribute(`data-source-line`)||``,targetPath:e.dataset.mermaidTarget||``}),exportSvgMarkup:()=>this.renderExportSvgMarkup(e),kind:`mermaid`,sourceSelector:`.mermaid-source`}),e._diagramRenderedSource=i}tryMountCachedDiagram(e,{hydrationToken:t,renderCacheKey:n,renderedSource:r=``,renderVersion:i}={}){let a=this.renderCache.get(n)??null;if(!a)return!1;e.querySelector(`.mermaid-placeholder-card`)?.remove();let o=Te(a);if(this.isHydrationCurrent(i,e,t)&&o){let{width:t,height:n}=p(o);return this.mountDiagramSvg(e,o,{baseWidth:t,baseHeight:n,renderedSource:r}),this.markShellHydrated(e),!0}return this.renderCache.delete(n),!1}getRenderCacheKey(e){return`${this.currentTheme}\n${e}`}storeRenderCache(e,t){if(e&&t){for(this.renderCache.has(e)&&this.renderCache.delete(e);this.renderCache.size>=30;)this.renderCache.delete(this.renderCache.keys().next().value);this.renderCache.set(e,t)}}},j=30,De=class extends we{constructor(e,{loadFileSource:t=null,renderClient:n=null}={}){super(e,{batchSize:2,datasetKeys:{hydrated:`plantumlHydrated`,instanceId:`plantumlInstanceId`,key:`plantumlKey`,label:`plantumlLabel`,queued:`plantumlQueued`,sourceHash:`plantumlSourceHash`,sourceLine:`sourceLine`,sourceLineEnd:`sourceLineEnd`,target:`plantumlTarget`},filePathLabel:`PlantUML`,loadFileSource:t,shellClassName:`plantuml-shell`,sourceClassName:`plantuml-source`}),this.diagramChrome=e.diagramChrome,this.renderClient=n,this.svgCache=new Map,this.svgInflightRequests=new Map}cancelHydration({preserveActiveShell:e=!1}={}){super.cancelHydration(),e||this.diagramChrome?.cancelActiveShell?.(`plantuml`)}handleReconcile({restoredMaximizedShell:e}){e&&document.body.classList.add(`plantuml-maximized-open`),this.diagramChrome?.syncActiveShell?.()}async hydrateShell(e,t,{hydrationToken:n,renderVersion:r}={}){if(!e?.isConnected||this.isShellHydrated(e)||!this.isHydrationCurrent(r,e,n))return;let i=e.querySelector(`.plantuml-source`);i||(i=document.createElement(`span`),i.className=`plantuml-source`,i.hidden=!0,e.appendChild(i)),e.querySelector(`.plantuml-placeholder-card`)?.remove();try{let t=i.textContent??``;if(!t.trim()&&e.dataset.plantumlTarget){if(t=await this.fetchSource(e.dataset.plantumlTarget),!e.isConnected)return;i.textContent=t}if(!t.trim())throw Error(e.dataset.plantumlTarget?`PlantUML file is empty`:`PlantUML source is empty`);if(!this.isHydrationCurrent(r,e,n))return;let a=await this.fetchSvg(t);if(!this.isHydrationCurrent(r,e,n))return;this.enhanceDiagram(e,a),this.markShellHydrated(e)}catch(t){if(console.warn(`[preview] PlantUML render failed:`,t),!this.isHydrationCurrent(r,e,n)||this.markShellError(e,t))return;let a=e.dataset.plantumlKey||`plantuml`,o=te(t);e.querySelector(`:scope > .plantuml-toolbar`)?.remove(),e.querySelector(`:scope > .plantuml-frame`)?.remove(),e.querySelector(`.plantuml-placeholder-card`)||i?.after(se({key:a,kind:`plantuml`,label:e.dataset.plantumlLabel||`PlantUML diagram`,message:o}))}}async fetchSvg(e){let t=e;if(this.svgCache.has(t))return this.svgCache.get(t);if(this.svgInflightRequests.has(t))return this.svgInflightRequests.get(t);let n=this.renderClient.renderSvg(e).then(e=>{let n=m(e);for(this.svgCache.delete(t);this.svgCache.size>=j;)this.svgCache.delete(this.svgCache.keys().next().value);return this.svgCache.set(t,n),n}).finally(()=>{this.svgInflightRequests.delete(t)});return this.svgInflightRequests.set(t,n),n}resetShell(e,{clearCache:t=!1,message:n=`Renders server-side when visible`}={}){let r=e.querySelector(`.plantuml-source`)?.textContent??``;t&&r&&(this.svgCache.delete(r),this.svgInflightRequests.delete(r)),this.diagramChrome?.destroyShell?.(e),this.clearShellOutput(e),e.removeAttribute(`data-plantuml-instance-id`),e.removeAttribute(`data-plantuml-queued`),e.classList.remove(`is-maximized`),this.diagramChrome?.syncBodyMaximizedClasses?.(),e.querySelector(`:scope > .plantuml-toolbar`)?.remove(),e.querySelector(`:scope > .plantuml-frame`)?.remove(),e.querySelector(`.plantuml-placeholder-card`)||e.querySelector(`.plantuml-source`)?.after(ae(e.dataset.plantumlKey||`plantuml`,n))}enhanceDiagram(e,t){let n=document.createElement(`div`);n.innerHTML=t;let r=n.querySelector(`svg`);if(!r)throw Error(`Renderer returned invalid SVG`);let{width:i,height:a}=oe(r);this.diagramChrome.mount(e,{baseHeight:a,baseWidth:i,diagramElement:r,exportFileNames:()=>_e({currentFilePath:this.renderer.getSourceFilePath?.()??``,diagramKind:`plantuml`,sourceLine:e.getAttribute(`data-source-line`)||``,targetPath:e.dataset.plantumlTarget||``}),exportSvgMarkup:()=>ve(r),kind:`plantuml`,onReload:()=>{this.resetShell(e,{clearCache:!0,message:`Refreshing…`}),this.enqueueShell(e,{prioritize:!0})},sourceSelector:`.plantuml-source`})}},M={copy:`
7
- <svg viewBox="0 0 16 16" aria-hidden="true" focusable="false">
8
- <path d="M5.5 5.5h6.8v8h-6.8z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
9
- <path d="M3.7 10.5H3a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v.7" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
10
- </svg>
11
- `,download:`
12
- <svg viewBox="0 0 16 16" aria-hidden="true" focusable="false">
13
- <path d="M8 2.2v7.2" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
14
- <path d="M5.3 7.2 8 10l2.7-2.8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
15
- <path d="M3 12.8h10" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
16
- </svg>
17
- `,edit:`
18
- <svg viewBox="0 0 16 16" aria-hidden="true" focusable="false">
19
- <path d="M11.8 1.8a1.5 1.5 0 0 1 2.1 2.1l-7.2 7.2-3.2.9.9-3.2z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
20
- <path d="M10.7 2.9l2.4 2.4" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
21
- </svg>
22
- `,fit:`
23
- <svg viewBox="0 0 16 16" aria-hidden="true" focusable="false">
24
- <path d="M5.5 6.2V3H2.3M10.5 6.2V3h3.2M10.5 9.8V13h3.2M5.5 9.8V13H2.3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
25
- <path d="M5.5 6.2h5M5.5 9.8h5" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
26
- </svg>
27
- `,maximize:`
28
- <svg viewBox="0 0 16 16" aria-hidden="true" focusable="false">
29
- <path d="M6 2H2v4M10 2h4v4M14 10v4h-4M2 10v4h4" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
30
- </svg>
31
- `,refresh:`
32
- <svg viewBox="0 0 16 16" aria-hidden="true" focusable="false">
33
- <path d="M13 4.5V1.8M13 1.8h-2.7M13 11.5v2.7M13 14.2h-2.7" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
34
- <path d="M12.3 4.2A5.3 5.3 0 1 0 13 11.8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
35
- </svg>
36
- `,restore:`
37
- <svg viewBox="0 0 16 16" aria-hidden="true" focusable="false">
38
- <path d="M6 5V2H2M10 5V2h4M10 11v3h4M6 11v3H2" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
39
- <path d="M4.5 4.5h7v7h-7z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4"/>
40
- </svg>
41
- `};function N(e,t){if(!(e instanceof HTMLElement))return;let n=M[t];if(!n){e.classList.remove(`is-icon-only`),e.classList.remove(`ui-preview-action--icon-only`);return}e.classList.add(`is-icon-only`),e.classList.add(`ui-preview-action--icon-only`),e.dataset.icon=t,e.innerHTML=n.trim()}var Oe=Object.freeze({animationDurationMs:160,default:1,max:3,min:.1,step:.1,wheelSensitivity:.01}),ke=Object.freeze({mermaid:{...Oe,fitMax:Oe.max,min:.5},plantuml:{...Oe,fitMax:Oe.default}}),Ae=Object.freeze({mermaid:{bodyClassName:`mermaid-maximized-open`,buttonClassName:`mermaid-zoom-btn ui-preview-action`,frameClassName:`mermaid-frame diagram-preview-frame`,maximizeButtonClassName:`mermaid-maximize-btn`,maximizedRootClassName:`mermaid-maximized-root`,maximizedRootDatasetKey:`mermaidMaximizedRoot`,toolbarClassName:`mermaid-toolbar diagram-preview-toolbar`,zoomLabelClassName:`mermaid-zoom-label diagram-preview-zoom-label`},plantuml:{bodyClassName:`plantuml-maximized-open`,buttonClassName:`plantuml-tool-btn ui-preview-action`,frameClassName:`plantuml-frame diagram-preview-frame`,maximizeButtonClassName:`plantuml-maximize-btn`,maximizedRootClassName:`plantuml-maximized-root`,maximizedRootDatasetKey:`plantumlMaximizedRoot`,toolbarClassName:`plantuml-toolbar diagram-preview-toolbar`,zoomLabelClassName:`plantuml-zoom-label diagram-preview-zoom-label`}});function je(e){return Ae[e]??Ae.mermaid}function Me(e){return ke[e]??ke.mermaid}function Ne(e){return e instanceof SVGSVGElement}var Pe=class{constructor({documentRef:e=document,toastController:t=null,windowRef:n=window}={}){this.document=e,this.window=n,this.toastController=t,this.activeMaximizedShell=null,this.maximizedRoots=new Map,this.resizeObservers=new Set,this.shellControllers=new WeakMap,this.shellViewStates=new WeakMap,this.shellRefits=new WeakMap}destroy(){this.destroyAllShells(),this.resizeObservers.forEach(e=>e.disconnect()),this.resizeObservers.clear(),this.maximizedRoots.forEach(e=>e.remove()),this.maximizedRoots.clear(),this.activeMaximizedShell=null,this.syncBodyMaximizedClasses()}destroyAllShells(){this.resizeObservers.forEach(e=>e.disconnect()),this.resizeObservers.clear(),this.activeMaximizedShell=null,this.syncBodyMaximizedClasses()}destroyShell(e){this.shellControllers.get(e)?.destroy?.(),this.shellControllers.delete(e),this.shellViewStates.delete(e),this.shellRefits.delete(e),this.activeMaximizedShell===e&&(this.restoreShellMount(e),this.activeMaximizedShell=null),this.syncBodyMaximizedClasses()}captureShellViewState(e){let t=this.shellControllers.get(e)?.getViewState?.()??null;return t&&this.shellViewStates.set(e,t),t}getShellViewState(e){return this.shellViewStates.get(e)??this.shellControllers.get(e)?.getViewState?.()??null}cancelActiveShell(e){let t=this.syncActiveShell();if(!t?.classList?.contains(`${e}-shell`))return;let n=this.shellControllers.get(t);this.restoreShellMount(t),t.classList.remove(`is-maximized`),this.activeMaximizedShell=null,n?.syncMaximizeButtonState?.(),n?.scheduleResetZoomToFit?.({force:!0}),this.syncBodyMaximizedClasses()}clearActiveShell(){this.activeMaximizedShell=null,this.maximizedRoots.forEach(e=>{e.childElementCount===0&&(e.hidden=!0)}),this.syncBodyMaximizedClasses()}syncActiveShell(){return this.activeMaximizedShell?.isConnected&&this.activeMaximizedShell.classList.contains(`is-maximized`)?this.activeMaximizedShell:(this.activeMaximizedShell=null,this.maximizedRoots.forEach(e=>{e.childElementCount===0&&(e.hidden=!0)}),null)}scheduleActiveRefit({kind:e=null,root:t=null}={}){let n=this.syncActiveShell();if(n){this.shellRefits.get(n)?.({force:!0});return}let r=e?`.${e}-shell[data-${e}-hydrated="true"]`:`.mermaid-shell[data-mermaid-hydrated="true"], .plantuml-shell[data-plantuml-hydrated="true"]`;Array.from(t?.querySelectorAll?.(r)??[]).forEach(e=>{this.shellRefits.get(e)?.()})}ensureMaximizedRoot(e){let t=je(e),n=this.maximizedRoots.get(e);if(n?.isConnected&&n.parentElement===this.document.body)return n;let r=this.document.createElement(`div`);return r.dataset[t.maximizedRootDatasetKey]=`true`,r.className=t.maximizedRootClassName,this.document.body.appendChild(r),this.maximizedRoots.set(e,r),r}mountShellInMaximizedRoot(e,t){let n=this.ensureMaximizedRoot(t);n.hidden=!1,e._diagramChromeRestoreParent=e.parentElement||null,e._diagramChromeRestoreNextSibling=e.nextSibling||null,n.appendChild(e)}restoreShellMount(e){if(!e)return;let t=e._diagramChromeRestoreParent,n=e._diagramChromeRestoreNextSibling;t?.isConnected&&(n?.parentElement===t?t.insertBefore(e,n):t.appendChild(e)),e._diagramChromeRestoreParent=null,e._diagramChromeRestoreNextSibling=null,this.maximizedRoots.forEach(e=>{e.childElementCount===0&&(e.hidden=!0)})}syncBodyMaximizedClasses(){for(let[e,t]of Object.entries(Ae))this.document.body.classList.toggle(t.bodyClassName,!!this.document.querySelector?.(`.${e}-shell.is-maximized`))}createButton(e,t,n,{icon:r=``}={}){let i=je(e),a=this.document.createElement(`button`);return a.type=`button`,a.className=i.buttonClassName,a.setAttribute(`aria-label`,n),a.title=n,r?N(a,r):a.textContent=t,a}createToolbar({kind:e,includeReload:t=!1}){let n=je(e),r=this.document.createElement(`div`);r.className=n.toolbarClassName;let i=this.document.createElement(`div`);i.className=`diagram-preview-toolbar-group`;let a=this.document.createElement(`div`);a.className=`diagram-preview-toolbar-group diagram-preview-toolbar-group--actions`;let o=this.createButton(e,`−`,`Zoom out`),s=this.createButton(e,`+`,`Zoom in`),c=this.createButton(e,``,`Reset zoom`,{icon:`fit`}),l=this.createButton(e,``,`Copy image`,{icon:`copy`}),u=this.createButton(e,``,`Download SVG`,{icon:`download`}),d=t?this.createButton(e,``,`Reload diagram`,{icon:`refresh`}):null,f=this.createButton(e,``,`Maximize diagram`,{icon:`maximize`});f.classList.add(n.maximizeButtonClassName);let p=this.document.createElement(`span`);return p.className=n.zoomLabelClassName,p.setAttribute(`aria-live`,`polite`),i.append(o,p,c,s),a.append(l,u),d&&a.append(d),a.append(f),r.append(i,a),{copyButton:l,decreaseButton:o,downloadButton:u,increaseButton:s,maximizeButton:f,reloadButton:d,resetButton:c,toolbar:r,zoomLabel:p}}attachShellResizeObserver(e,t,n){if(typeof ResizeObserver!=`function`||!e?.isConnected||!(t instanceof HTMLElement))return null;let r=new ResizeObserver(()=>n());return r.observe(t),r.observe(e),this.resizeObservers.add(r),r}async copyExportImage(e,t){try{let{pngFileName:n}=t(),r=await xe(await e());try{await Se(r),this.toastController?.show?.(`Diagram copied`)}catch{o(r,n),this.toastController?.show?.(`Clipboard image copy is unavailable here. Downloaded PNG instead.`)}}catch{this.toastController?.show?.(`Failed to copy diagram`)}}async downloadExportSvg(e,t){try{let{svgFileName:n}=t(),r=new Blob([await e()],{type:`image/svg+xml;charset=utf-8`});o(r,n),this.toastController?.show?.(`Diagram download started`)}catch{this.toastController?.show?.(`Failed to download diagram`)}}syncMaximizeButtonState(e,t){let n=e.classList.contains(`is-maximized`);N(t,n?`restore`:`maximize`);let r=n?`Restore diagram size`:`Maximize diagram`;t.setAttribute(`aria-label`,r),t.title=r}setMaximizedState(e,t,n,r,i){if(i){let i=this.syncActiveShell();if(i&&i!==e){let e=this.shellControllers.get(i);this.restoreShellMount(i),i.classList.remove(`is-maximized`),this.activeMaximizedShell=null,e?.scheduleResetZoomToFit?.({force:!0}),e?.syncMaximizeButtonState?.()}this.mountShellInMaximizedRoot(e,t),e.classList.add(`is-maximized`),this.activeMaximizedShell=e,this.syncMaximizeButtonState(e,n),this.syncBodyMaximizedClasses(),r({force:!0});return}this.restoreShellMount(e),e.classList.remove(`is-maximized`),this.activeMaximizedShell===e&&(this.activeMaximizedShell=null),this.syncMaximizeButtonState(e,n),this.syncBodyMaximizedClasses(),r({force:!0})}mount(e,{baseHeight:t,baseWidth:n,diagramElement:r,exportFileNames:i,exportSvgMarkup:a,kind:o,onReload:s=null,sourceSelector:c}={}){if(!e?.isConnected||!Ne(r))return null;let l=je(o),u=Me(o),d=e.querySelector(l.frameClassName.split(` `).map(e=>`.${e}`).join(``)),f=d?re(d).width:0,p=this.getShellViewState(e);this.destroyShell(e);let{copyButton:m,decreaseButton:h,downloadButton:te,increaseButton:ne,maximizeButton:g,reloadButton:ie,resetButton:ae,toolbar:oe,zoomLabel:se}=this.createToolbar({includeReload:typeof s==`function`,kind:o}),_=this.document.createElement(`div`);_.className=l.frameClassName;let v=!!(p&&(p.scrollLeft>0||p.scrollTop>0)),y=!!(v&&d?.isConnected&&d.clientWidth>0&&d.clientHeight>0),ce=!(!y||e.classList.contains(`is-maximized`)||e.style.position);ce&&(e.style.position=`relative`),v&&!y&&(_.style.visibility=`hidden`),y&&Object.assign(_.style,{height:`${d.clientHeight}px`,left:`0`,pointerEvents:`none`,position:`absolute`,top:`0`,visibility:`hidden`,width:`${d.clientWidth}px`});let x=u.default,S=null,C=null,w=null,T=null,E=null,D=!!(p?.hasManualZoom||p?.scrollLeft>0||p?.scrollTop>0),le=f>0&&Number.isFinite(n)&&n>0,ue=Number.isFinite(p?.zoom),de=le?f:0,O=!1;r.style.maxWidth=`none`;let fe=()=>{let e=re(_);if(!Number.isFinite(n)||n<=0||e.width<=0)return u.default;let t=e.width/n;return!Number.isFinite(t)||t<=0?u.default:b(t,u.min,u.fitMax)},k=e=>{x=b(e,u.min,u.max),r.style.width=`${n*x}px`,r.style.height=`${t*x}px`,se.textContent=`${Math.round(x*100)}%`,h.disabled=x<=u.min,ne.disabled=x>=u.max},pe=ue?b(p.zoom,u.min,u.max):le?b(f/n,u.min,u.fitMax):u.default,me=()=>({x:_.scrollLeft+_.clientWidth/2,y:_.scrollTop+_.clientHeight/2}),he=(e,t,n,r)=>{if(e===0)return;let i=t/e;_.scrollLeft=n.x*i-r.x,_.scrollTop=n.y*i-r.y},ge=(e,t,n)=>{he(e,t,n,{x:_.clientWidth/2,y:_.clientHeight/2})},_e=e=>{let t=b(e,u.min,u.max);if(S){C=t;return}let n=x;if(t===n)return;C=t;let r=me(),i=performance.now(),a=e=>{let t=b((e-i)/u.animationDurationMs,0,1),o=ee(t),s=n+(C-n)*o;if(k(s),ge(n,s,r),t<1){S=this.window.requestAnimationFrame(a);return}S=null;let c=C;C=null,k(c),ge(n,c,r)};S=this.window.requestAnimationFrame(a)},ve=()=>{S&&=(this.window.cancelAnimationFrame(S),null),C=null},ye=e=>{D=!0,_e((C??x)+e)},be=()=>{let e=fe();D=!1,de=re(_).width,E=null,ve(),k(e),_.scrollLeft=0,_.scrollTop=0},A=({force:t=!1}={})=>{O||=t,w&&this.window.cancelAnimationFrame(w),w=this.window.requestAnimationFrame(()=>{if(w=null,!e.isConnected)return;let t=O;O=!1;let n=re(_).width,r=Math.abs(n-de)>1;(t||!D)&&(!t&&n>0&&de>0&&!r||be())})},xe=this.attachShellResizeObserver(e,_,()=>A()),Se=(e,t)=>{let n=_.getBoundingClientRect();return{x:Number(e)-n.left,y:Number(t)-n.top}},Ce=e=>{if(!e||e.length!==2)return null;let t=e[0],n=e[1],r=Se((t.clientX+n.clientX)/2,(t.clientY+n.clientY)/2),i=Math.hypot(n.clientX-t.clientX,n.clientY-t.clientY);return!Number.isFinite(i)||i<=0?null:{center:r,distance:i}},we=e=>{let t=Ce(e);return t?(ve(),E={contentPoint:{x:_.scrollLeft+t.center.x,y:_.scrollTop+t.center.y},distance:t.distance,zoom:x},!0):!1},Te=e=>{let t=Ce(e);return!t||!E&&!we(e)?!1:(D=!0,k(E.zoom*(t.distance/E.distance)),he(E.zoom,x,E.contentPoint,t.center),!0)};h.addEventListener(`click`,()=>ye(-u.step)),ne.addEventListener(`click`,()=>ye(u.step)),_.addEventListener(`wheel`,e=>{if(!e.ctrlKey)return;e.preventDefault();let t=Number.isFinite(e.deltaY)?e.deltaY:0,n=b(-t*u.wheelSensitivity,-u.step/2,u.step/2);n!==0&&ye(n)},{passive:!1}),_.addEventListener(`touchstart`,e=>{e.touches.length===2&&we(e.touches)},{passive:!0}),_.addEventListener(`touchmove`,e=>{e.touches.length===2&&Te(e.touches)&&e.preventDefault()},{passive:!1});let Ee=e=>{e.touches.length!==2&&(E=null)};_.addEventListener(`touchend`,Ee),_.addEventListener(`touchcancel`,Ee),ae.addEventListener(`click`,()=>{A({force:!0})}),m.addEventListener(`click`,()=>this.copyExportImage(a,i)),te.addEventListener(`click`,()=>this.downloadExportSvg(a,i)),ie?.addEventListener(`click`,()=>s()),g.addEventListener(`click`,()=>{this.setMaximizedState(e,o,g,A,!e.classList.contains(`is-maximized`))}),_.appendChild(r);let j=c?e.querySelector(c):null,De=j?[j,oe,_]:[oe,_];j&&(j.hidden=!0),y?e.append(_):e.replaceChildren(...De),k(pe);let M=()=>{let e=Math.max(0,_.scrollWidth-_.clientWidth),t=Math.max(0,_.scrollHeight-_.clientHeight),n=b(p.scrollLeft??0,0,e),r=b(p.scrollTop??0,0,t);return _.scrollLeft=n,_.scrollTop=r,_.clientWidth>0&&_.clientHeight>0&&_.scrollLeft===n&&_.scrollTop===r};y?(M(),T=this.window.requestAnimationFrame(()=>{T=null,e.replaceChildren(...De),_.removeAttribute(`style`),ce&&(e.style.position=``),k(pe),M()})):v&&(M()?_.style.visibility=``:this.window.requestAnimationFrame(()=>{_.isConnected&&(M(),_.style.visibility=``)}));let N={destroy:()=>{S&&this.window.cancelAnimationFrame(S),w&&this.window.cancelAnimationFrame(w),T&&this.window.cancelAnimationFrame(T),xe?.disconnect?.(),this.resizeObservers.delete(xe)},getViewState:()=>({hasManualZoom:D,scrollLeft:_.scrollLeft,scrollTop:_.scrollTop,zoom:x}),scheduleResetZoomToFit:A,syncMaximizeButtonState:()=>this.syncMaximizeButtonState(e,g)};return this.shellControllers.set(e,N),this.shellRefits.set(e,A),this.syncMaximizeButtonState(e,g),!le&&!ue&&A({force:!0}),N}};function Fe(){return new Worker(new URL(new URL(`preview-render-worker-dFNyrVyB.js`,import.meta.url).href,``+import.meta.url),{type:`module`})}var Ie=class{constructor({attachmentApiPath:e=`/api/attachment`,compilePreviewDocumentLoader:t=()=>v(()=>import(`./preview-render-compiler-D_aJv7Ew.js`),[],import.meta.url),createWorkerFn:n=Fe,getFileList:r,getSourceFilePath:i=null,getWikiLinkAutoCreate:a=null}={}){this.attachmentApiPath=e,this.compilePreviewDocumentLoader=t,this.createWorkerFn=n,this.getFileList=r,this.getSourceFilePath=i,this.getWikiLinkAutoCreate=a,this.worker=null,this.workerDisabled=!1,this.workerJob=null,this.handleWorkerMessage=e=>{if(!this.workerJob||e.data?.renderVersion!==this.workerJob.renderVersion)return;let t=this.workerJob;if(this.workerJob=null,e.data?.error){t.reject(Error(e.data.error));return}t.resolve({html:e.data.html,stats:e.data.stats})},this.handleWorkerError=e=>{let t=Error(e.message||`Preview worker failed`);this.workerJob&&=(this.workerJob.reject(t),null),this.reset(`Preview worker failed`,{disable:!0})}}hasPendingJob(){return this.workerJob!==null}ensureWorker(){if(this.workerDisabled)return null;if(this.worker)return this.worker;try{return this.worker=this.createWorkerFn(),this.worker.addEventListener(`message`,this.handleWorkerMessage),this.worker.addEventListener(`error`,this.handleWorkerError),this.worker}catch{return this.workerDisabled=!0,null}}async compile(e,t,{frontmatterCollapsed:n=!1,frontmatterInteractive:r=!1,subpath:i=``}={}){if(this.ensureWorker()){this.workerJob&&this.cancelWorkerJob(`Superseded preview render`);let a=this.ensureWorker();return new Promise((o,s)=>{this.workerJob={reject:s,renderVersion:t,resolve:o},a.postMessage({attachmentApiPath:this.attachmentApiPath,fileList:this.getFileList?.()??[],frontmatterCollapsed:n,frontmatterInteractive:r,markdownText:e,renderVersion:t,sourceFilePath:this.getSourceFilePath?.()??``,subpath:i,wikiLinkAutoCreate:this.getWikiLinkAutoCreate?.()??!0})})}let{compilePreviewDocument:a}=await this.compilePreviewDocumentLoader();return a({attachmentApiPath:this.attachmentApiPath,fileList:this.getFileList?.()??[],frontmatterCollapsed:n,frontmatterInteractive:r,markdownText:e,sourceFilePath:this.getSourceFilePath?.()??``,subpath:i,wikiLinkAutoCreate:this.getWikiLinkAutoCreate?.()??!0})}cancelWorkerJob(e){this.workerJob&&=(this.workerJob.reject(Error(e)),null)}reset(e,{disable:t=!1}={}){this.cancelWorkerJob(e),this.worker&&=(this.worker.removeEventListener(`message`,this.handleWorkerMessage),this.worker.removeEventListener(`error`,this.handleWorkerError),this.worker.terminate(),null),t&&(this.workerDisabled=!0)}destroy(e=`Preview renderer destroyed`){this.reset(e)}},Le=class{constructor({getRenderProfileFn:e=ce}={}){this.getRenderProfileFn=e,this.frameId=null,this.idleId=null,this.timeoutId=null}queue({markdownText:e,onRenderRequested:t,renderVersion:n}){let r=this.getRenderProfileFn(e);this.cancel();let i=()=>{this.frameId=requestAnimationFrame(()=>{this.frameId=null,this.timeoutId=null,t?.(e,n)})},a=()=>{if(r.deferUntilIdle){this.idleId=s(()=>{this.idleId=null,i()},500);return}i()};this.timeoutId=setTimeout(a,r.debounceMs)}cancel(){clearTimeout(this.timeoutId),this.frameId&&cancelAnimationFrame(this.frameId),l(this.idleId),this.frameId=null,this.idleId=null,this.timeoutId=null}destroy(){this.cancel()}},Re=class{constructor({getContent:e,getFileList:t,getPreviewVisible:n=null,getSourceFilePath:r,getSubpath:i=null,getTheme:a=null,getWikiLinkAutoCreate:o=null,loadFileSource:s=null,onAfterRenderCommit:c,onBeforeRenderCommit:l,onPreviewLayoutChange:u,onRenderComplete:d,outlineController:f,plantUmlRenderClient:p=null,previewContainer:m,previewElement:h,toastController:ee=null}){this.getContent=e,this.getFileList=t,this.getPreviewVisible=n,this.getSourceFilePath=r,this.getSubpath=i,this.getTheme=a,this.getWikiLinkAutoCreate=o,this.loadFileSource=s,this.onAfterRenderCommit=c,this.onBeforeRenderCommit=l,this.onPreviewLayoutChange=u,this.onRenderComplete=d,this.outlineController=f,this.plantUmlRenderClient=p,this.previewContainer=m,this.previewElement=h,this.toastController=ee,this.renderHost=null,this.pendingRenderVersion=0,this.activeRenderVersion=0,this.readyRenderVersion=0,this.currentStats=null,this.isLargeDocument=!1,this.hydrationPaused=!1,this.frontmatterCollapsed=!1,this.previewRenderStale=!1,this.handlePreviewClick=e=>{if(e.target.closest(`.frontmatter-toggle`)){e.preventDefault(),this.frontmatterCollapsed=!this.frontmatterCollapsed,this.applyFrontmatterState(),this.handleFrontmatterLayoutChange();return}let t=e.target.closest(`.mermaid-placeholder-btn`);if(t){let n=t.closest(`.mermaid-shell`);if(!n)return;e.preventDefault(),t.closest(`.diagram-preview-error-card`)?this.mermaidHydrator.retryShell(n):this.mermaidHydrator.enqueueShell(n,{prioritize:!0});return}let n=e.target.closest(`.plantuml-placeholder-btn`);if(n){let t=n.closest(`.plantuml-shell`);if(!t)return;e.preventDefault(),n.closest(`.diagram-preview-error-card`)?this.plantUmlHydrator.retryShell(t):this.plantUmlHydrator.enqueueShell(t,{prioritize:!0})}},this.handleWindowResize=()=>{this.scheduleActiveMermaidRefit(),this.scheduleActivePlantUmlRefit()},this.diagramChrome=new Pe({toastController:ee}),this.mermaidHydrator=new Ee(this,{loadFileSource:s}),this.plantUmlHydrator=new De(this,{loadFileSource:s,renderClient:p}),this.renderScheduler=new Le,this.renderExecutor=new Ie({attachmentApiPath:w(`/attachment`),getFileList:()=>this.getFileList?.()??[],getSourceFilePath:()=>this.getSourceFilePath?.()??``,getWikiLinkAutoCreate:()=>this.getWikiLinkAutoCreate?.()??!0}),this.previewElement?.addEventListener(`click`,this.handlePreviewClick),window.addEventListener(`resize`,this.handleWindowResize),this.setPhase(`ready`)}ensureRenderHost(){if(!this.previewElement)return null;if(this.renderHost?.isConnected&&this.renderHost.parentElement===this.previewElement)return this.renderHost;let e=this.previewElement.querySelector(`[data-preview-render-host="true"]`);return e||(e=document.createElement(`div`),e.dataset.previewRenderHost=`true`,this.previewElement.appendChild(e)),this.renderHost=e,this.renderHost}normalizePreviewChildren(e=this.renderHost){this.previewElement&&Array.from(this.previewElement.children).forEach(t=>{t!==e&&t.dataset.drawioOverlayRoot!==`true`&&t.dataset.excalidrawOverlayRoot!==`true`&&t.dataset.videoOverlayRoot!==`true`&&t.remove()})}getReservedPreviewHeight(){let e=this.renderHost?.getBoundingClientRect?.().height??0,t=this.previewContainer?.clientHeight??0;return Math.max(Math.round(e),Math.round(t),320)}beginDocumentLoad(){this.renderScheduler.cancel(),this.mermaidHydrator.cancelHydration(),this.plantUmlHydrator.cancelHydration(),this.mermaidHydrator.clearPreservedShells(),this.plantUmlHydrator.clearPreservedShells(),this.diagramChrome.clearActiveShell(),this.onBeforeRenderCommit?.(this.previewElement),this.pendingRenderVersion+=1,this.activeRenderVersion=this.pendingRenderVersion,this.readyRenderVersion=0,this.currentStats=null,this.isLargeDocument=!1,this.frontmatterCollapsed=!1,this.renderExecutor.hasPendingJob()&&this.renderExecutor.reset(`Document changed`);let e=this.ensureRenderHost();this.normalizePreviewChildren(e);let t=this.getReservedPreviewHeight();e&&(e.replaceChildren(),e.style.minHeight=`${t}px`);let n=document.createElement(`div`);n.className=`preview-shell`,n.style.minHeight=`${t}px`,n.textContent=`Rendering preview…`,e?.append(n),this.setPhase(`shell`)}applyTheme(e){let t=document.getElementById(`hljs-theme`);if(t){let{darkHref:n,lightHref:r}=t.dataset;t.href=e===`dark`?n:r}this.mermaidHydrator.applyTheme(e)}markStale(){this.previewRenderStale=!0,this.renderScheduler.cancel()}queueRender(){if(!(this.getPreviewVisible?.()??!0)){this.markStale();return}this.previewRenderStale=!1,this._deferredPreviewStylesPromise??=Promise.all([v(async()=>{let{ensureHighlightThemeStylesheet:e}=await import(`./highlight-theme-CzNkO-IJ.js`);return{ensureHighlightThemeStylesheet:e}},[],import.meta.url).then(({ensureHighlightThemeStylesheet:e})=>{e(),this.applyTheme(this.getTheme?.()??`dark`)}),v(()=>Promise.resolve({}),__vite__mapDeps([0]),import.meta.url)]);let e=this.getContent();this.renderScheduler.cancel(),this.mermaidHydrator.markPending(),this.plantUmlHydrator.markPending(),this.pendingRenderVersion+=1;let t=this.pendingRenderVersion;this.renderScheduler.queue({markdownText:e,onRenderRequested:(e,t)=>{this._deferredPreviewStylesPromise.then(()=>{if(t===this.pendingRenderVersion)return this.render(e,t)})},renderVersion:t})}async render(e=this.getContent(),t=this.pendingRenderVersion){if(this.previewElement)try{let n=await this.renderExecutor.compile(e,t,{frontmatterCollapsed:this.frontmatterCollapsed,frontmatterInteractive:!0,subpath:this.getSubpath?.()??``});if(t!==this.pendingRenderVersion)return;this.commitBaseRender(n,t)}catch(e){if(t!==this.pendingRenderVersion)return;console.warn(`[preview] Failed to render preview:`,e)}}destroy(){this.pendingRenderVersion+=1,this.renderScheduler.destroy(),this.diagramChrome.destroy(),this.mermaidHydrator.destroy(),this.plantUmlHydrator.destroy(),this.renderExecutor.destroy(),this.previewElement?.removeEventListener(`click`,this.handlePreviewClick),window.removeEventListener(`resize`,this.handleWindowResize)}setPhase(e){this.previewElement&&(this.previewElement.dataset.renderPhase=e)}scheduleActiveMermaidRefit(){this.diagramChrome.scheduleActiveRefit({kind:`mermaid`,root:this.previewElement})}scheduleActivePlantUmlRefit(){this.diagramChrome.scheduleActiveRefit({kind:`plantuml`,root:this.previewElement})}setHydrationPaused(e){if(this.hydrationPaused=!!e,this.hydrationPaused){this.mermaidHydrator.cancelPendingIdleWork(),this.plantUmlHydrator.cancelPendingIdleWork();return}this.mermaidHydrator.hydrateVisibleShells(),this.mermaidHydrator.scheduleHydration(),this.plantUmlHydrator.hydrateVisibleShells(),this.plantUmlHydrator.scheduleHydration(),this.updateHydrationPhase()}commitBaseRender({html:e,stats:t},n){let r=this.previewContainer?.scrollTop??0;this.activeRenderVersion=n,this.readyRenderVersion=0,this.currentStats=t,this.isLargeDocument=x(t),this.mermaidHydrator.cancelHydration({preserveActiveShell:!0}),this.plantUmlHydrator.cancelHydration({preserveActiveShell:!0}),this.mermaidHydrator.preserveHydratedShellsForCommit(),this.plantUmlHydrator.preserveHydratedShellsForCommit(),this.onBeforeRenderCommit?.(this.previewElement);let i=this.ensureRenderHost();this.normalizePreviewChildren(i),i&&(i.innerHTML=e),this.applyFrontmatterState(),this.mermaidHydrator.reconcileHydratedShells(),this.plantUmlHydrator.reconcileHydratedShells(),this.previewContainer&&(this.previewContainer.scrollTop=r),this.setPhase(`base`),this.outlineController?.refresh(),this.onAfterRenderCommit?.(this.previewElement,{...t,isLargeDocument:this.isLargeDocument,renderVersion:n});let a=this.mermaidHydrator.setupHydration(n),o=this.plantUmlHydrator.setupHydration(n);a===0&&o===0&&this.notifyReady()}applyFrontmatterState(){let e=this.renderHost?.querySelector?.(`.frontmatter-block`);if(!(e instanceof HTMLElement))return;let t=this.frontmatterCollapsed,n=e.querySelector(`.frontmatter-toggle`),r=e.querySelector(`.frontmatter-summary`),i=e.querySelector(`.frontmatter-content`);e.dataset.collapsed=t?`true`:`false`,n instanceof HTMLButtonElement&&(n.setAttribute(`aria-expanded`,t?`false`:`true`),n.textContent=t?`Show`:`Hide`),r instanceof HTMLElement&&(r.hidden=!t),i instanceof HTMLElement&&(i.hidden=t)}handleFrontmatterLayoutChange(){this.outlineController?.refresh(),this.onPreviewLayoutChange?.({isLargeDocument:this.isLargeDocument,renderVersion:this.activeRenderVersion,stats:this.currentStats})}updateHydrationPhase(){if(this.hydrationPaused&&(this.mermaidHydrator.hasPendingWork()||this.plantUmlHydrator.hasPendingWork())){this.setPhase(`base`);return}if(this.mermaidHydrator.hasPendingWork()||this.plantUmlHydrator.hasPendingWork()){this.setPhase(`hydrating`);return}this.notifyReady()}notifyReady(){this.renderHost&&(this.renderHost.style.minHeight=``),this.setPhase(`ready`),this.readyRenderVersion!==this.activeRenderVersion&&(this.readyRenderVersion=this.activeRenderVersion,this.onRenderComplete?.({isLargeDocument:this.isLargeDocument,stats:this.currentStats}))}};function ze(...e){return e.flat().flatMap(e=>e&&typeof e==`object`?Object.keys(e).filter(t=>e[t]):e||[]).join(` `)}function P(e={}){return ze(`ui-input`,e.extra??[])}function F(e={}){let{variant:t=`secondary`,size:n=`md`,toggle:r=!1,toolbar:i=!1,action:a=!1,wide:o=!1,surface:s=!1,pill:c=!1,hidden:l=!1,active:u=!1,extra:d=[]}=e;return ze(`ui-button`,t&&`ui-button--${t}`,n!==`md`&&`ui-button--${n}`,{"ui-button--toggle":r,"ui-button--toolbar":i,"ui-button--action":a,"ui-button--wide":o,"ui-button--surface":s,"ui-button--pill":c,active:u,hidden:l},d)}function Be(e={}){return ze(`ui-segmented-control`,{"ui-segmented-control--pill":e.pill,hidden:e.hidden},e.extra??[])}function Ve(e={}){return ze(`ui-segmented-btn`,{active:e.active,hidden:e.hidden},e.extra??[])}function He(){return`base-${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}`}function I(e,t){let n=String(t??``);if(typeof DOMParser==`function`&&typeof e?.replaceChildren==`function`){let t=new DOMParser().parseFromString(`<body>${n}</body>`,`text/html`);e.replaceChildren(...t.body.childNodes);return}Reflect.set(e,`innerHTML`,n)}function Ue(e,t){if(typeof DOMParser!=`function`||typeof e?.after!=`function`)return;let n=new DOMParser().parseFromString(`<body>${String(t??``)}</body>`,`text/html`);e.after(...n.body.childNodes)}function We(e=``){return/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/iu.test(String(e??``).trim())}function Ge(e=``){return/^https?:\/\/.+\.(?:png|jpe?g|webp|gif|svg)(?:[?#].*)?$/iu.test(String(e??``).trim())}function Ke(e){return Object.prototype.toString.call(e)===`[object Object]`}function L(e=`and`){return{children:[],conjunction:e,type:`group`}}function qe(e,t,n){let r=e.image||t.find(e=>[`cover`,`image`].includes(String(e.id??``).toLowerCase()))?.id||null;return r?n.cells[r]??null:null}function R(e){return String(e?.text??``)}function Je(e=``){return w(`/attachment?path=${encodeURIComponent(e)}`)}function Ye(t={}){if(t?.type===`image`&&t.path)return Je(t.path);if(t?.type===`link`){if(t.external&&Ge(t.url))return t.url;if(t.path&&e(t.path))return Je(t.path)}let n=R(t);return Ge(n)?n:e(n)?Je(n):``}function Xe(e={}){let t=e?.type||`string`;if(t===`empty`)return`<span class="bases-value bases-value-empty">—</span>`;if(t===`boolean`)return`<span class="bases-value bases-value-boolean">${e.value?`True`:`False`}</span>`;if(t===`image`&&e.path)return`<img class="bases-inline-image" src="${y(Je(e.path))}" alt="${y(R(e))}">`;if(t===`list`)return`<span class="bases-value-list">${(e.items??[]).map(e=>`<span class="bases-value-pill">${Xe(e)}</span>`).join(``)}</span>`;if(t===`link`){if(e.external&&e.url)return`<a class="bases-link" href="${y(e.url)}" target="_blank" rel="noopener noreferrer">${y(R(e))}</a>`;if(e.path)return`<button type="button" class="${y(F({variant:`secondary`,size:`compact`,pill:!0,extra:[`bases-link`,`bases-link-button`]}))}" data-base-open-file="${y(e.path)}">${y(R(e))}</button>`}if(t===`file`&&e.path)return`<button type="button" class="${y(F({variant:`secondary`,size:`compact`,pill:!0,extra:[`bases-link`,`bases-link-button`]}))}" data-base-open-file="${y(e.path)}">${y(R(e))}</button>`;let n=R(e);return`<span class="bases-value">${y(n)}</span>`}function Ze(e,t){let n=t?.cells?.[e.id]??null;return t?.path&&n&&n.type!==`empty`&&(e.id===`file.name`||e.id===`file.basename`)?`<button type="button" class="${y(F({variant:`secondary`,size:`compact`,pill:!0,extra:[`bases-link`,`bases-link-button`]}))}" data-base-open-file="${y(t.path)}">${y(R(n))}</button>`:Xe(n)}function z(e=[]){return!Array.isArray(e)||e.length===0?``:`<div class="bases-summaries">${e.map(e=>`<div class="bases-summary"><span class="bases-summary-label">${y(e.label)}</span><span class="bases-summary-value">${y(R(e.value))}</span></div>`).join(``)}</div>`}function Qe(e,t){return t.map(t=>`<section class="bases-group"><header class="bases-group-header"><h3>${y(t.label)}</h3>${z(t.summaries)}</header><div class="bases-table-shell"><table class="bases-table"><thead><tr>${e.map(e=>`<th>${y(e.label)}</th>`).join(``)}</tr></thead><tbody>${(t.rows??[]).map(t=>`<tr>${e.map(e=>`<td>${Ze(e,t)}</td>`).join(``)}</tr>`).join(``)}</tbody></table></div></section>`).join(``)}function $e(e,t){return t.map(t=>`<section class="bases-group"><header class="bases-group-header"><h3>${y(t.label)}</h3>${z(t.summaries)}</header><ul class="bases-list">${(t.rows??[]).map(t=>`<li class="bases-list-item">${e.map(e=>{let n=t.cells[e.id];return!n||n.type===`empty`?``:`<span class="bases-list-field"><strong>${y(e.label)}:</strong> ${Ze(e,t)}</span>`}).join(``)}</li>`).join(``)}</ul></section>`).join(``)}function et(e,t,n){return t.map(t=>`<section class="bases-group"><header class="bases-group-header"><h3>${y(t.label)}</h3>${z(t.summaries)}</header><div class="bases-cards">${(t.rows??[]).map(t=>{let r=qe(n,e,t),i=R(r),a=``;if(We(i))a=`<div class="bases-card-media bases-card-media-color" style="--bases-card-swatch:${y(i)}"></div>`;else{let e=Ye(r);e&&(a=`<img class="bases-card-media" src="${y(e)}" alt="${y(i)}">`)}return`<article class="bases-card">${a}<div class="bases-card-body">${e.map(e=>{let n=t.cells[e.id];return!n||n.type===`empty`?``:`<div class="bases-card-field"><div class="bases-card-label">${y(e.label)}</div><div class="bases-card-value">${Ze(e,t)}</div></div>`}).join(``)}</div></article>`}).join(``)}</div></section>`).join(``)}function tt(e){if(!e.view.supported)return`<div class="bases-unsupported">CollabMD parsed this view but does not render the <code>${y(e.view.type)}</code> layout yet.</div>`;switch(e.view.type){case`cards`:return et(e.columns,e.groups,e.view);case`list`:return $e(e.columns,e.groups);default:return Qe(e.columns,e.groups)}}function nt(e){return(e.views??[]).map(t=>`<button type="button" class="${y(Ve({active:t.id===e.view.id,extra:`bases-view-tab`}))}" data-base-view="${y(t.id)}">${y(t.name)}</button>`).join(``)}function B(e){return e?.meta??{}}function V(e){return B(e).availableProperties??[]}function rt(e){let t=B(e).activeViewConfig?.order;return Array.isArray(t)&&t.length>0?[...t]:Array.isArray(e?.columns)?e.columns.map(e=>e.id).filter(Boolean):[]}function it(e,t=``){return V(e).find(e=>e.id===t)??null}function at(e,t=``){return it(e,t)?.filterOperators??[`is`,`is not`,`contains`,`does not contain`,`is empty`,`is not empty`]}function H(e){let t=B(e).activeViewConfig??{};return{filters:t.filters??null,groupBy:t.groupBy??null,order:Array.isArray(t.order)?[...t.order]:[],sort:Array.isArray(t.sort)?t.sort.map(e=>({...e})):[]}}function ot(e){return!!(e?.payload?.path&&e?.payload?.sourcePath&&e.payload.path===e.payload.sourcePath)}function st(e,t,n,r){let i=n.ui?.openPanel===t,a=!!B(r).editable;return`<button type="button" class="${y(F({variant:i?`primary`:`secondary`,pill:!0,extra:[`bases-toolbar-btn`,i?`is-active`:``]}))}" data-base-panel="${y(t)}"${a?``:` disabled`}>${y(e)}</button>`}function ct(e,t=``){if(!e||e.type!==`group`||!t)return e;let n=(e.children??[]).flatMap(e=>{if(e?.type===`group`){let n=ct(e,t);return n?[n]:[]}return e?.propertyId===t?[]:[e]});return{...e,children:n}}function lt(e,t=``,n=e?.result){let r=B(n).activeViewConfig?.filters??null,i=K(r),a=t&&i?vt(ct(i,t),n):r;return JSON.stringify({filters:a,path:e?.payload?.path??``,source:e?.payload?.source??null,sourcePath:e?.payload?.sourcePath??``,view:n?.view?.id??e?.payload?.view??``})}function ut(e,t=``,n=e?.result){let r=e?.propertyValueOptions?.get(t)??null;return r&&r.cacheKey===lt(e,t,n)?r.values??[]:[]}function dt(e,t){return[st(`Sort`,`sort`,t,e),st(`Filter`,`filter`,t,e),st(`Properties`,`properties`,t,e)].join(``)}function ft(e,{allowBlank:t=!1,selected:n=``}={}){let r=[];return t&&r.push(`<option value=""${n?``:` selected`}>Property</option>`),V(e).forEach(e=>{r.push(`<option value="${y(e.id)}"${e.id===n?` selected`:``}>${y(e.label)}</option>`)}),r.join(``)}function pt(e){let t=H(e),n=it(e,t.groupBy?.property)?.sortDirections??[{id:`asc`,label:`A → Z`},{id:`desc`,label:`Z → A`}],r=t.sort??[];return`
42
- <section class="bases-panel-card">
43
- <div class="bases-panel-section">
44
- <div class="bases-panel-title">Group by</div>
45
- <div class="bases-sort-row">
46
- <select class="${y(P({extra:`bases-select bases-sort-property`}))}" data-base-group-by-property aria-label="Group by property">
47
- ${ft(e,{allowBlank:!0,selected:t.groupBy?.property??``})}
48
- </select>
49
- <select class="${y(P({extra:`bases-select bases-sort-direction`}))}" data-base-group-by-direction aria-label="Group direction"${t.groupBy?.property?``:` disabled`}>
50
- ${n.map(e=>`<option value="${y(e.id)}"${e.id===(t.groupBy?.direction??`asc`)?` selected`:``}>${y(e.label)}</option>`).join(``)}
51
- </select>
52
- <button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-clear-group-by${t.groupBy?.property?``:` disabled`}>Clear</button>
53
- </div>
54
- </div>
55
- <div class="bases-panel-section">
56
- <div class="bases-panel-title">Sort by</div>
57
- <div class="bases-sort-list">
58
- ${r.map((t,n)=>{let i=it(e,t.property)?.sortDirections??[{id:`asc`,label:`A → Z`},{id:`desc`,label:`Z → A`}];return`
59
- <div class="bases-sort-row">
60
- <select class="${y(P({extra:`bases-select bases-sort-property`}))}" data-base-sort-property="${n}" aria-label="Sort rule ${n+1} property">
61
- ${ft(e,{selected:t.property})}
62
- </select>
63
- <select class="${y(P({extra:`bases-select bases-sort-direction`}))}" data-base-sort-direction="${n}" aria-label="Sort rule ${n+1} direction">
64
- ${i.map(e=>`<option value="${y(e.id)}"${e.id===t.direction?` selected`:``}>${y(e.label)}</option>`).join(``)}
65
- </select>
66
- <button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-sort-move="${n}:up" aria-label="Move sort rule ${n+1} up"${n===0?` disabled`:``}>↑</button>
67
- <button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-sort-move="${n}:down" aria-label="Move sort rule ${n+1} down"${n===r.length-1?` disabled`:``}>↓</button>
68
- <button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-sort-delete="${n}" aria-label="Delete sort rule ${n+1}">Delete</button>
69
- </div>
70
- `}).join(``)}
71
- </div>
72
- <button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-sort-add>Add sort</button>
73
- </div>
74
- </section>
75
- `}function mt(e=[]){return e.join(`.`)}function ht(e=[]){return e.map(e=>e+1).join(`.`)}function U(e=``){return String(e??``).split(`.`).filter(e=>e!==``).map(e=>Number.parseInt(e,10)).filter(Number.isFinite)}function gt(e=``){return JSON.stringify(String(e??``))}function W(e=``,t=`text`,n=`is`){let r=String(e??``).trim();return!r&&n!==`is`&&n!==`is not`?`""`:t===`boolean`?r===`false`?`false`:`true`:t===`number`&&Number.isFinite(Number(r))?String(Number(r)):gt(r)}function _t(e,t=null){if(!e?.propertyId||!e?.operator)return``;let n=e.propertyId,r=t?.valueType??`text`;switch(e.operator){case`contains`:return`${n}.contains(${W(e.value,r,e.operator)})`;case`does not contain`:return`!${n}.contains(${W(e.value,r,e.operator)})`;case`starts with`:return`${n}.startsWith(${W(e.value,r,e.operator)})`;case`ends with`:return`${n}.endsWith(${W(e.value,r,e.operator)})`;case`is`:return`${n} == ${W(e.value,r,e.operator)}`;case`is not`:return`${n} != ${W(e.value,r,e.operator)}`;case`>`:case`>=`:case`<`:case`<=`:return`${n} ${e.operator} ${W(e.value,r,e.operator)}`;case`is empty`:return`${n}.isEmpty()`;case`is not empty`:return`!${n}.isEmpty()`;default:return``}}function vt(e,t){if(!e||e.type!==`group`)return null;let n=(e.children??[]).map(e=>e?.type===`group`?vt(e,t):_t(e,it(t,e?.propertyId))).filter(Boolean);return n.length===0?null:e.conjunction===`not`?{not:n}:{[e.conjunction]:n}}function G(e=``){let t=String(e??``).trim();return t?t===`true`||t===`false`?t:t===`null`?``:/^-?\d+(?:\.\d+)?$/u.test(t)?t:t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1).replace(/\\(["'])/gu,`$1`):t:``}function yt(e=``){let t=String(e??``).trim(),n=[[/^!([A-Za-z0-9_.]+)\.isEmpty\(\)$/u,(e,t)=>({operator:`is not empty`,propertyId:t,type:`rule`,value:``})],[/^([A-Za-z0-9_.]+)\.isEmpty\(\)$/u,(e,t)=>({operator:`is empty`,propertyId:t,type:`rule`,value:``})],[/^!([A-Za-z0-9_.]+)\.contains\((.+)\)$/u,(e,t,n)=>({operator:`does not contain`,propertyId:t,type:`rule`,value:G(n)})],[/^([A-Za-z0-9_.]+)\.contains\((.+)\)$/u,(e,t,n)=>({operator:`contains`,propertyId:t,type:`rule`,value:G(n)})],[/^([A-Za-z0-9_.]+)\.startsWith\((.+)\)$/u,(e,t,n)=>({operator:`starts with`,propertyId:t,type:`rule`,value:G(n)})],[/^([A-Za-z0-9_.]+)\.endsWith\((.+)\)$/u,(e,t,n)=>({operator:`ends with`,propertyId:t,type:`rule`,value:G(n)})],[/^([A-Za-z0-9_.]+)\s*(==|!=|>=|<=|>|<)\s*(.+)$/u,(e,t,n,r)=>({operator:{"!=":`is not`,"==":`is`,"<":`<`,"<=":`<=`,">":`>`,">=":`>=`}[n]??n,propertyId:t,type:`rule`,value:G(r)})]];for(let[e,r]of n){let n=t.match(e);if(n)return r(...n)}return null}function K(e){if(!e)return L(`and`);if(typeof e==`string`){let t=yt(e);return t?{children:[t],conjunction:`and`,type:`group`}:null}if(!Ke(e))return null;if(Array.isArray(e.and)){let t=e.and.map(e=>K(e)).flatMap(e=>e?.type===`group`&&e.conjunction===`and`&&e.children?.length===1&&e.children[0]?.type===`rule`?e.children:[e]);return t.every(Boolean)?{children:t,conjunction:`and`,type:`group`}:null}if(Array.isArray(e.or)){let t=e.or.map(e=>K(e)).flatMap(e=>e?.type===`group`&&e.conjunction===`and`&&e.children?.length===1&&e.children[0]?.type===`rule`?e.children:[e]);return t.every(Boolean)?{children:t,conjunction:`or`,type:`group`}:null}if(e.not!=null){let t=(Array.isArray(e.not)?e.not:(()=>{let t=K(e.not);return t?t.type===`group`&&t.conjunction===`or`?t.children??[]:[t]:[]})()).flatMap(e=>{let t=e?.type?e:K(e);return t?t.type===`group`&&t.conjunction===`and`&&t.children?.length===1&&t.children[0]?.type===`rule`?t.children:[t]:[null]});return t.every(Boolean)?{children:t,conjunction:`not`,type:`group`}:null}return null}function q(e){return e?typeof e==`string`?e:JSON.stringify(e,null,2):``}function bt(e=``){let t=String(e??``).trim();if(!t)return null;if(t.startsWith(`{`)||t.startsWith(`[`))try{return JSON.parse(t)}catch(e){throw Error(`Invalid advanced filter JSON`,{cause:e})}return t}function xt(e,t=[]){let n=e;for(let e of t)n=n?.children?.[e];return n??null}function J(e,t=[],n){if(t.length===0)return n(e);let[r,...i]=t;return{...e,children:(e.children??[]).map((e,t)=>t===r?J(e,i,n):e)}}function St(e,t=[]){if(t.length===0)return e;let n=t.slice(0,-1),r=t[t.length-1];return J(e,n,e=>({...e,children:(e.children??[]).filter((e,t)=>t!==r)}))}function Ct(e,t=[],n){return J(e,t,e=>({...e,children:[...e.children??[],n]}))}function wt(e,t=``){return ft(e,{allowBlank:!0,selected:t})}function Tt(e={}){return String(e?.text??e?.value??``).trim()}function Et(e,t){return e.ui.builderFilter??K(H(t).filters)??L(`and`)}function Dt(e,t,n,r){let i=mt(n),a=at(e,t.propertyId),o=String(t.value??``).trim().toLowerCase(),s=ut(r,t.propertyId,e).map(e=>({count:e?.count,text:Tt(e)})).filter((e,t,n)=>e.text&&n.findIndex(t=>t.text===e.text)===t),c=s.some(e=>e.text.toLowerCase()===o),l=s.filter(e=>!o||e.text.toLowerCase().includes(o)),u=!o||c?s:l.length>0?l:s,d=u.length>0&&![`is empty`,`is not empty`].includes(t.operator);return{encodedPath:i,operators:a,suggestionListId:`bases-filter-suggestions-${y(r.key)}-${y(i.replace(/\./g,`-`))}`,suggestionsEnabled:d,valueInputClasses:P({extra:d?`bases-filter-value bases-filter-value--suggestions`:`bases-filter-value`}),valueSuggestions:u,valueDisabled:[`is empty`,`is not empty`].includes(t.operator)}}function Ot(e,t=``){return e.suggestionsEnabled?`
76
- <div class="bases-filter-suggestion-list" id="${e.suggestionListId}" role="listbox">
77
- ${e.valueSuggestions.slice(0,8).map(n=>`
78
- <button
79
- type="button"
80
- class="bases-filter-suggestion"
81
- data-base-filter-suggestion="${y(e.encodedPath)}"
82
- data-base-filter-suggestion-value="${y(n.text)}"
83
- role="option"
84
- aria-selected="${n.text===String(t??``)?`true`:`false`}"
85
- >
86
- <span class="bases-filter-suggestion-label">${y(n.text)}</span>
87
- ${n.count==null?``:`<span class="bases-filter-suggestion-meta">${y(String(n.count))}</span>`}
88
- </button>
89
- `).join(``)}
90
- </div>
91
- `:``}function kt(e,t,n,r){let i=Dt(e,t,n,r),a=`Filter ${ht(n)}`;return`
92
- <div class="bases-filter-value-combobox${i.suggestionsEnabled?` has-suggestions`:``}">
93
- <input class="${y(i.valueInputClasses)}" type="text" value="${y(t.value??``)}" data-base-filter-value="${y(i.encodedPath)}" aria-label="${a} value"${i.suggestionsEnabled?` aria-controls="${i.suggestionListId}" aria-haspopup="listbox" aria-autocomplete="list" autocomplete="off"`:``}${i.valueDisabled?` disabled`:``}>
94
- ${Ot(i,t.value??``)}
95
- </div>
96
- `}function At(e,t,n,r){let i=Dt(e,t,n,r),a=`Filter ${ht(n)}`;return`
97
- <div class="bases-filter-row">
98
- <select class="${y(P({extra:`bases-select bases-filter-property`}))}" data-base-filter-property="${y(i.encodedPath)}" aria-label="${a} property">
99
- ${wt(e,t.propertyId)}
100
- </select>
101
- <select class="${y(P({extra:`bases-select bases-filter-operator`}))}" data-base-filter-operator="${y(i.encodedPath)}" aria-label="${a} operator">
102
- ${i.operators.map(e=>`<option value="${y(e)}"${e===t.operator?` selected`:``}>${y(e)}</option>`).join(``)}
103
- </select>
104
- ${kt(e,t,n,r)}
105
- <button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-filter-remove="${y(i.encodedPath)}" aria-label="Delete ${a.toLowerCase()}">Delete</button>
106
- </div>
107
- `}function jt(e,t,n,{fallbackToFullRender:r=!0}={}){let i=Bt(e)?.querySelector?.(`[data-base-panel-slot]`)??null,a=mt(n),o=i?.querySelector?.(`[data-base-filter-value="${a}"]`)??null,s=o?.parentElement?.classList?.contains(`bases-filter-value-combobox`)?o.parentElement:null,c=xt(Et(e,t),n);if(!o||!s||!c||c.type!==`rule`||typeof o.insertAdjacentHTML!=`function`)return r&&Y(e,t),!1;let l=Dt(t,c,n,e);return s.classList.toggle(`has-suggestions`,l.suggestionsEnabled),o.className=l.valueInputClasses,o.disabled=l.valueDisabled,o.setAttribute(`aria-label`,`Filter ${ht(n)} value`),o.value!==String(c.value??``)&&(o.value=String(c.value??``)),l.suggestionsEnabled?(o.setAttribute(`aria-controls`,l.suggestionListId),o.setAttribute(`aria-haspopup`,`listbox`),o.setAttribute(`aria-autocomplete`,`list`),o.setAttribute(`autocomplete`,`off`)):(o.removeAttribute(`aria-controls`),o.removeAttribute(`aria-haspopup`),o.removeAttribute(`aria-autocomplete`),o.removeAttribute(`autocomplete`)),s.querySelector(`.bases-filter-suggestion-list`)?.remove?.(),l.suggestionsEnabled&&Ue(o,Ot(l,c.value??``)),!0}function Mt(e,t,n=[]){if(e){if(e.type===`rule`){t(e,n);return}(e.children??[]).forEach((e,r)=>{Mt(e,t,[...n,r])})}}function Nt(e,t,n,r,{isRoot:i=!1}={}){let a=mt(n),o=i?`Root filter group`:`Filter group ${ht(n)}`;return`
108
- <div class="bases-filter-group"${i?` data-base-filter-root`:``}>
109
- <div class="bases-filter-group-header">
110
- <select class="${y(P({extra:`bases-select bases-filter-conjunction`}))}" data-base-filter-conjunction="${y(a)}" aria-label="${o} condition">
111
- ${[`and`,`or`,`not`].map(e=>`<option value="${e}"${t.conjunction===e?` selected`:``}>${y({and:`All the following are true`,not:`None of the following are true`,or:`Any of the following are true`}[e])}</option>`).join(``)}
112
- </select>
113
- ${i?``:`<button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-filter-remove="${y(a)}" aria-label="Delete ${o.toLowerCase()}">Delete group</button>`}
114
- </div>
115
- <div class="bases-filter-children">
116
- ${(t.children??[]).map((t,i)=>t?.type===`group`?Nt(e,t,[...n,i],r):At(e,t,[...n,i],r)).join(``)}
117
- </div>
118
- <div class="bases-filter-actions-row">
119
- <button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-filter-add-rule="${y(a)}" aria-label="Add filter to ${o.toLowerCase()}">Add filter</button>
120
- <button type="button" class="${y(F({variant:`secondary`,size:`compact`}))}" data-base-filter-add-group="${y(a)}" aria-label="Add filter group to ${o.toLowerCase()}">Add filter group</button>
121
- </div>
122
- </div>
123
- `}function Pt(e,t){let n=H(e).filters,r=t.ui.builderFilter??K(n);t.ui.builderFilter??(t.ui.builderFilter=r);let i=r?t.ui.filterMode??`builder`:`advanced`,a=t.ui.rawFilterText??q(n);return`
124
- <section class="bases-panel-card">
125
- <div class="bases-panel-title-row">
126
- <div class="bases-panel-title">This view</div>
127
- ${r?`
128
- <div class="bases-toggle-row">
129
- <button type="button" class="${y(F({variant:i===`builder`?`primary`:`secondary`,size:`compact`}))}" data-base-filter-mode="builder">Builder</button>
130
- <button type="button" class="${y(F({variant:i===`advanced`?`primary`:`secondary`,size:`compact`}))}" data-base-filter-mode="advanced">Advanced</button>
131
- </div>
132
- `:``}
133
- </div>
134
- ${i===`advanced`?`
135
- <label class="bases-filter-advanced-label">
136
- <span class="bases-panel-title">Filter expression</span>
137
- <textarea class="${y(P({extra:`bases-filter-advanced`}))}" data-base-filter-advanced>${y(a)}</textarea>
138
- </label>
139
- <div class="bases-filter-actions-row">
140
- <button type="button" class="${y(F({variant:`primary`,size:`compact`}))}" data-base-filter-save-advanced>Save filter</button>
141
- </div>
142
- `:Nt(e,r??L(`and`),[],t,{isRoot:!0})}
143
- </section>
144
- `}function Ft(e,t){let n=String(t.ui.propertySearch??``).trim().toLowerCase(),r=new Set(rt(e)),i=V(e).filter(e=>!n||e.label.toLowerCase().includes(n)||e.id.toLowerCase().includes(n));return`
145
- <section class="bases-panel-card">
146
- <label class="bases-properties-search">
147
- <input class="${y(P({extra:`bases-properties-search-input`}))}" type="search" value="${y(t.ui.propertySearch??``)}" placeholder="Find property" data-base-properties-search>
148
- </label>
149
- <div class="bases-properties-list" data-base-properties-list>
150
- ${i.map(e=>`
151
- <label class="bases-property-option">
152
- <input type="checkbox" data-base-property-toggle="${y(e.id)}"${r.has(e.id)?` checked`:``}>
153
- <span class="bases-property-option-label">${y(e.label)}</span>
154
- <span class="bases-property-option-meta">${y(e.kind)}</span>
155
- </label>
156
- `).join(``)}
157
- </div>
158
- </section>
159
- `}function It(e){let t=e?.querySelector?.(`[data-base-properties-list]`)??null,n=e?.querySelector?.(`[data-base-properties-search]`)??null,r=typeof document<`u`?document.activeElement:null,i=null;if(n&&r===n){let e=typeof n.selectionStart==`number`?n.selectionStart:null;i={selectionEnd:typeof n.selectionEnd==`number`?n.selectionEnd:e,selectionStart:e,type:`properties-search`}}else if(r?.dataset?.baseFilterValue!=null){let t=String(r.dataset.baseFilterValue),n=e?.querySelector?.(`[data-base-filter-value="${t}"]`)??null;if(n&&r===n){let e=typeof n.selectionStart==`number`?n.selectionStart:null;i={path:t,selectionEnd:typeof n.selectionEnd==`number`?n.selectionEnd:e,selectionStart:e,type:`filter-value`}}}return{focusedControl:i,propertiesListScrollTop:t?t.scrollTop:null}}function Lt(e,t){if(t){if(t.propertiesListScrollTop!=null){let n=e?.querySelector?.(`[data-base-properties-list]`)??null;n&&(n.scrollTop=t.propertiesListScrollTop)}if(t.focusedControl?.type===`properties-search`){let n=e?.querySelector?.(`[data-base-properties-search]`)??null;n&&(n.focus?.(),typeof n.setSelectionRange==`function`&&t.focusedControl.selectionStart!=null&&n.setSelectionRange(t.focusedControl.selectionStart,t.focusedControl.selectionEnd??t.focusedControl.selectionStart));return}if(t.focusedControl?.type===`filter-value`&&t.focusedControl.path!=null){let n=e?.querySelector?.(`[data-base-filter-value="${t.focusedControl.path}"]`)??null;n&&(n.focus?.(),typeof n.setSelectionRange==`function`&&t.focusedControl.selectionStart!=null&&n.setSelectionRange(t.focusedControl.selectionStart,t.focusedControl.selectionEnd??t.focusedControl.selectionStart))}}}function Rt(e,t){if(!t.ui?.openPanel)return``;if(!B(e).editable)return`<section class="bases-panel-card"><div class="bases-readonly-note">Inline base previews are read-only. Open the .base file to edit its sort, filter, and properties.</div></section>`;switch(t.ui.openPanel){case`filter`:return Pt(e,t);case`properties`:return Ft(e,t);default:return pt(e)}}function zt(e,t){return`
160
- <section class="bases-shell" data-base-shell-key="${y(t.key)}">
161
- <header class="bases-toolbar">
162
- <div class="bases-toolbar-main">
163
- <div class="${y(Be({pill:!0,extra:`bases-tabs`}))}" data-base-tabs>
164
- ${nt(e)}
165
- </div>
166
- <div class="bases-meta" data-base-meta>${y(String(e.totalRows??0))} results</div>
167
- </div>
168
- <div class="bases-toolbar-actions">
169
- <div class="bases-toolbar-edit-actions" data-base-action-slot>${dt(e,t)}</div>
170
- <label class="bases-search-shell" aria-label="Search this base">
171
- <svg class="bases-search-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
172
- <circle cx="11" cy="11" r="7"></circle>
173
- <path d="m20 20-3.5-3.5"></path>
174
- </svg>
175
- <input class="${y(P({extra:`bases-search-input`}))}" type="search" value="${y(t.search)}" placeholder="Search this base" aria-label="Search this base">
176
- </label>
177
- <button type="button" class="${y(F({variant:`secondary`,pill:!0,extra:`bases-export-btn`}))}">Export CSV</button>
178
- </div>
179
- </header>
180
- <div class="bases-panels" data-base-panel-slot>${Rt(e,t)}</div>
181
- <div data-base-summary-slot>${z(e.summaries)}</div>
182
- <div class="bases-content" data-base-content>${tt(e)}</div>
183
- </section>
184
- `}function Bt(e){return e?.placeholder?.querySelector?e.placeholder.querySelector(`[data-base-shell-key="${e.key}"]`)??e.placeholder.querySelector(`.bases-shell`):null}function Vt(e){e?.classList&&(e.classList.add(`is-hydrated`),e.classList.remove(`diagram-preview-shell`))}function Ht(e,t,{actions:n=!0,body:r=!0,meta:i=!0,panel:a=!0,summary:o=!0,tabs:s=!0}={}){let c=Bt(e);if(!c?.querySelector){I(e.placeholder,zt(t,e)),Vt(e.placeholder);return}let l=c.querySelector(`[data-base-tabs]`);s&&l&&I(l,nt(t));let u=c.querySelector(`[data-base-meta]`);i&&u&&(u.textContent=`${String(t.totalRows??0)} results`);let d=c.querySelector(`[data-base-action-slot]`);n&&d&&I(d,dt(t,e));let f=c.querySelector(`[data-base-panel-slot]`);if(a&&f){let n=It(f);I(f,Rt(t,e)),Lt(f,n)}let p=c.querySelector(`[data-base-summary-slot]`);o&&p&&I(p,z(t.summaries));let m=c.querySelector(`[data-base-content]`);r&&m&&I(m,tt(t));let h=c.querySelector(`.bases-search-input`);h&&h.value!==e.search&&(h.value=e.search)}function Y(e,t){Ht(e,t,{actions:!1,body:!1,meta:!1,summary:!1,tabs:!1})}var Ut=class{constructor({getActiveFilePath:e=()=>``,getSession:t=()=>null,onOpenFile:n,previewElement:r,replaceBaseSource:i=null,toastController:a,vaultApiClient:o}){this.getActiveFilePath=e,this.getSession=t,this.onOpenFile=n,this.previewElement=r,this.replaceBaseSource=i,this.toastController=a,this.vaultApiClient=o,this.entries=new Map,this.searchTimers=new Map,this.applyFilterSuggestion=(e,t,n)=>{this.updateBuilderFilter(e,e=>J(e,t,e=>({...e,value:n})))},this.persistBuilderFilter=e=>{let t=Et(e,e.result);e.ui.builderFilter=t,this.updateViewConfig(e,n=>(n.filters=vt(t,e.result),n))},this.handlePointerDown=e=>{let t=e.target.closest(`[data-base-filter-suggestion]`);if(!t)return;let n=e.target.closest(`[data-base-shell-key]`),r=n?this.entries.get(n.dataset.baseShellKey||``):null;if(!r)return;e.preventDefault();let i=U(t.dataset.baseFilterSuggestion||``),a=t.dataset.baseFilterSuggestionValue||``;this.applyFilterSuggestion(r,i,a)},this.handleClick=e=>{let t=e.target.closest(`[data-base-open-file]`);if(t){e.preventDefault(),this.onOpenFile?.(t.dataset.baseOpenFile||``);return}let n=e.target.closest(`[data-base-shell-key]`),r=n?this.entries.get(n.dataset.baseShellKey||``):null;if(!r)return;let i=e.target.closest(`.bases-view-tab`);if(i){r.payload.view=i.dataset.baseView||``,r.ui.openPanel=``,this.renderEntry(r);return}let a=e.target.closest(`[data-base-panel]`);if(a){let e=a.dataset.basePanel||``;r.ui.openPanel=r.ui.openPanel===e?``:e,r.ui.rawFilterText=q(H(r.result).filters),Y(r,r.result);return}if(e.target.closest(`.bases-export-btn`)){this.exportEntry(r);return}if(e.target.closest(`[data-base-sort-add]`)){this.updateViewConfig(r,e=>{let t=new Set((e.sort??[]).map(e=>e.property)),n=V(r.result).find(e=>!t.has(e.id))?.id??`file.name`;return e.sort=[...e.sort??[],{direction:`asc`,property:n}],e});return}let o=e.target.closest(`[data-base-sort-delete]`);if(o){let e=Number.parseInt(o.dataset.baseSortDelete||``,10);this.updateViewConfig(r,t=>(t.sort=(t.sort??[]).filter((t,n)=>n!==e),t));return}let s=e.target.closest(`[data-base-sort-move]`);if(s){let[e,t]=String(s.dataset.baseSortMove||``).split(`:`),n=Number.parseInt(e,10);this.updateViewConfig(r,e=>{let r=[...e.sort??[]],i=t===`up`?n-1:n+1;return i<0||i>=r.length?e:([r[n],r[i]]=[r[i],r[n]],e.sort=r,e)});return}if(e.target.closest(`[data-base-clear-group-by]`)){this.updateViewConfig(r,e=>(e.groupBy=null,e));return}let c=e.target.closest(`[data-base-filter-mode]`);if(c){r.ui.filterMode=c.dataset.baseFilterMode||`builder`,r.ui.filterMode===`advanced`&&(r.ui.rawFilterText=q(H(r.result).filters),r.ui.builderFilter=null),Y(r,r.result);return}if(e.target.closest(`[data-base-filter-save-advanced]`)){this.saveAdvancedFilter(r);return}let l=e.target.closest(`[data-base-filter-add-rule]`);if(l){let e=U(l.dataset.baseFilterAddRule||``);this.updateBuilderFilter(r,t=>Ct(t,e,{operator:`is`,propertyId:V(r.result)[0]?.id??`file.name`,type:`rule`,value:``}));return}let u=e.target.closest(`[data-base-filter-add-group]`);if(u){let e=U(u.dataset.baseFilterAddGroup||``);this.updateBuilderFilter(r,t=>Ct(t,e,L(`and`)));return}let d=e.target.closest(`[data-base-filter-remove]`);if(d){let e=U(d.dataset.baseFilterRemove||``);this.updateBuilderFilter(r,t=>St(t,e));return}let f=e.target.closest(`[data-base-filter-suggestion]`);if(f){if(e.preventDefault?.(),e.detail!=null&&e.detail!==0)return;let t=U(f.dataset.baseFilterSuggestion||``),n=f.dataset.baseFilterSuggestionValue||``;this.applyFilterSuggestion(r,t,n)}},this.handleInput=e=>{let t=e.target.closest(`.bases-search-input`);if(t){let e=t.closest(`[data-base-shell-key]`),n=e?this.entries.get(e.dataset.baseShellKey||``):null;if(!n)return;n.search=t.value||``,clearTimeout(this.searchTimers.get(n.key)),this.searchTimers.set(n.key,setTimeout(()=>{n.payload.search=n.search,this.renderEntry(n)},180));return}let n=e.target.closest(`[data-base-properties-search]`);if(n){let e=n.closest(`[data-base-shell-key]`),t=e?this.entries.get(e.dataset.baseShellKey||``):null;if(!t)return;t.ui.propertySearch=n.value||``,Y(t,t.result);return}let r=e.target.closest(`[data-base-filter-advanced]`);if(r){let e=r.closest(`[data-base-shell-key]`),t=e?this.entries.get(e.dataset.baseShellKey||``):null;if(!t)return;t.ui.rawFilterText=r.value||``;return}let i=e.target.closest(`[data-base-filter-value]`);if(i){let e=i.closest(`[data-base-shell-key]`),t=e?this.entries.get(e.dataset.baseShellKey||``):null;if(!t)return;let n=U(i.dataset.baseFilterValue||``),r=t.ui.builderFilter??K(H(t.result).filters)??L(`and`);t.ui.builderFilter=J(r,n,e=>({...e,value:i.value||``})),jt(t,t.result,n)}},this.handleChange=e=>{let t=e.target.closest(`[data-base-shell-key]`),n=t?this.entries.get(t.dataset.baseShellKey||``):null;if(!n)return;let r=e.target.closest(`[data-base-group-by-property]`);if(r){this.updateViewConfig(n,e=>(e.groupBy=r.value?{direction:e.groupBy?.direction??`asc`,property:r.value}:null,e));return}let i=e.target.closest(`[data-base-group-by-direction]`);if(i){this.updateViewConfig(n,e=>(e.groupBy=e.groupBy?.property?{direction:i.value||`asc`,property:e.groupBy.property}:null,e));return}let a=e.target.closest(`[data-base-sort-property]`);if(a){let e=Number.parseInt(a.dataset.baseSortProperty||``,10);this.updateViewConfig(n,t=>(t.sort=(t.sort??[]).map((t,n)=>n===e?{...t,property:a.value}:t),t));return}let o=e.target.closest(`[data-base-sort-direction]`);if(o){let e=Number.parseInt(o.dataset.baseSortDirection||``,10);this.updateViewConfig(n,t=>(t.sort=(t.sort??[]).map((t,n)=>n===e?{...t,direction:o.value||`asc`}:t),t));return}let s=e.target.closest(`[data-base-property-toggle]`);if(s){let e=s.dataset.basePropertyToggle||``;this.updateViewConfig(n,t=>{let r=t.order?.length>0?[...t.order]:rt(n.result),i=r.indexOf(e);return s.checked&&i===-1&&r.push(e),!s.checked&&i>=0&&r.splice(i,1),t.order=r,t});return}let c=e.target.closest(`[data-base-filter-conjunction]`);if(c){let e=U(c.dataset.baseFilterConjunction||``);this.updateBuilderFilter(n,t=>J(t,e,e=>({...e,conjunction:c.value||`and`})));return}let l=e.target.closest(`[data-base-filter-property]`);if(l){let e=U(l.dataset.baseFilterProperty||``);(async()=>{await this.updateBuilderFilter(n,t=>J(t,e,e=>{let t=at(n.result,l.value)[0]??`is`;return{...e,operator:t,propertyId:l.value,value:``}})),await this.ensurePropertyValues(n,l.value)})();return}let u=e.target.closest(`[data-base-filter-operator]`);if(u){let e=U(u.dataset.baseFilterOperator||``);this.updateBuilderFilter(n,t=>J(t,e,e=>({...e,operator:u.value||`is`})));return}e.target.closest(`[data-base-filter-value]`)&&this.persistBuilderFilter(n)},this.handleFocusIn=e=>{let t=e.target.closest(`[data-base-filter-value]`);if(!t)return;let n=t.closest(`[data-base-shell-key]`),r=n?this.entries.get(n.dataset.baseShellKey||``):null;if(!r)return;let i=U(t.dataset.baseFilterValue||``),a=K(H(r.result).filters),o=a?xt(a,i):null;o?.propertyId&&this.ensurePropertyValues(r,o.propertyId)},this.previewElement?.addEventListener(`pointerdown`,this.handlePointerDown),this.previewElement?.addEventListener(`click`,this.handleClick),this.previewElement?.addEventListener(`input`,this.handleInput),this.previewElement?.addEventListener(`change`,this.handleChange),this.previewElement?.addEventListener(`focusin`,this.handleFocusIn)}ensureEntryState(e){e.ui||={builderFilter:null,filterMode:`builder`,openPanel:``,propertySearch:``,rawFilterText:``},Object.prototype.hasOwnProperty.call(e.ui,`builderFilter`)||(e.ui.builderFilter=null),e.propertyValueOptions||=new Map}destroy(){this.previewElement?.removeEventListener(`pointerdown`,this.handlePointerDown),this.previewElement?.removeEventListener(`click`,this.handleClick),this.previewElement?.removeEventListener(`input`,this.handleInput),this.previewElement?.removeEventListener(`change`,this.handleChange),this.previewElement?.removeEventListener(`focusin`,this.handleFocusIn),this.searchTimers.forEach(e=>clearTimeout(e)),this.searchTimers.clear(),this.entries.clear()}reconcileEmbeds(e=this.previewElement){e&&Array.from(e.querySelectorAll(`.bases-embed-placeholder[data-base-key]`)).forEach(e=>{let t=e.dataset.baseKey||He(),n=this.entries.get(t),r={path:e.dataset.basePath||``,search:``,source:e.dataset.baseSource||null,sourcePath:e.dataset.baseSourcePath||``,view:e.dataset.baseView||``},i=n??{key:t,payload:r,placeholder:e,propertyValueOptions:new Map,requestVersion:0,result:null,search:``,ui:{builderFilter:null,filterMode:`builder`,openPanel:``,propertySearch:``,rawFilterText:``}};i.payload=r,i.placeholder=e,this.entries.set(t,i),this.renderEntry(i)})}async renderStandalone({filePath:e,renderHost:t,source:n=null}){let r=`standalone:${e}`,i=this.entries.get(r)??{key:r,payload:{path:e,search:``,source:n,sourcePath:e,view:``},placeholder:t,propertyValueOptions:new Map,requestVersion:0,result:null,search:``,ui:{builderFilter:null,filterMode:`builder`,openPanel:``,propertySearch:``,rawFilterText:``}};i.placeholder=t,i.payload.path=e,i.payload.source=typeof n==`string`?n:null,i.payload.sourcePath=e,this.entries.set(r,i),await this.renderEntry(i)}async renderEntry(e){if(this.ensureEntryState(e),!e?.placeholder?.isConnected)return;let t=(e.requestVersion??0)+1;e.requestVersion=t;let n=!!Bt(e);n||I(e.placeholder,`<div class="preview-shell" role="status" aria-live="polite">Loading base…</div>`);try{let n=await this.vaultApiClient.queryBase({activeFilePath:this.getActiveFilePath?.()??``,...e.payload});if(t!==e.requestVersion||!e?.placeholder?.isConnected)return;e.result=n.result,e.ui.builderFilter=K(H(e.result).filters),e.ui.rawFilterText||(e.ui.rawFilterText=q(H(e.result).filters)),Ht(e,e.result)}catch(r){if(t!==e.requestVersion||!e?.placeholder?.isConnected)return;if(n){let t=Bt(e)?.querySelector?.(`[data-base-content]`)??null;if(t){I(t,`<div class="preview-shell" role="alert">Failed to load base: ${y(r.message||`Unknown error`)}</div>`);return}}I(e.placeholder,`<div class="preview-shell" role="alert">Failed to load base: ${y(r.message||`Unknown error`)}</div>`)}}async exportEntry(e){this.ensureEntryState(e);try{let t=await this.vaultApiClient.exportBaseCsv({activeFilePath:this.getActiveFilePath?.()??``,...e.payload});o(t.blob,u(t.contentDisposition,`base.csv`),{removeDelayMs:0,revokeDelayMs:0})}catch(e){this.toastController?.show?.(e.message||`Failed to export base CSV`)}}async ensurePropertyValues(e,t=``){if(this.ensureEntryState(e),!t)return;let n=lt(e,t);if((e.propertyValueOptions.get(t)??null)?.cacheKey!==n)try{let r=await this.vaultApiClient.queryBasePropertyValues({activeFilePath:this.getActiveFilePath?.()??``,...e.payload,propertyId:t});if(e.propertyValueOptions.set(t,{cacheKey:n,values:r.result?.values??[]}),e.result&&e.ui.openPanel===`filter`){let n=!1;Mt(Et(e,e.result),(r,i)=>{r.propertyId===t&&(n=jt(e,e.result,i,{fallbackToFullRender:!1})||n)}),n||Y(e,e.result)}}catch{e.propertyValueOptions.set(t,{cacheKey:n,values:[]})}}async applyTransformedSource(e,t){if(this.ensureEntryState(e),ot(e)){e.payload.source=t.source,this.replaceBaseSource?.({path:e.payload.path,source:t.source});return}await this.vaultApiClient.writeFile({content:t.source,path:e.payload.path}),e.payload.source=null}async updateViewConfig(e,t){if(this.ensureEntryState(e),!e?.result||!B(e.result).editable)return;let n=t(H(e.result));try{let t=(await this.vaultApiClient.transformBase({activeFilePath:this.getActiveFilePath?.()??``,mutation:{config:n,type:`set-view-config`,view:e.result.view.id},...e.payload})).result;await this.applyTransformedSource(e,t),e.result=t.result,e.ui.rawFilterText=q(H(e.result).filters),Ht(e,e.result)}catch(e){this.toastController?.show?.(e.message||`Failed to update base`)}}async updateBuilderFilter(e,t){this.ensureEntryState(e);let n=t(e.ui.builderFilter??K(H(e.result).filters)??L(`and`));e.ui.builderFilter=n,await this.updateViewConfig(e,t=>(t.filters=vt(n,e.result),t))}async saveAdvancedFilter(e){this.ensureEntryState(e);try{let t=bt(e.ui.rawFilterText??``);e.ui.builderFilter=K(t),await this.updateViewConfig(e,e=>(e.filters=t,e))}catch(e){this.toastController?.show?.(e.message||`Invalid advanced filter`)}}},Wt=`https://viewer.diagrams.net/js/viewer-static.min.js`,X=null;function Gt(){return window.GraphViewer?.processElements?Promise.resolve(window.GraphViewer):X||(X=new Promise((e,t)=>{let n=document.querySelector(`script[data-collabmd-drawio-viewer]`),r=n instanceof HTMLScriptElement?n:document.createElement(`script`),i=()=>{r.removeEventListener(`error`,a),r.removeEventListener(`load`,o)},a=()=>{i(),X=null,t(Error(`Failed to load draw.io viewer`))},o=()=>{if(i(),!window.GraphViewer?.processElements){X=null,t(Error(`draw.io viewer did not initialize`));return}e(window.GraphViewer)};r.addEventListener(`error`,a,{once:!0}),r.addEventListener(`load`,o,{once:!0}),n?window.GraphViewer?.processElements&&o():(r.src=Wt,r.async=!0,r.dataset.collabmdDrawioViewer=`true`,document.head.append(r))}),X)}function Kt({ariaLabel:e=``,className:t=`drawio-viewer-frame`,onActivate:n=null,source:r=``,theme:i=`dark`}={}){let a=document.createElement(`div`);return a.className=t,e&&a.setAttribute(`aria-label`,e),typeof n==`function`&&(a.dataset.action=`open-file`,a.setAttribute(`role`,`button`),a.setAttribute(`tabindex`,`0`),a.addEventListener(`click`,e=>{e.preventDefault(),n()}),a.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())})),a.dataset.mxgraph=JSON.stringify({"check-visible-state":!1,center:!0,border:0,"dark-mode":i===`light`?`light`:`dark`,editable:!1,fit:1,lightbox:!1,nav:!1,resize:!1,tooltips:!1,xml:String(r??``)}),a}async function qt(e,t={}){let n=await Gt(),r=Kt(t);return e.replaceChildren(r),typeof n.createViewerForElement==`function`?n.createViewerForElement(r):n.processElements(),r}var Jt=360,Yt=class{constructor({getLocalUser:e,getTheme:t,onOpenFile:n=null,onOpenTextFile:r=null,onToggleQuickSwitcher:i=null,previewContainer:a,previewElement:o,toastController:s,vaultApiClient:c}){this.getLocalUser=e,this.getTheme=t,this.onOpenFile=n,this.onOpenTextFile=r,this.onToggleQuickSwitcher=i,this.previewContainer=a,this.previewElement=o,this.toastController=s,this.vaultApiClient=c,this.embedEntries=new Map,this.hydrationQueue=[],this.hydrationIdleId=null,this.hydrationPaused=!1,this.instanceCounter=0,this.maximizedEntry=null,this.overlayRoot=null,this.placeholderObserver=null,this._onMessage=this._onMessage.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onPreviewClick=this._onPreviewClick.bind(this),this.listenerController=new AbortController;let{signal:l}=this.listenerController;window.addEventListener(`message`,this._onMessage,{signal:l}),window.addEventListener(`keydown`,this._onKeyDown,{signal:l}),this.previewElement?.addEventListener(`click`,this._onPreviewClick,{signal:l})}destroy(){this.listenerController?.abort(),this.listenerController=null,this._disconnectPlaceholderObserver(),l(this.hydrationIdleId),this.hydrationIdleId=null,this.hydrationQueue=[],this._exitMaximizedEntry(),this.embedEntries.forEach(e=>e.wrapper?.remove()),this.embedEntries.clear(),this.overlayRoot?.remove(),this.overlayRoot=null}detachForCommit(){this._disconnectPlaceholderObserver(),l(this.hydrationIdleId),this.hydrationIdleId=null,this.hydrationQueue=[],this._exitMaximizedEntry(),this.overlayRoot&&(this.overlayRoot.hidden=!0),this.embedEntries.forEach(e=>{e.queued=!1,e.placeholder=null})}setHydrationPaused(e){this.hydrationPaused=!!e,this.hydrationPaused||this.hydrateVisibleEmbeds()}reconcileEmbeds(e){this._exitMaximizedEntry();let t=Array.from(e.querySelectorAll(`.drawio-embed-placeholder[data-drawio-key]`)).map(e=>({filePath:e.dataset.drawioTarget||``,key:e.dataset.drawioKey||``,label:e.dataset.drawioLabel||e.dataset.drawioTarget||``,mode:e.dataset.drawioMode===`edit`?`edit`:`view`,placeholder:e})),n=new Map;t.forEach(e=>{let t=this.embedEntries.get(e.key)||null,r=t&&this.entryMatchesDescriptor(t,e)?t:this.createEntry(e);t&&t!==r&&this.destroyEntry(t),r.filePath=e.filePath,r.key=e.key,r.label=e.label,r.mode=e.mode,r.placeholder=e.placeholder,n.set(e.key,r)}),this.embedEntries.forEach((e,t)=>{n.has(t)||this.destroyEntry(e)}),this.embedEntries=n,this._disconnectPlaceholderObserver(),this._ensurePlaceholderObserver(),this.embedEntries.forEach(e=>{e.wrapper?this.attachWrapper(e):e.queued=!1}),this.hydrationPaused||this.hydrateVisibleEmbeds(),this.syncLayout()}createEntry(e){return{...e,iframe:null,imageElement:null,inlineHeightPx:null,instanceId:``,queued:!1,viewerElement:null,wrapper:null}}entryMatchesDescriptor(e,t){return!!(e&&e.filePath===t.filePath&&e.mode===t.mode)}hydrateVisibleEmbeds(){this.embedEntries.forEach(e=>{if(!e.wrapper&&e.placeholder?.isConnected){if(e.mode===`edit`){this.enqueueHydration(e);return}if(typeof IntersectionObserver>`u`){c(e.placeholder,this.previewContainer,Jt)&&this.enqueueHydration(e);return}this.placeholderObserver?.observe(e.placeholder)}})}_ensurePlaceholderObserver(){this.previewContainer&&typeof IntersectionObserver<`u`&&(this.placeholderObserver=new IntersectionObserver(e=>{e.forEach(e=>{if(!e.isIntersecting)return;let t=this.embedEntries.get(e.target.dataset.drawioKey);t&&!t.wrapper&&this.enqueueHydration(t)})},{root:this.previewContainer,rootMargin:`${Jt}px 0px`}))}_disconnectPlaceholderObserver(){this.placeholderObserver&&=(this.placeholderObserver.disconnect(),null)}enqueueHydration(e){e.queued||(e.queued=!0,this.hydrationQueue.push(e),this.hydrationIdleId===null&&(this.hydrationIdleId=s(()=>{this.hydrationIdleId=null,this.hydrationQueue.splice(0).forEach(e=>{e.queued=!1,this.hydrateEntry(e)})},200)))}hydrateEntry(e){if(e.placeholder?.isConnected&&!e.wrapper){if(e.mode===`view`){this.hydrateViewerEntry(e);return}this.hydrateIframeEntry(e)}}hydrateIframeEntry(e){if(!e.placeholder?.isConnected||e.wrapper)return;let t=document.createElement(`div`);t.className=`drawio-embed diagram-preview-shell${e.mode===`edit`?` is-direct-file`:``}`,t.dataset.file=e.filePath,t.dataset.drawioKey=e.key;let n=document.createElement(`div`);n.className=`drawio-embed-header diagram-preview-toolbar`;let r=document.createElement(`span`);r.className=`drawio-embed-icon`,r.innerHTML=`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="7" height="6" rx="1"/><rect x="14" y="4" width="7" height="6" rx="1"/><rect x="8.5" y="14" width="7" height="6" rx="1"/><path d="M10 7h4"/><path d="M17.5 10v2.5"/><path d="M6.5 10v2.5"/><path d="M6.5 12.5h11"/></svg>`;let i=document.createElement(`span`);i.className=`drawio-embed-label`,i.textContent=e.label.replace(/\.drawio$/i,``),n.append(r,i),e.mode!==`edit`&&n.appendChild(this.createOpenButton(e)),n.appendChild(this.createMaximizeButton(e,t));let a=document.createElement(`iframe`);a.className=`drawio-embed-iframe`,a.loading=`lazy`,a.referrerPolicy=`strict-origin-when-cross-origin`,e.instanceId=`drawio-${++this.instanceCounter}`,a.dataset.instanceId=e.instanceId,a.src=this.buildIframeUrl(e),t.append(n,a),e.iframe=a,e.wrapper=t,this.attachWrapper(e)}async hydrateViewerEntry(e){if(!e.placeholder?.isConnected||e.wrapper)return;let t=document.createElement(`div`);t.className=`drawio-embed diagram-preview-shell is-static-preview`,t.dataset.file=e.filePath,t.dataset.drawioKey=e.key;let n=document.createElement(`div`);n.className=`drawio-embed-header diagram-preview-toolbar`;let r=document.createElement(`span`);r.className=`drawio-embed-icon`,r.innerHTML=`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="7" height="6" rx="1"/><rect x="14" y="4" width="7" height="6" rx="1"/><rect x="8.5" y="14" width="7" height="6" rx="1"/><path d="M10 7h4"/><path d="M17.5 10v2.5"/><path d="M6.5 10v2.5"/><path d="M6.5 12.5h11"/></svg>`;let i=document.createElement(`span`);i.className=`drawio-embed-label`,i.textContent=e.label.replace(/\.drawio$/i,``),n.append(r,i),n.append(this.createOpenButton(e),this.createMaximizeButton(e,t));let a=document.createElement(`div`);a.className=`drawio-viewer-shell`,a.dataset.filePath=e.filePath;let o=document.createElement(`div`);o.className=`preview-shell`,o.textContent=`Rendering draw.io preview…`,a.appendChild(o),t.append(n,a),e.iframe=null,e.wrapper=t,e.viewerElement=a,this.attachWrapper(e);try{await this.renderViewerEntry(e),this.syncEntryLayout(e)}catch(t){this.renderViewerFallback(e,t instanceof Error?t.message:`Failed to render draw.io preview`),this.syncEntryLayout(e)}}async renderViewerEntry(e){let{content:t}=await this.vaultApiClient.readFile(e.filePath);if(!e.wrapper?.isConnected||!e.viewerElement?.isConnected)return;let n=this.getTheme?.()===`light`?`light`:`dark`;e.viewerElement=await qt(e.wrapper.querySelector(`.drawio-viewer-shell`)??e.viewerElement,{ariaLabel:`Open ${e.label.replace(/\.drawio$/i,``)}`,className:`mxgraph drawio-viewer-frame`,onActivate:()=>this.onOpenFile?.(e.filePath),source:String(t??``),theme:n})}buildIframeUrl(e){let t=new URL(S(`/drawio-editor.html`)),n=this.getLocalUser?.()??{},r=E();return r&&t.searchParams.set(`vault`,r),t.searchParams.set(`file`,e.filePath),t.searchParams.set(`hostMode`,e.mode===`edit`?`file-preview`:`embed`),t.searchParams.set(`instanceId`,e.instanceId),t.searchParams.set(`mode`,e.mode===`edit`?`edit`:`view`),t.searchParams.set(`theme`,this.getTheme?.()===`light`?`light`:`dark`),n.name&&t.searchParams.set(`userName`,n.name),n.peerId&&t.searchParams.set(`peerId`,n.peerId),e.mode===`edit`&&t.searchParams.set(`leaseRoom`,D(e.filePath)),t.toString()}updateTheme(e){this.embedEntries.forEach(t=>{t.iframe?.contentWindow&&t.iframe.contentWindow.postMessage({source:`collabmd-host`,theme:e,type:`set-theme`},window.location.origin),t.mode===`view`&&t.wrapper?.isConnected&&t.viewerElement?.isConnected&&this.renderViewerEntry(t).catch(e=>{this.renderViewerFallback(t,e instanceof Error?e.message:`Failed to render draw.io preview`)})})}updateLocalUser(){}syncLayout(){this.embedEntries.forEach(e=>{e.wrapper&&!this.shouldInlineEntry(e)&&this.syncEntryLayout(e)})}attachWrapper(e){let t=e.placeholder?.isConnected?e.placeholder:this.findPlaceholder(e);if(!t)return;if(e.placeholder=t,this.syncMountedEntryMetadata(e),this.shouldInlineEntry(e)){e.wrapper.style.position=``,e.wrapper.style.top=``,e.wrapper.style.left=``,e.wrapper.style.width=``,e.wrapper.style.margin=``,e.wrapper.style.pointerEvents=`auto`,t.replaceWith(e.wrapper),e.placeholder=null;return}let n=this.ensureOverlayRoot();n.hidden=!1,e.wrapper?.parentElement!==n&&n.appendChild(e.wrapper),this.syncEntryLayout(e)}destroyEntry(e){this.maximizedEntry?.key===e?.key&&this._exitMaximizedEntry(),this.resetPlaceholderLayout(e),e?.wrapper?.remove(),e&&(e.placeholder=null,e.wrapper=null,e.iframe=null,e.viewerElement=null)}findPlaceholder(e){return this.previewElement?.querySelector?.(`.drawio-embed-placeholder[data-drawio-key="${e.key}"]`)??null}ensureOverlayRoot(){if(this.overlayRoot?.isConnected&&this.overlayRoot.parentElement===this.previewElement)return this.overlayRoot;let e=this.previewElement?.querySelector?.(`[data-drawio-overlay-root="true"]`);return e||(e=document.createElement(`div`),e.dataset.drawioOverlayRoot=`true`,e.className=`drawio-embed-overlay-root`,this.previewElement?.appendChild(e)),this.overlayRoot=e,e}shouldInlineEntry(e){return e?.key===`${e?.filePath}#file-preview`}syncMountedEntryMetadata(e){e.wrapper&&(e.wrapper.dataset.drawioKey=e.key,e.wrapper.dataset.file=e.filePath,e.wrapper.classList.toggle(`is-direct-file`,this.shouldInlineEntry(e))),e.iframe&&(e.iframe.title=`draw.io: ${e.filePath}`)}resetPlaceholderLayout(e){e?.placeholder?.isConnected&&!this.shouldInlineEntry(e)&&(e.placeholder.classList.remove(`is-hydrated`),e.placeholder.removeAttribute(`data-drawio-hydrated`),e.placeholder.style.height=``,e.placeholder.style.pointerEvents=``)}syncEntryLayout(e){if(!e?.wrapper||this.shouldInlineEntry(e))return;let t=e.placeholder?.isConnected?e.placeholder:this.findPlaceholder(e);if(!t)return;e.placeholder=t,t.classList.add(`is-hydrated`),t.dataset.drawioHydrated=`true`,t.style.pointerEvents=`none`;let n=e.wrapper.classList.contains(`is-maximized`),r=e.wrapper.offsetHeight||Math.ceil(e.wrapper.getBoundingClientRect?.().height||0)||e.inlineHeightPx||420;if(n||(e.inlineHeightPx=r),t.style.height=`${Math.ceil(e.inlineHeightPx||r)}px`,e.wrapper.style.pointerEvents=`auto`,n){e.wrapper.style.position=``,e.wrapper.style.top=``,e.wrapper.style.left=``,e.wrapper.style.width=`auto`,e.wrapper.style.height=`auto`,e.wrapper.style.minHeight=`0`,e.wrapper.style.margin=``;return}e.wrapper.style.position=`absolute`,e.wrapper.style.top=`${t.offsetTop}px`,e.wrapper.style.left=`${t.offsetLeft}px`,e.wrapper.style.width=`${t.offsetWidth}px`,e.wrapper.style.margin=`0`}createOpenButton(e){let t=document.createElement(`button`);return t.type=`button`,t.className=`drawio-embed-btn ui-preview-action ui-preview-action--icon-only`,t.dataset.action=`open-file`,t.dataset.filePath=e.filePath,t.title=`Edit in draw.io`,t.setAttribute(`aria-label`,`Edit in draw.io`),N(t,`edit`),t.addEventListener(`click`,t=>{t.preventDefault(),this.onOpenFile?.(e.filePath)}),t}createMaximizeButton(e,t){let n=document.createElement(`button`);return n.type=`button`,n.className=`drawio-embed-btn ui-preview-action ui-preview-action--icon-only`,n.dataset.action=`toggle-maximize`,n.dataset.filePath=e.filePath,n.dataset.drawioKey=e.key,n.addEventListener(`click`,n=>{n.preventDefault(),this.maximizedEntry?.key===e.key?this._exitMaximizedEntry():this._enterMaximizedEntry(e,t),this._syncMaximizeButtons()}),(()=>{let t=this.maximizedEntry?.key===e.key;N(n,t?`restore`:`maximize`),n.title=t?`Restore diagram size`:`Maximize diagram`,n.setAttribute(`aria-label`,t?`Restore diagram size`:`Maximize diagram`)})(),n}_enterMaximizedEntry(e,t=e?.wrapper){if(e?.wrapper&&e.wrapper===t&&this.maximizedEntry?.key!==e.key){if(this._exitMaximizedEntry(),e.wrapper.parentElement){let t=document.createElement(`div`);t.className=`drawio-maximize-spacer`,t.style.height=`${Math.ceil(e.wrapper.getBoundingClientRect().height)}px`,e.maximizeSpacer=t,e.wrapper.parentElement.insertBefore(t,e.wrapper)}e.wrapper.classList.add(`is-maximized`),e.wrapper.dataset.drawioMaximized=`true`,e.wrapper.style.width=`auto`,e.wrapper.style.height=`auto`,e.wrapper.style.minHeight=`0`,document.body.classList.add(`drawio-maximized-open`),this.maximizedEntry=e,this.overlayRoot?.classList.add(`has-maximized-entry`),this.syncEntryLayout(e)}}_exitMaximizedEntry(){let e=this.maximizedEntry;if(!e?.wrapper){this.maximizedEntry=null;return}let{maximizeSpacer:t}=e;e.wrapper.classList.remove(`is-maximized`),delete e.wrapper.dataset.drawioMaximized,e.wrapper.style.width=``,e.wrapper.style.height=``,e.wrapper.style.minHeight=``,t?.parentElement&&t.remove(),e.maximizeSpacer=null,e.restoreParent=null,e.restoreNextSibling=null,this.maximizedEntry=null,document.body.classList.toggle(`drawio-maximized-open`,!!document.body.querySelector(`.drawio-embed.is-maximized`)),this.overlayRoot?.classList.remove(`has-maximized-entry`),this.syncEntryLayout(e)}_syncMaximizeButtons(){this.embedEntries.forEach(e=>{let t=e.wrapper?.querySelector(`.drawio-embed-btn[data-action="toggle-maximize"]`);if(!(t instanceof HTMLElement))return;let n=this.maximizedEntry?.key===e.key;N(t,n?`restore`:`maximize`),t.title=n?`Restore diagram size`:`Maximize diagram`,t.setAttribute(`aria-label`,n?`Restore diagram size`:`Maximize diagram`)})}_findEntryByInstanceId(e){for(let t of this.embedEntries.values())if(t.instanceId===e)return t;return null}_isMessageFromEntry(e,t){return!!(t?.iframe?.contentWindow&&e.source===t.iframe.contentWindow)}_onMessage(e){if(e.origin!==window.location.origin)return;let t=e.data;if(!t||t.source!==`drawio-editor`)return;let n=this._findEntryByInstanceId(t.instanceId);if(n&&this._isMessageFromEntry(e,n)){if(t.type===`fallback-text`){if(n.mode===`view`){this.renderViewerFallback(n,`Failed to render draw.io preview`);return}this.onOpenTextFile?.(n.filePath);return}if(t.type===`error`){if(n.mode===`view`){this.renderViewerFallback(n,t.message||`Failed to load draw.io preview`);return}this.toastController?.show?.(t.message||`Failed to load draw.io`);return}if(t.type===`request-open-file`){this.onOpenFile?.(n.filePath);return}t.type===`request-toggle-quick-switcher`&&this.onToggleQuickSwitcher?.()}}_onPreviewClick(e){let t=e.target.closest(`.drawio-embed-placeholder-btn`);if(t){let n=t.closest(`.drawio-embed-placeholder`)?.dataset.drawioKey||``,r=this.embedEntries.get(n);r&&(e.preventDefault(),this.hydrateEntry(r));return}}_onKeyDown(e){e.key===`Escape`&&(this._exitMaximizedEntry(),this._syncMaximizeButtons())}renderViewerFallback(e,t){if(!e.wrapper)return;let n=e.wrapper.querySelector(`.drawio-viewer-shell, .drawio-viewer-frame`);if(!n)return;let r=document.createElement(`div`);r.className=`preview-shell`,r.textContent=t,n.replaceChildren(r),e.viewerElement=r}};function Xt(e,t){let n=new Map;t.forEach(t=>{let r=e.get(t.key)??{filePath:t.filePath,iframe:null,instanceId:null,key:t.key,label:t.label,placeholder:t.placeholder,queued:!1,wrapper:null};r.filePath=t.filePath,r.key=t.key,r.label=t.label,r.placeholder=t.placeholder,n.set(t.key,r)});let r=[];return e.forEach((e,t)=>{n.has(t)||r.push(e)}),{nextEntries:n,removedEntries:r}}var Zt=420,Qt=500,$t=15e3,en=800,tn=3,nn=200,rn=`/excalidraw-editor.html`;function an(e,t){let n=e?.querySelectorAll?.(`.excalidraw-embed-placeholder[data-embed-key]`);return Array.from(n||[]).find(e=>e.dataset?.embedKey===t)||null}var on=class{constructor({getTheme:e,getLocalUser:t,onOpenElement:n=null,onOpenFile:r=null,onStopFollowing:i=null,onToggleQuickSwitcher:a=null,previewContainer:o,previewElement:s,toastController:c}){this.getTheme=e,this.getLocalUser=t,this.onOpenElement=n,this.onOpenFile=r,this.onStopFollowing=i,this.onToggleQuickSwitcher=a,this.previewContainer=o,this.previewElement=s,this.toastController=c,this.embedEntries=new Map,this.hydrationQueue=[],this.hydrationIdleId=null,this.hydrationPaused=!1,this.hydrationInProgress=!1,this.instanceCounter=0,this.isLargeDocument=!1,this.maximizedEmbed=null,this.overlayRoot=null,this.warmCacheRoot=null,this.warmEntry=null,this.placeholderObserver=null,this.followedPeerIdsByFilePath=new Map,this.pendingDisconnectRequests=new Map,this.disconnectRequestCounter=0,this.pendingAgentBridgeRequests=new Map,this.agentBridgeRequestCounter=0,this._onMessage=this._onMessage.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onPreviewClick=this._onPreviewClick.bind(this),window.addEventListener(`message`,this._onMessage),window.addEventListener(`keydown`,this._onKeyDown),this.previewElement?.addEventListener(`click`,this._onPreviewClick)}destroy(){window.removeEventListener(`message`,this._onMessage),window.removeEventListener(`keydown`,this._onKeyDown),this.previewElement?.removeEventListener(`click`,this._onPreviewClick),this._disconnectPlaceholderObserver(),l(this.hydrationIdleId),this.hydrationIdleId=null,this.hydrationQueue=[],this._exitMaximizedEmbed(),this.embedEntries.forEach(e=>{this._clearEntryBootTimeout(e),e.resizerCleanup?.(),e.resizerCleanup=null,e.wrapper?.remove(),e.placeholder=null}),this.embedEntries.clear(),this.warmEntry&&=(this._clearEntryBootTimeout(this.warmEntry),this.warmEntry.resizerCleanup?.(),this.warmEntry.resizerCleanup=null,this.warmEntry.wrapper?.remove(),null),this.pendingDisconnectRequests.forEach(e=>{e.resolve(!1)}),this.pendingDisconnectRequests.clear(),this.pendingAgentBridgeRequests.forEach(e=>{e.resolve({status:`destroyed`})}),this.pendingAgentBridgeRequests.clear(),this.followedPeerIdsByFilePath.clear(),this.overlayRoot?.remove(),this.overlayRoot=null,this.warmCacheRoot?.remove(),this.warmCacheRoot=null}async setFollowedUser(e,t=null){if(!e)return!1;this.followedPeerIdsByFilePath.set(e,t||null);let n=this._findEntryByFilePath(e);return!n||(n.wrapper||await this._hydrateEntry(n),n.followedPeerId=this.followedPeerIdsByFilePath.get(e)??null,this._syncEntryFollowState(n),!0)}detachForCommit(){this._disconnectPlaceholderObserver(),l(this.hydrationIdleId),this.hydrationIdleId=null,this.hydrationQueue=[],this.hydrationInProgress=!1,this._exitMaximizedEmbed(),this.overlayRoot&&(this.overlayRoot.hidden=!0),this.embedEntries.forEach(e=>{e.queued=!1,e.placeholder=null})}setHydrationPaused(e){if(this.hydrationPaused=!!e,this.hydrationPaused){l(this.hydrationIdleId),this.hydrationIdleId=null;return}this.hydrateVisibleEmbeds(),this._scheduleHydration()}reconcileEmbeds(e,{isLargeDocument:t=!1}={}){this.isLargeDocument=!!t,this._disconnectPlaceholderObserver(),l(this.hydrationIdleId),this.hydrationIdleId=null,this.hydrationQueue=[],this.hydrationInProgress=!1;let n=Array.from(e.querySelectorAll(`.excalidraw-embed-placeholder[data-embed-key]`)).map(e=>({filePath:e.dataset.embedTarget,key:e.dataset.embedKey,label:e.dataset.embedLabel||e.dataset.embedTarget,placeholder:e})),{nextEntries:r,removedEntries:i}=Xt(this.embedEntries,n);this._captureWarmEntry(i),this._adoptReusableEntries(r,i),i.forEach(e=>this._destroyEntry(e)),this.embedEntries=r,this._ensurePlaceholderObserver(),this.embedEntries.forEach(e=>{if(e.queued=!1,e.followedPeerId=this.followedPeerIdsByFilePath.get(e.filePath),e.wrapper){this._hydrateEntry(e);return}e.placeholder&&this.placeholderObserver?.observe(e.placeholder)}),this.hydrationPaused||this.hydrateVisibleEmbeds(),this.syncLayout()}hydrateVisibleEmbeds(){this.hydrationPaused||this.embedEntries.forEach(e=>{if(!e.wrapper&&e.placeholder?.isConnected){if(typeof IntersectionObserver>`u`||!this.placeholderObserver){let t=this.isLargeDocument?180:420;c(e.placeholder,this.previewContainer,t)&&this._enqueueHydration(e,{prioritize:!0});return}this.placeholderObserver.observe(e.placeholder)}})}updateTheme(e){this._forEachManagedEntry(t=>{this._postMessageToEntry(t,{source:`collabmd-host`,type:`set-theme`,theme:e})})}updateLocalUser(e){this._forEachManagedEntry(t=>{this._syncEntryUser(t,e)})}openCommentThread(e,t){if(!e||!t)return!1;let n=this._findEntryByFilePath(e);return n?(n.pendingCommentThreadId=t,n.isReady?this._postPendingCommentThread(n):n.wrapper||this._enqueueHydration(n,{prioritize:!0}),!0):!1}openElement(e,t,n=`element`){if(!e||!t)return!1;let r=this._findEntryByFilePath(e);return r?(r.pendingElementFocus={elementId:String(t),elementType:n===`group`?`group`:`element`},r.isReady?this._postPendingElement(r):r.wrapper||this._enqueueHydration(r,{prioritize:!0}),!0):!1}prepareFileDisconnect(e,{timeoutMs:t=1e4}={}){let n=this._findEntryByFilePath(e);if(!n?.iframe?.contentWindow)return Promise.resolve(!0);let r=`disconnect-${++this.disconnectRequestCounter}`;return new Promise(e=>{let i=t=>{if(!this.pendingDisconnectRequests.has(r))return;let n=this.pendingDisconnectRequests.get(r);window.clearTimeout(n.timeoutId),this.pendingDisconnectRequests.delete(r),e(t)},a=window.setTimeout(()=>{if(!window.confirm(`This diagram has not reconnected, so its latest queued changes may not be saved. Discard pending changes and leave?`)){this._postMessageToEntry(n,{source:`collabmd-host`,type:`cancel-disconnect`,requestId:r}),this.toastController?.show?.(`Stayed on the diagram while it reconnects`),i(!1);return}this._postMessageToEntry(n,{source:`collabmd-host`,type:`discard-and-disconnect`,requestId:r});let e=this.pendingDisconnectRequests.get(r);e&&(e.timeoutId=window.setTimeout(()=>i(!0),1e3))},t);this.pendingDisconnectRequests.set(r,{entry:n,resolve:i,timeoutId:a}),this._postMessageToEntry(n,{source:`collabmd-host`,type:`prepare-disconnect`,requestId:r})})}flushPendingAgentWrites(e,{signal:t=null,timeoutMs:n=1500}={}){let r=this._findEntryByFilePath(e);return!r?.isReady||!r.iframe?.contentWindow||this._getEntryMode(r)!==`edit`?Promise.resolve({status:`not-active`}):this._requestAgentBridge(r,`flush-agent-writes`,{},{signal:t,timeoutMs:n})}waitForAgentPaint(e,t,{afterRevision:n=``,signal:r=null,timeoutMs:i=5e3}={}){let a=this._findEntryByFilePath(e);return!a?.isReady||!a.iframe?.contentWindow||!t?Promise.resolve({status:`not-active`}):this._requestAgentBridge(a,`wait-for-agent-revision`,{afterRevision:n,revision:t},{signal:r,timeoutMs:i})}_requestAgentBridge(e,t,n,{signal:r,timeoutMs:i}){let a=`agent-bridge-${++this.agentBridgeRequestCounter}`;return new Promise(o=>{let s=e=>{let t=this.pendingAgentBridgeRequests.get(a);t&&(window.clearTimeout(t.timeoutId),r?.removeEventListener?.(`abort`,t.abort),this.pendingAgentBridgeRequests.delete(a),o(e))},c=()=>s({status:`cancelled`}),l=window.setTimeout(()=>s({status:`timeout`}),i);if(this.pendingAgentBridgeRequests.set(a,{abort:c,entry:e,resolve:s,timeoutId:l}),r?.addEventListener?.(`abort`,c,{once:!0}),r?.aborted){c();return}this._postMessageToEntry(e,{...n,requestId:a,source:`collabmd-host`,type:t})})}_ensurePlaceholderObserver(){this.previewContainer&&(this.placeholderObserver=new IntersectionObserver(e=>{e.forEach(e=>{if(!e.isIntersecting)return;let t=this.embedEntries.get(e.target.dataset.embedKey);t&&this._enqueueHydration(t)})},{root:this.previewContainer,rootMargin:this.isLargeDocument?`180px 0px`:`420px 0px`}))}_disconnectPlaceholderObserver(){this.placeholderObserver&&=(this.placeholderObserver.disconnect(),null)}_enqueueHydration(e,{prioritize:t=!1}={}){if(!(!e||e.wrapper||e.queued)&&(e.queued=!0,t?this.hydrationQueue.unshift(e.key):this.hydrationQueue.push(e.key),!this.hydrationPaused)){if(t&&!this.hydrationInProgress&&this.hydrationIdleId===null){this._flushHydrationQueue();return}this._scheduleHydration()}}_scheduleHydration(){this.hydrationPaused||this.hydrationInProgress||this.hydrationIdleId!==null||(this.hydrationIdleId=s(()=>{this.hydrationIdleId=null,this._flushHydrationQueue()},Qt))}async _flushHydrationQueue(){if(this.hydrationPaused||this.hydrationInProgress)return;let e=null;for(;this.hydrationQueue.length>0&&!e;){let t=this.hydrationQueue.shift(),n=this.embedEntries.get(t);if(!n||n.wrapper||!n.placeholder?.isConnected){n&&(n.queued=!1);continue}e=n}e&&(this.hydrationInProgress=!0,e.queued=!1,await this._hydrateEntry(e),this.hydrationInProgress=!1,this.hydrationQueue.length>0&&this._scheduleHydration())}async _hydrateEntry(e){if(e.placeholder?.isConnected||e.wrapper){if(e.isParked=!1,!e.wrapper){let t=this._createEmbedContainer(e);if(!t)return;e.header=t.header,e.wrapper=t.wrapper,e.iframe=t.iframe,e.labelElement=t.labelElement,e.maxButton=t.maxButton,e.openButton=t.openButton,e.instanceId=t.instanceId,e.resizerCleanup=t.resizerCleanup,e.isReady=!1,e.bootFilePath=e.filePath,e.bootMode=this._getEntryMode(e),e.loadedFilePath=e.bootFilePath,e.loadedMode=e.bootMode,e.bootAttempts=(e.bootAttempts??0)+1,this._armEntryBootTimeout(e)}e.followedPeerId=this.followedPeerIdsByFilePath.get(e.filePath),this._updateEmbedLabel(e),this._entryNeedsHardReload(e)&&this._reloadEntry(e),this._attachWrapper(e)}}_attachWrapper(e){let t=e.placeholder?.isConnected?e.placeholder:an(this.previewElement,e.key);if(!t)return;if(e.placeholder=t,this._syncMountedEntryMetadata(e),this._shouldInlineFilePreview(e)){e.wrapper.style.position=``,e.wrapper.style.top=``,e.wrapper.style.left=``,e.wrapper.style.width=``,e.wrapper.style.margin=``,e.wrapper.style.pointerEvents=`auto`,e.isReady=!1,t.replaceWith(e.wrapper),e.placeholder=null;return}let n=this._ensureOverlayRoot();n.hidden=!1,e.wrapper?.parentElement!==n&&(e.isReady=!1,n.appendChild(e.wrapper)),this._syncEntryLayout(e)}_adoptReusableEntries(e,t){e.forEach((n,r)=>{if(n.wrapper||n.iframe)return;let i=this._claimReusableEntry(n,t);i&&(i.filePath=n.filePath,i.key=n.key,i.label=n.label,i.placeholder=n.placeholder,i.pendingElementFocus=null,i.queued=!1,e.set(r,i))})}_destroyEntry(e){this.pendingDisconnectRequests.forEach((t,n)=>{t.entry===e&&(t.resolve(!1),this.pendingDisconnectRequests.delete(n))}),this.maximizedEmbed?.wrapper===e.wrapper&&this._exitMaximizedEmbed(),this._clearEntryBootTimeout(e),e.resizerCleanup?.(),e.resizerCleanup=null,this.warmEntry===e&&(this.warmEntry=null),this._resetPlaceholderLayout(e),this._setEntryLoadingState(e,!1),e.wrapper?.remove(),e.placeholder=null}_armEntryBootTimeout(e,t=$t){this._clearEntryBootTimeout(e),e.bootTimerId=window.setTimeout(()=>{this._handleEntryBootTimeout(e)},t)}_clearEntryBootTimeout(e){e?.bootTimerId&&(window.clearTimeout(e.bootTimerId),e.bootTimerId=null)}async _handleEntryBootTimeout(e){if(e?.iframe?.isConnected){if((e.bootAttempts??0)>=tn){this._clearEntryBootTimeout(e),this.toastController?.show(`Excalidraw embed timed out: ${e.label}`);return}await this._retryEntryBootstrap(e)}}async _retryEntryBootstrap(e){e&&(this._clearEntryBootTimeout(e),this._resetPlaceholderLayout(e),this._setEntryLoadingState(e,!1),this.maximizedEmbed?.wrapper===e.wrapper&&this._exitMaximizedEmbed(),e.wrapper?.remove(),e.wrapper=null,e.iframe=null,e.header=null,e.labelElement=null,e.maxButton=null,e.openButton=null,e.instanceId=null,e.isReady=!1,e.isParked=!1,e.bootFilePath=null,e.bootMode=null,e.loadedFilePath=null,e.loadedMode=null,await this._hydrateEntry(e))}_findEntryByContentWindow(e){if(!e)return null;for(let t of this.embedEntries.values())if(t.iframe?.contentWindow===e)return t;return this.warmEntry?.iframe?.contentWindow===e?this.warmEntry:null}_findEntryByFilePath(e){if(!e)return null;for(let t of this.embedEntries.values())if(t.filePath===e)return t;return this.warmEntry?.filePath===e?this.warmEntry:null}_updateEmbedLabel(e){e.labelElement&&(e.labelElement.textContent=e.label.replace(/\.excalidraw$/i,``))}_syncMountedEntryMetadata(e){e.wrapper&&(e.wrapper.dataset.embedKey=e.key,e.wrapper.dataset.file=e.filePath,e.wrapper.classList.toggle(`is-direct-file`,this._isFilePreviewEntry(e))),e.iframe&&(e.iframe.title=`Excalidraw: ${e.filePath}`),e.openButton&&(this._isFilePreviewEntry(e)?e.openButton.remove():!e.openButton.isConnected&&e.header&&e.header.insertBefore(e.openButton,e.maxButton||null))}_buildIframeUrl(e){let t;try{t=new URL(S(rn))}catch{return null}let n=this.getTheme?.()||`dark`,r=E();r&&t.searchParams.set(`vault`,r),t.searchParams.set(`file`,e.filePath),t.searchParams.set(`theme`,n),t.searchParams.set(`boot`,e.instanceId||``),this._isFilePreviewEntry(e)||t.searchParams.set(`mode`,`preview`);let i=this.getLocalUser?.();i?.name&&t.searchParams.set(`userName`,i.name),i?.color&&t.searchParams.set(`userColor`,i.color),i?.colorLight&&t.searchParams.set(`userColorLight`,i.colorLight),i?.peerId&&t.searchParams.set(`userPeerId`,i.peerId);let a=new URLSearchParams(window.location.search),o=T();return o&&t.searchParams.set(`server`,o),a.get(`test`)===`1`&&t.searchParams.set(`test`,`1`),a.has(`syncTimeoutMs`)&&t.searchParams.set(`syncTimeoutMs`,a.get(`syncTimeoutMs`)),a.get(`excalidrawDebug`)===`1`&&t.searchParams.set(`excalidrawDebug`,`1`),t}_createEmbedContainer(e){let t=this._buildIframeUrl(e);if(!t)return null;let n=document.createElement(`div`);n.className=`excalidraw-embed diagram-preview-shell`,n.dataset.embedKey=e.key,n.dataset.file=e.filePath;let r=document.createElement(`div`);r.className=`excalidraw-embed-header diagram-preview-toolbar`;let i=document.createElement(`span`);i.className=`excalidraw-embed-icon`,i.innerHTML=`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19l7-7 3 3-7 7-3-3z"/><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"/><path d="M2 2l7.586 7.586"/><circle cx="11" cy="11" r="2"/></svg>`;let a=document.createElement(`span`);a.className=`excalidraw-embed-label`,a.textContent=e.label.replace(/\.excalidraw$/i,``);let o=document.createElement(`button`);o.type=`button`,o.className=`excalidraw-embed-btn ui-preview-action ui-preview-action--icon-only`,o.title=`Edit in Excalidraw`,o.setAttribute(`aria-label`,`Edit in Excalidraw`),N(o,`edit`);let s=document.createElement(`button`);s.type=`button`,s.className=`excalidraw-embed-btn ui-preview-action ui-preview-action--icon-only`,s.title=`Maximize diagram`,s.setAttribute(`aria-label`,`Maximize diagram`),N(s,`maximize`),r.append(i,a),this._isFilePreviewEntry(e)||r.append(o),r.append(s);let c=document.createElement(`iframe`);c.className=`excalidraw-embed-iframe`,c.dataset.instanceId=String(++this.instanceCounter),e.instanceId=c.dataset.instanceId,c.src=t.toString(),c.setAttribute(`loading`,`eager`),c.title=`Excalidraw: ${e.filePath}`,c.style.height=`${Zt}px`;let l=document.createElement(`div`);l.className=`excalidraw-embed-resizer`,l.title=`Drag to resize`;let u=this._setupResizer(l,c,()=>{this._syncEntryLayout(e),this._requestPreviewViewportFit(e)});n.append(r,c,l);let d=!1,f=`${Zt}px`,p=()=>{N(s,d?`restore`:`maximize`),s.title=d?`Restore diagram size`:`Maximize diagram`,s.setAttribute(`aria-label`,d?`Restore diagram size`:`Maximize diagram`)},m=()=>{d&&(d=!1,n.classList.remove(`is-maximized`),p(),document.body.classList.toggle(`excalidraw-maximized-open`,!!document.body.querySelector(`.excalidraw-embed.is-maximized`)),this._restoreMaximizedEntryLayout(e),c.style.height=f,this.maximizedEmbed?.wrapper===n&&(this.maximizedEmbed=null),this._syncEntryLayout(e),this._requestPreviewViewportFit(e))},h=()=>{d||(this._exitMaximizedEmbed(),d=!0,f=c.style.height||`${Zt}px`,this._enterMaximizedEntryLayout(e),n.classList.add(`is-maximized`),p(),document.body.classList.add(`excalidraw-maximized-open`),this.maximizedEmbed={wrapper:n,exit:m},this._syncEntryLayout(e),this._requestPreviewViewportFit(e))};return s.addEventListener(`click`,()=>{d?m():h()}),o.addEventListener(`click`,t=>{t.preventDefault(),this._exitMaximizedEmbed(),this.onOpenFile?.(e.filePath)}),p(),{header:r,iframe:c,instanceId:c.dataset.instanceId,labelElement:a,maxButton:s,openButton:o,resizerCleanup:u,wrapper:n}}_ensureWarmCacheRoot(){if(this.warmCacheRoot?.isConnected&&this.warmCacheRoot.parentElement===document.body)return this.warmCacheRoot;let e=document.body.querySelector(`[data-excalidraw-warm-cache-root="true"]`);return e||(e=document.createElement(`div`),e.dataset.excalidrawWarmCacheRoot=`true`,e.className=`excalidraw-warm-cache-root`,document.body.appendChild(e)),this.warmCacheRoot=e,e}_setupResizer(e,t,n=null){let r=0,i=0,a=!1,o=e=>{let n=e.clientY-r,a=Math.min(Math.max(i+n,nn),en);t.style.height=`${a}px`,t.style.pointerEvents=`none`},s=()=>{a&&(a=!1,t.style.pointerEvents=``,document.removeEventListener(`pointermove`,o),document.removeEventListener(`pointerup`,c))},c=()=>{s(),n?.()},l=e=>{e.preventDefault(),a=!0,r=e.clientY,i=t.offsetHeight,document.addEventListener(`pointermove`,o),document.addEventListener(`pointerup`,c)};return e.addEventListener(`pointerdown`,l),()=>{e.removeEventListener?.(`pointerdown`,l),s()}}_ensureOverlayRoot(){if(this.overlayRoot?.isConnected&&this.overlayRoot.parentElement===this.previewElement)return this.overlayRoot;let e=this.previewElement?.querySelector(`[data-excalidraw-overlay-root="true"]`);return e||(e=document.createElement(`div`),e.dataset.excalidrawOverlayRoot=`true`,e.className=`excalidraw-embed-overlay-root`,this.previewElement?.appendChild(e)),this.overlayRoot=e,e}_isFilePreviewEntry(e){return e?.key===`${e?.filePath}#file-preview`}_getEntryMode(e){return this._isFilePreviewEntry(e)?`edit`:`preview`}_shouldInlineFilePreview(e){return this._isFilePreviewEntry(e)}_entryNeedsHardReload(e){let t=this._getEntryMode(e);return!!(e?.wrapper&&e.iframe&&(e.isReady?e.loadedFilePath!==e.filePath||e.loadedMode!==t:e.bootFilePath!==e.filePath||e.bootMode!==t))}_setEntryLoadingState(e,t){e?.wrapper&&(e.wrapper.classList.toggle(`is-loading`,!!t),e.wrapper.setAttribute(`aria-busy`,t?`true`:`false`))}_forEachManagedEntry(e){let t=new Set;this.embedEntries.forEach(n=>{n&&!t.has(n)&&(t.add(n),e(n))}),this.warmEntry&&!t.has(this.warmEntry)&&e(this.warmEntry)}_claimEntryFromRemovedEntries(e,t){let n=e.findIndex(e=>(e.wrapper||e.iframe)&&t(e));if(n<0)return null;let[r]=e.splice(n,1);return r}_claimReusableEntry(e,t){let n=this._getEntryMode(e);return this._claimEntryFromRemovedEntries(t,t=>t.filePath===e.filePath&&this._getEntryMode(t)===n)||(this._isFilePreviewEntry(e)?this._claimEntryFromRemovedEntries(t,t=>t.filePath===e.filePath)||this._claimWarmEntry()||this._claimEntryFromRemovedEntries(t,e=>this._isFilePreviewEntry(e)):null)}_claimWarmEntry(){let e=this.warmEntry;return e?(this.warmEntry=null,e):null}_captureWarmEntry(e){let t=this._claimEntryFromRemovedEntries(e,e=>this._isFilePreviewEntry(e));t&&(this.warmEntry&&this.warmEntry!==t&&this._destroyEntry(this.warmEntry),this.warmEntry=t,this._parkWarmEntry(t))}_parkWarmEntry(e){if(!e?.wrapper)return;this.maximizedEmbed?.wrapper===e.wrapper&&this._exitMaximizedEmbed();let t=this._ensureWarmCacheRoot();this._setEntryLoadingState(e,!1),e.isParked=!0,e.isReady=!1,e.bootFilePath=null,e.bootMode=null,e.loadedFilePath=null,e.loadedMode=null,e.pendingElementFocus=null,e.placeholder=null,e.wrapper.parentElement!==t&&t.appendChild(e.wrapper),this._postMessageToEntry(e,{source:`collabmd-host`,type:`park-room`})}_reloadEntry(e){if(!e?.iframe)return;this._clearEntryBootTimeout(e),this._setEntryLoadingState(e,!0),e.isReady=!1,e.bootAttempts=(e.bootAttempts??0)+1,e.bootFilePath=e.filePath,e.bootMode=this._getEntryMode(e),e.loadedFilePath=null,e.loadedMode=null;let t=this._buildIframeUrl(e);t&&(e.iframe.src=t.toString(),this._armEntryBootTimeout(e))}_resetPlaceholderLayout(e){e?.placeholder?.isConnected&&!this._shouldInlineFilePreview(e)&&(e.placeholder.classList.remove(`is-hydrated`),e.placeholder.removeAttribute(`data-embed-hydrated`),e.placeholder.style.height=``,e.placeholder.style.pointerEvents=``)}_enterMaximizedEntryLayout(e){if(e?.wrapper){if(this._shouldInlineFilePreview(e)&&e.wrapper.parentElement&&!e.maximizeSpacer){let t=document.createElement(`div`);t.className=`excalidraw-maximize-spacer`,t.style.height=`${Math.ceil(e.wrapper.getBoundingClientRect().height)}px`,e.maximizeSpacer=t,e.wrapper.parentElement.insertBefore(t,e.wrapper)}e.wrapper.dataset.excalidrawMaximized=`true`,e.wrapper.style.position=``,e.wrapper.style.top=``,e.wrapper.style.left=``,e.wrapper.style.width=`auto`,e.wrapper.style.height=`auto`,e.wrapper.style.minHeight=`0`,e.wrapper.style.margin=`0`,this.overlayRoot?.classList.add(`has-maximized-entry`)}}_restoreMaximizedEntryLayout(e){if(!e?.wrapper)return;let{maximizeSpacer:t}=e;delete e.wrapper.dataset.excalidrawMaximized,e.wrapper.style.width=``,e.wrapper.style.height=``,e.wrapper.style.minHeight=``,t?.parentElement&&t.remove(),e.maximizeSpacer=null,this.overlayRoot?.classList.remove(`has-maximized-entry`)}_syncEntryLayout(e){if(!e?.wrapper||this._shouldInlineFilePreview(e))return;let t=e.placeholder?.isConnected?e.placeholder:an(this.previewElement,e.key);if(!t)return;e.placeholder=t,t.classList.add(`is-hydrated`),t.dataset.embedHydrated=`true`,t.style.pointerEvents=`none`,this._isFilePreviewEntry(e)&&t.childElementCount>0&&t.replaceChildren();let n=e.wrapper.classList.contains(`is-maximized`),r=e.wrapper.querySelector(`.excalidraw-embed-header`)?.offsetHeight||0,i=e.iframe?.offsetHeight||Number.parseFloat(e.iframe?.style.height||``)||Zt,a=n?0:e.wrapper.querySelector(`.excalidraw-embed-resizer`)?.offsetHeight||0,o=Math.ceil(r+i+a);if(n||(e.inlineHeightPx=o),t.style.height=`${Math.ceil(e.inlineHeightPx||o||Zt)}px`,e.wrapper.style.pointerEvents=`auto`,n){e.wrapper.style.position=``,e.wrapper.style.top=``,e.wrapper.style.left=``,e.wrapper.style.width=`auto`,e.wrapper.style.height=`auto`,e.wrapper.style.minHeight=`0`,e.wrapper.style.margin=`0`;return}e.wrapper.style.position=`absolute`,e.wrapper.style.top=`${t.offsetTop}px`,e.wrapper.style.left=`${t.offsetLeft}px`,e.wrapper.style.width=`${t.offsetWidth}px`,e.wrapper.style.height=``,e.wrapper.style.minHeight=``,e.wrapper.style.margin=`0`}syncLayout(){this.embedEntries.forEach(e=>{e.wrapper&&!this._shouldInlineFilePreview(e)&&this._syncEntryLayout(e)})}_onPreviewClick(e){let t=e.target.closest(`.excalidraw-embed-placeholder-btn`);if(!t)return;e.preventDefault();let n=this.embedEntries.get(t.dataset.embedKey);n&&this._hydrateEntry(n)}_onMessage(e){if(e.origin!==window.location.origin)return;let t=e.data;if(!t||t.source!==`excalidraw-editor`)return;let n=this._findEntryByContentWindow(e.source);if(n){if(t.type===`ready`){if(n.isParked)return;n.isReady=!0,this._clearEntryBootTimeout(n),n.loadedFilePath=n.bootFilePath||n.filePath,n.loadedMode=n.bootMode||this._getEntryMode(n),this._setEntryLoadingState(n,!1),this._syncEntryUser(n),this._postMessageToEntry(n,{source:`collabmd-host`,type:`set-theme`,theme:this.getTheme?.()||`dark`}),this._syncEntryFollowState(n),this._postPendingCommentThread?.(n),this._postPendingElement?.(n),this.pendingDisconnectRequests?.forEach((e,t)=>{e.entry===n&&this._postMessageToEntry(n,{source:`collabmd-host`,type:`prepare-disconnect`,requestId:t})}),this._entryNeedsHardReload(n)&&this._hydrateEntry(n);return}if(t.type===`request-toggle-quick-switcher`){this.onToggleQuickSwitcher?.();return}if(t.type===`stop-following`){this.onStopFollowing?.();return}if(t.type===`open-element-link`){let e=le(t.href,{appPath:C(`/`),origin:window.location.origin});e&&this.onOpenElement?.(e);return}if(t.type===`error`){if(n.isParked)return;n.isReady=!1,this._handleEntryBootTimeout(n);return}if(t.type===`disconnect-ready`){let e=this.pendingDisconnectRequests.get(t.requestId);e?.entry===n&&e.resolve(!0);return}if(t.type===`agent-writes-flushed`||t.type===`agent-revision-painted`||t.type===`agent-revision-not-painted`){let e=this.pendingAgentBridgeRequests.get(t.requestId);e?.entry===n&&e.resolve({...t.revision?{revision:t.revision}:{},status:t.status||(t.type===`agent-writes-flushed`?`flushed`:t.type===`agent-revision-painted`?`painted`:`not-painted`)});return}if(t.type===`disconnect-blocked`){n.authorityState=t.state||`reconnecting-readonly`,this.toastController?.show?.(`Waiting for the diagram to reconnect before leaving`);return}if(t.type===`excalidraw-authority-state`){n.authorityState=t.state||`closed`,n.hasPendingWrites=!!t.hasPendingWrites;return}t.type===`park-blocked`&&(n.authorityState=t.state||`reconnecting-readonly`)}}_onKeyDown(e){e.key===`Escape`&&this._exitMaximizedEmbed()}_exitMaximizedEmbed(){this.maximizedEmbed?.exit&&this.maximizedEmbed.exit(),this.maximizedEmbed=null}_postMessageToEntry(e,t){e?.iframe?.contentWindow?.postMessage(t,window.location.origin)}_postPendingCommentThread(e){e?.isReady&&e.pendingCommentThreadId&&(this._postMessageToEntry(e,{source:`collabmd-host`,threadId:e.pendingCommentThreadId,type:`open-comment-thread`}),e.pendingCommentThreadId=null)}_postPendingElement(e){e?.isReady&&e.pendingElementFocus&&(this._postMessageToEntry(e,{elementId:e.pendingElementFocus.elementId,elementType:e.pendingElementFocus.elementType,source:`collabmd-host`,type:`focus-element`}),e.pendingElementFocus=null)}_requestPreviewViewportFit(e){this._isFilePreviewEntry(e)||this._postMessageToEntry(e,{source:`collabmd-host`,type:`fit-preview-viewport`})}_syncEntryUser(e,t=null){let n=t||this.getLocalUser?.();n&&this._postMessageToEntry(e,{source:`collabmd-host`,type:`set-user`,user:{color:n.color||``,colorLight:n.colorLight||``,name:n.name||``,peerId:n.peerId||``}})}_syncEntryFollowState(e){e?.isReady&&e.followedPeerId!==void 0&&this._postMessageToEntry(e,{source:`collabmd-host`,type:`follow-user`,peerId:e.followedPeerId})}},sn=16/9,cn=240,ln=720,un=180;function dn(e){return Math.max(un,Math.min(ln,Math.ceil(e||cn)))}var fn=class{constructor({previewElement:e}){this.previewElement=e,this.embedEntries=new Map,this.overlayRoot=null}destroy(){this.embedEntries.forEach(e=>{e.hydrateFrameId&&=(cancelAnimationFrame(e.hydrateFrameId),null),e.wrapper?.remove(),e.placeholder=null}),this.embedEntries.clear(),this.overlayRoot?.remove(),this.overlayRoot=null}detachForCommit(){this.embedEntries.forEach(e=>{e.placeholder=null})}reconcileEmbeds(e=this.previewElement){if(this.previewElement=e,!e)return;let t=Array.from(e.querySelectorAll(`.video-embed-placeholder[data-video-embed-key]`)).map(e=>({filePath:e.dataset.videoEmbedSource,key:e.dataset.videoEmbedKey,label:e.dataset.videoEmbedLabel||`Embedded video`,placeholder:e,source:e.dataset.videoEmbedSource||``,kind:e.dataset.videoEmbedKind||``,url:e.dataset.videoEmbedUrl||``,mimeType:e.dataset.videoEmbedMimeType||``})),{nextEntries:n,removedEntries:r}=Xt(this.embedEntries,t);r.forEach(e=>this._destroyEntry(e)),this.embedEntries=n,this.embedEntries.forEach(e=>{e.aspectRatio=e.aspectRatio||sn,e.kind=e.placeholder?.dataset.videoEmbedKind||e.kind,e.label=e.placeholder?.dataset.videoEmbedLabel||e.label,e.mimeType=e.placeholder?.dataset.videoEmbedMimeType||e.mimeType,e.source=e.placeholder?.dataset.videoEmbedSource||e.source,e.url=e.placeholder?.dataset.videoEmbedUrl||e.url,e.wrapper||this._createEmbed(e),this._attachWrapper(e)}),this.syncLayout(),this.embedEntries.size===0&&(this.overlayRoot?.remove(),this.overlayRoot=null)}syncLayout(){this.embedEntries.forEach(e=>{e.wrapper&&this._syncEntryLayout(e)})}_destroyEntry(e){e.hydrateFrameId&&=(cancelAnimationFrame(e.hydrateFrameId),null),e.wrapper?.remove(),e.placeholder=null}_createEmbed(e){let t=document.createElement(`div`);if(t.className=`video-embed video-embed-shell diagram-preview-shell is-${e.kind}`,e.kind===`youtube`){let n=document.createElement(`div`);n.className=`video-embed-frame video-embed-frame-youtube`;let r=document.createElement(`iframe`);r.className=`video-embed-iframe`,r.title=e.label||`Embedded YouTube video`,r.referrerPolicy=`strict-origin-when-cross-origin`,r.allow=`accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share`,r.allowFullscreen=!0,n.appendChild(r),t.appendChild(n),e.mediaElement=r}else{let n=document.createElement(`video`);n.className=`video-embed-player`,n.controls=!0,n.preload=`metadata`,n.playsInline=!0,e.label&&(n.title=e.label,n.setAttribute(`aria-label`,e.label));let r=document.createElement(`source`);r.src=e.url,e.mimeType&&(r.type=e.mimeType),n.appendChild(r),n.addEventListener(`loadedmetadata`,()=>{Number.isFinite(n.videoWidth)&&Number.isFinite(n.videoHeight)&&n.videoWidth>0&&n.videoHeight>0&&(e.aspectRatio=n.videoWidth/n.videoHeight,this._syncEntryLayout(e))}),t.appendChild(n),e.mediaElement=n}e.wrapper=t}_attachWrapper(e){let t=e.placeholder?.isConnected?e.placeholder:this.previewElement?.querySelector(`.video-embed-placeholder[data-video-embed-key="${e.key}"]`);if(!t)return;e.placeholder=t,t.classList.add(`is-hydrated`),t.dataset.videoEmbedHydrated=`true`,t.style.pointerEvents=`none`;let n=this._ensureOverlayRoot();e.wrapper?.parentElement!==n&&n.appendChild(e.wrapper)}_syncEntryLayout(e){let t=e.placeholder?.isConnected?e.placeholder:this.previewElement?.querySelector(`.video-embed-placeholder[data-video-embed-key="${e.key}"]`);if(!t||!e.wrapper)return;e.placeholder=t;let n=t.offsetWidth||t.clientWidth||0;if(n<=0&&e.inlineHeightPx)return;let r=dn(n>0?n/(e.aspectRatio||sn):e.inlineHeightPx);e.inlineHeightPx=r,Z(t,`height`,`${r}px`),Z(e.wrapper,`position`,`absolute`),Z(e.wrapper,`top`,`${t.offsetTop}px`),Z(e.wrapper,`left`,`${t.offsetLeft}px`),Z(e.wrapper,`width`,`${t.offsetWidth}px`),Z(e.wrapper,`height`,`${r}px`),Z(e.wrapper,`margin`,`0`),Z(e.wrapper,`pointerEvents`,`auto`),this._hydrateEntryMedia(e)}_ensureOverlayRoot(){let e=this.previewElement?.querySelector(`[data-video-overlay-root="true"]`);return e||(e=document.createElement(`div`),e.dataset.videoOverlayRoot=`true`,e.className=`video-embed-overlay-root`,this.previewElement?.appendChild(e)),this.overlayRoot=e,e}_hydrateEntryMedia(e){if(e.kind!==`youtube`)return;let t=e.mediaElement;t instanceof HTMLIFrameElement&&e.url&&t.getAttribute(`src`)!==e.url&&(e.wrapper?.offsetWidth<=0||e.wrapper?.offsetHeight<=0||(e.hydrateFrameId||=requestAnimationFrame(()=>{if(e.hydrateFrameId=null,!e.url||t.getAttribute(`src`)===e.url)return;let n=Math.round(e.wrapper?.offsetWidth||0),r=Math.round(e.wrapper?.offsetHeight||0);n<=0||r<=0||(t.width=String(n),t.height=String(r),t.src=e.url)})))}};function Z(e,t,n){e&&e.style[t]!==n&&(e.style[t]=n)}function pn(e,t=[],n=[],r=[]){for(let i of e)if(i?.path&&i?.type){if(n.push({lowerPath:String(i.path).toLowerCase(),name:i.name,path:i.path,type:i.type}),i.type!==`directory`){t.push(i.path),r.push({mtimeMs:i.mtimeMs,path:i.path});continue}i.type===`directory`&&Array.isArray(i.children)&&pn(i.children,t,n,r)}return{fileEntries:r,files:t,searchEntries:n}}function mn(e,t){for(let n of e??[]){if(n?.path===t)return n;if(n?.type===`directory`&&Array.isArray(n.children)){let e=mn(n.children,t);if(e)return e}}return null}function hn(e){let t=0,n=0;for(let r of e?.children??[]){if(r?.type===`directory`){t+=1;let e=hn(r);t+=e.directoryCount,n+=e.fileCount;continue}n+=1}return{directoryCount:t,fileCount:n}}function gn(e,t,n){return e===t?n:`${n}${e.slice(t.length)}`}var _n=class{constructor(){this.tree=[],this.flatFiles=[],this.flatDocumentFiles=[],this.flatFileEntries=[],this.flatSearchEntries=[],this.activeFilePath=null,this.expandedDirs=new Set,this.searchQuery=``}setTree(t){this.tree=Array.isArray(t)?t:[];let n=pn(this.tree,[],[],[]);this.flatFiles=n.files,this.flatDocumentFiles=n.files.filter(t=>!e(t)),this.flatFileEntries=n.fileEntries,this.flatSearchEntries=n.searchEntries}setSearchQuery(e){this.searchQuery=String(e??``)}getSearchMatches(){let e=this.searchQuery.trim().toLowerCase();return e?this.flatSearchEntries.filter(t=>t.type!==`directory`&&t.lowerPath.includes(e)).map(e=>({name:e.name,path:e.path,type:e.type})):[]}getNode(e){return mn(this.tree,e)}getDirectoryDescendantSummary(e){let t=this.getNode(e);return!t||t.type!==`directory`?{directoryCount:0,fileCount:0}:hn(t)}setActiveFile(e){this.activeFilePath=e||null,e&&this.expandDirectoryPath(e,{includeLeaf:!1})}toggleDirectory(e){return this.expandedDirs.has(e)?(this.expandedDirs.delete(e),!1):(this.expandedDirs.add(e),!0)}expandDirectoryPath(e,{includeLeaf:t=!0}={}){let n=a(e);if(!n)return;let r=n.split(`/`),i=t?r.length:Math.max(r.length-1,0),o=``;for(let e=0;e<i;e+=1)o=o?`${o}/${r[e]}`:r[e],this.expandedDirs.add(o)}replaceExpandedDirectoryPrefix(e,t){let n=new Set;this.expandedDirs.forEach(r=>{if(r===e||r.startsWith(`${e}/`)){n.add(gn(r,e,t));return}n.add(r)}),this.expandedDirs=n}removeExpandedDirectoryPrefix(e){let t=new Set;this.expandedDirs.forEach(n=>{n===e||n.startsWith(`${e}/`)||t.add(n)}),this.expandedDirs=t}},Q=1,vn=6,yn=.25,bn=2,$=6;function xn(e){let t=Number(e);return Number.isFinite(t)?Math.min(vn,Math.max(Q,Math.round(t*100)/100)):Q}function Sn(e,{contentSize:t=0,scale:n=1,viewportSize:r=0}={}){let i=Number(e),a=Number(t),o=Number(n),s=Number(r);if(!Number.isFinite(i)||!Number.isFinite(a)||!Number.isFinite(o)||!Number.isFinite(s))return 0;let c=(a*o-s)/2;return c<=0?0:Math.min(Math.max(i,-c),c)}var Cn=class{constructor({previewElement:e,documentRef:t=document,windowRef:n=window}){this.previewElement=e,this.document=t,this.window=n,this.overlayRoot=null,this.viewport=null,this.imageElement=null,this.zoomLabel=null,this.titleElement=null,this.isOpen=!1,this.scale=Q,this.offsetX=0,this.offsetY=0,this.activePointerId=null,this.dragStartX=0,this.dragStartY=0,this.dragOriginX=0,this.dragOriginY=0,this.touchPointers=new Map,this.pinchPointerIds=[],this.pinchStartDistance=0,this.pinchStartScale=Q,this.pinchStartOffsetX=0,this.pinchStartOffsetY=0,this.pinchStartCenter={x:0,y:0},this.didDrag=!1,this.resetButton=null,this.previouslyFocusedElement=null,this.blockingModalHandler=()=>this.close(),this.listenerController=new AbortController;let{signal:r}=this.listenerController;this.handlePreviewClick=e=>{let t=e.target;if(!(t instanceof this.window.Element))return;let n=t.closest(`img`);n&&this.previewElement?.contains(n)&&(n.closest(`[data-video-overlay-root="true"], [data-excalidraw-overlay-root="true"]`)||(e.preventDefault(),e.stopImmediatePropagation?.(),this.openFromImage(n)))},this.handleKeyDown=e=>{if(this.isOpen){if(e.key===`+`||e.key===`=`){e.preventDefault(),this.zoomBy(yn);return}if(e.key===`-`){e.preventDefault(),this.zoomBy(-.25);return}e.key===`0`&&(e.preventDefault(),this.resetView())}},this.handleWindowResize=()=>{this.isOpen&&(this.clampOffsets(),this.syncTransform())},this.previewElement?.addEventListener(`click`,this.handlePreviewClick,{signal:r}),this.document.addEventListener(`keydown`,this.handleKeyDown,{signal:r}),this.window.addEventListener(`resize`,this.handleWindowResize,{signal:r})}destroy(){this.listenerController?.abort(),this.listenerController=null,this.close(),this.overlayRoot?.remove(),this.overlayRoot=null,this.viewport=null,this.imageElement=null,this.zoomLabel=null,this.titleElement=null,this.resetButton=null}openFromImage(e){let t=e?.currentSrc||e?.getAttribute?.(`src`)||``;return t?(this.ensureOverlayRoot(),this.previouslyFocusedElement=this.document.activeElement instanceof this.window.HTMLElement?this.document.activeElement:null,this.resetView(),this.titleElement.textContent=e.getAttribute(`alt`)||`Image preview`,this.imageElement.src=t,this.imageElement.alt=e.getAttribute(`alt`)||``,this.overlayRoot.showModal(),this.isOpen=!0,this.document.body.classList.add(`image-lightbox-open`),this.document.addEventListener(`collabmd:close-custom-modals`,this.blockingModalHandler),this.syncTransform(),this.overlayRoot.querySelector(`button:not(:disabled)`)?.focus(),!0):!1}close(){(this.isOpen||this.overlayRoot)&&(this.stopDrag(),this.touchPointers.clear(),this.pinchPointerIds=[],this.pinchStartDistance=0,this.didDrag=!1,this.viewport?.classList?.remove(`is-dragging`),this.overlayRoot?.open&&this.overlayRoot.close(),this.isOpen=!1,this.document.body.classList.remove(`image-lightbox-open`),this.document.removeEventListener(`collabmd:close-custom-modals`,this.blockingModalHandler),this.previouslyFocusedElement?.focus?.(),this.previouslyFocusedElement=null)}resetView(){this.scale=Q,this.offsetX=0,this.offsetY=0,this.syncTransform()}zoomBy(e){this.setScale(this.scale+e)}setScale(e){this.scale=xn(e),this.clampOffsets(),this.syncTransform()}capturePointer(e){try{this.viewport?.setPointerCapture?.(e)}catch{}}releasePointer(e){try{this.viewport?.releasePointerCapture?.(e)}catch{}}getViewportPointFromClient(e,t){if(!this.viewport)return{x:0,y:0};let n=this.viewport.getBoundingClientRect();return{x:Number(e)-n.left-n.width/2,y:Number(t)-n.top-n.height/2}}setScaleAroundViewportPoint(e,t,{originScale:n=this.scale,originOffsetX:r=this.offsetX,originOffsetY:i=this.offsetY,targetViewportPoint:a=t}={}){let o=xn(e),s=Number(n)>0?Number(n):Q,c=Number.isFinite(t?.x)?t.x:0,l=Number.isFinite(t?.y)?t.y:0,u=Number.isFinite(a?.x)?a.x:c,d=Number.isFinite(a?.y)?a.y:l;this.scale=o,this.offsetX=u-(c-r)/s*o,this.offsetY=d-(l-i)/s*o,this.clampOffsets(),this.syncTransform()}startDrag(e,t,n){return!this.viewport||this.scale<=Q?!1:(this.activePointerId=e,this.dragStartX=t,this.dragStartY=n,this.dragOriginX=this.offsetX,this.dragOriginY=this.offsetY,this.viewport.classList.add(`is-dragging`),this.capturePointer(e),!0)}stopDrag(e=this.activePointerId){e===this.activePointerId&&(this.activePointerId=null),this.viewport?.classList?.remove(`is-dragging`),e!==null&&this.releasePointer(e),this.imageElement&&(this.imageElement.style.cursor=this.scale>Q?`grab`:`zoom-in`)}updateDrag(e,t,n){return!this.isOpen||this.activePointerId!==e?!1:(!this.didDrag&&(Math.abs(t-this.dragStartX)>=$||Math.abs(n-this.dragStartY)>=$)&&(this.didDrag=!0),this.offsetX=this.dragOriginX+(t-this.dragStartX),this.offsetY=this.dragOriginY+(n-this.dragStartY),this.clampOffsets(),this.syncTransform(),!0)}getTrackedTouchPointers(){return Array.from(this.touchPointers.values())}getActivePinchPointers(){if(this.pinchPointerIds.length===2){let e=this.pinchPointerIds.map(e=>this.touchPointers.get(e)).filter(Boolean);if(e.length===2)return e}return this.getTrackedTouchPointers().slice(0,2)}startPinchGesture(){let[e,t]=this.getActivePinchPointers();if(!e||!t)return!1;this.stopDrag(),this.pinchPointerIds=[e.pointerId,t.pointerId],this.pinchStartDistance=Math.hypot(t.clientX-e.clientX,t.clientY-e.clientY)||1,this.pinchStartScale=this.scale,this.pinchStartOffsetX=this.offsetX,this.pinchStartOffsetY=this.offsetY;let n=this.getViewportPointFromClient((e.clientX+t.clientX)/2,(e.clientY+t.clientY)/2);return this.pinchStartCenter=n,!0}updatePinchGesture(){let[e,t]=this.getActivePinchPointers();if(!e||!t)return!1;let n=Math.hypot(t.clientX-e.clientX,t.clientY-e.clientY);if(!Number.isFinite(n)||n<=0)return!1;let r=this.getViewportPointFromClient((e.clientX+t.clientX)/2,(e.clientY+t.clientY)/2),i=this.pinchStartScale*(n/this.pinchStartDistance);return this.setScaleAroundViewportPoint(i,this.pinchStartCenter,{originScale:this.pinchStartScale,originOffsetX:this.pinchStartOffsetX,originOffsetY:this.pinchStartOffsetY,targetViewportPoint:r}),!this.didDrag&&(Math.abs(n-this.pinchStartDistance)>=$||Math.abs(r.x-this.pinchStartCenter.x)>=$||Math.abs(r.y-this.pinchStartCenter.y)>=$)&&(this.didDrag=!0),!0}syncTouchGestureAfterPointerChange(){if(this.touchPointers.size>=2){this.startPinchGesture();return}if(this.pinchPointerIds=[],this.pinchStartDistance=0,this.touchPointers.size===1&&this.scale>Q){let[e]=this.getTrackedTouchPointers();this.startDrag(e.pointerId,e.clientX,e.clientY);return}this.stopDrag()}clampOffsets(){if(!this.viewport||!this.imageElement){this.offsetX=0,this.offsetY=0;return}this.offsetX=Sn(this.offsetX,{contentSize:this.imageElement.offsetWidth||0,scale:this.scale,viewportSize:this.viewport.clientWidth||0}),this.offsetY=Sn(this.offsetY,{contentSize:this.imageElement.offsetHeight||0,scale:this.scale,viewportSize:this.viewport.clientHeight||0})}syncTransform(){this.imageElement&&(this.imageElement.style.transform=`translate3d(${this.offsetX}px, ${this.offsetY}px, 0) scale(${this.scale})`,this.imageElement.style.cursor=this.scale>Q?`grab`:`zoom-in`,this.zoomLabel&&(this.zoomLabel.textContent=`${Math.round(this.scale*100)}%`),this.resetButton&&(this.resetButton.disabled=this.scale<=Q&&this.offsetX===0&&this.offsetY===0))}ensureOverlayRoot(){if(this.overlayRoot?.isConnected&&this.overlayRoot.parentElement===this.document.body)return this.overlayRoot;let e=this.document.createElement(`dialog`);e.className=`image-lightbox-root`,e.dataset.imageLightboxRoot=`true`,e.setAttribute(`aria-labelledby`,`imageLightboxTitle`),e.addEventListener(`cancel`,e=>{e.preventDefault(),this.close()});let t=this.document.createElement(`button`);t.className=`image-lightbox-backdrop`,t.type=`button`,t.setAttribute(`aria-label`,`Close image preview`),t.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),this.close()});let n=this.document.createElement(`div`);n.className=`image-lightbox-shell`,n.addEventListener(`click`,e=>e.stopPropagation()),n.addEventListener(`pointerdown`,e=>e.stopPropagation());let r=this.document.createElement(`div`);r.className=`image-lightbox-toolbar`;let i=this.document.createElement(`div`);i.className=`image-lightbox-title`,i.id=`imageLightboxTitle`,i.textContent=`Image preview`;let a=this.document.createElement(`div`);a.className=`image-lightbox-controls`;let o=this.createControlButton(`-`,`Zoom out`,()=>this.zoomBy(-.25)),s=this.document.createElement(`span`);s.className=`image-lightbox-zoom-label`,s.textContent=`100%`;let c=this.createControlButton(`+`,`Zoom in`,()=>this.zoomBy(yn)),l=this.createControlButton(`Reset`,`Reset zoom and position`,()=>this.resetView()),u=this.createControlButton(`Close`,`Close image preview`,()=>this.close());a.append(o,s,c,l,u),r.append(i,a);let d=this.document.createElement(`div`);d.className=`image-lightbox-viewport`;let f=this.document.createElement(`img`);f.className=`image-lightbox-image`,f.alt=``,f.addEventListener(`load`,()=>{this.clampOffsets(),this.syncTransform()}),d.addEventListener(`wheel`,e=>{if(!this.isOpen)return;if(e.ctrlKey){e.preventDefault(),this.zoomBy(e.deltaY<0?yn:-.25);return}if(this.scale<=Q)return;let t=Number.isFinite(e.deltaX)?e.deltaX:0,n=Number.isFinite(e.deltaY)?e.deltaY:0;(t!==0||n!==0)&&(e.preventDefault(),this.offsetX-=t,this.offsetY-=n,this.clampOffsets(),this.syncTransform())},{passive:!1}),d.addEventListener(`pointerdown`,e=>{if(this.isOpen){if(e.pointerType===`touch`){this.touchPointers.size===0&&(this.didDrag=!1),this.touchPointers.set(e.pointerId,{clientX:e.clientX,clientY:e.clientY,pointerId:e.pointerId}),this.capturePointer(e.pointerId),this.syncTouchGestureAfterPointerChange(),(this.touchPointers.size>1||this.scale>Q)&&e.preventDefault();return}this.scale<=Q||e.button!==0||(this.didDrag=!1,this.startDrag(e.pointerId,e.clientX,e.clientY),e.preventDefault())}}),d.addEventListener(`pointermove`,e=>{if(this.isOpen){if(e.pointerType===`touch`&&this.touchPointers.has(e.pointerId)){if(this.touchPointers.set(e.pointerId,{clientX:e.clientX,clientY:e.clientY,pointerId:e.pointerId}),this.touchPointers.size>=2){this.updatePinchGesture(),e.preventDefault();return}this.updateDrag(e.pointerId,e.clientX,e.clientY)&&e.preventDefault();return}this.updateDrag(e.pointerId,e.clientX,e.clientY)}});let p=e=>{if(e.pointerType===`touch`){this.touchPointers.delete(e.pointerId),this.releasePointer(e.pointerId),this.activePointerId===e.pointerId&&this.stopDrag(e.pointerId),this.syncTouchGestureAfterPointerChange();return}this.activePointerId===e.pointerId&&this.stopDrag(e.pointerId)};return d.addEventListener(`pointerup`,p),d.addEventListener(`pointercancel`,p),d.addEventListener(`lostpointercapture`,p),f.addEventListener(`click`,e=>{if(this.isOpen){if(e.preventDefault(),e.stopPropagation(),this.didDrag){this.didDrag=!1;return}this.scale<=Q&&this.setScale(bn)}}),d.appendChild(f),n.append(r,d),e.append(t,n),this.document.body.appendChild(e),this.overlayRoot=e,this.viewport=d,this.imageElement=f,this.zoomLabel=s,this.titleElement=i,this.resetButton=l,this.syncTransform(),e}createControlButton(e,t,n,{className:r=``}={}){let i=this.document.createElement(`button`);return i.className=`image-lightbox-btn ${r}`.trim(),i.type=`button`,i.setAttribute(`aria-label`,t),i.textContent=e,i.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),n(e)}),i}};export{on as a,Ut as c,F as d,P as f,A as g,xe as h,fn as i,Ve as l,N as m,_n as n,Yt as o,Re as p,pn as r,qt as s,Cn as t,Be as u};