@excalidraw/math 0.18.0-c65b684e9 → 0.18.0-d1cff91

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 (253) hide show
  1. package/dist/dev/index.js +60 -63
  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/bounds.d.ts +10 -0
  6. package/dist/types/common/src/colors.d.ts +59 -39
  7. package/dist/types/common/src/constants.d.ts +37 -26
  8. package/dist/types/common/src/editorInterface.d.ts +34 -0
  9. package/dist/types/common/src/font-metadata.d.ts +1 -3
  10. package/dist/types/common/src/index.d.ts +3 -0
  11. package/dist/types/common/src/keys.d.ts +1 -1
  12. package/dist/types/common/src/utility-types.d.ts +0 -1
  13. package/dist/types/common/src/utils.d.ts +52 -38
  14. package/dist/types/element/src/Scene.d.ts +11 -5
  15. package/dist/types/element/src/arrows/focus.d.ts +27 -0
  16. package/dist/types/element/src/arrows/helpers.d.ts +5 -0
  17. package/dist/types/element/src/binding.d.ts +67 -48
  18. package/dist/types/element/src/bounds.d.ts +3 -11
  19. package/dist/types/element/src/collision.d.ts +7 -2
  20. package/dist/types/element/src/comparisons.d.ts +7 -7
  21. package/dist/types/element/src/delta.d.ts +6 -4
  22. package/dist/types/element/src/distribute.d.ts +2 -1
  23. package/dist/types/element/src/dragElements.d.ts +3 -3
  24. package/dist/types/element/src/duplicate.d.ts +3 -3
  25. package/dist/types/element/src/elbowArrow.d.ts +2 -0
  26. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  27. package/dist/types/element/src/frame.d.ts +5 -1
  28. package/dist/types/element/src/heading.d.ts +2 -1
  29. package/dist/types/element/src/image.d.ts +1 -11
  30. package/dist/types/element/src/index.d.ts +4 -3
  31. package/dist/types/element/src/linearElementEditor.d.ts +21 -20
  32. package/dist/types/element/src/mutateElement.d.ts +5 -1
  33. package/dist/types/element/src/newElement.d.ts +6 -6
  34. package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
  35. package/dist/types/element/src/renderElement.d.ts +4 -7
  36. package/dist/types/element/src/resizeElements.d.ts +10 -10
  37. package/dist/types/element/src/resizeTest.d.ts +6 -5
  38. package/dist/types/element/src/selection.d.ts +3 -7
  39. package/dist/types/element/src/shape.d.ts +8 -7
  40. package/dist/types/element/src/store.d.ts +6 -1
  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/{excalidraw/data → element/src}/transform.d.ts +3 -3
  44. package/dist/types/element/src/transformHandles.d.ts +8 -27
  45. package/dist/types/element/src/typeChecks.d.ts +4 -7
  46. package/dist/types/element/src/types.d.ts +8 -12
  47. package/dist/types/element/src/utils.d.ts +8 -3
  48. package/dist/types/element/src/zindex.d.ts +7 -1
  49. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +162 -202
  50. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
  51. package/dist/types/excalidraw/actions/actionBoundText.d.ts +85 -112
  52. package/dist/types/excalidraw/actions/actionCanvas.d.ts +509 -866
  53. package/dist/types/excalidraw/actions/actionClipboard.d.ts +119 -887
  54. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +41 -55
  55. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +136 -180
  56. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  57. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +3 -4
  58. package/dist/types/excalidraw/actions/actionElementLink.d.ts +51 -71
  59. package/dist/types/excalidraw/actions/actionElementLock.d.ts +84 -111
  60. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +57 -71
  61. package/dist/types/excalidraw/actions/actionExport.d.ts +181 -1141
  62. package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -394
  63. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
  64. package/dist/types/excalidraw/actions/actionFrame.d.ts +249 -340
  65. package/dist/types/excalidraw/actions/actionGroup.d.ts +88 -123
  66. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +134 -186
  67. package/dist/types/excalidraw/actions/actionLink.d.ts +57 -71
  68. package/dist/types/excalidraw/actions/actionMenu.d.ts +46 -432
  69. package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -359
  70. package/dist/types/excalidraw/actions/actionProperties.d.ts +144 -2501
  71. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +44 -62
  72. package/dist/types/excalidraw/actions/actionStyles.d.ts +41 -55
  73. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +3 -3
  74. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +172 -0
  75. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +57 -71
  76. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +172 -0
  77. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +57 -71
  78. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +45 -65
  79. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  80. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +56 -70
  81. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +57 -71
  82. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +57 -71
  83. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -9
  84. package/dist/types/excalidraw/actions/index.d.ts +4 -2
  85. package/dist/types/excalidraw/actions/register.d.ts +2 -2
  86. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  87. package/dist/types/excalidraw/actions/types.d.ts +4 -4
  88. package/dist/types/excalidraw/appState.d.ts +28 -21
  89. package/dist/types/excalidraw/charts/charts.bar.d.ts +2 -0
  90. package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
  91. package/dist/types/excalidraw/charts/charts.helpers.d.ts +32 -0
  92. package/dist/types/excalidraw/charts/charts.line.d.ts +2 -0
  93. package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
  94. package/dist/types/excalidraw/charts/charts.radar.d.ts +2 -0
  95. package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
  96. package/dist/types/excalidraw/charts/index.d.ts +7 -0
  97. package/dist/types/excalidraw/clipboard.d.ts +58 -19
  98. package/dist/types/excalidraw/components/Actions.d.ts +22 -5
  99. package/dist/types/excalidraw/components/App.d.ts +77 -68
  100. package/dist/types/excalidraw/components/Card.d.ts +1 -3
  101. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
  102. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +0 -1
  103. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
  104. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
  105. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
  106. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +0 -1
  107. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
  108. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  109. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +2 -4
  110. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
  111. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  112. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
  113. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
  114. package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
  115. package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
  116. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +1 -2
  117. package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -1
  118. package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
  119. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
  120. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
  121. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
  122. package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
  123. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  124. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  125. package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
  126. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  127. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
  128. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
  129. package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
  130. package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
  131. package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
  132. package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
  133. package/dist/types/excalidraw/components/Modal.d.ts +0 -1
  134. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
  135. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
  136. package/dist/types/excalidraw/components/Popover.d.ts +2 -1
  137. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +2 -1
  138. package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
  139. package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
  140. package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
  141. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +15 -21
  142. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
  143. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
  144. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
  145. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
  146. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
  147. package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
  148. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
  149. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
  150. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
  151. package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
  152. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  153. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
  154. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
  155. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
  156. package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
  157. package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
  158. package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
  159. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
  160. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
  161. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
  162. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +2 -2
  163. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
  164. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
  165. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
  166. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
  167. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +2 -3
  168. package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
  169. package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
  170. package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +9 -0
  171. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
  172. package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
  173. package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
  174. package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
  175. package/dist/types/excalidraw/components/TTDDialog/types.d.ts +95 -0
  176. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
  177. package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +24 -0
  178. package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
  179. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
  180. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  181. package/dist/types/excalidraw/components/Toast.d.ts +3 -3
  182. package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
  183. package/dist/types/excalidraw/components/Trans.d.ts +2 -2
  184. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +6 -3
  185. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +47 -35
  186. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -5
  187. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
  188. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
  189. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
  190. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
  191. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +0 -1
  192. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
  193. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
  194. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
  195. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
  196. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
  197. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
  198. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
  199. package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
  200. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
  201. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
  202. package/dist/types/excalidraw/components/icons.d.ts +32 -13
  203. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +4 -3
  204. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +19 -2
  205. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -35
  206. package/dist/types/excalidraw/components/shapes.d.ts +202 -1
  207. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +6 -6
  208. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +15 -16
  209. package/dist/types/excalidraw/data/blob.d.ts +326 -10
  210. package/dist/types/excalidraw/data/encode.d.ts +4 -4
  211. package/dist/types/excalidraw/data/encryption.d.ts +5 -5
  212. package/dist/types/excalidraw/data/filesystem.d.ts +2 -2
  213. package/dist/types/excalidraw/data/index.d.ts +3 -3
  214. package/dist/types/excalidraw/data/json.d.ts +160 -2
  215. package/dist/types/excalidraw/data/library.d.ts +24 -9
  216. package/dist/types/excalidraw/data/reconcile.d.ts +1 -0
  217. package/dist/types/excalidraw/data/restore.d.ts +27 -7
  218. package/dist/types/excalidraw/data/types.d.ts +4 -1
  219. package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
  220. package/dist/types/excalidraw/errors.d.ts +14 -0
  221. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  222. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
  223. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
  224. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
  225. package/dist/types/excalidraw/i18n.d.ts +2 -2
  226. package/dist/types/excalidraw/index.d.ts +8 -7
  227. package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
  228. package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
  229. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -14
  230. package/dist/types/excalidraw/scene/Renderer.d.ts +5 -2
  231. package/dist/types/excalidraw/scene/export.d.ts +2 -2
  232. package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
  233. package/dist/types/excalidraw/scene/types.d.ts +22 -5
  234. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  235. package/dist/types/excalidraw/snapping.d.ts +5 -5
  236. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
  237. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
  238. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
  239. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
  240. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
  241. package/dist/types/excalidraw/types.d.ts +57 -31
  242. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -2
  243. package/dist/types/math/src/point.d.ts +6 -1
  244. package/dist/types/math/src/polygon.d.ts +2 -2
  245. package/dist/types/math/src/range.d.ts +1 -3
  246. package/dist/types/math/src/segment.d.ts +4 -3
  247. package/dist/types/math/src/types.d.ts +25 -1
  248. package/dist/types/utils/src/bbox.d.ts +1 -1
  249. package/dist/types/utils/src/export.d.ts +5 -5
  250. package/dist/types/utils/src/shape.d.ts +6 -6
  251. package/dist/types/utils/src/withinBounds.d.ts +2 -2
  252. package/package.json +2 -2
  253. package/dist/types/excalidraw/charts.d.ts +0 -27
@@ -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;
@@ -1,10 +1,10 @@
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 } 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";
@@ -18,6 +18,7 @@ import type { Language } from "./i18n";
18
18
  import type { isOverScrollBars } from "./scene/scrollbars";
19
19
  import type React from "react";
20
20
  import type { JSX } from "react";
21
+ export type { App };
21
22
  export type SocketId = string & {
22
23
  _brand: "SocketId";
23
24
  };
@@ -125,16 +126,20 @@ export type StaticCanvasAppState = Readonly<_CommonCanvasAppState & {
125
126
  frameRendering: AppState["frameRendering"];
126
127
  currentHoveredFontFamily: AppState["currentHoveredFontFamily"];
127
128
  hoveredElementIds: AppState["hoveredElementIds"];
129
+ suggestedBinding: AppState["suggestedBinding"];
128
130
  croppingElementId: AppState["croppingElementId"];
129
131
  }>;
130
132
  export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
133
+ activeTool: AppState["activeTool"];
131
134
  activeEmbeddable: AppState["activeEmbeddable"];
132
135
  selectionElement: AppState["selectionElement"];
133
136
  selectedGroupIds: AppState["selectedGroupIds"];
134
137
  selectedLinearElement: AppState["selectedLinearElement"];
135
138
  multiElement: AppState["multiElement"];
139
+ newElement: AppState["newElement"];
136
140
  isBindingEnabled: AppState["isBindingEnabled"];
137
- suggestedBindings: AppState["suggestedBindings"];
141
+ isMidpointSnappingEnabled: AppState["isMidpointSnappingEnabled"];
142
+ suggestedBinding: AppState["suggestedBinding"];
138
143
  isRotating: AppState["isRotating"];
139
144
  elementsToHighlight: AppState["elementsToHighlight"];
140
145
  collaborators: AppState["collaborators"];
@@ -145,6 +150,11 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
145
150
  croppingElementId: AppState["croppingElementId"];
146
151
  searchMatches: AppState["searchMatches"];
147
152
  activeLockedId: AppState["activeLockedId"];
153
+ hoveredElementIds: AppState["hoveredElementIds"];
154
+ frameRendering: AppState["frameRendering"];
155
+ shouldCacheIgnoreZoom: AppState["shouldCacheIgnoreZoom"];
156
+ exportScale: AppState["exportScale"];
157
+ currentItemArrowType: AppState["currentItemArrowType"];
148
158
  }>;
149
159
  export type ObservedAppState = ObservedStandaloneAppState & ObservedElementsAppState;
150
160
  export type ObservedStandaloneAppState = {
@@ -155,8 +165,10 @@ export type ObservedElementsAppState = {
155
165
  editingGroupId: AppState["editingGroupId"];
156
166
  selectedElementIds: AppState["selectedElementIds"];
157
167
  selectedGroupIds: AppState["selectedGroupIds"];
158
- selectedLinearElementId: LinearElementEditor["elementId"] | null;
159
- selectedLinearElementIsEditing: boolean | null;
168
+ selectedLinearElement: {
169
+ elementId: LinearElementEditor["elementId"];
170
+ isEditing: boolean;
171
+ } | null;
160
172
  croppingElementId: AppState["croppingElementId"];
161
173
  lockedMultiSelections: AppState["lockedMultiSelections"];
162
174
  activeLockedId: AppState["activeLockedId"];
@@ -194,9 +206,20 @@ export interface AppState {
194
206
  * - set on pointer down, updated during pointer move
195
207
  */
196
208
  selectionElement: NonDeletedExcalidrawElement | null;
209
+ /**
210
+ * tracking current arrow binding editor state (takes into account
211
+ * `bindingPreference` and keyboard modifiers (ctrl/alt)
212
+ */
197
213
  isBindingEnabled: boolean;
214
+ /** user arrow binding preference */
215
+ bindingPreference: "enabled" | "disabled";
216
+ /** user preference whether arrow snap to midpoints while binding */
217
+ isMidpointSnappingEnabled: boolean;
198
218
  startBoundElement: NonDeleted<ExcalidrawBindableElement> | null;
199
- suggestedBindings: SuggestedBinding[];
219
+ suggestedBinding: {
220
+ element: NonDeleted<ExcalidrawBindableElement>;
221
+ midPoint?: GlobalPoint;
222
+ } | null;
200
223
  frameToHighlight: NonDeleted<ExcalidrawFrameLikeElement> | null;
201
224
  frameRendering: {
202
225
  enabled: boolean;
@@ -219,6 +242,10 @@ export interface AppState {
219
242
  locked: boolean;
220
243
  fromSelection: boolean;
221
244
  } & ActiveTool;
245
+ preferredSelectionTool: {
246
+ type: "selection" | "lasso";
247
+ initialized: boolean;
248
+ };
222
249
  penMode: boolean;
223
250
  penDetected: boolean;
224
251
  exportBackground: boolean;
@@ -249,8 +276,8 @@ export interface AppState {
249
276
  isResizing: boolean;
250
277
  isRotating: boolean;
251
278
  zoom: Zoom;
252
- openMenu: "canvas" | "shape" | null;
253
- openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | null;
279
+ openMenu: "canvas" | null;
280
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
254
281
  openSidebar: {
255
282
  name: SidebarName;
256
283
  tab?: SidebarTabName;
@@ -262,9 +289,15 @@ export interface AppState {
262
289
  tab: "text-to-diagram" | "mermaid";
263
290
  } | {
264
291
  name: "commandPalette";
292
+ } | {
293
+ name: "settings";
265
294
  } | {
266
295
  name: "elementLinkSelector";
267
296
  sourceElementId: ExcalidrawElement["id"];
297
+ } | {
298
+ name: "charts";
299
+ data: Spreadsheet;
300
+ rawText: string;
268
301
  };
269
302
  /**
270
303
  * Reflects user preference for whether the default sidebar should be docked.
@@ -316,14 +349,6 @@ export interface AppState {
316
349
  /** bitmap. Use `STATS_PANELS` bit values */
317
350
  panels: number;
318
351
  };
319
- currentChartType: ChartType;
320
- pasteDialog: {
321
- shown: false;
322
- data: null;
323
- } | {
324
- shown: true;
325
- data: Spreadsheet;
326
- };
327
352
  showHyperlinkPopup: false | "info" | "editor";
328
353
  selectedLinearElement: LinearElementEditor | null;
329
354
  snapLines: readonly SnapLine[];
@@ -349,6 +374,7 @@ export interface AppState {
349
374
  lockedMultiSelections: {
350
375
  [groupId: string]: true;
351
376
  };
377
+ bindMode: BindMode;
352
378
  }
353
379
  export type SearchMatch = {
354
380
  id: string;
@@ -361,7 +387,7 @@ export type SearchMatch = {
361
387
  showOnCanvas: boolean;
362
388
  }[];
363
389
  };
364
- export type UIAppState = Omit<AppState, "suggestedBindings" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
390
+ export type UIAppState = Omit<AppState, "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
365
391
  export type NormalizedZoomValue = number & {
366
392
  _brand: "normalizedZoom";
367
393
  };
@@ -439,6 +465,7 @@ export interface ExcalidrawProps {
439
465
  onDuplicate?: (nextElements: readonly ExcalidrawElement[],
440
466
  /** excludes the duplicated elements */
441
467
  prevElements: readonly ExcalidrawElement[]) => ExcalidrawElement[] | void;
468
+ renderTopLeftUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
442
469
  renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
443
470
  langCode?: Language["code"];
444
471
  viewModeEnabled?: boolean;
@@ -496,6 +523,11 @@ export type UIOptions = Partial<{
496
523
  tools: {
497
524
  image: boolean;
498
525
  };
526
+ /**
527
+ * Optionally control the editor form factor and desktop UI mode from the host app.
528
+ * If not provided, we will take care of it internally.
529
+ */
530
+ getFormFactor?: (editorWidth: number, editorHeight: number) => EditorInterface["formFactor"];
499
531
  /** @deprecated does nothing. Will be removed in 0.15 */
500
532
  welcomeScreen?: boolean;
501
533
  }>;
@@ -526,7 +558,7 @@ export type AppClassProperties = {
526
558
  mimeType: ValueOf<typeof IMAGE_MIME_TYPES>;
527
559
  }>;
528
560
  files: BinaryFiles;
529
- device: App["device"];
561
+ editorInterface: App["editorInterface"];
530
562
  scene: App["scene"];
531
563
  syncActionResult: App["syncActionResult"];
532
564
  fonts: App["fonts"];
@@ -555,6 +587,9 @@ export type AppClassProperties = {
555
587
  excalidrawContainerValue: App["excalidrawContainerValue"];
556
588
  onPointerUpEmitter: App["onPointerUpEmitter"];
557
589
  updateEditorAtom: App["updateEditorAtom"];
590
+ onPointerDownEmitter: App["onPointerDownEmitter"];
591
+ lastPointerMoveCoords: App["lastPointerMoveCoords"];
592
+ bindModeHandler: App["bindModeHandler"];
558
593
  };
559
594
  export type PointerDownState = Readonly<{
560
595
  origin: Readonly<{
@@ -602,6 +637,7 @@ export type PointerDownState = Readonly<{
602
637
  x: number;
603
638
  y: number;
604
639
  };
640
+ blockDragging: boolean;
605
641
  };
606
642
  eventListeners: {
607
643
  onMove: null | ReturnType<typeof throttleRAF>;
@@ -616,6 +652,7 @@ export type PointerDownState = Readonly<{
616
652
  export type UnsubscribeCallback = () => void;
617
653
  export interface ExcalidrawImperativeAPI {
618
654
  updateScene: InstanceType<typeof App>["updateScene"];
655
+ applyDeltas: InstanceType<typeof App>["applyDeltas"];
619
656
  mutateElement: InstanceType<typeof App>["mutateElement"];
620
657
  updateLibrary: InstanceType<typeof Library>["updateLibrary"];
621
658
  resetScene: InstanceType<typeof App>["resetScene"];
@@ -638,6 +675,7 @@ export interface ExcalidrawImperativeAPI {
638
675
  setCursor: InstanceType<typeof App>["setCursor"];
639
676
  resetCursor: InstanceType<typeof App>["resetCursor"];
640
677
  toggleSidebar: InstanceType<typeof App>["toggleSidebar"];
678
+ getEditorInterface: () => EditorInterface;
641
679
  /**
642
680
  * Disables rendering of frames (including element clipping), but currently
643
681
  * the frames are still interactive in edit mode. As such, this API should be
@@ -651,17 +689,6 @@ export interface ExcalidrawImperativeAPI {
651
689
  onScrollChange: (callback: (scrollX: number, scrollY: number, zoom: Zoom) => void) => UnsubscribeCallback;
652
690
  onUserFollow: (callback: (payload: OnUserFollowedPayload) => void) => UnsubscribeCallback;
653
691
  }
654
- export type Device = Readonly<{
655
- viewport: {
656
- isMobile: boolean;
657
- isLandscape: boolean;
658
- };
659
- editor: {
660
- isMobile: boolean;
661
- canFitSidebar: boolean;
662
- };
663
- isTouchScreen: boolean;
664
- }>;
665
692
  export type FrameNameBounds = {
666
693
  x: number;
667
694
  y: number;
@@ -701,4 +728,3 @@ export type Offsets = Partial<{
701
728
  bottom: number;
702
729
  left: number;
703
730
  }>;
704
- export {};
@@ -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,6 @@ 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
23
  }) => SubmitHandler;
24
24
  export {};
@@ -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
  *
@@ -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
  *
@@ -37,3 +37,4 @@ export declare const distanceToLineSegment: <Point extends GlobalPoint | LocalPo
37
37
  * @returns
38
38
  */
39
39
  export declare function lineSegmentIntersectionPoints<Point extends GlobalPoint | LocalPoint>(l: LineSegment<Point>, s: LineSegment<Point>, threshold?: number): Point | null;
40
+ export declare function lineSegmentsDistance<Point extends GlobalPoint | LocalPoint>(s1: LineSegment<Point>, s2: LineSegment<Point>): number;
@@ -19,12 +19,24 @@ export type InclusiveRange = [number, number] & {
19
19
  _brand: "excalimath_degree";
20
20
  };
21
21
  /**
22
- * Represents a 2D position in world or canvas space. A
22
+ * Represents a 2D position in world/canvas/scene space. A
23
23
  * global coordinate.
24
24
  */
25
25
  export type GlobalPoint = [x: number, y: number] & {
26
26
  _brand: "excalimath__globalpoint";
27
27
  };
28
+ /**
29
+ * Represents a 2D position in world/canvas/scene space. A
30
+ * global coordinate.
31
+ *
32
+ * TODO remove this once we migrate the codebase to use Point tuples everywhere
33
+ */
34
+ export type GlobalCoord = {
35
+ x: number;
36
+ y: number;
37
+ } & {
38
+ _brand: "excalimath__globalcoord";
39
+ };
28
40
  /**
29
41
  * Represents a 2D position in whatever local space it's
30
42
  * needed. A local coordinate.
@@ -32,6 +44,18 @@ export type GlobalPoint = [x: number, y: number] & {
32
44
  export type LocalPoint = [x: number, y: number] & {
33
45
  _brand: "excalimath__localpoint";
34
46
  };
47
+ /**
48
+ * Represents a 2D position in whatever local space it's needed.
49
+ * A local coordinate.
50
+ *
51
+ * TODO remove this once we migrate the codebase to use Point tuples everywhere
52
+ */
53
+ export type LocalCoord = {
54
+ x: number;
55
+ y: number;
56
+ } & {
57
+ _brand: "excalimath__localcoord";
58
+ };
35
59
  /**
36
60
  * A line is an infinitely long object with no width, depth, or curvature.
37
61
  */
@@ -1,5 +1,5 @@
1
1
  import { type GlobalPoint, type LocalPoint } from "@excalidraw/math";
2
- import type { Bounds } from "@excalidraw/element";
2
+ import type { Bounds } from "@excalidraw/common";
3
3
  export type LineSegment<P extends LocalPoint | GlobalPoint> = [P, P];
4
4
  export declare function getBBox<P extends LocalPoint | GlobalPoint>(line: LineSegment<P>): Bounds;
5
5
  export declare function doBBoxesIntersect(a: Bounds, b: Bounds): boolean;
@@ -15,7 +15,7 @@ type ExportOpts = {
15
15
  };
16
16
  };
17
17
  export declare const exportToCanvas: ({ elements, appState, files, maxWidthOrHeight, getDimensions, exportPadding, exportingFrame, }: ExportOpts & {
18
- exportPadding?: number | undefined;
18
+ exportPadding?: number;
19
19
  }) => Promise<HTMLCanvasElement>;
20
20
  export declare const exportToBlob: (opts: ExportOpts & {
21
21
  mimeType?: string;
@@ -23,10 +23,10 @@ export declare const exportToBlob: (opts: ExportOpts & {
23
23
  exportPadding?: number;
24
24
  }) => Promise<Blob>;
25
25
  export declare const exportToSvg: ({ elements, appState, files, exportPadding, renderEmbeddables, exportingFrame, skipInliningFonts, reuseImages, }: Omit<ExportOpts, "getDimensions"> & {
26
- exportPadding?: number | undefined;
27
- renderEmbeddables?: boolean | undefined;
28
- skipInliningFonts?: true | undefined;
29
- reuseImages?: boolean | undefined;
26
+ exportPadding?: number;
27
+ renderEmbeddables?: boolean;
28
+ skipInliningFonts?: true;
29
+ reuseImages?: boolean;
30
30
  }) => Promise<SVGSVGElement>;
31
31
  export declare const exportToClipboard: (opts: ExportOpts & {
32
32
  mimeType?: string;
@@ -46,13 +46,13 @@ export declare const getClosedCurveShape: <Point extends GlobalPoint | LocalPoin
46
46
  * @param gap Optional value to inflate the shape before testing
47
47
  * @returns An array of intersections
48
48
  */
49
- export declare const segmentIntersectRectangleElement: <Point extends GlobalPoint | LocalPoint>(element: ExcalidrawBindableElement, segment: LineSegment<Point>, gap?: number) => Point[];
50
- export declare const pointOnEllipse: <Point extends GlobalPoint | LocalPoint>(point: Point, ellipse: Ellipse<Point>, threshold?: number) => boolean;
51
- export declare const pointInEllipse: <Point extends GlobalPoint | LocalPoint>(p: Point, ellipse: Ellipse<Point>) => boolean;
52
- export declare const ellipseAxes: <Point extends GlobalPoint | LocalPoint>(ellipse: Ellipse<Point>) => {
49
+ export declare const segmentIntersectRectangleElement: <Point extends LocalPoint | GlobalPoint>(element: ExcalidrawBindableElement, segment: LineSegment<Point>, gap?: number) => Point[];
50
+ export declare const pointOnEllipse: <Point extends LocalPoint | GlobalPoint>(point: Point, ellipse: Ellipse<Point>, threshold?: number) => boolean;
51
+ export declare const pointInEllipse: <Point extends LocalPoint | GlobalPoint>(p: Point, ellipse: Ellipse<Point>) => boolean;
52
+ export declare const ellipseAxes: <Point extends LocalPoint | GlobalPoint>(ellipse: Ellipse<Point>) => {
53
53
  majorAxis: number;
54
54
  minorAxis: number;
55
55
  };
56
- export declare const ellipseFocusToCenter: <Point extends GlobalPoint | LocalPoint>(ellipse: Ellipse<Point>) => number;
57
- export declare const ellipseExtremes: <Point extends GlobalPoint | LocalPoint>(ellipse: Ellipse<Point>) => import("@excalidraw/math").Vector[];
56
+ export declare const ellipseFocusToCenter: <Point extends LocalPoint | GlobalPoint>(ellipse: Ellipse<Point>) => number;
57
+ export declare const ellipseExtremes: <Point extends LocalPoint | GlobalPoint>(ellipse: Ellipse<Point>) => import("@excalidraw/math").Vector[];
58
58
  export {};
@@ -1,4 +1,4 @@
1
- import type { Bounds } from "@excalidraw/element";
1
+ import { type Bounds } from "@excalidraw/common";
2
2
  import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
3
3
  type Element = NonDeletedExcalidrawElement;
4
4
  type Elements = readonly NonDeletedExcalidrawElement[];
@@ -8,7 +8,7 @@ export declare const elementsOverlappingBBox: ({ elements, bounds, type, errorMa
8
8
  elements: Elements;
9
9
  bounds: Bounds | ExcalidrawElement;
10
10
  /** safety offset. Defaults to 0. */
11
- errorMargin?: number | undefined;
11
+ errorMargin?: number;
12
12
  /**
13
13
  * - overlap: elements overlapping or inside bounds
14
14
  * - contain: elements inside bounds or bounds inside elements
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@excalidraw/math",
3
- "version": "0.18.0-c65b684e9",
3
+ "version": "0.18.0-d1cff91",
4
4
  "type": "module",
5
5
  "types": "./dist/types/math/src/index.d.ts",
6
6
  "main": "./dist/prod/index.js",
@@ -61,6 +61,6 @@
61
61
  "build:esm": "rimraf dist && node ../../scripts/buildBase.js && yarn gen:types"
62
62
  },
63
63
  "dependencies": {
64
- "@excalidraw/common": "0.18.0-c65b684e9"
64
+ "@excalidraw/common": "0.18.0-d1cff91"
65
65
  }
66
66
  }
@@ -1,27 +0,0 @@
1
- import type { NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
- export type ChartElements = readonly NonDeletedExcalidrawElement[];
3
- export interface Spreadsheet {
4
- title: string | null;
5
- labels: string[] | null;
6
- values: number[];
7
- }
8
- export declare const NOT_SPREADSHEET = "NOT_SPREADSHEET";
9
- export declare const VALID_SPREADSHEET = "VALID_SPREADSHEET";
10
- type ParseSpreadsheetResult = {
11
- type: typeof NOT_SPREADSHEET;
12
- reason: string;
13
- } | {
14
- type: typeof VALID_SPREADSHEET;
15
- spreadsheet: Spreadsheet;
16
- };
17
- /**
18
- * @private exported for testing
19
- */
20
- export declare const tryParseNumber: (s: string) => number | null;
21
- /**
22
- * @private exported for testing
23
- */
24
- export declare const tryParseCells: (cells: string[][]) => ParseSpreadsheetResult;
25
- export declare const tryParseSpreadsheet: (text: string) => ParseSpreadsheetResult;
26
- export declare const renderSpreadsheet: (chartType: string, spreadsheet: Spreadsheet, x: number, y: number) => ChartElements;
27
- export {};