@dwelle/excalidraw 0.4.0-d8d86cf → 0.4.0-da7ef3e

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