@myoc/excalidraw 0.19.520 → 0.19.522

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 (473) hide show
  1. package/CHANGELOG.md +280 -8
  2. package/dist/dev/{chunk-SJJUXTTF.js → chunk-6T5HZJCI.js} +2 -2
  3. package/dist/dev/chunk-72CYJXY3.js +69 -0
  4. package/dist/dev/chunk-72CYJXY3.js.map +7 -0
  5. package/dist/dev/{chunk-FQHULQ5P.js → chunk-BCNQXIBK.js} +348 -85
  6. package/dist/dev/chunk-BCNQXIBK.js.map +7 -0
  7. package/dist/dev/{chunk-IU2VFRFU.js → chunk-SKCAT7JG.js} +19 -6
  8. package/dist/dev/chunk-SKCAT7JG.js.map +7 -0
  9. package/dist/dev/data/{image-X3JCQEUX.js → image-NFLICJEW.js} +3 -3
  10. package/dist/dev/index.css +2198 -2250
  11. package/dist/dev/index.css.map +3 -3
  12. package/dist/dev/index.js +15030 -11983
  13. package/dist/dev/index.js.map +4 -4
  14. package/dist/dev/locales/{ar-SA-NFU76NHO.js → ar-SA-JEFXMY43.js} +69 -29
  15. package/dist/dev/locales/ar-SA-JEFXMY43.js.map +7 -0
  16. package/dist/dev/locales/{az-AZ-F7U432OF.js → az-AZ-K5GG7N2H.js} +47 -7
  17. package/dist/dev/locales/az-AZ-K5GG7N2H.js.map +7 -0
  18. package/dist/dev/locales/{bg-BG-VMJGHZ3R.js → bg-BG-YUNBCAUF.js} +47 -7
  19. package/dist/dev/locales/bg-BG-YUNBCAUF.js.map +7 -0
  20. package/dist/dev/locales/{bn-BD-ABWH5RGF.js → bn-BD-TASJ52R7.js} +47 -7
  21. package/dist/dev/locales/bn-BD-TASJ52R7.js.map +7 -0
  22. package/dist/dev/locales/{bn-IN-6FBCHDUY.js → bn-IN-CQJ5XUTI.js} +47 -7
  23. package/dist/dev/locales/bn-IN-CQJ5XUTI.js.map +7 -0
  24. package/dist/dev/locales/{ca-ES-UX7K2ENH.js → ca-ES-F62AQUFY.js} +47 -69
  25. package/dist/dev/locales/ca-ES-F62AQUFY.js.map +7 -0
  26. package/dist/dev/locales/{cs-CZ-TBYIRH36.js → cs-CZ-YHUNUU6P.js} +47 -69
  27. package/dist/dev/locales/cs-CZ-YHUNUU6P.js.map +7 -0
  28. package/dist/dev/locales/{da-DK-KW4TGU6O.js → da-DK-QU24E74Q.js} +47 -69
  29. package/dist/dev/locales/da-DK-QU24E74Q.js.map +7 -0
  30. package/dist/dev/locales/{de-CH-QSJHIHEN.js → de-CH-KLWBYLGC.js} +110 -132
  31. package/dist/dev/locales/de-CH-KLWBYLGC.js.map +7 -0
  32. package/dist/dev/locales/{de-DE-2WQ5IRPT.js → de-DE-UB755M7G.js} +110 -132
  33. package/dist/dev/locales/de-DE-UB755M7G.js.map +7 -0
  34. package/dist/dev/locales/{el-GR-N7JWYMV5.js → el-GR-J2BFDAEA.js} +47 -69
  35. package/dist/dev/locales/el-GR-J2BFDAEA.js.map +7 -0
  36. package/dist/dev/locales/{en-25BPHB4T.js → en-RETPDZ4S.js} +4 -2
  37. package/dist/dev/locales/{es-ES-37LJTLHM.js → es-ES-GL35U3D6.js} +97 -119
  38. package/dist/dev/locales/es-ES-GL35U3D6.js.map +7 -0
  39. package/dist/dev/locales/{eu-ES-2IFCUP7K.js → eu-ES-5LL7P4G7.js} +150 -172
  40. package/dist/dev/locales/eu-ES-5LL7P4G7.js.map +7 -0
  41. package/dist/dev/locales/{fa-IR-VDT7BNM4.js → fa-IR-2D6AXPSB.js} +52 -74
  42. package/dist/dev/locales/fa-IR-2D6AXPSB.js.map +7 -0
  43. package/dist/dev/locales/{fi-FI-HLYF5ISJ.js → fi-FI-WLH5PKEI.js} +47 -69
  44. package/dist/dev/locales/fi-FI-WLH5PKEI.js.map +7 -0
  45. package/dist/dev/locales/{fr-FR-5YNPDFPF.js → fr-FR-2OK3WPK2.js} +50 -72
  46. package/dist/dev/locales/fr-FR-2OK3WPK2.js.map +7 -0
  47. package/dist/dev/locales/{gl-ES-S56CRRSA.js → gl-ES-EZQPQSMM.js} +47 -69
  48. package/dist/dev/locales/gl-ES-EZQPQSMM.js.map +7 -0
  49. package/dist/dev/locales/{he-IL-7GR3BHPZ.js → he-IL-AZ66QXVH.js} +101 -123
  50. package/dist/dev/locales/he-IL-AZ66QXVH.js.map +7 -0
  51. package/dist/dev/locales/{hi-IN-AQ7X42V5.js → hi-IN-FLBMKLKL.js} +47 -69
  52. package/dist/dev/locales/hi-IN-FLBMKLKL.js.map +7 -0
  53. package/dist/dev/locales/{hu-HU-4HM3N3P3.js → hu-HU-VDOE4ASN.js} +47 -69
  54. package/dist/dev/locales/hu-HU-VDOE4ASN.js.map +7 -0
  55. package/dist/dev/locales/{id-ID-P7V2I35Q.js → id-ID-ONDPKYZS.js} +94 -116
  56. package/dist/dev/locales/id-ID-ONDPKYZS.js.map +7 -0
  57. package/dist/dev/locales/{it-IT-HUGIPGTB.js → it-IT-VBFSF2PC.js} +50 -72
  58. package/dist/dev/locales/it-IT-VBFSF2PC.js.map +7 -0
  59. package/dist/dev/locales/{ja-JP-XFX5V5ZL.js → ja-JP-HYYYQCGH.js} +141 -163
  60. package/dist/dev/locales/ja-JP-HYYYQCGH.js.map +7 -0
  61. package/dist/dev/locales/{kaa-X53Z7Q4I.js → kaa-TY3DGTWH.js} +47 -69
  62. package/dist/dev/locales/kaa-TY3DGTWH.js.map +7 -0
  63. package/dist/dev/locales/{kab-KAB-GGKAECT5.js → kab-KAB-IY5ZIQCV.js} +47 -69
  64. package/dist/dev/locales/kab-KAB-IY5ZIQCV.js.map +7 -0
  65. package/dist/dev/locales/{kk-KZ-Z6R3NY65.js → kk-KZ-XL46CODC.js} +47 -69
  66. package/dist/dev/locales/kk-KZ-XL46CODC.js.map +7 -0
  67. package/dist/dev/locales/{km-KH-DGK3UTBI.js → km-KH-SBKIWI6O.js} +47 -69
  68. package/dist/dev/locales/km-KH-SBKIWI6O.js.map +7 -0
  69. package/dist/dev/locales/{ko-KR-W7QZK3EC.js → ko-KR-G6PO3BPA.js} +109 -131
  70. package/dist/dev/locales/ko-KR-G6PO3BPA.js.map +7 -0
  71. package/dist/dev/locales/{ku-TR-3UJE7FNE.js → ku-TR-DCRJVW6B.js} +47 -69
  72. package/dist/dev/locales/ku-TR-DCRJVW6B.js.map +7 -0
  73. package/dist/dev/locales/{lt-LT-OTNQMXF6.js → lt-LT-HMDRWN2A.js} +47 -69
  74. package/dist/dev/locales/lt-LT-HMDRWN2A.js.map +7 -0
  75. package/dist/dev/locales/{lv-LV-Y44YX4AK.js → lv-LV-E7XBXM5Z.js} +47 -69
  76. package/dist/dev/locales/lv-LV-E7XBXM5Z.js.map +7 -0
  77. package/dist/dev/locales/{mr-IN-MT2HYNUI.js → mr-IN-7HMFEVFE.js} +48 -70
  78. package/dist/dev/locales/mr-IN-7HMFEVFE.js.map +7 -0
  79. package/dist/dev/locales/{my-MM-ZBRKQSW3.js → my-MM-L4VSI7TR.js} +47 -69
  80. package/dist/dev/locales/my-MM-L4VSI7TR.js.map +7 -0
  81. package/dist/dev/locales/{nb-NO-ZY7DB7O2.js → nb-NO-GBRDJCO7.js} +47 -69
  82. package/dist/dev/locales/nb-NO-GBRDJCO7.js.map +7 -0
  83. package/dist/dev/locales/{nl-NL-YLVMYG2H.js → nl-NL-Z3EVTIXJ.js} +52 -74
  84. package/dist/dev/locales/nl-NL-Z3EVTIXJ.js.map +7 -0
  85. package/dist/dev/locales/{nn-NO-4SXLBTTQ.js → nn-NO-WCTTYN3P.js} +47 -69
  86. package/dist/dev/locales/nn-NO-WCTTYN3P.js.map +7 -0
  87. package/dist/dev/locales/{oc-FR-NMOJCLB4.js → oc-FR-6IH2LZOZ.js} +47 -69
  88. package/dist/dev/locales/oc-FR-6IH2LZOZ.js.map +7 -0
  89. package/dist/dev/locales/{pa-IN-G5T3AUSW.js → pa-IN-3KCEDMBE.js} +47 -69
  90. package/dist/dev/locales/pa-IN-3KCEDMBE.js.map +7 -0
  91. package/dist/dev/locales/{percentages-ZRLRVMSI.js → percentages-DKKGPYTW.js} +2 -2
  92. package/dist/dev/locales/{pl-PL-TXUESISZ.js → pl-PL-OFE4QPOR.js} +47 -69
  93. package/dist/dev/locales/pl-PL-OFE4QPOR.js.map +7 -0
  94. package/dist/dev/locales/{pt-BR-KEMR6KPT.js → pt-BR-KFYVREQI.js} +94 -116
  95. package/dist/dev/locales/pt-BR-KFYVREQI.js.map +7 -0
  96. package/dist/dev/locales/{pt-PT-ZCG2G3PR.js → pt-PT-GZLT46KI.js} +92 -114
  97. package/dist/dev/locales/pt-PT-GZLT46KI.js.map +7 -0
  98. package/dist/dev/locales/{ro-RO-MDAUF4EM.js → ro-RO-DKVFNBHO.js} +50 -72
  99. package/dist/dev/locales/ro-RO-DKVFNBHO.js.map +7 -0
  100. package/dist/dev/locales/{ru-RU-ZIRVCAVQ.js → ru-RU-6JEBKTLT.js} +50 -72
  101. package/dist/dev/locales/ru-RU-6JEBKTLT.js.map +7 -0
  102. package/dist/dev/locales/{si-LK-FPEI3WT5.js → si-LK-6AKNCJA5.js} +47 -69
  103. package/dist/dev/locales/si-LK-6AKNCJA5.js.map +7 -0
  104. package/dist/dev/locales/{sk-SK-TZJ3W5LE.js → sk-SK-2ATL6K2E.js} +50 -72
  105. package/dist/dev/locales/sk-SK-2ATL6K2E.js.map +7 -0
  106. package/dist/dev/locales/{sl-SI-KIJ3UR57.js → sl-SI-YMMKUPW6.js} +47 -69
  107. package/dist/dev/locales/sl-SI-YMMKUPW6.js.map +7 -0
  108. package/dist/dev/locales/{sv-SE-WX2A2Y2N.js → sv-SE-WBMU72M2.js} +88 -110
  109. package/dist/dev/locales/sv-SE-WBMU72M2.js.map +7 -0
  110. package/dist/dev/locales/{ta-IN-ECFHL2WQ.js → ta-IN-OVDW7DBM.js} +47 -69
  111. package/dist/dev/locales/ta-IN-OVDW7DBM.js.map +7 -0
  112. package/dist/dev/locales/{th-TH-XIGNEM6A.js → th-TH-7L42SH4O.js} +73 -95
  113. package/dist/dev/locales/th-TH-7L42SH4O.js.map +7 -0
  114. package/dist/dev/locales/{tr-TR-RCLDMBSM.js → tr-TR-MPDZYTZ2.js} +83 -105
  115. package/dist/dev/locales/tr-TR-MPDZYTZ2.js.map +7 -0
  116. package/dist/dev/locales/{uk-UA-2ADII6GR.js → uk-UA-5SVBS74S.js} +66 -88
  117. package/dist/dev/locales/uk-UA-5SVBS74S.js.map +7 -0
  118. package/dist/dev/locales/{uz-UZ-COGLAKY3.js → uz-UZ-QYTGSZB2.js} +47 -69
  119. package/dist/dev/locales/uz-UZ-QYTGSZB2.js.map +7 -0
  120. package/dist/dev/locales/{vi-VN-QBW5T274.js → vi-VN-KMVP2XW5.js} +47 -69
  121. package/dist/dev/locales/vi-VN-KMVP2XW5.js.map +7 -0
  122. package/dist/dev/locales/{zh-CN-WONZCIPT.js → zh-CN-KR2L555J.js} +51 -73
  123. package/dist/dev/locales/zh-CN-KR2L555J.js.map +7 -0
  124. package/dist/dev/locales/{zh-HK-AJ2UN7VN.js → zh-HK-VFOCIZQM.js} +47 -69
  125. package/dist/dev/locales/zh-HK-VFOCIZQM.js.map +7 -0
  126. package/dist/dev/locales/{zh-TW-O73UCU5T.js → zh-TW-OIQ4BXFH.js} +91 -113
  127. package/dist/dev/locales/zh-TW-OIQ4BXFH.js.map +7 -0
  128. package/dist/dev/subset-shared.chunk.js +1 -1
  129. package/dist/dev/subset-worker.chunk.js +1 -1
  130. package/dist/prod/chunk-5XKZK2GL.js +1 -0
  131. package/dist/prod/chunk-66O5T5YX.js +4 -0
  132. package/dist/prod/chunk-DARW3V66.js +12 -0
  133. package/dist/prod/{chunk-3QXZ5NQO.js → chunk-SZWH77NQ.js} +1 -1
  134. package/dist/prod/data/image-AAJBLI3M.js +1 -0
  135. package/dist/prod/index.css +1 -1
  136. package/dist/prod/index.js +20 -111
  137. package/dist/prod/locales/ar-SA-E6E2KRZ5.js +10 -0
  138. package/dist/prod/locales/az-AZ-RDMGQYMZ.js +1 -0
  139. package/dist/prod/locales/bg-BG-CHUVCTEA.js +5 -0
  140. package/dist/prod/locales/bn-BD-ZMOEPIQW.js +3 -0
  141. package/dist/prod/locales/bn-IN-OHZAWF5C.js +3 -0
  142. package/dist/prod/locales/ca-ES-K4A7PUP4.js +8 -0
  143. package/dist/prod/locales/cs-CZ-RVP6YORC.js +7 -0
  144. package/dist/prod/locales/da-DK-ENJX4GIQ.js +2 -0
  145. package/dist/prod/locales/de-CH-VYBKDWRU.js +11 -0
  146. package/dist/prod/locales/de-DE-6MCXRRVA.js +11 -0
  147. package/dist/prod/locales/el-GR-WEDZAIPA.js +7 -0
  148. package/dist/prod/locales/en-RNZ7CUK6.js +1 -0
  149. package/dist/prod/locales/es-ES-LLEALNRO.js +11 -0
  150. package/dist/prod/locales/eu-ES-M4Y34NOW.js +8 -0
  151. package/dist/prod/locales/fa-IR-XSMVGGRV.js +9 -0
  152. package/dist/prod/locales/fi-FI-K2D3DDUS.js +6 -0
  153. package/dist/prod/locales/fr-FR-EQKMVJSO.js +12 -0
  154. package/dist/prod/locales/gl-ES-RCPQTYJV.js +6 -0
  155. package/dist/prod/locales/he-IL-RHAGKYKH.js +9 -0
  156. package/dist/prod/locales/hi-IN-3UDCLKHN.js +3 -0
  157. package/dist/prod/locales/hu-HU-T3REA7IL.js +3 -0
  158. package/dist/prod/locales/id-ID-KW4N25IN.js +8 -0
  159. package/dist/prod/locales/it-IT-LJVXK4LO.js +12 -0
  160. package/dist/prod/locales/ja-JP-GGGK3KPX.js +12 -0
  161. package/dist/prod/locales/kaa-TSEHAWJR.js +1 -0
  162. package/dist/prod/locales/kab-KAB-IWXTEINV.js +4 -0
  163. package/dist/prod/locales/kk-KZ-6GNYSAU7.js +1 -0
  164. package/dist/prod/locales/km-KH-ILUXSOEW.js +7 -0
  165. package/dist/prod/locales/ko-KR-FJWHM3OT.js +5 -0
  166. package/dist/prod/locales/ku-TR-DRDDAECA.js +6 -0
  167. package/dist/prod/locales/lt-LT-IYFIPPJI.js +3 -0
  168. package/dist/prod/locales/lv-LV-7F754RSS.js +4 -0
  169. package/dist/prod/locales/mr-IN-BYRIZ3PC.js +9 -0
  170. package/dist/prod/locales/my-MM-RBYJSIJ6.js +1 -0
  171. package/dist/prod/locales/nb-NO-EKTZIYSK.js +8 -0
  172. package/dist/prod/locales/nl-NL-UECYYIUK.js +13 -0
  173. package/dist/prod/locales/nn-NO-JPXGIDBA.js +4 -0
  174. package/dist/prod/locales/oc-FR-4RSIVDPZ.js +4 -0
  175. package/dist/prod/locales/pa-IN-GPHFXISR.js +4 -0
  176. package/dist/prod/locales/percentages-Q7USCRWZ.js +1 -0
  177. package/dist/prod/locales/pl-PL-HKHPAEVK.js +12 -0
  178. package/dist/prod/locales/pt-BR-UBWN6CKP.js +10 -0
  179. package/dist/prod/locales/pt-PT-XDY4S4SD.js +12 -0
  180. package/dist/prod/locales/ro-RO-2B3UXAQO.js +12 -0
  181. package/dist/prod/locales/ru-RU-EW52HAV3.js +10 -0
  182. package/dist/prod/locales/si-LK-PIEHI4JX.js +1 -0
  183. package/dist/prod/locales/sk-SK-TZXYYIFD.js +7 -0
  184. package/dist/prod/locales/sl-SI-VUDQNDF3.js +6 -0
  185. package/dist/prod/locales/sv-SE-IJTJRA7S.js +12 -0
  186. package/dist/prod/locales/ta-IN-Q5PXZT3U.js +6 -0
  187. package/dist/prod/locales/th-TH-HK66ZQXE.js +1 -0
  188. package/dist/prod/locales/tr-TR-CLYYPVPL.js +4 -0
  189. package/dist/prod/locales/uk-UA-YR4OMRYF.js +6 -0
  190. package/dist/prod/locales/uz-UZ-CY4LSY5Y.js +1 -0
  191. package/dist/prod/locales/vi-VN-UDAEMEBG.js +7 -0
  192. package/dist/prod/locales/zh-CN-EGBL23FT.js +11 -0
  193. package/dist/prod/locales/zh-HK-ZOJEG32A.js +1 -0
  194. package/dist/prod/locales/zh-TW-TM5HZP7M.js +13 -0
  195. package/dist/prod/subset-shared.chunk.js +1 -1
  196. package/dist/prod/subset-worker.chunk.js +1 -1
  197. package/dist/types/common/src/colors.d.ts +14 -0
  198. package/dist/types/common/src/constants.d.ts +3 -0
  199. package/dist/types/common/src/keys.d.ts +2 -0
  200. package/dist/types/common/src/points.d.ts +1 -1
  201. package/dist/types/common/src/utils.d.ts +1 -1
  202. package/dist/types/element/src/Scene.d.ts +1 -1
  203. package/dist/types/element/src/align.d.ts +2 -2
  204. package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
  205. package/dist/types/element/src/arrows/focus.d.ts +5 -2
  206. package/dist/types/element/src/binding.d.ts +17 -8
  207. package/dist/types/element/src/bounds.d.ts +5 -9
  208. package/dist/types/element/src/bucketFill.d.ts +110 -0
  209. package/dist/types/element/src/collision.d.ts +1 -1
  210. package/dist/types/element/src/comparisons.d.ts +4 -4
  211. package/dist/types/element/src/convertToShape.d.ts +23 -0
  212. package/dist/types/element/src/distribute.d.ts +2 -2
  213. package/dist/types/element/src/dragElements.d.ts +27 -0
  214. package/dist/types/element/src/duplicate.d.ts +3 -3
  215. package/dist/types/element/src/embeddable.d.ts +2 -2
  216. package/dist/types/element/src/flowchart.d.ts +7 -7
  217. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  218. package/dist/types/element/src/frame.d.ts +4 -4
  219. package/dist/types/element/src/groups.d.ts +9 -9
  220. package/dist/types/element/src/index.d.ts +4 -1
  221. package/dist/types/element/src/linearElementEditor.d.ts +17 -10
  222. package/dist/types/element/src/newElement.d.ts +13 -0
  223. package/dist/types/element/src/renderElement.d.ts +0 -3
  224. package/dist/types/element/src/resizeElements.d.ts +2 -2
  225. package/dist/types/element/src/selection.d.ts +5 -5
  226. package/dist/types/element/src/shape.d.ts +12 -0
  227. package/dist/types/element/src/sortElements.d.ts +10 -0
  228. package/dist/types/element/src/textElement.d.ts +12 -9
  229. package/dist/types/element/src/transform.d.ts +2 -2
  230. package/dist/types/element/src/typeChecks.d.ts +25 -25
  231. package/dist/types/element/src/types.d.ts +2 -1
  232. package/dist/types/element/src/zindex.d.ts +2 -2
  233. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  234. package/dist/types/excalidraw/actions/actionBoundText.d.ts +24 -8
  235. package/dist/types/excalidraw/actions/actionCanvas.d.ts +128 -961
  236. package/dist/types/excalidraw/actions/actionClipboard.d.ts +24 -8
  237. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +12 -4
  238. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +38 -13
  239. package/dist/types/excalidraw/actions/actionDeselect.d.ts +9 -4
  240. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  241. package/dist/types/excalidraw/actions/actionElementLink.d.ts +12 -4
  242. package/dist/types/excalidraw/actions/actionElementLock.d.ts +25 -9
  243. package/dist/types/excalidraw/actions/actionExport.d.ts +26 -10
  244. package/dist/types/excalidraw/actions/actionFrame.d.ts +47 -205
  245. package/dist/types/excalidraw/actions/actionGroup.d.ts +39 -23
  246. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +15 -6
  247. package/dist/types/excalidraw/actions/actionLink.d.ts +13 -5
  248. package/dist/types/excalidraw/actions/actionMenu.d.ts +12 -4
  249. package/dist/types/excalidraw/actions/actionProperties.d.ts +43 -24
  250. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +17 -9
  251. package/dist/types/excalidraw/actions/actionStyles.d.ts +12 -4
  252. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  253. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +14 -6
  254. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +16 -9
  255. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +13 -5
  256. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +13 -5
  257. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +16 -9
  258. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  259. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +13 -5
  260. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +14 -6
  261. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +13 -5
  262. package/dist/types/excalidraw/actions/index.d.ts +1 -2
  263. package/dist/types/excalidraw/actions/manager.d.ts +1 -0
  264. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  265. package/dist/types/excalidraw/actions/types.d.ts +8 -4
  266. package/dist/types/excalidraw/appState.d.ts +10 -5
  267. package/dist/types/excalidraw/clipboard.d.ts +34 -0
  268. package/dist/types/excalidraw/components/Actions.d.ts +17 -12
  269. package/dist/types/excalidraw/components/App.arrowText.d.ts +72 -0
  270. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  271. package/dist/types/excalidraw/components/App.cursor.d.ts +30 -0
  272. package/dist/types/excalidraw/components/App.d.ts +384 -60
  273. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  274. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  275. package/dist/types/excalidraw/components/App.viewport.d.ts +73 -0
  276. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -3
  277. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  278. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +3 -1
  279. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -2
  280. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
  281. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  282. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -1
  283. package/dist/types/excalidraw/components/ColorPicker/topPicksDnD.d.ts +31 -0
  284. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +1 -1
  285. package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
  286. package/dist/types/excalidraw/components/{ToolButton.d.ts → IconButton.d.ts} +16 -19
  287. package/dist/types/excalidraw/components/Island.d.ts +7 -0
  288. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  289. package/dist/types/excalidraw/components/LayerUI.d.ts +5 -2
  290. package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
  291. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
  292. package/dist/types/excalidraw/components/MobileMenu.d.ts +4 -4
  293. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  294. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  295. package/dist/types/excalidraw/components/Popover.d.ts +1 -3
  296. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  297. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  298. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  299. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -2
  300. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  301. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
  302. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  303. package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
  304. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  305. package/dist/types/excalidraw/components/ToolPopover.d.ts +3 -6
  306. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  307. package/dist/types/excalidraw/components/Tools.d.ts +146 -0
  308. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  309. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  310. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -0
  311. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  312. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +2 -2
  313. package/dist/types/excalidraw/components/icons.d.ts +4 -1
  314. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  315. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  316. package/dist/types/excalidraw/context/tunnels.d.ts +0 -1
  317. package/dist/types/excalidraw/data/blob.d.ts +14 -6
  318. package/dist/types/excalidraw/data/index.d.ts +4 -4
  319. package/dist/types/excalidraw/data/json.d.ts +20 -12
  320. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  321. package/dist/types/excalidraw/index.d.ts +5 -3
  322. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  323. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +10 -3
  324. package/dist/types/excalidraw/scene/Renderer.d.ts +11 -11
  325. package/dist/types/excalidraw/scene/export.d.ts +3 -3
  326. package/dist/types/excalidraw/scene/index.d.ts +1 -1
  327. package/dist/types/excalidraw/scene/types.d.ts +4 -3
  328. package/dist/types/excalidraw/snapping.d.ts +7 -7
  329. package/dist/types/excalidraw/types.d.ts +425 -27
  330. package/dist/types/excalidraw/viewport.d.ts +283 -0
  331. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -3
  332. package/dist/types/laser-pointer/src/state.d.ts +1 -0
  333. package/dist/types/math/src/index.d.ts +1 -0
  334. package/dist/types/math/src/pca.d.ts +79 -0
  335. package/dist/types/math/src/polygon.d.ts +25 -1
  336. package/dist/types/utils/src/export.d.ts +3 -3
  337. package/package.json +4 -4
  338. package/dist/dev/chunk-FQHULQ5P.js.map +0 -7
  339. package/dist/dev/chunk-IU2VFRFU.js.map +0 -7
  340. package/dist/dev/chunk-URPEKBQ3.js +0 -69
  341. package/dist/dev/chunk-URPEKBQ3.js.map +0 -7
  342. package/dist/dev/locales/ar-SA-NFU76NHO.js.map +0 -7
  343. package/dist/dev/locales/az-AZ-F7U432OF.js.map +0 -7
  344. package/dist/dev/locales/bg-BG-VMJGHZ3R.js.map +0 -7
  345. package/dist/dev/locales/bn-BD-ABWH5RGF.js.map +0 -7
  346. package/dist/dev/locales/bn-IN-6FBCHDUY.js.map +0 -7
  347. package/dist/dev/locales/ca-ES-UX7K2ENH.js.map +0 -7
  348. package/dist/dev/locales/cs-CZ-TBYIRH36.js.map +0 -7
  349. package/dist/dev/locales/da-DK-KW4TGU6O.js.map +0 -7
  350. package/dist/dev/locales/de-CH-QSJHIHEN.js.map +0 -7
  351. package/dist/dev/locales/de-DE-2WQ5IRPT.js.map +0 -7
  352. package/dist/dev/locales/el-GR-N7JWYMV5.js.map +0 -7
  353. package/dist/dev/locales/es-ES-37LJTLHM.js.map +0 -7
  354. package/dist/dev/locales/eu-ES-2IFCUP7K.js.map +0 -7
  355. package/dist/dev/locales/fa-IR-VDT7BNM4.js.map +0 -7
  356. package/dist/dev/locales/fi-FI-HLYF5ISJ.js.map +0 -7
  357. package/dist/dev/locales/fr-FR-5YNPDFPF.js.map +0 -7
  358. package/dist/dev/locales/gl-ES-S56CRRSA.js.map +0 -7
  359. package/dist/dev/locales/he-IL-7GR3BHPZ.js.map +0 -7
  360. package/dist/dev/locales/hi-IN-AQ7X42V5.js.map +0 -7
  361. package/dist/dev/locales/hu-HU-4HM3N3P3.js.map +0 -7
  362. package/dist/dev/locales/id-ID-P7V2I35Q.js.map +0 -7
  363. package/dist/dev/locales/it-IT-HUGIPGTB.js.map +0 -7
  364. package/dist/dev/locales/ja-JP-XFX5V5ZL.js.map +0 -7
  365. package/dist/dev/locales/kaa-X53Z7Q4I.js.map +0 -7
  366. package/dist/dev/locales/kab-KAB-GGKAECT5.js.map +0 -7
  367. package/dist/dev/locales/kk-KZ-Z6R3NY65.js.map +0 -7
  368. package/dist/dev/locales/km-KH-DGK3UTBI.js.map +0 -7
  369. package/dist/dev/locales/ko-KR-W7QZK3EC.js.map +0 -7
  370. package/dist/dev/locales/ku-TR-3UJE7FNE.js.map +0 -7
  371. package/dist/dev/locales/lt-LT-OTNQMXF6.js.map +0 -7
  372. package/dist/dev/locales/lv-LV-Y44YX4AK.js.map +0 -7
  373. package/dist/dev/locales/mr-IN-MT2HYNUI.js.map +0 -7
  374. package/dist/dev/locales/my-MM-ZBRKQSW3.js.map +0 -7
  375. package/dist/dev/locales/nb-NO-ZY7DB7O2.js.map +0 -7
  376. package/dist/dev/locales/nl-NL-YLVMYG2H.js.map +0 -7
  377. package/dist/dev/locales/nn-NO-4SXLBTTQ.js.map +0 -7
  378. package/dist/dev/locales/oc-FR-NMOJCLB4.js.map +0 -7
  379. package/dist/dev/locales/pa-IN-G5T3AUSW.js.map +0 -7
  380. package/dist/dev/locales/pl-PL-TXUESISZ.js.map +0 -7
  381. package/dist/dev/locales/pt-BR-KEMR6KPT.js.map +0 -7
  382. package/dist/dev/locales/pt-PT-ZCG2G3PR.js.map +0 -7
  383. package/dist/dev/locales/ro-RO-MDAUF4EM.js.map +0 -7
  384. package/dist/dev/locales/ru-RU-ZIRVCAVQ.js.map +0 -7
  385. package/dist/dev/locales/si-LK-FPEI3WT5.js.map +0 -7
  386. package/dist/dev/locales/sk-SK-TZJ3W5LE.js.map +0 -7
  387. package/dist/dev/locales/sl-SI-KIJ3UR57.js.map +0 -7
  388. package/dist/dev/locales/sv-SE-WX2A2Y2N.js.map +0 -7
  389. package/dist/dev/locales/ta-IN-ECFHL2WQ.js.map +0 -7
  390. package/dist/dev/locales/th-TH-XIGNEM6A.js.map +0 -7
  391. package/dist/dev/locales/tr-TR-RCLDMBSM.js.map +0 -7
  392. package/dist/dev/locales/uk-UA-2ADII6GR.js.map +0 -7
  393. package/dist/dev/locales/uz-UZ-COGLAKY3.js.map +0 -7
  394. package/dist/dev/locales/vi-VN-QBW5T274.js.map +0 -7
  395. package/dist/dev/locales/zh-CN-WONZCIPT.js.map +0 -7
  396. package/dist/dev/locales/zh-HK-AJ2UN7VN.js.map +0 -7
  397. package/dist/dev/locales/zh-TW-O73UCU5T.js.map +0 -7
  398. package/dist/prod/chunk-3PELD44J.js +0 -1
  399. package/dist/prod/chunk-3UXKIWVY.js +0 -12
  400. package/dist/prod/chunk-YJSNILE6.js +0 -4
  401. package/dist/prod/data/image-OBEPGJLJ.js +0 -1
  402. package/dist/prod/locales/ar-SA-3G7FTBZJ.js +0 -8
  403. package/dist/prod/locales/az-AZ-HMFZUPFL.js +0 -1
  404. package/dist/prod/locales/bg-BG-Y7OZ2DXF.js +0 -5
  405. package/dist/prod/locales/bn-BD-36TGMEAF.js +0 -3
  406. package/dist/prod/locales/bn-IN-FALW4RB5.js +0 -3
  407. package/dist/prod/locales/ca-ES-MJRJ6GTN.js +0 -8
  408. package/dist/prod/locales/cs-CZ-52YM52ZO.js +0 -7
  409. package/dist/prod/locales/da-DK-QEP42HP6.js +0 -2
  410. package/dist/prod/locales/de-CH-LGHSGO4X.js +0 -7
  411. package/dist/prod/locales/de-DE-GHNPPGTN.js +0 -7
  412. package/dist/prod/locales/el-GR-2UZLGABX.js +0 -7
  413. package/dist/prod/locales/en-AH5BYWXT.js +0 -1
  414. package/dist/prod/locales/es-ES-2NUH2FTW.js +0 -7
  415. package/dist/prod/locales/eu-ES-LW4CGHUU.js +0 -7
  416. package/dist/prod/locales/fa-IR-U32PFECK.js +0 -9
  417. package/dist/prod/locales/fi-FI-G7756HAK.js +0 -6
  418. package/dist/prod/locales/fr-FR-VIEH4DTC.js +0 -12
  419. package/dist/prod/locales/gl-ES-JWQDRMPC.js +0 -6
  420. package/dist/prod/locales/he-IL-YYBNMYP4.js +0 -8
  421. package/dist/prod/locales/hi-IN-4J4RW5AN.js +0 -3
  422. package/dist/prod/locales/hu-HU-MBXXMHSF.js +0 -3
  423. package/dist/prod/locales/id-ID-5U764SVL.js +0 -8
  424. package/dist/prod/locales/it-IT-7BNDK63V.js +0 -12
  425. package/dist/prod/locales/ja-JP-4SLEHWLA.js +0 -7
  426. package/dist/prod/locales/kaa-YHCGFUY5.js +0 -1
  427. package/dist/prod/locales/kab-KAB-LSGAIMUB.js +0 -4
  428. package/dist/prod/locales/kk-KZ-3YNSB7GZ.js +0 -1
  429. package/dist/prod/locales/km-KH-7GXC5R4I.js +0 -7
  430. package/dist/prod/locales/ko-KR-B6Q6YTFE.js +0 -5
  431. package/dist/prod/locales/ku-TR-FBC7A657.js +0 -6
  432. package/dist/prod/locales/lt-LT-NTZ3RRBU.js +0 -3
  433. package/dist/prod/locales/lv-LV-G24LH3KG.js +0 -4
  434. package/dist/prod/locales/mr-IN-FMZEIYNW.js +0 -9
  435. package/dist/prod/locales/my-MM-B6EJQIQF.js +0 -1
  436. package/dist/prod/locales/nb-NO-GEP6ZOEM.js +0 -8
  437. package/dist/prod/locales/nl-NL-4QUIWSVP.js +0 -13
  438. package/dist/prod/locales/nn-NO-P32L2VHA.js +0 -4
  439. package/dist/prod/locales/oc-FR-QRACY6JR.js +0 -4
  440. package/dist/prod/locales/pa-IN-GBDTCDVG.js +0 -4
  441. package/dist/prod/locales/percentages-5DKR754L.js +0 -1
  442. package/dist/prod/locales/pl-PL-2Y6CXCHK.js +0 -12
  443. package/dist/prod/locales/pt-BR-FKWT7UFL.js +0 -6
  444. package/dist/prod/locales/pt-PT-6EMD7SCZ.js +0 -8
  445. package/dist/prod/locales/ro-RO-XERO3Y25.js +0 -12
  446. package/dist/prod/locales/ru-RU-XKTTT4QL.js +0 -10
  447. package/dist/prod/locales/si-LK-MGLC5APF.js +0 -1
  448. package/dist/prod/locales/sk-SK-BMCDJLZC.js +0 -7
  449. package/dist/prod/locales/sl-SI-LAWKY4LU.js +0 -6
  450. package/dist/prod/locales/sv-SE-X2ORO3SG.js +0 -8
  451. package/dist/prod/locales/ta-IN-RZDP4ZDC.js +0 -6
  452. package/dist/prod/locales/th-TH-GY4Y5ENV.js +0 -1
  453. package/dist/prod/locales/tr-TR-CT4QTEX3.js +0 -4
  454. package/dist/prod/locales/uk-UA-XEPSQF3S.js +0 -6
  455. package/dist/prod/locales/uz-UZ-WM3HHDOU.js +0 -1
  456. package/dist/prod/locales/vi-VN-RFG3SAMP.js +0 -7
  457. package/dist/prod/locales/zh-CN-2WGTQQH5.js +0 -11
  458. package/dist/prod/locales/zh-HK-J64WV2A2.js +0 -1
  459. package/dist/prod/locales/zh-TW-4JITCNYX.js +0 -9
  460. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +0 -180
  461. package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
  462. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  463. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  464. package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -12
  465. package/dist/types/excalidraw/components/shapes.d.ts +0 -270
  466. package/dist/types/excalidraw/cursor.d.ts +0 -5
  467. package/dist/types/excalidraw/scene/scroll.d.ts +0 -18
  468. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
  469. package/dist/types/excalidraw/scroll.d.ts +0 -46
  470. /package/dist/dev/{chunk-SJJUXTTF.js.map → chunk-6T5HZJCI.js.map} +0 -0
  471. /package/dist/dev/data/{image-X3JCQEUX.js.map → image-NFLICJEW.js.map} +0 -0
  472. /package/dist/dev/locales/{en-25BPHB4T.js.map → en-RETPDZ4S.js.map} +0 -0
  473. /package/dist/dev/locales/{percentages-ZRLRVMSI.js.map → percentages-DKKGPYTW.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -70,7 +70,111 @@ Please add the latest change on the top under the correct section.
70
70
 
71
71
  ## Excalidraw API
72
72
 
73
- ### Breaking changes
73
+ ### Host-controlled active tool (2026-07-14) [#11665](https://github.com/excalidraw/excalidraw/pull/11665)
74
+
75
+ - Added `activeTool` prop (`{ type: ToolType } | { type: "custom"; customType: string }`) for forcing the active editor tool (controlled). While set, user- and API-driven tool switching is ignored — `setActiveTool` refuses non-matching activations with a console warning, non-forced toolbar buttons render disabled, and the tool-lock toggle (`Q`) is inert — and the editor snaps back if internal flows reset the tool (e.g. `restore()` on scene load). The forced tool behaves as if locked — it doesn't revert to selection after use and drawn elements aren't auto-selected — without mutating `appState.activeTool.locked`, so the user's persisted padlock preference stays untouched. Unset the prop to return tool control to the editor (the current tool stays active). The forced tool must be activatable to take effect — not disabled via `UIOptions.tools`, and (while non-interactive) allowed via `interaction.enabled.tools`; otherwise the editor stays on the `selection` tool and applies the forced tool once it becomes activatable. `image` cannot be forced (its activation opens the file picker). Composes with `interaction.enabled.tools` for presentation-style hosts: force `laser` for the presenter, `selection` + `interaction={false}` for viewers.
76
+
77
+ ### User-driven tools while non-interactive (2026-07-14) [#11665](https://github.com/excalidraw/excalidraw/pull/11665)
78
+
79
+ - Added `interaction.enabled.tools` (`{ laser?: boolean; custom?: boolean }`) — the listed tools stay user-driven while the editor is otherwise non-interactive: pointer input keeps driving the tool when it's the active tool. With `laser` enabled, pointer strokes draw laser trails and pointer positions keep broadcasting through `onPointerUpdate`, so e.g. collaborators see a presenter's laser & cursor while the presenter's editor is otherwise inert. With `custom` enabled, custom tools (`activeTool.type === "custom"`) keep receiving `onPointerDown` / `onPointerUp` — activate them with `locked: true` or they revert to the selection tool (and go inert) after the first pointer interaction. Enabling a tool does not enable user-driven tool _switching_ — the keyboard stays disabled and tool selection remains host-driven (`ExcalidrawAPI.setActiveTool`). Composes with `enabled.navigation`: the enabled tool wins the primary-pointer drag, while wheel input (and wheel-button drag) still pans/zooms. The editor consumes touch input over the canvas while the active tool is enabled (strokes don't scroll the page).
80
+
81
+ - While the editor is non-interactive, `ExcalidrawAPI.setActiveTool` only activates tools allowed via `interaction.enabled.tools` — activating any other tool is refused with a console warning (previously the switch went through even though the tool couldn't be used, e.g. updating the canvas cursor). The same invariant is maintained for the tool state itself: when the active tool loses its exception (e.g. `enabled.tools` changes, or the editor becomes fully non-interactive mid-session), it resets to the default `selection` tool, so stale tool state — e.g. a presenter's laser after handing off — doesn't leak through `onChange` / collab pointer payloads.
82
+
83
+ ### Interaction and UI control (2026-07-05) [#11605](https://github.com/excalidraw/excalidraw/pull/11605)
84
+
85
+ - Added `interaction` prop (`boolean | { enabled?: { navigation?: boolean; links?: boolean; embeds?: boolean; interactiveContent?: boolean; browserZoom?: boolean } }`). When set to `false`, the editor becomes fully inert for the user — no panning, zooming, selecting, editing, keyboard shortcuts, clipboard, or drag&drop. It implies view mode (`appState.viewModeEnabled` reports `true` and cannot be unset while non-interactive), and the page scrolls naturally over the component since wheel/touch input is no longer captured (the browser's own zoom is still prevented over the editor by default). Interactions under `enabled` are opt-in exceptions: with `navigation` allowed, the user can pan (pointer drag, wheel, PageUp/PageDown — shift for horizontal) and zoom (ctrl/cmd + wheel, pinch, and the canvas zoom & zoom-to-fit shortcuts — ctrl/cmd +/-/0, shift+1/2/3) the canvas view-mode style — respecting `appState.scrollConstraints`, so it composes with viewport locking for constrained viewers, while the rest of the keyboard stays disabled and the editor consumes wheel & touch input again (the page no longer scrolls over the editor); with `links` allowed, link icons render and linked elements stay clickable (view-mode behavior: clicking anywhere on a linked element opens its link) while the editor stays otherwise non-interactive — when links are not allowed, link icons are not rendered at all; with `embeds` allowed, embeddable & iframe elements stay interactive (hover & click activates them, view-mode style); `interactiveContent` is an additive shorthand enabling `links` & `embeds` (and future interactive content kinds) together; with `browserZoom` allowed, the browser's own zoom gestures (ctrl/cmd + wheel, pinch, keyboard) stay available over the editor (moot when `navigation` is allowed, since the editor consumes the zoom input instead). The scene still renders and remains fully controllable through the imperative API (`updateScene`, `setViewport`, ...), making it suitable for live previews, thumbnails, and annotation overlays.
86
+
87
+ - Added `ui` prop (`boolean | { enabled: { zoom?: boolean; scrollBackToContent?: boolean } }`). When set to `false`, Excalidraw's default UI is not rendered — toolbar, default menu and footer controls, sidebars, canvas popups, and context menu. The object form likewise hides the default UI but opts the zoom controls and/or scroll-back-to-content button back in. Canvas content (elements, text editing, frame names, embeds) still renders, and the editor remains interactive unless `interaction={false}` is set as well. Host children continue to mount (they may be functional, e.g. a collaboration component), and host-supplied UI — including Excalidraw-exported components such as `<MainMenu>` and `<Footer>` — continues to render together with any supporting dialogs it opens. You're responsible for hiding your own presentational components.
88
+
89
+ ### Tool system & toolbar rework [#11649](https://github.com/excalidraw/excalidraw/pull/11649)
90
+
91
+ The toolbar UI was rewritten from hidden radio/checkbox inputs to real `<button>` elements composed from a central tool registry, and all tool activation now goes through a single `setActiveTool` code path.
92
+
93
+ #### Breaking changes
94
+
95
+ - `ExcalidrawAPI.setActiveTool(tool, keepSelection?)` — the second parameter changed from a boolean to an options object: `setActiveTool(tool, { keepSelection?: boolean; toggle?: boolean = false })`. The hand and eraser tools are now _toggle tools_: activating one records the previously active tool, and if `toggle=true`, activating it again switches back — including via `setActiveTool` itself, so repeated `setActiveTool({ type: "hand" }, { toggle: true })` calls alternate rather than no-op. By default `false` for idempotent activation.
96
+
97
+ - Tool buttons render as semantic `<button>` elements with `aria-pressed` instead of `<label>`-wrapped hidden `<input type="radio">` / `<input type="checkbox">`. If you style or query the editor DOM:
98
+
99
+ - The `.ToolIcon_type_radio`, `.ToolIcon_type_checkbox`, and `.ToolIcon--selected` class names no longer exist — the pressed state is exposed through the `.ToolIcon--checked` class and the `aria-pressed` attribute.
100
+ - `<Sidebar.Trigger>` (including the default Library trigger) renders a `<button>` instead of a `<label>` + checkbox.
101
+
102
+ - Removed internal actions superseded by the `setActiveTool` funnel and the tool registry: `toggleHandTool`, `toggleEraserTool`, `toggleLassoTool`, `setFrameAsActiveTool`, `setEmbeddableAsActiveTool` (these `ActionName`s no longer exist).
103
+
104
+ #### Behavior changes
105
+
106
+ - Hand (`H`) and eraser (`E`) shortcuts now reliably toggle back to the previously active tool (previously inconsistent across platforms and input paths, and unavailable for hand in view mode). Pressing `Escape` while hand or eraser is active likewise returns to the previous tool. Re-clicking their toolbar buttons is a no-op.
107
+ - Clicking the active selection tool switches to lasso on all platforms (previously this only worked on iOS due to a controlled-radio quirk).
108
+ - Tool letter shortcuts are CapsLock-insensitive, `Shift+letter` never switches tools, and `Ctrl+E` no longer toggles the eraser.
109
+ - Switching tools no longer creates undo-history entries.
110
+ - Command palette tool commands are derived from the tool registry: the duplicate "Hand" entry is gone, "Web Embed" was added, and "Lasso" is always listed.
111
+ - Pen mode now activates on the first pen tap on any tool button (previously deferred and occasionally dropped).
112
+
113
+ #### Fixes
114
+
115
+ - Mobile toolbar popovers: the active option stays highlighted after tapping it (the highlight was being suppressed by sticky touch-hover).
116
+ - The active-tool highlight can no longer desync from the actually active tool (controlled-radio DOM desync).
117
+
118
+ ### Viewport control & scroll/zoom locking (2026-07-03) [#11554](https://github.com/excalidraw/excalidraw/pull/11554)
119
+
120
+ `ExcalidrawAPI.scrollToContent` was rebuilt into `ExcalidrawAPI.setViewport()` — a single API for navigating the viewport (`fit: "scale-down" | "contain" | "none"`), locking scroll/zoom to a target (with rubberband overscroll), fitting around the rendered editor UI, and initializing the viewport on scene load.
121
+
122
+ #### Breaking changes
123
+
124
+ - `ExcalidrawAPI.scrollToContent(target?, opts?)` was replaced with `ExcalidrawAPI.setViewport(opts | null)`.
125
+
126
+ ```tsx
127
+ // before
128
+ excalidrawAPI.scrollToContent(element, {
129
+ fitToViewport: true,
130
+ animate: true,
131
+ });
132
+ // after
133
+ excalidrawAPI.setViewport({ target: element, fit: "contain" });
134
+ ```
135
+
136
+ - `target` is required and no longer defaults to the whole scene — pass `target: excalidrawAPI.getSceneElements()` for the old default. Besides element(s) or an element id / element-link URL, it now also accepts `Bounds` and `{ x, y, width?, height? }` rects (missing dimensions default to the viewport size). Deleted and non-scene elements in the target are filtered out with a console warning.
137
+ - `fitToContent` / `fitToViewport` were replaced by `fit: "scale-down" | "contain"` respectively, defaulting to `"scale-down"` (zoomed so the target fits, at most 100%). Previously the default depended on the target: element-id / element-link (string) targets defaulted to fit-to-content — matching the new default — while element(s) or omitted targets defaulted to recentering at the current zoom without changing it; pass `fit: "none"` for that behavior.
138
+ - `animate` / `duration` were replaced by `animation: boolean | { duration?: number }`. Navigation now always animates by default; previously only string targets did, while element(s) targets jumped unless `animate: true` — pass `animation: false` to jump instantly.
139
+ - `canvasOffsets` was replaced by `offsets`, which also accepts UI-derived offsets (see Features below).
140
+ - `viewportZoomFactor`, `minZoom`, and `maxZoom` are no longer supported.
141
+
142
+ - `zoomToFitBounds` takes `fit: "scale-down" | "contain" | "none"` instead of `fitToViewport` / `viewportZoomFactor`, and no longer rounds the resulting zoom down to the nearest 10% step by default — pass `steppedZoom: true` to keep the old rounding.
143
+
144
+ #### Features
145
+
146
+ - `setViewport({ ..., lock })` locks the viewport to the resolved target: `lock.scroll` constrains panning to the target box and `lock.zoom` makes the resolved zoom the minimum zoom (zooming in stays allowed). During an animated navigation into a locked viewport, user pan, zoom, fit, and page-navigation input is consumed without mutating or cancelling the transition; the destination lock is installed together with the final viewport once the animation settles. A newer `setViewport(...)` supersedes the transition and starts from the currently rendered viewport. `setViewport(null)` cancels a pending transition and clears any pending or active lock without navigating; a navigation without `lock` likewise supersedes any lock.
147
+
148
+ - `lock.overscroll` adds a rubberband to the lock: panning can overshoot the constraint by the given amount (viewport px, zoom-independent) and snaps back once wheel input settles or the active pointer or multi-finger gesture is released. Defaults to `true` = `DEFAULT_OVERSCROLL` (150px, exported from the package root); pass a number to customize, or `false` / `0` for a rigid lock. Zooming itself remains hard-clamped against the lock, gliding along its edge instead of overscrolling, and stays available during snap-back without cancelling the rubberband animation or discarding its existing screen-space overscroll.
149
+
150
+ - While a lock is active, the zoom-to-fit shortcuts (shift+1/2/3) target the locked box instead of the scene elements (with no selection), so they return the viewport to the lock's resting state; reset-zoom (ctrl/cmd+0) resets to the lock's minimum zoom instead of 100%. Fit results are always re-clamped against the lock. [#11605](https://github.com/excalidraw/excalidraw/pull/11605)
151
+
152
+ - Added `<Excalidraw initialState={{ viewport }} />` for initializing the viewport (and optionally installing a lock) once on scene load. Accepts the same options as `setViewport` except `animation`, and takes precedence over `initialData.scrollToContent`.
153
+
154
+ - The `offsets` option (on `setViewport` and `initialState.viewport`) insets the usable viewport per side so targets aren't fitted underneath overlaid UI. It combines static pixel sides with `ui: true | ViewportOffsetsOptions`, which measures the currently rendered editor UI (toolbar, styles panel, sidebar…) — with configurable padding, per-side overrides, and reserving space for currently-hidden surfaces (`reserve: { stylesPanel?: boolean; sidebar?: boolean }`). The same measurement is exposed through the new `ExcalidrawAPI.getViewportOffsets(opts?)`, and custom UI rendered inside the editor container can opt into being measured via the `data-viewport-ui="top" | "bottom" | "side"` attribute.
155
+
156
+ ### Other Breaking changes
157
+
158
+ - `UIAppState` no longer includes `zoom`, `shouldCacheIgnoreZoom`, and the canvas-interaction transients `snapLines`, `originSnapOffset`, `suggestedBinding`, `frameToHighlight`, and `elementsToHighlight`. These update per pointermove or per animation frame and no longer re-render the editor UI, so UI render props receiving `UIAppState` (`renderCustomStats`, custom `<Footer/>` content, etc.) don't receive them anymore and would render stale values if they read them off the full `AppState`. Subscribe through `useExcalidrawStateValue` instead — the component re-renders only when the selected value changes:
159
+
160
+ ```tsx
161
+ import { useExcalidrawStateValue } from "@excalidraw/excalidraw";
162
+
163
+ const ZoomReadout = () => {
164
+ // `undefined` on initial render, before the editor API initializes
165
+ const zoomValue = useExcalidrawStateValue(
166
+ (appState) => appState.zoom.value,
167
+ );
168
+
169
+ if (zoomValue == null) {
170
+ return null;
171
+ }
172
+
173
+ return <div>{(zoomValue * 100).toFixed(0)}%</div>;
174
+ };
175
+ ```
176
+
177
+ Outside of React components, you can also subscribe via `ExcalidrawAPI.onStateChange((appState) => appState.zoom.value, (zoomValue) => {...})`, or keep using the existing `onScrollChange(scrollX, scrollY, zoom)` prop.
74
178
 
75
179
  - Theme changes initiated by the default UI are now delegated to `<Excalidraw onThemeChange={(theme) => ...} />` when supplied. If `onThemeChange` is not supplied, light/dark theme toggling still falls back to updating the internal editor state.
76
180
 
@@ -80,11 +184,11 @@ Please add the latest change on the top under the correct section.
80
184
  - `UIOptions.canvasActions.toggleTheme` still controls default theme UI availability. When it is `null`, it defaults to `true` if `props.theme` is omitted or `props.onThemeChange` is supplied, and otherwise defaults to disabled.
81
185
 
82
186
  - Renamed the `excalidrawAPI` prop to `onExcalidrawAPI`.
83
- - `onExcalidrawAPI` is now called on mount (instead of during constructor), and later on unmount (with `null` value). The API may be removed altogether in the future (you can use `onMount` & `onUmount` to manage the `ExcalidrawAPI` object (e.g. to cache it to a global state), already).
187
+ - `onExcalidrawAPI` is now called on mount (instead of during constructor), and later on unmount (with `null` value). The API may be removed altogether in the future (you can use `onMount` & `onUnmount` to manage the `ExcalidrawAPI` object (e.g. to cache it to a global state), already).
84
188
 
85
- ### Features
189
+ ### Other Features
86
190
 
87
- - Added `ExcalidrawAPI.isDestroyed` flag. Set to `true` once the editor unmounts. Calling any `get*` method, `onStateChange`, or `onEvent` on a destroyed API instance will throw in development and `console.error` in production. The `ExcalidrawAPI` will be reset to `null` on umount, but to be extra safe, you should check `ExcalidrawAPI.isDestroyed` before calling these methods to guard against subtle race conditions in your code.
191
+ - Added `ExcalidrawAPI.isDestroyed` flag. Set to `true` once the editor unmounts. Calling any `get*` method, `onStateChange`, or `onEvent` on a destroyed API instance will throw in development and `console.error` in production. The `ExcalidrawAPI` will be reset to `null` on unmount, but to be extra safe, you should check `ExcalidrawAPI.isDestroyed` before calling these methods to guard against subtle race conditions in your code.
88
192
 
89
193
  - Added `onMount`, `onInitialize`, and `onUnmount` props. `onMount` receives `{ excalidrawAPI, container }` once the editor root is mounted. `onInitialize` fires once the initial scene has loaded. `onUnmount` fires just before unmounting.
90
194
 
@@ -98,7 +202,10 @@ Please add the latest change on the top under the correct section.
98
202
  });
99
203
 
100
204
  api.onEvent("editor:initialize").then((readyApi) => {
101
- readyApi.scrollToContent();
205
+ readyApi.setViewport({
206
+ target: readyApi.getSceneElements(),
207
+ animation: false,
208
+ });
102
209
  });
103
210
  }}
104
211
  />
@@ -108,7 +215,7 @@ Please add the latest change on the top under the correct section.
108
215
 
109
216
  - Also added `"editor:unmount"` lifecycle event, only accessible via `api.onEvent("editor:unmount")`.
110
217
 
111
- - Exported `<ExcalidrawAPIProvider/>`, `useExcalidrawAPI()`, `useAppStateValue(prop | props | selectorFunction)`, and `useOnExcalidrawStateChange(prop | props | selectorFunction, callback)` from the package. The imperative API also now exposes `onStateChange(prop | props | selectorFunction, callback?)`, and `onEvent(name, callback)`.
218
+ - Exported `<ExcalidrawAPIProvider/>`, `useExcalidrawAPI()`, `useExcalidrawStateValue(prop | props | selectorFunction)`, and `useOnExcalidrawStateChange(prop | props | selectorFunction, callback)` from the package. The imperative API also now exposes `onStateChange(prop | props | selectorFunction, callback?)`, and `onEvent(name, callback)`.
112
219
 
113
220
  ```tsx
114
221
  <ExcalidrawAPIProvider>
@@ -117,12 +224,12 @@ Please add the latest change on the top under the correct section.
117
224
  </ExcalidrawAPIProvider>;
118
225
 
119
226
  function Logger() {
120
- // initially null before the ExcalidrawAPIProvider initializes ater
227
+ // initially null before the ExcalidrawAPIProvider initializes after
121
228
  // <Excalidraw/> renders
122
229
  // When <Excalidraw/> unmounts, is reset back to null
123
230
  const api = useExcalidrawAPI();
124
231
 
125
- useAppStateValue("viewModeEnabled", (viewModeEnabled) => {
232
+ useExcalidrawStateValue("viewModeEnabled", (viewModeEnabled) => {
126
233
  console.log("view mode changed:", viewModeEnabled);
127
234
  });
128
235
 
@@ -156,6 +263,12 @@ Please add the latest change on the top under the correct section.
156
263
 
157
264
  ## Excalidraw Library
158
265
 
266
+ ### Breaking changes
267
+
268
+ - `updateActiveTool` (from `@excalidraw/common`): the `lastActiveToolBeforeEraser` property of the `data` parameter was renamed to `lastActiveTool` (it was already stored under that name on `appState.activeTool`, and is no longer eraser-specific).
269
+
270
+ - `getClosestElementBounds` is no longer exported from `@excalidraw/element`. Use `getCommonBounds` / `getElementBounds` from `@excalidraw/element`, or reimplement the closest-target distance check with `getElementBounds` if you need the same behavior [#11554](https://github.com/excalidraw/excalidraw/pull/11554).
271
+
159
272
  ## 0.18.0 (2025-03-11)
160
273
 
161
274
  ### Highlights
@@ -4926,4 +5039,163 @@ First release of `@excalidraw/excalidraw`## Excalidraw Library
4926
5039
  - Incorrect import for color (was moved to common)
4927
5040
 
4928
5041
  ---
5042
+ ## Excalidraw Library
5043
+
5044
+ **_This section lists the updates made to the excalidraw library and will not affect the integration._**
5045
+
5046
+ ### Features
5047
+
5048
+ - Add ability to turn off compression for files that are smaller than a given size
5049
+
5050
+ - Add lock tool to the dropdown and also add the status of the extra tools to be the same icon as the selected tool
5051
+
5052
+ - Add view mode button
5053
+
5054
+ - Add multiple image copy paste or drag and drop
5055
+
5056
+ - Multiple image additions from clipboard
5057
+
5058
+ - Add arrange elements action
5059
+
5060
+ - Add top picks to appProps for both stoke color and background color
5061
+
5062
+ ### Fixes
5063
+
5064
+ - Issues
5065
+
5066
+ - Make mobile mode more myoc looking
5067
+
5068
+ - Add normalise functionality
5069
+
5070
+ - Update with excalidraw
5071
+
5072
+ - Fix imports
5073
+
5074
+ - Fix mutateGroup to use scene.mutateGroup
5075
+
5076
+ - Imports
5077
+
5078
+ - Ensure that fileId is different for compressed vs uncompressed file
5079
+
5080
+ - Remove not working prop for dontResizeLimitMBs
5081
+
5082
+ - Add smartview for mobile
5083
+
5084
+ - Hide the alignment buttons if there is only one group selected (they do nothing if only one group is selected)
5085
+
5086
+ - Use css vars already provided instead of hard coding directly from oc-gray
5087
+
5088
+ - Remove unused variables
5089
+
5090
+ - Pass the new top pick color props properly
5091
+
5092
+ - Incorrect import for color (was moved to common)
5093
+
5094
+ ---
5095
+ ## Excalidraw Library
5096
+
5097
+ **_This section lists the updates made to the excalidraw library and will not affect the integration._**
5098
+
5099
+ ### Features
5100
+
5101
+ - Add ability to turn off compression for files that are smaller than a given size
5102
+
5103
+ - Add lock tool to the dropdown and also add the status of the extra tools to be the same icon as the selected tool
5104
+
5105
+ - Add view mode button
5106
+
5107
+ - Add multiple image copy paste or drag and drop
5108
+
5109
+ - Multiple image additions from clipboard
5110
+
5111
+ - Add arrange elements action
5112
+
5113
+ - Add top picks to appProps for both stoke color and background color
5114
+
5115
+ ### Fixes
5116
+
5117
+ - Issues
5118
+
5119
+ - Make mobile mode more myoc looking
5120
+
5121
+ - Add normalise functionality
5122
+
5123
+ - Update with excalidraw
5124
+
5125
+ - Fix imports
5126
+
5127
+ - Fix mutateGroup to use scene.mutateGroup
5128
+
5129
+ - Imports
5130
+
5131
+ - Ensure that fileId is different for compressed vs uncompressed file
5132
+
5133
+ - Remove not working prop for dontResizeLimitMBs
5134
+
5135
+ - Add smartview for mobile
5136
+
5137
+ - Hide the alignment buttons if there is only one group selected (they do nothing if only one group is selected)
5138
+
5139
+ - Use css vars already provided instead of hard coding directly from oc-gray
5140
+
5141
+ - Remove unused variables
5142
+
5143
+ - Pass the new top pick color props properly
5144
+
5145
+ - Incorrect import for color (was moved to common)
5146
+
5147
+ ---
5148
+ ## Excalidraw Library
5149
+
5150
+ **_This section lists the updates made to the excalidraw library and will not affect the integration._**
5151
+
5152
+ ### Features
5153
+
5154
+ - Add ability to turn off compression for files that are smaller than a given size
5155
+
5156
+ - Add lock tool to the dropdown and also add the status of the extra tools to be the same icon as the selected tool
5157
+
5158
+ - Add view mode button
5159
+
5160
+ - Add multiple image copy paste or drag and drop
5161
+
5162
+ - Multiple image additions from clipboard
5163
+
5164
+ - Add arrange elements action
5165
+
5166
+ - Add top picks to appProps for both stoke color and background color
5167
+
5168
+ ### Fixes
5169
+
5170
+ - Issues
5171
+
5172
+ - Make mobile mode more myoc looking
5173
+
5174
+ - Add normalise functionality
5175
+
5176
+ - Update with excalidraw
5177
+
5178
+ - Fix imports
5179
+
5180
+ - Fix mutateGroup to use scene.mutateGroup
5181
+
5182
+ - Imports
5183
+
5184
+ - Ensure that fileId is different for compressed vs uncompressed file
5185
+
5186
+ - Remove not working prop for dontResizeLimitMBs
5187
+
5188
+ - Add smartview for mobile
5189
+
5190
+ - Hide the alignment buttons if there is only one group selected (they do nothing if only one group is selected)
5191
+
5192
+ - Use css vars already provided instead of hard coding directly from oc-gray
5193
+
5194
+ - Remove unused variables
5195
+
5196
+ - Pass the new top pick color props properly
5197
+
5198
+ - Incorrect import for color (was moved to common)
5199
+
5200
+ ---
4929
5201
 
@@ -1,7 +1,7 @@
1
1
  // <define:import.meta.env>
2
- var define_import_meta_env_default = { MODE: "development", VITE_APP_BACKEND_V2_GET_URL: "https://json-dev.excalidraw.com/api/v2/", VITE_APP_BACKEND_V2_POST_URL: "https://json-dev.excalidraw.com/api/v2/post/", VITE_APP_LIBRARY_URL: "https://libraries.excalidraw.com", VITE_APP_LIBRARY_BACKEND: "https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries", VITE_APP_WS_SERVER_URL: "http://localhost:3002", VITE_APP_PLUS_LP: "https://plus.excalidraw.com", VITE_APP_PLUS_APP: "http://localhost:3000", VITE_APP_AI_BACKEND: "http://localhost:3016", VITE_APP_FIREBASE_CONFIG: '{"apiKey":"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8","authDomain":"excalidraw-oss-dev.firebaseapp.com","projectId":"excalidraw-oss-dev","storageBucket":"excalidraw-oss-dev.appspot.com","messagingSenderId":"664559512677","appId":"1:664559512677:web:a385181f2928d328a7aa8c"}', VITE_APP_DEV_DISABLE_LIVE_RELOAD: "", VITE_APP_ENABLE_TRACKING: "true", FAST_REFRESH: "false", VITE_APP_PORT: "3001", VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: "", VITE_APP_COLLAPSE_OVERLAY: "true", VITE_APP_ENABLE_ESLINT: "true", VITE_APP_ENABLE_PWA: "false", VITE_APP_PLUS_EXPORT_PUBLIC_KEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm2g5T+Rub6Kbf1Mf57t0\n7r2zeHuVg4dla3r5ryXMswtzz6x767octl6oLThn33mQsPSy3GKglFZoCTXJR4ij\nba8SxB04sL/N8eRrKja7TFWjCVtRwTTfyy771NYYNFVJclkxHyE5qw4m27crHF1y\nUNWEjuqNMi/lwAErS9fFa2oJlWyT8U7zzv/5kQREkxZI6y9v0AF3qcbsy2731FnD\ns9ChJvOUW9toIab2gsIdrKW8ZNpu084ZFVKb6LNjvIXI1Se4oMTHeszXzNptzlot\nkdxxjOoaQMAyfljFSot1F1FlU6MQlag7UnFGvFjRHN1JI5q4K+n3a67DX+TMyRqS\nHQIDAQAB", VITE_APP_DISABLE_PREVENT_UNLOAD: "", PKG_NAME: "@myoc/excalidraw", PKG_VERSION: "0.19.519", DEV: true };
2
+ var define_import_meta_env_default = { MODE: "development", VITE_APP_BACKEND_V2_GET_URL: "https://json-dev.excalidraw.com/api/v2/", VITE_APP_BACKEND_V2_POST_URL: "https://json-dev.excalidraw.com/api/v2/post/", VITE_APP_LIBRARY_URL: "https://libraries.excalidraw.com", VITE_APP_LIBRARY_BACKEND: "https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries", VITE_APP_WS_SERVER_URL: "http://localhost:3002", VITE_APP_PLUS_LP: "https://plus.excalidraw.com", VITE_APP_PLUS_APP: "http://localhost:3000", VITE_APP_AI_BACKEND: "http://localhost:3016", VITE_APP_FIREBASE_CONFIG: '{"apiKey":"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8","authDomain":"excalidraw-oss-dev.firebaseapp.com","projectId":"excalidraw-oss-dev","storageBucket":"excalidraw-oss-dev.appspot.com","messagingSenderId":"664559512677","appId":"1:664559512677:web:a385181f2928d328a7aa8c"}', VITE_APP_DEV_DISABLE_LIVE_RELOAD: "", VITE_APP_ENABLE_TRACKING: "true", FAST_REFRESH: "false", VITE_APP_PORT: "3001", VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: "", VITE_APP_COLLAPSE_OVERLAY: "true", VITE_APP_ENABLE_ESLINT: "true", VITE_APP_ENABLE_PWA: "false", VITE_APP_PLUS_EXPORT_PUBLIC_KEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm2g5T+Rub6Kbf1Mf57t0\n7r2zeHuVg4dla3r5ryXMswtzz6x767octl6oLThn33mQsPSy3GKglFZoCTXJR4ij\nba8SxB04sL/N8eRrKja7TFWjCVtRwTTfyy771NYYNFVJclkxHyE5qw4m27crHF1y\nUNWEjuqNMi/lwAErS9fFa2oJlWyT8U7zzv/5kQREkxZI6y9v0AF3qcbsy2731FnD\ns9ChJvOUW9toIab2gsIdrKW8ZNpu084ZFVKb6LNjvIXI1Se4oMTHeszXzNptzlot\nkdxxjOoaQMAyfljFSot1F1FlU6MQlag7UnFGvFjRHN1JI5q4K+n3a67DX+TMyRqS\nHQIDAQAB", VITE_APP_DISABLE_PREVENT_UNLOAD: "", PKG_NAME: "@myoc/excalidraw", PKG_VERSION: "0.19.521", DEV: true };
3
3
 
4
4
  export {
5
5
  define_import_meta_env_default
6
6
  };
7
- //# sourceMappingURL=chunk-SJJUXTTF.js.map
7
+ //# sourceMappingURL=chunk-6T5HZJCI.js.map
@@ -0,0 +1,69 @@
1
+ // locales/percentages.json
2
+ var en = 100;
3
+ var kaa = 20;
4
+ var percentages_default = {
5
+ "ar-SA": 86,
6
+ "az-AZ": 23,
7
+ "bg-BG": 61,
8
+ "bn-BD": 37,
9
+ "bn-IN": 37,
10
+ "ca-ES": 79,
11
+ "cs-CZ": 72,
12
+ "da-DK": 27,
13
+ "de-CH": 96,
14
+ "de-DE": 96,
15
+ "el-GR": 75,
16
+ en,
17
+ "es-ES": 96,
18
+ "eu-ES": 96,
19
+ "fa-IR": 80,
20
+ "fi-FI": 58,
21
+ "fr-FR": 98,
22
+ "gl-ES": 59,
23
+ "he-IL": 99,
24
+ "hi-IN": 81,
25
+ "hu-HU": 63,
26
+ "id-ID": 99,
27
+ "it-IT": 99,
28
+ "ja-JP": 94,
29
+ kaa,
30
+ "kab-KAB": 53,
31
+ "kk-KZ": 12,
32
+ "km-KH": 53,
33
+ "ko-KR": 85,
34
+ "ku-TR": 56,
35
+ "lt-LT": 32,
36
+ "lv-LV": 49,
37
+ "mr-IN": 79,
38
+ "my-MM": 23,
39
+ "nb-NO": 79,
40
+ "nl-NL": 96,
41
+ "nn-NO": 42,
42
+ "oc-FR": 74,
43
+ "pa-IN": 51,
44
+ "pl-PL": 87,
45
+ "pt-BR": 96,
46
+ "pt-PT": 96,
47
+ "ro-RO": 100,
48
+ "ru-RU": 96,
49
+ "si-LK": 65,
50
+ "sk-SK": 96,
51
+ "sl-SI": 79,
52
+ "sv-SE": 96,
53
+ "ta-IN": 76,
54
+ "th-TH": 63,
55
+ "tr-TR": 95,
56
+ "uk-UA": 90,
57
+ "uz-UZ": 0,
58
+ "vi-VN": 66,
59
+ "zh-CN": 96,
60
+ "zh-HK": 15,
61
+ "zh-TW": 99
62
+ };
63
+
64
+ export {
65
+ en,
66
+ kaa,
67
+ percentages_default
68
+ };
69
+ //# sourceMappingURL=chunk-72CYJXY3.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../locales/percentages.json"],
4
+ "sourcesContent": ["{\n \"ar-SA\": 86,\n \"az-AZ\": 23,\n \"bg-BG\": 61,\n \"bn-BD\": 37,\n \"bn-IN\": 37,\n \"ca-ES\": 79,\n \"cs-CZ\": 72,\n \"da-DK\": 27,\n \"de-CH\": 96,\n \"de-DE\": 96,\n \"el-GR\": 75,\n \"en\": 100,\n \"es-ES\": 96,\n \"eu-ES\": 96,\n \"fa-IR\": 80,\n \"fi-FI\": 58,\n \"fr-FR\": 98,\n \"gl-ES\": 59,\n \"he-IL\": 99,\n \"hi-IN\": 81,\n \"hu-HU\": 63,\n \"id-ID\": 99,\n \"it-IT\": 99,\n \"ja-JP\": 94,\n \"kaa\": 20,\n \"kab-KAB\": 53,\n \"kk-KZ\": 12,\n \"km-KH\": 53,\n \"ko-KR\": 85,\n \"ku-TR\": 56,\n \"lt-LT\": 32,\n \"lv-LV\": 49,\n \"mr-IN\": 79,\n \"my-MM\": 23,\n \"nb-NO\": 79,\n \"nl-NL\": 96,\n \"nn-NO\": 42,\n \"oc-FR\": 74,\n \"pa-IN\": 51,\n \"pl-PL\": 87,\n \"pt-BR\": 96,\n \"pt-PT\": 96,\n \"ro-RO\": 100,\n \"ru-RU\": 96,\n \"si-LK\": 65,\n \"sk-SK\": 96,\n \"sl-SI\": 79,\n \"sv-SE\": 96,\n \"ta-IN\": 76,\n \"th-TH\": 63,\n \"tr-TR\": 95,\n \"uk-UA\": 90,\n \"uz-UZ\": 0,\n \"vi-VN\": 66,\n \"zh-CN\": 96,\n \"zh-HK\": 15,\n \"zh-TW\": 99\n}\n"],
5
+ "mappings": ";AAYE,SAAM;AAaN,UAAO;AAzBT;AAAA,EACE,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT;AAAA,EACA,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT;AAAA,EACA,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;",
6
+ "names": []
7
+ }