@excalidraw/excalidraw 0.12.0-46a61ad → 0.12.0-4cb6f09

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.
Files changed (65) hide show
  1. package/CHANGELOG.md +7 -850
  2. package/README.md +17 -11
  3. package/dist/excalidraw-assets/locales/bn-BD-json-906099d3f665de611389.js +1 -0
  4. package/dist/excalidraw-assets/locales/lt-LT-json-4147c3543dce75362050.js +1 -0
  5. package/dist/excalidraw-assets/locales/vi-VN-json-929afcbc15b2c06a64f2.js +1 -0
  6. package/dist/excalidraw-assets/vendor-cb04f63875674d708080.js +2 -0
  7. package/dist/excalidraw-assets/{vendor-52b1f3361986b6c6a4fe.js.LICENSE.txt → vendor-cb04f63875674d708080.js.LICENSE.txt} +0 -0
  8. package/dist/excalidraw-assets-dev/locales/bn-BD-json-c3b027e18322cd5f67dd.js +22 -0
  9. package/dist/excalidraw-assets-dev/locales/lt-LT-json-09b44716baf6aae6bf11.js +22 -0
  10. package/dist/excalidraw-assets-dev/locales/{bn-BD-json-02993b6dba9e7f115b53.js → vi-VN-json-03f122275dad01552357.js} +4 -4
  11. package/dist/excalidraw-assets-dev/{vendor-c0592035c3911af79359.js → vendor-e6df8519da951026ff69.js} +1 -1
  12. package/dist/excalidraw.development.js +48 -59
  13. package/dist/excalidraw.production.min.js +1 -1
  14. package/dist/excalidraw.production.min.js.LICENSE.txt +0 -9
  15. package/package.json +1 -1
  16. package/types/actions/actionAddToLibrary.d.ts +3 -3
  17. package/types/actions/actionBoundText.d.ts +1 -1
  18. package/types/actions/actionCanvas.d.ts +8 -8
  19. package/types/actions/actionClipboard.d.ts +6 -6
  20. package/types/actions/actionDeleteSelected.d.ts +4 -4
  21. package/types/actions/actionExport.d.ts +10 -10
  22. package/types/actions/actionFinalize.d.ts +2 -2
  23. package/types/actions/actionMenu.d.ts +3 -3
  24. package/types/actions/actionProperties.d.ts +13 -13
  25. package/types/actions/actionStyles.d.ts +1 -1
  26. package/types/actions/actionToggleGridMode.d.ts +1 -1
  27. package/types/actions/actionToggleLock.d.ts +1 -1
  28. package/types/actions/actionToggleStats.d.ts +1 -1
  29. package/types/actions/actionToggleViewMode.d.ts +1 -1
  30. package/types/actions/actionToggleZenMode.d.ts +1 -1
  31. package/types/appState.d.ts +1 -1
  32. package/types/components/Actions.d.ts +13 -2
  33. package/types/components/App.d.ts +2 -0
  34. package/types/components/BackgroundPickerAndDarkModeToggle.d.ts +1 -6
  35. package/types/components/Footer.d.ts +9 -0
  36. package/types/components/InitializeApp.d.ts +2 -0
  37. package/types/components/LayerUI.d.ts +1 -2
  38. package/types/components/LibraryMenu.d.ts +1 -2
  39. package/types/components/LoadingMessage.d.ts +2 -0
  40. package/types/components/MobileMenu.d.ts +3 -4
  41. package/types/components/Stats.d.ts +1 -1
  42. package/types/constants.d.ts +5 -0
  43. package/types/data/blob.d.ts +1 -1
  44. package/types/element/Hyperlink.d.ts +2 -3
  45. package/types/element/linearElementEditor.d.ts +20 -9
  46. package/types/element/newElement.d.ts +6 -1
  47. package/types/element/textElement.d.ts +6 -2
  48. package/types/element/types.d.ts +2 -2
  49. package/types/math.d.ts +8 -1
  50. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{bn-BD-json-aa99c5a33f005fb00c6b.d.ts → bn-BD-json-906099d3f665de611389.d.ts} +0 -0
  51. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{lt-LT-json-7277ad8dae6d3e6607b3.d.ts → lt-LT-json-4147c3543dce75362050.d.ts} +0 -0
  52. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{vi-VN-json-5c276b534d762658589c.d.ts → vi-VN-json-929afcbc15b2c06a64f2.d.ts} +0 -0
  53. package/types/packages/excalidraw/dist/excalidraw-assets/{vendor-52b1f3361986b6c6a4fe.d.ts → vendor-cb04f63875674d708080.d.ts} +0 -0
  54. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{bn-BD-json-02993b6dba9e7f115b53.d.ts → bn-BD-json-c3b027e18322cd5f67dd.d.ts} +0 -0
  55. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{lt-LT-json-a17971ff33b8929e96d3.d.ts → lt-LT-json-09b44716baf6aae6bf11.d.ts} +0 -0
  56. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{vi-VN-json-670ecb0ad40c0453bdfd.d.ts → vi-VN-json-03f122275dad01552357.d.ts} +0 -0
  57. package/types/packages/excalidraw/dist/excalidraw-assets-dev/{vendor-c0592035c3911af79359.d.ts → vendor-e6df8519da951026ff69.d.ts} +0 -0
  58. package/types/packages/utils.d.ts +4 -1
  59. package/types/types.d.ts +1 -1
  60. package/dist/excalidraw-assets/locales/bn-BD-json-aa99c5a33f005fb00c6b.js +0 -1
  61. package/dist/excalidraw-assets/locales/lt-LT-json-7277ad8dae6d3e6607b3.js +0 -1
  62. package/dist/excalidraw-assets/locales/vi-VN-json-5c276b534d762658589c.js +0 -1
  63. package/dist/excalidraw-assets/vendor-52b1f3361986b6c6a4fe.js +0 -2
  64. package/dist/excalidraw-assets-dev/locales/lt-LT-json-a17971ff33b8929e96d3.js +0 -22
  65. package/dist/excalidraw-assets-dev/locales/vi-VN-json-670ecb0ad40c0453bdfd.js +0 -22
@@ -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, theme, setAppState, files, libraryReturnUrl, focusContainer, library, id, appState, }: {
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,4 +1,6 @@
1
1
  /// <reference types="react" />
2
+ import { Theme } from "../element/types";
2
3
  export declare const LoadingMessage: React.FC<{
3
4
  delay?: number;
5
+ theme?: Theme;
4
6
  }>;
@@ -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 = {
@@ -16,12 +16,11 @@ declare type MobileMenuProps = {
16
16
  canvas: HTMLCanvasElement | null;
17
17
  isCollaborating: boolean;
18
18
  renderCustomFooter?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
19
- showThemeBtn: boolean;
20
19
  onImageAction: (data: {
21
20
  insertOnCanvasDirectly: boolean;
22
21
  }) => void;
23
22
  renderTopRightUI?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
24
- renderStats: () => JSX.Element | null;
23
+ renderCustomStats?: ExcalidrawProps["renderCustomStats"];
25
24
  };
26
- export declare const MobileMenu: ({ appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, showThemeBtn, onImageAction, renderTopRightUI, renderStats, }: MobileMenuProps) => JSX.Element;
25
+ export declare const MobileMenu: ({ appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, onImageAction, renderTopRightUI, renderCustomStats, }: MobileMenuProps) => JSX.Element;
27
26
  export {};
@@ -8,4 +8,4 @@ export declare const Stats: (props: {
8
8
  elements: readonly NonDeletedExcalidrawElement[];
9
9
  onClose: () => void;
10
10
  renderCustomStats: ExcalidrawProps["renderCustomStats"];
11
- }) => JSX.Element | null;
11
+ }) => JSX.Element;
@@ -139,6 +139,11 @@ export declare const VERTICAL_ALIGN: {
139
139
  MIDDLE: string;
140
140
  BOTTOM: string;
141
141
  };
142
+ export declare const TEXT_ALIGN: {
143
+ LEFT: string;
144
+ CENTER: string;
145
+ RIGHT: string;
146
+ };
142
147
  export declare const ELEMENT_READY_TO_ERASE_OPACITY = 20;
143
148
  export declare const COOKIES: {
144
149
  readonly AUTH_STATE_COOKIE: "excplus-auth";
@@ -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
- /** attemps to detect correct mimeType if none is set, or if an image
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, appState, setAppState, onLinkOpen, }: {
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;
@@ -56,7 +55,7 @@ export declare const actionLink: {
56
55
  currentItemOpacity: number;
57
56
  currentItemFontFamily: number;
58
57
  currentItemFontSize: number;
59
- currentItemTextAlign: import("./types").TextAlign;
58
+ currentItemTextAlign: string;
60
59
  currentItemStrokeSharpness: import("./types").StrokeSharpness;
61
60
  currentItemStartArrowhead: import("./types").Arrowhead | null;
62
61
  currentItemEndArrowhead: import("./types").Arrowhead | null;
@@ -3,6 +3,11 @@ 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
12
  readonly elementId: ExcalidrawElement["id"] & {
8
13
  _brand: "excalidrawLinearElementId";
@@ -24,7 +29,7 @@ export declare class LinearElementEditor {
24
29
  readonly startBindingElement: ExcalidrawBindableElement | null | "keep";
25
30
  readonly endBindingElement: ExcalidrawBindableElement | null | "keep";
26
31
  readonly hoverPointIndex: number;
27
- readonly midPointHovered: boolean;
32
+ readonly segmentMidPointHoveredCoords: Point | null;
28
33
  constructor(element: NonDeleted<ExcalidrawLinearElement>, scene: Scene);
29
34
  static POINT_HANDLE_SIZE: number;
30
35
  /**
@@ -39,11 +44,15 @@ export declare class LinearElementEditor {
39
44
  y: number;
40
45
  }[]) => void, linearElementEditor: LinearElementEditor): boolean;
41
46
  static handlePointerUp(event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState): LinearElementEditor;
42
- static isHittingMidPoint: (linearElementEditor: LinearElementEditor, scenePointer: {
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: {
43
50
  x: number;
44
51
  y: number;
45
- }, appState: AppState) => boolean;
46
- static getMidPoint(linearElementEditor: LinearElementEditor): readonly [number, number] | null;
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;
47
56
  static handlePointerDown(event: React.PointerEvent<HTMLCanvasElement>, appState: AppState, history: History, scenePointer: {
48
57
  x: number;
49
58
  y: number;
@@ -53,7 +62,8 @@ export declare class LinearElementEditor {
53
62
  linearElementEditor: LinearElementEditor | null;
54
63
  isMidPoint: boolean;
55
64
  };
56
- static handlePointerMove(event: React.PointerEvent<HTMLCanvasElement>, scenePointerX: number, scenePointerY: number, linearElementEditor: LinearElementEditor, gridSize: number | null): LinearElementEditor;
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;
57
67
  /** scene coords */
58
68
  static getPointGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, point: Point): readonly [number, number];
59
69
  /** scene coords */
@@ -94,7 +104,7 @@ export declare class LinearElementEditor {
94
104
  startBindingElement: ExcalidrawBindableElement | "keep" | null;
95
105
  endBindingElement: ExcalidrawBindableElement | "keep" | null;
96
106
  hoverPointIndex: number;
97
- midPointHovered: boolean;
107
+ segmentMidPointHoveredCoords: readonly [number, number] | null;
98
108
  };
99
109
  isLoading: boolean;
100
110
  errorMessage: string | null;
@@ -132,7 +142,7 @@ export declare class LinearElementEditor {
132
142
  currentItemOpacity: number;
133
143
  currentItemFontFamily: number;
134
144
  currentItemFontSize: number;
135
- currentItemTextAlign: import("./types").TextAlign;
145
+ currentItemTextAlign: string;
136
146
  currentItemStrokeSharpness: import("./types").StrokeSharpness;
137
147
  currentItemStartArrowhead: import("./types").Arrowhead | null;
138
148
  currentItemEndArrowhead: import("./types").Arrowhead | null;
@@ -160,7 +170,7 @@ export declare class LinearElementEditor {
160
170
  shouldCacheIgnoreZoom: boolean;
161
171
  showHelpDialog: boolean;
162
172
  toast: {
163
- message: string;
173
+ message: string; /** @returns whether point was dragged */
164
174
  closable?: boolean | undefined;
165
175
  duration?: number | undefined;
166
176
  } | null;
@@ -195,7 +205,7 @@ export declare class LinearElementEditor {
195
205
  };
196
206
  };
197
207
  static deletePoints(element: NonDeleted<ExcalidrawLinearElement>, pointIndices: readonly number[]): void;
198
- static addPoints(element: NonDeleted<ExcalidrawLinearElement>, targetPoints: {
208
+ static addPoints(element: NonDeleted<ExcalidrawLinearElement>, appState: AppState, targetPoints: {
199
209
  point: Point;
200
210
  }[]): void;
201
211
  static movePoints(element: NonDeleted<ExcalidrawLinearElement>, targetPoints: {
@@ -209,3 +219,4 @@ export declare class LinearElementEditor {
209
219
  private static _updatePoints;
210
220
  private static _getShiftLockedDelta;
211
221
  }
222
+ export {};
@@ -12,7 +12,9 @@ export declare const newTextElement: (opts: {
12
12
  verticalAlign: VerticalAlign;
13
13
  containerId?: ExcalidrawRectangleElement["id"];
14
14
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawTextElement>;
15
- export declare const updateTextElement: (element: ExcalidrawTextElement, { text, isDeleted, originalText, }: {
15
+ export declare const getMaxContainerWidth: (container: ExcalidrawElement) => number;
16
+ export declare const getMaxContainerHeight: (container: ExcalidrawElement) => number;
17
+ export declare const updateTextElement: (textElement: ExcalidrawTextElement, { text, isDeleted, originalText, }: {
16
18
  text: string;
17
19
  isDeleted?: boolean | undefined;
18
20
  originalText: string;
@@ -30,6 +32,9 @@ export declare const newLinearElement: (opts: {
30
32
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawLinearElement>;
31
33
  export declare const newImageElement: (opts: {
32
34
  type: ExcalidrawImageElement["type"];
35
+ status?: ExcalidrawImageElement["status"];
36
+ fileId?: ExcalidrawImageElement["fileId"];
37
+ scale?: ExcalidrawImageElement["scale"];
33
38
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawImageElement>;
34
39
  export declare const deepCopyElement: (val: any, depth?: number) => any;
35
40
  /**
@@ -1,6 +1,6 @@
1
1
  import { ExcalidrawElement, ExcalidrawTextElement, ExcalidrawTextElementWithContainer, FontString, NonDeletedExcalidrawElement } from "./types";
2
2
  import { MaybeTransformHandleType } from "./transformHandles";
3
- export declare const redrawTextBoundingBox: (element: ExcalidrawTextElement, container: ExcalidrawElement | null) => void;
3
+ export declare const redrawTextBoundingBox: (textElement: ExcalidrawTextElement, container: ExcalidrawElement | null) => void;
4
4
  export declare const bindTextToShapeAfterDuplication: (sceneElements: ExcalidrawElement[], oldElements: ExcalidrawElement[], oldIdToDuplicatedId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>) => void;
5
5
  export declare const handleBindTextResize: (element: NonDeletedExcalidrawElement, transformHandleType: MaybeTransformHandleType) => void;
6
6
  export declare const measureText: (text: string, font: FontString, maxWidth?: number | null) => {
@@ -9,7 +9,7 @@ export declare const measureText: (text: string, font: FontString, maxWidth?: nu
9
9
  baseline: number;
10
10
  };
11
11
  export declare const getApproxLineHeight: (font: FontString) => number;
12
- export declare const wrapText: (text: string, font: FontString, containerWidth: number) => string;
12
+ export declare const wrapText: (text: string, font: FontString, maxWidth: number) => string;
13
13
  export declare const charWidth: {
14
14
  calculate: (char: string, font: FontString) => number;
15
15
  getCache: (font: FontString) => number[];
@@ -24,3 +24,7 @@ export declare const getBoundTextElement: (element: ExcalidrawElement | null) =>
24
24
  export declare const getContainerElement: (element: (ExcalidrawElement & {
25
25
  containerId: ExcalidrawElement["id"] | null;
26
26
  }) | null) => ExcalidrawElement | null;
27
+ export declare const getContainerDims: (element: ExcalidrawElement) => {
28
+ width: number;
29
+ height: number;
30
+ };
@@ -1,5 +1,5 @@
1
1
  import { Point } from "../types";
2
- import { FONT_FAMILY, THEME, VERTICAL_ALIGN } from "../constants";
2
+ import { FONT_FAMILY, TEXT_ALIGN, THEME, VERTICAL_ALIGN } from "../constants";
3
3
  export declare type ChartType = "bar" | "line";
4
4
  export declare type FillStyle = "hachure" | "cross-hatch" | "solid";
5
5
  export declare type FontFamilyKeys = keyof typeof FONT_FAMILY;
@@ -12,7 +12,7 @@ export declare type GroupId = string;
12
12
  export declare type PointerType = "mouse" | "pen" | "touch";
13
13
  export declare type StrokeSharpness = "round" | "sharp";
14
14
  export declare type StrokeStyle = "solid" | "dashed" | "dotted";
15
- export declare type TextAlign = "left" | "center" | "right";
15
+ export declare type TextAlign = typeof TEXT_ALIGN[keyof typeof TEXT_ALIGN];
16
16
  declare type VerticalAlignKeys = keyof typeof VERTICAL_ALIGN;
17
17
  export declare type VerticalAlign = typeof VERTICAL_ALIGN[VerticalAlignKeys];
18
18
  declare type _ExcalidrawElementBase = Readonly<{
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;
@@ -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) => Promise<HTMLCanvasElement>;
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/types.d.ts CHANGED
@@ -260,7 +260,7 @@ declare type CanvasActions = {
260
260
  export?: false | ExportOpts;
261
261
  loadScene?: boolean;
262
262
  saveToActiveFile?: boolean;
263
- theme?: boolean;
263
+ toggleTheme?: boolean | null;
264
264
  saveAsImage?: boolean;
265
265
  };
266
266
  export declare type AppProps = Merge<ExcalidrawProps, {
@@ -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([[340],{3755:function(e){e.exports=JSON.parse('{"labels":{"paste":"Įklijuoti","pasteCharts":"Įklijuoti diagramas","selectAll":"Pažymėti viską","multiSelect":"","moveCanvas":"","cut":"Iškirpti","copy":"Kopijuoti","copyAsPng":"","copyAsSvg":"","copyText":"","bringForward":"","sendToBack":"","bringToFront":"","sendBackward":"","delete":"Ištrinti","copyStyles":"Kopijuoti stilius","pasteStyles":"Įklijuoti stilius","stroke":"Linija","background":"Fonas","fill":"Užpildymas","strokeWidth":"Linijos storis","strokeStyle":"Linijos stilius","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"Kraštai","sharp":"","round":"","arrowheads":"","arrowhead_none":"","arrowhead_arrow":"","arrowhead_bar":"","arrowhead_dot":"","arrowhead_triangle":"Trikampis","fontSize":"","fontFamily":"","onlySelected":"","withBackground":"","exportEmbedScene":"","exportEmbedScene_details":"","addWatermark":"Sukurta su Excalidraw","handDrawn":"","normal":"Normalus","code":"Kodas","small":"Mažas","medium":"Vidutinis","large":"Didelis","veryLarge":"","solid":"","hachure":"","crossHatch":"","thin":"","bold":"","left":"","center":"","right":"","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"Failo pavadinimas","colorPicker":"","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"","language":"","liveCollaboration":"","duplicateSelection":"","untitled":"","name":"","yourName":"Jūsų vardas","madeWithExcalidraw":"Sukurta su Excalidraw","group":"Grupuoti pasirinkimą","ungroup":"Išgrupuoti pasirinkimą","collaborators":"Bendradarbiautojai","showGrid":"Rodyti tinklelį","addToLibrary":"Pridėti į biblioteką","removeFromLibrary":"Pašalinti iš bibliotekos","libraryLoadingMessage":"","libraries":"Naršyti bibliotekas","loadingScene":"","align":"Lygiuoti","alignTop":"Lygiuoti viršuje","alignBottom":"Lygiuoti apačioje","alignLeft":"Lygiuoti kairėje","alignRight":"Lygiuoti dešinėje","centerVertically":"Centruoti vertikaliai","centerHorizontally":"Centruoti horizontaliai","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"Apversti horizontaliai","flipVertical":"Apversti vertikaliai","viewMode":"","toggleExportColorScheme":"","share":"Dalintis","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"Asmeninė biblioteka","excalidrawLib":"Exaclidraw biblioteka","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","link":{"edit":"","create":"","label":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"Eksportuoti į failą","exportImage":"Išsaugoti kaip paveikslėlį","export":"Eksportuoti","exportToPng":"Eksportuoti į PNG","exportToSvg":"Eksportuoti į SVG","copyToClipboard":"Kopijuoti į iškarpinę","copyPngToClipboard":"Kopijuoti PNG į iškarpinę","scale":"","save":"","saveAs":"Išsaugoti kaip","load":"Įkelti","getShareableLink":"Gauti nuorodą dalinimuisi","close":"Uždaryti","selectLanguage":"Pasirinkite kalbą","scrollBackToContent":"","zoomIn":"Priartinti","zoomOut":"Nutolinti","resetZoom":"","menu":"Meniu","done":"","edit":"Redaguoti","undo":"Anuliuoti","redo":"","resetLibrary":"Atstatyti biblioteką","createNewRoom":"Sukurti naują kambarį","fullScreen":"Visas ekranas","darkMode":"Tamsus režimas","lightMode":"Šviesus režimas","zenMode":"„Zen“ režimas","exitZenMode":"Išeiti iš „Zen“ režimo","cancel":"Atšaukti","clear":"Išvalyti","remove":"Pašalinti","publishLibrary":"Paskelbti","submit":"Pateikti","confirm":"Patvirtinti"},"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":"Piešti","text":"Tekstas","library":"Biblioteka","lock":"","penMode":"","link":"","eraser":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":"Figūros"},"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":"Pradėti seansą","button_stopSession":"Sustabdyti seansą","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Klaida"},"exportDialog":{"disk_title":"Įrašyti į diską","disk_details":"","disk_button":"Įrašyti į failą","link_title":"Nuoroda dalinimuisi","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"vilkti","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":"Tinklalapis","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":"čia"},"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([[0],{456:function(e){e.exports=JSON.parse('{"labels":{"paste":"Dán","pasteCharts":"","selectAll":"Chọn tất cả","multiSelect":"","moveCanvas":"","cut":"Cắt","copy":"Sao chép","copyAsPng":"Sao chép vào bộ nhớ tạm dưới dạng PNG","copyAsSvg":"Sao chép vào bộ nhớ tạm dưới dạng SVG","copyText":"Sao chép vào bộ nhớ tạm dưới dạng chữ","bringForward":"Đưa ra trước","sendToBack":"Hạ xuống dưới","bringToFront":"Đưa ra đầu tiên","sendBackward":"Hạ xuống cuối","delete":"Xóa","copyStyles":"Sao chép định dạng","pasteStyles":"Dán định dạng","stroke":"Nét","background":"Nền","fill":"Fill","strokeWidth":"Độ dày nét","strokeStyle":"Kiểu nét","strokeStyle_solid":"Khối","strokeStyle_dashed":"Gạch ngang","strokeStyle_dotted":"Nhiều chấm","sloppiness":"Hoa văn nét","opacity":"Độ trong suốt","textAlign":"Căn chỉnh văn bản","edges":"Cạnh","sharp":"Nhọn","round":"Tròn","arrowheads":"Đầu mũi tên","arrowhead_none":"Không","arrowhead_arrow":"Mũi tên","arrowhead_bar":"Thanh","arrowhead_dot":"Chấm","arrowhead_triangle":"Tam giác","fontSize":"Cỡ chữ","fontFamily":"Phông chữ","onlySelected":"Chỉ lựa chọn","withBackground":"Nền","exportEmbedScene":"","exportEmbedScene_details":"","addWatermark":"","handDrawn":"","normal":"Bình thường","code":"Mã","small":"Nhỏ","medium":"Vừa","large":"Lớn","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":"Làm với Excalidraw","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"Phân bố theo chiều ngang","distributeVertically":"Phân bố theo chiều dọc","flipHorizontal":"Lật ngang","flipVertical":"Lật dọc","viewMode":"Chế độ xem","toggleExportColorScheme":"","share":"Chia sẻ","showStroke":"Hiển thị chọn màu","showBackground":"Hiện thị chọn màu nền","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":""}}')}}]);