collabmd 0.1.38 → 0.1.40
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 +7 -1
- package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-DnBV8gCm.js → CodeMirrorEditor-UCMRAMCV-CjJV4GGp.js} +1 -1
- package/dist/client/assets/{ar-SA-NXDWD63E-CTf_wpt3.js → ar-SA-NXDWD63E-BfWwfLiP.js} +1 -1
- package/dist/client/assets/{arc-DD8jaAGl.js → arc-B59iLcOr.js} +1 -1
- package/dist/client/assets/architecture-7EHR7CIX-M1SFnuBJ.js +1 -0
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-BftXiJA8.js → architectureDiagram-3BPJPVTR-Cs4u0ty-.js} +3 -3
- package/dist/client/assets/{az-AZ-MXSORGZV-C_C9i9u3.js → az-AZ-MXSORGZV-D3w9H6nC.js} +1 -1
- package/dist/client/assets/{bg-BG-O6MV2KSF-YmfvQf63.js → bg-BG-O6MV2KSF-CqITeIE6.js} +1 -1
- package/dist/client/assets/blockDiagram-GPEHLZMM-C4RLg7wo.js +132 -0
- package/dist/client/assets/{bn-IN-MMW2ORAC-BTEFR4Ed.js → bn-BD-T2VJNT7N-DRxwOMG_.js} +1 -1
- package/dist/client/assets/{bn-BD-T2VJNT7N-BD0ob0JE.js → bn-IN-MMW2ORAC-BZcsVFhS.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-Gz7ZAK0d.js → c4Diagram-AAUBKEIU-DMK9WIWS.js} +2 -2
- package/dist/client/assets/{ca-ES-MKBCGNOG-aLX_cjA0.js → ca-ES-MKBCGNOG-D2cujUJ7.js} +1 -1
- package/dist/client/assets/channel-E9SBQ9z6.js +1 -0
- package/dist/client/assets/{chunk-EDXVE4YY-M4QxyGNt.js → chunk-2J33WTMH-Beqll06X.js} +1 -1
- package/dist/client/assets/chunk-3OPIFGDE-Kf30X6bZ.js +62 -0
- package/dist/client/assets/{chunk-4BX2VUAB-D5YiFdu1.js → chunk-4BX2VUAB-BVNkn9EH.js} +1 -1
- package/dist/client/assets/chunk-4EGX6M5U-6L36_8q8.js +1 -0
- package/dist/client/assets/{chunk-55IACEB6-VHgZjidg.js → chunk-55IACEB6-CaPPZbdp.js} +1 -1
- package/dist/client/assets/chunk-5DO6E6H7-BpgUf0HE.js +1 -0
- package/dist/client/assets/chunk-5ZQYHXKU-BJyABJSy.js +2 -0
- package/dist/client/assets/chunk-727SXJPM-DNANnyAn.js +206 -0
- package/dist/client/assets/chunk-AQP2D5EJ-D-ou9vaq.js +231 -0
- package/dist/client/assets/{chunk-LIHQZDEY-DtYrHuCi.js → chunk-BR22UD5L-CHoFxkAQ.js} +1 -1
- package/dist/client/assets/{chunk-BSJP7CBP-D2KkrA_B.js → chunk-BSJP7CBP-AmT6zI00.js} +1 -1
- package/dist/client/assets/chunk-CSCIHK7Q-BIoF4mTy.js +123 -0
- package/dist/client/assets/chunk-FHYWG6QK-qLbgayZT.js +1 -0
- package/dist/client/assets/{chunk-FMBD7UC4-qQT7MtX2.js → chunk-FMBD7UC4-DD6CIukb.js} +1 -1
- package/dist/client/assets/chunk-KSCS5N6A-DSHzBB4H.js +10 -0
- package/dist/client/assets/{chunk-ZZ45TVLE-DGIhE_ST.js → chunk-L5ZTLDWV-Ca0loQr2.js} +1 -1
- package/dist/client/assets/chunk-LZXEDZCA-D4QboL2E.js +2 -0
- package/dist/client/assets/chunk-MPE355IW-BGGMthoR.js +1 -0
- package/dist/client/assets/chunk-MZUSXYTE-CXyCvcyW.js +1 -0
- package/dist/client/assets/chunk-N66VUXT2-CZ58QOjk.js +1 -0
- package/dist/client/assets/{chunk-YZCP3GAM-D1jf1WUI.js → chunk-ND2GUHAM-3Xs0Awks.js} +1 -1
- package/dist/client/assets/chunk-NNHCCRGN--8l6bbR-.js +159 -0
- package/dist/client/assets/{chunk-X2U36JSP-D3OEPG7k.js → chunk-NZK2D7GU-w2jXiKa6.js} +1 -1
- package/dist/client/assets/{chunk-U2HBQHQK-BBXgsocS.js → chunk-O5CBEL6O-BFgstMja.js} +4 -4
- package/dist/client/assets/chunk-PUPMXCY4-JvkUXyIj.js +1 -0
- package/dist/client/assets/chunk-QZHKN3VN-9NMPSwDX.js +1 -0
- package/dist/client/assets/{chunk-SRAX5OIU-yDw8XRsi.js → chunk-SRAX5OIU-C_UPA-vt.js} +1 -1
- package/dist/client/assets/chunk-UIBZB4QT-B4OybPy_.js +1 -0
- package/dist/client/assets/chunk-WCWK7LTN-BOL8a2ua.js +1 -0
- package/dist/client/assets/chunk-WMDFGAFD-EzVSth95.js +35 -0
- package/dist/client/assets/chunk-WU5MYG2G-Bl8VQmZH.js +1 -0
- package/dist/client/assets/{chunk-XPW4576I-BUfyrOtN.js → chunk-XPW4576I-D5FnFhOk.js} +1 -1
- package/dist/client/assets/{chunk-Z5NKEFVG-Vu8zBV4H.js → chunk-Z5NKEFVG-GcpeeLo6.js} +1 -1
- package/dist/client/assets/chunk-tBc3Ke6Z.js +1 -0
- package/dist/client/assets/classDiagram-4FO5ZUOK-D7YhYDLZ.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-COI4atGv.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-A8ssRFyt.js → cose-bilkent-S5V4N54A-Cx3Qt7pR.js} +1 -1
- package/dist/client/assets/{cs-CZ-V77HGUP7-Du3y53BB.js → cs-CZ-V77HGUP7-BXqhmWZb.js} +1 -1
- package/dist/client/assets/{da-DK-I5RFNTM4-CDJtjf5s.js → da-DK-I5RFNTM4-raD_lQnT.js} +1 -1
- package/dist/client/assets/dagre-BM42HDAG-BpURvxT4.js +4 -0
- package/dist/client/assets/dagre-BcZLxzJJ.js +1 -0
- package/dist/client/assets/{de-CH-WLRDEVBV-CLV2tVw6.js → de-CH-WLRDEVBV-CyNG_YAO.js} +1 -1
- package/dist/client/assets/{de-DE-DTI4WUSC-B53J0BQ8.js → de-DE-DTI4WUSC-BAnqlByT.js} +1 -1
- package/dist/client/assets/diagram-2AECGRRQ-DJH0JVlq.js +43 -0
- package/dist/client/assets/{diagram-5BDNPKRD-BuK-UBuN.js → diagram-5GNKFQAL-DQG4Q1eS.js} +2 -2
- package/dist/client/assets/diagram-KO2AKTUF-hx21Lv-5.js +3 -0
- package/dist/client/assets/{diagram-TYMM5635-CT8BdT4s.js → diagram-LMA3HP47--QODJMa9.js} +1 -1
- package/dist/client/assets/diagram-OG6HWLK6-CB30hX1a.js +24 -0
- package/dist/client/assets/{dist-DwvSvkOE.js → dist-6oqNX0NJ.js} +1 -1
- package/dist/client/assets/dist-B0U2pnHE.js +1 -0
- package/dist/client/assets/{dist-aE0_04fl.js → dist-B1BRR2vO.js} +1 -1
- package/dist/client/assets/{dist-CQVTTk81.js → dist-B48_21rM.js} +1 -1
- package/dist/client/assets/{dist-DdAqzGFU.js → dist-BBsYBvEp.js} +1 -1
- package/dist/client/assets/{dist-BiCgLddE.js → dist-BNDWUlMx.js} +1 -1
- package/dist/client/assets/{dist-BOP-dC-R.js → dist-BOA6xeuH.js} +1 -1
- package/dist/client/assets/{dist-wkd-N1L5.js → dist-BQuic6-d.js} +1 -1
- package/dist/client/assets/{dist-D34Xzrah.js → dist-Bhn_Fiol.js} +1 -1
- package/dist/client/assets/dist-BoCYrsTA.js +1 -0
- package/dist/client/assets/{dist-DPCUH5MO.js → dist-BsTc7qjG.js} +1 -1
- package/dist/client/assets/dist-C-W89K9S.js +1 -0
- package/dist/client/assets/dist-CAlqrzaF.js +1 -0
- package/dist/client/assets/dist-CBTadfRi2.js +1 -0
- package/dist/client/assets/{dist-Dbg8P4C5.js → dist-CDsAhnoa.js} +1 -1
- package/dist/client/assets/{dist-BScEL4VP.js → dist-CJMPm6rd.js} +1 -1
- package/dist/client/assets/{dist-mPPUaHhq.js → dist-CtHMYO6t.js} +1 -1
- package/dist/client/assets/dist-D4DGyOvV.js +1 -0
- package/dist/client/assets/{dist-DZ2t5lUX.js → dist-D5BVeoD4.js} +1 -1
- package/dist/client/assets/{dist-Brrlevif.js → dist-D5hPoFa5.js} +1 -1
- package/dist/client/assets/{dist-Bn8WRPs1.js → dist-DCqHC6ts.js} +1 -1
- package/dist/client/assets/{dist-CJWCCWEW.js → dist-DFzJ8okV.js} +1 -1
- package/dist/client/assets/{dist-v3i1ifes.js → dist-DSehUDUA.js} +1 -1
- package/dist/client/assets/{dist-B98fHn5m.js → dist-Dv_PLWtE.js} +1 -1
- package/dist/client/assets/{dist-BEKQo64E.js → dist-Dx8yU-RA.js} +1 -1
- package/dist/client/assets/{dist-CBEw2W2P.js → dist-U35xPXYU.js} +1 -1
- package/dist/client/assets/{dist-CaMl1R6P.js → dist-UnjH15yg.js} +3 -3
- package/dist/client/assets/{dist-BE8C_ouo.js → dist-ihRjPW1T.js} +1 -1
- package/dist/client/assets/{dist-DQiph4qx.js → dist-q3smPWAL.js} +1 -1
- package/dist/client/assets/{dist-DWRyOl2w.js → dist-wA96SVn6.js} +1 -1
- package/dist/client/assets/{dist-BPEi1dEF.js → dist-x4M0Qd0y.js} +1 -1
- package/dist/client/assets/drawio-editor-BHYoSlR7.js +9 -0
- package/dist/client/assets/drawioEditor-B-Ssnq_p.js +2 -0
- package/dist/client/assets/editor-session-BTPe8PEu.js +16 -0
- package/dist/client/assets/{el-GR-ZXDJ2OS4-DFmRQv0o.js → el-GR-ZXDJ2OS4-De6xlnXD.js} +1 -1
- package/dist/client/assets/{embedded-editor-base-CgEkjNYn.css → embedded-editor-base-Bb8ywn1e.css} +1 -1
- package/dist/client/assets/{en-CMP6EMR6-D9x8hVSu.js → en-CMP6EMR6-Bfz_MnNa.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-6VFZA3Qb.js → erDiagram-TEJ5UH35-BvMeaml9.js} +2 -2
- package/dist/client/assets/{es-ES-DYQHAD43-BiGWIrBG.js → es-ES-DYQHAD43-EVQAeFTZ.js} +1 -1
- package/dist/client/assets/{eu-ES-QDSYU5Y3-BjwS0kZi.js → eu-ES-QDSYU5Y3-O5XEQp0x.js} +1 -1
- package/dist/client/assets/eventmodeling-FCH6USID-DKkN-EFL.js +1 -0
- package/dist/client/assets/excalidraw-editor-DzL1T9D9.js +9 -0
- package/dist/client/assets/{excalidraw-editor-BZCE9ydu.css → excalidraw-editor-mKBCIvNR.css} +1 -1
- package/dist/client/assets/{excalidraw-mermaid-stub-Df0Q2qkW.js → excalidraw-mermaid-stub-B5sWezsO.js} +1 -1
- package/dist/client/assets/excalidraw-scene-i7oBzgH8.js +176 -0
- package/dist/client/assets/excalidrawEditor-DRxzpbJ-.js +2 -0
- package/dist/client/assets/{export-page-4M8Zo-AL.js → export-page-BkCqT_2s.js} +2 -2
- package/dist/client/assets/exportDocument-Dj7w1hDJ.js +2 -0
- package/dist/client/assets/{fa-IR-26LZG4PM-BgANg2TD.js → fa-IR-26LZG4PM-BlqI3v_N.js} +1 -1
- package/dist/client/assets/{fi-FI-6YS4KDE4-CBL5f3oN.js → fi-FI-6YS4KDE4-af5Lkv-j.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-DO9RH8YQ.js → flowDiagram-I6XJVG4X-DgXXcK8y.js} +6 -6
- package/dist/client/assets/{fr-FR-BRLLPTZC-CRibNSLG.js → fr-FR-BRLLPTZC-CwQyur9E.js} +1 -1
- package/dist/client/assets/ganttDiagram-6RSMTGT7-BMpbo3vT.js +292 -0
- package/dist/client/assets/gitGraph-WXDBUCRP-BIQYiPEj.js +1 -0
- package/dist/client/assets/gitGraphDiagram-PVQCEYII-CCdpTNJZ.js +106 -0
- package/dist/client/assets/{gl-ES-OKUZTLYG-DEDwa_xt.js → gl-ES-OKUZTLYG-BNEoLCI4.js} +1 -1
- package/dist/client/assets/graphlib-Dduz6oB8.js +1 -0
- package/dist/client/assets/{he-IL-26MGYIU7-47wxy70N.js → he-IL-26MGYIU7-WnVF9HP3.js} +1 -1
- package/dist/client/assets/{hi-IN-Q4ZOGTP2-bhV7c3dK.js → hi-IN-Q4ZOGTP2-DcU7ec07.js} +1 -1
- package/dist/client/assets/{hu-HU-P2OXPSN5-xG-gBMzE.js → hu-HU-P2OXPSN5-wmJyK1Wq.js} +1 -1
- package/dist/client/assets/{id-ID-2EIKXYN6-MQuYaNHo.js → id-ID-2EIKXYN6-BTvn0aFf.js} +1 -1
- package/dist/client/assets/image-KGGK4BDN-BtStV6c9.js +1 -0
- package/dist/client/assets/index-Cnyy977t.css +1 -0
- package/dist/client/assets/{index-CCfHrm_9.js → index-DxQmPZ_f.js} +2 -2
- package/dist/client/assets/info-J43DQDTF-CO2Z2J7J.js +1 -0
- package/dist/client/assets/{infoDiagram-42DDH7IO-C77Pt7T1.js → infoDiagram-5YYISTIA-oYw2qnNY.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-Cy1fwvvg.js → ishikawaDiagram-YF4QCWOH-BPqURwBR.js} +2 -2
- package/dist/client/assets/{it-IT-4CFKVXI2-v2kj-y7j.js → it-IT-4CFKVXI2-CC_iQxXu.js} +1 -1
- package/dist/client/assets/{ja-JP-MAND2Z4V-BahXSQz-.js → ja-JP-MAND2Z4V-ConJI8GA.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-CYWaI6re.js → journeyDiagram-JHISSGLW-CvxY2Fte.js} +3 -3
- package/dist/client/assets/{jsx-runtime-1KUJVfx8.js → jsx-runtime-IB1e1gmy.js} +1 -1
- package/dist/client/assets/{kaa-HQRTCXTJ-BF26ydFa.js → kaa-HQRTCXTJ-Caqwh_Qr.js} +1 -1
- package/dist/client/assets/{kab-KAB-JKIKKTGH-CEIH0F80.js → kab-KAB-JKIKKTGH-DQBmYNc9.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-DY1xE7tm.js → kanban-definition-UN3LZRKU-Ex7702dO.js} +6 -6
- package/dist/client/assets/{kk-KZ-HXQ63ZFC-CxWjc9Sf.js → kk-KZ-HXQ63ZFC-O5qp74q-.js} +1 -1
- package/dist/client/assets/{km-KH-PKL3LSGX-DJlCteEp.js → km-KH-PKL3LSGX-2wUYTyyo.js} +1 -1
- package/dist/client/assets/{ko-KR-KXLREZX3-B1gtI_ci.js → ko-KR-KXLREZX3-CYtUnW5t.js} +1 -1
- package/dist/client/assets/{ku-TR-MJ4IER3X-Bf41y2v2.js → ku-TR-MJ4IER3X-DtEKOAU3.js} +1 -1
- package/dist/client/assets/line-DRJILpPI.js +1 -0
- package/dist/client/assets/{linear-dsIQT_iU.js → linear-rFRiXd2u.js} +1 -1
- package/dist/client/assets/{lt-LT-H6WFQ6FJ-DA1or-Eo.js → lt-LT-H6WFQ6FJ-Cs17Ppdf.js} +1 -1
- package/dist/client/assets/{lv-LV-GOCK6SJW-qa0BoYMm.js → lv-LV-GOCK6SJW-DYuTyosz.js} +1 -1
- package/dist/client/assets/{main-BQMPQ4CW.js → main-iuYcGt-A.js} +11 -7
- package/dist/client/assets/mermaid-parser.core-BD_OCbyj.js +4 -0
- package/dist/client/assets/mermaid-runtime-CEgpdpwB.js +9 -0
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-DB_M5r-j.js → mindmap-definition-RKZ34NQL-D4pwLdMH.js} +23 -23
- package/dist/client/assets/{mr-IN-IXVLDMEQ-DXFRgvgb.js → mr-IN-IXVLDMEQ-CIJFnklt.js} +1 -1
- package/dist/client/assets/{my-MM-YG6MYTTD-BKDIfalJ.js → my-MM-YG6MYTTD-em_7TGWX.js} +1 -1
- package/dist/client/assets/{nb-NO-XGWJISD2-DbwbopH8.js → nb-NO-XGWJISD2-BLNgPVDj.js} +1 -1
- package/dist/client/assets/{nl-NL-XVDVCPNC-ChSneTSU.js → nl-NL-XVDVCPNC-CComxzvg.js} +1 -1
- package/dist/client/assets/{nn-NO-EMX5MJX5-Cf7ZWKWZ.js → nn-NO-EMX5MJX5-Cekj8s_-.js} +1 -1
- package/dist/client/assets/{oc-FR-ROEINTVO-lM7Nl7hD.js → oc-FR-ROEINTVO-DW-kHJ81.js} +1 -1
- package/dist/client/assets/{ordinal-Dz3y_j0K.js → ordinal-De-qfORd.js} +1 -1
- package/dist/client/assets/{pa-IN-ZYN6SUDY-C9WNUTeR.js → pa-IN-ZYN6SUDY-CnhULOGp.js} +1 -1
- package/dist/client/assets/packet-YPE3B663-VxGcYggl.js +1 -0
- package/dist/client/assets/percentages-5DKR754L-Ug3UfchV.js +1 -0
- package/dist/client/assets/{pica-CgGaIJly.js → pica-DcQ1xKp1.js} +1 -1
- package/dist/client/assets/pie-LRSECV5Y-7RrvmmEk.js +1 -0
- package/dist/client/assets/pieDiagram-4H26LBE5-C6MCExtR.js +30 -0
- package/dist/client/assets/{pl-PL-6VTG7PHC-DqRVepnC.js → pl-PL-6VTG7PHC-C9rBsz9v.js} +1 -1
- package/dist/client/assets/{preview-render-compiler-IUtgIlOM.js → preview-render-compiler-CSggyCbw.js} +1 -1
- package/dist/client/assets/preview-render-compiler-TPMesM_L.js +1 -0
- package/dist/client/assets/{preview-render-profile-Bf6R7v4w.js → preview-render-profile-CQR0o67h.js} +5 -5
- package/dist/client/assets/{preview-render-worker-BwQ5sPy9.js → preview-render-worker-CifbXdlx.js} +2 -2
- package/dist/client/assets/{pt-BR-5YFKRR5G-CopLYEA6.js → pt-BR-5YFKRR5G-BVyxOCjg.js} +1 -1
- package/dist/client/assets/{pt-PT-GEIXXZ67-BjZ_Lphg.js → pt-PT-GEIXXZ67-5CbVaVay.js} +1 -1
- package/dist/client/assets/quadrantDiagram-W4KKPZXB-CD77Rny0.js +7 -0
- package/dist/client/assets/quick-switcher-controller-CVJBt6V9.js +12 -0
- package/dist/client/assets/radar-GUYGQ44K-2SBnfFng.js +1 -0
- package/dist/client/assets/{requirementDiagram-MS252O5E-CtUIQnWa.js → requirementDiagram-4Y6WPE33-DdKM6ZWI.js} +4 -4
- package/dist/client/assets/{ro-RO-E2P6TFZI-DakDz5Xu.js → ro-RO-E2P6TFZI-DANwkfep.js} +1 -1
- package/dist/client/assets/{room-z2w9b96b.js → room-Cha55fQg.js} +1 -1
- package/dist/client/assets/{ru-RU-YBIIY43T-BMvCT-XT.js → ru-RU-YBIIY43T-BWZSxhA5.js} +1 -1
- package/dist/client/assets/runtime-config-CM_2pVYD.js +1 -0
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-tcSeuifE.js → sankeyDiagram-5OEKKPKP-BH3_LNkI.js} +36 -6
- package/dist/client/assets/sequenceDiagram-3UESZ5HK-CCGL7FMW.js +162 -0
- package/dist/client/assets/{si-LK-673C2CI2-hGdH1S9E.js → si-LK-673C2CI2-Bqr808AJ.js} +1 -1
- package/dist/client/assets/{sk-SK-CKZHQ4AP-DiRA-fj8.js → sk-SK-CKZHQ4AP-B2PvXXeU.js} +1 -1
- package/dist/client/assets/{sl-SI-557H2GWM-DN94n_1-.js → sl-SI-557H2GWM-IPVDhzgb.js} +1 -1
- package/dist/client/assets/{src-BuiVcSz-.js → src-BshjqEL2.js} +1 -1
- package/dist/client/assets/stateDiagram-AJRCARHV-ljJcYRX4.js +1 -0
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DXm0ynOB.js +1 -0
- package/dist/client/assets/subset-shared.chunk-C9mEHUfV.js +1 -0
- package/dist/client/assets/{subset-worker.chunk-kj1e3wjW.js → subset-worker.chunk-BW_EF59g.js} +1 -1
- package/dist/client/assets/{sv-SE-XOPKKDWS-CkHUNABj.js → sv-SE-XOPKKDWS-CQipq9Nf.js} +1 -1
- package/dist/client/assets/{ta-IN-XBH7DQI3-W-157oVK.js → ta-IN-XBH7DQI3-Cj2o89vS.js} +1 -1
- package/dist/client/assets/{th-TH-TOCWH3R4-BsU-Pydr.js → th-TH-TOCWH3R4-IOX-l13w.js} +1 -1
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-Bs6U53Mo.js → timeline-definition-PNZ67QCA-CUVPem2o.js} +5 -5
- package/dist/client/assets/{tr-TR-GXW6CYY5-CTddyq89.js → tr-TR-GXW6CYY5-DBVLEsZg.js} +1 -1
- package/dist/client/assets/treeView-BLDUP644-DItqHrxu.js +1 -0
- package/dist/client/assets/treemap-LRROVOQU-DD1ESKp7.js +1 -0
- package/dist/client/assets/{uk-UA-IJKTNUDG-1LzXkII3.js → uk-UA-IJKTNUDG-C5kaymku.js} +1 -1
- package/dist/client/assets/{uz-UZ-TBZZEA4V-kqm-qcUj.js → uz-UZ-TBZZEA4V-lMna4tx1.js} +1 -1
- package/dist/client/assets/{vault-api-client-BDKKvtOF.js → vault-api-client-Fa51l2lE.js} +1 -1
- package/dist/client/assets/{vault-utils-CRpy8MQz.js → vault-utils-BbJUHPCf.js} +1 -1
- package/dist/client/assets/vennDiagram-CIIHVFJN-Bb1KSPKA.js +34 -0
- package/dist/client/assets/{vi-VN-MULSGNVB-C3H2AUhm.js → vi-VN-MULSGNVB-BAcoCjsz.js} +1 -1
- package/dist/client/assets/wardley-L42UT6IY-BoSI-SvR.js +1 -0
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-C-scJfPY.js → wardleyDiagram-YWT4CUSO-EdTzLQiR.js} +61 -3
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-D3nQoxhz.js → xychartDiagram-2RQKCTM6-BoQFrGlt.js} +3 -3
- package/dist/client/assets/{zh-CN-MVX3E32U-BULPbsyl.js → zh-CN-MVX3E32U-sW-DCFHP.js} +1 -1
- package/dist/client/assets/{zh-HK-JNU5RLIE-bNGmeSaW.js → zh-HK-JNU5RLIE-Duqu8EG_.js} +1 -1
- package/dist/client/assets/{zh-TW-LENVCA6T-CQDp064P.js → zh-TW-LENVCA6T-BHC0OLnd.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/mermaid-preview-hydrator.js +26 -8
- package/src/client/application/preview-renderer.js +6 -1
- package/src/client/application/quick-switcher-loader.js +14 -0
- package/src/client/application/workspace-route-controller.js +14 -0
- package/src/client/domain/drawio-frame-load.js +28 -0
- package/src/client/domain/excalidraw-collaboration.js +50 -0
- package/src/client/domain/excalidraw-scene-reconcile.js +38 -0
- package/src/client/domain/hash-routes.js +16 -1
- package/src/client/domain/mermaid-language.js +179 -0
- package/src/client/domain/runtime-paths.js +7 -0
- package/src/client/drawio-editor.js +23 -10
- package/src/client/excalidraw-editor.js +143 -61
- package/src/client/infrastructure/editor-session.js +4 -0
- package/src/client/infrastructure/editor-view-adapter.js +37 -2
- package/src/client/infrastructure/excalidraw-room-client.js +139 -27
- package/src/client/infrastructure/runtime-config.js +17 -2
- package/src/client/infrastructure/vault-api-client.js +11 -0
- package/src/client/presentation/app-shell-template.js +4 -0
- package/src/client/presentation/drawio-embed-controller.js +230 -64
- package/src/client/presentation/excalidraw-embed-controller.js +51 -60
- package/src/client/presentation/quick-switcher-controller.js +217 -21
- package/src/client/presentation/quick-switcher-text-search.js +125 -0
- package/src/client/styles/features/diagram-preview.css +43 -23
- package/src/client/styles/features/quick-switcher.css +153 -15
- package/src/client/styles/layout/shell.css +6 -3
- package/src/client/styles/surfaces/embedded-editor-base.css +2 -1
- package/src/client/styles/surfaces/excalidraw-editor.css +4 -0
- package/src/domain/excalidraw-room-codec.js +1 -17
- package/src/server/config/env.js +1 -0
- package/src/server/create-app-server.js +29 -6
- package/src/server/domain/ripgrep-search-service.js +365 -0
- package/src/server/infrastructure/http/create-request-handler.js +3 -1
- package/src/server/infrastructure/http/create-static-handler.js +10 -1
- package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +38 -2
- package/src/server/infrastructure/workspace/file-system-sync-service.js +4 -0
- package/dist/client/assets/_baseFor-BSErPbF2.js +0 -1
- package/dist/client/assets/architecture-YZFGNWBL-DWWrde02.js +0 -1
- package/dist/client/assets/blockDiagram-DXYQGD6D-6UN-nR8-.js +0 -132
- package/dist/client/assets/channel-XGCkuPi6.js +0 -1
- package/dist/client/assets/chunk-2KRD3SAO-CFcF2aNP.js +0 -1
- package/dist/client/assets/chunk-336JU56O-DvrrHsJT.js +0 -2
- package/dist/client/assets/chunk-426QAEUC-CEbmCgux.js +0 -1
- package/dist/client/assets/chunk-4TB4RGXK-CoouNThi.js +0 -206
- package/dist/client/assets/chunk-5FUZZQ4R-CxIIxXPy.js +0 -62
- package/dist/client/assets/chunk-5PVQY5BW-ciE7eHID.js +0 -2
- package/dist/client/assets/chunk-67CJDMHE-CW-fbgQB.js +0 -1
- package/dist/client/assets/chunk-7N4EOEYR-DbAW6XnF.js +0 -1
- package/dist/client/assets/chunk-AA7GKIK3-ClDHDAza.js +0 -1
- package/dist/client/assets/chunk-CIAEETIT-BnB8a6HR.js +0 -1
- package/dist/client/assets/chunk-ENJZ2VHE-BQj_1YA_.js +0 -10
- package/dist/client/assets/chunk-FOC6F5B3-Bw6XfKDP.js +0 -1
- package/dist/client/assets/chunk-ICPOFSXX-DqJi89rc.js +0 -122
- package/dist/client/assets/chunk-K5T4RW27-CQtjKF2g.js +0 -94
- package/dist/client/assets/chunk-KGLVRYIC-BWSPiKjp.js +0 -1
- package/dist/client/assets/chunk-ORNJ4GCN-Csga44e5.js +0 -1
- package/dist/client/assets/chunk-OYMX7WX6-DvtmCasj.js +0 -231
- package/dist/client/assets/chunk-QZHKN3VN-CHVH9_3S.js +0 -1
- package/dist/client/assets/chunk-YHkbxXgt.js +0 -1
- package/dist/client/assets/chunk-YKPWT25G-GISHuloq.js +0 -35
- package/dist/client/assets/classDiagram-6PBFFD2Q-D1KhAUL3.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-BSyyJpnR.js +0 -1
- package/dist/client/assets/clone-DI0bYZ1L.js +0 -1
- package/dist/client/assets/dagre-Dn6rkrte.js +0 -1
- package/dist/client/assets/dagre-KV5264BT-COzej2en.js +0 -4
- package/dist/client/assets/diagram-G4DWMVQ6-CbswIU9X.js +0 -24
- package/dist/client/assets/diagram-MMDJMWI5-BE-yOVGX.js +0 -43
- package/dist/client/assets/dist-BfVljg0L2.js +0 -1
- package/dist/client/assets/dist-CcG3Y7Wp.js +0 -1
- package/dist/client/assets/dist-CghBwrO3.js +0 -1
- package/dist/client/assets/dist-Csbx9lQ-.js +0 -1
- package/dist/client/assets/dist-DLyohOXi.js +0 -1
- package/dist/client/assets/dist-WXLmfDGg.js +0 -1
- package/dist/client/assets/drawio-editor-BHI0pLby.js +0 -9
- package/dist/client/assets/drawioEditor-DOaXwaY2.js +0 -2
- package/dist/client/assets/editor-session-BFsA-WRc.js +0 -16
- package/dist/client/assets/excalidraw-editor-6pgH2kf5.js +0 -9
- package/dist/client/assets/excalidraw-scene-MyNAJi2A.js +0 -176
- package/dist/client/assets/excalidrawEditor-Ck9hgrTa.js +0 -2
- package/dist/client/assets/exportDocument-mlXOym-R.js +0 -2
- package/dist/client/assets/flatten-DjXjUsvv.js +0 -1
- package/dist/client/assets/ganttDiagram-T4ZO3ILL-B-NMvHWN.js +0 -292
- package/dist/client/assets/gitGraph-7Q5UKJZL-DWNinXu4.js +0 -1
- package/dist/client/assets/gitGraphDiagram-UUTBAWPF-B95qkCUx.js +0 -106
- package/dist/client/assets/graphlib-CAwOVCJc.js +0 -1
- package/dist/client/assets/image-J2CAS7OM-DD4DaQTs.js +0 -1
- package/dist/client/assets/index-maPm_Kvk.css +0 -1
- package/dist/client/assets/info-OMHHGYJF-DtYG_rX0.js +0 -1
- package/dist/client/assets/isEmpty-CpfhGGBo.js +0 -1
- package/dist/client/assets/line-BCItEgq3.js +0 -1
- package/dist/client/assets/mermaid-parser.core-CsTVsPcD.js +0 -4
- package/dist/client/assets/mermaid-runtime-BGlnoUXY.js +0 -11
- package/dist/client/assets/packet-4T2RLAQJ-CUVefhAv.js +0 -1
- package/dist/client/assets/percentages-5DKR754L-DuhOjTM2.js +0 -1
- package/dist/client/assets/pie-ZZUOXDRM-BHBJ1dLX.js +0 -1
- package/dist/client/assets/pieDiagram-DEJITSTG-BOo-WzjZ.js +0 -30
- package/dist/client/assets/preview-render-compiler-9SmLUP5V.js +0 -1
- package/dist/client/assets/quadrantDiagram-34T5L4WZ-2vfo0l5S.js +0 -7
- package/dist/client/assets/quick-switcher-controller-B1erSgJ1.js +0 -5
- package/dist/client/assets/radar-PYXPWWZC-2jR4qZNU.js +0 -1
- package/dist/client/assets/reduce-ChpYjEUB.js +0 -1
- package/dist/client/assets/runtime-config-BcUbZKho.js +0 -1
- package/dist/client/assets/sequenceDiagram-FGHM5R23-DtF-1Kt2.js +0 -157
- package/dist/client/assets/stateDiagram-FHFEXIEX-DKk7Sb0f.js +0 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-DJUaiADr.js +0 -1
- package/dist/client/assets/subset-shared.chunk-CWNYNLru.js +0 -1
- package/dist/client/assets/treeView-SZITEDCU-DN5dP2ol.js +0 -1
- package/dist/client/assets/treemap-W4RFUUIX-Dva7DBJR.js +0 -1
- package/dist/client/assets/vennDiagram-DHZGUBPP-DNnIjRae.js +0 -34
- package/dist/client/assets/wardley-RL74JXVD-CDZW5uzY.js +0 -1
- /package/dist/client/assets/{array-B3agRrCs.js → array-7rJMcyYQ.js} +0 -0
- /package/dist/client/assets/{cytoscape.esm-BurByw8X.js → cytoscape.esm-B_ygTtvl.js} +0 -0
- /package/dist/client/assets/{defaultLocale-B_FbTTbl.js → defaultLocale-DKHHE2Ij.js} +0 -0
- /package/dist/client/assets/{drawio-room-1i6Nn0_Z.js → drawio-room-DrZ-gy4N.js} +0 -0
- /package/dist/client/assets/{excalidraw-mermaid-stub-DzxtBcQW.js → excalidraw-mermaid-stub-Co4Okjfg.js} +0 -0
- /package/dist/client/assets/{file-kind-DmKq2MvD.js → file-kind-DLz-bCzA.js} +0 -0
- /package/dist/client/assets/{image-blob-reduce.esm-D8JQdTFk.js → image-blob-reduce.esm-CRyv8pnU.js} +0 -0
- /package/dist/client/assets/{init-DtLQcSuO.js → init-EmgYNkpL.js} +0 -0
- /package/dist/client/assets/{katex-CXYULLWy.js → katex-Beiidjxi.js} +0 -0
- /package/dist/client/assets/{path-DIlZIGue.js → path-vqW-z8T-.js} +0 -0
- /package/dist/client/assets/{preview-diagram-utils-Nqpp4FNV.js → preview-diagram-utils-D94KrSQH.js} +0 -0
- /package/dist/client/assets/{rough.esm-BU2knLt9.js → rough.esm-DE_lJ5Ge.js} +0 -0
- /package/dist/client/assets/{roundRect-BzEouiv_.js → roundRect-BMsJLtvm.js} +0 -0
- /package/dist/client/assets/{yjs-provider-reset-guard-DSPzcvAO.js → yjs-provider-reset-guard-CNmMf4Qd.js} +0 -0
|
@@ -10,7 +10,9 @@ import {
|
|
|
10
10
|
import '@excalidraw/excalidraw/index.css';
|
|
11
11
|
|
|
12
12
|
import {
|
|
13
|
+
buildRenderableCollaboratorsMap,
|
|
13
14
|
findCollaboratorByPeerId,
|
|
15
|
+
getCollaboratorsRenderSignature,
|
|
14
16
|
mergeAwarenessUserPatch,
|
|
15
17
|
resolveLocalAwarenessUser,
|
|
16
18
|
} from './domain/excalidraw-collaboration.js';
|
|
@@ -24,6 +26,9 @@ import {
|
|
|
24
26
|
parseSceneJson,
|
|
25
27
|
sceneToInitialData,
|
|
26
28
|
} from './domain/excalidraw-scene.js';
|
|
29
|
+
import {
|
|
30
|
+
buildReconciledExcalidrawSceneUpdate,
|
|
31
|
+
} from './domain/excalidraw-scene-reconcile.js';
|
|
27
32
|
import {
|
|
28
33
|
normalizeDocumentMode,
|
|
29
34
|
} from './domain/excalidraw-document-switch.js';
|
|
@@ -60,10 +65,12 @@ let pendingHostFollowPeerId = null;
|
|
|
60
65
|
let suppressViewportBroadcast = false;
|
|
61
66
|
let pendingViewportSuppressionReleases = 0;
|
|
62
67
|
let lastAppliedFollowViewportSignature = '';
|
|
68
|
+
let lastRenderedCollaboratorsSignature = '';
|
|
63
69
|
let apiStateCleanupCallbacks = [];
|
|
64
70
|
let collaboratorRenderFrame = 0;
|
|
65
71
|
let queuedCollaborators = null;
|
|
66
72
|
let initialViewportFitPending = true;
|
|
73
|
+
let previewViewportFitTimerId = 0;
|
|
67
74
|
let roomClient = null;
|
|
68
75
|
let roomClientGeneration = 0;
|
|
69
76
|
let reactRoot = null;
|
|
@@ -79,6 +86,10 @@ function getDocumentViewState(mode = currentDocument.mode) {
|
|
|
79
86
|
};
|
|
80
87
|
}
|
|
81
88
|
|
|
89
|
+
function applyDocumentMode(mode = currentDocument.mode) {
|
|
90
|
+
document.body.dataset.documentMode = normalizeDocumentMode(mode);
|
|
91
|
+
}
|
|
92
|
+
|
|
82
93
|
function createRoomClient(filePath) {
|
|
83
94
|
const generation = ++roomClientGeneration;
|
|
84
95
|
const client = new ExcalidrawRoomClient({
|
|
@@ -295,16 +306,21 @@ if (isTestMode) {
|
|
|
295
306
|
|
|
296
307
|
function applyCollaborators(collaborators) {
|
|
297
308
|
activeCollaborators = collaborators instanceof Map ? collaborators : new Map();
|
|
309
|
+
const renderableCollaborators = buildRenderableCollaboratorsMap(activeCollaborators);
|
|
310
|
+
const renderSignature = getCollaboratorsRenderSignature(renderableCollaborators);
|
|
298
311
|
|
|
299
312
|
if (!excalidrawAPI) {
|
|
300
313
|
pendingCollaborators = activeCollaborators;
|
|
301
314
|
return;
|
|
302
315
|
}
|
|
303
316
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
317
|
+
if (renderSignature !== lastRenderedCollaboratorsSignature) {
|
|
318
|
+
lastRenderedCollaboratorsSignature = renderSignature;
|
|
319
|
+
excalidrawAPI.updateScene({
|
|
320
|
+
collaborators: renderableCollaborators,
|
|
321
|
+
captureUpdate: CaptureUpdateAction.NEVER,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
308
324
|
|
|
309
325
|
if (pendingHostFollowPeerId) {
|
|
310
326
|
applyHostFollowRequest(pendingHostFollowPeerId);
|
|
@@ -328,10 +344,29 @@ function queueCollaboratorsRender(collaborators) {
|
|
|
328
344
|
});
|
|
329
345
|
}
|
|
330
346
|
|
|
331
|
-
function
|
|
347
|
+
function isEditingTextElement() {
|
|
348
|
+
return Boolean(excalidrawAPI?.getAppState?.()?.editingTextElement);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
function flushPendingRemoteScene() {
|
|
352
|
+
if (!pendingRemoteSceneJson || !excalidrawAPI || !collabReady || isEditingTextElement()) {
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
const sceneJson = pendingRemoteSceneJson;
|
|
357
|
+
pendingRemoteSceneJson = '';
|
|
358
|
+
applySceneFromJson(sceneJson, {
|
|
359
|
+
force: true,
|
|
360
|
+
});
|
|
361
|
+
return true;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
function applySceneFromJson(rawJson, {
|
|
365
|
+
force = false,
|
|
366
|
+
} = {}) {
|
|
332
367
|
const scene = parseSceneJson(rawJson);
|
|
333
368
|
const normalizedJson = JSON.stringify(scene);
|
|
334
|
-
if (normalizedJson === appliedSceneJson && !pendingRemoteSceneJson) {
|
|
369
|
+
if (!force && normalizedJson === appliedSceneJson && !pendingRemoteSceneJson) {
|
|
335
370
|
return;
|
|
336
371
|
}
|
|
337
372
|
|
|
@@ -342,9 +377,12 @@ function applySceneFromJson(rawJson) {
|
|
|
342
377
|
return;
|
|
343
378
|
}
|
|
344
379
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
380
|
+
if (!force && isEditingTextElement()) {
|
|
381
|
+
pendingRemoteSceneJson = normalizedJson;
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
updateApiScene(scene);
|
|
348
386
|
}
|
|
349
387
|
|
|
350
388
|
function releaseOnChangeSuppressionAfterPaint({ trackedSharedSnapshot = false } = {}) {
|
|
@@ -376,30 +414,21 @@ function releaseViewportBroadcastSuppressionAfterPaint() {
|
|
|
376
414
|
|
|
377
415
|
function buildApiSceneUpdate(scene, {
|
|
378
416
|
appStateOverrides = {},
|
|
379
|
-
replaceElements = false,
|
|
380
417
|
} = {}) {
|
|
381
418
|
const currentAppState = excalidrawAPI.getAppState();
|
|
382
|
-
const currentElements =
|
|
383
|
-
? []
|
|
384
|
-
: (excalidrawAPI.getSceneElementsIncludingDeleted?.() || excalidrawAPI.getSceneElements());
|
|
385
|
-
const restoredElements = restoreElements(scene?.elements || [], currentElements, {
|
|
386
|
-
repairBindings: true,
|
|
387
|
-
});
|
|
388
|
-
const restoredAppState = restoreAppState(scene?.appState || {}, currentAppState);
|
|
389
|
-
const reconciledElements = replaceElements
|
|
390
|
-
? restoredElements
|
|
391
|
-
: reconcileElements(currentElements, restoredElements, currentAppState);
|
|
419
|
+
const currentElements = excalidrawAPI.getSceneElementsIncludingDeleted?.() || excalidrawAPI.getSceneElements();
|
|
392
420
|
|
|
393
|
-
return {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
421
|
+
return buildReconciledExcalidrawSceneUpdate({
|
|
422
|
+
appStateOverrides,
|
|
423
|
+
currentAppState,
|
|
424
|
+
currentElements,
|
|
425
|
+
documentViewState: getDocumentViewState(),
|
|
426
|
+
reconcileElementsFn: reconcileElements,
|
|
427
|
+
restoreAppStateFn: restoreAppState,
|
|
428
|
+
restoreElementsFn: restoreElements,
|
|
429
|
+
scene,
|
|
430
|
+
theme: currentTheme,
|
|
431
|
+
});
|
|
403
432
|
}
|
|
404
433
|
|
|
405
434
|
function logFileConflictOnce(conflictingFileIds = []) {
|
|
@@ -437,12 +466,10 @@ function requestEditorRemount(scene) {
|
|
|
437
466
|
function applySceneToMountedApi(scene, {
|
|
438
467
|
appStateOverrides = {},
|
|
439
468
|
captureUpdate = CaptureUpdateAction.NEVER,
|
|
440
|
-
replaceElements = false,
|
|
441
469
|
trackedSharedSnapshot = false,
|
|
442
470
|
} = {}) {
|
|
443
471
|
const nextSceneUpdate = buildApiSceneUpdate(scene, {
|
|
444
472
|
appStateOverrides,
|
|
445
|
-
replaceElements,
|
|
446
473
|
});
|
|
447
474
|
let applyResult = null;
|
|
448
475
|
|
|
@@ -484,13 +511,11 @@ function applySceneToMountedApi(scene, {
|
|
|
484
511
|
function updateApiScene(scene, {
|
|
485
512
|
appStateOverrides = {},
|
|
486
513
|
captureUpdate = CaptureUpdateAction.NEVER,
|
|
487
|
-
replaceElements = false,
|
|
488
514
|
trackedSharedSnapshot = true,
|
|
489
515
|
} = {}) {
|
|
490
516
|
applySceneToMountedApi(scene, {
|
|
491
517
|
appStateOverrides,
|
|
492
518
|
captureUpdate,
|
|
493
|
-
replaceElements,
|
|
494
519
|
trackedSharedSnapshot,
|
|
495
520
|
});
|
|
496
521
|
}
|
|
@@ -520,6 +545,10 @@ function onRoomTextUpdate() {
|
|
|
520
545
|
applySceneFromJson(roomClient?.getLastSceneJson?.() || '');
|
|
521
546
|
}
|
|
522
547
|
|
|
548
|
+
function getLiveSceneElementsForSync(fallbackElements = []) {
|
|
549
|
+
return excalidrawAPI?.getSceneElementsIncludingDeleted?.() || fallbackElements;
|
|
550
|
+
}
|
|
551
|
+
|
|
523
552
|
function postToParent(type, payload = {}) {
|
|
524
553
|
window.parent.postMessage({ source: 'excalidraw-editor', type, ...payload }, parentOrigin);
|
|
525
554
|
}
|
|
@@ -541,8 +570,17 @@ function getSceneElementsForPreviewFit() {
|
|
|
541
570
|
);
|
|
542
571
|
}
|
|
543
572
|
|
|
544
|
-
function
|
|
545
|
-
|
|
573
|
+
function scheduleViewportFit({
|
|
574
|
+
delayMs = 0,
|
|
575
|
+
forcePreview = false,
|
|
576
|
+
consumeInitialFit = false,
|
|
577
|
+
} = {}) {
|
|
578
|
+
const normalizedMode = normalizeDocumentMode(currentDocument.mode);
|
|
579
|
+
if (!excalidrawAPI || (forcePreview && normalizedMode !== 'preview')) {
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
if (!forcePreview && !initialViewportFitPending) {
|
|
546
584
|
return;
|
|
547
585
|
}
|
|
548
586
|
|
|
@@ -550,22 +588,55 @@ function scheduleInitialViewportFit() {
|
|
|
550
588
|
if (elements.length === 0) {
|
|
551
589
|
return;
|
|
552
590
|
}
|
|
553
|
-
|
|
591
|
+
if (consumeInitialFit) {
|
|
592
|
+
initialViewportFitPending = false;
|
|
593
|
+
}
|
|
554
594
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
return;
|
|
559
|
-
}
|
|
595
|
+
if (previewViewportFitTimerId) {
|
|
596
|
+
window.clearTimeout(previewViewportFitTimerId);
|
|
597
|
+
}
|
|
560
598
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
599
|
+
previewViewportFitTimerId = window.setTimeout(() => {
|
|
600
|
+
previewViewportFitTimerId = 0;
|
|
601
|
+
requestAnimationFrame(() => {
|
|
602
|
+
requestAnimationFrame(() => {
|
|
603
|
+
if (!excalidrawAPI) {
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
const latestElements = getSceneElementsForPreviewFit();
|
|
608
|
+
if (latestElements.length === 0) {
|
|
609
|
+
return;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
if (forcePreview) {
|
|
613
|
+
suppressViewportBroadcast = true;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
excalidrawAPI.scrollToContent(latestElements, {
|
|
617
|
+
animate: false,
|
|
618
|
+
fitToViewport: true,
|
|
619
|
+
maxZoom: 2,
|
|
620
|
+
viewportZoomFactor: normalizedMode === 'preview' ? 0.92 : 0.88,
|
|
621
|
+
});
|
|
622
|
+
|
|
623
|
+
if (forcePreview) {
|
|
624
|
+
releaseViewportBroadcastSuppressionAfterPaint();
|
|
625
|
+
}
|
|
566
626
|
});
|
|
567
627
|
});
|
|
568
|
-
});
|
|
628
|
+
}, delayMs);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
function scheduleInitialViewportFit() {
|
|
632
|
+
scheduleViewportFit({ consumeInitialFit: true });
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
function schedulePreviewViewportFit() {
|
|
636
|
+
scheduleViewportFit({ forcePreview: true, delayMs: 80 });
|
|
637
|
+
window.setTimeout(() => {
|
|
638
|
+
scheduleViewportFit({ forcePreview: true });
|
|
639
|
+
}, 240);
|
|
569
640
|
}
|
|
570
641
|
|
|
571
642
|
function syncLocalViewportToRoom() {
|
|
@@ -674,6 +745,7 @@ function resetRealtimeRoomState() {
|
|
|
674
745
|
suppressViewportBroadcast = false;
|
|
675
746
|
pendingViewportSuppressionReleases = 0;
|
|
676
747
|
lastAppliedFollowViewportSignature = '';
|
|
748
|
+
lastRenderedCollaboratorsSignature = '';
|
|
677
749
|
if (collaboratorRenderFrame) {
|
|
678
750
|
cancelAnimationFrame(collaboratorRenderFrame);
|
|
679
751
|
}
|
|
@@ -776,6 +848,11 @@ window.addEventListener('message', (event) => {
|
|
|
776
848
|
return;
|
|
777
849
|
}
|
|
778
850
|
|
|
851
|
+
if (message.type === 'fit-preview-viewport') {
|
|
852
|
+
schedulePreviewViewportFit();
|
|
853
|
+
return;
|
|
854
|
+
}
|
|
855
|
+
|
|
779
856
|
if (message.type === 'prepare-disconnect') {
|
|
780
857
|
void (async () => {
|
|
781
858
|
await prepareRealtimeRoomDisconnect();
|
|
@@ -799,17 +876,8 @@ function scheduleSyncToRoom(elements, appState, files) {
|
|
|
799
876
|
return;
|
|
800
877
|
}
|
|
801
878
|
|
|
802
|
-
const
|
|
803
|
-
|
|
804
|
-
appState,
|
|
805
|
-
files,
|
|
806
|
-
}));
|
|
807
|
-
if (nextSceneJson === appliedSceneJson) {
|
|
808
|
-
return;
|
|
809
|
-
}
|
|
810
|
-
|
|
811
|
-
appliedSceneJson = nextSceneJson;
|
|
812
|
-
roomClient.scheduleSceneSync(elements, appState, files);
|
|
879
|
+
const liveElements = getLiveSceneElementsForSync(elements);
|
|
880
|
+
roomClient.scheduleSceneSync(liveElements, appState, files);
|
|
813
881
|
}
|
|
814
882
|
|
|
815
883
|
function initializeEditor(api) {
|
|
@@ -828,14 +896,27 @@ function initializeEditor(api) {
|
|
|
828
896
|
|
|
829
897
|
setFollowedSocket(null, { force: true });
|
|
830
898
|
}));
|
|
899
|
+
apiStateCleanupCallbacks.push(api.onStateChange('editingTextElement', (editingTextElement) => {
|
|
900
|
+
if (!editingTextElement) {
|
|
901
|
+
requestAnimationFrame(() => {
|
|
902
|
+
requestAnimationFrame(() => {
|
|
903
|
+
flushPendingRemoteScene();
|
|
904
|
+
});
|
|
905
|
+
});
|
|
906
|
+
}
|
|
907
|
+
}));
|
|
831
908
|
|
|
832
909
|
const sceneJson = pendingRemoteSceneJson || roomClient?.getLastSceneJson?.() || '';
|
|
910
|
+
const initialScene = parseSceneJson(sceneJson);
|
|
833
911
|
pendingRemoteSceneJson = '';
|
|
834
|
-
|
|
912
|
+
appliedSceneJson = JSON.stringify(initialScene);
|
|
913
|
+
updateApiScene(initialScene);
|
|
835
914
|
|
|
836
915
|
if (pendingCollaborators) {
|
|
916
|
+
const renderableCollaborators = buildRenderableCollaboratorsMap(pendingCollaborators);
|
|
917
|
+
lastRenderedCollaboratorsSignature = getCollaboratorsRenderSignature(renderableCollaborators);
|
|
837
918
|
excalidrawAPI.updateScene({
|
|
838
|
-
collaborators:
|
|
919
|
+
collaborators: renderableCollaborators,
|
|
839
920
|
captureUpdate: CaptureUpdateAction.NEVER,
|
|
840
921
|
});
|
|
841
922
|
pendingCollaborators = null;
|
|
@@ -863,6 +944,7 @@ async function init() {
|
|
|
863
944
|
|
|
864
945
|
try {
|
|
865
946
|
applySurfaceTheme(currentTheme);
|
|
947
|
+
applyDocumentMode();
|
|
866
948
|
await ensureClientAuthenticated();
|
|
867
949
|
const initialScene = await connectDocumentClient(currentDocument.filePath);
|
|
868
950
|
if (!initialScene) {
|
|
@@ -218,6 +218,10 @@ export class EditorSession {
|
|
|
218
218
|
return this.viewAdapter.scrollToLine(lineNumber, viewportRatio);
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
+
revealSearchMatch(match) {
|
|
222
|
+
return this.viewAdapter.revealSearchMatch(match);
|
|
223
|
+
}
|
|
224
|
+
|
|
221
225
|
getUserCursor(clientId) {
|
|
222
226
|
return this.collaborationClient.getUserCursor(
|
|
223
227
|
clientId,
|
|
@@ -38,14 +38,15 @@ import {
|
|
|
38
38
|
} from '@codemirror/view';
|
|
39
39
|
import { yCollab } from 'y-codemirror.next';
|
|
40
40
|
|
|
41
|
-
import { isBaseFilePath, isPlantUmlFilePath } from '../../domain/file-kind.js';
|
|
41
|
+
import { isBaseFilePath, isMermaidFilePath, isPlantUmlFilePath } from '../../domain/file-kind.js';
|
|
42
42
|
import { normalizeCommentQuote } from '../../domain/comment-threads.js';
|
|
43
43
|
import { createMarkdownToolbarEdit } from '../domain/markdown-formatting.js';
|
|
44
|
+
import { mermaidLanguage, mermaidLanguageDescription } from '../domain/mermaid-language.js';
|
|
44
45
|
import { wikiLinkCompletions } from '../domain/wiki-link-completions.js';
|
|
45
46
|
import { plantUmlLanguage, plantUmlLanguageDescription } from '../domain/plantuml-language.js';
|
|
46
47
|
import { handleImagePasteEvent } from './editor-paste-utils.js';
|
|
47
48
|
|
|
48
|
-
const markdownCodeLanguages = [...languages, plantUmlLanguageDescription];
|
|
49
|
+
const markdownCodeLanguages = [...languages, mermaidLanguageDescription, plantUmlLanguageDescription];
|
|
49
50
|
const pairedMatchingBracketMark = Decoration.mark({ class: 'cm-matchingBracket cm-matchingBracket-paired' });
|
|
50
51
|
const nonmatchingBracketMark = Decoration.mark({ class: 'cm-nonmatchingBracket' });
|
|
51
52
|
const remoteUpdateMark = Decoration.mark({ class: 'cm-remoteUpdateFlash' });
|
|
@@ -299,6 +300,10 @@ function createEditorTheme(theme) {
|
|
|
299
300
|
}
|
|
300
301
|
|
|
301
302
|
export function createLanguageExtension(filePath) {
|
|
303
|
+
if (isMermaidFilePath(filePath)) {
|
|
304
|
+
return mermaidLanguage;
|
|
305
|
+
}
|
|
306
|
+
|
|
302
307
|
if (isPlantUmlFilePath(filePath)) {
|
|
303
308
|
return plantUmlLanguage;
|
|
304
309
|
}
|
|
@@ -846,6 +851,36 @@ export class EditorViewAdapter {
|
|
|
846
851
|
return true;
|
|
847
852
|
}
|
|
848
853
|
|
|
854
|
+
revealSearchMatch({ column = 1, length = 0, line = 1 } = {}) {
|
|
855
|
+
const state = this.editorView?.state;
|
|
856
|
+
if (!state || !this.editorView) {
|
|
857
|
+
return false;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
const targetLineNumber = Math.min(
|
|
861
|
+
Math.max(Math.round(Number(line) || 1), 1),
|
|
862
|
+
state.doc.lines,
|
|
863
|
+
);
|
|
864
|
+
const targetLine = state.doc.line(targetLineNumber);
|
|
865
|
+
const columnOffset = Math.min(
|
|
866
|
+
Math.max(Math.round(Number(column) || 1) - 1, 0),
|
|
867
|
+
targetLine.length,
|
|
868
|
+
);
|
|
869
|
+
const from = targetLine.from + columnOffset;
|
|
870
|
+
const to = Math.min(
|
|
871
|
+
from + Math.max(Math.round(Number(length) || 0), 0),
|
|
872
|
+
targetLine.to,
|
|
873
|
+
);
|
|
874
|
+
|
|
875
|
+
this.editorView.dispatch({
|
|
876
|
+
scrollIntoView: true,
|
|
877
|
+
selection: EditorSelection.range(from, Math.max(to, from)),
|
|
878
|
+
});
|
|
879
|
+
this.editorView.focus();
|
|
880
|
+
this.scrollToLine(targetLineNumber, 0.2);
|
|
881
|
+
return true;
|
|
882
|
+
}
|
|
883
|
+
|
|
849
884
|
scrollToPosition(position, alignment = 'center') {
|
|
850
885
|
const state = this.editorView?.state;
|
|
851
886
|
const scroller = this.editorView?.scrollDOM;
|
|
@@ -30,6 +30,48 @@ const DEFAULT_EMPTY_SCENE_GUARD_MS = 250;
|
|
|
30
30
|
const DEFAULT_SAVE_THROTTLE_MS = 48;
|
|
31
31
|
const DEFAULT_SYNC_TIMEOUT_MS = 4000;
|
|
32
32
|
|
|
33
|
+
function stableJson(value) {
|
|
34
|
+
if (Array.isArray(value)) {
|
|
35
|
+
return `[${value.map((entry) => stableJson(entry)).join(',')}]`;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (value && typeof value === 'object') {
|
|
39
|
+
return `{${Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${stableJson(value[key])}`).join(',')}}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return JSON.stringify(value);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function normalizeElementVersion(value) {
|
|
46
|
+
const version = Number(value);
|
|
47
|
+
return Number.isFinite(version) ? version : 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function normalizeElementVersionNonce(value) {
|
|
51
|
+
const versionNonce = Number(value);
|
|
52
|
+
return Number.isFinite(versionNonce) ? versionNonce : 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function shouldSyncElementToRoom(localElement, roomElement) {
|
|
56
|
+
if (!localElement?.id) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (!roomElement) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const localVersion = normalizeElementVersion(localElement.version);
|
|
65
|
+
const roomVersion = normalizeElementVersion(roomElement.version);
|
|
66
|
+
if (localVersion !== roomVersion) {
|
|
67
|
+
return localVersion > roomVersion;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const localVersionNonce = normalizeElementVersionNonce(localElement.versionNonce);
|
|
71
|
+
const roomVersionNonce = normalizeElementVersionNonce(roomElement.versionNonce);
|
|
72
|
+
return localVersionNonce < roomVersionNonce;
|
|
73
|
+
}
|
|
74
|
+
|
|
33
75
|
export class ExcalidrawRoomClient {
|
|
34
76
|
constructor({
|
|
35
77
|
cancelAnimationFrameFn = (frameId) => cancelAnimationFrame(frameId),
|
|
@@ -74,6 +116,7 @@ export class ExcalidrawRoomClient {
|
|
|
74
116
|
this.handleProviderSync = null;
|
|
75
117
|
this.lastSceneJson = '';
|
|
76
118
|
this.sceneSyncTimer = null;
|
|
119
|
+
this.sceneSyncDueAt = 0;
|
|
77
120
|
this.lastSceneSyncAt = 0;
|
|
78
121
|
this.pendingSceneSyncPayload = null;
|
|
79
122
|
this.pointerAwarenessFrame = 0;
|
|
@@ -86,6 +129,7 @@ export class ExcalidrawRoomClient {
|
|
|
86
129
|
this.canWriteToRoom = false;
|
|
87
130
|
this.waitingForAuthoritativeSync = false;
|
|
88
131
|
this.applyingSharedSnapshotDepth = 0;
|
|
132
|
+
this.suppressStructuredSceneUpdateDepth = 0;
|
|
89
133
|
|
|
90
134
|
this.handleAwarenessChange = () => {
|
|
91
135
|
this.onCollaboratorsChange(buildCollaboratorsMap(this.awareness));
|
|
@@ -96,6 +140,10 @@ export class ExcalidrawRoomClient {
|
|
|
96
140
|
return;
|
|
97
141
|
}
|
|
98
142
|
|
|
143
|
+
if (this.suppressStructuredSceneUpdateDepth > 0) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
|
|
99
147
|
const remoteJson = this.getStructuredSceneJson();
|
|
100
148
|
if (!remoteJson || remoteJson === this.lastSceneJson) {
|
|
101
149
|
return;
|
|
@@ -386,6 +434,40 @@ export class ExcalidrawRoomClient {
|
|
|
386
434
|
return nextAppState;
|
|
387
435
|
}
|
|
388
436
|
|
|
437
|
+
buildLiveSceneDelta({
|
|
438
|
+
appState,
|
|
439
|
+
baseSceneJson,
|
|
440
|
+
elements,
|
|
441
|
+
files,
|
|
442
|
+
} = {}) {
|
|
443
|
+
const roomSceneJson = this.getStructuredSceneJson() || this.lastSceneJson || baseSceneJson;
|
|
444
|
+
const roomScene = parseSceneJson(roomSceneJson);
|
|
445
|
+
const nextAppState = this.mergeLocallyChangedAppState(appState, baseSceneJson);
|
|
446
|
+
const roomElementsById = new Map(roomScene.elements.map((element) => [element.id, element]));
|
|
447
|
+
const changedElements = (Array.isArray(elements) ? elements : []).filter((element) => (
|
|
448
|
+
shouldSyncElementToRoom(element, roomElementsById.get(element?.id))
|
|
449
|
+
));
|
|
450
|
+
const nextFiles = files && typeof files === 'object' ? files : {};
|
|
451
|
+
const changedFiles = Object.fromEntries(
|
|
452
|
+
Object.entries(nextFiles).filter(([fileId, file]) => (
|
|
453
|
+
stableJson(file) !== stableJson(roomScene.files?.[fileId])
|
|
454
|
+
)),
|
|
455
|
+
);
|
|
456
|
+
const appStateChanged = (
|
|
457
|
+
nextAppState.gridSize !== roomScene.appState?.gridSize
|
|
458
|
+
|| nextAppState.viewBackgroundColor !== roomScene.appState?.viewBackgroundColor
|
|
459
|
+
);
|
|
460
|
+
|
|
461
|
+
return {
|
|
462
|
+
hasChanges: changedElements.length > 0 || Object.keys(changedFiles).length > 0 || appStateChanged,
|
|
463
|
+
scene: buildLiveCollaborationScene(
|
|
464
|
+
changedElements,
|
|
465
|
+
nextAppState,
|
|
466
|
+
changedFiles,
|
|
467
|
+
),
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
|
|
389
471
|
scheduleSceneSync(elements, appState, files) {
|
|
390
472
|
this.pendingSceneSyncPayload = {
|
|
391
473
|
appState,
|
|
@@ -401,14 +483,20 @@ export class ExcalidrawRoomClient {
|
|
|
401
483
|
}
|
|
402
484
|
|
|
403
485
|
scheduleSceneSyncFlush() {
|
|
404
|
-
|
|
486
|
+
const elapsed = this.now() - this.lastSceneSyncAt;
|
|
487
|
+
const delay = Math.max(0, this.saveThrottleMs - elapsed);
|
|
488
|
+
const dueAt = this.now() + delay;
|
|
489
|
+
if (this.sceneSyncTimer !== null && this.sceneSyncDueAt <= dueAt) {
|
|
405
490
|
return;
|
|
406
491
|
}
|
|
407
492
|
|
|
408
|
-
|
|
409
|
-
|
|
493
|
+
if (this.sceneSyncTimer !== null) {
|
|
494
|
+
this.clearTimeoutFn(this.sceneSyncTimer);
|
|
495
|
+
}
|
|
496
|
+
this.sceneSyncDueAt = dueAt;
|
|
410
497
|
this.sceneSyncTimer = this.setTimeoutFn(() => {
|
|
411
498
|
this.sceneSyncTimer = null;
|
|
499
|
+
this.sceneSyncDueAt = 0;
|
|
412
500
|
this.flushSceneSync();
|
|
413
501
|
}, delay);
|
|
414
502
|
}
|
|
@@ -426,30 +514,45 @@ export class ExcalidrawRoomClient {
|
|
|
426
514
|
} = this.pendingSceneSyncPayload;
|
|
427
515
|
this.pendingSceneSyncPayload = null;
|
|
428
516
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
this.mergeLocallyChangedAppState(appState, baseSceneJson),
|
|
432
|
-
files,
|
|
433
|
-
);
|
|
434
|
-
const json = JSON.stringify(sceneData);
|
|
435
|
-
if (this.shouldDelayEmptySceneCommit(json)) {
|
|
436
|
-
this.pendingSceneSyncPayload = {
|
|
437
|
-
appState,
|
|
438
|
-
baseSceneJson,
|
|
517
|
+
if (Array.isArray(elements) && elements.length === 0) {
|
|
518
|
+
const emptyCandidate = buildLiveCollaborationScene(
|
|
439
519
|
elements,
|
|
520
|
+
this.mergeLocallyChangedAppState(appState, baseSceneJson),
|
|
440
521
|
files,
|
|
441
|
-
|
|
442
|
-
this.
|
|
443
|
-
|
|
522
|
+
);
|
|
523
|
+
if (this.shouldDelayEmptySceneCommit(JSON.stringify(emptyCandidate))) {
|
|
524
|
+
this.pendingSceneSyncPayload = {
|
|
525
|
+
appState,
|
|
526
|
+
baseSceneJson,
|
|
527
|
+
elements,
|
|
528
|
+
files,
|
|
529
|
+
};
|
|
530
|
+
this.scheduleDelayedEmptySceneCommit();
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
444
533
|
}
|
|
445
534
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
535
|
+
const {
|
|
536
|
+
hasChanges,
|
|
537
|
+
scene: sceneData,
|
|
538
|
+
} = this.buildLiveSceneDelta({
|
|
539
|
+
appState,
|
|
540
|
+
baseSceneJson,
|
|
541
|
+
elements,
|
|
542
|
+
files,
|
|
543
|
+
});
|
|
544
|
+
|
|
545
|
+
if (!hasChanges) {
|
|
546
|
+
this.pendingEmptySceneCandidate = null;
|
|
547
|
+
return;
|
|
451
548
|
}
|
|
452
549
|
|
|
550
|
+
const json = JSON.stringify(sceneData);
|
|
551
|
+
this.lastSceneSyncAt = this.now();
|
|
552
|
+
this.commitSceneJson(json, {
|
|
553
|
+
origin: 'excalidraw-local-change',
|
|
554
|
+
});
|
|
555
|
+
|
|
453
556
|
this.pendingEmptySceneCandidate = null;
|
|
454
557
|
|
|
455
558
|
if (this.pendingSceneSyncPayload) {
|
|
@@ -510,8 +613,10 @@ export class ExcalidrawRoomClient {
|
|
|
510
613
|
const firstSeenAt = this.pendingEmptySceneCandidate?.firstSeenAt ?? this.now();
|
|
511
614
|
const elapsed = this.now() - firstSeenAt;
|
|
512
615
|
const delay = Math.max(0, this.emptySceneGuardMs - elapsed);
|
|
616
|
+
this.sceneSyncDueAt = this.now() + delay;
|
|
513
617
|
this.sceneSyncTimer = this.setTimeoutFn(() => {
|
|
514
618
|
this.sceneSyncTimer = null;
|
|
619
|
+
this.sceneSyncDueAt = 0;
|
|
515
620
|
this.flushSceneSync();
|
|
516
621
|
}, delay);
|
|
517
622
|
}
|
|
@@ -634,19 +739,25 @@ export class ExcalidrawRoomClient {
|
|
|
634
739
|
return false;
|
|
635
740
|
}
|
|
636
741
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
742
|
+
let didChange = false;
|
|
743
|
+
this.suppressStructuredSceneUpdateDepth += 1;
|
|
744
|
+
try {
|
|
745
|
+
this.ydoc.transact(() => {
|
|
746
|
+
didChange = applySceneDiffToExcalidrawRoom(this.ydoc, parseSceneJson(normalizedJson));
|
|
747
|
+
}, origin);
|
|
748
|
+
} finally {
|
|
749
|
+
this.suppressStructuredSceneUpdateDepth = Math.max(0, this.suppressStructuredSceneUpdateDepth - 1);
|
|
750
|
+
}
|
|
642
751
|
|
|
643
|
-
|
|
752
|
+
this.lastSceneJson = JSON.stringify(parseSceneJson(this.getStructuredSceneJson() || normalizedJson));
|
|
753
|
+
return didChange;
|
|
644
754
|
}
|
|
645
755
|
|
|
646
756
|
disconnect() {
|
|
647
757
|
this.flushSceneSync();
|
|
648
758
|
this.clearTimeoutFn(this.sceneSyncTimer);
|
|
649
759
|
this.sceneSyncTimer = null;
|
|
760
|
+
this.sceneSyncDueAt = 0;
|
|
650
761
|
this.pendingSceneSyncPayload = null;
|
|
651
762
|
|
|
652
763
|
if (this.pointerAwarenessFrame) {
|
|
@@ -692,5 +803,6 @@ export class ExcalidrawRoomClient {
|
|
|
692
803
|
this.canWriteToRoom = false;
|
|
693
804
|
this.waitingForAuthoritativeSync = false;
|
|
694
805
|
this.applyingSharedSnapshotDepth = 0;
|
|
806
|
+
this.suppressStructuredSceneUpdateDepth = 0;
|
|
695
807
|
}
|
|
696
808
|
}
|