@dwelle/excalidraw 0.5.0-e6263588 → 0.5.0-e9944c4
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/CHANGELOG.md +16 -0
- package/dist/dev/{chunk-MYBMQLFV.js → chunk-6FPW7UII.js} +2 -2
- package/dist/dev/{chunk-MYBMQLFV.js.map → chunk-6FPW7UII.js.map} +1 -1
- package/dist/dev/{chunk-MUNVYEGW.js → chunk-A4LHQJCQ.js} +16 -3
- package/dist/dev/chunk-A4LHQJCQ.js.map +7 -0
- package/dist/dev/{chunk-GK2P2Z4N.js → chunk-MUXNIGJA.js} +5140 -3664
- package/dist/dev/chunk-MUXNIGJA.js.map +7 -0
- package/dist/dev/chunk-Q67DF2PJ.js +69 -0
- package/dist/dev/chunk-Q67DF2PJ.js.map +7 -0
- package/dist/dev/components/TTDDialog/{CodeMirrorEditor-FCA7YAIL.js → CodeMirrorEditor-XFPXQDTD.js} +2 -2
- package/dist/dev/data/{image-5N65CA7G.js → image-DBJ5VI3T.js} +3 -3
- package/dist/dev/index.css +324 -221
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +3846 -1991
- package/dist/dev/index.js.map +4 -4
- package/dist/dev/locales/{ar-SA-YEOLME2Y.js → ar-SA-EW44IW4V.js} +14 -2
- package/dist/dev/locales/ar-SA-EW44IW4V.js.map +7 -0
- package/dist/dev/locales/{az-AZ-DQL36U4O.js → az-AZ-AI7WAYA2.js} +14 -2
- package/dist/dev/locales/az-AZ-AI7WAYA2.js.map +7 -0
- package/dist/dev/locales/{bg-BG-LG6R5FEQ.js → bg-BG-43ZNGDXF.js} +14 -2
- package/dist/dev/locales/bg-BG-43ZNGDXF.js.map +7 -0
- package/dist/dev/locales/{bn-BD-W63P7JT5.js → bn-BD-PU4CN7NP.js} +14 -2
- package/dist/dev/locales/bn-BD-PU4CN7NP.js.map +7 -0
- package/dist/dev/locales/{bn-IN-SCHACAA6.js → bn-IN-54CF43JL.js} +14 -2
- package/dist/dev/locales/bn-IN-54CF43JL.js.map +7 -0
- package/dist/dev/locales/{ca-ES-XP3CQTWV.js → ca-ES-RHJO3QDO.js} +14 -2
- package/dist/dev/locales/ca-ES-RHJO3QDO.js.map +7 -0
- package/dist/dev/locales/{cs-CZ-EXLEOJMD.js → cs-CZ-ZRSAO3BA.js} +14 -2
- package/dist/dev/locales/cs-CZ-ZRSAO3BA.js.map +7 -0
- package/dist/dev/locales/{da-DK-46ONLZRX.js → da-DK-OAB6DEJX.js} +14 -2
- package/dist/dev/locales/da-DK-OAB6DEJX.js.map +7 -0
- package/dist/dev/locales/{de-CH-A5QH3YGW.js → de-CH-QF7JLXTF.js} +14 -2
- package/dist/dev/locales/de-CH-QF7JLXTF.js.map +7 -0
- package/dist/dev/locales/{de-DE-FVCCKR5N.js → de-DE-5ZO4KOPT.js} +14 -2
- package/dist/dev/locales/de-DE-5ZO4KOPT.js.map +7 -0
- package/dist/dev/locales/{el-GR-SB4MX5JS.js → el-GR-F74ZSUEO.js} +14 -2
- package/dist/dev/locales/el-GR-F74ZSUEO.js.map +7 -0
- package/dist/dev/locales/{en-AZHTDC2Z.js → en-INQU5YPU.js} +2 -2
- package/dist/dev/locales/{es-ES-VRTYQG6S.js → es-ES-3B3IENPS.js} +14 -2
- package/dist/dev/locales/es-ES-3B3IENPS.js.map +7 -0
- package/dist/dev/locales/{eu-ES-3OHEU2YV.js → eu-ES-NH447TVU.js} +14 -2
- package/dist/dev/locales/eu-ES-NH447TVU.js.map +7 -0
- package/dist/dev/locales/{fa-IR-74WR2KXF.js → fa-IR-V44PNTTK.js} +46 -34
- package/dist/dev/locales/fa-IR-V44PNTTK.js.map +7 -0
- package/dist/dev/locales/{fi-FI-XZQC4II2.js → fi-FI-ZXSYWCC4.js} +14 -2
- package/dist/dev/locales/fi-FI-ZXSYWCC4.js.map +7 -0
- package/dist/dev/locales/{fr-FR-RABBDBKM.js → fr-FR-RJSOSEYS.js} +25 -13
- package/dist/dev/locales/fr-FR-RJSOSEYS.js.map +7 -0
- package/dist/dev/locales/{gl-ES-OU3Q6XUE.js → gl-ES-NAUVMVFY.js} +14 -2
- package/dist/dev/locales/gl-ES-NAUVMVFY.js.map +7 -0
- package/dist/dev/locales/{he-IL-6NCD5D54.js → he-IL-JBKWWR75.js} +67 -55
- package/dist/dev/locales/he-IL-JBKWWR75.js.map +7 -0
- package/dist/dev/locales/{hi-IN-M54WKOJI.js → hi-IN-SD773MVZ.js} +14 -2
- package/dist/dev/locales/hi-IN-SD773MVZ.js.map +7 -0
- package/dist/dev/locales/{hu-HU-HAW63BCI.js → hu-HU-OTA7GOAV.js} +14 -2
- package/dist/dev/locales/hu-HU-OTA7GOAV.js.map +7 -0
- package/dist/dev/locales/{id-ID-TFSPHGWX.js → id-ID-KGCGQFTT.js} +100 -88
- package/dist/dev/locales/id-ID-KGCGQFTT.js.map +7 -0
- package/dist/dev/locales/{it-IT-MH3BAO5W.js → it-IT-EWGEXMVK.js} +25 -13
- package/dist/dev/locales/it-IT-EWGEXMVK.js.map +7 -0
- package/dist/dev/locales/{ja-JP-UGJBHLX6.js → ja-JP-YMGRGBPS.js} +17 -5
- package/dist/dev/locales/ja-JP-YMGRGBPS.js.map +7 -0
- package/dist/dev/locales/{kaa-5ZUEYWIM.js → kaa-RRE7XUCW.js} +14 -2
- package/dist/dev/locales/kaa-RRE7XUCW.js.map +7 -0
- package/dist/dev/locales/{kab-KAB-RLAZQZSM.js → kab-KAB-ZCYVOJU4.js} +14 -2
- package/dist/dev/locales/kab-KAB-ZCYVOJU4.js.map +7 -0
- package/dist/dev/locales/{kk-KZ-CIP7GOIF.js → kk-KZ-TO6XEFJC.js} +14 -2
- package/dist/dev/locales/kk-KZ-TO6XEFJC.js.map +7 -0
- package/dist/dev/locales/{km-KH-YMR4247H.js → km-KH-3HTDL5HB.js} +14 -2
- package/dist/dev/locales/km-KH-3HTDL5HB.js.map +7 -0
- package/dist/dev/locales/{ko-KR-WGKQKR2R.js → ko-KR-O4L4O7L6.js} +14 -2
- package/dist/dev/locales/ko-KR-O4L4O7L6.js.map +7 -0
- package/dist/dev/locales/{ku-TR-ZSJN6TN6.js → ku-TR-AFJWDY67.js} +14 -2
- package/dist/dev/locales/ku-TR-AFJWDY67.js.map +7 -0
- package/dist/dev/locales/{lt-LT-FT6ZGIZP.js → lt-LT-7QOT2VDQ.js} +14 -2
- package/dist/dev/locales/lt-LT-7QOT2VDQ.js.map +7 -0
- package/dist/dev/locales/{lv-LV-U74YKDPR.js → lv-LV-WV6C4NYF.js} +14 -2
- package/dist/dev/locales/lv-LV-WV6C4NYF.js.map +7 -0
- package/dist/dev/locales/{mr-IN-KN72LOIA.js → mr-IN-3TLYWOEI.js} +14 -2
- package/dist/dev/locales/mr-IN-3TLYWOEI.js.map +7 -0
- package/dist/dev/locales/{my-MM-E57NLQ7W.js → my-MM-NNL2QJT3.js} +14 -2
- package/dist/dev/locales/my-MM-NNL2QJT3.js.map +7 -0
- package/dist/dev/locales/{nb-NO-FYQDWD7X.js → nb-NO-PG3XLMEV.js} +14 -2
- package/dist/dev/locales/nb-NO-PG3XLMEV.js.map +7 -0
- package/dist/dev/locales/{nl-NL-D5MZQRAC.js → nl-NL-MMOYEKKQ.js} +14 -2
- package/dist/dev/locales/nl-NL-MMOYEKKQ.js.map +7 -0
- package/dist/dev/locales/{nn-NO-5ZEUZJV4.js → nn-NO-AAC2I2YX.js} +14 -2
- package/dist/dev/locales/nn-NO-AAC2I2YX.js.map +7 -0
- package/dist/dev/locales/{oc-FR-MVW6LDAP.js → oc-FR-SR6MFB4N.js} +14 -2
- package/dist/dev/locales/oc-FR-SR6MFB4N.js.map +7 -0
- package/dist/dev/locales/{pa-IN-2NH3SVNI.js → pa-IN-ADGMQLQI.js} +14 -2
- package/dist/dev/locales/pa-IN-ADGMQLQI.js.map +7 -0
- package/dist/dev/locales/{percentages-QBBLQLIV.js → percentages-X2QIQ6XJ.js} +2 -2
- package/dist/dev/locales/{pl-PL-M6LYWLHY.js → pl-PL-FNIPTMVP.js} +14 -2
- package/dist/dev/locales/pl-PL-FNIPTMVP.js.map +7 -0
- package/dist/dev/locales/{pt-BR-27M3CCS7.js → pt-BR-67FMCDNE.js} +14 -2
- package/dist/dev/locales/pt-BR-67FMCDNE.js.map +7 -0
- package/dist/dev/locales/{pt-PT-V3C226NP.js → pt-PT-4G3GI4SF.js} +14 -2
- package/dist/dev/locales/pt-PT-4G3GI4SF.js.map +7 -0
- package/dist/dev/locales/{ro-RO-S4GNBAJI.js → ro-RO-CUZFN555.js} +25 -13
- package/dist/dev/locales/ro-RO-CUZFN555.js.map +7 -0
- package/dist/dev/locales/{ru-RU-CRRT5JUZ.js → ru-RU-4GHINTII.js} +14 -2
- package/dist/dev/locales/ru-RU-4GHINTII.js.map +7 -0
- package/dist/dev/locales/{si-LK-APMICZ7H.js → si-LK-SSNT7T4A.js} +14 -2
- package/dist/dev/locales/si-LK-SSNT7T4A.js.map +7 -0
- package/dist/dev/locales/{sk-SK-7ZFDZG6Y.js → sk-SK-J7TKZQEH.js} +14 -2
- package/dist/dev/locales/sk-SK-J7TKZQEH.js.map +7 -0
- package/dist/dev/locales/{sl-SI-BBENCX7D.js → sl-SI-SIBMLDYY.js} +130 -118
- package/dist/dev/locales/sl-SI-SIBMLDYY.js.map +7 -0
- package/dist/dev/locales/{sv-SE-35QJIOEW.js → sv-SE-6GYGFZNL.js} +25 -13
- package/dist/dev/locales/sv-SE-6GYGFZNL.js.map +7 -0
- package/dist/dev/locales/{ta-IN-4N5CFIWZ.js → ta-IN-7AW6CTGA.js} +14 -2
- package/dist/dev/locales/ta-IN-7AW6CTGA.js.map +7 -0
- package/dist/dev/locales/{th-TH-2F4V4IDB.js → th-TH-FP7ULYYM.js} +23 -11
- package/dist/dev/locales/th-TH-FP7ULYYM.js.map +7 -0
- package/dist/dev/locales/{tr-TR-NDFP3F7P.js → tr-TR-UDQGNXAG.js} +14 -2
- package/dist/dev/locales/tr-TR-UDQGNXAG.js.map +7 -0
- package/dist/dev/locales/{uk-UA-4I6VBQZ5.js → uk-UA-25HL2NCU.js} +51 -39
- package/dist/dev/locales/uk-UA-25HL2NCU.js.map +7 -0
- package/dist/dev/locales/{uz-UZ-UVKC7UNZ.js → uz-UZ-OPSBAY4H.js} +14 -2
- package/dist/dev/locales/uz-UZ-OPSBAY4H.js.map +7 -0
- package/dist/dev/locales/{vi-VN-UQCETDRL.js → vi-VN-DK367UGA.js} +14 -2
- package/dist/dev/locales/vi-VN-DK367UGA.js.map +7 -0
- package/dist/dev/locales/{zh-CN-RSRHKN75.js → zh-CN-QCVKNWUH.js} +14 -2
- package/dist/dev/locales/zh-CN-QCVKNWUH.js.map +7 -0
- package/dist/dev/locales/{zh-HK-XSFQ32U4.js → zh-HK-WFGYHWPG.js} +14 -2
- package/dist/dev/locales/zh-HK-WFGYHWPG.js.map +7 -0
- package/dist/dev/locales/{zh-TW-KFVYWRFJ.js → zh-TW-WHQS4ZSD.js} +33 -21
- package/dist/dev/locales/zh-TW-WHQS4ZSD.js.map +7 -0
- package/dist/dev/subset-shared.chunk.js +1 -1
- package/dist/dev/subset-worker.chunk.js +1 -1
- package/dist/prod/chunk-25DVBZY5.js +34 -0
- package/dist/prod/chunk-52O7NOSZ.js +12 -0
- package/dist/prod/chunk-DYU5D34O.js +1 -0
- package/dist/prod/{chunk-KVZVLATH.js → chunk-RNVAYDMN.js} +1 -1
- package/dist/prod/components/TTDDialog/{CodeMirrorEditor-IYDFKSMV.js → CodeMirrorEditor-WLFHUPRX.js} +1 -1
- package/dist/prod/data/image-USJGQDOA.js +1 -0
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +63 -94
- package/dist/prod/locales/{ar-SA-PQUY64WN.js → ar-SA-5WIASEJP.js} +5 -5
- package/dist/prod/locales/az-AZ-V5EUQD6C.js +1 -0
- package/dist/prod/locales/bg-BG-EXASCMTR.js +5 -0
- package/dist/prod/locales/bn-BD-U4SYNFCO.js +3 -0
- package/dist/prod/locales/bn-IN-HKDJIITE.js +3 -0
- package/dist/prod/locales/ca-ES-2KGUU5XB.js +8 -0
- package/dist/prod/locales/cs-CZ-VUCGPRML.js +7 -0
- package/dist/prod/locales/da-DK-NNDP2IVP.js +2 -0
- package/dist/prod/locales/de-CH-I7RAVIZN.js +11 -0
- package/dist/prod/locales/de-DE-WBQ3DQLR.js +11 -0
- package/dist/prod/locales/el-GR-TYQHVGXW.js +7 -0
- package/dist/prod/locales/{en-VMWWLRQY.js → en-MYE3M2F3.js} +1 -1
- package/dist/prod/locales/es-ES-JEUOREKJ.js +12 -0
- package/dist/prod/locales/eu-ES-SO5DEEAN.js +8 -0
- package/dist/prod/locales/fa-IR-I4JNTJHK.js +9 -0
- package/dist/prod/locales/fi-FI-REAEF6HQ.js +6 -0
- package/dist/prod/locales/fr-FR-SUCL7J6B.js +12 -0
- package/dist/prod/locales/gl-ES-KHCSOGVH.js +6 -0
- package/dist/prod/locales/he-IL-JYXVXV2Q.js +9 -0
- package/dist/prod/locales/hi-IN-BU52H3BO.js +3 -0
- package/dist/prod/locales/hu-HU-OWADXDQ3.js +3 -0
- package/dist/prod/locales/id-ID-2WY7E4VX.js +8 -0
- package/dist/prod/locales/it-IT-INVHSAJF.js +12 -0
- package/dist/prod/locales/ja-JP-JBNTKYP4.js +12 -0
- package/dist/prod/locales/kaa-TC3VIB7V.js +1 -0
- package/dist/prod/locales/kab-KAB-UOUDSQKM.js +4 -0
- package/dist/prod/locales/kk-KZ-P5H2X7YS.js +1 -0
- package/dist/prod/locales/{km-KH-PCWDKPHP.js → km-KH-IHMV2US7.js} +4 -4
- package/dist/prod/locales/ko-KR-ZTMANIDF.js +5 -0
- package/dist/prod/locales/ku-TR-GPJTRB5G.js +6 -0
- package/dist/prod/locales/lt-LT-V3XDOK3P.js +3 -0
- package/dist/prod/locales/lv-LV-DVQ3FADO.js +4 -0
- package/dist/prod/locales/mr-IN-VZ6HH5FE.js +9 -0
- package/dist/prod/locales/my-MM-XYKWHRK6.js +1 -0
- package/dist/prod/locales/nb-NO-UNO2GGZJ.js +8 -0
- package/dist/prod/locales/nl-NL-76EFHT4P.js +13 -0
- package/dist/prod/locales/nn-NO-CFKD7ABE.js +4 -0
- package/dist/prod/locales/oc-FR-YBJTCJ3J.js +4 -0
- package/dist/prod/locales/pa-IN-SNOXSMRV.js +4 -0
- package/dist/prod/locales/percentages-LWOC67ZH.js +1 -0
- package/dist/prod/locales/pl-PL-BSY6YFZ3.js +12 -0
- package/dist/prod/locales/pt-BR-CZDV62R3.js +10 -0
- package/dist/prod/locales/pt-PT-JO57XJJW.js +12 -0
- package/dist/prod/locales/ro-RO-UZ5ICYYN.js +12 -0
- package/dist/prod/locales/ru-RU-AN7JPREC.js +10 -0
- package/dist/prod/locales/si-LK-7CBLD6QQ.js +1 -0
- package/dist/prod/locales/sk-SK-SWR6DKBI.js +7 -0
- package/dist/prod/locales/sl-SI-QY5KCFGA.js +8 -0
- package/dist/prod/locales/sv-SE-O3OFCY3J.js +12 -0
- package/dist/prod/locales/ta-IN-V6NHHU6Z.js +6 -0
- package/dist/prod/locales/th-TH-WLSZUSBX.js +1 -0
- package/dist/prod/locales/tr-TR-GUFYG22B.js +4 -0
- package/dist/prod/locales/uk-UA-K6SV5NFQ.js +6 -0
- package/dist/prod/locales/uz-UZ-TVKTZO2G.js +1 -0
- package/dist/prod/locales/vi-VN-7FKFXJNO.js +7 -0
- package/dist/prod/locales/zh-CN-AOKVLNNK.js +11 -0
- package/dist/prod/locales/zh-HK-CDKPF5DC.js +1 -0
- package/dist/prod/locales/zh-TW-ZVGYESGW.js +13 -0
- package/dist/prod/subset-shared.chunk.js +1 -1
- package/dist/prod/subset-worker.chunk.js +1 -1
- package/dist/types/common/src/colors.d.ts +13 -7
- package/dist/types/common/src/constants.d.ts +44 -0
- package/dist/types/common/src/keys.d.ts +2 -0
- package/dist/types/common/src/random.d.ts +7 -0
- package/dist/types/element/src/Scene.d.ts +1 -1
- package/dist/types/element/src/comparisons.d.ts +5 -3
- package/dist/types/element/src/delta.d.ts +23 -1
- package/dist/types/element/src/flowchart.d.ts +5 -1
- package/dist/types/element/src/frame.d.ts +2 -2
- package/dist/types/element/src/index.d.ts +1 -0
- package/dist/types/element/src/linearElementEditor.d.ts +10 -0
- package/dist/types/element/src/mutateElement.d.ts +1 -1
- package/dist/types/element/src/newElement.d.ts +24 -2
- package/dist/types/element/src/sizeHelpers.d.ts +6 -0
- package/dist/types/element/src/sortElements.d.ts +10 -0
- package/dist/types/element/src/stickyNote.d.ts +183 -0
- package/dist/types/element/src/textElement.d.ts +2 -1
- package/dist/types/element/src/transform.d.ts +25 -6
- package/dist/types/element/src/typeChecks.d.ts +3 -2
- package/dist/types/element/src/types.d.ts +35 -6
- package/dist/types/element/src/utils.d.ts +7 -3
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +30 -6
- package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +20 -4
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +70 -14
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +20 -4
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +31 -7
- package/dist/types/excalidraw/actions/actionDeselect.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -2
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +20 -4
- package/dist/types/excalidraw/actions/actionExport.d.ts +20 -4
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +1 -0
- package/dist/types/excalidraw/actions/actionFrame.d.ts +81 -7
- package/dist/types/excalidraw/actions/actionGroup.d.ts +21 -5
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +61 -3
- package/dist/types/excalidraw/actions/actionLink.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionMenu.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionProperties.d.ts +30 -10
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionStyles.d.ts +11 -3
- package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +10 -2
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +10 -2
- package/dist/types/excalidraw/actions/colorTargets.d.ts +39 -0
- package/dist/types/excalidraw/appState.d.ts +21 -1
- package/dist/types/excalidraw/components/App.arrowText.d.ts +40 -8
- package/dist/types/excalidraw/components/App.bucketFill.d.ts +14 -0
- package/dist/types/excalidraw/components/App.cursor.d.ts +10 -3
- package/dist/types/excalidraw/components/App.d.ts +111 -14
- package/dist/types/excalidraw/components/App.toolDrag.d.ts +63 -0
- package/dist/types/excalidraw/components/App.wheel.d.ts +33 -0
- package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +6 -2
- package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
- package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -1
- package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +4 -2
- package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
- package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
- package/dist/types/excalidraw/components/ColorPicker/topPicksDnD.d.ts +31 -0
- package/dist/types/excalidraw/components/IconButton.d.ts +2 -0
- package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
- package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +1 -0
- package/dist/types/excalidraw/components/Tools.d.ts +7 -2
- package/dist/types/excalidraw/components/UserList.d.ts +3 -2
- package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
- package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +2 -0
- package/dist/types/excalidraw/components/icons.d.ts +4 -0
- package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +1 -0
- package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +2 -2
- package/dist/types/excalidraw/data/blob.d.ts +20 -4
- package/dist/types/excalidraw/data/json.d.ts +10 -2
- package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -2
- package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +5 -5
- package/dist/types/excalidraw/index.d.ts +3 -1
- package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
- package/dist/types/excalidraw/renderer/helpers.d.ts +25 -0
- package/dist/types/excalidraw/renderer/interactiveScene.d.ts +1 -1
- package/dist/types/excalidraw/scene/Renderer.d.ts +50 -1
- package/dist/types/excalidraw/scene/index.d.ts +1 -1
- package/dist/types/excalidraw/scene/types.d.ts +1 -0
- package/dist/types/excalidraw/types.d.ts +88 -6
- package/dist/types/excalidraw/viewport.d.ts +10 -2
- package/dist/types/math/src/curve.d.ts +19 -12
- package/dist/types/math/src/segment.d.ts +6 -0
- package/dist/types/utils/src/shape.d.ts +2 -2
- package/package.json +2 -2
- package/dist/dev/chunk-GK2P2Z4N.js.map +0 -7
- package/dist/dev/chunk-HY55C7T4.js +0 -69
- package/dist/dev/chunk-HY55C7T4.js.map +0 -7
- package/dist/dev/chunk-MUNVYEGW.js.map +0 -7
- package/dist/dev/locales/ar-SA-YEOLME2Y.js.map +0 -7
- package/dist/dev/locales/az-AZ-DQL36U4O.js.map +0 -7
- package/dist/dev/locales/bg-BG-LG6R5FEQ.js.map +0 -7
- package/dist/dev/locales/bn-BD-W63P7JT5.js.map +0 -7
- package/dist/dev/locales/bn-IN-SCHACAA6.js.map +0 -7
- package/dist/dev/locales/ca-ES-XP3CQTWV.js.map +0 -7
- package/dist/dev/locales/cs-CZ-EXLEOJMD.js.map +0 -7
- package/dist/dev/locales/da-DK-46ONLZRX.js.map +0 -7
- package/dist/dev/locales/de-CH-A5QH3YGW.js.map +0 -7
- package/dist/dev/locales/de-DE-FVCCKR5N.js.map +0 -7
- package/dist/dev/locales/el-GR-SB4MX5JS.js.map +0 -7
- package/dist/dev/locales/es-ES-VRTYQG6S.js.map +0 -7
- package/dist/dev/locales/eu-ES-3OHEU2YV.js.map +0 -7
- package/dist/dev/locales/fa-IR-74WR2KXF.js.map +0 -7
- package/dist/dev/locales/fi-FI-XZQC4II2.js.map +0 -7
- package/dist/dev/locales/fr-FR-RABBDBKM.js.map +0 -7
- package/dist/dev/locales/gl-ES-OU3Q6XUE.js.map +0 -7
- package/dist/dev/locales/he-IL-6NCD5D54.js.map +0 -7
- package/dist/dev/locales/hi-IN-M54WKOJI.js.map +0 -7
- package/dist/dev/locales/hu-HU-HAW63BCI.js.map +0 -7
- package/dist/dev/locales/id-ID-TFSPHGWX.js.map +0 -7
- package/dist/dev/locales/it-IT-MH3BAO5W.js.map +0 -7
- package/dist/dev/locales/ja-JP-UGJBHLX6.js.map +0 -7
- package/dist/dev/locales/kaa-5ZUEYWIM.js.map +0 -7
- package/dist/dev/locales/kab-KAB-RLAZQZSM.js.map +0 -7
- package/dist/dev/locales/kk-KZ-CIP7GOIF.js.map +0 -7
- package/dist/dev/locales/km-KH-YMR4247H.js.map +0 -7
- package/dist/dev/locales/ko-KR-WGKQKR2R.js.map +0 -7
- package/dist/dev/locales/ku-TR-ZSJN6TN6.js.map +0 -7
- package/dist/dev/locales/lt-LT-FT6ZGIZP.js.map +0 -7
- package/dist/dev/locales/lv-LV-U74YKDPR.js.map +0 -7
- package/dist/dev/locales/mr-IN-KN72LOIA.js.map +0 -7
- package/dist/dev/locales/my-MM-E57NLQ7W.js.map +0 -7
- package/dist/dev/locales/nb-NO-FYQDWD7X.js.map +0 -7
- package/dist/dev/locales/nl-NL-D5MZQRAC.js.map +0 -7
- package/dist/dev/locales/nn-NO-5ZEUZJV4.js.map +0 -7
- package/dist/dev/locales/oc-FR-MVW6LDAP.js.map +0 -7
- package/dist/dev/locales/pa-IN-2NH3SVNI.js.map +0 -7
- package/dist/dev/locales/pl-PL-M6LYWLHY.js.map +0 -7
- package/dist/dev/locales/pt-BR-27M3CCS7.js.map +0 -7
- package/dist/dev/locales/pt-PT-V3C226NP.js.map +0 -7
- package/dist/dev/locales/ro-RO-S4GNBAJI.js.map +0 -7
- package/dist/dev/locales/ru-RU-CRRT5JUZ.js.map +0 -7
- package/dist/dev/locales/si-LK-APMICZ7H.js.map +0 -7
- package/dist/dev/locales/sk-SK-7ZFDZG6Y.js.map +0 -7
- package/dist/dev/locales/sl-SI-BBENCX7D.js.map +0 -7
- package/dist/dev/locales/sv-SE-35QJIOEW.js.map +0 -7
- package/dist/dev/locales/ta-IN-4N5CFIWZ.js.map +0 -7
- package/dist/dev/locales/th-TH-2F4V4IDB.js.map +0 -7
- package/dist/dev/locales/tr-TR-NDFP3F7P.js.map +0 -7
- package/dist/dev/locales/uk-UA-4I6VBQZ5.js.map +0 -7
- package/dist/dev/locales/uz-UZ-UVKC7UNZ.js.map +0 -7
- package/dist/dev/locales/vi-VN-UQCETDRL.js.map +0 -7
- package/dist/dev/locales/zh-CN-RSRHKN75.js.map +0 -7
- package/dist/dev/locales/zh-HK-XSFQ32U4.js.map +0 -7
- package/dist/dev/locales/zh-TW-KFVYWRFJ.js.map +0 -7
- package/dist/prod/chunk-7XWMRXBY.js +0 -1
- package/dist/prod/chunk-JTZGFME4.js +0 -34
- package/dist/prod/chunk-ZKUAT4MX.js +0 -12
- package/dist/prod/data/image-GN2OCBLE.js +0 -1
- package/dist/prod/locales/az-AZ-OXJXL76K.js +0 -1
- package/dist/prod/locales/bg-BG-W2GKIJDF.js +0 -5
- package/dist/prod/locales/bn-BD-TGL7M4PJ.js +0 -3
- package/dist/prod/locales/bn-IN-BKETKYEH.js +0 -3
- package/dist/prod/locales/ca-ES-LD5SCRVV.js +0 -8
- package/dist/prod/locales/cs-CZ-OFPU5DBV.js +0 -7
- package/dist/prod/locales/da-DK-FRDJFYWF.js +0 -2
- package/dist/prod/locales/de-CH-ZG7H3QK3.js +0 -11
- package/dist/prod/locales/de-DE-SIJYH4IH.js +0 -11
- package/dist/prod/locales/el-GR-IEE2CGI2.js +0 -7
- package/dist/prod/locales/es-ES-TVVPWKV5.js +0 -12
- package/dist/prod/locales/eu-ES-CGBMFQDT.js +0 -8
- package/dist/prod/locales/fa-IR-IE6XAPR4.js +0 -9
- package/dist/prod/locales/fi-FI-P7TKNHRM.js +0 -6
- package/dist/prod/locales/fr-FR-QI2XZNT7.js +0 -12
- package/dist/prod/locales/gl-ES-TLYCNOZZ.js +0 -6
- package/dist/prod/locales/he-IL-ZX43XLGP.js +0 -9
- package/dist/prod/locales/hi-IN-UTYRMTUF.js +0 -3
- package/dist/prod/locales/hu-HU-AJOSEBW6.js +0 -3
- package/dist/prod/locales/id-ID-ETLTVG6C.js +0 -8
- package/dist/prod/locales/it-IT-B4B6TP6L.js +0 -12
- package/dist/prod/locales/ja-JP-IYKVURR5.js +0 -12
- package/dist/prod/locales/kaa-SE2BUIKX.js +0 -1
- package/dist/prod/locales/kab-KAB-Y3GLKXLR.js +0 -4
- package/dist/prod/locales/kk-KZ-ABWUFVOH.js +0 -1
- package/dist/prod/locales/ko-KR-7JQDXKGM.js +0 -5
- package/dist/prod/locales/ku-TR-NAH2Q5B7.js +0 -6
- package/dist/prod/locales/lt-LT-VQFYRSNQ.js +0 -3
- package/dist/prod/locales/lv-LV-T62VSYUM.js +0 -4
- package/dist/prod/locales/mr-IN-V4FHLCJE.js +0 -9
- package/dist/prod/locales/my-MM-E3SQ6E54.js +0 -1
- package/dist/prod/locales/nb-NO-MLNOFN5H.js +0 -8
- package/dist/prod/locales/nl-NL-D5L3ZV4M.js +0 -13
- package/dist/prod/locales/nn-NO-NNHDGPKB.js +0 -4
- package/dist/prod/locales/oc-FR-DWCRF55G.js +0 -4
- package/dist/prod/locales/pa-IN-3JSAY44M.js +0 -4
- package/dist/prod/locales/percentages-ETZPVQEE.js +0 -1
- package/dist/prod/locales/pl-PL-ACURYKP3.js +0 -12
- package/dist/prod/locales/pt-BR-LOX7MLGD.js +0 -10
- package/dist/prod/locales/pt-PT-CZ2U2RFQ.js +0 -12
- package/dist/prod/locales/ro-RO-2HECL2X6.js +0 -12
- package/dist/prod/locales/ru-RU-HAYNXO46.js +0 -10
- package/dist/prod/locales/si-LK-W5KNS4H6.js +0 -1
- package/dist/prod/locales/sk-SK-7K2CFGDV.js +0 -7
- package/dist/prod/locales/sl-SI-OXV2QZWW.js +0 -6
- package/dist/prod/locales/sv-SE-JTOBZRGL.js +0 -12
- package/dist/prod/locales/ta-IN-KFAVKXGT.js +0 -6
- package/dist/prod/locales/th-TH-VDMSCPDL.js +0 -1
- package/dist/prod/locales/tr-TR-CEZ6GX45.js +0 -4
- package/dist/prod/locales/uk-UA-Q3H3OXQC.js +0 -6
- package/dist/prod/locales/uz-UZ-NGCSWWPX.js +0 -1
- package/dist/prod/locales/vi-VN-P3NDEVPS.js +0 -7
- package/dist/prod/locales/zh-CN-SS3O57GA.js +0 -11
- package/dist/prod/locales/zh-HK-LWJT3VCF.js +0 -1
- package/dist/prod/locales/zh-TW-VJXC72RT.js +0 -13
- package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
- /package/dist/dev/components/TTDDialog/{CodeMirrorEditor-FCA7YAIL.js.map → CodeMirrorEditor-XFPXQDTD.js.map} +0 -0
- /package/dist/dev/data/{image-5N65CA7G.js.map → image-DBJ5VI3T.js.map} +0 -0
- /package/dist/dev/locales/{en-AZHTDC2Z.js.map → en-INQU5YPU.js.map} +0 -0
- /package/dist/dev/locales/{percentages-QBBLQLIV.js.map → percentages-X2QIQ6XJ.js.map} +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import"../chunk-SRAX5OIU.js";var r={signUp:"",signIn:"",paste:"\u8CBC\u4E0A",pasteAsPlaintext:"\u4EE5\u7D14\u6587\u5B57\u8CBC\u4E0A",pasteCharts:"\u8CBC\u4E0A\u5716\u8868",chartType_bar:"\u9577\u689D\u5716",chartType_line:"\u6298\u7DDA\u5716",chartType_radar:"\u96F7\u9054\u5716",chartType_plaintext:"\u7D14\u6587\u5B57",selectAll:"\u5168\u9078",multiSelect:"\u5C07\u7269\u4EF6\u52A0\u5165\u9078\u53D6\u7BC4\u570D",moveCanvas:"\u79FB\u52D5\u756B\u5E03",cut:"\u526A\u4E0B",copy:"\u8907\u88FD",copyAsPng:"\u4EE5 PNG \u683C\u5F0F\u5132\u5B58\u5230\u526A\u8CBC\u7C3F",copyAsSvg:"\u4EE5 SVG \u683C\u5F0F\u8907\u88FD\u5230\u526A\u8CBC\u7C3F",copyText:"\u4EE5\u6587\u5B57\u683C\u5F0F\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F",copySource:"\u8907\u88FD\u4F86\u6E90\u81F3\u526A\u8CBC\u7C3F",convertToCode:"\u8F49\u63DB\u70BA\u7A0B\u5F0F\u78BC",bringForward:"\u4E0A\u79FB\u4E00\u5C64",sendToBack:"\u79FB\u5230\u6700\u5E95\u5C64",bringToFront:"\u7F6E\u65BC\u6700\u9802\u5C64",sendBackward:"\u5F80\u5F8C\u79FB\u4E00\u5C64",delete:"\u522A\u9664",copyStyles:"\u8907\u88FD\u6A23\u5F0F",pasteStyles:"\u8CBC\u4E0A\u6A23\u5F0F",stroke:"\u7B46\u756B",changeStroke:"\u8B8A\u66F4\u7B46\u756B\u984F\u8272",background:"\u80CC\u666F",changeBackground:"\u8B8A\u66F4\u80CC\u666F\u984F\u8272",fill:"\u586B\u6EFF",strokeWidth:"\u7B46\u8DE1\u5BEC\u5EA6",strokeStyle:"\u7B46\u756B\u6A23\u5F0F",strokeStyle_solid:"\u5BE6\u7DDA",strokeStyle_dashed:"\u865B\u7DDA",strokeStyle_dotted:"\u9EDE\u7DDA",sloppiness:"\u7DDA\u689D\u98A8\u683C",pressure:"\u58D3\u529B",pressure_constant:"\u5E38\u6578",pressure_variable:"\u8B8A\u6578",opacity:"\u900F\u660E\u5EA6",textAlign:"\u6587\u5B57\u5C0D\u9F4A",edges:"\u908A\u7DE3",sharp:"\u5C16\u92B3",round:"\u5E73\u6ED1",arrowheads:"\u7BAD\u982D",arrowhead_none:"\u7121",arrowhead_arrow:"\u7BAD\u982D",arrowhead_bar:"\u689D\u72C0\u7BAD\u982D",arrowhead_circle:"\u5713\u5F62",arrowhead_circle_outline:"\u5713\u5F62\uFF08\u5916\u6846\uFF09",arrowhead_triangle:"\u4E09\u89D2\u5F62",arrowhead_triangle_outline:"\u4E09\u89D2\u5F62\uFF08\u5916\u6846\uFF09",arrowhead_diamond:"\u83F1\u5F62",arrowhead_diamond_outline:"\u83F1\u5F62\uFF08\u5916\u6846\uFF09",arrowhead_crowfoot_many:"\u96DE\u722A\u7B26\u865F\uFF08\u591A\uFF09",arrowhead_crowfoot_one:"\u96DE\u722A\u7B26\u865F\uFF08\u4E00\uFF09",arrowhead_crowfoot_one_or_many:"\u96DE\u722A\u7B26\u865F\uFF08\u4E00\u6216\u591A\uFF09",arrowhead_cardinality_one:"\u57FA\u6578\uFF08\u4E00\uFF09",arrowhead_cardinality_many:"\u57FA\u6578\uFF08\u591A\u500B\uFF09",arrowhead_cardinality_one_or_many:"\u57FA\u6578\uFF08\u4E00\u500B\u6216\u591A\u500B\uFF09",arrowhead_cardinality_exactly_one:"\u57FA\u6578\uFF08\u6070\u597D\u70BA 1\uFF09",arrowhead_cardinality_zero_or_one:"\u57FA\u6578\uFF08\u96F6\u6216\u4E00\uFF09",arrowhead_cardinality_zero_or_many:"\u57FA\u6578\uFF08\u96F6\u6216\u591A\uFF09",more_options:"\u66F4\u591A\u9078\u9805",cardinality:"\u57FA\u6578",arrowtypes:"\u7BAD\u982D\u985E\u578B",arrowtype_sharp:"\u5C16\u92B3\u7BAD\u982D",arrowtype_round:"\u5F4E\u89D2\u7BAD\u982D",arrowtype_elbowed:"\u76F4\u89D2\u7BAD\u982D",fontSize:"\u5B57\u578B\u5927\u5C0F",fontFamily:"\u5B57\u578B\u7CFB\u5217",addWatermark:"\u52A0\u4E0A\u300C\u4EE5 Excalidraw \u88FD\u4F5C\u300D\u6D6E\u6C34\u5370",handDrawn:"\u624B\u5BEB",normal:"\u4E00\u822C",code:"\u4EE3\u78BC",small:"\u5C0F",medium:"\u4E2D",large:"\u5927",veryLarge:"\u7279\u5927",solid:"\u5BE6\u5FC3",hachure:"\u659C\u7DDA\u7B46\u89F8",zigzag:"\uFF3A\u5B57\u5F62",crossHatch:"\u4EA4\u53C9\u7B46\u89F8",thin:"\u7D30",bold:"\u7C97",left:"\u5DE6\u5074",center:"\u7F6E\u4E2D",right:"\u53F3\u5074",extraBold:"\u6975\u7C97",architect:"\u7CBE\u78BA",artist:"\u85DD\u8853",cartoonist:"\u5361\u901A",fileTitle:"\u6A94\u6848\u540D\u7A31",colorPicker:"\u8272\u5F69\u9078\u64C7\u5DE5\u5177",canvasColors:"\u4F7F\u7528\u65BC\u756B\u5E03",canvasBackground:"Canvas \u80CC\u666F",drawingCanvas:"\u7E6A\u5716 canvas",clearCanvas:"\u6E05\u9664\u756B\u5E03",layers:"\u5716\u5C64",actions:"\u52D5\u4F5C",language:"\u8A9E\u8A00",liveCollaboration:"\u5373\u6642\u5354\u4F5C...",duplicateSelection:"\u8907\u88FD",untitled:"\u7121\u6A19\u984C",name:"\u540D\u7A31",yourName:"\u4F60\u7684\u540D\u7A31",madeWithExcalidraw:"\u4EE5 Excalidraw \u88FD\u4F5C",group:"\u5EFA\u7ACB\u7FA4\u7D44",ungroup:"\u53D6\u6D88\u7FA4\u7D44",collaborators:"\u5354\u4F5C\u8005",you:"\u4F60",toggleGrid:"\u5207\u63DB\u7DB2\u683C",addToLibrary:"\u52A0\u5165\u8CC7\u6599\u5EAB",removeFromLibrary:"\u5F9E\u8CC7\u6599\u5EAB\u4E2D\u79FB\u9664",libraryLoadingMessage:"\u8CC7\u6599\u5EAB\u8B80\u53D6\u4E2D\u2026",libraries:"\u700F\u89BD\u8CC7\u6599\u5EAB",loadingScene:"\u5834\u666F\u8B80\u53D6\u4E2D\u2026",loadScene:"\u5F9E\u6A94\u6848\u8F09\u5165\u5834\u666F",align:"\u5C0D\u9F4A",alignTop:"\u5C0D\u9F4A\u9802\u90E8",alignBottom:"\u5C0D\u9F4A\u5E95\u90E8",alignLeft:"\u5C0D\u9F4A\u5DE6\u5074",alignRight:"\u5C0D\u9F4A\u53F3\u5074",centerVertically:"\u5782\u76F4\u7F6E\u4E2D",centerHorizontally:"\u6C34\u5E73\u7F6E\u4E2D",distributeHorizontally:"\u6C34\u5E73\u5206\u5E03",distributeVertically:"\u5782\u76F4\u5206\u5E03",flipHorizontal:"\u6C34\u5E73\u7FFB\u8F49",flipVertical:"\u5782\u76F4\u7FFB\u8F49",viewMode:"\u6AA2\u8996\u6A21\u5F0F",share:"\u5206\u4EAB",showStroke:"\u986F\u793A\u7DDA\u689D\u6AA2\u8272\u5668",showBackground:"\u986F\u793A\u80CC\u666F\u6AA2\u8272\u5668",showFonts:"\u986F\u793A\u5B57\u578B\u9078\u55AE",toggleTheme:"\u5207\u63DB\u6DFA\u8272/\u6DF1\u8272\u4E3B\u984C",theme:"\u4E3B\u984C",personalLib:"\u500B\u4EBA\u8CC7\u6599\u5EAB",excalidrawLib:"Excalidraw \u8CC7\u6599\u5EAB",decreaseFontSize:"\u7E2E\u5C0F\u6587\u5B57",increaseFontSize:"\u653E\u5927\u6587\u5B57",unbindText:"\u53D6\u6D88\u7D81\u5B9A\u6587\u5B57",bindText:"\u7D50\u5408\u6587\u5B57\u81F3\u5BB9\u5668",createContainerFromText:"\u5C07\u6587\u5B57\u5305\u65BC\u5BB9\u5668\u4E2D",link:{edit:"\u7DE8\u8F2F\u9023\u7D50",editEmbed:"\u7DE8\u8F2F\u53EF\u5D4C\u5165\u9023\u7D50",create:"\u65B0\u589E\u9023\u7D50",label:"\u9023\u7D50",labelEmbed:"\u9023\u7D50\u8207\u5D4C\u5165",empty:"\u672A\u8A2D\u5B9A\u9023\u7D50",hint:"\u5728\u6B64\u8F38\u5165\u6216\u8CBC\u4E0A\u9023\u7D50",goToElement:"\u79FB\u81F3\u76EE\u6A19\u5143\u7D20"},lineEditor:{edit:"\u7DE8\u8F2F\u7DDA\u689D",editArrow:"\u7DE8\u8F2F\u7BAD\u982D"},polygon:{breakPolygon:"\u89E3\u9664\u591A\u908A\u5F62",convertToPolygon:"\u8F49\u63DB\u70BA\u591A\u908A\u5F62"},elementLock:{lock:"\u9396\u5B9A",unlock:"\u89E3\u9396",lockAll:"\u5168\u90E8\u9396\u5B9A",unlockAll:"\u5168\u90E8\u89E3\u9396"},statusPublished:"\u5DF2\u767C\u5E03",sidebarLock:"\u5074\u6B04\u7DAD\u6301\u958B\u555F",selectAllElementsInFrame:"\u9078\u53D6\u6846\u67B6\u5167\u7684\u6240\u6709\u5143\u7D20",removeAllElementsFromFrame:"\u5F9E\u6846\u67B6\u5167\u79FB\u9664\u6240\u6709\u5143\u7D20",eyeDropper:"\u5F9E\u756B\u5E03\u4E2D\u9078\u53D6\u984F\u8272",textToDiagram:"\u6587\u5B57\u8F49\u5716\u8868",prompt:"\u63D0\u793A\u8A5E",followUs:"\u8FFD\u8E64\u6211\u5011",discordChat:"Discord \u804A\u5929\u5BA4",zoomToFitViewport:"\u7E2E\u653E\u81F3\u7B26\u5408 viewport",zoomToFitSelection:"\u7E2E\u653E\u81F3\u7B26\u5408\u9078\u53D6\u5340",zoomToFit:"\u7E2E\u653E\u81F3\u986F\u793A\u6240\u6709\u5143\u7D20",installPWA:"\u65BC\u672C\u6A5F\u5B89\u88DD Excalidraw (PWA)",autoResize:"\u555F\u7528\u6587\u5B57\u81EA\u52D5\u7E2E\u653E",imageCropping:"\u5716\u7247\u526A\u88C1",unCroppedDimension:"\u672A\u526A\u88C1\u5C3A\u5BF8",copyElementLink:"\u8907\u88FD\u6B64\u7269\u4EF6\u7684\u9023\u7D50",linkToElement:"\u9023\u7D50\u81F3\u7269\u4EF6",wrapSelectionInFrame:"\u5C07\u9078\u53D6\u5167\u5BB9\u653E\u5165\u6846\u67B6",tab:"Tab",shapeSwitch:"\u5207\u63DB\u5F62\u72C0",preferences:"\u504F\u597D\u8A2D\u5B9A",preferences_toolLock:"\u9396\u5B9A\u5DE5\u5177",boxSelectionMode:"\u9078\u53D6\u65B9\u5F0F",boxSelectionContain:"\u5B8C\u5168\u5305\u8986",boxSelectionOverlap:"\u90E8\u5206\u91CD\u758A",arrowBinding:"\u7BAD\u982D\u9023\u7D50",midpointSnapping:"\u8CBC\u9F4A\u4E2D\u9EDE"},o={title:"\u9023\u7D50\u81F3\u7269\u4EF6",desc:"\u9EDE\u64CA\u756B\u5E03\u4E0A\u7684\u5F62\u72C0\u6216\u8CBC\u4E0A\u9023\u7D50",notFound:"\u7121\u6CD5\u5728\u756B\u5E03\u4E0A\u627E\u5230\u9023\u7D50\u7684\u7269\u4EF6"},a={noItems:"\u5C1A\u672A\u52A0\u5165\u4EFB\u4F55\u7269\u4EF6...",hint_emptyLibrary:"\u9078\u53D6\u756B\u5E03\u4E0A\u7684\u7269\u4EF6\u4EE5\u52A0\u5165\uFF0C\u6216\u5F9E\u4E0B\u65B9\u7684\u516C\u958B\u5132\u5B58\u5EAB\u4E2D\u5B89\u88DD\u8CC7\u6599\u5EAB\u3002",hint_emptyPrivateLibrary:"\u9078\u64C7\u756B\u5E03\u4E0A\u7684\u7269\u4EF6\u4EE5\u5728\u6B64\u52A0\u5165\u3002",search:{inputPlaceholder:"\u641C\u5C0B\u8CC7\u6599\u5EAB",heading:"\u76F8\u7B26\u7684\u8CC7\u6599\u5EAB",noResults:"\u627E\u4E0D\u5230\u76F8\u7B26\u7684\u9805\u76EE...",clearSearch:"\u6E05\u9664\u641C\u5C0B"}},i={title:"\u5728\u756B\u5E03\u4E0A\u5C0B\u627E",noMatch:"\u672A\u627E\u5230\u7B26\u5408\u9805\u76EE\u2026",singleResult:"\u7D50\u679C",multipleResults:"\u7D50\u679C",placeholder:"\u5728\u756B\u5E03\u4E0A\u5C0B\u627E\u6587\u5B57\u2026",frames:"\u6846\u67B6",texts:"\u6587\u5B57"},l={clearReset:"\u91CD\u8A2D\u756B\u5E03",exportJSON:"\u532F\u51FA\u81F3\u6A94\u6848",exportImage:"\u532F\u51FA\u5716\u7247",export:"\u5132\u5B58\u81F3...",copyToClipboard:"\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F",copyLink:"\u8907\u88FD\u9023\u7D50",save:"\u5132\u5B58\u76EE\u524D\u6A94\u6848",saveAs:"\u5132\u5B58\u70BA",load:"\u958B\u555F",getShareableLink:"\u53D6\u5F97\u5171\u4EAB\u9023\u7D50",close:"\u95DC\u9589",selectLanguage:"\u9078\u64C7\u8A9E\u8A00",scrollBackToContent:"\u6372\u52D5\u56DE\u5230\u5167\u5BB9",zoomIn:"\u653E\u5927",zoomOut:"\u7E2E\u5C0F",resetZoom:"\u91CD\u8A2D\u7E2E\u653E",menu:"\u9078\u55AE",done:"\u5B8C\u6210",edit:"\u7DE8\u8F2F",undo:"\u5FA9\u539F",redo:"\u91CD\u505A",resetLibrary:"\u91CD\u8A2D\u8CC7\u6599\u5EAB",createNewRoom:"\u5EFA\u7ACB\u65B0\u5354\u4F5C\u6703\u8B70\u5BA4",fullScreen:"\u5168\u87A2\u5E55",darkMode:"\u6DF1\u8272\u6A21\u5F0F",lightMode:"\u6DFA\u8272\u6A21\u5F0F",systemMode:"\u7CFB\u7D71\u6A21\u5F0F",zenMode:"\u5C08\u6CE8\u6A21\u5F0F",objectsSnapMode:"\u5438\u9644\u81F3\u7269\u4EF6",exitZenMode:"\u96E2\u958B\u5C08\u6CE8\u6A21\u5F0F",cancel:"\u53D6\u6D88",saveLibNames:"\u5132\u5B58\u540D\u7A31\u4E26\u96E2\u958B",clear:"\u6E05\u9664",remove:"\u522A\u9664",embed:"\u5207\u63DB\u5D4C\u5165",publishLibrary:"\u91CD\u65B0\u547D\u540D\u6216\u767C\u5E03",submit:"\u9001\u51FA",confirm:"\u78BA\u8A8D",embeddableInteractionButton:"\u9EDE\u64CA\u4EE5\u4E92\u52D5"},n={clearReset:"\u9019\u5C07\u6703\u6E05\u9664\u6574\u500B canvas\u3002\u4F60\u78BA\u5B9A\u55CE\uFF1F",couldNotCreateShareableLink:"\u7121\u6CD5\u5EFA\u7ACB\u5171\u4EAB\u9023\u7D50\u3002",couldNotCreateShareableLinkTooBig:"\u7121\u6CD5\u5EFA\u7ACB\u5171\u4EAB\u9023\u7D50\uFF1A\u5834\u666F\u592A\u5927",couldNotLoadInvalidFile:"\u7121\u6CD5\u8B80\u53D6\u5931\u6548\u7684\u6A94\u6848\u3002",importBackendFailed:"\u5F8C\u7AEF\u8B80\u53D6\u5931\u6557\u3002",cannotExportEmptyCanvas:"\u7121\u6CD5\u8F38\u51FA\u7A7A\u767D\u7684 canvas\u3002",couldNotCopyToClipboard:"\u7121\u6CD5\u8907\u88FD\u5230\u526A\u8CBC\u7C3F",decryptFailed:"\u7121\u6CD5\u89E3\u5BC6\u8CC7\u6599\u3002",uploadedSecurly:"\u4E0A\u50B3\u5DF2\u901A\u904E end-to-end \u52A0\u5BC6\uFF0CExcalidraw \u4F3A\u670D\u5668\u548C\u7B2C\u4E09\u65B9\u7121\u6CD5\u7686\u8B80\u53D6\u5176\u5167\u5BB9\u3002",loadSceneOverridePrompt:"\u8B80\u53D6\u5916\u90E8\u5716\u6A23\u5C07\u53D6\u4EE3\u76EE\u524D\u7684\u5167\u5BB9\u3002\u662F\u5426\u8981\u7E7C\u7E8C\uFF1F",collabStopOverridePrompt:`\u505C\u6B62\u9023\u7DDA\u5C07\u8986\u84CB\u60A8\u5148\u524D\u65BC\u672C\u6A5F\u5132\u5B58\u7684\u7E6A\u5716\u9032\u5EA6\uFF0C\u662F\u5426\u78BA\u8A8D\uFF1F
|
|
2
|
+
|
|
3
|
+
\uFF08\u5982\u8981\u4FDD\u7559\u539F\u6709\u7684\u672C\u6A5F\u7E6A\u5716\u9032\u5EA6\uFF0C\u76F4\u63A5\u95DC\u9589\u700F\u89BD\u5668\u5206\u9801\u5373\u53EF\u3002\uFF09`,errorAddingToLibrary:"\u7121\u6CD5\u65BC\u6B64\u8CC7\u6599\u5EAB\u52A0\u5165\u9805\u76EE",errorRemovingFromLibrary:"\u7121\u6CD5\u7531\u6B64\u8CC7\u6599\u5EAB\u79FB\u9664\u9805\u76EE",confirmAddLibrary:"\u9019\u5C07\u6703\u5C07 {{numShapes}} \u500B\u5716\u5F62\u52A0\u5165\u4F60\u7684\u8CC7\u6599\u5EAB\uFF0C\u4F60\u78BA\u5B9A\u55CE\uFF1F",imageDoesNotContainScene:"\u6B64\u5716\u6A94\u4E2D\u672A\u5305\u542B\u5834\u666F\u8CC7\u6599\u3002\u8F38\u51FA\u6A94\u6848\u6642\u662F\u5426\u6709\u5305\u542B\u5834\u666F\u8CC7\u6599\uFF1F",cannotRestoreFromImage:"\u7121\u6CD5\u7531\u6B64\u6A94\u6848\u56DE\u5FA9\u5834\u666F\u3002",invalidSceneUrl:"\u7121\u6CD5\u7531\u63D0\u4F9B\u7684 URL \u532F\u5165\u5834\u666F\u3002\u53EF\u80FD\u662F\u767C\u751F\u7570\u5E38\uFF0C\u6216\u672A\u5305\u542B\u6709\u6548\u7684 Excalidraw JSON \u8CC7\u6599\u3002",resetLibrary:"\u9019\u6703\u6E05\u9664\u60A8\u7684\u8CC7\u6599\u5EAB\uFF0C\u662F\u5426\u78BA\u5B9A\uFF1F",removeItemsFromsLibrary:"\u5F9E\u8CC7\u6599\u5EAB\u522A\u9664 {{count}} \u9805\uFF1F",invalidEncryptionKey:"\u52A0\u5BC6\u9375\u5FC5\u9808\u70BA22\u5B57\u5143\u3002\u5373\u6642\u5354\u4F5C\u5DF2\u505C\u7528\u3002",collabOfflineWarning:`\u6C92\u6709\u53EF\u7528\u7684\u7DB2\u8DEF\u9023\u7DDA\u3002
|
|
4
|
+
\u8B8A\u66F4\u7121\u6CD5\u5132\u5B58\uFF01`,localStorageQuotaExceeded:"\u700F\u89BD\u5668\u5132\u5B58\u7A7A\u9593\u5DF2\u6EFF\u3002\u8B8A\u66F4\u5C07\u4E0D\u6703\u88AB\u5132\u5B58\u3002"},s={unsupportedFileType:"\u4E0D\u652F\u63F4\u7684\u6A94\u6848\u985E\u578B\u3002",imageInsertError:"\u7121\u6CD5\u63D2\u5165\u5716\u7247\u3002\u8ACB\u7A0D\u5F8C\u518D\u8A66\u2026",fileTooBig:"\u6A94\u6848\u904E\u5927\u3002\u53EF\u63A5\u53D7\u7684\u6700\u5927\u5C3A\u5BF8\u70BA {{maxSize}} \u3002",svgImageInsertError:"\u7121\u6CD5\u63D2\u5165 SVG \u5716\u7247\u3002\u6B64 SVG \u6A94\u6848\u6709\u554F\u984C\u3002",failedToFetchImage:"\u7121\u6CD5\u7372\u53D6\u5716\u7247\u3002",cannotResolveCollabServer:"\u7121\u6CD5\u9023\u7D50\u81F3 collab \u4F3A\u670D\u5668\u3002\u8ACB\u91CD\u65B0\u6574\u7406\u5F8C\u518D\u8A66\u4E00\u6B21\u3002",importLibraryError:"\u7121\u6CD5\u8F09\u5165\u8CC7\u6599\u5EAB",saveLibraryError:"\u7121\u6CD5\u5C07\u8CC7\u6599\u5EAB\u5B58\u81F3\u5132\u5B58\u5340\u3002\u8ACB\u5C07\u8CC7\u6599\u5EAB\u5B58\u81F3\u672C\u6A5F\u6A94\u6848\u4EE5\u78BA\u4FDD\u4E0D\u6703\u5931\u53BB\u5DF2\u8B8A\u66F4\u7684\u90E8\u5206\u3002",collabSaveFailed:"\u7121\u6CD5\u5132\u5B58\u81F3\u5F8C\u7AEF\u8CC7\u6599\u5EAB\u3002\u82E5\u6B64\u554F\u984C\u6301\u7E8C\u767C\u751F\uFF0C\u8ACB\u5C07\u6A94\u6848\u5132\u5B58\u65BC\u672C\u6A5F\u4EE5\u78BA\u4FDD\u8CC7\u6599\u4E0D\u6703\u907A\u5931\u3002",collabSaveFailed_sizeExceeded:"\u7121\u6CD5\u5132\u5B58\u81F3\u5F8C\u7AEF\u8CC7\u6599\u5EAB\uFF0C\u53EF\u80FD\u7684\u539F\u56E0\u70BA\u756B\u5E03\u5C3A\u5BF8\u904E\u5927\u3002\u8ACB\u5C07\u6A94\u6848\u5132\u5B58\u65BC\u672C\u6A5F\u4EE5\u78BA\u4FDD\u8CC7\u6599\u4E0D\u6703\u907A\u5931\u3002",imageToolNotSupported:"\u5716\u7247\u5DF2\u505C\u7528",brave_measure_text_error:{line1:"\u770B\u8D77\u4F86\u60A8\u958B\u555F\u4E86 Brave \u700F\u89BD\u5668\u7684 <bold>Aggressively Block Fingerprinting</bold> \u8A2D\u5B9A\u3002",line2:"\u9019\u53EF\u80FD\u9020\u6210\u60A8\u756B\u5E03\u4E2D <bold>\u6587\u5B57\u5143\u7D20</bold> \u7684\u7570\u5E38\u3002",line3:"\u6211\u5011\u5F37\u70C8\u5EFA\u8B70\u60A8\u95DC\u9589\u6B64\u8A2D\u5B9A\u3002\u60A8\u53EF\u4EE5\u4F9D\u7167 <link>\u9019\u4E9B\u6B65\u9A5F</link> \u4F86\u9032\u884C\u3002",line4:"\u82E5\u95DC\u9589\u6B64\u8A2D\u5B9A\u4E26\u672A\u4FEE\u5FA9\u6587\u5B57\u5143\u7D20\u7684\u986F\u793A\u554F\u984C\uFF0C\u8ACB\u56DE\u5831\u65BC\u6211\u5011 GitHub \u4E0A\u7684 <issueLink>issue</issueLink>\uFF0C\u6216\u5728 <discordLink>Discord</discordLink> \u4E0A\u544A\u8A34\u6211\u5011\u3002"},libraryElementTypeError:{embeddable:"\u53EF\u5D4C\u5165\u5143\u7D20\u7121\u6CD5\u52A0\u5165\u8CC7\u6599\u5EAB",iframe:"IFrame \u5143\u7D20\u7121\u6CD5\u52A0\u5165\u8CC7\u6599\u5EAB",image:"\u5373\u5C07\u652F\u63F4\u52A0\u5165\u5716\u7247\u81F3\u8CC7\u6599\u5EAB\uFF01"},asyncPasteFailedOnRead:"\u7121\u6CD5\u8CBC\u4E0A\uFF08\u7121\u6CD5\u7531\u7CFB\u7D71\u526A\u8CBC\u7C3F\u8B80\u5165\uFF09",asyncPasteFailedOnParse:"\u7121\u6CD5\u8CBC\u4E0A",copyToSystemClipboardFailed:"\u7121\u6CD5\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F"},c={selection:"\u9078\u53D6",lasso:"\u7E69\u7D22\u9078\u53D6",image:"\u63D2\u5165\u5716\u7247",rectangle:"\u9577\u65B9\u5F62",diamond:"\u83F1\u5F62",ellipse:"\u6A62\u5713",arrow:"\u7BAD\u982D",line:"\u7DDA\u689D",freedraw:"\u7E6A\u5716",text:"\u6587\u5B57",library:"\u8CC7\u6599\u5EAB",lock:"\u53EF\u9023\u7E8C\u4F7F\u7528\u9078\u53D6\u7684\u5DE5\u5177",penMode:"\u7B46\u6A21\u5F0F - \u907F\u514D\u89F8\u6478",link:"\u70BA\u6240\u9078\u7684\u5F62\u72C0\u589E\u52A0\b/\u66F4\u65B0\u9023\u7D50",eraser:"\u6A61\u76AE\u64E6",frame:"\u6846\u67B6\u5DE5\u5177",magicframe:"\u7DDA\u6846\u7A3F\u8F49\u70BA\u7A0B\u5F0F\u78BC",embeddable:"\u5D4C\u5165\u7DB2\u7AD9",laser:"\u96F7\u5C04\u7B46",autoshape:"\u756B\u51FA\u5F62\u72C0",bucketfill:"\u6CB9\u6F06\u6876\u586B\u5145\u5DE5\u5177",hand:"\u624B\u5F62\uFF08\u5E73\u79FB\u5DE5\u5177\uFF09",extraTools:"\u66F4\u591A\u5DE5\u5177",mermaidToExcalidraw:"Mermaid \u81F3 Excalidraw",convertElementType:"\u5207\u63DB\u5F62\u72C0\u985E\u578B"},d={noRegion:"\u627E\u4E0D\u5230\u53EF\u586B\u6EFF\u7684\u5C01\u9589\u5340\u57DF\u3002",tooComplex:"\u5340\u57DF\u592A\u8907\u96DC\uFF0C\u7121\u6CD5\u586B\u5145\u3002"},p={rectangle:"\u77E9\u5F62",diamond:"\u83F1\u5F62",ellipse:"\u6A62\u5713\u5F62",arrow:"\u7BAD\u982D",line:"\u7DDA\u689D",freedraw:"\u81EA\u7531\u7E6A\u5716",text:"\u6587\u5B57",image:"\u5716\u7247",group:"\u7FA4\u7D44",frame:"\u6846\u67B6",magicframe:"\u7DDA\u6846\u7A3F\u8F49\u70BA\u7A0B\u5F0F\u78BC",embeddable:"\u5D4C\u5165\u7DB2\u7AD9",selection:"\u5DF2\u9078\u9805\u76EE",iframe:"IFrame\u6846\u67B6"},m={canvasActions:"canvas \u52D5\u4F5C",selectedShapeActions:"\u9078\u53D6\u5716\u5F62\u52D5\u4F5C",shapes:"\u5F62\u72C0"},u={dismissSearch:"{{shortcut}} \u4EE5\u96B1\u85CF\u641C\u5C0B",canvasPanning:"\u5982\u8981\u79FB\u52D5\u756B\u5E03\uFF0C\u8ACB\u5728\u62D6\u66F3\u6642\u6309\u4F4F {{shortcut_1}} \u6216 {{shortcut_2}}\uFF0C\u6216\u4F7F\u7528\u624B\u5F62\u5DE5\u5177",linearElement:"\u9EDE\u64CA\u4EE5\u7E6A\u88FD\u591A\u9EDE\u66F2\u7DDA\uFF1B\u6216\u62D6\u66F3\u4EE5\u7E6A\u88FD\u76F4\u7DDA",arrowTool:"\u9EDE\u9078\u4EE5\u958B\u59CB\u5EFA\u7ACB\u591A\u9EDE\uFF0C\u62D6\u66F3\u53EF\u5EFA\u7ACB\u55AE\u4E00\u7DDA\u6BB5\u3002\u518D\u6B21\u6309\u4E0B {{shortcut}} \u4EE5\u8B8A\u66F4\u7BAD\u982D\u985E\u578B\u3002",arrowBindModifiers:"\u6309\u4F4F {{shortcut_1}} \u4EE5\u505C\u7528\u7D81\u5B9A\uFF0C\u6216\u6309\u4F4F {{shortcut_2}} \u4EE5\u7D81\u5B9A\u65BC\u56FA\u5B9A\u9EDE",freeDraw:"\u9EDE\u64CA\u4E26\u62D6\u66F3\u4F86\u7E6A\u5716\uFF0C\u653E\u958B\u5373\u7D50\u675F",text:"\u63D0\u793A\uFF1A\u4EA6\u53EF\u4F7F\u7528\u9078\u53D6\u5DE5\u5177\u5728\u4EFB\u4F55\u5730\u65B9\u96D9\u64CA\u4F86\u52A0\u5165\u6587\u5B57",embeddable:"\u9EDE\u64CA\u4E26\u62D6\u79FB\u4EE5\u5EFA\u7ACB\u5D4C\u5165\u7DB2\u7AD9",autoshape:"\u756B\u51FA\u77E9\u5F62\u3001\u5713\u5F62\u3001\u83F1\u5F62\u3001\u76F4\u7DDA\u548C\u7BAD\u982D",text_selected:"\u6309\u5169\u4E0B\u6ED1\u9F20\u6216\u6309 {{shortcut}} \u4EE5\u7DE8\u8F2F\u6587\u5B57",text_editing:"{{shortcut_1}} \u6216 {{shortcut_2}} \u4EE5\u7D50\u675F\u7DE8\u8F2F",linearElementMulti:"\u9EDE\u9078\u6700\u5F8C\u4E00\u500B\u9EDE\uFF0C\u6216\u6309\u4E0B {{shortcut_1}} \u6216 {{shortcut_2}} \u4EE5\u5B8C\u6210",lockAngle:"\u4F60\u53EF\u4EE5\u6309\u4F4F {{shortcut}} \u4EE5\u9396\u5B9A\u89D2\u5EA6",resize:`\u7E2E\u653E\u6642\u6309\u4F4F {{shortcut_1}} \u53EF\u4FDD\u6301\u7B49\u6BD4\u4F8B\uFF0C
|
|
5
|
+
\u6309\u4F4F {{shortcut_2}} \u5247\u53EF\u5F9E\u4E2D\u5FC3\u7E2E\u653E`,resizeImage:`\u6309\u4F4F {{shortcut_1}} \u53EF\u81EA\u7531\u7E2E\u653E\uFF0C
|
|
6
|
+
\u6309\u4F4F {{shortcut_2}} \u5247\u53EF\u5F9E\u4E2D\u5FC3\u7E2E\u653E`,rotate:"\u4F60\u53EF\u4EE5\u5728\u65CB\u8F49\u6642\u6309\u4F4F {{shortcut}} \u4EE5\u9396\u5B9A\u89D2\u5EA6",toggleArrowhead:"\u6309\u5169\u4E0B\u5207\u63DB\u7BAD\u982D",lineEditor_info:"\u6309\u4F4F {{shortcut_1}} \u4E26\u6309\u5169\u4E0B\u6216\u6309\u4E0B {{shortcut_2}} \u4EE5\u7DE8\u8F2F\u9EDE",lineEditor_line_info:"\u6309\u5169\u4E0B\u6216\u6309 {{shortcut}} \u4EE5\u7DE8\u8F2F\u9EDE",lineEditor_pointSelected:`\u6309\u4E0B {{shortcut_1}} \u79FB\u9664\u9EDE\uFF0C
|
|
7
|
+
{{shortcut_2}} \u91CD\u88FD\uFF0C\u6216\u62D6\u66F3\u4EE5\u79FB\u52D5`,lineEditor_nothingSelected:`\u9078\u53D6\u4E00\u500B\u9EDE\u4EE5\u9032\u884C\u7DE8\u8F2F\uFF08\u6309\u4F4F {{shortcut_1}} \u53EF\u591A\u9078\uFF09\uFF0C
|
|
8
|
+
\u6216\u6309\u4F4F {{shortcut_2}} \u4E26\u9EDE\u9078\u4EE5\u65B0\u589E\u9EDE`,publishLibrary:"\u767C\u5E03\u500B\u4EBA\u8CC7\u6599\u5EAB",bindTextToElement:"\u6309\u4E0B {{shortcut}} \u65B0\u589E\u6587\u5B57",createFlowchart:"\u6309\u4E0B {{shortcut}} \u5EFA\u7ACB\u6D41\u7A0B\u5716",deepBoxSelect:"\u6309\u4F4F {{shortcut}} \u4EE5\u9032\u884C\u6DF1\u5EA6\u9078\u53D6\uFF0C\u4E26\u9632\u6B62\u62D6\u66F3",eraserRevert:"\u6309\u4F4F {{shortcut}} \u4EE5\u9084\u539F\u6A19\u8A18\u70BA\u522A\u9664\u7684\u5143\u7D20",firefox_clipboard_write:`\u6B64\u529F\u80FD\u6709\u6A5F\u6703\u900F\u904E\u5C07 "dom.events.asyncClipboard.clipboardItem" \u8A2D\u5B9A\u70BA "true" \u4F86\u958B\u555F\u3002
|
|
9
|
+
\u82E5\u8981\u8B8A\u66F4 Firefox \u700F\u89BD\u5668\u7684\u6B64\u8A2D\u5B9A\u503C\uFF0C\u8ACB\u81F3 "about:config" \u9801\u9762\u3002`,disableSnapping:"\u6309\u4F4F {{shortcut}} \u4EE5\u505C\u7528\u8CBC\u9F4A\uFF08\u81EA\u52D5\u5C0D\u9F4A\uFF09",enterCropEditor:"\u6309\u5169\u4E0B\u5716\u7247\u6216\u6309\u4E0B {{shortcut}} \u4EE5\u88C1\u526A\u5716\u7247",leaveCropEditor:"\u9EDE\u9078\u5716\u7247\u5916\u90E8\uFF0C\u6216\u6309\u4E0B {{shortcut_1}} \u6216 {{shortcut_2}} \u4EE5\u5B8C\u6210\u88C1\u526A"},h={cannotShowPreview:"\u7121\u6CD5\u986F\u793A\u9810\u89BD",canvasTooBig:"\u756B\u5E03\u53EF\u80FD\u904E\u5927",canvasTooBigTip:"\u63D0\u793A\uFF1A\u53EF\u5617\u8A66\u5C07\u6700\u9060\u7684\u5143\u7D20\u79FB\u52D5\u81F3\u8F03\u96C6\u4E2D\u7684\u4F4D\u7F6E"},b={headingMain:"\u767C\u751F\u932F\u8AA4\uFF0C\u5617\u8A66<button>\u91CD\u65B0\u8F09\u5165\u9801\u9762\u3002</button>",clearCanvasMessage:"\u82E5\u91CD\u65B0\u8F09\u5165\u4ECD\u7121\u6CD5\u89E3\u6C7A\u554F\u984C\uFF0C\u5617\u8A66<button>\u6E05\u9664 canvas\u3002</button>",clearCanvasCaveat:"\u6B64\u52D5\u4F5C\u5C07\u9020\u6210\u76EE\u524D\u7684\u4F5C\u54C1\u88AB\u79FB\u9664\u3002",trackedToSentry:"\u6B64\u932F\u8AA4\u8207\u5176\u8B58\u5225\u78BC{{eventId}}\u5C07\u7531\u7CFB\u7D71\u8A18\u9304\u3002",openIssueMessage:"\u6211\u5011\u5C07\u8B39\u614E\u8655\u7406\uFF0C\u4F60\u7684\u4F5C\u54C1\u5167\u5BB9\u4E0D\u6703\u88AB\u5305\u542B\u5728\u932F\u8AA4\u5831\u544A\u4E2D\u3002\u82E5\u4F60\u7684\u4F5C\u54C1\u4E0D\u9700\u4FDD\u6301\u79C1\u5BC6\uFF0C\u8ACB\u8003\u616E\u4F7F\u7528\u6211\u5011\u7684<button>bug tracker\u3002</button>\u8ACB\u5C07\u4E0B\u5217\u8CC7\u8A0A\u8907\u88FD\u8CBC\u4E0A\u81F3 GitHub issue \u4E2D\u3002",sceneContent:"\u4F5C\u54C1\u5167\u5BB9\uFF1A"},g={or:"\u6216"},y={desc_intro:"\u9080\u8ACB\u5176\u4ED6\u4EBA\u4E00\u8D77\u5354\u4F5C",desc_privacy:"\u4E0D\u7528\u64D4\u5FC3\uFF0C\u6B64\u9023\u7DDA\u70BA\u7AEF\u5230\u7AEF\u52A0\u5BC6\u4E14\u5B8C\u5168\u79C1\u6709\uFF0C\u5373\u4F7F\u662F\u6211\u5011\u7684\u4F3A\u670D\u5668\u4E5F\u7121\u6CD5\u770B\u898B\u60A8\u7684\u7E6A\u5716\u3002",button_startSession:"\u958B\u59CB\u9023\u7DDA",button_stopSession:"\u505C\u6B62\u9023\u7DDA",desc_inProgressIntro:"\u5373\u6642\u5354\u4F5C\u9023\u7DDA\u6B63\u5728\u9032\u884C\u4E2D\u3002",desc_shareLink:"\u5C07\u6B64\u9023\u7D50\u5206\u4EAB\u7D66\u6B32\u5354\u4F5C\u7684\u5C0D\u8C61\uFF1A",desc_exitSession:"\u505C\u6B62\u9023\u7DDA\u5C07\u4E2D\u65B7\u4F60\u8207\u5354\u4F5C\u6703\u8B70\u5BA4\u7684\u9023\u7D50\uFF0C\u4F46\u4F60\u4ECD\u53EF\u65BC\u672C\u6A5F\u7DE8\u8F2F\u6B64\u4F5C\u54C1\u3002\u610F\u6307\u505C\u6B62\u9023\u7DDA\u5F8C\u4F60\u7684\u7DE8\u8F2F\u4E0D\u6703\u88AB\u5148\u524D\u5171\u540C\u5354\u4F5C\u7684\u4EBA\u770B\u898B\uFF0C\u4E14\u4ED6\u5011\u53EF\u7E7C\u7E8C\u5171\u540C\u5354\u4F5C\u53E6\u4E00\u500B\u7248\u672C\u3002",shareTitle:"\u52A0\u5165 Excalidraw \u4E0A\u7684\u5373\u6642\u5354\u4F5C\u6703\u8B70\u5BA4"},w={title:"\u932F\u8AA4"},_={title:"\u5132\u5B58\u4E2D",defaultMessage:"\u6B63\u5728\u6E96\u5099\u5132\u5B58..."},S={disk_title:"\u5132\u5B58\u81F3\u786C\u789F",disk_details:"\u5C07\u5834\u666F\u532F\u51FA\u70BA\u53EF\u4F9B\u532F\u5165\u4E4B\u6A94\u6848",disk_button:"\u5132\u5B58\u81F3\u6A94\u6848",link_title:"\u53EF\u5171\u4EAB\u9023\u7D50",link_details:"\u532F\u51FA\u70BA\u552F\u8B80\u9023\u7D50",link_button:"\u532F\u51FA\u70BA\u9023\u7D50",excalidrawplus_description:"\u5C07\u6B64\u5834\u666F\u5132\u5B58\u81F3\u4F60\u7684 Excalidraw+ \u5DE5\u4F5C\u5340",excalidrawplus_button:"\u8F38\u51FA",excalidrawplus_exportError:"\u76EE\u524D\u7121\u6CD5\u8F38\u51FA\u81F3 Excalidraw+"},v={blog:"\u95B1\u8B80\u90E8\u843D\u683C",click:"\u9EDE\u64CA",deepSelect:"\u6DF1\u5EA6\u9078\u53D6",deepBoxSelect:"\u5728\u5BB9\u5668\u5167\u6DF1\u5EA6\u9078\u53D6\u4E26\u907F\u514D\u62D6\u66F3",createFlowchart:"\u7531\u57FA\u672C\u578B\u5EFA\u7ACB\u6D41\u7A0B\u5716",navigateFlowchart:"\u5C0E\u89BD\u6D41\u7A0B\u5716",curvedArrow:"\u66F2\u7BAD\u982D",curvedLine:"\u66F2\u7DDA",documentation:"\u6587\u4EF6",doubleClick:"\u96D9\u64CA",drag:"\u62D6\u66F3",editor:"\u7DE8\u8F2F\u5668",editLineArrowPoints:"\u7DE8\u8F2F\u7DDA/\u7BAD\u982D\u63A7\u5236\u9EDE",editText:"\u7DE8\u8F2F\u6587\u5B57/\u589E\u52A0\u6A19\u7C64",github:"\u767C\u73FE\u7570\u5E38\uFF1F\u56DE\u5831\u554F\u984C",howto:"\u53C3\u7167\u6211\u5011\u7684\u8AAA\u660E",or:"\u6216",preventBinding:"\u907F\u514D\u7BAD\u865F\u9023\u7D50",tools:"\u5DE5\u5177",shortcuts:"\u9375\u76E4\u5FEB\u901F\u9375",textFinish:"\u5B8C\u6210\u7DE8\u8F2F\uFF08\u6587\u5B57\u7DE8\u8F2F\u5668\uFF09",textNewLine:"\u63DB\u884C\uFF08\u6587\u5B57\u7DE8\u8F2F\u5668\uFF09",title:"\u8AAA\u660E",view:"\u6AA2\u8996",zoomToFit:"\u653E\u5927\u81F3\u586B\u6EFF\u756B\u9762",zoomToSelection:"\u7E2E\u653E\u81F3\u9078\u53D6\u5340",toggleElementLock:"\u9396\u5B9A/\u89E3\u9396\u5DF2\u9078\u7684\u9805\u76EE",movePageUpDown:"\u5411\u4E0A/\u4E0B\u79FB\u52D5\u9801\u9762",movePageLeftRight:"\u5411\u5DE6/\u53F3\u79FB\u52D5\u9801\u9762",cropStart:"\u88C1\u5207\u5716\u7247",cropFinish:"\u5B8C\u6210\u5716\u7247\u88C1\u5207"},k={title:"\u6E05\u9664\u756B\u5E03"},x={title:"\u767C\u5E03\u8CC7\u6599\u5EAB",itemName:"\u9805\u76EE\u540D\u7A31",authorName:"\u4F5C\u8005\u540D\u7A31",githubUsername:"GitHub \u5E33\u865F",twitterUsername:"Twitter \u5E33\u865F",libraryName:"\u8CC7\u6599\u5EAB\u540D\u7A31",libraryDesc:"\u8CC7\u6599\u5EAB\u8AAA\u660E",website:"\u7DB2\u7AD9",placeholder:{authorName:"\u60A8\u7684\u540D\u7A31\u6216\u5E33\u865F",libraryName:"\u60A8\u7684\u8CC7\u6599\u5EAB\u540D\u7A31",libraryDesc:"\u63D0\u4F9B\u60A8\u7684\u8CC7\u6599\u5EAB\u8AAA\u660E\u4EE5\u5229\u4ED6\u4EBA\u7406\u89E3\u5176\u7528\u9014",githubHandle:"Github handle\uFF08\u9078\u586B\uFF09\uFF0C\u586B\u5BEB\u5F8C\u60A8\u53EF\u7DE8\u8F2F\u5DF2\u9001\u51FA\u5F85\u5BE9\u67E5\u7684\u8CC7\u6599\u5EAB",twitterHandle:"Twitter \u5E33\u865F\uFF08\u9078\u586B\uFF09\uFF0C\u586B\u5BEB\u5F8C\u82E5\u6211\u5011\u5728 Twitter \u63A8\u5EE3\u6642\u53EF\u63D0\u53CA\u60A8",website:"\u60A8\u500B\u4EBA\u7DB2\u7AD9\u6216\u5176\u4ED6\u7DB2\u7AD9\u7684\u9023\u7D50\uFF08\u9078\u586B\uFF09"},errors:{required:"\u5FC5\u586B",website:"\u8ACB\u8F38\u5165\u6709\u6548\u7684 URL"},noteDescription:"\u9001\u51FA\u60A8\u7684\u8CC7\u6599\u5EAB\u5F8C\u5C07\u88AB\u5305\u542B\u65BC<link>\u516C\u958B\u8CC7\u6599\u5EAB repository</link>\u4EE5\u5229\u4ED6\u4EBA\u5728\u5176\u7E6A\u5716\u4E2D\u4F7F\u7528\u3002",noteGuidelines:"\u8CC7\u6599\u5EAB\u9700\u5148\u7D93\u4EBA\u5DE5\u5BE9\u67E5\u3002\u8ACB\u95B1\u8B80<link>\u8AAA\u660E\u6587\u4EF6</link>\u518D\u9001\u51FA\u3002\u82E5\u9700\u6E9D\u901A\u8207\u4FEE\u6539\u6642\u8981\u900F\u904E GitHub \u5E33\u865F\u4F86\u9032\u884C\uFF0C\u4F46\u4E26\u975E\u5F37\u5236\u9700\u6C42\u3002",noteLicense:"\u9001\u51FA\u5373\u4EE3\u8868\u60A8\u540C\u610F\u6B64\u8CC7\u6599\u5EAB\u5C07\u767C\u5E03\u6642\u4F7F\u7528 <link>MIT \u6388\u6B0A\uFF0C</link>\u7C21\u55AE\u4F86\u8AAA\u662F\u6307\u4EFB\u4F55\u4EBA\u90FD\u80FD\u4E0D\u53D7\u9650\u5236\u7684\u4F7F\u7528\u3002",noteItems:"\u6BCF\u500B\u8CC7\u6599\u5EAB\u9805\u76EE\u90FD\u6709\u7368\u7ACB\u7684\u540D\u7A31\u6545\u53EF\u7BE9\u9078\u3002\u6703\u5305\u542B\u4E0B\u5217\u8CC7\u6599\u5EAB\u9805\u76EE\uFF1A",atleastOneLibItem:"\u8ACB\u9078\u64C7\u81F3\u5C11\u4E00\u9805\u8CC7\u6599\u5EAB\u9805\u76EE",republishWarning:"\u6CE8\u610F\uFF1A\u90E8\u5206\u9078\u53D6\u4E2D\u7684\u7269\u4EF6\u5148\u524D\u5DF2\u767C\u5E03/\u9001\u51FA\u904E\u3002\u5EFA\u8B70\u50C5\u5728\u8981\u66F4\u65B0\u73FE\u5B58\u8CC7\u6599\u5EAB\u6216\u5DF2\u9001\u51FA\u7684\u7269\u4EF6\u6642\u624D\u91CD\u65B0\u9001\u51FA\u9019\u4E9B\u7269\u4EF6\u3002"},T={title:"\u8CC7\u6599\u5EAB\u5DF2\u9001\u51FA",content:"\u611F\u8B1D {{authorName}} \u3002\u60A8\u7684\u8CC7\u6599\u5EAB\u5DF2\u9001\u51FA\u5F85\u5BE9\u67E5\u3002\u60A8\u53EF\u67E5\u770B\u76EE\u524D\u72C0\u614B<link>\u5728\u6B64</link>"},L={resetLibrary:"\u91CD\u8A2D\u8CC7\u6599\u5EAB",removeItemsFromLib:"\u5F9E\u8CC7\u6599\u5EAB\u79FB\u9664\u6240\u9078\u7684\u9805\u76EE"},E={header:"\u532F\u51FA\u5716\u7247",label:{withBackground:"\u80CC\u666F",onlySelected:"\u50C5\u9078\u53D6\u7269\u4EF6",darkMode:"\u6DF1\u8272\u6A21\u5F0F",embedScene:"\u5D4C\u5165\u5834\u666F",scale:"\u7E2E\u653E\u6BD4\u4F8B",padding:"\u5167\u9593\u8DDD"},tooltip:{embedScene:`\u7528\u65BC\u56DE\u5FA9\u5834\u666F\u7684\u5834\u666F\u8CC7\u6599\u6703\u88AB\u5305\u542B\u5728\u8F38\u51FA\u7684 PNG/SVG \u6A94\u6848\u4E2D\u3002
|
|
10
|
+
\u6703\u589E\u52A0\u8F38\u51FA\u7684\u6A94\u6848\u5927\u5C0F\u3002`},title:{exportToPng:"\u8F38\u51FA\u6210 PNG",exportToSvg:"\u8F38\u51FA\u6210 SVG",copyPngToClipboard:"\u8907\u88FD PNG \u81F3\u526A\u8CBC\u7C3F"},button:{exportToPng:"PNG",exportToSvg:"SVG",copyPngToClipboard:"\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F"}},f={tooltip:"\u4F60\u7684\u4F5C\u54C1\u5DF2\u4F7F\u7528 end-to-end \u65B9\u5F0F\u52A0\u5BC6\uFF0CExcalidraw \u7684\u4F3A\u670D\u5668\u4E5F\u7121\u6CD5\u53D6\u5F97\u5176\u5167\u5BB9\u3002",link:"Excalidraw \u7AEF\u5230\u7AEF\u52A0\u5BC6\u7684\u76F8\u95DC\u90E8\u843D\u683C\u6587\u7AE0"},C={angle:"\u89D2\u5EA6",shapes:"\u5F62\u72C0",height:"\u9AD8\u5EA6",scene:"\u5834\u666F",selected:"\u5DF2\u9078",storage:"\u5132\u5B58",fullTitle:"\u756B\u5E03\u8207\u5F62\u72C0\u5C6C\u6027\u8A2D\u5B9A",title:"\u5C6C\u6027",generalStats:"\u4E00\u822C",elementProperties:"\u5F62\u72C0\u5C6C\u6027",total:"\u5408\u8A08",version:"\u7248\u672C",versionCopy:"\u9EDE\u64CA\u8907\u88FD",versionNotAvailable:"\u7121\u6CD5\u53D6\u5F97\u7248\u672C",width:"\u5BEC\u5EA6"},F={addedToLibrary:"\u52A0\u5165\u8CC7\u6599\u5EAB",copyStyles:"\u5DF2\u8907\u88FD\u6A23\u5F0F",copyToClipboard:"\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F\u3002",copyToClipboardAsPng:`\u4EE5 PNG \u683C\u5F0F\u5C07 {{exportSelection}} \u8907\u88FD\u81F3\u526A\u8CBC\u7C3F
|
|
11
|
+
({{exportColorScheme}})`,copyToClipboardAsSvg:`\u4EE5 SVG \u683C\u5F0F\u5C07 {{exportSelection}} \u8907\u88FD\u81F3\u526A\u8CBC\u7C3F
|
|
12
|
+
({{exportColorScheme}})`,fileSaved:"\u5DF2\u5132\u5B58\u6A94\u6848\u3002",fileSavedToFilename:"\u5132\u5B58\u70BA {filename}",canvas:"\u756B\u5E03",selection:"\u5DF2\u9078\u9805\u76EE",pasteAsSingleElement:`\u4F7F\u7528 {{shortcut}} \u4EE5\u505A\u70BA\u55AE\u4E00\u7269\u4EF6\u8CBC\u4E0A\uFF0C
|
|
13
|
+
\u6216\u8CBC\u4E0A\u81F3\u73FE\u6709\u7684\u6587\u5B57\u7DE8\u8F2F\u5668`,unableToEmbed:"\u76EE\u524D\u4E0D\u5141\u8A31\u5D4C\u5165\u6B64\u7DB2\u5740\u3002\u60A8\u53EF\u81F3 GitHub \u63D0\u51FA issue \u4EE5\u8981\u6C42\u5C07\u6B64\u7DB2\u5740\u52A0\u5165\u5408\u683C\u540D\u55AE\u3002",unrecognizedLinkFormat:"\u60A8\u5D4C\u5165\u7684\u9023\u7D50\u683C\u5F0F\u4E0D\u7B26\u3002\u8ACB\u5617\u8A66\u8CBC\u5165\u539F\u7DB2\u7AD9\u6240\u63D0\u4F9B\u7684\u300C\u5D4C\u5165\u300D\u5B57\u4E32\u3002",elementLinkCopied:"\u9023\u7D50\u5DF2\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F"},P={transparent:"\u900F\u660E",black:"\u9ED1",white:"\u767D",red:"\u7D05",pink:"\u7C89\u7D05",grape:"\u6DF1\u7D2B",violet:"\u85CD\u7D2B",gray:"\u7070",blue:"\u85CD",cyan:"\u9752",teal:"\u85CD\u7DA0",green:"\u7DA0",yellow:"\u9EC3",orange:"\u6A58",bronze:"\u9285"},A={app:{center_heading:"\u4F60\u7684\u7E6A\u5716\u5DF2\u5132\u5B58\u5728\u700F\u89BD\u5668\u7684\u5132\u5B58\u7A7A\u9593\u4E2D\u3002",center_heading_line2:"\u700F\u89BD\u5668\u5132\u5B58\u7A7A\u9593\u53EF\u80FD\u6703\u610F\u5916\u5730\u88AB\u6E05\u9664\u3002",center_heading_line3:"\u8ACB\u5B9A\u671F\u5C07\u4F5C\u54C1\u5132\u5B58\u70BA\u6A94\u6848\uFF0C\u4EE5\u907F\u514D\u907A\u5931\u3002",center_heading_plus:"\u60A8\u662F\u5426\u662F\u8981\u524D\u5F80 Excalidraw+ \uFF1F",menuHint:"\u8F38\u51FA\u3001\u504F\u597D\u8A2D\u5B9A\u3001\u8A9E\u8A00..."},defaults:{menuHint:"\u8F38\u51FA\u3001\u504F\u597D\u8A2D\u5B9A\u53CA\u5176\u4ED6...",center_heading:"\u5716\u8868\u3002\u88FD\u4F5C\u3002\u8D85\u7C21\u55AE\u3002",toolbarHint:"\u9078\u500B\u5DE5\u5177\u958B\u59CB\u756B\u5716\u5427\uFF01",helpHint:"\u5FEB\u901F\u9375\u8207\u8AAA\u660E"}},M={color:"\u984F\u8272",mostUsedCustomColors:"\u6700\u5E38\u4F7F\u7528\u7684\u81EA\u8A02\u984F\u8272",colors:"\u984F\u8272",shades:"\u6F38\u8B8A\u8272",hexCode:"Hex \u78BC",noShades:"\u6C92\u6709\u6B64\u984F\u8272\u7684\u6F38\u8B8A\u8272",invalidColor:"\u7121\u6548\u984F\u8272",invalidHexLength:"\u5341\u516D\u9032\u4F4D\u4EE3\u78BC\u5FC5\u9808\u70BA 3\u30014\u30016 \u6216 8 \u500B\u5B57\u5143\u3002",topPicksTip:"\u63D0\u793A\uFF1A\u5C07\u4EFB\u610F\u984F\u8272\u62D6\u66F3\u5230\u4F60\u7684\u6536\u85CF\u593E\u4E0A\u5373\u53EF\u56FA\u5B9A\u3002",resetTopPicks:"\u91CD\u8A2D\u70BA\u9810\u8A2D\u9996\u9078"},I={action:{exportToImage:{title:"\u532F\u51FA\u70BA\u5716\u7247",button:"\u532F\u51FA\u70BA\u5716\u7247",description:"\u5C07\u5834\u666F\u532F\u51FA\u70BA\u53EF\u4F9B\u532F\u5165\u7684\u5716\u7247\u6A94\u6848"},saveToDisk:{title:"\u5132\u5B58\u81F3\u786C\u789F",button:"\u5132\u5B58\u81F3\u786C\u789F",description:"\u5C07\u5834\u666F\u532F\u51FA\u70BA\u53EF\u4F9B\u532F\u5165\u7684\u6A94\u6848"},excalidrawPlus:{title:"Excalidraw+",button:"\u532F\u51FA\u81F3 Excalidraw+",description:"\u5C07\u6B64\u5834\u666F\u5132\u5B58\u81F3\u60A8\u7684 Excalidraw+ \u5DE5\u4F5C\u5340"}},modal:{loadFromFile:{title:"\u5F9E\u6A94\u6848\u8F09\u5165",button:"\u5F9E\u6A94\u6848\u8F09\u5165",description:"\u5F9E\u6A94\u6848\u8F09\u5165\u5C07<bold>\u53D6\u4EE3\u60A8\u76EE\u524D\u7684\u5167\u5BB9</bold>\u3002<br></br>\u53EF\u5148\u4F7F\u7528\u4E0B\u65B9\u7684\u9078\u9805\u5099\u4EFD\u60A8\u7684\u7E6A\u5716\u3002"},shareableLink:{title:"\u5F9E\u9023\u7D50\u8F09\u5165",button:"\u53D6\u4EE3\u6211\u7684\u5167\u5BB9",description:"\u8F09\u5165\u5916\u90E8\u7E6A\u5716\u5C07<bold>\u53D6\u4EE3\u60A8\u76EE\u524D\u7684\u5167\u5BB9</bold>\u3002<br></br>\u53EF\u5148\u4F7F\u7528\u4E0B\u65B9\u7684\u9078\u9805\u5099\u4EFD\u60A8\u7684\u7E6A\u5716\u3002"}}},B={title:"Mermaid \u81F3 Excalidraw",button:"\u63D2\u5165",description:"\u76EE\u524D\u50C5\u652F\u63F4 <flowchartLink>Flowchart</flowchartLink> \u3001 <sequenceLink>Sequence</sequenceLink> \u53CA <classLink>Class </classLink> \u5716\u8868\u3002\u5176\u9918\u6A94\u6848\u985E\u578B\u5728 Excalidraw \u5C07\u6703\u4EE5\u5716\u50CF\u5448\u73FE\u3002",syntax:"Mermaid \u8A9E\u6CD5",preview:"\u9810\u89BD",label:"Mermaid",inputPlaceholder:"\u5728\u9019\u88E1\u7DE8\u5BEB Mermaid \u5B9A\u7FA9...",autoFixAvailable:"\u81EA\u52D5\u4FEE\u6B63\u53EF\u7528"},D={error:"\u932F\u8AA4\uFF01"},N={inputPlaceholder:"\u5728\u9019\u88E1\u958B\u59CB\u8F38\u5165\u4F60\u7684\u5716\u8868\u69CB\u60F3...\uFF08{{shortcut}} \u63DB\u884C\uFF09",inputPlaceholderWithMessages:"\u7E7C\u7E8C\u8ABF\u6574\u4F60\u7684\u5716\u8868...",generating:"\u751F\u6210\u4E2D...",rateLimitRemaining:"\u4ECA\u65E5\u5269\u9918 {{count}} \u6B21\u8ACB\u6C42",role:{user:"\u4F60",assistant:"AI \u52A9\u7406",system:"\u7CFB\u7D71"},aiBeta:"AI Beta \u7248",label:"\u5C0D\u8A71",menu:"\u9078\u55AE",newChat:"\u65B0\u7684\u5C0D\u8A71",deleteChat:"\u522A\u9664\u5C0D\u8A71",deleteMessage:"\u522A\u9664\u8A0A\u606F",viewAsMermaid:"\u4EE5 Mermaid \u683C\u5F0F\u6AA2\u8996",placeholder:{title:"\u8B93\u6211\u5011\u958B\u59CB\u8A2D\u8A08\u4F60\u7684\u5716\u8868",description:"\u63CF\u8FF0\u4F60\u60F3\u8981\u5EFA\u7ACB\u7684\u5716\u8868\uFF0C\u6211\u5011\u5C07\u70BA\u4F60\u751F\u6210\u3002",hint:"\u5230\u76EE\u524D\u6211\u5011\u4E86\u89E3\u6D41\u7A0B\u5716\u3001\u5E8F\u5217\u5716\u3001\u985E\u5225\u5716\u3001\u72C0\u614B\u5716\u548C\u5BE6\u9AD4\u95DC\u4FC2\u5716\u3002"},preview:"\u9810\u89BD",insert:"\u63D2\u5165",retry:"\u91CD\u8A66",errors:{promptTooShort:"\u63D0\u793A\u8A5E\u592A\u77ED\uFF08\u81F3\u5C11 {{min}} \u500B\u5B57\u5143\uFF09",promptTooLong:"\u63D0\u793A\u8A5E\u592A\u9577\uFF08\u6700\u591A {{max}} \u500B\u5B57\u5143\uFF09",generationFailed:"\u751F\u6210\u5931\u6557",invalidDiagram:"\u751F\u6210\u7684\u5716\u8868\u8A9E\u6CD5\u7121\u6548 :(\u3002\u4F60\u53EF\u4EE5\u624B\u52D5\u7DE8\u8F2F\u3001\u5617\u8A66\u81EA\u52D5\u4FEE\u5FA9\uFF0C\u6216\u63DB\u500B\u63D0\u793A\u8A5E\u8A66\u8A66\u3002",fixInMermaid:"\u624B\u52D5\u7DE8\u8F2F Mermaid \u2192",aiRepair:"\u91CD\u65B0\u751F\u6210\uFF08\u81EA\u52D5\u4FEE\u5FA9\uFF09\u2192",requestAborted:"\u8ACB\u6C42\u5DF2\u4E2D\u6B62",requestFailed:"\u8ACB\u6C42\u5931\u6557",mermaidParseError:"Mermaid \u8A9E\u6CD5\u932F\u8AA4"},rateLimit:{messageLimit:"\u4F60\u5DF2\u9054\u5230\u514D\u8CBB\u65B9\u6848\u7684 AI \u4F7F\u7528\u4E0A\u9650\u3002\u8ACB\u8A66\u7528 Excalidraw+ \u4EE5\u53D6\u5F97\u66F4\u591A\u984D\u5EA6\uFF0C\u6216\u660E\u5929\u518D\u8A66\u3002",generalRateLimit:"\u5225\u5FC3\u6025\uFF0C\u4F60\u7684\u64CD\u4F5C\u901F\u5EA6\u592A\u5FEB\u4E86\uFF01\u8ACB\u7A0D\u7B49\u7247\u523B\u5F8C\u518D\u8A66\u3002",messageLimitInputPlaceholder:"\u4F60\u5DF2\u9054\u5230\u8A0A\u606F\u4E0A\u9650"},upsellBtnLabel:"\u5347\u7D1A\u81F3 Plus"},z={placeholder:"\u5FEB\u901F\u641C\u5C0B"},G={badge:{old:"\u820A\u7248"},sceneFonts:"\u5728\u6B64\u5834\u666F\u4E2D",availableFonts:"\u53EF\u7528\u5B57\u578B",empty:"\u627E\u4E0D\u5230\u5B57\u578B"},R={empty:"\u627E\u4E0D\u5230\u4F7F\u7528\u8005",hint:{text:"\u9EDE\u64CA\u4F7F\u7528\u8005\u4EE5\u9032\u884C\u8FFD\u8E64",followStatus:"\u60A8\u6B63\u5728\u8FFD\u8E64\u6B64\u4F7F\u7528\u8005",inCall:"\u4F7F\u7528\u8005\u6B63\u5728\u8A9E\u97F3\u901A\u8A71\u4E2D",micMuted:"\u4F7F\u7528\u8005\u7684\u9EA5\u514B\u98A8\u5DF2\u975C\u97F3",isSpeaking:"\u4F7F\u7528\u8005\u8AAA\u8A71\u4E2D"}},H={title:"\u6307\u4EE4\u9762\u677F",shortcuts:{select:"\u9078\u53D6",confirm:"\u78BA\u8A8D",close:"\u95DC\u9589"},recents:"\u6700\u8FD1\u4F7F\u7528",search:{placeholder:"\u641C\u5C0B\u9078\u55AE\u8207\u6307\u4EE4\u4E26\u627E\u51FA\u96B1\u85CF\u529F\u80FD",noMatch:"\u6C92\u6709\u7B26\u5408\u7684\u6307\u4EE4\u2026"},itemNotAvailable:"\u6307\u4EE4\u7121\u6CD5\u4F7F\u7528\u2026",shortcutHint:"\u4F7F\u7528 {{shortcut}} \u958B\u555F\u6307\u4EE4\u9762\u677F"},O={ctrl:"Ctrl",option:"Option",cmd:"Cmd",alt:"Alt",escape:"Esc",enter:"Enter",shift:"Shift",spacebar:"\u7A7A\u767D\u9375",delete:"Delete",mmb:"\u6EFE\u8F2A"},V={labels:r,elementLink:o,library:a,search:i,buttons:l,alerts:n,errors:s,toolBar:c,bucketfill:d,element:p,headings:m,hints:u,canvasError:h,errorSplash:b,shareDialog:g,roomDialog:y,errorDialog:w,progressDialog:_,exportDialog:S,helpDialog:v,clearCanvasDialog:k,publishDialog:x,publishSuccessDialog:T,confirmDialog:L,imageExportDialog:E,encrypted:f,stats:C,toast:F,colors:P,welcomeScreen:A,colorPicker:M,overwriteConfirm:I,mermaid:B,ttd:D,chat:N,quickSearch:z,fontList:G,userList:R,commandPalette:H,keys:O};export{n as alerts,d as bucketfill,l as buttons,h as canvasError,N as chat,k as clearCanvasDialog,M as colorPicker,P as colors,H as commandPalette,L as confirmDialog,V as default,p as element,o as elementLink,f as encrypted,w as errorDialog,b as errorSplash,s as errors,S as exportDialog,G as fontList,m as headings,v as helpDialog,u as hints,E as imageExportDialog,O as keys,r as labels,a as library,B as mermaid,I as overwriteConfirm,_ as progressDialog,x as publishDialog,T as publishSuccessDialog,z as quickSearch,y as roomDialog,i as search,g as shareDialog,C as stats,F as toast,c as toolBar,D as ttd,R as userList,A as welcomeScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d}from"./chunk-Z5NKEFVG.js";import"./chunk-
|
|
1
|
+
import{a,b,c,d}from"./chunk-Z5NKEFVG.js";import"./chunk-RNVAYDMN.js";import"./chunk-SRAX5OIU.js";export{a as Commands,b as subsetToBase64,c as subsetToBinary,d as toBase64};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as r,c as t}from"./chunk-Z5NKEFVG.js";import"./chunk-
|
|
1
|
+
import{a as r,c as t}from"./chunk-Z5NKEFVG.js";import"./chunk-RNVAYDMN.js";import"./chunk-SRAX5OIU.js";var s=import.meta.url?new URL(import.meta.url):void 0;typeof window>"u"&&typeof self<"u"&&(self.onmessage=async e=>{switch(e.data.command){case r.Subset:let a=await t(e.data.arrayBuffer,e.data.codePoints);self.postMessage(a,{transfer:[a]});break}});export{s as WorkerUrl};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const applyDarkModeFilter: (color: string, enable?: boolean) => string;
|
|
2
|
+
export declare const removeDarkModeFilter: (color: string) => string;
|
|
2
3
|
export type ColorTuple = readonly [string, string, string, string, string];
|
|
3
4
|
export type ColorPaletteCustom = {
|
|
4
5
|
[key: string]: ColorTuple | string;
|
|
@@ -28,9 +29,16 @@ export declare const COLOR_PALETTE: {
|
|
|
28
29
|
};
|
|
29
30
|
export type ColorPalette = typeof COLOR_PALETTE;
|
|
30
31
|
export type ColorPickerColor = keyof typeof COLOR_PALETTE;
|
|
32
|
+
/** number of slots in the color-picker top-picks strip — the strip layout is
|
|
33
|
+
* sized for exactly this many swatches, and pick customization (replace /
|
|
34
|
+
* reorder) preserves it */
|
|
35
|
+
export declare const COLOR_TOP_PICKS_SLOTS = 5;
|
|
31
36
|
export declare const DEFAULT_ELEMENT_STROKE_PICKS: ColorTuple;
|
|
32
37
|
export declare const DEFAULT_ELEMENT_BACKGROUND_PICKS: ColorTuple;
|
|
33
38
|
export declare const BUCKET_FILL_BACKGROUND_PICKS: ColorTuple;
|
|
39
|
+
export declare const DEFAULT_STICKY_NOTE_BG = "#ffdf6b";
|
|
40
|
+
export declare const STICKY_NOTE_STROKE_PICKS: ColorTuple;
|
|
41
|
+
export declare const STICKY_NOTE_BACKGROUND_PICKS: ColorTuple;
|
|
34
42
|
export declare const DEFAULT_CANVAS_BACKGROUND_PICKS: ColorTuple;
|
|
35
43
|
export declare const DEFAULT_ELEMENT_STROKE_COLOR_PALETTE: {
|
|
36
44
|
readonly red: readonly ["#fff5f5", "#ffc9c9", "#ff8787", "#fa5252", "#e03131"];
|
|
@@ -66,15 +74,13 @@ export declare const DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE: {
|
|
|
66
74
|
readonly charcoal: "#1e1e1e";
|
|
67
75
|
readonly bronze: readonly ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"];
|
|
68
76
|
};
|
|
69
|
-
/**
|
|
70
|
-
* The color the bucket fill tool actually fills with: the shared
|
|
71
|
-
* `currentItemBackgroundColor`, falling back to green when that is
|
|
72
|
-
* transparent (the tool's picker doesn't offer transparent, but the shared
|
|
73
|
-
* state can hold it from the generic shape picker).
|
|
74
|
-
*/
|
|
75
|
-
export declare const getBucketFillBackgroundColor: (backgroundColor: string) => string;
|
|
76
77
|
export declare const getAllColorsSpecificShade: (index: 0 | 1 | 2 | 3 | 4) => ("#fff5f5" | "#ffc9c9" | "#ff8787" | "#fa5252" | "#e03131" | "#fff0f6" | "#fcc2d7" | "#f783ac" | "#e64980" | "#c2255c" | "#f8f0fc" | "#eebefa" | "#da77f2" | "#be4bdb" | "#9c36b5" | "#f3f0ff" | "#d0bfff" | "#9775fa" | "#7950f2" | "#6741d9" | "#e7f5ff" | "#a5d8ff" | "#4dabf7" | "#228be6" | "#1971c2" | "#e3fafc" | "#99e9f2" | "#3bc9db" | "#15aabf" | "#0c8599" | "#e6fcf5" | "#96f2d7" | "#38d9a9" | "#12b886" | "#099268" | "#ebfbee" | "#b2f2bb" | "#69db7c" | "#40c057" | "#2f9e44" | "#fff9db" | "#ffec99" | "#ffd43b" | "#fab005" | "#f08c00" | "#fff4e6" | "#ffd8a8" | "#ffa94d" | "#fd7e14" | "#e8590c")[];
|
|
77
78
|
export declare const rgbToHex: (r: number, g: number, b: number, a?: number) => string;
|
|
79
|
+
/**
|
|
80
|
+
* @returns the color with its alpha replaced by `alpha` (as #RRGGBBAA), or the
|
|
81
|
+
* input unchanged if it's not a valid color
|
|
82
|
+
*/
|
|
83
|
+
export declare const setColorAlpha: (color: string, alpha: number) => string;
|
|
78
84
|
/**
|
|
79
85
|
* @returns #RRGGBB or #RRGGBBAA based on color containing non-opaque alpha,
|
|
80
86
|
* null if not valid color
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ExcalidrawElement, FontFamilyValues } from "@excalidraw/element/types";
|
|
2
2
|
import type { AppProps, AppState, NormalizedZoomValue } from "@excalidraw/excalidraw/types";
|
|
3
|
+
export { DEFAULT_STICKY_NOTE_BG } from "./colors";
|
|
3
4
|
export declare const supportsResizeObserver: boolean;
|
|
4
5
|
export declare const APP_NAME = "Excalidraw";
|
|
5
6
|
export declare const TEXT_AUTOWRAP_THRESHOLD = 36;
|
|
@@ -52,6 +53,7 @@ export declare enum EVENT {
|
|
|
52
53
|
POINTER_MOVE = "pointermove",
|
|
53
54
|
POINTER_DOWN = "pointerdown",
|
|
54
55
|
POINTER_UP = "pointerup",
|
|
56
|
+
POINTER_CANCEL = "pointercancel",
|
|
55
57
|
STATE_CHANGE = "statechange",
|
|
56
58
|
WHEEL = "wheel",
|
|
57
59
|
TOUCH_START = "touchstart",
|
|
@@ -150,6 +152,47 @@ export declare const FRAME_STYLE: {
|
|
|
150
152
|
};
|
|
151
153
|
export declare const MIN_FONT_SIZE = 1;
|
|
152
154
|
export declare const DEFAULT_FONT_SIZE = 20;
|
|
155
|
+
export declare const STICKY_NOTE_MIN_FONT_SIZE = 16;
|
|
156
|
+
export declare const STICKY_NOTE_MAX_FONT_SIZE = 512;
|
|
157
|
+
export declare const STICKY_NOTE_FALLBACK_FONT_SIZE = 28;
|
|
158
|
+
export declare const STICKY_NOTE_FONT_STEP = 2;
|
|
159
|
+
export declare const STICKY_NOTE_PADDING = 16;
|
|
160
|
+
/**
|
|
161
|
+
* The creation-date footer: a 20px text row under the label body plus a 12px
|
|
162
|
+
* gap above it, inside the note's bottom padding. Reserved for every note —
|
|
163
|
+
* also when `created` is unknown — so geometry never depends on data
|
|
164
|
+
* availability. The label is chosen by width bucket, never measured, so
|
|
165
|
+
* painting stays measurement-free (the server has no text measurer):
|
|
166
|
+
* `minBodyWidthForYear` is the worst case ("30 May 2026") in the system sans
|
|
167
|
+
* stack at 12px, with margin for wider fallbacks such as DejaVu Sans.
|
|
168
|
+
*/
|
|
169
|
+
/**
|
|
170
|
+
* The creation-date footer of a sticky note. The label body ends `height`
|
|
171
|
+
* above the note's bottom padding, and the date's baseline sits
|
|
172
|
+
* `baselineFromBottom` above the note's bottom edge — so the 12px glyphs
|
|
173
|
+
* (~9px above the baseline, ~3px below) end up roughly 11px from the edge
|
|
174
|
+
* with a ~13px gap to the label body above them.
|
|
175
|
+
*/
|
|
176
|
+
export declare const STICKY_NOTE_FOOTER: {
|
|
177
|
+
readonly height: 20;
|
|
178
|
+
readonly fontSize: 12;
|
|
179
|
+
readonly fontFamily: "Helvetica, Arial, sans-serif";
|
|
180
|
+
readonly baselineFromBottom: 14;
|
|
181
|
+
readonly opacity: 1;
|
|
182
|
+
readonly minBodyWidthForYear: 80;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* outer height → label body height: top + bottom padding + footer. The body
|
|
186
|
+
* is what the label is fitted into; a middle-aligned label is still centered
|
|
187
|
+
* in the whole padded note when it fits (see `computeBoundTextPosition`).
|
|
188
|
+
*/
|
|
189
|
+
export declare const STICKY_NOTE_BODY_INSET_Y: number;
|
|
190
|
+
export declare const DEFAULT_STICKY_NOTE_SIZE = 250;
|
|
191
|
+
export declare const STICKY_NOTE_MIN_SIZE = 75;
|
|
192
|
+
export declare const STICKY_NOTE_SHADOW_OFFSET = 3;
|
|
193
|
+
export declare const STICKY_NOTE_SHADOW_OPACITY = 0.16;
|
|
194
|
+
export declare const STICKY_NOTE_EDGE_SHADOW_WIDTH = 0.5;
|
|
195
|
+
export declare const STICKY_NOTE_EDGE_SHADOW_OPACITY = 0.08;
|
|
153
196
|
export declare const DEFAULT_FONT_FAMILY: FontFamilyValues;
|
|
154
197
|
export declare const DEFAULT_TEXT_ALIGN = "left";
|
|
155
198
|
export declare const DEFAULT_VERTICAL_ALIGN = "top";
|
|
@@ -316,6 +359,7 @@ export declare const TOOL_TYPE: {
|
|
|
316
359
|
readonly hand: "hand";
|
|
317
360
|
readonly frame: "frame";
|
|
318
361
|
readonly magicframe: "magicframe";
|
|
362
|
+
readonly stickynote: "stickynote";
|
|
319
363
|
readonly embeddable: "embeddable";
|
|
320
364
|
readonly laser: "laser";
|
|
321
365
|
readonly autoshape: "autoshape";
|
|
@@ -55,6 +55,7 @@ export declare const KEYS: {
|
|
|
55
55
|
readonly H: "h";
|
|
56
56
|
readonly I: "i";
|
|
57
57
|
readonly L: "l";
|
|
58
|
+
readonly N: "n";
|
|
58
59
|
readonly O: "o";
|
|
59
60
|
readonly P: "p";
|
|
60
61
|
readonly Q: "q";
|
|
@@ -111,6 +112,7 @@ export declare const KeyCodeMap: Map<ValueOf<{
|
|
|
111
112
|
readonly H: "h";
|
|
112
113
|
readonly I: "i";
|
|
113
114
|
readonly L: "l";
|
|
115
|
+
readonly N: "n";
|
|
114
116
|
readonly O: "o";
|
|
115
117
|
readonly P: "p";
|
|
116
118
|
readonly Q: "q";
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
export declare const randomInteger: () => number;
|
|
2
2
|
export declare const reseed: (seed: number) => void;
|
|
3
3
|
export declare const randomId: () => string;
|
|
4
|
+
/**
|
|
5
|
+
* Deterministic PRNG (mulberry32) for a given seed: same seed, same
|
|
6
|
+
* sequence — used where a render must be stable across frames and clients
|
|
7
|
+
* (e.g. the sticky note's corner jitter) and roughjs's `Random` is
|
|
8
|
+
* unsuitable (it degenerates for seed 0). Returns numbers in [0, 1).
|
|
9
|
+
*/
|
|
10
|
+
export declare const seededRandom: (seed: number) => () => number;
|
|
@@ -72,7 +72,7 @@ export declare class Scene {
|
|
|
72
72
|
getElementIndex(elementId: string): number;
|
|
73
73
|
getContainerElement: (element: (ExcalidrawElement & {
|
|
74
74
|
containerId: ExcalidrawElement["id"] | null;
|
|
75
|
-
}) | null) => import("@excalidraw/element/types").ExcalidrawLinearElement | import("@excalidraw/element/types").ExcalidrawSelectionElement | import("@excalidraw/element/types").ExcalidrawRectangleElement | import("@excalidraw/element/types").ExcalidrawDiamondElement | import("@excalidraw/element/types").ExcalidrawEllipseElement | import("@excalidraw/element/types").ExcalidrawEmbeddableElement | import("@excalidraw/element/types").ExcalidrawIframeElement | import("@excalidraw/element/types").ExcalidrawImageElement | import("@excalidraw/element/types").ExcalidrawFrameElement | import("@excalidraw/element/types").ExcalidrawMagicFrameElement | import("@excalidraw/element/types").ExcalidrawTextElement | import("@excalidraw/element/types").ExcalidrawFreeDrawElement | null;
|
|
75
|
+
}) | null) => import("@excalidraw/element/types").ExcalidrawLinearElement | import("@excalidraw/element/types").ExcalidrawSelectionElement | import("@excalidraw/element/types").ExcalidrawRectangleElement | import("@excalidraw/element/types").ExcalidrawStickyNoteElement | import("@excalidraw/element/types").ExcalidrawDiamondElement | import("@excalidraw/element/types").ExcalidrawEllipseElement | import("@excalidraw/element/types").ExcalidrawEmbeddableElement | import("@excalidraw/element/types").ExcalidrawIframeElement | import("@excalidraw/element/types").ExcalidrawImageElement | import("@excalidraw/element/types").ExcalidrawFrameElement | import("@excalidraw/element/types").ExcalidrawMagicFrameElement | import("@excalidraw/element/types").ExcalidrawTextElement | import("@excalidraw/element/types").ExcalidrawFreeDrawElement | null;
|
|
76
76
|
getElementsFromId: (id: string) => ExcalidrawElement[];
|
|
77
77
|
mutateElement<TElement extends Mutable<ExcalidrawElement>>(element: TElement, updates: ElementUpdate<TElement>, options?: {
|
|
78
78
|
informMutation: boolean;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { ElementOrToolType } from "@excalidraw/excalidraw/types";
|
|
2
|
-
export declare const hasBackground: (type: ElementOrToolType) => type is "line" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "iframe" | "freedraw" | "autoshape" | "bucketfill";
|
|
3
|
-
export declare const
|
|
2
|
+
export declare const hasBackground: (type: ElementOrToolType) => type is "line" | "rectangle" | "stickynote" | "diamond" | "ellipse" | "embeddable" | "iframe" | "freedraw" | "autoshape" | "bucketfill";
|
|
3
|
+
export declare const hasFillStyle: (type: ElementOrToolType) => type is "line" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "iframe" | "freedraw" | "autoshape" | "bucketfill";
|
|
4
|
+
export declare const hasStrokeColor: (type: ElementOrToolType) => type is "line" | "arrow" | "text" | "rectangle" | "stickynote" | "diamond" | "ellipse" | "embeddable" | "freedraw" | "autoshape";
|
|
4
5
|
export declare const hasStrokeWidth: (type: ElementOrToolType) => type is "line" | "arrow" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "iframe" | "freedraw" | "autoshape";
|
|
5
6
|
export declare const hasStrokeStyle: (type: ElementOrToolType) => type is "line" | "arrow" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "iframe" | "autoshape";
|
|
7
|
+
export declare const hasRoughness: (type: ElementOrToolType) => type is "line" | "arrow" | "rectangle" | "stickynote" | "diamond" | "ellipse" | "embeddable" | "iframe" | "autoshape";
|
|
6
8
|
export declare const hasFreedrawMode: (type: ElementOrToolType) => type is "freedraw";
|
|
7
|
-
export declare const canChangeRoundness: (type: ElementOrToolType) => type is "line" | "rectangle" | "diamond" | "embeddable" | "iframe" | "image";
|
|
9
|
+
export declare const canChangeRoundness: (type: ElementOrToolType) => type is "line" | "rectangle" | "stickynote" | "diamond" | "embeddable" | "iframe" | "image";
|
|
8
10
|
export declare const toolIsArrow: (type: ElementOrToolType) => type is "arrow";
|
|
9
11
|
export declare const canHaveArrowheads: (type: ElementOrToolType) => type is "arrow";
|
|
@@ -192,7 +192,29 @@ export declare class ElementsDelta implements DeltaContainer<SceneElementsMap> {
|
|
|
192
192
|
private static createGetter;
|
|
193
193
|
private static applyDelta;
|
|
194
194
|
/**
|
|
195
|
-
*
|
|
195
|
+
* Whether an element looks different after the delta — and the layout that
|
|
196
|
+
* followed it — was applied. The input to history's "skip entries with no
|
|
197
|
+
* visible change" loop.
|
|
198
|
+
*
|
|
199
|
+
* Both sides are first reduced to what actually paints:
|
|
200
|
+
* - a missing or deleted element paints nothing;
|
|
201
|
+
* - an empty text element paints nothing either — unless it carries arrow
|
|
202
|
+
* bindings (an arrow may end at it) or sits on an arrow (an empty label
|
|
203
|
+
* still cuts the arrow's gap);
|
|
204
|
+
* so an empty label's deletion or restoration compares as nothing against
|
|
205
|
+
* nothing. Two painting elements are then compared property by property:
|
|
206
|
+
* - `version`, `versionNonce`, `updated`, `created` are metadata, and
|
|
207
|
+
* `index` is covered by the separate z-order check (`reorderElements`);
|
|
208
|
+
* - `boundElements` is compared as `type:id` references with references to
|
|
209
|
+
* empty labels dropped, so adding or removing an empty label's reference
|
|
210
|
+
* is not visible on its own, and binding repair that rebuilt equal
|
|
211
|
+
* objects is not either;
|
|
212
|
+
* - everything else counts. Nested arrays (`points`, binding fixed points)
|
|
213
|
+
* compare by reference, which can only over-report a change — the safe
|
|
214
|
+
* direction, where undo stops one entry early.
|
|
215
|
+
*
|
|
216
|
+
* `previousElements` holds only `idsToCheck` (see `applyTo`); the label
|
|
217
|
+
* lookups it serves are for elements whose labels are in that set.
|
|
196
218
|
*/
|
|
197
219
|
private static checkForVisibleDifference;
|
|
198
220
|
/**
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { AppState, PendingExcalidrawElements } from "@excalidraw/excalidraw/types";
|
|
2
|
-
import { type NonDeleted, type ElementsMap, type ExcalidrawElement, type ExcalidrawFlowchartNodeElement } from "./types";
|
|
2
|
+
import { type NonDeleted, type ElementsMap, type ExcalidrawElement, type ExcalidrawFlowchartNodeElement, type NonDeletedExcalidrawElement } from "./types";
|
|
3
3
|
import type { Scene } from "./Scene";
|
|
4
4
|
export type LinkDirection = "up" | "right" | "down" | "left";
|
|
5
|
+
export declare const addNewNodes: (startNode: NonDeleted<ExcalidrawFlowchartNodeElement>, appState: AppState, direction: LinkDirection, scene: Scene, numberOfNodes: number, stickyCrossStart?: number | null) => {
|
|
6
|
+
nodes: NonDeletedExcalidrawElement[];
|
|
7
|
+
crossStart: number;
|
|
8
|
+
};
|
|
5
9
|
export declare class FlowChartNavigator {
|
|
6
10
|
isExploring: boolean;
|
|
7
11
|
private sameLevelNodes;
|
|
@@ -31,8 +31,8 @@ export declare const getFrameLikeElements: (allElements: ExcalidrawElementsInclu
|
|
|
31
31
|
*/
|
|
32
32
|
export declare const getRootElements: <T extends ExcalidrawElement>(allElements: readonly T[]) => T[];
|
|
33
33
|
export declare const getElementsInResizingFrame: (allElements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameLikeElement, appState: AppState, elementsMap: ElementsMap) => ExcalidrawElement[];
|
|
34
|
-
export declare const getElementsInNewFrame: (elements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameLikeElement, elementsMap: ElementsMap) => (import("./types").ExcalidrawLinearElement | import("./types").ExcalidrawSelectionElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | import("./types").ExcalidrawFreeDrawElement)[];
|
|
35
|
-
export declare const omitPartialGroups: (elements: ExcalidrawElement[], frame: ExcalidrawFrameLikeElement, allElementsMap: ElementsMap) => (import("./types").ExcalidrawLinearElement | import("./types").ExcalidrawSelectionElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | import("./types").ExcalidrawFreeDrawElement)[];
|
|
34
|
+
export declare const getElementsInNewFrame: (elements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameLikeElement, elementsMap: ElementsMap) => (import("./types").ExcalidrawLinearElement | import("./types").ExcalidrawSelectionElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawStickyNoteElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | import("./types").ExcalidrawFreeDrawElement)[];
|
|
35
|
+
export declare const omitPartialGroups: (elements: ExcalidrawElement[], frame: ExcalidrawFrameLikeElement, allElementsMap: ElementsMap) => (import("./types").ExcalidrawLinearElement | import("./types").ExcalidrawSelectionElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawStickyNoteElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | import("./types").ExcalidrawFreeDrawElement)[];
|
|
36
36
|
export declare const getContainingFrame: (element: ExcalidrawElement, elementsMap: ElementsMap) => ExcalidrawFrameLikeElement | null;
|
|
37
37
|
/** */
|
|
38
38
|
export declare const filterElementsEligibleAsFrameChildren: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameLikeElement) => ExcalidrawElement[];
|
|
@@ -49,6 +49,7 @@ export * from "./showSelectedShapeActions";
|
|
|
49
49
|
export * from "./sizeHelpers";
|
|
50
50
|
export * from "./sortElements";
|
|
51
51
|
export * from "./store";
|
|
52
|
+
export * from "./stickyNote";
|
|
52
53
|
export * from "./textElement";
|
|
53
54
|
export * from "./textMeasurements";
|
|
54
55
|
export * from "./textWrapping";
|
|
@@ -65,6 +65,8 @@ export declare class LinearElementEditor {
|
|
|
65
65
|
}, linearElementEditor: LinearElementEditor, scene: Scene): {
|
|
66
66
|
didAddPoint: boolean;
|
|
67
67
|
hitElement: NonDeleted<ExcalidrawElement> | null;
|
|
68
|
+
/** the pointer went down on the arrow's label, grabbing it for a drag */
|
|
69
|
+
hitBoundText: boolean;
|
|
68
70
|
linearElementEditor: LinearElementEditor | null;
|
|
69
71
|
};
|
|
70
72
|
static arePointsEqual<Point extends LocalPoint | GlobalPoint>(point1: Point | null, point2: Point | null): boolean;
|
|
@@ -76,6 +78,11 @@ export declare class LinearElementEditor {
|
|
|
76
78
|
static getPointAtIndexGlobalCoordinates(element: ExcalidrawLinearElement, indexMaybeFromEnd: number, // -1 for last element
|
|
77
79
|
elementsMap: ElementsMap): GlobalPoint;
|
|
78
80
|
static pointFromAbsoluteCoords(element: ExcalidrawLinearElement, absoluteCoords: GlobalPoint, elementsMap: ElementsMap): LocalPoint;
|
|
81
|
+
/**
|
|
82
|
+
* Whether the point at `index` is an interactive handle. Elbow arrows only
|
|
83
|
+
* expose their endpoints; their intermediate route points are not draggable.
|
|
84
|
+
*/
|
|
85
|
+
static isPointHandle(element: ExcalidrawLinearElement, index: number): boolean;
|
|
79
86
|
static getPointIndexUnderCursor(element: ExcalidrawLinearElement, elementsMap: ElementsMap, zoom: AppState["zoom"], x: number, y: number): number;
|
|
80
87
|
static createPointAt(element: ExcalidrawLinearElement, elementsMap: ElementsMap, scenePointerX: number, scenePointerY: number, gridSize: NullableGridSize): LocalPoint;
|
|
81
88
|
/**
|
|
@@ -114,10 +121,13 @@ export declare class LinearElementEditor {
|
|
|
114
121
|
* segment.
|
|
115
122
|
*/
|
|
116
123
|
static getBoundTextElementCenter: (element: ExcalidrawLinearElement, elementsMap: ElementsMap) => GlobalPoint;
|
|
124
|
+
static handleBoundTextDragging(linearElementEditor: LinearElementEditor, scene: Scene, pointerX: number, pointerY: number): LinearElementEditor | null;
|
|
125
|
+
static getPointAtPathParameter(container: ExcalidrawLinearElement, pathParameter: number, elementsMap: ElementsMap): GlobalPoint | null;
|
|
117
126
|
static getBoundTextElementPosition: (element: ExcalidrawLinearElement, boundTextElement: ExcalidrawTextElementWithContainer, elementsMap: ElementsMap) => {
|
|
118
127
|
x: number;
|
|
119
128
|
y: number;
|
|
120
129
|
};
|
|
130
|
+
private static computeBoundTextElementPosition;
|
|
121
131
|
static getMinMaxXYWithBoundText: (element: ExcalidrawLinearElement, elementsMap: ElementsMap, elementBounds: Bounds, boundTextElement: ExcalidrawTextElementWithContainer) => [number, number, number, number, number, number];
|
|
122
132
|
static getElementAbsoluteCoords: (element: ExcalidrawLinearElement, elementsMap: ElementsMap, includeBoundText?: boolean) => [number, number, number, number, number, number];
|
|
123
133
|
static moveFixedSegment(linearElement: LinearElementEditor, index: number, x: number, y: number, scene: Scene): Pick<LinearElementEditor, "segmentMidPointHoveredCoords" | "initialState">;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Mutable } from "@excalidraw/common/utility-types";
|
|
2
2
|
import type { ElementsMap, ExcalidrawElement } from "./types";
|
|
3
|
-
export type ElementUpdate<TElement extends ExcalidrawElement> = Omit<Partial<TElement>, "id" | "updated">;
|
|
3
|
+
export type ElementUpdate<TElement extends ExcalidrawElement> = Omit<Partial<TElement>, "id" | "updated" | "created">;
|
|
4
4
|
/**
|
|
5
5
|
* This function tracks updates of text elements for the purposes for collaboration.
|
|
6
6
|
* The version is used to compare updates when more than one user is working in
|
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
import type { MarkOptional } from "@excalidraw/common/utility-types";
|
|
2
|
-
import type { ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap, ExcalidrawArrowElement, ExcalidrawElbowArrowElement, ExcalidrawLineElement } from "./types";
|
|
3
|
-
export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "index" | "boundElements" | "seed" | "version" | "versionNonce" | "link" | "strokeStyle" | "fillStyle" | "strokeColor" | "backgroundColor" | "roughness" | "strokeWidth" | "roundness" | "locked" | "opacity" | "customData">;
|
|
2
|
+
import type { ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap, ExcalidrawArrowElement, ExcalidrawElbowArrowElement, ExcalidrawLineElement, ExcalidrawStickyNoteElement } from "./types";
|
|
3
|
+
export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "index" | "boundElements" | "seed" | "version" | "versionNonce" | "link" | "strokeStyle" | "fillStyle" | "strokeColor" | "backgroundColor" | "roughness" | "strokeWidth" | "roundness" | "locked" | "opacity" | "customData" | "created">;
|
|
4
4
|
export declare const newElement: (opts: {
|
|
5
5
|
type: ExcalidrawGenericElement["type"];
|
|
6
6
|
} & ElementConstructorOpts) => NonDeleted<ExcalidrawGenericElement>;
|
|
7
|
+
/**
|
|
8
|
+
* Style invariants of a sticky note: never-transparent colors, solid fill.
|
|
9
|
+
* Applied by the constructor and by every normalization pass. Returns the
|
|
10
|
+
* same object when nothing needs fixing.
|
|
11
|
+
*/
|
|
12
|
+
export declare const normalizeStickyNoteStyle: <T extends ExcalidrawStickyNoteElement>(element: T) => T;
|
|
13
|
+
/**
|
|
14
|
+
* Geometry invariants of a *finalized* sticky note: minimum size and
|
|
15
|
+
* `baseHeight ≤ height`. Deliberately not part of the constructor — a
|
|
16
|
+
* pointer-down draft starts at 0×0 like every other tool and is previewed at
|
|
17
|
+
* its true dragged size; pointer-up, restore, the skeleton path and the
|
|
18
|
+
* action post-passes enforce this.
|
|
19
|
+
*/
|
|
20
|
+
export declare const normalizeStickyNoteGeometry: <T extends ExcalidrawStickyNoteElement>(element: T) => T;
|
|
21
|
+
/** all sticky note invariants (style + finalized geometry) */
|
|
22
|
+
export declare const normalizeStickyNote: <T extends ExcalidrawStickyNoteElement>(element: T) => T;
|
|
23
|
+
export declare const newStickyNoteElement: (opts: {
|
|
24
|
+
type: "stickynote";
|
|
25
|
+
baseHeight?: number;
|
|
26
|
+
} & ElementConstructorOpts) => NonDeleted<ExcalidrawStickyNoteElement>;
|
|
7
27
|
export declare const newEmbeddableElement: (opts: {
|
|
8
28
|
type: "embeddable";
|
|
9
29
|
} & ElementConstructorOpts) => NonDeleted<ExcalidrawEmbeddableElement>;
|
|
@@ -39,6 +59,8 @@ export declare const newTextElement: (opts: {
|
|
|
39
59
|
containerId?: ExcalidrawTextContainer["id"] | null;
|
|
40
60
|
lineHeight?: ExcalidrawTextElement["lineHeight"];
|
|
41
61
|
autoResize?: ExcalidrawTextElement["autoResize"];
|
|
62
|
+
labelPosition?: ExcalidrawTextElement["labelPosition"];
|
|
63
|
+
baseFontSize?: ExcalidrawTextElement["baseFontSize"];
|
|
42
64
|
} & ElementConstructorOpts) => NonDeleted<ExcalidrawTextElement>;
|
|
43
65
|
export declare const refreshTextDimensions: (textElement: ExcalidrawTextElement, container: ExcalidrawTextContainer | null, elementsMap: ElementsMap, text?: string) => {
|
|
44
66
|
x: number;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { AppState, Offsets, Zoom } from "@excalidraw/excalidraw/types";
|
|
2
2
|
import type { ElementsMap, ExcalidrawElement } from "./types";
|
|
3
|
+
export type VerticalResizeAnchor = "top" | "bottom" | "center";
|
|
4
|
+
/** Keeps the chosen edge or center fixed when an element's height changes. */
|
|
5
|
+
export declare const getPositionAfterHeightChange: (element: Pick<ExcalidrawElement, "x" | "y" | "height" | "angle">, nextHeight: number, anchor?: VerticalResizeAnchor) => {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
};
|
|
3
9
|
export declare const INVISIBLY_SMALL_ELEMENT_SIZE = 0.1;
|
|
4
10
|
export declare const isInvisiblySmallElement: (element: ExcalidrawElement) => boolean;
|
|
5
11
|
export declare const isElementInViewport: (element: ExcalidrawElement, width: number, height: number, viewTransformations: {
|
|
@@ -1,2 +1,12 @@
|
|
|
1
1
|
import type { ExcalidrawElement } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* In theory, when we have text elements bound to a container, they
|
|
4
|
+
* should be right after the container element in the elements array.
|
|
5
|
+
* However, this is not guaranteed due to old and potential future bugs.
|
|
6
|
+
*
|
|
7
|
+
* This function sorts containers and their bound texts together. It prefers
|
|
8
|
+
* original z-index of container (i.e. it moves bound text elements after
|
|
9
|
+
* containers).
|
|
10
|
+
*/
|
|
11
|
+
export declare const normalizeBoundElementsOrder: <T extends ExcalidrawElement>(elements: readonly T[]) => readonly T[];
|
|
2
12
|
export declare const normalizeElementOrder: (elements: readonly ExcalidrawElement[]) => readonly ExcalidrawElement[];
|