collabmd 0.1.49 → 0.1.52
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 +11 -660
- package/bin/collabmd.js +36 -20
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BEz2BKN1.js +1 -0
- package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/client/assets/Middleware-DUgFSleI.js +1 -0
- package/dist/client/assets/_basePickBy-QJXUw_pr.js +1 -0
- package/dist/client/assets/_baseUniq-DR4vVjyC.js +1 -0
- package/dist/client/assets/abnfDiagram-O67JEVCF-Dwt6a0Ds.js +1 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-DxNxad6-.js +1 -0
- package/dist/client/assets/ar-SA-5WIASEJP-Di7OimCN.js +10 -0
- package/dist/client/assets/architecture-7GRP2DOG-BBwRXFv3.js +1 -0
- package/dist/client/assets/architecture-7GRP2DOG-DJVtYNt-.js +1 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-C1uvg5id.js +36 -0
- package/dist/client/assets/architectureDiagram-NJMV4G6O-D5CGiX3G.js +36 -0
- package/dist/client/assets/az-AZ-V5EUQD6C-C19OGTT_.js +1 -0
- package/dist/client/assets/{babel-CY5KOv-I.js → babel-Bi_28hhi.js} +1 -1
- package/dist/client/assets/band-D-Cum8PO.js +1 -0
- package/dist/client/assets/bg-BG-EXASCMTR-BIt0xWyb.js +5 -0
- package/dist/client/assets/blockDiagram-BEXU5L5S-BgTM0var.js +140 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-B2YonsoG.js +129 -0
- package/dist/client/assets/bn-BD-U4SYNFCO-CdNaPy4Q.js +3 -0
- package/dist/client/assets/bn-IN-HKDJIITE-CdNaPy4Q.js +3 -0
- package/dist/client/assets/{browser-BKLM0ThC-IxjwuOIz-BBqQnUEb.js → browser-BKLM0ThC-IxjwuOIz-C0mP17s1.js} +1 -1
- package/dist/client/assets/{browser-utils-DbXSMI-6.js → browser-utils-vlHL9goC.js} +1 -1
- package/dist/client/assets/{c4Diagram-7LVT6UL2-yD2poxqw.js → c4Diagram-7LVT6UL2-r4IwomZm.js} +2 -2
- package/dist/client/assets/c4Diagram-YGBWAQC7-_xZPrNkB.js +38 -0
- package/dist/client/assets/ca-ES-2KGUU5XB-C9t-c0cH.js +8 -0
- package/dist/client/assets/channel-CgcHBnmr.js +1 -0
- package/dist/client/assets/chunk-2E4U76K2-CIQUuV9n.js +1 -0
- package/dist/client/assets/chunk-2Q5K7J3B-BMFG3ur0.js +1 -0
- package/dist/client/assets/{chunk-2ZTRR5NV-C2qZJila.js → chunk-2ZTRR5NV-CnDP55cn.js} +1 -1
- package/dist/client/assets/chunk-2ZTRR5NV-DcPRfelM.js +2 -0
- package/dist/client/assets/chunk-3FUC2YCW-8tZlhTGX.js +1 -0
- package/dist/client/assets/{chunk-3Z5EZCMW-DMniOlPd.js → chunk-3Z5EZCMW-BAnA6eQ7.js} +1 -1
- package/dist/client/assets/chunk-3Z5EZCMW-Yx4Q5AcN.js +1 -0
- package/dist/client/assets/chunk-4HAMMTFA-q0ldNVvr.js +62 -0
- package/dist/client/assets/chunk-4SOEAONT-C3fufoVl.js +40 -0
- package/dist/client/assets/chunk-5DYCD2WN-BKWCKnK-.js +1 -0
- package/dist/client/assets/{chunk-5V3GS4D5-i-ZDOEnP.js → chunk-5V3GS4D5-B5uC2oxu.js} +1 -1
- package/dist/client/assets/chunk-5V3GS4D5-BR7kgIgJ.js +1 -0
- package/dist/client/assets/chunk-5VM5RSS4-hE9rU_bl.js +15 -0
- package/dist/client/assets/chunk-6AEJRKK7-DTVZj5bY.js +1 -0
- package/dist/client/assets/{chunk-6AZGARVD-BB6FqMl-.js → chunk-6AZGARVD--pTGpDnx.js} +1 -1
- package/dist/client/assets/chunk-6AZGARVD-CnZDr4Cj.js +1 -0
- package/dist/client/assets/{chunk-6EIED4P4-DdUJkP0f.js → chunk-6EIED4P4-Bp8dpTvX.js} +1 -1
- package/dist/client/assets/chunk-6EIED4P4-DBVWq7Tz.js +1 -0
- package/dist/client/assets/{chunk-6K3QC6MW-CqVsVn-y.js → chunk-6K3QC6MW-DGVRzL6v.js} +1 -1
- package/dist/client/assets/chunk-6K3QC6MW-JnuvEGV4.js +1 -0
- package/dist/client/assets/{chunk-6TQVIW2G-DKlLbNIP.js → chunk-6TQVIW2G-BSj0l_pu.js} +1 -1
- package/dist/client/assets/chunk-6TQVIW2G-DgBX-Pv0.js +1 -0
- package/dist/client/assets/chunk-742MDFTN-D1nh6vNv.js +1 -0
- package/dist/client/assets/{chunk-747NJXEK-BFkZPlab.js → chunk-747NJXEK-BjqqAsS9.js} +1 -1
- package/dist/client/assets/chunk-747NJXEK-Cur1aosP.js +2 -0
- package/dist/client/assets/chunk-75Z2AOVW-DitkSoSG.js +2 -0
- package/dist/client/assets/chunk-7INBJB4K-CDmiHbaX.js +62 -0
- package/dist/client/assets/chunk-7M6MHVWA-BDakkknV.js +213 -0
- package/dist/client/assets/chunk-7PRAP22T-9uTvtc_-.js +1 -0
- package/dist/client/assets/{chunk-CLGD4ZFX-BMeArk03.js → chunk-CLGD4ZFX-BfYJtJm1.js} +1 -1
- package/dist/client/assets/chunk-DU6HZSFF-CWlP1Dk_.js +125 -0
- package/dist/client/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
- package/dist/client/assets/chunk-DYU5D34O-DN0WQZBm.js +1 -0
- package/dist/client/assets/{chunk-F27PBJKO-D4xNct1r.js → chunk-F27PBJKO-DPcsPcEs.js} +1 -1
- package/dist/client/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-Dmmo5Kak.js} +9 -9
- package/dist/client/assets/chunk-FOHPRMQF-DzxwRta7.js +161 -0
- package/dist/client/assets/chunk-GMAD6QVW-Bgk8qnty.js +8 -0
- package/dist/client/assets/chunk-GNY47TPC-CTrH5O5R.js +1 -0
- package/dist/client/assets/{chunk-SVP7TREG-DB485R5x.js → chunk-GTNCS2PH-ChgkzEIi.js} +1 -1
- package/dist/client/assets/chunk-GVQU2GXP-CQ8cl-Uu.js +1 -0
- package/dist/client/assets/chunk-GWA4HPMP-CGmv2yIq.js +1 -0
- package/dist/client/assets/{chunk-I5DQTOEV-Hm2LfiYI.js → chunk-I5DQTOEV-B98XA8VK.js} +1 -1
- package/dist/client/assets/chunk-I5DQTOEV-aBZooNp1.js +1 -0
- package/dist/client/assets/{chunk-ICYGCRZG-749o-pGJ.js → chunk-ICYGCRZG-D97UeqJs.js} +1 -1
- package/dist/client/assets/chunk-ICYGCRZG-odvlDZyA.js +1 -0
- package/dist/client/assets/{chunk-IH6LHLGP-CC6I9F3i.js → chunk-IH6LHLGP-BNevEHZK.js} +1 -1
- package/dist/client/assets/chunk-IH6LHLGP-CvXe34hB.js +1 -0
- package/dist/client/assets/{chunk-IMKFNOWR-D8jEuU3Q.js → chunk-IMKFNOWR-CBqxfpcP.js} +2 -2
- package/dist/client/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
- package/dist/client/assets/chunk-JWPE2WC7-GDilnS5Y.js +1 -0
- package/dist/client/assets/{chunk-KI3K4JFJ-Rma-0k_M.js → chunk-KI3K4JFJ-D5XCPRZv.js} +1 -1
- package/dist/client/assets/chunk-KI3K4JFJ-FTtDwx3-.js +1 -0
- package/dist/client/assets/chunk-L3NEJ4N5-BflzkdTI.js +1 -0
- package/dist/client/assets/{chunk-LNGE3PJU-DWpGwHrW.js → chunk-LNGE3PJU-5-SxdO55.js} +1 -1
- package/dist/client/assets/chunk-LNGE3PJU-5nWSl6jJ.js +34 -0
- package/dist/client/assets/chunk-MBY4JIJT-DTJ4UcAm.js +8 -0
- package/dist/client/assets/chunk-NETBCI7D-CmUwDWUZ.js +1 -0
- package/dist/client/assets/chunk-O7XYJQB3-D0_ZY2za.js +126 -0
- package/dist/client/assets/chunk-OSK3NFVY-DqeKV_pg.js +10 -0
- package/dist/client/assets/{chunk-OUJLGHUK-D0j2JRSg.js → chunk-OUJLGHUK-75UXlPjl.js} +1 -1
- package/dist/client/assets/chunk-OUJLGHUK-DA95-S9B.js +2 -0
- package/dist/client/assets/{chunk-P2QGCYS3-Oag_FdCq.js → chunk-P2QGCYS3-BA--DhpW.js} +1 -1
- package/dist/client/assets/chunk-POPQ4Y6H-V_NEc45n.js +1 -0
- package/dist/client/assets/chunk-PWAF6VOD-D_kLse-N.js +1 -0
- package/dist/client/assets/{chunk-FLYJHZSQ-Be7lKF17.js → chunk-RUX4WMZV-BGnd3s_C.js} +4 -4
- package/dist/client/assets/{chunk-SHT3W25Y-BiQGljao.js → chunk-SHT3W25Y-YM3S-A_M.js} +5 -5
- package/dist/client/assets/chunk-SVP7TREG-DdNhDOmW.js +88 -0
- package/dist/client/assets/{chunk-TICWLB2K-8rAVvoS3.js → chunk-TICWLB2K-BGGgCr4x.js} +3 -3
- package/dist/client/assets/chunk-TLUHSLCS-DCZhIDYA.js +1 -0
- package/dist/client/assets/chunk-UA2S7LBM-DicYDjDM.js +1 -0
- package/dist/client/assets/{chunk-UY3FDG6J-CnmaAkG5.js → chunk-UY3FDG6J-DqSM_0FB.js} +1 -1
- package/dist/client/assets/chunk-UY3FDG6J-QT-rkt0y.js +1 -0
- package/dist/client/assets/chunk-WEXAMYUT-DDlVNp8J.js +1 -0
- package/dist/client/assets/chunk-X3CZISLH-BixgQztF.js +1 -0
- package/dist/client/assets/chunk-X3CZISLH-DwWpRaN8.js +1 -0
- package/dist/client/assets/{chunk-XHIXRSVI-BFQ6B8BE.js → chunk-XHIXRSVI-BSN7JlfK.js} +1 -1
- package/dist/client/assets/chunk-XHIXRSVI-DN_fEwws.js +1 -0
- package/dist/client/assets/chunk-XXDRQBXY-C7hQHDmQ.js +1 -0
- package/dist/client/assets/{chunk-XXDRQBXY-BvKO0v-W.js → chunk-XXDRQBXY-CdRN9Akd.js} +1 -1
- package/dist/client/assets/chunk-Y2CYZVJY-BbRBGnmc.js +1 -0
- package/dist/client/assets/chunk-Z7XXMR3K-P4Vaq8hD.js +10 -0
- package/dist/client/assets/chunk-ZIGJFQKS-b8OUHKK5.js +2 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-QLbh_Nkf.js +1 -0
- package/dist/client/assets/classDiagram-v2-NBCMYWYE-3TQORq33.js +217 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-QLbh_Nkf.js +1 -0
- package/dist/client/assets/clone-C1hp9FUh.js +1 -0
- package/dist/client/assets/comment-markdown-renderer-Bxi_JRSR.js +1 -0
- package/dist/client/assets/comment-thread-store-CHvy8GF8.js +1 -0
- package/dist/client/assets/comment-threads-nJhK1yfc.js +4 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-Czr0rwGr.js +1 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-DLmEf9HS.js +1 -0
- package/dist/client/assets/cs-CZ-VUCGPRML-BfCoYAgj.js +7 -0
- package/dist/client/assets/cynefin-OW5HDTMX-CF3N9j1_.js +1 -0
- package/dist/client/assets/cynefin-OW5HDTMX-e-Quc9Yl.js +1 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-DTnLZaO7.js +62 -0
- package/dist/client/assets/cynefinDiagram-VND7K2PF-DwfMZ3vk.js +62 -0
- package/dist/client/assets/cytoscape-cose-bilkent-NdTYBUiT.js +1 -0
- package/dist/client/assets/cytoscape-fcose-DE9_QRG_.js +1 -0
- package/dist/client/assets/cytoscape.esm-EK2DW5Qr.js +321 -0
- package/dist/client/assets/da-DK-NNDP2IVP-DBw9ZNTR.js +2 -0
- package/dist/client/assets/dagre-6A5THRUB-DewyAGK6.js +4 -0
- package/dist/client/assets/dagre-D7FiCLLP.js +1 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-Cr67wLpQ.js → dagre-GXQ25YYZ-Vtyx08Qh.js} +2 -2
- package/dist/client/assets/de-CH-I7RAVIZN-DYW18Vsr.js +11 -0
- package/dist/client/assets/de-DE-WBQ3DQLR-DYW18Vsr.js +11 -0
- package/dist/client/assets/deferred-collab-D4cxEdad.css +1 -0
- package/dist/client/assets/deferred-git-BHKtkFYi.css +1 -0
- package/dist/client/assets/deferred-preview-BAXYgf4T.css +1 -0
- package/dist/client/assets/diagram-22UHCM2B-DbZirFfl.js +200 -0
- package/dist/client/assets/diagram-3UASUU5V-DmhdYv6_.js +24 -0
- package/dist/client/assets/diagram-ATOU4E4O-B5uX-jVO.js +3 -0
- package/dist/client/assets/diagram-CDSNMT55-D_qyS11R.js +30 -0
- package/dist/client/assets/diagram-MLGK6HIB-DIBG6Ivu.js +24 -0
- package/dist/client/assets/diagram-MPIPVDR6-D9XsALDV.js +41 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-DywERe__.js → diagram-S7CK7UJ4-CGTzfo2f.js} +3 -3
- package/dist/client/assets/diagram-UQ7AKVKN-CWZS8QtB.js +41 -0
- package/dist/client/assets/{diagram-VSXAHHWV-0H1a61Bn.js → diagram-VSXAHHWV-DaO1nOZF.js} +3 -3
- package/dist/client/assets/diagram-VX7I27RA-B54P6Cyf.js +24 -0
- package/dist/client/assets/diagram-Z3DM3KII-Cl2EXiXp.js +24 -0
- package/dist/client/assets/direct-engine-DdrQKpgq-4QysbH_V.js +5 -0
- package/dist/client/assets/dist-B7fBbwrO.js +1 -0
- package/dist/client/assets/{dist-DGEbEfw4.js → dist-BVCNc-Es.js} +1 -1
- package/dist/client/assets/dist-BYBF4LtZ.js +1 -0
- package/dist/client/assets/{dist-TW8iFRyW.js → dist-B_1hMrc6.js} +1 -1
- package/dist/client/assets/{dist-DVy5woUy.js → dist-BfpAc922.js} +1 -1
- package/dist/client/assets/dist-BnVaoRgZ.js +1 -0
- package/dist/client/assets/dist-Bog8M5U3.js +13 -0
- package/dist/client/assets/{dist-jVU5Be5P.js → dist-CAG5sIOj.js} +1 -1
- package/dist/client/assets/{dist-LQ4kDCKz.js → dist-CKf7LlAo.js} +1 -1
- package/dist/client/assets/{dist-BeajGMhO.js → dist-CUsXdnU4.js} +1 -1
- package/dist/client/assets/{dist-Tw-Fxpeb.js → dist-CXOUa90Q.js} +1 -1
- package/dist/client/assets/dist-CYMCikZo.js +1 -0
- package/dist/client/assets/dist-CYfPeupF.js +1 -0
- package/dist/client/assets/dist-Ch6Sr9KF.js +28 -0
- package/dist/client/assets/dist-Ck-B8onw.js +2 -0
- package/dist/client/assets/dist-CrkYYcOU.js +1 -0
- package/dist/client/assets/{dist-D5wCC32z.js → dist-CsQTfQFi.js} +1 -1
- package/dist/client/assets/dist-Cu5Ze2cs.js +6 -0
- package/dist/client/assets/{dist-C5NgpdG5.js → dist-CvVoyTRF.js} +1 -1
- package/dist/client/assets/{dist-GvvCNBe4.js → dist-D4kDR0g8.js} +1 -1
- package/dist/client/assets/dist-D8LnhZzy.js +1 -0
- package/dist/client/assets/{dist-D3fehAZ2.js → dist-DGa-2MNX.js} +2 -2
- package/dist/client/assets/dist-DI6c02Da.js +39 -0
- package/dist/client/assets/{dist-BPHLJ09L.js → dist-DNONgI1P.js} +2 -2
- package/dist/client/assets/{dist-C0G3AaXG.js → dist-DVBYH83t.js} +1 -1
- package/dist/client/assets/dist-DX6qtdxv.js +1 -0
- package/dist/client/assets/{dist-DzNmC81X.js → dist-Da-jLrCf.js} +1 -1
- package/dist/client/assets/dist-DofvCYzJ.js +1 -0
- package/dist/client/assets/{dist-CdmKGRGr.js → dist-Dx37MHWs.js} +1 -1
- package/dist/client/assets/dist-GTGhtpyW.js +9 -0
- package/dist/client/assets/{dist-BK9QvQrc.js → dist-W0FoeIxk.js} +9 -9
- package/dist/client/assets/{dist-mj2Ht75J.js → dist-Y6zYRI-A.js} +1 -1
- package/dist/client/assets/{dist-netZOQtD.js → dist-jVKfryIL.js} +1 -1
- package/dist/client/assets/{dist-DuH3ZrHo.js → dist-zHDLm1oE.js} +1 -1
- package/dist/client/assets/document-formatter-gO8qM2qY.js +1 -0
- package/dist/client/assets/drawioEditor-DCkWweiy.js +9 -0
- package/dist/client/assets/duration-BiuFXtXd.js +1 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-PfC84FyI.js +1 -0
- package/dist/client/assets/ebnfDiagram-ZINNZB2B-DYvm_QtE.js +1 -0
- package/dist/client/assets/editor-session-DxRyr4EM.js +14 -0
- package/dist/client/assets/el-GR-TYQHVGXW-Dx82YYAS.js +7 -0
- package/dist/client/assets/elk-276RUBZZ-B8LB3Pac.js +27 -0
- package/dist/client/assets/embedded-editor-base-elU0Avik.css +1 -0
- package/dist/client/assets/{embedpdf-DA4bA119-BPqZxwjc.js → embedpdf-DA4bA119-DsoNiPlQ.js} +4 -5
- package/dist/client/assets/{embedpdf-BmE13ZZ0.js → embedpdf-DyOonRvx.js} +1 -1
- package/dist/client/assets/{en-SJ2YIMFF-CJBL3nkq.js → en-GNC3RJIS-CEy_oGTd.js} +1 -1
- package/dist/client/assets/erDiagram-OPXOYQCR-o8GRv8A_.js +99 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CbrDdd5P.js → erDiagram-RLTQ6QDP-C9cJl5NB.js} +2 -2
- package/dist/client/assets/es-ES-JEUOREKJ-Rx0NUQDl.js +12 -0
- package/dist/client/assets/esm-BzZ1JFVo.js +65 -0
- package/dist/client/assets/{estree-CuT_pB8K.js → estree-DCT3Jm65.js} +4 -4
- package/dist/client/assets/eu-ES-SO5DEEAN-CDYm-BcK.js +8 -0
- package/dist/client/assets/eventmodeling-NTZA5JFV-CDy1bN6j.js +1 -0
- package/dist/client/assets/eventmodeling-NTZA5JFV-Dxtv5D-P.js +1 -0
- package/dist/client/assets/excalidraw-element-link-CGZ5934B.js +7 -0
- package/dist/client/assets/{excalidrawEditor-BbSbI80a.css → excalidrawEditor-BCTFp_CV.css} +1 -1
- package/dist/client/assets/excalidrawEditor-BVfSxjSO.js +9 -0
- package/dist/client/assets/export-page-BCo_e15t.js +46 -0
- package/dist/client/assets/exportDocument-Ba-n1X4U.css +1 -0
- package/dist/client/assets/exportDocument-DP6oE_or.js +2 -0
- package/dist/client/assets/fa-IR-I4JNTJHK-CFtHZqoT.js +9 -0
- package/dist/client/assets/fi-FI-REAEF6HQ-BIpjJqIb.js +6 -0
- package/dist/client/assets/file-search-3hYF4cYa.js +1 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Bq4470NR.js +1 -0
- package/dist/client/assets/flowDiagram-KWPJA3E3-DQG9qGiU.js +1 -0
- package/dist/client/assets/forth-D6RzAl64.js +1 -0
- package/dist/client/assets/fr-FR-SUCL7J6B-DGAKE8jH.js +12 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-x40PW0Ah.js +292 -0
- package/dist/client/assets/ganttDiagram-FUAMR5RP-BQpsI7gQ.js +292 -0
- package/dist/client/assets/gitGraph-4MIJSDKK-B-rpDYbz.js +1 -0
- package/dist/client/assets/gitGraph-4MIJSDKK-ZaBIE4Lb.js +1 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-ahsNaZsp.js +106 -0
- package/dist/client/assets/gitGraphDiagram-X574FWY7-wbs_2m9f.js +106 -0
- package/dist/client/assets/gl-ES-KHCSOGVH-DWKh0CMu.js +6 -0
- package/dist/client/assets/graphlib-C9Tl7QrK.js +1 -0
- package/dist/client/assets/he-IL-JYXVXV2Q-zqbcM-4g.js +9 -0
- package/dist/client/assets/hi-IN-BU52H3BO-CY8v6eG9.js +3 -0
- package/dist/client/assets/highlight-theme-CzNkO-IJ.js +1 -0
- package/dist/client/assets/{html-Cdnr2qzU.js → html-CBXMuS97.js} +2 -2
- package/dist/client/assets/html-DTuc_pxj.js +1 -0
- package/dist/client/assets/hu-HU-OWADXDQ3-CEl6Udfh.js +3 -0
- package/dist/client/assets/id-ID-2WY7E4VX-CCAeQpPr.js +8 -0
- package/dist/client/assets/image-EJJKRVD3-BQfi5nWJ.js +1 -0
- package/dist/client/assets/{image-blob-reduce.esm-Dj7YBvMv.js → image-blob-reduce.esm-BFq-Mx5V.js} +2 -2
- package/dist/client/assets/index-BxAuGDoN.css +1 -0
- package/dist/client/assets/index-uw9O0z1c.js +1112 -0
- package/dist/client/assets/info-A6RAGUB7-BcGxhjED.js +1 -0
- package/dist/client/assets/info-A6RAGUB7-BlutK7BT.js +1 -0
- package/dist/client/assets/infoDiagram-27XIBGKW-MrZyptIy.js +2 -0
- package/dist/client/assets/infoDiagram-VRGFBTTK-KkUjDRAQ.js +2 -0
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BMPC6hfp.js → ishikawaDiagram-5VMMS53U-Bnt9yM0O.js} +2 -2
- package/dist/client/assets/ishikawaDiagram-OU5B5YK6-Di9BcpOY.js +70 -0
- package/dist/client/assets/it-IT-INVHSAJF-DytAgndh.js +12 -0
- package/dist/client/assets/ja-JP-JBNTKYP4-BflWlGhw.js +12 -0
- package/dist/client/assets/javascript-B9I2pbsP.js +1 -0
- package/dist/client/assets/javascript-DctB8BJo.js +1 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-B1sApUmM.js → journeyDiagram-3NMN7TZE-Bl0abK1r.js} +1 -1
- package/dist/client/assets/journeyDiagram-ZHPQQLJL-J-sGrs9e.js +139 -0
- package/dist/client/assets/jsx-runtime-DKj5X9O4.js +1 -0
- package/dist/client/assets/kaa-TC3VIB7V-B-xtZfy0.js +1 -0
- package/dist/client/assets/kab-KAB-UOUDSQKM-BmO0O4Y4.js +4 -0
- package/dist/client/assets/kanban-definition-PNTS6WVX-5ZDV_yIa.js +89 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-C9yP4td1.js → kanban-definition-UXKFOSKX-DMgUfNt0.js} +10 -10
- package/dist/client/assets/{katex-CXMH3UgJ.js → katex-9NBMfU68.js} +2 -2
- package/dist/client/assets/katex-ZlcWpGUi.js +257 -0
- package/dist/client/assets/kk-KZ-P5H2X7YS-CSQFB8IN.js +1 -0
- package/dist/client/assets/{km-KH-PCWDKPHP-DSmy5shj.js → km-KH-IHMV2US7-BxrjuEzr.js} +4 -4
- package/dist/client/assets/ko-KR-ZTMANIDF-BnNRXd5J.js +5 -0
- package/dist/client/assets/ku-TR-GPJTRB5G-BZM7f2aT.js +6 -0
- package/dist/client/assets/line-DEbP8Ok6.js +1 -0
- package/dist/client/assets/linear-DExL6ILt.js +1 -0
- package/dist/client/assets/lobby-presence-Cz5jGOPg.js +1 -0
- package/dist/client/assets/lt-LT-V3XDOK3P-MVQBOHmF.js +3 -0
- package/dist/client/assets/{lua-CL1SqxuB.js → lua-zbJo2mq3.js} +1 -1
- package/dist/client/assets/lv-LV-DVQ3FADO-CrenwAhS.js +4 -0
- package/dist/client/assets/{markdown-CByV-4CU.js → markdown-Bo71X2X2.js} +8 -8
- package/dist/client/assets/markdown-it-DpvIRaVq.js +13 -0
- package/dist/client/assets/markdown-math-CyyBVuDO.js +517 -0
- package/dist/client/assets/merge-CALoRt3l.js +1 -0
- package/dist/client/assets/mermaid-parser.core-Bpogunsh.js +3 -0
- package/dist/client/assets/mermaid-parser.core-DBy--Jc0.js +3 -0
- package/dist/client/assets/mermaid.core-BeOUPE3Q.js +10 -0
- package/dist/client/assets/mindmap-definition-NLK3R4M7-ByVb-0vj.js +96 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-BUQHcYbK.js → mindmap-definition-YA3MSWOX-DBZN5_GH.js} +29 -29
- package/dist/client/assets/mr-IN-VZ6HH5FE-B-PHPglH.js +9 -0
- package/dist/client/assets/my-MM-XYKWHRK6-Be5sYp5q.js +1 -0
- package/dist/client/assets/nb-NO-UNO2GGZJ-BvSKGdja.js +8 -0
- package/dist/client/assets/{nginx-BMaDbqW3.js → nginx-8H7HVH4w.js} +1 -1
- package/dist/client/assets/nl-NL-76EFHT4P-C2yNx1Cj.js +13 -0
- package/dist/client/assets/nn-NO-CFKD7ABE-4NsqlDRP.js +4 -0
- package/dist/client/assets/oc-FR-YBJTCJ3J-B4OTQsWW.js +4 -0
- package/dist/client/assets/pa-IN-SNOXSMRV-CKj_sOG7.js +4 -0
- package/dist/client/assets/packet-AYTQ26CC-CqpSjTWl.js +1 -0
- package/dist/client/assets/packet-AYTQ26CC-DvbY8dI6.js +1 -0
- package/dist/client/assets/pegDiagram-GJSIUBJH-aost1sSO.js +1 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DRo8CZu3.js +1 -0
- package/dist/client/assets/percentages-LWOC67ZH-VhvllE7L.js +1 -0
- package/dist/client/assets/{pica-xkWDouSg.js → pica-BPrp-GK1.js} +1 -1
- package/dist/client/assets/pie-DzWLGKAD.js +1 -0
- package/dist/client/assets/pie-WAS4IAKB-Bg2eCNl5.js +1 -0
- package/dist/client/assets/pie-WAS4IAKB-DWSm9SSD.js +1 -0
- package/dist/client/assets/pieDiagram-5QR66LMP-BICdpEuz.js +39 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-CZThaHsc.js +39 -0
- package/dist/client/assets/pl-PL-BSY6YFZ3-CFuzA6L0.js +12 -0
- package/dist/client/assets/preload-helper-BAlEavIC.js +1 -0
- package/dist/client/assets/preview-render-compiler-ktU0SXxY.js +43 -0
- package/dist/client/assets/preview-render-profile-D652PAjA.js +1 -0
- package/dist/client/assets/preview-render-worker-BI2bFVqM.js +575 -0
- package/dist/client/assets/prod-DU-0VfI7.js +145 -0
- package/dist/client/assets/prod-cXUNdmYV.js +1 -0
- package/dist/client/assets/pt-BR-CZDV62R3-CkPMtyNx.js +10 -0
- package/dist/client/assets/pt-PT-JO57XJJW-CBSnfGtF.js +12 -0
- package/dist/client/assets/{pug-Wky5Dnfy.js → pug-CqqUmdG7.js} +1 -1
- package/dist/client/assets/purify.es-go7v6Te-.js +3 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DwexhEhd.js → quadrantDiagram-AXDQQJYC-C5iowkl_.js} +3 -3
- package/dist/client/assets/quadrantDiagram-O4NWA36T-Bgx5bF97.js +7 -0
- package/dist/client/assets/quick-switcher-De4PjZFC.css +1 -0
- package/dist/client/assets/quick-switcher-controller-DSlOwOsU.js +1 -0
- package/dist/client/assets/radar-RG4KPBEZ-BfNQUEQy.js +1 -0
- package/dist/client/assets/radar-RG4KPBEZ-DxExotg6.js +1 -0
- package/dist/client/assets/railroad-74A4TZTK-BaQ6U6eJ.js +1 -0
- package/dist/client/assets/railroad-74A4TZTK-FfHmeIQk.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-BJ3KZw7J.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-CLkdDRsJ.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-B162zvcG.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-DA0sEq7w.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-CGs5GeJ5.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-DCmlICzO.js +1 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BTt_rKjT.js +1 -0
- package/dist/client/assets/railroadDiagram-XR7U4H2S-DbVoNgSz.js +1 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-C4cKwiIw.js → requirementDiagram-BXWQKSXE-BkvazG7r.js} +1 -1
- package/dist/client/assets/requirementDiagram-PLB6GJNP-BT0j9C40.js +84 -0
- package/dist/client/assets/ro-RO-UZ5ICYYN-BOuntc_r.js +12 -0
- package/dist/client/assets/room-DX7lIfnu.js +1 -0
- package/dist/client/assets/ru-RU-AN7JPREC-D-ow3SNR.js +10 -0
- package/dist/client/assets/runtime-config-BFVdhnJu.js +1 -0
- package/dist/client/assets/runtime-paths-Cn0snt_9.js +1 -0
- package/dist/client/assets/sankeyDiagram-IPEJSGJF-X1BCUIrf.js +40 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-C_IemB9h.js +40 -0
- package/dist/client/assets/sankeyLinkHorizontal-usjP1-Cg.js +1 -0
- package/dist/client/assets/sequenceDiagram-PO4LG4MO-B-2QfXhV.js +169 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BX6jqJFD.js → sequenceDiagram-WJ2MYXX4-CxFBgLGd.js} +3 -3
- package/dist/client/assets/si-LK-7CBLD6QQ-c91EepX0.js +1 -0
- package/dist/client/assets/{sieve-BAxa3IjF.js → sieve-tLWDfEkZ.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-DrzwYt5z.js +1 -0
- package/dist/client/assets/sk-SK-SWR6DKBI-D5vFMIL6.js +7 -0
- package/dist/client/assets/sl-SI-QY5KCFGA-RZhwMpQL.js +8 -0
- package/dist/client/assets/solr-B78wSQJQ.js +1 -0
- package/dist/client/assets/src-XiVvaevx.js +1 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-BaSQ6Owj.js +1 -0
- package/dist/client/assets/stateDiagram-v2-GCMORJYK-CsVcfwVp.js +291 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CLlwrdvU.js +1 -0
- package/dist/client/assets/sv-SE-O3OFCY3J-DnS86_7q.js +12 -0
- package/dist/client/assets/swimlanes-2SLR337P-CnYTVqRX.js +1 -0
- package/dist/client/assets/swimlanes-42K2YHIH-CALFEmiS.js +1 -0
- package/dist/client/assets/swimlanesDiagram-TC7HE7FX-Bh4tmz27.js +8 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-xhehUG9e.js +8 -0
- package/dist/client/assets/ta-IN-V6NHHU6Z-D5jy7_AE.js +6 -0
- package/dist/client/assets/th-TH-WLSZUSBX-DHehoYR2.js +1 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-BA-lVH6P.js → timeline-definition-24CTP7MA-zse-5Dbm.js} +5 -5
- package/dist/client/assets/timeline-definition-EJHVYXUP-BhqPlKkN.js +120 -0
- package/dist/client/assets/tr-TR-GUFYG22B-ClVaf8h1.js +4 -0
- package/dist/client/assets/treeView-Q6P3EWNA-BvHOzbu9.js +1 -0
- package/dist/client/assets/treeView-Q6P3EWNA-Cccy0ngL.js +1 -0
- package/dist/client/assets/treemap-CxZTjHiH.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-oety7paS.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-sMRCjCtX.js +1 -0
- package/dist/client/assets/uk-UA-K6SV5NFQ-BLTTtyNB.js +6 -0
- package/dist/client/assets/usecaseDiagram-POWQR4AR-DR2LHQYs.js +328 -0
- package/dist/client/assets/uz-UZ-TVKTZO2G-Bm02Eg3D.js +1 -0
- package/dist/client/assets/v4-DDdyfk2q.js +1 -0
- package/dist/client/assets/vault-api-client-BQxLVPeF.js +7 -0
- package/dist/client/assets/vault-paths-BT-6nztu.js +1 -0
- package/dist/client/assets/vault-utils-Bct69Xw2.js +1 -0
- package/dist/client/assets/venn.esm-C5rDfA9t.js +7 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DgHr6cJD.js +28 -0
- package/dist/client/assets/vennDiagram-UO4OBE2U-BRwLn2Q1.js +28 -0
- package/dist/client/assets/{verilog-7LoJAqYT.js → verilog-CjI9Y6RI.js} +1 -1
- package/dist/client/assets/vi-VN-7FKFXJNO-CL3WPhmG.js +7 -0
- package/dist/client/assets/wardley-WFR3VGLG-BdwDpX_I.js +1 -0
- package/dist/client/assets/wardley-WFR3VGLG-Y7xty_3m.js +1 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-C2oY-YbF.js → wardleyDiagram-VM6X3IG4-9A60XZis.js} +3 -3
- package/dist/client/assets/wardleyDiagram-VNRHLVJA-B_tMcVFG.js +78 -0
- package/dist/client/assets/wiki-link-resolver-Dch88erO.js +1 -0
- package/dist/client/assets/{worker-engine-m0rlHn8R-S8mpn_O0.js → worker-engine-m0rlHn8R-5h66k403.js} +1 -1
- package/dist/client/assets/workspace-change-CVA9dVmy.js +1 -0
- package/dist/client/assets/workspace-sync-client-C2pdaQUN.js +1 -0
- package/dist/client/assets/xychartDiagram-PMCCYNJV-fRpZ1MA5.js +7 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-D00iy-wB.js +7 -0
- package/dist/client/assets/{yaml-9ltHPDNO.js → yaml-BcZaqAz8.js} +1 -1
- package/dist/client/assets/yjs-B41tM6Sz.js +4 -0
- package/dist/client/assets/yjs-provider-reset-guard-DpntzUDR.js +1 -0
- package/dist/client/assets/zh-CN-AOKVLNNK-DGidDH2b.js +11 -0
- package/dist/client/assets/zh-HK-CDKPF5DC-CRcNR3rk.js +1 -0
- package/dist/client/assets/zh-TW-ZVGYESGW-C7Qji1y6.js +13 -0
- package/dist/client/drawio-editor.html +9 -9
- package/dist/client/excalidraw-editor.html +43 -38
- package/dist/client/export-document.html +6 -7
- package/dist/client/index.html +49 -38
- package/package.json +23 -26
- package/src/client/app/drawio-editor.html +2 -1
- package/src/client/app/excalidraw-editor.html +2 -1
- package/src/client/app/export-document-entry.js +1 -0
- package/src/client/app/export-document.html +2 -1
- package/src/client/app/index.html +47 -16
- package/src/client/app/main-entry.js +1 -19
- package/src/client/application/app-shell/comments-feature.js +6 -0
- package/src/client/application/app-shell/ui-feature-shell.js +156 -59
- package/src/client/application/app-shell/ui-feature-tab-activity.js +8 -3
- package/src/client/application/app-shell-elements.js +7 -0
- package/src/client/application/diagram-preview-hydrator.js +7 -0
- package/src/client/application/highlight-theme.js +16 -0
- package/src/client/application/mermaid-preview-hydrator.js +89 -3
- package/src/client/application/preview-diagram-utils.js +1 -0
- package/src/client/application/preview-render-compiler.js +45 -20
- package/src/client/application/preview-render-executor.js +4 -27
- package/src/client/application/preview-render-profile.js +8 -12
- package/src/client/application/preview-renderer.js +27 -7
- package/src/client/application/workspace-coordinator.js +20 -21
- package/src/client/bootstrap/collabmd-app-shell.js +87 -42
- package/src/client/bootstrap/lazy-collab-clients.js +90 -0
- package/src/client/browser-utils.js +1 -1
- package/src/client/domain/excalidraw-scene-reconcile.js +5 -2
- package/src/client/domain/excalidraw-scene.js +0 -11
- package/src/client/domain/file-search.js +1 -0
- package/src/client/domain/hash-routes.js +5 -0
- package/src/client/domain/highlight-runtime.js +74 -0
- package/src/client/domain/lobby-chat.js +2 -0
- package/src/client/domain/markdown-math.js +14 -0
- package/src/client/domain/runtime-paths.js +56 -7
- package/src/client/domain/vault-utils.js +11 -0
- package/src/client/excalidraw-editor.js +20 -4
- package/src/client/export/export-host.js +3 -7
- package/src/client/export/export-pipeline.js +208 -21
- package/src/client/infrastructure/auth-client.js +1 -2
- package/src/client/infrastructure/browser-preferences-port.js +24 -0
- package/src/client/infrastructure/editor-session.js +20 -0
- package/src/client/infrastructure/editor-view-adapter.js +51 -15
- package/src/client/infrastructure/excalidraw-room-client.js +11 -46
- package/src/client/infrastructure/git-api-client.js +5 -0
- package/src/client/infrastructure/hosted-api-client.js +60 -0
- package/src/client/infrastructure/lobby-presence.js +2 -2
- package/src/client/infrastructure/runtime-config.js +3 -1
- package/src/client/infrastructure/tab-activity-lock.js +8 -4
- package/src/client/infrastructure/webmcp-tool-registry.js +27 -6
- package/src/client/presentation/bases-preview-controller.js +2 -1
- package/src/client/presentation/comment-markdown-renderer.js +4 -14
- package/src/client/presentation/comment-overview-controller.js +1 -2
- package/src/client/presentation/comment-ui/comment-ui-shared.js +5 -2
- package/src/client/presentation/comment-ui-controller.js +21 -30
- package/src/client/presentation/create-menu-presenter.js +16 -18
- package/src/client/presentation/drawio-embed-controller.js +55 -7
- package/src/client/presentation/excalidraw-embed-controller.js +11 -3
- package/src/client/presentation/file-explorer-controller.js +4 -0
- package/src/client/presentation/file-explorer-view.js +304 -176
- package/src/client/presentation/file-history-view-controller.js +6 -0
- package/src/client/presentation/git-diff-view-controller.js +3 -2
- package/src/client/presentation/git-panel-controller.js +7 -6
- package/src/client/presentation/hosted-workspace-gate-controller.js +180 -0
- package/src/client/presentation/image-lightbox-controller.js +7 -6
- package/src/client/presentation/layout-controller.js +10 -1
- package/src/client/presentation/outline-controller.js +0 -86
- package/src/client/presentation/quick-switcher-controller.js +50 -13
- package/src/client/presentation/scroll-sync-controller.js +69 -21
- package/src/client/presentation/team-settings-controller.js +228 -0
- package/src/client/styles/components/navigation.css +2 -2
- package/src/client/styles/deferred-collab.css +6 -0
- package/src/client/styles/deferred-git.css +7 -0
- package/src/client/styles/deferred-preview.css +7 -0
- package/src/client/styles/features/diagram-preview.css +1 -15
- package/src/client/styles/features/outline.css +4 -2
- package/src/client/styles/features/preview-markdown.css +29 -15
- package/src/client/styles/features/team-settings.css +162 -0
- package/src/client/styles/foundation/themes.css +56 -271
- package/src/client/styles/foundation/tokens.css +2 -2
- package/src/client/styles/layout/editor-page.css +0 -14
- package/src/client/styles/layout/overlays.css +16 -0
- package/src/client/styles/layout/responsive.css +5 -5
- package/src/client/styles/layout/shell.css +26 -1
- package/src/client/styles/layout/sidebar.css +95 -3
- package/src/client/styles/style.css +3 -19
- package/src/client/styles/surfaces/landing-page.css +260 -0
- package/src/domain/agent-tool-definitions.js +182 -74
- package/src/domain/collabmd-content-capabilities.js +62 -7
- package/src/domain/collaboration-protocol.js +2 -0
- package/src/domain/excalidraw-agent-scene.js +108 -6
- package/src/domain/excalidraw-agent-verification.js +95 -1
- package/src/domain/excalidraw-room-codec.js +12 -1
- package/src/domain/literal-text-search.js +13 -0
- package/src/domain/markdown-outline.js +35 -0
- package/src/server/application/agent-connection-service.js +6 -2
- package/src/server/application/agent-content-service.js +250 -114
- package/src/server/auth/create-auth-service.js +40 -12
- package/src/server/auth/session-cookie.js +49 -38
- package/src/server/config/env.js +97 -6
- package/src/server/create-app-server.js +23 -153
- package/src/server/domain/backlink-index.js +1 -11
- package/src/server/domain/bases/base-query-results.js +7 -3
- package/src/server/domain/bases/base-query-service.js +2 -7
- package/src/server/domain/collaboration/collaboration-room.js +54 -16
- package/src/server/domain/docx-exporter.js +256 -2
- package/src/server/domain/hosted-workspace-contract.js +7 -0
- package/src/server/domain/hosted-workspace.js +39 -63
- package/src/server/domain/ripgrep-search-service.js +97 -34
- package/src/server/infrastructure/git/diff-service.js +15 -11
- package/src/server/infrastructure/git/git-service.js +4 -0
- package/src/server/infrastructure/git/image-mime.js +4 -3
- package/src/server/infrastructure/git/local-exclude.js +13 -1
- package/src/server/infrastructure/git/status-service.js +10 -6
- package/src/server/infrastructure/http/create-agent-api-handler.js +1 -1
- package/src/server/infrastructure/http/create-git-api-query-handler.js +25 -0
- package/src/server/infrastructure/http/create-hosted-api-handler.js +5 -0
- package/src/server/infrastructure/http/create-request-handler.js +95 -26
- package/src/server/infrastructure/http/create-static-handler.js +3 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +28 -55
- package/src/server/infrastructure/http/http-response.js +2 -0
- package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +2 -1
- package/src/server/infrastructure/persistence/hosted-metadata-store.js +42 -5
- package/src/server/infrastructure/persistence/path-utils.js +23 -3
- package/src/server/infrastructure/persistence/pull-backup-store.js +52 -42
- package/src/server/infrastructure/persistence/sidecar-store.js +19 -9
- package/src/server/infrastructure/persistence/vault-file-store.js +57 -171
- package/src/server/infrastructure/plantuml/plantuml-renderer.js +33 -0
- package/src/server/infrastructure/structurizr/structurizr-workspace-service.js +24 -10
- package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +55 -25
- package/src/server/infrastructure/websocket/client-socket-session.js +32 -4
- package/src/server/infrastructure/workspace/file-system-sync-service.js +4 -2
- package/src/server/shared/agent-tool-rate-limiter.js +7 -0
- package/src/server/startup/git-remote-bootstrap.js +56 -49
- package/src/server/vault-registry.js +251 -0
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-C-nmgL5g.js +0 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-CdVZqicp.js +0 -1
- package/dist/client/assets/ar-SA-PQUY64WN-xjXgbW6d.js +0 -10
- package/dist/client/assets/architecture-7GRP2DOG-BMOPAkUC.js +0 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-wUo0bXif.js +0 -36
- package/dist/client/assets/az-AZ-OXJXL76K-4JkO4Pca.js +0 -1
- package/dist/client/assets/base-CaIEJUF9.css +0 -1
- package/dist/client/assets/bg-BG-W2GKIJDF-DnkH_o81.js +0 -5
- package/dist/client/assets/blockDiagram-I7D4REHJ-BRSK3m49.js +0 -129
- package/dist/client/assets/bn-BD-TGL7M4PJ-CG4JkmtP.js +0 -3
- package/dist/client/assets/bn-IN-BKETKYEH-CG4JkmtP.js +0 -3
- package/dist/client/assets/ca-ES-LD5SCRVV-U6_TVMX9.js +0 -8
- package/dist/client/assets/channel-Fa4GS_-F.js +0 -1
- package/dist/client/assets/chunk-2E4U76K2-BPnTT-J3.js +0 -2
- package/dist/client/assets/chunk-4HAMMTFA-DStbIfJ1.js +0 -62
- package/dist/client/assets/chunk-75Z2AOVW-C5pGd3W9.js +0 -2
- package/dist/client/assets/chunk-7XWMRXBY-CfMzEq80.js +0 -1
- package/dist/client/assets/chunk-DU6HZSFF-Zkp69c6c.js +0 -127
- package/dist/client/assets/chunk-GMAD6QVW-NZ6WpDb8.js +0 -72
- package/dist/client/assets/chunk-GVQU2GXP-D8SDprfX.js +0 -1
- package/dist/client/assets/chunk-L3NEJ4N5-aijKP-eh.js +0 -1
- package/dist/client/assets/chunk-OSK3NFVY-CCbLQAMa.js +0 -10
- package/dist/client/assets/chunk-POPQ4Y6H-CYnpIgXT.js +0 -1
- package/dist/client/assets/chunk-PWAF6VOD-JSNrcBmP.js +0 -1
- package/dist/client/assets/chunk-RM4UPSZO-DOWllDY8.js +0 -41
- package/dist/client/assets/chunk-TLUHSLCS-DTY5v0aj.js +0 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-BsQWoR3Q.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BsQWoR3Q.js +0 -1
- package/dist/client/assets/comment-thread-store-CX98zR6q.js +0 -1
- package/dist/client/assets/comment-threads-BnRwo5B9.js +0 -4
- package/dist/client/assets/cose-bilkent-JH36ORCC-Cm_QF_yb.js +0 -1
- package/dist/client/assets/cs-CZ-OFPU5DBV-BmFAIhqX.js +0 -7
- package/dist/client/assets/cynefin-OW5HDTMX-7tP7QfM3.js +0 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-rTz9RhFH.js +0 -62
- package/dist/client/assets/cytoscape.esm-B-NFISlW.js +0 -321
- package/dist/client/assets/da-DK-FRDJFYWF-H387Jw8B.js +0 -2
- package/dist/client/assets/dagre-PrKaheQc.js +0 -1
- package/dist/client/assets/de-CH-ZG7H3QK3-C_groygo.js +0 -11
- package/dist/client/assets/de-DE-SIJYH4IH-C_groygo.js +0 -11
- package/dist/client/assets/diagram-UQ7AKVKN-CNYlXtu4.js +0 -41
- package/dist/client/assets/diagram-VX7I27RA-CsJbsx5F.js +0 -24
- package/dist/client/assets/diagram-Z3DM3KII-D0mLxEgI.js +0 -24
- package/dist/client/assets/direct-engine-DdrQKpgq-CtKfQzCt.js +0 -5
- package/dist/client/assets/dist--hk9I5HQ.js +0 -1
- package/dist/client/assets/dist-B1XEa-Zs.js +0 -1
- package/dist/client/assets/dist-BJ1bJs33.js +0 -1
- package/dist/client/assets/dist-Bd1JucQF.js +0 -1
- package/dist/client/assets/dist-ByrG2qBA.js +0 -1
- package/dist/client/assets/dist-CKS_-are.js +0 -1
- package/dist/client/assets/dist-D37Hyu3h.js +0 -9
- package/dist/client/assets/dist-Dl_tpDSr.js +0 -1
- package/dist/client/assets/dist-Dm4w5UId.js +0 -1
- package/dist/client/assets/dist-DpYDHR9p.js +0 -6
- package/dist/client/assets/dist-JaU3aRlD.js +0 -19
- package/dist/client/assets/dist-RKBTaQMb.js +0 -13
- package/dist/client/assets/dist-eBx8q6Sy.js +0 -1
- package/dist/client/assets/document-formatter-rDDjRfZ2.js +0 -2
- package/dist/client/assets/drawioEditor-JubEEha7.js +0 -9
- package/dist/client/assets/ebnfDiagram-PWID7BFC-HeTxHpCU.js +0 -1
- package/dist/client/assets/editor-session-Bk6oIvSr.js +0 -54
- package/dist/client/assets/el-GR-IEE2CGI2-BkT6YT54.js +0 -7
- package/dist/client/assets/embedded-editor-base-BlCgz6mw.css +0 -1
- package/dist/client/assets/es-Bfdp096f.js +0 -22
- package/dist/client/assets/es-ES-TVVPWKV5-CpPKJXTM.js +0 -12
- package/dist/client/assets/eu-ES-CGBMFQDT-Bu3N2493.js +0 -8
- package/dist/client/assets/eventmodeling-NTZA5JFV-BR2FzK4R.js +0 -1
- package/dist/client/assets/excalidraw-element-link-YLIaTnVF.js +0 -7
- package/dist/client/assets/excalidrawEditor-dBMbRX_S.js +0 -9
- package/dist/client/assets/export-page-CRRQ2NEl.js +0 -57
- package/dist/client/assets/exportDocument-BlQRd9_m.js +0 -2
- package/dist/client/assets/exportDocument-CNSbjZwu.css +0 -1
- package/dist/client/assets/fa-IR-IE6XAPR4-BEvLCORD.js +0 -9
- package/dist/client/assets/fi-FI-P7TKNHRM-DI0q8iSX.js +0 -6
- package/dist/client/assets/file-icon-svg-Y_kpF957.js +0 -1
- package/dist/client/assets/file-search-DDLyyLDU.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-D5Gy0wmg.js +0 -1
- package/dist/client/assets/forth-Cezjo90N.js +0 -1
- package/dist/client/assets/fr-FR-QI2XZNT7-y8kXd8LA.js +0 -12
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BHgOYiZz.js +0 -292
- package/dist/client/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +0 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Dl__X3Sk.js +0 -106
- package/dist/client/assets/gl-ES-TLYCNOZZ-Br-Fhff-.js +0 -6
- package/dist/client/assets/graphlib-DS17s2tU.js +0 -1
- package/dist/client/assets/he-IL-ZX43XLGP-qKQq6V9X.js +0 -9
- package/dist/client/assets/hi-IN-UTYRMTUF-DOUcwrDO.js +0 -3
- package/dist/client/assets/hu-HU-AJOSEBW6-FqTyvHlD.js +0 -3
- package/dist/client/assets/id-ID-ETLTVG6C-CQqh3CLS.js +0 -8
- package/dist/client/assets/image-ZVKINSPA-DgzW5zAy.js +0 -1
- package/dist/client/assets/index-D3RER1SZ.js +0 -1023
- package/dist/client/assets/index-DREVKl_K.css +0 -1
- package/dist/client/assets/info-A6RAGUB7-BlU-8_xu.js +0 -1
- package/dist/client/assets/infoDiagram-27XIBGKW-DBpoANC9.js +0 -2
- package/dist/client/assets/it-IT-B4B6TP6L-V-yK3SZz.js +0 -12
- package/dist/client/assets/ja-JP-IYKVURR5-BQKBXRpX.js +0 -12
- package/dist/client/assets/javascript-BWjar7HY.js +0 -1
- package/dist/client/assets/javascript-D-FtdkNC.js +0 -1
- package/dist/client/assets/jsx-runtime-BpzPEenQ.js +0 -1
- package/dist/client/assets/kaa-SE2BUIKX-CZ5kfwPg.js +0 -1
- package/dist/client/assets/kab-KAB-Y3GLKXLR-Do7GWfuN.js +0 -4
- package/dist/client/assets/kk-KZ-ABWUFVOH-BpqVciQz.js +0 -1
- package/dist/client/assets/ko-KR-7JQDXKGM-N42lep78.js +0 -5
- package/dist/client/assets/ku-TR-NAH2Q5B7-K8LLl9fk.js +0 -6
- package/dist/client/assets/line-BFl3ujec.js +0 -1
- package/dist/client/assets/linear-n-3HSMUF.js +0 -1
- package/dist/client/assets/lt-LT-VQFYRSNQ-BmOd0ALn.js +0 -3
- package/dist/client/assets/lv-LV-T62VSYUM-B22WdPhp.js +0 -4
- package/dist/client/assets/mermaid-parser.core-Bl0efOMt.js +0 -4
- package/dist/client/assets/mermaid.core-BrY09czX.js +0 -11
- package/dist/client/assets/mermaid.core-DfcNfOTv.js +0 -1
- package/dist/client/assets/modulepreload-polyfill-P2Xu9kJm.js +0 -1
- package/dist/client/assets/mr-IN-V4FHLCJE-XX069tpm.js +0 -9
- package/dist/client/assets/my-MM-E3SQ6E54-cst_-5SB.js +0 -1
- package/dist/client/assets/nb-NO-MLNOFN5H-Bu2URWko.js +0 -8
- package/dist/client/assets/nl-NL-D5L3ZV4M-BqrV0btt.js +0 -13
- package/dist/client/assets/nn-NO-NNHDGPKB-DK-xZaWM.js +0 -4
- package/dist/client/assets/oc-FR-DWCRF55G-BZ5Po5R6.js +0 -4
- package/dist/client/assets/pa-IN-3JSAY44M-BZQSjKrS.js +0 -4
- package/dist/client/assets/packet-AYTQ26CC-BSJEH9Lb.js +0 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-Bi2Iml7Z.js +0 -1
- package/dist/client/assets/percentages-ETZPVQEE-DFxFqXgH.js +0 -1
- package/dist/client/assets/pie-WAS4IAKB-qxv01Y8W.js +0 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-_gYXnMoi.js +0 -39
- package/dist/client/assets/pl-PL-ACURYKP3-qcEOSfCk.js +0 -12
- package/dist/client/assets/preload-helper-HclGiUj8.js +0 -1
- package/dist/client/assets/preview-render-compiler-CfxJYldJ.js +0 -41
- package/dist/client/assets/preview-render-compiler-Cu8_i9iS.js +0 -1
- package/dist/client/assets/preview-render-worker-c4Yi93qW.js +0 -66
- package/dist/client/assets/prod-BiJL30sl.js +0 -1
- package/dist/client/assets/prod-qAk7rHa4.js +0 -177
- package/dist/client/assets/pt-BR-LOX7MLGD-DLueHSyZ.js +0 -10
- package/dist/client/assets/pt-PT-CZ2U2RFQ-BJ-GAEm6.js +0 -12
- package/dist/client/assets/quick-switcher-controller-BoIK_wuG.js +0 -1
- package/dist/client/assets/radar-RG4KPBEZ-B6h6pWOs.js +0 -1
- package/dist/client/assets/railroad-74A4TZTK-CGtTWdGc.js +0 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-BQiIsX_p.js +0 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BVA5UbMu.js +0 -1
- package/dist/client/assets/ro-RO-2HECL2X6-CJUvKAf0.js +0 -12
- package/dist/client/assets/ru-RU-HAYNXO46-BWSlvTrt.js +0 -10
- package/dist/client/assets/runtime-config-DcmnGcXU.js +0 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-B5HHkRT2.js +0 -40
- package/dist/client/assets/si-LK-W5KNS4H6-DGGCsn7k.js +0 -1
- package/dist/client/assets/sk-SK-7K2CFGDV-CY4uTYgQ.js +0 -7
- package/dist/client/assets/sl-SI-OXV2QZWW-2-weqaBY.js +0 -6
- package/dist/client/assets/solr-BBopId9w.js +0 -1
- package/dist/client/assets/src-oBChb5qS.js +0 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-CmqxyRGx.js +0 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-zoLLQVyh.js +0 -1
- package/dist/client/assets/sv-SE-JTOBZRGL-9-IUtVkO.js +0 -12
- package/dist/client/assets/swimlanes-42K2YHIH-Bmgb9Zld.js +0 -1
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DS-KQN37.js +0 -8
- package/dist/client/assets/ta-IN-KFAVKXGT-gHO6Q_DH.js +0 -6
- package/dist/client/assets/th-TH-VDMSCPDL-BvJuw6PJ.js +0 -1
- package/dist/client/assets/tr-TR-CEZ6GX45-CG6UU3Su.js +0 -4
- package/dist/client/assets/treeView-Q6P3EWNA-BTTYcvrF.js +0 -1
- package/dist/client/assets/treemap-WGGIJYW6-Cg7tyfH8.js +0 -1
- package/dist/client/assets/uk-UA-Q3H3OXQC-CSuIg_DY.js +0 -6
- package/dist/client/assets/uz-UZ-NGCSWWPX-mom7rxSP.js +0 -1
- package/dist/client/assets/vault-api-client-iZLhMJKe.js +0 -6
- package/dist/client/assets/vennDiagram-4TSXK5OY-DNdUC_Xj.js +0 -34
- package/dist/client/assets/vi-VN-P3NDEVPS-BB0Fu9ck.js +0 -7
- package/dist/client/assets/wardley-WFR3VGLG-C6N1rULY.js +0 -1
- package/dist/client/assets/wiki-link-resolver-DFIwErjc.js +0 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CoIR8CBX.js +0 -7
- package/dist/client/assets/yjs-provider-reset-guard-9ul1qF6k.js +0 -4
- package/dist/client/assets/zh-CN-SS3O57GA-Bj8wsiMe.js +0 -11
- package/dist/client/assets/zh-HK-LWJT3VCF-DOTquTCh.js +0 -1
- package/dist/client/assets/zh-TW-VJXC72RT-B48PRo-l.js +0 -13
- package/integrations/pi/index.ts +0 -94
- package/src/server/domain/collaboration/protocol.js +0 -6
- /package/dist/client/assets/{vault-api-client-C3mlS_4N.css → auth-gate-C3mlS_4N.css} +0 -0
- /package/dist/client/assets/{base-BYODPHdS.js → github.min-DBihDoic.js} +0 -0
|
@@ -88,6 +88,7 @@ function setAppliedSceneJson(value) {
|
|
|
88
88
|
|
|
89
89
|
let collabReady = false;
|
|
90
90
|
let pendingRemoteSceneJson = '';
|
|
91
|
+
let pendingRemoteSceneAuthoritative = false;
|
|
91
92
|
let pendingCollaborators = null;
|
|
92
93
|
let activeCollaborators = new Map();
|
|
93
94
|
let followedSocketId = null;
|
|
@@ -432,12 +433,12 @@ function createRoomClient(filePath) {
|
|
|
432
433
|
|
|
433
434
|
handleRoomConnectionStateChange(event);
|
|
434
435
|
},
|
|
435
|
-
onRemoteSceneJson: (sceneJson) => {
|
|
436
|
+
onRemoteSceneJson: (sceneJson, { authoritative = false } = {}) => {
|
|
436
437
|
if (generation !== roomClientGeneration) {
|
|
437
438
|
return;
|
|
438
439
|
}
|
|
439
440
|
|
|
440
|
-
applySceneFromJson(sceneJson);
|
|
441
|
+
applySceneFromJson(sceneJson, { authoritative });
|
|
441
442
|
},
|
|
442
443
|
syncTimeoutMs: Number.isFinite(syncTimeoutMs) ? syncTimeoutMs : undefined,
|
|
443
444
|
vaultClient: vaultApiClient,
|
|
@@ -1393,14 +1394,18 @@ function flushPendingRemoteScene() {
|
|
|
1393
1394
|
}
|
|
1394
1395
|
|
|
1395
1396
|
const sceneJson = pendingRemoteSceneJson;
|
|
1397
|
+
const authoritative = pendingRemoteSceneAuthoritative;
|
|
1396
1398
|
pendingRemoteSceneJson = '';
|
|
1399
|
+
pendingRemoteSceneAuthoritative = false;
|
|
1397
1400
|
applySceneFromJson(sceneJson, {
|
|
1401
|
+
authoritative,
|
|
1398
1402
|
force: true,
|
|
1399
1403
|
});
|
|
1400
1404
|
return true;
|
|
1401
1405
|
}
|
|
1402
1406
|
|
|
1403
1407
|
function applySceneFromJson(rawJson, {
|
|
1408
|
+
authoritative = false,
|
|
1404
1409
|
force = false,
|
|
1405
1410
|
} = {}) {
|
|
1406
1411
|
const scene = parseSceneJson(rawJson);
|
|
@@ -1414,15 +1419,18 @@ function applySceneFromJson(rawJson, {
|
|
|
1414
1419
|
|
|
1415
1420
|
if (!getMountedExcalidrawAPI() || !collabReady) {
|
|
1416
1421
|
pendingRemoteSceneJson = normalizedJson;
|
|
1422
|
+
pendingRemoteSceneAuthoritative ||= authoritative;
|
|
1417
1423
|
return;
|
|
1418
1424
|
}
|
|
1419
1425
|
|
|
1420
1426
|
if (!force && isEditingTextElement()) {
|
|
1421
1427
|
pendingRemoteSceneJson = normalizedJson;
|
|
1428
|
+
pendingRemoteSceneAuthoritative ||= authoritative;
|
|
1422
1429
|
return;
|
|
1423
1430
|
}
|
|
1424
1431
|
|
|
1425
|
-
|
|
1432
|
+
pendingRemoteSceneAuthoritative = false;
|
|
1433
|
+
updateApiScene(scene, { authoritative });
|
|
1426
1434
|
}
|
|
1427
1435
|
|
|
1428
1436
|
function releaseViewportBroadcastSuppressionAfterPaint() {
|
|
@@ -1440,6 +1448,7 @@ function releaseViewportBroadcastSuppressionAfterPaint() {
|
|
|
1440
1448
|
function buildApiSceneUpdate(scene, {
|
|
1441
1449
|
appStateOverrides = {},
|
|
1442
1450
|
api = getMountedExcalidrawAPI(),
|
|
1451
|
+
authoritative = false,
|
|
1443
1452
|
} = {}) {
|
|
1444
1453
|
if (!api) {
|
|
1445
1454
|
return null;
|
|
@@ -1450,6 +1459,7 @@ function buildApiSceneUpdate(scene, {
|
|
|
1450
1459
|
|
|
1451
1460
|
return buildReconciledExcalidrawSceneUpdate({
|
|
1452
1461
|
appStateOverrides,
|
|
1462
|
+
authoritative,
|
|
1453
1463
|
currentAppState,
|
|
1454
1464
|
currentElements,
|
|
1455
1465
|
documentViewState: getDocumentViewState(),
|
|
@@ -1500,6 +1510,7 @@ function requestEditorRemount(scene) {
|
|
|
1500
1510
|
|
|
1501
1511
|
function applySceneToMountedApi(scene, {
|
|
1502
1512
|
appStateOverrides = {},
|
|
1513
|
+
authoritative = false,
|
|
1503
1514
|
captureUpdate = CaptureUpdateAction.NEVER,
|
|
1504
1515
|
trackedSharedSnapshot = false,
|
|
1505
1516
|
} = {}) {
|
|
@@ -1511,6 +1522,7 @@ function applySceneToMountedApi(scene, {
|
|
|
1511
1522
|
const nextSceneUpdate = buildApiSceneUpdate(scene, {
|
|
1512
1523
|
appStateOverrides,
|
|
1513
1524
|
api,
|
|
1525
|
+
authoritative,
|
|
1514
1526
|
});
|
|
1515
1527
|
let applyResult;
|
|
1516
1528
|
|
|
@@ -1545,11 +1557,13 @@ function applySceneToMountedApi(scene, {
|
|
|
1545
1557
|
|
|
1546
1558
|
function updateApiScene(scene, {
|
|
1547
1559
|
appStateOverrides = {},
|
|
1560
|
+
authoritative = false,
|
|
1548
1561
|
captureUpdate = CaptureUpdateAction.NEVER,
|
|
1549
1562
|
trackedSharedSnapshot = true,
|
|
1550
1563
|
} = {}) {
|
|
1551
1564
|
applySceneToMountedApi(scene, {
|
|
1552
1565
|
appStateOverrides,
|
|
1566
|
+
authoritative,
|
|
1553
1567
|
captureUpdate,
|
|
1554
1568
|
trackedSharedSnapshot,
|
|
1555
1569
|
});
|
|
@@ -2176,10 +2190,12 @@ function initializeEditor(api) {
|
|
|
2176
2190
|
}));
|
|
2177
2191
|
|
|
2178
2192
|
const sceneJson = pendingRemoteSceneJson || roomClient?.getLastSceneJson?.() || '';
|
|
2193
|
+
const authoritative = pendingRemoteSceneAuthoritative;
|
|
2179
2194
|
const initialScene = parseSceneJson(sceneJson);
|
|
2180
2195
|
pendingRemoteSceneJson = '';
|
|
2196
|
+
pendingRemoteSceneAuthoritative = false;
|
|
2181
2197
|
setAppliedSceneJson(JSON.stringify(initialScene));
|
|
2182
|
-
updateApiScene(initialScene);
|
|
2198
|
+
updateApiScene(initialScene, { authoritative });
|
|
2183
2199
|
|
|
2184
2200
|
if (pendingCollaborators) {
|
|
2185
2201
|
const renderableCollaborators = buildRenderableCollaboratorsMap(pendingCollaborators);
|
|
@@ -26,7 +26,6 @@ function createBootstrapPayload({
|
|
|
26
26
|
format,
|
|
27
27
|
jobId,
|
|
28
28
|
markdownText = '',
|
|
29
|
-
theme = 'light',
|
|
30
29
|
title = '',
|
|
31
30
|
}) {
|
|
32
31
|
return {
|
|
@@ -39,7 +38,8 @@ function createBootstrapPayload({
|
|
|
39
38
|
jobId,
|
|
40
39
|
markdownText: String(markdownText ?? ''),
|
|
41
40
|
source: EXPORT_HOST_SOURCE,
|
|
42
|
-
|
|
41
|
+
// Exports always render light so HTML, DOCX, and PDF output stays consistent.
|
|
42
|
+
theme: 'light',
|
|
43
43
|
title: String(title ?? ''),
|
|
44
44
|
type: 'bootstrap',
|
|
45
45
|
};
|
|
@@ -154,11 +154,7 @@ async function startExport(payload) {
|
|
|
154
154
|
notifyError: true,
|
|
155
155
|
});
|
|
156
156
|
}, EXPORT_JOB_CLOSE_POLL_MS),
|
|
157
|
-
payload: createBootstrapPayload({
|
|
158
|
-
...payload,
|
|
159
|
-
jobId,
|
|
160
|
-
theme: document.documentElement.dataset.theme,
|
|
161
|
-
}),
|
|
157
|
+
payload: createBootstrapPayload({ ...payload, jobId }),
|
|
162
158
|
timeoutId: window.setTimeout(() => {
|
|
163
159
|
finishPendingJob(jobId, {
|
|
164
160
|
message: 'Export timed out before it completed',
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { exportToSvg as exportExcalidrawToSvg } from '@excalidraw/excalidraw';
|
|
2
|
-
|
|
3
1
|
import baseStyles from '../styles/base.css?inline';
|
|
4
2
|
import tokenStyles from '../styles/foundation/tokens.css?inline';
|
|
5
3
|
import themeStyles from '../styles/foundation/themes.css?inline';
|
|
@@ -7,18 +5,39 @@ import previewStyles from '../styles/features/preview-markdown.css?inline';
|
|
|
7
5
|
import highlightOverrideStyles from '../styles/overrides/highlightjs.css?inline';
|
|
8
6
|
import exportStyles from '../styles/export-document.css?inline';
|
|
9
7
|
import highlightStyles from '../assets/vendor/highlight/github.min.css?inline';
|
|
8
|
+
import katexExportCss from 'katex/dist/katex.min.css?inline';
|
|
9
|
+
import katexFontAmsRegular from 'katex/dist/fonts/KaTeX_AMS-Regular.woff2?url';
|
|
10
|
+
import katexFontCaligraphicBold from 'katex/dist/fonts/KaTeX_Caligraphic-Bold.woff2?url';
|
|
11
|
+
import katexFontCaligraphicRegular from 'katex/dist/fonts/KaTeX_Caligraphic-Regular.woff2?url';
|
|
12
|
+
import katexFontFrakturBold from 'katex/dist/fonts/KaTeX_Fraktur-Bold.woff2?url';
|
|
13
|
+
import katexFontFrakturRegular from 'katex/dist/fonts/KaTeX_Fraktur-Regular.woff2?url';
|
|
14
|
+
import katexFontMainBold from 'katex/dist/fonts/KaTeX_Main-Bold.woff2?url';
|
|
15
|
+
import katexFontMainBoldItalic from 'katex/dist/fonts/KaTeX_Main-BoldItalic.woff2?url';
|
|
16
|
+
import katexFontMainItalic from 'katex/dist/fonts/KaTeX_Main-Italic.woff2?url';
|
|
17
|
+
import katexFontMainRegular from 'katex/dist/fonts/KaTeX_Main-Regular.woff2?url';
|
|
18
|
+
import katexFontMathBoldItalic from 'katex/dist/fonts/KaTeX_Math-BoldItalic.woff2?url';
|
|
19
|
+
import katexFontMathItalic from 'katex/dist/fonts/KaTeX_Math-Italic.woff2?url';
|
|
20
|
+
import katexFontSansSerifBold from 'katex/dist/fonts/KaTeX_SansSerif-Bold.woff2?url';
|
|
21
|
+
import katexFontSansSerifItalic from 'katex/dist/fonts/KaTeX_SansSerif-Italic.woff2?url';
|
|
22
|
+
import katexFontSansSerifRegular from 'katex/dist/fonts/KaTeX_SansSerif-Regular.woff2?url';
|
|
23
|
+
import katexFontScriptRegular from 'katex/dist/fonts/KaTeX_Script-Regular.woff2?url';
|
|
24
|
+
import katexFontSize1Regular from 'katex/dist/fonts/KaTeX_Size1-Regular.woff2?url';
|
|
25
|
+
import katexFontSize2Regular from 'katex/dist/fonts/KaTeX_Size2-Regular.woff2?url';
|
|
26
|
+
import katexFontSize3Regular from 'katex/dist/fonts/KaTeX_Size3-Regular.woff2?url';
|
|
27
|
+
import katexFontSize4Regular from 'katex/dist/fonts/KaTeX_Size4-Regular.woff2?url';
|
|
28
|
+
import katexFontTypewriterRegular from 'katex/dist/fonts/KaTeX_Typewriter-Regular.woff2?url';
|
|
10
29
|
import {
|
|
11
30
|
encodeSvgDataUrl,
|
|
12
31
|
loadImage,
|
|
13
32
|
resolveSvgDimensions,
|
|
14
33
|
sanitizeSvgMarkup,
|
|
15
34
|
} from '../application/preview-diagram-utils.js';
|
|
16
|
-
import { compilePreviewDocument } from '../application/preview-render-compiler.js';
|
|
17
35
|
import { isMarkdownFilePath, stripVaultFileExtension } from '../../domain/file-kind.js';
|
|
18
36
|
import { resolveVaultRelativePath } from '../../domain/vault-paths.js';
|
|
19
37
|
import { resolveWikiTargetPath } from '../../domain/wiki-link-resolver.js';
|
|
20
38
|
import { createExcalidrawExportOptions, parseSceneJson } from '../domain/excalidraw-scene.js';
|
|
21
39
|
import { escapeHtml } from '../domain/vault-utils.js';
|
|
40
|
+
import { hasRenderedMath } from '../domain/markdown-math.js';
|
|
22
41
|
import { downloadBlob } from '../browser-utils.js';
|
|
23
42
|
import { resolveApiUrl, resolveAppUrl } from '../infrastructure/runtime-config.js';
|
|
24
43
|
import { parseApiResponse } from '../infrastructure/api-client-utils.js';
|
|
@@ -40,6 +59,7 @@ const EXPORT_MERMAID_CONFIG = Object.freeze({
|
|
|
40
59
|
const EXPORT_ASSET_FETCH_TIMEOUT_MS = 10_000;
|
|
41
60
|
const EXPORT_ASSET_MAX_BYTES = 10 * 1024 * 1024;
|
|
42
61
|
const EXPORT_RENDER_SETTLE_TIMEOUT_MS = 10_000;
|
|
62
|
+
const EXPORT_PRINT_FONT_TIMEOUT_MS = 3000;
|
|
43
63
|
const VIDEO_POSTER_CAPTURE_TIMEOUT_MS = 10_000;
|
|
44
64
|
const VIDEO_POSTER_CAPTURE_SEEK_SECONDS = 1;
|
|
45
65
|
const DOCX_COMPATIBLE_IMAGE_MIME_TYPES = new Set([
|
|
@@ -71,7 +91,63 @@ const HTML_EXPORT_STYLES = [
|
|
|
71
91
|
}`,
|
|
72
92
|
].join('\n');
|
|
73
93
|
|
|
94
|
+
const KATEX_EXPORT_FONT_URLS = {
|
|
95
|
+
'KaTeX_AMS-Regular.woff2': katexFontAmsRegular,
|
|
96
|
+
'KaTeX_Caligraphic-Bold.woff2': katexFontCaligraphicBold,
|
|
97
|
+
'KaTeX_Caligraphic-Regular.woff2': katexFontCaligraphicRegular,
|
|
98
|
+
'KaTeX_Fraktur-Bold.woff2': katexFontFrakturBold,
|
|
99
|
+
'KaTeX_Fraktur-Regular.woff2': katexFontFrakturRegular,
|
|
100
|
+
'KaTeX_Main-Bold.woff2': katexFontMainBold,
|
|
101
|
+
'KaTeX_Main-BoldItalic.woff2': katexFontMainBoldItalic,
|
|
102
|
+
'KaTeX_Main-Italic.woff2': katexFontMainItalic,
|
|
103
|
+
'KaTeX_Main-Regular.woff2': katexFontMainRegular,
|
|
104
|
+
'KaTeX_Math-BoldItalic.woff2': katexFontMathBoldItalic,
|
|
105
|
+
'KaTeX_Math-Italic.woff2': katexFontMathItalic,
|
|
106
|
+
'KaTeX_SansSerif-Bold.woff2': katexFontSansSerifBold,
|
|
107
|
+
'KaTeX_SansSerif-Italic.woff2': katexFontSansSerifItalic,
|
|
108
|
+
'KaTeX_SansSerif-Regular.woff2': katexFontSansSerifRegular,
|
|
109
|
+
'KaTeX_Script-Regular.woff2': katexFontScriptRegular,
|
|
110
|
+
'KaTeX_Size1-Regular.woff2': katexFontSize1Regular,
|
|
111
|
+
'KaTeX_Size2-Regular.woff2': katexFontSize2Regular,
|
|
112
|
+
'KaTeX_Size3-Regular.woff2': katexFontSize3Regular,
|
|
113
|
+
'KaTeX_Size4-Regular.woff2': katexFontSize4Regular,
|
|
114
|
+
'KaTeX_Typewriter-Regular.woff2': katexFontTypewriterRegular,
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
// Standalone HTML exports must carry KaTeX fonts as data URLs to render
|
|
118
|
+
// math offline. Fonts load once per session, only for math exports.
|
|
119
|
+
let katexExportStylesPromise = null;
|
|
120
|
+
|
|
121
|
+
// Bundler output rewrites the stylesheet's font paths (hashed names, absolute
|
|
122
|
+
// URLs, sometimes pre-inlined), so match each font by basename instead.
|
|
123
|
+
function loadKatexExportStyles() {
|
|
124
|
+
return (katexExportStylesPromise ??= (async () => {
|
|
125
|
+
let css = katexExportCss;
|
|
126
|
+
await Promise.all(
|
|
127
|
+
Object.entries(KATEX_EXPORT_FONT_URLS).map(async ([fontFile, fontUrl]) => {
|
|
128
|
+
const base = fontFile
|
|
129
|
+
.replace(/\.woff2$/, '')
|
|
130
|
+
.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
131
|
+
const pattern = new RegExp(`url\\((?!data:)[^)]*${base}[^)]*?\\.woff2\\)`, 'g');
|
|
132
|
+
if (!pattern.test(css)) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const response = await fetch(fontUrl);
|
|
137
|
+
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
138
|
+
let binary = '';
|
|
139
|
+
for (let index = 0; index < bytes.length; index += 0x8000) {
|
|
140
|
+
binary += String.fromCharCode(...bytes.subarray(index, index + 0x8000));
|
|
141
|
+
}
|
|
142
|
+
css = css.replace(pattern, `url(data:font/woff2;base64,${btoa(binary)})`);
|
|
143
|
+
}),
|
|
144
|
+
);
|
|
145
|
+
return css.replace(/,url\((?!data:)[^)]+?\)\s*format\("(?:woff|truetype)"\)/gu, '');
|
|
146
|
+
})());
|
|
147
|
+
}
|
|
148
|
+
|
|
74
149
|
let mermaidLoaderPromise = null;
|
|
150
|
+
let excalidrawLoaderPromise = null;
|
|
75
151
|
let assetCounter = 0;
|
|
76
152
|
|
|
77
153
|
function createAssetId(prefix = 'asset') {
|
|
@@ -152,6 +228,47 @@ function replaceChildrenFromHtml(target, html) {
|
|
|
152
228
|
target.replaceChildren(...parsed.body.childNodes);
|
|
153
229
|
}
|
|
154
230
|
|
|
231
|
+
const DOCX_WHITESPACE_BLOCK_TAGS = new Set([
|
|
232
|
+
'BLOCKQUOTE', 'BR', 'DD', 'DIV', 'DL', 'DT', 'FIGURE', 'H1', 'H2', 'H3',
|
|
233
|
+
'H4', 'H5', 'H6', 'HR', 'LI', 'OL', 'P', 'PRE', 'SECTION', 'TABLE',
|
|
234
|
+
'TBODY', 'TD', 'TH', 'THEAD', 'TR', 'UL',
|
|
235
|
+
]);
|
|
236
|
+
|
|
237
|
+
// The converter turns every surviving whitespace text node into document
|
|
238
|
+
// content, so inter-block newlines become phantom empty paragraphs and empty
|
|
239
|
+
// bullets. Collapse insignificant whitespace the way HTML rendering does.
|
|
240
|
+
function normalizeDocxWhitespace(root) {
|
|
241
|
+
const walker = root.ownerDocument.createTreeWalker(root, NodeFilter.SHOW_TEXT);
|
|
242
|
+
const whitespaceNodes = [];
|
|
243
|
+
while (walker.nextNode()) {
|
|
244
|
+
if (/^\s*$/.test(walker.currentNode.data)) {
|
|
245
|
+
whitespaceNodes.push(walker.currentNode);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
for (const node of whitespaceNodes) {
|
|
250
|
+
if (node.parentElement?.closest('pre,textarea')) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
const siblings = node.parentElement ? Array.from(node.parentElement.childNodes) : [];
|
|
255
|
+
if (siblings[0] === node || siblings[siblings.length - 1] === node) {
|
|
256
|
+
node.remove();
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const previousIsBlock = !!node.previousElementSibling
|
|
261
|
+
&& DOCX_WHITESPACE_BLOCK_TAGS.has(node.previousElementSibling.tagName);
|
|
262
|
+
const nextIsBlock = !!node.nextElementSibling
|
|
263
|
+
&& DOCX_WHITESPACE_BLOCK_TAGS.has(node.nextElementSibling.tagName);
|
|
264
|
+
if (previousIsBlock || nextIsBlock) {
|
|
265
|
+
node.remove();
|
|
266
|
+
} else {
|
|
267
|
+
node.data = ' ';
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
155
272
|
function encodeSvgBase64DataUrl(svgMarkup) {
|
|
156
273
|
const bytes = new TextEncoder().encode(String(svgMarkup ?? ''));
|
|
157
274
|
const chunkSize = 0x8000;
|
|
@@ -746,6 +863,23 @@ async function ensureMermaidRuntime() {
|
|
|
746
863
|
return mermaidLoaderPromise;
|
|
747
864
|
}
|
|
748
865
|
|
|
866
|
+
async function ensureExcalidrawRuntime() {
|
|
867
|
+
if (excalidrawLoaderPromise) {
|
|
868
|
+
return excalidrawLoaderPromise;
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
excalidrawLoaderPromise = import('@excalidraw/excalidraw').then((module) => {
|
|
872
|
+
const exportToSvg = module?.exportToSvg;
|
|
873
|
+
if (typeof exportToSvg !== 'function') {
|
|
874
|
+
throw new Error('Excalidraw runtime failed to initialize');
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
return exportToSvg;
|
|
878
|
+
});
|
|
879
|
+
|
|
880
|
+
return excalidrawLoaderPromise;
|
|
881
|
+
}
|
|
882
|
+
|
|
749
883
|
function prepareMermaidSource(source) {
|
|
750
884
|
let text = String(source ?? '');
|
|
751
885
|
|
|
@@ -817,7 +951,8 @@ async function renderPlantUmlToSvgMarkup(source) {
|
|
|
817
951
|
async function renderExcalidrawToSvgMarkup(filePath) {
|
|
818
952
|
const rawScene = await fetchTextFile(filePath);
|
|
819
953
|
const scene = parseSceneJson(rawScene);
|
|
820
|
-
const
|
|
954
|
+
const exportToSvg = await ensureExcalidrawRuntime();
|
|
955
|
+
const svgElement = await exportToSvg(createExcalidrawExportOptions(scene));
|
|
821
956
|
return normalizeExportSvgMarkup(svgElement.outerHTML, { padding: 24 });
|
|
822
957
|
}
|
|
823
958
|
|
|
@@ -1236,6 +1371,7 @@ export async function prepareExportSnapshot({
|
|
|
1236
1371
|
warnings: [],
|
|
1237
1372
|
};
|
|
1238
1373
|
|
|
1374
|
+
const { compilePreviewDocument } = await import('../application/preview-render-compiler.js');
|
|
1239
1375
|
const compiled = compilePreviewDocument({
|
|
1240
1376
|
attachmentApiPath: resolveApiUrl('/attachment'),
|
|
1241
1377
|
fileList,
|
|
@@ -1468,6 +1604,46 @@ export function buildDocxHtmlDocument(snapshot) {
|
|
|
1468
1604
|
const template = document.createElement('template');
|
|
1469
1605
|
replaceChildrenFromHtml(template.content, snapshot.html);
|
|
1470
1606
|
|
|
1607
|
+
|
|
1608
|
+
normalizeDocxWhitespace(template.content);
|
|
1609
|
+
|
|
1610
|
+
// The converter drops label content, which would erase every task list
|
|
1611
|
+
// item. Flatten task labels to ballot-box text first.
|
|
1612
|
+
Array.from(template.content.querySelectorAll('label.task-list-label')).forEach((label) => {
|
|
1613
|
+
const checkbox = label.querySelector('input[data-task-checkbox]');
|
|
1614
|
+
const box = checkbox?.hasAttribute('checked') ? '\u2611' : '\u2610';
|
|
1615
|
+
const kept = Array.from(label.childNodes).filter((node) => node.tagName !== 'INPUT');
|
|
1616
|
+
if (kept[0]?.nodeType === 3) {
|
|
1617
|
+
kept[0].textContent = kept[0].textContent.replace(/^\s+/, '');
|
|
1618
|
+
}
|
|
1619
|
+
label.replaceWith(`${box} `, ...kept);
|
|
1620
|
+
});
|
|
1621
|
+
|
|
1622
|
+
// KaTeX lays math out as positioned spans that read out of order as
|
|
1623
|
+
// plain text (a stacked fraction extracts as "ba" instead of "a/b").
|
|
1624
|
+
// The server swaps these markers for native OMML equations, so Word
|
|
1625
|
+
// renders them as real editable math.
|
|
1626
|
+
// A lone math block inside a list item would detach from its bullet,
|
|
1627
|
+
// so hoist the marker to keep the equation on the bullet paragraph.
|
|
1628
|
+
Array.from(template.content.querySelectorAll('.katex')).forEach((mathElement, docxMathIndex) => {
|
|
1629
|
+
const mathml = mathElement.querySelector('.katex-mathml')?.innerHTML ?? '';
|
|
1630
|
+
if (!mathml.includes('<math')) {
|
|
1631
|
+
return;
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
const displayWrapper = mathElement.parentElement;
|
|
1635
|
+
let replaceTarget = displayWrapper?.classList?.contains('katex-display') ? displayWrapper : mathElement;
|
|
1636
|
+
const blockParagraph = mathElement.closest('p.katex-block');
|
|
1637
|
+
if (blockParagraph && blockParagraph.parentElement?.tagName === 'LI') {
|
|
1638
|
+
replaceTarget = blockParagraph;
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
const marker = template.content.ownerDocument.createElement('span');
|
|
1642
|
+
marker.className = 'export-math';
|
|
1643
|
+
marker.dataset.mml = encodeURIComponent(mathml);
|
|
1644
|
+
marker.textContent = `COLLABMD-MATH-${docxMathIndex}`;
|
|
1645
|
+
replaceTarget.replaceWith(marker);
|
|
1646
|
+
});
|
|
1471
1647
|
Array.from(template.content.querySelectorAll('.table-wrapper')).forEach((wrapper) => {
|
|
1472
1648
|
const table = wrapper.querySelector(':scope > table');
|
|
1473
1649
|
if (!table) {
|
|
@@ -1595,12 +1771,11 @@ export function buildDocxHtmlDocument(snapshot) {
|
|
|
1595
1771
|
}));
|
|
1596
1772
|
});
|
|
1597
1773
|
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
<style>
|
|
1774
|
+
// Compact wrapper: with HTML minification skipped, the converter turns
|
|
1775
|
+
// every surviving whitespace text node into document content, so the
|
|
1776
|
+
// doctype and any inter-tag whitespace here would become phantom empty
|
|
1777
|
+
// paragraphs. Body content is normalized by normalizeDocxWhitespace above.
|
|
1778
|
+
return `<html lang="en"><head><meta charset="UTF-8"><title>${escapeHtml(snapshot.title)}</title><style>
|
|
1604
1779
|
body { font-family: Arial, sans-serif; color: #111827; line-height: 1.6; }
|
|
1605
1780
|
main { max-width: 760px; margin: 0 auto; }
|
|
1606
1781
|
h1, h2, h3, h4, h5, h6 { color: #111827; margin: 1.3em 0 0.6em; line-height: 1.2; }
|
|
@@ -1623,15 +1798,10 @@ export function buildDocxHtmlDocument(snapshot) {
|
|
|
1623
1798
|
.export-video-poster-meta { display: block; color: #6b7280; font-size: 12px; margin-top: 4px; }
|
|
1624
1799
|
.export-video-link { display: block; margin-top: 8px; word-break: break-word; }
|
|
1625
1800
|
.export-warning { color: #b45309; }
|
|
1626
|
-
</style
|
|
1627
|
-
</head>
|
|
1628
|
-
<body>
|
|
1629
|
-
<main>${template.innerHTML}</main>
|
|
1630
|
-
</body>
|
|
1631
|
-
</html>`;
|
|
1801
|
+
</style></head><body><main>${template.innerHTML}</main></body></html>`;
|
|
1632
1802
|
}
|
|
1633
1803
|
|
|
1634
|
-
export function buildHtmlDocument(snapshot) {
|
|
1804
|
+
export function buildHtmlDocument(snapshot, extraStyles = '') {
|
|
1635
1805
|
const template = document.createElement('template');
|
|
1636
1806
|
replaceChildrenFromHtml(template.content, snapshot.html);
|
|
1637
1807
|
Array.from(template.content.querySelectorAll('[data-export-docx-src]')).forEach((element) => {
|
|
@@ -1645,7 +1815,7 @@ export function buildHtmlDocument(snapshot) {
|
|
|
1645
1815
|
<meta charset="UTF-8">
|
|
1646
1816
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
1647
1817
|
<title>${escapeHtml(snapshot.title)}</title>
|
|
1648
|
-
<style>${HTML_EXPORT_STYLES.replace(/<\/style/giu, '<\\/style')}</style>
|
|
1818
|
+
<style>${HTML_EXPORT_STYLES.replace(/<\/style/giu, '<\\/style')}${extraStyles.replace(/<\/style/giu, '<\\/style')}</style>
|
|
1649
1819
|
</head>
|
|
1650
1820
|
<body data-theme="${theme}">
|
|
1651
1821
|
<main class="export-page-shell">
|
|
@@ -1655,9 +1825,10 @@ export function buildHtmlDocument(snapshot) {
|
|
|
1655
1825
|
</html>`;
|
|
1656
1826
|
}
|
|
1657
1827
|
|
|
1658
|
-
export function htmlAdapter(snapshot) {
|
|
1828
|
+
export async function htmlAdapter(snapshot) {
|
|
1829
|
+
const mathStyles = hasRenderedMath(snapshot.html) ? await loadKatexExportStyles() : '';
|
|
1659
1830
|
downloadBlob(
|
|
1660
|
-
new Blob([buildHtmlDocument(snapshot)], { type: 'text/html;charset=utf-8' }),
|
|
1831
|
+
new Blob([buildHtmlDocument(snapshot, mathStyles)], { type: 'text/html;charset=utf-8' }),
|
|
1661
1832
|
`${createDocumentTitle(snapshot.filePath, snapshot.title)}.html`,
|
|
1662
1833
|
{ removeDelayMs: 0, revokeDelayMs: 1000 },
|
|
1663
1834
|
);
|
|
@@ -1688,10 +1859,26 @@ export async function docxAdapter(snapshot) {
|
|
|
1688
1859
|
});
|
|
1689
1860
|
}
|
|
1690
1861
|
|
|
1862
|
+
// document.fonts.ready can resolve before lazy KaTeX faces start loading,
|
|
1863
|
+
// which prints blank glyphs. Force-load the families and bound the wait so
|
|
1864
|
+
// a missing font cannot hang the export.
|
|
1865
|
+
async function waitForKatexPrintFonts() {
|
|
1866
|
+
if (!document.fonts) {
|
|
1867
|
+
return;
|
|
1868
|
+
}
|
|
1869
|
+
|
|
1870
|
+
const families = [...new Set(Object.keys(KATEX_EXPORT_FONT_URLS).map((file) => file.replace(/-[^-]+\.woff2$/u, '')))];
|
|
1871
|
+
const loads = families.map((family) => document.fonts.load(`16px "${family}"`).catch(() => []));
|
|
1872
|
+
await Promise.race([
|
|
1873
|
+
Promise.allSettled(loads),
|
|
1874
|
+
new Promise((resolve) => window.setTimeout(resolve, EXPORT_PRINT_FONT_TIMEOUT_MS)),
|
|
1875
|
+
]);
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1691
1878
|
export async function printPdfAdapter() {
|
|
1879
|
+
await waitForKatexPrintFonts();
|
|
1692
1880
|
await waitForAnimationFrame();
|
|
1693
1881
|
await waitForAnimationFrame();
|
|
1694
|
-
|
|
1695
1882
|
await new Promise((resolve) => {
|
|
1696
1883
|
const timeoutId = window.setTimeout(resolve, 1500);
|
|
1697
1884
|
const handleAfterPrint = () => {
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import '../styles/features/auth-gate.css';
|
|
2
|
-
|
|
3
1
|
import { getHashParamsFromRaw } from '../domain/hash-routes.js';
|
|
4
2
|
import { parseApiResponse } from './api-client-utils.js';
|
|
5
3
|
import { getRuntimeConfig } from './runtime-config.js';
|
|
@@ -255,6 +253,7 @@ export async function ensureClientAuthenticated() {
|
|
|
255
253
|
return { authenticated: true, auth: config };
|
|
256
254
|
}
|
|
257
255
|
|
|
256
|
+
await import('../styles/features/auth-gate.css');
|
|
258
257
|
const { card, overlay } = createOverlayShell();
|
|
259
258
|
document.body.append(overlay);
|
|
260
259
|
let pendingOidcError = consumeHashParam('auth_error');
|
|
@@ -23,6 +23,7 @@ export class BrowserPreferencesPort {
|
|
|
23
23
|
lineWrappingKey,
|
|
24
24
|
recentFilesKey = 'collabmd-recent-files',
|
|
25
25
|
vimModeKey = 'collabmd-editor-vim-mode',
|
|
26
|
+
viewModeKey = 'collabmd-editor-view-mode',
|
|
26
27
|
sidebarVisibleKey,
|
|
27
28
|
userNameKey,
|
|
28
29
|
storage = globalThis.localStorage,
|
|
@@ -33,6 +34,7 @@ export class BrowserPreferencesPort {
|
|
|
33
34
|
this.sidebarVisibleKey = sidebarVisibleKey;
|
|
34
35
|
this.storage = storage;
|
|
35
36
|
this.userNameKey = userNameKey;
|
|
37
|
+
this.viewModeKey = viewModeKey;
|
|
36
38
|
this.vimModeKey = vimModeKey;
|
|
37
39
|
}
|
|
38
40
|
|
|
@@ -60,6 +62,14 @@ export class BrowserPreferencesPort {
|
|
|
60
62
|
writeStorage(this.storage, this.lineWrappingKey, String(enabled));
|
|
61
63
|
}
|
|
62
64
|
|
|
65
|
+
getCursorNamesVisible() {
|
|
66
|
+
return readStorage(this.storage, 'collabmd-editor-cursor-names', null) !== 'false';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
setCursorNamesVisible(visible) {
|
|
70
|
+
writeStorage(this.storage, 'collabmd-editor-cursor-names', String(visible));
|
|
71
|
+
}
|
|
72
|
+
|
|
63
73
|
getVimModeEnabled() {
|
|
64
74
|
return readStorage(this.storage, this.vimModeKey, null) === 'true';
|
|
65
75
|
}
|
|
@@ -68,6 +78,20 @@ export class BrowserPreferencesPort {
|
|
|
68
78
|
writeStorage(this.storage, this.vimModeKey, String(enabled));
|
|
69
79
|
}
|
|
70
80
|
|
|
81
|
+
getViewMode() {
|
|
82
|
+
const value = readStorage(this.storage, this.viewModeKey, null);
|
|
83
|
+
if (value === 'editor' || value === 'preview' || value === 'split') {
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
setViewMode(view) {
|
|
90
|
+
if (view === 'editor' || view === 'preview' || view === 'split') {
|
|
91
|
+
writeStorage(this.storage, this.viewModeKey, view);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
71
95
|
getRecentFiles() {
|
|
72
96
|
const stored = readStorage(this.storage, this.recentFilesKey, '[]');
|
|
73
97
|
try {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as Y from 'yjs';
|
|
2
2
|
|
|
3
|
+
import { createEditableContentRevision } from '../../domain/editable-content-revision.js';
|
|
4
|
+
|
|
3
5
|
import { CommentThreadStore } from './comment-thread-store.js';
|
|
4
6
|
import { EditorCollaborationClient } from './editor-collaboration-client.js';
|
|
5
7
|
import { EditorViewAdapter } from './editor-view-adapter.js';
|
|
@@ -172,6 +174,24 @@ export class EditorSession {
|
|
|
172
174
|
return this.collaborationClient.ytext;
|
|
173
175
|
}
|
|
174
176
|
|
|
177
|
+
async getAgentContext() {
|
|
178
|
+
const state = this.viewAdapter.getState();
|
|
179
|
+
if (!this.isInitialSyncComplete() || !state || state.doc.length > 1_000_000) return null;
|
|
180
|
+
const { from, to } = state.selection.main;
|
|
181
|
+
const end = to > from ? to - 1 : to;
|
|
182
|
+
return {
|
|
183
|
+
localRevision: await createEditableContentRevision(state.doc.toString()),
|
|
184
|
+
selection: {
|
|
185
|
+
endLine: state.doc.lineAt(end).number,
|
|
186
|
+
from,
|
|
187
|
+
startLine: state.doc.lineAt(from).number,
|
|
188
|
+
text: state.doc.sliceString(from, Math.min(to, from + 2000)),
|
|
189
|
+
to,
|
|
190
|
+
truncated: to - from > 2000,
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
175
195
|
getCurrentSelectionLineRange() {
|
|
176
196
|
return this.viewAdapter.getCurrentSelectionLineRange();
|
|
177
197
|
}
|