@excalidraw/excalidraw 0.18.0-c6f8ef9 → 0.18.0-d1f3982

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 (392) hide show
  1. package/dist/dev/{chunk-QF5FRM6O.js → chunk-LLUJPE5U.js} +48 -26
  2. package/dist/dev/chunk-LLUJPE5U.js.map +7 -0
  3. package/dist/dev/chunk-PMQWN2AA.js +69 -0
  4. package/dist/dev/chunk-PMQWN2AA.js.map +7 -0
  5. package/dist/dev/{chunk-CRKRRBMD.js → chunk-QLBLBAF4.js} +50 -58
  6. package/dist/dev/chunk-QLBLBAF4.js.map +7 -0
  7. package/dist/dev/data/{image-IWGLHPIX.js → image-WN3C5VZT.js} +2 -2
  8. package/dist/dev/index.css +989 -592
  9. package/dist/dev/index.css.map +3 -3
  10. package/dist/dev/index.js +5517 -3452
  11. package/dist/dev/index.js.map +4 -4
  12. package/dist/dev/locales/{ar-SA-XORAP2EK.js → ar-SA-USQAA427.js} +299 -142
  13. package/dist/dev/locales/ar-SA-USQAA427.js.map +7 -0
  14. package/dist/dev/locales/{az-AZ-NAUU3Z4Y.js → az-AZ-CVQRXULV.js} +240 -83
  15. package/dist/dev/locales/az-AZ-CVQRXULV.js.map +7 -0
  16. package/dist/dev/locales/{bg-BG-AAABLFCY.js → bg-BG-E4I2JVOQ.js} +228 -71
  17. package/dist/dev/locales/bg-BG-E4I2JVOQ.js.map +7 -0
  18. package/dist/dev/locales/{bn-BD-PM4AC5WG.js → bn-BD-O55ROP2R.js} +208 -51
  19. package/dist/dev/locales/bn-BD-O55ROP2R.js.map +7 -0
  20. package/dist/dev/locales/bn-IN-OL7OUKTP.js +743 -0
  21. package/dist/dev/locales/bn-IN-OL7OUKTP.js.map +7 -0
  22. package/dist/dev/locales/{ca-ES-YNNMFRQX.js → ca-ES-73KY52DM.js} +274 -117
  23. package/dist/dev/locales/ca-ES-73KY52DM.js.map +7 -0
  24. package/dist/dev/locales/{cs-CZ-DGZA5IKG.js → cs-CZ-2YGHPQ24.js} +228 -71
  25. package/dist/dev/locales/cs-CZ-2YGHPQ24.js.map +7 -0
  26. package/dist/dev/locales/{da-DK-N76F4QAJ.js → da-DK-OEIZIPJU.js} +297 -140
  27. package/dist/dev/locales/da-DK-OEIZIPJU.js.map +7 -0
  28. package/dist/dev/locales/de-CH-4GJTW23D.js +743 -0
  29. package/dist/dev/locales/de-CH-4GJTW23D.js.map +7 -0
  30. package/dist/dev/locales/{de-DE-DMRXZ2SZ.js → de-DE-YRH6WMM5.js} +198 -41
  31. package/dist/dev/locales/de-DE-YRH6WMM5.js.map +7 -0
  32. package/dist/dev/locales/{el-GR-HIKPLEXI.js → el-GR-W7S64QNM.js} +273 -116
  33. package/dist/dev/locales/el-GR-W7S64QNM.js.map +7 -0
  34. package/dist/dev/locales/{en-SMAPCEOQ.js → en-YSPYSBUR.js} +4 -2
  35. package/dist/dev/locales/{es-ES-AQYVXC32.js → es-ES-7JEN5PTZ.js} +211 -54
  36. package/dist/dev/locales/es-ES-7JEN5PTZ.js.map +7 -0
  37. package/dist/dev/locales/{eu-ES-3TOEU5DE.js → eu-ES-HQNHU6VR.js} +209 -52
  38. package/dist/dev/locales/eu-ES-HQNHU6VR.js.map +7 -0
  39. package/dist/dev/locales/{fa-IR-527GAKUP.js → fa-IR-IN6XOPA6.js} +285 -128
  40. package/dist/dev/locales/fa-IR-IN6XOPA6.js.map +7 -0
  41. package/dist/dev/locales/{fi-FI-M3WLVDFP.js → fi-FI-5BAAYJDZ.js} +239 -82
  42. package/dist/dev/locales/fi-FI-5BAAYJDZ.js.map +7 -0
  43. package/dist/dev/locales/{fr-FR-YE4VDJFI.js → fr-FR-KCXBY2R4.js} +202 -45
  44. package/dist/dev/locales/fr-FR-KCXBY2R4.js.map +7 -0
  45. package/dist/dev/locales/{gl-ES-KMXUYGUN.js → gl-ES-5OPGWS6N.js} +211 -54
  46. package/dist/dev/locales/gl-ES-5OPGWS6N.js.map +7 -0
  47. package/dist/dev/locales/he-IL-3A6ZWK6L.js +743 -0
  48. package/dist/dev/locales/he-IL-3A6ZWK6L.js.map +7 -0
  49. package/dist/dev/locales/hi-IN-HZTBH6EG.js +743 -0
  50. package/dist/dev/locales/hi-IN-HZTBH6EG.js.map +7 -0
  51. package/dist/dev/locales/{hu-HU-VIYZI3X4.js → hu-HU-52IRZEAZ.js} +237 -80
  52. package/dist/dev/locales/hu-HU-52IRZEAZ.js.map +7 -0
  53. package/dist/dev/locales/{id-ID-22TWZNLA.js → id-ID-W6HBGXTS.js} +244 -87
  54. package/dist/dev/locales/id-ID-W6HBGXTS.js.map +7 -0
  55. package/dist/dev/locales/{it-IT-MDEQ2SG3.js → it-IT-AV75ICYT.js} +201 -44
  56. package/dist/dev/locales/it-IT-AV75ICYT.js.map +7 -0
  57. package/dist/dev/locales/{ja-JP-K2DI4W6B.js → ja-JP-SS4G3ZXF.js} +246 -89
  58. package/dist/dev/locales/ja-JP-SS4G3ZXF.js.map +7 -0
  59. package/dist/dev/locales/{kaa-6BPSNM3R.js → kaa-Y5BBB3IW.js} +201 -44
  60. package/dist/dev/locales/kaa-Y5BBB3IW.js.map +7 -0
  61. package/dist/dev/locales/{kab-KAB-2S7ZURK7.js → kab-KAB-KDVZQXBT.js} +209 -52
  62. package/dist/dev/locales/kab-KAB-KDVZQXBT.js.map +7 -0
  63. package/dist/dev/locales/{kk-KZ-UJPYGRQQ.js → kk-KZ-762YODLJ.js} +174 -17
  64. package/dist/dev/locales/kk-KZ-762YODLJ.js.map +7 -0
  65. package/dist/dev/locales/{km-KH-M5T5JKUE.js → km-KH-K2TE5MIK.js} +197 -40
  66. package/dist/dev/locales/km-KH-K2TE5MIK.js.map +7 -0
  67. package/dist/dev/locales/{ko-KR-RQX37SNF.js → ko-KR-75RUMBCO.js} +217 -60
  68. package/dist/dev/locales/ko-KR-75RUMBCO.js.map +7 -0
  69. package/dist/dev/locales/{ku-TR-5XJDIERL.js → ku-TR-E6DJ6LYM.js} +197 -40
  70. package/dist/dev/locales/ku-TR-E6DJ6LYM.js.map +7 -0
  71. package/dist/dev/locales/{lt-LT-MGUBX6CA.js → lt-LT-BYS5DA45.js} +178 -21
  72. package/dist/dev/locales/lt-LT-BYS5DA45.js.map +7 -0
  73. package/dist/dev/locales/{lv-LV-MD7N5VHD.js → lv-LV-SPQ2VWX3.js} +195 -38
  74. package/dist/dev/locales/lv-LV-SPQ2VWX3.js.map +7 -0
  75. package/dist/dev/locales/{mr-IN-4XWMNGQC.js → mr-IN-2HLK6LUA.js} +203 -46
  76. package/dist/dev/locales/mr-IN-2HLK6LUA.js.map +7 -0
  77. package/dist/dev/locales/{my-MM-O4Z74GN5.js → my-MM-P2LR44WR.js} +180 -23
  78. package/dist/dev/locales/my-MM-P2LR44WR.js.map +7 -0
  79. package/dist/dev/locales/{nb-NO-BMB73KRH.js → nb-NO-7YZHFFVS.js} +219 -62
  80. package/dist/dev/locales/nb-NO-7YZHFFVS.js.map +7 -0
  81. package/dist/dev/locales/{nl-NL-F2257BLQ.js → nl-NL-TF2OVIKN.js} +217 -60
  82. package/dist/dev/locales/nl-NL-TF2OVIKN.js.map +7 -0
  83. package/dist/dev/locales/{nn-NO-NCORG7TS.js → nn-NO-2BWEL2IS.js} +200 -43
  84. package/dist/dev/locales/nn-NO-2BWEL2IS.js.map +7 -0
  85. package/dist/dev/locales/{oc-FR-ATFBDMF6.js → oc-FR-5JYIFGLE.js} +212 -55
  86. package/dist/dev/locales/oc-FR-5JYIFGLE.js.map +7 -0
  87. package/dist/dev/locales/{pa-IN-D2I375G4.js → pa-IN-KBBGER76.js} +189 -32
  88. package/dist/dev/locales/pa-IN-KBBGER76.js.map +7 -0
  89. package/dist/dev/locales/{percentages-YKFLWNK2.js → percentages-2RAYDWNS.js} +2 -2
  90. package/dist/dev/locales/{pl-PL-YJHOWAAW.js → pl-PL-BWZ2X734.js} +213 -56
  91. package/dist/dev/locales/pl-PL-BWZ2X734.js.map +7 -0
  92. package/dist/dev/locales/{pt-BR-APOPYZJ7.js → pt-BR-ERVIQI63.js} +236 -79
  93. package/dist/dev/locales/pt-BR-ERVIQI63.js.map +7 -0
  94. package/dist/dev/locales/pt-PT-ZNJ5NB5S.js +743 -0
  95. package/dist/dev/locales/pt-PT-ZNJ5NB5S.js.map +7 -0
  96. package/dist/dev/locales/{ro-RO-L575VRQA.js → ro-RO-UYNXGUB7.js} +202 -45
  97. package/dist/dev/locales/ro-RO-UYNXGUB7.js.map +7 -0
  98. package/dist/dev/locales/{ru-RU-BLG6HZG5.js → ru-RU-F7LPIMGQ.js} +252 -95
  99. package/dist/dev/locales/ru-RU-F7LPIMGQ.js.map +7 -0
  100. package/dist/dev/locales/si-LK-5GF2DJUH.js +743 -0
  101. package/dist/dev/locales/si-LK-5GF2DJUH.js.map +7 -0
  102. package/dist/dev/locales/{sk-SK-DY6IPO5U.js → sk-SK-H6WE7IJX.js} +199 -42
  103. package/dist/dev/locales/sk-SK-H6WE7IJX.js.map +7 -0
  104. package/dist/dev/locales/{sl-SI-5DZSRA47.js → sl-SI-4PJ6LBI7.js} +196 -39
  105. package/dist/dev/locales/sl-SI-4PJ6LBI7.js.map +7 -0
  106. package/dist/dev/locales/{sv-SE-V32YHALQ.js → sv-SE-E5VQLCRE.js} +201 -44
  107. package/dist/dev/locales/sv-SE-E5VQLCRE.js.map +7 -0
  108. package/dist/dev/locales/{ta-IN-5JRAGQAO.js → ta-IN-2YWIVLKF.js} +256 -99
  109. package/dist/dev/locales/ta-IN-2YWIVLKF.js.map +7 -0
  110. package/dist/dev/locales/{th-TH-55ACRHDJ.js → th-TH-IV7RUTDK.js} +288 -131
  111. package/dist/dev/locales/th-TH-IV7RUTDK.js.map +7 -0
  112. package/dist/dev/locales/{tr-TR-7QYBXDBO.js → tr-TR-LEQWIQH7.js} +256 -99
  113. package/dist/dev/locales/tr-TR-LEQWIQH7.js.map +7 -0
  114. package/dist/dev/locales/{uk-UA-TJS2TMRH.js → uk-UA-DWVOQPTB.js} +228 -71
  115. package/dist/dev/locales/uk-UA-DWVOQPTB.js.map +7 -0
  116. package/dist/dev/locales/{si-LK-KT7GGO6D.js → uz-UZ-CKXQ3QKG.js} +211 -54
  117. package/dist/dev/locales/uz-UZ-CKXQ3QKG.js.map +7 -0
  118. package/dist/dev/locales/vi-VN-3P6DZOGS.js +743 -0
  119. package/dist/dev/locales/vi-VN-3P6DZOGS.js.map +7 -0
  120. package/dist/dev/locales/{zh-CN-4MXUOFTH.js → zh-CN-XXVG53TQ.js} +198 -41
  121. package/dist/dev/locales/zh-CN-XXVG53TQ.js.map +7 -0
  122. package/dist/dev/locales/{zh-HK-RBTGIU3U.js → zh-HK-JCHGKEUE.js} +174 -17
  123. package/dist/dev/locales/zh-HK-JCHGKEUE.js.map +7 -0
  124. package/dist/dev/locales/{zh-TW-U5VF4CCU.js → zh-TW-ARVT7RZU.js} +203 -46
  125. package/dist/dev/locales/zh-TW-ARVT7RZU.js.map +7 -0
  126. package/dist/prod/chunk-6GUG5R24.js +4 -0
  127. package/dist/prod/chunk-KRJFZ5JQ.js +1 -0
  128. package/dist/prod/chunk-RSFMSEP5.js +12 -0
  129. package/dist/prod/data/{image-4SM4COIL.js → image-AQDM7CNH.js} +1 -1
  130. package/dist/prod/index.css +1 -1
  131. package/dist/prod/index.js +18 -18
  132. package/dist/prod/locales/ar-SA-F62BVQMB.js +8 -0
  133. package/dist/prod/locales/az-AZ-7PGSKYOB.js +1 -0
  134. package/dist/prod/locales/bg-BG-AAEXMUQ4.js +5 -0
  135. package/dist/prod/locales/bn-BD-ONOFQYIQ.js +3 -0
  136. package/dist/prod/locales/bn-IN-YT3I2M3F.js +3 -0
  137. package/dist/prod/locales/ca-ES-GG4YH2FN.js +8 -0
  138. package/dist/prod/locales/cs-CZ-IS5VTBOP.js +7 -0
  139. package/dist/prod/locales/da-DK-VPQ2KWAY.js +2 -0
  140. package/dist/prod/locales/de-CH-G4Y2G6IS.js +7 -0
  141. package/dist/prod/locales/de-DE-RAT2LIDI.js +7 -0
  142. package/dist/prod/locales/el-GR-DNJB2AZO.js +7 -0
  143. package/dist/prod/locales/en-SFRQHD7K.js +1 -0
  144. package/dist/prod/locales/es-ES-IMTENLBU.js +7 -0
  145. package/dist/prod/locales/eu-ES-XLOS36YS.js +7 -0
  146. package/dist/prod/locales/fa-IR-J6Z2YOGX.js +9 -0
  147. package/dist/prod/locales/fi-FI-B2IQ7SBP.js +6 -0
  148. package/dist/prod/locales/fr-FR-N5BRDCMI.js +12 -0
  149. package/dist/prod/locales/gl-ES-BOYALFRN.js +6 -0
  150. package/dist/prod/locales/he-IL-H7M7HGY5.js +8 -0
  151. package/dist/prod/locales/hi-IN-7AB5CA2Q.js +3 -0
  152. package/dist/prod/locales/hu-HU-ZZM7UJLP.js +3 -0
  153. package/dist/prod/locales/id-ID-RZ7JNCXA.js +8 -0
  154. package/dist/prod/locales/it-IT-ZX7HN56D.js +8 -0
  155. package/dist/prod/locales/ja-JP-NBNBUHIR.js +7 -0
  156. package/dist/prod/locales/kaa-QWYSGEM7.js +1 -0
  157. package/dist/prod/locales/kab-KAB-Q3HBKQ5I.js +4 -0
  158. package/dist/prod/locales/kk-KZ-HF2NTCRX.js +1 -0
  159. package/dist/prod/locales/km-KH-CN6HHF5U.js +7 -0
  160. package/dist/prod/locales/ko-KR-SJQMUXM7.js +5 -0
  161. package/dist/prod/locales/ku-TR-VM4BHTPC.js +6 -0
  162. package/dist/prod/locales/lt-LT-QIWZQ7AG.js +3 -0
  163. package/dist/prod/locales/lv-LV-YQFCB4WZ.js +4 -0
  164. package/dist/prod/locales/mr-IN-GR2ZJPSQ.js +9 -0
  165. package/dist/prod/locales/my-MM-M5XJDJQ2.js +1 -0
  166. package/dist/prod/locales/nb-NO-2RU2YF7H.js +8 -0
  167. package/dist/prod/locales/nl-NL-MUHXDQFK.js +7 -0
  168. package/dist/prod/locales/nn-NO-72RCA552.js +4 -0
  169. package/dist/prod/locales/oc-FR-65ITQYQ2.js +4 -0
  170. package/dist/prod/locales/pa-IN-WESENMFH.js +4 -0
  171. package/dist/prod/locales/percentages-OEPNEGCM.js +1 -0
  172. package/dist/prod/locales/pl-PL-7C4NGVUA.js +12 -0
  173. package/dist/prod/locales/pt-BR-QH23C2IX.js +6 -0
  174. package/dist/prod/locales/pt-PT-O5XBATXI.js +8 -0
  175. package/dist/prod/locales/ro-RO-QHCHEGM5.js +12 -0
  176. package/dist/prod/locales/ru-RU-FUMQ2LLB.js +6 -0
  177. package/dist/prod/locales/si-LK-JYUINGNN.js +1 -0
  178. package/dist/prod/locales/sk-SK-R25O52BS.js +7 -0
  179. package/dist/prod/locales/sl-SI-5KPVX4FS.js +6 -0
  180. package/dist/prod/locales/sv-SE-MVMXV6O4.js +8 -0
  181. package/dist/prod/locales/ta-IN-A32FQB4D.js +6 -0
  182. package/dist/prod/locales/th-TH-CXMWNVBY.js +1 -0
  183. package/dist/prod/locales/tr-TR-YHFI3W2D.js +4 -0
  184. package/dist/prod/locales/uk-UA-UTJIIKT5.js +6 -0
  185. package/dist/prod/locales/uz-UZ-H4EGTR7D.js +1 -0
  186. package/dist/prod/locales/vi-VN-XBV2ESZM.js +7 -0
  187. package/dist/prod/locales/zh-CN-CKCJ4HAO.js +11 -0
  188. package/dist/prod/locales/zh-HK-ISASRRMF.js +1 -0
  189. package/dist/prod/locales/zh-TW-KYRW5V3R.js +9 -0
  190. package/dist/types/common/src/constants.d.ts +18 -15
  191. package/dist/types/common/src/editorInterface.d.ts +34 -0
  192. package/dist/types/common/src/index.d.ts +1 -0
  193. package/dist/types/common/src/utils.d.ts +2 -1
  194. package/dist/types/element/src/bounds.d.ts +1 -1
  195. package/dist/types/element/src/delta.d.ts +0 -1
  196. package/dist/types/element/src/index.d.ts +1 -0
  197. package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
  198. package/dist/types/element/src/renderElement.d.ts +4 -1
  199. package/dist/types/element/src/resizeTest.d.ts +5 -4
  200. package/dist/types/element/src/textElement.d.ts +1 -1
  201. package/dist/types/element/src/transformHandles.d.ts +5 -4
  202. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +21 -9
  203. package/dist/types/excalidraw/actions/actionBoundText.d.ts +14 -6
  204. package/dist/types/excalidraw/actions/actionCanvas.d.ts +94 -41
  205. package/dist/types/excalidraw/actions/actionClipboard.d.ts +42 -18
  206. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +7 -3
  207. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +22 -10
  208. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +1 -1
  209. package/dist/types/excalidraw/actions/actionElementLink.d.ts +7 -3
  210. package/dist/types/excalidraw/actions/actionElementLock.d.ts +14 -6
  211. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +7 -3
  212. package/dist/types/excalidraw/actions/actionExport.d.ts +63 -27
  213. package/dist/types/excalidraw/actions/actionFinalize.d.ts +14 -6
  214. package/dist/types/excalidraw/actions/actionFrame.d.ts +28 -12
  215. package/dist/types/excalidraw/actions/actionGroup.d.ts +14 -6
  216. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +8 -4
  217. package/dist/types/excalidraw/actions/actionLink.d.ts +5 -1
  218. package/dist/types/excalidraw/actions/actionMenu.d.ts +7 -369
  219. package/dist/types/excalidraw/actions/actionNavigate.d.ts +14 -6
  220. package/dist/types/excalidraw/actions/actionProperties.d.ts +122 -53
  221. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +7 -3
  222. package/dist/types/excalidraw/actions/actionStyles.d.ts +7 -3
  223. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +7 -3
  224. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +7 -3
  225. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +7 -3
  226. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +7 -3
  227. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +7 -3
  228. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +7 -3
  229. package/dist/types/excalidraw/actions/index.d.ts +2 -2
  230. package/dist/types/excalidraw/actions/types.d.ts +1 -1
  231. package/dist/types/excalidraw/appState.d.ts +5 -1
  232. package/dist/types/excalidraw/clipboard.d.ts +64 -1
  233. package/dist/types/excalidraw/components/Actions.d.ts +17 -3
  234. package/dist/types/excalidraw/components/App.d.ts +25 -21
  235. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
  236. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
  237. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
  238. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  239. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +1 -1
  240. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
  241. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
  242. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  243. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  244. package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
  245. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
  246. package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
  247. package/dist/types/excalidraw/components/MobileToolBar.d.ts +11 -0
  248. package/dist/types/excalidraw/components/Popover.d.ts +2 -1
  249. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -0
  250. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -2
  251. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  252. package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
  253. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +3 -2
  254. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +4 -2
  255. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +2 -1
  256. package/dist/types/excalidraw/components/icons.d.ts +5 -0
  257. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +13 -1
  258. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +0 -3
  259. package/dist/types/excalidraw/components/shapes.d.ts +129 -1
  260. package/dist/types/excalidraw/data/blob.d.ts +3 -7
  261. package/dist/types/excalidraw/data/types.d.ts +4 -1
  262. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  263. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
  264. package/dist/types/excalidraw/index.d.ts +2 -3
  265. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +1 -1
  266. package/dist/types/excalidraw/scene/types.d.ts +3 -3
  267. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  268. package/dist/types/excalidraw/types.d.ts +18 -15
  269. package/dist/types/math/src/segment.d.ts +1 -0
  270. package/package.json +5 -5
  271. package/dist/dev/chunk-CRKRRBMD.js.map +0 -7
  272. package/dist/dev/chunk-MFAYKRVR.js +0 -66
  273. package/dist/dev/chunk-MFAYKRVR.js.map +0 -7
  274. package/dist/dev/chunk-QF5FRM6O.js.map +0 -7
  275. package/dist/dev/locales/ar-SA-XORAP2EK.js.map +0 -7
  276. package/dist/dev/locales/az-AZ-NAUU3Z4Y.js.map +0 -7
  277. package/dist/dev/locales/bg-BG-AAABLFCY.js.map +0 -7
  278. package/dist/dev/locales/bn-BD-PM4AC5WG.js.map +0 -7
  279. package/dist/dev/locales/ca-ES-YNNMFRQX.js.map +0 -7
  280. package/dist/dev/locales/cs-CZ-DGZA5IKG.js.map +0 -7
  281. package/dist/dev/locales/da-DK-N76F4QAJ.js.map +0 -7
  282. package/dist/dev/locales/de-DE-DMRXZ2SZ.js.map +0 -7
  283. package/dist/dev/locales/el-GR-HIKPLEXI.js.map +0 -7
  284. package/dist/dev/locales/es-ES-AQYVXC32.js.map +0 -7
  285. package/dist/dev/locales/eu-ES-3TOEU5DE.js.map +0 -7
  286. package/dist/dev/locales/fa-IR-527GAKUP.js.map +0 -7
  287. package/dist/dev/locales/fi-FI-M3WLVDFP.js.map +0 -7
  288. package/dist/dev/locales/fr-FR-YE4VDJFI.js.map +0 -7
  289. package/dist/dev/locales/gl-ES-KMXUYGUN.js.map +0 -7
  290. package/dist/dev/locales/he-IL-4MU5N22B.js +0 -586
  291. package/dist/dev/locales/he-IL-4MU5N22B.js.map +0 -7
  292. package/dist/dev/locales/hi-IN-ZHZNZWFC.js +0 -586
  293. package/dist/dev/locales/hi-IN-ZHZNZWFC.js.map +0 -7
  294. package/dist/dev/locales/hu-HU-VIYZI3X4.js.map +0 -7
  295. package/dist/dev/locales/id-ID-22TWZNLA.js.map +0 -7
  296. package/dist/dev/locales/it-IT-MDEQ2SG3.js.map +0 -7
  297. package/dist/dev/locales/ja-JP-K2DI4W6B.js.map +0 -7
  298. package/dist/dev/locales/kaa-6BPSNM3R.js.map +0 -7
  299. package/dist/dev/locales/kab-KAB-2S7ZURK7.js.map +0 -7
  300. package/dist/dev/locales/kk-KZ-UJPYGRQQ.js.map +0 -7
  301. package/dist/dev/locales/km-KH-M5T5JKUE.js.map +0 -7
  302. package/dist/dev/locales/ko-KR-RQX37SNF.js.map +0 -7
  303. package/dist/dev/locales/ku-TR-5XJDIERL.js.map +0 -7
  304. package/dist/dev/locales/lt-LT-MGUBX6CA.js.map +0 -7
  305. package/dist/dev/locales/lv-LV-MD7N5VHD.js.map +0 -7
  306. package/dist/dev/locales/mr-IN-4XWMNGQC.js.map +0 -7
  307. package/dist/dev/locales/my-MM-O4Z74GN5.js.map +0 -7
  308. package/dist/dev/locales/nb-NO-BMB73KRH.js.map +0 -7
  309. package/dist/dev/locales/nl-NL-F2257BLQ.js.map +0 -7
  310. package/dist/dev/locales/nn-NO-NCORG7TS.js.map +0 -7
  311. package/dist/dev/locales/oc-FR-ATFBDMF6.js.map +0 -7
  312. package/dist/dev/locales/pa-IN-D2I375G4.js.map +0 -7
  313. package/dist/dev/locales/pl-PL-YJHOWAAW.js.map +0 -7
  314. package/dist/dev/locales/pt-BR-APOPYZJ7.js.map +0 -7
  315. package/dist/dev/locales/pt-PT-W56WCN7P.js +0 -586
  316. package/dist/dev/locales/pt-PT-W56WCN7P.js.map +0 -7
  317. package/dist/dev/locales/ro-RO-L575VRQA.js.map +0 -7
  318. package/dist/dev/locales/ru-RU-BLG6HZG5.js.map +0 -7
  319. package/dist/dev/locales/si-LK-KT7GGO6D.js.map +0 -7
  320. package/dist/dev/locales/sk-SK-DY6IPO5U.js.map +0 -7
  321. package/dist/dev/locales/sl-SI-5DZSRA47.js.map +0 -7
  322. package/dist/dev/locales/sv-SE-V32YHALQ.js.map +0 -7
  323. package/dist/dev/locales/ta-IN-5JRAGQAO.js.map +0 -7
  324. package/dist/dev/locales/th-TH-55ACRHDJ.js.map +0 -7
  325. package/dist/dev/locales/tr-TR-7QYBXDBO.js.map +0 -7
  326. package/dist/dev/locales/uk-UA-TJS2TMRH.js.map +0 -7
  327. package/dist/dev/locales/vi-VN-Y5CQ2EKQ.js +0 -586
  328. package/dist/dev/locales/vi-VN-Y5CQ2EKQ.js.map +0 -7
  329. package/dist/dev/locales/zh-CN-4MXUOFTH.js.map +0 -7
  330. package/dist/dev/locales/zh-HK-RBTGIU3U.js.map +0 -7
  331. package/dist/dev/locales/zh-TW-U5VF4CCU.js.map +0 -7
  332. package/dist/prod/chunk-HHV2PJKY.js +0 -4
  333. package/dist/prod/chunk-I4UNSFV6.js +0 -12
  334. package/dist/prod/chunk-Z3N5DIM6.js +0 -1
  335. package/dist/prod/locales/ar-SA-G6X2FPQ2.js +0 -10
  336. package/dist/prod/locales/az-AZ-76LH7QW2.js +0 -1
  337. package/dist/prod/locales/bg-BG-XCXSNQG7.js +0 -5
  338. package/dist/prod/locales/bn-BD-2XOGV67Q.js +0 -5
  339. package/dist/prod/locales/ca-ES-6MX7JW3Y.js +0 -8
  340. package/dist/prod/locales/cs-CZ-2BRQDIVT.js +0 -11
  341. package/dist/prod/locales/da-DK-5WZEPLOC.js +0 -5
  342. package/dist/prod/locales/de-DE-XR44H4JA.js +0 -8
  343. package/dist/prod/locales/el-GR-BZB4AONW.js +0 -10
  344. package/dist/prod/locales/en-TYY6KWIJ.js +0 -1
  345. package/dist/prod/locales/es-ES-U4NZUMDT.js +0 -9
  346. package/dist/prod/locales/eu-ES-A7QVB2H4.js +0 -11
  347. package/dist/prod/locales/fa-IR-HGAKTJCU.js +0 -8
  348. package/dist/prod/locales/fi-FI-Z5N7JZ37.js +0 -6
  349. package/dist/prod/locales/fr-FR-RHASNOE6.js +0 -9
  350. package/dist/prod/locales/gl-ES-HMX3MZ6V.js +0 -10
  351. package/dist/prod/locales/he-IL-6SHJWFNN.js +0 -10
  352. package/dist/prod/locales/hi-IN-IWLTKZ5I.js +0 -4
  353. package/dist/prod/locales/hu-HU-A5ZG7DT2.js +0 -7
  354. package/dist/prod/locales/id-ID-SAP4L64H.js +0 -10
  355. package/dist/prod/locales/it-IT-JPQ66NNP.js +0 -11
  356. package/dist/prod/locales/ja-JP-DBVTYXUO.js +0 -8
  357. package/dist/prod/locales/kaa-6HZHGXH3.js +0 -1
  358. package/dist/prod/locales/kab-KAB-ZGHBKWFO.js +0 -8
  359. package/dist/prod/locales/kk-KZ-P5N5QNE5.js +0 -1
  360. package/dist/prod/locales/km-KH-HSX4SM5Z.js +0 -11
  361. package/dist/prod/locales/ko-KR-MTYHY66A.js +0 -9
  362. package/dist/prod/locales/ku-TR-6OUDTVRD.js +0 -9
  363. package/dist/prod/locales/lt-LT-XHIRWOB4.js +0 -3
  364. package/dist/prod/locales/lv-LV-5QDEKY6T.js +0 -7
  365. package/dist/prod/locales/mr-IN-CRQNXWMA.js +0 -13
  366. package/dist/prod/locales/my-MM-5M5IBNSE.js +0 -1
  367. package/dist/prod/locales/nb-NO-T6EIAALU.js +0 -10
  368. package/dist/prod/locales/nl-NL-IS3SIHDZ.js +0 -8
  369. package/dist/prod/locales/nn-NO-6E72VCQL.js +0 -8
  370. package/dist/prod/locales/oc-FR-POXYY2M6.js +0 -8
  371. package/dist/prod/locales/pa-IN-N4M65BXN.js +0 -4
  372. package/dist/prod/locales/percentages-BXMCSKIN.js +0 -1
  373. package/dist/prod/locales/pl-PL-T2D74RX3.js +0 -9
  374. package/dist/prod/locales/pt-BR-5N22H2LF.js +0 -9
  375. package/dist/prod/locales/pt-PT-UZXXM6DQ.js +0 -9
  376. package/dist/prod/locales/ro-RO-JPDTUUEW.js +0 -11
  377. package/dist/prod/locales/ru-RU-B4JR7IUQ.js +0 -9
  378. package/dist/prod/locales/si-LK-N5RQ5JYF.js +0 -1
  379. package/dist/prod/locales/sk-SK-C5VTKIMK.js +0 -6
  380. package/dist/prod/locales/sl-SI-NN7IZMDC.js +0 -6
  381. package/dist/prod/locales/sv-SE-XGPEYMSR.js +0 -10
  382. package/dist/prod/locales/ta-IN-2NMHFXQM.js +0 -9
  383. package/dist/prod/locales/th-TH-HPSO5L25.js +0 -2
  384. package/dist/prod/locales/tr-TR-DEFEU3FU.js +0 -7
  385. package/dist/prod/locales/uk-UA-QMV73CPH.js +0 -6
  386. package/dist/prod/locales/vi-VN-M7AON7JQ.js +0 -5
  387. package/dist/prod/locales/zh-CN-LNUGB5OW.js +0 -10
  388. package/dist/prod/locales/zh-HK-E62DVLB3.js +0 -1
  389. package/dist/prod/locales/zh-TW-RAJ6MFWO.js +0 -9
  390. /package/dist/dev/data/{image-IWGLHPIX.js.map → image-WN3C5VZT.js.map} +0 -0
  391. /package/dist/dev/locales/{en-SMAPCEOQ.js.map → en-YSPYSBUR.js.map} +0 -0
  392. /package/dist/dev/locales/{percentages-YKFLWNK2.js.map → percentages-2RAYDWNS.js.map} +0 -0
@@ -3,7 +3,7 @@ import type { ExcalidrawElement, NonDeleted } from "@excalidraw/element/types";
3
3
  import type { SvgCache } from "../hooks/useLibraryItemSvg";
4
4
  import type { LibraryItem } from "../types";
5
5
  import type { ReactNode } from "react";
6
- type LibraryOrPendingItem = (LibraryItem | /* pending library item */ {
6
+ type LibraryOrPendingItem = readonly (LibraryItem | /* pending library item */ {
7
7
  id: null;
8
8
  elements: readonly NonDeleted<ExcalidrawElement>[];
9
9
  })[];
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import type { NonDeletedExcalidrawElement } from "@excalidraw/element/types";
3
3
  import type { ActionManager } from "../actions/manager";
4
- import type { AppClassProperties, AppProps, AppState, Device, ExcalidrawProps, UIAppState } from "../types";
4
+ import type { AppClassProperties, AppProps, AppState, UIAppState } from "../types";
5
5
  import type { JSX } from "react";
6
6
  type MobileMenuProps = {
7
7
  appState: UIAppState;
@@ -10,16 +10,14 @@ type MobileMenuProps = {
10
10
  renderImageExportDialog: () => React.ReactNode;
11
11
  setAppState: React.Component<any, AppState>["setState"];
12
12
  elements: readonly NonDeletedExcalidrawElement[];
13
- onLockToggle: () => void;
14
13
  onHandToolToggle: () => void;
15
14
  onPenModeToggle: AppClassProperties["togglePenMode"];
16
15
  renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
17
- renderCustomStats?: ExcalidrawProps["renderCustomStats"];
16
+ renderTopLeftUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
18
17
  renderSidebars: () => JSX.Element | null;
19
- device: Device;
20
18
  renderWelcomeScreen: boolean;
21
19
  UIOptions: AppProps["UIOptions"];
22
20
  app: AppClassProperties;
23
21
  };
24
- export declare const MobileMenu: ({ appState, elements, actionManager, setAppState, onLockToggle, onHandToolToggle, onPenModeToggle, renderTopRightUI, renderCustomStats, renderSidebars, device, renderWelcomeScreen, UIOptions, app, }: MobileMenuProps) => import("react/jsx-runtime").JSX.Element;
22
+ export declare const MobileMenu: ({ appState, elements, actionManager, setAppState, onHandToolToggle, renderTopLeftUI, renderTopRightUI, renderSidebars, renderWelcomeScreen, UIOptions, app, }: MobileMenuProps) => import("react/jsx-runtime").JSX.Element;
25
23
  export {};
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import "./ToolIcon.scss";
3
+ import "./MobileToolBar.scss";
4
+ import type { AppClassProperties, UIAppState } from "../types";
5
+ type MobileToolBarProps = {
6
+ app: AppClassProperties;
7
+ onHandToolToggle: () => void;
8
+ setAppState: React.Component<any, UIAppState>["setState"];
9
+ };
10
+ export declare const MobileToolBar: ({ app, onHandToolToggle, setAppState, }: MobileToolBarProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -10,6 +10,7 @@ type Props = {
10
10
  offsetTop?: number;
11
11
  viewportWidth?: number;
12
12
  viewportHeight?: number;
13
+ className?: string;
13
14
  };
14
- export declare const Popover: ({ children, left, top, onCloseRequest, fitInViewport, offsetLeft, offsetTop, viewportWidth, viewportHeight, }: Props) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const Popover: ({ children, left, top, onCloseRequest, fitInViewport, offsetLeft, offsetTop, viewportWidth, viewportHeight, className, }: Props) => import("react/jsx-runtime").JSX.Element;
15
16
  export {};
@@ -10,6 +10,7 @@ interface PropertiesPopoverProps {
10
10
  onPointerLeave?: React.PointerEventHandler<HTMLDivElement>;
11
11
  onFocusOutside?: Popover.PopoverContentProps["onFocusOutside"];
12
12
  onPointerDownOutside?: Popover.PopoverContentProps["onPointerDownOutside"];
13
+ preventAutoFocusOnTouch?: boolean;
13
14
  }
14
15
  export declare const PropertiesPopover: React.ForwardRefExoticComponent<PropertiesPopoverProps & React.RefAttributes<HTMLDivElement>>;
15
16
  export {};
@@ -1,5 +1,4 @@
1
- import type { ReactNode } from "react";
2
- import type { JSX } from "react";
1
+ import type { JSX, ReactNode } from "react";
3
2
  export declare const TTDDialogTrigger: {
4
3
  ({ children, icon, }: {
5
4
  children?: ReactNode;
@@ -12,6 +12,7 @@ type TextFieldProps = {
12
12
  className?: string;
13
13
  placeholder?: string;
14
14
  isRedacted?: boolean;
15
+ type?: "text" | "search";
15
16
  } & ({
16
17
  value: string;
17
18
  } | {
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import "./ToolPopover.scss";
3
+ import type { AppClassProperties } from "../types";
4
+ type ToolOption = {
5
+ type: string;
6
+ icon: React.ReactNode;
7
+ title?: string;
8
+ };
9
+ type ToolPopoverProps = {
10
+ app: AppClassProperties;
11
+ options: readonly ToolOption[];
12
+ activeTool: {
13
+ type: string;
14
+ };
15
+ defaultOption: string;
16
+ className?: string;
17
+ namePrefix: string;
18
+ title: string;
19
+ "data-testid": string;
20
+ onToolChange: (type: string) => void;
21
+ displayedOption: ToolOption;
22
+ fillable?: boolean;
23
+ };
24
+ export declare const ToolPopover: ({ app, options, activeTool, defaultOption, className, namePrefix, title, "data-testid": dataTestId, onToolChange, displayedOption, fillable, }: ToolPopoverProps) => import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -1,7 +1,8 @@
1
1
  import React from "react";
2
+ import { type EditorInterface } from "@excalidraw/common";
2
3
  import type { NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
3
4
  import type { RenderableElementsMap, RenderInteractiveSceneCallback } from "../../scene/types";
4
- import type { Device, InteractiveCanvasAppState } from "../../types";
5
+ import type { InteractiveCanvasAppState } from "../../types";
5
6
  import type { DOMAttributes } from "react";
6
7
  type InteractiveCanvasProps = {
7
8
  containerRef: React.RefObject<HTMLDivElement | null>;
@@ -15,7 +16,7 @@ type InteractiveCanvasProps = {
15
16
  scale: number;
16
17
  appState: InteractiveCanvasAppState;
17
18
  renderScrollbars: boolean;
18
- device: Device;
19
+ editorInterface: EditorInterface;
19
20
  renderInteractiveSceneCallback: (data: RenderInteractiveSceneCallback) => void;
20
21
  handleCanvasRef: (canvas: HTMLCanvasElement | null) => void;
21
22
  onContextMenu: Exclude<DOMAttributes<HTMLCanvasElement | HTMLDivElement>["onContextMenu"], undefined>;
@@ -1,9 +1,10 @@
1
1
  import React from "react";
2
2
  import "./DropdownMenu.scss";
3
3
  declare const DropdownMenu: {
4
- ({ children, open, }: {
4
+ ({ children, open, placement, }: {
5
5
  children?: React.ReactNode;
6
6
  open: boolean;
7
+ placement?: "top" | "bottom" | undefined;
7
8
  }): import("react/jsx-runtime").JSX.Element;
8
9
  Trigger: {
9
10
  ({ className, children, onToggle, title, ...rest }: {
@@ -15,12 +16,13 @@ declare const DropdownMenu: {
15
16
  displayName: string;
16
17
  };
17
18
  Content: {
18
- ({ children, onClickOutside, className, onSelect, style, }: {
19
+ ({ children, onClickOutside, className, onSelect, style, placement, }: {
19
20
  children?: React.ReactNode;
20
21
  onClickOutside?: (() => void) | undefined;
21
22
  className?: string | undefined;
22
23
  onSelect?: ((event: Event) => void) | undefined;
23
24
  style?: React.CSSProperties | undefined;
25
+ placement?: "top" | "bottom" | undefined;
24
26
  }): import("react/jsx-runtime").JSX.Element;
25
27
  displayName: string;
26
28
  };
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  declare const MenuContent: {
3
- ({ children, onClickOutside, className, onSelect, style, }: {
3
+ ({ children, onClickOutside, className, onSelect, style, placement, }: {
4
4
  children?: React.ReactNode;
5
5
  onClickOutside?: (() => void) | undefined;
6
6
  className?: string | undefined;
@@ -9,6 +9,7 @@ declare const MenuContent: {
9
9
  */
10
10
  onSelect?: ((event: Event) => void) | undefined;
11
11
  style?: React.CSSProperties | undefined;
12
+ placement?: "top" | "bottom" | undefined;
12
13
  }): import("react/jsx-runtime").JSX.Element;
13
14
  displayName: string;
14
15
  };
@@ -11,6 +11,7 @@ export declare const PlusPromoIcon: import("react/jsx-runtime").JSX.Element;
11
11
  export declare const LibraryIcon: import("react/jsx-runtime").JSX.Element;
12
12
  export declare const PlusIcon: import("react/jsx-runtime").JSX.Element;
13
13
  export declare const DotsIcon: import("react/jsx-runtime").JSX.Element;
14
+ export declare const DotsHorizontalIcon: import("react/jsx-runtime").JSX.Element;
14
15
  export declare const PinIcon: import("react/jsx-runtime").JSX.Element;
15
16
  export declare const polygonIcon: import("react/jsx-runtime").JSX.Element;
16
17
  export declare const UnlockedIcon: import("react/jsx-runtime").JSX.Element;
@@ -30,6 +31,7 @@ export declare const LineIcon: import("react/jsx-runtime").JSX.Element;
30
31
  export declare const PenModeIcon: import("react/jsx-runtime").JSX.Element;
31
32
  export declare const FreedrawIcon: import("react/jsx-runtime").JSX.Element;
32
33
  export declare const TextIcon: import("react/jsx-runtime").JSX.Element;
34
+ export declare const TextSizeIcon: import("react/jsx-runtime").JSX.Element;
33
35
  export declare const ImageIcon: import("react/jsx-runtime").JSX.Element;
34
36
  export declare const EraserIcon: import("react/jsx-runtime").JSX.Element;
35
37
  export declare const ZoomInIcon: import("react/jsx-runtime").JSX.Element;
@@ -222,4 +224,7 @@ export declare const collapseUpIcon: import("react/jsx-runtime").JSX.Element;
222
224
  export declare const upIcon: import("react/jsx-runtime").JSX.Element;
223
225
  export declare const cropIcon: import("react/jsx-runtime").JSX.Element;
224
226
  export declare const elementLinkIcon: import("react/jsx-runtime").JSX.Element;
227
+ export declare const resizeIcon: import("react/jsx-runtime").JSX.Element;
228
+ export declare const adjustmentsIcon: import("react/jsx-runtime").JSX.Element;
229
+ export declare const strokeIcon: import("react/jsx-runtime").JSX.Element;
225
230
  export {};
@@ -1,9 +1,21 @@
1
1
  /// <reference types="react" />
2
+ import { type EditorInterface } from "@excalidraw/common";
2
3
  import "./LiveCollaborationTrigger.scss";
3
4
  declare const LiveCollaborationTrigger: {
4
- ({ isCollaborating, onSelect, ...rest }: {
5
+ ({ isCollaborating, onSelect, editorInterface, ...rest }: {
5
6
  isCollaborating: boolean;
6
7
  onSelect: () => void;
8
+ editorInterface?: Readonly<{
9
+ formFactor: "phone" | "tablet" | "desktop";
10
+ desktopUIMode: "compact" | "full";
11
+ userAgent: Readonly<{
12
+ isMobileDevice: boolean;
13
+ platform: "other" | "ios" | "android" | "unknown";
14
+ }>;
15
+ isTouchScreen: boolean;
16
+ canFitSidebar: boolean;
17
+ isLandscape: boolean;
18
+ }> | undefined;
7
19
  } & import("react").ButtonHTMLAttributes<HTMLButtonElement>): import("react/jsx-runtime").JSX.Element;
8
20
  displayName: string;
9
21
  };
@@ -25,9 +25,6 @@ declare const MainMenu: React.FC<{
25
25
  order?: number | undefined;
26
26
  onSelect?: ((event: Event) => void) | undefined;
27
27
  children: React.ReactNode;
28
- /**
29
- * Called when any menu item is selected (clicked on).
30
- */
31
28
  shortcut?: string | undefined;
32
29
  hovered?: boolean | undefined;
33
30
  selected?: boolean | undefined;
@@ -1,3 +1,4 @@
1
+ import type { AppClassProperties } from "../types";
1
2
  export declare const SHAPES: readonly [{
2
3
  readonly icon: import("react/jsx-runtime").JSX.Element;
3
4
  readonly value: "selection";
@@ -59,4 +60,131 @@ export declare const SHAPES: readonly [{
59
60
  readonly numericKey: "0";
60
61
  readonly fillable: false;
61
62
  }];
62
- export declare const findShapeByKey: (key: string) => "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | null;
63
+ export declare const getToolbarTools: (app: AppClassProperties) => readonly [{
64
+ readonly icon: import("react/jsx-runtime").JSX.Element;
65
+ readonly value: "selection";
66
+ readonly key: "v";
67
+ readonly numericKey: "1";
68
+ readonly fillable: true;
69
+ }, {
70
+ readonly icon: import("react/jsx-runtime").JSX.Element;
71
+ readonly value: "rectangle";
72
+ readonly key: "r";
73
+ readonly numericKey: "2";
74
+ readonly fillable: true;
75
+ }, {
76
+ readonly icon: import("react/jsx-runtime").JSX.Element;
77
+ readonly value: "diamond";
78
+ readonly key: "d";
79
+ readonly numericKey: "3";
80
+ readonly fillable: true;
81
+ }, {
82
+ readonly icon: import("react/jsx-runtime").JSX.Element;
83
+ readonly value: "ellipse";
84
+ readonly key: "o";
85
+ readonly numericKey: "4";
86
+ readonly fillable: true;
87
+ }, {
88
+ readonly icon: import("react/jsx-runtime").JSX.Element;
89
+ readonly value: "arrow";
90
+ readonly key: "a";
91
+ readonly numericKey: "5";
92
+ readonly fillable: true;
93
+ }, {
94
+ readonly icon: import("react/jsx-runtime").JSX.Element;
95
+ readonly value: "line";
96
+ readonly key: "l";
97
+ readonly numericKey: "6";
98
+ readonly fillable: true;
99
+ }, {
100
+ readonly icon: import("react/jsx-runtime").JSX.Element;
101
+ readonly value: "freedraw";
102
+ readonly key: readonly ["p", "x"];
103
+ readonly numericKey: "7";
104
+ readonly fillable: false;
105
+ }, {
106
+ readonly icon: import("react/jsx-runtime").JSX.Element;
107
+ readonly value: "text";
108
+ readonly key: "t";
109
+ readonly numericKey: "8";
110
+ readonly fillable: false;
111
+ }, {
112
+ readonly icon: import("react/jsx-runtime").JSX.Element;
113
+ readonly value: "image";
114
+ readonly key: null;
115
+ readonly numericKey: "9";
116
+ readonly fillable: false;
117
+ }, {
118
+ readonly icon: import("react/jsx-runtime").JSX.Element;
119
+ readonly value: "eraser";
120
+ readonly key: "e";
121
+ readonly numericKey: "0";
122
+ readonly fillable: false;
123
+ }] | readonly [{
124
+ readonly value: "lasso";
125
+ readonly icon: import("react/jsx-runtime").JSX.Element;
126
+ readonly key: "v";
127
+ readonly numericKey: "1";
128
+ readonly fillable: true;
129
+ }, ...({
130
+ readonly icon: import("react/jsx-runtime").JSX.Element;
131
+ readonly value: "selection";
132
+ readonly key: "v";
133
+ readonly numericKey: "1";
134
+ readonly fillable: true;
135
+ } | {
136
+ readonly icon: import("react/jsx-runtime").JSX.Element;
137
+ readonly value: "rectangle";
138
+ readonly key: "r";
139
+ readonly numericKey: "2";
140
+ readonly fillable: true;
141
+ } | {
142
+ readonly icon: import("react/jsx-runtime").JSX.Element;
143
+ readonly value: "diamond";
144
+ readonly key: "d";
145
+ readonly numericKey: "3";
146
+ readonly fillable: true;
147
+ } | {
148
+ readonly icon: import("react/jsx-runtime").JSX.Element;
149
+ readonly value: "ellipse";
150
+ readonly key: "o";
151
+ readonly numericKey: "4";
152
+ readonly fillable: true;
153
+ } | {
154
+ readonly icon: import("react/jsx-runtime").JSX.Element;
155
+ readonly value: "arrow";
156
+ readonly key: "a";
157
+ readonly numericKey: "5";
158
+ readonly fillable: true;
159
+ } | {
160
+ readonly icon: import("react/jsx-runtime").JSX.Element;
161
+ readonly value: "line";
162
+ readonly key: "l";
163
+ readonly numericKey: "6";
164
+ readonly fillable: true;
165
+ } | {
166
+ readonly icon: import("react/jsx-runtime").JSX.Element;
167
+ readonly value: "freedraw";
168
+ readonly key: readonly ["p", "x"];
169
+ readonly numericKey: "7";
170
+ readonly fillable: false;
171
+ } | {
172
+ readonly icon: import("react/jsx-runtime").JSX.Element;
173
+ readonly value: "text";
174
+ readonly key: "t";
175
+ readonly numericKey: "8";
176
+ readonly fillable: false;
177
+ } | {
178
+ readonly icon: import("react/jsx-runtime").JSX.Element;
179
+ readonly value: "image";
180
+ readonly key: null;
181
+ readonly numericKey: "9";
182
+ readonly fillable: false;
183
+ } | {
184
+ readonly icon: import("react/jsx-runtime").JSX.Element;
185
+ readonly value: "eraser";
186
+ readonly key: "e";
187
+ readonly numericKey: "0";
188
+ readonly fillable: false;
189
+ })[]];
190
+ export declare const findShapeByKey: (key: string, app: AppClassProperties) => "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "lasso" | "eraser" | null;
@@ -2,7 +2,7 @@ import { IMAGE_MIME_TYPES, MIME_TYPES } from "@excalidraw/common";
2
2
  import type { ValueOf } from "@excalidraw/common/utility-types";
3
3
  import type { ExcalidrawElement, FileId } from "@excalidraw/element/types";
4
4
  import type { AppState, DataURL, LibraryItem } from "../types";
5
- import type { FileSystemHandle } from "./filesystem";
5
+ import type { FileSystemHandle } from "browser-fs-access";
6
6
  import type { ImportedLibraryData } from "./types";
7
7
  export declare const getMimeType: (blob: Blob | string) => string;
8
8
  export declare const getFileHandleType: (handle: FileSystemHandle | null) => string | null;
@@ -40,12 +40,8 @@ export declare const SVGStringToFile: (SVGString: string, filename?: string) =>
40
40
  type: typeof MIME_TYPES.svg;
41
41
  };
42
42
  export declare const ImageURLToFile: (imageUrl: string, filename?: string) => Promise<File | undefined>;
43
- export declare const getFileFromEvent: (event: React.DragEvent<HTMLDivElement>) => Promise<{
44
- file: File | null;
45
- fileHandle: FileSystemHandle | null;
46
- }>;
47
- export declare const getFileHandle: (event: React.DragEvent<HTMLDivElement>) => Promise<FileSystemHandle | null>;
48
- export declare const createFile: (blob: File | Blob | ArrayBuffer, mimeType: ValueOf<typeof MIME_TYPES>, name: string | undefined) => File;
43
+ export declare const getFileHandle: (event: DragEvent | React.DragEvent | DataTransferItem) => Promise<FileSystemHandle | null>;
44
+ export declare const createFile: (blob: File | Blob | ArrayBuffer, mimeType: string, name: string | undefined) => File;
49
45
  /** attempts to detect correct mimeType if none is set, or if an image
50
46
  * has an incorrect extension.
51
47
  * Note: doesn't handle missing .excalidraw/.excalidrawlib extension */
@@ -1,7 +1,7 @@
1
1
  import type { VERSIONS } from "@excalidraw/common";
2
2
  import type { ExcalidrawElement } from "@excalidraw/element/types";
3
3
  import type { cleanAppStateForExport } from "../appState";
4
- import type { AppState, BinaryFiles, LibraryItems, LibraryItems_anyVersion } from "../types";
4
+ import type { AppState, BinaryFiles, LibraryItem, LibraryItems, LibraryItems_anyVersion } from "../types";
5
5
  export interface ExportedDataState {
6
6
  type: string;
7
7
  version: number;
@@ -43,3 +43,6 @@ export interface ImportedLibraryData extends Partial<ExportedLibraryData> {
43
43
  /** @deprecated v1 */
44
44
  library?: LibraryItems;
45
45
  }
46
+ export type ExcalidrawLibraryIds = {
47
+ itemIds: LibraryItem["id"][];
48
+ };
@@ -3,7 +3,7 @@ export type SvgCache = Map<LibraryItem["id"], SVGSVGElement>;
3
3
  export declare const libraryItemSvgsCache: import("jotai/vanilla/atom").PrimitiveAtom<SvgCache> & {
4
4
  init: SvgCache;
5
5
  };
6
- export declare const useLibraryItemSvg: (id: LibraryItem["id"] | null, elements: LibraryItem["elements"] | undefined, svgCache: SvgCache) => SVGSVGElement | undefined;
6
+ export declare const useLibraryItemSvg: (id: LibraryItem["id"] | null, elements: LibraryItem["elements"] | undefined, svgCache: SvgCache, ref: React.RefObject<HTMLDivElement | null>) => SVGSVGElement | undefined;
7
7
  export declare const useLibraryCache: () => {
8
8
  clearLibraryCache: () => void;
9
9
  deleteItemsFromLibraryCache: (items: LibraryItem["id"][]) => void;
@@ -0,0 +1,14 @@
1
+ export type CaretPosition = {
2
+ start: number;
3
+ end: number;
4
+ };
5
+ export declare const saveCaretPosition: () => CaretPosition | null;
6
+ export declare const restoreCaretPosition: (position: CaretPosition | null) => void;
7
+ export declare const withCaretPositionPreservation: (callback: () => void, isCompactMode: boolean, isEditingText: boolean, onPreventClose?: () => void) => void;
8
+ export declare const useTextEditorFocus: () => {
9
+ saveCaretPosition: () => void;
10
+ restoreCaretPosition: () => void;
11
+ clearSavedPosition: () => void;
12
+ hasSavedPosition: boolean;
13
+ };
14
+ export declare const temporarilyDisableTextEditorBlur: (duration?: number) => void;
@@ -20,17 +20,16 @@ export { loadFromBlob, loadSceneOrLibraryFromBlob, loadLibraryFromBlob, } from "
20
20
  export { getFreeDrawSvgPath } from "@excalidraw/element";
21
21
  export { mergeLibraryItems, getLibraryItemsHash } from "./data/library";
22
22
  export { isLinearElement } from "@excalidraw/element";
23
- export { FONT_FAMILY, THEME, MIME_TYPES, ROUNDNESS, DEFAULT_LASER_COLOR, UserIdleState, normalizeLink, } from "@excalidraw/common";
23
+ export { FONT_FAMILY, THEME, MIME_TYPES, ROUNDNESS, DEFAULT_LASER_COLOR, UserIdleState, normalizeLink, sceneCoordsToViewportCoords, viewportCoordsToSceneCoords, getFormFactor, } from "@excalidraw/common";
24
24
  export { mutateElement, newElementWith, bumpVersion, } from "@excalidraw/element";
25
25
  export { CaptureUpdateAction } from "@excalidraw/element";
26
26
  export { parseLibraryTokensFromUrl, useHandleLibrary } from "./data/library";
27
- export { sceneCoordsToViewportCoords, viewportCoordsToSceneCoords, } from "@excalidraw/common";
28
27
  export { Sidebar } from "./components/Sidebar/Sidebar";
29
28
  export { Button } from "./components/Button";
30
29
  export { Footer };
31
30
  export { MainMenu };
32
31
  export { Ellipsify } from "./components/Ellipsify";
33
- export { useDevice } from "./components/App";
32
+ export { useEditorInterface, useStylesPanelMode } from "./components/App";
34
33
  export { WelcomeScreen };
35
34
  export { LiveCollaborationTrigger };
36
35
  export { Stats } from "./components/Stats";
@@ -9,7 +9,7 @@ export declare const renderInteractiveSceneThrottled: {
9
9
  * Interactive scene is the ui-canvas where we render bounding boxes, selections
10
10
  * and other ui stuff.
11
11
  */
12
- export declare const renderInteractiveScene: <U extends ({ canvas, elementsMap, visibleElements, selectedElements, allElementsMap, scale, appState, renderConfig, device, }: InteractiveSceneRenderConfig) => {
12
+ export declare const renderInteractiveScene: <U extends ({ canvas, elementsMap, visibleElements, selectedElements, allElementsMap, scale, appState, renderConfig, editorInterface, }: InteractiveSceneRenderConfig) => {
13
13
  atLeastOneVisibleElement: boolean;
14
14
  elementsMap: RenderableElementsMap;
15
15
  scrollBars?: undefined;
@@ -1,7 +1,7 @@
1
- import type { UserIdleState } from "@excalidraw/common";
1
+ import type { UserIdleState, EditorInterface } from "@excalidraw/common";
2
2
  import type { ExcalidrawElement, NonDeletedElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
3
3
  import type { MakeBrand } from "@excalidraw/common/utility-types";
4
- import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, Device, PendingExcalidrawElements } from "../types";
4
+ import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, PendingExcalidrawElements } from "../types";
5
5
  import type { RoughCanvas } from "roughjs/bin/canvas";
6
6
  import type { Drawable } from "roughjs/bin/core";
7
7
  export type RenderableElementsMap = NonDeletedElementsMap & MakeBrand<"RenderableElementsMap">;
@@ -69,7 +69,7 @@ export type InteractiveSceneRenderConfig = {
69
69
  scale: number;
70
70
  appState: InteractiveCanvasAppState;
71
71
  renderConfig: InteractiveCanvasRenderConfig;
72
- device: Device;
72
+ editorInterface: EditorInterface;
73
73
  callback: (data: RenderInteractiveSceneCallback) => void;
74
74
  };
75
75
  export type NewElementSceneRenderConfig = {
@@ -0,0 +1 @@
1
+ export declare const getShortcutKey: (shortcut: string) => string;
@@ -1,4 +1,4 @@
1
- import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES } from "@excalidraw/common";
1
+ import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES, EditorInterface } from "@excalidraw/common";
2
2
  import type { SuggestedBinding } from "@excalidraw/element";
3
3
  import type { LinearElementEditor } from "@excalidraw/element";
4
4
  import type { MaybeTransformHandleType } from "@excalidraw/element";
@@ -221,6 +221,10 @@ export interface AppState {
221
221
  locked: boolean;
222
222
  fromSelection: boolean;
223
223
  } & ActiveTool;
224
+ preferredSelectionTool: {
225
+ type: "selection" | "lasso";
226
+ initialized: boolean;
227
+ };
224
228
  penMode: boolean;
225
229
  penDetected: boolean;
226
230
  exportBackground: boolean;
@@ -251,8 +255,8 @@ export interface AppState {
251
255
  isResizing: boolean;
252
256
  isRotating: boolean;
253
257
  zoom: Zoom;
254
- openMenu: "canvas" | "shape" | null;
255
- openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | null;
258
+ openMenu: "canvas" | null;
259
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
256
260
  openSidebar: {
257
261
  name: SidebarName;
258
262
  tab?: SidebarTabName;
@@ -441,6 +445,7 @@ export interface ExcalidrawProps {
441
445
  onDuplicate?: (nextElements: readonly ExcalidrawElement[],
442
446
  /** excludes the duplicated elements */
443
447
  prevElements: readonly ExcalidrawElement[]) => ExcalidrawElement[] | void;
448
+ renderTopLeftUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
444
449
  renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
445
450
  langCode?: Language["code"];
446
451
  viewModeEnabled?: boolean;
@@ -498,6 +503,12 @@ export type UIOptions = Partial<{
498
503
  tools: {
499
504
  image: boolean;
500
505
  };
506
+ /**
507
+ * Optionally control the editor form factor and desktop UI mode from the host app.
508
+ * If not provided, we will take care of it internally.
509
+ */
510
+ formFactor?: EditorInterface["formFactor"];
511
+ desktopUIMode?: EditorInterface["desktopUIMode"];
501
512
  /** @deprecated does nothing. Will be removed in 0.15 */
502
513
  welcomeScreen?: boolean;
503
514
  }>;
@@ -528,7 +539,7 @@ export type AppClassProperties = {
528
539
  mimeType: ValueOf<typeof IMAGE_MIME_TYPES>;
529
540
  }>;
530
541
  files: BinaryFiles;
531
- device: App["device"];
542
+ editorInterface: App["editorInterface"];
532
543
  scene: App["scene"];
533
544
  syncActionResult: App["syncActionResult"];
534
545
  fonts: App["fonts"];
@@ -557,6 +568,7 @@ export type AppClassProperties = {
557
568
  excalidrawContainerValue: App["excalidrawContainerValue"];
558
569
  onPointerUpEmitter: App["onPointerUpEmitter"];
559
570
  updateEditorAtom: App["updateEditorAtom"];
571
+ onPointerDownEmitter: App["onPointerDownEmitter"];
560
572
  };
561
573
  export type PointerDownState = Readonly<{
562
574
  origin: Readonly<{
@@ -604,6 +616,7 @@ export type PointerDownState = Readonly<{
604
616
  x: number;
605
617
  y: number;
606
618
  };
619
+ blockDragging: boolean;
607
620
  };
608
621
  eventListeners: {
609
622
  onMove: null | ReturnType<typeof throttleRAF>;
@@ -641,6 +654,7 @@ export interface ExcalidrawImperativeAPI {
641
654
  setCursor: InstanceType<typeof App>["setCursor"];
642
655
  resetCursor: InstanceType<typeof App>["resetCursor"];
643
656
  toggleSidebar: InstanceType<typeof App>["toggleSidebar"];
657
+ getEditorInterface: () => EditorInterface;
644
658
  /**
645
659
  * Disables rendering of frames (including element clipping), but currently
646
660
  * the frames are still interactive in edit mode. As such, this API should be
@@ -654,17 +668,6 @@ export interface ExcalidrawImperativeAPI {
654
668
  onScrollChange: (callback: (scrollX: number, scrollY: number, zoom: Zoom) => void) => UnsubscribeCallback;
655
669
  onUserFollow: (callback: (payload: OnUserFollowedPayload) => void) => UnsubscribeCallback;
656
670
  }
657
- export type Device = Readonly<{
658
- viewport: {
659
- isMobile: boolean;
660
- isLandscape: boolean;
661
- };
662
- editor: {
663
- isMobile: boolean;
664
- canFitSidebar: boolean;
665
- };
666
- isTouchScreen: boolean;
667
- }>;
668
671
  export type FrameNameBounds = {
669
672
  x: number;
670
673
  y: number;
@@ -37,3 +37,4 @@ export declare const distanceToLineSegment: <Point extends GlobalPoint | LocalPo
37
37
  * @returns
38
38
  */
39
39
  export declare function lineSegmentIntersectionPoints<Point extends GlobalPoint | LocalPoint>(l: LineSegment<Point>, s: LineSegment<Point>, threshold?: number): Point | null;
40
+ export declare function lineSegmentsDistance<Point extends GlobalPoint | LocalPoint>(s1: LineSegment<Point>, s2: LineSegment<Point>): number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@excalidraw/excalidraw",
3
- "version": "0.18.0-c6f8ef9",
3
+ "version": "0.18.0-d1f3982",
4
4
  "type": "module",
5
5
  "types": "./dist/types/excalidraw/index.d.ts",
6
6
  "main": "./dist/prod/index.js",
@@ -79,11 +79,11 @@
79
79
  },
80
80
  "dependencies": {
81
81
  "@braintree/sanitize-url": "6.0.2",
82
- "@excalidraw/common": "0.18.0-c6f8ef9",
83
- "@excalidraw/element": "0.18.0-c6f8ef9",
84
- "@excalidraw/math": "0.18.0-c6f8ef9",
82
+ "@excalidraw/common": "0.18.0-d1f3982",
83
+ "@excalidraw/element": "0.18.0-d1f3982",
84
+ "@excalidraw/math": "0.18.0-d1f3982",
85
85
  "@excalidraw/laser-pointer": "1.3.1",
86
- "@excalidraw/mermaid-to-excalidraw": "1.1.2",
86
+ "@excalidraw/mermaid-to-excalidraw": "1.1.3",
87
87
  "@excalidraw/random-username": "1.1.0",
88
88
  "@radix-ui/react-popover": "1.1.6",
89
89
  "@radix-ui/react-tabs": "1.1.3",