@excalidraw/excalidraw 0.16.1-4c35eba → 0.16.1-aaf73c8
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/CHANGELOG.md +6 -0
- package/dist/excalidraw.development.js +140 -63
- package/dist/excalidraw.production.min.js +1 -1
- package/package.json +1 -1
- package/types/actions/actionAddToLibrary.d.ts +9 -27
- package/types/actions/actionAlign.d.ts +8 -8
- package/types/actions/actionBoundText.d.ts +6 -18
- package/types/actions/actionCanvas.d.ts +57 -123
- package/types/actions/actionClipboard.d.ts +19 -49
- package/types/actions/actionDeleteSelected.d.ts +11 -29
- package/types/actions/actionDistribute.d.ts +4 -4
- package/types/actions/actionDuplicateSelection.d.ts +2 -2
- package/types/actions/actionElementLock.d.ts +8 -20
- package/types/actions/actionExport.d.ts +42 -96
- package/types/actions/actionFinalize.d.ts +8 -20
- package/types/actions/actionFlip.d.ts +4 -4
- package/types/actions/actionFrame.d.ts +11 -29
- package/types/actions/actionGroup.d.ts +10 -22
- package/types/actions/actionLinearEditor.d.ts +3 -9
- package/types/actions/actionMenu.d.ts +11 -29
- package/types/actions/actionProperties.d.ts +43 -121
- package/types/actions/actionSelectAll.d.ts +5 -11
- package/types/actions/actionStyles.d.ts +7 -13
- package/types/actions/actionToggleGridMode.d.ts +5 -11
- package/types/actions/actionToggleObjectsSnapMode.d.ts +5 -11
- package/types/actions/actionToggleStats.d.ts +5 -11
- package/types/actions/actionToggleViewMode.d.ts +5 -11
- package/types/actions/actionToggleZenMode.d.ts +5 -11
- package/types/actions/actionZindex.d.ts +8 -8
- package/types/appState.d.ts +5 -11
- package/types/components/Actions.d.ts +4 -9
- package/types/components/App.d.ts +15 -5
- package/types/components/LaserTool/LaserPathManager.d.ts +28 -0
- package/types/components/LaserTool/LaserPointerButton.d.ts +10 -0
- package/types/components/LaserTool/LaserTool.d.ts +7 -0
- package/types/components/LayerUI.d.ts +2 -5
- package/types/components/MobileMenu.d.ts +1 -5
- package/types/components/Sidebar/Sidebar.d.ts +1 -1
- package/types/components/Stack.d.ts +2 -2
- package/types/components/dropdownMenu/DropdownMenu.d.ts +6 -3
- package/types/components/dropdownMenu/DropdownMenuItem.d.ts +2 -1
- package/types/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -1
- package/types/components/dropdownMenu/DropdownMenuItemLink.d.ts +2 -1
- package/types/components/dropdownMenu/common.d.ts +1 -1
- package/types/components/icons.d.ts +2 -0
- package/types/components/main-menu/MainMenu.d.ts +6 -3
- package/types/cursor.d.ts +5 -0
- package/types/element/Hyperlink.d.ts +5 -11
- package/types/element/embeddable.d.ts +3 -9
- package/types/element/linearElementEditor.d.ts +3 -9
- package/types/element/mutateElement.d.ts +1 -1
- package/types/frame.d.ts +5 -0
- package/types/types.d.ts +16 -17
- package/types/utils.d.ts +3 -8
|
@@ -38,15 +38,9 @@ export declare const actionToggleStats: {
|
|
|
38
38
|
editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
39
39
|
editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
40
40
|
activeTool: {
|
|
41
|
-
lastActiveTool: import("../types").
|
|
41
|
+
lastActiveTool: import("../types").ActiveTool | null;
|
|
42
42
|
locked: boolean;
|
|
43
|
-
} & (
|
|
44
|
-
type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "image" | "frame" | "freedraw" | "eraser" | "hand";
|
|
45
|
-
customType: null;
|
|
46
|
-
} | {
|
|
47
|
-
type: "custom";
|
|
48
|
-
customType: string;
|
|
49
|
-
});
|
|
43
|
+
} & import("../types").ActiveTool;
|
|
50
44
|
penMode: boolean;
|
|
51
45
|
penDetected: boolean;
|
|
52
46
|
exportBackground: boolean;
|
|
@@ -124,7 +118,7 @@ export declare const actionToggleStats: {
|
|
|
124
118
|
pendingImageElementId: string | null;
|
|
125
119
|
showHyperlinkPopup: false | "editor" | "info";
|
|
126
120
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
127
|
-
snapLines: import("../snapping").SnapLine[];
|
|
121
|
+
snapLines: readonly import("../snapping").SnapLine[];
|
|
128
122
|
originSnapOffset: {
|
|
129
123
|
x: number;
|
|
130
124
|
y: number;
|
|
@@ -135,7 +129,7 @@ export declare const actionToggleStats: {
|
|
|
135
129
|
};
|
|
136
130
|
checked: (appState: Readonly<import("../types").AppState>) => boolean;
|
|
137
131
|
contextItemLabel: string;
|
|
138
|
-
keyTest: (event:
|
|
132
|
+
keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
|
|
139
133
|
} & {
|
|
140
|
-
keyTest?: ((event:
|
|
134
|
+
keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
|
|
141
135
|
};
|
|
@@ -39,15 +39,9 @@ export declare const actionToggleViewMode: {
|
|
|
39
39
|
editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
40
40
|
editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
41
41
|
activeTool: {
|
|
42
|
-
lastActiveTool: import("../types").
|
|
42
|
+
lastActiveTool: import("../types").ActiveTool | null;
|
|
43
43
|
locked: boolean;
|
|
44
|
-
} & (
|
|
45
|
-
type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "image" | "frame" | "freedraw" | "eraser" | "hand";
|
|
46
|
-
customType: null;
|
|
47
|
-
} | {
|
|
48
|
-
type: "custom";
|
|
49
|
-
customType: string;
|
|
50
|
-
});
|
|
44
|
+
} & import("../types").ActiveTool;
|
|
51
45
|
penMode: boolean;
|
|
52
46
|
penDetected: boolean;
|
|
53
47
|
exportBackground: boolean;
|
|
@@ -125,7 +119,7 @@ export declare const actionToggleViewMode: {
|
|
|
125
119
|
pendingImageElementId: string | null;
|
|
126
120
|
showHyperlinkPopup: false | "editor" | "info";
|
|
127
121
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
128
|
-
snapLines: import("../snapping").SnapLine[];
|
|
122
|
+
snapLines: readonly import("../snapping").SnapLine[];
|
|
129
123
|
originSnapOffset: {
|
|
130
124
|
x: number;
|
|
131
125
|
y: number;
|
|
@@ -137,7 +131,7 @@ export declare const actionToggleViewMode: {
|
|
|
137
131
|
checked: (appState: Readonly<import("../types").AppState>) => boolean;
|
|
138
132
|
predicate: (elements: readonly import("../element/types").ExcalidrawElement[], appState: import("../types").AppState, appProps: import("../types").ExcalidrawProps) => boolean;
|
|
139
133
|
contextItemLabel: string;
|
|
140
|
-
keyTest: (event:
|
|
134
|
+
keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
|
|
141
135
|
} & {
|
|
142
|
-
keyTest?: ((event:
|
|
136
|
+
keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
|
|
143
137
|
};
|
|
@@ -39,15 +39,9 @@ export declare const actionToggleZenMode: {
|
|
|
39
39
|
editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
40
40
|
editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
41
41
|
activeTool: {
|
|
42
|
-
lastActiveTool: import("../types").
|
|
42
|
+
lastActiveTool: import("../types").ActiveTool | null;
|
|
43
43
|
locked: boolean;
|
|
44
|
-
} & (
|
|
45
|
-
type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "image" | "frame" | "freedraw" | "eraser" | "hand";
|
|
46
|
-
customType: null;
|
|
47
|
-
} | {
|
|
48
|
-
type: "custom";
|
|
49
|
-
customType: string;
|
|
50
|
-
});
|
|
44
|
+
} & import("../types").ActiveTool;
|
|
51
45
|
penMode: boolean;
|
|
52
46
|
penDetected: boolean;
|
|
53
47
|
exportBackground: boolean;
|
|
@@ -125,7 +119,7 @@ export declare const actionToggleZenMode: {
|
|
|
125
119
|
pendingImageElementId: string | null;
|
|
126
120
|
showHyperlinkPopup: false | "editor" | "info";
|
|
127
121
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
128
|
-
snapLines: import("../snapping").SnapLine[];
|
|
122
|
+
snapLines: readonly import("../snapping").SnapLine[];
|
|
129
123
|
originSnapOffset: {
|
|
130
124
|
x: number;
|
|
131
125
|
y: number;
|
|
@@ -137,7 +131,7 @@ export declare const actionToggleZenMode: {
|
|
|
137
131
|
checked: (appState: Readonly<import("../types").AppState>) => boolean;
|
|
138
132
|
predicate: (elements: readonly import("../element/types").ExcalidrawElement[], appState: import("../types").AppState, appProps: import("../types").ExcalidrawProps) => boolean;
|
|
139
133
|
contextItemLabel: string;
|
|
140
|
-
keyTest: (event:
|
|
134
|
+
keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
|
|
141
135
|
} & {
|
|
142
|
-
keyTest?: ((event:
|
|
136
|
+
keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
|
|
143
137
|
};
|
|
@@ -11,10 +11,10 @@ export declare const actionSendBackward: {
|
|
|
11
11
|
};
|
|
12
12
|
contextItemLabel: string;
|
|
13
13
|
keyPriority: number;
|
|
14
|
-
keyTest: (event:
|
|
14
|
+
keyTest: (event: React.KeyboardEvent<Element> | KeyboardEvent) => boolean;
|
|
15
15
|
PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
|
|
16
16
|
} & {
|
|
17
|
-
keyTest?: ((event:
|
|
17
|
+
keyTest?: ((event: React.KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
|
|
18
18
|
};
|
|
19
19
|
export declare const actionBringForward: {
|
|
20
20
|
name: "bringForward";
|
|
@@ -28,10 +28,10 @@ export declare const actionBringForward: {
|
|
|
28
28
|
};
|
|
29
29
|
contextItemLabel: string;
|
|
30
30
|
keyPriority: number;
|
|
31
|
-
keyTest: (event:
|
|
31
|
+
keyTest: (event: React.KeyboardEvent<Element> | KeyboardEvent) => boolean;
|
|
32
32
|
PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
|
|
33
33
|
} & {
|
|
34
|
-
keyTest?: ((event:
|
|
34
|
+
keyTest?: ((event: React.KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
|
|
35
35
|
};
|
|
36
36
|
export declare const actionSendToBack: {
|
|
37
37
|
name: "sendToBack";
|
|
@@ -44,10 +44,10 @@ export declare const actionSendToBack: {
|
|
|
44
44
|
commitToHistory: true;
|
|
45
45
|
};
|
|
46
46
|
contextItemLabel: string;
|
|
47
|
-
keyTest: (event:
|
|
47
|
+
keyTest: (event: React.KeyboardEvent<Element> | KeyboardEvent) => boolean;
|
|
48
48
|
PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
|
|
49
49
|
} & {
|
|
50
|
-
keyTest?: ((event:
|
|
50
|
+
keyTest?: ((event: React.KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
|
|
51
51
|
};
|
|
52
52
|
export declare const actionBringToFront: {
|
|
53
53
|
name: "bringToFront";
|
|
@@ -60,8 +60,8 @@ export declare const actionBringToFront: {
|
|
|
60
60
|
commitToHistory: true;
|
|
61
61
|
};
|
|
62
62
|
contextItemLabel: string;
|
|
63
|
-
keyTest: (event:
|
|
63
|
+
keyTest: (event: React.KeyboardEvent<Element> | KeyboardEvent) => boolean;
|
|
64
64
|
PanelComponent: ({ updateData, appState }: import("./types").PanelComponentProps) => JSX.Element;
|
|
65
65
|
} & {
|
|
66
|
-
keyTest?: ((event:
|
|
66
|
+
keyTest?: ((event: React.KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
|
|
67
67
|
};
|
package/types/appState.d.ts
CHANGED
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
import { AppState, NormalizedZoomValue } from "./types";
|
|
2
2
|
export declare const getDefaultAppState: () => Omit<AppState, "offsetTop" | "offsetLeft" | "width" | "height">;
|
|
3
3
|
export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>) => {
|
|
4
|
-
theme?: import("./element/types").Theme | undefined;
|
|
5
|
-
name?: string | undefined;
|
|
6
4
|
activeTool?: ({
|
|
7
|
-
lastActiveTool: import("./types").
|
|
5
|
+
lastActiveTool: import("./types").ActiveTool | null;
|
|
8
6
|
locked: boolean;
|
|
9
|
-
} & (
|
|
10
|
-
|
|
11
|
-
customType: null;
|
|
12
|
-
} | {
|
|
13
|
-
type: "custom";
|
|
14
|
-
customType: string;
|
|
15
|
-
})) | undefined;
|
|
16
|
-
penMode?: boolean | undefined;
|
|
7
|
+
} & import("./types").ActiveTool) | undefined;
|
|
8
|
+
name?: string | undefined;
|
|
17
9
|
showWelcomeScreen?: boolean | undefined;
|
|
10
|
+
penMode?: boolean | undefined;
|
|
18
11
|
penDetected?: boolean | undefined;
|
|
19
12
|
exportBackground?: boolean | undefined;
|
|
20
13
|
exportEmbedScene?: boolean | undefined;
|
|
@@ -56,6 +49,7 @@ export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>)
|
|
|
56
49
|
} | undefined;
|
|
57
50
|
shouldCacheIgnoreZoom?: boolean | undefined;
|
|
58
51
|
zenModeEnabled?: boolean | undefined;
|
|
52
|
+
theme?: import("./element/types").Theme | undefined;
|
|
59
53
|
gridSize?: number | null | undefined;
|
|
60
54
|
selectedGroupIds?: {
|
|
61
55
|
[groupId: string]: boolean;
|
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { ActionManager } from "../actions/manager";
|
|
3
|
-
import { ExcalidrawElement
|
|
4
|
-
import { UIAppState, Zoom } from "../types";
|
|
2
|
+
import { ExcalidrawElement } from "../element/types";
|
|
3
|
+
import { AppClassProperties, UIAppState, Zoom } from "../types";
|
|
5
4
|
import "./Actions.scss";
|
|
6
5
|
export declare const SelectedShapeActions: ({ appState, elements, renderAction, }: {
|
|
7
6
|
appState: UIAppState;
|
|
8
7
|
elements: readonly ExcalidrawElement[];
|
|
9
8
|
renderAction: ActionManager["renderAction"];
|
|
10
9
|
}) => JSX.Element;
|
|
11
|
-
export declare const ShapesSwitcher: ({
|
|
12
|
-
interactiveCanvas: HTMLCanvasElement | null;
|
|
10
|
+
export declare const ShapesSwitcher: ({ activeTool, appState, app, }: {
|
|
13
11
|
activeTool: UIAppState["activeTool"];
|
|
14
|
-
setAppState: React.Component<any, UIAppState>["setState"];
|
|
15
|
-
onImageAction: (data: {
|
|
16
|
-
pointerType: PointerType | null;
|
|
17
|
-
}) => void;
|
|
18
12
|
appState: UIAppState;
|
|
13
|
+
app: AppClassProperties;
|
|
19
14
|
}) => JSX.Element;
|
|
20
15
|
export declare const ZoomActions: ({ renderAction, zoom, }: {
|
|
21
16
|
renderAction: ActionManager["renderAction"];
|
|
@@ -6,9 +6,10 @@ import { LinearElementEditor } from "../element/linearElementEditor";
|
|
|
6
6
|
import { ExcalidrawElement, NonDeletedExcalidrawElement } from "../element/types";
|
|
7
7
|
import History from "../history";
|
|
8
8
|
import Scene from "../scene/Scene";
|
|
9
|
-
import { AppClassProperties, AppProps, AppState, ExcalidrawImperativeAPI, BinaryFiles, LibraryItems, SceneData, Device, FrameNameBoundsCache, SidebarName, SidebarTabName } from "../types";
|
|
9
|
+
import { AppClassProperties, AppProps, AppState, ExcalidrawImperativeAPI, BinaryFiles, LibraryItems, SceneData, Device, FrameNameBoundsCache, SidebarName, SidebarTabName, ToolType } from "../types";
|
|
10
10
|
import { FileSystemHandle } from "../data/filesystem";
|
|
11
11
|
import { Renderer } from "../scene/Renderer";
|
|
12
|
+
import { LaserPathManager } from "./LaserTool/LaserPathManager";
|
|
12
13
|
export declare const ExcalidrawContainerContext: React.Context<{
|
|
13
14
|
container: HTMLDivElement | null;
|
|
14
15
|
id: string | null;
|
|
@@ -54,12 +55,13 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
54
55
|
imageCache: AppClassProperties["imageCache"];
|
|
55
56
|
private iFrameRefs;
|
|
56
57
|
hitLinkElement?: NonDeletedExcalidrawElement;
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
lastPointerDownEvent: React.PointerEvent<HTMLElement> | null;
|
|
59
|
+
lastPointerUpEvent: React.PointerEvent<HTMLElement> | PointerEvent | null;
|
|
59
60
|
lastViewportPosition: {
|
|
60
61
|
x: number;
|
|
61
62
|
y: number;
|
|
62
63
|
};
|
|
64
|
+
laserPathManager: LaserPathManager;
|
|
63
65
|
constructor(props: AppProps);
|
|
64
66
|
private onWindowMessage;
|
|
65
67
|
private updateEmbeddableRef;
|
|
@@ -117,7 +119,7 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
117
119
|
outline: boolean;
|
|
118
120
|
clip: boolean;
|
|
119
121
|
}> | ((prevState: AppState["frameRendering"]) => Partial<AppState["frameRendering"]>)) => void;
|
|
120
|
-
togglePenMode: () => void;
|
|
122
|
+
togglePenMode: (force?: boolean) => void;
|
|
121
123
|
onHandToolToggle: () => void;
|
|
122
124
|
/**
|
|
123
125
|
* Zooms on canvas viewport center
|
|
@@ -169,7 +171,15 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
169
171
|
private onKeyDown;
|
|
170
172
|
private onWheel;
|
|
171
173
|
private onKeyUp;
|
|
172
|
-
|
|
174
|
+
setActiveTool: (tool: ({
|
|
175
|
+
type: Exclude<ToolType, "image">;
|
|
176
|
+
} | {
|
|
177
|
+
type: Extract<ToolType, "image">;
|
|
178
|
+
insertOnCanvasDirectly?: boolean;
|
|
179
|
+
}) | {
|
|
180
|
+
type: "custom";
|
|
181
|
+
customType: string;
|
|
182
|
+
}) => void;
|
|
173
183
|
private setCursor;
|
|
174
184
|
private resetCursor;
|
|
175
185
|
/**
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LaserPointer } from "@excalidraw/laser-pointer";
|
|
2
|
+
import App from "../App";
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
LPM: LaserPathManager;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export declare class LaserPathManager {
|
|
9
|
+
private app;
|
|
10
|
+
private ownState;
|
|
11
|
+
private collaboratorsState;
|
|
12
|
+
private rafId;
|
|
13
|
+
private isDrawing;
|
|
14
|
+
private container;
|
|
15
|
+
constructor(app: App);
|
|
16
|
+
destroy(): void;
|
|
17
|
+
startPath(x: number, y: number): void;
|
|
18
|
+
addPointToPath(x: number, y: number): void;
|
|
19
|
+
endPath(): void;
|
|
20
|
+
private updatePath;
|
|
21
|
+
private isRunning;
|
|
22
|
+
start(svg?: SVGSVGElement): void;
|
|
23
|
+
stop(): void;
|
|
24
|
+
loop(): void;
|
|
25
|
+
draw(path: LaserPointer): string;
|
|
26
|
+
updateCollabolatorsState(): void;
|
|
27
|
+
update(): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import "../ToolIcon.scss";
|
|
2
|
+
type LaserPointerIconProps = {
|
|
3
|
+
title?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
checked: boolean;
|
|
6
|
+
onChange?(): void;
|
|
7
|
+
isMobile?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const LaserPointerButton: (props: LaserPointerIconProps) => JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -10,7 +10,6 @@ interface LayerUIProps {
|
|
|
10
10
|
appState: UIAppState;
|
|
11
11
|
files: BinaryFiles;
|
|
12
12
|
canvas: HTMLCanvasElement;
|
|
13
|
-
interactiveCanvas: HTMLCanvasElement | null;
|
|
14
13
|
setAppState: React.Component<any, AppState>["setState"];
|
|
15
14
|
elements: readonly NonDeletedExcalidrawElement[];
|
|
16
15
|
onLockToggle: () => void;
|
|
@@ -21,13 +20,11 @@ interface LayerUIProps {
|
|
|
21
20
|
renderTopRightUI?: ExcalidrawProps["renderTopRightUI"];
|
|
22
21
|
renderCustomStats?: ExcalidrawProps["renderCustomStats"];
|
|
23
22
|
UIOptions: AppProps["UIOptions"];
|
|
24
|
-
onImageAction: (data: {
|
|
25
|
-
insertOnCanvasDirectly: boolean;
|
|
26
|
-
}) => void;
|
|
27
23
|
onExportImage: AppClassProperties["onExportImage"];
|
|
28
24
|
renderWelcomeScreen: boolean;
|
|
29
25
|
children?: React.ReactNode;
|
|
30
26
|
app: AppClassProperties;
|
|
27
|
+
isCollaborating: boolean;
|
|
31
28
|
}
|
|
32
|
-
declare const _default: React.MemoExoticComponent<({ actionManager, appState, files, setAppState, elements, canvas,
|
|
29
|
+
declare const _default: React.MemoExoticComponent<({ actionManager, appState, files, setAppState, elements, canvas, onLockToggle, onHandToolToggle, onPenModeToggle, showExitZenModeBtn, renderTopRightUI, renderCustomStats, UIOptions, onExportImage, renderWelcomeScreen, children, app, isCollaborating, }: LayerUIProps) => JSX.Element>;
|
|
33
30
|
export default _default;
|
|
@@ -12,10 +12,6 @@ type MobileMenuProps = {
|
|
|
12
12
|
onLockToggle: () => void;
|
|
13
13
|
onHandToolToggle: () => void;
|
|
14
14
|
onPenModeToggle: () => void;
|
|
15
|
-
interactiveCanvas: HTMLCanvasElement | null;
|
|
16
|
-
onImageAction: (data: {
|
|
17
|
-
insertOnCanvasDirectly: boolean;
|
|
18
|
-
}) => void;
|
|
19
15
|
renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
|
|
20
16
|
renderCustomStats?: ExcalidrawProps["renderCustomStats"];
|
|
21
17
|
renderSidebars: () => JSX.Element | null;
|
|
@@ -23,5 +19,5 @@ type MobileMenuProps = {
|
|
|
23
19
|
renderWelcomeScreen: boolean;
|
|
24
20
|
app: AppClassProperties;
|
|
25
21
|
};
|
|
26
|
-
export declare const MobileMenu: ({ appState, elements, actionManager, setAppState, onLockToggle, onHandToolToggle, onPenModeToggle,
|
|
22
|
+
export declare const MobileMenu: ({ appState, elements, actionManager, setAppState, onLockToggle, onHandToolToggle, onPenModeToggle, renderTopRightUI, renderCustomStats, renderSidebars, device, renderWelcomeScreen, app, }: MobileMenuProps) => JSX.Element;
|
|
27
23
|
export {};
|
|
@@ -22,7 +22,7 @@ export declare const SidebarInner: React.ForwardRefExoticComponent<Pick<{
|
|
|
22
22
|
docked?: boolean | undefined;
|
|
23
23
|
className?: string | undefined;
|
|
24
24
|
__fallback?: boolean | undefined;
|
|
25
|
-
} & Omit<React.RefAttributes<HTMLDivElement>, "onSelect">, "
|
|
25
|
+
} & Omit<React.RefAttributes<HTMLDivElement>, "onSelect">, "name" | "children" | "key" | "className" | "onDock" | "docked" | "onStateChange" | "__fallback"> & React.RefAttributes<HTMLDivElement>>;
|
|
26
26
|
export declare const Sidebar: React.ForwardRefExoticComponent<{
|
|
27
27
|
name: string;
|
|
28
28
|
children: React.ReactNode;
|
|
@@ -10,7 +10,7 @@ type StackProps = {
|
|
|
10
10
|
ref: React.RefObject<HTMLDivElement>;
|
|
11
11
|
};
|
|
12
12
|
declare const _default: {
|
|
13
|
-
Row: React.ForwardRefExoticComponent<Pick<StackProps, "style" | "
|
|
14
|
-
Col: React.ForwardRefExoticComponent<Pick<StackProps, "style" | "
|
|
13
|
+
Row: React.ForwardRefExoticComponent<Pick<StackProps, "style" | "children" | "align" | "gap" | "className" | "justifyContent"> & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
Col: React.ForwardRefExoticComponent<Pick<StackProps, "style" | "children" | "align" | "gap" | "className" | "justifyContent"> & React.RefAttributes<HTMLDivElement>>;
|
|
15
15
|
};
|
|
16
16
|
export default _default;
|
|
@@ -25,29 +25,32 @@ declare const DropdownMenu: {
|
|
|
25
25
|
displayName: string;
|
|
26
26
|
};
|
|
27
27
|
Item: {
|
|
28
|
-
({ icon, onSelect, children, shortcut, className, ...rest }: {
|
|
28
|
+
({ icon, onSelect, children, shortcut, className, selected, ...rest }: {
|
|
29
29
|
icon?: JSX.Element | undefined;
|
|
30
30
|
onSelect: (event: Event) => void;
|
|
31
31
|
children: React.ReactNode;
|
|
32
32
|
shortcut?: string | undefined;
|
|
33
|
+
selected?: boolean | undefined;
|
|
33
34
|
className?: string | undefined;
|
|
34
35
|
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onSelect">): JSX.Element;
|
|
35
36
|
displayName: string;
|
|
36
37
|
};
|
|
37
38
|
ItemLink: {
|
|
38
|
-
({ icon, shortcut, href, children, onSelect, className, ...rest }: {
|
|
39
|
+
({ icon, shortcut, href, children, onSelect, className, selected, ...rest }: {
|
|
39
40
|
href: string;
|
|
40
41
|
icon?: JSX.Element | undefined;
|
|
41
42
|
children: React.ReactNode;
|
|
42
43
|
shortcut?: string | undefined;
|
|
43
44
|
className?: string | undefined;
|
|
45
|
+
selected?: boolean | undefined;
|
|
44
46
|
onSelect?: ((event: Event) => void) | undefined;
|
|
45
47
|
} & React.AnchorHTMLAttributes<HTMLAnchorElement>): JSX.Element;
|
|
46
48
|
displayName: string;
|
|
47
49
|
};
|
|
48
|
-
ItemCustom: ({ children, className, ...rest }: {
|
|
50
|
+
ItemCustom: ({ children, className, selected, ...rest }: {
|
|
49
51
|
children: React.ReactNode;
|
|
50
52
|
className?: string | undefined;
|
|
53
|
+
selected?: boolean | undefined;
|
|
51
54
|
} & React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
52
55
|
Group: {
|
|
53
56
|
({ children, className, style, title, }: {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
declare const DropdownMenuItem: {
|
|
3
|
-
({ icon, onSelect, children, shortcut, className, ...rest }: {
|
|
3
|
+
({ icon, onSelect, children, shortcut, className, selected, ...rest }: {
|
|
4
4
|
icon?: JSX.Element | undefined;
|
|
5
5
|
onSelect: (event: Event) => void;
|
|
6
6
|
children: React.ReactNode;
|
|
7
7
|
shortcut?: string | undefined;
|
|
8
|
+
selected?: boolean | undefined;
|
|
8
9
|
className?: string | undefined;
|
|
9
10
|
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onSelect">): JSX.Element;
|
|
10
11
|
displayName: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
declare const DropdownMenuItemCustom: ({ children, className, ...rest }: {
|
|
2
|
+
declare const DropdownMenuItemCustom: ({ children, className, selected, ...rest }: {
|
|
3
3
|
children: React.ReactNode;
|
|
4
4
|
className?: string | undefined;
|
|
5
|
+
selected?: boolean | undefined;
|
|
5
6
|
} & React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
6
7
|
export default DropdownMenuItemCustom;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
declare const DropdownMenuItemLink: {
|
|
3
|
-
({ icon, shortcut, href, children, onSelect, className, ...rest }: {
|
|
3
|
+
({ icon, shortcut, href, children, onSelect, className, selected, ...rest }: {
|
|
4
4
|
href: string;
|
|
5
5
|
icon?: JSX.Element | undefined;
|
|
6
6
|
children: React.ReactNode;
|
|
7
7
|
shortcut?: string | undefined;
|
|
8
8
|
className?: string | undefined;
|
|
9
|
+
selected?: boolean | undefined;
|
|
9
10
|
onSelect?: ((event: Event) => void) | undefined;
|
|
10
11
|
} & React.AnchorHTMLAttributes<HTMLAnchorElement>): JSX.Element;
|
|
11
12
|
displayName: string;
|
|
@@ -2,5 +2,5 @@ import React from "react";
|
|
|
2
2
|
export declare const DropdownMenuContentPropsContext: React.Context<{
|
|
3
3
|
onSelect?: ((event: Event) => void) | undefined;
|
|
4
4
|
}>;
|
|
5
|
-
export declare const getDropdownMenuItemClassName: (className?: string) => string;
|
|
5
|
+
export declare const getDropdownMenuItemClassName: (className?: string, selected?: boolean) => string;
|
|
6
6
|
export declare const useHandleDropdownMenuItemClick: (origOnClick: React.MouseEventHandler<HTMLAnchorElement | HTMLButtonElement> | undefined, onSelect: ((event: Event) => void) | undefined) => (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement, MouseEvent>) => void;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Theme } from "../element/types";
|
|
3
|
+
export declare const iconFillColor: (theme: Theme) => string;
|
|
3
4
|
type Opts = {
|
|
4
5
|
width?: number;
|
|
5
6
|
height?: number;
|
|
@@ -149,4 +150,5 @@ export declare const alertTriangleIcon: JSX.Element;
|
|
|
149
150
|
export declare const eyeDropperIcon: JSX.Element;
|
|
150
151
|
export declare const extraToolsIcon: JSX.Element;
|
|
151
152
|
export declare const frameToolIcon: JSX.Element;
|
|
153
|
+
export declare const laserPointerToolIcon: JSX.Element;
|
|
152
154
|
export {};
|
|
@@ -19,29 +19,32 @@ declare const MainMenu: React.FC<{
|
|
|
19
19
|
displayName: string;
|
|
20
20
|
};
|
|
21
21
|
Item: {
|
|
22
|
-
({ icon, onSelect, children, shortcut, className, ...rest }: {
|
|
22
|
+
({ icon, onSelect, children, shortcut, className, selected, ...rest }: {
|
|
23
23
|
icon?: JSX.Element | undefined;
|
|
24
24
|
onSelect: (event: Event) => void;
|
|
25
25
|
children: React.ReactNode;
|
|
26
26
|
shortcut?: string | undefined;
|
|
27
|
+
selected?: boolean | undefined;
|
|
27
28
|
className?: string | undefined;
|
|
28
29
|
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onSelect">): JSX.Element;
|
|
29
30
|
displayName: string;
|
|
30
31
|
};
|
|
31
32
|
ItemLink: {
|
|
32
|
-
({ icon, shortcut, href, children, onSelect, className, ...rest }: {
|
|
33
|
+
({ icon, shortcut, href, children, onSelect, className, selected, ...rest }: {
|
|
33
34
|
href: string;
|
|
34
35
|
icon?: JSX.Element | undefined;
|
|
35
36
|
children: React.ReactNode;
|
|
36
37
|
shortcut?: string | undefined;
|
|
37
38
|
className?: string | undefined;
|
|
39
|
+
selected?: boolean | undefined;
|
|
38
40
|
onSelect?: ((event: Event) => void) | undefined;
|
|
39
41
|
} & React.AnchorHTMLAttributes<HTMLAnchorElement>): JSX.Element;
|
|
40
42
|
displayName: string;
|
|
41
43
|
};
|
|
42
|
-
ItemCustom: ({ children, className, ...rest }: {
|
|
44
|
+
ItemCustom: ({ children, className, selected, ...rest }: {
|
|
43
45
|
children: React.ReactNode;
|
|
44
46
|
className?: string | undefined;
|
|
47
|
+
selected?: boolean | undefined;
|
|
45
48
|
} & React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
46
49
|
Group: {
|
|
47
50
|
({ children, className, style, title, }: {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AppState } from "./types";
|
|
2
|
+
export declare const resetCursor: (interactiveCanvas: HTMLCanvasElement | null) => void;
|
|
3
|
+
export declare const setCursor: (interactiveCanvas: HTMLCanvasElement | null, cursor: string) => void;
|
|
4
|
+
export declare const setEraserCursor: (interactiveCanvas: HTMLCanvasElement | null, theme: AppState["theme"]) => void;
|
|
5
|
+
export declare const setCursorForShape: (interactiveCanvas: HTMLCanvasElement | null, appState: Pick<AppState, "activeTool" | "theme">) => void;
|
|
@@ -51,15 +51,9 @@ export declare const actionLink: {
|
|
|
51
51
|
editingElement: NonDeletedExcalidrawElement | null;
|
|
52
52
|
editingLinearElement: import("./linearElementEditor").LinearElementEditor | null;
|
|
53
53
|
activeTool: {
|
|
54
|
-
lastActiveTool: import("../types").
|
|
54
|
+
lastActiveTool: import("../types").ActiveTool | null;
|
|
55
55
|
locked: boolean;
|
|
56
|
-
} & (
|
|
57
|
-
type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "image" | "frame" | "freedraw" | "eraser" | "hand";
|
|
58
|
-
customType: null;
|
|
59
|
-
} | {
|
|
60
|
-
type: "custom";
|
|
61
|
-
customType: string;
|
|
62
|
-
});
|
|
56
|
+
} & import("../types").ActiveTool;
|
|
63
57
|
penMode: boolean;
|
|
64
58
|
penDetected: boolean;
|
|
65
59
|
exportBackground: boolean;
|
|
@@ -136,7 +130,7 @@ export declare const actionLink: {
|
|
|
136
130
|
};
|
|
137
131
|
pendingImageElementId: string | null;
|
|
138
132
|
selectedLinearElement: import("./linearElementEditor").LinearElementEditor | null;
|
|
139
|
-
snapLines: import("../snapping").SnapLine[];
|
|
133
|
+
snapLines: readonly import("../snapping").SnapLine[];
|
|
140
134
|
originSnapOffset: {
|
|
141
135
|
x: number;
|
|
142
136
|
y: number;
|
|
@@ -149,12 +143,12 @@ export declare const actionLink: {
|
|
|
149
143
|
category: "hyperlink";
|
|
150
144
|
action: string;
|
|
151
145
|
};
|
|
152
|
-
keyTest: (event:
|
|
146
|
+
keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
|
|
153
147
|
contextItemLabel: (elements: readonly import("./types").ExcalidrawElement[], appState: Readonly<AppState>) => "labels.link.editEmbed" | "labels.link.edit" | "labels.link.createEmbed" | "labels.link.create";
|
|
154
148
|
predicate: (elements: readonly import("./types").ExcalidrawElement[], appState: AppState) => boolean;
|
|
155
149
|
PanelComponent: ({ elements, appState, updateData }: import("../actions/types").PanelComponentProps) => JSX.Element;
|
|
156
150
|
} & {
|
|
157
|
-
keyTest?: ((event:
|
|
151
|
+
keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
|
|
158
152
|
};
|
|
159
153
|
export declare const getContextMenuLabel: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState) => "labels.link.editEmbed" | "labels.link.edit" | "labels.link.createEmbed" | "labels.link.create";
|
|
160
154
|
export declare const getLinkHandleFromCoords: ([x1, y1, x2, y2]: Bounds, angle: number, appState: Pick<UIAppState, "zoom">) => [x: number, y: number, width: number, height: number];
|
|
@@ -25,15 +25,9 @@ export declare const actionSetEmbeddableAsActiveTool: {
|
|
|
25
25
|
elements: readonly ExcalidrawElement[];
|
|
26
26
|
appState: {
|
|
27
27
|
activeTool: {
|
|
28
|
-
lastActiveTool: import("../types").
|
|
28
|
+
lastActiveTool: import("../types").ActiveTool | null;
|
|
29
29
|
locked: boolean;
|
|
30
|
-
} & (
|
|
31
|
-
type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "image" | "frame" | "freedraw" | "eraser" | "hand";
|
|
32
|
-
customType: null;
|
|
33
|
-
} | {
|
|
34
|
-
type: "custom";
|
|
35
|
-
customType: string;
|
|
36
|
-
});
|
|
30
|
+
} & import("../types").ActiveTool;
|
|
37
31
|
contextMenu: {
|
|
38
32
|
items: import("../components/ContextMenu").ContextMenuItems;
|
|
39
33
|
top: number;
|
|
@@ -142,7 +136,7 @@ export declare const actionSetEmbeddableAsActiveTool: {
|
|
|
142
136
|
pendingImageElementId: string | null;
|
|
143
137
|
showHyperlinkPopup: false | "editor" | "info";
|
|
144
138
|
selectedLinearElement: import("./linearElementEditor").LinearElementEditor | null;
|
|
145
|
-
snapLines: import("../snapping").SnapLine[];
|
|
139
|
+
snapLines: readonly import("../snapping").SnapLine[];
|
|
146
140
|
originSnapOffset: {
|
|
147
141
|
x: number;
|
|
148
142
|
y: number;
|
|
@@ -152,15 +152,9 @@ export declare class LinearElementEditor {
|
|
|
152
152
|
elementsToHighlight: NonDeleted<ExcalidrawElement>[] | null;
|
|
153
153
|
editingElement: import("./types").NonDeletedExcalidrawElement | null;
|
|
154
154
|
activeTool: {
|
|
155
|
-
lastActiveTool: import("../types").
|
|
155
|
+
lastActiveTool: import("../types").ActiveTool | null;
|
|
156
156
|
locked: boolean;
|
|
157
|
-
} & (
|
|
158
|
-
type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "image" | "frame" | "freedraw" | "eraser" | "hand";
|
|
159
|
-
customType: null;
|
|
160
|
-
} | {
|
|
161
|
-
type: "custom";
|
|
162
|
-
customType: string;
|
|
163
|
-
});
|
|
157
|
+
} & import("../types").ActiveTool;
|
|
164
158
|
penMode: boolean;
|
|
165
159
|
penDetected: boolean;
|
|
166
160
|
exportBackground: boolean;
|
|
@@ -239,7 +233,7 @@ export declare class LinearElementEditor {
|
|
|
239
233
|
pendingImageElementId: string | null;
|
|
240
234
|
showHyperlinkPopup: false | "editor" | "info";
|
|
241
235
|
selectedLinearElement: LinearElementEditor | null;
|
|
242
|
-
snapLines: import("../snapping").SnapLine[];
|
|
236
|
+
snapLines: readonly import("../snapping").SnapLine[];
|
|
243
237
|
originSnapOffset: {
|
|
244
238
|
x: number;
|
|
245
239
|
y: number;
|