@excalidraw/math 0.18.0-d2463f87d

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 (368) hide show
  1. package/README.md +19 -0
  2. package/dist/dev/index.js +907 -0
  3. package/dist/dev/index.js.map +7 -0
  4. package/dist/prod/index.js +1 -0
  5. package/dist/types/common/src/binary-heap.d.ts +12 -0
  6. package/dist/types/common/src/colors.d.ts +62 -0
  7. package/dist/types/common/src/constants.d.ts +343 -0
  8. package/dist/types/common/src/emitter.d.ts +16 -0
  9. package/dist/types/common/src/font-metadata.d.ts +48 -0
  10. package/dist/types/common/src/index.d.ts +12 -0
  11. package/dist/types/common/src/keys.d.ts +189 -0
  12. package/dist/types/common/src/points.d.ts +9 -0
  13. package/dist/types/common/src/promise-pool.d.ts +6 -0
  14. package/dist/types/common/src/queue.d.ts +9 -0
  15. package/dist/types/common/src/random.d.ts +3 -0
  16. package/dist/types/common/src/url.d.ts +7 -0
  17. package/dist/types/common/src/utility-types.d.ts +38 -0
  18. package/dist/types/common/src/utils.d.ts +267 -0
  19. package/dist/types/element/src/Scene.d.ts +76 -0
  20. package/dist/types/element/src/align.d.ts +7 -0
  21. package/dist/types/element/src/binding.d.ts +110 -0
  22. package/dist/types/element/src/bounds.d.ts +89 -0
  23. package/dist/types/element/src/collision.d.ts +32 -0
  24. package/dist/types/element/src/comparisons.d.ts +8 -0
  25. package/dist/types/element/src/containerCache.d.ts +11 -0
  26. package/dist/types/element/src/cropElement.d.ts +19 -0
  27. package/dist/types/element/src/delta.d.ts +216 -0
  28. package/dist/types/element/src/distance.d.ts +3 -0
  29. package/dist/types/element/src/distribute.d.ts +6 -0
  30. package/dist/types/element/src/dragElements.d.ts +33 -0
  31. package/dist/types/element/src/duplicate.d.ts +63 -0
  32. package/dist/types/element/src/elbowArrow.d.ts +17 -0
  33. package/dist/types/element/src/elementLink.d.ts +13 -0
  34. package/dist/types/element/src/embeddable.d.ts +10 -0
  35. package/dist/types/element/src/flowchart.d.ts +26 -0
  36. package/dist/types/element/src/fractionalIndex.d.ts +57 -0
  37. package/dist/types/element/src/frame.d.ts +70 -0
  38. package/dist/types/element/src/groups.d.ts +33 -0
  39. package/dist/types/element/src/heading.d.ts +15 -0
  40. package/dist/types/element/src/image.d.ts +32 -0
  41. package/dist/types/element/src/index.d.ts +57 -0
  42. package/dist/types/element/src/linearElementEditor.d.ts +116 -0
  43. package/dist/types/element/src/mutateElement.d.ts +21 -0
  44. package/dist/types/element/src/newElement.d.ts +62 -0
  45. package/dist/types/element/src/renderElement.d.ts +28 -0
  46. package/dist/types/element/src/resizeElements.d.ts +32 -0
  47. package/dist/types/element/src/resizeTest.d.ts +15 -0
  48. package/dist/types/element/src/selection.d.ts +38 -0
  49. package/dist/types/element/src/shape.d.ts +42 -0
  50. package/dist/types/element/src/showSelectedShapeActions.d.ts +3 -0
  51. package/dist/types/element/src/sizeHelpers.d.ts +35 -0
  52. package/dist/types/element/src/sortElements.d.ts +2 -0
  53. package/dist/types/element/src/store.d.ts +231 -0
  54. package/dist/types/element/src/textElement.d.ts +40 -0
  55. package/dist/types/element/src/textMeasurements.d.ts +41 -0
  56. package/dist/types/element/src/textWrapping.d.ts +13 -0
  57. package/dist/types/element/src/transformHandles.d.ts +55 -0
  58. package/dist/types/element/src/typeChecks.d.ts +57 -0
  59. package/dist/types/element/src/types.d.ts +295 -0
  60. package/dist/types/element/src/utils.d.ts +31 -0
  61. package/dist/types/element/src/zindex.d.ts +7 -0
  62. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +528 -0
  63. package/dist/types/excalidraw/actions/actionAlign.d.ts +110 -0
  64. package/dist/types/excalidraw/actions/actionBoundText.d.ts +389 -0
  65. package/dist/types/excalidraw/actions/actionCanvas.d.ts +2416 -0
  66. package/dist/types/excalidraw/actions/actionClipboard.d.ts +1172 -0
  67. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +189 -0
  68. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +568 -0
  69. package/dist/types/excalidraw/actions/actionDistribute.d.ts +35 -0
  70. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +18 -0
  71. package/dist/types/excalidraw/actions/actionElementLink.d.ts +211 -0
  72. package/dist/types/excalidraw/actions/actionElementLock.d.ts +375 -0
  73. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +186 -0
  74. package/dist/types/excalidraw/actions/actionExport.d.ts +1648 -0
  75. package/dist/types/excalidraw/actions/actionFinalize.d.ts +398 -0
  76. package/dist/types/excalidraw/actions/actionFlip.d.ts +35 -0
  77. package/dist/types/excalidraw/actions/actionFrame.d.ts +1245 -0
  78. package/dist/types/excalidraw/actions/actionGroup.d.ts +387 -0
  79. package/dist/types/excalidraw/actions/actionHistory.d.ts +6 -0
  80. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +683 -0
  81. package/dist/types/excalidraw/actions/actionLink.d.ts +190 -0
  82. package/dist/types/excalidraw/actions/actionMenu.d.ts +548 -0
  83. package/dist/types/excalidraw/actions/actionNavigate.d.ts +363 -0
  84. package/dist/types/excalidraw/actions/actionProperties.d.ts +2774 -0
  85. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +189 -0
  86. package/dist/types/excalidraw/actions/actionStyles.d.ts +203 -0
  87. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +17 -0
  88. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +192 -0
  89. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +190 -0
  90. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +183 -0
  91. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +19 -0
  92. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +189 -0
  93. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +190 -0
  94. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +190 -0
  95. package/dist/types/excalidraw/actions/actionZindex.d.ts +75 -0
  96. package/dist/types/excalidraw/actions/index.d.ts +28 -0
  97. package/dist/types/excalidraw/actions/manager.d.ts +21 -0
  98. package/dist/types/excalidraw/actions/register.d.ts +5 -0
  99. package/dist/types/excalidraw/actions/shortcuts.d.ts +4 -0
  100. package/dist/types/excalidraw/actions/types.d.ts +47 -0
  101. package/dist/types/excalidraw/analytics.d.ts +1 -0
  102. package/dist/types/excalidraw/animated-trail.d.ts +39 -0
  103. package/dist/types/excalidraw/animation-frame-handler.d.ts +16 -0
  104. package/dist/types/excalidraw/appState.d.ts +96 -0
  105. package/dist/types/excalidraw/charts.d.ts +27 -0
  106. package/dist/types/excalidraw/clients.d.ts +14 -0
  107. package/dist/types/excalidraw/clipboard.d.ts +66 -0
  108. package/dist/types/excalidraw/components/Actions.d.ts +34 -0
  109. package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +4 -0
  110. package/dist/types/excalidraw/components/App.d.ts +559 -0
  111. package/dist/types/excalidraw/components/Avatar.d.ts +11 -0
  112. package/dist/types/excalidraw/components/BraveMeasureTextError.d.ts +2 -0
  113. package/dist/types/excalidraw/components/Button.d.ts +17 -0
  114. package/dist/types/excalidraw/components/ButtonIcon.d.ts +16 -0
  115. package/dist/types/excalidraw/components/ButtonSeparator.d.ts +1 -0
  116. package/dist/types/excalidraw/components/Card.d.ts +7 -0
  117. package/dist/types/excalidraw/components/CheckboxItem.d.ts +8 -0
  118. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +10 -0
  119. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +23 -0
  120. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +8 -0
  121. package/dist/types/excalidraw/components/ColorPicker/HotkeyLabel.d.ts +7 -0
  122. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +17 -0
  123. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -0
  124. package/dist/types/excalidraw/components/ColorPicker/PickerHeading.d.ts +5 -0
  125. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +8 -0
  126. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +9 -0
  127. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +21 -0
  128. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +21 -0
  129. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +18 -0
  130. package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +2 -0
  131. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +26 -0
  132. package/dist/types/excalidraw/components/ConfirmDialog.d.ts +10 -0
  133. package/dist/types/excalidraw/components/ContextMenu.d.ts +16 -0
  134. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +23 -0
  135. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +7 -0
  136. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +31 -0
  137. package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +4 -0
  138. package/dist/types/excalidraw/components/Dialog.d.ts +13 -0
  139. package/dist/types/excalidraw/components/DialogActionButton.d.ts +10 -0
  140. package/dist/types/excalidraw/components/ElementCanvasButtons.d.ts +7 -0
  141. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +12 -0
  142. package/dist/types/excalidraw/components/ErrorDialog.d.ts +5 -0
  143. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +16 -0
  144. package/dist/types/excalidraw/components/EyeDropper.d.ts +28 -0
  145. package/dist/types/excalidraw/components/FilledButton.d.ts +18 -0
  146. package/dist/types/excalidraw/components/FixedSideContainer.d.ts +9 -0
  147. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +10 -0
  148. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +21 -0
  149. package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +26 -0
  150. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +6 -0
  151. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +14 -0
  152. package/dist/types/excalidraw/components/HandButton.d.ts +10 -0
  153. package/dist/types/excalidraw/components/HelpButton.d.ts +7 -0
  154. package/dist/types/excalidraw/components/HelpDialog.d.ts +4 -0
  155. package/dist/types/excalidraw/components/HintViewer.d.ts +10 -0
  156. package/dist/types/excalidraw/components/IconPicker.d.ts +15 -0
  157. package/dist/types/excalidraw/components/ImageExportDialog.d.ts +14 -0
  158. package/dist/types/excalidraw/components/InitializeApp.d.ts +10 -0
  159. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -0
  160. package/dist/types/excalidraw/components/Island.d.ts +10 -0
  161. package/dist/types/excalidraw/components/JSONExportDialog.d.ts +15 -0
  162. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +10 -0
  163. package/dist/types/excalidraw/components/LayerUI.d.ts +31 -0
  164. package/dist/types/excalidraw/components/LibraryMenu.d.ts +10 -0
  165. package/dist/types/excalidraw/components/LibraryMenuBrowseButton.d.ts +7 -0
  166. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +9 -0
  167. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +18 -0
  168. package/dist/types/excalidraw/components/LibraryMenuItems.d.ts +14 -0
  169. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +23 -0
  170. package/dist/types/excalidraw/components/LibraryUnit.d.ts +15 -0
  171. package/dist/types/excalidraw/components/LoadingMessage.d.ts +6 -0
  172. package/dist/types/excalidraw/components/LockButton.d.ts +10 -0
  173. package/dist/types/excalidraw/components/MagicButton.d.ts +10 -0
  174. package/dist/types/excalidraw/components/MobileMenu.d.ts +25 -0
  175. package/dist/types/excalidraw/components/Modal.d.ts +12 -0
  176. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -0
  177. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -0
  178. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -0
  179. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +8 -0
  180. package/dist/types/excalidraw/components/PenModeButton.d.ts +12 -0
  181. package/dist/types/excalidraw/components/Popover.d.ts +15 -0
  182. package/dist/types/excalidraw/components/ProjectName.d.ts +10 -0
  183. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +15 -0
  184. package/dist/types/excalidraw/components/PublishLibrary.d.ts +16 -0
  185. package/dist/types/excalidraw/components/QuickSearch.d.ts +9 -0
  186. package/dist/types/excalidraw/components/RadioGroup.d.ts +14 -0
  187. package/dist/types/excalidraw/components/RadioSelection.d.ts +20 -0
  188. package/dist/types/excalidraw/components/Range.d.ts +8 -0
  189. package/dist/types/excalidraw/components/SVGLayer.d.ts +7 -0
  190. package/dist/types/excalidraw/components/ScrollableList.d.ts +9 -0
  191. package/dist/types/excalidraw/components/SearchMenu.d.ts +5 -0
  192. package/dist/types/excalidraw/components/Section.d.ts +6 -0
  193. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +76 -0
  194. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +7 -0
  195. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +9 -0
  196. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +10 -0
  197. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +7 -0
  198. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +7 -0
  199. package/dist/types/excalidraw/components/Sidebar/SidebarTrigger.d.ts +6 -0
  200. package/dist/types/excalidraw/components/Sidebar/common.d.ts +34 -0
  201. package/dist/types/excalidraw/components/Spinner.d.ts +8 -0
  202. package/dist/types/excalidraw/components/Stack.d.ts +15 -0
  203. package/dist/types/excalidraw/components/Stats/Angle.d.ts +11 -0
  204. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +11 -0
  205. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +11 -0
  206. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +11 -0
  207. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +45 -0
  208. package/dist/types/excalidraw/components/Stats/FontSize.d.ts +11 -0
  209. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +11 -0
  210. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +14 -0
  211. package/dist/types/excalidraw/components/Stats/MultiFontSize.d.ts +12 -0
  212. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +14 -0
  213. package/dist/types/excalidraw/components/Stats/Position.d.ts +12 -0
  214. package/dist/types/excalidraw/components/Stats/index.d.ts +36 -0
  215. package/dist/types/excalidraw/components/Stats/utils.d.ts +19 -0
  216. package/dist/types/excalidraw/components/Switch.d.ts +9 -0
  217. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +6 -0
  218. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +30 -0
  219. package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +9 -0
  220. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +8 -0
  221. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +17 -0
  222. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +4 -0
  223. package/dist/types/excalidraw/components/TTDDialog/TTDDialogSubmitShortcut.d.ts +1 -0
  224. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +8 -0
  225. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +9 -0
  226. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +7 -0
  227. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +11 -0
  228. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +9 -0
  229. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +33 -0
  230. package/dist/types/excalidraw/components/TextField.d.ts +21 -0
  231. package/dist/types/excalidraw/components/Toast.d.ts +9 -0
  232. package/dist/types/excalidraw/components/ToolButton.d.ts +49 -0
  233. package/dist/types/excalidraw/components/Tooltip.d.ts +18 -0
  234. package/dist/types/excalidraw/components/Trans.d.ts +9 -0
  235. package/dist/types/excalidraw/components/UnlockPopup.d.ts +8 -0
  236. package/dist/types/excalidraw/components/UserList.d.ts +18 -0
  237. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +30 -0
  238. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +14 -0
  239. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +19 -0
  240. package/dist/types/excalidraw/components/canvases/index.d.ts +3 -0
  241. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +86 -0
  242. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +15 -0
  243. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -0
  244. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +46 -0
  245. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +8 -0
  246. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +18 -0
  247. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +7 -0
  248. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +16 -0
  249. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -0
  250. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +11 -0
  251. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +6 -0
  252. package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -0
  253. package/dist/types/excalidraw/components/footer/Footer.d.ts +12 -0
  254. package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +8 -0
  255. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +4 -0
  256. package/dist/types/excalidraw/components/hyperlink/Hyperlink.d.ts +19 -0
  257. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +10 -0
  258. package/dist/types/excalidraw/components/icons.d.ts +225 -0
  259. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +10 -0
  260. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +64 -0
  261. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +83 -0
  262. package/dist/types/excalidraw/components/shapes.d.ts +62 -0
  263. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +58 -0
  264. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -0
  265. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +85 -0
  266. package/dist/types/excalidraw/context/tunnels.d.ts +21 -0
  267. package/dist/types/excalidraw/context/ui-appState.d.ts +4 -0
  268. package/dist/types/excalidraw/cursor.d.ts +5 -0
  269. package/dist/types/excalidraw/data/EditorLocalStorage.d.ts +8 -0
  270. package/dist/types/excalidraw/data/blob.d.ts +53 -0
  271. package/dist/types/excalidraw/data/encode.d.ts +55 -0
  272. package/dist/types/excalidraw/data/encryption.d.ts +9 -0
  273. package/dist/types/excalidraw/data/filesystem.d.ts +21 -0
  274. package/dist/types/excalidraw/data/image.d.ts +9 -0
  275. package/dist/types/excalidraw/data/index.d.ts +22 -0
  276. package/dist/types/excalidraw/data/json.d.ts +16 -0
  277. package/dist/types/excalidraw/data/library.d.ts +112 -0
  278. package/dist/types/excalidraw/data/reconcile.d.ts +6 -0
  279. package/dist/types/excalidraw/data/resave.d.ts +5 -0
  280. package/dist/types/excalidraw/data/restore.d.ts +21 -0
  281. package/dist/types/excalidraw/data/transform.d.ts +81 -0
  282. package/dist/types/excalidraw/data/types.d.ts +45 -0
  283. package/dist/types/excalidraw/deburr.d.ts +1 -0
  284. package/dist/types/excalidraw/editor-jotai.d.ts +56 -0
  285. package/dist/types/excalidraw/eraser/index.d.ts +12 -0
  286. package/dist/types/excalidraw/errors.d.ts +29 -0
  287. package/dist/types/excalidraw/fonts/Cascadia/index.d.ts +2 -0
  288. package/dist/types/excalidraw/fonts/ComicShanns/index.d.ts +2 -0
  289. package/dist/types/excalidraw/fonts/Emoji/index.d.ts +2 -0
  290. package/dist/types/excalidraw/fonts/ExcalidrawFontFace.d.ts +25 -0
  291. package/dist/types/excalidraw/fonts/Excalifont/index.d.ts +2 -0
  292. package/dist/types/excalidraw/fonts/Fonts.d.ts +79 -0
  293. package/dist/types/excalidraw/fonts/Helvetica/index.d.ts +2 -0
  294. package/dist/types/excalidraw/fonts/Liberation/index.d.ts +2 -0
  295. package/dist/types/excalidraw/fonts/Lilita/index.d.ts +2 -0
  296. package/dist/types/excalidraw/fonts/Nunito/index.d.ts +2 -0
  297. package/dist/types/excalidraw/fonts/Virgil/index.d.ts +2 -0
  298. package/dist/types/excalidraw/fonts/Xiaolai/index.d.ts +8 -0
  299. package/dist/types/excalidraw/fonts/index.d.ts +1 -0
  300. package/dist/types/excalidraw/gesture.d.ts +6 -0
  301. package/dist/types/excalidraw/history.d.ts +48 -0
  302. package/dist/types/excalidraw/hooks/useCallbackRefState.d.ts +1 -0
  303. package/dist/types/excalidraw/hooks/useCopiedIndicator.d.ts +5 -0
  304. package/dist/types/excalidraw/hooks/useCreatePortalContainer.d.ts +4 -0
  305. package/dist/types/excalidraw/hooks/useEmitter.d.ts +2 -0
  306. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +11 -0
  307. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +20 -0
  308. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +2 -0
  309. package/dist/types/excalidraw/hooks/useStable.d.ts +1 -0
  310. package/dist/types/excalidraw/hooks/useStableCallback.d.ts +4 -0
  311. package/dist/types/excalidraw/hooks/useTransition.d.ts +2 -0
  312. package/dist/types/excalidraw/i18n.d.ts +24 -0
  313. package/dist/types/excalidraw/index.d.ts +46 -0
  314. package/dist/types/excalidraw/laser-trails.d.ts +20 -0
  315. package/dist/types/excalidraw/lasso/index.d.ts +16 -0
  316. package/dist/types/excalidraw/lasso/utils.d.ts +13 -0
  317. package/dist/types/excalidraw/mermaid.d.ts +2 -0
  318. package/dist/types/excalidraw/polyfill.d.ts +2 -0
  319. package/dist/types/excalidraw/reactUtils.d.ts +14 -0
  320. package/dist/types/excalidraw/renderer/helpers.d.ts +18 -0
  321. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +20 -0
  322. package/dist/types/excalidraw/renderer/renderNewElementScene.d.ts +7 -0
  323. package/dist/types/excalidraw/renderer/renderSnaps.d.ts +2 -0
  324. package/dist/types/excalidraw/renderer/roundRect.d.ts +11 -0
  325. package/dist/types/excalidraw/renderer/staticScene.d.ts +11 -0
  326. package/dist/types/excalidraw/renderer/staticSvgScene.d.ts +5 -0
  327. package/dist/types/excalidraw/scene/Renderer.d.ts +27 -0
  328. package/dist/types/excalidraw/scene/export.d.ts +36 -0
  329. package/dist/types/excalidraw/scene/index.d.ts +4 -0
  330. package/dist/types/excalidraw/scene/normalize.d.ts +4 -0
  331. package/dist/types/excalidraw/scene/scroll.d.ts +23 -0
  332. package/dist/types/excalidraw/scene/scrollbars.d.ts +11 -0
  333. package/dist/types/excalidraw/scene/types.d.ts +120 -0
  334. package/dist/types/excalidraw/scene/zoom.d.ts +12 -0
  335. package/dist/types/excalidraw/snapping.d.ts +111 -0
  336. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +45 -0
  337. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +13 -0
  338. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +2 -0
  339. package/dist/types/excalidraw/subset/subset-main.d.ts +12 -0
  340. package/dist/types/excalidraw/subset/subset-shared.chunk.d.ts +32 -0
  341. package/dist/types/excalidraw/subset/subset-worker.chunk.d.ts +15 -0
  342. package/dist/types/excalidraw/subset/woff2/woff2-bindings.d.ts +31 -0
  343. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +14 -0
  344. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +2 -0
  345. package/dist/types/excalidraw/types.d.ts +706 -0
  346. package/dist/types/excalidraw/workers.d.ts +36 -0
  347. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +24 -0
  348. package/dist/types/math/src/angle.d.ts +19 -0
  349. package/dist/types/math/src/constants.d.ts +3 -0
  350. package/dist/types/math/src/curve.d.ts +74 -0
  351. package/dist/types/math/src/ellipse.d.ts +44 -0
  352. package/dist/types/math/src/index.d.ts +13 -0
  353. package/dist/types/math/src/line.d.ts +17 -0
  354. package/dist/types/math/src/point.d.ts +122 -0
  355. package/dist/types/math/src/polygon.d.ts +6 -0
  356. package/dist/types/math/src/range.d.ts +44 -0
  357. package/dist/types/math/src/rectangle.d.ts +5 -0
  358. package/dist/types/math/src/segment.d.ts +39 -0
  359. package/dist/types/math/src/triangle.d.ts +11 -0
  360. package/dist/types/math/src/types.d.ts +106 -0
  361. package/dist/types/math/src/utils.d.ts +7 -0
  362. package/dist/types/math/src/vector.d.ts +94 -0
  363. package/dist/types/utils/src/bbox.d.ts +9 -0
  364. package/dist/types/utils/src/export.d.ts +35 -0
  365. package/dist/types/utils/src/index.d.ts +4 -0
  366. package/dist/types/utils/src/shape.d.ts +58 -0
  367. package/dist/types/utils/src/withinBounds.d.ts +19 -0
  368. package/package.json +66 -0
@@ -0,0 +1,76 @@
1
+ import { type ElementUpdate } from "@excalidraw/element";
2
+ import type { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted, ExcalidrawFrameLikeElement, ElementsMapOrArray, OrderedExcalidrawElement, Ordered } from "@excalidraw/element/types";
3
+ import type { Mutable } from "@excalidraw/common/utility-types";
4
+ import type { AppState } from "../../excalidraw/types";
5
+ type SceneStateCallback = () => void;
6
+ type SceneStateCallbackRemover = () => void;
7
+ export type ExcalidrawElementsIncludingDeleted = readonly ExcalidrawElement[];
8
+ export declare class Scene {
9
+ private callbacks;
10
+ private nonDeletedElements;
11
+ private nonDeletedElementsMap;
12
+ private elements;
13
+ private nonDeletedFramesLikes;
14
+ private frames;
15
+ private elementsMap;
16
+ private selectedElementsCache;
17
+ /**
18
+ * Random integer regenerated each scene update.
19
+ *
20
+ * Does not relate to elements versions, it's only a renderer
21
+ * cache-invalidation nonce at the moment.
22
+ */
23
+ private sceneNonce;
24
+ getSceneNonce(): number | undefined;
25
+ getNonDeletedElementsMap(): Map<string, Ordered<NonDeletedExcalidrawElement>> & import("@excalidraw/common/utility-types").MakeBrand<"NonDeletedSceneElementsMap">;
26
+ getElementsIncludingDeleted(): readonly OrderedExcalidrawElement[];
27
+ getElementsMapIncludingDeleted(): Map<string, Ordered<ExcalidrawElement>> & import("@excalidraw/common/utility-types").MakeBrand<"SceneElementsMap">;
28
+ getNonDeletedElements(): readonly Ordered<NonDeletedExcalidrawElement>[];
29
+ getFramesIncludingDeleted(): readonly ExcalidrawFrameLikeElement[];
30
+ constructor(elements?: ElementsMapOrArray | null);
31
+ getSelectedElements(opts: {
32
+ selectedElementIds: AppState["selectedElementIds"];
33
+ /**
34
+ * for specific cases where you need to use elements not from current
35
+ * scene state. This in effect will likely result in cache-miss, and
36
+ * the cache won't be updated in this case.
37
+ */
38
+ elements?: ElementsMapOrArray;
39
+ includeBoundTextElement?: boolean;
40
+ includeElementsInFrames?: boolean;
41
+ }): NonDeleted<ExcalidrawElement>[];
42
+ getNonDeletedFramesLikes(): readonly NonDeleted<ExcalidrawFrameLikeElement>[];
43
+ getElement<T extends ExcalidrawElement>(id: T["id"]): T | null;
44
+ getNonDeletedElement(id: ExcalidrawElement["id"]): NonDeleted<ExcalidrawElement> | null;
45
+ /**
46
+ * A utility method to help with updating all scene elements, with the added
47
+ * performance optimization of not renewing the array if no change is made.
48
+ *
49
+ * Maps all current excalidraw elements, invoking the callback for each
50
+ * element. The callback should either return a new mapped element, or the
51
+ * original element if no changes are made. If no changes are made to any
52
+ * element, this results in a no-op. Otherwise, the newly mapped elements
53
+ * are set as the next scene's elements.
54
+ *
55
+ * @returns whether a change was made
56
+ */
57
+ mapElements(iteratee: (element: ExcalidrawElement) => ExcalidrawElement): boolean;
58
+ replaceAllElements(nextElements: ElementsMapOrArray): void;
59
+ triggerUpdate(): void;
60
+ onUpdate(cb: SceneStateCallback): SceneStateCallbackRemover;
61
+ destroy(): void;
62
+ insertElementAtIndex(element: ExcalidrawElement, index: number): void;
63
+ insertElementsAtIndex(elements: ExcalidrawElement[], index: number): void;
64
+ insertElement: (element: ExcalidrawElement) => void;
65
+ insertElements: (elements: ExcalidrawElement[]) => void;
66
+ getElementIndex(elementId: string): number;
67
+ getContainerElement: (element: (ExcalidrawElement & {
68
+ containerId: ExcalidrawElement["id"] | null;
69
+ }) | null) => import("@excalidraw/element/types").ExcalidrawLinearElement | import("@excalidraw/element/types").ExcalidrawSelectionElement | import("@excalidraw/element/types").ExcalidrawRectangleElement | import("@excalidraw/element/types").ExcalidrawDiamondElement | import("@excalidraw/element/types").ExcalidrawEllipseElement | import("@excalidraw/element/types").ExcalidrawEmbeddableElement | import("@excalidraw/element/types").ExcalidrawIframeElement | import("@excalidraw/element/types").ExcalidrawImageElement | import("@excalidraw/element/types").ExcalidrawFrameElement | import("@excalidraw/element/types").ExcalidrawMagicFrameElement | import("@excalidraw/element/types").ExcalidrawTextElement | import("@excalidraw/element/types").ExcalidrawFreeDrawElement | null;
70
+ getElementsFromId: (id: string) => ExcalidrawElement[];
71
+ mutateElement<TElement extends Mutable<ExcalidrawElement>>(element: TElement, updates: ElementUpdate<TElement>, options?: {
72
+ informMutation: boolean;
73
+ isDragging: boolean;
74
+ }): TElement;
75
+ }
76
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { Scene } from "./Scene";
2
+ import type { ExcalidrawElement } from "./types";
3
+ export interface Alignment {
4
+ position: "start" | "center" | "end";
5
+ axis: "x" | "y";
6
+ }
7
+ export declare const alignElements: (selectedElements: ExcalidrawElement[], alignment: Alignment, scene: Scene) => ExcalidrawElement[];
@@ -0,0 +1,110 @@
1
+ import { type GlobalPoint } from "@excalidraw/math";
2
+ import type { LocalPoint } from "@excalidraw/math";
3
+ import type { AppState } from "@excalidraw/excalidraw/types";
4
+ import { type Heading } from "./heading";
5
+ import type { Scene } from "./Scene";
6
+ import type { Bounds } from "./bounds";
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
+ ];
15
+ export declare const shouldEnableBindingForPointerEvent: (event: React.PointerEvent<HTMLElement>) => boolean;
16
+ 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;
36
+ export declare const updateBoundElements: (changedElement: NonDeletedExcalidrawElement, scene: Scene, options?: {
37
+ simultaneouslyUpdated?: readonly ExcalidrawElement[];
38
+ newSize?: {
39
+ width: number;
40
+ height: number;
41
+ };
42
+ changedElements?: Map<string, ExcalidrawElement>;
43
+ }) => void;
44
+ export declare const updateBindings: (latestElement: ExcalidrawElement, scene: Scene, options?: {
45
+ simultaneouslyUpdated?: readonly ExcalidrawElement[];
46
+ newSize?: {
47
+ width: number;
48
+ height: number;
49
+ };
50
+ zoom?: AppState["zoom"];
51
+ }) => void;
52
+ 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;
56
+ export declare const calculateFixedPointForElbowArrowBinding: (linearElement: NonDeleted<ExcalidrawElbowArrowElement>, hoveredElement: ExcalidrawBindableElement, startOrEnd: "start" | "end", elementsMap: ElementsMap) => {
57
+ fixedPoint: FixedPoint;
58
+ };
59
+ export declare const fixDuplicatedBindingsAfterDuplication: (duplicatedElements: ExcalidrawElement[], origIdToDuplicateId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>, duplicateElementsMap: NonDeletedSceneElementsMap) => void;
60
+ 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
+ export declare const bindingProperties: Set<BindableProp | BindingProp>;
67
+ export type BindableProp = "boundElements";
68
+ export type BindingProp = "frameId" | "containerId" | "startBinding" | "endBinding";
69
+ /**
70
+ * Bound element containing bindings to `frameId`, `containerId`, `startBinding` or `endBinding`.
71
+ */
72
+ export declare class BoundElement {
73
+ /**
74
+ * Unbind the affected non deleted bindable elements (removing element from `boundElements`).
75
+ * - iterates non deleted bindable elements (`containerId` | `startBinding.elementId` | `endBinding.elementId`) of the current element
76
+ * - prepares updates to unbind each bindable element's `boundElements` from the current element
77
+ */
78
+ static unbindAffected(elements: ElementsMap, boundElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void): void;
79
+ /**
80
+ * Rebind the next affected non deleted bindable elements (adding element to `boundElements`).
81
+ * - iterates non deleted bindable elements (`containerId` | `startBinding.elementId` | `endBinding.elementId`) of the current element
82
+ * - prepares updates to rebind each bindable element's `boundElements` to the current element
83
+ *
84
+ * NOTE: rebind expects that affected elements were previously unbound with `BoundElement.unbindAffected`
85
+ */
86
+ static rebindAffected: (elements: ElementsMap, boundElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void) => void;
87
+ }
88
+ /**
89
+ * Bindable element containing bindings to `boundElements`.
90
+ */
91
+ export declare class BindableElement {
92
+ /**
93
+ * Unbind the affected non deleted bound elements (resetting `containerId`, `startBinding`, `endBinding` to `null`).
94
+ * - iterates through non deleted `boundElements` of the current element
95
+ * - prepares updates to unbind each bound element from the current element
96
+ */
97
+ static unbindAffected(elements: ElementsMap, bindableElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void): void;
98
+ /**
99
+ * Rebind the affected non deleted bound elements (for now setting only `containerId`, as we cannot rebind arrows atm).
100
+ * - iterates through non deleted `boundElements` of the current element
101
+ * - prepares updates to rebind each bound element to the current element or unbind it from `boundElements` in case of conflicts
102
+ *
103
+ * NOTE: rebind expects that affected elements were previously unbound with `BindaleElement.unbindAffected`
104
+ */
105
+ static rebindAffected: (elements: ElementsMap, bindableElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void) => void;
106
+ }
107
+ export declare const getGlobalFixedPointForBindableElement: (fixedPointRatio: [number, number], element: ExcalidrawBindableElement, elementsMap: ElementsMap) => GlobalPoint;
108
+ export declare const getGlobalFixedPoints: (arrow: ExcalidrawElbowArrowElement, elementsMap: ElementsMap) => [GlobalPoint, GlobalPoint];
109
+ export declare const getArrowLocalFixedPoints: (arrow: ExcalidrawElbowArrowElement, elementsMap: ElementsMap) => LocalPoint[];
110
+ export declare const normalizeFixedPoint: <T extends FixedPoint | null>(fixedPoint: T) => T extends null ? null : FixedPoint;
@@ -0,0 +1,89 @@
1
+ import type { Degrees, GlobalPoint, LineSegment, LocalPoint } from "@excalidraw/math";
2
+ import type { AppState } from "@excalidraw/excalidraw/types";
3
+ import type { Drawable, Op } from "roughjs/bin/core";
4
+ import type { Arrowhead, ElementsMap, ElementsMapOrArray, ExcalidrawElement, ExcalidrawFreeDrawElement, ExcalidrawLinearElement, NonDeleted } from "./types";
5
+ export type RectangleBox = {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ angle: number;
11
+ };
12
+ /**
13
+ * x and y position of top left corner, x and y position of bottom right corner
14
+ */
15
+ export type Bounds = readonly [
16
+ minX: number,
17
+ minY: number,
18
+ maxX: number,
19
+ maxY: number
20
+ ];
21
+ export type SceneBounds = readonly [
22
+ sceneX: number,
23
+ sceneY: number,
24
+ sceneX2: number,
25
+ sceneY2: number
26
+ ];
27
+ export declare class ElementBounds {
28
+ private static boundsCache;
29
+ private static nonRotatedBoundsCache;
30
+ static getBounds(element: ExcalidrawElement, elementsMap: ElementsMap, nonRotated?: boolean): Bounds;
31
+ private static calculateBounds;
32
+ }
33
+ export declare const getElementAbsoluteCoords: (element: ExcalidrawElement, elementsMap: ElementsMap, includeBoundText?: boolean) => [number, number, number, number, number, number];
34
+ /**
35
+ * Given an element, return the line segments that make up the element.
36
+ *
37
+ * Uses helpers from /math
38
+ */
39
+ export declare const getElementLineSegments: (element: ExcalidrawElement, elementsMap: ElementsMap) => LineSegment<GlobalPoint>[];
40
+ /**
41
+ * Scene -> Scene coords, but in x1,x2,y1,y2 format.
42
+ *
43
+ * Rectangle here means any rectangular frame, not an excalidraw element.
44
+ */
45
+ export declare const getRectangleBoxAbsoluteCoords: (boxSceneCoords: RectangleBox) => number[];
46
+ export declare const getDiamondPoints: (element: ExcalidrawElement) => number[];
47
+ export declare const getCubicBezierCurveBound: (p0: GlobalPoint, p1: GlobalPoint, p2: GlobalPoint, p3: GlobalPoint) => Bounds;
48
+ export declare const getMinMaxXYFromCurvePathOps: (ops: Op[], transformXY?: ((p: GlobalPoint) => GlobalPoint) | undefined) => Bounds;
49
+ export declare const getBoundsFromPoints: (points: ExcalidrawFreeDrawElement["points"]) => Bounds;
50
+ /** @returns number in pixels */
51
+ export declare const getArrowheadSize: (arrowhead: Arrowhead) => number;
52
+ /** @returns number in degrees */
53
+ export declare const getArrowheadAngle: (arrowhead: Arrowhead) => Degrees;
54
+ export declare const getArrowheadPoints: (element: ExcalidrawLinearElement, shape: Drawable[], position: "start" | "end", arrowhead: Arrowhead) => number[] | null;
55
+ export declare const getElementBounds: (element: ExcalidrawElement, elementsMap: ElementsMap, nonRotated?: boolean) => Bounds;
56
+ export declare const getCommonBounds: (elements: ElementsMapOrArray, elementsMap?: ElementsMap) => Bounds;
57
+ export declare const getDraggedElementsBounds: (elements: ExcalidrawElement[], dragOffset: {
58
+ x: number;
59
+ y: number;
60
+ }) => number[];
61
+ export declare const getResizedElementAbsoluteCoords: (element: ExcalidrawElement, nextWidth: number, nextHeight: number, normalizePoints: boolean) => Bounds;
62
+ export declare const getElementPointsCoords: (element: ExcalidrawLinearElement, points: readonly (readonly [number, number])[]) => Bounds;
63
+ export declare const getClosestElementBounds: (elements: readonly ExcalidrawElement[], from: {
64
+ x: number;
65
+ y: number;
66
+ }) => Bounds;
67
+ export interface BoundingBox {
68
+ minX: number;
69
+ minY: number;
70
+ maxX: number;
71
+ maxY: number;
72
+ midX: number;
73
+ midY: number;
74
+ width: number;
75
+ height: number;
76
+ }
77
+ export declare const getCommonBoundingBox: (elements: ExcalidrawElement[] | readonly NonDeleted<ExcalidrawElement>[]) => BoundingBox;
78
+ /**
79
+ * returns scene coords of user's editor viewport (visible canvas area) bounds
80
+ */
81
+ export declare const getVisibleSceneBounds: ({ scrollX, scrollY, width, height, zoom, }: AppState) => SceneBounds;
82
+ export declare const getCenterForBounds: (bounds: Bounds) => GlobalPoint;
83
+ /**
84
+ * Get the axis-aligned bounding box for a given element
85
+ */
86
+ export declare const aabbForElement: (element: Readonly<ExcalidrawElement>, elementsMap: ElementsMap, offset?: [number, number, number, number]) => Bounds;
87
+ export declare const pointInsideBounds: <P extends GlobalPoint | LocalPoint>(p: P, bounds: Bounds) => boolean;
88
+ export declare const doBoundsIntersect: (bounds1: Bounds | null, bounds2: Bounds | null) => boolean;
89
+ export declare const elementCenterPoint: (element: ExcalidrawElement, elementsMap: ElementsMap, xOffset?: number, yOffset?: number) => GlobalPoint;
@@ -0,0 +1,32 @@
1
+ import type { GlobalPoint, LineSegment } from "@excalidraw/math";
2
+ import type { FrameNameBounds } from "@excalidraw/excalidraw/types";
3
+ import type { ElementsMap, ExcalidrawElement } from "./types";
4
+ export declare const shouldTestInside: (element: ExcalidrawElement) => boolean;
5
+ export type HitTestArgs = {
6
+ point: GlobalPoint;
7
+ element: ExcalidrawElement;
8
+ threshold: number;
9
+ elementsMap: ElementsMap;
10
+ frameNameBound?: FrameNameBounds | null;
11
+ };
12
+ export declare const hitElementItself: ({ point, element, threshold, elementsMap, frameNameBound, }: HitTestArgs) => boolean;
13
+ export declare const hitElementBoundingBox: (point: GlobalPoint, element: ExcalidrawElement, elementsMap: ElementsMap, tolerance?: number) => boolean;
14
+ export declare const hitElementBoundingBoxOnly: (hitArgs: HitTestArgs, elementsMap: ElementsMap) => boolean;
15
+ export declare const hitElementBoundText: (point: GlobalPoint, element: ExcalidrawElement, elementsMap: ElementsMap) => boolean;
16
+ /**
17
+ * Intersect a line with an element for binding test
18
+ *
19
+ * @param element
20
+ * @param line
21
+ * @param offset
22
+ * @returns
23
+ */
24
+ export declare const intersectElementWithLineSegment: (element: ExcalidrawElement, elementsMap: ElementsMap, line: LineSegment<GlobalPoint>, offset?: number, onlyFirst?: boolean) => GlobalPoint[];
25
+ /**
26
+ * Check if the given point is considered inside the element's border
27
+ *
28
+ * @param point
29
+ * @param element
30
+ * @returns
31
+ */
32
+ export declare const isPointInElement: (point: GlobalPoint, element: ExcalidrawElement, elementsMap: ElementsMap) => boolean;
@@ -0,0 +1,8 @@
1
+ import type { ElementOrToolType } from "@excalidraw/excalidraw/types";
2
+ export declare const hasBackground: (type: ElementOrToolType) => boolean;
3
+ export declare const hasStrokeColor: (type: ElementOrToolType) => boolean;
4
+ export declare const hasStrokeWidth: (type: ElementOrToolType) => boolean;
5
+ export declare const hasStrokeStyle: (type: ElementOrToolType) => boolean;
6
+ export declare const canChangeRoundness: (type: ElementOrToolType) => boolean;
7
+ export declare const toolIsArrow: (type: ElementOrToolType) => boolean;
8
+ export declare const canHaveArrowheads: (type: ElementOrToolType) => boolean;
@@ -0,0 +1,11 @@
1
+ import type { ExcalidrawTextContainer } from "./types";
2
+ export declare const originalContainerCache: {
3
+ [id: ExcalidrawTextContainer["id"]]: {
4
+ height: ExcalidrawTextContainer["height"];
5
+ } | undefined;
6
+ };
7
+ export declare const updateOriginalContainerCache: (id: ExcalidrawTextContainer["id"], height: ExcalidrawTextContainer["height"]) => {
8
+ height: ExcalidrawTextContainer["height"];
9
+ };
10
+ export declare const resetOriginalContainerCache: (id: ExcalidrawTextContainer["id"]) => void;
11
+ export declare const getOriginalContainerHeightFromCache: (id: ExcalidrawTextContainer["id"]) => number | null;
@@ -0,0 +1,19 @@
1
+ import type { TransformHandleType } from "./transformHandles";
2
+ import type { ElementsMap, ExcalidrawImageElement, ImageCrop } from "./types";
3
+ export declare const MINIMAL_CROP_SIZE = 10;
4
+ export declare const cropElement: (element: ExcalidrawImageElement, elementsMap: ElementsMap, transformHandle: TransformHandleType, naturalWidth: number, naturalHeight: number, pointerX: number, pointerY: number, widthAspectRatio?: number) => {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ crop: ImageCrop | null;
10
+ };
11
+ export declare const getUncroppedImageElement: (element: ExcalidrawImageElement, elementsMap: ElementsMap) => ExcalidrawImageElement;
12
+ export declare const getUncroppedWidthAndHeight: (element: ExcalidrawImageElement) => {
13
+ width: number;
14
+ height: number;
15
+ };
16
+ export declare const getFlipAdjustedCropPosition: (element: ExcalidrawImageElement, natural?: boolean) => {
17
+ x: number;
18
+ y: number;
19
+ } | null;
@@ -0,0 +1,216 @@
1
+ import type { ExcalidrawElement, Ordered, OrderedExcalidrawElement, SceneElementsMap } from "@excalidraw/element/types";
2
+ import type { DTO, ValueOf } from "@excalidraw/common/utility-types";
3
+ import type { AppState, ObservedAppState } from "@excalidraw/excalidraw/types";
4
+ import { StoreSnapshot } from "./store";
5
+ /**
6
+ * Represents the difference between two objects of the same type.
7
+ *
8
+ * Both `deleted` and `inserted` partials represent the same set of added, removed or updated properties, where:
9
+ * - `deleted` is a set of all the deleted values
10
+ * - `inserted` is a set of all the inserted (added, updated) values
11
+ *
12
+ * Keeping it as pure object (without transient state, side-effects, etc.), so we won't have to instantiate it on load.
13
+ */
14
+ export declare class Delta<T> {
15
+ readonly deleted: Partial<T>;
16
+ readonly inserted: Partial<T>;
17
+ private constructor();
18
+ static create<T>(deleted: Partial<T>, inserted: Partial<T>, modifier?: (delta: Partial<T>, partialType: "deleted" | "inserted") => Partial<T>, modifierOptions?: "deleted" | "inserted" | "both"): Delta<T>;
19
+ /**
20
+ * Calculates the delta between two objects.
21
+ *
22
+ * @param prevObject - The previous state of the object.
23
+ * @param nextObject - The next state of the object.
24
+ *
25
+ * @returns new delta instance.
26
+ */
27
+ static calculate<T extends {
28
+ [key: string]: any;
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
+ static empty(): Delta<unknown>;
31
+ static isEmpty<T>(delta: Delta<T>): boolean;
32
+ /**
33
+ * Merges deleted and inserted object partials.
34
+ */
35
+ static mergeObjects<T extends {
36
+ [key: string]: unknown;
37
+ }>(prev: T, added: T, removed: T): T;
38
+ /**
39
+ * Merges deleted and inserted array partials.
40
+ */
41
+ static mergeArrays<T>(prev: readonly T[] | null, added: readonly T[] | null | undefined, removed: readonly T[] | null | undefined, predicate?: (value: T) => string): T[];
42
+ /**
43
+ * Diff object partials as part of the `postProcess`.
44
+ */
45
+ static diffObjects<T, K extends keyof T, V extends ValueOf<T[K]>>(deleted: Partial<T>, inserted: Partial<T>, property: K, setValue: (prevValue: V | undefined) => V): void;
46
+ /**
47
+ * Diff array partials as part of the `postProcess`.
48
+ */
49
+ static diffArrays<T, K extends keyof T, V extends T[K]>(deleted: Partial<T>, inserted: Partial<T>, property: K, groupBy: (value: V extends ArrayLike<infer T> ? T : never) => string): void;
50
+ /**
51
+ * Compares if object1 contains any different value compared to the object2.
52
+ */
53
+ static isLeftDifferent<T extends {}>(object1: T, object2: T, skipShallowCompare?: boolean): boolean;
54
+ /**
55
+ * Compares if object2 contains any different value compared to the object1.
56
+ */
57
+ static isRightDifferent<T extends {}>(object1: T, object2: T, skipShallowCompare?: boolean): boolean;
58
+ /**
59
+ * Compares if shared properties of object1 and object2 contain any different value (aka inner join).
60
+ */
61
+ static isInnerDifferent<T extends {}>(object1: T, object2: T, skipShallowCompare?: boolean): boolean;
62
+ /**
63
+ * Compares if any properties of object1 and object2 contain any different value (aka full join).
64
+ */
65
+ static isDifferent<T extends {}>(object1: T, object2: T, skipShallowCompare?: boolean): boolean;
66
+ /**
67
+ * Returns sorted object1 keys that have distinct values.
68
+ */
69
+ static getLeftDifferences<T extends {}>(object1: T, object2: T, skipShallowCompare?: boolean): string[];
70
+ /**
71
+ * Returns sorted object2 keys that have distinct values.
72
+ */
73
+ static getRightDifferences<T extends {}>(object1: T, object2: T, skipShallowCompare?: boolean): string[];
74
+ /**
75
+ * Returns sorted keys of shared object1 and object2 properties that have distinct values (aka inner join).
76
+ */
77
+ static getInnerDifferences<T extends {}>(object1: T, object2: T, skipShallowCompare?: boolean): string[];
78
+ /**
79
+ * Returns sorted keys that have distinct values between object1 and object2 (aka full join).
80
+ */
81
+ static getDifferences<T extends {}>(object1: T, object2: T, skipShallowCompare?: boolean): string[];
82
+ /**
83
+ * Iterator comparing values of object properties based on the passed joining strategy.
84
+ *
85
+ * @yields keys of properties with different values
86
+ *
87
+ * WARN: it's based on shallow compare performed only on the first level and doesn't go deeper than that.
88
+ */
89
+ private static distinctKeysIterator;
90
+ }
91
+ /**
92
+ * Encapsulates a set of application-level `Delta`s.
93
+ */
94
+ export interface DeltaContainer<T> {
95
+ /**
96
+ * Inverses the `Delta`s while creating a new `DeltaContainer` instance.
97
+ */
98
+ inverse(): DeltaContainer<T>;
99
+ /**
100
+ * Applies the `Delta`s to the previous object.
101
+ *
102
+ * @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
+ */
104
+ applyTo(previous: T, ...options: unknown[]): [T, boolean];
105
+ /**
106
+ * Checks whether all `Delta`s are empty.
107
+ */
108
+ isEmpty(): boolean;
109
+ }
110
+ export declare class AppStateDelta implements DeltaContainer<AppState> {
111
+ readonly delta: Delta<ObservedAppState>;
112
+ private constructor();
113
+ static calculate<T extends ObservedAppState>(prevAppState: T, nextAppState: T): AppStateDelta;
114
+ static restore(appStateDeltaDTO: DTO<AppStateDelta>): AppStateDelta;
115
+ static empty(): AppStateDelta;
116
+ inverse(): AppStateDelta;
117
+ applyTo(appState: AppState, nextElements: SceneElementsMap): [AppState, boolean];
118
+ isEmpty(): boolean;
119
+ /**
120
+ * Mutates `nextAppState` be filtering out state related to deleted elements.
121
+ *
122
+ * @returns `true` if a visible change is found, `false` otherwise.
123
+ */
124
+ private filterInvisibleChanges;
125
+ private static convertToAppStateKey;
126
+ private static filterSelectedElements;
127
+ private static filterSelectedGroups;
128
+ private static stripElementsProps;
129
+ private static stripStandaloneProps;
130
+ /**
131
+ * It is necessary to post process the partials in case of reference values,
132
+ * for which we need to calculate the real diff between `deleted` and `inserted`.
133
+ */
134
+ private static postProcess;
135
+ private static orderAppStateKeys;
136
+ }
137
+ type ElementPartial<TElement extends ExcalidrawElement = ExcalidrawElement> = Omit<Partial<Ordered<TElement>>, "id" | "updated" | "seed">;
138
+ export type ApplyToOptions = {
139
+ excludedProperties: Set<keyof ElementPartial>;
140
+ };
141
+ /**
142
+ * Elements change is a low level primitive to capture a change between two sets of elements.
143
+ * It does so by encapsulating forward and backward `Delta`s, allowing to time-travel in both directions.
144
+ */
145
+ export declare class ElementsDelta implements DeltaContainer<SceneElementsMap> {
146
+ readonly added: Record<string, Delta<ElementPartial>>;
147
+ readonly removed: Record<string, Delta<ElementPartial>>;
148
+ readonly updated: Record<string, Delta<ElementPartial>>;
149
+ private constructor();
150
+ static create(added: Record<string, Delta<ElementPartial>>, removed: Record<string, Delta<ElementPartial>>, updated: Record<string, Delta<ElementPartial>>, options?: {
151
+ shouldRedistribute: boolean;
152
+ }): ElementsDelta;
153
+ static restore(elementsDeltaDTO: DTO<ElementsDelta>): ElementsDelta;
154
+ private static satisfiesAddition;
155
+ private static satisfiesRemoval;
156
+ private static satisfiesUpdate;
157
+ private static satisfiesCommmonInvariants;
158
+ private static validate;
159
+ /**
160
+ * Calculates the `Delta`s between the previous and next set of elements.
161
+ *
162
+ * @param prevElements - Map representing the previous state of elements.
163
+ * @param nextElements - Map representing the next state of elements.
164
+ *
165
+ * @returns `ElementsDelta` instance representing the `Delta` changes between the two sets of elements.
166
+ */
167
+ static calculate<T extends OrderedExcalidrawElement>(prevElements: Map<string, T>, nextElements: Map<string, T>): ElementsDelta;
168
+ static empty(): ElementsDelta;
169
+ inverse(): ElementsDelta;
170
+ isEmpty(): boolean;
171
+ /**
172
+ * Update delta/s based on the existing elements.
173
+ *
174
+ * @param nextElements current elements
175
+ * @param modifierOptions defines which of the delta (`deleted` or `inserted`) will be updated
176
+ * @returns new instance with modified delta/s
177
+ */
178
+ applyLatestChanges(prevElements: SceneElementsMap, nextElements: SceneElementsMap, modifierOptions?: "deleted" | "inserted"): ElementsDelta;
179
+ applyTo(elements: SceneElementsMap, snapshot?: StoreSnapshot["elements"], options?: ApplyToOptions): [SceneElementsMap, boolean];
180
+ private static createApplier;
181
+ private static createGetter;
182
+ private static applyDelta;
183
+ /**
184
+ * Check for visible changes regardless of whether they were removed, added or updated.
185
+ */
186
+ private static checkForVisibleDifference;
187
+ /**
188
+ * Resolves conflicts for all previously added, removed and updated elements.
189
+ * Updates the previous deltas with all the changes after conflict resolution.
190
+ *
191
+ * // TODO: revisit since some bound arrows seem to be often redrawn incorrectly
192
+ *
193
+ * @returns all elements affected by the conflict resolution
194
+ */
195
+ private resolveConflicts;
196
+ /**
197
+ * Non deleted affected elements of removed elements (before and after applying delta),
198
+ * should be unbound ~ bindings should not point from non deleted into the deleted element/s.
199
+ */
200
+ private static unbindAffected;
201
+ /**
202
+ * Non deleted affected elements of added or updated element/s (before and after applying delta),
203
+ * should be rebound (if possible) with the current element ~ bindings should be bidirectional.
204
+ */
205
+ private static rebindAffected;
206
+ private static redrawTextBoundingBoxes;
207
+ private static redrawBoundArrows;
208
+ private static reorderElements;
209
+ /**
210
+ * It is necessary to post process the partials in case of reference values,
211
+ * for which we need to calculate the real diff between `deleted` and `inserted`.
212
+ */
213
+ private static postProcess;
214
+ private static stripIrrelevantProps;
215
+ }
216
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { GlobalPoint } from "@excalidraw/math";
2
+ import type { ElementsMap, ExcalidrawElement } from "./types";
3
+ export declare const distanceToElement: (element: ExcalidrawElement, elementsMap: ElementsMap, p: GlobalPoint) => number;
@@ -0,0 +1,6 @@
1
+ import type { ElementsMap, ExcalidrawElement } from "./types";
2
+ export interface Distribution {
3
+ space: "between";
4
+ axis: "x" | "y";
5
+ }
6
+ export declare const distributeElements: (selectedElements: ExcalidrawElement[], elementsMap: ElementsMap, distribution: Distribution) => ExcalidrawElement[];
@@ -0,0 +1,33 @@
1
+ import type { AppState, NormalizedZoomValue, NullableGridSize, PointerDownState } from "@excalidraw/excalidraw/types";
2
+ import type { NonDeletedExcalidrawElement } from "@excalidraw/element/types";
3
+ import type { Scene } from "./Scene";
4
+ export declare const dragSelectedElements: (pointerDownState: PointerDownState, _selectedElements: NonDeletedExcalidrawElement[], offset: {
5
+ x: number;
6
+ y: number;
7
+ }, scene: Scene, snapOffset: {
8
+ x: number;
9
+ y: number;
10
+ }, gridSize: NullableGridSize) => void;
11
+ export declare const getDragOffsetXY: (selectedElements: NonDeletedExcalidrawElement[], x: number, y: number) => [number, number];
12
+ export declare const dragNewElement: ({ newElement, elementType, originX, originY, x, y, width, height, shouldMaintainAspectRatio, shouldResizeFromCenter, zoom, scene, widthAspectRatio, originOffset, informMutation, }: {
13
+ newElement: NonDeletedExcalidrawElement;
14
+ elementType: AppState["activeTool"]["type"];
15
+ originX: number;
16
+ originY: number;
17
+ x: number;
18
+ y: number;
19
+ width: number;
20
+ height: number;
21
+ shouldMaintainAspectRatio: boolean;
22
+ shouldResizeFromCenter: boolean;
23
+ zoom: NormalizedZoomValue;
24
+ scene: Scene;
25
+ /** whether to keep given aspect ratio when `isResizeWithSidesSameLength` is
26
+ true */
27
+ widthAspectRatio?: number | null | undefined;
28
+ originOffset?: {
29
+ x: number;
30
+ y: number;
31
+ } | null | undefined;
32
+ informMutation?: boolean | undefined;
33
+ }) => void;