collabmd 0.1.52 → 0.1.55

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 (464) hide show
  1. package/bin/collabmd.js +22 -40
  2. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-cMeDxAEL.js +1 -0
  3. package/dist/client/assets/{abnfDiagram-VCTEODGH-DxNxad6-.js → abnfDiagram-VCTEODGH-D2UdmYvj.js} +1 -1
  4. package/dist/client/assets/{abnfDiagram-O67JEVCF-Dwt6a0Ds.js → abnfDiagram-YUKMZFIV-DbmU4Q-X.js} +1 -1
  5. package/dist/client/assets/api-client-utils-C5ESDKMG.js +1 -0
  6. package/dist/client/assets/architecture-7GRP2DOG-BBwRXFv3.js +1 -1
  7. package/dist/client/assets/architecture-WOLXFQ4H-C0NxYiG7.js +1 -0
  8. package/dist/client/assets/{architectureDiagram-NJMV4G6O-D5CGiX3G.js → architectureDiagram-47P4ROYG-C7OjXK9S.js} +3 -3
  9. package/dist/client/assets/{architectureDiagram-5GKGNRK7-C1uvg5id.js → architectureDiagram-5GKGNRK7-CSiUzzeN.js} +1 -1
  10. package/dist/client/assets/base-CaIEJUF9.css +1 -0
  11. package/dist/client/assets/{blockDiagram-BEXU5L5S-BgTM0var.js → blockDiagram-E7TT5TSB-DMG-YlZw.js} +3 -3
  12. package/dist/client/assets/{blockDiagram-I7D4REHJ-B2YonsoG.js → blockDiagram-I7D4REHJ-sXfAgK2w.js} +1 -1
  13. package/dist/client/assets/{browser-BKLM0ThC-IxjwuOIz-C0mP17s1.js → browser-BKLM0ThC-BCLQGPD6-CcMAHZXi.js} +1 -1
  14. package/dist/client/assets/{c4Diagram-7LVT6UL2-r4IwomZm.js → c4Diagram-7LVT6UL2-C88V_K-8.js} +1 -1
  15. package/dist/client/assets/{c4Diagram-YGBWAQC7-_xZPrNkB.js → c4Diagram-CRA5TL53-D3F9ElJv.js} +2 -2
  16. package/dist/client/assets/canvasEditor-BJkwGzO1.css +1 -0
  17. package/dist/client/assets/canvasEditor-sBK7KfrD.js +1 -0
  18. package/dist/client/assets/{chunk-6AZGARVD--pTGpDnx.js → chunk-24IY7LWP-flnn6SWX.js} +1 -1
  19. package/dist/client/assets/chunk-2BW5OAIV-CNFO1U_e.js +10 -0
  20. package/dist/client/assets/{chunk-2E4U76K2-CIQUuV9n.js → chunk-2E4U76K2-DEnS5IbF.js} +1 -1
  21. package/dist/client/assets/{chunk-5V3GS4D5-B5uC2oxu.js → chunk-3M4EKCLJ-D-sZGCtO.js} +1 -1
  22. package/dist/client/assets/chunk-3YJQHVM4-Ctp__8EK.js +2 -0
  23. package/dist/client/assets/{chunk-7PRAP22T-9uTvtc_-.js → chunk-4EA7E6EY-bU4wRJot.js} +1 -1
  24. package/dist/client/assets/{chunk-4HAMMTFA-q0ldNVvr.js → chunk-4HAMMTFA-CQy6Skzw.js} +1 -1
  25. package/dist/client/assets/{chunk-6K3QC6MW-JnuvEGV4.js → chunk-4S7OKTRW-BpUW13a3.js} +1 -1
  26. package/dist/client/assets/{chunk-ICYGCRZG-odvlDZyA.js → chunk-53FOQ5SW-5lPdGYP4.js} +1 -1
  27. package/dist/client/assets/{chunk-75Z2AOVW-DitkSoSG.js → chunk-75Z2AOVW-BRdhvVTZ.js} +1 -1
  28. package/dist/client/assets/{chunk-GWA4HPMP-CGmv2yIq.js → chunk-7TKQ45FW-rA2u-WUl.js} +1 -1
  29. package/dist/client/assets/{chunk-GTNCS2PH-ChgkzEIi.js → chunk-AW2ZBBNX-DL0KGAdi.js} +3 -3
  30. package/dist/client/assets/{chunk-747NJXEK-BjqqAsS9.js → chunk-BP2KR52E-DAQ1pzDV.js} +1 -1
  31. package/dist/client/assets/{chunk-CLGD4ZFX-BfYJtJm1.js → chunk-CLGD4ZFX-DJiSE0gD.js} +1 -1
  32. package/dist/client/assets/{chunk-5DYCD2WN-BKWCKnK-.js → chunk-DBDB3WZW-CXleNlok.js} +1 -1
  33. package/dist/client/assets/{chunk-DU6HZSFF-CWlP1Dk_.js → chunk-DU6HZSFF-C-18UZkS.js} +1 -1
  34. package/dist/client/assets/{chunk-MBY4JIJT-DTJ4UcAm.js → chunk-E2ZNV5FY-D_07zfWd.js} +3 -3
  35. package/dist/client/assets/chunk-EU5HNXII-CETVNUXF.js +213 -0
  36. package/dist/client/assets/{chunk-F27PBJKO-DPcsPcEs.js → chunk-F27PBJKO-_beIJos4.js} +1 -1
  37. package/dist/client/assets/{chunk-2ZTRR5NV-DcPRfelM.js → chunk-F6S3BTY2-DVWKCAHp.js} +1 -1
  38. package/dist/client/assets/{chunk-RUX4WMZV-BGnd3s_C.js → chunk-FLFP27SU-CydzbSsY.js} +2 -2
  39. package/dist/client/assets/chunk-FVRAUYC3-C7b9SJ81.js +1 -0
  40. package/dist/client/assets/{chunk-GMAD6QVW-Bgk8qnty.js → chunk-GMAD6QVW-DnZH7DxV.js} +1 -1
  41. package/dist/client/assets/{chunk-GVQU2GXP-CQ8cl-Uu.js → chunk-GVQU2GXP-B0Vm415C.js} +1 -1
  42. package/dist/client/assets/chunk-H5A3YXKD-ChP7mNJq.js +41 -0
  43. package/dist/client/assets/{chunk-742MDFTN-D1nh6vNv.js → chunk-HJ2JQQFS-DQX7RePR.js} +1 -1
  44. package/dist/client/assets/{chunk-NETBCI7D-CmUwDWUZ.js → chunk-HTAEGDNF-C0PA_N-c.js} +1 -1
  45. package/dist/client/assets/{chunk-IMKFNOWR-CBqxfpcP.js → chunk-IMKFNOWR-DoO8IHzF.js} +1 -1
  46. package/dist/client/assets/{chunk-IH6LHLGP-BNevEHZK.js → chunk-KPI5JJXK-B2ld5-w4.js} +1 -1
  47. package/dist/client/assets/{chunk-WEXAMYUT-DDlVNp8J.js → chunk-KQW6MTUR-OQ4MyMr_.js} +1 -1
  48. package/dist/client/assets/{chunk-L3NEJ4N5-BflzkdTI.js → chunk-L3NEJ4N5-CvHossEU.js} +1 -1
  49. package/dist/client/assets/chunk-NGNAAXSQ-DqoPQk1a.js +136 -0
  50. package/dist/client/assets/{chunk-UA2S7LBM-DicYDjDM.js → chunk-NTY3LDVX-CVWLK_fh.js} +1 -1
  51. package/dist/client/assets/{chunk-UY3FDG6J-QT-rkt0y.js → chunk-OD3NTWWA-Dz9nCUGX.js} +1 -1
  52. package/dist/client/assets/{chunk-OSK3NFVY-DqeKV_pg.js → chunk-OSK3NFVY-C3JOcBao.js} +1 -1
  53. package/dist/client/assets/{chunk-P2QGCYS3-BA--DhpW.js → chunk-P2QGCYS3-Bfo8qS8r.js} +1 -1
  54. package/dist/client/assets/{chunk-POPQ4Y6H-V_NEc45n.js → chunk-POPQ4Y6H-sv6rCftH.js} +1 -1
  55. package/dist/client/assets/{chunk-PWAF6VOD-D_kLse-N.js → chunk-PWAF6VOD-B-AT-L2H.js} +1 -1
  56. package/dist/client/assets/{chunk-3Z5EZCMW-BAnA6eQ7.js → chunk-QNH66VMT-Cb9xxTwQ.js} +1 -1
  57. package/dist/client/assets/{chunk-SHT3W25Y-YM3S-A_M.js → chunk-SHT3W25Y-C1lu518T.js} +1 -1
  58. package/dist/client/assets/{chunk-GNY47TPC-CTrH5O5R.js → chunk-SVEVUXB4-BnM-LXop.js} +1 -1
  59. package/dist/client/assets/{chunk-SVP7TREG-DdNhDOmW.js → chunk-SVP7TREG-CKqt0syj.js} +1 -1
  60. package/dist/client/assets/{chunk-TICWLB2K-BGGgCr4x.js → chunk-TICWLB2K-D2ZnWAfF.js} +1 -1
  61. package/dist/client/assets/{chunk-TLUHSLCS-DCZhIDYA.js → chunk-TLUHSLCS-BMIhqv1X.js} +1 -1
  62. package/dist/client/assets/{chunk-6EIED4P4-DBVWq7Tz.js → chunk-TPMEZKFX-DIPHIqGb.js} +1 -1
  63. package/dist/client/assets/{chunk-6TQVIW2G-BSj0l_pu.js → chunk-VPELOWWC-DXayM28-.js} +1 -1
  64. package/dist/client/assets/chunk-VPRB5NB3-BqaJfj_v.js +127 -0
  65. package/dist/client/assets/{chunk-I5DQTOEV-aBZooNp1.js → chunk-VTWWFHGB-SZnJiyWY.js} +1 -1
  66. package/dist/client/assets/{chunk-KI3K4JFJ-FTtDwx3-.js → chunk-VZTHESGH-eHyXmK8W.js} +1 -1
  67. package/dist/client/assets/{chunk-7INBJB4K-CDmiHbaX.js → chunk-XC4XBNZT-D9oehSn8.js} +20 -20
  68. package/dist/client/assets/{chunk-XHIXRSVI-DN_fEwws.js → chunk-YK26KJH5-DVy3MGMd.js} +1 -1
  69. package/dist/client/assets/{chunk-6AEJRKK7-DTVZj5bY.js → chunk-Z6ETV63D-DOcrnz-P.js} +1 -1
  70. package/dist/client/assets/{chunk-OUJLGHUK-75UXlPjl.js → chunk-ZO67DCNQ-BAOMIkLF.js} +1 -1
  71. package/dist/client/assets/classDiagram-ZZMXUADV-BmETdFmC.js +1 -0
  72. package/dist/client/assets/{classDiagram-v2-NBCMYWYE-3TQORq33.js → classDiagram-v2-K4WV4PDN-eaadfJDB.js} +3 -3
  73. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BmETdFmC.js +1 -0
  74. package/dist/client/assets/{comment-markdown-renderer-Bxi_JRSR.js → comment-markdown-renderer-CpBKaj7H.js} +1 -1
  75. package/dist/client/assets/comment-thread-store-DUQsWtnu.js +1 -0
  76. package/dist/client/assets/comment-threads-DnfkLVJA.js +4 -0
  77. package/dist/client/assets/comment-ui-shared-D_pgPUti.js +7 -0
  78. package/dist/client/assets/cynefin-EF2NZ3EQ-DVkJeZ8i.js +1 -0
  79. package/dist/client/assets/cynefin-OW5HDTMX-CF3N9j1_.js +1 -1
  80. package/dist/client/assets/{cynefinDiagram-VND7K2PF-DwfMZ3vk.js → cynefinDiagram-3GCD6N5R-DjpAsBHC.js} +1 -1
  81. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-DTnLZaO7.js → cynefinDiagram-5FMLGOSQ-D2rFQG67.js} +1 -1
  82. package/dist/client/assets/dagre-C-rnJpZF.js +1 -0
  83. package/dist/client/assets/{dagre-GXQ25YYZ-Vtyx08Qh.js → dagre-GXQ25YYZ-Cku9eia9.js} +2 -2
  84. package/dist/client/assets/{dagre-6A5THRUB-DewyAGK6.js → dagre-W4DXFKR2-DOMOIsPd.js} +2 -2
  85. package/dist/client/assets/deferred-collab-C9aa9cvT.css +1 -0
  86. package/dist/client/assets/deferred-git-BPQ-UgrN.css +1 -0
  87. package/dist/client/assets/deferred-preview-B-RebLry.css +1 -0
  88. package/dist/client/assets/{diagram-22UHCM2B-DbZirFfl.js → diagram-2UJZ2QOL-D8WvnEyx.js} +6 -6
  89. package/dist/client/assets/{diagram-3UASUU5V-DmhdYv6_.js → diagram-OVF4WLC6-D8_escYE.js} +2 -2
  90. package/dist/client/assets/{diagram-CDSNMT55-D_qyS11R.js → diagram-PFPMY2P6-B1izZfrN.js} +3 -3
  91. package/dist/client/assets/{diagram-S7CK7UJ4-CGTzfo2f.js → diagram-S7CK7UJ4-BzicH2t-.js} +1 -1
  92. package/dist/client/assets/{diagram-MLGK6HIB-DIBG6Ivu.js → diagram-UMYRVEAY-Djf7WDjZ.js} +1 -1
  93. package/dist/client/assets/{diagram-UQ7AKVKN-CWZS8QtB.js → diagram-UQ7AKVKN-DqX4zTtr.js} +1 -1
  94. package/dist/client/assets/{diagram-VSXAHHWV-DaO1nOZF.js → diagram-VSXAHHWV-DnVbfI4Y.js} +1 -1
  95. package/dist/client/assets/{diagram-VX7I27RA-B54P6Cyf.js → diagram-VX7I27RA-D-Dj0TQC.js} +1 -1
  96. package/dist/client/assets/{diagram-MPIPVDR6-D9XsALDV.js → diagram-YEKJPTXX-B40bP3Yr.js} +2 -2
  97. package/dist/client/assets/{diagram-Z3DM3KII-Cl2EXiXp.js → diagram-Z3DM3KII-_iT7Uz5p.js} +1 -1
  98. package/dist/client/assets/diagram-ZIFT7M5P-BUUK0oNw.js +3 -0
  99. package/dist/client/assets/{direct-engine-DdrQKpgq-4QysbH_V.js → direct-engine-DVLMOJWp-DWtWIifK.js} +1 -1
  100. package/dist/client/assets/dist-26Ce-5t4.js +1 -0
  101. package/dist/client/assets/dist-8MLNn-I6.js +1 -0
  102. package/dist/client/assets/dist-Amm5Pr1C.js +1 -0
  103. package/dist/client/assets/dist-BXXPaoUV.js +1 -0
  104. package/dist/client/assets/{dist-zHDLm1oE.js → dist-Bkb-_VdB.js} +1 -1
  105. package/dist/client/assets/dist-Bl4yuUS9.js +1 -0
  106. package/dist/client/assets/{dist-CKf7LlAo.js → dist-C2CGvCPd.js} +1 -1
  107. package/dist/client/assets/dist-C2niyEh0.js +1 -0
  108. package/dist/client/assets/{dist-Y6zYRI-A.js → dist-CFCSUmJk.js} +1 -1
  109. package/dist/client/assets/dist-CHUI56fT.js +6 -0
  110. package/dist/client/assets/dist-CJh3Qrid.js +13 -0
  111. package/dist/client/assets/{dist-Ch6Sr9KF.js → dist-CKxETpSC.js} +3 -3
  112. package/dist/client/assets/dist-CSHJthAI.js +2 -0
  113. package/dist/client/assets/dist-CbKnZGN4.js +1 -0
  114. package/dist/client/assets/{dist-BVCNc-Es.js → dist-Cik4RJXj.js} +1 -1
  115. package/dist/client/assets/{dist-DGa-2MNX.js → dist-CqkAY6Ot.js} +2 -2
  116. package/dist/client/assets/dist-D2ql2LCd.js +1 -0
  117. package/dist/client/assets/{dist-CvVoyTRF.js → dist-D47MOYFN.js} +1 -1
  118. package/dist/client/assets/dist-DBhUaexM.js +1 -0
  119. package/dist/client/assets/dist-DJux6Vc5.js +1 -0
  120. package/dist/client/assets/{dist-CXOUa90Q.js → dist-DLNdMWPH.js} +1 -1
  121. package/dist/client/assets/dist-DPJj-Y3l.js +1 -0
  122. package/dist/client/assets/{dist-DI6c02Da.js → dist-DRYFMufe.js} +6 -6
  123. package/dist/client/assets/{dist-CUsXdnU4.js → dist-DTGcVSU8.js} +1 -1
  124. package/dist/client/assets/dist-DlOxjzWi.js +9 -0
  125. package/dist/client/assets/{dist-BfpAc922.js → dist-DogjjM_B.js} +1 -1
  126. package/dist/client/assets/dist-Dyv_RvyB.js +23 -0
  127. package/dist/client/assets/dist-FUFeH5Cx.js +1 -0
  128. package/dist/client/assets/dist-It70ktCU.js +1 -0
  129. package/dist/client/assets/dist-QMvcnJHf.js +1 -0
  130. package/dist/client/assets/dist-QN1K2czv.js +11 -0
  131. package/dist/client/assets/dist-W8ilOKl3.js +1 -0
  132. package/dist/client/assets/dist-_17-t9qP.js +1 -0
  133. package/dist/client/assets/{dist-CsQTfQFi.js → dist-uE774WWs.js} +1 -1
  134. package/dist/client/assets/document-formatter-DtXmKZcy.js +1 -0
  135. package/dist/client/assets/drawioEditor-DO6IOaJ1.js +9 -0
  136. package/dist/client/assets/{ebnfDiagram-PWID7BFC-PfC84FyI.js → ebnfDiagram-PWID7BFC-IemGPf9X.js} +1 -1
  137. package/dist/client/assets/{ebnfDiagram-ZINNZB2B-DYvm_QtE.js → ebnfDiagram-VR2GEFS7-9fXqy1DI.js} +1 -1
  138. package/dist/client/assets/editor-session-CPsqXY_A.js +13 -0
  139. package/dist/client/assets/elk-IJKZMXRS-DsbrbBYg.js +27 -0
  140. package/dist/client/assets/embedded-editor-base-C44ZcCZv.css +1 -0
  141. package/dist/client/assets/{embedpdf-DyOonRvx.js → embedpdf-BfUI-3pv.js} +1 -1
  142. package/dist/client/assets/{embedpdf-DA4bA119-DsoNiPlQ.js → embedpdf-cl9qiF45-CLMxJTMP.js} +3 -3
  143. package/dist/client/assets/en-7ZVUCEYH-C_VXKxxb.js +1 -0
  144. package/dist/client/assets/{erDiagram-OPXOYQCR-o8GRv8A_.js → erDiagram-O2IAPWRE-Cdadm-HN.js} +2 -2
  145. package/dist/client/assets/{erDiagram-RLTQ6QDP-C9cJl5NB.js → erDiagram-RLTQ6QDP-CGGmjm8t.js} +1 -1
  146. package/dist/client/assets/{estree-DCT3Jm65.js → estree-DGmLqopC.js} +17 -17
  147. package/dist/client/assets/eventmodeling-K75KTNOO-BWBlZ5cR.js +1 -0
  148. package/dist/client/assets/eventmodeling-NTZA5JFV-CDy1bN6j.js +1 -1
  149. package/dist/client/assets/excalidraw-element-link-NQnskRkm.js +1 -0
  150. package/dist/client/assets/excalidraw-scene-DLlw4jyc.js +1 -0
  151. package/dist/client/assets/excalidrawEditor-DiKOIudt.css +1 -0
  152. package/dist/client/assets/excalidrawEditor-W2lZ5Mej.js +9 -0
  153. package/dist/client/assets/export-page-Bomh9oEr.js +46 -0
  154. package/dist/client/assets/exportDocument-BFIOECJ3.js +2 -0
  155. package/dist/client/assets/exportDocument-D0mONgQ4.css +1 -0
  156. package/dist/client/assets/file-kind-BGxTVHan.js +1 -0
  157. package/dist/client/assets/{file-search-3hYF4cYa.js → file-search-Dk2O14Vw.js} +1 -1
  158. package/dist/client/assets/flowDiagram-HODETNUW-DcVVYJUZ.js +1 -0
  159. package/dist/client/assets/flowDiagram-OXPTDLAJ-Dy6y46oF.js +1 -0
  160. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-x40PW0Ah.js → ganttDiagram-EL5Y4UJY-Duu4KnsU.js} +1 -1
  161. package/dist/client/assets/ganttDiagram-R7TSEDQI-BWy52pjn.js +292 -0
  162. package/dist/client/assets/gitGraph-4MIJSDKK-B-rpDYbz.js +1 -1
  163. package/dist/client/assets/gitGraph-VSP46ZUC-1499lQAI.js +1 -0
  164. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-ahsNaZsp.js → gitGraphDiagram-WWUBYQGX-CaJ0vC1a.js} +1 -1
  165. package/dist/client/assets/gitGraphDiagram-XJZIOB7I-DJwp9ilx.js +106 -0
  166. package/dist/client/assets/graphlib-DS17s2tU.js +1 -0
  167. package/dist/client/assets/{html-CBXMuS97.js → html-BryNQ_yx.js} +6 -6
  168. package/dist/client/assets/image-6XY3GD3F-DCWbu6d4.js +1 -0
  169. package/dist/client/assets/image-lightbox-controller-DAcXEXxT.js +184 -0
  170. package/dist/client/assets/index-CglpXOg7.css +1 -0
  171. package/dist/client/assets/index-D3WGkxfI.js +960 -0
  172. package/dist/client/assets/info-A6RAGUB7-BlutK7BT.js +1 -1
  173. package/dist/client/assets/info-OHQRW6UA-BDFQOo4H.js +1 -0
  174. package/dist/client/assets/{infoDiagram-27XIBGKW-MrZyptIy.js → infoDiagram-27XIBGKW-DBJh7QOu.js} +1 -1
  175. package/dist/client/assets/{infoDiagram-VRGFBTTK-KkUjDRAQ.js → infoDiagram-5W2HQ5XZ-DmWsqJ0w.js} +1 -1
  176. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-Bnt9yM0O.js → ishikawaDiagram-5VMMS53U-CeEbSJem.js} +1 -1
  177. package/dist/client/assets/{ishikawaDiagram-OU5B5YK6-Di9BcpOY.js → ishikawaDiagram-K3B6WC7H-DH1NI35G.js} +2 -2
  178. package/dist/client/assets/{journeyDiagram-3NMN7TZE-Bl0abK1r.js → journeyDiagram-3NMN7TZE-BoIEEr6U.js} +1 -1
  179. package/dist/client/assets/{journeyDiagram-ZHPQQLJL-J-sGrs9e.js → journeyDiagram-COXZFDF6-CnHV2f9V.js} +3 -3
  180. package/dist/client/assets/{kanban-definition-PNTS6WVX-5ZDV_yIa.js → kanban-definition-P3RFRI5V-Cxvn5ZAG.js} +4 -4
  181. package/dist/client/assets/{kanban-definition-UXKFOSKX-DMgUfNt0.js → kanban-definition-UXKFOSKX-BY16Tgbr.js} +1 -1
  182. package/dist/client/assets/keyboard-shortcuts-BWNCBJqw.js +1 -0
  183. package/dist/client/assets/lobby-presence-DNNXcuwR.js +1 -0
  184. package/dist/client/assets/{markdown-Bo71X2X2.js → markdown-DU84620G.js} +17 -17
  185. package/dist/client/assets/markdown-headings-zYEUahfW.js +41 -0
  186. package/dist/client/assets/{markdown-math-CyyBVuDO.js → markdown-math-B96cnrz1.js} +11 -11
  187. package/dist/client/assets/{mermaid-parser.core-Bpogunsh.js → mermaid-parser.core-R-uwU5kf.js} +3 -3
  188. package/dist/client/assets/{mermaid-parser.core-DBy--Jc0.js → mermaid-parser.core-mE6t1qEO.js} +1 -1
  189. package/dist/client/assets/mermaid.core-D8Z6LN7O.js +10 -0
  190. package/dist/client/assets/{mindmap-definition-NLK3R4M7-ByVb-0vj.js → mindmap-definition-LZFPQGKD-DVfFenfJ.js} +3 -3
  191. package/dist/client/assets/{mindmap-definition-YA3MSWOX-DBZN5_GH.js → mindmap-definition-YA3MSWOX-DtiE80UJ.js} +1 -1
  192. package/dist/client/assets/packet-AYTQ26CC-DvbY8dI6.js +1 -1
  193. package/dist/client/assets/packet-JDAUHWVQ-DJ9K2MA4.js +1 -0
  194. package/dist/client/assets/{pdfium-RAgkpwfK.wasm → pdfium-BJ2Yip8Q.wasm} +0 -0
  195. package/dist/client/assets/{pegDiagram-GJSIUBJH-aost1sSO.js → pegDiagram-BGZESJAR-DxfvEcwv.js} +1 -1
  196. package/dist/client/assets/{pegDiagram-XKGWAZYB-DRo8CZu3.js → pegDiagram-XKGWAZYB-CyozY-Kt.js} +1 -1
  197. package/dist/client/assets/pie-WAS4IAKB-DWSm9SSD.js +1 -1
  198. package/dist/client/assets/pie-XZMESJXO-CQIQasY-.js +1 -0
  199. package/dist/client/assets/{pieDiagram-5QR66LMP-BICdpEuz.js → pieDiagram-CAPJLFHJ-CRlMcrv3.js} +2 -2
  200. package/dist/client/assets/{pieDiagram-E7YTZNPT-CZThaHsc.js → pieDiagram-E7YTZNPT-BRdmTkDq.js} +1 -1
  201. package/dist/client/assets/preload-helper-CYtfOYgs.js +1 -0
  202. package/dist/client/assets/preview-render-compiler-D_aJv7Ew.js +3 -0
  203. package/dist/client/assets/{preview-render-worker-BI2bFVqM.js → preview-render-worker-dFNyrVyB.js} +47 -43
  204. package/dist/client/assets/prod-ItolaHmf.js +145 -0
  205. package/dist/client/assets/prod-rdly4JJQ.js +1 -0
  206. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-C5iowkl_.js → quadrantDiagram-AXDQQJYC-7QyPIXkF.js} +1 -1
  207. package/dist/client/assets/{quadrantDiagram-O4NWA36T-Bgx5bF97.js → quadrantDiagram-GDMTTRAM-DE30uqTl.js} +3 -3
  208. package/dist/client/assets/quick-switcher-controller-DsK70I7K.js +1 -0
  209. package/dist/client/assets/radar-ABXABTNO-ByfpCXh9.js +1 -0
  210. package/dist/client/assets/radar-RG4KPBEZ-BfNQUEQy.js +1 -1
  211. package/dist/client/assets/railroad-74A4TZTK-BaQ6U6eJ.js +1 -1
  212. package/dist/client/assets/railroad-I3PHUGI6-CTUn9HhI.js +1 -0
  213. package/dist/client/assets/railroad-abnf-HS5TGJTU-BJ3KZw7J.js +1 -1
  214. package/dist/client/assets/railroad-abnf-LNEFI6M7-Ct-b-y0F.js +1 -0
  215. package/dist/client/assets/railroad-ebnf-DWYD2UWJ-BZMYMWOe.js +1 -0
  216. package/dist/client/assets/railroad-ebnf-LZEXJU2U-DA0sEq7w.js +1 -1
  217. package/dist/client/assets/railroad-peg-JR7BVNR7-Dj23PxYc.js +1 -0
  218. package/dist/client/assets/railroad-peg-WCYAUIDC-DCmlICzO.js +1 -1
  219. package/dist/client/assets/{railroadDiagram-O6MQD6OU-BTt_rKjT.js → railroadDiagram-O6MQD6OU-BPk3RS2D.js} +1 -1
  220. package/dist/client/assets/{railroadDiagram-XR7U4H2S-DbVoNgSz.js → railroadDiagram-SM67HX2B-CZRXJ647.js} +1 -1
  221. package/dist/client/assets/{requirementDiagram-BXWQKSXE-BkvazG7r.js → requirementDiagram-BXWQKSXE-BRwfym6z.js} +1 -1
  222. package/dist/client/assets/{requirementDiagram-PLB6GJNP-BT0j9C40.js → requirementDiagram-X7JNWC4A-BofCuLJA.js} +4 -4
  223. package/dist/client/assets/runtime-config-CvrkHb0n.js +1 -0
  224. package/dist/client/assets/runtime-paths-qQGhzNx4.js +1 -0
  225. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-C_IemB9h.js → sankeyDiagram-P5KCCOFB-D4LcrKpW.js} +1 -1
  226. package/dist/client/assets/{sankeyDiagram-IPEJSGJF-X1BCUIrf.js → sankeyDiagram-UM26HJRW-CLKMDbej.js} +3 -3
  227. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-CxFBgLGd.js → sequenceDiagram-WJ2MYXX4-DQjtv-Bs.js} +1 -1
  228. package/dist/client/assets/sequenceDiagram-ZO4K6R2Y-CDP_m6ma.js +169 -0
  229. package/dist/client/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  230. package/dist/client/assets/sizeCapture-INFHLROL-BMR1ovSU.js +1 -0
  231. package/dist/client/assets/src-D5mvpivG.js +2 -0
  232. package/dist/client/assets/{standalone-6z5x8CWe.js → standalone-D_lg5NC9.js} +1 -1
  233. package/dist/client/assets/{stateDiagram-D77RDMKH-BaSQ6Owj.js → stateDiagram-D77RDMKH-DSMvV-kF.js} +1 -1
  234. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-ClmOOUsT.js +1 -0
  235. package/dist/client/assets/{stateDiagram-v2-GCMORJYK-CsVcfwVp.js → stateDiagram-v2-TBUQTH76-Dc5-FKzd.js} +2 -2
  236. package/dist/client/assets/{swimlanes-42K2YHIH-CALFEmiS.js → swimlanes-42K2YHIH-BUz31lO3.js} +1 -1
  237. package/dist/client/assets/{swimlanes-2SLR337P-CnYTVqRX.js → swimlanes-N4OXWK64-Dd3dFdPD.js} +1 -1
  238. package/dist/client/assets/swimlanesDiagram-K3J5GTZL-Bz9gFdls.js +8 -0
  239. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DoDs3zod.js +8 -0
  240. package/dist/client/assets/{timeline-definition-24CTP7MA-zse-5Dbm.js → timeline-definition-24CTP7MA-BvqCvSjy.js} +1 -1
  241. package/dist/client/assets/{timeline-definition-EJHVYXUP-BhqPlKkN.js → timeline-definition-YOQAKGHF-D2XWPSLs.js} +3 -3
  242. package/dist/client/assets/treeView-D4JQ5SDB-DcX7Bx0H.js +1 -0
  243. package/dist/client/assets/treeView-Q6P3EWNA-BvHOzbu9.js +1 -1
  244. package/dist/client/assets/treemap-SAJKECNS-BcCHmcAX.js +1 -0
  245. package/dist/client/assets/treemap-WGGIJYW6-oety7paS.js +1 -1
  246. package/dist/client/assets/usecaseDiagram-VIAY4XPW-CDe-IMjS.js +328 -0
  247. package/dist/client/assets/vault-api-client-DrRW0QwO.js +7 -0
  248. package/dist/client/assets/{vennDiagram-4TSXK5OY-DgHr6cJD.js → vennDiagram-4TSXK5OY-BW6Qp12d.js} +1 -1
  249. package/dist/client/assets/{vennDiagram-UO4OBE2U-BRwLn2Q1.js → vennDiagram-BLWOH2XV-KxIPKpHi.js} +3 -3
  250. package/dist/client/assets/wardley-7MLQ67FV-DOahSwbZ.js +1 -0
  251. package/dist/client/assets/wardley-WFR3VGLG-BdwDpX_I.js +1 -1
  252. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-9A60XZis.js → wardleyDiagram-VM6X3IG4-BoCETVsK.js} +1 -1
  253. package/dist/client/assets/{wardleyDiagram-VNRHLVJA-B_tMcVFG.js → wardleyDiagram-YMQ3BMBF-BNYqEy7M.js} +4 -4
  254. package/dist/client/assets/{wiki-link-resolver-Dch88erO.js → wiki-link-resolver-BCdGUpdu.js} +1 -1
  255. package/dist/client/assets/{worker-engine-m0rlHn8R-5h66k403.js → worker-engine-BCCrxWYm-1fphds7O.js} +1 -1
  256. package/dist/client/assets/workspace-sync-client-C_P9wtjf.js +1 -0
  257. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-D00iy-wB.js → xychartDiagram-S5SC5T6Z-eB5Fu9P7.js} +1 -1
  258. package/dist/client/assets/xychartDiagram-TAQBALBS-Sv6aaptV.js +7 -0
  259. package/dist/client/assets/yjs-Jd9fna_Y.js +4 -0
  260. package/dist/client/assets/yjs-provider-reset-guard-Cqu0Z6xH.js +1 -0
  261. package/dist/client/canvas-editor.html +16 -0
  262. package/dist/client/drawio-editor.html +9 -8
  263. package/dist/client/excalidraw-editor.html +33 -32
  264. package/dist/client/export-document.html +4 -3
  265. package/dist/client/index.html +13 -2
  266. package/package.json +31 -33
  267. package/scripts/local-compose.mjs +101 -0
  268. package/src/client/app/canvas-editor.html +13 -0
  269. package/src/client/app/index.html +11 -0
  270. package/src/client/app/main-entry.js +30 -4
  271. package/src/client/application/app-shell/git-feature.js +3 -2
  272. package/src/client/application/app-shell/ui-feature-identity.js +1 -0
  273. package/src/client/application/app-shell/ui-feature-shell.js +2 -0
  274. package/src/client/application/app-shell/ui-feature-tab-activity.js +4 -0
  275. package/src/client/application/app-shell/workspace-feature.js +8 -34
  276. package/src/client/application/diagram-chrome.js +8 -11
  277. package/src/client/application/diagram-preview-hydrator.js +5 -5
  278. package/src/client/application/mermaid-preview-hydrator.js +3 -2
  279. package/src/client/application/plantuml-preview-hydrator.js +6 -0
  280. package/src/client/application/preview-render-compiler.js +34 -98
  281. package/src/client/application/preview-render-executor.js +3 -0
  282. package/src/client/application/preview-render-worker.js +2 -0
  283. package/src/client/application/preview-renderer.js +9 -5
  284. package/src/client/application/workspace-coordinator.js +18 -10
  285. package/src/client/application/workspace-preview-controller.js +105 -158
  286. package/src/client/application/workspace-route-controller.js +29 -54
  287. package/src/client/bootstrap/canvas-markdown-preview.js +87 -0
  288. package/src/client/bootstrap/collabmd-app-shell.js +31 -14
  289. package/src/client/browser-utils.js +21 -0
  290. package/src/client/canvas-editor.js +143 -0
  291. package/src/client/domain/canvas-view.js +50 -0
  292. package/src/client/domain/excalidraw-scene.js +4 -49
  293. package/src/client/domain/file-search.js +1 -1
  294. package/src/client/domain/highlight-runtime.js +0 -4
  295. package/src/client/domain/markdown-formatting.js +12 -94
  296. package/src/client/domain/markdown-headings.js +98 -0
  297. package/src/client/domain/runtime-paths.js +4 -0
  298. package/src/client/domain/wiki-link-completions.js +42 -10
  299. package/src/client/infrastructure/browser-preferences-port.js +27 -33
  300. package/src/client/infrastructure/canvas-room-client.js +210 -0
  301. package/src/client/infrastructure/canvas-text-editor.js +36 -0
  302. package/src/client/infrastructure/comment-thread-store.js +19 -77
  303. package/src/client/infrastructure/editor-view-adapter.js +0 -30
  304. package/src/client/infrastructure/excalidraw-room-client.js +22 -10
  305. package/src/client/infrastructure/hosted-api-client.js +4 -2
  306. package/src/client/infrastructure/runtime-config.js +14 -0
  307. package/src/client/infrastructure/vault-api-client.js +4 -4
  308. package/src/client/presentation/canvas-editor-view.js +1028 -0
  309. package/src/client/presentation/canvas-embed-controller.js +116 -0
  310. package/src/client/presentation/canvas-picker.js +111 -0
  311. package/src/client/presentation/drawio-embed-controller.js +4 -4
  312. package/src/client/presentation/excalidraw-embed-controller.js +13 -4
  313. package/src/client/presentation/file-action-controller.js +58 -1
  314. package/src/client/presentation/file-explorer-controller.js +1 -2
  315. package/src/client/presentation/file-explorer-view.js +31 -7
  316. package/src/client/presentation/file-icon-svg.js +1 -1
  317. package/src/client/presentation/file-tree-state.js +4 -1
  318. package/src/client/presentation/image-lightbox-controller.js +1 -5
  319. package/src/client/presentation/team-settings-controller.js +44 -10
  320. package/src/client/presentation/vault-dashboard.js +63 -0
  321. package/src/client/styles/components/actions.css +4 -16
  322. package/src/client/styles/components/surfaces.css +0 -7
  323. package/src/client/styles/features/comment-card.css +1 -2
  324. package/src/client/styles/features/comment-markdown.css +0 -18
  325. package/src/client/styles/features/diagram-preview.css +0 -18
  326. package/src/client/styles/features/git-branch.css +0 -4
  327. package/src/client/styles/foundation/themes.css +6 -0
  328. package/src/client/styles/foundation/utilities.css +3 -2
  329. package/src/client/styles/layout/editor-page.css +0 -13
  330. package/src/client/styles/layout/overlays.css +5 -0
  331. package/src/client/styles/layout/responsive.css +2 -7
  332. package/src/client/styles/layout/shell.css +165 -1
  333. package/src/client/styles/layout/view-modes.css +1 -0
  334. package/src/client/styles/surfaces/canvas-editor.css +239 -0
  335. package/src/domain/canvas-room-codec.js +359 -0
  336. package/src/domain/collabmd-content-capabilities.js +10 -1
  337. package/src/domain/comment-threads.js +49 -5
  338. package/src/domain/excalidraw-room-codec.js +23 -73
  339. package/src/domain/excalidraw-scene.js +48 -0
  340. package/src/domain/file-kind.js +13 -1
  341. package/src/server/application/workspace-reconciliation.js +0 -14
  342. package/src/server/config/env.js +39 -6
  343. package/src/server/domain/backlink-index.js +1 -36
  344. package/src/server/domain/bases/base-index-snapshot-store.js +41 -24
  345. package/src/server/domain/bases/base-query-service.js +1 -47
  346. package/src/server/domain/collaboration/collaboration-room.js +149 -15
  347. package/src/server/domain/collaboration/room-registry.js +7 -7
  348. package/src/server/domain/hosted-workspace.js +29 -2
  349. package/src/server/domain/plantuml-encoder.js +7 -43
  350. package/src/server/infrastructure/git/diff-service.js +1 -5
  351. package/src/server/infrastructure/git/history-service.js +18 -2
  352. package/src/server/infrastructure/git/untracked-files.js +1 -1
  353. package/src/server/infrastructure/http/create-git-api-command-handler.js +60 -149
  354. package/src/server/infrastructure/http/create-hosted-api-handler.js +5 -2
  355. package/src/server/infrastructure/http/create-static-handler.js +3 -1
  356. package/src/server/infrastructure/http/create-vault-api-query-handler.js +3 -3
  357. package/src/server/infrastructure/http/http-response.js +2 -36
  358. package/src/server/infrastructure/http/request-body.js +14 -49
  359. package/src/server/infrastructure/persistence/hosted-metadata-store.js +12 -3
  360. package/src/server/infrastructure/persistence/path-utils.js +8 -2
  361. package/src/server/infrastructure/persistence/vault-file-store.js +26 -60
  362. package/src/server/{infrastructure/git → shared}/image-mime.js +2 -2
  363. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BEz2BKN1.js +0 -1
  364. package/dist/client/assets/_basePickBy-QJXUw_pr.js +0 -1
  365. package/dist/client/assets/_baseUniq-DR4vVjyC.js +0 -1
  366. package/dist/client/assets/architecture-7GRP2DOG-DJVtYNt-.js +0 -1
  367. package/dist/client/assets/browser-utils-vlHL9goC.js +0 -1
  368. package/dist/client/assets/chunk-3FUC2YCW-8tZlhTGX.js +0 -1
  369. package/dist/client/assets/chunk-4SOEAONT-C3fufoVl.js +0 -40
  370. package/dist/client/assets/chunk-7M6MHVWA-BDakkknV.js +0 -213
  371. package/dist/client/assets/chunk-FOHPRMQF-Dmmo5Kak.js +0 -161
  372. package/dist/client/assets/chunk-O7XYJQB3-D0_ZY2za.js +0 -126
  373. package/dist/client/assets/chunk-Z7XXMR3K-P4Vaq8hD.js +0 -10
  374. package/dist/client/assets/chunk-ZIGJFQKS-b8OUHKK5.js +0 -2
  375. package/dist/client/assets/classDiagram-ZZMXUADV-QLbh_Nkf.js +0 -1
  376. package/dist/client/assets/classDiagram-v2-VYDZK3BY-QLbh_Nkf.js +0 -1
  377. package/dist/client/assets/comment-thread-store-CHvy8GF8.js +0 -1
  378. package/dist/client/assets/comment-threads-nJhK1yfc.js +0 -4
  379. package/dist/client/assets/cynefin-OW5HDTMX-e-Quc9Yl.js +0 -1
  380. package/dist/client/assets/dagre-D7FiCLLP.js +0 -1
  381. package/dist/client/assets/deferred-collab-D4cxEdad.css +0 -1
  382. package/dist/client/assets/deferred-git-BHKtkFYi.css +0 -1
  383. package/dist/client/assets/deferred-preview-BAXYgf4T.css +0 -1
  384. package/dist/client/assets/diagram-ATOU4E4O-B5uX-jVO.js +0 -3
  385. package/dist/client/assets/dist-B7fBbwrO.js +0 -1
  386. package/dist/client/assets/dist-BYBF4LtZ.js +0 -1
  387. package/dist/client/assets/dist-B_1hMrc6.js +0 -1
  388. package/dist/client/assets/dist-BnVaoRgZ.js +0 -1
  389. package/dist/client/assets/dist-Bog8M5U3.js +0 -13
  390. package/dist/client/assets/dist-CAG5sIOj.js +0 -1
  391. package/dist/client/assets/dist-CYMCikZo.js +0 -1
  392. package/dist/client/assets/dist-CYfPeupF.js +0 -1
  393. package/dist/client/assets/dist-Ck-B8onw.js +0 -2
  394. package/dist/client/assets/dist-CrkYYcOU.js +0 -1
  395. package/dist/client/assets/dist-Cu5Ze2cs.js +0 -6
  396. package/dist/client/assets/dist-D4kDR0g8.js +0 -1
  397. package/dist/client/assets/dist-D8LnhZzy.js +0 -1
  398. package/dist/client/assets/dist-DNONgI1P.js +0 -11
  399. package/dist/client/assets/dist-DVBYH83t.js +0 -1
  400. package/dist/client/assets/dist-DX6qtdxv.js +0 -1
  401. package/dist/client/assets/dist-Da-jLrCf.js +0 -1
  402. package/dist/client/assets/dist-DofvCYzJ.js +0 -1
  403. package/dist/client/assets/dist-Dx37MHWs.js +0 -1
  404. package/dist/client/assets/dist-GTGhtpyW.js +0 -9
  405. package/dist/client/assets/dist-W0FoeIxk.js +0 -23
  406. package/dist/client/assets/dist-jVKfryIL.js +0 -1
  407. package/dist/client/assets/document-formatter-gO8qM2qY.js +0 -1
  408. package/dist/client/assets/drawioEditor-DCkWweiy.js +0 -9
  409. package/dist/client/assets/editor-session-DxRyr4EM.js +0 -14
  410. package/dist/client/assets/elk-276RUBZZ-B8LB3Pac.js +0 -27
  411. package/dist/client/assets/embedded-editor-base-elU0Avik.css +0 -1
  412. package/dist/client/assets/en-GNC3RJIS-CEy_oGTd.js +0 -1
  413. package/dist/client/assets/eventmodeling-NTZA5JFV-Dxtv5D-P.js +0 -1
  414. package/dist/client/assets/excalidraw-element-link-CGZ5934B.js +0 -7
  415. package/dist/client/assets/excalidraw-scene-6uROebca.js +0 -1
  416. package/dist/client/assets/excalidrawEditor-BCTFp_CV.css +0 -1
  417. package/dist/client/assets/excalidrawEditor-BVfSxjSO.js +0 -9
  418. package/dist/client/assets/export-page-BCo_e15t.js +0 -46
  419. package/dist/client/assets/exportDocument-Ba-n1X4U.css +0 -1
  420. package/dist/client/assets/exportDocument-DP6oE_or.js +0 -2
  421. package/dist/client/assets/file-kind-BwMIcZbi.js +0 -1
  422. package/dist/client/assets/flowDiagram-HODETNUW-Bq4470NR.js +0 -1
  423. package/dist/client/assets/flowDiagram-KWPJA3E3-DQG9qGiU.js +0 -1
  424. package/dist/client/assets/ganttDiagram-FUAMR5RP-BQpsI7gQ.js +0 -292
  425. package/dist/client/assets/gitGraph-4MIJSDKK-ZaBIE4Lb.js +0 -1
  426. package/dist/client/assets/gitGraphDiagram-X574FWY7-wbs_2m9f.js +0 -106
  427. package/dist/client/assets/graphlib-C9Tl7QrK.js +0 -1
  428. package/dist/client/assets/image-EJJKRVD3-BQfi5nWJ.js +0 -1
  429. package/dist/client/assets/index-BxAuGDoN.css +0 -1
  430. package/dist/client/assets/index-uw9O0z1c.js +0 -1112
  431. package/dist/client/assets/info-A6RAGUB7-BcGxhjED.js +0 -1
  432. package/dist/client/assets/lobby-presence-Cz5jGOPg.js +0 -1
  433. package/dist/client/assets/mermaid.core-BeOUPE3Q.js +0 -10
  434. package/dist/client/assets/packet-AYTQ26CC-CqpSjTWl.js +0 -1
  435. package/dist/client/assets/pie-WAS4IAKB-Bg2eCNl5.js +0 -1
  436. package/dist/client/assets/preload-helper-BAlEavIC.js +0 -1
  437. package/dist/client/assets/preview-render-compiler-ktU0SXxY.js +0 -43
  438. package/dist/client/assets/prod-DU-0VfI7.js +0 -145
  439. package/dist/client/assets/prod-cXUNdmYV.js +0 -1
  440. package/dist/client/assets/quick-switcher-controller-DSlOwOsU.js +0 -1
  441. package/dist/client/assets/radar-RG4KPBEZ-DxExotg6.js +0 -1
  442. package/dist/client/assets/railroad-74A4TZTK-FfHmeIQk.js +0 -1
  443. package/dist/client/assets/railroad-abnf-HS5TGJTU-CLkdDRsJ.js +0 -1
  444. package/dist/client/assets/railroad-ebnf-LZEXJU2U-B162zvcG.js +0 -1
  445. package/dist/client/assets/railroad-peg-WCYAUIDC-CGs5GeJ5.js +0 -1
  446. package/dist/client/assets/runtime-config-BFVdhnJu.js +0 -1
  447. package/dist/client/assets/runtime-paths-Cn0snt_9.js +0 -1
  448. package/dist/client/assets/sequenceDiagram-PO4LG4MO-B-2QfXhV.js +0 -169
  449. package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -1
  450. package/dist/client/assets/sizeCapture-INFHLROL-DrzwYt5z.js +0 -1
  451. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CLlwrdvU.js +0 -1
  452. package/dist/client/assets/swimlanesDiagram-TC7HE7FX-Bh4tmz27.js +0 -8
  453. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-xhehUG9e.js +0 -8
  454. package/dist/client/assets/treeView-Q6P3EWNA-Cccy0ngL.js +0 -1
  455. package/dist/client/assets/treemap-WGGIJYW6-sMRCjCtX.js +0 -1
  456. package/dist/client/assets/usecaseDiagram-POWQR4AR-DR2LHQYs.js +0 -328
  457. package/dist/client/assets/vault-api-client-BQxLVPeF.js +0 -7
  458. package/dist/client/assets/wardley-WFR3VGLG-Y7xty_3m.js +0 -1
  459. package/dist/client/assets/workspace-sync-client-C2pdaQUN.js +0 -1
  460. package/dist/client/assets/xychartDiagram-PMCCYNJV-fRpZ1MA5.js +0 -7
  461. package/dist/client/assets/yjs-B41tM6Sz.js +0 -4
  462. package/dist/client/assets/yjs-provider-reset-guard-DpntzUDR.js +0 -1
  463. package/scripts/local-plantuml-compose.mjs +0 -92
  464. package/scripts/local-structurizr-compose.mjs +0 -101
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  isBaseFilePath,
3
+ isCanvasFilePath,
3
4
  isDiagramFilePath,
4
5
  isHtmlFilePath,
5
6
  isMarkdownFilePath,
@@ -39,6 +40,7 @@ export class WorkspacePreviewController {
39
40
  constructor({
40
41
  backlinksPanel,
41
42
  basesPreview = null,
43
+ canvasEmbed = null,
42
44
  drawioEmbed,
43
45
  elements,
44
46
  excalidrawEmbed,
@@ -55,13 +57,13 @@ export class WorkspacePreviewController {
55
57
  outlineController,
56
58
  previewRenderer,
57
59
  pdfPreview = null,
58
- schedulePreviewLayoutSync,
59
60
  scrollSyncController,
60
61
  structurizrPreview = null,
61
62
  videoEmbed,
62
63
  }) {
63
64
  this.backlinksPanel = backlinksPanel;
64
65
  this.basesPreview = basesPreview ?? { reconcileEmbeds() {}, renderStandalone() {} };
66
+ this.canvasEmbed = canvasEmbed;
65
67
  this.drawioEmbed = drawioEmbed ?? {
66
68
  detachForCommit() {},
67
69
  hydrateVisibleEmbeds() {},
@@ -94,7 +96,9 @@ export class WorkspacePreviewController {
94
96
  this.outlineController = outlineController;
95
97
  this.previewRenderer = previewRenderer;
96
98
  this.pdfPreview = pdfPreview ?? { cancel() {}, render() {} };
97
- this.schedulePreviewLayoutSyncCallback = schedulePreviewLayoutSync;
99
+ this.previewHydrationPaused = false;
100
+ this.pendingPreviewLayoutSync = false;
101
+ this.previewLayoutSyncTimer = null;
98
102
  this.scrollSyncController = scrollSyncController;
99
103
  this.structurizrPreview = structurizrPreview ?? {
100
104
  queueSync() {},
@@ -142,11 +146,13 @@ export class WorkspacePreviewController {
142
146
  }
143
147
 
144
148
  resetPreviewMode() {
149
+ this.canvasEmbed?.unmount();
145
150
  this.setHtmlPreviewMaximized(false);
146
151
  this.htmlPreviewShell = null;
147
152
  this.pdfPreview.cancel();
148
153
  this.elements.previewContent?.classList.remove('is-drawio-file-preview');
149
154
  this.elements.previewContent?.classList.remove('is-excalidraw-file-preview');
155
+ this.elements.previewContent?.classList.remove('is-canvas-file-preview');
150
156
  this.elements.previewContent?.classList.remove('is-base-file-preview');
151
157
  this.elements.previewContent?.classList.remove('is-image-file-preview');
152
158
  this.elements.previewContent?.classList.remove('is-pdf-file-preview');
@@ -160,6 +166,7 @@ export class WorkspacePreviewController {
160
166
  syncFileChrome(filePath, { drawioMode = null, preferPreviewForBase = false } = {}) {
161
167
  const isDrawio = this.isDrawioFile(filePath);
162
168
  const isExcalidraw = this.isExcalidrawFile(filePath);
169
+ const isCanvas = isCanvasFilePath(filePath);
163
170
  const isBase = this.isBaseFile(filePath);
164
171
  const isImage = this.isImageFile(filePath);
165
172
  const isPdf = this.isPdfFile(filePath);
@@ -169,11 +176,14 @@ export class WorkspacePreviewController {
169
176
  const isPlantUml = this.isPlantUmlFile(filePath);
170
177
  const isStructurizr = isStructurizrFilePath(filePath);
171
178
  const isDiagramFile = isDiagramFilePath(filePath);
172
- const usesHeaderBacklinks = isExcalidraw || (isDrawio && drawioMode !== 'text');
179
+ const usesHeaderBacklinks = isExcalidraw || isCanvas || (isDrawio && drawioMode !== 'text');
173
180
 
174
181
  this.backlinksPanel.setDisplayMode?.(usesHeaderBacklinks ? 'header' : 'dock');
175
182
 
176
183
  this.elements.editorFindButton?.classList.toggle('hidden', !isMarkdown);
184
+ this.elements.toolbarViewToggle?.classList.toggle('hidden', isCanvas);
185
+ this.elements.mobileViewToggle?.classList.toggle('hidden', isCanvas);
186
+ this.elements.toggleWrapButton?.classList.toggle('hidden', isCanvas);
177
187
  syncFormatDocumentButton(this.elements.editorFormatButton, filePath, isPlantUml);
178
188
  this.elements.markdownToolbar?.classList.toggle('hidden', !isMarkdown);
179
189
  this.elements.exportMenuGroup?.classList.toggle('hidden', !isMarkdown);
@@ -188,7 +198,7 @@ export class WorkspacePreviewController {
188
198
  this.backlinksPanel.clear();
189
199
  }
190
200
 
191
- if ((isDrawio && drawioMode !== 'text') || isExcalidraw || isHtml || isImage || isPdf || (isBase && preferPreviewForBase)) {
201
+ if ((isDrawio && drawioMode !== 'text') || isExcalidraw || isCanvas || isHtml || isImage || isPdf || (isBase && preferPreviewForBase)) {
192
202
  this.layoutController.setView('preview', { persist: false });
193
203
  this.outlineController.close();
194
204
  this.backlinksPanel.clear();
@@ -201,19 +211,47 @@ export class WorkspacePreviewController {
201
211
  }
202
212
  }
203
213
 
204
- renderExcalidrawFilePreview(filePath) {
214
+ prepareFilePreview(className) {
205
215
  const previewElement = this.elements.previewContent;
206
- if (!previewElement) {
207
- return;
208
- }
216
+ if (!previewElement) return null;
209
217
 
210
218
  this.videoEmbed?.detachForCommit();
211
219
  this.drawioEmbed.detachForCommit();
212
220
  this.excalidrawEmbed.detachForCommit();
213
221
  this.resetPreviewMode();
214
- previewElement.classList.add('is-excalidraw-file-preview');
222
+ if (className) previewElement.classList.add(className);
215
223
  const renderHost = this.previewRenderer.ensureRenderHost();
216
224
  this.previewRenderer.normalizePreviewChildren(renderHost);
225
+ return { previewElement, renderHost };
226
+ }
227
+
228
+ commitFilePreview(renderHost, content) {
229
+ if (renderHost) {
230
+ renderHost.replaceChildren(content);
231
+ renderHost.style.minHeight = '';
232
+ }
233
+ }
234
+
235
+ renderCanvasFilePreview(filePath) {
236
+ const preview = this.prepareFilePreview('is-canvas-file-preview');
237
+ if (!preview) return;
238
+ const { previewElement, renderHost } = preview;
239
+
240
+ if (renderHost) renderHost.style.minHeight = '';
241
+ this.canvasEmbed?.mount(filePath, renderHost);
242
+ previewElement.dataset.renderPhase = 'ready';
243
+ this.outlineController.close();
244
+ this.scrollSyncController.setLargeDocumentMode(false);
245
+ this.scrollSyncController.invalidatePreviewBlocks();
246
+ this.videoEmbed?.reconcileEmbeds(previewElement);
247
+ this.drawioEmbed.reconcileEmbeds(previewElement);
248
+ this.excalidrawEmbed.reconcileEmbeds(previewElement, { isLargeDocument: false });
249
+ }
250
+
251
+ renderExcalidrawFilePreview(filePath) {
252
+ const preview = this.prepareFilePreview('is-excalidraw-file-preview');
253
+ if (!preview) return;
254
+ const { previewElement, renderHost } = preview;
217
255
 
218
256
  const placeholder = document.createElement('div');
219
257
  placeholder.className = 'excalidraw-embed-placeholder';
@@ -224,10 +262,7 @@ export class WorkspacePreviewController {
224
262
  loadingShell.className = 'preview-shell';
225
263
  loadingShell.textContent = 'Loading Excalidraw preview…';
226
264
  placeholder.appendChild(loadingShell);
227
- if (renderHost) {
228
- renderHost.replaceChildren(placeholder);
229
- renderHost.style.minHeight = '';
230
- }
265
+ this.commitFilePreview(renderHost, placeholder);
231
266
 
232
267
  previewElement.dataset.renderPhase = 'ready';
233
268
  this.outlineController.refresh();
@@ -238,22 +273,13 @@ export class WorkspacePreviewController {
238
273
  this.excalidrawEmbed.reconcileEmbeds(previewElement, { isLargeDocument: false });
239
274
  this.drawioEmbed.hydrateVisibleEmbeds();
240
275
  this.excalidrawEmbed.hydrateVisibleEmbeds();
241
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
276
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
242
277
  }
243
278
 
244
279
  renderDrawioFilePreview(filePath) {
245
- const previewElement = this.elements.previewContent;
246
- if (!previewElement) {
247
- return;
248
- }
249
-
250
- this.videoEmbed?.detachForCommit();
251
- this.drawioEmbed.detachForCommit();
252
- this.excalidrawEmbed.detachForCommit();
253
- this.resetPreviewMode();
254
- previewElement.classList.add('is-drawio-file-preview');
255
- const renderHost = this.previewRenderer.ensureRenderHost();
256
- this.previewRenderer.normalizePreviewChildren(renderHost);
280
+ const preview = this.prepareFilePreview('is-drawio-file-preview');
281
+ if (!preview) return;
282
+ const { previewElement, renderHost } = preview;
257
283
 
258
284
  const placeholder = document.createElement('div');
259
285
  placeholder.className = 'drawio-embed-placeholder';
@@ -266,10 +292,7 @@ export class WorkspacePreviewController {
266
292
  loadingShell.textContent = 'Loading draw.io preview…';
267
293
  placeholder.appendChild(loadingShell);
268
294
 
269
- if (renderHost) {
270
- renderHost.replaceChildren(placeholder);
271
- renderHost.style.minHeight = '';
272
- }
295
+ this.commitFilePreview(renderHost, placeholder);
273
296
 
274
297
  previewElement.dataset.renderPhase = 'ready';
275
298
  this.outlineController.refresh();
@@ -278,22 +301,13 @@ export class WorkspacePreviewController {
278
301
  this.videoEmbed?.reconcileEmbeds(previewElement);
279
302
  this.drawioEmbed.reconcileEmbeds(previewElement);
280
303
  this.drawioEmbed.hydrateVisibleEmbeds();
281
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
304
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
282
305
  }
283
306
 
284
307
  renderImageFilePreview(filePath) {
285
- const previewElement = this.elements.previewContent;
286
- if (!previewElement) {
287
- return;
288
- }
289
-
290
- this.videoEmbed?.detachForCommit();
291
- this.drawioEmbed.detachForCommit();
292
- this.excalidrawEmbed.detachForCommit();
293
- this.resetPreviewMode();
294
- previewElement.classList.add('is-image-file-preview');
295
- const renderHost = this.previewRenderer.ensureRenderHost();
296
- this.previewRenderer.normalizePreviewChildren(renderHost);
308
+ const preview = this.prepareFilePreview('is-image-file-preview');
309
+ if (!preview) return;
310
+ const { previewElement, renderHost } = preview;
297
311
 
298
312
  const shell = document.createElement('figure');
299
313
  shell.className = 'image-file-preview-shell';
@@ -304,32 +318,20 @@ export class WorkspacePreviewController {
304
318
  image.src = resolveApiUrl(`/attachment?path=${encodeURIComponent(filePath)}`);
305
319
  shell.appendChild(image);
306
320
 
307
- if (renderHost) {
308
- renderHost.replaceChildren(shell);
309
- renderHost.style.minHeight = '';
310
- }
321
+ this.commitFilePreview(renderHost, shell);
311
322
 
312
323
  previewElement.dataset.renderPhase = 'ready';
313
324
  this.outlineController.refresh();
314
325
  this.scrollSyncController.setLargeDocumentMode(false);
315
326
  this.scrollSyncController.invalidatePreviewBlocks();
316
327
  this.videoEmbed?.reconcileEmbeds(previewElement);
317
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
328
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
318
329
  }
319
330
 
320
331
  renderPdfFilePreview(filePath) {
321
- const previewElement = this.elements.previewContent;
322
- if (!previewElement) {
323
- return;
324
- }
325
-
326
- this.videoEmbed?.detachForCommit();
327
- this.drawioEmbed.detachForCommit();
328
- this.excalidrawEmbed.detachForCommit();
329
- this.resetPreviewMode();
330
- previewElement.classList.add('is-pdf-file-preview');
331
- const renderHost = this.previewRenderer.ensureRenderHost();
332
- this.previewRenderer.normalizePreviewChildren(renderHost);
332
+ const preview = this.prepareFilePreview('is-pdf-file-preview');
333
+ if (!preview) return;
334
+ const { previewElement, renderHost } = preview;
333
335
 
334
336
  if (renderHost) {
335
337
  this.pdfPreview.render({
@@ -345,23 +347,14 @@ export class WorkspacePreviewController {
345
347
  this.scrollSyncController.setLargeDocumentMode(false);
346
348
  this.scrollSyncController.invalidatePreviewBlocks();
347
349
  this.videoEmbed?.reconcileEmbeds(previewElement);
348
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
350
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
349
351
  }
350
352
 
351
353
  renderHtmlFilePreview({ content = '' } = {}) {
352
- const previewElement = this.elements.previewContent;
353
- if (!previewElement) {
354
- return;
355
- }
356
-
357
354
  const wasMaximized = this.htmlPreviewShell?.classList.contains('is-maximized') ?? false;
358
- this.videoEmbed?.detachForCommit();
359
- this.drawioEmbed.detachForCommit();
360
- this.excalidrawEmbed.detachForCommit();
361
- this.resetPreviewMode();
362
- previewElement.classList.add('is-html-file-preview');
363
- const renderHost = this.previewRenderer.ensureRenderHost();
364
- this.previewRenderer.normalizePreviewChildren(renderHost);
355
+ const preview = this.prepareFilePreview('is-html-file-preview');
356
+ if (!preview) return;
357
+ const { previewElement, renderHost } = preview;
365
358
 
366
359
  const source = String(content ?? '');
367
360
  const iframe = document.createElement('iframe');
@@ -397,32 +390,20 @@ export class WorkspacePreviewController {
397
390
  this.htmlPreviewShell = shell;
398
391
  this.setHtmlPreviewMaximized(wasMaximized);
399
392
 
400
- if (renderHost) {
401
- renderHost.replaceChildren(shell);
402
- renderHost.style.minHeight = '';
403
- }
393
+ this.commitFilePreview(renderHost, shell);
404
394
 
405
395
  previewElement.dataset.renderPhase = 'ready';
406
396
  this.outlineController.close();
407
397
  this.backlinksPanel.clear();
408
398
  this.scrollSyncController.setLargeDocumentMode(false);
409
399
  this.scrollSyncController.invalidatePreviewBlocks();
410
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
400
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
411
401
  }
412
402
 
413
403
  async renderBaseFilePreview(filePath, { source = null } = {}) {
414
- const previewElement = this.elements.previewContent;
415
- if (!previewElement) {
416
- return;
417
- }
418
-
419
- this.videoEmbed?.detachForCommit();
420
- this.drawioEmbed.detachForCommit();
421
- this.excalidrawEmbed.detachForCommit();
422
- this.resetPreviewMode();
423
- previewElement.classList.add('is-base-file-preview');
424
- const renderHost = this.previewRenderer.ensureRenderHost();
425
- this.previewRenderer.normalizePreviewChildren(renderHost);
404
+ const preview = this.prepareFilePreview('is-base-file-preview');
405
+ if (!preview) return;
406
+ const { previewElement, renderHost } = preview;
426
407
 
427
408
  if (renderHost) {
428
409
  renderHost.style.minHeight = '';
@@ -441,22 +422,13 @@ export class WorkspacePreviewController {
441
422
  this.scrollSyncController.setLargeDocumentMode(false);
442
423
  this.scrollSyncController.invalidatePreviewBlocks();
443
424
  this.videoEmbed?.reconcileEmbeds(previewElement);
444
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
425
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
445
426
  }
446
427
 
447
428
  async renderStructurizrFilePreview(filePath, { source = null } = {}) {
448
- const previewElement = this.elements.previewContent;
449
- if (!previewElement) {
450
- return;
451
- }
452
-
453
- this.videoEmbed?.detachForCommit();
454
- this.drawioEmbed.detachForCommit();
455
- this.excalidrawEmbed.detachForCommit();
456
- this.resetPreviewMode();
457
- previewElement.classList.add('is-structurizr-file-preview');
458
- const renderHost = this.previewRenderer.ensureRenderHost();
459
- this.previewRenderer.normalizePreviewChildren(renderHost);
429
+ const preview = this.prepareFilePreview('is-structurizr-file-preview');
430
+ if (!preview) return;
431
+ const { previewElement, renderHost } = preview;
460
432
  if (renderHost) {
461
433
  renderHost.style.minHeight = '';
462
434
  }
@@ -473,21 +445,13 @@ export class WorkspacePreviewController {
473
445
  this.scrollSyncController.setLargeDocumentMode(false);
474
446
  this.scrollSyncController.invalidatePreviewBlocks();
475
447
  this.videoEmbed?.reconcileEmbeds(previewElement);
476
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
448
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
477
449
  }
478
450
 
479
451
  renderTextFilePreview({ content = '' } = {}) {
480
- const previewElement = this.elements.previewContent;
481
- if (!previewElement) {
482
- return;
483
- }
484
-
485
- this.videoEmbed?.detachForCommit();
486
- this.drawioEmbed.detachForCommit();
487
- this.excalidrawEmbed.detachForCommit();
488
- this.resetPreviewMode();
489
- const renderHost = this.previewRenderer.ensureRenderHost();
490
- this.previewRenderer.normalizePreviewChildren(renderHost);
452
+ const preview = this.prepareFilePreview();
453
+ if (!preview) return;
454
+ const { previewElement, renderHost } = preview;
491
455
 
492
456
  const shell = document.createElement('div');
493
457
  shell.className = 'preview-shell';
@@ -497,10 +461,7 @@ export class WorkspacePreviewController {
497
461
  pre.appendChild(code);
498
462
  shell.appendChild(pre);
499
463
 
500
- if (renderHost) {
501
- renderHost.replaceChildren(shell);
502
- renderHost.style.minHeight = '';
503
- }
464
+ this.commitFilePreview(renderHost, shell);
504
465
 
505
466
  previewElement.dataset.renderPhase = 'ready';
506
467
  this.outlineController.close();
@@ -508,7 +469,7 @@ export class WorkspacePreviewController {
508
469
  this.scrollSyncController.setLargeDocumentMode(false);
509
470
  this.scrollSyncController.invalidatePreviewBlocks();
510
471
  this.videoEmbed?.reconcileEmbeds(previewElement);
511
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
472
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
512
473
  }
513
474
 
514
475
  createResizeHandler(restoreSidebarState) {
@@ -517,7 +478,7 @@ export class WorkspacePreviewController {
517
478
  clearTimeout(resizeTimer);
518
479
  resizeTimer = setTimeout(() => {
519
480
  restoreSidebarState?.();
520
- this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
481
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
521
482
  }, 100);
522
483
  };
523
484
  }
@@ -534,22 +495,23 @@ export class WorkspacePreviewController {
534
495
  return observer;
535
496
  }
536
497
 
537
- schedulePreviewLayoutSync({
538
- hydrationPaused,
539
- previewLayoutSyncTimer,
540
- setPendingPreviewLayoutSync,
541
- setPreviewLayoutSyncTimer,
542
- delayMs = 120,
543
- }) {
544
- if (hydrationPaused) {
545
- setPendingPreviewLayoutSync(true);
498
+ resetPreviewLayoutSync() {
499
+ clearTimeout(this.previewLayoutSyncTimer);
500
+ this.previewLayoutSyncTimer = null;
501
+ this.pendingPreviewLayoutSync = false;
502
+ this.previewHydrationPaused = false;
503
+ }
504
+
505
+ schedulePreviewLayoutSync({ delayMs = 120 } = {}) {
506
+ if (this.previewHydrationPaused) {
507
+ this.pendingPreviewLayoutSync = true;
546
508
  return;
547
509
  }
548
510
 
549
- clearTimeout(previewLayoutSyncTimer);
511
+ clearTimeout(this.previewLayoutSyncTimer);
550
512
 
551
- const nextTimer = setTimeout(() => {
552
- setPreviewLayoutSyncTimer(null);
513
+ this.previewLayoutSyncTimer = setTimeout(() => {
514
+ this.previewLayoutSyncTimer = null;
553
515
 
554
516
  const hasSession = Boolean(this.getSession());
555
517
  const isDrawioPreview = this.elements.previewContent?.classList?.contains?.('is-drawio-file-preview') ?? false;
@@ -562,8 +524,8 @@ export class WorkspacePreviewController {
562
524
  return;
563
525
  }
564
526
 
565
- if (hydrationPaused) {
566
- setPendingPreviewLayoutSync(true);
527
+ if (this.previewHydrationPaused) {
528
+ this.pendingPreviewLayoutSync = true;
567
529
  return;
568
530
  }
569
531
 
@@ -586,40 +548,25 @@ export class WorkspacePreviewController {
586
548
  },
587
549
  });
588
550
  }, delayMs);
589
-
590
- setPreviewLayoutSyncTimer(nextTimer);
591
551
  }
592
552
 
593
- handleEditorScrollActivityChange({
594
- isActive,
595
- pendingPreviewLayoutSync,
596
- previewLayoutSyncTimer,
597
- setHydrationPaused,
598
- setPendingPreviewLayoutSync,
599
- setPreviewLayoutSyncTimer,
600
- }) {
553
+ handleEditorScrollActivityChange(isActive) {
601
554
  const nextPaused = Boolean(isActive);
602
- setHydrationPaused(nextPaused);
555
+ this.previewHydrationPaused = nextPaused;
603
556
  this.previewRenderer.setHydrationPaused(nextPaused);
604
557
  this.drawioEmbed.setHydrationPaused(nextPaused);
605
558
  this.excalidrawEmbed.setHydrationPaused(nextPaused);
606
559
 
607
560
  if (nextPaused) {
608
- clearTimeout(previewLayoutSyncTimer);
609
- setPreviewLayoutSyncTimer(null);
610
- setPendingPreviewLayoutSync(true);
561
+ clearTimeout(this.previewLayoutSyncTimer);
562
+ this.previewLayoutSyncTimer = null;
563
+ this.pendingPreviewLayoutSync = true;
611
564
  return;
612
565
  }
613
566
 
614
- if (pendingPreviewLayoutSync) {
615
- setPendingPreviewLayoutSync(false);
616
- this.schedulePreviewLayoutSync({
617
- delayMs: 0,
618
- hydrationPaused: false,
619
- previewLayoutSyncTimer: null,
620
- setPendingPreviewLayoutSync,
621
- setPreviewLayoutSyncTimer,
622
- });
567
+ if (this.pendingPreviewLayoutSync) {
568
+ this.pendingPreviewLayoutSync = false;
569
+ this.schedulePreviewLayoutSync({ delayMs: 0 });
623
570
  }
624
571
  }
625
572
  }
@@ -1,6 +1,7 @@
1
1
  export class WorkspaceRouteController {
2
2
  constructor({
3
3
  backlinksPanel,
4
+ canvasEmbed = null,
4
5
  clearInitialFileBootstrap,
5
6
  clearStaticPreviewDocument = null,
6
7
  closeSidebarOnMobile,
@@ -38,6 +39,7 @@ export class WorkspaceRouteController {
38
39
  layoutController,
39
40
  }) {
40
41
  this.backlinksPanel = backlinksPanel;
42
+ this.canvasEmbed = canvasEmbed;
41
43
  this.clearInitialFileBootstrap = clearInitialFileBootstrap;
42
44
  this.clearStaticPreviewDocument = clearStaticPreviewDocument;
43
45
  this.closeSidebarOnMobile = closeSidebarOnMobile;
@@ -83,8 +85,7 @@ export class WorkspaceRouteController {
83
85
  }
84
86
 
85
87
  const route = this.navigation.getHashRoute();
86
- const nextFilePath = route.type === 'file' ? route.filePath : null;
87
- const canLeave = await this.prepareActiveExcalidrawDisconnect(nextFilePath);
88
+ const canLeave = route.type === 'file' || await this.prepareActiveEmbedDisconnect();
88
89
  if (!canLeave) {
89
90
  return;
90
91
  }
@@ -171,11 +172,6 @@ export class WorkspaceRouteController {
171
172
  this.elements.emptyState?.classList.remove('hidden');
172
173
  this.elements.editorPage?.classList.add('hidden');
173
174
  this.elements.diffPage?.classList.add('hidden');
174
- if (this.elements.previewContent) {
175
- this.elements.previewContent.innerHTML = '';
176
- this.elements.previewContent.dataset.renderPhase = 'ready';
177
- }
178
- this.videoEmbed?.reconcileEmbeds(this.elements.previewContent);
179
175
  this.resetPreviewSurface();
180
176
 
181
177
  this.renderAvatars();
@@ -187,8 +183,7 @@ export class WorkspaceRouteController {
187
183
  }
188
184
  }
189
185
 
190
- showDiffState() {
191
- this.fileHistoryView?.hide?.();
186
+ prepareGitView(filePath = null) {
192
187
  this.setSessionLoadToken(this.getSessionLoadToken() + 1);
193
188
  this.clearInitialFileBootstrap();
194
189
  this.clearStaticPreviewDocument?.();
@@ -196,18 +191,18 @@ export class WorkspaceRouteController {
196
191
  this.setSession(null);
197
192
  this.resetPreviewMode();
198
193
  this.layoutController.reset();
199
- this.setCurrentFilePath(null);
194
+ this.setCurrentFilePath(filePath);
200
195
  this.lobby.setCurrentFile(null);
201
- this.fileExplorer.setActiveFile(null);
196
+ this.fileExplorer.setActiveFile(filePath);
197
+ }
198
+
199
+ showDiffState() {
200
+ this.fileHistoryView?.hide?.();
201
+ this.prepareGitView();
202
202
 
203
203
  this.elements.emptyState?.classList.add('hidden');
204
204
  this.elements.editorPage?.classList.add('hidden');
205
205
  this.elements.diffPage?.classList.remove('hidden');
206
- if (this.elements.previewContent) {
207
- this.elements.previewContent.innerHTML = '';
208
- this.elements.previewContent.dataset.renderPhase = 'ready';
209
- }
210
- this.videoEmbed?.reconcileEmbeds(this.elements.previewContent);
211
206
  this.resetPreviewSurface();
212
207
 
213
208
  this.elements.outlineToggle?.classList.add('hidden');
@@ -220,25 +215,11 @@ export class WorkspaceRouteController {
220
215
 
221
216
  showFileHistoryState(filePath) {
222
217
  this.gitDiffView.hide();
223
- this.setSessionLoadToken(this.getSessionLoadToken() + 1);
224
- this.clearInitialFileBootstrap();
225
- this.clearStaticPreviewDocument?.();
226
- this.workspaceCoordinator.cleanupSession();
227
- this.setSession(null);
228
- this.resetPreviewMode();
229
- this.layoutController.reset();
230
- this.setCurrentFilePath(filePath);
231
- this.lobby.setCurrentFile(null);
232
- this.fileExplorer.setActiveFile(filePath);
218
+ this.prepareGitView(filePath);
233
219
 
234
220
  this.elements.emptyState?.classList.add('hidden');
235
221
  this.elements.editorPage?.classList.add('hidden');
236
222
  this.elements.diffPage?.classList.remove('hidden');
237
- if (this.elements.previewContent) {
238
- this.elements.previewContent.innerHTML = '';
239
- this.elements.previewContent.dataset.renderPhase = 'ready';
240
- }
241
- this.videoEmbed?.reconcileEmbeds(this.elements.previewContent);
242
223
  this.resetPreviewSurface();
243
224
 
244
225
  this.elements.outlineToggle?.classList.add('hidden');
@@ -252,25 +233,11 @@ export class WorkspaceRouteController {
252
233
  showPreviewOnlyState(filePath) {
253
234
  this.gitDiffView.hide();
254
235
  this.fileHistoryView?.hide?.();
255
- this.setSessionLoadToken(this.getSessionLoadToken() + 1);
256
- this.clearInitialFileBootstrap();
257
- this.clearStaticPreviewDocument?.();
258
- this.workspaceCoordinator.cleanupSession();
259
- this.setSession(null);
260
- this.resetPreviewMode();
261
- this.layoutController.reset();
262
- this.setCurrentFilePath(filePath);
263
- this.lobby.setCurrentFile(null);
264
- this.fileExplorer.setActiveFile(filePath);
236
+ this.prepareGitView(filePath);
265
237
 
266
238
  this.elements.emptyState?.classList.add('hidden');
267
239
  this.elements.editorPage?.classList.remove('hidden');
268
240
  this.elements.diffPage?.classList.add('hidden');
269
- if (this.elements.previewContent) {
270
- this.elements.previewContent.innerHTML = '';
271
- this.elements.previewContent.dataset.renderPhase = 'ready';
272
- }
273
- this.videoEmbed?.reconcileEmbeds(this.elements.previewContent);
274
241
  this.resetPreviewSurface();
275
242
 
276
243
  this.elements.markdownToolbar?.classList.add('hidden');
@@ -281,6 +248,7 @@ export class WorkspaceRouteController {
281
248
  }
282
249
 
283
250
  async openFile(filePath, options = {}) {
251
+ if (!await this.prepareActiveEmbedDisconnect(filePath)) return false;
284
252
  const shouldRevealInTree = this.pendingTreeRevealPath === filePath;
285
253
  if (shouldRevealInTree) {
286
254
  this.pendingTreeRevealPath = null;
@@ -305,14 +273,16 @@ export class WorkspaceRouteController {
305
273
  return true;
306
274
  }
307
275
 
308
- async prepareActiveExcalidrawDisconnect(nextFilePath = null) {
309
- const activeFilePath = this.workspaceCoordinator.stateStore?.get?.('currentFilePath') || null;
310
- if (
311
- activeFilePath
312
- && activeFilePath !== nextFilePath
313
- && this.workspaceCoordinator.isExcalidrawFile?.(activeFilePath)
314
- ) {
315
- const canLeave = await this.excalidrawEmbed.prepareFileDisconnect(activeFilePath, {
276
+ async prepareActiveEmbedDisconnect(nextFilePath = null) {
277
+ const activeFilePath = this.workspaceCoordinator.stateStore?.currentFilePath
278
+ ?? this.workspaceCoordinator.stateStore?.get?.('currentFilePath')
279
+ ?? null;
280
+ if (!activeFilePath || activeFilePath === nextFilePath) return true;
281
+ const embed = this.workspaceCoordinator.isCanvasFile?.(activeFilePath)
282
+ ? this.canvasEmbed
283
+ : (this.workspaceCoordinator.isExcalidrawFile?.(activeFilePath) ? this.excalidrawEmbed : null);
284
+ if (embed) {
285
+ const canLeave = await embed.prepareFileDisconnect(activeFilePath, {
316
286
  timeoutMs: 10000,
317
287
  });
318
288
  if (!canLeave) {
@@ -376,6 +346,11 @@ export class WorkspaceRouteController {
376
346
  }
377
347
 
378
348
  resetPreviewSurface() {
349
+ if (this.elements.previewContent) {
350
+ this.elements.previewContent.innerHTML = '';
351
+ this.elements.previewContent.dataset.renderPhase = 'ready';
352
+ }
353
+ this.videoEmbed?.reconcileEmbeds(this.elements.previewContent);
379
354
  this.imageLightbox?.close?.();
380
355
  this.previewRenderer.setHydrationPaused(false);
381
356
  this.drawioEmbed.setHydrationPaused(false);