@zsviczian/excalidraw 0.14.2-obsidian-4 → 0.15.2-obsidian-1

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 (242) hide show
  1. package/README.md +2 -2
  2. package/dist/excalidraw.development.js +248 -269
  3. package/dist/excalidraw.production.min.js +1 -1
  4. package/package.json +1 -1
  5. package/types/actions/actionAddToLibrary.d.ts +375 -372
  6. package/types/actions/actionAlign.d.ts +91 -91
  7. package/types/actions/actionBoundText.d.ts +286 -284
  8. package/types/actions/actionCanvas.d.ts +1325 -1315
  9. package/types/actions/actionClipboard.d.ts +722 -717
  10. package/types/actions/actionDeleteSelected.d.ts +412 -409
  11. package/types/actions/actionDistribute.d.ts +33 -33
  12. package/types/actions/actionDuplicateSelection.d.ts +22 -22
  13. package/types/actions/actionExport.d.ts +1190 -1181
  14. package/types/actions/actionFinalize.d.ts +258 -256
  15. package/types/actions/actionFlip.d.ts +35 -35
  16. package/types/actions/actionGroup.d.ts +45 -45
  17. package/types/actions/actionHistory.d.ts +6 -6
  18. package/types/actions/actionLinearEditor.d.ts +136 -135
  19. package/types/actions/actionMenu.d.ts +413 -410
  20. package/types/actions/actionNavigate.d.ts +14 -14
  21. package/types/actions/actionProperties.d.ts +1727 -1714
  22. package/types/actions/actionSelectAll.d.ts +16 -16
  23. package/types/actions/actionStyles.d.ts +150 -149
  24. package/types/actions/actionToggleGridMode.d.ts +139 -138
  25. package/types/actions/actionToggleLock.d.ts +136 -135
  26. package/types/actions/actionToggleStats.d.ts +136 -135
  27. package/types/actions/actionToggleViewMode.d.ts +138 -137
  28. package/types/actions/actionToggleZenMode.d.ts +138 -137
  29. package/types/actions/actionZindex.d.ts +67 -67
  30. package/types/actions/index.d.ts +24 -24
  31. package/types/actions/manager.d.ts +21 -21
  32. package/types/actions/register.d.ts +5 -5
  33. package/types/actions/shortcuts.d.ts +4 -4
  34. package/types/actions/types.d.ts +44 -44
  35. package/types/align.d.ts +6 -6
  36. package/types/analytics.d.ts +1 -1
  37. package/types/appState.d.ts +78 -78
  38. package/types/bug-issue-template.d.ts +2 -0
  39. package/types/charts.d.ts +27 -27
  40. package/types/clients.d.ts +6 -6
  41. package/types/clipboard.d.ts +25 -25
  42. package/types/colors.d.ts +6 -6
  43. package/types/components/Actions.d.ts +36 -36
  44. package/types/components/ActiveConfirmDialog.d.ts +24 -24
  45. package/types/components/ActiveFile.d.ts +7 -0
  46. package/types/components/App.d.ts +248 -248
  47. package/types/components/Avatar.d.ts +11 -11
  48. package/types/components/BackgroundPickerAndDarkModeToggle.d.ts +4 -0
  49. package/types/components/BraveMeasureTextError.d.ts +2 -2
  50. package/types/components/Button.d.ts +15 -15
  51. package/types/components/ButtonIconSelect.d.ts +19 -11
  52. package/types/components/Card.d.ts +7 -7
  53. package/types/components/CheckboxItem.d.ts +8 -8
  54. package/types/components/ClearCanvas.d.ts +4 -0
  55. package/types/components/CollabButton.d.ts +7 -0
  56. package/types/components/ColorPicker.d.ts +19 -19
  57. package/types/components/ConfirmDialog.d.ts +10 -10
  58. package/types/components/ContextMenu.d.ts +15 -15
  59. package/types/components/DarkModeToggle.d.ts +7 -7
  60. package/types/components/Dialog.d.ts +14 -14
  61. package/types/components/DialogActionButton.d.ts +10 -10
  62. package/types/components/EncryptedIcon.d.ts +2 -0
  63. package/types/components/ErrorDialog.d.ts +5 -5
  64. package/types/components/FixedSideContainer.d.ts +9 -9
  65. package/types/components/Footer.d.ts +10 -0
  66. package/types/components/HandButton.d.ts +10 -10
  67. package/types/components/HelpButton.d.ts +7 -7
  68. package/types/components/HelpDialog.d.ts +4 -4
  69. package/types/components/HelpIcon.d.ts +8 -0
  70. package/types/components/HintViewer.d.ts +11 -11
  71. package/types/components/IconPicker.d.ts +13 -13
  72. package/types/components/ImageExportDialog.d.ts +18 -18
  73. package/types/components/InitializeApp.d.ts +10 -10
  74. package/types/components/Island.d.ts +10 -10
  75. package/types/components/JSONExportDialog.d.ts +15 -15
  76. package/types/components/LayerUI.d.ts +37 -37
  77. package/types/components/LibraryButton.d.ts +8 -8
  78. package/types/components/LibraryMenu.d.ts +25 -25
  79. package/types/components/LibraryMenuBrowseButton.d.ts +7 -7
  80. package/types/components/LibraryMenuHeaderContent.d.ts +35 -35
  81. package/types/components/LibraryMenuItems.d.ts +15 -15
  82. package/types/components/LibraryUnit.d.ts +11 -11
  83. package/types/components/LoadingMessage.d.ts +6 -6
  84. package/types/components/LockButton.d.ts +10 -10
  85. package/types/components/MenuItem.d.ts +11 -0
  86. package/types/components/MenuUtils.d.ts +2 -0
  87. package/types/components/MobileMenu.d.ts +26 -26
  88. package/types/components/Modal.d.ts +13 -13
  89. package/types/components/PasteChartDialog.d.ts +9 -9
  90. package/types/components/PenModeButton.d.ts +12 -12
  91. package/types/components/Popover.d.ts +15 -15
  92. package/types/components/ProjectName.d.ts +10 -10
  93. package/types/components/PublishLibrary.d.ts +16 -16
  94. package/types/components/Section.d.ts +6 -6
  95. package/types/components/Sidebar/Sidebar.d.ts +73 -73
  96. package/types/components/Sidebar/SidebarHeader.d.ts +20 -20
  97. package/types/components/Sidebar/common.d.ts +16 -16
  98. package/types/components/SidebarLockButton.d.ts +8 -0
  99. package/types/components/SingleLibraryItem.d.ts +10 -10
  100. package/types/components/Spinner.d.ts +6 -6
  101. package/types/components/Stack.d.ts +15 -15
  102. package/types/components/Stats.d.ts +11 -11
  103. package/types/components/Toast.d.ts +7 -7
  104. package/types/components/ToolButton.d.ts +46 -46
  105. package/types/components/Tooltip.d.ts +17 -17
  106. package/types/components/TopErrorBoundary.d.ts +15 -0
  107. package/types/components/UserList.d.ts +8 -8
  108. package/types/components/WelcomeScreen.d.ts +8 -0
  109. package/types/components/WelcomeScreenDecor.d.ts +6 -0
  110. package/types/components/context/tunnels.d.ts +16 -16
  111. package/types/components/dropdownMenu/DropdownMenu.d.ts +66 -66
  112. package/types/components/dropdownMenu/DropdownMenuContent.d.ts +15 -15
  113. package/types/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -11
  114. package/types/components/dropdownMenu/DropdownMenuItem.d.ts +12 -12
  115. package/types/components/dropdownMenu/DropdownMenuItemContent.d.ts +6 -6
  116. package/types/components/dropdownMenu/DropdownMenuItemCustom.d.ts +6 -6
  117. package/types/components/dropdownMenu/DropdownMenuItemLink.d.ts +13 -13
  118. package/types/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -5
  119. package/types/components/dropdownMenu/DropdownMenuTrigger.d.ts +9 -9
  120. package/types/components/dropdownMenu/common.d.ts +6 -6
  121. package/types/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -3
  122. package/types/components/footer/Footer.d.ts +12 -12
  123. package/types/components/footer/FooterCenter.d.ts +8 -8
  124. package/types/components/hoc/withInternalFallback.d.ts +4 -4
  125. package/types/components/hoc/withUpstreamOverride.d.ts +10 -10
  126. package/types/components/icons.d.ts +143 -142
  127. package/types/components/live-collaboration/LiveCollaborationTrigger.d.ts +10 -10
  128. package/types/components/main-menu/DefaultItems.d.ts +44 -44
  129. package/types/components/main-menu/MainMenu.d.ts +60 -60
  130. package/types/components/mainMenu/DefaultItems.d.ts +44 -0
  131. package/types/components/mainMenu/MainMenu.d.ts +63 -0
  132. package/types/components/welcome-screen/WelcomeScreen.Center.d.ts +58 -58
  133. package/types/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -19
  134. package/types/components/welcome-screen/WelcomeScreen.d.ts +85 -85
  135. package/types/constants.d.ts +192 -170
  136. package/types/data/blob.d.ts +48 -48
  137. package/types/data/encode.d.ts +53 -53
  138. package/types/data/encryption.d.ts +9 -9
  139. package/types/data/filesystem.d.ts +19 -18
  140. package/types/data/image.d.ts +15 -15
  141. package/types/data/index.d.ts +13 -13
  142. package/types/data/json.d.ts +16 -16
  143. package/types/data/library.d.ts +96 -96
  144. package/types/data/resave.d.ts +5 -5
  145. package/types/data/restore.d.ts +21 -21
  146. package/types/data/types.d.ts +47 -47
  147. package/types/distribute.d.ts +6 -6
  148. package/types/element/Hyperlink.d.ts +156 -155
  149. package/types/element/binding.d.ts +33 -33
  150. package/types/element/bounds.d.ts +28 -28
  151. package/types/element/collision.d.ts +21 -21
  152. package/types/element/dragElements.d.ts +5 -5
  153. package/types/element/image.d.ts +32 -22
  154. package/types/element/index.d.ts +20 -20
  155. package/types/element/linearElementEditor.d.ts +271 -273
  156. package/types/element/mutateElement.d.ts +12 -12
  157. package/types/element/newElement.d.ts +85 -65
  158. package/types/element/resizeElements.d.ts +8 -8
  159. package/types/element/resizeTest.d.ts +13 -13
  160. package/types/element/showSelectedShapeActions.d.ts +3 -3
  161. package/types/element/sizeHelpers.d.ts +21 -21
  162. package/types/element/sortElements.d.ts +2 -2
  163. package/types/element/textElement.d.ts +80 -73
  164. package/types/element/textWysiwyg.d.ts +21 -21
  165. package/types/element/transformHandles.d.ts +28 -28
  166. package/types/element/typeChecks.d.ts +27 -27
  167. package/types/element/types.d.ts +150 -149
  168. package/types/errors.d.ts +8 -8
  169. package/types/excalidraw-app/CustomStats.d.ts +9 -0
  170. package/types/excalidraw-app/app_constants.d.ts +32 -0
  171. package/types/excalidraw-app/collab/Collab.d.ts +163 -0
  172. package/types/excalidraw-app/collab/Portal.d.ts +28 -0
  173. package/types/excalidraw-app/collab/RoomDialog.d.ts +13 -0
  174. package/types/excalidraw-app/collab/reconciliation.d.ts +10 -0
  175. package/types/excalidraw-app/components/ExportToExcalidrawPlus.d.ts +9 -0
  176. package/types/excalidraw-app/components/LanguageList.d.ts +4 -0
  177. package/types/excalidraw-app/components/icons.d.ts +1 -0
  178. package/types/excalidraw-app/data/FileManager.d.ts +66 -0
  179. package/types/excalidraw-app/data/LocalData.d.ts +32 -0
  180. package/types/excalidraw-app/data/Locker.d.ts +8 -0
  181. package/types/excalidraw-app/data/firebase.d.ts +25 -0
  182. package/types/excalidraw-app/data/index.d.ts +190 -0
  183. package/types/excalidraw-app/data/localStorage.d.ts +116 -0
  184. package/types/excalidraw-app/data/tabSync.d.ts +9 -0
  185. package/types/excalidraw-app/index.d.ts +26 -0
  186. package/types/ga.d.ts +63 -63
  187. package/types/gadirections.d.ts +8 -8
  188. package/types/galines.d.ts +22 -22
  189. package/types/gapoints.d.ts +7 -7
  190. package/types/gatransforms.d.ts +10 -10
  191. package/types/gesture.d.ts +6 -6
  192. package/types/groups.d.ts +27 -27
  193. package/types/history.d.ts +52 -52
  194. package/types/hooks/useCallbackRefState.d.ts +1 -1
  195. package/types/hooks/useOutsideClick.d.ts +2 -2
  196. package/types/i18n.d.ts +21 -21
  197. package/types/jotai.d.ts +122 -122
  198. package/types/keys.d.ts +77 -77
  199. package/types/math.d.ts +29 -29
  200. package/types/packages/common.webpack.dev.config.d.ts +72 -72
  201. package/types/packages/common.webpack.prod.config.d.ts +84 -84
  202. package/types/packages/excalidraw/dist/excalidraw.development.d.ts +4 -4
  203. package/types/packages/excalidraw/dist/excalidraw.production.min.d.ts +1 -1
  204. package/types/packages/excalidraw/entry.d.ts +1 -1
  205. package/types/packages/excalidraw/env.d.ts +1 -1
  206. package/types/packages/excalidraw/example/App.d.ts +14 -14
  207. package/types/packages/excalidraw/example/CustomFooter.d.ts +5 -5
  208. package/types/packages/excalidraw/example/MobileFooter.d.ts +5 -5
  209. package/types/packages/excalidraw/example/index.d.ts +1 -1
  210. package/types/packages/excalidraw/example/initialData.d.ts +172 -172
  211. package/types/packages/excalidraw/example/sidebar/ExampleSidebar.d.ts +5 -5
  212. package/types/packages/excalidraw/example/sidebar/Sidebar.d.ts +5 -0
  213. package/types/packages/excalidraw/index.d.ts +35 -35
  214. package/types/packages/excalidraw/main.d.ts +2 -2
  215. package/types/packages/excalidraw/publicPath.d.ts +1 -1
  216. package/types/packages/excalidraw/webpack.dev-server.config.d.ts +19 -19
  217. package/types/packages/excalidraw/webpack.dev.config.d.ts +69 -69
  218. package/types/packages/excalidraw/webpack.prod.config.d.ts +78 -78
  219. package/types/packages/utils.d.ts +42 -42
  220. package/types/points.d.ts +7 -7
  221. package/types/polyfill.d.ts +2 -2
  222. package/types/random.d.ts +4 -4
  223. package/types/renderer/easingFunctions.d.ts +6 -6
  224. package/types/renderer/renderElement.d.ts +36 -35
  225. package/types/renderer/renderScene.d.ts +41 -41
  226. package/types/renderer/roundRect.d.ts +11 -11
  227. package/types/scene/Fonts.d.ts +21 -21
  228. package/types/scene/Scene.d.ts +40 -40
  229. package/types/scene/comparisons.d.ts +10 -10
  230. package/types/scene/export.d.ts +23 -20
  231. package/types/scene/index.d.ts +5 -5
  232. package/types/scene/scroll.d.ts +17 -17
  233. package/types/scene/scrollbars.d.ts +16 -16
  234. package/types/scene/selection.d.ts +11 -11
  235. package/types/scene/types.d.ts +59 -59
  236. package/types/scene/zoom.d.ts +13 -13
  237. package/types/shapes.d.ts +62 -62
  238. package/types/types.d.ts +443 -442
  239. package/types/utility-types.d.ts +22 -22
  240. package/types/utils.d.ts +162 -162
  241. package/types/zindex.d.ts +6 -6
  242. package/dist/.DS_Store +0 -0
package/types/types.d.ts CHANGED
@@ -1,442 +1,443 @@
1
- import { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, ExcalidrawTextElement, FileId, ExcalidrawImageElement, Theme, StrokeRoundness } from "./element/types";
2
- import { SHAPES } from "./shapes";
3
- import { Point as RoughPoint } from "roughjs/bin/geometry";
4
- import { LinearElementEditor } from "./element/linearElementEditor";
5
- import { SuggestedBinding } from "./element/binding";
6
- import { ImportedDataState } from "./data/types";
7
- import type App from "./components/App";
8
- import type { ResolvablePromise, throttleRAF } from "./utils";
9
- import { Spreadsheet } from "./charts";
10
- import { Language } from "./i18n";
11
- import { ClipboardData } from "./clipboard";
12
- import { isOverScrollBars } from "./scene";
13
- import { MaybeTransformHandleType } from "./element/transformHandles";
14
- import Library from "./data/library";
15
- import type { FileSystemHandle } from "./data/filesystem";
16
- import type { ALLOWED_IMAGE_MIME_TYPES, MIME_TYPES } from "./constants";
17
- import { ContextMenuItems } from "./components/ContextMenu";
18
- import { Merge, ForwardRef } from "./utility-types";
19
- import React from "react";
20
- export declare type Point = Readonly<RoughPoint>;
21
- export declare type Collaborator = {
22
- pointer?: {
23
- x: number;
24
- y: number;
25
- };
26
- button?: "up" | "down";
27
- selectedElementIds?: AppState["selectedElementIds"];
28
- username?: string | null;
29
- userState?: UserIdleState;
30
- color?: {
31
- background: string;
32
- stroke: string;
33
- };
34
- avatarUrl?: string;
35
- id?: string;
36
- };
37
- export declare type DataURL = string & {
38
- _brand: "DataURL";
39
- };
40
- export declare type BinaryFileData = {
41
- mimeType: typeof ALLOWED_IMAGE_MIME_TYPES[number] | typeof MIME_TYPES.binary;
42
- id: FileId;
43
- dataURL: DataURL;
44
- /**
45
- * Epoch timestamp in milliseconds
46
- */
47
- created: number;
48
- /**
49
- * Indicates when the file was last retrieved from storage to be loaded
50
- * onto the scene. We use this flag to determine whether to delete unused
51
- * files from storage.
52
- *
53
- * Epoch timestamp in milliseconds.
54
- */
55
- lastRetrieved?: number;
56
- };
57
- export declare type BinaryFileMetadata = Omit<BinaryFileData, "dataURL">;
58
- export declare type BinaryFiles = Record<ExcalidrawElement["id"], BinaryFileData>;
59
- export declare type LastActiveTool = {
60
- type: typeof SHAPES[number]["value"] | "eraser" | "hand";
61
- customType: null;
62
- } | {
63
- type: "custom";
64
- customType: string;
65
- } | null;
66
- export declare type AppState = {
67
- contextMenu: {
68
- items: ContextMenuItems;
69
- top: number;
70
- left: number;
71
- } | null;
72
- showWelcomeScreen: boolean;
73
- isLoading: boolean;
74
- errorMessage: React.ReactNode;
75
- draggingElement: NonDeletedExcalidrawElement | null;
76
- resizingElement: NonDeletedExcalidrawElement | null;
77
- multiElement: NonDeleted<ExcalidrawLinearElement> | null;
78
- selectionElement: NonDeletedExcalidrawElement | null;
79
- isBindingEnabled: boolean;
80
- startBoundElement: NonDeleted<ExcalidrawBindableElement> | null;
81
- suggestedBindings: SuggestedBinding[];
82
- editingElement: NonDeletedExcalidrawElement | null;
83
- editingLinearElement: LinearElementEditor | null;
84
- activeTool: {
85
- /**
86
- * indicates a previous tool we should revert back to if we deselect the
87
- * currently active tool. At the moment applies to `eraser` and `hand` tool.
88
- */
89
- lastActiveTool: LastActiveTool;
90
- locked: boolean;
91
- } & ({
92
- type: typeof SHAPES[number]["value"] | "eraser" | "hand";
93
- customType: null;
94
- } | {
95
- type: "custom";
96
- customType: string;
97
- });
98
- penMode: boolean;
99
- penDetected: boolean;
100
- exportBackground: boolean;
101
- exportEmbedScene: boolean;
102
- exportWithDarkMode: boolean;
103
- exportScale: number;
104
- currentItemStrokeColor: string;
105
- currentItemBackgroundColor: string;
106
- currentItemFillStyle: ExcalidrawElement["fillStyle"];
107
- currentItemStrokeWidth: number;
108
- currentItemStrokeStyle: ExcalidrawElement["strokeStyle"];
109
- currentItemRoughness: number;
110
- currentItemOpacity: number;
111
- currentItemFontFamily: FontFamilyValues;
112
- currentItemFontSize: number;
113
- currentItemTextAlign: TextAlign;
114
- currentItemStartArrowhead: Arrowhead | null;
115
- currentItemEndArrowhead: Arrowhead | null;
116
- currentItemRoundness: StrokeRoundness;
117
- viewBackgroundColor: string;
118
- scrollX: number;
119
- scrollY: number;
120
- cursorButton: "up" | "down";
121
- scrolledOutside: boolean;
122
- name: string;
123
- isResizing: boolean;
124
- isRotating: boolean;
125
- zoom: Zoom;
126
- openMenu: "canvas" | "shape" | null;
127
- openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
128
- openSidebar: "library" | "customSidebar" | null;
129
- openDialog: "imageExport" | "help" | "jsonExport" | null;
130
- isSidebarDocked: boolean;
131
- lastPointerDownWith: PointerType;
132
- selectedElementIds: {
133
- [id: string]: boolean;
134
- };
135
- previousSelectedElementIds: {
136
- [id: string]: boolean;
137
- };
138
- shouldCacheIgnoreZoom: boolean;
139
- toast: {
140
- message: string;
141
- closable?: boolean;
142
- duration?: number;
143
- } | null;
144
- zenModeEnabled: boolean;
145
- theme: Theme;
146
- gridSize: number | null;
147
- previousGridSize: number | null;
148
- viewModeEnabled: boolean;
149
- /** top-most selected groups (i.e. does not include nested groups) */
150
- selectedGroupIds: {
151
- [groupId: string]: boolean;
152
- };
153
- /** group being edited when you drill down to its constituent element
154
- (e.g. when you double-click on a group's element) */
155
- editingGroupId: GroupId | null;
156
- width: number;
157
- height: number;
158
- offsetTop: number;
159
- offsetLeft: number;
160
- fileHandle: FileSystemHandle | null;
161
- collaborators: Map<string, Collaborator>;
162
- showStats: boolean;
163
- currentChartType: ChartType;
164
- pasteDialog: {
165
- shown: false;
166
- data: null;
167
- } | {
168
- shown: true;
169
- data: Spreadsheet;
170
- };
171
- /** imageElement waiting to be placed on canvas */
172
- pendingImageElementId: ExcalidrawImageElement["id"] | null;
173
- showHyperlinkPopup: false | "info" | "editor";
174
- linkOpacity: number;
175
- trayModeEnabled: boolean;
176
- colorPalette: {
177
- canvasBackground?: string[];
178
- elementBackground?: string[];
179
- elementStroke?: string[];
180
- };
181
- allowWheelZoom?: boolean;
182
- allowPinchZoom?: boolean;
183
- pinnedScripts?: string[];
184
- customPens?: any[];
185
- currentStrokeOptions?: any;
186
- resetCustomPen?: any;
187
- gridColor: string;
188
- dynamicStyle: string;
189
- selectedLinearElement: LinearElementEditor | null;
190
- };
191
- export declare type NormalizedZoomValue = number & {
192
- _brand: "normalizedZoom";
193
- };
194
- export declare type Zoom = Readonly<{
195
- value: NormalizedZoomValue;
196
- }>;
197
- export declare type PointerCoords = Readonly<{
198
- x: number;
199
- y: number;
200
- }>;
201
- export declare type Gesture = {
202
- pointers: Map<number, PointerCoords>;
203
- lastCenter: {
204
- x: number;
205
- y: number;
206
- } | null;
207
- initialDistance: number | null;
208
- initialScale: number | null;
209
- };
210
- export declare class GestureEvent extends UIEvent {
211
- readonly rotation: number;
212
- readonly scale: number;
213
- }
214
- /** @deprecated legacy: do not use outside of migration paths */
215
- export declare type LibraryItem_v1 = readonly NonDeleted<ExcalidrawElement>[];
216
- /** @deprecated legacy: do not use outside of migration paths */
217
- declare type LibraryItems_v1 = readonly LibraryItem_v1[];
218
- /** v2 library item */
219
- export declare type LibraryItem = {
220
- id: string;
221
- status: "published" | "unpublished";
222
- elements: readonly NonDeleted<ExcalidrawElement>[];
223
- /** timestamp in epoch (ms) */
224
- created: number;
225
- name?: string;
226
- error?: string;
227
- };
228
- export declare type LibraryItems = readonly LibraryItem[];
229
- export declare type LibraryItems_anyVersion = LibraryItems | LibraryItems_v1;
230
- export declare type LibraryItemsSource = ((currentLibraryItems: LibraryItems) => Blob | LibraryItems_anyVersion | Promise<LibraryItems_anyVersion | Blob>) | Blob | LibraryItems_anyVersion | Promise<LibraryItems_anyVersion | Blob>;
231
- export declare type ExcalidrawAPIRefValue = ExcalidrawImperativeAPI | {
232
- readyPromise?: ResolvablePromise<ExcalidrawImperativeAPI>;
233
- ready?: false;
234
- };
235
- export declare type ExcalidrawInitialDataState = Merge<ImportedDataState, {
236
- libraryItems?: Required<ImportedDataState>["libraryItems"] | Promise<Required<ImportedDataState>["libraryItems"]>;
237
- }>;
238
- export interface ExcalidrawProps {
239
- onChange?: (elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
240
- initialData?: ExcalidrawInitialDataState | null | Promise<ExcalidrawInitialDataState | null>;
241
- excalidrawRef?: ForwardRef<ExcalidrawAPIRefValue>;
242
- isCollaborating?: boolean;
243
- onPointerUpdate?: (payload: {
244
- pointer: {
245
- x: number;
246
- y: number;
247
- };
248
- button: "down" | "up";
249
- pointersMap: Gesture["pointers"];
250
- }) => void;
251
- onPaste?: (data: ClipboardData, event: ClipboardEvent | null) => Promise<boolean> | boolean;
252
- onDrop?: (event: React.DragEvent<HTMLDivElement>) => Promise<boolean> | boolean;
253
- renderTopRightUI?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
254
- langCode?: Language["code"];
255
- viewModeEnabled?: boolean;
256
- zenModeEnabled?: boolean;
257
- gridModeEnabled?: boolean;
258
- libraryReturnUrl?: string;
259
- initState?: AppState;
260
- theme?: Theme;
261
- name?: string;
262
- renderCustomStats?: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState) => JSX.Element;
263
- UIOptions?: Partial<UIOptions>;
264
- detectScroll?: boolean;
265
- handleKeyboardGlobally?: boolean;
266
- onLibraryChange?: (libraryItems: LibraryItems) => void | Promise<any>;
267
- autoFocus?: boolean;
268
- onBeforeTextEdit?: (textElement: ExcalidrawTextElement) => string;
269
- onBeforeTextSubmit?: (textElement: ExcalidrawTextElement, textToSubmit: string, originalText: string, isDeleted: boolean) => [string, string, string];
270
- generateIdForFile?: (file: File) => string | Promise<string>;
271
- onThemeChange?: (newTheme: string) => void;
272
- onViewModeChange?: (isViewModeEnabled: boolean) => void;
273
- onLinkOpen?: (element: NonDeletedExcalidrawElement, event: CustomEvent<{
274
- nativeEvent: MouseEvent | React.PointerEvent<HTMLCanvasElement>;
275
- }>) => void;
276
- onLinkHover?: (element: NonDeletedExcalidrawElement, event: React.PointerEvent<HTMLCanvasElement>) => void;
277
- onPointerDown?: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState) => void;
278
- onScrollChange?: (scrollX: number, scrollY: number) => void;
279
- /**
280
- * Render function that renders custom <Sidebar /> component.
281
- */
282
- renderSidebar?: () => JSX.Element | null;
283
- children?: React.ReactNode;
284
- }
285
- export declare type SceneData = {
286
- elements?: ImportedDataState["elements"];
287
- appState?: ImportedDataState["appState"];
288
- collaborators?: Map<string, Collaborator>;
289
- commitToHistory?: boolean;
290
- };
291
- export declare enum UserIdleState {
292
- ACTIVE = "active",
293
- AWAY = "away",
294
- IDLE = "idle"
295
- }
296
- export declare type ExportOpts = {
297
- saveFileToDisk?: boolean;
298
- onExportToBackend?: (exportedElements: readonly NonDeletedExcalidrawElement[], appState: AppState, files: BinaryFiles, canvas: HTMLCanvasElement | null) => void;
299
- renderCustomUI?: (exportedElements: readonly NonDeletedExcalidrawElement[], appState: AppState, files: BinaryFiles, canvas: HTMLCanvasElement | null) => JSX.Element;
300
- };
301
- declare type CanvasActions = Partial<{
302
- changeViewBackgroundColor: boolean;
303
- clearCanvas: boolean;
304
- export: false | ExportOpts;
305
- loadScene: boolean;
306
- saveToActiveFile: boolean;
307
- toggleTheme: boolean | null;
308
- saveAsImage: boolean;
309
- }>;
310
- declare type UIOptions = Partial<{
311
- dockedSidebarBreakpoint: number;
312
- canvasActions: CanvasActions;
313
- /** @deprecated does nothing. Will be removed in 0.15 */
314
- welcomeScreen?: boolean;
315
- }>;
316
- export declare type AppProps = Merge<ExcalidrawProps, {
317
- UIOptions: Merge<UIOptions, {
318
- canvasActions: Required<CanvasActions> & {
319
- export: ExportOpts;
320
- };
321
- }>;
322
- detectScroll: boolean;
323
- handleKeyboardGlobally: boolean;
324
- isCollaborating: boolean;
325
- children?: React.ReactNode;
326
- }>;
327
- /** A subset of App class properties that we need to use elsewhere
328
- * in the app, eg Manager. Factored out into a separate type to keep DRY. */
329
- export declare type AppClassProperties = {
330
- props: AppProps;
331
- canvas: HTMLCanvasElement | null;
332
- focusContainer(): void;
333
- library: Library;
334
- imageCache: Map<FileId, {
335
- image: HTMLImageElement | Promise<HTMLImageElement>;
336
- mimeType: typeof ALLOWED_IMAGE_MIME_TYPES[number];
337
- }>;
338
- files: BinaryFiles;
339
- device: App["device"];
340
- scene: App["scene"];
341
- pasteFromClipboard: App["pasteFromClipboard"];
342
- };
343
- export declare type PointerDownState = Readonly<{
344
- origin: Readonly<{
345
- x: number;
346
- y: number;
347
- }>;
348
- originInGrid: Readonly<{
349
- x: number;
350
- y: number;
351
- }>;
352
- scrollbars: ReturnType<typeof isOverScrollBars>;
353
- lastCoords: {
354
- x: number;
355
- y: number;
356
- };
357
- originalElements: Map<string, NonDeleted<ExcalidrawElement>>;
358
- resize: {
359
- handleType: MaybeTransformHandleType;
360
- isResizing: boolean;
361
- offset: {
362
- x: number;
363
- y: number;
364
- };
365
- arrowDirection: "origin" | "end";
366
- center: {
367
- x: number;
368
- y: number;
369
- };
370
- };
371
- hit: {
372
- element: NonDeleted<ExcalidrawElement> | null;
373
- allHitElements: NonDeleted<ExcalidrawElement>[];
374
- wasAddedToSelection: boolean;
375
- hasBeenDuplicated: boolean;
376
- hasHitCommonBoundingBoxOfSelectedElements: boolean;
377
- };
378
- withCmdOrCtrl: boolean;
379
- drag: {
380
- hasOccurred: boolean;
381
- offset: {
382
- x: number;
383
- y: number;
384
- } | null;
385
- };
386
- eventListeners: {
387
- onMove: null | ReturnType<typeof throttleRAF>;
388
- onUp: null | ((event: PointerEvent) => void);
389
- onKeyDown: null | ((event: KeyboardEvent) => void);
390
- onKeyUp: null | ((event: KeyboardEvent) => void);
391
- };
392
- boxSelection: {
393
- hasOccurred: boolean;
394
- };
395
- elementIdsToErase: {
396
- [key: ExcalidrawElement["id"]]: {
397
- opacity: ExcalidrawElement["opacity"];
398
- erase: boolean;
399
- };
400
- };
401
- }>;
402
- export declare type ExcalidrawImperativeAPI = {
403
- updateScene: InstanceType<typeof App>["updateScene"];
404
- updateLibrary: InstanceType<typeof Library>["updateLibrary"];
405
- resetScene: InstanceType<typeof App>["resetScene"];
406
- getSceneElementsIncludingDeleted: InstanceType<typeof App>["getSceneElementsIncludingDeleted"];
407
- history: {
408
- clear: InstanceType<typeof App>["resetHistory"];
409
- };
410
- scrollToContent: InstanceType<typeof App>["scrollToContent"];
411
- zoomToFit: InstanceType<typeof App>["zoomToFit"];
412
- startLineEditor: InstanceType<typeof App>["startLineEditor"];
413
- getSceneElements: InstanceType<typeof App>["getSceneElements"];
414
- getAppState: () => InstanceType<typeof App>["state"];
415
- getFiles: () => InstanceType<typeof App>["files"];
416
- refresh: InstanceType<typeof App>["refresh"];
417
- setToast: InstanceType<typeof App>["setToast"];
418
- addFiles: (data: BinaryFileData[]) => void;
419
- updateContainerSize: InstanceType<typeof App>["updateContainerSize"];
420
- readyPromise: ResolvablePromise<ExcalidrawImperativeAPI>;
421
- ready: true;
422
- id: string;
423
- setLocalFont: (showOnPanel: boolean) => void;
424
- selectElements: (elements: readonly ExcalidrawElement[]) => void;
425
- sendBackward: (elements: readonly ExcalidrawElement[]) => void;
426
- bringForward: (elements: readonly ExcalidrawElement[]) => void;
427
- sendToBack: (elements: readonly ExcalidrawElement[]) => void;
428
- bringToFront: (elements: readonly ExcalidrawElement[]) => void;
429
- restore: InstanceType<typeof App>["restore"];
430
- setMobileModeAllowed: (allow: boolean) => void;
431
- setActiveTool: InstanceType<typeof App>["setActiveTool"];
432
- setCursor: InstanceType<typeof App>["setCursor"];
433
- resetCursor: InstanceType<typeof App>["resetCursor"];
434
- toggleMenu: InstanceType<typeof App>["toggleMenu"];
435
- };
436
- export declare type Device = Readonly<{
437
- isSmScreen: boolean;
438
- isMobile: boolean;
439
- isTouchScreen: boolean;
440
- canDeviceFitSidebar: boolean;
441
- }>;
442
- export {};
1
+ import { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, ExcalidrawTextElement, FileId, ExcalidrawImageElement, Theme, StrokeRoundness } from "./element/types";
2
+ import { SHAPES } from "./shapes";
3
+ import { Point as RoughPoint } from "roughjs/bin/geometry";
4
+ import { LinearElementEditor } from "./element/linearElementEditor";
5
+ import { SuggestedBinding } from "./element/binding";
6
+ import { ImportedDataState } from "./data/types";
7
+ import type App from "./components/App";
8
+ import type { ResolvablePromise, throttleRAF } from "./utils";
9
+ import { Spreadsheet } from "./charts";
10
+ import { Language } from "./i18n";
11
+ import { ClipboardData } from "./clipboard";
12
+ import { isOverScrollBars } from "./scene";
13
+ import { MaybeTransformHandleType } from "./element/transformHandles";
14
+ import Library from "./data/library";
15
+ import type { FileSystemHandle } from "./data/filesystem";
16
+ import type { IMAGE_MIME_TYPES, MIME_TYPES } from "./constants";
17
+ import { ContextMenuItems } from "./components/ContextMenu";
18
+ import { Merge, ForwardRef, ValueOf } from "./utility-types";
19
+ import React from "react";
20
+ export declare type Point = Readonly<RoughPoint>;
21
+ export declare type Collaborator = {
22
+ pointer?: {
23
+ x: number;
24
+ y: number;
25
+ };
26
+ button?: "up" | "down";
27
+ selectedElementIds?: AppState["selectedElementIds"];
28
+ username?: string | null;
29
+ userState?: UserIdleState;
30
+ color?: {
31
+ background: string;
32
+ stroke: string;
33
+ };
34
+ avatarUrl?: string;
35
+ id?: string;
36
+ };
37
+ export declare type DataURL = string & {
38
+ _brand: "DataURL";
39
+ };
40
+ export declare type BinaryFileData = {
41
+ mimeType: ValueOf<typeof IMAGE_MIME_TYPES> | typeof MIME_TYPES.binary;
42
+ id: FileId;
43
+ dataURL: DataURL;
44
+ /**
45
+ * Epoch timestamp in milliseconds
46
+ */
47
+ created: number;
48
+ /**
49
+ * Indicates when the file was last retrieved from storage to be loaded
50
+ * onto the scene. We use this flag to determine whether to delete unused
51
+ * files from storage.
52
+ *
53
+ * Epoch timestamp in milliseconds.
54
+ */
55
+ lastRetrieved?: number;
56
+ };
57
+ export declare type BinaryFileMetadata = Omit<BinaryFileData, "dataURL">;
58
+ export declare type BinaryFiles = Record<ExcalidrawElement["id"], BinaryFileData>;
59
+ export declare type LastActiveTool = {
60
+ type: typeof SHAPES[number]["value"] | "eraser" | "hand";
61
+ customType: null;
62
+ } | {
63
+ type: "custom";
64
+ customType: string;
65
+ } | null;
66
+ export declare type AppState = {
67
+ contextMenu: {
68
+ items: ContextMenuItems;
69
+ top: number;
70
+ left: number;
71
+ } | null;
72
+ showWelcomeScreen: boolean;
73
+ isLoading: boolean;
74
+ errorMessage: React.ReactNode;
75
+ draggingElement: NonDeletedExcalidrawElement | null;
76
+ resizingElement: NonDeletedExcalidrawElement | null;
77
+ multiElement: NonDeleted<ExcalidrawLinearElement> | null;
78
+ selectionElement: NonDeletedExcalidrawElement | null;
79
+ isBindingEnabled: boolean;
80
+ startBoundElement: NonDeleted<ExcalidrawBindableElement> | null;
81
+ suggestedBindings: SuggestedBinding[];
82
+ editingElement: NonDeletedExcalidrawElement | null;
83
+ editingLinearElement: LinearElementEditor | null;
84
+ activeTool: {
85
+ /**
86
+ * indicates a previous tool we should revert back to if we deselect the
87
+ * currently active tool. At the moment applies to `eraser` and `hand` tool.
88
+ */
89
+ lastActiveTool: LastActiveTool;
90
+ locked: boolean;
91
+ } & ({
92
+ type: typeof SHAPES[number]["value"] | "eraser" | "hand";
93
+ customType: null;
94
+ } | {
95
+ type: "custom";
96
+ customType: string;
97
+ });
98
+ penMode: boolean;
99
+ penDetected: boolean;
100
+ exportBackground: boolean;
101
+ exportEmbedScene: boolean;
102
+ exportWithDarkMode: boolean;
103
+ exportScale: number;
104
+ currentItemStrokeColor: string;
105
+ currentItemBackgroundColor: string;
106
+ currentItemFillStyle: ExcalidrawElement["fillStyle"];
107
+ currentItemStrokeWidth: number;
108
+ currentItemStrokeStyle: ExcalidrawElement["strokeStyle"];
109
+ currentItemRoughness: number;
110
+ currentItemOpacity: number;
111
+ currentItemFontFamily: FontFamilyValues;
112
+ currentItemFontSize: number;
113
+ currentItemTextAlign: TextAlign;
114
+ currentItemStartArrowhead: Arrowhead | null;
115
+ currentItemEndArrowhead: Arrowhead | null;
116
+ currentItemRoundness: StrokeRoundness;
117
+ viewBackgroundColor: string;
118
+ scrollX: number;
119
+ scrollY: number;
120
+ cursorButton: "up" | "down";
121
+ scrolledOutside: boolean;
122
+ name: string;
123
+ isResizing: boolean;
124
+ isRotating: boolean;
125
+ zoom: Zoom;
126
+ openMenu: "canvas" | "shape" | null;
127
+ openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
128
+ openSidebar: "library" | "customSidebar" | null;
129
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
130
+ isSidebarDocked: boolean;
131
+ lastPointerDownWith: PointerType;
132
+ selectedElementIds: {
133
+ [id: string]: boolean;
134
+ };
135
+ previousSelectedElementIds: {
136
+ [id: string]: boolean;
137
+ };
138
+ shouldCacheIgnoreZoom: boolean;
139
+ toast: {
140
+ message: string;
141
+ closable?: boolean;
142
+ duration?: number;
143
+ } | null;
144
+ zenModeEnabled: boolean;
145
+ theme: Theme;
146
+ gridSize: number | null;
147
+ previousGridSize: number | null;
148
+ viewModeEnabled: boolean;
149
+ /** top-most selected groups (i.e. does not include nested groups) */
150
+ selectedGroupIds: {
151
+ [groupId: string]: boolean;
152
+ };
153
+ /** group being edited when you drill down to its constituent element
154
+ (e.g. when you double-click on a group's element) */
155
+ editingGroupId: GroupId | null;
156
+ width: number;
157
+ height: number;
158
+ offsetTop: number;
159
+ offsetLeft: number;
160
+ fileHandle: FileSystemHandle | null;
161
+ collaborators: Map<string, Collaborator>;
162
+ showStats: boolean;
163
+ currentChartType: ChartType;
164
+ pasteDialog: {
165
+ shown: false;
166
+ data: null;
167
+ } | {
168
+ shown: true;
169
+ data: Spreadsheet;
170
+ };
171
+ /** imageElement waiting to be placed on canvas */
172
+ pendingImageElementId: ExcalidrawImageElement["id"] | null;
173
+ showHyperlinkPopup: false | "info" | "editor";
174
+ linkOpacity: number;
175
+ trayModeEnabled: boolean;
176
+ colorPalette: {
177
+ canvasBackground?: string[];
178
+ elementBackground?: string[];
179
+ elementStroke?: string[];
180
+ };
181
+ allowWheelZoom?: boolean;
182
+ allowPinchZoom?: boolean;
183
+ pinnedScripts?: string[];
184
+ customPens?: any[];
185
+ currentStrokeOptions?: any;
186
+ resetCustomPen?: any;
187
+ gridColor: string;
188
+ dynamicStyle: string;
189
+ invertBindingBehaviour: boolean;
190
+ selectedLinearElement: LinearElementEditor | null;
191
+ };
192
+ export declare type NormalizedZoomValue = number & {
193
+ _brand: "normalizedZoom";
194
+ };
195
+ export declare type Zoom = Readonly<{
196
+ value: NormalizedZoomValue;
197
+ }>;
198
+ export declare type PointerCoords = Readonly<{
199
+ x: number;
200
+ y: number;
201
+ }>;
202
+ export declare type Gesture = {
203
+ pointers: Map<number, PointerCoords>;
204
+ lastCenter: {
205
+ x: number;
206
+ y: number;
207
+ } | null;
208
+ initialDistance: number | null;
209
+ initialScale: number | null;
210
+ };
211
+ export declare class GestureEvent extends UIEvent {
212
+ readonly rotation: number;
213
+ readonly scale: number;
214
+ }
215
+ /** @deprecated legacy: do not use outside of migration paths */
216
+ export declare type LibraryItem_v1 = readonly NonDeleted<ExcalidrawElement>[];
217
+ /** @deprecated legacy: do not use outside of migration paths */
218
+ declare type LibraryItems_v1 = readonly LibraryItem_v1[];
219
+ /** v2 library item */
220
+ export declare type LibraryItem = {
221
+ id: string;
222
+ status: "published" | "unpublished";
223
+ elements: readonly NonDeleted<ExcalidrawElement>[];
224
+ /** timestamp in epoch (ms) */
225
+ created: number;
226
+ name?: string;
227
+ error?: string;
228
+ };
229
+ export declare type LibraryItems = readonly LibraryItem[];
230
+ export declare type LibraryItems_anyVersion = LibraryItems | LibraryItems_v1;
231
+ export declare type LibraryItemsSource = ((currentLibraryItems: LibraryItems) => Blob | LibraryItems_anyVersion | Promise<LibraryItems_anyVersion | Blob>) | Blob | LibraryItems_anyVersion | Promise<LibraryItems_anyVersion | Blob>;
232
+ export declare type ExcalidrawAPIRefValue = ExcalidrawImperativeAPI | {
233
+ readyPromise?: ResolvablePromise<ExcalidrawImperativeAPI>;
234
+ ready?: false;
235
+ };
236
+ export declare type ExcalidrawInitialDataState = Merge<ImportedDataState, {
237
+ libraryItems?: Required<ImportedDataState>["libraryItems"] | Promise<Required<ImportedDataState>["libraryItems"]>;
238
+ }>;
239
+ export interface ExcalidrawProps {
240
+ onChange?: (elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
241
+ initialData?: ExcalidrawInitialDataState | null | Promise<ExcalidrawInitialDataState | null>;
242
+ excalidrawRef?: ForwardRef<ExcalidrawAPIRefValue>;
243
+ isCollaborating?: boolean;
244
+ onPointerUpdate?: (payload: {
245
+ pointer: {
246
+ x: number;
247
+ y: number;
248
+ };
249
+ button: "down" | "up";
250
+ pointersMap: Gesture["pointers"];
251
+ }) => void;
252
+ onPaste?: (data: ClipboardData, event: ClipboardEvent | null) => Promise<boolean> | boolean;
253
+ onDrop?: (event: React.DragEvent<HTMLDivElement>) => Promise<boolean> | boolean;
254
+ renderTopRightUI?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
255
+ langCode?: Language["code"];
256
+ viewModeEnabled?: boolean;
257
+ zenModeEnabled?: boolean;
258
+ gridModeEnabled?: boolean;
259
+ libraryReturnUrl?: string;
260
+ initState?: AppState;
261
+ theme?: Theme;
262
+ name?: string;
263
+ renderCustomStats?: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState) => JSX.Element;
264
+ UIOptions?: Partial<UIOptions>;
265
+ detectScroll?: boolean;
266
+ handleKeyboardGlobally?: boolean;
267
+ onLibraryChange?: (libraryItems: LibraryItems) => void | Promise<any>;
268
+ autoFocus?: boolean;
269
+ onBeforeTextEdit?: (textElement: ExcalidrawTextElement) => string;
270
+ onBeforeTextSubmit?: (textElement: ExcalidrawTextElement, textToSubmit: string, originalText: string, isDeleted: boolean) => [string, string, string];
271
+ generateIdForFile?: (file: File) => string | Promise<string>;
272
+ onThemeChange?: (newTheme: string) => void;
273
+ onViewModeChange?: (isViewModeEnabled: boolean) => void;
274
+ onLinkOpen?: (element: NonDeletedExcalidrawElement, event: CustomEvent<{
275
+ nativeEvent: MouseEvent | React.PointerEvent<HTMLCanvasElement>;
276
+ }>) => void;
277
+ onLinkHover?: (element: NonDeletedExcalidrawElement, event: React.PointerEvent<HTMLCanvasElement>) => void;
278
+ onPointerDown?: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState) => void;
279
+ onScrollChange?: (scrollX: number, scrollY: number) => void;
280
+ /**
281
+ * Render function that renders custom <Sidebar /> component.
282
+ */
283
+ renderSidebar?: () => JSX.Element | null;
284
+ children?: React.ReactNode;
285
+ }
286
+ export declare type SceneData = {
287
+ elements?: ImportedDataState["elements"];
288
+ appState?: ImportedDataState["appState"];
289
+ collaborators?: Map<string, Collaborator>;
290
+ commitToHistory?: boolean;
291
+ };
292
+ export declare enum UserIdleState {
293
+ ACTIVE = "active",
294
+ AWAY = "away",
295
+ IDLE = "idle"
296
+ }
297
+ export declare type ExportOpts = {
298
+ saveFileToDisk?: boolean;
299
+ onExportToBackend?: (exportedElements: readonly NonDeletedExcalidrawElement[], appState: AppState, files: BinaryFiles, canvas: HTMLCanvasElement | null) => void;
300
+ renderCustomUI?: (exportedElements: readonly NonDeletedExcalidrawElement[], appState: AppState, files: BinaryFiles, canvas: HTMLCanvasElement | null) => JSX.Element;
301
+ };
302
+ declare type CanvasActions = Partial<{
303
+ changeViewBackgroundColor: boolean;
304
+ clearCanvas: boolean;
305
+ export: false | ExportOpts;
306
+ loadScene: boolean;
307
+ saveToActiveFile: boolean;
308
+ toggleTheme: boolean | null;
309
+ saveAsImage: boolean;
310
+ }>;
311
+ declare type UIOptions = Partial<{
312
+ dockedSidebarBreakpoint: number;
313
+ canvasActions: CanvasActions;
314
+ /** @deprecated does nothing. Will be removed in 0.15 */
315
+ welcomeScreen?: boolean;
316
+ }>;
317
+ export declare type AppProps = Merge<ExcalidrawProps, {
318
+ UIOptions: Merge<UIOptions, {
319
+ canvasActions: Required<CanvasActions> & {
320
+ export: ExportOpts;
321
+ };
322
+ }>;
323
+ detectScroll: boolean;
324
+ handleKeyboardGlobally: boolean;
325
+ isCollaborating: boolean;
326
+ children?: React.ReactNode;
327
+ }>;
328
+ /** A subset of App class properties that we need to use elsewhere
329
+ * in the app, eg Manager. Factored out into a separate type to keep DRY. */
330
+ export declare type AppClassProperties = {
331
+ props: AppProps;
332
+ canvas: HTMLCanvasElement | null;
333
+ focusContainer(): void;
334
+ library: Library;
335
+ imageCache: Map<FileId, {
336
+ image: HTMLImageElement | Promise<HTMLImageElement>;
337
+ mimeType: ValueOf<typeof IMAGE_MIME_TYPES>;
338
+ }>;
339
+ files: BinaryFiles;
340
+ device: App["device"];
341
+ scene: App["scene"];
342
+ pasteFromClipboard: App["pasteFromClipboard"];
343
+ };
344
+ export declare type PointerDownState = Readonly<{
345
+ origin: Readonly<{
346
+ x: number;
347
+ y: number;
348
+ }>;
349
+ originInGrid: Readonly<{
350
+ x: number;
351
+ y: number;
352
+ }>;
353
+ scrollbars: ReturnType<typeof isOverScrollBars>;
354
+ lastCoords: {
355
+ x: number;
356
+ y: number;
357
+ };
358
+ originalElements: Map<string, NonDeleted<ExcalidrawElement>>;
359
+ resize: {
360
+ handleType: MaybeTransformHandleType;
361
+ isResizing: boolean;
362
+ offset: {
363
+ x: number;
364
+ y: number;
365
+ };
366
+ arrowDirection: "origin" | "end";
367
+ center: {
368
+ x: number;
369
+ y: number;
370
+ };
371
+ };
372
+ hit: {
373
+ element: NonDeleted<ExcalidrawElement> | null;
374
+ allHitElements: NonDeleted<ExcalidrawElement>[];
375
+ wasAddedToSelection: boolean;
376
+ hasBeenDuplicated: boolean;
377
+ hasHitCommonBoundingBoxOfSelectedElements: boolean;
378
+ };
379
+ withCmdOrCtrl: boolean;
380
+ drag: {
381
+ hasOccurred: boolean;
382
+ offset: {
383
+ x: number;
384
+ y: number;
385
+ } | null;
386
+ };
387
+ eventListeners: {
388
+ onMove: null | ReturnType<typeof throttleRAF>;
389
+ onUp: null | ((event: PointerEvent) => void);
390
+ onKeyDown: null | ((event: KeyboardEvent) => void);
391
+ onKeyUp: null | ((event: KeyboardEvent) => void);
392
+ };
393
+ boxSelection: {
394
+ hasOccurred: boolean;
395
+ };
396
+ elementIdsToErase: {
397
+ [key: ExcalidrawElement["id"]]: {
398
+ opacity: ExcalidrawElement["opacity"];
399
+ erase: boolean;
400
+ };
401
+ };
402
+ }>;
403
+ export declare type ExcalidrawImperativeAPI = {
404
+ updateScene: InstanceType<typeof App>["updateScene"];
405
+ updateLibrary: InstanceType<typeof Library>["updateLibrary"];
406
+ resetScene: InstanceType<typeof App>["resetScene"];
407
+ getSceneElementsIncludingDeleted: InstanceType<typeof App>["getSceneElementsIncludingDeleted"];
408
+ history: {
409
+ clear: InstanceType<typeof App>["resetHistory"];
410
+ };
411
+ scrollToContent: InstanceType<typeof App>["scrollToContent"];
412
+ zoomToFit: InstanceType<typeof App>["zoomToFit"];
413
+ startLineEditor: InstanceType<typeof App>["startLineEditor"];
414
+ getSceneElements: InstanceType<typeof App>["getSceneElements"];
415
+ getAppState: () => InstanceType<typeof App>["state"];
416
+ getFiles: () => InstanceType<typeof App>["files"];
417
+ refresh: InstanceType<typeof App>["refresh"];
418
+ setToast: InstanceType<typeof App>["setToast"];
419
+ addFiles: (data: BinaryFileData[]) => void;
420
+ updateContainerSize: InstanceType<typeof App>["updateContainerSize"];
421
+ readyPromise: ResolvablePromise<ExcalidrawImperativeAPI>;
422
+ ready: true;
423
+ id: string;
424
+ setLocalFont: (showOnPanel: boolean) => void;
425
+ selectElements: (elements: readonly ExcalidrawElement[]) => void;
426
+ sendBackward: (elements: readonly ExcalidrawElement[]) => void;
427
+ bringForward: (elements: readonly ExcalidrawElement[]) => void;
428
+ sendToBack: (elements: readonly ExcalidrawElement[]) => void;
429
+ bringToFront: (elements: readonly ExcalidrawElement[]) => void;
430
+ restore: InstanceType<typeof App>["restore"];
431
+ setMobileModeAllowed: (allow: boolean) => void;
432
+ setActiveTool: InstanceType<typeof App>["setActiveTool"];
433
+ setCursor: InstanceType<typeof App>["setCursor"];
434
+ resetCursor: InstanceType<typeof App>["resetCursor"];
435
+ toggleMenu: InstanceType<typeof App>["toggleMenu"];
436
+ };
437
+ export declare type Device = Readonly<{
438
+ isSmScreen: boolean;
439
+ isMobile: boolean;
440
+ isTouchScreen: boolean;
441
+ canDeviceFitSidebar: boolean;
442
+ }>;
443
+ export {};