@dwelle/excalidraw 0.4.0-d8d86cf → 0.4.0-e03b600

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 (203) hide show
  1. package/CHANGELOG.md +458 -0
  2. package/README.md +18 -1422
  3. package/dist/excalidraw.development.js +1882 -498
  4. package/dist/excalidraw.production.min.js +1 -1
  5. package/dist/excalidraw.production.min.js.LICENSE.txt +20 -0
  6. package/package.json +3 -3
  7. package/types/actions/actionAddToLibrary.d.ts +68 -34
  8. package/types/actions/actionAlign.d.ts +12 -18
  9. package/types/actions/actionBoundText.d.ts +158 -19
  10. package/types/actions/actionCanvas.d.ts +544 -118
  11. package/types/actions/actionClipboard.d.ts +132 -59
  12. package/types/actions/actionDeleteSelected.d.ts +72 -41
  13. package/types/actions/actionDistribute.d.ts +2 -6
  14. package/types/actions/actionDuplicateSelection.d.ts +2 -4
  15. package/types/actions/actionElementLock.d.ts +254 -0
  16. package/types/actions/actionExport.d.ts +215 -131
  17. package/types/actions/actionFinalize.d.ts +47 -27
  18. package/types/actions/actionFlip.d.ts +2 -4
  19. package/types/actions/actionFrame.d.ts +397 -0
  20. package/types/actions/actionGroup.d.ts +6 -10
  21. package/types/actions/actionHistory.d.ts +1 -1
  22. package/types/actions/actionLinearEditor.d.ts +25 -13
  23. package/types/actions/actionMenu.d.ts +73 -46
  24. package/types/actions/actionNavigate.d.ts +2 -3
  25. package/types/actions/actionProperties.d.ts +315 -198
  26. package/types/actions/actionStyles.d.ts +23 -12
  27. package/types/actions/actionToggleGridMode.d.ts +25 -12
  28. package/types/actions/actionToggleStats.d.ts +24 -12
  29. package/types/actions/actionToggleViewMode.d.ts +25 -12
  30. package/types/actions/actionToggleZenMode.d.ts +25 -12
  31. package/types/actions/actionZindex.d.ts +8 -16
  32. package/types/actions/index.d.ts +1 -1
  33. package/types/actions/manager.d.ts +3 -2
  34. package/types/actions/shortcuts.d.ts +2 -1
  35. package/types/actions/types.d.ts +13 -11
  36. package/types/appState.d.ts +16 -12
  37. package/types/charts.d.ts +2 -2
  38. package/types/clients.d.ts +5 -6
  39. package/types/clipboard.d.ts +2 -2
  40. package/types/colors.d.ts +60 -5
  41. package/types/components/Actions.d.ts +5 -5
  42. package/types/components/ActiveConfirmDialog.d.ts +4 -0
  43. package/types/components/App.d.ts +58 -68
  44. package/types/components/Avatar.d.ts +1 -2
  45. package/types/components/BraveMeasureTextError.d.ts +2 -0
  46. package/types/components/Button.d.ts +17 -0
  47. package/types/components/ButtonIconSelect.d.ts +11 -3
  48. package/types/components/Card.d.ts +7 -0
  49. package/types/components/ColorPicker/ColorInput.d.ts +7 -0
  50. package/types/components/ColorPicker/ColorPicker.d.ts +19 -0
  51. package/types/components/ColorPicker/CustomColorList.d.ts +8 -0
  52. package/types/components/ColorPicker/HotkeyLabel.d.ts +8 -0
  53. package/types/components/ColorPicker/Picker.d.ts +18 -0
  54. package/types/components/ColorPicker/PickerColorList.d.ts +10 -0
  55. package/types/components/ColorPicker/PickerHeading.d.ts +5 -0
  56. package/types/components/ColorPicker/ShadeList.d.ts +8 -0
  57. package/types/components/ColorPicker/TopPicks.d.ts +9 -0
  58. package/types/components/ColorPicker/colorPickerUtils.d.ts +21 -0
  59. package/types/components/ColorPicker/keyboardNavHandlers.d.ts +21 -0
  60. package/types/components/ContextMenu.d.ts +9 -22
  61. package/types/components/DefaultSidebar.d.ts +30 -0
  62. package/types/components/Dialog.d.ts +3 -4
  63. package/types/components/ErrorDialog.d.ts +3 -2
  64. package/types/components/EyeDropper.d.ts +18 -0
  65. package/types/components/FilledButton.d.ts +17 -0
  66. package/types/components/FixedSideContainer.d.ts +1 -1
  67. package/types/components/HandButton.d.ts +10 -0
  68. package/types/components/HelpButton.d.ts +1 -2
  69. package/types/components/HintViewer.d.ts +2 -2
  70. package/types/components/HomeButton.d.ts +1 -1
  71. package/types/components/ImageExportDialog.d.ts +8 -13
  72. package/types/components/Island.d.ts +1 -1
  73. package/types/components/JSONExportDialog.d.ts +6 -4
  74. package/types/components/LayerUI.d.ts +7 -15
  75. package/types/components/LibraryMenu.d.ts +13 -14
  76. package/types/components/LibraryMenuBrowseButton.d.ts +2 -2
  77. package/types/components/LibraryMenuControlButtons.d.ts +9 -0
  78. package/types/components/LibraryMenuHeaderContent.d.ts +11 -5
  79. package/types/components/LibraryMenuItems.d.ts +6 -7
  80. package/types/components/LibraryMenuSection.d.ts +22 -0
  81. package/types/components/LibraryUnit.d.ts +7 -3
  82. package/types/components/LockButton.d.ts +1 -2
  83. package/types/components/MobileMenu.d.ts +8 -11
  84. package/types/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -0
  85. package/types/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -0
  86. package/types/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -0
  87. package/types/components/PasteChartDialog.d.ts +4 -5
  88. package/types/components/PenModeButton.d.ts +1 -1
  89. package/types/components/Popover.d.ts +1 -1
  90. package/types/components/ProjectName.d.ts +2 -1
  91. package/types/components/PublishLibrary.d.ts +2 -2
  92. package/types/components/RadioGroup.d.ts +12 -0
  93. package/types/components/Sidebar/Sidebar.d.ts +66 -63
  94. package/types/components/Sidebar/SidebarHeader.d.ts +6 -19
  95. package/types/components/Sidebar/SidebarTab.d.ts +9 -0
  96. package/types/components/Sidebar/SidebarTabTrigger.d.ts +10 -0
  97. package/types/components/Sidebar/SidebarTabTriggers.d.ts +7 -0
  98. package/types/components/Sidebar/SidebarTabs.d.ts +7 -0
  99. package/types/components/Sidebar/SidebarTrigger.d.ts +6 -0
  100. package/types/components/Sidebar/common.d.ts +24 -7
  101. package/types/components/Spinner.d.ts +2 -1
  102. package/types/components/Stack.d.ts +4 -3
  103. package/types/components/Stats.d.ts +3 -3
  104. package/types/components/Switch.d.ts +9 -0
  105. package/types/components/ToolButton.d.ts +6 -5
  106. package/types/components/Tooltip.d.ts +1 -1
  107. package/types/components/Trans.d.ts +8 -0
  108. package/types/components/UserList.d.ts +0 -2
  109. package/types/components/dropdownMenu/DropdownMenu.d.ts +67 -0
  110. package/types/components/dropdownMenu/DropdownMenuContent.d.ts +15 -0
  111. package/types/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -0
  112. package/types/components/dropdownMenu/DropdownMenuItem.d.ts +12 -0
  113. package/types/components/dropdownMenu/DropdownMenuItemContent.d.ts +6 -0
  114. package/types/components/dropdownMenu/DropdownMenuItemCustom.d.ts +6 -0
  115. package/types/components/dropdownMenu/DropdownMenuItemLink.d.ts +13 -0
  116. package/types/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -0
  117. package/types/components/dropdownMenu/DropdownMenuTrigger.d.ts +11 -0
  118. package/types/components/dropdownMenu/common.d.ts +6 -0
  119. package/types/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -0
  120. package/types/components/footer/Footer.d.ts +12 -0
  121. package/types/components/footer/FooterCenter.d.ts +8 -0
  122. package/types/components/hoc/withInternalFallback.d.ts +4 -0
  123. package/types/components/icons.d.ts +14 -2
  124. package/types/components/live-collaboration/LiveCollaborationTrigger.d.ts +10 -0
  125. package/types/components/main-menu/DefaultItems.d.ts +47 -0
  126. package/types/components/main-menu/MainMenu.d.ts +61 -0
  127. package/types/components/welcome-screen/WelcomeScreen.Center.d.ts +58 -0
  128. package/types/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -0
  129. package/types/components/welcome-screen/WelcomeScreen.d.ts +85 -0
  130. package/types/constants.d.ts +73 -16
  131. package/types/context/tunnels.d.ts +19 -0
  132. package/types/context/ui-appState.d.ts +4 -0
  133. package/types/data/blob.d.ts +3 -2
  134. package/types/data/encode.d.ts +1 -1
  135. package/types/data/filesystem.d.ts +2 -1
  136. package/types/data/index.d.ts +1 -1
  137. package/types/data/library.d.ts +3 -45
  138. package/types/data/restore.d.ts +10 -4
  139. package/types/data/types.d.ts +3 -5
  140. package/types/element/Hyperlink.d.ts +27 -18
  141. package/types/element/binding.d.ts +3 -3
  142. package/types/element/bounds.d.ts +32 -7
  143. package/types/element/collision.d.ts +7 -7
  144. package/types/element/dragElements.d.ts +2 -1
  145. package/types/element/image.d.ts +11 -1
  146. package/types/element/index.d.ts +3 -2
  147. package/types/element/linearElementEditor.d.ts +24 -13
  148. package/types/element/mutateElement.d.ts +2 -1
  149. package/types/element/newElement.d.ts +37 -11
  150. package/types/element/resizeElements.d.ts +1 -0
  151. package/types/element/showSelectedShapeActions.d.ts +2 -2
  152. package/types/element/sortElements.d.ts +2 -0
  153. package/types/element/textElement.d.ts +40 -5
  154. package/types/element/textWysiwyg.d.ts +6 -1
  155. package/types/element/transformHandles.d.ts +12 -5
  156. package/types/element/typeChecks.d.ts +12 -2
  157. package/types/element/types.d.ts +53 -36
  158. package/types/emitter.d.ts +1 -1
  159. package/types/errors.d.ts +1 -1
  160. package/types/frame.d.ts +40 -0
  161. package/types/ga.d.ts +5 -5
  162. package/types/groups.d.ts +4 -0
  163. package/types/hooks/useCreatePortalContainer.d.ts +4 -0
  164. package/types/hooks/useLibraryItemSvg.d.ts +11 -0
  165. package/types/hooks/useOutsideClick.d.ts +19 -1
  166. package/types/hooks/useScrollPosition.d.ts +2 -0
  167. package/types/hooks/useTransition.d.ts +2 -0
  168. package/types/i18n.d.ts +7 -1
  169. package/types/jotai.d.ts +20 -108
  170. package/types/keys.d.ts +4 -4
  171. package/types/math.d.ts +4 -1
  172. package/types/packages/excalidraw/example/App.d.ts +7 -1
  173. package/types/packages/excalidraw/example/CustomFooter.d.ts +5 -0
  174. package/types/packages/excalidraw/example/MobileFooter.d.ts +5 -0
  175. package/types/packages/excalidraw/example/initialData.d.ts +6 -0
  176. package/types/packages/excalidraw/index.d.ts +17 -3
  177. package/types/packages/utils.d.ts +26 -25
  178. package/types/renderer/renderElement.d.ts +7 -5
  179. package/types/renderer/renderScene.d.ts +13 -6
  180. package/types/renderer/roundRect.d.ts +1 -1
  181. package/types/scene/Scene.d.ts +12 -5
  182. package/types/scene/comparisons.d.ts +1 -1
  183. package/types/scene/export.d.ts +157 -10
  184. package/types/scene/index.d.ts +1 -1
  185. package/types/scene/selection.d.ts +15 -5
  186. package/types/scene/types.d.ts +13 -5
  187. package/types/types.d.ts +126 -77
  188. package/types/utility-types.d.ts +22 -0
  189. package/types/utils.d.ts +30 -9
  190. package/types/zindex.d.ts +4 -4
  191. package/types/actions/actionToggleLock.d.ts +0 -116
  192. package/types/components/ActiveFile.d.ts +0 -7
  193. package/types/components/ClearCanvas.d.ts +0 -4
  194. package/types/components/CollabButton.d.ts +0 -6
  195. package/types/components/ColorPicker.d.ts +0 -14
  196. package/types/components/Footer.d.ts +0 -10
  197. package/types/components/LibraryButton.d.ts +0 -8
  198. package/types/components/MenuItem.d.ts +0 -11
  199. package/types/components/MenuUtils.d.ts +0 -1
  200. package/types/components/SingleLibraryItem.d.ts +0 -10
  201. package/types/components/WelcomeScreen.d.ts +0 -10
  202. package/types/components/WelcomeScreenDecor.d.ts +0 -6
  203. package/types/components/hoc/withUpstreamOverride.d.ts +0 -10
@@ -10,9 +10,14 @@ export declare const actionCopyStyles: {
10
10
  toast: {
11
11
  message: string;
12
12
  };
13
+ contextMenu: {
14
+ items: import("../components/ContextMenu").ContextMenuItems;
15
+ top: number;
16
+ left: number;
17
+ } | null;
13
18
  showWelcomeScreen: boolean;
14
19
  isLoading: boolean;
15
- errorMessage: string | null;
20
+ errorMessage: import("react").ReactNode;
16
21
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
17
22
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
18
23
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -20,19 +25,22 @@ export declare const actionCopyStyles: {
20
25
  isBindingEnabled: boolean;
21
26
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
22
27
  suggestedBindings: import("../element/binding").SuggestedBinding[];
28
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
29
+ shouldRenderFrames: boolean;
30
+ editingFrame: string | null;
31
+ elementsToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawElement>[] | null;
23
32
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
24
33
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
25
34
  activeTool: {
26
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
27
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
35
+ lastActiveTool: import("../types").LastActiveTool;
28
36
  locked: boolean;
37
+ } & ({
38
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "frame" | "freedraw" | "eraser" | "hand";
29
39
  customType: null;
30
40
  } | {
31
41
  type: "custom";
32
42
  customType: string;
33
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
34
- locked: boolean;
35
- };
43
+ });
36
44
  penMode: boolean;
37
45
  penDetected: boolean;
38
46
  exportBackground: boolean;
@@ -49,10 +57,9 @@ export declare const actionCopyStyles: {
49
57
  currentItemFontFamily: number;
50
58
  currentItemFontSize: number;
51
59
  currentItemTextAlign: string;
52
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
53
60
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
54
61
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
55
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
62
+ currentItemRoundness: import("../element/types").StrokeRoundness;
56
63
  viewBackgroundColor: string;
57
64
  scrollX: number;
58
65
  scrollY: number;
@@ -65,10 +72,13 @@ export declare const actionCopyStyles: {
65
72
  value: import("../types").NormalizedZoomValue;
66
73
  }>;
67
74
  openMenu: "canvas" | "shape" | null;
68
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
69
- openSidebar: "library" | "customSidebar" | null;
70
- openDialog: "imageExport" | "help" | null;
71
- isSidebarDocked: boolean;
75
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
76
+ openSidebar: {
77
+ name: string;
78
+ tab?: string | undefined;
79
+ } | null;
80
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
81
+ defaultSidebarDockedPreference: boolean;
72
82
  lastPointerDownWith: import("../element/types").PointerType;
73
83
  selectedElementIds: {
74
84
  [id: string]: boolean;
@@ -76,6 +86,7 @@ export declare const actionCopyStyles: {
76
86
  previousSelectedElementIds: {
77
87
  [id: string]: boolean;
78
88
  };
89
+ selectedElementsAreBeingDragged: boolean;
79
90
  shouldCacheIgnoreZoom: boolean;
80
91
  zenModeEnabled: boolean;
81
92
  theme: string;
@@ -2,6 +2,7 @@
2
2
  import { AppState } from "../types";
3
3
  export declare const actionToggleGridMode: {
4
4
  name: "gridMode";
5
+ viewMode: true;
5
6
  trackEvent: {
6
7
  category: "canvas";
7
8
  predicate: (appState: Readonly<AppState>) => boolean;
@@ -9,9 +10,14 @@ export declare const actionToggleGridMode: {
9
10
  perform(elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<AppState>): {
10
11
  appState: {
11
12
  gridSize: number | null;
13
+ contextMenu: {
14
+ items: import("../components/ContextMenu").ContextMenuItems;
15
+ top: number;
16
+ left: number;
17
+ } | null;
12
18
  showWelcomeScreen: boolean;
13
19
  isLoading: boolean;
14
- errorMessage: string | null;
20
+ errorMessage: import("react").ReactNode;
15
21
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
16
22
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
17
23
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -19,19 +25,22 @@ export declare const actionToggleGridMode: {
19
25
  isBindingEnabled: boolean;
20
26
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
21
27
  suggestedBindings: import("../element/binding").SuggestedBinding[];
28
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
29
+ shouldRenderFrames: boolean;
30
+ editingFrame: string | null;
31
+ elementsToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawElement>[] | null;
22
32
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
23
33
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
24
34
  activeTool: {
25
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
26
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
35
+ lastActiveTool: import("../types").LastActiveTool;
27
36
  locked: boolean;
37
+ } & ({
38
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "frame" | "freedraw" | "eraser" | "hand";
28
39
  customType: null;
29
40
  } | {
30
41
  type: "custom";
31
42
  customType: string;
32
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
33
- locked: boolean;
34
- };
43
+ });
35
44
  penMode: boolean;
36
45
  penDetected: boolean;
37
46
  exportBackground: boolean;
@@ -48,10 +57,9 @@ export declare const actionToggleGridMode: {
48
57
  currentItemFontFamily: number;
49
58
  currentItemFontSize: number;
50
59
  currentItemTextAlign: string;
51
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
52
60
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
53
61
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
54
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
62
+ currentItemRoundness: import("../element/types").StrokeRoundness;
55
63
  viewBackgroundColor: string;
56
64
  scrollX: number;
57
65
  scrollY: number;
@@ -64,10 +72,13 @@ export declare const actionToggleGridMode: {
64
72
  value: import("../types").NormalizedZoomValue;
65
73
  }>;
66
74
  openMenu: "canvas" | "shape" | null;
67
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
68
- openSidebar: "library" | "customSidebar" | null;
69
- openDialog: "imageExport" | "help" | null;
70
- isSidebarDocked: boolean;
75
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
76
+ openSidebar: {
77
+ name: string;
78
+ tab?: string | undefined;
79
+ } | null;
80
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
81
+ defaultSidebarDockedPreference: boolean;
71
82
  lastPointerDownWith: import("../element/types").PointerType;
72
83
  selectedElementIds: {
73
84
  [id: string]: boolean;
@@ -75,6 +86,7 @@ export declare const actionToggleGridMode: {
75
86
  previousSelectedElementIds: {
76
87
  [id: string]: boolean;
77
88
  };
89
+ selectedElementsAreBeingDragged: boolean;
78
90
  shouldCacheIgnoreZoom: boolean;
79
91
  toast: {
80
92
  message: string;
@@ -110,6 +122,7 @@ export declare const actionToggleGridMode: {
110
122
  commitToHistory: false;
111
123
  };
112
124
  checked: (appState: AppState) => boolean;
125
+ predicate: (element: readonly import("../element/types").ExcalidrawElement[], appState: AppState, props: import("../types").ExcalidrawProps) => boolean;
113
126
  contextItemLabel: string;
114
127
  keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
115
128
  } & {
@@ -1,15 +1,21 @@
1
1
  /// <reference types="react" />
2
2
  export declare const actionToggleStats: {
3
3
  name: "stats";
4
+ viewMode: true;
4
5
  trackEvent: {
5
6
  category: "menu";
6
7
  };
7
8
  perform(elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>): {
8
9
  appState: {
9
10
  showStats: boolean;
11
+ contextMenu: {
12
+ items: import("../components/ContextMenu").ContextMenuItems;
13
+ top: number;
14
+ left: number;
15
+ } | null;
10
16
  showWelcomeScreen: boolean;
11
17
  isLoading: boolean;
12
- errorMessage: string | null;
18
+ errorMessage: import("react").ReactNode;
13
19
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
14
20
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
15
21
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -17,19 +23,22 @@ export declare const actionToggleStats: {
17
23
  isBindingEnabled: boolean;
18
24
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
19
25
  suggestedBindings: import("../element/binding").SuggestedBinding[];
26
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
27
+ shouldRenderFrames: boolean;
28
+ editingFrame: string | null;
29
+ elementsToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawElement>[] | null;
20
30
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
21
31
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
22
32
  activeTool: {
23
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
24
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
33
+ lastActiveTool: import("../types").LastActiveTool;
25
34
  locked: boolean;
35
+ } & ({
36
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "frame" | "freedraw" | "eraser" | "hand";
26
37
  customType: null;
27
38
  } | {
28
39
  type: "custom";
29
40
  customType: string;
30
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
31
- locked: boolean;
32
- };
41
+ });
33
42
  penMode: boolean;
34
43
  penDetected: boolean;
35
44
  exportBackground: boolean;
@@ -46,10 +55,9 @@ export declare const actionToggleStats: {
46
55
  currentItemFontFamily: number;
47
56
  currentItemFontSize: number;
48
57
  currentItemTextAlign: string;
49
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
50
58
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
51
59
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
52
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
60
+ currentItemRoundness: import("../element/types").StrokeRoundness;
53
61
  viewBackgroundColor: string;
54
62
  scrollX: number;
55
63
  scrollY: number;
@@ -62,10 +70,13 @@ export declare const actionToggleStats: {
62
70
  value: import("../types").NormalizedZoomValue;
63
71
  }>;
64
72
  openMenu: "canvas" | "shape" | null;
65
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
66
- openSidebar: "library" | "customSidebar" | null;
67
- openDialog: "imageExport" | "help" | null;
68
- isSidebarDocked: boolean;
73
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
74
+ openSidebar: {
75
+ name: string;
76
+ tab?: string | undefined;
77
+ } | null;
78
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
79
+ defaultSidebarDockedPreference: boolean;
69
80
  lastPointerDownWith: import("../element/types").PointerType;
70
81
  selectedElementIds: {
71
82
  [id: string]: boolean;
@@ -73,6 +84,7 @@ export declare const actionToggleStats: {
73
84
  previousSelectedElementIds: {
74
85
  [id: string]: boolean;
75
86
  };
87
+ selectedElementsAreBeingDragged: boolean;
76
88
  shouldCacheIgnoreZoom: boolean;
77
89
  toast: {
78
90
  message: string;
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  export declare const actionToggleViewMode: {
3
3
  name: "viewMode";
4
+ viewMode: true;
4
5
  trackEvent: {
5
6
  category: "canvas";
6
7
  predicate: (appState: Readonly<import("../types").AppState>) => boolean;
@@ -8,9 +9,14 @@ export declare const actionToggleViewMode: {
8
9
  perform(elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>): {
9
10
  appState: {
10
11
  viewModeEnabled: boolean;
12
+ contextMenu: {
13
+ items: import("../components/ContextMenu").ContextMenuItems;
14
+ top: number;
15
+ left: number;
16
+ } | null;
11
17
  showWelcomeScreen: boolean;
12
18
  isLoading: boolean;
13
- errorMessage: string | null;
19
+ errorMessage: import("react").ReactNode;
14
20
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
15
21
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
16
22
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -18,19 +24,22 @@ export declare const actionToggleViewMode: {
18
24
  isBindingEnabled: boolean;
19
25
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
20
26
  suggestedBindings: import("../element/binding").SuggestedBinding[];
27
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
28
+ shouldRenderFrames: boolean;
29
+ editingFrame: string | null;
30
+ elementsToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawElement>[] | null;
21
31
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
22
32
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
23
33
  activeTool: {
24
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
25
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
34
+ lastActiveTool: import("../types").LastActiveTool;
26
35
  locked: boolean;
36
+ } & ({
37
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "frame" | "freedraw" | "eraser" | "hand";
27
38
  customType: null;
28
39
  } | {
29
40
  type: "custom";
30
41
  customType: string;
31
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
32
- locked: boolean;
33
- };
42
+ });
34
43
  penMode: boolean;
35
44
  penDetected: boolean;
36
45
  exportBackground: boolean;
@@ -47,10 +56,9 @@ export declare const actionToggleViewMode: {
47
56
  currentItemFontFamily: number;
48
57
  currentItemFontSize: number;
49
58
  currentItemTextAlign: string;
50
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
51
59
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
52
60
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
53
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
61
+ currentItemRoundness: import("../element/types").StrokeRoundness;
54
62
  viewBackgroundColor: string;
55
63
  scrollX: number;
56
64
  scrollY: number;
@@ -63,10 +71,13 @@ export declare const actionToggleViewMode: {
63
71
  value: import("../types").NormalizedZoomValue;
64
72
  }>;
65
73
  openMenu: "canvas" | "shape" | null;
66
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
67
- openSidebar: "library" | "customSidebar" | null;
68
- openDialog: "imageExport" | "help" | null;
69
- isSidebarDocked: boolean;
74
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
75
+ openSidebar: {
76
+ name: string;
77
+ tab?: string | undefined;
78
+ } | null;
79
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
80
+ defaultSidebarDockedPreference: boolean;
70
81
  lastPointerDownWith: import("../element/types").PointerType;
71
82
  selectedElementIds: {
72
83
  [id: string]: boolean;
@@ -74,6 +85,7 @@ export declare const actionToggleViewMode: {
74
85
  previousSelectedElementIds: {
75
86
  [id: string]: boolean;
76
87
  };
88
+ selectedElementsAreBeingDragged: boolean;
77
89
  shouldCacheIgnoreZoom: boolean;
78
90
  toast: {
79
91
  message: string;
@@ -109,6 +121,7 @@ export declare const actionToggleViewMode: {
109
121
  commitToHistory: false;
110
122
  };
111
123
  checked: (appState: Readonly<import("../types").AppState>) => boolean;
124
+ predicate: (elements: readonly import("../element/types").ExcalidrawElement[], appState: import("../types").AppState, appProps: import("../types").ExcalidrawProps) => boolean;
112
125
  contextItemLabel: string;
113
126
  keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
114
127
  } & {
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  export declare const actionToggleZenMode: {
3
3
  name: "zenMode";
4
+ viewMode: true;
4
5
  trackEvent: {
5
6
  category: "canvas";
6
7
  predicate: (appState: Readonly<import("../types").AppState>) => boolean;
@@ -8,9 +9,14 @@ export declare const actionToggleZenMode: {
8
9
  perform(elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>): {
9
10
  appState: {
10
11
  zenModeEnabled: boolean;
12
+ contextMenu: {
13
+ items: import("../components/ContextMenu").ContextMenuItems;
14
+ top: number;
15
+ left: number;
16
+ } | null;
11
17
  showWelcomeScreen: boolean;
12
18
  isLoading: boolean;
13
- errorMessage: string | null;
19
+ errorMessage: import("react").ReactNode;
14
20
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
15
21
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
16
22
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -18,19 +24,22 @@ export declare const actionToggleZenMode: {
18
24
  isBindingEnabled: boolean;
19
25
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
20
26
  suggestedBindings: import("../element/binding").SuggestedBinding[];
27
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
28
+ shouldRenderFrames: boolean;
29
+ editingFrame: string | null;
30
+ elementsToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawElement>[] | null;
21
31
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
22
32
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
23
33
  activeTool: {
24
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
25
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
34
+ lastActiveTool: import("../types").LastActiveTool;
26
35
  locked: boolean;
36
+ } & ({
37
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "frame" | "freedraw" | "eraser" | "hand";
27
38
  customType: null;
28
39
  } | {
29
40
  type: "custom";
30
41
  customType: string;
31
- lastActiveToolBeforeEraser: import("../types").LastActiveToolBeforeEraser;
32
- locked: boolean;
33
- };
42
+ });
34
43
  penMode: boolean;
35
44
  penDetected: boolean;
36
45
  exportBackground: boolean;
@@ -47,10 +56,9 @@ export declare const actionToggleZenMode: {
47
56
  currentItemFontFamily: number;
48
57
  currentItemFontSize: number;
49
58
  currentItemTextAlign: string;
50
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
51
59
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
52
60
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
53
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
61
+ currentItemRoundness: import("../element/types").StrokeRoundness;
54
62
  viewBackgroundColor: string;
55
63
  scrollX: number;
56
64
  scrollY: number;
@@ -63,10 +71,13 @@ export declare const actionToggleZenMode: {
63
71
  value: import("../types").NormalizedZoomValue;
64
72
  }>;
65
73
  openMenu: "canvas" | "shape" | null;
66
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
67
- openSidebar: "library" | "customSidebar" | null;
68
- openDialog: "imageExport" | "help" | null;
69
- isSidebarDocked: boolean;
74
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
75
+ openSidebar: {
76
+ name: string;
77
+ tab?: string | undefined;
78
+ } | null;
79
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
80
+ defaultSidebarDockedPreference: boolean;
70
81
  lastPointerDownWith: import("../element/types").PointerType;
71
82
  selectedElementIds: {
72
83
  [id: string]: boolean;
@@ -74,6 +85,7 @@ export declare const actionToggleZenMode: {
74
85
  previousSelectedElementIds: {
75
86
  [id: string]: boolean;
76
87
  };
88
+ selectedElementsAreBeingDragged: boolean;
77
89
  shouldCacheIgnoreZoom: boolean;
78
90
  toast: {
79
91
  message: string;
@@ -109,6 +121,7 @@ export declare const actionToggleZenMode: {
109
121
  commitToHistory: false;
110
122
  };
111
123
  checked: (appState: Readonly<import("../types").AppState>) => boolean;
124
+ predicate: (elements: readonly import("../element/types").ExcalidrawElement[], appState: import("../types").AppState, appProps: import("../types").ExcalidrawProps) => boolean;
112
125
  contextItemLabel: string;
113
126
  keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
114
127
  } & {
@@ -5,16 +5,14 @@ export declare const actionSendBackward: {
5
5
  category: "element";
6
6
  };
7
7
  perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>) => {
8
- elements: (import("../element/types").ExcalidrawLinearElement | import("../element/types").ExcalidrawSelectionElement | import("../element/types").ExcalidrawRectangleElement | import("../element/types").ExcalidrawDiamondElement | import("../element/types").ExcalidrawEllipseElement | import("../element/types").ExcalidrawImageElement | import("../element/types").ExcalidrawTextElement | import("../element/types").ExcalidrawFreeDrawElement)[];
8
+ elements: import("../element/types").ExcalidrawElement[];
9
9
  appState: Readonly<import("../types").AppState>;
10
10
  commitToHistory: true;
11
11
  };
12
12
  contextItemLabel: string;
13
13
  keyPriority: number;
14
14
  keyTest: (event: KeyboardEvent | React.KeyboardEvent<Element>) => boolean;
15
- PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps & {
16
- isInHamburgerMenu: boolean;
17
- }) => JSX.Element;
15
+ PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
18
16
  } & {
19
17
  keyTest?: ((event: KeyboardEvent | React.KeyboardEvent<Element>) => boolean) | undefined;
20
18
  };
@@ -24,16 +22,14 @@ export declare const actionBringForward: {
24
22
  category: "element";
25
23
  };
26
24
  perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>) => {
27
- elements: (import("../element/types").ExcalidrawLinearElement | import("../element/types").ExcalidrawSelectionElement | import("../element/types").ExcalidrawRectangleElement | import("../element/types").ExcalidrawDiamondElement | import("../element/types").ExcalidrawEllipseElement | import("../element/types").ExcalidrawImageElement | import("../element/types").ExcalidrawTextElement | import("../element/types").ExcalidrawFreeDrawElement)[];
25
+ elements: import("../element/types").ExcalidrawElement[];
28
26
  appState: Readonly<import("../types").AppState>;
29
27
  commitToHistory: true;
30
28
  };
31
29
  contextItemLabel: string;
32
30
  keyPriority: number;
33
31
  keyTest: (event: KeyboardEvent | React.KeyboardEvent<Element>) => boolean;
34
- PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps & {
35
- isInHamburgerMenu: boolean;
36
- }) => JSX.Element;
32
+ PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
37
33
  } & {
38
34
  keyTest?: ((event: KeyboardEvent | React.KeyboardEvent<Element>) => boolean) | undefined;
39
35
  };
@@ -43,15 +39,13 @@ export declare const actionSendToBack: {
43
39
  category: "element";
44
40
  };
45
41
  perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>) => {
46
- elements: readonly import("../element/types").ExcalidrawElement[];
42
+ elements: import("../element/types").ExcalidrawElement[];
47
43
  appState: Readonly<import("../types").AppState>;
48
44
  commitToHistory: true;
49
45
  };
50
46
  contextItemLabel: string;
51
47
  keyTest: (event: KeyboardEvent | React.KeyboardEvent<Element>) => boolean;
52
- PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps & {
53
- isInHamburgerMenu: boolean;
54
- }) => JSX.Element;
48
+ PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
55
49
  } & {
56
50
  keyTest?: ((event: KeyboardEvent | React.KeyboardEvent<Element>) => boolean) | undefined;
57
51
  };
@@ -61,15 +55,13 @@ export declare const actionBringToFront: {
61
55
  category: "element";
62
56
  };
63
57
  perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>) => {
64
- elements: readonly import("../element/types").ExcalidrawElement[];
58
+ elements: import("../element/types").ExcalidrawElement[];
65
59
  appState: Readonly<import("../types").AppState>;
66
60
  commitToHistory: true;
67
61
  };
68
62
  contextItemLabel: string;
69
63
  keyTest: (event: KeyboardEvent | React.KeyboardEvent<Element>) => boolean;
70
- PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps & {
71
- isInHamburgerMenu: boolean;
72
- }) => JSX.Element;
64
+ PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
73
65
  } & {
74
66
  keyTest?: ((event: KeyboardEvent | React.KeyboardEvent<Element>) => boolean) | undefined;
75
67
  };
@@ -20,5 +20,5 @@ export { actionToggleZenMode } from "./actionToggleZenMode";
20
20
  export { actionToggleStats } from "./actionToggleStats";
21
21
  export { actionUnbindText, actionBindText } from "./actionBoundText";
22
22
  export { actionLink } from "../element/Hyperlink";
23
- export { actionToggleLock } from "./actionToggleLock";
23
+ export { actionToggleElementLock } from "./actionElementLock";
24
24
  export { actionToggleLinearEditor } from "./actionLinearEditor";
@@ -12,9 +12,10 @@ export declare class ActionManager {
12
12
  registerAction(action: Action): void;
13
13
  registerAll(actions: readonly Action[]): void;
14
14
  handleKeyDown(event: React.KeyboardEvent | KeyboardEvent): boolean;
15
- executeAction(action: Action, source?: ActionSource): void;
15
+ executeAction(action: Action, source?: ActionSource, value?: any): void;
16
16
  /**
17
17
  * @param data additional data sent to the PanelComponent
18
18
  */
19
- renderAction: (name: ActionName, data?: PanelComponentProps["data"], isInHamburgerMenu?: boolean) => JSX.Element | null;
19
+ renderAction: (name: ActionName, data?: PanelComponentProps["data"]) => JSX.Element | null;
20
+ isActionEnabled: (action: Action) => boolean;
20
21
  }
@@ -1,3 +1,4 @@
1
+ import { SubtypeOf } from "../utility-types";
1
2
  import { ActionName } from "./types";
2
- export declare type ShortcutName = SubtypeOf<ActionName, "toggleTheme" | "loadScene" | "cut" | "copy" | "paste" | "copyStyles" | "pasteStyles" | "selectAll" | "deleteSelectedElements" | "duplicateSelection" | "sendBackward" | "bringForward" | "sendToBack" | "bringToFront" | "copyAsPng" | "copyAsSvg" | "group" | "ungroup" | "gridMode" | "zenMode" | "stats" | "addToLibrary" | "viewMode" | "flipHorizontal" | "flipVertical" | "hyperlink" | "toggleLock"> | "saveScene" | "imageExport";
3
+ export type ShortcutName = SubtypeOf<ActionName, "toggleTheme" | "loadScene" | "clearCanvas" | "cut" | "copy" | "paste" | "copyStyles" | "pasteStyles" | "selectAll" | "deleteSelectedElements" | "duplicateSelection" | "sendBackward" | "bringForward" | "sendToBack" | "bringToFront" | "copyAsPng" | "copyAsSvg" | "group" | "ungroup" | "gridMode" | "zenMode" | "stats" | "addToLibrary" | "viewMode" | "flipHorizontal" | "flipVertical" | "hyperlink" | "toggleElementLock"> | "saveScene" | "imageExport";
3
4
  export declare const getShortcutFromShortcutName: (name: ShortcutName) => string;
@@ -1,9 +1,10 @@
1
1
  import React from "react";
2
2
  import { ExcalidrawElement } from "../element/types";
3
3
  import { AppClassProperties, AppState, ExcalidrawProps, BinaryFiles } from "../types";
4
- export declare type ActionSource = "ui" | "keyboard" | "contextMenu" | "api";
4
+ import { MarkOptional } from "../utility-types";
5
+ export type ActionSource = "ui" | "keyboard" | "contextMenu" | "api";
5
6
  /** if false, the action should be prevented */
6
- export declare type ActionResult = {
7
+ export type ActionResult = {
7
8
  elements?: readonly ExcalidrawElement[] | null;
8
9
  appState?: MarkOptional<AppState, "offsetTop" | "offsetLeft" | "width" | "height"> | null;
9
10
  files?: BinaryFiles | null;
@@ -11,11 +12,11 @@ export declare type ActionResult = {
11
12
  syncHistory?: boolean;
12
13
  replaceFiles?: boolean;
13
14
  } | false;
14
- declare type ActionFn = (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, formData: any, app: AppClassProperties) => ActionResult | Promise<ActionResult>;
15
- export declare type UpdaterFn = (res: ActionResult) => void;
16
- export declare type ActionFilterFn = (action: Action) => void;
17
- export declare type ActionName = "copy" | "cut" | "paste" | "copyAsPng" | "copyAsSvg" | "copyText" | "sendBackward" | "bringForward" | "sendToBack" | "bringToFront" | "copyStyles" | "selectAll" | "pasteStyles" | "gridMode" | "zenMode" | "stats" | "changeStrokeColor" | "changeBackgroundColor" | "changeFillStyle" | "changeStrokeWidth" | "changeStrokeShape" | "changeSloppiness" | "changeStrokeStyle" | "changeArrowhead" | "changeOpacity" | "changeFontSize" | "toggleCanvasMenu" | "toggleEditMenu" | "undo" | "redo" | "finalize" | "changeProjectName" | "changeExportBackground" | "changeExportEmbedScene" | "changeExportScale" | "saveToActiveFile" | "saveFileToDisk" | "loadScene" | "duplicateSelection" | "deleteSelectedElements" | "changeViewBackgroundColor" | "clearCanvas" | "zoomIn" | "zoomOut" | "resetZoom" | "zoomToFit" | "zoomToSelection" | "changeFontFamily" | "changeTextAlign" | "changeVerticalAlign" | "toggleFullScreen" | "toggleShortcuts" | "group" | "ungroup" | "goToCollaborator" | "addToLibrary" | "changeSharpness" | "alignTop" | "alignBottom" | "alignLeft" | "alignRight" | "alignVerticallyCentered" | "alignHorizontallyCentered" | "distributeHorizontally" | "distributeVertically" | "flipHorizontal" | "flipVertical" | "viewMode" | "exportWithDarkMode" | "toggleTheme" | "increaseFontSize" | "decreaseFontSize" | "unbindText" | "hyperlink" | "eraser" | "bindText" | "toggleLock" | "toggleLinearEditor";
18
- export declare type PanelComponentProps = {
15
+ type ActionFn = (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, formData: any, app: AppClassProperties) => ActionResult | Promise<ActionResult>;
16
+ export type UpdaterFn = (res: ActionResult) => void;
17
+ export type ActionFilterFn = (action: Action) => void;
18
+ export type ActionName = "copy" | "cut" | "paste" | "copyAsPng" | "copyAsSvg" | "copyText" | "sendBackward" | "bringForward" | "sendToBack" | "bringToFront" | "copyStyles" | "selectAll" | "pasteStyles" | "gridMode" | "zenMode" | "stats" | "changeStrokeColor" | "changeBackgroundColor" | "changeFillStyle" | "changeStrokeWidth" | "changeStrokeShape" | "changeSloppiness" | "changeStrokeStyle" | "changeArrowhead" | "changeOpacity" | "changeFontSize" | "toggleCanvasMenu" | "toggleEditMenu" | "undo" | "redo" | "finalize" | "changeProjectName" | "changeExportBackground" | "changeExportEmbedScene" | "changeExportScale" | "saveToActiveFile" | "saveFileToDisk" | "loadScene" | "duplicateSelection" | "deleteSelectedElements" | "changeViewBackgroundColor" | "clearCanvas" | "zoomIn" | "zoomOut" | "resetZoom" | "zoomToFit" | "zoomToSelection" | "changeFontFamily" | "changeTextAlign" | "changeVerticalAlign" | "toggleFullScreen" | "toggleShortcuts" | "group" | "ungroup" | "goToCollaborator" | "addToLibrary" | "changeRoundness" | "alignTop" | "alignBottom" | "alignLeft" | "alignRight" | "alignVerticallyCentered" | "alignHorizontallyCentered" | "distributeHorizontally" | "distributeVertically" | "flipHorizontal" | "flipVertical" | "viewMode" | "exportWithDarkMode" | "toggleTheme" | "increaseFontSize" | "decreaseFontSize" | "unbindText" | "hyperlink" | "bindText" | "unlockAllElements" | "toggleElementLock" | "toggleLinearEditor" | "toggleEraserTool" | "toggleHandTool" | "selectAllElementsInFrame" | "removeAllElementsFromFrame" | "toggleFrameRendering" | "setFrameAsActiveTool" | "createContainerFromText" | "wrapTextInContainer";
19
+ export type PanelComponentProps = {
19
20
  elements: readonly ExcalidrawElement[];
20
21
  appState: AppState;
21
22
  updateData: (formData?: any) => void;
@@ -24,19 +25,20 @@ export declare type PanelComponentProps = {
24
25
  };
25
26
  export interface Action {
26
27
  name: ActionName;
27
- PanelComponent?: React.FC<PanelComponentProps & {
28
- isInHamburgerMenu: boolean;
29
- }>;
28
+ PanelComponent?: React.FC<PanelComponentProps>;
30
29
  perform: ActionFn;
31
30
  keyPriority?: number;
32
31
  keyTest?: (event: React.KeyboardEvent | KeyboardEvent, appState: AppState, elements: readonly ExcalidrawElement[]) => boolean;
33
32
  contextItemLabel?: string | ((elements: readonly ExcalidrawElement[], appState: Readonly<AppState>) => string);
34
- contextItemPredicate?: (elements: readonly ExcalidrawElement[], appState: AppState) => boolean;
33
+ predicate?: (elements: readonly ExcalidrawElement[], appState: AppState, appProps: ExcalidrawProps, app: AppClassProperties) => boolean;
35
34
  checked?: (appState: Readonly<AppState>) => boolean;
36
35
  trackEvent: false | {
37
36
  category: "toolbar" | "element" | "canvas" | "export" | "history" | "menu" | "collab" | "hyperlink";
38
37
  action?: string;
39
38
  predicate?: (appState: Readonly<AppState>, elements: readonly ExcalidrawElement[], value: any) => boolean;
40
39
  };
40
+ /** if set to `true`, allow action to be performed in viewMode.
41
+ * Defaults to `false` */
42
+ viewMode?: boolean;
41
43
  }
42
44
  export {};