@dwelle/excalidraw 0.5.0-2dbdd6f → 0.5.0-2e5786f
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 +229 -0
- package/README.md +111 -14
- package/dist/dev/{chunk-EWKWI3K7.js → chunk-IUKF2BNN.js} +59 -5
- package/dist/dev/chunk-IUKF2BNN.js.map +7 -0
- package/dist/dev/chunk-Q67DF2PJ.js +69 -0
- package/dist/dev/chunk-Q67DF2PJ.js.map +7 -0
- package/dist/dev/{chunk-JBODKHIT.js → chunk-XFZZLSOF.js} +16745 -11631
- package/dist/dev/chunk-XFZZLSOF.js.map +7 -0
- package/dist/dev/{chunk-NYLL7DNJ.js → chunk-XRXU5XOA.js} +2 -2
- package/dist/dev/components/TTDDialog/{CodeMirrorEditor-PY5ZVWKQ.js → CodeMirrorEditor-GYLDZZSD.js} +2 -2
- package/dist/dev/data/{image-WSL7K3G4.js → image-KVOR7M3R.js} +3 -3
- package/dist/dev/index.css +1065 -724
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +16584 -10255
- package/dist/dev/index.js.map +4 -4
- package/dist/dev/locales/{ar-SA-AGVJN2FU.js → ar-SA-EW44IW4V.js} +91 -46
- package/dist/dev/locales/ar-SA-EW44IW4V.js.map +7 -0
- package/dist/dev/locales/{az-AZ-62IXPX5D.js → az-AZ-AI7WAYA2.js} +49 -4
- package/dist/dev/locales/az-AZ-AI7WAYA2.js.map +7 -0
- package/dist/dev/locales/{bg-BG-UBDZF4KA.js → bg-BG-43ZNGDXF.js} +49 -4
- package/dist/dev/locales/bg-BG-43ZNGDXF.js.map +7 -0
- package/dist/dev/locales/{bn-BD-4TAUVZOD.js → bn-BD-PU4CN7NP.js} +49 -4
- package/dist/dev/locales/bn-BD-PU4CN7NP.js.map +7 -0
- package/dist/dev/locales/{bn-IN-PUGL2LDE.js → bn-IN-54CF43JL.js} +49 -4
- package/dist/dev/locales/bn-IN-54CF43JL.js.map +7 -0
- package/dist/dev/locales/{ca-ES-GEEW5L7T.js → ca-ES-RHJO3QDO.js} +50 -5
- package/dist/dev/locales/ca-ES-RHJO3QDO.js.map +7 -0
- package/dist/dev/locales/{cs-CZ-LNVE3QM5.js → cs-CZ-ZRSAO3BA.js} +49 -4
- package/dist/dev/locales/cs-CZ-ZRSAO3BA.js.map +7 -0
- package/dist/dev/locales/{da-DK-CAYJG7FJ.js → da-DK-OAB6DEJX.js} +49 -4
- package/dist/dev/locales/da-DK-OAB6DEJX.js.map +7 -0
- package/dist/dev/locales/{de-CH-GCXOD4LK.js → de-CH-QF7JLXTF.js} +157 -112
- package/dist/dev/locales/de-CH-QF7JLXTF.js.map +7 -0
- package/dist/dev/locales/{de-DE-CGDBECYD.js → de-DE-5ZO4KOPT.js} +157 -112
- package/dist/dev/locales/de-DE-5ZO4KOPT.js.map +7 -0
- package/dist/dev/locales/{el-GR-G5QZC24A.js → el-GR-F74ZSUEO.js} +50 -5
- package/dist/dev/locales/el-GR-F74ZSUEO.js.map +7 -0
- package/dist/dev/locales/{en-A3UOWEYW.js → en-BC4BNQRX.js} +8 -2
- package/dist/dev/locales/{es-ES-UMEOH76W.js → es-ES-3B3IENPS.js} +144 -99
- package/dist/dev/locales/es-ES-3B3IENPS.js.map +7 -0
- package/dist/dev/locales/{eu-ES-IWRZXJC5.js → eu-ES-NH447TVU.js} +203 -158
- package/dist/dev/locales/eu-ES-NH447TVU.js.map +7 -0
- package/dist/dev/locales/{fa-IR-QOYVIIJA.js → fa-IR-V44PNTTK.js} +68 -23
- package/dist/dev/locales/fa-IR-V44PNTTK.js.map +7 -0
- package/dist/dev/locales/{fi-FI-BXRW65OA.js → fi-FI-ZXSYWCC4.js} +49 -4
- package/dist/dev/locales/fi-FI-ZXSYWCC4.js.map +7 -0
- package/dist/dev/locales/{fr-FR-R2QH5VCW.js → fr-FR-RJSOSEYS.js} +88 -43
- package/dist/dev/locales/fr-FR-RJSOSEYS.js.map +7 -0
- package/dist/dev/locales/{gl-ES-4ES3ZADP.js → gl-ES-NAUVMVFY.js} +49 -4
- package/dist/dev/locales/gl-ES-NAUVMVFY.js.map +7 -0
- package/dist/dev/locales/{he-IL-TRQRRYPH.js → he-IL-JBKWWR75.js} +145 -100
- package/dist/dev/locales/he-IL-JBKWWR75.js.map +7 -0
- package/dist/dev/locales/{hi-IN-U46BOJEC.js → hi-IN-SD773MVZ.js} +50 -5
- package/dist/dev/locales/hi-IN-SD773MVZ.js.map +7 -0
- package/dist/dev/locales/{hu-HU-JDULJ6XL.js → hu-HU-OTA7GOAV.js} +49 -4
- package/dist/dev/locales/hu-HU-OTA7GOAV.js.map +7 -0
- package/dist/dev/locales/{id-ID-BLIXNCUT.js → id-ID-KGCGQFTT.js} +139 -94
- package/dist/dev/locales/id-ID-KGCGQFTT.js.map +7 -0
- package/dist/dev/locales/{it-IT-6TBW7RUK.js → it-IT-EWGEXMVK.js} +54 -9
- package/dist/dev/locales/it-IT-EWGEXMVK.js.map +7 -0
- package/dist/dev/locales/{ja-JP-6HYAQFYX.js → ja-JP-YMGRGBPS.js} +189 -144
- package/dist/dev/locales/ja-JP-YMGRGBPS.js.map +7 -0
- package/dist/dev/locales/{kaa-Z5UP62XJ.js → kaa-RRE7XUCW.js} +49 -4
- package/dist/dev/locales/kaa-RRE7XUCW.js.map +7 -0
- package/dist/dev/locales/{kab-KAB-Z7STWQKS.js → kab-KAB-ZCYVOJU4.js} +49 -4
- package/dist/dev/locales/kab-KAB-ZCYVOJU4.js.map +7 -0
- package/dist/dev/locales/{kk-KZ-BWHY45DX.js → kk-KZ-TO6XEFJC.js} +49 -4
- package/dist/dev/locales/kk-KZ-TO6XEFJC.js.map +7 -0
- package/dist/dev/locales/{km-KH-HGLNWNRU.js → km-KH-3HTDL5HB.js} +49 -4
- package/dist/dev/locales/km-KH-3HTDL5HB.js.map +7 -0
- package/dist/dev/locales/{ko-KR-CO36WKPC.js → ko-KR-O4L4O7L6.js} +133 -88
- package/dist/dev/locales/ko-KR-O4L4O7L6.js.map +7 -0
- package/dist/dev/locales/{ku-TR-AACVIARC.js → ku-TR-AFJWDY67.js} +49 -4
- package/dist/dev/locales/ku-TR-AFJWDY67.js.map +7 -0
- package/dist/dev/locales/{lt-LT-CFYYFLDV.js → lt-LT-7QOT2VDQ.js} +49 -4
- package/dist/dev/locales/lt-LT-7QOT2VDQ.js.map +7 -0
- package/dist/dev/locales/{lv-LV-QCBBOFFU.js → lv-LV-WV6C4NYF.js} +49 -4
- package/dist/dev/locales/lv-LV-WV6C4NYF.js.map +7 -0
- package/dist/dev/locales/{mr-IN-B2CM5GK5.js → mr-IN-3TLYWOEI.js} +52 -7
- package/dist/dev/locales/mr-IN-3TLYWOEI.js.map +7 -0
- package/dist/dev/locales/{my-MM-756BNN36.js → my-MM-NNL2QJT3.js} +49 -4
- package/dist/dev/locales/my-MM-NNL2QJT3.js.map +7 -0
- package/dist/dev/locales/{nb-NO-5BLHQI4J.js → nb-NO-PG3XLMEV.js} +50 -5
- package/dist/dev/locales/nb-NO-PG3XLMEV.js.map +7 -0
- package/dist/dev/locales/{nl-NL-225BLGAH.js → nl-NL-MMOYEKKQ.js} +59 -14
- package/dist/dev/locales/nl-NL-MMOYEKKQ.js.map +7 -0
- package/dist/dev/locales/{nn-NO-4J7MR6GH.js → nn-NO-AAC2I2YX.js} +49 -4
- package/dist/dev/locales/nn-NO-AAC2I2YX.js.map +7 -0
- package/dist/dev/locales/{oc-FR-XCETH7KF.js → oc-FR-SR6MFB4N.js} +50 -5
- package/dist/dev/locales/oc-FR-SR6MFB4N.js.map +7 -0
- package/dist/dev/locales/{pa-IN-32NBAN5L.js → pa-IN-ADGMQLQI.js} +49 -4
- package/dist/dev/locales/pa-IN-ADGMQLQI.js.map +7 -0
- package/dist/dev/locales/{percentages-ZRLRVMSI.js → percentages-X2QIQ6XJ.js} +2 -2
- package/dist/dev/locales/{pl-PL-R6OJ54BT.js → pl-PL-FNIPTMVP.js} +50 -5
- package/dist/dev/locales/pl-PL-FNIPTMVP.js.map +7 -0
- package/dist/dev/locales/{pt-BR-7AFGAKGR.js → pt-BR-67FMCDNE.js} +136 -91
- package/dist/dev/locales/pt-BR-67FMCDNE.js.map +7 -0
- package/dist/dev/locales/{pt-PT-S6BMW6MY.js → pt-PT-4G3GI4SF.js} +135 -90
- package/dist/dev/locales/pt-PT-4G3GI4SF.js.map +7 -0
- package/dist/dev/locales/{ro-RO-4JVGQHS2.js → ro-RO-CUZFN555.js} +54 -9
- package/dist/dev/locales/ro-RO-CUZFN555.js.map +7 -0
- package/dist/dev/locales/{ru-RU-IESI752T.js → ru-RU-4GHINTII.js} +56 -11
- package/dist/dev/locales/ru-RU-4GHINTII.js.map +7 -0
- package/dist/dev/locales/{si-LK-H75E7PKD.js → si-LK-SSNT7T4A.js} +50 -5
- package/dist/dev/locales/si-LK-SSNT7T4A.js.map +7 -0
- package/dist/dev/locales/{sk-SK-EUK2NR2F.js → sk-SK-J7TKZQEH.js} +87 -42
- package/dist/dev/locales/sk-SK-J7TKZQEH.js.map +7 -0
- package/dist/dev/locales/{sl-SI-AKW7R5PW.js → sl-SI-SIBMLDYY.js} +135 -90
- package/dist/dev/locales/sl-SI-SIBMLDYY.js.map +7 -0
- package/dist/dev/locales/{sv-SE-QIBOOXLJ.js → sv-SE-6GYGFZNL.js} +132 -87
- package/dist/dev/locales/sv-SE-6GYGFZNL.js.map +7 -0
- package/dist/dev/locales/{ta-IN-LBK2NQ5K.js → ta-IN-7AW6CTGA.js} +49 -4
- package/dist/dev/locales/ta-IN-7AW6CTGA.js.map +7 -0
- package/dist/dev/locales/{th-TH-YJ2E6GVT.js → th-TH-FP7ULYYM.js} +98 -53
- package/dist/dev/locales/th-TH-FP7ULYYM.js.map +7 -0
- package/dist/dev/locales/{tr-TR-Y5GO2XJW.js → tr-TR-UDQGNXAG.js} +126 -81
- package/dist/dev/locales/tr-TR-UDQGNXAG.js.map +7 -0
- package/dist/dev/locales/{uk-UA-XYAFHHJW.js → uk-UA-25HL2NCU.js} +109 -64
- package/dist/dev/locales/uk-UA-25HL2NCU.js.map +7 -0
- package/dist/dev/locales/{uz-UZ-LF3CBRYE.js → uz-UZ-OPSBAY4H.js} +49 -4
- package/dist/dev/locales/uz-UZ-OPSBAY4H.js.map +7 -0
- package/dist/dev/locales/{vi-VN-WDPZEUOJ.js → vi-VN-DK367UGA.js} +49 -4
- package/dist/dev/locales/vi-VN-DK367UGA.js.map +7 -0
- package/dist/dev/locales/{zh-CN-SZ37453H.js → zh-CN-QCVKNWUH.js} +88 -43
- package/dist/dev/locales/zh-CN-QCVKNWUH.js.map +7 -0
- package/dist/dev/locales/{zh-HK-QDQ5QNBC.js → zh-HK-WFGYHWPG.js} +49 -4
- package/dist/dev/locales/zh-HK-WFGYHWPG.js.map +7 -0
- package/dist/dev/locales/{zh-TW-CYU6GFBV.js → zh-TW-WHQS4ZSD.js} +134 -89
- 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-DYU5D34O.js +1 -0
- package/dist/prod/chunk-FZAZBDSE.js +12 -0
- package/dist/prod/chunk-OKMKEMDC.js +35 -0
- package/dist/prod/{chunk-ZV7TQH6J.js → chunk-RX4U73MO.js} +1 -1
- package/dist/prod/components/TTDDialog/{CodeMirrorEditor-M5ZUJBXD.js → CodeMirrorEditor-TTO5E5XX.js} +1 -1
- package/dist/prod/data/image-QH2OFXIG.js +1 -0
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +67 -98
- package/dist/prod/locales/ar-SA-5WIASEJP.js +10 -0
- 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-R7FWCZ5G.js +1 -0
- 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-IHMV2US7.js +7 -0
- 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/appEventBus.d.ts +27 -0
- package/dist/types/common/src/colors.d.ts +23 -1
- package/dist/types/common/src/constants.d.ts +66 -7
- package/dist/types/common/src/index.d.ts +2 -0
- package/dist/types/common/src/keys.d.ts +4 -0
- package/dist/types/common/src/points.d.ts +1 -1
- package/dist/types/common/src/random.d.ts +7 -0
- package/dist/types/common/src/utils.d.ts +7 -46
- package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
- package/dist/types/element/src/Scene.d.ts +7 -5
- package/dist/types/element/src/align.d.ts +2 -2
- package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
- package/dist/types/element/src/arrows/focus.d.ts +5 -2
- package/dist/types/element/src/binding.d.ts +28 -13
- package/dist/types/element/src/bounds.d.ts +22 -7
- package/dist/types/element/src/bucketFill.d.ts +110 -0
- package/dist/types/element/src/collision.d.ts +14 -5
- package/dist/types/element/src/comparisons.d.ts +8 -5
- package/dist/types/element/src/convertToShape.d.ts +23 -0
- package/dist/types/element/src/delta.d.ts +23 -1
- package/dist/types/element/src/distribute.d.ts +2 -2
- package/dist/types/element/src/dragElements.d.ts +27 -0
- package/dist/types/element/src/duplicate.d.ts +64 -3
- package/dist/types/element/src/embeddable.d.ts +2 -2
- package/dist/types/element/src/flowchart.d.ts +11 -7
- package/dist/types/element/src/fractionalIndex.d.ts +2 -2
- package/dist/types/element/src/frame.d.ts +11 -10
- package/dist/types/element/src/groups.d.ts +9 -9
- package/dist/types/element/src/index.d.ts +6 -1
- package/dist/types/element/src/linearElementEditor.d.ts +27 -10
- package/dist/types/element/src/listMarker.d.ts +34 -0
- package/dist/types/element/src/mutateElement.d.ts +1 -1
- package/dist/types/element/src/newElement.d.ts +53 -3
- package/dist/types/element/src/renderElement.d.ts +21 -7
- package/dist/types/element/src/resizeElements.d.ts +2 -2
- package/dist/types/element/src/selection.d.ts +7 -7
- package/dist/types/element/src/shape.d.ts +27 -1
- 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 +20 -9
- package/dist/types/element/src/transform.d.ts +26 -7
- package/dist/types/element/src/typeChecks.d.ts +29 -27
- package/dist/types/element/src/types.d.ts +43 -7
- package/dist/types/element/src/utils.d.ts +15 -4
- package/dist/types/element/src/zindex.d.ts +2 -2
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +92 -26
- package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +62 -18
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +385 -753
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +62 -18
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +31 -9
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +96 -29
- package/dist/types/excalidraw/actions/actionDeselect.d.ts +182 -0
- package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +31 -9
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +63 -19
- package/dist/types/excalidraw/actions/actionExport.d.ts +165 -395
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +1 -0
- package/dist/types/excalidraw/actions/actionFrame.d.ts +156 -213
- package/dist/types/excalidraw/actions/actionGroup.d.ts +77 -33
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +86 -12
- package/dist/types/excalidraw/actions/actionLink.d.ts +32 -10
- package/dist/types/excalidraw/actions/actionMenu.d.ts +31 -9
- package/dist/types/excalidraw/actions/actionProperties.d.ts +100 -40
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +37 -15
- package/dist/types/excalidraw/actions/actionStyles.d.ts +31 -9
- package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +32 -10
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +35 -14
- package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +32 -10
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +32 -10
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +35 -14
- package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
- package/dist/types/excalidraw/actions/{actionEmbeddable.d.ts → actionToggleShowHints.d.ts} +47 -22
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +32 -10
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +33 -11
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +32 -10
- package/dist/types/excalidraw/actions/colorTargets.d.ts +39 -0
- package/dist/types/excalidraw/actions/index.d.ts +3 -2
- package/dist/types/excalidraw/actions/manager.d.ts +1 -0
- package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
- package/dist/types/excalidraw/actions/types.d.ts +8 -4
- package/dist/types/excalidraw/{animated-trail.d.ts → animatedTrail.d.ts} +4 -3
- package/dist/types/excalidraw/appState.d.ts +51 -27
- package/dist/types/excalidraw/clipboard.d.ts +2 -3
- package/dist/types/excalidraw/components/Actions.d.ts +17 -12
- package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/App.arrowText.d.ts +70 -0
- package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
- package/dist/types/excalidraw/components/App.clipboard.d.ts +31 -0
- package/dist/types/excalidraw/components/App.cursor.d.ts +38 -0
- package/dist/types/excalidraw/components/App.d.ts +342 -123
- package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
- package/dist/types/excalidraw/components/App.duplicate.d.ts +101 -0
- package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
- package/dist/types/excalidraw/components/App.modifiers.d.ts +38 -0
- package/dist/types/excalidraw/components/App.pan.d.ts +62 -0
- package/dist/types/excalidraw/components/App.selectionTool.d.ts +57 -0
- package/dist/types/excalidraw/components/App.text.d.ts +146 -0
- package/dist/types/excalidraw/components/App.textTool.d.ts +140 -0
- package/dist/types/excalidraw/components/App.toolDrag.d.ts +63 -0
- package/dist/types/excalidraw/components/App.viewport.d.ts +113 -0
- package/dist/types/excalidraw/components/App.wheel.d.ts +26 -0
- package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
- package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -3
- package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
- package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +5 -1
- package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -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/colorPickerUtils.d.ts +1 -1
- package/dist/types/excalidraw/components/ColorPicker/colorTopPicksDnD.d.ts +11 -0
- package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -1
- package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -2
- package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
- package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
- package/dist/types/excalidraw/components/EyeDropper.d.ts +1 -1
- package/dist/types/excalidraw/components/FileDropOverlay.d.ts +2 -0
- package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +4 -1
- package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +6 -1
- package/dist/types/excalidraw/components/FontPicker/fontTopPicksDnD.d.ts +12 -0
- package/dist/types/excalidraw/components/IconButton.d.ts +48 -0
- package/dist/types/excalidraw/components/Island.d.ts +7 -0
- package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
- package/dist/types/excalidraw/components/LayerUI.d.ts +5 -3
- package/dist/types/excalidraw/components/LibraryMenu.d.ts +1 -1
- package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +6 -2
- package/dist/types/excalidraw/components/LibraryUnit.d.ts +7 -2
- package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
- package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
- package/dist/types/excalidraw/components/MobileMenu.d.ts +4 -4
- package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
- package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
- package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
- package/dist/types/excalidraw/components/Popover.d.ts +1 -3
- package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
- package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
- package/dist/types/excalidraw/components/SearchMenu.d.ts +1 -1
- package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +1 -1
- package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
- package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
- package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +4 -4
- package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +3 -3
- package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +2 -1
- package/dist/types/excalidraw/components/Toast.d.ts +8 -4
- package/dist/types/excalidraw/components/ToolPopover.d.ts +3 -6
- package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
- package/dist/types/excalidraw/components/Tools.d.ts +151 -0
- package/dist/types/excalidraw/components/Tooltip.d.ts +15 -1
- package/dist/types/excalidraw/components/TopPicksDnD/TopPicksContextMenu.d.ts +14 -0
- package/dist/types/excalidraw/components/TopPicksDnD/TopPicksTip.d.ts +11 -0
- package/dist/types/excalidraw/components/TopPicksDnD/topPicksDnD.d.ts +58 -0
- 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/InteractiveCanvas.d.ts +3 -1
- package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +3 -0
- package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -1
- package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
- package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +2 -2
- package/dist/types/excalidraw/components/icons.d.ts +7 -1
- package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +10 -4
- package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
- package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
- package/dist/types/excalidraw/data/blob.d.ts +201 -156
- package/dist/types/excalidraw/data/filesystem.d.ts +3 -5
- package/dist/types/excalidraw/data/index.d.ts +6 -7
- package/dist/types/excalidraw/data/json.d.ts +109 -78
- package/dist/types/excalidraw/data/library.d.ts +1 -1
- package/dist/types/excalidraw/data/resave.d.ts +7 -2
- package/dist/types/excalidraw/data/restore.d.ts +1 -1
- package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
- package/dist/types/excalidraw/eraser/index.d.ts +2 -3
- package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -2
- package/dist/types/excalidraw/hooks/useAppStateValue.d.ts +29 -0
- package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
- package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +5 -5
- package/dist/types/excalidraw/index.d.ts +33 -8
- package/dist/types/excalidraw/{laser-trails.d.ts → laserTrails.d.ts} +5 -7
- package/dist/types/excalidraw/lasso/index.d.ts +2 -3
- package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
- package/dist/types/excalidraw/renderOverrides.d.ts +9 -0
- package/dist/types/excalidraw/renderer/animation.d.ts +5 -1
- package/dist/types/excalidraw/renderer/helpers.d.ts +25 -0
- package/dist/types/excalidraw/renderer/interactiveScene.d.ts +2 -4
- package/dist/types/excalidraw/scene/Renderer.d.ts +489 -20
- package/dist/types/excalidraw/scene/export.d.ts +3 -3
- package/dist/types/excalidraw/scene/index.d.ts +2 -2
- package/dist/types/excalidraw/scene/types.d.ts +7 -5
- package/dist/types/excalidraw/snapping.d.ts +7 -7
- package/dist/types/excalidraw/types.d.ts +601 -72
- package/dist/types/excalidraw/viewport.d.ts +302 -0
- package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +13 -3
- package/dist/types/fractional-indexing/src/index.d.ts +29 -0
- package/dist/types/laser-pointer/src/index.d.ts +2 -0
- package/dist/types/laser-pointer/src/math.d.ts +16 -0
- package/dist/types/laser-pointer/src/simplify.d.ts +2 -0
- package/dist/types/laser-pointer/src/state.d.ts +36 -0
- package/dist/types/math/src/constants.d.ts +0 -1
- package/dist/types/math/src/curve.d.ts +23 -13
- package/dist/types/math/src/index.d.ts +1 -0
- package/dist/types/math/src/pca.d.ts +79 -0
- package/dist/types/math/src/point.d.ts +1 -0
- package/dist/types/math/src/polygon.d.ts +25 -1
- package/dist/types/math/src/segment.d.ts +6 -0
- package/dist/types/utils/src/shape.d.ts +2 -2
- package/package.json +4 -5
- package/dist/dev/chunk-EWKWI3K7.js.map +0 -7
- package/dist/dev/chunk-JBODKHIT.js.map +0 -7
- package/dist/dev/chunk-URPEKBQ3.js +0 -69
- package/dist/dev/chunk-URPEKBQ3.js.map +0 -7
- package/dist/dev/locales/ar-SA-AGVJN2FU.js.map +0 -7
- package/dist/dev/locales/az-AZ-62IXPX5D.js.map +0 -7
- package/dist/dev/locales/bg-BG-UBDZF4KA.js.map +0 -7
- package/dist/dev/locales/bn-BD-4TAUVZOD.js.map +0 -7
- package/dist/dev/locales/bn-IN-PUGL2LDE.js.map +0 -7
- package/dist/dev/locales/ca-ES-GEEW5L7T.js.map +0 -7
- package/dist/dev/locales/cs-CZ-LNVE3QM5.js.map +0 -7
- package/dist/dev/locales/da-DK-CAYJG7FJ.js.map +0 -7
- package/dist/dev/locales/de-CH-GCXOD4LK.js.map +0 -7
- package/dist/dev/locales/de-DE-CGDBECYD.js.map +0 -7
- package/dist/dev/locales/el-GR-G5QZC24A.js.map +0 -7
- package/dist/dev/locales/es-ES-UMEOH76W.js.map +0 -7
- package/dist/dev/locales/eu-ES-IWRZXJC5.js.map +0 -7
- package/dist/dev/locales/fa-IR-QOYVIIJA.js.map +0 -7
- package/dist/dev/locales/fi-FI-BXRW65OA.js.map +0 -7
- package/dist/dev/locales/fr-FR-R2QH5VCW.js.map +0 -7
- package/dist/dev/locales/gl-ES-4ES3ZADP.js.map +0 -7
- package/dist/dev/locales/he-IL-TRQRRYPH.js.map +0 -7
- package/dist/dev/locales/hi-IN-U46BOJEC.js.map +0 -7
- package/dist/dev/locales/hu-HU-JDULJ6XL.js.map +0 -7
- package/dist/dev/locales/id-ID-BLIXNCUT.js.map +0 -7
- package/dist/dev/locales/it-IT-6TBW7RUK.js.map +0 -7
- package/dist/dev/locales/ja-JP-6HYAQFYX.js.map +0 -7
- package/dist/dev/locales/kaa-Z5UP62XJ.js.map +0 -7
- package/dist/dev/locales/kab-KAB-Z7STWQKS.js.map +0 -7
- package/dist/dev/locales/kk-KZ-BWHY45DX.js.map +0 -7
- package/dist/dev/locales/km-KH-HGLNWNRU.js.map +0 -7
- package/dist/dev/locales/ko-KR-CO36WKPC.js.map +0 -7
- package/dist/dev/locales/ku-TR-AACVIARC.js.map +0 -7
- package/dist/dev/locales/lt-LT-CFYYFLDV.js.map +0 -7
- package/dist/dev/locales/lv-LV-QCBBOFFU.js.map +0 -7
- package/dist/dev/locales/mr-IN-B2CM5GK5.js.map +0 -7
- package/dist/dev/locales/my-MM-756BNN36.js.map +0 -7
- package/dist/dev/locales/nb-NO-5BLHQI4J.js.map +0 -7
- package/dist/dev/locales/nl-NL-225BLGAH.js.map +0 -7
- package/dist/dev/locales/nn-NO-4J7MR6GH.js.map +0 -7
- package/dist/dev/locales/oc-FR-XCETH7KF.js.map +0 -7
- package/dist/dev/locales/pa-IN-32NBAN5L.js.map +0 -7
- package/dist/dev/locales/pl-PL-R6OJ54BT.js.map +0 -7
- package/dist/dev/locales/pt-BR-7AFGAKGR.js.map +0 -7
- package/dist/dev/locales/pt-PT-S6BMW6MY.js.map +0 -7
- package/dist/dev/locales/ro-RO-4JVGQHS2.js.map +0 -7
- package/dist/dev/locales/ru-RU-IESI752T.js.map +0 -7
- package/dist/dev/locales/si-LK-H75E7PKD.js.map +0 -7
- package/dist/dev/locales/sk-SK-EUK2NR2F.js.map +0 -7
- package/dist/dev/locales/sl-SI-AKW7R5PW.js.map +0 -7
- package/dist/dev/locales/sv-SE-QIBOOXLJ.js.map +0 -7
- package/dist/dev/locales/ta-IN-LBK2NQ5K.js.map +0 -7
- package/dist/dev/locales/th-TH-YJ2E6GVT.js.map +0 -7
- package/dist/dev/locales/tr-TR-Y5GO2XJW.js.map +0 -7
- package/dist/dev/locales/uk-UA-XYAFHHJW.js.map +0 -7
- package/dist/dev/locales/uz-UZ-LF3CBRYE.js.map +0 -7
- package/dist/dev/locales/vi-VN-WDPZEUOJ.js.map +0 -7
- package/dist/dev/locales/zh-CN-SZ37453H.js.map +0 -7
- package/dist/dev/locales/zh-HK-QDQ5QNBC.js.map +0 -7
- package/dist/dev/locales/zh-TW-CYU6GFBV.js.map +0 -7
- package/dist/prod/chunk-33L4EPXN.js +0 -34
- package/dist/prod/chunk-3PELD44J.js +0 -1
- package/dist/prod/chunk-DF5Y7EC7.js +0 -12
- package/dist/prod/data/image-57VVPCM3.js +0 -1
- package/dist/prod/locales/ar-SA-NXDWD63E.js +0 -8
- package/dist/prod/locales/az-AZ-MXSORGZV.js +0 -1
- package/dist/prod/locales/bg-BG-O6MV2KSF.js +0 -5
- package/dist/prod/locales/bn-BD-T2VJNT7N.js +0 -3
- package/dist/prod/locales/bn-IN-MMW2ORAC.js +0 -3
- package/dist/prod/locales/ca-ES-MKBCGNOG.js +0 -8
- package/dist/prod/locales/cs-CZ-V77HGUP7.js +0 -7
- package/dist/prod/locales/da-DK-I5RFNTM4.js +0 -2
- package/dist/prod/locales/de-CH-WLRDEVBV.js +0 -7
- package/dist/prod/locales/de-DE-DTI4WUSC.js +0 -7
- package/dist/prod/locales/el-GR-ZXDJ2OS4.js +0 -7
- package/dist/prod/locales/en-QI57FMQH.js +0 -1
- package/dist/prod/locales/es-ES-DYQHAD43.js +0 -7
- package/dist/prod/locales/eu-ES-QDSYU5Y3.js +0 -7
- package/dist/prod/locales/fa-IR-26LZG4PM.js +0 -9
- package/dist/prod/locales/fi-FI-6YS4KDE4.js +0 -6
- package/dist/prod/locales/fr-FR-BRLLPTZC.js +0 -12
- package/dist/prod/locales/gl-ES-OKUZTLYG.js +0 -6
- package/dist/prod/locales/he-IL-26MGYIU7.js +0 -8
- package/dist/prod/locales/hi-IN-Q4ZOGTP2.js +0 -3
- package/dist/prod/locales/hu-HU-P2OXPSN5.js +0 -3
- package/dist/prod/locales/id-ID-2EIKXYN6.js +0 -8
- package/dist/prod/locales/it-IT-4CFKVXI2.js +0 -12
- package/dist/prod/locales/ja-JP-MAND2Z4V.js +0 -7
- package/dist/prod/locales/kaa-HQRTCXTJ.js +0 -1
- package/dist/prod/locales/kab-KAB-JKIKKTGH.js +0 -4
- package/dist/prod/locales/kk-KZ-HXQ63ZFC.js +0 -1
- package/dist/prod/locales/km-KH-PKL3LSGX.js +0 -7
- package/dist/prod/locales/ko-KR-KXLREZX3.js +0 -5
- package/dist/prod/locales/ku-TR-MJ4IER3X.js +0 -6
- package/dist/prod/locales/lt-LT-H6WFQ6FJ.js +0 -3
- package/dist/prod/locales/lv-LV-GOCK6SJW.js +0 -4
- package/dist/prod/locales/mr-IN-IXVLDMEQ.js +0 -9
- package/dist/prod/locales/my-MM-YG6MYTTD.js +0 -1
- package/dist/prod/locales/nb-NO-XGWJISD2.js +0 -8
- package/dist/prod/locales/nl-NL-XVDVCPNC.js +0 -13
- package/dist/prod/locales/nn-NO-EMX5MJX5.js +0 -4
- package/dist/prod/locales/oc-FR-ROEINTVO.js +0 -4
- package/dist/prod/locales/pa-IN-ZYN6SUDY.js +0 -4
- package/dist/prod/locales/percentages-5DKR754L.js +0 -1
- package/dist/prod/locales/pl-PL-6VTG7PHC.js +0 -12
- package/dist/prod/locales/pt-BR-5YFKRR5G.js +0 -6
- package/dist/prod/locales/pt-PT-GEIXXZ67.js +0 -8
- package/dist/prod/locales/ro-RO-E2P6TFZI.js +0 -12
- package/dist/prod/locales/ru-RU-YBIIY43T.js +0 -10
- package/dist/prod/locales/si-LK-673C2CI2.js +0 -1
- package/dist/prod/locales/sk-SK-CKZHQ4AP.js +0 -7
- package/dist/prod/locales/sl-SI-557H2GWM.js +0 -6
- package/dist/prod/locales/sv-SE-XOPKKDWS.js +0 -8
- package/dist/prod/locales/ta-IN-XBH7DQI3.js +0 -6
- package/dist/prod/locales/th-TH-TOCWH3R4.js +0 -1
- package/dist/prod/locales/tr-TR-GXW6CYY5.js +0 -4
- package/dist/prod/locales/uk-UA-IJKTNUDG.js +0 -6
- package/dist/prod/locales/uz-UZ-TBZZEA4V.js +0 -1
- package/dist/prod/locales/vi-VN-MULSGNVB.js +0 -7
- package/dist/prod/locales/zh-CN-MVX3E32U.js +0 -11
- package/dist/prod/locales/zh-HK-JNU5RLIE.js +0 -1
- package/dist/prod/locales/zh-TW-LENVCA6T.js +0 -9
- package/dist/types/excalidraw/animation-frame-handler.d.ts +0 -16
- package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
- package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
- package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -10
- package/dist/types/excalidraw/components/ToolButton.d.ts +0 -49
- package/dist/types/excalidraw/components/shapes.d.ts +0 -263
- package/dist/types/excalidraw/cursor.d.ts +0 -5
- package/dist/types/excalidraw/scene/scroll.d.ts +0 -18
- package/dist/types/excalidraw/scene/scrollConstraints.d.ts +0 -46
- package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
- package/dist/types/utils/src/bbox.d.ts +0 -9
- package/dist/types/utils/src/index.d.ts +0 -4
- package/dist/types/utils/src/withinBounds.d.ts +0 -19
- /package/dist/dev/{chunk-NYLL7DNJ.js.map → chunk-XRXU5XOA.js.map} +0 -0
- /package/dist/dev/components/TTDDialog/{CodeMirrorEditor-PY5ZVWKQ.js.map → CodeMirrorEditor-GYLDZZSD.js.map} +0 -0
- /package/dist/dev/data/{image-WSL7K3G4.js.map → image-KVOR7M3R.js.map} +0 -0
- /package/dist/dev/locales/{en-A3UOWEYW.js.map → en-BC4BNQRX.js.map} +0 -0
- /package/dist/dev/locales/{percentages-ZRLRVMSI.js.map → percentages-X2QIQ6XJ.js.map} +0 -0
|
@@ -1,28 +1,60 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type EXPORT_IMAGE_TYPES, Emitter, type EditorInterface, type StylesPanelMode } from "@excalidraw/common";
|
|
3
|
-
import { LinearElementEditor,
|
|
4
|
-
import { Scene, Store, type ElementUpdate, StoreDelta, type ApplyToOptions } from "@excalidraw/element";
|
|
2
|
+
import { AppEventBus, type EXPORT_IMAGE_TYPES, Emitter, type EditorInterface, type StylesPanelMode } from "@excalidraw/common";
|
|
3
|
+
import { LinearElementEditor, Scene, Store, type ElementUpdate, StoreDelta, type ApplyToOptions } from "@excalidraw/element";
|
|
5
4
|
import type { ExcalidrawElement, NonDeleted, NonDeletedExcalidrawElement, ExcalidrawFrameLikeElement, ExcalidrawIframeElement, ExcalidrawEmbeddableElement, Ordered, SceneElementsMap } from "@excalidraw/element/types";
|
|
5
|
+
import type { TransformHandleDirection } from "@excalidraw/element";
|
|
6
6
|
import type { Mutable } from "@excalidraw/common/utility-types";
|
|
7
7
|
import { ActionManager } from "../actions/manager";
|
|
8
|
-
import { AnimationFrameHandler } from "../animation-frame-handler";
|
|
9
8
|
import { History } from "../history";
|
|
10
9
|
import { Fonts } from "../fonts";
|
|
11
10
|
import { type WritableAtom } from "../editor-jotai";
|
|
12
11
|
import { Renderer } from "../scene/Renderer";
|
|
13
|
-
import {
|
|
12
|
+
import { type SetViewportOptions } from "../viewport";
|
|
13
|
+
import { LaserTrails } from "../laserTrails";
|
|
14
14
|
import { isOverScrollBars } from "../scene/scrollbars";
|
|
15
15
|
import { LassoTrail } from "../lasso";
|
|
16
16
|
import { EraserTrail } from "../eraser";
|
|
17
|
+
import { AppArrowText } from "./App.arrowText";
|
|
18
|
+
import { AppClipboard } from "./App.clipboard";
|
|
19
|
+
import { AppText } from "./App.text";
|
|
20
|
+
import { AppTextTool } from "./App.textTool";
|
|
21
|
+
import { AppBucketFill } from "./App.bucketFill";
|
|
22
|
+
import { AppToolDrag } from "./App.toolDrag";
|
|
23
|
+
import { AppCursor } from "./App.cursor";
|
|
24
|
+
import { AppDrawShape } from "./App.drawshape";
|
|
25
|
+
import { AppDuplicate } from "./App.duplicate";
|
|
26
|
+
import { AppFlowchart } from "./App.flowchart";
|
|
27
|
+
import { AppModifiers } from "./App.modifiers";
|
|
28
|
+
import { AppPan } from "./App.pan";
|
|
29
|
+
import { AppViewport } from "./App.viewport";
|
|
30
|
+
import { AppWheel } from "./App.wheel";
|
|
31
|
+
import { AppSelectionTool } from "./App.selectionTool";
|
|
32
|
+
import { CursorHints } from "./CursorHint";
|
|
33
|
+
import { type OnStateChange } from "./AppStateObserver";
|
|
17
34
|
import type { ExportedElements } from "../data";
|
|
18
|
-
import type {
|
|
19
|
-
import type { AppClassProperties, AppProps, AppState, ExcalidrawImperativeAPI, BinaryFiles, LibraryItems, SceneData, FrameNameBoundsCache, SidebarName, SidebarTabName, ScrollConstraints, ToolType, OnUserFollowedPayload, GenerateDiagramToCode, NullableGridSize, Offsets } from "../types";
|
|
35
|
+
import type { AppClassProperties, AppProps, AppState, ElementRenderOverrides, ExcalidrawImperativeAPI, BinaryFiles, LibraryItems, PointerDownState, SceneData, FrameNameBoundsCache, SidebarName, SidebarTabName, KeyboardModifiersObject, ToolType, OnUserFollowedPayload, ExcalidrawImperativeAPIEventMap, GenerateDiagramToCode, NullableGridSize, UIConfig } from "../types";
|
|
20
36
|
import type { RoughCanvas } from "roughjs/bin/canvas";
|
|
21
37
|
import type { ActionResult } from "../actions/types";
|
|
38
|
+
declare const editorLifecycleEventBehavior: {
|
|
39
|
+
readonly "editor:mount": {
|
|
40
|
+
readonly cardinality: "once";
|
|
41
|
+
readonly replay: "last";
|
|
42
|
+
};
|
|
43
|
+
readonly "editor:initialize": {
|
|
44
|
+
readonly cardinality: "once";
|
|
45
|
+
readonly replay: "last";
|
|
46
|
+
};
|
|
47
|
+
readonly "editor:unmount": {
|
|
48
|
+
readonly cardinality: "once";
|
|
49
|
+
readonly replay: "last";
|
|
50
|
+
};
|
|
51
|
+
};
|
|
22
52
|
export declare const ExcalidrawContainerContext: React.Context<{
|
|
23
53
|
container: HTMLDivElement | null;
|
|
24
54
|
id?: string | null;
|
|
25
55
|
}>;
|
|
56
|
+
export declare const ExcalidrawAPIContext: React.Context<ExcalidrawImperativeAPI | null>;
|
|
57
|
+
export declare const ExcalidrawAPISetContext: React.Context<((api: ExcalidrawImperativeAPI | null) => void) | null>;
|
|
26
58
|
export declare const useApp: () => AppClassProperties;
|
|
27
59
|
export declare const useAppProps: () => AppProps;
|
|
28
60
|
export declare const useEditorInterface: () => Readonly<{
|
|
@@ -45,6 +77,10 @@ export declare const useExcalidrawElements: () => readonly NonDeletedExcalidrawE
|
|
|
45
77
|
export declare const useExcalidrawAppState: () => AppState;
|
|
46
78
|
export declare const useExcalidrawSetAppState: () => <K extends keyof AppState>(state: AppState | ((prevState: Readonly<AppState>, props: Readonly<any>) => AppState | Pick<AppState, K> | null) | Pick<AppState, K> | null, callback?: (() => void) | undefined) => void;
|
|
47
79
|
export declare const useExcalidrawActionManager: () => ActionManager;
|
|
80
|
+
/**
|
|
81
|
+
* Requires wrapping your component in <ExcalidrawAPIContext.Provider>
|
|
82
|
+
*/
|
|
83
|
+
export declare const useExcalidrawAPI: () => ExcalidrawImperativeAPI | null;
|
|
48
84
|
declare class App extends React.Component<AppProps, AppState> {
|
|
49
85
|
canvas: AppClassProperties["canvas"];
|
|
50
86
|
interactiveCanvas: AppClassProperties["interactiveCanvas"];
|
|
@@ -54,15 +90,21 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
54
90
|
editorInterface: EditorInterface;
|
|
55
91
|
private stylesPanelMode;
|
|
56
92
|
private excalidrawContainerRef;
|
|
93
|
+
private zenModeTransitionTimer;
|
|
94
|
+
get ownerDocument(): Document;
|
|
95
|
+
get ownerWindow(): Window & typeof globalThis;
|
|
57
96
|
scene: Scene;
|
|
58
97
|
fonts: Fonts;
|
|
59
98
|
renderer: Renderer;
|
|
60
99
|
visibleElements: readonly NonDeletedExcalidrawElement[];
|
|
100
|
+
/** whether the last render had any renderable elements (excludes e.g. the
|
|
101
|
+
* in-progress `newElement` and the edited text element) */
|
|
102
|
+
private hasRenderableElements;
|
|
61
103
|
private resizeObserver;
|
|
62
104
|
library: AppClassProperties["library"];
|
|
63
105
|
libraryItemsFromStorage: LibraryItems | undefined;
|
|
64
106
|
id: string;
|
|
65
|
-
|
|
107
|
+
store: Store;
|
|
66
108
|
private history;
|
|
67
109
|
excalidrawContainerValue: {
|
|
68
110
|
container: HTMLDivElement | null;
|
|
@@ -81,13 +123,35 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
81
123
|
/** embeds that have been inserted to DOM (as a perf optim, we don't want to
|
|
82
124
|
* insert to DOM before user initially scrolls to them) */
|
|
83
125
|
private initializedEmbeds;
|
|
84
|
-
private handleToastClose;
|
|
85
126
|
private elementsPendingErasure;
|
|
86
|
-
|
|
87
|
-
private
|
|
127
|
+
private _initialized;
|
|
128
|
+
private readonly editorLifecycleEvents;
|
|
129
|
+
onEvent: AppEventBus<ExcalidrawImperativeAPIEventMap, typeof editorLifecycleEventBehavior>["on"];
|
|
130
|
+
private appStateObserver;
|
|
131
|
+
onStateChange: OnStateChange;
|
|
132
|
+
bucketFill: AppBucketFill;
|
|
133
|
+
duplicate: AppDuplicate;
|
|
134
|
+
toolDrag: AppToolDrag;
|
|
135
|
+
flowchart: AppFlowchart;
|
|
136
|
+
cursor: AppCursor;
|
|
137
|
+
arrowText: AppArrowText;
|
|
138
|
+
pan: AppPan;
|
|
139
|
+
textTool: AppTextTool;
|
|
140
|
+
clipboard: AppClipboard;
|
|
141
|
+
text: AppText;
|
|
142
|
+
viewport: AppViewport;
|
|
143
|
+
wheel: AppWheel;
|
|
144
|
+
selectionTool: AppSelectionTool;
|
|
88
145
|
bindModeHandler: ReturnType<typeof setTimeout> | null;
|
|
89
146
|
hitLinkElement?: NonDeletedExcalidrawElement;
|
|
90
147
|
lastPointerDownEvent: React.PointerEvent<HTMLElement> | null;
|
|
148
|
+
/**
|
|
149
|
+
* the handle of the resize in progress while `state.isResizing` — for UI
|
|
150
|
+
* that words itself by handle (a sticky note's corners resize
|
|
151
|
+
* proportionally, its edges freely); not app state, so it costs no
|
|
152
|
+
* re-render of its own
|
|
153
|
+
*/
|
|
154
|
+
activeResizeHandle: TransformHandleDirection | null;
|
|
91
155
|
lastPointerUpEvent: React.PointerEvent<HTMLElement> | PointerEvent | null;
|
|
92
156
|
lastPointerUpIsDoubleClick: boolean;
|
|
93
157
|
lastPointerMoveEvent: PointerEvent | null;
|
|
@@ -102,14 +166,11 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
102
166
|
x: number;
|
|
103
167
|
y: number;
|
|
104
168
|
} | null;
|
|
105
|
-
|
|
106
|
-
x: number;
|
|
107
|
-
y: number;
|
|
108
|
-
};
|
|
109
|
-
animationFrameHandler: AnimationFrameHandler;
|
|
169
|
+
drawShape: AppDrawShape;
|
|
110
170
|
laserTrails: LaserTrails;
|
|
111
171
|
eraserTrail: EraserTrail;
|
|
112
172
|
lassoTrail: LassoTrail;
|
|
173
|
+
cursorHints: CursorHints;
|
|
113
174
|
onChangeEmitter: Emitter<[elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles]>;
|
|
114
175
|
onPointerDownEmitter: Emitter<[activeTool: {
|
|
115
176
|
lastActiveTool: import("../types").ActiveTool | null;
|
|
@@ -147,8 +208,12 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
147
208
|
element: NonDeleted<ExcalidrawElement> | null;
|
|
148
209
|
allHitElements: NonDeleted<ExcalidrawElement>[];
|
|
149
210
|
wasAddedToSelection: boolean;
|
|
211
|
+
cycleTarget: NonDeleted<ExcalidrawElement> | null;
|
|
150
212
|
hasBeenDuplicated: boolean;
|
|
213
|
+
advancedListMarkers: readonly import("@excalidraw/element").ListMarkerAdvance[];
|
|
214
|
+
editedTextId: import("@excalidraw/element/types").ExcalidrawTextElement["id"] | null;
|
|
151
215
|
hasHitCommonBoundingBoxOfSelectedElements: boolean;
|
|
216
|
+
arrowLabel: boolean;
|
|
152
217
|
};
|
|
153
218
|
withCmdOrCtrl: boolean;
|
|
154
219
|
drag: {
|
|
@@ -209,8 +274,12 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
209
274
|
element: NonDeleted<ExcalidrawElement> | null;
|
|
210
275
|
allHitElements: NonDeleted<ExcalidrawElement>[];
|
|
211
276
|
wasAddedToSelection: boolean;
|
|
277
|
+
cycleTarget: NonDeleted<ExcalidrawElement> | null;
|
|
212
278
|
hasBeenDuplicated: boolean;
|
|
279
|
+
advancedListMarkers: readonly import("@excalidraw/element").ListMarkerAdvance[];
|
|
280
|
+
editedTextId: import("@excalidraw/element/types").ExcalidrawTextElement["id"] | null;
|
|
213
281
|
hasHitCommonBoundingBoxOfSelectedElements: boolean;
|
|
282
|
+
arrowLabel: boolean;
|
|
214
283
|
};
|
|
215
284
|
withCmdOrCtrl: boolean;
|
|
216
285
|
drag: {
|
|
@@ -241,7 +310,85 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
241
310
|
}>]>;
|
|
242
311
|
missingPointerEventCleanupEmitter: Emitter<[event: PointerEvent | null]>;
|
|
243
312
|
onRemoveEventListenersEmitter: Emitter<[]>;
|
|
313
|
+
modifiers: AppModifiers;
|
|
314
|
+
api: ExcalidrawImperativeAPI;
|
|
315
|
+
private elementRenderOverrides;
|
|
316
|
+
/** offsets of `elementRenderOverrides`; keeps its identity while they don't change */
|
|
317
|
+
private elementRenderOffsets;
|
|
318
|
+
private renderOverridesUpdatePending;
|
|
319
|
+
private getRenderOverrideConfig;
|
|
320
|
+
private getElementRenderState;
|
|
321
|
+
private createExcalidrawAPI;
|
|
244
322
|
constructor(props: AppProps);
|
|
323
|
+
/**
|
|
324
|
+
* Whether the editor accepts user input (pointer, keyboard, wheel, touch,
|
|
325
|
+
* clipboard, drag&drop). When `false`, the editor is fully inert for the
|
|
326
|
+
* user, but remains controllable through the imperative API.
|
|
327
|
+
*
|
|
328
|
+
* All user-input entry points must consult this getter (directly or by
|
|
329
|
+
* not being attached/rendered at all).
|
|
330
|
+
*/
|
|
331
|
+
isInteractionEnabled(props?: Pick<AppProps, "interaction">): boolean;
|
|
332
|
+
/**
|
|
333
|
+
* Whether element links render their link icon and are clickable.
|
|
334
|
+
* True when fully interactive, or when `interaction: { enabled: { links:
|
|
335
|
+
* true } }`
|
|
336
|
+
* (in which case clicking anywhere on a linked element opens the link,
|
|
337
|
+
* same as in view mode).
|
|
338
|
+
*/
|
|
339
|
+
isLinksEnabled(props?: Pick<AppProps, "interaction">): boolean;
|
|
340
|
+
/**
|
|
341
|
+
* Whether canvas navigation — panning & zooming, view-mode style — is
|
|
342
|
+
* enabled. True when fully interactive, or when `interaction: { enabled:
|
|
343
|
+
* { navigation: true } }`. Respects `appState.scrollConstraints`.
|
|
344
|
+
*/
|
|
345
|
+
isNavigationEnabled(props?: Pick<AppProps, "interaction">): boolean;
|
|
346
|
+
/**
|
|
347
|
+
* Whether embeddable & iframe elements are interactive (hover & click to
|
|
348
|
+
* activate, view-mode style). True when fully interactive, or when
|
|
349
|
+
* allowed via `interaction.enabled.embeds` / `.interactiveContent`.
|
|
350
|
+
*/
|
|
351
|
+
isEmbedsEnabled(props?: Pick<AppProps, "interaction">): boolean;
|
|
352
|
+
/**
|
|
353
|
+
* Whether the browser's own zoom (ctrl/cmd + wheel, pinch, keyboard
|
|
354
|
+
* shortcuts) stays available over the non-interactive editor.
|
|
355
|
+
* Prevented by default.
|
|
356
|
+
*/
|
|
357
|
+
isBrowserZoomEnabled(props?: Pick<AppProps, "interaction">): boolean;
|
|
358
|
+
/**
|
|
359
|
+
* Whether the tool can be activated & driven by user input. False when
|
|
360
|
+
* disabled via `UIOptions.tools`, or when the editor is non-interactive
|
|
361
|
+
* and the tool isn't kept user-driven via `interaction.enabled.tools`.
|
|
362
|
+
*
|
|
363
|
+
* (Once UI tool availability is split from input availability — e.g.
|
|
364
|
+
* `props.ui.tools` vs `interaction.disabled.tools` — the UI axis moves
|
|
365
|
+
* out into its own predicate.)
|
|
366
|
+
*
|
|
367
|
+
* We purposely widen the `tool` type so this helper can be called with
|
|
368
|
+
* any tool without having to type check it.
|
|
369
|
+
*/
|
|
370
|
+
isToolSupported: <T extends ToolType | "custom">(tool: T, props?: Pick<AppProps, "interaction" | "UIOptions">) => boolean;
|
|
371
|
+
/**
|
|
372
|
+
* Whether the active tool is locked in place — via the tool lock
|
|
373
|
+
* (padlock / Q) or by being host-forced (`props.activeTool`). A locked
|
|
374
|
+
* tool doesn't revert to the selection tool after use, and elements drawn
|
|
375
|
+
* with it aren't selected. Forcing deliberately does not mutate
|
|
376
|
+
* `activeTool.locked`, which is the user's persisted padlock preference.
|
|
377
|
+
*/
|
|
378
|
+
isToolLocked(): boolean;
|
|
379
|
+
/**
|
|
380
|
+
* Whether the active tool captures the primary pointer instead of the
|
|
381
|
+
* view-mode drag-to-pan — the laser and host-implemented custom tools do;
|
|
382
|
+
* while non-interactive, any tool allowed via
|
|
383
|
+
* `interaction.enabled.tools` does. (Editing tools capture the pointer
|
|
384
|
+
* trivially since view mode implies they're not active; this predicate only
|
|
385
|
+
* matters where view-mode gates apply.)
|
|
386
|
+
*/
|
|
387
|
+
isActiveToolPointerCapturing(): boolean;
|
|
388
|
+
/** Whether Excalidraw's full default UI is rendered. */
|
|
389
|
+
isDefaultUIEnabled(props?: Pick<AppProps, "ui">): boolean;
|
|
390
|
+
/** Whether an individual default UI control is rendered. */
|
|
391
|
+
isUIControlEnabled(control: keyof UIConfig["enabled"], props?: Pick<AppProps, "ui">): boolean;
|
|
245
392
|
updateEditorAtom: <Value, Args extends unknown[], Result>(atom: WritableAtom<Value, Args, Result>, ...args: Args) => Result;
|
|
246
393
|
setSessionExportThemeOverride(theme: AppState["theme"]): void;
|
|
247
394
|
private onWindowMessage;
|
|
@@ -255,8 +402,12 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
255
402
|
* If disabled, returns null.
|
|
256
403
|
*/
|
|
257
404
|
getEffectiveGridSize: () => NullableGridSize;
|
|
258
|
-
private getTextCreationGridPoint;
|
|
259
405
|
private getHTMLIFrameElement;
|
|
406
|
+
/**
|
|
407
|
+
* AI-generated iframe elements aren't interactive while their generation
|
|
408
|
+
* is still in progress (the partial content is render-only).
|
|
409
|
+
*/
|
|
410
|
+
private isIframeLikeInteractive;
|
|
260
411
|
private handleIframeLikeElementHover;
|
|
261
412
|
/** @returns true if iframe-like element click handled */
|
|
262
413
|
private handleIframeLikeCenterClick;
|
|
@@ -277,7 +428,7 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
277
428
|
getSceneElements: () => readonly Ordered<NonDeletedExcalidrawElement>[];
|
|
278
429
|
onInsertElements: (elements: readonly ExcalidrawElement[]) => void;
|
|
279
430
|
onExportImage: (type: keyof typeof EXPORT_IMAGE_TYPES, elements: ExportedElements, opts: {
|
|
280
|
-
exportingFrame: ExcalidrawFrameLikeElement | null;
|
|
431
|
+
exportingFrame: NonDeleted<ExcalidrawFrameLikeElement> | null;
|
|
281
432
|
}) => Promise<void>;
|
|
282
433
|
private magicGenerations;
|
|
283
434
|
private updateMagicGeneration;
|
|
@@ -293,9 +444,35 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
293
444
|
private openEyeDropper;
|
|
294
445
|
dismissLinearEditor: () => void;
|
|
295
446
|
syncActionResult: (actionResult: ActionResult) => void;
|
|
447
|
+
scheduleCapture: () => void;
|
|
296
448
|
private onBlur;
|
|
297
449
|
private onUnload;
|
|
298
450
|
private disableEvent;
|
|
451
|
+
private isFileDropEnabled;
|
|
452
|
+
private onDragOver;
|
|
453
|
+
private handleNavigationModeKeyDown;
|
|
454
|
+
/**
|
|
455
|
+
* PageUp/PageDown scroll the canvas by a page — vertically, or
|
|
456
|
+
* horizontally with shift. Respects `appState.scrollConstraints`
|
|
457
|
+
* (via `viewport.translate`).
|
|
458
|
+
*/
|
|
459
|
+
private maybeHandlePageScrollKeyDown;
|
|
460
|
+
private preventBrowserZoomKeyDown;
|
|
461
|
+
/** Ends active input sessions before switching to a view-mode/non-interactive
|
|
462
|
+
* mode. */
|
|
463
|
+
private terminateActiveInteraction;
|
|
464
|
+
private handleInteractionStateChange;
|
|
465
|
+
/** whether the two values reference the same tool (incl. custom subtype) */
|
|
466
|
+
private isSameForcedTool;
|
|
467
|
+
/**
|
|
468
|
+
* Keeps `state.activeTool` synced to the host-controlled
|
|
469
|
+
* `props.activeTool`. `setActiveTool` refuses non-matching activations
|
|
470
|
+
* while forced (user input, API); this backstop covers the writers that
|
|
471
|
+
* bypass the funnel (`actionFinalize`/`actionDeselect`, `restore()` on
|
|
472
|
+
* scene load, ...) and re-applies the tool once it becomes activatable
|
|
473
|
+
* (e.g. `interaction` config changes).
|
|
474
|
+
*/
|
|
475
|
+
private handleForcedToolChange;
|
|
299
476
|
private resetHistory;
|
|
300
477
|
private resetStore;
|
|
301
478
|
/**
|
|
@@ -317,16 +494,20 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
317
494
|
private onFullscreenChange;
|
|
318
495
|
private removeEventListeners;
|
|
319
496
|
private addEventListeners;
|
|
497
|
+
getSnapshotBeforeUpdate(prevProps: AppProps, prevState: AppState): null;
|
|
498
|
+
/**
|
|
499
|
+
* Flags the container while toggling zen mode so that UI chrome
|
|
500
|
+
* (backgrounds etc.) animates only then, and hover transitions stay
|
|
501
|
+
* instant. A data attribute so that React doesn't reset it on re-render.
|
|
502
|
+
*/
|
|
503
|
+
private markZenModeTransition;
|
|
504
|
+
private unmarkZenModeTransition;
|
|
320
505
|
componentDidUpdate(prevProps: AppProps, prevState: AppState): void;
|
|
321
506
|
private renderInteractiveSceneCallback;
|
|
322
507
|
private onScroll;
|
|
323
|
-
private onCut;
|
|
324
|
-
private onCopy;
|
|
325
508
|
private static resetTapTwice;
|
|
326
509
|
private onTouchStart;
|
|
327
510
|
private onTouchEnd;
|
|
328
|
-
private insertClipboardContent;
|
|
329
|
-
pasteFromClipboard: (event: ClipboardEvent) => Promise<void>;
|
|
330
511
|
addElementsFromPasteOrLibrary: (opts: {
|
|
331
512
|
elements: readonly ExcalidrawElement[];
|
|
332
513
|
files: BinaryFiles | null;
|
|
@@ -335,64 +516,25 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
335
516
|
clientY: number;
|
|
336
517
|
} | "cursor" | "center";
|
|
337
518
|
retainSeed?: boolean;
|
|
338
|
-
|
|
519
|
+
fit?: SetViewportOptions["fit"];
|
|
520
|
+
preserveFrameChildrenOrder?: boolean;
|
|
339
521
|
}) => void;
|
|
340
|
-
private addElementsFromMixedContentPaste;
|
|
341
|
-
private addTextFromPaste;
|
|
342
522
|
setAppState: React.Component<any, AppState>["setState"];
|
|
343
523
|
removePointer: (event: React.PointerEvent<HTMLElement> | PointerEvent) => void;
|
|
344
524
|
toggleLock: (source?: "keyboard" | "ui") => void;
|
|
345
525
|
updateFrameRendering: (opts: Partial<AppState["frameRendering"]> | ((prevState: AppState["frameRendering"]) => Partial<AppState["frameRendering"]>)) => void;
|
|
346
526
|
togglePenMode: (force: boolean | null) => void;
|
|
347
|
-
|
|
348
|
-
/**
|
|
349
|
-
*
|
|
350
|
-
*/
|
|
351
|
-
|
|
352
|
-
/**
|
|
353
|
-
*
|
|
354
|
-
*
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
private
|
|
358
|
-
scrollToContent: (
|
|
359
|
-
/**
|
|
360
|
-
* target to scroll to
|
|
361
|
-
*
|
|
362
|
-
* - string - id of element or group, or url containing elementLink
|
|
363
|
-
* - ExcalidrawElement | ExcalidrawElement[] - element(s) objects
|
|
364
|
-
*/
|
|
365
|
-
target?: string | ExcalidrawElement | readonly ExcalidrawElement[], opts?: ({
|
|
366
|
-
fitToContent?: boolean;
|
|
367
|
-
fitToViewport?: never;
|
|
368
|
-
viewportZoomFactor?: number;
|
|
369
|
-
animate?: boolean;
|
|
370
|
-
duration?: number;
|
|
371
|
-
} | {
|
|
372
|
-
fitToContent?: never;
|
|
373
|
-
fitToViewport?: boolean;
|
|
374
|
-
/** when fitToViewport=true, how much screen should the content cover,
|
|
375
|
-
* between 0.1 (10%) and 1 (100%)
|
|
376
|
-
*/
|
|
377
|
-
viewportZoomFactor?: number;
|
|
378
|
-
animate?: boolean;
|
|
379
|
-
duration?: number;
|
|
380
|
-
}) & {
|
|
381
|
-
minZoom?: number;
|
|
382
|
-
maxZoom?: number;
|
|
383
|
-
canvasOffsets?: Offsets;
|
|
384
|
-
}) => void;
|
|
385
|
-
private maybeUnfollowRemoteUser;
|
|
386
|
-
/** use when changing scrollX/scrollY/zoom based on user interaction */
|
|
387
|
-
private translateCanvas;
|
|
388
|
-
private debounceConstrainScrollState;
|
|
389
|
-
private animateToConstrainedArea;
|
|
390
|
-
private animateTranslateCanvas;
|
|
391
|
-
setToast: (toast: {
|
|
392
|
-
message: string;
|
|
393
|
-
closable?: boolean;
|
|
394
|
-
duration?: number;
|
|
395
|
-
} | null) => void;
|
|
527
|
+
revealIfHidden: (elements: NonDeletedExcalidrawElement[]) => void;
|
|
528
|
+
/** emits a follow/unfollow intent to the host (which owns the
|
|
529
|
+
* `userToFollow` state) via both the `onUserFollow` prop and the
|
|
530
|
+
* imperative API emitter */
|
|
531
|
+
emitUserFollowIntent: (payload: OnUserFollowedPayload) => void;
|
|
532
|
+
/** emits an UNFOLLOW intent if currently following someone — use on
|
|
533
|
+
* viewport changes that take the view over from the followed user (user
|
|
534
|
+
* pans and zooms, `setViewport` navigation) */
|
|
535
|
+
requestUnfollow: () => void;
|
|
536
|
+
setToast: (toast: AppState["toast"]) => void;
|
|
537
|
+
private showSceneReplacedToast;
|
|
396
538
|
restoreFileFromShare: () => Promise<void>;
|
|
397
539
|
/**
|
|
398
540
|
* adds supplied files to existing files in the appState.
|
|
@@ -417,9 +559,15 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
417
559
|
*/
|
|
418
560
|
captureUpdate?: SceneData["captureUpdate"];
|
|
419
561
|
}) => void;
|
|
562
|
+
/**
|
|
563
|
+
* see {@link ExcalidrawImperativeAPI.setElementRenderOverrides} for details
|
|
564
|
+
*/
|
|
565
|
+
setElementRenderOverrides: (overrides: ElementRenderOverrides | null) => void;
|
|
420
566
|
applyDeltas: (deltas: StoreDelta[], options?: ApplyToOptions) => [SceneElementsMap, AppState, boolean];
|
|
421
567
|
mutateElement: <TElement extends Mutable<ExcalidrawElement>>(element: TElement, updates: ElementUpdate<TElement>, informMutation?: boolean) => TElement;
|
|
422
|
-
|
|
568
|
+
triggerRender: (
|
|
569
|
+
/** force always re-renders canvas even if no change */
|
|
570
|
+
force?: boolean) => void;
|
|
423
571
|
/**
|
|
424
572
|
* @returns whether the menu was toggled on or off
|
|
425
573
|
*/
|
|
@@ -429,10 +577,8 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
429
577
|
force?: boolean;
|
|
430
578
|
}) => boolean;
|
|
431
579
|
private updateCurrentCursorPosition;
|
|
432
|
-
getEditorUIOffsets: () => Offsets;
|
|
433
580
|
private onKeyDown;
|
|
434
581
|
private onKeyUp;
|
|
435
|
-
private isToolSupported;
|
|
436
582
|
setActiveTool: (tool: ({
|
|
437
583
|
type: ToolType;
|
|
438
584
|
} | {
|
|
@@ -441,10 +587,18 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
441
587
|
}) & {
|
|
442
588
|
locked?: boolean;
|
|
443
589
|
fromSelection?: boolean;
|
|
444
|
-
},
|
|
590
|
+
}, opts?: {
|
|
591
|
+
keepSelection?: boolean;
|
|
592
|
+
/**
|
|
593
|
+
* When `true`, re-activating an already-active toggle tool (see
|
|
594
|
+
* `TOGGLE_TOOLS`) switches back to the previously active tool.
|
|
595
|
+
* Activation is idempotent by default; toggle tools always record the
|
|
596
|
+
* previously active tool regardless (so ESC and the next `toggle`
|
|
597
|
+
* activation can switch back to it).
|
|
598
|
+
*/
|
|
599
|
+
toggle?: boolean;
|
|
600
|
+
}) => void;
|
|
445
601
|
setOpenDialog: (dialogType: AppState["openDialog"]) => void;
|
|
446
|
-
private setCursor;
|
|
447
|
-
private resetCursor;
|
|
448
602
|
/**
|
|
449
603
|
* returns whether user is making a gesture with >= 2 fingers (points)
|
|
450
604
|
* on o touch screen (not on a trackpad). Currently only relates to Darwin
|
|
@@ -456,32 +610,94 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
456
610
|
private onGestureStart;
|
|
457
611
|
private onGestureChange;
|
|
458
612
|
private onGestureEnd;
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
613
|
+
deselectElements(): void;
|
|
614
|
+
getElementAtPosition(x: number, y: number, opts?: ({
|
|
615
|
+
includeBoundTextElement?: boolean;
|
|
616
|
+
includeLockedElements?: boolean;
|
|
617
|
+
} | {
|
|
618
|
+
allHitElements: NonDeleted<ExcalidrawElement>[];
|
|
619
|
+
}) & {
|
|
620
|
+
preferSelected?: boolean;
|
|
621
|
+
}): NonDeleted<ExcalidrawElement> | null;
|
|
622
|
+
getElementsAtPosition(x: number, y: number, opts?: {
|
|
623
|
+
includeBoundTextElement?: boolean;
|
|
624
|
+
includeLockedElements?: boolean;
|
|
625
|
+
}): NonDeleted<ExcalidrawElement>[];
|
|
626
|
+
/**
|
|
627
|
+
* Whether the element's frame clips it away at the position — hitting a
|
|
628
|
+
* frame's element from outside the frame is not considered a hit.
|
|
629
|
+
*/
|
|
630
|
+
isClippedByFrameAt(x: number, y: number, element: ExcalidrawElement): boolean;
|
|
468
631
|
getElementHitThreshold(element: ExcalidrawElement): number;
|
|
469
|
-
|
|
470
|
-
private getTextBindableContainerAtPosition;
|
|
471
|
-
private startTextEditing;
|
|
632
|
+
hitElement(x: number, y: number, element: NonDeletedExcalidrawElement, considerBoundingBox?: boolean): boolean;
|
|
472
633
|
private startImageCropping;
|
|
473
|
-
|
|
634
|
+
finishImageCropping: () => void;
|
|
474
635
|
private shouldHandleBrowserCanvasDoubleClick;
|
|
475
636
|
private handleCanvasDoubleClick;
|
|
476
637
|
private handleCanvasClick;
|
|
477
|
-
|
|
638
|
+
getElementLinkAtPosition: (scenePointer: Readonly<{
|
|
639
|
+
x: number;
|
|
640
|
+
y: number;
|
|
641
|
+
}>, hitElementMightBeLocked: NonDeletedExcalidrawElement | null) => NonDeletedExcalidrawElement | undefined;
|
|
478
642
|
private handleElementLinkClick;
|
|
479
|
-
|
|
643
|
+
/**
|
|
644
|
+
* Applies (or clears) the element-link hover affordances — pointer cursor
|
|
645
|
+
* and tooltip — based on the current `hitLinkElement`. Returns whether a
|
|
646
|
+
* link is being hovered.
|
|
647
|
+
*/
|
|
648
|
+
private applyElementLinkHoverAffordance;
|
|
649
|
+
/**
|
|
650
|
+
* On touchscreens (where no hover precedes the tap) re-derives
|
|
651
|
+
* `hitLinkElement`, then opens the hit element link, if any.
|
|
652
|
+
* Returns whether a link click was handled.
|
|
653
|
+
*/
|
|
654
|
+
private maybeHandleElementLinkClick;
|
|
655
|
+
/**
|
|
656
|
+
* Restricted pointer handling for the non-interactive editor with links
|
|
657
|
+
* and/or embeds allowed (`interaction.enabled.links` / `.embeds` /
|
|
658
|
+
* `.interactiveContent`) — runs only the element-link & embed concerns
|
|
659
|
+
* (shared with the full pointer handlers above) so they behave like in
|
|
660
|
+
* view mode without the rest of the canvas pointer machinery.
|
|
661
|
+
*/
|
|
662
|
+
private handleInteractiveContentPointerMove;
|
|
663
|
+
private handleInteractiveContentPointerUp;
|
|
664
|
+
/**
|
|
665
|
+
* finds candidate frame under cursor (when dragging frame children/elements
|
|
666
|
+
* inside frames)
|
|
667
|
+
*/
|
|
668
|
+
getTopLayerFrameAtSceneCoords: (
|
|
669
|
+
/**
|
|
670
|
+
* should be already grid aligned (basically should be what the call site
|
|
671
|
+
* sets the element's coords to, if applicable)
|
|
672
|
+
*/
|
|
673
|
+
sceneCoords: {
|
|
674
|
+
x: number;
|
|
675
|
+
y: number;
|
|
676
|
+
}, opts?: {
|
|
677
|
+
/** to exclude selected elements when dragging, etc. */
|
|
678
|
+
excludeElementIds?: AppState["selectedElementIds"];
|
|
679
|
+
currentFrameId?: ExcalidrawElement["frameId"];
|
|
680
|
+
}) => NonDeleted<ExcalidrawFrameLikeElement> | null;
|
|
681
|
+
private updateFrameToHighlight;
|
|
682
|
+
private maybeUpdateFrameToHighlightOnPointerMove;
|
|
683
|
+
insertNewElements: (elements: readonly ExcalidrawElement[]) => void;
|
|
684
|
+
insertNewElement: (element: ExcalidrawElement) => void;
|
|
480
685
|
private handleCanvasPointerMove;
|
|
481
686
|
private handleEraser;
|
|
482
687
|
private handleTouchMove;
|
|
688
|
+
/**
|
|
689
|
+
* Applies the hover affordances of a selected linear element: the cursor,
|
|
690
|
+
* plus the hovered-handle state that renders them highlighted.
|
|
691
|
+
*/
|
|
483
692
|
handleHoverSelectedLinearElement(linearElementEditor: LinearElementEditor, scenePointerX: number, scenePointerY: number): void;
|
|
484
693
|
private handleCanvasPointerDown;
|
|
694
|
+
/**
|
|
695
|
+
* The browser took the pointer over (scroll, pinch, palm rejection): no
|
|
696
|
+
* pointerup will follow, so the gesture is torn down here and now — the
|
|
697
|
+
* same cleanup a lost pointerup gets at the next press, only not left
|
|
698
|
+
* lying in wait for it, where its replay would tangle with that press.
|
|
699
|
+
*/
|
|
700
|
+
private handleCanvasPointerCancel;
|
|
485
701
|
private handleCanvasPointerUp;
|
|
486
702
|
private maybeOpenContextMenuAfterPointerDownOnTouchDevices;
|
|
487
703
|
private resetContextMenuTimer;
|
|
@@ -491,18 +707,14 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
491
707
|
* pointerup handlers manually
|
|
492
708
|
*/
|
|
493
709
|
private maybeCleanupAfterMissingPointerUp;
|
|
494
|
-
handleCanvasPanUsingWheelOrSpaceDrag: (event: React.PointerEvent<HTMLElement> | MouseEvent) => boolean;
|
|
495
710
|
private updateGestureOnPointerDown;
|
|
496
|
-
private initialPointerDownState;
|
|
497
|
-
private handleDraggingScrollBar;
|
|
498
|
-
private clearSelectionIfNotUsingSelection;
|
|
499
711
|
/**
|
|
500
|
-
*
|
|
712
|
+
* Tracks the pointer within the ongoing multi-touch gesture and applies
|
|
713
|
+
* the two-finger pinch zoom/pan, if any.
|
|
501
714
|
*/
|
|
502
|
-
private
|
|
503
|
-
private
|
|
504
|
-
private
|
|
505
|
-
private handleTextOnPointerDown;
|
|
715
|
+
private updateMultiTouchGesture;
|
|
716
|
+
private initialPointerDownState;
|
|
717
|
+
private handleDraggingScrollBar;
|
|
506
718
|
private handleFreeDrawElementOnPointerDown;
|
|
507
719
|
insertIframeElement: ({ sceneX, sceneY, width, height, }: {
|
|
508
720
|
sceneX: number;
|
|
@@ -517,11 +729,14 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
517
729
|
}) => NonDeleted<ExcalidrawEmbeddableElement> | undefined;
|
|
518
730
|
private newImagePlaceholder;
|
|
519
731
|
private handleLinearElementOnPointerDown;
|
|
520
|
-
|
|
732
|
+
getCurrentItemRoundness(elementType: "selection" | "rectangle" | "stickynote" | "diamond" | "ellipse" | "iframe" | "embeddable"): {
|
|
733
|
+
type: 2 | 3;
|
|
734
|
+
} | null;
|
|
735
|
+
getCurrentItemStrokeWidth(elementType: ExcalidrawElement["type"]): number;
|
|
521
736
|
private createGenericElementOnPointerDown;
|
|
522
737
|
private createFrameElementOnPointerDown;
|
|
523
|
-
|
|
524
|
-
|
|
738
|
+
maybeCacheReferenceSnapPoints(event: KeyboardModifiersObject, selectedElements: readonly NonDeletedExcalidrawElement[], recomputeAnyways?: boolean): void;
|
|
739
|
+
maybeCacheVisibleGaps(event: KeyboardModifiersObject, selectedElements: readonly NonDeletedExcalidrawElement[], recomputeAnyways?: boolean): void;
|
|
525
740
|
private onKeyDownFromPointerDownHandler;
|
|
526
741
|
private onKeyUpFromPointerDownHandler;
|
|
527
742
|
private onPointerMoveFromPointerDownHandler;
|
|
@@ -546,31 +761,35 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
546
761
|
/** generally you should use `addNewImagesToImageCache()` directly if you need
|
|
547
762
|
* to render new images. This is just a failsafe */
|
|
548
763
|
private scheduleImageRefresh;
|
|
549
|
-
private clearSelection;
|
|
550
764
|
private handleInteractiveCanvasRef;
|
|
551
|
-
|
|
765
|
+
insertImages: (imageFiles: File[], sceneX: number, sceneY: number) => Promise<void>;
|
|
552
766
|
private handleAppOnDrop;
|
|
553
|
-
|
|
767
|
+
/** @returns true if the file replaced the scene */
|
|
768
|
+
loadFileToCanvas: (file: File, fileHandle: FileSystemFileHandle | null, insertPosition?: {
|
|
769
|
+
clientX: number;
|
|
770
|
+
clientY: number;
|
|
771
|
+
}) => Promise<true | undefined>;
|
|
554
772
|
private handleCanvasContextMenu;
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
773
|
+
/** opens the context menu for the element under the pointer, or the canvas */
|
|
774
|
+
openContextMenu: (pointer: {
|
|
775
|
+
clientX: number;
|
|
776
|
+
clientY: number;
|
|
777
|
+
button?: number;
|
|
778
|
+
pointerType?: string;
|
|
779
|
+
}) => void;
|
|
780
|
+
maybeDragNewGenericElement: (pointerDownState: PointerDownState, event: MouseEvent | KeyboardEvent, informMutation?: boolean) => void;
|
|
558
781
|
private getContextMenuItems;
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
782
|
+
savePointer: (x: number, y: number, button: "up" | "down") => void;
|
|
783
|
+
resetShouldCacheIgnoreZoomDebounced: {
|
|
784
|
+
(): void;
|
|
785
|
+
flush(): void;
|
|
786
|
+
cancel(): void;
|
|
787
|
+
};
|
|
563
788
|
private updateDOMRect;
|
|
564
789
|
refresh: () => void;
|
|
565
790
|
private getCanvasOffsets;
|
|
566
791
|
watchState: () => void;
|
|
567
792
|
private updateLanguage;
|
|
568
|
-
/**
|
|
569
|
-
* Sets the scroll constraints of the application state.
|
|
570
|
-
*
|
|
571
|
-
* @param scrollConstraints - The new scroll constraints.
|
|
572
|
-
*/
|
|
573
|
-
setScrollConstraints: (scrollConstraints: ScrollConstraints | null) => void;
|
|
574
793
|
}
|
|
575
794
|
declare global {
|
|
576
795
|
interface Window {
|