@excalidraw/excalidraw 0.18.0-b9d27d3 → 0.18.0-c158187
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-WWDIUJ2Q.js → chunk-5A4X24JB.js} +277 -456
- package/dist/dev/chunk-5A4X24JB.js.map +7 -0
- package/dist/dev/{chunk-FB2NA5UG.js → chunk-6JJSWC4C.js} +1 -1
- package/dist/dev/{chunk-FB2NA5UG.js.map → chunk-6JJSWC4C.js.map} +2 -2
- package/dist/dev/chunk-DJHLEOOZ.js +69 -0
- package/dist/dev/chunk-DJHLEOOZ.js.map +7 -0
- package/dist/dev/{chunk-QF5FRM6O.js → chunk-OCFTI2BU.js} +49 -26
- package/dist/dev/chunk-OCFTI2BU.js.map +7 -0
- package/dist/dev/data/{image-VTYIFRQE.js → image-Q6JHR7OE.js} +2 -2
- package/dist/dev/index.css +1042 -602
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +10053 -7628
- 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-ZRDYEPMS.js} +199 -41
- package/dist/dev/locales/de-DE-ZRDYEPMS.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-VLQBB7FJ.js} +212 -54
- package/dist/dev/locales/es-ES-VLQBB7FJ.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-A72LKGCO.js} +203 -45
- package/dist/dev/locales/fr-FR-A72LKGCO.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-X34PIOJ2.js} +202 -44
- package/dist/dev/locales/it-IT-X34PIOJ2.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-XGZJ7V2V.js} +297 -139
- package/dist/dev/locales/nl-NL-XGZJ7V2V.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-OGWD7R2K.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-RWC6UWGY.js} +200 -42
- package/dist/dev/locales/sk-SK-RWC6UWGY.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-KBZAVWP5.js +744 -0
- package/dist/dev/locales/vi-VN-KBZAVWP5.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-AJI3LATG.js +1 -0
- package/dist/prod/chunk-QNG5NH6R.js +12 -0
- package/dist/prod/chunk-TIFXQFVB.js +4 -0
- package/dist/prod/{chunk-LS7FJGPW.js → chunk-Z5NKEFVG.js} +8 -8
- package/dist/prod/data/{image-YQ6UXXDA.js → image-OPZV5J37.js} +1 -1
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +26 -26
- 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-G3JVZ4MQ.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-ART7BI3G.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-XEFNCM4I.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-GIGIGIBJ.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-R4C4SUIG.js +13 -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-OL6W367U.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-MC7UOHQO.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-K34TWHF7.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/bounds.d.ts +10 -0
- package/dist/types/common/src/colors.d.ts +5 -2
- package/dist/types/common/src/constants.d.ts +22 -24
- package/dist/types/common/src/editorInterface.d.ts +34 -0
- package/dist/types/common/src/font-metadata.d.ts +1 -3
- package/dist/types/common/src/index.d.ts +3 -0
- package/dist/types/common/src/keys.d.ts +1 -1
- package/dist/types/common/src/utility-types.d.ts +0 -1
- package/dist/types/common/src/utils.d.ts +49 -33
- package/dist/types/common/src/visualdebug.d.ts +41 -0
- package/dist/types/element/src/Scene.d.ts +3 -3
- package/dist/types/element/src/binding.d.ts +58 -44
- package/dist/types/element/src/bounds.d.ts +2 -10
- package/dist/types/element/src/collision.d.ts +6 -2
- package/dist/types/element/src/comparisons.d.ts +7 -7
- package/dist/types/element/src/dragElements.d.ts +3 -3
- package/dist/types/element/src/duplicate.d.ts +3 -3
- package/dist/types/element/src/fractionalIndex.d.ts +2 -2
- package/dist/types/element/src/frame.d.ts +5 -1
- package/dist/types/element/src/heading.d.ts +2 -1
- package/dist/types/element/src/image.d.ts +1 -11
- package/dist/types/element/src/index.d.ts +1 -3
- package/dist/types/element/src/linearElementEditor.d.ts +16 -20
- package/dist/types/element/src/mutateElement.d.ts +3 -1
- package/dist/types/element/src/newElement.d.ts +6 -6
- package/dist/types/element/src/renderElement.d.ts +4 -7
- package/dist/types/element/src/resizeElements.d.ts +10 -10
- package/dist/types/element/src/resizeTest.d.ts +6 -5
- package/dist/types/element/src/selection.d.ts +3 -7
- package/dist/types/element/src/shape.d.ts +8 -7
- package/dist/types/element/src/textMeasurements.d.ts +1 -3
- package/dist/types/{excalidraw/data → element/src}/transform.d.ts +3 -3
- package/dist/types/element/src/transformHandles.d.ts +8 -27
- package/dist/types/element/src/typeChecks.d.ts +4 -7
- package/dist/types/element/src/types.d.ts +7 -11
- package/dist/types/element/src/utils.d.ts +5 -2
- package/dist/types/element/src/zindex.d.ts +7 -1
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +93 -136
- package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +67 -96
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +401 -771
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +86 -856
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +32 -47
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +107 -156
- package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +28 -45
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +66 -95
- package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +33 -48
- package/dist/types/excalidraw/actions/actionExport.d.ts +144 -1104
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -394
- package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionFrame.d.ts +213 -308
- package/dist/types/excalidraw/actions/actionGroup.d.ts +70 -107
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +123 -178
- package/dist/types/excalidraw/actions/actionLink.d.ts +30 -45
- package/dist/types/excalidraw/actions/actionMenu.d.ts +27 -410
- package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -359
- package/dist/types/excalidraw/actions/actionProperties.d.ts +129 -2488
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +35 -54
- package/dist/types/excalidraw/actions/actionStyles.d.ts +32 -47
- package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +32 -47
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +32 -47
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +25 -42
- package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +32 -47
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +32 -47
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +33 -48
- package/dist/types/excalidraw/actions/actionZindex.d.ts +2 -3
- package/dist/types/excalidraw/actions/index.d.ts +2 -2
- package/dist/types/excalidraw/actions/register.d.ts +2 -2
- package/dist/types/excalidraw/actions/types.d.ts +4 -4
- package/dist/types/excalidraw/appState.d.ts +12 -7
- package/dist/types/excalidraw/clipboard.d.ts +7 -29
- package/dist/types/excalidraw/components/Actions.d.ts +22 -5
- package/dist/types/excalidraw/components/App.d.ts +58 -59
- package/dist/types/excalidraw/components/ButtonIconCycle.d.ts +1 -1
- package/dist/types/excalidraw/components/Card.d.ts +0 -1
- package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +7 -4
- package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +0 -1
- 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/ColorPicker/keyboardNavHandlers.d.ts +0 -1
- package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
- package/dist/types/excalidraw/components/CommandPalette/types.d.ts +1 -3
- package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
- package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
- package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
- package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
- package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +1 -2
- package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -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/FontPicker/keyboardNavHandlers.d.ts +0 -1
- package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -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/LibraryMenuControlButtons.d.ts +1 -1
- package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
- package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
- package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
- package/dist/types/excalidraw/components/LinkButton.d.ts +4 -0
- package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
- package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
- package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
- package/dist/types/excalidraw/components/Modal.d.ts +0 -1
- package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
- 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/RadioGroup.d.ts +0 -1
- package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
- package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
- package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +15 -21
- package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
- package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
- package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
- package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
- package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
- package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +0 -1
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +2 -3
- package/dist/types/excalidraw/components/TTDDialog/common.d.ts +2 -3
- package/dist/types/excalidraw/components/TextField.d.ts +1 -0
- package/dist/types/excalidraw/components/Toast.d.ts +3 -3
- package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
- package/dist/types/excalidraw/components/Trans.d.ts +2 -2
- package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +6 -3
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +30 -32
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +6 -5
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +10 -18
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +3 -3
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +0 -1
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
- package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +1 -1
- package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
- package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
- package/dist/types/excalidraw/components/icons.d.ts +21 -11
- package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +4 -3
- package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +2 -2
- package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +25 -30
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +6 -6
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +15 -16
- package/dist/types/excalidraw/data/blob.d.ts +323 -5
- package/dist/types/excalidraw/data/encode.d.ts +4 -4
- package/dist/types/excalidraw/data/encryption.d.ts +5 -5
- package/dist/types/excalidraw/data/filesystem.d.ts +2 -2
- package/dist/types/excalidraw/data/index.d.ts +3 -3
- package/dist/types/excalidraw/data/json.d.ts +159 -2
- package/dist/types/excalidraw/data/library.d.ts +24 -9
- package/dist/types/excalidraw/data/restore.d.ts +25 -10
- package/dist/types/excalidraw/data/types.d.ts +4 -1
- package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
- package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
- package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
- package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
- package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
- package/dist/types/excalidraw/i18n.d.ts +2 -2
- package/dist/types/excalidraw/index.d.ts +4 -7
- package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
- package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
- package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -14
- package/dist/types/excalidraw/scene/Renderer.d.ts +5 -2
- package/dist/types/excalidraw/scene/export.d.ts +2 -2
- package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
- package/dist/types/excalidraw/scene/types.d.ts +22 -5
- package/dist/types/excalidraw/shortcut.d.ts +1 -0
- package/dist/types/excalidraw/snapping.d.ts +5 -5
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
- package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
- package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
- package/dist/types/excalidraw/types.d.ts +31 -21
- package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -2
- package/dist/types/math/src/polygon.d.ts +2 -2
- package/dist/types/math/src/range.d.ts +1 -3
- package/dist/types/math/src/segment.d.ts +4 -3
- package/dist/types/utils/src/bbox.d.ts +1 -1
- package/dist/types/utils/src/export.d.ts +5 -5
- package/dist/types/utils/src/shape.d.ts +6 -6
- package/dist/types/utils/src/withinBounds.d.ts +2 -2
- package/package.json +6 -6
- 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/chunk-WWDIUJ2Q.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-I4UNSFV6.js +0 -12
- package/dist/prod/chunk-VTWWEYSQ.js +0 -4
- package/dist/prod/chunk-Z3N5DIM6.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-VTYIFRQE.js.map → image-Q6JHR7OE.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-OGWD7R2K.js.map} +0 -0
|
@@ -9,17 +9,16 @@ import {
|
|
|
9
9
|
import tEXt from "png-chunk-text";
|
|
10
10
|
import encodePng from "png-chunks-encode";
|
|
11
11
|
import decodePng from "png-chunks-extract";
|
|
12
|
-
import { EXPORT_DATA_TYPES as EXPORT_DATA_TYPES3, MIME_TYPES as
|
|
12
|
+
import { EXPORT_DATA_TYPES as EXPORT_DATA_TYPES3, MIME_TYPES as MIME_TYPES6 } from "@excalidraw/common";
|
|
13
13
|
|
|
14
14
|
// data/blob.ts
|
|
15
15
|
import { nanoid } from "nanoid";
|
|
16
16
|
import {
|
|
17
17
|
IMAGE_MIME_TYPES,
|
|
18
|
-
MIME_TYPES as
|
|
18
|
+
MIME_TYPES as MIME_TYPES5,
|
|
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 = {};
|
|
@@ -416,14 +422,14 @@ import {
|
|
|
416
422
|
FRAME_STYLE as FRAME_STYLE3,
|
|
417
423
|
FONT_FAMILY as FONT_FAMILY2,
|
|
418
424
|
SVG_NS as SVG_NS2,
|
|
419
|
-
THEME as
|
|
420
|
-
|
|
421
|
-
MIME_TYPES as MIME_TYPES5,
|
|
425
|
+
THEME as THEME5,
|
|
426
|
+
MIME_TYPES as MIME_TYPES4,
|
|
422
427
|
EXPORT_DATA_TYPES as EXPORT_DATA_TYPES2,
|
|
423
428
|
arrayToMap,
|
|
424
429
|
distance,
|
|
425
430
|
getFontString as getFontString2,
|
|
426
|
-
toBrandedType
|
|
431
|
+
toBrandedType,
|
|
432
|
+
applyDarkModeFilter as applyDarkModeFilter4
|
|
427
433
|
} from "@excalidraw/common";
|
|
428
434
|
import { getCommonBounds as getCommonBounds2, getElementAbsoluteCoords as getElementAbsoluteCoords4 } from "@excalidraw/element";
|
|
429
435
|
import {
|
|
@@ -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"));
|
|
@@ -679,7 +682,8 @@ import {
|
|
|
679
682
|
FONT_FAMILY_FALLBACKS,
|
|
680
683
|
CJK_HAND_DRAWN_FALLBACK_FONT,
|
|
681
684
|
WINDOWS_EMOJI_FALLBACK_FONT,
|
|
682
|
-
getFontFamilyFallbacks
|
|
685
|
+
getFontFamilyFallbacks,
|
|
686
|
+
FONT_SIZES
|
|
683
687
|
} from "@excalidraw/common";
|
|
684
688
|
import { getContainerElement } from "@excalidraw/element";
|
|
685
689
|
import { charWidth } from "@excalidraw/element";
|
|
@@ -2908,7 +2912,7 @@ var _Fonts = class _Fonts {
|
|
|
2908
2912
|
for (const [index, fontFamily] of fontFamilies.entries()) {
|
|
2909
2913
|
const font = getFontString({
|
|
2910
2914
|
fontFamily,
|
|
2911
|
-
fontSize:
|
|
2915
|
+
fontSize: FONT_SIZES.sm
|
|
2912
2916
|
});
|
|
2913
2917
|
const text = _Fonts.getCharacters(charsPerFamily, fontFamily);
|
|
2914
2918
|
if (!window.document.fonts.check(font, text)) {
|
|
@@ -3065,7 +3069,12 @@ __publicField(_Fonts, "loadElementsFonts", async (elements) => {
|
|
|
3065
3069
|
var Fonts = _Fonts;
|
|
3066
3070
|
|
|
3067
3071
|
// renderer/staticScene.ts
|
|
3068
|
-
import {
|
|
3072
|
+
import {
|
|
3073
|
+
applyDarkModeFilter as applyDarkModeFilter2,
|
|
3074
|
+
FRAME_STYLE,
|
|
3075
|
+
THEME as THEME3,
|
|
3076
|
+
throttleRAF
|
|
3077
|
+
} from "@excalidraw/common";
|
|
3069
3078
|
import { isElementLink } from "@excalidraw/element";
|
|
3070
3079
|
import { createPlaceholderEmbeddableLabel } from "@excalidraw/element";
|
|
3071
3080
|
import { getBoundTextElement } from "@excalidraw/element";
|
|
@@ -3147,19 +3156,7 @@ var isPointHittingLink = (element, elementsMap, appState, [x, y], isMobile) => {
|
|
|
3147
3156
|
};
|
|
3148
3157
|
|
|
3149
3158
|
// renderer/helpers.ts
|
|
3150
|
-
import { THEME as THEME2,
|
|
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";
|
|
3159
|
+
import { THEME as THEME2, applyDarkModeFilter } from "@excalidraw/common";
|
|
3163
3160
|
var fillCircle = (context, cx, cy, radius, stroke, fill = true) => {
|
|
3164
3161
|
context.beginPath();
|
|
3165
3162
|
context.arc(cx, cy, radius, 0, Math.PI * 2);
|
|
@@ -3185,9 +3182,6 @@ var bootstrapCanvas = ({
|
|
|
3185
3182
|
const context = canvas.getContext("2d");
|
|
3186
3183
|
context.setTransform(1, 0, 0, 1, 0, 0);
|
|
3187
3184
|
context.scale(scale, scale);
|
|
3188
|
-
if (isExporting && theme === THEME2.DARK) {
|
|
3189
|
-
context.filter = THEME_FILTER;
|
|
3190
|
-
}
|
|
3191
3185
|
if (typeof viewBackgroundColor === "string") {
|
|
3192
3186
|
const hasTransparence = viewBackgroundColor === "transparent" || viewBackgroundColor.length === 5 || // #RGBA
|
|
3193
3187
|
viewBackgroundColor.length === 9 || // #RRGGBBA
|
|
@@ -3196,7 +3190,7 @@ var bootstrapCanvas = ({
|
|
|
3196
3190
|
context.clearRect(0, 0, normalizedWidth, normalizedHeight);
|
|
3197
3191
|
}
|
|
3198
3192
|
context.save();
|
|
3199
|
-
context.fillStyle = viewBackgroundColor;
|
|
3193
|
+
context.fillStyle = theme === THEME2.DARK ? applyDarkModeFilter(viewBackgroundColor) : viewBackgroundColor;
|
|
3200
3194
|
context.fillRect(0, 0, normalizedWidth, normalizedHeight);
|
|
3201
3195
|
context.restore();
|
|
3202
3196
|
} else {
|
|
@@ -3204,127 +3198,7 @@ var bootstrapCanvas = ({
|
|
|
3204
3198
|
}
|
|
3205
3199
|
return context;
|
|
3206
3200
|
};
|
|
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) => {
|
|
3201
|
+
var strokeRectWithRotation_simple = (context, x, y, width, height, cx, cy, angle, fill = false, radius = 0) => {
|
|
3328
3202
|
context.save();
|
|
3329
3203
|
context.translate(cx, cy);
|
|
3330
3204
|
context.rotate(angle);
|
|
@@ -3341,133 +3215,19 @@ var strokeRectWithRotation = (context, x, y, width, height, cx, cy, angle, fill
|
|
|
3341
3215
|
}
|
|
3342
3216
|
context.restore();
|
|
3343
3217
|
};
|
|
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
3218
|
|
|
3465
3219
|
// renderer/staticScene.ts
|
|
3466
3220
|
var GridLineColor = {
|
|
3467
|
-
|
|
3468
|
-
|
|
3221
|
+
[THEME3.LIGHT]: {
|
|
3222
|
+
bold: "#dddddd",
|
|
3223
|
+
regular: "#e5e5e5"
|
|
3224
|
+
},
|
|
3225
|
+
[THEME3.DARK]: {
|
|
3226
|
+
bold: applyDarkModeFilter2("#dddddd"),
|
|
3227
|
+
regular: applyDarkModeFilter2("#e5e5e5")
|
|
3228
|
+
}
|
|
3469
3229
|
};
|
|
3470
|
-
var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, height) => {
|
|
3230
|
+
var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, theme, width, height) => {
|
|
3471
3231
|
const offsetX = scrollX % gridSize - gridSize;
|
|
3472
3232
|
const offsetY = scrollY % gridSize - gridSize;
|
|
3473
3233
|
const actualGridSize = gridSize * zoom.value;
|
|
@@ -3486,7 +3246,7 @@ var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, he
|
|
|
3486
3246
|
const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
|
|
3487
3247
|
context.beginPath();
|
|
3488
3248
|
context.setLineDash(isBold ? [] : lineDash);
|
|
3489
|
-
context.strokeStyle = isBold ? GridLineColor.
|
|
3249
|
+
context.strokeStyle = isBold ? GridLineColor[theme].bold : GridLineColor[theme].regular;
|
|
3490
3250
|
context.moveTo(x, offsetY - gridSize);
|
|
3491
3251
|
context.lineTo(x, Math.ceil(offsetY + height + gridSize * 2));
|
|
3492
3252
|
context.stroke();
|
|
@@ -3501,7 +3261,7 @@ var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, he
|
|
|
3501
3261
|
const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
|
|
3502
3262
|
context.beginPath();
|
|
3503
3263
|
context.setLineDash(isBold ? [] : lineDash);
|
|
3504
|
-
context.strokeStyle = isBold ? GridLineColor.
|
|
3264
|
+
context.strokeStyle = isBold ? GridLineColor[theme].bold : GridLineColor[theme].regular;
|
|
3505
3265
|
context.moveTo(offsetX - gridSize, y);
|
|
3506
3266
|
context.lineTo(Math.ceil(offsetX + width + gridSize * 2), y);
|
|
3507
3267
|
context.stroke();
|
|
@@ -3614,6 +3374,7 @@ var _renderStaticScene = ({
|
|
|
3614
3374
|
appState.scrollX,
|
|
3615
3375
|
appState.scrollY,
|
|
3616
3376
|
appState.zoom,
|
|
3377
|
+
renderConfig.theme,
|
|
3617
3378
|
normalizedWidth / appState.zoom.value,
|
|
3618
3379
|
normalizedHeight / appState.zoom.value
|
|
3619
3380
|
);
|
|
@@ -3780,12 +3541,13 @@ var renderStaticScene = (renderConfig, throttle) => {
|
|
|
3780
3541
|
import {
|
|
3781
3542
|
FRAME_STYLE as FRAME_STYLE2,
|
|
3782
3543
|
MAX_DECIMALS_FOR_SVG_EXPORT,
|
|
3783
|
-
MIME_TYPES as MIME_TYPES4,
|
|
3784
3544
|
SVG_NS,
|
|
3545
|
+
THEME as THEME4,
|
|
3785
3546
|
getFontFamilyString,
|
|
3786
3547
|
isRTL,
|
|
3787
3548
|
isTestEnv as isTestEnv2,
|
|
3788
|
-
getVerticalOffset
|
|
3549
|
+
getVerticalOffset,
|
|
3550
|
+
applyDarkModeFilter as applyDarkModeFilter3
|
|
3789
3551
|
} from "@excalidraw/common";
|
|
3790
3552
|
import { normalizeLink, toValidURL } from "@excalidraw/common";
|
|
3791
3553
|
import { hashString } from "@excalidraw/element";
|
|
@@ -3804,9 +3566,8 @@ import {
|
|
|
3804
3566
|
isTextElement as isTextElement3
|
|
3805
3567
|
} from "@excalidraw/element";
|
|
3806
3568
|
import { getContainingFrame } from "@excalidraw/element";
|
|
3807
|
-
import { getCornerRadius
|
|
3569
|
+
import { getCornerRadius, isPathALoop } from "@excalidraw/element";
|
|
3808
3570
|
import { ShapeCache as ShapeCache2 } from "@excalidraw/element";
|
|
3809
|
-
import { getFreeDrawSvgPath, IMAGE_INVERT_FILTER } from "@excalidraw/element";
|
|
3810
3571
|
import { getElementAbsoluteCoords as getElementAbsoluteCoords3 } from "@excalidraw/element";
|
|
3811
3572
|
var roughSVGDrawWithPrecision = (rsvg, drawable, precision) => {
|
|
3812
3573
|
if (typeof precision === "undefined") {
|
|
@@ -3874,7 +3635,7 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
3874
3635
|
case "rectangle":
|
|
3875
3636
|
case "diamond":
|
|
3876
3637
|
case "ellipse": {
|
|
3877
|
-
const shape = ShapeCache2.generateElementShape(element,
|
|
3638
|
+
const shape = ShapeCache2.generateElementShape(element, renderConfig);
|
|
3878
3639
|
const node = roughSVGDrawWithPrecision(
|
|
3879
3640
|
rsvg,
|
|
3880
3641
|
shape,
|
|
@@ -3942,7 +3703,7 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
3942
3703
|
while (embeddableNode.firstChild) {
|
|
3943
3704
|
embeddableNode.removeChild(embeddableNode.firstChild);
|
|
3944
3705
|
}
|
|
3945
|
-
const radius =
|
|
3706
|
+
const radius = getCornerRadius(
|
|
3946
3707
|
Math.min(element.width, element.height),
|
|
3947
3708
|
element
|
|
3948
3709
|
);
|
|
@@ -4067,36 +3828,49 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4067
3828
|
break;
|
|
4068
3829
|
}
|
|
4069
3830
|
case "freedraw": {
|
|
4070
|
-
const
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
3831
|
+
const wrapper = svgRoot.ownerDocument.createElementNS(SVG_NS, "g");
|
|
3832
|
+
const shapes = ShapeCache2.generateElementShape(element, renderConfig);
|
|
3833
|
+
for (const shape of shapes) {
|
|
3834
|
+
if (typeof shape === "string") {
|
|
3835
|
+
const path = svgRoot.ownerDocument.createElementNS(SVG_NS, "path");
|
|
3836
|
+
path.setAttribute(
|
|
3837
|
+
"fill",
|
|
3838
|
+
renderConfig.theme === THEME4.DARK ? applyDarkModeFilter3(element.strokeColor) : element.strokeColor
|
|
3839
|
+
);
|
|
3840
|
+
path.setAttribute("d", shape);
|
|
3841
|
+
wrapper.appendChild(path);
|
|
3842
|
+
} else {
|
|
3843
|
+
const bgNode = roughSVGDrawWithPrecision(
|
|
3844
|
+
rsvg,
|
|
3845
|
+
shape,
|
|
3846
|
+
MAX_DECIMALS_FOR_SVG_EXPORT
|
|
3847
|
+
);
|
|
3848
|
+
if (bgNode.nodeName === "g") {
|
|
3849
|
+
while (bgNode.firstChild) {
|
|
3850
|
+
wrapper.appendChild(bgNode.firstChild);
|
|
3851
|
+
}
|
|
3852
|
+
} else {
|
|
3853
|
+
wrapper.appendChild(bgNode);
|
|
3854
|
+
}
|
|
3855
|
+
}
|
|
3856
|
+
}
|
|
4079
3857
|
if (opacity !== 1) {
|
|
4080
|
-
|
|
4081
|
-
|
|
3858
|
+
wrapper.setAttribute("stroke-opacity", `${opacity}`);
|
|
3859
|
+
wrapper.setAttribute("fill-opacity", `${opacity}`);
|
|
4082
3860
|
}
|
|
4083
|
-
|
|
3861
|
+
wrapper.setAttribute(
|
|
4084
3862
|
"transform",
|
|
4085
3863
|
`translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`
|
|
4086
3864
|
);
|
|
4087
|
-
|
|
4088
|
-
const path = svgRoot.ownerDocument.createElementNS(SVG_NS, "path");
|
|
4089
|
-
path.setAttribute("fill", element.strokeColor);
|
|
4090
|
-
path.setAttribute("d", getFreeDrawSvgPath(element));
|
|
4091
|
-
node.appendChild(path);
|
|
3865
|
+
wrapper.setAttribute("stroke", "none");
|
|
4092
3866
|
const g = maybeWrapNodesInFrameClipPath(
|
|
4093
3867
|
element,
|
|
4094
3868
|
root,
|
|
4095
|
-
[
|
|
3869
|
+
[wrapper],
|
|
4096
3870
|
renderConfig.frameRendering,
|
|
4097
3871
|
elementsMap
|
|
4098
3872
|
);
|
|
4099
|
-
addToRoot(g ||
|
|
3873
|
+
addToRoot(g || wrapper, element);
|
|
4100
3874
|
break;
|
|
4101
3875
|
}
|
|
4102
3876
|
case "image": {
|
|
@@ -4136,9 +3910,6 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4136
3910
|
}
|
|
4137
3911
|
const use = svgRoot.ownerDocument.createElementNS(SVG_NS, "use");
|
|
4138
3912
|
use.setAttribute("href", `#${symbolId}`);
|
|
4139
|
-
if (renderConfig.exportWithDarkMode && fileData.mimeType !== MIME_TYPES4.svg) {
|
|
4140
|
-
use.setAttribute("filter", IMAGE_INVERT_FILTER);
|
|
4141
|
-
}
|
|
4142
3913
|
let normalizedCropX = 0;
|
|
4143
3914
|
let normalizedCropY = 0;
|
|
4144
3915
|
if (element.crop) {
|
|
@@ -4185,14 +3956,19 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4185
3956
|
"clipPath"
|
|
4186
3957
|
);
|
|
4187
3958
|
clipPath.id = `image-clipPath-${element.id}`;
|
|
3959
|
+
clipPath.setAttribute("clipPathUnits", "userSpaceOnUse");
|
|
4188
3960
|
const clipRect = svgRoot.ownerDocument.createElementNS(
|
|
4189
3961
|
SVG_NS,
|
|
4190
3962
|
"rect"
|
|
4191
3963
|
);
|
|
4192
|
-
const radius =
|
|
3964
|
+
const radius = getCornerRadius(
|
|
4193
3965
|
Math.min(element.width, element.height),
|
|
4194
3966
|
element
|
|
4195
3967
|
);
|
|
3968
|
+
const clipOffsetX = element.crop ? normalizedCropX : 0;
|
|
3969
|
+
const clipOffsetY = element.crop ? normalizedCropY : 0;
|
|
3970
|
+
clipRect.setAttribute("x", `${clipOffsetX}`);
|
|
3971
|
+
clipRect.setAttribute("y", `${clipOffsetY}`);
|
|
4196
3972
|
clipRect.setAttribute("width", `${element.width}`);
|
|
4197
3973
|
clipRect.setAttribute("height", `${element.height}`);
|
|
4198
3974
|
clipRect.setAttribute("rx", `${radius}`);
|
|
@@ -4225,7 +4001,10 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4225
4001
|
rect.setAttribute("rx", FRAME_STYLE2.radius.toString());
|
|
4226
4002
|
rect.setAttribute("ry", FRAME_STYLE2.radius.toString());
|
|
4227
4003
|
rect.setAttribute("fill", "none");
|
|
4228
|
-
rect.setAttribute(
|
|
4004
|
+
rect.setAttribute(
|
|
4005
|
+
"stroke",
|
|
4006
|
+
renderConfig.theme === THEME4.DARK ? applyDarkModeFilter3(FRAME_STYLE2.strokeColor) : FRAME_STYLE2.strokeColor
|
|
4007
|
+
);
|
|
4229
4008
|
rect.setAttribute("stroke-width", FRAME_STYLE2.strokeWidth.toString());
|
|
4230
4009
|
addToRoot(rect, element);
|
|
4231
4010
|
}
|
|
@@ -4262,7 +4041,10 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4262
4041
|
text.setAttribute("y", `${i * lineHeightPx + verticalOffset}`);
|
|
4263
4042
|
text.setAttribute("font-family", getFontFamilyString(element));
|
|
4264
4043
|
text.setAttribute("font-size", `${element.fontSize}px`);
|
|
4265
|
-
text.setAttribute(
|
|
4044
|
+
text.setAttribute(
|
|
4045
|
+
"fill",
|
|
4046
|
+
renderConfig.theme === THEME4.DARK ? applyDarkModeFilter3(element.strokeColor) : element.strokeColor
|
|
4047
|
+
);
|
|
4266
4048
|
text.setAttribute("text-anchor", textAnchor);
|
|
4267
4049
|
text.setAttribute("style", "white-space: pre;");
|
|
4268
4050
|
text.setAttribute("direction", direction);
|
|
@@ -4475,7 +4257,7 @@ var exportToCanvas = async (elements, appState, files, {
|
|
|
4475
4257
|
scrollY: -minY + exportPadding,
|
|
4476
4258
|
zoom: defaultAppState.zoom,
|
|
4477
4259
|
shouldCacheIgnoreZoom: false,
|
|
4478
|
-
theme: appState.exportWithDarkMode ?
|
|
4260
|
+
theme: appState.exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
|
|
4479
4261
|
},
|
|
4480
4262
|
renderConfig: {
|
|
4481
4263
|
canvasBackgroundColor: viewBackgroundColor,
|
|
@@ -4485,7 +4267,8 @@ var exportToCanvas = async (elements, appState, files, {
|
|
|
4485
4267
|
// empty disables embeddable rendering
|
|
4486
4268
|
embedsValidationStatus: /* @__PURE__ */ new Map(),
|
|
4487
4269
|
elementsPendingErasure: /* @__PURE__ */ new Set(),
|
|
4488
|
-
pendingFlowchartNodes: null
|
|
4270
|
+
pendingFlowchartNodes: null,
|
|
4271
|
+
theme: appState.exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
|
|
4489
4272
|
}
|
|
4490
4273
|
});
|
|
4491
4274
|
return canvas;
|
|
@@ -4527,9 +4310,6 @@ var exportToSvg = async (elements, appState, files, opts) => {
|
|
|
4527
4310
|
svgRoot.setAttribute("viewBox", `0 0 ${width} ${height}`);
|
|
4528
4311
|
svgRoot.setAttribute("width", `${width * exportScale}`);
|
|
4529
4312
|
svgRoot.setAttribute("height", `${height * exportScale}`);
|
|
4530
|
-
if (exportWithDarkMode) {
|
|
4531
|
-
svgRoot.setAttribute("filter", THEME_FILTER2);
|
|
4532
|
-
}
|
|
4533
4313
|
const defsElement = svgRoot.ownerDocument.createElementNS(SVG_NS2, "defs");
|
|
4534
4314
|
const metadataElement = svgRoot.ownerDocument.createElementNS(
|
|
4535
4315
|
SVG_NS2,
|
|
@@ -4593,7 +4373,10 @@ var exportToSvg = async (elements, appState, files, opts) => {
|
|
|
4593
4373
|
rect.setAttribute("y", "0");
|
|
4594
4374
|
rect.setAttribute("width", `${width}`);
|
|
4595
4375
|
rect.setAttribute("height", `${height}`);
|
|
4596
|
-
rect.setAttribute(
|
|
4376
|
+
rect.setAttribute(
|
|
4377
|
+
"fill",
|
|
4378
|
+
exportWithDarkMode ? applyDarkModeFilter4(viewBackgroundColor) : viewBackgroundColor
|
|
4379
|
+
);
|
|
4597
4380
|
svgRoot.appendChild(rect);
|
|
4598
4381
|
}
|
|
4599
4382
|
const rsvg = rough.svg(svgRoot);
|
|
@@ -4615,7 +4398,8 @@ var exportToSvg = async (elements, appState, files, opts) => {
|
|
|
4615
4398
|
embedsValidationStatus: renderEmbeddables ? new Map(
|
|
4616
4399
|
elementsForRender.filter((element) => isFrameLikeElement(element)).map((element) => [element.id, true])
|
|
4617
4400
|
) : /* @__PURE__ */ new Map(),
|
|
4618
|
-
reuseImages: opts?.reuseImages ?? true
|
|
4401
|
+
reuseImages: opts?.reuseImages ?? true,
|
|
4402
|
+
theme: exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
|
|
4619
4403
|
}
|
|
4620
4404
|
);
|
|
4621
4405
|
return svgRoot;
|
|
@@ -4629,7 +4413,7 @@ var encodeSvgBase64Payload = ({
|
|
|
4629
4413
|
true
|
|
4630
4414
|
);
|
|
4631
4415
|
metadataElement.appendChild(
|
|
4632
|
-
createHTMLComment(`payload-type:${
|
|
4416
|
+
createHTMLComment(`payload-type:${MIME_TYPES4.excalidraw}`)
|
|
4633
4417
|
);
|
|
4634
4418
|
metadataElement.appendChild(createHTMLComment("payload-version:2"));
|
|
4635
4419
|
metadataElement.appendChild(createHTMLComment("payload-start"));
|
|
@@ -4637,7 +4421,7 @@ var encodeSvgBase64Payload = ({
|
|
|
4637
4421
|
metadataElement.appendChild(createHTMLComment("payload-end"));
|
|
4638
4422
|
};
|
|
4639
4423
|
var decodeSvgBase64Payload = ({ svg }) => {
|
|
4640
|
-
if (svg.includes(`payload-type:${
|
|
4424
|
+
if (svg.includes(`payload-type:${MIME_TYPES4.excalidraw}`)) {
|
|
4641
4425
|
const match = svg.match(
|
|
4642
4426
|
/<!-- payload-start -->\s*(.+?)\s*<!-- payload-end -->/
|
|
4643
4427
|
);
|
|
@@ -4678,7 +4462,7 @@ var getExportSize = (elements, exportPadding, scale) => {
|
|
|
4678
4462
|
};
|
|
4679
4463
|
|
|
4680
4464
|
// data/restore.ts
|
|
4681
|
-
import { isFiniteNumber, pointFrom as
|
|
4465
|
+
import { isFiniteNumber, pointFrom as pointFrom2 } from "@excalidraw/math";
|
|
4682
4466
|
import {
|
|
4683
4467
|
DEFAULT_FONT_FAMILY as DEFAULT_FONT_FAMILY2,
|
|
4684
4468
|
DEFAULT_TEXT_ALIGN as DEFAULT_TEXT_ALIGN2,
|
|
@@ -4697,7 +4481,13 @@ import {
|
|
|
4697
4481
|
normalizeLink as normalizeLink2,
|
|
4698
4482
|
getLineHeight
|
|
4699
4483
|
} from "@excalidraw/common";
|
|
4700
|
-
import {
|
|
4484
|
+
import {
|
|
4485
|
+
calculateFixedPointForNonElbowArrowBinding,
|
|
4486
|
+
getNonDeletedElements,
|
|
4487
|
+
isPointInElement,
|
|
4488
|
+
isValidPolygon,
|
|
4489
|
+
projectFixedPointOntoDiagonal
|
|
4490
|
+
} from "@excalidraw/element";
|
|
4701
4491
|
import { normalizeFixedPoint } from "@excalidraw/element";
|
|
4702
4492
|
import {
|
|
4703
4493
|
updateElbowArrowPoints,
|
|
@@ -4711,7 +4501,6 @@ import {
|
|
|
4711
4501
|
isArrowBoundToElement,
|
|
4712
4502
|
isArrowElement as isArrowElement2,
|
|
4713
4503
|
isElbowArrow,
|
|
4714
|
-
isFixedPointBinding,
|
|
4715
4504
|
isLinearElement,
|
|
4716
4505
|
isLineElement,
|
|
4717
4506
|
isTextElement as isTextElement4,
|
|
@@ -4746,23 +4535,62 @@ var getFontFamilyByName = (fontFamilyName) => {
|
|
|
4746
4535
|
}
|
|
4747
4536
|
return DEFAULT_FONT_FAMILY2;
|
|
4748
4537
|
};
|
|
4749
|
-
var repairBinding = (element, binding) => {
|
|
4538
|
+
var repairBinding = (element, binding, targetElementsMap, existingElementsMap, startOrEnd) => {
|
|
4750
4539
|
if (!binding) {
|
|
4751
4540
|
return null;
|
|
4752
4541
|
}
|
|
4753
|
-
const focus = binding.focus || 0;
|
|
4754
4542
|
if (isElbowArrow(element)) {
|
|
4755
|
-
const fixedPointBinding =
|
|
4543
|
+
const fixedPointBinding = {
|
|
4756
4544
|
...binding,
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
}
|
|
4545
|
+
fixedPoint: normalizeFixedPoint(binding.fixedPoint ?? [0, 0]),
|
|
4546
|
+
mode: binding.mode || "orbit"
|
|
4547
|
+
};
|
|
4760
4548
|
return fixedPointBinding;
|
|
4761
4549
|
}
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4550
|
+
if (binding.mode) {
|
|
4551
|
+
if (binding.elementId) {
|
|
4552
|
+
return {
|
|
4553
|
+
elementId: binding.elementId,
|
|
4554
|
+
mode: binding.mode,
|
|
4555
|
+
fixedPoint: normalizeFixedPoint(binding.fixedPoint || [0.5, 0.5])
|
|
4556
|
+
};
|
|
4557
|
+
}
|
|
4558
|
+
return null;
|
|
4559
|
+
}
|
|
4560
|
+
const targetBoundElement = targetElementsMap.get(binding.elementId) || void 0;
|
|
4561
|
+
const boundElement = targetBoundElement || existingElementsMap?.get(
|
|
4562
|
+
binding.elementId
|
|
4563
|
+
) || void 0;
|
|
4564
|
+
const elementsMap = targetBoundElement ? targetElementsMap : existingElementsMap;
|
|
4565
|
+
if (boundElement && elementsMap) {
|
|
4566
|
+
const p = LinearElementEditor2.getPointAtIndexGlobalCoordinates(
|
|
4567
|
+
element,
|
|
4568
|
+
startOrEnd === "start" ? 0 : element.points.length - 1,
|
|
4569
|
+
elementsMap
|
|
4570
|
+
);
|
|
4571
|
+
const mode = isPointInElement(p, boundElement, elementsMap) ? "inside" : "orbit";
|
|
4572
|
+
const focusPoint = mode === "inside" ? p : projectFixedPointOntoDiagonal(
|
|
4573
|
+
element,
|
|
4574
|
+
p,
|
|
4575
|
+
boundElement,
|
|
4576
|
+
startOrEnd,
|
|
4577
|
+
elementsMap
|
|
4578
|
+
) || p;
|
|
4579
|
+
const { fixedPoint } = calculateFixedPointForNonElbowArrowBinding(
|
|
4580
|
+
element,
|
|
4581
|
+
boundElement,
|
|
4582
|
+
startOrEnd,
|
|
4583
|
+
elementsMap,
|
|
4584
|
+
focusPoint
|
|
4585
|
+
);
|
|
4586
|
+
return {
|
|
4587
|
+
mode,
|
|
4588
|
+
elementId: binding.elementId,
|
|
4589
|
+
fixedPoint
|
|
4590
|
+
};
|
|
4591
|
+
}
|
|
4592
|
+
console.error(`could not repair binding for element`);
|
|
4593
|
+
return null;
|
|
4766
4594
|
};
|
|
4767
4595
|
var restoreElementWithProperties = (element, extra) => {
|
|
4768
4596
|
const base = {
|
|
@@ -4815,7 +4643,7 @@ var restoreElementWithProperties = (element, extra) => {
|
|
|
4815
4643
|
delete ret.boundElementIds;
|
|
4816
4644
|
return ret;
|
|
4817
4645
|
};
|
|
4818
|
-
var restoreElement = (element, opts) => {
|
|
4646
|
+
var restoreElement = (element, targetElementsMap, existingElementsMap, opts) => {
|
|
4819
4647
|
element = { ...element };
|
|
4820
4648
|
switch (element.type) {
|
|
4821
4649
|
case "text":
|
|
@@ -4855,7 +4683,6 @@ var restoreElement = (element, opts) => {
|
|
|
4855
4683
|
case "freedraw": {
|
|
4856
4684
|
return restoreElementWithProperties(element, {
|
|
4857
4685
|
points: element.points,
|
|
4858
|
-
lastCommittedPoint: null,
|
|
4859
4686
|
simulatePressure: element.simulatePressure,
|
|
4860
4687
|
pressures: element.pressures
|
|
4861
4688
|
});
|
|
@@ -4874,16 +4701,15 @@ var restoreElement = (element, opts) => {
|
|
|
4874
4701
|
let y = element.y;
|
|
4875
4702
|
let points = (
|
|
4876
4703
|
// migrate old arrow model to new one
|
|
4877
|
-
!Array.isArray(element.points) || element.points.length < 2 ? [
|
|
4704
|
+
!Array.isArray(element.points) || element.points.length < 2 ? [pointFrom2(0, 0), pointFrom2(element.width, element.height)] : element.points
|
|
4878
4705
|
);
|
|
4879
4706
|
if (points[0][0] !== 0 || points[0][1] !== 0) {
|
|
4880
4707
|
({ points, x, y } = LinearElementEditor2.getNormalizeElementPointsAndCoords(element));
|
|
4881
4708
|
}
|
|
4882
4709
|
return restoreElementWithProperties(element, {
|
|
4883
|
-
type:
|
|
4884
|
-
startBinding:
|
|
4885
|
-
endBinding:
|
|
4886
|
-
lastCommittedPoint: null,
|
|
4710
|
+
type: "line",
|
|
4711
|
+
startBinding: null,
|
|
4712
|
+
endBinding: null,
|
|
4887
4713
|
startArrowhead,
|
|
4888
4714
|
endArrowhead,
|
|
4889
4715
|
points,
|
|
@@ -4896,20 +4722,28 @@ var restoreElement = (element, opts) => {
|
|
|
4896
4722
|
});
|
|
4897
4723
|
case "arrow": {
|
|
4898
4724
|
const { startArrowhead: startArrowhead2 = null, endArrowhead: endArrowhead2 = "arrow" } = element;
|
|
4899
|
-
|
|
4900
|
-
|
|
4901
|
-
|
|
4725
|
+
const x2 = element.x;
|
|
4726
|
+
const y2 = element.y;
|
|
4727
|
+
const points2 = (
|
|
4902
4728
|
// migrate old arrow model to new one
|
|
4903
|
-
!Array.isArray(element.points) || element.points.length < 2 ? [
|
|
4729
|
+
!Array.isArray(element.points) || element.points.length < 2 ? [pointFrom2(0, 0), pointFrom2(element.width, element.height)] : element.points
|
|
4904
4730
|
);
|
|
4905
|
-
if (points2[0][0] !== 0 || points2[0][1] !== 0) {
|
|
4906
|
-
({ points: points2, x: x2, y: y2 } = LinearElementEditor2.getNormalizeElementPointsAndCoords(element));
|
|
4907
|
-
}
|
|
4908
4731
|
const base = {
|
|
4909
4732
|
type: element.type,
|
|
4910
|
-
startBinding: repairBinding(
|
|
4911
|
-
|
|
4912
|
-
|
|
4733
|
+
startBinding: repairBinding(
|
|
4734
|
+
element,
|
|
4735
|
+
element.startBinding,
|
|
4736
|
+
targetElementsMap,
|
|
4737
|
+
existingElementsMap,
|
|
4738
|
+
"start"
|
|
4739
|
+
),
|
|
4740
|
+
endBinding: repairBinding(
|
|
4741
|
+
element,
|
|
4742
|
+
element.endBinding,
|
|
4743
|
+
targetElementsMap,
|
|
4744
|
+
existingElementsMap,
|
|
4745
|
+
"end"
|
|
4746
|
+
),
|
|
4913
4747
|
startArrowhead: startArrowhead2,
|
|
4914
4748
|
endArrowhead: endArrowhead2,
|
|
4915
4749
|
points: points2,
|
|
@@ -4918,15 +4752,19 @@ var restoreElement = (element, opts) => {
|
|
|
4918
4752
|
elbowed: element.elbowed,
|
|
4919
4753
|
...getSizeFromPoints(points2)
|
|
4920
4754
|
};
|
|
4921
|
-
|
|
4755
|
+
const restoredElement = isElbowArrow(element) ? restoreElementWithProperties(element, {
|
|
4922
4756
|
...base,
|
|
4923
4757
|
elbowed: true,
|
|
4924
|
-
startBinding: repairBinding(element, element.startBinding),
|
|
4925
|
-
endBinding: repairBinding(element, element.endBinding),
|
|
4926
4758
|
fixedSegments: element.fixedSegments?.length && base.points.length >= 4 ? element.fixedSegments : null,
|
|
4927
4759
|
startIsSpecial: element.startIsSpecial,
|
|
4928
4760
|
endIsSpecial: element.endIsSpecial
|
|
4929
4761
|
}) : restoreElementWithProperties(element, base);
|
|
4762
|
+
return {
|
|
4763
|
+
...restoredElement,
|
|
4764
|
+
...LinearElementEditor2.getNormalizeElementPointsAndCoords(
|
|
4765
|
+
restoredElement
|
|
4766
|
+
)
|
|
4767
|
+
};
|
|
4930
4768
|
}
|
|
4931
4769
|
case "ellipse":
|
|
4932
4770
|
case "rectangle":
|
|
@@ -4991,21 +4829,27 @@ var repairFrameMembership = (element, elementsMap) => {
|
|
|
4991
4829
|
}
|
|
4992
4830
|
}
|
|
4993
4831
|
};
|
|
4994
|
-
var restoreElements = (
|
|
4832
|
+
var restoreElements = (targetElements, existingElements, opts) => {
|
|
4995
4833
|
const existingIds = /* @__PURE__ */ new Set();
|
|
4996
|
-
const
|
|
4834
|
+
const targetElementsMap = arrayToMap2(targetElements || []);
|
|
4835
|
+
const existingElementsMap = existingElements ? arrayToMap2(existingElements) : null;
|
|
4997
4836
|
const restoredElements = syncInvalidIndices2(
|
|
4998
|
-
(
|
|
4837
|
+
(targetElements || []).reduce((elements, element) => {
|
|
4999
4838
|
if (element.type === "selection") {
|
|
5000
|
-
return
|
|
4839
|
+
return elements;
|
|
5001
4840
|
}
|
|
5002
|
-
let migratedElement = restoreElement(
|
|
5003
|
-
|
|
5004
|
-
|
|
4841
|
+
let migratedElement = restoreElement(
|
|
4842
|
+
element,
|
|
4843
|
+
targetElementsMap,
|
|
4844
|
+
existingElementsMap,
|
|
4845
|
+
{
|
|
4846
|
+
deleteInvisibleElements: opts?.deleteInvisibleElements
|
|
4847
|
+
}
|
|
4848
|
+
);
|
|
5005
4849
|
if (migratedElement) {
|
|
5006
|
-
const localElement =
|
|
4850
|
+
const localElement = existingElementsMap?.get(element.id);
|
|
5007
4851
|
const shouldMarkAsDeleted = opts?.deleteInvisibleElements && isInvisiblySmallElement(element);
|
|
5008
|
-
if (shouldMarkAsDeleted
|
|
4852
|
+
if (shouldMarkAsDeleted) {
|
|
5009
4853
|
migratedElement = bumpVersion(migratedElement, localElement?.version);
|
|
5010
4854
|
}
|
|
5011
4855
|
if (shouldMarkAsDeleted) {
|
|
@@ -5015,9 +4859,9 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5015
4859
|
migratedElement = { ...migratedElement, id: randomId() };
|
|
5016
4860
|
}
|
|
5017
4861
|
existingIds.add(migratedElement.id);
|
|
5018
|
-
|
|
4862
|
+
elements.push(migratedElement);
|
|
5019
4863
|
}
|
|
5020
|
-
return
|
|
4864
|
+
return elements;
|
|
5021
4865
|
}, [])
|
|
5022
4866
|
);
|
|
5023
4867
|
if (!opts?.repairBindings) {
|
|
@@ -5061,7 +4905,7 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5061
4905
|
restoredElementsMap,
|
|
5062
4906
|
{
|
|
5063
4907
|
points: [
|
|
5064
|
-
|
|
4908
|
+
pointFrom2(0, 0),
|
|
5065
4909
|
element.points[element.points.length - 1]
|
|
5066
4910
|
]
|
|
5067
4911
|
}
|
|
@@ -5090,10 +4934,10 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5090
4934
|
width: boundElement.width,
|
|
5091
4935
|
height: boundElement.height,
|
|
5092
4936
|
points: [
|
|
5093
|
-
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
4937
|
+
pointFrom2(0, 0),
|
|
4938
|
+
pointFrom2(0, -10),
|
|
4939
|
+
pointFrom2(boundElement.width / 2 + 5, -10),
|
|
4940
|
+
pointFrom2(
|
|
5097
4941
|
boundElement.width / 2 + 5,
|
|
5098
4942
|
boundElement.height / 2 + 5
|
|
5099
4943
|
)
|
|
@@ -5171,13 +5015,6 @@ var restoreAppState = (appState, localAppState) => {
|
|
|
5171
5015
|
editingFrame: null
|
|
5172
5016
|
};
|
|
5173
5017
|
};
|
|
5174
|
-
var restore = (data, localAppState, localElements, elementsConfig) => {
|
|
5175
|
-
return {
|
|
5176
|
-
elements: restoreElements(data?.elements, localElements, elementsConfig),
|
|
5177
|
-
appState: restoreAppState(data?.appState, localAppState || null),
|
|
5178
|
-
files: data?.files || {}
|
|
5179
|
-
};
|
|
5180
|
-
};
|
|
5181
5018
|
var restoreLibraryItem = (libraryItem) => {
|
|
5182
5019
|
const elements = restoreElements(
|
|
5183
5020
|
getNonDeletedElements(libraryItem.elements),
|
|
@@ -5217,9 +5054,9 @@ var restoreLibraryItems = (libraryItems = [], defaultStatus) => {
|
|
|
5217
5054
|
// data/blob.ts
|
|
5218
5055
|
var parseFileContents = async (blob) => {
|
|
5219
5056
|
let contents;
|
|
5220
|
-
if (blob.type ===
|
|
5057
|
+
if (blob.type === MIME_TYPES5.png) {
|
|
5221
5058
|
try {
|
|
5222
|
-
return await (await import("./data/image-
|
|
5059
|
+
return await (await import("./data/image-Q6JHR7OE.js")).decodePngMetadata(blob);
|
|
5223
5060
|
} catch (error) {
|
|
5224
5061
|
if (error.message === "INVALID") {
|
|
5225
5062
|
throw new ImageSceneDataError(
|
|
@@ -5244,7 +5081,7 @@ var parseFileContents = async (blob) => {
|
|
|
5244
5081
|
};
|
|
5245
5082
|
});
|
|
5246
5083
|
}
|
|
5247
|
-
if (blob.type ===
|
|
5084
|
+
if (blob.type === MIME_TYPES5.svg) {
|
|
5248
5085
|
try {
|
|
5249
5086
|
return decodeSvgBase64Payload({
|
|
5250
5087
|
svg: contents
|
|
@@ -5300,30 +5137,27 @@ var loadSceneOrLibraryFromBlob = async (blob, localAppState, localElements, file
|
|
|
5300
5137
|
}
|
|
5301
5138
|
if (isValidExcalidrawData(data)) {
|
|
5302
5139
|
return {
|
|
5303
|
-
type:
|
|
5304
|
-
data:
|
|
5305
|
-
{
|
|
5306
|
-
|
|
5307
|
-
|
|
5140
|
+
type: MIME_TYPES5.excalidraw,
|
|
5141
|
+
data: {
|
|
5142
|
+
elements: restoreElements(data.elements, localElements, {
|
|
5143
|
+
repairBindings: true,
|
|
5144
|
+
deleteInvisibleElements: true
|
|
5145
|
+
}),
|
|
5146
|
+
appState: restoreAppState(
|
|
5147
|
+
{
|
|
5308
5148
|
theme: localAppState?.theme,
|
|
5309
5149
|
fileHandle: fileHandle || blob.handle || null,
|
|
5310
5150
|
...cleanAppStateForExport(data.appState || {}),
|
|
5311
5151
|
...localAppState ? calculateScrollCenter(data.elements || [], localAppState) : {}
|
|
5312
5152
|
},
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
{
|
|
5318
|
-
repairBindings: true,
|
|
5319
|
-
refreshDimensions: false,
|
|
5320
|
-
deleteInvisibleElements: true
|
|
5321
|
-
}
|
|
5322
|
-
)
|
|
5153
|
+
localAppState
|
|
5154
|
+
),
|
|
5155
|
+
files: data.files || {}
|
|
5156
|
+
}
|
|
5323
5157
|
};
|
|
5324
5158
|
} else if (isValidLibrary(data)) {
|
|
5325
5159
|
return {
|
|
5326
|
-
type:
|
|
5160
|
+
type: MIME_TYPES5.excalidrawlib,
|
|
5327
5161
|
data
|
|
5328
5162
|
};
|
|
5329
5163
|
}
|
|
@@ -5342,7 +5176,7 @@ var loadFromBlob = async (blob, localAppState, localElements, fileHandle) => {
|
|
|
5342
5176
|
localElements,
|
|
5343
5177
|
fileHandle
|
|
5344
5178
|
);
|
|
5345
|
-
if (ret.type !==
|
|
5179
|
+
if (ret.type !== MIME_TYPES5.excalidraw) {
|
|
5346
5180
|
throw new Error("Error: invalid file");
|
|
5347
5181
|
}
|
|
5348
5182
|
return ret.data;
|
|
@@ -5410,7 +5244,7 @@ var dataURLToString = (dataURL) => {
|
|
|
5410
5244
|
return base64ToString(dataURL.slice(dataURL.indexOf(",") + 1));
|
|
5411
5245
|
};
|
|
5412
5246
|
var resizeImageFile = async (file, opts) => {
|
|
5413
|
-
if (file.type ===
|
|
5247
|
+
if (file.type === MIME_TYPES5.svg) {
|
|
5414
5248
|
return file;
|
|
5415
5249
|
}
|
|
5416
5250
|
const [pica, imageBlobReduce] = await Promise.all([
|
|
@@ -5443,7 +5277,7 @@ var resizeImageFile = async (file, opts) => {
|
|
|
5443
5277
|
};
|
|
5444
5278
|
var SVGStringToFile = (SVGString, filename = "") => {
|
|
5445
5279
|
return new File([new TextEncoder().encode(SVGString)], filename, {
|
|
5446
|
-
type:
|
|
5280
|
+
type: MIME_TYPES5.svg
|
|
5447
5281
|
});
|
|
5448
5282
|
};
|
|
5449
5283
|
var ImageURLToFile = async (imageUrl, filename = "") => {
|
|
@@ -5476,61 +5310,52 @@ var getFileHandle = async (event) => {
|
|
|
5476
5310
|
}
|
|
5477
5311
|
return null;
|
|
5478
5312
|
};
|
|
5479
|
-
var getActualMimeTypeFromImage = (
|
|
5313
|
+
var getActualMimeTypeFromImage = async (file) => {
|
|
5480
5314
|
let mimeType = null;
|
|
5481
|
-
const
|
|
5482
|
-
|
|
5315
|
+
const leadingBytes = [
|
|
5316
|
+
...new Uint8Array(await blobToArrayBuffer(file.slice(0, 15)))
|
|
5317
|
+
].join(" ");
|
|
5318
|
+
const bytes = {
|
|
5483
5319
|
// https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
|
|
5484
|
-
png:
|
|
5320
|
+
png: /^137 80 78 71 13 10 26 10\b/,
|
|
5485
5321
|
// https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
|
|
5486
5322
|
// jpg is a bit wonky. Checking the first three bytes should be enough,
|
|
5487
5323
|
// but may yield false positives. (https://stackoverflow.com/a/23360709/927631)
|
|
5488
|
-
jpg:
|
|
5324
|
+
jpg: /^255 216 255\b/,
|
|
5489
5325
|
// https://en.wikipedia.org/wiki/GIF#Example_GIF_file
|
|
5490
|
-
gif:
|
|
5326
|
+
gif: /^71 73 70 56 57 97\b/,
|
|
5327
|
+
// 4 bytes for RIFF + 4 bytes for chunk size + WEBP identifier
|
|
5328
|
+
webp: /^82 73 70 70 \d+ \d+ \d+ \d+ 87 69 66 80 86 80 56\b/
|
|
5491
5329
|
};
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
return mimeType;
|
|
5330
|
+
for (const type of Object.keys(bytes)) {
|
|
5331
|
+
if (leadingBytes.match(bytes[type])) {
|
|
5332
|
+
mimeType = MIME_TYPES5[type];
|
|
5333
|
+
break;
|
|
5334
|
+
}
|
|
5335
|
+
}
|
|
5336
|
+
return mimeType || file.type || null;
|
|
5500
5337
|
};
|
|
5501
5338
|
var createFile = (blob, mimeType, name) => {
|
|
5502
5339
|
return new File([blob], name || "", {
|
|
5503
5340
|
type: mimeType
|
|
5504
5341
|
});
|
|
5505
5342
|
};
|
|
5343
|
+
var normalizedFileSymbol = Symbol("fileNormalized");
|
|
5506
5344
|
var normalizeFile = async (file) => {
|
|
5507
|
-
if (
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5516
|
-
await blobToArrayBuffer(file),
|
|
5517
|
-
MIME_TYPES6.excalidraw,
|
|
5518
|
-
file.name
|
|
5519
|
-
);
|
|
5520
|
-
} else {
|
|
5521
|
-
const buffer = await blobToArrayBuffer(file);
|
|
5522
|
-
const mimeType = getActualMimeTypeFromImage(buffer);
|
|
5523
|
-
if (mimeType) {
|
|
5524
|
-
file = createFile(buffer, mimeType, file.name);
|
|
5525
|
-
}
|
|
5526
|
-
}
|
|
5527
|
-
} else if (isSupportedImageFile(file)) {
|
|
5528
|
-
const buffer = await blobToArrayBuffer(file);
|
|
5529
|
-
const mimeType = getActualMimeTypeFromImage(buffer);
|
|
5345
|
+
if (file[normalizedFileSymbol]) {
|
|
5346
|
+
return file;
|
|
5347
|
+
}
|
|
5348
|
+
if (file?.name?.endsWith(".excalidrawlib")) {
|
|
5349
|
+
file = createFile(file, MIME_TYPES5.excalidrawlib, file.name);
|
|
5350
|
+
} else if (file?.name?.endsWith(".excalidraw")) {
|
|
5351
|
+
file = createFile(file, MIME_TYPES5.excalidraw, file.name);
|
|
5352
|
+
} else if (!file.type || file.type?.startsWith("image/")) {
|
|
5353
|
+
const mimeType = await getActualMimeTypeFromImage(file);
|
|
5530
5354
|
if (mimeType && mimeType !== file.type) {
|
|
5531
|
-
file = createFile(
|
|
5355
|
+
file = createFile(file, mimeType, file.name);
|
|
5532
5356
|
}
|
|
5533
5357
|
}
|
|
5358
|
+
file[normalizedFileSymbol] = true;
|
|
5534
5359
|
return file;
|
|
5535
5360
|
};
|
|
5536
5361
|
var blobToArrayBuffer = (blob) => {
|
|
@@ -5564,7 +5389,7 @@ var encodePngMetadata = async ({
|
|
|
5564
5389
|
}) => {
|
|
5565
5390
|
const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob)));
|
|
5566
5391
|
const metadataChunk = tEXt.encode(
|
|
5567
|
-
|
|
5392
|
+
MIME_TYPES6.excalidraw,
|
|
5568
5393
|
JSON.stringify(
|
|
5569
5394
|
encode({
|
|
5570
5395
|
text: metadata,
|
|
@@ -5573,11 +5398,11 @@ var encodePngMetadata = async ({
|
|
|
5573
5398
|
)
|
|
5574
5399
|
);
|
|
5575
5400
|
chunks.splice(-1, 0, metadataChunk);
|
|
5576
|
-
return new Blob([encodePng(chunks)], { type:
|
|
5401
|
+
return new Blob([encodePng(chunks)], { type: MIME_TYPES6.png });
|
|
5577
5402
|
};
|
|
5578
5403
|
var decodePngMetadata = async (blob) => {
|
|
5579
5404
|
const metadata = await getTEXtChunk(blob);
|
|
5580
|
-
if (metadata?.keyword ===
|
|
5405
|
+
if (metadata?.keyword === MIME_TYPES6.excalidraw) {
|
|
5581
5406
|
try {
|
|
5582
5407
|
const encodedData = JSON.parse(metadata.text);
|
|
5583
5408
|
if (!("encoded" in encodedData)) {
|
|
@@ -5630,10 +5455,7 @@ export {
|
|
|
5630
5455
|
fillCircle,
|
|
5631
5456
|
getNormalizedCanvasDimensions,
|
|
5632
5457
|
bootstrapCanvas,
|
|
5633
|
-
|
|
5634
|
-
strokeEllipseWithRotation,
|
|
5635
|
-
strokeRectWithRotation,
|
|
5636
|
-
drawHighlightForDiamondWithRotation,
|
|
5458
|
+
strokeRectWithRotation_simple,
|
|
5637
5459
|
frameClip,
|
|
5638
5460
|
renderStaticSceneThrottled,
|
|
5639
5461
|
renderStaticScene,
|
|
@@ -5643,7 +5465,6 @@ export {
|
|
|
5643
5465
|
restoreElement,
|
|
5644
5466
|
restoreElements,
|
|
5645
5467
|
restoreAppState,
|
|
5646
|
-
restore,
|
|
5647
5468
|
restoreLibraryItems,
|
|
5648
5469
|
getTEXtChunk,
|
|
5649
5470
|
encodePngMetadata,
|
|
@@ -5669,4 +5490,4 @@ export {
|
|
|
5669
5490
|
createFile,
|
|
5670
5491
|
normalizeFile
|
|
5671
5492
|
};
|
|
5672
|
-
//# sourceMappingURL=chunk-
|
|
5493
|
+
//# sourceMappingURL=chunk-5A4X24JB.js.map
|