@excalidraw/excalidraw 0.18.0-4e471c107 → 0.18.0-51ad895

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 (425) hide show
  1. package/dist/dev/{chunk-QF5FRM6O.js → chunk-OCFTI2BU.js} +49 -26
  2. package/dist/dev/chunk-OCFTI2BU.js.map +7 -0
  3. package/dist/dev/{chunk-CBGOW5JB.js → chunk-SJTAY27F.js} +185 -389
  4. package/dist/dev/chunk-SJTAY27F.js.map +7 -0
  5. package/dist/dev/chunk-WCM2OLWY.js +69 -0
  6. package/dist/dev/chunk-WCM2OLWY.js.map +7 -0
  7. package/dist/dev/data/{image-SURZSZNX.js → image-S2GFZH7W.js} +2 -2
  8. package/dist/dev/index.css +944 -498
  9. package/dist/dev/index.css.map +3 -3
  10. package/dist/dev/index.js +10405 -7221
  11. package/dist/dev/index.js.map +4 -4
  12. package/dist/dev/locales/{ar-SA-XORAP2EK.js → ar-SA-JK5MQ7TT.js} +300 -142
  13. package/dist/dev/locales/ar-SA-JK5MQ7TT.js.map +7 -0
  14. package/dist/dev/locales/{az-AZ-NAUU3Z4Y.js → az-AZ-2PAD62G4.js} +241 -83
  15. package/dist/dev/locales/az-AZ-2PAD62G4.js.map +7 -0
  16. package/dist/dev/locales/{bg-BG-AAABLFCY.js → bg-BG-HUKVYCRK.js} +229 -71
  17. package/dist/dev/locales/bg-BG-HUKVYCRK.js.map +7 -0
  18. package/dist/dev/locales/{bn-BD-PM4AC5WG.js → bn-BD-V2CQI46P.js} +209 -51
  19. package/dist/dev/locales/bn-BD-V2CQI46P.js.map +7 -0
  20. package/dist/dev/locales/bn-IN-MBEO4C3J.js +744 -0
  21. package/dist/dev/locales/bn-IN-MBEO4C3J.js.map +7 -0
  22. package/dist/dev/locales/{ca-ES-YNNMFRQX.js → ca-ES-KWEKW4C3.js} +275 -117
  23. package/dist/dev/locales/ca-ES-KWEKW4C3.js.map +7 -0
  24. package/dist/dev/locales/{cs-CZ-DGZA5IKG.js → cs-CZ-W5AHZB5H.js} +229 -71
  25. package/dist/dev/locales/cs-CZ-W5AHZB5H.js.map +7 -0
  26. package/dist/dev/locales/{da-DK-N76F4QAJ.js → da-DK-ITTM6YM4.js} +298 -140
  27. package/dist/dev/locales/da-DK-ITTM6YM4.js.map +7 -0
  28. package/dist/dev/locales/de-CH-OAWPDQFJ.js +744 -0
  29. package/dist/dev/locales/de-CH-OAWPDQFJ.js.map +7 -0
  30. package/dist/dev/locales/{de-DE-DMRXZ2SZ.js → de-DE-HE4SJIAA.js} +199 -41
  31. package/dist/dev/locales/de-DE-HE4SJIAA.js.map +7 -0
  32. package/dist/dev/locales/{el-GR-HIKPLEXI.js → el-GR-QXASZLPE.js} +274 -116
  33. package/dist/dev/locales/el-GR-QXASZLPE.js.map +7 -0
  34. package/dist/dev/locales/{en-SMAPCEOQ.js → en-MLZIHOCR.js} +4 -2
  35. package/dist/dev/locales/{es-ES-AQYVXC32.js → es-ES-EDA76ZAF.js} +212 -54
  36. package/dist/dev/locales/es-ES-EDA76ZAF.js.map +7 -0
  37. package/dist/dev/locales/{eu-ES-3TOEU5DE.js → eu-ES-TF2DGTZU.js} +210 -52
  38. package/dist/dev/locales/eu-ES-TF2DGTZU.js.map +7 -0
  39. package/dist/dev/locales/{fa-IR-527GAKUP.js → fa-IR-ITKFQ7QV.js} +286 -128
  40. package/dist/dev/locales/fa-IR-ITKFQ7QV.js.map +7 -0
  41. package/dist/dev/locales/{fi-FI-M3WLVDFP.js → fi-FI-UWZRVXFI.js} +240 -82
  42. package/dist/dev/locales/fi-FI-UWZRVXFI.js.map +7 -0
  43. package/dist/dev/locales/{fr-FR-YE4VDJFI.js → fr-FR-Z3SBW42Y.js} +203 -45
  44. package/dist/dev/locales/fr-FR-Z3SBW42Y.js.map +7 -0
  45. package/dist/dev/locales/{gl-ES-KMXUYGUN.js → gl-ES-2QCVIBFP.js} +212 -54
  46. package/dist/dev/locales/gl-ES-2QCVIBFP.js.map +7 -0
  47. package/dist/dev/locales/he-IL-WJNUHU26.js +744 -0
  48. package/dist/dev/locales/he-IL-WJNUHU26.js.map +7 -0
  49. package/dist/dev/locales/hi-IN-XGMO235V.js +744 -0
  50. package/dist/dev/locales/hi-IN-XGMO235V.js.map +7 -0
  51. package/dist/dev/locales/{hu-HU-VIYZI3X4.js → hu-HU-37FDQFIS.js} +238 -80
  52. package/dist/dev/locales/hu-HU-37FDQFIS.js.map +7 -0
  53. package/dist/dev/locales/{id-ID-22TWZNLA.js → id-ID-EJIDCO4E.js} +245 -87
  54. package/dist/dev/locales/id-ID-EJIDCO4E.js.map +7 -0
  55. package/dist/dev/locales/{it-IT-MDEQ2SG3.js → it-IT-HD26UZNF.js} +202 -44
  56. package/dist/dev/locales/it-IT-HD26UZNF.js.map +7 -0
  57. package/dist/dev/locales/{ja-JP-K2DI4W6B.js → ja-JP-37FC23PR.js} +247 -89
  58. package/dist/dev/locales/ja-JP-37FC23PR.js.map +7 -0
  59. package/dist/dev/locales/{kaa-6BPSNM3R.js → kaa-7ZYDFVKA.js} +202 -44
  60. package/dist/dev/locales/kaa-7ZYDFVKA.js.map +7 -0
  61. package/dist/dev/locales/{kab-KAB-2S7ZURK7.js → kab-KAB-MILWXBA6.js} +210 -52
  62. package/dist/dev/locales/kab-KAB-MILWXBA6.js.map +7 -0
  63. package/dist/dev/locales/{kk-KZ-UJPYGRQQ.js → kk-KZ-7BWTPIAV.js} +175 -17
  64. package/dist/dev/locales/kk-KZ-7BWTPIAV.js.map +7 -0
  65. package/dist/dev/locales/{km-KH-M5T5JKUE.js → km-KH-BV4P2KSZ.js} +198 -40
  66. package/dist/dev/locales/km-KH-BV4P2KSZ.js.map +7 -0
  67. package/dist/dev/locales/{ko-KR-RQX37SNF.js → ko-KR-TSXE5P7B.js} +218 -60
  68. package/dist/dev/locales/ko-KR-TSXE5P7B.js.map +7 -0
  69. package/dist/dev/locales/{ku-TR-5XJDIERL.js → ku-TR-ASSXNN3U.js} +198 -40
  70. package/dist/dev/locales/ku-TR-ASSXNN3U.js.map +7 -0
  71. package/dist/dev/locales/{lt-LT-MGUBX6CA.js → lt-LT-G7RZYQQU.js} +179 -21
  72. package/dist/dev/locales/lt-LT-G7RZYQQU.js.map +7 -0
  73. package/dist/dev/locales/{lv-LV-MD7N5VHD.js → lv-LV-DXNPBJZU.js} +196 -38
  74. package/dist/dev/locales/lv-LV-DXNPBJZU.js.map +7 -0
  75. package/dist/dev/locales/{mr-IN-4XWMNGQC.js → mr-IN-7F2ZCTCF.js} +204 -46
  76. package/dist/dev/locales/mr-IN-7F2ZCTCF.js.map +7 -0
  77. package/dist/dev/locales/{my-MM-O4Z74GN5.js → my-MM-NBI3KQGW.js} +181 -23
  78. package/dist/dev/locales/my-MM-NBI3KQGW.js.map +7 -0
  79. package/dist/dev/locales/{nb-NO-BMB73KRH.js → nb-NO-4DCTQT6L.js} +220 -62
  80. package/dist/dev/locales/nb-NO-4DCTQT6L.js.map +7 -0
  81. package/dist/dev/locales/{nl-NL-F2257BLQ.js → nl-NL-RCSOXLW3.js} +218 -60
  82. package/dist/dev/locales/nl-NL-RCSOXLW3.js.map +7 -0
  83. package/dist/dev/locales/{nn-NO-NCORG7TS.js → nn-NO-FR534JV5.js} +201 -43
  84. package/dist/dev/locales/nn-NO-FR534JV5.js.map +7 -0
  85. package/dist/dev/locales/{oc-FR-ATFBDMF6.js → oc-FR-YQCIKZIK.js} +220 -62
  86. package/dist/dev/locales/oc-FR-YQCIKZIK.js.map +7 -0
  87. package/dist/dev/locales/{pa-IN-D2I375G4.js → pa-IN-UM43JGD2.js} +190 -32
  88. package/dist/dev/locales/pa-IN-UM43JGD2.js.map +7 -0
  89. package/dist/dev/locales/{percentages-YKFLWNK2.js → percentages-TR7IWPFY.js} +2 -2
  90. package/dist/dev/locales/{pl-PL-YJHOWAAW.js → pl-PL-2UGKA6HK.js} +214 -56
  91. package/dist/dev/locales/pl-PL-2UGKA6HK.js.map +7 -0
  92. package/dist/dev/locales/{pt-BR-APOPYZJ7.js → pt-BR-H23QFYE3.js} +237 -79
  93. package/dist/dev/locales/pt-BR-H23QFYE3.js.map +7 -0
  94. package/dist/dev/locales/pt-PT-RHKJH5I5.js +744 -0
  95. package/dist/dev/locales/pt-PT-RHKJH5I5.js.map +7 -0
  96. package/dist/dev/locales/{ro-RO-L575VRQA.js → ro-RO-IIFONL3T.js} +203 -45
  97. package/dist/dev/locales/ro-RO-IIFONL3T.js.map +7 -0
  98. package/dist/dev/locales/{ru-RU-BLG6HZG5.js → ru-RU-QEP6D7GK.js} +253 -95
  99. package/dist/dev/locales/ru-RU-QEP6D7GK.js.map +7 -0
  100. package/dist/dev/locales/si-LK-LZYJQLHF.js +744 -0
  101. package/dist/dev/locales/si-LK-LZYJQLHF.js.map +7 -0
  102. package/dist/dev/locales/{sk-SK-DY6IPO5U.js → sk-SK-G2J6PSCB.js} +200 -42
  103. package/dist/dev/locales/sk-SK-G2J6PSCB.js.map +7 -0
  104. package/dist/dev/locales/{sl-SI-5DZSRA47.js → sl-SI-QJT2CAUO.js} +197 -39
  105. package/dist/dev/locales/sl-SI-QJT2CAUO.js.map +7 -0
  106. package/dist/dev/locales/{sv-SE-V32YHALQ.js → sv-SE-3MAT3NDX.js} +202 -44
  107. package/dist/dev/locales/sv-SE-3MAT3NDX.js.map +7 -0
  108. package/dist/dev/locales/{ta-IN-5JRAGQAO.js → ta-IN-J7XOYF2T.js} +257 -99
  109. package/dist/dev/locales/ta-IN-J7XOYF2T.js.map +7 -0
  110. package/dist/dev/locales/{th-TH-55ACRHDJ.js → th-TH-2OI52EOQ.js} +289 -131
  111. package/dist/dev/locales/th-TH-2OI52EOQ.js.map +7 -0
  112. package/dist/dev/locales/{tr-TR-7QYBXDBO.js → tr-TR-G7TAUHUI.js} +257 -99
  113. package/dist/dev/locales/tr-TR-G7TAUHUI.js.map +7 -0
  114. package/dist/dev/locales/{uk-UA-TJS2TMRH.js → uk-UA-IVSVBJIG.js} +229 -71
  115. package/dist/dev/locales/uk-UA-IVSVBJIG.js.map +7 -0
  116. package/dist/dev/locales/{si-LK-KT7GGO6D.js → uz-UZ-KCVDUVDE.js} +212 -54
  117. package/dist/dev/locales/uz-UZ-KCVDUVDE.js.map +7 -0
  118. package/dist/dev/locales/vi-VN-XF3AYKJ7.js +744 -0
  119. package/dist/dev/locales/vi-VN-XF3AYKJ7.js.map +7 -0
  120. package/dist/dev/locales/{zh-CN-4MXUOFTH.js → zh-CN-IS26RG2D.js} +199 -41
  121. package/dist/dev/locales/zh-CN-IS26RG2D.js.map +7 -0
  122. package/dist/dev/locales/{zh-HK-RBTGIU3U.js → zh-HK-KBWQ6SJC.js} +175 -17
  123. package/dist/dev/locales/zh-HK-KBWQ6SJC.js.map +7 -0
  124. package/dist/dev/locales/{zh-TW-U5VF4CCU.js → zh-TW-JKJWJQ4J.js} +204 -46
  125. package/dist/dev/locales/zh-TW-JKJWJQ4J.js.map +7 -0
  126. package/dist/prod/chunk-Q7BNPSJU.js +1 -0
  127. package/dist/prod/chunk-QNG5NH6R.js +12 -0
  128. package/dist/prod/chunk-XJNFOLHK.js +4 -0
  129. package/dist/prod/data/{image-HXEZYJPQ.js → image-SMWA6JLH.js} +1 -1
  130. package/dist/prod/index.css +1 -1
  131. package/dist/prod/index.js +23 -23
  132. package/dist/prod/locales/ar-SA-IYHKZRSE.js +8 -0
  133. package/dist/prod/locales/az-AZ-WL5GYRHK.js +1 -0
  134. package/dist/prod/locales/bg-BG-FXZYTRPD.js +5 -0
  135. package/dist/prod/locales/bn-BD-KO6YL5G2.js +3 -0
  136. package/dist/prod/locales/bn-IN-PC6JHKYB.js +3 -0
  137. package/dist/prod/locales/ca-ES-AREX5NEO.js +8 -0
  138. package/dist/prod/locales/cs-CZ-HXAZMFYH.js +7 -0
  139. package/dist/prod/locales/da-DK-5X7ZLFU3.js +2 -0
  140. package/dist/prod/locales/de-CH-76ZNVSOF.js +7 -0
  141. package/dist/prod/locales/de-DE-KU2ABQRN.js +7 -0
  142. package/dist/prod/locales/el-GR-4AZTZGY6.js +7 -0
  143. package/dist/prod/locales/en-BARVNJLJ.js +1 -0
  144. package/dist/prod/locales/es-ES-MXQVAWTQ.js +7 -0
  145. package/dist/prod/locales/eu-ES-BIF4XBMT.js +7 -0
  146. package/dist/prod/locales/fa-IR-D4HHKAAI.js +9 -0
  147. package/dist/prod/locales/fi-FI-O35ZY7UI.js +6 -0
  148. package/dist/prod/locales/fr-FR-PJOMXPCV.js +12 -0
  149. package/dist/prod/locales/gl-ES-U4NYM3X5.js +6 -0
  150. package/dist/prod/locales/he-IL-656ABAVQ.js +8 -0
  151. package/dist/prod/locales/hi-IN-Z55GAFFR.js +3 -0
  152. package/dist/prod/locales/hu-HU-UJ62DVIW.js +3 -0
  153. package/dist/prod/locales/id-ID-FLZFU3OO.js +8 -0
  154. package/dist/prod/locales/it-IT-DQZT3VFE.js +12 -0
  155. package/dist/prod/locales/ja-JP-43VXGDWI.js +7 -0
  156. package/dist/prod/locales/kaa-L3IMSDYL.js +1 -0
  157. package/dist/prod/locales/kab-KAB-XKPWJLNL.js +4 -0
  158. package/dist/prod/locales/kk-KZ-SXPDDY2H.js +1 -0
  159. package/dist/prod/locales/km-KH-DOS4CPGC.js +7 -0
  160. package/dist/prod/locales/ko-KR-BGC6VCY4.js +5 -0
  161. package/dist/prod/locales/ku-TR-J7IUITIA.js +6 -0
  162. package/dist/prod/locales/lt-LT-AC3LV5KG.js +3 -0
  163. package/dist/prod/locales/lv-LV-I6AY7QG2.js +4 -0
  164. package/dist/prod/locales/mr-IN-5SP4HV5B.js +9 -0
  165. package/dist/prod/locales/my-MM-S7ECRBYZ.js +1 -0
  166. package/dist/prod/locales/nb-NO-6PNHTF4R.js +8 -0
  167. package/dist/prod/locales/nl-NL-AVTAYVB7.js +7 -0
  168. package/dist/prod/locales/nn-NO-3TFXTM7Y.js +4 -0
  169. package/dist/prod/locales/oc-FR-IK6GIE7H.js +4 -0
  170. package/dist/prod/locales/pa-IN-YAKHYJET.js +4 -0
  171. package/dist/prod/locales/percentages-FZSTHYWV.js +1 -0
  172. package/dist/prod/locales/pl-PL-BIY22ZWU.js +12 -0
  173. package/dist/prod/locales/pt-BR-Q23NUPD6.js +6 -0
  174. package/dist/prod/locales/pt-PT-LOPEJLPJ.js +8 -0
  175. package/dist/prod/locales/ro-RO-W3D2ZATV.js +12 -0
  176. package/dist/prod/locales/ru-RU-DCTW7QSH.js +10 -0
  177. package/dist/prod/locales/si-LK-FYRRHO3C.js +1 -0
  178. package/dist/prod/locales/sk-SK-2KAMKFW5.js +7 -0
  179. package/dist/prod/locales/sl-SI-L6B6HFY5.js +6 -0
  180. package/dist/prod/locales/sv-SE-KMY6L2BA.js +8 -0
  181. package/dist/prod/locales/ta-IN-ZQCYE2JK.js +6 -0
  182. package/dist/prod/locales/th-TH-WS7ECBAV.js +1 -0
  183. package/dist/prod/locales/tr-TR-S5FI7JRW.js +4 -0
  184. package/dist/prod/locales/uk-UA-4EZUWUSQ.js +6 -0
  185. package/dist/prod/locales/uz-UZ-OKHL6AFA.js +1 -0
  186. package/dist/prod/locales/vi-VN-I6Q2YS4S.js +7 -0
  187. package/dist/prod/locales/zh-CN-JE4UZWNO.js +11 -0
  188. package/dist/prod/locales/zh-HK-RM35YDXX.js +1 -0
  189. package/dist/prod/locales/zh-TW-ONGLV6Y5.js +9 -0
  190. package/dist/types/common/src/constants.d.ts +21 -15
  191. package/dist/types/common/src/editorInterface.d.ts +34 -0
  192. package/dist/types/common/src/index.d.ts +2 -0
  193. package/dist/types/common/src/utils.d.ts +9 -3
  194. package/dist/types/common/src/visualdebug.d.ts +41 -0
  195. package/dist/types/element/src/Scene.d.ts +6 -2
  196. package/dist/types/element/src/align.d.ts +2 -1
  197. package/dist/types/element/src/binding.d.ts +55 -43
  198. package/dist/types/element/src/bounds.d.ts +1 -1
  199. package/dist/types/element/src/collision.d.ts +6 -2
  200. package/dist/types/element/src/delta.d.ts +16 -4
  201. package/dist/types/element/src/distribute.d.ts +2 -1
  202. package/dist/types/element/src/groups.d.ts +1 -0
  203. package/dist/types/element/src/index.d.ts +1 -3
  204. package/dist/types/element/src/linearElementEditor.d.ts +17 -19
  205. package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
  206. package/dist/types/element/src/renderElement.d.ts +5 -2
  207. package/dist/types/element/src/resizeTest.d.ts +5 -4
  208. package/dist/types/element/src/store.d.ts +6 -1
  209. package/dist/types/element/src/textElement.d.ts +1 -1
  210. package/dist/types/element/src/transformHandles.d.ts +5 -4
  211. package/dist/types/element/src/typeChecks.d.ts +2 -3
  212. package/dist/types/element/src/types.d.ts +7 -11
  213. package/dist/types/element/src/utils.d.ts +2 -1
  214. package/dist/types/element/src/zindex.d.ts +7 -1
  215. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +34 -16
  216. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  217. package/dist/types/excalidraw/actions/actionBoundText.d.ts +25 -13
  218. package/dist/types/excalidraw/actions/actionCanvas.d.ts +153 -275
  219. package/dist/types/excalidraw/actions/actionClipboard.d.ts +45 -777
  220. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +12 -6
  221. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +45 -29
  222. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -2
  223. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -2
  224. package/dist/types/excalidraw/actions/actionElementLink.d.ts +11 -7
  225. package/dist/types/excalidraw/actions/actionElementLock.d.ts +23 -11
  226. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +12 -6
  227. package/dist/types/excalidraw/actions/actionExport.d.ts +68 -952
  228. package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -394
  229. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -2
  230. package/dist/types/excalidraw/actions/actionFrame.d.ts +50 -28
  231. package/dist/types/excalidraw/actions/actionGroup.d.ts +24 -12
  232. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +47 -14
  233. package/dist/types/excalidraw/actions/actionLink.d.ts +9 -3
  234. package/dist/types/excalidraw/actions/actionMenu.d.ts +10 -374
  235. package/dist/types/excalidraw/actions/actionNavigate.d.ts +21 -361
  236. package/dist/types/excalidraw/actions/actionProperties.d.ts +87 -2418
  237. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +12 -6
  238. package/dist/types/excalidraw/actions/actionStyles.d.ts +13 -7
  239. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  240. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +11 -5
  241. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +11 -5
  242. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +10 -6
  243. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  244. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +11 -5
  245. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +11 -5
  246. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +12 -6
  247. package/dist/types/excalidraw/actions/actionZindex.d.ts +2 -2
  248. package/dist/types/excalidraw/actions/index.d.ts +2 -2
  249. package/dist/types/excalidraw/actions/manager.d.ts +1 -1
  250. package/dist/types/excalidraw/actions/register.d.ts +1 -1
  251. package/dist/types/excalidraw/actions/types.d.ts +4 -4
  252. package/dist/types/excalidraw/appState.d.ts +9 -4
  253. package/dist/types/excalidraw/clipboard.d.ts +64 -1
  254. package/dist/types/excalidraw/components/Actions.d.ts +20 -7
  255. package/dist/types/excalidraw/components/App.d.ts +35 -25
  256. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
  257. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
  258. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
  259. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  260. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +1 -2
  261. package/dist/types/excalidraw/components/Ellipsify.d.ts +4 -0
  262. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +1 -1
  263. package/dist/types/excalidraw/components/FilledButton.d.ts +1 -1
  264. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
  265. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
  266. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  267. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  268. package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
  269. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
  270. package/dist/types/excalidraw/components/LinkButton.d.ts +4 -0
  271. package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
  272. package/dist/types/excalidraw/components/MobileToolBar.d.ts +11 -0
  273. package/dist/types/excalidraw/components/Popover.d.ts +2 -1
  274. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -0
  275. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  276. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -2
  277. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  278. package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
  279. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +6 -3
  280. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +4 -2
  281. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +2 -1
  282. package/dist/types/excalidraw/components/icons.d.ts +10 -0
  283. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +13 -1
  284. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +0 -3
  285. package/dist/types/excalidraw/components/shapes.d.ts +129 -1
  286. package/dist/types/excalidraw/data/blob.d.ts +3 -7
  287. package/dist/types/excalidraw/data/reconcile.d.ts +1 -0
  288. package/dist/types/excalidraw/data/restore.d.ts +7 -2
  289. package/dist/types/excalidraw/data/types.d.ts +4 -1
  290. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  291. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +3 -1
  292. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
  293. package/dist/types/excalidraw/index.d.ts +4 -4
  294. package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
  295. package/dist/types/excalidraw/renderer/helpers.d.ts +1 -5
  296. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +5 -13
  297. package/dist/types/excalidraw/renderer/staticScene.d.ts +4 -1
  298. package/dist/types/excalidraw/scene/types.d.ts +15 -3
  299. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  300. package/dist/types/excalidraw/types.d.ts +37 -24
  301. package/dist/types/math/src/segment.d.ts +1 -0
  302. package/history.ts +1 -1
  303. package/package.json +6 -6
  304. package/dist/dev/chunk-CBGOW5JB.js.map +0 -7
  305. package/dist/dev/chunk-MFAYKRVR.js +0 -66
  306. package/dist/dev/chunk-MFAYKRVR.js.map +0 -7
  307. package/dist/dev/chunk-QF5FRM6O.js.map +0 -7
  308. package/dist/dev/locales/ar-SA-XORAP2EK.js.map +0 -7
  309. package/dist/dev/locales/az-AZ-NAUU3Z4Y.js.map +0 -7
  310. package/dist/dev/locales/bg-BG-AAABLFCY.js.map +0 -7
  311. package/dist/dev/locales/bn-BD-PM4AC5WG.js.map +0 -7
  312. package/dist/dev/locales/ca-ES-YNNMFRQX.js.map +0 -7
  313. package/dist/dev/locales/cs-CZ-DGZA5IKG.js.map +0 -7
  314. package/dist/dev/locales/da-DK-N76F4QAJ.js.map +0 -7
  315. package/dist/dev/locales/de-DE-DMRXZ2SZ.js.map +0 -7
  316. package/dist/dev/locales/el-GR-HIKPLEXI.js.map +0 -7
  317. package/dist/dev/locales/es-ES-AQYVXC32.js.map +0 -7
  318. package/dist/dev/locales/eu-ES-3TOEU5DE.js.map +0 -7
  319. package/dist/dev/locales/fa-IR-527GAKUP.js.map +0 -7
  320. package/dist/dev/locales/fi-FI-M3WLVDFP.js.map +0 -7
  321. package/dist/dev/locales/fr-FR-YE4VDJFI.js.map +0 -7
  322. package/dist/dev/locales/gl-ES-KMXUYGUN.js.map +0 -7
  323. package/dist/dev/locales/he-IL-4MU5N22B.js +0 -586
  324. package/dist/dev/locales/he-IL-4MU5N22B.js.map +0 -7
  325. package/dist/dev/locales/hi-IN-ZHZNZWFC.js +0 -586
  326. package/dist/dev/locales/hi-IN-ZHZNZWFC.js.map +0 -7
  327. package/dist/dev/locales/hu-HU-VIYZI3X4.js.map +0 -7
  328. package/dist/dev/locales/id-ID-22TWZNLA.js.map +0 -7
  329. package/dist/dev/locales/it-IT-MDEQ2SG3.js.map +0 -7
  330. package/dist/dev/locales/ja-JP-K2DI4W6B.js.map +0 -7
  331. package/dist/dev/locales/kaa-6BPSNM3R.js.map +0 -7
  332. package/dist/dev/locales/kab-KAB-2S7ZURK7.js.map +0 -7
  333. package/dist/dev/locales/kk-KZ-UJPYGRQQ.js.map +0 -7
  334. package/dist/dev/locales/km-KH-M5T5JKUE.js.map +0 -7
  335. package/dist/dev/locales/ko-KR-RQX37SNF.js.map +0 -7
  336. package/dist/dev/locales/ku-TR-5XJDIERL.js.map +0 -7
  337. package/dist/dev/locales/lt-LT-MGUBX6CA.js.map +0 -7
  338. package/dist/dev/locales/lv-LV-MD7N5VHD.js.map +0 -7
  339. package/dist/dev/locales/mr-IN-4XWMNGQC.js.map +0 -7
  340. package/dist/dev/locales/my-MM-O4Z74GN5.js.map +0 -7
  341. package/dist/dev/locales/nb-NO-BMB73KRH.js.map +0 -7
  342. package/dist/dev/locales/nl-NL-F2257BLQ.js.map +0 -7
  343. package/dist/dev/locales/nn-NO-NCORG7TS.js.map +0 -7
  344. package/dist/dev/locales/oc-FR-ATFBDMF6.js.map +0 -7
  345. package/dist/dev/locales/pa-IN-D2I375G4.js.map +0 -7
  346. package/dist/dev/locales/pl-PL-YJHOWAAW.js.map +0 -7
  347. package/dist/dev/locales/pt-BR-APOPYZJ7.js.map +0 -7
  348. package/dist/dev/locales/pt-PT-W56WCN7P.js +0 -586
  349. package/dist/dev/locales/pt-PT-W56WCN7P.js.map +0 -7
  350. package/dist/dev/locales/ro-RO-L575VRQA.js.map +0 -7
  351. package/dist/dev/locales/ru-RU-BLG6HZG5.js.map +0 -7
  352. package/dist/dev/locales/si-LK-KT7GGO6D.js.map +0 -7
  353. package/dist/dev/locales/sk-SK-DY6IPO5U.js.map +0 -7
  354. package/dist/dev/locales/sl-SI-5DZSRA47.js.map +0 -7
  355. package/dist/dev/locales/sv-SE-V32YHALQ.js.map +0 -7
  356. package/dist/dev/locales/ta-IN-5JRAGQAO.js.map +0 -7
  357. package/dist/dev/locales/th-TH-55ACRHDJ.js.map +0 -7
  358. package/dist/dev/locales/tr-TR-7QYBXDBO.js.map +0 -7
  359. package/dist/dev/locales/uk-UA-TJS2TMRH.js.map +0 -7
  360. package/dist/dev/locales/vi-VN-Y5CQ2EKQ.js +0 -586
  361. package/dist/dev/locales/vi-VN-Y5CQ2EKQ.js.map +0 -7
  362. package/dist/dev/locales/zh-CN-4MXUOFTH.js.map +0 -7
  363. package/dist/dev/locales/zh-HK-RBTGIU3U.js.map +0 -7
  364. package/dist/dev/locales/zh-TW-U5VF4CCU.js.map +0 -7
  365. package/dist/prod/chunk-I4UNSFV6.js +0 -12
  366. package/dist/prod/chunk-IRHK23LL.js +0 -4
  367. package/dist/prod/chunk-Z3N5DIM6.js +0 -1
  368. package/dist/prod/locales/ar-SA-G6X2FPQ2.js +0 -10
  369. package/dist/prod/locales/az-AZ-76LH7QW2.js +0 -1
  370. package/dist/prod/locales/bg-BG-XCXSNQG7.js +0 -5
  371. package/dist/prod/locales/bn-BD-2XOGV67Q.js +0 -5
  372. package/dist/prod/locales/ca-ES-6MX7JW3Y.js +0 -8
  373. package/dist/prod/locales/cs-CZ-2BRQDIVT.js +0 -11
  374. package/dist/prod/locales/da-DK-5WZEPLOC.js +0 -5
  375. package/dist/prod/locales/de-DE-XR44H4JA.js +0 -8
  376. package/dist/prod/locales/el-GR-BZB4AONW.js +0 -10
  377. package/dist/prod/locales/en-TYY6KWIJ.js +0 -1
  378. package/dist/prod/locales/es-ES-U4NZUMDT.js +0 -9
  379. package/dist/prod/locales/eu-ES-A7QVB2H4.js +0 -11
  380. package/dist/prod/locales/fa-IR-HGAKTJCU.js +0 -8
  381. package/dist/prod/locales/fi-FI-Z5N7JZ37.js +0 -6
  382. package/dist/prod/locales/fr-FR-RHASNOE6.js +0 -9
  383. package/dist/prod/locales/gl-ES-HMX3MZ6V.js +0 -10
  384. package/dist/prod/locales/he-IL-6SHJWFNN.js +0 -10
  385. package/dist/prod/locales/hi-IN-IWLTKZ5I.js +0 -4
  386. package/dist/prod/locales/hu-HU-A5ZG7DT2.js +0 -7
  387. package/dist/prod/locales/id-ID-SAP4L64H.js +0 -10
  388. package/dist/prod/locales/it-IT-JPQ66NNP.js +0 -11
  389. package/dist/prod/locales/ja-JP-DBVTYXUO.js +0 -8
  390. package/dist/prod/locales/kaa-6HZHGXH3.js +0 -1
  391. package/dist/prod/locales/kab-KAB-ZGHBKWFO.js +0 -8
  392. package/dist/prod/locales/kk-KZ-P5N5QNE5.js +0 -1
  393. package/dist/prod/locales/km-KH-HSX4SM5Z.js +0 -11
  394. package/dist/prod/locales/ko-KR-MTYHY66A.js +0 -9
  395. package/dist/prod/locales/ku-TR-6OUDTVRD.js +0 -9
  396. package/dist/prod/locales/lt-LT-XHIRWOB4.js +0 -3
  397. package/dist/prod/locales/lv-LV-5QDEKY6T.js +0 -7
  398. package/dist/prod/locales/mr-IN-CRQNXWMA.js +0 -13
  399. package/dist/prod/locales/my-MM-5M5IBNSE.js +0 -1
  400. package/dist/prod/locales/nb-NO-T6EIAALU.js +0 -10
  401. package/dist/prod/locales/nl-NL-IS3SIHDZ.js +0 -8
  402. package/dist/prod/locales/nn-NO-6E72VCQL.js +0 -8
  403. package/dist/prod/locales/oc-FR-POXYY2M6.js +0 -8
  404. package/dist/prod/locales/pa-IN-N4M65BXN.js +0 -4
  405. package/dist/prod/locales/percentages-BXMCSKIN.js +0 -1
  406. package/dist/prod/locales/pl-PL-T2D74RX3.js +0 -9
  407. package/dist/prod/locales/pt-BR-5N22H2LF.js +0 -9
  408. package/dist/prod/locales/pt-PT-UZXXM6DQ.js +0 -9
  409. package/dist/prod/locales/ro-RO-JPDTUUEW.js +0 -11
  410. package/dist/prod/locales/ru-RU-B4JR7IUQ.js +0 -9
  411. package/dist/prod/locales/si-LK-N5RQ5JYF.js +0 -1
  412. package/dist/prod/locales/sk-SK-C5VTKIMK.js +0 -6
  413. package/dist/prod/locales/sl-SI-NN7IZMDC.js +0 -6
  414. package/dist/prod/locales/sv-SE-XGPEYMSR.js +0 -10
  415. package/dist/prod/locales/ta-IN-2NMHFXQM.js +0 -9
  416. package/dist/prod/locales/th-TH-HPSO5L25.js +0 -2
  417. package/dist/prod/locales/tr-TR-DEFEU3FU.js +0 -7
  418. package/dist/prod/locales/uk-UA-QMV73CPH.js +0 -6
  419. package/dist/prod/locales/vi-VN-M7AON7JQ.js +0 -5
  420. package/dist/prod/locales/zh-CN-LNUGB5OW.js +0 -10
  421. package/dist/prod/locales/zh-HK-E62DVLB3.js +0 -1
  422. package/dist/prod/locales/zh-TW-RAJ6MFWO.js +0 -9
  423. /package/dist/dev/data/{image-SURZSZNX.js.map → image-S2GFZH7W.js.map} +0 -0
  424. /package/dist/dev/locales/{en-SMAPCEOQ.js.map → en-MLZIHOCR.js.map} +0 -0
  425. /package/dist/dev/locales/{percentages-YKFLWNK2.js.map → percentages-TR7IWPFY.js.map} +0 -0
@@ -0,0 +1,9 @@
1
+ import"../chunk-SRAX5OIU.js";var r={paste:"\u8CBC\u4E0A",pasteAsPlaintext:"\u4EE5\u7D14\u6587\u5B57\u8CBC\u4E0A",pasteCharts:"\u8CBC\u4E0A\u5716\u8868",selectAll:"\u5168\u9078",multiSelect:"\u5C07\u7269\u4EF6\u52A0\u5165\u9078\u53D6\u7BC4\u570D",moveCanvas:"\u79FB\u52D5\u756B\u5E03",cut:"\u526A\u4E0B",copy:"\u8907\u88FD",copyAsPng:"\u4EE5 PNG \u683C\u5F0F\u5132\u5B58\u5230\u526A\u8CBC\u7C3F",copyAsSvg:"\u4EE5 SVG \u683C\u5F0F\u8907\u88FD\u5230\u526A\u8CBC\u7C3F",copyText:"\u4EE5\u6587\u5B57\u683C\u5F0F\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F",copySource:"\u8907\u88FD\u4F86\u6E90\u81F3\u526A\u8CBC\u7C3F",convertToCode:"\u8F49\u63DB\u70BA\u7A0B\u5F0F\u78BC",bringForward:"\u4E0A\u79FB\u4E00\u5C64",sendToBack:"\u79FB\u5230\u6700\u5E95\u5C64",bringToFront:"\u7F6E\u65BC\u6700\u9802\u5C64",sendBackward:"\u5F80\u5F8C\u79FB\u4E00\u5C64",delete:"\u522A\u9664",copyStyles:"\u8907\u88FD\u6A23\u5F0F",pasteStyles:"\u8CBC\u4E0A\u6A23\u5F0F",stroke:"\u7B46\u756B",changeStroke:"\u8B8A\u66F4\u7B46\u756B\u984F\u8272",background:"\u80CC\u666F",changeBackground:"\u8B8A\u66F4\u80CC\u666F\u984F\u8272",fill:"\u586B\u6EFF",strokeWidth:"\u7B46\u8DE1\u5BEC\u5EA6",strokeStyle:"\u7B46\u756B\u6A23\u5F0F",strokeStyle_solid:"\u5BE6\u7DDA",strokeStyle_dashed:"\u865B\u7DDA",strokeStyle_dotted:"\u9EDE\u7DDA",sloppiness:"\u7DDA\u689D\u98A8\u683C",opacity:"\u900F\u660E\u5EA6",textAlign:"\u6587\u5B57\u5C0D\u9F4A",edges:"\u908A\u7DE3",sharp:"\u5C16\u92B3",round:"\u5E73\u6ED1",arrowheads:"\u7BAD\u982D",arrowhead_none:"\u7121",arrowhead_arrow:"\u7BAD\u982D",arrowhead_bar:"\u689D\u72C0\u7BAD\u982D",arrowhead_circle:"\u5713\u5F62",arrowhead_circle_outline:"\u5713\u5F62\uFF08\u5916\u6846\uFF09",arrowhead_triangle:"\u4E09\u89D2\u5F62",arrowhead_triangle_outline:"\u4E09\u89D2\u5F62\uFF08\u5916\u6846\uFF09",arrowhead_diamond:"\u83F1\u5F62",arrowhead_diamond_outline:"\u83F1\u5F62\uFF08\u5916\u6846\uFF09",arrowhead_crowfoot_many:"\u96DE\u722A\u7B26\u865F\uFF08\u591A\uFF09",arrowhead_crowfoot_one:"\u96DE\u722A\u7B26\u865F\uFF08\u4E00\uFF09",arrowhead_crowfoot_one_or_many:"\u96DE\u722A\u7B26\u865F\uFF08\u4E00\u6216\u591A\uFF09",more_options:"\u66F4\u591A\u9078\u9805",arrowtypes:"\u7BAD\u982D\u985E\u578B",arrowtype_sharp:"\u5C16\u92B3\u7BAD\u982D",arrowtype_round:"\u5F4E\u89D2\u7BAD\u982D",arrowtype_elbowed:"\u76F4\u89D2\u7BAD\u982D",fontSize:"\u5B57\u578B\u5927\u5C0F",fontFamily:"\u5B57\u578B\u7CFB\u5217",addWatermark:"\u52A0\u4E0A\u300C\u4EE5 Excalidraw \u88FD\u4F5C\u300D\u6D6E\u6C34\u5370",handDrawn:"\u624B\u5BEB",normal:"\u4E00\u822C",code:"\u4EE3\u78BC",small:"\u5C0F",medium:"\u4E2D",large:"\u5927",veryLarge:"\u7279\u5927",solid:"\u5BE6\u5FC3",hachure:"\u659C\u7DDA\u7B46\u89F8",zigzag:"\uFF3A\u5B57\u5F62",crossHatch:"\u4EA4\u53C9\u7B46\u89F8",thin:"\u7D30",bold:"\u7C97",left:"\u5DE6\u5074",center:"\u7F6E\u4E2D",right:"\u53F3\u5074",extraBold:"\u6975\u7C97",architect:"\u7CBE\u78BA",artist:"\u85DD\u8853",cartoonist:"\u5361\u901A",fileTitle:"\u6A94\u6848\u540D\u7A31",colorPicker:"\u8272\u5F69\u9078\u64C7\u5DE5\u5177",canvasColors:"\u4F7F\u7528\u65BC\u756B\u5E03",canvasBackground:"Canvas \u80CC\u666F",drawingCanvas:"\u7E6A\u5716 canvas",clearCanvas:"\u6E05\u9664\u756B\u5E03",layers:"\u5716\u5C64",actions:"\u52D5\u4F5C",language:"\u8A9E\u8A00",liveCollaboration:"\u5373\u6642\u5354\u4F5C...",duplicateSelection:"\u8907\u88FD",untitled:"\u7121\u6A19\u984C",name:"\u540D\u7A31",yourName:"\u4F60\u7684\u540D\u7A31",madeWithExcalidraw:"\u4EE5 Excalidraw \u88FD\u4F5C",group:"\u5EFA\u7ACB\u7FA4\u7D44",ungroup:"\u53D6\u6D88\u7FA4\u7D44",collaborators:"\u5354\u4F5C\u8005",toggleGrid:"\u5207\u63DB\u7DB2\u683C",addToLibrary:"\u52A0\u5165\u8CC7\u6599\u5EAB",removeFromLibrary:"\u5F9E\u8CC7\u6599\u5EAB\u4E2D\u79FB\u9664",libraryLoadingMessage:"\u8CC7\u6599\u5EAB\u8B80\u53D6\u4E2D\u2026",libraries:"\u700F\u89BD\u8CC7\u6599\u5EAB",loadingScene:"\u5834\u666F\u8B80\u53D6\u4E2D\u2026",loadScene:"\u5F9E\u6A94\u6848\u8F09\u5165\u5834\u666F",align:"\u5C0D\u9F4A",alignTop:"\u5C0D\u9F4A\u9802\u90E8",alignBottom:"\u5C0D\u9F4A\u5E95\u90E8",alignLeft:"\u5C0D\u9F4A\u5DE6\u5074",alignRight:"\u5C0D\u9F4A\u53F3\u5074",centerVertically:"\u5782\u76F4\u7F6E\u4E2D",centerHorizontally:"\u6C34\u5E73\u7F6E\u4E2D",distributeHorizontally:"\u6C34\u5E73\u5206\u5E03",distributeVertically:"\u5782\u76F4\u5206\u5E03",flipHorizontal:"\u6C34\u5E73\u7FFB\u8F49",flipVertical:"\u5782\u76F4\u7FFB\u8F49",viewMode:"\u6AA2\u8996\u6A21\u5F0F",share:"\u5206\u4EAB",showStroke:"\u986F\u793A\u7DDA\u689D\u6AA2\u8272\u5668",showBackground:"\u986F\u793A\u80CC\u666F\u6AA2\u8272\u5668",showFonts:"\u986F\u793A\u5B57\u578B\u9078\u55AE",toggleTheme:"\u5207\u63DB\u6DFA\u8272/\u6DF1\u8272\u4E3B\u984C",theme:"\u4E3B\u984C",personalLib:"\u500B\u4EBA\u8CC7\u6599\u5EAB",excalidrawLib:"Excalidraw \u8CC7\u6599\u5EAB",decreaseFontSize:"\u7E2E\u5C0F\u6587\u5B57",increaseFontSize:"\u653E\u5927\u6587\u5B57",unbindText:"\u53D6\u6D88\u7D81\u5B9A\u6587\u5B57",bindText:"\u7D50\u5408\u6587\u5B57\u81F3\u5BB9\u5668",createContainerFromText:"\u5C07\u6587\u5B57\u5305\u65BC\u5BB9\u5668\u4E2D",link:{edit:"\u7DE8\u8F2F\u9023\u7D50",editEmbed:"\u7DE8\u8F2F\u53EF\u5D4C\u5165\u9023\u7D50",create:"\u65B0\u589E\u9023\u7D50",label:"\u9023\u7D50",labelEmbed:"\u9023\u7D50\u8207\u5D4C\u5165",empty:"\u672A\u8A2D\u5B9A\u9023\u7D50",hint:"\u5728\u6B64\u8F38\u5165\u6216\u8CBC\u4E0A\u9023\u7D50",goToElement:"\u79FB\u81F3\u76EE\u6A19\u5143\u7D20"},lineEditor:{edit:"\u7DE8\u8F2F\u7DDA\u689D",editArrow:"\u7DE8\u8F2F\u7BAD\u982D"},polygon:{breakPolygon:"",convertToPolygon:""},elementLock:{lock:"\u9396\u5B9A",unlock:"\u89E3\u9396",lockAll:"\u5168\u90E8\u9396\u5B9A",unlockAll:"\u5168\u90E8\u89E3\u9396"},statusPublished:"\u5DF2\u767C\u5E03",sidebarLock:"\u5074\u6B04\u7DAD\u6301\u958B\u555F",selectAllElementsInFrame:"\u9078\u53D6\u6846\u67B6\u5167\u7684\u6240\u6709\u5143\u7D20",removeAllElementsFromFrame:"\u5F9E\u6846\u67B6\u5167\u79FB\u9664\u6240\u6709\u5143\u7D20",eyeDropper:"\u5F9E\u756B\u5E03\u4E2D\u9078\u53D6\u984F\u8272",textToDiagram:"\u6587\u5B57\u8F49\u5716\u8868",prompt:"\u63D0\u793A\u8A5E",followUs:"\u8FFD\u8E64\u6211\u5011",discordChat:"Discord \u804A\u5929\u5BA4",zoomToFitViewport:"\u7E2E\u653E\u81F3\u7B26\u5408 viewport",zoomToFitSelection:"\u7E2E\u653E\u81F3\u7B26\u5408\u9078\u53D6\u5340",zoomToFit:"\u7E2E\u653E\u81F3\u986F\u793A\u6240\u6709\u5143\u7D20",installPWA:"\u65BC\u672C\u6A5F\u5B89\u88DD Excalidraw (PWA)",autoResize:"\u555F\u7528\u6587\u5B57\u81EA\u52D5\u7E2E\u653E",imageCropping:"\u5716\u7247\u526A\u88C1",unCroppedDimension:"\u672A\u526A\u88C1\u5C3A\u5BF8",copyElementLink:"\u8907\u88FD\u6B64\u7269\u4EF6\u7684\u9023\u7D50",linkToElement:"\u9023\u7D50\u81F3\u7269\u4EF6",wrapSelectionInFrame:"\u5C07\u9078\u53D6\u5167\u5BB9\u653E\u5165\u6846\u67B6",tab:"",shapeSwitch:""},t={title:"\u9023\u7D50\u81F3\u7269\u4EF6",desc:"\u9EDE\u64CA\u756B\u5E03\u4E0A\u7684\u5F62\u72C0\u6216\u8CBC\u4E0A\u9023\u7D50",notFound:"\u7121\u6CD5\u5728\u756B\u5E03\u4E0A\u627E\u5230\u9023\u7D50\u7684\u7269\u4EF6"},a={noItems:"\u5C1A\u672A\u52A0\u5165\u4EFB\u4F55\u7269\u4EF6...",hint_emptyLibrary:"\u9078\u53D6\u756B\u5E03\u4E0A\u7684\u7269\u4EF6\u4EE5\u52A0\u5165\uFF0C\u6216\u5F9E\u4E0B\u65B9\u7684\u516C\u958B\u5132\u5B58\u5EAB\u4E2D\u5B89\u88DD\u8CC7\u6599\u5EAB\u3002",hint_emptyPrivateLibrary:"\u9078\u64C7\u756B\u5E03\u4E0A\u7684\u7269\u4EF6\u4EE5\u5728\u6B64\u52A0\u5165\u3002",search:{inputPlaceholder:"",heading:"",noResults:"",clearSearch:""}},i={title:"\u5728\u756B\u5E03\u4E0A\u5C0B\u627E",noMatch:"\u672A\u627E\u5230\u7B26\u5408\u9805\u76EE\u2026",singleResult:"\u7D50\u679C",multipleResults:"\u7D50\u679C",placeholder:"\u5728\u756B\u5E03\u4E0A\u5C0B\u627E\u6587\u5B57\u2026",frames:"",texts:""},l={clearReset:"\u91CD\u8A2D\u756B\u5E03",exportJSON:"\u532F\u51FA\u81F3\u6A94\u6848",exportImage:"\u532F\u51FA\u5716\u7247",export:"\u5132\u5B58\u81F3...",copyToClipboard:"\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F",copyLink:"\u8907\u88FD\u9023\u7D50",save:"\u5132\u5B58\u76EE\u524D\u6A94\u6848",saveAs:"\u5132\u5B58\u70BA",load:"\u958B\u555F",getShareableLink:"\u53D6\u5F97\u5171\u4EAB\u9023\u7D50",close:"\u95DC\u9589",selectLanguage:"\u9078\u64C7\u8A9E\u8A00",scrollBackToContent:"\u6372\u52D5\u56DE\u5230\u5167\u5BB9",zoomIn:"\u653E\u5927",zoomOut:"\u7E2E\u5C0F",resetZoom:"\u91CD\u8A2D\u7E2E\u653E",menu:"\u9078\u55AE",done:"\u5B8C\u6210",edit:"\u7DE8\u8F2F",undo:"\u5FA9\u539F",redo:"\u91CD\u505A",resetLibrary:"\u91CD\u8A2D\u8CC7\u6599\u5EAB",createNewRoom:"\u5EFA\u7ACB\u65B0\u5354\u4F5C\u6703\u8B70\u5BA4",fullScreen:"\u5168\u87A2\u5E55",darkMode:"\u6DF1\u8272\u6A21\u5F0F",lightMode:"\u6DFA\u8272\u6A21\u5F0F",systemMode:"\u7CFB\u7D71\u6A21\u5F0F",zenMode:"\u5C08\u6CE8\u6A21\u5F0F",objectsSnapMode:"\u5438\u9644\u81F3\u7269\u4EF6",exitZenMode:"\u96E2\u958B\u5C08\u6CE8\u6A21\u5F0F",cancel:"\u53D6\u6D88",saveLibNames:"",clear:"\u6E05\u9664",remove:"\u522A\u9664",embed:"\u5207\u63DB\u5D4C\u5165",publishLibrary:"",submit:"\u9001\u51FA",confirm:"\u78BA\u8A8D",embeddableInteractionButton:"\u9EDE\u64CA\u4EE5\u4E92\u52D5"},n={clearReset:"\u9019\u5C07\u6703\u6E05\u9664\u6574\u500B canvas\u3002\u4F60\u78BA\u5B9A\u55CE\uFF1F",couldNotCreateShareableLink:"\u7121\u6CD5\u5EFA\u7ACB\u5171\u4EAB\u9023\u7D50\u3002",couldNotCreateShareableLinkTooBig:"\u7121\u6CD5\u5EFA\u7ACB\u5171\u4EAB\u9023\u7D50\uFF1A\u5834\u666F\u592A\u5927",couldNotLoadInvalidFile:"\u7121\u6CD5\u8B80\u53D6\u5931\u6548\u7684\u6A94\u6848\u3002",importBackendFailed:"\u5F8C\u7AEF\u8B80\u53D6\u5931\u6557\u3002",cannotExportEmptyCanvas:"\u7121\u6CD5\u8F38\u51FA\u7A7A\u767D\u7684 canvas\u3002",couldNotCopyToClipboard:"\u7121\u6CD5\u8907\u88FD\u5230\u526A\u8CBC\u7C3F",decryptFailed:"\u7121\u6CD5\u89E3\u5BC6\u8CC7\u6599\u3002",uploadedSecurly:"\u4E0A\u50B3\u5DF2\u901A\u904E end-to-end \u52A0\u5BC6\uFF0CExcalidraw \u4F3A\u670D\u5668\u548C\u7B2C\u4E09\u65B9\u7121\u6CD5\u7686\u8B80\u53D6\u5176\u5167\u5BB9\u3002",loadSceneOverridePrompt:"\u8B80\u53D6\u5916\u90E8\u5716\u6A23\u5C07\u53D6\u4EE3\u76EE\u524D\u7684\u5167\u5BB9\u3002\u662F\u5426\u8981\u7E7C\u7E8C\uFF1F",collabStopOverridePrompt:`\u505C\u6B62\u9023\u7DDA\u5C07\u8986\u84CB\u60A8\u5148\u524D\u65BC\u672C\u6A5F\u5132\u5B58\u7684\u7E6A\u5716\u9032\u5EA6\uFF0C\u662F\u5426\u78BA\u8A8D\uFF1F
2
+
3
+ \uFF08\u5982\u8981\u4FDD\u7559\u539F\u6709\u7684\u672C\u6A5F\u7E6A\u5716\u9032\u5EA6\uFF0C\u76F4\u63A5\u95DC\u9589\u700F\u89BD\u5668\u5206\u9801\u5373\u53EF\u3002\uFF09`,errorAddingToLibrary:"\u7121\u6CD5\u65BC\u6B64\u8CC7\u6599\u5EAB\u52A0\u5165\u9805\u76EE",errorRemovingFromLibrary:"\u7121\u6CD5\u7531\u6B64\u8CC7\u6599\u5EAB\u79FB\u9664\u9805\u76EE",confirmAddLibrary:"\u9019\u5C07\u6703\u5C07 {{numShapes}} \u500B\u5716\u5F62\u52A0\u5165\u4F60\u7684\u8CC7\u6599\u5EAB\uFF0C\u4F60\u78BA\u5B9A\u55CE\uFF1F",imageDoesNotContainScene:"\u6B64\u5716\u6A94\u4E2D\u672A\u5305\u542B\u5834\u666F\u8CC7\u6599\u3002\u8F38\u51FA\u6A94\u6848\u6642\u662F\u5426\u6709\u5305\u542B\u5834\u666F\u8CC7\u6599\uFF1F",cannotRestoreFromImage:"\u7121\u6CD5\u7531\u6B64\u6A94\u6848\u56DE\u5FA9\u5834\u666F\u3002",invalidSceneUrl:"\u7121\u6CD5\u7531\u63D0\u4F9B\u7684 URL \u532F\u5165\u5834\u666F\u3002\u53EF\u80FD\u662F\u767C\u751F\u7570\u5E38\uFF0C\u6216\u672A\u5305\u542B\u6709\u6548\u7684 Excalidraw JSON \u8CC7\u6599\u3002",resetLibrary:"\u9019\u6703\u6E05\u9664\u60A8\u7684\u8CC7\u6599\u5EAB\uFF0C\u662F\u5426\u78BA\u5B9A\uFF1F",removeItemsFromsLibrary:"\u5F9E\u8CC7\u6599\u5EAB\u522A\u9664 {{count}} \u9805\uFF1F",invalidEncryptionKey:"\u52A0\u5BC6\u9375\u5FC5\u9808\u70BA22\u5B57\u5143\u3002\u5373\u6642\u5354\u4F5C\u5DF2\u505C\u7528\u3002",collabOfflineWarning:`\u6C92\u6709\u53EF\u7528\u7684\u7DB2\u8DEF\u9023\u7DDA\u3002
4
+ \u8B8A\u66F4\u7121\u6CD5\u5132\u5B58\uFF01`,localStorageQuotaExceeded:""},s={unsupportedFileType:"\u4E0D\u652F\u63F4\u7684\u6A94\u6848\u985E\u578B\u3002",imageInsertError:"\u7121\u6CD5\u63D2\u5165\u5716\u7247\u3002\u8ACB\u7A0D\u5F8C\u518D\u8A66\u2026",fileTooBig:"\u6A94\u6848\u904E\u5927\u3002\u53EF\u63A5\u53D7\u7684\u6700\u5927\u5C3A\u5BF8\u70BA {{maxSize}} \u3002",svgImageInsertError:"\u7121\u6CD5\u63D2\u5165 SVG \u5716\u7247\u3002\u6B64 SVG \u6A94\u6848\u6709\u554F\u984C\u3002",failedToFetchImage:"\u7121\u6CD5\u7372\u53D6\u5716\u7247\u3002",cannotResolveCollabServer:"\u7121\u6CD5\u9023\u7D50\u81F3 collab \u4F3A\u670D\u5668\u3002\u8ACB\u91CD\u65B0\u6574\u7406\u5F8C\u518D\u8A66\u4E00\u6B21\u3002",importLibraryError:"\u7121\u6CD5\u8F09\u5165\u8CC7\u6599\u5EAB",saveLibraryError:"\u7121\u6CD5\u5C07\u8CC7\u6599\u5EAB\u5B58\u81F3\u5132\u5B58\u5340\u3002\u8ACB\u5C07\u8CC7\u6599\u5EAB\u5B58\u81F3\u672C\u6A5F\u6A94\u6848\u4EE5\u78BA\u4FDD\u4E0D\u6703\u5931\u53BB\u5DF2\u8B8A\u66F4\u7684\u90E8\u5206\u3002",collabSaveFailed:"\u7121\u6CD5\u5132\u5B58\u81F3\u5F8C\u7AEF\u8CC7\u6599\u5EAB\u3002\u82E5\u6B64\u554F\u984C\u6301\u7E8C\u767C\u751F\uFF0C\u8ACB\u5C07\u6A94\u6848\u5132\u5B58\u65BC\u672C\u6A5F\u4EE5\u78BA\u4FDD\u8CC7\u6599\u4E0D\u6703\u907A\u5931\u3002",collabSaveFailed_sizeExceeded:"\u7121\u6CD5\u5132\u5B58\u81F3\u5F8C\u7AEF\u8CC7\u6599\u5EAB\uFF0C\u53EF\u80FD\u7684\u539F\u56E0\u70BA\u756B\u5E03\u5C3A\u5BF8\u904E\u5927\u3002\u8ACB\u5C07\u6A94\u6848\u5132\u5B58\u65BC\u672C\u6A5F\u4EE5\u78BA\u4FDD\u8CC7\u6599\u4E0D\u6703\u907A\u5931\u3002",imageToolNotSupported:"\u5716\u7247\u5DF2\u505C\u7528",brave_measure_text_error:{line1:"\u770B\u8D77\u4F86\u60A8\u958B\u555F\u4E86 Brave \u700F\u89BD\u5668\u7684 <bold>Aggressively Block Fingerprinting</bold> \u8A2D\u5B9A\u3002",line2:"\u9019\u53EF\u80FD\u9020\u6210\u60A8\u756B\u5E03\u4E2D <bold>\u6587\u5B57\u5143\u7D20</bold> \u7684\u7570\u5E38\u3002",line3:"\u6211\u5011\u5F37\u70C8\u5EFA\u8B70\u60A8\u95DC\u9589\u6B64\u8A2D\u5B9A\u3002\u60A8\u53EF\u4EE5\u4F9D\u7167 <link>\u9019\u4E9B\u6B65\u9A5F</link> \u4F86\u9032\u884C\u3002",line4:"\u82E5\u95DC\u9589\u6B64\u8A2D\u5B9A\u4E26\u672A\u4FEE\u5FA9\u6587\u5B57\u5143\u7D20\u7684\u986F\u793A\u554F\u984C\uFF0C\u8ACB\u56DE\u5831\u65BC\u6211\u5011 GitHub \u4E0A\u7684 <issueLink>issue</issueLink>\uFF0C\u6216\u5728 <discordLink>Discord</discordLink> \u4E0A\u544A\u8A34\u6211\u5011\u3002"},libraryElementTypeError:{embeddable:"\u53EF\u5D4C\u5165\u5143\u7D20\u7121\u6CD5\u52A0\u5165\u8CC7\u6599\u5EAB",iframe:"IFrame \u5143\u7D20\u7121\u6CD5\u52A0\u5165\u8CC7\u6599\u5EAB",image:"\u5373\u5C07\u652F\u63F4\u52A0\u5165\u5716\u7247\u81F3\u8CC7\u6599\u5EAB\uFF01"},asyncPasteFailedOnRead:"\u7121\u6CD5\u8CBC\u4E0A\uFF08\u7121\u6CD5\u7531\u7CFB\u7D71\u526A\u8CBC\u7C3F\u8B80\u5165\uFF09",asyncPasteFailedOnParse:"\u7121\u6CD5\u8CBC\u4E0A",copyToSystemClipboardFailed:"\u7121\u6CD5\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F"},d={selection:"\u9078\u53D6",lasso:"",image:"\u63D2\u5165\u5716\u7247",rectangle:"\u9577\u65B9\u5F62",diamond:"\u83F1\u5F62",ellipse:"\u6A62\u5713",arrow:"\u7BAD\u982D",line:"\u7DDA\u689D",freedraw:"\u7E6A\u5716",text:"\u6587\u5B57",library:"\u8CC7\u6599\u5EAB",lock:"\u53EF\u9023\u7E8C\u4F7F\u7528\u9078\u53D6\u7684\u5DE5\u5177",penMode:"\u7B46\u6A21\u5F0F - \u907F\u514D\u89F8\u6478",link:"\u70BA\u6240\u9078\u7684\u5F62\u72C0\u589E\u52A0\b/\u66F4\u65B0\u9023\u7D50",eraser:"\u6A61\u76AE\u64E6",frame:"\u6846\u67B6\u5DE5\u5177",magicframe:"\u7DDA\u6846\u7A3F\u8F49\u70BA\u7A0B\u5F0F\u78BC",embeddable:"\u5D4C\u5165\u7DB2\u7AD9",laser:"\u96F7\u5C04\u7B46",hand:"\u624B\u5F62\uFF08\u5E73\u79FB\u5DE5\u5177\uFF09",extraTools:"\u66F4\u591A\u5DE5\u5177",mermaidToExcalidraw:"Mermaid \u81F3 Excalidraw",convertElementType:""},c={rectangle:"\u77E9\u5F62",diamond:"\u83F1\u5F62",ellipse:"\u6A62\u5713\u5F62",arrow:"\u7BAD\u982D",line:"\u7DDA\u689D",freedraw:"\u81EA\u7531\u7E6A\u5716",text:"\u6587\u5B57",image:"\u5716\u7247",group:"\u7FA4\u7D44",frame:"\u6846\u67B6",magicframe:"\u7DDA\u6846\u7A3F\u8F49\u70BA\u7A0B\u5F0F\u78BC",embeddable:"\u5D4C\u5165\u7DB2\u7AD9",selection:"\u5DF2\u9078\u9805\u76EE",iframe:"IFrame\u6846\u67B6"},m={canvasActions:"canvas \u52D5\u4F5C",selectedShapeActions:"\u9078\u53D6\u5716\u5F62\u52D5\u4F5C",shapes:"\u5F62\u72C0"},p={dismissSearch:"",canvasPanning:"",linearElement:"\u9EDE\u64CA\u4EE5\u7E6A\u88FD\u591A\u9EDE\u66F2\u7DDA\uFF1B\u6216\u62D6\u66F3\u4EE5\u7E6A\u88FD\u76F4\u7DDA",arrowTool:"",arrowBindModifiers:"",freeDraw:"\u9EDE\u64CA\u4E26\u62D6\u66F3\u4F86\u7E6A\u5716\uFF0C\u653E\u958B\u5373\u7D50\u675F",text:"\u63D0\u793A\uFF1A\u4EA6\u53EF\u4F7F\u7528\u9078\u53D6\u5DE5\u5177\u5728\u4EFB\u4F55\u5730\u65B9\u96D9\u64CA\u4F86\u52A0\u5165\u6587\u5B57",embeddable:"\u9EDE\u64CA\u4E26\u62D6\u79FB\u4EE5\u5EFA\u7ACB\u5D4C\u5165\u7DB2\u7AD9",text_selected:"",text_editing:"",linearElementMulti:"",lockAngle:"",resize:"",resizeImage:"",rotate:"",lineEditor_info:"",lineEditor_line_info:"",lineEditor_pointSelected:"",lineEditor_nothingSelected:"",publishLibrary:"\u767C\u5E03\u500B\u4EBA\u8CC7\u6599\u5EAB",bindTextToElement:"",createFlowchart:"",deepBoxSelect:"",eraserRevert:"",firefox_clipboard_write:`\u6B64\u529F\u80FD\u6709\u6A5F\u6703\u900F\u904E\u5C07 "dom.events.asyncClipboard.clipboardItem" \u8A2D\u5B9A\u70BA "true" \u4F86\u958B\u555F\u3002
5
+ \u82E5\u8981\u8B8A\u66F4 Firefox \u700F\u89BD\u5668\u7684\u6B64\u8A2D\u5B9A\u503C\uFF0C\u8ACB\u81F3 "about:config" \u9801\u9762\u3002`,disableSnapping:"",enterCropEditor:"",leaveCropEditor:""},b={cannotShowPreview:"\u7121\u6CD5\u986F\u793A\u9810\u89BD",canvasTooBig:"\u756B\u5E03\u53EF\u80FD\u904E\u5927",canvasTooBigTip:"\u63D0\u793A\uFF1A\u53EF\u5617\u8A66\u5C07\u6700\u9060\u7684\u5143\u7D20\u79FB\u52D5\u81F3\u8F03\u96C6\u4E2D\u7684\u4F4D\u7F6E"},g={headingMain:"\u767C\u751F\u932F\u8AA4\uFF0C\u5617\u8A66<button>\u91CD\u65B0\u8F09\u5165\u9801\u9762\u3002</button>",clearCanvasMessage:"\u82E5\u91CD\u65B0\u8F09\u5165\u4ECD\u7121\u6CD5\u89E3\u6C7A\u554F\u984C\uFF0C\u5617\u8A66<button>\u6E05\u9664 canvas\u3002</button>",clearCanvasCaveat:"\u6B64\u52D5\u4F5C\u5C07\u9020\u6210\u76EE\u524D\u7684\u4F5C\u54C1\u88AB\u79FB\u9664\u3002",trackedToSentry:"\u6B64\u932F\u8AA4\u8207\u5176\u8B58\u5225\u78BC{{eventId}}\u5C07\u7531\u7CFB\u7D71\u8A18\u9304\u3002",openIssueMessage:"\u6211\u5011\u5C07\u8B39\u614E\u8655\u7406\uFF0C\u4F60\u7684\u4F5C\u54C1\u5167\u5BB9\u4E0D\u6703\u88AB\u5305\u542B\u5728\u932F\u8AA4\u5831\u544A\u4E2D\u3002\u82E5\u4F60\u7684\u4F5C\u54C1\u4E0D\u9700\u4FDD\u6301\u79C1\u5BC6\uFF0C\u8ACB\u8003\u616E\u4F7F\u7528\u6211\u5011\u7684<button>bug tracker\u3002</button>\u8ACB\u5C07\u4E0B\u5217\u8CC7\u8A0A\u8907\u88FD\u8CBC\u4E0A\u81F3 GitHub issue \u4E2D\u3002",sceneContent:"\u4F5C\u54C1\u5167\u5BB9\uFF1A"},u={or:"\u6216"},h={desc_intro:"\u9080\u8ACB\u5176\u4ED6\u4EBA\u4E00\u8D77\u5354\u4F5C",desc_privacy:"\u4E0D\u7528\u64D4\u5FC3\uFF0C\u6B64\u9023\u7DDA\u70BA\u7AEF\u5230\u7AEF\u52A0\u5BC6\u4E14\u5B8C\u5168\u79C1\u6709\uFF0C\u5373\u4F7F\u662F\u6211\u5011\u7684\u4F3A\u670D\u5668\u4E5F\u7121\u6CD5\u770B\u898B\u60A8\u7684\u7E6A\u5716\u3002",button_startSession:"\u958B\u59CB\u9023\u7DDA",button_stopSession:"\u505C\u6B62\u9023\u7DDA",desc_inProgressIntro:"\u5373\u6642\u5354\u4F5C\u9023\u7DDA\u6B63\u5728\u9032\u884C\u4E2D\u3002",desc_shareLink:"\u5C07\u6B64\u9023\u7D50\u5206\u4EAB\u7D66\u6B32\u5354\u4F5C\u7684\u5C0D\u8C61\uFF1A",desc_exitSession:"\u505C\u6B62\u9023\u7DDA\u5C07\u4E2D\u65B7\u4F60\u8207\u5354\u4F5C\u6703\u8B70\u5BA4\u7684\u9023\u7D50\uFF0C\u4F46\u4F60\u4ECD\u53EF\u65BC\u672C\u6A5F\u7DE8\u8F2F\u6B64\u4F5C\u54C1\u3002\u610F\u6307\u505C\u6B62\u9023\u7DDA\u5F8C\u4F60\u7684\u7DE8\u8F2F\u4E0D\u6703\u88AB\u5148\u524D\u5171\u540C\u5354\u4F5C\u7684\u4EBA\u770B\u898B\uFF0C\u4E14\u4ED6\u5011\u53EF\u7E7C\u7E8C\u5171\u540C\u5354\u4F5C\u53E6\u4E00\u500B\u7248\u672C\u3002",shareTitle:"\u52A0\u5165 Excalidraw \u4E0A\u7684\u5373\u6642\u5354\u4F5C\u6703\u8B70\u5BA4"},w={title:"\u932F\u8AA4"},y={disk_title:"\u5132\u5B58\u81F3\u786C\u789F",disk_details:"\u5C07\u5834\u666F\u532F\u51FA\u70BA\u53EF\u4F9B\u532F\u5165\u4E4B\u6A94\u6848",disk_button:"\u5132\u5B58\u81F3\u6A94\u6848",link_title:"\u53EF\u5171\u4EAB\u9023\u7D50",link_details:"\u532F\u51FA\u70BA\u552F\u8B80\u9023\u7D50",link_button:"\u532F\u51FA\u70BA\u9023\u7D50",excalidrawplus_description:"\u5C07\u6B64\u5834\u666F\u5132\u5B58\u81F3\u4F60\u7684 Excalidraw+ \u5DE5\u4F5C\u5340",excalidrawplus_button:"\u8F38\u51FA",excalidrawplus_exportError:"\u76EE\u524D\u7121\u6CD5\u8F38\u51FA\u81F3 Excalidraw+"},S={blog:"\u95B1\u8B80\u90E8\u843D\u683C",click:"\u9EDE\u64CA",deepSelect:"\u6DF1\u5EA6\u9078\u53D6",deepBoxSelect:"\u5728\u5BB9\u5668\u5167\u6DF1\u5EA6\u9078\u53D6\u4E26\u907F\u514D\u62D6\u66F3",createFlowchart:"\u7531\u57FA\u672C\u578B\u5EFA\u7ACB\u6D41\u7A0B\u5716",navigateFlowchart:"\u5C0E\u89BD\u6D41\u7A0B\u5716",curvedArrow:"\u66F2\u7BAD\u982D",curvedLine:"\u66F2\u7DDA",documentation:"\u6587\u4EF6",doubleClick:"\u96D9\u64CA",drag:"\u62D6\u66F3",editor:"\u7DE8\u8F2F\u5668",editLineArrowPoints:"\u7DE8\u8F2F\u7DDA/\u7BAD\u982D\u63A7\u5236\u9EDE",editText:"\u7DE8\u8F2F\u6587\u5B57/\u589E\u52A0\u6A19\u7C64",github:"\u767C\u73FE\u7570\u5E38\uFF1F\u56DE\u5831\u554F\u984C",howto:"\u53C3\u7167\u6211\u5011\u7684\u8AAA\u660E",or:"\u6216",preventBinding:"\u907F\u514D\u7BAD\u865F\u9023\u7D50",tools:"\u5DE5\u5177",shortcuts:"\u9375\u76E4\u5FEB\u901F\u9375",textFinish:"\u5B8C\u6210\u7DE8\u8F2F\uFF08\u6587\u5B57\u7DE8\u8F2F\u5668\uFF09",textNewLine:"\u63DB\u884C\uFF08\u6587\u5B57\u7DE8\u8F2F\u5668\uFF09",title:"\u8AAA\u660E",view:"\u6AA2\u8996",zoomToFit:"\u653E\u5927\u81F3\u586B\u6EFF\u756B\u9762",zoomToSelection:"\u7E2E\u653E\u81F3\u9078\u53D6\u5340",toggleElementLock:"\u9396\u5B9A/\u89E3\u9396\u5DF2\u9078\u7684\u9805\u76EE",movePageUpDown:"\u5411\u4E0A/\u4E0B\u79FB\u52D5\u9801\u9762",movePageLeftRight:"\u5411\u5DE6/\u53F3\u79FB\u52D5\u9801\u9762",cropStart:"\u88C1\u5207\u5716\u7247",cropFinish:"\u5B8C\u6210\u5716\u7247\u88C1\u5207"},k={title:"\u6E05\u9664\u756B\u5E03"},v={title:"\u767C\u5E03\u8CC7\u6599\u5EAB",itemName:"\u9805\u76EE\u540D\u7A31",authorName:"\u4F5C\u8005\u540D\u7A31",githubUsername:"GitHub \u5E33\u865F",twitterUsername:"Twitter \u5E33\u865F",libraryName:"\u8CC7\u6599\u5EAB\u540D\u7A31",libraryDesc:"\u8CC7\u6599\u5EAB\u8AAA\u660E",website:"\u7DB2\u7AD9",placeholder:{authorName:"\u60A8\u7684\u540D\u7A31\u6216\u5E33\u865F",libraryName:"\u60A8\u7684\u8CC7\u6599\u5EAB\u540D\u7A31",libraryDesc:"\u63D0\u4F9B\u60A8\u7684\u8CC7\u6599\u5EAB\u8AAA\u660E\u4EE5\u5229\u4ED6\u4EBA\u7406\u89E3\u5176\u7528\u9014",githubHandle:"Github handle\uFF08\u9078\u586B\uFF09\uFF0C\u586B\u5BEB\u5F8C\u60A8\u53EF\u7DE8\u8F2F\u5DF2\u9001\u51FA\u5F85\u5BE9\u67E5\u7684\u8CC7\u6599\u5EAB",twitterHandle:"Twitter \u5E33\u865F\uFF08\u9078\u586B\uFF09\uFF0C\u586B\u5BEB\u5F8C\u82E5\u6211\u5011\u5728 Twitter \u63A8\u5EE3\u6642\u53EF\u63D0\u53CA\u60A8",website:"\u60A8\u500B\u4EBA\u7DB2\u7AD9\u6216\u5176\u4ED6\u7DB2\u7AD9\u7684\u9023\u7D50\uFF08\u9078\u586B\uFF09"},errors:{required:"\u5FC5\u586B",website:"\u8ACB\u8F38\u5165\u6709\u6548\u7684 URL"},noteDescription:"\u9001\u51FA\u60A8\u7684\u8CC7\u6599\u5EAB\u5F8C\u5C07\u88AB\u5305\u542B\u65BC<link>\u516C\u958B\u8CC7\u6599\u5EAB repository</link>\u4EE5\u5229\u4ED6\u4EBA\u5728\u5176\u7E6A\u5716\u4E2D\u4F7F\u7528\u3002",noteGuidelines:"\u8CC7\u6599\u5EAB\u9700\u5148\u7D93\u4EBA\u5DE5\u5BE9\u67E5\u3002\u8ACB\u95B1\u8B80<link>\u8AAA\u660E\u6587\u4EF6</link>\u518D\u9001\u51FA\u3002\u82E5\u9700\u6E9D\u901A\u8207\u4FEE\u6539\u6642\u8981\u900F\u904E GitHub \u5E33\u865F\u4F86\u9032\u884C\uFF0C\u4F46\u4E26\u975E\u5F37\u5236\u9700\u6C42\u3002",noteLicense:"\u9001\u51FA\u5373\u4EE3\u8868\u60A8\u540C\u610F\u6B64\u8CC7\u6599\u5EAB\u5C07\u767C\u5E03\u6642\u4F7F\u7528 <link>MIT \u6388\u6B0A\uFF0C</link>\u7C21\u55AE\u4F86\u8AAA\u662F\u6307\u4EFB\u4F55\u4EBA\u90FD\u80FD\u4E0D\u53D7\u9650\u5236\u7684\u4F7F\u7528\u3002",noteItems:"\u6BCF\u500B\u8CC7\u6599\u5EAB\u9805\u76EE\u90FD\u6709\u7368\u7ACB\u7684\u540D\u7A31\u6545\u53EF\u7BE9\u9078\u3002\u6703\u5305\u542B\u4E0B\u5217\u8CC7\u6599\u5EAB\u9805\u76EE\uFF1A",atleastOneLibItem:"\u8ACB\u9078\u64C7\u81F3\u5C11\u4E00\u9805\u8CC7\u6599\u5EAB\u9805\u76EE",republishWarning:"\u6CE8\u610F\uFF1A\u90E8\u5206\u9078\u53D6\u4E2D\u7684\u7269\u4EF6\u5148\u524D\u5DF2\u767C\u5E03/\u9001\u51FA\u904E\u3002\u5EFA\u8B70\u50C5\u5728\u8981\u66F4\u65B0\u73FE\u5B58\u8CC7\u6599\u5EAB\u6216\u5DF2\u9001\u51FA\u7684\u7269\u4EF6\u6642\u624D\u91CD\u65B0\u9001\u51FA\u9019\u4E9B\u7269\u4EF6\u3002"},x={title:"\u8CC7\u6599\u5EAB\u5DF2\u9001\u51FA",content:"\u611F\u8B1D {{authorName}} \u3002\u60A8\u7684\u8CC7\u6599\u5EAB\u5DF2\u9001\u51FA\u5F85\u5BE9\u67E5\u3002\u60A8\u53EF\u67E5\u770B\u76EE\u524D\u72C0\u614B<link>\u5728\u6B64</link>"},T={resetLibrary:"\u91CD\u8A2D\u8CC7\u6599\u5EAB",removeItemsFromLib:"\u5F9E\u8CC7\u6599\u5EAB\u79FB\u9664\u6240\u9078\u7684\u9805\u76EE"},_={header:"\u532F\u51FA\u5716\u7247",label:{withBackground:"\u80CC\u666F",onlySelected:"\u50C5\u9078\u53D6\u7269\u4EF6",darkMode:"\u6DF1\u8272\u6A21\u5F0F",embedScene:"\u5D4C\u5165\u5834\u666F",scale:"\u7E2E\u653E\u6BD4\u4F8B",padding:"\u5167\u9593\u8DDD"},tooltip:{embedScene:`\u7528\u65BC\u56DE\u5FA9\u5834\u666F\u7684\u5834\u666F\u8CC7\u6599\u6703\u88AB\u5305\u542B\u5728\u8F38\u51FA\u7684 PNG/SVG \u6A94\u6848\u4E2D\u3002
6
+ \u6703\u589E\u52A0\u8F38\u51FA\u7684\u6A94\u6848\u5927\u5C0F\u3002`},title:{exportToPng:"\u8F38\u51FA\u6210 PNG",exportToSvg:"\u8F38\u51FA\u6210 SVG",copyPngToClipboard:"\u8907\u88FD PNG \u81F3\u526A\u8CBC\u7C3F"},button:{exportToPng:"PNG",exportToSvg:"SVG",copyPngToClipboard:"\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F"}},L={tooltip:"\u4F60\u7684\u4F5C\u54C1\u5DF2\u4F7F\u7528 end-to-end \u65B9\u5F0F\u52A0\u5BC6\uFF0CExcalidraw \u7684\u4F3A\u670D\u5668\u4E5F\u7121\u6CD5\u53D6\u5F97\u5176\u5167\u5BB9\u3002",link:"Excalidraw \u7AEF\u5230\u7AEF\u52A0\u5BC6\u7684\u76F8\u95DC\u90E8\u843D\u683C\u6587\u7AE0"},E={angle:"\u89D2\u5EA6",shapes:"\u5F62\u72C0",height:"\u9AD8\u5EA6",scene:"\u5834\u666F",selected:"\u5DF2\u9078",storage:"\u5132\u5B58",fullTitle:"\u756B\u5E03\u8207\u5F62\u72C0\u5C6C\u6027\u8A2D\u5B9A",title:"\u5C6C\u6027",generalStats:"\u4E00\u822C",elementProperties:"\u5F62\u72C0\u5C6C\u6027",total:"\u5408\u8A08",version:"\u7248\u672C",versionCopy:"\u9EDE\u64CA\u8907\u88FD",versionNotAvailable:"\u7121\u6CD5\u53D6\u5F97\u7248\u672C",width:"\u5BEC\u5EA6"},f={addedToLibrary:"\u52A0\u5165\u8CC7\u6599\u5EAB",copyStyles:"\u5DF2\u8907\u88FD\u6A23\u5F0F",copyToClipboard:"\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F\u3002",copyToClipboardAsPng:`\u4EE5 PNG \u683C\u5F0F\u5C07 {{exportSelection}} \u8907\u88FD\u81F3\u526A\u8CBC\u7C3F
7
+ ({{exportColorScheme}})`,copyToClipboardAsSvg:`\u4EE5 SVG \u683C\u5F0F\u5C07 {{exportSelection}} \u8907\u88FD\u81F3\u526A\u8CBC\u7C3F
8
+ ({{exportColorScheme}})`,fileSaved:"\u5DF2\u5132\u5B58\u6A94\u6848\u3002",fileSavedToFilename:"\u5132\u5B58\u70BA {filename}",canvas:"\u756B\u5E03",selection:"\u5DF2\u9078\u9805\u76EE",pasteAsSingleElement:`\u4F7F\u7528 {{shortcut}} \u4EE5\u505A\u70BA\u55AE\u4E00\u7269\u4EF6\u8CBC\u4E0A\uFF0C
9
+ \u6216\u8CBC\u4E0A\u81F3\u73FE\u6709\u7684\u6587\u5B57\u7DE8\u8F2F\u5668`,unableToEmbed:"\u76EE\u524D\u4E0D\u5141\u8A31\u5D4C\u5165\u6B64\u7DB2\u5740\u3002\u60A8\u53EF\u81F3 GitHub \u63D0\u51FA issue \u4EE5\u8981\u6C42\u5C07\u6B64\u7DB2\u5740\u52A0\u5165\u5408\u683C\u540D\u55AE\u3002",unrecognizedLinkFormat:"\u60A8\u5D4C\u5165\u7684\u9023\u7D50\u683C\u5F0F\u4E0D\u7B26\u3002\u8ACB\u5617\u8A66\u8CBC\u5165\u539F\u7DB2\u7AD9\u6240\u63D0\u4F9B\u7684\u300C\u5D4C\u5165\u300D\u5B57\u4E32\u3002",elementLinkCopied:"\u9023\u7D50\u5DF2\u8907\u88FD\u81F3\u526A\u8CBC\u7C3F"},F={transparent:"\u900F\u660E",black:"\u9ED1",white:"\u767D",red:"\u7D05",pink:"\u7C89\u7D05",grape:"\u6DF1\u7D2B",violet:"\u85CD\u7D2B",gray:"\u7070",blue:"\u85CD",cyan:"\u9752",teal:"\u85CD\u7DA0",green:"\u7DA0",yellow:"\u9EC3",orange:"\u6A58",bronze:"\u9285"},C={app:{center_heading:"\u6240\u6709\u8CC7\u6599\u7686\u5DF2\u5728\u700F\u89BD\u5668\u4E2D\u5132\u5B58\u65BC\u672C\u6A5F",center_heading_plus:"\u60A8\u662F\u5426\u662F\u8981\u524D\u5F80 Excalidraw+ \uFF1F",menuHint:"\u8F38\u51FA\u3001\u504F\u597D\u8A2D\u5B9A\u3001\u8A9E\u8A00..."},defaults:{menuHint:"\u8F38\u51FA\u3001\u504F\u597D\u8A2D\u5B9A\u53CA\u5176\u4ED6...",center_heading:"\u5716\u8868\u3002\u88FD\u4F5C\u3002\u8D85\u7C21\u55AE\u3002",toolbarHint:"\u9078\u500B\u5DE5\u5177\u958B\u59CB\u756B\u5716\u5427\uFF01",helpHint:"\u5FEB\u901F\u9375\u8207\u8AAA\u660E"}},P={color:"",mostUsedCustomColors:"\u6700\u5E38\u4F7F\u7528\u7684\u81EA\u8A02\u984F\u8272",colors:"\u984F\u8272",shades:"\u6F38\u8B8A\u8272",hexCode:"Hex \u78BC",noShades:"\u6C92\u6709\u6B64\u984F\u8272\u7684\u6F38\u8B8A\u8272"},A={action:{exportToImage:{title:"\u532F\u51FA\u70BA\u5716\u7247",button:"\u532F\u51FA\u70BA\u5716\u7247",description:"\u5C07\u5834\u666F\u532F\u51FA\u70BA\u53EF\u4F9B\u532F\u5165\u7684\u5716\u7247\u6A94\u6848"},saveToDisk:{title:"\u5132\u5B58\u81F3\u786C\u789F",button:"\u5132\u5B58\u81F3\u786C\u789F",description:"\u5C07\u5834\u666F\u532F\u51FA\u70BA\u53EF\u4F9B\u532F\u5165\u7684\u6A94\u6848"},excalidrawPlus:{title:"Excalidraw+",button:"\u532F\u51FA\u81F3 Excalidraw+",description:"\u5C07\u6B64\u5834\u666F\u5132\u5B58\u81F3\u60A8\u7684 Excalidraw+ \u5DE5\u4F5C\u5340"}},modal:{loadFromFile:{title:"\u5F9E\u6A94\u6848\u8F09\u5165",button:"\u5F9E\u6A94\u6848\u8F09\u5165",description:"\u5F9E\u6A94\u6848\u8F09\u5165\u5C07<bold>\u53D6\u4EE3\u60A8\u76EE\u524D\u7684\u5167\u5BB9</bold>\u3002<br></br>\u53EF\u5148\u4F7F\u7528\u4E0B\u65B9\u7684\u9078\u9805\u5099\u4EFD\u60A8\u7684\u7E6A\u5716\u3002"},shareableLink:{title:"\u5F9E\u9023\u7D50\u8F09\u5165",button:"\u53D6\u4EE3\u6211\u7684\u5167\u5BB9",description:"\u8F09\u5165\u5916\u90E8\u7E6A\u5716\u5C07<bold>\u53D6\u4EE3\u60A8\u76EE\u524D\u7684\u5167\u5BB9</bold>\u3002<br></br>\u53EF\u5148\u4F7F\u7528\u4E0B\u65B9\u7684\u9078\u9805\u5099\u4EFD\u60A8\u7684\u7E6A\u5716\u3002"}}},N={title:"Mermaid \u81F3 Excalidraw",button:"\u63D2\u5165",description:"\u76EE\u524D\u50C5\u652F\u63F4 <flowchartLink>Flowchart</flowchartLink> \u3001 <sequenceLink>Sequence</sequenceLink> \u53CA <classLink>Class </classLink> \u5716\u8868\u3002\u5176\u9918\u6A94\u6848\u985E\u578B\u5728 Excalidraw \u5C07\u6703\u4EE5\u5716\u50CF\u5448\u73FE\u3002",syntax:"Mermaid \u8A9E\u6CD5",preview:"\u9810\u89BD"},I={placeholder:"\u5FEB\u901F\u641C\u5C0B"},z={badge:{old:"\u820A\u7248"},sceneFonts:"\u5728\u6B64\u5834\u666F\u4E2D",availableFonts:"\u53EF\u7528\u5B57\u578B",empty:"\u627E\u4E0D\u5230\u5B57\u578B"},D={empty:"\u627E\u4E0D\u5230\u4F7F\u7528\u8005",hint:{text:"\u9EDE\u64CA\u4F7F\u7528\u8005\u4EE5\u9032\u884C\u8FFD\u8E64",followStatus:"\u60A8\u6B63\u5728\u8FFD\u8E64\u6B64\u4F7F\u7528\u8005",inCall:"\u4F7F\u7528\u8005\u6B63\u5728\u8A9E\u97F3\u901A\u8A71\u4E2D",micMuted:"\u4F7F\u7528\u8005\u7684\u9EA5\u514B\u98A8\u5DF2\u975C\u97F3",isSpeaking:"\u4F7F\u7528\u8005\u8AAA\u8A71\u4E2D"}},B={title:"\u6307\u4EE4\u9762\u677F",shortcuts:{select:"\u9078\u53D6",confirm:"\u78BA\u8A8D",close:"\u95DC\u9589"},recents:"\u6700\u8FD1\u4F7F\u7528",search:{placeholder:"\u641C\u5C0B\u9078\u55AE\u8207\u6307\u4EE4\u4E26\u627E\u51FA\u96B1\u85CF\u529F\u80FD",noMatch:"\u6C92\u6709\u7B26\u5408\u7684\u6307\u4EE4\u2026"},itemNotAvailable:"\u6307\u4EE4\u7121\u6CD5\u4F7F\u7528\u2026",shortcutHint:"\u4F7F\u7528 {{shortcut}} \u958B\u555F\u6307\u4EE4\u9762\u677F"},M={ctrl:"",option:"",cmd:"",alt:"",escape:"",enter:"",shift:"",spacebar:"",delete:"",mmb:""},G={labels:r,elementLink:t,library:a,search:i,buttons:l,alerts:n,errors:s,toolBar:d,element:c,headings:m,hints:p,canvasError:b,errorSplash:g,shareDialog:u,roomDialog:h,errorDialog:w,exportDialog:y,helpDialog:S,clearCanvasDialog:k,publishDialog:v,publishSuccessDialog:x,confirmDialog:T,imageExportDialog:_,encrypted:L,stats:E,toast:f,colors:F,welcomeScreen:C,colorPicker:P,overwriteConfirm:A,mermaid:N,quickSearch:I,fontList:z,userList:D,commandPalette:B,keys:M};export{n as alerts,l as buttons,b as canvasError,k as clearCanvasDialog,P as colorPicker,F as colors,B as commandPalette,T as confirmDialog,G as default,c as element,t as elementLink,L as encrypted,w as errorDialog,g as errorSplash,s as errors,y as exportDialog,z as fontList,m as headings,S as helpDialog,p as hints,_ as imageExportDialog,M as keys,r as labels,a as library,N as mermaid,A as overwriteConfirm,v as publishDialog,x as publishSuccessDialog,I as quickSearch,h as roomDialog,i as search,u as shareDialog,E as stats,f as toast,d as toolBar,D as userList,C as welcomeScreen};
@@ -1,17 +1,10 @@
1
1
  import type { ExcalidrawElement, FontFamilyValues } from "@excalidraw/element/types";
2
2
  import type { AppProps, AppState } from "@excalidraw/excalidraw/types";
3
- export declare const isDarwin: boolean;
4
- export declare const isWindows: boolean;
5
- export declare const isAndroid: boolean;
6
- export declare const isFirefox: boolean;
7
- export declare const isChrome: boolean;
8
- export declare const isSafari: boolean;
9
- export declare const isIOS: boolean;
10
- export declare const isBrave: () => boolean;
11
3
  export declare const supportsResizeObserver: boolean;
12
4
  export declare const APP_NAME = "Excalidraw";
13
5
  export declare const TEXT_AUTOWRAP_THRESHOLD = 36;
14
6
  export declare const DRAGGING_THRESHOLD = 10;
7
+ export declare const MINIMUM_ARROW_SIZE = 20;
15
8
  export declare const LINE_CONFIRM_THRESHOLD = 8;
16
9
  export declare const ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5;
17
10
  export declare const ELEMENT_TRANSLATE_AMOUNT = 1;
@@ -85,10 +78,13 @@ export declare const ENV: {
85
78
  PRODUCTION: string;
86
79
  };
87
80
  export declare const CLASSES: {
81
+ SIDEBAR: string;
88
82
  SHAPE_ACTIONS_MENU: string;
89
83
  ZOOM_ACTIONS: string;
90
84
  SEARCH_MENU_INPUT_WRAPPER: string;
91
85
  CONVERT_ELEMENT_TYPE_POPUP: string;
86
+ SHAPE_ACTIONS_THEME_SCOPE: string;
87
+ FRAME_NAME: string;
92
88
  };
93
89
  export declare const CJK_HAND_DRAWN_FALLBACK_FONT = "Xiaolai";
94
90
  export declare const WINDOWS_EMOJI_FALLBACK_FONT = "Segoe UI Emoji";
@@ -174,6 +170,14 @@ export declare const IMAGE_MIME_TYPES: {
174
170
  readonly avif: "image/avif";
175
171
  readonly jfif: "image/jfif";
176
172
  };
173
+ export declare const STRING_MIME_TYPES: {
174
+ readonly text: "text/plain";
175
+ readonly html: "text/html";
176
+ readonly json: "application/json";
177
+ readonly excalidraw: "application/vnd.excalidraw+json";
178
+ readonly excalidrawlib: "application/vnd.excalidrawlib+json";
179
+ readonly excalidrawlibIds: "application/vnd.excalidrawlib.ids+json";
180
+ };
177
181
  export declare const MIME_TYPES: {
178
182
  readonly svg: "image/svg+xml";
179
183
  readonly png: "image/png";
@@ -184,14 +188,15 @@ export declare const MIME_TYPES: {
184
188
  readonly ico: "image/x-icon";
185
189
  readonly avif: "image/avif";
186
190
  readonly jfif: "image/jfif";
191
+ readonly "excalidraw.svg": "image/svg+xml";
192
+ readonly "excalidraw.png": "image/png";
193
+ readonly binary: "application/octet-stream";
187
194
  readonly text: "text/plain";
188
195
  readonly html: "text/html";
189
196
  readonly json: "application/json";
190
197
  readonly excalidraw: "application/vnd.excalidraw+json";
191
198
  readonly excalidrawlib: "application/vnd.excalidrawlib+json";
192
- readonly "excalidraw.svg": "image/svg+xml";
193
- readonly "excalidraw.png": "image/png";
194
- readonly binary: "application/octet-stream";
199
+ readonly excalidrawlibIds: "application/vnd.excalidrawlib.ids+json";
195
200
  };
196
201
  export declare const ALLOWED_PASTE_MIME_TYPES: readonly ["text/plain", "text/html", ...("image/svg+xml" | "image/png" | "image/jpeg" | "image/gif" | "image/webp" | "image/bmp" | "image/x-icon" | "image/avif" | "image/jfif")[]];
197
202
  export declare const EXPORT_IMAGE_TYPES: {
@@ -226,10 +231,6 @@ export declare const URL_HASH_KEYS: {
226
231
  readonly addLibrary: "addLibrary";
227
232
  };
228
233
  export declare const DEFAULT_UI_OPTIONS: AppProps["UIOptions"];
229
- export declare const MQ_MAX_WIDTH_PORTRAIT = 730;
230
- export declare const MQ_MAX_WIDTH_LANDSCAPE = 1000;
231
- export declare const MQ_MAX_HEIGHT_LANDSCAPE = 500;
232
- export declare const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229;
233
234
  export declare const MAX_DECIMALS_FOR_SVG_EXPORT = 2;
234
235
  export declare const EXPORT_SCALES: number[];
235
236
  export declare const DEFAULT_EXPORT_PADDING = 10;
@@ -341,3 +342,8 @@ export declare enum UserIdleState {
341
342
  * the start and end points)
342
343
  */
343
344
  export declare const LINE_POLYGON_POINT_MERGE_DISTANCE = 20;
345
+ export declare const DOUBLE_TAP_POSITION_THRESHOLD = 35;
346
+ export declare const BIND_MODE_TIMEOUT = 700;
347
+ export declare const MOBILE_ACTION_BUTTON_BG: {
348
+ readonly background: "var(--mobile-action-button-bg)";
349
+ };
@@ -0,0 +1,34 @@
1
+ export type StylesPanelMode = "compact" | "full" | "mobile";
2
+ export type EditorInterface = Readonly<{
3
+ formFactor: "phone" | "tablet" | "desktop";
4
+ desktopUIMode: "compact" | "full";
5
+ userAgent: Readonly<{
6
+ isMobileDevice: boolean;
7
+ platform: "ios" | "android" | "other" | "unknown";
8
+ }>;
9
+ isTouchScreen: boolean;
10
+ canFitSidebar: boolean;
11
+ isLandscape: boolean;
12
+ }>;
13
+ export declare const MQ_MAX_MOBILE = 599;
14
+ export declare const MQ_MAX_WIDTH_LANDSCAPE = 1000;
15
+ export declare const MQ_MAX_HEIGHT_LANDSCAPE = 500;
16
+ export declare const MQ_MIN_TABLET: number;
17
+ export declare const MQ_MAX_TABLET = 1400;
18
+ export declare const MQ_MIN_WIDTH_DESKTOP = 1440;
19
+ export declare const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229;
20
+ export declare const isDarwin: boolean;
21
+ export declare const isWindows: boolean;
22
+ export declare const isAndroid: boolean;
23
+ export declare const isFirefox: boolean;
24
+ export declare const isChrome: boolean;
25
+ export declare const isSafari: boolean;
26
+ export declare const isIOS: boolean;
27
+ export declare const isBrave: () => boolean;
28
+ export declare const isMobileBreakpoint: (width: number, height: number) => boolean;
29
+ export declare const isTabletBreakpoint: (editorWidth: number, editorHeight: number) => boolean;
30
+ export declare const getFormFactor: (editorWidth: number, editorHeight: number) => EditorInterface["formFactor"];
31
+ export declare const deriveStylesPanelMode: (editorInterface: EditorInterface) => StylesPanelMode;
32
+ export declare const createUserAgentDescriptor: (userAgentString: string) => EditorInterface["userAgent"];
33
+ export declare const loadDesktopUIModePreference: () => "compact" | "full" | null;
34
+ export declare const setDesktopUIMode: (mode: EditorInterface["desktopUIMode"]) => "compact" | "full" | undefined;
@@ -10,3 +10,5 @@ export * from "./random";
10
10
  export * from "./url";
11
11
  export * from "./utils";
12
12
  export * from "./emitter";
13
+ export * from "./visualdebug";
14
+ export * from "./editorInterface";
@@ -1,4 +1,4 @@
1
- import type { ExcalidrawBindableElement, FontFamilyValues, FontString } from "@excalidraw/element/types";
1
+ import type { FontFamilyValues, FontString } from "@excalidraw/element/types";
2
2
  import type { ActiveTool, AppState, ToolType, UnsubscribeCallback, Zoom } from "@excalidraw/excalidraw/types";
3
3
  import type { MaybePromise } from "./utility-types";
4
4
  import type { EVENT } from "./constants";
@@ -17,6 +17,8 @@ export declare const getFontString: ({ fontSize, fontFamily, }: {
17
17
  fontSize: number;
18
18
  fontFamily: FontFamilyValues;
19
19
  }) => FontString;
20
+ /** executes callback in the frame that's after the current one */
21
+ export declare const nextAnimationFrame: (cb: () => any) => Promise<void>;
20
22
  export declare const debounce: <T extends any[]>(fn: (...args: T) => void, timeout: number) => {
21
23
  (...args: T): void;
22
24
  flush(): void;
@@ -80,6 +82,7 @@ export declare const chunk: <T extends unknown>(array: readonly T[], size: numbe
80
82
  export declare const selectNode: (node: Element) => void;
81
83
  export declare const removeSelection: () => void;
82
84
  export declare const distance: (x: number, y: number) => number;
85
+ export declare const isSelectionLikeTool: (type: ToolType | "custom") => boolean;
83
86
  export declare const updateActiveTool: (appState: Pick<AppState, "activeTool">, data: (({
84
87
  type: ToolType;
85
88
  } | {
@@ -94,7 +97,6 @@ export declare const updateActiveTool: (appState: Pick<AppState, "activeTool">,
94
97
  export declare const isFullScreen: () => boolean;
95
98
  export declare const allowFullScreen: () => Promise<void>;
96
99
  export declare const exitFullScreen: () => Promise<void>;
97
- export declare const getShortcutKey: (shortcut: string) => string;
98
100
  export declare const viewportCoordsToSceneCoords: ({ clientX, clientY }: {
99
101
  clientX: number;
100
102
  clientY: number;
@@ -140,7 +142,6 @@ export declare const findLastIndex: <T>(array: readonly T[], cb: (element: T, in
140
142
  /** returns the first non-null mapped value */
141
143
  export declare const mapFind: <T, K>(collection: readonly T[], iteratee: (value: T, index: number) => K | null | undefined) => K | undefined;
142
144
  export declare const isTransparent: (color: string) => boolean;
143
- export declare const isBindingFallthroughEnabled: (el: ExcalidrawBindableElement) => boolean;
144
145
  export type ResolvablePromise<T> = Promise<T> & {
145
146
  resolve: [T] extends [undefined] ? (value?: MaybePromise<Awaited<T>>) => void : (value: MaybePromise<Awaited<T>>) => void;
146
147
  reject: (error: Error) => void;
@@ -264,4 +265,9 @@ export declare const castArray: <T>(value: T | T[]) => T[];
264
265
  export declare const isReadonlyArray: (value?: any) => value is readonly any[];
265
266
  export declare const sizeOf: (value: readonly unknown[] | Readonly<Map<string, unknown>> | Readonly<Record<string, unknown>> | ReadonlySet<unknown>) => number;
266
267
  export declare const reduceToCommonValue: <T, R = T>(collection: ReadonlySet<T> | readonly T[], getValue?: ((item: T) => R) | undefined) => R | null;
268
+ type FEATURE_FLAGS = {
269
+ COMPLEX_BINDINGS: boolean;
270
+ };
271
+ export declare const getFeatureFlag: <F extends "COMPLEX_BINDINGS">(flag: F) => FEATURE_FLAGS[F];
272
+ export declare const setFeatureFlag: <F extends "COMPLEX_BINDINGS">(flag: F, value: FEATURE_FLAGS[F]) => void;
267
273
  export {};
@@ -0,0 +1,41 @@
1
+ import { type GlobalPoint, type LocalPoint } from "@excalidraw/math";
2
+ import type { Curve } from "@excalidraw/math";
3
+ import type { LineSegment } from "@excalidraw/utils";
4
+ import type { Bounds } from "@excalidraw/element";
5
+ declare global {
6
+ interface Window {
7
+ visualDebug?: {
8
+ data: DebugElement[][];
9
+ currentFrame?: number;
10
+ };
11
+ }
12
+ }
13
+ export type DebugElement = {
14
+ color: string;
15
+ data: LineSegment<GlobalPoint> | Curve<GlobalPoint>;
16
+ permanent: boolean;
17
+ };
18
+ export declare const debugDrawCubicBezier: (c: Curve<GlobalPoint>, opts?: {
19
+ color?: string;
20
+ permanent?: boolean;
21
+ }) => void;
22
+ export declare const debugDrawLine: (segment: LineSegment<GlobalPoint> | LineSegment<GlobalPoint>[], opts?: {
23
+ color?: string;
24
+ permanent?: boolean;
25
+ }) => void;
26
+ export declare const debugDrawPoint: (p: GlobalPoint, opts?: {
27
+ color?: string;
28
+ permanent?: boolean;
29
+ fuzzy?: boolean;
30
+ }) => void;
31
+ export declare const debugDrawBounds: (box: Bounds | Bounds[], opts?: {
32
+ color?: string;
33
+ permanent?: boolean;
34
+ }) => void;
35
+ export declare const debugDrawPoints: ({ x, y, points, }: {
36
+ x: number;
37
+ y: number;
38
+ points: readonly LocalPoint[];
39
+ }, options?: any) => void;
40
+ export declare const debugCloseFrame: () => void;
41
+ export declare const debugClear: () => void;
@@ -27,7 +27,9 @@ export declare class Scene {
27
27
  getElementsMapIncludingDeleted(): Map<string, Ordered<ExcalidrawElement>> & import("@excalidraw/common/utility-types").MakeBrand<"SceneElementsMap">;
28
28
  getNonDeletedElements(): readonly Ordered<NonDeletedExcalidrawElement>[];
29
29
  getFramesIncludingDeleted(): readonly ExcalidrawFrameLikeElement[];
30
- constructor(elements?: ElementsMapOrArray | null);
30
+ constructor(elements?: ElementsMapOrArray | null, options?: {
31
+ skipValidation?: true;
32
+ });
31
33
  getSelectedElements(opts: {
32
34
  selectedElementIds: AppState["selectedElementIds"];
33
35
  /**
@@ -55,7 +57,9 @@ export declare class Scene {
55
57
  * @returns whether a change was made
56
58
  */
57
59
  mapElements(iteratee: (element: ExcalidrawElement) => ExcalidrawElement): boolean;
58
- replaceAllElements(nextElements: ElementsMapOrArray): void;
60
+ replaceAllElements(nextElements: ElementsMapOrArray, options?: {
61
+ skipValidation?: true;
62
+ }): void;
59
63
  triggerUpdate(): void;
60
64
  onUpdate(cb: SceneStateCallback): SceneStateCallbackRemover;
61
65
  destroy(): void;
@@ -1,7 +1,8 @@
1
+ import type { AppState } from "@excalidraw/excalidraw/types";
1
2
  import type { Scene } from "./Scene";
2
3
  import type { ExcalidrawElement } from "./types";
3
4
  export interface Alignment {
4
5
  position: "start" | "center" | "end";
5
6
  axis: "x" | "y";
6
7
  }
7
- export declare const alignElements: (selectedElements: ExcalidrawElement[], alignment: Alignment, scene: Scene) => ExcalidrawElement[];
8
+ export declare const alignElements: (selectedElements: ExcalidrawElement[], alignment: Alignment, scene: Scene, appState: Readonly<AppState>) => ExcalidrawElement[];
@@ -1,68 +1,80 @@
1
1
  import { type GlobalPoint } from "@excalidraw/math";
2
- import type { LocalPoint } from "@excalidraw/math";
2
+ import type { LineSegment, LocalPoint } from "@excalidraw/math";
3
3
  import type { AppState } from "@excalidraw/excalidraw/types";
4
4
  import { type Heading } from "./heading";
5
5
  import type { Scene } from "./Scene";
6
6
  import type { Bounds } from "./bounds";
7
7
  import type { ElementUpdate } from "./mutateElement";
8
- import type { ExcalidrawBindableElement, ExcalidrawElement, NonDeleted, ExcalidrawLinearElement, NonDeletedExcalidrawElement, ElementsMap, NonDeletedSceneElementsMap, ExcalidrawElbowArrowElement, FixedPoint } from "./types";
9
- export type SuggestedBinding = NonDeleted<ExcalidrawBindableElement> | SuggestedPointBinding;
10
- export type SuggestedPointBinding = [
11
- NonDeleted<ExcalidrawLinearElement>,
12
- "start" | "end" | "both",
13
- NonDeleted<ExcalidrawBindableElement>
14
- ];
8
+ import type { BindMode, ElementsMap, ExcalidrawArrowElement, ExcalidrawBindableElement, ExcalidrawElbowArrowElement, ExcalidrawElement, FixedPoint, FixedPointBinding, NonDeleted, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap, Ordered, PointsPositionUpdates } from "./types";
9
+ export type BindingStrategy = {
10
+ mode: BindMode;
11
+ element: NonDeleted<ExcalidrawBindableElement>;
12
+ focusPoint: GlobalPoint;
13
+ } | {
14
+ mode: null;
15
+ element?: undefined;
16
+ focusPoint?: undefined;
17
+ } | {
18
+ mode: undefined;
19
+ element?: undefined;
20
+ focusPoint?: undefined;
21
+ };
22
+ /**
23
+ * gaps exclude element strokeWidth
24
+ *
25
+ * IMPORTANT: currently must be > 0 (this also applies to the computed gap)
26
+ */
27
+ export declare const BASE_BINDING_GAP = 10;
28
+ export declare const BASE_BINDING_GAP_ELBOW = 5;
29
+ export declare const getBindingGap: (bindTarget: ExcalidrawBindableElement, opts: Pick<ExcalidrawArrowElement, "elbowed">) => number;
30
+ export declare const maxBindingDistance_simple: (zoom?: AppState["zoom"]) => number;
15
31
  export declare const shouldEnableBindingForPointerEvent: (event: React.PointerEvent<HTMLElement>) => boolean;
16
32
  export declare const isBindingEnabled: (appState: AppState) => boolean;
17
- export declare const FIXED_BINDING_DISTANCE = 5;
18
- export declare const BINDING_HIGHLIGHT_THICKNESS = 10;
19
- export declare const bindOrUnbindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, startBindingElement: ExcalidrawBindableElement | null | "keep", endBindingElement: ExcalidrawBindableElement | null | "keep", scene: Scene) => void;
20
- export declare const bindOrUnbindLinearElements: (selectedElements: NonDeleted<ExcalidrawLinearElement>[], isBindingEnabled: boolean, draggingPoints: readonly number[] | null, scene: Scene, zoom?: AppState["zoom"]) => void;
21
- export declare const getSuggestedBindingsForArrows: (selectedElements: NonDeleted<ExcalidrawElement>[], elementsMap: NonDeletedSceneElementsMap, zoom: AppState["zoom"]) => SuggestedBinding[];
22
- export declare const maybeSuggestBindingsForLinearElementAtCoords: (linearElement: NonDeleted<ExcalidrawLinearElement>, pointerCoords: {
23
- x: number;
24
- y: number;
25
- }[], scene: Scene, zoom: AppState["zoom"], oppositeBindingBoundElement?: ExcalidrawBindableElement | null) => ExcalidrawBindableElement[];
26
- export declare const maybeBindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, appState: AppState, pointerCoords: {
27
- x: number;
28
- y: number;
29
- }, scene: Scene) => void;
30
- export declare const bindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, hoveredElement: ExcalidrawBindableElement, startOrEnd: "start" | "end", scene: Scene) => void;
31
- export declare const isLinearElementSimpleAndAlreadyBound: (linearElement: NonDeleted<ExcalidrawLinearElement>, alreadyBoundToId: ExcalidrawBindableElement["id"] | undefined, bindableElement: ExcalidrawBindableElement) => boolean;
32
- export declare const getHoveredElementForBinding: (pointerCoords: {
33
- x: number;
34
- y: number;
35
- }, elements: readonly NonDeletedExcalidrawElement[], elementsMap: NonDeletedSceneElementsMap, zoom?: AppState["zoom"], fullShape?: boolean, considerAllElements?: boolean) => NonDeleted<ExcalidrawBindableElement> | null;
33
+ export declare const bindOrUnbindBindingElement: (arrow: NonDeleted<ExcalidrawArrowElement>, draggingPoints: PointsPositionUpdates, scene: Scene, appState: AppState, opts?: {
34
+ newArrow?: boolean;
35
+ altKey?: boolean;
36
+ initialBinding?: boolean;
37
+ }) => {
38
+ start: BindingStrategy;
39
+ end: BindingStrategy;
40
+ };
41
+ export declare const getBindingStrategyForDraggingBindingElementEndpoints: (arrow: NonDeleted<ExcalidrawArrowElement>, draggingPoints: PointsPositionUpdates, elementsMap: NonDeletedSceneElementsMap, elements: readonly Ordered<NonDeletedExcalidrawElement>[], appState: AppState, opts?: {
42
+ newArrow?: boolean;
43
+ shiftKey?: boolean;
44
+ altKey?: boolean;
45
+ finalize?: boolean;
46
+ initialBinding?: boolean;
47
+ zoom?: AppState["zoom"];
48
+ }) => {
49
+ start: BindingStrategy;
50
+ end: BindingStrategy;
51
+ };
52
+ export declare const bindOrUnbindBindingElements: (selectedArrows: NonDeleted<ExcalidrawArrowElement>[], scene: Scene, appState: AppState) => void;
53
+ export declare const bindBindingElement: (arrow: NonDeleted<ExcalidrawArrowElement>, hoveredElement: ExcalidrawBindableElement, mode: BindMode, startOrEnd: "start" | "end", scene: Scene, focusPoint?: GlobalPoint) => void;
54
+ export declare const unbindBindingElement: (arrow: NonDeleted<ExcalidrawArrowElement>, startOrEnd: "start" | "end", scene: Scene) => ExcalidrawBindableElement["id"] | null;
36
55
  export declare const updateBoundElements: (changedElement: NonDeletedExcalidrawElement, scene: Scene, options?: {
37
56
  simultaneouslyUpdated?: readonly ExcalidrawElement[];
38
- newSize?: {
39
- width: number;
40
- height: number;
41
- };
42
57
  changedElements?: Map<string, ExcalidrawElement>;
43
58
  }) => void;
44
- export declare const updateBindings: (latestElement: ExcalidrawElement, scene: Scene, options?: {
59
+ export declare const updateBindings: (latestElement: ExcalidrawElement, scene: Scene, appState: AppState, options?: {
45
60
  simultaneouslyUpdated?: readonly ExcalidrawElement[];
46
61
  newSize?: {
47
62
  width: number;
48
63
  height: number;
49
64
  };
50
- zoom?: AppState["zoom"];
51
65
  }) => void;
52
66
  export declare const getHeadingForElbowArrowSnap: (p: Readonly<GlobalPoint>, otherPoint: Readonly<GlobalPoint>, bindableElement: ExcalidrawBindableElement | undefined | null, aabb: Bounds | undefined | null, origPoint: GlobalPoint, elementsMap: ElementsMap, zoom?: AppState["zoom"]) => Heading;
53
- export declare const bindPointToSnapToElementOutline: (arrow: ExcalidrawElbowArrowElement, bindableElement: ExcalidrawBindableElement, startOrEnd: "start" | "end", elementsMap: ElementsMap) => GlobalPoint;
54
- export declare const avoidRectangularCorner: (element: ExcalidrawBindableElement, elementsMap: ElementsMap, p: GlobalPoint) => GlobalPoint;
55
- export declare const snapToMid: (element: ExcalidrawBindableElement, elementsMap: ElementsMap, p: GlobalPoint, tolerance?: number) => GlobalPoint;
67
+ export declare const bindPointToSnapToElementOutline: (arrowElement: ExcalidrawArrowElement, bindableElement: ExcalidrawBindableElement, startOrEnd: "start" | "end", elementsMap: ElementsMap, customIntersector?: LineSegment<GlobalPoint>) => GlobalPoint;
68
+ export declare const avoidRectangularCorner: (arrowElement: ExcalidrawArrowElement, bindTarget: ExcalidrawBindableElement, elementsMap: ElementsMap, p: GlobalPoint) => GlobalPoint;
69
+ export declare const updateBoundPoint: (arrow: NonDeleted<ExcalidrawArrowElement>, startOrEnd: "startBinding" | "endBinding", binding: FixedPointBinding | null | undefined, bindableElement: ExcalidrawBindableElement, elementsMap: ElementsMap, customIntersector?: LineSegment<GlobalPoint>) => LocalPoint | null;
56
70
  export declare const calculateFixedPointForElbowArrowBinding: (linearElement: NonDeleted<ExcalidrawElbowArrowElement>, hoveredElement: ExcalidrawBindableElement, startOrEnd: "start" | "end", elementsMap: ElementsMap) => {
57
71
  fixedPoint: FixedPoint;
58
72
  };
73
+ export declare const calculateFixedPointForNonElbowArrowBinding: (linearElement: NonDeleted<ExcalidrawArrowElement>, hoveredElement: ExcalidrawBindableElement, startOrEnd: "start" | "end", elementsMap: ElementsMap, focusPoint?: GlobalPoint) => {
74
+ fixedPoint: FixedPoint;
75
+ };
59
76
  export declare const fixDuplicatedBindingsAfterDuplication: (duplicatedElements: ExcalidrawElement[], origIdToDuplicateId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>, duplicateElementsMap: NonDeletedSceneElementsMap) => void;
60
77
  export declare const fixBindingsAfterDeletion: (sceneElements: readonly ExcalidrawElement[], deletedElements: readonly ExcalidrawElement[]) => void;
61
- export declare const bindingBorderTest: (element: NonDeleted<ExcalidrawBindableElement>, { x, y }: {
62
- x: number;
63
- y: number;
64
- }, elementsMap: NonDeletedSceneElementsMap, zoom?: AppState["zoom"], fullShape?: boolean) => boolean;
65
- export declare const maxBindingGap: (element: ExcalidrawElement, elementWidth: number, elementHeight: number, zoom?: AppState["zoom"]) => number;
66
78
  export declare const bindingProperties: Set<BindableProp | BindingProp>;
67
79
  export type BindableProp = "boundElements";
68
80
  export type BindingProp = "frameId" | "containerId" | "startBinding" | "endBinding";
@@ -104,7 +116,7 @@ export declare class BindableElement {
104
116
  */
105
117
  static rebindAffected: (elements: ElementsMap, bindableElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void) => void;
106
118
  }
107
- export declare const getGlobalFixedPointForBindableElement: (fixedPointRatio: [number, number], element: ExcalidrawBindableElement, elementsMap: ElementsMap) => GlobalPoint;
108
- export declare const getGlobalFixedPoints: (arrow: ExcalidrawElbowArrowElement, elementsMap: ElementsMap) => [GlobalPoint, GlobalPoint];
119
+ export declare const getGlobalFixedPointForBindableElement: (fixedPointRatio: FixedPoint, element: ExcalidrawBindableElement, elementsMap: ElementsMap) => GlobalPoint;
120
+ export declare const getGlobalFixedPoints: (arrow: ExcalidrawArrowElement, elementsMap: ElementsMap) => [GlobalPoint, GlobalPoint];
109
121
  export declare const getArrowLocalFixedPoints: (arrow: ExcalidrawElbowArrowElement, elementsMap: ElementsMap) => LocalPoint[];
110
122
  export declare const normalizeFixedPoint: <T extends FixedPoint | null>(fixedPoint: T) => T extends null ? null : FixedPoint;
@@ -74,7 +74,7 @@ export interface BoundingBox {
74
74
  width: number;
75
75
  height: number;
76
76
  }
77
- export declare const getCommonBoundingBox: (elements: ExcalidrawElement[] | readonly NonDeleted<ExcalidrawElement>[]) => BoundingBox;
77
+ export declare const getCommonBoundingBox: (elements: readonly ExcalidrawElement[] | readonly NonDeleted<ExcalidrawElement>[]) => BoundingBox;
78
78
  /**
79
79
  * returns scene coords of user's editor viewport (visible canvas area) bounds
80
80
  */
@@ -1,6 +1,6 @@
1
1
  import type { GlobalPoint, LineSegment } from "@excalidraw/math";
2
2
  import type { FrameNameBounds } from "@excalidraw/excalidraw/types";
3
- import type { ElementsMap, ExcalidrawElement } from "./types";
3
+ import type { ElementsMap, ExcalidrawBindableElement, ExcalidrawElement, NonDeleted, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap, Ordered } from "./types";
4
4
  export declare const shouldTestInside: (element: ExcalidrawElement) => boolean;
5
5
  export type HitTestArgs = {
6
6
  point: GlobalPoint;
@@ -8,11 +8,14 @@ export type HitTestArgs = {
8
8
  threshold: number;
9
9
  elementsMap: ElementsMap;
10
10
  frameNameBound?: FrameNameBounds | null;
11
+ overrideShouldTestInside?: boolean;
11
12
  };
12
- export declare const hitElementItself: ({ point, element, threshold, elementsMap, frameNameBound, }: HitTestArgs) => boolean;
13
+ export declare const hitElementItself: ({ point, element, threshold, elementsMap, frameNameBound, overrideShouldTestInside, }: HitTestArgs) => boolean;
13
14
  export declare const hitElementBoundingBox: (point: GlobalPoint, element: ExcalidrawElement, elementsMap: ElementsMap, tolerance?: number) => boolean;
14
15
  export declare const hitElementBoundingBoxOnly: (hitArgs: HitTestArgs, elementsMap: ElementsMap) => boolean;
15
16
  export declare const hitElementBoundText: (point: GlobalPoint, element: ExcalidrawElement, elementsMap: ElementsMap) => boolean;
17
+ export declare const getAllHoveredElementAtPoint: (point: Readonly<GlobalPoint>, elements: readonly Ordered<NonDeletedExcalidrawElement>[], elementsMap: NonDeletedSceneElementsMap, toleranceFn?: ((element: ExcalidrawBindableElement) => number) | undefined) => NonDeleted<ExcalidrawBindableElement>[];
18
+ export declare const getHoveredElementForBinding: (point: Readonly<GlobalPoint>, elements: readonly Ordered<NonDeletedExcalidrawElement>[], elementsMap: NonDeletedSceneElementsMap, toleranceFn?: ((element: ExcalidrawBindableElement) => number) | undefined) => NonDeleted<ExcalidrawBindableElement> | null;
16
19
  /**
17
20
  * Intersect a line with an element for binding test
18
21
  *
@@ -30,3 +33,4 @@ export declare const intersectElementWithLineSegment: (element: ExcalidrawElemen
30
33
  * @returns
31
34
  */
32
35
  export declare const isPointInElement: (point: GlobalPoint, element: ExcalidrawElement, elementsMap: ElementsMap) => boolean;
36
+ export declare const isBindableElementInsideOtherBindable: (innerElement: ExcalidrawBindableElement, outerElement: ExcalidrawBindableElement, elementsMap: ElementsMap) => boolean;
@@ -29,12 +29,16 @@ export declare class Delta<T> {
29
29
  }>(prevObject: T, nextObject: T, modifier?: (partial: Partial<T>) => Partial<T>, postProcess?: (deleted: Partial<T>, inserted: Partial<T>) => [Partial<T>, Partial<T>]): Delta<T>;
30
30
  static empty(): Delta<unknown>;
31
31
  static isEmpty<T>(delta: Delta<T>): boolean;
32
+ /**
33
+ * Merges two deltas into a new one.
34
+ */
35
+ static merge<T>(delta1: Delta<T>, delta2: Delta<T>, delta3?: Delta<T>): Delta<T>;
32
36
  /**
33
37
  * Merges deleted and inserted object partials.
34
38
  */
35
39
  static mergeObjects<T extends {
36
40
  [key: string]: unknown;
37
- }>(prev: T, added: T, removed: T): T;
41
+ }>(prev: T, added: T, removed?: T): T;
38
42
  /**
39
43
  * Merges deleted and inserted array partials.
40
44
  */
@@ -102,18 +106,24 @@ export interface DeltaContainer<T> {
102
106
  * @returns a tuple of the next object `T` with applied `Delta`s, and `boolean`, indicating whether the applied deltas resulted in a visible change.
103
107
  */
104
108
  applyTo(previous: T, ...options: unknown[]): [T, boolean];
109
+ /**
110
+ * Squashes the current delta with the given one.
111
+ */
112
+ squash(delta: DeltaContainer<T>): this;
105
113
  /**
106
114
  * Checks whether all `Delta`s are empty.
107
115
  */
108
116
  isEmpty(): boolean;
109
117
  }
110
118
  export declare class AppStateDelta implements DeltaContainer<AppState> {
111
- readonly delta: Delta<ObservedAppState>;
119
+ delta: Delta<ObservedAppState>;
112
120
  private constructor();
121
+ static create(delta: Delta<ObservedAppState>): AppStateDelta;
113
122
  static calculate<T extends ObservedAppState>(prevAppState: T, nextAppState: T): AppStateDelta;
114
123
  static restore(appStateDeltaDTO: DTO<AppStateDelta>): AppStateDelta;
115
124
  static empty(): AppStateDelta;
116
125
  inverse(): AppStateDelta;
126
+ squash(delta: AppStateDelta): this;
117
127
  applyTo(appState: AppState, nextElements: SceneElementsMap): [AppState, boolean];
118
128
  isEmpty(): boolean;
119
129
  /**
@@ -122,7 +132,6 @@ export declare class AppStateDelta implements DeltaContainer<AppState> {
122
132
  * @returns `true` if a visible change is found, `false` otherwise.
123
133
  */
124
134
  private filterInvisibleChanges;
125
- private static convertToAppStateKey;
126
135
  private static filterSelectedElements;
127
136
  private static filterSelectedGroups;
128
137
  private static stripElementsProps;
@@ -136,7 +145,7 @@ export declare class AppStateDelta implements DeltaContainer<AppState> {
136
145
  }
137
146
  type ElementPartial<TElement extends ExcalidrawElement = ExcalidrawElement> = Omit<Partial<Ordered<TElement>>, "id" | "updated" | "seed">;
138
147
  export type ApplyToOptions = {
139
- excludedProperties: Set<keyof ElementPartial>;
148
+ excludedProperties?: Set<keyof ElementPartial>;
140
149
  };
141
150
  /**
142
151
  * Elements change is a low level primitive to capture a change between two sets of elements.
@@ -155,6 +164,7 @@ export declare class ElementsDelta implements DeltaContainer<SceneElementsMap> {
155
164
  private static satisfiesRemoval;
156
165
  private static satisfiesUpdate;
157
166
  private static satisfiesCommmonInvariants;
167
+ private static satisfiesUniqueInvariants;
158
168
  private static validate;
159
169
  /**
160
170
  * Calculates the `Delta`s between the previous and next set of elements.
@@ -177,6 +187,7 @@ export declare class ElementsDelta implements DeltaContainer<SceneElementsMap> {
177
187
  */
178
188
  applyLatestChanges(prevElements: SceneElementsMap, nextElements: SceneElementsMap, modifierOptions?: "deleted" | "inserted"): ElementsDelta;
179
189
  applyTo(elements: SceneElementsMap, snapshot?: StoreSnapshot["elements"], options?: ApplyToOptions): [SceneElementsMap, boolean];
190
+ squash(delta: ElementsDelta): this;
180
191
  private static createApplier;
181
192
  private static createGetter;
182
193
  private static applyDelta;
@@ -203,6 +214,7 @@ export declare class ElementsDelta implements DeltaContainer<SceneElementsMap> {
203
214
  * should be rebound (if possible) with the current element ~ bindings should be bidirectional.
204
215
  */
205
216
  private static rebindAffected;
217
+ static redrawElements(nextElements: SceneElementsMap, changedElements: Map<string, OrderedExcalidrawElement>): SceneElementsMap;
206
218
  private static redrawTextBoundingBoxes;
207
219
  private static redrawBoundArrows;
208
220
  private static reorderElements;
@@ -1,6 +1,7 @@
1
+ import type { AppState } from "@excalidraw/excalidraw/types";
1
2
  import type { ElementsMap, ExcalidrawElement } from "./types";
2
3
  export interface Distribution {
3
4
  space: "between";
4
5
  axis: "x" | "y";
5
6
  }
6
- export declare const distributeElements: (selectedElements: ExcalidrawElement[], elementsMap: ElementsMap, distribution: Distribution) => ExcalidrawElement[];
7
+ export declare const distributeElements: (selectedElements: ExcalidrawElement[], elementsMap: ElementsMap, distribution: Distribution, appState: Readonly<AppState>) => ExcalidrawElement[];
@@ -31,3 +31,4 @@ export declare const getNonDeletedGroupIds: (elements: ElementsMap) => Set<strin
31
31
  export declare const elementsAreInSameGroup: (elements: readonly ExcalidrawElement[]) => boolean;
32
32
  export declare const isInGroup: (element: NonDeletedExcalidrawElement) => boolean;
33
33
  export declare const getNewGroupIdsForDuplication: (groupIds: ExcalidrawElement["groupIds"], editingGroupId: AppState["editingGroupId"], mapper: (groupId: GroupId) => GroupId) => string[];
34
+ export declare const getSelectedElementsByGroup: (selectedElements: ExcalidrawElement[], elementsMap: ElementsMap, appState: Readonly<AppState>) => ExcalidrawElement[][];