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.
- package/README.md +5 -0
- package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-9k1Shd4H.js → CodeMirrorEditor-UCMRAMCV-Bg0dawOb.js} +1 -1
- package/dist/client/assets/{_basePickBy-B6kIfhzj.js → _basePickBy-Dv0sK1l7.js} +1 -1
- package/dist/client/assets/{_baseUniq-Bbn0_sHS.js → _baseUniq-DKYX57ji.js} +1 -1
- package/dist/client/assets/{ar-SA-NXDWD63E-BWO5oYxe.js → ar-SA-NXDWD63E-WivLHHDW.js} +1 -1
- package/dist/client/assets/{arc-BIqum3oD.js → arc-DrfYGhWk.js} +1 -1
- package/dist/client/assets/architecture-PBZL5I3N-DiglIZi9.js +1 -0
- package/dist/client/assets/architectureDiagram-2XIMDMQ5-kYbOThe4.js +36 -0
- package/dist/client/assets/{az-AZ-MXSORGZV-Cfw6Z5oY.js → az-AZ-MXSORGZV-DOdq1TKC.js} +1 -1
- package/dist/client/assets/base-CaIEJUF9.css +1 -0
- package/dist/client/assets/{bg-BG-O6MV2KSF-CQmG3YpD.js → bg-BG-O6MV2KSF-CYucKuDS.js} +1 -1
- package/dist/client/assets/{blockDiagram-WCTKOSBZ-0rR9ivwb.js → blockDiagram-WCTKOSBZ-GIgTqnhk.js} +1 -1
- package/dist/client/assets/{bn-IN-MMW2ORAC-DZKVshfk.js → bn-BD-T2VJNT7N-2OKWLCYa.js} +1 -1
- package/dist/client/assets/{bn-BD-T2VJNT7N-C4S6DZ6o.js → bn-IN-MMW2ORAC-DYr8kqNL.js} +1 -1
- package/dist/client/assets/{c4Diagram-IC4MRINW-DHwxcDlQ.js → c4Diagram-IC4MRINW-CkHO1i_L.js} +1 -1
- package/dist/client/assets/{ca-ES-MKBCGNOG-Do3aMgyu.js → ca-ES-MKBCGNOG-B9Aeb43I.js} +1 -1
- package/dist/client/assets/channel-CgsU9TSN.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-BqEY6cCE.js → chunk-4BX2VUAB-2e7V-uuE.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-039iVf6v.js → chunk-55IACEB6-CpncB3ru.js} +1 -1
- package/dist/client/assets/{chunk-7E7YKBS2-BreG0gYL.js → chunk-7E7YKBS2-TdU92i9i.js} +1 -1
- package/dist/client/assets/{chunk-7R4GIKGN-BMrp52Pk.js → chunk-7R4GIKGN-mqd2GwMg.js} +2 -2
- package/dist/client/assets/{chunk-ETSVUAFD-CN-gPl_j.js → chunk-AXZTUZBK-DuMiJYO9.js} +1 -1
- package/dist/client/assets/{chunk-C72U2L5F-BLB26v5d.js → chunk-C72U2L5F-CJKQWBtz.js} +1 -1
- package/dist/client/assets/{chunk-EGIJ26TM-fG-0Yh0k.js → chunk-EGIJ26TM-C4nq20om.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-EWK5Pt4D.js → chunk-FMBD7UC4-CMahlBa_.js} +1 -1
- package/dist/client/assets/{chunk-GEFDOKGD-DYHmaq-c.js → chunk-GEFDOKGD-Bs7FmFox.js} +1 -1
- package/dist/client/assets/chunk-GLR3WWYH-qQe2O5VQ.js +2 -0
- package/dist/client/assets/chunk-HHEYEP7N-DlevL8bq.js +1 -0
- package/dist/client/assets/{chunk-JSJVCQXG-B69YGtcQ.js → chunk-JSJVCQXG-DPQ9cPJt.js} +1 -1
- package/dist/client/assets/{chunk-KX2RTZJC-tuEC7hg1.js → chunk-KX2RTZJC-BTiOJb7N.js} +1 -1
- package/dist/client/assets/{chunk-KYZI473N-D4r5eMJZ.js → chunk-KYZI473N-CTSCuqRb.js} +1 -1
- package/dist/client/assets/{chunk-L3YUKLVL-CD9nJYL8.js → chunk-L3YUKLVL-CJZMBtKF.js} +1 -1
- package/dist/client/assets/{chunk-MX3YWQON-DqN0TF5Q.js → chunk-MX3YWQON-DQpSwRf6.js} +1 -1
- package/dist/client/assets/{chunk-NQ4KR5QH-BCjGNd0g.js → chunk-NQ4KR5QH-CMJKI6Oj.js} +1 -1
- package/dist/client/assets/chunk-NU2UP6EN-DlUENSHU.js +35 -0
- package/dist/client/assets/{chunk-O4XLMI2P-DaS3COAu.js → chunk-O4XLMI2P-CcVxZh41.js} +1 -1
- package/dist/client/assets/{chunk-OZEHJAEY-BaBXI-8x.js → chunk-OZEHJAEY-DjBZbgu0.js} +1 -1
- package/dist/client/assets/{chunk-PQ6SQG4A-BY9_Srs_.js → chunk-PQ6SQG4A-D1AbThjy.js} +1 -1
- package/dist/client/assets/{chunk-PU5JKC2W-t0zUh6E3.js → chunk-PU5JKC2W-D_6N6t8f.js} +1 -1
- package/dist/client/assets/chunk-QZHKN3VN-CgLPFSk5.js +1 -0
- package/dist/client/assets/{chunk-R5LLSJPH-BjSMFnTi.js → chunk-R5LLSJPH-CkjKXM73.js} +1 -1
- package/dist/client/assets/{chunk-WL4C6EOR-OuH0lN6M.js → chunk-WL4C6EOR-axcuKSup.js} +1 -1
- package/dist/client/assets/{chunk-XIRO2GV7-2tirYN5A.js → chunk-XIRO2GV7-4wqVHjs_.js} +1 -1
- package/dist/client/assets/{chunk-XPW4576I-C0GpOUHf.js → chunk-XPW4576I-DJr4_4Yy.js} +1 -1
- package/dist/client/assets/{chunk-XZSTWKYB-DDkpyNVE.js → chunk-XZSTWKYB-C8Y_hIKZ.js} +1 -1
- package/dist/client/assets/{chunk-YBOYWFTD-CzyyfGQX.js → chunk-YBOYWFTD-CKg4ymFF.js} +1 -1
- package/dist/client/assets/{chunk-Z5NKEFVG-Dgem5v98.js → chunk-Z5NKEFVG-HOkYqaKa.js} +1 -1
- package/dist/client/assets/classDiagram-VBA2DB6C-BHZpvOxK.js +1 -0
- package/dist/client/assets/classDiagram-v2-RAHNMMFH-DA7HMUUs.js +1 -0
- package/dist/client/assets/clone-Dgi8Z4IL.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-jZzFUguD.js → cose-bilkent-S5V4N54A-DASO2hrk.js} +1 -1
- package/dist/client/assets/{cs-CZ-V77HGUP7-DmZRJ2UO.js → cs-CZ-V77HGUP7-BDg-F0CJ.js} +1 -1
- package/dist/client/assets/{da-DK-I5RFNTM4-CRIiLQ-G.js → da-DK-I5RFNTM4-wtSQ0Jxa.js} +1 -1
- package/dist/client/assets/{dagre-fvYjRtTE.js → dagre-CfB3Fw33.js} +1 -1
- package/dist/client/assets/dagre-KLK3FWXG-CC7tq2Ky.js +4 -0
- package/dist/client/assets/{de-DE-DTI4WUSC-MFge9MC3.js → de-CH-WLRDEVBV-C1swvmZy.js} +1 -1
- package/dist/client/assets/{de-CH-WLRDEVBV-k728UA4j.js → de-DE-DTI4WUSC-C0L6Nz8X.js} +1 -1
- package/dist/client/assets/diagram-E7M64L7V-CMt7BN5M.js +24 -0
- package/dist/client/assets/diagram-IFDJBPK2-BFMBUGpd.js +43 -0
- package/dist/client/assets/diagram-P4PSJMXO-CviA1xXr.js +24 -0
- package/dist/client/assets/dist-3bQB_we3.js +1 -0
- package/dist/client/assets/dist-3uAMa5w5.js +1 -0
- package/dist/client/assets/dist-8Igu3Ee_2.js +1 -0
- package/dist/client/assets/{dist-D9c0A4Uh.js → dist-B-02vKOA.js} +1 -1
- package/dist/client/assets/dist-B4uQVR_X.js +1 -0
- package/dist/client/assets/{dist-A0eSMIyy.js → dist-BLAlZer_.js} +1 -1
- package/dist/client/assets/dist-BU8uusJX.js +1 -0
- package/dist/client/assets/dist-BVB8rn7o.js +1 -0
- package/dist/client/assets/{dist-DveOCUUJ.js → dist-Bc2ND6i3.js} +1 -1
- package/dist/client/assets/{dist-Bay3vk5z.js → dist-BtnXjRx0.js} +1 -1
- package/dist/client/assets/{dist-CEYpWxod.js → dist-BzbYwa8m.js} +1 -1
- package/dist/client/assets/{dist-Ct1bmQnL.js → dist-BzpfHRaE.js} +1 -1
- package/dist/client/assets/{dist-BbKpzsTB.js → dist-CGV1S_as.js} +1 -1
- package/dist/client/assets/dist-CL-jjdvG.js +1 -0
- package/dist/client/assets/{dist-D0e6Qsad.js → dist-CXpKYW9s.js} +1 -1
- package/dist/client/assets/{dist-BchrxlnW.js → dist-CjII8VDS.js} +1 -1
- package/dist/client/assets/{dist-DnrO-JZd.js → dist-CxfohGIV.js} +1 -1
- package/dist/client/assets/{dist-CMHIjMVe.js → dist-D5QOYy7y.js} +1 -1
- package/dist/client/assets/{dist-CEtbxXlI.js → dist-DIi0uqLJ.js} +1 -1
- package/dist/client/assets/dist-DJ16N7ol.js +1 -0
- package/dist/client/assets/dist-DUvaQ-Bj.js +1 -0
- package/dist/client/assets/{dist-DnxPQ0-w.js → dist-DWJL3_bF.js} +6 -6
- package/dist/client/assets/dist-DsL7sqZR.js +1 -0
- package/dist/client/assets/{dist-DbhQ5ANS.js → dist-Dyt7n5Ui.js} +1 -1
- package/dist/client/assets/{dist-BOrlJDrR.js → dist-E_jPb93e.js} +1 -1
- package/dist/client/assets/{dist-D-gRgZ6e.js → dist-O1z0Ayg0.js} +1 -1
- package/dist/client/assets/dist-OQE68wIX.js +1 -0
- package/dist/client/assets/dist-k47-Io7D.js +1 -0
- package/dist/client/assets/{dist-Cdzvi8cf.js → dist-lDhnP-K1.js} +1 -1
- package/dist/client/assets/{dist-DS6mEQYy.js → dist-rMhng5DK.js} +1 -1
- package/dist/client/assets/{dockerfile-C0qQqxf9.js → dockerfile-D8_6_FRV.js} +1 -1
- package/dist/client/assets/{drawio-editor-CgbaOvpF.js → drawio-editor-B4sHHwWJ.js} +1 -1
- package/dist/client/assets/drawioEditor-DGpo2hcx.js +2 -0
- package/dist/client/assets/editor-session-BKHEYkbY.js +16 -0
- package/dist/client/assets/{el-GR-ZXDJ2OS4-Bbz93mrG.js → el-GR-ZXDJ2OS4-BH0saXds.js} +1 -1
- package/dist/client/assets/{embedded-editor-base-DXRHYz6R.css → embedded-editor-base-DgmRcsR8.css} +1 -1
- package/dist/client/assets/{en-CTDJDZ6K-BHbXrqU0.js → en-IQZW2TQM-CzlcEpq3.js} +1 -1
- package/dist/client/assets/{erDiagram-INFDFZHY-DP3f20BF.js → erDiagram-INFDFZHY-DlIf-fb7.js} +1 -1
- package/dist/client/assets/{es-ES-DYQHAD43-CReXU-Nn.js → es-ES-DYQHAD43-CyzL9Mni.js} +1 -1
- package/dist/client/assets/{eu-ES-QDSYU5Y3-jRpcaWwz.js → eu-ES-QDSYU5Y3-D2-x316S.js} +1 -1
- package/dist/client/assets/{excalidraw-editor-Dj0c0PO6.js → excalidraw-editor-CHbeNZu6.js} +2 -2
- package/dist/client/assets/excalidraw-editor-Dj3i59LW.css +1 -0
- package/dist/client/assets/{excalidraw-mermaid-stub-efoh2lJm.js → excalidraw-mermaid-stub-Bwe-bKcT.js} +1 -1
- package/dist/client/assets/excalidraw-scene-BF_bT1OL.js +176 -0
- package/dist/client/assets/excalidrawEditor-BhaTX2Ko.js +2 -0
- package/dist/client/assets/export-page-PeexH2QK.js +39 -0
- package/dist/client/assets/exportDocument-CtZKWE2c.js +2 -0
- package/dist/client/assets/{exportDocument-CLPYN_gg.css → exportDocument-DmV7Gngb.css} +1 -1
- package/dist/client/assets/{fa-IR-26LZG4PM-DP8pJ8e3.js → fa-IR-26LZG4PM-D8-trU2x.js} +1 -1
- package/dist/client/assets/{factor-2uy-lXe_.js → factor-Cz-hzBGH.js} +1 -1
- package/dist/client/assets/{fi-FI-6YS4KDE4-BLUDpNOj.js → fi-FI-6YS4KDE4-CCdRVFDQ.js} +1 -1
- package/dist/client/assets/file-kind-DBptLlF_.js +1 -0
- package/dist/client/assets/{flowDiagram-PKNHOUZH-CRbK5_5h.js → flowDiagram-PKNHOUZH-C_t-mkwb.js} +1 -1
- package/dist/client/assets/{fr-FR-BRLLPTZC-BoZz3Pi8.js → fr-FR-BRLLPTZC-Dqq-O5T_.js} +1 -1
- package/dist/client/assets/ganttDiagram-A5KZAMGK-BtK9Tb--.js +292 -0
- package/dist/client/assets/gitGraph-HDMCJU4V-CT7YfbD3.js +1 -0
- package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-DULDLGiJ.js +65 -0
- package/dist/client/assets/{gl-ES-OKUZTLYG-CaEvhjDi.js → gl-ES-OKUZTLYG-BK7pbLbm.js} +1 -1
- package/dist/client/assets/{graphlib-DSzYgMXB.js → graphlib-BgRST-Qg.js} +1 -1
- package/dist/client/assets/{he-IL-26MGYIU7-DYOchgy9.js → he-IL-26MGYIU7-C3BuYKyY.js} +1 -1
- package/dist/client/assets/{hi-IN-Q4ZOGTP2-yRs8g46n.js → hi-IN-Q4ZOGTP2-BEvXWXnH.js} +1 -1
- package/dist/client/assets/{hu-HU-P2OXPSN5-1skPmtgc.js → hu-HU-P2OXPSN5-BWWZeJNp.js} +1 -1
- package/dist/client/assets/{id-ID-2EIKXYN6-iUugQJd9.js → id-ID-2EIKXYN6-DxSKi_aJ.js} +1 -1
- package/dist/client/assets/image-XLNPCCAD-CFiKwiWK.js +1 -0
- package/dist/client/assets/index-D69HOZHr.css +1 -0
- package/dist/client/assets/{index-CVgVzuh6.js → index-kPgEYvEX.js} +2 -2
- package/dist/client/assets/info-3K5VOQVL-DUpNyDC-.js +1 -0
- package/dist/client/assets/infoDiagram-LFFYTUFH-DFTI0nfs.js +2 -0
- package/dist/client/assets/{isEmpty-C7iPDOO3.js → isEmpty-CVvRj8fj.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-PHBUUO56-BDVPgkv4.js → ishikawaDiagram-PHBUUO56-DpBuDpC6.js} +1 -1
- package/dist/client/assets/{it-IT-4CFKVXI2-a5DFhzuI.js → it-IT-4CFKVXI2-BmA8wW6q.js} +1 -1
- package/dist/client/assets/{ja-JP-MAND2Z4V-DwogHVKd.js → ja-JP-MAND2Z4V-CLS1jI9o.js} +1 -1
- package/dist/client/assets/javascript-UJe68_xi.js +1 -0
- package/dist/client/assets/{journeyDiagram-4ABVD52K-DtNnwL48.js → journeyDiagram-4ABVD52K-DDur6iHm.js} +1 -1
- package/dist/client/assets/{jsx-runtime-B8dyIONw.js → jsx-runtime-C2p7wRmT.js} +1 -1
- package/dist/client/assets/{kaa-HQRTCXTJ-p81XNRfH.js → kaa-HQRTCXTJ-W15DEDPz.js} +1 -1
- package/dist/client/assets/{kab-KAB-JKIKKTGH-mV5VzQZc.js → kab-KAB-JKIKKTGH-MLh1inqS.js} +1 -1
- package/dist/client/assets/{kanban-definition-K7BYSVSG-C565sUNo.js → kanban-definition-K7BYSVSG-dA6NPLsg.js} +1 -1
- package/dist/client/assets/{kk-KZ-HXQ63ZFC-IIPX0GQv.js → kk-KZ-HXQ63ZFC-BtFrPeLs.js} +1 -1
- package/dist/client/assets/{km-KH-PKL3LSGX-D7WQFJuZ.js → km-KH-PKL3LSGX-xO5FyM9T.js} +1 -1
- package/dist/client/assets/{ko-KR-KXLREZX3-Bs1oLtJs.js → ko-KR-KXLREZX3-NZFoRybS.js} +1 -1
- package/dist/client/assets/{ku-TR-MJ4IER3X-DlxOs6aZ.js → ku-TR-MJ4IER3X-B5eVPIpK.js} +1 -1
- package/dist/client/assets/{line-D57TbKb7.js → line-B2GMovaI.js} +1 -1
- package/dist/client/assets/{linear-BIf852wI.js → linear-B2dOdA24.js} +1 -1
- package/dist/client/assets/{lt-LT-H6WFQ6FJ-xuo-3zKH.js → lt-LT-H6WFQ6FJ-D_7_OeJD.js} +1 -1
- package/dist/client/assets/{lv-LV-GOCK6SJW-C7S3M1nr.js → lv-LV-GOCK6SJW-CnpKr0oQ.js} +1 -1
- package/dist/client/assets/main-DSxNTtD-.js +1243 -0
- package/dist/client/assets/mermaid-parser.core-B1ogGcR8.js +4 -0
- package/dist/client/assets/{mermaid-runtime-DqncQoYK.js → mermaid-runtime-Bn8A6DGx.js} +3 -3
- package/dist/client/assets/{mindmap-definition-YRQLILUH-BbYzGfTD.js → mindmap-definition-YRQLILUH-DjQcsPoe.js} +1 -1
- package/dist/client/assets/{mr-IN-IXVLDMEQ-BsoowyZT.js → mr-IN-IXVLDMEQ-Pht2X_GK.js} +1 -1
- package/dist/client/assets/{my-MM-YG6MYTTD-DCqwN_K_.js → my-MM-YG6MYTTD-Cgq4HhPO.js} +1 -1
- package/dist/client/assets/{nb-NO-XGWJISD2-CZ5ytLgj.js → nb-NO-XGWJISD2-Bn_Bk2un.js} +1 -1
- package/dist/client/assets/{nl-NL-XVDVCPNC-wADsdb-h.js → nl-NL-XVDVCPNC-YkWSJS94.js} +1 -1
- package/dist/client/assets/{nn-NO-EMX5MJX5-D9zIKTL2.js → nn-NO-EMX5MJX5-DhP5eZJ7.js} +1 -1
- package/dist/client/assets/{nsis-CUd4RnvJ.js → nsis-QPGhLAeY.js} +1 -1
- package/dist/client/assets/{oc-FR-ROEINTVO-BSbBugJB.js → oc-FR-ROEINTVO-D3udMPnr.js} +1 -1
- package/dist/client/assets/{ordinal-B0PAtOQ6.js → ordinal-Dz3y_j0K.js} +1 -1
- package/dist/client/assets/{pa-IN-ZYN6SUDY-1pFA_3Pb.js → pa-IN-ZYN6SUDY-CR5YzFig.js} +1 -1
- package/dist/client/assets/packet-RMMSAZCW-DEwNbIrA.js +1 -0
- package/dist/client/assets/percentages-5DKR754L-D7n4T776.js +1 -0
- package/dist/client/assets/pie-UPGHQEXC-D5M_lSjo.js +1 -0
- package/dist/client/assets/pieDiagram-SKSYHLDU-jhHouFpk.js +30 -0
- package/dist/client/assets/{pl-PL-6VTG7PHC-DyYw0u_z.js → pl-PL-6VTG7PHC-_wZuoIDM.js} +1 -1
- package/dist/client/assets/preview-render-compiler-BjLlHmiQ.js +35 -0
- package/dist/client/assets/preview-render-compiler-Duy_3IcP.js +1 -0
- package/dist/client/assets/preview-render-worker-B4dH2yxj.js +59 -0
- package/dist/client/assets/{pt-BR-5YFKRR5G-DJCCBBDl.js → pt-BR-5YFKRR5G-M7gIm2Hi.js} +1 -1
- package/dist/client/assets/{pt-PT-GEIXXZ67-BPJd09Ax.js → pt-PT-GEIXXZ67-CcxWpkGj.js} +1 -1
- package/dist/client/assets/{pug-BqBF8qF7.js → pug-DkUcLYWt.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-337W2JSQ-DhlKLozd.js → quadrantDiagram-337W2JSQ-CYKgdx7K.js} +1 -1
- package/dist/client/assets/quick-switcher-controller-DcyllYpm.js +5 -0
- package/dist/client/assets/radar-KQ55EAFF-AU1qh3Bw.js +1 -0
- package/dist/client/assets/{requirementDiagram-Z7DCOOCP-B7ZOMsIb.js → requirementDiagram-Z7DCOOCP-D9SHxoW7.js} +1 -1
- package/dist/client/assets/{ro-RO-E2P6TFZI-DWVyTV7V.js → ro-RO-E2P6TFZI-qR9noVzP.js} +1 -1
- package/dist/client/assets/{room-B0UGbzQj.js → room-yJaBAoEU.js} +1 -1
- package/dist/client/assets/{ru-RU-YBIIY43T-Dyar7CYM.js → ru-RU-YBIIY43T-CE4S_RX8.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-CXRga6Op.js → sankeyDiagram-WA2Y5GQK-CfHe3D6R.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-2WXFIKYE-CeSFlFx5.js → sequenceDiagram-2WXFIKYE-CZsMMqAJ.js} +1 -1
- package/dist/client/assets/{si-LK-673C2CI2-C61aLrIy.js → si-LK-673C2CI2-Bv6Avh3z.js} +1 -1
- package/dist/client/assets/{sk-SK-CKZHQ4AP-BlFwOxRD.js → sk-SK-CKZHQ4AP-Cnlpp55z.js} +1 -1
- package/dist/client/assets/{sl-SI-557H2GWM-DcAVW-_t.js → sl-SI-557H2GWM-BfGq7AQF.js} +1 -1
- package/dist/client/assets/stateDiagram-RAJIS63D-CoNZjTYV.js +1 -0
- package/dist/client/assets/stateDiagram-v2-FVOUBMTO-1zOw6NmQ.js +1 -0
- package/dist/client/assets/subset-shared.chunk-C9HjwTXy.js +1 -0
- package/dist/client/assets/{subset-worker.chunk-DVGT6bvR.js → subset-worker.chunk-BSCP6IiC.js} +1 -1
- package/dist/client/assets/{sv-SE-XOPKKDWS-BkhfOHzh.js → sv-SE-XOPKKDWS-B2_Vk-sp.js} +1 -1
- package/dist/client/assets/{ta-IN-XBH7DQI3-BIfwglZa.js → ta-IN-XBH7DQI3-BXQMZZIx.js} +1 -1
- package/dist/client/assets/{th-TH-TOCWH3R4-CkrxqVkf.js → th-TH-TOCWH3R4-C-ZIYMfH.js} +1 -1
- package/dist/client/assets/{timeline-definition-YZTLITO2-BXBHNWLQ.js → timeline-definition-YZTLITO2-DSe2mrG8.js} +1 -1
- package/dist/client/assets/{tr-TR-GXW6CYY5-CDdvG9rD.js → tr-TR-GXW6CYY5-dl702PMA.js} +1 -1
- package/dist/client/assets/treemap-KZPCXAKY-C9UI2fwP.js +1 -0
- package/dist/client/assets/{uk-UA-IJKTNUDG-DRHp0lWp.js → uk-UA-IJKTNUDG-CUYQvSSF.js} +1 -1
- package/dist/client/assets/{uz-UZ-TBZZEA4V-BIn-VE3Y.js → uz-UZ-TBZZEA4V-B9qw0PXX.js} +1 -1
- package/dist/client/assets/{vault-api-client-DIaCC56H.js → vault-api-client-BzHQseMN.js} +1 -1
- package/dist/client/assets/vault-utils-5Xr0MXCb.js +1 -0
- package/dist/client/assets/{vennDiagram-LZ73GAT5-Cs9aQmVM.js → vennDiagram-LZ73GAT5-xSzaIpy1.js} +1 -1
- package/dist/client/assets/{vi-VN-MULSGNVB-Du7t5I0v.js → vi-VN-MULSGNVB-DqxZ_sVc.js} +1 -1
- package/dist/client/assets/{xychartDiagram-JWTSCODW-B40ybbzC.js → xychartDiagram-JWTSCODW-C3vA70iJ.js} +1 -1
- package/dist/client/assets/{yjs-provider-reset-guard-DUP9XupO.js → yjs-provider-reset-guard-CtERLBID.js} +1 -1
- package/dist/client/assets/{zh-CN-MVX3E32U-RcjS3rjt.js → zh-CN-MVX3E32U-BM0aLuGc.js} +1 -1
- package/dist/client/assets/{zh-HK-JNU5RLIE-g8UeEw5v.js → zh-HK-JNU5RLIE-dmG_YD0d.js} +1 -1
- package/dist/client/assets/{zh-TW-LENVCA6T-DwV25BqC.js → zh-TW-LENVCA6T-LFgbiOi3.js} +1 -1
- package/dist/client/drawio-editor.html +1 -1
- package/dist/client/excalidraw-editor.html +1 -1
- package/dist/client/export-document.html +5 -5
- package/dist/client/index.html +4 -4
- package/docker-compose.yml +1 -0
- package/package.json +24 -21
- package/src/client/app/export-document.html +1 -1
- package/src/client/application/app-shell/ui-feature-shell.js +47 -1
- package/src/client/application/app-shell/ui-feature-toolbar.js +25 -3
- package/src/client/application/app-shell/workspace-feature.js +9 -0
- package/src/client/application/app-shell-elements.js +3 -0
- package/src/client/application/diagram-preview-hydrator.js +1 -1
- package/src/client/application/markdown-frontmatter.js +97 -0
- package/src/client/application/preview-render-compiler.js +60 -7
- package/src/client/application/preview-render-executor.js +8 -1
- package/src/client/application/preview-render-worker.js +4 -0
- package/src/client/application/preview-renderer.js +51 -1
- package/src/client/application/workspace-chrome-controller.js +25 -19
- package/src/client/application/workspace-coordinator.js +9 -0
- package/src/client/application/workspace-preview-controller.js +49 -3
- package/src/client/bootstrap/collabmd-app-shell.js +31 -2
- package/src/client/domain/markdown-formatting.js +1 -1
- package/src/client/domain/markdown-toolbar-actions.js +36 -0
- package/src/client/domain/vault-paths.js +19 -0
- package/src/client/export/export-page.js +11 -3
- package/src/client/export/export-pipeline.js +80 -3
- package/src/client/infrastructure/editor-session.js +4 -0
- package/src/client/infrastructure/editor-view-adapter.js +44 -7
- package/src/client/infrastructure/excalidraw-room-client.js +12 -4
- package/src/client/infrastructure/vault-api-client.js +54 -0
- package/src/client/presentation/app-shell-template.js +27 -0
- package/src/client/presentation/backlinks-panel.js +37 -11
- package/src/client/presentation/bases-preview-controller.js +444 -0
- package/src/client/presentation/file-action-controller.js +44 -2
- package/src/client/presentation/file-explorer-view.js +10 -2
- package/src/client/presentation/file-tree-state.js +9 -1
- package/src/client/presentation/git-diff-view-controller.js +7 -10
- package/src/client/presentation/quick-switcher-controller.js +54 -13
- package/src/client/styles/base.css +5 -0
- package/src/client/styles/export-document.css +12 -0
- package/src/client/styles/features/backlinks.css +65 -3
- package/src/client/styles/features/preview-markdown.css +347 -0
- package/src/client/styles/layout/editor-page.css +6 -0
- package/src/client/styles/layout/responsive.css +89 -0
- package/src/client/styles/layout/shell.css +14 -1
- package/src/client/styles/layout/view-modes.css +5 -0
- package/src/client/styles/overrides/codemirror.css +74 -0
- package/src/domain/file-kind.js +17 -2
- package/src/domain/wiki-link-resolver.js +41 -23
- package/src/domain/yaml-frontmatter.js +59 -0
- package/src/server/auth/create-auth-service.js +32 -6
- package/src/server/config/env.js +27 -0
- package/src/server/config/perf-logging.js +39 -0
- package/src/server/create-app-server.js +113 -7
- package/src/server/domain/backlink-index.js +129 -19
- package/src/server/domain/bases/base-query-service.js +2101 -0
- package/src/server/domain/collaboration/collaboration-document-store.js +13 -2
- package/src/server/domain/collaboration/collaboration-room.js +28 -5
- package/src/server/domain/workspace-state.js +52 -0
- package/src/server/infrastructure/git/history-service.js +1 -1
- package/src/server/infrastructure/http/create-request-handler.js +2 -0
- package/src/server/infrastructure/http/create-vault-api-command-handler.js +5 -0
- package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +66 -0
- package/src/server/infrastructure/persistence/path-utils.js +1 -1
- package/src/server/infrastructure/persistence/pull-backup-store.js +1 -1
- package/src/server/infrastructure/persistence/vault-content-adapter.js +6 -0
- package/src/server/infrastructure/persistence/vault-file-store.js +88 -31
- package/src/server/infrastructure/workspace/file-system-sync-service.js +156 -31
- package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +47 -51
- package/src/server/shared/async-utils.js +25 -0
- package/dist/client/assets/architecture-PBZL5I3N-iRyVT2GQ.js +0 -1
- package/dist/client/assets/architectureDiagram-2XIMDMQ5-Bhh8YQHn.js +0 -36
- package/dist/client/assets/base-B5gONpJK.css +0 -1
- package/dist/client/assets/channel-s0w88EQN.js +0 -1
- package/dist/client/assets/chunk-27N2SPOM-DbHKsQ_j.js +0 -34
- package/dist/client/assets/chunk-GLR3WWYH-ZnuaBvXp.js +0 -2
- package/dist/client/assets/chunk-HHEYEP7N-DOQ0PCdH.js +0 -1
- package/dist/client/assets/chunk-QZHKN3VN-B0v4d-CS.js +0 -1
- package/dist/client/assets/classDiagram-VBA2DB6C-Bpdym3dj.js +0 -1
- package/dist/client/assets/classDiagram-v2-RAHNMMFH-CRAsdVDB.js +0 -1
- package/dist/client/assets/clone-C-n46MFF.js +0 -1
- package/dist/client/assets/dagre-KLK3FWXG-CXSnjrX-.js +0 -4
- package/dist/client/assets/diagram-E7M64L7V-De0StFef.js +0 -24
- package/dist/client/assets/diagram-IFDJBPK2-B2m6AJbU.js +0 -43
- package/dist/client/assets/diagram-P4PSJMXO-YBWLVENw.js +0 -24
- package/dist/client/assets/dist-BNcU46Ik.js +0 -1
- package/dist/client/assets/dist-BUEzOS23.js +0 -1
- package/dist/client/assets/dist-BflL-_8D.js +0 -1
- package/dist/client/assets/dist-CI_qEj5K.js +0 -1
- package/dist/client/assets/dist-CtFNDttZ.js +0 -1
- package/dist/client/assets/dist-DS_4VpEd.js +0 -1
- package/dist/client/assets/dist-DwsFUbuB.js +0 -1
- package/dist/client/assets/dist-VCYAp958.js +0 -1
- package/dist/client/assets/dist-Yxt8txtM.js +0 -1
- package/dist/client/assets/dist-npxgF_6V.js +0 -1
- package/dist/client/assets/dist-u0zDRMQt.js +0 -1
- package/dist/client/assets/drawioEditor-Eb2yYhjE.js +0 -2
- package/dist/client/assets/editor-session-DFzBn4RY.js +0 -16
- package/dist/client/assets/excalidraw-editor-Bat1FRoT.css +0 -1
- package/dist/client/assets/excalidraw-scene-CixfM-jL.js +0 -174
- package/dist/client/assets/excalidrawEditor-diK4VITg.js +0 -2
- package/dist/client/assets/export-page-CUOMczdp.js +0 -39
- package/dist/client/assets/exportDocument-BM4_f2n8.js +0 -2
- package/dist/client/assets/ganttDiagram-A5KZAMGK-R-AMIgxR.js +0 -292
- package/dist/client/assets/gitGraph-HDMCJU4V-kkuqHGSM.js +0 -1
- package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-CIPit_Sh.js +0 -65
- package/dist/client/assets/image-32MOCVDX-BB6utPzr.js +0 -1
- package/dist/client/assets/index-BOOhEiLo.css +0 -1
- package/dist/client/assets/info-3K5VOQVL-DPN78whf.js +0 -1
- package/dist/client/assets/infoDiagram-LFFYTUFH-CF8jXFTm.js +0 -2
- package/dist/client/assets/javascript-8DvdgifH.js +0 -1
- package/dist/client/assets/main-C8adLQnt.js +0 -1174
- package/dist/client/assets/mermaid-parser.core-By_5k2SF.js +0 -4
- package/dist/client/assets/packet-RMMSAZCW-BymvQ5cQ.js +0 -1
- package/dist/client/assets/percentages-5DKR754L-CiI2D7zA.js +0 -1
- package/dist/client/assets/pie-UPGHQEXC-MmzJzWOE.js +0 -1
- package/dist/client/assets/pieDiagram-SKSYHLDU-CAU_gC7U.js +0 -30
- package/dist/client/assets/preview-render-compiler-CVfDHnqM.js +0 -1
- package/dist/client/assets/preview-render-compiler-CapHJDHT.js +0 -1
- package/dist/client/assets/preview-render-worker-wMS710Bv.js +0 -23
- package/dist/client/assets/quick-switcher-controller-DplOTsT3.js +0 -5
- package/dist/client/assets/radar-KQ55EAFF-CCohASSY.js +0 -1
- package/dist/client/assets/stateDiagram-RAJIS63D-CPoSrNwn.js +0 -1
- package/dist/client/assets/stateDiagram-v2-FVOUBMTO-5GW0Y21a.js +0 -1
- package/dist/client/assets/subset-shared.chunk-CC_u8ICU.js +0 -1
- package/dist/client/assets/treemap-KZPCXAKY-9kxB0uNY.js +0 -1
- package/dist/client/assets/vault-utils-BW53lKl1.js +0 -1
- /package/dist/client/assets/{apl-QJCYYBkj.js → apl-C1JYSI8J.js} +0 -0
- /package/dist/client/assets/{array-DwdVlTkF.js → array-B3agRrCs.js} +0 -0
- /package/dist/client/assets/{asciiarmor-DNy0UPqh.js → asciiarmor-DHW75j1s.js} +0 -0
- /package/dist/client/assets/{asn1-CNPXj-s7.js → asn1-CQiG40kG.js} +0 -0
- /package/dist/client/assets/{asterisk-BwMdLpT2.js → asterisk-BWExh0n4.js} +0 -0
- /package/dist/client/assets/{base-r5Zg2n3k.js → base-h1uscjTi.js} +0 -0
- /package/dist/client/assets/{brainfuck-C2gHT8aA.js → brainfuck-CTNFyOLg.js} +0 -0
- /package/dist/client/assets/{chunk-3PELD44J-CL87tpFo.js → chunk-3PELD44J-DymL2rGq.js} +0 -0
- /package/dist/client/assets/{chunk-A66AFZZU-DuceaGnc.js → chunk-A66AFZZU-BFHL744F.js} +0 -0
- /package/dist/client/assets/{chunk-SRAX5OIU-CC2mobFL.js → chunk-SRAX5OIU-CLVBQRWC.js} +0 -0
- /package/dist/client/assets/{clike-D5X7HJpo.js → clike-1_ZsiVV8.js} +0 -0
- /package/dist/client/assets/{clojure-BEDKZv_5.js → clojure-D-DYVqu7.js} +0 -0
- /package/dist/client/assets/{cmake-Y3shE7av.js → cmake-DtGL-Unu.js} +0 -0
- /package/dist/client/assets/{cobol-f-3TLk62.js → cobol-DP4QggbL.js} +0 -0
- /package/dist/client/assets/{coffeescript-C0XA9-xa.js → coffeescript-B_7eyHAa.js} +0 -0
- /package/dist/client/assets/{commonlisp-BOB6sIEu.js → commonlisp-COlJYiQT.js} +0 -0
- /package/dist/client/assets/{crystal-ByNgE_My.js → crystal-I_dE9xG-.js} +0 -0
- /package/dist/client/assets/{css-eaI-ENiR.js → css-CmhPNxBE.js} +0 -0
- /package/dist/client/assets/{cypher-CQ-dGGSi.js → cypher-DE6I2lIA.js} +0 -0
- /package/dist/client/assets/{cytoscape.esm-DBDRhUia.js → cytoscape.esm-Czjc507F.js} +0 -0
- /package/dist/client/assets/{d-D9pnu4Cr.js → d-BNkKjn0o.js} +0 -0
- /package/dist/client/assets/{defaultLocale-BWgun1yJ.js → defaultLocale-B_FbTTbl.js} +0 -0
- /package/dist/client/assets/{diff-z9q33Lo6.js → diff-BWuPUsEo.js} +0 -0
- /package/dist/client/assets/{dist-CsYRf4AV.js → dist-x7PIEmJu.js} +0 -0
- /package/dist/client/assets/{drawio-room-C592VDk7.js → drawio-room-DEivFyNV.js} +0 -0
- /package/dist/client/assets/{dtd-BDizf_te.js → dtd-C6brJFPg.js} +0 -0
- /package/dist/client/assets/{dylan-Bk__XCKW.js → dylan-Bft86ZSB.js} +0 -0
- /package/dist/client/assets/{ebnf-SzN4Kxtp.js → ebnf-D6ifG44A.js} +0 -0
- /package/dist/client/assets/{ecl-5ulxiKbt.js → ecl-M7Iek4lq.js} +0 -0
- /package/dist/client/assets/{eiffel-Bhoaqbb6.js → eiffel-DwxtewZF.js} +0 -0
- /package/dist/client/assets/{elm-C3je846J.js → elm-B1TncobV.js} +0 -0
- /package/dist/client/assets/{erlang-Cgk9SIAz.js → erlang-BDJZNtt8.js} +0 -0
- /package/dist/client/assets/{excalidraw-mermaid-stub-B_2dv3Ll.js → excalidraw-mermaid-stub-BZPU4ZhU.js} +0 -0
- /package/dist/client/assets/{fcl-dvkZwp9p.js → fcl-BWKK0S4-.js} +0 -0
- /package/dist/client/assets/{forth-DmfSa3jN.js → forth-nvhcMz63.js} +0 -0
- /package/dist/client/assets/{fortran-BsZAiNnN.js → fortran-BZID-z10.js} +0 -0
- /package/dist/client/assets/{gas-DBpKE9ut.js → gas-DjQsZDGE.js} +0 -0
- /package/dist/client/assets/{gherkin-CceEbBs7.js → gherkin-S0kHlzux.js} +0 -0
- /package/dist/client/assets/{groovy-CxJnDvES.js → groovy-BEKazBrO.js} +0 -0
- /package/dist/client/assets/{haskell-CUSb34Xy.js → haskell-C6qH3-aI.js} +0 -0
- /package/dist/client/assets/{haxe-6EHO_h-N.js → haxe-BY9d_5nB.js} +0 -0
- /package/dist/client/assets/{http-C3qcBpvG.js → http-DG1Y9fpK.js} +0 -0
- /package/dist/client/assets/{idl-C95wIO2I.js → idl-B64p3NTJ.js} +0 -0
- /package/dist/client/assets/{image-blob-reduce.esm-BaW4gpT9.js → image-blob-reduce.esm-DriR2zT9.js} +0 -0
- /package/dist/client/assets/{init-Bjj5fg68.js → init-DtLQcSuO.js} +0 -0
- /package/dist/client/assets/{isArrayLikeObject-Cmt1CYnI.js → isArrayLikeObject-BId_dPHM.js} +0 -0
- /package/dist/client/assets/{javascript-aWB87b1w.js → javascript-CdiVhQeA.js} +0 -0
- /package/dist/client/assets/{julia-DF9PPAXG.js → julia-B22G9Bym.js} +0 -0
- /package/dist/client/assets/{katex-BPsFnA3D.js → katex-CXYULLWy.js} +0 -0
- /package/dist/client/assets/{livescript-CnOyWwUY.js → livescript-CkcuHqeS.js} +0 -0
- /package/dist/client/assets/{lua-a0rEq19C.js → lua-kutgyRGY.js} +0 -0
- /package/dist/client/assets/{math-BaavbII8.js → math-B-LMBwub.js} +0 -0
- /package/dist/client/assets/{mathematica-CKUq0Ojc.js → mathematica-CKVhKnoY.js} +0 -0
- /package/dist/client/assets/{mbox-a-u2PLog.js → mbox-DANyzFJ2.js} +0 -0
- /package/dist/client/assets/{mirc-BOd43sOX.js → mirc-BVG2S5rO.js} +0 -0
- /package/dist/client/assets/{mllike-fHruGivh.js → mllike-C0p7lv48.js} +0 -0
- /package/dist/client/assets/{modelica-B0NJqf1C.js → modelica-vJ-Qa9jV.js} +0 -0
- /package/dist/client/assets/{mscgen-DJZ33SrF.js → mscgen-vUD-SWGJ.js} +0 -0
- /package/dist/client/assets/{mumps-DvMvHTxU.js → mumps-D0KfUTSd.js} +0 -0
- /package/dist/client/assets/{nginx-BVAs8laz.js → nginx-DkVceJrH.js} +0 -0
- /package/dist/client/assets/{ntriples-DrdyAZU1.js → ntriples-BBuCIfS0.js} +0 -0
- /package/dist/client/assets/{octave-_YqJ0g7E.js → octave-BTv2CqSQ.js} +0 -0
- /package/dist/client/assets/{oz-k7T3LoMr.js → oz-D8SjVDNU.js} +0 -0
- /package/dist/client/assets/{pascal-CftsTvte.js → pascal-T-tfhVyx.js} +0 -0
- /package/dist/client/assets/{path-BUmMWM1-.js → path-DIlZIGue.js} +0 -0
- /package/dist/client/assets/{perl-CbsLFc7A.js → perl-BDrCkHRd.js} +0 -0
- /package/dist/client/assets/{pica-By-YDy_B.js → pica-C1TdTz-C.js} +0 -0
- /package/dist/client/assets/{pig-C-jTwMS-.js → pig-BEyI4fPq.js} +0 -0
- /package/dist/client/assets/{powershell-DqXLgSHX.js → powershell-DtnFc6GG.js} +0 -0
- /package/dist/client/assets/{preview-diagram-utils-Dc83ucbv.js → preview-diagram-utils-COt-IYMD.js} +0 -0
- /package/dist/client/assets/{preview-render-profile-DPzmho7I.js → preview-render-profile-CR4dJZrp.js} +0 -0
- /package/dist/client/assets/{properties-05jaw55P.js → properties-DWUvbxV9.js} +0 -0
- /package/dist/client/assets/{protobuf-DThTsZQN.js → protobuf-CQGoYyfE.js} +0 -0
- /package/dist/client/assets/{puppet-DuHxMpoj.js → puppet-Dd-qWO3p.js} +0 -0
- /package/dist/client/assets/{python-BiE2VHJI.js → python-CZtTmYkS.js} +0 -0
- /package/dist/client/assets/{q-DH46YfNw.js → q-I27iQntV.js} +0 -0
- /package/dist/client/assets/{r-DmEm46kJ.js → r-DN_EydfL.js} +0 -0
- /package/dist/client/assets/{rough.esm-jZQkcmER.js → rough.esm-DE_lJ5Ge.js} +0 -0
- /package/dist/client/assets/{roundRect-CI6UmGg6.js → roundRect-BzEouiv_.js} +0 -0
- /package/dist/client/assets/{rpm-DILIIbRB.js → rpm-CjWxLM68.js} +0 -0
- /package/dist/client/assets/{ruby-2LcnHEMS.js → ruby-CB34f2Gf.js} +0 -0
- /package/dist/client/assets/{runtime-config-CqX_f_Q4.js → runtime-config-CqhchMC4.js} +0 -0
- /package/dist/client/assets/{sas-Bn81MKuB.js → sas-Bji4HDQq.js} +0 -0
- /package/dist/client/assets/{scheme-B8kPNbgd.js → scheme-C3elI80V.js} +0 -0
- /package/dist/client/assets/{shell-CGj6v8kb.js → shell-DUveK2Hb.js} +0 -0
- /package/dist/client/assets/{sieve-CfVNFN1K.js → sieve-2ogwMVx4.js} +0 -0
- /package/dist/client/assets/{simple-mode-_FSHdiXs.js → simple-mode-pOKc0mfx.js} +0 -0
- /package/dist/client/assets/{smalltalk-BpIFyCPt.js → smalltalk-BuGhc6lW.js} +0 -0
- /package/dist/client/assets/{solr-B7iFaetn.js → solr-DTxshpm8.js} +0 -0
- /package/dist/client/assets/{sparql-COhgMTFK.js → sparql-BOvq0dv7.js} +0 -0
- /package/dist/client/assets/{spreadsheet-BzuffEeg.js → spreadsheet-C6Vbtl9-.js} +0 -0
- /package/dist/client/assets/{sql-13lT5zDl.js → sql-DDFeQNTK.js} +0 -0
- /package/dist/client/assets/{src-E3c2cohN.js → src-Pgt9Gp65.js} +0 -0
- /package/dist/client/assets/{stex-BRSfZZYG.js → stex-CEwW0Q_0.js} +0 -0
- /package/dist/client/assets/{stylus-fFo0QRk_.js → stylus-D1SZIMDs.js} +0 -0
- /package/dist/client/assets/{swift-wb5gyb6a.js → swift-BCxe4-cw.js} +0 -0
- /package/dist/client/assets/{tcl-BJA7GgWY.js → tcl-SPk7uiDB.js} +0 -0
- /package/dist/client/assets/{textile-BQjiYu-x.js → textile-C48beRus.js} +0 -0
- /package/dist/client/assets/{tiddlywiki-D2vUXB6n.js → tiddlywiki-CiImjFLN.js} +0 -0
- /package/dist/client/assets/{tiki-BFhpdznG.js → tiki-HkXZ4BIW.js} +0 -0
- /package/dist/client/assets/{toml-DN06iQUw.js → toml-BmfpMy1_.js} +0 -0
- /package/dist/client/assets/{troff-DuQfjhPH.js → troff-BjbEOT5E.js} +0 -0
- /package/dist/client/assets/{ttcn-BCTy6d50.js → ttcn-NA-V4KnY.js} +0 -0
- /package/dist/client/assets/{ttcn-cfg-BYnZQqGa.js → ttcn-cfg-TPHncdGN.js} +0 -0
- /package/dist/client/assets/{turtle-BvN-Me9x.js → turtle-GBz_E4RG.js} +0 -0
- /package/dist/client/assets/{vb-DYk3wW9u.js → vb-C19AQWqO.js} +0 -0
- /package/dist/client/assets/{vbscript-BKI61VS6.js → vbscript-CHJk3s95.js} +0 -0
- /package/dist/client/assets/{velocity-BrtitHHA.js → velocity-Ya0P4sQU.js} +0 -0
- /package/dist/client/assets/{verilog-CjUx3yiL.js → verilog-C4wTycyo.js} +0 -0
- /package/dist/client/assets/{vhdl-CPWwYF4V.js → vhdl-Bwndeg44.js} +0 -0
- /package/dist/client/assets/{webidl-PiVOzma8.js → webidl-DttrYZRT.js} +0 -0
- /package/dist/client/assets/{xquery-CiTzM_oK.js → xquery-CEDTd8qs.js} +0 -0
- /package/dist/client/assets/{yacas-4QS9CntY.js → yacas-C7dxlPB0.js} +0 -0
- /package/dist/client/assets/{z80-BxidrTKR.js → z80-BqEfFSnA.js} +0 -0
|
@@ -22,6 +22,7 @@ import { TabActivityLock } from '../infrastructure/tab-activity-lock.js';
|
|
|
22
22
|
import { vaultApiClient } from '../infrastructure/vault-api-client.js';
|
|
23
23
|
import { WorkspaceSyncClient } from '../infrastructure/workspace-sync-client.js';
|
|
24
24
|
import { BacklinksPanel } from '../presentation/backlinks-panel.js';
|
|
25
|
+
import { BasesPreviewController } from '../presentation/bases-preview-controller.js';
|
|
25
26
|
import { CommentUiController } from '../presentation/comment-ui-controller.js';
|
|
26
27
|
import { DrawioEmbedController } from '../presentation/drawio-embed-controller.js';
|
|
27
28
|
import { ExcalidrawEmbedController } from '../presentation/excalidraw-embed-controller.js';
|
|
@@ -185,6 +186,13 @@ export class CollabMdAppShell {
|
|
|
185
186
|
this.videoEmbed = new VideoEmbedController({
|
|
186
187
|
previewElement: this.elements.previewContent,
|
|
187
188
|
});
|
|
189
|
+
this.basesPreview = new BasesPreviewController({
|
|
190
|
+
getActiveFilePath: () => this.currentFilePath,
|
|
191
|
+
onOpenFile: (filePath) => filePath && this.navigation.navigateToFile(filePath),
|
|
192
|
+
previewElement: this.elements.previewContent,
|
|
193
|
+
toastController: this.toastController,
|
|
194
|
+
vaultApiClient: this.vaultApiClient,
|
|
195
|
+
});
|
|
188
196
|
this.imageLightbox = new ImageLightboxController({
|
|
189
197
|
previewElement: this.elements.previewContent,
|
|
190
198
|
});
|
|
@@ -199,6 +207,7 @@ export class CollabMdAppShell {
|
|
|
199
207
|
});
|
|
200
208
|
this.videoEmbed.reconcileEmbeds(this.elements.previewContent);
|
|
201
209
|
this.videoEmbed.syncLayout();
|
|
210
|
+
this.basesPreview.reconcileEmbeds(this.elements.previewContent);
|
|
202
211
|
this.drawioEmbed.reconcileEmbeds(this.elements.previewContent);
|
|
203
212
|
this.drawioEmbed.syncLayout();
|
|
204
213
|
this.excalidrawEmbed.reconcileEmbeds(this.elements.previewContent, { isLargeDocument: stats.isLargeDocument });
|
|
@@ -212,6 +221,11 @@ export class CollabMdAppShell {
|
|
|
212
221
|
this.drawioEmbed.detachForCommit();
|
|
213
222
|
this.excalidrawEmbed.detachForCommit();
|
|
214
223
|
},
|
|
224
|
+
onPreviewLayoutChange: () => {
|
|
225
|
+
this.scrollSyncController.invalidatePreviewBlocks();
|
|
226
|
+
this.schedulePreviewLayoutSync({ delayMs: 0 });
|
|
227
|
+
this.refreshCommentUiLayout();
|
|
228
|
+
},
|
|
215
229
|
onRenderComplete: () => {
|
|
216
230
|
this.videoEmbed.syncLayout();
|
|
217
231
|
this.drawioEmbed.syncLayout();
|
|
@@ -237,6 +251,7 @@ export class CollabMdAppShell {
|
|
|
237
251
|
scrollEditorToLine: (lineNumber, viewportRatio) => this.session?.scrollToLine(lineNumber, viewportRatio),
|
|
238
252
|
});
|
|
239
253
|
this.backlinksPanel = new BacklinksPanel({
|
|
254
|
+
headerPanelElement: this.elements.backlinksHeaderPanel,
|
|
240
255
|
inlinePanelElement: this.elements.backlinksInlinePanel,
|
|
241
256
|
onFileSelect: (filePath) => this.handleFileSelection(filePath, { closeSidebarOnMobile: true }),
|
|
242
257
|
panelElement: this.elements.backlinksPanel,
|
|
@@ -279,11 +294,13 @@ export class CollabMdAppShell {
|
|
|
279
294
|
});
|
|
280
295
|
this.workspacePreviewController = new WorkspacePreviewController({
|
|
281
296
|
backlinksPanel: this.backlinksPanel,
|
|
297
|
+
basesPreview: this.basesPreview,
|
|
282
298
|
drawioEmbed: this.drawioEmbed,
|
|
283
299
|
elements: this.elements,
|
|
284
300
|
excalidrawEmbed: this.excalidrawEmbed,
|
|
285
301
|
getDisplayName: (filePath) => this.getDisplayName(filePath),
|
|
286
302
|
getSession: () => this.session,
|
|
303
|
+
isBaseFile: (filePath) => this.isBaseFile(filePath),
|
|
287
304
|
isDrawioFile: (filePath) => this.isDrawioFile(filePath),
|
|
288
305
|
isExcalidrawFile: (filePath) => this.isExcalidrawFile(filePath),
|
|
289
306
|
isImageFile: (filePath) => this.isImageFile(filePath),
|
|
@@ -369,6 +386,7 @@ export class CollabMdAppShell {
|
|
|
369
386
|
getLocalUser: () => this.lobby.getLocalUser(),
|
|
370
387
|
getStoredUserName: () => this.getStoredUserName(),
|
|
371
388
|
getTheme: () => this.themeController.getTheme(),
|
|
389
|
+
isBaseFile: (filePath) => this.isBaseFile(filePath),
|
|
372
390
|
isDrawioFile: (filePath) => this.isDrawioFile(filePath),
|
|
373
391
|
isExcalidrawFile: (filePath) => this.isExcalidrawFile(filePath),
|
|
374
392
|
isImageFile: (filePath) => this.isImageFile(filePath),
|
|
@@ -392,8 +410,15 @@ export class CollabMdAppShell {
|
|
|
392
410
|
this.clearInitialFileBootstrap();
|
|
393
411
|
},
|
|
394
412
|
onConnectionChange: (state) => this.handleConnectionChange(state),
|
|
395
|
-
onContentChange: ({ isMermaid, isPlantUml }) => {
|
|
413
|
+
onContentChange: ({ isBase, isMermaid, isPlantUml }) => {
|
|
396
414
|
this.handleCommentEditorContentChange();
|
|
415
|
+
if (isBase) {
|
|
416
|
+
void this.renderBaseFilePreview(this.currentFilePath, {
|
|
417
|
+
source: this.session?.getText?.() ?? '',
|
|
418
|
+
});
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
|
|
397
422
|
this.previewRenderer.queueRender();
|
|
398
423
|
if (!isMermaid && !isPlantUml) {
|
|
399
424
|
this.scheduleBacklinkRefresh();
|
|
@@ -417,6 +442,7 @@ export class CollabMdAppShell {
|
|
|
417
442
|
this.commentUi.attachSession(session);
|
|
418
443
|
},
|
|
419
444
|
onRenderDrawioPreview: (filePath) => this.renderDrawioFilePreview(filePath),
|
|
445
|
+
onRenderBasePreview: (filePath) => this.renderBaseFilePreview(filePath),
|
|
420
446
|
onRenderExcalidrawPreview: (filePath) => this.renderExcalidrawFilePreview(filePath),
|
|
421
447
|
onRenderImagePreview: (filePath) => this.renderImageFilePreview(filePath),
|
|
422
448
|
onSyncWrapToggle: () => this.syncWrapToggle(),
|
|
@@ -426,7 +452,10 @@ export class CollabMdAppShell {
|
|
|
426
452
|
},
|
|
427
453
|
onUpdateLobbyCurrentFile: (filePath) => this.lobby.setCurrentFile(filePath),
|
|
428
454
|
onUpdateVisibleChrome: (filePath, { displayName }) => {
|
|
429
|
-
this.syncFileChrome(filePath, {
|
|
455
|
+
this.syncFileChrome(filePath, {
|
|
456
|
+
drawioMode: this.currentDrawioMode,
|
|
457
|
+
preferPreviewForBase: this.isBaseFile(filePath),
|
|
458
|
+
});
|
|
430
459
|
this.syncCommentChrome(filePath);
|
|
431
460
|
this.syncFileHistoryButton({ filePath, mode: 'editor' });
|
|
432
461
|
if (this.elements.activeFileName) {
|
|
@@ -434,7 +434,7 @@ function formatHorizontalRule(text, range) {
|
|
|
434
434
|
export function createMarkdownToolbarEdit(documentText, selectionRange, action) {
|
|
435
435
|
const text = String(documentText ?? '');
|
|
436
436
|
const range = normalizeRange(selectionRange, text.length);
|
|
437
|
-
let edit
|
|
437
|
+
let edit;
|
|
438
438
|
|
|
439
439
|
switch (action) {
|
|
440
440
|
case 'bold':
|
|
@@ -59,6 +59,34 @@ const ICONS = Object.freeze({
|
|
|
59
59
|
<path d="M9 16h6"/>
|
|
60
60
|
</svg>
|
|
61
61
|
`,
|
|
62
|
+
indent: `
|
|
63
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
64
|
+
<path d="M4 6h16"/>
|
|
65
|
+
<path d="M10 12h10"/>
|
|
66
|
+
<path d="M10 18h10"/>
|
|
67
|
+
<path d="m4 9 4 3-4 3"/>
|
|
68
|
+
</svg>
|
|
69
|
+
`,
|
|
70
|
+
outdent: `
|
|
71
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
72
|
+
<path d="M4 6h16"/>
|
|
73
|
+
<path d="M10 12h10"/>
|
|
74
|
+
<path d="M10 18h10"/>
|
|
75
|
+
<path d="m8 9-4 3 4 3"/>
|
|
76
|
+
</svg>
|
|
77
|
+
`,
|
|
78
|
+
redo: `
|
|
79
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
80
|
+
<path d="M21 7v6h-6"/>
|
|
81
|
+
<path d="M20 13a8 8 0 0 0-14-3"/>
|
|
82
|
+
</svg>
|
|
83
|
+
`,
|
|
84
|
+
undo: `
|
|
85
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
86
|
+
<path d="M3 7v6h6"/>
|
|
87
|
+
<path d="M4 13a8 8 0 0 1 14-3"/>
|
|
88
|
+
</svg>
|
|
89
|
+
`,
|
|
62
90
|
chevronDown: `
|
|
63
91
|
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
64
92
|
<path d="m6 9 6 6 6-6"/>
|
|
@@ -148,6 +176,13 @@ const INLINE_ACTIONS = Object.freeze([
|
|
|
148
176
|
{ action: 'code', label: 'Inline code', title: 'Inline code', icon: ICONS.code },
|
|
149
177
|
]);
|
|
150
178
|
|
|
179
|
+
const MOBILE_EDIT_COMMANDS = Object.freeze([
|
|
180
|
+
{ commandId: 'undo', label: 'Undo', title: 'Undo', icon: ICONS.undo },
|
|
181
|
+
{ commandId: 'redo', label: 'Redo', title: 'Redo', icon: ICONS.redo },
|
|
182
|
+
{ commandId: 'indentMore', label: 'Indent', title: 'Indent', icon: ICONS.indent },
|
|
183
|
+
{ commandId: 'indentLess', label: 'Outdent', title: 'Outdent', icon: ICONS.outdent },
|
|
184
|
+
]);
|
|
185
|
+
|
|
151
186
|
const MEDIA_ACTIONS = Object.freeze([
|
|
152
187
|
{ action: 'link', label: 'Insert link', title: 'Insert link', icon: ICONS.link },
|
|
153
188
|
{ action: 'image', label: 'Insert image', title: 'Insert image', icon: ICONS.image },
|
|
@@ -160,6 +195,7 @@ const INSERT_ACTIONS = Object.freeze([
|
|
|
160
195
|
]);
|
|
161
196
|
|
|
162
197
|
export const markdownToolbarLayout = Object.freeze([
|
|
198
|
+
{ kind: 'buttons', groupLabel: 'Edit', actions: MOBILE_EDIT_COMMANDS, mobileOnly: true },
|
|
163
199
|
{ kind: 'block-menu', actions: BLOCK_MENU_ACTIONS },
|
|
164
200
|
{ kind: 'buttons', groupLabel: 'Inline formatting', actions: INLINE_ACTIONS },
|
|
165
201
|
{ kind: 'buttons', groupLabel: 'Media and links', actions: MEDIA_ACTIONS },
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
isBaseFilePath,
|
|
2
3
|
isDrawioFilePath,
|
|
3
4
|
isMermaidFilePath,
|
|
4
5
|
isPlantUmlFilePath,
|
|
@@ -47,6 +48,24 @@ export function createMarkdownStarter(filePath) {
|
|
|
47
48
|
return `# ${title}\n\n`;
|
|
48
49
|
}
|
|
49
50
|
|
|
51
|
+
export function createBaseStarter(filePath) {
|
|
52
|
+
const normalizedPath = normalizeVaultPathInput(filePath);
|
|
53
|
+
const nextPath = isBaseFilePath(normalizedPath)
|
|
54
|
+
? normalizedPath
|
|
55
|
+
: `${normalizedPath}.base`;
|
|
56
|
+
return {
|
|
57
|
+
content: [
|
|
58
|
+
'views:',
|
|
59
|
+
' - type: table',
|
|
60
|
+
' name: Table',
|
|
61
|
+
' order:',
|
|
62
|
+
' - file.name',
|
|
63
|
+
'',
|
|
64
|
+
].join('\n'),
|
|
65
|
+
path: nextPath,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
50
69
|
export function createMermaidStarter(filePath) {
|
|
51
70
|
const normalizedPath = normalizeVaultPathInput(filePath);
|
|
52
71
|
const nextPath = isMermaidFilePath(normalizedPath)
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
postExportPageMessage,
|
|
3
|
+
prepareExportSnapshot,
|
|
4
|
+
runExportAdapter,
|
|
5
|
+
waitForBootstrapPayload,
|
|
6
|
+
waitForRenderedExportContent,
|
|
7
|
+
} from './export-pipeline.js';
|
|
2
8
|
import { groupHeadingWithFollowingBlock } from './export-print-layout.js';
|
|
3
9
|
|
|
4
10
|
function setStatus(message) {
|
|
@@ -28,13 +34,14 @@ function renderWarnings(snapshot) {
|
|
|
28
34
|
function renderSnapshot(snapshot) {
|
|
29
35
|
const mount = document.getElementById('exportContent');
|
|
30
36
|
if (!mount) {
|
|
31
|
-
return;
|
|
37
|
+
return null;
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
document.title = `${snapshot.title} — Export`;
|
|
35
41
|
mount.innerHTML = snapshot.html;
|
|
36
42
|
groupHeadingWithFollowingBlock(mount);
|
|
37
43
|
renderWarnings(snapshot);
|
|
44
|
+
return mount;
|
|
38
45
|
}
|
|
39
46
|
|
|
40
47
|
async function bootstrap() {
|
|
@@ -42,7 +49,8 @@ async function bootstrap() {
|
|
|
42
49
|
setStatus('Loading export content…');
|
|
43
50
|
const payload = await waitForBootstrapPayload();
|
|
44
51
|
const snapshot = await prepareExportSnapshot(payload);
|
|
45
|
-
renderSnapshot(snapshot);
|
|
52
|
+
const mount = renderSnapshot(snapshot);
|
|
53
|
+
snapshot.html = await waitForRenderedExportContent(mount);
|
|
46
54
|
setStatus(payload.action === 'pdf' ? 'Opening print dialog…' : 'Preparing DOCX download…');
|
|
47
55
|
await runExportAdapter(snapshot, payload.action);
|
|
48
56
|
setStatus(payload.action === 'pdf' ? 'Print dialog opened.' : 'DOCX download started.');
|
|
@@ -23,6 +23,7 @@ const LIGHT_EXPORT_MERMAID_THEME = Object.freeze({
|
|
|
23
23
|
});
|
|
24
24
|
const EXPORT_ASSET_FETCH_TIMEOUT_MS = 10_000;
|
|
25
25
|
const EXPORT_ASSET_MAX_BYTES = 10 * 1024 * 1024;
|
|
26
|
+
const EXPORT_RENDER_SETTLE_TIMEOUT_MS = 10_000;
|
|
26
27
|
const VIDEO_POSTER_CAPTURE_TIMEOUT_MS = 10_000;
|
|
27
28
|
const VIDEO_POSTER_CAPTURE_SEEK_SECONDS = 1;
|
|
28
29
|
|
|
@@ -48,6 +49,10 @@ function encodeSvgDataUrl(svgMarkup) {
|
|
|
48
49
|
return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgMarkup)}`;
|
|
49
50
|
}
|
|
50
51
|
|
|
52
|
+
function waitForAnimationFrame() {
|
|
53
|
+
return new Promise((resolve) => requestAnimationFrame(() => resolve()));
|
|
54
|
+
}
|
|
55
|
+
|
|
51
56
|
function blobToDataUrl(blob) {
|
|
52
57
|
return new Promise((resolve, reject) => {
|
|
53
58
|
const reader = new FileReader();
|
|
@@ -177,6 +182,49 @@ async function imageDataUrlToPngDataUrl(dataUrl) {
|
|
|
177
182
|
return canvas.toDataURL('image/png');
|
|
178
183
|
}
|
|
179
184
|
|
|
185
|
+
async function waitForImageElement(image, {
|
|
186
|
+
timeoutMs = EXPORT_RENDER_SETTLE_TIMEOUT_MS,
|
|
187
|
+
} = {}) {
|
|
188
|
+
if (!(image instanceof HTMLImageElement)) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if (!image.getAttribute('src')) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (!image.complete) {
|
|
197
|
+
await new Promise((resolve) => {
|
|
198
|
+
let settled = false;
|
|
199
|
+
const cleanup = () => {
|
|
200
|
+
if (settled) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
settled = true;
|
|
204
|
+
window.clearTimeout(timeoutId);
|
|
205
|
+
image.removeEventListener('load', handleDone);
|
|
206
|
+
image.removeEventListener('error', handleDone);
|
|
207
|
+
};
|
|
208
|
+
const handleDone = () => {
|
|
209
|
+
cleanup();
|
|
210
|
+
resolve();
|
|
211
|
+
};
|
|
212
|
+
const timeoutId = window.setTimeout(handleDone, timeoutMs);
|
|
213
|
+
|
|
214
|
+
image.addEventListener('load', handleDone, { once: true });
|
|
215
|
+
image.addEventListener('error', handleDone, { once: true });
|
|
216
|
+
|
|
217
|
+
if (image.complete) {
|
|
218
|
+
handleDone();
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (typeof image.decode === 'function') {
|
|
224
|
+
await image.decode().catch(() => {});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
180
228
|
async function fetchJson(url, init = {}) {
|
|
181
229
|
const response = await fetch(url, {
|
|
182
230
|
headers: {
|
|
@@ -217,7 +265,9 @@ async function fetchAsDataUrl(src, {
|
|
|
217
265
|
});
|
|
218
266
|
} catch (error) {
|
|
219
267
|
if (error instanceof DOMException && error.name === 'AbortError') {
|
|
220
|
-
throw new Error(`Timed out while fetching asset: ${assetUrl.toString()}
|
|
268
|
+
throw new Error(`Timed out while fetching asset: ${assetUrl.toString()}`, {
|
|
269
|
+
cause: error,
|
|
270
|
+
});
|
|
221
271
|
}
|
|
222
272
|
throw error;
|
|
223
273
|
} finally {
|
|
@@ -1320,8 +1370,8 @@ export async function docxAdapter(snapshot) {
|
|
|
1320
1370
|
}
|
|
1321
1371
|
|
|
1322
1372
|
export async function printPdfAdapter() {
|
|
1323
|
-
await
|
|
1324
|
-
await
|
|
1373
|
+
await waitForAnimationFrame();
|
|
1374
|
+
await waitForAnimationFrame();
|
|
1325
1375
|
|
|
1326
1376
|
await new Promise((resolve) => {
|
|
1327
1377
|
const timeoutId = window.setTimeout(resolve, 1500);
|
|
@@ -1335,6 +1385,33 @@ export async function printPdfAdapter() {
|
|
|
1335
1385
|
});
|
|
1336
1386
|
}
|
|
1337
1387
|
|
|
1388
|
+
export async function waitForRenderedExportContent(container, {
|
|
1389
|
+
settleFrames = 2,
|
|
1390
|
+
timeoutMs = EXPORT_RENDER_SETTLE_TIMEOUT_MS,
|
|
1391
|
+
} = {}) {
|
|
1392
|
+
if (!container) {
|
|
1393
|
+
return '';
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1396
|
+
const imageWaiters = Array.from(container.querySelectorAll('img')).map((image) => (
|
|
1397
|
+
waitForImageElement(image, { timeoutMs })
|
|
1398
|
+
));
|
|
1399
|
+
const fontReadyPromise = document.fonts?.ready
|
|
1400
|
+
? Promise.resolve(document.fonts.ready).catch(() => {})
|
|
1401
|
+
: Promise.resolve();
|
|
1402
|
+
|
|
1403
|
+
await Promise.allSettled([
|
|
1404
|
+
fontReadyPromise,
|
|
1405
|
+
...imageWaiters,
|
|
1406
|
+
]);
|
|
1407
|
+
|
|
1408
|
+
for (let index = 0; index < settleFrames; index += 1) {
|
|
1409
|
+
await waitForAnimationFrame();
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
return container.innerHTML;
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1338
1415
|
export async function runExportAdapter(snapshot, format) {
|
|
1339
1416
|
if (format === 'pdf') {
|
|
1340
1417
|
await printPdfAdapter(snapshot);
|
|
@@ -258,6 +258,10 @@ export class EditorSession {
|
|
|
258
258
|
this.viewAdapter.requestMeasure();
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
+
runEditorCommand(commandId) {
|
|
262
|
+
return this.viewAdapter.runEditorCommand(commandId);
|
|
263
|
+
}
|
|
264
|
+
|
|
261
265
|
applyMarkdownToolbarAction(action) {
|
|
262
266
|
return this.viewAdapter.applyMarkdownToolbarAction(action);
|
|
263
267
|
}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { autocompletion, closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
defaultKeymap,
|
|
4
|
+
history,
|
|
5
|
+
historyKeymap,
|
|
6
|
+
indentLess,
|
|
7
|
+
indentMore,
|
|
8
|
+
indentWithTab,
|
|
9
|
+
redo,
|
|
10
|
+
undo,
|
|
11
|
+
} from '@codemirror/commands';
|
|
3
12
|
import { markdown, markdownLanguage } from '@codemirror/lang-markdown';
|
|
13
|
+
import { yaml } from '@codemirror/lang-yaml';
|
|
4
14
|
import {
|
|
5
15
|
bracketMatching,
|
|
6
16
|
defaultHighlightStyle,
|
|
@@ -10,7 +20,7 @@ import {
|
|
|
10
20
|
syntaxHighlighting,
|
|
11
21
|
} from '@codemirror/language';
|
|
12
22
|
import { languages } from '@codemirror/language-data';
|
|
13
|
-
import { highlightSelectionMatches, searchKeymap } from '@codemirror/search';
|
|
23
|
+
import { highlightSelectionMatches, openSearchPanel, searchKeymap } from '@codemirror/search';
|
|
14
24
|
import { Compartment, EditorSelection, EditorState, Prec, StateEffect, StateField } from '@codemirror/state';
|
|
15
25
|
import { oneDark } from '@codemirror/theme-one-dark';
|
|
16
26
|
import {
|
|
@@ -28,6 +38,7 @@ import {
|
|
|
28
38
|
} from '@codemirror/view';
|
|
29
39
|
import { yCollab } from 'y-codemirror.next';
|
|
30
40
|
|
|
41
|
+
import { isBaseFilePath, isPlantUmlFilePath } from '../../domain/file-kind.js';
|
|
31
42
|
import { normalizeCommentQuote } from '../../domain/comment-threads.js';
|
|
32
43
|
import { createMarkdownToolbarEdit } from '../domain/markdown-formatting.js';
|
|
33
44
|
import { wikiLinkCompletions } from '../domain/wiki-link-completions.js';
|
|
@@ -42,6 +53,13 @@ const REMOTE_UPDATE_FLASH_DURATION_MS = 1350;
|
|
|
42
53
|
const REMOTE_UPDATE_CARET_MAX_LENGTH = 160;
|
|
43
54
|
const RECENT_LOCAL_INPUT_WINDOW_MS = 900;
|
|
44
55
|
const TASK_LIST_MARKER_PATTERN = /^(\s*(?:>\s*)*(?:[-+*]|\d+[.)])\s+\[)( |x|X)(\])(\s.*)?$/;
|
|
56
|
+
const EDITOR_COMMANDS = Object.freeze({
|
|
57
|
+
indentLess,
|
|
58
|
+
indentMore,
|
|
59
|
+
openSearch: openSearchPanel,
|
|
60
|
+
redo,
|
|
61
|
+
undo,
|
|
62
|
+
});
|
|
45
63
|
|
|
46
64
|
class RemoteUpdateCaretWidget extends WidgetType {
|
|
47
65
|
toDOM() {
|
|
@@ -280,14 +298,15 @@ function createEditorTheme(theme) {
|
|
|
280
298
|
}, { dark: theme === 'dark' });
|
|
281
299
|
}
|
|
282
300
|
|
|
283
|
-
function createLanguageExtension(filePath) {
|
|
284
|
-
if (
|
|
285
|
-
typeof filePath === 'string'
|
|
286
|
-
&& (filePath.toLowerCase().endsWith('.puml') || filePath.toLowerCase().endsWith('.plantuml'))
|
|
287
|
-
) {
|
|
301
|
+
export function createLanguageExtension(filePath) {
|
|
302
|
+
if (isPlantUmlFilePath(filePath)) {
|
|
288
303
|
return plantUmlLanguage;
|
|
289
304
|
}
|
|
290
305
|
|
|
306
|
+
if (isBaseFilePath(filePath)) {
|
|
307
|
+
return yaml();
|
|
308
|
+
}
|
|
309
|
+
|
|
291
310
|
return markdown({ base: markdownLanguage, codeLanguages: markdownCodeLanguages });
|
|
292
311
|
}
|
|
293
312
|
|
|
@@ -557,6 +576,24 @@ export class EditorViewAdapter {
|
|
|
557
576
|
this.editorView?.requestMeasure();
|
|
558
577
|
}
|
|
559
578
|
|
|
579
|
+
runEditorCommand(commandId) {
|
|
580
|
+
if (!this.editorView) {
|
|
581
|
+
return false;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
const command = EDITOR_COMMANDS[String(commandId ?? '')];
|
|
585
|
+
if (typeof command !== 'function') {
|
|
586
|
+
return false;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
const applied = command(this.editorView);
|
|
590
|
+
if (applied && commandId !== 'openSearch') {
|
|
591
|
+
this.editorView.focus();
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
return applied;
|
|
595
|
+
}
|
|
596
|
+
|
|
560
597
|
flashRemoteRange({ from = 0, to = 0 } = {}, durationMs = REMOTE_UPDATE_FLASH_DURATION_MS) {
|
|
561
598
|
const state = this.editorView?.state;
|
|
562
599
|
if (!state || state.doc.length === 0) {
|
|
@@ -258,10 +258,14 @@ export class ExcalidrawRoomClient {
|
|
|
258
258
|
} catch (readError) {
|
|
259
259
|
if (readError?.status !== 404 || !createIfMissing) {
|
|
260
260
|
if (readError?.status === 404) {
|
|
261
|
-
throw new Error(readError.message || 'Excalidraw file not found'
|
|
261
|
+
throw new Error(readError.message || 'Excalidraw file not found', {
|
|
262
|
+
cause: readError,
|
|
263
|
+
});
|
|
262
264
|
}
|
|
263
265
|
|
|
264
|
-
throw new Error(readError?.message || 'Failed to load Excalidraw file'
|
|
266
|
+
throw new Error(readError?.message || 'Failed to load Excalidraw file', {
|
|
267
|
+
cause: readError,
|
|
268
|
+
});
|
|
265
269
|
}
|
|
266
270
|
}
|
|
267
271
|
|
|
@@ -278,11 +282,15 @@ export class ExcalidrawRoomClient {
|
|
|
278
282
|
const existingData = await this.vaultClient.readFile(this.filePath);
|
|
279
283
|
return parseSceneJson(existingData.content);
|
|
280
284
|
} catch (conflictReadError) {
|
|
281
|
-
throw new Error(conflictReadError?.message || 'Failed to load existing Excalidraw file after create conflict'
|
|
285
|
+
throw new Error(conflictReadError?.message || 'Failed to load existing Excalidraw file after create conflict', {
|
|
286
|
+
cause: conflictReadError,
|
|
287
|
+
});
|
|
282
288
|
}
|
|
283
289
|
}
|
|
284
290
|
|
|
285
|
-
throw new Error(createError?.message || 'Failed to create Excalidraw file'
|
|
291
|
+
throw new Error(createError?.message || 'Failed to create Excalidraw file', {
|
|
292
|
+
cause: createError,
|
|
293
|
+
});
|
|
286
294
|
}
|
|
287
295
|
}
|
|
288
296
|
|
|
@@ -36,6 +36,60 @@ export class VaultApiClient {
|
|
|
36
36
|
return parseApiResponse(response, 'Failed to read file');
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
async queryBase({
|
|
40
|
+
activeFilePath = '',
|
|
41
|
+
path = '',
|
|
42
|
+
search = '',
|
|
43
|
+
source = null,
|
|
44
|
+
sourcePath = '',
|
|
45
|
+
view = '',
|
|
46
|
+
} = {}) {
|
|
47
|
+
const response = await fetch(resolveApiUrl('/base/query'), {
|
|
48
|
+
body: JSON.stringify({
|
|
49
|
+
activeFilePath,
|
|
50
|
+
path,
|
|
51
|
+
search,
|
|
52
|
+
source,
|
|
53
|
+
sourcePath,
|
|
54
|
+
view,
|
|
55
|
+
}),
|
|
56
|
+
headers: { 'Content-Type': 'application/json' },
|
|
57
|
+
method: 'POST',
|
|
58
|
+
});
|
|
59
|
+
return parseApiResponse(response, 'Failed to query base');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async exportBaseCsv({
|
|
63
|
+
activeFilePath = '',
|
|
64
|
+
path = '',
|
|
65
|
+
search = '',
|
|
66
|
+
source = null,
|
|
67
|
+
sourcePath = '',
|
|
68
|
+
view = '',
|
|
69
|
+
} = {}) {
|
|
70
|
+
const response = await fetch(resolveApiUrl('/base/export'), {
|
|
71
|
+
body: JSON.stringify({
|
|
72
|
+
activeFilePath,
|
|
73
|
+
path,
|
|
74
|
+
search,
|
|
75
|
+
source,
|
|
76
|
+
sourcePath,
|
|
77
|
+
view,
|
|
78
|
+
}),
|
|
79
|
+
headers: { 'Content-Type': 'application/json' },
|
|
80
|
+
method: 'POST',
|
|
81
|
+
});
|
|
82
|
+
if (!response.ok) {
|
|
83
|
+
const payload = await response.json().catch(() => ({}));
|
|
84
|
+
throw new Error(payload.error || 'Failed to export base CSV');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
blob: await response.blob(),
|
|
89
|
+
contentDisposition: response.headers.get('content-disposition') || '',
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
39
93
|
async createFile({ content, path, requestId = null }) {
|
|
40
94
|
const response = await fetch(resolveApiUrl('/file'), {
|
|
41
95
|
body: JSON.stringify({ content, path }),
|
|
@@ -242,6 +242,14 @@ export function appShellTemplate() {
|
|
|
242
242
|
<span class="ui-toolbar-button-label">Share</span>
|
|
243
243
|
</button>
|
|
244
244
|
|
|
245
|
+
<button class=${buttonClassNames({ variant: 'ghost', toolbar: true, extra: 'toolbar-search-files-btn' })} id="searchFilesBtn" aria-label="Search files" title="Search files">
|
|
246
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
|
|
247
|
+
<circle cx="11" cy="11" r="7"></circle>
|
|
248
|
+
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
|
|
249
|
+
</svg>
|
|
250
|
+
<span class="ui-toolbar-button-label">Search files</span>
|
|
251
|
+
</button>
|
|
252
|
+
|
|
245
253
|
<details class="toolbar-overflow-group hidden" id="exportMenuGroup">
|
|
246
254
|
<summary class=${buttonClassNames({ variant: 'ghost', toolbar: true, extra: 'toolbar-overflow-group-toggle' })} aria-label="Export options" title="Export">
|
|
247
255
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
@@ -327,6 +335,13 @@ export function appShellTemplate() {
|
|
|
327
335
|
<span class="pane-label-meta" id="lineInfo">Ln 1, Col 1</span>
|
|
328
336
|
</div>
|
|
329
337
|
<div class="pane-header-actions">
|
|
338
|
+
<button class=${buttonClassNames({ variant: 'ghost', size: 'compact', toggle: true, extra: 'mobile-editor-find-btn' })} id="editorFindBtn" aria-label="Find in file" title="Find in file">
|
|
339
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
|
|
340
|
+
<circle cx="11" cy="11" r="7"></circle>
|
|
341
|
+
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
|
|
342
|
+
</svg>
|
|
343
|
+
<span class="ui-action-label">Find</span>
|
|
344
|
+
</button>
|
|
330
345
|
<button class=${buttonClassNames({ variant: 'ghost', size: 'compact', toggle: true, extra: 'hidden' })} id="commentSelectionBtn" aria-label="Comment current line or selection" title="Comment current line or selection">
|
|
331
346
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
332
347
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
|
|
@@ -363,6 +378,18 @@ export function appShellTemplate() {
|
|
|
363
378
|
<div class="pane-header">
|
|
364
379
|
<span class="pane-label">Preview</span>
|
|
365
380
|
<div class="pane-header-actions">
|
|
381
|
+
<div id="backlinksHeaderPanel" class="backlinks-panel backlinks-panel-header hidden" data-backlinks-variant="header">
|
|
382
|
+
<button type="button" class="backlinks-header" aria-expanded="false">
|
|
383
|
+
<svg class="backlinks-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
|
|
384
|
+
<polyline points="9 18 15 12 9 6"></polyline>
|
|
385
|
+
</svg>
|
|
386
|
+
<span class="backlinks-toggle">0 Linked Mentions</span>
|
|
387
|
+
<span class="backlinks-count"></span>
|
|
388
|
+
</button>
|
|
389
|
+
<div class="backlinks-body" aria-hidden="true" inert>
|
|
390
|
+
<div class="backlinks-list"></div>
|
|
391
|
+
</div>
|
|
392
|
+
</div>
|
|
366
393
|
<button class=${buttonClassNames({ variant: 'ghost', size: 'compact', toggle: true, extra: 'hidden' })} id="commentsToggle" aria-label="Toggle comments" title="Toggle comments">
|
|
367
394
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
368
395
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
|