collabmd 0.1.25 → 0.1.26

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 (385) hide show
  1. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-BHWNpLuY.js → CodeMirrorEditor-UCMRAMCV-C5yVpm45.js} +1 -1
  2. package/dist/client/assets/{_basePickBy-CJWegqog.js → _basePickBy-Dr0N-hVE.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-CFKN1k1n.js → _baseUniq-BddJc3B1.js} +1 -1
  4. package/dist/client/assets/{ar-SA-NXDWD63E-DND5MLpM.js → ar-SA-NXDWD63E-C3GLfrYV.js} +1 -1
  5. package/dist/client/assets/{arc-D1SV2GW0.js → arc-fx_D7wYg.js} +1 -1
  6. package/dist/client/assets/architecture-PBZL5I3N-C1Yv7agI.js +1 -0
  7. package/dist/client/assets/{architectureDiagram-2XIMDMQ5-DXpDe6lq.js → architectureDiagram-2XIMDMQ5-T__yxKk2.js} +1 -1
  8. package/dist/client/assets/{az-AZ-MXSORGZV-ILYw2sYr.js → az-AZ-MXSORGZV-BJ2t-y-C.js} +1 -1
  9. package/dist/client/assets/{bg-BG-O6MV2KSF-DmfoZHM8.js → bg-BG-O6MV2KSF-Cd3kEZI-.js} +1 -1
  10. package/dist/client/assets/{blockDiagram-WCTKOSBZ-DlJn0Rs1.js → blockDiagram-WCTKOSBZ-BivLpsk_.js} +1 -1
  11. package/dist/client/assets/{bn-IN-MMW2ORAC-CmlBLY7g.js → bn-BD-T2VJNT7N-BFCx9nbZ.js} +1 -1
  12. package/dist/client/assets/{bn-BD-T2VJNT7N-uYQx1Wph.js → bn-IN-MMW2ORAC-Dn9W9dUT.js} +1 -1
  13. package/dist/client/assets/{c4Diagram-IC4MRINW-C6S9MOEW.js → c4Diagram-IC4MRINW-nVzPTZmV.js} +1 -1
  14. package/dist/client/assets/{ca-ES-MKBCGNOG-DWiYvMvF.js → ca-ES-MKBCGNOG-D_BNlrmg.js} +1 -1
  15. package/dist/client/assets/channel-DBZin7O0.js +1 -0
  16. package/dist/client/assets/{chunk-27N2SPOM-RxZ2_zJJ.js → chunk-27N2SPOM-CyIruM79.js} +4 -4
  17. package/dist/client/assets/{chunk-4BX2VUAB-LBTVcC6-.js → chunk-4BX2VUAB-n_yl-toC.js} +1 -1
  18. package/dist/client/assets/{chunk-55IACEB6-T5nuDI6U.js → chunk-55IACEB6-CJ9i_5Da.js} +1 -1
  19. package/dist/client/assets/{chunk-7E7YKBS2-CBNUsbS7.js → chunk-7E7YKBS2-CebEBDsj.js} +1 -1
  20. package/dist/client/assets/{chunk-7R4GIKGN-Dh9p1sbP.js → chunk-7R4GIKGN-BXNhzFkP.js} +2 -2
  21. package/dist/client/assets/{chunk-C72U2L5F-DLNOvzEI.js → chunk-C72U2L5F-Cck8MvGP.js} +1 -1
  22. package/dist/client/assets/{chunk-EGIJ26TM-BkBsHEWn.js → chunk-EGIJ26TM-BDQ7tRV-.js} +1 -1
  23. package/dist/client/assets/{chunk-FMBD7UC4-BoiIqhkb.js → chunk-FMBD7UC4-DAcjCJR-.js} +1 -1
  24. package/dist/client/assets/{chunk-GEFDOKGD-CIg-LRSp.js → chunk-GEFDOKGD-CYSNVsp-.js} +1 -1
  25. package/dist/client/assets/chunk-GLR3WWYH-FplqAopN.js +2 -0
  26. package/dist/client/assets/chunk-HHEYEP7N-Bv_FKHmu.js +1 -0
  27. package/dist/client/assets/{chunk-JSJVCQXG-C6-G93S3.js → chunk-JSJVCQXG-CLgStmEI.js} +1 -1
  28. package/dist/client/assets/{chunk-KX2RTZJC-CJlt0Rne.js → chunk-KX2RTZJC-B__vUl1o.js} +1 -1
  29. package/dist/client/assets/{chunk-KYZI473N-C-ObF5L3.js → chunk-KYZI473N-BpfobHkp.js} +1 -1
  30. package/dist/client/assets/{chunk-L3YUKLVL-BzkNNFii.js → chunk-L3YUKLVL-B7jdwbRL.js} +1 -1
  31. package/dist/client/assets/{chunk-MX3YWQON-bjcMtEei.js → chunk-MX3YWQON-DNcuP5dS.js} +1 -1
  32. package/dist/client/assets/{chunk-NQ4KR5QH-DY9oh8PD.js → chunk-NQ4KR5QH-oaq5iS2W.js} +1 -1
  33. package/dist/client/assets/{chunk-O4XLMI2P-CVfnFXq8.js → chunk-O4XLMI2P-NI4OcSZ6.js} +1 -1
  34. package/dist/client/assets/{chunk-OZEHJAEY-DyD-ywvu.js → chunk-OZEHJAEY-BevHLeQ0.js} +1 -1
  35. package/dist/client/assets/{chunk-PQ6SQG4A-BOJs3QbF.js → chunk-PQ6SQG4A-fQ_Oml5n.js} +1 -1
  36. package/dist/client/assets/{chunk-PU5JKC2W-1nkyDxBh.js → chunk-PU5JKC2W-Bp4H-mwZ.js} +1 -1
  37. package/dist/client/assets/chunk-QZHKN3VN-Blawx8vd.js +1 -0
  38. package/dist/client/assets/{chunk-R5LLSJPH-D9t4mFiL.js → chunk-R5LLSJPH-CZzZlfdI.js} +1 -1
  39. package/dist/client/assets/{chunk-SRAX5OIU-B-Zdxy2r.js → chunk-SRAX5OIU-CtUYAya6.js} +1 -1
  40. package/dist/client/assets/{chunk-WL4C6EOR-Bs95uEnp.js → chunk-WL4C6EOR-DnV9nMco.js} +1 -1
  41. package/dist/client/assets/{chunk-XIRO2GV7-CtwY16Jh.js → chunk-XIRO2GV7-BnkmoLpc.js} +1 -1
  42. package/dist/client/assets/{chunk-XPW4576I-CvxG514V.js → chunk-XPW4576I-DOk6pMat.js} +1 -1
  43. package/dist/client/assets/{chunk-XZSTWKYB-BNB3Mgw3.js → chunk-XZSTWKYB-DZzfqgVn.js} +1 -1
  44. package/dist/client/assets/{chunk-YBOYWFTD-MIDp82ug.js → chunk-YBOYWFTD-CrI5WFnC.js} +1 -1
  45. package/dist/client/assets/{chunk-Z5NKEFVG-CIMf1Se5.js → chunk-Z5NKEFVG-EGvolisB.js} +1 -1
  46. package/dist/client/assets/classDiagram-VBA2DB6C-CreQafQu.js +1 -0
  47. package/dist/client/assets/classDiagram-v2-RAHNMMFH-BIYHzbiv.js +1 -0
  48. package/dist/client/assets/clone-C3ajWNce.js +1 -0
  49. package/dist/client/assets/{cose-bilkent-S5V4N54A-BKEY00wk.js → cose-bilkent-S5V4N54A-PcMOD_rX.js} +1 -1
  50. package/dist/client/assets/{cs-CZ-V77HGUP7-sLBAF2Iw.js → cs-CZ-V77HGUP7-gpioT6mv.js} +1 -1
  51. package/dist/client/assets/{da-DK-I5RFNTM4-B__PLwca.js → da-DK-I5RFNTM4-CVv-_qu9.js} +1 -1
  52. package/dist/client/assets/{dagre-Cm2w_QpZ.js → dagre-BD9xHP_z.js} +1 -1
  53. package/dist/client/assets/{dagre-KLK3FWXG-BddfhbwG.js → dagre-KLK3FWXG-Ct1xwvCC.js} +1 -1
  54. package/dist/client/assets/{de-DE-DTI4WUSC-Ba3fBYEU.js → de-CH-WLRDEVBV-CL0gsFEp.js} +1 -1
  55. package/dist/client/assets/{de-CH-WLRDEVBV-D61DKw_9.js → de-DE-DTI4WUSC-BQO1SHIK.js} +1 -1
  56. package/dist/client/assets/{diagram-E7M64L7V-BoyJ8kpo.js → diagram-E7M64L7V-DkHzt94k.js} +1 -1
  57. package/dist/client/assets/{diagram-IFDJBPK2-DLWembLL.js → diagram-IFDJBPK2-D4g8afpU.js} +1 -1
  58. package/dist/client/assets/{diagram-P4PSJMXO-CPmPa0OC.js → diagram-P4PSJMXO-DVwwx6ED.js} +1 -1
  59. package/dist/client/assets/{dist-gCWIHDgw.js → dist-2HWwyMLA.js} +1 -1
  60. package/dist/client/assets/{dist-Dy9oGocr.js → dist-60g3bzYH.js} +1 -1
  61. package/dist/client/assets/{dist-Czv7DXcw.js → dist-B2pRSR5A.js} +1 -1
  62. package/dist/client/assets/{dist-BpEcA20b.js → dist-BQhICHxD.js} +1 -1
  63. package/dist/client/assets/dist-BS6yAJ9F.js +1 -0
  64. package/dist/client/assets/dist-BUnp4fHW.js +1 -0
  65. package/dist/client/assets/dist-BWEDjv8G.js +1 -0
  66. package/dist/client/assets/{dist-DnpxzfoU.js → dist-BZc5d15t.js} +1 -1
  67. package/dist/client/assets/{dist-D7S1mzwR.js → dist-BdtPRC1F.js} +1 -1
  68. package/dist/client/assets/{dist-CKdaLumK.js → dist-BiFbHWxc.js} +1 -1
  69. package/dist/client/assets/{dist-DFIisyRk.js → dist-BlhsMbAl.js} +1 -1
  70. package/dist/client/assets/{dist-DGbPPlZ8.js → dist-CLsz2DCg.js} +1 -1
  71. package/dist/client/assets/{dist-tyxqXzyB.js → dist-Ciw3BJA2.js} +1 -1
  72. package/dist/client/assets/{dist-BtROnx4-.js → dist-CvMToPSN.js} +1 -1
  73. package/dist/client/assets/{dist-D4ebIlQB.js → dist-D2m8lD1h.js} +1 -1
  74. package/dist/client/assets/{dist-BATDm5JF.js → dist-DAwSRqIJ.js} +1 -1
  75. package/dist/client/assets/{dist-StJm6K24.js → dist-DZD5y4h6.js} +1 -1
  76. package/dist/client/assets/{dist-Cje3pdZH.js → dist-DhzldYic.js} +1 -1
  77. package/dist/client/assets/{dist-BiNL3fhN.js → dist-DrNF924C.js} +1 -1
  78. package/dist/client/assets/{dist-CPzoLjNz.js → dist-DzArd_Bk.js} +1 -1
  79. package/dist/client/assets/{dist-Le-AVwIk.js → dist-EPRNBXHp.js} +1 -1
  80. package/dist/client/assets/{dist-BDDCA7hC.js → dist-Q6uG0wie.js} +1 -1
  81. package/dist/client/assets/{dist-CQzPpOiH.js → dist-U9MIFRLF.js} +1 -1
  82. package/dist/client/assets/{dist-CxPc5kI6.js → dist-WrbPKwPQ.js} +1 -1
  83. package/dist/client/assets/{dist-BEs40fGb.js → dist-_L_gn5XE.js} +1 -1
  84. package/dist/client/assets/{dist-DhkKj77m.js → dist-a6bFAbQd.js} +1 -1
  85. package/dist/client/assets/{dist-vL71uaef.js → dist-fkQ6urpt.js} +1 -1
  86. package/dist/client/assets/{dist-BPyPcaZr.js → dist-lbtQBzLu.js} +1 -1
  87. package/dist/client/assets/dist-naAaVPPS.js +1 -0
  88. package/dist/client/assets/{dockerfile-BmylqEVx.js → dockerfile-Ci0-ApQC.js} +1 -1
  89. package/dist/client/assets/drawio-editor-BW2z4NH2.js +9 -0
  90. package/dist/client/assets/drawio-room-D6352KkV.js +1 -0
  91. package/dist/client/assets/drawioEditor-DgoA4Zqi.js +2 -0
  92. package/dist/client/assets/{editor-session-DsM3VgQv.js → editor-session-xPvmulmt.js} +2 -2
  93. package/dist/client/assets/{el-GR-ZXDJ2OS4-CpEbk42T.js → el-GR-ZXDJ2OS4-DGa9DqWI.js} +1 -1
  94. package/dist/client/assets/{en-CTDJDZ6K-C36Iqh9O.js → en-CTDJDZ6K-DC-4I8h8.js} +1 -1
  95. package/dist/client/assets/{erDiagram-INFDFZHY-Dwg_AhU2.js → erDiagram-INFDFZHY-Dnub3poK.js} +1 -1
  96. package/dist/client/assets/{es-ES-DYQHAD43-Ba-6t0Wr.js → es-ES-DYQHAD43-Cox3GUnj.js} +1 -1
  97. package/dist/client/assets/{eu-ES-QDSYU5Y3-CYzUKQ2_.js → eu-ES-QDSYU5Y3-DrPM2uSX.js} +1 -1
  98. package/dist/client/assets/{excalidraw-editor-Cs5p0lBn.js → excalidraw-editor-BAYca95w.js} +9 -9
  99. package/dist/client/assets/{excalidraw-mermaid-stub-C1ZaaI05.js → excalidraw-mermaid-stub-LpuTrLnr.js} +1 -1
  100. package/dist/client/assets/excalidrawEditor-BY5rq_Bn.js +2 -0
  101. package/dist/client/assets/{fa-IR-26LZG4PM-CxLc7ohL.js → fa-IR-26LZG4PM-ViTdxAWX.js} +1 -1
  102. package/dist/client/assets/{factor-Cc9mS1OI.js → factor-DMvifS-k.js} +1 -1
  103. package/dist/client/assets/{fi-FI-6YS4KDE4-DtYLOEJY.js → fi-FI-6YS4KDE4-BTBRGd69.js} +1 -1
  104. package/dist/client/assets/{flowDiagram-PKNHOUZH-BIJd4wAz.js → flowDiagram-PKNHOUZH-DF4dDV_8.js} +1 -1
  105. package/dist/client/assets/{fr-FR-BRLLPTZC-9O_U5gdi.js → fr-FR-BRLLPTZC-z-POHcHJ.js} +1 -1
  106. package/dist/client/assets/{ganttDiagram-A5KZAMGK-BiMwicnp.js → ganttDiagram-A5KZAMGK-CwrN53Gu.js} +1 -1
  107. package/dist/client/assets/gitGraph-HDMCJU4V-DbS2XnWK.js +1 -0
  108. package/dist/client/assets/{gitGraphDiagram-K3NZZRJ6-lk_paRel.js → gitGraphDiagram-K3NZZRJ6-BV9w0K-N.js} +1 -1
  109. package/dist/client/assets/{gl-ES-OKUZTLYG-Bb7TO64O.js → gl-ES-OKUZTLYG-BQtfDFNk.js} +1 -1
  110. package/dist/client/assets/{graphlib-B2nPo9Z4.js → graphlib-B7v-yqry.js} +1 -1
  111. package/dist/client/assets/{he-IL-26MGYIU7-CQW1igm9.js → he-IL-26MGYIU7-Dyw-xS4W.js} +1 -1
  112. package/dist/client/assets/{hi-IN-Q4ZOGTP2-BM91ENLs.js → hi-IN-Q4ZOGTP2-BqENUkZA.js} +1 -1
  113. package/dist/client/assets/{hu-HU-P2OXPSN5-HiGbsUwM.js → hu-HU-P2OXPSN5-D1HGK0_M.js} +1 -1
  114. package/dist/client/assets/{id-ID-2EIKXYN6-DEG8vRZ2.js → id-ID-2EIKXYN6-BEjyfllL.js} +1 -1
  115. package/dist/client/assets/image-32MOCVDX-BBXPyAeU.js +1 -0
  116. package/dist/client/assets/index-C95nV7Tl.css +1 -0
  117. package/dist/client/assets/index-GE56R5t4.js +2 -0
  118. package/dist/client/assets/info-3K5VOQVL-Bre4VStM.js +1 -0
  119. package/dist/client/assets/infoDiagram-LFFYTUFH-CuUbZqrG.js +2 -0
  120. package/dist/client/assets/{isEmpty-DGNCKhlT.js → isEmpty-CLDc0Kt_.js} +1 -1
  121. package/dist/client/assets/{ishikawaDiagram-PHBUUO56-CE3HierS.js → ishikawaDiagram-PHBUUO56-CmO_FyHY.js} +1 -1
  122. package/dist/client/assets/{it-IT-4CFKVXI2-DSrGqCKD.js → it-IT-4CFKVXI2-C24G-VcQ.js} +1 -1
  123. package/dist/client/assets/{ja-JP-MAND2Z4V-OFpEymIv.js → ja-JP-MAND2Z4V-DLhvsdYk.js} +1 -1
  124. package/dist/client/assets/javascript-DdEc60Aj.js +1 -0
  125. package/dist/client/assets/{journeyDiagram-4ABVD52K-CzoczPjW.js → journeyDiagram-4ABVD52K-DF4HAYLk.js} +1 -1
  126. package/dist/client/assets/{jsx-runtime-DRYOYO9I.js → jsx-runtime-DJkgQklN.js} +1 -1
  127. package/dist/client/assets/{kaa-HQRTCXTJ-CpOJ_vn4.js → kaa-HQRTCXTJ-DC8l3BuJ.js} +1 -1
  128. package/dist/client/assets/{kab-KAB-JKIKKTGH-CNPzzJH6.js → kab-KAB-JKIKKTGH-DVFog4hd.js} +1 -1
  129. package/dist/client/assets/{kanban-definition-K7BYSVSG-Cr6iNYl4.js → kanban-definition-K7BYSVSG-nQoJJABn.js} +1 -1
  130. package/dist/client/assets/{kk-KZ-HXQ63ZFC-CgtjU5JI.js → kk-KZ-HXQ63ZFC-CULUfwMg.js} +1 -1
  131. package/dist/client/assets/{km-KH-PKL3LSGX-BAJh8UnF.js → km-KH-PKL3LSGX-CnLlEv7i.js} +1 -1
  132. package/dist/client/assets/{ko-KR-KXLREZX3-BshOksBX.js → ko-KR-KXLREZX3-DNKXAYCx.js} +1 -1
  133. package/dist/client/assets/{ku-TR-MJ4IER3X-Bi3YtiD-.js → ku-TR-MJ4IER3X-DLUiMa4h.js} +1 -1
  134. package/dist/client/assets/{line-D2NTyhqv.js → line-DvLjT0Gv.js} +1 -1
  135. package/dist/client/assets/{linear-DntNI0Uj.js → linear-CEb8O7zv.js} +1 -1
  136. package/dist/client/assets/{lt-LT-H6WFQ6FJ-DQ2W0g7h.js → lt-LT-H6WFQ6FJ-CoFiurzb.js} +1 -1
  137. package/dist/client/assets/{lv-LV-GOCK6SJW-DeqTo8T7.js → lv-LV-GOCK6SJW-DzeEvHxX.js} +1 -1
  138. package/dist/client/assets/main-AejRWvom.js +600 -0
  139. package/dist/client/assets/{mermaid-parser.core-Bh2Ta9ou.js → mermaid-parser.core-DllATXd7.js} +2 -2
  140. package/dist/client/assets/{mermaid-runtime-CLtta79D.js → mermaid-runtime-DbCLD8Ih.js} +3 -3
  141. package/dist/client/assets/{mindmap-definition-YRQLILUH-DufPyQO8.js → mindmap-definition-YRQLILUH-DaMULsE9.js} +1 -1
  142. package/dist/client/assets/{mr-IN-IXVLDMEQ-CnH5Wjc7.js → mr-IN-IXVLDMEQ-C5i5R9H5.js} +1 -1
  143. package/dist/client/assets/{my-MM-YG6MYTTD-BefEpouO.js → my-MM-YG6MYTTD-DvwceqO-.js} +1 -1
  144. package/dist/client/assets/{nb-NO-XGWJISD2-CNRrlrPY.js → nb-NO-XGWJISD2-BUhX8hX0.js} +1 -1
  145. package/dist/client/assets/{nl-NL-XVDVCPNC-CuLTw3kL.js → nl-NL-XVDVCPNC-BV6Y0-Q0.js} +1 -1
  146. package/dist/client/assets/{nn-NO-EMX5MJX5-NHFRnQkl.js → nn-NO-EMX5MJX5-CF_bB9Jq.js} +1 -1
  147. package/dist/client/assets/{nsis-YyYYKQIB.js → nsis-42hkxqLx.js} +1 -1
  148. package/dist/client/assets/{oc-FR-ROEINTVO-8kCbAtcr.js → oc-FR-ROEINTVO-CiNI8fg8.js} +1 -1
  149. package/dist/client/assets/{ordinal-BuNU9EgZ.js → ordinal-fW5lWpNM.js} +1 -1
  150. package/dist/client/assets/{pa-IN-ZYN6SUDY-Dh8USSIe.js → pa-IN-ZYN6SUDY-CsbIU150.js} +1 -1
  151. package/dist/client/assets/packet-RMMSAZCW-B7lnOkip.js +1 -0
  152. package/dist/client/assets/percentages-5DKR754L-Dp1vwDEq.js +1 -0
  153. package/dist/client/assets/{pica-BG8AR4mo.js → pica-BbcTjVoI.js} +1 -1
  154. package/dist/client/assets/{clone-CMmi3x0H.js → pie-UPGHQEXC-D0gHdMgb.js} +1 -1
  155. package/dist/client/assets/{pieDiagram-SKSYHLDU--YidSJxi.js → pieDiagram-SKSYHLDU-BPFp1WBd.js} +1 -1
  156. package/dist/client/assets/{pl-PL-6VTG7PHC-BMbgP62B.js → pl-PL-6VTG7PHC-D1Nnx7R3.js} +1 -1
  157. package/dist/client/assets/preview-render-compiler-BYiRMsPq.js +1 -0
  158. package/dist/client/assets/{preview-render-profile-BjrQVCWD.js → preview-render-profile-DQsam_Ol.js} +2 -2
  159. package/dist/client/assets/{preview-render-worker-DbMTa0Y6.js → preview-render-worker-CcASh3y3.js} +1 -1
  160. package/dist/client/assets/{pt-BR-5YFKRR5G-CyrwFw_N.js → pt-BR-5YFKRR5G-DEDTeWEP.js} +1 -1
  161. package/dist/client/assets/{pt-PT-GEIXXZ67-SpK5vaGR.js → pt-PT-GEIXXZ67-BpqPVZom.js} +1 -1
  162. package/dist/client/assets/{pug-CM36H1hd.js → pug-BANqyQJ9.js} +1 -1
  163. package/dist/client/assets/{quadrantDiagram-337W2JSQ-n7EIFT_f.js → quadrantDiagram-337W2JSQ-DjPGrcJM.js} +1 -1
  164. package/dist/client/assets/{quick-switcher-controller-CKrGBgcl.js → quick-switcher-controller-n6Jhu3Z9.js} +1 -1
  165. package/dist/client/assets/radar-KQ55EAFF-D48du2CB.js +1 -0
  166. package/dist/client/assets/{requirementDiagram-Z7DCOOCP-BrquJATD.js → requirementDiagram-Z7DCOOCP-BmiYAMKV.js} +1 -1
  167. package/dist/client/assets/{ro-RO-E2P6TFZI-90dn2iUp.js → ro-RO-E2P6TFZI-4vRM1jVT.js} +1 -1
  168. package/dist/client/assets/{room-zaSnuMv5.js → room-DyhEnogt.js} +1 -1
  169. package/dist/client/assets/{ru-RU-YBIIY43T-Cl52NZnQ.js → ru-RU-YBIIY43T-Cfbhz4Ew.js} +1 -1
  170. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-IpD6lgfO.js → sankeyDiagram-WA2Y5GQK-BEoPAlcC.js} +1 -1
  171. package/dist/client/assets/{sequenceDiagram-2WXFIKYE-DxZ6glIZ.js → sequenceDiagram-2WXFIKYE-BXqojuDS.js} +1 -1
  172. package/dist/client/assets/{si-LK-673C2CI2-DMSUxT-y.js → si-LK-673C2CI2-0muNkOEn.js} +1 -1
  173. package/dist/client/assets/{sk-SK-CKZHQ4AP-DUDai5Oe.js → sk-SK-CKZHQ4AP-EnLgxyJL.js} +1 -1
  174. package/dist/client/assets/{sl-SI-557H2GWM-BbLeATfl.js → sl-SI-557H2GWM-BN6npqVj.js} +1 -1
  175. package/dist/client/assets/{src-H0-aBY9y.js → src-DUDi_GeV.js} +1 -1
  176. package/dist/client/assets/{stateDiagram-RAJIS63D-A-rbDcdL.js → stateDiagram-RAJIS63D-DTR2sQs8.js} +1 -1
  177. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-BwVII-kJ.js +1 -0
  178. package/dist/client/assets/subset-shared.chunk-C6pUl_Oh.js +1 -0
  179. package/dist/client/assets/{subset-worker.chunk-B7pmUG1o.js → subset-worker.chunk-1FoL7eL0.js} +1 -1
  180. package/dist/client/assets/{sv-SE-XOPKKDWS-BBa-AcMf.js → sv-SE-XOPKKDWS-D3VSs2SQ.js} +1 -1
  181. package/dist/client/assets/{ta-IN-XBH7DQI3-9uR7ADzx.js → ta-IN-XBH7DQI3-BKR1mqfo.js} +1 -1
  182. package/dist/client/assets/{th-TH-TOCWH3R4-Box9U3ny.js → th-TH-TOCWH3R4-Bek1dQcW.js} +1 -1
  183. package/dist/client/assets/{timeline-definition-YZTLITO2-DuTppHot.js → timeline-definition-YZTLITO2-BP09qqIh.js} +1 -1
  184. package/dist/client/assets/{tr-TR-GXW6CYY5-BA8pS3C5.js → tr-TR-GXW6CYY5-xdLb7Dgi.js} +1 -1
  185. package/dist/client/assets/treemap-KZPCXAKY-BBRObSiT.js +1 -0
  186. package/dist/client/assets/{uk-UA-IJKTNUDG-B6hoHqzM.js → uk-UA-IJKTNUDG-Cd0AhTti.js} +1 -1
  187. package/dist/client/assets/{uz-UZ-TBZZEA4V-CPuftH33.js → uz-UZ-TBZZEA4V-DQH4e-QC.js} +1 -1
  188. package/dist/client/assets/{vault-api-client-D7C_m9eq.js → vault-api-client-fFJfUVXM.js} +2 -2
  189. package/dist/client/assets/vault-utils-BM4i-Ofm.js +1 -0
  190. package/dist/client/assets/{vennDiagram-LZ73GAT5-J0SBkXj8.js → vennDiagram-LZ73GAT5-BvSlhnT0.js} +1 -1
  191. package/dist/client/assets/{vi-VN-MULSGNVB-yRFd9OXl.js → vi-VN-MULSGNVB-BYDcPrAo.js} +1 -1
  192. package/dist/client/assets/{xychartDiagram-JWTSCODW-Dn9dSYxn.js → xychartDiagram-JWTSCODW-BvZ78F0j.js} +1 -1
  193. package/dist/client/assets/{yjs-provider-reset-guard-BcnBGrS9.js → yjs-provider-reset-guard-Cj00kgyM.js} +1 -1
  194. package/dist/client/assets/{zh-CN-MVX3E32U-VzUIXB4K.js → zh-CN-MVX3E32U-BqZQ-18-.js} +1 -1
  195. package/dist/client/assets/{zh-HK-JNU5RLIE-i0G2jHO_.js → zh-HK-JNU5RLIE-CbF8Agwa.js} +1 -1
  196. package/dist/client/assets/{zh-TW-LENVCA6T-BkHZg3jv.js → zh-TW-LENVCA6T-CepoVycx.js} +1 -1
  197. package/dist/client/drawio-editor.html +38 -0
  198. package/dist/client/excalidraw-editor.html +3 -3
  199. package/dist/client/index.html +16 -22
  200. package/package.json +1 -1
  201. package/src/client/app/drawio-editor-entry.js +4 -0
  202. package/src/client/app/drawio-editor.html +36 -0
  203. package/src/client/app/index.html +12 -18
  204. package/src/client/application/app-shell/ui-feature-identity.js +5 -2
  205. package/src/client/application/app-shell/ui-feature-shell.js +28 -2
  206. package/src/client/application/app-shell/workspace-feature.js +9 -0
  207. package/src/client/application/preview-render-compiler.js +18 -1
  208. package/src/client/application/preview-render-profile.js +5 -1
  209. package/src/client/application/workspace-chrome-controller.js +6 -0
  210. package/src/client/application/workspace-coordinator.js +12 -4
  211. package/src/client/application/workspace-preview-controller.js +65 -3
  212. package/src/client/application/workspace-route-controller.js +6 -3
  213. package/src/client/bootstrap/collabmd-app-shell.js +20 -0
  214. package/src/client/domain/runtime-paths.js +1 -0
  215. package/src/client/domain/vault-paths.js +24 -0
  216. package/src/client/drawio-editor.js +479 -0
  217. package/src/client/infrastructure/browser-navigation-port.js +2 -2
  218. package/src/client/infrastructure/drawio-lease-client.js +345 -0
  219. package/src/client/infrastructure/runtime-config.js +5 -1
  220. package/src/client/infrastructure/vault-api-client.js +9 -0
  221. package/src/client/presentation/comments-panel.js +2 -2
  222. package/src/client/presentation/create-menu-presenter.js +274 -0
  223. package/src/client/presentation/drawio-embed-controller.js +500 -0
  224. package/src/client/presentation/file-action-controller.js +126 -16
  225. package/src/client/presentation/file-explorer-controller.js +1 -0
  226. package/src/client/presentation/file-explorer-view.js +10 -2
  227. package/src/client/presentation/file-tree-state.js +1 -0
  228. package/src/client/presentation/theme-controller.js +21 -4
  229. package/src/client/styles/components/navigation.css +24 -0
  230. package/src/client/styles/features/diagram-preview.css +119 -1
  231. package/src/client/styles/layout/responsive.css +76 -7
  232. package/src/client/styles/layout/shell.css +41 -0
  233. package/src/client/styles/layout/sidebar.css +194 -3
  234. package/src/client/styles/layout/view-modes.css +1 -0
  235. package/src/domain/drawio-room.js +47 -0
  236. package/src/domain/file-kind.js +13 -2
  237. package/src/server/config/env.js +5 -0
  238. package/src/server/create-app-server.js +4 -2
  239. package/src/server/domain/collaboration/collaboration-document-store.js +11 -0
  240. package/src/server/domain/collaboration/collaboration-room.js +5 -0
  241. package/src/server/infrastructure/http/create-static-handler.js +2 -0
  242. package/src/server/infrastructure/http/create-vault-api-command-handler.js +5 -0
  243. package/src/server/infrastructure/http/create-vault-api-query-handler.js +5 -0
  244. package/src/server/infrastructure/persistence/path-utils.js +1 -1
  245. package/src/server/infrastructure/persistence/vault-content-adapter.js +6 -0
  246. package/src/server/infrastructure/persistence/vault-file-store.js +8 -0
  247. package/dist/client/assets/architecture-PBZL5I3N-0dui3p7-.js +0 -1
  248. package/dist/client/assets/channel-CVwYcdlk.js +0 -1
  249. package/dist/client/assets/chunk-GLR3WWYH-CqGMuOti.js +0 -2
  250. package/dist/client/assets/chunk-HHEYEP7N-Czb3OX2v.js +0 -1
  251. package/dist/client/assets/chunk-QZHKN3VN-DU7fMcaP.js +0 -1
  252. package/dist/client/assets/classDiagram-VBA2DB6C-CBSmkOe7.js +0 -1
  253. package/dist/client/assets/classDiagram-v2-RAHNMMFH-CJarRy94.js +0 -1
  254. package/dist/client/assets/dist-CNcGnl0T.js +0 -1
  255. package/dist/client/assets/dist-CnKD4Y92.js +0 -1
  256. package/dist/client/assets/dist-DL-EaOiC.js +0 -1
  257. package/dist/client/assets/dist-mDBaykBY.js +0 -1
  258. package/dist/client/assets/excalidrawEditor-wgJb2hmP.js +0 -2
  259. package/dist/client/assets/gitGraph-HDMCJU4V-iPo6Lz4k.js +0 -1
  260. package/dist/client/assets/image-32MOCVDX-viHDtJGM.js +0 -1
  261. package/dist/client/assets/index-B6m_KATZ.css +0 -1
  262. package/dist/client/assets/index-D20GlrKF.js +0 -2
  263. package/dist/client/assets/info-3K5VOQVL-DePZHLA4.js +0 -1
  264. package/dist/client/assets/infoDiagram-LFFYTUFH-CiAT_kJZ.js +0 -2
  265. package/dist/client/assets/javascript-DcX_cm1u.js +0 -1
  266. package/dist/client/assets/main-DONXLDrC.js +0 -599
  267. package/dist/client/assets/packet-RMMSAZCW-BVw0pEk-.js +0 -1
  268. package/dist/client/assets/percentages-5DKR754L-RQFE76Sg.js +0 -1
  269. package/dist/client/assets/pie-UPGHQEXC-ChUWa5qF.js +0 -1
  270. package/dist/client/assets/preview-render-compiler-CWBdv5tw.js +0 -1
  271. package/dist/client/assets/radar-KQ55EAFF-B4gMcoDX.js +0 -1
  272. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-CKhOHHLe.js +0 -1
  273. package/dist/client/assets/subset-shared.chunk-93a-Md8B.js +0 -1
  274. package/dist/client/assets/treemap-KZPCXAKY-on28XbV_.js +0 -1
  275. package/dist/client/assets/vault-utils-Js2T-e-h.js +0 -1
  276. /package/dist/client/assets/{apl-khHl8vBy.js → apl-CJPt5sW7.js} +0 -0
  277. /package/dist/client/assets/{array-BTHl6o_K.js → array-e43ctQmx.js} +0 -0
  278. /package/dist/client/assets/{asciiarmor-7xnRhA8w.js → asciiarmor-D0oCypDs.js} +0 -0
  279. /package/dist/client/assets/{asn1-_x-T1mFB.js → asn1-8xgVfRoq.js} +0 -0
  280. /package/dist/client/assets/{asterisk-Ct2NwVUw.js → asterisk-B5kv5AQp.js} +0 -0
  281. /package/dist/client/assets/{brainfuck-CAmdgqDN.js → brainfuck-Dh7M1Ucz.js} +0 -0
  282. /package/dist/client/assets/{chunk-3PELD44J-BvOh9EJp.js → chunk-3PELD44J-D4qJ8fq7.js} +0 -0
  283. /package/dist/client/assets/{chunk-A66AFZZU-D0IDIehU.js → chunk-A66AFZZU-CJuwmF1m.js} +0 -0
  284. /package/dist/client/assets/{chunk-Cq_f4orQ.js → chunk-D-fkvfCP.js} +0 -0
  285. /package/dist/client/assets/{chunk-ETSVUAFD-BnK5BhxL.js → chunk-ETSVUAFD-C8C1JDu2.js} +0 -0
  286. /package/dist/client/assets/{clike-BJcwKCE7.js → clike-zYz_LEkw.js} +0 -0
  287. /package/dist/client/assets/{clojure-uSRILJfc.js → clojure-CdWlIeQh.js} +0 -0
  288. /package/dist/client/assets/{cmake-j5-7WxMz.js → cmake-wWuF5ifR.js} +0 -0
  289. /package/dist/client/assets/{cobol-cnURuZ43.js → cobol-D3WLbLVy.js} +0 -0
  290. /package/dist/client/assets/{coffeescript-iQD116iO.js → coffeescript-DRtt-5a2.js} +0 -0
  291. /package/dist/client/assets/{commonlisp-DGzExN9H.js → commonlisp-DJV75lsU.js} +0 -0
  292. /package/dist/client/assets/{crystal-CnjkM1-q.js → crystal-C7mEw92C.js} +0 -0
  293. /package/dist/client/assets/{css-C-Nv0c9S.js → css-_6KgQwpu.js} +0 -0
  294. /package/dist/client/assets/{cypher-hxitpny2.js → cypher-B3uWx7jm.js} +0 -0
  295. /package/dist/client/assets/{cytoscape.esm-0xzpJ66h.js → cytoscape.esm-BbbuX1pV.js} +0 -0
  296. /package/dist/client/assets/{d-BtdAWoTB.js → d-D3kOh3JF.js} +0 -0
  297. /package/dist/client/assets/{defaultLocale-PG3Gbk8q.js → defaultLocale-DTn6RiRA.js} +0 -0
  298. /package/dist/client/assets/{diff-f_ZkWiYS.js → diff-CoamybWh.js} +0 -0
  299. /package/dist/client/assets/{dist-CCxn5Mk-.js → dist-yRVuIDKu.js} +0 -0
  300. /package/dist/client/assets/{dtd-B6xdyNDx.js → dtd-BjGQwMWL.js} +0 -0
  301. /package/dist/client/assets/{dylan-BzUoKQTn.js → dylan-B9W3X2GI.js} +0 -0
  302. /package/dist/client/assets/{ebnf-BlTaNq16.js → ebnf-d5D0otVn.js} +0 -0
  303. /package/dist/client/assets/{ecl-CffPaRqR.js → ecl-C5Q_IBPt.js} +0 -0
  304. /package/dist/client/assets/{eiffel-B66P6crR.js → eiffel-BQA_6I3b.js} +0 -0
  305. /package/dist/client/assets/{elm-DIwllOLv.js → elm-unPS17vB.js} +0 -0
  306. /package/dist/client/assets/{erlang-DwYA67QU.js → erlang-R8nOsUTx.js} +0 -0
  307. /package/dist/client/assets/{excalidraw-mermaid-stub-BtCKxPxK.js → excalidraw-mermaid-stub-BJq3n7pR.js} +0 -0
  308. /package/dist/client/assets/{fcl-DD6dBrvI.js → fcl-CVAfW9wK.js} +0 -0
  309. /package/dist/client/assets/{forth-DFLLMv-i.js → forth-DHbsK8X8.js} +0 -0
  310. /package/dist/client/assets/{fortran-CNZVMQdQ.js → fortran-4jMwxW9-.js} +0 -0
  311. /package/dist/client/assets/{gas-DyiCLKEJ.js → gas-zC_XGrQT.js} +0 -0
  312. /package/dist/client/assets/{gherkin-CHgE7bAJ.js → gherkin-CPBQou3u.js} +0 -0
  313. /package/dist/client/assets/{groovy-BZc3It91.js → groovy-Cqopym0q.js} +0 -0
  314. /package/dist/client/assets/{haskell-DJ4hTi3A.js → haskell-imzbNPgF.js} +0 -0
  315. /package/dist/client/assets/{haxe-sJjg_lHN.js → haxe-Doh225Ku.js} +0 -0
  316. /package/dist/client/assets/{http-DwAi3Ho1.js → http-j4R5uEso.js} +0 -0
  317. /package/dist/client/assets/{idl-CCIDRFwr.js → idl-l9d1__Hj.js} +0 -0
  318. /package/dist/client/assets/{image-blob-reduce.esm-D4wBfumB.js → image-blob-reduce.esm-CQfEe3_g.js} +0 -0
  319. /package/dist/client/assets/{init-Bb7Vx0CW.js → init-207s1ipc.js} +0 -0
  320. /package/dist/client/assets/{isArrayLikeObject-DxEG9mY7.js → isArrayLikeObject-ZCMZRndo.js} +0 -0
  321. /package/dist/client/assets/{javascript-BlUxwA0O.js → javascript-9dQYqEHJ.js} +0 -0
  322. /package/dist/client/assets/{julia-BU0qBb1w.js → julia-ByGjwiLn.js} +0 -0
  323. /package/dist/client/assets/{katex-DoaSnJ5T.js → katex-XOVNa2d9.js} +0 -0
  324. /package/dist/client/assets/{livescript-uk34VDGK.js → livescript-B8l2m7xO.js} +0 -0
  325. /package/dist/client/assets/{lua-ClQGOv84.js → lua-DrfAKnQQ.js} +0 -0
  326. /package/dist/client/assets/{math-DQo53qzt.js → math-BlD6rf4Z.js} +0 -0
  327. /package/dist/client/assets/{mathematica-BDmKpvRN.js → mathematica-DYk_2Ik_.js} +0 -0
  328. /package/dist/client/assets/{mbox-T5kA6jAQ.js → mbox-BOzVHzVt.js} +0 -0
  329. /package/dist/client/assets/{mirc-DRRKKkcJ.js → mirc-DStbUCmv.js} +0 -0
  330. /package/dist/client/assets/{mllike-iZXopbca.js → mllike-BmhQglqS.js} +0 -0
  331. /package/dist/client/assets/{modelica-DP8T2DKM.js → modelica-ZElxtbqD.js} +0 -0
  332. /package/dist/client/assets/{mscgen-DXIRw2qg.js → mscgen-f-YxHPr0.js} +0 -0
  333. /package/dist/client/assets/{mumps-BKUS05-y.js → mumps-B79RJJhR.js} +0 -0
  334. /package/dist/client/assets/{nginx-CzYOtr2G.js → nginx-c--axfuP.js} +0 -0
  335. /package/dist/client/assets/{ntriples-ZgZuaYbW.js → ntriples-CgD4YZZC.js} +0 -0
  336. /package/dist/client/assets/{octave-CnOndUN3.js → octave-BQk-bCrp.js} +0 -0
  337. /package/dist/client/assets/{oz-DjW322Rn.js → oz-DPCSPrx5.js} +0 -0
  338. /package/dist/client/assets/{pascal-BdeW5uRX.js → pascal-C1iGzZ53.js} +0 -0
  339. /package/dist/client/assets/{path-BxyPWlyM.js → path-CDSE7Nw0.js} +0 -0
  340. /package/dist/client/assets/{perl-_CDvIe1D.js → perl-DQ3L8ffg.js} +0 -0
  341. /package/dist/client/assets/{pig-inWo_B4W.js → pig-B4S8acys.js} +0 -0
  342. /package/dist/client/assets/{powershell-CO5KWJsy.js → powershell-BhSVdaeY.js} +0 -0
  343. /package/dist/client/assets/{preload-helper-Chd9yIcd.js → preload-helper-I1wKxk_B.js} +0 -0
  344. /package/dist/client/assets/{properties-CjVp4a6M.js → properties-B2nfdtxE.js} +0 -0
  345. /package/dist/client/assets/{protobuf-DybFT2KT.js → protobuf-BFW_iwVN.js} +0 -0
  346. /package/dist/client/assets/{puppet-Dw_NDgko.js → puppet-C1-CkyhQ.js} +0 -0
  347. /package/dist/client/assets/{python-2pwcWoy7.js → python-CYXPDD4I.js} +0 -0
  348. /package/dist/client/assets/{q-C47l8kdS.js → q-Bub5Xmxm.js} +0 -0
  349. /package/dist/client/assets/{r-BmcXGVZ5.js → r-C59ONZO2.js} +0 -0
  350. /package/dist/client/assets/{rough.esm-C7Rbwqik.js → rough.esm-xhKrnp4d.js} +0 -0
  351. /package/dist/client/assets/{roundRect-CDlbNkEg.js → roundRect-CTz-kxJH.js} +0 -0
  352. /package/dist/client/assets/{rpm-Cm0x5xT_.js → rpm-DiM-R-wd.js} +0 -0
  353. /package/dist/client/assets/{ruby-Dl-I4pxG.js → ruby-DTqG95KX.js} +0 -0
  354. /package/dist/client/assets/{runtime-config-loader--hxFvh23.js → runtime-config-loader-DwWsKc1-.js} +0 -0
  355. /package/dist/client/assets/{sas-Bxkg4GVX.js → sas-BjdhmGHX.js} +0 -0
  356. /package/dist/client/assets/{scheme-CO3zogua.js → scheme-CWNdoI17.js} +0 -0
  357. /package/dist/client/assets/{shell-gYrTvBTP.js → shell-iaorleRB.js} +0 -0
  358. /package/dist/client/assets/{sieve-COX4Kn1X.js → sieve-D8m9Etmd.js} +0 -0
  359. /package/dist/client/assets/{simple-mode-BY9UFVy7.js → simple-mode-kdHrpFjq.js} +0 -0
  360. /package/dist/client/assets/{smalltalk-Dma1z5eE.js → smalltalk-28WS1mUj.js} +0 -0
  361. /package/dist/client/assets/{solr-BvhcdkNH.js → solr-x8qQ6eAP.js} +0 -0
  362. /package/dist/client/assets/{sparql-gX7W9xeh.js → sparql-BvLmi7B6.js} +0 -0
  363. /package/dist/client/assets/{spreadsheet-BnlQRxWz.js → spreadsheet-BuqSwScP.js} +0 -0
  364. /package/dist/client/assets/{sql-CwA10oIk.js → sql-B8tBavZM.js} +0 -0
  365. /package/dist/client/assets/{stex-DhLUylSV.js → stex-Bx4bLPxI.js} +0 -0
  366. /package/dist/client/assets/{stylus-9ZGSp3KB.js → stylus-CMEhEjuV.js} +0 -0
  367. /package/dist/client/assets/{swift-CurfpLXH.js → swift-wY9II8hY.js} +0 -0
  368. /package/dist/client/assets/{tcl-BPvzXR-t.js → tcl-BGywDEsi.js} +0 -0
  369. /package/dist/client/assets/{textile-BUq3vgBH.js → textile-K_mvsehZ.js} +0 -0
  370. /package/dist/client/assets/{tiddlywiki-DRR6E4hS.js → tiddlywiki-BrpeQ34q.js} +0 -0
  371. /package/dist/client/assets/{tiki-C1XMixgx.js → tiki-z2eQQPgI.js} +0 -0
  372. /package/dist/client/assets/{toml-BQjoWSzq.js → toml-Dcu7S7XA.js} +0 -0
  373. /package/dist/client/assets/{troff-DbgTp3Cj.js → troff-Djlumm7T.js} +0 -0
  374. /package/dist/client/assets/{ttcn-1OxchGWH.js → ttcn-XqU6tthJ.js} +0 -0
  375. /package/dist/client/assets/{ttcn-cfg-CC8OhyHu.js → ttcn-cfg-BzD0wr3i.js} +0 -0
  376. /package/dist/client/assets/{turtle-D1WjVU4-.js → turtle-DcjXkx6M.js} +0 -0
  377. /package/dist/client/assets/{vb-Bf-XXYNJ.js → vb-DV4y2QrD.js} +0 -0
  378. /package/dist/client/assets/{vbscript-HeSyWuOi.js → vbscript-BS8DsYJ_.js} +0 -0
  379. /package/dist/client/assets/{velocity-CUkiDsJQ.js → velocity-CS6Ly2yV.js} +0 -0
  380. /package/dist/client/assets/{verilog-BFxB5RAN.js → verilog-DbEC7ose.js} +0 -0
  381. /package/dist/client/assets/{vhdl-BJUXQE-6.js → vhdl-DBLrW9bF.js} +0 -0
  382. /package/dist/client/assets/{webidl-advQMGTP.js → webidl-CnE8KY-y.js} +0 -0
  383. /package/dist/client/assets/{xquery-CNzoFgd7.js → xquery--K5Za5EW.js} +0 -0
  384. /package/dist/client/assets/{yacas-BsmlDKac.js → yacas-ClQfYBmX.js} +0 -0
  385. /package/dist/client/assets/{z80-Bnez4vZ_.js → z80-Dr2oR3X2.js} +0 -0
@@ -0,0 +1,500 @@
1
+ import { createDrawioLeaseRoomName } from '../../domain/drawio-room.js';
2
+ import { resolveAppUrl } from '../domain/runtime-paths.js';
3
+ import { vaultApiClient } from '../domain/vault-api-client.js';
4
+
5
+ const HYDRATE_VIEWPORT_MARGIN_PX = 360;
6
+ const DRAWIO_VIEWER_SCRIPT_URL = 'https://viewer.diagrams.net/js/viewer-static.min.js';
7
+
8
+ let drawioViewerLoadPromise = null;
9
+
10
+ function requestIdleRender(callback, timeout) {
11
+ if (typeof window.requestIdleCallback === 'function') {
12
+ return window.requestIdleCallback(callback, { timeout });
13
+ }
14
+
15
+ return window.setTimeout(() => callback({ didTimeout: false, timeRemaining: () => 0 }), 1);
16
+ }
17
+
18
+ function cancelIdleRender(id) {
19
+ if (id === null) {
20
+ return;
21
+ }
22
+
23
+ if (typeof window.cancelIdleCallback === 'function') {
24
+ window.cancelIdleCallback(id);
25
+ return;
26
+ }
27
+
28
+ window.clearTimeout(id);
29
+ }
30
+
31
+ function isNearViewport(element, root, marginPx) {
32
+ if (!element || !root) {
33
+ return false;
34
+ }
35
+
36
+ const rootRect = root.getBoundingClientRect();
37
+ const elementRect = element.getBoundingClientRect();
38
+ return elementRect.bottom >= (rootRect.top - marginPx) && elementRect.top <= (rootRect.bottom + marginPx);
39
+ }
40
+
41
+ function ensureDrawioViewerLoaded() {
42
+ if (window.GraphViewer?.processElements) {
43
+ return Promise.resolve(window.GraphViewer);
44
+ }
45
+
46
+ if (drawioViewerLoadPromise) {
47
+ return drawioViewerLoadPromise;
48
+ }
49
+
50
+ drawioViewerLoadPromise = new Promise((resolve, reject) => {
51
+ const existingScript = document.querySelector('script[data-collabmd-drawio-viewer]');
52
+ const script = existingScript instanceof HTMLScriptElement
53
+ ? existingScript
54
+ : document.createElement('script');
55
+
56
+ const cleanup = () => {
57
+ script.removeEventListener('error', handleError);
58
+ script.removeEventListener('load', handleLoad);
59
+ };
60
+
61
+ const handleError = () => {
62
+ cleanup();
63
+ drawioViewerLoadPromise = null;
64
+ reject(new Error('Failed to load draw.io viewer'));
65
+ };
66
+
67
+ const handleLoad = () => {
68
+ cleanup();
69
+ if (!window.GraphViewer?.processElements) {
70
+ drawioViewerLoadPromise = null;
71
+ reject(new Error('draw.io viewer did not initialize'));
72
+ return;
73
+ }
74
+
75
+ resolve(window.GraphViewer);
76
+ };
77
+
78
+ script.addEventListener('error', handleError, { once: true });
79
+ script.addEventListener('load', handleLoad, { once: true });
80
+
81
+ if (!existingScript) {
82
+ script.src = DRAWIO_VIEWER_SCRIPT_URL;
83
+ script.async = true;
84
+ script.dataset.collabmdDrawioViewer = 'true';
85
+ document.head.append(script);
86
+ } else if (window.GraphViewer?.processElements) {
87
+ handleLoad();
88
+ }
89
+ });
90
+
91
+ return drawioViewerLoadPromise;
92
+ }
93
+
94
+ export class DrawioEmbedController {
95
+ constructor({
96
+ getLocalUser,
97
+ getTheme,
98
+ onOpenFile = null,
99
+ onOpenTextFile = null,
100
+ previewContainer,
101
+ previewElement,
102
+ toastController,
103
+ }) {
104
+ this.getLocalUser = getLocalUser;
105
+ this.getTheme = getTheme;
106
+ this.onOpenFile = onOpenFile;
107
+ this.onOpenTextFile = onOpenTextFile;
108
+ this.previewContainer = previewContainer;
109
+ this.previewElement = previewElement;
110
+ this.toastController = toastController;
111
+ this.embedEntries = new Map();
112
+ this.hydrationQueue = [];
113
+ this.hydrationIdleId = null;
114
+ this.hydrationPaused = false;
115
+ this.instanceCounter = 0;
116
+
117
+ this._onMessage = this._onMessage.bind(this);
118
+ this._onPreviewClick = this._onPreviewClick.bind(this);
119
+
120
+ window.addEventListener('message', this._onMessage);
121
+ this.previewElement?.addEventListener('click', this._onPreviewClick);
122
+ }
123
+
124
+ destroy() {
125
+ window.removeEventListener('message', this._onMessage);
126
+ this.previewElement?.removeEventListener('click', this._onPreviewClick);
127
+ cancelIdleRender(this.hydrationIdleId);
128
+ this.hydrationIdleId = null;
129
+ this.hydrationQueue = [];
130
+ this.embedEntries.forEach((entry) => entry.wrapper?.remove());
131
+ this.embedEntries.clear();
132
+ }
133
+
134
+ detachForCommit() {
135
+ cancelIdleRender(this.hydrationIdleId);
136
+ this.hydrationIdleId = null;
137
+ this.hydrationQueue = [];
138
+ this.embedEntries.forEach((entry) => {
139
+ entry.placeholder = null;
140
+ });
141
+ }
142
+
143
+ setHydrationPaused(paused) {
144
+ this.hydrationPaused = Boolean(paused);
145
+ if (!this.hydrationPaused) {
146
+ this.hydrateVisibleEmbeds();
147
+ }
148
+ }
149
+
150
+ reconcileEmbeds(previewElement) {
151
+ const descriptors = Array.from(previewElement.querySelectorAll('.drawio-embed-placeholder[data-drawio-key]')).map((placeholder) => ({
152
+ filePath: placeholder.dataset.drawioTarget || '',
153
+ key: placeholder.dataset.drawioKey || '',
154
+ label: placeholder.dataset.drawioLabel || placeholder.dataset.drawioTarget || '',
155
+ mode: placeholder.dataset.drawioMode === 'edit' ? 'edit' : 'view',
156
+ placeholder,
157
+ }));
158
+
159
+ const nextEntries = new Map();
160
+ descriptors.forEach((descriptor) => {
161
+ const existingEntry = this.embedEntries.get(descriptor.key) || null;
162
+ const nextEntry = existingEntry
163
+ ? { ...existingEntry, ...descriptor }
164
+ : {
165
+ ...descriptor,
166
+ iframe: null,
167
+ imageElement: null,
168
+ instanceId: '',
169
+ queued: false,
170
+ viewerElement: null,
171
+ wrapper: null,
172
+ };
173
+ nextEntries.set(descriptor.key, nextEntry);
174
+ });
175
+
176
+ this.embedEntries.forEach((entry, key) => {
177
+ if (!nextEntries.has(key)) {
178
+ entry.wrapper?.remove();
179
+ }
180
+ });
181
+
182
+ this.embedEntries = nextEntries;
183
+
184
+ this.embedEntries.forEach((entry) => {
185
+ if (entry.wrapper) {
186
+ entry.placeholder?.replaceWith(entry.wrapper);
187
+ } else {
188
+ entry.queued = false;
189
+ }
190
+ });
191
+
192
+ if (!this.hydrationPaused) {
193
+ this.hydrateVisibleEmbeds();
194
+ }
195
+ }
196
+
197
+ hydrateVisibleEmbeds() {
198
+ this.embedEntries.forEach((entry) => {
199
+ if (entry.wrapper || !entry.placeholder?.isConnected) {
200
+ return;
201
+ }
202
+
203
+ if (entry.mode === 'edit' || isNearViewport(entry.placeholder, this.previewContainer, HYDRATE_VIEWPORT_MARGIN_PX)) {
204
+ this.enqueueHydration(entry);
205
+ }
206
+ });
207
+ }
208
+
209
+ enqueueHydration(entry) {
210
+ if (entry.queued) {
211
+ return;
212
+ }
213
+
214
+ entry.queued = true;
215
+ this.hydrationQueue.push(entry);
216
+ if (this.hydrationIdleId !== null) {
217
+ return;
218
+ }
219
+
220
+ this.hydrationIdleId = requestIdleRender(() => {
221
+ this.hydrationIdleId = null;
222
+ const nextQueue = this.hydrationQueue.splice(0);
223
+ nextQueue.forEach((queuedEntry) => {
224
+ queuedEntry.queued = false;
225
+ this.hydrateEntry(queuedEntry);
226
+ });
227
+ }, 200);
228
+ }
229
+
230
+ hydrateEntry(entry) {
231
+ if (!entry.placeholder?.isConnected || entry.wrapper) {
232
+ return;
233
+ }
234
+
235
+ if (entry.mode === 'view') {
236
+ void this.hydrateViewerEntry(entry);
237
+ return;
238
+ }
239
+
240
+ this.hydrateIframeEntry(entry);
241
+ }
242
+
243
+ hydrateIframeEntry(entry) {
244
+ if (!entry.placeholder?.isConnected || entry.wrapper) {
245
+ return;
246
+ }
247
+
248
+ const wrapper = document.createElement('div');
249
+ wrapper.className = `drawio-embed${entry.mode === 'edit' ? ' is-direct-file' : ''}`;
250
+ wrapper.dataset.file = entry.filePath;
251
+
252
+ const header = document.createElement('div');
253
+ header.className = 'drawio-embed-header';
254
+
255
+ const label = document.createElement('span');
256
+ label.className = 'drawio-embed-label';
257
+ label.textContent = entry.label.replace(/\.drawio$/i, '');
258
+ header.appendChild(label);
259
+
260
+ if (entry.mode !== 'edit') {
261
+ const button = document.createElement('button');
262
+ button.type = 'button';
263
+ button.className = 'drawio-embed-btn';
264
+ button.dataset.action = 'open-file';
265
+ button.dataset.filePath = entry.filePath;
266
+ button.textContent = 'Open';
267
+ header.appendChild(button);
268
+ }
269
+
270
+ const iframe = document.createElement('iframe');
271
+ iframe.className = 'drawio-embed-iframe';
272
+ iframe.loading = 'lazy';
273
+ iframe.referrerPolicy = 'strict-origin-when-cross-origin';
274
+ entry.instanceId = `drawio-${++this.instanceCounter}`;
275
+ iframe.dataset.instanceId = entry.instanceId;
276
+ iframe.src = this.buildIframeUrl(entry);
277
+
278
+ wrapper.append(header, iframe);
279
+ entry.iframe = iframe;
280
+ entry.wrapper = wrapper;
281
+ entry.placeholder.replaceWith(wrapper);
282
+ }
283
+
284
+ async hydrateViewerEntry(entry) {
285
+ if (!entry.placeholder?.isConnected || entry.wrapper) {
286
+ return;
287
+ }
288
+
289
+ const wrapper = document.createElement('div');
290
+ wrapper.className = 'drawio-embed is-static-preview';
291
+ wrapper.dataset.file = entry.filePath;
292
+
293
+ const header = document.createElement('div');
294
+ header.className = 'drawio-embed-header';
295
+
296
+ const label = document.createElement('span');
297
+ label.className = 'drawio-embed-label';
298
+ label.textContent = entry.label.replace(/\.drawio$/i, '');
299
+ header.appendChild(label);
300
+
301
+ const button = document.createElement('button');
302
+ button.type = 'button';
303
+ button.className = 'drawio-embed-btn';
304
+ button.dataset.action = 'open-file';
305
+ button.dataset.filePath = entry.filePath;
306
+ button.textContent = 'Open';
307
+ header.appendChild(button);
308
+
309
+ const viewerShell = document.createElement('div');
310
+ viewerShell.className = 'drawio-viewer-shell';
311
+ viewerShell.dataset.filePath = entry.filePath;
312
+
313
+ const loadingShell = document.createElement('div');
314
+ loadingShell.className = 'preview-shell';
315
+ loadingShell.textContent = 'Rendering draw.io preview…';
316
+ viewerShell.appendChild(loadingShell);
317
+
318
+ wrapper.append(header, viewerShell);
319
+ entry.iframe = null;
320
+ entry.wrapper = wrapper;
321
+ entry.viewerElement = viewerShell;
322
+ entry.placeholder.replaceWith(wrapper);
323
+
324
+ try {
325
+ await this.renderViewerEntry(entry);
326
+ } catch (error) {
327
+ this.renderViewerFallback(entry, error instanceof Error ? error.message : 'Failed to render draw.io preview');
328
+ }
329
+ }
330
+
331
+ async renderViewerEntry(entry) {
332
+ const [{ content }, viewer] = await Promise.all([
333
+ vaultApiClient.readFile(entry.filePath),
334
+ ensureDrawioViewerLoaded(),
335
+ ]);
336
+
337
+ if (!entry.wrapper?.isConnected || !entry.viewerElement?.isConnected) {
338
+ return;
339
+ }
340
+
341
+ const theme = this.getTheme?.() === 'light' ? 'light' : 'dark';
342
+ const graphElement = document.createElement('div');
343
+ graphElement.className = 'mxgraph drawio-viewer-frame';
344
+ graphElement.dataset.action = 'open-file';
345
+ graphElement.dataset.filePath = entry.filePath;
346
+ graphElement.setAttribute('role', 'button');
347
+ graphElement.setAttribute('tabindex', '0');
348
+ graphElement.setAttribute('aria-label', `Open ${entry.label.replace(/\.drawio$/i, '')}`);
349
+ graphElement.dataset.mxgraph = JSON.stringify({
350
+ 'check-visible-state': false,
351
+ center: true,
352
+ border: 0,
353
+ 'dark-mode': theme,
354
+ editable: false,
355
+ fit: 1,
356
+ lightbox: false,
357
+ nav: false,
358
+ resize: false,
359
+ toolbar: '',
360
+ tooltips: false,
361
+ xml: String(content ?? ''),
362
+ });
363
+
364
+ entry.viewerElement.replaceChildren(graphElement);
365
+ entry.viewerElement = graphElement;
366
+ viewer.processElements();
367
+ }
368
+
369
+ buildIframeUrl(entry) {
370
+ const url = new URL(resolveAppUrl('/drawio-editor.html'));
371
+ const localUser = this.getLocalUser?.() ?? {};
372
+ url.searchParams.set('file', entry.filePath);
373
+ url.searchParams.set('hostMode', entry.mode === 'edit' ? 'file-preview' : 'embed');
374
+ url.searchParams.set('instanceId', entry.instanceId);
375
+ url.searchParams.set('mode', entry.mode === 'edit' ? 'edit' : 'view');
376
+ url.searchParams.set('theme', this.getTheme?.() === 'light' ? 'light' : 'dark');
377
+
378
+ if (localUser.name) {
379
+ url.searchParams.set('userName', localUser.name);
380
+ }
381
+ if (localUser.peerId) {
382
+ url.searchParams.set('peerId', localUser.peerId);
383
+ }
384
+
385
+ if (entry.mode === 'edit') {
386
+ url.searchParams.set('leaseRoom', createDrawioLeaseRoomName(entry.filePath));
387
+ }
388
+
389
+ return url.toString();
390
+ }
391
+
392
+ updateTheme(theme) {
393
+ this.embedEntries.forEach((entry) => {
394
+ if (entry.iframe?.contentWindow) {
395
+ entry.iframe.contentWindow.postMessage({
396
+ source: 'collabmd-host',
397
+ theme,
398
+ type: 'set-theme',
399
+ }, window.location.origin);
400
+ }
401
+
402
+ if (entry.mode === 'view' && entry.wrapper?.isConnected && entry.viewerElement?.isConnected) {
403
+ void this.renderViewerEntry(entry).catch((error) => {
404
+ this.renderViewerFallback(entry, error instanceof Error ? error.message : 'Failed to render draw.io preview');
405
+ });
406
+ }
407
+ });
408
+ }
409
+
410
+ updateLocalUser() {}
411
+
412
+ syncLayout() {}
413
+
414
+ _findEntryByInstanceId(instanceId) {
415
+ for (const entry of this.embedEntries.values()) {
416
+ if (entry.instanceId === instanceId) {
417
+ return entry;
418
+ }
419
+ }
420
+
421
+ return null;
422
+ }
423
+
424
+ _onMessage(event) {
425
+ const payload = event.data;
426
+ if (!payload || payload.source !== 'drawio-editor') {
427
+ return;
428
+ }
429
+
430
+ const entry = this._findEntryByInstanceId(payload.instanceId);
431
+ if (!entry) {
432
+ return;
433
+ }
434
+
435
+ if (payload.type === 'fallback-text') {
436
+ if (entry.mode === 'view') {
437
+ this.renderExportFallback(entry, 'Failed to render draw.io preview');
438
+ return;
439
+ }
440
+ this.onOpenTextFile?.(entry.filePath);
441
+ return;
442
+ }
443
+
444
+ if (payload.type === 'error') {
445
+ if (entry.mode === 'view') {
446
+ this.renderViewerFallback(entry, payload.message || 'Failed to load draw.io preview');
447
+ return;
448
+ }
449
+ this.toastController?.show?.(payload.message || 'Failed to load draw.io');
450
+ return;
451
+ }
452
+
453
+ if (payload.type === 'request-open-file') {
454
+ this.onOpenFile?.(entry.filePath);
455
+ }
456
+ }
457
+
458
+ _onPreviewClick(event) {
459
+ const loadButton = event.target.closest('.drawio-embed-placeholder-btn');
460
+ if (loadButton) {
461
+ const placeholder = loadButton.closest('.drawio-embed-placeholder');
462
+ const key = placeholder?.dataset.drawioKey || '';
463
+ const entry = this.embedEntries.get(key);
464
+ if (entry) {
465
+ event.preventDefault();
466
+ this.hydrateEntry(entry);
467
+ }
468
+ return;
469
+ }
470
+
471
+ const openButton = event.target.closest('.drawio-embed-btn[data-action="open-file"]');
472
+ if (openButton) {
473
+ event.preventDefault();
474
+ this.onOpenFile?.(openButton.dataset.filePath || '');
475
+ }
476
+
477
+ const viewerFrame = event.target.closest('.drawio-viewer-frame[data-action="open-file"]');
478
+ if (viewerFrame) {
479
+ event.preventDefault();
480
+ this.onOpenFile?.(viewerFrame.dataset.filePath || '');
481
+ }
482
+ }
483
+
484
+ renderViewerFallback(entry, message) {
485
+ if (!entry.wrapper) {
486
+ return;
487
+ }
488
+
489
+ const viewerShell = entry.wrapper.querySelector('.drawio-viewer-shell, .drawio-viewer-frame');
490
+ if (!viewerShell) {
491
+ return;
492
+ }
493
+
494
+ const fallback = document.createElement('div');
495
+ fallback.className = 'preview-shell';
496
+ fallback.textContent = message;
497
+ viewerShell.replaceChildren(fallback);
498
+ entry.viewerElement = fallback;
499
+ }
500
+ }