@excalidraw/math 0.18.0-d2463f87d → 0.18.0-d255747

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 (280) hide show
  1. package/dist/dev/index.js +92 -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 +38 -26
  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 -41
  15. package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
  16. package/dist/types/element/src/Scene.d.ts +16 -8
  17. package/dist/types/element/src/align.d.ts +2 -1
  18. package/dist/types/element/src/arrowheads.d.ts +3 -0
  19. package/dist/types/element/src/arrows/focus.d.ts +27 -0
  20. package/dist/types/element/src/arrows/helpers.d.ts +5 -0
  21. package/dist/types/element/src/binding.d.ts +67 -48
  22. package/dist/types/element/src/bounds.d.ts +8 -14
  23. package/dist/types/element/src/collision.d.ts +7 -2
  24. package/dist/types/element/src/comparisons.d.ts +7 -7
  25. package/dist/types/element/src/delta.d.ts +16 -4
  26. package/dist/types/element/src/distribute.d.ts +3 -1
  27. package/dist/types/element/src/dragElements.d.ts +3 -3
  28. package/dist/types/element/src/duplicate.d.ts +4 -3
  29. package/dist/types/element/src/elbowArrow.d.ts +2 -0
  30. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  31. package/dist/types/element/src/frame.d.ts +12 -7
  32. package/dist/types/element/src/groups.d.ts +1 -0
  33. package/dist/types/element/src/heading.d.ts +2 -1
  34. package/dist/types/element/src/image.d.ts +1 -11
  35. package/dist/types/element/src/index.d.ts +5 -3
  36. package/dist/types/element/src/linearElementEditor.d.ts +25 -23
  37. package/dist/types/element/src/mutateElement.d.ts +5 -1
  38. package/dist/types/element/src/newElement.d.ts +6 -6
  39. package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
  40. package/dist/types/element/src/renderElement.d.ts +4 -7
  41. package/dist/types/element/src/resizeElements.d.ts +10 -10
  42. package/dist/types/element/src/resizeTest.d.ts +6 -5
  43. package/dist/types/element/src/selection.d.ts +10 -10
  44. package/dist/types/element/src/shape.d.ts +9 -8
  45. package/dist/types/element/src/store.d.ts +8 -2
  46. package/dist/types/element/src/textElement.d.ts +2 -2
  47. package/dist/types/element/src/textMeasurements.d.ts +1 -3
  48. package/dist/types/element/src/textWrapping.d.ts +26 -0
  49. package/dist/types/{excalidraw/data → element/src}/transform.d.ts +3 -3
  50. package/dist/types/element/src/transformHandles.d.ts +8 -27
  51. package/dist/types/element/src/typeChecks.d.ts +5 -7
  52. package/dist/types/element/src/types.d.ts +12 -13
  53. package/dist/types/element/src/utils.d.ts +9 -4
  54. package/dist/types/element/src/zindex.d.ts +7 -1
  55. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +167 -210
  56. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
  57. package/dist/types/excalidraw/actions/actionBoundText.d.ts +94 -123
  58. package/dist/types/excalidraw/actions/actionCanvas.d.ts +557 -914
  59. package/dist/types/excalidraw/actions/actionClipboard.d.ts +123 -896
  60. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +45 -60
  61. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +151 -198
  62. package/dist/types/excalidraw/actions/actionDeselect.d.ts +159 -0
  63. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  64. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +3 -4
  65. package/dist/types/excalidraw/actions/actionElementLink.d.ts +53 -74
  66. package/dist/types/excalidraw/actions/actionElementLock.d.ts +92 -121
  67. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +59 -74
  68. package/dist/types/excalidraw/actions/actionExport.d.ts +173 -1414
  69. package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -395
  70. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
  71. package/dist/types/excalidraw/actions/actionFrame.d.ts +265 -360
  72. package/dist/types/excalidraw/actions/actionGroup.d.ts +97 -134
  73. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +162 -184
  74. package/dist/types/excalidraw/actions/actionLink.d.ts +59 -74
  75. package/dist/types/excalidraw/actions/actionMenu.d.ts +48 -437
  76. package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -361
  77. package/dist/types/excalidraw/actions/actionProperties.d.ts +152 -2524
  78. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +48 -67
  79. package/dist/types/excalidraw/actions/actionStyles.d.ts +45 -59
  80. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +4 -4
  81. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +172 -0
  82. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +59 -74
  83. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +172 -0
  84. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +59 -74
  85. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +47 -68
  86. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  87. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +58 -73
  88. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +59 -74
  89. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +59 -74
  90. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -9
  91. package/dist/types/excalidraw/actions/index.d.ts +5 -2
  92. package/dist/types/excalidraw/actions/register.d.ts +2 -2
  93. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  94. package/dist/types/excalidraw/actions/types.d.ts +4 -4
  95. package/dist/types/excalidraw/appState.d.ts +29 -21
  96. package/dist/types/excalidraw/charts/charts.bar.d.ts +2 -0
  97. package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
  98. package/dist/types/excalidraw/charts/charts.helpers.d.ts +32 -0
  99. package/dist/types/excalidraw/charts/charts.line.d.ts +2 -0
  100. package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
  101. package/dist/types/excalidraw/charts/charts.radar.d.ts +2 -0
  102. package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
  103. package/dist/types/excalidraw/charts/index.d.ts +7 -0
  104. package/dist/types/excalidraw/clipboard.d.ts +57 -19
  105. package/dist/types/excalidraw/components/Actions.d.ts +21 -8
  106. package/dist/types/excalidraw/components/App.d.ts +127 -75
  107. package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
  108. package/dist/types/excalidraw/components/Card.d.ts +1 -3
  109. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
  110. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +0 -1
  111. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
  112. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
  113. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
  114. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +0 -1
  115. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
  116. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  117. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +2 -4
  118. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
  119. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  120. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
  121. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
  122. package/dist/types/excalidraw/components/Ellipsify.d.ts +3 -0
  123. package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
  124. package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -1
  125. package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
  126. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
  127. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
  128. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
  129. package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
  130. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  131. package/dist/types/excalidraw/components/IconPicker.d.ts +14 -9
  132. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  133. package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
  134. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  135. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
  136. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
  137. package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
  138. package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
  139. package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
  140. package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
  141. package/dist/types/excalidraw/components/Modal.d.ts +0 -1
  142. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
  143. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
  144. package/dist/types/excalidraw/components/Popover.d.ts +2 -1
  145. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +2 -1
  146. package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
  147. package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
  148. package/dist/types/excalidraw/components/Range.d.ts +10 -4
  149. package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
  150. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +15 -21
  151. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
  152. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
  153. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
  154. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
  155. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
  156. package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
  157. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
  158. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
  159. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
  160. package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
  161. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  162. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
  163. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
  164. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
  165. package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
  166. package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
  167. package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
  168. package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
  169. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
  170. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
  171. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
  172. package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
  173. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +5 -2
  174. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
  175. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
  176. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
  177. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
  178. package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
  179. package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
  180. package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +9 -0
  181. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
  182. package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
  183. package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
  184. package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
  185. package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
  186. package/dist/types/excalidraw/components/TTDDialog/types.d.ts +95 -0
  187. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
  188. package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
  189. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
  190. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +10 -0
  191. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
  192. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  193. package/dist/types/excalidraw/components/Toast.d.ts +11 -7
  194. package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
  195. package/dist/types/excalidraw/components/Trans.d.ts +2 -2
  196. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +8 -4
  197. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +1 -0
  198. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
  199. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +47 -35
  200. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -5
  201. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
  202. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
  203. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
  204. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
  205. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -2
  206. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
  207. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
  208. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
  209. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
  210. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
  211. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
  212. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
  213. package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
  214. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
  215. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
  216. package/dist/types/excalidraw/components/icons.d.ts +49 -21
  217. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +20 -2
  218. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -35
  219. package/dist/types/excalidraw/components/shapes.d.ts +202 -1
  220. package/dist/types/excalidraw/data/blob.d.ts +327 -12
  221. package/dist/types/excalidraw/data/encode.d.ts +4 -4
  222. package/dist/types/excalidraw/data/encryption.d.ts +5 -5
  223. package/dist/types/excalidraw/data/filesystem.d.ts +5 -7
  224. package/dist/types/excalidraw/data/index.d.ts +4 -5
  225. package/dist/types/excalidraw/data/json.d.ts +170 -4
  226. package/dist/types/excalidraw/data/library.d.ts +24 -9
  227. package/dist/types/excalidraw/data/resave.d.ts +7 -2
  228. package/dist/types/excalidraw/data/restore.d.ts +27 -7
  229. package/dist/types/excalidraw/data/types.d.ts +4 -1
  230. package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
  231. package/dist/types/excalidraw/errors.d.ts +14 -0
  232. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  233. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
  234. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
  235. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
  236. package/dist/types/excalidraw/i18n.d.ts +2 -2
  237. package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
  238. package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
  239. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -14
  240. package/dist/types/excalidraw/renderer/staticScene.d.ts +4 -1
  241. package/dist/types/excalidraw/scene/Renderer.d.ts +427 -18
  242. package/dist/types/excalidraw/scene/export.d.ts +2 -2
  243. package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
  244. package/dist/types/excalidraw/scene/types.d.ts +22 -5
  245. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  246. package/dist/types/excalidraw/snapping.d.ts +5 -5
  247. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
  248. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
  249. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
  250. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
  251. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
  252. package/dist/types/excalidraw/textAutoResizeHandle.d.ts +15 -0
  253. package/dist/types/excalidraw/types.d.ts +134 -39
  254. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +7 -3
  255. package/dist/types/fractional-indexing/src/index.d.ts +29 -0
  256. package/dist/types/math/src/constants.d.ts +0 -1
  257. package/dist/types/math/src/curve.d.ts +4 -1
  258. package/dist/types/math/src/point.d.ts +7 -2
  259. package/dist/types/math/src/polygon.d.ts +2 -2
  260. package/dist/types/math/src/range.d.ts +1 -3
  261. package/dist/types/math/src/segment.d.ts +4 -3
  262. package/dist/types/math/src/types.d.ts +25 -1
  263. package/dist/types/utils/src/bbox.d.ts +1 -1
  264. package/dist/types/utils/src/export.d.ts +5 -5
  265. package/dist/types/utils/src/shape.d.ts +6 -6
  266. package/dist/types/utils/src/withinBounds.d.ts +2 -2
  267. package/package.json +2 -2
  268. package/dist/types/excalidraw/charts.d.ts +0 -27
  269. package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
  270. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -16
  271. package/dist/types/excalidraw/components/InitializeApp.d.ts +0 -10
  272. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +0 -9
  273. package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +0 -8
  274. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -10
  275. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -58
  276. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +0 -19
  277. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +0 -85
  278. package/dist/types/excalidraw/data/reconcile.d.ts +0 -6
  279. package/dist/types/excalidraw/index.d.ts +0 -46
  280. package/dist/types/excalidraw/polyfill.d.ts +0 -2
@@ -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,17 +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
- editingLinearElement: AppState["editingLinearElement"];
133
134
  selectionElement: AppState["selectionElement"];
134
135
  selectedGroupIds: AppState["selectedGroupIds"];
135
136
  selectedLinearElement: AppState["selectedLinearElement"];
136
137
  multiElement: AppState["multiElement"];
138
+ newElement: AppState["newElement"];
137
139
  isBindingEnabled: AppState["isBindingEnabled"];
138
- suggestedBindings: AppState["suggestedBindings"];
140
+ isMidpointSnappingEnabled: AppState["isMidpointSnappingEnabled"];
141
+ suggestedBinding: AppState["suggestedBinding"];
139
142
  isRotating: AppState["isRotating"];
140
143
  elementsToHighlight: AppState["elementsToHighlight"];
141
144
  collaborators: AppState["collaborators"];
@@ -146,6 +149,11 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
146
149
  croppingElementId: AppState["croppingElementId"];
147
150
  searchMatches: AppState["searchMatches"];
148
151
  activeLockedId: AppState["activeLockedId"];
152
+ hoveredElementIds: AppState["hoveredElementIds"];
153
+ frameRendering: AppState["frameRendering"];
154
+ shouldCacheIgnoreZoom: AppState["shouldCacheIgnoreZoom"];
155
+ exportScale: AppState["exportScale"];
156
+ currentItemArrowType: AppState["currentItemArrowType"];
149
157
  }>;
150
158
  export type ObservedAppState = ObservedStandaloneAppState & ObservedElementsAppState;
151
159
  export type ObservedStandaloneAppState = {
@@ -156,12 +164,15 @@ export type ObservedElementsAppState = {
156
164
  editingGroupId: AppState["editingGroupId"];
157
165
  selectedElementIds: AppState["selectedElementIds"];
158
166
  selectedGroupIds: AppState["selectedGroupIds"];
159
- editingLinearElementId: LinearElementEditor["elementId"] | null;
160
- selectedLinearElementId: LinearElementEditor["elementId"] | null;
167
+ selectedLinearElement: {
168
+ elementId: LinearElementEditor["elementId"];
169
+ isEditing: boolean;
170
+ } | null;
161
171
  croppingElementId: AppState["croppingElementId"];
162
172
  lockedMultiSelections: AppState["lockedMultiSelections"];
163
173
  activeLockedId: AppState["activeLockedId"];
164
174
  };
175
+ export type BoxSelectionMode = "contain" | "overlap";
165
176
  export interface AppState {
166
177
  contextMenu: {
167
178
  items: ContextMenuItems;
@@ -195,9 +206,25 @@ export interface AppState {
195
206
  * - set on pointer down, updated during pointer move
196
207
  */
197
208
  selectionElement: NonDeletedExcalidrawElement | null;
209
+ /**
210
+ * tracking current arrow binding editor state (takes into account
211
+ * `bindingPreference` and keyboard modifiers (ctrl/alt)
212
+ */
198
213
  isBindingEnabled: boolean;
199
- startBoundElement: NonDeleted<ExcalidrawBindableElement> | null;
200
- suggestedBindings: SuggestedBinding[];
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;
220
+ /**
221
+ * The bindable element the UI highlights for the user when an arrow is
222
+ * dragged or otherwise its endpoint being close to said element.
223
+ */
224
+ suggestedBinding: {
225
+ element: NonDeleted<ExcalidrawBindableElement>;
226
+ midPoint?: GlobalPoint;
227
+ } | null;
201
228
  frameToHighlight: NonDeleted<ExcalidrawFrameLikeElement> | null;
202
229
  frameRendering: {
203
230
  enabled: boolean;
@@ -210,8 +237,7 @@ export interface AppState {
210
237
  /**
211
238
  * set when a new text is created or when an existing text is being edited
212
239
  */
213
- editingTextElement: NonDeletedExcalidrawElement | null;
214
- editingLinearElement: LinearElementEditor | null;
240
+ editingTextElement: ExcalidrawTextElement | null;
215
241
  activeTool: {
216
242
  /**
217
243
  * indicates a previous tool we should revert back to if we deselect the
@@ -221,6 +247,10 @@ export interface AppState {
221
247
  locked: boolean;
222
248
  fromSelection: boolean;
223
249
  } & ActiveTool;
250
+ preferredSelectionTool: {
251
+ type: "selection" | "lasso";
252
+ initialized: boolean;
253
+ };
224
254
  penMode: boolean;
225
255
  penDetected: boolean;
226
256
  exportBackground: boolean;
@@ -251,8 +281,8 @@ export interface AppState {
251
281
  isResizing: boolean;
252
282
  isRotating: boolean;
253
283
  zoom: Zoom;
254
- openMenu: "canvas" | "shape" | null;
255
- openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | null;
284
+ openMenu: "canvas" | null;
285
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
256
286
  openSidebar: {
257
287
  name: SidebarName;
258
288
  tab?: SidebarTabName;
@@ -264,9 +294,15 @@ export interface AppState {
264
294
  tab: "text-to-diagram" | "mermaid";
265
295
  } | {
266
296
  name: "commandPalette";
297
+ } | {
298
+ name: "settings";
267
299
  } | {
268
300
  name: "elementLinkSelector";
269
301
  sourceElementId: ExcalidrawElement["id"];
302
+ } | {
303
+ name: "charts";
304
+ data: Spreadsheet;
305
+ rawText: string;
270
306
  };
271
307
  /**
272
308
  * Reflects user preference for whether the default sidebar should be docked.
@@ -289,7 +325,7 @@ export interface AppState {
289
325
  selectedElementsAreBeingDragged: boolean;
290
326
  shouldCacheIgnoreZoom: boolean;
291
327
  toast: {
292
- message: string;
328
+ message: React.ReactNode;
293
329
  closable?: boolean;
294
330
  duration?: number;
295
331
  } | null;
@@ -311,21 +347,13 @@ export interface AppState {
311
347
  height: number;
312
348
  offsetTop: number;
313
349
  offsetLeft: number;
314
- fileHandle: FileSystemHandle | null;
350
+ fileHandle: FileSystemFileHandle | null;
315
351
  collaborators: Map<SocketId, Collaborator>;
316
352
  stats: {
317
353
  open: boolean;
318
354
  /** bitmap. Use `STATS_PANELS` bit values */
319
355
  panels: number;
320
356
  };
321
- currentChartType: ChartType;
322
- pasteDialog: {
323
- shown: false;
324
- data: null;
325
- } | {
326
- shown: true;
327
- data: Spreadsheet;
328
- };
329
357
  showHyperlinkPopup: false | "info" | "editor";
330
358
  selectedLinearElement: LinearElementEditor | null;
331
359
  snapLines: readonly SnapLine[];
@@ -351,6 +379,7 @@ export interface AppState {
351
379
  lockedMultiSelections: {
352
380
  [groupId: string]: true;
353
381
  };
382
+ bindMode: BindMode;
354
383
  }
355
384
  export type SearchMatch = {
356
385
  id: string;
@@ -363,7 +392,7 @@ export type SearchMatch = {
363
392
  showOnCanvas: boolean;
364
393
  }[];
365
394
  };
366
- export type UIAppState = Omit<AppState, "suggestedBindings" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
395
+ export type UIAppState = Omit<AppState, "cursorButton" | "scrollX" | "scrollY">;
367
396
  export type NormalizedZoomValue = number & {
368
397
  _brand: "normalizedZoom";
369
398
  };
@@ -411,11 +440,36 @@ export type OnUserFollowedPayload = {
411
440
  userToFollow: UserToFollow;
412
441
  action: "FOLLOW" | "UNFOLLOW";
413
442
  };
443
+ export type OnExportProgress = {
444
+ type: "progress";
445
+ message?: React.ReactNode;
446
+ /** 0-1 range */
447
+ progress?: number;
448
+ };
414
449
  export interface ExcalidrawProps {
415
450
  onChange?: (elements: readonly OrderedExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
451
+ /**
452
+ * note: only subscribes if the props.onIncrement is defined on initial render
453
+ */
416
454
  onIncrement?: (event: DurableIncrement | EphemeralIncrement) => void;
417
455
  initialData?: (() => MaybePromise<ExcalidrawInitialDataState | null>) | MaybePromise<ExcalidrawInitialDataState | null>;
418
- excalidrawAPI?: (api: ExcalidrawImperativeAPI) => void;
456
+ /**
457
+ * Invoked as soon as the Excalidraw API is available
458
+ * NOTE editor is not yet mounted, and state is not yet initialized
459
+ */
460
+ onExcalidrawAPI?: (api: ExcalidrawImperativeAPI | null) => void;
461
+ /**
462
+ * Invoked once the editor root is mounted.
463
+ */
464
+ onMount?: (payload: ExcalidrawMountPayload) => void;
465
+ /**
466
+ * Invoked when the editor root is unmounted.
467
+ */
468
+ onUnmount?: () => void;
469
+ /**
470
+ * Invoked once the initial scene is loaded.
471
+ */
472
+ onInitialize?: (api: ExcalidrawImperativeAPI) => void;
419
473
  isCollaborating?: boolean;
420
474
  onPointerUpdate?: (payload: {
421
475
  pointer: {
@@ -441,6 +495,7 @@ export interface ExcalidrawProps {
441
495
  onDuplicate?: (nextElements: readonly ExcalidrawElement[],
442
496
  /** excludes the duplicated elements */
443
497
  prevElements: readonly ExcalidrawElement[]) => ExcalidrawElement[] | void;
498
+ renderTopLeftUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
444
499
  renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
445
500
  langCode?: Language["code"];
446
501
  viewModeEnabled?: boolean;
@@ -471,6 +526,29 @@ export interface ExcalidrawProps {
471
526
  aiEnabled?: boolean;
472
527
  showDeprecatedFonts?: boolean;
473
528
  renderScrollbars?: boolean;
529
+ /**
530
+ * Called before exporting to a file.
531
+ *
532
+ * Allows the host app to intercept and delay saving until async operations
533
+ * (e.g., images are loaded) complete.
534
+ *
535
+ * If Promise/AsyncGenerator is returned, a progress toast will be shown
536
+ * until the operation completes. Generator can yield progress updates.
537
+ */
538
+ onExport?: (
539
+ /** type of export. Currently we only call for JSON exports or
540
+ * JSON-embedded PNG (which is also identified as `json` type here)*/
541
+ type: "json", data: {
542
+ elements: readonly ExcalidrawElement[];
543
+ appState: AppState;
544
+ files: BinaryFiles;
545
+ }, options: {
546
+ /** signal that gets aborted if user cancels the export (e.g. closes
547
+ * the native file picker dialog). In that case, you can either
548
+ * return immediately, or throw AbortError.
549
+ */
550
+ signal: AbortSignal;
551
+ }) => MaybePromise<void> | AsyncGenerator<OnExportProgress, void>;
474
552
  }
475
553
  export type SceneData = {
476
554
  elements?: ImportedDataState["elements"];
@@ -498,6 +576,11 @@ export type UIOptions = Partial<{
498
576
  tools: {
499
577
  image: boolean;
500
578
  };
579
+ /**
580
+ * Optionally control the editor form factor and desktop UI mode from the host app.
581
+ * If not provided, we will take care of it internally.
582
+ */
583
+ getFormFactor?: (editorWidth: number, editorHeight: number) => EditorInterface["formFactor"];
501
584
  /** @deprecated does nothing. Will be removed in 0.15 */
502
585
  welcomeScreen?: boolean;
503
586
  }>;
@@ -518,6 +601,8 @@ export type AppProps = Merge<ExcalidrawProps, {
518
601
  export type AppClassProperties = {
519
602
  props: AppProps;
520
603
  state: AppState;
604
+ api: App["api"];
605
+ sessionExportThemeOverride: App["sessionExportThemeOverride"];
521
606
  interactiveCanvas: HTMLCanvasElement | null;
522
607
  /** static canvas */
523
608
  canvas: HTMLCanvasElement;
@@ -528,7 +613,7 @@ export type AppClassProperties = {
528
613
  mimeType: ValueOf<typeof IMAGE_MIME_TYPES>;
529
614
  }>;
530
615
  files: BinaryFiles;
531
- device: App["device"];
616
+ editorInterface: App["editorInterface"];
532
617
  scene: App["scene"];
533
618
  syncActionResult: App["syncActionResult"];
534
619
  fonts: App["fonts"];
@@ -557,6 +642,12 @@ export type AppClassProperties = {
557
642
  excalidrawContainerValue: App["excalidrawContainerValue"];
558
643
  onPointerUpEmitter: App["onPointerUpEmitter"];
559
644
  updateEditorAtom: App["updateEditorAtom"];
645
+ onPointerDownEmitter: App["onPointerDownEmitter"];
646
+ onEvent: App["onEvent"];
647
+ onStateChange: App["onStateChange"];
648
+ lastPointerMoveCoords: App["lastPointerMoveCoords"];
649
+ bindModeHandler: App["bindModeHandler"];
650
+ setAppState: App["setAppState"];
560
651
  };
561
652
  export type PointerDownState = Readonly<{
562
653
  origin: Readonly<{
@@ -604,6 +695,7 @@ export type PointerDownState = Readonly<{
604
695
  x: number;
605
696
  y: number;
606
697
  };
698
+ blockDragging: boolean;
607
699
  };
608
700
  eventListeners: {
609
701
  onMove: null | ReturnType<typeof throttleRAF>;
@@ -616,8 +708,20 @@ export type PointerDownState = Readonly<{
616
708
  };
617
709
  }>;
618
710
  export type UnsubscribeCallback = () => void;
711
+ export type ExcalidrawMountPayload = {
712
+ excalidrawAPI: ExcalidrawImperativeAPI;
713
+ container: HTMLDivElement | null;
714
+ };
715
+ export type ExcalidrawImperativeAPIEventMap = {
716
+ "editor:mount": [payload: ExcalidrawMountPayload];
717
+ "editor:initialize": [api: ExcalidrawImperativeAPI];
718
+ "editor:unmount": [];
719
+ };
619
720
  export interface ExcalidrawImperativeAPI {
721
+ /** Whether the editor has been unmounted and the API is no longer usable. */
722
+ isDestroyed: boolean;
620
723
  updateScene: InstanceType<typeof App>["updateScene"];
724
+ applyDeltas: InstanceType<typeof App>["applyDeltas"];
621
725
  mutateElement: InstanceType<typeof App>["mutateElement"];
622
726
  updateLibrary: InstanceType<typeof Library>["updateLibrary"];
623
727
  resetScene: InstanceType<typeof App>["resetScene"];
@@ -640,6 +744,7 @@ export interface ExcalidrawImperativeAPI {
640
744
  setCursor: InstanceType<typeof App>["setCursor"];
641
745
  resetCursor: InstanceType<typeof App>["resetCursor"];
642
746
  toggleSidebar: InstanceType<typeof App>["toggleSidebar"];
747
+ getEditorInterface: () => EditorInterface;
643
748
  /**
644
749
  * Disables rendering of frames (including element clipping), but currently
645
750
  * the frames are still interactive in edit mode. As such, this API should be
@@ -652,18 +757,9 @@ export interface ExcalidrawImperativeAPI {
652
757
  onPointerUp: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: PointerEvent) => void) => UnsubscribeCallback;
653
758
  onScrollChange: (callback: (scrollX: number, scrollY: number, zoom: Zoom) => void) => UnsubscribeCallback;
654
759
  onUserFollow: (callback: (payload: OnUserFollowedPayload) => void) => UnsubscribeCallback;
760
+ onStateChange: InstanceType<typeof App>["onStateChange"];
761
+ onEvent: InstanceType<typeof App>["onEvent"];
655
762
  }
656
- export type Device = Readonly<{
657
- viewport: {
658
- isMobile: boolean;
659
- isLandscape: boolean;
660
- };
661
- editor: {
662
- isMobile: boolean;
663
- canFitSidebar: boolean;
664
- };
665
- isTouchScreen: boolean;
666
- }>;
667
763
  export type FrameNameBounds = {
668
764
  x: number;
669
765
  y: number;
@@ -703,4 +799,3 @@ export type Offsets = Partial<{
703
799
  bottom: number;
704
800
  left: number;
705
801
  }>;
706
- 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 {};
@@ -0,0 +1,29 @@
1
+ export declare const BASE_62_DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
2
+ /**
3
+ * @param {string} key
4
+ * @param {string} digits
5
+ * @return {void}
6
+ */
7
+ export declare function validateOrderKey(key: string, digits?: string): void;
8
+ /**
9
+ * @param {string | null | undefined} a
10
+ * @param {string | null | undefined} b
11
+ * @param {string=} digits
12
+ * @return {string}
13
+ */
14
+ export declare function generateKeyBetween(a: string | null | undefined, b: string | null | undefined, digits?: string): string;
15
+ /**
16
+ * same preconditions as generateKeysBetween.
17
+ * n >= 0.
18
+ * Returns an array of n distinct keys in sorted order.
19
+ * If a and b are both null, returns [a0, a1, ...]
20
+ * If one or the other is null, returns consecutive "integer"
21
+ * keys. Otherwise, returns relatively short keys between
22
+ * a and b.
23
+ * @param {string | null | undefined} a
24
+ * @param {string | null | undefined} b
25
+ * @param {number} n
26
+ * @param {string} digits
27
+ * @return {string[]}
28
+ */
29
+ export declare function generateNKeysBetween(a: string | null | undefined, b: string | null | undefined, n: number, digits?: string): string[];
@@ -1,3 +1,2 @@
1
- export declare const PRECISION = 0.0001;
2
1
  export declare const LegendreGaussN24TValues: number[];
3
2
  export declare const LegendreGaussN24CValues: number[];
@@ -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
  *
@@ -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-d2463f87d",
3
+ "version": "0.18.0-d255747",
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-d2463f87d"
64
+ "@excalidraw/common": "0.18.0-d255747"
65
65
  }
66
66
  }