@zsviczian/excalidraw 0.10.0-obsidian-37 → 0.10.0-obsidian-41

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 (40) hide show
  1. package/dist/excalidraw.development.js +85 -31
  2. package/dist/excalidraw.production.min.js +1 -1
  3. package/package.json +1 -1
  4. package/types/actions/actionAddToLibrary.d.ts +9 -12
  5. package/types/actions/actionCanvas.d.ts +45 -53
  6. package/types/actions/actionClipboard.d.ts +15 -20
  7. package/types/actions/actionDeleteSelected.d.ts +9 -12
  8. package/types/actions/actionExport.d.ts +27 -36
  9. package/types/actions/actionFinalize.d.ts +6 -8
  10. package/types/actions/actionMenu.d.ts +9 -12
  11. package/types/actions/actionProperties.d.ts +36 -48
  12. package/types/actions/actionStyles.d.ts +3 -4
  13. package/types/actions/actionToggleGridMode.d.ts +3 -4
  14. package/types/actions/actionToggleStats.d.ts +3 -4
  15. package/types/actions/actionToggleViewMode.d.ts +3 -4
  16. package/types/actions/actionToggleZenMode.d.ts +3 -4
  17. package/types/actions/actionUnbindText.d.ts +11 -0
  18. package/types/actions/index.d.ts +2 -0
  19. package/types/actions/shortcuts.d.ts +1 -1
  20. package/types/actions/types.d.ts +2 -2
  21. package/types/appState.d.ts +0 -4
  22. package/types/components/App.d.ts +14 -0
  23. package/types/components/ContextMenu.d.ts +3 -0
  24. package/types/components/LayerUI.d.ts +2 -1
  25. package/types/components/MobileMenu.d.ts +2 -1
  26. package/types/components/PenModeButton.d.ts +13 -0
  27. package/types/components/Tooltip.d.ts +7 -0
  28. package/types/components/icons.d.ts +1 -0
  29. package/types/constants.d.ts +1 -0
  30. package/types/element/Hyperlink.d.ts +117 -0
  31. package/types/element/collision.d.ts +1 -0
  32. package/types/element/linearElementEditor.d.ts +3 -4
  33. package/types/element/newElement.d.ts +1 -1
  34. package/types/element/textWysiwyg.d.ts +1 -3
  35. package/types/element/types.d.ts +1 -0
  36. package/types/keys.d.ts +1 -0
  37. package/types/renderer/renderElement.d.ts +1 -0
  38. package/types/scene/index.d.ts +1 -1
  39. package/types/scene/zoom.d.ts +12 -5
  40. package/types/types.d.ts +9 -4
@@ -34,6 +34,8 @@ export declare const actionChangeFillStyle: {
34
34
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
35
35
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
36
36
  elementLocked: boolean;
37
+ penMode: boolean;
38
+ penDetected: boolean;
37
39
  exportBackground: boolean;
38
40
  exportEmbedScene: boolean;
39
41
  exportWithDarkMode: boolean;
@@ -61,10 +63,6 @@ export declare const actionChangeFillStyle: {
61
63
  isRotating: boolean;
62
64
  zoom: Readonly<{
63
65
  value: import("../../src/types").NormalizedZoomValue;
64
- translation: Readonly<{
65
- x: number;
66
- y: number;
67
- }>;
68
66
  }>;
69
67
  openMenu: "canvas" | "shape" | null;
70
68
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -103,6 +101,7 @@ export declare const actionChangeFillStyle: {
103
101
  data: import("../charts").Spreadsheet;
104
102
  };
105
103
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
104
+ showHyperlinkPopup: false | "info" | "editor";
106
105
  };
107
106
  commitToHistory: true;
108
107
  };
@@ -129,6 +128,8 @@ export declare const actionChangeStrokeWidth: {
129
128
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
130
129
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
131
130
  elementLocked: boolean;
131
+ penMode: boolean;
132
+ penDetected: boolean;
132
133
  exportBackground: boolean;
133
134
  exportEmbedScene: boolean;
134
135
  exportWithDarkMode: boolean;
@@ -156,10 +157,6 @@ export declare const actionChangeStrokeWidth: {
156
157
  isRotating: boolean;
157
158
  zoom: Readonly<{
158
159
  value: import("../../src/types").NormalizedZoomValue;
159
- translation: Readonly<{
160
- x: number;
161
- y: number;
162
- }>;
163
160
  }>;
164
161
  openMenu: "canvas" | "shape" | null;
165
162
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -198,6 +195,7 @@ export declare const actionChangeStrokeWidth: {
198
195
  data: import("../charts").Spreadsheet;
199
196
  };
200
197
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
198
+ showHyperlinkPopup: false | "info" | "editor";
201
199
  };
202
200
  commitToHistory: true;
203
201
  };
@@ -224,6 +222,8 @@ export declare const actionChangeSloppiness: {
224
222
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
225
223
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
226
224
  elementLocked: boolean;
225
+ penMode: boolean;
226
+ penDetected: boolean;
227
227
  exportBackground: boolean;
228
228
  exportEmbedScene: boolean;
229
229
  exportWithDarkMode: boolean;
@@ -251,10 +251,6 @@ export declare const actionChangeSloppiness: {
251
251
  isRotating: boolean;
252
252
  zoom: Readonly<{
253
253
  value: import("../../src/types").NormalizedZoomValue;
254
- translation: Readonly<{
255
- x: number;
256
- y: number;
257
- }>;
258
254
  }>;
259
255
  openMenu: "canvas" | "shape" | null;
260
256
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -293,6 +289,7 @@ export declare const actionChangeSloppiness: {
293
289
  data: import("../charts").Spreadsheet;
294
290
  };
295
291
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
292
+ showHyperlinkPopup: false | "info" | "editor";
296
293
  };
297
294
  commitToHistory: true;
298
295
  };
@@ -319,6 +316,8 @@ export declare const actionChangeStrokeStyle: {
319
316
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
320
317
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
321
318
  elementLocked: boolean;
319
+ penMode: boolean;
320
+ penDetected: boolean;
322
321
  exportBackground: boolean;
323
322
  exportEmbedScene: boolean;
324
323
  exportWithDarkMode: boolean;
@@ -346,10 +345,6 @@ export declare const actionChangeStrokeStyle: {
346
345
  isRotating: boolean;
347
346
  zoom: Readonly<{
348
347
  value: import("../../src/types").NormalizedZoomValue;
349
- translation: Readonly<{
350
- x: number;
351
- y: number;
352
- }>;
353
348
  }>;
354
349
  openMenu: "canvas" | "shape" | null;
355
350
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -388,6 +383,7 @@ export declare const actionChangeStrokeStyle: {
388
383
  data: import("../charts").Spreadsheet;
389
384
  };
390
385
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
386
+ showHyperlinkPopup: false | "info" | "editor";
391
387
  };
392
388
  commitToHistory: true;
393
389
  };
@@ -414,6 +410,8 @@ export declare const actionChangeOpacity: {
414
410
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
415
411
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
416
412
  elementLocked: boolean;
413
+ penMode: boolean;
414
+ penDetected: boolean;
417
415
  exportBackground: boolean;
418
416
  exportEmbedScene: boolean;
419
417
  exportWithDarkMode: boolean;
@@ -441,10 +439,6 @@ export declare const actionChangeOpacity: {
441
439
  isRotating: boolean;
442
440
  zoom: Readonly<{
443
441
  value: import("../../src/types").NormalizedZoomValue;
444
- translation: Readonly<{
445
- x: number;
446
- y: number;
447
- }>;
448
442
  }>;
449
443
  openMenu: "canvas" | "shape" | null;
450
444
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -483,6 +477,7 @@ export declare const actionChangeOpacity: {
483
477
  data: import("../charts").Spreadsheet;
484
478
  };
485
479
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
480
+ showHyperlinkPopup: false | "info" | "editor";
486
481
  };
487
482
  commitToHistory: true;
488
483
  };
@@ -509,6 +504,8 @@ export declare const actionChangeFontSize: {
509
504
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
510
505
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
511
506
  elementLocked: boolean;
507
+ penMode: boolean;
508
+ penDetected: boolean;
512
509
  exportBackground: boolean;
513
510
  exportEmbedScene: boolean;
514
511
  exportWithDarkMode: boolean;
@@ -536,10 +533,6 @@ export declare const actionChangeFontSize: {
536
533
  isRotating: boolean;
537
534
  zoom: Readonly<{
538
535
  value: import("../../src/types").NormalizedZoomValue;
539
- translation: Readonly<{
540
- x: number;
541
- y: number;
542
- }>;
543
536
  }>;
544
537
  openMenu: "canvas" | "shape" | null;
545
538
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -578,6 +571,7 @@ export declare const actionChangeFontSize: {
578
571
  data: import("../charts").Spreadsheet;
579
572
  };
580
573
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
574
+ showHyperlinkPopup: false | "info" | "editor";
581
575
  };
582
576
  commitToHistory: boolean;
583
577
  };
@@ -604,6 +598,8 @@ export declare const actionDecreaseFontSize: {
604
598
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
605
599
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
606
600
  elementLocked: boolean;
601
+ penMode: boolean;
602
+ penDetected: boolean;
607
603
  exportBackground: boolean;
608
604
  exportEmbedScene: boolean;
609
605
  exportWithDarkMode: boolean;
@@ -631,10 +627,6 @@ export declare const actionDecreaseFontSize: {
631
627
  isRotating: boolean;
632
628
  zoom: Readonly<{
633
629
  value: import("../../src/types").NormalizedZoomValue;
634
- translation: Readonly<{
635
- x: number;
636
- y: number;
637
- }>;
638
630
  }>;
639
631
  openMenu: "canvas" | "shape" | null;
640
632
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -673,6 +665,7 @@ export declare const actionDecreaseFontSize: {
673
665
  data: import("../charts").Spreadsheet;
674
666
  };
675
667
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
668
+ showHyperlinkPopup: false | "info" | "editor";
676
669
  };
677
670
  commitToHistory: boolean;
678
671
  };
@@ -699,6 +692,8 @@ export declare const actionIncreaseFontSize: {
699
692
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
700
693
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
701
694
  elementLocked: boolean;
695
+ penMode: boolean;
696
+ penDetected: boolean;
702
697
  exportBackground: boolean;
703
698
  exportEmbedScene: boolean;
704
699
  exportWithDarkMode: boolean;
@@ -726,10 +721,6 @@ export declare const actionIncreaseFontSize: {
726
721
  isRotating: boolean;
727
722
  zoom: Readonly<{
728
723
  value: import("../../src/types").NormalizedZoomValue;
729
- translation: Readonly<{
730
- x: number;
731
- y: number;
732
- }>;
733
724
  }>;
734
725
  openMenu: "canvas" | "shape" | null;
735
726
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -768,6 +759,7 @@ export declare const actionIncreaseFontSize: {
768
759
  data: import("../charts").Spreadsheet;
769
760
  };
770
761
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
762
+ showHyperlinkPopup: false | "info" | "editor";
771
763
  };
772
764
  commitToHistory: boolean;
773
765
  };
@@ -794,6 +786,8 @@ export declare const actionChangeFontFamily: {
794
786
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
795
787
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
796
788
  elementLocked: boolean;
789
+ penMode: boolean;
790
+ penDetected: boolean;
797
791
  exportBackground: boolean;
798
792
  exportEmbedScene: boolean;
799
793
  exportWithDarkMode: boolean;
@@ -821,10 +815,6 @@ export declare const actionChangeFontFamily: {
821
815
  isRotating: boolean;
822
816
  zoom: Readonly<{
823
817
  value: import("../../src/types").NormalizedZoomValue;
824
- translation: Readonly<{
825
- x: number;
826
- y: number;
827
- }>;
828
818
  }>;
829
819
  openMenu: "canvas" | "shape" | null;
830
820
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -863,6 +853,7 @@ export declare const actionChangeFontFamily: {
863
853
  data: import("../charts").Spreadsheet;
864
854
  };
865
855
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
856
+ showHyperlinkPopup: false | "info" | "editor";
866
857
  };
867
858
  commitToHistory: true;
868
859
  };
@@ -889,6 +880,8 @@ export declare const actionChangeTextAlign: {
889
880
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
890
881
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
891
882
  elementLocked: boolean;
883
+ penMode: boolean;
884
+ penDetected: boolean;
892
885
  exportBackground: boolean;
893
886
  exportEmbedScene: boolean;
894
887
  exportWithDarkMode: boolean;
@@ -916,10 +909,6 @@ export declare const actionChangeTextAlign: {
916
909
  isRotating: boolean;
917
910
  zoom: Readonly<{
918
911
  value: import("../../src/types").NormalizedZoomValue;
919
- translation: Readonly<{
920
- x: number;
921
- y: number;
922
- }>;
923
912
  }>;
924
913
  openMenu: "canvas" | "shape" | null;
925
914
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -958,6 +947,7 @@ export declare const actionChangeTextAlign: {
958
947
  data: import("../charts").Spreadsheet;
959
948
  };
960
949
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
950
+ showHyperlinkPopup: false | "info" | "editor";
961
951
  };
962
952
  commitToHistory: true;
963
953
  };
@@ -985,6 +975,8 @@ export declare const actionChangeSharpness: {
985
975
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
986
976
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
987
977
  elementLocked: boolean;
978
+ penMode: boolean;
979
+ penDetected: boolean;
988
980
  exportBackground: boolean;
989
981
  exportEmbedScene: boolean;
990
982
  exportWithDarkMode: boolean;
@@ -1011,10 +1003,6 @@ export declare const actionChangeSharpness: {
1011
1003
  isRotating: boolean;
1012
1004
  zoom: Readonly<{
1013
1005
  value: import("../../src/types").NormalizedZoomValue;
1014
- translation: Readonly<{
1015
- x: number;
1016
- y: number;
1017
- }>;
1018
1006
  }>;
1019
1007
  openMenu: "canvas" | "shape" | null;
1020
1008
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -1053,6 +1041,7 @@ export declare const actionChangeSharpness: {
1053
1041
  data: import("../charts").Spreadsheet;
1054
1042
  };
1055
1043
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
1044
+ showHyperlinkPopup: false | "info" | "editor";
1056
1045
  };
1057
1046
  commitToHistory: true;
1058
1047
  };
@@ -1081,6 +1070,8 @@ export declare const actionChangeArrowhead: {
1081
1070
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1082
1071
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
1083
1072
  elementLocked: boolean;
1073
+ penMode: boolean;
1074
+ penDetected: boolean;
1084
1075
  exportBackground: boolean;
1085
1076
  exportEmbedScene: boolean;
1086
1077
  exportWithDarkMode: boolean;
@@ -1109,10 +1100,6 @@ export declare const actionChangeArrowhead: {
1109
1100
  isRotating: boolean;
1110
1101
  zoom: Readonly<{
1111
1102
  value: import("../../src/types").NormalizedZoomValue;
1112
- translation: Readonly<{
1113
- x: number;
1114
- y: number;
1115
- }>;
1116
1103
  }>;
1117
1104
  openMenu: "canvas" | "shape" | null;
1118
1105
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -1151,6 +1138,7 @@ export declare const actionChangeArrowhead: {
1151
1138
  data: import("../charts").Spreadsheet;
1152
1139
  };
1153
1140
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
1141
+ showHyperlinkPopup: false | "info" | "editor";
1154
1142
  };
1155
1143
  commitToHistory: true;
1156
1144
  };
@@ -18,6 +18,8 @@ export declare const actionCopyStyles: {
18
18
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
19
19
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
20
20
  elementLocked: boolean;
21
+ penMode: boolean;
22
+ penDetected: boolean;
21
23
  exportBackground: boolean;
22
24
  exportEmbedScene: boolean;
23
25
  exportWithDarkMode: boolean;
@@ -46,10 +48,6 @@ export declare const actionCopyStyles: {
46
48
  isRotating: boolean;
47
49
  zoom: Readonly<{
48
50
  value: import("../types").NormalizedZoomValue;
49
- translation: Readonly<{
50
- x: number;
51
- y: number;
52
- }>;
53
51
  }>;
54
52
  openMenu: "canvas" | "shape" | null;
55
53
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -87,6 +85,7 @@ export declare const actionCopyStyles: {
87
85
  data: import("../charts").Spreadsheet;
88
86
  };
89
87
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
88
+ showHyperlinkPopup: false | "info" | "editor";
90
89
  };
91
90
  commitToHistory: false;
92
91
  };
@@ -18,6 +18,8 @@ export declare const actionToggleGridMode: {
18
18
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
19
19
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
20
20
  elementLocked: boolean;
21
+ penMode: boolean;
22
+ penDetected: boolean;
21
23
  exportBackground: boolean;
22
24
  exportEmbedScene: boolean;
23
25
  exportWithDarkMode: boolean;
@@ -46,10 +48,6 @@ export declare const actionToggleGridMode: {
46
48
  isRotating: boolean;
47
49
  zoom: Readonly<{
48
50
  value: import("../types").NormalizedZoomValue;
49
- translation: Readonly<{
50
- x: number;
51
- y: number;
52
- }>;
53
51
  }>;
54
52
  openMenu: "canvas" | "shape" | null;
55
53
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -87,6 +85,7 @@ export declare const actionToggleGridMode: {
87
85
  data: import("../charts").Spreadsheet;
88
86
  };
89
87
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
88
+ showHyperlinkPopup: false | "info" | "editor";
90
89
  };
91
90
  commitToHistory: false;
92
91
  };
@@ -17,6 +17,8 @@ export declare const actionToggleStats: {
17
17
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
18
18
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
19
19
  elementLocked: boolean;
20
+ penMode: boolean;
21
+ penDetected: boolean;
20
22
  exportBackground: boolean;
21
23
  exportEmbedScene: boolean;
22
24
  exportWithDarkMode: boolean;
@@ -45,10 +47,6 @@ export declare const actionToggleStats: {
45
47
  isRotating: boolean;
46
48
  zoom: Readonly<{
47
49
  value: import("../types").NormalizedZoomValue;
48
- translation: Readonly<{
49
- x: number;
50
- y: number;
51
- }>;
52
50
  }>;
53
51
  openMenu: "canvas" | "shape" | null;
54
52
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -86,6 +84,7 @@ export declare const actionToggleStats: {
86
84
  data: import("../charts").Spreadsheet;
87
85
  };
88
86
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
87
+ showHyperlinkPopup: false | "info" | "editor";
89
88
  };
90
89
  commitToHistory: false;
91
90
  };
@@ -17,6 +17,8 @@ export declare const actionToggleViewMode: {
17
17
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
18
18
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
19
19
  elementLocked: boolean;
20
+ penMode: boolean;
21
+ penDetected: boolean;
20
22
  exportBackground: boolean;
21
23
  exportEmbedScene: boolean;
22
24
  exportWithDarkMode: boolean;
@@ -45,10 +47,6 @@ export declare const actionToggleViewMode: {
45
47
  isRotating: boolean;
46
48
  zoom: Readonly<{
47
49
  value: import("../types").NormalizedZoomValue;
48
- translation: Readonly<{
49
- x: number;
50
- y: number;
51
- }>;
52
50
  }>;
53
51
  openMenu: "canvas" | "shape" | null;
54
52
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -86,6 +84,7 @@ export declare const actionToggleViewMode: {
86
84
  data: import("../charts").Spreadsheet;
87
85
  };
88
86
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
87
+ showHyperlinkPopup: false | "info" | "editor";
89
88
  };
90
89
  commitToHistory: false;
91
90
  };
@@ -17,6 +17,8 @@ export declare const actionToggleZenMode: {
17
17
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
18
18
  elementType: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw";
19
19
  elementLocked: boolean;
20
+ penMode: boolean;
21
+ penDetected: boolean;
20
22
  exportBackground: boolean;
21
23
  exportEmbedScene: boolean;
22
24
  exportWithDarkMode: boolean;
@@ -45,10 +47,6 @@ export declare const actionToggleZenMode: {
45
47
  isRotating: boolean;
46
48
  zoom: Readonly<{
47
49
  value: import("../types").NormalizedZoomValue;
48
- translation: Readonly<{
49
- x: number;
50
- y: number;
51
- }>;
52
50
  }>;
53
51
  openMenu: "canvas" | "shape" | null;
54
52
  openPopup: "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null;
@@ -86,6 +84,7 @@ export declare const actionToggleZenMode: {
86
84
  data: import("../charts").Spreadsheet;
87
85
  };
88
86
  pendingImageElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawImageElement> | null;
87
+ showHyperlinkPopup: false | "info" | "editor";
89
88
  };
90
89
  commitToHistory: false;
91
90
  };
@@ -0,0 +1,11 @@
1
+ export declare const actionUnbindText: {
2
+ name: "unbindText";
3
+ contextItemLabel: string;
4
+ perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>) => {
5
+ elements: readonly import("../element/types").ExcalidrawElement[];
6
+ appState: Readonly<import("../types").AppState>;
7
+ commitToHistory: true;
8
+ };
9
+ } & {
10
+ keyTest?: undefined;
11
+ };
@@ -18,3 +18,5 @@ export { actionCopy, actionCut, actionCopyAsPng, actionCopyAsSvg, } from "./acti
18
18
  export { actionToggleGridMode } from "./actionToggleGridMode";
19
19
  export { actionToggleZenMode } from "./actionToggleZenMode";
20
20
  export { actionToggleStats } from "./actionToggleStats";
21
+ export { actionUnbindText } from "./actionUnbindText";
22
+ export { actionLink } from "../element/Hyperlink";
@@ -1,2 +1,2 @@
1
- export declare type ShortcutName = "cut" | "copy" | "paste" | "copyStyles" | "pasteStyles" | "selectAll" | "deleteSelectedElements" | "duplicateSelection" | "sendBackward" | "bringForward" | "sendToBack" | "bringToFront" | "copyAsPng" | "copyAsSvg" | "group" | "ungroup" | "gridMode" | "zenMode" | "stats" | "addToLibrary" | "viewMode" | "flipHorizontal" | "flipVertical";
1
+ export declare type ShortcutName = "cut" | "copy" | "paste" | "copyStyles" | "pasteStyles" | "selectAll" | "deleteSelectedElements" | "duplicateSelection" | "sendBackward" | "bringForward" | "sendToBack" | "bringToFront" | "copyAsPng" | "copyAsSvg" | "group" | "ungroup" | "gridMode" | "zenMode" | "stats" | "addToLibrary" | "viewMode" | "flipHorizontal" | "flipVertical" | "link";
2
2
  export declare const getShortcutFromShortcutName: (name: ShortcutName) => string;
@@ -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" | "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" | "toggleFullScreen" | "toggleShortcuts" | "group" | "ungroup" | "goToCollaborator" | "addToLibrary" | "changeSharpness" | "alignTop" | "alignBottom" | "alignLeft" | "alignRight" | "alignVerticallyCentered" | "alignHorizontallyCentered" | "distributeHorizontally" | "distributeVertically" | "flipHorizontal" | "flipVertical" | "viewMode" | "exportWithDarkMode" | "toggleTheme" | "increaseFontSize" | "decreaseFontSize";
17
+ export declare type ActionName = "copy" | "cut" | "paste" | "copyAsPng" | "copyAsSvg" | "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" | "toggleFullScreen" | "toggleShortcuts" | "group" | "ungroup" | "goToCollaborator" | "addToLibrary" | "changeSharpness" | "alignTop" | "alignBottom" | "alignLeft" | "alignRight" | "alignVerticallyCentered" | "alignHorizontallyCentered" | "distributeHorizontally" | "distributeVertically" | "flipHorizontal" | "flipVertical" | "viewMode" | "exportWithDarkMode" | "toggleTheme" | "increaseFontSize" | "decreaseFontSize" | "unbindText" | "link";
18
18
  export declare type PanelComponentProps = {
19
19
  elements: readonly ExcalidrawElement[];
20
20
  appState: AppState;
@@ -31,7 +31,7 @@ export interface Action {
31
31
  perform: ActionFn;
32
32
  keyPriority?: number;
33
33
  keyTest?: (event: React.KeyboardEvent | KeyboardEvent, appState: AppState, elements: readonly ExcalidrawElement[]) => boolean;
34
- contextItemLabel?: string;
34
+ contextItemLabel?: string | ((elements: readonly ExcalidrawElement[], appState: Readonly<AppState>) => string);
35
35
  contextItemPredicate?: (elements: readonly ExcalidrawElement[], appState: AppState) => boolean;
36
36
  checked?: (appState: Readonly<AppState>) => boolean;
37
37
  }
@@ -6,10 +6,6 @@ export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>)
6
6
  viewBackgroundColor?: string | undefined;
7
7
  zoom?: Readonly<{
8
8
  value: NormalizedZoomValue;
9
- translation: Readonly<{
10
- x: number;
11
- y: number;
12
- }>;
13
9
  }> | undefined;
14
10
  shouldCacheIgnoreZoom?: boolean | undefined;
15
11
  theme?: string | undefined;
@@ -29,6 +29,10 @@ declare class App extends React.Component<AppProps, AppState> {
29
29
  private excalidrawContainerValue;
30
30
  files: BinaryFiles;
31
31
  imageCache: AppClassProperties["imageCache"];
32
+ hitLinkElement?: NonDeletedExcalidrawElement;
33
+ lastPointerDown: React.PointerEvent<HTMLCanvasElement> | null;
34
+ lastPointerUp: React.PointerEvent<HTMLElement> | PointerEvent | null;
35
+ contextMenuOpen: boolean;
32
36
  constructor(props: AppProps);
33
37
  private renderCanvas;
34
38
  render(): JSX.Element;
@@ -68,6 +72,7 @@ declare class App extends React.Component<AppProps, AppState> {
68
72
  setAppState: (obj: any) => void;
69
73
  removePointer: (event: React.PointerEvent<HTMLElement> | PointerEvent) => void;
70
74
  toggleLock: () => void;
75
+ togglePenMode: () => void;
71
76
  toggleZenMode: () => void;
72
77
  toggleStats: () => void;
73
78
  scrollToContent: (target?: ExcalidrawElement | readonly ExcalidrawElement[]) => void;
@@ -79,6 +84,11 @@ declare class App extends React.Component<AppProps, AppState> {
79
84
  /** adds supplied files to existing files in the appState */
80
85
  addFiles: ExcalidrawImperativeAPI["addFiles"];
81
86
  setLocalFont: ExcalidrawImperativeAPI["setLocalFont"];
87
+ selectElements: ExcalidrawImperativeAPI["selectElements"];
88
+ bringToFront: ExcalidrawImperativeAPI["bringToFront"];
89
+ bringForward: ExcalidrawImperativeAPI["bringForward"];
90
+ sendToBack: ExcalidrawImperativeAPI["sendToBack"];
91
+ sendBackward: ExcalidrawImperativeAPI["sendBackward"];
82
92
  updateScene: <K extends keyof AppState>(sceneData: {
83
93
  elements?: SceneData["elements"];
84
94
  appState?: Pick<AppState, K> | null | undefined;
@@ -101,6 +111,10 @@ declare class App extends React.Component<AppProps, AppState> {
101
111
  private getElementsAtPosition;
102
112
  private startTextEditing;
103
113
  private handleCanvasDoubleClick;
114
+ private getElementLinkAtPosition;
115
+ private redirectToLink;
116
+ private attachLinkListener;
117
+ private detachLinkListener;
104
118
  private handleCanvasPointerMove;
105
119
  private handleTouchMove;
106
120
  private handleCanvasPointerDown;
@@ -2,6 +2,7 @@ import "./ContextMenu.scss";
2
2
  import { Action } from "../actions/types";
3
3
  import { ActionManager } from "../actions/manager";
4
4
  import { AppState } from "../types";
5
+ import { NonDeletedExcalidrawElement } from "../element/types";
5
6
  export declare type ContextMenuOption = "separator" | Action;
6
7
  declare type ContextMenuProps = {
7
8
  options: ContextMenuOption[];
@@ -10,6 +11,7 @@ declare type ContextMenuProps = {
10
11
  left: number;
11
12
  actionManager: ActionManager;
12
13
  appState: Readonly<AppState>;
14
+ elements: readonly NonDeletedExcalidrawElement[];
13
15
  };
14
16
  declare type ContextMenuParams = {
15
17
  options: (ContextMenuOption | false | null | undefined)[];
@@ -18,6 +20,7 @@ declare type ContextMenuParams = {
18
20
  actionManager: ContextMenuProps["actionManager"];
19
21
  appState: Readonly<AppState>;
20
22
  container: HTMLElement;
23
+ elements: readonly NonDeletedExcalidrawElement[];
21
24
  };
22
25
  declare const _default: {
23
26
  push(params: ContextMenuParams): void;
@@ -15,6 +15,7 @@ interface LayerUIProps {
15
15
  elements: readonly NonDeletedExcalidrawElement[];
16
16
  onCollabButtonClick?: () => void;
17
17
  onLockToggle: () => void;
18
+ onPenModeToggle: () => void;
18
19
  onInsertElements: (elements: readonly NonDeletedExcalidrawElement[]) => void;
19
20
  zenModeEnabled: boolean;
20
21
  showExitZenModeBtn: boolean;
@@ -34,5 +35,5 @@ interface LayerUIProps {
34
35
  insertOnCanvasDirectly: boolean;
35
36
  }) => void;
36
37
  }
37
- declare const _default: React.MemoExoticComponent<({ actionManager, appState, files, setAppState, canvas, elements, onCollabButtonClick, onLockToggle, onInsertElements, zenModeEnabled, showExitZenModeBtn, showThemeBtn, toggleZenMode, isCollaborating, renderTopRightUI, renderCustomFooter, viewModeEnabled, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, }: LayerUIProps) => JSX.Element>;
38
+ declare const _default: React.MemoExoticComponent<({ actionManager, appState, files, setAppState, canvas, elements, onCollabButtonClick, onLockToggle, onPenModeToggle, onInsertElements, zenModeEnabled, showExitZenModeBtn, showThemeBtn, toggleZenMode, isCollaborating, renderTopRightUI, renderCustomFooter, viewModeEnabled, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, }: LayerUIProps) => JSX.Element>;
38
39
  export default _default;
@@ -12,6 +12,7 @@ declare type MobileMenuProps = {
12
12
  libraryMenu: JSX.Element | null;
13
13
  onCollabButtonClick?: () => void;
14
14
  onLockToggle: () => void;
15
+ onPenModeToggle: () => void;
15
16
  canvas: HTMLCanvasElement | null;
16
17
  isCollaborating: boolean;
17
18
  renderCustomFooter?: (isMobile: boolean, appState: AppState) => JSX.Element;
@@ -22,5 +23,5 @@ declare type MobileMenuProps = {
22
23
  }) => void;
23
24
  renderTopRightUI?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
24
25
  };
25
- export declare const MobileMenu: ({ appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, canvas, isCollaborating, renderCustomFooter, viewModeEnabled, showThemeBtn, onImageAction, renderTopRightUI, }: MobileMenuProps) => JSX.Element;
26
+ export declare const MobileMenu: ({ appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, viewModeEnabled, showThemeBtn, onImageAction, renderTopRightUI, }: MobileMenuProps) => JSX.Element;
26
27
  export {};
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import "./ToolIcon.scss";
3
+ declare type PenModeIconProps = {
4
+ title?: string;
5
+ name?: string;
6
+ checked: boolean;
7
+ onChange?(): void;
8
+ zenModeEnabled?: boolean;
9
+ isMobile?: boolean;
10
+ penDetected: boolean;
11
+ };
12
+ export declare const PenModeButton: (props: PenModeIconProps) => JSX.Element | null;
13
+ export {};