mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
Factor out collaboration code (#2313)
Co-authored-by: Lipis <lipiridis@gmail.com> Co-authored-by: dwelle <luzar.david@gmail.com>
This commit is contained in:
parent
d8a0dc3b4d
commit
e617ccc252
41 changed files with 2250 additions and 2018 deletions
43
src/types.ts
43
src/types.ts
|
@ -11,11 +11,11 @@ import {
|
|||
} from "./element/types";
|
||||
import { SHAPES } from "./shapes";
|
||||
import { Point as RoughPoint } from "roughjs/bin/geometry";
|
||||
import { SocketUpdateDataSource } from "./data";
|
||||
import { LinearElementEditor } from "./element/linearElementEditor";
|
||||
import { SuggestedBinding } from "./element/binding";
|
||||
import { ImportedDataState } from "./data/types";
|
||||
import { ExcalidrawImperativeAPI } from "./components/App";
|
||||
import type { ResolvablePromise } from "./utils";
|
||||
|
||||
export type FlooredNumber = number & { _brand: "FlooredNumber" };
|
||||
export type Point = Readonly<RoughPoint>;
|
||||
|
@ -69,8 +69,6 @@ export type AppState = {
|
|||
cursorButton: "up" | "down";
|
||||
scrolledOutside: boolean;
|
||||
name: string;
|
||||
username: string;
|
||||
isCollaborating: boolean;
|
||||
isResizing: boolean;
|
||||
isRotating: boolean;
|
||||
zoom: Zoom;
|
||||
|
@ -78,7 +76,6 @@ export type AppState = {
|
|||
lastPointerDownWith: PointerType;
|
||||
selectedElementIds: { [id: string]: boolean };
|
||||
previousSelectedElementIds: { [id: string]: boolean };
|
||||
collaborators: Map<string, Collaborator>;
|
||||
shouldCacheIgnoreZoom: boolean;
|
||||
showShortcutsDialog: boolean;
|
||||
zenModeEnabled: boolean;
|
||||
|
@ -97,6 +94,7 @@ export type AppState = {
|
|||
|
||||
isLibraryOpen: boolean;
|
||||
fileHandle: import("browser-nativefs").FileSystemHandle | null;
|
||||
collaborators: Map<string, Collaborator>;
|
||||
};
|
||||
|
||||
export type NormalizedZoomValue = number & { _brand: "normalizedZoom" };
|
||||
|
@ -126,16 +124,22 @@ export declare class GestureEvent extends UIEvent {
|
|||
readonly scale: number;
|
||||
}
|
||||
|
||||
export type SocketUpdateData = SocketUpdateDataSource[keyof SocketUpdateDataSource] & {
|
||||
_brand: "socketUpdateData";
|
||||
};
|
||||
|
||||
export type LibraryItem = readonly NonDeleted<ExcalidrawElement>[];
|
||||
export type LibraryItems = readonly LibraryItem[];
|
||||
|
||||
export type ExcalidrawAPIRefValue =
|
||||
| (ExcalidrawImperativeAPI & {
|
||||
readyPromise: ResolvablePromise<ExcalidrawImperativeAPI>;
|
||||
ready: true;
|
||||
})
|
||||
| {
|
||||
readyPromise: ResolvablePromise<ExcalidrawImperativeAPI>;
|
||||
ready: false;
|
||||
};
|
||||
|
||||
export interface ExcalidrawProps {
|
||||
width: number;
|
||||
height: number;
|
||||
width?: number;
|
||||
height?: number;
|
||||
/** if not supplied, calculated by Excalidraw */
|
||||
offsetLeft?: number;
|
||||
/** if not supplied, calculated by Excalidraw */
|
||||
|
@ -144,10 +148,23 @@ export interface ExcalidrawProps {
|
|||
elements: readonly ExcalidrawElement[],
|
||||
appState: AppState,
|
||||
) => void;
|
||||
initialData?: ImportedDataState;
|
||||
initialData?: ImportedDataState | null | Promise<ImportedDataState | null>;
|
||||
user?: {
|
||||
name?: string | null;
|
||||
};
|
||||
onUsernameChange?: (username: string) => void;
|
||||
forwardedRef: ForwardRef<ExcalidrawImperativeAPI>;
|
||||
excalidrawRef?: ForwardRef<ExcalidrawAPIRefValue>;
|
||||
onCollabButtonClick?: () => void;
|
||||
isCollaborating?: boolean;
|
||||
onPointerUpdate?: (payload: {
|
||||
pointer: { x: number; y: number };
|
||||
button: "down" | "up";
|
||||
pointersMap: Gesture["pointers"];
|
||||
}) => void;
|
||||
}
|
||||
|
||||
export type SceneData = {
|
||||
elements?: ImportedDataState["elements"];
|
||||
appState?: ImportedDataState["appState"];
|
||||
collaborators?: Map<string, Collaborator>;
|
||||
commitToHistory?: boolean;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue