@excalidraw/element 0.18.0-3bdaafe → 0.18.0-4a5c9e9

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 (270) hide show
  1. package/dist/dev/index.js +5215 -2619
  2. package/dist/dev/index.js.map +4 -4
  3. package/dist/prod/index.js +19 -18
  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 +36 -27
  9. package/dist/types/common/src/editorInterface.d.ts +34 -0
  10. package/dist/types/common/src/font-metadata.d.ts +1 -3
  11. package/dist/types/common/src/index.d.ts +5 -0
  12. package/dist/types/common/src/keys.d.ts +1 -1
  13. package/dist/types/common/src/utility-types.d.ts +0 -1
  14. package/dist/types/common/src/utils.d.ts +53 -41
  15. package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
  16. package/dist/types/element/src/Scene.d.ts +5 -3
  17. package/dist/types/element/src/arrowheads.d.ts +3 -0
  18. package/dist/types/element/src/arrows/focus.d.ts +27 -0
  19. package/dist/types/element/src/arrows/helpers.d.ts +5 -0
  20. package/dist/types/element/src/binding.d.ts +67 -48
  21. package/dist/types/element/src/bounds.d.ts +3 -11
  22. package/dist/types/element/src/collision.d.ts +7 -2
  23. package/dist/types/element/src/comparisons.d.ts +7 -7
  24. package/dist/types/element/src/distribute.d.ts +2 -1
  25. package/dist/types/element/src/dragElements.d.ts +3 -3
  26. package/dist/types/element/src/duplicate.d.ts +3 -3
  27. package/dist/types/element/src/elbowArrow.d.ts +2 -0
  28. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  29. package/dist/types/element/src/frame.d.ts +5 -1
  30. package/dist/types/element/src/heading.d.ts +2 -1
  31. package/dist/types/element/src/image.d.ts +1 -11
  32. package/dist/types/element/src/index.d.ts +4 -3
  33. package/dist/types/element/src/linearElementEditor.d.ts +23 -22
  34. package/dist/types/element/src/mutateElement.d.ts +5 -1
  35. package/dist/types/element/src/newElement.d.ts +6 -6
  36. package/dist/types/element/src/renderElement.d.ts +4 -7
  37. package/dist/types/element/src/resizeElements.d.ts +10 -10
  38. package/dist/types/element/src/resizeTest.d.ts +6 -5
  39. package/dist/types/element/src/selection.d.ts +8 -8
  40. package/dist/types/element/src/shape.d.ts +9 -8
  41. package/dist/types/element/src/textElement.d.ts +1 -1
  42. package/dist/types/element/src/textMeasurements.d.ts +1 -3
  43. package/dist/types/element/src/textWrapping.d.ts +26 -0
  44. package/dist/types/{excalidraw/data → element/src}/transform.d.ts +3 -3
  45. package/dist/types/element/src/transformHandles.d.ts +8 -27
  46. package/dist/types/element/src/typeChecks.d.ts +4 -7
  47. package/dist/types/element/src/types.d.ts +12 -13
  48. package/dist/types/element/src/utils.d.ts +9 -4
  49. package/dist/types/element/src/visualdebug.d.ts +59 -0
  50. package/dist/types/element/src/zindex.d.ts +7 -1
  51. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +128 -168
  52. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
  53. package/dist/types/excalidraw/actions/actionBoundText.d.ts +92 -119
  54. package/dist/types/excalidraw/actions/actionCanvas.d.ts +544 -902
  55. package/dist/types/excalidraw/actions/actionClipboard.d.ts +110 -878
  56. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +44 -58
  57. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +148 -192
  58. package/dist/types/excalidraw/actions/actionDeselect.d.ts +159 -0
  59. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  60. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -3
  61. package/dist/types/excalidraw/actions/actionElementLink.d.ts +36 -56
  62. package/dist/types/excalidraw/actions/actionElementLock.d.ts +90 -117
  63. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +45 -59
  64. package/dist/types/excalidraw/actions/actionExport.d.ts +171 -1403
  65. package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -394
  66. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
  67. package/dist/types/excalidraw/actions/actionFrame.d.ts +275 -366
  68. package/dist/types/excalidraw/actions/actionGroup.d.ts +95 -130
  69. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +154 -206
  70. package/dist/types/excalidraw/actions/actionLink.d.ts +42 -56
  71. package/dist/types/excalidraw/actions/actionMenu.d.ts +35 -421
  72. package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -359
  73. package/dist/types/excalidraw/actions/actionProperties.d.ts +150 -2507
  74. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +47 -65
  75. package/dist/types/excalidraw/actions/actionStyles.d.ts +44 -57
  76. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +3 -3
  77. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +172 -0
  78. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +44 -58
  79. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +172 -0
  80. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +44 -58
  81. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +33 -53
  82. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  83. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +44 -58
  84. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +44 -58
  85. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +45 -59
  86. package/dist/types/excalidraw/actions/actionZindex.d.ts +2 -3
  87. package/dist/types/excalidraw/actions/index.d.ts +5 -2
  88. package/dist/types/excalidraw/actions/register.d.ts +2 -2
  89. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  90. package/dist/types/excalidraw/actions/types.d.ts +4 -4
  91. package/dist/types/excalidraw/appState.d.ts +21 -14
  92. package/dist/types/excalidraw/charts/charts.bar.d.ts +2 -0
  93. package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
  94. package/dist/types/excalidraw/charts/charts.helpers.d.ts +32 -0
  95. package/dist/types/excalidraw/charts/charts.line.d.ts +2 -0
  96. package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
  97. package/dist/types/excalidraw/charts/charts.radar.d.ts +2 -0
  98. package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
  99. package/dist/types/excalidraw/charts/index.d.ts +7 -0
  100. package/dist/types/excalidraw/clipboard.d.ts +56 -19
  101. package/dist/types/excalidraw/components/Actions.d.ts +22 -5
  102. package/dist/types/excalidraw/components/App.d.ts +109 -70
  103. package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
  104. package/dist/types/excalidraw/components/Card.d.ts +1 -3
  105. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
  106. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +0 -1
  107. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
  108. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
  109. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
  110. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +0 -1
  111. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
  112. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  113. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +2 -4
  114. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
  115. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  116. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
  117. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
  118. package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
  119. package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
  120. package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -1
  121. package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
  122. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
  123. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
  124. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
  125. package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
  126. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  127. package/dist/types/excalidraw/components/IconPicker.d.ts +14 -9
  128. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  129. package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
  130. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  131. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
  132. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
  133. package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
  134. package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
  135. package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
  136. package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
  137. package/dist/types/excalidraw/components/Modal.d.ts +0 -1
  138. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
  139. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
  140. package/dist/types/excalidraw/components/Popover.d.ts +2 -1
  141. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +2 -1
  142. package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
  143. package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
  144. package/dist/types/excalidraw/components/Range.d.ts +10 -4
  145. package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
  146. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +15 -21
  147. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
  148. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
  149. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
  150. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
  151. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
  152. package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
  153. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
  154. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
  155. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
  156. package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
  157. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  158. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
  159. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
  160. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
  161. package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
  162. package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
  163. package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
  164. package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
  165. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
  166. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
  167. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
  168. package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
  169. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +5 -2
  170. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
  171. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
  172. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
  173. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
  174. package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
  175. package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
  176. package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +9 -0
  177. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
  178. package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
  179. package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
  180. package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
  181. package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
  182. package/dist/types/excalidraw/components/TTDDialog/types.d.ts +95 -0
  183. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
  184. package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
  185. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
  186. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +10 -0
  187. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
  188. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  189. package/dist/types/excalidraw/components/Toast.d.ts +11 -7
  190. package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
  191. package/dist/types/excalidraw/components/Trans.d.ts +2 -2
  192. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +7 -3
  193. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +47 -35
  194. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -5
  195. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
  196. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
  197. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
  198. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
  199. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +0 -1
  200. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
  201. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
  202. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
  203. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
  204. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
  205. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
  206. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
  207. package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
  208. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
  209. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
  210. package/dist/types/excalidraw/components/icons.d.ts +49 -21
  211. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +19 -2
  212. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -35
  213. package/dist/types/excalidraw/components/shapes.d.ts +74 -1
  214. package/dist/types/excalidraw/data/blob.d.ts +327 -15
  215. package/dist/types/excalidraw/data/encode.d.ts +4 -4
  216. package/dist/types/excalidraw/data/encryption.d.ts +5 -5
  217. package/dist/types/excalidraw/data/filesystem.d.ts +5 -7
  218. package/dist/types/excalidraw/data/index.d.ts +4 -5
  219. package/dist/types/excalidraw/data/json.d.ts +170 -4
  220. package/dist/types/excalidraw/data/library.d.ts +24 -9
  221. package/dist/types/excalidraw/data/resave.d.ts +7 -2
  222. package/dist/types/excalidraw/data/restore.d.ts +25 -10
  223. package/dist/types/excalidraw/data/types.d.ts +4 -1
  224. package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
  225. package/dist/types/excalidraw/errors.d.ts +14 -0
  226. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  227. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
  228. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
  229. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
  230. package/dist/types/excalidraw/i18n.d.ts +2 -2
  231. package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
  232. package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
  233. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -14
  234. package/dist/types/excalidraw/scene/Renderer.d.ts +5 -2
  235. package/dist/types/excalidraw/scene/export.d.ts +2 -2
  236. package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
  237. package/dist/types/excalidraw/scene/types.d.ts +22 -5
  238. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  239. package/dist/types/excalidraw/snapping.d.ts +5 -5
  240. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
  241. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
  242. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
  243. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
  244. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
  245. package/dist/types/excalidraw/textAutoResizeHandle.d.ts +15 -0
  246. package/dist/types/excalidraw/types.d.ts +121 -35
  247. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +7 -3
  248. package/dist/types/math/src/point.d.ts +7 -2
  249. package/dist/types/math/src/polygon.d.ts +2 -2
  250. package/dist/types/math/src/range.d.ts +1 -3
  251. package/dist/types/math/src/segment.d.ts +4 -3
  252. package/dist/types/math/src/types.d.ts +25 -1
  253. package/dist/types/utils/src/bbox.d.ts +1 -1
  254. package/dist/types/utils/src/export.d.ts +5 -5
  255. package/dist/types/utils/src/shape.d.ts +6 -6
  256. package/dist/types/utils/src/withinBounds.d.ts +2 -2
  257. package/package.json +9 -3
  258. package/dist/types/excalidraw/charts.d.ts +0 -27
  259. package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
  260. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -16
  261. package/dist/types/excalidraw/components/InitializeApp.d.ts +0 -10
  262. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +0 -9
  263. package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +0 -8
  264. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -10
  265. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -58
  266. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +0 -19
  267. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +0 -85
  268. package/dist/types/excalidraw/data/reconcile.d.ts +0 -7
  269. package/dist/types/excalidraw/index.d.ts +0 -47
  270. 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,16 +125,20 @@ export type StaticCanvasAppState = Readonly<_CommonCanvasAppState & {
125
125
  frameRendering: AppState["frameRendering"];
126
126
  currentHoveredFontFamily: AppState["currentHoveredFontFamily"];
127
127
  hoveredElementIds: AppState["hoveredElementIds"];
128
+ suggestedBinding: AppState["suggestedBinding"];
128
129
  croppingElementId: AppState["croppingElementId"];
129
130
  }>;
130
131
  export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
132
+ activeTool: AppState["activeTool"];
131
133
  activeEmbeddable: AppState["activeEmbeddable"];
132
134
  selectionElement: AppState["selectionElement"];
133
135
  selectedGroupIds: AppState["selectedGroupIds"];
134
136
  selectedLinearElement: AppState["selectedLinearElement"];
135
137
  multiElement: AppState["multiElement"];
138
+ newElement: AppState["newElement"];
136
139
  isBindingEnabled: AppState["isBindingEnabled"];
137
- suggestedBindings: AppState["suggestedBindings"];
140
+ isMidpointSnappingEnabled: AppState["isMidpointSnappingEnabled"];
141
+ suggestedBinding: AppState["suggestedBinding"];
138
142
  isRotating: AppState["isRotating"];
139
143
  elementsToHighlight: AppState["elementsToHighlight"];
140
144
  collaborators: AppState["collaborators"];
@@ -145,6 +149,11 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
145
149
  croppingElementId: AppState["croppingElementId"];
146
150
  searchMatches: AppState["searchMatches"];
147
151
  activeLockedId: AppState["activeLockedId"];
152
+ hoveredElementIds: AppState["hoveredElementIds"];
153
+ frameRendering: AppState["frameRendering"];
154
+ shouldCacheIgnoreZoom: AppState["shouldCacheIgnoreZoom"];
155
+ exportScale: AppState["exportScale"];
156
+ currentItemArrowType: AppState["currentItemArrowType"];
148
157
  }>;
149
158
  export type ObservedAppState = ObservedStandaloneAppState & ObservedElementsAppState;
150
159
  export type ObservedStandaloneAppState = {
@@ -196,9 +205,20 @@ export interface AppState {
196
205
  * - set on pointer down, updated during pointer move
197
206
  */
198
207
  selectionElement: NonDeletedExcalidrawElement | null;
208
+ /**
209
+ * tracking current arrow binding editor state (takes into account
210
+ * `bindingPreference` and keyboard modifiers (ctrl/alt)
211
+ */
199
212
  isBindingEnabled: boolean;
213
+ /** user arrow binding preference */
214
+ bindingPreference: "enabled" | "disabled";
215
+ /** user preference whether arrow snap to midpoints while binding */
216
+ isMidpointSnappingEnabled: boolean;
200
217
  startBoundElement: NonDeleted<ExcalidrawBindableElement> | null;
201
- suggestedBindings: SuggestedBinding[];
218
+ suggestedBinding: {
219
+ element: NonDeleted<ExcalidrawBindableElement>;
220
+ midPoint?: GlobalPoint;
221
+ } | null;
202
222
  frameToHighlight: NonDeleted<ExcalidrawFrameLikeElement> | null;
203
223
  frameRendering: {
204
224
  enabled: boolean;
@@ -211,7 +231,7 @@ export interface AppState {
211
231
  /**
212
232
  * set when a new text is created or when an existing text is being edited
213
233
  */
214
- editingTextElement: NonDeletedExcalidrawElement | null;
234
+ editingTextElement: ExcalidrawTextElement | null;
215
235
  activeTool: {
216
236
  /**
217
237
  * indicates a previous tool we should revert back to if we deselect the
@@ -221,6 +241,10 @@ export interface AppState {
221
241
  locked: boolean;
222
242
  fromSelection: boolean;
223
243
  } & ActiveTool;
244
+ preferredSelectionTool: {
245
+ type: "selection" | "lasso";
246
+ initialized: boolean;
247
+ };
224
248
  penMode: boolean;
225
249
  penDetected: boolean;
226
250
  exportBackground: boolean;
@@ -251,8 +275,8 @@ export interface AppState {
251
275
  isResizing: boolean;
252
276
  isRotating: boolean;
253
277
  zoom: Zoom;
254
- openMenu: "canvas" | "shape" | null;
255
- openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | null;
278
+ openMenu: "canvas" | null;
279
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
256
280
  openSidebar: {
257
281
  name: SidebarName;
258
282
  tab?: SidebarTabName;
@@ -264,9 +288,15 @@ export interface AppState {
264
288
  tab: "text-to-diagram" | "mermaid";
265
289
  } | {
266
290
  name: "commandPalette";
291
+ } | {
292
+ name: "settings";
267
293
  } | {
268
294
  name: "elementLinkSelector";
269
295
  sourceElementId: ExcalidrawElement["id"];
296
+ } | {
297
+ name: "charts";
298
+ data: Spreadsheet;
299
+ rawText: string;
270
300
  };
271
301
  /**
272
302
  * Reflects user preference for whether the default sidebar should be docked.
@@ -289,7 +319,7 @@ export interface AppState {
289
319
  selectedElementsAreBeingDragged: boolean;
290
320
  shouldCacheIgnoreZoom: boolean;
291
321
  toast: {
292
- message: string;
322
+ message: React.ReactNode;
293
323
  closable?: boolean;
294
324
  duration?: number;
295
325
  } | null;
@@ -311,21 +341,13 @@ export interface AppState {
311
341
  height: number;
312
342
  offsetTop: number;
313
343
  offsetLeft: number;
314
- fileHandle: FileSystemHandle | null;
344
+ fileHandle: FileSystemFileHandle | null;
315
345
  collaborators: Map<SocketId, Collaborator>;
316
346
  stats: {
317
347
  open: boolean;
318
348
  /** bitmap. Use `STATS_PANELS` bit values */
319
349
  panels: number;
320
350
  };
321
- currentChartType: ChartType;
322
- pasteDialog: {
323
- shown: false;
324
- data: null;
325
- } | {
326
- shown: true;
327
- data: Spreadsheet;
328
- };
329
351
  showHyperlinkPopup: false | "info" | "editor";
330
352
  selectedLinearElement: LinearElementEditor | null;
331
353
  snapLines: readonly SnapLine[];
@@ -351,6 +373,7 @@ export interface AppState {
351
373
  lockedMultiSelections: {
352
374
  [groupId: string]: true;
353
375
  };
376
+ bindMode: BindMode;
354
377
  }
355
378
  export type SearchMatch = {
356
379
  id: string;
@@ -363,7 +386,7 @@ export type SearchMatch = {
363
386
  showOnCanvas: boolean;
364
387
  }[];
365
388
  };
366
- export type UIAppState = Omit<AppState, "suggestedBindings" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
389
+ export type UIAppState = Omit<AppState, "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
367
390
  export type NormalizedZoomValue = number & {
368
391
  _brand: "normalizedZoom";
369
392
  };
@@ -411,11 +434,36 @@ export type OnUserFollowedPayload = {
411
434
  userToFollow: UserToFollow;
412
435
  action: "FOLLOW" | "UNFOLLOW";
413
436
  };
437
+ export type OnExportProgress = {
438
+ type: "progress";
439
+ message?: React.ReactNode;
440
+ /** 0-1 range */
441
+ progress?: number;
442
+ };
414
443
  export interface ExcalidrawProps {
415
444
  onChange?: (elements: readonly OrderedExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
445
+ /**
446
+ * note: only subscribes if the props.onIncrement is defined on initial render
447
+ */
416
448
  onIncrement?: (event: DurableIncrement | EphemeralIncrement) => void;
417
449
  initialData?: (() => MaybePromise<ExcalidrawInitialDataState | null>) | MaybePromise<ExcalidrawInitialDataState | null>;
418
- excalidrawAPI?: (api: ExcalidrawImperativeAPI) => void;
450
+ /**
451
+ * Invoked as soon as the Excalidraw API is available
452
+ * NOTE editor is not yet mounted, and state is not yet initialized
453
+ */
454
+ onExcalidrawAPI?: (api: ExcalidrawImperativeAPI | null) => void;
455
+ /**
456
+ * Invoked once the editor root is mounted.
457
+ */
458
+ onMount?: (payload: ExcalidrawMountPayload) => void;
459
+ /**
460
+ * Invoked when the editor root is unmounted.
461
+ */
462
+ onUnmount?: () => void;
463
+ /**
464
+ * Invoked once the initial scene is loaded.
465
+ */
466
+ onInitialize?: (api: ExcalidrawImperativeAPI) => void;
419
467
  isCollaborating?: boolean;
420
468
  onPointerUpdate?: (payload: {
421
469
  pointer: {
@@ -441,6 +489,7 @@ export interface ExcalidrawProps {
441
489
  onDuplicate?: (nextElements: readonly ExcalidrawElement[],
442
490
  /** excludes the duplicated elements */
443
491
  prevElements: readonly ExcalidrawElement[]) => ExcalidrawElement[] | void;
492
+ renderTopLeftUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
444
493
  renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
445
494
  langCode?: Language["code"];
446
495
  viewModeEnabled?: boolean;
@@ -471,6 +520,29 @@ export interface ExcalidrawProps {
471
520
  aiEnabled?: boolean;
472
521
  showDeprecatedFonts?: boolean;
473
522
  renderScrollbars?: boolean;
523
+ /**
524
+ * Called before exporting to a file.
525
+ *
526
+ * Allows the host app to intercept and delay saving until async operations
527
+ * (e.g., images are loaded) complete.
528
+ *
529
+ * If Promise/AsyncGenerator is returned, a progress toast will be shown
530
+ * until the operation completes. Generator can yield progress updates.
531
+ */
532
+ onExport?: (
533
+ /** type of export. Currently we only call for JSON exports or
534
+ * JSON-embedded PNG (which is also identified as `json` type here)*/
535
+ type: "json", data: {
536
+ elements: readonly ExcalidrawElement[];
537
+ appState: AppState;
538
+ files: BinaryFiles;
539
+ }, options: {
540
+ /** signal that gets aborted if user cancels the export (e.g. closes
541
+ * the native file picker dialog). In that case, you can either
542
+ * return immediately, or throw AbortError.
543
+ */
544
+ signal: AbortSignal;
545
+ }) => MaybePromise<void> | AsyncGenerator<OnExportProgress, void>;
474
546
  }
475
547
  export type SceneData = {
476
548
  elements?: ImportedDataState["elements"];
@@ -498,6 +570,11 @@ export type UIOptions = Partial<{
498
570
  tools: {
499
571
  image: boolean;
500
572
  };
573
+ /**
574
+ * Optionally control the editor form factor and desktop UI mode from the host app.
575
+ * If not provided, we will take care of it internally.
576
+ */
577
+ getFormFactor?: (editorWidth: number, editorHeight: number) => EditorInterface["formFactor"];
501
578
  /** @deprecated does nothing. Will be removed in 0.15 */
502
579
  welcomeScreen?: boolean;
503
580
  }>;
@@ -518,6 +595,8 @@ export type AppProps = Merge<ExcalidrawProps, {
518
595
  export type AppClassProperties = {
519
596
  props: AppProps;
520
597
  state: AppState;
598
+ api: App["api"];
599
+ sessionExportThemeOverride: App["sessionExportThemeOverride"];
521
600
  interactiveCanvas: HTMLCanvasElement | null;
522
601
  /** static canvas */
523
602
  canvas: HTMLCanvasElement;
@@ -528,7 +607,7 @@ export type AppClassProperties = {
528
607
  mimeType: ValueOf<typeof IMAGE_MIME_TYPES>;
529
608
  }>;
530
609
  files: BinaryFiles;
531
- device: App["device"];
610
+ editorInterface: App["editorInterface"];
532
611
  scene: App["scene"];
533
612
  syncActionResult: App["syncActionResult"];
534
613
  fonts: App["fonts"];
@@ -557,7 +636,12 @@ export type AppClassProperties = {
557
636
  excalidrawContainerValue: App["excalidrawContainerValue"];
558
637
  onPointerUpEmitter: App["onPointerUpEmitter"];
559
638
  updateEditorAtom: App["updateEditorAtom"];
560
- defaultSelectionTool: "selection" | "lasso";
639
+ onPointerDownEmitter: App["onPointerDownEmitter"];
640
+ onEvent: App["onEvent"];
641
+ onStateChange: App["onStateChange"];
642
+ lastPointerMoveCoords: App["lastPointerMoveCoords"];
643
+ bindModeHandler: App["bindModeHandler"];
644
+ setAppState: App["setAppState"];
561
645
  };
562
646
  export type PointerDownState = Readonly<{
563
647
  origin: Readonly<{
@@ -618,7 +702,18 @@ export type PointerDownState = Readonly<{
618
702
  };
619
703
  }>;
620
704
  export type UnsubscribeCallback = () => void;
705
+ export type ExcalidrawMountPayload = {
706
+ excalidrawAPI: ExcalidrawImperativeAPI;
707
+ container: HTMLDivElement | null;
708
+ };
709
+ export type ExcalidrawImperativeAPIEventMap = {
710
+ "editor:mount": [payload: ExcalidrawMountPayload];
711
+ "editor:initialize": [api: ExcalidrawImperativeAPI];
712
+ "editor:unmount": [];
713
+ };
621
714
  export interface ExcalidrawImperativeAPI {
715
+ /** Whether the editor has been unmounted and the API is no longer usable. */
716
+ isDestroyed: boolean;
622
717
  updateScene: InstanceType<typeof App>["updateScene"];
623
718
  applyDeltas: InstanceType<typeof App>["applyDeltas"];
624
719
  mutateElement: InstanceType<typeof App>["mutateElement"];
@@ -643,6 +738,7 @@ export interface ExcalidrawImperativeAPI {
643
738
  setCursor: InstanceType<typeof App>["setCursor"];
644
739
  resetCursor: InstanceType<typeof App>["resetCursor"];
645
740
  toggleSidebar: InstanceType<typeof App>["toggleSidebar"];
741
+ getEditorInterface: () => EditorInterface;
646
742
  /**
647
743
  * Disables rendering of frames (including element clipping), but currently
648
744
  * the frames are still interactive in edit mode. As such, this API should be
@@ -655,18 +751,9 @@ export interface ExcalidrawImperativeAPI {
655
751
  onPointerUp: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: PointerEvent) => void) => UnsubscribeCallback;
656
752
  onScrollChange: (callback: (scrollX: number, scrollY: number, zoom: Zoom) => void) => UnsubscribeCallback;
657
753
  onUserFollow: (callback: (payload: OnUserFollowedPayload) => void) => UnsubscribeCallback;
754
+ onStateChange: InstanceType<typeof App>["onStateChange"];
755
+ onEvent: InstanceType<typeof App>["onEvent"];
658
756
  }
659
- export type Device = Readonly<{
660
- viewport: {
661
- isMobile: boolean;
662
- isLandscape: boolean;
663
- };
664
- editor: {
665
- isMobile: boolean;
666
- canFitSidebar: boolean;
667
- };
668
- isTouchScreen: boolean;
669
- }>;
670
757
  export type FrameNameBounds = {
671
758
  x: number;
672
759
  y: number;
@@ -706,4 +793,3 @@ export type Offsets = Partial<{
706
793
  bottom: number;
707
794
  left: number;
708
795
  }>;
709
- 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 {};
@@ -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/element",
3
- "version": "0.18.0-3bdaafe",
3
+ "version": "0.18.0-4a5c9e9",
4
4
  "type": "module",
5
5
  "types": "./dist/types/element/src/index.d.ts",
6
6
  "main": "./dist/prod/index.js",
@@ -17,6 +17,12 @@
17
17
  "development": "./dist/dev/index.js",
18
18
  "production": "./dist/prod/index.js",
19
19
  "default": "./dist/prod/index.js"
20
+ },
21
+ "./visualdebug": {
22
+ "types": "./dist/types/element/src/visualdebug.d.ts",
23
+ "development": "./dist/dev/visualdebug.js",
24
+ "production": "./dist/prod/visualdebug.js",
25
+ "default": "./dist/prod/visualdebug.js"
20
26
  }
21
27
  },
22
28
  "files": [
@@ -57,7 +63,7 @@
57
63
  "build:esm": "rimraf dist && node ../../scripts/buildBase.js && yarn gen:types"
58
64
  },
59
65
  "dependencies": {
60
- "@excalidraw/common": "0.18.0-3bdaafe",
61
- "@excalidraw/math": "0.18.0-3bdaafe"
66
+ "@excalidraw/common": "0.18.0-4a5c9e9",
67
+ "@excalidraw/math": "0.18.0-4a5c9e9"
62
68
  }
63
69
  }
@@ -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 {};
@@ -1,4 +0,0 @@
1
- import type { GenerateDiagramToCode } from "../../types";
2
- export declare const DiagramToCodePlugin: (props: {
3
- generate: GenerateDiagramToCode;
4
- }) => null;
@@ -1,16 +0,0 @@
1
- /// <reference types="react" />
2
- import "./ExcalidrawLogo.scss";
3
- type LogoSize = "xs" | "small" | "normal" | "large" | "custom";
4
- interface LogoProps {
5
- size?: LogoSize;
6
- withText?: boolean;
7
- style?: React.CSSProperties;
8
- /**
9
- * If true, the logo will not be wrapped in a Link component.
10
- * The link prop will be ignored as well.
11
- * It will merely be a plain div.
12
- */
13
- isNotLink?: boolean;
14
- }
15
- export declare const ExcalidrawLogo: ({ style, size, withText, }: LogoProps) => import("react/jsx-runtime").JSX.Element;
16
- export {};
@@ -1,10 +0,0 @@
1
- import React from "react";
2
- import type { Theme } from "@excalidraw/element/types";
3
- import type { Language } from "../i18n";
4
- interface Props {
5
- langCode: Language["code"];
6
- children: React.ReactElement;
7
- theme?: Theme;
8
- }
9
- export declare const InitializeApp: (props: Props) => import("react/jsx-runtime").JSX.Element;
10
- export {};