@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
@@ -0,0 +1,66 @@
1
+ import { ExcalidrawElement, FileId, InitializedExcalidrawImageElement } from "../../element/types";
2
+ import { BinaryFileData, ExcalidrawImperativeAPI, BinaryFiles } from "../../types";
3
+ export declare class FileManager {
4
+ /** files being fetched */
5
+ private fetchingFiles;
6
+ /** files being saved */
7
+ private savingFiles;
8
+ private savedFiles;
9
+ private erroredFiles;
10
+ private _getFiles;
11
+ private _saveFiles;
12
+ constructor({ getFiles, saveFiles, }: {
13
+ getFiles: (fileIds: FileId[]) => Promise<{
14
+ loadedFiles: BinaryFileData[];
15
+ erroredFiles: Map<FileId, true>;
16
+ }>;
17
+ saveFiles: (data: {
18
+ addedFiles: Map<FileId, BinaryFileData>;
19
+ }) => Promise<{
20
+ savedFiles: Map<FileId, true>;
21
+ erroredFiles: Map<FileId, true>;
22
+ }>;
23
+ });
24
+ /**
25
+ * returns whether file is already saved or being processed
26
+ */
27
+ isFileHandled: (id: FileId) => boolean;
28
+ isFileSaved: (id: FileId) => boolean;
29
+ saveFiles: ({ elements, files, }: {
30
+ elements: readonly ExcalidrawElement[];
31
+ files: BinaryFiles;
32
+ }) => Promise<{
33
+ savedFiles: Map<FileId, true>;
34
+ erroredFiles: Map<FileId, true>;
35
+ }>;
36
+ getFiles: (ids: FileId[]) => Promise<{
37
+ loadedFiles: BinaryFileData[];
38
+ erroredFiles: Map<FileId, true>;
39
+ }>;
40
+ /** a file element prevents unload only if it's being saved regardless of
41
+ * its `status`. This ensures that elements who for any reason haven't
42
+ * beed set to `saved` status don't prevent unload in future sessions.
43
+ * Technically we should prevent unload when the origin client haven't
44
+ * yet saved the `status` update to storage, but that should be taken care
45
+ * of during regular beforeUnload unsaved files check.
46
+ */
47
+ shouldPreventUnload: (elements: readonly ExcalidrawElement[]) => boolean;
48
+ /**
49
+ * helper to determine if image element status needs updating
50
+ */
51
+ shouldUpdateImageElementStatus: (element: ExcalidrawElement) => element is InitializedExcalidrawImageElement;
52
+ reset(): void;
53
+ }
54
+ export declare const encodeFilesForUpload: ({ files, maxBytes, encryptionKey, }: {
55
+ files: Map<FileId, BinaryFileData>;
56
+ maxBytes: number;
57
+ encryptionKey: string;
58
+ }) => Promise<{
59
+ id: FileId;
60
+ buffer: Uint8Array;
61
+ }[]>;
62
+ export declare const updateStaleImageStatuses: (params: {
63
+ excalidrawAPI: ExcalidrawImperativeAPI;
64
+ erroredFiles: Map<FileId, true>;
65
+ elements: readonly ExcalidrawElement[];
66
+ }) => void;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * This file deals with saving data state (appState, elements, images, ...)
3
+ * locally to the browser.
4
+ *
5
+ * Notes:
6
+ *
7
+ * - DataState refers to full state of the app: appState, elements, images,
8
+ * though some state is saved separately (collab username, library) for one
9
+ * reason or another. We also save different data to different sotrage
10
+ * (localStorage, indexedDB).
11
+ */
12
+ import { ExcalidrawElement, FileId } from "../../element/types";
13
+ import { AppState, BinaryFiles } from "../../types";
14
+ import { FileManager } from "./FileManager";
15
+ declare class LocalFileManager extends FileManager {
16
+ clearObsoleteFiles: (opts: {
17
+ currentFileIds: FileId[];
18
+ }) => Promise<void>;
19
+ }
20
+ declare type SavingLockTypes = "collaboration";
21
+ export declare class LocalData {
22
+ private static _save;
23
+ /** Saves DataState, including files. Bails if saving is paused */
24
+ static save: (elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles, onFilesSaved: () => void) => void;
25
+ static flushSave: () => void;
26
+ private static locker;
27
+ static pauseSave: (lockType: SavingLockTypes) => void;
28
+ static resumeSave: (lockType: SavingLockTypes) => void;
29
+ static isSavePaused: () => boolean;
30
+ static fileStorage: LocalFileManager;
31
+ }
32
+ export {};
@@ -0,0 +1,8 @@
1
+ export declare class Locker<T extends string> {
2
+ private locks;
3
+ lock: (lockType: T) => void;
4
+ /** @returns whether no locks remaining */
5
+ unlock: (lockType: T) => boolean;
6
+ /** @returns whether some (or specific) locks are present */
7
+ isLocked(lockType?: T): boolean;
8
+ }
@@ -0,0 +1,25 @@
1
+ /// <reference types="socket.io-client" />
2
+ import { ExcalidrawElement, FileId } from "../../element/types";
3
+ import Portal from "../collab/Portal";
4
+ import { AppState, BinaryFileData } from "../../types";
5
+ import { SyncableExcalidrawElement } from ".";
6
+ export declare const loadFirebaseStorage: () => Promise<typeof import("firebase/app").default>;
7
+ export declare const isSavedToFirebase: (portal: Portal, elements: readonly ExcalidrawElement[]) => boolean;
8
+ export declare const saveFilesToFirebase: ({ prefix, files, }: {
9
+ prefix: string;
10
+ files: {
11
+ id: FileId;
12
+ buffer: Uint8Array;
13
+ }[];
14
+ }) => Promise<{
15
+ savedFiles: Map<FileId, true>;
16
+ erroredFiles: Map<FileId, true>;
17
+ }>;
18
+ export declare const saveToFirebase: (portal: Portal, elements: readonly SyncableExcalidrawElement[], appState: AppState) => Promise<false | {
19
+ reconciledElements: SyncableExcalidrawElement[] | null;
20
+ }>;
21
+ export declare const loadFromFirebase: (roomId: string, roomKey: string, socket: SocketIOClient.Socket | null) => Promise<readonly ExcalidrawElement[] | null>;
22
+ export declare const loadFilesFromFirebase: (prefix: string, decryptionKey: string, filesIds: readonly FileId[]) => Promise<{
23
+ loadedFiles: BinaryFileData[];
24
+ erroredFiles: Map<FileId, true>;
25
+ }>;
@@ -0,0 +1,190 @@
1
+ import { ImportedDataState } from "../../data/types";
2
+ import { ExcalidrawElement } from "../../element/types";
3
+ import { AppState, BinaryFiles, UserIdleState } from "../../types";
4
+ export declare type SyncableExcalidrawElement = ExcalidrawElement & {
5
+ _brand: "SyncableExcalidrawElement";
6
+ };
7
+ export declare const isSyncableElement: (element: ExcalidrawElement) => element is SyncableExcalidrawElement;
8
+ export declare const getSyncableElements: (elements: readonly ExcalidrawElement[]) => SyncableExcalidrawElement[];
9
+ /**
10
+ * Right now the reason why we resolve connection params (url, polling...)
11
+ * from upstream is to allow changing the params immediately when needed without
12
+ * having to wait for clients to update the SW.
13
+ *
14
+ * If REACT_APP_WS_SERVER_URL env is set, we use that instead (useful for forks)
15
+ */
16
+ export declare const getCollabServer: () => Promise<{
17
+ url: string;
18
+ polling: boolean;
19
+ }>;
20
+ export declare type EncryptedData = {
21
+ data: ArrayBuffer;
22
+ iv: Uint8Array;
23
+ };
24
+ export declare type SocketUpdateDataSource = {
25
+ SCENE_INIT: {
26
+ type: "SCENE_INIT";
27
+ payload: {
28
+ elements: readonly ExcalidrawElement[];
29
+ };
30
+ };
31
+ SCENE_UPDATE: {
32
+ type: "SCENE_UPDATE";
33
+ payload: {
34
+ elements: readonly ExcalidrawElement[];
35
+ };
36
+ };
37
+ MOUSE_LOCATION: {
38
+ type: "MOUSE_LOCATION";
39
+ payload: {
40
+ socketId: string;
41
+ pointer: {
42
+ x: number;
43
+ y: number;
44
+ };
45
+ button: "down" | "up";
46
+ selectedElementIds: AppState["selectedElementIds"];
47
+ username: string;
48
+ };
49
+ };
50
+ IDLE_STATUS: {
51
+ type: "IDLE_STATUS";
52
+ payload: {
53
+ socketId: string;
54
+ userState: UserIdleState;
55
+ username: string;
56
+ };
57
+ };
58
+ };
59
+ export declare type SocketUpdateDataIncoming = SocketUpdateDataSource[keyof SocketUpdateDataSource] | {
60
+ type: "INVALID_RESPONSE";
61
+ };
62
+ export declare type SocketUpdateData = SocketUpdateDataSource[keyof SocketUpdateDataSource] & {
63
+ _brand: "socketUpdateData";
64
+ };
65
+ export declare const isCollaborationLink: (link: string) => boolean;
66
+ export declare const getCollaborationLinkData: (link: string) => {
67
+ roomId: string;
68
+ roomKey: string;
69
+ } | null;
70
+ export declare const generateCollaborationLinkData: () => Promise<{
71
+ roomId: string;
72
+ roomKey: string;
73
+ }>;
74
+ export declare const getCollaborationLink: (data: {
75
+ roomId: string;
76
+ roomKey: string;
77
+ }) => string;
78
+ export declare const loadScene: (id: string | null, privateKey: string | null, localDataState: ImportedDataState | undefined | null) => Promise<{
79
+ elements: ExcalidrawElement[];
80
+ appState: {
81
+ theme: string;
82
+ name: string;
83
+ activeTool: {
84
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
85
+ lastActiveToolBeforeEraser: import("../../types").LastActiveToolBeforeEraser;
86
+ locked: boolean;
87
+ customType: null;
88
+ } | {
89
+ type: "custom";
90
+ customType: string;
91
+ lastActiveToolBeforeEraser: import("../../types").LastActiveToolBeforeEraser;
92
+ locked: boolean;
93
+ };
94
+ contextMenu: {
95
+ items: import("../../components/ContextMenu").ContextMenuItems;
96
+ top: number;
97
+ left: number;
98
+ } | null;
99
+ showWelcomeScreen: boolean;
100
+ isLoading: boolean;
101
+ errorMessage: string | null;
102
+ draggingElement: import("../../element/types").NonDeletedExcalidrawElement | null;
103
+ resizingElement: import("../../element/types").NonDeletedExcalidrawElement | null;
104
+ multiElement: import("../../element/types").NonDeleted<import("../../element/types").ExcalidrawLinearElement> | null;
105
+ selectionElement: import("../../element/types").NonDeletedExcalidrawElement | null;
106
+ isBindingEnabled: boolean;
107
+ startBoundElement: import("../../element/types").NonDeleted<import("../../element/types").ExcalidrawBindableElement> | null;
108
+ suggestedBindings: import("../../element/binding").SuggestedBinding[];
109
+ editingElement: import("../../element/types").NonDeletedExcalidrawElement | null;
110
+ editingLinearElement: import("../../element/linearElementEditor").LinearElementEditor | null;
111
+ penMode: boolean;
112
+ penDetected: boolean;
113
+ exportBackground: boolean;
114
+ exportEmbedScene: boolean;
115
+ exportWithDarkMode: boolean;
116
+ exportScale: number;
117
+ currentItemStrokeColor: string;
118
+ currentItemBackgroundColor: string;
119
+ currentItemFillStyle: import("../../element/types").FillStyle;
120
+ currentItemStrokeWidth: number;
121
+ currentItemStrokeStyle: import("../../element/types").StrokeStyle;
122
+ currentItemRoughness: number;
123
+ currentItemOpacity: number;
124
+ currentItemFontFamily: number;
125
+ currentItemFontSize: number;
126
+ currentItemTextAlign: string;
127
+ currentItemStartArrowhead: import("../../element/types").Arrowhead | null;
128
+ currentItemEndArrowhead: import("../../element/types").Arrowhead | null;
129
+ currentItemRoundness: import("../../element/types").StrokeRoundness;
130
+ viewBackgroundColor: string;
131
+ scrollX: number;
132
+ scrollY: number;
133
+ cursorButton: "up" | "down";
134
+ scrolledOutside: boolean;
135
+ isResizing: boolean;
136
+ isRotating: boolean;
137
+ zoom: Readonly<{
138
+ value: import("../../types").NormalizedZoomValue;
139
+ }>;
140
+ openMenu: "canvas" | "shape" | null;
141
+ openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
142
+ openSidebar: "library" | "customSidebar" | null;
143
+ openDialog: "imageExport" | "help" | null;
144
+ isSidebarDocked: boolean;
145
+ lastPointerDownWith: import("../../element/types").PointerType;
146
+ selectedElementIds: {
147
+ [id: string]: boolean;
148
+ };
149
+ previousSelectedElementIds: {
150
+ [id: string]: boolean;
151
+ };
152
+ shouldCacheIgnoreZoom: boolean;
153
+ toast: {
154
+ message: string;
155
+ closable?: boolean | undefined;
156
+ duration?: number | undefined;
157
+ } | null;
158
+ zenModeEnabled: boolean;
159
+ gridSize: number | null;
160
+ viewModeEnabled: boolean;
161
+ selectedGroupIds: {
162
+ [groupId: string]: boolean;
163
+ };
164
+ editingGroupId: string | null;
165
+ fileHandle: import("browser-fs-access").FileSystemHandle | null;
166
+ collaborators: Map<string, import("../../types").Collaborator>;
167
+ showStats: boolean;
168
+ currentChartType: import("../../element/types").ChartType;
169
+ pasteDialog: {
170
+ shown: false;
171
+ data: null;
172
+ } | {
173
+ shown: true;
174
+ data: import("../../charts").Spreadsheet;
175
+ };
176
+ pendingImageElementId: string | null;
177
+ showHyperlinkPopup: false | "info" | "editor";
178
+ linkOpacity: number;
179
+ trayModeEnabled: boolean;
180
+ colorPalette: {
181
+ canvasBackground?: string[] | undefined;
182
+ elementBackground?: string[] | undefined;
183
+ elementStroke?: string[] | undefined;
184
+ };
185
+ selectedLinearElement: import("../../element/linearElementEditor").LinearElementEditor | null;
186
+ };
187
+ files: BinaryFiles;
188
+ commitToHistory: boolean;
189
+ }>;
190
+ export declare const exportToBackend: (elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles) => Promise<void>;
@@ -0,0 +1,116 @@
1
+ import { ExcalidrawElement } from "../../element/types";
2
+ export declare const saveUsernameToLocalStorage: (username: string) => void;
3
+ export declare const importUsernameFromLocalStorage: () => string | null;
4
+ export declare const importFromLocalStorage: () => {
5
+ elements: ExcalidrawElement[];
6
+ appState: {
7
+ theme: string;
8
+ name: string;
9
+ activeTool: {
10
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser";
11
+ lastActiveToolBeforeEraser: import("../../types").LastActiveToolBeforeEraser;
12
+ locked: boolean;
13
+ customType: null;
14
+ } | {
15
+ type: "custom";
16
+ customType: string;
17
+ lastActiveToolBeforeEraser: import("../../types").LastActiveToolBeforeEraser;
18
+ locked: boolean;
19
+ };
20
+ showWelcomeScreen: boolean;
21
+ penMode: boolean;
22
+ penDetected: boolean;
23
+ exportBackground: boolean;
24
+ exportEmbedScene: boolean;
25
+ exportWithDarkMode: boolean;
26
+ exportScale: number;
27
+ currentItemStrokeColor: string;
28
+ currentItemBackgroundColor: string;
29
+ currentItemFillStyle: import("../../element/types").FillStyle;
30
+ currentItemStrokeWidth: number;
31
+ currentItemStrokeStyle: import("../../element/types").StrokeStyle;
32
+ currentItemRoughness: number;
33
+ currentItemOpacity: number;
34
+ currentItemFontFamily: number;
35
+ currentItemFontSize: number;
36
+ currentItemTextAlign: string;
37
+ currentItemStartArrowhead: import("../../element/types").Arrowhead | null;
38
+ currentItemEndArrowhead: import("../../element/types").Arrowhead | null;
39
+ currentItemRoundness: import("../../element/types").StrokeRoundness;
40
+ viewBackgroundColor: string;
41
+ scrollX: number;
42
+ scrollY: number;
43
+ cursorButton: "up" | "down";
44
+ scrolledOutside: boolean;
45
+ zoom: Readonly<{
46
+ value: import("../../types").NormalizedZoomValue;
47
+ }>;
48
+ openMenu: "canvas" | "shape" | null;
49
+ openSidebar: "library" | "customSidebar" | null;
50
+ isSidebarDocked: boolean;
51
+ lastPointerDownWith: import("../../element/types").PointerType;
52
+ selectedElementIds: {
53
+ [id: string]: boolean;
54
+ };
55
+ previousSelectedElementIds: {
56
+ [id: string]: boolean;
57
+ };
58
+ shouldCacheIgnoreZoom: boolean;
59
+ zenModeEnabled: boolean;
60
+ gridSize: number | null;
61
+ selectedGroupIds: {
62
+ [groupId: string]: boolean;
63
+ };
64
+ editingGroupId: string | null;
65
+ showStats: boolean;
66
+ currentChartType: import("../../element/types").ChartType;
67
+ selectedLinearElement: import("../../element/linearElementEditor").LinearElementEditor | null;
68
+ contextMenu: {
69
+ items: import("../../components/ContextMenu").ContextMenuItems;
70
+ top: number;
71
+ left: number;
72
+ } | null;
73
+ isLoading: boolean;
74
+ errorMessage: string | null;
75
+ draggingElement: import("../../element/types").NonDeletedExcalidrawElement | null;
76
+ resizingElement: import("../../element/types").NonDeletedExcalidrawElement | null;
77
+ multiElement: import("../../element/types").NonDeleted<import("../../element/types").ExcalidrawLinearElement> | null;
78
+ selectionElement: import("../../element/types").NonDeletedExcalidrawElement | null;
79
+ isBindingEnabled: boolean;
80
+ startBoundElement: import("../../element/types").NonDeleted<import("../../element/types").ExcalidrawBindableElement> | null;
81
+ suggestedBindings: import("../../element/binding").SuggestedBinding[];
82
+ editingElement: import("../../element/types").NonDeletedExcalidrawElement | null;
83
+ editingLinearElement: import("../../element/linearElementEditor").LinearElementEditor | null;
84
+ isResizing: boolean;
85
+ isRotating: boolean;
86
+ openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
87
+ openDialog: "imageExport" | "help" | null;
88
+ toast: {
89
+ message: string;
90
+ closable?: boolean | undefined;
91
+ duration?: number | undefined;
92
+ } | null;
93
+ viewModeEnabled: boolean;
94
+ fileHandle: import("browser-fs-access").FileSystemHandle | null;
95
+ collaborators: Map<string, import("../../types").Collaborator>;
96
+ pasteDialog: {
97
+ shown: false;
98
+ data: null;
99
+ } | {
100
+ shown: true;
101
+ data: import("../../charts").Spreadsheet;
102
+ };
103
+ pendingImageElementId: string | null;
104
+ showHyperlinkPopup: false | "info" | "editor";
105
+ linkOpacity: number;
106
+ trayModeEnabled: boolean;
107
+ colorPalette: {
108
+ canvasBackground?: string[] | undefined;
109
+ elementBackground?: string[] | undefined;
110
+ elementStroke?: string[] | undefined;
111
+ };
112
+ } | null;
113
+ };
114
+ export declare const getElementsStorageSize: () => number;
115
+ export declare const getTotalStorageSize: () => number;
116
+ export declare const getLibraryItemsFromStorage: () => import("../../types").LibraryItems_anyVersion;
@@ -0,0 +1,9 @@
1
+ declare const LOCAL_STATE_VERSIONS: {
2
+ "version-dataState": number;
3
+ "version-files": number;
4
+ };
5
+ declare type BrowserStateTypes = keyof typeof LOCAL_STATE_VERSIONS;
6
+ export declare const isBrowserStorageStateNewer: (type: BrowserStateTypes) => boolean;
7
+ export declare const updateBrowserStateVersion: (type: BrowserStateTypes) => void;
8
+ export declare const resetBrowserStateVersions: () => void;
9
+ export {};
@@ -0,0 +1,26 @@
1
+ import "./index.scss";
2
+ export declare const langCodeAtom: import("jotai").Atom<string> & {
3
+ write: (get: {
4
+ <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value;
5
+ <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1;
6
+ <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? any : V : V : V : V : V : V : V : V : V : V : Value_2;
7
+ } & {
8
+ <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: {
9
+ unstable_promise: true;
10
+ }): Value_3 | Promise<Value_3>;
11
+ <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: {
12
+ unstable_promise: true;
13
+ }): Value_4 | Promise<Value_4>;
14
+ <Value_5>(atom: import("jotai").Atom<Value_5>, options: {
15
+ unstable_promise: true;
16
+ }): (Value_5 extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? any : V : V : V : V : V : V : V : V : V : V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? V extends Promise<infer V> ? any : V : V : V : V : V : V : V : V : V : V : Value_5>;
17
+ }, set: {
18
+ <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result;
19
+ <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1;
20
+ }, update: string | ((prev: string) => string)) => void;
21
+ onMount?: (<S extends (update: string | ((prev: string) => string)) => void>(setAtom: S) => void | (() => void)) | undefined;
22
+ } & {
23
+ init: string;
24
+ };
25
+ declare const ExcalidrawApp: () => JSX.Element;
26
+ export default ExcalidrawApp;
package/types/ga.d.ts CHANGED
@@ -1,63 +1,63 @@
1
- /**
2
- * This is a 2D Projective Geometric Algebra implementation.
3
- *
4
- * For wider context on geometric algebra visit see https://bivector.net.
5
- *
6
- * For this specific algebra see cheatsheet https://bivector.net/2DPGA.pdf.
7
- *
8
- * Converted from generator written by enki, with a ton of added on top.
9
- *
10
- * This library uses 8-vectors to represent points, directions and lines
11
- * in 2D space.
12
- *
13
- * An array `[a, b, c, d, e, f, g, h]` represents a n(8)vector:
14
- * a + b*e0 + c*e1 + d*e2 + e*e01 + f*e20 + g*e12 + h*e012
15
- *
16
- * See GAPoint, GALine, GADirection and GATransform modules for common
17
- * operations.
18
- */
19
- export declare type Point = NVector;
20
- export declare type Direction = NVector;
21
- export declare type Line = NVector;
22
- export declare type Transform = NVector;
23
- export declare const point: (x: number, y: number) => NVector;
24
- export declare const origin: () => NVector;
25
- export declare const direction: (x: number, y: number) => NVector;
26
- export declare const offset: (x: number, y: number) => NVector;
27
- declare type NVector = readonly [
28
- number,
29
- number,
30
- number,
31
- number,
32
- number,
33
- number,
34
- number,
35
- number
36
- ];
37
- export declare const nvector: (value?: number, index?: number) => NVector;
38
- export declare const toString: (nvector: NVector) => string;
39
- export declare const reverse: (nvector: NVector) => NVector;
40
- export declare const dual: (nvector: NVector) => NVector;
41
- export declare const conjugate: (nvector: NVector) => NVector;
42
- export declare const involute: (nvector: NVector) => NVector;
43
- export declare const add: (a: NVector, b: NVector | number) => NVector;
44
- export declare const sub: (a: NVector, b: NVector | number) => NVector;
45
- export declare const mul: (a: NVector, b: NVector | number) => NVector;
46
- export declare const mulScalar: (a: NVector, b: NVector) => number;
47
- export declare const meet: (a: NVector, b: NVector) => NVector;
48
- export declare const join: (a: NVector, b: NVector) => NVector;
49
- export declare const joinScalar: (a: NVector, b: NVector) => number;
50
- export declare const dot: (a: NVector, b: NVector) => NVector;
51
- export declare const norm: (a: NVector) => number;
52
- export declare const inorm: (a: NVector) => number;
53
- export declare const normalized: (a: NVector) => NVector;
54
- export declare const inormalized: (a: NVector) => NVector;
55
- export declare const E0: NVector;
56
- export declare const E1: NVector;
57
- export declare const E2: NVector;
58
- export declare const E01: NVector;
59
- export declare const E20: NVector;
60
- export declare const E12: NVector;
61
- export declare const E012: NVector;
62
- export declare const I: NVector;
63
- export {};
1
+ /**
2
+ * This is a 2D Projective Geometric Algebra implementation.
3
+ *
4
+ * For wider context on geometric algebra visit see https://bivector.net.
5
+ *
6
+ * For this specific algebra see cheatsheet https://bivector.net/2DPGA.pdf.
7
+ *
8
+ * Converted from generator written by enki, with a ton of added on top.
9
+ *
10
+ * This library uses 8-vectors to represent points, directions and lines
11
+ * in 2D space.
12
+ *
13
+ * An array `[a, b, c, d, e, f, g, h]` represents a n(8)vector:
14
+ * a + b*e0 + c*e1 + d*e2 + e*e01 + f*e20 + g*e12 + h*e012
15
+ *
16
+ * See GAPoint, GALine, GADirection and GATransform modules for common
17
+ * operations.
18
+ */
19
+ export declare type Point = NVector;
20
+ export declare type Direction = NVector;
21
+ export declare type Line = NVector;
22
+ export declare type Transform = NVector;
23
+ export declare const point: (x: number, y: number) => NVector;
24
+ export declare const origin: () => NVector;
25
+ export declare const direction: (x: number, y: number) => NVector;
26
+ export declare const offset: (x: number, y: number) => NVector;
27
+ declare type NVector = readonly [
28
+ number,
29
+ number,
30
+ number,
31
+ number,
32
+ number,
33
+ number,
34
+ number,
35
+ number
36
+ ];
37
+ export declare const nvector: (value?: number, index?: number) => NVector;
38
+ export declare const toString: (nvector: NVector) => string;
39
+ export declare const reverse: (nvector: NVector) => NVector;
40
+ export declare const dual: (nvector: NVector) => NVector;
41
+ export declare const conjugate: (nvector: NVector) => NVector;
42
+ export declare const involute: (nvector: NVector) => NVector;
43
+ export declare const add: (a: NVector, b: NVector | number) => NVector;
44
+ export declare const sub: (a: NVector, b: NVector | number) => NVector;
45
+ export declare const mul: (a: NVector, b: NVector | number) => NVector;
46
+ export declare const mulScalar: (a: NVector, b: NVector) => number;
47
+ export declare const meet: (a: NVector, b: NVector) => NVector;
48
+ export declare const join: (a: NVector, b: NVector) => NVector;
49
+ export declare const joinScalar: (a: NVector, b: NVector) => number;
50
+ export declare const dot: (a: NVector, b: NVector) => NVector;
51
+ export declare const norm: (a: NVector) => number;
52
+ export declare const inorm: (a: NVector) => number;
53
+ export declare const normalized: (a: NVector) => NVector;
54
+ export declare const inormalized: (a: NVector) => NVector;
55
+ export declare const E0: NVector;
56
+ export declare const E1: NVector;
57
+ export declare const E2: NVector;
58
+ export declare const E01: NVector;
59
+ export declare const E20: NVector;
60
+ export declare const E12: NVector;
61
+ export declare const E012: NVector;
62
+ export declare const I: NVector;
63
+ export {};
@@ -1,8 +1,8 @@
1
- /**
2
- * A direction is stored as an array `[0, 0, 0, 0, y, x, 0, 0]` representing
3
- * vector `(x, y)`.
4
- */
5
- export declare const from: (point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
6
- export declare const fromTo: (from: readonly [number, number, number, number, number, number, number, number], to: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
7
- export declare const orthogonal: (direction: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
8
- export declare const orthogonalToLine: (line: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
1
+ /**
2
+ * A direction is stored as an array `[0, 0, 0, 0, y, x, 0, 0]` representing
3
+ * vector `(x, y)`.
4
+ */
5
+ export declare const from: (point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
6
+ export declare const fromTo: (from: readonly [number, number, number, number, number, number, number, number], to: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
7
+ export declare const orthogonal: (direction: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
8
+ export declare const orthogonalToLine: (line: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];