@zsviczian/excalidraw 0.18.0-3 → 0.18.0-30

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