@dwelle/excalidraw 0.5.0-2dbdd6f → 0.5.0-2e5786f

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