@dwelle/excalidraw 0.4.0-9db4535 → 0.4.0-9fa56da
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 +255 -1
- package/README.md +4 -0
- package/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.js → vendor-d415b28e9024dee4bb1b.js} +2 -2
- package/dist/excalidraw-assets-dev/{vendor-e6df8519da951026ff69.js → vendor-a14cd58fa2db417e42b2.js} +6 -6
- package/dist/excalidraw.development.js +2123 -1783
- package/dist/excalidraw.production.min.js +1 -1
- package/package.json +7 -2
- package/types/actions/actionAddToLibrary.d.ts +84 -43
- package/types/actions/actionAlign.d.ts +33 -28
- package/types/actions/actionBoundText.d.ts +60 -32
- package/types/actions/actionCanvas.d.ts +436 -164
- package/types/actions/actionClipboard.d.ts +140 -74
- package/types/actions/actionDeleteSelected.d.ts +80 -42
- package/types/actions/actionDistribute.d.ts +11 -12
- package/types/actions/actionDuplicateSelection.d.ts +2 -3
- package/types/actions/actionElementLock.d.ts +58 -30
- package/types/actions/actionExport.d.ts +303 -177
- package/types/actions/actionFinalize.d.ts +56 -32
- package/types/actions/actionFlip.d.ts +8 -9
- package/types/actions/actionFrame.d.ts +423 -0
- package/types/actions/actionGroup.d.ts +250 -13
- package/types/actions/actionLinearEditor.d.ts +30 -17
- package/types/actions/actionMenu.d.ts +87 -47
- package/types/actions/actionNavigate.d.ts +1 -1
- package/types/actions/actionProperties.d.ts +370 -187
- package/types/actions/actionSelectAll.d.ts +123 -4
- package/types/actions/actionStyles.d.ts +32 -19
- package/types/actions/actionToggleGridMode.d.ts +30 -17
- package/types/actions/actionToggleObjectsSnapMode.d.ts +137 -0
- package/types/actions/actionToggleStats.d.ts +30 -17
- package/types/actions/actionToggleViewMode.d.ts +30 -17
- package/types/actions/actionToggleZenMode.d.ts +30 -17
- package/types/actions/actionZindex.d.ts +12 -12
- package/types/actions/index.d.ts +1 -0
- package/types/actions/shortcuts.d.ts +1 -1
- package/types/actions/types.d.ts +4 -3
- package/types/appState.d.ts +10 -15
- package/types/clients.d.ts +1 -5
- package/types/clipboard.d.ts +1 -0
- package/types/colors.d.ts +9 -9
- package/types/components/Actions.d.ts +4 -5
- package/types/components/App.d.ts +61 -28
- package/types/components/Avatar.d.ts +0 -1
- package/types/components/Button.d.ts +0 -1
- package/types/components/Card.d.ts +0 -1
- package/types/components/ColorPicker/ColorInput.d.ts +3 -1
- package/types/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
- package/types/components/DefaultSidebar.d.ts +0 -1
- package/types/components/Dialog.d.ts +2 -1
- package/types/components/ExcalidrawLogo.d.ts +15 -0
- package/types/components/EyeDropper.d.ts +18 -8
- package/types/components/FilledButton.d.ts +2 -1
- package/types/components/HintViewer.d.ts +3 -4
- package/types/components/JSONExportDialog.d.ts +1 -1
- 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 +6 -2
- package/types/components/LibraryMenuHeaderContent.d.ts +0 -1
- package/types/components/LibraryUnit.d.ts +0 -1
- package/types/components/LoadingMessage.d.ts +0 -1
- package/types/components/MobileMenu.d.ts +4 -3
- package/types/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -0
- package/types/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -0
- package/types/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -0
- package/types/components/Section.d.ts +1 -1
- package/types/components/Sidebar/Sidebar.d.ts +1 -1
- package/types/components/Sidebar/SidebarTab.d.ts +0 -1
- package/types/components/Sidebar/SidebarTabTrigger.d.ts +0 -1
- package/types/components/Sidebar/SidebarTabTriggers.d.ts +0 -1
- package/types/components/Sidebar/SidebarTabs.d.ts +0 -1
- package/types/components/Stack.d.ts +2 -2
- package/types/components/ToolButton.d.ts +2 -1
- package/types/components/Trans.d.ts +2 -1
- package/types/components/canvases/InteractiveCanvas.d.ts +27 -0
- package/types/components/canvases/StaticCanvas.d.ts +18 -0
- package/types/components/canvases/index.d.ts +3 -0
- package/types/components/dropdownMenu/DropdownMenu.d.ts +9 -5
- 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/DropdownMenuTrigger.d.ts +3 -2
- package/types/components/dropdownMenu/common.d.ts +1 -1
- package/types/components/icons.d.ts +6 -0
- package/types/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -1
- package/types/components/main-menu/MainMenu.d.ts +9 -5
- package/types/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -1
- package/types/components/welcome-screen/WelcomeScreen.d.ts +0 -1
- package/types/constants.d.ts +35 -3
- package/types/context/tunnels.d.ts +1 -0
- package/types/data/transform.d.ts +71 -0
- package/types/data/url.d.ts +7 -0
- package/types/element/Hyperlink.d.ts +40 -23
- package/types/element/binding.d.ts +2 -1
- package/types/element/bounds.d.ts +30 -6
- package/types/element/collision.d.ts +7 -7
- package/types/element/dragElements.d.ts +12 -2
- package/types/element/embeddable.d.ts +153 -0
- package/types/element/index.d.ts +3 -2
- package/types/element/linearElementEditor.d.ts +33 -20
- package/types/element/newElement.d.ts +15 -6
- package/types/element/resizeElements.d.ts +2 -2
- package/types/element/sizeHelpers.d.ts +8 -1
- package/types/element/textElement.d.ts +5 -7
- package/types/element/textWysiwyg.d.ts +1 -1
- package/types/element/transformHandles.d.ts +10 -3
- package/types/element/typeChecks.d.ts +3 -1
- package/types/element/types.d.ts +19 -3
- package/types/frame.d.ts +40 -0
- package/types/groups.d.ts +15 -11
- package/types/history.d.ts +3 -3
- package/types/hooks/useOutsideClick.d.ts +0 -1
- package/types/hooks/useScrollPosition.d.ts +0 -1
- package/types/hooks/useStable.d.ts +1 -0
- package/types/i18n.d.ts +5 -2
- package/types/keys.d.ts +4 -0
- package/types/math.d.ts +3 -0
- package/types/packages/excalidraw/example/initialData.d.ts +182 -64
- package/types/packages/excalidraw/index.d.ts +3 -1
- package/types/packages/excalidraw/webpack.dev.config.d.ts +5 -2
- package/types/packages/excalidraw/webpack.prod.config.d.ts +3 -0
- package/types/packages/utils.d.ts +4 -1
- package/types/renderer/renderElement.d.ts +11 -22
- package/types/renderer/renderScene.d.ts +19 -27
- package/types/renderer/renderSnaps.d.ts +2 -0
- package/types/renderer/roundRect.d.ts +1 -1
- package/types/scene/Renderer.d.ts +25 -0
- package/types/scene/Scene.d.ts +23 -1
- package/types/scene/Shape.d.ts +12 -0
- package/types/scene/ShapeCache.d.ts +20 -0
- package/types/scene/export.d.ts +35 -9
- package/types/scene/scroll.d.ts +1 -1
- package/types/scene/scrollbars.d.ts +2 -6
- package/types/scene/selection.d.ts +26 -5
- package/types/scene/types.d.ts +66 -31
- package/types/snapping.d.ts +108 -0
- package/types/types.d.ts +130 -25
- package/types/utility-types.d.ts +3 -1
- package/types/utils.d.ts +60 -23
- package/types/zindex.d.ts +4 -4
- /package/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.js.LICENSE.txt → vendor-d415b28e9024dee4bb1b.js.LICENSE.txt} +0 -0
- /package/types/packages/excalidraw/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.d.ts → vendor-d415b28e9024dee4bb1b.d.ts} +0 -0
- /package/types/packages/excalidraw/dist/excalidraw-assets-dev/{vendor-e6df8519da951026ff69.d.ts → vendor-a14cd58fa2db417e42b2.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStable: <T extends Record<string, any>>(value: T) => T;
|
package/types/i18n.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import fallbackLangData from "./locales/en.json";
|
|
2
|
+
import { NestedKeyOf } from "./utility-types";
|
|
1
3
|
export interface Language {
|
|
2
4
|
code: string;
|
|
3
5
|
label: string;
|
|
4
6
|
rtl?: boolean;
|
|
5
7
|
}
|
|
8
|
+
export type TranslationKeys = NestedKeyOf<typeof fallbackLangData>;
|
|
6
9
|
export declare const defaultLang: {
|
|
7
10
|
code: string;
|
|
8
11
|
label: string;
|
|
@@ -10,11 +13,11 @@ export declare const defaultLang: {
|
|
|
10
13
|
export declare const languages: Language[];
|
|
11
14
|
export declare const setLanguage: (lang: Language) => Promise<void>;
|
|
12
15
|
export declare const getLanguage: () => Language;
|
|
13
|
-
export declare const t: (path:
|
|
16
|
+
export declare const t: (path: NestedKeyOf<typeof fallbackLangData>, replacement?: {
|
|
14
17
|
[key: string]: string | number;
|
|
15
18
|
} | null | undefined, fallback?: string) => string;
|
|
16
19
|
export declare const useI18n: () => {
|
|
17
|
-
t: (path:
|
|
20
|
+
t: (path: NestedKeyOf<typeof fallbackLangData>, replacement?: {
|
|
18
21
|
[key: string]: string | number;
|
|
19
22
|
} | null | undefined, fallback?: string) => string;
|
|
20
23
|
langCode: string;
|
package/types/keys.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const CODES: {
|
|
|
8
8
|
readonly BRACKET_LEFT: "BracketLeft";
|
|
9
9
|
readonly ONE: "Digit1";
|
|
10
10
|
readonly TWO: "Digit2";
|
|
11
|
+
readonly THREE: "Digit3";
|
|
11
12
|
readonly NINE: "Digit9";
|
|
12
13
|
readonly QUOTE: "Quote";
|
|
13
14
|
readonly ZERO: "Digit0";
|
|
@@ -18,6 +19,7 @@ export declare const CODES: {
|
|
|
18
19
|
readonly V: "KeyV";
|
|
19
20
|
readonly Z: "KeyZ";
|
|
20
21
|
readonly R: "KeyR";
|
|
22
|
+
readonly S: "KeyS";
|
|
21
23
|
};
|
|
22
24
|
export declare const KEYS: {
|
|
23
25
|
readonly ARROW_DOWN: "ArrowDown";
|
|
@@ -39,6 +41,7 @@ export declare const KEYS: {
|
|
|
39
41
|
readonly CHEVRON_RIGHT: ">";
|
|
40
42
|
readonly PERIOD: ".";
|
|
41
43
|
readonly COMMA: ",";
|
|
44
|
+
readonly SUBTRACT: "-";
|
|
42
45
|
readonly A: "a";
|
|
43
46
|
readonly C: "c";
|
|
44
47
|
readonly D: "d";
|
|
@@ -59,6 +62,7 @@ export declare const KEYS: {
|
|
|
59
62
|
readonly Y: "y";
|
|
60
63
|
readonly Z: "z";
|
|
61
64
|
readonly K: "k";
|
|
65
|
+
readonly W: "w";
|
|
62
66
|
readonly 0: "0";
|
|
63
67
|
readonly 1: "1";
|
|
64
68
|
readonly 2: "2";
|
package/types/math.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare const distance2d: (x1: number, y1: number, x2: number, y2: number
|
|
|
17
17
|
export declare const centerPoint: (a: readonly [number, number], b: readonly [number, number]) => readonly [number, number];
|
|
18
18
|
export declare const isPathALoop: (points: ExcalidrawLinearElement["points"], zoomValue?: Zoom["value"]) => boolean;
|
|
19
19
|
export declare const isPointInPolygon: (points: Point[], x: number, y: number) => boolean;
|
|
20
|
+
export declare const isPointWithinBounds: (p: readonly [number, number], q: readonly [number, number], r: readonly [number, number]) => boolean;
|
|
20
21
|
export declare const getGridPoint: (x: number, y: number, gridSize: number | null) => [number, number];
|
|
21
22
|
export declare const getCornerRadius: (x: number, element: ExcalidrawElement) => number;
|
|
22
23
|
export declare const getControlPointsForBezierCurve: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number]) => [number, number][] | null;
|
|
@@ -27,3 +28,5 @@ export declare const getBezierCurveLength: (element: NonDeleted<ExcalidrawLinear
|
|
|
27
28
|
export declare const mapIntervalToBezierT: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number], interval: number) => number;
|
|
28
29
|
export declare const arePointsEqual: (p1: readonly [number, number], p2: readonly [number, number]) => boolean;
|
|
29
30
|
export declare const isRightAngle: (angle: number) => boolean;
|
|
31
|
+
export declare const rangesOverlap: ([a0, a1]: [number, number], [b0, b1]: [number, number]) => boolean;
|
|
32
|
+
export declare const rangeIntersection: (rangeA: [number, number], rangeB: [number, number]) => [number, number] | null;
|
|
@@ -1,10 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { ExcalidrawElementSkeleton } from "../../../data/transform";
|
|
2
|
+
declare const _default: {
|
|
3
|
+
elements: ExcalidrawElementSkeleton[];
|
|
4
|
+
appState: {
|
|
5
|
+
viewBackgroundColor: string;
|
|
6
|
+
currentItemFontFamily: number;
|
|
7
|
+
};
|
|
8
|
+
scrollToContent: boolean;
|
|
9
|
+
libraryItems: ({
|
|
10
|
+
type: string;
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
strokeColor: string;
|
|
14
|
+
backgroundColor: string;
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
strokeSharpness: string;
|
|
18
|
+
points: number[][];
|
|
19
|
+
}[] | ({
|
|
20
|
+
type: string;
|
|
21
|
+
fillStyle: string;
|
|
22
|
+
strokeWidth: number;
|
|
23
|
+
strokeStyle: string;
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
strokeColor: string;
|
|
27
|
+
backgroundColor: string;
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
groupIds: string[];
|
|
31
|
+
points: number[][];
|
|
32
|
+
roughness?: undefined;
|
|
33
|
+
opacity?: undefined;
|
|
34
|
+
angle?: undefined;
|
|
35
|
+
seed?: undefined;
|
|
36
|
+
strokeSharpness?: undefined;
|
|
37
|
+
boundElementIds?: undefined;
|
|
38
|
+
} | {
|
|
3
39
|
type: string;
|
|
4
|
-
version: number;
|
|
5
|
-
versionNonce: number;
|
|
6
|
-
isDeleted: boolean;
|
|
7
|
-
id: string;
|
|
8
40
|
fillStyle: string;
|
|
9
41
|
strokeWidth: number;
|
|
10
42
|
strokeStyle: string;
|
|
@@ -18,48 +50,72 @@ declare namespace _default {
|
|
|
18
50
|
width: number;
|
|
19
51
|
height: number;
|
|
20
52
|
seed: number;
|
|
21
|
-
groupIds:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
updated?: undefined;
|
|
26
|
-
link?: undefined;
|
|
27
|
-
status?: undefined;
|
|
28
|
-
scale?: undefined;
|
|
53
|
+
groupIds: string[];
|
|
54
|
+
strokeSharpness: string;
|
|
55
|
+
points: number[][];
|
|
56
|
+
boundElementIds?: undefined;
|
|
29
57
|
} | {
|
|
30
|
-
fileId: string;
|
|
31
58
|
type: string;
|
|
59
|
+
fillStyle: string;
|
|
60
|
+
strokeWidth: number;
|
|
61
|
+
strokeStyle: string;
|
|
62
|
+
roughness: number;
|
|
63
|
+
opacity: number;
|
|
64
|
+
angle: number;
|
|
32
65
|
x: number;
|
|
33
66
|
y: number;
|
|
67
|
+
strokeColor: string;
|
|
68
|
+
backgroundColor: string;
|
|
34
69
|
width: number;
|
|
35
70
|
height: number;
|
|
71
|
+
seed: number;
|
|
72
|
+
groupIds: string[];
|
|
73
|
+
strokeSharpness: string;
|
|
74
|
+
boundElementIds: string[];
|
|
75
|
+
points?: undefined;
|
|
76
|
+
} | {
|
|
77
|
+
type: string;
|
|
78
|
+
fillStyle: string;
|
|
79
|
+
strokeWidth: number;
|
|
80
|
+
strokeStyle: string;
|
|
81
|
+
roughness: number;
|
|
82
|
+
opacity: number;
|
|
36
83
|
angle: number;
|
|
84
|
+
x: number;
|
|
85
|
+
y: number;
|
|
37
86
|
strokeColor: string;
|
|
38
87
|
backgroundColor: string;
|
|
88
|
+
width: number;
|
|
89
|
+
height: number;
|
|
90
|
+
seed: number;
|
|
91
|
+
groupIds: string[];
|
|
92
|
+
strokeSharpness: string;
|
|
93
|
+
points?: undefined;
|
|
94
|
+
boundElementIds?: undefined;
|
|
95
|
+
})[] | ({
|
|
96
|
+
type: string;
|
|
39
97
|
fillStyle: string;
|
|
40
98
|
strokeWidth: number;
|
|
41
99
|
strokeStyle: string;
|
|
42
100
|
roughness: number;
|
|
43
101
|
opacity: number;
|
|
44
|
-
|
|
45
|
-
|
|
102
|
+
angle: number;
|
|
103
|
+
x: number;
|
|
104
|
+
y: number;
|
|
105
|
+
strokeColor: string;
|
|
106
|
+
backgroundColor: string;
|
|
107
|
+
width: number;
|
|
108
|
+
height: number;
|
|
46
109
|
seed: number;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
status: string;
|
|
54
|
-
scale: number[];
|
|
110
|
+
groupIds: string[];
|
|
111
|
+
strokeSharpness: string;
|
|
112
|
+
points: number[][];
|
|
113
|
+
version?: undefined;
|
|
114
|
+
versionNonce?: undefined;
|
|
115
|
+
isDeleted?: undefined;
|
|
55
116
|
id?: undefined;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const viewBackgroundColor: string;
|
|
59
|
-
const currentItemFontFamily: number;
|
|
60
|
-
}
|
|
61
|
-
const scrollToContent: boolean;
|
|
62
|
-
const libraryItems: (({
|
|
117
|
+
boundElementIds?: undefined;
|
|
118
|
+
} | {
|
|
63
119
|
type: string;
|
|
64
120
|
version: number;
|
|
65
121
|
versionNonce: number;
|
|
@@ -80,19 +136,10 @@ declare namespace _default {
|
|
|
80
136
|
seed: number;
|
|
81
137
|
groupIds: string[];
|
|
82
138
|
strokeSharpness: string;
|
|
83
|
-
boundElementIds: never[];
|
|
84
|
-
startBinding: null;
|
|
85
|
-
endBinding: null;
|
|
86
139
|
points: number[][];
|
|
87
|
-
|
|
88
|
-
startArrowhead: null;
|
|
89
|
-
endArrowhead: null;
|
|
140
|
+
boundElementIds?: undefined;
|
|
90
141
|
} | {
|
|
91
142
|
type: string;
|
|
92
|
-
version: number;
|
|
93
|
-
versionNonce: number;
|
|
94
|
-
isDeleted: boolean;
|
|
95
|
-
id: string;
|
|
96
143
|
fillStyle: string;
|
|
97
144
|
strokeWidth: number;
|
|
98
145
|
strokeStyle: string;
|
|
@@ -109,18 +156,13 @@ declare namespace _default {
|
|
|
109
156
|
groupIds: string[];
|
|
110
157
|
strokeSharpness: string;
|
|
111
158
|
boundElementIds: string[];
|
|
112
|
-
startBinding?: undefined;
|
|
113
|
-
endBinding?: undefined;
|
|
114
159
|
points?: undefined;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
160
|
+
version?: undefined;
|
|
161
|
+
versionNonce?: undefined;
|
|
162
|
+
isDeleted?: undefined;
|
|
163
|
+
id?: undefined;
|
|
118
164
|
})[] | ({
|
|
119
165
|
type: string;
|
|
120
|
-
version: number;
|
|
121
|
-
versionNonce: number;
|
|
122
|
-
isDeleted: boolean;
|
|
123
|
-
id: string;
|
|
124
166
|
fillStyle: string;
|
|
125
167
|
strokeWidth: number;
|
|
126
168
|
strokeStyle: string;
|
|
@@ -136,17 +178,9 @@ declare namespace _default {
|
|
|
136
178
|
seed: number;
|
|
137
179
|
groupIds: string[];
|
|
138
180
|
strokeSharpness: string;
|
|
139
|
-
boundElementIds: string[];
|
|
140
181
|
points?: undefined;
|
|
141
|
-
lastCommittedPoint?: undefined;
|
|
142
|
-
startArrowhead?: undefined;
|
|
143
|
-
endArrowhead?: undefined;
|
|
144
182
|
} | {
|
|
145
183
|
type: string;
|
|
146
|
-
version: number;
|
|
147
|
-
versionNonce: number;
|
|
148
|
-
isDeleted: boolean;
|
|
149
|
-
id: string;
|
|
150
184
|
fillStyle: string;
|
|
151
185
|
strokeWidth: number;
|
|
152
186
|
strokeStyle: string;
|
|
@@ -162,11 +196,95 @@ declare namespace _default {
|
|
|
162
196
|
seed: number;
|
|
163
197
|
groupIds: string[];
|
|
164
198
|
strokeSharpness: string;
|
|
165
|
-
boundElementIds: never[];
|
|
166
199
|
points: number[][];
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
200
|
+
} | {
|
|
201
|
+
type: string;
|
|
202
|
+
fillStyle: string;
|
|
203
|
+
strokeWidth: number;
|
|
204
|
+
strokeStyle: string;
|
|
205
|
+
x: number;
|
|
206
|
+
y: number;
|
|
207
|
+
strokeColor: string;
|
|
208
|
+
backgroundColor: string;
|
|
209
|
+
width: number;
|
|
210
|
+
height: number;
|
|
211
|
+
groupIds: string[];
|
|
212
|
+
strokeSharpness: string;
|
|
213
|
+
points: number[][];
|
|
214
|
+
roughness?: undefined;
|
|
215
|
+
opacity?: undefined;
|
|
216
|
+
angle?: undefined;
|
|
217
|
+
seed?: undefined;
|
|
218
|
+
} | {
|
|
219
|
+
type: string;
|
|
220
|
+
fillStyle: string;
|
|
221
|
+
strokeWidth: number;
|
|
222
|
+
strokeStyle: string;
|
|
223
|
+
roughness: number;
|
|
224
|
+
opacity: number;
|
|
225
|
+
angle: number;
|
|
226
|
+
x: number;
|
|
227
|
+
y: number;
|
|
228
|
+
strokeColor: string;
|
|
229
|
+
backgroundColor: string;
|
|
230
|
+
width: number;
|
|
231
|
+
height: number;
|
|
232
|
+
groupIds: string[];
|
|
233
|
+
strokeSharpness: string;
|
|
234
|
+
points: number[][];
|
|
235
|
+
seed?: undefined;
|
|
236
|
+
} | {
|
|
237
|
+
type: string;
|
|
238
|
+
fillStyle: string;
|
|
239
|
+
strokeWidth: number;
|
|
240
|
+
strokeStyle: string;
|
|
241
|
+
opacity: number;
|
|
242
|
+
x: number;
|
|
243
|
+
y: number;
|
|
244
|
+
strokeColor: string;
|
|
245
|
+
backgroundColor: string;
|
|
246
|
+
width: number;
|
|
247
|
+
height: number;
|
|
248
|
+
seed: number;
|
|
249
|
+
groupIds: string[];
|
|
250
|
+
strokeSharpness: string;
|
|
251
|
+
points: number[][];
|
|
252
|
+
roughness?: undefined;
|
|
253
|
+
angle?: undefined;
|
|
254
|
+
})[] | ({
|
|
255
|
+
type: string;
|
|
256
|
+
fillStyle: string;
|
|
257
|
+
strokeWidth: number;
|
|
258
|
+
strokeStyle: string;
|
|
259
|
+
roughness: number;
|
|
260
|
+
opacity: number;
|
|
261
|
+
angle: number;
|
|
262
|
+
x: number;
|
|
263
|
+
y: number;
|
|
264
|
+
strokeColor: string;
|
|
265
|
+
backgroundColor: string;
|
|
266
|
+
width: number;
|
|
267
|
+
height: number;
|
|
268
|
+
seed: number;
|
|
269
|
+
groupIds: string[];
|
|
270
|
+
strokeSharpness: string;
|
|
271
|
+
} | {
|
|
272
|
+
type: string;
|
|
273
|
+
fillStyle: string;
|
|
274
|
+
strokeWidth: number;
|
|
275
|
+
strokeStyle: string;
|
|
276
|
+
x: number;
|
|
277
|
+
y: number;
|
|
278
|
+
strokeColor: string;
|
|
279
|
+
backgroundColor: string;
|
|
280
|
+
width: number;
|
|
281
|
+
height: number;
|
|
282
|
+
seed: number;
|
|
283
|
+
groupIds: string[];
|
|
284
|
+
strokeSharpness: string;
|
|
285
|
+
roughness?: undefined;
|
|
286
|
+
opacity?: undefined;
|
|
287
|
+
angle?: undefined;
|
|
170
288
|
})[])[];
|
|
171
|
-
}
|
|
289
|
+
};
|
|
172
290
|
export default _default;
|
|
@@ -25,9 +25,11 @@ export { useDevice } from "../../components/App";
|
|
|
25
25
|
export { WelcomeScreen };
|
|
26
26
|
export { LiveCollaborationTrigger };
|
|
27
27
|
export { DefaultSidebar } from "../../components/DefaultSidebar";
|
|
28
|
+
export { exportToCanvas } from "../../scene/export";
|
|
29
|
+
export { normalizeLink } from "../../data/url";
|
|
30
|
+
export { convertToExcalidrawElements } from "../../data/transform";
|
|
28
31
|
export { getDefaultAppState, cleanAppStateForExport, clearAppStateForLocalStorage, } from "../../appState";
|
|
29
32
|
export { jotaiScope, jotaiStore } from "../../jotai";
|
|
30
33
|
export { libraryItemsAtom } from "../../data/library";
|
|
31
|
-
export { exportToCanvas } from "../../scene/export";
|
|
32
34
|
export * as icons from "../../components/icons";
|
|
33
35
|
export * as actions from "../../actions/index";
|
|
@@ -36,13 +36,16 @@ export namespace module {
|
|
|
36
36
|
} | {
|
|
37
37
|
test: RegExp;
|
|
38
38
|
exclude: RegExp;
|
|
39
|
-
use: {
|
|
39
|
+
use: ({
|
|
40
|
+
loader: string;
|
|
41
|
+
options?: undefined;
|
|
42
|
+
} | {
|
|
40
43
|
loader: string;
|
|
41
44
|
options: {
|
|
42
45
|
transpileOnly: boolean;
|
|
43
46
|
configFile: string;
|
|
44
47
|
};
|
|
45
|
-
}[];
|
|
48
|
+
})[];
|
|
46
49
|
type?: undefined;
|
|
47
50
|
} | {
|
|
48
51
|
test: RegExp;
|
|
@@ -5,7 +5,10 @@ type ExportToBlobConfig = ExportToCanvasConfig & {
|
|
|
5
5
|
mimeType?: string;
|
|
6
6
|
quality?: number;
|
|
7
7
|
};
|
|
8
|
-
type ExportToSvgConfig = Pick<ExportToCanvasConfig, "canvasBackgroundColor" | "padding" | "theme"
|
|
8
|
+
type ExportToSvgConfig = Pick<ExportToCanvasConfig, "canvasBackgroundColor" | "padding" | "theme"> & {
|
|
9
|
+
exportPadding?: number;
|
|
10
|
+
renderEmbeddables?: boolean;
|
|
11
|
+
};
|
|
9
12
|
export declare const exportToBlob: ({ data, config, }: {
|
|
10
13
|
data: ExportToCanvasData;
|
|
11
14
|
config?: ExportToBlobConfig | undefined;
|
|
@@ -1,37 +1,26 @@
|
|
|
1
1
|
import { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, ExcalidrawFreeDrawElement } from "../element/types";
|
|
2
|
-
import { RoughCanvas } from "roughjs/bin/canvas";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { AppState, BinaryFiles } from "../types";
|
|
2
|
+
import type { RoughCanvas } from "roughjs/bin/canvas";
|
|
3
|
+
import type { RoughSVG } from "roughjs/bin/svg";
|
|
4
|
+
import { StaticCanvasRenderConfig } from "../scene/types";
|
|
5
|
+
import { AppState, StaticCanvasAppState, BinaryFiles, InteractiveCanvasAppState } from "../types";
|
|
7
6
|
export interface ExcalidrawElementWithCanvas {
|
|
8
7
|
element: ExcalidrawElement | ExcalidrawTextElement;
|
|
9
8
|
canvas: HTMLCanvasElement;
|
|
10
|
-
theme:
|
|
9
|
+
theme: AppState["theme"];
|
|
11
10
|
scale: number;
|
|
12
|
-
zoomValue:
|
|
11
|
+
zoomValue: AppState["zoom"]["value"];
|
|
13
12
|
canvasOffsetX: number;
|
|
14
13
|
canvasOffsetY: number;
|
|
15
14
|
boundTextElementVersion: number | null;
|
|
15
|
+
containingFrameOpacity: number;
|
|
16
16
|
}
|
|
17
17
|
export declare const DEFAULT_LINK_SIZE = 14;
|
|
18
|
-
|
|
19
|
-
type ElementShapes = {
|
|
20
|
-
freedraw: Drawable | null;
|
|
21
|
-
arrow: Drawable[];
|
|
22
|
-
line: Drawable[];
|
|
23
|
-
text: null;
|
|
24
|
-
image: null;
|
|
25
|
-
};
|
|
26
|
-
export declare const getShapeForElement: <T extends ExcalidrawElement>(element: T) => T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] | undefined : Drawable | null | undefined;
|
|
27
|
-
export declare const setShapeForElement: <T extends ExcalidrawElement>(element: T, shape: T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] : Drawable) => WeakMap<ExcalidrawElement, ElementShape>;
|
|
28
|
-
export declare const invalidateShapeForElement: (element: ExcalidrawElement) => boolean;
|
|
18
|
+
export declare let elementWithCanvasCache: WeakMap<ExcalidrawElement, ExcalidrawElementWithCanvas>;
|
|
29
19
|
export declare const clearRenderCache: () => void;
|
|
30
|
-
export declare const
|
|
31
|
-
export declare const renderElement: (element: NonDeletedExcalidrawElement, rc: RoughCanvas, context: CanvasRenderingContext2D, renderConfig:
|
|
32
|
-
export declare const renderElementToSvg: (element: NonDeletedExcalidrawElement, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, offsetX: number, offsetY: number, exportWithDarkMode?: boolean) => void;
|
|
20
|
+
export declare const renderSelectionElement: (element: NonDeletedExcalidrawElement, context: CanvasRenderingContext2D, appState: InteractiveCanvasAppState) => void;
|
|
21
|
+
export declare const renderElement: (element: NonDeletedExcalidrawElement, rc: RoughCanvas, context: CanvasRenderingContext2D, renderConfig: StaticCanvasRenderConfig, appState: StaticCanvasAppState) => void;
|
|
22
|
+
export declare const renderElementToSvg: (element: NonDeletedExcalidrawElement, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, offsetX: number, offsetY: number, exportWithDarkMode?: boolean, exportingFrameId?: string | null, renderEmbeddables?: boolean) => void;
|
|
33
23
|
export declare let pathsCache: WeakMap<ExcalidrawFreeDrawElement, Path2D>;
|
|
34
24
|
export declare function generateFreeDrawShape(element: ExcalidrawFreeDrawElement): Path2D;
|
|
35
25
|
export declare function getFreeDrawPath2D(element: ExcalidrawFreeDrawElement): Path2D | undefined;
|
|
36
26
|
export declare function getFreeDrawSvgPath(element: ExcalidrawFreeDrawElement): string;
|
|
37
|
-
export {};
|
|
@@ -1,39 +1,31 @@
|
|
|
1
|
-
import { RoughCanvas } from "roughjs/bin/canvas";
|
|
2
1
|
import { RoughSVG } from "roughjs/bin/svg";
|
|
3
|
-
import {
|
|
2
|
+
import { BinaryFiles } from "../types";
|
|
4
3
|
import { NonDeletedExcalidrawElement } from "../element/types";
|
|
5
|
-
import {
|
|
4
|
+
import { InteractiveSceneRenderConfig, StaticSceneRenderConfig } from "../scene/types";
|
|
5
|
+
import "canvas-roundrect-polyfill";
|
|
6
6
|
export declare const DEFAULT_SPACING = 2;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
renderConfig: RenderConfig;
|
|
13
|
-
}) => {
|
|
7
|
+
/**
|
|
8
|
+
* Interactive scene is the ui-canvas where we render boundinb boxes, selections
|
|
9
|
+
* and other ui stuff.
|
|
10
|
+
*/
|
|
11
|
+
export declare const renderInteractiveScene: <U extends ({ canvas, elements, visibleElements, selectedElements, scale, appState, renderConfig, }: InteractiveSceneRenderConfig) => {
|
|
14
12
|
atLeastOneVisibleElement: boolean;
|
|
15
|
-
scrollBars?: undefined;
|
|
16
|
-
} | {
|
|
17
|
-
atLeastOneVisibleElement: boolean;
|
|
18
|
-
scrollBars: import("../scene/types").ScrollBars | undefined;
|
|
19
|
-
};
|
|
20
|
-
/** renderScene throttled to animation framerate */
|
|
21
|
-
export declare const renderScene: <T extends boolean = false>(config: {
|
|
22
13
|
elements: readonly NonDeletedExcalidrawElement[];
|
|
23
|
-
appState: AppState;
|
|
24
|
-
rc: RoughCanvas;
|
|
25
|
-
canvas: HTMLCanvasElement;
|
|
26
|
-
renderConfig: RenderConfig;
|
|
27
|
-
callback?: ((data: ReturnType<typeof _renderScene>) => void) | undefined;
|
|
28
|
-
}, throttle?: T | undefined) => T extends true ? void : {
|
|
29
|
-
atLeastOneVisibleElement: boolean;
|
|
30
14
|
scrollBars?: undefined;
|
|
31
15
|
} | {
|
|
32
|
-
atLeastOneVisibleElement: boolean;
|
|
33
16
|
scrollBars: import("../scene/types").ScrollBars | undefined;
|
|
34
|
-
|
|
35
|
-
|
|
17
|
+
atLeastOneVisibleElement: boolean;
|
|
18
|
+
elements: readonly NonDeletedExcalidrawElement[];
|
|
19
|
+
}, T extends boolean = false>(renderConfig: InteractiveSceneRenderConfig, throttle?: T | undefined) => T extends true ? void : ReturnType<U>;
|
|
20
|
+
/**
|
|
21
|
+
* Static scene is the non-ui canvas where we render elements.
|
|
22
|
+
*/
|
|
23
|
+
export declare const renderStaticScene: (renderConfig: StaticSceneRenderConfig, throttle?: boolean) => void;
|
|
24
|
+
export declare const cancelRender: () => void;
|
|
25
|
+
export declare const renderSceneToSvg: (elements: readonly NonDeletedExcalidrawElement[], rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, { offsetX, offsetY, exportWithDarkMode, exportingFrameId, renderEmbeddables, }?: {
|
|
36
26
|
offsetX?: number | undefined;
|
|
37
27
|
offsetY?: number | undefined;
|
|
38
28
|
exportWithDarkMode?: boolean | undefined;
|
|
29
|
+
exportingFrameId?: string | null | undefined;
|
|
30
|
+
renderEmbeddables?: boolean | undefined;
|
|
39
31
|
}) => void;
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
* @param {Number} height The height of the rectangle
|
|
9
9
|
* @param {Number} radius The corner radius
|
|
10
10
|
*/
|
|
11
|
-
export declare const roundRect: (context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number) => void;
|
|
11
|
+
export declare const roundRect: (context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number, strokeColor?: string) => void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NonDeletedExcalidrawElement } from "../element/types";
|
|
2
|
+
import { AppState } from "../types";
|
|
3
|
+
import Scene from "./Scene";
|
|
4
|
+
export declare class Renderer {
|
|
5
|
+
private scene;
|
|
6
|
+
constructor(scene: Scene);
|
|
7
|
+
getRenderableElements: ((opts: {
|
|
8
|
+
zoom: AppState["zoom"];
|
|
9
|
+
offsetLeft: AppState["offsetLeft"];
|
|
10
|
+
offsetTop: AppState["offsetTop"];
|
|
11
|
+
scrollX: AppState["scrollX"];
|
|
12
|
+
scrollY: AppState["scrollY"];
|
|
13
|
+
height: AppState["height"];
|
|
14
|
+
width: AppState["width"];
|
|
15
|
+
editingElement: AppState["editingElement"];
|
|
16
|
+
pendingImageElementId: AppState["pendingImageElementId"];
|
|
17
|
+
versionNonce: ReturnType<InstanceType<typeof Scene>["getVersionNonce"]>;
|
|
18
|
+
}) => {
|
|
19
|
+
canvasElements: NonDeletedExcalidrawElement[];
|
|
20
|
+
visibleElements: readonly NonDeletedExcalidrawElement[];
|
|
21
|
+
}) & {
|
|
22
|
+
clear: () => void;
|
|
23
|
+
};
|
|
24
|
+
destroy(): void;
|
|
25
|
+
}
|
package/types/scene/Scene.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted } from "../element/types";
|
|
1
|
+
import { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted, ExcalidrawFrameElement } from "../element/types";
|
|
2
2
|
import { LinearElementEditor } from "../element/linearElementEditor";
|
|
3
|
+
import { AppState } from "../types";
|
|
3
4
|
type ElementIdKey = InstanceType<typeof LinearElementEditor>["elementId"];
|
|
4
5
|
type ElementKey = ExcalidrawElement | ElementIdKey;
|
|
5
6
|
type SceneStateCallback = () => void;
|
|
6
7
|
type SceneStateCallbackRemover = () => void;
|
|
8
|
+
export type ExcalidrawElementsIncludingDeleted = readonly ExcalidrawElement[];
|
|
7
9
|
declare class Scene {
|
|
8
10
|
private static sceneMapByElement;
|
|
9
11
|
private static sceneMapById;
|
|
@@ -12,10 +14,28 @@ declare class Scene {
|
|
|
12
14
|
private callbacks;
|
|
13
15
|
private nonDeletedElements;
|
|
14
16
|
private elements;
|
|
17
|
+
private nonDeletedFrames;
|
|
18
|
+
private frames;
|
|
15
19
|
private elementsMap;
|
|
20
|
+
private selectedElementsCache;
|
|
21
|
+
private versionNonce;
|
|
16
22
|
getElementsIncludingDeleted(): readonly ExcalidrawElement[];
|
|
17
23
|
getNonDeletedElements(): readonly NonDeletedExcalidrawElement[];
|
|
24
|
+
getFramesIncludingDeleted(): readonly ExcalidrawFrameElement[];
|
|
25
|
+
getSelectedElements(opts: {
|
|
26
|
+
selectedElementIds: AppState["selectedElementIds"];
|
|
27
|
+
/**
|
|
28
|
+
* for specific cases where you need to use elements not from current
|
|
29
|
+
* scene state. This in effect will likely result in cache-miss, and
|
|
30
|
+
* the cache won't be updated in this case.
|
|
31
|
+
*/
|
|
32
|
+
elements?: readonly ExcalidrawElement[];
|
|
33
|
+
includeBoundTextElement?: boolean;
|
|
34
|
+
includeElementsInFrames?: boolean;
|
|
35
|
+
}): NonDeleted<ExcalidrawElement>[];
|
|
36
|
+
getNonDeletedFrames(): readonly NonDeleted<ExcalidrawFrameElement>[];
|
|
18
37
|
getElement<T extends ExcalidrawElement>(id: T["id"]): T | null;
|
|
38
|
+
getVersionNonce(): number | undefined;
|
|
19
39
|
getNonDeletedElement(id: ExcalidrawElement["id"]): NonDeleted<ExcalidrawElement> | null;
|
|
20
40
|
/**
|
|
21
41
|
* A utility method to help with updating all scene elements, with the added
|
|
@@ -35,6 +55,8 @@ declare class Scene {
|
|
|
35
55
|
addCallback(cb: SceneStateCallback): SceneStateCallbackRemover;
|
|
36
56
|
destroy(): void;
|
|
37
57
|
insertElementAtIndex(element: ExcalidrawElement, index: number): void;
|
|
58
|
+
insertElementsAtIndex(elements: ExcalidrawElement[], index: number): void;
|
|
59
|
+
addNewElement: (element: ExcalidrawElement) => void;
|
|
38
60
|
getElementIndex(elementId: string): number;
|
|
39
61
|
}
|
|
40
62
|
export default Scene;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Drawable, Options } from "roughjs/bin/core";
|
|
2
|
+
import type { RoughGenerator } from "roughjs/bin/generator";
|
|
3
|
+
import type { ExcalidrawElement, NonDeletedExcalidrawElement, ExcalidrawSelectionElement } from "../element/types";
|
|
4
|
+
export declare const generateRoughOptions: (element: ExcalidrawElement, continuousPath?: boolean) => Options;
|
|
5
|
+
/**
|
|
6
|
+
* Generates the roughjs shape for given element.
|
|
7
|
+
*
|
|
8
|
+
* Low-level. Use `ShapeCache.generateElementShape` instead.
|
|
9
|
+
*
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
12
|
+
export declare const _generateElementShape: (element: Exclude<NonDeletedExcalidrawElement, ExcalidrawSelectionElement>, generator: RoughGenerator, isExporting?: boolean) => Drawable | Drawable[] | null;
|