@excalidraw/excalidraw 0.18.0-508de2f3a → 0.18.0-51ad895
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/{chunk-BVDPDK7J.js → chunk-CP5DND7P.js} +2 -2
- package/dist/dev/{chunk-BVDPDK7J.js.map → chunk-CP5DND7P.js.map} +1 -1
- package/dist/dev/{chunk-QF5FRM6O.js → chunk-OCFTI2BU.js} +49 -26
- package/dist/dev/chunk-OCFTI2BU.js.map +7 -0
- package/dist/dev/{chunk-3JWCK6AW.js → chunk-SJTAY27F.js} +164 -376
- package/dist/dev/chunk-SJTAY27F.js.map +7 -0
- package/dist/dev/chunk-WCM2OLWY.js +69 -0
- package/dist/dev/chunk-WCM2OLWY.js.map +7 -0
- package/dist/dev/data/{image-CNYZRAWA.js → image-S2GFZH7W.js} +3 -3
- package/dist/dev/index.css +1107 -665
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +10020 -6943
- package/dist/dev/index.js.map +4 -4
- package/dist/dev/locales/{ar-SA-XORAP2EK.js → ar-SA-JK5MQ7TT.js} +300 -142
- package/dist/dev/locales/ar-SA-JK5MQ7TT.js.map +7 -0
- package/dist/dev/locales/{az-AZ-NAUU3Z4Y.js → az-AZ-2PAD62G4.js} +241 -83
- package/dist/dev/locales/az-AZ-2PAD62G4.js.map +7 -0
- package/dist/dev/locales/{bg-BG-AAABLFCY.js → bg-BG-HUKVYCRK.js} +229 -71
- package/dist/dev/locales/bg-BG-HUKVYCRK.js.map +7 -0
- package/dist/dev/locales/{bn-BD-PM4AC5WG.js → bn-BD-V2CQI46P.js} +209 -51
- package/dist/dev/locales/bn-BD-V2CQI46P.js.map +7 -0
- package/dist/dev/locales/bn-IN-MBEO4C3J.js +744 -0
- package/dist/dev/locales/bn-IN-MBEO4C3J.js.map +7 -0
- package/dist/dev/locales/{ca-ES-YNNMFRQX.js → ca-ES-KWEKW4C3.js} +275 -117
- package/dist/dev/locales/ca-ES-KWEKW4C3.js.map +7 -0
- package/dist/dev/locales/{cs-CZ-DGZA5IKG.js → cs-CZ-W5AHZB5H.js} +229 -71
- package/dist/dev/locales/cs-CZ-W5AHZB5H.js.map +7 -0
- package/dist/dev/locales/{da-DK-N76F4QAJ.js → da-DK-ITTM6YM4.js} +298 -140
- package/dist/dev/locales/da-DK-ITTM6YM4.js.map +7 -0
- package/dist/dev/locales/de-CH-OAWPDQFJ.js +744 -0
- package/dist/dev/locales/de-CH-OAWPDQFJ.js.map +7 -0
- package/dist/dev/locales/{de-DE-DMRXZ2SZ.js → de-DE-HE4SJIAA.js} +199 -41
- package/dist/dev/locales/de-DE-HE4SJIAA.js.map +7 -0
- package/dist/dev/locales/{el-GR-HIKPLEXI.js → el-GR-QXASZLPE.js} +274 -116
- package/dist/dev/locales/el-GR-QXASZLPE.js.map +7 -0
- package/dist/dev/locales/{en-SMAPCEOQ.js → en-MLZIHOCR.js} +4 -2
- package/dist/dev/locales/{es-ES-AQYVXC32.js → es-ES-EDA76ZAF.js} +212 -54
- package/dist/dev/locales/es-ES-EDA76ZAF.js.map +7 -0
- package/dist/dev/locales/{eu-ES-3TOEU5DE.js → eu-ES-TF2DGTZU.js} +210 -52
- package/dist/dev/locales/eu-ES-TF2DGTZU.js.map +7 -0
- package/dist/dev/locales/{fa-IR-527GAKUP.js → fa-IR-ITKFQ7QV.js} +286 -128
- package/dist/dev/locales/fa-IR-ITKFQ7QV.js.map +7 -0
- package/dist/dev/locales/{fi-FI-M3WLVDFP.js → fi-FI-UWZRVXFI.js} +240 -82
- package/dist/dev/locales/fi-FI-UWZRVXFI.js.map +7 -0
- package/dist/dev/locales/{fr-FR-YE4VDJFI.js → fr-FR-Z3SBW42Y.js} +203 -45
- package/dist/dev/locales/fr-FR-Z3SBW42Y.js.map +7 -0
- package/dist/dev/locales/{gl-ES-KMXUYGUN.js → gl-ES-2QCVIBFP.js} +212 -54
- package/dist/dev/locales/gl-ES-2QCVIBFP.js.map +7 -0
- package/dist/dev/locales/he-IL-WJNUHU26.js +744 -0
- package/dist/dev/locales/he-IL-WJNUHU26.js.map +7 -0
- package/dist/dev/locales/hi-IN-XGMO235V.js +744 -0
- package/dist/dev/locales/hi-IN-XGMO235V.js.map +7 -0
- package/dist/dev/locales/{hu-HU-VIYZI3X4.js → hu-HU-37FDQFIS.js} +238 -80
- package/dist/dev/locales/hu-HU-37FDQFIS.js.map +7 -0
- package/dist/dev/locales/{id-ID-22TWZNLA.js → id-ID-EJIDCO4E.js} +245 -87
- package/dist/dev/locales/id-ID-EJIDCO4E.js.map +7 -0
- package/dist/dev/locales/{it-IT-MDEQ2SG3.js → it-IT-HD26UZNF.js} +202 -44
- package/dist/dev/locales/it-IT-HD26UZNF.js.map +7 -0
- package/dist/dev/locales/{ja-JP-K2DI4W6B.js → ja-JP-37FC23PR.js} +247 -89
- package/dist/dev/locales/ja-JP-37FC23PR.js.map +7 -0
- package/dist/dev/locales/{kaa-6BPSNM3R.js → kaa-7ZYDFVKA.js} +202 -44
- package/dist/dev/locales/kaa-7ZYDFVKA.js.map +7 -0
- package/dist/dev/locales/{kab-KAB-2S7ZURK7.js → kab-KAB-MILWXBA6.js} +210 -52
- package/dist/dev/locales/kab-KAB-MILWXBA6.js.map +7 -0
- package/dist/dev/locales/{kk-KZ-UJPYGRQQ.js → kk-KZ-7BWTPIAV.js} +175 -17
- package/dist/dev/locales/kk-KZ-7BWTPIAV.js.map +7 -0
- package/dist/dev/locales/{km-KH-M5T5JKUE.js → km-KH-BV4P2KSZ.js} +198 -40
- package/dist/dev/locales/km-KH-BV4P2KSZ.js.map +7 -0
- package/dist/dev/locales/{ko-KR-RQX37SNF.js → ko-KR-TSXE5P7B.js} +218 -60
- package/dist/dev/locales/ko-KR-TSXE5P7B.js.map +7 -0
- package/dist/dev/locales/{ku-TR-5XJDIERL.js → ku-TR-ASSXNN3U.js} +198 -40
- package/dist/dev/locales/ku-TR-ASSXNN3U.js.map +7 -0
- package/dist/dev/locales/{lt-LT-MGUBX6CA.js → lt-LT-G7RZYQQU.js} +179 -21
- package/dist/dev/locales/lt-LT-G7RZYQQU.js.map +7 -0
- package/dist/dev/locales/{lv-LV-MD7N5VHD.js → lv-LV-DXNPBJZU.js} +196 -38
- package/dist/dev/locales/lv-LV-DXNPBJZU.js.map +7 -0
- package/dist/dev/locales/{mr-IN-4XWMNGQC.js → mr-IN-7F2ZCTCF.js} +204 -46
- package/dist/dev/locales/mr-IN-7F2ZCTCF.js.map +7 -0
- package/dist/dev/locales/{my-MM-O4Z74GN5.js → my-MM-NBI3KQGW.js} +181 -23
- package/dist/dev/locales/my-MM-NBI3KQGW.js.map +7 -0
- package/dist/dev/locales/{nb-NO-BMB73KRH.js → nb-NO-4DCTQT6L.js} +220 -62
- package/dist/dev/locales/nb-NO-4DCTQT6L.js.map +7 -0
- package/dist/dev/locales/{nl-NL-F2257BLQ.js → nl-NL-RCSOXLW3.js} +218 -60
- package/dist/dev/locales/nl-NL-RCSOXLW3.js.map +7 -0
- package/dist/dev/locales/{nn-NO-NCORG7TS.js → nn-NO-FR534JV5.js} +201 -43
- package/dist/dev/locales/nn-NO-FR534JV5.js.map +7 -0
- package/dist/dev/locales/{oc-FR-ATFBDMF6.js → oc-FR-YQCIKZIK.js} +220 -62
- package/dist/dev/locales/oc-FR-YQCIKZIK.js.map +7 -0
- package/dist/dev/locales/{pa-IN-D2I375G4.js → pa-IN-UM43JGD2.js} +190 -32
- package/dist/dev/locales/pa-IN-UM43JGD2.js.map +7 -0
- package/dist/dev/locales/{percentages-YKFLWNK2.js → percentages-TR7IWPFY.js} +2 -2
- package/dist/dev/locales/{pl-PL-YJHOWAAW.js → pl-PL-2UGKA6HK.js} +214 -56
- package/dist/dev/locales/pl-PL-2UGKA6HK.js.map +7 -0
- package/dist/dev/locales/{pt-BR-APOPYZJ7.js → pt-BR-H23QFYE3.js} +237 -79
- package/dist/dev/locales/pt-BR-H23QFYE3.js.map +7 -0
- package/dist/dev/locales/pt-PT-RHKJH5I5.js +744 -0
- package/dist/dev/locales/pt-PT-RHKJH5I5.js.map +7 -0
- package/dist/dev/locales/{ro-RO-L575VRQA.js → ro-RO-IIFONL3T.js} +203 -45
- package/dist/dev/locales/ro-RO-IIFONL3T.js.map +7 -0
- package/dist/dev/locales/{ru-RU-BLG6HZG5.js → ru-RU-QEP6D7GK.js} +253 -95
- package/dist/dev/locales/ru-RU-QEP6D7GK.js.map +7 -0
- package/dist/dev/locales/si-LK-LZYJQLHF.js +744 -0
- package/dist/dev/locales/si-LK-LZYJQLHF.js.map +7 -0
- package/dist/dev/locales/{sk-SK-DY6IPO5U.js → sk-SK-G2J6PSCB.js} +200 -42
- package/dist/dev/locales/sk-SK-G2J6PSCB.js.map +7 -0
- package/dist/dev/locales/{sl-SI-5DZSRA47.js → sl-SI-QJT2CAUO.js} +197 -39
- package/dist/dev/locales/sl-SI-QJT2CAUO.js.map +7 -0
- package/dist/dev/locales/{sv-SE-V32YHALQ.js → sv-SE-3MAT3NDX.js} +202 -44
- package/dist/dev/locales/sv-SE-3MAT3NDX.js.map +7 -0
- package/dist/dev/locales/{ta-IN-5JRAGQAO.js → ta-IN-J7XOYF2T.js} +257 -99
- package/dist/dev/locales/ta-IN-J7XOYF2T.js.map +7 -0
- package/dist/dev/locales/{th-TH-55ACRHDJ.js → th-TH-2OI52EOQ.js} +289 -131
- package/dist/dev/locales/th-TH-2OI52EOQ.js.map +7 -0
- package/dist/dev/locales/{tr-TR-7QYBXDBO.js → tr-TR-G7TAUHUI.js} +257 -99
- package/dist/dev/locales/tr-TR-G7TAUHUI.js.map +7 -0
- package/dist/dev/locales/{uk-UA-TJS2TMRH.js → uk-UA-IVSVBJIG.js} +229 -71
- package/dist/dev/locales/uk-UA-IVSVBJIG.js.map +7 -0
- package/dist/dev/locales/{si-LK-KT7GGO6D.js → uz-UZ-KCVDUVDE.js} +212 -54
- package/dist/dev/locales/uz-UZ-KCVDUVDE.js.map +7 -0
- package/dist/dev/locales/vi-VN-XF3AYKJ7.js +744 -0
- package/dist/dev/locales/vi-VN-XF3AYKJ7.js.map +7 -0
- package/dist/dev/locales/{zh-CN-4MXUOFTH.js → zh-CN-IS26RG2D.js} +199 -41
- package/dist/dev/locales/zh-CN-IS26RG2D.js.map +7 -0
- package/dist/dev/locales/{zh-HK-RBTGIU3U.js → zh-HK-KBWQ6SJC.js} +175 -17
- package/dist/dev/locales/zh-HK-KBWQ6SJC.js.map +7 -0
- package/dist/dev/locales/{zh-TW-U5VF4CCU.js → zh-TW-JKJWJQ4J.js} +204 -46
- package/dist/dev/locales/zh-TW-JKJWJQ4J.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-XRPJNYI4.js → chunk-A66AFZZU.js} +1 -1
- package/dist/prod/chunk-Q7BNPSJU.js +1 -0
- package/dist/prod/chunk-QNG5NH6R.js +12 -0
- package/dist/prod/chunk-XJNFOLHK.js +4 -0
- package/dist/prod/data/image-SMWA6JLH.js +1 -0
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +23 -23
- package/dist/prod/locales/ar-SA-IYHKZRSE.js +8 -0
- package/dist/prod/locales/az-AZ-WL5GYRHK.js +1 -0
- package/dist/prod/locales/bg-BG-FXZYTRPD.js +5 -0
- package/dist/prod/locales/bn-BD-KO6YL5G2.js +3 -0
- package/dist/prod/locales/bn-IN-PC6JHKYB.js +3 -0
- package/dist/prod/locales/ca-ES-AREX5NEO.js +8 -0
- package/dist/prod/locales/cs-CZ-HXAZMFYH.js +7 -0
- package/dist/prod/locales/da-DK-5X7ZLFU3.js +2 -0
- package/dist/prod/locales/de-CH-76ZNVSOF.js +7 -0
- package/dist/prod/locales/de-DE-KU2ABQRN.js +7 -0
- package/dist/prod/locales/el-GR-4AZTZGY6.js +7 -0
- package/dist/prod/locales/en-BARVNJLJ.js +1 -0
- package/dist/prod/locales/es-ES-MXQVAWTQ.js +7 -0
- package/dist/prod/locales/eu-ES-BIF4XBMT.js +7 -0
- package/dist/prod/locales/fa-IR-D4HHKAAI.js +9 -0
- package/dist/prod/locales/fi-FI-O35ZY7UI.js +6 -0
- package/dist/prod/locales/fr-FR-PJOMXPCV.js +12 -0
- package/dist/prod/locales/gl-ES-U4NYM3X5.js +6 -0
- package/dist/prod/locales/he-IL-656ABAVQ.js +8 -0
- package/dist/prod/locales/hi-IN-Z55GAFFR.js +3 -0
- package/dist/prod/locales/hu-HU-UJ62DVIW.js +3 -0
- package/dist/prod/locales/id-ID-FLZFU3OO.js +8 -0
- package/dist/prod/locales/it-IT-DQZT3VFE.js +12 -0
- package/dist/prod/locales/ja-JP-43VXGDWI.js +7 -0
- package/dist/prod/locales/kaa-L3IMSDYL.js +1 -0
- package/dist/prod/locales/kab-KAB-XKPWJLNL.js +4 -0
- package/dist/prod/locales/kk-KZ-SXPDDY2H.js +1 -0
- package/dist/prod/locales/km-KH-DOS4CPGC.js +7 -0
- package/dist/prod/locales/ko-KR-BGC6VCY4.js +5 -0
- package/dist/prod/locales/ku-TR-J7IUITIA.js +6 -0
- package/dist/prod/locales/lt-LT-AC3LV5KG.js +3 -0
- package/dist/prod/locales/lv-LV-I6AY7QG2.js +4 -0
- package/dist/prod/locales/mr-IN-5SP4HV5B.js +9 -0
- package/dist/prod/locales/my-MM-S7ECRBYZ.js +1 -0
- package/dist/prod/locales/nb-NO-6PNHTF4R.js +8 -0
- package/dist/prod/locales/nl-NL-AVTAYVB7.js +7 -0
- package/dist/prod/locales/nn-NO-3TFXTM7Y.js +4 -0
- package/dist/prod/locales/oc-FR-IK6GIE7H.js +4 -0
- package/dist/prod/locales/pa-IN-YAKHYJET.js +4 -0
- package/dist/prod/locales/percentages-FZSTHYWV.js +1 -0
- package/dist/prod/locales/pl-PL-BIY22ZWU.js +12 -0
- package/dist/prod/locales/pt-BR-Q23NUPD6.js +6 -0
- package/dist/prod/locales/pt-PT-LOPEJLPJ.js +8 -0
- package/dist/prod/locales/ro-RO-W3D2ZATV.js +12 -0
- package/dist/prod/locales/ru-RU-DCTW7QSH.js +10 -0
- package/dist/prod/locales/si-LK-FYRRHO3C.js +1 -0
- package/dist/prod/locales/sk-SK-2KAMKFW5.js +7 -0
- package/dist/prod/locales/sl-SI-L6B6HFY5.js +6 -0
- package/dist/prod/locales/sv-SE-KMY6L2BA.js +8 -0
- package/dist/prod/locales/ta-IN-ZQCYE2JK.js +6 -0
- package/dist/prod/locales/th-TH-WS7ECBAV.js +1 -0
- package/dist/prod/locales/tr-TR-S5FI7JRW.js +4 -0
- package/dist/prod/locales/uk-UA-4EZUWUSQ.js +6 -0
- package/dist/prod/locales/uz-UZ-OKHL6AFA.js +1 -0
- package/dist/prod/locales/vi-VN-I6Q2YS4S.js +7 -0
- package/dist/prod/locales/zh-CN-JE4UZWNO.js +11 -0
- package/dist/prod/locales/zh-HK-RM35YDXX.js +1 -0
- package/dist/prod/locales/zh-TW-ONGLV6Y5.js +9 -0
- package/dist/prod/subset-shared.chunk.js +1 -1
- package/dist/prod/subset-worker.chunk.js +1 -1
- package/dist/types/common/src/constants.d.ts +20 -15
- package/dist/types/common/src/editorInterface.d.ts +34 -0
- package/dist/types/common/src/index.d.ts +2 -0
- package/dist/types/common/src/utils.d.ts +9 -3
- package/dist/types/common/src/visualdebug.d.ts +41 -0
- package/dist/types/element/src/binding.d.ts +55 -43
- package/dist/types/element/src/bounds.d.ts +1 -1
- package/dist/types/element/src/collision.d.ts +6 -2
- package/dist/types/element/src/delta.d.ts +4 -5
- package/dist/types/element/src/index.d.ts +1 -3
- package/dist/types/element/src/linearElementEditor.d.ts +15 -18
- package/dist/types/element/src/mutateElement.d.ts +0 -1
- package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
- package/dist/types/element/src/renderElement.d.ts +5 -2
- package/dist/types/element/src/resizeTest.d.ts +5 -4
- package/dist/types/element/src/store.d.ts +5 -0
- package/dist/types/element/src/textElement.d.ts +1 -1
- package/dist/types/element/src/transformHandles.d.ts +5 -4
- package/dist/types/element/src/typeChecks.d.ts +2 -3
- package/dist/types/element/src/types.d.ts +7 -11
- package/dist/types/element/src/utils.d.ts +2 -1
- package/dist/types/element/src/zindex.d.ts +7 -1
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +34 -13
- package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +25 -11
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +153 -262
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +46 -773
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +12 -5
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +42 -23
- package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -2
- package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -2
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +11 -6
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +23 -9
- package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +12 -5
- package/dist/types/excalidraw/actions/actionExport.d.ts +68 -943
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -393
- package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -2
- package/dist/types/excalidraw/actions/actionFrame.d.ts +50 -24
- package/dist/types/excalidraw/actions/actionGroup.d.ts +24 -10
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +22 -19
- package/dist/types/excalidraw/actions/actionLink.d.ts +9 -2
- package/dist/types/excalidraw/actions/actionMenu.d.ts +10 -371
- package/dist/types/excalidraw/actions/actionNavigate.d.ts +21 -359
- package/dist/types/excalidraw/actions/actionProperties.d.ts +87 -2403
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +12 -5
- package/dist/types/excalidraw/actions/actionStyles.d.ts +13 -6
- package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +11 -4
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +11 -4
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +10 -5
- package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +11 -4
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +11 -4
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +12 -5
- package/dist/types/excalidraw/actions/actionZindex.d.ts +2 -2
- package/dist/types/excalidraw/actions/index.d.ts +2 -2
- package/dist/types/excalidraw/actions/manager.d.ts +1 -1
- package/dist/types/excalidraw/actions/register.d.ts +1 -1
- package/dist/types/excalidraw/actions/types.d.ts +4 -4
- package/dist/types/excalidraw/appState.d.ts +9 -4
- package/dist/types/excalidraw/clipboard.d.ts +64 -1
- package/dist/types/excalidraw/components/Actions.d.ts +21 -4
- package/dist/types/excalidraw/components/App.d.ts +36 -27
- package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
- package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
- package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
- package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
- package/dist/types/excalidraw/components/CommandPalette/types.d.ts +1 -2
- package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +1 -1
- package/dist/types/excalidraw/components/FilledButton.d.ts +1 -1
- package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
- package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
- package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
- package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
- package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
- package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
- package/dist/types/excalidraw/components/LinkButton.d.ts +4 -0
- package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
- package/dist/types/excalidraw/components/MobileToolBar.d.ts +11 -0
- package/dist/types/excalidraw/components/Popover.d.ts +2 -1
- package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -0
- package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -2
- package/dist/types/excalidraw/components/TextField.d.ts +1 -0
- package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
- package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +6 -3
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +4 -2
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +2 -1
- package/dist/types/excalidraw/components/icons.d.ts +10 -0
- package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +13 -1
- package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +0 -3
- package/dist/types/excalidraw/components/shapes.d.ts +129 -1
- package/dist/types/excalidraw/data/blob.d.ts +3 -7
- package/dist/types/excalidraw/data/restore.d.ts +3 -3
- package/dist/types/excalidraw/data/types.d.ts +4 -1
- package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
- package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +3 -1
- package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
- package/dist/types/excalidraw/index.d.ts +2 -3
- package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
- package/dist/types/excalidraw/renderer/helpers.d.ts +1 -5
- package/dist/types/excalidraw/renderer/interactiveScene.d.ts +5 -13
- package/dist/types/excalidraw/scene/types.d.ts +15 -3
- package/dist/types/excalidraw/shortcut.d.ts +1 -0
- package/dist/types/excalidraw/types.d.ts +32 -21
- package/dist/types/math/src/segment.d.ts +1 -0
- package/package.json +6 -6
- package/dist/dev/chunk-3JWCK6AW.js.map +0 -7
- package/dist/dev/chunk-MFAYKRVR.js +0 -66
- package/dist/dev/chunk-MFAYKRVR.js.map +0 -7
- package/dist/dev/chunk-QF5FRM6O.js.map +0 -7
- package/dist/dev/locales/ar-SA-XORAP2EK.js.map +0 -7
- package/dist/dev/locales/az-AZ-NAUU3Z4Y.js.map +0 -7
- package/dist/dev/locales/bg-BG-AAABLFCY.js.map +0 -7
- package/dist/dev/locales/bn-BD-PM4AC5WG.js.map +0 -7
- package/dist/dev/locales/ca-ES-YNNMFRQX.js.map +0 -7
- package/dist/dev/locales/cs-CZ-DGZA5IKG.js.map +0 -7
- package/dist/dev/locales/da-DK-N76F4QAJ.js.map +0 -7
- package/dist/dev/locales/de-DE-DMRXZ2SZ.js.map +0 -7
- package/dist/dev/locales/el-GR-HIKPLEXI.js.map +0 -7
- package/dist/dev/locales/es-ES-AQYVXC32.js.map +0 -7
- package/dist/dev/locales/eu-ES-3TOEU5DE.js.map +0 -7
- package/dist/dev/locales/fa-IR-527GAKUP.js.map +0 -7
- package/dist/dev/locales/fi-FI-M3WLVDFP.js.map +0 -7
- package/dist/dev/locales/fr-FR-YE4VDJFI.js.map +0 -7
- package/dist/dev/locales/gl-ES-KMXUYGUN.js.map +0 -7
- package/dist/dev/locales/he-IL-4MU5N22B.js +0 -586
- package/dist/dev/locales/he-IL-4MU5N22B.js.map +0 -7
- package/dist/dev/locales/hi-IN-ZHZNZWFC.js +0 -586
- package/dist/dev/locales/hi-IN-ZHZNZWFC.js.map +0 -7
- package/dist/dev/locales/hu-HU-VIYZI3X4.js.map +0 -7
- package/dist/dev/locales/id-ID-22TWZNLA.js.map +0 -7
- package/dist/dev/locales/it-IT-MDEQ2SG3.js.map +0 -7
- package/dist/dev/locales/ja-JP-K2DI4W6B.js.map +0 -7
- package/dist/dev/locales/kaa-6BPSNM3R.js.map +0 -7
- package/dist/dev/locales/kab-KAB-2S7ZURK7.js.map +0 -7
- package/dist/dev/locales/kk-KZ-UJPYGRQQ.js.map +0 -7
- package/dist/dev/locales/km-KH-M5T5JKUE.js.map +0 -7
- package/dist/dev/locales/ko-KR-RQX37SNF.js.map +0 -7
- package/dist/dev/locales/ku-TR-5XJDIERL.js.map +0 -7
- package/dist/dev/locales/lt-LT-MGUBX6CA.js.map +0 -7
- package/dist/dev/locales/lv-LV-MD7N5VHD.js.map +0 -7
- package/dist/dev/locales/mr-IN-4XWMNGQC.js.map +0 -7
- package/dist/dev/locales/my-MM-O4Z74GN5.js.map +0 -7
- package/dist/dev/locales/nb-NO-BMB73KRH.js.map +0 -7
- package/dist/dev/locales/nl-NL-F2257BLQ.js.map +0 -7
- package/dist/dev/locales/nn-NO-NCORG7TS.js.map +0 -7
- package/dist/dev/locales/oc-FR-ATFBDMF6.js.map +0 -7
- package/dist/dev/locales/pa-IN-D2I375G4.js.map +0 -7
- package/dist/dev/locales/pl-PL-YJHOWAAW.js.map +0 -7
- package/dist/dev/locales/pt-BR-APOPYZJ7.js.map +0 -7
- package/dist/dev/locales/pt-PT-W56WCN7P.js +0 -586
- package/dist/dev/locales/pt-PT-W56WCN7P.js.map +0 -7
- package/dist/dev/locales/ro-RO-L575VRQA.js.map +0 -7
- package/dist/dev/locales/ru-RU-BLG6HZG5.js.map +0 -7
- package/dist/dev/locales/si-LK-KT7GGO6D.js.map +0 -7
- package/dist/dev/locales/sk-SK-DY6IPO5U.js.map +0 -7
- package/dist/dev/locales/sl-SI-5DZSRA47.js.map +0 -7
- package/dist/dev/locales/sv-SE-V32YHALQ.js.map +0 -7
- package/dist/dev/locales/ta-IN-5JRAGQAO.js.map +0 -7
- package/dist/dev/locales/th-TH-55ACRHDJ.js.map +0 -7
- package/dist/dev/locales/tr-TR-7QYBXDBO.js.map +0 -7
- package/dist/dev/locales/uk-UA-TJS2TMRH.js.map +0 -7
- package/dist/dev/locales/vi-VN-Y5CQ2EKQ.js +0 -586
- package/dist/dev/locales/vi-VN-Y5CQ2EKQ.js.map +0 -7
- package/dist/dev/locales/zh-CN-4MXUOFTH.js.map +0 -7
- package/dist/dev/locales/zh-HK-RBTGIU3U.js.map +0 -7
- package/dist/dev/locales/zh-TW-U5VF4CCU.js.map +0 -7
- package/dist/prod/chunk-2HQY2INW.js +0 -4
- package/dist/prod/chunk-I4UNSFV6.js +0 -12
- package/dist/prod/chunk-Z3N5DIM6.js +0 -1
- package/dist/prod/data/image-DYRE7ZKS.js +0 -1
- package/dist/prod/locales/ar-SA-G6X2FPQ2.js +0 -10
- package/dist/prod/locales/az-AZ-76LH7QW2.js +0 -1
- package/dist/prod/locales/bg-BG-XCXSNQG7.js +0 -5
- package/dist/prod/locales/bn-BD-2XOGV67Q.js +0 -5
- package/dist/prod/locales/ca-ES-6MX7JW3Y.js +0 -8
- package/dist/prod/locales/cs-CZ-2BRQDIVT.js +0 -11
- package/dist/prod/locales/da-DK-5WZEPLOC.js +0 -5
- package/dist/prod/locales/de-DE-XR44H4JA.js +0 -8
- package/dist/prod/locales/el-GR-BZB4AONW.js +0 -10
- package/dist/prod/locales/en-TYY6KWIJ.js +0 -1
- package/dist/prod/locales/es-ES-U4NZUMDT.js +0 -9
- package/dist/prod/locales/eu-ES-A7QVB2H4.js +0 -11
- package/dist/prod/locales/fa-IR-HGAKTJCU.js +0 -8
- package/dist/prod/locales/fi-FI-Z5N7JZ37.js +0 -6
- package/dist/prod/locales/fr-FR-RHASNOE6.js +0 -9
- package/dist/prod/locales/gl-ES-HMX3MZ6V.js +0 -10
- package/dist/prod/locales/he-IL-6SHJWFNN.js +0 -10
- package/dist/prod/locales/hi-IN-IWLTKZ5I.js +0 -4
- package/dist/prod/locales/hu-HU-A5ZG7DT2.js +0 -7
- package/dist/prod/locales/id-ID-SAP4L64H.js +0 -10
- package/dist/prod/locales/it-IT-JPQ66NNP.js +0 -11
- package/dist/prod/locales/ja-JP-DBVTYXUO.js +0 -8
- package/dist/prod/locales/kaa-6HZHGXH3.js +0 -1
- package/dist/prod/locales/kab-KAB-ZGHBKWFO.js +0 -8
- package/dist/prod/locales/kk-KZ-P5N5QNE5.js +0 -1
- package/dist/prod/locales/km-KH-HSX4SM5Z.js +0 -11
- package/dist/prod/locales/ko-KR-MTYHY66A.js +0 -9
- package/dist/prod/locales/ku-TR-6OUDTVRD.js +0 -9
- package/dist/prod/locales/lt-LT-XHIRWOB4.js +0 -3
- package/dist/prod/locales/lv-LV-5QDEKY6T.js +0 -7
- package/dist/prod/locales/mr-IN-CRQNXWMA.js +0 -13
- package/dist/prod/locales/my-MM-5M5IBNSE.js +0 -1
- package/dist/prod/locales/nb-NO-T6EIAALU.js +0 -10
- package/dist/prod/locales/nl-NL-IS3SIHDZ.js +0 -8
- package/dist/prod/locales/nn-NO-6E72VCQL.js +0 -8
- package/dist/prod/locales/oc-FR-POXYY2M6.js +0 -8
- package/dist/prod/locales/pa-IN-N4M65BXN.js +0 -4
- package/dist/prod/locales/percentages-BXMCSKIN.js +0 -1
- package/dist/prod/locales/pl-PL-T2D74RX3.js +0 -9
- package/dist/prod/locales/pt-BR-5N22H2LF.js +0 -9
- package/dist/prod/locales/pt-PT-UZXXM6DQ.js +0 -9
- package/dist/prod/locales/ro-RO-JPDTUUEW.js +0 -11
- package/dist/prod/locales/ru-RU-B4JR7IUQ.js +0 -9
- package/dist/prod/locales/si-LK-N5RQ5JYF.js +0 -1
- package/dist/prod/locales/sk-SK-C5VTKIMK.js +0 -6
- package/dist/prod/locales/sl-SI-NN7IZMDC.js +0 -6
- package/dist/prod/locales/sv-SE-XGPEYMSR.js +0 -10
- package/dist/prod/locales/ta-IN-2NMHFXQM.js +0 -9
- package/dist/prod/locales/th-TH-HPSO5L25.js +0 -2
- package/dist/prod/locales/tr-TR-DEFEU3FU.js +0 -7
- package/dist/prod/locales/uk-UA-QMV73CPH.js +0 -6
- package/dist/prod/locales/vi-VN-M7AON7JQ.js +0 -5
- package/dist/prod/locales/zh-CN-LNUGB5OW.js +0 -10
- package/dist/prod/locales/zh-HK-E62DVLB3.js +0 -1
- package/dist/prod/locales/zh-TW-RAJ6MFWO.js +0 -9
- /package/dist/dev/data/{image-CNYZRAWA.js.map → image-S2GFZH7W.js.map} +0 -0
- /package/dist/dev/locales/{en-SMAPCEOQ.js.map → en-MLZIHOCR.js.map} +0 -0
- /package/dist/dev/locales/{percentages-YKFLWNK2.js.map → percentages-TR7IWPFY.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
define_import_meta_env_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CP5DND7P.js";
|
|
4
4
|
import {
|
|
5
5
|
__publicField
|
|
6
6
|
} from "./chunk-XDFCUUT6.js";
|
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
bytesToHexString,
|
|
20
20
|
isPromiseLike
|
|
21
21
|
} from "@excalidraw/common";
|
|
22
|
-
import { clearElementsForExport as clearElementsForExport2 } from "@excalidraw/element";
|
|
23
22
|
|
|
24
23
|
// appState.ts
|
|
25
24
|
import {
|
|
@@ -70,6 +69,10 @@ var getDefaultAppState = () => {
|
|
|
70
69
|
fromSelection: false,
|
|
71
70
|
lastActiveTool: null
|
|
72
71
|
},
|
|
72
|
+
preferredSelectionTool: {
|
|
73
|
+
type: "selection",
|
|
74
|
+
initialized: false
|
|
75
|
+
},
|
|
73
76
|
penMode: false,
|
|
74
77
|
penDetected: false,
|
|
75
78
|
errorMessage: null,
|
|
@@ -111,7 +114,7 @@ var getDefaultAppState = () => {
|
|
|
111
114
|
panels: STATS_PANELS.generalStats | STATS_PANELS.elementProperties
|
|
112
115
|
},
|
|
113
116
|
startBoundElement: null,
|
|
114
|
-
|
|
117
|
+
suggestedBinding: null,
|
|
115
118
|
frameRendering: { enabled: true, clip: true, name: true, outline: true },
|
|
116
119
|
frameToHighlight: null,
|
|
117
120
|
editingFrame: null,
|
|
@@ -137,7 +140,8 @@ var getDefaultAppState = () => {
|
|
|
137
140
|
croppingElementId: null,
|
|
138
141
|
searchMatches: null,
|
|
139
142
|
lockedMultiSelections: {},
|
|
140
|
-
activeLockedId: null
|
|
143
|
+
activeLockedId: null,
|
|
144
|
+
bindMode: "orbit"
|
|
141
145
|
};
|
|
142
146
|
};
|
|
143
147
|
var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
|
|
@@ -174,6 +178,7 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
|
|
|
174
178
|
editingTextElement: { browser: false, export: false, server: false },
|
|
175
179
|
editingGroupId: { browser: true, export: false, server: false },
|
|
176
180
|
activeTool: { browser: true, export: false, server: false },
|
|
181
|
+
preferredSelectionTool: { browser: true, export: false, server: false },
|
|
177
182
|
penMode: { browser: true, export: false, server: false },
|
|
178
183
|
penDetected: { browser: true, export: false, server: false },
|
|
179
184
|
errorMessage: { browser: false, export: false, server: false },
|
|
@@ -223,7 +228,7 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
|
|
|
223
228
|
shouldCacheIgnoreZoom: { browser: true, export: false, server: false },
|
|
224
229
|
stats: { browser: true, export: false, server: false },
|
|
225
230
|
startBoundElement: { browser: false, export: false, server: false },
|
|
226
|
-
|
|
231
|
+
suggestedBinding: { browser: false, export: false, server: false },
|
|
227
232
|
frameRendering: { browser: false, export: false, server: false },
|
|
228
233
|
frameToHighlight: { browser: false, export: false, server: false },
|
|
229
234
|
editingFrame: { browser: false, export: false, server: false },
|
|
@@ -245,7 +250,8 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
|
|
|
245
250
|
croppingElementId: { browser: false, export: false, server: false },
|
|
246
251
|
searchMatches: { browser: false, export: false, server: false },
|
|
247
252
|
lockedMultiSelections: { browser: true, export: true, server: true },
|
|
248
|
-
activeLockedId: { browser: false, export: false, server: false }
|
|
253
|
+
activeLockedId: { browser: false, export: false, server: false },
|
|
254
|
+
bindMode: { browser: true, export: false, server: false }
|
|
249
255
|
});
|
|
250
256
|
var _clearAppStateForStorage = (appState, exportType) => {
|
|
251
257
|
const stateForExport = {};
|
|
@@ -517,10 +523,6 @@ import {
|
|
|
517
523
|
MIME_TYPES as MIME_TYPES2,
|
|
518
524
|
VERSIONS
|
|
519
525
|
} from "@excalidraw/common";
|
|
520
|
-
import {
|
|
521
|
-
clearElementsForDatabase,
|
|
522
|
-
clearElementsForExport
|
|
523
|
-
} from "@excalidraw/element";
|
|
524
526
|
|
|
525
527
|
// data/filesystem.ts
|
|
526
528
|
import {
|
|
@@ -529,8 +531,8 @@ import {
|
|
|
529
531
|
supported as nativeFileSystemSupported
|
|
530
532
|
} from "browser-fs-access";
|
|
531
533
|
import { EVENT, MIME_TYPES, debounce } from "@excalidraw/common";
|
|
532
|
-
var INPUT_CHANGE_INTERVAL_MS =
|
|
533
|
-
var fileOpen = (opts) => {
|
|
534
|
+
var INPUT_CHANGE_INTERVAL_MS = 5e3;
|
|
535
|
+
var fileOpen = async (opts) => {
|
|
534
536
|
const mimeTypes = opts.extensions?.reduce((mimeTypes2, type) => {
|
|
535
537
|
mimeTypes2.push(MIME_TYPES[type]);
|
|
536
538
|
return mimeTypes2;
|
|
@@ -541,7 +543,7 @@ var fileOpen = (opts) => {
|
|
|
541
543
|
}
|
|
542
544
|
return acc.concat(`.${ext}`);
|
|
543
545
|
}, []);
|
|
544
|
-
|
|
546
|
+
const files = await _fileOpen({
|
|
545
547
|
description: opts.description,
|
|
546
548
|
extensions,
|
|
547
549
|
mimeTypes,
|
|
@@ -579,6 +581,12 @@ var fileOpen = (opts) => {
|
|
|
579
581
|
};
|
|
580
582
|
}
|
|
581
583
|
});
|
|
584
|
+
if (Array.isArray(files)) {
|
|
585
|
+
return await Promise.all(
|
|
586
|
+
files.map((file) => normalizeFile(file))
|
|
587
|
+
);
|
|
588
|
+
}
|
|
589
|
+
return await normalizeFile(files);
|
|
582
590
|
};
|
|
583
591
|
var fileSave = (blob, opts) => {
|
|
584
592
|
return _fileSave(
|
|
@@ -608,7 +616,7 @@ var serializeAsJSON = (elements, appState, files, type) => {
|
|
|
608
616
|
type: EXPORT_DATA_TYPES.excalidraw,
|
|
609
617
|
version: VERSIONS.excalidraw,
|
|
610
618
|
source: getExportSource(),
|
|
611
|
-
elements
|
|
619
|
+
elements,
|
|
612
620
|
appState: type === "local" ? cleanAppStateForExport(appState) : clearAppStateForDatabase(appState),
|
|
613
621
|
files: type === "local" ? filterOutDeletedFiles(elements, files) : (
|
|
614
622
|
// will be stripped from JSON
|
|
@@ -637,12 +645,7 @@ var loadFromJSON = async (localAppState, localElements) => {
|
|
|
637
645
|
// gets resolved. Else, iOS users cannot open `.excalidraw` files.
|
|
638
646
|
// extensions: ["json", "excalidraw", "png", "svg"],
|
|
639
647
|
});
|
|
640
|
-
return loadFromBlob(
|
|
641
|
-
await normalizeFile(file),
|
|
642
|
-
localAppState,
|
|
643
|
-
localElements,
|
|
644
|
-
file.handle
|
|
645
|
-
);
|
|
648
|
+
return loadFromBlob(file, localAppState, localElements, file.handle);
|
|
646
649
|
};
|
|
647
650
|
var isValidExcalidrawData = (data) => {
|
|
648
651
|
return data?.type === EXPORT_DATA_TYPES.excalidraw && (!data.elements || Array.isArray(data.elements) && (!data.appState || typeof data.appState === "object"));
|
|
@@ -3148,18 +3151,6 @@ var isPointHittingLink = (element, elementsMap, appState, [x, y], isMobile) => {
|
|
|
3148
3151
|
|
|
3149
3152
|
// renderer/helpers.ts
|
|
3150
3153
|
import { THEME as THEME2, THEME_FILTER } from "@excalidraw/common";
|
|
3151
|
-
import { FIXED_BINDING_DISTANCE } from "@excalidraw/element";
|
|
3152
|
-
import { getDiamondPoints } from "@excalidraw/element";
|
|
3153
|
-
import { elementCenterPoint, getCornerRadius } from "@excalidraw/element";
|
|
3154
|
-
import {
|
|
3155
|
-
curve,
|
|
3156
|
-
curveCatmullRomCubicApproxPoints,
|
|
3157
|
-
curveCatmullRomQuadraticApproxPoints,
|
|
3158
|
-
curveOffsetPoints,
|
|
3159
|
-
offsetPointsForQuadraticBezier,
|
|
3160
|
-
pointFrom as pointFrom2,
|
|
3161
|
-
pointRotateRads as pointRotateRads2
|
|
3162
|
-
} from "@excalidraw/math";
|
|
3163
3154
|
var fillCircle = (context, cx, cy, radius, stroke, fill = true) => {
|
|
3164
3155
|
context.beginPath();
|
|
3165
3156
|
context.arc(cx, cy, radius, 0, Math.PI * 2);
|
|
@@ -3204,127 +3195,7 @@ var bootstrapCanvas = ({
|
|
|
3204
3195
|
}
|
|
3205
3196
|
return context;
|
|
3206
3197
|
};
|
|
3207
|
-
|
|
3208
|
-
const pointSets = curveCatmullRomQuadraticApproxPoints(points, tension);
|
|
3209
|
-
if (pointSets) {
|
|
3210
|
-
for (let i = 0; i < pointSets.length - 1; i++) {
|
|
3211
|
-
const [[cpX, cpY], [p2X, p2Y]] = pointSets[i];
|
|
3212
|
-
ctx.quadraticCurveTo(cpX, cpY, p2X, p2Y);
|
|
3213
|
-
}
|
|
3214
|
-
}
|
|
3215
|
-
}
|
|
3216
|
-
function drawCatmullRomCubicApprox(ctx, points, tension = 0.5) {
|
|
3217
|
-
const pointSets = curveCatmullRomCubicApproxPoints(points, tension);
|
|
3218
|
-
if (pointSets) {
|
|
3219
|
-
for (let i = 0; i < pointSets.length; i++) {
|
|
3220
|
-
const [[cp1x, cp1y], [cp2x, cp2y], [x, y]] = pointSets[i];
|
|
3221
|
-
ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
|
|
3222
|
-
}
|
|
3223
|
-
}
|
|
3224
|
-
}
|
|
3225
|
-
var drawHighlightForRectWithRotation = (context, element, elementsMap, padding) => {
|
|
3226
|
-
const [x, y] = pointRotateRads2(
|
|
3227
|
-
pointFrom2(element.x, element.y),
|
|
3228
|
-
elementCenterPoint(element, elementsMap),
|
|
3229
|
-
element.angle
|
|
3230
|
-
);
|
|
3231
|
-
context.save();
|
|
3232
|
-
context.translate(x, y);
|
|
3233
|
-
context.rotate(element.angle);
|
|
3234
|
-
let radius = getCornerRadius(
|
|
3235
|
-
Math.min(element.width, element.height),
|
|
3236
|
-
element
|
|
3237
|
-
);
|
|
3238
|
-
if (radius === 0) {
|
|
3239
|
-
radius = 0.01;
|
|
3240
|
-
}
|
|
3241
|
-
context.beginPath();
|
|
3242
|
-
{
|
|
3243
|
-
const topLeftApprox = offsetPointsForQuadraticBezier(
|
|
3244
|
-
pointFrom2(0, 0 + radius),
|
|
3245
|
-
pointFrom2(0, 0),
|
|
3246
|
-
pointFrom2(0 + radius, 0),
|
|
3247
|
-
padding
|
|
3248
|
-
);
|
|
3249
|
-
const topRightApprox = offsetPointsForQuadraticBezier(
|
|
3250
|
-
pointFrom2(element.width - radius, 0),
|
|
3251
|
-
pointFrom2(element.width, 0),
|
|
3252
|
-
pointFrom2(element.width, radius),
|
|
3253
|
-
padding
|
|
3254
|
-
);
|
|
3255
|
-
const bottomRightApprox = offsetPointsForQuadraticBezier(
|
|
3256
|
-
pointFrom2(element.width, element.height - radius),
|
|
3257
|
-
pointFrom2(element.width, element.height),
|
|
3258
|
-
pointFrom2(element.width - radius, element.height),
|
|
3259
|
-
padding
|
|
3260
|
-
);
|
|
3261
|
-
const bottomLeftApprox = offsetPointsForQuadraticBezier(
|
|
3262
|
-
pointFrom2(radius, element.height),
|
|
3263
|
-
pointFrom2(0, element.height),
|
|
3264
|
-
pointFrom2(0, element.height - radius),
|
|
3265
|
-
padding
|
|
3266
|
-
);
|
|
3267
|
-
context.moveTo(
|
|
3268
|
-
topLeftApprox[topLeftApprox.length - 1][0],
|
|
3269
|
-
topLeftApprox[topLeftApprox.length - 1][1]
|
|
3270
|
-
);
|
|
3271
|
-
context.lineTo(topRightApprox[0][0], topRightApprox[0][1]);
|
|
3272
|
-
drawCatmullRomQuadraticApprox(context, topRightApprox);
|
|
3273
|
-
context.lineTo(bottomRightApprox[0][0], bottomRightApprox[0][1]);
|
|
3274
|
-
drawCatmullRomQuadraticApprox(context, bottomRightApprox);
|
|
3275
|
-
context.lineTo(bottomLeftApprox[0][0], bottomLeftApprox[0][1]);
|
|
3276
|
-
drawCatmullRomQuadraticApprox(context, bottomLeftApprox);
|
|
3277
|
-
context.lineTo(topLeftApprox[0][0], topLeftApprox[0][1]);
|
|
3278
|
-
drawCatmullRomQuadraticApprox(context, topLeftApprox);
|
|
3279
|
-
}
|
|
3280
|
-
{
|
|
3281
|
-
const topLeftApprox = offsetPointsForQuadraticBezier(
|
|
3282
|
-
pointFrom2(0 + radius, 0),
|
|
3283
|
-
pointFrom2(0, 0),
|
|
3284
|
-
pointFrom2(0, 0 + radius),
|
|
3285
|
-
-FIXED_BINDING_DISTANCE
|
|
3286
|
-
);
|
|
3287
|
-
const topRightApprox = offsetPointsForQuadraticBezier(
|
|
3288
|
-
pointFrom2(element.width, radius),
|
|
3289
|
-
pointFrom2(element.width, 0),
|
|
3290
|
-
pointFrom2(element.width - radius, 0),
|
|
3291
|
-
-FIXED_BINDING_DISTANCE
|
|
3292
|
-
);
|
|
3293
|
-
const bottomRightApprox = offsetPointsForQuadraticBezier(
|
|
3294
|
-
pointFrom2(element.width - radius, element.height),
|
|
3295
|
-
pointFrom2(element.width, element.height),
|
|
3296
|
-
pointFrom2(element.width, element.height - radius),
|
|
3297
|
-
-FIXED_BINDING_DISTANCE
|
|
3298
|
-
);
|
|
3299
|
-
const bottomLeftApprox = offsetPointsForQuadraticBezier(
|
|
3300
|
-
pointFrom2(0, element.height - radius),
|
|
3301
|
-
pointFrom2(0, element.height),
|
|
3302
|
-
pointFrom2(radius, element.height),
|
|
3303
|
-
-FIXED_BINDING_DISTANCE
|
|
3304
|
-
);
|
|
3305
|
-
context.moveTo(
|
|
3306
|
-
topLeftApprox[topLeftApprox.length - 1][0],
|
|
3307
|
-
topLeftApprox[topLeftApprox.length - 1][1]
|
|
3308
|
-
);
|
|
3309
|
-
context.lineTo(bottomLeftApprox[0][0], bottomLeftApprox[0][1]);
|
|
3310
|
-
drawCatmullRomQuadraticApprox(context, bottomLeftApprox);
|
|
3311
|
-
context.lineTo(bottomRightApprox[0][0], bottomRightApprox[0][1]);
|
|
3312
|
-
drawCatmullRomQuadraticApprox(context, bottomRightApprox);
|
|
3313
|
-
context.lineTo(topRightApprox[0][0], topRightApprox[0][1]);
|
|
3314
|
-
drawCatmullRomQuadraticApprox(context, topRightApprox);
|
|
3315
|
-
context.lineTo(topLeftApprox[0][0], topLeftApprox[0][1]);
|
|
3316
|
-
drawCatmullRomQuadraticApprox(context, topLeftApprox);
|
|
3317
|
-
}
|
|
3318
|
-
context.closePath();
|
|
3319
|
-
context.fill();
|
|
3320
|
-
context.restore();
|
|
3321
|
-
};
|
|
3322
|
-
var strokeEllipseWithRotation = (context, width, height, cx, cy, angle) => {
|
|
3323
|
-
context.beginPath();
|
|
3324
|
-
context.ellipse(cx, cy, width / 2, height / 2, angle, 0, Math.PI * 2);
|
|
3325
|
-
context.stroke();
|
|
3326
|
-
};
|
|
3327
|
-
var strokeRectWithRotation = (context, x, y, width, height, cx, cy, angle, fill = false, radius = 0) => {
|
|
3198
|
+
var strokeRectWithRotation_simple = (context, x, y, width, height, cx, cy, angle, fill = false, radius = 0) => {
|
|
3328
3199
|
context.save();
|
|
3329
3200
|
context.translate(cx, cy);
|
|
3330
3201
|
context.rotate(angle);
|
|
@@ -3341,126 +3212,6 @@ var strokeRectWithRotation = (context, x, y, width, height, cx, cy, angle, fill
|
|
|
3341
3212
|
}
|
|
3342
3213
|
context.restore();
|
|
3343
3214
|
};
|
|
3344
|
-
var drawHighlightForDiamondWithRotation = (context, padding, element, elementsMap) => {
|
|
3345
|
-
const [x, y] = pointRotateRads2(
|
|
3346
|
-
pointFrom2(element.x, element.y),
|
|
3347
|
-
elementCenterPoint(element, elementsMap),
|
|
3348
|
-
element.angle
|
|
3349
|
-
);
|
|
3350
|
-
context.save();
|
|
3351
|
-
context.translate(x, y);
|
|
3352
|
-
context.rotate(element.angle);
|
|
3353
|
-
{
|
|
3354
|
-
context.beginPath();
|
|
3355
|
-
const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = getDiamondPoints(element);
|
|
3356
|
-
const verticalRadius = element.roundness ? getCornerRadius(Math.abs(topX - leftX), element) : (topX - leftX) * 0.01;
|
|
3357
|
-
const horizontalRadius = element.roundness ? getCornerRadius(Math.abs(rightY - topY), element) : (rightY - topY) * 0.01;
|
|
3358
|
-
const topApprox = curveOffsetPoints(
|
|
3359
|
-
curve(
|
|
3360
|
-
pointFrom2(topX - verticalRadius, topY + horizontalRadius),
|
|
3361
|
-
pointFrom2(topX, topY),
|
|
3362
|
-
pointFrom2(topX, topY),
|
|
3363
|
-
pointFrom2(topX + verticalRadius, topY + horizontalRadius)
|
|
3364
|
-
),
|
|
3365
|
-
padding
|
|
3366
|
-
);
|
|
3367
|
-
const rightApprox = curveOffsetPoints(
|
|
3368
|
-
curve(
|
|
3369
|
-
pointFrom2(rightX - verticalRadius, rightY - horizontalRadius),
|
|
3370
|
-
pointFrom2(rightX, rightY),
|
|
3371
|
-
pointFrom2(rightX, rightY),
|
|
3372
|
-
pointFrom2(rightX - verticalRadius, rightY + horizontalRadius)
|
|
3373
|
-
),
|
|
3374
|
-
padding
|
|
3375
|
-
);
|
|
3376
|
-
const bottomApprox = curveOffsetPoints(
|
|
3377
|
-
curve(
|
|
3378
|
-
pointFrom2(bottomX + verticalRadius, bottomY - horizontalRadius),
|
|
3379
|
-
pointFrom2(bottomX, bottomY),
|
|
3380
|
-
pointFrom2(bottomX, bottomY),
|
|
3381
|
-
pointFrom2(bottomX - verticalRadius, bottomY - horizontalRadius)
|
|
3382
|
-
),
|
|
3383
|
-
padding
|
|
3384
|
-
);
|
|
3385
|
-
const leftApprox = curveOffsetPoints(
|
|
3386
|
-
curve(
|
|
3387
|
-
pointFrom2(leftX + verticalRadius, leftY + horizontalRadius),
|
|
3388
|
-
pointFrom2(leftX, leftY),
|
|
3389
|
-
pointFrom2(leftX, leftY),
|
|
3390
|
-
pointFrom2(leftX + verticalRadius, leftY - horizontalRadius)
|
|
3391
|
-
),
|
|
3392
|
-
padding
|
|
3393
|
-
);
|
|
3394
|
-
context.moveTo(
|
|
3395
|
-
topApprox[topApprox.length - 1][0],
|
|
3396
|
-
topApprox[topApprox.length - 1][1]
|
|
3397
|
-
);
|
|
3398
|
-
context.lineTo(rightApprox[1][0], rightApprox[1][1]);
|
|
3399
|
-
drawCatmullRomCubicApprox(context, rightApprox);
|
|
3400
|
-
context.lineTo(bottomApprox[1][0], bottomApprox[1][1]);
|
|
3401
|
-
drawCatmullRomCubicApprox(context, bottomApprox);
|
|
3402
|
-
context.lineTo(leftApprox[1][0], leftApprox[1][1]);
|
|
3403
|
-
drawCatmullRomCubicApprox(context, leftApprox);
|
|
3404
|
-
context.lineTo(topApprox[1][0], topApprox[1][1]);
|
|
3405
|
-
drawCatmullRomCubicApprox(context, topApprox);
|
|
3406
|
-
}
|
|
3407
|
-
{
|
|
3408
|
-
const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = getDiamondPoints(element);
|
|
3409
|
-
const verticalRadius = element.roundness ? getCornerRadius(Math.abs(topX - leftX), element) : (topX - leftX) * 0.01;
|
|
3410
|
-
const horizontalRadius = element.roundness ? getCornerRadius(Math.abs(rightY - topY), element) : (rightY - topY) * 0.01;
|
|
3411
|
-
const topApprox = curveOffsetPoints(
|
|
3412
|
-
curve(
|
|
3413
|
-
pointFrom2(topX + verticalRadius, topY + horizontalRadius),
|
|
3414
|
-
pointFrom2(topX, topY),
|
|
3415
|
-
pointFrom2(topX, topY),
|
|
3416
|
-
pointFrom2(topX - verticalRadius, topY + horizontalRadius)
|
|
3417
|
-
),
|
|
3418
|
-
-FIXED_BINDING_DISTANCE
|
|
3419
|
-
);
|
|
3420
|
-
const rightApprox = curveOffsetPoints(
|
|
3421
|
-
curve(
|
|
3422
|
-
pointFrom2(rightX - verticalRadius, rightY + horizontalRadius),
|
|
3423
|
-
pointFrom2(rightX, rightY),
|
|
3424
|
-
pointFrom2(rightX, rightY),
|
|
3425
|
-
pointFrom2(rightX - verticalRadius, rightY - horizontalRadius)
|
|
3426
|
-
),
|
|
3427
|
-
-FIXED_BINDING_DISTANCE
|
|
3428
|
-
);
|
|
3429
|
-
const bottomApprox = curveOffsetPoints(
|
|
3430
|
-
curve(
|
|
3431
|
-
pointFrom2(bottomX - verticalRadius, bottomY - horizontalRadius),
|
|
3432
|
-
pointFrom2(bottomX, bottomY),
|
|
3433
|
-
pointFrom2(bottomX, bottomY),
|
|
3434
|
-
pointFrom2(bottomX + verticalRadius, bottomY - horizontalRadius)
|
|
3435
|
-
),
|
|
3436
|
-
-FIXED_BINDING_DISTANCE
|
|
3437
|
-
);
|
|
3438
|
-
const leftApprox = curveOffsetPoints(
|
|
3439
|
-
curve(
|
|
3440
|
-
pointFrom2(leftX + verticalRadius, leftY - horizontalRadius),
|
|
3441
|
-
pointFrom2(leftX, leftY),
|
|
3442
|
-
pointFrom2(leftX, leftY),
|
|
3443
|
-
pointFrom2(leftX + verticalRadius, leftY + horizontalRadius)
|
|
3444
|
-
),
|
|
3445
|
-
-FIXED_BINDING_DISTANCE
|
|
3446
|
-
);
|
|
3447
|
-
context.moveTo(
|
|
3448
|
-
topApprox[topApprox.length - 1][0],
|
|
3449
|
-
topApprox[topApprox.length - 1][1]
|
|
3450
|
-
);
|
|
3451
|
-
context.lineTo(leftApprox[1][0], leftApprox[1][1]);
|
|
3452
|
-
drawCatmullRomCubicApprox(context, leftApprox);
|
|
3453
|
-
context.lineTo(bottomApprox[1][0], bottomApprox[1][1]);
|
|
3454
|
-
drawCatmullRomCubicApprox(context, bottomApprox);
|
|
3455
|
-
context.lineTo(rightApprox[1][0], rightApprox[1][1]);
|
|
3456
|
-
drawCatmullRomCubicApprox(context, rightApprox);
|
|
3457
|
-
context.lineTo(topApprox[1][0], topApprox[1][1]);
|
|
3458
|
-
drawCatmullRomCubicApprox(context, topApprox);
|
|
3459
|
-
}
|
|
3460
|
-
context.closePath();
|
|
3461
|
-
context.fill();
|
|
3462
|
-
context.restore();
|
|
3463
|
-
};
|
|
3464
3215
|
|
|
3465
3216
|
// renderer/staticScene.ts
|
|
3466
3217
|
var GridLineColor = {
|
|
@@ -3804,7 +3555,7 @@ import {
|
|
|
3804
3555
|
isTextElement as isTextElement3
|
|
3805
3556
|
} from "@excalidraw/element";
|
|
3806
3557
|
import { getContainingFrame } from "@excalidraw/element";
|
|
3807
|
-
import { getCornerRadius
|
|
3558
|
+
import { getCornerRadius, isPathALoop } from "@excalidraw/element";
|
|
3808
3559
|
import { ShapeCache as ShapeCache2 } from "@excalidraw/element";
|
|
3809
3560
|
import { getFreeDrawSvgPath, IMAGE_INVERT_FILTER } from "@excalidraw/element";
|
|
3810
3561
|
import { getElementAbsoluteCoords as getElementAbsoluteCoords3 } from "@excalidraw/element";
|
|
@@ -3942,7 +3693,7 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
3942
3693
|
while (embeddableNode.firstChild) {
|
|
3943
3694
|
embeddableNode.removeChild(embeddableNode.firstChild);
|
|
3944
3695
|
}
|
|
3945
|
-
const radius =
|
|
3696
|
+
const radius = getCornerRadius(
|
|
3946
3697
|
Math.min(element.width, element.height),
|
|
3947
3698
|
element
|
|
3948
3699
|
);
|
|
@@ -4185,14 +3936,19 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4185
3936
|
"clipPath"
|
|
4186
3937
|
);
|
|
4187
3938
|
clipPath.id = `image-clipPath-${element.id}`;
|
|
3939
|
+
clipPath.setAttribute("clipPathUnits", "userSpaceOnUse");
|
|
4188
3940
|
const clipRect = svgRoot.ownerDocument.createElementNS(
|
|
4189
3941
|
SVG_NS,
|
|
4190
3942
|
"rect"
|
|
4191
3943
|
);
|
|
4192
|
-
const radius =
|
|
3944
|
+
const radius = getCornerRadius(
|
|
4193
3945
|
Math.min(element.width, element.height),
|
|
4194
3946
|
element
|
|
4195
3947
|
);
|
|
3948
|
+
const clipOffsetX = element.crop ? normalizedCropX : 0;
|
|
3949
|
+
const clipOffsetY = element.crop ? normalizedCropY : 0;
|
|
3950
|
+
clipRect.setAttribute("x", `${clipOffsetX}`);
|
|
3951
|
+
clipRect.setAttribute("y", `${clipOffsetY}`);
|
|
4196
3952
|
clipRect.setAttribute("width", `${element.width}`);
|
|
4197
3953
|
clipRect.setAttribute("height", `${element.height}`);
|
|
4198
3954
|
clipRect.setAttribute("rx", `${radius}`);
|
|
@@ -4678,7 +4434,7 @@ var getExportSize = (elements, exportPadding, scale) => {
|
|
|
4678
4434
|
};
|
|
4679
4435
|
|
|
4680
4436
|
// data/restore.ts
|
|
4681
|
-
import { isFiniteNumber, pointFrom as
|
|
4437
|
+
import { isFiniteNumber, pointFrom as pointFrom2 } from "@excalidraw/math";
|
|
4682
4438
|
import {
|
|
4683
4439
|
DEFAULT_FONT_FAMILY as DEFAULT_FONT_FAMILY2,
|
|
4684
4440
|
DEFAULT_TEXT_ALIGN as DEFAULT_TEXT_ALIGN2,
|
|
@@ -4697,7 +4453,13 @@ import {
|
|
|
4697
4453
|
normalizeLink as normalizeLink2,
|
|
4698
4454
|
getLineHeight
|
|
4699
4455
|
} from "@excalidraw/common";
|
|
4700
|
-
import {
|
|
4456
|
+
import {
|
|
4457
|
+
calculateFixedPointForNonElbowArrowBinding,
|
|
4458
|
+
getNonDeletedElements,
|
|
4459
|
+
isPointInElement,
|
|
4460
|
+
isValidPolygon,
|
|
4461
|
+
projectFixedPointOntoDiagonal
|
|
4462
|
+
} from "@excalidraw/element";
|
|
4701
4463
|
import { normalizeFixedPoint } from "@excalidraw/element";
|
|
4702
4464
|
import {
|
|
4703
4465
|
updateElbowArrowPoints,
|
|
@@ -4711,7 +4473,6 @@ import {
|
|
|
4711
4473
|
isArrowBoundToElement,
|
|
4712
4474
|
isArrowElement as isArrowElement2,
|
|
4713
4475
|
isElbowArrow,
|
|
4714
|
-
isFixedPointBinding,
|
|
4715
4476
|
isLinearElement,
|
|
4716
4477
|
isLineElement,
|
|
4717
4478
|
isTextElement as isTextElement4,
|
|
@@ -4746,23 +4507,54 @@ var getFontFamilyByName = (fontFamilyName) => {
|
|
|
4746
4507
|
}
|
|
4747
4508
|
return DEFAULT_FONT_FAMILY2;
|
|
4748
4509
|
};
|
|
4749
|
-
var repairBinding = (element, binding) => {
|
|
4510
|
+
var repairBinding = (element, binding, elementsMap, startOrEnd) => {
|
|
4750
4511
|
if (!binding) {
|
|
4751
4512
|
return null;
|
|
4752
4513
|
}
|
|
4753
|
-
const focus = binding.focus || 0;
|
|
4754
4514
|
if (isElbowArrow(element)) {
|
|
4755
|
-
const fixedPointBinding =
|
|
4515
|
+
const fixedPointBinding = {
|
|
4756
4516
|
...binding,
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
}
|
|
4517
|
+
fixedPoint: normalizeFixedPoint(binding.fixedPoint ?? [0, 0]),
|
|
4518
|
+
mode: binding.mode || "orbit"
|
|
4519
|
+
};
|
|
4760
4520
|
return fixedPointBinding;
|
|
4761
4521
|
}
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4522
|
+
const boundElement = elementsMap.get(binding.elementId) || void 0;
|
|
4523
|
+
if (boundElement) {
|
|
4524
|
+
if (binding.mode) {
|
|
4525
|
+
return {
|
|
4526
|
+
elementId: binding.elementId,
|
|
4527
|
+
mode: binding.mode || "orbit",
|
|
4528
|
+
fixedPoint: normalizeFixedPoint(binding.fixedPoint || [0.5, 0.5])
|
|
4529
|
+
};
|
|
4530
|
+
}
|
|
4531
|
+
const p = LinearElementEditor2.getPointAtIndexGlobalCoordinates(
|
|
4532
|
+
element,
|
|
4533
|
+
startOrEnd === "start" ? 0 : element.points.length - 1,
|
|
4534
|
+
elementsMap
|
|
4535
|
+
);
|
|
4536
|
+
const mode = isPointInElement(p, boundElement, elementsMap) ? "inside" : "orbit";
|
|
4537
|
+
const focusPoint = mode === "inside" ? p : projectFixedPointOntoDiagonal(
|
|
4538
|
+
element,
|
|
4539
|
+
p,
|
|
4540
|
+
boundElement,
|
|
4541
|
+
startOrEnd,
|
|
4542
|
+
elementsMap
|
|
4543
|
+
) || p;
|
|
4544
|
+
const { fixedPoint } = calculateFixedPointForNonElbowArrowBinding(
|
|
4545
|
+
element,
|
|
4546
|
+
boundElement,
|
|
4547
|
+
startOrEnd,
|
|
4548
|
+
elementsMap,
|
|
4549
|
+
focusPoint
|
|
4550
|
+
);
|
|
4551
|
+
return {
|
|
4552
|
+
mode,
|
|
4553
|
+
elementId: binding.elementId,
|
|
4554
|
+
fixedPoint
|
|
4555
|
+
};
|
|
4556
|
+
}
|
|
4557
|
+
return null;
|
|
4766
4558
|
};
|
|
4767
4559
|
var restoreElementWithProperties = (element, extra) => {
|
|
4768
4560
|
const base = {
|
|
@@ -4815,7 +4607,7 @@ var restoreElementWithProperties = (element, extra) => {
|
|
|
4815
4607
|
delete ret.boundElementIds;
|
|
4816
4608
|
return ret;
|
|
4817
4609
|
};
|
|
4818
|
-
var restoreElement = (element, opts) => {
|
|
4610
|
+
var restoreElement = (element, elementsMap, opts) => {
|
|
4819
4611
|
element = { ...element };
|
|
4820
4612
|
switch (element.type) {
|
|
4821
4613
|
case "text":
|
|
@@ -4855,7 +4647,6 @@ var restoreElement = (element, opts) => {
|
|
|
4855
4647
|
case "freedraw": {
|
|
4856
4648
|
return restoreElementWithProperties(element, {
|
|
4857
4649
|
points: element.points,
|
|
4858
|
-
lastCommittedPoint: null,
|
|
4859
4650
|
simulatePressure: element.simulatePressure,
|
|
4860
4651
|
pressures: element.pressures
|
|
4861
4652
|
});
|
|
@@ -4874,16 +4665,15 @@ var restoreElement = (element, opts) => {
|
|
|
4874
4665
|
let y = element.y;
|
|
4875
4666
|
let points = (
|
|
4876
4667
|
// migrate old arrow model to new one
|
|
4877
|
-
!Array.isArray(element.points) || element.points.length < 2 ? [
|
|
4668
|
+
!Array.isArray(element.points) || element.points.length < 2 ? [pointFrom2(0, 0), pointFrom2(element.width, element.height)] : element.points
|
|
4878
4669
|
);
|
|
4879
4670
|
if (points[0][0] !== 0 || points[0][1] !== 0) {
|
|
4880
4671
|
({ points, x, y } = LinearElementEditor2.getNormalizeElementPointsAndCoords(element));
|
|
4881
4672
|
}
|
|
4882
4673
|
return restoreElementWithProperties(element, {
|
|
4883
|
-
type:
|
|
4884
|
-
startBinding:
|
|
4885
|
-
endBinding:
|
|
4886
|
-
lastCommittedPoint: null,
|
|
4674
|
+
type: "line",
|
|
4675
|
+
startBinding: null,
|
|
4676
|
+
endBinding: null,
|
|
4887
4677
|
startArrowhead,
|
|
4888
4678
|
endArrowhead,
|
|
4889
4679
|
points,
|
|
@@ -4896,20 +4686,26 @@ var restoreElement = (element, opts) => {
|
|
|
4896
4686
|
});
|
|
4897
4687
|
case "arrow": {
|
|
4898
4688
|
const { startArrowhead: startArrowhead2 = null, endArrowhead: endArrowhead2 = "arrow" } = element;
|
|
4899
|
-
|
|
4900
|
-
|
|
4901
|
-
|
|
4689
|
+
const x2 = element.x;
|
|
4690
|
+
const y2 = element.y;
|
|
4691
|
+
const points2 = (
|
|
4902
4692
|
// migrate old arrow model to new one
|
|
4903
|
-
!Array.isArray(element.points) || element.points.length < 2 ? [
|
|
4693
|
+
!Array.isArray(element.points) || element.points.length < 2 ? [pointFrom2(0, 0), pointFrom2(element.width, element.height)] : element.points
|
|
4904
4694
|
);
|
|
4905
|
-
if (points2[0][0] !== 0 || points2[0][1] !== 0) {
|
|
4906
|
-
({ points: points2, x: x2, y: y2 } = LinearElementEditor2.getNormalizeElementPointsAndCoords(element));
|
|
4907
|
-
}
|
|
4908
4695
|
const base = {
|
|
4909
4696
|
type: element.type,
|
|
4910
|
-
startBinding: repairBinding(
|
|
4911
|
-
|
|
4912
|
-
|
|
4697
|
+
startBinding: repairBinding(
|
|
4698
|
+
element,
|
|
4699
|
+
element.startBinding,
|
|
4700
|
+
elementsMap,
|
|
4701
|
+
"start"
|
|
4702
|
+
),
|
|
4703
|
+
endBinding: repairBinding(
|
|
4704
|
+
element,
|
|
4705
|
+
element.endBinding,
|
|
4706
|
+
elementsMap,
|
|
4707
|
+
"end"
|
|
4708
|
+
),
|
|
4913
4709
|
startArrowhead: startArrowhead2,
|
|
4914
4710
|
endArrowhead: endArrowhead2,
|
|
4915
4711
|
points: points2,
|
|
@@ -4918,15 +4714,19 @@ var restoreElement = (element, opts) => {
|
|
|
4918
4714
|
elbowed: element.elbowed,
|
|
4919
4715
|
...getSizeFromPoints(points2)
|
|
4920
4716
|
};
|
|
4921
|
-
|
|
4717
|
+
const restoredElement = isElbowArrow(element) ? restoreElementWithProperties(element, {
|
|
4922
4718
|
...base,
|
|
4923
4719
|
elbowed: true,
|
|
4924
|
-
|
|
4925
|
-
endBinding: repairBinding(element, element.endBinding),
|
|
4926
|
-
fixedSegments: element.fixedSegments,
|
|
4720
|
+
fixedSegments: element.fixedSegments?.length && base.points.length >= 4 ? element.fixedSegments : null,
|
|
4927
4721
|
startIsSpecial: element.startIsSpecial,
|
|
4928
4722
|
endIsSpecial: element.endIsSpecial
|
|
4929
4723
|
}) : restoreElementWithProperties(element, base);
|
|
4724
|
+
return {
|
|
4725
|
+
...restoredElement,
|
|
4726
|
+
...LinearElementEditor2.getNormalizeElementPointsAndCoords(
|
|
4727
|
+
restoredElement
|
|
4728
|
+
)
|
|
4729
|
+
};
|
|
4930
4730
|
}
|
|
4931
4731
|
case "ellipse":
|
|
4932
4732
|
case "rectangle":
|
|
@@ -4991,17 +4791,22 @@ var repairFrameMembership = (element, elementsMap) => {
|
|
|
4991
4791
|
}
|
|
4992
4792
|
}
|
|
4993
4793
|
};
|
|
4994
|
-
var restoreElements = (
|
|
4794
|
+
var restoreElements = (targetElements, localElements, opts) => {
|
|
4995
4795
|
const existingIds = /* @__PURE__ */ new Set();
|
|
4796
|
+
const elementsMap = arrayToMap2(targetElements || []);
|
|
4996
4797
|
const localElementsMap = localElements ? arrayToMap2(localElements) : null;
|
|
4997
4798
|
const restoredElements = syncInvalidIndices2(
|
|
4998
|
-
(
|
|
4799
|
+
(targetElements || []).reduce((elements, element) => {
|
|
4999
4800
|
if (element.type === "selection") {
|
|
5000
|
-
return
|
|
4801
|
+
return elements;
|
|
5001
4802
|
}
|
|
5002
|
-
let migratedElement = restoreElement(
|
|
5003
|
-
|
|
5004
|
-
|
|
4803
|
+
let migratedElement = restoreElement(
|
|
4804
|
+
element,
|
|
4805
|
+
elementsMap,
|
|
4806
|
+
{
|
|
4807
|
+
deleteInvisibleElements: opts?.deleteInvisibleElements
|
|
4808
|
+
}
|
|
4809
|
+
);
|
|
5005
4810
|
if (migratedElement) {
|
|
5006
4811
|
const localElement = localElementsMap?.get(element.id);
|
|
5007
4812
|
const shouldMarkAsDeleted = opts?.deleteInvisibleElements && isInvisiblySmallElement(element);
|
|
@@ -5015,9 +4820,9 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5015
4820
|
migratedElement = { ...migratedElement, id: randomId() };
|
|
5016
4821
|
}
|
|
5017
4822
|
existingIds.add(migratedElement.id);
|
|
5018
|
-
|
|
4823
|
+
elements.push(migratedElement);
|
|
5019
4824
|
}
|
|
5020
|
-
return
|
|
4825
|
+
return elements;
|
|
5021
4826
|
}, [])
|
|
5022
4827
|
);
|
|
5023
4828
|
if (!opts?.repairBindings) {
|
|
@@ -5061,7 +4866,7 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5061
4866
|
restoredElementsMap,
|
|
5062
4867
|
{
|
|
5063
4868
|
points: [
|
|
5064
|
-
|
|
4869
|
+
pointFrom2(0, 0),
|
|
5065
4870
|
element.points[element.points.length - 1]
|
|
5066
4871
|
]
|
|
5067
4872
|
}
|
|
@@ -5090,10 +4895,10 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5090
4895
|
width: boundElement.width,
|
|
5091
4896
|
height: boundElement.height,
|
|
5092
4897
|
points: [
|
|
5093
|
-
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
4898
|
+
pointFrom2(0, 0),
|
|
4899
|
+
pointFrom2(0, -10),
|
|
4900
|
+
pointFrom2(boundElement.width / 2 + 5, -10),
|
|
4901
|
+
pointFrom2(
|
|
5097
4902
|
boundElement.width / 2 + 5,
|
|
5098
4903
|
boundElement.height / 2 + 5
|
|
5099
4904
|
)
|
|
@@ -5219,7 +5024,7 @@ var parseFileContents = async (blob) => {
|
|
|
5219
5024
|
let contents;
|
|
5220
5025
|
if (blob.type === MIME_TYPES6.png) {
|
|
5221
5026
|
try {
|
|
5222
|
-
return await (await import("./data/image-
|
|
5027
|
+
return await (await import("./data/image-S2GFZH7W.js")).decodePngMetadata(blob);
|
|
5223
5028
|
} catch (error) {
|
|
5224
5029
|
if (error.message === "INVALID") {
|
|
5225
5030
|
throw new ImageSceneDataError(
|
|
@@ -5303,7 +5108,7 @@ var loadSceneOrLibraryFromBlob = async (blob, localAppState, localElements, file
|
|
|
5303
5108
|
type: MIME_TYPES6.excalidraw,
|
|
5304
5109
|
data: restore(
|
|
5305
5110
|
{
|
|
5306
|
-
elements:
|
|
5111
|
+
elements: data.elements || [],
|
|
5307
5112
|
appState: {
|
|
5308
5113
|
theme: localAppState?.theme,
|
|
5309
5114
|
fileHandle: fileHandle || blob.handle || null,
|
|
@@ -5463,16 +5268,11 @@ var ImageURLToFile = async (imageUrl, filename = "") => {
|
|
|
5463
5268
|
}
|
|
5464
5269
|
throw new Error("Error: unsupported file type", { cause: "UNSUPPORTED" });
|
|
5465
5270
|
};
|
|
5466
|
-
var getFileFromEvent = async (event) => {
|
|
5467
|
-
const file = event.dataTransfer.files.item(0);
|
|
5468
|
-
const fileHandle = await getFileHandle(event);
|
|
5469
|
-
return { file: file ? await normalizeFile(file) : null, fileHandle };
|
|
5470
|
-
};
|
|
5471
5271
|
var getFileHandle = async (event) => {
|
|
5472
5272
|
if (nativeFileSystemSupported) {
|
|
5473
5273
|
try {
|
|
5474
|
-
const
|
|
5475
|
-
const handle = await
|
|
5274
|
+
const dataTransferItem = event instanceof DataTransferItem ? event : event.dataTransfer?.items?.[0];
|
|
5275
|
+
const handle = await dataTransferItem.getAsFileSystemHandle() || null;
|
|
5476
5276
|
return handle;
|
|
5477
5277
|
} catch (error) {
|
|
5478
5278
|
console.warn(error.name, error.message);
|
|
@@ -5481,61 +5281,52 @@ var getFileHandle = async (event) => {
|
|
|
5481
5281
|
}
|
|
5482
5282
|
return null;
|
|
5483
5283
|
};
|
|
5484
|
-
var getActualMimeTypeFromImage = (
|
|
5284
|
+
var getActualMimeTypeFromImage = async (file) => {
|
|
5485
5285
|
let mimeType = null;
|
|
5486
|
-
const
|
|
5487
|
-
|
|
5286
|
+
const leadingBytes = [
|
|
5287
|
+
...new Uint8Array(await blobToArrayBuffer(file.slice(0, 15)))
|
|
5288
|
+
].join(" ");
|
|
5289
|
+
const bytes = {
|
|
5488
5290
|
// https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
|
|
5489
|
-
png:
|
|
5291
|
+
png: /^137 80 78 71 13 10 26 10\b/,
|
|
5490
5292
|
// https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
|
|
5491
5293
|
// jpg is a bit wonky. Checking the first three bytes should be enough,
|
|
5492
5294
|
// but may yield false positives. (https://stackoverflow.com/a/23360709/927631)
|
|
5493
|
-
jpg:
|
|
5295
|
+
jpg: /^255 216 255\b/,
|
|
5494
5296
|
// https://en.wikipedia.org/wiki/GIF#Example_GIF_file
|
|
5495
|
-
gif:
|
|
5297
|
+
gif: /^71 73 70 56 57 97\b/,
|
|
5298
|
+
// 4 bytes for RIFF + 4 bytes for chunk size + WEBP identifier
|
|
5299
|
+
webp: /^82 73 70 70 \d+ \d+ \d+ \d+ 87 69 66 80 86 80 56\b/
|
|
5496
5300
|
};
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
return mimeType;
|
|
5301
|
+
for (const type of Object.keys(bytes)) {
|
|
5302
|
+
if (leadingBytes.match(bytes[type])) {
|
|
5303
|
+
mimeType = MIME_TYPES6[type];
|
|
5304
|
+
break;
|
|
5305
|
+
}
|
|
5306
|
+
}
|
|
5307
|
+
return mimeType || file.type || null;
|
|
5505
5308
|
};
|
|
5506
5309
|
var createFile = (blob, mimeType, name) => {
|
|
5507
5310
|
return new File([blob], name || "", {
|
|
5508
5311
|
type: mimeType
|
|
5509
5312
|
});
|
|
5510
5313
|
};
|
|
5314
|
+
var normalizedFileSymbol = Symbol("fileNormalized");
|
|
5511
5315
|
var normalizeFile = async (file) => {
|
|
5512
|
-
if (
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5516
|
-
|
|
5517
|
-
|
|
5518
|
-
|
|
5519
|
-
|
|
5520
|
-
|
|
5521
|
-
await blobToArrayBuffer(file),
|
|
5522
|
-
MIME_TYPES6.excalidraw,
|
|
5523
|
-
file.name
|
|
5524
|
-
);
|
|
5525
|
-
} else {
|
|
5526
|
-
const buffer = await blobToArrayBuffer(file);
|
|
5527
|
-
const mimeType = getActualMimeTypeFromImage(buffer);
|
|
5528
|
-
if (mimeType) {
|
|
5529
|
-
file = createFile(buffer, mimeType, file.name);
|
|
5530
|
-
}
|
|
5531
|
-
}
|
|
5532
|
-
} else if (isSupportedImageFile(file)) {
|
|
5533
|
-
const buffer = await blobToArrayBuffer(file);
|
|
5534
|
-
const mimeType = getActualMimeTypeFromImage(buffer);
|
|
5316
|
+
if (file[normalizedFileSymbol]) {
|
|
5317
|
+
return file;
|
|
5318
|
+
}
|
|
5319
|
+
if (file?.name?.endsWith(".excalidrawlib")) {
|
|
5320
|
+
file = createFile(file, MIME_TYPES6.excalidrawlib, file.name);
|
|
5321
|
+
} else if (file?.name?.endsWith(".excalidraw")) {
|
|
5322
|
+
file = createFile(file, MIME_TYPES6.excalidraw, file.name);
|
|
5323
|
+
} else if (!file.type || file.type?.startsWith("image/")) {
|
|
5324
|
+
const mimeType = await getActualMimeTypeFromImage(file);
|
|
5535
5325
|
if (mimeType && mimeType !== file.type) {
|
|
5536
|
-
file = createFile(
|
|
5326
|
+
file = createFile(file, mimeType, file.name);
|
|
5537
5327
|
}
|
|
5538
5328
|
}
|
|
5329
|
+
file[normalizedFileSymbol] = true;
|
|
5539
5330
|
return file;
|
|
5540
5331
|
};
|
|
5541
5332
|
var blobToArrayBuffer = (blob) => {
|
|
@@ -5635,10 +5426,7 @@ export {
|
|
|
5635
5426
|
fillCircle,
|
|
5636
5427
|
getNormalizedCanvasDimensions,
|
|
5637
5428
|
bootstrapCanvas,
|
|
5638
|
-
|
|
5639
|
-
strokeEllipseWithRotation,
|
|
5640
|
-
strokeRectWithRotation,
|
|
5641
|
-
drawHighlightForDiamondWithRotation,
|
|
5429
|
+
strokeRectWithRotation_simple,
|
|
5642
5430
|
frameClip,
|
|
5643
5431
|
renderStaticSceneThrottled,
|
|
5644
5432
|
renderStaticScene,
|
|
@@ -5670,8 +5458,8 @@ export {
|
|
|
5670
5458
|
resizeImageFile,
|
|
5671
5459
|
SVGStringToFile,
|
|
5672
5460
|
ImageURLToFile,
|
|
5673
|
-
|
|
5461
|
+
getFileHandle,
|
|
5674
5462
|
createFile,
|
|
5675
5463
|
normalizeFile
|
|
5676
5464
|
};
|
|
5677
|
-
//# sourceMappingURL=chunk-
|
|
5465
|
+
//# sourceMappingURL=chunk-SJTAY27F.js.map
|