@zsviczian/excalidraw 0.18.0-60 → 0.18.0-62

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 (397) hide show
  1. package/dist/excalidraw.development.js +113 -113
  2. package/dist/excalidraw.production.min.js +1 -1
  3. package/package.json +2 -2
  4. package/types/common/src/binary-heap.d.ts +12 -12
  5. package/types/common/src/colors.d.ts +62 -62
  6. package/types/common/src/commonObsidianUtils.d.ts +20 -20
  7. package/types/common/src/constants.d.ts +357 -360
  8. package/types/common/src/editorInterface.d.ts +35 -35
  9. package/types/common/src/emitter.d.ts +16 -16
  10. package/types/common/src/font-metadata.d.ts +46 -48
  11. package/types/common/src/index.d.ts +15 -15
  12. package/types/common/src/keys.d.ts +189 -189
  13. package/types/common/src/points.d.ts +9 -9
  14. package/types/common/src/promise-pool.d.ts +6 -6
  15. package/types/common/src/queue.d.ts +9 -9
  16. package/types/common/src/random.d.ts +4 -4
  17. package/types/common/src/url.d.ts +7 -7
  18. package/types/common/src/utility-types.d.ts +37 -37
  19. package/types/common/src/utils.d.ts +279 -273
  20. package/types/common/src/visualdebug.d.ts +41 -41
  21. package/types/element/src/Scene.d.ts +80 -80
  22. package/types/element/src/align.d.ts +8 -8
  23. package/types/element/src/binding.d.ts +123 -122
  24. package/types/element/src/bounds.d.ts +89 -89
  25. package/types/element/src/collision.d.ts +36 -36
  26. package/types/element/src/comparisons.d.ts +8 -8
  27. package/types/element/src/containerCache.d.ts +11 -11
  28. package/types/element/src/cropElement.d.ts +19 -19
  29. package/types/element/src/delta.d.ts +228 -228
  30. package/types/element/src/distance.d.ts +3 -3
  31. package/types/element/src/distribute.d.ts +7 -7
  32. package/types/element/src/dragElements.d.ts +33 -33
  33. package/types/element/src/duplicate.d.ts +63 -63
  34. package/types/element/src/easingFunctions.d.ts +6 -6
  35. package/types/element/src/elbowArrow.d.ts +17 -17
  36. package/types/element/src/elementLink.d.ts +13 -13
  37. package/types/element/src/embeddable.d.ts +10 -10
  38. package/types/element/src/flowchart.d.ts +26 -26
  39. package/types/element/src/fractionalIndex.d.ts +57 -57
  40. package/types/element/src/frame.d.ts +74 -70
  41. package/types/element/src/groups.d.ts +34 -34
  42. package/types/element/src/heading.d.ts +16 -15
  43. package/types/element/src/image.d.ts +22 -32
  44. package/types/element/src/index.d.ts +55 -55
  45. package/types/element/src/linearElementEditor.d.ts +113 -113
  46. package/types/element/src/mutateElement.d.ts +23 -21
  47. package/types/element/src/newElement.d.ts +64 -64
  48. package/types/element/src/positionElementsOnGrid.d.ts +2 -2
  49. package/types/element/src/renderElement.d.ts +31 -31
  50. package/types/element/src/resizeElements.d.ts +39 -39
  51. package/types/element/src/resizeTest.d.ts +16 -16
  52. package/types/element/src/selection.d.ts +34 -38
  53. package/types/element/src/shape.d.ts +42 -42
  54. package/types/element/src/showSelectedShapeActions.d.ts +3 -3
  55. package/types/element/src/sizeHelpers.d.ts +35 -35
  56. package/types/element/src/sortElements.d.ts +2 -2
  57. package/types/element/src/store.d.ts +237 -237
  58. package/types/element/src/textElement.d.ts +40 -40
  59. package/types/element/src/textMeasurements.d.ts +39 -41
  60. package/types/element/src/textWrapping.d.ts +13 -13
  61. package/types/element/src/transformHandles.d.ts +36 -56
  62. package/types/element/src/typeChecks.d.ts +56 -56
  63. package/types/element/src/types.d.ts +304 -304
  64. package/types/element/src/utils.d.ts +34 -32
  65. package/types/element/src/zindex.d.ts +13 -13
  66. package/types/excalidraw/actions/actionAddToLibrary.d.ts +599 -662
  67. package/types/excalidraw/actions/actionAlign.d.ts +109 -109
  68. package/types/excalidraw/actions/actionBoundText.d.ts +436 -478
  69. package/types/excalidraw/actions/actionCanvas.d.ts +2920 -3204
  70. package/types/excalidraw/actions/actionClipboard.d.ts +475 -517
  71. package/types/excalidraw/actions/actionCropEditor.d.ts +212 -233
  72. package/types/excalidraw/actions/actionDeleteSelected.d.ts +633 -700
  73. package/types/excalidraw/actions/actionDistribute.d.ts +34 -34
  74. package/types/excalidraw/actions/actionDuplicateSelection.d.ts +17 -17
  75. package/types/excalidraw/actions/actionElementLink.d.ts +232 -253
  76. package/types/excalidraw/actions/actionElementLock.d.ts +422 -464
  77. package/types/excalidraw/actions/actionEmbeddable.d.ts +209 -230
  78. package/types/excalidraw/actions/actionExport.d.ts +835 -919
  79. package/types/excalidraw/actions/actionFinalize.d.ts +13 -13
  80. package/types/excalidraw/actions/actionFlip.d.ts +34 -34
  81. package/types/excalidraw/actions/actionFrame.d.ts +1315 -1435
  82. package/types/excalidraw/actions/actionGroup.d.ts +426 -476
  83. package/types/excalidraw/actions/actionHistory.d.ts +6 -6
  84. package/types/excalidraw/actions/actionLinearEditor.d.ts +709 -766
  85. package/types/excalidraw/actions/actionLink.d.ts +213 -234
  86. package/types/excalidraw/actions/actionMenu.d.ts +201 -222
  87. package/types/excalidraw/actions/actionNavigate.d.ts +20 -22
  88. package/types/excalidraw/actions/actionProperties.d.ts +695 -758
  89. package/types/excalidraw/actions/actionSelectAll.d.ts +208 -233
  90. package/types/excalidraw/actions/actionStyles.d.ts +226 -247
  91. package/types/excalidraw/actions/actionTextAutoResize.d.ts +17 -17
  92. package/types/excalidraw/actions/actionToggleGridMode.d.ts +215 -236
  93. package/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +213 -234
  94. package/types/excalidraw/actions/actionToggleSearchMenu.d.ts +204 -225
  95. package/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +19 -19
  96. package/types/excalidraw/actions/actionToggleStats.d.ts +212 -233
  97. package/types/excalidraw/actions/actionToggleViewMode.d.ts +213 -234
  98. package/types/excalidraw/actions/actionToggleZenMode.d.ts +213 -234
  99. package/types/excalidraw/actions/actionTrayMenu.d.ts +208 -229
  100. package/types/excalidraw/actions/actionZindex.d.ts +74 -74
  101. package/types/excalidraw/actions/index.d.ts +30 -30
  102. package/types/excalidraw/actions/manager.d.ts +21 -21
  103. package/types/excalidraw/actions/register.d.ts +5 -5
  104. package/types/excalidraw/actions/shortcuts.d.ts +4 -4
  105. package/types/excalidraw/actions/types.d.ts +47 -47
  106. package/types/excalidraw/analytics.d.ts +1 -1
  107. package/types/excalidraw/animated-trail.d.ts +39 -39
  108. package/types/excalidraw/animation-frame-handler.d.ts +16 -16
  109. package/types/excalidraw/appState.d.ts +105 -105
  110. package/types/excalidraw/charts.d.ts +27 -27
  111. package/types/excalidraw/clients.d.ts +14 -14
  112. package/types/excalidraw/clipboard.d.ts +105 -129
  113. package/types/excalidraw/components/Actions.d.ts +48 -48
  114. package/types/excalidraw/components/ActiveConfirmDialog.d.ts +4 -4
  115. package/types/excalidraw/components/App.d.ts +572 -581
  116. package/types/excalidraw/components/Avatar.d.ts +11 -11
  117. package/types/excalidraw/components/BraveMeasureTextError.d.ts +2 -2
  118. package/types/excalidraw/components/Button.d.ts +17 -17
  119. package/types/excalidraw/components/ButtonIcon.d.ts +16 -16
  120. package/types/excalidraw/components/ButtonIconCycle.d.ts +11 -11
  121. package/types/excalidraw/components/ButtonSeparator.d.ts +1 -1
  122. package/types/excalidraw/components/Card.d.ts +6 -6
  123. package/types/excalidraw/components/CheckboxItem.d.ts +8 -8
  124. package/types/excalidraw/components/ColorPicker/ColorInput.d.ts +10 -10
  125. package/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +23 -23
  126. package/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +8 -8
  127. package/types/excalidraw/components/ColorPicker/HotkeyLabel.d.ts +7 -7
  128. package/types/excalidraw/components/ColorPicker/Picker.d.ts +19 -19
  129. package/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +10 -10
  130. package/types/excalidraw/components/ColorPicker/PickerHeading.d.ts +5 -5
  131. package/types/excalidraw/components/ColorPicker/ShadeList.d.ts +9 -9
  132. package/types/excalidraw/components/ColorPicker/TopPicks.d.ts +9 -9
  133. package/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +21 -21
  134. package/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +20 -20
  135. package/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +19 -19
  136. package/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +2 -2
  137. package/types/excalidraw/components/CommandPalette/types.d.ts +24 -24
  138. package/types/excalidraw/components/ConfirmDialog.d.ts +10 -10
  139. package/types/excalidraw/components/ContextMenu.d.ts +16 -16
  140. package/types/excalidraw/components/ConvertElementTypePopup.d.ts +23 -23
  141. package/types/excalidraw/components/DarkModeToggle.d.ts +7 -7
  142. package/types/excalidraw/components/DefaultSidebar.d.ts +27 -30
  143. package/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +4 -4
  144. package/types/excalidraw/components/Dialog.d.ts +13 -13
  145. package/types/excalidraw/components/DialogActionButton.d.ts +10 -10
  146. package/types/excalidraw/components/ElementCanvasButtons.d.ts +7 -7
  147. package/types/excalidraw/components/ElementLinkDialog.d.ts +12 -12
  148. package/types/excalidraw/components/Ellipsify.d.ts +3 -3
  149. package/types/excalidraw/components/ErrorDialog.d.ts +5 -5
  150. package/types/excalidraw/components/ExcalidrawLogo.d.ts +15 -15
  151. package/types/excalidraw/components/EyeDropper.d.ts +27 -27
  152. package/types/excalidraw/components/FilledButton.d.ts +18 -18
  153. package/types/excalidraw/components/FixedSideContainer.d.ts +10 -10
  154. package/types/excalidraw/components/FollowMode/FollowMode.d.ts +10 -10
  155. package/types/excalidraw/components/FontPicker/FontPicker.d.ts +22 -22
  156. package/types/excalidraw/components/FontPicker/FontPickerList.d.ts +26 -26
  157. package/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +8 -8
  158. package/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +13 -13
  159. package/types/excalidraw/components/HandButton.d.ts +10 -10
  160. package/types/excalidraw/components/HelpButton.d.ts +7 -7
  161. package/types/excalidraw/components/HelpDialog.d.ts +4 -4
  162. package/types/excalidraw/components/HintViewer.d.ts +11 -11
  163. package/types/excalidraw/components/IconPicker.d.ts +15 -15
  164. package/types/excalidraw/components/ImageExportDialog.d.ts +14 -14
  165. package/types/excalidraw/components/InitializeApp.d.ts +10 -10
  166. package/types/excalidraw/components/InlineIcon.d.ts +5 -5
  167. package/types/excalidraw/components/Island.d.ts +10 -10
  168. package/types/excalidraw/components/JSONExportDialog.d.ts +15 -15
  169. package/types/excalidraw/components/LaserPointerButton.d.ts +10 -10
  170. package/types/excalidraw/components/LayerUI.d.ts +32 -32
  171. package/types/excalidraw/components/LibraryMenu.d.ts +10 -10
  172. package/types/excalidraw/components/LibraryMenuBrowseButton.d.ts +7 -7
  173. package/types/excalidraw/components/LibraryMenuControlButtons.d.ts +9 -9
  174. package/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +17 -17
  175. package/types/excalidraw/components/LibraryMenuItems.d.ts +14 -14
  176. package/types/excalidraw/components/LibraryMenuSection.d.ts +23 -23
  177. package/types/excalidraw/components/LibraryUnit.d.ts +14 -14
  178. package/types/excalidraw/components/LinkButton.d.ts +4 -4
  179. package/types/excalidraw/components/LoadingMessage.d.ts +5 -5
  180. package/types/excalidraw/components/LockButton.d.ts +10 -10
  181. package/types/excalidraw/components/MagicButton.d.ts +10 -10
  182. package/types/excalidraw/components/MobileMenu.d.ts +24 -24
  183. package/types/excalidraw/components/MobileToolBar.d.ts +10 -10
  184. package/types/excalidraw/components/Modal.d.ts +14 -14
  185. package/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -17
  186. package/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -17
  187. package/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -22
  188. package/types/excalidraw/components/Paragraph.d.ts +4 -4
  189. package/types/excalidraw/components/PasteChartDialog.d.ts +8 -8
  190. package/types/excalidraw/components/PenModeButton.d.ts +12 -12
  191. package/types/excalidraw/components/Popover.d.ts +16 -16
  192. package/types/excalidraw/components/ProjectName.d.ts +10 -10
  193. package/types/excalidraw/components/PropertiesPopover.d.ts +16 -16
  194. package/types/excalidraw/components/PublishLibrary.d.ts +16 -16
  195. package/types/excalidraw/components/QuickSearch.d.ts +9 -9
  196. package/types/excalidraw/components/RadioGroup.d.ts +13 -13
  197. package/types/excalidraw/components/RadioSelection.d.ts +20 -20
  198. package/types/excalidraw/components/Range.d.ts +8 -8
  199. package/types/excalidraw/components/SVGLayer.d.ts +7 -7
  200. package/types/excalidraw/components/ScrollableList.d.ts +8 -8
  201. package/types/excalidraw/components/SearchMenu.d.ts +5 -5
  202. package/types/excalidraw/components/Section.d.ts +7 -7
  203. package/types/excalidraw/components/ShareableLinkDialog.d.ts +7 -7
  204. package/types/excalidraw/components/Sidebar/Sidebar.d.ts +70 -76
  205. package/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +7 -7
  206. package/types/excalidraw/components/Sidebar/SidebarTab.d.ts +8 -8
  207. package/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +9 -9
  208. package/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +6 -6
  209. package/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +6 -6
  210. package/types/excalidraw/components/Sidebar/SidebarTrigger.d.ts +6 -6
  211. package/types/excalidraw/components/Sidebar/common.d.ts +34 -34
  212. package/types/excalidraw/components/Spinner.d.ts +8 -8
  213. package/types/excalidraw/components/Stack.d.ts +15 -15
  214. package/types/excalidraw/components/Stats/Angle.d.ts +11 -11
  215. package/types/excalidraw/components/Stats/CanvasGrid.d.ts +10 -10
  216. package/types/excalidraw/components/Stats/CanvasGridSize.d.ts +10 -10
  217. package/types/excalidraw/components/Stats/Collapsible.d.ts +10 -10
  218. package/types/excalidraw/components/Stats/Dimension.d.ts +11 -11
  219. package/types/excalidraw/components/Stats/DragInput.d.ts +44 -44
  220. package/types/excalidraw/components/Stats/FontSize.d.ts +11 -11
  221. package/types/excalidraw/components/Stats/MultiAngle.d.ts +11 -11
  222. package/types/excalidraw/components/Stats/MultiDimension.d.ts +14 -14
  223. package/types/excalidraw/components/Stats/MultiFontSize.d.ts +12 -12
  224. package/types/excalidraw/components/Stats/MultiPosition.d.ts +14 -14
  225. package/types/excalidraw/components/Stats/Position.d.ts +12 -12
  226. package/types/excalidraw/components/Stats/index.d.ts +35 -35
  227. package/types/excalidraw/components/Stats/utils.d.ts +19 -19
  228. package/types/excalidraw/components/Switch.d.ts +9 -9
  229. package/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +8 -8
  230. package/types/excalidraw/components/TTDDialog/MermaidToExcalidrawLib.d.ts +10 -10
  231. package/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +29 -29
  232. package/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +9 -9
  233. package/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +7 -7
  234. package/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +17 -17
  235. package/types/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +4 -4
  236. package/types/excalidraw/components/TTDDialog/TTDDialogSubmitShortcut.d.ts +1 -1
  237. package/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +7 -7
  238. package/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +8 -8
  239. package/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +6 -6
  240. package/types/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +11 -11
  241. package/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +8 -8
  242. package/types/excalidraw/components/TTDDialog/common.d.ts +32 -32
  243. package/types/excalidraw/components/TextField.d.ts +22 -22
  244. package/types/excalidraw/components/Toast.d.ts +9 -9
  245. package/types/excalidraw/components/ToolButton.d.ts +49 -49
  246. package/types/excalidraw/components/ToolPopover.d.ts +25 -25
  247. package/types/excalidraw/components/Tooltip.d.ts +18 -18
  248. package/types/excalidraw/components/Trans.d.ts +9 -9
  249. package/types/excalidraw/components/TrayMenu.d.ts +26 -26
  250. package/types/excalidraw/components/UnlockPopup.d.ts +8 -8
  251. package/types/excalidraw/components/UserList.d.ts +18 -18
  252. package/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +33 -33
  253. package/types/excalidraw/components/canvases/NewElementCanvas.d.ts +14 -14
  254. package/types/excalidraw/components/canvases/StaticCanvas.d.ts +19 -19
  255. package/types/excalidraw/components/canvases/index.d.ts +3 -3
  256. package/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +84 -88
  257. package/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +16 -16
  258. package/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -11
  259. package/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +38 -46
  260. package/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +8 -8
  261. package/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +17 -17
  262. package/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +7 -7
  263. package/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +16 -16
  264. package/types/excalidraw/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -5
  265. package/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +10 -10
  266. package/types/excalidraw/components/dropdownMenu/common.d.ts +6 -6
  267. package/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -3
  268. package/types/excalidraw/components/footer/Footer.d.ts +12 -12
  269. package/types/excalidraw/components/footer/FooterCenter.d.ts +8 -8
  270. package/types/excalidraw/components/hoc/withInternalFallback.d.ts +4 -4
  271. package/types/excalidraw/components/hyperlink/Hyperlink.d.ts +19 -19
  272. package/types/excalidraw/components/hyperlink/helpers.d.ts +10 -10
  273. package/types/excalidraw/components/icons.d.ts +241 -241
  274. package/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +11 -22
  275. package/types/excalidraw/components/main-menu/DefaultItems.d.ts +64 -64
  276. package/types/excalidraw/components/main-menu/MainMenu.d.ts +78 -80
  277. package/types/excalidraw/components/shapes.d.ts +172 -172
  278. package/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +60 -60
  279. package/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -19
  280. package/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +86 -86
  281. package/types/excalidraw/context/tunnels.d.ts +21 -21
  282. package/types/excalidraw/context/ui-appState.d.ts +4 -4
  283. package/types/excalidraw/cursor.d.ts +6 -6
  284. package/types/excalidraw/data/EditorLocalStorage.d.ts +8 -8
  285. package/types/excalidraw/data/ai/types.d.ts +242 -242
  286. package/types/excalidraw/data/blob.d.ts +57 -49
  287. package/types/excalidraw/data/encode.d.ts +55 -55
  288. package/types/excalidraw/data/encryption.d.ts +9 -9
  289. package/types/excalidraw/data/filesystem.d.ts +21 -21
  290. package/types/excalidraw/data/image.d.ts +9 -9
  291. package/types/excalidraw/data/index.d.ts +22 -22
  292. package/types/excalidraw/data/json.d.ts +18 -16
  293. package/types/excalidraw/data/library.d.ts +127 -112
  294. package/types/excalidraw/data/reconcile.d.ts +7 -7
  295. package/types/excalidraw/data/resave.d.ts +5 -5
  296. package/types/excalidraw/data/restore.d.ts +35 -26
  297. package/types/excalidraw/data/transform.d.ts +81 -81
  298. package/types/excalidraw/data/types.d.ts +48 -48
  299. package/types/excalidraw/deburr.d.ts +1 -1
  300. package/types/excalidraw/dist/excalidraw.development.d.ts +2 -2
  301. package/types/excalidraw/dist/excalidraw.production.min.d.ts +2 -3
  302. package/types/excalidraw/editor-jotai.d.ts +56 -56
  303. package/types/excalidraw/entry.d.ts +1 -1
  304. package/types/excalidraw/env.d.cts +1 -1
  305. package/types/excalidraw/env.d.ts +1 -1
  306. package/types/excalidraw/eraser/index.d.ts +12 -12
  307. package/types/excalidraw/errors.d.ts +29 -29
  308. package/types/excalidraw/fonts/Cascadia/index.d.ts +2 -2
  309. package/types/excalidraw/fonts/ComicShanns/index.d.ts +2 -2
  310. package/types/excalidraw/fonts/Emoji/index.d.ts +2 -2
  311. package/types/excalidraw/fonts/ExcalidrawFontFace.d.ts +29 -29
  312. package/types/excalidraw/fonts/Excalifont/index.d.ts +2 -2
  313. package/types/excalidraw/fonts/Fonts.d.ts +90 -90
  314. package/types/excalidraw/fonts/Helvetica/index.d.ts +2 -2
  315. package/types/excalidraw/fonts/Liberation/index.d.ts +2 -2
  316. package/types/excalidraw/fonts/Lilita/index.d.ts +2 -2
  317. package/types/excalidraw/fonts/Nunito/index.d.ts +2 -2
  318. package/types/excalidraw/fonts/Virgil/index.d.ts +2 -2
  319. package/types/excalidraw/fonts/Xiaolai/index.d.ts +8 -8
  320. package/types/excalidraw/fonts/index.d.ts +1 -1
  321. package/types/excalidraw/gesture.d.ts +6 -6
  322. package/types/excalidraw/history.d.ts +48 -48
  323. package/types/excalidraw/hooks/useCallbackRefState.d.ts +1 -1
  324. package/types/excalidraw/hooks/useCopiedIndicator.d.ts +5 -5
  325. package/types/excalidraw/hooks/useCreatePortalContainer.d.ts +7 -7
  326. package/types/excalidraw/hooks/useEmitter.d.ts +2 -2
  327. package/types/excalidraw/hooks/useLibraryItemSvg.d.ts +11 -11
  328. package/types/excalidraw/hooks/useOutsideClick.d.ts +21 -21
  329. package/types/excalidraw/hooks/useScrollPosition.d.ts +1 -1
  330. package/types/excalidraw/hooks/useStable.d.ts +1 -1
  331. package/types/excalidraw/hooks/useStableCallback.d.ts +4 -4
  332. package/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -14
  333. package/types/excalidraw/hooks/useTransition.d.ts +2 -2
  334. package/types/excalidraw/i18n.d.ts +24 -24
  335. package/types/excalidraw/index-node.d.ts +1 -1
  336. package/types/excalidraw/index.d.ts +60 -60
  337. package/types/excalidraw/laser-trails.d.ts +20 -20
  338. package/types/excalidraw/lasso/index.d.ts +16 -16
  339. package/types/excalidraw/lasso/utils.d.ts +13 -13
  340. package/types/excalidraw/main.d.ts +2 -2
  341. package/types/excalidraw/mermaid.d.ts +2 -2
  342. package/types/excalidraw/obsidianUtils.d.ts +41 -41
  343. package/types/excalidraw/polyfill.d.ts +2 -2
  344. package/types/excalidraw/publicPath.d.ts +1 -1
  345. package/types/excalidraw/reactUtils.d.ts +14 -14
  346. package/types/excalidraw/renderer/animation.d.ts +12 -12
  347. package/types/excalidraw/renderer/helpers.d.ts +16 -14
  348. package/types/excalidraw/renderer/interactiveScene.d.ts +14 -12
  349. package/types/excalidraw/renderer/renderNewElementScene.d.ts +7 -7
  350. package/types/excalidraw/renderer/renderSnaps.d.ts +2 -2
  351. package/types/excalidraw/renderer/roundRect.d.ts +11 -11
  352. package/types/excalidraw/renderer/staticScene.d.ts +14 -14
  353. package/types/excalidraw/renderer/staticSvgScene.d.ts +5 -5
  354. package/types/excalidraw/scene/Renderer.d.ts +29 -27
  355. package/types/excalidraw/scene/export.d.ts +37 -37
  356. package/types/excalidraw/scene/index.d.ts +4 -4
  357. package/types/excalidraw/scene/normalize.d.ts +4 -4
  358. package/types/excalidraw/scene/scroll.d.ts +18 -23
  359. package/types/excalidraw/scene/scrollbars.d.ts +11 -11
  360. package/types/excalidraw/scene/types.d.ts +134 -134
  361. package/types/excalidraw/scene/zoom.d.ts +12 -12
  362. package/types/excalidraw/shortcut.d.ts +1 -1
  363. package/types/excalidraw/snapping.d.ts +111 -111
  364. package/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +45 -45
  365. package/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +13 -13
  366. package/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +2 -2
  367. package/types/excalidraw/subset/subset-main.d.ts +12 -12
  368. package/types/excalidraw/subset/subset-shared.chunk.d.ts +32 -32
  369. package/types/excalidraw/subset/subset-worker.chunk.d.ts +15 -15
  370. package/types/excalidraw/subset/woff2/woff2-bindings.d.ts +31 -31
  371. package/types/excalidraw/subset/woff2/woff2-loader.d.ts +14 -14
  372. package/types/excalidraw/subset/woff2/woff2-wasm.d.ts +2 -2
  373. package/types/excalidraw/types.d.ts +801 -801
  374. package/types/excalidraw/webpack.dev.config.d.ts +116 -116
  375. package/types/excalidraw/webpack.prod.config.d.ts +130 -130
  376. package/types/excalidraw/workers.d.ts +36 -36
  377. package/types/excalidraw/wysiwyg/textWysiwyg.d.ts +24 -24
  378. package/types/math/src/angle.d.ts +19 -19
  379. package/types/math/src/constants.d.ts +3 -3
  380. package/types/math/src/curve.d.ts +74 -74
  381. package/types/math/src/ellipse.d.ts +44 -44
  382. package/types/math/src/index.d.ts +13 -13
  383. package/types/math/src/line.d.ts +17 -17
  384. package/types/math/src/point.d.ts +122 -122
  385. package/types/math/src/polygon.d.ts +6 -6
  386. package/types/math/src/range.d.ts +44 -44
  387. package/types/math/src/rectangle.d.ts +5 -5
  388. package/types/math/src/segment.d.ts +40 -40
  389. package/types/math/src/triangle.d.ts +11 -11
  390. package/types/math/src/types.d.ts +106 -106
  391. package/types/math/src/utils.d.ts +7 -7
  392. package/types/math/src/vector.d.ts +94 -94
  393. package/types/utils/src/bbox.d.ts +9 -9
  394. package/types/utils/src/export.d.ts +35 -35
  395. package/types/utils/src/index.d.ts +4 -4
  396. package/types/utils/src/shape.d.ts +58 -58
  397. package/types/utils/src/withinBounds.d.ts +19 -19
@@ -1,581 +1,572 @@
1
- import React from "react";
2
- import { type EXPORT_IMAGE_TYPES, Emitter, type EditorInterface, type StylesPanelMode } from "@excalidraw/common";
3
- import { LinearElementEditor, FlowChartCreator, Scene, type ElementUpdate, StoreDelta, type ApplyToOptions } from "@excalidraw/element";
4
- import type { ExcalidrawElement, ExcalidrawLinearElement, NonDeleted, NonDeletedExcalidrawElement, ExcalidrawFrameLikeElement, ExcalidrawIframeElement, ExcalidrawEmbeddableElement, Ordered, SceneElementsMap } from "@excalidraw/element/types";
5
- import type { Mutable } from "@excalidraw/common/utility-types";
6
- import { ActionManager } from "../actions/manager";
7
- import { AnimationFrameHandler } from "../animation-frame-handler";
8
- import { Fonts } from "../fonts";
9
- import { type WritableAtom } from "../editor-jotai";
10
- import { Renderer } from "../scene/Renderer";
11
- import { LaserTrails } from "../laser-trails";
12
- import { LassoTrail } from "../lasso";
13
- import { EraserTrail } from "../eraser";
14
- import type { ExportedElements } from "../data";
15
- import type { FileSystemHandle } from "../data/filesystem";
16
- import type { AppClassProperties, AppProps, AppState, ExcalidrawImperativeAPI, BinaryFiles, LibraryItems, SceneData, FrameNameBoundsCache, SidebarName, SidebarTabName, ToolType, OnUserFollowedPayload, GenerateDiagramToCode, NullableGridSize, Offsets } from "../types";
17
- import type { RoughCanvas } from "roughjs/bin/canvas";
18
- import type { ActionResult } from "../actions/types";
19
- export declare const ExcalidrawContainerContext: React.Context<{
20
- container: HTMLDivElement | null;
21
- id: string | null;
22
- }>;
23
- export declare const useApp: () => AppClassProperties;
24
- export declare const useAppProps: () => AppProps;
25
- export declare const useEditorInterface: () => Readonly<{
26
- formFactor: "phone" | "tablet" | "desktop";
27
- desktopUIMode: "tray" | "full" | "compact";
28
- userAgent: Readonly<{
29
- isMobileDevice: boolean;
30
- platform: "other" | "unknown" | "ios" | "android";
31
- }>;
32
- isTouchScreen: boolean;
33
- canFitSidebar: boolean;
34
- isLandscape: boolean;
35
- preferTrayMode: boolean;
36
- }>;
37
- export declare const useStylesPanelMode: () => StylesPanelMode;
38
- export declare const useExcalidrawContainer: () => {
39
- container: HTMLDivElement | null;
40
- id: string | null;
41
- };
42
- export declare const useExcalidrawElements: () => readonly NonDeletedExcalidrawElement[];
43
- export declare const useExcalidrawAppState: () => AppState;
44
- export declare const useExcalidrawSetAppState: () => <K extends keyof AppState>(state: AppState | ((prevState: Readonly<AppState>, props: Readonly<any>) => AppState | Pick<AppState, K> | null) | Pick<AppState, K> | null, callback?: (() => void) | undefined) => void;
45
- export declare const useExcalidrawActionManager: () => ActionManager;
46
- declare class App extends React.Component<AppProps, AppState> {
47
- canvas: AppClassProperties["canvas"];
48
- interactiveCanvas: AppClassProperties["interactiveCanvas"];
49
- rc: RoughCanvas;
50
- unmounted: boolean;
51
- actionManager: ActionManager;
52
- editorInterface: EditorInterface;
53
- private stylesPanelMode;
54
- private excalidrawContainerRef;
55
- scene: Scene;
56
- fonts: Fonts;
57
- renderer: Renderer;
58
- visibleElements: readonly NonDeletedExcalidrawElement[];
59
- private resizeObserver;
60
- library: AppClassProperties["library"];
61
- libraryItemsFromStorage: LibraryItems | undefined;
62
- id: string;
63
- private store;
64
- private history;
65
- private shouldRenderAllEmbeddables;
66
- excalidrawContainerValue: {
67
- container: HTMLDivElement | null;
68
- id: string;
69
- };
70
- files: BinaryFiles;
71
- imageCache: AppClassProperties["imageCache"];
72
- private iFrameRefs;
73
- /**
74
- * Indicates whether the embeddable's url has been validated for rendering.
75
- * If value not set, indicates that the validation is pending.
76
- * Initially or on url change the flag is not reset so that we can guarantee
77
- * the validation came from a trusted source (the editor).
78
- **/
79
- private embedsValidationStatus;
80
- /** embeds that have been inserted to DOM (as a perf optim, we don't want to
81
- * insert to DOM before user initially scrolls to them) */
82
- private initializedEmbeds;
83
- private handleToastClose;
84
- private elementsPendingErasure;
85
- flowChartCreator: FlowChartCreator;
86
- private flowChartNavigator;
87
- bindModeHandler: ReturnType<typeof setTimeout> | null;
88
- hitLinkElement?: NonDeletedExcalidrawElement;
89
- lastPointerDownEvent: React.PointerEvent<HTMLElement> | null;
90
- lastPointerUpEvent: React.PointerEvent<HTMLElement> | PointerEvent | null;
91
- lastPointerMoveEvent: PointerEvent | null;
92
- lastPointerMoveCoords: {
93
- x: number;
94
- y: number;
95
- } | null;
96
- lastViewportPosition: {
97
- x: number;
98
- y: number;
99
- };
100
- allowMobileMode: boolean;
101
- animationFrameHandler: AnimationFrameHandler;
102
- laserTrails: LaserTrails;
103
- eraserTrail: EraserTrail;
104
- lassoTrail: LassoTrail;
105
- onChangeEmitter: Emitter<[elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles]>;
106
- onPointerDownEmitter: Emitter<[activeTool: {
107
- lastActiveTool: import("../types").ActiveTool | null;
108
- locked: boolean;
109
- fromSelection: boolean;
110
- } & import("../types").ActiveTool, pointerDownState: Readonly<{
111
- origin: Readonly<{
112
- x: number;
113
- y: number;
114
- }>;
115
- originInGrid: Readonly<{
116
- x: number;
117
- y: number;
118
- }>;
119
- scrollbars: {
120
- isOverEither: boolean;
121
- isOverHorizontal: boolean;
122
- isOverVertical: boolean;
123
- };
124
- lastCoords: {
125
- x: number;
126
- y: number;
127
- };
128
- originalElements: Map<string, NonDeleted<ExcalidrawElement>>;
129
- resize: {
130
- handleType: import("@excalidraw/element").MaybeTransformHandleType;
131
- isResizing: boolean;
132
- offset: {
133
- x: number;
134
- y: number;
135
- };
136
- arrowDirection: "end" | "origin";
137
- center: {
138
- x: number;
139
- y: number;
140
- };
141
- };
142
- hit: {
143
- element: NonDeleted<ExcalidrawElement> | null;
144
- allHitElements: NonDeleted<ExcalidrawElement>[];
145
- wasAddedToSelection: boolean;
146
- hasBeenDuplicated: boolean;
147
- hasHitCommonBoundingBoxOfSelectedElements: boolean;
148
- };
149
- withCmdOrCtrl: boolean;
150
- drag: {
151
- hasOccurred: boolean;
152
- offset: {
153
- x: number;
154
- y: number;
155
- } | null;
156
- origin: {
157
- x: number;
158
- y: number;
159
- };
160
- blockDragging: boolean;
161
- };
162
- eventListeners: {
163
- onMove: {
164
- (...args: any[]): void;
165
- flush(): void;
166
- cancel(): void;
167
- } | null;
168
- onUp: ((event: PointerEvent) => void) | null;
169
- onKeyDown: ((event: KeyboardEvent) => void) | null;
170
- onKeyUp: ((event: KeyboardEvent) => void) | null;
171
- };
172
- boxSelection: {
173
- hasOccurred: boolean;
174
- };
175
- }>, event: React.PointerEvent<HTMLElement>]>;
176
- onPointerUpEmitter: Emitter<[activeTool: {
177
- lastActiveTool: import("../types").ActiveTool | null;
178
- locked: boolean;
179
- fromSelection: boolean;
180
- } & import("../types").ActiveTool, pointerDownState: Readonly<{
181
- origin: Readonly<{
182
- x: number;
183
- y: number;
184
- }>;
185
- originInGrid: Readonly<{
186
- x: number;
187
- y: number;
188
- }>;
189
- scrollbars: {
190
- isOverEither: boolean;
191
- isOverHorizontal: boolean;
192
- isOverVertical: boolean;
193
- };
194
- lastCoords: {
195
- x: number;
196
- y: number;
197
- };
198
- originalElements: Map<string, NonDeleted<ExcalidrawElement>>;
199
- resize: {
200
- handleType: import("@excalidraw/element").MaybeTransformHandleType;
201
- isResizing: boolean;
202
- offset: {
203
- x: number;
204
- y: number;
205
- };
206
- arrowDirection: "end" | "origin";
207
- center: {
208
- x: number;
209
- y: number;
210
- };
211
- };
212
- hit: {
213
- element: NonDeleted<ExcalidrawElement> | null;
214
- allHitElements: NonDeleted<ExcalidrawElement>[];
215
- wasAddedToSelection: boolean;
216
- hasBeenDuplicated: boolean;
217
- hasHitCommonBoundingBoxOfSelectedElements: boolean;
218
- };
219
- withCmdOrCtrl: boolean;
220
- drag: {
221
- hasOccurred: boolean;
222
- offset: {
223
- x: number;
224
- y: number;
225
- } | null;
226
- origin: {
227
- x: number;
228
- y: number;
229
- };
230
- blockDragging: boolean;
231
- };
232
- eventListeners: {
233
- onMove: {
234
- (...args: any[]): void;
235
- flush(): void;
236
- cancel(): void;
237
- } | null;
238
- onUp: ((event: PointerEvent) => void) | null;
239
- onKeyDown: ((event: KeyboardEvent) => void) | null;
240
- onKeyUp: ((event: KeyboardEvent) => void) | null;
241
- };
242
- boxSelection: {
243
- hasOccurred: boolean;
244
- };
245
- }>, event: PointerEvent]>;
246
- onUserFollowEmitter: Emitter<[payload: OnUserFollowedPayload]>;
247
- onScrollChangeEmitter: Emitter<[scrollX: number, scrollY: number, zoom: Readonly<{
248
- value: import("../types").NormalizedZoomValue;
249
- }>]>;
250
- missingPointerEventCleanupEmitter: Emitter<[event: PointerEvent | null]>;
251
- onRemoveEventListenersEmitter: Emitter<[]>;
252
- constructor(props: AppProps);
253
- updateEditorAtom: <Value, Args extends unknown[], Result>(atom: WritableAtom<Value, Args, Result>, ...args: Args) => Result;
254
- private onWindowMessage;
255
- private handleSkipBindMode;
256
- private resetDelayedBindMode;
257
- private previousHoveredBindableElement;
258
- private handleDelayedBindModeChange;
259
- private cacheEmbeddableRef;
260
- /**
261
- * Returns gridSize taking into account `gridModeEnabled`.
262
- * If disabled, returns null.
263
- */
264
- getEffectiveGridSize: () => NullableGridSize;
265
- private getHTMLIFrameElement;
266
- private handleEmbeddableCenterClick;
267
- private isIframeLikeElementCenter;
268
- private updateEmbedValidationStatus;
269
- private updateEmbeddables;
270
- private renderEmbeddables;
271
- private getFrameNameDOMId;
272
- frameNameBoundsCache: FrameNameBoundsCache;
273
- private resetEditingFrame;
274
- private renderFrameNames;
275
- private toggleOverscrollBehavior;
276
- render(): import("react/jsx-runtime").JSX.Element;
277
- focusContainer: AppClassProperties["focusContainer"];
278
- getSceneElementsIncludingDeleted: () => readonly import("@excalidraw/element/types").OrderedExcalidrawElement[];
279
- getSceneElementsMapIncludingDeleted: () => Map<string, Ordered<ExcalidrawElement>> & import("@excalidraw/common/utility-types").MakeBrand<"SceneElementsMap">;
280
- getSceneElements: () => readonly Ordered<NonDeletedExcalidrawElement>[];
281
- onInsertElements: (elements: readonly ExcalidrawElement[]) => void;
282
- onExportImage: (type: keyof typeof EXPORT_IMAGE_TYPES, elements: ExportedElements, opts: {
283
- exportingFrame: ExcalidrawFrameLikeElement | null;
284
- }) => Promise<void>;
285
- private magicGenerations;
286
- private updateMagicGeneration;
287
- plugins: {
288
- diagramToCode?: {
289
- generate: GenerateDiagramToCode;
290
- };
291
- };
292
- setPlugins(plugins: Partial<App["plugins"]>): void;
293
- private onMagicFrameGenerate;
294
- private onIframeSrcCopy;
295
- onMagicframeToolSelect: () => void;
296
- private openEyeDropper;
297
- dismissLinearEditor: () => void;
298
- syncActionResult: (actionResult: ActionResult) => void;
299
- private onBlur;
300
- private onUnload;
301
- private disableEvent;
302
- private resetHistory;
303
- private resetStore;
304
- /**
305
- * Resets scene & history.
306
- * ! Do not use to clear scene user action !
307
- */
308
- private resetScene;
309
- private initializeScene;
310
- private getFormFactor;
311
- refreshEditorInterface: (preferTrayMode?: boolean) => void;
312
- private reconcileStylesPanelMode;
313
- /** TO BE USED LATER */
314
- private setDesktopUIMode;
315
- private isTouchScreen;
316
- private setTrayModeEnabled;
317
- isTrayModeEnabled: () => boolean;
318
- private clearImageShapeCache;
319
- componentDidMount(): Promise<void>;
320
- componentWillUnmount(): void;
321
- private onResize;
322
- /** generally invoked only if fullscreen was invoked programmatically */
323
- private onFullscreenChange;
324
- private removeEventListeners;
325
- private addEventListeners;
326
- componentDidUpdate(prevProps: AppProps, prevState: AppState): void;
327
- private renderInteractiveSceneCallback;
328
- private onScroll;
329
- private onCut;
330
- private onCopy;
331
- private static resetTapTwice;
332
- private onTouchStart;
333
- private onTouchEnd;
334
- private insertClipboardContent;
335
- pasteFromClipboard: (event: ClipboardEvent) => Promise<void>;
336
- addElementsFromPasteOrLibrary: (opts: {
337
- elements: readonly ExcalidrawElement[];
338
- files: BinaryFiles | null;
339
- position: {
340
- clientX: number;
341
- clientY: number;
342
- } | "cursor" | "center";
343
- retainSeed?: boolean;
344
- fitToContent?: boolean;
345
- }) => void;
346
- private addElementsFromMixedContentPaste;
347
- private addTextFromPaste;
348
- setAppState: React.Component<any, AppState>["setState"];
349
- removePointer: (event: React.PointerEvent<HTMLElement> | PointerEvent) => void;
350
- toggleLock: (source?: "keyboard" | "ui") => void;
351
- updateFrameRendering: (opts: Partial<{
352
- enabled: boolean;
353
- name: boolean;
354
- outline: boolean;
355
- clip: boolean;
356
- markerName: boolean;
357
- markerEnabled: boolean;
358
- }> | ((prevState: AppState["frameRendering"]) => Partial<AppState["frameRendering"]>)) => void;
359
- togglePenMode: (force: boolean | null) => void;
360
- onHandToolToggle: () => void;
361
- /**
362
- * Zooms on canvas viewport center
363
- */
364
- zoomCanvas: (value: number) => void;
365
- private cancelInProgressAnimation;
366
- scrollToContent: (target?: string | ExcalidrawElement | readonly ExcalidrawElement[], opts?: ({
367
- fitToContent?: boolean;
368
- fitToViewport?: never;
369
- viewportZoomFactor?: number;
370
- animate?: boolean;
371
- duration?: number;
372
- } | {
373
- fitToContent?: never;
374
- fitToViewport?: boolean;
375
- /** when fitToViewport=true, how much screen should the content cover,
376
- * between 0.1 (10%) and 1 (100%)
377
- */
378
- viewportZoomFactor?: number;
379
- animate?: boolean;
380
- duration?: number;
381
- }) & {
382
- minZoom?: number;
383
- maxZoom?: number;
384
- canvasOffsets?: Offsets;
385
- }) => void;
386
- private maybeUnfollowRemoteUser;
387
- /** use when changing scrollX/scrollY/zoom based on user interaction */
388
- private translateCanvas;
389
- setForceRenderAllEmbeddables: (force: boolean) => void;
390
- zoomToFit: (target?: readonly ExcalidrawElement[], maxZoom?: number, margin?: number) => void;
391
- getColorAtScenePoint: ({ sceneX, sceneY, }: {
392
- sceneX: number;
393
- sceneY: number;
394
- }) => string | null;
395
- startLineEditor: (el: ExcalidrawLinearElement, selectedPointsIndices?: number[] | null) => void;
396
- updateContainerSize: (containers: NonDeletedExcalidrawElement[]) => void;
397
- setToast: (toast: {
398
- message: string;
399
- closable?: boolean;
400
- duration?: number;
401
- } | null) => void;
402
- restoreFileFromShare: () => Promise<void>;
403
- /**
404
- * adds supplied files to existing files in the appState.
405
- * NOTE if file already exists in editor state, the file data is not updated
406
- * */
407
- addFiles: ExcalidrawImperativeAPI["addFiles"];
408
- setMobileModeAllowed: (allow: boolean) => void;
409
- private debounceClearHighlightSearchResults;
410
- selectElements: ExcalidrawImperativeAPI["selectElements"];
411
- bringToFront: ExcalidrawImperativeAPI["bringToFront"];
412
- bringForward: ExcalidrawImperativeAPI["bringForward"];
413
- sendToBack: ExcalidrawImperativeAPI["sendToBack"];
414
- sendBackward: ExcalidrawImperativeAPI["sendBackward"];
415
- private addMissingFiles;
416
- updateScene: <K extends keyof AppState>(sceneData: {
417
- elements?: SceneData["elements"];
418
- appState?: Pick<AppState, K> | null | undefined;
419
- collaborators?: SceneData["collaborators"];
420
- /**
421
- * Controls which updates should be captured by the `Store`. Captured updates are emmitted and listened to by other components, such as `History` for undo / redo purposes.
422
- *
423
- * - `CaptureUpdateAction.IMMEDIATELY`: Updates are immediately undoable. Use for most local updates.
424
- * - `CaptureUpdateAction.NEVER`: Updates never make it to undo/redo stack. Use for remote updates or scene initialization.
425
- * - `CaptureUpdateAction.EVENTUALLY`: Updates will be eventually be captured as part of a future increment.
426
- *
427
- * Check [API docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props/excalidraw-api#captureUpdate) for more details.
428
- *
429
- * @default CaptureUpdateAction.EVENTUALLY
430
- */
431
- captureUpdate?: SceneData["captureUpdate"];
432
- forceFlushSync?: boolean | undefined;
433
- }) => void;
434
- applyDeltas: (deltas: StoreDelta[], options?: ApplyToOptions) => [SceneElementsMap, AppState, boolean];
435
- mutateElement: <TElement extends Mutable<ExcalidrawElement>>(element: TElement, updates: ElementUpdate<TElement>, informMutation?: boolean) => TElement;
436
- private triggerRender;
437
- /**
438
- * @returns whether the menu was toggled on or off
439
- */
440
- toggleSidebar: ({ name, tab, force, }: {
441
- name: SidebarName | null;
442
- tab?: string | undefined;
443
- force?: boolean | undefined;
444
- }) => boolean;
445
- private updateCurrentCursorPosition;
446
- getEditorUIOffsets: () => Offsets;
447
- private onKeyDown;
448
- private onKeyUp;
449
- private isToolSupported;
450
- setActiveTool: (tool: ({
451
- type: ToolType;
452
- } | {
453
- type: "custom";
454
- customType: string;
455
- }) & {
456
- locked?: boolean;
457
- fromSelection?: boolean;
458
- }, keepSelection?: boolean) => void;
459
- setOpenDialog: (dialogType: AppState["openDialog"]) => void;
460
- private setCursor;
461
- private resetCursor;
462
- /**
463
- * returns whether user is making a gesture with >= 2 fingers (points)
464
- * on o touch screen (not on a trackpad). Currently only relates to Darwin
465
- * (iOS/iPadOS,MacOS), but may work on other devices in the future if
466
- * GestureEvent is standardized.
467
- */
468
- private isTouchScreenMultiTouchGesture;
469
- getName: () => string;
470
- private onGestureStart;
471
- private onGestureChange;
472
- private onGestureEnd;
473
- private handleTextWysiwyg;
474
- private deselectElements;
475
- private getTextElementAtPosition;
476
- private getElementAtPosition;
477
- private getElementsAtPosition;
478
- getElementHitThreshold(element: ExcalidrawElement): number;
479
- private hitElement;
480
- private getTextBindableContainerAtPosition;
481
- private startTextEditing;
482
- private debounceDoubleClickTimestamp;
483
- private startImageCropping;
484
- private finishImageCropping;
485
- private handleCanvasDoubleClick;
486
- private getElementLinkAtPosition;
487
- private redirectToLink;
488
- private getTopLayerFrameAtSceneCoords;
489
- private handleCanvasPointerMove;
490
- private handleEraser;
491
- private handleTouchMove;
492
- handleHoverSelectedLinearElement(linearElementEditor: LinearElementEditor, scenePointerX: number, scenePointerY: number): void;
493
- private handleCanvasPointerDown;
494
- private handleCanvasPointerUp;
495
- private maybeOpenContextMenuAfterPointerDownOnTouchDevices;
496
- private resetContextMenuTimer;
497
- /**
498
- * pointerup may not fire in certian cases (user tabs away...), so in order
499
- * to properly cleanup pointerdown state, we need to fire any hanging
500
- * pointerup handlers manually
501
- */
502
- private maybeCleanupAfterMissingPointerUp;
503
- handleCanvasPanUsingWheelOrSpaceDrag: (event: React.PointerEvent<HTMLElement> | MouseEvent) => boolean;
504
- private startRightClickPanning;
505
- private updateGestureOnPointerDown;
506
- private initialPointerDownState;
507
- private handleDraggingScrollBar;
508
- private clearSelectionIfNotUsingSelection;
509
- /**
510
- * @returns whether the pointer event has been completely handled
511
- */
512
- private handleSelectionOnPointerDown;
513
- private isASelectedElement;
514
- private isHittingCommonBoundingBoxOfSelectedElements;
515
- private handleTextOnPointerDown;
516
- private handleFreeDrawElementOnPointerDown;
517
- insertIframeElement: ({ sceneX, sceneY, width, height, }: {
518
- sceneX: number;
519
- sceneY: number;
520
- width: number;
521
- height: number;
522
- }) => NonDeleted<ExcalidrawIframeElement>;
523
- insertEmbeddableElement: ({ sceneX, sceneY, link, }: {
524
- sceneX: number;
525
- sceneY: number;
526
- link: string;
527
- }) => NonDeleted<ExcalidrawEmbeddableElement> | undefined;
528
- private newImagePlaceholder;
529
- private handleLinearElementOnPointerDown;
530
- private getCurrentItemRoundness;
531
- private createGenericElementOnPointerDown;
532
- private createFrameElementOnPointerDown;
533
- private maybeCacheReferenceSnapPoints;
534
- private maybeCacheVisibleGaps;
535
- private onKeyDownFromPointerDownHandler;
536
- private onKeyUpFromPointerDownHandler;
537
- private onPointerMoveFromPointerDownHandler;
538
- private handlePointerMoveOverScrollbars;
539
- private onPointerUpFromPointerDownHandler;
540
- private restoreReadyToEraseElements;
541
- private eraseElements;
542
- private initializeImage;
543
- /**
544
- * use during async image initialization,
545
- * when the placeholder image could have been modified in the meantime,
546
- * and when you don't want to loose those modifications
547
- */
548
- private getLatestInitializedImageElement;
549
- private onImageToolbarButtonClick;
550
- private getImageNaturalDimensions;
551
- /** updates image cache, refreshing updated elements and/or setting status
552
- to error for images that fail during <img> element creation */
553
- private updateImageCache;
554
- /** adds new images to imageCache and re-renders if needed */
555
- private addNewImagesToImageCache;
556
- /** generally you should use `addNewImagesToImageCache()` directly if you need
557
- * to render new images. This is just a failsafe */
558
- private scheduleImageRefresh;
559
- private updateBindingEnabledOnPointerMove;
560
- setSelection(elements: readonly NonDeletedExcalidrawElement[]): void;
561
- private clearSelection;
562
- private handleInteractiveCanvasRef;
563
- private insertImages;
564
- private handleAppOnDrop;
565
- loadFileToCanvas: (file: File, fileHandle: FileSystemHandle | null) => Promise<void>;
566
- private handleCanvasContextMenu;
567
- private maybeDragNewGenericElement;
568
- private maybeHandleCrop;
569
- private maybeHandleResize;
570
- private getContextMenuItems;
571
- private handleWheel;
572
- private getTextWysiwygSnappedToCenterPosition;
573
- private savePointer;
574
- private resetShouldCacheIgnoreZoomDebounced;
575
- private updateDOMRect;
576
- refresh: () => void;
577
- private getCanvasOffsets;
578
- watchState: () => void;
579
- private updateLanguage;
580
- }
581
- export default App;
1
+ import React from "react";
2
+ import { type EXPORT_IMAGE_TYPES, Emitter, type EditorInterface, type StylesPanelMode } from "@excalidraw/common";
3
+ import { LinearElementEditor, FlowChartCreator, Scene, type ElementUpdate, StoreDelta, type ApplyToOptions } from "@excalidraw/element";
4
+ import type { ExcalidrawElement, ExcalidrawLinearElement, NonDeleted, NonDeletedExcalidrawElement, ExcalidrawFrameLikeElement, ExcalidrawIframeElement, ExcalidrawEmbeddableElement, Ordered, SceneElementsMap } from "@excalidraw/element/types";
5
+ import type { Mutable } from "@excalidraw/common/utility-types";
6
+ import { ActionManager } from "../actions/manager";
7
+ import { AnimationFrameHandler } from "../animation-frame-handler";
8
+ import { Fonts } from "../fonts";
9
+ import { type WritableAtom } from "../editor-jotai";
10
+ import { Renderer } from "../scene/Renderer";
11
+ import { LaserTrails } from "../laser-trails";
12
+ import { isOverScrollBars } from "../scene/scrollbars";
13
+ import { LassoTrail } from "../lasso";
14
+ import { EraserTrail } from "../eraser";
15
+ import type { ExportedElements } from "../data";
16
+ import type { FileSystemHandle } from "../data/filesystem";
17
+ import type { AppClassProperties, AppProps, AppState, ExcalidrawImperativeAPI, BinaryFiles, LibraryItems, SceneData, FrameNameBoundsCache, SidebarName, SidebarTabName, ToolType, OnUserFollowedPayload, GenerateDiagramToCode, NullableGridSize, Offsets } from "../types";
18
+ import type { RoughCanvas } from "roughjs/bin/canvas";
19
+ import type { ActionResult } from "../actions/types";
20
+ export declare const ExcalidrawContainerContext: React.Context<{
21
+ container: HTMLDivElement | null;
22
+ id: string | null;
23
+ }>;
24
+ export declare const useApp: () => AppClassProperties;
25
+ export declare const useAppProps: () => AppProps;
26
+ export declare const useEditorInterface: () => Readonly<{
27
+ formFactor: "phone" | "tablet" | "desktop";
28
+ desktopUIMode: "compact" | "full" | "tray";
29
+ userAgent: Readonly<{
30
+ isMobileDevice: boolean;
31
+ platform: "ios" | "android" | "other" | "unknown";
32
+ }>;
33
+ isTouchScreen: boolean;
34
+ canFitSidebar: boolean;
35
+ isLandscape: boolean;
36
+ preferTrayMode: boolean;
37
+ }>;
38
+ export declare const useStylesPanelMode: () => StylesPanelMode;
39
+ export declare const useExcalidrawContainer: () => {
40
+ container: HTMLDivElement | null;
41
+ id: string | null;
42
+ };
43
+ export declare const useExcalidrawElements: () => readonly NonDeletedExcalidrawElement[];
44
+ export declare const useExcalidrawAppState: () => AppState;
45
+ export declare const useExcalidrawSetAppState: () => <K extends keyof AppState>(state: AppState | ((prevState: Readonly<AppState>, props: Readonly<any>) => AppState | Pick<AppState, K> | null) | Pick<AppState, K> | null, callback?: (() => void) | undefined) => void;
46
+ export declare const useExcalidrawActionManager: () => ActionManager;
47
+ declare class App extends React.Component<AppProps, AppState> {
48
+ canvas: AppClassProperties["canvas"];
49
+ interactiveCanvas: AppClassProperties["interactiveCanvas"];
50
+ rc: RoughCanvas;
51
+ unmounted: boolean;
52
+ actionManager: ActionManager;
53
+ editorInterface: EditorInterface;
54
+ private stylesPanelMode;
55
+ private excalidrawContainerRef;
56
+ scene: Scene;
57
+ fonts: Fonts;
58
+ renderer: Renderer;
59
+ visibleElements: readonly NonDeletedExcalidrawElement[];
60
+ private resizeObserver;
61
+ library: AppClassProperties["library"];
62
+ libraryItemsFromStorage: LibraryItems | undefined;
63
+ id: string;
64
+ private store;
65
+ private history;
66
+ private shouldRenderAllEmbeddables;
67
+ excalidrawContainerValue: {
68
+ container: HTMLDivElement | null;
69
+ id: string;
70
+ };
71
+ files: BinaryFiles;
72
+ imageCache: AppClassProperties["imageCache"];
73
+ private iFrameRefs;
74
+ /**
75
+ * Indicates whether the embeddable's url has been validated for rendering.
76
+ * If value not set, indicates that the validation is pending.
77
+ * Initially or on url change the flag is not reset so that we can guarantee
78
+ * the validation came from a trusted source (the editor).
79
+ **/
80
+ private embedsValidationStatus;
81
+ /** embeds that have been inserted to DOM (as a perf optim, we don't want to
82
+ * insert to DOM before user initially scrolls to them) */
83
+ private initializedEmbeds;
84
+ private handleToastClose;
85
+ private elementsPendingErasure;
86
+ flowChartCreator: FlowChartCreator;
87
+ private flowChartNavigator;
88
+ bindModeHandler: ReturnType<typeof setTimeout> | null;
89
+ hitLinkElement?: NonDeletedExcalidrawElement;
90
+ lastPointerDownEvent: React.PointerEvent<HTMLElement> | null;
91
+ lastPointerUpEvent: React.PointerEvent<HTMLElement> | PointerEvent | null;
92
+ lastPointerMoveEvent: PointerEvent | null;
93
+ lastPointerMoveCoords: {
94
+ x: number;
95
+ y: number;
96
+ } | null;
97
+ lastViewportPosition: {
98
+ x: number;
99
+ y: number;
100
+ };
101
+ allowMobileMode: boolean;
102
+ animationFrameHandler: AnimationFrameHandler;
103
+ laserTrails: LaserTrails;
104
+ eraserTrail: EraserTrail;
105
+ lassoTrail: LassoTrail;
106
+ onChangeEmitter: Emitter<[elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles]>;
107
+ onPointerDownEmitter: Emitter<[activeTool: {
108
+ lastActiveTool: import("../types").ActiveTool | null;
109
+ locked: boolean;
110
+ fromSelection: boolean;
111
+ } & import("../types").ActiveTool, pointerDownState: Readonly<{
112
+ origin: Readonly<{
113
+ x: number;
114
+ y: number;
115
+ }>;
116
+ originInGrid: Readonly<{
117
+ x: number;
118
+ y: number;
119
+ }>;
120
+ scrollbars: ReturnType<typeof isOverScrollBars>;
121
+ lastCoords: {
122
+ x: number;
123
+ y: number;
124
+ };
125
+ originalElements: Map<string, NonDeleted<ExcalidrawElement>>;
126
+ resize: {
127
+ handleType: import("@excalidraw/element").MaybeTransformHandleType;
128
+ isResizing: boolean;
129
+ offset: {
130
+ x: number;
131
+ y: number;
132
+ };
133
+ arrowDirection: "origin" | "end";
134
+ center: {
135
+ x: number;
136
+ y: number;
137
+ };
138
+ };
139
+ hit: {
140
+ element: NonDeleted<ExcalidrawElement> | null;
141
+ allHitElements: NonDeleted<ExcalidrawElement>[];
142
+ wasAddedToSelection: boolean;
143
+ hasBeenDuplicated: boolean;
144
+ hasHitCommonBoundingBoxOfSelectedElements: boolean;
145
+ };
146
+ withCmdOrCtrl: boolean;
147
+ drag: {
148
+ hasOccurred: boolean;
149
+ offset: {
150
+ x: number;
151
+ y: number;
152
+ } | null;
153
+ origin: {
154
+ x: number;
155
+ y: number;
156
+ };
157
+ blockDragging: boolean;
158
+ };
159
+ eventListeners: {
160
+ onMove: null | ReturnType<typeof import("@excalidraw/common").throttleRAF>;
161
+ onUp: null | ((event: PointerEvent) => void);
162
+ onKeyDown: null | ((event: KeyboardEvent) => void);
163
+ onKeyUp: null | ((event: KeyboardEvent) => void);
164
+ };
165
+ boxSelection: {
166
+ hasOccurred: boolean;
167
+ };
168
+ }>, event: React.PointerEvent<HTMLElement>]>;
169
+ onPointerUpEmitter: Emitter<[activeTool: {
170
+ lastActiveTool: import("../types").ActiveTool | null;
171
+ locked: boolean;
172
+ fromSelection: boolean;
173
+ } & import("../types").ActiveTool, pointerDownState: Readonly<{
174
+ origin: Readonly<{
175
+ x: number;
176
+ y: number;
177
+ }>;
178
+ originInGrid: Readonly<{
179
+ x: number;
180
+ y: number;
181
+ }>;
182
+ scrollbars: ReturnType<typeof isOverScrollBars>;
183
+ lastCoords: {
184
+ x: number;
185
+ y: number;
186
+ };
187
+ originalElements: Map<string, NonDeleted<ExcalidrawElement>>;
188
+ resize: {
189
+ handleType: import("@excalidraw/element").MaybeTransformHandleType;
190
+ isResizing: boolean;
191
+ offset: {
192
+ x: number;
193
+ y: number;
194
+ };
195
+ arrowDirection: "origin" | "end";
196
+ center: {
197
+ x: number;
198
+ y: number;
199
+ };
200
+ };
201
+ hit: {
202
+ element: NonDeleted<ExcalidrawElement> | null;
203
+ allHitElements: NonDeleted<ExcalidrawElement>[];
204
+ wasAddedToSelection: boolean;
205
+ hasBeenDuplicated: boolean;
206
+ hasHitCommonBoundingBoxOfSelectedElements: boolean;
207
+ };
208
+ withCmdOrCtrl: boolean;
209
+ drag: {
210
+ hasOccurred: boolean;
211
+ offset: {
212
+ x: number;
213
+ y: number;
214
+ } | null;
215
+ origin: {
216
+ x: number;
217
+ y: number;
218
+ };
219
+ blockDragging: boolean;
220
+ };
221
+ eventListeners: {
222
+ onMove: null | ReturnType<typeof import("@excalidraw/common").throttleRAF>;
223
+ onUp: null | ((event: PointerEvent) => void);
224
+ onKeyDown: null | ((event: KeyboardEvent) => void);
225
+ onKeyUp: null | ((event: KeyboardEvent) => void);
226
+ };
227
+ boxSelection: {
228
+ hasOccurred: boolean;
229
+ };
230
+ }>, event: PointerEvent]>;
231
+ onUserFollowEmitter: Emitter<[payload: OnUserFollowedPayload]>;
232
+ onScrollChangeEmitter: Emitter<[scrollX: number, scrollY: number, zoom: Readonly<{
233
+ value: import("../types").NormalizedZoomValue;
234
+ }>]>;
235
+ missingPointerEventCleanupEmitter: Emitter<[event: PointerEvent | null]>;
236
+ onRemoveEventListenersEmitter: Emitter<[]>;
237
+ constructor(props: AppProps);
238
+ updateEditorAtom: <Value, Args extends unknown[], Result>(atom: WritableAtom<Value, Args, Result>, ...args: Args) => Result;
239
+ private onWindowMessage;
240
+ private handleSkipBindMode;
241
+ private resetDelayedBindMode;
242
+ private previousHoveredBindableElement;
243
+ private handleDelayedBindModeChange;
244
+ private cacheEmbeddableRef;
245
+ /**
246
+ * Returns gridSize taking into account `gridModeEnabled`.
247
+ * If disabled, returns null.
248
+ */
249
+ getEffectiveGridSize: () => NullableGridSize;
250
+ private getHTMLIFrameElement;
251
+ private handleEmbeddableCenterClick;
252
+ private isIframeLikeElementCenter;
253
+ private updateEmbedValidationStatus;
254
+ private updateEmbeddables;
255
+ private renderEmbeddables;
256
+ private getFrameNameDOMId;
257
+ frameNameBoundsCache: FrameNameBoundsCache;
258
+ private resetEditingFrame;
259
+ private renderFrameNames;
260
+ private toggleOverscrollBehavior;
261
+ render(): import("react/jsx-runtime").JSX.Element;
262
+ focusContainer: AppClassProperties["focusContainer"];
263
+ getSceneElementsIncludingDeleted: () => readonly import("@excalidraw/element/types").OrderedExcalidrawElement[];
264
+ getSceneElementsMapIncludingDeleted: () => Map<string, Ordered<ExcalidrawElement>> & import("@excalidraw/common/utility-types").MakeBrand<"SceneElementsMap">;
265
+ getSceneElements: () => readonly Ordered<NonDeletedExcalidrawElement>[];
266
+ onInsertElements: (elements: readonly ExcalidrawElement[]) => void;
267
+ onExportImage: (type: keyof typeof EXPORT_IMAGE_TYPES, elements: ExportedElements, opts: {
268
+ exportingFrame: ExcalidrawFrameLikeElement | null;
269
+ }) => Promise<void>;
270
+ private magicGenerations;
271
+ private updateMagicGeneration;
272
+ plugins: {
273
+ diagramToCode?: {
274
+ generate: GenerateDiagramToCode;
275
+ };
276
+ };
277
+ setPlugins(plugins: Partial<App["plugins"]>): void;
278
+ private onMagicFrameGenerate;
279
+ private onIframeSrcCopy;
280
+ onMagicframeToolSelect: () => void;
281
+ private openEyeDropper;
282
+ dismissLinearEditor: () => void;
283
+ syncActionResult: (actionResult: ActionResult) => void;
284
+ private onBlur;
285
+ private onUnload;
286
+ private disableEvent;
287
+ private resetHistory;
288
+ private resetStore;
289
+ /**
290
+ * Resets scene & history.
291
+ * ! Do not use to clear scene user action !
292
+ */
293
+ private resetScene;
294
+ private initializeScene;
295
+ private getFormFactor;
296
+ refreshEditorInterface: (preferTrayMode?: boolean) => void;
297
+ private reconcileStylesPanelMode;
298
+ /** TO BE USED LATER */
299
+ private setDesktopUIMode;
300
+ private isTouchScreen;
301
+ private setTrayModeEnabled;
302
+ isTrayModeEnabled: () => boolean;
303
+ private clearImageShapeCache;
304
+ componentDidMount(): Promise<void>;
305
+ componentWillUnmount(): void;
306
+ private onResize;
307
+ /** generally invoked only if fullscreen was invoked programmatically */
308
+ private onFullscreenChange;
309
+ private removeEventListeners;
310
+ private addEventListeners;
311
+ componentDidUpdate(prevProps: AppProps, prevState: AppState): void;
312
+ private renderInteractiveSceneCallback;
313
+ private onScroll;
314
+ private onCut;
315
+ private onCopy;
316
+ private static resetTapTwice;
317
+ private onTouchStart;
318
+ private onTouchEnd;
319
+ private insertClipboardContent;
320
+ pasteFromClipboard: (event: ClipboardEvent) => Promise<void>;
321
+ addElementsFromPasteOrLibrary: (opts: {
322
+ elements: readonly ExcalidrawElement[];
323
+ files: BinaryFiles | null;
324
+ position: {
325
+ clientX: number;
326
+ clientY: number;
327
+ } | "cursor" | "center";
328
+ retainSeed?: boolean;
329
+ fitToContent?: boolean;
330
+ }) => void;
331
+ private addElementsFromMixedContentPaste;
332
+ private addTextFromPaste;
333
+ setAppState: React.Component<any, AppState>["setState"];
334
+ removePointer: (event: React.PointerEvent<HTMLElement> | PointerEvent) => void;
335
+ toggleLock: (source?: "keyboard" | "ui") => void;
336
+ updateFrameRendering: (opts: Partial<AppState["frameRendering"]> | ((prevState: AppState["frameRendering"]) => Partial<AppState["frameRendering"]>)) => void;
337
+ togglePenMode: (force: boolean | null) => void;
338
+ onHandToolToggle: () => void;
339
+ /**
340
+ * Zooms on canvas viewport center
341
+ */
342
+ zoomCanvas: (
343
+ /**
344
+ * Decimal fraction, auto-clamped between MIN_ZOOM and MAX_ZOOM.
345
+ * 1 = 100% zoom, 2 = 200% zoom, 0.5 = 50% zoom
346
+ */
347
+ value: number) => void;
348
+ private cancelInProgressAnimation;
349
+ scrollToContent: (
350
+ /**
351
+ * target to scroll to
352
+ *
353
+ * - string - id of element or group, or url containing elementLink
354
+ * - ExcalidrawElement | ExcalidrawElement[] - element(s) objects
355
+ */
356
+ target?: string | ExcalidrawElement | readonly ExcalidrawElement[], opts?: ({
357
+ fitToContent?: boolean;
358
+ fitToViewport?: never;
359
+ viewportZoomFactor?: number;
360
+ animate?: boolean;
361
+ duration?: number;
362
+ } | {
363
+ fitToContent?: never;
364
+ fitToViewport?: boolean;
365
+ /** when fitToViewport=true, how much screen should the content cover,
366
+ * between 0.1 (10%) and 1 (100%)
367
+ */
368
+ viewportZoomFactor?: number;
369
+ animate?: boolean;
370
+ duration?: number;
371
+ }) & {
372
+ minZoom?: number;
373
+ maxZoom?: number;
374
+ canvasOffsets?: Offsets;
375
+ }) => void;
376
+ private maybeUnfollowRemoteUser;
377
+ /** use when changing scrollX/scrollY/zoom based on user interaction */
378
+ private translateCanvas;
379
+ setForceRenderAllEmbeddables: (force: boolean) => void;
380
+ zoomToFit: (target?: readonly ExcalidrawElement[], maxZoom?: number, //null will zoom to max based on viewport
381
+ margin?: number) => void;
382
+ getColorAtScenePoint: ({ sceneX, sceneY, }: {
383
+ sceneX: number;
384
+ sceneY: number;
385
+ }) => string | null;
386
+ startLineEditor: (el: ExcalidrawLinearElement, selectedPointsIndices?: number[] | null) => void;
387
+ updateContainerSize: (containers: NonDeletedExcalidrawElement[]) => void;
388
+ setToast: (toast: {
389
+ message: string;
390
+ closable?: boolean;
391
+ duration?: number;
392
+ } | null) => void;
393
+ restoreFileFromShare: () => Promise<void>;
394
+ /**
395
+ * adds supplied files to existing files in the appState.
396
+ * NOTE if file already exists in editor state, the file data is not updated
397
+ * */
398
+ addFiles: ExcalidrawImperativeAPI["addFiles"];
399
+ setMobileModeAllowed: (allow: boolean) => void;
400
+ private debounceClearHighlightSearchResults;
401
+ selectElements: ExcalidrawImperativeAPI["selectElements"];
402
+ bringToFront: ExcalidrawImperativeAPI["bringToFront"];
403
+ bringForward: ExcalidrawImperativeAPI["bringForward"];
404
+ sendToBack: ExcalidrawImperativeAPI["sendToBack"];
405
+ sendBackward: ExcalidrawImperativeAPI["sendBackward"];
406
+ private addMissingFiles;
407
+ updateScene: <K extends keyof AppState>(sceneData: {
408
+ elements?: SceneData["elements"];
409
+ appState?: Pick<AppState, K> | null;
410
+ collaborators?: SceneData["collaborators"];
411
+ /**
412
+ * Controls which updates should be captured by the `Store`. Captured updates are emmitted and listened to by other components, such as `History` for undo / redo purposes.
413
+ *
414
+ * - `CaptureUpdateAction.IMMEDIATELY`: Updates are immediately undoable. Use for most local updates.
415
+ * - `CaptureUpdateAction.NEVER`: Updates never make it to undo/redo stack. Use for remote updates or scene initialization.
416
+ * - `CaptureUpdateAction.EVENTUALLY`: Updates will be eventually be captured as part of a future increment.
417
+ *
418
+ * Check [API docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props/excalidraw-api#captureUpdate) for more details.
419
+ *
420
+ * @default CaptureUpdateAction.EVENTUALLY
421
+ */
422
+ captureUpdate?: SceneData["captureUpdate"];
423
+ forceFlushSync?: boolean;
424
+ }) => void;
425
+ applyDeltas: (deltas: StoreDelta[], options?: ApplyToOptions) => [SceneElementsMap, AppState, boolean];
426
+ mutateElement: <TElement extends Mutable<ExcalidrawElement>>(element: TElement, updates: ElementUpdate<TElement>, informMutation?: boolean) => TElement;
427
+ private triggerRender;
428
+ /**
429
+ * @returns whether the menu was toggled on or off
430
+ */
431
+ toggleSidebar: ({ name, tab, force, }: {
432
+ name: SidebarName | null;
433
+ tab?: SidebarTabName;
434
+ force?: boolean;
435
+ }) => boolean;
436
+ private updateCurrentCursorPosition;
437
+ getEditorUIOffsets: () => Offsets;
438
+ private onKeyDown;
439
+ private onKeyUp;
440
+ private isToolSupported;
441
+ setActiveTool: (tool: ({
442
+ type: ToolType;
443
+ } | {
444
+ type: "custom";
445
+ customType: string;
446
+ }) & {
447
+ locked?: boolean;
448
+ fromSelection?: boolean;
449
+ }, keepSelection?: boolean) => void;
450
+ setOpenDialog: (dialogType: AppState["openDialog"]) => void;
451
+ private setCursor;
452
+ private resetCursor;
453
+ /**
454
+ * returns whether user is making a gesture with >= 2 fingers (points)
455
+ * on o touch screen (not on a trackpad). Currently only relates to Darwin
456
+ * (iOS/iPadOS,MacOS), but may work on other devices in the future if
457
+ * GestureEvent is standardized.
458
+ */
459
+ private isTouchScreenMultiTouchGesture;
460
+ getName: () => string;
461
+ private onGestureStart;
462
+ private onGestureChange;
463
+ private onGestureEnd;
464
+ private handleTextWysiwyg;
465
+ private deselectElements;
466
+ private getTextElementAtPosition;
467
+ private getElementAtPosition;
468
+ private getElementsAtPosition;
469
+ getElementHitThreshold(element: ExcalidrawElement): number;
470
+ private hitElement;
471
+ private getTextBindableContainerAtPosition;
472
+ private startTextEditing;
473
+ private debounceDoubleClickTimestamp;
474
+ private startImageCropping;
475
+ private finishImageCropping;
476
+ private handleCanvasDoubleClick;
477
+ private getElementLinkAtPosition;
478
+ private redirectToLink;
479
+ private getTopLayerFrameAtSceneCoords;
480
+ private handleCanvasPointerMove;
481
+ private handleEraser;
482
+ private handleTouchMove;
483
+ handleHoverSelectedLinearElement(linearElementEditor: LinearElementEditor, scenePointerX: number, scenePointerY: number): void;
484
+ private handleCanvasPointerDown;
485
+ private handleCanvasPointerUp;
486
+ private maybeOpenContextMenuAfterPointerDownOnTouchDevices;
487
+ private resetContextMenuTimer;
488
+ /**
489
+ * pointerup may not fire in certian cases (user tabs away...), so in order
490
+ * to properly cleanup pointerdown state, we need to fire any hanging
491
+ * pointerup handlers manually
492
+ */
493
+ private maybeCleanupAfterMissingPointerUp;
494
+ handleCanvasPanUsingWheelOrSpaceDrag: (event: React.PointerEvent<HTMLElement> | MouseEvent) => boolean;
495
+ private startRightClickPanning;
496
+ private updateGestureOnPointerDown;
497
+ private initialPointerDownState;
498
+ private handleDraggingScrollBar;
499
+ private clearSelectionIfNotUsingSelection;
500
+ /**
501
+ * @returns whether the pointer event has been completely handled
502
+ */
503
+ private handleSelectionOnPointerDown;
504
+ private isASelectedElement;
505
+ private isHittingCommonBoundingBoxOfSelectedElements;
506
+ private handleTextOnPointerDown;
507
+ private handleFreeDrawElementOnPointerDown;
508
+ insertIframeElement: ({ sceneX, sceneY, width, height, }: {
509
+ sceneX: number;
510
+ sceneY: number;
511
+ width: number;
512
+ height: number;
513
+ }) => NonDeleted<ExcalidrawIframeElement>;
514
+ insertEmbeddableElement: ({ sceneX, sceneY, link, }: {
515
+ sceneX: number;
516
+ sceneY: number;
517
+ link: string;
518
+ }) => NonDeleted<ExcalidrawEmbeddableElement> | undefined;
519
+ private newImagePlaceholder;
520
+ private handleLinearElementOnPointerDown;
521
+ private getCurrentItemRoundness;
522
+ private createGenericElementOnPointerDown;
523
+ private createFrameElementOnPointerDown;
524
+ private maybeCacheReferenceSnapPoints;
525
+ private maybeCacheVisibleGaps;
526
+ private onKeyDownFromPointerDownHandler;
527
+ private onKeyUpFromPointerDownHandler;
528
+ private onPointerMoveFromPointerDownHandler;
529
+ private handlePointerMoveOverScrollbars;
530
+ private onPointerUpFromPointerDownHandler;
531
+ private restoreReadyToEraseElements;
532
+ private eraseElements;
533
+ private initializeImage;
534
+ /**
535
+ * use during async image initialization,
536
+ * when the placeholder image could have been modified in the meantime,
537
+ * and when you don't want to loose those modifications
538
+ */
539
+ private getLatestInitializedImageElement;
540
+ private onImageToolbarButtonClick;
541
+ private getImageNaturalDimensions;
542
+ /** updates image cache, refreshing updated elements and/or setting status
543
+ to error for images that fail during <img> element creation */
544
+ private updateImageCache;
545
+ /** adds new images to imageCache and re-renders if needed */
546
+ private addNewImagesToImageCache;
547
+ /** generally you should use `addNewImagesToImageCache()` directly if you need
548
+ * to render new images. This is just a failsafe */
549
+ private scheduleImageRefresh;
550
+ private updateBindingEnabledOnPointerMove;
551
+ setSelection(elements: readonly NonDeletedExcalidrawElement[]): void;
552
+ private clearSelection;
553
+ private handleInteractiveCanvasRef;
554
+ private insertImages;
555
+ private handleAppOnDrop;
556
+ loadFileToCanvas: (file: File, fileHandle: FileSystemHandle | null) => Promise<void>;
557
+ private handleCanvasContextMenu;
558
+ private maybeDragNewGenericElement;
559
+ private maybeHandleCrop;
560
+ private maybeHandleResize;
561
+ private getContextMenuItems;
562
+ private handleWheel;
563
+ private getTextWysiwygSnappedToCenterPosition;
564
+ private savePointer;
565
+ private resetShouldCacheIgnoreZoomDebounced;
566
+ private updateDOMRect;
567
+ refresh: () => void;
568
+ private getCanvasOffsets;
569
+ watchState: () => void;
570
+ private updateLanguage;
571
+ }
572
+ export default App;