@excalidraw/excalidraw 0.18.0-5fffc47 → 0.18.0-6135548
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-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-PWQMCSHA.js → chunk-GJCHM3LM.js} +91 -24
- package/dist/dev/chunk-GJCHM3LM.js.map +7 -0
- package/dist/dev/{chunk-YMRX7R7U.js → chunk-PW6TXCLQ.js} +270 -419
- package/dist/dev/chunk-PW6TXCLQ.js.map +7 -0
- package/dist/dev/{chunk-CP5DND7P.js → chunk-Y3BTNZQY.js} +2 -2
- package/dist/dev/data/{image-L23D26XS.js → image-2BHUUSLM.js} +3 -3
- package/dist/dev/index.css +937 -192
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +10398 -8330
- 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-V3NQTBPG.js → en-JANWVQZF.js} +8 -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 +2 -2
- package/dist/dev/subset-worker.chunk.js +2 -2
- package/dist/prod/chunk-AJI3LATG.js +1 -0
- package/dist/prod/{chunk-GF46JCB3.js → chunk-EODSYFCR.js} +7 -7
- package/dist/prod/chunk-R7EP47KM.js +4 -0
- package/dist/prod/{chunk-LS7FJGPW.js → chunk-Z5NKEFVG.js} +8 -8
- package/dist/prod/data/{image-NWF7UX55.js → image-WVUQOLPF.js} +1 -1
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +34 -25
- 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-2SFQVNRK.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 +59 -39
- package/dist/types/common/src/constants.d.ts +15 -27
- 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 +2 -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 +47 -35
- 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 +1 -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 +78 -136
- package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +57 -96
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +341 -763
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +76 -876
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +27 -47
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +92 -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 +23 -45
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +56 -95
- package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +28 -48
- package/dist/types/excalidraw/actions/actionExport.d.ts +124 -1129
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -404
- package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionFrame.d.ts +193 -308
- package/dist/types/excalidraw/actions/actionGroup.d.ts +60 -107
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +117 -177
- package/dist/types/excalidraw/actions/actionLink.d.ts +26 -46
- package/dist/types/excalidraw/actions/actionMenu.d.ts +21 -43
- package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -369
- package/dist/types/excalidraw/actions/actionProperties.d.ts +117 -2560
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +30 -54
- package/dist/types/excalidraw/actions/actionStyles.d.ts +27 -47
- package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +27 -47
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +27 -47
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +20 -42
- package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +27 -47
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +27 -47
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +28 -48
- package/dist/types/excalidraw/actions/actionZindex.d.ts +2 -3
- package/dist/types/excalidraw/actions/register.d.ts +2 -2
- package/dist/types/excalidraw/actions/types.d.ts +3 -3
- package/dist/types/excalidraw/appState.d.ts +7 -6
- package/dist/types/excalidraw/clipboard.d.ts +7 -31
- package/dist/types/excalidraw/components/Actions.d.ts +5 -2
- package/dist/types/excalidraw/components/App.d.ts +58 -58
- package/dist/types/excalidraw/components/ButtonIconCycle.d.ts +1 -1
- package/dist/types/excalidraw/components/Card.d.ts +1 -3
- package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
- package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +0 -2
- package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +0 -1
- package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
- 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 +0 -1
- package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -1
- package/dist/types/excalidraw/components/FilledButton.d.ts +2 -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 +2 -2
- 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/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 +1 -1
- package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -1
- 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/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/Chat/ChatHistoryMenu.d.ts +15 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +27 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +26 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
- package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +4 -25
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +2 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
- 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 +1 -1
- package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
- package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +8 -0
- package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
- package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
- package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
- package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
- package/dist/types/excalidraw/components/TTDDialog/types.d.ts +91 -0
- package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +24 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
- package/dist/types/excalidraw/components/Toast.d.ts +3 -3
- 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 -33
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +5 -5
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +12 -19
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
- 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 -12
- 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 +26 -32
- 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 +321 -3
- 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/editor-jotai.d.ts +11 -11
- package/dist/types/excalidraw/errors.d.ts +14 -0
- package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
- package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
- package/dist/types/excalidraw/i18n.d.ts +2 -2
- package/dist/types/excalidraw/index.d.ts +6 -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 +22 -20
- 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 +3 -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 +7 -8
- package/dist/dev/chunk-MFAYKRVR.js +0 -66
- package/dist/dev/chunk-MFAYKRVR.js.map +0 -7
- package/dist/dev/chunk-PWQMCSHA.js.map +0 -7
- package/dist/dev/chunk-YMRX7R7U.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-HT4FKTIQ.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-LQE6K457.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/{chunk-CP5DND7P.js.map → chunk-Y3BTNZQY.js.map} +0 -0
- /package/dist/dev/data/{image-L23D26XS.js.map → image-2BHUUSLM.js.map} +0 -0
- /package/dist/dev/locales/{en-V3NQTBPG.js.map → en-JANWVQZF.js.map} +0 -0
- /package/dist/dev/locales/{percentages-YKFLWNK2.js.map → percentages-OGWD7R2K.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
define_import_meta_env_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Y3BTNZQY.js";
|
|
4
4
|
import {
|
|
5
5
|
__publicField
|
|
6
6
|
} from "./chunk-XDFCUUT6.js";
|
|
@@ -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 {
|
|
@@ -115,7 +114,7 @@ var getDefaultAppState = () => {
|
|
|
115
114
|
panels: STATS_PANELS.generalStats | STATS_PANELS.elementProperties
|
|
116
115
|
},
|
|
117
116
|
startBoundElement: null,
|
|
118
|
-
|
|
117
|
+
suggestedBinding: null,
|
|
119
118
|
frameRendering: { enabled: true, clip: true, name: true, outline: true },
|
|
120
119
|
frameToHighlight: null,
|
|
121
120
|
editingFrame: null,
|
|
@@ -142,7 +141,7 @@ var getDefaultAppState = () => {
|
|
|
142
141
|
searchMatches: null,
|
|
143
142
|
lockedMultiSelections: {},
|
|
144
143
|
activeLockedId: null,
|
|
145
|
-
|
|
144
|
+
bindMode: "orbit"
|
|
146
145
|
};
|
|
147
146
|
};
|
|
148
147
|
var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
|
|
@@ -229,7 +228,7 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
|
|
|
229
228
|
shouldCacheIgnoreZoom: { browser: true, export: false, server: false },
|
|
230
229
|
stats: { browser: true, export: false, server: false },
|
|
231
230
|
startBoundElement: { browser: false, export: false, server: false },
|
|
232
|
-
|
|
231
|
+
suggestedBinding: { browser: false, export: false, server: false },
|
|
233
232
|
frameRendering: { browser: false, export: false, server: false },
|
|
234
233
|
frameToHighlight: { browser: false, export: false, server: false },
|
|
235
234
|
editingFrame: { browser: false, export: false, server: false },
|
|
@@ -252,7 +251,7 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
|
|
|
252
251
|
searchMatches: { browser: false, export: false, server: false },
|
|
253
252
|
lockedMultiSelections: { browser: true, export: true, server: true },
|
|
254
253
|
activeLockedId: { browser: false, export: false, server: false },
|
|
255
|
-
|
|
254
|
+
bindMode: { browser: true, export: false, server: false }
|
|
256
255
|
});
|
|
257
256
|
var _clearAppStateForStorage = (appState, exportType) => {
|
|
258
257
|
const stateForExport = {};
|
|
@@ -323,6 +322,24 @@ var ExcalidrawError = class extends Error {
|
|
|
323
322
|
this.name = "ExcalidrawError";
|
|
324
323
|
}
|
|
325
324
|
};
|
|
325
|
+
var RequestError = class extends Error {
|
|
326
|
+
constructor({
|
|
327
|
+
message = "Something went wrong",
|
|
328
|
+
status = 500,
|
|
329
|
+
data
|
|
330
|
+
} = {}) {
|
|
331
|
+
super();
|
|
332
|
+
__publicField(this, "status");
|
|
333
|
+
__publicField(this, "data");
|
|
334
|
+
this.name = "RequestError";
|
|
335
|
+
this.message = message;
|
|
336
|
+
this.status = status;
|
|
337
|
+
this.data = data;
|
|
338
|
+
}
|
|
339
|
+
toObject() {
|
|
340
|
+
return { name: this.name, status: this.status, message: this.message };
|
|
341
|
+
}
|
|
342
|
+
};
|
|
326
343
|
|
|
327
344
|
// scene/index.ts
|
|
328
345
|
import {
|
|
@@ -423,14 +440,14 @@ import {
|
|
|
423
440
|
FRAME_STYLE as FRAME_STYLE3,
|
|
424
441
|
FONT_FAMILY as FONT_FAMILY2,
|
|
425
442
|
SVG_NS as SVG_NS2,
|
|
426
|
-
THEME as
|
|
427
|
-
|
|
428
|
-
MIME_TYPES as MIME_TYPES5,
|
|
443
|
+
THEME as THEME5,
|
|
444
|
+
MIME_TYPES as MIME_TYPES4,
|
|
429
445
|
EXPORT_DATA_TYPES as EXPORT_DATA_TYPES2,
|
|
430
446
|
arrayToMap,
|
|
431
447
|
distance,
|
|
432
448
|
getFontString as getFontString2,
|
|
433
|
-
toBrandedType
|
|
449
|
+
toBrandedType,
|
|
450
|
+
applyDarkModeFilter as applyDarkModeFilter4
|
|
434
451
|
} from "@excalidraw/common";
|
|
435
452
|
import { getCommonBounds as getCommonBounds2, getElementAbsoluteCoords as getElementAbsoluteCoords4 } from "@excalidraw/element";
|
|
436
453
|
import {
|
|
@@ -524,10 +541,6 @@ import {
|
|
|
524
541
|
MIME_TYPES as MIME_TYPES2,
|
|
525
542
|
VERSIONS
|
|
526
543
|
} from "@excalidraw/common";
|
|
527
|
-
import {
|
|
528
|
-
clearElementsForDatabase,
|
|
529
|
-
clearElementsForExport
|
|
530
|
-
} from "@excalidraw/element";
|
|
531
544
|
|
|
532
545
|
// data/filesystem.ts
|
|
533
546
|
import {
|
|
@@ -621,7 +634,7 @@ var serializeAsJSON = (elements, appState, files, type) => {
|
|
|
621
634
|
type: EXPORT_DATA_TYPES.excalidraw,
|
|
622
635
|
version: VERSIONS.excalidraw,
|
|
623
636
|
source: getExportSource(),
|
|
624
|
-
elements
|
|
637
|
+
elements,
|
|
625
638
|
appState: type === "local" ? cleanAppStateForExport(appState) : clearAppStateForDatabase(appState),
|
|
626
639
|
files: type === "local" ? filterOutDeletedFiles(elements, files) : (
|
|
627
640
|
// will be stripped from JSON
|
|
@@ -687,7 +700,8 @@ import {
|
|
|
687
700
|
FONT_FAMILY_FALLBACKS,
|
|
688
701
|
CJK_HAND_DRAWN_FALLBACK_FONT,
|
|
689
702
|
WINDOWS_EMOJI_FALLBACK_FONT,
|
|
690
|
-
getFontFamilyFallbacks
|
|
703
|
+
getFontFamilyFallbacks,
|
|
704
|
+
FONT_SIZES
|
|
691
705
|
} from "@excalidraw/common";
|
|
692
706
|
import { getContainerElement } from "@excalidraw/element";
|
|
693
707
|
import { charWidth } from "@excalidraw/element";
|
|
@@ -2916,7 +2930,7 @@ var _Fonts = class _Fonts {
|
|
|
2916
2930
|
for (const [index, fontFamily] of fontFamilies.entries()) {
|
|
2917
2931
|
const font = getFontString({
|
|
2918
2932
|
fontFamily,
|
|
2919
|
-
fontSize:
|
|
2933
|
+
fontSize: FONT_SIZES.sm
|
|
2920
2934
|
});
|
|
2921
2935
|
const text = _Fonts.getCharacters(charsPerFamily, fontFamily);
|
|
2922
2936
|
if (!window.document.fonts.check(font, text)) {
|
|
@@ -3073,7 +3087,12 @@ __publicField(_Fonts, "loadElementsFonts", async (elements) => {
|
|
|
3073
3087
|
var Fonts = _Fonts;
|
|
3074
3088
|
|
|
3075
3089
|
// renderer/staticScene.ts
|
|
3076
|
-
import {
|
|
3090
|
+
import {
|
|
3091
|
+
applyDarkModeFilter as applyDarkModeFilter2,
|
|
3092
|
+
FRAME_STYLE,
|
|
3093
|
+
THEME as THEME3,
|
|
3094
|
+
throttleRAF
|
|
3095
|
+
} from "@excalidraw/common";
|
|
3077
3096
|
import { isElementLink } from "@excalidraw/element";
|
|
3078
3097
|
import { createPlaceholderEmbeddableLabel } from "@excalidraw/element";
|
|
3079
3098
|
import { getBoundTextElement } from "@excalidraw/element";
|
|
@@ -3155,19 +3174,7 @@ var isPointHittingLink = (element, elementsMap, appState, [x, y], isMobile) => {
|
|
|
3155
3174
|
};
|
|
3156
3175
|
|
|
3157
3176
|
// renderer/helpers.ts
|
|
3158
|
-
import { THEME as THEME2,
|
|
3159
|
-
import { FIXED_BINDING_DISTANCE } from "@excalidraw/element";
|
|
3160
|
-
import { getDiamondPoints } from "@excalidraw/element";
|
|
3161
|
-
import { elementCenterPoint, getCornerRadius } from "@excalidraw/element";
|
|
3162
|
-
import {
|
|
3163
|
-
curve,
|
|
3164
|
-
curveCatmullRomCubicApproxPoints,
|
|
3165
|
-
curveCatmullRomQuadraticApproxPoints,
|
|
3166
|
-
curveOffsetPoints,
|
|
3167
|
-
offsetPointsForQuadraticBezier,
|
|
3168
|
-
pointFrom as pointFrom2,
|
|
3169
|
-
pointRotateRads as pointRotateRads2
|
|
3170
|
-
} from "@excalidraw/math";
|
|
3177
|
+
import { THEME as THEME2, applyDarkModeFilter } from "@excalidraw/common";
|
|
3171
3178
|
var fillCircle = (context, cx, cy, radius, stroke, fill = true) => {
|
|
3172
3179
|
context.beginPath();
|
|
3173
3180
|
context.arc(cx, cy, radius, 0, Math.PI * 2);
|
|
@@ -3193,9 +3200,6 @@ var bootstrapCanvas = ({
|
|
|
3193
3200
|
const context = canvas.getContext("2d");
|
|
3194
3201
|
context.setTransform(1, 0, 0, 1, 0, 0);
|
|
3195
3202
|
context.scale(scale, scale);
|
|
3196
|
-
if (isExporting && theme === THEME2.DARK) {
|
|
3197
|
-
context.filter = THEME_FILTER;
|
|
3198
|
-
}
|
|
3199
3203
|
if (typeof viewBackgroundColor === "string") {
|
|
3200
3204
|
const hasTransparence = viewBackgroundColor === "transparent" || viewBackgroundColor.length === 5 || // #RGBA
|
|
3201
3205
|
viewBackgroundColor.length === 9 || // #RRGGBBA
|
|
@@ -3204,7 +3208,7 @@ var bootstrapCanvas = ({
|
|
|
3204
3208
|
context.clearRect(0, 0, normalizedWidth, normalizedHeight);
|
|
3205
3209
|
}
|
|
3206
3210
|
context.save();
|
|
3207
|
-
context.fillStyle = viewBackgroundColor;
|
|
3211
|
+
context.fillStyle = theme === THEME2.DARK ? applyDarkModeFilter(viewBackgroundColor) : viewBackgroundColor;
|
|
3208
3212
|
context.fillRect(0, 0, normalizedWidth, normalizedHeight);
|
|
3209
3213
|
context.restore();
|
|
3210
3214
|
} else {
|
|
@@ -3212,127 +3216,7 @@ var bootstrapCanvas = ({
|
|
|
3212
3216
|
}
|
|
3213
3217
|
return context;
|
|
3214
3218
|
};
|
|
3215
|
-
|
|
3216
|
-
const pointSets = curveCatmullRomQuadraticApproxPoints(points, tension);
|
|
3217
|
-
if (pointSets) {
|
|
3218
|
-
for (let i = 0; i < pointSets.length - 1; i++) {
|
|
3219
|
-
const [[cpX, cpY], [p2X, p2Y]] = pointSets[i];
|
|
3220
|
-
ctx.quadraticCurveTo(cpX, cpY, p2X, p2Y);
|
|
3221
|
-
}
|
|
3222
|
-
}
|
|
3223
|
-
}
|
|
3224
|
-
function drawCatmullRomCubicApprox(ctx, points, tension = 0.5) {
|
|
3225
|
-
const pointSets = curveCatmullRomCubicApproxPoints(points, tension);
|
|
3226
|
-
if (pointSets) {
|
|
3227
|
-
for (let i = 0; i < pointSets.length; i++) {
|
|
3228
|
-
const [[cp1x, cp1y], [cp2x, cp2y], [x, y]] = pointSets[i];
|
|
3229
|
-
ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
|
|
3230
|
-
}
|
|
3231
|
-
}
|
|
3232
|
-
}
|
|
3233
|
-
var drawHighlightForRectWithRotation = (context, element, elementsMap, padding) => {
|
|
3234
|
-
const [x, y] = pointRotateRads2(
|
|
3235
|
-
pointFrom2(element.x, element.y),
|
|
3236
|
-
elementCenterPoint(element, elementsMap),
|
|
3237
|
-
element.angle
|
|
3238
|
-
);
|
|
3239
|
-
context.save();
|
|
3240
|
-
context.translate(x, y);
|
|
3241
|
-
context.rotate(element.angle);
|
|
3242
|
-
let radius = getCornerRadius(
|
|
3243
|
-
Math.min(element.width, element.height),
|
|
3244
|
-
element
|
|
3245
|
-
);
|
|
3246
|
-
if (radius === 0) {
|
|
3247
|
-
radius = 0.01;
|
|
3248
|
-
}
|
|
3249
|
-
context.beginPath();
|
|
3250
|
-
{
|
|
3251
|
-
const topLeftApprox = offsetPointsForQuadraticBezier(
|
|
3252
|
-
pointFrom2(0, 0 + radius),
|
|
3253
|
-
pointFrom2(0, 0),
|
|
3254
|
-
pointFrom2(0 + radius, 0),
|
|
3255
|
-
padding
|
|
3256
|
-
);
|
|
3257
|
-
const topRightApprox = offsetPointsForQuadraticBezier(
|
|
3258
|
-
pointFrom2(element.width - radius, 0),
|
|
3259
|
-
pointFrom2(element.width, 0),
|
|
3260
|
-
pointFrom2(element.width, radius),
|
|
3261
|
-
padding
|
|
3262
|
-
);
|
|
3263
|
-
const bottomRightApprox = offsetPointsForQuadraticBezier(
|
|
3264
|
-
pointFrom2(element.width, element.height - radius),
|
|
3265
|
-
pointFrom2(element.width, element.height),
|
|
3266
|
-
pointFrom2(element.width - radius, element.height),
|
|
3267
|
-
padding
|
|
3268
|
-
);
|
|
3269
|
-
const bottomLeftApprox = offsetPointsForQuadraticBezier(
|
|
3270
|
-
pointFrom2(radius, element.height),
|
|
3271
|
-
pointFrom2(0, element.height),
|
|
3272
|
-
pointFrom2(0, element.height - radius),
|
|
3273
|
-
padding
|
|
3274
|
-
);
|
|
3275
|
-
context.moveTo(
|
|
3276
|
-
topLeftApprox[topLeftApprox.length - 1][0],
|
|
3277
|
-
topLeftApprox[topLeftApprox.length - 1][1]
|
|
3278
|
-
);
|
|
3279
|
-
context.lineTo(topRightApprox[0][0], topRightApprox[0][1]);
|
|
3280
|
-
drawCatmullRomQuadraticApprox(context, topRightApprox);
|
|
3281
|
-
context.lineTo(bottomRightApprox[0][0], bottomRightApprox[0][1]);
|
|
3282
|
-
drawCatmullRomQuadraticApprox(context, bottomRightApprox);
|
|
3283
|
-
context.lineTo(bottomLeftApprox[0][0], bottomLeftApprox[0][1]);
|
|
3284
|
-
drawCatmullRomQuadraticApprox(context, bottomLeftApprox);
|
|
3285
|
-
context.lineTo(topLeftApprox[0][0], topLeftApprox[0][1]);
|
|
3286
|
-
drawCatmullRomQuadraticApprox(context, topLeftApprox);
|
|
3287
|
-
}
|
|
3288
|
-
{
|
|
3289
|
-
const topLeftApprox = offsetPointsForQuadraticBezier(
|
|
3290
|
-
pointFrom2(0 + radius, 0),
|
|
3291
|
-
pointFrom2(0, 0),
|
|
3292
|
-
pointFrom2(0, 0 + radius),
|
|
3293
|
-
-FIXED_BINDING_DISTANCE
|
|
3294
|
-
);
|
|
3295
|
-
const topRightApprox = offsetPointsForQuadraticBezier(
|
|
3296
|
-
pointFrom2(element.width, radius),
|
|
3297
|
-
pointFrom2(element.width, 0),
|
|
3298
|
-
pointFrom2(element.width - radius, 0),
|
|
3299
|
-
-FIXED_BINDING_DISTANCE
|
|
3300
|
-
);
|
|
3301
|
-
const bottomRightApprox = offsetPointsForQuadraticBezier(
|
|
3302
|
-
pointFrom2(element.width - radius, element.height),
|
|
3303
|
-
pointFrom2(element.width, element.height),
|
|
3304
|
-
pointFrom2(element.width, element.height - radius),
|
|
3305
|
-
-FIXED_BINDING_DISTANCE
|
|
3306
|
-
);
|
|
3307
|
-
const bottomLeftApprox = offsetPointsForQuadraticBezier(
|
|
3308
|
-
pointFrom2(0, element.height - radius),
|
|
3309
|
-
pointFrom2(0, element.height),
|
|
3310
|
-
pointFrom2(radius, element.height),
|
|
3311
|
-
-FIXED_BINDING_DISTANCE
|
|
3312
|
-
);
|
|
3313
|
-
context.moveTo(
|
|
3314
|
-
topLeftApprox[topLeftApprox.length - 1][0],
|
|
3315
|
-
topLeftApprox[topLeftApprox.length - 1][1]
|
|
3316
|
-
);
|
|
3317
|
-
context.lineTo(bottomLeftApprox[0][0], bottomLeftApprox[0][1]);
|
|
3318
|
-
drawCatmullRomQuadraticApprox(context, bottomLeftApprox);
|
|
3319
|
-
context.lineTo(bottomRightApprox[0][0], bottomRightApprox[0][1]);
|
|
3320
|
-
drawCatmullRomQuadraticApprox(context, bottomRightApprox);
|
|
3321
|
-
context.lineTo(topRightApprox[0][0], topRightApprox[0][1]);
|
|
3322
|
-
drawCatmullRomQuadraticApprox(context, topRightApprox);
|
|
3323
|
-
context.lineTo(topLeftApprox[0][0], topLeftApprox[0][1]);
|
|
3324
|
-
drawCatmullRomQuadraticApprox(context, topLeftApprox);
|
|
3325
|
-
}
|
|
3326
|
-
context.closePath();
|
|
3327
|
-
context.fill();
|
|
3328
|
-
context.restore();
|
|
3329
|
-
};
|
|
3330
|
-
var strokeEllipseWithRotation = (context, width, height, cx, cy, angle) => {
|
|
3331
|
-
context.beginPath();
|
|
3332
|
-
context.ellipse(cx, cy, width / 2, height / 2, angle, 0, Math.PI * 2);
|
|
3333
|
-
context.stroke();
|
|
3334
|
-
};
|
|
3335
|
-
var strokeRectWithRotation = (context, x, y, width, height, cx, cy, angle, fill = false, radius = 0) => {
|
|
3219
|
+
var strokeRectWithRotation_simple = (context, x, y, width, height, cx, cy, angle, fill = false, radius = 0) => {
|
|
3336
3220
|
context.save();
|
|
3337
3221
|
context.translate(cx, cy);
|
|
3338
3222
|
context.rotate(angle);
|
|
@@ -3349,133 +3233,19 @@ var strokeRectWithRotation = (context, x, y, width, height, cx, cy, angle, fill
|
|
|
3349
3233
|
}
|
|
3350
3234
|
context.restore();
|
|
3351
3235
|
};
|
|
3352
|
-
var drawHighlightForDiamondWithRotation = (context, padding, element, elementsMap) => {
|
|
3353
|
-
const [x, y] = pointRotateRads2(
|
|
3354
|
-
pointFrom2(element.x, element.y),
|
|
3355
|
-
elementCenterPoint(element, elementsMap),
|
|
3356
|
-
element.angle
|
|
3357
|
-
);
|
|
3358
|
-
context.save();
|
|
3359
|
-
context.translate(x, y);
|
|
3360
|
-
context.rotate(element.angle);
|
|
3361
|
-
{
|
|
3362
|
-
context.beginPath();
|
|
3363
|
-
const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = getDiamondPoints(element);
|
|
3364
|
-
const verticalRadius = element.roundness ? getCornerRadius(Math.abs(topX - leftX), element) : (topX - leftX) * 0.01;
|
|
3365
|
-
const horizontalRadius = element.roundness ? getCornerRadius(Math.abs(rightY - topY), element) : (rightY - topY) * 0.01;
|
|
3366
|
-
const topApprox = curveOffsetPoints(
|
|
3367
|
-
curve(
|
|
3368
|
-
pointFrom2(topX - verticalRadius, topY + horizontalRadius),
|
|
3369
|
-
pointFrom2(topX, topY),
|
|
3370
|
-
pointFrom2(topX, topY),
|
|
3371
|
-
pointFrom2(topX + verticalRadius, topY + horizontalRadius)
|
|
3372
|
-
),
|
|
3373
|
-
padding
|
|
3374
|
-
);
|
|
3375
|
-
const rightApprox = curveOffsetPoints(
|
|
3376
|
-
curve(
|
|
3377
|
-
pointFrom2(rightX - verticalRadius, rightY - horizontalRadius),
|
|
3378
|
-
pointFrom2(rightX, rightY),
|
|
3379
|
-
pointFrom2(rightX, rightY),
|
|
3380
|
-
pointFrom2(rightX - verticalRadius, rightY + horizontalRadius)
|
|
3381
|
-
),
|
|
3382
|
-
padding
|
|
3383
|
-
);
|
|
3384
|
-
const bottomApprox = curveOffsetPoints(
|
|
3385
|
-
curve(
|
|
3386
|
-
pointFrom2(bottomX + verticalRadius, bottomY - horizontalRadius),
|
|
3387
|
-
pointFrom2(bottomX, bottomY),
|
|
3388
|
-
pointFrom2(bottomX, bottomY),
|
|
3389
|
-
pointFrom2(bottomX - verticalRadius, bottomY - horizontalRadius)
|
|
3390
|
-
),
|
|
3391
|
-
padding
|
|
3392
|
-
);
|
|
3393
|
-
const leftApprox = curveOffsetPoints(
|
|
3394
|
-
curve(
|
|
3395
|
-
pointFrom2(leftX + verticalRadius, leftY + horizontalRadius),
|
|
3396
|
-
pointFrom2(leftX, leftY),
|
|
3397
|
-
pointFrom2(leftX, leftY),
|
|
3398
|
-
pointFrom2(leftX + verticalRadius, leftY - horizontalRadius)
|
|
3399
|
-
),
|
|
3400
|
-
padding
|
|
3401
|
-
);
|
|
3402
|
-
context.moveTo(
|
|
3403
|
-
topApprox[topApprox.length - 1][0],
|
|
3404
|
-
topApprox[topApprox.length - 1][1]
|
|
3405
|
-
);
|
|
3406
|
-
context.lineTo(rightApprox[1][0], rightApprox[1][1]);
|
|
3407
|
-
drawCatmullRomCubicApprox(context, rightApprox);
|
|
3408
|
-
context.lineTo(bottomApprox[1][0], bottomApprox[1][1]);
|
|
3409
|
-
drawCatmullRomCubicApprox(context, bottomApprox);
|
|
3410
|
-
context.lineTo(leftApprox[1][0], leftApprox[1][1]);
|
|
3411
|
-
drawCatmullRomCubicApprox(context, leftApprox);
|
|
3412
|
-
context.lineTo(topApprox[1][0], topApprox[1][1]);
|
|
3413
|
-
drawCatmullRomCubicApprox(context, topApprox);
|
|
3414
|
-
}
|
|
3415
|
-
{
|
|
3416
|
-
const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = getDiamondPoints(element);
|
|
3417
|
-
const verticalRadius = element.roundness ? getCornerRadius(Math.abs(topX - leftX), element) : (topX - leftX) * 0.01;
|
|
3418
|
-
const horizontalRadius = element.roundness ? getCornerRadius(Math.abs(rightY - topY), element) : (rightY - topY) * 0.01;
|
|
3419
|
-
const topApprox = curveOffsetPoints(
|
|
3420
|
-
curve(
|
|
3421
|
-
pointFrom2(topX + verticalRadius, topY + horizontalRadius),
|
|
3422
|
-
pointFrom2(topX, topY),
|
|
3423
|
-
pointFrom2(topX, topY),
|
|
3424
|
-
pointFrom2(topX - verticalRadius, topY + horizontalRadius)
|
|
3425
|
-
),
|
|
3426
|
-
-FIXED_BINDING_DISTANCE
|
|
3427
|
-
);
|
|
3428
|
-
const rightApprox = curveOffsetPoints(
|
|
3429
|
-
curve(
|
|
3430
|
-
pointFrom2(rightX - verticalRadius, rightY + horizontalRadius),
|
|
3431
|
-
pointFrom2(rightX, rightY),
|
|
3432
|
-
pointFrom2(rightX, rightY),
|
|
3433
|
-
pointFrom2(rightX - verticalRadius, rightY - horizontalRadius)
|
|
3434
|
-
),
|
|
3435
|
-
-FIXED_BINDING_DISTANCE
|
|
3436
|
-
);
|
|
3437
|
-
const bottomApprox = curveOffsetPoints(
|
|
3438
|
-
curve(
|
|
3439
|
-
pointFrom2(bottomX - verticalRadius, bottomY - horizontalRadius),
|
|
3440
|
-
pointFrom2(bottomX, bottomY),
|
|
3441
|
-
pointFrom2(bottomX, bottomY),
|
|
3442
|
-
pointFrom2(bottomX + verticalRadius, bottomY - horizontalRadius)
|
|
3443
|
-
),
|
|
3444
|
-
-FIXED_BINDING_DISTANCE
|
|
3445
|
-
);
|
|
3446
|
-
const leftApprox = curveOffsetPoints(
|
|
3447
|
-
curve(
|
|
3448
|
-
pointFrom2(leftX + verticalRadius, leftY - horizontalRadius),
|
|
3449
|
-
pointFrom2(leftX, leftY),
|
|
3450
|
-
pointFrom2(leftX, leftY),
|
|
3451
|
-
pointFrom2(leftX + verticalRadius, leftY + horizontalRadius)
|
|
3452
|
-
),
|
|
3453
|
-
-FIXED_BINDING_DISTANCE
|
|
3454
|
-
);
|
|
3455
|
-
context.moveTo(
|
|
3456
|
-
topApprox[topApprox.length - 1][0],
|
|
3457
|
-
topApprox[topApprox.length - 1][1]
|
|
3458
|
-
);
|
|
3459
|
-
context.lineTo(leftApprox[1][0], leftApprox[1][1]);
|
|
3460
|
-
drawCatmullRomCubicApprox(context, leftApprox);
|
|
3461
|
-
context.lineTo(bottomApprox[1][0], bottomApprox[1][1]);
|
|
3462
|
-
drawCatmullRomCubicApprox(context, bottomApprox);
|
|
3463
|
-
context.lineTo(rightApprox[1][0], rightApprox[1][1]);
|
|
3464
|
-
drawCatmullRomCubicApprox(context, rightApprox);
|
|
3465
|
-
context.lineTo(topApprox[1][0], topApprox[1][1]);
|
|
3466
|
-
drawCatmullRomCubicApprox(context, topApprox);
|
|
3467
|
-
}
|
|
3468
|
-
context.closePath();
|
|
3469
|
-
context.fill();
|
|
3470
|
-
context.restore();
|
|
3471
|
-
};
|
|
3472
3236
|
|
|
3473
3237
|
// renderer/staticScene.ts
|
|
3474
3238
|
var GridLineColor = {
|
|
3475
|
-
|
|
3476
|
-
|
|
3239
|
+
[THEME3.LIGHT]: {
|
|
3240
|
+
bold: "#dddddd",
|
|
3241
|
+
regular: "#e5e5e5"
|
|
3242
|
+
},
|
|
3243
|
+
[THEME3.DARK]: {
|
|
3244
|
+
bold: applyDarkModeFilter2("#dddddd"),
|
|
3245
|
+
regular: applyDarkModeFilter2("#e5e5e5")
|
|
3246
|
+
}
|
|
3477
3247
|
};
|
|
3478
|
-
var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, height) => {
|
|
3248
|
+
var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, theme, width, height) => {
|
|
3479
3249
|
const offsetX = scrollX % gridSize - gridSize;
|
|
3480
3250
|
const offsetY = scrollY % gridSize - gridSize;
|
|
3481
3251
|
const actualGridSize = gridSize * zoom.value;
|
|
@@ -3494,7 +3264,7 @@ var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, he
|
|
|
3494
3264
|
const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
|
|
3495
3265
|
context.beginPath();
|
|
3496
3266
|
context.setLineDash(isBold ? [] : lineDash);
|
|
3497
|
-
context.strokeStyle = isBold ? GridLineColor.
|
|
3267
|
+
context.strokeStyle = isBold ? GridLineColor[theme].bold : GridLineColor[theme].regular;
|
|
3498
3268
|
context.moveTo(x, offsetY - gridSize);
|
|
3499
3269
|
context.lineTo(x, Math.ceil(offsetY + height + gridSize * 2));
|
|
3500
3270
|
context.stroke();
|
|
@@ -3509,7 +3279,7 @@ var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, he
|
|
|
3509
3279
|
const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
|
|
3510
3280
|
context.beginPath();
|
|
3511
3281
|
context.setLineDash(isBold ? [] : lineDash);
|
|
3512
|
-
context.strokeStyle = isBold ? GridLineColor.
|
|
3282
|
+
context.strokeStyle = isBold ? GridLineColor[theme].bold : GridLineColor[theme].regular;
|
|
3513
3283
|
context.moveTo(offsetX - gridSize, y);
|
|
3514
3284
|
context.lineTo(Math.ceil(offsetX + width + gridSize * 2), y);
|
|
3515
3285
|
context.stroke();
|
|
@@ -3622,6 +3392,7 @@ var _renderStaticScene = ({
|
|
|
3622
3392
|
appState.scrollX,
|
|
3623
3393
|
appState.scrollY,
|
|
3624
3394
|
appState.zoom,
|
|
3395
|
+
renderConfig.theme,
|
|
3625
3396
|
normalizedWidth / appState.zoom.value,
|
|
3626
3397
|
normalizedHeight / appState.zoom.value
|
|
3627
3398
|
);
|
|
@@ -3788,12 +3559,13 @@ var renderStaticScene = (renderConfig, throttle) => {
|
|
|
3788
3559
|
import {
|
|
3789
3560
|
FRAME_STYLE as FRAME_STYLE2,
|
|
3790
3561
|
MAX_DECIMALS_FOR_SVG_EXPORT,
|
|
3791
|
-
MIME_TYPES as MIME_TYPES4,
|
|
3792
3562
|
SVG_NS,
|
|
3563
|
+
THEME as THEME4,
|
|
3793
3564
|
getFontFamilyString,
|
|
3794
3565
|
isRTL,
|
|
3795
3566
|
isTestEnv as isTestEnv2,
|
|
3796
|
-
getVerticalOffset
|
|
3567
|
+
getVerticalOffset,
|
|
3568
|
+
applyDarkModeFilter as applyDarkModeFilter3
|
|
3797
3569
|
} from "@excalidraw/common";
|
|
3798
3570
|
import { normalizeLink, toValidURL } from "@excalidraw/common";
|
|
3799
3571
|
import { hashString } from "@excalidraw/element";
|
|
@@ -3812,9 +3584,8 @@ import {
|
|
|
3812
3584
|
isTextElement as isTextElement3
|
|
3813
3585
|
} from "@excalidraw/element";
|
|
3814
3586
|
import { getContainingFrame } from "@excalidraw/element";
|
|
3815
|
-
import { getCornerRadius
|
|
3587
|
+
import { getCornerRadius, isPathALoop } from "@excalidraw/element";
|
|
3816
3588
|
import { ShapeCache as ShapeCache2 } from "@excalidraw/element";
|
|
3817
|
-
import { getFreeDrawSvgPath, IMAGE_INVERT_FILTER } from "@excalidraw/element";
|
|
3818
3589
|
import { getElementAbsoluteCoords as getElementAbsoluteCoords3 } from "@excalidraw/element";
|
|
3819
3590
|
var roughSVGDrawWithPrecision = (rsvg, drawable, precision) => {
|
|
3820
3591
|
if (typeof precision === "undefined") {
|
|
@@ -3882,7 +3653,7 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
3882
3653
|
case "rectangle":
|
|
3883
3654
|
case "diamond":
|
|
3884
3655
|
case "ellipse": {
|
|
3885
|
-
const shape = ShapeCache2.generateElementShape(element,
|
|
3656
|
+
const shape = ShapeCache2.generateElementShape(element, renderConfig);
|
|
3886
3657
|
const node = roughSVGDrawWithPrecision(
|
|
3887
3658
|
rsvg,
|
|
3888
3659
|
shape,
|
|
@@ -3950,7 +3721,7 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
3950
3721
|
while (embeddableNode.firstChild) {
|
|
3951
3722
|
embeddableNode.removeChild(embeddableNode.firstChild);
|
|
3952
3723
|
}
|
|
3953
|
-
const radius =
|
|
3724
|
+
const radius = getCornerRadius(
|
|
3954
3725
|
Math.min(element.width, element.height),
|
|
3955
3726
|
element
|
|
3956
3727
|
);
|
|
@@ -4075,36 +3846,49 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4075
3846
|
break;
|
|
4076
3847
|
}
|
|
4077
3848
|
case "freedraw": {
|
|
4078
|
-
const
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
3849
|
+
const wrapper = svgRoot.ownerDocument.createElementNS(SVG_NS, "g");
|
|
3850
|
+
const shapes = ShapeCache2.generateElementShape(element, renderConfig);
|
|
3851
|
+
for (const shape of shapes) {
|
|
3852
|
+
if (typeof shape === "string") {
|
|
3853
|
+
const path = svgRoot.ownerDocument.createElementNS(SVG_NS, "path");
|
|
3854
|
+
path.setAttribute(
|
|
3855
|
+
"fill",
|
|
3856
|
+
renderConfig.theme === THEME4.DARK ? applyDarkModeFilter3(element.strokeColor) : element.strokeColor
|
|
3857
|
+
);
|
|
3858
|
+
path.setAttribute("d", shape);
|
|
3859
|
+
wrapper.appendChild(path);
|
|
3860
|
+
} else {
|
|
3861
|
+
const bgNode = roughSVGDrawWithPrecision(
|
|
3862
|
+
rsvg,
|
|
3863
|
+
shape,
|
|
3864
|
+
MAX_DECIMALS_FOR_SVG_EXPORT
|
|
3865
|
+
);
|
|
3866
|
+
if (bgNode.nodeName === "g") {
|
|
3867
|
+
while (bgNode.firstChild) {
|
|
3868
|
+
wrapper.appendChild(bgNode.firstChild);
|
|
3869
|
+
}
|
|
3870
|
+
} else {
|
|
3871
|
+
wrapper.appendChild(bgNode);
|
|
3872
|
+
}
|
|
3873
|
+
}
|
|
3874
|
+
}
|
|
4087
3875
|
if (opacity !== 1) {
|
|
4088
|
-
|
|
4089
|
-
|
|
3876
|
+
wrapper.setAttribute("stroke-opacity", `${opacity}`);
|
|
3877
|
+
wrapper.setAttribute("fill-opacity", `${opacity}`);
|
|
4090
3878
|
}
|
|
4091
|
-
|
|
3879
|
+
wrapper.setAttribute(
|
|
4092
3880
|
"transform",
|
|
4093
3881
|
`translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`
|
|
4094
3882
|
);
|
|
4095
|
-
|
|
4096
|
-
const path = svgRoot.ownerDocument.createElementNS(SVG_NS, "path");
|
|
4097
|
-
path.setAttribute("fill", element.strokeColor);
|
|
4098
|
-
path.setAttribute("d", getFreeDrawSvgPath(element));
|
|
4099
|
-
node.appendChild(path);
|
|
3883
|
+
wrapper.setAttribute("stroke", "none");
|
|
4100
3884
|
const g = maybeWrapNodesInFrameClipPath(
|
|
4101
3885
|
element,
|
|
4102
3886
|
root,
|
|
4103
|
-
[
|
|
3887
|
+
[wrapper],
|
|
4104
3888
|
renderConfig.frameRendering,
|
|
4105
3889
|
elementsMap
|
|
4106
3890
|
);
|
|
4107
|
-
addToRoot(g ||
|
|
3891
|
+
addToRoot(g || wrapper, element);
|
|
4108
3892
|
break;
|
|
4109
3893
|
}
|
|
4110
3894
|
case "image": {
|
|
@@ -4144,9 +3928,6 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4144
3928
|
}
|
|
4145
3929
|
const use = svgRoot.ownerDocument.createElementNS(SVG_NS, "use");
|
|
4146
3930
|
use.setAttribute("href", `#${symbolId}`);
|
|
4147
|
-
if (renderConfig.exportWithDarkMode && fileData.mimeType !== MIME_TYPES4.svg) {
|
|
4148
|
-
use.setAttribute("filter", IMAGE_INVERT_FILTER);
|
|
4149
|
-
}
|
|
4150
3931
|
let normalizedCropX = 0;
|
|
4151
3932
|
let normalizedCropY = 0;
|
|
4152
3933
|
if (element.crop) {
|
|
@@ -4193,14 +3974,19 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4193
3974
|
"clipPath"
|
|
4194
3975
|
);
|
|
4195
3976
|
clipPath.id = `image-clipPath-${element.id}`;
|
|
3977
|
+
clipPath.setAttribute("clipPathUnits", "userSpaceOnUse");
|
|
4196
3978
|
const clipRect = svgRoot.ownerDocument.createElementNS(
|
|
4197
3979
|
SVG_NS,
|
|
4198
3980
|
"rect"
|
|
4199
3981
|
);
|
|
4200
|
-
const radius =
|
|
3982
|
+
const radius = getCornerRadius(
|
|
4201
3983
|
Math.min(element.width, element.height),
|
|
4202
3984
|
element
|
|
4203
3985
|
);
|
|
3986
|
+
const clipOffsetX = element.crop ? normalizedCropX : 0;
|
|
3987
|
+
const clipOffsetY = element.crop ? normalizedCropY : 0;
|
|
3988
|
+
clipRect.setAttribute("x", `${clipOffsetX}`);
|
|
3989
|
+
clipRect.setAttribute("y", `${clipOffsetY}`);
|
|
4204
3990
|
clipRect.setAttribute("width", `${element.width}`);
|
|
4205
3991
|
clipRect.setAttribute("height", `${element.height}`);
|
|
4206
3992
|
clipRect.setAttribute("rx", `${radius}`);
|
|
@@ -4233,7 +4019,10 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4233
4019
|
rect.setAttribute("rx", FRAME_STYLE2.radius.toString());
|
|
4234
4020
|
rect.setAttribute("ry", FRAME_STYLE2.radius.toString());
|
|
4235
4021
|
rect.setAttribute("fill", "none");
|
|
4236
|
-
rect.setAttribute(
|
|
4022
|
+
rect.setAttribute(
|
|
4023
|
+
"stroke",
|
|
4024
|
+
renderConfig.theme === THEME4.DARK ? applyDarkModeFilter3(FRAME_STYLE2.strokeColor) : FRAME_STYLE2.strokeColor
|
|
4025
|
+
);
|
|
4237
4026
|
rect.setAttribute("stroke-width", FRAME_STYLE2.strokeWidth.toString());
|
|
4238
4027
|
addToRoot(rect, element);
|
|
4239
4028
|
}
|
|
@@ -4270,7 +4059,10 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
|
|
|
4270
4059
|
text.setAttribute("y", `${i * lineHeightPx + verticalOffset}`);
|
|
4271
4060
|
text.setAttribute("font-family", getFontFamilyString(element));
|
|
4272
4061
|
text.setAttribute("font-size", `${element.fontSize}px`);
|
|
4273
|
-
text.setAttribute(
|
|
4062
|
+
text.setAttribute(
|
|
4063
|
+
"fill",
|
|
4064
|
+
renderConfig.theme === THEME4.DARK ? applyDarkModeFilter3(element.strokeColor) : element.strokeColor
|
|
4065
|
+
);
|
|
4274
4066
|
text.setAttribute("text-anchor", textAnchor);
|
|
4275
4067
|
text.setAttribute("style", "white-space: pre;");
|
|
4276
4068
|
text.setAttribute("direction", direction);
|
|
@@ -4483,7 +4275,7 @@ var exportToCanvas = async (elements, appState, files, {
|
|
|
4483
4275
|
scrollY: -minY + exportPadding,
|
|
4484
4276
|
zoom: defaultAppState.zoom,
|
|
4485
4277
|
shouldCacheIgnoreZoom: false,
|
|
4486
|
-
theme: appState.exportWithDarkMode ?
|
|
4278
|
+
theme: appState.exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
|
|
4487
4279
|
},
|
|
4488
4280
|
renderConfig: {
|
|
4489
4281
|
canvasBackgroundColor: viewBackgroundColor,
|
|
@@ -4493,7 +4285,8 @@ var exportToCanvas = async (elements, appState, files, {
|
|
|
4493
4285
|
// empty disables embeddable rendering
|
|
4494
4286
|
embedsValidationStatus: /* @__PURE__ */ new Map(),
|
|
4495
4287
|
elementsPendingErasure: /* @__PURE__ */ new Set(),
|
|
4496
|
-
pendingFlowchartNodes: null
|
|
4288
|
+
pendingFlowchartNodes: null,
|
|
4289
|
+
theme: appState.exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
|
|
4497
4290
|
}
|
|
4498
4291
|
});
|
|
4499
4292
|
return canvas;
|
|
@@ -4535,9 +4328,6 @@ var exportToSvg = async (elements, appState, files, opts) => {
|
|
|
4535
4328
|
svgRoot.setAttribute("viewBox", `0 0 ${width} ${height}`);
|
|
4536
4329
|
svgRoot.setAttribute("width", `${width * exportScale}`);
|
|
4537
4330
|
svgRoot.setAttribute("height", `${height * exportScale}`);
|
|
4538
|
-
if (exportWithDarkMode) {
|
|
4539
|
-
svgRoot.setAttribute("filter", THEME_FILTER2);
|
|
4540
|
-
}
|
|
4541
4331
|
const defsElement = svgRoot.ownerDocument.createElementNS(SVG_NS2, "defs");
|
|
4542
4332
|
const metadataElement = svgRoot.ownerDocument.createElementNS(
|
|
4543
4333
|
SVG_NS2,
|
|
@@ -4601,7 +4391,10 @@ var exportToSvg = async (elements, appState, files, opts) => {
|
|
|
4601
4391
|
rect.setAttribute("y", "0");
|
|
4602
4392
|
rect.setAttribute("width", `${width}`);
|
|
4603
4393
|
rect.setAttribute("height", `${height}`);
|
|
4604
|
-
rect.setAttribute(
|
|
4394
|
+
rect.setAttribute(
|
|
4395
|
+
"fill",
|
|
4396
|
+
exportWithDarkMode ? applyDarkModeFilter4(viewBackgroundColor) : viewBackgroundColor
|
|
4397
|
+
);
|
|
4605
4398
|
svgRoot.appendChild(rect);
|
|
4606
4399
|
}
|
|
4607
4400
|
const rsvg = rough.svg(svgRoot);
|
|
@@ -4623,7 +4416,8 @@ var exportToSvg = async (elements, appState, files, opts) => {
|
|
|
4623
4416
|
embedsValidationStatus: renderEmbeddables ? new Map(
|
|
4624
4417
|
elementsForRender.filter((element) => isFrameLikeElement(element)).map((element) => [element.id, true])
|
|
4625
4418
|
) : /* @__PURE__ */ new Map(),
|
|
4626
|
-
reuseImages: opts?.reuseImages ?? true
|
|
4419
|
+
reuseImages: opts?.reuseImages ?? true,
|
|
4420
|
+
theme: exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
|
|
4627
4421
|
}
|
|
4628
4422
|
);
|
|
4629
4423
|
return svgRoot;
|
|
@@ -4637,7 +4431,7 @@ var encodeSvgBase64Payload = ({
|
|
|
4637
4431
|
true
|
|
4638
4432
|
);
|
|
4639
4433
|
metadataElement.appendChild(
|
|
4640
|
-
createHTMLComment(`payload-type:${
|
|
4434
|
+
createHTMLComment(`payload-type:${MIME_TYPES4.excalidraw}`)
|
|
4641
4435
|
);
|
|
4642
4436
|
metadataElement.appendChild(createHTMLComment("payload-version:2"));
|
|
4643
4437
|
metadataElement.appendChild(createHTMLComment("payload-start"));
|
|
@@ -4645,7 +4439,7 @@ var encodeSvgBase64Payload = ({
|
|
|
4645
4439
|
metadataElement.appendChild(createHTMLComment("payload-end"));
|
|
4646
4440
|
};
|
|
4647
4441
|
var decodeSvgBase64Payload = ({ svg }) => {
|
|
4648
|
-
if (svg.includes(`payload-type:${
|
|
4442
|
+
if (svg.includes(`payload-type:${MIME_TYPES4.excalidraw}`)) {
|
|
4649
4443
|
const match = svg.match(
|
|
4650
4444
|
/<!-- payload-start -->\s*(.+?)\s*<!-- payload-end -->/
|
|
4651
4445
|
);
|
|
@@ -4686,7 +4480,7 @@ var getExportSize = (elements, exportPadding, scale) => {
|
|
|
4686
4480
|
};
|
|
4687
4481
|
|
|
4688
4482
|
// data/restore.ts
|
|
4689
|
-
import { isFiniteNumber, pointFrom as
|
|
4483
|
+
import { isFiniteNumber, pointFrom as pointFrom2 } from "@excalidraw/math";
|
|
4690
4484
|
import {
|
|
4691
4485
|
DEFAULT_FONT_FAMILY as DEFAULT_FONT_FAMILY2,
|
|
4692
4486
|
DEFAULT_TEXT_ALIGN as DEFAULT_TEXT_ALIGN2,
|
|
@@ -4705,7 +4499,13 @@ import {
|
|
|
4705
4499
|
normalizeLink as normalizeLink2,
|
|
4706
4500
|
getLineHeight
|
|
4707
4501
|
} from "@excalidraw/common";
|
|
4708
|
-
import {
|
|
4502
|
+
import {
|
|
4503
|
+
calculateFixedPointForNonElbowArrowBinding,
|
|
4504
|
+
getNonDeletedElements,
|
|
4505
|
+
isPointInElement,
|
|
4506
|
+
isValidPolygon,
|
|
4507
|
+
projectFixedPointOntoDiagonal
|
|
4508
|
+
} from "@excalidraw/element";
|
|
4709
4509
|
import { normalizeFixedPoint } from "@excalidraw/element";
|
|
4710
4510
|
import {
|
|
4711
4511
|
updateElbowArrowPoints,
|
|
@@ -4719,7 +4519,6 @@ import {
|
|
|
4719
4519
|
isArrowBoundToElement,
|
|
4720
4520
|
isArrowElement as isArrowElement2,
|
|
4721
4521
|
isElbowArrow,
|
|
4722
|
-
isFixedPointBinding,
|
|
4723
4522
|
isLinearElement,
|
|
4724
4523
|
isLineElement,
|
|
4725
4524
|
isTextElement as isTextElement4,
|
|
@@ -4754,23 +4553,66 @@ var getFontFamilyByName = (fontFamilyName) => {
|
|
|
4754
4553
|
}
|
|
4755
4554
|
return DEFAULT_FONT_FAMILY2;
|
|
4756
4555
|
};
|
|
4757
|
-
var repairBinding = (element, binding) => {
|
|
4758
|
-
|
|
4759
|
-
|
|
4760
|
-
|
|
4761
|
-
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4556
|
+
var repairBinding = (element, binding, targetElementsMap, existingElementsMap, startOrEnd) => {
|
|
4557
|
+
try {
|
|
4558
|
+
if (!binding) {
|
|
4559
|
+
return null;
|
|
4560
|
+
}
|
|
4561
|
+
if (isElbowArrow(element)) {
|
|
4562
|
+
const fixedPointBinding = {
|
|
4563
|
+
...binding,
|
|
4564
|
+
fixedPoint: normalizeFixedPoint(binding.fixedPoint ?? [0, 0]),
|
|
4565
|
+
mode: binding.mode || "orbit"
|
|
4566
|
+
};
|
|
4567
|
+
return fixedPointBinding;
|
|
4568
|
+
}
|
|
4569
|
+
if (binding.mode) {
|
|
4570
|
+
if (binding.elementId) {
|
|
4571
|
+
return {
|
|
4572
|
+
elementId: binding.elementId,
|
|
4573
|
+
mode: binding.mode,
|
|
4574
|
+
fixedPoint: normalizeFixedPoint(binding.fixedPoint || [0.5, 0.5])
|
|
4575
|
+
};
|
|
4576
|
+
}
|
|
4577
|
+
return null;
|
|
4578
|
+
}
|
|
4579
|
+
const targetBoundElement = targetElementsMap.get(binding.elementId) || void 0;
|
|
4580
|
+
const boundElement = targetBoundElement || existingElementsMap?.get(
|
|
4581
|
+
binding.elementId
|
|
4582
|
+
) || void 0;
|
|
4583
|
+
const elementsMap = targetBoundElement ? targetElementsMap : existingElementsMap;
|
|
4584
|
+
if (boundElement && elementsMap) {
|
|
4585
|
+
const p = LinearElementEditor2.getPointAtIndexGlobalCoordinates(
|
|
4586
|
+
element,
|
|
4587
|
+
startOrEnd === "start" ? 0 : element.points.length - 1,
|
|
4588
|
+
elementsMap
|
|
4589
|
+
);
|
|
4590
|
+
const mode = isPointInElement(p, boundElement, elementsMap) ? "inside" : "orbit";
|
|
4591
|
+
const focusPoint = mode === "inside" ? p : projectFixedPointOntoDiagonal(
|
|
4592
|
+
element,
|
|
4593
|
+
p,
|
|
4594
|
+
boundElement,
|
|
4595
|
+
startOrEnd,
|
|
4596
|
+
elementsMap
|
|
4597
|
+
) || p;
|
|
4598
|
+
const { fixedPoint } = calculateFixedPointForNonElbowArrowBinding(
|
|
4599
|
+
element,
|
|
4600
|
+
boundElement,
|
|
4601
|
+
startOrEnd,
|
|
4602
|
+
elementsMap,
|
|
4603
|
+
focusPoint
|
|
4604
|
+
);
|
|
4605
|
+
return {
|
|
4606
|
+
mode,
|
|
4607
|
+
elementId: binding.elementId,
|
|
4608
|
+
fixedPoint
|
|
4609
|
+
};
|
|
4610
|
+
}
|
|
4611
|
+
console.error(`could not repair binding for element`);
|
|
4612
|
+
} catch (error) {
|
|
4613
|
+
console.error("Error repairing binding:", error);
|
|
4769
4614
|
}
|
|
4770
|
-
return
|
|
4771
|
-
...binding,
|
|
4772
|
-
focus
|
|
4773
|
-
};
|
|
4615
|
+
return null;
|
|
4774
4616
|
};
|
|
4775
4617
|
var restoreElementWithProperties = (element, extra) => {
|
|
4776
4618
|
const base = {
|
|
@@ -4823,7 +4665,7 @@ var restoreElementWithProperties = (element, extra) => {
|
|
|
4823
4665
|
delete ret.boundElementIds;
|
|
4824
4666
|
return ret;
|
|
4825
4667
|
};
|
|
4826
|
-
var restoreElement = (element, opts) => {
|
|
4668
|
+
var restoreElement = (element, targetElementsMap, existingElementsMap, opts) => {
|
|
4827
4669
|
element = { ...element };
|
|
4828
4670
|
switch (element.type) {
|
|
4829
4671
|
case "text":
|
|
@@ -4863,7 +4705,6 @@ var restoreElement = (element, opts) => {
|
|
|
4863
4705
|
case "freedraw": {
|
|
4864
4706
|
return restoreElementWithProperties(element, {
|
|
4865
4707
|
points: element.points,
|
|
4866
|
-
lastCommittedPoint: null,
|
|
4867
4708
|
simulatePressure: element.simulatePressure,
|
|
4868
4709
|
pressures: element.pressures
|
|
4869
4710
|
});
|
|
@@ -4882,16 +4723,15 @@ var restoreElement = (element, opts) => {
|
|
|
4882
4723
|
let y = element.y;
|
|
4883
4724
|
let points = (
|
|
4884
4725
|
// migrate old arrow model to new one
|
|
4885
|
-
!Array.isArray(element.points) || element.points.length < 2 ? [
|
|
4726
|
+
!Array.isArray(element.points) || element.points.length < 2 ? [pointFrom2(0, 0), pointFrom2(element.width, element.height)] : element.points
|
|
4886
4727
|
);
|
|
4887
4728
|
if (points[0][0] !== 0 || points[0][1] !== 0) {
|
|
4888
4729
|
({ points, x, y } = LinearElementEditor2.getNormalizeElementPointsAndCoords(element));
|
|
4889
4730
|
}
|
|
4890
4731
|
return restoreElementWithProperties(element, {
|
|
4891
|
-
type:
|
|
4892
|
-
startBinding:
|
|
4893
|
-
endBinding:
|
|
4894
|
-
lastCommittedPoint: null,
|
|
4732
|
+
type: "line",
|
|
4733
|
+
startBinding: null,
|
|
4734
|
+
endBinding: null,
|
|
4895
4735
|
startArrowhead,
|
|
4896
4736
|
endArrowhead,
|
|
4897
4737
|
points,
|
|
@@ -4904,20 +4744,28 @@ var restoreElement = (element, opts) => {
|
|
|
4904
4744
|
});
|
|
4905
4745
|
case "arrow": {
|
|
4906
4746
|
const { startArrowhead: startArrowhead2 = null, endArrowhead: endArrowhead2 = "arrow" } = element;
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
4747
|
+
const x2 = element.x;
|
|
4748
|
+
const y2 = element.y;
|
|
4749
|
+
const points2 = (
|
|
4910
4750
|
// migrate old arrow model to new one
|
|
4911
|
-
!Array.isArray(element.points) || element.points.length < 2 ? [
|
|
4751
|
+
!Array.isArray(element.points) || element.points.length < 2 ? [pointFrom2(0, 0), pointFrom2(element.width, element.height)] : element.points
|
|
4912
4752
|
);
|
|
4913
|
-
if (points2[0][0] !== 0 || points2[0][1] !== 0) {
|
|
4914
|
-
({ points: points2, x: x2, y: y2 } = LinearElementEditor2.getNormalizeElementPointsAndCoords(element));
|
|
4915
|
-
}
|
|
4916
4753
|
const base = {
|
|
4917
4754
|
type: element.type,
|
|
4918
|
-
startBinding: repairBinding(
|
|
4919
|
-
|
|
4920
|
-
|
|
4755
|
+
startBinding: repairBinding(
|
|
4756
|
+
element,
|
|
4757
|
+
element.startBinding,
|
|
4758
|
+
targetElementsMap,
|
|
4759
|
+
existingElementsMap,
|
|
4760
|
+
"start"
|
|
4761
|
+
),
|
|
4762
|
+
endBinding: repairBinding(
|
|
4763
|
+
element,
|
|
4764
|
+
element.endBinding,
|
|
4765
|
+
targetElementsMap,
|
|
4766
|
+
existingElementsMap,
|
|
4767
|
+
"end"
|
|
4768
|
+
),
|
|
4921
4769
|
startArrowhead: startArrowhead2,
|
|
4922
4770
|
endArrowhead: endArrowhead2,
|
|
4923
4771
|
points: points2,
|
|
@@ -4926,15 +4774,19 @@ var restoreElement = (element, opts) => {
|
|
|
4926
4774
|
elbowed: element.elbowed,
|
|
4927
4775
|
...getSizeFromPoints(points2)
|
|
4928
4776
|
};
|
|
4929
|
-
|
|
4777
|
+
const restoredElement = isElbowArrow(element) ? restoreElementWithProperties(element, {
|
|
4930
4778
|
...base,
|
|
4931
4779
|
elbowed: true,
|
|
4932
|
-
startBinding: repairBinding(element, element.startBinding),
|
|
4933
|
-
endBinding: repairBinding(element, element.endBinding),
|
|
4934
4780
|
fixedSegments: element.fixedSegments?.length && base.points.length >= 4 ? element.fixedSegments : null,
|
|
4935
4781
|
startIsSpecial: element.startIsSpecial,
|
|
4936
4782
|
endIsSpecial: element.endIsSpecial
|
|
4937
4783
|
}) : restoreElementWithProperties(element, base);
|
|
4784
|
+
return {
|
|
4785
|
+
...restoredElement,
|
|
4786
|
+
...LinearElementEditor2.getNormalizeElementPointsAndCoords(
|
|
4787
|
+
restoredElement
|
|
4788
|
+
)
|
|
4789
|
+
};
|
|
4938
4790
|
}
|
|
4939
4791
|
case "ellipse":
|
|
4940
4792
|
case "rectangle":
|
|
@@ -4999,21 +4851,33 @@ var repairFrameMembership = (element, elementsMap) => {
|
|
|
4999
4851
|
}
|
|
5000
4852
|
}
|
|
5001
4853
|
};
|
|
5002
|
-
var restoreElements = (
|
|
4854
|
+
var restoreElements = (targetElements, existingElements, opts) => {
|
|
5003
4855
|
const existingIds = /* @__PURE__ */ new Set();
|
|
5004
|
-
const
|
|
4856
|
+
const targetElementsMap = arrayToMap2(targetElements || []);
|
|
4857
|
+
const existingElementsMap = existingElements ? arrayToMap2(existingElements) : null;
|
|
5005
4858
|
const restoredElements = syncInvalidIndices2(
|
|
5006
|
-
(
|
|
4859
|
+
(targetElements || []).reduce((elements, element) => {
|
|
5007
4860
|
if (element.type === "selection") {
|
|
5008
|
-
return
|
|
4861
|
+
return elements;
|
|
4862
|
+
}
|
|
4863
|
+
let migratedElement;
|
|
4864
|
+
try {
|
|
4865
|
+
migratedElement = restoreElement(
|
|
4866
|
+
element,
|
|
4867
|
+
targetElementsMap,
|
|
4868
|
+
existingElementsMap,
|
|
4869
|
+
{
|
|
4870
|
+
deleteInvisibleElements: opts?.deleteInvisibleElements
|
|
4871
|
+
}
|
|
4872
|
+
);
|
|
4873
|
+
} catch (error) {
|
|
4874
|
+
console.error("Error restoring element:", error);
|
|
4875
|
+
migratedElement = null;
|
|
5009
4876
|
}
|
|
5010
|
-
let migratedElement = restoreElement(element, {
|
|
5011
|
-
deleteInvisibleElements: opts?.deleteInvisibleElements
|
|
5012
|
-
});
|
|
5013
4877
|
if (migratedElement) {
|
|
5014
|
-
const localElement =
|
|
4878
|
+
const localElement = existingElementsMap?.get(element.id);
|
|
5015
4879
|
const shouldMarkAsDeleted = opts?.deleteInvisibleElements && isInvisiblySmallElement(element);
|
|
5016
|
-
if (shouldMarkAsDeleted
|
|
4880
|
+
if (shouldMarkAsDeleted) {
|
|
5017
4881
|
migratedElement = bumpVersion(migratedElement, localElement?.version);
|
|
5018
4882
|
}
|
|
5019
4883
|
if (shouldMarkAsDeleted) {
|
|
@@ -5023,9 +4887,9 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5023
4887
|
migratedElement = { ...migratedElement, id: randomId() };
|
|
5024
4888
|
}
|
|
5025
4889
|
existingIds.add(migratedElement.id);
|
|
5026
|
-
|
|
4890
|
+
elements.push(migratedElement);
|
|
5027
4891
|
}
|
|
5028
|
-
return
|
|
4892
|
+
return elements;
|
|
5029
4893
|
}, [])
|
|
5030
4894
|
);
|
|
5031
4895
|
if (!opts?.repairBindings) {
|
|
@@ -5069,7 +4933,7 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5069
4933
|
restoredElementsMap,
|
|
5070
4934
|
{
|
|
5071
4935
|
points: [
|
|
5072
|
-
|
|
4936
|
+
pointFrom2(0, 0),
|
|
5073
4937
|
element.points[element.points.length - 1]
|
|
5074
4938
|
]
|
|
5075
4939
|
}
|
|
@@ -5098,10 +4962,10 @@ var restoreElements = (elements, localElements, opts) => {
|
|
|
5098
4962
|
width: boundElement.width,
|
|
5099
4963
|
height: boundElement.height,
|
|
5100
4964
|
points: [
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
4965
|
+
pointFrom2(0, 0),
|
|
4966
|
+
pointFrom2(0, -10),
|
|
4967
|
+
pointFrom2(boundElement.width / 2 + 5, -10),
|
|
4968
|
+
pointFrom2(
|
|
5105
4969
|
boundElement.width / 2 + 5,
|
|
5106
4970
|
boundElement.height / 2 + 5
|
|
5107
4971
|
)
|
|
@@ -5179,13 +5043,6 @@ var restoreAppState = (appState, localAppState) => {
|
|
|
5179
5043
|
editingFrame: null
|
|
5180
5044
|
};
|
|
5181
5045
|
};
|
|
5182
|
-
var restore = (data, localAppState, localElements, elementsConfig) => {
|
|
5183
|
-
return {
|
|
5184
|
-
elements: restoreElements(data?.elements, localElements, elementsConfig),
|
|
5185
|
-
appState: restoreAppState(data?.appState, localAppState || null),
|
|
5186
|
-
files: data?.files || {}
|
|
5187
|
-
};
|
|
5188
|
-
};
|
|
5189
5046
|
var restoreLibraryItem = (libraryItem) => {
|
|
5190
5047
|
const elements = restoreElements(
|
|
5191
5048
|
getNonDeletedElements(libraryItem.elements),
|
|
@@ -5225,9 +5082,9 @@ var restoreLibraryItems = (libraryItems = [], defaultStatus) => {
|
|
|
5225
5082
|
// data/blob.ts
|
|
5226
5083
|
var parseFileContents = async (blob) => {
|
|
5227
5084
|
let contents;
|
|
5228
|
-
if (blob.type ===
|
|
5085
|
+
if (blob.type === MIME_TYPES5.png) {
|
|
5229
5086
|
try {
|
|
5230
|
-
return await (await import("./data/image-
|
|
5087
|
+
return await (await import("./data/image-2BHUUSLM.js")).decodePngMetadata(blob);
|
|
5231
5088
|
} catch (error) {
|
|
5232
5089
|
if (error.message === "INVALID") {
|
|
5233
5090
|
throw new ImageSceneDataError(
|
|
@@ -5252,7 +5109,7 @@ var parseFileContents = async (blob) => {
|
|
|
5252
5109
|
};
|
|
5253
5110
|
});
|
|
5254
5111
|
}
|
|
5255
|
-
if (blob.type ===
|
|
5112
|
+
if (blob.type === MIME_TYPES5.svg) {
|
|
5256
5113
|
try {
|
|
5257
5114
|
return decodeSvgBase64Payload({
|
|
5258
5115
|
svg: contents
|
|
@@ -5308,30 +5165,27 @@ var loadSceneOrLibraryFromBlob = async (blob, localAppState, localElements, file
|
|
|
5308
5165
|
}
|
|
5309
5166
|
if (isValidExcalidrawData(data)) {
|
|
5310
5167
|
return {
|
|
5311
|
-
type:
|
|
5312
|
-
data:
|
|
5313
|
-
{
|
|
5314
|
-
|
|
5315
|
-
|
|
5168
|
+
type: MIME_TYPES5.excalidraw,
|
|
5169
|
+
data: {
|
|
5170
|
+
elements: restoreElements(data.elements, localElements, {
|
|
5171
|
+
repairBindings: true,
|
|
5172
|
+
deleteInvisibleElements: true
|
|
5173
|
+
}),
|
|
5174
|
+
appState: restoreAppState(
|
|
5175
|
+
{
|
|
5316
5176
|
theme: localAppState?.theme,
|
|
5317
5177
|
fileHandle: fileHandle || blob.handle || null,
|
|
5318
5178
|
...cleanAppStateForExport(data.appState || {}),
|
|
5319
5179
|
...localAppState ? calculateScrollCenter(data.elements || [], localAppState) : {}
|
|
5320
5180
|
},
|
|
5321
|
-
|
|
5322
|
-
|
|
5323
|
-
|
|
5324
|
-
|
|
5325
|
-
{
|
|
5326
|
-
repairBindings: true,
|
|
5327
|
-
refreshDimensions: false,
|
|
5328
|
-
deleteInvisibleElements: true
|
|
5329
|
-
}
|
|
5330
|
-
)
|
|
5181
|
+
localAppState
|
|
5182
|
+
),
|
|
5183
|
+
files: data.files || {}
|
|
5184
|
+
}
|
|
5331
5185
|
};
|
|
5332
5186
|
} else if (isValidLibrary(data)) {
|
|
5333
5187
|
return {
|
|
5334
|
-
type:
|
|
5188
|
+
type: MIME_TYPES5.excalidrawlib,
|
|
5335
5189
|
data
|
|
5336
5190
|
};
|
|
5337
5191
|
}
|
|
@@ -5350,7 +5204,7 @@ var loadFromBlob = async (blob, localAppState, localElements, fileHandle) => {
|
|
|
5350
5204
|
localElements,
|
|
5351
5205
|
fileHandle
|
|
5352
5206
|
);
|
|
5353
|
-
if (ret.type !==
|
|
5207
|
+
if (ret.type !== MIME_TYPES5.excalidraw) {
|
|
5354
5208
|
throw new Error("Error: invalid file");
|
|
5355
5209
|
}
|
|
5356
5210
|
return ret.data;
|
|
@@ -5418,7 +5272,7 @@ var dataURLToString = (dataURL) => {
|
|
|
5418
5272
|
return base64ToString(dataURL.slice(dataURL.indexOf(",") + 1));
|
|
5419
5273
|
};
|
|
5420
5274
|
var resizeImageFile = async (file, opts) => {
|
|
5421
|
-
if (file.type ===
|
|
5275
|
+
if (file.type === MIME_TYPES5.svg) {
|
|
5422
5276
|
return file;
|
|
5423
5277
|
}
|
|
5424
5278
|
const [pica, imageBlobReduce] = await Promise.all([
|
|
@@ -5451,7 +5305,7 @@ var resizeImageFile = async (file, opts) => {
|
|
|
5451
5305
|
};
|
|
5452
5306
|
var SVGStringToFile = (SVGString, filename = "") => {
|
|
5453
5307
|
return new File([new TextEncoder().encode(SVGString)], filename, {
|
|
5454
|
-
type:
|
|
5308
|
+
type: MIME_TYPES5.svg
|
|
5455
5309
|
});
|
|
5456
5310
|
};
|
|
5457
5311
|
var ImageURLToFile = async (imageUrl, filename = "") => {
|
|
@@ -5503,7 +5357,7 @@ var getActualMimeTypeFromImage = async (file) => {
|
|
|
5503
5357
|
};
|
|
5504
5358
|
for (const type of Object.keys(bytes)) {
|
|
5505
5359
|
if (leadingBytes.match(bytes[type])) {
|
|
5506
|
-
mimeType =
|
|
5360
|
+
mimeType = MIME_TYPES5[type];
|
|
5507
5361
|
break;
|
|
5508
5362
|
}
|
|
5509
5363
|
}
|
|
@@ -5520,9 +5374,9 @@ var normalizeFile = async (file) => {
|
|
|
5520
5374
|
return file;
|
|
5521
5375
|
}
|
|
5522
5376
|
if (file?.name?.endsWith(".excalidrawlib")) {
|
|
5523
|
-
file = createFile(file,
|
|
5377
|
+
file = createFile(file, MIME_TYPES5.excalidrawlib, file.name);
|
|
5524
5378
|
} else if (file?.name?.endsWith(".excalidraw")) {
|
|
5525
|
-
file = createFile(file,
|
|
5379
|
+
file = createFile(file, MIME_TYPES5.excalidraw, file.name);
|
|
5526
5380
|
} else if (!file.type || file.type?.startsWith("image/")) {
|
|
5527
5381
|
const mimeType = await getActualMimeTypeFromImage(file);
|
|
5528
5382
|
if (mimeType && mimeType !== file.type) {
|
|
@@ -5563,7 +5417,7 @@ var encodePngMetadata = async ({
|
|
|
5563
5417
|
}) => {
|
|
5564
5418
|
const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob)));
|
|
5565
5419
|
const metadataChunk = tEXt.encode(
|
|
5566
|
-
|
|
5420
|
+
MIME_TYPES6.excalidraw,
|
|
5567
5421
|
JSON.stringify(
|
|
5568
5422
|
encode({
|
|
5569
5423
|
text: metadata,
|
|
@@ -5572,11 +5426,11 @@ var encodePngMetadata = async ({
|
|
|
5572
5426
|
)
|
|
5573
5427
|
);
|
|
5574
5428
|
chunks.splice(-1, 0, metadataChunk);
|
|
5575
|
-
return new Blob([encodePng(chunks)], { type:
|
|
5429
|
+
return new Blob([encodePng(chunks)], { type: MIME_TYPES6.png });
|
|
5576
5430
|
};
|
|
5577
5431
|
var decodePngMetadata = async (blob) => {
|
|
5578
5432
|
const metadata = await getTEXtChunk(blob);
|
|
5579
|
-
if (metadata?.keyword ===
|
|
5433
|
+
if (metadata?.keyword === MIME_TYPES6.excalidraw) {
|
|
5580
5434
|
try {
|
|
5581
5435
|
const encodedData = JSON.parse(metadata.text);
|
|
5582
5436
|
if (!("encoded" in encodedData)) {
|
|
@@ -5611,6 +5465,7 @@ export {
|
|
|
5611
5465
|
AbortError,
|
|
5612
5466
|
ImageSceneDataError,
|
|
5613
5467
|
ExcalidrawError,
|
|
5468
|
+
RequestError,
|
|
5614
5469
|
Fonts,
|
|
5615
5470
|
getDefaultAppState,
|
|
5616
5471
|
isEraserActive,
|
|
@@ -5629,10 +5484,7 @@ export {
|
|
|
5629
5484
|
fillCircle,
|
|
5630
5485
|
getNormalizedCanvasDimensions,
|
|
5631
5486
|
bootstrapCanvas,
|
|
5632
|
-
|
|
5633
|
-
strokeEllipseWithRotation,
|
|
5634
|
-
strokeRectWithRotation,
|
|
5635
|
-
drawHighlightForDiamondWithRotation,
|
|
5487
|
+
strokeRectWithRotation_simple,
|
|
5636
5488
|
frameClip,
|
|
5637
5489
|
renderStaticSceneThrottled,
|
|
5638
5490
|
renderStaticScene,
|
|
@@ -5642,7 +5494,6 @@ export {
|
|
|
5642
5494
|
restoreElement,
|
|
5643
5495
|
restoreElements,
|
|
5644
5496
|
restoreAppState,
|
|
5645
|
-
restore,
|
|
5646
5497
|
restoreLibraryItems,
|
|
5647
5498
|
getTEXtChunk,
|
|
5648
5499
|
encodePngMetadata,
|
|
@@ -5668,4 +5519,4 @@ export {
|
|
|
5668
5519
|
createFile,
|
|
5669
5520
|
normalizeFile
|
|
5670
5521
|
};
|
|
5671
|
-
//# sourceMappingURL=chunk-
|
|
5522
|
+
//# sourceMappingURL=chunk-PW6TXCLQ.js.map
|