collabmd 0.1.51 → 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 +1 -1
- 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/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/{babel-CY5KOv-I.js → babel-Bi_28hhi.js} +1 -1
- package/dist/client/assets/band-D-Cum8PO.js +1 -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/{browser-BKLM0ThC-IxjwuOIz-DyJcVMFR.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-VAk1HPmz.js → c4Diagram-7LVT6UL2-r4IwomZm.js} +2 -2
- package/dist/client/assets/c4Diagram-YGBWAQC7-_xZPrNkB.js +38 -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-Cmtx89ht.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-Dg3H6KLL.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-XlsB_ZMZ.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-3F6NhHUP.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-Du8EtwOa.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-ZPMXAHWN-Dt0TxJa6.js → chunk-RUX4WMZV-BGnd3s_C.js} +4 -4
- package/dist/client/assets/{chunk-SHT3W25Y-BKaI8jZO.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-Cpp2z8yK.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/cose-bilkent-JH36ORCC-Czr0rwGr.js +1 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-DLmEf9HS.js +1 -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/dagre-6A5THRUB-DewyAGK6.js +4 -0
- package/dist/client/assets/dagre-D7FiCLLP.js +1 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-BSfKCfy7.js → dagre-GXQ25YYZ-Vtyx08Qh.js} +2 -2
- package/dist/client/assets/deferred-collab-D4cxEdad.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-D7KaM9yj.js → diagram-S7CK7UJ4-CGTzfo2f.js} +3 -3
- package/dist/client/assets/diagram-UQ7AKVKN-CWZS8QtB.js +41 -0
- package/dist/client/assets/{diagram-VSXAHHWV-B3-U-Q2E.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-DVXzbeDx.js → dist-BVCNc-Es.js} +1 -1
- package/dist/client/assets/dist-BYBF4LtZ.js +1 -0
- package/dist/client/assets/{dist-B_B4XLmq.js → dist-B_1hMrc6.js} +1 -1
- package/dist/client/assets/{dist-EWJYvBK1.js → dist-BfpAc922.js} +1 -1
- package/dist/client/assets/dist-BnVaoRgZ.js +1 -0
- package/dist/client/assets/{dist-kiD2GIsD.js → dist-Bog8M5U3.js} +6 -6
- package/dist/client/assets/dist-CAG5sIOj.js +1 -0
- package/dist/client/assets/{dist-CrWzIWEE.js → dist-CKf7LlAo.js} +1 -1
- package/dist/client/assets/{dist-CqXVyYoH.js → dist-CUsXdnU4.js} +1 -1
- package/dist/client/assets/{dist-B7XMN9AT.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-BR81yxMt.js → dist-CsQTfQFi.js} +1 -1
- package/dist/client/assets/dist-Cu5Ze2cs.js +6 -0
- package/dist/client/assets/{dist-Drv_wZYC.js → dist-CvVoyTRF.js} +1 -1
- package/dist/client/assets/{dist-CbDyXgCo.js → dist-D4kDR0g8.js} +1 -1
- package/dist/client/assets/dist-D8LnhZzy.js +1 -0
- package/dist/client/assets/{dist-CELhfKzh.js → dist-DGa-2MNX.js} +2 -2
- package/dist/client/assets/{dist-CO0-4CuV.js → dist-DI6c02Da.js} +8 -8
- package/dist/client/assets/{dist-DJAMplZI.js → dist-DNONgI1P.js} +2 -2
- package/dist/client/assets/dist-DVBYH83t.js +1 -0
- package/dist/client/assets/dist-DX6qtdxv.js +1 -0
- package/dist/client/assets/{dist-Bx3QkS-3.js → dist-Da-jLrCf.js} +1 -1
- package/dist/client/assets/dist-DofvCYzJ.js +1 -0
- package/dist/client/assets/{dist-BzFSJM0U.js → dist-Dx37MHWs.js} +1 -1
- package/dist/client/assets/{dist-Bdy9ZRzd.js → dist-GTGhtpyW.js} +1 -1
- package/dist/client/assets/{dist-nxQErAaK.js → dist-W0FoeIxk.js} +9 -9
- package/dist/client/assets/{dist-By7ieqAf.js → dist-Y6zYRI-A.js} +1 -1
- package/dist/client/assets/{dist-Bfxzlnrf.js → dist-jVKfryIL.js} +1 -1
- package/dist/client/assets/{dist-DCpIH3-_.js → dist-zHDLm1oE.js} +1 -1
- package/dist/client/assets/{document-formatter-Qdiq9uJs.js → document-formatter-gO8qM2qY.js} +1 -1
- package/dist/client/assets/{drawioEditor-CHf1vtdQ.js → drawioEditor-DCkWweiy.js} +2 -2
- 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/elk-276RUBZZ-B8LB3Pac.js +27 -0
- package/dist/client/assets/embedded-editor-base-elU0Avik.css +1 -0
- package/dist/client/assets/{embedpdf-DA4bA119-E8wZ11J2.js → embedpdf-DA4bA119-DsoNiPlQ.js} +4 -4
- package/dist/client/assets/{embedpdf-LUXDBD3-.js → embedpdf-DyOonRvx.js} +1 -1
- package/dist/client/assets/{en-2RFA324Y-BsuNJTcL.js → en-GNC3RJIS-CEy_oGTd.js} +1 -1
- package/dist/client/assets/erDiagram-OPXOYQCR-o8GRv8A_.js +99 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CWrH1UJ9.js → erDiagram-RLTQ6QDP-C9cJl5NB.js} +2 -2
- 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/eventmodeling-NTZA5JFV-CDy1bN6j.js +1 -0
- package/dist/client/assets/eventmodeling-NTZA5JFV-Dxtv5D-P.js +1 -0
- package/dist/client/assets/{excalidraw-element-link-iA6zo0_f.js → excalidraw-element-link-CGZ5934B.js} +1 -1
- package/dist/client/assets/{excalidrawEditor-DDE0n1Pk.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-FIYUE2GQ-C865Nx3X.js → fa-IR-I4JNTJHK-CFtHZqoT.js} +1 -1
- 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/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/graphlib-C9Tl7QrK.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/{id-ID-EOMR5R3I-CGQwUjoL.js → id-ID-2WY7E4VX-CCAeQpPr.js} +2 -2
- 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-CRy9vIS5.js → ishikawaDiagram-5VMMS53U-Bnt9yM0O.js} +2 -2
- package/dist/client/assets/ishikawaDiagram-OU5B5YK6-Di9BcpOY.js +70 -0
- package/dist/client/assets/{it-IT-FC2VTM3L-KTijNcUe.js → it-IT-INVHSAJF-DytAgndh.js} +1 -1
- package/dist/client/assets/javascript-B9I2pbsP.js +1 -0
- package/dist/client/assets/javascript-DctB8BJo.js +1 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-D4ZR_s9J.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/kanban-definition-PNTS6WVX-5ZDV_yIa.js +89 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-CIDTmu5g.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/line-DEbP8Ok6.js +1 -0
- package/dist/client/assets/linear-DExL6ILt.js +1 -0
- package/dist/client/assets/{lobby-presence-Rdjnc0_0.js → lobby-presence-Cz5jGOPg.js} +1 -1
- package/dist/client/assets/{lua-CL1SqxuB.js → lua-zbJo2mq3.js} +1 -1
- 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-DrdLA3p0.js → mermaid-parser.core-Bpogunsh.js} +1 -1
- 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-DO8NB9VH.js → mindmap-definition-YA3MSWOX-DBZN5_GH.js} +29 -29
- package/dist/client/assets/{nginx-BMaDbqW3.js → nginx-8H7HVH4w.js} +1 -1
- 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/{preload-helper-CtT0-S4g.js → preload-helper-BAlEavIC.js} +1 -1
- 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/{pug-Wky5Dnfy.js → pug-CqqUmdG7.js} +1 -1
- package/dist/client/assets/purify.es-go7v6Te-.js +3 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-fJE7iAxt.js → quadrantDiagram-AXDQQJYC-C5iowkl_.js} +3 -3
- package/dist/client/assets/quadrantDiagram-O4NWA36T-Bgx5bF97.js +7 -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-Balm0WW8.js → requirementDiagram-BXWQKSXE-BkvazG7r.js} +1 -1
- package/dist/client/assets/requirementDiagram-PLB6GJNP-BT0j9C40.js +84 -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-BL1j3Sn-.js → sequenceDiagram-WJ2MYXX4-CxFBgLGd.js} +3 -3
- 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/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/th-TH-WLSZUSBX-DHehoYR2.js +1 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-7pch5JAr.js → timeline-definition-24CTP7MA-zse-5Dbm.js} +5 -5
- package/dist/client/assets/timeline-definition-EJHVYXUP-BhqPlKkN.js +120 -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/usecaseDiagram-POWQR4AR-DR2LHQYs.js +328 -0
- package/dist/client/assets/v4-DDdyfk2q.js +1 -0
- package/dist/client/assets/{vault-api-client-QjZ_T03l.js → vault-api-client-BQxLVPeF.js} +1 -1
- package/dist/client/assets/vault-paths-BT-6nztu.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/wardley-WFR3VGLG-BdwDpX_I.js +1 -0
- package/dist/client/assets/wardley-WFR3VGLG-Y7xty_3m.js +1 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-BbSlUwuM.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-eSDcDGEI.js → worker-engine-m0rlHn8R-5h66k403.js} +1 -1
- package/dist/client/assets/{workspace-sync-client-D4nblH_2.js → workspace-sync-client-C2pdaQUN.js} +1 -1
- 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-provider-reset-guard-R43MnLNc.js → yjs-provider-reset-guard-DpntzUDR.js} +1 -1
- package/dist/client/drawio-editor.html +6 -5
- package/dist/client/excalidraw-editor.html +39 -32
- package/dist/client/export-document.html +4 -3
- package/dist/client/index.html +21 -14
- package/package.json +12 -9
- package/src/client/app/drawio-editor.html +1 -0
- package/src/client/app/excalidraw-editor.html +1 -0
- package/src/client/app/export-document-entry.js +1 -0
- package/src/client/app/export-document.html +1 -0
- package/src/client/app/index.html +19 -12
- package/src/client/application/app-shell/ui-feature-shell.js +20 -1
- package/src/client/application/app-shell-elements.js +2 -0
- package/src/client/application/diagram-preview-hydrator.js +7 -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 +2 -0
- package/src/client/application/preview-render-executor.js +4 -1
- package/src/client/application/preview-render-profile.js +8 -12
- package/src/client/application/preview-renderer.js +3 -0
- package/src/client/bootstrap/collabmd-app-shell.js +16 -7
- package/src/client/browser-utils.js +1 -1
- package/src/client/domain/excalidraw-scene.js +0 -11
- package/src/client/domain/file-search.js +1 -0
- package/src/client/domain/highlight-runtime.js +30 -3
- package/src/client/domain/markdown-math.js +14 -0
- package/src/client/export/export-host.js +3 -7
- package/src/client/export/export-pipeline.js +208 -21
- package/src/client/infrastructure/browser-preferences-port.js +8 -0
- package/src/client/infrastructure/editor-session.js +20 -0
- package/src/client/infrastructure/editor-view-adapter.js +8 -7
- package/src/client/infrastructure/excalidraw-room-client.js +2 -45
- package/src/client/infrastructure/git-api-client.js +5 -0
- package/src/client/infrastructure/tab-activity-lock.js +8 -4
- package/src/client/infrastructure/webmcp-tool-registry.js +12 -5
- package/src/client/presentation/bases-preview-controller.js +2 -1
- package/src/client/presentation/comment-markdown-renderer.js +2 -0
- 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 +1 -0
- package/src/client/presentation/file-explorer-view.js +32 -2
- 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 +6 -5
- package/src/client/presentation/image-lightbox-controller.js +7 -6
- 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/styles/components/navigation.css +2 -2
- package/src/client/styles/deferred-collab.css +1 -0
- package/src/client/styles/deferred-preview.css +1 -0
- package/src/client/styles/features/diagram-preview.css +1 -0
- package/src/client/styles/features/preview-markdown.css +4 -4
- package/src/client/styles/foundation/themes.css +56 -271
- package/src/client/styles/layout/editor-page.css +0 -1
- package/src/client/styles/layout/shell.css +6 -0
- package/src/client/styles/layout/sidebar.css +3 -0
- package/src/client/styles/surfaces/landing-page.css +260 -0
- package/src/domain/agent-tool-definitions.js +45 -13
- package/src/domain/collabmd-content-capabilities.js +59 -4
- package/src/domain/collaboration-protocol.js +2 -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 +124 -56
- 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 +1 -1
- 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 +29 -62
- package/src/server/domain/ripgrep-search-service.js +44 -28
- 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/status-service.js +10 -6
- package/src/server/infrastructure/http/create-git-api-query-handler.js +25 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +13 -53
- package/src/server/infrastructure/http/http-response.js +2 -0
- 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 +7 -4
- package/src/server/infrastructure/persistence/vault-file-store.js +55 -168
- 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 +7 -3
- package/src/server/infrastructure/websocket/client-socket-session.js +32 -4
- package/src/server/infrastructure/workspace/file-system-sync-service.js +4 -2
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-Crf9Y3Q6.js +0 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-PuinKbSQ.js +0 -1
- package/dist/client/assets/architecture-7GRP2DOG-BMOPAkUC.js +0 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-46hPkrZv.js +0 -36
- package/dist/client/assets/blockDiagram-I7D4REHJ-C1S5Bzf8.js +0 -129
- package/dist/client/assets/channel-jwdhnPiV.js +0 -1
- package/dist/client/assets/chunk-2E4U76K2-Ba8Wf22k.js +0 -1
- package/dist/client/assets/chunk-4HAMMTFA-Ht-73lsT.js +0 -62
- package/dist/client/assets/chunk-5XKZK2GL-D4UAZSOJ.js +0 -1
- package/dist/client/assets/chunk-75Z2AOVW-B2cZexqK.js +0 -2
- package/dist/client/assets/chunk-DU6HZSFF-C6d6PJfE.js +0 -127
- package/dist/client/assets/chunk-GMAD6QVW-DUfjx_d5.js +0 -72
- package/dist/client/assets/chunk-GVQU2GXP-D1l7oRGR.js +0 -1
- package/dist/client/assets/chunk-L3NEJ4N5-BmCVn4y-.js +0 -1
- package/dist/client/assets/chunk-OSK3NFVY-CWHXAmfx.js +0 -10
- package/dist/client/assets/chunk-POPQ4Y6H-B5yJIrZE.js +0 -1
- package/dist/client/assets/chunk-PWAF6VOD-B3gML4ps.js +0 -1
- package/dist/client/assets/chunk-TLUHSLCS-Yl7B0Vrz.js +0 -1
- package/dist/client/assets/chunk-ZNVOA63L-BmCQjhx-.js +0 -40
- package/dist/client/assets/classDiagram-ZZMXUADV-BRw9vo8U.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BRw9vo8U.js +0 -1
- package/dist/client/assets/comment-markdown-renderer-B9_vPc3F.js +0 -1
- package/dist/client/assets/comment-thread-store-NNHqRVsX.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-Cm_QF_yb.js +0 -1
- package/dist/client/assets/cynefin-OW5HDTMX-7tP7QfM3.js +0 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BRoCEoZM.js +0 -62
- package/dist/client/assets/cytoscape.esm-B-NFISlW.js +0 -321
- package/dist/client/assets/dagre-PrKaheQc.js +0 -1
- package/dist/client/assets/deferred-collab-rBe4nuQ2.css +0 -1
- package/dist/client/assets/deferred-preview-pe7Iwwx3.css +0 -1
- package/dist/client/assets/diagram-UQ7AKVKN-JevUZuYi.js +0 -41
- package/dist/client/assets/diagram-VX7I27RA-pSD4HMh1.js +0 -24
- package/dist/client/assets/diagram-Z3DM3KII-D8r1_CIb.js +0 -24
- package/dist/client/assets/direct-engine-DdrQKpgq-B5zIoeQw.js +0 -5
- package/dist/client/assets/dist-B3HdUPsK.js +0 -1
- package/dist/client/assets/dist-BIRygGYH.js +0 -1
- package/dist/client/assets/dist-BPyOlNLY.js +0 -2
- package/dist/client/assets/dist-ByhQbe-x.js +0 -1
- package/dist/client/assets/dist-C5NkYKAa.js +0 -1
- package/dist/client/assets/dist-CEirJSxk.js +0 -1
- package/dist/client/assets/dist-CRnJ0D9h.js +0 -1
- package/dist/client/assets/dist-CyNrloSI.js +0 -1
- package/dist/client/assets/dist-D60_kdpQ.js +0 -1
- package/dist/client/assets/dist-Hdhj3L3t.js +0 -1
- package/dist/client/assets/dist-gRRhmB-2.js +0 -6
- package/dist/client/assets/dist-kWb2d1CH.js +0 -1
- package/dist/client/assets/dist-l-56SowH.js +0 -19
- package/dist/client/assets/dist-sLzRQQk7.js +0 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-UJ0Fz5ci.js +0 -1
- package/dist/client/assets/editor-session-4Bn81iWm.js +0 -14
- package/dist/client/assets/embedded-editor-base-jK221GC8.css +0 -1
- package/dist/client/assets/eventmodeling-NTZA5JFV-BR2FzK4R.js +0 -1
- package/dist/client/assets/excalidrawEditor-WIuguTz7.js +0 -9
- package/dist/client/assets/export-page-AN-wI5p4.js +0 -56
- package/dist/client/assets/exportDocument-B7IagJhQ.css +0 -1
- package/dist/client/assets/exportDocument-B9xNKpQe.js +0 -2
- package/dist/client/assets/file-search-DDLyyLDU.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-kb1lUSBo.js +0 -1
- package/dist/client/assets/forth-Cezjo90N.js +0 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BBNzDfaV.js +0 -292
- package/dist/client/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +0 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Csf0Dm_1.js +0 -106
- package/dist/client/assets/graphlib-DS17s2tU.js +0 -1
- package/dist/client/assets/image-2QKV3NAF-BUbX0y5Y.js +0 -1
- package/dist/client/assets/index-BAmZnTFV.css +0 -1
- package/dist/client/assets/index-mWiw418b.js +0 -1111
- package/dist/client/assets/info-A6RAGUB7-BlU-8_xu.js +0 -1
- package/dist/client/assets/infoDiagram-27XIBGKW-Bzy6kCbb.js +0 -2
- 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/line-DSWLHgpx.js +0 -1
- package/dist/client/assets/linear-n-3HSMUF.js +0 -1
- package/dist/client/assets/markdown-it-CocJWnjv.js +0 -13
- package/dist/client/assets/mermaid.core-C_FK-7n4.js +0 -1
- package/dist/client/assets/mermaid.core-D0cMM4Rl.js +0 -10
- package/dist/client/assets/packet-AYTQ26CC-BSJEH9Lb.js +0 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-DS6Ab21R.js +0 -1
- package/dist/client/assets/percentages-Q7USCRWZ-DWE6uvTs.js +0 -1
- package/dist/client/assets/pie-WAS4IAKB-qxv01Y8W.js +0 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-BbFe6Tgs.js +0 -39
- package/dist/client/assets/preview-render-compiler-C_7J7eia.js +0 -43
- package/dist/client/assets/preview-render-compiler-DzJ1KR_M.js +0 -1
- package/dist/client/assets/preview-render-worker-1DoIDllV.js +0 -59
- package/dist/client/assets/prod-D5TxmmoB.js +0 -1
- package/dist/client/assets/prod-pbFU4TaM.js +0 -145
- package/dist/client/assets/quick-switcher-controller-CUajuy78.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-CUQKqbCK.js +0 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-CcbMqrlQ.js +0 -40
- package/dist/client/assets/sl-SI-JRML4FIH-D53L_0S2.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-DNi924hh.js +0 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C62JEwak.js +0 -1
- package/dist/client/assets/sv-SE-4ZPKFFXF-DT-G7RCI.js +0 -12
- package/dist/client/assets/swimlanes-42K2YHIH-ColgjSH4.js +0 -1
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-B9UZhEj4.js +0 -8
- package/dist/client/assets/th-TH-P7CTMGDK-6sy0NO7K.js +0 -1
- package/dist/client/assets/treeView-Q6P3EWNA-BTTYcvrF.js +0 -1
- package/dist/client/assets/treemap-WGGIJYW6-Cg7tyfH8.js +0 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-C5taziCX.js +0 -34
- package/dist/client/assets/wardley-WFR3VGLG-C6N1rULY.js +0 -1
- package/dist/client/assets/wiki-link-resolver-C2P_WmTV.js +0 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-D06X1arY.js +0 -7
- package/src/server/domain/collaboration/protocol.js +0 -6
|
@@ -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 = () => {
|
|
@@ -62,6 +62,14 @@ export class BrowserPreferencesPort {
|
|
|
62
62
|
writeStorage(this.storage, this.lineWrappingKey, String(enabled));
|
|
63
63
|
}
|
|
64
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
|
+
|
|
65
73
|
getVimModeEnabled() {
|
|
66
74
|
return readStorage(this.storage, this.vimModeKey, null) === 'true';
|
|
67
75
|
}
|
|
@@ -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
|
}
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
defaultHighlightStyle,
|
|
14
14
|
foldGutter,
|
|
15
15
|
foldKeymap,
|
|
16
|
+
forceParsing,
|
|
16
17
|
indentOnInput,
|
|
17
18
|
syntaxHighlighting,
|
|
18
19
|
} from '@codemirror/language';
|
|
@@ -251,9 +252,6 @@ function createEditorTheme(theme) {
|
|
|
251
252
|
const selectionBackground = theme === 'dark'
|
|
252
253
|
? 'oklch(from var(--color-primary) l c h / 0.4)'
|
|
253
254
|
: 'oklch(from var(--color-primary) l c h / 0.26)';
|
|
254
|
-
const selectionBorder = theme === 'dark'
|
|
255
|
-
? 'oklch(from var(--color-primary) l c h / 0.65)'
|
|
256
|
-
: 'oklch(from var(--color-primary) l c h / 0.5)';
|
|
257
255
|
const caretColor = theme === 'dark'
|
|
258
256
|
? 'color-mix(in oklab, var(--color-primary) 78%, white)'
|
|
259
257
|
: 'color-mix(in oklab, var(--color-primary) 84%, black)';
|
|
@@ -303,6 +301,10 @@ function createEditorTheme(theme) {
|
|
|
303
301
|
backgroundColor: activeLineBackground,
|
|
304
302
|
boxShadow: `inset 3px 0 0 ${activeLineAccent}`,
|
|
305
303
|
},
|
|
304
|
+
'&:has(.cm-selectionBackground) .cm-activeLine': {
|
|
305
|
+
backgroundColor: 'transparent',
|
|
306
|
+
boxShadow: 'none',
|
|
307
|
+
},
|
|
306
308
|
'.cm-activeLineGutter': {
|
|
307
309
|
backgroundColor: activeLineBackground,
|
|
308
310
|
boxShadow: `inset 3px 0 0 ${activeLineAccent}`,
|
|
@@ -356,10 +358,6 @@ function createEditorTheme(theme) {
|
|
|
356
358
|
'&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {
|
|
357
359
|
backgroundColor: selectionBackground,
|
|
358
360
|
},
|
|
359
|
-
'&.cm-focused .cm-selectionLayer .cm-selectionBackground': {
|
|
360
|
-
border: `1px solid ${selectionBorder}`,
|
|
361
|
-
borderRadius: '2px',
|
|
362
|
-
},
|
|
363
361
|
'@keyframes collabmd-remote-update-flash': {
|
|
364
362
|
'0%': {
|
|
365
363
|
backgroundColor: theme === 'dark'
|
|
@@ -585,6 +583,9 @@ export class EditorViewAdapter {
|
|
|
585
583
|
parent: this.editorContainer,
|
|
586
584
|
state,
|
|
587
585
|
});
|
|
586
|
+
// Parse beyond the viewport so diagram syntax does not recolor during scrolling.
|
|
587
|
+
// ponytail: cap startup work at 50ms; larger documents retain background parsing.
|
|
588
|
+
forceParsing(this.editorView, state.doc.length, 50);
|
|
588
589
|
|
|
589
590
|
this.editorContainer.dataset.editorMode = editorMode;
|
|
590
591
|
this.editorView.scrollDOM.addEventListener('scroll', this.handleScroll, { passive: true });
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
import {
|
|
24
24
|
buildCollaboratorsMap,
|
|
25
25
|
mergeAwarenessUserPatch,
|
|
26
|
+
normalizeCollaboratorViewport,
|
|
26
27
|
} from '../domain/excalidraw-collaboration.js';
|
|
27
28
|
import {
|
|
28
29
|
buildLiveCollaborationScene,
|
|
@@ -370,23 +371,6 @@ export class ExcalidrawRoomClient {
|
|
|
370
371
|
});
|
|
371
372
|
}
|
|
372
373
|
|
|
373
|
-
getHistoryState() {
|
|
374
|
-
return {
|
|
375
|
-
canRedo: false,
|
|
376
|
-
canUndo: false,
|
|
377
|
-
head: null,
|
|
378
|
-
length: null,
|
|
379
|
-
};
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
canRedo() {
|
|
383
|
-
return this.getHistoryState().canRedo;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
canUndo() {
|
|
387
|
-
return this.getHistoryState().canUndo;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
374
|
isApplyingSharedSnapshot() {
|
|
391
375
|
return this.applyingSharedSnapshotDepth > 0;
|
|
392
376
|
}
|
|
@@ -399,14 +383,6 @@ export class ExcalidrawRoomClient {
|
|
|
399
383
|
this.applyingSharedSnapshotDepth = Math.max(0, this.applyingSharedSnapshotDepth - 1);
|
|
400
384
|
}
|
|
401
385
|
|
|
402
|
-
subscribeHistoryState(listener) {
|
|
403
|
-
if (typeof listener === 'function') {
|
|
404
|
-
listener(this.getHistoryState());
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
return () => {};
|
|
408
|
-
}
|
|
409
|
-
|
|
410
386
|
setLocalUser(nextUser = {}) {
|
|
411
387
|
this.localUser = mergeAwarenessUserPatch({
|
|
412
388
|
currentUser: this.localUser,
|
|
@@ -892,25 +868,6 @@ export class ExcalidrawRoomClient {
|
|
|
892
868
|
this.pendingPointerPayload = null;
|
|
893
869
|
}
|
|
894
870
|
|
|
895
|
-
normalizeViewportAwareness(viewport) {
|
|
896
|
-
if (!viewport || typeof viewport !== 'object') {
|
|
897
|
-
return null;
|
|
898
|
-
}
|
|
899
|
-
|
|
900
|
-
const scrollX = Number(viewport.scrollX);
|
|
901
|
-
const scrollY = Number(viewport.scrollY);
|
|
902
|
-
const zoom = Number(viewport.zoom);
|
|
903
|
-
if (!Number.isFinite(scrollX) || !Number.isFinite(scrollY) || !Number.isFinite(zoom) || zoom <= 0) {
|
|
904
|
-
return null;
|
|
905
|
-
}
|
|
906
|
-
|
|
907
|
-
return {
|
|
908
|
-
scrollX,
|
|
909
|
-
scrollY,
|
|
910
|
-
zoom,
|
|
911
|
-
};
|
|
912
|
-
}
|
|
913
|
-
|
|
914
871
|
scheduleLocalPointerAwareness(payload) {
|
|
915
872
|
if (!this.awareness || !payload?.pointer) {
|
|
916
873
|
return;
|
|
@@ -948,7 +905,7 @@ export class ExcalidrawRoomClient {
|
|
|
948
905
|
return;
|
|
949
906
|
}
|
|
950
907
|
|
|
951
|
-
const normalizedViewport =
|
|
908
|
+
const normalizedViewport = normalizeCollaboratorViewport(viewport);
|
|
952
909
|
if (!normalizedViewport) {
|
|
953
910
|
return;
|
|
954
911
|
}
|
|
@@ -28,6 +28,11 @@ export const gitApiClient = {
|
|
|
28
28
|
return parseApiResponse(response, 'Failed to load git status');
|
|
29
29
|
},
|
|
30
30
|
|
|
31
|
+
getPullBackupSummaryUrl(backupId) {
|
|
32
|
+
const params = createSearchParams({ id: backupId });
|
|
33
|
+
return resolveApiUrl(`/git/pull-backup-summary?${params.toString()}`);
|
|
34
|
+
},
|
|
35
|
+
|
|
31
36
|
async readPullBackups() {
|
|
32
37
|
const response = await fetch(resolveApiUrl('/git/pull-backups'));
|
|
33
38
|
return parseApiResponse(response, 'Failed to load pull backups');
|
|
@@ -38,13 +38,17 @@ export class TabActivityLock {
|
|
|
38
38
|
this.channel = null;
|
|
39
39
|
this.heartbeatTimer = null;
|
|
40
40
|
this.isOwner = false;
|
|
41
|
+
this.listenerController = null;
|
|
41
42
|
this.handleStorageEvent = this.handleStorageEvent.bind(this);
|
|
42
43
|
this.handlePageHide = this.handlePageHide.bind(this);
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
initialize() {
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
this.listenerController?.abort();
|
|
48
|
+
this.listenerController = new AbortController();
|
|
49
|
+
const { signal } = this.listenerController;
|
|
50
|
+
window.addEventListener('storage', this.handleStorageEvent, { signal });
|
|
51
|
+
window.addEventListener('pagehide', this.handlePageHide, { signal });
|
|
48
52
|
|
|
49
53
|
if ('BroadcastChannel' in globalThis) {
|
|
50
54
|
this.channel = new BroadcastChannel(CHANNEL_NAME);
|
|
@@ -56,8 +60,8 @@ export class TabActivityLock {
|
|
|
56
60
|
|
|
57
61
|
destroy() {
|
|
58
62
|
this.release();
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
this.listenerController?.abort();
|
|
64
|
+
this.listenerController = null;
|
|
61
65
|
this.channel?.close();
|
|
62
66
|
this.channel = null;
|
|
63
67
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getVaultFileKind } from '../../domain/file-kind.js';
|
|
1
2
|
import {
|
|
2
3
|
listWebMcpToolDefinitions,
|
|
3
4
|
toWebMcpToolName,
|
|
@@ -128,10 +129,15 @@ function createActiveContextResult(context = {}) {
|
|
|
128
129
|
return {
|
|
129
130
|
activeDiagramPath,
|
|
130
131
|
activePath,
|
|
132
|
+
kind: getVaultFileKind(activePath),
|
|
133
|
+
localRevision: context.localRevision ?? null,
|
|
134
|
+
selection: context.selection ?? null,
|
|
131
135
|
preferredDiagramPath: activeDiagramPath,
|
|
132
136
|
workflow: activeDiagramPath
|
|
133
137
|
? `Current diagram is ${activeDiagramPath}. Inspect it, edit with the returned exact revision, request inline verification, then use the returned canvas paint acknowledgement.`
|
|
134
|
-
:
|
|
138
|
+
: activePath
|
|
139
|
+
? 'Read the active document before editing. Selection offsets are UTF-16 and refer to localRevision; compare it with the fresh server revision and reconsider the selection if they differ. Batch unique exact replacements; reread on conflict. Request Markdown validation when changing references.'
|
|
140
|
+
: 'No diagram is active. Use create_excalidraw with a new .excalidraw path and request inline verification. Inspect then revision-edit any existing path; do not retry stale edits without rereading.',
|
|
135
141
|
};
|
|
136
142
|
}
|
|
137
143
|
|
|
@@ -158,10 +164,10 @@ function createActiveContextTool(getActiveContext) {
|
|
|
158
164
|
return {
|
|
159
165
|
annotations: {
|
|
160
166
|
readOnlyHint: true,
|
|
161
|
-
untrustedContentHint:
|
|
167
|
+
untrustedContentHint: true,
|
|
162
168
|
},
|
|
163
|
-
description: 'Return
|
|
164
|
-
execute: async () => createActiveContextResult(getActiveContext?.()),
|
|
169
|
+
description: 'Return the active file kind, bounded primary editor selection (up to 2000 characters), local snapshot revision, and diagram context. Call for edits referring to this document or selection. Local revision does not confirm server synchronization; read_document supplies the edit revision.',
|
|
170
|
+
execute: async () => createActiveContextResult(await getActiveContext?.()),
|
|
165
171
|
inputSchema: {
|
|
166
172
|
additionalProperties: false,
|
|
167
173
|
properties: {},
|
|
@@ -213,7 +219,8 @@ export class WebMcpToolRegistry {
|
|
|
213
219
|
try {
|
|
214
220
|
const tools = listWebMcpToolDefinitions().map((definition) => ({
|
|
215
221
|
annotations: {
|
|
216
|
-
|
|
222
|
+
consequentialHint: !definition.annotations.readOnlyHint,
|
|
223
|
+
readOnlyHint: Boolean(definition.annotations.readOnlyHint),
|
|
217
224
|
untrustedContentHint: Boolean(definition.untrustedContentHint),
|
|
218
225
|
},
|
|
219
226
|
description: getWebMcpDescription(definition),
|
|
@@ -7,7 +7,8 @@ import { segmentedButtonClassNames, segmentedControlClassNames } from './compone
|
|
|
7
7
|
import { downloadBlob, parseDownloadFileName } from '../browser-utils.js';
|
|
8
8
|
|
|
9
9
|
function createShellKey() {
|
|
10
|
-
|
|
10
|
+
const id = globalThis.crypto?.randomUUID?.() ?? `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
11
|
+
return `base-${id}`;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
function replaceChildrenFromHtml(target, html) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import markdownIt from 'markdown-it';
|
|
2
|
+
import { enableMarkdownMath } from '../domain/markdown-math.js';
|
|
2
3
|
|
|
3
4
|
import { escapeHtml } from '../domain/vault-utils.js';
|
|
4
5
|
|
|
@@ -21,6 +22,7 @@ function createCommentMarkdownRenderer() {
|
|
|
21
22
|
linkify: true,
|
|
22
23
|
typographer: true,
|
|
23
24
|
});
|
|
25
|
+
enableMarkdownMath(markdown);
|
|
24
26
|
|
|
25
27
|
const fallbackLinkOpen = markdown.renderer.rules.link_open;
|
|
26
28
|
const fallbackTableOpen = markdown.renderer.rules.table_open;
|