@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,10 +1,11 @@
1
1
  import type { AppState, PendingExcalidrawElements } from "@excalidraw/excalidraw/types";
2
- import { type ElementsMap, type ExcalidrawBindableElement, type ExcalidrawElement, type ExcalidrawFlowchartNodeElement } from "./types";
2
+ import { type NonDeleted, type ElementsMap, type ExcalidrawElement, type ExcalidrawFlowchartNodeElement, type NonDeletedExcalidrawElement } from "./types";
3
3
  import type { Scene } from "./Scene";
4
- type LinkDirection = "up" | "right" | "down" | "left";
5
- export declare const getLinkDirectionFromKey: (key: string) => LinkDirection;
6
- export declare const getPredecessors: (node: ExcalidrawBindableElement, elementsMap: ElementsMap, direction: LinkDirection) => ExcalidrawBindableElement[];
7
- export declare const addNewNodes: (startNode: ExcalidrawFlowchartNodeElement, appState: AppState, direction: LinkDirection, scene: Scene, numberOfNodes: number) => ExcalidrawElement[];
4
+ export type LinkDirection = "up" | "right" | "down" | "left";
5
+ export declare const addNewNodes: (startNode: NonDeleted<ExcalidrawFlowchartNodeElement>, appState: AppState, direction: LinkDirection, scene: Scene, numberOfNodes: number, stickyCrossStart?: number | null) => {
6
+ nodes: NonDeletedExcalidrawElement[];
7
+ crossStart: number;
8
+ };
8
9
  export declare class FlowChartNavigator {
9
10
  isExploring: boolean;
10
11
  private sameLevelNodes;
@@ -13,14 +14,17 @@ export declare class FlowChartNavigator {
13
14
  private visitedNodes;
14
15
  clear(): void;
15
16
  exploreByDirection(element: ExcalidrawElement, elementsMap: ElementsMap, direction: LinkDirection): ExcalidrawElement["id"] | null;
17
+ private static getNodeRelatives;
18
+ private static getSuccessors;
19
+ private static getPredecessors;
16
20
  }
17
21
  export declare class FlowChartCreator {
18
22
  isCreatingChart: boolean;
19
23
  private numberOfNodes;
20
24
  private direction;
25
+ private clusterCrossStart;
21
26
  pendingNodes: PendingExcalidrawElements | null;
22
- createNodes(startNode: ExcalidrawFlowchartNodeElement, appState: AppState, direction: LinkDirection, scene: Scene): void;
27
+ createNodes(startNode: NonDeleted<ExcalidrawFlowchartNodeElement>, appState: AppState, direction: LinkDirection, scene: Scene): void;
23
28
  clear(): void;
24
29
  }
25
30
  export declare const isNodeInFlowchart: (element: ExcalidrawFlowchartNodeElement, elementsMap: ElementsMap) => boolean;
26
- export {};
@@ -1,4 +1,4 @@
1
- import type { ElementsMap, ExcalidrawElement, OrderedExcalidrawElement, SceneElementsMap } from "./types";
1
+ import type { ElementsMap, ExcalidrawElement, Ordered, OrderedExcalidrawElement, SceneElementsMap } from "./types";
2
2
  export declare class InvalidFractionalIndexError extends Error {
3
3
  code: "ELEMENT_HAS_INVALID_INDEX";
4
4
  }
@@ -48,7 +48,7 @@ export declare const syncMovedIndices: (elements: readonly ExcalidrawElement[],
48
48
  *
49
49
  * WARN: in edge cases it could modify the elements which were not moved, as it's impossible to guess the actually moved elements from the elements array itself.
50
50
  */
51
- export declare const syncInvalidIndices: (elements: readonly ExcalidrawElement[]) => OrderedExcalidrawElement[];
51
+ export declare const syncInvalidIndices: <T extends ExcalidrawElement>(elements: readonly T[]) => Ordered<T>[];
52
52
  /**
53
53
  * Synchronizes all invalid fractional indices within the array order by creating new instances of elements with corrected indices.
54
54
  *
@@ -29,24 +29,25 @@ export declare const getFrameLikeElements: (allElements: ExcalidrawElementsInclu
29
29
  *
30
30
  * Considers non-frame bound elements (container or arrow labels) as root.
31
31
  */
32
- export declare const getRootElements: (allElements: ExcalidrawElementsIncludingDeleted) => ExcalidrawElement[];
32
+ export declare const getRootElements: <T extends ExcalidrawElement>(allElements: readonly T[]) => T[];
33
33
  export declare const getElementsInResizingFrame: (allElements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameLikeElement, appState: AppState, elementsMap: ElementsMap) => ExcalidrawElement[];
34
- export declare const getElementsInNewFrame: (elements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameLikeElement, elementsMap: ElementsMap) => (import("./types").ExcalidrawLinearElement | import("./types").ExcalidrawSelectionElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | import("./types").ExcalidrawFreeDrawElement)[];
35
- export declare const omitPartialGroups: (elements: ExcalidrawElement[], frame: ExcalidrawFrameLikeElement, allElementsMap: ElementsMap) => (import("./types").ExcalidrawLinearElement | import("./types").ExcalidrawSelectionElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | import("./types").ExcalidrawFreeDrawElement)[];
34
+ export declare const getElementsInNewFrame: (elements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameLikeElement, elementsMap: ElementsMap) => (import("./types").ExcalidrawLinearElement | import("./types").ExcalidrawSelectionElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawStickyNoteElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | import("./types").ExcalidrawFreeDrawElement)[];
35
+ export declare const omitPartialGroups: (elements: ExcalidrawElement[], frame: ExcalidrawFrameLikeElement, allElementsMap: ElementsMap) => (import("./types").ExcalidrawLinearElement | import("./types").ExcalidrawSelectionElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawStickyNoteElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | import("./types").ExcalidrawFreeDrawElement)[];
36
36
  export declare const getContainingFrame: (element: ExcalidrawElement, elementsMap: ElementsMap) => ExcalidrawFrameLikeElement | null;
37
37
  /** */
38
38
  export declare const filterElementsEligibleAsFrameChildren: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameLikeElement) => ExcalidrawElement[];
39
+ export declare const getCommonFrameId: (elements: readonly ExcalidrawElement[]) => string | null;
40
+ export declare const getFrameChildrenInsertionIndex: (elements: readonly ExcalidrawElement[], frameId: ExcalidrawFrameLikeElement["id"]) => number | null;
39
41
  /**
40
- * Retains (or repairs for target frame) the ordering invriant where children
41
- * elements come right before the parent frame:
42
- * [el, el, child, child, frame, el]
42
+ * Adds elements and their bound elements to frame. Reorders added elements to
43
+ * be just below frame, or just above its highest child (whichever is higher).
43
44
  *
44
45
  * @returns mutated allElements (same data structure)
45
46
  */
46
- export declare const addElementsToFrame: <T extends ElementsMapOrArray>(allElements: T, elementsToAdd: NonDeletedExcalidrawElement[], frame: ExcalidrawFrameLikeElement, appState: AppState) => T;
47
- export declare const removeElementsFromFrame: (elementsToRemove: ReadonlySetLike<NonDeletedExcalidrawElement>, elementsMap: ElementsMap) => void;
47
+ export declare const addElementsToFrame: <T extends ElementsMapOrArray>(allElements: T, elementsToAdd: ExcalidrawElement[], frame: ExcalidrawFrameLikeElement) => T;
48
+ export declare const removeElementsFromFrame: (elementsToRemove: ReadonlySetLike<ExcalidrawElement>, elementsMap: ElementsMap) => void;
48
49
  export declare const removeAllElementsFromFrame: <T extends ExcalidrawElement>(allElements: readonly T[], frame: ExcalidrawFrameLikeElement) => readonly T[];
49
- export declare const replaceAllElementsInFrame: <T extends ExcalidrawElement>(allElements: readonly T[], nextElementsInFrame: ExcalidrawElement[], frame: ExcalidrawFrameLikeElement, app: AppClassProperties) => T[];
50
+ export declare const replaceAllElementsInFrame: <T extends ExcalidrawElement>(allElements: readonly T[], nextElementsInFrame: ExcalidrawElement[], frame: ExcalidrawFrameLikeElement) => T[];
50
51
  /** does not mutate elements, but returns new ones */
51
52
  export declare const updateFrameMembershipOfSelectedElements: <T extends ElementsMapOrArray>(allElements: T, appState: AppState, app: AppClassProperties) => T;
52
53
  /**
@@ -70,5 +71,5 @@ export declare const isElementInFrame: (element: ExcalidrawElement, allElementsM
70
71
  export declare const shouldApplyFrameClip: (element: ExcalidrawElement, frame: ExcalidrawFrameLikeElement, appState: StaticCanvasAppState, elementsMap: ElementsMap, checkedGroups?: Map<string, boolean>) => boolean;
71
72
  export declare const getDefaultFrameName: (element: ExcalidrawFrameLikeElement) => "Frame" | "AI Frame";
72
73
  export declare const getFrameLikeTitle: (element: ExcalidrawFrameLikeElement) => string;
73
- export declare const getElementsOverlappingFrame: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameLikeElement) => NonDeletedExcalidrawElement[];
74
+ export declare const getElementsOverlappingFrame: <T extends ExcalidrawElement>(elements: readonly T[], frame: ExcalidrawFrameLikeElement, elementsMap: ElementsMap) => T[];
74
75
  export declare const frameAndChildrenSelectedTogether: (selectedElements: readonly ExcalidrawElement[]) => boolean;
@@ -1,7 +1,7 @@
1
1
  import type { AppClassProperties, AppState, InteractiveCanvasAppState } from "@excalidraw/excalidraw/types";
2
2
  import type { Mutable } from "@excalidraw/common/utility-types";
3
- import type { GroupId, ExcalidrawElement, NonDeleted, NonDeletedExcalidrawElement, ElementsMapOrArray, ElementsMap } from "./types";
4
- export declare const selectGroup: (groupId: GroupId, appState: InteractiveCanvasAppState, elements: readonly NonDeleted<ExcalidrawElement>[]) => Pick<InteractiveCanvasAppState, "selectedGroupIds" | "selectedElementIds" | "editingGroupId">;
3
+ import type { GroupId, ExcalidrawElement, NonDeleted, ElementsMapOrArray, ElementsMap, NonDeletedExcalidrawElement, NonDeletedElementsMapOrArray } from "./types";
4
+ export declare const selectGroup: (groupId: GroupId, appState: InteractiveCanvasAppState, elements: readonly NonDeletedExcalidrawElement[]) => Pick<InteractiveCanvasAppState, "selectedGroupIds" | "selectedElementIds" | "editingGroupId">;
5
5
  export declare const selectGroupsForSelectedElements: {
6
6
  (appState: Pick<AppState, "selectedElementIds" | "editingGroupId">, elements: readonly NonDeletedExcalidrawElement[], prevAppState: InteractiveCanvasAppState, app: AppClassProperties | null): Mutable<Pick<InteractiveCanvasAppState, "selectedGroupIds" | "editingGroupId" | "selectedElementIds">>;
7
7
  clearCache(): void;
@@ -10,15 +10,15 @@ export declare const selectGroupsForSelectedElements: {
10
10
  * If the element's group is selected, don't render an individual
11
11
  * selection border around it.
12
12
  */
13
- export declare const isSelectedViaGroup: (appState: InteractiveCanvasAppState, element: ExcalidrawElement) => boolean;
13
+ export declare const isSelectedViaGroup: (appState: Pick<InteractiveCanvasAppState, "editingGroupId" | "selectedGroupIds">, element: ExcalidrawElement) => boolean;
14
14
  export declare const getSelectedGroupForElement: (appState: Pick<InteractiveCanvasAppState, "editingGroupId" | "selectedGroupIds">, element: ExcalidrawElement) => string | undefined;
15
- export declare const getSelectedGroupIds: (appState: InteractiveCanvasAppState) => GroupId[];
16
- export declare const selectGroupsFromGivenElements: (elements: readonly NonDeleted<ExcalidrawElement>[], appState: InteractiveCanvasAppState) => {
15
+ export declare const getSelectedGroupIds: (appState: Pick<InteractiveCanvasAppState, "selectedGroupIds">) => GroupId[];
16
+ export declare const selectGroupsFromGivenElements: (elements: readonly NonDeletedExcalidrawElement[], appState: InteractiveCanvasAppState) => {
17
17
  [groupId: string]: boolean;
18
18
  };
19
19
  export declare const editGroupForSelectedElement: (appState: AppState, element: NonDeleted<ExcalidrawElement>) => AppState;
20
20
  export declare const isElementInGroup: (element: ExcalidrawElement, groupId: string) => boolean;
21
- export declare const getElementsInGroup: (elements: ElementsMapOrArray, groupId: string) => ExcalidrawElement[];
21
+ export declare const getElementsInGroup: <P extends NonDeletedExcalidrawElement | ExcalidrawElement>(elements: P extends NonDeletedExcalidrawElement ? NonDeletedElementsMapOrArray : ElementsMapOrArray, groupId: string) => P[];
22
22
  export declare const getSelectedGroupIdForElement: (element: ExcalidrawElement, selectedGroupIds: {
23
23
  [groupId: string]: boolean;
24
24
  }) => string | undefined;
@@ -26,9 +26,9 @@ export declare const addToGroup: (prevGroupIds: ExcalidrawElement["groupIds"], n
26
26
  export declare const removeFromSelectedGroups: (groupIds: ExcalidrawElement["groupIds"], selectedGroupIds: {
27
27
  [groupId: string]: boolean;
28
28
  }) => string[];
29
- export declare const getMaximumGroups: (elements: ExcalidrawElement[], elementsMap: ElementsMap) => ExcalidrawElement[][];
29
+ export declare const getMaximumGroups: <T extends NonDeletedExcalidrawElement | ExcalidrawElement>(elements: T[], elementsMap: ElementsMap) => T[][];
30
30
  export declare const getNonDeletedGroupIds: (elements: ElementsMap) => Set<string>;
31
31
  export declare const elementsAreInSameGroup: (elements: readonly ExcalidrawElement[]) => boolean;
32
- export declare const isInGroup: (element: NonDeletedExcalidrawElement) => boolean;
32
+ export declare const isInGroup: (element: ExcalidrawElement) => boolean;
33
33
  export declare const getNewGroupIdsForDuplication: (groupIds: ExcalidrawElement["groupIds"], editingGroupId: AppState["editingGroupId"], mapper: (groupId: GroupId) => GroupId) => string[];
34
- export declare const getSelectedElementsByGroup: (selectedElements: ExcalidrawElement[], elementsMap: ElementsMap, appState: Readonly<AppState>) => ExcalidrawElement[][];
34
+ export declare const getSelectedElementsByGroup: (selectedElements: NonDeletedExcalidrawElement[], elementsMap: ElementsMap, appState: Readonly<Pick<AppState, "selectedGroupIds" | "editingGroupId">>) => NonDeletedExcalidrawElement[][];
@@ -8,12 +8,14 @@ export declare const getSceneVersion: (elements: readonly ExcalidrawElement[]) =
8
8
  */
9
9
  export declare const hashElementsVersion: (elements: ElementsMapOrArray) => number;
10
10
  export declare const hashString: (s: string) => number;
11
+ export declare const isNonDeletedElement: <T extends ExcalidrawElement>(element: T) => element is NonDeleted<T>;
11
12
  export declare const getVisibleElements: (elements: readonly ExcalidrawElement[]) => readonly NonDeletedExcalidrawElement[];
12
13
  export declare const getNonDeletedElements: <T extends ExcalidrawElement>(elements: readonly T[]) => readonly NonDeleted<T>[];
13
- export declare const isNonDeletedElement: <T extends ExcalidrawElement>(element: T) => element is NonDeleted<T>;
14
14
  export * from "./align";
15
+ export * from "./arrowEndpointText";
15
16
  export * from "./binding";
16
17
  export * from "./bounds";
18
+ export * from "./bucketFill";
17
19
  export * from "./collision";
18
20
  export * from "./comparisons";
19
21
  export * from "./containerCache";
@@ -34,6 +36,7 @@ export * from "./groups";
34
36
  export * from "./heading";
35
37
  export * from "./image";
36
38
  export * from "./linearElementEditor";
39
+ export * from "./listMarker";
37
40
  export * from "./mutateElement";
38
41
  export * from "./newElement";
39
42
  export * from "./positionElementsOnGrid";
@@ -47,6 +50,7 @@ export * from "./showSelectedShapeActions";
47
50
  export * from "./sizeHelpers";
48
51
  export * from "./sortElements";
49
52
  export * from "./store";
53
+ export * from "./stickyNote";
50
54
  export * from "./textElement";
51
55
  export * from "./textMeasurements";
52
56
  export * from "./textWrapping";
@@ -57,3 +61,4 @@ export * from "./utils";
57
61
  export * from "./zindex";
58
62
  export * from "./arrows/helpers";
59
63
  export * from "./arrowheads";
64
+ export * from "./convertToShape";
@@ -22,6 +22,7 @@ export declare class LinearElementEditor {
22
22
  };
23
23
  arrowStartIsInside: boolean;
24
24
  altFocusPoint: Readonly<GlobalPoint> | null;
25
+ arrowOtherEndpointInitialBinding: FixedPointBinding | null;
25
26
  }>;
26
27
  /** whether you're dragging a point */
27
28
  readonly isDragging: boolean;
@@ -45,18 +46,18 @@ export declare class LinearElementEditor {
45
46
  * @param id the `elementId` from the instance of this class (so that we can
46
47
  * statically guarantee this method returns an ExcalidrawLinearElement)
47
48
  */
48
- static getElement<T extends ExcalidrawLinearElement>(id: InstanceType<typeof LinearElementEditor>["elementId"], elementsMap: ElementsMap): T | null;
49
+ static getElement<T extends ExcalidrawLinearElement>(id: InstanceType<typeof LinearElementEditor>["elementId"], elementsMap: ElementsMap): NonDeleted<T> | null;
49
50
  static handleBoxSelection(event: PointerEvent, appState: AppState, setState: React.Component<any, AppState>["setState"], elementsMap: NonDeletedSceneElementsMap): false | undefined;
50
51
  static handlePointerMove(event: PointerEvent, app: AppClassProperties, scenePointerX: number, scenePointerY: number, linearElementEditor: LinearElementEditor): Pick<AppState, "suggestedBinding" | "selectedLinearElement"> | null;
51
52
  static handlePointDragging(event: PointerEvent, app: AppClassProperties, scenePointerX: number, scenePointerY: number, linearElementEditor: LinearElementEditor): Pick<AppState, "suggestedBinding" | "selectedLinearElement"> | null;
52
53
  static handlePointerUp(event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState, scene: Scene): LinearElementEditor;
53
- static getEditorMidPoints: (element: NonDeleted<ExcalidrawLinearElement>, elementsMap: ElementsMap, appState: InteractiveCanvasAppState) => (GlobalPoint | null)[];
54
+ static getEditorMidPoints: (element: ExcalidrawLinearElement, elementsMap: ElementsMap, appState: InteractiveCanvasAppState) => (GlobalPoint | null)[];
54
55
  static getSegmentMidpointHitCoords: (linearElementEditor: LinearElementEditor, scenePointer: {
55
56
  x: number;
56
57
  y: number;
57
58
  }, appState: AppState, elementsMap: ElementsMap) => GlobalPoint | null;
58
- static isSegmentTooShort<P extends GlobalPoint | LocalPoint>(element: NonDeleted<ExcalidrawLinearElement>, startPoint: P, endPoint: P, index: number, zoom: Zoom, elementsMap: ElementsMap): boolean;
59
- static getSegmentMidPoint(element: NonDeleted<ExcalidrawLinearElement>, index: number, elementsMap: ElementsMap): GlobalPoint;
59
+ static isSegmentTooShort<P extends GlobalPoint | LocalPoint>(element: ExcalidrawLinearElement, startPoint: P, endPoint: P, index: number, zoom: Zoom, elementsMap: ElementsMap): boolean;
60
+ static getSegmentMidPoint(element: ExcalidrawLinearElement, index: number, elementsMap: ElementsMap): GlobalPoint;
60
61
  static getSegmentMidPointIndex(linearElementEditor: LinearElementEditor, appState: AppState, midPoint: GlobalPoint, elementsMap: ElementsMap): number;
61
62
  static handlePointerDown(event: React.PointerEvent<HTMLElement>, app: AppClassProperties, store: Store, scenePointer: {
62
63
  x: number;
@@ -64,19 +65,26 @@ export declare class LinearElementEditor {
64
65
  }, linearElementEditor: LinearElementEditor, scene: Scene): {
65
66
  didAddPoint: boolean;
66
67
  hitElement: NonDeleted<ExcalidrawElement> | null;
68
+ /** the pointer went down on the arrow's label, grabbing it for a drag */
69
+ hitBoundText: boolean;
67
70
  linearElementEditor: LinearElementEditor | null;
68
71
  };
69
72
  static arePointsEqual<Point extends LocalPoint | GlobalPoint>(point1: Point | null, point2: Point | null): boolean;
70
73
  static handlePointerMoveInEditMode(event: React.PointerEvent<HTMLCanvasElement>, scenePointerX: number, scenePointerY: number, app: AppClassProperties): LinearElementEditor | null;
71
74
  /** scene coords */
72
- static getPointGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, p: LocalPoint, elementsMap: ElementsMap): GlobalPoint;
75
+ static getPointGlobalCoordinates(element: ExcalidrawLinearElement, p: LocalPoint, elementsMap: ElementsMap): GlobalPoint;
73
76
  /** scene coords */
74
- static getPointsGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, elementsMap: ElementsMap): GlobalPoint[];
75
- static getPointAtIndexGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, indexMaybeFromEnd: number, // -1 for last element
77
+ static getPointsGlobalCoordinates(element: ExcalidrawLinearElement, elementsMap: ElementsMap): GlobalPoint[];
78
+ static getPointAtIndexGlobalCoordinates(element: ExcalidrawLinearElement, indexMaybeFromEnd: number, // -1 for last element
76
79
  elementsMap: ElementsMap): GlobalPoint;
77
- static pointFromAbsoluteCoords(element: NonDeleted<ExcalidrawLinearElement>, absoluteCoords: GlobalPoint, elementsMap: ElementsMap): LocalPoint;
78
- static getPointIndexUnderCursor(element: NonDeleted<ExcalidrawLinearElement>, elementsMap: ElementsMap, zoom: AppState["zoom"], x: number, y: number): number;
79
- static createPointAt(element: NonDeleted<ExcalidrawLinearElement>, elementsMap: ElementsMap, scenePointerX: number, scenePointerY: number, gridSize: NullableGridSize): LocalPoint;
80
+ static pointFromAbsoluteCoords(element: ExcalidrawLinearElement, absoluteCoords: GlobalPoint, elementsMap: ElementsMap): LocalPoint;
81
+ /**
82
+ * Whether the point at `index` is an interactive handle. Elbow arrows only
83
+ * expose their endpoints; their intermediate route points are not draggable.
84
+ */
85
+ static isPointHandle(element: ExcalidrawLinearElement, index: number): boolean;
86
+ static getPointIndexUnderCursor(element: ExcalidrawLinearElement, elementsMap: ElementsMap, zoom: AppState["zoom"], x: number, y: number): number;
87
+ static createPointAt(element: ExcalidrawLinearElement, elementsMap: ElementsMap, scenePointerX: number, scenePointerY: number, gridSize: NullableGridSize): LocalPoint;
80
88
  /**
81
89
  * Normalizes line points so that the start point is at [0,0]. This is
82
90
  * expected in various parts of the codebase.
@@ -107,10 +115,19 @@ export declare class LinearElementEditor {
107
115
  } | undefined;
108
116
  private static _updatePoints;
109
117
  private static _getShiftLockedDelta;
118
+ /**
119
+ * The point a bound text label is centered on — the middle of the linear
120
+ * element, whether that's an actual point or the midpoint of the middle
121
+ * segment.
122
+ */
123
+ static getBoundTextElementCenter: (element: ExcalidrawLinearElement, elementsMap: ElementsMap) => GlobalPoint;
124
+ static handleBoundTextDragging(linearElementEditor: LinearElementEditor, scene: Scene, pointerX: number, pointerY: number): LinearElementEditor | null;
125
+ static getPointAtPathParameter(container: ExcalidrawLinearElement, pathParameter: number, elementsMap: ElementsMap): GlobalPoint | null;
110
126
  static getBoundTextElementPosition: (element: ExcalidrawLinearElement, boundTextElement: ExcalidrawTextElementWithContainer, elementsMap: ElementsMap) => {
111
127
  x: number;
112
128
  y: number;
113
129
  };
130
+ private static computeBoundTextElementPosition;
114
131
  static getMinMaxXYWithBoundText: (element: ExcalidrawLinearElement, elementsMap: ElementsMap, elementBounds: Bounds, boundTextElement: ExcalidrawTextElementWithContainer) => [number, number, number, number, number, number];
115
132
  static getElementAbsoluteCoords: (element: ExcalidrawLinearElement, elementsMap: ElementsMap, includeBoundText?: boolean) => [number, number, number, number, number, number];
116
133
  static moveFixedSegment(linearElement: LinearElementEditor, index: number, x: number, y: number, scene: Scene): Pick<LinearElementEditor, "segmentMidPointHoveredCoords" | "initialState">;
@@ -0,0 +1,34 @@
1
+ import type { Scene } from "./Scene";
2
+ import type { ExcalidrawElement, ExcalidrawTextElement } from "./types";
3
+ /** a list marker advanced by duplication, to go back and forth */
4
+ export type ListMarkerAdvance = {
5
+ elementId: ExcalidrawTextElement["id"];
6
+ prevOriginalText: string;
7
+ nextOriginalText: string;
8
+ /**
9
+ * where the item's text (after the marker and whitespace) starts in
10
+ * `nextOriginalText` (its length if there's none)
11
+ */
12
+ contentStart: number;
13
+ /** the label's container before the label (may have) grown it */
14
+ prevContainerSize: {
15
+ width: number;
16
+ height: number;
17
+ } | null;
18
+ };
19
+ /**
20
+ * Advances the list markers of the duplicated texts and labels, so that
21
+ * duplicating `1. foo` gives `2. foo` (and `1` gives `2`).
22
+ *
23
+ * Duplicating several list items at once continues the list from the
24
+ * highest of them: duplicating `1.`, `3.`, `5.` gives `6.`, `7.`, `8.` (only
25
+ * if they're just markers, i.e. without text).
26
+ *
27
+ * Only if nothing but list items (texts, or containers with list item labels)
28
+ * is duplicated.
29
+ */
30
+ export declare const advanceDuplicatedListMarkers: (duplicatedElements: readonly ExcalidrawElement[], scene: Scene) => ListMarkerAdvance[];
31
+ /**
32
+ * Sets the advanced list markers back (`"prev"`), or forth again (`"next"`).
33
+ */
34
+ export declare const applyListMarkerAdvances: (advances: readonly ListMarkerAdvance[], direction: "prev" | "next", scene: Scene) => void;
@@ -1,6 +1,6 @@
1
1
  import type { Mutable } from "@excalidraw/common/utility-types";
2
2
  import type { ElementsMap, ExcalidrawElement } from "./types";
3
- export type ElementUpdate<TElement extends ExcalidrawElement> = Omit<Partial<TElement>, "id" | "updated">;
3
+ export type ElementUpdate<TElement extends ExcalidrawElement> = Omit<Partial<TElement>, "id" | "updated" | "created">;
4
4
  /**
5
5
  * This function tracks updates of text elements for the purposes for collaboration.
6
6
  * The version is used to compare updates when more than one user is working in
@@ -1,9 +1,29 @@
1
1
  import type { MarkOptional } from "@excalidraw/common/utility-types";
2
- import type { ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap, ExcalidrawArrowElement, ExcalidrawElbowArrowElement, ExcalidrawLineElement } from "./types";
3
- export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "index" | "boundElements" | "seed" | "version" | "versionNonce" | "link" | "strokeStyle" | "fillStyle" | "strokeColor" | "backgroundColor" | "roughness" | "strokeWidth" | "roundness" | "locked" | "opacity" | "customData">;
2
+ import type { ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap, ExcalidrawArrowElement, ExcalidrawElbowArrowElement, ExcalidrawLineElement, ExcalidrawStickyNoteElement } from "./types";
3
+ export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "index" | "boundElements" | "seed" | "version" | "versionNonce" | "link" | "strokeStyle" | "fillStyle" | "strokeColor" | "backgroundColor" | "roughness" | "strokeWidth" | "roundness" | "locked" | "opacity" | "customData" | "created">;
4
4
  export declare const newElement: (opts: {
5
5
  type: ExcalidrawGenericElement["type"];
6
6
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawGenericElement>;
7
+ /**
8
+ * Style invariants of a sticky note: never-transparent colors, solid fill.
9
+ * Applied by the constructor and by every normalization pass. Returns the
10
+ * same object when nothing needs fixing.
11
+ */
12
+ export declare const normalizeStickyNoteStyle: <T extends ExcalidrawStickyNoteElement>(element: T) => T;
13
+ /**
14
+ * Geometry invariants of a *finalized* sticky note: minimum size and
15
+ * `baseHeight ≤ height`. Deliberately not part of the constructor — a
16
+ * pointer-down draft starts at 0×0 like every other tool and is previewed at
17
+ * its true dragged size; pointer-up, restore, the skeleton path and the
18
+ * action post-passes enforce this.
19
+ */
20
+ export declare const normalizeStickyNoteGeometry: <T extends ExcalidrawStickyNoteElement>(element: T) => T;
21
+ /** all sticky note invariants (style + finalized geometry) */
22
+ export declare const normalizeStickyNote: <T extends ExcalidrawStickyNoteElement>(element: T) => T;
23
+ export declare const newStickyNoteElement: (opts: {
24
+ type: "stickynote";
25
+ baseHeight?: number;
26
+ } & ElementConstructorOpts) => NonDeleted<ExcalidrawStickyNoteElement>;
7
27
  export declare const newEmbeddableElement: (opts: {
8
28
  type: "embeddable";
9
29
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawEmbeddableElement>;
@@ -16,6 +36,19 @@ export declare const newFrameElement: (opts: {
16
36
  export declare const newMagicFrameElement: (opts: {
17
37
  name?: string;
18
38
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawMagicFrameElement>;
39
+ /**
40
+ * The point of the text box its alignment pins, as ratios of width/height.
41
+ *
42
+ * This is the point that stays put as the text grows — see the sides passed to
43
+ * `adjustXYWithRotation` in `getAdjustedDimensions`.
44
+ */
45
+ export declare const getTextAnchorRatios: (opts: {
46
+ textAlign: ExcalidrawTextElement["textAlign"];
47
+ verticalAlign: ExcalidrawTextElement["verticalAlign"];
48
+ }) => {
49
+ x: number;
50
+ y: number;
51
+ };
19
52
  export declare const newTextElement: (opts: {
20
53
  text: string;
21
54
  originalText?: string;
@@ -26,8 +59,24 @@ export declare const newTextElement: (opts: {
26
59
  containerId?: ExcalidrawTextContainer["id"] | null;
27
60
  lineHeight?: ExcalidrawTextElement["lineHeight"];
28
61
  autoResize?: ExcalidrawTextElement["autoResize"];
62
+ labelPosition?: ExcalidrawTextElement["labelPosition"];
63
+ baseFontSize?: ExcalidrawTextElement["baseFontSize"];
29
64
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawTextElement>;
30
- export declare const refreshTextDimensions: (textElement: ExcalidrawTextElement, container: ExcalidrawTextContainer | null, elementsMap: ElementsMap, text?: string) => {
65
+ export declare const refreshTextDimensions: (textElement: ExcalidrawTextElement, container: ExcalidrawTextContainer | null, elementsMap: ElementsMap, text?: string,
66
+ /**
67
+ * For a free text that grows with its content (`autoResize`): the widest
68
+ * it may grow to. Crossing it, the text stops growing and wraps at this
69
+ * width from then on (`autoResize: false`), anchored as its growth was. A
70
+ * text that is already wider keeps growing.
71
+ */
72
+ maxWidth?: number) => {
73
+ x: number;
74
+ y: number;
75
+ width: number;
76
+ height: number;
77
+ text: string;
78
+ autoResize: boolean;
79
+ } | {
31
80
  x: number;
32
81
  y: number;
33
82
  width: number;
@@ -38,6 +87,7 @@ export declare const newFreeDrawElement: (opts: {
38
87
  type: "freedraw";
39
88
  points?: ExcalidrawFreeDrawElement["points"];
40
89
  simulatePressure: boolean;
90
+ strokeOptions?: ExcalidrawFreeDrawElement["strokeOptions"];
41
91
  pressures?: ExcalidrawFreeDrawElement["pressures"];
42
92
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawFreeDrawElement>;
43
93
  export declare const newLinearElement: (opts: {
@@ -1,26 +1,40 @@
1
1
  import { type GlobalPoint } from "@excalidraw/math";
2
- import type { AppState, StaticCanvasAppState, InteractiveCanvasAppState, ElementsPendingErasure, PendingExcalidrawElements } from "@excalidraw/excalidraw/types";
2
+ import type { AppState, StaticCanvasAppState, InteractiveCanvasAppState, ElementRenderOverrides } from "@excalidraw/excalidraw/types";
3
3
  import type { StaticCanvasRenderConfig, RenderableElementsMap, InteractiveCanvasRenderConfig } from "@excalidraw/excalidraw/scene/types";
4
- import type { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, ExcalidrawFreeDrawElement, ExcalidrawImageElement, ExcalidrawFrameLikeElement, NonDeletedSceneElementsMap, ElementsMap } from "./types";
4
+ import type { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, ExcalidrawFreeDrawElement, ExcalidrawImageElement, NonDeletedSceneElementsMap, ElementsMap } from "./types";
5
5
  import type { RoughCanvas } from "roughjs/bin/canvas";
6
- export declare const getRenderOpacity: (element: ExcalidrawElement, containingFrame: ExcalidrawFrameLikeElement | null, elementsPendingErasure: ElementsPendingErasure, pendingNodes: Readonly<PendingExcalidrawElements> | null, globalAlpha?: number) => number;
6
+ export type RenderPositionOffset = Readonly<{
7
+ x: number;
8
+ y: number;
9
+ }>;
10
+ /** Bound labels follow their container; a label's own offset is ignored. */
11
+ export declare const getElementRenderOffset: (element: ExcalidrawElement, elementsMap: ElementsMap, overrides: ElementRenderOverrides | undefined) => RenderPositionOffset | undefined;
12
+ export declare const getRenderElementWithPositionOverride: <TElement extends ExcalidrawElement>(element: TElement, positionOffset: RenderPositionOffset) => TElement;
13
+ export type ElementRenderState = Readonly<{
14
+ /** Alpha including frame opacity and pending erasure; selection dimming is separate. */
15
+ opacity: number;
16
+ offset: RenderPositionOffset;
17
+ }>;
18
+ /** Resolve visual state at the drawing boundary, preserving document cache keys. */
19
+ export declare const resolveElementRenderState: (element: ExcalidrawElement, elementsMap: ElementsMap, renderConfig: Pick<StaticCanvasRenderConfig, "elementRenderOverrides" | "elementsPendingErasure" | "pendingFlowchartNodes">, allElementsMap?: ElementsMap) => ElementRenderState;
7
20
  export interface ExcalidrawElementWithCanvas {
8
21
  element: ExcalidrawElement | ExcalidrawTextElement;
9
22
  canvas: HTMLCanvasElement;
10
23
  theme: AppState["theme"];
11
24
  scale: number;
12
- angle: number;
13
25
  zoomValue: AppState["zoom"]["value"];
14
26
  canvasOffsetX: number;
15
27
  canvasOffsetY: number;
16
- boundTextElementVersion: number | null;
17
28
  imageCrop: ExcalidrawImageElement["crop"] | null;
18
29
  containingFrameOpacity: number;
19
- boundTextCanvas: HTMLCanvasElement;
20
30
  }
21
31
  export declare const DEFAULT_LINK_SIZE = 14;
22
32
  export declare let elementWithCanvasCache: WeakMap<ExcalidrawElement, ExcalidrawElementWithCanvas>;
23
33
  export declare const clearRenderCache: () => void;
24
34
  export declare const renderSelectionElement: (element: NonDeletedExcalidrawElement, context: CanvasRenderingContext2D, appState: InteractiveCanvasAppState, selectionColor: InteractiveCanvasRenderConfig["selectionColor"]) => void;
25
- export declare const renderElement: (element: NonDeletedExcalidrawElement, elementsMap: RenderableElementsMap, allElementsMap: NonDeletedSceneElementsMap, rc: RoughCanvas, context: CanvasRenderingContext2D, renderConfig: StaticCanvasRenderConfig, appState: StaticCanvasAppState | InteractiveCanvasAppState) => void;
35
+ export declare const renderElement: (element: NonDeletedExcalidrawElement, elementsMap: RenderableElementsMap, allElementsMap: NonDeletedSceneElementsMap, rc: RoughCanvas, context: CanvasRenderingContext2D, renderConfig: StaticCanvasRenderConfig, appState: StaticCanvasAppState | InteractiveCanvasAppState, renderState?: Readonly<{
36
+ /** Alpha including frame opacity and pending erasure; selection dimming is separate. */
37
+ opacity: number;
38
+ offset: RenderPositionOffset;
39
+ }>) => void;
26
40
  export declare function getFreedrawOutlineAsSegments(element: ExcalidrawFreeDrawElement, points: [number, number][], elementsMap: ElementsMap): import("@excalidraw/math").LineSegment<GlobalPoint>[];
@@ -3,7 +3,7 @@ import type { PointerDownState } from "@excalidraw/excalidraw/types";
3
3
  import type { Scene } from "./Scene";
4
4
  import type { BoundingBox } from "./bounds";
5
5
  import type { MaybeTransformHandleType, TransformHandleDirection } from "./transformHandles";
6
- import type { ExcalidrawLinearElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, NonDeleted, ExcalidrawElement, ElementsMap } from "./types";
6
+ import type { ExcalidrawLinearElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, NonDeleted, ElementsMap } from "./types";
7
7
  export declare const transformElements: (originalElements: PointerDownState["originalElements"], transformHandleType: MaybeTransformHandleType, selectedElements: readonly NonDeletedExcalidrawElement[], scene: Scene, shouldRotateWithDiscreteAngle: boolean, shouldResizeFromCenter: boolean, shouldMaintainAspectRatio: boolean, pointerX: number, pointerY: number, centerX: number, centerY: number) => boolean;
8
8
  export declare const rescalePointsInElement: (element: NonDeletedExcalidrawElement, width: number, height: number, normalizePoints: boolean) => {
9
9
  points: LocalPoint[];
@@ -16,7 +16,7 @@ export declare const measureFontSizeFromWidth: (element: NonDeleted<ExcalidrawTe
16
16
  export declare const resizeSingleTextElement: (origElement: NonDeleted<ExcalidrawTextElement>, element: NonDeleted<ExcalidrawTextElement>, scene: Scene, transformHandleType: TransformHandleDirection, shouldResizeFromCenter: boolean, nextWidth: number, nextHeight: number) => void;
17
17
  export declare const getResizeOffsetXY: (transformHandleType: MaybeTransformHandleType, selectedElements: NonDeletedExcalidrawElement[], elementsMap: ElementsMap, x: number, y: number) => [number, number];
18
18
  export declare const getResizeArrowDirection: (transformHandleType: MaybeTransformHandleType, element: NonDeleted<ExcalidrawLinearElement>) => "origin" | "end";
19
- export declare const resizeSingleElement: (nextWidth: number, nextHeight: number, latestElement: ExcalidrawElement, origElement: ExcalidrawElement, originalElementsMap: ElementsMap, scene: Scene, handleDirection: TransformHandleDirection, { shouldInformMutation, shouldMaintainAspectRatio, shouldResizeFromCenter, }?: {
19
+ export declare const resizeSingleElement: (nextWidth: number, nextHeight: number, latestElement: NonDeletedExcalidrawElement, origElement: NonDeletedExcalidrawElement, originalElementsMap: ElementsMap, scene: Scene, handleDirection: TransformHandleDirection, { shouldInformMutation, shouldMaintainAspectRatio, shouldResizeFromCenter, }?: {
20
20
  shouldMaintainAspectRatio?: boolean;
21
21
  shouldResizeFromCenter?: boolean;
22
22
  shouldInformMutation?: boolean;
@@ -1,4 +1,4 @@
1
- import type { AppState, InteractiveCanvasAppState } from "@excalidraw/excalidraw/types";
1
+ import type { AppState, BoxSelectionMode, InteractiveCanvasAppState } from "@excalidraw/excalidraw/types";
2
2
  import { LinearElementEditor } from "./linearElementEditor";
3
3
  import type { ElementsMap, ElementsMapOrArray, ExcalidrawElement, NonDeleted, NonDeletedExcalidrawElement } from "./types";
4
4
  /**
@@ -8,8 +8,8 @@ import type { ElementsMap, ElementsMapOrArray, ExcalidrawElement, NonDeleted, No
8
8
  * @param selectedElements
9
9
  */
10
10
  export declare const excludeElementsInFramesFromSelection: <T extends ExcalidrawElement>(selectedElements: readonly T[]) => T[];
11
- export declare const getElementsWithinSelection: (elements: readonly NonDeletedExcalidrawElement[], selection: NonDeletedExcalidrawElement, elementsMap: ElementsMap, excludeElementsInFrames?: boolean) => NonDeletedExcalidrawElement[];
12
- export declare const getVisibleAndNonSelectedElements: (elements: readonly NonDeletedExcalidrawElement[], selectedElements: readonly NonDeletedExcalidrawElement[], appState: AppState, elementsMap: ElementsMap) => NonDeletedExcalidrawElement[];
11
+ export declare const getElementsWithinSelection: <T extends ExcalidrawElement>(elements: readonly T[], selection: ExcalidrawElement, elementsMap: ElementsMap, excludeElementsInFrames?: boolean, boxSelectionMode?: BoxSelectionMode) => T[];
12
+ export declare const getVisibleAndNonSelectedElements: <T extends NonDeletedExcalidrawElement>(elements: readonly T[], selectedElements: readonly ExcalidrawElement[], appState: AppState, elementsMap: ElementsMap) => T[];
13
13
  export declare const isSomeElementSelected: {
14
14
  (elements: readonly NonDeletedExcalidrawElement[], appState: Pick<AppState, "selectedElementIds">): boolean;
15
15
  clearCache(): void;
@@ -17,8 +17,8 @@ export declare const isSomeElementSelected: {
17
17
  export declare const getSelectedElements: (elements: ElementsMapOrArray, appState: Pick<InteractiveCanvasAppState, "selectedElementIds">, opts?: {
18
18
  includeBoundTextElement?: boolean;
19
19
  includeElementsInFrames?: boolean;
20
- }) => ExcalidrawElement[];
21
- export declare const getTargetElements: (elements: ElementsMapOrArray, appState: Pick<AppState, "selectedElementIds" | "editingTextElement" | "newElement">) => ExcalidrawElement[];
20
+ }) => NonDeletedExcalidrawElement[];
21
+ export declare const getTargetElements: (elements: ElementsMapOrArray, appState: Pick<AppState, "selectedElementIds" | "editingTextElement" | "newElement" | "activeTool">) => NonDeletedExcalidrawElement[] | import("./types").ExcalidrawTextElement[];
22
22
  /**
23
23
  * returns prevState's selectedElementids if no change from previous, so as to
24
24
  * retain reference identity for memoization
@@ -26,10 +26,10 @@ export declare const getTargetElements: (elements: ElementsMapOrArray, appState:
26
26
  export declare const makeNextSelectedElementIds: (nextSelectedElementIds: AppState["selectedElementIds"], prevState: Pick<AppState, "selectedElementIds">) => Readonly<{
27
27
  [id: string]: true;
28
28
  }>;
29
- export declare const getSelectionStateForElements: (targetElements: readonly ExcalidrawElement[], allElements: readonly NonDeletedExcalidrawElement[], appState: AppState) => {
29
+ export declare const getSelectionStateForElements: (targetElements: readonly NonDeletedExcalidrawElement[], allElements: readonly NonDeletedExcalidrawElement[], appState: AppState) => {
30
+ editingGroupId: AppState["editingGroupId"];
30
31
  selectedElementIds: AppState["selectedElementIds"];
31
32
  selectedGroupIds: AppState["selectedGroupIds"];
32
- editingGroupId: AppState["editingGroupId"];
33
33
  selectedLinearElement: LinearElementEditor | null;
34
34
  };
35
35
  /**
@@ -1,6 +1,6 @@
1
1
  import { type GeometricShape } from "@excalidraw/utils/shape";
2
2
  import { type LocalPoint } from "@excalidraw/math";
3
- import type { GlobalPoint } from "@excalidraw/math";
3
+ import type { GlobalPoint, Polygon } from "@excalidraw/math";
4
4
  import type { AppState, EmbedsValidationStatus } from "@excalidraw/excalidraw/types";
5
5
  import type { ElementShape, ElementShapes } from "@excalidraw/excalidraw/scene/types";
6
6
  import type { ExcalidrawElement, ExcalidrawSelectionElement, ExcalidrawLinearElement, ExcalidrawFreeDrawElement, ElementsMap, ExcalidrawLineElement } from "./types";
@@ -27,6 +27,11 @@ export declare class ShapeCache {
27
27
  } | null) => ((T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] | undefined : ElementShape | undefined) & {}) | (T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] : Drawable | null);
28
28
  }
29
29
  export declare const generateRoughOptions: (element: ExcalidrawElement, continuousPath?: boolean, isDarkMode?: boolean) => Options;
30
+ /**
31
+ * Returns the flattened fill contour of a freedraw loop in local, unrotated
32
+ * coordinates, following the rendered fill rather than the stroke outline.
33
+ */
34
+ export declare const getFreedrawFillPolygon: (element: ExcalidrawFreeDrawElement) => Polygon<LocalPoint>;
30
35
  export declare const generateLinearCollisionShape: (element: ExcalidrawLinearElement | ExcalidrawFreeDrawElement, elementsMap: ElementsMap) => {
31
36
  op: string;
32
37
  data: number[];
@@ -41,3 +46,24 @@ export declare const toggleLinePolygonState: (element: ExcalidrawLineElement, ne
41
46
  points: ExcalidrawLineElement["points"];
42
47
  } | null;
43
48
  export declare const getFreedrawOutlinePoints: (element: ExcalidrawFreeDrawElement) => [number, number][];
49
+ /**
50
+ * Upper bound on how far a freedraw stroke's ink reaches past its centerline
51
+ * points. Both stroke generators scale the stroke size by at most 1 (easing
52
+ * or pressure), so the size itself bounds the radius, except for
53
+ * perfect-freehand's short strokes: under 3px long, the start cap is drawn
54
+ * around the first point from an outline point of the last one (reaching
55
+ * sqrt(size² + 3²)), and a single point gets a synthetic neighbor 1px away.
56
+ */
57
+ export declare const getFreedrawMaxStrokeRadius: (element: ExcalidrawFreeDrawElement) => number;
58
+ /**
59
+ * The streamline-smoothed centerline the freedraw stroke is rendered
60
+ * around, in element-local coordinates. Boundary-sensitive consumers (e.g.
61
+ * bucket fill) should use this instead of `element.points`: raw input
62
+ * points can sit 20px+ apart and the rendered stroke is smoothed between
63
+ * them, so raw chords visibly deviate from what's on screen.
64
+ *
65
+ * Constant-width ("laser geometry") strokes technically smooth via
66
+ * `LaserPointer` instead; the perfect-freehand centerline with the same
67
+ * `streamline` is a close approximation the stroke width hides.
68
+ */
69
+ export declare const getFreedrawStrokeCenterPoints: (element: ExcalidrawFreeDrawElement) => [number, number][];
@@ -1,5 +1,11 @@
1
1
  import type { AppState, Offsets, Zoom } from "@excalidraw/excalidraw/types";
2
2
  import type { ElementsMap, ExcalidrawElement } from "./types";
3
+ export type VerticalResizeAnchor = "top" | "bottom" | "center";
4
+ /** Keeps the chosen edge or center fixed when an element's height changes. */
5
+ export declare const getPositionAfterHeightChange: (element: Pick<ExcalidrawElement, "x" | "y" | "height" | "angle">, nextHeight: number, anchor?: VerticalResizeAnchor) => {
6
+ x: number;
7
+ y: number;
8
+ };
3
9
  export declare const INVISIBLY_SMALL_ELEMENT_SIZE = 0.1;
4
10
  export declare const isInvisiblySmallElement: (element: ExcalidrawElement) => boolean;
5
11
  export declare const isElementInViewport: (element: ExcalidrawElement, width: number, height: number, viewTransformations: {
@@ -1,2 +1,12 @@
1
1
  import type { ExcalidrawElement } from "./types";
2
+ /**
3
+ * In theory, when we have text elements bound to a container, they
4
+ * should be right after the container element in the elements array.
5
+ * However, this is not guaranteed due to old and potential future bugs.
6
+ *
7
+ * This function sorts containers and their bound texts together. It prefers
8
+ * original z-index of container (i.e. it moves bound text elements after
9
+ * containers).
10
+ */
11
+ export declare const normalizeBoundElementsOrder: <T extends ExcalidrawElement>(elements: readonly T[]) => readonly T[];
2
12
  export declare const normalizeElementOrder: (elements: readonly ExcalidrawElement[]) => readonly ExcalidrawElement[];