collabmd 0.1.30 → 0.1.32

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 (427) hide show
  1. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-tj0_ycIx.js → CodeMirrorEditor-UCMRAMCV-Bg0dawOb.js} +1 -1
  2. package/dist/client/assets/{_basePickBy-B6kIfhzj.js → _basePickBy-Dv0sK1l7.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-Bbn0_sHS.js → _baseUniq-DKYX57ji.js} +1 -1
  4. package/dist/client/assets/{ar-SA-NXDWD63E-BWO5oYxe.js → ar-SA-NXDWD63E-WivLHHDW.js} +1 -1
  5. package/dist/client/assets/{arc-BIqum3oD.js → arc-DrfYGhWk.js} +1 -1
  6. package/dist/client/assets/architecture-PBZL5I3N-DiglIZi9.js +1 -0
  7. package/dist/client/assets/{architectureDiagram-2XIMDMQ5-BPG5b65m.js → architectureDiagram-2XIMDMQ5-kYbOThe4.js} +1 -1
  8. package/dist/client/assets/{az-AZ-MXSORGZV-Cfw6Z5oY.js → az-AZ-MXSORGZV-DOdq1TKC.js} +1 -1
  9. package/dist/client/assets/{bg-BG-O6MV2KSF-CQmG3YpD.js → bg-BG-O6MV2KSF-CYucKuDS.js} +1 -1
  10. package/dist/client/assets/{blockDiagram-WCTKOSBZ-F38TRzI3.js → blockDiagram-WCTKOSBZ-GIgTqnhk.js} +1 -1
  11. package/dist/client/assets/{bn-IN-MMW2ORAC-DZKVshfk.js → bn-BD-T2VJNT7N-2OKWLCYa.js} +1 -1
  12. package/dist/client/assets/{bn-BD-T2VJNT7N-C4S6DZ6o.js → bn-IN-MMW2ORAC-DYr8kqNL.js} +1 -1
  13. package/dist/client/assets/{c4Diagram-IC4MRINW-DHwxcDlQ.js → c4Diagram-IC4MRINW-CkHO1i_L.js} +1 -1
  14. package/dist/client/assets/{ca-ES-MKBCGNOG-Do3aMgyu.js → ca-ES-MKBCGNOG-B9Aeb43I.js} +1 -1
  15. package/dist/client/assets/channel-CgsU9TSN.js +1 -0
  16. package/dist/client/assets/{chunk-4BX2VUAB-BqEY6cCE.js → chunk-4BX2VUAB-2e7V-uuE.js} +1 -1
  17. package/dist/client/assets/{chunk-55IACEB6-039iVf6v.js → chunk-55IACEB6-CpncB3ru.js} +1 -1
  18. package/dist/client/assets/{chunk-7E7YKBS2-BreG0gYL.js → chunk-7E7YKBS2-TdU92i9i.js} +1 -1
  19. package/dist/client/assets/{chunk-7R4GIKGN-BMrp52Pk.js → chunk-7R4GIKGN-mqd2GwMg.js} +2 -2
  20. package/dist/client/assets/{chunk-C72U2L5F-BLB26v5d.js → chunk-C72U2L5F-CJKQWBtz.js} +1 -1
  21. package/dist/client/assets/{chunk-EGIJ26TM-fG-0Yh0k.js → chunk-EGIJ26TM-C4nq20om.js} +1 -1
  22. package/dist/client/assets/{chunk-FMBD7UC4-EWK5Pt4D.js → chunk-FMBD7UC4-CMahlBa_.js} +1 -1
  23. package/dist/client/assets/{chunk-GEFDOKGD-DYHmaq-c.js → chunk-GEFDOKGD-Bs7FmFox.js} +1 -1
  24. package/dist/client/assets/chunk-GLR3WWYH-qQe2O5VQ.js +2 -0
  25. package/dist/client/assets/chunk-HHEYEP7N-DlevL8bq.js +1 -0
  26. package/dist/client/assets/{chunk-JSJVCQXG-B69YGtcQ.js → chunk-JSJVCQXG-DPQ9cPJt.js} +1 -1
  27. package/dist/client/assets/{chunk-KX2RTZJC-tuEC7hg1.js → chunk-KX2RTZJC-BTiOJb7N.js} +1 -1
  28. package/dist/client/assets/{chunk-KYZI473N-D4r5eMJZ.js → chunk-KYZI473N-CTSCuqRb.js} +1 -1
  29. package/dist/client/assets/{chunk-L3YUKLVL-CD9nJYL8.js → chunk-L3YUKLVL-CJZMBtKF.js} +1 -1
  30. package/dist/client/assets/{chunk-MX3YWQON-DqN0TF5Q.js → chunk-MX3YWQON-DQpSwRf6.js} +1 -1
  31. package/dist/client/assets/{chunk-NQ4KR5QH-BBX89uUa.js → chunk-NQ4KR5QH-CMJKI6Oj.js} +1 -1
  32. package/dist/client/assets/{chunk-NU2UP6EN-CGeKI3BV.js → chunk-NU2UP6EN-DlUENSHU.js} +4 -4
  33. package/dist/client/assets/{chunk-O4XLMI2P-DaS3COAu.js → chunk-O4XLMI2P-CcVxZh41.js} +1 -1
  34. package/dist/client/assets/{chunk-OZEHJAEY-BaBXI-8x.js → chunk-OZEHJAEY-DjBZbgu0.js} +1 -1
  35. package/dist/client/assets/{chunk-PQ6SQG4A-BY9_Srs_.js → chunk-PQ6SQG4A-D1AbThjy.js} +1 -1
  36. package/dist/client/assets/{chunk-PU5JKC2W-t0zUh6E3.js → chunk-PU5JKC2W-D_6N6t8f.js} +1 -1
  37. package/dist/client/assets/chunk-QZHKN3VN-CgLPFSk5.js +1 -0
  38. package/dist/client/assets/{chunk-R5LLSJPH-BjSMFnTi.js → chunk-R5LLSJPH-CkjKXM73.js} +1 -1
  39. package/dist/client/assets/{chunk-WL4C6EOR-zSV-8h7F.js → chunk-WL4C6EOR-axcuKSup.js} +1 -1
  40. package/dist/client/assets/{chunk-XIRO2GV7-2tirYN5A.js → chunk-XIRO2GV7-4wqVHjs_.js} +1 -1
  41. package/dist/client/assets/{chunk-XPW4576I-C0GpOUHf.js → chunk-XPW4576I-DJr4_4Yy.js} +1 -1
  42. package/dist/client/assets/{chunk-XZSTWKYB-DDkpyNVE.js → chunk-XZSTWKYB-C8Y_hIKZ.js} +1 -1
  43. package/dist/client/assets/{chunk-YBOYWFTD-CzyyfGQX.js → chunk-YBOYWFTD-CKg4ymFF.js} +1 -1
  44. package/dist/client/assets/{chunk-Z5NKEFVG-Dgem5v98.js → chunk-Z5NKEFVG-HOkYqaKa.js} +1 -1
  45. package/dist/client/assets/classDiagram-VBA2DB6C-BHZpvOxK.js +1 -0
  46. package/dist/client/assets/classDiagram-v2-RAHNMMFH-DA7HMUUs.js +1 -0
  47. package/dist/client/assets/clone-Dgi8Z4IL.js +1 -0
  48. package/dist/client/assets/{cose-bilkent-S5V4N54A-jZzFUguD.js → cose-bilkent-S5V4N54A-DASO2hrk.js} +1 -1
  49. package/dist/client/assets/{cs-CZ-V77HGUP7-DmZRJ2UO.js → cs-CZ-V77HGUP7-BDg-F0CJ.js} +1 -1
  50. package/dist/client/assets/{da-DK-I5RFNTM4-CRIiLQ-G.js → da-DK-I5RFNTM4-wtSQ0Jxa.js} +1 -1
  51. package/dist/client/assets/{dagre-fvYjRtTE.js → dagre-CfB3Fw33.js} +1 -1
  52. package/dist/client/assets/{dagre-KLK3FWXG-CAG8WeES.js → dagre-KLK3FWXG-CC7tq2Ky.js} +1 -1
  53. package/dist/client/assets/{de-DE-DTI4WUSC-MFge9MC3.js → de-CH-WLRDEVBV-C1swvmZy.js} +1 -1
  54. package/dist/client/assets/{de-CH-WLRDEVBV-k728UA4j.js → de-DE-DTI4WUSC-C0L6Nz8X.js} +1 -1
  55. package/dist/client/assets/{diagram-E7M64L7V-Bm5FD0I5.js → diagram-E7M64L7V-CMt7BN5M.js} +1 -1
  56. package/dist/client/assets/{diagram-IFDJBPK2-pqicH-av.js → diagram-IFDJBPK2-BFMBUGpd.js} +1 -1
  57. package/dist/client/assets/{diagram-P4PSJMXO-DwIXO27H.js → diagram-P4PSJMXO-CviA1xXr.js} +1 -1
  58. package/dist/client/assets/dist-8Igu3Ee_2.js +1 -0
  59. package/dist/client/assets/dist-B4uQVR_X.js +1 -0
  60. package/dist/client/assets/{dockerfile-C0qQqxf9.js → dockerfile-D8_6_FRV.js} +1 -1
  61. package/dist/client/assets/{drawio-editor-CTZtMo1J.js → drawio-editor-Br4qyh3r.js} +1 -1
  62. package/dist/client/assets/drawioEditor-ClmnTx5J.js +2 -0
  63. package/dist/client/assets/editor-session-Cf-iV5-3.js +16 -0
  64. package/dist/client/assets/{el-GR-ZXDJ2OS4-Bbz93mrG.js → el-GR-ZXDJ2OS4-BH0saXds.js} +1 -1
  65. package/dist/client/assets/embedded-editor-base-CgEkjNYn.css +1 -0
  66. package/dist/client/assets/{en-IQZW2TQM-CZeIyvu2.js → en-IQZW2TQM-CzlcEpq3.js} +1 -1
  67. package/dist/client/assets/{erDiagram-INFDFZHY-DlhPv4az.js → erDiagram-INFDFZHY-DlIf-fb7.js} +1 -1
  68. package/dist/client/assets/{es-ES-DYQHAD43-CReXU-Nn.js → es-ES-DYQHAD43-CyzL9Mni.js} +1 -1
  69. package/dist/client/assets/{eu-ES-QDSYU5Y3-jRpcaWwz.js → eu-ES-QDSYU5Y3-D2-x316S.js} +1 -1
  70. package/dist/client/assets/{excalidraw-editor-CBEWfuhb.js → excalidraw-editor-CXAxVhlw.js} +2 -2
  71. package/dist/client/assets/{excalidraw-mermaid-stub-efoh2lJm.js → excalidraw-mermaid-stub-Bwe-bKcT.js} +1 -1
  72. package/dist/client/assets/{excalidraw-scene-BL-OtvCd.js → excalidraw-scene-BF_bT1OL.js} +8 -8
  73. package/dist/client/assets/excalidrawEditor-DoH_kMdu.js +2 -0
  74. package/dist/client/assets/export-page-PeexH2QK.js +39 -0
  75. package/dist/client/assets/exportDocument-9wTrBZNS.css +1 -0
  76. package/dist/client/assets/exportDocument-Bia2hI25.js +2 -0
  77. package/dist/client/assets/{fa-IR-26LZG4PM-DP8pJ8e3.js → fa-IR-26LZG4PM-D8-trU2x.js} +1 -1
  78. package/dist/client/assets/{factor-2uy-lXe_.js → factor-Cz-hzBGH.js} +1 -1
  79. package/dist/client/assets/{fi-FI-6YS4KDE4-BLUDpNOj.js → fi-FI-6YS4KDE4-CCdRVFDQ.js} +1 -1
  80. package/dist/client/assets/file-kind-DBptLlF_.js +1 -0
  81. package/dist/client/assets/{flowDiagram-PKNHOUZH-BU4MOSq8.js → flowDiagram-PKNHOUZH-C_t-mkwb.js} +1 -1
  82. package/dist/client/assets/{fr-FR-BRLLPTZC-BoZz3Pi8.js → fr-FR-BRLLPTZC-Dqq-O5T_.js} +1 -1
  83. package/dist/client/assets/{ganttDiagram-A5KZAMGK-CbX67lZu.js → ganttDiagram-A5KZAMGK-BtK9Tb--.js} +1 -1
  84. package/dist/client/assets/gitGraph-HDMCJU4V-CT7YfbD3.js +1 -0
  85. package/dist/client/assets/{gitGraphDiagram-K3NZZRJ6-DhyvWcW1.js → gitGraphDiagram-K3NZZRJ6-DULDLGiJ.js} +1 -1
  86. package/dist/client/assets/{gl-ES-OKUZTLYG-CaEvhjDi.js → gl-ES-OKUZTLYG-BK7pbLbm.js} +1 -1
  87. package/dist/client/assets/{graphlib-DSzYgMXB.js → graphlib-BgRST-Qg.js} +1 -1
  88. package/dist/client/assets/{he-IL-26MGYIU7-DYOchgy9.js → he-IL-26MGYIU7-C3BuYKyY.js} +1 -1
  89. package/dist/client/assets/{hi-IN-Q4ZOGTP2-yRs8g46n.js → hi-IN-Q4ZOGTP2-BEvXWXnH.js} +1 -1
  90. package/dist/client/assets/{hu-HU-P2OXPSN5-1skPmtgc.js → hu-HU-P2OXPSN5-BWWZeJNp.js} +1 -1
  91. package/dist/client/assets/{id-ID-2EIKXYN6-iUugQJd9.js → id-ID-2EIKXYN6-DxSKi_aJ.js} +1 -1
  92. package/dist/client/assets/image-XLNPCCAD-CFiKwiWK.js +1 -0
  93. package/dist/client/assets/{index-CywRKxsk.js → index-C8QZYHvV.js} +2 -2
  94. package/dist/client/assets/index-CxSbUTs2.css +1 -0
  95. package/dist/client/assets/info-3K5VOQVL-DUpNyDC-.js +1 -0
  96. package/dist/client/assets/{infoDiagram-LFFYTUFH-Bap6MyHX.js → infoDiagram-LFFYTUFH-DFTI0nfs.js} +1 -1
  97. package/dist/client/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  98. package/dist/client/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  99. package/dist/client/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  100. package/dist/client/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  101. package/dist/client/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  102. package/dist/client/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  103. package/dist/client/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  104. package/dist/client/assets/{isEmpty-C7iPDOO3.js → isEmpty-CVvRj8fj.js} +1 -1
  105. package/dist/client/assets/{ishikawaDiagram-PHBUUO56-DbftskqN.js → ishikawaDiagram-PHBUUO56-DpBuDpC6.js} +1 -1
  106. package/dist/client/assets/{it-IT-4CFKVXI2-a5DFhzuI.js → it-IT-4CFKVXI2-BmA8wW6q.js} +1 -1
  107. package/dist/client/assets/{ja-JP-MAND2Z4V-DwogHVKd.js → ja-JP-MAND2Z4V-CLS1jI9o.js} +1 -1
  108. package/dist/client/assets/javascript-UJe68_xi.js +1 -0
  109. package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  110. package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  111. package/dist/client/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  112. package/dist/client/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  113. package/dist/client/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  114. package/dist/client/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  115. package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  116. package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  117. package/dist/client/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  118. package/dist/client/assets/{journeyDiagram-4ABVD52K-165YoX6B.js → journeyDiagram-4ABVD52K-DDur6iHm.js} +1 -1
  119. package/dist/client/assets/{kaa-HQRTCXTJ-p81XNRfH.js → kaa-HQRTCXTJ-W15DEDPz.js} +1 -1
  120. package/dist/client/assets/{kab-KAB-JKIKKTGH-mV5VzQZc.js → kab-KAB-JKIKKTGH-MLh1inqS.js} +1 -1
  121. package/dist/client/assets/{kanban-definition-K7BYSVSG-MlixoNyx.js → kanban-definition-K7BYSVSG-dA6NPLsg.js} +1 -1
  122. package/dist/client/assets/{kk-KZ-HXQ63ZFC-IIPX0GQv.js → kk-KZ-HXQ63ZFC-BtFrPeLs.js} +1 -1
  123. package/dist/client/assets/{km-KH-PKL3LSGX-D7WQFJuZ.js → km-KH-PKL3LSGX-xO5FyM9T.js} +1 -1
  124. package/dist/client/assets/{ko-KR-KXLREZX3-Bs1oLtJs.js → ko-KR-KXLREZX3-NZFoRybS.js} +1 -1
  125. package/dist/client/assets/{ku-TR-MJ4IER3X-DlxOs6aZ.js → ku-TR-MJ4IER3X-B5eVPIpK.js} +1 -1
  126. package/dist/client/assets/{line-D57TbKb7.js → line-B2GMovaI.js} +1 -1
  127. package/dist/client/assets/{linear-BIf852wI.js → linear-B2dOdA24.js} +1 -1
  128. package/dist/client/assets/{lt-LT-H6WFQ6FJ-xuo-3zKH.js → lt-LT-H6WFQ6FJ-D_7_OeJD.js} +1 -1
  129. package/dist/client/assets/{lv-LV-GOCK6SJW-C7S3M1nr.js → lv-LV-GOCK6SJW-CnpKr0oQ.js} +1 -1
  130. package/dist/client/assets/main-BjHHMlv0.js +1249 -0
  131. package/dist/client/assets/{mermaid-parser.core-lf87rdG-.js → mermaid-parser.core-B1ogGcR8.js} +2 -2
  132. package/dist/client/assets/{mermaid-runtime-C4a7TrTS.js → mermaid-runtime-Bn8A6DGx.js} +3 -3
  133. package/dist/client/assets/{mindmap-definition-YRQLILUH-_YbQSc4Q.js → mindmap-definition-YRQLILUH-DjQcsPoe.js} +1 -1
  134. package/dist/client/assets/{mr-IN-IXVLDMEQ-BsoowyZT.js → mr-IN-IXVLDMEQ-Pht2X_GK.js} +1 -1
  135. package/dist/client/assets/{my-MM-YG6MYTTD-DCqwN_K_.js → my-MM-YG6MYTTD-Cgq4HhPO.js} +1 -1
  136. package/dist/client/assets/{nb-NO-XGWJISD2-CZ5ytLgj.js → nb-NO-XGWJISD2-Bn_Bk2un.js} +1 -1
  137. package/dist/client/assets/{nl-NL-XVDVCPNC-wADsdb-h.js → nl-NL-XVDVCPNC-YkWSJS94.js} +1 -1
  138. package/dist/client/assets/{nn-NO-EMX5MJX5-D9zIKTL2.js → nn-NO-EMX5MJX5-DhP5eZJ7.js} +1 -1
  139. package/dist/client/assets/{nsis-CUd4RnvJ.js → nsis-QPGhLAeY.js} +1 -1
  140. package/dist/client/assets/{oc-FR-ROEINTVO-BSbBugJB.js → oc-FR-ROEINTVO-D3udMPnr.js} +1 -1
  141. package/dist/client/assets/{ordinal-B0PAtOQ6.js → ordinal-Dz3y_j0K.js} +1 -1
  142. package/dist/client/assets/{pa-IN-ZYN6SUDY-1pFA_3Pb.js → pa-IN-ZYN6SUDY-CR5YzFig.js} +1 -1
  143. package/dist/client/assets/packet-RMMSAZCW-DEwNbIrA.js +1 -0
  144. package/dist/client/assets/percentages-5DKR754L-D7n4T776.js +1 -0
  145. package/dist/client/assets/pie-UPGHQEXC-D5M_lSjo.js +1 -0
  146. package/dist/client/assets/{pieDiagram-SKSYHLDU-CqCgXFom.js → pieDiagram-SKSYHLDU-jhHouFpk.js} +1 -1
  147. package/dist/client/assets/{pl-PL-6VTG7PHC-DyYw0u_z.js → pl-PL-6VTG7PHC-_wZuoIDM.js} +1 -1
  148. package/dist/client/assets/preview-render-compiler-BjLlHmiQ.js +35 -0
  149. package/dist/client/assets/preview-render-compiler-Duy_3IcP.js +1 -0
  150. package/dist/client/assets/{preview-render-worker-BVbVXXPS.js → preview-render-worker-B4dH2yxj.js} +22 -22
  151. package/dist/client/assets/{pt-BR-5YFKRR5G-DJCCBBDl.js → pt-BR-5YFKRR5G-M7gIm2Hi.js} +1 -1
  152. package/dist/client/assets/{pt-PT-GEIXXZ67-BPJd09Ax.js → pt-PT-GEIXXZ67-CcxWpkGj.js} +1 -1
  153. package/dist/client/assets/{pug-BqBF8qF7.js → pug-DkUcLYWt.js} +1 -1
  154. package/dist/client/assets/{quadrantDiagram-337W2JSQ-B8eMuhg4.js → quadrantDiagram-337W2JSQ-CYKgdx7K.js} +1 -1
  155. package/dist/client/assets/quick-switcher-controller-DcyllYpm.js +5 -0
  156. package/dist/client/assets/radar-KQ55EAFF-AU1qh3Bw.js +1 -0
  157. package/dist/client/assets/{requirementDiagram-Z7DCOOCP-B6POvqz4.js → requirementDiagram-Z7DCOOCP-D9SHxoW7.js} +1 -1
  158. package/dist/client/assets/{ro-RO-E2P6TFZI-DWVyTV7V.js → ro-RO-E2P6TFZI-qR9noVzP.js} +1 -1
  159. package/dist/client/assets/{room-COWSP--i.js → room-yJaBAoEU.js} +1 -1
  160. package/dist/client/assets/{ru-RU-YBIIY43T-Dyar7CYM.js → ru-RU-YBIIY43T-CE4S_RX8.js} +1 -1
  161. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-CXRga6Op.js → sankeyDiagram-WA2Y5GQK-CfHe3D6R.js} +1 -1
  162. package/dist/client/assets/{sequenceDiagram-2WXFIKYE-CeSFlFx5.js → sequenceDiagram-2WXFIKYE-CZsMMqAJ.js} +1 -1
  163. package/dist/client/assets/{si-LK-673C2CI2-C61aLrIy.js → si-LK-673C2CI2-Bv6Avh3z.js} +1 -1
  164. package/dist/client/assets/{sk-SK-CKZHQ4AP-BlFwOxRD.js → sk-SK-CKZHQ4AP-Cnlpp55z.js} +1 -1
  165. package/dist/client/assets/{sl-SI-557H2GWM-DcAVW-_t.js → sl-SI-557H2GWM-BfGq7AQF.js} +1 -1
  166. package/dist/client/assets/{stateDiagram-RAJIS63D-DbewhqwJ.js → stateDiagram-RAJIS63D-CoNZjTYV.js} +1 -1
  167. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-1zOw6NmQ.js +1 -0
  168. package/dist/client/assets/subset-shared.chunk-C9HjwTXy.js +1 -0
  169. package/dist/client/assets/{subset-worker.chunk-DVGT6bvR.js → subset-worker.chunk-BSCP6IiC.js} +1 -1
  170. package/dist/client/assets/{sv-SE-XOPKKDWS-BkhfOHzh.js → sv-SE-XOPKKDWS-B2_Vk-sp.js} +1 -1
  171. package/dist/client/assets/{ta-IN-XBH7DQI3-BIfwglZa.js → ta-IN-XBH7DQI3-BXQMZZIx.js} +1 -1
  172. package/dist/client/assets/{th-TH-TOCWH3R4-CkrxqVkf.js → th-TH-TOCWH3R4-C-ZIYMfH.js} +1 -1
  173. package/dist/client/assets/{timeline-definition-YZTLITO2-BXBHNWLQ.js → timeline-definition-YZTLITO2-DSe2mrG8.js} +1 -1
  174. package/dist/client/assets/{tr-TR-GXW6CYY5-CDdvG9rD.js → tr-TR-GXW6CYY5-dl702PMA.js} +1 -1
  175. package/dist/client/assets/treemap-KZPCXAKY-C9UI2fwP.js +1 -0
  176. package/dist/client/assets/{uk-UA-IJKTNUDG-DRHp0lWp.js → uk-UA-IJKTNUDG-CUYQvSSF.js} +1 -1
  177. package/dist/client/assets/{uz-UZ-TBZZEA4V-BIn-VE3Y.js → uz-UZ-TBZZEA4V-B9qw0PXX.js} +1 -1
  178. package/dist/client/assets/vault-api-client-Bf9tB_GW.js +1 -0
  179. package/dist/client/assets/vault-api-client-D7Ck0CvR.css +1 -0
  180. package/dist/client/assets/vault-utils-5Xr0MXCb.js +1 -0
  181. package/dist/client/assets/{vennDiagram-LZ73GAT5-C1hrSbf2.js → vennDiagram-LZ73GAT5-xSzaIpy1.js} +1 -1
  182. package/dist/client/assets/{vi-VN-MULSGNVB-Du7t5I0v.js → vi-VN-MULSGNVB-DqxZ_sVc.js} +1 -1
  183. package/dist/client/assets/{xychartDiagram-JWTSCODW-DhpWp8LV.js → xychartDiagram-JWTSCODW-C3vA70iJ.js} +1 -1
  184. package/dist/client/assets/{zh-CN-MVX3E32U-RcjS3rjt.js → zh-CN-MVX3E32U-BM0aLuGc.js} +1 -1
  185. package/dist/client/assets/{zh-HK-JNU5RLIE-g8UeEw5v.js → zh-HK-JNU5RLIE-dmG_YD0d.js} +1 -1
  186. package/dist/client/assets/{zh-TW-LENVCA6T-DwV25BqC.js → zh-TW-LENVCA6T-LFgbiOi3.js} +1 -1
  187. package/dist/client/drawio-editor.html +1 -1
  188. package/dist/client/excalidraw-editor.html +1 -1
  189. package/dist/client/export-document.html +3 -3
  190. package/dist/client/index.html +2 -2
  191. package/package.json +5 -1
  192. package/src/client/app/export-document.html +1 -1
  193. package/src/client/app/main-entry.js +2 -0
  194. package/src/client/application/app-shell/git-feature.js +28 -36
  195. package/src/client/application/app-shell/presence-feature.js +3 -1
  196. package/src/client/application/app-shell/workspace-feature.js +9 -0
  197. package/src/client/application/app-shell-elements.js +1 -0
  198. package/src/client/application/diagram-preview-hydrator.js +24 -15
  199. package/src/client/application/markdown-frontmatter.js +1 -56
  200. package/src/client/application/mermaid-preview-hydrator.js +121 -4
  201. package/src/client/application/plantuml-preview-hydrator.js +6 -16
  202. package/src/client/application/preview-render-compiler.js +50 -6
  203. package/src/client/application/preview-renderer.js +11 -2
  204. package/src/client/application/workspace-chrome-controller.js +25 -19
  205. package/src/client/application/workspace-coordinator.js +9 -0
  206. package/src/client/application/workspace-preview-controller.js +48 -3
  207. package/src/client/bootstrap/collabmd-app-shell.js +202 -52
  208. package/src/client/domain/excalidraw-document-switch.js +3 -0
  209. package/src/client/domain/vault-paths.js +19 -0
  210. package/src/client/excalidraw-editor.js +187 -84
  211. package/src/client/export/export-page.js +11 -3
  212. package/src/client/export/export-pipeline.js +77 -2
  213. package/src/client/infrastructure/auth-client.js +4 -4
  214. package/src/client/infrastructure/backlinks-api-client.js +18 -0
  215. package/src/client/infrastructure/comment-thread-store.js +4 -0
  216. package/src/client/infrastructure/editor-session.js +2 -0
  217. package/src/client/infrastructure/editor-view-adapter.js +8 -5
  218. package/src/client/infrastructure/git-api-client.js +134 -0
  219. package/src/client/infrastructure/plantuml-api-client.js +21 -0
  220. package/src/client/infrastructure/vault-api-client.js +121 -0
  221. package/src/client/presentation/app-shell-template.js +12 -0
  222. package/src/client/presentation/backlinks-panel.js +43 -20
  223. package/src/client/presentation/bases-preview-controller.js +463 -0
  224. package/src/client/presentation/excalidraw-embed-controller.js +251 -15
  225. package/src/client/presentation/excalidraw-embed-reconciler.js +0 -1
  226. package/src/client/presentation/file-action-controller.js +140 -0
  227. package/src/client/presentation/file-explorer-controller.js +2 -0
  228. package/src/client/presentation/file-explorer-view.js +378 -2
  229. package/src/client/presentation/file-history-view-controller.js +41 -40
  230. package/src/client/presentation/file-tree-state.js +9 -1
  231. package/src/client/presentation/git-diff-view-controller.js +70 -53
  232. package/src/client/presentation/git-panel-controller.js +12 -30
  233. package/src/client/presentation/quick-switcher-controller.js +54 -13
  234. package/src/client/styles/export-document.css +55 -0
  235. package/src/client/styles/features/auth-gate.css +13 -24
  236. package/src/client/styles/features/backlinks.css +65 -3
  237. package/src/client/styles/features/comment-card.css +6 -0
  238. package/src/client/styles/features/comments-drawer.css +38 -18
  239. package/src/client/styles/features/diagram-preview.css +33 -0
  240. package/src/client/styles/features/embedded-preview.css +37 -11
  241. package/src/client/styles/features/preview-markdown.css +285 -1
  242. package/src/client/styles/foundation/themes.css +4 -0
  243. package/src/client/styles/foundation/tokens.css +4 -3
  244. package/src/client/styles/layout/shell.css +8 -1
  245. package/src/client/styles/layout/sidebar.css +72 -0
  246. package/src/client/styles/layout/view-modes.css +5 -0
  247. package/src/domain/file-kind.js +17 -2
  248. package/src/domain/wiki-link-resolver.js +41 -23
  249. package/src/domain/yaml-frontmatter.js +59 -0
  250. package/src/server/auth/auth-common.js +224 -0
  251. package/src/server/auth/auth-constants.js +30 -0
  252. package/src/server/auth/auth-strategies.js +320 -0
  253. package/src/server/auth/create-auth-service.js +24 -545
  254. package/src/server/create-app-server.js +11 -2
  255. package/src/server/domain/backlink-index.js +102 -16
  256. package/src/server/domain/bases/base-definition.js +255 -0
  257. package/src/server/domain/bases/base-expression-runtime.js +1159 -0
  258. package/src/server/domain/bases/base-index-snapshot-store.js +418 -0
  259. package/src/server/domain/bases/base-query-results.js +205 -0
  260. package/src/server/domain/bases/base-query-service.js +204 -0
  261. package/src/server/domain/collaboration/collaboration-document-store.js +13 -2
  262. package/src/server/domain/collaboration/collaboration-room.js +36 -1
  263. package/src/server/domain/collaboration/room-client-state-store.js +1 -0
  264. package/src/server/domain/collaboration/room-persistence-controller.js +1 -1
  265. package/src/server/domain/workspace-state.js +52 -0
  266. package/src/server/infrastructure/http/create-request-handler.js +2 -0
  267. package/src/server/infrastructure/http/create-vault-api-command-handler.js +5 -0
  268. package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
  269. package/src/server/infrastructure/http/create-vault-api-query-handler.js +175 -1
  270. package/src/server/infrastructure/http/http-response.js +56 -0
  271. package/src/server/infrastructure/persistence/path-utils.js +1 -1
  272. package/src/server/infrastructure/persistence/vault-content-adapter.js +6 -0
  273. package/src/server/infrastructure/persistence/vault-file-store.js +124 -0
  274. package/src/server/infrastructure/workspace/file-system-sync-service.js +110 -19
  275. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +15 -44
  276. package/dist/client/assets/architecture-PBZL5I3N-iRyVT2GQ.js +0 -1
  277. package/dist/client/assets/channel-s0w88EQN.js +0 -1
  278. package/dist/client/assets/chunk-GLR3WWYH-CQ1LryrI.js +0 -2
  279. package/dist/client/assets/chunk-HHEYEP7N-DOQ0PCdH.js +0 -1
  280. package/dist/client/assets/chunk-QZHKN3VN-B0v4d-CS.js +0 -1
  281. package/dist/client/assets/classDiagram-VBA2DB6C-BQqG4q1b.js +0 -1
  282. package/dist/client/assets/classDiagram-v2-RAHNMMFH-BUKbprX1.js +0 -1
  283. package/dist/client/assets/clone-C-n46MFF.js +0 -1
  284. package/dist/client/assets/dist-BqQjnEWr.js +0 -1
  285. package/dist/client/assets/drawioEditor-keSJVTcv.js +0 -2
  286. package/dist/client/assets/editor-session-C9l9XwVg.js +0 -16
  287. package/dist/client/assets/embedded-editor-base-DgmRcsR8.css +0 -1
  288. package/dist/client/assets/excalidrawEditor-Ws-fwGOc.js +0 -2
  289. package/dist/client/assets/export-page-B6xYnwy7.js +0 -39
  290. package/dist/client/assets/exportDocument-8JBw0p8O.js +0 -2
  291. package/dist/client/assets/exportDocument-CtX_4PSk.css +0 -1
  292. package/dist/client/assets/gitGraph-HDMCJU4V-kkuqHGSM.js +0 -1
  293. package/dist/client/assets/image-XLNPCCAD-B4wZgh-Y.js +0 -1
  294. package/dist/client/assets/index-R4OArFku.css +0 -1
  295. package/dist/client/assets/info-3K5VOQVL-DPN78whf.js +0 -1
  296. package/dist/client/assets/javascript-8DvdgifH.js +0 -1
  297. package/dist/client/assets/main-CB97rY6B.js +0 -1213
  298. package/dist/client/assets/packet-RMMSAZCW-BymvQ5cQ.js +0 -1
  299. package/dist/client/assets/percentages-5DKR754L-CiI2D7zA.js +0 -1
  300. package/dist/client/assets/pie-UPGHQEXC-MmzJzWOE.js +0 -1
  301. package/dist/client/assets/preview-render-compiler-TmHpBDlh.js +0 -1
  302. package/dist/client/assets/preview-render-compiler-aYpnXmNm.js +0 -35
  303. package/dist/client/assets/quick-switcher-controller-DplOTsT3.js +0 -5
  304. package/dist/client/assets/radar-KQ55EAFF-CCohASSY.js +0 -1
  305. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-DbW-jVkS.js +0 -1
  306. package/dist/client/assets/subset-shared.chunk-CC_u8ICU.js +0 -1
  307. package/dist/client/assets/treemap-KZPCXAKY-9kxB0uNY.js +0 -1
  308. package/dist/client/assets/vault-api-client-DIaCC56H.js +0 -1
  309. package/dist/client/assets/vault-api-client-De7kMvrE.css +0 -1
  310. package/dist/client/assets/vault-utils-BW53lKl1.js +0 -1
  311. /package/dist/client/assets/{apl-QJCYYBkj.js → apl-C1JYSI8J.js} +0 -0
  312. /package/dist/client/assets/{array-DwdVlTkF.js → array-B3agRrCs.js} +0 -0
  313. /package/dist/client/assets/{asciiarmor-DNy0UPqh.js → asciiarmor-DHW75j1s.js} +0 -0
  314. /package/dist/client/assets/{asn1-CNPXj-s7.js → asn1-CQiG40kG.js} +0 -0
  315. /package/dist/client/assets/{asterisk-BwMdLpT2.js → asterisk-BWExh0n4.js} +0 -0
  316. /package/dist/client/assets/{brainfuck-C2gHT8aA.js → brainfuck-CTNFyOLg.js} +0 -0
  317. /package/dist/client/assets/{chunk-3PELD44J-CL87tpFo.js → chunk-3PELD44J-DymL2rGq.js} +0 -0
  318. /package/dist/client/assets/{chunk-A66AFZZU-DuceaGnc.js → chunk-A66AFZZU-BFHL744F.js} +0 -0
  319. /package/dist/client/assets/{chunk-AXZTUZBK-Cxfm7hmm.js → chunk-AXZTUZBK-DuMiJYO9.js} +0 -0
  320. /package/dist/client/assets/{chunk-SRAX5OIU-CC2mobFL.js → chunk-SRAX5OIU-CLVBQRWC.js} +0 -0
  321. /package/dist/client/assets/{clike-D5X7HJpo.js → clike-1_ZsiVV8.js} +0 -0
  322. /package/dist/client/assets/{clojure-BEDKZv_5.js → clojure-D-DYVqu7.js} +0 -0
  323. /package/dist/client/assets/{cmake-Y3shE7av.js → cmake-DtGL-Unu.js} +0 -0
  324. /package/dist/client/assets/{cobol-f-3TLk62.js → cobol-DP4QggbL.js} +0 -0
  325. /package/dist/client/assets/{coffeescript-C0XA9-xa.js → coffeescript-B_7eyHAa.js} +0 -0
  326. /package/dist/client/assets/{commonlisp-BOB6sIEu.js → commonlisp-COlJYiQT.js} +0 -0
  327. /package/dist/client/assets/{crystal-ByNgE_My.js → crystal-I_dE9xG-.js} +0 -0
  328. /package/dist/client/assets/{css-eaI-ENiR.js → css-CmhPNxBE.js} +0 -0
  329. /package/dist/client/assets/{cypher-CQ-dGGSi.js → cypher-DE6I2lIA.js} +0 -0
  330. /package/dist/client/assets/{cytoscape.esm-DBDRhUia.js → cytoscape.esm-Czjc507F.js} +0 -0
  331. /package/dist/client/assets/{d-D9pnu4Cr.js → d-BNkKjn0o.js} +0 -0
  332. /package/dist/client/assets/{defaultLocale-BWgun1yJ.js → defaultLocale-B_FbTTbl.js} +0 -0
  333. /package/dist/client/assets/{diff-z9q33Lo6.js → diff-BWuPUsEo.js} +0 -0
  334. /package/dist/client/assets/{dist-xO1ImhKz.js → dist-BU8uusJX.js} +0 -0
  335. /package/dist/client/assets/{dist-CsYRf4AV.js → dist-x7PIEmJu.js} +0 -0
  336. /package/dist/client/assets/{drawio-room-C592VDk7.js → drawio-room-DEivFyNV.js} +0 -0
  337. /package/dist/client/assets/{dtd-BDizf_te.js → dtd-C6brJFPg.js} +0 -0
  338. /package/dist/client/assets/{dylan-Bk__XCKW.js → dylan-Bft86ZSB.js} +0 -0
  339. /package/dist/client/assets/{ebnf-SzN4Kxtp.js → ebnf-D6ifG44A.js} +0 -0
  340. /package/dist/client/assets/{ecl-5ulxiKbt.js → ecl-M7Iek4lq.js} +0 -0
  341. /package/dist/client/assets/{eiffel-Bhoaqbb6.js → eiffel-DwxtewZF.js} +0 -0
  342. /package/dist/client/assets/{elm-C3je846J.js → elm-B1TncobV.js} +0 -0
  343. /package/dist/client/assets/{erlang-Cgk9SIAz.js → erlang-BDJZNtt8.js} +0 -0
  344. /package/dist/client/assets/{excalidraw-mermaid-stub-B_2dv3Ll.js → excalidraw-mermaid-stub-BZPU4ZhU.js} +0 -0
  345. /package/dist/client/assets/{fcl-dvkZwp9p.js → fcl-BWKK0S4-.js} +0 -0
  346. /package/dist/client/assets/{forth-DmfSa3jN.js → forth-nvhcMz63.js} +0 -0
  347. /package/dist/client/assets/{fortran-BsZAiNnN.js → fortran-BZID-z10.js} +0 -0
  348. /package/dist/client/assets/{gas-DBpKE9ut.js → gas-DjQsZDGE.js} +0 -0
  349. /package/dist/client/assets/{gherkin-CceEbBs7.js → gherkin-S0kHlzux.js} +0 -0
  350. /package/dist/client/assets/{groovy-CxJnDvES.js → groovy-BEKazBrO.js} +0 -0
  351. /package/dist/client/assets/{haskell-CUSb34Xy.js → haskell-C6qH3-aI.js} +0 -0
  352. /package/dist/client/assets/{haxe-6EHO_h-N.js → haxe-BY9d_5nB.js} +0 -0
  353. /package/dist/client/assets/{http-C3qcBpvG.js → http-DG1Y9fpK.js} +0 -0
  354. /package/dist/client/assets/{idl-C95wIO2I.js → idl-B64p3NTJ.js} +0 -0
  355. /package/dist/client/assets/{image-blob-reduce.esm-BaW4gpT9.js → image-blob-reduce.esm-DriR2zT9.js} +0 -0
  356. /package/dist/client/assets/{init-Bjj5fg68.js → init-DtLQcSuO.js} +0 -0
  357. /package/dist/client/assets/{isArrayLikeObject-Cmt1CYnI.js → isArrayLikeObject-BId_dPHM.js} +0 -0
  358. /package/dist/client/assets/{javascript-aWB87b1w.js → javascript-CdiVhQeA.js} +0 -0
  359. /package/dist/client/assets/{jsx-runtime-DiaMmmG6.js → jsx-runtime-C2p7wRmT.js} +0 -0
  360. /package/dist/client/assets/{julia-DF9PPAXG.js → julia-B22G9Bym.js} +0 -0
  361. /package/dist/client/assets/{katex-BPsFnA3D.js → katex-CXYULLWy.js} +0 -0
  362. /package/dist/client/assets/{livescript-CnOyWwUY.js → livescript-CkcuHqeS.js} +0 -0
  363. /package/dist/client/assets/{lua-a0rEq19C.js → lua-kutgyRGY.js} +0 -0
  364. /package/dist/client/assets/{math-BaavbII8.js → math-B-LMBwub.js} +0 -0
  365. /package/dist/client/assets/{mathematica-CKUq0Ojc.js → mathematica-CKVhKnoY.js} +0 -0
  366. /package/dist/client/assets/{mbox-a-u2PLog.js → mbox-DANyzFJ2.js} +0 -0
  367. /package/dist/client/assets/{mirc-BOd43sOX.js → mirc-BVG2S5rO.js} +0 -0
  368. /package/dist/client/assets/{mllike-fHruGivh.js → mllike-C0p7lv48.js} +0 -0
  369. /package/dist/client/assets/{modelica-B0NJqf1C.js → modelica-vJ-Qa9jV.js} +0 -0
  370. /package/dist/client/assets/{mscgen-DJZ33SrF.js → mscgen-vUD-SWGJ.js} +0 -0
  371. /package/dist/client/assets/{mumps-DvMvHTxU.js → mumps-D0KfUTSd.js} +0 -0
  372. /package/dist/client/assets/{nginx-BVAs8laz.js → nginx-DkVceJrH.js} +0 -0
  373. /package/dist/client/assets/{ntriples-DrdyAZU1.js → ntriples-BBuCIfS0.js} +0 -0
  374. /package/dist/client/assets/{octave-_YqJ0g7E.js → octave-BTv2CqSQ.js} +0 -0
  375. /package/dist/client/assets/{oz-k7T3LoMr.js → oz-D8SjVDNU.js} +0 -0
  376. /package/dist/client/assets/{pascal-CftsTvte.js → pascal-T-tfhVyx.js} +0 -0
  377. /package/dist/client/assets/{path-BUmMWM1-.js → path-DIlZIGue.js} +0 -0
  378. /package/dist/client/assets/{perl-CbsLFc7A.js → perl-BDrCkHRd.js} +0 -0
  379. /package/dist/client/assets/{pica-By-YDy_B.js → pica-C1TdTz-C.js} +0 -0
  380. /package/dist/client/assets/{pig-C-jTwMS-.js → pig-BEyI4fPq.js} +0 -0
  381. /package/dist/client/assets/{powershell-DqXLgSHX.js → powershell-DtnFc6GG.js} +0 -0
  382. /package/dist/client/assets/{preview-diagram-utils-Dc83ucbv.js → preview-diagram-utils-COt-IYMD.js} +0 -0
  383. /package/dist/client/assets/{preview-render-profile-DPzmho7I.js → preview-render-profile-CR4dJZrp.js} +0 -0
  384. /package/dist/client/assets/{properties-05jaw55P.js → properties-DWUvbxV9.js} +0 -0
  385. /package/dist/client/assets/{protobuf-DThTsZQN.js → protobuf-CQGoYyfE.js} +0 -0
  386. /package/dist/client/assets/{puppet-DuHxMpoj.js → puppet-Dd-qWO3p.js} +0 -0
  387. /package/dist/client/assets/{python-BiE2VHJI.js → python-CZtTmYkS.js} +0 -0
  388. /package/dist/client/assets/{q-DH46YfNw.js → q-I27iQntV.js} +0 -0
  389. /package/dist/client/assets/{r-DmEm46kJ.js → r-DN_EydfL.js} +0 -0
  390. /package/dist/client/assets/{rough.esm-jZQkcmER.js → rough.esm-DE_lJ5Ge.js} +0 -0
  391. /package/dist/client/assets/{roundRect-CI6UmGg6.js → roundRect-BzEouiv_.js} +0 -0
  392. /package/dist/client/assets/{rpm-DILIIbRB.js → rpm-CjWxLM68.js} +0 -0
  393. /package/dist/client/assets/{ruby-2LcnHEMS.js → ruby-CB34f2Gf.js} +0 -0
  394. /package/dist/client/assets/{runtime-config-CqX_f_Q4.js → runtime-config-CqhchMC4.js} +0 -0
  395. /package/dist/client/assets/{sas-Bn81MKuB.js → sas-Bji4HDQq.js} +0 -0
  396. /package/dist/client/assets/{scheme-B8kPNbgd.js → scheme-C3elI80V.js} +0 -0
  397. /package/dist/client/assets/{shell-CGj6v8kb.js → shell-DUveK2Hb.js} +0 -0
  398. /package/dist/client/assets/{sieve-CfVNFN1K.js → sieve-2ogwMVx4.js} +0 -0
  399. /package/dist/client/assets/{simple-mode-_FSHdiXs.js → simple-mode-pOKc0mfx.js} +0 -0
  400. /package/dist/client/assets/{smalltalk-BpIFyCPt.js → smalltalk-BuGhc6lW.js} +0 -0
  401. /package/dist/client/assets/{solr-B7iFaetn.js → solr-DTxshpm8.js} +0 -0
  402. /package/dist/client/assets/{sparql-COhgMTFK.js → sparql-BOvq0dv7.js} +0 -0
  403. /package/dist/client/assets/{spreadsheet-BzuffEeg.js → spreadsheet-C6Vbtl9-.js} +0 -0
  404. /package/dist/client/assets/{sql-13lT5zDl.js → sql-DDFeQNTK.js} +0 -0
  405. /package/dist/client/assets/{src-E3c2cohN.js → src-Pgt9Gp65.js} +0 -0
  406. /package/dist/client/assets/{stex-BRSfZZYG.js → stex-CEwW0Q_0.js} +0 -0
  407. /package/dist/client/assets/{stylus-fFo0QRk_.js → stylus-D1SZIMDs.js} +0 -0
  408. /package/dist/client/assets/{swift-wb5gyb6a.js → swift-BCxe4-cw.js} +0 -0
  409. /package/dist/client/assets/{tcl-BJA7GgWY.js → tcl-SPk7uiDB.js} +0 -0
  410. /package/dist/client/assets/{textile-BQjiYu-x.js → textile-C48beRus.js} +0 -0
  411. /package/dist/client/assets/{tiddlywiki-D2vUXB6n.js → tiddlywiki-CiImjFLN.js} +0 -0
  412. /package/dist/client/assets/{tiki-BFhpdznG.js → tiki-HkXZ4BIW.js} +0 -0
  413. /package/dist/client/assets/{toml-DN06iQUw.js → toml-BmfpMy1_.js} +0 -0
  414. /package/dist/client/assets/{troff-DuQfjhPH.js → troff-BjbEOT5E.js} +0 -0
  415. /package/dist/client/assets/{ttcn-BCTy6d50.js → ttcn-NA-V4KnY.js} +0 -0
  416. /package/dist/client/assets/{ttcn-cfg-BYnZQqGa.js → ttcn-cfg-TPHncdGN.js} +0 -0
  417. /package/dist/client/assets/{turtle-BvN-Me9x.js → turtle-GBz_E4RG.js} +0 -0
  418. /package/dist/client/assets/{vb-DYk3wW9u.js → vb-C19AQWqO.js} +0 -0
  419. /package/dist/client/assets/{vbscript-BKI61VS6.js → vbscript-CHJk3s95.js} +0 -0
  420. /package/dist/client/assets/{velocity-BrtitHHA.js → velocity-Ya0P4sQU.js} +0 -0
  421. /package/dist/client/assets/{verilog-CjUx3yiL.js → verilog-C4wTycyo.js} +0 -0
  422. /package/dist/client/assets/{vhdl-CPWwYF4V.js → vhdl-Bwndeg44.js} +0 -0
  423. /package/dist/client/assets/{webidl-PiVOzma8.js → webidl-DttrYZRT.js} +0 -0
  424. /package/dist/client/assets/{xquery-CiTzM_oK.js → xquery-CEDTd8qs.js} +0 -0
  425. /package/dist/client/assets/{yacas-4QS9CntY.js → yacas-C7dxlPB0.js} +0 -0
  426. /package/dist/client/assets/{yjs-provider-reset-guard-DWGhQClh.js → yjs-provider-reset-guard-CtERLBID.js} +0 -0
  427. /package/dist/client/assets/{z80-BxidrTKR.js → z80-BqEfFSnA.js} +0 -0
@@ -21,6 +21,7 @@ export class WorkspaceCoordinator {
21
21
  getLocalUser,
22
22
  getStoredUserName,
23
23
  getTheme,
24
+ isBaseFile,
24
25
  isDrawioFile,
25
26
  isExcalidrawFile,
26
27
  isImageFile,
@@ -41,6 +42,7 @@ export class WorkspaceCoordinator {
41
42
  onSelectionChange,
42
43
  onSessionAssigned = null,
43
44
  onFileOpenMetric = null,
45
+ onRenderBasePreview,
44
46
  onRenderExcalidrawPreview,
45
47
  onRenderDrawioPreview,
46
48
  onRenderImagePreview,
@@ -66,6 +68,7 @@ export class WorkspaceCoordinator {
66
68
  this.getLocalUser = getLocalUser;
67
69
  this.getStoredUserName = getStoredUserName;
68
70
  this.getTheme = getTheme;
71
+ this.isBaseFile = isBaseFile ?? (() => false);
69
72
  this.isDrawioFile = isDrawioFile ?? (() => false);
70
73
  this.isExcalidrawFile = isExcalidrawFile ?? (() => false);
71
74
  this.isImageFile = isImageFile ?? (() => false);
@@ -86,6 +89,7 @@ export class WorkspaceCoordinator {
86
89
  this.onSelectionChange = onSelectionChange;
87
90
  this.onSessionAssigned = onSessionAssigned;
88
91
  this.onFileOpenMetric = onFileOpenMetric;
92
+ this.onRenderBasePreview = onRenderBasePreview;
89
93
  this.onRenderExcalidrawPreview = onRenderExcalidrawPreview;
90
94
  this.onSyncWrapToggle = onSyncWrapToggle;
91
95
  this.onUpdateActiveFile = onUpdateActiveFile;
@@ -110,6 +114,7 @@ export class WorkspaceCoordinator {
110
114
  onRenderDrawioPreview,
111
115
  onFileOpenError,
112
116
  onFileOpenReady,
117
+ onRenderBasePreview,
113
118
  onRenderExcalidrawPreview,
114
119
  onRenderImagePreview,
115
120
  onSyncWrapToggle,
@@ -164,6 +169,7 @@ export class WorkspaceCoordinator {
164
169
  const currentDrawioMode = this.stateStore.get('currentDrawioMode') ?? null;
165
170
  const isDrawio = this.isDrawioFile(filePath) && drawioMode !== 'text' && this.shouldUseDrawioPreview(filePath);
166
171
  const isExcalidraw = this.isExcalidrawFile(filePath);
172
+ const isBase = this.isBaseFile(filePath);
167
173
  const isImage = this.isImageFile(filePath);
168
174
  const isMermaid = this.isMermaidFile(filePath);
169
175
  const isPlantUml = this.isPlantUmlFile(filePath);
@@ -198,6 +204,7 @@ export class WorkspaceCoordinator {
198
204
  this.chromeController.markFileOpenReady(null);
199
205
  this.chromeController.finalizeFileOpen({
200
206
  filePath,
207
+ isBase,
201
208
  isDrawio,
202
209
  isExcalidraw,
203
210
  isImage,
@@ -221,6 +228,7 @@ export class WorkspaceCoordinator {
221
228
  }
222
229
 
223
230
  this.onContentChange({
231
+ isBase,
224
232
  isMermaid,
225
233
  isPlantUml,
226
234
  });
@@ -259,6 +267,7 @@ export class WorkspaceCoordinator {
259
267
  fileOpenFinalized = true;
260
268
  this.chromeController.finalizeFileOpen({
261
269
  filePath,
270
+ isBase,
262
271
  isExcalidraw,
263
272
  session,
264
273
  supportsBacklinks: chromeState.supportsBacklinks,
@@ -1,4 +1,5 @@
1
1
  import {
2
+ isBaseFilePath,
2
3
  isDiagramFilePath,
3
4
  isMarkdownFilePath,
4
5
  } from '../../domain/file-kind.js';
@@ -7,6 +8,7 @@ import { resolveApiUrl } from '../domain/runtime-paths.js';
7
8
  export class WorkspacePreviewController {
8
9
  constructor({
9
10
  backlinksPanel,
11
+ basesPreview = null,
10
12
  drawioEmbed,
11
13
  elements,
12
14
  excalidrawEmbed,
@@ -14,6 +16,7 @@ export class WorkspacePreviewController {
14
16
  getSession,
15
17
  isDrawioFile,
16
18
  isExcalidrawFile,
19
+ isBaseFile,
17
20
  isImageFile,
18
21
  isMermaidFile,
19
22
  isPlantUmlFile,
@@ -25,6 +28,7 @@ export class WorkspacePreviewController {
25
28
  videoEmbed,
26
29
  }) {
27
30
  this.backlinksPanel = backlinksPanel;
31
+ this.basesPreview = basesPreview ?? { reconcileEmbeds() {}, renderStandalone() {} };
28
32
  this.drawioEmbed = drawioEmbed ?? {
29
33
  detachForCommit() {},
30
34
  hydrateVisibleEmbeds() {},
@@ -40,6 +44,7 @@ export class WorkspacePreviewController {
40
44
  this.getSession = getSession;
41
45
  this.isDrawioFile = isDrawioFile ?? (() => false);
42
46
  this.isExcalidrawFile = isExcalidrawFile ?? (() => false);
47
+ this.isBaseFile = isBaseFile ?? isBaseFilePath;
43
48
  this.isImageFile = isImageFile ?? (() => false);
44
49
  this.isMermaidFile = isMermaidFile ?? (() => false);
45
50
  this.isPlantUmlFile = isPlantUmlFile ?? (() => false);
@@ -78,28 +83,33 @@ export class WorkspacePreviewController {
78
83
  resetPreviewMode() {
79
84
  this.elements.previewContent?.classList.remove('is-drawio-file-preview');
80
85
  this.elements.previewContent?.classList.remove('is-excalidraw-file-preview');
86
+ this.elements.previewContent?.classList.remove('is-base-file-preview');
81
87
  this.elements.previewContent?.classList.remove('is-image-file-preview');
82
88
  this.elements.previewContent?.classList.remove('is-mermaid-file-preview');
83
89
  this.elements.previewContent?.classList.remove('is-plantuml-file-preview');
84
90
  }
85
91
 
86
- syncFileChrome(filePath, { drawioMode = null } = {}) {
92
+ syncFileChrome(filePath, { drawioMode = null, preferPreviewForBase = false } = {}) {
87
93
  const isDrawio = this.isDrawioFile(filePath);
88
94
  const isExcalidraw = this.isExcalidrawFile(filePath);
95
+ const isBase = this.isBaseFile(filePath);
89
96
  const isImage = this.isImageFile(filePath);
90
97
  const isMarkdown = isMarkdownFilePath(filePath);
91
98
  const isMermaid = this.isMermaidFile(filePath);
92
99
  const isPlantUml = this.isPlantUmlFile(filePath);
93
100
  const isDiagramFile = isDiagramFilePath(filePath);
101
+ const usesHeaderBacklinks = isExcalidraw || (isDrawio && drawioMode !== 'text');
102
+
103
+ this.backlinksPanel.setDisplayMode?.(usesHeaderBacklinks ? 'header' : 'dock');
94
104
 
95
105
  this.elements.editorFindButton?.classList.toggle('hidden', !isMarkdown);
96
106
  this.elements.markdownToolbar?.classList.toggle('hidden', !isMarkdown);
97
107
  this.elements.exportMenuGroup?.classList.toggle('hidden', !isMarkdown);
98
- this.elements.outlineToggle?.classList.toggle('hidden', isDiagramFile || isImage);
108
+ this.elements.outlineToggle?.classList.toggle('hidden', isDiagramFile || isImage || isBase);
99
109
  this.elements.previewContent?.classList.toggle('is-mermaid-file-preview', isMermaid);
100
110
  this.elements.previewContent?.classList.toggle('is-plantuml-file-preview', isPlantUml);
101
111
 
102
- if ((isDrawio && drawioMode !== 'text') || isExcalidraw || isImage) {
112
+ if ((isDrawio && drawioMode !== 'text') || isExcalidraw || isImage || (isBase && preferPreviewForBase)) {
103
113
  this.layoutController.setView('preview', { persist: false });
104
114
  this.outlineController.close();
105
115
  this.backlinksPanel.clear();
@@ -228,6 +238,41 @@ export class WorkspacePreviewController {
228
238
  this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
229
239
  }
230
240
 
241
+ async renderBaseFilePreview(filePath, { source = null } = {}) {
242
+ const previewElement = this.elements.previewContent;
243
+ if (!previewElement) {
244
+ return;
245
+ }
246
+
247
+ this.videoEmbed?.detachForCommit();
248
+ this.drawioEmbed.detachForCommit();
249
+ this.excalidrawEmbed.detachForCommit();
250
+ this.resetPreviewMode();
251
+ previewElement.classList.add('is-base-file-preview');
252
+ const renderHost = this.previewRenderer.ensureRenderHost();
253
+ this.previewRenderer.normalizePreviewChildren(renderHost);
254
+
255
+ if (renderHost) {
256
+ renderHost.replaceChildren();
257
+ renderHost.style.minHeight = '';
258
+ }
259
+
260
+ await this.basesPreview.renderStandalone({
261
+ filePath,
262
+ renderHost,
263
+ source: typeof source === 'string'
264
+ ? source
265
+ : (this.getSession()?.getText?.() ?? null),
266
+ });
267
+
268
+ previewElement.dataset.renderPhase = 'ready';
269
+ this.outlineController.close();
270
+ this.scrollSyncController.setLargeDocumentMode(false);
271
+ this.scrollSyncController.invalidatePreviewBlocks();
272
+ this.videoEmbed?.reconcileEmbeds(previewElement);
273
+ this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
274
+ }
275
+
231
276
  renderTextFilePreview({ content = '' } = {}) {
232
277
  const previewElement = this.elements.previewContent;
233
278
  if (!previewElement) {
@@ -17,11 +17,15 @@ import { BrowserNavigationPort } from '../infrastructure/browser-navigation-port
17
17
  import { BrowserNotificationPort } from '../infrastructure/browser-notification-port.js';
18
18
  import { BrowserPreferencesPort } from '../infrastructure/browser-preferences-port.js';
19
19
  import { AppVersionMonitor } from '../infrastructure/app-version-monitor.js';
20
+ import { backlinksApiClient } from '../infrastructure/backlinks-api-client.js';
21
+ import { gitApiClient } from '../infrastructure/git-api-client.js';
20
22
  import { getRuntimeConfig } from '../infrastructure/runtime-config.js';
23
+ import { plantUmlApiClient } from '../infrastructure/plantuml-api-client.js';
21
24
  import { TabActivityLock } from '../infrastructure/tab-activity-lock.js';
22
25
  import { vaultApiClient } from '../infrastructure/vault-api-client.js';
23
26
  import { WorkspaceSyncClient } from '../infrastructure/workspace-sync-client.js';
24
27
  import { BacklinksPanel } from '../presentation/backlinks-panel.js';
28
+ import { BasesPreviewController } from '../presentation/bases-preview-controller.js';
25
29
  import { CommentUiController } from '../presentation/comment-ui-controller.js';
26
30
  import { DrawioEmbedController } from '../presentation/drawio-embed-controller.js';
27
31
  import { ExcalidrawEmbedController } from '../presentation/excalidraw-embed-controller.js';
@@ -38,58 +42,169 @@ import { VideoEmbedController } from '../presentation/video-embed-controller.js'
38
42
  import { ImageLightboxController } from '../presentation/image-lightbox-controller.js';
39
43
  import { renderAppShell } from '../presentation/app-shell-renderer.js';
40
44
 
41
- const APP_SHELL_FEATURES = Object.freeze({
42
- chat: chatFeature,
43
- comments: commentsFeature,
44
- export: exportFeature,
45
- git: gitFeature,
46
- presence: presenceFeature,
47
- ui: uiFeature,
48
- workspace: workspaceFeature,
49
- });
50
-
51
- function installAppShellFeatures(appShell) {
52
- const featureMethodOwners = {};
53
-
54
- Object.entries(APP_SHELL_FEATURES).forEach(([featureName, feature]) => {
55
- Object.entries(feature).forEach(([methodName, method]) => {
56
- if (typeof method !== 'function') {
57
- return;
58
- }
59
-
60
- if (Object.hasOwn(featureMethodOwners, methodName)) {
61
- throw new Error(
62
- `CollabMdAppShell feature method "${methodName}" is declared by both "${featureMethodOwners[methodName]}" and "${featureName}".`,
63
- );
64
- }
65
-
66
- if (methodName in appShell) {
67
- throw new Error(
68
- `CollabMdAppShell feature method "${methodName}" conflicts with an existing app shell member.`,
69
- );
70
- }
71
-
72
- Object.defineProperty(appShell, methodName, {
73
- configurable: true,
74
- enumerable: false,
75
- value: method.bind(appShell),
76
- writable: false,
77
- });
78
- featureMethodOwners[methodName] = featureName;
79
- });
80
- });
81
-
82
- Object.defineProperty(appShell, 'featureMethodOwners', {
83
- configurable: false,
84
- enumerable: false,
85
- value: Object.freeze(featureMethodOwners),
86
- writable: false,
87
- });
88
- }
89
-
90
45
  export class CollabMdAppShell {
46
+ updateChatMessages(...args) { return chatFeature.updateChatMessages.apply(this, args); }
47
+ toggleChatPanel(...args) { return chatFeature.toggleChatPanel.apply(this, args); }
48
+ openChatPanel(...args) { return chatFeature.openChatPanel.apply(this, args); }
49
+ closeChatPanel(...args) { return chatFeature.closeChatPanel.apply(this, args); }
50
+ handleChatSubmit(...args) { return chatFeature.handleChatSubmit.apply(this, args); }
51
+ renderChat(...args) { return chatFeature.renderChat.apply(this, args); }
52
+ createChatMessageElement(...args) { return chatFeature.createChatMessageElement.apply(this, args); }
53
+ scrollChatToBottom(...args) { return chatFeature.scrollChatToBottom.apply(this, args); }
54
+ formatChatTimestamp(...args) { return chatFeature.formatChatTimestamp.apply(this, args); }
55
+ getChatMessageFileLabel(...args) { return chatFeature.getChatMessageFileLabel.apply(this, args); }
56
+ formatChatToastMessage(...args) { return chatFeature.formatChatToastMessage.apply(this, args); }
57
+ syncChatToggleButton(...args) { return chatFeature.syncChatToggleButton.apply(this, args); }
58
+ syncChatNotificationButton(...args) { return chatFeature.syncChatNotificationButton.apply(this, args); }
59
+ handleChatNotificationToggle(...args) { return chatFeature.handleChatNotificationToggle.apply(this, args); }
60
+ maybeNotifyChatMessage(...args) { return chatFeature.maybeNotifyChatMessage.apply(this, args); }
61
+ maybeShowBrowserChatNotification(...args) { return chatFeature.maybeShowBrowserChatNotification.apply(this, args); }
62
+ getCommentFileKind(...args) { return commentsFeature.getCommentFileKind.apply(this, args); }
63
+ syncCommentChrome(...args) { return commentsFeature.syncCommentChrome.apply(this, args); }
64
+ handleCommentSelectionChange(...args) { return commentsFeature.handleCommentSelectionChange.apply(this, args); }
65
+ handleCommentThreadsChange(...args) { return commentsFeature.handleCommentThreadsChange.apply(this, args); }
66
+ handleCommentEditorContentChange(...args) { return commentsFeature.handleCommentEditorContentChange.apply(this, args); }
67
+ refreshCommentUiLayout(...args) { return commentsFeature.refreshCommentUiLayout.apply(this, args); }
68
+ initializeExportBridge(...args) { return exportFeature.initializeExportBridge.apply(this, args); }
69
+ handleExportRequest(...args) { return exportFeature.handleExportRequest.apply(this, args); }
70
+ formatPullBackupToast(...args) { return gitFeature.formatPullBackupToast.apply(this, args); }
71
+ setGitOperationStatus(...args) { return gitFeature.setGitOperationStatus.apply(this, args); }
72
+ runGitActionWithStatus(...args) { return gitFeature.runGitActionWithStatus.apply(this, args); }
73
+ handleGitDiffSelection(...args) { return gitFeature.handleGitDiffSelection.apply(this, args); }
74
+ handleGitCommitSelection(...args) { return gitFeature.handleGitCommitSelection.apply(this, args); }
75
+ handleGitHistorySelection(...args) { return gitFeature.handleGitHistorySelection.apply(this, args); }
76
+ handleGitFileHistorySelection(...args) { return gitFeature.handleGitFileHistorySelection.apply(this, args); }
77
+ handleGitFilePreviewSelection(...args) { return gitFeature.handleGitFilePreviewSelection.apply(this, args); }
78
+ handleGitRepoChange(...args) { return gitFeature.handleGitRepoChange.apply(this, args); }
79
+ syncFileHistoryButton(...args) { return gitFeature.syncFileHistoryButton.apply(this, args); }
80
+ syncMainChrome(...args) { return gitFeature.syncMainChrome.apply(this, args); }
81
+ showGitDiff(...args) { return gitFeature.showGitDiff.apply(this, args); }
82
+ showGitCommit(...args) { return gitFeature.showGitCommit.apply(this, args); }
83
+ showGitHistory(...args) { return gitFeature.showGitHistory.apply(this, args); }
84
+ showGitFileHistory(...args) { return gitFeature.showGitFileHistory.apply(this, args); }
85
+ showGitFilePreview(...args) { return gitFeature.showGitFilePreview.apply(this, args); }
86
+ postGitAction(...args) { return gitFeature.postGitAction.apply(this, args); }
87
+ refreshWorkspaceAfterGitAction(...args) { return gitFeature.refreshWorkspaceAfterGitAction.apply(this, args); }
88
+ refreshGitAfterAction(...args) { return gitFeature.refreshGitAfterAction.apply(this, args); }
89
+ finalizeGitAction(...args) { return gitFeature.finalizeGitAction.apply(this, args); }
90
+ handleWorkspaceChangeForCurrentFile(...args) { return gitFeature.handleWorkspaceChangeForCurrentFile.apply(this, args); }
91
+ handleIncomingWorkspaceEvent(...args) { return gitFeature.handleIncomingWorkspaceEvent.apply(this, args); }
92
+ stageGitFile(...args) { return gitFeature.stageGitFile.apply(this, args); }
93
+ unstageGitFile(...args) { return gitFeature.unstageGitFile.apply(this, args); }
94
+ pushGitBranch(...args) { return gitFeature.pushGitBranch.apply(this, args); }
95
+ pullGitBranch(...args) { return gitFeature.pullGitBranch.apply(this, args); }
96
+ openGitResetDialog(...args) { return gitFeature.openGitResetDialog.apply(this, args); }
97
+ handleGitResetSubmit(...args) { return gitFeature.handleGitResetSubmit.apply(this, args); }
98
+ openGitCommitDialog(...args) { return gitFeature.openGitCommitDialog.apply(this, args); }
99
+ handleGitCommitSubmit(...args) { return gitFeature.handleGitCommitSubmit.apply(this, args); }
100
+ updateGlobalUsers(...args) { return presenceFeature.updateGlobalUsers.apply(this, args); }
101
+ updateFileAwareness(...args) { return presenceFeature.updateFileAwareness.apply(this, args); }
102
+ renderPresence(...args) { return presenceFeature.renderPresence.apply(this, args); }
103
+ renderAvatars(...args) { return presenceFeature.renderAvatars.apply(this, args); }
104
+ toggleFollowUser(...args) { return presenceFeature.toggleFollowUser.apply(this, args); }
105
+ stopFollowingUser(...args) { return presenceFeature.stopFollowingUser.apply(this, args); }
106
+ syncFollowedUser(...args) { return presenceFeature.syncFollowedUser.apply(this, args); }
107
+ followUserCursor(...args) { return presenceFeature.followUserCursor.apply(this, args); }
108
+ followExcalidrawUser(...args) { return presenceFeature.followExcalidrawUser.apply(this, args); }
109
+ resolveFileClientId(...args) { return presenceFeature.resolveFileClientId.apply(this, args); }
110
+ bindEvents(...args) { return uiFeature.bindEvents.apply(this, args); }
111
+ clearInitialFileBootstrap(...args) { return uiFeature.clearInitialFileBootstrap.apply(this, args); }
112
+ closeToolbarOverflowMenu(...args) { return uiFeature.closeToolbarOverflowMenu.apply(this, args); }
113
+ getStoredLineWrapping(...args) { return uiFeature.getStoredLineWrapping.apply(this, args); }
114
+ handleConnectionChange(...args) { return uiFeature.handleConnectionChange.apply(this, args); }
115
+ handlePreviewContentClick(...args) { return uiFeature.handlePreviewContentClick.apply(this, args); }
116
+ handleThemeChange(...args) { return uiFeature.handleThemeChange.apply(this, args); }
117
+ hideEditorLoading(...args) { return uiFeature.hideEditorLoading.apply(this, args); }
118
+ initialize(...args) { return uiFeature.initialize.apply(this, args); }
119
+ initializeVisualViewportBinding(...args) { return uiFeature.initializeVisualViewportBinding.apply(this, args); }
120
+ initializeVersionMonitoring(...args) { return uiFeature.initializeVersionMonitoring.apply(this, args); }
121
+ promptForVersionReload(...args) { return uiFeature.promptForVersionReload.apply(this, args); }
122
+ scheduleBacklinkRefresh(...args) { return uiFeature.scheduleBacklinkRefresh.apply(this, args); }
123
+ setToolbarOverflowOpen(...args) { return uiFeature.setToolbarOverflowOpen.apply(this, args); }
124
+ showEditorLoadError(...args) { return uiFeature.showEditorLoadError.apply(this, args); }
125
+ showEditorLoading(...args) { return uiFeature.showEditorLoading.apply(this, args); }
126
+ syncVisualViewportBounds(...args) { return uiFeature.syncVisualViewportBounds.apply(this, args); }
127
+ syncToolbarOverflowVisibility(...args) { return uiFeature.syncToolbarOverflowVisibility.apply(this, args); }
128
+ syncWrapToggle(...args) { return uiFeature.syncWrapToggle.apply(this, args); }
129
+ toggleToolbarOverflowMenu(...args) { return uiFeature.toggleToolbarOverflowMenu.apply(this, args); }
130
+ toggleLineWrapping(...args) { return uiFeature.toggleLineWrapping.apply(this, args); }
131
+ applySidebarVisibility(...args) { return uiFeature.applySidebarVisibility.apply(this, args); }
132
+ closeSidebarOnMobile(...args) { return uiFeature.closeSidebarOnMobile.apply(this, args); }
133
+ isMobileViewport(...args) { return uiFeature.isMobileViewport.apply(this, args); }
134
+ restoreSidebarState(...args) { return uiFeature.restoreSidebarState.apply(this, args); }
135
+ setSidebarTab(...args) { return uiFeature.setSidebarTab.apply(this, args); }
136
+ setSidebarVisibility(...args) { return uiFeature.setSidebarVisibility.apply(this, args); }
137
+ toggleSidebar(...args) { return uiFeature.toggleSidebar.apply(this, args); }
138
+ getCurrentUser(...args) { return uiFeature.getCurrentUser.apply(this, args); }
139
+ getCurrentUserName(...args) { return uiFeature.getCurrentUserName.apply(this, args); }
140
+ getStoredUserName(...args) { return uiFeature.getStoredUserName.apply(this, args); }
141
+ handleDisplayNameSubmit(...args) { return uiFeature.handleDisplayNameSubmit.apply(this, args); }
142
+ isIdentityManagedByAuth(...args) { return uiFeature.isIdentityManagedByAuth.apply(this, args); }
143
+ openDisplayNameDialog(...args) { return uiFeature.openDisplayNameDialog.apply(this, args); }
144
+ promptForDisplayNameIfNeeded(...args) { return uiFeature.promptForDisplayNameIfNeeded.apply(this, args); }
145
+ syncCurrentUserName(...args) { return uiFeature.syncCurrentUserName.apply(this, args); }
146
+ syncIdentityManagementUi(...args) { return uiFeature.syncIdentityManagementUi.apply(this, args); }
147
+ applyMarkdownToolbarAction(...args) { return uiFeature.applyMarkdownToolbarAction.apply(this, args); }
148
+ copyCurrentLink(...args) { return uiFeature.copyCurrentLink.apply(this, args); }
149
+ closeMarkdownBlockMenu(...args) { return uiFeature.closeMarkdownBlockMenu.apply(this, args); }
150
+ getActiveMarkdownBlockAction(...args) { return uiFeature.getActiveMarkdownBlockAction.apply(this, args); }
151
+ getMarkdownBlockMenuPopover(...args) { return uiFeature.getMarkdownBlockMenuPopover.apply(this, args); }
152
+ handleEditorImageInsert(...args) { return uiFeature.handleEditorImageInsert.apply(this, args); }
153
+ handleMarkdownToolbarClick(...args) { return uiFeature.handleMarkdownToolbarClick.apply(this, args); }
154
+ handleMarkdownToolbarDocumentPointerDown(...args) { return uiFeature.handleMarkdownToolbarDocumentPointerDown.apply(this, args); }
155
+ handleMarkdownToolbarKeydown(...args) { return uiFeature.handleMarkdownToolbarKeydown.apply(this, args); }
156
+ handleToolbarImageInsert(...args) { return uiFeature.handleToolbarImageInsert.apply(this, args); }
157
+ isMarkdownBlockMenuOpen(...args) { return uiFeature.isMarkdownBlockMenuOpen.apply(this, args); }
158
+ openMarkdownBlockMenu(...args) { return uiFeature.openMarkdownBlockMenu.apply(this, args); }
159
+ positionMarkdownBlockMenu(...args) { return uiFeature.positionMarkdownBlockMenu.apply(this, args); }
160
+ renderMarkdownBlockMenuPopover(...args) { return uiFeature.renderMarkdownBlockMenuPopover.apply(this, args); }
161
+ pickImageFile(...args) { return uiFeature.pickImageFile.apply(this, args); }
162
+ renderMarkdownToolbar(...args) { return uiFeature.renderMarkdownToolbar.apply(this, args); }
163
+ runEditorCommand(...args) { return uiFeature.runEditorCommand.apply(this, args); }
164
+ setActiveMarkdownBlockAction(...args) { return uiFeature.setActiveMarkdownBlockAction.apply(this, args); }
165
+ syncMarkdownToolbarBlockUi(...args) { return uiFeature.syncMarkdownToolbarBlockUi.apply(this, args); }
166
+ toggleMarkdownBlockMenu(...args) { return uiFeature.toggleMarkdownBlockMenu.apply(this, args); }
167
+ handleTabActivated(...args) { return uiFeature.handleTabActivated.apply(this, args); }
168
+ handleTabBlocked(...args) { return uiFeature.handleTabBlocked.apply(this, args); }
169
+ handleTabTakeover(...args) { return uiFeature.handleTabTakeover.apply(this, args); }
170
+ hideTabLockOverlay(...args) { return uiFeature.hideTabLockOverlay.apply(this, args); }
171
+ showTabLockOverlay(...args) { return uiFeature.showTabLockOverlay.apply(this, args); }
172
+ isExcalidrawFile(...args) { return workspaceFeature.isExcalidrawFile.apply(this, args); }
173
+ isBaseFile(...args) { return workspaceFeature.isBaseFile.apply(this, args); }
174
+ isDrawioFile(...args) { return workspaceFeature.isDrawioFile.apply(this, args); }
175
+ isImageFile(...args) { return workspaceFeature.isImageFile.apply(this, args); }
176
+ isMermaidFile(...args) { return workspaceFeature.isMermaidFile.apply(this, args); }
177
+ isPlantUmlFile(...args) { return workspaceFeature.isPlantUmlFile.apply(this, args); }
178
+ createDiagramPreviewDocument(...args) { return workspaceFeature.createDiagramPreviewDocument.apply(this, args); }
179
+ getPreviewSource(...args) { return workspaceFeature.getPreviewSource.apply(this, args); }
180
+ getStaticPreviewDocument(...args) { return workspaceFeature.getStaticPreviewDocument.apply(this, args); }
181
+ setStaticPreviewDocument(...args) { return workspaceFeature.setStaticPreviewDocument.apply(this, args); }
182
+ clearStaticPreviewDocument(...args) { return workspaceFeature.clearStaticPreviewDocument.apply(this, args); }
183
+ supportsFileHistory(...args) { return workspaceFeature.supportsFileHistory.apply(this, args); }
184
+ getDisplayName(...args) { return workspaceFeature.getDisplayName.apply(this, args); }
185
+ resetPreviewMode(...args) { return workspaceFeature.resetPreviewMode.apply(this, args); }
186
+ syncFileChrome(...args) { return workspaceFeature.syncFileChrome.apply(this, args); }
187
+ handleLayoutViewRequest(...args) { return workspaceFeature.handleLayoutViewRequest.apply(this, args); }
188
+ renderExcalidrawFilePreview(...args) { return workspaceFeature.renderExcalidrawFilePreview.apply(this, args); }
189
+ renderDrawioFilePreview(...args) { return workspaceFeature.renderDrawioFilePreview.apply(this, args); }
190
+ renderImageFilePreview(...args) { return workspaceFeature.renderImageFilePreview.apply(this, args); }
191
+ renderBaseFilePreview(...args) { return workspaceFeature.renderBaseFilePreview.apply(this, args); }
192
+ renderTextFilePreview(...args) { return workspaceFeature.renderTextFilePreview.apply(this, args); }
193
+ createResizeHandler(...args) { return workspaceFeature.createResizeHandler.apply(this, args); }
194
+ initializePreviewLayoutObserver(...args) { return workspaceFeature.initializePreviewLayoutObserver.apply(this, args); }
195
+ schedulePreviewLayoutSync(...args) { return workspaceFeature.schedulePreviewLayoutSync.apply(this, args); }
196
+ handleEditorScrollActivityChange(...args) { return workspaceFeature.handleEditorScrollActivityChange.apply(this, args); }
197
+ handleHashChange(...args) { return workspaceFeature.handleHashChange.apply(this, args); }
198
+ showEmptyState(...args) { return workspaceFeature.showEmptyState.apply(this, args); }
199
+ showDiffState(...args) { return workspaceFeature.showDiffState.apply(this, args); }
200
+ openFile(...args) { return workspaceFeature.openFile.apply(this, args); }
201
+ cleanupSession(...args) { return workspaceFeature.cleanupSession.apply(this, args); }
202
+ handleWikiLinkClick(...args) { return workspaceFeature.handleWikiLinkClick.apply(this, args); }
203
+ normalizeNewWikiFilePath(...args) { return workspaceFeature.normalizeNewWikiFilePath.apply(this, args); }
204
+ createAndOpenFile(...args) { return workspaceFeature.createAndOpenFile.apply(this, args); }
205
+ handleFileSelection(...args) { return workspaceFeature.handleFileSelection.apply(this, args); }
206
+
91
207
  constructor() {
92
- installAppShellFeatures(this);
93
208
  renderAppShell(document);
94
209
  this.elements = bindAppShellElements(document);
95
210
  this.runtimeConfig = getRuntimeConfig();
@@ -102,6 +217,9 @@ export class CollabMdAppShell {
102
217
  userNameKey: 'collabmd-user-name',
103
218
  });
104
219
  this.notifications = new BrowserNotificationPort();
220
+ this.backlinksApiClient = backlinksApiClient;
221
+ this.gitApiClient = gitApiClient;
222
+ this.plantUmlApiClient = plantUmlApiClient;
105
223
  this.vaultApiClient = vaultApiClient;
106
224
  this._session = null;
107
225
  this._hasPromptedForDisplayName = false;
@@ -159,6 +277,7 @@ export class CollabMdAppShell {
159
277
  });
160
278
  this.gitPanel = new GitPanelController({
161
279
  enabled: this.runtimeConfig.gitEnabled !== false,
280
+ gitApiClient: this.gitApiClient,
162
281
  onCommitStaged: () => this.openGitCommitDialog(),
163
282
  onOpenPullBackup: (filePath) => filePath && this.navigation.navigateToFile(filePath),
164
283
  onPullBranch: () => this.pullGitBranch(),
@@ -185,12 +304,23 @@ export class CollabMdAppShell {
185
304
  this.videoEmbed = new VideoEmbedController({
186
305
  previewElement: this.elements.previewContent,
187
306
  });
307
+ this.basesPreview = new BasesPreviewController({
308
+ getActiveFilePath: () => this.currentFilePath,
309
+ onOpenFile: (filePath) => filePath && this.navigation.navigateToFile(filePath),
310
+ previewElement: this.elements.previewContent,
311
+ toastController: this.toastController,
312
+ vaultApiClient: this.vaultApiClient,
313
+ });
188
314
  this.imageLightbox = new ImageLightboxController({
189
315
  previewElement: this.elements.previewContent,
190
316
  });
191
317
  this.previewRenderer = new PreviewRenderer({
192
318
  getContent: () => this.getPreviewSource(),
193
319
  getFileList: () => this.fileExplorer.flatDocumentFiles,
320
+ loadFileSource: async (filePath) => {
321
+ const payload = await this.vaultApiClient.readFile(filePath);
322
+ return String(payload?.content ?? '');
323
+ },
194
324
  getSourceFilePath: () => this.currentFilePath,
195
325
  onAfterRenderCommit: (_previewElement, stats) => {
196
326
  this.recordFileOpenMetric('preview_committed', {
@@ -199,6 +329,7 @@ export class CollabMdAppShell {
199
329
  });
200
330
  this.videoEmbed.reconcileEmbeds(this.elements.previewContent);
201
331
  this.videoEmbed.syncLayout();
332
+ this.basesPreview.reconcileEmbeds(this.elements.previewContent);
202
333
  this.drawioEmbed.reconcileEmbeds(this.elements.previewContent);
203
334
  this.drawioEmbed.syncLayout();
204
335
  this.excalidrawEmbed.reconcileEmbeds(this.elements.previewContent, { isLargeDocument: stats.isLargeDocument });
@@ -225,6 +356,7 @@ export class CollabMdAppShell {
225
356
  this.refreshCommentUiLayout();
226
357
  },
227
358
  outlineController: this.outlineController,
359
+ plantUmlRenderClient: this.plantUmlApiClient,
228
360
  previewContainer: this.elements.previewContainer,
229
361
  previewElement: this.elements.previewContent,
230
362
  });
@@ -242,7 +374,9 @@ export class CollabMdAppShell {
242
374
  scrollEditorToLine: (lineNumber, viewportRatio) => this.session?.scrollToLine(lineNumber, viewportRatio),
243
375
  });
244
376
  this.backlinksPanel = new BacklinksPanel({
377
+ headerPanelElement: this.elements.backlinksHeaderPanel,
245
378
  inlinePanelElement: this.elements.backlinksInlinePanel,
379
+ loadBacklinks: (filePath, options = {}) => this.backlinksApiClient.readBacklinks(filePath, options),
246
380
  onFileSelect: (filePath) => this.handleFileSelection(filePath, { closeSidebarOnMobile: true }),
247
381
  panelElement: this.elements.backlinksPanel,
248
382
  });
@@ -284,11 +418,13 @@ export class CollabMdAppShell {
284
418
  });
285
419
  this.workspacePreviewController = new WorkspacePreviewController({
286
420
  backlinksPanel: this.backlinksPanel,
421
+ basesPreview: this.basesPreview,
287
422
  drawioEmbed: this.drawioEmbed,
288
423
  elements: this.elements,
289
424
  excalidrawEmbed: this.excalidrawEmbed,
290
425
  getDisplayName: (filePath) => this.getDisplayName(filePath),
291
426
  getSession: () => this.session,
427
+ isBaseFile: (filePath) => this.isBaseFile(filePath),
292
428
  isDrawioFile: (filePath) => this.isDrawioFile(filePath),
293
429
  isExcalidrawFile: (filePath) => this.isExcalidrawFile(filePath),
294
430
  isImageFile: (filePath) => this.isImageFile(filePath),
@@ -309,6 +445,7 @@ export class CollabMdAppShell {
309
445
  vaultApiClient: this.vaultApiClient,
310
446
  });
311
447
  this.gitDiffView = new GitDiffViewController({
448
+ gitApiClient: this.gitApiClient,
312
449
  onBackToHistory: ({ historyFilePath } = {}) => {
313
450
  if (historyFilePath) {
314
451
  this.navigation.navigateToGitFileHistory({ filePath: historyFilePath });
@@ -324,6 +461,7 @@ export class CollabMdAppShell {
324
461
  });
325
462
  this.fileHistoryView = new FileHistoryViewController({
326
463
  diffRenderer: this.gitDiffView,
464
+ gitApiClient: this.gitApiClient,
327
465
  onOpenCommitDiff: (hash, { historyFilePath, path }) => this.handleGitCommitSelection(hash, {
328
466
  closeSidebarOnMobile: false,
329
467
  historyFilePath,
@@ -374,6 +512,7 @@ export class CollabMdAppShell {
374
512
  getLocalUser: () => this.lobby.getLocalUser(),
375
513
  getStoredUserName: () => this.getStoredUserName(),
376
514
  getTheme: () => this.themeController.getTheme(),
515
+ isBaseFile: (filePath) => this.isBaseFile(filePath),
377
516
  isDrawioFile: (filePath) => this.isDrawioFile(filePath),
378
517
  isExcalidrawFile: (filePath) => this.isExcalidrawFile(filePath),
379
518
  isImageFile: (filePath) => this.isImageFile(filePath),
@@ -397,8 +536,15 @@ export class CollabMdAppShell {
397
536
  this.clearInitialFileBootstrap();
398
537
  },
399
538
  onConnectionChange: (state) => this.handleConnectionChange(state),
400
- onContentChange: ({ isMermaid, isPlantUml }) => {
539
+ onContentChange: ({ isBase, isMermaid, isPlantUml }) => {
401
540
  this.handleCommentEditorContentChange();
541
+ if (isBase) {
542
+ void this.renderBaseFilePreview(this.currentFilePath, {
543
+ source: this.session?.getText?.() ?? '',
544
+ });
545
+ return;
546
+ }
547
+
402
548
  this.previewRenderer.queueRender();
403
549
  if (!isMermaid && !isPlantUml) {
404
550
  this.scheduleBacklinkRefresh();
@@ -422,6 +568,7 @@ export class CollabMdAppShell {
422
568
  this.commentUi.attachSession(session);
423
569
  },
424
570
  onRenderDrawioPreview: (filePath) => this.renderDrawioFilePreview(filePath),
571
+ onRenderBasePreview: (filePath) => this.renderBaseFilePreview(filePath),
425
572
  onRenderExcalidrawPreview: (filePath) => this.renderExcalidrawFilePreview(filePath),
426
573
  onRenderImagePreview: (filePath) => this.renderImageFilePreview(filePath),
427
574
  onSyncWrapToggle: () => this.syncWrapToggle(),
@@ -431,7 +578,10 @@ export class CollabMdAppShell {
431
578
  },
432
579
  onUpdateLobbyCurrentFile: (filePath) => this.lobby.setCurrentFile(filePath),
433
580
  onUpdateVisibleChrome: (filePath, { displayName }) => {
434
- this.syncFileChrome(filePath, { drawioMode: this.currentDrawioMode });
581
+ this.syncFileChrome(filePath, {
582
+ drawioMode: this.currentDrawioMode,
583
+ preferPreviewForBase: this.isBaseFile(filePath),
584
+ });
435
585
  this.syncCommentChrome(filePath);
436
586
  this.syncFileHistoryButton({ filePath, mode: 'editor' });
437
587
  if (this.elements.activeFileName) {
@@ -0,0 +1,3 @@
1
+ export function normalizeDocumentMode(mode) {
2
+ return mode === 'preview' ? 'preview' : 'edit';
3
+ }
@@ -1,4 +1,5 @@
1
1
  import {
2
+ isBaseFilePath,
2
3
  isDrawioFilePath,
3
4
  isMermaidFilePath,
4
5
  isPlantUmlFilePath,
@@ -47,6 +48,24 @@ export function createMarkdownStarter(filePath) {
47
48
  return `# ${title}\n\n`;
48
49
  }
49
50
 
51
+ export function createBaseStarter(filePath) {
52
+ const normalizedPath = normalizeVaultPathInput(filePath);
53
+ const nextPath = isBaseFilePath(normalizedPath)
54
+ ? normalizedPath
55
+ : `${normalizedPath}.base`;
56
+ return {
57
+ content: [
58
+ 'views:',
59
+ ' - type: table',
60
+ ' name: Table',
61
+ ' order:',
62
+ ' - file.name',
63
+ '',
64
+ ].join('\n'),
65
+ path: nextPath,
66
+ };
67
+ }
68
+
50
69
  export function createMermaidStarter(filePath) {
51
70
  const normalizedPath = normalizeVaultPathInput(filePath);
52
71
  const nextPath = isMermaidFilePath(normalizedPath)