@dwelle/excalidraw 0.4.0-e1bdbb6 → 0.4.0-e587816

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 (240) hide show
  1. package/CHANGELOG.md +714 -0
  2. package/README.md +18 -1422
  3. package/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.js → vendor-d415b28e9024dee4bb1b.js} +2 -2
  4. package/dist/excalidraw-assets-dev/{vendor-e6df8519da951026ff69.js → vendor-a14cd58fa2db417e42b2.js} +6 -6
  5. package/dist/excalidraw.development.js +3257 -1444
  6. package/dist/excalidraw.production.min.js +1 -1
  7. package/dist/excalidraw.production.min.js.LICENSE.txt +20 -0
  8. package/main.js +1 -8
  9. package/package.json +9 -4
  10. package/types/actions/actionAddToLibrary.d.ts +124 -64
  11. package/types/actions/actionAlign.d.ts +33 -40
  12. package/types/actions/actionBoundText.d.ts +182 -25
  13. package/types/actions/actionCanvas.d.ts +754 -220
  14. package/types/actions/actionClipboard.d.ts +236 -115
  15. package/types/actions/actionDeleteSelected.d.ts +133 -72
  16. package/types/actions/actionDistribute.d.ts +11 -16
  17. package/types/actions/actionDuplicateSelection.d.ts +4 -7
  18. package/types/actions/actionElementLock.d.ts +271 -0
  19. package/types/actions/actionExport.d.ts +440 -277
  20. package/types/actions/actionFinalize.d.ts +85 -51
  21. package/types/actions/actionFlip.d.ts +8 -11
  22. package/types/actions/actionFrame.d.ts +423 -0
  23. package/types/actions/actionGroup.d.ts +252 -19
  24. package/types/actions/actionHistory.d.ts +1 -1
  25. package/types/actions/actionLinearEditor.d.ts +44 -24
  26. package/types/actions/actionMenu.d.ts +132 -79
  27. package/types/actions/actionNavigate.d.ts +2 -3
  28. package/types/actions/actionProperties.d.ts +569 -334
  29. package/types/actions/actionSelectAll.d.ts +123 -4
  30. package/types/actions/actionStyles.d.ts +46 -27
  31. package/types/actions/actionToggleGridMode.d.ts +46 -25
  32. package/types/actions/{actionToggleLock.d.ts → actionToggleObjectsSnapMode.d.ts} +56 -35
  33. package/types/actions/actionToggleStats.d.ts +45 -25
  34. package/types/actions/actionToggleViewMode.d.ts +46 -25
  35. package/types/actions/actionToggleZenMode.d.ts +46 -25
  36. package/types/actions/actionZindex.d.ts +16 -24
  37. package/types/actions/index.d.ts +2 -1
  38. package/types/actions/manager.d.ts +3 -2
  39. package/types/actions/shortcuts.d.ts +2 -1
  40. package/types/actions/types.d.ts +16 -13
  41. package/types/appState.d.ts +27 -28
  42. package/types/charts.d.ts +2 -2
  43. package/types/clients.d.ts +5 -6
  44. package/types/clipboard.d.ts +9 -3
  45. package/types/colors.d.ts +60 -5
  46. package/types/components/Actions.d.ts +7 -12
  47. package/types/components/ActiveConfirmDialog.d.ts +4 -0
  48. package/types/components/App.d.ts +102 -86
  49. package/types/components/Avatar.d.ts +1 -2
  50. package/types/components/BraveMeasureTextError.d.ts +2 -0
  51. package/types/components/Button.d.ts +16 -0
  52. package/types/components/ButtonIconSelect.d.ts +11 -3
  53. package/types/components/Card.d.ts +6 -0
  54. package/types/components/ColorPicker/ColorInput.d.ts +9 -0
  55. package/types/components/ColorPicker/ColorPicker.d.ts +19 -0
  56. package/types/components/ColorPicker/CustomColorList.d.ts +8 -0
  57. package/types/components/ColorPicker/HotkeyLabel.d.ts +8 -0
  58. package/types/components/ColorPicker/Picker.d.ts +18 -0
  59. package/types/components/ColorPicker/PickerColorList.d.ts +10 -0
  60. package/types/components/ColorPicker/PickerHeading.d.ts +5 -0
  61. package/types/components/ColorPicker/ShadeList.d.ts +8 -0
  62. package/types/components/ColorPicker/TopPicks.d.ts +9 -0
  63. package/types/components/ColorPicker/colorPickerUtils.d.ts +21 -0
  64. package/types/components/ColorPicker/keyboardNavHandlers.d.ts +20 -0
  65. package/types/components/ContextMenu.d.ts +9 -22
  66. package/types/components/DefaultSidebar.d.ts +29 -0
  67. package/types/components/Dialog.d.ts +3 -4
  68. package/types/components/ErrorDialog.d.ts +3 -2
  69. package/types/components/ExcalidrawLogo.d.ts +15 -0
  70. package/types/components/EyeDropper.d.ts +28 -0
  71. package/types/components/FilledButton.d.ts +17 -0
  72. package/types/components/FixedSideContainer.d.ts +1 -1
  73. package/types/components/HandButton.d.ts +10 -0
  74. package/types/components/HelpButton.d.ts +1 -2
  75. package/types/components/HintViewer.d.ts +4 -5
  76. package/types/components/HomeButton.d.ts +1 -1
  77. package/types/components/ImageExportDialog.d.ts +8 -13
  78. package/types/components/Island.d.ts +1 -1
  79. package/types/components/JSONExportDialog.d.ts +7 -5
  80. package/types/components/LaserTool/LaserPathManager.d.ts +28 -0
  81. package/types/components/LaserTool/LaserPointerButton.d.ts +10 -0
  82. package/types/components/LaserTool/LaserTool.d.ts +7 -0
  83. package/types/components/LayerUI.d.ts +11 -19
  84. package/types/components/LibraryMenu.d.ts +13 -14
  85. package/types/components/LibraryMenuBrowseButton.d.ts +2 -2
  86. package/types/components/LibraryMenuControlButtons.d.ts +9 -0
  87. package/types/components/LibraryMenuHeaderContent.d.ts +10 -5
  88. package/types/components/LibraryMenuItems.d.ts +6 -7
  89. package/types/components/LibraryMenuSection.d.ts +22 -0
  90. package/types/components/LibraryUnit.d.ts +6 -3
  91. package/types/components/LoadingMessage.d.ts +0 -1
  92. package/types/components/LockButton.d.ts +1 -2
  93. package/types/components/MobileMenu.d.ts +9 -15
  94. package/types/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -0
  95. package/types/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -0
  96. package/types/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -0
  97. package/types/components/PasteChartDialog.d.ts +4 -5
  98. package/types/components/PenModeButton.d.ts +1 -1
  99. package/types/components/Popover.d.ts +1 -1
  100. package/types/components/ProjectName.d.ts +2 -1
  101. package/types/components/PublishLibrary.d.ts +2 -2
  102. package/types/components/RadioGroup.d.ts +12 -0
  103. package/types/components/Section.d.ts +1 -1
  104. package/types/components/Sidebar/Sidebar.d.ts +66 -63
  105. package/types/components/Sidebar/SidebarHeader.d.ts +6 -19
  106. package/types/components/Sidebar/SidebarTab.d.ts +8 -0
  107. package/types/components/Sidebar/SidebarTabTrigger.d.ts +9 -0
  108. package/types/components/Sidebar/SidebarTabTriggers.d.ts +6 -0
  109. package/types/components/Sidebar/SidebarTabs.d.ts +6 -0
  110. package/types/components/Sidebar/SidebarTrigger.d.ts +6 -0
  111. package/types/components/Sidebar/common.d.ts +24 -7
  112. package/types/components/Spinner.d.ts +2 -1
  113. package/types/components/Stack.d.ts +4 -3
  114. package/types/components/Stats.d.ts +3 -3
  115. package/types/components/Switch.d.ts +9 -0
  116. package/types/components/ToolButton.d.ts +6 -5
  117. package/types/components/Tooltip.d.ts +1 -1
  118. package/types/components/Trans.d.ts +9 -0
  119. package/types/components/UserList.d.ts +0 -2
  120. package/types/components/canvases/InteractiveCanvas.d.ts +27 -0
  121. package/types/components/canvases/StaticCanvas.d.ts +18 -0
  122. package/types/components/canvases/index.d.ts +3 -0
  123. package/types/components/dropdownMenu/DropdownMenu.d.ts +70 -0
  124. package/types/components/dropdownMenu/DropdownMenuContent.d.ts +15 -0
  125. package/types/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -0
  126. package/types/components/dropdownMenu/DropdownMenuItem.d.ts +13 -0
  127. package/types/components/dropdownMenu/DropdownMenuItemContent.d.ts +6 -0
  128. package/types/components/dropdownMenu/DropdownMenuItemCustom.d.ts +7 -0
  129. package/types/components/dropdownMenu/DropdownMenuItemLink.d.ts +14 -0
  130. package/types/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -0
  131. package/types/components/dropdownMenu/DropdownMenuTrigger.d.ts +10 -0
  132. package/types/components/dropdownMenu/common.d.ts +6 -0
  133. package/types/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -0
  134. package/types/components/footer/Footer.d.ts +12 -0
  135. package/types/components/footer/FooterCenter.d.ts +8 -0
  136. package/types/components/hoc/withInternalFallback.d.ts +4 -0
  137. package/types/components/icons.d.ts +17 -2
  138. package/types/components/live-collaboration/LiveCollaborationTrigger.d.ts +9 -0
  139. package/types/components/main-menu/DefaultItems.d.ts +47 -0
  140. package/types/components/main-menu/MainMenu.d.ts +64 -0
  141. package/types/components/welcome-screen/WelcomeScreen.Center.d.ts +57 -0
  142. package/types/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -0
  143. package/types/components/welcome-screen/WelcomeScreen.d.ts +84 -0
  144. package/types/constants.d.ts +105 -18
  145. package/types/context/tunnels.d.ts +19 -0
  146. package/types/context/ui-appState.d.ts +4 -0
  147. package/types/cursor.d.ts +5 -0
  148. package/types/data/blob.d.ts +5 -3
  149. package/types/data/encode.d.ts +1 -1
  150. package/types/data/filesystem.d.ts +2 -1
  151. package/types/data/index.d.ts +1 -1
  152. package/types/data/library.d.ts +3 -45
  153. package/types/data/restore.d.ts +10 -4
  154. package/types/data/transform.d.ts +73 -0
  155. package/types/data/types.d.ts +3 -5
  156. package/types/data/url.d.ts +7 -0
  157. package/types/element/Hyperlink.d.ts +57 -36
  158. package/types/element/binding.d.ts +4 -3
  159. package/types/element/bounds.d.ts +41 -10
  160. package/types/element/collision.d.ts +7 -7
  161. package/types/element/dragElements.d.ts +12 -2
  162. package/types/element/embeddable.d.ts +153 -0
  163. package/types/element/image.d.ts +11 -1
  164. package/types/element/index.d.ts +3 -2
  165. package/types/element/linearElementEditor.d.ts +77 -30
  166. package/types/element/mutateElement.d.ts +3 -2
  167. package/types/element/newElement.d.ts +48 -15
  168. package/types/element/resizeElements.d.ts +3 -3
  169. package/types/element/resizeTest.d.ts +2 -1
  170. package/types/element/showSelectedShapeActions.d.ts +2 -2
  171. package/types/element/sizeHelpers.d.ts +8 -1
  172. package/types/element/sortElements.d.ts +2 -0
  173. package/types/element/textElement.d.ts +57 -9
  174. package/types/element/textWysiwyg.d.ts +7 -2
  175. package/types/element/transformHandles.d.ts +15 -8
  176. package/types/element/typeChecks.d.ts +14 -2
  177. package/types/element/types.d.ts +66 -35
  178. package/types/emitter.d.ts +1 -2
  179. package/types/errors.d.ts +1 -1
  180. package/types/frame.d.ts +46 -0
  181. package/types/ga.d.ts +5 -5
  182. package/types/groups.d.ts +15 -11
  183. package/types/history.d.ts +3 -3
  184. package/types/hooks/useCreatePortalContainer.d.ts +4 -0
  185. package/types/hooks/useLibraryItemSvg.d.ts +11 -0
  186. package/types/hooks/useOutsideClick.d.ts +19 -2
  187. package/types/hooks/useScrollPosition.d.ts +1 -0
  188. package/types/hooks/useStable.d.ts +1 -0
  189. package/types/hooks/useTransition.d.ts +2 -0
  190. package/types/i18n.d.ts +11 -2
  191. package/types/jotai.d.ts +20 -108
  192. package/types/keys.d.ts +7 -4
  193. package/types/math.d.ts +7 -1
  194. package/types/packages/bbox.d.ts +11 -0
  195. package/types/packages/excalidraw/example/App.d.ts +7 -1
  196. package/types/packages/excalidraw/example/CustomFooter.d.ts +5 -0
  197. package/types/packages/excalidraw/example/MobileFooter.d.ts +5 -0
  198. package/types/packages/excalidraw/example/initialData.d.ts +182 -64
  199. package/types/packages/excalidraw/index.d.ts +22 -4
  200. package/types/packages/excalidraw/main.d.ts +3 -1
  201. package/types/packages/excalidraw/webpack.dev.config.d.ts +5 -2
  202. package/types/packages/excalidraw/webpack.prod.config.d.ts +3 -0
  203. package/types/packages/utils.d.ts +30 -24
  204. package/types/packages/withinBounds.d.ts +19 -0
  205. package/types/renderer/renderElement.d.ts +13 -22
  206. package/types/renderer/renderScene.d.ts +19 -29
  207. package/types/renderer/renderSnaps.d.ts +2 -0
  208. package/types/renderer/roundRect.d.ts +1 -1
  209. package/types/scene/Fonts.d.ts +21 -0
  210. package/types/scene/Renderer.d.ts +25 -0
  211. package/types/scene/Scene.d.ts +42 -5
  212. package/types/scene/Shape.d.ts +12 -0
  213. package/types/scene/ShapeCache.d.ts +20 -0
  214. package/types/scene/comparisons.d.ts +2 -4
  215. package/types/scene/export.d.ts +183 -10
  216. package/types/scene/index.d.ts +1 -1
  217. package/types/scene/scroll.d.ts +1 -1
  218. package/types/scene/scrollbars.d.ts +2 -6
  219. package/types/scene/selection.d.ts +27 -6
  220. package/types/scene/types.d.ts +70 -26
  221. package/types/snapping.d.ts +108 -0
  222. package/types/types.d.ts +227 -91
  223. package/types/utility-types.d.ts +24 -0
  224. package/types/utils.d.ts +75 -14
  225. package/types/zindex.d.ts +4 -4
  226. package/types/components/ActiveFile.d.ts +0 -7
  227. package/types/components/ClearCanvas.d.ts +0 -4
  228. package/types/components/CollabButton.d.ts +0 -6
  229. package/types/components/ColorPicker.d.ts +0 -14
  230. package/types/components/Footer.d.ts +0 -10
  231. package/types/components/LibraryButton.d.ts +0 -8
  232. package/types/components/MenuItem.d.ts +0 -11
  233. package/types/components/MenuUtils.d.ts +0 -1
  234. package/types/components/SingleLibraryItem.d.ts +0 -10
  235. package/types/components/WelcomeScreen.d.ts +0 -10
  236. package/types/components/WelcomeScreenDecor.d.ts +0 -6
  237. package/types/components/hoc/withUpstreamOverride.d.ts +0 -10
  238. /package/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.js.LICENSE.txt → vendor-d415b28e9024dee4bb1b.js.LICENSE.txt} +0 -0
  239. /package/types/packages/excalidraw/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.d.ts → vendor-d415b28e9024dee4bb1b.d.ts} +0 -0
  240. /package/types/packages/excalidraw/dist/excalidraw-assets-dev/{vendor-e6df8519da951026ff69.d.ts → vendor-a14cd58fa2db417e42b2.d.ts} +0 -0
@@ -1,16 +1,14 @@
1
- /// <reference types="react" />
2
1
  import { ExcalidrawElement } from "../element/types";
3
2
  import { AppState, NormalizedZoomValue } from "../types";
4
3
  export declare const actionChangeViewBackgroundColor: {
5
4
  name: "changeViewBackgroundColor";
6
5
  trackEvent: false;
6
+ predicate: (elements: readonly ExcalidrawElement[], appState: AppState, props: import("../types").ExcalidrawProps, app: import("../types").AppClassProperties) => boolean;
7
7
  perform: (_: readonly ExcalidrawElement[], appState: Readonly<AppState>, value: any) => {
8
8
  appState: any;
9
9
  commitToHistory: boolean;
10
10
  };
11
- PanelComponent: ({ elements, appState, updateData }: import("./types").PanelComponentProps & {
12
- isInHamburgerMenu: boolean;
13
- }) => JSX.Element;
11
+ PanelComponent: ({ elements, appState, updateData, appProps }: import("./types").PanelComponentProps) => JSX.Element;
14
12
  } & {
15
13
  keyTest?: undefined;
16
14
  };
@@ -19,11 +17,12 @@ export declare const actionClearCanvas: {
19
17
  trackEvent: {
20
18
  category: "canvas";
21
19
  };
20
+ predicate: (elements: readonly ExcalidrawElement[], appState: AppState, props: import("../types").ExcalidrawProps, app: import("../types").AppClassProperties) => boolean;
22
21
  perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, _: any, app: import("../types").AppClassProperties) => {
23
22
  elements: ExcalidrawElement[];
24
23
  appState: {
25
24
  files: {};
26
- theme: string;
25
+ theme: import("../element/types").Theme;
27
26
  penMode: boolean;
28
27
  penDetected: boolean;
29
28
  exportBackground: boolean;
@@ -38,27 +37,22 @@ export declare const actionClearCanvas: {
38
37
  data: import("../charts").Spreadsheet;
39
38
  };
40
39
  activeTool: {
41
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
42
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
40
+ lastActiveTool: import("../types").ActiveTool | null;
43
41
  locked: boolean;
44
- customType: null;
45
- } | {
46
- type: "custom";
47
- customType: string;
48
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
49
- locked: boolean;
50
- };
42
+ } & import("../types").ActiveTool;
51
43
  name: string;
52
- scrollX: number;
53
- scrollY: number;
54
- viewBackgroundColor: string;
55
- zoom: Readonly<{
56
- value: NormalizedZoomValue;
57
- }>;
58
- shouldCacheIgnoreZoom: boolean;
44
+ contextMenu: {
45
+ items: import("../components/ContextMenu").ContextMenuItems;
46
+ top: number;
47
+ left: number;
48
+ } | null;
59
49
  showWelcomeScreen: boolean;
60
50
  isLoading: boolean;
61
- errorMessage: string | null;
51
+ errorMessage: import("react").ReactNode;
52
+ activeEmbeddable: {
53
+ element: import("../element/types").NonDeletedExcalidrawElement;
54
+ state: "active" | "hover";
55
+ } | null;
62
56
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
63
57
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
64
58
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -66,6 +60,15 @@ export declare const actionClearCanvas: {
66
60
  isBindingEnabled: boolean;
67
61
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
68
62
  suggestedBindings: import("../element/binding").SuggestedBinding[];
63
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
64
+ frameRendering: {
65
+ enabled: boolean;
66
+ name: boolean;
67
+ outline: boolean;
68
+ clip: boolean;
69
+ };
70
+ editingFrame: string | null;
71
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
69
72
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
70
73
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
71
74
  exportWithDarkMode: boolean;
@@ -80,26 +83,36 @@ export declare const actionClearCanvas: {
80
83
  currentItemFontFamily: number;
81
84
  currentItemFontSize: number;
82
85
  currentItemTextAlign: string;
83
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
84
86
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
85
87
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
86
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
88
+ currentItemRoundness: import("../element/types").StrokeRoundness;
89
+ viewBackgroundColor: string;
90
+ scrollX: number;
91
+ scrollY: number;
87
92
  cursorButton: "up" | "down";
88
93
  scrolledOutside: boolean;
89
94
  isResizing: boolean;
90
95
  isRotating: boolean;
96
+ zoom: Readonly<{
97
+ value: NormalizedZoomValue;
98
+ }>;
91
99
  openMenu: "canvas" | "shape" | null;
92
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
93
- openSidebar: "library" | "customSidebar" | null;
94
- openDialog: "imageExport" | "help" | null;
95
- isSidebarDocked: boolean;
100
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
101
+ openSidebar: {
102
+ name: string;
103
+ tab?: string | undefined;
104
+ } | null;
105
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
106
+ defaultSidebarDockedPreference: boolean;
96
107
  lastPointerDownWith: import("../element/types").PointerType;
97
- selectedElementIds: {
98
- [id: string]: boolean;
99
- };
108
+ selectedElementIds: Readonly<{
109
+ [id: string]: true;
110
+ }>;
100
111
  previousSelectedElementIds: {
101
- [id: string]: boolean;
112
+ [id: string]: true;
102
113
  };
114
+ selectedElementsAreBeingDragged: boolean;
115
+ shouldCacheIgnoreZoom: boolean;
103
116
  toast: {
104
117
  message: string;
105
118
  closable?: boolean | undefined;
@@ -115,19 +128,23 @@ export declare const actionClearCanvas: {
115
128
  collaborators: Map<string, import("../types").Collaborator>;
116
129
  currentChartType: import("../element/types").ChartType;
117
130
  pendingImageElementId: string | null;
118
- showHyperlinkPopup: false | "info" | "editor";
131
+ showHyperlinkPopup: false | "editor" | "info";
119
132
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
133
+ snapLines: readonly import("../snapping").SnapLine[];
134
+ originSnapOffset: {
135
+ x: number;
136
+ y: number;
137
+ } | null;
138
+ objectsSnapModeEnabled: boolean;
120
139
  };
121
140
  commitToHistory: true;
122
141
  };
123
- PanelComponent: ({ updateData }: import("./types").PanelComponentProps & {
124
- isInHamburgerMenu: boolean;
125
- }) => JSX.Element;
126
142
  } & {
127
143
  keyTest?: undefined;
128
144
  };
129
145
  export declare const actionZoomIn: {
130
146
  name: "zoomIn";
147
+ viewMode: true;
131
148
  trackEvent: {
132
149
  category: "canvas";
133
150
  };
@@ -138,9 +155,18 @@ export declare const actionZoomIn: {
138
155
  zoom: {
139
156
  value: NormalizedZoomValue;
140
157
  };
158
+ contextMenu: {
159
+ items: import("../components/ContextMenu").ContextMenuItems;
160
+ top: number;
161
+ left: number;
162
+ } | null;
141
163
  showWelcomeScreen: boolean;
142
164
  isLoading: boolean;
143
- errorMessage: string | null;
165
+ errorMessage: import("react").ReactNode;
166
+ activeEmbeddable: {
167
+ element: import("../element/types").NonDeletedExcalidrawElement;
168
+ state: "active" | "hover";
169
+ } | null;
144
170
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
145
171
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
146
172
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -148,19 +174,21 @@ export declare const actionZoomIn: {
148
174
  isBindingEnabled: boolean;
149
175
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
150
176
  suggestedBindings: import("../element/binding").SuggestedBinding[];
177
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
178
+ frameRendering: {
179
+ enabled: boolean;
180
+ name: boolean;
181
+ outline: boolean;
182
+ clip: boolean;
183
+ };
184
+ editingFrame: string | null;
185
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
151
186
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
152
187
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
153
188
  activeTool: {
154
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
155
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
189
+ lastActiveTool: import("../types").ActiveTool | null;
156
190
  locked: boolean;
157
- customType: null;
158
- } | {
159
- type: "custom";
160
- customType: string;
161
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
162
- locked: boolean;
163
- };
191
+ } & import("../types").ActiveTool;
164
192
  penMode: boolean;
165
193
  penDetected: boolean;
166
194
  exportBackground: boolean;
@@ -177,10 +205,9 @@ export declare const actionZoomIn: {
177
205
  currentItemFontFamily: number;
178
206
  currentItemFontSize: number;
179
207
  currentItemTextAlign: string;
180
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
181
208
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
182
209
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
183
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
210
+ currentItemRoundness: import("../element/types").StrokeRoundness;
184
211
  viewBackgroundColor: string;
185
212
  cursorButton: "up" | "down";
186
213
  scrolledOutside: boolean;
@@ -188,17 +215,21 @@ export declare const actionZoomIn: {
188
215
  isResizing: boolean;
189
216
  isRotating: boolean;
190
217
  openMenu: "canvas" | "shape" | null;
191
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
192
- openSidebar: "library" | "customSidebar" | null;
193
- openDialog: "imageExport" | "help" | null;
194
- isSidebarDocked: boolean;
218
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
219
+ openSidebar: {
220
+ name: string;
221
+ tab?: string | undefined;
222
+ } | null;
223
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
224
+ defaultSidebarDockedPreference: boolean;
195
225
  lastPointerDownWith: import("../element/types").PointerType;
196
- selectedElementIds: {
197
- [id: string]: boolean;
198
- };
226
+ selectedElementIds: Readonly<{
227
+ [id: string]: true;
228
+ }>;
199
229
  previousSelectedElementIds: {
200
- [id: string]: boolean;
230
+ [id: string]: true;
201
231
  };
232
+ selectedElementsAreBeingDragged: boolean;
202
233
  shouldCacheIgnoreZoom: boolean;
203
234
  toast: {
204
235
  message: string;
@@ -206,7 +237,7 @@ export declare const actionZoomIn: {
206
237
  duration?: number | undefined;
207
238
  } | null;
208
239
  zenModeEnabled: boolean;
209
- theme: string;
240
+ theme: import("../element/types").Theme;
210
241
  gridSize: number | null;
211
242
  viewModeEnabled: boolean;
212
243
  selectedGroupIds: {
@@ -229,20 +260,25 @@ export declare const actionZoomIn: {
229
260
  data: import("../charts").Spreadsheet;
230
261
  };
231
262
  pendingImageElementId: string | null;
232
- showHyperlinkPopup: false | "info" | "editor";
263
+ showHyperlinkPopup: false | "editor" | "info";
233
264
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
265
+ snapLines: readonly import("../snapping").SnapLine[];
266
+ originSnapOffset: {
267
+ x: number;
268
+ y: number;
269
+ } | null;
270
+ objectsSnapModeEnabled: boolean;
234
271
  };
235
272
  commitToHistory: false;
236
273
  };
237
- PanelComponent: ({ updateData }: import("./types").PanelComponentProps & {
238
- isInHamburgerMenu: boolean;
239
- }) => JSX.Element;
240
- keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
274
+ PanelComponent: ({ updateData }: import("./types").PanelComponentProps) => JSX.Element;
275
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
241
276
  } & {
242
- keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
277
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
243
278
  };
244
279
  export declare const actionZoomOut: {
245
280
  name: "zoomOut";
281
+ viewMode: true;
246
282
  trackEvent: {
247
283
  category: "canvas";
248
284
  };
@@ -253,9 +289,18 @@ export declare const actionZoomOut: {
253
289
  zoom: {
254
290
  value: NormalizedZoomValue;
255
291
  };
292
+ contextMenu: {
293
+ items: import("../components/ContextMenu").ContextMenuItems;
294
+ top: number;
295
+ left: number;
296
+ } | null;
256
297
  showWelcomeScreen: boolean;
257
298
  isLoading: boolean;
258
- errorMessage: string | null;
299
+ errorMessage: import("react").ReactNode;
300
+ activeEmbeddable: {
301
+ element: import("../element/types").NonDeletedExcalidrawElement;
302
+ state: "active" | "hover";
303
+ } | null;
259
304
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
260
305
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
261
306
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -263,19 +308,21 @@ export declare const actionZoomOut: {
263
308
  isBindingEnabled: boolean;
264
309
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
265
310
  suggestedBindings: import("../element/binding").SuggestedBinding[];
311
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
312
+ frameRendering: {
313
+ enabled: boolean;
314
+ name: boolean;
315
+ outline: boolean;
316
+ clip: boolean;
317
+ };
318
+ editingFrame: string | null;
319
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
266
320
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
267
321
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
268
322
  activeTool: {
269
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
270
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
271
- locked: boolean;
272
- customType: null;
273
- } | {
274
- type: "custom";
275
- customType: string;
276
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
323
+ lastActiveTool: import("../types").ActiveTool | null;
277
324
  locked: boolean;
278
- };
325
+ } & import("../types").ActiveTool;
279
326
  penMode: boolean;
280
327
  penDetected: boolean;
281
328
  exportBackground: boolean;
@@ -292,10 +339,9 @@ export declare const actionZoomOut: {
292
339
  currentItemFontFamily: number;
293
340
  currentItemFontSize: number;
294
341
  currentItemTextAlign: string;
295
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
296
342
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
297
343
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
298
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
344
+ currentItemRoundness: import("../element/types").StrokeRoundness;
299
345
  viewBackgroundColor: string;
300
346
  cursorButton: "up" | "down";
301
347
  scrolledOutside: boolean;
@@ -303,17 +349,21 @@ export declare const actionZoomOut: {
303
349
  isResizing: boolean;
304
350
  isRotating: boolean;
305
351
  openMenu: "canvas" | "shape" | null;
306
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
307
- openSidebar: "library" | "customSidebar" | null;
308
- openDialog: "imageExport" | "help" | null;
309
- isSidebarDocked: boolean;
352
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
353
+ openSidebar: {
354
+ name: string;
355
+ tab?: string | undefined;
356
+ } | null;
357
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
358
+ defaultSidebarDockedPreference: boolean;
310
359
  lastPointerDownWith: import("../element/types").PointerType;
311
- selectedElementIds: {
312
- [id: string]: boolean;
313
- };
360
+ selectedElementIds: Readonly<{
361
+ [id: string]: true;
362
+ }>;
314
363
  previousSelectedElementIds: {
315
- [id: string]: boolean;
364
+ [id: string]: true;
316
365
  };
366
+ selectedElementsAreBeingDragged: boolean;
317
367
  shouldCacheIgnoreZoom: boolean;
318
368
  toast: {
319
369
  message: string;
@@ -321,7 +371,7 @@ export declare const actionZoomOut: {
321
371
  duration?: number | undefined;
322
372
  } | null;
323
373
  zenModeEnabled: boolean;
324
- theme: string;
374
+ theme: import("../element/types").Theme;
325
375
  gridSize: number | null;
326
376
  viewModeEnabled: boolean;
327
377
  selectedGroupIds: {
@@ -344,20 +394,25 @@ export declare const actionZoomOut: {
344
394
  data: import("../charts").Spreadsheet;
345
395
  };
346
396
  pendingImageElementId: string | null;
347
- showHyperlinkPopup: false | "info" | "editor";
397
+ showHyperlinkPopup: false | "editor" | "info";
348
398
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
399
+ snapLines: readonly import("../snapping").SnapLine[];
400
+ originSnapOffset: {
401
+ x: number;
402
+ y: number;
403
+ } | null;
404
+ objectsSnapModeEnabled: boolean;
349
405
  };
350
406
  commitToHistory: false;
351
407
  };
352
- PanelComponent: ({ updateData }: import("./types").PanelComponentProps & {
353
- isInHamburgerMenu: boolean;
354
- }) => JSX.Element;
355
- keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
408
+ PanelComponent: ({ updateData }: import("./types").PanelComponentProps) => JSX.Element;
409
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
356
410
  } & {
357
- keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
411
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
358
412
  };
359
413
  export declare const actionResetZoom: {
360
414
  name: "resetZoom";
415
+ viewMode: true;
361
416
  trackEvent: {
362
417
  category: "canvas";
363
418
  };
@@ -368,9 +423,18 @@ export declare const actionResetZoom: {
368
423
  zoom: {
369
424
  value: NormalizedZoomValue;
370
425
  };
426
+ contextMenu: {
427
+ items: import("../components/ContextMenu").ContextMenuItems;
428
+ top: number;
429
+ left: number;
430
+ } | null;
371
431
  showWelcomeScreen: boolean;
372
432
  isLoading: boolean;
373
- errorMessage: string | null;
433
+ errorMessage: import("react").ReactNode;
434
+ activeEmbeddable: {
435
+ element: import("../element/types").NonDeletedExcalidrawElement;
436
+ state: "active" | "hover";
437
+ } | null;
374
438
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
375
439
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
376
440
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -378,19 +442,21 @@ export declare const actionResetZoom: {
378
442
  isBindingEnabled: boolean;
379
443
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
380
444
  suggestedBindings: import("../element/binding").SuggestedBinding[];
445
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
446
+ frameRendering: {
447
+ enabled: boolean;
448
+ name: boolean;
449
+ outline: boolean;
450
+ clip: boolean;
451
+ };
452
+ editingFrame: string | null;
453
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
381
454
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
382
455
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
383
456
  activeTool: {
384
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
385
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
457
+ lastActiveTool: import("../types").ActiveTool | null;
386
458
  locked: boolean;
387
- customType: null;
388
- } | {
389
- type: "custom";
390
- customType: string;
391
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
392
- locked: boolean;
393
- };
459
+ } & import("../types").ActiveTool;
394
460
  penMode: boolean;
395
461
  penDetected: boolean;
396
462
  exportBackground: boolean;
@@ -407,10 +473,9 @@ export declare const actionResetZoom: {
407
473
  currentItemFontFamily: number;
408
474
  currentItemFontSize: number;
409
475
  currentItemTextAlign: string;
410
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
411
476
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
412
477
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
413
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
478
+ currentItemRoundness: import("../element/types").StrokeRoundness;
414
479
  viewBackgroundColor: string;
415
480
  cursorButton: "up" | "down";
416
481
  scrolledOutside: boolean;
@@ -418,17 +483,21 @@ export declare const actionResetZoom: {
418
483
  isResizing: boolean;
419
484
  isRotating: boolean;
420
485
  openMenu: "canvas" | "shape" | null;
421
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
422
- openSidebar: "library" | "customSidebar" | null;
423
- openDialog: "imageExport" | "help" | null;
424
- isSidebarDocked: boolean;
486
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
487
+ openSidebar: {
488
+ name: string;
489
+ tab?: string | undefined;
490
+ } | null;
491
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
492
+ defaultSidebarDockedPreference: boolean;
425
493
  lastPointerDownWith: import("../element/types").PointerType;
426
- selectedElementIds: {
427
- [id: string]: boolean;
428
- };
494
+ selectedElementIds: Readonly<{
495
+ [id: string]: true;
496
+ }>;
429
497
  previousSelectedElementIds: {
430
- [id: string]: boolean;
498
+ [id: string]: true;
431
499
  };
500
+ selectedElementsAreBeingDragged: boolean;
432
501
  shouldCacheIgnoreZoom: boolean;
433
502
  toast: {
434
503
  message: string;
@@ -436,7 +505,7 @@ export declare const actionResetZoom: {
436
505
  duration?: number | undefined;
437
506
  } | null;
438
507
  zenModeEnabled: boolean;
439
- theme: string;
508
+ theme: import("../element/types").Theme;
440
509
  gridSize: number | null;
441
510
  viewModeEnabled: boolean;
442
511
  selectedGroupIds: {
@@ -459,33 +528,176 @@ export declare const actionResetZoom: {
459
528
  data: import("../charts").Spreadsheet;
460
529
  };
461
530
  pendingImageElementId: string | null;
462
- showHyperlinkPopup: false | "info" | "editor";
531
+ showHyperlinkPopup: false | "editor" | "info";
463
532
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
533
+ snapLines: readonly import("../snapping").SnapLine[];
534
+ originSnapOffset: {
535
+ x: number;
536
+ y: number;
537
+ } | null;
538
+ objectsSnapModeEnabled: boolean;
464
539
  };
465
540
  commitToHistory: false;
466
541
  };
467
- PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps & {
468
- isInHamburgerMenu: boolean;
469
- }) => JSX.Element;
470
- keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
542
+ PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
543
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
471
544
  } & {
472
- keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
545
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
473
546
  };
474
- export declare const actionZoomToSelected: {
475
- name: "zoomToSelection";
547
+ export declare const zoomToFit: ({ targetElements, appState, fitToViewport, viewportZoomFactor, }: {
548
+ targetElements: readonly ExcalidrawElement[];
549
+ appState: Readonly<AppState>;
550
+ /** whether to fit content to viewport (beyond >100%) */
551
+ fitToViewport: boolean;
552
+ /** zoom content to cover X of the viewport, when fitToViewport=true */
553
+ viewportZoomFactor?: number | undefined;
554
+ }) => {
555
+ appState: {
556
+ scrollX: number;
557
+ scrollY: number;
558
+ zoom: {
559
+ value: NormalizedZoomValue;
560
+ };
561
+ contextMenu: {
562
+ items: import("../components/ContextMenu").ContextMenuItems;
563
+ top: number;
564
+ left: number;
565
+ } | null;
566
+ showWelcomeScreen: boolean;
567
+ isLoading: boolean;
568
+ errorMessage: import("react").ReactNode;
569
+ activeEmbeddable: {
570
+ element: import("../element/types").NonDeletedExcalidrawElement;
571
+ state: "active" | "hover";
572
+ } | null;
573
+ draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
574
+ resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
575
+ multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
576
+ selectionElement: import("../element/types").NonDeletedExcalidrawElement | null;
577
+ isBindingEnabled: boolean;
578
+ startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
579
+ suggestedBindings: import("../element/binding").SuggestedBinding[];
580
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
581
+ frameRendering: {
582
+ enabled: boolean;
583
+ name: boolean;
584
+ outline: boolean;
585
+ clip: boolean;
586
+ };
587
+ editingFrame: string | null;
588
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
589
+ editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
590
+ editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
591
+ activeTool: {
592
+ lastActiveTool: import("../types").ActiveTool | null;
593
+ locked: boolean;
594
+ } & import("../types").ActiveTool;
595
+ penMode: boolean;
596
+ penDetected: boolean;
597
+ exportBackground: boolean;
598
+ exportEmbedScene: boolean;
599
+ exportWithDarkMode: boolean;
600
+ exportScale: number;
601
+ currentItemStrokeColor: string;
602
+ currentItemBackgroundColor: string;
603
+ currentItemFillStyle: import("../element/types").FillStyle;
604
+ currentItemStrokeWidth: number;
605
+ currentItemStrokeStyle: import("../element/types").StrokeStyle;
606
+ currentItemRoughness: number;
607
+ currentItemOpacity: number;
608
+ currentItemFontFamily: number;
609
+ currentItemFontSize: number;
610
+ currentItemTextAlign: string;
611
+ currentItemStartArrowhead: import("../element/types").Arrowhead | null;
612
+ currentItemEndArrowhead: import("../element/types").Arrowhead | null;
613
+ currentItemRoundness: import("../element/types").StrokeRoundness;
614
+ viewBackgroundColor: string;
615
+ cursorButton: "up" | "down";
616
+ scrolledOutside: boolean;
617
+ name: string;
618
+ isResizing: boolean;
619
+ isRotating: boolean;
620
+ openMenu: "canvas" | "shape" | null;
621
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
622
+ openSidebar: {
623
+ name: string;
624
+ tab?: string | undefined;
625
+ } | null;
626
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
627
+ defaultSidebarDockedPreference: boolean;
628
+ lastPointerDownWith: import("../element/types").PointerType;
629
+ selectedElementIds: Readonly<{
630
+ [id: string]: true;
631
+ }>;
632
+ previousSelectedElementIds: {
633
+ [id: string]: true;
634
+ };
635
+ selectedElementsAreBeingDragged: boolean;
636
+ shouldCacheIgnoreZoom: boolean;
637
+ toast: {
638
+ message: string;
639
+ closable?: boolean | undefined;
640
+ duration?: number | undefined;
641
+ } | null;
642
+ zenModeEnabled: boolean;
643
+ theme: import("../element/types").Theme;
644
+ gridSize: number | null;
645
+ viewModeEnabled: boolean;
646
+ selectedGroupIds: {
647
+ [groupId: string]: boolean;
648
+ };
649
+ editingGroupId: string | null;
650
+ width: number;
651
+ height: number;
652
+ offsetTop: number;
653
+ offsetLeft: number;
654
+ fileHandle: import("browser-fs-access").FileSystemHandle | null;
655
+ collaborators: Map<string, import("../types").Collaborator>;
656
+ showStats: boolean;
657
+ currentChartType: import("../element/types").ChartType;
658
+ pasteDialog: {
659
+ shown: false;
660
+ data: null;
661
+ } | {
662
+ shown: true;
663
+ data: import("../charts").Spreadsheet;
664
+ };
665
+ pendingImageElementId: string | null;
666
+ showHyperlinkPopup: false | "editor" | "info";
667
+ selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
668
+ snapLines: readonly import("../snapping").SnapLine[];
669
+ originSnapOffset: {
670
+ x: number;
671
+ y: number;
672
+ } | null;
673
+ objectsSnapModeEnabled: boolean;
674
+ };
675
+ commitToHistory: boolean;
676
+ };
677
+ export declare const actionZoomToFitSelectionInViewport: {
678
+ name: "zoomToFitSelectionInViewport";
476
679
  trackEvent: {
477
680
  category: "canvas";
478
681
  };
479
- perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>) => {
682
+ perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, _: any, app: import("../types").AppClassProperties) => {
480
683
  appState: {
684
+ scrollX: number;
685
+ scrollY: number;
481
686
  zoom: {
482
687
  value: NormalizedZoomValue;
483
688
  };
484
- scrollX: number;
485
- scrollY: number;
689
+ contextMenu: {
690
+ items: import("../components/ContextMenu").ContextMenuItems;
691
+ top: number;
692
+ left: number;
693
+ } | null;
486
694
  showWelcomeScreen: boolean;
487
695
  isLoading: boolean;
488
- errorMessage: string | null;
696
+ errorMessage: import("react").ReactNode;
697
+ activeEmbeddable: {
698
+ element: import("../element/types").NonDeletedExcalidrawElement;
699
+ state: "active" | "hover";
700
+ } | null;
489
701
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
490
702
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
491
703
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -493,19 +705,153 @@ export declare const actionZoomToSelected: {
493
705
  isBindingEnabled: boolean;
494
706
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
495
707
  suggestedBindings: import("../element/binding").SuggestedBinding[];
708
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
709
+ frameRendering: {
710
+ enabled: boolean;
711
+ name: boolean;
712
+ outline: boolean;
713
+ clip: boolean;
714
+ };
715
+ editingFrame: string | null;
716
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
496
717
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
497
718
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
498
719
  activeTool: {
499
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
500
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
720
+ lastActiveTool: import("../types").ActiveTool | null;
501
721
  locked: boolean;
502
- customType: null;
722
+ } & import("../types").ActiveTool;
723
+ penMode: boolean;
724
+ penDetected: boolean;
725
+ exportBackground: boolean;
726
+ exportEmbedScene: boolean;
727
+ exportWithDarkMode: boolean;
728
+ exportScale: number;
729
+ currentItemStrokeColor: string;
730
+ currentItemBackgroundColor: string;
731
+ currentItemFillStyle: import("../element/types").FillStyle;
732
+ currentItemStrokeWidth: number;
733
+ currentItemStrokeStyle: import("../element/types").StrokeStyle;
734
+ currentItemRoughness: number;
735
+ currentItemOpacity: number;
736
+ currentItemFontFamily: number;
737
+ currentItemFontSize: number;
738
+ currentItemTextAlign: string;
739
+ currentItemStartArrowhead: import("../element/types").Arrowhead | null;
740
+ currentItemEndArrowhead: import("../element/types").Arrowhead | null;
741
+ currentItemRoundness: import("../element/types").StrokeRoundness;
742
+ viewBackgroundColor: string;
743
+ cursorButton: "up" | "down";
744
+ scrolledOutside: boolean;
745
+ name: string;
746
+ isResizing: boolean;
747
+ isRotating: boolean;
748
+ openMenu: "canvas" | "shape" | null;
749
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
750
+ openSidebar: {
751
+ name: string;
752
+ tab?: string | undefined;
753
+ } | null;
754
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
755
+ defaultSidebarDockedPreference: boolean;
756
+ lastPointerDownWith: import("../element/types").PointerType;
757
+ selectedElementIds: Readonly<{
758
+ [id: string]: true;
759
+ }>;
760
+ previousSelectedElementIds: {
761
+ [id: string]: true;
762
+ };
763
+ selectedElementsAreBeingDragged: boolean;
764
+ shouldCacheIgnoreZoom: boolean;
765
+ toast: {
766
+ message: string;
767
+ closable?: boolean | undefined;
768
+ duration?: number | undefined;
769
+ } | null;
770
+ zenModeEnabled: boolean;
771
+ theme: import("../element/types").Theme;
772
+ gridSize: number | null;
773
+ viewModeEnabled: boolean;
774
+ selectedGroupIds: {
775
+ [groupId: string]: boolean;
776
+ };
777
+ editingGroupId: string | null;
778
+ width: number;
779
+ height: number;
780
+ offsetTop: number;
781
+ offsetLeft: number;
782
+ fileHandle: import("browser-fs-access").FileSystemHandle | null;
783
+ collaborators: Map<string, import("../types").Collaborator>;
784
+ showStats: boolean;
785
+ currentChartType: import("../element/types").ChartType;
786
+ pasteDialog: {
787
+ shown: false;
788
+ data: null;
503
789
  } | {
504
- type: "custom";
505
- customType: string;
506
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
507
- locked: boolean;
790
+ shown: true;
791
+ data: import("../charts").Spreadsheet;
792
+ };
793
+ pendingImageElementId: string | null;
794
+ showHyperlinkPopup: false | "editor" | "info";
795
+ selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
796
+ snapLines: readonly import("../snapping").SnapLine[];
797
+ originSnapOffset: {
798
+ x: number;
799
+ y: number;
800
+ } | null;
801
+ objectsSnapModeEnabled: boolean;
802
+ };
803
+ commitToHistory: boolean;
804
+ };
805
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
806
+ } & {
807
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
808
+ };
809
+ export declare const actionZoomToFitSelection: {
810
+ name: "zoomToFitSelection";
811
+ trackEvent: {
812
+ category: "canvas";
813
+ };
814
+ perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, _: any, app: import("../types").AppClassProperties) => {
815
+ appState: {
816
+ scrollX: number;
817
+ scrollY: number;
818
+ zoom: {
819
+ value: NormalizedZoomValue;
820
+ };
821
+ contextMenu: {
822
+ items: import("../components/ContextMenu").ContextMenuItems;
823
+ top: number;
824
+ left: number;
825
+ } | null;
826
+ showWelcomeScreen: boolean;
827
+ isLoading: boolean;
828
+ errorMessage: import("react").ReactNode;
829
+ activeEmbeddable: {
830
+ element: import("../element/types").NonDeletedExcalidrawElement;
831
+ state: "active" | "hover";
832
+ } | null;
833
+ draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
834
+ resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
835
+ multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
836
+ selectionElement: import("../element/types").NonDeletedExcalidrawElement | null;
837
+ isBindingEnabled: boolean;
838
+ startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
839
+ suggestedBindings: import("../element/binding").SuggestedBinding[];
840
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
841
+ frameRendering: {
842
+ enabled: boolean;
843
+ name: boolean;
844
+ outline: boolean;
845
+ clip: boolean;
508
846
  };
847
+ editingFrame: string | null;
848
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
849
+ editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
850
+ editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
851
+ activeTool: {
852
+ lastActiveTool: import("../types").ActiveTool | null;
853
+ locked: boolean;
854
+ } & import("../types").ActiveTool;
509
855
  penMode: boolean;
510
856
  penDetected: boolean;
511
857
  exportBackground: boolean;
@@ -522,10 +868,9 @@ export declare const actionZoomToSelected: {
522
868
  currentItemFontFamily: number;
523
869
  currentItemFontSize: number;
524
870
  currentItemTextAlign: string;
525
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
526
871
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
527
872
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
528
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
873
+ currentItemRoundness: import("../element/types").StrokeRoundness;
529
874
  viewBackgroundColor: string;
530
875
  cursorButton: "up" | "down";
531
876
  scrolledOutside: boolean;
@@ -533,17 +878,21 @@ export declare const actionZoomToSelected: {
533
878
  isResizing: boolean;
534
879
  isRotating: boolean;
535
880
  openMenu: "canvas" | "shape" | null;
536
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
537
- openSidebar: "library" | "customSidebar" | null;
538
- openDialog: "imageExport" | "help" | null;
539
- isSidebarDocked: boolean;
881
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
882
+ openSidebar: {
883
+ name: string;
884
+ tab?: string | undefined;
885
+ } | null;
886
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
887
+ defaultSidebarDockedPreference: boolean;
540
888
  lastPointerDownWith: import("../element/types").PointerType;
541
- selectedElementIds: {
542
- [id: string]: boolean;
543
- };
889
+ selectedElementIds: Readonly<{
890
+ [id: string]: true;
891
+ }>;
544
892
  previousSelectedElementIds: {
545
- [id: string]: boolean;
893
+ [id: string]: true;
546
894
  };
895
+ selectedElementsAreBeingDragged: boolean;
547
896
  shouldCacheIgnoreZoom: boolean;
548
897
  toast: {
549
898
  message: string;
@@ -551,7 +900,7 @@ export declare const actionZoomToSelected: {
551
900
  duration?: number | undefined;
552
901
  } | null;
553
902
  zenModeEnabled: boolean;
554
- theme: string;
903
+ theme: import("../element/types").Theme;
555
904
  gridSize: number | null;
556
905
  viewModeEnabled: boolean;
557
906
  selectedGroupIds: {
@@ -574,30 +923,46 @@ export declare const actionZoomToSelected: {
574
923
  data: import("../charts").Spreadsheet;
575
924
  };
576
925
  pendingImageElementId: string | null;
577
- showHyperlinkPopup: false | "info" | "editor";
926
+ showHyperlinkPopup: false | "editor" | "info";
578
927
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
928
+ snapLines: readonly import("../snapping").SnapLine[];
929
+ originSnapOffset: {
930
+ x: number;
931
+ y: number;
932
+ } | null;
933
+ objectsSnapModeEnabled: boolean;
579
934
  };
580
935
  commitToHistory: boolean;
581
936
  };
582
- keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
937
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
583
938
  } & {
584
- keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
939
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
585
940
  };
586
941
  export declare const actionZoomToFit: {
587
942
  name: "zoomToFit";
943
+ viewMode: true;
588
944
  trackEvent: {
589
945
  category: "canvas";
590
946
  };
591
947
  perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>) => {
592
948
  appState: {
949
+ scrollX: number;
950
+ scrollY: number;
593
951
  zoom: {
594
952
  value: NormalizedZoomValue;
595
953
  };
596
- scrollX: number;
597
- scrollY: number;
954
+ contextMenu: {
955
+ items: import("../components/ContextMenu").ContextMenuItems;
956
+ top: number;
957
+ left: number;
958
+ } | null;
598
959
  showWelcomeScreen: boolean;
599
960
  isLoading: boolean;
600
- errorMessage: string | null;
961
+ errorMessage: import("react").ReactNode;
962
+ activeEmbeddable: {
963
+ element: import("../element/types").NonDeletedExcalidrawElement;
964
+ state: "active" | "hover";
965
+ } | null;
601
966
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
602
967
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
603
968
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -605,19 +970,21 @@ export declare const actionZoomToFit: {
605
970
  isBindingEnabled: boolean;
606
971
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
607
972
  suggestedBindings: import("../element/binding").SuggestedBinding[];
973
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
974
+ frameRendering: {
975
+ enabled: boolean;
976
+ name: boolean;
977
+ outline: boolean;
978
+ clip: boolean;
979
+ };
980
+ editingFrame: string | null;
981
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
608
982
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
609
983
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
610
984
  activeTool: {
611
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
612
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
985
+ lastActiveTool: import("../types").ActiveTool | null;
613
986
  locked: boolean;
614
- customType: null;
615
- } | {
616
- type: "custom";
617
- customType: string;
618
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
619
- locked: boolean;
620
- };
987
+ } & import("../types").ActiveTool;
621
988
  penMode: boolean;
622
989
  penDetected: boolean;
623
990
  exportBackground: boolean;
@@ -634,10 +1001,9 @@ export declare const actionZoomToFit: {
634
1001
  currentItemFontFamily: number;
635
1002
  currentItemFontSize: number;
636
1003
  currentItemTextAlign: string;
637
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
638
1004
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
639
1005
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
640
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
1006
+ currentItemRoundness: import("../element/types").StrokeRoundness;
641
1007
  viewBackgroundColor: string;
642
1008
  cursorButton: "up" | "down";
643
1009
  scrolledOutside: boolean;
@@ -645,17 +1011,21 @@ export declare const actionZoomToFit: {
645
1011
  isResizing: boolean;
646
1012
  isRotating: boolean;
647
1013
  openMenu: "canvas" | "shape" | null;
648
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
649
- openSidebar: "library" | "customSidebar" | null;
650
- openDialog: "imageExport" | "help" | null;
651
- isSidebarDocked: boolean;
1014
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
1015
+ openSidebar: {
1016
+ name: string;
1017
+ tab?: string | undefined;
1018
+ } | null;
1019
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
1020
+ defaultSidebarDockedPreference: boolean;
652
1021
  lastPointerDownWith: import("../element/types").PointerType;
653
- selectedElementIds: {
654
- [id: string]: boolean;
655
- };
1022
+ selectedElementIds: Readonly<{
1023
+ [id: string]: true;
1024
+ }>;
656
1025
  previousSelectedElementIds: {
657
- [id: string]: boolean;
1026
+ [id: string]: true;
658
1027
  };
1028
+ selectedElementsAreBeingDragged: boolean;
659
1029
  shouldCacheIgnoreZoom: boolean;
660
1030
  toast: {
661
1031
  message: string;
@@ -663,7 +1033,7 @@ export declare const actionZoomToFit: {
663
1033
  duration?: number | undefined;
664
1034
  } | null;
665
1035
  zenModeEnabled: boolean;
666
- theme: string;
1036
+ theme: import("../element/types").Theme;
667
1037
  gridSize: number | null;
668
1038
  viewModeEnabled: boolean;
669
1039
  selectedGroupIds: {
@@ -686,26 +1056,42 @@ export declare const actionZoomToFit: {
686
1056
  data: import("../charts").Spreadsheet;
687
1057
  };
688
1058
  pendingImageElementId: string | null;
689
- showHyperlinkPopup: false | "info" | "editor";
1059
+ showHyperlinkPopup: false | "editor" | "info";
690
1060
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1061
+ snapLines: readonly import("../snapping").SnapLine[];
1062
+ originSnapOffset: {
1063
+ x: number;
1064
+ y: number;
1065
+ } | null;
1066
+ objectsSnapModeEnabled: boolean;
691
1067
  };
692
1068
  commitToHistory: boolean;
693
1069
  };
694
- keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
1070
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
695
1071
  } & {
696
- keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
1072
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
697
1073
  };
698
1074
  export declare const actionToggleTheme: {
699
1075
  name: "toggleTheme";
1076
+ viewMode: true;
700
1077
  trackEvent: {
701
1078
  category: "canvas";
702
1079
  };
703
1080
  perform: (_: readonly ExcalidrawElement[], appState: Readonly<AppState>, value: any) => {
704
1081
  appState: {
705
1082
  theme: any;
1083
+ contextMenu: {
1084
+ items: import("../components/ContextMenu").ContextMenuItems;
1085
+ top: number;
1086
+ left: number;
1087
+ } | null;
706
1088
  showWelcomeScreen: boolean;
707
1089
  isLoading: boolean;
708
- errorMessage: string | null;
1090
+ errorMessage: import("react").ReactNode;
1091
+ activeEmbeddable: {
1092
+ element: import("../element/types").NonDeletedExcalidrawElement;
1093
+ state: "active" | "hover";
1094
+ } | null;
709
1095
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
710
1096
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
711
1097
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -713,19 +1099,21 @@ export declare const actionToggleTheme: {
713
1099
  isBindingEnabled: boolean;
714
1100
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
715
1101
  suggestedBindings: import("../element/binding").SuggestedBinding[];
1102
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
1103
+ frameRendering: {
1104
+ enabled: boolean;
1105
+ name: boolean;
1106
+ outline: boolean;
1107
+ clip: boolean;
1108
+ };
1109
+ editingFrame: string | null;
1110
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
716
1111
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
717
1112
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
718
1113
  activeTool: {
719
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
720
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
721
- locked: boolean;
722
- customType: null;
723
- } | {
724
- type: "custom";
725
- customType: string;
726
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
1114
+ lastActiveTool: import("../types").ActiveTool | null;
727
1115
  locked: boolean;
728
- };
1116
+ } & import("../types").ActiveTool;
729
1117
  penMode: boolean;
730
1118
  penDetected: boolean;
731
1119
  exportBackground: boolean;
@@ -742,10 +1130,9 @@ export declare const actionToggleTheme: {
742
1130
  currentItemFontFamily: number;
743
1131
  currentItemFontSize: number;
744
1132
  currentItemTextAlign: string;
745
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
746
1133
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
747
1134
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
748
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
1135
+ currentItemRoundness: import("../element/types").StrokeRoundness;
749
1136
  viewBackgroundColor: string;
750
1137
  scrollX: number;
751
1138
  scrollY: number;
@@ -758,17 +1145,21 @@ export declare const actionToggleTheme: {
758
1145
  value: NormalizedZoomValue;
759
1146
  }>;
760
1147
  openMenu: "canvas" | "shape" | null;
761
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
762
- openSidebar: "library" | "customSidebar" | null;
763
- openDialog: "imageExport" | "help" | null;
764
- isSidebarDocked: boolean;
1148
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
1149
+ openSidebar: {
1150
+ name: string;
1151
+ tab?: string | undefined;
1152
+ } | null;
1153
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
1154
+ defaultSidebarDockedPreference: boolean;
765
1155
  lastPointerDownWith: import("../element/types").PointerType;
766
- selectedElementIds: {
767
- [id: string]: boolean;
768
- };
1156
+ selectedElementIds: Readonly<{
1157
+ [id: string]: true;
1158
+ }>;
769
1159
  previousSelectedElementIds: {
770
- [id: string]: boolean;
1160
+ [id: string]: true;
771
1161
  };
1162
+ selectedElementsAreBeingDragged: boolean;
772
1163
  shouldCacheIgnoreZoom: boolean;
773
1164
  toast: {
774
1165
  message: string;
@@ -798,20 +1189,24 @@ export declare const actionToggleTheme: {
798
1189
  data: import("../charts").Spreadsheet;
799
1190
  };
800
1191
  pendingImageElementId: string | null;
801
- showHyperlinkPopup: false | "info" | "editor";
1192
+ showHyperlinkPopup: false | "editor" | "info";
802
1193
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1194
+ snapLines: readonly import("../snapping").SnapLine[];
1195
+ originSnapOffset: {
1196
+ x: number;
1197
+ y: number;
1198
+ } | null;
1199
+ objectsSnapModeEnabled: boolean;
803
1200
  };
804
1201
  commitToHistory: false;
805
1202
  };
806
- PanelComponent: ({ appState, updateData }: import("./types").PanelComponentProps & {
807
- isInHamburgerMenu: boolean;
808
- }) => JSX.Element;
809
- keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
1203
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
1204
+ predicate: (elements: readonly ExcalidrawElement[], appState: AppState, props: import("../types").ExcalidrawProps, app: import("../types").AppClassProperties) => boolean;
810
1205
  } & {
811
- keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
1206
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
812
1207
  };
813
- export declare const actionErase: {
814
- name: "eraser";
1208
+ export declare const actionToggleEraserTool: {
1209
+ name: "toggleEraserTool";
815
1210
  trackEvent: {
816
1211
  category: "toolbar";
817
1212
  };
@@ -819,20 +1214,144 @@ export declare const actionErase: {
819
1214
  appState: {
820
1215
  selectedElementIds: {};
821
1216
  selectedGroupIds: {};
1217
+ activeEmbeddable: null;
822
1218
  activeTool: {
823
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
824
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
1219
+ lastActiveTool: import("../types").ActiveTool | null;
825
1220
  locked: boolean;
826
- customType: null;
1221
+ } & import("../types").ActiveTool;
1222
+ contextMenu: {
1223
+ items: import("../components/ContextMenu").ContextMenuItems;
1224
+ top: number;
1225
+ left: number;
1226
+ } | null;
1227
+ showWelcomeScreen: boolean;
1228
+ isLoading: boolean;
1229
+ errorMessage: import("react").ReactNode;
1230
+ draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1231
+ resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1232
+ multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
1233
+ selectionElement: import("../element/types").NonDeletedExcalidrawElement | null;
1234
+ isBindingEnabled: boolean;
1235
+ startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
1236
+ suggestedBindings: import("../element/binding").SuggestedBinding[];
1237
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
1238
+ frameRendering: {
1239
+ enabled: boolean;
1240
+ name: boolean;
1241
+ outline: boolean;
1242
+ clip: boolean;
1243
+ };
1244
+ editingFrame: string | null;
1245
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
1246
+ editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1247
+ editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1248
+ penMode: boolean;
1249
+ penDetected: boolean;
1250
+ exportBackground: boolean;
1251
+ exportEmbedScene: boolean;
1252
+ exportWithDarkMode: boolean;
1253
+ exportScale: number;
1254
+ currentItemStrokeColor: string;
1255
+ currentItemBackgroundColor: string;
1256
+ currentItemFillStyle: import("../element/types").FillStyle;
1257
+ currentItemStrokeWidth: number;
1258
+ currentItemStrokeStyle: import("../element/types").StrokeStyle;
1259
+ currentItemRoughness: number;
1260
+ currentItemOpacity: number;
1261
+ currentItemFontFamily: number;
1262
+ currentItemFontSize: number;
1263
+ currentItemTextAlign: string;
1264
+ currentItemStartArrowhead: import("../element/types").Arrowhead | null;
1265
+ currentItemEndArrowhead: import("../element/types").Arrowhead | null;
1266
+ currentItemRoundness: import("../element/types").StrokeRoundness;
1267
+ viewBackgroundColor: string;
1268
+ scrollX: number;
1269
+ scrollY: number;
1270
+ cursorButton: "up" | "down";
1271
+ scrolledOutside: boolean;
1272
+ name: string;
1273
+ isResizing: boolean;
1274
+ isRotating: boolean;
1275
+ zoom: Readonly<{
1276
+ value: NormalizedZoomValue;
1277
+ }>;
1278
+ openMenu: "canvas" | "shape" | null;
1279
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
1280
+ openSidebar: {
1281
+ name: string;
1282
+ tab?: string | undefined;
1283
+ } | null;
1284
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
1285
+ defaultSidebarDockedPreference: boolean;
1286
+ lastPointerDownWith: import("../element/types").PointerType;
1287
+ previousSelectedElementIds: {
1288
+ [id: string]: true;
1289
+ };
1290
+ selectedElementsAreBeingDragged: boolean;
1291
+ shouldCacheIgnoreZoom: boolean;
1292
+ toast: {
1293
+ message: string;
1294
+ closable?: boolean | undefined;
1295
+ duration?: number | undefined;
1296
+ } | null;
1297
+ zenModeEnabled: boolean;
1298
+ theme: import("../element/types").Theme;
1299
+ gridSize: number | null;
1300
+ viewModeEnabled: boolean;
1301
+ editingGroupId: string | null;
1302
+ width: number;
1303
+ height: number;
1304
+ offsetTop: number;
1305
+ offsetLeft: number;
1306
+ fileHandle: import("browser-fs-access").FileSystemHandle | null;
1307
+ collaborators: Map<string, import("../types").Collaborator>;
1308
+ showStats: boolean;
1309
+ currentChartType: import("../element/types").ChartType;
1310
+ pasteDialog: {
1311
+ shown: false;
1312
+ data: null;
827
1313
  } | {
828
- type: "custom";
829
- customType: string;
830
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
831
- locked: boolean;
1314
+ shown: true;
1315
+ data: import("../charts").Spreadsheet;
832
1316
  };
1317
+ pendingImageElementId: string | null;
1318
+ showHyperlinkPopup: false | "editor" | "info";
1319
+ selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1320
+ snapLines: readonly import("../snapping").SnapLine[];
1321
+ originSnapOffset: {
1322
+ x: number;
1323
+ y: number;
1324
+ } | null;
1325
+ objectsSnapModeEnabled: boolean;
1326
+ };
1327
+ commitToHistory: true;
1328
+ };
1329
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
1330
+ } & {
1331
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
1332
+ };
1333
+ export declare const actionToggleHandTool: {
1334
+ name: "toggleHandTool";
1335
+ trackEvent: {
1336
+ category: "toolbar";
1337
+ };
1338
+ perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, _: any, app: import("../types").AppClassProperties) => {
1339
+ appState: {
1340
+ selectedElementIds: {};
1341
+ selectedGroupIds: {};
1342
+ activeEmbeddable: null;
1343
+ activeTool: {
1344
+ lastActiveTool: import("../types").ActiveTool | null;
1345
+ locked: boolean;
1346
+ } & import("../types").ActiveTool;
1347
+ contextMenu: {
1348
+ items: import("../components/ContextMenu").ContextMenuItems;
1349
+ top: number;
1350
+ left: number;
1351
+ } | null;
833
1352
  showWelcomeScreen: boolean;
834
1353
  isLoading: boolean;
835
- errorMessage: string | null;
1354
+ errorMessage: import("react").ReactNode;
836
1355
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
837
1356
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
838
1357
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -840,6 +1359,15 @@ export declare const actionErase: {
840
1359
  isBindingEnabled: boolean;
841
1360
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
842
1361
  suggestedBindings: import("../element/binding").SuggestedBinding[];
1362
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
1363
+ frameRendering: {
1364
+ enabled: boolean;
1365
+ name: boolean;
1366
+ outline: boolean;
1367
+ clip: boolean;
1368
+ };
1369
+ editingFrame: string | null;
1370
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
843
1371
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
844
1372
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
845
1373
  penMode: boolean;
@@ -858,10 +1386,9 @@ export declare const actionErase: {
858
1386
  currentItemFontFamily: number;
859
1387
  currentItemFontSize: number;
860
1388
  currentItemTextAlign: string;
861
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
862
1389
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
863
1390
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
864
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
1391
+ currentItemRoundness: import("../element/types").StrokeRoundness;
865
1392
  viewBackgroundColor: string;
866
1393
  scrollX: number;
867
1394
  scrollY: number;
@@ -874,14 +1401,18 @@ export declare const actionErase: {
874
1401
  value: NormalizedZoomValue;
875
1402
  }>;
876
1403
  openMenu: "canvas" | "shape" | null;
877
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
878
- openSidebar: "library" | "customSidebar" | null;
879
- openDialog: "imageExport" | "help" | null;
880
- isSidebarDocked: boolean;
1404
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
1405
+ openSidebar: {
1406
+ name: string;
1407
+ tab?: string | undefined;
1408
+ } | null;
1409
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
1410
+ defaultSidebarDockedPreference: boolean;
881
1411
  lastPointerDownWith: import("../element/types").PointerType;
882
1412
  previousSelectedElementIds: {
883
- [id: string]: boolean;
1413
+ [id: string]: true;
884
1414
  };
1415
+ selectedElementsAreBeingDragged: boolean;
885
1416
  shouldCacheIgnoreZoom: boolean;
886
1417
  toast: {
887
1418
  message: string;
@@ -889,7 +1420,7 @@ export declare const actionErase: {
889
1420
  duration?: number | undefined;
890
1421
  } | null;
891
1422
  zenModeEnabled: boolean;
892
- theme: string;
1423
+ theme: import("../element/types").Theme;
893
1424
  gridSize: number | null;
894
1425
  viewModeEnabled: boolean;
895
1426
  editingGroupId: string | null;
@@ -909,15 +1440,18 @@ export declare const actionErase: {
909
1440
  data: import("../charts").Spreadsheet;
910
1441
  };
911
1442
  pendingImageElementId: string | null;
912
- showHyperlinkPopup: false | "info" | "editor";
1443
+ showHyperlinkPopup: false | "editor" | "info";
913
1444
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1445
+ snapLines: readonly import("../snapping").SnapLine[];
1446
+ originSnapOffset: {
1447
+ x: number;
1448
+ y: number;
1449
+ } | null;
1450
+ objectsSnapModeEnabled: boolean;
914
1451
  };
915
1452
  commitToHistory: true;
916
1453
  };
917
- keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
918
- PanelComponent: ({ elements, appState, updateData, data }: import("./types").PanelComponentProps & {
919
- isInHamburgerMenu: boolean;
920
- }) => JSX.Element;
1454
+ keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
921
1455
  } & {
922
- keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
1456
+ keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
923
1457
  };