@dwelle/excalidraw 0.3.4

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 (242) hide show
  1. package/CHANGELOG.md +680 -0
  2. package/README.md +927 -0
  3. package/dist/excalidraw-assets/Cascadia.woff2 +0 -0
  4. package/dist/excalidraw-assets/Virgil.woff2 +0 -0
  5. package/dist/excalidraw-assets/image-02a1f3ecd6baf42daaa6.js +1 -0
  6. package/dist/excalidraw-assets/image-eafab0c39ce13f7fea67.js +1 -0
  7. package/dist/excalidraw-assets/vendor-448ccb79e58765b61834.js +2 -0
  8. package/dist/excalidraw-assets/vendor-448ccb79e58765b61834.js.LICENSE.txt +1 -0
  9. package/dist/excalidraw-assets/vendor-cb708a4580b007d81177.js +2 -0
  10. package/dist/excalidraw-assets/vendor-cb708a4580b007d81177.js.LICENSE.txt +1 -0
  11. package/dist/excalidraw-assets-dev/Cascadia.woff2 +0 -0
  12. package/dist/excalidraw-assets-dev/Virgil.woff2 +0 -0
  13. package/dist/excalidraw-assets-dev/image-cacb3d0c02eb2e346ecc.js +33 -0
  14. package/dist/excalidraw-assets-dev/vendor-0454f90696ac835aeb45.js +356 -0
  15. package/dist/excalidraw-assets-dev/vendor-7664c12c379862ed98a5.js +356 -0
  16. package/dist/excalidraw.development.js +2924 -0
  17. package/dist/excalidraw.production.min.js +2 -0
  18. package/dist/excalidraw.production.min.js.LICENSE.txt +1 -0
  19. package/main.js +8 -0
  20. package/package.json +72 -0
  21. package/types/actions/actionAddToLibrary.d.ts +1 -0
  22. package/types/actions/actionAlign.d.ts +6 -0
  23. package/types/actions/actionCanvas.d.ts +8 -0
  24. package/types/actions/actionClipboard.d.ts +4 -0
  25. package/types/actions/actionDeleteSelected.d.ts +1 -0
  26. package/types/actions/actionDistribute.d.ts +2 -0
  27. package/types/actions/actionDuplicateSelection.d.ts +1 -0
  28. package/types/actions/actionExport.d.ts +9 -0
  29. package/types/actions/actionFinalize.d.ts +1 -0
  30. package/types/actions/actionFlip.d.ts +2 -0
  31. package/types/actions/actionGroup.d.ts +2 -0
  32. package/types/actions/actionHistory.d.ts +6 -0
  33. package/types/actions/actionMenu.d.ts +4 -0
  34. package/types/actions/actionNavigate.d.ts +1 -0
  35. package/types/actions/actionProperties.d.ts +12 -0
  36. package/types/actions/actionSelectAll.d.ts +1 -0
  37. package/types/actions/actionStyles.d.ts +3 -0
  38. package/types/actions/actionToggleGridMode.d.ts +1 -0
  39. package/types/actions/actionToggleStats.d.ts +1 -0
  40. package/types/actions/actionToggleViewMode.d.ts +1 -0
  41. package/types/actions/actionToggleZenMode.d.ts +1 -0
  42. package/types/actions/actionZindex.d.ts +4 -0
  43. package/types/actions/index.d.ts +20 -0
  44. package/types/actions/manager.d.ts +28 -0
  45. package/types/actions/register.d.ts +3 -0
  46. package/types/actions/shortcuts.d.ts +2 -0
  47. package/types/actions/types.d.ts +49 -0
  48. package/types/align.d.ts +7 -0
  49. package/types/analytics.d.ts +1 -0
  50. package/types/appState.d.ts +59 -0
  51. package/types/charts.d.ts +19 -0
  52. package/types/clients.d.ts +6 -0
  53. package/types/clipboard.d.ts +19 -0
  54. package/types/colors.d.ts +6 -0
  55. package/types/components/Actions.d.ts +19 -0
  56. package/types/components/ActiveFile.d.ts +8 -0
  57. package/types/components/App.d.ts +154 -0
  58. package/types/components/Avatar.d.ts +10 -0
  59. package/types/components/BackgroundPickerAndDarkModeToggle.d.ts +9 -0
  60. package/types/components/ButtonIconSelect.d.ts +11 -0
  61. package/types/components/Card.d.ts +6 -0
  62. package/types/components/CheckboxItem.d.ts +6 -0
  63. package/types/components/CollabButton.d.ts +8 -0
  64. package/types/components/ColorPicker.d.ts +10 -0
  65. package/types/components/ContextMenu.d.ts +25 -0
  66. package/types/components/DarkModeToggle.d.ts +8 -0
  67. package/types/components/Dialog.d.ts +12 -0
  68. package/types/components/ErrorDialog.d.ts +5 -0
  69. package/types/components/FixedSideContainer.d.ts +9 -0
  70. package/types/components/HelpDialog.d.ts +5 -0
  71. package/types/components/HelpIcon.d.ts +9 -0
  72. package/types/components/HintViewer.d.ts +10 -0
  73. package/types/components/IconPicker.d.ts +14 -0
  74. package/types/components/ImageExportDialog.d.ts +16 -0
  75. package/types/components/InitializeApp.d.ts +16 -0
  76. package/types/components/Island.d.ts +10 -0
  77. package/types/components/JSONExportDialog.d.ts +13 -0
  78. package/types/components/LayerUI.d.ts +34 -0
  79. package/types/components/LibraryButton.d.ts +6 -0
  80. package/types/components/LibraryUnit.d.ts +9 -0
  81. package/types/components/LoadingMessage.d.ts +2 -0
  82. package/types/components/LockButton.d.ts +11 -0
  83. package/types/components/MobileMenu.d.ts +24 -0
  84. package/types/components/Modal.d.ts +11 -0
  85. package/types/components/PasteChartDialog.d.ts +9 -0
  86. package/types/components/Popover.d.ts +11 -0
  87. package/types/components/ProjectName.d.ts +11 -0
  88. package/types/components/Section.d.ts +7 -0
  89. package/types/components/Stack.d.ts +15 -0
  90. package/types/components/Stats.d.ts +11 -0
  91. package/types/components/Toast.d.ts +6 -0
  92. package/types/components/ToolButton.d.ts +35 -0
  93. package/types/components/Tooltip.d.ts +9 -0
  94. package/types/components/UserList.d.ts +13 -0
  95. package/types/components/icons.d.ts +163 -0
  96. package/types/constants.d.ts +115 -0
  97. package/types/data/blob.d.ts +11 -0
  98. package/types/data/encode.d.ts +25 -0
  99. package/types/data/image.d.ts +15 -0
  100. package/types/data/index.d.ts +13 -0
  101. package/types/data/json.d.ts +17 -0
  102. package/types/data/library.d.ts +14 -0
  103. package/types/data/resave.d.ts +5 -0
  104. package/types/data/restore.d.ts +13 -0
  105. package/types/data/types.d.ts +27 -0
  106. package/types/disitrubte.d.ts +7 -0
  107. package/types/element/binding.d.ts +33 -0
  108. package/types/element/bounds.d.ts +16 -0
  109. package/types/element/collision.d.ts +19 -0
  110. package/types/element/dragElements.d.ts +7 -0
  111. package/types/element/index.d.ts +22 -0
  112. package/types/element/linearElementEditor.d.ts +62 -0
  113. package/types/element/mutateElement.d.ts +11 -0
  114. package/types/element/newElement.d.ts +45 -0
  115. package/types/element/resizeElements.d.ts +9 -0
  116. package/types/element/resizeTest.d.ts +13 -0
  117. package/types/element/showSelectedShapeActions.d.ts +3 -0
  118. package/types/element/sizeHelpers.d.ts +16 -0
  119. package/types/element/textElement.d.ts +2 -0
  120. package/types/element/textWysiwyg.d.ts +15 -0
  121. package/types/element/transformHandles.d.ts +28 -0
  122. package/types/element/typeChecks.d.ts +11 -0
  123. package/types/element/types.d.ts +106 -0
  124. package/types/errors.d.ts +5 -0
  125. package/types/ga.d.ts +63 -0
  126. package/types/gadirections.d.ts +8 -0
  127. package/types/galines.d.ts +22 -0
  128. package/types/gapoints.d.ts +7 -0
  129. package/types/gatransforms.d.ts +10 -0
  130. package/types/gesture.d.ts +6 -0
  131. package/types/groups.d.ts +26 -0
  132. package/types/history.d.ts +52 -0
  133. package/types/hooks/useCallbackRefState.d.ts +1 -0
  134. package/types/i18n.d.ts +15 -0
  135. package/types/keys.d.ts +61 -0
  136. package/types/math.d.ts +20 -0
  137. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ar-SA-json-9a3fdf94110439c2826a.d.ts +0 -0
  138. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ar-SA-json-efd63375f9605b72c4af.d.ts +0 -0
  139. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-bg-BG-json-047db6df7a74c0298938.d.ts +0 -0
  140. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-bg-BG-json-35c0e8b92b0dba8a4e6d.d.ts +0 -0
  141. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ca-ES-json-6acefe26cfe1d2f12349.d.ts +0 -0
  142. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ca-ES-json-9924fbd53652d5f15134.d.ts +0 -0
  143. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-cs-CZ-json-85a469d813bb069829e7.d.ts +0 -0
  144. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-de-DE-json-a52c17c4bd1b1db22464.d.ts +0 -0
  145. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-de-DE-json-f85a8a52534c04c3f3b8.d.ts +0 -0
  146. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-el-GR-json-060595a09e0004e33936.d.ts +0 -0
  147. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-el-GR-json-3b209ec86ca2ce69bdfa.d.ts +0 -0
  148. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-es-ES-json-32dc3bf0f789ef18e65d.d.ts +0 -0
  149. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-es-ES-json-af5c541f9ac1526a9eb7.d.ts +0 -0
  150. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-fa-IR-json-7ee232d4ef08da0903f6.d.ts +0 -0
  151. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-fa-IR-json-c732ff7772327332c259.d.ts +0 -0
  152. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-fi-FI-json-46abeda8d809d4091924.d.ts +0 -0
  153. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-fi-FI-json-c1d5c5510660a11a428e.d.ts +0 -0
  154. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-fr-FR-json-6a418571305eecefe9bc.d.ts +0 -0
  155. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-fr-FR-json-79fa555bfea0a356f393.d.ts +0 -0
  156. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-he-IL-json-157ae036fcf470528687.d.ts +0 -0
  157. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-he-IL-json-d006423b531ab062bb85.d.ts +0 -0
  158. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-hi-IN-json-3035c3b3ab3ce981dbc7.d.ts +0 -0
  159. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-hi-IN-json-d959b869453c591a8861.d.ts +0 -0
  160. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-hu-HU-json-50a13e322a60bb701615.d.ts +0 -0
  161. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-hu-HU-json-a366989217753fe3d02b.d.ts +0 -0
  162. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-id-ID-json-87212daac6113b5bf808.d.ts +0 -0
  163. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-id-ID-json-8d13d29ee41be15a1f99.d.ts +0 -0
  164. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-it-IT-json-59f2e9d3dac07f3264cb.d.ts +0 -0
  165. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-it-IT-json-90283cd2809f4165506b.d.ts +0 -0
  166. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ja-JP-json-9e0a78ddb43d5709fb29.d.ts +0 -0
  167. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ja-JP-json-ccb5ffd0f8a0980c2ec0.d.ts +0 -0
  168. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-kab-KAB-json-d9acc7b8ee952e356d06.d.ts +0 -0
  169. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-kab-KAB-json-dac787e0446cdb747fe1.d.ts +0 -0
  170. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ko-KR-json-d61af373bea59d1ff4c6.d.ts +0 -0
  171. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ko-KR-json-e42ededaa35032a201b9.d.ts +0 -0
  172. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-lv-LV-json-07f6bffcb44fdd9aad4f.d.ts +0 -0
  173. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-lv-LV-json-7eea5c4054f8418fdd10.d.ts +0 -0
  174. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-my-MM-json-26d1e27bab3b8ac4a3e6.d.ts +0 -0
  175. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-my-MM-json-a8f9bb37a7b947e9dfba.d.ts +0 -0
  176. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-nb-NO-json-8ce0749d46f0b4a8defb.d.ts +0 -0
  177. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-nb-NO-json-c01fab8602e1b658d5d1.d.ts +0 -0
  178. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-nl-NL-json-23fdfd9f11bc8efbaf56.d.ts +0 -0
  179. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-nl-NL-json-cf922daa828029c1aff5.d.ts +0 -0
  180. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-nn-NO-json-b5931de6e1ed336bf087.d.ts +0 -0
  181. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-nn-NO-json-d363be6b3dcdbf3a868a.d.ts +0 -0
  182. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-oc-FR-json-29d6193adb907d4f5890.d.ts +0 -0
  183. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-oc-FR-json-c6414107ad634b113aba.d.ts +0 -0
  184. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-pa-IN-json-27063e4865142ac11b1a.d.ts +0 -0
  185. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-pa-IN-json-f0c779291da384fb5173.d.ts +0 -0
  186. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-pl-PL-json-16af1b83ac16af57ad07.d.ts +0 -0
  187. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-pl-PL-json-a4a5c6e0a9877c43476a.d.ts +0 -0
  188. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-pt-BR-json-03a046855063512eb9ff.d.ts +0 -0
  189. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-pt-BR-json-db86828d6e3ced9f9854.d.ts +0 -0
  190. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-pt-PT-json-7ed352e9de6dc74ef503.d.ts +0 -0
  191. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-pt-PT-json-bc0cd589bd87a3079407.d.ts +0 -0
  192. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ro-RO-json-75692b7a0166d6ad27a4.d.ts +0 -0
  193. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ro-RO-json-f13a2e7b7a63fbfb6ae7.d.ts +0 -0
  194. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ru-RU-json-69b1a919b7f42adfd6ec.d.ts +0 -0
  195. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-ru-RU-json-7c2a2061d0ca99cf7007.d.ts +0 -0
  196. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-sk-SK-json-0ef09f90308059d22ae8.d.ts +0 -0
  197. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-sk-SK-json-4757551ceb15fa0a29a9.d.ts +0 -0
  198. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-sv-SE-json-dc7718d79b9bf93a4ba4.d.ts +0 -0
  199. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-sv-SE-json-fa5bd09f128972b13ac2.d.ts +0 -0
  200. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-tr-TR-json-b574833ee1c2f58fd24e.d.ts +0 -0
  201. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-tr-TR-json-cba7e62d9610795a5ac3.d.ts +0 -0
  202. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-uk-UA-json-a9a8ea7adb95c0a03680.d.ts +0 -0
  203. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-uk-UA-json-f0cab296bdc4089ffa77.d.ts +0 -0
  204. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-zh-CN-json-45da9983459601b845e8.d.ts +0 -0
  205. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-zh-CN-json-94f562845a945a45e385.d.ts +0 -0
  206. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-zh-TW-json-0e77c896018bcd221bf6.d.ts +0 -0
  207. package/types/packages/excalidraw/dist/excalidraw-assets/i18n-zh-TW-json-7dd3d9ba72493687c286.d.ts +0 -0
  208. package/types/packages/excalidraw/dist/excalidraw-assets/image-02a1f3ecd6baf42daaa6.d.ts +0 -0
  209. package/types/packages/excalidraw/dist/excalidraw-assets/image-eafab0c39ce13f7fea67.d.ts +0 -0
  210. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-448ccb79e58765b61834.d.ts +0 -0
  211. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-cb708a4580b007d81177.d.ts +0 -0
  212. package/types/packages/excalidraw/dist/excalidraw-assets-dev/image-cacb3d0c02eb2e346ecc.d.ts +0 -0
  213. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-0454f90696ac835aeb45.d.ts +0 -0
  214. package/types/packages/excalidraw/dist/excalidraw-assets-dev/vendor-7664c12c379862ed98a5.d.ts +0 -0
  215. package/types/packages/excalidraw/dist/excalidraw.development.d.ts +2 -0
  216. package/types/packages/excalidraw/dist/excalidraw.production.min.d.ts +3 -0
  217. package/types/packages/excalidraw/entry.d.ts +3 -0
  218. package/types/packages/excalidraw/index.d.ts +16 -0
  219. package/types/packages/excalidraw/main.d.ts +2 -0
  220. package/types/packages/excalidraw/publicPath.d.ts +1 -0
  221. package/types/packages/excalidraw/webpack.dev.config.d.ts +81 -0
  222. package/types/packages/excalidraw/webpack.prod.config.d.ts +91 -0
  223. package/types/packages/utils.d.ts +26 -0
  224. package/types/points.d.ts +6 -0
  225. package/types/random.d.ts +3 -0
  226. package/types/renderer/index.d.ts +1 -0
  227. package/types/renderer/renderElement.d.ts +23 -0
  228. package/types/renderer/renderScene.d.ts +21 -0
  229. package/types/renderer/roundRect.d.ts +11 -0
  230. package/types/scene/Scene.d.ts +26 -0
  231. package/types/scene/comparisons.d.ts +10 -0
  232. package/types/scene/export.d.ts +20 -0
  233. package/types/scene/index.d.ts +5 -0
  234. package/types/scene/scroll.d.ts +17 -0
  235. package/types/scene/scrollbars.d.ts +16 -0
  236. package/types/scene/selection.d.ts +11 -0
  237. package/types/scene/types.d.ts +50 -0
  238. package/types/scene/zoom.d.ts +6 -0
  239. package/types/shapes.d.ts +35 -0
  240. package/types/types.d.ts +287 -0
  241. package/types/utils.d.ts +94 -0
  242. package/types/zindex.d.ts +6 -0
@@ -0,0 +1,45 @@
1
+ import { ExcalidrawElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, GroupId, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues } from "../element/types";
2
+ import { AppState } from "../types";
3
+ declare type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted">, "width" | "height" | "angle" | "groupIds" | "boundElementIds" | "seed" | "version" | "versionNonce">;
4
+ export declare const newElement: (opts: {
5
+ type: ExcalidrawGenericElement["type"];
6
+ } & ElementConstructorOpts) => NonDeleted<ExcalidrawGenericElement>;
7
+ export declare const newTextElement: (opts: {
8
+ text: string;
9
+ fontSize: number;
10
+ fontFamily: FontFamilyValues;
11
+ textAlign: TextAlign;
12
+ verticalAlign: VerticalAlign;
13
+ } & ElementConstructorOpts) => NonDeleted<ExcalidrawTextElement>;
14
+ export declare const updateTextElement: (element: ExcalidrawTextElement, { text, isDeleted }: {
15
+ text: string;
16
+ isDeleted?: boolean | undefined;
17
+ }) => ExcalidrawTextElement;
18
+ export declare const newFreeDrawElement: (opts: {
19
+ type: "freedraw";
20
+ points?: ExcalidrawFreeDrawElement["points"];
21
+ simulatePressure: boolean;
22
+ } & ElementConstructorOpts) => NonDeleted<ExcalidrawFreeDrawElement>;
23
+ export declare const newLinearElement: (opts: {
24
+ type: ExcalidrawLinearElement["type"];
25
+ startArrowhead: Arrowhead | null;
26
+ endArrowhead: Arrowhead | null;
27
+ points?: ExcalidrawLinearElement["points"];
28
+ } & ElementConstructorOpts) => NonDeleted<ExcalidrawLinearElement>;
29
+ export declare const deepCopyElement: (val: any, depth?: number) => any;
30
+ /**
31
+ * Duplicate an element, often used in the alt-drag operation.
32
+ * Note that this method has gotten a bit complicated since the
33
+ * introduction of gruoping/ungrouping elements.
34
+ * @param editingGroupId The current group being edited. The new
35
+ * element will inherit this group and its
36
+ * parents.
37
+ * @param groupIdMapForOperation A Map that maps old group IDs to
38
+ * duplicated ones. If you are duplicating
39
+ * multiple elements at once, share this map
40
+ * amongst all of them
41
+ * @param element Element to duplicate
42
+ * @param overrides Any element properties to override
43
+ */
44
+ export declare const duplicateElement: <TElement extends Mutable<ExcalidrawElement>>(editingGroupId: AppState["editingGroupId"], groupIdMapForOperation: Map<GroupId, GroupId>, element: TElement, overrides?: Partial<TElement> | undefined) => TElement;
45
+ export {};
@@ -0,0 +1,9 @@
1
+ import { ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted } from "./types";
2
+ import { MaybeTransformHandleType, TransformHandleDirection } from "./transformHandles";
3
+ import { PointerDownState } from "../types";
4
+ export declare const normalizeAngle: (angle: number) => number;
5
+ export declare const transformElements: (pointerDownState: PointerDownState, transformHandleType: MaybeTransformHandleType, selectedElements: readonly NonDeletedExcalidrawElement[], resizeArrowDirection: "origin" | "end", isRotateWithDiscreteAngle: boolean, isResizeCenterPoint: boolean, shouldKeepSidesRatio: boolean, pointerX: number, pointerY: number, centerX: number, centerY: number) => boolean;
6
+ export declare const reshapeSingleTwoPointElement: (element: NonDeleted<ExcalidrawLinearElement>, resizeArrowDirection: "origin" | "end", isRotateWithDiscreteAngle: boolean, pointerX: number, pointerY: number) => void;
7
+ export declare const resizeSingleElement: (stateAtResizeStart: NonDeletedExcalidrawElement, shouldKeepSidesRatio: boolean, element: NonDeletedExcalidrawElement, transformHandleDirection: TransformHandleDirection, isResizeFromCenter: boolean, pointerX: number, pointerY: number) => void;
8
+ export declare const getResizeOffsetXY: (transformHandleType: MaybeTransformHandleType, selectedElements: NonDeletedExcalidrawElement[], x: number, y: number) => [number, number];
9
+ export declare const getResizeArrowDirection: (transformHandleType: MaybeTransformHandleType, element: NonDeleted<ExcalidrawLinearElement>) => "origin" | "end";
@@ -0,0 +1,13 @@
1
+ import { ExcalidrawElement, PointerType, NonDeletedExcalidrawElement } from "./types";
2
+ import { MaybeTransformHandleType } from "./transformHandles";
3
+ import { AppState, Zoom } from "../types";
4
+ export declare const resizeTest: (element: NonDeletedExcalidrawElement, appState: AppState, x: number, y: number, zoom: Zoom, pointerType: PointerType) => MaybeTransformHandleType;
5
+ export declare const getElementWithTransformHandleType: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, scenePointerX: number, scenePointerY: number, zoom: Zoom, pointerType: PointerType) => {
6
+ element: NonDeletedExcalidrawElement;
7
+ transformHandleType: MaybeTransformHandleType;
8
+ } | null;
9
+ export declare const getTransformHandleTypeFromCoords: ([x1, y1, x2, y2]: readonly [number, number, number, number], scenePointerX: number, scenePointerY: number, zoom: Zoom, pointerType: PointerType) => MaybeTransformHandleType;
10
+ export declare const getCursorForResizingElement: (resizingElement: {
11
+ element?: ExcalidrawElement;
12
+ transformHandleType: MaybeTransformHandleType;
13
+ }) => string;
@@ -0,0 +1,3 @@
1
+ import { AppState } from "../types";
2
+ import { NonDeletedExcalidrawElement } from "./types";
3
+ export declare const showSelectedShapeActions: (appState: AppState, elements: readonly NonDeletedExcalidrawElement[]) => boolean;
@@ -0,0 +1,16 @@
1
+ import { ExcalidrawElement } from "./types";
2
+ export declare const isInvisiblySmallElement: (element: ExcalidrawElement) => boolean;
3
+ /**
4
+ * Makes a perfect shape or diagonal/horizontal/vertical line
5
+ */
6
+ export declare const getPerfectElementSize: (elementType: string, width: number, height: number) => {
7
+ width: number;
8
+ height: number;
9
+ };
10
+ export declare const resizePerfectLineForNWHandler: (element: ExcalidrawElement, x: number, y: number) => void;
11
+ export declare const getNormalizedDimensions: (element: Pick<ExcalidrawElement, "width" | "height" | "x" | "y">) => {
12
+ width: ExcalidrawElement["width"];
13
+ height: ExcalidrawElement["height"];
14
+ x: ExcalidrawElement["x"];
15
+ y: ExcalidrawElement["y"];
16
+ };
@@ -0,0 +1,2 @@
1
+ import { ExcalidrawTextElement } from "./types";
2
+ export declare const redrawTextBoundingBox: (element: ExcalidrawTextElement) => void;
@@ -0,0 +1,15 @@
1
+ import { ExcalidrawElement } from "./types";
2
+ import { AppState } from "../types";
3
+ export declare const textWysiwyg: ({ id, appState, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, }: {
4
+ id: ExcalidrawElement["id"];
5
+ appState: AppState;
6
+ onChange?: ((text: string) => void) | undefined;
7
+ onSubmit: (data: {
8
+ text: string;
9
+ viaKeyboard: boolean;
10
+ }) => void;
11
+ getViewportCoords: (x: number, y: number) => [number, number];
12
+ element: ExcalidrawElement;
13
+ canvas: HTMLCanvasElement | null;
14
+ excalidrawContainer: HTMLDivElement | null;
15
+ }) => void;
@@ -0,0 +1,28 @@
1
+ import { ExcalidrawElement, PointerType } from "./types";
2
+ import { Bounds } from "./bounds";
3
+ import { Zoom } from "../types";
4
+ export declare type TransformHandleDirection = "n" | "s" | "w" | "e" | "nw" | "ne" | "sw" | "se";
5
+ export declare type TransformHandleType = TransformHandleDirection | "rotation";
6
+ export declare type TransformHandle = [number, number, number, number];
7
+ export declare type TransformHandles = Partial<{
8
+ [T in TransformHandleType]: TransformHandle;
9
+ }>;
10
+ export declare type MaybeTransformHandleType = TransformHandleType | false;
11
+ export declare const OMIT_SIDES_FOR_MULTIPLE_ELEMENTS: {
12
+ e: boolean;
13
+ s: boolean;
14
+ n: boolean;
15
+ w: boolean;
16
+ };
17
+ export declare const getTransformHandlesFromCoords: ([x1, y1, x2, y2]: Bounds, angle: number, zoom: Zoom, pointerType: PointerType, omitSides?: {
18
+ e?: boolean | undefined;
19
+ s?: boolean | undefined;
20
+ n?: boolean | undefined;
21
+ w?: boolean | undefined;
22
+ nw?: boolean | undefined;
23
+ ne?: boolean | undefined;
24
+ sw?: boolean | undefined;
25
+ se?: boolean | undefined;
26
+ rotation?: boolean | undefined;
27
+ }) => TransformHandles;
28
+ export declare const getTransformHandles: (element: ExcalidrawElement, zoom: Zoom, pointerType?: PointerType) => TransformHandles;
@@ -0,0 +1,11 @@
1
+ import { ExcalidrawElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawBindableElement, ExcalidrawGenericElement, ExcalidrawFreeDrawElement } from "./types";
2
+ export declare const isGenericElement: (element: ExcalidrawElement | null) => element is ExcalidrawGenericElement;
3
+ export declare const isTextElement: (element: ExcalidrawElement | null) => element is ExcalidrawTextElement;
4
+ export declare const isFreeDrawElement: (element?: ExcalidrawElement | null | undefined) => element is ExcalidrawFreeDrawElement;
5
+ export declare const isFreeDrawElementType: (elementType: ExcalidrawElement["type"]) => boolean;
6
+ export declare const isLinearElement: (element?: ExcalidrawElement | null | undefined) => element is ExcalidrawLinearElement;
7
+ export declare const isLinearElementType: (elementType: ExcalidrawElement["type"]) => boolean;
8
+ export declare const isBindingElement: (element?: ExcalidrawElement | null | undefined) => element is ExcalidrawLinearElement;
9
+ export declare const isBindingElementType: (elementType: ExcalidrawElement["type"]) => boolean;
10
+ export declare const isBindableElement: (element: ExcalidrawElement | null) => element is ExcalidrawBindableElement;
11
+ export declare const isExcalidrawElement: (element: any) => boolean;
@@ -0,0 +1,106 @@
1
+ import { Point } from "../types";
2
+ import { FONT_FAMILY } from "../constants";
3
+ export declare type ChartType = "bar" | "line";
4
+ export declare type FillStyle = "hachure" | "cross-hatch" | "solid";
5
+ export declare type FontFamilyKeys = keyof typeof FONT_FAMILY;
6
+ export declare type FontFamilyValues = typeof FONT_FAMILY[FontFamilyKeys];
7
+ export declare type FontString = string & {
8
+ _brand: "fontString";
9
+ };
10
+ export declare type GroupId = string;
11
+ export declare type PointerType = "mouse" | "pen" | "touch";
12
+ export declare type StrokeSharpness = "round" | "sharp";
13
+ export declare type StrokeStyle = "solid" | "dashed" | "dotted";
14
+ export declare type TextAlign = "left" | "center" | "right";
15
+ export declare type VerticalAlign = "top" | "middle";
16
+ declare type _ExcalidrawElementBase = Readonly<{
17
+ id: string;
18
+ x: number;
19
+ y: number;
20
+ strokeColor: string;
21
+ backgroundColor: string;
22
+ fillStyle: FillStyle;
23
+ strokeWidth: number;
24
+ strokeStyle: StrokeStyle;
25
+ strokeSharpness: StrokeSharpness;
26
+ roughness: number;
27
+ opacity: number;
28
+ width: number;
29
+ height: number;
30
+ angle: number;
31
+ /** Random integer used to seed shape generation so that the roughjs shape
32
+ doesn't differ across renders. */
33
+ seed: number;
34
+ /** Integer that is sequentially incremented on each change. Used to reconcile
35
+ elements during collaboration or when saving to server. */
36
+ version: number;
37
+ /** Random integer that is regenerated on each change.
38
+ Used for deterministic reconciliation of updates during collaboration,
39
+ in case the versions (see above) are identical. */
40
+ versionNonce: number;
41
+ isDeleted: boolean;
42
+ /** List of groups the element belongs to.
43
+ Ordered from deepest to shallowest. */
44
+ groupIds: readonly GroupId[];
45
+ /** Ids of (linear) elements that are bound to this element. */
46
+ boundElementIds: readonly ExcalidrawLinearElement["id"][] | null;
47
+ }>;
48
+ export declare type ExcalidrawSelectionElement = _ExcalidrawElementBase & {
49
+ type: "selection";
50
+ };
51
+ export declare type ExcalidrawRectangleElement = _ExcalidrawElementBase & {
52
+ type: "rectangle";
53
+ };
54
+ export declare type ExcalidrawDiamondElement = _ExcalidrawElementBase & {
55
+ type: "diamond";
56
+ };
57
+ export declare type ExcalidrawEllipseElement = _ExcalidrawElementBase & {
58
+ type: "ellipse";
59
+ };
60
+ /**
61
+ * These are elements that don't have any additional properties.
62
+ */
63
+ export declare type ExcalidrawGenericElement = ExcalidrawSelectionElement | ExcalidrawRectangleElement | ExcalidrawDiamondElement | ExcalidrawEllipseElement;
64
+ /**
65
+ * ExcalidrawElement should be JSON serializable and (eventually) contain
66
+ * no computed data. The list of all ExcalidrawElements should be shareable
67
+ * between peers and contain no state local to the peer.
68
+ */
69
+ export declare type ExcalidrawElement = ExcalidrawGenericElement | ExcalidrawTextElement | ExcalidrawLinearElement | ExcalidrawFreeDrawElement;
70
+ export declare type NonDeleted<TElement extends ExcalidrawElement> = TElement & {
71
+ isDeleted: false;
72
+ };
73
+ export declare type NonDeletedExcalidrawElement = NonDeleted<ExcalidrawElement>;
74
+ export declare type ExcalidrawTextElement = _ExcalidrawElementBase & Readonly<{
75
+ type: "text";
76
+ fontSize: number;
77
+ fontFamily: FontFamilyValues;
78
+ text: string;
79
+ baseline: number;
80
+ textAlign: TextAlign;
81
+ verticalAlign: VerticalAlign;
82
+ }>;
83
+ export declare type ExcalidrawBindableElement = ExcalidrawRectangleElement | ExcalidrawDiamondElement | ExcalidrawEllipseElement | ExcalidrawTextElement;
84
+ export declare type PointBinding = {
85
+ elementId: ExcalidrawBindableElement["id"];
86
+ focus: number;
87
+ gap: number;
88
+ };
89
+ export declare type Arrowhead = "arrow" | "bar" | "dot";
90
+ export declare type ExcalidrawLinearElement = _ExcalidrawElementBase & Readonly<{
91
+ type: "line" | "arrow";
92
+ points: readonly Point[];
93
+ lastCommittedPoint: Point | null;
94
+ startBinding: PointBinding | null;
95
+ endBinding: PointBinding | null;
96
+ startArrowhead: Arrowhead | null;
97
+ endArrowhead: Arrowhead | null;
98
+ }>;
99
+ export declare type ExcalidrawFreeDrawElement = _ExcalidrawElementBase & Readonly<{
100
+ type: "freedraw";
101
+ points: readonly Point[];
102
+ pressures: readonly number[];
103
+ simulatePressure: boolean;
104
+ lastCommittedPoint: Point | null;
105
+ }>;
106
+ export {};
@@ -0,0 +1,5 @@
1
+ declare type CANVAS_ERROR_NAMES = "CANVAS_ERROR" | "CANVAS_POSSIBLY_TOO_BIG";
2
+ export declare class CanvasError extends Error {
3
+ constructor(message?: string, name?: CANVAS_ERROR_NAMES);
4
+ }
5
+ export {};
package/types/ga.d.ts ADDED
@@ -0,0 +1,63 @@
1
+ /**
2
+ * This is a 2D Projective Geometric Algebra implementation.
3
+ *
4
+ * For wider context on geometric algebra visit see https://bivector.net.
5
+ *
6
+ * For this specific algebra see cheatsheet https://bivector.net/2DPGA.pdf.
7
+ *
8
+ * Converted from generator written by enki, with a ton of added on top.
9
+ *
10
+ * This library uses 8-vectors to represent points, directions and lines
11
+ * in 2D space.
12
+ *
13
+ * An array `[a, b, c, d, e, f, g, h]` represents a n(8)vector:
14
+ * a + b*e0 + c*e1 + d*e2 + e*e01 + f*e20 + g*e12 + h*e012
15
+ *
16
+ * See GAPoint, GALine, GADirection and GATransform modules for common
17
+ * operations.
18
+ */
19
+ export declare type Point = NVector;
20
+ export declare type Direction = NVector;
21
+ export declare type Line = NVector;
22
+ export declare type Transform = NVector;
23
+ export declare const point: (x: number, y: number) => NVector;
24
+ export declare const origin: () => NVector;
25
+ export declare const direction: (x: number, y: number) => NVector;
26
+ export declare const offset: (x: number, y: number) => NVector;
27
+ declare type NVector = readonly [
28
+ number,
29
+ number,
30
+ number,
31
+ number,
32
+ number,
33
+ number,
34
+ number,
35
+ number
36
+ ];
37
+ export declare const nvector: (value?: number, index?: number) => NVector;
38
+ export declare const toString: (nvector: NVector) => string;
39
+ export declare const reverse: (nvector: NVector) => NVector;
40
+ export declare const dual: (nvector: NVector) => NVector;
41
+ export declare const conjugate: (nvector: NVector) => NVector;
42
+ export declare const involute: (nvector: NVector) => NVector;
43
+ export declare const add: (a: NVector, b: NVector | number) => NVector;
44
+ export declare const sub: (a: NVector, b: NVector | number) => NVector;
45
+ export declare const mul: (a: NVector, b: NVector | number) => NVector;
46
+ export declare const mulScalar: (a: NVector, b: NVector) => number;
47
+ export declare const meet: (a: NVector, b: NVector) => NVector;
48
+ export declare const join: (a: NVector, b: NVector) => NVector;
49
+ export declare const joinScalar: (a: NVector, b: NVector) => number;
50
+ export declare const dot: (a: NVector, b: NVector) => NVector;
51
+ export declare const norm: (a: NVector) => number;
52
+ export declare const inorm: (a: NVector) => number;
53
+ export declare const normalized: (a: NVector) => NVector;
54
+ export declare const inormalized: (a: NVector) => NVector;
55
+ export declare const E0: NVector;
56
+ export declare const E1: NVector;
57
+ export declare const E2: NVector;
58
+ export declare const E01: NVector;
59
+ export declare const E20: NVector;
60
+ export declare const E12: NVector;
61
+ export declare const E012: NVector;
62
+ export declare const I: NVector;
63
+ export {};
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A direction is stored as an array `[0, 0, 0, 0, y, x, 0, 0]` representing
3
+ * vector `(x, y)`.
4
+ */
5
+ export declare const from: (point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
6
+ export declare const fromTo: (from: readonly [number, number, number, number, number, number, number, number], to: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
7
+ export declare const orthogonal: (direction: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
8
+ export declare const orthogonalToLine: (line: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A line is stored as an array `[0, c, a, b, 0, 0, 0, 0]` representing:
3
+ * c * e0 + a * e1 + b*e2
4
+ *
5
+ * This maps to a standard formula `a * x + b * y + c`.
6
+ *
7
+ * `(-b, a)` correponds to a 2D vector parallel to the line. The lines
8
+ * have a natural orientation, corresponding to that vector.
9
+ *
10
+ * The magnitude ("norm") of the line is `sqrt(a ^ 2 + b ^ 2)`.
11
+ * `c / norm(line)` is the oriented distance from line to origin.
12
+ */
13
+ export declare const vector: (x: number, y: number) => readonly [number, number, number, number, number, number, number, number];
14
+ export declare const equation: (a: number, b: number, c: number) => readonly [number, number, number, number, number, number, number, number];
15
+ export declare const through: (from: readonly [number, number, number, number, number, number, number, number], to: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
16
+ export declare const orthogonal: (line: readonly [number, number, number, number, number, number, number, number], point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
17
+ export declare const orthogonalThrough: (against: readonly [number, number, number, number, number, number, number, number], intersection: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
18
+ export declare const parallel: (line: readonly [number, number, number, number, number, number, number, number], distance: number) => readonly [number, number, number, number, number, number, number, number];
19
+ export declare const parallelThrough: (line: readonly [number, number, number, number, number, number, number, number], point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
20
+ export declare const distance: (line1: readonly [number, number, number, number, number, number, number, number], line2: readonly [number, number, number, number, number, number, number, number]) => number;
21
+ export declare const angle: (line1: readonly [number, number, number, number, number, number, number, number], line2: readonly [number, number, number, number, number, number, number, number]) => number;
22
+ export declare const sign: (line: readonly [number, number, number, number, number, number, number, number]) => number;
@@ -0,0 +1,7 @@
1
+ export declare const from: ([x, y]: readonly [number, number]) => readonly [number, number, number, number, number, number, number, number];
2
+ export declare const toTuple: (point: readonly [number, number, number, number, number, number, number, number]) => [number, number];
3
+ export declare const abs: (point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
4
+ export declare const intersect: (line1: readonly [number, number, number, number, number, number, number, number], line2: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
5
+ export declare const project: (point: readonly [number, number, number, number, number, number, number, number], line: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
6
+ export declare const distance: (point1: readonly [number, number, number, number, number, number, number, number], point2: readonly [number, number, number, number, number, number, number, number]) => number;
7
+ export declare const distanceToLine: (point: readonly [number, number, number, number, number, number, number, number], line: readonly [number, number, number, number, number, number, number, number]) => number;
@@ -0,0 +1,10 @@
1
+ import { Line, Direction, Point } from "./ga";
2
+ /**
3
+ * TODO: docs
4
+ */
5
+ export declare const rotation: (pivot: readonly [number, number, number, number, number, number, number, number], angle: number) => readonly [number, number, number, number, number, number, number, number];
6
+ export declare const translation: (direction: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
7
+ export declare const translationOrthogonal: (direction: readonly [number, number, number, number, number, number, number, number], distance: number) => readonly [number, number, number, number, number, number, number, number];
8
+ export declare const translationAlong: (line: readonly [number, number, number, number, number, number, number, number], distance: number) => readonly [number, number, number, number, number, number, number, number];
9
+ export declare const compose: (motor1: readonly [number, number, number, number, number, number, number, number], motor2: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
10
+ export declare const apply: (motor: readonly [number, number, number, number, number, number, number, number], nvector: Point | Direction | Line) => Point | Direction | Line;
@@ -0,0 +1,6 @@
1
+ import { PointerCoords } from "./types";
2
+ export declare const getCenter: (pointers: Map<number, PointerCoords>) => {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ export declare const getDistance: ([a, b]: readonly PointerCoords[]) => number;
@@ -0,0 +1,26 @@
1
+ import { GroupId, ExcalidrawElement, NonDeleted } from "./element/types";
2
+ import { AppState } from "./types";
3
+ export declare const selectGroup: (groupId: GroupId, appState: AppState, elements: readonly NonDeleted<ExcalidrawElement>[]) => AppState;
4
+ /**
5
+ * If the element's group is selected, don't render an individual
6
+ * selection border around it.
7
+ */
8
+ export declare const isSelectedViaGroup: (appState: AppState, element: ExcalidrawElement) => boolean;
9
+ export declare const getSelectedGroupForElement: (appState: AppState, element: ExcalidrawElement) => string | undefined;
10
+ export declare const getSelectedGroupIds: (appState: AppState) => GroupId[];
11
+ /**
12
+ * When you select an element, you often want to actually select the whole group it's in, unless
13
+ * you're currently editing that group.
14
+ */
15
+ export declare const selectGroupsForSelectedElements: (appState: AppState, elements: readonly NonDeleted<ExcalidrawElement>[]) => AppState;
16
+ export declare const editGroupForSelectedElement: (appState: AppState, element: NonDeleted<ExcalidrawElement>) => AppState;
17
+ export declare const isElementInGroup: (element: ExcalidrawElement, groupId: string) => boolean;
18
+ export declare const getElementsInGroup: (elements: readonly ExcalidrawElement[], groupId: string) => ExcalidrawElement[];
19
+ export declare const getSelectedGroupIdForElement: (element: ExcalidrawElement, selectedGroupIds: {
20
+ [groupId: string]: boolean;
21
+ }) => string | undefined;
22
+ export declare const getNewGroupIdsForDuplication: (groupIds: ExcalidrawElement["groupIds"], editingGroupId: AppState["editingGroupId"], mapper: (groupId: GroupId) => GroupId) => string[];
23
+ export declare const addToGroup: (prevGroupIds: ExcalidrawElement["groupIds"], newGroupId: GroupId, editingGroupId: AppState["editingGroupId"]) => string[];
24
+ export declare const removeFromSelectedGroups: (groupIds: ExcalidrawElement["groupIds"], selectedGroupIds: {
25
+ [groupId: string]: boolean;
26
+ }) => string[];
@@ -0,0 +1,52 @@
1
+ import { AppState } from "./types";
2
+ import { ExcalidrawElement } from "./element/types";
3
+ export interface HistoryEntry {
4
+ appState: ReturnType<typeof clearAppStatePropertiesForHistory>;
5
+ elements: ExcalidrawElement[];
6
+ }
7
+ declare const clearAppStatePropertiesForHistory: (appState: AppState) => {
8
+ selectedElementIds: {
9
+ [id: string]: boolean;
10
+ };
11
+ selectedGroupIds: {
12
+ [groupId: string]: boolean;
13
+ };
14
+ viewBackgroundColor: string;
15
+ editingLinearElement: import("./element/linearElementEditor").LinearElementEditor | null;
16
+ editingGroupId: string | null;
17
+ name: string;
18
+ };
19
+ declare class History {
20
+ private elementCache;
21
+ private recording;
22
+ private stateHistory;
23
+ private redoStack;
24
+ private lastEntry;
25
+ private hydrateHistoryEntry;
26
+ private dehydrateHistoryEntry;
27
+ getSnapshotForTest(): {
28
+ recording: boolean;
29
+ stateHistory: HistoryEntry[];
30
+ redoStack: HistoryEntry[];
31
+ };
32
+ clear(): void;
33
+ private generateEntry;
34
+ shouldCreateEntry(nextEntry: HistoryEntry): boolean;
35
+ pushEntry(appState: AppState, elements: readonly ExcalidrawElement[]): void;
36
+ clearRedoStack(): void;
37
+ redoOnce(): HistoryEntry | null;
38
+ undoOnce(): HistoryEntry | null;
39
+ /**
40
+ * Updates history's `lastEntry` to latest app state. This is necessary
41
+ * when doing undo/redo which itself doesn't commit to history, but updates
42
+ * app state in a way that would break `shouldCreateEntry` which relies on
43
+ * `lastEntry` to reflect last comittable history state.
44
+ * We can't update `lastEntry` from within history when calling undo/redo
45
+ * because the action potentially mutates appState/elements before storing
46
+ * it.
47
+ */
48
+ setCurrentState(appState: AppState, elements: readonly ExcalidrawElement[]): void;
49
+ resumeRecording(): void;
50
+ record(state: AppState, elements: readonly ExcalidrawElement[]): void;
51
+ }
52
+ export default History;
@@ -0,0 +1 @@
1
+ export declare const useCallbackRefState: <T>() => readonly [T | null, (value: T | null) => void];
@@ -0,0 +1,15 @@
1
+ export interface Language {
2
+ code: string;
3
+ label: string;
4
+ rtl?: boolean;
5
+ }
6
+ export declare const defaultLang: {
7
+ code: string;
8
+ label: string;
9
+ };
10
+ export declare const languages: Language[];
11
+ export declare const setLanguage: (lang: Language) => Promise<void>;
12
+ export declare const getLanguage: () => Language;
13
+ export declare const t: (path: string, replacement?: {
14
+ [key: string]: string;
15
+ } | undefined) => string;
@@ -0,0 +1,61 @@
1
+ export declare const isDarwin: boolean;
2
+ export declare const isWindows: boolean;
3
+ export declare const CODES: {
4
+ readonly EQUAL: "Equal";
5
+ readonly MINUS: "Minus";
6
+ readonly NUM_ADD: "NumpadAdd";
7
+ readonly NUM_SUBTRACT: "NumpadSubtract";
8
+ readonly NUM_ZERO: "Numpad0";
9
+ readonly BRACKET_RIGHT: "BracketRight";
10
+ readonly BRACKET_LEFT: "BracketLeft";
11
+ readonly ONE: "Digit1";
12
+ readonly TWO: "Digit2";
13
+ readonly NINE: "Digit9";
14
+ readonly QUOTE: "Quote";
15
+ readonly ZERO: "Digit0";
16
+ readonly SLASH: "Slash";
17
+ readonly C: "KeyC";
18
+ readonly D: "KeyD";
19
+ readonly G: "KeyG";
20
+ readonly F: "KeyF";
21
+ readonly H: "KeyH";
22
+ readonly V: "KeyV";
23
+ readonly X: "KeyX";
24
+ readonly Z: "KeyZ";
25
+ readonly R: "KeyR";
26
+ };
27
+ export declare const KEYS: {
28
+ readonly ARROW_DOWN: "ArrowDown";
29
+ readonly ARROW_LEFT: "ArrowLeft";
30
+ readonly ARROW_RIGHT: "ArrowRight";
31
+ readonly ARROW_UP: "ArrowUp";
32
+ readonly BACKSPACE: "Backspace";
33
+ readonly ALT: "Alt";
34
+ readonly CTRL_OR_CMD: "metaKey" | "ctrlKey";
35
+ readonly DELETE: "Delete";
36
+ readonly ENTER: "Enter";
37
+ readonly ESCAPE: "Escape";
38
+ readonly QUESTION_MARK: "?";
39
+ readonly SPACE: " ";
40
+ readonly TAB: "Tab";
41
+ readonly A: "a";
42
+ readonly D: "d";
43
+ readonly E: "e";
44
+ readonly G: "g";
45
+ readonly L: "l";
46
+ readonly O: "o";
47
+ readonly P: "p";
48
+ readonly Q: "q";
49
+ readonly R: "r";
50
+ readonly S: "s";
51
+ readonly T: "t";
52
+ readonly V: "v";
53
+ readonly X: "x";
54
+ readonly Y: "y";
55
+ readonly Z: "z";
56
+ };
57
+ export declare type Key = keyof typeof KEYS;
58
+ export declare const isArrowKey: (key: string) => boolean;
59
+ export declare const getResizeCenterPointKey: (event: MouseEvent | KeyboardEvent) => boolean;
60
+ export declare const getResizeWithSidesSameLengthKey: (event: MouseEvent | KeyboardEvent) => boolean;
61
+ export declare const getRotateWithDiscreteAngleKey: (event: MouseEvent | KeyboardEvent) => boolean;
@@ -0,0 +1,20 @@
1
+ import { Point, Zoom } from "./types";
2
+ import { ExcalidrawLinearElement } from "./element/types";
3
+ export declare const rotate: (x1: number, y1: number, x2: number, y2: number, angle: number) => [number, number];
4
+ export declare const rotatePoint: (point: readonly [number, number], center: readonly [number, number], angle: number) => [number, number];
5
+ export declare const adjustXYWithRotation: (sides: {
6
+ n?: boolean;
7
+ e?: boolean;
8
+ s?: boolean;
9
+ w?: boolean;
10
+ }, x: number, y: number, angle: number, deltaX1: number, deltaY1: number, deltaX2: number, deltaY2: number) => [number, number];
11
+ export declare const getPointOnAPath: (point: readonly [number, number], path: Point[]) => {
12
+ x: number;
13
+ y: number;
14
+ segment: number;
15
+ } | null;
16
+ export declare const distance2d: (x1: number, y1: number, x2: number, y2: number) => number;
17
+ export declare const centerPoint: (a: readonly [number, number], b: readonly [number, number]) => readonly [number, number];
18
+ export declare const isPathALoop: (points: ExcalidrawLinearElement["points"], zoomValue?: Zoom["value"]) => boolean;
19
+ export declare const isPointInPolygon: (points: Point[], x: number, y: number) => boolean;
20
+ export declare const getGridPoint: (x: number, y: number, gridSize: number | null) => [number, number];