@excalidraw/math 0.18.0-ac0d305 → 0.18.0-b1c6bfc

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 (268) hide show
  1. package/dist/dev/index.js +80 -65
  2. package/dist/dev/index.js.map +3 -3
  3. package/dist/prod/index.js +1 -1
  4. package/dist/types/common/debug.d.ts +21 -0
  5. package/dist/types/common/src/appEventBus.d.ts +27 -0
  6. package/dist/types/common/src/bounds.d.ts +10 -0
  7. package/dist/types/common/src/colors.d.ts +59 -39
  8. package/dist/types/common/src/constants.d.ts +25 -27
  9. package/dist/types/common/src/editorInterface.d.ts +34 -0
  10. package/dist/types/common/src/font-metadata.d.ts +1 -3
  11. package/dist/types/common/src/index.d.ts +5 -0
  12. package/dist/types/common/src/keys.d.ts +1 -1
  13. package/dist/types/common/src/utility-types.d.ts +0 -1
  14. package/dist/types/common/src/utils.d.ts +53 -42
  15. package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
  16. package/dist/types/element/src/Scene.d.ts +5 -3
  17. package/dist/types/element/src/arrowheads.d.ts +3 -0
  18. package/dist/types/element/src/arrows/focus.d.ts +27 -0
  19. package/dist/types/element/src/arrows/helpers.d.ts +5 -0
  20. package/dist/types/element/src/binding.d.ts +67 -48
  21. package/dist/types/element/src/bounds.d.ts +7 -13
  22. package/dist/types/element/src/collision.d.ts +7 -2
  23. package/dist/types/element/src/comparisons.d.ts +7 -7
  24. package/dist/types/element/src/distribute.d.ts +2 -1
  25. package/dist/types/element/src/dragElements.d.ts +3 -3
  26. package/dist/types/element/src/duplicate.d.ts +3 -3
  27. package/dist/types/element/src/elbowArrow.d.ts +2 -0
  28. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  29. package/dist/types/element/src/frame.d.ts +6 -2
  30. package/dist/types/element/src/heading.d.ts +2 -1
  31. package/dist/types/element/src/image.d.ts +1 -11
  32. package/dist/types/element/src/index.d.ts +4 -3
  33. package/dist/types/element/src/linearElementEditor.d.ts +23 -22
  34. package/dist/types/element/src/mutateElement.d.ts +5 -1
  35. package/dist/types/element/src/newElement.d.ts +6 -6
  36. package/dist/types/element/src/renderElement.d.ts +1 -7
  37. package/dist/types/element/src/resizeElements.d.ts +10 -10
  38. package/dist/types/element/src/resizeTest.d.ts +6 -5
  39. package/dist/types/element/src/selection.d.ts +10 -10
  40. package/dist/types/element/src/shape.d.ts +9 -8
  41. package/dist/types/element/src/textElement.d.ts +1 -1
  42. package/dist/types/element/src/textMeasurements.d.ts +1 -3
  43. package/dist/types/element/src/textWrapping.d.ts +26 -0
  44. package/dist/types/{excalidraw/data → element/src}/transform.d.ts +3 -3
  45. package/dist/types/element/src/transformHandles.d.ts +8 -27
  46. package/dist/types/element/src/typeChecks.d.ts +4 -7
  47. package/dist/types/element/src/types.d.ts +12 -13
  48. package/dist/types/element/src/utils.d.ts +9 -4
  49. package/dist/types/element/src/zindex.d.ts +7 -1
  50. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +170 -210
  51. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
  52. package/dist/types/excalidraw/actions/actionBoundText.d.ts +94 -121
  53. package/dist/types/excalidraw/actions/actionCanvas.d.ts +556 -902
  54. package/dist/types/excalidraw/actions/actionClipboard.d.ts +125 -897
  55. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +45 -59
  56. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +148 -192
  57. package/dist/types/excalidraw/actions/actionDeselect.d.ts +160 -0
  58. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  59. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +3 -4
  60. package/dist/types/excalidraw/actions/actionElementLink.d.ts +54 -74
  61. package/dist/types/excalidraw/actions/actionElementLock.d.ts +92 -119
  62. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +60 -74
  63. package/dist/types/excalidraw/actions/actionExport.d.ts +173 -1412
  64. package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -396
  65. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
  66. package/dist/types/excalidraw/actions/actionFrame.d.ts +265 -356
  67. package/dist/types/excalidraw/actions/actionGroup.d.ts +97 -132
  68. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +137 -189
  69. package/dist/types/excalidraw/actions/actionLink.d.ts +60 -74
  70. package/dist/types/excalidraw/actions/actionMenu.d.ts +49 -437
  71. package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -361
  72. package/dist/types/excalidraw/actions/actionProperties.d.ts +154 -2533
  73. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +48 -66
  74. package/dist/types/excalidraw/actions/actionStyles.d.ts +45 -58
  75. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +4 -4
  76. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +173 -0
  77. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +60 -74
  78. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +173 -0
  79. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +60 -74
  80. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +48 -68
  81. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  82. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +59 -73
  83. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +60 -74
  84. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +60 -74
  85. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -9
  86. package/dist/types/excalidraw/actions/index.d.ts +4 -1
  87. package/dist/types/excalidraw/actions/register.d.ts +2 -2
  88. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  89. package/dist/types/excalidraw/actions/types.d.ts +4 -4
  90. package/dist/types/excalidraw/appState.d.ts +29 -22
  91. package/dist/types/excalidraw/charts/charts.bar.d.ts +2 -0
  92. package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
  93. package/dist/types/excalidraw/charts/charts.helpers.d.ts +32 -0
  94. package/dist/types/excalidraw/charts/charts.line.d.ts +2 -0
  95. package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
  96. package/dist/types/excalidraw/charts/charts.radar.d.ts +2 -0
  97. package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
  98. package/dist/types/excalidraw/charts/index.d.ts +7 -0
  99. package/dist/types/excalidraw/clipboard.d.ts +13 -36
  100. package/dist/types/excalidraw/components/Actions.d.ts +14 -4
  101. package/dist/types/excalidraw/components/App.d.ts +109 -70
  102. package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
  103. package/dist/types/excalidraw/components/Card.d.ts +1 -3
  104. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
  105. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +1 -3
  106. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
  107. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
  108. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
  109. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +0 -1
  110. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
  111. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  112. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +2 -4
  113. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
  114. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  115. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
  116. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
  117. package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
  118. package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
  119. package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -1
  120. package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
  121. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +2 -1
  122. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
  123. package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
  124. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  125. package/dist/types/excalidraw/components/IconPicker.d.ts +14 -9
  126. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  127. package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
  128. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  129. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
  130. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
  131. package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
  132. package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
  133. package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
  134. package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
  135. package/dist/types/excalidraw/components/Modal.d.ts +0 -1
  136. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
  137. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
  138. package/dist/types/excalidraw/components/Popover.d.ts +2 -1
  139. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -1
  140. package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
  141. package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
  142. package/dist/types/excalidraw/components/Range.d.ts +10 -4
  143. package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
  144. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +15 -21
  145. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
  146. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
  147. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
  148. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
  149. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
  150. package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
  151. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
  152. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
  153. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
  154. package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
  155. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  156. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
  157. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
  158. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
  159. package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
  160. package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
  161. package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
  162. package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
  163. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
  164. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
  165. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
  166. package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
  167. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +5 -2
  168. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
  169. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
  170. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
  171. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
  172. package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
  173. package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
  174. package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +9 -0
  175. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
  176. package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
  177. package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
  178. package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
  179. package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
  180. package/dist/types/excalidraw/components/TTDDialog/types.d.ts +95 -0
  181. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
  182. package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
  183. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
  184. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +10 -0
  185. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
  186. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  187. package/dist/types/excalidraw/components/Toast.d.ts +11 -7
  188. package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
  189. package/dist/types/excalidraw/components/Trans.d.ts +2 -2
  190. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +7 -3
  191. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +47 -35
  192. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -5
  193. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
  194. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
  195. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
  196. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
  197. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -2
  198. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
  199. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
  200. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
  201. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
  202. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
  203. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
  204. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
  205. package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
  206. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
  207. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
  208. package/dist/types/excalidraw/components/icons.d.ts +44 -22
  209. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +20 -2
  210. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -35
  211. package/dist/types/excalidraw/components/shapes.d.ts +74 -1
  212. package/dist/types/excalidraw/data/blob.d.ts +329 -8
  213. package/dist/types/excalidraw/data/encode.d.ts +4 -4
  214. package/dist/types/excalidraw/data/encryption.d.ts +5 -5
  215. package/dist/types/excalidraw/data/filesystem.d.ts +5 -7
  216. package/dist/types/excalidraw/data/index.d.ts +4 -5
  217. package/dist/types/excalidraw/data/json.d.ts +171 -4
  218. package/dist/types/excalidraw/data/library.d.ts +24 -9
  219. package/dist/types/excalidraw/data/resave.d.ts +7 -2
  220. package/dist/types/excalidraw/data/restore.d.ts +25 -10
  221. package/dist/types/excalidraw/data/types.d.ts +4 -1
  222. package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
  223. package/dist/types/excalidraw/errors.d.ts +14 -0
  224. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  225. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
  226. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
  227. package/dist/types/excalidraw/i18n.d.ts +2 -2
  228. package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
  229. package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
  230. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -14
  231. package/dist/types/excalidraw/scene/Renderer.d.ts +5 -2
  232. package/dist/types/excalidraw/scene/export.d.ts +2 -2
  233. package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
  234. package/dist/types/excalidraw/scene/types.d.ts +22 -5
  235. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  236. package/dist/types/excalidraw/snapping.d.ts +5 -5
  237. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
  238. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
  239. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
  240. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
  241. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
  242. package/dist/types/excalidraw/textAutoResizeHandle.d.ts +15 -0
  243. package/dist/types/excalidraw/types.d.ts +123 -36
  244. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +7 -3
  245. package/dist/types/math/src/curve.d.ts +4 -1
  246. package/dist/types/math/src/point.d.ts +7 -2
  247. package/dist/types/math/src/polygon.d.ts +2 -2
  248. package/dist/types/math/src/range.d.ts +1 -3
  249. package/dist/types/math/src/segment.d.ts +3 -3
  250. package/dist/types/math/src/types.d.ts +25 -1
  251. package/dist/types/utils/src/bbox.d.ts +1 -1
  252. package/dist/types/utils/src/export.d.ts +5 -5
  253. package/dist/types/utils/src/shape.d.ts +6 -6
  254. package/dist/types/utils/src/withinBounds.d.ts +2 -2
  255. package/package.json +2 -2
  256. package/dist/types/excalidraw/charts.d.ts +0 -27
  257. package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
  258. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -16
  259. package/dist/types/excalidraw/components/InitializeApp.d.ts +0 -10
  260. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +0 -9
  261. package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +0 -8
  262. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -10
  263. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -58
  264. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +0 -19
  265. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +0 -85
  266. package/dist/types/excalidraw/data/reconcile.d.ts +0 -7
  267. package/dist/types/excalidraw/index.d.ts +0 -47
  268. package/dist/types/excalidraw/polyfill.d.ts +0 -2
@@ -1,7 +1,7 @@
1
- import type { UserIdleState } from "@excalidraw/common";
1
+ import type { UserIdleState, EditorInterface } from "@excalidraw/common";
2
2
  import type { ExcalidrawElement, NonDeletedElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
3
3
  import type { MakeBrand } from "@excalidraw/common/utility-types";
4
- import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, Device, PendingExcalidrawElements } from "../types";
4
+ import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, PendingExcalidrawElements } from "../types";
5
5
  import type { RoughCanvas } from "roughjs/bin/canvas";
6
6
  import type { Drawable } from "roughjs/bin/core";
7
7
  export type RenderableElementsMap = NonDeletedElementsMap & MakeBrand<"RenderableElementsMap">;
@@ -15,6 +15,7 @@ export type StaticCanvasRenderConfig = {
15
15
  embedsValidationStatus: EmbedsValidationStatus;
16
16
  elementsPendingErasure: ElementsPendingErasure;
17
17
  pendingFlowchartNodes: PendingExcalidrawElements | null;
18
+ theme: AppState["theme"];
18
19
  };
19
20
  export type SVGRenderConfig = {
20
21
  offsetX: number;
@@ -32,6 +33,7 @@ export type SVGRenderConfig = {
32
33
  * @default true
33
34
  */
34
35
  reuseImages: boolean;
36
+ theme: AppState["theme"];
35
37
  };
36
38
  export type InteractiveCanvasRenderConfig = {
37
39
  remoteSelectedElementIds: Map<ExcalidrawElement["id"], SocketId[]>;
@@ -43,6 +45,10 @@ export type InteractiveCanvasRenderConfig = {
43
45
  remotePointerUsernames: Map<SocketId, string>;
44
46
  remotePointerButton: Map<SocketId, string | undefined>;
45
47
  selectionColor: string;
48
+ lastViewportPosition: {
49
+ x: number;
50
+ y: number;
51
+ };
46
52
  renderScrollbars?: boolean;
47
53
  };
48
54
  export type RenderInteractiveSceneCallback = {
@@ -60,7 +66,13 @@ export type StaticSceneRenderConfig = {
60
66
  appState: StaticCanvasAppState;
61
67
  renderConfig: StaticCanvasRenderConfig;
62
68
  };
69
+ export type InteractiveSceneRenderAnimationState = {
70
+ bindingHighlight: {
71
+ runtime: number;
72
+ } | undefined;
73
+ };
63
74
  export type InteractiveSceneRenderConfig = {
75
+ app: AppClassProperties;
64
76
  canvas: HTMLCanvasElement | null;
65
77
  elementsMap: RenderableElementsMap;
66
78
  visibleElements: readonly NonDeletedExcalidrawElement[];
@@ -69,8 +81,10 @@ export type InteractiveSceneRenderConfig = {
69
81
  scale: number;
70
82
  appState: InteractiveCanvasAppState;
71
83
  renderConfig: InteractiveCanvasRenderConfig;
72
- device: Device;
84
+ editorInterface: EditorInterface;
73
85
  callback: (data: RenderInteractiveSceneCallback) => void;
86
+ animationState?: InteractiveSceneRenderAnimationState;
87
+ deltaTime: number;
74
88
  };
75
89
  export type NewElementSceneRenderConfig = {
76
90
  canvas: HTMLCanvasElement | null;
@@ -103,14 +117,17 @@ export type ScrollBars = {
103
117
  deltaMultiplier: number;
104
118
  } | null;
105
119
  };
106
- export type ElementShape = Drawable | Drawable[] | null;
120
+ export type SVGPathString = string & {
121
+ __brand: "SVGPathString";
122
+ };
123
+ export type ElementShape = Drawable | Drawable[] | Path2D | (Drawable | SVGPathString)[] | null;
107
124
  export type ElementShapes = {
108
125
  rectangle: Drawable;
109
126
  ellipse: Drawable;
110
127
  diamond: Drawable;
111
128
  iframe: Drawable;
112
129
  embeddable: Drawable;
113
- freedraw: Drawable | null;
130
+ freedraw: (Drawable | SVGPathString)[];
114
131
  arrow: Drawable[];
115
132
  line: Drawable[];
116
133
  text: null;
@@ -0,0 +1 @@
1
+ export declare const getShortcutKey: (shortcut: string) => string;
@@ -1,6 +1,6 @@
1
1
  import { type GlobalPoint } from "@excalidraw/math";
2
2
  import type { InclusiveRange } from "@excalidraw/math";
3
- import type { Bounds } from "@excalidraw/element";
3
+ import type { Bounds } from "@excalidraw/common";
4
4
  import type { MaybeTransformHandleType } from "@excalidraw/element";
5
5
  import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
6
6
  import type { AppClassProperties, AppState, KeyboardModifiersObject } from "./types";
@@ -70,9 +70,9 @@ export declare const isSnappingEnabled: ({ event, app, selectedElements, }: {
70
70
  }) => boolean;
71
71
  export declare const areRoughlyEqual: (a: number, b: number, precision?: number) => boolean;
72
72
  export declare const getElementsCorners: (elements: ExcalidrawElement[], elementsMap: ElementsMap, { omitCenter, boundingBoxCorners, dragOffset, }?: {
73
- omitCenter?: boolean | undefined;
74
- boundingBoxCorners?: boolean | undefined;
75
- dragOffset?: Vector2D | undefined;
73
+ omitCenter?: boolean;
74
+ boundingBoxCorners?: boolean;
75
+ dragOffset?: Vector2D;
76
76
  }) => GlobalPoint[];
77
77
  export declare const getVisibleGaps: (elements: readonly NonDeletedExcalidrawElement[], selectedElements: ExcalidrawElement[], appState: AppState, elementsMap: ElementsMap) => {
78
78
  horizontalGaps: Gap[];
@@ -107,5 +107,5 @@ export declare const getSnapLinesAtPointer: (elements: readonly ExcalidrawElemen
107
107
  };
108
108
  snapLines: PointerSnapLine[];
109
109
  };
110
- export declare const isActiveToolNonLinearSnappable: (activeToolType: AppState["activeTool"]["type"]) => boolean;
110
+ export declare const isActiveToolNonLinearSnappable: (activeToolType: AppState["activeTool"]["type"]) => activeToolType is "text" | "rectangle" | "diamond" | "ellipse" | "image" | "frame" | "magicframe";
111
111
  export {};
@@ -38,7 +38,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38
38
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39
39
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40
40
  */
41
- declare function subset(hbSubsetWasm: any, heapu8: Uint8Array, font: ArrayBuffer, codePoints: ReadonlySet<number>): Uint8Array;
41
+ declare function subset(hbSubsetWasm: any, heapu8: Uint8Array, font: ArrayBuffer, codePoints: ReadonlySet<number>): Uint8Array<ArrayBuffer>;
42
42
  declare const _default: {
43
43
  subset: typeof subset;
44
44
  };
@@ -7,7 +7,7 @@
7
7
  * In the future consider separating common utils into a separate shared chunk.
8
8
  */
9
9
  declare const load: () => Promise<{
10
- subset: (fontBuffer: ArrayBuffer, codePoints: ReadonlySet<number>) => Uint8Array;
10
+ subset: (fontBuffer: ArrayBuffer, codePoints: ReadonlySet<number>) => Uint8Array<ArrayBuffer>;
11
11
  }>;
12
12
  declare const _default: () => ReturnType<typeof load>;
13
13
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: Uint8Array;
1
+ declare const _default: Uint8Array<ArrayBuffer>;
2
2
  export default _default;
@@ -7,8 +7,8 @@
7
7
  * In the future consider separating common utils into a separate shared chunk.
8
8
  */
9
9
  declare const load: () => Promise<{
10
- compress: (buffer: ArrayBuffer) => Uint8Array;
11
- decompress: (buffer: ArrayBuffer) => Uint8Array;
10
+ compress: (buffer: ArrayBuffer) => Uint8Array<ArrayBuffer>;
11
+ decompress: (buffer: ArrayBuffer) => Uint8Array<ArrayBuffer>;
12
12
  }>;
13
13
  declare const _default: () => ReturnType<typeof load>;
14
14
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: Uint8Array;
1
+ declare const _default: Uint8Array<ArrayBuffer>;
2
2
  export default _default;
@@ -0,0 +1,15 @@
1
+ import { type GlobalPoint } from "@excalidraw/math";
2
+ import type { EditorInterface } from "@excalidraw/common";
3
+ import type { ExcalidrawTextElement } from "@excalidraw/element/types";
4
+ export declare const getTextBoxPadding: (zoomValue: number) => number;
5
+ export declare const getTextAutoResizeHandle: (textElement: ExcalidrawTextElement, zoomValue: number, formFactor: EditorInterface["formFactor"]) => {
6
+ center: GlobalPoint | import("@excalidraw/math").LocalPoint;
7
+ start: GlobalPoint;
8
+ end: GlobalPoint;
9
+ hitboxWidth: number;
10
+ hitboxHeight: number;
11
+ } | null;
12
+ export declare const isPointHittingTextAutoResizeHandle: (point: Readonly<{
13
+ x: number;
14
+ y: number;
15
+ }>, textElement: ExcalidrawTextElement, zoomValue: number, formFactor: EditorInterface["formFactor"]) => boolean;
@@ -1,16 +1,15 @@
1
- import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES } from "@excalidraw/common";
2
- import type { SuggestedBinding } from "@excalidraw/element";
1
+ import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES, EditorInterface } from "@excalidraw/common";
3
2
  import type { LinearElementEditor } from "@excalidraw/element";
4
3
  import type { MaybeTransformHandleType } from "@excalidraw/element";
5
- import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement, ExcalidrawNonSelectionElement } from "@excalidraw/element/types";
4
+ import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, FontFamilyValues, FileId, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement, ExcalidrawNonSelectionElement, BindMode, ExcalidrawTextElement } from "@excalidraw/element/types";
6
5
  import type { Merge, MaybePromise, ValueOf, MakeBrand } from "@excalidraw/common/utility-types";
7
6
  import type { CaptureUpdateActionType, DurableIncrement, EphemeralIncrement } from "@excalidraw/element";
7
+ import type { GlobalPoint } from "@excalidraw/math";
8
8
  import type { Action } from "./actions/types";
9
9
  import type { Spreadsheet } from "./charts";
10
10
  import type { ClipboardData } from "./clipboard";
11
11
  import type App from "./components/App";
12
12
  import type Library from "./data/library";
13
- import type { FileSystemHandle } from "./data/filesystem";
14
13
  import type { ContextMenuItems } from "./components/ContextMenu";
15
14
  import type { SnapLine } from "./snapping";
16
15
  import type { ImportedDataState } from "./data/types";
@@ -18,6 +17,7 @@ import type { Language } from "./i18n";
18
17
  import type { isOverScrollBars } from "./scene/scrollbars";
19
18
  import type React from "react";
20
19
  import type { JSX } from "react";
20
+ export type { App };
21
21
  export type SocketId = string & {
22
22
  _brand: "SocketId";
23
23
  };
@@ -125,16 +125,20 @@ export type StaticCanvasAppState = Readonly<_CommonCanvasAppState & {
125
125
  frameRendering: AppState["frameRendering"];
126
126
  currentHoveredFontFamily: AppState["currentHoveredFontFamily"];
127
127
  hoveredElementIds: AppState["hoveredElementIds"];
128
+ suggestedBinding: AppState["suggestedBinding"];
128
129
  croppingElementId: AppState["croppingElementId"];
129
130
  }>;
130
131
  export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
132
+ activeTool: AppState["activeTool"];
131
133
  activeEmbeddable: AppState["activeEmbeddable"];
132
134
  selectionElement: AppState["selectionElement"];
133
135
  selectedGroupIds: AppState["selectedGroupIds"];
134
136
  selectedLinearElement: AppState["selectedLinearElement"];
135
137
  multiElement: AppState["multiElement"];
138
+ newElement: AppState["newElement"];
136
139
  isBindingEnabled: AppState["isBindingEnabled"];
137
- suggestedBindings: AppState["suggestedBindings"];
140
+ isMidpointSnappingEnabled: AppState["isMidpointSnappingEnabled"];
141
+ suggestedBinding: AppState["suggestedBinding"];
138
142
  isRotating: AppState["isRotating"];
139
143
  elementsToHighlight: AppState["elementsToHighlight"];
140
144
  collaborators: AppState["collaborators"];
@@ -145,6 +149,11 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
145
149
  croppingElementId: AppState["croppingElementId"];
146
150
  searchMatches: AppState["searchMatches"];
147
151
  activeLockedId: AppState["activeLockedId"];
152
+ hoveredElementIds: AppState["hoveredElementIds"];
153
+ frameRendering: AppState["frameRendering"];
154
+ shouldCacheIgnoreZoom: AppState["shouldCacheIgnoreZoom"];
155
+ exportScale: AppState["exportScale"];
156
+ currentItemArrowType: AppState["currentItemArrowType"];
148
157
  }>;
149
158
  export type ObservedAppState = ObservedStandaloneAppState & ObservedElementsAppState;
150
159
  export type ObservedStandaloneAppState = {
@@ -163,6 +172,7 @@ export type ObservedElementsAppState = {
163
172
  lockedMultiSelections: AppState["lockedMultiSelections"];
164
173
  activeLockedId: AppState["activeLockedId"];
165
174
  };
175
+ export type BoxSelectionMode = "contain" | "overlap";
166
176
  export interface AppState {
167
177
  contextMenu: {
168
178
  items: ContextMenuItems;
@@ -196,9 +206,22 @@ export interface AppState {
196
206
  * - set on pointer down, updated during pointer move
197
207
  */
198
208
  selectionElement: NonDeletedExcalidrawElement | null;
209
+ /**
210
+ * tracking current arrow binding editor state (takes into account
211
+ * `bindingPreference` and keyboard modifiers (ctrl/alt)
212
+ */
199
213
  isBindingEnabled: boolean;
214
+ /** user box selection preference; defaults to "contain" when unset */
215
+ boxSelectionMode: BoxSelectionMode;
216
+ /** user arrow binding preference */
217
+ bindingPreference: "enabled" | "disabled";
218
+ /** user preference whether arrow snap to midpoints while binding */
219
+ isMidpointSnappingEnabled: boolean;
200
220
  startBoundElement: NonDeleted<ExcalidrawBindableElement> | null;
201
- suggestedBindings: SuggestedBinding[];
221
+ suggestedBinding: {
222
+ element: NonDeleted<ExcalidrawBindableElement>;
223
+ midPoint?: GlobalPoint;
224
+ } | null;
202
225
  frameToHighlight: NonDeleted<ExcalidrawFrameLikeElement> | null;
203
226
  frameRendering: {
204
227
  enabled: boolean;
@@ -211,7 +234,7 @@ export interface AppState {
211
234
  /**
212
235
  * set when a new text is created or when an existing text is being edited
213
236
  */
214
- editingTextElement: NonDeletedExcalidrawElement | null;
237
+ editingTextElement: ExcalidrawTextElement | null;
215
238
  activeTool: {
216
239
  /**
217
240
  * indicates a previous tool we should revert back to if we deselect the
@@ -221,6 +244,10 @@ export interface AppState {
221
244
  locked: boolean;
222
245
  fromSelection: boolean;
223
246
  } & ActiveTool;
247
+ preferredSelectionTool: {
248
+ type: "selection" | "lasso";
249
+ initialized: boolean;
250
+ };
224
251
  penMode: boolean;
225
252
  penDetected: boolean;
226
253
  exportBackground: boolean;
@@ -251,7 +278,7 @@ export interface AppState {
251
278
  isResizing: boolean;
252
279
  isRotating: boolean;
253
280
  zoom: Zoom;
254
- openMenu: "canvas" | "shape" | null;
281
+ openMenu: "canvas" | null;
255
282
  openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
256
283
  openSidebar: {
257
284
  name: SidebarName;
@@ -264,9 +291,15 @@ export interface AppState {
264
291
  tab: "text-to-diagram" | "mermaid";
265
292
  } | {
266
293
  name: "commandPalette";
294
+ } | {
295
+ name: "settings";
267
296
  } | {
268
297
  name: "elementLinkSelector";
269
298
  sourceElementId: ExcalidrawElement["id"];
299
+ } | {
300
+ name: "charts";
301
+ data: Spreadsheet;
302
+ rawText: string;
270
303
  };
271
304
  /**
272
305
  * Reflects user preference for whether the default sidebar should be docked.
@@ -289,7 +322,7 @@ export interface AppState {
289
322
  selectedElementsAreBeingDragged: boolean;
290
323
  shouldCacheIgnoreZoom: boolean;
291
324
  toast: {
292
- message: string;
325
+ message: React.ReactNode;
293
326
  closable?: boolean;
294
327
  duration?: number;
295
328
  } | null;
@@ -311,21 +344,13 @@ export interface AppState {
311
344
  height: number;
312
345
  offsetTop: number;
313
346
  offsetLeft: number;
314
- fileHandle: FileSystemHandle | null;
347
+ fileHandle: FileSystemFileHandle | null;
315
348
  collaborators: Map<SocketId, Collaborator>;
316
349
  stats: {
317
350
  open: boolean;
318
351
  /** bitmap. Use `STATS_PANELS` bit values */
319
352
  panels: number;
320
353
  };
321
- currentChartType: ChartType;
322
- pasteDialog: {
323
- shown: false;
324
- data: null;
325
- } | {
326
- shown: true;
327
- data: Spreadsheet;
328
- };
329
354
  showHyperlinkPopup: false | "info" | "editor";
330
355
  selectedLinearElement: LinearElementEditor | null;
331
356
  snapLines: readonly SnapLine[];
@@ -351,8 +376,7 @@ export interface AppState {
351
376
  lockedMultiSelections: {
352
377
  [groupId: string]: true;
353
378
  };
354
- /** properties sidebar mode - determines whether to show compact or complete sidebar */
355
- stylesPanelMode: "compact" | "full";
379
+ bindMode: BindMode;
356
380
  }
357
381
  export type SearchMatch = {
358
382
  id: string;
@@ -365,7 +389,7 @@ export type SearchMatch = {
365
389
  showOnCanvas: boolean;
366
390
  }[];
367
391
  };
368
- export type UIAppState = Omit<AppState, "suggestedBindings" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
392
+ export type UIAppState = Omit<AppState, "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
369
393
  export type NormalizedZoomValue = number & {
370
394
  _brand: "normalizedZoom";
371
395
  };
@@ -413,11 +437,36 @@ export type OnUserFollowedPayload = {
413
437
  userToFollow: UserToFollow;
414
438
  action: "FOLLOW" | "UNFOLLOW";
415
439
  };
440
+ export type OnExportProgress = {
441
+ type: "progress";
442
+ message?: React.ReactNode;
443
+ /** 0-1 range */
444
+ progress?: number;
445
+ };
416
446
  export interface ExcalidrawProps {
417
447
  onChange?: (elements: readonly OrderedExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
448
+ /**
449
+ * note: only subscribes if the props.onIncrement is defined on initial render
450
+ */
418
451
  onIncrement?: (event: DurableIncrement | EphemeralIncrement) => void;
419
452
  initialData?: (() => MaybePromise<ExcalidrawInitialDataState | null>) | MaybePromise<ExcalidrawInitialDataState | null>;
420
- excalidrawAPI?: (api: ExcalidrawImperativeAPI) => void;
453
+ /**
454
+ * Invoked as soon as the Excalidraw API is available
455
+ * NOTE editor is not yet mounted, and state is not yet initialized
456
+ */
457
+ onExcalidrawAPI?: (api: ExcalidrawImperativeAPI | null) => void;
458
+ /**
459
+ * Invoked once the editor root is mounted.
460
+ */
461
+ onMount?: (payload: ExcalidrawMountPayload) => void;
462
+ /**
463
+ * Invoked when the editor root is unmounted.
464
+ */
465
+ onUnmount?: () => void;
466
+ /**
467
+ * Invoked once the initial scene is loaded.
468
+ */
469
+ onInitialize?: (api: ExcalidrawImperativeAPI) => void;
421
470
  isCollaborating?: boolean;
422
471
  onPointerUpdate?: (payload: {
423
472
  pointer: {
@@ -443,6 +492,7 @@ export interface ExcalidrawProps {
443
492
  onDuplicate?: (nextElements: readonly ExcalidrawElement[],
444
493
  /** excludes the duplicated elements */
445
494
  prevElements: readonly ExcalidrawElement[]) => ExcalidrawElement[] | void;
495
+ renderTopLeftUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
446
496
  renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
447
497
  langCode?: Language["code"];
448
498
  viewModeEnabled?: boolean;
@@ -473,6 +523,29 @@ export interface ExcalidrawProps {
473
523
  aiEnabled?: boolean;
474
524
  showDeprecatedFonts?: boolean;
475
525
  renderScrollbars?: boolean;
526
+ /**
527
+ * Called before exporting to a file.
528
+ *
529
+ * Allows the host app to intercept and delay saving until async operations
530
+ * (e.g., images are loaded) complete.
531
+ *
532
+ * If Promise/AsyncGenerator is returned, a progress toast will be shown
533
+ * until the operation completes. Generator can yield progress updates.
534
+ */
535
+ onExport?: (
536
+ /** type of export. Currently we only call for JSON exports or
537
+ * JSON-embedded PNG (which is also identified as `json` type here)*/
538
+ type: "json", data: {
539
+ elements: readonly ExcalidrawElement[];
540
+ appState: AppState;
541
+ files: BinaryFiles;
542
+ }, options: {
543
+ /** signal that gets aborted if user cancels the export (e.g. closes
544
+ * the native file picker dialog). In that case, you can either
545
+ * return immediately, or throw AbortError.
546
+ */
547
+ signal: AbortSignal;
548
+ }) => MaybePromise<void> | AsyncGenerator<OnExportProgress, void>;
476
549
  }
477
550
  export type SceneData = {
478
551
  elements?: ImportedDataState["elements"];
@@ -500,6 +573,11 @@ export type UIOptions = Partial<{
500
573
  tools: {
501
574
  image: boolean;
502
575
  };
576
+ /**
577
+ * Optionally control the editor form factor and desktop UI mode from the host app.
578
+ * If not provided, we will take care of it internally.
579
+ */
580
+ getFormFactor?: (editorWidth: number, editorHeight: number) => EditorInterface["formFactor"];
503
581
  /** @deprecated does nothing. Will be removed in 0.15 */
504
582
  welcomeScreen?: boolean;
505
583
  }>;
@@ -520,6 +598,8 @@ export type AppProps = Merge<ExcalidrawProps, {
520
598
  export type AppClassProperties = {
521
599
  props: AppProps;
522
600
  state: AppState;
601
+ api: App["api"];
602
+ sessionExportThemeOverride: App["sessionExportThemeOverride"];
523
603
  interactiveCanvas: HTMLCanvasElement | null;
524
604
  /** static canvas */
525
605
  canvas: HTMLCanvasElement;
@@ -530,7 +610,7 @@ export type AppClassProperties = {
530
610
  mimeType: ValueOf<typeof IMAGE_MIME_TYPES>;
531
611
  }>;
532
612
  files: BinaryFiles;
533
- device: App["device"];
613
+ editorInterface: App["editorInterface"];
534
614
  scene: App["scene"];
535
615
  syncActionResult: App["syncActionResult"];
536
616
  fonts: App["fonts"];
@@ -559,7 +639,12 @@ export type AppClassProperties = {
559
639
  excalidrawContainerValue: App["excalidrawContainerValue"];
560
640
  onPointerUpEmitter: App["onPointerUpEmitter"];
561
641
  updateEditorAtom: App["updateEditorAtom"];
562
- defaultSelectionTool: "selection" | "lasso";
642
+ onPointerDownEmitter: App["onPointerDownEmitter"];
643
+ onEvent: App["onEvent"];
644
+ onStateChange: App["onStateChange"];
645
+ lastPointerMoveCoords: App["lastPointerMoveCoords"];
646
+ bindModeHandler: App["bindModeHandler"];
647
+ setAppState: App["setAppState"];
563
648
  };
564
649
  export type PointerDownState = Readonly<{
565
650
  origin: Readonly<{
@@ -620,7 +705,18 @@ export type PointerDownState = Readonly<{
620
705
  };
621
706
  }>;
622
707
  export type UnsubscribeCallback = () => void;
708
+ export type ExcalidrawMountPayload = {
709
+ excalidrawAPI: ExcalidrawImperativeAPI;
710
+ container: HTMLDivElement | null;
711
+ };
712
+ export type ExcalidrawImperativeAPIEventMap = {
713
+ "editor:mount": [payload: ExcalidrawMountPayload];
714
+ "editor:initialize": [api: ExcalidrawImperativeAPI];
715
+ "editor:unmount": [];
716
+ };
623
717
  export interface ExcalidrawImperativeAPI {
718
+ /** Whether the editor has been unmounted and the API is no longer usable. */
719
+ isDestroyed: boolean;
624
720
  updateScene: InstanceType<typeof App>["updateScene"];
625
721
  applyDeltas: InstanceType<typeof App>["applyDeltas"];
626
722
  mutateElement: InstanceType<typeof App>["mutateElement"];
@@ -645,6 +741,7 @@ export interface ExcalidrawImperativeAPI {
645
741
  setCursor: InstanceType<typeof App>["setCursor"];
646
742
  resetCursor: InstanceType<typeof App>["resetCursor"];
647
743
  toggleSidebar: InstanceType<typeof App>["toggleSidebar"];
744
+ getEditorInterface: () => EditorInterface;
648
745
  /**
649
746
  * Disables rendering of frames (including element clipping), but currently
650
747
  * the frames are still interactive in edit mode. As such, this API should be
@@ -657,18 +754,9 @@ export interface ExcalidrawImperativeAPI {
657
754
  onPointerUp: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: PointerEvent) => void) => UnsubscribeCallback;
658
755
  onScrollChange: (callback: (scrollX: number, scrollY: number, zoom: Zoom) => void) => UnsubscribeCallback;
659
756
  onUserFollow: (callback: (payload: OnUserFollowedPayload) => void) => UnsubscribeCallback;
757
+ onStateChange: InstanceType<typeof App>["onStateChange"];
758
+ onEvent: InstanceType<typeof App>["onEvent"];
660
759
  }
661
- export type Device = Readonly<{
662
- viewport: {
663
- isMobile: boolean;
664
- isLandscape: boolean;
665
- };
666
- editor: {
667
- isMobile: boolean;
668
- canFitSidebar: boolean;
669
- };
670
- isTouchScreen: boolean;
671
- }>;
672
760
  export type FrameNameBounds = {
673
761
  x: number;
674
762
  y: number;
@@ -708,4 +796,3 @@ export type Offsets = Partial<{
708
796
  bottom: number;
709
797
  left: number;
710
798
  }>;
711
- export {};
@@ -1,7 +1,7 @@
1
1
  import type { ExcalidrawElement, ExcalidrawTextElement } from "@excalidraw/element/types";
2
2
  import type App from "../components/App";
3
3
  type SubmitHandler = () => void;
4
- export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect, }: {
4
+ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect, initialCaretSceneCoords, }: {
5
5
  id: ExcalidrawElement["id"];
6
6
  /**
7
7
  * textWysiwyg only deals with `originalText`
@@ -9,7 +9,7 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
9
9
  * Note: `text`, which can be wrapped and therefore different from `originalText`,
10
10
  * is derived from `originalText`
11
11
  */
12
- onChange?: ((nextOriginalText: string) => void) | undefined;
12
+ onChange?: (nextOriginalText: string) => void;
13
13
  onSubmit: (data: {
14
14
  viaKeyboard: boolean;
15
15
  nextOriginalText: string;
@@ -19,6 +19,10 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
19
19
  canvas: HTMLCanvasElement;
20
20
  excalidrawContainer: HTMLDivElement | null;
21
21
  app: App;
22
- autoSelect?: boolean | undefined;
22
+ autoSelect?: boolean;
23
+ initialCaretSceneCoords?: {
24
+ x: number;
25
+ y: number;
26
+ } | null;
23
27
  }) => SubmitHandler;
24
28
  export {};
@@ -12,7 +12,10 @@ export declare const bezierEquation: <Point extends GlobalPoint | LocalPoint>(c:
12
12
  /**
13
13
  * Computes the intersection between a cubic spline and a line segment.
14
14
  */
15
- export declare function curveIntersectLineSegment<Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, l: LineSegment<Point>): Point[];
15
+ export declare function curveIntersectLineSegment<Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, l: LineSegment<Point>, opts?: {
16
+ tolerance?: number;
17
+ iterLimit?: number;
18
+ }): Point[];
16
19
  /**
17
20
  * Finds the closest point on the Bezier curve from another point
18
21
  *
@@ -1,4 +1,4 @@
1
- import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector } from "./types";
1
+ import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector, GlobalCoord, LocalCoord } from "./types";
2
2
  /**
3
3
  * Create a properly typed Point instance from the X and Y coordinates.
4
4
  *
@@ -7,6 +7,11 @@ import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector } from "./types"
7
7
  * @returns The branded and created point
8
8
  */
9
9
  export declare function pointFrom<Point extends GlobalPoint | LocalPoint>(x: number, y: number): Point;
10
+ export declare function pointFrom<Coord extends GlobalCoord | LocalCoord>(coords: Coord): Coord extends GlobalCoord ? GlobalPoint : LocalPoint;
11
+ export declare function pointFrom<Point extends GlobalPoint | LocalPoint>(coords: {
12
+ x: number;
13
+ y: number;
14
+ }): Point;
10
15
  /**
11
16
  * Converts and remaps an array containing a pair of numbers to Point.
12
17
  *
@@ -52,7 +57,7 @@ export declare function pointsEqual<Point extends GlobalPoint | LocalPoint>(a: P
52
57
  * @param angle The radians to rotate the point by
53
58
  * @returns The rotated point
54
59
  */
55
- export declare function pointRotateRads<Point extends GlobalPoint | LocalPoint>([x, y]: Point, [cx, cy]: Point, angle: Radians): Point;
60
+ export declare function pointRotateRads<Point extends GlobalPoint | LocalPoint>(point: Point, center: Point, angle: Radians): Point;
56
61
  /**
57
62
  * Rotate a point by [angle] degree.
58
63
  *
@@ -1,6 +1,6 @@
1
1
  import type { GlobalPoint, LocalPoint, Polygon } from "./types";
2
2
  export declare function polygon<Point extends GlobalPoint | LocalPoint>(...points: Point[]): Polygon<Point>;
3
3
  export declare function polygonFromPoints<Point extends GlobalPoint | LocalPoint>(points: Point[]): Polygon<Point>;
4
- export declare const polygonIncludesPoint: <Point extends GlobalPoint | LocalPoint>(point: Point, polygon: Polygon<Point>) => boolean;
4
+ export declare const polygonIncludesPoint: <Point extends LocalPoint | GlobalPoint>(point: Point, polygon: Polygon<Point>) => boolean;
5
5
  export declare const polygonIncludesPointNonZero: <Point extends [number, number]>(point: Point, polygon: Point[]) => boolean;
6
- export declare const pointOnPolygon: <Point extends GlobalPoint | LocalPoint>(p: Point, poly: Polygon<Point>, threshold?: number) => boolean;
6
+ export declare const pointOnPolygon: <Point extends LocalPoint | GlobalPoint>(p: Point, poly: Polygon<Point>, threshold?: number) => boolean;
@@ -13,9 +13,7 @@ export declare function rangeInclusive(start: number, end: number): InclusiveRan
13
13
  * @param pair The number pair to convert to an inclusive range
14
14
  * @returns The new inclusive range
15
15
  */
16
- export declare function rangeInclusiveFromPair(pair: [start: number, end: number]): [number, number] & {
17
- _brand: "excalimath_degree";
18
- };
16
+ export declare function rangeInclusiveFromPair(pair: [start: number, end: number]): InclusiveRange;
19
17
  /**
20
18
  * Given two ranges, return if the two ranges overlap with each other e.g.
21
19
  * [1, 3] overlaps with [2, 4] while [1, 3] does not overlap with [4, 5].
@@ -21,14 +21,14 @@ export declare const isLineSegment: <Point extends GlobalPoint | LocalPoint>(seg
21
21
  * @param origin
22
22
  * @returns
23
23
  */
24
- export declare const lineSegmentRotate: <Point extends GlobalPoint | LocalPoint>(l: LineSegment<Point>, angle: Radians, origin?: Point | undefined) => LineSegment<Point>;
24
+ export declare const lineSegmentRotate: <Point extends LocalPoint | GlobalPoint>(l: LineSegment<Point>, angle: Radians, origin?: Point) => LineSegment<Point>;
25
25
  /**
26
26
  * Calculates the point two line segments with a definite start and end point
27
27
  * intersect at.
28
28
  */
29
29
  export declare const segmentsIntersectAt: <Point extends GlobalPoint | LocalPoint>(a: Readonly<LineSegment<Point>>, b: Readonly<LineSegment<Point>>) => Point | null;
30
- export declare const pointOnLineSegment: <Point extends GlobalPoint | LocalPoint>(point: Point, line: LineSegment<Point>, threshold?: number) => boolean;
31
- export declare const distanceToLineSegment: <Point extends GlobalPoint | LocalPoint>(point: Point, line: LineSegment<Point>) => number;
30
+ export declare const pointOnLineSegment: <Point extends LocalPoint | GlobalPoint>(point: Point, line: LineSegment<Point>, threshold?: number) => boolean;
31
+ export declare const distanceToLineSegment: <Point extends LocalPoint | GlobalPoint>(point: Point, line: LineSegment<Point>) => number;
32
32
  /**
33
33
  * Returns the intersection point of a segment and a line
34
34
  *