collabmd 0.1.49 → 0.1.51
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 +10 -659
- package/bin/collabmd.js +36 -20
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-Crf9Y3Q6.js +1 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-CdVZqicp.js → abnfDiagram-VCTEODGH-PuinKbSQ.js} +1 -1
- package/dist/client/assets/ar-SA-5WIASEJP-Di7OimCN.js +10 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-wUo0bXif.js → architectureDiagram-5GKGNRK7-46hPkrZv.js} +1 -1
- package/dist/client/assets/az-AZ-V5EUQD6C-C19OGTT_.js +1 -0
- package/dist/client/assets/bg-BG-EXASCMTR-BIt0xWyb.js +5 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-BRSK3m49.js → blockDiagram-I7D4REHJ-C1S5Bzf8.js} +1 -1
- package/dist/client/assets/bn-BD-U4SYNFCO-CdNaPy4Q.js +3 -0
- package/dist/client/assets/bn-IN-HKDJIITE-CdNaPy4Q.js +3 -0
- package/dist/client/assets/{browser-BKLM0ThC-IxjwuOIz-BBqQnUEb.js → browser-BKLM0ThC-IxjwuOIz-DyJcVMFR.js} +1 -1
- package/dist/client/assets/{c4Diagram-7LVT6UL2-yD2poxqw.js → c4Diagram-7LVT6UL2-VAk1HPmz.js} +1 -1
- package/dist/client/assets/ca-ES-2KGUU5XB-C9t-c0cH.js +8 -0
- package/dist/client/assets/channel-jwdhnPiV.js +1 -0
- package/dist/client/assets/chunk-2E4U76K2-Ba8Wf22k.js +1 -0
- package/dist/client/assets/{chunk-4HAMMTFA-DStbIfJ1.js → chunk-4HAMMTFA-Ht-73lsT.js} +1 -1
- package/dist/client/assets/chunk-5XKZK2GL-D4UAZSOJ.js +1 -0
- package/dist/client/assets/{chunk-75Z2AOVW-C5pGd3W9.js → chunk-75Z2AOVW-B2cZexqK.js} +1 -1
- package/dist/client/assets/{chunk-CLGD4ZFX-BMeArk03.js → chunk-CLGD4ZFX-Cmtx89ht.js} +1 -1
- package/dist/client/assets/{chunk-DU6HZSFF-Zkp69c6c.js → chunk-DU6HZSFF-C6d6PJfE.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-D4xNct1r.js → chunk-F27PBJKO-Dg3H6KLL.js} +1 -1
- package/dist/client/assets/{chunk-GMAD6QVW-NZ6WpDb8.js → chunk-GMAD6QVW-DUfjx_d5.js} +1 -1
- package/dist/client/assets/{chunk-GVQU2GXP-D8SDprfX.js → chunk-GVQU2GXP-D1l7oRGR.js} +1 -1
- package/dist/client/assets/{chunk-IMKFNOWR-D8jEuU3Q.js → chunk-IMKFNOWR-3F6NhHUP.js} +1 -1
- package/dist/client/assets/{chunk-L3NEJ4N5-aijKP-eh.js → chunk-L3NEJ4N5-BmCVn4y-.js} +1 -1
- package/dist/client/assets/{chunk-OSK3NFVY-CCbLQAMa.js → chunk-OSK3NFVY-CWHXAmfx.js} +1 -1
- package/dist/client/assets/{chunk-P2QGCYS3-Oag_FdCq.js → chunk-P2QGCYS3-Du8EtwOa.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-CYnpIgXT.js → chunk-POPQ4Y6H-B5yJIrZE.js} +1 -1
- package/dist/client/assets/{chunk-PWAF6VOD-JSNrcBmP.js → chunk-PWAF6VOD-B3gML4ps.js} +1 -1
- package/dist/client/assets/{chunk-SHT3W25Y-BiQGljao.js → chunk-SHT3W25Y-BKaI8jZO.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-DB485R5x.js → chunk-SVP7TREG-XlsB_ZMZ.js} +1 -1
- package/dist/client/assets/{chunk-TICWLB2K-8rAVvoS3.js → chunk-TICWLB2K-Cpp2z8yK.js} +1 -1
- package/dist/client/assets/chunk-TLUHSLCS-Yl7B0Vrz.js +1 -0
- package/dist/client/assets/chunk-ZNVOA63L-BmCQjhx-.js +40 -0
- package/dist/client/assets/{chunk-FLYJHZSQ-Be7lKF17.js → chunk-ZPMXAHWN-Dt0TxJa6.js} +2 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-BRw9vo8U.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BRw9vo8U.js +1 -0
- package/dist/client/assets/comment-markdown-renderer-B9_vPc3F.js +1 -0
- package/dist/client/assets/comment-thread-store-NNHqRVsX.js +1 -0
- package/dist/client/assets/comment-threads-nJhK1yfc.js +4 -0
- package/dist/client/assets/cs-CZ-VUCGPRML-BfCoYAgj.js +7 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-rTz9RhFH.js → cynefinDiagram-5FMLGOSQ-BRoCEoZM.js} +1 -1
- package/dist/client/assets/da-DK-NNDP2IVP-DBw9ZNTR.js +2 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-Cr67wLpQ.js → dagre-GXQ25YYZ-BSfKCfy7.js} +1 -1
- package/dist/client/assets/de-CH-I7RAVIZN-DYW18Vsr.js +11 -0
- package/dist/client/assets/de-DE-WBQ3DQLR-DYW18Vsr.js +11 -0
- package/dist/client/assets/deferred-collab-rBe4nuQ2.css +1 -0
- package/dist/client/assets/deferred-git-BHKtkFYi.css +1 -0
- package/dist/client/assets/deferred-preview-pe7Iwwx3.css +1 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-DywERe__.js → diagram-S7CK7UJ4-D7KaM9yj.js} +1 -1
- package/dist/client/assets/{diagram-UQ7AKVKN-CNYlXtu4.js → diagram-UQ7AKVKN-JevUZuYi.js} +1 -1
- package/dist/client/assets/{diagram-VSXAHHWV-0H1a61Bn.js → diagram-VSXAHHWV-B3-U-Q2E.js} +1 -1
- package/dist/client/assets/{diagram-VX7I27RA-CsJbsx5F.js → diagram-VX7I27RA-pSD4HMh1.js} +1 -1
- package/dist/client/assets/{diagram-Z3DM3KII-D0mLxEgI.js → diagram-Z3DM3KII-D8r1_CIb.js} +1 -1
- package/dist/client/assets/{direct-engine-DdrQKpgq-CtKfQzCt.js → direct-engine-DdrQKpgq-B5zIoeQw.js} +1 -1
- package/dist/client/assets/dist-B3HdUPsK.js +1 -0
- package/dist/client/assets/{dist-Tw-Fxpeb.js → dist-B7XMN9AT.js} +1 -1
- package/dist/client/assets/dist-BIRygGYH.js +1 -0
- package/dist/client/assets/dist-BPyOlNLY.js +2 -0
- package/dist/client/assets/{dist-D5wCC32z.js → dist-BR81yxMt.js} +1 -1
- package/dist/client/assets/{dist-TW8iFRyW.js → dist-B_B4XLmq.js} +1 -1
- package/dist/client/assets/dist-Bdy9ZRzd.js +9 -0
- package/dist/client/assets/{dist-netZOQtD.js → dist-Bfxzlnrf.js} +1 -1
- package/dist/client/assets/{dist-DzNmC81X.js → dist-Bx3QkS-3.js} +1 -1
- package/dist/client/assets/{dist-mj2Ht75J.js → dist-By7ieqAf.js} +1 -1
- package/dist/client/assets/dist-ByhQbe-x.js +1 -0
- package/dist/client/assets/{dist-CdmKGRGr.js → dist-BzFSJM0U.js} +1 -1
- package/dist/client/assets/dist-C5NkYKAa.js +1 -0
- package/dist/client/assets/{dist-D3fehAZ2.js → dist-CELhfKzh.js} +1 -1
- package/dist/client/assets/dist-CEirJSxk.js +1 -0
- package/dist/client/assets/dist-CO0-4CuV.js +39 -0
- package/dist/client/assets/dist-CRnJ0D9h.js +1 -0
- package/dist/client/assets/{dist-GvvCNBe4.js → dist-CbDyXgCo.js} +1 -1
- package/dist/client/assets/{dist-BeajGMhO.js → dist-CqXVyYoH.js} +1 -1
- package/dist/client/assets/{dist-LQ4kDCKz.js → dist-CrWzIWEE.js} +1 -1
- package/dist/client/assets/dist-CyNrloSI.js +1 -0
- package/dist/client/assets/dist-D60_kdpQ.js +1 -0
- package/dist/client/assets/{dist-DuH3ZrHo.js → dist-DCpIH3-_.js} +1 -1
- package/dist/client/assets/{dist-BPHLJ09L.js → dist-DJAMplZI.js} +2 -2
- package/dist/client/assets/{dist-DGEbEfw4.js → dist-DVXzbeDx.js} +1 -1
- package/dist/client/assets/{dist-C5NgpdG5.js → dist-Drv_wZYC.js} +1 -1
- package/dist/client/assets/{dist-DVy5woUy.js → dist-EWJYvBK1.js} +1 -1
- package/dist/client/assets/dist-Hdhj3L3t.js +1 -0
- package/dist/client/assets/{dist-DpYDHR9p.js → dist-gRRhmB-2.js} +3 -3
- package/dist/client/assets/dist-kWb2d1CH.js +1 -0
- package/dist/client/assets/dist-kiD2GIsD.js +13 -0
- package/dist/client/assets/{dist-JaU3aRlD.js → dist-l-56SowH.js} +1 -1
- package/dist/client/assets/{dist-BK9QvQrc.js → dist-nxQErAaK.js} +2 -2
- package/dist/client/assets/dist-sLzRQQk7.js +1 -0
- package/dist/client/assets/document-formatter-Qdiq9uJs.js +1 -0
- package/dist/client/assets/drawioEditor-CHf1vtdQ.js +9 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-HeTxHpCU.js → ebnfDiagram-PWID7BFC-UJ0Fz5ci.js} +1 -1
- package/dist/client/assets/editor-session-4Bn81iWm.js +14 -0
- package/dist/client/assets/el-GR-TYQHVGXW-Dx82YYAS.js +7 -0
- package/dist/client/assets/embedded-editor-base-jK221GC8.css +1 -0
- package/dist/client/assets/{embedpdf-DA4bA119-BPqZxwjc.js → embedpdf-DA4bA119-E8wZ11J2.js} +2 -3
- package/dist/client/assets/{embedpdf-BmE13ZZ0.js → embedpdf-LUXDBD3-.js} +1 -1
- package/dist/client/assets/{en-SJ2YIMFF-CJBL3nkq.js → en-2RFA324Y-BsuNJTcL.js} +1 -1
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CbrDdd5P.js → erDiagram-RLTQ6QDP-CWrH1UJ9.js} +1 -1
- package/dist/client/assets/es-ES-JEUOREKJ-Rx0NUQDl.js +12 -0
- package/dist/client/assets/eu-ES-SO5DEEAN-CDYm-BcK.js +8 -0
- package/dist/client/assets/excalidraw-element-link-iA6zo0_f.js +7 -0
- package/dist/client/assets/{excalidrawEditor-BbSbI80a.css → excalidrawEditor-DDE0n1Pk.css} +1 -1
- package/dist/client/assets/excalidrawEditor-WIuguTz7.js +9 -0
- package/dist/client/assets/export-page-AN-wI5p4.js +56 -0
- package/dist/client/assets/exportDocument-B7IagJhQ.css +1 -0
- package/dist/client/assets/exportDocument-B9xNKpQe.js +2 -0
- package/dist/client/assets/fa-IR-FIYUE2GQ-C865Nx3X.js +9 -0
- package/dist/client/assets/fi-FI-REAEF6HQ-BIpjJqIb.js +6 -0
- package/dist/client/assets/flowDiagram-HODETNUW-kb1lUSBo.js +1 -0
- package/dist/client/assets/fr-FR-SUCL7J6B-DGAKE8jH.js +12 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-BHgOYiZz.js → ganttDiagram-EL5Y4UJY-BBNzDfaV.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-Dl__X3Sk.js → gitGraphDiagram-WWUBYQGX-Csf0Dm_1.js} +1 -1
- package/dist/client/assets/gl-ES-KHCSOGVH-DWKh0CMu.js +6 -0
- package/dist/client/assets/he-IL-JYXVXV2Q-zqbcM-4g.js +9 -0
- package/dist/client/assets/hi-IN-BU52H3BO-CY8v6eG9.js +3 -0
- package/dist/client/assets/highlight-theme-CzNkO-IJ.js +1 -0
- package/dist/client/assets/hu-HU-OWADXDQ3-CEl6Udfh.js +3 -0
- package/dist/client/assets/id-ID-EOMR5R3I-CGQwUjoL.js +8 -0
- package/dist/client/assets/image-2QKV3NAF-BUbX0y5Y.js +1 -0
- package/dist/client/assets/index-BAmZnTFV.css +1 -0
- package/dist/client/assets/index-mWiw418b.js +1111 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-DBpoANC9.js → infoDiagram-27XIBGKW-Bzy6kCbb.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BMPC6hfp.js → ishikawaDiagram-5VMMS53U-CRy9vIS5.js} +1 -1
- package/dist/client/assets/it-IT-FC2VTM3L-KTijNcUe.js +12 -0
- package/dist/client/assets/ja-JP-JBNTKYP4-BflWlGhw.js +12 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-B1sApUmM.js → journeyDiagram-3NMN7TZE-D4ZR_s9J.js} +1 -1
- package/dist/client/assets/kaa-TC3VIB7V-B-xtZfy0.js +1 -0
- package/dist/client/assets/kab-KAB-UOUDSQKM-BmO0O4Y4.js +4 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-C9yP4td1.js → kanban-definition-UXKFOSKX-CIDTmu5g.js} +1 -1
- package/dist/client/assets/kk-KZ-P5H2X7YS-CSQFB8IN.js +1 -0
- package/dist/client/assets/{km-KH-PCWDKPHP-DSmy5shj.js → km-KH-IHMV2US7-BxrjuEzr.js} +4 -4
- package/dist/client/assets/ko-KR-ZTMANIDF-BnNRXd5J.js +5 -0
- package/dist/client/assets/ku-TR-GPJTRB5G-BZM7f2aT.js +6 -0
- package/dist/client/assets/{line-BFl3ujec.js → line-DSWLHgpx.js} +1 -1
- package/dist/client/assets/lobby-presence-Rdjnc0_0.js +1 -0
- package/dist/client/assets/lt-LT-V3XDOK3P-MVQBOHmF.js +3 -0
- package/dist/client/assets/lv-LV-DVQ3FADO-CrenwAhS.js +4 -0
- package/dist/client/assets/markdown-it-CocJWnjv.js +13 -0
- package/dist/client/assets/mermaid-parser.core-DrdLA3p0.js +3 -0
- package/dist/client/assets/mermaid.core-C_FK-7n4.js +1 -0
- package/dist/client/assets/{mermaid.core-BrY09czX.js → mermaid.core-D0cMM4Rl.js} +2 -3
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-BUQHcYbK.js → mindmap-definition-YA3MSWOX-DO8NB9VH.js} +1 -1
- package/dist/client/assets/mr-IN-VZ6HH5FE-B-PHPglH.js +9 -0
- package/dist/client/assets/my-MM-XYKWHRK6-Be5sYp5q.js +1 -0
- package/dist/client/assets/nb-NO-UNO2GGZJ-BvSKGdja.js +8 -0
- package/dist/client/assets/nl-NL-76EFHT4P-C2yNx1Cj.js +13 -0
- package/dist/client/assets/nn-NO-CFKD7ABE-4NsqlDRP.js +4 -0
- package/dist/client/assets/oc-FR-YBJTCJ3J-B4OTQsWW.js +4 -0
- package/dist/client/assets/pa-IN-SNOXSMRV-CKj_sOG7.js +4 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-Bi2Iml7Z.js → pegDiagram-XKGWAZYB-DS6Ab21R.js} +1 -1
- package/dist/client/assets/percentages-Q7USCRWZ-DWE6uvTs.js +1 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-_gYXnMoi.js → pieDiagram-E7YTZNPT-BbFe6Tgs.js} +1 -1
- package/dist/client/assets/pl-PL-BSY6YFZ3-CFuzA6L0.js +12 -0
- package/dist/client/assets/preload-helper-CtT0-S4g.js +1 -0
- package/dist/client/assets/preview-render-compiler-C_7J7eia.js +43 -0
- package/dist/client/assets/preview-render-compiler-DzJ1KR_M.js +1 -0
- package/dist/client/assets/preview-render-worker-1DoIDllV.js +59 -0
- package/dist/client/assets/prod-D5TxmmoB.js +1 -0
- package/dist/client/assets/prod-pbFU4TaM.js +145 -0
- package/dist/client/assets/pt-BR-CZDV62R3-CkPMtyNx.js +10 -0
- package/dist/client/assets/pt-PT-JO57XJJW-CBSnfGtF.js +12 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DwexhEhd.js → quadrantDiagram-AXDQQJYC-fJE7iAxt.js} +1 -1
- package/dist/client/assets/quick-switcher-De4PjZFC.css +1 -0
- package/dist/client/assets/quick-switcher-controller-CUajuy78.js +1 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-BVA5UbMu.js → railroadDiagram-O6MQD6OU-CUQKqbCK.js} +1 -1
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-C4cKwiIw.js → requirementDiagram-BXWQKSXE-Balm0WW8.js} +1 -1
- package/dist/client/assets/ro-RO-UZ5ICYYN-BOuntc_r.js +12 -0
- package/dist/client/assets/room-DX7lIfnu.js +1 -0
- package/dist/client/assets/ru-RU-AN7JPREC-D-ow3SNR.js +10 -0
- package/dist/client/assets/runtime-config-BFVdhnJu.js +1 -0
- package/dist/client/assets/runtime-paths-Cn0snt_9.js +1 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-B5HHkRT2.js → sankeyDiagram-P5KCCOFB-CcbMqrlQ.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BX6jqJFD.js → sequenceDiagram-WJ2MYXX4-BL1j3Sn-.js} +1 -1
- package/dist/client/assets/si-LK-7CBLD6QQ-c91EepX0.js +1 -0
- package/dist/client/assets/sk-SK-SWR6DKBI-D5vFMIL6.js +7 -0
- package/dist/client/assets/sl-SI-JRML4FIH-D53L_0S2.js +6 -0
- package/dist/client/assets/{stateDiagram-D77RDMKH-CmqxyRGx.js → stateDiagram-D77RDMKH-DNi924hh.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C62JEwak.js +1 -0
- package/dist/client/assets/sv-SE-4ZPKFFXF-DT-G7RCI.js +12 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-Bmgb9Zld.js → swimlanes-42K2YHIH-ColgjSH4.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-B9UZhEj4.js +8 -0
- package/dist/client/assets/ta-IN-V6NHHU6Z-D5jy7_AE.js +6 -0
- package/dist/client/assets/th-TH-P7CTMGDK-6sy0NO7K.js +1 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-BA-lVH6P.js → timeline-definition-24CTP7MA-7pch5JAr.js} +1 -1
- package/dist/client/assets/tr-TR-GUFYG22B-ClVaf8h1.js +4 -0
- package/dist/client/assets/uk-UA-K6SV5NFQ-BLTTtyNB.js +6 -0
- package/dist/client/assets/uz-UZ-TVKTZO2G-Bm02Eg3D.js +1 -0
- package/dist/client/assets/vault-api-client-QjZ_T03l.js +7 -0
- package/dist/client/assets/vault-utils-Bct69Xw2.js +1 -0
- package/dist/client/assets/{vennDiagram-4TSXK5OY-DNdUC_Xj.js → vennDiagram-4TSXK5OY-C5taziCX.js} +1 -1
- package/dist/client/assets/vi-VN-7FKFXJNO-CL3WPhmG.js +7 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-C2oY-YbF.js → wardleyDiagram-VM6X3IG4-BbSlUwuM.js} +1 -1
- package/dist/client/assets/{wiki-link-resolver-DFIwErjc.js → wiki-link-resolver-C2P_WmTV.js} +1 -1
- package/dist/client/assets/{worker-engine-m0rlHn8R-S8mpn_O0.js → worker-engine-m0rlHn8R-eSDcDGEI.js} +1 -1
- package/dist/client/assets/workspace-change-CVA9dVmy.js +1 -0
- package/dist/client/assets/workspace-sync-client-D4nblH_2.js +1 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-CoIR8CBX.js → xychartDiagram-S5SC5T6Z-D06X1arY.js} +1 -1
- package/dist/client/assets/yjs-B41tM6Sz.js +4 -0
- package/dist/client/assets/yjs-provider-reset-guard-R43MnLNc.js +1 -0
- package/dist/client/assets/zh-CN-AOKVLNNK-DGidDH2b.js +11 -0
- package/dist/client/assets/zh-HK-CDKPF5DC-CRcNR3rk.js +1 -0
- package/dist/client/assets/zh-TW-ZVGYESGW-C7Qji1y6.js +13 -0
- package/dist/client/drawio-editor.html +7 -8
- package/dist/client/excalidraw-editor.html +31 -33
- package/dist/client/export-document.html +5 -7
- package/dist/client/index.html +30 -26
- package/package.json +14 -20
- package/src/client/app/drawio-editor.html +1 -1
- package/src/client/app/excalidraw-editor.html +1 -1
- package/src/client/app/export-document.html +1 -1
- package/src/client/app/index.html +28 -4
- package/src/client/app/main-entry.js +1 -19
- package/src/client/application/app-shell/comments-feature.js +6 -0
- package/src/client/application/app-shell/ui-feature-shell.js +136 -58
- package/src/client/application/app-shell/ui-feature-tab-activity.js +8 -3
- package/src/client/application/app-shell-elements.js +5 -0
- package/src/client/application/highlight-theme.js +16 -0
- package/src/client/application/preview-render-compiler.js +43 -20
- package/src/client/application/preview-render-executor.js +0 -26
- package/src/client/application/preview-renderer.js +24 -7
- package/src/client/application/workspace-coordinator.js +20 -21
- package/src/client/bootstrap/collabmd-app-shell.js +71 -35
- package/src/client/bootstrap/lazy-collab-clients.js +90 -0
- package/src/client/domain/excalidraw-scene-reconcile.js +5 -2
- package/src/client/domain/hash-routes.js +5 -0
- package/src/client/domain/highlight-runtime.js +47 -0
- package/src/client/domain/lobby-chat.js +2 -0
- package/src/client/domain/runtime-paths.js +56 -7
- package/src/client/domain/vault-utils.js +11 -0
- package/src/client/excalidraw-editor.js +20 -4
- package/src/client/infrastructure/auth-client.js +1 -2
- package/src/client/infrastructure/browser-preferences-port.js +16 -0
- package/src/client/infrastructure/editor-view-adapter.js +43 -8
- package/src/client/infrastructure/excalidraw-room-client.js +9 -1
- package/src/client/infrastructure/hosted-api-client.js +60 -0
- package/src/client/infrastructure/lobby-presence.js +2 -2
- package/src/client/infrastructure/runtime-config.js +3 -1
- package/src/client/infrastructure/webmcp-tool-registry.js +16 -2
- package/src/client/presentation/comment-markdown-renderer.js +2 -14
- package/src/client/presentation/comment-overview-controller.js +1 -2
- package/src/client/presentation/comment-ui/comment-ui-shared.js +5 -2
- package/src/client/presentation/file-explorer-controller.js +3 -0
- package/src/client/presentation/file-explorer-view.js +272 -174
- package/src/client/presentation/git-panel-controller.js +1 -1
- package/src/client/presentation/hosted-workspace-gate-controller.js +180 -0
- package/src/client/presentation/layout-controller.js +10 -1
- package/src/client/presentation/team-settings-controller.js +228 -0
- package/src/client/styles/deferred-collab.css +5 -0
- package/src/client/styles/deferred-git.css +7 -0
- package/src/client/styles/deferred-preview.css +6 -0
- package/src/client/styles/features/diagram-preview.css +0 -15
- package/src/client/styles/features/outline.css +4 -2
- package/src/client/styles/features/preview-markdown.css +25 -11
- package/src/client/styles/features/team-settings.css +162 -0
- package/src/client/styles/foundation/tokens.css +2 -2
- package/src/client/styles/layout/editor-page.css +0 -13
- package/src/client/styles/layout/overlays.css +16 -0
- package/src/client/styles/layout/responsive.css +5 -5
- package/src/client/styles/layout/shell.css +20 -1
- package/src/client/styles/layout/sidebar.css +92 -3
- package/src/client/styles/style.css +3 -19
- package/src/domain/agent-tool-definitions.js +139 -63
- package/src/domain/collabmd-content-capabilities.js +4 -4
- package/src/domain/excalidraw-agent-scene.js +108 -6
- package/src/domain/excalidraw-agent-verification.js +95 -1
- package/src/domain/excalidraw-room-codec.js +12 -1
- package/src/domain/literal-text-search.js +13 -0
- package/src/server/application/agent-content-service.js +142 -74
- package/src/server/config/env.js +96 -5
- package/src/server/create-app-server.js +23 -153
- package/src/server/domain/hosted-workspace.js +10 -1
- package/src/server/domain/ripgrep-search-service.js +68 -21
- package/src/server/infrastructure/git/local-exclude.js +13 -1
- package/src/server/infrastructure/http/create-agent-api-handler.js +1 -1
- package/src/server/infrastructure/http/create-hosted-api-handler.js +5 -0
- package/src/server/infrastructure/http/create-request-handler.js +95 -26
- package/src/server/infrastructure/http/create-static-handler.js +3 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +15 -2
- package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +2 -1
- package/src/server/infrastructure/persistence/sidecar-store.js +12 -5
- package/src/server/infrastructure/persistence/vault-file-store.js +2 -3
- package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +48 -22
- package/src/server/shared/agent-tool-rate-limiter.js +7 -0
- package/src/server/startup/git-remote-bootstrap.js +56 -49
- package/src/server/vault-registry.js +251 -0
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-C-nmgL5g.js +0 -1
- package/dist/client/assets/ar-SA-PQUY64WN-xjXgbW6d.js +0 -10
- package/dist/client/assets/az-AZ-OXJXL76K-4JkO4Pca.js +0 -1
- package/dist/client/assets/base-CaIEJUF9.css +0 -1
- package/dist/client/assets/bg-BG-W2GKIJDF-DnkH_o81.js +0 -5
- package/dist/client/assets/bn-BD-TGL7M4PJ-CG4JkmtP.js +0 -3
- package/dist/client/assets/bn-IN-BKETKYEH-CG4JkmtP.js +0 -3
- package/dist/client/assets/ca-ES-LD5SCRVV-U6_TVMX9.js +0 -8
- package/dist/client/assets/channel-Fa4GS_-F.js +0 -1
- package/dist/client/assets/chunk-2E4U76K2-BPnTT-J3.js +0 -2
- package/dist/client/assets/chunk-7XWMRXBY-CfMzEq80.js +0 -1
- package/dist/client/assets/chunk-RM4UPSZO-DOWllDY8.js +0 -41
- package/dist/client/assets/chunk-TLUHSLCS-DTY5v0aj.js +0 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-BsQWoR3Q.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BsQWoR3Q.js +0 -1
- package/dist/client/assets/comment-thread-store-CX98zR6q.js +0 -1
- package/dist/client/assets/comment-threads-BnRwo5B9.js +0 -4
- package/dist/client/assets/cs-CZ-OFPU5DBV-BmFAIhqX.js +0 -7
- package/dist/client/assets/da-DK-FRDJFYWF-H387Jw8B.js +0 -2
- package/dist/client/assets/de-CH-ZG7H3QK3-C_groygo.js +0 -11
- package/dist/client/assets/de-DE-SIJYH4IH-C_groygo.js +0 -11
- package/dist/client/assets/dist--hk9I5HQ.js +0 -1
- package/dist/client/assets/dist-B1XEa-Zs.js +0 -1
- package/dist/client/assets/dist-BJ1bJs33.js +0 -1
- package/dist/client/assets/dist-Bd1JucQF.js +0 -1
- package/dist/client/assets/dist-ByrG2qBA.js +0 -1
- package/dist/client/assets/dist-C0G3AaXG.js +0 -1
- package/dist/client/assets/dist-CKS_-are.js +0 -1
- package/dist/client/assets/dist-D37Hyu3h.js +0 -9
- package/dist/client/assets/dist-Dl_tpDSr.js +0 -1
- package/dist/client/assets/dist-Dm4w5UId.js +0 -1
- package/dist/client/assets/dist-RKBTaQMb.js +0 -13
- package/dist/client/assets/dist-eBx8q6Sy.js +0 -1
- package/dist/client/assets/dist-jVU5Be5P.js +0 -1
- package/dist/client/assets/document-formatter-rDDjRfZ2.js +0 -2
- package/dist/client/assets/drawioEditor-JubEEha7.js +0 -9
- package/dist/client/assets/editor-session-Bk6oIvSr.js +0 -54
- package/dist/client/assets/el-GR-IEE2CGI2-BkT6YT54.js +0 -7
- package/dist/client/assets/embedded-editor-base-BlCgz6mw.css +0 -1
- package/dist/client/assets/es-Bfdp096f.js +0 -22
- package/dist/client/assets/es-ES-TVVPWKV5-CpPKJXTM.js +0 -12
- package/dist/client/assets/eu-ES-CGBMFQDT-Bu3N2493.js +0 -8
- package/dist/client/assets/excalidraw-element-link-YLIaTnVF.js +0 -7
- package/dist/client/assets/excalidrawEditor-dBMbRX_S.js +0 -9
- package/dist/client/assets/export-page-CRRQ2NEl.js +0 -57
- package/dist/client/assets/exportDocument-BlQRd9_m.js +0 -2
- package/dist/client/assets/exportDocument-CNSbjZwu.css +0 -1
- package/dist/client/assets/fa-IR-IE6XAPR4-BEvLCORD.js +0 -9
- package/dist/client/assets/fi-FI-P7TKNHRM-DI0q8iSX.js +0 -6
- package/dist/client/assets/file-icon-svg-Y_kpF957.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-D5Gy0wmg.js +0 -1
- package/dist/client/assets/fr-FR-QI2XZNT7-y8kXd8LA.js +0 -12
- package/dist/client/assets/gl-ES-TLYCNOZZ-Br-Fhff-.js +0 -6
- package/dist/client/assets/he-IL-ZX43XLGP-qKQq6V9X.js +0 -9
- package/dist/client/assets/hi-IN-UTYRMTUF-DOUcwrDO.js +0 -3
- package/dist/client/assets/hu-HU-AJOSEBW6-FqTyvHlD.js +0 -3
- package/dist/client/assets/id-ID-ETLTVG6C-CQqh3CLS.js +0 -8
- package/dist/client/assets/image-ZVKINSPA-DgzW5zAy.js +0 -1
- package/dist/client/assets/index-D3RER1SZ.js +0 -1023
- package/dist/client/assets/index-DREVKl_K.css +0 -1
- package/dist/client/assets/it-IT-B4B6TP6L-V-yK3SZz.js +0 -12
- package/dist/client/assets/ja-JP-IYKVURR5-BQKBXRpX.js +0 -12
- package/dist/client/assets/kaa-SE2BUIKX-CZ5kfwPg.js +0 -1
- package/dist/client/assets/kab-KAB-Y3GLKXLR-Do7GWfuN.js +0 -4
- package/dist/client/assets/kk-KZ-ABWUFVOH-BpqVciQz.js +0 -1
- package/dist/client/assets/ko-KR-7JQDXKGM-N42lep78.js +0 -5
- package/dist/client/assets/ku-TR-NAH2Q5B7-K8LLl9fk.js +0 -6
- package/dist/client/assets/lt-LT-VQFYRSNQ-BmOd0ALn.js +0 -3
- package/dist/client/assets/lv-LV-T62VSYUM-B22WdPhp.js +0 -4
- package/dist/client/assets/mermaid-parser.core-Bl0efOMt.js +0 -4
- package/dist/client/assets/mermaid.core-DfcNfOTv.js +0 -1
- package/dist/client/assets/modulepreload-polyfill-P2Xu9kJm.js +0 -1
- package/dist/client/assets/mr-IN-V4FHLCJE-XX069tpm.js +0 -9
- package/dist/client/assets/my-MM-E3SQ6E54-cst_-5SB.js +0 -1
- package/dist/client/assets/nb-NO-MLNOFN5H-Bu2URWko.js +0 -8
- package/dist/client/assets/nl-NL-D5L3ZV4M-BqrV0btt.js +0 -13
- package/dist/client/assets/nn-NO-NNHDGPKB-DK-xZaWM.js +0 -4
- package/dist/client/assets/oc-FR-DWCRF55G-BZ5Po5R6.js +0 -4
- package/dist/client/assets/pa-IN-3JSAY44M-BZQSjKrS.js +0 -4
- package/dist/client/assets/percentages-ETZPVQEE-DFxFqXgH.js +0 -1
- package/dist/client/assets/pl-PL-ACURYKP3-qcEOSfCk.js +0 -12
- package/dist/client/assets/preload-helper-HclGiUj8.js +0 -1
- package/dist/client/assets/preview-render-compiler-CfxJYldJ.js +0 -41
- package/dist/client/assets/preview-render-compiler-Cu8_i9iS.js +0 -1
- package/dist/client/assets/preview-render-worker-c4Yi93qW.js +0 -66
- package/dist/client/assets/prod-BiJL30sl.js +0 -1
- package/dist/client/assets/prod-qAk7rHa4.js +0 -177
- package/dist/client/assets/pt-BR-LOX7MLGD-DLueHSyZ.js +0 -10
- package/dist/client/assets/pt-PT-CZ2U2RFQ-BJ-GAEm6.js +0 -12
- package/dist/client/assets/quick-switcher-controller-BoIK_wuG.js +0 -1
- package/dist/client/assets/ro-RO-2HECL2X6-CJUvKAf0.js +0 -12
- package/dist/client/assets/ru-RU-HAYNXO46-BWSlvTrt.js +0 -10
- package/dist/client/assets/runtime-config-DcmnGcXU.js +0 -1
- package/dist/client/assets/si-LK-W5KNS4H6-DGGCsn7k.js +0 -1
- package/dist/client/assets/sk-SK-7K2CFGDV-CY4uTYgQ.js +0 -7
- package/dist/client/assets/sl-SI-OXV2QZWW-2-weqaBY.js +0 -6
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-zoLLQVyh.js +0 -1
- package/dist/client/assets/sv-SE-JTOBZRGL-9-IUtVkO.js +0 -12
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DS-KQN37.js +0 -8
- package/dist/client/assets/ta-IN-KFAVKXGT-gHO6Q_DH.js +0 -6
- package/dist/client/assets/th-TH-VDMSCPDL-BvJuw6PJ.js +0 -1
- package/dist/client/assets/tr-TR-CEZ6GX45-CG6UU3Su.js +0 -4
- package/dist/client/assets/uk-UA-Q3H3OXQC-CSuIg_DY.js +0 -6
- package/dist/client/assets/uz-UZ-NGCSWWPX-mom7rxSP.js +0 -1
- package/dist/client/assets/vault-api-client-iZLhMJKe.js +0 -6
- package/dist/client/assets/vi-VN-P3NDEVPS-BB0Fu9ck.js +0 -7
- package/dist/client/assets/yjs-provider-reset-guard-9ul1qF6k.js +0 -4
- package/dist/client/assets/zh-CN-SS3O57GA-Bj8wsiMe.js +0 -11
- package/dist/client/assets/zh-HK-LWJT3VCF-DOTquTCh.js +0 -1
- package/dist/client/assets/zh-TW-VJXC72RT-B48PRo-l.js +0 -13
- package/integrations/pi/index.ts +0 -94
- /package/dist/client/assets/{vault-api-client-C3mlS_4N.css → auth-gate-C3mlS_4N.css} +0 -0
- /package/dist/client/assets/{base-BYODPHdS.js → github.min-DBihDoic.js} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import"./chunk-SRAX5OIU-KFQikY-4.js";var e={paste:`Dán`,pasteAsPlaintext:`Dán kiểu văn bản thuần`,pasteCharts:`Dán biểu đồ`,chartType_bar:``,chartType_line:``,chartType_radar:``,chartType_plaintext:``,selectAll:`Chọn tất cả`,multiSelect:`Chọn thêm đối tượng này`,moveCanvas:`Di chuyển canvas`,cut:`Cắt`,copy:`Sao chép`,copyAsPng:`Sao chép vào bộ nhớ tạm dưới dạng PNG`,copyAsSvg:`Sao chép vào bộ nhớ tạm dưới dạng SVG`,copyText:`Sao chép vào bộ nhớ tạm dưới dạng chữ`,copySource:`Sao chép vào bộ nhớ tạm`,convertToCode:`Chuyển thành mã`,bringForward:`Đưa ra trước`,sendToBack:`Hạ xuống dưới`,bringToFront:`Đưa ra đầu tiên`,sendBackward:`Hạ xuống cuối`,delete:`Xóa`,copyStyles:`Sao chép định dạng`,pasteStyles:`Dán định dạng`,stroke:`Nét`,changeStroke:`Đổi màu nét vẽ`,background:`Nền`,changeBackground:`Thay đổi màu nền`,fill:`Đổ màu`,strokeWidth:`Độ dày nét`,strokeStyle:`Kiểu nét`,strokeStyle_solid:`Khối`,strokeStyle_dashed:`Gạch ngang`,strokeStyle_dotted:`Nhiều chấm`,sloppiness:`Hoa văn nét`,pressure:``,pressure_constant:``,pressure_variable:``,opacity:`Độ trong suốt`,textAlign:`Căn chỉnh văn bản`,edges:`Cạnh`,sharp:`Nhọn`,round:`Tròn`,arrowheads:`Đầu mũi tên`,arrowhead_none:`Không`,arrowhead_arrow:`Mũi tên`,arrowhead_bar:`Thanh`,arrowhead_circle:`Hình tròn`,arrowhead_circle_outline:`Hình tròn (đường viền)`,arrowhead_triangle:`Tam giác`,arrowhead_triangle_outline:`Tam giác (đường viền)`,arrowhead_diamond:`Kim cương`,arrowhead_diamond_outline:`Kim cương (đường viền)`,arrowhead_crowfoot_many:``,arrowhead_crowfoot_one:``,arrowhead_crowfoot_one_or_many:``,arrowhead_cardinality_one:``,arrowhead_cardinality_many:``,arrowhead_cardinality_one_or_many:``,arrowhead_cardinality_exactly_one:``,arrowhead_cardinality_zero_or_one:``,arrowhead_cardinality_zero_or_many:``,more_options:`Tùy chọn khác`,cardinality:``,arrowtypes:`Loại mũi tên`,arrowtype_sharp:`Mũi tên nhọn`,arrowtype_round:`Mũi tên cong`,arrowtype_elbowed:`Mũi tên gấp khúc`,fontSize:`Cỡ chữ`,fontFamily:`Phông chữ`,addWatermark:`Làm với Excalidraw"`,handDrawn:`Vẽ tay`,normal:`Bình thường`,code:`Mã`,small:`Nhỏ`,medium:`Vừa`,large:`Lớn`,veryLarge:`Rất lớn`,solid:`Đặc`,hachure:`Nét gạch gạch`,zigzag:`Zig-zag`,crossHatch:`Nét gạch chéo`,thin:`Mỏng`,bold:`In đậm`,left:`Trái`,center:`Giữa`,right:`Phải`,extraBold:`Nét siêu đậm`,architect:`Kiến trúc sư`,artist:`Nghệ sỹ`,cartoonist:`Hoạt hình`,fileTitle:`Tên tập tin`,colorPicker:`Chọn màu`,canvasColors:`Đã dùng trên canvas`,canvasBackground:`Nền canvas`,drawingCanvas:`Canvas vẽ`,clearCanvas:`Xóa khung vẽ`,layers:`Lớp`,actions:`Chức năng`,language:`Ngôn ngữ`,liveCollaboration:`Hợp tác trực tiếp...`,duplicateSelection:`Tạo bản sao`,untitled:`Không có tiêu đề`,name:`Tên`,yourName:`Tên của bạn`,madeWithExcalidraw:`Làm với Excalidraw`,group:`Gộp nhóm lại lựa chọn`,ungroup:`Tách nhóm lựa chọn`,collaborators:`Cộng tác viên`,toggleGrid:`Bật/tắt lưới`,addToLibrary:`Thêm vào thư viện`,removeFromLibrary:`Xóa khỏi thư viện`,libraryLoadingMessage:`Đang tải thư viện…`,libraries:`Xem thư viện`,loadingScene:`Đang tải về…`,loadScene:`Tải bản vẽ từ tệp`,align:`Căn chỉnh`,alignTop:`Căn trên`,alignBottom:`Căn dưới`,alignLeft:`Canh trái`,alignRight:`Canh phải`,centerVertically:`Giữa theo chiều dọc`,centerHorizontally:`Giữa theo chiều ngang`,distributeHorizontally:`Phân bố theo chiều ngang`,distributeVertically:`Phân bố theo chiều dọc`,flipHorizontal:`Lật ngang`,flipVertical:`Lật dọc`,viewMode:`Chế độ xem`,share:`Chia sẻ`,showStroke:`Hiển thị chọn màu`,showBackground:`Hiện thị chọn màu nền`,showFonts:`Hiển thị bộ chọn phông chữ`,toggleTheme:`Chuyển đổi giao diện sáng/tối`,theme:`Chủ đề`,personalLib:`Thư viện cá nhân`,excalidrawLib:`Thư viện Excalidraw`,decreaseFontSize:`Giảm cỡ chữ`,increaseFontSize:`Tăng cỡ chữ`,unbindText:`Bỏ liên kết văn bản`,bindText:`Gắn văn bản vào khung`,createContainerFromText:`Ngắt dòng văn bản trong khung`,link:{edit:`Sửa liên kết`,editEmbed:`Chỉnh sửa liên kết nhúng`,create:`Thêm liên kết`,label:`Liên kết`,labelEmbed:`Liên kết & nhúng`,empty:`Chưa đặt liên kết`,hint:`Nhập hoặc dán liên kết vào đây`,goToElement:`Đi tới phần tử đích`},lineEditor:{edit:`Điều chỉnh nét`,editArrow:``},polygon:{breakPolygon:``,convertToPolygon:``},elementLock:{lock:`Khoá`,unlock:`Mở khoá`,lockAll:`Khóa tất cả`,unlockAll:`Mở khóa tất cả`},statusPublished:`Đã đăng tải`,sidebarLock:`Giữ thanh bên luôn mở`,selectAllElementsInFrame:`Chọn tất cả phần tử trong khung`,removeAllElementsFromFrame:`Loại bỏ tất cả các phần tử trong khung`,eyeDropper:`Chọn màu từ vùng vẽ`,textToDiagram:`Văn bản sang sơ đồ`,prompt:`Lời nhắc`,followUs:`Theo dõi chúng tôi`,discordChat:`Trò chuyện Discord`,zoomToFitViewport:`Thu phóng vừa với khung nhìn`,zoomToFitSelection:`Thu phóng vừa với vùng chọn`,zoomToFit:`Thu phóng để hiển thị toàn bộ các phần tử`,installPWA:`Cài đặt Excalidraw trên máy (PWA)`,autoResize:`Bật tự động thay đổi kích thước văn bản`,imageCropping:`Cắt ảnh`,unCroppedDimension:`Kích thước gốc (chưa cắt)`,copyElementLink:`Sao chép liên kết tới đối tượng`,linkToElement:`Liên kết đến đối tượng`,wrapSelectionInFrame:`Đưa vùng chọn vào khung`,tab:``,shapeSwitch:``,preferences:``,preferences_toolLock:``,boxSelectionMode:``,boxSelectionContain:``,boxSelectionOverlap:``,arrowBinding:``,midpointSnapping:``},t={title:`Liên kết đến đối tượng`,desc:`Nhấp vào một hình trên vùng vẽ hoặc dán liên kết.`,notFound:`Không tìm thấy đối tượng liên kết trên vùng vẽ.`},n={noItems:`Chưa có món nào...`,hint_emptyLibrary:`Chọn một món trên canvas để thêm nó vào đây, hoặc cài đặt thư viện từ kho lưu trữ công cộng, ở bên dưới.`,hint_emptyPrivateLibrary:`Chọn một món trên canvas để thêm nó vào đây.`,search:{inputPlaceholder:``,heading:``,noResults:``,clearSearch:``}},r={title:`Tìm trên vùng vẽ`,noMatch:`Không có kết quả phù hợp...`,singleResult:`kết quả`,multipleResults:`các kết quả`,placeholder:`Tìm văn bản trên vùng vẽ`,frames:``,texts:``},i={clearReset:`Reset canvas`,exportJSON:`Xuất ra tập tin`,exportImage:`Xuất file ảnh...`,export:`Lưu vào...`,copyToClipboard:`Sao chép vào bộ nhớ tạm`,copyLink:`Sao chép liên kết`,save:`Lưu vào tập tin hiện tại`,saveAs:`Lưu thành`,load:`Mở`,getShareableLink:`Tạo liên kết để chia sẻ`,close:`Đóng`,selectLanguage:`Chọn ngôn ngữ`,scrollBackToContent:`Cuộn về nội dung chính`,zoomIn:`Phóng to`,zoomOut:`Thu nhỏ`,resetZoom:`Đặt lại thu phóng`,menu:`Bảng chọn`,done:`Xong`,edit:`Chỉnh sửa`,undo:`Hoàn tác`,redo:`Làm lại`,resetLibrary:`Cài lại thư viện`,createNewRoom:`Tạo phòng mới`,fullScreen:`Toàn màn hình`,darkMode:`Chế độ tối`,lightMode:`Chế độ sáng`,systemMode:`Chế độ hệ thống`,zenMode:`Chế độ zen`,objectsSnapMode:`Căn chỉnh theo đối tượng`,exitZenMode:`Thoát chể độ zen`,cancel:`Hủy`,saveLibNames:``,clear:`Làm sạch`,remove:`Xóa`,embed:`Bật/tắt chế độ nhúng`,publishLibrary:``,submit:`Gửi`,confirm:`Xác nhận`,embeddableInteractionButton:`Nhấn để tương tác`},a={clearReset:`Điều này sẽ dọn hết canvas. Bạn có chắc không?`,couldNotCreateShareableLink:`Không thể tạo đường dẫn chia sẻ.`,couldNotCreateShareableLinkTooBig:`Không thể tạo đường dẫn chia sẻ: bản vẽ quá lớn`,couldNotLoadInvalidFile:`Không thể load tập tin không hợp lệ`,importBackendFailed:`Nhập dữ liệu từ máy chủ thất bại.`,cannotExportEmptyCanvas:`Không thể xuất canvas trống.`,couldNotCopyToClipboard:`Không thể sao chép vào bộ nhớ tạm.`,decryptFailed:`Không thể giải mã dữ liệu.`,uploadedSecurly:`Việc tải lên đã được bảo mật với mã hóa đầu cuối, có nghĩa là máy chủ Excalidraw và bên thứ ba không thể đọc nội dung.`,loadSceneOverridePrompt:`Mở bản vẽ bên ngoài sẽ thay thế nội dung hiện tại của bạn. Bạn có muốn tiếp tục không?`,collabStopOverridePrompt:`Dừng phiên sẽ ghi đè lên bản vẽ được lưu trữ cục bộ trước đó của bạn. Bạn có chắc không?
|
|
2
|
-
|
|
3
|
-
(Nếu bạn muốn giữ bản vẽ cục bộ của mình, chỉ cần đóng tab trình duyệt.)`,errorAddingToLibrary:`Không thể thêm món vào thư viện`,errorRemovingFromLibrary:`Không thể xoá món khỏi thư viện`,confirmAddLibrary:`Hình {{numShapes}} sẽ được thêm vào thư viện. Bạn chắc chứ?`,imageDoesNotContainScene:`Hình ảnh này dường như không chứa bất kỳ dữ liệu cảnh nào. Bạn đã bật tính năng nhúng cảnh khi xuất chưa?`,cannotRestoreFromImage:`Không thể khôi phục bản vẽ từ tệp hình ảnh này.`,invalidSceneUrl:`Không thể nhập nội dung từ URL đã cung cấp. Đó có thể là do URL không đúng cú pháp hoặc không chứa dữ liệu JSON hợp lệ với Excalidraw.`,resetLibrary:`Hành động này sẽ xóa toàn bộ thư viện của bạn. Bạn chắc chắn chứ?`,removeItemsFromsLibrary:`Xoá {{count}} món từ thư viện?`,invalidEncryptionKey:`Khóa mã hóa phải có 22 ký tự. Hợp tác trực tiếp bị vô hiệu hóa.`,collabOfflineWarning:`Không có kết nối internet.
|
|
4
|
-
Thay đổi của bạn sẽ không được lưu!`,localStorageQuotaExceeded:``},o={unsupportedFileType:`Loại tập tin không được hỗ trợ.`,imageInsertError:`Không thể thêm ảnh. Hãy thử lại sau...`,fileTooBig:`Tệp tin quá lớn. Dung lượng tối đa cho phép là {{maxSize}}.`,svgImageInsertError:`Không thể thêm ảnh SVG. Mã SVG có vẻ sai.`,failedToFetchImage:`Có lỗi khi tải ảnh.`,cannotResolveCollabServer:`Không thể kết nối với máy chủ hợp tác. Hãy tải lại trang và thử lại.`,importLibraryError:`Không thể tải thư viện`,saveLibraryError:`Không thể lưu thư viện vào bộ nhớ. Hãy lưu thành tệp trên máy để đảm bảo bạn không mất các thay đổi.`,collabSaveFailed:`Không thể lưu vào cơ sở dữ liệu. Nếu vấn đề tiếp tục xảy ra, bạn nên lưu tệp vào máy để đảm bảo bạn không bị mất công việc.`,collabSaveFailed_sizeExceeded:`Không thể lưu vào cơ sở dữ liệu, canvas có vẻ quá lớn. Bạn nên lưu tệp cục bộ để đảm bảo bạn không bị mất công việc.`,imageToolNotSupported:`Hình ảnh đã được vô hiệu hóa.`,brave_measure_text_error:{line1:`Dường như bạn đang sử dụng trình duyệt Brave với cài đặt <bold>Aggressively Block Fingerprinting</bold> được bật.`,line2:`Điều này có thể gây ra lỗi cho các <bold>Text Elements</bold> trong bản vẽ của bạn.`,line3:`Chúng tôi khuyên bạn nên tắt tùy chọn này. Xem <link>hướng dẫn này</link> để biết cách thực hiện.`,line4:`Nếu tắt cài đặt này vẫn không sửa được lỗi hiển thị chữ, hãy tạo <issueLink>báo cáo lỗi</issueLink> trên GitHub hoặc liên hệ qua <discordLink>Discord</discordLink>.`},libraryElementTypeError:{embeddable:`Không thể lưu phần tử nhúng vào thư viện`,iframe:`Các phần tử IFrame không thể được thêm vào thư viện.`,image:`Thêm hình ảnh vào thư viện sẽ sớm được hỗ trợ!`},asyncPasteFailedOnRead:`Không thể dán (không thể đọc từ bộ nhớ tạm của hệ thống).`,asyncPasteFailedOnParse:`Không thể dán.`,copyToSystemClipboardFailed:`Không thể sao chép vào bộ nhớ tạm.`},s={selection:`Lựa chọn`,lasso:``,image:`Chèn ảnh`,rectangle:`Hình chữ nhật`,diamond:`Kim cương`,ellipse:`Hình elíp`,arrow:`Mũi tên`,line:`Đường kẻ`,freedraw:`Vẽ`,text:`Văn bản`,library:`Thư viện`,lock:`Giữ dụng cũ hiện tại sau khi vẽ`,penMode:`Chế độ bút vẽ - ngăn ngừa chạm nhầm`,link:`Thêm / Cập nhật liên kết cho hình đã chọn`,eraser:`Xóa`,frame:`Công cụ tạo khung`,magicframe:`Wireframe thành code`,embeddable:`Nhúng Web`,laser:`Con trỏ laser`,autoshape:``,hand:`Tay kéo`,extraTools:`Công cụ khác`,mermaidToExcalidraw:`Mermaid sang Excalidraw`,convertElementType:``},c={rectangle:`Hình chữ nhật`,diamond:`Kim cương`,ellipse:`Hình bầu dục`,arrow:`Mũi tên`,line:`Đường kẻ`,freedraw:`Vẽ tự do`,text:`Văn bản`,image:`Hình ảnh`,group:`Nhóm`,frame:`Khung hình`,magicframe:`Wireframe thành code`,embeddable:`Nhúng Web`,selection:`Lựa chọn`,iframe:`IFrame`},l={canvasActions:`Hành động canvas`,selectedShapeActions:`Các hành động cho hình dạng đã chọn`,shapes:`Các hình khối`},u={dismissSearch:``,canvasPanning:``,linearElement:`Ấn để bắt đầu nhiểm điểm vẽ, kéo để vẽ một đường thẳng`,arrowTool:``,arrowBindModifiers:``,freeDraw:`Ấn bà kéo, thả khi bạn xong`,text:`Mẹo: bạn có thể thêm văn bản tại bất cứ đâu bằng cách ấn hai lần bằng tool lựa chọn`,embeddable:`Nhấp và kéo để tạo nội dung nhúng từ website.`,autoshape:``,text_selected:``,text_editing:``,linearElementMulti:``,lockAngle:``,resize:``,resizeImage:``,rotate:`Giới hạn góc độ bằng cách giữ {{shortcut}} khi xoay`,toggleArrowhead:``,lineEditor_info:``,lineEditor_line_info:``,lineEditor_pointSelected:``,lineEditor_nothingSelected:``,publishLibrary:`Chia sẻ thư viện của bạn`,bindTextToElement:`Nhấn {{shortcut}} để thêm văn bản`,createFlowchart:``,deepBoxSelect:``,eraserRevert:``,firefox_clipboard_write:`Tính năng này có thể được bật bằng cách đặt cờ "dom.events.asyncClipboard.clipboardItem" thành "true". Để thay đổi cờ trình duyệt trong Firefox, hãy truy cập trang "about:config".`,disableSnapping:``,enterCropEditor:``,leaveCropEditor:``},d={cannotShowPreview:`Không thể xem trước`,canvasTooBig:`Canvas này có thể hơi lớn.`,canvasTooBigTip:`Mẹo: hãy thử di chuyển các elements nhất lại gần nhau hơn một chút.`},f={headingMain:`Đã xảy ra lỗi. Hãy thử <button>tải lại trang</button>.`,clearCanvasMessage:`Nếu không tải lại được, hãy thử <button>dọn canvas.</button>`,clearCanvasCaveat:` Điều này sẽ dẫn đến mất dữ liệu bạn đã làm `,trackedToSentry:``,openIssueMessage:``,sceneContent:`Nội dung bản vẽ:`},p={or:`Hoặc`},m={desc_intro:`Mời mọi người cùng cộng tác trong bản vẽ của bạn.`,desc_privacy:`Đừng lo, phiên hoạt động đã được mã hóa đầu cuối, và hoàn toàn riêng tư. Ngay cả máy chủ của chúng tôi cũng không thể thấy những gì bạn vẽ.`,button_startSession:`Bắt đầu phiên`,button_stopSession:`Kết thúc phiên`,desc_inProgressIntro:`Phiên làm việc trực tiếp hiện đang diễn ra.`,desc_shareLink:`Chia sẻ liên kết này với người bạn muốn cộng tác cùng:`,desc_exitSession:`Dừng phiên sẽ đưa bạn ra khỏi phòng, nhưng bạn vẫn có thể làm việc tiếp trên máy. Những người khác sẽ không bị ảnh hưởng và vẫn cộng tác trên bản của họ.`,shareTitle:`Vào phiên làm việc chung trên Excalidraw`},h={title:`Lỗi`},g={title:``,defaultMessage:``},_={disk_title:`Lưu về máy`,disk_details:``,disk_button:`Lưu vào tệp tin`,link_title:`Liên kết có thể chia sẻ`,link_details:`Tạo liên kết chỉ xem`,link_button:`Tạo liên kết`,excalidrawplus_description:`Lưu bản vẽ vào không gian làm việc Excalidraw+ của bạn.`,excalidrawplus_button:`Xuất`,excalidrawplus_exportError:`Hiện tại không thể xuất sang Excalidraw+...`},v={blog:`Đọc blog của chúng tôi`,click:`Nhấp`,deepSelect:``,deepBoxSelect:``,createFlowchart:``,navigateFlowchart:``,curvedArrow:`Mũi tên cong`,curvedLine:`Đường cong`,documentation:`Tài liệu`,doubleClick:`Nhấp đúp`,drag:`kéo`,editor:`Trình chỉnh sửa`,editLineArrowPoints:`Chỉnh sửa điểm của đường/mũi tên`,editText:`Chỉnh sửa văn bản / thêm nhãn`,github:`Phát hiện lỗi? Gửi phản hồi`,howto:`Làm theo hướng dẫn của chúng tôi`,or:`hoặc`,preventBinding:`Ngăn mũi tên tự gắn`,tools:`Công cụ`,shortcuts:`Phím tắt bàn phím`,textFinish:`Hoàn tất chỉnh sửa (trình soạn thảo văn bản)`,textNewLine:``,title:`Trợ giúp`,view:`Xem`,zoomToFit:``,zoomToSelection:``,toggleElementLock:`Khóa/mở khóa vùng lựa chọn`,movePageUpDown:`Chuyển trang lên/xuống`,movePageLeftRight:`Chuyển trang trái/phải`,cropStart:`Cắt ảnh`,cropFinish:``},y={title:`Dọn canvas`},b={title:``,itemName:`Tên món`,authorName:`Tên tác giả`,githubUsername:`Tên tài khoản Github`,twitterUsername:`Tên tài khoản Twitter`,libraryName:`Tên thư viện`,libraryDesc:`Mô tả thư viện`,website:`Website`,placeholder:{authorName:`Tên của bạn hoặc tên tài khoản`,libraryName:`Tên thư viện của bạn`,libraryDesc:`Mô tả thư viện của bạn để mọi người có thể hiểu được cách dùng của nó`,githubHandle:``,twitterHandle:`Tên Twitter (không bắt buộc) để chúng tôi ghi nhận bạn khi chia sẻ trên Twitter.`,website:`Đường dẫn tới trang web cá nhân của bạn hoặc tới đâu đó (tùy chọn)`},errors:{required:`Bắt buộc`,website:`Nhập đường dẫn hợp lệ`},noteDescription:`Chia sẻ thư viện của bạn vào <link>kho thư viện công khai</link> để mọi người có thể dùng trong bản vẽ của họ.`,noteGuidelines:`Thư viện cần được phê duyệt thủ công trước. Vui lòng đọc <link>hướng dẫn</link> trước khi gửi. Bạn sẽ cần tài khoản GitHub để trao đổi và chỉnh sửa khi được yêu cầu, nhưng điều này không bắt buộc.`,noteLicense:`Bằng việc gửi, bạn đồng ý rằng thư viện sẽ được phát hành theo <link>Giấy phép MIT</link>, nghĩa là bất kỳ ai cũng có thể sử dụng mà không bị hạn chế.`,noteItems:`Từng món trong thư viện phải có tên riêng để có thể lọc. Các món thư viện sau đây sẽ thêm:`,atleastOneLibItem:`Vui lòng chọn ít nhất một món thư viện để bắt đầu`,republishWarning:`Lưu ý: một số món đã chọn được đánh dấu là đã xuất bản/đã gửi. Bạn chỉ nên gửi lại các món khi cập nhật thư viện hiện có hoặc gửi.`},x={title:`Thư viện đã được gửi`,content:`Cảm ơn {{authorName}}! Thư viện của bạn đã được gửi để duyệt. Bạn có thể xem tiến trình <link>tại đây</link>.`},S={resetLibrary:`Cài lại thư viện`,removeItemsFromLib:`Xóa món đã chọn khỏi thư viện`},C={header:`Xuất thành hình ảnh`,label:{withBackground:`Nền`,onlySelected:`Chỉ phần tử đã lựa chọn`,darkMode:`Chế độ tối`,embedScene:``,scale:`Thu phóng`,padding:`Phần đệm`},tooltip:{embedScene:`Dữ liệu của bối cảnh sẽ được lưu dưới định dạng PNG/SVG vậy nên bối cảnh có thể khôi phục lại từ nó.
|
|
5
|
-
Sẽ tăng kích thước của tệp được lưu.`},title:{exportToPng:``,exportToSvg:``,copyPngToClipboard:`Sao chép PNG vào bộ nhớ`},button:{exportToPng:`PNG`,exportToSvg:`SVG`,copyPngToClipboard:`Sao chép vào bộ nhớ tạm`}},w={tooltip:`Bản vẽ của bạn được bảo mật bằng mã hóa đầu cuối, vì vậy máy chủ Excalidraw sẽ không thể xem chúng.`,link:`Bài blog về mã hóa đầu cuối trong Excalidraw`},T={angle:`Góc`,shapes:``,height:`Chiều cao`,scene:`Bối cảnh`,selected:`Đã chọn`,storage:`Bộ nhớ`,fullTitle:``,title:`Thuộc tính`,generalStats:`Chung`,elementProperties:``,total:`Tổng cộng`,version:`Phiên bản`,versionCopy:`Nhấn để sao chép`,versionNotAvailable:`Phiên bản không khả dụng`,width:`Chiều rộng`},E={addedToLibrary:`Đã thêm vào Thư viện`,copyStyles:`Đã sao chép định dạng.`,copyToClipboard:`Đã sao chép vào bộ nhớ tạm.`,copyToClipboardAsPng:`Đã sao chép {{exportSelection}} sang bộ nhớ tạm dưới định dạng PNG
|
|
6
|
-
({{exportColorScheme}})`,copyToClipboardAsSvg:`Đã sao chép {{exportSelection}} sang bộ nhớ tạm dưới định dạng SVG
|
|
7
|
-
({{exportColorScheme}})`,fileSaved:`Đã lưu tập tin`,fileSavedToFilename:``,canvas:``,selection:`lựa chọn`,pasteAsSingleElement:`Sử dụng {{shortcut}} để dán như một phần tử riêng lẻ hoặc dán vào một bộ soạn thảo văn bản có sẵn`,unableToEmbed:`Nhúng liên kết này hiện không được phép. Đưa ra vấn đề trên GitHub để yêu cầu đưa liên kết này vào danh sách được phép`,unrecognizedLinkFormat:`Liên kết bạn nhúng không khớp với định dạng mong đợi. Vui lòng thử dán liên kết 'embed' do trang nguồn cung cấp`,elementLinkCopied:`Đã sao chép liên kết vào bộ nhớ tạm`},D={transparent:`Độ trong suốt`,black:`Màu đen`,white:``,red:``,pink:``,grape:``,violet:``,gray:``,blue:``,cyan:``,teal:`Màu xanh lục`,green:`Màu xanh lá`,yellow:`Màu vàng`,orange:`Màu cam`,bronze:``},O={app:{center_heading:``,center_heading_line2:``,center_heading_line3:``,center_heading_plus:``,menuHint:``},defaults:{menuHint:``,center_heading:``,toolbarHint:``,helpHint:``}},k={color:``,mostUsedCustomColors:``,colors:``,shades:``,hexCode:``,noShades:``,invalidColor:``,invalidHexLength:``},A={action:{exportToImage:{title:``,button:``,description:``},saveToDisk:{title:``,button:``,description:``},excalidrawPlus:{title:``,button:``,description:``}},modal:{loadFromFile:{title:``,button:``,description:``},shareableLink:{title:``,button:``,description:``}}},j={title:``,button:``,description:``,syntax:``,preview:``,label:``,inputPlaceholder:``,autoFixAvailable:``},M={error:``},N={inputPlaceholder:``,inputPlaceholderWithMessages:``,generating:``,rateLimitRemaining:``,role:{user:``,assistant:``,system:``},aiBeta:``,label:``,menu:``,newChat:``,deleteChat:``,deleteMessage:``,viewAsMermaid:``,placeholder:{title:``,description:``,hint:``},preview:``,insert:``,retry:``,errors:{promptTooShort:``,promptTooLong:``,generationFailed:``,invalidDiagram:``,fixInMermaid:``,aiRepair:``,requestAborted:``,requestFailed:``,mermaidParseError:``},rateLimit:{messageLimit:``,generalRateLimit:``,messageLimitInputPlaceholder:``},upsellBtnLabel:``},P={placeholder:``},F={badge:{old:``},sceneFonts:``,availableFonts:``,empty:``},I={empty:``,hint:{text:``,followStatus:``,inCall:``,micMuted:``,isSpeaking:``}},L={title:``,shortcuts:{select:``,confirm:``,close:``},recents:``,search:{placeholder:``,noMatch:``},itemNotAvailable:``,shortcutHint:``},R={ctrl:``,option:``,cmd:``,alt:``,escape:``,enter:``,shift:``,spacebar:``,delete:``,mmb:``},z={labels:e,elementLink:t,library:n,search:r,buttons:i,alerts:a,errors:o,toolBar:s,element:c,headings:l,hints:u,canvasError:d,errorSplash:f,shareDialog:p,roomDialog:m,errorDialog:h,progressDialog:g,exportDialog:_,helpDialog:v,clearCanvasDialog:y,publishDialog:b,publishSuccessDialog:x,confirmDialog:S,imageExportDialog:C,encrypted:w,stats:T,toast:E,colors:D,welcomeScreen:O,colorPicker:k,overwriteConfirm:A,mermaid:j,ttd:M,chat:N,quickSearch:P,fontList:F,userList:I,commandPalette:L,keys:R};export{a as alerts,i as buttons,d as canvasError,N as chat,y as clearCanvasDialog,k as colorPicker,D as colors,L as commandPalette,S as confirmDialog,z as default,c as element,t as elementLink,w as encrypted,h as errorDialog,f as errorSplash,o as errors,_ as exportDialog,F as fontList,l as headings,v as helpDialog,u as hints,C as imageExportDialog,R as keys,e as labels,n as library,j as mermaid,A as overwriteConfirm,g as progressDialog,b as publishDialog,x as publishSuccessDialog,P as quickSearch,m as roomDialog,r as search,p as shareDialog,T as stats,E as toast,s as toolBar,M as ttd,I as userList,O as welcomeScreen};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var e=()=>new Map,t=t=>{let n=e();return t.forEach((e,t)=>{n.set(t,e)}),n},n=(e,t,n)=>{let r=e.get(t);return r===void 0&&e.set(t,r=n()),r},r=(e,t)=>{let n=[];for(let[r,i]of e)n.push(t(i,r));return n},i=(e,t)=>{for(let[n,r]of e)if(t(r,n))return!0;return!1},a=()=>new Set,o=e=>e[e.length-1],s=(e,t)=>{for(let n=0;n<t.length;n++)e.push(t[n])},c=Array.from,l=(e,t)=>{for(let n=0;n<e.length;n++)if(!t(e[n],n,e))return!1;return!0},u=(e,t)=>{for(let n=0;n<e.length;n++)if(t(e[n],n,e))return!0;return!1},d=(e,t)=>{let n=Array(e);for(let r=0;r<e;r++)n[r]=t(r,n);return n},f=Array.isArray,p=class{constructor(){this._observers=e()}on(e,t){return n(this._observers,e,a).add(t),t}once(e,t){let n=(...r)=>{this.off(e,n),t(...r)};this.on(e,n)}off(e,t){let n=this._observers.get(e);n!==void 0&&(n.delete(t),n.size===0&&this._observers.delete(e))}emit(t,n){return c((this._observers.get(t)||e()).values()).forEach(e=>e(...n))}destroy(){this._observers=e()}},ee=class{constructor(){this._observers=e()}on(e,t){n(this._observers,e,a).add(t)}once(e,t){let n=(...r)=>{this.off(e,n),t(...r)};this.on(e,n)}off(e,t){let n=this._observers.get(e);n!==void 0&&(n.delete(t),n.size===0&&this._observers.delete(e))}emit(t,n){return c((this._observers.get(t)||e()).values()).forEach(e=>e(...n))}destroy(){this._observers=e()}},m=Math.floor,te=Math.abs,ne=(e,t)=>e<t?e:t,h=(e,t)=>e>t?e:t;Number.isNaN;var re=Math.pow,ie=e=>e===0?1/e<0:e<0,ae=2**53-1,oe=-(2**53-1),se=Number.isInteger||(e=>typeof e==`number`&&isFinite(e)&&m(e)===e);Number.isNaN,Number.parseInt;var ce=String.fromCharCode;String.fromCodePoint,ce(65535);var le=e=>e.toLowerCase(),ue=/^\s*/g,de=e=>e.replace(ue,``),fe=/([A-Z])/g,pe=(e,t)=>de(e.replace(fe,e=>`${t}${le(e)}`)),me=e=>{let t=unescape(encodeURIComponent(e)),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.codePointAt(e);return r},he=typeof TextEncoder<`u`?new TextEncoder:null,ge=he?e=>he.encode(e):me,_e=typeof TextDecoder>`u`?null:new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});_e&&_e.decode(new Uint8Array).length===1&&(_e=null);var ve=(e,t)=>d(t,()=>e).join(``),ye=class{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}},g=()=>new ye,be=e=>{let t=e.cpos;for(let n=0;n<e.bufs.length;n++)t+=e.bufs[n].length;return t},_=e=>{let t=new Uint8Array(be(e)),n=0;for(let r=0;r<e.bufs.length;r++){let i=e.bufs[r];t.set(i,n),n+=i.length}return t.set(new Uint8Array(e.cbuf.buffer,0,e.cpos),n),t},xe=(e,t)=>{let n=e.cbuf.length;n-e.cpos<t&&(e.bufs.push(new Uint8Array(e.cbuf.buffer,0,e.cpos)),e.cbuf=new Uint8Array(h(n,t)*2),e.cpos=0)},v=(e,t)=>{let n=e.cbuf.length;e.cpos===n&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(n*2),e.cpos=0),e.cbuf[e.cpos++]=t},Se=v,y=(e,t)=>{for(;t>127;)v(e,128|127&t),t=m(t/128);v(e,127&t)},Ce=(e,t)=>{let n=ie(t);for(n&&(t=-t),v(e,(t>63?128:0)|(n?64:0)|63&t),t=m(t/64);t>0;)v(e,(t>127?128:0)|127&t),t=m(t/128)},we=new Uint8Array(3e4),Te=we.length/3,b=he&&he.encodeInto?(e,t)=>{if(t.length<Te){let n=he.encodeInto(t,we).written||0;y(e,n);for(let t=0;t<n;t++)v(e,we[t])}else x(e,ge(t))}:(e,t)=>{let n=unescape(encodeURIComponent(t)),r=n.length;y(e,r);for(let t=0;t<r;t++)v(e,n.codePointAt(t))},Ee=(e,t)=>{let n=e.cbuf.length,r=e.cpos,i=ne(n-r,t.length),a=t.length-i;e.cbuf.set(t.subarray(0,i),r),e.cpos+=i,a>0&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(h(n*2,a)),e.cbuf.set(t.subarray(i)),e.cpos=a)},x=(e,t)=>{y(e,t.byteLength),Ee(e,t)},De=(e,t)=>{xe(e,t);let n=new DataView(e.cbuf.buffer,e.cpos,t);return e.cpos+=t,n},Oe=(e,t)=>De(e,4).setFloat32(0,t,!1),ke=(e,t)=>De(e,8).setFloat64(0,t,!1),Ae=(e,t)=>De(e,8).setBigInt64(0,t,!1),je=new DataView(new ArrayBuffer(4)),Me=e=>(je.setFloat32(0,e),je.getFloat32(0)===e),Ne=(e,t)=>{switch(typeof t){case`string`:v(e,119),b(e,t);break;case`number`:se(t)&&te(t)<=2147483647?(v(e,125),Ce(e,t)):Me(t)?(v(e,124),Oe(e,t)):(v(e,123),ke(e,t));break;case`bigint`:v(e,122),Ae(e,t);break;case`object`:if(t===null)v(e,126);else if(f(t)){v(e,117),y(e,t.length);for(let n=0;n<t.length;n++)Ne(e,t[n])}else if(t instanceof Uint8Array)v(e,116),x(e,t);else{v(e,118);let n=Object.keys(t);y(e,n.length);for(let r=0;r<n.length;r++){let i=n[r];b(e,i),Ne(e,t[i])}}break;case`boolean`:v(e,t?120:121);break;default:v(e,127)}},Pe=class extends ye{constructor(e){super(),this.w=e,this.s=null,this.count=0}write(e){this.s===e?this.count++:(this.count>0&&y(this,this.count-1),this.count=1,this.w(this,e),this.s=e)}},Fe=e=>{e.count>0&&(Ce(e.encoder,e.count===1?e.s:-e.s),e.count>1&&y(e.encoder,e.count-2))},Ie=class{constructor(){this.encoder=new ye,this.s=0,this.count=0}write(e){this.s===e?this.count++:(Fe(this),this.count=1,this.s=e)}toUint8Array(){return Fe(this),_(this.encoder)}},Le=e=>{if(e.count>0){let t=e.diff*2+(e.count===1?0:1);Ce(e.encoder,t),e.count>1&&y(e.encoder,e.count-2)}},Re=class{constructor(){this.encoder=new ye,this.s=0,this.count=0,this.diff=0}write(e){this.diff===e-this.s?(this.s=e,this.count++):(Le(this),this.count=1,this.diff=e-this.s,this.s=e)}toUint8Array(){return Le(this),_(this.encoder)}},ze=class{constructor(){this.sarr=[],this.s=``,this.lensE=new Ie}write(e){this.s+=e,this.s.length>19&&(this.sarr.push(this.s),this.s=``),this.lensE.write(e.length)}toUint8Array(){let e=new ye;return this.sarr.push(this.s),this.s=``,b(e,this.sarr.join(``)),Ee(e,this.lensE.toUint8Array()),_(e)}},S=e=>Error(e),C=()=>{throw S(`Method unimplemented`)},w=()=>{throw S(`Unexpected case`)},Be=S(`Unexpected end of array`),Ve=S(`Integer out of Range`),He=class{constructor(e){this.arr=e,this.pos=0}},T=e=>new He(e),Ue=e=>e.pos!==e.arr.length,We=(e,t)=>{let n=new Uint8Array(e.arr.buffer,e.pos+e.arr.byteOffset,t);return e.pos+=t,n},E=e=>We(e,D(e)),Ge=e=>e.arr[e.pos++],D=e=>{let t=0,n=1,r=e.arr.length;for(;e.pos<r;){let r=e.arr[e.pos++];if(t+=(r&127)*n,n*=128,r<128)return t;if(t>ae)throw Ve}throw Be},Ke=e=>{let t=e.arr[e.pos++],n=t&63,r=64,i=(t&64)>0?-1:1;if(!(t&128))return i*n;let a=e.arr.length;for(;e.pos<a;){if(t=e.arr[e.pos++],n+=(t&127)*r,r*=128,t<128)return i*n;if(n>ae)throw Ve}throw Be},O=_e?e=>_e.decode(E(e)):e=>{let t=D(e);if(t===0)return``;{let n=String.fromCodePoint(Ge(e));if(--t<100)for(;t--;)n+=String.fromCodePoint(Ge(e));else for(;t>0;){let r=t<1e4?t:1e4,i=e.arr.subarray(e.pos,e.pos+r);e.pos+=r,n+=String.fromCodePoint.apply(null,i),t-=r}return decodeURIComponent(escape(n))}},qe=(e,t)=>{let n=new DataView(e.arr.buffer,e.arr.byteOffset+e.pos,t);return e.pos+=t,n},Je=[e=>void 0,e=>null,Ke,e=>qe(e,4).getFloat32(0,!1),e=>qe(e,8).getFloat64(0,!1),e=>qe(e,8).getBigInt64(0,!1),e=>!1,e=>!0,O,e=>{let t=D(e),n={};for(let r=0;r<t;r++){let t=O(e);n[t]=Ye(e)}return n},e=>{let t=D(e),n=[];for(let r=0;r<t;r++)n.push(Ye(e));return n},E],Ye=e=>Je[127-Ge(e)](e),Xe=class extends He{constructor(e,t){super(e),this.reader=t,this.s=null,this.count=0}read(){return this.count===0&&(this.s=this.reader(this),this.count=Ue(this)?D(this)+1:-1),this.count--,this.s}},Ze=class extends He{constructor(e){super(e),this.s=0,this.count=0}read(){if(this.count===0){this.s=Ke(this);let e=ie(this.s);this.count=1,e&&(this.s=-this.s,this.count=D(this)+2)}return this.count--,this.s}},Qe=class extends He{constructor(e){super(e),this.s=0,this.count=0,this.diff=0}read(){if(this.count===0){let e=Ke(this),t=e&1;this.diff=m(e/2),this.count=1,t&&(this.count=D(this)+2)}return this.s+=this.diff,this.count--,this.s}},$e=class{constructor(e){this.decoder=new Ze(e),this.str=O(this.decoder),this.spos=0}read(){let e=this.spos+this.decoder.read(),t=this.str.slice(this.spos,e);return this.spos=e,t}};crypto.subtle;var et=crypto.getRandomValues.bind(crypto),tt=()=>et(new Uint32Array(1))[0],nt=`10000000-1000-4000-8000-100000000000`,rt=()=>nt.replace(/[018]/g,e=>(e^tt()&15>>e/4).toString(16)),k=Date.now,it=e=>new Promise(e);Promise.all.bind(Promise);var at=e=>e===void 0?null:e,ot=new class{constructor(){this.map=new Map}setItem(e,t){this.map.set(e,t)}getItem(e){return this.map.get(e)}},st=!0;try{typeof localStorage<`u`&&localStorage&&(ot=localStorage,st=!1)}catch{}var ct=ot,lt=e=>st||addEventListener(`storage`,e),ut=e=>st||removeEventListener(`storage`,e),dt=Symbol(`Equality`),ft=(e,t)=>e===t||!!e?.[dt]?.(t)||!1,pt=e=>typeof e==`object`,mt=Object.assign,ht=Object.keys,gt=(e,t)=>{for(let n in e)t(e[n],n)},_t=(e,t)=>{let n=[];for(let r in e)n.push(t(e[r],r));return n},vt=e=>ht(e).length,yt=e=>{for(let t in e)return!1;return!0},bt=(e,t)=>{for(let n in e)if(!t(e[n],n))return!1;return!0},xt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),St=(e,t)=>e===t||vt(e)===vt(t)&&bt(e,(e,n)=>(e!==void 0||xt(t,n))&&ft(t[n],e)),Ct=Object.freeze,wt=e=>{for(let t in e){let n=e[t];(typeof n==`object`||typeof n==`function`)&&wt(e[t])}return Ct(e)},Tt=(e,t,n=0)=>{try{for(;n<e.length;n++)e[n](...t)}finally{n<e.length&&Tt(e,t,n+1)}},Et=e=>e,Dt=(e,t)=>{if(e===t)return!0;if(e==null||t==null||e.constructor!==t.constructor&&(e.constructor||Object)!==(t.constructor||Object))return!1;if(e[dt]!=null)return e[dt](t);switch(e.constructor){case ArrayBuffer:e=new Uint8Array(e),t=new Uint8Array(t);case Uint8Array:if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;break;case Set:if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;break;case Map:if(e.size!==t.size)return!1;for(let n of e.keys())if(!t.has(n)||!Dt(e.get(n),t.get(n)))return!1;break;case void 0:case Object:if(vt(e)!==vt(t))return!1;for(let n in e)if(!xt(e,n)||!Dt(e[n],t[n]))return!1;break;case Array:if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!Dt(e[n],t[n]))return!1;break;default:return!1}return!0},Ot=(e,t)=>t.includes(e),A=typeof process<`u`&&process.release&&/node|io\.js/.test(process.release.name)&&Object.prototype.toString.call(typeof process<`u`?process:0)===`[object process]`,kt=typeof window<`u`&&typeof document<`u`&&!A;typeof navigator<`u`&&/Mac/.test(navigator.platform);var j,At=[],jt=()=>{if(j===void 0){if(A){j=e();let t=process.argv,n=null;for(let e=0;e<t.length;e++){let r=t[e];r[0]===`-`?(n!==null&&j.set(n,``),n=r):n===null?At.push(r):(j.set(n,r),n=null)}n!==null&&j.set(n,``)}else typeof location==`object`?(j=e(),(location.search||`?`).slice(1).split(`&`).forEach(e=>{if(e.length!==0){let[t,n]=e.split(`=`);j.set(`--${pe(t,`-`)}`,n),j.set(`-${pe(t,`-`)}`,n)}})):j=e()}return j},Mt=e=>jt().has(e),Nt=e=>at(A?{}[e.toUpperCase().replaceAll(`-`,`_`)]:ct.getItem(e)),Pt=e=>Mt(`--`+e)||Nt(e)!==null,Ft=Pt(`production`),It=A&&Ot({}.FORCE_COLOR,[`true`,`1`,`2`])||!Mt(`--no-colors`)&&!Pt(`no-color`)&&(!A||process.stdout.isTTY)&&(!A||Mt(`--color`)||Nt(`COLORTERM`)!==null||(Nt(`TERM`)||``).includes(`color`)),Lt=e=>new Uint8Array(e),Rt=(e,t,n)=>new Uint8Array(e,t,n),zt=e=>new Uint8Array(e),Bt=e=>{let t=``;for(let n=0;n<e.byteLength;n++)t+=ce(e[n]);return btoa(t)},Vt=e=>Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString(`base64`),Ht=e=>{let t=atob(e),n=Lt(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n},Ut=e=>{let t=Buffer.from(e,`base64`);return Rt(t.buffer,t.byteOffset,t.byteLength)},Wt=kt?Bt:Vt,Gt=kt?Ht:Ut,Kt=e=>{let t=Lt(e.byteLength);return t.set(e),t},qt=class{constructor(e,t){this.left=e,this.right=t}},M=(e,t)=>new qt(e,t),Jt=(e,t)=>e.forEach(e=>t(e.left,e.right)),Yt=e=>e.next()>=.5,Xt=(e,t,n)=>m(e.next()*(n+1-t)+t),Zt=(e,t,n)=>m(e.next()*(n+1-t)+t),Qt=(e,t,n)=>Zt(e,t,n),$t=e=>ce(Qt(e,97,122)),en=(e,t=0,n=20)=>{let r=Qt(e,t,n),i=``;for(let t=0;t<r;t++)i+=$t(e);return i},tn=(e,t)=>t[Qt(e,0,t.length-1)],nn=Symbol(`0schema`),rn=class{constructor(){this._rerrs=[]}extend(e,t,n,r=null){this._rerrs.push({path:e,expected:t,has:n,message:r})}toString(){let e=[];for(let t=this._rerrs.length-1;t>0;t--){let n=this._rerrs[t];e.push(ve(` `,(this._rerrs.length-t)*2)+`${n.path==null?``:`[${n.path}] `}${n.has} doesn't match ${n.expected}. ${n.message}`)}return e.join(`
|
|
2
|
-
`)}},an=(e,t)=>e===t?!0:e==null||t==null||e.constructor!==t.constructor?!1:e[dt]?ft(e,t):f(e)?l(e,e=>u(t,t=>an(e,t))):pt(e)?bt(e,(e,n)=>an(e,t[n])):!1,N=class{static _dilutes=!1;extends(e){let[t,n]=[this.shape,e.shape];return this.constructor._dilutes&&([n,t]=[t,n]),an(t,n)}equals(e){return this.constructor===e.constructor&&Dt(this.shape,e.shape)}[nn](){return!0}[dt](e){return this.equals(e)}validate(e){return this.check(e)}check(e,t){C()}get nullable(){return In(this,Zn)}get optional(){return new mn(this)}cast(e){return tr(e,this),e}expect(e){return tr(e,this),e}},on=class extends N{constructor(e,t){super(),this.shape=e,this._c=t}check(e,t=void 0){let n=e?.constructor===this.shape&&(this._c==null||this._c(e));return!n&&t?.extend(null,this.shape.name,e?.constructor.name,e?.constructor===this.shape?`Check failed`:`Constructor match failed`),n}},P=(e,t=null)=>new on(e,t);P(on);var sn=class extends N{constructor(e){super(),this.shape=e}check(e,t){let n=this.shape(e);return!n&&t?.extend(null,`custom prop`,e?.constructor.name,`failed to check custom prop`),n}},F=e=>new sn(e);P(sn);var cn=class extends N{constructor(e){super(),this.shape=e}check(e,t){let n=this.shape.some(t=>t===e);return!n&&t?.extend(null,this.shape.join(` | `),e.toString()),n}},ln=(...e)=>new cn(e),un=P(cn),dn=RegExp.escape||(e=>e.replace(/[().|&,$^[\]]/g,e=>`\\`+e)),fn=e=>{if(Kn.check(e))return[dn(e)];if(un.check(e))return e.shape.map(e=>e+``);if(Gn.check(e))return[`[+-]?\\d+.?\\d*`];if(qn.check(e))return[`.*`];if(Ln.check(e))return e.shape.map(fn).flat(1);w()};P(class extends N{constructor(e){super(),this.shape=e,this._r=RegExp(`^`+e.map(fn).map(e=>`(${e.join(`|`)})`).join(``)+`$`)}check(e,t){let n=this._r.exec(e)!=null;return!n&&t?.extend(null,this._r.toString(),e.toString(),`String doesn't match string template.`),n}});var pn=Symbol(`optional`),mn=class extends N{constructor(e){super(),this.shape=e}check(e,t){let n=e===void 0||this.shape.check(e);return!n&&t?.extend(null,`undefined (optional)`,`()`),n}get[pn](){return!0}},hn=P(mn),gn=class extends N{check(e,t){return t?.extend(null,`never`,typeof e),!1}};new gn,P(gn);var _n=class e extends N{constructor(e,t=!1){super(),this.shape=e,this._isPartial=t}static _dilutes=!0;get partial(){return new e(this.shape,!0)}check(e,t){return e==null?(t?.extend(null,`object`,`null`),!1):bt(this.shape,(n,r)=>{let i=this._isPartial&&!xt(e,r)||n.check(e[r],t);return!i&&t?.extend(r.toString(),n.toString(),typeof e[r],`Object property does not match`),i})}},vn=e=>new _n(e),yn=P(_n),bn=F(e=>e!=null&&(e.constructor===Object||e.constructor==null)),xn=class extends N{constructor(e,t){super(),this.shape={keys:e,values:t}}check(e,t){return e!=null&&bt(e,(n,r)=>{let i=this.shape.keys.check(r,t);return!i&&t?.extend(r+``,`Record`,typeof e,i?`Key doesn't match schema`:`Value doesn't match value`),i&&this.shape.values.check(n,t)})}},Sn=(e,t)=>new xn(e,t),Cn=P(xn),wn=class extends N{constructor(e){super(),this.shape=e}check(e,t){return e!=null&&bt(this.shape,(n,r)=>{let i=n.check(e[r],t);return!i&&t?.extend(r.toString(),`Tuple`,typeof n),i})}},Tn=(...e)=>new wn(e);P(wn);var En=class extends N{constructor(e){super(),this.shape=e.length===1?e[0]:new Fn(e)}check(e,t){let n=f(e)&&l(e,e=>this.shape.check(e));return!n&&t?.extend(null,`Array`,``),n}},Dn=(...e)=>new En(e),On=P(En),kn=F(e=>f(e)),An=class extends N{constructor(e,t){super(),this.shape=e,this._c=t}check(e,t){let n=e instanceof this.shape&&(this._c==null||this._c(e));return!n&&t?.extend(null,this.shape.name,e?.constructor.name),n}},jn=(e,t=null)=>new An(e,t);P(An);var Mn=jn(N),Nn=P(class extends N{constructor(e){super(),this.len=e.length-1,this.args=Tn(...e.slice(-1)),this.res=e[this.len]}check(e,t){let n=e.constructor===Function&&e.length<=this.len;return!n&&t?.extend(null,`function`,typeof e),n}}),Pn=F(e=>typeof e==`function`);P(class extends N{constructor(e){super(),this.shape=e}check(e,t){let n=l(this.shape,n=>n.check(e,t));return!n&&t?.extend(null,`Intersectinon`,typeof e),n}},e=>e.shape.length>0);var Fn=class extends N{static _dilutes=!0;constructor(e){super(),this.shape=e}check(e,t){let n=u(this.shape,n=>n.check(e,t));return t?.extend(null,`Union`,typeof e),n}},In=(...e)=>e.findIndex(e=>Ln.check(e))>=0?In(...e.map(e=>er(e)).map(e=>Ln.check(e)?e.shape:[e]).flat(1)):e.length===1?e[0]:new Fn(e),Ln=P(Fn),Rn=()=>!0,zn=F(Rn),Bn=P(sn,e=>e.shape===Rn),Vn=F(e=>typeof e==`bigint`),Hn=F(e=>e===Vn),Un=F(e=>typeof e==`symbol`);F(e=>e===Un);var Wn=F(e=>typeof e==`number`),Gn=F(e=>e===Wn),Kn=F(e=>typeof e==`string`),qn=F(e=>e===Kn),Jn=F(e=>typeof e==`boolean`),Yn=F(e=>e===Jn),Xn=ln(void 0);P(cn,e=>e.shape.length===1&&e.shape[0]===void 0),ln(void 0);var Zn=ln(null),Qn=P(cn,e=>e.shape.length===1&&e.shape[0]===null);P(Uint8Array),P(on,e=>e.shape===Uint8Array);var $n=In(Wn,Kn,Zn,Xn,Vn,Jn,Un);(()=>{let e=Dn(zn),t=Sn(Kn,zn),n=In(Wn,Kn,Zn,Jn,e,t);return e.shape=n,t.shape.values=n,n})();var er=e=>{if(Mn.check(e))return e;if(bn.check(e)){let t={};for(let n in e)t[n]=er(e[n]);return vn(t)}if(kn.check(e))return In(...e.map(er));if($n.check(e))return ln(e);if(Pn.check(e))return P(e);w()},tr=Ft?()=>{}:(e,t)=>{let n=new rn;if(!t.check(e,n))throw S(`Expected value to be of type ${t.constructor.name}.\n${n.toString()}`)},nr=class{constructor(e){this.patterns=[],this.$state=e}if(e,t){return this.patterns.push({if:er(e),h:t}),this}else(e){return this.if(zn,e)}done(){return(e,t)=>{for(let n=0;n<this.patterns.length;n++){let r=this.patterns[n];if(r.if.check(e))return r.h(e,t)}throw S(`Unhandled pattern`)}}},rr=(e=>new nr(e))(zn).if(Gn,(e,t)=>Xt(t,oe,ae)).if(qn,(e,t)=>en(t)).if(Yn,(e,t)=>Yt(t)).if(Hn,(e,t)=>BigInt(Xt(t,oe,ae))).if(Ln,(e,t)=>ir(t,tn(t,e.shape))).if(yn,(e,t)=>{let n={};for(let r in e.shape){let i=e.shape[r];if(hn.check(i)){if(Yt(t))continue;i=i.shape}n[r]=rr(i,t)}return n}).if(On,(e,t)=>{let n=[],r=Zt(t,0,42);for(let i=0;i<r;i++)n.push(ir(t,e.shape));return n}).if(un,(e,t)=>tn(t,e.shape)).if(Qn,(e,t)=>null).if(Nn,(e,t)=>{let n=ir(t,e.res);return()=>n}).if(Bn,(e,t)=>ir(t,tn(t,[Wn,Kn,Zn,Xn,Vn,Jn,Dn(Wn),Sn(In(`a`,`b`,`c`),Wn)]))).if(Cn,(e,t)=>{let n={},r=Xt(t,0,3);for(let i=0;i<r;i++){let r=ir(t,e.shape.keys);n[r]=ir(t,e.shape.values)}return n}).done(),ir=(e,t)=>rr(er(t),e),I=typeof document<`u`?document:{},ar=e=>I.createElement(e),or=()=>I.createDocumentFragment();F(e=>e.nodeType===vr);var sr=e=>I.createTextNode(e);typeof DOMParser<`u`&&new DOMParser;var cr=(e,t)=>(Jt(t,(t,n)=>{n===!1?e.removeAttribute(t):n===!0?e.setAttribute(t,``):e.setAttribute(t,n)}),e),lr=e=>{let t=or();for(let n=0;n<e.length;n++)mr(t,e[n]);return t},ur=(e,t)=>(mr(e,lr(t)),e),dr=(e,t=[],n=[])=>ur(cr(ar(e),t),n);F(e=>e.nodeType===hr);var fr=sr;F(e=>e.nodeType===gr);var pr=e=>r(e,(e,t)=>`${t}:${e};`).join(``),mr=(e,t)=>e.appendChild(t),hr=I.ELEMENT_NODE,gr=I.TEXT_NODE;I.CDATA_SECTION_NODE,I.COMMENT_NODE;var _r=I.DOCUMENT_NODE;I.DOCUMENT_TYPE_NODE;var vr=I.DOCUMENT_FRAGMENT_NODE;F(e=>e.nodeType===_r);var L=Symbol,yr=L(),br=L(),xr=L(),Sr=L(),Cr=L(),wr=L(),Tr=L(),Er=L(),Dr=L(),Or=e=>{e.length===1&&e[0]?.constructor===Function&&(e=e[0]());let t=[],n=[],r=0;for(;r<e.length;r++){let n=e[r];if(n===void 0)break;if(n.constructor===String||n.constructor===Number)t.push(n);else if(n.constructor===Object)break}for(r>0&&n.push(t.join(``));r<e.length;r++){let t=e[r];t instanceof Symbol||n.push(t)}return n};k();var kr={[yr]:M(`font-weight`,`bold`),[br]:M(`font-weight`,`normal`),[xr]:M(`color`,`blue`),[Cr]:M(`color`,`green`),[Sr]:M(`color`,`grey`),[wr]:M(`color`,`red`),[Tr]:M(`color`,`purple`),[Er]:M(`color`,`orange`),[Dr]:M(`color`,`black`)},Ar=It?t=>{t.length===1&&t[0]?.constructor===Function&&(t=t[0]());let n=[],r=[],i=e(),a=[],o=0;for(;o<t.length;o++){let e=t[o],a=kr[e];if(a!==void 0)i.set(a.left,a.right);else{if(e===void 0)break;if(e.constructor===String||e.constructor===Number){let t=pr(i);o>0||t.length>0?(n.push(`%c`+e),r.push(t)):n.push(e)}else break}}for(o>0&&(a=r,a.unshift(n.join(``)));o<t.length;o++){let e=t[o];e instanceof Symbol||a.push(e)}return a}:Or,jr=(...e)=>{console.log(...Ar(e)),Nr.forEach(t=>t.print(e))},Mr=(...e)=>{console.warn(...Ar(e)),e.unshift(Er),Nr.forEach(t=>t.print(e))},Nr=a(),Pr=e=>({[Symbol.iterator](){return this},next:e}),Fr=(e,t)=>Pr(()=>{let n;do n=e.next();while(!n.done&&!t(n.value));return n}),Ir=(e,t)=>Pr(()=>{let{done:n,value:r}=e.next();return{done:n,value:n?void 0:t(r)}}),Lr=class{constructor(e,t){this.clock=e,this.len=t}},Rr=class{constructor(){this.clients=new Map}},zr=(e,t,n)=>t.clients.forEach((t,r)=>{let i=e.doc.store.clients.get(r);if(i!=null){let r=i[i.length-1],a=r.id.clock+r.length;for(let r=0,o=t[r];r<t.length&&o.clock<a;o=t[++r])Zi(e,i,o.clock,o.len,n)}}),Br=(e,t)=>{let n=0,r=e.length-1;for(;n<=r;){let i=m((n+r)/2),a=e[i],o=a.clock;if(o<=t){if(t<o+a.len)return i;n=i+1}else r=i-1}return null},Vr=(e,t)=>{let n=e.clients.get(t.client);return n!==void 0&&Br(n,t.clock)!==null},Hr=e=>{e.clients.forEach(e=>{e.sort((e,t)=>e.clock-t.clock);let t,n;for(t=1,n=1;t<e.length;t++){let r=e[n-1],i=e[t];r.clock+r.len>=i.clock?e[n-1]=new Lr(r.clock,h(r.len,i.clock+i.len-r.clock)):(n<t&&(e[n]=i),n++)}e.length=n})},Ur=e=>{let t=new Rr;for(let n=0;n<e.length;n++)e[n].clients.forEach((r,i)=>{if(!t.clients.has(i)){let a=r.slice();for(let t=n+1;t<e.length;t++)s(a,e[t].clients.get(i)||[]);t.clients.set(i,a)}});return Hr(t),t},Wr=(e,t,r,i)=>{n(e.clients,t,()=>[]).push(new Lr(r,i))},Gr=()=>new Rr,Kr=e=>{let t=Gr();return e.clients.forEach((e,n)=>{let r=[];for(let t=0;t<e.length;t++){let n=e[t];if(n.deleted){let i=n.id.clock,a=n.length;if(t+1<e.length)for(let n=e[t+1];t+1<e.length&&n.deleted;n=e[++t+1])a+=n.length;r.push(new Lr(i,a))}}r.length>0&&t.clients.set(n,r)}),t},qr=(e,t)=>{y(e.restEncoder,t.clients.size),c(t.clients.entries()).sort((e,t)=>t[0]-e[0]).forEach(([t,n])=>{e.resetDsCurVal(),y(e.restEncoder,t);let r=n.length;y(e.restEncoder,r);for(let t=0;t<r;t++){let r=n[t];e.writeDsClock(r.clock),e.writeDsLen(r.len)}})},Jr=e=>{let t=new Rr,r=D(e.restDecoder);for(let i=0;i<r;i++){e.resetDsCurVal();let r=D(e.restDecoder),i=D(e.restDecoder);if(i>0){let a=n(t.clients,r,()=>[]);for(let t=0;t<i;t++)a.push(new Lr(e.readDsClock(),e.readDsLen()))}}return t},Yr=(e,t,n)=>{let r=new Rr,i=D(e.restDecoder);for(let a=0;a<i;a++){e.resetDsCurVal();let i=D(e.restDecoder),a=D(e.restDecoder),o=n.clients.get(i)||[],s=B(n,i);for(let n=0;n<a;n++){let n=e.readDsClock(),a=n+e.readDsLen();if(n<s){s<a&&Wr(r,i,s,a-s);let e=V(o,n),c=o[e];for(!c.deleted&&c.id.clock<n&&(o.splice(e+1,0,as(t,c,n-c.id.clock)),e++);e<o.length&&(c=o[e++],c.id.clock<a);)c.deleted||(a<c.id.clock+c.length&&o.splice(e,0,as(t,c,a-c.id.clock)),c.delete(t))}else Wr(r,i,n,a-n)}}if(r.clients.size>0){let e=new R;return y(e.restEncoder,0),qr(e,r),e.toUint8Array()}return null},Xr=tt,Zr=class e extends p{constructor({guid:e=rt(),collectionid:t=null,gc:n=!0,gcFilter:r=()=>!0,meta:i=null,autoLoad:a=!1,shouldLoad:o=!0}={}){super(),this.gc=n,this.gcFilter=r,this.clientID=Xr(),this.guid=e,this.collectionid=t,this.share=new Map,this.store=new Wi,this._transaction=null,this._transactionCleanups=[],this.subdocs=new Set,this._item=null,this.shouldLoad=o,this.autoLoad=a,this.meta=i,this.isLoaded=!1,this.isSynced=!1,this.isDestroyed=!1,this.whenLoaded=it(e=>{this.on(`load`,()=>{this.isLoaded=!0,e(this)})});let s=()=>it(e=>{let t=n=>{(n===void 0||n===!0)&&(this.off(`sync`,t),e())};this.on(`sync`,t)});this.on(`sync`,e=>{e===!1&&this.isSynced&&(this.whenSynced=s()),this.isSynced=e===void 0||e===!0,this.isSynced&&!this.isLoaded&&this.emit(`load`,[this])}),this.whenSynced=s()}load(){let e=this._item;e!==null&&!this.shouldLoad&&U(e.parent.doc,e=>{e.subdocsLoaded.add(this)},null,!0),this.shouldLoad=!0}getSubdocs(){return this.subdocs}getSubdocGuids(){return new Set(c(this.subdocs).map(e=>e.guid))}transact(e,t=null){return U(this,e,t)}get(e,t=K){let r=n(this.share,e,()=>{let e=new t;return e._integrate(this,null),e}),i=r.constructor;if(t!==K&&i!==t){if(i===K){let n=new t;n._map=r._map,r._map.forEach(e=>{for(;e!==null;e=e.left)e.parent=n}),n._start=r._start;for(let e=n._start;e!==null;e=e.right)e.parent=n;return n._length=r._length,this.share.set(e,n),n._integrate(this,null),n}throw Error(`Type with the name ${e} has already been defined with a different constructor`)}return r}getArray(e=``){return this.get(e,Za)}getText(e=``){return this.get(e,vo)}getMap(e=``){return this.get(e,eo)}getXmlElement(e=``){return this.get(e,Co)}getXmlFragment(e=``){return this.get(e,xo)}toJSON(){let e={};return this.share.forEach((t,n)=>{e[n]=t.toJSON()}),e}destroy(){this.isDestroyed=!0,c(this.subdocs).forEach(e=>e.destroy());let t=this._item;if(t!==null){this._item=null;let n=t.content;n.doc=new e({guid:this.guid,...n.opts,shouldLoad:!1}),n.doc._item=t,U(t.parent.doc,e=>{let r=n.doc;t.deleted||e.subdocsAdded.add(r),e.subdocsRemoved.add(this)},null,!0)}this.emit(`destroyed`,[!0]),this.emit(`destroy`,[this]),super.destroy()}},Qr=class{constructor(e){this.restDecoder=e}resetDsCurVal(){}readDsClock(){return D(this.restDecoder)}readDsLen(){return D(this.restDecoder)}},$r=class extends Qr{readLeftID(){return z(D(this.restDecoder),D(this.restDecoder))}readRightID(){return z(D(this.restDecoder),D(this.restDecoder))}readClient(){return D(this.restDecoder)}readInfo(){return Ge(this.restDecoder)}readString(){return O(this.restDecoder)}readParentInfo(){return D(this.restDecoder)===1}readTypeRef(){return D(this.restDecoder)}readLen(){return D(this.restDecoder)}readAny(){return Ye(this.restDecoder)}readBuf(){return Kt(E(this.restDecoder))}readJSON(){return JSON.parse(O(this.restDecoder))}readKey(){return O(this.restDecoder)}},ei=class{constructor(e){this.dsCurrVal=0,this.restDecoder=e}resetDsCurVal(){this.dsCurrVal=0}readDsClock(){return this.dsCurrVal+=D(this.restDecoder),this.dsCurrVal}readDsLen(){let e=D(this.restDecoder)+1;return this.dsCurrVal+=e,e}},ti=class extends ei{constructor(e){super(e),this.keys=[],D(e),this.keyClockDecoder=new Qe(E(e)),this.clientDecoder=new Ze(E(e)),this.leftClockDecoder=new Qe(E(e)),this.rightClockDecoder=new Qe(E(e)),this.infoDecoder=new Xe(E(e),Ge),this.stringDecoder=new $e(E(e)),this.parentInfoDecoder=new Xe(E(e),Ge),this.typeRefDecoder=new Ze(E(e)),this.lenDecoder=new Ze(E(e))}readLeftID(){return new Di(this.clientDecoder.read(),this.leftClockDecoder.read())}readRightID(){return new Di(this.clientDecoder.read(),this.rightClockDecoder.read())}readClient(){return this.clientDecoder.read()}readInfo(){return this.infoDecoder.read()}readString(){return this.stringDecoder.read()}readParentInfo(){return this.parentInfoDecoder.read()===1}readTypeRef(){return this.typeRefDecoder.read()}readLen(){return this.lenDecoder.read()}readAny(){return Ye(this.restDecoder)}readBuf(){return E(this.restDecoder)}readJSON(){return Ye(this.restDecoder)}readKey(){let e=this.keyClockDecoder.read();if(e<this.keys.length)return this.keys[e];{let e=this.stringDecoder.read();return this.keys.push(e),e}}},ni=class{constructor(){this.restEncoder=g()}toUint8Array(){return _(this.restEncoder)}resetDsCurVal(){}writeDsClock(e){y(this.restEncoder,e)}writeDsLen(e){y(this.restEncoder,e)}},ri=class extends ni{writeLeftID(e){y(this.restEncoder,e.client),y(this.restEncoder,e.clock)}writeRightID(e){y(this.restEncoder,e.client),y(this.restEncoder,e.clock)}writeClient(e){y(this.restEncoder,e)}writeInfo(e){Se(this.restEncoder,e)}writeString(e){b(this.restEncoder,e)}writeParentInfo(e){y(this.restEncoder,+!!e)}writeTypeRef(e){y(this.restEncoder,e)}writeLen(e){y(this.restEncoder,e)}writeAny(e){Ne(this.restEncoder,e)}writeBuf(e){x(this.restEncoder,e)}writeJSON(e){b(this.restEncoder,JSON.stringify(e))}writeKey(e){b(this.restEncoder,e)}},ii=class{constructor(){this.restEncoder=g(),this.dsCurrVal=0}toUint8Array(){return _(this.restEncoder)}resetDsCurVal(){this.dsCurrVal=0}writeDsClock(e){let t=e-this.dsCurrVal;this.dsCurrVal=e,y(this.restEncoder,t)}writeDsLen(e){e===0&&w(),y(this.restEncoder,e-1),this.dsCurrVal+=e}},R=class extends ii{constructor(){super(),this.keyMap=new Map,this.keyClock=0,this.keyClockEncoder=new Re,this.clientEncoder=new Ie,this.leftClockEncoder=new Re,this.rightClockEncoder=new Re,this.infoEncoder=new Pe(Se),this.stringEncoder=new ze,this.parentInfoEncoder=new Pe(Se),this.typeRefEncoder=new Ie,this.lenEncoder=new Ie}toUint8Array(){let e=g();return y(e,0),x(e,this.keyClockEncoder.toUint8Array()),x(e,this.clientEncoder.toUint8Array()),x(e,this.leftClockEncoder.toUint8Array()),x(e,this.rightClockEncoder.toUint8Array()),x(e,_(this.infoEncoder)),x(e,this.stringEncoder.toUint8Array()),x(e,_(this.parentInfoEncoder)),x(e,this.typeRefEncoder.toUint8Array()),x(e,this.lenEncoder.toUint8Array()),Ee(e,_(this.restEncoder)),_(e)}writeLeftID(e){this.clientEncoder.write(e.client),this.leftClockEncoder.write(e.clock)}writeRightID(e){this.clientEncoder.write(e.client),this.rightClockEncoder.write(e.clock)}writeClient(e){this.clientEncoder.write(e)}writeInfo(e){this.infoEncoder.write(e)}writeString(e){this.stringEncoder.write(e)}writeParentInfo(e){this.parentInfoEncoder.write(+!!e)}writeTypeRef(e){this.typeRefEncoder.write(e)}writeLen(e){this.lenEncoder.write(e)}writeAny(e){Ne(this.restEncoder,e)}writeBuf(e){x(this.restEncoder,e)}writeJSON(e){Ne(this.restEncoder,e)}writeKey(e){let t=this.keyMap.get(e);t===void 0?(this.keyClockEncoder.write(this.keyClock++),this.stringEncoder.write(e)):this.keyClockEncoder.write(t)}},ai=(e,t,n,r)=>{r=h(r,t[0].id.clock);let i=V(t,r);y(e.restEncoder,t.length-i),e.writeClient(n),y(e.restEncoder,r);let a=t[i];a.write(e,r-a.id.clock);for(let n=i+1;n<t.length;n++)t[n].write(e,0)},oi=(e,t,n)=>{let r=new Map;n.forEach((e,n)=>{B(t,n)>e&&r.set(n,e)}),Gi(t).forEach((e,t)=>{n.has(t)||r.set(t,0)}),y(e.restEncoder,r.size),c(r.entries()).sort((e,t)=>t[0]-e[0]).forEach(([n,r])=>{ai(e,t.clients.get(n),n,r)})},si=(t,n)=>{let r=e(),i=D(t.restDecoder);for(let e=0;e<i;e++){let e=D(t.restDecoder),i=Array(e),a=t.readClient(),o=D(t.restDecoder);r.set(a,{i:0,refs:i});for(let r=0;r<e;r++){let e=t.readInfo();switch(31&e){case 0:{let e=t.readLen();i[r]=new J(z(a,o),e),o+=e;break}case 10:{let e=D(t.restDecoder);i[r]=new $(z(a,o),e),o+=e;break}default:{let s=!(e&192),c=new Q(z(a,o),null,(e&128)==128?t.readLeftID():null,null,(e&64)==64?t.readRightID():null,s?t.readParentInfo()?n.get(t.readString()):t.readLeftID():null,s&&(e&32)==32?t.readString():null,cs(t,e));i[r]=c,o+=c.length}}}}return r},ci=(e,t,r)=>{let i=[],a=c(r.keys()).sort((e,t)=>e-t);if(a.length===0)return null;let o=()=>{if(a.length===0)return null;let e=r.get(a[a.length-1]);for(;e.refs.length===e.i;)if(a.pop(),a.length>0)e=r.get(a[a.length-1]);else return null;return e},s=o();if(s===null)return null;let l=new Wi,u=new Map,d=(e,t)=>{let n=u.get(e);(n==null||n>t)&&u.set(e,t)},f=s.refs[s.i++],p=new Map,ee=()=>{for(let e of i){let t=e.id.client,n=r.get(t);n?(n.i--,l.clients.set(t,n.refs.slice(n.i)),r.delete(t),n.i=0,n.refs=[]):l.clients.set(t,[e]),a=a.filter(e=>e!==t)}i.length=0};for(;;){if(f.constructor!==$){let a=n(p,f.id.client,()=>B(t,f.id.client))-f.id.clock;if(a<0)i.push(f),d(f.id.client,f.id.clock-1),ee();else{let n=f.getMissing(e,t);if(n!==null){i.push(f);let e=r.get(n)||{refs:[],i:0};if(e.refs.length===e.i)d(n,B(t,n)),ee();else{f=e.refs[e.i++];continue}}else(a===0||a<f.length)&&(f.integrate(e,a),p.set(f.id.client,f.id.clock+f.length))}}if(i.length>0)f=i.pop();else if(s!==null&&s.i<s.refs.length)f=s.refs[s.i++];else{if(s=o(),s===null)break;f=s.refs[s.i++]}}if(l.clients.size>0){let e=new R;return oi(e,l,new Map),y(e.restEncoder,0),{missing:u,update:e.toUint8Array()}}return null},li=(e,t)=>oi(e,t.doc.store,t.beforeState),ui=(e,t,n,r=new ti(e))=>U(t,e=>{e.local=!1;let t=!1,n=e.doc,i=n.store,a=ci(e,i,si(r,n)),o=i.pendingStructs;if(o){for(let[e,n]of o.missing)if(n<B(i,e)){t=!0;break}if(a){for(let[e,t]of a.missing){let n=o.missing.get(e);(n==null||n>t)&&o.missing.set(e,t)}o.update=ma([o.update,a.update])}}else i.pendingStructs=a;let s=Yr(r,e,i);if(i.pendingDs){let t=new ti(T(i.pendingDs));D(t.restDecoder);let n=Yr(t,e,i);i.pendingDs=s&&n?ma([s,n]):s||n}else i.pendingDs=s;if(t){let t=i.pendingStructs.update;i.pendingStructs=null,di(e.doc,t)}},n,!1),di=(e,t,n,r=ti)=>{let i=T(t);ui(i,e,n,new r(i))},fi=(e,t,n)=>di(e,t,n,$r),pi=(e,t,n=new Map)=>{oi(e,t.store,n),qr(e,Kr(t.store))},mi=(e,t=new Uint8Array([0]),n=new R)=>{pi(n,e,_i(t));let r=[n.toUint8Array()];if(e.store.pendingDs&&r.push(e.store.pendingDs),e.store.pendingStructs&&r.push(ha(e.store.pendingStructs.update,t)),r.length>1){if(n.constructor===ri)return fa(r.map((e,t)=>t===0?e:ya(e)));if(n.constructor===R)return ma(r)}return r[0]},hi=(e,t)=>mi(e,t,new ri),gi=e=>{let t=new Map,n=D(e.restDecoder);for(let r=0;r<n;r++){let n=D(e.restDecoder),r=D(e.restDecoder);t.set(n,r)}return t},_i=e=>gi(new Qr(T(e))),vi=(e,t)=>(y(e.restEncoder,t.size),c(t.entries()).sort((e,t)=>t[0]-e[0]).forEach(([t,n])=>{y(e.restEncoder,t),y(e.restEncoder,n)}),e),yi=(e,t)=>vi(e,Gi(t.store)),bi=(e,t=new ii)=>(e instanceof Map?vi(t,e):yi(t,e),t.toUint8Array()),xi=e=>bi(e,new ni),Si=class{constructor(){this.l=[]}},Ci=()=>new Si,wi=(e,t)=>e.l.push(t),Ti=(e,t)=>{let n=e.l,r=n.length;e.l=n.filter(e=>t!==e),r===e.l.length&&console.error(`[yjs] Tried to remove event handler that doesn't exist.`)},Ei=(e,t,n)=>Tt(e.l,[t,n]),Di=class{constructor(e,t){this.client=e,this.clock=t}},Oi=(e,t)=>e===t||e!==null&&t!==null&&e.client===t.client&&e.clock===t.clock,z=(e,t)=>new Di(e,t),ki=e=>{for(let[t,n]of e.doc.share.entries())if(n===e)return t;throw w()},Ai=(e,t)=>{for(;t!==null;){if(t.parent===e)return!0;t=t.parent._item}return!1},ji=class{constructor(e,t,n,r=0){this.type=e,this.tname=t,this.item=n,this.assoc=r}},Mi=e=>{let t={};return e.type&&(t.type=e.type),e.tname&&(t.tname=e.tname),e.item&&(t.item=e.item),e.assoc!=null&&(t.assoc=e.assoc),t},Ni=e=>new ji(e.type==null?null:z(e.type.client,e.type.clock),e.tname??null,e.item==null?null:z(e.item.client,e.item.clock),e.assoc==null?0:e.assoc),Pi=class{constructor(e,t,n=0){this.type=e,this.index=t,this.assoc=n}},Fi=(e,t,n=0)=>new Pi(e,t,n),Ii=(e,t,n)=>{let r=null,i=null;return e._item===null?i=ki(e):r=z(e._item.id.client,e._item.id.clock),new ji(r,i,t,n)},Li=(e,t,n=0)=>{let r=e._start;if(n<0){if(t===0)return Ii(e,null,n);t--}for(;r!==null;){if(!r.deleted&&r.countable){if(r.length>t)return Ii(e,z(r.id.client,r.id.clock+t),n);t-=r.length}if(r.right===null&&n<0)return Ii(e,r.lastId,n);r=r.right}return Ii(e,null,n)},Ri=(e,t)=>{let n=qi(e,t);return{item:n,diff:t.clock-n.id.clock}},zi=(e,t,n=!0)=>{let r=t.store,i=e.item,a=e.type,o=e.tname,s=e.assoc,c=null,l=0;if(i!==null){if(B(r,i.client)<=i.clock)return null;let e=n?rs(r,i):Ri(r,i),t=e.item;if(!(t instanceof Q))return null;if(c=t.parent,c._item===null||!c._item.deleted){l=t.deleted||!t.countable?0:e.diff+(s>=0?0:1);let n=t.left;for(;n!==null;)!n.deleted&&n.countable&&(l+=n.length),n=n.left}}else{if(o!==null)c=t.get(o);else if(a!==null){if(B(r,a.client)<=a.clock)return null;let{item:e}=n?rs(r,a):{item:qi(r,a)};if(e instanceof Q&&e.content instanceof Z)c=e.content.type;else return null}else throw w();l=s>=0?c._length:0}return Fi(c,l,e.assoc)},Bi=(e,t)=>e===t||e!==null&&t!==null&&e.tname===t.tname&&Oi(e.item,t.item)&&Oi(e.type,t.type)&&e.assoc===t.assoc,Vi=class{constructor(e,t){this.ds=e,this.sv=t}};((e,t)=>new Vi(e,t))(Gr(),new Map);var Hi=(e,t)=>t===void 0?!e.deleted:t.sv.has(e.id.client)&&(t.sv.get(e.id.client)||0)>e.id.clock&&!Vr(t.ds,e.id),Ui=(e,t)=>{let r=n(e.meta,Ui,a),i=e.doc.store;r.has(t)||(t.sv.forEach((t,n)=>{t<B(i,n)&&H(e,z(n,t))}),zr(e,t.ds,e=>{}),r.add(t))},Wi=class{constructor(){this.clients=new Map,this.pendingStructs=null,this.pendingDs=null}},Gi=e=>{let t=new Map;return e.clients.forEach((e,n)=>{let r=e[e.length-1];t.set(n,r.id.clock+r.length)}),t},B=(e,t)=>{let n=e.clients.get(t);if(n===void 0)return 0;let r=n[n.length-1];return r.id.clock+r.length},Ki=(e,t)=>{let n=e.clients.get(t.id.client);if(n===void 0)n=[],e.clients.set(t.id.client,n);else{let e=n[n.length-1];if(e.id.clock+e.length!==t.id.clock)throw w()}n.push(t)},V=(e,t)=>{let n=0,r=e.length-1,i=e[r],a=i.id.clock;if(a===t)return r;let o=m(t/(a+i.length-1)*r);for(;n<=r;){if(i=e[o],a=i.id.clock,a<=t){if(t<a+i.length)return o;n=o+1}else r=o-1;o=m((n+r)/2)}throw w()},qi=(e,t)=>{let n=e.clients.get(t.client);return n[V(n,t.clock)]},Ji=(e,t,n)=>{let r=V(t,n),i=t[r];return i.id.clock<n&&i instanceof Q?(t.splice(r+1,0,as(e,i,n-i.id.clock)),r+1):r},H=(e,t)=>{let n=e.doc.store.clients.get(t.client);return n[Ji(e,n,t.clock)]},Yi=(e,t,n)=>{let r=t.clients.get(n.client),i=V(r,n.clock),a=r[i];return n.clock!==a.id.clock+a.length-1&&a.constructor!==J&&r.splice(i+1,0,as(e,a,n.clock-a.id.clock+1)),a},Xi=(e,t,n)=>{let r=e.clients.get(t.id.client);r[V(r,t.id.clock)]=n},Zi=(e,t,n,r,i)=>{if(r===0)return;let a=n+r,o=Ji(e,t,n),s;do s=t[o++],a<s.id.clock+s.length&&Ji(e,t,a),i(s);while(o<t.length&&t[o].id.clock<a)},Qi=class{constructor(e,t,n){this.doc=e,this.deleteSet=new Rr,this.beforeState=Gi(e.store),this.afterState=new Map,this.changed=new Map,this.changedParentTypes=new Map,this._mergeStructs=[],this.origin=t,this.meta=new Map,this.local=n,this.subdocsAdded=new Set,this.subdocsRemoved=new Set,this.subdocsLoaded=new Set,this._needFormattingCleanup=!1}},$i=(e,t)=>t.deleteSet.clients.size===0&&!i(t.afterState,(e,n)=>t.beforeState.get(n)!==e)?!1:(Hr(t.deleteSet),li(e,t),qr(e,t.deleteSet),!0),ea=(e,t,r)=>{let i=t._item;(i===null||i.id.clock<(e.beforeState.get(i.id.client)||0)&&!i.deleted)&&n(e.changed,t,a).add(r)},ta=(e,t)=>{let n=e[t],r=e[t-1],i=t;for(;i>0;n=r,r=e[--i-1]){if(r.deleted===n.deleted&&r.constructor===n.constructor&&r.mergeWith(n)){n instanceof Q&&n.parentSub!==null&&n.parent._map.get(n.parentSub)===n&&n.parent._map.set(n.parentSub,r);continue}break}let a=t-i;return a&&e.splice(t+1-a,a),a},na=(e,t,n)=>{for(let[r,i]of e.clients.entries()){let e=t.clients.get(r);for(let r=i.length-1;r>=0;r--){let a=i[r],o=a.clock+a.len;for(let r=V(e,a.clock),i=e[r];r<e.length&&i.id.clock<o;i=e[++r]){let i=e[r];if(a.clock+a.len<=i.id.clock)break;i instanceof Q&&i.deleted&&!i.keep&&n(i)&&i.gc(t,!1)}}}},ra=(e,t)=>{e.clients.forEach((e,n)=>{let r=t.clients.get(n);for(let t=e.length-1;t>=0;t--){let n=e[t],i=ne(r.length-1,1+V(r,n.clock+n.len-1));for(let e=i,t=r[e];e>0&&t.id.clock>=n.clock;t=r[e])e-=1+ta(r,e)}})},ia=(e,t)=>{if(t<e.length){let n=e[t],r=n.doc,i=r.store,a=n.deleteSet,o=n._mergeStructs;try{Hr(a),n.afterState=Gi(n.doc.store),r.emit(`beforeObserverCalls`,[n,r]);let e=[];n.changed.forEach((t,r)=>e.push(()=>{(r._item===null||!r._item.deleted)&&r._callObserver(n,t)})),e.push(()=>{n.changedParentTypes.forEach((t,r)=>{r._dEH.l.length>0&&(r._item===null||!r._item.deleted)&&(t=t.filter(e=>e.target._item===null||!e.target._item.deleted),t.forEach(e=>{e.currentTarget=r,e._path=null}),t.sort((e,t)=>e.path.length-t.path.length),e.push(()=>{Ei(r._dEH,t,n)}))}),e.push(()=>r.emit(`afterTransaction`,[n,r])),e.push(()=>{n._needFormattingCleanup&&ho(n)})}),Tt(e,[])}finally{r.gc&&na(a,i,r.gcFilter),ra(a,i),n.afterState.forEach((e,t)=>{let r=n.beforeState.get(t)||0;if(r!==e){let e=i.clients.get(t),n=h(V(e,r),1);for(let t=e.length-1;t>=n;)t-=1+ta(e,t)}});for(let e=o.length-1;e>=0;e--){let{client:t,clock:n}=o[e].id,r=i.clients.get(t),a=V(r,n);a+1<r.length&&ta(r,a+1)>1||a>0&&ta(r,a)}if(!n.local&&n.afterState.get(r.clientID)!==n.beforeState.get(r.clientID)&&(jr(Er,yr,`[yjs] `,br,wr,`Changed the client-id because another client seems to be using it.`),r.clientID=Xr()),r.emit(`afterTransactionCleanup`,[n,r]),r._observers.has(`update`)){let e=new ri;$i(e,n)&&r.emit(`update`,[e.toUint8Array(),n.origin,r,n])}if(r._observers.has(`updateV2`)){let e=new R;$i(e,n)&&r.emit(`updateV2`,[e.toUint8Array(),n.origin,r,n])}let{subdocsAdded:s,subdocsLoaded:c,subdocsRemoved:l}=n;(s.size>0||l.size>0||c.size>0)&&(s.forEach(e=>{e.clientID=r.clientID,e.collectionid??=r.collectionid,r.subdocs.add(e)}),l.forEach(e=>r.subdocs.delete(e)),r.emit(`subdocs`,[{loaded:c,added:s,removed:l},r,n]),l.forEach(e=>e.destroy())),e.length<=t+1?(r._transactionCleanups=[],r.emit(`afterAllTransactions`,[r,e])):ia(e,t+1)}}},U=(e,t,n=null,r=!0)=>{let i=e._transactionCleanups,a=!1,o=null;e._transaction===null&&(a=!0,e._transaction=new Qi(e,n,r),i.push(e._transaction),i.length===1&&e.emit(`beforeAllTransactions`,[e]),e.emit(`beforeTransaction`,[e._transaction,e]));try{o=t(e._transaction)}finally{if(a){let t=e._transaction===i[0];e._transaction=null,t&&ia(i,0)}}return o},aa=class{constructor(e,t){this.insertions=t,this.deletions=e,this.meta=new Map}},oa=(e,t,n)=>{zr(e,n.deletions,n=>{n instanceof Q&&t.scope.some(t=>t===e.doc||Ai(t,n))&&is(n,!1)})},sa=(e,t,n)=>{let r=null,i=e.doc,a=e.scope;U(i,n=>{for(;t.length>0&&e.currStackItem===null;){let r=i.store,o=t.pop(),s=new Set,c=[],l=!1;zr(n,o.insertions,e=>{if(e instanceof Q){if(e.redone!==null){let{item:t,diff:i}=rs(r,e.id);i>0&&(t=H(n,z(t.id.client,t.id.clock+i))),e=t}!e.deleted&&a.some(t=>t===n.doc||Ai(t,e))&&c.push(e)}}),zr(n,o.deletions,e=>{e instanceof Q&&a.some(t=>t===n.doc||Ai(t,e))&&!Vr(o.insertions,e.id)&&s.add(e)}),s.forEach(t=>{l=ss(n,t,s,o.insertions,e.ignoreRemoteMapChanges,e)!==null||l});for(let t=c.length-1;t>=0;t--){let r=c[t];e.deleteFilter(r)&&(r.delete(n),l=!0)}e.currStackItem=l?o:null}n.changed.forEach((e,t)=>{e.has(null)&&t._searchMarker&&(t._searchMarker.length=0)}),r=n},e);let o=e.currStackItem;if(o!=null){let t=r.changedParentTypes;e.emit(`stack-item-popped`,[{stackItem:o,type:n,changedParentTypes:t,origin:e},e]),e.currStackItem=null}return o},ca=class extends p{constructor(e,{captureTimeout:t=500,captureTransaction:n=e=>!0,deleteFilter:r=()=>!0,trackedOrigins:i=new Set([null]),ignoreRemoteMapChanges:a=!1,doc:o=f(e)?e[0].doc:e instanceof Zr?e:e.doc}={}){super(),this.scope=[],this.doc=o,this.addToScope(e),this.deleteFilter=r,i.add(this),this.trackedOrigins=i,this.captureTransaction=n,this.undoStack=[],this.redoStack=[],this.undoing=!1,this.redoing=!1,this.currStackItem=null,this.lastChange=0,this.ignoreRemoteMapChanges=a,this.captureTimeout=t,this.afterTransactionHandler=e=>{if(!this.captureTransaction(e)||!this.scope.some(t=>e.changedParentTypes.has(t)||t===this.doc)||!this.trackedOrigins.has(e.origin)&&(!e.origin||!this.trackedOrigins.has(e.origin.constructor)))return;let t=this.undoing,n=this.redoing,r=t?this.redoStack:this.undoStack;t?this.stopCapturing():n||this.clear(!1,!0);let i=new Rr;e.afterState.forEach((t,n)=>{let r=e.beforeState.get(n)||0,a=t-r;a>0&&Wr(i,n,r,a)});let a=k(),o=!1;if(this.lastChange>0&&a-this.lastChange<this.captureTimeout&&r.length>0&&!t&&!n){let t=r[r.length-1];t.deletions=Ur([t.deletions,e.deleteSet]),t.insertions=Ur([t.insertions,i])}else r.push(new aa(e.deleteSet,i)),o=!0;!t&&!n&&(this.lastChange=a),zr(e,e.deleteSet,t=>{t instanceof Q&&this.scope.some(n=>n===e.doc||Ai(n,t))&&is(t,!0)});let s=[{stackItem:r[r.length-1],origin:e.origin,type:t?`redo`:`undo`,changedParentTypes:e.changedParentTypes},this];o?this.emit(`stack-item-added`,s):this.emit(`stack-item-updated`,s)},this.destroy=this.destroy.bind(this),this.doc.on(`afterTransaction`,this.afterTransactionHandler),this.doc.on(`destroy`,this.destroy)}addToScope(e){let t=new Set(this.scope);e=f(e)?e:[e],e.forEach(e=>{t.has(e)||(t.add(e),(e instanceof K?e.doc!==this.doc:e!==this.doc)&&Mr(`[yjs#509] Not same Y.Doc`),this.scope.push(e))})}addTrackedOrigin(e){this.trackedOrigins.add(e)}removeTrackedOrigin(e){this.trackedOrigins.delete(e)}clear(e=!0,t=!0){(e&&this.canUndo()||t&&this.canRedo())&&this.doc.transact(n=>{e&&(this.undoStack.forEach(e=>oa(n,this,e)),this.undoStack=[]),t&&(this.redoStack.forEach(e=>oa(n,this,e)),this.redoStack=[]),this.emit(`stack-cleared`,[{undoStackCleared:e,redoStackCleared:t}])})}stopCapturing(){this.lastChange=0}undo(){this.undoing=!0;let e;try{e=sa(this,this.undoStack,`undo`)}finally{this.undoing=!1}return e}redo(){this.redoing=!0;let e;try{e=sa(this,this.redoStack,`redo`)}finally{this.redoing=!1}return e}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0}destroy(){this.trackedOrigins.delete(this),this.doc.off(`afterTransaction`,this.afterTransactionHandler),this.doc.off(`destroy`,this.destroy),super.destroy()}};function*la(e){let t=D(e.restDecoder);for(let n=0;n<t;n++){let t=D(e.restDecoder),n=e.readClient(),r=D(e.restDecoder);for(let i=0;i<t;i++){let t=e.readInfo();if(t===10){let t=D(e.restDecoder);yield new $(z(n,r),t),r+=t}else if(31&t){let i=!(t&192),a=new Q(z(n,r),null,(t&128)==128?e.readLeftID():null,null,(t&64)==64?e.readRightID():null,i?e.readParentInfo()?e.readString():e.readLeftID():null,i&&(t&32)==32?e.readString():null,cs(e,t));yield a,r+=a.length}else{let t=e.readLen();yield new J(z(n,r),t),r+=t}}}}var ua=class{constructor(e,t){this.gen=la(e),this.curr=null,this.done=!1,this.filterSkips=t,this.next()}next(){do this.curr=this.gen.next().value||null;while(this.filterSkips&&this.curr!==null&&this.curr.constructor===$);return this.curr}},da=class{constructor(e){this.currClient=0,this.startClock=0,this.written=0,this.encoder=e,this.clientStructs=[]}},fa=e=>ma(e,$r,ri),pa=(e,t)=>{if(e.constructor===J){let{client:n,clock:r}=e.id;return new J(z(n,r+t),e.length-t)}if(e.constructor===$){let{client:n,clock:r}=e.id;return new $(z(n,r+t),e.length-t)}{let n=e,{client:r,clock:i}=n.id;return new Q(z(r,i+t),null,z(r,i+t-1),null,n.rightOrigin,n.parent,n.parentSub,n.content.splice(t))}},ma=(e,t=ti,n=R)=>{if(e.length===1)return e[0];let r=e.map(e=>new t(T(e))),i=r.map(e=>new ua(e,!0)),a=null,o=new n,s=new da(o);for(;i=i.filter(e=>e.curr!==null),i.sort((e,t)=>{if(e.curr.id.client===t.curr.id.client){let n=e.curr.id.clock-t.curr.id.clock;return n===0?e.curr.constructor===t.curr.constructor?0:e.curr.constructor===$?1:-1:n}return t.curr.id.client-e.curr.id.client}),i.length!==0;){let e=i[0],t=e.curr.id.client;if(a!==null){let n=e.curr,r=!1;for(;n!==null&&n.id.clock+n.length<=a.struct.id.clock+a.struct.length&&n.id.client>=a.struct.id.client;)n=e.next(),r=!0;if(n===null||n.id.client!==t||r&&n.id.clock>a.struct.id.clock+a.struct.length)continue;if(t!==a.struct.id.client)W(s,a.struct,a.offset),a={struct:n,offset:0},e.next();else if(a.struct.id.clock+a.struct.length<n.id.clock){if(a.struct.constructor===$)a.struct.length=n.id.clock+n.length-a.struct.id.clock;else{W(s,a.struct,a.offset);let e=n.id.clock-a.struct.id.clock-a.struct.length;a={struct:new $(z(t,a.struct.id.clock+a.struct.length),e),offset:0}}}else{let t=a.struct.id.clock+a.struct.length-n.id.clock;t>0&&(a.struct.constructor===$?a.struct.length-=t:n=pa(n,t)),a.struct.mergeWith(n)||(W(s,a.struct,a.offset),a={struct:n,offset:0},e.next())}}else a={struct:e.curr,offset:0},e.next();for(let n=e.curr;n!==null&&n.id.client===t&&n.id.clock===a.struct.id.clock+a.struct.length&&n.constructor!==$;n=e.next())W(s,a.struct,a.offset),a={struct:n,offset:0}}return a!==null&&(W(s,a.struct,a.offset),a=null),_a(s),qr(o,Ur(r.map(e=>Jr(e)))),o.toUint8Array()},ha=(e,t,n=ti,r=R)=>{let i=_i(t),a=new r,o=new da(a),s=new n(T(e)),c=new ua(s,!1);for(;c.curr;){let e=c.curr,t=e.id.client,n=i.get(t)||0;if(c.curr.constructor===$){c.next();continue}if(e.id.clock+e.length>n)for(W(o,e,h(n-e.id.clock,0)),c.next();c.curr&&c.curr.id.client===t;)W(o,c.curr,0),c.next();else for(;c.curr&&c.curr.id.client===t&&c.curr.id.clock+c.curr.length<=n;)c.next()}return _a(o),qr(a,Jr(s)),a.toUint8Array()},ga=e=>{e.written>0&&(e.clientStructs.push({written:e.written,restEncoder:_(e.encoder.restEncoder)}),e.encoder.restEncoder=g(),e.written=0)},W=(e,t,n)=>{e.written>0&&e.currClient!==t.id.client&&ga(e),e.written===0&&(e.currClient=t.id.client,e.encoder.writeClient(t.id.client),y(e.encoder.restEncoder,t.id.clock+n)),t.write(e.encoder,n),e.written++},_a=e=>{ga(e);let t=e.encoder.restEncoder;y(t,e.clientStructs.length);for(let n=0;n<e.clientStructs.length;n++){let r=e.clientStructs[n];y(t,r.written),Ee(t,r.restEncoder)}},va=(e,t,n,r)=>{let i=new n(T(e)),a=new ua(i,!1),o=new r,s=new da(o);for(let e=a.curr;e!==null;e=a.next())W(s,t(e),0);return _a(s),qr(o,Jr(i)),o.toUint8Array()},ya=e=>va(e,Et,ti,ri),ba=`You must not compute changes after the event-handler fired.`,xa=class{constructor(e,t){this.target=e,this.currentTarget=e,this.transaction=t,this._changes=null,this._keys=null,this._delta=null,this._path=null}get path(){return this._path||=Sa(this.currentTarget,this.target)}deletes(e){return Vr(this.transaction.deleteSet,e.id)}get keys(){if(this._keys===null){if(this.transaction.doc._transactionCleanups.length===0)throw S(ba);let e=new Map,t=this.target;this.transaction.changed.get(t).forEach(n=>{if(n!==null){let r=t._map.get(n),i,a;if(this.adds(r)){let e=r.left;for(;e!==null&&this.adds(e);)e=e.left;if(this.deletes(r)){if(e!==null&&this.deletes(e))i=`delete`,a=o(e.content.getContent());else return}else e!==null&&this.deletes(e)?(i=`update`,a=o(e.content.getContent())):(i=`add`,a=void 0)}else if(this.deletes(r))i=`delete`,a=o(r.content.getContent());else return;e.set(n,{action:i,oldValue:a})}}),this._keys=e}return this._keys}get delta(){return this.changes.delta}adds(e){return e.id.clock>=(this.transaction.beforeState.get(e.id.client)||0)}get changes(){let e=this._changes;if(e===null){if(this.transaction.doc._transactionCleanups.length===0)throw S(ba);let t=this.target,n=a(),r=a(),i=[];if(e={added:n,deleted:r,delta:i,keys:this.keys},this.transaction.changed.get(t).has(null)){let e=null,a=()=>{e&&i.push(e)};for(let i=t._start;i!==null;i=i.right)i.deleted?this.deletes(i)&&!this.adds(i)&&((e===null||e.delete===void 0)&&(a(),e={delete:0}),e.delete+=i.length,r.add(i)):this.adds(i)?((e===null||e.insert===void 0)&&(a(),e={insert:[]}),e.insert=e.insert.concat(i.content.getContent()),n.add(i)):((e===null||e.retain===void 0)&&(a(),e={retain:0}),e.retain+=i.length);e!==null&&e.retain===void 0&&a()}this._changes=e}return e}},Sa=(e,t)=>{let n=[];for(;t._item!==null&&t!==e;){if(t._item.parentSub!==null)n.unshift(t._item.parentSub);else{let e=0,r=t._item.parent._start;for(;r!==t._item&&r!==null;)!r.deleted&&r.countable&&(e+=r.length),r=r.right;n.unshift(e)}t=t._item.parent}return n},G=()=>{Mr(`Invalid access: Add Yjs type to a document before reading data.`)},Ca=80,wa=0,Ta=class{constructor(e,t){e.marker=!0,this.p=e,this.index=t,this.timestamp=wa++}},Ea=e=>{e.timestamp=wa++},Da=(e,t,n)=>{e.p.marker=!1,e.p=t,t.marker=!0,e.index=n,e.timestamp=wa++},Oa=(e,t,n)=>{if(e.length>=Ca){let r=e.reduce((e,t)=>e.timestamp<t.timestamp?e:t);return Da(r,t,n),r}{let r=new Ta(t,n);return e.push(r),r}},ka=(e,t)=>{if(e._start===null||t===0||e._searchMarker===null)return null;let n=e._searchMarker.length===0?null:e._searchMarker.reduce((e,n)=>te(t-e.index)<te(t-n.index)?e:n),r=e._start,i=0;for(n!==null&&(r=n.p,i=n.index,Ea(n));r.right!==null&&i<t;){if(!r.deleted&&r.countable){if(t<i+r.length)break;i+=r.length}r=r.right}for(;r.left!==null&&i>t;)r=r.left,!r.deleted&&r.countable&&(i-=r.length);for(;r.left!==null&&r.left.id.client===r.id.client&&r.left.id.clock+r.left.length===r.id.clock;)r=r.left,!r.deleted&&r.countable&&(i-=r.length);return n!==null&&te(n.index-i)<r.parent.length/Ca?(Da(n,r,i),n):Oa(e._searchMarker,r,i)},Aa=(e,t,n)=>{for(let r=e.length-1;r>=0;r--){let i=e[r];if(n>0){let t=i.p;for(t.marker=!1;t&&(t.deleted||!t.countable);)t=t.left,t&&!t.deleted&&t.countable&&(i.index-=t.length);if(t===null||t.marker===!0){e.splice(r,1);continue}i.p=t,t.marker=!0}(t<i.index||n>0&&t===i.index)&&(i.index=h(t,i.index+n))}},ja=(e,t,r)=>{let i=e,a=t.changedParentTypes;for(;n(a,e,()=>[]).push(r),e._item!==null;)e=e._item.parent;Ei(i._eH,r,t)},K=class{constructor(){this._item=null,this._map=new Map,this._start=null,this.doc=null,this._length=0,this._eH=Ci(),this._dEH=Ci(),this._searchMarker=null}get parent(){return this._item?this._item.parent:null}_integrate(e,t){this.doc=e,this._item=t}_copy(){throw C()}clone(){throw C()}_write(e){}get _first(){let e=this._start;for(;e!==null&&e.deleted;)e=e.right;return e}_callObserver(e,t){!e.local&&this._searchMarker&&(this._searchMarker.length=0)}observe(e){wi(this._eH,e)}observeDeep(e){wi(this._dEH,e)}unobserve(e){Ti(this._eH,e)}unobserveDeep(e){Ti(this._dEH,e)}toJSON(){}},Ma=(e,t,n)=>{e.doc??G(),t<0&&(t=e._length+t),n<0&&(n=e._length+n);let r=n-t,i=[],a=e._start;for(;a!==null&&r>0;){if(a.countable&&!a.deleted){let e=a.content.getContent();if(e.length<=t)t-=e.length;else{for(let n=t;n<e.length&&r>0;n++)i.push(e[n]),r--;t=0}}a=a.right}return i},Na=e=>{e.doc??G();let t=[],n=e._start;for(;n!==null;){if(n.countable&&!n.deleted){let e=n.content.getContent();for(let n=0;n<e.length;n++)t.push(e[n])}n=n.right}return t},Pa=(e,t)=>{let n=0,r=e._start;for(e.doc??G();r!==null;){if(r.countable&&!r.deleted){let i=r.content.getContent();for(let r=0;r<i.length;r++)t(i[r],n++,e)}r=r.right}},Fa=(e,t)=>{let n=[];return Pa(e,(r,i)=>{n.push(t(r,i,e))}),n},Ia=e=>{let t=e._start,n=null,r=0;return{[Symbol.iterator](){return this},next:()=>{if(n===null){for(;t!==null&&t.deleted;)t=t.right;if(t===null)return{done:!0,value:void 0};n=t.content.getContent(),r=0,t=t.right}let e=n[r++];return n.length<=r&&(n=null),{done:!1,value:e}}}},La=(e,t)=>{e.doc??G();let n=ka(e,t),r=e._start;for(n!==null&&(r=n.p,t-=n.index);r!==null;r=r.right)if(!r.deleted&&r.countable){if(t<r.length)return r.content.getContent()[t];t-=r.length}},Ra=(e,t,n,r)=>{let i=n,a=e.doc,o=a.clientID,s=a.store,c=n===null?t._start:n.right,l=[],u=()=>{l.length>0&&(i=new Q(z(o,B(s,o)),i,i&&i.lastId,c,c&&c.id,t,null,new Go(l)),i.integrate(e,0),l=[])};r.forEach(n=>{if(n===null)l.push(n);else switch(n.constructor){case Number:case Object:case Boolean:case Array:case String:l.push(n);break;default:switch(u(),n.constructor){case Uint8Array:case ArrayBuffer:i=new Q(z(o,B(s,o)),i,i&&i.lastId,c,c&&c.id,t,null,new Mo(new Uint8Array(n))),i.integrate(e,0);break;case Zr:i=new Q(z(o,B(s,o)),i,i&&i.lastId,c,c&&c.id,t,null,new Lo(n)),i.integrate(e,0);break;default:if(n instanceof K)i=new Q(z(o,B(s,o)),i,i&&i.lastId,c,c&&c.id,t,null,new Z(n)),i.integrate(e,0);else throw Error(`Unexpected content type in insert operation`)}}}),u()},za=()=>S(`Length exceeded!`),Ba=(e,t,n,r)=>{if(n>t._length)throw za();if(n===0)return t._searchMarker&&Aa(t._searchMarker,n,r.length),Ra(e,t,null,r);let i=n,a=ka(t,n),o=t._start;for(a!==null&&(o=a.p,n-=a.index,n===0&&(o=o.prev,n+=o&&o.countable&&!o.deleted?o.length:0));o!==null;o=o.right)if(!o.deleted&&o.countable){if(n<=o.length){n<o.length&&H(e,z(o.id.client,o.id.clock+n));break}n-=o.length}return t._searchMarker&&Aa(t._searchMarker,i,r.length),Ra(e,t,o,r)},Va=(e,t,n)=>{let r=(t._searchMarker||[]).reduce((e,t)=>t.index>e.index?t:e,{index:0,p:t._start}).p;if(r)for(;r.right;)r=r.right;return Ra(e,t,r,n)},Ha=(e,t,n,r)=>{if(r===0)return;let i=n,a=r,o=ka(t,n),s=t._start;for(o!==null&&(s=o.p,n-=o.index);s!==null&&n>0;s=s.right)!s.deleted&&s.countable&&(n<s.length&&H(e,z(s.id.client,s.id.clock+n)),n-=s.length);for(;r>0&&s!==null;)s.deleted||(r<s.length&&H(e,z(s.id.client,s.id.clock+r)),s.delete(e),r-=s.length),s=s.right;if(r>0)throw za();t._searchMarker&&Aa(t._searchMarker,i,-a+r)},Ua=(e,t,n)=>{let r=t._map.get(n);r!==void 0&&r.delete(e)},Wa=(e,t,n,r)=>{let i=t._map.get(n)||null,a=e.doc,o=a.clientID,s;if(r==null)s=new Go([r]);else switch(r.constructor){case Number:case Object:case Boolean:case Array:case String:case Date:case BigInt:s=new Go([r]);break;case Uint8Array:s=new Mo(r);break;case Zr:s=new Lo(r);break;default:if(r instanceof K)s=new Z(r);else throw Error(`Unexpected content type`)}new Q(z(o,B(a.store,o)),i,i&&i.lastId,null,null,t,n,s).integrate(e,0)},Ga=(e,t)=>{e.doc??G();let n=e._map.get(t);return n!==void 0&&!n.deleted?n.content.getContent()[n.length-1]:void 0},Ka=e=>{let t={};return e.doc??G(),e._map.forEach((e,n)=>{e.deleted||(t[n]=e.content.getContent()[e.length-1])}),t},qa=(e,t)=>{e.doc??G();let n=e._map.get(t);return n!==void 0&&!n.deleted},Ja=(e,t)=>{let n={};return e._map.forEach((e,r)=>{let i=e;for(;i!==null&&(!t.sv.has(i.id.client)||i.id.clock>=(t.sv.get(i.id.client)||0));)i=i.left;i!==null&&Hi(i,t)&&(n[r]=i.content.getContent()[i.length-1])}),n},Ya=e=>(e.doc??G(),Fr(e._map.entries(),e=>!e[1].deleted)),Xa=class extends xa{},Za=class e extends K{constructor(){super(),this._prelimContent=[],this._searchMarker=[]}static from(t){let n=new e;return n.push(t),n}_integrate(e,t){super._integrate(e,t),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new e}clone(){let t=new e;return t.insert(0,this.toArray().map(e=>e instanceof K?e.clone():e)),t}get length(){return this.doc??G(),this._length}_callObserver(e,t){super._callObserver(e,t),ja(this,e,new Xa(this,e))}insert(e,t){this.doc===null?this._prelimContent.splice(e,0,...t):U(this.doc,n=>{Ba(n,this,e,t)})}push(e){this.doc===null?this._prelimContent.push(...e):U(this.doc,t=>{Va(t,this,e)})}unshift(e){this.insert(0,e)}delete(e,t=1){this.doc===null?this._prelimContent.splice(e,t):U(this.doc,n=>{Ha(n,this,e,t)})}get(e){return La(this,e)}toArray(){return Na(this)}slice(e=0,t=this.length){return Ma(this,e,t)}toJSON(){return this.map(e=>e instanceof K?e.toJSON():e)}map(e){return Fa(this,e)}forEach(e){Pa(this,e)}[Symbol.iterator](){return Ia(this)}_write(e){e.writeTypeRef(Yo)}},Qa=e=>new Za,$a=class extends xa{constructor(e,t,n){super(e,t),this.keysChanged=n}},eo=class e extends K{constructor(e){super(),this._prelimContent=null,this._prelimContent=e===void 0?new Map:new Map(e)}_integrate(e,t){super._integrate(e,t),this._prelimContent.forEach((e,t)=>{this.set(t,e)}),this._prelimContent=null}_copy(){return new e}clone(){let t=new e;return this.forEach((e,n)=>{t.set(n,e instanceof K?e.clone():e)}),t}_callObserver(e,t){ja(this,e,new $a(this,e,t))}toJSON(){this.doc??G();let e={};return this._map.forEach((t,n)=>{if(!t.deleted){let r=t.content.getContent()[t.length-1];e[n]=r instanceof K?r.toJSON():r}}),e}get size(){return[...Ya(this)].length}keys(){return Ir(Ya(this),e=>e[0])}values(){return Ir(Ya(this),e=>e[1].content.getContent()[e[1].length-1])}entries(){return Ir(Ya(this),e=>[e[0],e[1].content.getContent()[e[1].length-1]])}forEach(e){this.doc??G(),this._map.forEach((t,n)=>{t.deleted||e(t.content.getContent()[t.length-1],n,this)})}[Symbol.iterator](){return this.entries()}delete(e){this.doc===null?this._prelimContent.delete(e):U(this.doc,t=>{Ua(t,this,e)})}set(e,t){return this.doc===null?this._prelimContent.set(e,t):U(this.doc,n=>{Wa(n,this,e,t)}),t}get(e){return Ga(this,e)}has(e){return qa(this,e)}clear(){this.doc===null?this._prelimContent.clear():U(this.doc,e=>{this.forEach(function(t,n,r){Ua(e,r,n)})})}_write(e){e.writeTypeRef(Xo)}},to=e=>new eo,q=(e,t)=>e===t||typeof e==`object`&&typeof t==`object`&&e&&t&&St(e,t),no=class{constructor(e,t,n,r){this.left=e,this.right=t,this.index=n,this.currentAttributes=r}forward(){switch(this.right===null&&w(),this.right.content.constructor){case Y:this.right.deleted||oo(this.currentAttributes,this.right.content);break;default:this.right.deleted||(this.index+=this.right.length)}this.left=this.right,this.right=this.right.right}},ro=(e,t,n)=>{for(;t.right!==null&&n>0;){switch(t.right.content.constructor){case Y:t.right.deleted||oo(t.currentAttributes,t.right.content);break;default:t.right.deleted||(n<t.right.length&&H(e,z(t.right.id.client,t.right.id.clock+n)),t.index+=t.right.length,n-=t.right.length)}t.left=t.right,t.right=t.right.right}return t},io=(e,t,n,r)=>{let i=new Map,a=r?ka(t,n):null;return a?ro(e,new no(a.p.left,a.p,a.index,i),n-a.index):ro(e,new no(null,t._start,0,i),n)},ao=(e,t,n,r)=>{for(;n.right!==null&&(n.right.deleted===!0||n.right.content.constructor===Y&&q(r.get(n.right.content.key),n.right.content.value));)n.right.deleted||r.delete(n.right.content.key),n.forward();let i=e.doc,a=i.clientID;r.forEach((r,o)=>{let s=n.left,c=n.right,l=new Q(z(a,B(i.store,a)),s,s&&s.lastId,c,c&&c.id,t,null,new Y(o,r));l.integrate(e,0),n.right=l,n.forward()})},oo=(e,t)=>{let{key:n,value:r}=t;r===null?e.delete(n):e.set(n,r)},so=(e,t)=>{for(;e.right!==null&&(e.right.deleted||e.right.content.constructor===Y&&q(t[e.right.content.key]??null,e.right.content.value));)e.forward()},co=(e,t,n,r)=>{let i=e.doc,a=i.clientID,o=new Map;for(let s in r){let c=r[s],l=n.currentAttributes.get(s)??null;if(!q(l,c)){o.set(s,l);let{left:r,right:u}=n;n.right=new Q(z(a,B(i.store,a)),r,r&&r.lastId,u,u&&u.id,t,null,new Y(s,c)),n.right.integrate(e,0),n.forward()}}return o},lo=(e,t,n,r,i)=>{n.currentAttributes.forEach((e,t)=>{i[t]===void 0&&(i[t]=null)});let a=e.doc,o=a.clientID;so(n,i);let s=co(e,t,n,i),c=r.constructor===String?new X(r):r instanceof K?new Z(r):new zo(r),{left:l,right:u,index:d}=n;t._searchMarker&&Aa(t._searchMarker,n.index,c.getLength()),u=new Q(z(o,B(a.store,o)),l,l&&l.lastId,u,u&&u.id,t,null,c),u.integrate(e,0),n.right=u,n.index=d,n.forward(),ao(e,t,n,s)},uo=(e,t,n,r,i)=>{let a=e.doc,o=a.clientID;so(n,i);let s=co(e,t,n,i);iterationLoop:for(;n.right!==null&&(r>0||s.size>0&&(n.right.deleted||n.right.content.constructor===Y));){if(!n.right.deleted)switch(n.right.content.constructor){case Y:{let{key:t,value:a}=n.right.content,o=i[t];if(o!==void 0){if(q(o,a))s.delete(t);else{if(r===0)break iterationLoop;s.set(t,a)}n.right.delete(e)}else n.currentAttributes.set(t,a);break}default:r<n.right.length&&H(e,z(n.right.id.client,n.right.id.clock+r)),r-=n.right.length}n.forward()}if(r>0){let i=``;for(;r>0;r--)i+=`
|
|
3
|
-
`;n.right=new Q(z(o,B(a.store,o)),n.left,n.left&&n.left.lastId,n.right,n.right&&n.right.id,t,null,new X(i)),n.right.integrate(e,0),n.forward()}ao(e,t,n,s)},fo=(t,n,r,i,a)=>{let o=n,s=e();for(;o&&(!o.countable||o.deleted);){if(!o.deleted&&o.content.constructor===Y){let e=o.content;s.set(e.key,e)}o=o.right}let c=0,l=!1;for(;n!==o;){if(r===n&&(l=!0),!n.deleted){let e=n.content;switch(e.constructor){case Y:{let{key:r,value:o}=e,u=i.get(r)??null;(s.get(r)!==e||u===o)&&(n.delete(t),c++,!l&&(a.get(r)??null)===o&&u!==o&&(u===null?a.delete(r):a.set(r,u))),!l&&!n.deleted&&oo(a,e);break}}}n=n.right}return c},po=(e,t)=>{for(;t&&t.right&&(t.right.deleted||!t.right.countable);)t=t.right;let n=new Set;for(;t&&(t.deleted||!t.countable);){if(!t.deleted&&t.content.constructor===Y){let r=t.content.key;n.has(r)?t.delete(e):n.add(r)}t=t.left}},mo=n=>{let r=0;return U(n.doc,i=>{let a=n._start,o=n._start,s=e(),c=t(s);for(;o;){if(o.deleted===!1)switch(o.content.constructor){case Y:oo(c,o.content);break;default:r+=fo(i,a,o,s,c),s=t(c),a=o}o=o.right}}),r},ho=e=>{let t=new Set,n=e.doc;for(let[r,i]of e.afterState.entries()){let a=e.beforeState.get(r)||0;i!==a&&Zi(e,n.store.clients.get(r),a,i,e=>{!e.deleted&&e.content.constructor===Y&&e.constructor!==J&&t.add(e.parent)})}U(n,n=>{zr(e,e.deleteSet,e=>{if(e instanceof J||!e.parent._hasFormatting||t.has(e.parent))return;let r=e.parent;e.content.constructor===Y?t.add(r):po(n,e)});for(let e of t)mo(e)})},go=(e,n,r)=>{let i=r,a=t(n.currentAttributes),o=n.right;for(;r>0&&n.right!==null;){if(n.right.deleted===!1)switch(n.right.content.constructor){case Z:case zo:case X:r<n.right.length&&H(e,z(n.right.id.client,n.right.id.clock+r)),r-=n.right.length,n.right.delete(e)}n.forward()}o&&fo(e,o,n.right,a,n.currentAttributes);let s=(n.left||n.right).parent;return s._searchMarker&&Aa(s._searchMarker,n.index,-i+r),n},_o=class extends xa{constructor(e,t,n){super(e,t),this.childListChanged=!1,this.keysChanged=new Set,n.forEach(e=>{e===null?this.childListChanged=!0:this.keysChanged.add(e)})}get changes(){if(this._changes===null){let e={keys:this.keys,delta:this.delta,added:new Set,deleted:new Set};this._changes=e}return this._changes}get delta(){if(this._delta===null){let e=this.target.doc,t=[];U(e,e=>{let n=new Map,r=new Map,i=this.target._start,a=null,o={},s=``,c=0,l=0,u=()=>{if(a!==null){let e=null;switch(a){case`delete`:l>0&&(e={delete:l}),l=0;break;case`insert`:(typeof s==`object`||s.length>0)&&(e={insert:s},n.size>0&&(e.attributes={},n.forEach((t,n)=>{t!==null&&(e.attributes[n]=t)}))),s=``;break;case`retain`:c>0&&(e={retain:c},yt(o)||(e.attributes=mt({},o))),c=0}e&&t.push(e),a=null}};for(;i!==null;){switch(i.content.constructor){case Z:case zo:this.adds(i)?this.deletes(i)||(u(),a=`insert`,s=i.content.getContent()[0],u()):this.deletes(i)?(a!==`delete`&&(u(),a=`delete`),l+=1):i.deleted||(a!==`retain`&&(u(),a=`retain`),c+=1);break;case X:this.adds(i)?this.deletes(i)||(a!==`insert`&&(u(),a=`insert`),s+=i.content.str):this.deletes(i)?(a!==`delete`&&(u(),a=`delete`),l+=i.length):i.deleted||(a!==`retain`&&(u(),a=`retain`),c+=i.length);break;case Y:{let{key:t,value:s}=i.content;if(this.adds(i))this.deletes(i)||(q(n.get(t)??null,s)?s!==null&&i.delete(e):(a===`retain`&&u(),q(s,r.get(t)??null)?delete o[t]:o[t]=s));else if(this.deletes(i)){r.set(t,s);let e=n.get(t)??null;q(e,s)||(a===`retain`&&u(),o[t]=e)}else if(!i.deleted){r.set(t,s);let n=o[t];n!==void 0&&(q(n,s)?n!==null&&i.delete(e):(a===`retain`&&u(),s===null?delete o[t]:o[t]=s))}i.deleted||(a===`insert`&&u(),oo(n,i.content));break}}i=i.right}for(u();t.length>0;){let e=t[t.length-1];if(e.retain!==void 0&&e.attributes===void 0)t.pop();else break}}),this._delta=t}return this._delta}},vo=class e extends K{constructor(e){super(),this._pending=e===void 0?[]:[()=>this.insert(0,e)],this._searchMarker=[],this._hasFormatting=!1}get length(){return this.doc??G(),this._length}_integrate(e,t){super._integrate(e,t);try{this._pending.forEach(e=>e())}catch(e){console.error(e)}this._pending=null}_copy(){return new e}clone(){let t=new e;return t.applyDelta(this.toDelta()),t}_callObserver(e,t){super._callObserver(e,t);let n=new _o(this,e,t);ja(this,e,n),!e.local&&this._hasFormatting&&(e._needFormattingCleanup=!0)}toString(){this.doc??G();let e=``,t=this._start;for(;t!==null;)!t.deleted&&t.countable&&t.content.constructor===X&&(e+=t.content.str),t=t.right;return e}toJSON(){return this.toString()}applyDelta(e,{sanitize:t=!0}={}){this.doc===null?this._pending.push(()=>this.applyDelta(e)):U(this.doc,n=>{let r=new no(null,this._start,0,new Map);for(let i=0;i<e.length;i++){let a=e[i];if(a.insert!==void 0){let o=!t&&typeof a.insert==`string`&&i===e.length-1&&r.right===null&&a.insert.slice(-1)===`
|
|
4
|
-
`?a.insert.slice(0,-1):a.insert;(typeof o!=`string`||o.length>0)&&lo(n,this,r,o,a.attributes||{})}else a.retain===void 0?a.delete!==void 0&&go(n,r,a.delete):uo(n,this,r,a.retain,a.attributes||{})}})}toDelta(e,t,n){this.doc??G();let r=[],i=new Map,a=this.doc,o=``,s=this._start;function c(){if(o.length>0){let e={},t=!1;i.forEach((n,r)=>{t=!0,e[r]=n});let n={insert:o};t&&(n.attributes=e),r.push(n),o=``}}let l=()=>{for(;s!==null;){if(Hi(s,e)||t!==void 0&&Hi(s,t))switch(s.content.constructor){case X:{let r=i.get(`ychange`);e!==void 0&&!Hi(s,e)?(r===void 0||r.user!==s.id.client||r.type!==`removed`)&&(c(),i.set(`ychange`,n?n(`removed`,s.id):{type:`removed`})):t!==void 0&&!Hi(s,t)?(r===void 0||r.user!==s.id.client||r.type!==`added`)&&(c(),i.set(`ychange`,n?n(`added`,s.id):{type:`added`})):r!==void 0&&(c(),i.delete(`ychange`)),o+=s.content.str;break}case Z:case zo:{c();let e={insert:s.content.getContent()[0]};if(i.size>0){let t={};e.attributes=t,i.forEach((e,n)=>{t[n]=e})}r.push(e);break}case Y:Hi(s,e)&&(c(),oo(i,s.content))}s=s.right}c()};return e||t?U(a,n=>{e&&Ui(n,e),t&&Ui(n,t),l()},`cleanup`):l(),r}insert(e,t,n){if(t.length<=0)return;let r=this.doc;r===null?this._pending.push(()=>this.insert(e,t,n)):U(r,r=>{let i=io(r,this,e,!n);n||(n={},i.currentAttributes.forEach((e,t)=>{n[t]=e})),lo(r,this,i,t,n)})}insertEmbed(e,t,n){let r=this.doc;r===null?this._pending.push(()=>this.insertEmbed(e,t,n||{})):U(r,r=>{let i=io(r,this,e,!n);lo(r,this,i,t,n||{})})}delete(e,t){if(t===0)return;let n=this.doc;n===null?this._pending.push(()=>this.delete(e,t)):U(n,n=>{go(n,io(n,this,e,!0),t)})}format(e,t,n){if(t===0)return;let r=this.doc;r===null?this._pending.push(()=>this.format(e,t,n)):U(r,r=>{let i=io(r,this,e,!1);i.right!==null&&uo(r,this,i,t,n)})}removeAttribute(e){this.doc===null?this._pending.push(()=>this.removeAttribute(e)):U(this.doc,t=>{Ua(t,this,e)})}setAttribute(e,t){this.doc===null?this._pending.push(()=>this.setAttribute(e,t)):U(this.doc,n=>{Wa(n,this,e,t)})}getAttribute(e){return Ga(this,e)}getAttributes(){return Ka(this)}_write(e){e.writeTypeRef(Zo)}},yo=e=>new vo,bo=class{constructor(e,t=()=>!0){this._filter=t,this._root=e,this._currentNode=e._start,this._firstCall=!0,e.doc??G()}[Symbol.iterator](){return this}next(){let e=this._currentNode,t=e&&e.content&&e.content.type;if(e!==null&&(!this._firstCall||e.deleted||!this._filter(t)))do if(t=e.content.type,!e.deleted&&(t.constructor===Co||t.constructor===xo)&&t._start!==null)e=t._start;else for(;e!==null;){let t=e.next;if(t!==null){e=t;break}e=e.parent===this._root?null:e.parent._item}while(e!==null&&(e.deleted||!this._filter(e.content.type)));return this._firstCall=!1,e===null?{value:void 0,done:!0}:(this._currentNode=e,{value:e.content.type,done:!1})}},xo=class e extends K{constructor(){super(),this._prelimContent=[]}get firstChild(){let e=this._first;return e?e.content.getContent()[0]:null}_integrate(e,t){super._integrate(e,t),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new e}clone(){let t=new e;return t.insert(0,this.toArray().map(e=>e instanceof K?e.clone():e)),t}get length(){return this.doc??G(),this._prelimContent===null?this._length:this._prelimContent.length}createTreeWalker(e){return new bo(this,e)}querySelector(e){e=e.toUpperCase();let t=new bo(this,t=>t.nodeName&&t.nodeName.toUpperCase()===e).next();return t.done?null:t.value}querySelectorAll(e){return e=e.toUpperCase(),c(new bo(this,t=>t.nodeName&&t.nodeName.toUpperCase()===e))}_callObserver(e,t){ja(this,e,new To(this,t,e))}toString(){return Fa(this,e=>e.toString()).join(``)}toJSON(){return this.toString()}toDOM(e=document,t={},n){let r=e.createDocumentFragment();return n!==void 0&&n._createAssociation(r,this),Pa(this,i=>{r.insertBefore(i.toDOM(e,t,n),null)}),r}insert(e,t){this.doc===null?this._prelimContent.splice(e,0,...t):U(this.doc,n=>{Ba(n,this,e,t)})}insertAfter(e,t){if(this.doc!==null)U(this.doc,n=>{let r=e&&e instanceof K?e._item:e;Ra(n,this,r,t)});else{let n=this._prelimContent,r=e===null?0:n.findIndex(t=>t===e)+1;if(r===0&&e!==null)throw S(`Reference item not found`);n.splice(r,0,...t)}}delete(e,t=1){this.doc===null?this._prelimContent.splice(e,t):U(this.doc,n=>{Ha(n,this,e,t)})}toArray(){return Na(this)}push(e){this.insert(this.length,e)}unshift(e){this.insert(0,e)}get(e){return La(this,e)}slice(e=0,t=this.length){return Ma(this,e,t)}forEach(e){Pa(this,e)}_write(e){e.writeTypeRef($o)}},So=e=>new xo,Co=class e extends xo{constructor(e=`UNDEFINED`){super(),this.nodeName=e,this._prelimAttrs=new Map}get nextSibling(){let e=this._item?this._item.next:null;return e?e.content.type:null}get prevSibling(){let e=this._item?this._item.prev:null;return e?e.content.type:null}_integrate(e,t){super._integrate(e,t),this._prelimAttrs.forEach((e,t)=>{this.setAttribute(t,e)}),this._prelimAttrs=null}_copy(){return new e(this.nodeName)}clone(){let t=new e(this.nodeName);return gt(this.getAttributes(),(e,n)=>{t.setAttribute(n,e)}),t.insert(0,this.toArray().map(e=>e instanceof K?e.clone():e)),t}toString(){let e=this.getAttributes(),t=[],n=[];for(let t in e)n.push(t);n.sort();let r=n.length;for(let i=0;i<r;i++){let r=n[i];t.push(r+`="`+e[r]+`"`)}let i=this.nodeName.toLocaleLowerCase();return`<${i}${t.length>0?` `+t.join(` `):``}>${super.toString()}</${i}>`}removeAttribute(e){this.doc===null?this._prelimAttrs.delete(e):U(this.doc,t=>{Ua(t,this,e)})}setAttribute(e,t){this.doc===null?this._prelimAttrs.set(e,t):U(this.doc,n=>{Wa(n,this,e,t)})}getAttribute(e){return Ga(this,e)}hasAttribute(e){return qa(this,e)}getAttributes(e){return e?Ja(this,e):Ka(this)}toDOM(e=document,t={},n){let r=e.createElement(this.nodeName),i=this.getAttributes();for(let e in i){let t=i[e];typeof t==`string`&&r.setAttribute(e,t)}return Pa(this,i=>{r.appendChild(i.toDOM(e,t,n))}),n!==void 0&&n._createAssociation(r,this),r}_write(e){e.writeTypeRef(Qo),e.writeKey(this.nodeName)}},wo=e=>new Co(e.readKey()),To=class extends xa{constructor(e,t,n){super(e,n),this.childListChanged=!1,this.attributesChanged=new Set,t.forEach(e=>{e===null?this.childListChanged=!0:this.attributesChanged.add(e)})}},Eo=class e extends eo{constructor(e){super(),this.hookName=e}_copy(){return new e(this.hookName)}clone(){let t=new e(this.hookName);return this.forEach((e,n)=>{t.set(n,e)}),t}toDOM(e=document,t={},n){let r=t[this.hookName],i;return i=r===void 0?document.createElement(this.hookName):r.createDom(this),i.setAttribute(`data-yjs-hook`,this.hookName),n!==void 0&&n._createAssociation(i,this),i}_write(e){e.writeTypeRef(es),e.writeKey(this.hookName)}},Do=e=>new Eo(e.readKey()),Oo=class e extends vo{get nextSibling(){let e=this._item?this._item.next:null;return e?e.content.type:null}get prevSibling(){let e=this._item?this._item.prev:null;return e?e.content.type:null}_copy(){return new e}clone(){let t=new e;return t.applyDelta(this.toDelta()),t}toDOM(e=document,t,n){let r=e.createTextNode(this.toString());return n!==void 0&&n._createAssociation(r,this),r}toString(){return this.toDelta().map(e=>{let t=[];for(let n in e.attributes){let r=[];for(let t in e.attributes[n])r.push({key:t,value:e.attributes[n][t]});r.sort((e,t)=>e.key<t.key?-1:1),t.push({nodeName:n,attrs:r})}t.sort((e,t)=>e.nodeName<t.nodeName?-1:1);let n=``;for(let e=0;e<t.length;e++){let r=t[e];n+=`<${r.nodeName}`;for(let e=0;e<r.attrs.length;e++){let t=r.attrs[e];n+=` ${t.key}="${t.value}"`}n+=`>`}n+=e.insert;for(let e=t.length-1;e>=0;e--)n+=`</${t[e].nodeName}>`;return n}).join(``)}toJSON(){return this.toString()}_write(e){e.writeTypeRef(ts)}},ko=e=>new Oo,Ao=class{constructor(e,t){this.id=e,this.length=t}get deleted(){throw C()}mergeWith(e){return!1}write(e,t,n){throw C()}integrate(e,t){throw C()}},jo=0,J=class extends Ao{get deleted(){return!0}delete(){}mergeWith(e){return this.constructor===e.constructor&&(this.length+=e.length,!0)}integrate(e,t){t>0&&(this.id.clock+=t,this.length-=t),Ki(e.doc.store,this)}write(e,t){e.writeInfo(jo),e.writeLen(this.length-t)}getMissing(e,t){return null}},Mo=class e{constructor(e){this.content=e}getLength(){return 1}getContent(){return[this.content]}isCountable(){return!0}copy(){return new e(this.content)}splice(e){throw C()}mergeWith(e){return!1}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeBuf(this.content)}getRef(){return 3}},No=e=>new Mo(e.readBuf()),Po=class e{constructor(e){this.len=e}getLength(){return this.len}getContent(){return[]}isCountable(){return!1}copy(){return new e(this.len)}splice(t){let n=new e(this.len-t);return this.len=t,n}mergeWith(e){return this.len+=e.len,!0}integrate(e,t){Wr(e.deleteSet,t.id.client,t.id.clock,this.len),t.markDeleted()}delete(e){}gc(e){}write(e,t){e.writeLen(this.len-t)}getRef(){return 1}},Fo=e=>new Po(e.readLen()),Io=(e,t)=>new Zr({guid:e,...t,shouldLoad:t.shouldLoad||t.autoLoad||!1}),Lo=class e{constructor(e){e._item&&console.error(`This document was already integrated as a sub-document. You should create a second instance instead with the same guid.`),this.doc=e;let t={};this.opts=t,e.gc||(t.gc=!1),e.autoLoad&&(t.autoLoad=!0),e.meta!==null&&(t.meta=e.meta)}getLength(){return 1}getContent(){return[this.doc]}isCountable(){return!0}copy(){return new e(Io(this.doc.guid,this.opts))}splice(e){throw C()}mergeWith(e){return!1}integrate(e,t){this.doc._item=t,e.subdocsAdded.add(this.doc),this.doc.shouldLoad&&e.subdocsLoaded.add(this.doc)}delete(e){e.subdocsAdded.has(this.doc)?e.subdocsAdded.delete(this.doc):e.subdocsRemoved.add(this.doc)}gc(e){}write(e,t){e.writeString(this.doc.guid),e.writeAny(this.opts)}getRef(){return 9}},Ro=e=>new Lo(Io(e.readString(),e.readAny())),zo=class e{constructor(e){this.embed=e}getLength(){return 1}getContent(){return[this.embed]}isCountable(){return!0}copy(){return new e(this.embed)}splice(e){throw C()}mergeWith(e){return!1}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeJSON(this.embed)}getRef(){return 5}},Bo=e=>new zo(e.readJSON()),Y=class e{constructor(e,t){this.key=e,this.value=t}getLength(){return 1}getContent(){return[]}isCountable(){return!1}copy(){return new e(this.key,this.value)}splice(e){throw C()}mergeWith(e){return!1}integrate(e,t){let n=t.parent;n._searchMarker=null,n._hasFormatting=!0}delete(e){}gc(e){}write(e,t){e.writeKey(this.key),e.writeJSON(this.value)}getRef(){return 6}},Vo=e=>new Y(e.readKey(),e.readJSON()),Ho=class e{constructor(e){this.arr=e}getLength(){return this.arr.length}getContent(){return this.arr}isCountable(){return!0}copy(){return new e(this.arr)}splice(t){let n=new e(this.arr.slice(t));return this.arr=this.arr.slice(0,t),n}mergeWith(e){return this.arr=this.arr.concat(e.arr),!0}integrate(e,t){}delete(e){}gc(e){}write(e,t){let n=this.arr.length;e.writeLen(n-t);for(let r=t;r<n;r++){let t=this.arr[r];e.writeString(t===void 0?`undefined`:JSON.stringify(t))}}getRef(){return 2}},Uo=e=>{let t=e.readLen(),n=[];for(let r=0;r<t;r++){let t=e.readString();t===`undefined`?n.push(void 0):n.push(JSON.parse(t))}return new Ho(n)},Wo=Nt(`node_env`)===`development`,Go=class e{constructor(e){this.arr=e,Wo&&wt(e)}getLength(){return this.arr.length}getContent(){return this.arr}isCountable(){return!0}copy(){return new e(this.arr)}splice(t){let n=new e(this.arr.slice(t));return this.arr=this.arr.slice(0,t),n}mergeWith(e){return this.arr=this.arr.concat(e.arr),!0}integrate(e,t){}delete(e){}gc(e){}write(e,t){let n=this.arr.length;e.writeLen(n-t);for(let r=t;r<n;r++){let t=this.arr[r];e.writeAny(t)}}getRef(){return 8}},Ko=e=>{let t=e.readLen(),n=[];for(let r=0;r<t;r++)n.push(e.readAny());return new Go(n)},X=class e{constructor(e){this.str=e}getLength(){return this.str.length}getContent(){return this.str.split(``)}isCountable(){return!0}copy(){return new e(this.str)}splice(t){let n=new e(this.str.slice(t));this.str=this.str.slice(0,t);let r=this.str.charCodeAt(t-1);return r>=55296&&r<=56319&&(this.str=this.str.slice(0,t-1)+`�`,n.str=`�`+n.str.slice(1)),n}mergeWith(e){return this.str+=e.str,!0}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeString(t===0?this.str:this.str.slice(t))}getRef(){return 4}},qo=e=>new X(e.readString()),Jo=[Qa,to,yo,wo,So,Do,ko],Yo=0,Xo=1,Zo=2,Qo=3,$o=4,es=5,ts=6,Z=class e{constructor(e){this.type=e}getLength(){return 1}getContent(){return[this.type]}isCountable(){return!0}copy(){return new e(this.type._copy())}splice(e){throw C()}mergeWith(e){return!1}integrate(e,t){this.type._integrate(e.doc,t)}delete(e){let t=this.type._start;for(;t!==null;)t.deleted?t.id.clock<(e.beforeState.get(t.id.client)||0)&&e._mergeStructs.push(t):t.delete(e),t=t.right;this.type._map.forEach(t=>{t.deleted?t.id.clock<(e.beforeState.get(t.id.client)||0)&&e._mergeStructs.push(t):t.delete(e)}),e.changed.delete(this.type)}gc(e){let t=this.type._start;for(;t!==null;)t.gc(e,!0),t=t.right;this.type._start=null,this.type._map.forEach(t=>{for(;t!==null;)t.gc(e,!0),t=t.left}),this.type._map=new Map}write(e,t){this.type._write(e)}getRef(){return 7}},ns=e=>new Z(Jo[e.readTypeRef()](e)),rs=(e,t)=>{let n=t,r=0,i;do r>0&&(n=z(n.client,n.clock+r)),i=qi(e,n),r=n.clock-i.id.clock,n=i.redone;while(n!==null&&i instanceof Q);return{item:i,diff:r}},is=(e,t)=>{for(;e!==null&&e.keep!==t;)e.keep=t,e=e.parent._item},as=(e,t,n)=>{let{client:r,clock:i}=t.id,a=new Q(z(r,i+n),t,z(r,i+n-1),t.right,t.rightOrigin,t.parent,t.parentSub,t.content.splice(n));return t.deleted&&a.markDeleted(),t.keep&&(a.keep=!0),t.redone!==null&&(a.redone=z(t.redone.client,t.redone.clock+n)),t.right=a,a.right!==null&&(a.right.left=a),e._mergeStructs.push(a),a.parentSub!==null&&a.right===null&&a.parent._map.set(a.parentSub,a),t.length=n,a},os=(e,t)=>u(e,e=>Vr(e.deletions,t)),ss=(e,t,n,r,i,a)=>{let o=e.doc,s=o.store,c=o.clientID,l=t.redone;if(l!==null)return H(e,l);let u=t.parent._item,d=null,f;if(u!==null&&u.deleted===!0){if(u.redone===null&&(!n.has(u)||ss(e,u,n,r,i,a)===null))return null;for(;u.redone!==null;)u=H(e,u.redone)}let p=u===null?t.parent:u.content.type;if(t.parentSub===null){for(d=t.left,f=t;d!==null;){let t=d;for(;t!==null&&t.parent._item!==u;)t=t.redone===null?null:H(e,t.redone);if(t!==null&&t.parent._item===u){d=t;break}d=d.left}for(;f!==null;){let t=f;for(;t!==null&&t.parent._item!==u;)t=t.redone===null?null:H(e,t.redone);if(t!==null&&t.parent._item===u){f=t;break}f=f.right}}else{if(f=null,t.right&&!i){for(d=t;d!==null&&d.right!==null&&(d.right.redone||Vr(r,d.right.id)||os(a.undoStack,d.right.id)||os(a.redoStack,d.right.id));)for(d=d.right;d.redone;)d=H(e,d.redone);if(d&&d.right!==null)return null}else d=p._map.get(t.parentSub)||null;d!==null&&d.parent._item!==u&&(d=p._map.get(t.parentSub)||null)}let ee=z(c,B(s,c)),m=new Q(ee,d,d&&d.lastId,f,f&&f.id,p,t.parentSub,t.content.copy());return t.redone=ee,is(m,!0),m.integrate(e,0),m},Q=class e extends Ao{constructor(e,t,n,r,i,a,o,s){super(e,s.getLength()),this.origin=n,this.left=t,this.right=r,this.rightOrigin=i,this.parent=a,this.parentSub=o,this.redone=null,this.content=s,this.info=this.content.isCountable()?2:0}set marker(e){(this.info&8)>0!==e&&(this.info^=8)}get marker(){return(this.info&8)>0}get keep(){return(this.info&1)>0}set keep(e){this.keep!==e&&(this.info^=1)}get countable(){return(this.info&2)>0}get deleted(){return(this.info&4)>0}set deleted(e){this.deleted!==e&&(this.info^=4)}markDeleted(){this.info|=4}getMissing(t,n){if(this.origin&&this.origin.client!==this.id.client&&this.origin.clock>=B(n,this.origin.client))return this.origin.client;if(this.rightOrigin&&this.rightOrigin.client!==this.id.client&&this.rightOrigin.clock>=B(n,this.rightOrigin.client))return this.rightOrigin.client;if(this.parent&&this.parent.constructor===Di&&this.id.client!==this.parent.client&&this.parent.clock>=B(n,this.parent.client))return this.parent.client;if(this.origin&&=(this.left=Yi(t,n,this.origin),this.left.lastId),this.rightOrigin&&=(this.right=H(t,this.rightOrigin),this.right.id),this.left&&this.left.constructor===J||this.right&&this.right.constructor===J)this.parent=null;else if(!this.parent)this.left&&this.left.constructor===e?(this.parent=this.left.parent,this.parentSub=this.left.parentSub):this.right&&this.right.constructor===e&&(this.parent=this.right.parent,this.parentSub=this.right.parentSub);else if(this.parent.constructor===Di){let e=qi(n,this.parent);this.parent=e.constructor===J?null:e.content.type}return null}integrate(e,t){if(t>0&&(this.id.clock+=t,this.left=Yi(e,e.doc.store,z(this.id.client,this.id.clock-1)),this.origin=this.left.lastId,this.content=this.content.splice(t),this.length-=t),this.parent){if(!this.left&&(!this.right||this.right.left!==null)||this.left&&this.left.right!==this.right){let t=this.left,n;if(t!==null)n=t.right;else if(this.parentSub!==null)for(n=this.parent._map.get(this.parentSub)||null;n!==null&&n.left!==null;)n=n.left;else n=this.parent._start;let r=new Set,i=new Set;for(;n!==null&&n!==this.right;){if(i.add(n),r.add(n),Oi(this.origin,n.origin)){if(n.id.client<this.id.client)t=n,r.clear();else if(Oi(this.rightOrigin,n.rightOrigin))break}else if(n.origin!==null&&i.has(qi(e.doc.store,n.origin)))r.has(qi(e.doc.store,n.origin))||(t=n,r.clear());else break;n=n.right}this.left=t}if(this.left!==null){let e=this.left.right;this.right=e,this.left.right=this}else{let e;if(this.parentSub!==null)for(e=this.parent._map.get(this.parentSub)||null;e!==null&&e.left!==null;)e=e.left;else e=this.parent._start,this.parent._start=this;this.right=e}this.right===null?this.parentSub!==null&&(this.parent._map.set(this.parentSub,this),this.left!==null&&this.left.delete(e)):this.right.left=this,this.parentSub===null&&this.countable&&!this.deleted&&(this.parent._length+=this.length),Ki(e.doc.store,this),this.content.integrate(e,this),ea(e,this.parent,this.parentSub),(this.parent._item!==null&&this.parent._item.deleted||this.parentSub!==null&&this.right!==null)&&this.delete(e)}else new J(this.id,this.length).integrate(e,0)}get next(){let e=this.right;for(;e!==null&&e.deleted;)e=e.right;return e}get prev(){let e=this.left;for(;e!==null&&e.deleted;)e=e.left;return e}get lastId(){return this.length===1?this.id:z(this.id.client,this.id.clock+this.length-1)}mergeWith(e){if(this.constructor===e.constructor&&Oi(e.origin,this.lastId)&&this.right===e&&Oi(this.rightOrigin,e.rightOrigin)&&this.id.client===e.id.client&&this.id.clock+this.length===e.id.clock&&this.deleted===e.deleted&&this.redone===null&&e.redone===null&&this.content.constructor===e.content.constructor&&this.content.mergeWith(e.content)){let t=this.parent._searchMarker;return t&&t.forEach(t=>{t.p===e&&(t.p=this,!this.deleted&&this.countable&&(t.index-=this.length))}),e.keep&&(this.keep=!0),this.right=e.right,this.right!==null&&(this.right.left=this),this.length+=e.length,!0}return!1}delete(e){if(!this.deleted){let t=this.parent;this.countable&&this.parentSub===null&&(t._length-=this.length),this.markDeleted(),Wr(e.deleteSet,this.id.client,this.id.clock,this.length),ea(e,t,this.parentSub),this.content.delete(e)}}gc(e,t){if(!this.deleted)throw w();this.content.gc(e),t?Xi(e,this,new J(this.id,this.length)):this.content=new Po(this.length)}write(e,t){let n=t>0?z(this.id.client,this.id.clock+t-1):this.origin,r=this.rightOrigin,i=this.parentSub,a=this.content.getRef()&31|(n===null?0:128)|(r===null?0:64)|(i===null?0:32);if(e.writeInfo(a),n!==null&&e.writeLeftID(n),r!==null&&e.writeRightID(r),n===null&&r===null){let t=this.parent;if(t._item!==void 0){let n=t._item;if(n===null){let n=ki(t);e.writeParentInfo(!0),e.writeString(n)}else e.writeParentInfo(!1),e.writeLeftID(n.id)}else t.constructor===String?(e.writeParentInfo(!0),e.writeString(t)):t.constructor===Di?(e.writeParentInfo(!1),e.writeLeftID(t)):w();i!==null&&e.writeString(i)}this.content.write(e,t)}},cs=(e,t)=>ls[t&31](e),ls=[()=>{w()},Fo,Uo,No,qo,Bo,Vo,ns,Ko,Ro,()=>{w()}],us=10,$=class extends Ao{get deleted(){return!0}delete(){}mergeWith(e){return this.constructor===e.constructor&&(this.length+=e.length,!0)}integrate(e,t){w()}write(e,t){e.writeInfo(us),y(e.restEncoder,this.length-t)}getMissing(e,t){return null}},ds=typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:{},fs=`__ $YJS$ __`;ds[fs]===!0&&console.error(`Yjs was already imported. This breaks constructor checks and will lead to issues! - https://github.com/yjs/yjs/issues/438`),ds[fs]=!0;var ps=new Map,ms=class{constructor(e){this.room=e,this.onmessage=null,this._onChange=t=>t.key===e&&this.onmessage!==null&&this.onmessage({data:Gt(t.newValue||``)}),lt(this._onChange)}postMessage(e){ct.setItem(this.room,Wt(zt(e)))}close(){ut(this._onChange)}},hs=typeof BroadcastChannel>`u`?ms:BroadcastChannel,gs=e=>n(ps,e,()=>{let t=a(),n=new hs(e);return n.onmessage=e=>t.forEach(t=>t(e.data,`broadcastchannel`)),{bc:n,subs:t}}),_s=(e,t)=>(gs(e).subs.add(t),t),vs=(e,t)=>{let n=gs(e),r=n.subs.delete(t);return r&&n.subs.size===0&&(n.bc.close(),ps.delete(e)),r},ys=(e,t,n=null)=>{let r=gs(e);r.bc.postMessage(t),r.subs.forEach(e=>e(t,n))},bs=(e,t)=>{y(e,0),x(e,xi(t))},xs=(e,t,n)=>{y(e,1),x(e,hi(t,n))},Ss=(e,t,n)=>xs(t,n,E(e)),Cs=(e,t,n,r)=>{try{fi(t,E(e),n)}catch(e){r?.(e),console.error(`Caught error while handling a Yjs update`,e)}},ws=(e,t)=>{y(e,2),x(e,t)},Ts=Cs,Es=(e,t,n,r,i)=>{let a=D(e);switch(a){case 0:Ss(e,t,n);break;case 1:Cs(e,n,r,i);break;case 2:Ts(e,n,r,i);break;default:throw Error(`Unknown message type`)}return a},Ds=(e,t,n)=>{D(e)===0&&n(t,O(e))},Os=3e4,ks=class extends ee{constructor(e){super(),this.doc=e,this.clientID=e.clientID,this.states=new Map,this.meta=new Map,this._checkInterval=setInterval(()=>{let e=k();this.getLocalState()!==null&&15e3<=e-this.meta.get(this.clientID).lastUpdated&&this.setLocalState(this.getLocalState());let t=[];this.meta.forEach((n,r)=>{r!==this.clientID&&3e4<=e-n.lastUpdated&&this.states.has(r)&&t.push(r)}),t.length>0&&As(this,t,`timeout`)},m(Os/10)),e.on(`destroy`,()=>{this.destroy()}),this.setLocalState({})}destroy(){this.emit(`destroy`,[this]),this.setLocalState(null),super.destroy(),clearInterval(this._checkInterval)}getLocalState(){return this.states.get(this.clientID)||null}setLocalState(e){let t=this.clientID,n=this.meta.get(t),r=n===void 0?0:n.clock+1,i=this.states.get(t);e===null?this.states.delete(t):this.states.set(t,e),this.meta.set(t,{clock:r,lastUpdated:k()});let a=[],o=[],s=[],c=[];e===null?c.push(t):i==null?e!=null&&a.push(t):(o.push(t),Dt(i,e)||s.push(t)),(a.length>0||s.length>0||c.length>0)&&this.emit(`change`,[{added:a,updated:s,removed:c},`local`]),this.emit(`update`,[{added:a,updated:o,removed:c},`local`])}setLocalStateField(e,t){let n=this.getLocalState();n!==null&&this.setLocalState({...n,[e]:t})}getStates(){return this.states}},As=(e,t,n)=>{let r=[];for(let n=0;n<t.length;n++){let i=t[n];if(e.states.has(i)){if(e.states.delete(i),i===e.clientID){let t=e.meta.get(i);e.meta.set(i,{clock:t.clock+1,lastUpdated:k()})}r.push(i)}}r.length>0&&(e.emit(`change`,[{added:[],updated:[],removed:r},n]),e.emit(`update`,[{added:[],updated:[],removed:r},n]))},js=(e,t,n=e.states)=>{let r=t.length,i=g();y(i,r);for(let a=0;a<r;a++){let r=t[a],o=n.get(r)||null,s=e.meta.get(r).clock;y(i,r),y(i,s),b(i,JSON.stringify(o))}return _(i)},Ms=(e,t,n)=>{let r=T(t),i=k(),a=[],o=[],s=[],c=[],l=D(r);for(let t=0;t<l;t++){let t=D(r),n=D(r),l=JSON.parse(O(r)),u=e.meta.get(t),d=e.states.get(t),f=u===void 0?0:u.clock;(f<n||f===n&&l===null&&e.states.has(t))&&(l===null?t===e.clientID&&e.getLocalState()!=null?n++:e.states.delete(t):e.states.set(t,l),e.meta.set(t,{clock:n,lastUpdated:i}),u===void 0&&l!==null?a.push(t):u!==void 0&&l===null?c.push(t):l!==null&&(Dt(l,d)||s.push(t),o.push(t)))}(a.length>0||s.length>0||c.length>0)&&e.emit(`change`,[{added:a,updated:s,removed:c},n]),(a.length>0||o.length>0||c.length>0)&&e.emit(`update`,[{added:a,updated:o,removed:c},n])},Ns=e=>_t(e,(e,t)=>`${encodeURIComponent(t)}=${encodeURIComponent(e)}`).join(`&`),Ps=[];Ps[0]=(e,t,n,r,i)=>{y(e,0);let a=Es(t,e,n.doc,n);r&&a===1&&!n.synced&&(n.synced=!0)},Ps[3]=(e,t,n,r,i)=>{y(e,1),x(e,js(n.awareness,Array.from(n.awareness.getStates().keys())))},Ps[1]=(e,t,n,r,i)=>{Ms(n.awareness,E(t),n)},Ps[2]=(e,t,n,r,i)=>{Ds(t,n.doc,(e,t)=>Is(n,t))};var Fs=3e4,Is=(e,t)=>console.warn(`Permission denied to access ${e.url}.\n${t}`),Ls=(e,t,n)=>{let r=T(t),i=g(),a=D(r),o=e.messageHandlers[a];return o?o(i,r,e,n,a):console.error(`Unable to compute message`),i},Rs=e=>!(e.code>=4400&&e.code<4500),zs=(e,t,n)=>{if(t!==null&&t===e.ws){e.emit(`connection-close`,[n,e]),e.ws=null,t.onmessage=null,t.onopen=null,t.onclose=null,t.onerror=()=>{},t.close(),e.wsconnecting=!1,e.wsconnected&&(e.wsconnected=!1,e.synced=!1,As(e.awareness,Array.from(e.awareness.getStates().keys()).filter(t=>t!==e.doc.clientID),e),e.emit(`status`,[{status:`disconnected`}])),e.wsUnsuccessfulReconnects++;let r=null;n!=null&&!e.shouldReconnect(n,e)&&(e.shouldConnect=!1,r={code:n.code,reason:n.reason}),setTimeout(Bs,ne(re(2,e.wsUnsuccessfulReconnects)*100,e.maxBackoffTime),e),r!==null&&e.emit(`closed`,[r,e])}},Bs=e=>{if(e.shouldConnect&&e.ws===null){let t=new e._WS(e.url,e.protocols);t.binaryType=`arraybuffer`,e.ws=t,e.wsconnecting=!0,e.wsconnected=!1,e.synced=!1,t.onmessage=n=>{if(e.ws!==t)return;e.wsLastMessageReceived=k();let r=Ls(e,new Uint8Array(n.data),!0);be(r)>1&&t.send(_(r))},t.onerror=n=>{e.ws===t&&e.emit(`connection-error`,[n,e])},t.onclose=n=>{zs(e,t,n)},t.onopen=()=>{if(e.ws!==t)return;e.wsLastMessageReceived=k(),e.wsconnecting=!1,e.wsconnected=!0,e.emit(`status`,[{status:`connected`}]);let n=g();if(y(n,0),bs(n,e.doc),t.send(_(n)),e.awareness.getLocalState()!==null){let n=g();y(n,1),x(n,js(e.awareness,[e.doc.clientID])),t.send(_(n))}},e.emit(`status`,[{status:`connecting`}])}},Vs=(e,t)=>{let n=e.ws;e.wsconnected&&n&&n.readyState===n.OPEN&&n.send(t),e.bcconnected&&ys(e.bcChannel,t,e)},Hs=class extends p{constructor(e,t,n,{connect:r=!0,awareness:i=new ks(n),params:a={},protocols:o=[],WebSocketPolyfill:s=WebSocket,resyncInterval:c=-1,maxBackoffTime:l=2500,disableBc:u=!1,shouldReconnect:d=Rs}={}){for(super();e[e.length-1]===`/`;)e=e.slice(0,e.length-1);this.serverUrl=e,this.bcChannel=e+`/`+t,this.maxBackoffTime=l,this.shouldReconnect=d,this.params=a,this.protocols=o,this.roomname=t,this.doc=n,this._WS=s,this.awareness=i,this.wsconnected=!1,this.wsconnecting=!1,this.bcconnected=!1,this.disableBc=u,this.wsUnsuccessfulReconnects=0,this.messageHandlers=Ps.slice(),this._synced=!1,this.ws=null,this.wsLastMessageReceived=0,this.shouldConnect=r,this._resyncInterval=0,c>0&&(this._resyncInterval=setInterval(()=>{if(this.ws&&this.ws.readyState===WebSocket.OPEN){let e=g();y(e,0),bs(e,n),this.ws.send(_(e))}},c)),this._bcSubscriber=(e,t)=>{if(t!==this){let t=Ls(this,new Uint8Array(e),!1);be(t)>1&&ys(this.bcChannel,_(t),this)}},this._updateHandler=(e,t)=>{if(t!==this){let t=g();y(t,0),ws(t,e),Vs(this,_(t))}},this.doc.on(`update`,this._updateHandler),this._awarenessUpdateHandler=({added:e,updated:t,removed:n},r)=>{let a=e.concat(t).concat(n),o=g();y(o,1),x(o,js(i,a)),Vs(this,_(o))},this._exitHandler=()=>{As(this.awareness,[n.clientID],`app closed`)},A&&typeof process<`u`&&process.on(`exit`,this._exitHandler),i.on(`update`,this._awarenessUpdateHandler),this._checkInterval=setInterval(()=>{this.wsconnected&&Fs<k()-this.wsLastMessageReceived&&zs(this,this.ws,null)},Fs/10),r&&this.connect()}get url(){let e=Ns(this.params);return this.serverUrl+`/`+this.roomname+(e.length===0?``:`?`+e)}get synced(){return this._synced}set synced(e){this._synced!==e&&(this._synced=e,e&&(this.wsUnsuccessfulReconnects=0),this.emit(`synced`,[e]),this.emit(`sync`,[e]))}destroy(){this._resyncInterval!==0&&clearInterval(this._resyncInterval),clearInterval(this._checkInterval),this.disconnect(),A&&typeof process<`u`&&process.off(`exit`,this._exitHandler),this.awareness.off(`update`,this._awarenessUpdateHandler),this.doc.off(`update`,this._updateHandler),super.destroy()}connectBc(){if(this.disableBc)return;this.bcconnected||=(_s(this.bcChannel,this._bcSubscriber),!0);let e=g();y(e,0),bs(e,this.doc),ys(this.bcChannel,_(e),this);let t=g();y(t,0),xs(t,this.doc),ys(this.bcChannel,_(t),this);let n=g();y(n,3),ys(this.bcChannel,_(n),this);let r=g();y(r,1),x(r,js(this.awareness,[this.doc.clientID])),ys(this.bcChannel,_(r),this)}disconnectBc(){let e=g();y(e,1),x(e,js(this.awareness,[this.doc.clientID],new Map)),Vs(this,_(e)),this.bcconnected&&=(vs(this.bcChannel,this._bcSubscriber),!1)}disconnect(){this.shouldConnect=!1,this.disconnectBc(),this.ws!==null&&zs(this,this.ws,null)}connect(){this.shouldConnect=!0,!this.wsconnected&&this.ws===null&&(Bs(this),this.connectBc())}},Us=new Set([`Room reset`,`Server shutting down`]);function Ws(e){!e||typeof e.on!=`function`||typeof e.disconnect!=`function`||e.on(`connection-close`,t=>{let n=String(t?.reason||``);Us.has(n)&&e.disconnect()})}export{_,Za as a,h as b,zi as c,Mi as d,dr as f,g,O as h,ca as i,Ni as l,M as m,Hs as n,eo as o,fr as p,Zr as r,Bi as s,Ws as t,Li as u,b as v,ne as x,y};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import"./chunk-SRAX5OIU-KFQikY-4.js";var e={paste:`粘贴`,pasteAsPlaintext:`粘贴为纯文本`,pasteCharts:`粘贴图表`,chartType_bar:`条形图`,chartType_line:`折线图`,chartType_radar:`雷达图`,chartType_plaintext:`纯文本`,selectAll:`全部选中`,multiSelect:`添加元素到选区`,moveCanvas:`移动画布`,cut:`剪切`,copy:`拷贝`,copyAsPng:`复制为 PNG 到剪贴板`,copyAsSvg:`复制为 SVG 到剪贴板`,copyText:`复制文本到剪贴板`,copySource:`复制源码到剪贴板`,convertToCode:`转换成代码`,bringForward:`上移一层`,sendToBack:`置于底层`,bringToFront:`置于顶层`,sendBackward:`下移一层`,delete:`删除`,copyStyles:`拷贝样式`,pasteStyles:`粘贴样式`,stroke:`描边`,changeStroke:`更改描边颜色`,background:`背景`,changeBackground:`更改背景颜色`,fill:`填充`,strokeWidth:`描边宽度`,strokeStyle:`边框样式`,strokeStyle_solid:`实线`,strokeStyle_dashed:`虚线`,strokeStyle_dotted:`点虚线`,sloppiness:`线条风格`,pressure:``,pressure_constant:``,pressure_variable:``,opacity:`透明度`,textAlign:`文本对齐`,edges:`边角`,sharp:`尖锐`,round:`圆润`,arrowheads:`端点`,arrowhead_none:`无`,arrowhead_arrow:`箭头`,arrowhead_bar:`条状`,arrowhead_circle:`圆点`,arrowhead_circle_outline:`圆点(空心)`,arrowhead_triangle:`三角箭头`,arrowhead_triangle_outline:`三角箭头(空心)`,arrowhead_diamond:`菱形`,arrowhead_diamond_outline:`菱形(空心)`,arrowhead_crowfoot_many:`鸦爪标记(多)`,arrowhead_crowfoot_one:`鸦爪标记(一)`,arrowhead_crowfoot_one_or_many:`鸦爪标记(一或多)`,arrowhead_cardinality_one:`基数(一个)`,arrowhead_cardinality_many:`基数(多个)`,arrowhead_cardinality_one_or_many:`基数(一个或多个)`,arrowhead_cardinality_exactly_one:`基数(仅有一个)`,arrowhead_cardinality_zero_or_one:`基数(零个或一个)`,arrowhead_cardinality_zero_or_many:`基数(零个或多个)`,more_options:`更多选项`,cardinality:`基数`,arrowtypes:`箭头类型`,arrowtype_sharp:`直箭头`,arrowtype_round:`曲线箭头`,arrowtype_elbowed:`拐角箭头`,fontSize:`字体大小`,fontFamily:`字体`,addWatermark:`添加 “使用 Excalidraw 创建” 水印`,handDrawn:`手写`,normal:`普通`,code:`代码`,small:`小`,medium:`中`,large:`大`,veryLarge:`加大`,solid:`实心`,hachure:`线条`,zigzag:`之字形折线`,crossHatch:`交叉线条`,thin:`细`,bold:`粗`,left:`左对齐`,center:`居中`,right:`右对齐`,extraBold:`特粗`,architect:`朴素`,artist:`艺术`,cartoonist:`漫画家`,fileTitle:`文件名`,colorPicker:`取色器`,canvasColors:`画布上的`,canvasBackground:`画布背景`,drawingCanvas:`绘制 Canvas`,clearCanvas:`清除画布`,layers:`图层`,actions:`操作`,language:`语言`,liveCollaboration:`实时协作...`,duplicateSelection:`复制`,untitled:`无标题`,name:`名字`,yourName:`您的姓名`,madeWithExcalidraw:`使用 Excalidraw 创建`,group:`编组`,ungroup:`解除编组`,collaborators:`协作者`,toggleGrid:`切换网格显示`,addToLibrary:`添加到素材库中`,removeFromLibrary:`从素材库中移除`,libraryLoadingMessage:`正在加载素材库…`,libraries:`浏览素材库`,loadingScene:`正在加载绘图…`,loadScene:`从文件加载绘图`,align:`对齐`,alignTop:`顶部对齐`,alignBottom:`底端对齐`,alignLeft:`左对齐`,alignRight:`右对齐`,centerVertically:`垂直居中`,centerHorizontally:`水平居中`,distributeHorizontally:`水平等距分布`,distributeVertically:`垂直等距分布`,flipHorizontal:`水平翻转`,flipVertical:`垂直翻转`,viewMode:`查看模式`,share:`分享`,showStroke:`显示描边颜色选择器`,showBackground:`显示背景颜色选择器`,showFonts:`显示字体选择器`,toggleTheme:`切换浅色/深色主题`,theme:`主题`,personalLib:`个人素材库`,excalidrawLib:`Excalidraw 素材库`,decreaseFontSize:`缩小字体大小`,increaseFontSize:`放大字体大小`,unbindText:`取消文本绑定`,bindText:`将文本绑定到容器`,createContainerFromText:`将文本包围在容器中`,link:{edit:`编辑链接`,editEmbed:`编辑嵌入链接`,create:`添加链接`,label:`链接`,labelEmbed:`链接与嵌入`,empty:`未设定链接`,hint:`在此处输入或粘贴您的链接`,goToElement:`前往目标元素`},lineEditor:{edit:`编辑线条`,editArrow:`编辑箭头`},polygon:{breakPolygon:`解除多边形`,convertToPolygon:`转换为多边形`},elementLock:{lock:`锁定`,unlock:`解除锁定`,lockAll:`全部锁定`,unlockAll:`全部解锁`},statusPublished:`已发布`,sidebarLock:`侧边栏常驻`,selectAllElementsInFrame:`选择画框中的所有元素`,removeAllElementsFromFrame:`分离出画框中的所有元素`,eyeDropper:`从画布上取色`,textToDiagram:`文字至图表`,prompt:`Prompt`,followUs:`关注我们`,discordChat:`Discord 群组`,zoomToFitViewport:`缩放以适应视图`,zoomToFitSelection:`缩放以适应选区`,zoomToFit:`缩放以适应所有元素`,installPWA:`在本地安装 Excalidraw (PWA)`,autoResize:`启用文本自动缩放`,imageCropping:`图片裁剪`,unCroppedDimension:`未裁剪的尺寸`,copyElementLink:`复制此对象的链接`,linkToElement:`链接到对象`,wrapSelectionInFrame:`用选中的元素创建画框`,tab:`Tab`,shapeSwitch:`切换形状`,preferences:`首选项`,preferences_toolLock:`工具锁`,boxSelectionMode:``,boxSelectionContain:``,boxSelectionOverlap:``,arrowBinding:`箭头绑定`,midpointSnapping:`吸附到中点`},t={title:`链接到对象`,desc:`点击画布上的形状或粘贴链接。`,notFound:`在画布上找不到链接的对象。`},n={noItems:`尚未添加任何项目……`,hint_emptyLibrary:`选中画布上的项目添加到此处,或从下方的公共素材库中导入。`,hint_emptyPrivateLibrary:`选中画布上的项目添加到此处。`,search:{inputPlaceholder:`搜索库`,heading:`匹配的库`,noResults:`无匹配项……`,clearSearch:`清除搜索`}},r={title:`在画布上查找`,noMatch:`无匹配项…`,singleResult:`结果`,multipleResults:`结果`,placeholder:`在画布上查找文本…`,frames:`画框`,texts:`文本`},i={clearReset:`重置画布`,exportJSON:`导出为文件`,exportImage:`导出图片...`,export:`保存到...`,copyToClipboard:`复制到剪贴板`,copyLink:`复制链接`,save:`保存至当前文件`,saveAs:`保存为`,load:`打开`,getShareableLink:`获取共享链接`,close:`关闭`,selectLanguage:`选择语言`,scrollBackToContent:`滚动回到内容`,zoomIn:`放大`,zoomOut:`缩小`,resetZoom:`重置缩放`,menu:`菜单`,done:`完成`,edit:`编辑`,undo:`撤销`,redo:`重做`,resetLibrary:`重置素材库`,createNewRoom:`新建会议室`,fullScreen:`全屏`,darkMode:`深色模式`,lightMode:`浅色模式`,systemMode:`系统模式`,zenMode:`禅模式`,objectsSnapMode:`吸附至对象`,exitZenMode:`退出禅模式`,cancel:`取消`,saveLibNames:`保存名称并退出`,clear:`清除`,remove:`删除`,embed:`切换嵌入`,publishLibrary:`重命名或发布`,submit:`提交`,confirm:`确定`,embeddableInteractionButton:`点击以开始交互`},a={clearReset:`这将会清除整个画布。您是否要继续?`,couldNotCreateShareableLink:`无法创建共享链接`,couldNotCreateShareableLinkTooBig:`无法创建可共享链接:画布过大`,couldNotLoadInvalidFile:`无法加载无效的文件`,importBackendFailed:`从后端导入失败。`,cannotExportEmptyCanvas:`无法导出空白画布。`,couldNotCopyToClipboard:`无法复制到剪贴板。`,decryptFailed:`无法解密数据。`,uploadedSecurly:`上传已被端到端加密保护,这意味着 Excalidraw 的服务器和第三方都无法读取内容。`,loadSceneOverridePrompt:`加载外部绘图将取代您现有的内容。您想要继续吗?`,collabStopOverridePrompt:`停止会话将覆盖您先前本地存储的绘图。 您确定吗?
|
|
2
|
-
|
|
3
|
-
(如果您想保持本地绘图,只需关闭浏览器选项卡。)`,errorAddingToLibrary:`无法将项目添加到素材库中`,errorRemovingFromLibrary:`无法从素材库中移除项目`,confirmAddLibrary:`这将添加 {{numShapes}} 个形状到您的素材库中。您确定吗?`,imageDoesNotContainScene:`此图像似乎不包含任何画布数据。您是否在导出时启用了画布嵌入功能?`,cannotRestoreFromImage:`无法从此图像文件恢复画布`,invalidSceneUrl:`无法从提供的 URL 导入场景。它或者格式不正确,或者不包含有效的 Excalidraw JSON 数据。`,resetLibrary:`这将会清除你的素材库。你确定要这么做吗?`,removeItemsFromsLibrary:`确定要从素材库中删除 {{count}} 个项目吗?`,invalidEncryptionKey:`密钥必须包含22个字符。实时协作已被禁用。`,collabOfflineWarning:`无网络连接。
|
|
4
|
-
您的改动将不会被保存!`,localStorageQuotaExceeded:`超过浏览器存储配额。更改将不会被保存。`},o={unsupportedFileType:`不支持的文件格式。`,imageInsertError:`无法插入图像。请稍后再试……`,fileTooBig:`文件过大。最大允许的大小为 {{maxSize}}。`,svgImageInsertError:`无法插入 SVG 图像。该 SVG 标记似乎是无效的。`,failedToFetchImage:`无法获取图片。`,cannotResolveCollabServer:`无法连接到实时协作服务器。请重新加载页面并重试。`,importLibraryError:`无法加载素材库`,saveLibraryError:`无法将库保存至存储。请将库保存为本地文件,以确保您的更改不被丢失。`,collabSaveFailed:`无法保存到后端数据库。如果问题持续存在,您应该保存文件到本地,以确保您的工作不会丢失。`,collabSaveFailed_sizeExceeded:`无法保存到后端数据库,画布似乎过大。您应该保存文件到本地,以确保您的工作不会丢失。`,imageToolNotSupported:`图片已被禁用。`,brave_measure_text_error:{line1:`您似乎正在使用 Brave 浏览器并启用了<bold>积极阻止指纹识别</bold>的设置。`,line2:`这可能会破坏绘图中的 <bold>文本元素</bold>。`,line3:`我们强烈建议禁用此设置。您可以按照<link>这些步骤</link>来设置。`,line4:`如果禁用此设置无法修复文本元素的显示,请在 GitHub 上提交一个 <issueLink>issue</issueLink> ,或者在 <discordLink>Discord</discordLink> 上反馈`},libraryElementTypeError:{embeddable:`嵌入元素不能添加到素材库。`,iframe:`不能将 IFrame 元素添加到素材库中。`,image:`我们不久将支持添加图片到素材库`},asyncPasteFailedOnRead:`无法粘贴(无法读取系统剪贴板)。`,asyncPasteFailedOnParse:`无法粘贴。`,copyToSystemClipboardFailed:`无法复制到剪贴板。`},s={selection:`选择`,lasso:`套索选择`,image:`插入图像`,rectangle:`矩形`,diamond:`菱形`,ellipse:`椭圆`,arrow:`箭头`,line:`线条`,freedraw:`自由书写`,text:`文字`,library:`素材库`,lock:`绘制后保持所选的工具栏状态`,penMode:`笔模式 – 避免误触`,link:`为选定的形状添加或更改链接`,eraser:`橡皮`,frame:`画框工具`,magicframe:`线框图至代码`,embeddable:`嵌入网页`,laser:`激光笔`,autoshape:``,hand:`抓手(平移工具)`,extraTools:`更多工具`,mermaidToExcalidraw:`Mermaid 至 Excalidraw`,convertElementType:`切换形状种类`},c={rectangle:`矩形`,diamond:`菱形`,ellipse:`椭圆`,arrow:`箭头`,line:`线条`,freedraw:`自由书写`,text:`文字`,image:`图片`,group:`组`,frame:`画框`,magicframe:`线框图至代码`,embeddable:`嵌入网页`,selection:`选择`,iframe:`IFrame`},l={canvasActions:`画布动作`,selectedShapeActions:`选定形状操作`,shapes:`形状`},u={dismissSearch:`按{{shortcut}}取消搜索`,canvasPanning:`要移动画布,请按住{{shortcut_1}}或{{shortcut_2}}同时拖拽鼠标,或使用抓手工具。`,linearElement:`点击创建多个点 拖动创建直线`,arrowTool:`点击创建多个点,拖动创建直线。按 {{shortcut}} 切换箭头类型。`,arrowBindModifiers:`按住{{shortcut_1}}取消绑定,或按住{{shortcut_2}}绑定到固定点`,freeDraw:`点击并拖动,完成时松开`,text:`提示:您也可以使用选择工具双击任意位置来添加文字`,embeddable:`点击并拖动以创建嵌入网页`,autoshape:``,text_selected:`双击或按{{shortcut}}编辑文本`,text_editing:`按{{shortcut_1}}或{{shortcut_2}}完成编辑`,linearElementMulti:`点击最后的点或按{{shortcut_1}}或{{shortcut_2}}完成`,lockAngle:`可以按住{{shortcut}}来约束角度`,resize:`缩放时按住{{shortcut_1}}可以约束宽高比例,
|
|
5
|
-
按住{{shortcut_2}}可以从中间缩放`,resizeImage:`按住{{shortcut_1}}可以自由缩放,
|
|
6
|
-
按住{{shortcut_2}}可以从中间缩放`,rotate:`旋转时可以按住{{shortcut}}来约束角度`,toggleArrowhead:``,lineEditor_info:`按住{{shortcut_1}}双击,或者按{{shortcut_2}}编辑点`,lineEditor_line_info:`双击或按{{shortcut}}编辑点`,lineEditor_pointSelected:`按{{shortcut_1}}移除点,按{{shortcut_2}}复制点,拖拽移动点`,lineEditor_nothingSelected:`选择要编辑的点 (按住{{shortcut_1}}选择多个),
|
|
7
|
-
或按住{{shortcut_2}}并点击以添加新点`,publishLibrary:`发布您自己的素材库`,bindTextToElement:`按{{shortcut}}添加文本`,createFlowchart:`按{{shortcut}}创建流程图`,deepBoxSelect:`按住{{shortcut}}深度选择,并避免拖拽`,eraserRevert:`按住{{shortcut}}反选被标记删除的元素`,firefox_clipboard_write:`将高级配置首选项“dom.events.asyncClipboard.clipboardItem”设置为“true”可以启用此功能。要更改 Firefox 的高级配置首选项,请前往“about:config”页面。`,disableSnapping:`按住{{shortcut}}禁用吸附`,enterCropEditor:`双击图片或按{{shortcut}}开始裁剪`,leaveCropEditor:`点击图片以外的区域或按{{shortcut_1}}或{{shortcut_2}}完成裁剪`},d={cannotShowPreview:`无法显示预览`,canvasTooBig:`画布可能过大。`,canvasTooBigTip:`提示:尝试将最远的元素移动到和其它元素更近一些。`},f={headingMain:`遇到异常。请尝试<button>重新加载页面</button>。`,clearCanvasMessage:`如果重新加载页面无效,请尝试<button>清除画布</button>。`,clearCanvasCaveat:`这会造成当前工作丢失`,trackedToSentry:`标识符为{{eventId}}的错误已在我们的系统中被记录`,openIssueMessage:`我们非常谨慎地处理错误信息,您的画布内容不会被包含在错误报告中。如果您的画布内容不需要保持私密,请考虑在我们的 <button>bug 跟踪系统</button>上提供更多信息。请复制粘贴以下信息到 GitHub Issue 中。`,sceneContent:`画布内容:`},p={or:`或`},m={desc_intro:`邀请他人协作绘图。`,desc_privacy:`别担心,会话是端到端加密、完全私密的。即使是我们的服务器也无法看到您绘制的内容。`,button_startSession:`开始会话`,button_stopSession:`结束会话`,desc_inProgressIntro:`实时协作会话进行中。`,desc_shareLink:`分享此链接给你要协作的用户`,desc_exitSession:`停止会话将中断您与房间的连接,但您依然可以在本地继续使用画布。请注意,这不会影响到其他用户,他们仍可以在他们的版本上继续协作。`,shareTitle:`加入 Excalidraw 实时协作会话`},h={title:`错误`},g={title:`正在保存`,defaultMessage:`正在准备保存…`},_={disk_title:`保存到本地`,disk_details:`将画布数据导出为文件,以便以后导入`,disk_button:`保存为文件`,link_title:`分享链接`,link_details:`导出为只读链接。`,link_button:`导出链接`,excalidrawplus_description:`将画布保存到您的 Excalidraw+ 工作区。`,excalidrawplus_button:`导出`,excalidrawplus_exportError:`暂时无法导出到 Excalidraw+ ...`},v={blog:`浏览我们的博客`,click:`单击`,deepSelect:`深度选择`,deepBoxSelect:`在方框内深度选择并避免拖拽`,createFlowchart:`从一个基本元素创建流程图`,navigateFlowchart:`在流程图元素间移动`,curvedArrow:`曲线箭头`,curvedLine:`曲线`,documentation:`文档`,doubleClick:`双击`,drag:`拖动`,editor:`编辑器`,editLineArrowPoints:`编辑线条或箭头的点`,editText:`添加或编辑文本`,github:`提交问题`,howto:`帮助文档`,or:`或`,preventBinding:`禁用箭头吸附`,tools:`工具`,shortcuts:`快捷键列表`,textFinish:`完成编辑 (文本编辑器)`,textNewLine:`添加新行(文本编辑器)`,title:`帮助`,view:`视图`,zoomToFit:`缩放以适应所有元素`,zoomToSelection:`缩放到选区`,toggleElementLock:`锁定/解锁`,movePageUpDown:`上下移动页面`,movePageLeftRight:`左右移动页面`,cropStart:`裁剪图片`,cropFinish:`完成图片裁剪`},y={title:`清除画布`},b={title:`发布素材库`,itemName:`项目名称`,authorName:`作者名`,githubUsername:`GitHub 用户名`,twitterUsername:`Twitter 用户名`,libraryName:`名称`,libraryDesc:`简介`,website:`网址`,placeholder:{authorName:`您的名字或用户名`,libraryName:`素材库名称`,libraryDesc:`介绍您的素材库,让人们了解其用途`,githubHandle:`GitHub 用户名(可选),填写后,您可以编辑已提交待审的素材库`,twitterHandle:`Twitter 用户名(可选),填写后,当我们在Twitter发布推广信息时便可提及您`,website:`您个人网站的或任意的链接(可选)`},errors:{required:`必填`,website:`输入一个有效的URL`},noteDescription:`提交后,您的素材库将被包含在<link>公共素材库广场</link>以供其他人在绘图中使用。`,noteGuidelines:`提交的素材库需先经人工审核。在提交之前,请先阅读<link>指南</link> 。后续沟通和对库的修改需要 GitHub 账号,但这不是必须的。`,noteLicense:`提交即表明您已同意素材库将遵循 <link>MIT 许可证</link>,简而言之,任何人都可以不受限制地使用它们。`,noteItems:`素材库中每个项目都有各自的名称以供筛选。以下项目将被包含:`,atleastOneLibItem:`请选择至少一个素材库以开始`,republishWarning:`注意:部分选中的项目已经发布或提交。请仅在更新已有或已提交的素材库时重复提交项目。`},x={title:`素材库已提交`,content:`谢谢你 {{authorName}}。您的素材库已被提交审核。请点击<link>此处</link>跟进此次提交的状态`},S={resetLibrary:`重置素材库`,removeItemsFromLib:`从素材库中删除选中的项目`},C={header:`导出图片`,label:{withBackground:`背景`,onlySelected:`仅选中`,darkMode:`深色模式`,embedScene:`包含画布数据`,scale:`缩放比例`,padding:`内边距`},tooltip:{embedScene:`画布数据将被保存到导出的 PNG/SVG 文件,以便恢复。
|
|
8
|
-
将会增加导出文件的大小。`},title:{exportToPng:`导出为 PNG`,exportToSvg:`导出为 SVG`,copyPngToClipboard:`复制 PNG 到剪切板`},button:{exportToPng:`PNG`,exportToSvg:`SVG`,copyPngToClipboard:`复制到剪贴板`}},w={tooltip:`您的绘图采用端到端加密,其内容对于 Excalidraw 服务器是不可见的。`,link:`Excalidraw 中关于端到端加密的博客`},T={angle:`角度`,shapes:`形状`,height:`高度`,scene:`画布`,selected:`选中`,storage:`存储`,fullTitle:`画布与形状属性`,title:`属性`,generalStats:`概况`,elementProperties:`形状属性`,total:`总计`,version:`版本`,versionCopy:`点击复制`,versionNotAvailable:`版本不可用`,width:`宽度`},E={addedToLibrary:`添加到素材库中`,copyStyles:`样式已拷贝。`,copyToClipboard:`已复制到剪切板。`,copyToClipboardAsPng:`已将 {{exportSelection}} 作为 PNG 复制到剪贴板
|
|
9
|
-
({{exportColorScheme}})`,copyToClipboardAsSvg:`已将 {{exportSelection}} 作为 SVG 复制到剪贴板
|
|
10
|
-
({{exportColorScheme}})`,fileSaved:`文件已保存。`,fileSavedToFilename:`保存到 {filename}`,canvas:`画布`,selection:`所选项`,pasteAsSingleElement:`使用 {{shortcut}} 粘贴为单个元素,
|
|
11
|
-
或粘贴到现有的文本编辑器里`,unableToEmbed:`目前不允许嵌入此网址。请在 GitHub 上提 issue 请求将此网址加入白名单`,unrecognizedLinkFormat:`您嵌入的链接不符合格式要求。请尝试粘贴源网站提供的“嵌入 (embed)”字符串`,elementLinkCopied:`链接已复制到剪贴板`},D={transparent:`透明`,black:`黑`,white:`白`,red:`红`,pink:`粉红`,grape:`紫红`,violet:`蓝紫`,gray:`灰`,blue:`蓝`,cyan:`青`,teal:`蓝绿`,green:`绿`,yellow:`黄`,orange:`橙`,bronze:`古铜`},O={app:{center_heading:`您的绘图已保存在您的浏览器存储中。`,center_heading_line2:`浏览器存储可能会被无意清除。`,center_heading_line3:`将您的工作定期保存到一个文件,以避免丢失。`,center_heading_plus:`是否前往 Excalidraw+ ?`,menuHint:`导出、首选项、语言……`},defaults:{menuHint:`导出、首选项……`,center_heading:`图,化繁为简。`,toolbarHint:`选择工具并开始绘图!`,helpHint:`快捷键和帮助`}},k={color:`颜色`,mostUsedCustomColors:`常用自定义颜色`,colors:`颜色`,shades:`色调明暗`,hexCode:`十六进制值`,noShades:`此颜色没有可用的明暗变化`,invalidColor:``,invalidHexLength:``},A={action:{exportToImage:{title:`导出为图片`,button:`导出为图片`,description:`将画布数据导出为图片,以便以后导入。`},saveToDisk:{title:`保存到本地`,button:`保存到本地`,description:`将画布数据导出为文件,以便以后导入。`},excalidrawPlus:{title:`Excalidraw+`,button:`导出到 Excalidraw+`,description:`将画布保存到您的 Excalidraw+ 工作区。`}},modal:{loadFromFile:{title:`从文件加载`,button:`从文件加载`,description:`从文件加载将<bold>替换您现有的内容</bold>。<br></br>您可以先使用下列方式备份您的绘图。`},shareableLink:{title:`从链接加载`,button:`替换我的内容`,description:`加载外部绘图将<bold>替换您现有的内容</bold>。<br></br>您可以先使用下列方式备份您的绘图。`}}},j={title:`Mermaid 至 Excalidraw`,button:`插入`,description:`目前仅支持<flowchartLink>流程图</flowchartLink>、<sequenceLink>序列图</sequenceLink>、<classLink>类图</classLink>和<erdLink>实体关系(ER)图</erdLink>。其他类型在 Excalidraw 中将以图像呈现。`,syntax:`Mermaid 语法`,preview:`预览`,label:`Mermaid`,inputPlaceholder:`在此处输入 Mermaid 图定义……`,autoFixAvailable:`自动修复可用`},M={error:`错误!`},N={inputPlaceholder:`在此处描述你想要的图表……(按{{shortcut}}换行)`,inputPlaceholderWithMessages:`继续完善您的图表…`,generating:`正在生成…`,rateLimitRemaining:`今日剩余{{count}}次请求`,role:{user:`您`,assistant:`AI 助理`,system:`系统`},aiBeta:`AI 测试版`,label:`聊天`,menu:`菜单`,newChat:`新的聊天`,deleteChat:`删除聊天`,deleteMessage:`删除消息`,viewAsMermaid:`作为 Mermaid 图查看`,placeholder:{title:`让我们设计您的图表`,description:`描述您想要创建的图表,我们将为您生成它。`,hint:``},preview:`预览`,insert:`插入`,retry:`重试`,errors:{promptTooShort:`提示词太短(最少{{min}}字)`,promptTooLong:`提示词太长(最多{{max}}字)`,generationFailed:`生成失败`,invalidDiagram:`生成了一个无效的图表 :(。您可以手动编辑,用自动修复重试,或尝试不同的提示词。`,fixInMermaid:`手动编辑 Mermaid 图 →`,aiRepair:`重新生成(自动修复)→`,requestAborted:`请求中止`,requestFailed:`请求失败`,mermaidParseError:`Mermaid 语法错误`},rateLimit:{messageLimit:`您已达到免费版的 AI 使用上限。请尝试 Excalidraw+ 获取更多额度,或明天再试。`,generalRateLimit:`慢点慢点,您的手速太快了!请稍候再试。`,messageLimitInputPlaceholder:`您已达到消息上限`},upsellBtnLabel:`升级到 Plus`},P={placeholder:`快速搜索`},F={badge:{old:`旧的`},sceneFonts:`画布中的`,availableFonts:`可用字体`,empty:`未找到字体`},I={empty:`未找到用户`,hint:{text:`点击关注用户`,followStatus:`您已关注此用户`,inCall:`用户在语音通话中`,micMuted:`用户的麦克风已静音`,isSpeaking:`用户正在说话`}},L={title:`命令面板`,shortcuts:{select:`选择`,confirm:`确定`,close:`关闭`},recents:`最近使用`,search:{placeholder:`搜索菜单、命令、探索隐藏功能`,noMatch:`没有匹配的命令……`},itemNotAvailable:`命令不可用……`,shortcutHint:`用 {{shortcut}} 打开命令面板`},R={ctrl:`Ctrl`,option:`Option`,cmd:`Cmd`,alt:`Alt`,escape:`Esc`,enter:`回车键`,shift:`Shift`,spacebar:`空格`,delete:`Delete`,mmb:`鼠标滚轮`},z={labels:e,elementLink:t,library:n,search:r,buttons:i,alerts:a,errors:o,toolBar:s,element:c,headings:l,hints:u,canvasError:d,errorSplash:f,shareDialog:p,roomDialog:m,errorDialog:h,progressDialog:g,exportDialog:_,helpDialog:v,clearCanvasDialog:y,publishDialog:b,publishSuccessDialog:x,confirmDialog:S,imageExportDialog:C,encrypted:w,stats:T,toast:E,colors:D,welcomeScreen:O,colorPicker:k,overwriteConfirm:A,mermaid:j,ttd:M,chat:N,quickSearch:P,fontList:F,userList:I,commandPalette:L,keys:R};export{a as alerts,i as buttons,d as canvasError,N as chat,y as clearCanvasDialog,k as colorPicker,D as colors,L as commandPalette,S as confirmDialog,z as default,c as element,t as elementLink,w as encrypted,h as errorDialog,f as errorSplash,o as errors,_ as exportDialog,F as fontList,l as headings,v as helpDialog,u as hints,C as imageExportDialog,R as keys,e as labels,n as library,j as mermaid,A as overwriteConfirm,g as progressDialog,b as publishDialog,x as publishSuccessDialog,P as quickSearch,m as roomDialog,r as search,p as shareDialog,T as stats,E as toast,s as toolBar,M as ttd,I as userList,O as welcomeScreen};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-SRAX5OIU-KFQikY-4.js";var e={paste:`貼上`,pasteAsPlaintext:``,pasteCharts:`貼上圖表`,chartType_bar:``,chartType_line:``,chartType_radar:``,chartType_plaintext:``,selectAll:`全選`,multiSelect:`多重選取`,moveCanvas:`移動畫布`,cut:`剪下`,copy:`複製`,copyAsPng:`以 PNG 格式複製`,copyAsSvg:`以 SVG 格式複製`,copyText:``,copySource:``,convertToCode:``,bringForward:`往上一層移動`,sendToBack:`移到最底層`,bringToFront:`移到最上層`,sendBackward:`往下一層移動`,delete:`刪除`,copyStyles:`複製樣式`,pasteStyles:`套用樣式`,stroke:`筆跡顏色`,changeStroke:``,background:`填充顏色`,changeBackground:``,fill:`背景樣式`,strokeWidth:`筆跡寬度`,strokeStyle:`筆跡線條`,strokeStyle_solid:`實線`,strokeStyle_dashed:`虛線(較密)`,strokeStyle_dotted:`虛線(較疏)`,sloppiness:`筆跡風格`,pressure:``,pressure_constant:``,pressure_variable:``,opacity:`透明度`,textAlign:`文字對齊`,edges:`邊角樣式`,sharp:`銳角`,round:`圓角`,arrowheads:`箭嘴`,arrowhead_none:`無箭嘴`,arrowhead_arrow:`普通箭嘴`,arrowhead_bar:`平頭條狀`,arrowhead_circle:``,arrowhead_circle_outline:``,arrowhead_triangle:`三角箭嘴`,arrowhead_triangle_outline:``,arrowhead_diamond:``,arrowhead_diamond_outline:``,arrowhead_crowfoot_many:``,arrowhead_crowfoot_one:``,arrowhead_crowfoot_one_or_many:``,arrowhead_cardinality_one:``,arrowhead_cardinality_many:``,arrowhead_cardinality_one_or_many:``,arrowhead_cardinality_exactly_one:``,arrowhead_cardinality_zero_or_one:``,arrowhead_cardinality_zero_or_many:``,more_options:``,cardinality:``,arrowtypes:``,arrowtype_sharp:``,arrowtype_round:``,arrowtype_elbowed:``,fontSize:`字型大小`,fontFamily:`字體`,addWatermark:`加入「使用 Excalidraw 製圖」水印`,handDrawn:`手繪體`,normal:`電腦字體`,code:`等寬體`,small:`細`,medium:`中`,large:`大`,veryLarge:`勁大`,solid:`實心`,hachure:`斜線`,zigzag:``,crossHatch:`交叉格仔`,thin:`幼`,bold:`粗`,left:`靠左對齊`,center:`置中對齊`,right:`靠右對齊`,extraBold:`勁粗`,architect:`手繪風格`,artist:`藝術家風格`,cartoonist:`卡通風格`,fileTitle:`檔案名稱`,colorPicker:``,canvasColors:``,canvasBackground:`畫布背景顏色`,drawingCanvas:`畫布`,clearCanvas:``,layers:`圖層`,actions:`動作`,language:`🌏 語言`,liveCollaboration:``,duplicateSelection:`製作副本`,untitled:`未命名的作品`,name:``,yourName:`你的名稱`,madeWithExcalidraw:`使用 Excalidraw 製圖`,group:`建立物件群組`,ungroup:`取消物件群組`,collaborators:`已連線的協作者`,toggleGrid:``,addToLibrary:`加入作品庫`,removeFromLibrary:`從作品庫中移除`,libraryLoadingMessage:`正在載入作品庫…`,libraries:`瀏覽作品庫`,loadingScene:`載入畫布中…`,loadScene:``,align:`物件對齊`,alignTop:`水平置頂`,alignBottom:`水平置底`,alignLeft:`垂直靠左對齊`,alignRight:`垂直靠右對齊`,centerVertically:`垂直置中`,centerHorizontally:`水平置中`,distributeHorizontally:`左右等距`,distributeVertically:`上下等距`,flipHorizontal:`左右反轉`,flipVertical:`上下反轉`,viewMode:`唯讀模式`,share:``,showStroke:``,showBackground:``,showFonts:``,toggleTheme:``,theme:``,personalLib:``,excalidrawLib:``,decreaseFontSize:``,increaseFontSize:``,unbindText:``,bindText:``,createContainerFromText:``,link:{edit:``,editEmbed:``,create:``,label:``,labelEmbed:``,empty:``,hint:``,goToElement:``},lineEditor:{edit:``,editArrow:``},polygon:{breakPolygon:``,convertToPolygon:``},elementLock:{lock:``,unlock:``,lockAll:``,unlockAll:``},statusPublished:``,sidebarLock:``,selectAllElementsInFrame:``,removeAllElementsFromFrame:``,eyeDropper:``,textToDiagram:``,prompt:``,followUs:``,discordChat:``,zoomToFitViewport:``,zoomToFitSelection:``,zoomToFit:``,installPWA:``,autoResize:``,imageCropping:``,unCroppedDimension:``,copyElementLink:``,linkToElement:``,wrapSelectionInFrame:``,tab:``,shapeSwitch:``,preferences:``,preferences_toolLock:``,boxSelectionMode:``,boxSelectionContain:``,boxSelectionOverlap:``,arrowBinding:``,midpointSnapping:``},t={title:``,desc:``,notFound:``},n={noItems:``,hint_emptyLibrary:``,hint_emptyPrivateLibrary:``,search:{inputPlaceholder:``,heading:``,noResults:``,clearSearch:``}},r={title:``,noMatch:``,singleResult:``,multipleResults:``,placeholder:``,frames:``,texts:``},i={clearReset:`清空畫布`,exportJSON:``,exportImage:``,export:``,copyToClipboard:``,copyLink:``,save:``,saveAs:``,load:``,getShareableLink:``,close:``,selectLanguage:``,scrollBackToContent:``,zoomIn:``,zoomOut:``,resetZoom:``,menu:``,done:``,edit:``,undo:``,redo:``,resetLibrary:``,createNewRoom:``,fullScreen:``,darkMode:``,lightMode:``,systemMode:``,zenMode:``,objectsSnapMode:``,exitZenMode:``,cancel:``,saveLibNames:``,clear:``,remove:``,embed:``,publishLibrary:``,submit:``,confirm:``,embeddableInteractionButton:``},a={clearReset:`【‼️ 警告 ‼️ 無法復原的動作】你確定要清空呢塊畫布嗎?`,couldNotCreateShareableLink:``,couldNotCreateShareableLinkTooBig:``,couldNotLoadInvalidFile:``,importBackendFailed:``,cannotExportEmptyCanvas:`無嘢可以匯出喎~畫吓嘢先?`,couldNotCopyToClipboard:``,decryptFailed:``,uploadedSecurly:``,loadSceneOverridePrompt:``,collabStopOverridePrompt:``,errorAddingToLibrary:``,errorRemovingFromLibrary:``,confirmAddLibrary:``,imageDoesNotContainScene:``,cannotRestoreFromImage:``,invalidSceneUrl:``,resetLibrary:``,removeItemsFromsLibrary:``,invalidEncryptionKey:``,collabOfflineWarning:``,localStorageQuotaExceeded:``},o={unsupportedFileType:``,imageInsertError:``,fileTooBig:``,svgImageInsertError:``,failedToFetchImage:``,cannotResolveCollabServer:``,importLibraryError:``,saveLibraryError:``,collabSaveFailed:``,collabSaveFailed_sizeExceeded:``,imageToolNotSupported:``,brave_measure_text_error:{line1:``,line2:``,line3:``,line4:``},libraryElementTypeError:{embeddable:``,iframe:``,image:``},asyncPasteFailedOnRead:``,asyncPasteFailedOnParse:``,copyToSystemClipboardFailed:``},s={selection:``,lasso:``,image:``,rectangle:``,diamond:``,ellipse:``,arrow:``,line:``,freedraw:``,text:``,library:``,lock:``,penMode:``,link:``,eraser:``,frame:``,magicframe:``,embeddable:``,laser:``,autoshape:``,hand:``,extraTools:``,mermaidToExcalidraw:``,convertElementType:``},c={rectangle:``,diamond:``,ellipse:``,arrow:``,line:``,freedraw:``,text:``,image:``,group:``,frame:``,magicframe:``,embeddable:``,selection:``,iframe:``},l={canvasActions:`畫布動作`,selectedShapeActions:``,shapes:``},u={dismissSearch:``,canvasPanning:``,linearElement:``,arrowTool:``,arrowBindModifiers:``,freeDraw:``,text:``,embeddable:``,autoshape:``,text_selected:``,text_editing:``,linearElementMulti:``,lockAngle:``,resize:``,resizeImage:``,rotate:``,toggleArrowhead:``,lineEditor_info:``,lineEditor_line_info:``,lineEditor_pointSelected:``,lineEditor_nothingSelected:``,publishLibrary:``,bindTextToElement:``,createFlowchart:``,deepBoxSelect:``,eraserRevert:``,firefox_clipboard_write:``,disableSnapping:``,enterCropEditor:``,leaveCropEditor:``},d={cannotShowPreview:`無法顯示預覽`,canvasTooBig:`塊畫布太大啦,縮細啲先啦?`,canvasTooBigTip:``},f={headingMain:``,clearCanvasMessage:`如果重新整理頁面都係睇唔到,你可以<button>清空畫布</button>`,clearCanvasCaveat:`(注意:呢個動作會直接丟棄你嘅作品,並且無法復原)`,trackedToSentry:``,openIssueMessage:``,sceneContent:``},p={or:``},m={desc_intro:``,desc_privacy:``,button_startSession:``,button_stopSession:``,desc_inProgressIntro:``,desc_shareLink:``,desc_exitSession:``,shareTitle:``},h={title:``},g={title:``,defaultMessage:``},_={disk_title:``,disk_details:``,disk_button:``,link_title:``,link_details:``,link_button:``,excalidrawplus_description:``,excalidrawplus_button:``,excalidrawplus_exportError:``},v={blog:``,click:``,deepSelect:``,deepBoxSelect:``,createFlowchart:``,navigateFlowchart:``,curvedArrow:``,curvedLine:``,documentation:``,doubleClick:``,drag:``,editor:``,editLineArrowPoints:``,editText:``,github:``,howto:``,or:``,preventBinding:``,tools:``,shortcuts:``,textFinish:``,textNewLine:``,title:``,view:``,zoomToFit:``,zoomToSelection:``,toggleElementLock:``,movePageUpDown:``,movePageLeftRight:``,cropStart:``,cropFinish:``},y={title:``},b={title:``,itemName:``,authorName:``,githubUsername:``,twitterUsername:``,libraryName:``,libraryDesc:``,website:``,placeholder:{authorName:``,libraryName:``,libraryDesc:``,githubHandle:``,twitterHandle:``,website:``},errors:{required:``,website:``},noteDescription:``,noteGuidelines:``,noteLicense:``,noteItems:``,atleastOneLibItem:``,republishWarning:``},x={title:``,content:``},S={resetLibrary:``,removeItemsFromLib:``},C={header:``,label:{withBackground:``,onlySelected:``,darkMode:``,embedScene:``,scale:``,padding:``},tooltip:{embedScene:``},title:{exportToPng:``,exportToSvg:``,copyPngToClipboard:``},button:{exportToPng:``,exportToSvg:``,copyPngToClipboard:``}},w={tooltip:``,link:``},T={angle:``,shapes:``,height:``,scene:``,selected:``,storage:``,fullTitle:``,title:``,generalStats:``,elementProperties:``,total:``,version:``,versionCopy:``,versionNotAvailable:``,width:``},E={addedToLibrary:``,copyStyles:``,copyToClipboard:``,copyToClipboardAsPng:``,copyToClipboardAsSvg:``,fileSaved:``,fileSavedToFilename:``,canvas:`畫布`,selection:``,pasteAsSingleElement:``,unableToEmbed:``,unrecognizedLinkFormat:``,elementLinkCopied:``},D={transparent:``,black:``,white:``,red:``,pink:``,grape:``,violet:``,gray:``,blue:``,cyan:``,teal:``,green:``,yellow:``,orange:``,bronze:``},O={app:{center_heading:``,center_heading_line2:``,center_heading_line3:``,center_heading_plus:``,menuHint:``},defaults:{menuHint:``,center_heading:``,toolbarHint:``,helpHint:``}},k={color:``,mostUsedCustomColors:``,colors:``,shades:``,hexCode:``,noShades:``,invalidColor:``,invalidHexLength:``},A={action:{exportToImage:{title:``,button:``,description:``},saveToDisk:{title:``,button:``,description:``},excalidrawPlus:{title:``,button:``,description:``}},modal:{loadFromFile:{title:``,button:``,description:``},shareableLink:{title:``,button:``,description:``}}},j={title:``,button:``,description:``,syntax:``,preview:``,label:``,inputPlaceholder:``,autoFixAvailable:``},M={error:``},N={inputPlaceholder:``,inputPlaceholderWithMessages:``,generating:``,rateLimitRemaining:``,role:{user:``,assistant:``,system:``},aiBeta:``,label:``,menu:``,newChat:``,deleteChat:``,deleteMessage:``,viewAsMermaid:``,placeholder:{title:``,description:``,hint:``},preview:``,insert:``,retry:``,errors:{promptTooShort:``,promptTooLong:``,generationFailed:``,invalidDiagram:``,fixInMermaid:``,aiRepair:``,requestAborted:``,requestFailed:``,mermaidParseError:``},rateLimit:{messageLimit:``,generalRateLimit:``,messageLimitInputPlaceholder:``},upsellBtnLabel:``},P={placeholder:``},F={badge:{old:``},sceneFonts:``,availableFonts:``,empty:``},I={empty:``,hint:{text:``,followStatus:``,inCall:``,micMuted:``,isSpeaking:``}},L={title:``,shortcuts:{select:``,confirm:``,close:``},recents:``,search:{placeholder:``,noMatch:``},itemNotAvailable:``,shortcutHint:``},R={ctrl:``,option:``,cmd:``,alt:``,escape:``,enter:``,shift:``,spacebar:``,delete:``,mmb:``},z={labels:e,elementLink:t,library:n,search:r,buttons:i,alerts:a,errors:o,toolBar:s,element:c,headings:l,hints:u,canvasError:d,errorSplash:f,shareDialog:p,roomDialog:m,errorDialog:h,progressDialog:g,exportDialog:_,helpDialog:v,clearCanvasDialog:y,publishDialog:b,publishSuccessDialog:x,confirmDialog:S,imageExportDialog:C,encrypted:w,stats:T,toast:E,colors:D,welcomeScreen:O,colorPicker:k,overwriteConfirm:A,mermaid:j,ttd:M,chat:N,quickSearch:P,fontList:F,userList:I,commandPalette:L,keys:R};export{a as alerts,i as buttons,d as canvasError,N as chat,y as clearCanvasDialog,k as colorPicker,D as colors,L as commandPalette,S as confirmDialog,z as default,c as element,t as elementLink,w as encrypted,h as errorDialog,f as errorSplash,o as errors,_ as exportDialog,F as fontList,l as headings,v as helpDialog,u as hints,C as imageExportDialog,R as keys,e as labels,n as library,j as mermaid,A as overwriteConfirm,g as progressDialog,b as publishDialog,x as publishSuccessDialog,P as quickSearch,m as roomDialog,r as search,p as shareDialog,T as stats,E as toast,s as toolBar,M as ttd,I as userList,O as welcomeScreen};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import"./chunk-SRAX5OIU-KFQikY-4.js";var e={paste:`貼上`,pasteAsPlaintext:`以純文字貼上`,pasteCharts:`貼上圖表`,chartType_bar:`長條圖`,chartType_line:`折線圖`,chartType_radar:`雷達圖`,chartType_plaintext:`純文字`,selectAll:`全選`,multiSelect:`將物件加入選取範圍`,moveCanvas:`移動畫布`,cut:`剪下`,copy:`複製`,copyAsPng:`以 PNG 格式儲存到剪貼簿`,copyAsSvg:`以 SVG 格式複製到剪貼簿`,copyText:`以文字格式複製至剪貼簿`,copySource:`複製來源至剪貼簿`,convertToCode:`轉換為程式碼`,bringForward:`上移一層`,sendToBack:`移到最底層`,bringToFront:`置於最頂層`,sendBackward:`往後移一層`,delete:`刪除`,copyStyles:`複製樣式`,pasteStyles:`貼上樣式`,stroke:`筆畫`,changeStroke:`變更筆畫顏色`,background:`背景`,changeBackground:`變更背景顏色`,fill:`填滿`,strokeWidth:`筆跡寬度`,strokeStyle:`筆畫樣式`,strokeStyle_solid:`實線`,strokeStyle_dashed:`虛線`,strokeStyle_dotted:`點線`,sloppiness:`線條風格`,pressure:``,pressure_constant:``,pressure_variable:``,opacity:`透明度`,textAlign:`文字對齊`,edges:`邊緣`,sharp:`尖銳`,round:`平滑`,arrowheads:`箭頭`,arrowhead_none:`無`,arrowhead_arrow:`箭頭`,arrowhead_bar:`條狀箭頭`,arrowhead_circle:`圓形`,arrowhead_circle_outline:`圓形(外框)`,arrowhead_triangle:`三角形`,arrowhead_triangle_outline:`三角形(外框)`,arrowhead_diamond:`菱形`,arrowhead_diamond_outline:`菱形(外框)`,arrowhead_crowfoot_many:`雞爪符號(多)`,arrowhead_crowfoot_one:`雞爪符號(一)`,arrowhead_crowfoot_one_or_many:`雞爪符號(一或多)`,arrowhead_cardinality_one:``,arrowhead_cardinality_many:``,arrowhead_cardinality_one_or_many:``,arrowhead_cardinality_exactly_one:``,arrowhead_cardinality_zero_or_one:``,arrowhead_cardinality_zero_or_many:``,more_options:`更多選項`,cardinality:``,arrowtypes:`箭頭類型`,arrowtype_sharp:`尖銳箭頭`,arrowtype_round:`彎角箭頭`,arrowtype_elbowed:`直角箭頭`,fontSize:`字型大小`,fontFamily:`字型系列`,addWatermark:`加上「以 Excalidraw 製作」浮水印`,handDrawn:`手寫`,normal:`一般`,code:`代碼`,small:`小`,medium:`中`,large:`大`,veryLarge:`特大`,solid:`實心`,hachure:`斜線筆觸`,zigzag:`Z字形`,crossHatch:`交叉筆觸`,thin:`細`,bold:`粗`,left:`左側`,center:`置中`,right:`右側`,extraBold:`極粗`,architect:`精確`,artist:`藝術`,cartoonist:`卡通`,fileTitle:`檔案名稱`,colorPicker:`色彩選擇工具`,canvasColors:`使用於畫布`,canvasBackground:`Canvas 背景`,drawingCanvas:`繪圖 canvas`,clearCanvas:`清除畫布`,layers:`圖層`,actions:`動作`,language:`語言`,liveCollaboration:`即時協作...`,duplicateSelection:`複製`,untitled:`無標題`,name:`名稱`,yourName:`你的名稱`,madeWithExcalidraw:`以 Excalidraw 製作`,group:`建立群組`,ungroup:`取消群組`,collaborators:`協作者`,toggleGrid:`切換網格`,addToLibrary:`加入資料庫`,removeFromLibrary:`從資料庫中移除`,libraryLoadingMessage:`資料庫讀取中…`,libraries:`瀏覽資料庫`,loadingScene:`場景讀取中…`,loadScene:`從檔案載入場景`,align:`對齊`,alignTop:`對齊頂部`,alignBottom:`對齊底部`,alignLeft:`對齊左側`,alignRight:`對齊右側`,centerVertically:`垂直置中`,centerHorizontally:`水平置中`,distributeHorizontally:`水平分布`,distributeVertically:`垂直分布`,flipHorizontal:`水平翻轉`,flipVertical:`垂直翻轉`,viewMode:`檢視模式`,share:`分享`,showStroke:`顯示線條檢色器`,showBackground:`顯示背景檢色器`,showFonts:`顯示字型選單`,toggleTheme:`切換淺色/深色主題`,theme:`主題`,personalLib:`個人資料庫`,excalidrawLib:`Excalidraw 資料庫`,decreaseFontSize:`縮小文字`,increaseFontSize:`放大文字`,unbindText:`取消綁定文字`,bindText:`結合文字至容器`,createContainerFromText:`將文字包於容器中`,link:{edit:`編輯連結`,editEmbed:`編輯可嵌入連結`,create:`新增連結`,label:`連結`,labelEmbed:`連結與嵌入`,empty:`未設定連結`,hint:`在此輸入或貼上連結`,goToElement:`移至目標元素`},lineEditor:{edit:`編輯線條`,editArrow:`編輯箭頭`},polygon:{breakPolygon:`解除多邊形`,convertToPolygon:`轉換為多邊形`},elementLock:{lock:`鎖定`,unlock:`解鎖`,lockAll:`全部鎖定`,unlockAll:`全部解鎖`},statusPublished:`已發布`,sidebarLock:`側欄維持開啟`,selectAllElementsInFrame:`選取框架內的所有元素`,removeAllElementsFromFrame:`從框架內移除所有元素`,eyeDropper:`從畫布中選取顏色`,textToDiagram:`文字轉圖表`,prompt:`提示詞`,followUs:`追蹤我們`,discordChat:`Discord 聊天室`,zoomToFitViewport:`縮放至符合 viewport`,zoomToFitSelection:`縮放至符合選取區`,zoomToFit:`縮放至顯示所有元素`,installPWA:`於本機安裝 Excalidraw (PWA)`,autoResize:`啟用文字自動縮放`,imageCropping:`圖片剪裁`,unCroppedDimension:`未剪裁尺寸`,copyElementLink:`複製此物件的連結`,linkToElement:`連結至物件`,wrapSelectionInFrame:`將選取內容放入框架`,tab:`Tab`,shapeSwitch:`切換形狀`,preferences:`偏好設定`,preferences_toolLock:`鎖定工具`,boxSelectionMode:``,boxSelectionContain:``,boxSelectionOverlap:``,arrowBinding:`箭頭連結`,midpointSnapping:`貼齊中點`},t={title:`連結至物件`,desc:`點擊畫布上的形狀或貼上連結`,notFound:`無法在畫布上找到連結的物件`},n={noItems:`尚未加入任何物件...`,hint_emptyLibrary:`選取畫布上的物件以加入,或從下方的公開儲存庫中安裝資料庫。`,hint_emptyPrivateLibrary:`選擇畫布上的物件以在此加入。`,search:{inputPlaceholder:`搜尋資料庫`,heading:`相符的資料庫`,noResults:`找不到相符的項目...`,clearSearch:`清除搜尋`}},r={title:`在畫布上尋找`,noMatch:`未找到符合項目…`,singleResult:`結果`,multipleResults:`結果`,placeholder:`在畫布上尋找文字…`,frames:`框架`,texts:`文字`},i={clearReset:`重設畫布`,exportJSON:`匯出至檔案`,exportImage:`匯出圖片`,export:`儲存至...`,copyToClipboard:`複製至剪貼簿`,copyLink:`複製連結`,save:`儲存目前檔案`,saveAs:`儲存為`,load:`開啟`,getShareableLink:`取得共享連結`,close:`關閉`,selectLanguage:`選擇語言`,scrollBackToContent:`捲動回到內容`,zoomIn:`放大`,zoomOut:`縮小`,resetZoom:`重設縮放`,menu:`選單`,done:`完成`,edit:`編輯`,undo:`復原`,redo:`重做`,resetLibrary:`重設資料庫`,createNewRoom:`建立新協作會議室`,fullScreen:`全螢幕`,darkMode:`深色模式`,lightMode:`淺色模式`,systemMode:`系統模式`,zenMode:`專注模式`,objectsSnapMode:`吸附至物件`,exitZenMode:`離開專注模式`,cancel:`取消`,saveLibNames:`儲存名稱並離開`,clear:`清除`,remove:`刪除`,embed:`切換嵌入`,publishLibrary:`重新命名或發布`,submit:`送出`,confirm:`確認`,embeddableInteractionButton:`點擊以互動`},a={clearReset:`這將會清除整個 canvas。你確定嗎?`,couldNotCreateShareableLink:`無法建立共享連結。`,couldNotCreateShareableLinkTooBig:`無法建立共享連結:場景太大`,couldNotLoadInvalidFile:`無法讀取失效的檔案。`,importBackendFailed:`後端讀取失敗。`,cannotExportEmptyCanvas:`無法輸出空白的 canvas。`,couldNotCopyToClipboard:`無法複製到剪貼簿`,decryptFailed:`無法解密資料。`,uploadedSecurly:`上傳已通過 end-to-end 加密,Excalidraw 伺服器和第三方無法皆讀取其內容。`,loadSceneOverridePrompt:`讀取外部圖樣將取代目前的內容。是否要繼續?`,collabStopOverridePrompt:`停止連線將覆蓋您先前於本機儲存的繪圖進度,是否確認?
|
|
2
|
-
|
|
3
|
-
(如要保留原有的本機繪圖進度,直接關閉瀏覽器分頁即可。)`,errorAddingToLibrary:`無法於此資料庫加入項目`,errorRemovingFromLibrary:`無法由此資料庫移除項目`,confirmAddLibrary:`這將會將 {{numShapes}} 個圖形加入你的資料庫,你確定嗎?`,imageDoesNotContainScene:`此圖檔中未包含場景資料。輸出檔案時是否有包含場景資料?`,cannotRestoreFromImage:`無法由此檔案回復場景。`,invalidSceneUrl:`無法由提供的 URL 匯入場景。可能是發生異常,或未包含有效的 Excalidraw JSON 資料。`,resetLibrary:`這會清除您的資料庫,是否確定?`,removeItemsFromsLibrary:`從資料庫刪除 {{count}} 項?`,invalidEncryptionKey:`加密鍵必須為22字元。即時協作已停用。`,collabOfflineWarning:`沒有可用的網路連線。
|
|
4
|
-
變更無法儲存!`,localStorageQuotaExceeded:`瀏覽器儲存空間已滿。變更將不會被儲存。`},o={unsupportedFileType:`不支援的檔案類型。`,imageInsertError:`無法插入圖片。請稍後再試…`,fileTooBig:`檔案過大。可接受的最大尺寸為 {{maxSize}} 。`,svgImageInsertError:`無法插入 SVG 圖片。此 SVG 檔案有問題。`,failedToFetchImage:`無法獲取圖片。`,cannotResolveCollabServer:`無法連結至 collab 伺服器。請重新整理後再試一次。`,importLibraryError:`無法載入資料庫`,saveLibraryError:`無法將資料庫存至儲存區。請將資料庫存至本機檔案以確保不會失去已變更的部分。`,collabSaveFailed:`無法儲存至後端資料庫。若此問題持續發生,請將檔案儲存於本機以確保資料不會遺失。`,collabSaveFailed_sizeExceeded:`無法儲存至後端資料庫,可能的原因為畫布尺寸過大。請將檔案儲存於本機以確保資料不會遺失。`,imageToolNotSupported:`圖片已停用`,brave_measure_text_error:{line1:`看起來您開啟了 Brave 瀏覽器的 <bold>Aggressively Block Fingerprinting</bold> 設定。`,line2:`這可能造成您畫布中 <bold>文字元素</bold> 的異常。`,line3:`我們強烈建議您關閉此設定。您可以依照 <link>這些步驟</link> 來進行。`,line4:`若關閉此設定並未修復文字元素的顯示問題,請回報於我們 GitHub 上的 <issueLink>issue</issueLink>,或在 <discordLink>Discord</discordLink> 上告訴我們。`},libraryElementTypeError:{embeddable:`可嵌入元素無法加入資料庫`,iframe:`IFrame 元素無法加入資料庫`,image:`即將支援加入圖片至資料庫!`},asyncPasteFailedOnRead:`無法貼上(無法由系統剪貼簿讀入)`,asyncPasteFailedOnParse:`無法貼上`,copyToSystemClipboardFailed:`無法複製至剪貼簿`},s={selection:`選取`,lasso:`繩索選取`,image:`插入圖片`,rectangle:`長方形`,diamond:`菱形`,ellipse:`橢圓`,arrow:`箭頭`,line:`線條`,freedraw:`繪圖`,text:`文字`,library:`資料庫`,lock:`可連續使用選取的工具`,penMode:`筆模式 - 避免觸摸`,link:`為所選的形狀增加\b/更新連結`,eraser:`橡皮擦`,frame:`框架工具`,magicframe:`線框稿轉為程式碼`,embeddable:`嵌入網站`,laser:`雷射筆`,autoshape:``,hand:`手形(平移工具)`,extraTools:`更多工具`,mermaidToExcalidraw:`Mermaid 至 Excalidraw`,convertElementType:`切換形狀類型`},c={rectangle:`矩形`,diamond:`菱形`,ellipse:`橢圓形`,arrow:`箭頭`,line:`線條`,freedraw:`自由繪圖`,text:`文字`,image:`圖片`,group:`群組`,frame:`框架`,magicframe:`線框稿轉為程式碼`,embeddable:`嵌入網站`,selection:`已選項目`,iframe:`IFrame框架`},l={canvasActions:`canvas 動作`,selectedShapeActions:`選取圖形動作`,shapes:`形狀`},u={dismissSearch:`{{shortcut}} 以隱藏搜尋`,canvasPanning:`如要移動畫布,請在拖曳時按住 {{shortcut_1}} 或 {{shortcut_2}},或使用手形工具`,linearElement:`點擊以繪製多點曲線;或拖曳以繪製直線`,arrowTool:`點選以開始建立多點,拖曳可建立單一線段。再次按下 {{shortcut}} 以變更箭頭類型。`,arrowBindModifiers:`按住 {{shortcut_1}} 以停用綁定,或按住 {{shortcut_2}} 以綁定於固定點`,freeDraw:`點擊並拖曳來繪圖,放開即結束`,text:`提示:亦可使用選取工具在任何地方雙擊來加入文字`,embeddable:`點擊並拖移以建立嵌入網站`,autoshape:``,text_selected:`按兩下滑鼠或按 {{shortcut}} 以編輯文字`,text_editing:`{{shortcut_1}} 或 {{shortcut_2}} 以結束編輯`,linearElementMulti:`點選最後一個點,或按下 {{shortcut_1}} 或 {{shortcut_2}} 以完成`,lockAngle:`你可以按住 {{shortcut}} 以鎖定角度`,resize:`縮放時按住 {{shortcut_1}} 可保持等比例,
|
|
5
|
-
按住 {{shortcut_2}} 則可從中心縮放`,resizeImage:`按住 {{shortcut_1}} 可自由縮放,
|
|
6
|
-
按住 {{shortcut_2}} 則可從中心縮放`,rotate:`你可以在旋轉時按住 {{shortcut}} 以鎖定角度`,toggleArrowhead:``,lineEditor_info:`按住 {{shortcut_1}} 並按兩下或按下 {{shortcut_2}} 以編輯點`,lineEditor_line_info:`按兩下或按 {{shortcut}} 以編輯點`,lineEditor_pointSelected:`按下 {{shortcut_1}} 移除點,
|
|
7
|
-
{{shortcut_2}} 重製,或拖曳以移動`,lineEditor_nothingSelected:`選取一個點以進行編輯(按住 {{shortcut_1}} 可多選),
|
|
8
|
-
或按住 {{shortcut_2}} 並點選以新增點`,publishLibrary:`發布個人資料庫`,bindTextToElement:`按下 {{shortcut}} 新增文字`,createFlowchart:`按下 {{shortcut}} 建立流程圖`,deepBoxSelect:`按住 {{shortcut}} 以進行深度選取,並防止拖曳`,eraserRevert:`按住 {{shortcut}} 以還原標記為刪除的元素`,firefox_clipboard_write:`此功能有機會透過將 "dom.events.asyncClipboard.clipboardItem" 設定為 "true" 來開啟。
|
|
9
|
-
若要變更 Firefox 瀏覽器的此設定值,請至 "about:config" 頁面。`,disableSnapping:`按住 {{shortcut}} 以停用貼齊(自動對齊)`,enterCropEditor:`按兩下圖片或按下 {{shortcut}} 以裁剪圖片`,leaveCropEditor:`點選圖片外部,或按下 {{shortcut_1}} 或 {{shortcut_2}} 以完成裁剪`},d={cannotShowPreview:`無法顯示預覽`,canvasTooBig:`畫布可能過大`,canvasTooBigTip:`提示:可嘗試將最遠的元素移動至較集中的位置`},f={headingMain:`發生錯誤,嘗試<button>重新載入頁面。</button>`,clearCanvasMessage:`若重新載入仍無法解決問題,嘗試<button>清除 canvas。</button>`,clearCanvasCaveat:`此動作將造成目前的作品被移除。`,trackedToSentry:`此錯誤與其識別碼{{eventId}}將由系統記錄。`,openIssueMessage:`我們將謹慎處理,你的作品內容不會被包含在錯誤報告中。若你的作品不需保持私密,請考慮使用我們的<button>bug tracker。</button>請將下列資訊複製貼上至 GitHub issue 中。`,sceneContent:`作品內容:`},p={or:`或`},m={desc_intro:`邀請其他人一起協作`,desc_privacy:`不用擔心,此連線為端到端加密且完全私有,即使是我們的伺服器也無法看見您的繪圖。`,button_startSession:`開始連線`,button_stopSession:`停止連線`,desc_inProgressIntro:`即時協作連線正在進行中。`,desc_shareLink:`將此連結分享給欲協作的對象:`,desc_exitSession:`停止連線將中斷你與協作會議室的連結,但你仍可於本機編輯此作品。意指停止連線後你的編輯不會被先前共同協作的人看見,且他們可繼續共同協作另一個版本。`,shareTitle:`加入 Excalidraw 上的即時協作會議室`},h={title:`錯誤`},g={title:`儲存中`,defaultMessage:`正在準備儲存...`},_={disk_title:`儲存至硬碟`,disk_details:`將場景匯出為可供匯入之檔案`,disk_button:`儲存至檔案`,link_title:`可共享連結`,link_details:`匯出為唯讀連結`,link_button:`匯出為連結`,excalidrawplus_description:`將此場景儲存至你的 Excalidraw+ 工作區`,excalidrawplus_button:`輸出`,excalidrawplus_exportError:`目前無法輸出至 Excalidraw+`},v={blog:`閱讀部落格`,click:`點擊`,deepSelect:`深度選取`,deepBoxSelect:`在容器內深度選取並避免拖曳`,createFlowchart:`由基本型建立流程圖`,navigateFlowchart:`導覽流程圖`,curvedArrow:`曲箭頭`,curvedLine:`曲線`,documentation:`文件`,doubleClick:`雙擊`,drag:`拖曳`,editor:`編輯器`,editLineArrowPoints:`編輯線/箭頭控制點`,editText:`編輯文字/增加標籤`,github:`發現異常?回報問題`,howto:`參照我們的說明`,or:`或`,preventBinding:`避免箭號連結`,tools:`工具`,shortcuts:`鍵盤快速鍵`,textFinish:`完成編輯(文字編輯器)`,textNewLine:`換行(文字編輯器)`,title:`說明`,view:`檢視`,zoomToFit:`放大至填滿畫面`,zoomToSelection:`縮放至選取區`,toggleElementLock:`鎖定/解鎖已選的項目`,movePageUpDown:`向上/下移動頁面`,movePageLeftRight:`向左/右移動頁面`,cropStart:`裁切圖片`,cropFinish:`完成圖片裁切`},y={title:`清除畫布`},b={title:`發布資料庫`,itemName:`項目名稱`,authorName:`作者名稱`,githubUsername:`GitHub 帳號`,twitterUsername:`Twitter 帳號`,libraryName:`資料庫名稱`,libraryDesc:`資料庫說明`,website:`網站`,placeholder:{authorName:`您的名稱或帳號`,libraryName:`您的資料庫名稱`,libraryDesc:`提供您的資料庫說明以利他人理解其用途`,githubHandle:`Github handle(選填),填寫後您可編輯已送出待審查的資料庫`,twitterHandle:`Twitter 帳號(選填),填寫後若我們在 Twitter 推廣時可提及您`,website:`您個人網站或其他網站的連結(選填)`},errors:{required:`必填`,website:`請輸入有效的 URL`},noteDescription:`送出您的資料庫後將被包含於<link>公開資料庫 repository</link>以利他人在其繪圖中使用。`,noteGuidelines:`資料庫需先經人工審查。請閱讀<link>說明文件</link>再送出。若需溝通與修改時要透過 GitHub 帳號來進行,但並非強制需求。`,noteLicense:`送出即代表您同意此資料庫將發布時使用 <link>MIT 授權,</link>簡單來說是指任何人都能不受限制的使用。`,noteItems:`每個資料庫項目都有獨立的名稱故可篩選。會包含下列資料庫項目:`,atleastOneLibItem:`請選擇至少一項資料庫項目`,republishWarning:`注意:部分選取中的物件先前已發布/送出過。建議僅在要更新現存資料庫或已送出的物件時才重新送出這些物件。`},x={title:`資料庫已送出`,content:`感謝 {{authorName}} 。您的資料庫已送出待審查。您可查看目前狀態<link>在此</link>`},S={resetLibrary:`重設資料庫`,removeItemsFromLib:`從資料庫移除所選的項目`},C={header:`匯出圖片`,label:{withBackground:`背景`,onlySelected:`僅選取物件`,darkMode:`深色模式`,embedScene:`嵌入場景`,scale:`縮放比例`,padding:`內間距`},tooltip:{embedScene:`用於回復場景的場景資料會被包含在輸出的 PNG/SVG 檔案中。
|
|
10
|
-
會增加輸出的檔案大小。`},title:{exportToPng:`輸出成 PNG`,exportToSvg:`輸出成 SVG`,copyPngToClipboard:`複製 PNG 至剪貼簿`},button:{exportToPng:`PNG`,exportToSvg:`SVG`,copyPngToClipboard:`複製至剪貼簿`}},w={tooltip:`你的作品已使用 end-to-end 方式加密,Excalidraw 的伺服器也無法取得其內容。`,link:`Excalidraw 端到端加密的相關部落格文章`},T={angle:`角度`,shapes:`形狀`,height:`高度`,scene:`場景`,selected:`已選`,storage:`儲存`,fullTitle:`畫布與形狀屬性設定`,title:`屬性`,generalStats:`一般`,elementProperties:`形狀屬性`,total:`合計`,version:`版本`,versionCopy:`點擊複製`,versionNotAvailable:`無法取得版本`,width:`寬度`},E={addedToLibrary:`加入資料庫`,copyStyles:`已複製樣式`,copyToClipboard:`複製至剪貼簿。`,copyToClipboardAsPng:`以 PNG 格式將 {{exportSelection}} 複製至剪貼簿
|
|
11
|
-
({{exportColorScheme}})`,copyToClipboardAsSvg:`以 SVG 格式將 {{exportSelection}} 複製至剪貼簿
|
|
12
|
-
({{exportColorScheme}})`,fileSaved:`已儲存檔案。`,fileSavedToFilename:`儲存為 {filename}`,canvas:`畫布`,selection:`已選項目`,pasteAsSingleElement:`使用 {{shortcut}} 以做為單一物件貼上,
|
|
13
|
-
或貼上至現有的文字編輯器`,unableToEmbed:`目前不允許嵌入此網址。您可至 GitHub 提出 issue 以要求將此網址加入合格名單。`,unrecognizedLinkFormat:`您嵌入的連結格式不符。請嘗試貼入原網站所提供的「嵌入」字串。`,elementLinkCopied:`連結已複製至剪貼簿`},D={transparent:`透明`,black:`黑`,white:`白`,red:`紅`,pink:`粉紅`,grape:`深紫`,violet:`藍紫`,gray:`灰`,blue:`藍`,cyan:`青`,teal:`藍綠`,green:`綠`,yellow:`黃`,orange:`橘`,bronze:`銅`},O={app:{center_heading:`你的繪圖已儲存在瀏覽器的儲存空間中。`,center_heading_line2:`瀏覽器儲存空間可能會意外地被清除。`,center_heading_line3:`請定期將作品儲存為檔案,以避免遺失。`,center_heading_plus:`您是否是要前往 Excalidraw+ ?`,menuHint:`輸出、偏好設定、語言...`},defaults:{menuHint:`輸出、偏好設定及其他...`,center_heading:`圖表。製作。超簡單。`,toolbarHint:`選個工具開始畫圖吧!`,helpHint:`快速鍵與說明`}},k={color:`顏色`,mostUsedCustomColors:`最常使用的自訂顏色`,colors:`顏色`,shades:`漸變色`,hexCode:`Hex 碼`,noShades:`沒有此顏色的漸變色`,invalidColor:``,invalidHexLength:``},A={action:{exportToImage:{title:`匯出為圖片`,button:`匯出為圖片`,description:`將場景匯出為可供匯入的圖片檔案`},saveToDisk:{title:`儲存至硬碟`,button:`儲存至硬碟`,description:`將場景匯出為可供匯入的檔案`},excalidrawPlus:{title:`Excalidraw+`,button:`匯出至 Excalidraw+`,description:`將此場景儲存至您的 Excalidraw+ 工作區`}},modal:{loadFromFile:{title:`從檔案載入`,button:`從檔案載入`,description:`從檔案載入將<bold>取代您目前的內容</bold>。<br></br>可先使用下方的選項備份您的繪圖。`},shareableLink:{title:`從連結載入`,button:`取代我的內容`,description:`載入外部繪圖將<bold>取代您目前的內容</bold>。<br></br>可先使用下方的選項備份您的繪圖。`}}},j={title:`Mermaid 至 Excalidraw`,button:`插入`,description:``,syntax:`Mermaid 語法`,preview:`預覽`,label:`Mermaid`,inputPlaceholder:`在這裡編寫 Mermaid 定義...`,autoFixAvailable:`自動修正可用`},M={error:`錯誤!`},N={inputPlaceholder:`在這裡開始輸入你的圖表構想...({{shortcut}} 換行)`,inputPlaceholderWithMessages:`繼續調整你的圖表...`,generating:`生成中...`,rateLimitRemaining:`今日剩餘 {{count}} 次請求`,role:{user:`你`,assistant:`AI 助理`,system:`系統`},aiBeta:`AI Beta 版`,label:`對話`,menu:`選單`,newChat:`新的對話`,deleteChat:`刪除對話`,deleteMessage:`刪除訊息`,viewAsMermaid:`以 Mermaid 格式檢視`,placeholder:{title:`讓我們開始設計你的圖表`,description:`描述你想要建立的圖表,我們將為你生成。`,hint:``},preview:`預覽`,insert:`插入`,retry:`重試`,errors:{promptTooShort:`提示詞太短(至少 {{min}} 個字元)`,promptTooLong:`提示詞太長(最多 {{max}} 個字元)`,generationFailed:`生成失敗`,invalidDiagram:`生成的圖表語法無效 :(。你可以手動編輯、嘗試自動修復,或換個提示詞試試。`,fixInMermaid:`手動編輯 Mermaid →`,aiRepair:`重新生成(自動修復)→`,requestAborted:`請求已中止`,requestFailed:`請求失敗`,mermaidParseError:`Mermaid 語法錯誤`},rateLimit:{messageLimit:`你已達到免費方案的 AI 使用上限。請試用 Excalidraw+ 以取得更多額度,或明天再試。`,generalRateLimit:`別心急,你的操作速度太快了!請稍等片刻後再試。`,messageLimitInputPlaceholder:`你已達到訊息上限`},upsellBtnLabel:`升級至 Plus`},P={placeholder:`快速搜尋`},F={badge:{old:`舊版`},sceneFonts:`在此場景中`,availableFonts:`可用字型`,empty:`找不到字型`},I={empty:`找不到使用者`,hint:{text:`點擊使用者以進行追蹤`,followStatus:`您正在追蹤此使用者`,inCall:`使用者正在語音通話中`,micMuted:`使用者的麥克風已靜音`,isSpeaking:`使用者說話中`}},L={title:`指令面板`,shortcuts:{select:`選取`,confirm:`確認`,close:`關閉`},recents:`最近使用`,search:{placeholder:`搜尋選單與指令並找出隱藏功能`,noMatch:`沒有符合的指令…`},itemNotAvailable:`指令無法使用…`,shortcutHint:`使用 {{shortcut}} 開啟指令面板`},R={ctrl:`Ctrl`,option:`Option`,cmd:`Cmd`,alt:`Alt`,escape:`Esc`,enter:`Enter`,shift:`Shift`,spacebar:`空白鍵`,delete:`Delete`,mmb:`滾輪`},z={labels:e,elementLink:t,library:n,search:r,buttons:i,alerts:a,errors:o,toolBar:s,element:c,headings:l,hints:u,canvasError:d,errorSplash:f,shareDialog:p,roomDialog:m,errorDialog:h,progressDialog:g,exportDialog:_,helpDialog:v,clearCanvasDialog:y,publishDialog:b,publishSuccessDialog:x,confirmDialog:S,imageExportDialog:C,encrypted:w,stats:T,toast:E,colors:D,welcomeScreen:O,colorPicker:k,overwriteConfirm:A,mermaid:j,ttd:M,chat:N,quickSearch:P,fontList:F,userList:I,commandPalette:L,keys:R};export{a as alerts,i as buttons,d as canvasError,N as chat,y as clearCanvasDialog,k as colorPicker,D as colors,L as commandPalette,S as confirmDialog,z as default,c as element,t as elementLink,w as encrypted,h as errorDialog,f as errorSplash,o as errors,_ as exportDialog,F as fontList,l as headings,v as helpDialog,u as hints,C as imageExportDialog,R as keys,e as labels,n as library,j as mermaid,A as overwriteConfirm,g as progressDialog,b as publishDialog,x as publishSuccessDialog,P as quickSearch,m as roomDialog,r as search,p as shareDialog,T as stats,E as toast,s as toolBar,M as ttd,I as userList,O as welcomeScreen};
|
package/integrations/pi/index.ts
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';
|
|
2
|
-
import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
|
|
3
|
-
import { Type } from 'typebox';
|
|
4
|
-
|
|
5
|
-
let client: Client | null = null;
|
|
6
|
-
let transport: StreamableHTTPClientTransport | null = null;
|
|
7
|
-
|
|
8
|
-
async function getClient() {
|
|
9
|
-
if (client) return client;
|
|
10
|
-
const endpoint = process.env.COLLABMD_MCP_URL?.trim();
|
|
11
|
-
const token = process.env.COLLABMD_ACCESS_TOKEN?.trim();
|
|
12
|
-
if (!endpoint) {
|
|
13
|
-
throw new Error('Set COLLABMD_MCP_URL from CollabMD Connect AI Agent.');
|
|
14
|
-
}
|
|
15
|
-
const url = new URL(endpoint);
|
|
16
|
-
if (url.protocol !== 'https:' && !['localhost', '127.0.0.1', '::1'].includes(url.hostname)) {
|
|
17
|
-
throw new Error('Remote CollabMD MCP endpoints must use HTTPS.');
|
|
18
|
-
}
|
|
19
|
-
client = new Client({ name: 'collabmd-pi', version: '1.0.0' });
|
|
20
|
-
transport = new StreamableHTTPClientTransport(url, token
|
|
21
|
-
? { authProvider: { token: async () => token } }
|
|
22
|
-
: {});
|
|
23
|
-
await client.connect(transport);
|
|
24
|
-
return client;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async function callTool(name: string, args: Record<string, unknown>, signal: AbortSignal) {
|
|
28
|
-
const connected = await getClient();
|
|
29
|
-
const result = await connected.callTool({ arguments: args, name }, { signal });
|
|
30
|
-
return { content: result.content, details: result.structuredContent ?? result };
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export default function collabMdExtension(pi: ExtensionAPI) {
|
|
34
|
-
pi.registerTool({
|
|
35
|
-
name: 'collabmd_list_documents',
|
|
36
|
-
label: 'List CollabMD documents',
|
|
37
|
-
description: 'List readable documents in the connected CollabMD vault.',
|
|
38
|
-
parameters: Type.Object({
|
|
39
|
-
kinds: Type.Optional(Type.Array(Type.String())),
|
|
40
|
-
limit: Type.Optional(Type.Integer({ maximum: 200, minimum: 1 })),
|
|
41
|
-
prefix: Type.Optional(Type.String()),
|
|
42
|
-
}),
|
|
43
|
-
execute: (_id, params, signal) => callTool('list_documents', params, signal),
|
|
44
|
-
});
|
|
45
|
-
pi.registerTool({
|
|
46
|
-
name: 'collabmd_search_vault',
|
|
47
|
-
label: 'Search CollabMD vault',
|
|
48
|
-
description: 'Search current CollabMD Vault Content and return path/line evidence.',
|
|
49
|
-
parameters: Type.Object({ query: Type.String({ minLength: 2 }) }),
|
|
50
|
-
execute: (_id, params, signal) => callTool('search_vault', params, signal),
|
|
51
|
-
});
|
|
52
|
-
pi.registerTool({
|
|
53
|
-
name: 'collabmd_read_document',
|
|
54
|
-
label: 'Read CollabMD document',
|
|
55
|
-
description: 'Read current document content and revision before answering or editing.',
|
|
56
|
-
parameters: Type.Object({
|
|
57
|
-
lineCount: Type.Optional(Type.Integer({ maximum: 500, minimum: 1 })),
|
|
58
|
-
path: Type.String(),
|
|
59
|
-
startLine: Type.Optional(Type.Integer({ minimum: 1 })),
|
|
60
|
-
}),
|
|
61
|
-
execute: (_id, params, signal) => callTool('read_document', params, signal),
|
|
62
|
-
});
|
|
63
|
-
pi.registerTool({
|
|
64
|
-
name: 'collabmd_apply_text_edits',
|
|
65
|
-
label: 'Edit CollabMD document',
|
|
66
|
-
description: 'Apply exact replacements using current CollabMD document revision.',
|
|
67
|
-
parameters: Type.Object({
|
|
68
|
-
path: Type.String(),
|
|
69
|
-
replacements: Type.Array(Type.Object({ newText: Type.String(), oldText: Type.String() })),
|
|
70
|
-
revision: Type.String(),
|
|
71
|
-
}),
|
|
72
|
-
execute: (_id, params, signal) => callTool('apply_text_edits', params, signal),
|
|
73
|
-
});
|
|
74
|
-
pi.registerTool({
|
|
75
|
-
name: 'collabmd_create_document',
|
|
76
|
-
label: 'Create CollabMD document',
|
|
77
|
-
description: 'Create a new supported CollabMD text document.',
|
|
78
|
-
parameters: Type.Object({ content: Type.String(), path: Type.String() }),
|
|
79
|
-
execute: (_id, params, signal) => callTool('create_document', params, signal),
|
|
80
|
-
});
|
|
81
|
-
pi.registerTool({
|
|
82
|
-
name: 'collabmd_get_supported_syntax',
|
|
83
|
-
label: 'Get CollabMD syntax',
|
|
84
|
-
description: 'Describe CollabMD-supported formats and syntax before creating files.',
|
|
85
|
-
parameters: Type.Object({ kind: Type.Optional(Type.String()) }),
|
|
86
|
-
execute: (_id, params, signal) => callTool('get_collabmd_syntax', params, signal),
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
pi.on('session_shutdown', async () => {
|
|
90
|
-
await transport?.close().catch(() => {});
|
|
91
|
-
transport = null;
|
|
92
|
-
client = null;
|
|
93
|
-
});
|
|
94
|
-
}
|
|
File without changes
|
|
File without changes
|