@zsviczian/excalidraw 0.15.2-obsidian-10 → 0.15.2-obsidian-11
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.
- package/dist/excalidraw.development.js +1710 -1849
- package/dist/excalidraw.production.min.js +1 -1
- package/package.json +2 -1
- package/types/actions/actionAddToLibrary.d.ts +440 -441
- package/types/actions/actionAlign.d.ts +96 -97
- package/types/actions/actionBoundText.d.ts +330 -331
- package/types/actions/actionCanvas.d.ts +1844 -1845
- package/types/actions/actionClipboard.d.ts +828 -829
- package/types/actions/actionDeleteSelected.d.ts +474 -475
- package/types/actions/actionDistribute.d.ts +32 -33
- package/types/actions/actionDuplicateSelection.d.ts +21 -22
- package/types/actions/actionElementLock.d.ts +315 -316
- package/types/actions/actionExport.d.ts +1388 -1389
- package/types/actions/actionFinalize.d.ts +298 -299
- package/types/actions/actionFlip.d.ts +32 -33
- package/types/actions/actionFrame.d.ts +489 -490
- package/types/actions/actionGroup.d.ts +44 -45
- package/types/actions/actionHistory.d.ts +6 -6
- package/types/actions/actionLinearEditor.d.ts +157 -158
- package/types/actions/actionMenu.d.ts +478 -479
- package/types/actions/actionNavigate.d.ts +14 -14
- package/types/actions/actionProperties.d.ts +2012 -2013
- package/types/actions/actionSelectAll.d.ts +15 -16
- package/types/actions/actionStyles.d.ts +171 -172
- package/types/actions/actionToggleGridMode.d.ts +160 -161
- package/types/actions/actionToggleLock.d.ts +139 -135
- package/types/actions/actionToggleStats.d.ts +157 -158
- package/types/actions/actionToggleViewMode.d.ts +159 -160
- package/types/actions/actionToggleZenMode.d.ts +159 -160
- package/types/actions/actionZindex.d.ts +67 -67
- package/types/actions/index.d.ts +24 -24
- package/types/actions/manager.d.ts +21 -21
- package/types/actions/register.d.ts +5 -5
- package/types/actions/shortcuts.d.ts +4 -4
- package/types/actions/types.d.ts +45 -45
- package/types/align.d.ts +6 -6
- package/types/analytics.d.ts +1 -1
- package/types/appState.d.ts +81 -81
- package/types/bug-issue-template.d.ts +2 -0
- package/types/charts.d.ts +27 -27
- package/types/clients.d.ts +5 -5
- package/types/clipboard.d.ts +25 -25
- package/types/colors.d.ts +61 -61
- package/types/components/Actions.d.ts +36 -36
- package/types/components/ActiveConfirmDialog.d.ts +4 -4
- package/types/components/ActiveFile.d.ts +7 -0
- package/types/components/App.d.ts +288 -288
- package/types/components/Avatar.d.ts +10 -10
- package/types/components/BackgroundPickerAndDarkModeToggle.d.ts +4 -0
- package/types/components/BraveMeasureTextError.d.ts +2 -2
- package/types/components/Button.d.ts +16 -17
- package/types/components/ButtonIconSelect.d.ts +19 -19
- package/types/components/Card.d.ts +6 -7
- package/types/components/CheckboxItem.d.ts +8 -8
- package/types/components/ClearCanvas.d.ts +4 -0
- package/types/components/CollabButton.d.ts +7 -0
- package/types/components/ColorPicker/ColorInput.d.ts +7 -7
- package/types/components/ColorPicker/ColorPicker.d.ts +19 -19
- package/types/components/ColorPicker/CustomColorList.d.ts +8 -8
- package/types/components/ColorPicker/HotkeyLabel.d.ts +8 -8
- package/types/components/ColorPicker/Picker.d.ts +18 -18
- package/types/components/ColorPicker/PickerColorList.d.ts +10 -10
- package/types/components/ColorPicker/PickerHeading.d.ts +5 -5
- package/types/components/ColorPicker/ShadeList.d.ts +8 -8
- package/types/components/ColorPicker/TopPicks.d.ts +9 -9
- package/types/components/ColorPicker/colorPickerUtils.d.ts +21 -21
- package/types/components/ColorPicker/keyboardNavHandlers.d.ts +20 -21
- package/types/components/ColorPicker.d.ts +19 -19
- package/types/components/ConfirmDialog.d.ts +10 -10
- package/types/components/ContextMenu.d.ts +15 -15
- package/types/components/DarkModeToggle.d.ts +7 -7
- package/types/components/DefaultSidebar.d.ts +29 -30
- package/types/components/Dialog.d.ts +13 -13
- package/types/components/DialogActionButton.d.ts +10 -10
- package/types/components/EncryptedIcon.d.ts +2 -0
- package/types/components/ErrorDialog.d.ts +5 -5
- package/types/components/EyeDropper.d.ts +17 -18
- package/types/components/FilledButton.d.ts +17 -17
- package/types/components/FixedSideContainer.d.ts +9 -9
- package/types/components/Footer.d.ts +10 -0
- package/types/components/HandButton.d.ts +10 -10
- package/types/components/HelpButton.d.ts +7 -7
- package/types/components/HelpDialog.d.ts +4 -4
- package/types/components/HelpIcon.d.ts +8 -0
- package/types/components/HintViewer.d.ts +10 -10
- package/types/components/IconPicker.d.ts +13 -13
- package/types/components/ImageExportDialog.d.ts +13 -13
- package/types/components/InitializeApp.d.ts +10 -10
- package/types/components/Island.d.ts +10 -10
- package/types/components/JSONExportDialog.d.ts +15 -15
- package/types/components/LayerUI.d.ts +32 -32
- package/types/components/LibraryButton.d.ts +8 -8
- package/types/components/LibraryMenu.d.ts +24 -24
- package/types/components/LibraryMenuBrowseButton.d.ts +7 -7
- package/types/components/LibraryMenuControlButtons.d.ts +9 -9
- package/types/components/LibraryMenuHeaderContent.d.ts +17 -18
- package/types/components/LibraryMenuItems.d.ts +14 -14
- package/types/components/LibraryMenuSection.d.ts +22 -22
- package/types/components/LibraryUnit.d.ts +14 -15
- package/types/components/LoadingMessage.d.ts +5 -6
- package/types/components/LockButton.d.ts +10 -10
- package/types/components/MenuItem.d.ts +11 -0
- package/types/components/MenuUtils.d.ts +2 -0
- package/types/components/MobileMenu.d.ts +27 -27
- package/types/components/Modal.d.ts +13 -13
- package/types/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -17
- package/types/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -17
- package/types/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -22
- package/types/components/PasteChartDialog.d.ts +8 -8
- package/types/components/PenModeButton.d.ts +12 -12
- package/types/components/Popover.d.ts +15 -15
- package/types/components/ProjectName.d.ts +11 -11
- package/types/components/PublishLibrary.d.ts +16 -16
- package/types/components/RadioGroup.d.ts +12 -12
- package/types/components/Section.d.ts +6 -6
- package/types/components/Sidebar/Sidebar.d.ts +76 -76
- package/types/components/Sidebar/SidebarHeader.d.ts +7 -7
- package/types/components/Sidebar/SidebarTab.d.ts +8 -9
- package/types/components/Sidebar/SidebarTabTrigger.d.ts +9 -10
- package/types/components/Sidebar/SidebarTabTriggers.d.ts +6 -7
- package/types/components/Sidebar/SidebarTabs.d.ts +6 -7
- package/types/components/Sidebar/SidebarTrigger.d.ts +6 -6
- package/types/components/Sidebar/common.d.ts +33 -33
- package/types/components/SidebarLockButton.d.ts +8 -0
- package/types/components/SingleLibraryItem.d.ts +10 -10
- package/types/components/Spinner.d.ts +7 -7
- package/types/components/Stack.d.ts +16 -16
- package/types/components/Stats.d.ts +11 -11
- package/types/components/Switch.d.ts +9 -9
- package/types/components/Toast.d.ts +7 -7
- package/types/components/ToolButton.d.ts +47 -47
- package/types/components/Tooltip.d.ts +17 -17
- package/types/components/TopErrorBoundary.d.ts +15 -0
- package/types/components/Trans.d.ts +9 -9
- package/types/components/UserList.d.ts +8 -8
- package/types/components/WelcomeScreen.d.ts +8 -0
- package/types/components/WelcomeScreenDecor.d.ts +6 -0
- package/types/components/context/tunnels.d.ts +16 -16
- package/types/components/dropdownMenu/DropdownMenu.d.ts +67 -67
- package/types/components/dropdownMenu/DropdownMenuContent.d.ts +15 -15
- package/types/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -11
- package/types/components/dropdownMenu/DropdownMenuItem.d.ts +12 -12
- package/types/components/dropdownMenu/DropdownMenuItemContent.d.ts +6 -6
- package/types/components/dropdownMenu/DropdownMenuItemCustom.d.ts +6 -6
- package/types/components/dropdownMenu/DropdownMenuItemLink.d.ts +13 -13
- package/types/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -5
- package/types/components/dropdownMenu/DropdownMenuTrigger.d.ts +10 -11
- package/types/components/dropdownMenu/common.d.ts +6 -6
- package/types/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -3
- package/types/components/footer/Footer.d.ts +12 -12
- package/types/components/footer/FooterCenter.d.ts +8 -8
- package/types/components/hoc/withInternalFallback.d.ts +4 -4
- package/types/components/hoc/withUpstreamOverride.d.ts +10 -10
- package/types/components/icons.d.ts +154 -154
- package/types/components/live-collaboration/LiveCollaborationTrigger.d.ts +9 -10
- package/types/components/main-menu/DefaultItems.d.ts +44 -44
- package/types/components/main-menu/MainMenu.d.ts +61 -61
- package/types/components/mainMenu/DefaultItems.d.ts +44 -0
- package/types/components/mainMenu/MainMenu.d.ts +63 -0
- package/types/components/welcome-screen/WelcomeScreen.Center.d.ts +57 -58
- package/types/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -19
- package/types/components/welcome-screen/WelcomeScreen.d.ts +84 -85
- package/types/constants.d.ts +229 -226
- package/types/context/tunnels.d.ts +19 -19
- package/types/context/ui-appState.d.ts +4 -4
- package/types/data/blob.d.ts +48 -48
- package/types/data/encode.d.ts +53 -53
- package/types/data/encryption.d.ts +9 -9
- package/types/data/filesystem.d.ts +19 -19
- package/types/data/image.d.ts +15 -15
- package/types/data/index.d.ts +13 -13
- package/types/data/json.d.ts +16 -16
- package/types/data/library.d.ts +54 -54
- package/types/data/resave.d.ts +5 -5
- package/types/data/restore.d.ts +21 -21
- package/types/data/types.d.ts +45 -45
- package/types/data/url.d.ts +7 -7
- package/types/distribute.d.ts +6 -6
- package/types/element/Hyperlink.d.ts +181 -182
- package/types/element/binding.d.ts +33 -33
- package/types/element/bounds.d.ts +53 -53
- package/types/element/collision.d.ts +21 -21
- package/types/element/dragElements.d.ts +6 -6
- package/types/element/embeddable.d.ts +175 -176
- package/types/element/iframe.d.ts +167 -0
- package/types/element/image.d.ts +32 -32
- package/types/element/index.d.ts +21 -21
- package/types/element/linearElementEditor.d.ts +292 -293
- package/types/element/mutateElement.d.ts +12 -12
- package/types/element/newElement.d.ts +95 -95
- package/types/element/resizeElements.d.ts +9 -9
- package/types/element/resizeTest.d.ts +13 -13
- package/types/element/showSelectedShapeActions.d.ts +3 -3
- package/types/element/sizeHelpers.d.ts +21 -21
- package/types/element/sortElements.d.ts +2 -2
- package/types/element/textElement.d.ts +76 -80
- package/types/element/textWysiwyg.d.ts +21 -21
- package/types/element/transformHandles.d.ts +35 -35
- package/types/element/typeChecks.d.ts +29 -29
- package/types/element/types.d.ts +166 -166
- package/types/errors.d.ts +8 -8
- package/types/excalidraw-app/CustomStats.d.ts +9 -0
- package/types/excalidraw-app/app_constants.d.ts +32 -0
- package/types/excalidraw-app/collab/Collab.d.ts +163 -0
- package/types/excalidraw-app/collab/Portal.d.ts +28 -0
- package/types/excalidraw-app/collab/RoomDialog.d.ts +13 -0
- package/types/excalidraw-app/collab/reconciliation.d.ts +10 -0
- package/types/excalidraw-app/components/ExportToExcalidrawPlus.d.ts +9 -0
- package/types/excalidraw-app/components/LanguageList.d.ts +4 -0
- package/types/excalidraw-app/components/icons.d.ts +1 -0
- package/types/excalidraw-app/data/FileManager.d.ts +66 -0
- package/types/excalidraw-app/data/LocalData.d.ts +32 -0
- package/types/excalidraw-app/data/Locker.d.ts +8 -0
- package/types/excalidraw-app/data/firebase.d.ts +25 -0
- package/types/excalidraw-app/data/index.d.ts +190 -0
- package/types/excalidraw-app/data/localStorage.d.ts +116 -0
- package/types/excalidraw-app/data/tabSync.d.ts +9 -0
- package/types/excalidraw-app/index.d.ts +26 -0
- package/types/frame.d.ts +40 -40
- package/types/ga.d.ts +63 -63
- package/types/gadirections.d.ts +8 -8
- package/types/galines.d.ts +22 -22
- package/types/gapoints.d.ts +7 -7
- package/types/gatransforms.d.ts +10 -10
- package/types/gesture.d.ts +6 -6
- package/types/groups.d.ts +31 -31
- package/types/history.d.ts +52 -52
- package/types/hooks/useCallbackRefState.d.ts +1 -1
- package/types/hooks/useCreatePortalContainer.d.ts +5 -5
- package/types/hooks/useLibraryItemSvg.d.ts +11 -11
- package/types/hooks/useOutsideClick.d.ts +19 -20
- package/types/hooks/useScrollPosition.d.ts +1 -2
- package/types/hooks/useTransition.d.ts +2 -2
- package/types/i18n.d.ts +24 -24
- package/types/jotai.d.ts +34 -34
- package/types/keys.d.ts +80 -80
- package/types/math.d.ts +30 -30
- package/types/packages/common.webpack.dev.config.d.ts +72 -72
- package/types/packages/common.webpack.prod.config.d.ts +84 -84
- package/types/packages/excalidraw/dist/excalidraw.development.d.ts +2 -4
- package/types/packages/excalidraw/dist/excalidraw.production.min.d.ts +1 -1
- package/types/packages/excalidraw/entry.d.ts +1 -1
- package/types/packages/excalidraw/env.d.ts +1 -1
- package/types/packages/excalidraw/example/App.d.ts +14 -14
- package/types/packages/excalidraw/example/CustomFooter.d.ts +5 -5
- package/types/packages/excalidraw/example/MobileFooter.d.ts +5 -5
- package/types/packages/excalidraw/example/index.d.ts +1 -1
- package/types/packages/excalidraw/example/initialData.d.ts +178 -178
- package/types/packages/excalidraw/example/sidebar/ExampleSidebar.d.ts +5 -5
- package/types/packages/excalidraw/example/sidebar/Sidebar.d.ts +5 -0
- package/types/packages/excalidraw/index.d.ts +38 -37
- package/types/packages/excalidraw/main.d.ts +2 -2
- package/types/packages/excalidraw/publicPath.d.ts +1 -1
- package/types/packages/excalidraw/webpack.dev-server.config.d.ts +19 -19
- package/types/packages/excalidraw/webpack.dev.config.d.ts +80 -69
- package/types/packages/excalidraw/webpack.prod.config.d.ts +95 -78
- package/types/packages/utils.d.ts +43 -43
- package/types/points.d.ts +7 -7
- package/types/polyfill.d.ts +2 -2
- package/types/random.d.ts +4 -4
- package/types/renderer/easingFunctions.d.ts +6 -6
- package/types/renderer/renderElement.d.ts +37 -37
- package/types/renderer/renderScene.d.ts +51 -51
- package/types/renderer/roundRect.d.ts +11 -11
- package/types/scene/Fonts.d.ts +21 -21
- package/types/scene/Scene.d.ts +60 -60
- package/types/scene/comparisons.d.ts +10 -10
- package/types/scene/export.d.ts +25 -25
- package/types/scene/index.d.ts +5 -5
- package/types/scene/scroll.d.ts +17 -17
- package/types/scene/scrollbars.d.ts +16 -16
- package/types/scene/selection.d.ts +31 -31
- package/types/scene/types.d.ts +59 -59
- package/types/scene/zoom.d.ts +13 -13
- package/types/shapes.d.ts +62 -62
- package/types/types.d.ts +501 -501
- package/types/utility-types.d.ts +24 -25
- package/types/utils.d.ts +192 -192
- package/types/zindex.d.ts +6 -6
- package/types/.DS_Store +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/// <reference types="socket.io-client" />
|
|
2
|
+
/// <reference types="lodash" />
|
|
3
|
+
import { SocketUpdateData, SocketUpdateDataSource } from "../data";
|
|
4
|
+
import { TCollabClass } from "./Collab";
|
|
5
|
+
import { ExcalidrawElement } from "../../element/types";
|
|
6
|
+
import { WS_SCENE_EVENT_TYPES } from "../app_constants";
|
|
7
|
+
import { UserIdleState } from "../../types";
|
|
8
|
+
declare class Portal {
|
|
9
|
+
collab: TCollabClass;
|
|
10
|
+
socket: SocketIOClient.Socket | null;
|
|
11
|
+
socketInitialized: boolean;
|
|
12
|
+
roomId: string | null;
|
|
13
|
+
roomKey: string | null;
|
|
14
|
+
broadcastedElementVersions: Map<string, number>;
|
|
15
|
+
constructor(collab: TCollabClass);
|
|
16
|
+
open(socket: SocketIOClient.Socket, id: string, key: string): SocketIOClient.Socket;
|
|
17
|
+
close(): void;
|
|
18
|
+
isOpen(): boolean;
|
|
19
|
+
_broadcastSocketData(data: SocketUpdateData, volatile?: boolean): Promise<void>;
|
|
20
|
+
queueFileUpload: import("lodash").DebouncedFunc<() => Promise<void>>;
|
|
21
|
+
broadcastScene: (updateType: WS_SCENE_EVENT_TYPES.INIT | WS_SCENE_EVENT_TYPES.UPDATE, allElements: readonly ExcalidrawElement[], syncAll: boolean) => Promise<void>;
|
|
22
|
+
broadcastIdleChange: (userState: UserIdleState) => Promise<void> | undefined;
|
|
23
|
+
broadcastMouseLocation: (payload: {
|
|
24
|
+
pointer: SocketUpdateDataSource["MOUSE_LOCATION"]["payload"]["pointer"];
|
|
25
|
+
button: SocketUpdateDataSource["MOUSE_LOCATION"]["payload"]["button"];
|
|
26
|
+
}) => Promise<void> | undefined;
|
|
27
|
+
}
|
|
28
|
+
export default Portal;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import "./RoomDialog.scss";
|
|
2
|
+
import { AppState } from "../../types";
|
|
3
|
+
declare const RoomDialog: ({ handleClose, activeRoomLink, username, onUsernameChange, onRoomCreate, onRoomDestroy, setErrorMessage, theme, }: {
|
|
4
|
+
handleClose: () => void;
|
|
5
|
+
activeRoomLink: string;
|
|
6
|
+
username: string;
|
|
7
|
+
onUsernameChange: (username: string) => void;
|
|
8
|
+
onRoomCreate: () => void;
|
|
9
|
+
onRoomDestroy: () => void;
|
|
10
|
+
setErrorMessage: (message: string) => void;
|
|
11
|
+
theme: AppState["theme"];
|
|
12
|
+
}) => JSX.Element;
|
|
13
|
+
export default RoomDialog;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PRECEDING_ELEMENT_KEY } from "../../constants";
|
|
2
|
+
import { ExcalidrawElement } from "../../element/types";
|
|
3
|
+
import { AppState } from "../../types";
|
|
4
|
+
export declare type ReconciledElements = readonly ExcalidrawElement[] & {
|
|
5
|
+
_brand: "reconciledElements";
|
|
6
|
+
};
|
|
7
|
+
export declare type BroadcastedExcalidrawElement = ExcalidrawElement & {
|
|
8
|
+
[PRECEDING_ELEMENT_KEY]?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const reconcileElements: (localElements: readonly ExcalidrawElement[], remoteElements: readonly BroadcastedExcalidrawElement[], localAppState: AppState) => ReconciledElements;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { NonDeletedExcalidrawElement } from "../../element/types";
|
|
3
|
+
import { AppState, BinaryFiles } from "../../types";
|
|
4
|
+
export declare const ExportToExcalidrawPlus: React.FC<{
|
|
5
|
+
elements: readonly NonDeletedExcalidrawElement[];
|
|
6
|
+
appState: AppState;
|
|
7
|
+
files: BinaryFiles;
|
|
8
|
+
onError: (error: Error) => void;
|
|
9
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const excalidrawPlusIcon: JSX.Element;
|
|
@@ -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/frame.d.ts
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { ExcalidrawElement, ExcalidrawFrameElement, NonDeleted, NonDeletedExcalidrawElement } from "./element/types";
|
|
2
|
-
import { AppClassProperties, AppState } from "./types";
|
|
3
|
-
import { ExcalidrawElementsIncludingDeleted } from "./scene/Scene";
|
|
4
|
-
export declare const bindElementsToFramesAfterDuplication: (nextElements: ExcalidrawElement[], oldElements: readonly ExcalidrawElement[], oldIdToDuplicatedId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>) => void;
|
|
5
|
-
export declare const getElementsCompletelyInFrame: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameElement) => ExcalidrawElement[];
|
|
6
|
-
export declare const isElementContainingFrame: (elements: readonly ExcalidrawElement[], element: ExcalidrawElement, frame: ExcalidrawFrameElement) => boolean;
|
|
7
|
-
export declare const getElementsIntersectingFrame: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameElement) => ExcalidrawElement[];
|
|
8
|
-
export declare const elementsAreInFrameBounds: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameElement) => boolean;
|
|
9
|
-
export declare const elementOverlapsWithFrame: (element: ExcalidrawElement, frame: ExcalidrawFrameElement) => boolean;
|
|
10
|
-
export declare const isCursorInFrame: (cursorCoords: {
|
|
11
|
-
x: number;
|
|
12
|
-
y: number;
|
|
13
|
-
}, frame: NonDeleted<ExcalidrawFrameElement>) => boolean;
|
|
14
|
-
export declare const groupsAreAtLeastIntersectingTheFrame: (elements: readonly NonDeletedExcalidrawElement[], groupIds: readonly string[], frame: ExcalidrawFrameElement) => boolean;
|
|
15
|
-
export declare const groupsAreCompletelyOutOfFrame: (elements: readonly NonDeletedExcalidrawElement[], groupIds: readonly string[], frame: ExcalidrawFrameElement) => boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Returns a map of frameId to frame elements. Includes empty frames.
|
|
18
|
-
*/
|
|
19
|
-
export declare const groupByFrames: (elements: readonly ExcalidrawElement[]) => Map<string, ExcalidrawElement[]>;
|
|
20
|
-
export declare const getFrameElements: (allElements: ExcalidrawElementsIncludingDeleted, frameId: string) => ExcalidrawElement[];
|
|
21
|
-
export declare const getElementsInResizingFrame: (allElements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameElement, appState: AppState) => ExcalidrawElement[];
|
|
22
|
-
export declare const getElementsInNewFrame: (allElements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameElement) => ExcalidrawElement[];
|
|
23
|
-
export declare const getContainingFrame: (element: ExcalidrawElement, elementsMap?: Map<string, ExcalidrawElement>) => ExcalidrawFrameElement | null;
|
|
24
|
-
export declare const addElementsToFrame: (allElements: ExcalidrawElementsIncludingDeleted, elementsToAdd: NonDeletedExcalidrawElement[], frame: ExcalidrawFrameElement) => ExcalidrawElement[];
|
|
25
|
-
export declare const removeElementsFromFrame: (allElements: ExcalidrawElementsIncludingDeleted, elementsToRemove: NonDeletedExcalidrawElement[], appState: AppState) => ExcalidrawElement[];
|
|
26
|
-
export declare const removeAllElementsFromFrame: (allElements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameElement, appState: AppState) => ExcalidrawElement[];
|
|
27
|
-
export declare const replaceAllElementsInFrame: (allElements: ExcalidrawElementsIncludingDeleted, nextElementsInFrame: ExcalidrawElement[], frame: ExcalidrawFrameElement, appState: AppState) => ExcalidrawElement[];
|
|
28
|
-
/** does not mutate elements, but return new ones */
|
|
29
|
-
export declare const updateFrameMembershipOfSelectedElements: (allElements: ExcalidrawElementsIncludingDeleted, appState: AppState, app: AppClassProperties) => ExcalidrawElementsIncludingDeleted;
|
|
30
|
-
/**
|
|
31
|
-
* filters out elements that are inside groups that contain a frame element
|
|
32
|
-
* anywhere in the group tree
|
|
33
|
-
*/
|
|
34
|
-
export declare const omitGroupsContainingFrames: (allElements: ExcalidrawElementsIncludingDeleted, selectedElements?: readonly ExcalidrawElement[]) => ExcalidrawElement[];
|
|
35
|
-
/**
|
|
36
|
-
* depending on the appState, return target frame, which is the frame the given element
|
|
37
|
-
* is going to be added to or remove from
|
|
38
|
-
*/
|
|
39
|
-
export declare const getTargetFrame: (element: ExcalidrawElement, appState: AppState) => ExcalidrawFrameElement | null;
|
|
40
|
-
export declare const isElementInFrame: (element: ExcalidrawElement, allElements: ExcalidrawElementsIncludingDeleted, appState: AppState) => boolean;
|
|
1
|
+
import { ExcalidrawElement, ExcalidrawFrameElement, NonDeleted, NonDeletedExcalidrawElement } from "./element/types";
|
|
2
|
+
import { AppClassProperties, AppState } from "./types";
|
|
3
|
+
import { ExcalidrawElementsIncludingDeleted } from "./scene/Scene";
|
|
4
|
+
export declare const bindElementsToFramesAfterDuplication: (nextElements: ExcalidrawElement[], oldElements: readonly ExcalidrawElement[], oldIdToDuplicatedId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>) => void;
|
|
5
|
+
export declare const getElementsCompletelyInFrame: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameElement) => ExcalidrawElement[];
|
|
6
|
+
export declare const isElementContainingFrame: (elements: readonly ExcalidrawElement[], element: ExcalidrawElement, frame: ExcalidrawFrameElement) => boolean;
|
|
7
|
+
export declare const getElementsIntersectingFrame: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameElement) => ExcalidrawElement[];
|
|
8
|
+
export declare const elementsAreInFrameBounds: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameElement) => boolean;
|
|
9
|
+
export declare const elementOverlapsWithFrame: (element: ExcalidrawElement, frame: ExcalidrawFrameElement) => boolean;
|
|
10
|
+
export declare const isCursorInFrame: (cursorCoords: {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
}, frame: NonDeleted<ExcalidrawFrameElement>) => boolean;
|
|
14
|
+
export declare const groupsAreAtLeastIntersectingTheFrame: (elements: readonly NonDeletedExcalidrawElement[], groupIds: readonly string[], frame: ExcalidrawFrameElement) => boolean;
|
|
15
|
+
export declare const groupsAreCompletelyOutOfFrame: (elements: readonly NonDeletedExcalidrawElement[], groupIds: readonly string[], frame: ExcalidrawFrameElement) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Returns a map of frameId to frame elements. Includes empty frames.
|
|
18
|
+
*/
|
|
19
|
+
export declare const groupByFrames: (elements: readonly ExcalidrawElement[]) => Map<string, ExcalidrawElement[]>;
|
|
20
|
+
export declare const getFrameElements: (allElements: ExcalidrawElementsIncludingDeleted, frameId: string) => ExcalidrawElement[];
|
|
21
|
+
export declare const getElementsInResizingFrame: (allElements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameElement, appState: AppState) => ExcalidrawElement[];
|
|
22
|
+
export declare const getElementsInNewFrame: (allElements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameElement) => ExcalidrawElement[];
|
|
23
|
+
export declare const getContainingFrame: (element: ExcalidrawElement, elementsMap?: Map<string, ExcalidrawElement>) => ExcalidrawFrameElement | null;
|
|
24
|
+
export declare const addElementsToFrame: (allElements: ExcalidrawElementsIncludingDeleted, elementsToAdd: NonDeletedExcalidrawElement[], frame: ExcalidrawFrameElement) => ExcalidrawElement[];
|
|
25
|
+
export declare const removeElementsFromFrame: (allElements: ExcalidrawElementsIncludingDeleted, elementsToRemove: NonDeletedExcalidrawElement[], appState: AppState) => ExcalidrawElement[];
|
|
26
|
+
export declare const removeAllElementsFromFrame: (allElements: ExcalidrawElementsIncludingDeleted, frame: ExcalidrawFrameElement, appState: AppState) => ExcalidrawElement[];
|
|
27
|
+
export declare const replaceAllElementsInFrame: (allElements: ExcalidrawElementsIncludingDeleted, nextElementsInFrame: ExcalidrawElement[], frame: ExcalidrawFrameElement, appState: AppState) => ExcalidrawElement[];
|
|
28
|
+
/** does not mutate elements, but return new ones */
|
|
29
|
+
export declare const updateFrameMembershipOfSelectedElements: (allElements: ExcalidrawElementsIncludingDeleted, appState: AppState, app: AppClassProperties) => ExcalidrawElementsIncludingDeleted;
|
|
30
|
+
/**
|
|
31
|
+
* filters out elements that are inside groups that contain a frame element
|
|
32
|
+
* anywhere in the group tree
|
|
33
|
+
*/
|
|
34
|
+
export declare const omitGroupsContainingFrames: (allElements: ExcalidrawElementsIncludingDeleted, selectedElements?: readonly ExcalidrawElement[]) => ExcalidrawElement[];
|
|
35
|
+
/**
|
|
36
|
+
* depending on the appState, return target frame, which is the frame the given element
|
|
37
|
+
* is going to be added to or remove from
|
|
38
|
+
*/
|
|
39
|
+
export declare const getTargetFrame: (element: ExcalidrawElement, appState: AppState) => ExcalidrawFrameElement | null;
|
|
40
|
+
export declare const isElementInFrame: (element: ExcalidrawElement, allElements: ExcalidrawElementsIncludingDeleted, appState: AppState) => boolean;
|