@excalidraw/excalidraw 0.12.0-0a5da02 → 0.12.0-0d1058a
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 +9 -850
- package/README.md +22 -10
- package/dist/excalidraw-assets/locales/bn-BD-json-906099d3f665de611389.js +1 -0
- package/dist/excalidraw-assets/locales/ca-ES-json-7f3f0a2c7f428fa60e01.js +1 -0
- package/dist/excalidraw-assets/locales/el-GR-json-18ce48894d32ca4895b8.js +1 -0
- package/dist/excalidraw-assets/locales/es-ES-json-69a6c81b0e5dc370ea1a.js +1 -0
- package/dist/excalidraw-assets/locales/ko-KR-json-8e7ae1bb19a7677a8190.js +1 -0
- package/dist/excalidraw-assets/locales/lt-LT-json-4147c3543dce75362050.js +1 -0
- package/dist/excalidraw-assets/locales/pt-BR-json-4ffa2f70c2863bca4f91.js +1 -0
- package/dist/excalidraw-assets/locales/pt-PT-json-4368eca89d2b2b3fb444.js +1 -0
- package/dist/excalidraw-assets/locales/vi-VN-json-929afcbc15b2c06a64f2.js +1 -0
- package/dist/excalidraw-assets/vendor-cb04f63875674d708080.js +2 -0
- package/dist/excalidraw-assets/{vendor-52b1f3361986b6c6a4fe.js.LICENSE.txt → vendor-cb04f63875674d708080.js.LICENSE.txt} +0 -0
- package/dist/excalidraw-assets-dev/locales/bn-BD-json-c3b027e18322cd5f67dd.js +22 -0
- package/dist/excalidraw-assets-dev/locales/ca-ES-json-465e286330127bad8841.js +22 -0
- package/dist/excalidraw-assets-dev/locales/el-GR-json-33bcaca5c1eb85d3d81a.js +22 -0
- package/dist/excalidraw-assets-dev/locales/es-ES-json-41e67e045d8f77e56a7a.js +22 -0
- package/dist/excalidraw-assets-dev/locales/ko-KR-json-b6b0f0c8dc22ac7a3377.js +22 -0
- package/dist/excalidraw-assets-dev/locales/lt-LT-json-09b44716baf6aae6bf11.js +22 -0
- package/dist/excalidraw-assets-dev/locales/pt-BR-json-5abf09146a4f4387393d.js +22 -0
- package/dist/excalidraw-assets-dev/locales/pt-PT-json-c72abd8cf29d14347cf5.js +22 -0
- package/dist/excalidraw-assets-dev/locales/{bn-BD-json-02993b6dba9e7f115b53.js → vi-VN-json-03f122275dad01552357.js} +4 -4
- package/dist/excalidraw-assets-dev/{vendor-c0592035c3911af79359.js → vendor-e6df8519da951026ff69.js} +1 -1
- package/dist/excalidraw.development.js +59 -59
- package/dist/excalidraw.production.min.js +1 -1
- package/dist/excalidraw.production.min.js.LICENSE.txt +0 -9
- package/package.json +1 -1
- package/types/actions/actionClipboard.d.ts +1 -0
- package/types/actions/actionDeleteSelected.d.ts +1 -0
- package/types/actions/actionExport.d.ts +1 -1
- package/types/components/Actions.d.ts +13 -2
- package/types/components/App.d.ts +3 -0
- package/types/components/Footer.d.ts +9 -0
- package/types/components/LayerUI.d.ts +1 -1
- package/types/components/LibraryMenu.d.ts +1 -2
- package/types/components/MobileMenu.d.ts +3 -3
- package/types/components/Stats.d.ts +1 -1
- package/types/data/blob.d.ts +1 -1
- package/types/element/Hyperlink.d.ts +1 -2
- package/types/element/bounds.d.ts +1 -1
- package/types/element/linearElementEditor.d.ts +34 -15
- package/types/element/transformHandles.d.ts +5 -4
- package/types/element/types.d.ts +1 -0
- package/types/math.d.ts +8 -1
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{bn-BD-json-aa99c5a33f005fb00c6b.d.ts → bn-BD-json-906099d3f665de611389.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{ca-ES-json-32cf66a0dfdbbafb6903.d.ts → ca-ES-json-7f3f0a2c7f428fa60e01.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{el-GR-json-74f57c0f8b11ac1b6dde.d.ts → el-GR-json-18ce48894d32ca4895b8.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{es-ES-json-ffb4e65453db2f3058d4.d.ts → es-ES-json-69a6c81b0e5dc370ea1a.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{ko-KR-json-f27d159b2556809076aa.d.ts → ko-KR-json-8e7ae1bb19a7677a8190.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{lt-LT-json-7277ad8dae6d3e6607b3.d.ts → lt-LT-json-4147c3543dce75362050.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{pt-BR-json-686219f43cd76123b7fa.d.ts → pt-BR-json-4ffa2f70c2863bca4f91.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{pt-PT-json-be4502ca3a1250845c39.d.ts → pt-PT-json-4368eca89d2b2b3fb444.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/locales/{vi-VN-json-5c276b534d762658589c.d.ts → vi-VN-json-929afcbc15b2c06a64f2.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets/{vendor-52b1f3361986b6c6a4fe.d.ts → vendor-cb04f63875674d708080.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{bn-BD-json-02993b6dba9e7f115b53.d.ts → bn-BD-json-c3b027e18322cd5f67dd.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ca-ES-json-7aabb5b31e7a995a90e3.d.ts → ca-ES-json-465e286330127bad8841.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{el-GR-json-2bc44d5450554154e110.d.ts → el-GR-json-33bcaca5c1eb85d3d81a.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{es-ES-json-9e5e962b234d2fa5aac2.d.ts → es-ES-json-41e67e045d8f77e56a7a.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ko-KR-json-09de6762eea271167b56.d.ts → ko-KR-json-b6b0f0c8dc22ac7a3377.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{lt-LT-json-a17971ff33b8929e96d3.d.ts → lt-LT-json-09b44716baf6aae6bf11.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{pt-BR-json-5e4c8cd83b785ed859c2.d.ts → pt-BR-json-5abf09146a4f4387393d.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{pt-PT-json-a7f89a1c6f1c380141e5.d.ts → pt-PT-json-c72abd8cf29d14347cf5.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{vi-VN-json-670ecb0ad40c0453bdfd.d.ts → vi-VN-json-03f122275dad01552357.d.ts} +0 -0
- package/types/packages/excalidraw/dist/excalidraw-assets-dev/{vendor-c0592035c3911af79359.d.ts → vendor-e6df8519da951026ff69.d.ts} +0 -0
- package/types/packages/utils.d.ts +4 -1
- package/types/points.d.ts +2 -1
- package/types/polyfill.d.ts +2 -0
- package/types/renderer/renderScene.d.ts +18 -2
- package/types/types.d.ts +0 -1
- package/dist/excalidraw-assets/locales/bn-BD-json-aa99c5a33f005fb00c6b.js +0 -1
- package/dist/excalidraw-assets/locales/ca-ES-json-32cf66a0dfdbbafb6903.js +0 -1
- package/dist/excalidraw-assets/locales/el-GR-json-74f57c0f8b11ac1b6dde.js +0 -1
- package/dist/excalidraw-assets/locales/es-ES-json-ffb4e65453db2f3058d4.js +0 -1
- package/dist/excalidraw-assets/locales/ko-KR-json-f27d159b2556809076aa.js +0 -1
- package/dist/excalidraw-assets/locales/lt-LT-json-7277ad8dae6d3e6607b3.js +0 -1
- package/dist/excalidraw-assets/locales/pt-BR-json-686219f43cd76123b7fa.js +0 -1
- package/dist/excalidraw-assets/locales/pt-PT-json-be4502ca3a1250845c39.js +0 -1
- package/dist/excalidraw-assets/locales/vi-VN-json-5c276b534d762658589c.js +0 -1
- package/dist/excalidraw-assets/vendor-52b1f3361986b6c6a4fe.js +0 -2
- package/dist/excalidraw-assets-dev/locales/ca-ES-json-7aabb5b31e7a995a90e3.js +0 -22
- package/dist/excalidraw-assets-dev/locales/el-GR-json-2bc44d5450554154e110.js +0 -22
- package/dist/excalidraw-assets-dev/locales/es-ES-json-9e5e962b234d2fa5aac2.js +0 -22
- package/dist/excalidraw-assets-dev/locales/ko-KR-json-09de6762eea271167b56.js +0 -22
- package/dist/excalidraw-assets-dev/locales/lt-LT-json-a17971ff33b8929e96d3.js +0 -22
- package/dist/excalidraw-assets-dev/locales/pt-BR-json-5e4c8cd83b785ed859c2.js +0 -22
- package/dist/excalidraw-assets-dev/locales/pt-PT-json-a7f89a1c6f1c380141e5.js +0 -22
- package/dist/excalidraw-assets-dev/locales/vi-VN-json-670ecb0ad40c0453bdfd.js +0 -22
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Lodash <https://lodash.com/>
|
|
4
|
-
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
5
|
-
* Released under MIT license <https://lodash.com/license>
|
|
6
|
-
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
7
|
-
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
1
|
/**
|
|
11
2
|
* @license React
|
|
12
3
|
* react-jsx-runtime.production.min.js
|
package/package.json
CHANGED
|
@@ -882,7 +882,7 @@ export declare const actionLoadScene: {
|
|
|
882
882
|
commitToHistory: false;
|
|
883
883
|
}>;
|
|
884
884
|
keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
|
|
885
|
-
PanelComponent: ({ updateData
|
|
885
|
+
PanelComponent: ({ updateData }: import("./types").PanelComponentProps) => JSX.Element;
|
|
886
886
|
} & {
|
|
887
887
|
keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
|
|
888
888
|
};
|
|
@@ -2,11 +2,10 @@ import React from "react";
|
|
|
2
2
|
import { ActionManager } from "../actions/manager";
|
|
3
3
|
import { ExcalidrawElement, PointerType } from "../element/types";
|
|
4
4
|
import { AppState, Zoom } from "../types";
|
|
5
|
-
export declare const SelectedShapeActions: ({ appState, elements, renderAction,
|
|
5
|
+
export declare const SelectedShapeActions: ({ appState, elements, renderAction, }: {
|
|
6
6
|
appState: AppState;
|
|
7
7
|
elements: readonly ExcalidrawElement[];
|
|
8
8
|
renderAction: ActionManager["renderAction"];
|
|
9
|
-
activeTool: AppState["activeTool"]["type"];
|
|
10
9
|
}) => JSX.Element;
|
|
11
10
|
export declare const ShapesSwitcher: ({ canvas, activeTool, setAppState, onImageAction, appState, }: {
|
|
12
11
|
canvas: HTMLCanvasElement | null;
|
|
@@ -21,3 +20,15 @@ export declare const ZoomActions: ({ renderAction, zoom, }: {
|
|
|
21
20
|
renderAction: ActionManager["renderAction"];
|
|
22
21
|
zoom: Zoom;
|
|
23
22
|
}) => JSX.Element;
|
|
23
|
+
export declare const UndoRedoActions: ({ renderAction, className, }: {
|
|
24
|
+
renderAction: ActionManager["renderAction"];
|
|
25
|
+
className?: string | undefined;
|
|
26
|
+
}) => JSX.Element;
|
|
27
|
+
export declare const ExitZenModeAction: ({ actionManager, showExitZenModeBtn, }: {
|
|
28
|
+
actionManager: ActionManager;
|
|
29
|
+
showExitZenModeBtn: boolean;
|
|
30
|
+
}) => JSX.Element;
|
|
31
|
+
export declare const FinalizeAction: ({ renderAction, className, }: {
|
|
32
|
+
renderAction: ActionManager["renderAction"];
|
|
33
|
+
className?: string | undefined;
|
|
34
|
+
}) => JSX.Element;
|
|
@@ -17,6 +17,8 @@ export declare const useExcalidrawContainer: () => {
|
|
|
17
17
|
container: HTMLDivElement | null;
|
|
18
18
|
id: string | null;
|
|
19
19
|
};
|
|
20
|
+
export declare const useExcalidrawElements: () => readonly NonDeletedExcalidrawElement[];
|
|
21
|
+
export declare const useExcalidrawAppState: () => AppState;
|
|
20
22
|
declare class App extends React.Component<AppProps, AppState> {
|
|
21
23
|
canvas: AppClassProperties["canvas"];
|
|
22
24
|
rc: RoughCanvas | null;
|
|
@@ -69,6 +71,7 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
69
71
|
private removeEventListeners;
|
|
70
72
|
private addEventListeners;
|
|
71
73
|
componentDidUpdate(prevProps: AppProps, prevState: AppState): void;
|
|
74
|
+
private renderScene;
|
|
72
75
|
private onScroll;
|
|
73
76
|
private onCut;
|
|
74
77
|
private onCopy;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ActionManager } from "../actions/manager";
|
|
2
|
+
import { AppState, ExcalidrawProps } from "../types";
|
|
3
|
+
declare const Footer: ({ appState, actionManager, renderCustomFooter, showExitZenModeBtn, }: {
|
|
4
|
+
appState: AppState;
|
|
5
|
+
actionManager: ActionManager;
|
|
6
|
+
renderCustomFooter?: ExcalidrawProps["renderFooter"];
|
|
7
|
+
showExitZenModeBtn: boolean;
|
|
8
|
+
}) => JSX.Element;
|
|
9
|
+
export default Footer;
|
|
@@ -33,5 +33,5 @@ interface LayerUIProps {
|
|
|
33
33
|
insertOnCanvasDirectly: boolean;
|
|
34
34
|
}) => void;
|
|
35
35
|
}
|
|
36
|
-
declare const _default: React.MemoExoticComponent<({ actionManager, appState, files, setAppState,
|
|
36
|
+
declare const _default: React.MemoExoticComponent<({ actionManager, appState, files, setAppState, elements, canvas, onCollabButtonClick, onLockToggle, onPenModeToggle, onInsertElements, showExitZenModeBtn, showThemeBtn, isCollaborating, renderTopRightUI, renderCustomFooter, renderCustomStats, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, }: LayerUIProps) => JSX.Element>;
|
|
37
37
|
export default _default;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import Library from "../data/library";
|
|
2
2
|
import { LibraryItems, LibraryItem, AppState, BinaryFiles, ExcalidrawProps } from "../types";
|
|
3
3
|
import "./LibraryMenu.scss";
|
|
4
|
-
export declare const LibraryMenu: ({ onClose, onInsertLibraryItems, pendingElements, onAddToLibrary,
|
|
4
|
+
export declare const LibraryMenu: ({ onClose, onInsertLibraryItems, pendingElements, onAddToLibrary, setAppState, files, libraryReturnUrl, focusContainer, library, id, appState, }: {
|
|
5
5
|
pendingElements: LibraryItem["elements"];
|
|
6
6
|
onClose: () => void;
|
|
7
7
|
onInsertLibraryItems: (libraryItems: LibraryItems) => void;
|
|
8
8
|
onAddToLibrary: () => void;
|
|
9
|
-
theme: AppState["theme"];
|
|
10
9
|
files: BinaryFiles;
|
|
11
10
|
setAppState: React.Component<any, AppState>["setState"];
|
|
12
11
|
libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { AppState } from "../types";
|
|
2
|
+
import { AppState, ExcalidrawProps } from "../types";
|
|
3
3
|
import { ActionManager } from "../actions/manager";
|
|
4
4
|
import { NonDeletedExcalidrawElement } from "../element/types";
|
|
5
5
|
declare type MobileMenuProps = {
|
|
@@ -21,7 +21,7 @@ declare type MobileMenuProps = {
|
|
|
21
21
|
insertOnCanvasDirectly: boolean;
|
|
22
22
|
}) => void;
|
|
23
23
|
renderTopRightUI?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
|
|
24
|
-
|
|
24
|
+
renderCustomStats?: ExcalidrawProps["renderCustomStats"];
|
|
25
25
|
};
|
|
26
|
-
export declare const MobileMenu: ({ appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, showThemeBtn, onImageAction, renderTopRightUI,
|
|
26
|
+
export declare const MobileMenu: ({ appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, showThemeBtn, onImageAction, renderTopRightUI, renderCustomStats, }: MobileMenuProps) => JSX.Element;
|
|
27
27
|
export {};
|
package/types/data/blob.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export declare const getFileFromEvent: (event: React.DragEvent<HTMLDivElement>)
|
|
|
40
40
|
}>;
|
|
41
41
|
export declare const getFileHandle: (event: React.DragEvent<HTMLDivElement>) => Promise<FileSystemHandle | null>;
|
|
42
42
|
export declare const createFile: (blob: File | Blob | ArrayBuffer, mimeType: ValueOf<typeof MIME_TYPES>, name: string | undefined) => File;
|
|
43
|
-
/**
|
|
43
|
+
/** attempts to detect correct mimeType if none is set, or if an image
|
|
44
44
|
* has an incorrect extension.
|
|
45
45
|
* Note: doesn't handle missing .excalidraw/.excalidrawlib extension */
|
|
46
46
|
export declare const normalizeFile: (file: File) => Promise<File>;
|
|
@@ -4,9 +4,8 @@ import { NonDeletedExcalidrawElement } from "./types";
|
|
|
4
4
|
import { Bounds } from "./bounds";
|
|
5
5
|
import "./Hyperlink.scss";
|
|
6
6
|
export declare const EXTERNAL_LINK_IMG: HTMLImageElement;
|
|
7
|
-
export declare const Hyperlink: ({ element,
|
|
7
|
+
export declare const Hyperlink: ({ element, setAppState, onLinkOpen, }: {
|
|
8
8
|
element: NonDeletedExcalidrawElement;
|
|
9
|
-
appState: AppState;
|
|
10
9
|
setAppState: React.Component<any, AppState>["setState"];
|
|
11
10
|
onLinkOpen: ExcalidrawProps["onLinkOpen"];
|
|
12
11
|
}) => JSX.Element | null;
|
|
@@ -8,7 +8,7 @@ export declare const getCurvePathOps: (shape: Drawable) => Op[];
|
|
|
8
8
|
export declare const getArrowheadPoints: (element: ExcalidrawLinearElement, shape: Drawable[], position: "start" | "end", arrowhead: Arrowhead) => number[] | null;
|
|
9
9
|
export declare const getElementBounds: (element: ExcalidrawElement) => [number, number, number, number];
|
|
10
10
|
export declare const getCommonBounds: (elements: readonly ExcalidrawElement[]) => [number, number, number, number];
|
|
11
|
-
export declare const getResizedElementAbsoluteCoords: (element: ExcalidrawElement, nextWidth: number, nextHeight: number) => [number, number, number, number];
|
|
11
|
+
export declare const getResizedElementAbsoluteCoords: (element: ExcalidrawElement, nextWidth: number, nextHeight: number, normalizePoints: boolean) => [number, number, number, number];
|
|
12
12
|
export declare const getElementPointsCoords: (element: ExcalidrawLinearElement, points: readonly (readonly [number, number])[], sharpness: ExcalidrawElement["strokeSharpness"]) => [number, number, number, number];
|
|
13
13
|
export declare const getClosestElementBounds: (elements: readonly ExcalidrawElement[], from: {
|
|
14
14
|
x: number;
|
|
@@ -3,27 +3,33 @@ import { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, E
|
|
|
3
3
|
import { Point, AppState } from "../types";
|
|
4
4
|
import History from "../history";
|
|
5
5
|
import Scene from "../scene/Scene";
|
|
6
|
+
declare const editorMidPointsCache: {
|
|
7
|
+
version: number | null;
|
|
8
|
+
points: (Point | null)[];
|
|
9
|
+
zoom: number | null;
|
|
10
|
+
};
|
|
6
11
|
export declare class LinearElementEditor {
|
|
7
|
-
elementId: ExcalidrawElement["id"] & {
|
|
12
|
+
readonly elementId: ExcalidrawElement["id"] & {
|
|
8
13
|
_brand: "excalidrawLinearElementId";
|
|
9
14
|
};
|
|
10
15
|
/** indices */
|
|
11
|
-
selectedPointsIndices: readonly number[] | null;
|
|
12
|
-
pointerDownState: Readonly<{
|
|
16
|
+
readonly selectedPointsIndices: readonly number[] | null;
|
|
17
|
+
readonly pointerDownState: Readonly<{
|
|
13
18
|
prevSelectedPointsIndices: readonly number[] | null;
|
|
14
19
|
/** index */
|
|
15
20
|
lastClickedPoint: number;
|
|
16
21
|
}>;
|
|
17
22
|
/** whether you're dragging a point */
|
|
18
|
-
isDragging: boolean;
|
|
19
|
-
lastUncommittedPoint: Point | null;
|
|
20
|
-
pointerOffset: Readonly<{
|
|
23
|
+
readonly isDragging: boolean;
|
|
24
|
+
readonly lastUncommittedPoint: Point | null;
|
|
25
|
+
readonly pointerOffset: Readonly<{
|
|
21
26
|
x: number;
|
|
22
27
|
y: number;
|
|
23
28
|
}>;
|
|
24
|
-
startBindingElement: ExcalidrawBindableElement | null | "keep";
|
|
25
|
-
endBindingElement: ExcalidrawBindableElement | null | "keep";
|
|
26
|
-
hoverPointIndex: number;
|
|
29
|
+
readonly startBindingElement: ExcalidrawBindableElement | null | "keep";
|
|
30
|
+
readonly endBindingElement: ExcalidrawBindableElement | null | "keep";
|
|
31
|
+
readonly hoverPointIndex: number;
|
|
32
|
+
readonly segmentMidPointHoveredCoords: Point | null;
|
|
27
33
|
constructor(element: NonDeleted<ExcalidrawLinearElement>, scene: Scene);
|
|
28
34
|
static POINT_HANDLE_SIZE: number;
|
|
29
35
|
/**
|
|
@@ -33,11 +39,20 @@ export declare class LinearElementEditor {
|
|
|
33
39
|
static getElement(id: InstanceType<typeof LinearElementEditor>["elementId"]): NonDeleted<ExcalidrawLinearElement> | null;
|
|
34
40
|
static handleBoxSelection(event: PointerEvent, appState: AppState, setState: React.Component<any, AppState>["setState"]): false | undefined;
|
|
35
41
|
/** @returns whether point was dragged */
|
|
36
|
-
static handlePointDragging(appState: AppState, scenePointerX: number, scenePointerY: number, maybeSuggestBinding: (element: NonDeleted<ExcalidrawLinearElement>, pointSceneCoords: {
|
|
42
|
+
static handlePointDragging(event: PointerEvent, appState: AppState, scenePointerX: number, scenePointerY: number, maybeSuggestBinding: (element: NonDeleted<ExcalidrawLinearElement>, pointSceneCoords: {
|
|
37
43
|
x: number;
|
|
38
44
|
y: number;
|
|
39
45
|
}[]) => void, linearElementEditor: LinearElementEditor): boolean;
|
|
40
46
|
static handlePointerUp(event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState): LinearElementEditor;
|
|
47
|
+
static getEditorMidPoints: (element: NonDeleted<ExcalidrawLinearElement>, appState: AppState) => (typeof editorMidPointsCache)["points"];
|
|
48
|
+
static updateEditorMidPointsCache: (element: NonDeleted<ExcalidrawLinearElement>, appState: AppState) => void;
|
|
49
|
+
static getSegmentMidpointHitCoords: (linearElementEditor: LinearElementEditor, scenePointer: {
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
}, appState: AppState) => readonly [number, number] | null;
|
|
53
|
+
static isSegmentTooShort(element: NonDeleted<ExcalidrawLinearElement>, startPoint: Point, endPoint: Point, zoom: AppState["zoom"]): boolean;
|
|
54
|
+
static getSegmentMidPoint(element: NonDeleted<ExcalidrawLinearElement>, startPoint: Point, endPoint: Point, endPointIndex: number): readonly [number, number];
|
|
55
|
+
static getSegmentMidPointIndex(linearElementEditor: LinearElementEditor, appState: AppState, midPoint: Point): number;
|
|
41
56
|
static handlePointerDown(event: React.PointerEvent<HTMLCanvasElement>, appState: AppState, history: History, scenePointer: {
|
|
42
57
|
x: number;
|
|
43
58
|
y: number;
|
|
@@ -45,12 +60,14 @@ export declare class LinearElementEditor {
|
|
|
45
60
|
didAddPoint: boolean;
|
|
46
61
|
hitElement: NonDeleted<ExcalidrawElement> | null;
|
|
47
62
|
linearElementEditor: LinearElementEditor | null;
|
|
63
|
+
isMidPoint: boolean;
|
|
48
64
|
};
|
|
49
|
-
static
|
|
65
|
+
static arePointsEqual(point1: Point | null, point2: Point | null): boolean;
|
|
66
|
+
static handlePointerMove(event: React.PointerEvent<HTMLCanvasElement>, scenePointerX: number, scenePointerY: number, appState: AppState): LinearElementEditor | null;
|
|
50
67
|
/** scene coords */
|
|
51
68
|
static getPointGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, point: Point): readonly [number, number];
|
|
52
69
|
/** scene coords */
|
|
53
|
-
static getPointsGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>):
|
|
70
|
+
static getPointsGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>): Point[];
|
|
54
71
|
static getPointAtIndexGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, indexMaybeFromEnd: number): Point;
|
|
55
72
|
static pointFromAbsoluteCoords(element: NonDeleted<ExcalidrawLinearElement>, absoluteCoords: Point): Point;
|
|
56
73
|
static getPointIndexUnderCursor(element: NonDeleted<ExcalidrawLinearElement>, zoom: AppState["zoom"], x: number, y: number): number;
|
|
@@ -78,7 +95,6 @@ export declare class LinearElementEditor {
|
|
|
78
95
|
/** index */
|
|
79
96
|
lastClickedPoint: number;
|
|
80
97
|
}>;
|
|
81
|
-
/** whether you're dragging a point */
|
|
82
98
|
isDragging: boolean;
|
|
83
99
|
lastUncommittedPoint: readonly [number, number] | null;
|
|
84
100
|
pointerOffset: Readonly<{
|
|
@@ -88,6 +104,7 @@ export declare class LinearElementEditor {
|
|
|
88
104
|
startBindingElement: ExcalidrawBindableElement | "keep" | null;
|
|
89
105
|
endBindingElement: ExcalidrawBindableElement | "keep" | null;
|
|
90
106
|
hoverPointIndex: number;
|
|
107
|
+
segmentMidPointHoveredCoords: readonly [number, number] | null;
|
|
91
108
|
};
|
|
92
109
|
isLoading: boolean;
|
|
93
110
|
errorMessage: string | null;
|
|
@@ -153,7 +170,7 @@ export declare class LinearElementEditor {
|
|
|
153
170
|
shouldCacheIgnoreZoom: boolean;
|
|
154
171
|
showHelpDialog: boolean;
|
|
155
172
|
toast: {
|
|
156
|
-
message: string;
|
|
173
|
+
message: string; /** @returns whether point was dragged */
|
|
157
174
|
closable?: boolean | undefined;
|
|
158
175
|
duration?: number | undefined;
|
|
159
176
|
} | null;
|
|
@@ -188,7 +205,7 @@ export declare class LinearElementEditor {
|
|
|
188
205
|
};
|
|
189
206
|
};
|
|
190
207
|
static deletePoints(element: NonDeleted<ExcalidrawLinearElement>, pointIndices: readonly number[]): void;
|
|
191
|
-
static addPoints(element: NonDeleted<ExcalidrawLinearElement>, targetPoints: {
|
|
208
|
+
static addPoints(element: NonDeleted<ExcalidrawLinearElement>, appState: AppState, targetPoints: {
|
|
192
209
|
point: Point;
|
|
193
210
|
}[]): void;
|
|
194
211
|
static movePoints(element: NonDeleted<ExcalidrawLinearElement>, targetPoints: {
|
|
@@ -200,4 +217,6 @@ export declare class LinearElementEditor {
|
|
|
200
217
|
endBinding?: PointBinding;
|
|
201
218
|
}): void;
|
|
202
219
|
private static _updatePoints;
|
|
220
|
+
private static _getShiftLockedDelta;
|
|
203
221
|
}
|
|
222
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ExcalidrawElement, PointerType } from "./types";
|
|
1
|
+
import { ExcalidrawElement, NonDeletedExcalidrawElement, PointerType } from "./types";
|
|
2
2
|
import { Bounds } from "./bounds";
|
|
3
|
-
import { Zoom } from "../types";
|
|
3
|
+
import { AppState, Zoom } from "../types";
|
|
4
4
|
export declare type TransformHandleDirection = "n" | "s" | "w" | "e" | "nw" | "ne" | "sw" | "se";
|
|
5
5
|
export declare type TransformHandleType = TransformHandleDirection | "rotation";
|
|
6
6
|
export declare type TransformHandle = [number, number, number, number];
|
|
@@ -17,12 +17,13 @@ export declare const OMIT_SIDES_FOR_MULTIPLE_ELEMENTS: {
|
|
|
17
17
|
export declare const getTransformHandlesFromCoords: ([x1, y1, x2, y2]: Bounds, angle: number, zoom: Zoom, pointerType: PointerType, omitSides?: {
|
|
18
18
|
e?: boolean | undefined;
|
|
19
19
|
s?: boolean | undefined;
|
|
20
|
-
n?: boolean | undefined;
|
|
21
20
|
w?: boolean | undefined;
|
|
21
|
+
n?: boolean | undefined;
|
|
22
22
|
nw?: boolean | undefined;
|
|
23
23
|
ne?: boolean | undefined;
|
|
24
24
|
sw?: boolean | undefined;
|
|
25
25
|
se?: boolean | undefined;
|
|
26
26
|
rotation?: boolean | undefined;
|
|
27
|
-
}) => TransformHandles;
|
|
27
|
+
}, margin?: number) => TransformHandles;
|
|
28
28
|
export declare const getTransformHandles: (element: ExcalidrawElement, zoom: Zoom, pointerType?: PointerType) => TransformHandles;
|
|
29
|
+
export declare const shouldShowBoundingBox: (elements: NonDeletedExcalidrawElement[], appState: AppState) => boolean;
|
package/types/element/types.d.ts
CHANGED
package/types/math.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Point, Zoom } from "./types";
|
|
2
|
-
import { ExcalidrawLinearElement } from "./element/types";
|
|
2
|
+
import { ExcalidrawLinearElement, NonDeleted } from "./element/types";
|
|
3
3
|
export declare const rotate: (x1: number, y1: number, x2: number, y2: number, angle: number) => [number, number];
|
|
4
4
|
export declare const rotatePoint: (point: readonly [number, number], center: readonly [number, number], angle: number) => [number, number];
|
|
5
5
|
export declare const adjustXYWithRotation: (sides: {
|
|
@@ -18,3 +18,10 @@ export declare const centerPoint: (a: readonly [number, number], b: readonly [nu
|
|
|
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
20
|
export declare const getGridPoint: (x: number, y: number, gridSize: number | null) => [number, number];
|
|
21
|
+
export declare const getControlPointsForBezierCurve: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number]) => [number, number][] | null;
|
|
22
|
+
export declare const getBezierXY: (p0: readonly [number, number], p1: readonly [number, number], p2: readonly [number, number], p3: readonly [number, number], t: number) => number[];
|
|
23
|
+
export declare const getPointsInBezierCurve: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number]) => [number, number][];
|
|
24
|
+
export declare const getBezierCurveArcLengths: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number]) => number[];
|
|
25
|
+
export declare const getBezierCurveLength: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number]) => number;
|
|
26
|
+
export declare const mapIntervalToBezierT: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number], interval: number) => number;
|
|
27
|
+
export declare const arePointsEqual: (p1: readonly [number, number], p2: readonly [number, number]) => boolean;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -13,10 +13,13 @@ declare type ExportOpts = {
|
|
|
13
13
|
scale?: number;
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
|
-
export declare const exportToCanvas: ({ elements, appState, files, maxWidthOrHeight, getDimensions, }: ExportOpts
|
|
16
|
+
export declare const exportToCanvas: ({ elements, appState, files, maxWidthOrHeight, getDimensions, exportPadding, }: ExportOpts & {
|
|
17
|
+
exportPadding?: number | undefined;
|
|
18
|
+
}) => Promise<HTMLCanvasElement>;
|
|
17
19
|
export declare const exportToBlob: (opts: ExportOpts & {
|
|
18
20
|
mimeType?: string;
|
|
19
21
|
quality?: number;
|
|
22
|
+
exportPadding?: number;
|
|
20
23
|
}) => Promise<Blob>;
|
|
21
24
|
export declare const exportToSvg: ({ elements, appState, files, exportPadding, }: Omit<ExportOpts, "getDimensions"> & {
|
|
22
25
|
exportPadding?: number | undefined;
|
package/types/points.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ export declare const getSizeFromPoints: (points: readonly Point[]) => {
|
|
|
3
3
|
width: number;
|
|
4
4
|
height: number;
|
|
5
5
|
};
|
|
6
|
-
|
|
6
|
+
/** @arg dimension, 0 for rescaling only x, 1 for y */
|
|
7
|
+
export declare const rescalePoints: (dimension: 0 | 1, newSize: number, points: readonly Point[], normalize: boolean) => Point[];
|
|
@@ -3,7 +3,15 @@ import { RoughSVG } from "roughjs/bin/svg";
|
|
|
3
3
|
import { AppState, BinaryFiles } from "../types";
|
|
4
4
|
import { NonDeletedExcalidrawElement } from "../element/types";
|
|
5
5
|
import { RenderConfig } from "../scene/types";
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const DEFAULT_SPACING = 4;
|
|
7
|
+
export declare const _renderScene: ({ elements, appState, scale, rc, canvas, renderConfig, }: {
|
|
8
|
+
elements: readonly NonDeletedExcalidrawElement[];
|
|
9
|
+
appState: AppState;
|
|
10
|
+
scale: number;
|
|
11
|
+
rc: RoughCanvas;
|
|
12
|
+
canvas: HTMLCanvasElement;
|
|
13
|
+
renderConfig: RenderConfig;
|
|
14
|
+
}) => {
|
|
7
15
|
atLeastOneVisibleElement: boolean;
|
|
8
16
|
scrollBars?: undefined;
|
|
9
17
|
} | {
|
|
@@ -11,7 +19,15 @@ export declare const _renderScene: (elements: readonly NonDeletedExcalidrawEleme
|
|
|
11
19
|
scrollBars: import("../scene/types").ScrollBars | undefined;
|
|
12
20
|
};
|
|
13
21
|
/** renderScene throttled to animation framerate */
|
|
14
|
-
export declare const renderScene: <T extends boolean = false>(
|
|
22
|
+
export declare const renderScene: <T extends boolean = false>(config: {
|
|
23
|
+
elements: readonly NonDeletedExcalidrawElement[];
|
|
24
|
+
appState: AppState;
|
|
25
|
+
scale: number;
|
|
26
|
+
rc: RoughCanvas;
|
|
27
|
+
canvas: HTMLCanvasElement;
|
|
28
|
+
renderConfig: RenderConfig;
|
|
29
|
+
callback?: ((data: ReturnType<typeof _renderScene>) => void) | undefined;
|
|
30
|
+
}, throttle?: T | undefined) => T extends true ? void : {
|
|
15
31
|
atLeastOneVisibleElement: boolean;
|
|
16
32
|
scrollBars?: undefined;
|
|
17
33
|
} | {
|
package/types/types.d.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[429],{8525:function(e){e.exports=JSON.parse('{"labels":{"paste":"","pasteCharts":"","selectAll":"","multiSelect":"","moveCanvas":"","cut":"","copy":"","copyAsPng":"","copyAsSvg":"","copyText":"","bringForward":"","sendToBack":"","bringToFront":"","sendBackward":"","delete":"","copyStyles":"","pasteStyles":"","stroke":"","background":"","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"","sharp":"","round":"","arrowheads":"","arrowhead_none":"","arrowhead_arrow":"","arrowhead_bar":"","arrowhead_dot":"","arrowhead_triangle":"","fontSize":"","fontFamily":"","onlySelected":"","withBackground":"","exportEmbedScene":"","exportEmbedScene_details":"","addWatermark":"","handDrawn":"","normal":"","code":"","small":"","medium":"","large":"","veryLarge":"","solid":"","hachure":"","crossHatch":"","thin":"","bold":"","left":"","center":"","right":"","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"","colorPicker":"","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"","language":"","liveCollaboration":"","duplicateSelection":"","untitled":"","name":"","yourName":"","madeWithExcalidraw":"","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","toggleExportColorScheme":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","link":{"edit":"","create":"","label":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","exportToPng":"","exportToSvg":"","copyToClipboard":"","copyPngToClipboard":"","scale":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","publishLibrary":"","submit":"","confirm":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":""},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain_pre":"","headingMain_button":"","clearCanvasMessage":"","clearCanvasMessage_button":"","clearCanvasCaveat":"","trackedToSentry_pre":"","trackedToSentry_post":"","openIssueMessage_pre":"","openIssueMessage_button":"","openIssueMessage_post":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editSelectedShape":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":{"pre":"","link":"","post":""},"noteGuidelines":{"pre":"","link":"","post":""},"noteLicense":{"pre":"","link":"","post":""},"noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":"","link":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":""},"colors":{"495057":"","ffffff":"","f8f9fa":"","f1f3f5":"","fff5f5":"","fff0f6":"","f8f0fc":"","f3f0ff":"","edf2ff":"","e7f5ff":"","e3fafc":"","e6fcf5":"","ebfbee":"","f4fce3":"","fff9db":"","fff4e6":"","transparent":"","ced4da":"","868e96":"","fa5252":"","e64980":"","be4bdb":"","7950f2":"","4c6ef5":"","228be6":"","15aabf":"","12b886":"","40c057":"","82c91e":"","fab005":"","fd7e14":"","000000":"","343a40":"","c92a2a":"","a61e4d":"","862e9c":"","5f3dc4":"","364fc7":"","1864ab":"","0b7285":"","087f5b":"","2b8a3e":"","5c940d":"","e67700":"","d9480f":""}}')}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[130],{510:function(e){e.exports=JSON.parse('{"labels":{"paste":"Enganxa","pasteCharts":"Enganxa els diagrames","selectAll":"Selecciona-ho tot","multiSelect":"Afegeix un element a la selecció","moveCanvas":"Mou el llenç","cut":"Retalla","copy":"Copia","copyAsPng":"Copia al porta-retalls com a PNG","copyAsSvg":"Copia al porta-retalls com a SVG","copyText":"Copia al porta-retalls com a text","bringForward":"Porta endavant","sendToBack":"Envia enrere","bringToFront":"Porta al davant","sendBackward":"Envia al fons","delete":"Elimina","copyStyles":"Copia els estils","pasteStyles":"Enganxa els estils","stroke":"Color del traç","background":"Color del fons","fill":"Estil del fons","strokeWidth":"Amplada del traç","strokeStyle":"Estil del traç","strokeStyle_solid":"Sòlid","strokeStyle_dashed":"Guions","strokeStyle_dotted":"Punts","sloppiness":"Estil del traç","opacity":"Opacitat","textAlign":"Alineació del text","edges":"Vores","sharp":"Agut","round":"Arrodonit","arrowheads":"Puntes de fletxa","arrowhead_none":"Cap","arrowhead_arrow":"Fletxa","arrowhead_bar":"Barra","arrowhead_dot":"Punt","arrowhead_triangle":"Triangle","fontSize":"Mida de lletra","fontFamily":"Tipus de lletra","onlySelected":"Només seleccionats","withBackground":"Fons","exportEmbedScene":"Insereix l\'escena","exportEmbedScene_details":"Les dades de l’escena es desaran al fitxer PNG/SVG de manera que es pugui restaurar l’escena.\\nAugmentarà la mida del fitxer exportat.","addWatermark":"Afegeix-hi «Fet amb Excalidraw»","handDrawn":"Dibuixat a mà","normal":"Normal","code":"Codi","small":"Petit","medium":"Mitjà","large":"Gran","veryLarge":"Molt gran","solid":"Sòlid","hachure":"Ratlletes","crossHatch":"Ratlletes creuades","thin":"Fi","bold":"Negreta","left":"Esquerra","center":"Centre","right":"Dreta","extraBold":"Extra negreta","architect":"Arquitecte","artist":"Artista","cartoonist":"Dibuixant","fileTitle":"Nom del fitxer","colorPicker":"Selector de colors","canvasColors":"Usat al llenç","canvasBackground":"Fons del llenç","drawingCanvas":"Llenç de dibuix","layers":"Capes","actions":"Accions","language":"Llengua","liveCollaboration":"Col·laboració en directe","duplicateSelection":"Duplica","untitled":"Sense títol","name":"Nom","yourName":"El vostre nom","madeWithExcalidraw":"Fet amb Excalidraw","group":"Agrupa la selecció","ungroup":"Desagrupa la selecció","collaborators":"Col·laboradors","showGrid":"Mostra la graella","addToLibrary":"Afegir a la biblioteca","removeFromLibrary":"Eliminar de la biblioteca","libraryLoadingMessage":"S\'està carregant la biblioteca…","libraries":"Explora les biblioteques","loadingScene":"S\'està carregant l\'escena…","align":"Alinea","alignTop":"Alinea a la part superior","alignBottom":"Alinea a la part inferior","alignLeft":"Alinea a l’esquerra","alignRight":"Alinea a la dreta","centerVertically":"Centra verticalment","centerHorizontally":"Centra horitzontalment","distributeHorizontally":"Distribueix horitzontalment","distributeVertically":"Distribueix verticalment","flipHorizontal":"Capgira horitzontalment","flipVertical":"Capgira verticalment","viewMode":"Mode de visualització","toggleExportColorScheme":"Canvia l\'esquema de colors de l\'exportació","share":"Comparteix","showStroke":"Mostra el selector de color del traç","showBackground":"Mostra el selector de color de fons","toggleTheme":"Activa o desactiva el tema","personalLib":"Biblioteca personal","excalidrawLib":"Biblioteca d\'Excalidraw","decreaseFontSize":"Redueix la mida de la lletra","increaseFontSize":"Augmenta la mida de la lletra","unbindText":"Desvincular el text","bindText":"","link":{"edit":"Edita l\'enllaç","create":"Crea un enllaç","label":"Enllaç"},"elementLock":{"lock":"Bloca","unlock":"Desbloca","lockAll":"Bloca-ho tot","unlockAll":"Desbloca-ho tot"},"statusPublished":"Publicat","sidebarLock":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Neteja el llenç","exportJSON":"Exporta a un fitxer","exportImage":"Desa com a imatge","export":"Exporta","exportToPng":"Exporta a PNG","exportToSvg":"Exporta a SNG","copyToClipboard":"Copia al porta-retalls","copyPngToClipboard":"Copia el PNG al porta-retalls","scale":"Escala","save":"Desa al fitxer actual","saveAs":"Anomena i desa","load":"Carrega","getShareableLink":"Obté l\'enllaç per a compartir","close":"Tanca","selectLanguage":"Trieu la llengua","scrollBackToContent":"Torna al contingut","zoomIn":"Apropa\'t","zoomOut":"Allunya\'t","resetZoom":"Restableix el zoom","menu":"Menú","done":"Fet","edit":"Edita","undo":"Desfés","redo":"Refés","resetLibrary":"Restableix la biblioteca","createNewRoom":"Crea una sala nova","fullScreen":"Pantalla completa","darkMode":"Mode fosc","lightMode":"Mode clar","zenMode":"Mode zen","exitZenMode":"Surt de mode zen","cancel":"Cancel·la","clear":"Neteja","remove":"Suprimeix","publishLibrary":"Publica","submit":"Envia","confirm":"Confirma"},"alerts":{"clearReset":"S\'esborrarà tot el llenç. N\'esteu segur?","couldNotCreateShareableLink":"No s\'ha pogut crear un enllaç per a compartir.","couldNotCreateShareableLinkTooBig":"No s’ha pogut crear un enllaç per a compartir: l’escena és massa gran","couldNotLoadInvalidFile":"No s\'ha pogut carregar un fitxer no vàlid","importBackendFailed":"Importació fallida.","cannotExportEmptyCanvas":"No es pot exportar un llenç buit.","couldNotCopyToClipboard":"No s\'ha pogut copiar al porta-retalls.","decryptFailed":"No s\'ha pogut desencriptar.","uploadedSecurly":"La càrrega s\'ha assegurat amb xifratge punta a punta, cosa que significa que el servidor Excalidraw i tercers no poden llegir el contingut.","loadSceneOverridePrompt":"Si carregas aquest dibuix extern, substituirá el que tens. Vols continuar?","collabStopOverridePrompt":"Aturar la sessió provocarà la sobreescriptura del dibuix previ, que hi ha desat en l\'emmagatzematge local. N\'esteu segur?\\n\\n(Si voleu conservar el dibuix local, tanqueu la pentanya del navegador en comptes d\'aturar la sessió).","errorAddingToLibrary":"No s\'ha pogut afegir l\'element a la biblioteca","errorRemovingFromLibrary":"No s\'ha pogut eliminar l\'element de la biblioteca","confirmAddLibrary":"Això afegirà {{numShapes}} forma(es) a la vostra biblioteca. Estàs segur?","imageDoesNotContainScene":"Aquesta imatge no sembla contenir cap dada d\'escena. Heu activat l\'incrustació de l\'escena durant l\'exportació?","cannotRestoreFromImage":"L’escena no s’ha pogut restaurar des d’aquest fitxer d’imatge","invalidSceneUrl":"No s\'ha pogut importar l\'escena des de l\'adreça URL proporcionada. Està malformada o no conté dades Excalidraw JSON vàlides.","resetLibrary":"Això buidarà la biblioteca. N\'esteu segur?","removeItemsFromsLibrary":"Suprimir {{count}} element(s) de la biblioteca?","invalidEncryptionKey":"La clau d\'encriptació ha de tenir 22 caràcters. La col·laboració en directe està desactivada."},"errors":{"unsupportedFileType":"Tipus de fitxer no suportat.","imageInsertError":"No s\'ha pogut insertar la imatge, torneu-ho a provar més tard...","fileTooBig":"El fitxer és massa gros. La mida màxima permesa és {{maxSize}}.","svgImageInsertError":"No ha estat possible inserir la imatge SVG. Les marques SVG semblen invàlides.","invalidSVGString":"SVG no vàlid.","cannotResolveCollabServer":"","importLibraryError":"No s\'ha pogut carregar la biblioteca"},"toolBar":{"selection":"Selecció","image":"Insereix imatge","rectangle":"Rectangle","diamond":"Rombe","ellipse":"El·lipse","arrow":"Fletxa","line":"Línia","freedraw":"Dibuix","text":"Text","library":"Biblioteca","lock":"Mantenir activa l\'eina seleccionada desprès de dibuixar","penMode":"Evita el zoom i accepta solament el dibuix lliure amb bolígraf","link":"Afegeix / actualitza l\'enllaç per a la forma seleccionada","eraser":"Esborrador"},"headings":{"canvasActions":"Accions del llenç","selectedShapeActions":"Accions per a les formes seleccionades","shapes":"Formes"},"hints":{"canvasPanning":"Per a moure el llenç, mantingueu premuda la roda del ratolí o la tecla espai mentre l\'arrossegueu","linearElement":"Feu clic per a dibuixar múltiples punts; arrossegueu per a una sola línia","freeDraw":"Feu clic i arrossegueu, deixeu anar per a finalitzar","text":"Consell: també podeu afegir text fent doble clic en qualsevol lloc amb l\'eina de selecció","text_selected":"Feu doble clic o premeu Retorn per a editar el text","text_editing":"Premeu Escapada o Ctrl+Retorn (o Ordre+Retorn) per a finalitzar l\'edició","linearElementMulti":"Feu clic a l\'ultim punt, o pitgeu Esc o Retorn per a finalitzar","lockAngle":"Per restringir els angles, mantenir premut el majúscul (SHIFT)","resize":"Per restringir les proporcions mentres es canvia la mida, mantenir premut el majúscul (SHIFT); per canviar la mida des del centre, mantenir premut ALT","resizeImage":"Podeu redimensionar lliurement prement MAJÚSCULA;\\nper a redimensionar des del centre, premeu ALT","rotate":"Per restringir els angles mentre gira, mantenir premut el majúscul (SHIFT)","lineEditor_info":"Fes doble clic o premi Enter per editar punts","lineEditor_pointSelected":"Premeu Suprimir per a eliminar el(s) punt(s), CtrlOrCmd+D per a duplicar-lo, o arrossegueu-lo per a moure\'l","lineEditor_nothingSelected":"Seleccioneu un punt per a editar-lo (premeu SHIFT si voleu\\nselecció múltiple), o manteniu Alt i feu clic per a afegir més punts","placeImage":"Feu clic per a col·locar la imatge o clic i arrossegar per a establir-ne la mida manualment","publishLibrary":"Publiqueu la vostra pròpia llibreria","bindTextToElement":"Premeu enter per a afegir-hi text","deepBoxSelect":"Manteniu CtrlOrCmd per a selecció profunda, i per a evitar l\'arrossegament","eraserRevert":"Mantingueu premuda Alt per a revertir els elements seleccionats per a esborrar"},"canvasError":{"cannotShowPreview":"No es pot mostrar la previsualització","canvasTooBig":"Pot ser que el llenç sigui massa gran.","canvasTooBigTip":"Consell: proveu d’acostar una mica els elements més allunyats."},"errorSplash":{"headingMain_pre":"S\'ha produït un error. Proveu ","headingMain_button":"recarregar la pàgina.","clearCanvasMessage":"Si la recàrrega no funciona, proveu ","clearCanvasMessage_button":"esborrar el llenç.","clearCanvasCaveat":" Això resultarà en la pèrdua de feina ","trackedToSentry_pre":"L\'error amb l\'identificador ","trackedToSentry_post":" s\'ha rastrejat en el nostre sistema.","openIssueMessage_pre":"Anàvem amb molta cura de no incloure la informació de la vostra escena en l\'error. Si l\'escena no és privada, podeu fer-ne el seguiment al nostre ","openIssueMessage_button":"rastrejador d\'errors.","openIssueMessage_post":" Incloeu la informació a continuació copiant i enganxant a GitHub Issues.","sceneContent":"Contingut de l\'escena:"},"roomDialog":{"desc_intro":"Podeu convidar persones a la vostra escena actual a col·laborar amb vós.","desc_privacy":"No us preocupeu, la sessió utilitza el xifratge de punta a punta, de manera que qualsevol cosa que dibuixeu romandrà privada. Ni tan sols el nostre servidor podrà veure què feu.","button_startSession":"Inicia la sessió","button_stopSession":"Atura la sessió","desc_inProgressIntro":"La sessió de col·laboració en directe està en marxa.","desc_shareLink":"Comparteix aquest enllaç amb qualsevol persona amb qui vulgueu col·laborar:","desc_exitSession":"Si atureu la sessió, us desconectareu de la sala, però podreu continuar treballant amb el dibuix localment. Tingues en compte que això no afectarà a altres persones, i encara podran col·laborar en la seva versió.","shareTitle":"Uniu-vos a una sessió de col·laboració en directe a Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Desa al disc","disk_details":"Exporta les dades de l\'escena a un fitxer que després podreu importar.","disk_button":"Desa en un fitxer","link_title":"Enllaç per a compartir","link_details":"Exporta com a un enllaç de només lectura.","link_button":"Exporta a un enllaç","excalidrawplus_description":"Desa l\'escena en el vostre espai de treball Excalidraw+.","excalidrawplus_button":"Exporta","excalidrawplus_exportError":"No és possible exportar a Excalidraw+ ara mateix..."},"helpDialog":{"blog":"Llegiu el nostre blog","click":"clic","deepSelect":"Selecció profunda","deepBoxSelect":"","curvedArrow":"Fletxa corba","curvedLine":"Línia corba","documentation":"Documentació","doubleClick":"doble clic","drag":"arrossega","editor":"Editor","editSelectedShape":"Edita la forma seleccionada (text, fletxa o línia)","github":"Hi heu trobat un problema? Informeu-ne","howto":"Seguiu les nostres guies","or":"o","preventBinding":"Prevenir vinculació de la fletxa","tools":"Eines","shortcuts":"Dreceres de teclat","textFinish":"Finalitza l\'edició (editor de text)","textNewLine":"Afegeix una línia nova (editor de text)","title":"Ajuda","view":"Visualització","zoomToFit":"Zoom per veure tots els elements","zoomToSelection":"Zoom per veure la selecció","toggleElementLock":""},"clearCanvasDialog":{"title":"Neteja el llenç"},"publishDialog":{"title":"Publica la biblioteca","itemName":"Nom de l\'element","authorName":"Nom de l\'autor/a","githubUsername":"Nom d\'usuari de GitHub","twitterUsername":"Nom d\'usuari de Twitter","libraryName":"Nom de la biblioteca","libraryDesc":"Descripció de la biblioteca","website":"Lloc web","placeholder":{"authorName":"Nom o usuari","libraryName":"Nom de la vostra biblioteca","libraryDesc":"Descripció de la biblioteca per a ajudar a la gent a entendre\'n el funcionament","githubHandle":"","twitterHandle":"Usuari de twitter (opcional), per tal que puguem donar-vos crèdit quan fem la promoció a Twitter","website":"Enllaç al vostre lloc web personal o a qualsevol altre (opcional)"},"errors":{"required":"Requerit","website":"Introduïu una URL vàlida"},"noteDescription":{"pre":"Envieu la vostra biblioteca perquè sigui inclosa al ","link":"repositori públic","post":"per tal que altres persones puguin fer-ne ús en els seus dibuixos."},"noteGuidelines":{"pre":"La biblioteca ha de ser aprovada manualment. Si us plau, llegiu les ","link":"directrius","post":" abans d\'enviar-hi res. Necessitareu un compte de GitHub per a comunicar i fer-hi canvis si cal, però no és requisit imprescindible."},"noteLicense":{"pre":"Quan l\'envieu, accepteu que la biblioteca sigui publicada sota la ","link":"llicència MIT, ","post":"que, en resum, vol dir que qualsevol persona pot fer-ne ús sense restriccions."},"noteItems":"Cada element de la biblioteca ha de tenir el seu propi nom per tal que sigui filtrable. S\'hi inclouran els elements següents:","atleastOneLibItem":"Si us plau, seleccioneu si més no un element de la biblioteca per a començar","republishWarning":"Nota: alguns dels elements seleccionats s\'han marcat com a publicats/enviats. Només hauríeu de reenviar elements quan actualitzeu una biblioteca existent."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Gràcies, {{authorName}}. La vostra biblioteca ha estat enviada per a ser revisada. Podeu comprovar-ne l\'estat","link":"aquí"},"confirmDialog":{"resetLibrary":"Restableix la biblioteca","removeItemsFromLib":"Suprimeix els elements seleccionats de la llibreria"},"encrypted":{"tooltip":"Els vostres dibuixos estan xifrats de punta a punta de manera que els servidors d’Excalidraw no els veuran mai.","link":"Article del blog sobre encriptació d\'extrem a extrem a Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Altura","scene":"Escena","selected":"Seleccionat","storage":"Emmagatzematge","title":"Estadístiques per nerds","total":"Total","version":"Versió","versionCopy":"Feu clic per a copiar","versionNotAvailable":"Versió no disponible","width":"Amplada"},"toast":{"addedToLibrary":"Afegit a la biblioteca","copyStyles":"S\'han copiat els estils.","copyToClipboard":"S\'ha copiat al porta-retalls.","copyToClipboardAsPng":"S\'ha copiat {{exportSelection}} al porta-retalls en format PNG\\n({{exportColorScheme}})","fileSaved":"S\'ha desat el fitxer.","fileSavedToFilename":"S\'ha desat a {filename}","canvas":"el llenç","selection":"la selecció"},"colors":{"495057":"Gris 7","ffffff":"Blanc","f8f9fa":"Gris 0","f1f3f5":"Gris 1","fff5f5":"Vermell 0","fff0f6":"Rosa 0","f8f0fc":"Malva 0","f3f0ff":"Violat 0","edf2ff":"Indi 0","e7f5ff":"Blau 0","e3fafc":"Cian 0","e6fcf5":"Xarxet 0","ebfbee":"Verd 0","f4fce3":"Llima 0","fff9db":"Groc 0","fff4e6":"Taronja 0","transparent":"Transparent","ced4da":"Gris 4","868e96":"Gris 6","fa5252":"Vermell 6","e64980":"Rosa 6","be4bdb":"Malva 6","7950f2":"Violat 6","4c6ef5":"Indi 6","228be6":"Blau 6","15aabf":"Cian 6","12b886":"Xarxet 6","40c057":"Verd 6","82c91e":"Llima 6","fab005":"Groc 6","fd7e14":"Taronja 6","000000":"Negre","343a40":"Gris 8","c92a2a":"Vermell 9","a61e4d":"Rosa 9","862e9c":"Malva 9","5f3dc4":"Violat 9","364fc7":"Indi 9","1864ab":"Blau 9","0b7285":"Cian 9","087f5b":"Xarxet 9","2b8a3e":"Verd 9","5c940d":"Llima 9","e67700":"Groc 9","d9480f":"Taronja 9"}}')}}]);
|