@zsviczian/excalidraw 0.13.0-obsidian-1 → 0.13.0-obsidian-2

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 (45) hide show
  1. package/README.md +1 -1
  2. package/dist/excalidraw.development.js +76 -54
  3. package/dist/excalidraw.production.min.js +1 -1
  4. package/package.json +1 -1
  5. package/types/actions/actionAddToLibrary.d.ts +3 -6
  6. package/types/actions/actionBoundText.d.ts +1 -2
  7. package/types/actions/actionCanvas.d.ts +21 -25
  8. package/types/actions/actionClipboard.d.ts +14 -10
  9. package/types/actions/actionDeleteSelected.d.ts +12 -6
  10. package/types/actions/actionExport.d.ts +17 -25
  11. package/types/actions/actionFinalize.d.ts +2 -4
  12. package/types/actions/actionLinearEditor.d.ts +1 -2
  13. package/types/actions/actionMenu.d.ts +5 -6
  14. package/types/actions/actionNavigate.d.ts +1 -0
  15. package/types/actions/actionProperties.d.ts +15 -28
  16. package/types/actions/actionStyles.d.ts +1 -2
  17. package/types/actions/actionToggleGridMode.d.ts +2 -2
  18. package/types/actions/actionToggleLock.d.ts +1 -2
  19. package/types/actions/actionToggleStats.d.ts +2 -2
  20. package/types/actions/actionToggleViewMode.d.ts +2 -2
  21. package/types/actions/actionToggleZenMode.d.ts +2 -2
  22. package/types/actions/types.d.ts +4 -1
  23. package/types/appState.d.ts +8 -9
  24. package/types/clipboard.d.ts +6 -1
  25. package/types/components/App.d.ts +1 -1
  26. package/types/components/ContextMenu.d.ts +9 -10
  27. package/types/constants.d.ts +7 -5
  28. package/types/element/Hyperlink.d.ts +1 -2
  29. package/types/element/bounds.d.ts +3 -2
  30. package/types/element/linearElementEditor.d.ts +32 -5
  31. package/types/element/newElement.d.ts +2 -2
  32. package/types/element/resizeElements.d.ts +0 -1
  33. package/types/element/textElement.d.ts +17 -2
  34. package/types/element/transformHandles.d.ts +2 -3
  35. package/types/element/typeChecks.d.ts +10 -1
  36. package/types/element/types.d.ts +11 -4
  37. package/types/excalidraw-app/data/index.d.ts +8 -9
  38. package/types/excalidraw-app/data/localStorage.d.ts +8 -9
  39. package/types/math.d.ts +2 -1
  40. package/types/renderer/renderElement.d.ts +4 -3
  41. package/types/scene/Fonts.d.ts +21 -0
  42. package/types/scene/Scene.d.ts +15 -0
  43. package/types/scene/comparisons.d.ts +2 -3
  44. package/types/scene/index.d.ts +1 -1
  45. package/types/types.d.ts +2 -3
@@ -66,10 +66,9 @@ export declare const actionChangeFillStyle: {
66
66
  currentItemFontFamily: number;
67
67
  currentItemFontSize: number;
68
68
  currentItemTextAlign: string;
69
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
70
69
  currentItemStartArrowhead: Arrowhead | null;
71
70
  currentItemEndArrowhead: Arrowhead | null;
72
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
71
+ currentItemRoundness: import("../element/types").StrokeRoundness;
73
72
  viewBackgroundColor: string;
74
73
  scrollX: number;
75
74
  scrollY: number;
@@ -186,10 +185,9 @@ export declare const actionChangeStrokeWidth: {
186
185
  currentItemFontFamily: number;
187
186
  currentItemFontSize: number;
188
187
  currentItemTextAlign: string;
189
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
190
188
  currentItemStartArrowhead: Arrowhead | null;
191
189
  currentItemEndArrowhead: Arrowhead | null;
192
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
190
+ currentItemRoundness: import("../element/types").StrokeRoundness;
193
191
  viewBackgroundColor: string;
194
192
  scrollX: number;
195
193
  scrollY: number;
@@ -306,10 +304,9 @@ export declare const actionChangeSloppiness: {
306
304
  currentItemFontFamily: number;
307
305
  currentItemFontSize: number;
308
306
  currentItemTextAlign: string;
309
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
310
307
  currentItemStartArrowhead: Arrowhead | null;
311
308
  currentItemEndArrowhead: Arrowhead | null;
312
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
309
+ currentItemRoundness: import("../element/types").StrokeRoundness;
313
310
  viewBackgroundColor: string;
314
311
  scrollX: number;
315
312
  scrollY: number;
@@ -426,10 +423,9 @@ export declare const actionChangeStrokeStyle: {
426
423
  currentItemFontFamily: number;
427
424
  currentItemFontSize: number;
428
425
  currentItemTextAlign: string;
429
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
430
426
  currentItemStartArrowhead: Arrowhead | null;
431
427
  currentItemEndArrowhead: Arrowhead | null;
432
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
428
+ currentItemRoundness: import("../element/types").StrokeRoundness;
433
429
  viewBackgroundColor: string;
434
430
  scrollX: number;
435
431
  scrollY: number;
@@ -546,10 +542,9 @@ export declare const actionChangeOpacity: {
546
542
  currentItemFontFamily: number;
547
543
  currentItemFontSize: number;
548
544
  currentItemTextAlign: string;
549
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
550
545
  currentItemStartArrowhead: Arrowhead | null;
551
546
  currentItemEndArrowhead: Arrowhead | null;
552
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
547
+ currentItemRoundness: import("../element/types").StrokeRoundness;
553
548
  viewBackgroundColor: string;
554
549
  scrollX: number;
555
550
  scrollY: number;
@@ -666,10 +661,9 @@ export declare const actionChangeFontSize: {
666
661
  currentItemOpacity: number;
667
662
  currentItemFontFamily: number;
668
663
  currentItemTextAlign: string;
669
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
670
664
  currentItemStartArrowhead: Arrowhead | null;
671
665
  currentItemEndArrowhead: Arrowhead | null;
672
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
666
+ currentItemRoundness: import("../element/types").StrokeRoundness;
673
667
  viewBackgroundColor: string;
674
668
  scrollX: number;
675
669
  scrollY: number;
@@ -786,10 +780,9 @@ export declare const actionDecreaseFontSize: {
786
780
  currentItemOpacity: number;
787
781
  currentItemFontFamily: number;
788
782
  currentItemTextAlign: string;
789
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
790
783
  currentItemStartArrowhead: Arrowhead | null;
791
784
  currentItemEndArrowhead: Arrowhead | null;
792
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
785
+ currentItemRoundness: import("../element/types").StrokeRoundness;
793
786
  viewBackgroundColor: string;
794
787
  scrollX: number;
795
788
  scrollY: number;
@@ -904,10 +897,9 @@ export declare const actionIncreaseFontSize: {
904
897
  currentItemOpacity: number;
905
898
  currentItemFontFamily: number;
906
899
  currentItemTextAlign: string;
907
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
908
900
  currentItemStartArrowhead: Arrowhead | null;
909
901
  currentItemEndArrowhead: Arrowhead | null;
910
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
902
+ currentItemRoundness: import("../element/types").StrokeRoundness;
911
903
  viewBackgroundColor: string;
912
904
  scrollX: number;
913
905
  scrollY: number;
@@ -1022,10 +1014,9 @@ export declare const actionChangeFontFamily: {
1022
1014
  currentItemOpacity: number;
1023
1015
  currentItemFontSize: number;
1024
1016
  currentItemTextAlign: string;
1025
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
1026
1017
  currentItemStartArrowhead: Arrowhead | null;
1027
1018
  currentItemEndArrowhead: Arrowhead | null;
1028
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
1019
+ currentItemRoundness: import("../element/types").StrokeRoundness;
1029
1020
  viewBackgroundColor: string;
1030
1021
  scrollX: number;
1031
1022
  scrollY: number;
@@ -1142,10 +1133,9 @@ export declare const actionChangeTextAlign: {
1142
1133
  currentItemOpacity: number;
1143
1134
  currentItemFontFamily: number;
1144
1135
  currentItemFontSize: number;
1145
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
1146
1136
  currentItemStartArrowhead: Arrowhead | null;
1147
1137
  currentItemEndArrowhead: Arrowhead | null;
1148
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
1138
+ currentItemRoundness: import("../element/types").StrokeRoundness;
1149
1139
  viewBackgroundColor: string;
1150
1140
  scrollX: number;
1151
1141
  scrollY: number;
@@ -1264,10 +1254,9 @@ export declare const actionChangeVerticalAlign: {
1264
1254
  currentItemFontFamily: number;
1265
1255
  currentItemFontSize: number;
1266
1256
  currentItemTextAlign: string;
1267
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
1268
1257
  currentItemStartArrowhead: Arrowhead | null;
1269
1258
  currentItemEndArrowhead: Arrowhead | null;
1270
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
1259
+ currentItemRoundness: import("../element/types").StrokeRoundness;
1271
1260
  viewBackgroundColor: string;
1272
1261
  scrollX: number;
1273
1262
  scrollY: number;
@@ -1339,14 +1328,13 @@ export declare const actionChangeVerticalAlign: {
1339
1328
  } & {
1340
1329
  keyTest?: undefined;
1341
1330
  };
1342
- export declare const actionChangeSharpness: {
1343
- name: "changeSharpness";
1331
+ export declare const actionChangeRoundness: {
1332
+ name: "changeRoundness";
1344
1333
  trackEvent: false;
1345
1334
  perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, value: any) => {
1346
1335
  elements: ExcalidrawElement[];
1347
1336
  appState: {
1348
- currentItemStrokeSharpness: any;
1349
- currentItemLinearStrokeSharpness: any;
1337
+ currentItemRoundness: any;
1350
1338
  showWelcomeScreen: boolean;
1351
1339
  isLoading: boolean;
1352
1340
  errorMessage: string | null;
@@ -1507,10 +1495,9 @@ export declare const actionChangeArrowhead: {
1507
1495
  currentItemFontFamily: number;
1508
1496
  currentItemFontSize: number;
1509
1497
  currentItemTextAlign: string;
1510
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
1511
1498
  currentItemStartArrowhead: Arrowhead | null;
1512
1499
  currentItemEndArrowhead: Arrowhead | null;
1513
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
1500
+ currentItemRoundness: import("../element/types").StrokeRoundness;
1514
1501
  viewBackgroundColor: string;
1515
1502
  scrollX: number;
1516
1503
  scrollY: number;
@@ -49,10 +49,9 @@ export declare const actionCopyStyles: {
49
49
  currentItemFontFamily: number;
50
50
  currentItemFontSize: number;
51
51
  currentItemTextAlign: string;
52
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
53
52
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
54
53
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
55
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
54
+ currentItemRoundness: import("../element/types").StrokeRoundness;
56
55
  viewBackgroundColor: string;
57
56
  scrollX: number;
58
57
  scrollY: number;
@@ -2,6 +2,7 @@
2
2
  import { AppState } from "../types";
3
3
  export declare const actionToggleGridMode: {
4
4
  name: "gridMode";
5
+ viewMode: true;
5
6
  trackEvent: {
6
7
  category: "canvas";
7
8
  predicate: (appState: Readonly<AppState>) => boolean;
@@ -48,10 +49,9 @@ export declare const actionToggleGridMode: {
48
49
  currentItemFontFamily: number;
49
50
  currentItemFontSize: number;
50
51
  currentItemTextAlign: string;
51
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
52
52
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
53
53
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
54
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
54
+ currentItemRoundness: import("../element/types").StrokeRoundness;
55
55
  viewBackgroundColor: string;
56
56
  scrollX: number;
57
57
  scrollY: number;
@@ -48,10 +48,9 @@ export declare const actionToggleLock: {
48
48
  currentItemFontFamily: number;
49
49
  currentItemFontSize: number;
50
50
  currentItemTextAlign: string;
51
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
52
51
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
53
52
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
54
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
53
+ currentItemRoundness: import("../element/types").StrokeRoundness;
55
54
  viewBackgroundColor: string;
56
55
  scrollX: number;
57
56
  scrollY: number;
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  export declare const actionToggleStats: {
3
3
  name: "stats";
4
+ viewMode: true;
4
5
  trackEvent: {
5
6
  category: "menu";
6
7
  };
@@ -46,10 +47,9 @@ export declare const actionToggleStats: {
46
47
  currentItemFontFamily: number;
47
48
  currentItemFontSize: number;
48
49
  currentItemTextAlign: string;
49
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
50
50
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
51
51
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
52
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
52
+ currentItemRoundness: import("../element/types").StrokeRoundness;
53
53
  viewBackgroundColor: string;
54
54
  scrollX: number;
55
55
  scrollY: number;
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  export declare const actionToggleViewMode: {
3
3
  name: "viewMode";
4
+ viewMode: true;
4
5
  trackEvent: {
5
6
  category: "canvas";
6
7
  predicate: (appState: Readonly<import("../types").AppState>) => boolean;
@@ -47,10 +48,9 @@ export declare const actionToggleViewMode: {
47
48
  currentItemFontFamily: number;
48
49
  currentItemFontSize: number;
49
50
  currentItemTextAlign: string;
50
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
51
51
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
52
52
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
53
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
53
+ currentItemRoundness: import("../element/types").StrokeRoundness;
54
54
  viewBackgroundColor: string;
55
55
  scrollX: number;
56
56
  scrollY: number;
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  export declare const actionToggleZenMode: {
3
3
  name: "zenMode";
4
+ viewMode: true;
4
5
  trackEvent: {
5
6
  category: "canvas";
6
7
  predicate: (appState: Readonly<import("../types").AppState>) => boolean;
@@ -47,10 +48,9 @@ export declare const actionToggleZenMode: {
47
48
  currentItemFontFamily: number;
48
49
  currentItemFontSize: number;
49
50
  currentItemTextAlign: string;
50
- currentItemStrokeSharpness: import("../element/types").StrokeSharpness;
51
51
  currentItemStartArrowhead: import("../element/types").Arrowhead | null;
52
52
  currentItemEndArrowhead: import("../element/types").Arrowhead | null;
53
- currentItemLinearStrokeSharpness: import("../element/types").StrokeSharpness;
53
+ currentItemRoundness: import("../element/types").StrokeRoundness;
54
54
  viewBackgroundColor: string;
55
55
  scrollX: number;
56
56
  scrollY: number;
@@ -14,7 +14,7 @@ export declare type ActionResult = {
14
14
  declare type ActionFn = (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, formData: any, app: AppClassProperties) => ActionResult | Promise<ActionResult>;
15
15
  export declare type UpdaterFn = (res: ActionResult) => void;
16
16
  export declare type ActionFilterFn = (action: Action) => void;
17
- export declare type ActionName = "copy" | "cut" | "paste" | "copyAsPng" | "copyAsSvg" | "copyText" | "sendBackward" | "bringForward" | "sendToBack" | "bringToFront" | "copyStyles" | "selectAll" | "pasteStyles" | "gridMode" | "zenMode" | "stats" | "changeStrokeColor" | "changeBackgroundColor" | "changeFillStyle" | "changeStrokeWidth" | "changeStrokeShape" | "changeSloppiness" | "changeStrokeStyle" | "changeArrowhead" | "changeOpacity" | "changeFontSize" | "toggleCanvasMenu" | "toggleEditMenu" | "undo" | "redo" | "finalize" | "changeProjectName" | "changeExportBackground" | "changeExportEmbedScene" | "changeExportScale" | "saveToActiveFile" | "saveFileToDisk" | "loadScene" | "duplicateSelection" | "deleteSelectedElements" | "changeViewBackgroundColor" | "clearCanvas" | "zoomIn" | "zoomOut" | "resetZoom" | "zoomToFit" | "zoomToSelection" | "changeFontFamily" | "changeTextAlign" | "changeVerticalAlign" | "toggleFullScreen" | "toggleShortcuts" | "group" | "ungroup" | "goToCollaborator" | "addToLibrary" | "changeSharpness" | "alignTop" | "alignBottom" | "alignLeft" | "alignRight" | "alignVerticallyCentered" | "alignHorizontallyCentered" | "distributeHorizontally" | "distributeVertically" | "flipHorizontal" | "flipVertical" | "viewMode" | "exportWithDarkMode" | "toggleTheme" | "increaseFontSize" | "decreaseFontSize" | "unbindText" | "hyperlink" | "eraser" | "bindText" | "toggleLock" | "toggleLinearEditor";
17
+ export declare type ActionName = "copy" | "cut" | "paste" | "copyAsPng" | "copyAsSvg" | "copyText" | "sendBackward" | "bringForward" | "sendToBack" | "bringToFront" | "copyStyles" | "selectAll" | "pasteStyles" | "gridMode" | "zenMode" | "stats" | "changeStrokeColor" | "changeBackgroundColor" | "changeFillStyle" | "changeStrokeWidth" | "changeStrokeShape" | "changeSloppiness" | "changeStrokeStyle" | "changeArrowhead" | "changeOpacity" | "changeFontSize" | "toggleCanvasMenu" | "toggleEditMenu" | "undo" | "redo" | "finalize" | "changeProjectName" | "changeExportBackground" | "changeExportEmbedScene" | "changeExportScale" | "saveToActiveFile" | "saveFileToDisk" | "loadScene" | "duplicateSelection" | "deleteSelectedElements" | "changeViewBackgroundColor" | "clearCanvas" | "zoomIn" | "zoomOut" | "resetZoom" | "zoomToFit" | "zoomToSelection" | "changeFontFamily" | "changeTextAlign" | "changeVerticalAlign" | "toggleFullScreen" | "toggleShortcuts" | "group" | "ungroup" | "goToCollaborator" | "addToLibrary" | "changeRoundness" | "alignTop" | "alignBottom" | "alignLeft" | "alignRight" | "alignVerticallyCentered" | "alignHorizontallyCentered" | "distributeHorizontally" | "distributeVertically" | "flipHorizontal" | "flipVertical" | "viewMode" | "exportWithDarkMode" | "toggleTheme" | "increaseFontSize" | "decreaseFontSize" | "unbindText" | "hyperlink" | "eraser" | "bindText" | "toggleLock" | "toggleLinearEditor";
18
18
  export declare type PanelComponentProps = {
19
19
  elements: readonly ExcalidrawElement[];
20
20
  appState: AppState;
@@ -38,5 +38,8 @@ export interface Action {
38
38
  action?: string;
39
39
  predicate?: (appState: Readonly<AppState>, elements: readonly ExcalidrawElement[], value: any) => boolean;
40
40
  };
41
+ /** if set to `true`, allow action to be performed in viewMode.
42
+ * Defaults to `false` */
43
+ viewMode?: boolean;
41
44
  }
42
45
  export {};
@@ -14,13 +14,6 @@ export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>)
14
14
  lastActiveToolBeforeEraser: import("./types").LastActiveToolBeforeEraser;
15
15
  locked: boolean;
16
16
  } | undefined;
17
- scrollX?: number | undefined;
18
- scrollY?: number | undefined;
19
- viewBackgroundColor?: string | undefined;
20
- zoom?: Readonly<{
21
- value: NormalizedZoomValue;
22
- }> | undefined;
23
- shouldCacheIgnoreZoom?: boolean | undefined;
24
17
  showWelcomeScreen?: boolean | undefined;
25
18
  penMode?: boolean | undefined;
26
19
  penDetected?: boolean | undefined;
@@ -38,12 +31,17 @@ export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>)
38
31
  currentItemFontFamily?: number | undefined;
39
32
  currentItemFontSize?: number | undefined;
40
33
  currentItemTextAlign?: string | undefined;
41
- currentItemStrokeSharpness?: import("./element/types").StrokeSharpness | undefined;
42
34
  currentItemStartArrowhead?: import("./element/types").Arrowhead | null | undefined;
43
35
  currentItemEndArrowhead?: import("./element/types").Arrowhead | null | undefined;
44
- currentItemLinearStrokeSharpness?: import("./element/types").StrokeSharpness | undefined;
36
+ currentItemRoundness?: import("./element/types").StrokeRoundness | undefined;
37
+ viewBackgroundColor?: string | undefined;
38
+ scrollX?: number | undefined;
39
+ scrollY?: number | undefined;
45
40
  cursorButton?: "up" | "down" | undefined;
46
41
  scrolledOutside?: boolean | undefined;
42
+ zoom?: Readonly<{
43
+ value: NormalizedZoomValue;
44
+ }> | undefined;
47
45
  openMenu?: "canvas" | "shape" | null | undefined;
48
46
  openSidebar?: "library" | "customSidebar" | null | undefined;
49
47
  isSidebarDocked?: boolean | undefined;
@@ -54,6 +52,7 @@ export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>)
54
52
  previousSelectedElementIds?: {
55
53
  [id: string]: boolean;
56
54
  } | undefined;
55
+ shouldCacheIgnoreZoom?: boolean | undefined;
57
56
  zenModeEnabled?: boolean | undefined;
58
57
  gridSize?: number | null | undefined;
59
58
  selectedGroupIds?: {
@@ -12,9 +12,14 @@ export declare const probablySupportsClipboardReadText: boolean;
12
12
  export declare const probablySupportsClipboardWriteText: boolean;
13
13
  export declare const probablySupportsClipboardBlob: boolean;
14
14
  export declare const copyToClipboard: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, files: BinaryFiles | null) => Promise<void>;
15
+ /**
16
+ * Retrieves content from system clipboard (either from ClipboardEvent or
17
+ * via async clipboard API if supported)
18
+ */
19
+ export declare const getSystemClipboard: (event: ClipboardEvent | null) => Promise<string>;
15
20
  /**
16
21
  * Attempts to parse clipboard. Prefers system clipboard.
17
22
  */
18
- export declare const parseClipboard: (event: ClipboardEvent | null) => Promise<ClipboardData>;
23
+ export declare const parseClipboard: (event: ClipboardEvent | null, isPlainPaste?: boolean) => Promise<ClipboardData>;
19
24
  export declare const copyBlobToClipboardAsPng: (blob: Blob | Promise<Blob>) => Promise<void>;
20
25
  export declare const copyTextToSystemClipboard: (text: string | null) => Promise<void>;
@@ -79,6 +79,7 @@ declare class App extends React.Component<AppProps, AppState> {
79
79
  private excalidrawContainerRef;
80
80
  static defaultProps: Partial<AppProps>;
81
81
  scene: Scene;
82
+ private fonts;
82
83
  private resizeObserver;
83
84
  private nearestScrollableContainer;
84
85
  library: AppClassProperties["library"];
@@ -107,7 +108,6 @@ declare class App extends React.Component<AppProps, AppState> {
107
108
  private onBlur;
108
109
  private onUnload;
109
110
  private disableEvent;
110
- private onFontLoaded;
111
111
  private resetHistory;
112
112
  /**
113
113
  * Resets scene & history.
@@ -13,16 +13,15 @@ declare type ContextMenuProps = {
13
13
  appState: Readonly<AppState>;
14
14
  elements: readonly NonDeletedExcalidrawElement[];
15
15
  };
16
- declare type ContextMenuParams = {
17
- options: (ContextMenuOption | false | null | undefined)[];
18
- top: ContextMenuProps["top"];
19
- left: ContextMenuProps["left"];
20
- actionManager: ContextMenuProps["actionManager"];
21
- appState: Readonly<AppState>;
22
- container: HTMLElement;
23
- elements: readonly NonDeletedExcalidrawElement[];
24
- };
25
16
  declare const _default: {
26
- push(params: ContextMenuParams): void;
17
+ push(params: {
18
+ options: (ContextMenuOption | false | null | undefined)[];
19
+ top: ContextMenuProps["top"];
20
+ left: ContextMenuProps["left"];
21
+ actionManager: ContextMenuProps["actionManager"];
22
+ appState: Readonly<AppState>;
23
+ container: HTMLElement;
24
+ elements: readonly NonDeletedExcalidrawElement[];
25
+ }): void;
27
26
  };
28
27
  export default _default;
@@ -109,11 +109,6 @@ export declare const MIN_ZOOM = 0.1;
109
109
  export declare const HYPERLINK_TOOLTIP_DELAY = 300;
110
110
  export declare const IDLE_THRESHOLD = 60000;
111
111
  export declare const ACTIVE_THRESHOLD = 3000;
112
- export declare const MODES: {
113
- VIEW: string;
114
- ZEN: string;
115
- GRID: string;
116
- };
117
112
  export declare const THEME_FILTER: any;
118
113
  export declare const URL_QUERY_KEYS: {
119
114
  readonly addLibrary: "addLibrary";
@@ -152,6 +147,13 @@ export declare const TEXT_ALIGN: {
152
147
  RIGHT: string;
153
148
  };
154
149
  export declare const ELEMENT_READY_TO_ERASE_OPACITY = 20;
150
+ export declare const DEFAULT_PROPORTIONAL_RADIUS = 0.25;
151
+ export declare const DEFAULT_ADAPTIVE_RADIUS = 32;
152
+ export declare const ROUNDNESS: {
153
+ readonly LEGACY: 1;
154
+ readonly PROPORTIONAL_RADIUS: 2;
155
+ readonly ADAPTIVE_RADIUS: 3;
156
+ };
155
157
  export declare const COOKIES: {
156
158
  readonly AUTH_STATE_COOKIE: "excplus-auth";
157
159
  };
@@ -57,10 +57,9 @@ export declare const actionLink: {
57
57
  currentItemFontFamily: number;
58
58
  currentItemFontSize: number;
59
59
  currentItemTextAlign: string;
60
- currentItemStrokeSharpness: import("./types").StrokeSharpness;
61
60
  currentItemStartArrowhead: import("./types").Arrowhead | null;
62
61
  currentItemEndArrowhead: import("./types").Arrowhead | null;
63
- currentItemLinearStrokeSharpness: import("./types").StrokeSharpness;
62
+ currentItemRoundness: import("./types").StrokeRoundness;
64
63
  viewBackgroundColor: string;
65
64
  scrollX: number;
66
65
  scrollY: number;
@@ -1,15 +1,16 @@
1
1
  import { ExcalidrawElement, ExcalidrawLinearElement, Arrowhead, NonDeleted } from "./types";
2
2
  import { Drawable, Op } from "roughjs/bin/core";
3
3
  export declare type Bounds = readonly [number, number, number, number];
4
- export declare const getElementAbsoluteCoords: (element: ExcalidrawElement) => Bounds;
4
+ export declare const getElementAbsoluteCoords: (element: ExcalidrawElement, includeBoundText?: boolean) => [number, number, number, number, number, number];
5
5
  export declare const pointRelativeTo: (element: ExcalidrawElement, absoluteCoords: readonly [number, number]) => readonly [number, number];
6
6
  export declare const getDiamondPoints: (element: ExcalidrawElement) => number[];
7
7
  export declare const getCurvePathOps: (shape: Drawable) => Op[];
8
+ export declare const getMinMaxXYFromCurvePathOps: (ops: Op[], transformXY?: ((x: number, y: number) => [number, number]) | undefined) => [number, number, number, number];
8
9
  export declare const getArrowheadPoints: (element: ExcalidrawLinearElement, shape: Drawable[], position: "start" | "end", arrowhead: Arrowhead) => number[] | null;
9
10
  export declare const getElementBounds: (element: ExcalidrawElement) => [number, number, number, number];
10
11
  export declare const getCommonBounds: (elements: readonly ExcalidrawElement[]) => [number, number, number, number];
11
12
  export declare const getResizedElementAbsoluteCoords: (element: ExcalidrawElement, nextWidth: number, nextHeight: number, normalizePoints: boolean) => [number, number, number, number];
12
- export declare const getElementPointsCoords: (element: ExcalidrawLinearElement, points: readonly (readonly [number, number])[], sharpness: ExcalidrawElement["strokeSharpness"]) => [number, number, number, number];
13
+ export declare const getElementPointsCoords: (element: ExcalidrawLinearElement, points: readonly (readonly [number, number])[]) => [number, number, number, number];
13
14
  export declare const getClosestElementBounds: (elements: readonly ExcalidrawElement[], from: {
14
15
  x: number;
15
16
  y: number;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement } from "./types";
3
- import { Point, AppState } from "../types";
2
+ import { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement, ExcalidrawTextElementWithContainer } from "./types";
3
+ import { Point, AppState, PointerCoords } from "../types";
4
4
  import History from "../history";
5
5
  import Scene from "../scene/Scene";
6
6
  declare const editorMidPointsCache: {
@@ -18,6 +18,15 @@ export declare class LinearElementEditor {
18
18
  prevSelectedPointsIndices: readonly number[] | null;
19
19
  /** index */
20
20
  lastClickedPoint: number;
21
+ origin: Readonly<{
22
+ x: number;
23
+ y: number;
24
+ }> | null;
25
+ segmentMidpoint: {
26
+ value: Point | null;
27
+ index: number | null;
28
+ added: boolean;
29
+ };
21
30
  }>;
22
31
  /** whether you're dragging a point */
23
32
  readonly isDragging: boolean;
@@ -60,7 +69,6 @@ export declare class LinearElementEditor {
60
69
  didAddPoint: boolean;
61
70
  hitElement: NonDeleted<ExcalidrawElement> | null;
62
71
  linearElementEditor: LinearElementEditor | null;
63
- isMidPoint: boolean;
64
72
  };
65
73
  static arePointsEqual(point1: Point | null, point2: Point | null): boolean;
66
74
  static handlePointerMove(event: React.PointerEvent<HTMLCanvasElement>, scenePointerX: number, scenePointerY: number, appState: AppState): LinearElementEditor | null;
@@ -94,6 +102,15 @@ export declare class LinearElementEditor {
94
102
  prevSelectedPointsIndices: readonly number[] | null;
95
103
  /** index */
96
104
  lastClickedPoint: number;
105
+ origin: Readonly<{
106
+ x: number;
107
+ y: number;
108
+ }> | null;
109
+ segmentMidpoint: {
110
+ value: readonly [number, number] | null;
111
+ index: number | null;
112
+ added: boolean;
113
+ };
97
114
  }>;
98
115
  isDragging: boolean;
99
116
  lastUncommittedPoint: readonly [number, number] | null;
@@ -144,10 +161,9 @@ export declare class LinearElementEditor {
144
161
  currentItemFontFamily: number;
145
162
  currentItemFontSize: number;
146
163
  currentItemTextAlign: string;
147
- currentItemStrokeSharpness: import("./types").StrokeSharpness;
148
164
  currentItemStartArrowhead: import("./types").Arrowhead | null;
149
165
  currentItemEndArrowhead: import("./types").Arrowhead | null;
150
- currentItemLinearStrokeSharpness: import("./types").StrokeSharpness;
166
+ currentItemRoundness: import("./types").StrokeRoundness;
151
167
  viewBackgroundColor: string;
152
168
  scrollX: number;
153
169
  scrollY: number;
@@ -224,7 +240,18 @@ export declare class LinearElementEditor {
224
240
  startBinding?: PointBinding;
225
241
  endBinding?: PointBinding;
226
242
  }): void;
243
+ static shouldAddMidpoint(linearElementEditor: LinearElementEditor, pointerCoords: PointerCoords, appState: AppState): boolean;
244
+ static addMidpoint(linearElementEditor: LinearElementEditor, pointerCoords: PointerCoords, appState: AppState): {
245
+ pointerDownState: LinearElementEditor["pointerDownState"];
246
+ selectedPointsIndices: LinearElementEditor["selectedPointsIndices"];
247
+ } | undefined;
227
248
  private static _updatePoints;
228
249
  private static _getShiftLockedDelta;
250
+ static getBoundTextElementPosition: (element: ExcalidrawLinearElement, boundTextElement: ExcalidrawTextElementWithContainer) => {
251
+ x: number;
252
+ y: number;
253
+ };
254
+ static getMinMaxXYWithBoundText: (element: ExcalidrawLinearElement, elementBounds: [number, number, number, number], boundTextElement: ExcalidrawTextElementWithContainer) => [number, number, number, number, number, number];
255
+ static getElementAbsoluteCoords: (element: ExcalidrawLinearElement, includeBoundText?: boolean) => [number, number, number, number, number, number];
229
256
  }
230
257
  export {};
@@ -1,4 +1,4 @@
1
- import { ExcalidrawElement, ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, GroupId, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawRectangleElement } from "../element/types";
1
+ import { ExcalidrawElement, ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, GroupId, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer } from "../element/types";
2
2
  import { AppState } from "../types";
3
3
  declare type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "boundElements" | "seed" | "version" | "versionNonce" | "link">;
4
4
  export declare const newElement: (opts: {
@@ -11,7 +11,7 @@ export declare const newTextElement: (opts: {
11
11
  fontFamily: FontFamilyValues;
12
12
  textAlign: TextAlign;
13
13
  verticalAlign: VerticalAlign;
14
- containerId?: ExcalidrawRectangleElement["id"];
14
+ containerId?: ExcalidrawTextContainer["id"];
15
15
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawTextElement>;
16
16
  export declare const refreshTextDimensions: (textElement: ExcalidrawTextElement, text?: string) => {
17
17
  x: number;
@@ -3,7 +3,6 @@ import { MaybeTransformHandleType, TransformHandleDirection } from "./transformH
3
3
  import { PointerDownState } from "../types";
4
4
  export declare const normalizeAngle: (angle: number) => number;
5
5
  export declare const transformElements: (pointerDownState: PointerDownState, transformHandleType: MaybeTransformHandleType, selectedElements: readonly NonDeletedExcalidrawElement[], resizeArrowDirection: "origin" | "end", shouldRotateWithDiscreteAngle: boolean, shouldResizeFromCenter: boolean, shouldMaintainAspectRatio: boolean, pointerX: number, pointerY: number, centerX: number, centerY: number) => boolean;
6
- export declare const reshapeSingleTwoPointElement: (element: NonDeleted<ExcalidrawLinearElement>, resizeArrowDirection: "origin" | "end", shouldRotateWithDiscreteAngle: boolean, pointerX: number, pointerY: number) => void;
7
6
  export declare const resizeSingleElement: (originalElements: PointerDownState["originalElements"], shouldMaintainAspectRatio: boolean, element: NonDeletedExcalidrawElement, transformHandleDirection: TransformHandleDirection, shouldResizeFromCenter: boolean, pointerX: number, pointerY: number) => void;
8
7
  export declare const getResizeOffsetXY: (transformHandleType: MaybeTransformHandleType, selectedElements: NonDeletedExcalidrawElement[], x: number, y: number) => [number, number];
9
8
  export declare const getResizeArrowDirection: (transformHandleType: MaybeTransformHandleType, element: NonDeleted<ExcalidrawLinearElement>) => "origin" | "end";
@@ -1,8 +1,10 @@
1
- import { ExcalidrawElement, ExcalidrawTextElement, ExcalidrawTextElementWithContainer, FontString, NonDeletedExcalidrawElement } from "./types";
1
+ import { ExcalidrawElement, ExcalidrawTextContainer, ExcalidrawTextElement, ExcalidrawTextElementWithContainer, FontString, NonDeletedExcalidrawElement } from "./types";
2
2
  import { MaybeTransformHandleType } from "./transformHandles";
3
+ import { AppState } from "../types";
4
+ export declare const normalizeText: (text: string) => string;
3
5
  export declare const redrawTextBoundingBox: (textElement: ExcalidrawTextElement, container: ExcalidrawElement | null) => void;
4
6
  export declare const bindTextToShapeAfterDuplication: (sceneElements: ExcalidrawElement[], oldElements: ExcalidrawElement[], oldIdToDuplicatedId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>) => void;
5
- export declare const handleBindTextResize: (element: NonDeletedExcalidrawElement, transformHandleType: MaybeTransformHandleType) => void;
7
+ export declare const handleBindTextResize: (container: NonDeletedExcalidrawElement, transformHandleType: MaybeTransformHandleType) => void;
6
8
  export declare const measureText: (text: string, font: FontString, maxWidth?: number | null) => {
7
9
  width: number;
8
10
  height: number;
@@ -28,3 +30,16 @@ export declare const getContainerDims: (element: ExcalidrawElement) => {
28
30
  width: number;
29
31
  height: number;
30
32
  };
33
+ export declare const getContainerCenter: (container: ExcalidrawElement, appState: AppState) => {
34
+ x: number;
35
+ y: number;
36
+ };
37
+ export declare const getTextElementAngle: (textElement: ExcalidrawTextElement) => number;
38
+ export declare const getBoundTextElementOffset: (boundTextElement: ExcalidrawTextElement | null) => number;
39
+ export declare const getBoundTextElementPosition: (container: ExcalidrawElement, boundTextElement: ExcalidrawTextElementWithContainer) => {
40
+ x: number;
41
+ y: number;
42
+ } | undefined;
43
+ export declare const shouldAllowVerticalAlign: (selectedElements: NonDeletedExcalidrawElement[]) => boolean;
44
+ export declare const getTextBindableContainerAtPosition: (elements: readonly ExcalidrawElement[], appState: AppState, x: number, y: number) => ExcalidrawTextContainer | null;
45
+ export declare const isValidTextContainer: (element: ExcalidrawElement) => boolean;
@@ -1,5 +1,4 @@
1
1
  import { ExcalidrawElement, NonDeletedExcalidrawElement, PointerType } from "./types";
2
- import { Bounds } from "./bounds";
3
2
  import { AppState, Zoom } from "../types";
4
3
  export declare type TransformHandleDirection = "n" | "s" | "w" | "e" | "nw" | "ne" | "sw" | "se";
5
4
  export declare type TransformHandleType = TransformHandleDirection | "rotation";
@@ -14,11 +13,11 @@ export declare const OMIT_SIDES_FOR_MULTIPLE_ELEMENTS: {
14
13
  n: boolean;
15
14
  w: boolean;
16
15
  };
17
- export declare const getTransformHandlesFromCoords: ([x1, y1, x2, y2]: Bounds, angle: number, zoom: Zoom, pointerType: PointerType, omitSides?: {
16
+ export declare const getTransformHandlesFromCoords: ([x1, y1, x2, y2, cx, cy]: [number, number, number, number, number, number], angle: number, zoom: Zoom, pointerType: PointerType, omitSides?: {
18
17
  s?: boolean | undefined;
19
18
  e?: boolean | undefined;
20
- w?: boolean | undefined;
21
19
  n?: boolean | undefined;
20
+ w?: boolean | undefined;
22
21
  nw?: boolean | undefined;
23
22
  ne?: boolean | undefined;
24
23
  sw?: boolean | undefined;