collabmd 0.1.30 → 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 (362) 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-B4sHHwWJ.js} +1 -1
  62. package/dist/client/assets/{drawioEditor-keSJVTcv.js → drawioEditor-DGpo2hcx.js} +2 -2
  63. package/dist/client/assets/editor-session-BKHEYkbY.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/{en-IQZW2TQM-CZeIyvu2.js → en-IQZW2TQM-CzlcEpq3.js} +1 -1
  66. package/dist/client/assets/{erDiagram-INFDFZHY-DlhPv4az.js → erDiagram-INFDFZHY-DlIf-fb7.js} +1 -1
  67. package/dist/client/assets/{es-ES-DYQHAD43-CReXU-Nn.js → es-ES-DYQHAD43-CyzL9Mni.js} +1 -1
  68. package/dist/client/assets/{eu-ES-QDSYU5Y3-jRpcaWwz.js → eu-ES-QDSYU5Y3-D2-x316S.js} +1 -1
  69. package/dist/client/assets/{excalidraw-editor-CBEWfuhb.js → excalidraw-editor-CHbeNZu6.js} +1 -1
  70. package/dist/client/assets/{excalidraw-mermaid-stub-efoh2lJm.js → excalidraw-mermaid-stub-Bwe-bKcT.js} +1 -1
  71. package/dist/client/assets/{excalidraw-scene-BL-OtvCd.js → excalidraw-scene-BF_bT1OL.js} +8 -8
  72. package/dist/client/assets/excalidrawEditor-BhaTX2Ko.js +2 -0
  73. package/dist/client/assets/export-page-PeexH2QK.js +39 -0
  74. package/dist/client/assets/exportDocument-CtZKWE2c.js +2 -0
  75. package/dist/client/assets/{exportDocument-CtX_4PSk.css → exportDocument-DmV7Gngb.css} +1 -1
  76. package/dist/client/assets/{fa-IR-26LZG4PM-DP8pJ8e3.js → fa-IR-26LZG4PM-D8-trU2x.js} +1 -1
  77. package/dist/client/assets/{factor-2uy-lXe_.js → factor-Cz-hzBGH.js} +1 -1
  78. package/dist/client/assets/{fi-FI-6YS4KDE4-BLUDpNOj.js → fi-FI-6YS4KDE4-CCdRVFDQ.js} +1 -1
  79. package/dist/client/assets/file-kind-DBptLlF_.js +1 -0
  80. package/dist/client/assets/{flowDiagram-PKNHOUZH-BU4MOSq8.js → flowDiagram-PKNHOUZH-C_t-mkwb.js} +1 -1
  81. package/dist/client/assets/{fr-FR-BRLLPTZC-BoZz3Pi8.js → fr-FR-BRLLPTZC-Dqq-O5T_.js} +1 -1
  82. package/dist/client/assets/{ganttDiagram-A5KZAMGK-CbX67lZu.js → ganttDiagram-A5KZAMGK-BtK9Tb--.js} +1 -1
  83. package/dist/client/assets/gitGraph-HDMCJU4V-CT7YfbD3.js +1 -0
  84. package/dist/client/assets/{gitGraphDiagram-K3NZZRJ6-DhyvWcW1.js → gitGraphDiagram-K3NZZRJ6-DULDLGiJ.js} +1 -1
  85. package/dist/client/assets/{gl-ES-OKUZTLYG-CaEvhjDi.js → gl-ES-OKUZTLYG-BK7pbLbm.js} +1 -1
  86. package/dist/client/assets/{graphlib-DSzYgMXB.js → graphlib-BgRST-Qg.js} +1 -1
  87. package/dist/client/assets/{he-IL-26MGYIU7-DYOchgy9.js → he-IL-26MGYIU7-C3BuYKyY.js} +1 -1
  88. package/dist/client/assets/{hi-IN-Q4ZOGTP2-yRs8g46n.js → hi-IN-Q4ZOGTP2-BEvXWXnH.js} +1 -1
  89. package/dist/client/assets/{hu-HU-P2OXPSN5-1skPmtgc.js → hu-HU-P2OXPSN5-BWWZeJNp.js} +1 -1
  90. package/dist/client/assets/{id-ID-2EIKXYN6-iUugQJd9.js → id-ID-2EIKXYN6-DxSKi_aJ.js} +1 -1
  91. package/dist/client/assets/image-XLNPCCAD-CFiKwiWK.js +1 -0
  92. package/dist/client/assets/index-D69HOZHr.css +1 -0
  93. package/dist/client/assets/{index-CywRKxsk.js → index-kPgEYvEX.js} +2 -2
  94. package/dist/client/assets/info-3K5VOQVL-DUpNyDC-.js +1 -0
  95. package/dist/client/assets/{infoDiagram-LFFYTUFH-Bap6MyHX.js → infoDiagram-LFFYTUFH-DFTI0nfs.js} +1 -1
  96. package/dist/client/assets/{isEmpty-C7iPDOO3.js → isEmpty-CVvRj8fj.js} +1 -1
  97. package/dist/client/assets/{ishikawaDiagram-PHBUUO56-DbftskqN.js → ishikawaDiagram-PHBUUO56-DpBuDpC6.js} +1 -1
  98. package/dist/client/assets/{it-IT-4CFKVXI2-a5DFhzuI.js → it-IT-4CFKVXI2-BmA8wW6q.js} +1 -1
  99. package/dist/client/assets/{ja-JP-MAND2Z4V-DwogHVKd.js → ja-JP-MAND2Z4V-CLS1jI9o.js} +1 -1
  100. package/dist/client/assets/javascript-UJe68_xi.js +1 -0
  101. package/dist/client/assets/{journeyDiagram-4ABVD52K-165YoX6B.js → journeyDiagram-4ABVD52K-DDur6iHm.js} +1 -1
  102. package/dist/client/assets/{kaa-HQRTCXTJ-p81XNRfH.js → kaa-HQRTCXTJ-W15DEDPz.js} +1 -1
  103. package/dist/client/assets/{kab-KAB-JKIKKTGH-mV5VzQZc.js → kab-KAB-JKIKKTGH-MLh1inqS.js} +1 -1
  104. package/dist/client/assets/{kanban-definition-K7BYSVSG-MlixoNyx.js → kanban-definition-K7BYSVSG-dA6NPLsg.js} +1 -1
  105. package/dist/client/assets/{kk-KZ-HXQ63ZFC-IIPX0GQv.js → kk-KZ-HXQ63ZFC-BtFrPeLs.js} +1 -1
  106. package/dist/client/assets/{km-KH-PKL3LSGX-D7WQFJuZ.js → km-KH-PKL3LSGX-xO5FyM9T.js} +1 -1
  107. package/dist/client/assets/{ko-KR-KXLREZX3-Bs1oLtJs.js → ko-KR-KXLREZX3-NZFoRybS.js} +1 -1
  108. package/dist/client/assets/{ku-TR-MJ4IER3X-DlxOs6aZ.js → ku-TR-MJ4IER3X-B5eVPIpK.js} +1 -1
  109. package/dist/client/assets/{line-D57TbKb7.js → line-B2GMovaI.js} +1 -1
  110. package/dist/client/assets/{linear-BIf852wI.js → linear-B2dOdA24.js} +1 -1
  111. package/dist/client/assets/{lt-LT-H6WFQ6FJ-xuo-3zKH.js → lt-LT-H6WFQ6FJ-D_7_OeJD.js} +1 -1
  112. package/dist/client/assets/{lv-LV-GOCK6SJW-C7S3M1nr.js → lv-LV-GOCK6SJW-CnpKr0oQ.js} +1 -1
  113. package/dist/client/assets/{main-CB97rY6B.js → main-DSxNTtD-.js} +219 -189
  114. package/dist/client/assets/{mermaid-parser.core-lf87rdG-.js → mermaid-parser.core-B1ogGcR8.js} +2 -2
  115. package/dist/client/assets/{mermaid-runtime-C4a7TrTS.js → mermaid-runtime-Bn8A6DGx.js} +3 -3
  116. package/dist/client/assets/{mindmap-definition-YRQLILUH-_YbQSc4Q.js → mindmap-definition-YRQLILUH-DjQcsPoe.js} +1 -1
  117. package/dist/client/assets/{mr-IN-IXVLDMEQ-BsoowyZT.js → mr-IN-IXVLDMEQ-Pht2X_GK.js} +1 -1
  118. package/dist/client/assets/{my-MM-YG6MYTTD-DCqwN_K_.js → my-MM-YG6MYTTD-Cgq4HhPO.js} +1 -1
  119. package/dist/client/assets/{nb-NO-XGWJISD2-CZ5ytLgj.js → nb-NO-XGWJISD2-Bn_Bk2un.js} +1 -1
  120. package/dist/client/assets/{nl-NL-XVDVCPNC-wADsdb-h.js → nl-NL-XVDVCPNC-YkWSJS94.js} +1 -1
  121. package/dist/client/assets/{nn-NO-EMX5MJX5-D9zIKTL2.js → nn-NO-EMX5MJX5-DhP5eZJ7.js} +1 -1
  122. package/dist/client/assets/{nsis-CUd4RnvJ.js → nsis-QPGhLAeY.js} +1 -1
  123. package/dist/client/assets/{oc-FR-ROEINTVO-BSbBugJB.js → oc-FR-ROEINTVO-D3udMPnr.js} +1 -1
  124. package/dist/client/assets/{ordinal-B0PAtOQ6.js → ordinal-Dz3y_j0K.js} +1 -1
  125. package/dist/client/assets/{pa-IN-ZYN6SUDY-1pFA_3Pb.js → pa-IN-ZYN6SUDY-CR5YzFig.js} +1 -1
  126. package/dist/client/assets/packet-RMMSAZCW-DEwNbIrA.js +1 -0
  127. package/dist/client/assets/percentages-5DKR754L-D7n4T776.js +1 -0
  128. package/dist/client/assets/pie-UPGHQEXC-D5M_lSjo.js +1 -0
  129. package/dist/client/assets/{pieDiagram-SKSYHLDU-CqCgXFom.js → pieDiagram-SKSYHLDU-jhHouFpk.js} +1 -1
  130. package/dist/client/assets/{pl-PL-6VTG7PHC-DyYw0u_z.js → pl-PL-6VTG7PHC-_wZuoIDM.js} +1 -1
  131. package/dist/client/assets/preview-render-compiler-BjLlHmiQ.js +35 -0
  132. package/dist/client/assets/preview-render-compiler-Duy_3IcP.js +1 -0
  133. package/dist/client/assets/{preview-render-worker-BVbVXXPS.js → preview-render-worker-B4dH2yxj.js} +22 -22
  134. package/dist/client/assets/{pt-BR-5YFKRR5G-DJCCBBDl.js → pt-BR-5YFKRR5G-M7gIm2Hi.js} +1 -1
  135. package/dist/client/assets/{pt-PT-GEIXXZ67-BPJd09Ax.js → pt-PT-GEIXXZ67-CcxWpkGj.js} +1 -1
  136. package/dist/client/assets/{pug-BqBF8qF7.js → pug-DkUcLYWt.js} +1 -1
  137. package/dist/client/assets/{quadrantDiagram-337W2JSQ-B8eMuhg4.js → quadrantDiagram-337W2JSQ-CYKgdx7K.js} +1 -1
  138. package/dist/client/assets/quick-switcher-controller-DcyllYpm.js +5 -0
  139. package/dist/client/assets/radar-KQ55EAFF-AU1qh3Bw.js +1 -0
  140. package/dist/client/assets/{requirementDiagram-Z7DCOOCP-B6POvqz4.js → requirementDiagram-Z7DCOOCP-D9SHxoW7.js} +1 -1
  141. package/dist/client/assets/{ro-RO-E2P6TFZI-DWVyTV7V.js → ro-RO-E2P6TFZI-qR9noVzP.js} +1 -1
  142. package/dist/client/assets/{room-COWSP--i.js → room-yJaBAoEU.js} +1 -1
  143. package/dist/client/assets/{ru-RU-YBIIY43T-Dyar7CYM.js → ru-RU-YBIIY43T-CE4S_RX8.js} +1 -1
  144. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-CXRga6Op.js → sankeyDiagram-WA2Y5GQK-CfHe3D6R.js} +1 -1
  145. package/dist/client/assets/{sequenceDiagram-2WXFIKYE-CeSFlFx5.js → sequenceDiagram-2WXFIKYE-CZsMMqAJ.js} +1 -1
  146. package/dist/client/assets/{si-LK-673C2CI2-C61aLrIy.js → si-LK-673C2CI2-Bv6Avh3z.js} +1 -1
  147. package/dist/client/assets/{sk-SK-CKZHQ4AP-BlFwOxRD.js → sk-SK-CKZHQ4AP-Cnlpp55z.js} +1 -1
  148. package/dist/client/assets/{sl-SI-557H2GWM-DcAVW-_t.js → sl-SI-557H2GWM-BfGq7AQF.js} +1 -1
  149. package/dist/client/assets/{stateDiagram-RAJIS63D-DbewhqwJ.js → stateDiagram-RAJIS63D-CoNZjTYV.js} +1 -1
  150. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-1zOw6NmQ.js +1 -0
  151. package/dist/client/assets/subset-shared.chunk-C9HjwTXy.js +1 -0
  152. package/dist/client/assets/{subset-worker.chunk-DVGT6bvR.js → subset-worker.chunk-BSCP6IiC.js} +1 -1
  153. package/dist/client/assets/{sv-SE-XOPKKDWS-BkhfOHzh.js → sv-SE-XOPKKDWS-B2_Vk-sp.js} +1 -1
  154. package/dist/client/assets/{ta-IN-XBH7DQI3-BIfwglZa.js → ta-IN-XBH7DQI3-BXQMZZIx.js} +1 -1
  155. package/dist/client/assets/{th-TH-TOCWH3R4-CkrxqVkf.js → th-TH-TOCWH3R4-C-ZIYMfH.js} +1 -1
  156. package/dist/client/assets/{timeline-definition-YZTLITO2-BXBHNWLQ.js → timeline-definition-YZTLITO2-DSe2mrG8.js} +1 -1
  157. package/dist/client/assets/{tr-TR-GXW6CYY5-CDdvG9rD.js → tr-TR-GXW6CYY5-dl702PMA.js} +1 -1
  158. package/dist/client/assets/treemap-KZPCXAKY-C9UI2fwP.js +1 -0
  159. package/dist/client/assets/{uk-UA-IJKTNUDG-DRHp0lWp.js → uk-UA-IJKTNUDG-CUYQvSSF.js} +1 -1
  160. package/dist/client/assets/{uz-UZ-TBZZEA4V-BIn-VE3Y.js → uz-UZ-TBZZEA4V-B9qw0PXX.js} +1 -1
  161. package/dist/client/assets/{vault-api-client-DIaCC56H.js → vault-api-client-BzHQseMN.js} +1 -1
  162. package/dist/client/assets/vault-utils-5Xr0MXCb.js +1 -0
  163. package/dist/client/assets/{vennDiagram-LZ73GAT5-C1hrSbf2.js → vennDiagram-LZ73GAT5-xSzaIpy1.js} +1 -1
  164. package/dist/client/assets/{vi-VN-MULSGNVB-Du7t5I0v.js → vi-VN-MULSGNVB-DqxZ_sVc.js} +1 -1
  165. package/dist/client/assets/{xychartDiagram-JWTSCODW-DhpWp8LV.js → xychartDiagram-JWTSCODW-C3vA70iJ.js} +1 -1
  166. package/dist/client/assets/{zh-CN-MVX3E32U-RcjS3rjt.js → zh-CN-MVX3E32U-BM0aLuGc.js} +1 -1
  167. package/dist/client/assets/{zh-HK-JNU5RLIE-g8UeEw5v.js → zh-HK-JNU5RLIE-dmG_YD0d.js} +1 -1
  168. package/dist/client/assets/{zh-TW-LENVCA6T-DwV25BqC.js → zh-TW-LENVCA6T-LFgbiOi3.js} +1 -1
  169. package/dist/client/drawio-editor.html +1 -1
  170. package/dist/client/excalidraw-editor.html +1 -1
  171. package/dist/client/export-document.html +3 -3
  172. package/dist/client/index.html +2 -2
  173. package/package.json +2 -1
  174. package/src/client/app/export-document.html +1 -1
  175. package/src/client/application/app-shell/workspace-feature.js +9 -0
  176. package/src/client/application/app-shell-elements.js +1 -0
  177. package/src/client/application/markdown-frontmatter.js +1 -56
  178. package/src/client/application/preview-render-compiler.js +50 -6
  179. package/src/client/application/workspace-chrome-controller.js +25 -19
  180. package/src/client/application/workspace-coordinator.js +9 -0
  181. package/src/client/application/workspace-preview-controller.js +48 -3
  182. package/src/client/bootstrap/collabmd-app-shell.js +26 -2
  183. package/src/client/domain/vault-paths.js +19 -0
  184. package/src/client/export/export-page.js +11 -3
  185. package/src/client/export/export-pipeline.js +77 -2
  186. package/src/client/infrastructure/editor-view-adapter.js +8 -5
  187. package/src/client/infrastructure/vault-api-client.js +54 -0
  188. package/src/client/presentation/app-shell-template.js +12 -0
  189. package/src/client/presentation/backlinks-panel.js +37 -11
  190. package/src/client/presentation/bases-preview-controller.js +444 -0
  191. package/src/client/presentation/file-action-controller.js +43 -0
  192. package/src/client/presentation/file-explorer-view.js +10 -2
  193. package/src/client/presentation/file-tree-state.js +9 -1
  194. package/src/client/presentation/quick-switcher-controller.js +54 -13
  195. package/src/client/styles/export-document.css +12 -0
  196. package/src/client/styles/features/backlinks.css +65 -3
  197. package/src/client/styles/features/preview-markdown.css +209 -0
  198. package/src/client/styles/layout/shell.css +8 -1
  199. package/src/client/styles/layout/view-modes.css +5 -0
  200. package/src/domain/file-kind.js +17 -2
  201. package/src/domain/wiki-link-resolver.js +41 -23
  202. package/src/domain/yaml-frontmatter.js +59 -0
  203. package/src/server/create-app-server.js +11 -2
  204. package/src/server/domain/backlink-index.js +102 -16
  205. package/src/server/domain/bases/base-query-service.js +2101 -0
  206. package/src/server/domain/collaboration/collaboration-document-store.js +13 -2
  207. package/src/server/domain/workspace-state.js +52 -0
  208. package/src/server/infrastructure/http/create-request-handler.js +2 -0
  209. package/src/server/infrastructure/http/create-vault-api-command-handler.js +5 -0
  210. package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
  211. package/src/server/infrastructure/http/create-vault-api-query-handler.js +66 -0
  212. package/src/server/infrastructure/persistence/path-utils.js +1 -1
  213. package/src/server/infrastructure/persistence/vault-content-adapter.js +6 -0
  214. package/src/server/infrastructure/persistence/vault-file-store.js +14 -0
  215. package/src/server/infrastructure/workspace/file-system-sync-service.js +110 -19
  216. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +15 -44
  217. package/dist/client/assets/architecture-PBZL5I3N-iRyVT2GQ.js +0 -1
  218. package/dist/client/assets/channel-s0w88EQN.js +0 -1
  219. package/dist/client/assets/chunk-GLR3WWYH-CQ1LryrI.js +0 -2
  220. package/dist/client/assets/chunk-HHEYEP7N-DOQ0PCdH.js +0 -1
  221. package/dist/client/assets/chunk-QZHKN3VN-B0v4d-CS.js +0 -1
  222. package/dist/client/assets/classDiagram-VBA2DB6C-BQqG4q1b.js +0 -1
  223. package/dist/client/assets/classDiagram-v2-RAHNMMFH-BUKbprX1.js +0 -1
  224. package/dist/client/assets/clone-C-n46MFF.js +0 -1
  225. package/dist/client/assets/dist-BqQjnEWr.js +0 -1
  226. package/dist/client/assets/editor-session-C9l9XwVg.js +0 -16
  227. package/dist/client/assets/excalidrawEditor-Ws-fwGOc.js +0 -2
  228. package/dist/client/assets/export-page-B6xYnwy7.js +0 -39
  229. package/dist/client/assets/exportDocument-8JBw0p8O.js +0 -2
  230. package/dist/client/assets/gitGraph-HDMCJU4V-kkuqHGSM.js +0 -1
  231. package/dist/client/assets/image-XLNPCCAD-B4wZgh-Y.js +0 -1
  232. package/dist/client/assets/index-R4OArFku.css +0 -1
  233. package/dist/client/assets/info-3K5VOQVL-DPN78whf.js +0 -1
  234. package/dist/client/assets/javascript-8DvdgifH.js +0 -1
  235. package/dist/client/assets/packet-RMMSAZCW-BymvQ5cQ.js +0 -1
  236. package/dist/client/assets/percentages-5DKR754L-CiI2D7zA.js +0 -1
  237. package/dist/client/assets/pie-UPGHQEXC-MmzJzWOE.js +0 -1
  238. package/dist/client/assets/preview-render-compiler-TmHpBDlh.js +0 -1
  239. package/dist/client/assets/preview-render-compiler-aYpnXmNm.js +0 -35
  240. package/dist/client/assets/quick-switcher-controller-DplOTsT3.js +0 -5
  241. package/dist/client/assets/radar-KQ55EAFF-CCohASSY.js +0 -1
  242. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-DbW-jVkS.js +0 -1
  243. package/dist/client/assets/subset-shared.chunk-CC_u8ICU.js +0 -1
  244. package/dist/client/assets/treemap-KZPCXAKY-9kxB0uNY.js +0 -1
  245. package/dist/client/assets/vault-utils-BW53lKl1.js +0 -1
  246. /package/dist/client/assets/{apl-QJCYYBkj.js → apl-C1JYSI8J.js} +0 -0
  247. /package/dist/client/assets/{array-DwdVlTkF.js → array-B3agRrCs.js} +0 -0
  248. /package/dist/client/assets/{asciiarmor-DNy0UPqh.js → asciiarmor-DHW75j1s.js} +0 -0
  249. /package/dist/client/assets/{asn1-CNPXj-s7.js → asn1-CQiG40kG.js} +0 -0
  250. /package/dist/client/assets/{asterisk-BwMdLpT2.js → asterisk-BWExh0n4.js} +0 -0
  251. /package/dist/client/assets/{brainfuck-C2gHT8aA.js → brainfuck-CTNFyOLg.js} +0 -0
  252. /package/dist/client/assets/{chunk-3PELD44J-CL87tpFo.js → chunk-3PELD44J-DymL2rGq.js} +0 -0
  253. /package/dist/client/assets/{chunk-A66AFZZU-DuceaGnc.js → chunk-A66AFZZU-BFHL744F.js} +0 -0
  254. /package/dist/client/assets/{chunk-AXZTUZBK-Cxfm7hmm.js → chunk-AXZTUZBK-DuMiJYO9.js} +0 -0
  255. /package/dist/client/assets/{chunk-SRAX5OIU-CC2mobFL.js → chunk-SRAX5OIU-CLVBQRWC.js} +0 -0
  256. /package/dist/client/assets/{clike-D5X7HJpo.js → clike-1_ZsiVV8.js} +0 -0
  257. /package/dist/client/assets/{clojure-BEDKZv_5.js → clojure-D-DYVqu7.js} +0 -0
  258. /package/dist/client/assets/{cmake-Y3shE7av.js → cmake-DtGL-Unu.js} +0 -0
  259. /package/dist/client/assets/{cobol-f-3TLk62.js → cobol-DP4QggbL.js} +0 -0
  260. /package/dist/client/assets/{coffeescript-C0XA9-xa.js → coffeescript-B_7eyHAa.js} +0 -0
  261. /package/dist/client/assets/{commonlisp-BOB6sIEu.js → commonlisp-COlJYiQT.js} +0 -0
  262. /package/dist/client/assets/{crystal-ByNgE_My.js → crystal-I_dE9xG-.js} +0 -0
  263. /package/dist/client/assets/{css-eaI-ENiR.js → css-CmhPNxBE.js} +0 -0
  264. /package/dist/client/assets/{cypher-CQ-dGGSi.js → cypher-DE6I2lIA.js} +0 -0
  265. /package/dist/client/assets/{cytoscape.esm-DBDRhUia.js → cytoscape.esm-Czjc507F.js} +0 -0
  266. /package/dist/client/assets/{d-D9pnu4Cr.js → d-BNkKjn0o.js} +0 -0
  267. /package/dist/client/assets/{defaultLocale-BWgun1yJ.js → defaultLocale-B_FbTTbl.js} +0 -0
  268. /package/dist/client/assets/{diff-z9q33Lo6.js → diff-BWuPUsEo.js} +0 -0
  269. /package/dist/client/assets/{dist-xO1ImhKz.js → dist-BU8uusJX.js} +0 -0
  270. /package/dist/client/assets/{dist-CsYRf4AV.js → dist-x7PIEmJu.js} +0 -0
  271. /package/dist/client/assets/{drawio-room-C592VDk7.js → drawio-room-DEivFyNV.js} +0 -0
  272. /package/dist/client/assets/{dtd-BDizf_te.js → dtd-C6brJFPg.js} +0 -0
  273. /package/dist/client/assets/{dylan-Bk__XCKW.js → dylan-Bft86ZSB.js} +0 -0
  274. /package/dist/client/assets/{ebnf-SzN4Kxtp.js → ebnf-D6ifG44A.js} +0 -0
  275. /package/dist/client/assets/{ecl-5ulxiKbt.js → ecl-M7Iek4lq.js} +0 -0
  276. /package/dist/client/assets/{eiffel-Bhoaqbb6.js → eiffel-DwxtewZF.js} +0 -0
  277. /package/dist/client/assets/{elm-C3je846J.js → elm-B1TncobV.js} +0 -0
  278. /package/dist/client/assets/{erlang-Cgk9SIAz.js → erlang-BDJZNtt8.js} +0 -0
  279. /package/dist/client/assets/{excalidraw-mermaid-stub-B_2dv3Ll.js → excalidraw-mermaid-stub-BZPU4ZhU.js} +0 -0
  280. /package/dist/client/assets/{fcl-dvkZwp9p.js → fcl-BWKK0S4-.js} +0 -0
  281. /package/dist/client/assets/{forth-DmfSa3jN.js → forth-nvhcMz63.js} +0 -0
  282. /package/dist/client/assets/{fortran-BsZAiNnN.js → fortran-BZID-z10.js} +0 -0
  283. /package/dist/client/assets/{gas-DBpKE9ut.js → gas-DjQsZDGE.js} +0 -0
  284. /package/dist/client/assets/{gherkin-CceEbBs7.js → gherkin-S0kHlzux.js} +0 -0
  285. /package/dist/client/assets/{groovy-CxJnDvES.js → groovy-BEKazBrO.js} +0 -0
  286. /package/dist/client/assets/{haskell-CUSb34Xy.js → haskell-C6qH3-aI.js} +0 -0
  287. /package/dist/client/assets/{haxe-6EHO_h-N.js → haxe-BY9d_5nB.js} +0 -0
  288. /package/dist/client/assets/{http-C3qcBpvG.js → http-DG1Y9fpK.js} +0 -0
  289. /package/dist/client/assets/{idl-C95wIO2I.js → idl-B64p3NTJ.js} +0 -0
  290. /package/dist/client/assets/{image-blob-reduce.esm-BaW4gpT9.js → image-blob-reduce.esm-DriR2zT9.js} +0 -0
  291. /package/dist/client/assets/{init-Bjj5fg68.js → init-DtLQcSuO.js} +0 -0
  292. /package/dist/client/assets/{isArrayLikeObject-Cmt1CYnI.js → isArrayLikeObject-BId_dPHM.js} +0 -0
  293. /package/dist/client/assets/{javascript-aWB87b1w.js → javascript-CdiVhQeA.js} +0 -0
  294. /package/dist/client/assets/{jsx-runtime-DiaMmmG6.js → jsx-runtime-C2p7wRmT.js} +0 -0
  295. /package/dist/client/assets/{julia-DF9PPAXG.js → julia-B22G9Bym.js} +0 -0
  296. /package/dist/client/assets/{katex-BPsFnA3D.js → katex-CXYULLWy.js} +0 -0
  297. /package/dist/client/assets/{livescript-CnOyWwUY.js → livescript-CkcuHqeS.js} +0 -0
  298. /package/dist/client/assets/{lua-a0rEq19C.js → lua-kutgyRGY.js} +0 -0
  299. /package/dist/client/assets/{math-BaavbII8.js → math-B-LMBwub.js} +0 -0
  300. /package/dist/client/assets/{mathematica-CKUq0Ojc.js → mathematica-CKVhKnoY.js} +0 -0
  301. /package/dist/client/assets/{mbox-a-u2PLog.js → mbox-DANyzFJ2.js} +0 -0
  302. /package/dist/client/assets/{mirc-BOd43sOX.js → mirc-BVG2S5rO.js} +0 -0
  303. /package/dist/client/assets/{mllike-fHruGivh.js → mllike-C0p7lv48.js} +0 -0
  304. /package/dist/client/assets/{modelica-B0NJqf1C.js → modelica-vJ-Qa9jV.js} +0 -0
  305. /package/dist/client/assets/{mscgen-DJZ33SrF.js → mscgen-vUD-SWGJ.js} +0 -0
  306. /package/dist/client/assets/{mumps-DvMvHTxU.js → mumps-D0KfUTSd.js} +0 -0
  307. /package/dist/client/assets/{nginx-BVAs8laz.js → nginx-DkVceJrH.js} +0 -0
  308. /package/dist/client/assets/{ntriples-DrdyAZU1.js → ntriples-BBuCIfS0.js} +0 -0
  309. /package/dist/client/assets/{octave-_YqJ0g7E.js → octave-BTv2CqSQ.js} +0 -0
  310. /package/dist/client/assets/{oz-k7T3LoMr.js → oz-D8SjVDNU.js} +0 -0
  311. /package/dist/client/assets/{pascal-CftsTvte.js → pascal-T-tfhVyx.js} +0 -0
  312. /package/dist/client/assets/{path-BUmMWM1-.js → path-DIlZIGue.js} +0 -0
  313. /package/dist/client/assets/{perl-CbsLFc7A.js → perl-BDrCkHRd.js} +0 -0
  314. /package/dist/client/assets/{pica-By-YDy_B.js → pica-C1TdTz-C.js} +0 -0
  315. /package/dist/client/assets/{pig-C-jTwMS-.js → pig-BEyI4fPq.js} +0 -0
  316. /package/dist/client/assets/{powershell-DqXLgSHX.js → powershell-DtnFc6GG.js} +0 -0
  317. /package/dist/client/assets/{preview-diagram-utils-Dc83ucbv.js → preview-diagram-utils-COt-IYMD.js} +0 -0
  318. /package/dist/client/assets/{preview-render-profile-DPzmho7I.js → preview-render-profile-CR4dJZrp.js} +0 -0
  319. /package/dist/client/assets/{properties-05jaw55P.js → properties-DWUvbxV9.js} +0 -0
  320. /package/dist/client/assets/{protobuf-DThTsZQN.js → protobuf-CQGoYyfE.js} +0 -0
  321. /package/dist/client/assets/{puppet-DuHxMpoj.js → puppet-Dd-qWO3p.js} +0 -0
  322. /package/dist/client/assets/{python-BiE2VHJI.js → python-CZtTmYkS.js} +0 -0
  323. /package/dist/client/assets/{q-DH46YfNw.js → q-I27iQntV.js} +0 -0
  324. /package/dist/client/assets/{r-DmEm46kJ.js → r-DN_EydfL.js} +0 -0
  325. /package/dist/client/assets/{rough.esm-jZQkcmER.js → rough.esm-DE_lJ5Ge.js} +0 -0
  326. /package/dist/client/assets/{roundRect-CI6UmGg6.js → roundRect-BzEouiv_.js} +0 -0
  327. /package/dist/client/assets/{rpm-DILIIbRB.js → rpm-CjWxLM68.js} +0 -0
  328. /package/dist/client/assets/{ruby-2LcnHEMS.js → ruby-CB34f2Gf.js} +0 -0
  329. /package/dist/client/assets/{runtime-config-CqX_f_Q4.js → runtime-config-CqhchMC4.js} +0 -0
  330. /package/dist/client/assets/{sas-Bn81MKuB.js → sas-Bji4HDQq.js} +0 -0
  331. /package/dist/client/assets/{scheme-B8kPNbgd.js → scheme-C3elI80V.js} +0 -0
  332. /package/dist/client/assets/{shell-CGj6v8kb.js → shell-DUveK2Hb.js} +0 -0
  333. /package/dist/client/assets/{sieve-CfVNFN1K.js → sieve-2ogwMVx4.js} +0 -0
  334. /package/dist/client/assets/{simple-mode-_FSHdiXs.js → simple-mode-pOKc0mfx.js} +0 -0
  335. /package/dist/client/assets/{smalltalk-BpIFyCPt.js → smalltalk-BuGhc6lW.js} +0 -0
  336. /package/dist/client/assets/{solr-B7iFaetn.js → solr-DTxshpm8.js} +0 -0
  337. /package/dist/client/assets/{sparql-COhgMTFK.js → sparql-BOvq0dv7.js} +0 -0
  338. /package/dist/client/assets/{spreadsheet-BzuffEeg.js → spreadsheet-C6Vbtl9-.js} +0 -0
  339. /package/dist/client/assets/{sql-13lT5zDl.js → sql-DDFeQNTK.js} +0 -0
  340. /package/dist/client/assets/{src-E3c2cohN.js → src-Pgt9Gp65.js} +0 -0
  341. /package/dist/client/assets/{stex-BRSfZZYG.js → stex-CEwW0Q_0.js} +0 -0
  342. /package/dist/client/assets/{stylus-fFo0QRk_.js → stylus-D1SZIMDs.js} +0 -0
  343. /package/dist/client/assets/{swift-wb5gyb6a.js → swift-BCxe4-cw.js} +0 -0
  344. /package/dist/client/assets/{tcl-BJA7GgWY.js → tcl-SPk7uiDB.js} +0 -0
  345. /package/dist/client/assets/{textile-BQjiYu-x.js → textile-C48beRus.js} +0 -0
  346. /package/dist/client/assets/{tiddlywiki-D2vUXB6n.js → tiddlywiki-CiImjFLN.js} +0 -0
  347. /package/dist/client/assets/{tiki-BFhpdznG.js → tiki-HkXZ4BIW.js} +0 -0
  348. /package/dist/client/assets/{toml-DN06iQUw.js → toml-BmfpMy1_.js} +0 -0
  349. /package/dist/client/assets/{troff-DuQfjhPH.js → troff-BjbEOT5E.js} +0 -0
  350. /package/dist/client/assets/{ttcn-BCTy6d50.js → ttcn-NA-V4KnY.js} +0 -0
  351. /package/dist/client/assets/{ttcn-cfg-BYnZQqGa.js → ttcn-cfg-TPHncdGN.js} +0 -0
  352. /package/dist/client/assets/{turtle-BvN-Me9x.js → turtle-GBz_E4RG.js} +0 -0
  353. /package/dist/client/assets/{vb-DYk3wW9u.js → vb-C19AQWqO.js} +0 -0
  354. /package/dist/client/assets/{vbscript-BKI61VS6.js → vbscript-CHJk3s95.js} +0 -0
  355. /package/dist/client/assets/{velocity-BrtitHHA.js → velocity-Ya0P4sQU.js} +0 -0
  356. /package/dist/client/assets/{verilog-CjUx3yiL.js → verilog-C4wTycyo.js} +0 -0
  357. /package/dist/client/assets/{vhdl-CPWwYF4V.js → vhdl-Bwndeg44.js} +0 -0
  358. /package/dist/client/assets/{webidl-PiVOzma8.js → webidl-DttrYZRT.js} +0 -0
  359. /package/dist/client/assets/{xquery-CiTzM_oK.js → xquery-CEDTd8qs.js} +0 -0
  360. /package/dist/client/assets/{yacas-4QS9CntY.js → yacas-C7dxlPB0.js} +0 -0
  361. /package/dist/client/assets/{yjs-provider-reset-guard-DWGhQClh.js → yjs-provider-reset-guard-CtERLBID.js} +0 -0
  362. /package/dist/client/assets/{z80-BxidrTKR.js → z80-BqEfFSnA.js} +0 -0
@@ -1,9 +1,10 @@
1
1
  import {
2
+ isBaseFilePath,
2
3
  isDrawioFilePath,
3
4
  isExcalidrawFilePath,
5
+ isMarkdownFilePath,
4
6
  isMermaidFilePath,
5
7
  isPlantUmlFilePath,
6
- supportsBacklinksForFilePath,
7
8
  } from '../../../domain/file-kind.js';
8
9
 
9
10
  function assertWriteSucceeded(result, operation, filePath) {
@@ -54,6 +55,10 @@ export class CollaborationDocumentStore {
54
55
  return this.vaultFileStore.readExcalidrawFile(this.name);
55
56
  }
56
57
 
58
+ if (isBaseFilePath(this.name) && typeof this.vaultFileStore.readBaseFile === 'function') {
59
+ return this.vaultFileStore.readBaseFile(this.name);
60
+ }
61
+
57
62
  if (isDrawioFilePath(this.name) && typeof this.vaultFileStore.readDrawioFile === 'function') {
58
63
  return this.vaultFileStore.readDrawioFile(this.name);
59
64
  }
@@ -99,7 +104,7 @@ export class CollaborationDocumentStore {
99
104
  await this.writeSnapshot(snapshot);
100
105
  }
101
106
 
102
- if (this.backlinkIndex && supportsBacklinksForFilePath(this.name)) {
107
+ if (this.backlinkIndex && isMarkdownFilePath(this.name)) {
103
108
  this.backlinkIndex.updateFile(this.name, content);
104
109
  }
105
110
  }
@@ -122,6 +127,12 @@ export class CollaborationDocumentStore {
122
127
  return;
123
128
  }
124
129
 
130
+ if (isBaseFilePath(this.name) && typeof this.vaultFileStore.writeBaseFile === 'function') {
131
+ const result = await this.vaultFileStore.writeBaseFile(this.name, content, options);
132
+ assertWriteSucceeded(result, 'write content', this.name);
133
+ return;
134
+ }
135
+
125
136
  if (isMermaidFilePath(this.name) && typeof this.vaultFileStore.writeMermaidFile === 'function') {
126
137
  const result = await this.vaultFileStore.writeMermaidFile(this.name, content, options);
127
138
  assertWriteSucceeded(result, 'write content', this.name);
@@ -0,0 +1,52 @@
1
+ import { isMarkdownFilePath, isVaultFilePath } from '../../domain/file-kind.js';
2
+
3
+ function compareWorkspacePaths(left = '', right = '') {
4
+ return String(left).localeCompare(String(right), undefined, { sensitivity: 'base' });
5
+ }
6
+
7
+ export function collectWorkspaceStateStats(entries = new Map(), metadata = new Map()) {
8
+ const filePaths = [];
9
+ const markdownPaths = [];
10
+ let vaultFileCount = 0;
11
+
12
+ entries.forEach((entry, pathValue) => {
13
+ const entryType = entry?.type ?? entry?.nodeType ?? metadata.get(pathValue)?.type ?? '';
14
+ if (entryType === 'directory') {
15
+ return;
16
+ }
17
+
18
+ vaultFileCount += 1;
19
+ if (isVaultFilePath(pathValue)) {
20
+ filePaths.push(pathValue);
21
+ }
22
+ if (isMarkdownFilePath(pathValue)) {
23
+ markdownPaths.push(pathValue);
24
+ }
25
+ });
26
+
27
+ filePaths.sort(compareWorkspacePaths);
28
+ markdownPaths.sort(compareWorkspacePaths);
29
+
30
+ return {
31
+ filePaths,
32
+ markdownPaths,
33
+ vaultFileCount,
34
+ };
35
+ }
36
+
37
+ export function createWorkspaceStateSnapshot(entries = new Map(), metadata = new Map(), {
38
+ scannedAt = Date.now(),
39
+ } = {}) {
40
+ const normalizedEntries = entries instanceof Map ? entries : new Map(entries ?? []);
41
+ const normalizedMetadata = metadata instanceof Map ? metadata : new Map(metadata ?? []);
42
+ const stats = collectWorkspaceStateStats(normalizedEntries, normalizedMetadata);
43
+
44
+ return {
45
+ entries: normalizedEntries,
46
+ filePaths: stats.filePaths,
47
+ markdownPaths: stats.markdownPaths,
48
+ metadata: normalizedMetadata,
49
+ scannedAt,
50
+ vaultFileCount: stats.vaultFileCount,
51
+ };
52
+ }
@@ -40,6 +40,7 @@ export function createRequestHandler(
40
40
  authService,
41
41
  vaultFileStore,
42
42
  backlinkIndex,
43
+ baseQueryService = null,
43
44
  docxExporter = null,
44
45
  roomRegistry = null,
45
46
  plantUmlRenderer = null,
@@ -60,6 +61,7 @@ export function createRequestHandler(
60
61
  workspaceMutationCoordinator,
61
62
  });
62
63
  const handleVaultApi = createVaultApiHandler({
64
+ baseQueryService,
63
65
  backlinkIndex,
64
66
  docxExporter,
65
67
  plantUmlRenderer,
@@ -1,4 +1,5 @@
1
1
  import {
2
+ isBaseFilePath,
2
3
  isDrawioFilePath,
3
4
  isExcalidrawFilePath,
4
5
  isMermaidFilePath,
@@ -55,6 +56,10 @@ function selectWriteOperation(vaultFileStore, filePath, content) {
55
56
  return vaultFileStore.writeExcalidrawFile(filePath, content);
56
57
  }
57
58
 
59
+ if (isBaseFilePath(filePath)) {
60
+ return vaultFileStore.writeBaseFile(filePath, content);
61
+ }
62
+
58
63
  if (isDrawioFilePath(filePath)) {
59
64
  return vaultFileStore.writeDrawioFile(filePath, content);
60
65
  }
@@ -3,6 +3,7 @@ import { createVaultApiCommandHandler } from './create-vault-api-command-handler
3
3
  import { createVaultApiQueryHandler } from './create-vault-api-query-handler.js';
4
4
 
5
5
  export function createVaultApiHandler({
6
+ baseQueryService = null,
6
7
  backlinkIndex,
7
8
  docxExporter = null,
8
9
  plantUmlRenderer = null,
@@ -11,6 +12,7 @@ export function createVaultApiHandler({
11
12
  workspaceMutationCoordinator = null,
12
13
  }) {
13
14
  const handleVaultApiQuery = createVaultApiQueryHandler({
15
+ baseQueryService,
14
16
  backlinkIndex,
15
17
  vaultFileStore,
16
18
  workspaceMutationCoordinator,
@@ -1,12 +1,14 @@
1
1
  import { basename } from 'node:path';
2
2
 
3
3
  import {
4
+ isBaseFilePath,
4
5
  isDrawioFilePath,
5
6
  isExcalidrawFilePath,
6
7
  isImageAttachmentFilePath,
7
8
  isMermaidFilePath,
8
9
  isPlantUmlFilePath,
9
10
  } from '../../../domain/file-kind.js';
11
+ import { parseJsonBody } from './request-body.js';
10
12
  import { jsonResponse, sendResponse } from './http-response.js';
11
13
 
12
14
  const SVG_MIME_TYPE = 'image/svg+xml';
@@ -46,6 +48,10 @@ function selectReadOperation(vaultFileStore, filePath) {
46
48
  return vaultFileStore.readExcalidrawFile(filePath);
47
49
  }
48
50
 
51
+ if (isBaseFilePath(filePath)) {
52
+ return vaultFileStore.readBaseFile(filePath);
53
+ }
54
+
49
55
  if (isDrawioFilePath(filePath)) {
50
56
  return vaultFileStore.readDrawioFile(filePath);
51
57
  }
@@ -62,11 +68,71 @@ function selectReadOperation(vaultFileStore, filePath) {
62
68
  }
63
69
 
64
70
  export function createVaultApiQueryHandler({
71
+ baseQueryService = null,
65
72
  backlinkIndex,
66
73
  vaultFileStore,
67
74
  workspaceMutationCoordinator = null,
68
75
  }) {
69
76
  return async function handleVaultApiQuery(req, res, requestUrl) {
77
+ if (requestUrl.pathname === '/api/base/query' && req.method === 'POST') {
78
+ try {
79
+ if (!baseQueryService?.query) {
80
+ jsonResponse(req, res, 503, { error: 'Bases query service is unavailable' });
81
+ return true;
82
+ }
83
+
84
+ const body = await parseJsonBody(req);
85
+ const result = await baseQueryService.query({
86
+ activeFilePath: body?.activeFilePath ?? '',
87
+ basePath: body?.path ?? '',
88
+ search: body?.search ?? '',
89
+ source: typeof body?.source === 'string' ? body.source : null,
90
+ sourcePath: body?.sourcePath ?? '',
91
+ view: body?.view ?? '',
92
+ });
93
+
94
+ jsonResponse(req, res, 200, { ok: true, result });
95
+ } catch (error) {
96
+ console.error('[api] Failed to query base:', error.message);
97
+ jsonResponse(req, res, 400, { error: error.message || 'Failed to query base' });
98
+ }
99
+ return true;
100
+ }
101
+
102
+ if (requestUrl.pathname === '/api/base/export' && req.method === 'POST') {
103
+ try {
104
+ if (!baseQueryService?.query) {
105
+ jsonResponse(req, res, 503, { error: 'Bases query service is unavailable' });
106
+ return true;
107
+ }
108
+
109
+ const body = await parseJsonBody(req);
110
+ const result = await baseQueryService.query({
111
+ activeFilePath: body?.activeFilePath ?? '',
112
+ basePath: body?.path ?? '',
113
+ search: body?.search ?? '',
114
+ source: typeof body?.source === 'string' ? body.source : null,
115
+ sourcePath: body?.sourcePath ?? '',
116
+ view: body?.view ?? '',
117
+ });
118
+ const fileName = basename(String(body?.path || body?.sourcePath || 'base')).replace(/\.[^.]+$/u, '') || 'base';
119
+ sendResponse(req, res, {
120
+ body: result.csv,
121
+ headers: {
122
+ 'Cache-Control': 'no-store',
123
+ 'Content-Disposition': `attachment; filename="${createSafeAsciiFilename(`${fileName}.csv`)}"; filename*=UTF-8''${encodeContentDispositionFilename(`${fileName}.csv`)}`,
124
+ 'Content-Type': 'text/csv; charset=utf-8',
125
+ 'X-Content-Type-Options': 'nosniff',
126
+ },
127
+ statusCode: 200,
128
+ });
129
+ } catch (error) {
130
+ console.error('[api] Failed to export base CSV:', error.message);
131
+ jsonResponse(req, res, 400, { error: error.message || 'Failed to export base CSV' });
132
+ }
133
+ return true;
134
+ }
135
+
70
136
  if (requestUrl.pathname === '/api/files' && req.method === 'GET') {
71
137
  try {
72
138
  const tree = workspaceMutationCoordinator?.getWorkspaceTree?.() ?? await vaultFileStore.tree();
@@ -3,7 +3,7 @@ import { isAbsolute, normalize, relative, resolve } from 'path';
3
3
  import { isVaultFilePath } from '../../../domain/file-kind.js';
4
4
 
5
5
  export const IGNORED_DIRECTORIES = new Set(['.git', '.obsidian', '.trash', 'node_modules', '.DS_Store']);
6
- export const VAULT_FILE_PATH_REQUIREMENT = '.md, .excalidraw, .drawio, .mmd, .mermaid, .puml, .plantuml, .png, .jpg, .jpeg, .webp, .gif, or .svg';
6
+ export const VAULT_FILE_PATH_REQUIREMENT = '.md, .base, .excalidraw, .drawio, .mmd, .mermaid, .puml, .plantuml, .png, .jpg, .jpeg, .webp, .gif, or .svg';
7
7
  export const INVALID_VAULT_FILE_PATH_ERROR = `Invalid file path — must end in ${VAULT_FILE_PATH_REQUIREMENT}`;
8
8
  export const INVALID_DIRECTORY_PATH_ERROR = 'Invalid directory path';
9
9
 
@@ -1,4 +1,5 @@
1
1
  import {
2
+ isBaseFilePath,
2
3
  isDrawioFilePath,
3
4
  isExcalidrawFilePath,
4
5
  isMarkdownFilePath,
@@ -28,6 +29,11 @@ const adapters = [
28
29
  kind: 'markdown',
29
30
  matches: isMarkdownFilePath,
30
31
  }),
32
+ new VaultContentAdapter({
33
+ invalidPathError: 'Invalid file path — must end in .base',
34
+ kind: 'base',
35
+ matches: isBaseFilePath,
36
+ }),
31
37
  new VaultContentAdapter({
32
38
  invalidPathError: 'Invalid file path — must end in .excalidraw',
33
39
  kind: 'excalidraw',
@@ -78,6 +78,7 @@ function createWorkspaceEntry(relativePath, type) {
78
78
 
79
79
  function createWorkspaceMetadata(pathValue, type, info) {
80
80
  return {
81
+ ctimeMs: Number(info.ctimeMs || 0),
81
82
  inode: Number(info.ino || 0),
82
83
  mtimeMs: Number(info.mtimeMs || 0),
83
84
  path: pathValue,
@@ -335,6 +336,10 @@ export class VaultFileStore {
335
336
  return this.readContentFile(filePath, 'markdown');
336
337
  }
337
338
 
339
+ async readBaseFile(filePath) {
340
+ return this.readContentFile(filePath, 'base');
341
+ }
342
+
338
343
  async readExcalidrawFile(filePath) {
339
344
  return this.readContentFile(filePath, 'excalidraw');
340
345
  }
@@ -377,6 +382,10 @@ export class VaultFileStore {
377
382
  return this.writeContentFile(filePath, content, 'markdown', options);
378
383
  }
379
384
 
385
+ async writeBaseFile(filePath, content, options = {}) {
386
+ return this.writeContentFile(filePath, content, 'base', options);
387
+ }
388
+
380
389
  async writeExcalidrawFile(filePath, content, options = {}) {
381
390
  return this.writeContentFile(filePath, content, 'excalidraw', options);
382
391
  }
@@ -858,6 +867,7 @@ export class VaultFileStore {
858
867
 
859
868
  async scanWorkspaceState() {
860
869
  const entries = new Map();
870
+ const filePaths = [];
861
871
  const metadata = new Map();
862
872
  const markdownPaths = [];
863
873
  let vaultFileCount = 0;
@@ -901,6 +911,7 @@ export class VaultFileStore {
901
911
  }
902
912
 
903
913
  entries.set(relativePath, createWorkspaceEntry(relativePath, 'file'));
914
+ filePaths.push(relativePath);
904
915
  vaultFileCount += 1;
905
916
  if (isMarkdownFilePath(relativePath)) {
906
917
  markdownPaths.push(relativePath);
@@ -929,6 +940,7 @@ export class VaultFileStore {
929
940
 
930
941
  entries.set(relativePath, createWorkspaceEntry(relativePath, 'file'));
931
942
  metadata.set(relativePath, createWorkspaceMetadata(relativePath, 'file', info));
943
+ filePaths.push(relativePath);
932
944
  vaultFileCount += 1;
933
945
  if (isMarkdownFilePath(relativePath)) {
934
946
  markdownPaths.push(relativePath);
@@ -940,10 +952,12 @@ export class VaultFileStore {
940
952
  };
941
953
 
942
954
  await visitDirectory(this.vaultDir);
955
+ filePaths.sort((left, right) => left.localeCompare(right, undefined, { sensitivity: 'base' }));
943
956
  markdownPaths.sort((left, right) => left.localeCompare(right, undefined, { sensitivity: 'base' }));
944
957
 
945
958
  return {
946
959
  entries,
960
+ filePaths,
947
961
  metadata,
948
962
  markdownPaths,
949
963
  scannedAt: Date.now(),
@@ -5,6 +5,7 @@ import { basename, dirname, join } from 'path';
5
5
  import { createWorkspaceChange } from '../../../domain/workspace-change.js';
6
6
  import { getVaultTreeNodeType, isVaultFilePath } from '../../../domain/file-kind.js';
7
7
  import { logPerfEvent } from '../../config/perf-logging.js';
8
+ import { createWorkspaceStateSnapshot } from '../../domain/workspace-state.js';
8
9
  import {
9
10
  isIgnoredVaultEntry,
10
11
  sanitizeVaultPath,
@@ -88,6 +89,67 @@ function isPathWithinPrefix(pathValue, prefix) {
88
89
  return pathValue === prefix || pathValue.startsWith(`${prefix}/`);
89
90
  }
90
91
 
92
+ function collectAncestorPaths(pathValue = '') {
93
+ const normalizedPath = normalizeWorkspacePath(pathValue);
94
+ if (!normalizedPath) {
95
+ return [];
96
+ }
97
+
98
+ const segments = normalizedPath.split('/').filter(Boolean);
99
+ const ancestors = [];
100
+ let currentPath = '';
101
+ for (let index = 0; index < Math.max(segments.length - 1, 0); index += 1) {
102
+ currentPath = currentPath ? `${currentPath}/${segments[index]}` : segments[index];
103
+ ancestors.push(currentPath);
104
+ }
105
+
106
+ return ancestors;
107
+ }
108
+
109
+ function collapsePendingPaths(paths = []) {
110
+ const collapsed = [];
111
+ for (const pathValue of sortByPath(paths.filter(Boolean))) {
112
+ if (collapsed.some((existingPath) => isPathWithinPrefix(pathValue, existingPath))) {
113
+ continue;
114
+ }
115
+
116
+ collapsed.push(pathValue);
117
+ }
118
+
119
+ return collapsed;
120
+ }
121
+
122
+ function collectPathsWithinPrefixes(paths = [], prefixes = []) {
123
+ const collected = new Set();
124
+ for (const pathValue of paths) {
125
+ if (prefixes.some((prefix) => isPathWithinPrefix(pathValue, prefix))) {
126
+ collected.add(pathValue);
127
+ }
128
+ }
129
+ return collected;
130
+ }
131
+
132
+ function createScopedWorkspaceState(sourceState, scopedPaths = new Set()) {
133
+ const entries = new Map();
134
+ const metadata = new Map();
135
+
136
+ scopedPaths.forEach((pathValue) => {
137
+ const entry = sourceState?.entries?.get(pathValue);
138
+ const entryMetadata = sourceState?.metadata?.get(pathValue);
139
+ if (entry) {
140
+ entries.set(pathValue, entry);
141
+ }
142
+ if (entryMetadata) {
143
+ metadata.set(pathValue, entryMetadata);
144
+ }
145
+ });
146
+
147
+ return {
148
+ entries,
149
+ metadata,
150
+ };
151
+ }
152
+
91
153
  function buildPrefixRenameEntries(previousState, nextState, oldPrefix, newPrefix) {
92
154
  const renames = [];
93
155
  previousState.metadata.forEach((entry, pathValue) => {
@@ -274,6 +336,25 @@ export class FileSystemSyncService {
274
336
  this.lastState = snapshot ?? this.mutationCoordinator.workspaceState ?? await this.vaultFileStore.scanWorkspaceState();
275
337
  }
276
338
 
339
+ async flushPendingChanges() {
340
+ clearTimeout(this.debounceTimer);
341
+ this.debounceTimer = null;
342
+
343
+ if (this.runningFlush) {
344
+ await this.runningFlush;
345
+ return;
346
+ }
347
+
348
+ if (this.pendingEventTypesByPath.size === 0 && !this.forceFullScan) {
349
+ return;
350
+ }
351
+
352
+ this.runningFlush = this.flush().finally(() => {
353
+ this.runningFlush = null;
354
+ });
355
+ await this.runningFlush;
356
+ }
357
+
277
358
  async readWorkspacePathSnapshot(pathValue) {
278
359
  const normalizedPath = normalizeWorkspacePath(pathValue);
279
360
  if (!normalizedPath) {
@@ -397,9 +478,7 @@ export class FileSystemSyncService {
397
478
  return { fallbackReason: 'missing-last-state', incrementalResult: null };
398
479
  }
399
480
 
400
- const pendingPaths = Array.from(this.pendingEventTypesByPath.keys())
401
- .filter(Boolean)
402
- .sort((left, right) => left.localeCompare(right, undefined, { sensitivity: 'base' }));
481
+ const pendingPaths = collapsePendingPaths(Array.from(this.pendingEventTypesByPath.keys()));
403
482
  if (pendingPaths.length === 0 || pendingPaths.length > MAX_INCREMENTAL_PENDING_PATHS) {
404
483
  return { fallbackReason: 'too-many-pending-paths', incrementalResult: null };
405
484
  }
@@ -407,19 +486,23 @@ export class FileSystemSyncService {
407
486
  const nextEntries = new Map(this.lastState.entries);
408
487
  const nextMetadata = new Map(this.lastState.metadata);
409
488
  const previousState = this.lastState;
489
+ const previousTouchedPaths = collectPathsWithinPrefixes(previousState.entries.keys(), pendingPaths);
490
+ const nextTouchedPaths = new Set();
410
491
 
411
- for (const pathValue of pendingPaths) {
412
- Array.from(previousState.entries.keys())
413
- .filter((candidatePath) => isPathWithinPrefix(candidatePath, pathValue))
414
- .forEach((candidatePath) => {
415
- nextEntries.delete(candidatePath);
416
- });
417
- Array.from(previousState.metadata.keys())
418
- .filter((candidatePath) => isPathWithinPrefix(candidatePath, pathValue))
419
- .forEach((candidatePath) => {
420
- nextMetadata.delete(candidatePath);
421
- });
492
+ pendingPaths.forEach((pathValue) => {
493
+ collectAncestorPaths(pathValue).forEach((ancestorPath) => {
494
+ if (previousState.entries.has(ancestorPath)) {
495
+ previousTouchedPaths.add(ancestorPath);
496
+ }
497
+ });
498
+ });
499
+
500
+ previousTouchedPaths.forEach((pathValue) => {
501
+ nextEntries.delete(pathValue);
502
+ nextMetadata.delete(pathValue);
503
+ });
422
504
 
505
+ for (const pathValue of pendingPaths) {
423
506
  const snapshot = await this.readWorkspacePathSnapshot(pathValue);
424
507
  if (!snapshot) {
425
508
  return { fallbackReason: 'snapshot-unavailable', incrementalResult: null };
@@ -429,22 +512,30 @@ export class FileSystemSyncService {
429
512
  if (!(await this.ensureAncestorDirectories(nextEntries, nextMetadata, pathValue))) {
430
513
  return { fallbackReason: 'ancestor-missing', incrementalResult: null };
431
514
  }
515
+
516
+ collectAncestorPaths(pathValue).forEach((ancestorPath) => {
517
+ if (nextEntries.has(ancestorPath)) {
518
+ nextTouchedPaths.add(ancestorPath);
519
+ }
520
+ });
432
521
  }
433
522
 
434
523
  snapshot.entries.forEach((entry, entryPath) => {
435
524
  nextEntries.set(entryPath, entry);
525
+ nextTouchedPaths.add(entryPath);
436
526
  });
437
527
  snapshot.metadata.forEach((metadata, metadataPath) => {
438
528
  nextMetadata.set(metadataPath, metadata);
439
529
  });
440
530
  }
441
531
 
442
- const nextState = {
443
- entries: nextEntries,
444
- metadata: nextMetadata,
532
+ const nextState = createWorkspaceStateSnapshot(nextEntries, nextMetadata, {
445
533
  scannedAt: Date.now(),
446
- };
447
- const workspaceChange = detectWorkspaceChange(this.lastState, nextState);
534
+ });
535
+ const workspaceChange = detectWorkspaceChange(
536
+ createScopedWorkspaceState(previousState, previousTouchedPaths),
537
+ createScopedWorkspaceState(nextState, nextTouchedPaths),
538
+ );
448
539
 
449
540
  return {
450
541
  fallbackReason: '',
@@ -8,6 +8,7 @@ import {
8
8
  normalizeWorkspaceEvent,
9
9
  } from '../../../domain/workspace-change.js';
10
10
  import { WORKSPACE_ROOM_NAME } from '../../../domain/workspace-room.js';
11
+ import { createWorkspaceStateSnapshot } from '../../domain/workspace-state.js';
11
12
  import { sanitizeVaultPath } from '../persistence/path-utils.js';
12
13
 
13
14
  function createEventId() {
@@ -193,11 +194,13 @@ function diffWorkspaceEntries(previousEntries = new Map(), nextEntries = new Map
193
194
  export class WorkspaceMutationCoordinator {
194
195
  constructor({
195
196
  backlinkIndex,
197
+ baseQueryService = null,
196
198
  roomRegistry,
197
199
  vaultFileStore,
198
200
  managedWriteWindowMs = 1200,
199
201
  }) {
200
202
  this.backlinkIndex = backlinkIndex ?? null;
203
+ this.baseQueryService = baseQueryService ?? null;
201
204
  this.roomRegistry = roomRegistry;
202
205
  this.vaultFileStore = vaultFileStore;
203
206
  this.managedWriteWindowMs = managedWriteWindowMs;
@@ -383,11 +386,9 @@ export class WorkspaceMutationCoordinator {
383
386
  nextMetadata.set(pathValue, nextPathState.metadata);
384
387
  }
385
388
 
386
- return {
387
- entries: nextEntries,
388
- metadata: nextMetadata,
389
+ return createWorkspaceStateSnapshot(nextEntries, nextMetadata, {
389
390
  scannedAt: Date.now(),
390
- };
391
+ });
391
392
  }
392
393
 
393
394
  getWorkspaceRoom() {
@@ -414,6 +415,7 @@ export class WorkspaceMutationCoordinator {
414
415
  async initialize({ snapshot = null } = {}) {
415
416
  const effectiveSnapshot = snapshot ?? await this.vaultFileStore.scanWorkspaceState();
416
417
  this.replaceWorkspaceState(effectiveSnapshot);
418
+ await this.baseQueryService?.initializeFromWorkspaceState?.(effectiveSnapshot);
417
419
  this.getWorkspaceRoom()?.replaceWorkspaceEntries(effectiveSnapshot.entries, {
418
420
  generatedAt: effectiveSnapshot.scannedAt,
419
421
  });
@@ -554,52 +556,17 @@ export class WorkspaceMutationCoordinator {
554
556
  return;
555
557
  }
556
558
 
557
- const previousEntries = this.workspaceState?.entries ?? new Map();
558
559
  if (
559
560
  forceRebuild
560
561
  || countBacklinkAffectedPaths(workspaceChange) > 25
561
562
  ) {
562
- this.backlinkIndex.scheduleBuild?.();
563
+ this.backlinkIndex.scheduleBuild?.({ workspaceState: nextState });
563
564
  return;
564
565
  }
565
-
566
- for (const pathValue of workspaceChange.deletedPaths ?? []) {
567
- if (supportsBacklinksForFilePath(pathValue)) {
568
- this.backlinkIndex.onFileDeleted(pathValue);
569
- }
570
- }
571
-
572
- for (const entry of workspaceChange.renamedPaths ?? []) {
573
- if (supportsBacklinksForFilePath(entry.oldPath) || supportsBacklinksForFilePath(entry.newPath)) {
574
- this.backlinkIndex.onFileRenamed(entry.oldPath, entry.newPath);
575
- }
576
- }
577
-
578
- for (const pathValue of workspaceChange.changedPaths ?? []) {
579
- if (!supportsBacklinksForFilePath(pathValue)) {
580
- continue;
581
- }
582
-
583
- const existsNow = nextState.entries.has(pathValue);
584
- const existedBefore = previousEntries.has(pathValue);
585
- if (!existsNow) {
586
- if (existedBefore) {
587
- this.backlinkIndex.onFileDeleted(pathValue);
588
- }
589
- continue;
590
- }
591
-
592
- const content = await this.vaultFileStore.readMarkdownFile(pathValue);
593
- if (content === null) {
594
- continue;
595
- }
596
-
597
- if (existedBefore) {
598
- this.backlinkIndex.updateFile(pathValue, content);
599
- } else {
600
- this.backlinkIndex.onFileCreated(pathValue, content);
601
- }
602
- }
566
+ await this.backlinkIndex.applyWorkspaceChange?.(workspaceChange, {
567
+ nextState,
568
+ previousState: this.workspaceState,
569
+ });
603
570
  }
604
571
 
605
572
  async apply({
@@ -624,6 +591,10 @@ export class WorkspaceMutationCoordinator {
624
591
  await this.reconcileBacklinks(normalizedChange, resolvedState, {
625
592
  forceRebuild: forceBacklinkRebuild,
626
593
  });
594
+ await this.baseQueryService?.applyWorkspaceChange?.(normalizedChange, {
595
+ nextState: resolvedState,
596
+ previousState,
597
+ });
627
598
 
628
599
  const roomEffects = await this.roomRegistry?.reconcileWorkspaceChange?.(normalizedChange) ?? {};
629
600
  const highlightRanges = normalizePaths(
@@ -1 +0,0 @@
1
- import"./chunk-XZSTWKYB-DDkpyNVE.js";import{n as e}from"./chunk-R5LLSJPH-BjSMFnTi.js";export{e as createArchitectureServices};
@@ -1 +0,0 @@
1
- import{it as e,rt as t}from"./chunk-7R4GIKGN-BMrp52Pk.js";var n=(n,r)=>e.lang.round(t.parse(n)[r]);export{n as t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./dagre-KLK3FWXG-CAG8WeES.js","./chunk-PU5JKC2W-t0zUh6E3.js","./src-E3c2cohN.js","./chunk-DpHwWhuW.js","./chunk-GEFDOKGD-DYHmaq-c.js","./dist-CsYRf4AV.js","./math-BaavbII8.js","./chunk-7R4GIKGN-BMrp52Pk.js","./preload-helper-Bo9GmnuQ.js","./isArrayLikeObject-Cmt1CYnI.js","./dagre-fvYjRtTE.js","./graphlib-DSzYgMXB.js","./isEmpty-C7iPDOO3.js","./_baseUniq-Bbn0_sHS.js","./_basePickBy-B6kIfhzj.js","./clone-C-n46MFF.js","./chunk-KYZI473N-D4r5eMJZ.js","./chunk-PQ6SQG4A-BY9_Srs_.js","./chunk-YBOYWFTD-CzyyfGQX.js","./rough.esm-jZQkcmER.js","./chunk-MX3YWQON-DqN0TF5Q.js","./chunk-O4XLMI2P-DaS3COAu.js","./line-D57TbKb7.js","./path-BUmMWM1-.js","./array-DwdVlTkF.js","./cose-bilkent-S5V4N54A-jZzFUguD.js","./cytoscape.esm-DBDRhUia.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Bo9GmnuQ.js";import{u as t}from"./chunk-GEFDOKGD-DYHmaq-c.js";import{g as n,h as r}from"./src-E3c2cohN.js";import{s as i,y as a}from"./chunk-7R4GIKGN-BMrp52Pk.js";import{a as o,i as s,s as c}from"./chunk-KYZI473N-D4r5eMJZ.js";import{a as l,i as u,n as d,r as f}from"./chunk-O4XLMI2P-DaS3COAu.js";var p={common:i,getConfig:a,insertCluster:s,insertEdge:d,insertEdgeLabel:f,insertMarkers:u,insertNode:o,interpolateToCurve:t,labelHelper:c,log:n,positionEdgeLabel:l},m={},h=r(e=>{for(let t of e)m[t.name]=t},`registerLayoutLoaders`);r(()=>{h([{name:`dagre`,loader:r(async()=>await e(()=>import(`./dagre-KLK3FWXG-CAG8WeES.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]),import.meta.url),`loader`)},...[{name:`cose-bilkent`,loader:r(async()=>await e(()=>import(`./cose-bilkent-S5V4N54A-jZzFUguD.js`),__vite__mapDeps([25,3,26,2]),import.meta.url),`loader`)}]])},`registerDefaultLayoutLoaders`)();var g=r(async(e,t)=>{if(!(e.layoutAlgorithm in m))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);let n=m[e.layoutAlgorithm];return(await n.loader()).render(e,t,p,{algorithm:n.algorithm})},`render`),_=r((e=``,{fallback:t=`dagre`}={})=>{if(e in m)return e;if(t in m)return n.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw Error(`Both layout algorithms ${e} and ${t} are not registered.`)},`getRegisteredLayoutAlgorithm`);export{h as n,g as r,_ as t};
@@ -1 +0,0 @@
1
- import{h as e,p as t}from"./src-E3c2cohN.js";import{b as n}from"./chunk-7R4GIKGN-BMrp52Pk.js";var r=e(e=>{let{securityLevel:r}=n(),i=t(`body`);return r===`sandbox`&&(i=t((t(`#i${e}`).node()?.contentDocument??document).body)),i.select(`#${e}`)},`selectSvgElement`);export{r as t};
@@ -1 +0,0 @@
1
- import{h as e}from"./src-E3c2cohN.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t};
@@ -1 +0,0 @@
1
- import"./chunk-GEFDOKGD-DYHmaq-c.js";import{h as e}from"./src-E3c2cohN.js";import"./chunk-7R4GIKGN-BMrp52Pk.js";import"./chunk-PU5JKC2W-t0zUh6E3.js";import"./chunk-FMBD7UC4-EWK5Pt4D.js";import"./chunk-MX3YWQON-DqN0TF5Q.js";import"./chunk-YBOYWFTD-CzyyfGQX.js";import"./chunk-JSJVCQXG-B69YGtcQ.js";import"./chunk-55IACEB6-039iVf6v.js";import"./chunk-KX2RTZJC-tuEC7hg1.js";import"./chunk-PQ6SQG4A-BY9_Srs_.js";import"./chunk-KYZI473N-D4r5eMJZ.js";import"./chunk-O4XLMI2P-DaS3COAu.js";import"./chunk-GLR3WWYH-CQ1LryrI.js";import{i as t,n,r,t as i}from"./chunk-WL4C6EOR-zSV-8h7F.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import"./chunk-GEFDOKGD-DYHmaq-c.js";import{h as e}from"./src-E3c2cohN.js";import"./chunk-7R4GIKGN-BMrp52Pk.js";import"./chunk-PU5JKC2W-t0zUh6E3.js";import"./chunk-FMBD7UC4-EWK5Pt4D.js";import"./chunk-MX3YWQON-DqN0TF5Q.js";import"./chunk-YBOYWFTD-CzyyfGQX.js";import"./chunk-JSJVCQXG-B69YGtcQ.js";import"./chunk-55IACEB6-039iVf6v.js";import"./chunk-KX2RTZJC-tuEC7hg1.js";import"./chunk-PQ6SQG4A-BY9_Srs_.js";import"./chunk-KYZI473N-D4r5eMJZ.js";import"./chunk-O4XLMI2P-DaS3COAu.js";import"./chunk-GLR3WWYH-CQ1LryrI.js";import{i as t,n,r,t as i}from"./chunk-WL4C6EOR-zSV-8h7F.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import{y as e}from"./_baseUniq-Bbn0_sHS.js";var t=4;function n(n){return e(n,t)}export{n as t};