@excalidraw/excalidraw 0.18.0-91c7748 → 0.18.0-9ba0f5d

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.
Files changed (536) hide show
  1. package/dist/dev/{chunk-FB2NA5UG.js → chunk-6JJSWC4C.js} +1 -1
  2. package/dist/dev/{chunk-FB2NA5UG.js.map → chunk-6JJSWC4C.js.map} +2 -2
  3. package/dist/dev/chunk-DJHLEOOZ.js +69 -0
  4. package/dist/dev/chunk-DJHLEOOZ.js.map +7 -0
  5. package/dist/dev/{chunk-QF5FRM6O.js → chunk-MNO2YU5M.js} +101 -27
  6. package/dist/dev/chunk-MNO2YU5M.js.map +7 -0
  7. package/dist/dev/{chunk-LJB4UXX2.js → chunk-PW6TXCLQ.js} +311 -463
  8. package/dist/dev/chunk-PW6TXCLQ.js.map +7 -0
  9. package/dist/dev/{chunk-CP5DND7P.js → chunk-Y3BTNZQY.js} +2 -2
  10. package/dist/dev/data/{image-OLV524AK.js → image-2BHUUSLM.js} +3 -3
  11. package/dist/dev/index.css +2077 -1076
  12. package/dist/dev/index.css.map +3 -3
  13. package/dist/dev/index.js +10972 -7971
  14. package/dist/dev/index.js.map +4 -4
  15. package/dist/dev/locales/{ar-SA-XORAP2EK.js → ar-SA-JK5MQ7TT.js} +300 -142
  16. package/dist/dev/locales/ar-SA-JK5MQ7TT.js.map +7 -0
  17. package/dist/dev/locales/{az-AZ-NAUU3Z4Y.js → az-AZ-2PAD62G4.js} +241 -83
  18. package/dist/dev/locales/az-AZ-2PAD62G4.js.map +7 -0
  19. package/dist/dev/locales/{bg-BG-AAABLFCY.js → bg-BG-HUKVYCRK.js} +229 -71
  20. package/dist/dev/locales/bg-BG-HUKVYCRK.js.map +7 -0
  21. package/dist/dev/locales/{bn-BD-PM4AC5WG.js → bn-BD-V2CQI46P.js} +209 -51
  22. package/dist/dev/locales/bn-BD-V2CQI46P.js.map +7 -0
  23. package/dist/dev/locales/bn-IN-MBEO4C3J.js +744 -0
  24. package/dist/dev/locales/bn-IN-MBEO4C3J.js.map +7 -0
  25. package/dist/dev/locales/{ca-ES-YNNMFRQX.js → ca-ES-KWEKW4C3.js} +275 -117
  26. package/dist/dev/locales/ca-ES-KWEKW4C3.js.map +7 -0
  27. package/dist/dev/locales/{cs-CZ-DGZA5IKG.js → cs-CZ-W5AHZB5H.js} +229 -71
  28. package/dist/dev/locales/cs-CZ-W5AHZB5H.js.map +7 -0
  29. package/dist/dev/locales/{da-DK-N76F4QAJ.js → da-DK-ITTM6YM4.js} +298 -140
  30. package/dist/dev/locales/da-DK-ITTM6YM4.js.map +7 -0
  31. package/dist/dev/locales/de-CH-OAWPDQFJ.js +744 -0
  32. package/dist/dev/locales/de-CH-OAWPDQFJ.js.map +7 -0
  33. package/dist/dev/locales/{de-DE-DMRXZ2SZ.js → de-DE-ZRDYEPMS.js} +199 -41
  34. package/dist/dev/locales/de-DE-ZRDYEPMS.js.map +7 -0
  35. package/dist/dev/locales/{el-GR-HIKPLEXI.js → el-GR-QXASZLPE.js} +274 -116
  36. package/dist/dev/locales/el-GR-QXASZLPE.js.map +7 -0
  37. package/dist/dev/locales/{en-SMAPCEOQ.js → en-JRVQ7H6V.js} +8 -2
  38. package/dist/dev/locales/{es-ES-AQYVXC32.js → es-ES-VLQBB7FJ.js} +212 -54
  39. package/dist/dev/locales/es-ES-VLQBB7FJ.js.map +7 -0
  40. package/dist/dev/locales/{eu-ES-3TOEU5DE.js → eu-ES-TF2DGTZU.js} +210 -52
  41. package/dist/dev/locales/eu-ES-TF2DGTZU.js.map +7 -0
  42. package/dist/dev/locales/{fa-IR-527GAKUP.js → fa-IR-ITKFQ7QV.js} +286 -128
  43. package/dist/dev/locales/fa-IR-ITKFQ7QV.js.map +7 -0
  44. package/dist/dev/locales/{fi-FI-M3WLVDFP.js → fi-FI-UWZRVXFI.js} +240 -82
  45. package/dist/dev/locales/fi-FI-UWZRVXFI.js.map +7 -0
  46. package/dist/dev/locales/{fr-FR-YE4VDJFI.js → fr-FR-A72LKGCO.js} +203 -45
  47. package/dist/dev/locales/fr-FR-A72LKGCO.js.map +7 -0
  48. package/dist/dev/locales/{gl-ES-KMXUYGUN.js → gl-ES-2QCVIBFP.js} +212 -54
  49. package/dist/dev/locales/gl-ES-2QCVIBFP.js.map +7 -0
  50. package/dist/dev/locales/he-IL-WJNUHU26.js +744 -0
  51. package/dist/dev/locales/he-IL-WJNUHU26.js.map +7 -0
  52. package/dist/dev/locales/hi-IN-XGMO235V.js +744 -0
  53. package/dist/dev/locales/hi-IN-XGMO235V.js.map +7 -0
  54. package/dist/dev/locales/{hu-HU-VIYZI3X4.js → hu-HU-37FDQFIS.js} +238 -80
  55. package/dist/dev/locales/hu-HU-37FDQFIS.js.map +7 -0
  56. package/dist/dev/locales/{id-ID-22TWZNLA.js → id-ID-EJIDCO4E.js} +245 -87
  57. package/dist/dev/locales/id-ID-EJIDCO4E.js.map +7 -0
  58. package/dist/dev/locales/{it-IT-MDEQ2SG3.js → it-IT-X34PIOJ2.js} +202 -44
  59. package/dist/dev/locales/it-IT-X34PIOJ2.js.map +7 -0
  60. package/dist/dev/locales/{ja-JP-K2DI4W6B.js → ja-JP-37FC23PR.js} +247 -89
  61. package/dist/dev/locales/ja-JP-37FC23PR.js.map +7 -0
  62. package/dist/dev/locales/{kaa-6BPSNM3R.js → kaa-7ZYDFVKA.js} +202 -44
  63. package/dist/dev/locales/kaa-7ZYDFVKA.js.map +7 -0
  64. package/dist/dev/locales/{kab-KAB-2S7ZURK7.js → kab-KAB-MILWXBA6.js} +210 -52
  65. package/dist/dev/locales/kab-KAB-MILWXBA6.js.map +7 -0
  66. package/dist/dev/locales/{kk-KZ-UJPYGRQQ.js → kk-KZ-7BWTPIAV.js} +175 -17
  67. package/dist/dev/locales/kk-KZ-7BWTPIAV.js.map +7 -0
  68. package/dist/dev/locales/{km-KH-M5T5JKUE.js → km-KH-BV4P2KSZ.js} +198 -40
  69. package/dist/dev/locales/km-KH-BV4P2KSZ.js.map +7 -0
  70. package/dist/dev/locales/{ko-KR-RQX37SNF.js → ko-KR-TSXE5P7B.js} +218 -60
  71. package/dist/dev/locales/ko-KR-TSXE5P7B.js.map +7 -0
  72. package/dist/dev/locales/{ku-TR-5XJDIERL.js → ku-TR-ASSXNN3U.js} +198 -40
  73. package/dist/dev/locales/ku-TR-ASSXNN3U.js.map +7 -0
  74. package/dist/dev/locales/{lt-LT-MGUBX6CA.js → lt-LT-G7RZYQQU.js} +179 -21
  75. package/dist/dev/locales/lt-LT-G7RZYQQU.js.map +7 -0
  76. package/dist/dev/locales/{lv-LV-MD7N5VHD.js → lv-LV-DXNPBJZU.js} +196 -38
  77. package/dist/dev/locales/lv-LV-DXNPBJZU.js.map +7 -0
  78. package/dist/dev/locales/{mr-IN-4XWMNGQC.js → mr-IN-7F2ZCTCF.js} +204 -46
  79. package/dist/dev/locales/mr-IN-7F2ZCTCF.js.map +7 -0
  80. package/dist/dev/locales/{my-MM-O4Z74GN5.js → my-MM-NBI3KQGW.js} +181 -23
  81. package/dist/dev/locales/my-MM-NBI3KQGW.js.map +7 -0
  82. package/dist/dev/locales/{nb-NO-BMB73KRH.js → nb-NO-4DCTQT6L.js} +220 -62
  83. package/dist/dev/locales/nb-NO-4DCTQT6L.js.map +7 -0
  84. package/dist/dev/locales/{nl-NL-F2257BLQ.js → nl-NL-XGZJ7V2V.js} +297 -139
  85. package/dist/dev/locales/nl-NL-XGZJ7V2V.js.map +7 -0
  86. package/dist/dev/locales/{nn-NO-NCORG7TS.js → nn-NO-FR534JV5.js} +201 -43
  87. package/dist/dev/locales/nn-NO-FR534JV5.js.map +7 -0
  88. package/dist/dev/locales/{oc-FR-ATFBDMF6.js → oc-FR-YQCIKZIK.js} +220 -62
  89. package/dist/dev/locales/oc-FR-YQCIKZIK.js.map +7 -0
  90. package/dist/dev/locales/{pa-IN-D2I375G4.js → pa-IN-UM43JGD2.js} +190 -32
  91. package/dist/dev/locales/pa-IN-UM43JGD2.js.map +7 -0
  92. package/dist/dev/locales/{percentages-YKFLWNK2.js → percentages-OGWD7R2K.js} +2 -2
  93. package/dist/dev/locales/{pl-PL-YJHOWAAW.js → pl-PL-2UGKA6HK.js} +214 -56
  94. package/dist/dev/locales/pl-PL-2UGKA6HK.js.map +7 -0
  95. package/dist/dev/locales/{pt-BR-APOPYZJ7.js → pt-BR-H23QFYE3.js} +237 -79
  96. package/dist/dev/locales/pt-BR-H23QFYE3.js.map +7 -0
  97. package/dist/dev/locales/pt-PT-RHKJH5I5.js +744 -0
  98. package/dist/dev/locales/pt-PT-RHKJH5I5.js.map +7 -0
  99. package/dist/dev/locales/{ro-RO-L575VRQA.js → ro-RO-IIFONL3T.js} +203 -45
  100. package/dist/dev/locales/ro-RO-IIFONL3T.js.map +7 -0
  101. package/dist/dev/locales/{ru-RU-BLG6HZG5.js → ru-RU-QEP6D7GK.js} +253 -95
  102. package/dist/dev/locales/ru-RU-QEP6D7GK.js.map +7 -0
  103. package/dist/dev/locales/si-LK-LZYJQLHF.js +744 -0
  104. package/dist/dev/locales/si-LK-LZYJQLHF.js.map +7 -0
  105. package/dist/dev/locales/{sk-SK-DY6IPO5U.js → sk-SK-RWC6UWGY.js} +200 -42
  106. package/dist/dev/locales/sk-SK-RWC6UWGY.js.map +7 -0
  107. package/dist/dev/locales/{sl-SI-5DZSRA47.js → sl-SI-QJT2CAUO.js} +197 -39
  108. package/dist/dev/locales/sl-SI-QJT2CAUO.js.map +7 -0
  109. package/dist/dev/locales/{sv-SE-V32YHALQ.js → sv-SE-3MAT3NDX.js} +202 -44
  110. package/dist/dev/locales/sv-SE-3MAT3NDX.js.map +7 -0
  111. package/dist/dev/locales/{ta-IN-5JRAGQAO.js → ta-IN-J7XOYF2T.js} +257 -99
  112. package/dist/dev/locales/ta-IN-J7XOYF2T.js.map +7 -0
  113. package/dist/dev/locales/{th-TH-55ACRHDJ.js → th-TH-2OI52EOQ.js} +289 -131
  114. package/dist/dev/locales/th-TH-2OI52EOQ.js.map +7 -0
  115. package/dist/dev/locales/{tr-TR-7QYBXDBO.js → tr-TR-G7TAUHUI.js} +257 -99
  116. package/dist/dev/locales/tr-TR-G7TAUHUI.js.map +7 -0
  117. package/dist/dev/locales/{uk-UA-TJS2TMRH.js → uk-UA-IVSVBJIG.js} +229 -71
  118. package/dist/dev/locales/uk-UA-IVSVBJIG.js.map +7 -0
  119. package/dist/dev/locales/{si-LK-KT7GGO6D.js → uz-UZ-KCVDUVDE.js} +212 -54
  120. package/dist/dev/locales/uz-UZ-KCVDUVDE.js.map +7 -0
  121. package/dist/dev/locales/vi-VN-KBZAVWP5.js +744 -0
  122. package/dist/dev/locales/vi-VN-KBZAVWP5.js.map +7 -0
  123. package/dist/dev/locales/{zh-CN-4MXUOFTH.js → zh-CN-IS26RG2D.js} +199 -41
  124. package/dist/dev/locales/zh-CN-IS26RG2D.js.map +7 -0
  125. package/dist/dev/locales/{zh-HK-RBTGIU3U.js → zh-HK-KBWQ6SJC.js} +175 -17
  126. package/dist/dev/locales/zh-HK-KBWQ6SJC.js.map +7 -0
  127. package/dist/dev/locales/{zh-TW-U5VF4CCU.js → zh-TW-JKJWJQ4J.js} +204 -46
  128. package/dist/dev/locales/zh-TW-JKJWJQ4J.js.map +7 -0
  129. package/dist/dev/subset-shared.chunk.js +2 -2
  130. package/dist/dev/subset-worker.chunk.js +2 -2
  131. package/dist/prod/chunk-AJI3LATG.js +1 -0
  132. package/dist/prod/chunk-COMIBRVY.js +12 -0
  133. package/dist/prod/chunk-R7EP47KM.js +4 -0
  134. package/dist/prod/{chunk-LS7FJGPW.js → chunk-Z5NKEFVG.js} +8 -8
  135. package/dist/prod/data/{image-IFOCRD4I.js → image-WVUQOLPF.js} +1 -1
  136. package/dist/prod/index.css +1 -1
  137. package/dist/prod/index.js +35 -25
  138. package/dist/prod/locales/ar-SA-IYHKZRSE.js +8 -0
  139. package/dist/prod/locales/az-AZ-WL5GYRHK.js +1 -0
  140. package/dist/prod/locales/bg-BG-FXZYTRPD.js +5 -0
  141. package/dist/prod/locales/bn-BD-KO6YL5G2.js +3 -0
  142. package/dist/prod/locales/bn-IN-PC6JHKYB.js +3 -0
  143. package/dist/prod/locales/ca-ES-AREX5NEO.js +8 -0
  144. package/dist/prod/locales/cs-CZ-HXAZMFYH.js +7 -0
  145. package/dist/prod/locales/da-DK-5X7ZLFU3.js +2 -0
  146. package/dist/prod/locales/de-CH-76ZNVSOF.js +7 -0
  147. package/dist/prod/locales/de-DE-G3JVZ4MQ.js +7 -0
  148. package/dist/prod/locales/el-GR-4AZTZGY6.js +7 -0
  149. package/dist/prod/locales/en-TSRAEZ4E.js +1 -0
  150. package/dist/prod/locales/es-ES-ART7BI3G.js +7 -0
  151. package/dist/prod/locales/eu-ES-BIF4XBMT.js +7 -0
  152. package/dist/prod/locales/fa-IR-D4HHKAAI.js +9 -0
  153. package/dist/prod/locales/fi-FI-O35ZY7UI.js +6 -0
  154. package/dist/prod/locales/fr-FR-XEFNCM4I.js +12 -0
  155. package/dist/prod/locales/gl-ES-U4NYM3X5.js +6 -0
  156. package/dist/prod/locales/he-IL-656ABAVQ.js +8 -0
  157. package/dist/prod/locales/hi-IN-Z55GAFFR.js +3 -0
  158. package/dist/prod/locales/hu-HU-UJ62DVIW.js +3 -0
  159. package/dist/prod/locales/id-ID-FLZFU3OO.js +8 -0
  160. package/dist/prod/locales/it-IT-GIGIGIBJ.js +12 -0
  161. package/dist/prod/locales/ja-JP-43VXGDWI.js +7 -0
  162. package/dist/prod/locales/kaa-L3IMSDYL.js +1 -0
  163. package/dist/prod/locales/kab-KAB-XKPWJLNL.js +4 -0
  164. package/dist/prod/locales/kk-KZ-SXPDDY2H.js +1 -0
  165. package/dist/prod/locales/km-KH-DOS4CPGC.js +7 -0
  166. package/dist/prod/locales/ko-KR-BGC6VCY4.js +5 -0
  167. package/dist/prod/locales/ku-TR-J7IUITIA.js +6 -0
  168. package/dist/prod/locales/lt-LT-AC3LV5KG.js +3 -0
  169. package/dist/prod/locales/lv-LV-I6AY7QG2.js +4 -0
  170. package/dist/prod/locales/mr-IN-5SP4HV5B.js +9 -0
  171. package/dist/prod/locales/my-MM-S7ECRBYZ.js +1 -0
  172. package/dist/prod/locales/nb-NO-6PNHTF4R.js +8 -0
  173. package/dist/prod/locales/nl-NL-R4C4SUIG.js +13 -0
  174. package/dist/prod/locales/nn-NO-3TFXTM7Y.js +4 -0
  175. package/dist/prod/locales/oc-FR-IK6GIE7H.js +4 -0
  176. package/dist/prod/locales/pa-IN-YAKHYJET.js +4 -0
  177. package/dist/prod/locales/percentages-OL6W367U.js +1 -0
  178. package/dist/prod/locales/pl-PL-BIY22ZWU.js +12 -0
  179. package/dist/prod/locales/pt-BR-Q23NUPD6.js +6 -0
  180. package/dist/prod/locales/pt-PT-LOPEJLPJ.js +8 -0
  181. package/dist/prod/locales/ro-RO-W3D2ZATV.js +12 -0
  182. package/dist/prod/locales/ru-RU-DCTW7QSH.js +10 -0
  183. package/dist/prod/locales/si-LK-FYRRHO3C.js +1 -0
  184. package/dist/prod/locales/sk-SK-MC7UOHQO.js +7 -0
  185. package/dist/prod/locales/sl-SI-L6B6HFY5.js +6 -0
  186. package/dist/prod/locales/sv-SE-KMY6L2BA.js +8 -0
  187. package/dist/prod/locales/ta-IN-ZQCYE2JK.js +6 -0
  188. package/dist/prod/locales/th-TH-WS7ECBAV.js +1 -0
  189. package/dist/prod/locales/tr-TR-S5FI7JRW.js +4 -0
  190. package/dist/prod/locales/uk-UA-4EZUWUSQ.js +6 -0
  191. package/dist/prod/locales/uz-UZ-OKHL6AFA.js +1 -0
  192. package/dist/prod/locales/vi-VN-K34TWHF7.js +7 -0
  193. package/dist/prod/locales/zh-CN-JE4UZWNO.js +11 -0
  194. package/dist/prod/locales/zh-HK-RM35YDXX.js +1 -0
  195. package/dist/prod/locales/zh-TW-ONGLV6Y5.js +9 -0
  196. package/dist/prod/subset-shared.chunk.js +1 -1
  197. package/dist/prod/subset-worker.chunk.js +1 -1
  198. package/dist/types/common/src/bounds.d.ts +10 -0
  199. package/dist/types/common/src/colors.d.ts +59 -39
  200. package/dist/types/common/src/constants.d.ts +19 -27
  201. package/dist/types/common/src/editorInterface.d.ts +34 -0
  202. package/dist/types/common/src/font-metadata.d.ts +1 -3
  203. package/dist/types/common/src/index.d.ts +2 -0
  204. package/dist/types/common/src/keys.d.ts +1 -1
  205. package/dist/types/common/src/utility-types.d.ts +0 -1
  206. package/dist/types/common/src/utils.d.ts +49 -35
  207. package/dist/types/element/src/Scene.d.ts +3 -3
  208. package/dist/types/element/src/binding.d.ts +58 -44
  209. package/dist/types/element/src/bounds.d.ts +2 -10
  210. package/dist/types/element/src/collision.d.ts +6 -2
  211. package/dist/types/element/src/comparisons.d.ts +7 -7
  212. package/dist/types/element/src/dragElements.d.ts +3 -3
  213. package/dist/types/element/src/duplicate.d.ts +3 -3
  214. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  215. package/dist/types/element/src/frame.d.ts +5 -1
  216. package/dist/types/element/src/heading.d.ts +2 -1
  217. package/dist/types/element/src/image.d.ts +1 -11
  218. package/dist/types/element/src/index.d.ts +1 -3
  219. package/dist/types/element/src/linearElementEditor.d.ts +16 -20
  220. package/dist/types/element/src/mutateElement.d.ts +3 -1
  221. package/dist/types/element/src/newElement.d.ts +6 -6
  222. package/dist/types/element/src/renderElement.d.ts +1 -7
  223. package/dist/types/element/src/resizeElements.d.ts +10 -10
  224. package/dist/types/element/src/resizeTest.d.ts +6 -5
  225. package/dist/types/element/src/selection.d.ts +3 -7
  226. package/dist/types/element/src/shape.d.ts +8 -7
  227. package/dist/types/element/src/textMeasurements.d.ts +1 -3
  228. package/dist/types/{excalidraw/data → element/src}/transform.d.ts +3 -3
  229. package/dist/types/element/src/transformHandles.d.ts +8 -27
  230. package/dist/types/element/src/typeChecks.d.ts +4 -7
  231. package/dist/types/element/src/types.d.ts +7 -11
  232. package/dist/types/element/src/utils.d.ts +5 -2
  233. package/dist/types/element/src/zindex.d.ts +7 -1
  234. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +93 -139
  235. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
  236. package/dist/types/excalidraw/actions/actionBoundText.d.ts +67 -98
  237. package/dist/types/excalidraw/actions/actionCanvas.d.ts +401 -771
  238. package/dist/types/excalidraw/actions/actionClipboard.d.ts +86 -862
  239. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +32 -48
  240. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +107 -159
  241. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  242. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -3
  243. package/dist/types/excalidraw/actions/actionElementLink.d.ts +28 -46
  244. package/dist/types/excalidraw/actions/actionElementLock.d.ts +66 -97
  245. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +33 -49
  246. package/dist/types/excalidraw/actions/actionExport.d.ts +144 -1113
  247. package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -396
  248. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
  249. package/dist/types/excalidraw/actions/actionFrame.d.ts +213 -312
  250. package/dist/types/excalidraw/actions/actionGroup.d.ts +70 -109
  251. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +122 -178
  252. package/dist/types/excalidraw/actions/actionLink.d.ts +30 -46
  253. package/dist/types/excalidraw/actions/actionMenu.d.ts +27 -413
  254. package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -361
  255. package/dist/types/excalidraw/actions/actionProperties.d.ts +127 -2510
  256. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +35 -55
  257. package/dist/types/excalidraw/actions/actionStyles.d.ts +32 -48
  258. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  259. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +32 -48
  260. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +32 -48
  261. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +25 -43
  262. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  263. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +32 -48
  264. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +32 -48
  265. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +33 -49
  266. package/dist/types/excalidraw/actions/actionZindex.d.ts +2 -3
  267. package/dist/types/excalidraw/actions/index.d.ts +1 -1
  268. package/dist/types/excalidraw/actions/register.d.ts +2 -2
  269. package/dist/types/excalidraw/actions/types.d.ts +4 -4
  270. package/dist/types/excalidraw/appState.d.ts +12 -8
  271. package/dist/types/excalidraw/clipboard.d.ts +7 -31
  272. package/dist/types/excalidraw/components/Actions.d.ts +14 -4
  273. package/dist/types/excalidraw/components/App.d.ts +58 -59
  274. package/dist/types/excalidraw/components/ButtonIconCycle.d.ts +1 -1
  275. package/dist/types/excalidraw/components/Card.d.ts +1 -3
  276. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
  277. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +1 -3
  278. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
  279. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
  280. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
  281. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +0 -1
  282. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
  283. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  284. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +1 -3
  285. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
  286. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  287. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
  288. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
  289. package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
  290. package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
  291. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +1 -2
  292. package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -1
  293. package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
  294. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +2 -1
  295. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
  296. package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
  297. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  298. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  299. package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
  300. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  301. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
  302. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
  303. package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
  304. package/dist/types/excalidraw/components/LinkButton.d.ts +4 -0
  305. package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
  306. package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
  307. package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
  308. package/dist/types/excalidraw/components/Modal.d.ts +0 -1
  309. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
  310. package/dist/types/excalidraw/components/Popover.d.ts +2 -1
  311. package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
  312. package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
  313. package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
  314. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +15 -21
  315. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
  316. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
  317. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
  318. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
  319. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
  320. package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
  321. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
  322. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
  323. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
  324. package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
  325. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  326. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
  327. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +27 -0
  328. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
  329. package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +26 -0
  330. package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
  331. package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
  332. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
  333. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
  334. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +4 -25
  335. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +2 -2
  336. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
  337. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
  338. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
  339. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
  340. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +2 -3
  341. package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
  342. package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +8 -0
  343. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
  344. package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
  345. package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
  346. package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
  347. package/dist/types/excalidraw/components/TTDDialog/types.d.ts +91 -0
  348. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
  349. package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +24 -0
  350. package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
  351. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
  352. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  353. package/dist/types/excalidraw/components/Toast.d.ts +3 -3
  354. package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
  355. package/dist/types/excalidraw/components/Trans.d.ts +2 -2
  356. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +6 -3
  357. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +30 -32
  358. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +6 -5
  359. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
  360. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +10 -18
  361. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +3 -3
  362. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +0 -1
  363. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
  364. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
  365. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
  366. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +1 -1
  367. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
  368. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
  369. package/dist/types/excalidraw/components/icons.d.ts +21 -13
  370. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +4 -3
  371. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +2 -2
  372. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +25 -30
  373. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +6 -6
  374. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +15 -16
  375. package/dist/types/excalidraw/data/blob.d.ts +323 -5
  376. package/dist/types/excalidraw/data/encode.d.ts +4 -4
  377. package/dist/types/excalidraw/data/encryption.d.ts +5 -5
  378. package/dist/types/excalidraw/data/filesystem.d.ts +2 -2
  379. package/dist/types/excalidraw/data/index.d.ts +3 -3
  380. package/dist/types/excalidraw/data/json.d.ts +159 -2
  381. package/dist/types/excalidraw/data/library.d.ts +24 -9
  382. package/dist/types/excalidraw/data/restore.d.ts +25 -10
  383. package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
  384. package/dist/types/excalidraw/errors.d.ts +14 -0
  385. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  386. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
  387. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
  388. package/dist/types/excalidraw/i18n.d.ts +2 -2
  389. package/dist/types/excalidraw/index.d.ts +6 -7
  390. package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
  391. package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
  392. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -14
  393. package/dist/types/excalidraw/scene/Renderer.d.ts +5 -2
  394. package/dist/types/excalidraw/scene/export.d.ts +2 -2
  395. package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
  396. package/dist/types/excalidraw/scene/types.d.ts +22 -5
  397. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  398. package/dist/types/excalidraw/snapping.d.ts +5 -5
  399. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
  400. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
  401. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
  402. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
  403. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
  404. package/dist/types/excalidraw/types.d.ts +29 -22
  405. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -2
  406. package/dist/types/math/src/polygon.d.ts +2 -2
  407. package/dist/types/math/src/range.d.ts +1 -3
  408. package/dist/types/math/src/segment.d.ts +3 -3
  409. package/dist/types/utils/src/bbox.d.ts +1 -1
  410. package/dist/types/utils/src/export.d.ts +5 -5
  411. package/dist/types/utils/src/shape.d.ts +6 -6
  412. package/dist/types/utils/src/withinBounds.d.ts +2 -2
  413. package/package.json +7 -8
  414. package/dist/dev/chunk-LJB4UXX2.js.map +0 -7
  415. package/dist/dev/chunk-MFAYKRVR.js +0 -66
  416. package/dist/dev/chunk-MFAYKRVR.js.map +0 -7
  417. package/dist/dev/chunk-QF5FRM6O.js.map +0 -7
  418. package/dist/dev/locales/ar-SA-XORAP2EK.js.map +0 -7
  419. package/dist/dev/locales/az-AZ-NAUU3Z4Y.js.map +0 -7
  420. package/dist/dev/locales/bg-BG-AAABLFCY.js.map +0 -7
  421. package/dist/dev/locales/bn-BD-PM4AC5WG.js.map +0 -7
  422. package/dist/dev/locales/ca-ES-YNNMFRQX.js.map +0 -7
  423. package/dist/dev/locales/cs-CZ-DGZA5IKG.js.map +0 -7
  424. package/dist/dev/locales/da-DK-N76F4QAJ.js.map +0 -7
  425. package/dist/dev/locales/de-DE-DMRXZ2SZ.js.map +0 -7
  426. package/dist/dev/locales/el-GR-HIKPLEXI.js.map +0 -7
  427. package/dist/dev/locales/es-ES-AQYVXC32.js.map +0 -7
  428. package/dist/dev/locales/eu-ES-3TOEU5DE.js.map +0 -7
  429. package/dist/dev/locales/fa-IR-527GAKUP.js.map +0 -7
  430. package/dist/dev/locales/fi-FI-M3WLVDFP.js.map +0 -7
  431. package/dist/dev/locales/fr-FR-YE4VDJFI.js.map +0 -7
  432. package/dist/dev/locales/gl-ES-KMXUYGUN.js.map +0 -7
  433. package/dist/dev/locales/he-IL-4MU5N22B.js +0 -586
  434. package/dist/dev/locales/he-IL-4MU5N22B.js.map +0 -7
  435. package/dist/dev/locales/hi-IN-ZHZNZWFC.js +0 -586
  436. package/dist/dev/locales/hi-IN-ZHZNZWFC.js.map +0 -7
  437. package/dist/dev/locales/hu-HU-VIYZI3X4.js.map +0 -7
  438. package/dist/dev/locales/id-ID-22TWZNLA.js.map +0 -7
  439. package/dist/dev/locales/it-IT-MDEQ2SG3.js.map +0 -7
  440. package/dist/dev/locales/ja-JP-K2DI4W6B.js.map +0 -7
  441. package/dist/dev/locales/kaa-6BPSNM3R.js.map +0 -7
  442. package/dist/dev/locales/kab-KAB-2S7ZURK7.js.map +0 -7
  443. package/dist/dev/locales/kk-KZ-UJPYGRQQ.js.map +0 -7
  444. package/dist/dev/locales/km-KH-M5T5JKUE.js.map +0 -7
  445. package/dist/dev/locales/ko-KR-RQX37SNF.js.map +0 -7
  446. package/dist/dev/locales/ku-TR-5XJDIERL.js.map +0 -7
  447. package/dist/dev/locales/lt-LT-MGUBX6CA.js.map +0 -7
  448. package/dist/dev/locales/lv-LV-MD7N5VHD.js.map +0 -7
  449. package/dist/dev/locales/mr-IN-4XWMNGQC.js.map +0 -7
  450. package/dist/dev/locales/my-MM-O4Z74GN5.js.map +0 -7
  451. package/dist/dev/locales/nb-NO-BMB73KRH.js.map +0 -7
  452. package/dist/dev/locales/nl-NL-F2257BLQ.js.map +0 -7
  453. package/dist/dev/locales/nn-NO-NCORG7TS.js.map +0 -7
  454. package/dist/dev/locales/oc-FR-ATFBDMF6.js.map +0 -7
  455. package/dist/dev/locales/pa-IN-D2I375G4.js.map +0 -7
  456. package/dist/dev/locales/pl-PL-YJHOWAAW.js.map +0 -7
  457. package/dist/dev/locales/pt-BR-APOPYZJ7.js.map +0 -7
  458. package/dist/dev/locales/pt-PT-W56WCN7P.js +0 -586
  459. package/dist/dev/locales/pt-PT-W56WCN7P.js.map +0 -7
  460. package/dist/dev/locales/ro-RO-L575VRQA.js.map +0 -7
  461. package/dist/dev/locales/ru-RU-BLG6HZG5.js.map +0 -7
  462. package/dist/dev/locales/si-LK-KT7GGO6D.js.map +0 -7
  463. package/dist/dev/locales/sk-SK-DY6IPO5U.js.map +0 -7
  464. package/dist/dev/locales/sl-SI-5DZSRA47.js.map +0 -7
  465. package/dist/dev/locales/sv-SE-V32YHALQ.js.map +0 -7
  466. package/dist/dev/locales/ta-IN-5JRAGQAO.js.map +0 -7
  467. package/dist/dev/locales/th-TH-55ACRHDJ.js.map +0 -7
  468. package/dist/dev/locales/tr-TR-7QYBXDBO.js.map +0 -7
  469. package/dist/dev/locales/uk-UA-TJS2TMRH.js.map +0 -7
  470. package/dist/dev/locales/vi-VN-Y5CQ2EKQ.js +0 -586
  471. package/dist/dev/locales/vi-VN-Y5CQ2EKQ.js.map +0 -7
  472. package/dist/dev/locales/zh-CN-4MXUOFTH.js.map +0 -7
  473. package/dist/dev/locales/zh-HK-RBTGIU3U.js.map +0 -7
  474. package/dist/dev/locales/zh-TW-U5VF4CCU.js.map +0 -7
  475. package/dist/prod/chunk-I4UNSFV6.js +0 -12
  476. package/dist/prod/chunk-PYEQN4AH.js +0 -4
  477. package/dist/prod/chunk-Z3N5DIM6.js +0 -1
  478. package/dist/prod/locales/ar-SA-G6X2FPQ2.js +0 -10
  479. package/dist/prod/locales/az-AZ-76LH7QW2.js +0 -1
  480. package/dist/prod/locales/bg-BG-XCXSNQG7.js +0 -5
  481. package/dist/prod/locales/bn-BD-2XOGV67Q.js +0 -5
  482. package/dist/prod/locales/ca-ES-6MX7JW3Y.js +0 -8
  483. package/dist/prod/locales/cs-CZ-2BRQDIVT.js +0 -11
  484. package/dist/prod/locales/da-DK-5WZEPLOC.js +0 -5
  485. package/dist/prod/locales/de-DE-XR44H4JA.js +0 -8
  486. package/dist/prod/locales/el-GR-BZB4AONW.js +0 -10
  487. package/dist/prod/locales/en-TYY6KWIJ.js +0 -1
  488. package/dist/prod/locales/es-ES-U4NZUMDT.js +0 -9
  489. package/dist/prod/locales/eu-ES-A7QVB2H4.js +0 -11
  490. package/dist/prod/locales/fa-IR-HGAKTJCU.js +0 -8
  491. package/dist/prod/locales/fi-FI-Z5N7JZ37.js +0 -6
  492. package/dist/prod/locales/fr-FR-RHASNOE6.js +0 -9
  493. package/dist/prod/locales/gl-ES-HMX3MZ6V.js +0 -10
  494. package/dist/prod/locales/he-IL-6SHJWFNN.js +0 -10
  495. package/dist/prod/locales/hi-IN-IWLTKZ5I.js +0 -4
  496. package/dist/prod/locales/hu-HU-A5ZG7DT2.js +0 -7
  497. package/dist/prod/locales/id-ID-SAP4L64H.js +0 -10
  498. package/dist/prod/locales/it-IT-JPQ66NNP.js +0 -11
  499. package/dist/prod/locales/ja-JP-DBVTYXUO.js +0 -8
  500. package/dist/prod/locales/kaa-6HZHGXH3.js +0 -1
  501. package/dist/prod/locales/kab-KAB-ZGHBKWFO.js +0 -8
  502. package/dist/prod/locales/kk-KZ-P5N5QNE5.js +0 -1
  503. package/dist/prod/locales/km-KH-HSX4SM5Z.js +0 -11
  504. package/dist/prod/locales/ko-KR-MTYHY66A.js +0 -9
  505. package/dist/prod/locales/ku-TR-6OUDTVRD.js +0 -9
  506. package/dist/prod/locales/lt-LT-XHIRWOB4.js +0 -3
  507. package/dist/prod/locales/lv-LV-5QDEKY6T.js +0 -7
  508. package/dist/prod/locales/mr-IN-CRQNXWMA.js +0 -13
  509. package/dist/prod/locales/my-MM-5M5IBNSE.js +0 -1
  510. package/dist/prod/locales/nb-NO-T6EIAALU.js +0 -10
  511. package/dist/prod/locales/nl-NL-IS3SIHDZ.js +0 -8
  512. package/dist/prod/locales/nn-NO-6E72VCQL.js +0 -8
  513. package/dist/prod/locales/oc-FR-POXYY2M6.js +0 -8
  514. package/dist/prod/locales/pa-IN-N4M65BXN.js +0 -4
  515. package/dist/prod/locales/percentages-BXMCSKIN.js +0 -1
  516. package/dist/prod/locales/pl-PL-T2D74RX3.js +0 -9
  517. package/dist/prod/locales/pt-BR-5N22H2LF.js +0 -9
  518. package/dist/prod/locales/pt-PT-UZXXM6DQ.js +0 -9
  519. package/dist/prod/locales/ro-RO-JPDTUUEW.js +0 -11
  520. package/dist/prod/locales/ru-RU-B4JR7IUQ.js +0 -9
  521. package/dist/prod/locales/si-LK-N5RQ5JYF.js +0 -1
  522. package/dist/prod/locales/sk-SK-C5VTKIMK.js +0 -6
  523. package/dist/prod/locales/sl-SI-NN7IZMDC.js +0 -6
  524. package/dist/prod/locales/sv-SE-XGPEYMSR.js +0 -10
  525. package/dist/prod/locales/ta-IN-2NMHFXQM.js +0 -9
  526. package/dist/prod/locales/th-TH-HPSO5L25.js +0 -2
  527. package/dist/prod/locales/tr-TR-DEFEU3FU.js +0 -7
  528. package/dist/prod/locales/uk-UA-QMV73CPH.js +0 -6
  529. package/dist/prod/locales/vi-VN-M7AON7JQ.js +0 -5
  530. package/dist/prod/locales/zh-CN-LNUGB5OW.js +0 -10
  531. package/dist/prod/locales/zh-HK-E62DVLB3.js +0 -1
  532. package/dist/prod/locales/zh-TW-RAJ6MFWO.js +0 -9
  533. /package/dist/dev/{chunk-CP5DND7P.js.map → chunk-Y3BTNZQY.js.map} +0 -0
  534. /package/dist/dev/data/{image-OLV524AK.js.map → image-2BHUUSLM.js.map} +0 -0
  535. /package/dist/dev/locales/{en-SMAPCEOQ.js.map → en-JRVQ7H6V.js.map} +0 -0
  536. /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-CP5DND7P.js";
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 MIME_TYPES7 } from "@excalidraw/common";
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 MIME_TYPES6,
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
- suggestedBindings: [],
117
+ suggestedBinding: null,
115
118
  frameRendering: { enabled: true, clip: true, name: true, outline: true },
116
119
  frameToHighlight: null,
117
120
  editingFrame: null,
@@ -138,7 +141,7 @@ var getDefaultAppState = () => {
138
141
  searchMatches: null,
139
142
  lockedMultiSelections: {},
140
143
  activeLockedId: null,
141
- stylesPanelMode: "full"
144
+ bindMode: "orbit"
142
145
  };
143
146
  };
144
147
  var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
@@ -175,6 +178,7 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
175
178
  editingTextElement: { browser: false, export: false, server: false },
176
179
  editingGroupId: { browser: true, export: false, server: false },
177
180
  activeTool: { browser: true, export: false, server: false },
181
+ preferredSelectionTool: { browser: true, export: false, server: false },
178
182
  penMode: { browser: true, export: false, server: false },
179
183
  penDetected: { browser: true, export: false, server: false },
180
184
  errorMessage: { browser: false, export: false, server: false },
@@ -224,7 +228,7 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
224
228
  shouldCacheIgnoreZoom: { browser: true, export: false, server: false },
225
229
  stats: { browser: true, export: false, server: false },
226
230
  startBoundElement: { browser: false, export: false, server: false },
227
- suggestedBindings: { browser: false, export: false, server: false },
231
+ suggestedBinding: { browser: false, export: false, server: false },
228
232
  frameRendering: { browser: false, export: false, server: false },
229
233
  frameToHighlight: { browser: false, export: false, server: false },
230
234
  editingFrame: { browser: false, export: false, server: false },
@@ -247,7 +251,7 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
247
251
  searchMatches: { browser: false, export: false, server: false },
248
252
  lockedMultiSelections: { browser: true, export: true, server: true },
249
253
  activeLockedId: { browser: false, export: false, server: false },
250
- stylesPanelMode: { browser: true, export: false, server: false }
254
+ bindMode: { browser: true, export: false, server: false }
251
255
  });
252
256
  var _clearAppStateForStorage = (appState, exportType) => {
253
257
  const stateForExport = {};
@@ -318,6 +322,24 @@ var ExcalidrawError = class extends Error {
318
322
  this.name = "ExcalidrawError";
319
323
  }
320
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
+ };
321
343
 
322
344
  // scene/index.ts
323
345
  import {
@@ -418,14 +440,14 @@ import {
418
440
  FRAME_STYLE as FRAME_STYLE3,
419
441
  FONT_FAMILY as FONT_FAMILY2,
420
442
  SVG_NS as SVG_NS2,
421
- THEME as THEME3,
422
- THEME_FILTER as THEME_FILTER2,
423
- MIME_TYPES as MIME_TYPES5,
443
+ THEME as THEME5,
444
+ MIME_TYPES as MIME_TYPES4,
424
445
  EXPORT_DATA_TYPES as EXPORT_DATA_TYPES2,
425
446
  arrayToMap,
426
447
  distance,
427
448
  getFontString as getFontString2,
428
- toBrandedType
449
+ toBrandedType,
450
+ applyDarkModeFilter as applyDarkModeFilter4
429
451
  } from "@excalidraw/common";
430
452
  import { getCommonBounds as getCommonBounds2, getElementAbsoluteCoords as getElementAbsoluteCoords4 } from "@excalidraw/element";
431
453
  import {
@@ -519,10 +541,6 @@ import {
519
541
  MIME_TYPES as MIME_TYPES2,
520
542
  VERSIONS
521
543
  } from "@excalidraw/common";
522
- import {
523
- clearElementsForDatabase,
524
- clearElementsForExport
525
- } from "@excalidraw/element";
526
544
 
527
545
  // data/filesystem.ts
528
546
  import {
@@ -531,8 +549,8 @@ import {
531
549
  supported as nativeFileSystemSupported
532
550
  } from "browser-fs-access";
533
551
  import { EVENT, MIME_TYPES, debounce } from "@excalidraw/common";
534
- var INPUT_CHANGE_INTERVAL_MS = 500;
535
- var fileOpen = (opts) => {
552
+ var INPUT_CHANGE_INTERVAL_MS = 5e3;
553
+ var fileOpen = async (opts) => {
536
554
  const mimeTypes = opts.extensions?.reduce((mimeTypes2, type) => {
537
555
  mimeTypes2.push(MIME_TYPES[type]);
538
556
  return mimeTypes2;
@@ -543,7 +561,7 @@ var fileOpen = (opts) => {
543
561
  }
544
562
  return acc.concat(`.${ext}`);
545
563
  }, []);
546
- return _fileOpen({
564
+ const files = await _fileOpen({
547
565
  description: opts.description,
548
566
  extensions,
549
567
  mimeTypes,
@@ -581,6 +599,12 @@ var fileOpen = (opts) => {
581
599
  };
582
600
  }
583
601
  });
602
+ if (Array.isArray(files)) {
603
+ return await Promise.all(
604
+ files.map((file) => normalizeFile(file))
605
+ );
606
+ }
607
+ return await normalizeFile(files);
584
608
  };
585
609
  var fileSave = (blob, opts) => {
586
610
  return _fileSave(
@@ -610,7 +634,7 @@ var serializeAsJSON = (elements, appState, files, type) => {
610
634
  type: EXPORT_DATA_TYPES.excalidraw,
611
635
  version: VERSIONS.excalidraw,
612
636
  source: getExportSource(),
613
- elements: type === "local" ? clearElementsForExport(elements) : clearElementsForDatabase(elements),
637
+ elements,
614
638
  appState: type === "local" ? cleanAppStateForExport(appState) : clearAppStateForDatabase(appState),
615
639
  files: type === "local" ? filterOutDeletedFiles(elements, files) : (
616
640
  // will be stripped from JSON
@@ -639,12 +663,7 @@ var loadFromJSON = async (localAppState, localElements) => {
639
663
  // gets resolved. Else, iOS users cannot open `.excalidraw` files.
640
664
  // extensions: ["json", "excalidraw", "png", "svg"],
641
665
  });
642
- return loadFromBlob(
643
- await normalizeFile(file),
644
- localAppState,
645
- localElements,
646
- file.handle
647
- );
666
+ return loadFromBlob(file, localAppState, localElements, file.handle);
648
667
  };
649
668
  var isValidExcalidrawData = (data) => {
650
669
  return data?.type === EXPORT_DATA_TYPES.excalidraw && (!data.elements || Array.isArray(data.elements) && (!data.appState || typeof data.appState === "object"));
@@ -681,7 +700,8 @@ import {
681
700
  FONT_FAMILY_FALLBACKS,
682
701
  CJK_HAND_DRAWN_FALLBACK_FONT,
683
702
  WINDOWS_EMOJI_FALLBACK_FONT,
684
- getFontFamilyFallbacks
703
+ getFontFamilyFallbacks,
704
+ FONT_SIZES
685
705
  } from "@excalidraw/common";
686
706
  import { getContainerElement } from "@excalidraw/element";
687
707
  import { charWidth } from "@excalidraw/element";
@@ -2910,7 +2930,7 @@ var _Fonts = class _Fonts {
2910
2930
  for (const [index, fontFamily] of fontFamilies.entries()) {
2911
2931
  const font = getFontString({
2912
2932
  fontFamily,
2913
- fontSize: 16
2933
+ fontSize: FONT_SIZES.sm
2914
2934
  });
2915
2935
  const text = _Fonts.getCharacters(charsPerFamily, fontFamily);
2916
2936
  if (!window.document.fonts.check(font, text)) {
@@ -3067,7 +3087,12 @@ __publicField(_Fonts, "loadElementsFonts", async (elements) => {
3067
3087
  var Fonts = _Fonts;
3068
3088
 
3069
3089
  // renderer/staticScene.ts
3070
- import { FRAME_STYLE, throttleRAF } from "@excalidraw/common";
3090
+ import {
3091
+ applyDarkModeFilter as applyDarkModeFilter2,
3092
+ FRAME_STYLE,
3093
+ THEME as THEME3,
3094
+ throttleRAF
3095
+ } from "@excalidraw/common";
3071
3096
  import { isElementLink } from "@excalidraw/element";
3072
3097
  import { createPlaceholderEmbeddableLabel } from "@excalidraw/element";
3073
3098
  import { getBoundTextElement } from "@excalidraw/element";
@@ -3149,19 +3174,7 @@ var isPointHittingLink = (element, elementsMap, appState, [x, y], isMobile) => {
3149
3174
  };
3150
3175
 
3151
3176
  // renderer/helpers.ts
3152
- import { THEME as THEME2, THEME_FILTER } from "@excalidraw/common";
3153
- import { FIXED_BINDING_DISTANCE } from "@excalidraw/element";
3154
- import { getDiamondPoints } from "@excalidraw/element";
3155
- import { elementCenterPoint, getCornerRadius } from "@excalidraw/element";
3156
- import {
3157
- curve,
3158
- curveCatmullRomCubicApproxPoints,
3159
- curveCatmullRomQuadraticApproxPoints,
3160
- curveOffsetPoints,
3161
- offsetPointsForQuadraticBezier,
3162
- pointFrom as pointFrom2,
3163
- pointRotateRads as pointRotateRads2
3164
- } from "@excalidraw/math";
3177
+ import { THEME as THEME2, applyDarkModeFilter } from "@excalidraw/common";
3165
3178
  var fillCircle = (context, cx, cy, radius, stroke, fill = true) => {
3166
3179
  context.beginPath();
3167
3180
  context.arc(cx, cy, radius, 0, Math.PI * 2);
@@ -3187,9 +3200,6 @@ var bootstrapCanvas = ({
3187
3200
  const context = canvas.getContext("2d");
3188
3201
  context.setTransform(1, 0, 0, 1, 0, 0);
3189
3202
  context.scale(scale, scale);
3190
- if (isExporting && theme === THEME2.DARK) {
3191
- context.filter = THEME_FILTER;
3192
- }
3193
3203
  if (typeof viewBackgroundColor === "string") {
3194
3204
  const hasTransparence = viewBackgroundColor === "transparent" || viewBackgroundColor.length === 5 || // #RGBA
3195
3205
  viewBackgroundColor.length === 9 || // #RRGGBBA
@@ -3198,7 +3208,7 @@ var bootstrapCanvas = ({
3198
3208
  context.clearRect(0, 0, normalizedWidth, normalizedHeight);
3199
3209
  }
3200
3210
  context.save();
3201
- context.fillStyle = viewBackgroundColor;
3211
+ context.fillStyle = theme === THEME2.DARK ? applyDarkModeFilter(viewBackgroundColor) : viewBackgroundColor;
3202
3212
  context.fillRect(0, 0, normalizedWidth, normalizedHeight);
3203
3213
  context.restore();
3204
3214
  } else {
@@ -3206,127 +3216,7 @@ var bootstrapCanvas = ({
3206
3216
  }
3207
3217
  return context;
3208
3218
  };
3209
- function drawCatmullRomQuadraticApprox(ctx, points, tension = 0.5) {
3210
- const pointSets = curveCatmullRomQuadraticApproxPoints(points, tension);
3211
- if (pointSets) {
3212
- for (let i = 0; i < pointSets.length - 1; i++) {
3213
- const [[cpX, cpY], [p2X, p2Y]] = pointSets[i];
3214
- ctx.quadraticCurveTo(cpX, cpY, p2X, p2Y);
3215
- }
3216
- }
3217
- }
3218
- function drawCatmullRomCubicApprox(ctx, points, tension = 0.5) {
3219
- const pointSets = curveCatmullRomCubicApproxPoints(points, tension);
3220
- if (pointSets) {
3221
- for (let i = 0; i < pointSets.length; i++) {
3222
- const [[cp1x, cp1y], [cp2x, cp2y], [x, y]] = pointSets[i];
3223
- ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
3224
- }
3225
- }
3226
- }
3227
- var drawHighlightForRectWithRotation = (context, element, elementsMap, padding) => {
3228
- const [x, y] = pointRotateRads2(
3229
- pointFrom2(element.x, element.y),
3230
- elementCenterPoint(element, elementsMap),
3231
- element.angle
3232
- );
3233
- context.save();
3234
- context.translate(x, y);
3235
- context.rotate(element.angle);
3236
- let radius = getCornerRadius(
3237
- Math.min(element.width, element.height),
3238
- element
3239
- );
3240
- if (radius === 0) {
3241
- radius = 0.01;
3242
- }
3243
- context.beginPath();
3244
- {
3245
- const topLeftApprox = offsetPointsForQuadraticBezier(
3246
- pointFrom2(0, 0 + radius),
3247
- pointFrom2(0, 0),
3248
- pointFrom2(0 + radius, 0),
3249
- padding
3250
- );
3251
- const topRightApprox = offsetPointsForQuadraticBezier(
3252
- pointFrom2(element.width - radius, 0),
3253
- pointFrom2(element.width, 0),
3254
- pointFrom2(element.width, radius),
3255
- padding
3256
- );
3257
- const bottomRightApprox = offsetPointsForQuadraticBezier(
3258
- pointFrom2(element.width, element.height - radius),
3259
- pointFrom2(element.width, element.height),
3260
- pointFrom2(element.width - radius, element.height),
3261
- padding
3262
- );
3263
- const bottomLeftApprox = offsetPointsForQuadraticBezier(
3264
- pointFrom2(radius, element.height),
3265
- pointFrom2(0, element.height),
3266
- pointFrom2(0, element.height - radius),
3267
- padding
3268
- );
3269
- context.moveTo(
3270
- topLeftApprox[topLeftApprox.length - 1][0],
3271
- topLeftApprox[topLeftApprox.length - 1][1]
3272
- );
3273
- context.lineTo(topRightApprox[0][0], topRightApprox[0][1]);
3274
- drawCatmullRomQuadraticApprox(context, topRightApprox);
3275
- context.lineTo(bottomRightApprox[0][0], bottomRightApprox[0][1]);
3276
- drawCatmullRomQuadraticApprox(context, bottomRightApprox);
3277
- context.lineTo(bottomLeftApprox[0][0], bottomLeftApprox[0][1]);
3278
- drawCatmullRomQuadraticApprox(context, bottomLeftApprox);
3279
- context.lineTo(topLeftApprox[0][0], topLeftApprox[0][1]);
3280
- drawCatmullRomQuadraticApprox(context, topLeftApprox);
3281
- }
3282
- {
3283
- const topLeftApprox = offsetPointsForQuadraticBezier(
3284
- pointFrom2(0 + radius, 0),
3285
- pointFrom2(0, 0),
3286
- pointFrom2(0, 0 + radius),
3287
- -FIXED_BINDING_DISTANCE
3288
- );
3289
- const topRightApprox = offsetPointsForQuadraticBezier(
3290
- pointFrom2(element.width, radius),
3291
- pointFrom2(element.width, 0),
3292
- pointFrom2(element.width - radius, 0),
3293
- -FIXED_BINDING_DISTANCE
3294
- );
3295
- const bottomRightApprox = offsetPointsForQuadraticBezier(
3296
- pointFrom2(element.width - radius, element.height),
3297
- pointFrom2(element.width, element.height),
3298
- pointFrom2(element.width, element.height - radius),
3299
- -FIXED_BINDING_DISTANCE
3300
- );
3301
- const bottomLeftApprox = offsetPointsForQuadraticBezier(
3302
- pointFrom2(0, element.height - radius),
3303
- pointFrom2(0, element.height),
3304
- pointFrom2(radius, element.height),
3305
- -FIXED_BINDING_DISTANCE
3306
- );
3307
- context.moveTo(
3308
- topLeftApprox[topLeftApprox.length - 1][0],
3309
- topLeftApprox[topLeftApprox.length - 1][1]
3310
- );
3311
- context.lineTo(bottomLeftApprox[0][0], bottomLeftApprox[0][1]);
3312
- drawCatmullRomQuadraticApprox(context, bottomLeftApprox);
3313
- context.lineTo(bottomRightApprox[0][0], bottomRightApprox[0][1]);
3314
- drawCatmullRomQuadraticApprox(context, bottomRightApprox);
3315
- context.lineTo(topRightApprox[0][0], topRightApprox[0][1]);
3316
- drawCatmullRomQuadraticApprox(context, topRightApprox);
3317
- context.lineTo(topLeftApprox[0][0], topLeftApprox[0][1]);
3318
- drawCatmullRomQuadraticApprox(context, topLeftApprox);
3319
- }
3320
- context.closePath();
3321
- context.fill();
3322
- context.restore();
3323
- };
3324
- var strokeEllipseWithRotation = (context, width, height, cx, cy, angle) => {
3325
- context.beginPath();
3326
- context.ellipse(cx, cy, width / 2, height / 2, angle, 0, Math.PI * 2);
3327
- context.stroke();
3328
- };
3329
- 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) => {
3330
3220
  context.save();
3331
3221
  context.translate(cx, cy);
3332
3222
  context.rotate(angle);
@@ -3343,133 +3233,19 @@ var strokeRectWithRotation = (context, x, y, width, height, cx, cy, angle, fill
3343
3233
  }
3344
3234
  context.restore();
3345
3235
  };
3346
- var drawHighlightForDiamondWithRotation = (context, padding, element, elementsMap) => {
3347
- const [x, y] = pointRotateRads2(
3348
- pointFrom2(element.x, element.y),
3349
- elementCenterPoint(element, elementsMap),
3350
- element.angle
3351
- );
3352
- context.save();
3353
- context.translate(x, y);
3354
- context.rotate(element.angle);
3355
- {
3356
- context.beginPath();
3357
- const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = getDiamondPoints(element);
3358
- const verticalRadius = element.roundness ? getCornerRadius(Math.abs(topX - leftX), element) : (topX - leftX) * 0.01;
3359
- const horizontalRadius = element.roundness ? getCornerRadius(Math.abs(rightY - topY), element) : (rightY - topY) * 0.01;
3360
- const topApprox = curveOffsetPoints(
3361
- curve(
3362
- pointFrom2(topX - verticalRadius, topY + horizontalRadius),
3363
- pointFrom2(topX, topY),
3364
- pointFrom2(topX, topY),
3365
- pointFrom2(topX + verticalRadius, topY + horizontalRadius)
3366
- ),
3367
- padding
3368
- );
3369
- const rightApprox = curveOffsetPoints(
3370
- curve(
3371
- pointFrom2(rightX - verticalRadius, rightY - horizontalRadius),
3372
- pointFrom2(rightX, rightY),
3373
- pointFrom2(rightX, rightY),
3374
- pointFrom2(rightX - verticalRadius, rightY + horizontalRadius)
3375
- ),
3376
- padding
3377
- );
3378
- const bottomApprox = curveOffsetPoints(
3379
- curve(
3380
- pointFrom2(bottomX + verticalRadius, bottomY - horizontalRadius),
3381
- pointFrom2(bottomX, bottomY),
3382
- pointFrom2(bottomX, bottomY),
3383
- pointFrom2(bottomX - verticalRadius, bottomY - horizontalRadius)
3384
- ),
3385
- padding
3386
- );
3387
- const leftApprox = curveOffsetPoints(
3388
- curve(
3389
- pointFrom2(leftX + verticalRadius, leftY + horizontalRadius),
3390
- pointFrom2(leftX, leftY),
3391
- pointFrom2(leftX, leftY),
3392
- pointFrom2(leftX + verticalRadius, leftY - horizontalRadius)
3393
- ),
3394
- padding
3395
- );
3396
- context.moveTo(
3397
- topApprox[topApprox.length - 1][0],
3398
- topApprox[topApprox.length - 1][1]
3399
- );
3400
- context.lineTo(rightApprox[1][0], rightApprox[1][1]);
3401
- drawCatmullRomCubicApprox(context, rightApprox);
3402
- context.lineTo(bottomApprox[1][0], bottomApprox[1][1]);
3403
- drawCatmullRomCubicApprox(context, bottomApprox);
3404
- context.lineTo(leftApprox[1][0], leftApprox[1][1]);
3405
- drawCatmullRomCubicApprox(context, leftApprox);
3406
- context.lineTo(topApprox[1][0], topApprox[1][1]);
3407
- drawCatmullRomCubicApprox(context, topApprox);
3408
- }
3409
- {
3410
- const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = getDiamondPoints(element);
3411
- const verticalRadius = element.roundness ? getCornerRadius(Math.abs(topX - leftX), element) : (topX - leftX) * 0.01;
3412
- const horizontalRadius = element.roundness ? getCornerRadius(Math.abs(rightY - topY), element) : (rightY - topY) * 0.01;
3413
- const topApprox = curveOffsetPoints(
3414
- curve(
3415
- pointFrom2(topX + verticalRadius, topY + horizontalRadius),
3416
- pointFrom2(topX, topY),
3417
- pointFrom2(topX, topY),
3418
- pointFrom2(topX - verticalRadius, topY + horizontalRadius)
3419
- ),
3420
- -FIXED_BINDING_DISTANCE
3421
- );
3422
- const rightApprox = curveOffsetPoints(
3423
- curve(
3424
- pointFrom2(rightX - verticalRadius, rightY + horizontalRadius),
3425
- pointFrom2(rightX, rightY),
3426
- pointFrom2(rightX, rightY),
3427
- pointFrom2(rightX - verticalRadius, rightY - horizontalRadius)
3428
- ),
3429
- -FIXED_BINDING_DISTANCE
3430
- );
3431
- const bottomApprox = curveOffsetPoints(
3432
- curve(
3433
- pointFrom2(bottomX - verticalRadius, bottomY - horizontalRadius),
3434
- pointFrom2(bottomX, bottomY),
3435
- pointFrom2(bottomX, bottomY),
3436
- pointFrom2(bottomX + verticalRadius, bottomY - horizontalRadius)
3437
- ),
3438
- -FIXED_BINDING_DISTANCE
3439
- );
3440
- const leftApprox = curveOffsetPoints(
3441
- curve(
3442
- pointFrom2(leftX + verticalRadius, leftY - horizontalRadius),
3443
- pointFrom2(leftX, leftY),
3444
- pointFrom2(leftX, leftY),
3445
- pointFrom2(leftX + verticalRadius, leftY + horizontalRadius)
3446
- ),
3447
- -FIXED_BINDING_DISTANCE
3448
- );
3449
- context.moveTo(
3450
- topApprox[topApprox.length - 1][0],
3451
- topApprox[topApprox.length - 1][1]
3452
- );
3453
- context.lineTo(leftApprox[1][0], leftApprox[1][1]);
3454
- drawCatmullRomCubicApprox(context, leftApprox);
3455
- context.lineTo(bottomApprox[1][0], bottomApprox[1][1]);
3456
- drawCatmullRomCubicApprox(context, bottomApprox);
3457
- context.lineTo(rightApprox[1][0], rightApprox[1][1]);
3458
- drawCatmullRomCubicApprox(context, rightApprox);
3459
- context.lineTo(topApprox[1][0], topApprox[1][1]);
3460
- drawCatmullRomCubicApprox(context, topApprox);
3461
- }
3462
- context.closePath();
3463
- context.fill();
3464
- context.restore();
3465
- };
3466
3236
 
3467
3237
  // renderer/staticScene.ts
3468
3238
  var GridLineColor = {
3469
- Bold: "#dddddd",
3470
- Regular: "#e5e5e5"
3239
+ [THEME3.LIGHT]: {
3240
+ bold: "#dddddd",
3241
+ regular: "#e5e5e5"
3242
+ },
3243
+ [THEME3.DARK]: {
3244
+ bold: applyDarkModeFilter2("#dddddd"),
3245
+ regular: applyDarkModeFilter2("#e5e5e5")
3246
+ }
3471
3247
  };
3472
- var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, height) => {
3248
+ var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, theme, width, height) => {
3473
3249
  const offsetX = scrollX % gridSize - gridSize;
3474
3250
  const offsetY = scrollY % gridSize - gridSize;
3475
3251
  const actualGridSize = gridSize * zoom.value;
@@ -3488,7 +3264,7 @@ var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, he
3488
3264
  const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
3489
3265
  context.beginPath();
3490
3266
  context.setLineDash(isBold ? [] : lineDash);
3491
- context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;
3267
+ context.strokeStyle = isBold ? GridLineColor[theme].bold : GridLineColor[theme].regular;
3492
3268
  context.moveTo(x, offsetY - gridSize);
3493
3269
  context.lineTo(x, Math.ceil(offsetY + height + gridSize * 2));
3494
3270
  context.stroke();
@@ -3503,7 +3279,7 @@ var strokeGrid = (context, gridSize, gridStep, scrollX, scrollY, zoom, width, he
3503
3279
  const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
3504
3280
  context.beginPath();
3505
3281
  context.setLineDash(isBold ? [] : lineDash);
3506
- context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;
3282
+ context.strokeStyle = isBold ? GridLineColor[theme].bold : GridLineColor[theme].regular;
3507
3283
  context.moveTo(offsetX - gridSize, y);
3508
3284
  context.lineTo(Math.ceil(offsetX + width + gridSize * 2), y);
3509
3285
  context.stroke();
@@ -3616,6 +3392,7 @@ var _renderStaticScene = ({
3616
3392
  appState.scrollX,
3617
3393
  appState.scrollY,
3618
3394
  appState.zoom,
3395
+ renderConfig.theme,
3619
3396
  normalizedWidth / appState.zoom.value,
3620
3397
  normalizedHeight / appState.zoom.value
3621
3398
  );
@@ -3782,12 +3559,13 @@ var renderStaticScene = (renderConfig, throttle) => {
3782
3559
  import {
3783
3560
  FRAME_STYLE as FRAME_STYLE2,
3784
3561
  MAX_DECIMALS_FOR_SVG_EXPORT,
3785
- MIME_TYPES as MIME_TYPES4,
3786
3562
  SVG_NS,
3563
+ THEME as THEME4,
3787
3564
  getFontFamilyString,
3788
3565
  isRTL,
3789
3566
  isTestEnv as isTestEnv2,
3790
- getVerticalOffset
3567
+ getVerticalOffset,
3568
+ applyDarkModeFilter as applyDarkModeFilter3
3791
3569
  } from "@excalidraw/common";
3792
3570
  import { normalizeLink, toValidURL } from "@excalidraw/common";
3793
3571
  import { hashString } from "@excalidraw/element";
@@ -3806,9 +3584,8 @@ import {
3806
3584
  isTextElement as isTextElement3
3807
3585
  } from "@excalidraw/element";
3808
3586
  import { getContainingFrame } from "@excalidraw/element";
3809
- import { getCornerRadius as getCornerRadius2, isPathALoop } from "@excalidraw/element";
3587
+ import { getCornerRadius, isPathALoop } from "@excalidraw/element";
3810
3588
  import { ShapeCache as ShapeCache2 } from "@excalidraw/element";
3811
- import { getFreeDrawSvgPath, IMAGE_INVERT_FILTER } from "@excalidraw/element";
3812
3589
  import { getElementAbsoluteCoords as getElementAbsoluteCoords3 } from "@excalidraw/element";
3813
3590
  var roughSVGDrawWithPrecision = (rsvg, drawable, precision) => {
3814
3591
  if (typeof precision === "undefined") {
@@ -3876,7 +3653,7 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
3876
3653
  case "rectangle":
3877
3654
  case "diamond":
3878
3655
  case "ellipse": {
3879
- const shape = ShapeCache2.generateElementShape(element, null);
3656
+ const shape = ShapeCache2.generateElementShape(element, renderConfig);
3880
3657
  const node = roughSVGDrawWithPrecision(
3881
3658
  rsvg,
3882
3659
  shape,
@@ -3944,7 +3721,7 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
3944
3721
  while (embeddableNode.firstChild) {
3945
3722
  embeddableNode.removeChild(embeddableNode.firstChild);
3946
3723
  }
3947
- const radius = getCornerRadius2(
3724
+ const radius = getCornerRadius(
3948
3725
  Math.min(element.width, element.height),
3949
3726
  element
3950
3727
  );
@@ -4069,36 +3846,49 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
4069
3846
  break;
4070
3847
  }
4071
3848
  case "freedraw": {
4072
- const backgroundFillShape = ShapeCache2.generateElementShape(
4073
- element,
4074
- renderConfig
4075
- );
4076
- const node = backgroundFillShape ? roughSVGDrawWithPrecision(
4077
- rsvg,
4078
- backgroundFillShape,
4079
- MAX_DECIMALS_FOR_SVG_EXPORT
4080
- ) : svgRoot.ownerDocument.createElementNS(SVG_NS, "g");
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
+ }
4081
3875
  if (opacity !== 1) {
4082
- node.setAttribute("stroke-opacity", `${opacity}`);
4083
- node.setAttribute("fill-opacity", `${opacity}`);
3876
+ wrapper.setAttribute("stroke-opacity", `${opacity}`);
3877
+ wrapper.setAttribute("fill-opacity", `${opacity}`);
4084
3878
  }
4085
- node.setAttribute(
3879
+ wrapper.setAttribute(
4086
3880
  "transform",
4087
3881
  `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`
4088
3882
  );
4089
- node.setAttribute("stroke", "none");
4090
- const path = svgRoot.ownerDocument.createElementNS(SVG_NS, "path");
4091
- path.setAttribute("fill", element.strokeColor);
4092
- path.setAttribute("d", getFreeDrawSvgPath(element));
4093
- node.appendChild(path);
3883
+ wrapper.setAttribute("stroke", "none");
4094
3884
  const g = maybeWrapNodesInFrameClipPath(
4095
3885
  element,
4096
3886
  root,
4097
- [node],
3887
+ [wrapper],
4098
3888
  renderConfig.frameRendering,
4099
3889
  elementsMap
4100
3890
  );
4101
- addToRoot(g || node, element);
3891
+ addToRoot(g || wrapper, element);
4102
3892
  break;
4103
3893
  }
4104
3894
  case "image": {
@@ -4138,9 +3928,6 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
4138
3928
  }
4139
3929
  const use = svgRoot.ownerDocument.createElementNS(SVG_NS, "use");
4140
3930
  use.setAttribute("href", `#${symbolId}`);
4141
- if (renderConfig.exportWithDarkMode && fileData.mimeType !== MIME_TYPES4.svg) {
4142
- use.setAttribute("filter", IMAGE_INVERT_FILTER);
4143
- }
4144
3931
  let normalizedCropX = 0;
4145
3932
  let normalizedCropY = 0;
4146
3933
  if (element.crop) {
@@ -4187,14 +3974,19 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
4187
3974
  "clipPath"
4188
3975
  );
4189
3976
  clipPath.id = `image-clipPath-${element.id}`;
3977
+ clipPath.setAttribute("clipPathUnits", "userSpaceOnUse");
4190
3978
  const clipRect = svgRoot.ownerDocument.createElementNS(
4191
3979
  SVG_NS,
4192
3980
  "rect"
4193
3981
  );
4194
- const radius = getCornerRadius2(
3982
+ const radius = getCornerRadius(
4195
3983
  Math.min(element.width, element.height),
4196
3984
  element
4197
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}`);
4198
3990
  clipRect.setAttribute("width", `${element.width}`);
4199
3991
  clipRect.setAttribute("height", `${element.height}`);
4200
3992
  clipRect.setAttribute("rx", `${radius}`);
@@ -4227,7 +4019,10 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
4227
4019
  rect.setAttribute("rx", FRAME_STYLE2.radius.toString());
4228
4020
  rect.setAttribute("ry", FRAME_STYLE2.radius.toString());
4229
4021
  rect.setAttribute("fill", "none");
4230
- rect.setAttribute("stroke", FRAME_STYLE2.strokeColor);
4022
+ rect.setAttribute(
4023
+ "stroke",
4024
+ renderConfig.theme === THEME4.DARK ? applyDarkModeFilter3(FRAME_STYLE2.strokeColor) : FRAME_STYLE2.strokeColor
4025
+ );
4231
4026
  rect.setAttribute("stroke-width", FRAME_STYLE2.strokeWidth.toString());
4232
4027
  addToRoot(rect, element);
4233
4028
  }
@@ -4264,7 +4059,10 @@ var renderElementToSvg = (element, elementsMap, rsvg, svgRoot, files, offsetX, o
4264
4059
  text.setAttribute("y", `${i * lineHeightPx + verticalOffset}`);
4265
4060
  text.setAttribute("font-family", getFontFamilyString(element));
4266
4061
  text.setAttribute("font-size", `${element.fontSize}px`);
4267
- text.setAttribute("fill", element.strokeColor);
4062
+ text.setAttribute(
4063
+ "fill",
4064
+ renderConfig.theme === THEME4.DARK ? applyDarkModeFilter3(element.strokeColor) : element.strokeColor
4065
+ );
4268
4066
  text.setAttribute("text-anchor", textAnchor);
4269
4067
  text.setAttribute("style", "white-space: pre;");
4270
4068
  text.setAttribute("direction", direction);
@@ -4477,7 +4275,7 @@ var exportToCanvas = async (elements, appState, files, {
4477
4275
  scrollY: -minY + exportPadding,
4478
4276
  zoom: defaultAppState.zoom,
4479
4277
  shouldCacheIgnoreZoom: false,
4480
- theme: appState.exportWithDarkMode ? THEME3.DARK : THEME3.LIGHT
4278
+ theme: appState.exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
4481
4279
  },
4482
4280
  renderConfig: {
4483
4281
  canvasBackgroundColor: viewBackgroundColor,
@@ -4487,7 +4285,8 @@ var exportToCanvas = async (elements, appState, files, {
4487
4285
  // empty disables embeddable rendering
4488
4286
  embedsValidationStatus: /* @__PURE__ */ new Map(),
4489
4287
  elementsPendingErasure: /* @__PURE__ */ new Set(),
4490
- pendingFlowchartNodes: null
4288
+ pendingFlowchartNodes: null,
4289
+ theme: appState.exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
4491
4290
  }
4492
4291
  });
4493
4292
  return canvas;
@@ -4529,9 +4328,6 @@ var exportToSvg = async (elements, appState, files, opts) => {
4529
4328
  svgRoot.setAttribute("viewBox", `0 0 ${width} ${height}`);
4530
4329
  svgRoot.setAttribute("width", `${width * exportScale}`);
4531
4330
  svgRoot.setAttribute("height", `${height * exportScale}`);
4532
- if (exportWithDarkMode) {
4533
- svgRoot.setAttribute("filter", THEME_FILTER2);
4534
- }
4535
4331
  const defsElement = svgRoot.ownerDocument.createElementNS(SVG_NS2, "defs");
4536
4332
  const metadataElement = svgRoot.ownerDocument.createElementNS(
4537
4333
  SVG_NS2,
@@ -4595,7 +4391,10 @@ var exportToSvg = async (elements, appState, files, opts) => {
4595
4391
  rect.setAttribute("y", "0");
4596
4392
  rect.setAttribute("width", `${width}`);
4597
4393
  rect.setAttribute("height", `${height}`);
4598
- rect.setAttribute("fill", viewBackgroundColor);
4394
+ rect.setAttribute(
4395
+ "fill",
4396
+ exportWithDarkMode ? applyDarkModeFilter4(viewBackgroundColor) : viewBackgroundColor
4397
+ );
4599
4398
  svgRoot.appendChild(rect);
4600
4399
  }
4601
4400
  const rsvg = rough.svg(svgRoot);
@@ -4617,7 +4416,8 @@ var exportToSvg = async (elements, appState, files, opts) => {
4617
4416
  embedsValidationStatus: renderEmbeddables ? new Map(
4618
4417
  elementsForRender.filter((element) => isFrameLikeElement(element)).map((element) => [element.id, true])
4619
4418
  ) : /* @__PURE__ */ new Map(),
4620
- reuseImages: opts?.reuseImages ?? true
4419
+ reuseImages: opts?.reuseImages ?? true,
4420
+ theme: exportWithDarkMode ? THEME5.DARK : THEME5.LIGHT
4621
4421
  }
4622
4422
  );
4623
4423
  return svgRoot;
@@ -4631,7 +4431,7 @@ var encodeSvgBase64Payload = ({
4631
4431
  true
4632
4432
  );
4633
4433
  metadataElement.appendChild(
4634
- createHTMLComment(`payload-type:${MIME_TYPES5.excalidraw}`)
4434
+ createHTMLComment(`payload-type:${MIME_TYPES4.excalidraw}`)
4635
4435
  );
4636
4436
  metadataElement.appendChild(createHTMLComment("payload-version:2"));
4637
4437
  metadataElement.appendChild(createHTMLComment("payload-start"));
@@ -4639,7 +4439,7 @@ var encodeSvgBase64Payload = ({
4639
4439
  metadataElement.appendChild(createHTMLComment("payload-end"));
4640
4440
  };
4641
4441
  var decodeSvgBase64Payload = ({ svg }) => {
4642
- if (svg.includes(`payload-type:${MIME_TYPES5.excalidraw}`)) {
4442
+ if (svg.includes(`payload-type:${MIME_TYPES4.excalidraw}`)) {
4643
4443
  const match = svg.match(
4644
4444
  /<!-- payload-start -->\s*(.+?)\s*<!-- payload-end -->/
4645
4445
  );
@@ -4680,7 +4480,7 @@ var getExportSize = (elements, exportPadding, scale) => {
4680
4480
  };
4681
4481
 
4682
4482
  // data/restore.ts
4683
- import { isFiniteNumber, pointFrom as pointFrom3 } from "@excalidraw/math";
4483
+ import { isFiniteNumber, pointFrom as pointFrom2 } from "@excalidraw/math";
4684
4484
  import {
4685
4485
  DEFAULT_FONT_FAMILY as DEFAULT_FONT_FAMILY2,
4686
4486
  DEFAULT_TEXT_ALIGN as DEFAULT_TEXT_ALIGN2,
@@ -4699,7 +4499,13 @@ import {
4699
4499
  normalizeLink as normalizeLink2,
4700
4500
  getLineHeight
4701
4501
  } from "@excalidraw/common";
4702
- import { getNonDeletedElements, isValidPolygon } from "@excalidraw/element";
4502
+ import {
4503
+ calculateFixedPointForNonElbowArrowBinding,
4504
+ getNonDeletedElements,
4505
+ isPointInElement,
4506
+ isValidPolygon,
4507
+ projectFixedPointOntoDiagonal
4508
+ } from "@excalidraw/element";
4703
4509
  import { normalizeFixedPoint } from "@excalidraw/element";
4704
4510
  import {
4705
4511
  updateElbowArrowPoints,
@@ -4713,7 +4519,6 @@ import {
4713
4519
  isArrowBoundToElement,
4714
4520
  isArrowElement as isArrowElement2,
4715
4521
  isElbowArrow,
4716
- isFixedPointBinding,
4717
4522
  isLinearElement,
4718
4523
  isLineElement,
4719
4524
  isTextElement as isTextElement4,
@@ -4748,23 +4553,66 @@ var getFontFamilyByName = (fontFamilyName) => {
4748
4553
  }
4749
4554
  return DEFAULT_FONT_FAMILY2;
4750
4555
  };
4751
- var repairBinding = (element, binding) => {
4752
- if (!binding) {
4753
- return null;
4754
- }
4755
- const focus = binding.focus || 0;
4756
- if (isElbowArrow(element)) {
4757
- const fixedPointBinding = isFixedPointBinding(binding) ? {
4758
- ...binding,
4759
- focus,
4760
- fixedPoint: normalizeFixedPoint(binding.fixedPoint ?? [0, 0])
4761
- } : null;
4762
- return fixedPointBinding;
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);
4763
4614
  }
4764
- return {
4765
- ...binding,
4766
- focus
4767
- };
4615
+ return null;
4768
4616
  };
4769
4617
  var restoreElementWithProperties = (element, extra) => {
4770
4618
  const base = {
@@ -4817,7 +4665,7 @@ var restoreElementWithProperties = (element, extra) => {
4817
4665
  delete ret.boundElementIds;
4818
4666
  return ret;
4819
4667
  };
4820
- var restoreElement = (element, opts) => {
4668
+ var restoreElement = (element, targetElementsMap, existingElementsMap, opts) => {
4821
4669
  element = { ...element };
4822
4670
  switch (element.type) {
4823
4671
  case "text":
@@ -4857,7 +4705,6 @@ var restoreElement = (element, opts) => {
4857
4705
  case "freedraw": {
4858
4706
  return restoreElementWithProperties(element, {
4859
4707
  points: element.points,
4860
- lastCommittedPoint: null,
4861
4708
  simulatePressure: element.simulatePressure,
4862
4709
  pressures: element.pressures
4863
4710
  });
@@ -4876,16 +4723,15 @@ var restoreElement = (element, opts) => {
4876
4723
  let y = element.y;
4877
4724
  let points = (
4878
4725
  // migrate old arrow model to new one
4879
- !Array.isArray(element.points) || element.points.length < 2 ? [pointFrom3(0, 0), pointFrom3(element.width, element.height)] : element.points
4726
+ !Array.isArray(element.points) || element.points.length < 2 ? [pointFrom2(0, 0), pointFrom2(element.width, element.height)] : element.points
4880
4727
  );
4881
4728
  if (points[0][0] !== 0 || points[0][1] !== 0) {
4882
4729
  ({ points, x, y } = LinearElementEditor2.getNormalizeElementPointsAndCoords(element));
4883
4730
  }
4884
4731
  return restoreElementWithProperties(element, {
4885
- type: element.type === "draw" ? "line" : element.type,
4886
- startBinding: repairBinding(element, element.startBinding),
4887
- endBinding: repairBinding(element, element.endBinding),
4888
- lastCommittedPoint: null,
4732
+ type: "line",
4733
+ startBinding: null,
4734
+ endBinding: null,
4889
4735
  startArrowhead,
4890
4736
  endArrowhead,
4891
4737
  points,
@@ -4898,20 +4744,28 @@ var restoreElement = (element, opts) => {
4898
4744
  });
4899
4745
  case "arrow": {
4900
4746
  const { startArrowhead: startArrowhead2 = null, endArrowhead: endArrowhead2 = "arrow" } = element;
4901
- let x2 = element.x;
4902
- let y2 = element.y;
4903
- let points2 = (
4747
+ const x2 = element.x;
4748
+ const y2 = element.y;
4749
+ const points2 = (
4904
4750
  // migrate old arrow model to new one
4905
- !Array.isArray(element.points) || element.points.length < 2 ? [pointFrom3(0, 0), pointFrom3(element.width, element.height)] : element.points
4751
+ !Array.isArray(element.points) || element.points.length < 2 ? [pointFrom2(0, 0), pointFrom2(element.width, element.height)] : element.points
4906
4752
  );
4907
- if (points2[0][0] !== 0 || points2[0][1] !== 0) {
4908
- ({ points: points2, x: x2, y: y2 } = LinearElementEditor2.getNormalizeElementPointsAndCoords(element));
4909
- }
4910
4753
  const base = {
4911
4754
  type: element.type,
4912
- startBinding: repairBinding(element, element.startBinding),
4913
- endBinding: repairBinding(element, element.endBinding),
4914
- lastCommittedPoint: null,
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
+ ),
4915
4769
  startArrowhead: startArrowhead2,
4916
4770
  endArrowhead: endArrowhead2,
4917
4771
  points: points2,
@@ -4920,15 +4774,19 @@ var restoreElement = (element, opts) => {
4920
4774
  elbowed: element.elbowed,
4921
4775
  ...getSizeFromPoints(points2)
4922
4776
  };
4923
- return isElbowArrow(element) ? restoreElementWithProperties(element, {
4777
+ const restoredElement = isElbowArrow(element) ? restoreElementWithProperties(element, {
4924
4778
  ...base,
4925
4779
  elbowed: true,
4926
- startBinding: repairBinding(element, element.startBinding),
4927
- endBinding: repairBinding(element, element.endBinding),
4928
4780
  fixedSegments: element.fixedSegments?.length && base.points.length >= 4 ? element.fixedSegments : null,
4929
4781
  startIsSpecial: element.startIsSpecial,
4930
4782
  endIsSpecial: element.endIsSpecial
4931
4783
  }) : restoreElementWithProperties(element, base);
4784
+ return {
4785
+ ...restoredElement,
4786
+ ...LinearElementEditor2.getNormalizeElementPointsAndCoords(
4787
+ restoredElement
4788
+ )
4789
+ };
4932
4790
  }
4933
4791
  case "ellipse":
4934
4792
  case "rectangle":
@@ -4993,21 +4851,33 @@ var repairFrameMembership = (element, elementsMap) => {
4993
4851
  }
4994
4852
  }
4995
4853
  };
4996
- var restoreElements = (elements, localElements, opts) => {
4854
+ var restoreElements = (targetElements, existingElements, opts) => {
4997
4855
  const existingIds = /* @__PURE__ */ new Set();
4998
- const localElementsMap = localElements ? arrayToMap2(localElements) : null;
4856
+ const targetElementsMap = arrayToMap2(targetElements || []);
4857
+ const existingElementsMap = existingElements ? arrayToMap2(existingElements) : null;
4999
4858
  const restoredElements = syncInvalidIndices2(
5000
- (elements || []).reduce((elements2, element) => {
4859
+ (targetElements || []).reduce((elements, element) => {
5001
4860
  if (element.type === "selection") {
5002
- return elements2;
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;
5003
4876
  }
5004
- let migratedElement = restoreElement(element, {
5005
- deleteInvisibleElements: opts?.deleteInvisibleElements
5006
- });
5007
4877
  if (migratedElement) {
5008
- const localElement = localElementsMap?.get(element.id);
4878
+ const localElement = existingElementsMap?.get(element.id);
5009
4879
  const shouldMarkAsDeleted = opts?.deleteInvisibleElements && isInvisiblySmallElement(element);
5010
- if (shouldMarkAsDeleted || localElement && localElement.version > migratedElement.version) {
4880
+ if (shouldMarkAsDeleted) {
5011
4881
  migratedElement = bumpVersion(migratedElement, localElement?.version);
5012
4882
  }
5013
4883
  if (shouldMarkAsDeleted) {
@@ -5017,9 +4887,9 @@ var restoreElements = (elements, localElements, opts) => {
5017
4887
  migratedElement = { ...migratedElement, id: randomId() };
5018
4888
  }
5019
4889
  existingIds.add(migratedElement.id);
5020
- elements2.push(migratedElement);
4890
+ elements.push(migratedElement);
5021
4891
  }
5022
- return elements2;
4892
+ return elements;
5023
4893
  }, [])
5024
4894
  );
5025
4895
  if (!opts?.repairBindings) {
@@ -5063,7 +4933,7 @@ var restoreElements = (elements, localElements, opts) => {
5063
4933
  restoredElementsMap,
5064
4934
  {
5065
4935
  points: [
5066
- pointFrom3(0, 0),
4936
+ pointFrom2(0, 0),
5067
4937
  element.points[element.points.length - 1]
5068
4938
  ]
5069
4939
  }
@@ -5092,10 +4962,10 @@ var restoreElements = (elements, localElements, opts) => {
5092
4962
  width: boundElement.width,
5093
4963
  height: boundElement.height,
5094
4964
  points: [
5095
- pointFrom3(0, 0),
5096
- pointFrom3(0, -10),
5097
- pointFrom3(boundElement.width / 2 + 5, -10),
5098
- pointFrom3(
4965
+ pointFrom2(0, 0),
4966
+ pointFrom2(0, -10),
4967
+ pointFrom2(boundElement.width / 2 + 5, -10),
4968
+ pointFrom2(
5099
4969
  boundElement.width / 2 + 5,
5100
4970
  boundElement.height / 2 + 5
5101
4971
  )
@@ -5173,13 +5043,6 @@ var restoreAppState = (appState, localAppState) => {
5173
5043
  editingFrame: null
5174
5044
  };
5175
5045
  };
5176
- var restore = (data, localAppState, localElements, elementsConfig) => {
5177
- return {
5178
- elements: restoreElements(data?.elements, localElements, elementsConfig),
5179
- appState: restoreAppState(data?.appState, localAppState || null),
5180
- files: data?.files || {}
5181
- };
5182
- };
5183
5046
  var restoreLibraryItem = (libraryItem) => {
5184
5047
  const elements = restoreElements(
5185
5048
  getNonDeletedElements(libraryItem.elements),
@@ -5219,9 +5082,9 @@ var restoreLibraryItems = (libraryItems = [], defaultStatus) => {
5219
5082
  // data/blob.ts
5220
5083
  var parseFileContents = async (blob) => {
5221
5084
  let contents;
5222
- if (blob.type === MIME_TYPES6.png) {
5085
+ if (blob.type === MIME_TYPES5.png) {
5223
5086
  try {
5224
- return await (await import("./data/image-OLV524AK.js")).decodePngMetadata(blob);
5087
+ return await (await import("./data/image-2BHUUSLM.js")).decodePngMetadata(blob);
5225
5088
  } catch (error) {
5226
5089
  if (error.message === "INVALID") {
5227
5090
  throw new ImageSceneDataError(
@@ -5246,7 +5109,7 @@ var parseFileContents = async (blob) => {
5246
5109
  };
5247
5110
  });
5248
5111
  }
5249
- if (blob.type === MIME_TYPES6.svg) {
5112
+ if (blob.type === MIME_TYPES5.svg) {
5250
5113
  try {
5251
5114
  return decodeSvgBase64Payload({
5252
5115
  svg: contents
@@ -5302,30 +5165,27 @@ var loadSceneOrLibraryFromBlob = async (blob, localAppState, localElements, file
5302
5165
  }
5303
5166
  if (isValidExcalidrawData(data)) {
5304
5167
  return {
5305
- type: MIME_TYPES6.excalidraw,
5306
- data: restore(
5307
- {
5308
- elements: clearElementsForExport2(data.elements || []),
5309
- appState: {
5168
+ type: MIME_TYPES5.excalidraw,
5169
+ data: {
5170
+ elements: restoreElements(data.elements, localElements, {
5171
+ repairBindings: true,
5172
+ deleteInvisibleElements: true
5173
+ }),
5174
+ appState: restoreAppState(
5175
+ {
5310
5176
  theme: localAppState?.theme,
5311
5177
  fileHandle: fileHandle || blob.handle || null,
5312
5178
  ...cleanAppStateForExport(data.appState || {}),
5313
5179
  ...localAppState ? calculateScrollCenter(data.elements || [], localAppState) : {}
5314
5180
  },
5315
- files: data.files
5316
- },
5317
- localAppState,
5318
- localElements,
5319
- {
5320
- repairBindings: true,
5321
- refreshDimensions: false,
5322
- deleteInvisibleElements: true
5323
- }
5324
- )
5181
+ localAppState
5182
+ ),
5183
+ files: data.files || {}
5184
+ }
5325
5185
  };
5326
5186
  } else if (isValidLibrary(data)) {
5327
5187
  return {
5328
- type: MIME_TYPES6.excalidrawlib,
5188
+ type: MIME_TYPES5.excalidrawlib,
5329
5189
  data
5330
5190
  };
5331
5191
  }
@@ -5344,7 +5204,7 @@ var loadFromBlob = async (blob, localAppState, localElements, fileHandle) => {
5344
5204
  localElements,
5345
5205
  fileHandle
5346
5206
  );
5347
- if (ret.type !== MIME_TYPES6.excalidraw) {
5207
+ if (ret.type !== MIME_TYPES5.excalidraw) {
5348
5208
  throw new Error("Error: invalid file");
5349
5209
  }
5350
5210
  return ret.data;
@@ -5412,7 +5272,7 @@ var dataURLToString = (dataURL) => {
5412
5272
  return base64ToString(dataURL.slice(dataURL.indexOf(",") + 1));
5413
5273
  };
5414
5274
  var resizeImageFile = async (file, opts) => {
5415
- if (file.type === MIME_TYPES6.svg) {
5275
+ if (file.type === MIME_TYPES5.svg) {
5416
5276
  return file;
5417
5277
  }
5418
5278
  const [pica, imageBlobReduce] = await Promise.all([
@@ -5445,7 +5305,7 @@ var resizeImageFile = async (file, opts) => {
5445
5305
  };
5446
5306
  var SVGStringToFile = (SVGString, filename = "") => {
5447
5307
  return new File([new TextEncoder().encode(SVGString)], filename, {
5448
- type: MIME_TYPES6.svg
5308
+ type: MIME_TYPES5.svg
5449
5309
  });
5450
5310
  };
5451
5311
  var ImageURLToFile = async (imageUrl, filename = "") => {
@@ -5478,61 +5338,52 @@ var getFileHandle = async (event) => {
5478
5338
  }
5479
5339
  return null;
5480
5340
  };
5481
- var getActualMimeTypeFromImage = (buffer) => {
5341
+ var getActualMimeTypeFromImage = async (file) => {
5482
5342
  let mimeType = null;
5483
- const first8Bytes = `${[...new Uint8Array(buffer).slice(0, 8)].join(" ")} `;
5484
- const headerBytes = {
5343
+ const leadingBytes = [
5344
+ ...new Uint8Array(await blobToArrayBuffer(file.slice(0, 15)))
5345
+ ].join(" ");
5346
+ const bytes = {
5485
5347
  // https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
5486
- png: "137 80 78 71 13 10 26 10 ",
5348
+ png: /^137 80 78 71 13 10 26 10\b/,
5487
5349
  // https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
5488
5350
  // jpg is a bit wonky. Checking the first three bytes should be enough,
5489
5351
  // but may yield false positives. (https://stackoverflow.com/a/23360709/927631)
5490
- jpg: "255 216 255 ",
5352
+ jpg: /^255 216 255\b/,
5491
5353
  // https://en.wikipedia.org/wiki/GIF#Example_GIF_file
5492
- gif: "71 73 70 56 57 97 "
5354
+ gif: /^71 73 70 56 57 97\b/,
5355
+ // 4 bytes for RIFF + 4 bytes for chunk size + WEBP identifier
5356
+ webp: /^82 73 70 70 \d+ \d+ \d+ \d+ 87 69 66 80 86 80 56\b/
5493
5357
  };
5494
- if (first8Bytes === headerBytes.png) {
5495
- mimeType = MIME_TYPES6.png;
5496
- } else if (first8Bytes.startsWith(headerBytes.jpg)) {
5497
- mimeType = MIME_TYPES6.jpg;
5498
- } else if (first8Bytes.startsWith(headerBytes.gif)) {
5499
- mimeType = MIME_TYPES6.gif;
5500
- }
5501
- return mimeType;
5358
+ for (const type of Object.keys(bytes)) {
5359
+ if (leadingBytes.match(bytes[type])) {
5360
+ mimeType = MIME_TYPES5[type];
5361
+ break;
5362
+ }
5363
+ }
5364
+ return mimeType || file.type || null;
5502
5365
  };
5503
5366
  var createFile = (blob, mimeType, name) => {
5504
5367
  return new File([blob], name || "", {
5505
5368
  type: mimeType
5506
5369
  });
5507
5370
  };
5371
+ var normalizedFileSymbol = Symbol("fileNormalized");
5508
5372
  var normalizeFile = async (file) => {
5509
- if (!file.type) {
5510
- if (file?.name?.endsWith(".excalidrawlib")) {
5511
- file = createFile(
5512
- await blobToArrayBuffer(file),
5513
- MIME_TYPES6.excalidrawlib,
5514
- file.name
5515
- );
5516
- } else if (file?.name?.endsWith(".excalidraw")) {
5517
- file = createFile(
5518
- await blobToArrayBuffer(file),
5519
- MIME_TYPES6.excalidraw,
5520
- file.name
5521
- );
5522
- } else {
5523
- const buffer = await blobToArrayBuffer(file);
5524
- const mimeType = getActualMimeTypeFromImage(buffer);
5525
- if (mimeType) {
5526
- file = createFile(buffer, mimeType, file.name);
5527
- }
5528
- }
5529
- } else if (isSupportedImageFile(file)) {
5530
- const buffer = await blobToArrayBuffer(file);
5531
- const mimeType = getActualMimeTypeFromImage(buffer);
5373
+ if (file[normalizedFileSymbol]) {
5374
+ return file;
5375
+ }
5376
+ if (file?.name?.endsWith(".excalidrawlib")) {
5377
+ file = createFile(file, MIME_TYPES5.excalidrawlib, file.name);
5378
+ } else if (file?.name?.endsWith(".excalidraw")) {
5379
+ file = createFile(file, MIME_TYPES5.excalidraw, file.name);
5380
+ } else if (!file.type || file.type?.startsWith("image/")) {
5381
+ const mimeType = await getActualMimeTypeFromImage(file);
5532
5382
  if (mimeType && mimeType !== file.type) {
5533
- file = createFile(buffer, mimeType, file.name);
5383
+ file = createFile(file, mimeType, file.name);
5534
5384
  }
5535
5385
  }
5386
+ file[normalizedFileSymbol] = true;
5536
5387
  return file;
5537
5388
  };
5538
5389
  var blobToArrayBuffer = (blob) => {
@@ -5566,7 +5417,7 @@ var encodePngMetadata = async ({
5566
5417
  }) => {
5567
5418
  const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob)));
5568
5419
  const metadataChunk = tEXt.encode(
5569
- MIME_TYPES7.excalidraw,
5420
+ MIME_TYPES6.excalidraw,
5570
5421
  JSON.stringify(
5571
5422
  encode({
5572
5423
  text: metadata,
@@ -5575,11 +5426,11 @@ var encodePngMetadata = async ({
5575
5426
  )
5576
5427
  );
5577
5428
  chunks.splice(-1, 0, metadataChunk);
5578
- return new Blob([encodePng(chunks)], { type: MIME_TYPES7.png });
5429
+ return new Blob([encodePng(chunks)], { type: MIME_TYPES6.png });
5579
5430
  };
5580
5431
  var decodePngMetadata = async (blob) => {
5581
5432
  const metadata = await getTEXtChunk(blob);
5582
- if (metadata?.keyword === MIME_TYPES7.excalidraw) {
5433
+ if (metadata?.keyword === MIME_TYPES6.excalidraw) {
5583
5434
  try {
5584
5435
  const encodedData = JSON.parse(metadata.text);
5585
5436
  if (!("encoded" in encodedData)) {
@@ -5614,6 +5465,7 @@ export {
5614
5465
  AbortError,
5615
5466
  ImageSceneDataError,
5616
5467
  ExcalidrawError,
5468
+ RequestError,
5617
5469
  Fonts,
5618
5470
  getDefaultAppState,
5619
5471
  isEraserActive,
@@ -5632,10 +5484,7 @@ export {
5632
5484
  fillCircle,
5633
5485
  getNormalizedCanvasDimensions,
5634
5486
  bootstrapCanvas,
5635
- drawHighlightForRectWithRotation,
5636
- strokeEllipseWithRotation,
5637
- strokeRectWithRotation,
5638
- drawHighlightForDiamondWithRotation,
5487
+ strokeRectWithRotation_simple,
5639
5488
  frameClip,
5640
5489
  renderStaticSceneThrottled,
5641
5490
  renderStaticScene,
@@ -5645,7 +5494,6 @@ export {
5645
5494
  restoreElement,
5646
5495
  restoreElements,
5647
5496
  restoreAppState,
5648
- restore,
5649
5497
  restoreLibraryItems,
5650
5498
  getTEXtChunk,
5651
5499
  encodePngMetadata,
@@ -5671,4 +5519,4 @@ export {
5671
5519
  createFile,
5672
5520
  normalizeFile
5673
5521
  };
5674
- //# sourceMappingURL=chunk-LJB4UXX2.js.map
5522
+ //# sourceMappingURL=chunk-PW6TXCLQ.js.map