collabmd 0.1.34 → 0.1.36
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/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-Bg0dawOb.js → CodeMirrorEditor-UCMRAMCV-DnBV8gCm.js} +1 -1
- package/dist/client/assets/_baseFor-BSErPbF2.js +1 -0
- package/dist/client/assets/{ar-SA-NXDWD63E-WivLHHDW.js → ar-SA-NXDWD63E-CTf_wpt3.js} +1 -1
- package/dist/client/assets/arc-DD8jaAGl.js +1 -0
- package/dist/client/assets/architecture-YZFGNWBL-DWWrde02.js +1 -0
- package/dist/client/assets/{architectureDiagram-2XIMDMQ5-kYbOThe4.js → architectureDiagram-Q4EWVU46-BftXiJA8.js} +4 -4
- package/dist/client/assets/{az-AZ-MXSORGZV-DOdq1TKC.js → az-AZ-MXSORGZV-C_C9i9u3.js} +1 -1
- package/dist/client/assets/{bg-BG-O6MV2KSF-CYucKuDS.js → bg-BG-O6MV2KSF-YmfvQf63.js} +1 -1
- package/dist/client/assets/blockDiagram-DXYQGD6D-6UN-nR8-.js +132 -0
- package/dist/client/assets/{bn-IN-MMW2ORAC-DYr8kqNL.js → bn-BD-T2VJNT7N-BD0ob0JE.js} +1 -1
- package/dist/client/assets/{bn-BD-T2VJNT7N-2OKWLCYa.js → bn-IN-MMW2ORAC-BTEFR4Ed.js} +1 -1
- package/dist/client/assets/c4Diagram-AHTNJAMY-Gz7ZAK0d.js +10 -0
- package/dist/client/assets/{ca-ES-MKBCGNOG-B9Aeb43I.js → ca-ES-MKBCGNOG-aLX_cjA0.js} +1 -1
- package/dist/client/assets/channel-XGCkuPi6.js +1 -0
- package/dist/client/assets/chunk-2KRD3SAO-CFcF2aNP.js +1 -0
- package/dist/client/assets/chunk-336JU56O-DvrrHsJT.js +2 -0
- package/dist/client/assets/chunk-426QAEUC-CEbmCgux.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-2e7V-uuE.js → chunk-4BX2VUAB-D5YiFdu1.js} +1 -1
- package/dist/client/assets/chunk-4TB4RGXK-CoouNThi.js +206 -0
- package/dist/client/assets/{chunk-55IACEB6-CpncB3ru.js → chunk-55IACEB6-VHgZjidg.js} +1 -1
- package/dist/client/assets/chunk-5FUZZQ4R-CxIIxXPy.js +62 -0
- package/dist/client/assets/chunk-5PVQY5BW-ciE7eHID.js +2 -0
- package/dist/client/assets/chunk-67CJDMHE-CW-fbgQB.js +1 -0
- package/dist/client/assets/chunk-7N4EOEYR-DbAW6XnF.js +1 -0
- package/dist/client/assets/chunk-AA7GKIK3-ClDHDAza.js +1 -0
- package/dist/client/assets/chunk-BSJP7CBP-D2KkrA_B.js +1 -0
- package/dist/client/assets/chunk-CIAEETIT-BnB8a6HR.js +1 -0
- package/dist/client/assets/{chunk-KX2RTZJC-BTiOJb7N.js → chunk-EDXVE4YY-M4QxyGNt.js} +1 -1
- package/dist/client/assets/chunk-ENJZ2VHE-BQj_1YA_.js +10 -0
- package/dist/client/assets/{chunk-FMBD7UC4-CMahlBa_.js → chunk-FMBD7UC4-qQT7MtX2.js} +1 -1
- package/dist/client/assets/chunk-FOC6F5B3-Bw6XfKDP.js +1 -0
- package/dist/client/assets/chunk-ICPOFSXX-DqJi89rc.js +122 -0
- package/dist/client/assets/chunk-K5T4RW27-CQtjKF2g.js +94 -0
- package/dist/client/assets/chunk-KGLVRYIC-BWSPiKjp.js +1 -0
- package/dist/client/assets/chunk-LIHQZDEY-DtYrHuCi.js +1 -0
- package/dist/client/assets/{chunk-AXZTUZBK-DuMiJYO9.js → chunk-LOOWOR4L-C5BUwXgZ.js} +2 -2
- package/dist/client/assets/chunk-ORNJ4GCN-Csga44e5.js +1 -0
- package/dist/client/assets/{chunk-NQ4KR5QH-CMJKI6Oj.js → chunk-OYMX7WX6-DvtmCasj.js} +25 -14
- package/dist/client/assets/chunk-QZHKN3VN-CHVH9_3S.js +1 -0
- package/dist/client/assets/{chunk-SRAX5OIU-CLVBQRWC.js → chunk-SRAX5OIU-yDw8XRsi.js} +1 -1
- package/dist/client/assets/{chunk-PU5JKC2W-D_6N6t8f.js → chunk-U2HBQHQK-BBXgsocS.js} +6 -6
- package/dist/client/assets/{chunk-PQ6SQG4A-D1AbThjy.js → chunk-X2U36JSP-D3OEPG7k.js} +1 -1
- package/dist/client/assets/{chunk-XPW4576I-DJr4_4Yy.js → chunk-XPW4576I-BUfyrOtN.js} +2 -2
- package/dist/client/assets/chunk-YHkbxXgt.js +1 -0
- package/dist/client/assets/chunk-YKPWT25G-GISHuloq.js +35 -0
- package/dist/client/assets/{chunk-JSJVCQXG-DPQ9cPJt.js → chunk-YZCP3GAM-D1jf1WUI.js} +1 -1
- package/dist/client/assets/{chunk-Z5NKEFVG-HOkYqaKa.js → chunk-Z5NKEFVG-Vu8zBV4H.js} +1 -1
- package/dist/client/assets/chunk-ZZ45TVLE-DGIhE_ST.js +1 -0
- package/dist/client/assets/classDiagram-6PBFFD2Q-D1KhAUL3.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-BSyyJpnR.js +1 -0
- package/dist/client/assets/clike-BFTLRaGS.js +1 -0
- package/dist/client/assets/clone-DI0bYZ1L.js +1 -0
- package/dist/client/assets/{coffeescript-B_7eyHAa.js → coffeescript-B7GZajzV.js} +1 -1
- package/dist/client/assets/{cose-bilkent-S5V4N54A-DASO2hrk.js → cose-bilkent-S5V4N54A-A8ssRFyt.js} +1 -1
- package/dist/client/assets/{cs-CZ-V77HGUP7-BDg-F0CJ.js → cs-CZ-V77HGUP7-Du3y53BB.js} +1 -1
- package/dist/client/assets/{cypher-DE6I2lIA.js → cypher-DEGl2llJ.js} +1 -1
- package/dist/client/assets/cytoscape.esm-BurByw8X.js +321 -0
- package/dist/client/assets/{d-BNkKjn0o.js → d-BspB0dox.js} +1 -1
- package/dist/client/assets/{da-DK-I5RFNTM4-wtSQ0Jxa.js → da-DK-I5RFNTM4-CDJtjf5s.js} +1 -1
- package/dist/client/assets/dagre-Dn6rkrte.js +1 -0
- package/dist/client/assets/dagre-KV5264BT-COzej2en.js +4 -0
- package/dist/client/assets/{de-CH-WLRDEVBV-C1swvmZy.js → de-CH-WLRDEVBV-CLV2tVw6.js} +1 -1
- package/dist/client/assets/{de-DE-DTI4WUSC-C0L6Nz8X.js → de-DE-DTI4WUSC-B53J0BQ8.js} +1 -1
- package/dist/client/assets/diagram-5BDNPKRD-BuK-UBuN.js +10 -0
- package/dist/client/assets/diagram-G4DWMVQ6-CbswIU9X.js +24 -0
- package/dist/client/assets/diagram-MMDJMWI5-BE-yOVGX.js +43 -0
- package/dist/client/assets/diagram-TYMM5635-CT8BdT4s.js +24 -0
- package/dist/client/assets/{dist-3uAMa5w5.js → dist-B98fHn5m.js} +1 -1
- package/dist/client/assets/{dist-BtnXjRx0.js → dist-BE8C_ouo.js} +1 -1
- package/dist/client/assets/{dist-rMhng5DK.js → dist-BEKQo64E.js} +1 -1
- package/dist/client/assets/{dist-DsL7sqZR.js → dist-BOP-dC-R.js} +1 -1
- package/dist/client/assets/{dist-DUvaQ-Bj.js → dist-BPEi1dEF.js} +1 -1
- package/dist/client/assets/{dist-B4uQVR_X.js → dist-BScEL4VP.js} +1 -1
- package/dist/client/assets/dist-BfVljg0L2.js +1 -0
- package/dist/client/assets/{dist-CGV1S_as.js → dist-BiCgLddE.js} +1 -1
- package/dist/client/assets/{dist-CxfohGIV.js → dist-Bn8WRPs1.js} +1 -1
- package/dist/client/assets/dist-Brrlevif.js +6 -0
- package/dist/client/assets/{dist-BLAlZer_.js → dist-CBEw2W2P.js} +1 -1
- package/dist/client/assets/{dist-B-02vKOA.js → dist-CJWCCWEW.js} +1 -1
- package/dist/client/assets/{dist-Dyt7n5Ui.js → dist-CQVTTk81.js} +1 -1
- package/dist/client/assets/dist-CaMl1R6P.js +13 -0
- package/dist/client/assets/dist-CcG3Y7Wp.js +1 -0
- package/dist/client/assets/dist-CghBwrO3.js +1 -0
- package/dist/client/assets/dist-Csbx9lQ-.js +1 -0
- package/dist/client/assets/dist-D34Xzrah.js +1 -0
- package/dist/client/assets/dist-DLyohOXi.js +1 -0
- package/dist/client/assets/{dist-Bc2ND6i3.js → dist-DPCUH5MO.js} +1 -1
- package/dist/client/assets/{dist-BzpfHRaE.js → dist-DQiph4qx.js} +1 -1
- package/dist/client/assets/{dist-CL-jjdvG.js → dist-DWRyOl2w.js} +1 -1
- package/dist/client/assets/{dist-CXpKYW9s.js → dist-DZ2t5lUX.js} +1 -1
- package/dist/client/assets/{dist-BzbYwa8m.js → dist-Dbg8P4C5.js} +1 -1
- package/dist/client/assets/{dist-k47-Io7D.js → dist-DdAqzGFU.js} +1 -1
- package/dist/client/assets/dist-DwvSvkOE.js +1 -0
- package/dist/client/assets/dist-WXLmfDGg.js +1 -0
- package/dist/client/assets/{dist-lDhnP-K1.js → dist-aE0_04fl.js} +1 -1
- package/dist/client/assets/{dist-E_jPb93e.js → dist-mPPUaHhq.js} +1 -1
- package/dist/client/assets/{dist-CjII8VDS.js → dist-v3i1ifes.js} +1 -1
- package/dist/client/assets/dist-wkd-N1L5.js +1 -0
- package/dist/client/assets/drawio-editor-D4Qoluwz.js +9 -0
- package/dist/client/assets/{drawioEditor-D6clB5OH.js → drawioEditor-B65FWq-b.js} +2 -2
- package/dist/client/assets/{ecl-M7Iek4lq.js → ecl-D9rhJ9-u.js} +1 -1
- package/dist/client/assets/editor-session-DV80PhYL.js +16 -0
- package/dist/client/assets/{el-GR-ZXDJ2OS4-BH0saXds.js → el-GR-ZXDJ2OS4-DFmRQv0o.js} +1 -1
- package/dist/client/assets/{en-IQZW2TQM-CzlcEpq3.js → en-CMP6EMR6-D9x8hVSu.js} +1 -1
- package/dist/client/assets/{erDiagram-INFDFZHY-DlIf-fb7.js → erDiagram-SMLLAGMA-6VFZA3Qb.js} +33 -18
- package/dist/client/assets/{es-ES-DYQHAD43-CyzL9Mni.js → es-ES-DYQHAD43-BiGWIrBG.js} +1 -1
- package/dist/client/assets/{eu-ES-QDSYU5Y3-D2-x316S.js → eu-ES-QDSYU5Y3-BjwS0kZi.js} +1 -1
- package/dist/client/assets/excalidraw-editor-BZCE9ydu.css +1 -0
- package/dist/client/assets/excalidraw-editor-hiJQt1cX.js +9 -0
- package/dist/client/assets/{excalidraw-mermaid-stub-Bwe-bKcT.js → excalidraw-mermaid-stub-Df0Q2qkW.js} +1 -1
- package/dist/client/assets/excalidraw-scene-MyNAJi2A.js +176 -0
- package/dist/client/assets/excalidrawEditor-BnbblxK4.js +2 -0
- package/dist/client/assets/{export-page-PeexH2QK.js → export-page-BKDarp9x.js} +3 -3
- package/dist/client/assets/exportDocument-CULEGKmb.js +2 -0
- package/dist/client/assets/{fa-IR-26LZG4PM-D8-trU2x.js → fa-IR-26LZG4PM-BgANg2TD.js} +1 -1
- package/dist/client/assets/{fcl-BWKK0S4-.js → fcl-CUXJFJn1.js} +1 -1
- package/dist/client/assets/{fi-FI-6YS4KDE4-CCdRVFDQ.js → fi-FI-6YS4KDE4-CBL5f3oN.js} +1 -1
- package/dist/client/assets/flatten-DjXjUsvv.js +1 -0
- package/dist/client/assets/flowDiagram-DWJPFMVM-DO9RH8YQ.js +162 -0
- package/dist/client/assets/{fr-FR-BRLLPTZC-Dqq-O5T_.js → fr-FR-BRLLPTZC-CRibNSLG.js} +1 -1
- package/dist/client/assets/ganttDiagram-T4ZO3ILL-B-NMvHWN.js +292 -0
- package/dist/client/assets/gitGraph-7Q5UKJZL-DWNinXu4.js +1 -0
- package/dist/client/assets/gitGraphDiagram-UUTBAWPF-B95qkCUx.js +106 -0
- package/dist/client/assets/{gl-ES-OKUZTLYG-BK7pbLbm.js → gl-ES-OKUZTLYG-DEDwa_xt.js} +1 -1
- package/dist/client/assets/graphlib-CAwOVCJc.js +1 -0
- package/dist/client/assets/{groovy-BEKazBrO.js → groovy-Di--Vb9Z.js} +1 -1
- package/dist/client/assets/{haxe-BY9d_5nB.js → haxe-CcPA1xnA.js} +1 -1
- package/dist/client/assets/{he-IL-26MGYIU7-C3BuYKyY.js → he-IL-26MGYIU7-47wxy70N.js} +1 -1
- package/dist/client/assets/{hi-IN-Q4ZOGTP2-BEvXWXnH.js → hi-IN-Q4ZOGTP2-bhV7c3dK.js} +1 -1
- package/dist/client/assets/{hu-HU-P2OXPSN5-BWWZeJNp.js → hu-HU-P2OXPSN5-xG-gBMzE.js} +1 -1
- package/dist/client/assets/{id-ID-2EIKXYN6-DxSKi_aJ.js → id-ID-2EIKXYN6-MQuYaNHo.js} +1 -1
- package/dist/client/assets/image-J2CAS7OM-DD4DaQTs.js +1 -0
- package/dist/client/assets/image-blob-reduce.esm-D8JQdTFk.js +2 -0
- package/dist/client/assets/{index-BLrtj9YM.js → index-BjdYZiBM.js} +2 -2
- package/dist/client/assets/{index-BIt5EZXz.css → index-BryqP9QY.css} +1 -1
- package/dist/client/assets/info-OMHHGYJF-DtYG_rX0.js +1 -0
- package/dist/client/assets/{infoDiagram-LFFYTUFH-DFTI0nfs.js → infoDiagram-42DDH7IO-C77Pt7T1.js} +1 -1
- package/dist/client/assets/isEmpty-CpfhGGBo.js +1 -0
- package/dist/client/assets/ishikawaDiagram-UXIWVN3A-Cy1fwvvg.js +70 -0
- package/dist/client/assets/{it-IT-4CFKVXI2-BmA8wW6q.js → it-IT-4CFKVXI2-v2kj-y7j.js} +1 -1
- package/dist/client/assets/{ja-JP-MAND2Z4V-CLS1jI9o.js → ja-JP-MAND2Z4V-BahXSQz-.js} +1 -1
- package/dist/client/assets/{javascript-CdiVhQeA.js → javascript-gTK9fxz6.js} +1 -1
- package/dist/client/assets/javascript-qUBHINSy.js +1 -0
- package/dist/client/assets/{journeyDiagram-4ABVD52K-DDur6iHm.js → journeyDiagram-VCZTEJTY-CYWaI6re.js} +2 -2
- package/dist/client/assets/{jsx-runtime-C2p7wRmT.js → jsx-runtime-1KUJVfx8.js} +1 -1
- package/dist/client/assets/{kaa-HQRTCXTJ-W15DEDPz.js → kaa-HQRTCXTJ-BF26ydFa.js} +1 -1
- package/dist/client/assets/{kab-KAB-JKIKKTGH-MLh1inqS.js → kab-KAB-JKIKKTGH-CEIH0F80.js} +1 -1
- package/dist/client/assets/{kanban-definition-K7BYSVSG-dA6NPLsg.js → kanban-definition-6JOO6SKY-DY1xE7tm.js} +2 -2
- package/dist/client/assets/{kk-KZ-HXQ63ZFC-BtFrPeLs.js → kk-KZ-HXQ63ZFC-CxWjc9Sf.js} +1 -1
- package/dist/client/assets/{km-KH-PKL3LSGX-xO5FyM9T.js → km-KH-PKL3LSGX-DJlCteEp.js} +1 -1
- package/dist/client/assets/{ko-KR-KXLREZX3-NZFoRybS.js → ko-KR-KXLREZX3-B1gtI_ci.js} +1 -1
- package/dist/client/assets/{ku-TR-MJ4IER3X-B5eVPIpK.js → ku-TR-MJ4IER3X-Bf41y2v2.js} +1 -1
- package/dist/client/assets/line-BCItEgq3.js +1 -0
- package/dist/client/assets/{linear-B2dOdA24.js → linear-dsIQT_iU.js} +1 -1
- package/dist/client/assets/{lt-LT-H6WFQ6FJ-D_7_OeJD.js → lt-LT-H6WFQ6FJ-DA1or-Eo.js} +1 -1
- package/dist/client/assets/{lua-kutgyRGY.js → lua-Cg0FqIlO.js} +1 -1
- package/dist/client/assets/{lv-LV-GOCK6SJW-CnpKr0oQ.js → lv-LV-GOCK6SJW-qa0BoYMm.js} +1 -1
- package/dist/client/assets/main-QJcxyvDa.js +1404 -0
- package/dist/client/assets/mermaid-parser.core-CsTVsPcD.js +4 -0
- package/dist/client/assets/mermaid-runtime-BGlnoUXY.js +11 -0
- package/dist/client/assets/{mindmap-definition-YRQLILUH-DjQcsPoe.js → mindmap-definition-QFDTVHPH-DB_M5r-j.js} +39 -11
- package/dist/client/assets/{mr-IN-IXVLDMEQ-Pht2X_GK.js → mr-IN-IXVLDMEQ-DXFRgvgb.js} +1 -1
- package/dist/client/assets/{my-MM-YG6MYTTD-Cgq4HhPO.js → my-MM-YG6MYTTD-BKDIfalJ.js} +1 -1
- package/dist/client/assets/{nb-NO-XGWJISD2-Bn_Bk2un.js → nb-NO-XGWJISD2-DbwbopH8.js} +1 -1
- package/dist/client/assets/{nl-NL-XVDVCPNC-YkWSJS94.js → nl-NL-XVDVCPNC-ChSneTSU.js} +1 -1
- package/dist/client/assets/{nn-NO-EMX5MJX5-DhP5eZJ7.js → nn-NO-EMX5MJX5-Cf7ZWKWZ.js} +1 -1
- package/dist/client/assets/{oc-FR-ROEINTVO-D3udMPnr.js → oc-FR-ROEINTVO-lM7Nl7hD.js} +1 -1
- package/dist/client/assets/{pa-IN-ZYN6SUDY-CR5YzFig.js → pa-IN-ZYN6SUDY-C9WNUTeR.js} +1 -1
- package/dist/client/assets/packet-4T2RLAQJ-CUVefhAv.js +1 -0
- package/dist/client/assets/percentages-5DKR754L-DuhOjTM2.js +1 -0
- package/dist/client/assets/pica-CgGaIJly.js +2 -0
- package/dist/client/assets/pie-ZZUOXDRM-BHBJ1dLX.js +1 -0
- package/dist/client/assets/pieDiagram-DEJITSTG-BOo-WzjZ.js +30 -0
- package/dist/client/assets/{pl-PL-6VTG7PHC-_wZuoIDM.js → pl-PL-6VTG7PHC-DqRVepnC.js} +1 -1
- package/dist/client/assets/{preview-diagram-utils-COt-IYMD.js → preview-diagram-utils-Nqpp4FNV.js} +1 -1
- package/dist/client/assets/preview-render-compiler-BCB8u6iM.js +1 -0
- package/dist/client/assets/{preview-render-compiler-BjLlHmiQ.js → preview-render-compiler-Tkc6JX1O.js} +2 -2
- package/dist/client/assets/{preview-render-profile-CR4dJZrp.js → preview-render-profile-Bf6R7v4w.js} +6 -6
- package/dist/client/assets/{preview-render-worker-B4dH2yxj.js → preview-render-worker-1LBLqgKu.js} +7 -7
- package/dist/client/assets/{pt-BR-5YFKRR5G-M7gIm2Hi.js → pt-BR-5YFKRR5G-CopLYEA6.js} +1 -1
- package/dist/client/assets/{pt-PT-GEIXXZ67-CcxWpkGj.js → pt-PT-GEIXXZ67-BjZ_Lphg.js} +1 -1
- package/dist/client/assets/{pug-DkUcLYWt.js → pug-lkTEco3G.js} +1 -1
- package/dist/client/assets/{python-CZtTmYkS.js → python-BUyhM0Ew.js} +1 -1
- package/dist/client/assets/{q-I27iQntV.js → q-Dls1OX0D.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-337W2JSQ-CYKgdx7K.js → quadrantDiagram-34T5L4WZ-2vfo0l5S.js} +1 -1
- package/dist/client/assets/{quick-switcher-controller-DcyllYpm.js → quick-switcher-controller-B1erSgJ1.js} +1 -1
- package/dist/client/assets/{r-DN_EydfL.js → r-DeZ8Mdev.js} +1 -1
- package/dist/client/assets/radar-PYXPWWZC-2jR4qZNU.js +1 -0
- package/dist/client/assets/reduce-ChpYjEUB.js +1 -0
- package/dist/client/assets/requirementDiagram-MS252O5E-CtUIQnWa.js +84 -0
- package/dist/client/assets/{ro-RO-E2P6TFZI-qR9noVzP.js → ro-RO-E2P6TFZI-DakDz5Xu.js} +1 -1
- package/dist/client/assets/{room-yJaBAoEU.js → room-z2w9b96b.js} +1 -1
- package/dist/client/assets/{ru-RU-YBIIY43T-CE4S_RX8.js → ru-RU-YBIIY43T-BMvCT-XT.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-CfHe3D6R.js → sankeyDiagram-XADWPNL6-tcSeuifE.js} +1 -1
- package/dist/client/assets/sequenceDiagram-FGHM5R23-DtF-1Kt2.js +157 -0
- package/dist/client/assets/{si-LK-673C2CI2-Bv6Avh3z.js → si-LK-673C2CI2-hGdH1S9E.js} +1 -1
- package/dist/client/assets/{sk-SK-CKZHQ4AP-Cnlpp55z.js → sk-SK-CKZHQ4AP-DiRA-fj8.js} +1 -1
- package/dist/client/assets/{sl-SI-557H2GWM-BfGq7AQF.js → sl-SI-557H2GWM-DN94n_1-.js} +1 -1
- package/dist/client/assets/{sparql-BOvq0dv7.js → sparql-vm8qNO8J.js} +1 -1
- package/dist/client/assets/sql-GL7dVWcd.js +1 -0
- package/dist/client/assets/src-BuiVcSz-.js +1 -0
- package/dist/client/assets/stateDiagram-FHFEXIEX-DKk7Sb0f.js +1 -0
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-DJUaiADr.js +1 -0
- package/dist/client/assets/subset-shared.chunk-CWNYNLru.js +1 -0
- package/dist/client/assets/{subset-worker.chunk-BSCP6IiC.js → subset-worker.chunk-kj1e3wjW.js} +1 -1
- package/dist/client/assets/{sv-SE-XOPKKDWS-B2_Vk-sp.js → sv-SE-XOPKKDWS-CkHUNABj.js} +1 -1
- package/dist/client/assets/{swift-BCxe4-cw.js → swift-CKcKnWv9.js} +1 -1
- package/dist/client/assets/{ta-IN-XBH7DQI3-BXQMZZIx.js → ta-IN-XBH7DQI3-W-157oVK.js} +1 -1
- package/dist/client/assets/{th-TH-TOCWH3R4-C-ZIYMfH.js → th-TH-TOCWH3R4-BsU-Pydr.js} +1 -1
- package/dist/client/assets/timeline-definition-GMOUNBTQ-Bs6U53Mo.js +120 -0
- package/dist/client/assets/{tr-TR-GXW6CYY5-dl702PMA.js → tr-TR-GXW6CYY5-CTddyq89.js} +1 -1
- package/dist/client/assets/treeView-SZITEDCU-DN5dP2ol.js +1 -0
- package/dist/client/assets/treemap-W4RFUUIX-Dva7DBJR.js +1 -0
- package/dist/client/assets/{turtle-GBz_E4RG.js → turtle-BkP3ExOG.js} +1 -1
- package/dist/client/assets/{uk-UA-IJKTNUDG-CUYQvSSF.js → uk-UA-IJKTNUDG-1LzXkII3.js} +1 -1
- package/dist/client/assets/{uz-UZ-TBZZEA4V-B9qw0PXX.js → uz-UZ-TBZZEA4V-kqm-qcUj.js} +1 -1
- package/dist/client/assets/{vault-api-client-p7h7cXKM.js → vault-api-client-DSx3mWkH.js} +1 -1
- package/dist/client/assets/{vault-utils-5Xr0MXCb.js → vault-utils-CRpy8MQz.js} +1 -1
- package/dist/client/assets/vennDiagram-DHZGUBPP-DNnIjRae.js +34 -0
- package/dist/client/assets/{verilog-C4wTycyo.js → verilog-DSARZZPc.js} +1 -1
- package/dist/client/assets/{vhdl-Bwndeg44.js → vhdl-CnYyYTpa.js} +1 -1
- package/dist/client/assets/{vi-VN-MULSGNVB-DqxZ_sVc.js → vi-VN-MULSGNVB-C3H2AUhm.js} +1 -1
- package/dist/client/assets/wardley-RL74JXVD-CDZW5uzY.js +1 -0
- package/dist/client/assets/wardleyDiagram-NUSXRM2D-C-scJfPY.js +20 -0
- package/dist/client/assets/{xychartDiagram-JWTSCODW-C3vA70iJ.js → xychartDiagram-5P7HB3ND-D3nQoxhz.js} +6 -6
- package/dist/client/assets/yjs-provider-reset-guard-DSPzcvAO.js +4 -0
- package/dist/client/assets/{zh-CN-MVX3E32U-BM0aLuGc.js → zh-CN-MVX3E32U-BULPbsyl.js} +1 -1
- package/dist/client/assets/{zh-HK-JNU5RLIE-dmG_YD0d.js → zh-HK-JNU5RLIE-bNGmeSaW.js} +1 -1
- package/dist/client/assets/{zh-TW-LENVCA6T-LFgbiOi3.js → zh-TW-LENVCA6T-CQDp064P.js} +1 -1
- package/dist/client/drawio-editor.html +1 -1
- package/dist/client/excalidraw-editor.html +1 -1
- package/dist/client/export-document.html +1 -1
- package/dist/client/index.html +2 -2
- package/package.json +15 -15
- package/src/client/application/app-shell/presence-feature.js +265 -34
- package/src/client/application/app-shell/ui-feature-shell.js +31 -5
- package/src/client/application/app-shell/ui-feature-tab-activity.js +1 -0
- package/src/client/application/app-shell/workspace-feature.js +5 -2
- package/src/client/application/app-shell-elements.js +3 -0
- package/src/client/application/diagram-preview-export.js +304 -0
- package/src/client/application/mermaid-preview-hydrator.js +153 -23
- package/src/client/application/plantuml-preview-hydrator.js +155 -20
- package/src/client/application/preview-diagram-utils.js +48 -8
- package/src/client/application/preview-renderer.js +2 -0
- package/src/client/application/quick-switcher-loader.js +42 -0
- package/src/client/application/workspace-route-controller.js +35 -2
- package/src/client/application/workspace-state-store.js +1 -0
- package/src/client/bootstrap/collabmd-app-shell.js +25 -20
- package/src/client/domain/diagram-action-icons.js +21 -0
- package/src/client/domain/excalidraw-api-scene-sync.js +70 -0
- package/src/client/domain/keyboard-shortcuts.js +8 -0
- package/src/client/drawio-editor.js +13 -0
- package/src/client/excalidraw-editor.js +119 -18
- package/src/client/infrastructure/excalidraw-room-client.js +42 -5
- package/src/client/infrastructure/workspace-sync-client.js +26 -3
- package/src/client/presentation/app-shell-template.js +18 -1
- package/src/client/presentation/comment-ui/comment-ui-card.js +83 -3
- package/src/client/presentation/comment-ui/comment-ui-state.js +25 -2
- package/src/client/presentation/drawio-embed-controller.js +18 -0
- package/src/client/presentation/excalidraw-embed-controller.js +7 -0
- package/src/client/presentation/file-explorer-controller.js +10 -0
- package/src/client/presentation/file-explorer-view.js +6 -0
- package/src/client/presentation/git-panel-controller.js +2 -0
- package/src/client/presentation/image-lightbox-controller.js +290 -29
- package/src/client/styles/features/collaboration-presence.css +212 -0
- package/src/client/styles/features/diagram-preview.css +71 -4
- package/src/client/styles/features/embedded-preview.css +4 -6
- package/src/client/styles/features/media-lightbox.css +2 -0
- package/src/server/config/env.js +4 -0
- package/src/server/create-app-server.js +2 -0
- package/src/server/domain/backlink-index.js +33 -72
- package/src/server/domain/bases/base-index-snapshot-store.js +46 -62
- package/src/server/domain/bases/base-query-service.js +89 -7
- package/src/server/domain/collaboration/collaboration-room.js +10 -1
- package/src/server/domain/markdown-reference-extractor.js +233 -0
- package/src/server/infrastructure/http/create-request-handler.js +1 -0
- package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +100 -26
- package/src/server/infrastructure/persistence/vault-file-store.js +175 -4
- package/src/server/infrastructure/workspace/file-system-sync-service.js +45 -21
- package/dist/client/assets/_basePickBy-Dv0sK1l7.js +0 -1
- package/dist/client/assets/_baseUniq-DKYX57ji.js +0 -1
- package/dist/client/assets/arc-DrfYGhWk.js +0 -1
- package/dist/client/assets/architecture-PBZL5I3N-DiglIZi9.js +0 -1
- package/dist/client/assets/blockDiagram-WCTKOSBZ-GIgTqnhk.js +0 -132
- package/dist/client/assets/c4Diagram-IC4MRINW-CkHO1i_L.js +0 -10
- package/dist/client/assets/channel-CgsU9TSN.js +0 -1
- package/dist/client/assets/chunk-7E7YKBS2-TdU92i9i.js +0 -1
- package/dist/client/assets/chunk-7R4GIKGN-mqd2GwMg.js +0 -80
- package/dist/client/assets/chunk-C72U2L5F-CJKQWBtz.js +0 -1
- package/dist/client/assets/chunk-DpHwWhuW.js +0 -1
- package/dist/client/assets/chunk-EGIJ26TM-C4nq20om.js +0 -1
- package/dist/client/assets/chunk-GEFDOKGD-Bs7FmFox.js +0 -2
- package/dist/client/assets/chunk-GLR3WWYH-qQe2O5VQ.js +0 -2
- package/dist/client/assets/chunk-HHEYEP7N-DlevL8bq.js +0 -1
- package/dist/client/assets/chunk-KYZI473N-CTSCuqRb.js +0 -53
- package/dist/client/assets/chunk-L3YUKLVL-CJZMBtKF.js +0 -1
- package/dist/client/assets/chunk-MX3YWQON-DQpSwRf6.js +0 -1
- package/dist/client/assets/chunk-NU2UP6EN-DlUENSHU.js +0 -35
- package/dist/client/assets/chunk-O4XLMI2P-CcVxZh41.js +0 -7
- package/dist/client/assets/chunk-OZEHJAEY-DjBZbgu0.js +0 -1
- package/dist/client/assets/chunk-QZHKN3VN-CgLPFSk5.js +0 -1
- package/dist/client/assets/chunk-R5LLSJPH-CkjKXM73.js +0 -1
- package/dist/client/assets/chunk-WL4C6EOR-axcuKSup.js +0 -189
- package/dist/client/assets/chunk-XIRO2GV7-4wqVHjs_.js +0 -1
- package/dist/client/assets/chunk-XZSTWKYB-C8Y_hIKZ.js +0 -94
- package/dist/client/assets/chunk-YBOYWFTD-CKg4ymFF.js +0 -1
- package/dist/client/assets/classDiagram-VBA2DB6C-BHZpvOxK.js +0 -1
- package/dist/client/assets/classDiagram-v2-RAHNMMFH-DA7HMUUs.js +0 -1
- package/dist/client/assets/clike-1_ZsiVV8.js +0 -1
- package/dist/client/assets/clone-Dgi8Z4IL.js +0 -1
- package/dist/client/assets/cytoscape.esm-Czjc507F.js +0 -321
- package/dist/client/assets/dagre-CfB3Fw33.js +0 -1
- package/dist/client/assets/dagre-KLK3FWXG-CC7tq2Ky.js +0 -4
- package/dist/client/assets/diagram-E7M64L7V-CMt7BN5M.js +0 -24
- package/dist/client/assets/diagram-IFDJBPK2-BFMBUGpd.js +0 -43
- package/dist/client/assets/diagram-P4PSJMXO-CviA1xXr.js +0 -24
- package/dist/client/assets/dist-3bQB_we3.js +0 -1
- package/dist/client/assets/dist-8Igu3Ee_2.js +0 -1
- package/dist/client/assets/dist-BU8uusJX.js +0 -1
- package/dist/client/assets/dist-BVB8rn7o.js +0 -1
- package/dist/client/assets/dist-D5QOYy7y.js +0 -6
- package/dist/client/assets/dist-DIi0uqLJ.js +0 -1
- package/dist/client/assets/dist-DJ16N7ol.js +0 -1
- package/dist/client/assets/dist-DWJL3_bF.js +0 -13
- package/dist/client/assets/dist-O1z0Ayg0.js +0 -1
- package/dist/client/assets/dist-OQE68wIX.js +0 -1
- package/dist/client/assets/dist-x7PIEmJu.js +0 -1
- package/dist/client/assets/drawio-editor-BMTwP5mD.js +0 -9
- package/dist/client/assets/editor-session-Dzy_85Wp.js +0 -16
- package/dist/client/assets/excalidraw-editor-CAP9F8CB.js +0 -9
- package/dist/client/assets/excalidraw-editor-Dj3i59LW.css +0 -1
- package/dist/client/assets/excalidraw-scene-BF_bT1OL.js +0 -176
- package/dist/client/assets/excalidrawEditor-DD4AvzYP.js +0 -2
- package/dist/client/assets/exportDocument-Zfwq1XVx.js +0 -2
- package/dist/client/assets/flowDiagram-PKNHOUZH-C_t-mkwb.js +0 -162
- package/dist/client/assets/ganttDiagram-A5KZAMGK-BtK9Tb--.js +0 -292
- package/dist/client/assets/gitGraph-HDMCJU4V-CT7YfbD3.js +0 -1
- package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-DULDLGiJ.js +0 -65
- package/dist/client/assets/graphlib-BgRST-Qg.js +0 -1
- package/dist/client/assets/image-XLNPCCAD-CFiKwiWK.js +0 -1
- package/dist/client/assets/image-blob-reduce.esm-DriR2zT9.js +0 -2
- package/dist/client/assets/info-3K5VOQVL-DUpNyDC-.js +0 -1
- package/dist/client/assets/isArrayLikeObject-BId_dPHM.js +0 -1
- package/dist/client/assets/isEmpty-CVvRj8fj.js +0 -1
- package/dist/client/assets/ishikawaDiagram-PHBUUO56-DpBuDpC6.js +0 -70
- package/dist/client/assets/javascript-UJe68_xi.js +0 -1
- package/dist/client/assets/line-B2GMovaI.js +0 -1
- package/dist/client/assets/main-CfSHaGes.js +0 -1368
- package/dist/client/assets/math-B-LMBwub.js +0 -1
- package/dist/client/assets/mermaid-parser.core-B1ogGcR8.js +0 -4
- package/dist/client/assets/mermaid-runtime-Bn8A6DGx.js +0 -11
- package/dist/client/assets/packet-RMMSAZCW-DEwNbIrA.js +0 -1
- package/dist/client/assets/percentages-5DKR754L-D7n4T776.js +0 -1
- package/dist/client/assets/pica-C1TdTz-C.js +0 -2
- package/dist/client/assets/pie-UPGHQEXC-D5M_lSjo.js +0 -1
- package/dist/client/assets/pieDiagram-SKSYHLDU-jhHouFpk.js +0 -30
- package/dist/client/assets/preview-render-compiler-Duy_3IcP.js +0 -1
- package/dist/client/assets/radar-KQ55EAFF-AU1qh3Bw.js +0 -1
- package/dist/client/assets/requirementDiagram-Z7DCOOCP-D9SHxoW7.js +0 -73
- package/dist/client/assets/sequenceDiagram-2WXFIKYE-CZsMMqAJ.js +0 -145
- package/dist/client/assets/sql-DDFeQNTK.js +0 -1
- package/dist/client/assets/src-Pgt9Gp65.js +0 -1
- package/dist/client/assets/stateDiagram-RAJIS63D-CoNZjTYV.js +0 -1
- package/dist/client/assets/stateDiagram-v2-FVOUBMTO-1zOw6NmQ.js +0 -1
- package/dist/client/assets/subset-shared.chunk-C9HjwTXy.js +0 -1
- package/dist/client/assets/timeline-definition-YZTLITO2-DSe2mrG8.js +0 -61
- package/dist/client/assets/treemap-KZPCXAKY-C9UI2fwP.js +0 -1
- package/dist/client/assets/vennDiagram-LZ73GAT5-xSzaIpy1.js +0 -34
- package/dist/client/assets/yjs-provider-reset-guard-CtERLBID.js +0 -4
- /package/dist/client/assets/{drawio-room-DEivFyNV.js → drawio-room-1i6Nn0_Z.js} +0 -0
- /package/dist/client/assets/{excalidraw-mermaid-stub-BZPU4ZhU.js → excalidraw-mermaid-stub-DzxtBcQW.js} +0 -0
- /package/dist/client/assets/{file-kind-DBptLlF_.js → file-kind-DmKq2MvD.js} +0 -0
- /package/dist/client/assets/{rough.esm-DE_lJ5Ge.js → rough.esm-BU2knLt9.js} +0 -0
- /package/dist/client/assets/{runtime-config-CqhchMC4.js → runtime-config-DWTejofP.js} +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { clamp } from '../domain/vault-utils.js';
|
|
2
2
|
import { setDiagramActionButtonIcon } from '../domain/diagram-action-icons.js';
|
|
3
|
+
import {
|
|
4
|
+
createDiagramExportFileNames,
|
|
5
|
+
downloadBlob,
|
|
6
|
+
exportSvgMarkupFromElement,
|
|
7
|
+
rasterizeSvgMarkupToPngBlob,
|
|
8
|
+
writeBlobToClipboard,
|
|
9
|
+
} from './diagram-preview-export.js';
|
|
3
10
|
import { DiagramPreviewHydrator } from './diagram-preview-hydrator.js';
|
|
4
11
|
import {
|
|
5
12
|
createPlantUmlPlaceholderCard,
|
|
@@ -36,6 +43,8 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
36
43
|
this.svgCache = new Map();
|
|
37
44
|
this.svgInflightRequests = new Map();
|
|
38
45
|
this.shellRefits = new WeakMap();
|
|
46
|
+
this.shellResizeObservers = new WeakMap();
|
|
47
|
+
this.resizeObservers = new Set();
|
|
39
48
|
this.activeMaximizedShell = null;
|
|
40
49
|
this.maximizedRoot = null;
|
|
41
50
|
this.resizeFrameId = null;
|
|
@@ -49,10 +58,41 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
49
58
|
cancelAnimationFrame(this.resizeFrameId);
|
|
50
59
|
this.resizeFrameId = null;
|
|
51
60
|
}
|
|
61
|
+
this.disconnectResizeObservers();
|
|
52
62
|
this.maximizedRoot?.remove();
|
|
53
63
|
this.maximizedRoot = null;
|
|
54
64
|
}
|
|
55
65
|
|
|
66
|
+
disconnectResizeObservers() {
|
|
67
|
+
this.resizeObservers.forEach((observer) => observer.disconnect());
|
|
68
|
+
this.resizeObservers.clear();
|
|
69
|
+
this.shellResizeObservers = new WeakMap();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
disconnectShellResizeObserver(shell) {
|
|
73
|
+
const observer = this.shellResizeObservers.get(shell);
|
|
74
|
+
if (!observer) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
observer.disconnect();
|
|
79
|
+
this.resizeObservers.delete(observer);
|
|
80
|
+
this.shellResizeObservers.delete(shell);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
attachShellResizeObserver(shell, frame, onResize) {
|
|
84
|
+
this.disconnectShellResizeObserver(shell);
|
|
85
|
+
if (typeof ResizeObserver !== 'function' || !shell?.isConnected || !(frame instanceof HTMLElement)) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const observer = new ResizeObserver(() => onResize());
|
|
90
|
+
observer.observe(frame);
|
|
91
|
+
observer.observe(shell);
|
|
92
|
+
this.shellResizeObservers.set(shell, observer);
|
|
93
|
+
this.resizeObservers.add(observer);
|
|
94
|
+
}
|
|
95
|
+
|
|
56
96
|
clearActiveShell() {
|
|
57
97
|
this.activeMaximizedShell = null;
|
|
58
98
|
if (this.maximizedRoot && this.maximizedRoot.childElementCount === 0) {
|
|
@@ -228,6 +268,7 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
228
268
|
this.svgInflightRequests.delete(source);
|
|
229
269
|
}
|
|
230
270
|
|
|
271
|
+
this.disconnectShellResizeObserver(shell);
|
|
231
272
|
this.shellRefits.delete(shell);
|
|
232
273
|
if (this.activeMaximizedShell === shell) {
|
|
233
274
|
this.restoreShellMount(shell);
|
|
@@ -261,27 +302,38 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
261
302
|
|
|
262
303
|
const toolbar = document.createElement('div');
|
|
263
304
|
toolbar.className = 'plantuml-toolbar diagram-preview-toolbar';
|
|
305
|
+
const leftGroup = document.createElement('div');
|
|
306
|
+
leftGroup.className = 'diagram-preview-toolbar-group diagram-preview-toolbar-group--zoom';
|
|
307
|
+
const rightGroup = document.createElement('div');
|
|
308
|
+
rightGroup.className = 'diagram-preview-toolbar-group diagram-preview-toolbar-group--actions';
|
|
264
309
|
|
|
265
310
|
const frame = document.createElement('div');
|
|
266
311
|
frame.className = 'plantuml-frame diagram-preview-frame';
|
|
267
312
|
const decreaseButton = this.createToolButton('−', 'Zoom out');
|
|
268
313
|
const increaseButton = this.createToolButton('+', 'Zoom in');
|
|
269
|
-
const resetButton = this.createToolButton('
|
|
270
|
-
const
|
|
271
|
-
const
|
|
314
|
+
const resetButton = this.createToolButton('', 'Reset zoom', { icon: 'fit' });
|
|
315
|
+
const copyButton = this.createToolButton('', 'Copy image', { icon: 'copy' });
|
|
316
|
+
const downloadButton = this.createToolButton('', 'Download SVG', { icon: 'download' });
|
|
317
|
+
const reloadButton = this.createToolButton('', 'Reload diagram', { icon: 'refresh' });
|
|
318
|
+
const maximizeButton = this.createToolButton('', 'Maximize diagram', { icon: 'maximize' });
|
|
272
319
|
maximizeButton.classList.add('plantuml-maximize-btn');
|
|
273
|
-
setDiagramActionButtonIcon(reloadButton, 'refresh');
|
|
274
|
-
setDiagramActionButtonIcon(maximizeButton, 'maximize');
|
|
275
320
|
const zoomLabel = document.createElement('span');
|
|
276
321
|
zoomLabel.className = 'plantuml-zoom-label diagram-preview-zoom-label';
|
|
277
322
|
zoomLabel.setAttribute('aria-live', 'polite');
|
|
278
323
|
|
|
279
|
-
|
|
324
|
+
leftGroup.append(decreaseButton, zoomLabel, resetButton, increaseButton);
|
|
325
|
+
rightGroup.append(copyButton, downloadButton, reloadButton, maximizeButton);
|
|
326
|
+
toolbar.append(leftGroup, rightGroup);
|
|
280
327
|
|
|
281
328
|
const { width: baseWidth, height: baseHeight } = getSvgSize(svg);
|
|
282
329
|
let currentZoom = PLANTUML_ZOOM.default;
|
|
283
330
|
let defaultZoom = 1;
|
|
284
331
|
let zoomAnimationFrameId = null;
|
|
332
|
+
let resetZoomFrameId = null;
|
|
333
|
+
let layoutFrameId = null;
|
|
334
|
+
let hasManualZoom = false;
|
|
335
|
+
let lastAutoFitViewportWidth = 0;
|
|
336
|
+
let shouldForceScheduledReset = false;
|
|
285
337
|
let isPanning = false;
|
|
286
338
|
let activePointerId = null;
|
|
287
339
|
let panStartX = 0;
|
|
@@ -293,6 +345,15 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
293
345
|
svg.style.margin = '0 auto';
|
|
294
346
|
svg.style.maxWidth = 'none';
|
|
295
347
|
|
|
348
|
+
const exportSvgMarkup = () => exportSvgMarkupFromElement(svg);
|
|
349
|
+
|
|
350
|
+
const exportFileNames = () => createDiagramExportFileNames({
|
|
351
|
+
currentFilePath: this.renderer.getSourceFilePath?.() ?? '',
|
|
352
|
+
diagramKind: 'plantuml',
|
|
353
|
+
sourceLine: shell.getAttribute('data-source-line') || '',
|
|
354
|
+
targetPath: shell.dataset.plantumlTarget || '',
|
|
355
|
+
});
|
|
356
|
+
|
|
296
357
|
const calculateDefaultZoom = () => {
|
|
297
358
|
const viewport = getFrameViewportSize(frame);
|
|
298
359
|
if (!Number.isFinite(baseWidth) || baseWidth <= 0 || viewport.width <= 0) {
|
|
@@ -369,11 +430,14 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
369
430
|
};
|
|
370
431
|
|
|
371
432
|
const zoomBy = (delta) => {
|
|
433
|
+
hasManualZoom = true;
|
|
372
434
|
animateZoomTo(currentZoom + delta);
|
|
373
435
|
};
|
|
374
436
|
|
|
375
437
|
const resetZoomToFit = ({ animate = false } = {}) => {
|
|
376
438
|
defaultZoom = calculateDefaultZoom();
|
|
439
|
+
hasManualZoom = false;
|
|
440
|
+
lastAutoFitViewportWidth = getFrameViewportSize(frame).width;
|
|
377
441
|
|
|
378
442
|
if (animate && Math.abs(defaultZoom - currentZoom) > 0.001) {
|
|
379
443
|
animateZoomTo(defaultZoom);
|
|
@@ -390,28 +454,73 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
390
454
|
frame.scrollTop = 0;
|
|
391
455
|
};
|
|
392
456
|
|
|
393
|
-
|
|
394
|
-
|
|
457
|
+
const scheduleResetZoomToFit = ({ force = false } = {}) => {
|
|
458
|
+
shouldForceScheduledReset = shouldForceScheduledReset || force;
|
|
395
459
|
if (resetZoomFrameId) {
|
|
396
460
|
cancelAnimationFrame(resetZoomFrameId);
|
|
397
461
|
}
|
|
462
|
+
if (layoutFrameId) {
|
|
463
|
+
cancelAnimationFrame(layoutFrameId);
|
|
464
|
+
}
|
|
398
465
|
|
|
399
466
|
resetZoomFrameId = requestAnimationFrame(() => {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
467
|
+
layoutFrameId = requestAnimationFrame(() => {
|
|
468
|
+
layoutFrameId = requestAnimationFrame(() => {
|
|
469
|
+
layoutFrameId = null;
|
|
470
|
+
resetZoomFrameId = null;
|
|
471
|
+
if (!shell.isConnected) {
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
const shouldForce = shouldForceScheduledReset;
|
|
476
|
+
shouldForceScheduledReset = false;
|
|
477
|
+
const viewportWidth = getFrameViewportSize(frame).width;
|
|
478
|
+
const viewportChanged = Math.abs(viewportWidth - lastAutoFitViewportWidth) > 1;
|
|
479
|
+
if (!shouldForce && hasManualZoom) {
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
482
|
+
if (!shouldForce && viewportWidth > 0 && lastAutoFitViewportWidth > 0 && !viewportChanged) {
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
resetZoomToFit();
|
|
487
|
+
});
|
|
488
|
+
});
|
|
406
489
|
});
|
|
407
490
|
};
|
|
408
491
|
|
|
409
492
|
this.shellRefits.set(shell, scheduleResetZoomToFit);
|
|
493
|
+
this.attachShellResizeObserver(shell, frame, () => scheduleResetZoomToFit());
|
|
410
494
|
|
|
411
495
|
decreaseButton.addEventListener('click', () => zoomBy(-PLANTUML_ZOOM.step));
|
|
412
496
|
increaseButton.addEventListener('click', () => zoomBy(PLANTUML_ZOOM.step));
|
|
413
497
|
resetButton.addEventListener('click', () => {
|
|
414
|
-
|
|
498
|
+
scheduleResetZoomToFit({ force: true });
|
|
499
|
+
});
|
|
500
|
+
copyButton.addEventListener('click', async () => {
|
|
501
|
+
try {
|
|
502
|
+
const { pngFileName } = exportFileNames();
|
|
503
|
+
const pngBlob = await rasterizeSvgMarkupToPngBlob(exportSvgMarkup());
|
|
504
|
+
try {
|
|
505
|
+
await writeBlobToClipboard(pngBlob);
|
|
506
|
+
this.renderer.toastController?.show?.('Diagram copied');
|
|
507
|
+
} catch {
|
|
508
|
+
downloadBlob(pngBlob, pngFileName);
|
|
509
|
+
this.renderer.toastController?.show?.('Clipboard image copy is unavailable here. Downloaded PNG instead.');
|
|
510
|
+
}
|
|
511
|
+
} catch {
|
|
512
|
+
this.renderer.toastController?.show?.('Failed to copy diagram');
|
|
513
|
+
}
|
|
514
|
+
});
|
|
515
|
+
downloadButton.addEventListener('click', () => {
|
|
516
|
+
try {
|
|
517
|
+
const { svgFileName } = exportFileNames();
|
|
518
|
+
const svgBlob = new Blob([exportSvgMarkup()], { type: 'image/svg+xml;charset=utf-8' });
|
|
519
|
+
downloadBlob(svgBlob, svgFileName);
|
|
520
|
+
this.renderer.toastController?.show?.('Diagram download started');
|
|
521
|
+
} catch {
|
|
522
|
+
this.renderer.toastController?.show?.('Failed to download diagram');
|
|
523
|
+
}
|
|
415
524
|
});
|
|
416
525
|
|
|
417
526
|
const syncMaximizeButtonState = () => {
|
|
@@ -445,7 +554,7 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
445
554
|
this.activeMaximizedShell = shell;
|
|
446
555
|
document.body.classList.add('plantuml-maximized-open');
|
|
447
556
|
syncMaximizeButtonState();
|
|
448
|
-
scheduleResetZoomToFit();
|
|
557
|
+
scheduleResetZoomToFit({ force: true });
|
|
449
558
|
return;
|
|
450
559
|
}
|
|
451
560
|
|
|
@@ -458,7 +567,7 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
458
567
|
document.body.classList.remove('plantuml-maximized-open');
|
|
459
568
|
}
|
|
460
569
|
syncMaximizeButtonState();
|
|
461
|
-
scheduleResetZoomToFit();
|
|
570
|
+
scheduleResetZoomToFit({ force: true });
|
|
462
571
|
};
|
|
463
572
|
|
|
464
573
|
reloadButton.addEventListener('click', () => {
|
|
@@ -481,6 +590,12 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
481
590
|
|
|
482
591
|
isPanning = false;
|
|
483
592
|
frame.classList.remove('is-dragging');
|
|
593
|
+
window.removeEventListener('pointerup', stopPanning, true);
|
|
594
|
+
window.removeEventListener('pointercancel', stopPanning, true);
|
|
595
|
+
window.removeEventListener('mouseup', stopPanning, true);
|
|
596
|
+
window.removeEventListener('touchend', stopPanning, true);
|
|
597
|
+
window.removeEventListener('touchcancel', stopPanning, true);
|
|
598
|
+
window.removeEventListener('blur', stopPanning, true);
|
|
484
599
|
|
|
485
600
|
if (activePointerId !== null && typeof frame.releasePointerCapture === 'function') {
|
|
486
601
|
try {
|
|
@@ -511,7 +626,19 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
511
626
|
panStartScrollTop = frame.scrollTop;
|
|
512
627
|
|
|
513
628
|
frame.classList.add('is-dragging');
|
|
514
|
-
|
|
629
|
+
window.addEventListener('pointerup', stopPanning, true);
|
|
630
|
+
window.addEventListener('pointercancel', stopPanning, true);
|
|
631
|
+
window.addEventListener('mouseup', stopPanning, true);
|
|
632
|
+
window.addEventListener('touchend', stopPanning, true);
|
|
633
|
+
window.addEventListener('touchcancel', stopPanning, true);
|
|
634
|
+
window.addEventListener('blur', stopPanning, true);
|
|
635
|
+
if (typeof frame.setPointerCapture === 'function') {
|
|
636
|
+
try {
|
|
637
|
+
frame.setPointerCapture(event.pointerId);
|
|
638
|
+
} catch {
|
|
639
|
+
// Safari can reject pointer capture during rapid layout transitions.
|
|
640
|
+
}
|
|
641
|
+
}
|
|
515
642
|
event.preventDefault();
|
|
516
643
|
});
|
|
517
644
|
|
|
@@ -527,6 +654,10 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
527
654
|
frame.addEventListener('pointerup', stopPanning);
|
|
528
655
|
frame.addEventListener('pointercancel', stopPanning);
|
|
529
656
|
frame.addEventListener('lostpointercapture', stopPanning);
|
|
657
|
+
frame.addEventListener('mouseleave', stopPanning);
|
|
658
|
+
frame.addEventListener('mouseup', stopPanning);
|
|
659
|
+
frame.addEventListener('touchend', stopPanning);
|
|
660
|
+
frame.addEventListener('touchcancel', stopPanning);
|
|
530
661
|
|
|
531
662
|
frame.appendChild(svg);
|
|
532
663
|
const sourceNode = shell.querySelector('.plantuml-source');
|
|
@@ -541,13 +672,17 @@ export class PlantUmlPreviewHydrator extends DiagramPreviewHydrator {
|
|
|
541
672
|
applyZoom(defaultZoom);
|
|
542
673
|
}
|
|
543
674
|
|
|
544
|
-
createToolButton(label, ariaLabel) {
|
|
675
|
+
createToolButton(label, ariaLabel, { icon = '' } = {}) {
|
|
545
676
|
const button = document.createElement('button');
|
|
546
677
|
button.type = 'button';
|
|
547
678
|
button.className = 'plantuml-tool-btn ui-preview-action';
|
|
548
679
|
button.setAttribute('aria-label', ariaLabel);
|
|
549
680
|
button.title = ariaLabel;
|
|
550
|
-
|
|
681
|
+
if (icon) {
|
|
682
|
+
setDiagramActionButtonIcon(button, icon);
|
|
683
|
+
} else {
|
|
684
|
+
button.textContent = label;
|
|
685
|
+
}
|
|
551
686
|
return button;
|
|
552
687
|
}
|
|
553
688
|
}
|
|
@@ -165,20 +165,30 @@ export function createPlantUmlPlaceholderCard(key, message = 'Renders server-sid
|
|
|
165
165
|
return card;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const
|
|
168
|
+
const SHOW_COMMENT_NODE = 128;
|
|
169
|
+
|
|
170
|
+
function removeSvgComments(rootElement) {
|
|
171
|
+
const walker = rootElement.ownerDocument.createTreeWalker(rootElement, SHOW_COMMENT_NODE);
|
|
172
|
+
const comments = [];
|
|
173
|
+
|
|
174
|
+
while (walker.nextNode()) {
|
|
175
|
+
comments.push(walker.currentNode);
|
|
176
|
+
}
|
|
172
177
|
|
|
173
|
-
|
|
178
|
+
comments.forEach((comment) => comment.remove());
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export function sanitizeSvgElement(svgElement) {
|
|
182
|
+
if (!(svgElement instanceof SVGSVGElement)) {
|
|
174
183
|
throw new Error('Renderer returned invalid SVG');
|
|
175
184
|
}
|
|
176
185
|
|
|
177
|
-
|
|
186
|
+
removeSvgComments(svgElement);
|
|
187
|
+
svgElement.querySelectorAll('script, foreignObject').forEach((node) => {
|
|
178
188
|
node.remove();
|
|
179
189
|
});
|
|
180
190
|
|
|
181
|
-
Array.from(
|
|
191
|
+
[svgElement, ...Array.from(svgElement.querySelectorAll('*'))].forEach((element) => {
|
|
182
192
|
Array.from(element.attributes).forEach((attribute) => {
|
|
183
193
|
const name = attribute.name.toLowerCase();
|
|
184
194
|
const value = attribute.value || '';
|
|
@@ -193,7 +203,37 @@ export function sanitizeSvgMarkup(svgMarkup) {
|
|
|
193
203
|
});
|
|
194
204
|
});
|
|
195
205
|
|
|
196
|
-
return
|
|
206
|
+
return svgElement;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export function serializeSvgElement(svgElement) {
|
|
210
|
+
const sanitizedSvg = sanitizeSvgElement(svgElement);
|
|
211
|
+
return new XMLSerializer().serializeToString(sanitizedSvg);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function parseSvgMarkup(svgMarkup) {
|
|
215
|
+
const normalizedMarkup = String(svgMarkup ?? '')
|
|
216
|
+
.replace(/<!--[\s\S]*?-->/gu, '')
|
|
217
|
+
.replace(/ /giu, ' ');
|
|
218
|
+
|
|
219
|
+
const parser = new DOMParser();
|
|
220
|
+
const documentNode = parser.parseFromString(normalizedMarkup, 'image/svg+xml');
|
|
221
|
+
const svg = documentNode.documentElement;
|
|
222
|
+
if (svg?.nodeName.toLowerCase() === 'svg' && !documentNode.querySelector('parsererror')) {
|
|
223
|
+
return svg;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const fallbackDocument = parser.parseFromString(normalizedMarkup, 'text/html');
|
|
227
|
+
return fallbackDocument.querySelector('svg');
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export function sanitizeSvgMarkup(svgMarkup) {
|
|
231
|
+
const svg = parseSvgMarkup(svgMarkup);
|
|
232
|
+
if (!(svg instanceof SVGSVGElement)) {
|
|
233
|
+
throw new Error('Renderer returned invalid SVG');
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return serializeSvgElement(svg);
|
|
197
237
|
}
|
|
198
238
|
|
|
199
239
|
export function shouldPreserveHydratedDiagram({ nextSource = '', nextTarget = '', preservedSource = '', preservedTarget = '' } = {}) {
|
|
@@ -20,6 +20,7 @@ export class PreviewRenderer {
|
|
|
20
20
|
plantUmlRenderClient = null,
|
|
21
21
|
previewContainer,
|
|
22
22
|
previewElement,
|
|
23
|
+
toastController = null,
|
|
23
24
|
}) {
|
|
24
25
|
this.getContent = getContent;
|
|
25
26
|
this.getFileList = getFileList;
|
|
@@ -33,6 +34,7 @@ export class PreviewRenderer {
|
|
|
33
34
|
this.plantUmlRenderClient = plantUmlRenderClient;
|
|
34
35
|
this.previewContainer = previewContainer;
|
|
35
36
|
this.previewElement = previewElement;
|
|
37
|
+
this.toastController = toastController;
|
|
36
38
|
this.renderHost = null;
|
|
37
39
|
|
|
38
40
|
this.pendingRenderVersion = 0;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export async function ensureQuickSwitcherInstance(host) {
|
|
2
|
+
if (host.quickSwitcher) {
|
|
3
|
+
return host.quickSwitcher;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
if (!host.quickSwitcherModulePromise) {
|
|
7
|
+
host.quickSwitcherModulePromise = host.loadQuickSwitcherController();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let QuickSwitcherController;
|
|
11
|
+
try {
|
|
12
|
+
QuickSwitcherController = await host.quickSwitcherModulePromise;
|
|
13
|
+
} catch (error) {
|
|
14
|
+
host.quickSwitcherModulePromise = null;
|
|
15
|
+
console.error('[quick-switcher] Failed to load file search.', error);
|
|
16
|
+
host.toastController?.show?.('Failed to load file search. Try again.', {
|
|
17
|
+
dismissible: true,
|
|
18
|
+
});
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (!host.quickSwitcher) {
|
|
23
|
+
host.quickSwitcher = new QuickSwitcherController({
|
|
24
|
+
getFileList: () => host.fileExplorer.flatFiles,
|
|
25
|
+
onFileSelect: (filePath) => host.handleFileSelection(filePath, {
|
|
26
|
+
closeSidebarOnMobile: true,
|
|
27
|
+
revealInTree: true,
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return host.quickSwitcher;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export async function toggleQuickSwitcherInstance(host) {
|
|
36
|
+
try {
|
|
37
|
+
const quickSwitcher = await ensureQuickSwitcherInstance(host);
|
|
38
|
+
quickSwitcher.toggle();
|
|
39
|
+
} catch {
|
|
40
|
+
// ensureQuickSwitcherInstance reports the load failure and resets the cached import.
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -24,6 +24,7 @@ export class WorkspaceRouteController {
|
|
|
24
24
|
setSession,
|
|
25
25
|
setSessionLoadToken,
|
|
26
26
|
setSidebarTab,
|
|
27
|
+
setSidebarVisibility,
|
|
27
28
|
setCurrentFilePath,
|
|
28
29
|
showGitCommit,
|
|
29
30
|
showGitDiff,
|
|
@@ -59,6 +60,7 @@ export class WorkspaceRouteController {
|
|
|
59
60
|
this.setSession = setSession;
|
|
60
61
|
this.setSessionLoadToken = setSessionLoadToken;
|
|
61
62
|
this.setSidebarTab = setSidebarTab;
|
|
63
|
+
this.setSidebarVisibility = setSidebarVisibility ?? (() => {});
|
|
62
64
|
this.setCurrentFilePath = setCurrentFilePath;
|
|
63
65
|
this.showGitCommit = showGitCommit;
|
|
64
66
|
this.showGitDiff = showGitDiff;
|
|
@@ -69,6 +71,7 @@ export class WorkspaceRouteController {
|
|
|
69
71
|
this.videoEmbed = videoEmbed;
|
|
70
72
|
this.workspaceCoordinator = workspaceCoordinator;
|
|
71
73
|
this.layoutController = layoutController;
|
|
74
|
+
this.pendingTreeRevealPath = null;
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
async handleHashChange() {
|
|
@@ -246,6 +249,11 @@ export class WorkspaceRouteController {
|
|
|
246
249
|
}
|
|
247
250
|
|
|
248
251
|
async openFile(filePath, options = {}) {
|
|
252
|
+
const shouldRevealInTree = this.pendingTreeRevealPath === filePath;
|
|
253
|
+
if (shouldRevealInTree) {
|
|
254
|
+
this.pendingTreeRevealPath = null;
|
|
255
|
+
}
|
|
256
|
+
|
|
249
257
|
this.imageLightbox?.close?.();
|
|
250
258
|
this.gitPanel.setSelection();
|
|
251
259
|
this.gitDiffView.hide();
|
|
@@ -254,6 +262,10 @@ export class WorkspaceRouteController {
|
|
|
254
262
|
this.syncMainChrome({ mode: 'editor' });
|
|
255
263
|
await this.workspaceCoordinator.openFile(filePath, options);
|
|
256
264
|
this.setSession(this.workspaceCoordinator.getSession());
|
|
265
|
+
|
|
266
|
+
if (shouldRevealInTree) {
|
|
267
|
+
this.revealFileInTree(filePath, { clearSearch: true });
|
|
268
|
+
}
|
|
257
269
|
}
|
|
258
270
|
|
|
259
271
|
cleanupSession() {
|
|
@@ -261,14 +273,35 @@ export class WorkspaceRouteController {
|
|
|
261
273
|
this.setSession(this.workspaceCoordinator.getSession());
|
|
262
274
|
}
|
|
263
275
|
|
|
264
|
-
handleFileSelection(filePath, { closeSidebarOnMobile = false } = {}) {
|
|
265
|
-
|
|
276
|
+
handleFileSelection(filePath, { closeSidebarOnMobile = false, revealInTree = false } = {}) {
|
|
277
|
+
const currentRoute = this.navigation.getHashRoute?.() ?? null;
|
|
278
|
+
const isCanonicalCurrentFileRoute = (
|
|
279
|
+
currentRoute?.type === 'file'
|
|
280
|
+
&& currentRoute.filePath === filePath
|
|
281
|
+
&& !currentRoute.drawioMode
|
|
282
|
+
);
|
|
283
|
+
if (revealInTree) {
|
|
284
|
+
this.pendingTreeRevealPath = filePath;
|
|
285
|
+
if (isCanonicalCurrentFileRoute) {
|
|
286
|
+
this.pendingTreeRevealPath = null;
|
|
287
|
+
this.revealFileInTree(filePath, { clearSearch: true });
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (closeSidebarOnMobile && !revealInTree) {
|
|
266
293
|
this.closeSidebarOnMobile();
|
|
267
294
|
}
|
|
268
295
|
|
|
269
296
|
this.navigation.navigateToFile(filePath);
|
|
270
297
|
}
|
|
271
298
|
|
|
299
|
+
revealFileInTree(filePath, { clearSearch = false } = {}) {
|
|
300
|
+
this.setSidebarTab('files');
|
|
301
|
+
this.setSidebarVisibility(true);
|
|
302
|
+
this.fileExplorer.revealFile?.(filePath, { clearSearch });
|
|
303
|
+
}
|
|
304
|
+
|
|
272
305
|
resetPreviewSurface() {
|
|
273
306
|
this.imageLightbox?.close?.();
|
|
274
307
|
this.previewRenderer.setHydrationPaused(false);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PreviewRenderer } from '../application/preview-renderer.js';
|
|
2
|
+
import { ensureQuickSwitcherInstance, toggleQuickSwitcherInstance } from '../application/quick-switcher-loader.js';
|
|
2
3
|
import { WorkspaceRouteController } from '../application/workspace-route-controller.js';
|
|
3
4
|
import { WikiLinkFileController } from '../application/wiki-link-file-controller.js';
|
|
4
5
|
import { WorkspacePreviewController } from '../application/workspace-preview-controller.js';
|
|
@@ -99,9 +100,14 @@ export class CollabMdAppShell {
|
|
|
99
100
|
handleGitCommitSubmit(...args) { return gitFeature.handleGitCommitSubmit.apply(this, args); }
|
|
100
101
|
updateGlobalUsers(...args) { return presenceFeature.updateGlobalUsers.apply(this, args); }
|
|
101
102
|
updateFileAwareness(...args) { return presenceFeature.updateFileAwareness.apply(this, args); }
|
|
103
|
+
closePresencePanel(...args) { return presenceFeature.closePresencePanel.apply(this, args); }
|
|
104
|
+
openPresencePanel(...args) { return presenceFeature.openPresencePanel.apply(this, args); }
|
|
102
105
|
renderPresence(...args) { return presenceFeature.renderPresence.apply(this, args); }
|
|
103
106
|
renderAvatars(...args) { return presenceFeature.renderAvatars.apply(this, args); }
|
|
107
|
+
renderPresencePanel(...args) { return presenceFeature.renderPresencePanel.apply(this, args); }
|
|
108
|
+
startFollowingUser(...args) { return presenceFeature.startFollowingUser.apply(this, args); }
|
|
104
109
|
toggleFollowUser(...args) { return presenceFeature.toggleFollowUser.apply(this, args); }
|
|
110
|
+
togglePresencePanel(...args) { return presenceFeature.togglePresencePanel.apply(this, args); }
|
|
105
111
|
stopFollowingUser(...args) { return presenceFeature.stopFollowingUser.apply(this, args); }
|
|
106
112
|
syncFollowedUser(...args) { return presenceFeature.syncFollowedUser.apply(this, args); }
|
|
107
113
|
followUserCursor(...args) { return presenceFeature.followUserCursor.apply(this, args); }
|
|
@@ -112,6 +118,8 @@ export class CollabMdAppShell {
|
|
|
112
118
|
closeToolbarOverflowMenu(...args) { return uiFeature.closeToolbarOverflowMenu.apply(this, args); }
|
|
113
119
|
getStoredLineWrapping(...args) { return uiFeature.getStoredLineWrapping.apply(this, args); }
|
|
114
120
|
handleConnectionChange(...args) { return uiFeature.handleConnectionChange.apply(this, args); }
|
|
121
|
+
handleDocumentKeydown(...args) { return uiFeature.handleDocumentKeydown.apply(this, args); }
|
|
122
|
+
handleDocumentPointerDown(...args) { return uiFeature.handleDocumentPointerDown.apply(this, args); }
|
|
115
123
|
handlePreviewContentClick(...args) { return uiFeature.handlePreviewContentClick.apply(this, args); }
|
|
116
124
|
handleThemeChange(...args) { return uiFeature.handleThemeChange.apply(this, args); }
|
|
117
125
|
hideEditorLoading(...args) { return uiFeature.hideEditorLoading.apply(this, args); }
|
|
@@ -365,6 +373,7 @@ export class CollabMdAppShell {
|
|
|
365
373
|
plantUmlRenderClient: this.plantUmlApiClient,
|
|
366
374
|
previewContainer: this.elements.previewContainer,
|
|
367
375
|
previewElement: this.elements.previewContent,
|
|
376
|
+
toastController: this.toastController,
|
|
368
377
|
});
|
|
369
378
|
this.themeController = new ThemeController({ onChange: (theme) => this.handleThemeChange(theme) });
|
|
370
379
|
this.layoutController = new LayoutController({
|
|
@@ -390,6 +399,9 @@ export class CollabMdAppShell {
|
|
|
390
399
|
getLocalUser: () => this.lobby.getLocalUser(),
|
|
391
400
|
getTheme: () => this.themeController.getTheme(),
|
|
392
401
|
onOpenFile: (filePath) => filePath && this.navigation.navigateToFile(filePath),
|
|
402
|
+
onToggleQuickSwitcher: () => {
|
|
403
|
+
void this.toggleQuickSwitcher();
|
|
404
|
+
},
|
|
393
405
|
previewContainer: this.elements.previewContainer,
|
|
394
406
|
previewElement: this.elements.previewContent,
|
|
395
407
|
toastController: this.toastController,
|
|
@@ -399,6 +411,9 @@ export class CollabMdAppShell {
|
|
|
399
411
|
getTheme: () => this.themeController.getTheme(),
|
|
400
412
|
onOpenFile: (filePath) => filePath && this.navigation.navigateToFile(filePath),
|
|
401
413
|
onOpenTextFile: (filePath) => filePath && this.navigation.navigateToFile(filePath, { drawioMode: 'text' }),
|
|
414
|
+
onToggleQuickSwitcher: () => {
|
|
415
|
+
void this.toggleQuickSwitcher();
|
|
416
|
+
},
|
|
402
417
|
previewContainer: this.elements.previewContainer,
|
|
403
418
|
previewElement: this.elements.previewContent,
|
|
404
419
|
toastController: this.toastController,
|
|
@@ -640,6 +655,7 @@ export class CollabMdAppShell {
|
|
|
640
655
|
this.sessionLoadToken = value;
|
|
641
656
|
},
|
|
642
657
|
setSidebarTab: (value) => this.setSidebarTab(value),
|
|
658
|
+
setSidebarVisibility: (showSidebar) => this.setSidebarVisibility(showSidebar),
|
|
643
659
|
showGitCommit: (route) => this.showGitCommit(route),
|
|
644
660
|
showGitDiff: (route) => this.showGitDiff(route),
|
|
645
661
|
showGitFileHistory: (route) => this.showGitFileHistory(route),
|
|
@@ -687,6 +703,8 @@ export class CollabMdAppShell {
|
|
|
687
703
|
set gitRepoAvailable(value) { this.stateStore.set('gitRepoAvailable', value); }
|
|
688
704
|
get activeSidebarTab() { return this.stateStore.get('activeSidebarTab'); }
|
|
689
705
|
set activeSidebarTab(value) { this.stateStore.set('activeSidebarTab', value); }
|
|
706
|
+
get presencePanelOpen() { return this.stateStore.get('presencePanelOpen'); }
|
|
707
|
+
set presencePanelOpen(value) { this.stateStore.set('presencePanelOpen', value); }
|
|
690
708
|
get followedUserClientId() { return this.stateStore.get('followedUserClientId'); }
|
|
691
709
|
set followedUserClientId(value) { this.stateStore.set('followedUserClientId', value); }
|
|
692
710
|
get followedCursorSignature() { return this.stateStore.get('followedCursorSignature'); }
|
|
@@ -771,29 +789,16 @@ export class CollabMdAppShell {
|
|
|
771
789
|
this._editorSessionPrewarmHandle = window.setTimeout(runPrewarm, 0);
|
|
772
790
|
}
|
|
773
791
|
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
if (!this.quickSwitcherModulePromise) {
|
|
780
|
-
this.quickSwitcherModulePromise = import('../presentation/quick-switcher-controller.js')
|
|
781
|
-
.then((module) => module.QuickSwitcherController);
|
|
782
|
-
}
|
|
783
|
-
|
|
784
|
-
const QuickSwitcherController = await this.quickSwitcherModulePromise;
|
|
785
|
-
if (!this.quickSwitcher) {
|
|
786
|
-
this.quickSwitcher = new QuickSwitcherController({
|
|
787
|
-
getFileList: () => this.fileExplorer.flatFiles,
|
|
788
|
-
onFileSelect: (filePath) => this.handleFileSelection(filePath, { closeSidebarOnMobile: true }),
|
|
789
|
-
});
|
|
790
|
-
}
|
|
792
|
+
loadQuickSwitcherController() {
|
|
793
|
+
return import('../presentation/quick-switcher-controller.js')
|
|
794
|
+
.then((module) => module.QuickSwitcherController);
|
|
795
|
+
}
|
|
791
796
|
|
|
792
|
-
|
|
797
|
+
async ensureQuickSwitcher() {
|
|
798
|
+
return ensureQuickSwitcherInstance(this);
|
|
793
799
|
}
|
|
794
800
|
|
|
795
801
|
async toggleQuickSwitcher() {
|
|
796
|
-
|
|
797
|
-
quickSwitcher.toggle();
|
|
802
|
+
return toggleQuickSwitcherInstance(this);
|
|
798
803
|
}
|
|
799
804
|
}
|