collabmd 0.1.29 → 0.1.31

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 (445) hide show
  1. package/README.md +5 -0
  2. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-9k1Shd4H.js → CodeMirrorEditor-UCMRAMCV-Bg0dawOb.js} +1 -1
  3. package/dist/client/assets/{_basePickBy-B6kIfhzj.js → _basePickBy-Dv0sK1l7.js} +1 -1
  4. package/dist/client/assets/{_baseUniq-Bbn0_sHS.js → _baseUniq-DKYX57ji.js} +1 -1
  5. package/dist/client/assets/{ar-SA-NXDWD63E-BWO5oYxe.js → ar-SA-NXDWD63E-WivLHHDW.js} +1 -1
  6. package/dist/client/assets/{arc-BIqum3oD.js → arc-DrfYGhWk.js} +1 -1
  7. package/dist/client/assets/architecture-PBZL5I3N-DiglIZi9.js +1 -0
  8. package/dist/client/assets/architectureDiagram-2XIMDMQ5-kYbOThe4.js +36 -0
  9. package/dist/client/assets/{az-AZ-MXSORGZV-Cfw6Z5oY.js → az-AZ-MXSORGZV-DOdq1TKC.js} +1 -1
  10. package/dist/client/assets/base-CaIEJUF9.css +1 -0
  11. package/dist/client/assets/{bg-BG-O6MV2KSF-CQmG3YpD.js → bg-BG-O6MV2KSF-CYucKuDS.js} +1 -1
  12. package/dist/client/assets/{blockDiagram-WCTKOSBZ-0rR9ivwb.js → blockDiagram-WCTKOSBZ-GIgTqnhk.js} +1 -1
  13. package/dist/client/assets/{bn-IN-MMW2ORAC-DZKVshfk.js → bn-BD-T2VJNT7N-2OKWLCYa.js} +1 -1
  14. package/dist/client/assets/{bn-BD-T2VJNT7N-C4S6DZ6o.js → bn-IN-MMW2ORAC-DYr8kqNL.js} +1 -1
  15. package/dist/client/assets/{c4Diagram-IC4MRINW-DHwxcDlQ.js → c4Diagram-IC4MRINW-CkHO1i_L.js} +1 -1
  16. package/dist/client/assets/{ca-ES-MKBCGNOG-Do3aMgyu.js → ca-ES-MKBCGNOG-B9Aeb43I.js} +1 -1
  17. package/dist/client/assets/channel-CgsU9TSN.js +1 -0
  18. package/dist/client/assets/{chunk-4BX2VUAB-BqEY6cCE.js → chunk-4BX2VUAB-2e7V-uuE.js} +1 -1
  19. package/dist/client/assets/{chunk-55IACEB6-039iVf6v.js → chunk-55IACEB6-CpncB3ru.js} +1 -1
  20. package/dist/client/assets/{chunk-7E7YKBS2-BreG0gYL.js → chunk-7E7YKBS2-TdU92i9i.js} +1 -1
  21. package/dist/client/assets/{chunk-7R4GIKGN-BMrp52Pk.js → chunk-7R4GIKGN-mqd2GwMg.js} +2 -2
  22. package/dist/client/assets/{chunk-ETSVUAFD-CN-gPl_j.js → chunk-AXZTUZBK-DuMiJYO9.js} +1 -1
  23. package/dist/client/assets/{chunk-C72U2L5F-BLB26v5d.js → chunk-C72U2L5F-CJKQWBtz.js} +1 -1
  24. package/dist/client/assets/{chunk-EGIJ26TM-fG-0Yh0k.js → chunk-EGIJ26TM-C4nq20om.js} +1 -1
  25. package/dist/client/assets/{chunk-FMBD7UC4-EWK5Pt4D.js → chunk-FMBD7UC4-CMahlBa_.js} +1 -1
  26. package/dist/client/assets/{chunk-GEFDOKGD-DYHmaq-c.js → chunk-GEFDOKGD-Bs7FmFox.js} +1 -1
  27. package/dist/client/assets/chunk-GLR3WWYH-qQe2O5VQ.js +2 -0
  28. package/dist/client/assets/chunk-HHEYEP7N-DlevL8bq.js +1 -0
  29. package/dist/client/assets/{chunk-JSJVCQXG-B69YGtcQ.js → chunk-JSJVCQXG-DPQ9cPJt.js} +1 -1
  30. package/dist/client/assets/{chunk-KX2RTZJC-tuEC7hg1.js → chunk-KX2RTZJC-BTiOJb7N.js} +1 -1
  31. package/dist/client/assets/{chunk-KYZI473N-D4r5eMJZ.js → chunk-KYZI473N-CTSCuqRb.js} +1 -1
  32. package/dist/client/assets/{chunk-L3YUKLVL-CD9nJYL8.js → chunk-L3YUKLVL-CJZMBtKF.js} +1 -1
  33. package/dist/client/assets/{chunk-MX3YWQON-DqN0TF5Q.js → chunk-MX3YWQON-DQpSwRf6.js} +1 -1
  34. package/dist/client/assets/{chunk-NQ4KR5QH-BCjGNd0g.js → chunk-NQ4KR5QH-CMJKI6Oj.js} +1 -1
  35. package/dist/client/assets/chunk-NU2UP6EN-DlUENSHU.js +35 -0
  36. package/dist/client/assets/{chunk-O4XLMI2P-DaS3COAu.js → chunk-O4XLMI2P-CcVxZh41.js} +1 -1
  37. package/dist/client/assets/{chunk-OZEHJAEY-BaBXI-8x.js → chunk-OZEHJAEY-DjBZbgu0.js} +1 -1
  38. package/dist/client/assets/{chunk-PQ6SQG4A-BY9_Srs_.js → chunk-PQ6SQG4A-D1AbThjy.js} +1 -1
  39. package/dist/client/assets/{chunk-PU5JKC2W-t0zUh6E3.js → chunk-PU5JKC2W-D_6N6t8f.js} +1 -1
  40. package/dist/client/assets/chunk-QZHKN3VN-CgLPFSk5.js +1 -0
  41. package/dist/client/assets/{chunk-R5LLSJPH-BjSMFnTi.js → chunk-R5LLSJPH-CkjKXM73.js} +1 -1
  42. package/dist/client/assets/{chunk-WL4C6EOR-OuH0lN6M.js → chunk-WL4C6EOR-axcuKSup.js} +1 -1
  43. package/dist/client/assets/{chunk-XIRO2GV7-2tirYN5A.js → chunk-XIRO2GV7-4wqVHjs_.js} +1 -1
  44. package/dist/client/assets/{chunk-XPW4576I-C0GpOUHf.js → chunk-XPW4576I-DJr4_4Yy.js} +1 -1
  45. package/dist/client/assets/{chunk-XZSTWKYB-DDkpyNVE.js → chunk-XZSTWKYB-C8Y_hIKZ.js} +1 -1
  46. package/dist/client/assets/{chunk-YBOYWFTD-CzyyfGQX.js → chunk-YBOYWFTD-CKg4ymFF.js} +1 -1
  47. package/dist/client/assets/{chunk-Z5NKEFVG-Dgem5v98.js → chunk-Z5NKEFVG-HOkYqaKa.js} +1 -1
  48. package/dist/client/assets/classDiagram-VBA2DB6C-BHZpvOxK.js +1 -0
  49. package/dist/client/assets/classDiagram-v2-RAHNMMFH-DA7HMUUs.js +1 -0
  50. package/dist/client/assets/clone-Dgi8Z4IL.js +1 -0
  51. package/dist/client/assets/{cose-bilkent-S5V4N54A-jZzFUguD.js → cose-bilkent-S5V4N54A-DASO2hrk.js} +1 -1
  52. package/dist/client/assets/{cs-CZ-V77HGUP7-DmZRJ2UO.js → cs-CZ-V77HGUP7-BDg-F0CJ.js} +1 -1
  53. package/dist/client/assets/{da-DK-I5RFNTM4-CRIiLQ-G.js → da-DK-I5RFNTM4-wtSQ0Jxa.js} +1 -1
  54. package/dist/client/assets/{dagre-fvYjRtTE.js → dagre-CfB3Fw33.js} +1 -1
  55. package/dist/client/assets/dagre-KLK3FWXG-CC7tq2Ky.js +4 -0
  56. package/dist/client/assets/{de-DE-DTI4WUSC-MFge9MC3.js → de-CH-WLRDEVBV-C1swvmZy.js} +1 -1
  57. package/dist/client/assets/{de-CH-WLRDEVBV-k728UA4j.js → de-DE-DTI4WUSC-C0L6Nz8X.js} +1 -1
  58. package/dist/client/assets/diagram-E7M64L7V-CMt7BN5M.js +24 -0
  59. package/dist/client/assets/diagram-IFDJBPK2-BFMBUGpd.js +43 -0
  60. package/dist/client/assets/diagram-P4PSJMXO-CviA1xXr.js +24 -0
  61. package/dist/client/assets/dist-3bQB_we3.js +1 -0
  62. package/dist/client/assets/dist-3uAMa5w5.js +1 -0
  63. package/dist/client/assets/dist-8Igu3Ee_2.js +1 -0
  64. package/dist/client/assets/{dist-D9c0A4Uh.js → dist-B-02vKOA.js} +1 -1
  65. package/dist/client/assets/dist-B4uQVR_X.js +1 -0
  66. package/dist/client/assets/{dist-A0eSMIyy.js → dist-BLAlZer_.js} +1 -1
  67. package/dist/client/assets/dist-BU8uusJX.js +1 -0
  68. package/dist/client/assets/dist-BVB8rn7o.js +1 -0
  69. package/dist/client/assets/{dist-DveOCUUJ.js → dist-Bc2ND6i3.js} +1 -1
  70. package/dist/client/assets/{dist-Bay3vk5z.js → dist-BtnXjRx0.js} +1 -1
  71. package/dist/client/assets/{dist-CEYpWxod.js → dist-BzbYwa8m.js} +1 -1
  72. package/dist/client/assets/{dist-Ct1bmQnL.js → dist-BzpfHRaE.js} +1 -1
  73. package/dist/client/assets/{dist-BbKpzsTB.js → dist-CGV1S_as.js} +1 -1
  74. package/dist/client/assets/dist-CL-jjdvG.js +1 -0
  75. package/dist/client/assets/{dist-D0e6Qsad.js → dist-CXpKYW9s.js} +1 -1
  76. package/dist/client/assets/{dist-BchrxlnW.js → dist-CjII8VDS.js} +1 -1
  77. package/dist/client/assets/{dist-DnrO-JZd.js → dist-CxfohGIV.js} +1 -1
  78. package/dist/client/assets/{dist-CMHIjMVe.js → dist-D5QOYy7y.js} +1 -1
  79. package/dist/client/assets/{dist-CEtbxXlI.js → dist-DIi0uqLJ.js} +1 -1
  80. package/dist/client/assets/dist-DJ16N7ol.js +1 -0
  81. package/dist/client/assets/dist-DUvaQ-Bj.js +1 -0
  82. package/dist/client/assets/{dist-DnxPQ0-w.js → dist-DWJL3_bF.js} +6 -6
  83. package/dist/client/assets/dist-DsL7sqZR.js +1 -0
  84. package/dist/client/assets/{dist-DbhQ5ANS.js → dist-Dyt7n5Ui.js} +1 -1
  85. package/dist/client/assets/{dist-BOrlJDrR.js → dist-E_jPb93e.js} +1 -1
  86. package/dist/client/assets/{dist-D-gRgZ6e.js → dist-O1z0Ayg0.js} +1 -1
  87. package/dist/client/assets/dist-OQE68wIX.js +1 -0
  88. package/dist/client/assets/dist-k47-Io7D.js +1 -0
  89. package/dist/client/assets/{dist-Cdzvi8cf.js → dist-lDhnP-K1.js} +1 -1
  90. package/dist/client/assets/{dist-DS6mEQYy.js → dist-rMhng5DK.js} +1 -1
  91. package/dist/client/assets/{dockerfile-C0qQqxf9.js → dockerfile-D8_6_FRV.js} +1 -1
  92. package/dist/client/assets/{drawio-editor-CgbaOvpF.js → drawio-editor-B4sHHwWJ.js} +1 -1
  93. package/dist/client/assets/drawioEditor-DGpo2hcx.js +2 -0
  94. package/dist/client/assets/editor-session-BKHEYkbY.js +16 -0
  95. package/dist/client/assets/{el-GR-ZXDJ2OS4-Bbz93mrG.js → el-GR-ZXDJ2OS4-BH0saXds.js} +1 -1
  96. package/dist/client/assets/{embedded-editor-base-DXRHYz6R.css → embedded-editor-base-DgmRcsR8.css} +1 -1
  97. package/dist/client/assets/{en-CTDJDZ6K-BHbXrqU0.js → en-IQZW2TQM-CzlcEpq3.js} +1 -1
  98. package/dist/client/assets/{erDiagram-INFDFZHY-DP3f20BF.js → erDiagram-INFDFZHY-DlIf-fb7.js} +1 -1
  99. package/dist/client/assets/{es-ES-DYQHAD43-CReXU-Nn.js → es-ES-DYQHAD43-CyzL9Mni.js} +1 -1
  100. package/dist/client/assets/{eu-ES-QDSYU5Y3-jRpcaWwz.js → eu-ES-QDSYU5Y3-D2-x316S.js} +1 -1
  101. package/dist/client/assets/{excalidraw-editor-Dj0c0PO6.js → excalidraw-editor-CHbeNZu6.js} +2 -2
  102. package/dist/client/assets/excalidraw-editor-Dj3i59LW.css +1 -0
  103. package/dist/client/assets/{excalidraw-mermaid-stub-efoh2lJm.js → excalidraw-mermaid-stub-Bwe-bKcT.js} +1 -1
  104. package/dist/client/assets/excalidraw-scene-BF_bT1OL.js +176 -0
  105. package/dist/client/assets/excalidrawEditor-BhaTX2Ko.js +2 -0
  106. package/dist/client/assets/export-page-PeexH2QK.js +39 -0
  107. package/dist/client/assets/exportDocument-CtZKWE2c.js +2 -0
  108. package/dist/client/assets/{exportDocument-CLPYN_gg.css → exportDocument-DmV7Gngb.css} +1 -1
  109. package/dist/client/assets/{fa-IR-26LZG4PM-DP8pJ8e3.js → fa-IR-26LZG4PM-D8-trU2x.js} +1 -1
  110. package/dist/client/assets/{factor-2uy-lXe_.js → factor-Cz-hzBGH.js} +1 -1
  111. package/dist/client/assets/{fi-FI-6YS4KDE4-BLUDpNOj.js → fi-FI-6YS4KDE4-CCdRVFDQ.js} +1 -1
  112. package/dist/client/assets/file-kind-DBptLlF_.js +1 -0
  113. package/dist/client/assets/{flowDiagram-PKNHOUZH-CRbK5_5h.js → flowDiagram-PKNHOUZH-C_t-mkwb.js} +1 -1
  114. package/dist/client/assets/{fr-FR-BRLLPTZC-BoZz3Pi8.js → fr-FR-BRLLPTZC-Dqq-O5T_.js} +1 -1
  115. package/dist/client/assets/ganttDiagram-A5KZAMGK-BtK9Tb--.js +292 -0
  116. package/dist/client/assets/gitGraph-HDMCJU4V-CT7YfbD3.js +1 -0
  117. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-DULDLGiJ.js +65 -0
  118. package/dist/client/assets/{gl-ES-OKUZTLYG-CaEvhjDi.js → gl-ES-OKUZTLYG-BK7pbLbm.js} +1 -1
  119. package/dist/client/assets/{graphlib-DSzYgMXB.js → graphlib-BgRST-Qg.js} +1 -1
  120. package/dist/client/assets/{he-IL-26MGYIU7-DYOchgy9.js → he-IL-26MGYIU7-C3BuYKyY.js} +1 -1
  121. package/dist/client/assets/{hi-IN-Q4ZOGTP2-yRs8g46n.js → hi-IN-Q4ZOGTP2-BEvXWXnH.js} +1 -1
  122. package/dist/client/assets/{hu-HU-P2OXPSN5-1skPmtgc.js → hu-HU-P2OXPSN5-BWWZeJNp.js} +1 -1
  123. package/dist/client/assets/{id-ID-2EIKXYN6-iUugQJd9.js → id-ID-2EIKXYN6-DxSKi_aJ.js} +1 -1
  124. package/dist/client/assets/image-XLNPCCAD-CFiKwiWK.js +1 -0
  125. package/dist/client/assets/index-D69HOZHr.css +1 -0
  126. package/dist/client/assets/{index-CVgVzuh6.js → index-kPgEYvEX.js} +2 -2
  127. package/dist/client/assets/info-3K5VOQVL-DUpNyDC-.js +1 -0
  128. package/dist/client/assets/infoDiagram-LFFYTUFH-DFTI0nfs.js +2 -0
  129. package/dist/client/assets/{isEmpty-C7iPDOO3.js → isEmpty-CVvRj8fj.js} +1 -1
  130. package/dist/client/assets/{ishikawaDiagram-PHBUUO56-BDVPgkv4.js → ishikawaDiagram-PHBUUO56-DpBuDpC6.js} +1 -1
  131. package/dist/client/assets/{it-IT-4CFKVXI2-a5DFhzuI.js → it-IT-4CFKVXI2-BmA8wW6q.js} +1 -1
  132. package/dist/client/assets/{ja-JP-MAND2Z4V-DwogHVKd.js → ja-JP-MAND2Z4V-CLS1jI9o.js} +1 -1
  133. package/dist/client/assets/javascript-UJe68_xi.js +1 -0
  134. package/dist/client/assets/{journeyDiagram-4ABVD52K-DtNnwL48.js → journeyDiagram-4ABVD52K-DDur6iHm.js} +1 -1
  135. package/dist/client/assets/{jsx-runtime-B8dyIONw.js → jsx-runtime-C2p7wRmT.js} +1 -1
  136. package/dist/client/assets/{kaa-HQRTCXTJ-p81XNRfH.js → kaa-HQRTCXTJ-W15DEDPz.js} +1 -1
  137. package/dist/client/assets/{kab-KAB-JKIKKTGH-mV5VzQZc.js → kab-KAB-JKIKKTGH-MLh1inqS.js} +1 -1
  138. package/dist/client/assets/{kanban-definition-K7BYSVSG-C565sUNo.js → kanban-definition-K7BYSVSG-dA6NPLsg.js} +1 -1
  139. package/dist/client/assets/{kk-KZ-HXQ63ZFC-IIPX0GQv.js → kk-KZ-HXQ63ZFC-BtFrPeLs.js} +1 -1
  140. package/dist/client/assets/{km-KH-PKL3LSGX-D7WQFJuZ.js → km-KH-PKL3LSGX-xO5FyM9T.js} +1 -1
  141. package/dist/client/assets/{ko-KR-KXLREZX3-Bs1oLtJs.js → ko-KR-KXLREZX3-NZFoRybS.js} +1 -1
  142. package/dist/client/assets/{ku-TR-MJ4IER3X-DlxOs6aZ.js → ku-TR-MJ4IER3X-B5eVPIpK.js} +1 -1
  143. package/dist/client/assets/{line-D57TbKb7.js → line-B2GMovaI.js} +1 -1
  144. package/dist/client/assets/{linear-BIf852wI.js → linear-B2dOdA24.js} +1 -1
  145. package/dist/client/assets/{lt-LT-H6WFQ6FJ-xuo-3zKH.js → lt-LT-H6WFQ6FJ-D_7_OeJD.js} +1 -1
  146. package/dist/client/assets/{lv-LV-GOCK6SJW-C7S3M1nr.js → lv-LV-GOCK6SJW-CnpKr0oQ.js} +1 -1
  147. package/dist/client/assets/main-DSxNTtD-.js +1243 -0
  148. package/dist/client/assets/mermaid-parser.core-B1ogGcR8.js +4 -0
  149. package/dist/client/assets/{mermaid-runtime-DqncQoYK.js → mermaid-runtime-Bn8A6DGx.js} +3 -3
  150. package/dist/client/assets/{mindmap-definition-YRQLILUH-BbYzGfTD.js → mindmap-definition-YRQLILUH-DjQcsPoe.js} +1 -1
  151. package/dist/client/assets/{mr-IN-IXVLDMEQ-BsoowyZT.js → mr-IN-IXVLDMEQ-Pht2X_GK.js} +1 -1
  152. package/dist/client/assets/{my-MM-YG6MYTTD-DCqwN_K_.js → my-MM-YG6MYTTD-Cgq4HhPO.js} +1 -1
  153. package/dist/client/assets/{nb-NO-XGWJISD2-CZ5ytLgj.js → nb-NO-XGWJISD2-Bn_Bk2un.js} +1 -1
  154. package/dist/client/assets/{nl-NL-XVDVCPNC-wADsdb-h.js → nl-NL-XVDVCPNC-YkWSJS94.js} +1 -1
  155. package/dist/client/assets/{nn-NO-EMX5MJX5-D9zIKTL2.js → nn-NO-EMX5MJX5-DhP5eZJ7.js} +1 -1
  156. package/dist/client/assets/{nsis-CUd4RnvJ.js → nsis-QPGhLAeY.js} +1 -1
  157. package/dist/client/assets/{oc-FR-ROEINTVO-BSbBugJB.js → oc-FR-ROEINTVO-D3udMPnr.js} +1 -1
  158. package/dist/client/assets/{ordinal-B0PAtOQ6.js → ordinal-Dz3y_j0K.js} +1 -1
  159. package/dist/client/assets/{pa-IN-ZYN6SUDY-1pFA_3Pb.js → pa-IN-ZYN6SUDY-CR5YzFig.js} +1 -1
  160. package/dist/client/assets/packet-RMMSAZCW-DEwNbIrA.js +1 -0
  161. package/dist/client/assets/percentages-5DKR754L-D7n4T776.js +1 -0
  162. package/dist/client/assets/pie-UPGHQEXC-D5M_lSjo.js +1 -0
  163. package/dist/client/assets/pieDiagram-SKSYHLDU-jhHouFpk.js +30 -0
  164. package/dist/client/assets/{pl-PL-6VTG7PHC-DyYw0u_z.js → pl-PL-6VTG7PHC-_wZuoIDM.js} +1 -1
  165. package/dist/client/assets/preview-render-compiler-BjLlHmiQ.js +35 -0
  166. package/dist/client/assets/preview-render-compiler-Duy_3IcP.js +1 -0
  167. package/dist/client/assets/preview-render-worker-B4dH2yxj.js +59 -0
  168. package/dist/client/assets/{pt-BR-5YFKRR5G-DJCCBBDl.js → pt-BR-5YFKRR5G-M7gIm2Hi.js} +1 -1
  169. package/dist/client/assets/{pt-PT-GEIXXZ67-BPJd09Ax.js → pt-PT-GEIXXZ67-CcxWpkGj.js} +1 -1
  170. package/dist/client/assets/{pug-BqBF8qF7.js → pug-DkUcLYWt.js} +1 -1
  171. package/dist/client/assets/{quadrantDiagram-337W2JSQ-DhlKLozd.js → quadrantDiagram-337W2JSQ-CYKgdx7K.js} +1 -1
  172. package/dist/client/assets/quick-switcher-controller-DcyllYpm.js +5 -0
  173. package/dist/client/assets/radar-KQ55EAFF-AU1qh3Bw.js +1 -0
  174. package/dist/client/assets/{requirementDiagram-Z7DCOOCP-B7ZOMsIb.js → requirementDiagram-Z7DCOOCP-D9SHxoW7.js} +1 -1
  175. package/dist/client/assets/{ro-RO-E2P6TFZI-DWVyTV7V.js → ro-RO-E2P6TFZI-qR9noVzP.js} +1 -1
  176. package/dist/client/assets/{room-B0UGbzQj.js → room-yJaBAoEU.js} +1 -1
  177. package/dist/client/assets/{ru-RU-YBIIY43T-Dyar7CYM.js → ru-RU-YBIIY43T-CE4S_RX8.js} +1 -1
  178. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-CXRga6Op.js → sankeyDiagram-WA2Y5GQK-CfHe3D6R.js} +1 -1
  179. package/dist/client/assets/{sequenceDiagram-2WXFIKYE-CeSFlFx5.js → sequenceDiagram-2WXFIKYE-CZsMMqAJ.js} +1 -1
  180. package/dist/client/assets/{si-LK-673C2CI2-C61aLrIy.js → si-LK-673C2CI2-Bv6Avh3z.js} +1 -1
  181. package/dist/client/assets/{sk-SK-CKZHQ4AP-BlFwOxRD.js → sk-SK-CKZHQ4AP-Cnlpp55z.js} +1 -1
  182. package/dist/client/assets/{sl-SI-557H2GWM-DcAVW-_t.js → sl-SI-557H2GWM-BfGq7AQF.js} +1 -1
  183. package/dist/client/assets/stateDiagram-RAJIS63D-CoNZjTYV.js +1 -0
  184. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-1zOw6NmQ.js +1 -0
  185. package/dist/client/assets/subset-shared.chunk-C9HjwTXy.js +1 -0
  186. package/dist/client/assets/{subset-worker.chunk-DVGT6bvR.js → subset-worker.chunk-BSCP6IiC.js} +1 -1
  187. package/dist/client/assets/{sv-SE-XOPKKDWS-BkhfOHzh.js → sv-SE-XOPKKDWS-B2_Vk-sp.js} +1 -1
  188. package/dist/client/assets/{ta-IN-XBH7DQI3-BIfwglZa.js → ta-IN-XBH7DQI3-BXQMZZIx.js} +1 -1
  189. package/dist/client/assets/{th-TH-TOCWH3R4-CkrxqVkf.js → th-TH-TOCWH3R4-C-ZIYMfH.js} +1 -1
  190. package/dist/client/assets/{timeline-definition-YZTLITO2-BXBHNWLQ.js → timeline-definition-YZTLITO2-DSe2mrG8.js} +1 -1
  191. package/dist/client/assets/{tr-TR-GXW6CYY5-CDdvG9rD.js → tr-TR-GXW6CYY5-dl702PMA.js} +1 -1
  192. package/dist/client/assets/treemap-KZPCXAKY-C9UI2fwP.js +1 -0
  193. package/dist/client/assets/{uk-UA-IJKTNUDG-DRHp0lWp.js → uk-UA-IJKTNUDG-CUYQvSSF.js} +1 -1
  194. package/dist/client/assets/{uz-UZ-TBZZEA4V-BIn-VE3Y.js → uz-UZ-TBZZEA4V-B9qw0PXX.js} +1 -1
  195. package/dist/client/assets/{vault-api-client-DIaCC56H.js → vault-api-client-BzHQseMN.js} +1 -1
  196. package/dist/client/assets/vault-utils-5Xr0MXCb.js +1 -0
  197. package/dist/client/assets/{vennDiagram-LZ73GAT5-Cs9aQmVM.js → vennDiagram-LZ73GAT5-xSzaIpy1.js} +1 -1
  198. package/dist/client/assets/{vi-VN-MULSGNVB-Du7t5I0v.js → vi-VN-MULSGNVB-DqxZ_sVc.js} +1 -1
  199. package/dist/client/assets/{xychartDiagram-JWTSCODW-B40ybbzC.js → xychartDiagram-JWTSCODW-C3vA70iJ.js} +1 -1
  200. package/dist/client/assets/{yjs-provider-reset-guard-DUP9XupO.js → yjs-provider-reset-guard-CtERLBID.js} +1 -1
  201. package/dist/client/assets/{zh-CN-MVX3E32U-RcjS3rjt.js → zh-CN-MVX3E32U-BM0aLuGc.js} +1 -1
  202. package/dist/client/assets/{zh-HK-JNU5RLIE-g8UeEw5v.js → zh-HK-JNU5RLIE-dmG_YD0d.js} +1 -1
  203. package/dist/client/assets/{zh-TW-LENVCA6T-DwV25BqC.js → zh-TW-LENVCA6T-LFgbiOi3.js} +1 -1
  204. package/dist/client/drawio-editor.html +1 -1
  205. package/dist/client/excalidraw-editor.html +1 -1
  206. package/dist/client/export-document.html +5 -5
  207. package/dist/client/index.html +4 -4
  208. package/docker-compose.yml +1 -0
  209. package/package.json +24 -21
  210. package/src/client/app/export-document.html +1 -1
  211. package/src/client/application/app-shell/ui-feature-shell.js +47 -1
  212. package/src/client/application/app-shell/ui-feature-toolbar.js +25 -3
  213. package/src/client/application/app-shell/workspace-feature.js +9 -0
  214. package/src/client/application/app-shell-elements.js +3 -0
  215. package/src/client/application/diagram-preview-hydrator.js +1 -1
  216. package/src/client/application/markdown-frontmatter.js +97 -0
  217. package/src/client/application/preview-render-compiler.js +60 -7
  218. package/src/client/application/preview-render-executor.js +8 -1
  219. package/src/client/application/preview-render-worker.js +4 -0
  220. package/src/client/application/preview-renderer.js +51 -1
  221. package/src/client/application/workspace-chrome-controller.js +25 -19
  222. package/src/client/application/workspace-coordinator.js +9 -0
  223. package/src/client/application/workspace-preview-controller.js +49 -3
  224. package/src/client/bootstrap/collabmd-app-shell.js +31 -2
  225. package/src/client/domain/markdown-formatting.js +1 -1
  226. package/src/client/domain/markdown-toolbar-actions.js +36 -0
  227. package/src/client/domain/vault-paths.js +19 -0
  228. package/src/client/export/export-page.js +11 -3
  229. package/src/client/export/export-pipeline.js +80 -3
  230. package/src/client/infrastructure/editor-session.js +4 -0
  231. package/src/client/infrastructure/editor-view-adapter.js +44 -7
  232. package/src/client/infrastructure/excalidraw-room-client.js +12 -4
  233. package/src/client/infrastructure/vault-api-client.js +54 -0
  234. package/src/client/presentation/app-shell-template.js +27 -0
  235. package/src/client/presentation/backlinks-panel.js +37 -11
  236. package/src/client/presentation/bases-preview-controller.js +444 -0
  237. package/src/client/presentation/file-action-controller.js +44 -2
  238. package/src/client/presentation/file-explorer-view.js +10 -2
  239. package/src/client/presentation/file-tree-state.js +9 -1
  240. package/src/client/presentation/git-diff-view-controller.js +7 -10
  241. package/src/client/presentation/quick-switcher-controller.js +54 -13
  242. package/src/client/styles/base.css +5 -0
  243. package/src/client/styles/export-document.css +12 -0
  244. package/src/client/styles/features/backlinks.css +65 -3
  245. package/src/client/styles/features/preview-markdown.css +347 -0
  246. package/src/client/styles/layout/editor-page.css +6 -0
  247. package/src/client/styles/layout/responsive.css +89 -0
  248. package/src/client/styles/layout/shell.css +14 -1
  249. package/src/client/styles/layout/view-modes.css +5 -0
  250. package/src/client/styles/overrides/codemirror.css +74 -0
  251. package/src/domain/file-kind.js +17 -2
  252. package/src/domain/wiki-link-resolver.js +41 -23
  253. package/src/domain/yaml-frontmatter.js +59 -0
  254. package/src/server/auth/create-auth-service.js +32 -6
  255. package/src/server/config/env.js +27 -0
  256. package/src/server/config/perf-logging.js +39 -0
  257. package/src/server/create-app-server.js +113 -7
  258. package/src/server/domain/backlink-index.js +129 -19
  259. package/src/server/domain/bases/base-query-service.js +2101 -0
  260. package/src/server/domain/collaboration/collaboration-document-store.js +13 -2
  261. package/src/server/domain/collaboration/collaboration-room.js +28 -5
  262. package/src/server/domain/workspace-state.js +52 -0
  263. package/src/server/infrastructure/git/history-service.js +1 -1
  264. package/src/server/infrastructure/http/create-request-handler.js +2 -0
  265. package/src/server/infrastructure/http/create-vault-api-command-handler.js +5 -0
  266. package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
  267. package/src/server/infrastructure/http/create-vault-api-query-handler.js +66 -0
  268. package/src/server/infrastructure/persistence/path-utils.js +1 -1
  269. package/src/server/infrastructure/persistence/pull-backup-store.js +1 -1
  270. package/src/server/infrastructure/persistence/vault-content-adapter.js +6 -0
  271. package/src/server/infrastructure/persistence/vault-file-store.js +88 -31
  272. package/src/server/infrastructure/workspace/file-system-sync-service.js +156 -31
  273. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +47 -51
  274. package/src/server/shared/async-utils.js +25 -0
  275. package/dist/client/assets/architecture-PBZL5I3N-iRyVT2GQ.js +0 -1
  276. package/dist/client/assets/architectureDiagram-2XIMDMQ5-Bhh8YQHn.js +0 -36
  277. package/dist/client/assets/base-B5gONpJK.css +0 -1
  278. package/dist/client/assets/channel-s0w88EQN.js +0 -1
  279. package/dist/client/assets/chunk-27N2SPOM-DbHKsQ_j.js +0 -34
  280. package/dist/client/assets/chunk-GLR3WWYH-ZnuaBvXp.js +0 -2
  281. package/dist/client/assets/chunk-HHEYEP7N-DOQ0PCdH.js +0 -1
  282. package/dist/client/assets/chunk-QZHKN3VN-B0v4d-CS.js +0 -1
  283. package/dist/client/assets/classDiagram-VBA2DB6C-Bpdym3dj.js +0 -1
  284. package/dist/client/assets/classDiagram-v2-RAHNMMFH-CRAsdVDB.js +0 -1
  285. package/dist/client/assets/clone-C-n46MFF.js +0 -1
  286. package/dist/client/assets/dagre-KLK3FWXG-CXSnjrX-.js +0 -4
  287. package/dist/client/assets/diagram-E7M64L7V-De0StFef.js +0 -24
  288. package/dist/client/assets/diagram-IFDJBPK2-B2m6AJbU.js +0 -43
  289. package/dist/client/assets/diagram-P4PSJMXO-YBWLVENw.js +0 -24
  290. package/dist/client/assets/dist-BNcU46Ik.js +0 -1
  291. package/dist/client/assets/dist-BUEzOS23.js +0 -1
  292. package/dist/client/assets/dist-BflL-_8D.js +0 -1
  293. package/dist/client/assets/dist-CI_qEj5K.js +0 -1
  294. package/dist/client/assets/dist-CtFNDttZ.js +0 -1
  295. package/dist/client/assets/dist-DS_4VpEd.js +0 -1
  296. package/dist/client/assets/dist-DwsFUbuB.js +0 -1
  297. package/dist/client/assets/dist-VCYAp958.js +0 -1
  298. package/dist/client/assets/dist-Yxt8txtM.js +0 -1
  299. package/dist/client/assets/dist-npxgF_6V.js +0 -1
  300. package/dist/client/assets/dist-u0zDRMQt.js +0 -1
  301. package/dist/client/assets/drawioEditor-Eb2yYhjE.js +0 -2
  302. package/dist/client/assets/editor-session-DFzBn4RY.js +0 -16
  303. package/dist/client/assets/excalidraw-editor-Bat1FRoT.css +0 -1
  304. package/dist/client/assets/excalidraw-scene-CixfM-jL.js +0 -174
  305. package/dist/client/assets/excalidrawEditor-diK4VITg.js +0 -2
  306. package/dist/client/assets/export-page-CUOMczdp.js +0 -39
  307. package/dist/client/assets/exportDocument-BM4_f2n8.js +0 -2
  308. package/dist/client/assets/ganttDiagram-A5KZAMGK-R-AMIgxR.js +0 -292
  309. package/dist/client/assets/gitGraph-HDMCJU4V-kkuqHGSM.js +0 -1
  310. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-CIPit_Sh.js +0 -65
  311. package/dist/client/assets/image-32MOCVDX-BB6utPzr.js +0 -1
  312. package/dist/client/assets/index-BOOhEiLo.css +0 -1
  313. package/dist/client/assets/info-3K5VOQVL-DPN78whf.js +0 -1
  314. package/dist/client/assets/infoDiagram-LFFYTUFH-CF8jXFTm.js +0 -2
  315. package/dist/client/assets/javascript-8DvdgifH.js +0 -1
  316. package/dist/client/assets/main-C8adLQnt.js +0 -1174
  317. package/dist/client/assets/mermaid-parser.core-By_5k2SF.js +0 -4
  318. package/dist/client/assets/packet-RMMSAZCW-BymvQ5cQ.js +0 -1
  319. package/dist/client/assets/percentages-5DKR754L-CiI2D7zA.js +0 -1
  320. package/dist/client/assets/pie-UPGHQEXC-MmzJzWOE.js +0 -1
  321. package/dist/client/assets/pieDiagram-SKSYHLDU-CAU_gC7U.js +0 -30
  322. package/dist/client/assets/preview-render-compiler-CVfDHnqM.js +0 -1
  323. package/dist/client/assets/preview-render-compiler-CapHJDHT.js +0 -1
  324. package/dist/client/assets/preview-render-worker-wMS710Bv.js +0 -23
  325. package/dist/client/assets/quick-switcher-controller-DplOTsT3.js +0 -5
  326. package/dist/client/assets/radar-KQ55EAFF-CCohASSY.js +0 -1
  327. package/dist/client/assets/stateDiagram-RAJIS63D-CPoSrNwn.js +0 -1
  328. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-5GW0Y21a.js +0 -1
  329. package/dist/client/assets/subset-shared.chunk-CC_u8ICU.js +0 -1
  330. package/dist/client/assets/treemap-KZPCXAKY-9kxB0uNY.js +0 -1
  331. package/dist/client/assets/vault-utils-BW53lKl1.js +0 -1
  332. /package/dist/client/assets/{apl-QJCYYBkj.js → apl-C1JYSI8J.js} +0 -0
  333. /package/dist/client/assets/{array-DwdVlTkF.js → array-B3agRrCs.js} +0 -0
  334. /package/dist/client/assets/{asciiarmor-DNy0UPqh.js → asciiarmor-DHW75j1s.js} +0 -0
  335. /package/dist/client/assets/{asn1-CNPXj-s7.js → asn1-CQiG40kG.js} +0 -0
  336. /package/dist/client/assets/{asterisk-BwMdLpT2.js → asterisk-BWExh0n4.js} +0 -0
  337. /package/dist/client/assets/{base-r5Zg2n3k.js → base-h1uscjTi.js} +0 -0
  338. /package/dist/client/assets/{brainfuck-C2gHT8aA.js → brainfuck-CTNFyOLg.js} +0 -0
  339. /package/dist/client/assets/{chunk-3PELD44J-CL87tpFo.js → chunk-3PELD44J-DymL2rGq.js} +0 -0
  340. /package/dist/client/assets/{chunk-A66AFZZU-DuceaGnc.js → chunk-A66AFZZU-BFHL744F.js} +0 -0
  341. /package/dist/client/assets/{chunk-SRAX5OIU-CC2mobFL.js → chunk-SRAX5OIU-CLVBQRWC.js} +0 -0
  342. /package/dist/client/assets/{clike-D5X7HJpo.js → clike-1_ZsiVV8.js} +0 -0
  343. /package/dist/client/assets/{clojure-BEDKZv_5.js → clojure-D-DYVqu7.js} +0 -0
  344. /package/dist/client/assets/{cmake-Y3shE7av.js → cmake-DtGL-Unu.js} +0 -0
  345. /package/dist/client/assets/{cobol-f-3TLk62.js → cobol-DP4QggbL.js} +0 -0
  346. /package/dist/client/assets/{coffeescript-C0XA9-xa.js → coffeescript-B_7eyHAa.js} +0 -0
  347. /package/dist/client/assets/{commonlisp-BOB6sIEu.js → commonlisp-COlJYiQT.js} +0 -0
  348. /package/dist/client/assets/{crystal-ByNgE_My.js → crystal-I_dE9xG-.js} +0 -0
  349. /package/dist/client/assets/{css-eaI-ENiR.js → css-CmhPNxBE.js} +0 -0
  350. /package/dist/client/assets/{cypher-CQ-dGGSi.js → cypher-DE6I2lIA.js} +0 -0
  351. /package/dist/client/assets/{cytoscape.esm-DBDRhUia.js → cytoscape.esm-Czjc507F.js} +0 -0
  352. /package/dist/client/assets/{d-D9pnu4Cr.js → d-BNkKjn0o.js} +0 -0
  353. /package/dist/client/assets/{defaultLocale-BWgun1yJ.js → defaultLocale-B_FbTTbl.js} +0 -0
  354. /package/dist/client/assets/{diff-z9q33Lo6.js → diff-BWuPUsEo.js} +0 -0
  355. /package/dist/client/assets/{dist-CsYRf4AV.js → dist-x7PIEmJu.js} +0 -0
  356. /package/dist/client/assets/{drawio-room-C592VDk7.js → drawio-room-DEivFyNV.js} +0 -0
  357. /package/dist/client/assets/{dtd-BDizf_te.js → dtd-C6brJFPg.js} +0 -0
  358. /package/dist/client/assets/{dylan-Bk__XCKW.js → dylan-Bft86ZSB.js} +0 -0
  359. /package/dist/client/assets/{ebnf-SzN4Kxtp.js → ebnf-D6ifG44A.js} +0 -0
  360. /package/dist/client/assets/{ecl-5ulxiKbt.js → ecl-M7Iek4lq.js} +0 -0
  361. /package/dist/client/assets/{eiffel-Bhoaqbb6.js → eiffel-DwxtewZF.js} +0 -0
  362. /package/dist/client/assets/{elm-C3je846J.js → elm-B1TncobV.js} +0 -0
  363. /package/dist/client/assets/{erlang-Cgk9SIAz.js → erlang-BDJZNtt8.js} +0 -0
  364. /package/dist/client/assets/{excalidraw-mermaid-stub-B_2dv3Ll.js → excalidraw-mermaid-stub-BZPU4ZhU.js} +0 -0
  365. /package/dist/client/assets/{fcl-dvkZwp9p.js → fcl-BWKK0S4-.js} +0 -0
  366. /package/dist/client/assets/{forth-DmfSa3jN.js → forth-nvhcMz63.js} +0 -0
  367. /package/dist/client/assets/{fortran-BsZAiNnN.js → fortran-BZID-z10.js} +0 -0
  368. /package/dist/client/assets/{gas-DBpKE9ut.js → gas-DjQsZDGE.js} +0 -0
  369. /package/dist/client/assets/{gherkin-CceEbBs7.js → gherkin-S0kHlzux.js} +0 -0
  370. /package/dist/client/assets/{groovy-CxJnDvES.js → groovy-BEKazBrO.js} +0 -0
  371. /package/dist/client/assets/{haskell-CUSb34Xy.js → haskell-C6qH3-aI.js} +0 -0
  372. /package/dist/client/assets/{haxe-6EHO_h-N.js → haxe-BY9d_5nB.js} +0 -0
  373. /package/dist/client/assets/{http-C3qcBpvG.js → http-DG1Y9fpK.js} +0 -0
  374. /package/dist/client/assets/{idl-C95wIO2I.js → idl-B64p3NTJ.js} +0 -0
  375. /package/dist/client/assets/{image-blob-reduce.esm-BaW4gpT9.js → image-blob-reduce.esm-DriR2zT9.js} +0 -0
  376. /package/dist/client/assets/{init-Bjj5fg68.js → init-DtLQcSuO.js} +0 -0
  377. /package/dist/client/assets/{isArrayLikeObject-Cmt1CYnI.js → isArrayLikeObject-BId_dPHM.js} +0 -0
  378. /package/dist/client/assets/{javascript-aWB87b1w.js → javascript-CdiVhQeA.js} +0 -0
  379. /package/dist/client/assets/{julia-DF9PPAXG.js → julia-B22G9Bym.js} +0 -0
  380. /package/dist/client/assets/{katex-BPsFnA3D.js → katex-CXYULLWy.js} +0 -0
  381. /package/dist/client/assets/{livescript-CnOyWwUY.js → livescript-CkcuHqeS.js} +0 -0
  382. /package/dist/client/assets/{lua-a0rEq19C.js → lua-kutgyRGY.js} +0 -0
  383. /package/dist/client/assets/{math-BaavbII8.js → math-B-LMBwub.js} +0 -0
  384. /package/dist/client/assets/{mathematica-CKUq0Ojc.js → mathematica-CKVhKnoY.js} +0 -0
  385. /package/dist/client/assets/{mbox-a-u2PLog.js → mbox-DANyzFJ2.js} +0 -0
  386. /package/dist/client/assets/{mirc-BOd43sOX.js → mirc-BVG2S5rO.js} +0 -0
  387. /package/dist/client/assets/{mllike-fHruGivh.js → mllike-C0p7lv48.js} +0 -0
  388. /package/dist/client/assets/{modelica-B0NJqf1C.js → modelica-vJ-Qa9jV.js} +0 -0
  389. /package/dist/client/assets/{mscgen-DJZ33SrF.js → mscgen-vUD-SWGJ.js} +0 -0
  390. /package/dist/client/assets/{mumps-DvMvHTxU.js → mumps-D0KfUTSd.js} +0 -0
  391. /package/dist/client/assets/{nginx-BVAs8laz.js → nginx-DkVceJrH.js} +0 -0
  392. /package/dist/client/assets/{ntriples-DrdyAZU1.js → ntriples-BBuCIfS0.js} +0 -0
  393. /package/dist/client/assets/{octave-_YqJ0g7E.js → octave-BTv2CqSQ.js} +0 -0
  394. /package/dist/client/assets/{oz-k7T3LoMr.js → oz-D8SjVDNU.js} +0 -0
  395. /package/dist/client/assets/{pascal-CftsTvte.js → pascal-T-tfhVyx.js} +0 -0
  396. /package/dist/client/assets/{path-BUmMWM1-.js → path-DIlZIGue.js} +0 -0
  397. /package/dist/client/assets/{perl-CbsLFc7A.js → perl-BDrCkHRd.js} +0 -0
  398. /package/dist/client/assets/{pica-By-YDy_B.js → pica-C1TdTz-C.js} +0 -0
  399. /package/dist/client/assets/{pig-C-jTwMS-.js → pig-BEyI4fPq.js} +0 -0
  400. /package/dist/client/assets/{powershell-DqXLgSHX.js → powershell-DtnFc6GG.js} +0 -0
  401. /package/dist/client/assets/{preview-diagram-utils-Dc83ucbv.js → preview-diagram-utils-COt-IYMD.js} +0 -0
  402. /package/dist/client/assets/{preview-render-profile-DPzmho7I.js → preview-render-profile-CR4dJZrp.js} +0 -0
  403. /package/dist/client/assets/{properties-05jaw55P.js → properties-DWUvbxV9.js} +0 -0
  404. /package/dist/client/assets/{protobuf-DThTsZQN.js → protobuf-CQGoYyfE.js} +0 -0
  405. /package/dist/client/assets/{puppet-DuHxMpoj.js → puppet-Dd-qWO3p.js} +0 -0
  406. /package/dist/client/assets/{python-BiE2VHJI.js → python-CZtTmYkS.js} +0 -0
  407. /package/dist/client/assets/{q-DH46YfNw.js → q-I27iQntV.js} +0 -0
  408. /package/dist/client/assets/{r-DmEm46kJ.js → r-DN_EydfL.js} +0 -0
  409. /package/dist/client/assets/{rough.esm-jZQkcmER.js → rough.esm-DE_lJ5Ge.js} +0 -0
  410. /package/dist/client/assets/{roundRect-CI6UmGg6.js → roundRect-BzEouiv_.js} +0 -0
  411. /package/dist/client/assets/{rpm-DILIIbRB.js → rpm-CjWxLM68.js} +0 -0
  412. /package/dist/client/assets/{ruby-2LcnHEMS.js → ruby-CB34f2Gf.js} +0 -0
  413. /package/dist/client/assets/{runtime-config-CqX_f_Q4.js → runtime-config-CqhchMC4.js} +0 -0
  414. /package/dist/client/assets/{sas-Bn81MKuB.js → sas-Bji4HDQq.js} +0 -0
  415. /package/dist/client/assets/{scheme-B8kPNbgd.js → scheme-C3elI80V.js} +0 -0
  416. /package/dist/client/assets/{shell-CGj6v8kb.js → shell-DUveK2Hb.js} +0 -0
  417. /package/dist/client/assets/{sieve-CfVNFN1K.js → sieve-2ogwMVx4.js} +0 -0
  418. /package/dist/client/assets/{simple-mode-_FSHdiXs.js → simple-mode-pOKc0mfx.js} +0 -0
  419. /package/dist/client/assets/{smalltalk-BpIFyCPt.js → smalltalk-BuGhc6lW.js} +0 -0
  420. /package/dist/client/assets/{solr-B7iFaetn.js → solr-DTxshpm8.js} +0 -0
  421. /package/dist/client/assets/{sparql-COhgMTFK.js → sparql-BOvq0dv7.js} +0 -0
  422. /package/dist/client/assets/{spreadsheet-BzuffEeg.js → spreadsheet-C6Vbtl9-.js} +0 -0
  423. /package/dist/client/assets/{sql-13lT5zDl.js → sql-DDFeQNTK.js} +0 -0
  424. /package/dist/client/assets/{src-E3c2cohN.js → src-Pgt9Gp65.js} +0 -0
  425. /package/dist/client/assets/{stex-BRSfZZYG.js → stex-CEwW0Q_0.js} +0 -0
  426. /package/dist/client/assets/{stylus-fFo0QRk_.js → stylus-D1SZIMDs.js} +0 -0
  427. /package/dist/client/assets/{swift-wb5gyb6a.js → swift-BCxe4-cw.js} +0 -0
  428. /package/dist/client/assets/{tcl-BJA7GgWY.js → tcl-SPk7uiDB.js} +0 -0
  429. /package/dist/client/assets/{textile-BQjiYu-x.js → textile-C48beRus.js} +0 -0
  430. /package/dist/client/assets/{tiddlywiki-D2vUXB6n.js → tiddlywiki-CiImjFLN.js} +0 -0
  431. /package/dist/client/assets/{tiki-BFhpdznG.js → tiki-HkXZ4BIW.js} +0 -0
  432. /package/dist/client/assets/{toml-DN06iQUw.js → toml-BmfpMy1_.js} +0 -0
  433. /package/dist/client/assets/{troff-DuQfjhPH.js → troff-BjbEOT5E.js} +0 -0
  434. /package/dist/client/assets/{ttcn-BCTy6d50.js → ttcn-NA-V4KnY.js} +0 -0
  435. /package/dist/client/assets/{ttcn-cfg-BYnZQqGa.js → ttcn-cfg-TPHncdGN.js} +0 -0
  436. /package/dist/client/assets/{turtle-BvN-Me9x.js → turtle-GBz_E4RG.js} +0 -0
  437. /package/dist/client/assets/{vb-DYk3wW9u.js → vb-C19AQWqO.js} +0 -0
  438. /package/dist/client/assets/{vbscript-BKI61VS6.js → vbscript-CHJk3s95.js} +0 -0
  439. /package/dist/client/assets/{velocity-BrtitHHA.js → velocity-Ya0P4sQU.js} +0 -0
  440. /package/dist/client/assets/{verilog-CjUx3yiL.js → verilog-C4wTycyo.js} +0 -0
  441. /package/dist/client/assets/{vhdl-CPWwYF4V.js → vhdl-Bwndeg44.js} +0 -0
  442. /package/dist/client/assets/{webidl-PiVOzma8.js → webidl-DttrYZRT.js} +0 -0
  443. /package/dist/client/assets/{xquery-CiTzM_oK.js → xquery-CEDTd8qs.js} +0 -0
  444. /package/dist/client/assets/{yacas-4QS9CntY.js → yacas-C7dxlPB0.js} +0 -0
  445. /package/dist/client/assets/{z80-BxidrTKR.js → z80-BqEfFSnA.js} +0 -0
@@ -3,6 +3,7 @@ import hljs from 'highlight.js';
3
3
 
4
4
  import { isImageAttachmentFilePath } from '../../domain/file-kind.js';
5
5
  import { escapeHtml, resolveVaultRelativePath, resolveWikiTarget } from '../domain/vault-utils.js';
6
+ import { extractYamlFrontmatter, renderFrontmatterBlock } from './markdown-frontmatter.js';
6
7
  import { analyzeMarkdownComplexity } from './preview-render-profile.js';
7
8
 
8
9
  const DIRECT_VIDEO_MIME_TYPES = Object.freeze({
@@ -83,6 +84,18 @@ function createDrawioPlaceholder({ embedKey, label, target }) {
83
84
  return `<span class="drawio-embed-placeholder diagram-preview-shell" data-drawio-key="${escapeHtml(embedKey)}" data-drawio-target="${escapeHtml(target)}" data-drawio-label="${escapeHtml(label)}" data-drawio-mode="view"><span class="drawio-embed-placeholder-card diagram-preview-placeholder-card"><span class="drawio-embed-placeholder-copy diagram-preview-placeholder-copy"><strong>${escapeHtml(label)}</strong><span>Loads when visible</span></span><button type="button" class="drawio-embed-placeholder-btn diagram-preview-placeholder-btn" data-drawio-key="${escapeHtml(embedKey)}">Load diagram</button></span></span>`;
84
85
  }
85
86
 
87
+ function createBasePlaceholder({ key, sourceAttributes, sourceFilePath, sourceText, viewName = '' }) {
88
+ const sourceFileAttribute = sourceFilePath ? ` data-base-source-path="${escapeHtml(sourceFilePath)}"` : '';
89
+ const viewAttribute = viewName ? ` data-base-view="${escapeHtml(viewName)}"` : '';
90
+ return `<div class="bases-embed-placeholder diagram-preview-shell"${sourceAttributes} data-base-key="${escapeHtml(key)}" data-base-source="${escapeHtml(sourceText)}"${sourceFileAttribute}${viewAttribute}><div class="diagram-preview-placeholder-card"><div class="diagram-preview-placeholder-copy"><strong>Base view</strong><span>Loads query results when preview renders</span></div></div></div>`;
91
+ }
92
+
93
+ function createBaseFileEmbedPlaceholder({ embedKey, label, target, viewName = '', sourceFilePath = '' }) {
94
+ const sourceFileAttribute = sourceFilePath ? ` data-base-source-path="${escapeHtml(sourceFilePath)}"` : '';
95
+ const viewAttribute = viewName ? ` data-base-view="${escapeHtml(viewName)}"` : '';
96
+ return `<span class="bases-embed-placeholder diagram-preview-shell" data-base-key="${escapeHtml(embedKey)}" data-base-path="${escapeHtml(target)}" data-base-label="${escapeHtml(label)}"${viewAttribute}${sourceFileAttribute}><span class="diagram-preview-placeholder-card"><span class="diagram-preview-placeholder-copy"><strong>${escapeHtml(label)}</strong><span>Loads query results when preview renders</span></span></span></span>`;
97
+ }
98
+
86
99
  function getDirectVideoMimeType(pathname = '') {
87
100
  const match = pathname.toLowerCase().match(/\.(mp4|ogg|webm)$/i);
88
101
  if (!match) {
@@ -227,13 +240,15 @@ function resolveLocalAttachmentUrl(source = '', {
227
240
  }
228
241
 
229
242
  function renderInlineWikiText(content, {
243
+ baseEmbedCounts,
230
244
  drawioEmbedCounts,
231
245
  excalidrawEmbedCounts,
232
246
  fileList,
233
247
  mermaidEmbedCounts,
234
248
  plantUmlEmbedCounts,
249
+ sourceFilePath = '',
235
250
  }) {
236
- const regex = /!\[\[([^\]|]+\.(?:excalidraw|drawio|mmd|mermaid|puml|plantuml))(?:\|([^\]]+))?\]\]|\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/gi;
251
+ const regex = /!\[\[([^\]|#]+\.(?:base|excalidraw|drawio|mmd|mermaid|puml|plantuml))(?:#([^\]|]+))?(?:\|([^\]]+))?\]\]|\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/gi;
237
252
  let lastIndex = 0;
238
253
  let html = '';
239
254
  let match;
@@ -245,9 +260,20 @@ function renderInlineWikiText(content, {
245
260
 
246
261
  if (match[1]) {
247
262
  const target = match[1].trim();
248
- const label = (match[2] || target).trim();
249
-
250
- if (/\.excalidraw$/i.test(target)) {
263
+ const viewName = (match[2] || '').trim();
264
+ const label = (match[3] || target).trim();
265
+
266
+ if (/\.base$/i.test(target)) {
267
+ const occurrenceIndex = baseEmbedCounts.get(`${target}#${viewName}`) ?? 0;
268
+ baseEmbedCounts.set(`${target}#${viewName}`, occurrenceIndex + 1);
269
+ html += createBaseFileEmbedPlaceholder({
270
+ embedKey: `${target}#${viewName || 'default'}#${occurrenceIndex}`,
271
+ label: normalizePreviewTypography(label.replace(/\.base$/i, '')),
272
+ sourceFilePath,
273
+ target,
274
+ viewName,
275
+ });
276
+ } else if (/\.excalidraw$/i.test(target)) {
251
277
  const occurrenceIndex = excalidrawEmbedCounts.get(target) ?? 0;
252
278
  excalidrawEmbedCounts.set(target, occurrenceIndex + 1);
253
279
  html += createExcalidrawPlaceholder({
@@ -281,8 +307,8 @@ function renderInlineWikiText(content, {
281
307
  });
282
308
  }
283
309
  } else {
284
- const target = match[3].trim();
285
- const display = (match[4] || match[3]).trim();
310
+ const target = match[4].trim();
311
+ const display = (match[5] || match[4]).trim();
286
312
  const resolved = resolveWikiTarget(target, fileList);
287
313
  const classes = resolved ? 'wiki-link' : 'wiki-link wiki-link-new';
288
314
  const title = resolved ? normalizePreviewTypography(display) : `Create "${target}"`;
@@ -343,6 +369,7 @@ function createMarkdownRenderer(fileList = [], {
343
369
 
344
370
  const drawioEmbedCounts = new Map();
345
371
  const excalidrawEmbedCounts = new Map();
372
+ const baseCounts = new Map();
346
373
  const mermaidCounts = new Map();
347
374
  const mermaidEmbedCounts = new Map();
348
375
  const plantUmlCounts = new Map();
@@ -388,6 +415,18 @@ function createMarkdownRenderer(fileList = [], {
388
415
  });
389
416
  }
390
417
 
418
+ if (info === 'base') {
419
+ const sourceHash = hashString(token.content);
420
+ const occurrenceIndex = baseCounts.get(sourceHash) ?? 0;
421
+ baseCounts.set(sourceHash, occurrenceIndex + 1);
422
+ return createBasePlaceholder({
423
+ key: `base-${sourceHash}-${occurrenceIndex}`,
424
+ sourceAttributes,
425
+ sourceFilePath,
426
+ sourceText: token.content,
427
+ });
428
+ }
429
+
391
430
  const rendered = renderToken(fallbackFence, tokens, index, options, env, self);
392
431
  if (!sourceLine) {
393
432
  return rendered;
@@ -415,30 +454,36 @@ function createMarkdownRenderer(fileList = [], {
415
454
 
416
455
  if (content.startsWith('[x] ') || content.startsWith('[X] ')) {
417
456
  return `<input type="checkbox" checked data-task-checkbox="true"> ${renderInlineWikiText(content.slice(4), {
457
+ baseEmbedCounts: baseCounts,
418
458
  drawioEmbedCounts,
419
459
  excalidrawEmbedCounts,
420
460
  fileList,
421
461
  mermaidEmbedCounts,
422
462
  plantUmlEmbedCounts,
463
+ sourceFilePath,
423
464
  })}`;
424
465
  }
425
466
 
426
467
  if (content.startsWith('[ ] ')) {
427
468
  return `<input type="checkbox" data-task-checkbox="true"> ${renderInlineWikiText(content.slice(4), {
469
+ baseEmbedCounts: baseCounts,
428
470
  drawioEmbedCounts,
429
471
  excalidrawEmbedCounts,
430
472
  fileList,
431
473
  mermaidEmbedCounts,
432
474
  plantUmlEmbedCounts,
475
+ sourceFilePath,
433
476
  })}`;
434
477
  }
435
478
 
436
479
  return renderInlineWikiText(content, {
480
+ baseEmbedCounts: baseCounts,
437
481
  drawioEmbedCounts,
438
482
  excalidrawEmbedCounts,
439
483
  fileList,
440
484
  mermaidEmbedCounts,
441
485
  plantUmlEmbedCounts,
486
+ sourceFilePath,
442
487
  });
443
488
  };
444
489
 
@@ -480,17 +525,25 @@ function createMarkdownRenderer(fileList = [], {
480
525
  export function compilePreviewDocument({
481
526
  attachmentApiPath = '/api/attachment',
482
527
  fileList = [],
528
+ frontmatterCollapsed = false,
529
+ frontmatterInteractive = false,
483
530
  markdownText = '',
484
531
  sourceFilePath = '',
485
532
  } = {}) {
486
533
  const normalizedMarkdown = String(markdownText);
534
+ const frontmatter = extractYamlFrontmatter(normalizedMarkdown);
487
535
  const renderer = createMarkdownRenderer(fileList, {
488
536
  attachmentApiPath,
489
537
  sourceFilePath,
490
538
  });
539
+ const renderedMarkdown = frontmatter ? frontmatter.bodyMarkdown : normalizedMarkdown;
540
+ const frontmatterHtml = renderFrontmatterBlock(frontmatter, {
541
+ collapsed: frontmatterCollapsed,
542
+ interactive: frontmatterInteractive,
543
+ });
491
544
 
492
545
  return {
493
- html: renderer.render(normalizedMarkdown),
546
+ html: `${frontmatterHtml}${renderer.render(renderedMarkdown)}`,
494
547
  stats: analyzeMarkdownComplexity(normalizedMarkdown),
495
548
  };
496
549
  }
@@ -97,7 +97,10 @@ export class PreviewRenderExecutor {
97
97
  }
98
98
  }
99
99
 
100
- async compile(markdownText, renderVersion) {
100
+ async compile(markdownText, renderVersion, {
101
+ frontmatterCollapsed = false,
102
+ frontmatterInteractive = false,
103
+ } = {}) {
101
104
  const worker = this.ensureWorker();
102
105
 
103
106
  if (worker) {
@@ -111,6 +114,8 @@ export class PreviewRenderExecutor {
111
114
  activeWorker.postMessage({
112
115
  attachmentApiPath: this.attachmentApiPath,
113
116
  fileList: this.getFileList?.() ?? [],
117
+ frontmatterCollapsed,
118
+ frontmatterInteractive,
114
119
  markdownText,
115
120
  renderVersion,
116
121
  sourceFilePath: this.getSourceFilePath?.() ?? '',
@@ -122,6 +127,8 @@ export class PreviewRenderExecutor {
122
127
  return compilePreviewDocument({
123
128
  attachmentApiPath: this.attachmentApiPath,
124
129
  fileList: this.getFileList?.() ?? [],
130
+ frontmatterCollapsed,
131
+ frontmatterInteractive,
125
132
  markdownText,
126
133
  sourceFilePath: this.getSourceFilePath?.() ?? '',
127
134
  });
@@ -4,6 +4,8 @@ self.onmessage = (event) => {
4
4
  const {
5
5
  attachmentApiPath,
6
6
  fileList,
7
+ frontmatterCollapsed,
8
+ frontmatterInteractive,
7
9
  markdownText,
8
10
  renderVersion,
9
11
  sourceFilePath,
@@ -13,6 +15,8 @@ self.onmessage = (event) => {
13
15
  const result = compilePreviewDocument({
14
16
  attachmentApiPath,
15
17
  fileList,
18
+ frontmatterCollapsed,
19
+ frontmatterInteractive,
16
20
  markdownText,
17
21
  sourceFilePath,
18
22
  });
@@ -13,6 +13,7 @@ export class PreviewRenderer {
13
13
  getSourceFilePath,
14
14
  onAfterRenderCommit,
15
15
  onBeforeRenderCommit,
16
+ onPreviewLayoutChange,
16
17
  onRenderComplete,
17
18
  outlineController,
18
19
  previewContainer,
@@ -23,6 +24,7 @@ export class PreviewRenderer {
23
24
  this.getSourceFilePath = getSourceFilePath;
24
25
  this.onAfterRenderCommit = onAfterRenderCommit;
25
26
  this.onBeforeRenderCommit = onBeforeRenderCommit;
27
+ this.onPreviewLayoutChange = onPreviewLayoutChange;
26
28
  this.onRenderComplete = onRenderComplete;
27
29
  this.outlineController = outlineController;
28
30
  this.previewContainer = previewContainer;
@@ -35,8 +37,18 @@ export class PreviewRenderer {
35
37
  this.currentStats = null;
36
38
  this.isLargeDocument = false;
37
39
  this.hydrationPaused = false;
40
+ this.frontmatterCollapsed = false;
38
41
 
39
42
  this.handlePreviewClick = (event) => {
43
+ const frontmatterToggle = event.target.closest('.frontmatter-toggle');
44
+ if (frontmatterToggle) {
45
+ event.preventDefault();
46
+ this.frontmatterCollapsed = !this.frontmatterCollapsed;
47
+ this.applyFrontmatterState();
48
+ this.handleFrontmatterLayoutChange();
49
+ return;
50
+ }
51
+
40
52
  const mermaidButton = event.target.closest('.mermaid-placeholder-btn');
41
53
  if (mermaidButton) {
42
54
  const shell = mermaidButton.closest('.mermaid-shell');
@@ -134,6 +146,7 @@ export class PreviewRenderer {
134
146
  this.readyRenderVersion = 0;
135
147
  this.currentStats = null;
136
148
  this.isLargeDocument = false;
149
+ this.frontmatterCollapsed = false;
137
150
  if (this.renderExecutor.hasPendingJob()) {
138
151
  this.resetWorker('Document changed');
139
152
  }
@@ -272,7 +285,10 @@ export class PreviewRenderer {
272
285
  }
273
286
 
274
287
  async compilePreview(markdownText, renderVersion) {
275
- return this.renderExecutor.compile(markdownText, renderVersion);
288
+ return this.renderExecutor.compile(markdownText, renderVersion, {
289
+ frontmatterCollapsed: this.frontmatterCollapsed,
290
+ frontmatterInteractive: true,
291
+ });
276
292
  }
277
293
 
278
294
  commitBaseRender({ html, stats }, renderVersion) {
@@ -294,6 +310,7 @@ export class PreviewRenderer {
294
310
  if (renderHost) {
295
311
  renderHost.innerHTML = html;
296
312
  }
313
+ this.applyFrontmatterState();
297
314
  this.reconcileHydratedMermaids();
298
315
  this.reconcileHydratedPlantUmls();
299
316
  this.setPhase('base');
@@ -313,6 +330,39 @@ export class PreviewRenderer {
313
330
  }
314
331
  }
315
332
 
333
+ applyFrontmatterState() {
334
+ const block = this.renderHost?.querySelector?.('.frontmatter-block');
335
+ if (!(block instanceof HTMLElement)) {
336
+ return;
337
+ }
338
+
339
+ const collapsed = this.frontmatterCollapsed;
340
+ const toggle = block.querySelector('.frontmatter-toggle');
341
+ const summary = block.querySelector('.frontmatter-summary');
342
+ const content = block.querySelector('.frontmatter-content');
343
+
344
+ block.dataset.collapsed = collapsed ? 'true' : 'false';
345
+ if (toggle instanceof HTMLButtonElement) {
346
+ toggle.setAttribute('aria-expanded', collapsed ? 'false' : 'true');
347
+ toggle.textContent = collapsed ? 'Show' : 'Hide';
348
+ }
349
+ if (summary instanceof HTMLElement) {
350
+ summary.hidden = !collapsed;
351
+ }
352
+ if (content instanceof HTMLElement) {
353
+ content.hidden = collapsed;
354
+ }
355
+ }
356
+
357
+ handleFrontmatterLayoutChange() {
358
+ this.outlineController.refresh();
359
+ this.onPreviewLayoutChange?.({
360
+ isLargeDocument: this.isLargeDocument,
361
+ renderVersion: this.activeRenderVersion,
362
+ stats: this.currentStats,
363
+ });
364
+ }
365
+
316
366
  preserveHydratedMermaidsForCommit() {
317
367
  this.mermaidHydrator.preserveHydratedShellsForCommit();
318
368
  }
@@ -1,4 +1,5 @@
1
1
  import {
2
+ isBaseFilePath,
2
3
  isMarkdownFilePath,
3
4
  supportsBacklinksForFilePath,
4
5
  } from '../../domain/file-kind.js';
@@ -12,6 +13,7 @@ export class WorkspaceChromeController {
12
13
  onRenderDrawioPreview,
13
14
  onFileOpenError,
14
15
  onFileOpenReady,
16
+ onRenderBasePreview,
15
17
  onRenderExcalidrawPreview,
16
18
  onRenderImagePreview,
17
19
  onSyncWrapToggle,
@@ -24,23 +26,24 @@ export class WorkspaceChromeController {
24
26
  showEditorLoading,
25
27
  stateStore,
26
28
  }) {
27
- this.beginDocumentLoad = beginDocumentLoad;
28
- this.getDisplayName = getDisplayName;
29
- this.loadBacklinks = loadBacklinks;
30
- this.onBeforeFileOpen = onBeforeFileOpen;
31
- this.onRenderDrawioPreview = onRenderDrawioPreview;
32
- this.onFileOpenError = onFileOpenError;
33
- this.onFileOpenReady = onFileOpenReady;
34
- this.onRenderExcalidrawPreview = onRenderExcalidrawPreview;
35
- this.onRenderImagePreview = onRenderImagePreview;
36
- this.onSyncWrapToggle = onSyncWrapToggle;
37
- this.onUpdateActiveFile = onUpdateActiveFile;
38
- this.onUpdateCurrentFile = onUpdateCurrentFile;
39
- this.onUpdateLobbyCurrentFile = onUpdateLobbyCurrentFile;
40
- this.onUpdateVisibleChrome = onUpdateVisibleChrome;
41
- this.onViewModeReset = onViewModeReset;
42
- this.renderPresence = renderPresence;
43
- this.showEditorLoading = showEditorLoading;
29
+ this.beginDocumentLoad = beginDocumentLoad ?? (() => {});
30
+ this.getDisplayName = getDisplayName ?? ((filePath) => filePath);
31
+ this.loadBacklinks = loadBacklinks ?? (() => {});
32
+ this.onBeforeFileOpen = onBeforeFileOpen ?? (() => {});
33
+ this.onRenderDrawioPreview = onRenderDrawioPreview ?? (() => {});
34
+ this.onFileOpenError = onFileOpenError ?? (() => {});
35
+ this.onFileOpenReady = onFileOpenReady ?? (() => {});
36
+ this.onRenderBasePreview = onRenderBasePreview ?? (() => {});
37
+ this.onRenderExcalidrawPreview = onRenderExcalidrawPreview ?? (() => {});
38
+ this.onRenderImagePreview = onRenderImagePreview ?? (() => {});
39
+ this.onSyncWrapToggle = onSyncWrapToggle ?? (() => {});
40
+ this.onUpdateActiveFile = onUpdateActiveFile ?? (() => {});
41
+ this.onUpdateCurrentFile = onUpdateCurrentFile ?? (() => {});
42
+ this.onUpdateLobbyCurrentFile = onUpdateLobbyCurrentFile ?? (() => {});
43
+ this.onUpdateVisibleChrome = onUpdateVisibleChrome ?? (() => {});
44
+ this.onViewModeReset = onViewModeReset ?? (() => {});
45
+ this.renderPresence = renderPresence ?? (() => {});
46
+ this.showEditorLoading = showEditorLoading ?? (() => {});
44
47
  this.stateStore = stateStore;
45
48
  }
46
49
 
@@ -75,16 +78,19 @@ export class WorkspaceChromeController {
75
78
  }
76
79
 
77
80
  finalizeFileOpen({
81
+ isBase = false,
78
82
  isDrawio = false,
79
83
  filePath,
80
84
  isExcalidraw = false,
81
85
  isImage = false,
82
- session = null,
83
86
  supportsBacklinks,
84
87
  }) {
85
88
  if (isExcalidraw) {
86
89
  this.onRenderExcalidrawPreview(filePath);
87
90
  }
91
+ if (isBase || isBaseFilePath(filePath)) {
92
+ this.onRenderBasePreview(filePath);
93
+ }
88
94
  if (isDrawio) {
89
95
  this.onRenderDrawioPreview(filePath);
90
96
  }
@@ -92,7 +98,7 @@ export class WorkspaceChromeController {
92
98
  this.onRenderImagePreview(filePath);
93
99
  }
94
100
  this.onSyncWrapToggle();
95
- if (supportsBacklinks && session) {
101
+ if (supportsBacklinks) {
96
102
  this.loadBacklinks(filePath);
97
103
  }
98
104
  }
@@ -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,27 +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');
94
102
 
103
+ this.backlinksPanel.setDisplayMode?.(usesHeaderBacklinks ? 'header' : 'dock');
104
+
105
+ this.elements.editorFindButton?.classList.toggle('hidden', !isMarkdown);
95
106
  this.elements.markdownToolbar?.classList.toggle('hidden', !isMarkdown);
96
107
  this.elements.exportMenuGroup?.classList.toggle('hidden', !isMarkdown);
97
- this.elements.outlineToggle?.classList.toggle('hidden', isDiagramFile || isImage);
108
+ this.elements.outlineToggle?.classList.toggle('hidden', isDiagramFile || isImage || isBase);
98
109
  this.elements.previewContent?.classList.toggle('is-mermaid-file-preview', isMermaid);
99
110
  this.elements.previewContent?.classList.toggle('is-plantuml-file-preview', isPlantUml);
100
111
 
101
- if ((isDrawio && drawioMode !== 'text') || isExcalidraw || isImage) {
112
+ if ((isDrawio && drawioMode !== 'text') || isExcalidraw || isImage || (isBase && preferPreviewForBase)) {
102
113
  this.layoutController.setView('preview', { persist: false });
103
114
  this.outlineController.close();
104
115
  this.backlinksPanel.clear();
@@ -227,6 +238,41 @@ export class WorkspacePreviewController {
227
238
  this.schedulePreviewLayoutSyncCallback({ delayMs: 0 });
228
239
  }
229
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
+
230
276
  renderTextFilePreview({ content = '' } = {}) {
231
277
  const previewElement = this.elements.previewContent;
232
278
  if (!previewElement) {