@excalidraw/excalidraw 0.12.0-501397c → 0.12.0-5390617

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 (112) hide show
  1. package/CHANGELOG.md +9 -850
  2. package/README.md +22 -10
  3. package/dist/excalidraw-assets/locales/bn-BD-json-906099d3f665de611389.js +1 -0
  4. package/dist/excalidraw-assets/locales/ca-ES-json-7f3f0a2c7f428fa60e01.js +1 -0
  5. package/dist/excalidraw-assets/locales/cs-CZ-json-304d08cac870aa0684ec.js +1 -0
  6. package/dist/excalidraw-assets/locales/el-GR-json-18ce48894d32ca4895b8.js +1 -0
  7. package/dist/excalidraw-assets/locales/es-ES-json-69a6c81b0e5dc370ea1a.js +1 -0
  8. package/dist/{excalidraw-assets-dev/locales/ja-JP-json-41b80357462192231c17.js → excalidraw-assets/locales/ja-JP-json-4c357f8206b88dc44840.js} +1 -22
  9. package/dist/excalidraw-assets/locales/ko-KR-json-8e7ae1bb19a7677a8190.js +1 -0
  10. package/dist/excalidraw-assets/locales/lt-LT-json-4147c3543dce75362050.js +1 -0
  11. package/dist/excalidraw-assets/locales/pt-BR-json-4ffa2f70c2863bca4f91.js +1 -0
  12. package/dist/excalidraw-assets/locales/pt-PT-json-4368eca89d2b2b3fb444.js +1 -0
  13. package/dist/excalidraw-assets/locales/vi-VN-json-929afcbc15b2c06a64f2.js +1 -0
  14. package/dist/excalidraw-assets/vendor-cb04f63875674d708080.js +2 -0
  15. package/dist/excalidraw-assets/{vendor-52b1f3361986b6c6a4fe.js.LICENSE.txt → vendor-cb04f63875674d708080.js.LICENSE.txt} +0 -0
  16. package/dist/excalidraw-assets-dev/locales/bn-BD-json-c3b027e18322cd5f67dd.js +22 -0
  17. package/dist/excalidraw-assets-dev/locales/ca-ES-json-465e286330127bad8841.js +22 -0
  18. package/dist/excalidraw-assets-dev/locales/cs-CZ-json-a9cc158d187424de71d7.js +22 -0
  19. package/dist/excalidraw-assets-dev/locales/el-GR-json-33bcaca5c1eb85d3d81a.js +22 -0
  20. package/dist/excalidraw-assets-dev/locales/es-ES-json-41e67e045d8f77e56a7a.js +22 -0
  21. package/dist/excalidraw-assets-dev/locales/ja-JP-json-77b3461742458e757b59.js +22 -0
  22. package/dist/excalidraw-assets-dev/locales/ko-KR-json-b6b0f0c8dc22ac7a3377.js +22 -0
  23. package/dist/excalidraw-assets-dev/locales/lt-LT-json-09b44716baf6aae6bf11.js +22 -0
  24. package/dist/excalidraw-assets-dev/locales/pt-BR-json-5abf09146a4f4387393d.js +22 -0
  25. package/dist/excalidraw-assets-dev/locales/pt-PT-json-c72abd8cf29d14347cf5.js +22 -0
  26. package/dist/excalidraw-assets-dev/locales/{bn-BD-json-02993b6dba9e7f115b53.js → vi-VN-json-03f122275dad01552357.js} +4 -4
  27. package/dist/excalidraw-assets-dev/{vendor-c0592035c3911af79359.js → vendor-e6df8519da951026ff69.js} +1 -1
  28. package/dist/excalidraw.development.js +63 -63
  29. package/dist/excalidraw.production.min.js +1 -1
  30. package/dist/excalidraw.production.min.js.LICENSE.txt +0 -9
  31. package/package.json +1 -1
  32. package/types/actions/actionAddToLibrary.d.ts +3 -0
  33. package/types/actions/actionBoundText.d.ts +1 -0
  34. package/types/actions/actionCanvas.d.ts +8 -0
  35. package/types/actions/actionClipboard.d.ts +7 -0
  36. package/types/actions/actionDeleteSelected.d.ts +5 -0
  37. package/types/actions/actionExport.d.ts +10 -1
  38. package/types/actions/actionFinalize.d.ts +2 -0
  39. package/types/actions/actionMenu.d.ts +3 -0
  40. package/types/actions/actionProperties.d.ts +13 -0
  41. package/types/actions/actionSelectAll.d.ts +1 -1
  42. package/types/actions/actionStyles.d.ts +1 -0
  43. package/types/actions/actionToggleGridMode.d.ts +1 -0
  44. package/types/actions/actionToggleLock.d.ts +99 -1
  45. package/types/actions/actionToggleStats.d.ts +1 -0
  46. package/types/actions/actionToggleViewMode.d.ts +1 -0
  47. package/types/actions/actionToggleZenMode.d.ts +1 -0
  48. package/types/appState.d.ts +1 -0
  49. package/types/components/Actions.d.ts +13 -2
  50. package/types/components/App.d.ts +5 -0
  51. package/types/components/Footer.d.ts +9 -0
  52. package/types/components/LayerUI.d.ts +1 -1
  53. package/types/components/LibraryMenu.d.ts +1 -2
  54. package/types/components/MobileMenu.d.ts +3 -3
  55. package/types/components/Stats.d.ts +1 -1
  56. package/types/data/blob.d.ts +1 -1
  57. package/types/element/Hyperlink.d.ts +2 -2
  58. package/types/element/bounds.d.ts +1 -1
  59. package/types/element/linearElementEditor.d.ts +40 -17
  60. package/types/element/transformHandles.d.ts +5 -4
  61. package/types/element/types.d.ts +1 -0
  62. package/types/math.d.ts +8 -1
  63. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{bn-BD-json-aa99c5a33f005fb00c6b.d.ts → bn-BD-json-906099d3f665de611389.d.ts} +0 -0
  64. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{ca-ES-json-32cf66a0dfdbbafb6903.d.ts → ca-ES-json-7f3f0a2c7f428fa60e01.d.ts} +0 -0
  65. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{cs-CZ-json-b22f93257c798fffdfd2.d.ts → cs-CZ-json-304d08cac870aa0684ec.d.ts} +0 -0
  66. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{el-GR-json-74f57c0f8b11ac1b6dde.d.ts → el-GR-json-18ce48894d32ca4895b8.d.ts} +0 -0
  67. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{es-ES-json-ffb4e65453db2f3058d4.d.ts → es-ES-json-69a6c81b0e5dc370ea1a.d.ts} +0 -0
  68. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{ja-JP-json-c60a94f86d3ebe4ade50.d.ts → ja-JP-json-4c357f8206b88dc44840.d.ts} +0 -0
  69. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{ko-KR-json-f27d159b2556809076aa.d.ts → ko-KR-json-8e7ae1bb19a7677a8190.d.ts} +0 -0
  70. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{lt-LT-json-7277ad8dae6d3e6607b3.d.ts → lt-LT-json-4147c3543dce75362050.d.ts} +0 -0
  71. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{pt-BR-json-686219f43cd76123b7fa.d.ts → pt-BR-json-4ffa2f70c2863bca4f91.d.ts} +0 -0
  72. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{pt-PT-json-be4502ca3a1250845c39.d.ts → pt-PT-json-4368eca89d2b2b3fb444.d.ts} +0 -0
  73. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{vi-VN-json-5c276b534d762658589c.d.ts → vi-VN-json-929afcbc15b2c06a64f2.d.ts} +0 -0
  74. package/types/packages/excalidraw/dist/excalidraw-assets/{vendor-52b1f3361986b6c6a4fe.d.ts → vendor-cb04f63875674d708080.d.ts} +0 -0
  75. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{bn-BD-json-02993b6dba9e7f115b53.d.ts → bn-BD-json-c3b027e18322cd5f67dd.d.ts} +0 -0
  76. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ca-ES-json-7aabb5b31e7a995a90e3.d.ts → ca-ES-json-465e286330127bad8841.d.ts} +0 -0
  77. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{cs-CZ-json-4119808eda084fb16f0d.d.ts → cs-CZ-json-a9cc158d187424de71d7.d.ts} +0 -0
  78. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{el-GR-json-2bc44d5450554154e110.d.ts → el-GR-json-33bcaca5c1eb85d3d81a.d.ts} +0 -0
  79. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{es-ES-json-9e5e962b234d2fa5aac2.d.ts → es-ES-json-41e67e045d8f77e56a7a.d.ts} +0 -0
  80. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ja-JP-json-41b80357462192231c17.d.ts → ja-JP-json-77b3461742458e757b59.d.ts} +0 -0
  81. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ko-KR-json-09de6762eea271167b56.d.ts → ko-KR-json-b6b0f0c8dc22ac7a3377.d.ts} +0 -0
  82. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{lt-LT-json-a17971ff33b8929e96d3.d.ts → lt-LT-json-09b44716baf6aae6bf11.d.ts} +0 -0
  83. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{pt-BR-json-5e4c8cd83b785ed859c2.d.ts → pt-BR-json-5abf09146a4f4387393d.d.ts} +0 -0
  84. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{pt-PT-json-a7f89a1c6f1c380141e5.d.ts → pt-PT-json-c72abd8cf29d14347cf5.d.ts} +0 -0
  85. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{vi-VN-json-670ecb0ad40c0453bdfd.d.ts → vi-VN-json-03f122275dad01552357.d.ts} +0 -0
  86. package/types/packages/excalidraw/dist/excalidraw-assets-dev/{vendor-c0592035c3911af79359.d.ts → vendor-e6df8519da951026ff69.d.ts} +0 -0
  87. package/types/packages/utils.d.ts +4 -1
  88. package/types/points.d.ts +2 -1
  89. package/types/polyfill.d.ts +2 -0
  90. package/types/renderer/renderScene.d.ts +18 -2
  91. package/types/types.d.ts +1 -1
  92. package/dist/excalidraw-assets/locales/bn-BD-json-aa99c5a33f005fb00c6b.js +0 -1
  93. package/dist/excalidraw-assets/locales/ca-ES-json-32cf66a0dfdbbafb6903.js +0 -1
  94. package/dist/excalidraw-assets/locales/cs-CZ-json-b22f93257c798fffdfd2.js +0 -1
  95. package/dist/excalidraw-assets/locales/el-GR-json-74f57c0f8b11ac1b6dde.js +0 -1
  96. package/dist/excalidraw-assets/locales/es-ES-json-ffb4e65453db2f3058d4.js +0 -1
  97. package/dist/excalidraw-assets/locales/ja-JP-json-c60a94f86d3ebe4ade50.js +0 -1
  98. package/dist/excalidraw-assets/locales/ko-KR-json-f27d159b2556809076aa.js +0 -1
  99. package/dist/excalidraw-assets/locales/lt-LT-json-7277ad8dae6d3e6607b3.js +0 -1
  100. package/dist/excalidraw-assets/locales/pt-BR-json-686219f43cd76123b7fa.js +0 -1
  101. package/dist/excalidraw-assets/locales/pt-PT-json-be4502ca3a1250845c39.js +0 -1
  102. package/dist/excalidraw-assets/locales/vi-VN-json-5c276b534d762658589c.js +0 -1
  103. package/dist/excalidraw-assets/vendor-52b1f3361986b6c6a4fe.js +0 -2
  104. package/dist/excalidraw-assets-dev/locales/ca-ES-json-7aabb5b31e7a995a90e3.js +0 -22
  105. package/dist/excalidraw-assets-dev/locales/cs-CZ-json-4119808eda084fb16f0d.js +0 -22
  106. package/dist/excalidraw-assets-dev/locales/el-GR-json-2bc44d5450554154e110.js +0 -22
  107. package/dist/excalidraw-assets-dev/locales/es-ES-json-9e5e962b234d2fa5aac2.js +0 -22
  108. package/dist/excalidraw-assets-dev/locales/ko-KR-json-09de6762eea271167b56.js +0 -22
  109. package/dist/excalidraw-assets-dev/locales/lt-LT-json-a17971ff33b8929e96d3.js +0 -22
  110. package/dist/excalidraw-assets-dev/locales/pt-BR-json-5e4c8cd83b785ed859c2.js +0 -22
  111. package/dist/excalidraw-assets-dev/locales/pt-PT-json-a7f89a1c6f1c380141e5.js +0 -22
  112. package/dist/excalidraw-assets-dev/locales/vi-VN-json-670ecb0ad40c0453bdfd.js +0 -22
@@ -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, canvas, elements, onCollabButtonClick, onLockToggle, onPenModeToggle, onInsertElements, showExitZenModeBtn, showThemeBtn, isCollaborating, renderTopRightUI, renderCustomFooter, renderCustomStats, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, }: LayerUIProps) => JSX.Element>;
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, 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,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
- renderStats: () => JSX.Element | null;
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, renderStats, }: MobileMenuProps) => JSX.Element;
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 {};
@@ -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;
@@ -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;
@@ -113,6 +112,7 @@ export declare const actionLink: {
113
112
  data: import("../charts").Spreadsheet;
114
113
  };
115
114
  pendingImageElementId: string | null;
115
+ selectedLinearElement: import("./linearElementEditor").LinearElementEditor | null;
116
116
  };
117
117
  commitToHistory: true;
118
118
  };
@@ -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,26 +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";
29
+ readonly startBindingElement: ExcalidrawBindableElement | null | "keep";
30
+ readonly endBindingElement: ExcalidrawBindableElement | null | "keep";
31
+ readonly hoverPointIndex: number;
32
+ readonly segmentMidPointHoveredCoords: Point | null;
26
33
  constructor(element: NonDeleted<ExcalidrawLinearElement>, scene: Scene);
27
34
  static POINT_HANDLE_SIZE: number;
28
35
  /**
@@ -32,23 +39,35 @@ export declare class LinearElementEditor {
32
39
  static getElement(id: InstanceType<typeof LinearElementEditor>["elementId"]): NonDeleted<ExcalidrawLinearElement> | null;
33
40
  static handleBoxSelection(event: PointerEvent, appState: AppState, setState: React.Component<any, AppState>["setState"]): false | undefined;
34
41
  /** @returns whether point was dragged */
35
- static handlePointDragging(appState: AppState, setState: React.Component<any, AppState>["setState"], 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: {
36
43
  x: number;
37
44
  y: number;
38
- }[]) => void): boolean;
45
+ }[]) => void, linearElementEditor: LinearElementEditor): boolean;
39
46
  static handlePointerUp(event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState): LinearElementEditor;
40
- static handlePointerDown(event: React.PointerEvent<HTMLCanvasElement>, appState: AppState, setState: React.Component<any, AppState>["setState"], history: History, 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: {
41
50
  x: number;
42
51
  y: number;
43
- }): {
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;
56
+ static handlePointerDown(event: React.PointerEvent<HTMLCanvasElement>, appState: AppState, history: History, scenePointer: {
57
+ x: number;
58
+ y: number;
59
+ }, linearElementEditor: LinearElementEditor): {
44
60
  didAddPoint: boolean;
45
61
  hitElement: NonDeleted<ExcalidrawElement> | null;
62
+ linearElementEditor: LinearElementEditor | null;
63
+ isMidPoint: boolean;
46
64
  };
47
- static handlePointerMove(event: React.PointerEvent<HTMLCanvasElement>, scenePointerX: number, scenePointerY: number, editingLinearElement: 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;
48
67
  /** scene coords */
49
68
  static getPointGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, point: Point): readonly [number, number];
50
69
  /** scene coords */
51
- static getPointsGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>): number[][];
70
+ static getPointsGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>): Point[];
52
71
  static getPointAtIndexGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, indexMaybeFromEnd: number): Point;
53
72
  static pointFromAbsoluteCoords(element: NonDeleted<ExcalidrawLinearElement>, absoluteCoords: Point): Point;
54
73
  static getPointIndexUnderCursor(element: NonDeleted<ExcalidrawLinearElement>, zoom: AppState["zoom"], x: number, y: number): number;
@@ -76,7 +95,6 @@ export declare class LinearElementEditor {
76
95
  /** index */
77
96
  lastClickedPoint: number;
78
97
  }>;
79
- /** whether you're dragging a point */
80
98
  isDragging: boolean;
81
99
  lastUncommittedPoint: readonly [number, number] | null;
82
100
  pointerOffset: Readonly<{
@@ -85,6 +103,8 @@ export declare class LinearElementEditor {
85
103
  }>;
86
104
  startBindingElement: ExcalidrawBindableElement | "keep" | null;
87
105
  endBindingElement: ExcalidrawBindableElement | "keep" | null;
106
+ hoverPointIndex: number;
107
+ segmentMidPointHoveredCoords: readonly [number, number] | null;
88
108
  };
89
109
  isLoading: boolean;
90
110
  errorMessage: string | null;
@@ -150,7 +170,7 @@ export declare class LinearElementEditor {
150
170
  shouldCacheIgnoreZoom: boolean;
151
171
  showHelpDialog: boolean;
152
172
  toast: {
153
- message: string;
173
+ message: string; /** @returns whether point was dragged */
154
174
  closable?: boolean | undefined;
155
175
  duration?: number | undefined;
156
176
  } | null;
@@ -181,10 +201,11 @@ export declare class LinearElementEditor {
181
201
  };
182
202
  pendingImageElementId: string | null;
183
203
  showHyperlinkPopup: false | "info" | "editor";
204
+ selectedLinearElement: LinearElementEditor | null;
184
205
  };
185
206
  };
186
207
  static deletePoints(element: NonDeleted<ExcalidrawLinearElement>, pointIndices: readonly number[]): void;
187
- static addPoints(element: NonDeleted<ExcalidrawLinearElement>, targetPoints: {
208
+ static addPoints(element: NonDeleted<ExcalidrawLinearElement>, appState: AppState, targetPoints: {
188
209
  point: Point;
189
210
  }[]): void;
190
211
  static movePoints(element: NonDeleted<ExcalidrawLinearElement>, targetPoints: {
@@ -196,4 +217,6 @@ export declare class LinearElementEditor {
196
217
  endBinding?: PointBinding;
197
218
  }): void;
198
219
  private static _updatePoints;
220
+ private static _getShiftLockedDelta;
199
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;
@@ -53,6 +53,7 @@ declare type _ExcalidrawElementBase = Readonly<{
53
53
  updated: number;
54
54
  link: string | null;
55
55
  locked: boolean;
56
+ customData?: Record<string, any>;
56
57
  }>;
57
58
  export declare type ExcalidrawSelectionElement = _ExcalidrawElementBase & {
58
59
  type: "selection";
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/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
- export declare const rescalePoints: (dimension: 0 | 1, nextDimensionSize: number, prevPoints: readonly Point[]) => Point[];
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[];
@@ -0,0 +1,2 @@
1
+ declare const polyfill: () => void;
2
+ export default polyfill;
@@ -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 _renderScene: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, selectionElement: NonDeletedExcalidrawElement | null, scale: number, rc: RoughCanvas, canvas: HTMLCanvasElement, renderConfig: RenderConfig) => {
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>(elements: readonly NonDeletedExcalidrawElement[], appState: AppState, selectionElement: NonDeletedExcalidrawElement | null, scale: number, rc: RoughCanvas, canvas: HTMLCanvasElement, renderConfig: RenderConfig, callback?: ((data: ReturnType<typeof _renderScene>) => void) | undefined, throttle?: T | undefined) => T extends true ? void : {
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
@@ -149,6 +149,7 @@ export declare type AppState = {
149
149
  /** imageElement waiting to be placed on canvas */
150
150
  pendingImageElementId: ExcalidrawImageElement["id"] | null;
151
151
  showHyperlinkPopup: false | "info" | "editor";
152
+ selectedLinearElement: LinearElementEditor | null;
152
153
  };
153
154
  export declare type NormalizedZoomValue = number & {
154
155
  _brand: "normalizedZoom";
@@ -322,7 +323,6 @@ export declare type PointerDownState = Readonly<{
322
323
  wasAddedToSelection: boolean;
323
324
  hasBeenDuplicated: boolean;
324
325
  hasHitCommonBoundingBoxOfSelectedElements: boolean;
325
- hasHitElementInside: boolean;
326
326
  };
327
327
  withCmdOrCtrl: boolean;
328
328
  drag: {
@@ -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"}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[265],{7605:function(e){e.exports=JSON.parse('{"labels":{"paste":"Vložit","pasteCharts":"Vložit grafy","selectAll":"Vybrat vše","multiSelect":"Přidat prvek do výběru","moveCanvas":"Posunout plátno","cut":"Vyjmout","copy":"Kopírovat","copyAsPng":"Zkopírovat do schránky jako PNG","copyAsSvg":"Zkopírovat do schránky jako SVG","copyText":"Zkopírovat do schránky jako text","bringForward":"Přenést blíž","sendToBack":"Přenést do pozadí","bringToFront":"Přenést do popředí","sendBackward":"Přenést dál","delete":"Smazat","copyStyles":"Kopírovat styly","pasteStyles":"Vložit styly","stroke":"Obrys","background":"Pozadí","fill":"Výplň","strokeWidth":"Šířka obrysu","strokeStyle":"Styl tahu","strokeStyle_solid":"Plný","strokeStyle_dashed":"Čárkovaný","strokeStyle_dotted":"Tečkovaný","sloppiness":"Stylizace","opacity":"Průhlednost","textAlign":"Zarovnání textu","edges":"Hrany","sharp":"Ostré","round":"Zaoblené","arrowheads":"Styl šipky","arrowhead_none":"Žádný","arrowhead_arrow":"Šipka","arrowhead_bar":"Kóta","arrowhead_dot":"Tečka","arrowhead_triangle":"Trojúhelník","fontSize":"Velikost písma","fontFamily":"Písmo","onlySelected":"Pouze vybrané","withBackground":"Pozadí","exportEmbedScene":"Vložit scénu","exportEmbedScene_details":"Data scény budou uložena do exportovaného souboru PNG/SVG tak, aby z něj mohla být scéna obnovena.\\nZvýší se velikost exportovaného souboru.","addWatermark":"Přidat \\"Vyrobeno s Excalidraw\\"","handDrawn":"Od ruky","normal":"Normální","code":"Kód","small":"Malé","medium":"Střední","large":"Velké","veryLarge":"Velmi velké","solid":"","hachure":"","crossHatch":"","thin":"","bold":"","left":"","center":"","right":"","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"","colorPicker":"","canvasColors":"","canvasBackground":"Pozadí plátna","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":"Náhled","toggleExportColorScheme":"","share":"Sdílet","showStroke":"","showBackground":"","toggleTheme":"Přepnout tmavý řežim","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":"Exportovat","exportToPng":"Exportovat do PNG","exportToSvg":"Exportovat do SVG","copyToClipboard":"Kopírovat do schránky","copyPngToClipboard":"Kopírovat PNG do schránky","scale":"Měřítko","save":"","saveAs":"Uložit jako","load":"Nahrát","getShareableLink":"Získat odkaz pro sdílení","close":"Zavřít","selectLanguage":"Zvolit jazyk","scrollBackToContent":"","zoomIn":"Přiblížit","zoomOut":"Oddálit","resetZoom":"Resetovat přiblížení","menu":"Menu","done":"Hotovo","edit":"Upravit","undo":"Zpět","redo":"Znovu","resetLibrary":"","createNewRoom":"Vytvořit novou místnost","fullScreen":"Celá obrazovka","darkMode":"Tmavý režim","lightMode":"Světlý režim","zenMode":"Zen mód","exitZenMode":"Opustit zen mód","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":"Výběr","image":"","rectangle":"Obdélník","diamond":"Diamant","ellipse":"Elipsa","arrow":"Šipka","line":"Čára","freedraw":"Kreslení","text":"Text","library":"","lock":"","penMode":"","link":"","eraser":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":"Tvary"},"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":"kliknutí","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"tažení","editor":"","editSelectedShape":"","github":"","howto":"","or":"nebo","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":"plátno","selection":"výběr"},"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":""}}')}}]);