@excalidraw/element 0.18.0-b16b6f8fd → 0.18.0-b1c6bfc

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