@zsviczian/excalidraw 0.15.2-obsidian-4 → 0.15.2-obsidian-6

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 (73) hide show
  1. package/README.md +4 -0
  2. package/dist/excalidraw.development.js +273 -143
  3. package/dist/excalidraw.production.min.js +1 -1
  4. package/dist/excalidraw.production.min.js.LICENSE.txt +2 -0
  5. package/package.json +1 -1
  6. package/types/actions/actionAddToLibrary.d.ts +30 -3
  7. package/types/actions/actionAlign.d.ts +12 -6
  8. package/types/actions/actionBoundText.d.ts +21 -3
  9. package/types/actions/actionCanvas.d.ts +397 -17
  10. package/types/actions/actionClipboard.d.ts +47 -5
  11. package/types/actions/actionDeleteSelected.d.ts +27 -3
  12. package/types/actions/actionDistribute.d.ts +2 -2
  13. package/types/actions/actionElementLock.d.ts +21 -2
  14. package/types/actions/actionExport.d.ts +90 -9
  15. package/types/actions/actionFinalize.d.ts +20 -2
  16. package/types/actions/actionFlip.d.ts +2 -2
  17. package/types/actions/actionFrame.d.ts +475 -0
  18. package/types/actions/actionGroup.d.ts +2 -2
  19. package/types/actions/actionLinearEditor.d.ts +10 -1
  20. package/types/actions/actionMenu.d.ts +30 -3
  21. package/types/actions/actionNavigate.d.ts +1 -1
  22. package/types/actions/actionProperties.d.ts +130 -13
  23. package/types/actions/actionStyles.d.ts +10 -1
  24. package/types/actions/actionToggleGridMode.d.ts +10 -1
  25. package/types/actions/actionToggleStats.d.ts +10 -1
  26. package/types/actions/actionToggleViewMode.d.ts +10 -1
  27. package/types/actions/actionToggleZenMode.d.ts +10 -1
  28. package/types/actions/actionZindex.d.ts +4 -4
  29. package/types/actions/types.d.ts +1 -1
  30. package/types/appState.d.ts +1 -1
  31. package/types/clients.d.ts +1 -5
  32. package/types/components/App.d.ts +29 -2
  33. package/types/components/Avatar.d.ts +0 -1
  34. package/types/components/Dialog.d.ts +2 -1
  35. package/types/components/FilledButton.d.ts +2 -1
  36. package/types/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -0
  37. package/types/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -0
  38. package/types/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -0
  39. package/types/components/ToolButton.d.ts +2 -1
  40. package/types/components/dropdownMenu/DropdownMenu.d.ts +3 -2
  41. package/types/components/dropdownMenu/DropdownMenuTrigger.d.ts +4 -2
  42. package/types/components/icons.d.ts +4 -0
  43. package/types/components/main-menu/MainMenu.d.ts +3 -2
  44. package/types/constants.d.ts +23 -1
  45. package/types/context/tunnels.d.ts +1 -0
  46. package/types/data/url.d.ts +2 -0
  47. package/types/element/Hyperlink.d.ts +20 -7
  48. package/types/element/binding.d.ts +1 -1
  49. package/types/element/bounds.d.ts +31 -6
  50. package/types/element/collision.d.ts +7 -7
  51. package/types/element/dragElements.d.ts +2 -1
  52. package/types/element/iframe.d.ts +167 -0
  53. package/types/element/index.d.ts +3 -2
  54. package/types/element/linearElementEditor.d.ts +11 -2
  55. package/types/element/newElement.d.ts +7 -2
  56. package/types/element/transformHandles.d.ts +8 -1
  57. package/types/element/typeChecks.d.ts +5 -3
  58. package/types/element/types.d.ts +20 -4
  59. package/types/frame.d.ts +40 -0
  60. package/types/groups.d.ts +4 -0
  61. package/types/keys.d.ts +3 -0
  62. package/types/math.d.ts +1 -0
  63. package/types/packages/excalidraw/example/initialData.d.ts +6 -0
  64. package/types/packages/excalidraw/index.d.ts +1 -0
  65. package/types/renderer/renderElement.d.ts +3 -2
  66. package/types/renderer/renderScene.d.ts +12 -3
  67. package/types/renderer/roundRect.d.ts +1 -1
  68. package/types/scene/Scene.d.ts +8 -1
  69. package/types/scene/export.d.ts +1 -0
  70. package/types/scene/selection.d.ts +13 -3
  71. package/types/types.d.ts +38 -3
  72. package/types/utils.d.ts +46 -16
  73. package/types/zindex.d.ts +4 -4
@@ -41,7 +41,7 @@ export declare const actionClearCanvas: {
41
41
  lastActiveTool: import("../types").LastActiveTool;
42
42
  locked: boolean;
43
43
  } & ({
44
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
44
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
45
45
  customType: null;
46
46
  } | {
47
47
  type: "custom";
@@ -71,6 +71,10 @@ export declare const actionClearCanvas: {
71
71
  showWelcomeScreen: boolean;
72
72
  isLoading: boolean;
73
73
  errorMessage: import("react").ReactNode;
74
+ activeIFrame: {
75
+ element: import("../element/types").NonDeletedExcalidrawElement;
76
+ state: "active" | "hover";
77
+ } | null;
74
78
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
75
79
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
76
80
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -78,6 +82,10 @@ export declare const actionClearCanvas: {
78
82
  isBindingEnabled: boolean;
79
83
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
80
84
  suggestedBindings: import("../element/binding").SuggestedBinding[];
85
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
86
+ shouldRenderFrames: boolean;
87
+ editingFrame: string | null;
88
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
81
89
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
82
90
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
83
91
  exportWithDarkMode: boolean;
@@ -120,6 +128,7 @@ export declare const actionClearCanvas: {
120
128
  previousSelectedElementIds: {
121
129
  [id: string]: boolean;
122
130
  };
131
+ selectedElementsAreBeingDragged: boolean;
123
132
  shouldCacheIgnoreZoom: boolean;
124
133
  toast: {
125
134
  message: string;
@@ -172,6 +181,10 @@ export declare const actionZoomIn: {
172
181
  showWelcomeScreen: boolean;
173
182
  isLoading: boolean;
174
183
  errorMessage: import("react").ReactNode;
184
+ activeIFrame: {
185
+ element: import("../element/types").NonDeletedExcalidrawElement;
186
+ state: "active" | "hover";
187
+ } | null;
175
188
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
176
189
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
177
190
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -179,13 +192,17 @@ export declare const actionZoomIn: {
179
192
  isBindingEnabled: boolean;
180
193
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
181
194
  suggestedBindings: import("../element/binding").SuggestedBinding[];
195
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
196
+ shouldRenderFrames: boolean;
197
+ editingFrame: string | null;
198
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
182
199
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
183
200
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
184
201
  activeTool: {
185
202
  lastActiveTool: import("../types").LastActiveTool;
186
203
  locked: boolean;
187
204
  } & ({
188
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
205
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
189
206
  customType: null;
190
207
  } | {
191
208
  type: "custom";
@@ -231,6 +248,7 @@ export declare const actionZoomIn: {
231
248
  previousSelectedElementIds: {
232
249
  [id: string]: boolean;
233
250
  };
251
+ selectedElementsAreBeingDragged: boolean;
234
252
  shouldCacheIgnoreZoom: boolean;
235
253
  toast: {
236
254
  message: string;
@@ -314,6 +332,10 @@ export declare const actionZoomOut: {
314
332
  showWelcomeScreen: boolean;
315
333
  isLoading: boolean;
316
334
  errorMessage: import("react").ReactNode;
335
+ activeIFrame: {
336
+ element: import("../element/types").NonDeletedExcalidrawElement;
337
+ state: "active" | "hover";
338
+ } | null;
317
339
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
318
340
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
319
341
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -321,13 +343,17 @@ export declare const actionZoomOut: {
321
343
  isBindingEnabled: boolean;
322
344
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
323
345
  suggestedBindings: import("../element/binding").SuggestedBinding[];
346
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
347
+ shouldRenderFrames: boolean;
348
+ editingFrame: string | null;
349
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
324
350
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
325
351
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
326
352
  activeTool: {
327
353
  lastActiveTool: import("../types").LastActiveTool;
328
354
  locked: boolean;
329
355
  } & ({
330
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
356
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
331
357
  customType: null;
332
358
  } | {
333
359
  type: "custom";
@@ -373,6 +399,7 @@ export declare const actionZoomOut: {
373
399
  previousSelectedElementIds: {
374
400
  [id: string]: boolean;
375
401
  };
402
+ selectedElementsAreBeingDragged: boolean;
376
403
  shouldCacheIgnoreZoom: boolean;
377
404
  toast: {
378
405
  message: string;
@@ -456,6 +483,10 @@ export declare const actionResetZoom: {
456
483
  showWelcomeScreen: boolean;
457
484
  isLoading: boolean;
458
485
  errorMessage: import("react").ReactNode;
486
+ activeIFrame: {
487
+ element: import("../element/types").NonDeletedExcalidrawElement;
488
+ state: "active" | "hover";
489
+ } | null;
459
490
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
460
491
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
461
492
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -463,13 +494,17 @@ export declare const actionResetZoom: {
463
494
  isBindingEnabled: boolean;
464
495
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
465
496
  suggestedBindings: import("../element/binding").SuggestedBinding[];
497
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
498
+ shouldRenderFrames: boolean;
499
+ editingFrame: string | null;
500
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
466
501
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
467
502
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
468
503
  activeTool: {
469
504
  lastActiveTool: import("../types").LastActiveTool;
470
505
  locked: boolean;
471
506
  } & ({
472
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
507
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
473
508
  customType: null;
474
509
  } | {
475
510
  type: "custom";
@@ -515,6 +550,7 @@ export declare const actionResetZoom: {
515
550
  previousSelectedElementIds: {
516
551
  [id: string]: boolean;
517
552
  };
553
+ selectedElementsAreBeingDragged: boolean;
518
554
  shouldCacheIgnoreZoom: boolean;
519
555
  toast: {
520
556
  message: string;
@@ -577,13 +613,20 @@ export declare const actionResetZoom: {
577
613
  } & {
578
614
  keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
579
615
  };
580
- export declare const zoomToFitElements: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, zoomToSelection: boolean, maxZoom?: number, margin?: number) => {
616
+ export declare const zoomToFit: ({ targetElements, appState, fitToViewport, viewportZoomFactor, }: {
617
+ targetElements: readonly ExcalidrawElement[];
618
+ appState: Readonly<AppState>;
619
+ /** whether to fit content to viewport (beyond >100%) */
620
+ fitToViewport: boolean;
621
+ /** zoom content to cover X of the viewport, when fitToViewport=true */
622
+ viewportZoomFactor?: number | undefined;
623
+ }) => {
581
624
  appState: {
625
+ scrollX: number;
626
+ scrollY: number;
582
627
  zoom: {
583
628
  value: NormalizedZoomValue;
584
629
  };
585
- scrollX: number;
586
- scrollY: number;
587
630
  contextMenu: {
588
631
  items: import("../components/ContextMenu").ContextMenuItems;
589
632
  top: number;
@@ -592,6 +635,10 @@ export declare const zoomToFitElements: (elements: readonly ExcalidrawElement[],
592
635
  showWelcomeScreen: boolean;
593
636
  isLoading: boolean;
594
637
  errorMessage: import("react").ReactNode;
638
+ activeIFrame: {
639
+ element: import("../element/types").NonDeletedExcalidrawElement;
640
+ state: "active" | "hover";
641
+ } | null;
595
642
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
596
643
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
597
644
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -599,13 +646,17 @@ export declare const zoomToFitElements: (elements: readonly ExcalidrawElement[],
599
646
  isBindingEnabled: boolean;
600
647
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
601
648
  suggestedBindings: import("../element/binding").SuggestedBinding[];
649
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
650
+ shouldRenderFrames: boolean;
651
+ editingFrame: string | null;
652
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
602
653
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
603
654
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
604
655
  activeTool: {
605
656
  lastActiveTool: import("../types").LastActiveTool;
606
657
  locked: boolean;
607
658
  } & ({
608
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
659
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
609
660
  customType: null;
610
661
  } | {
611
662
  type: "custom";
@@ -651,6 +702,7 @@ export declare const zoomToFitElements: (elements: readonly ExcalidrawElement[],
651
702
  previousSelectedElementIds: {
652
703
  [id: string]: boolean;
653
704
  };
705
+ selectedElementsAreBeingDragged: boolean;
654
706
  shouldCacheIgnoreZoom: boolean;
655
707
  toast: {
656
708
  message: string;
@@ -708,18 +760,167 @@ export declare const zoomToFitElements: (elements: readonly ExcalidrawElement[],
708
760
  };
709
761
  commitToHistory: boolean;
710
762
  };
711
- export declare const actionZoomToSelected: {
712
- name: "zoomToSelection";
763
+ export declare const actionZoomToFitSelectionInViewport: {
764
+ name: "zoomToFitSelectionInViewport";
713
765
  trackEvent: {
714
766
  category: "canvas";
715
767
  };
716
768
  perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>) => {
717
769
  appState: {
770
+ scrollX: number;
771
+ scrollY: number;
718
772
  zoom: {
719
773
  value: NormalizedZoomValue;
720
774
  };
775
+ contextMenu: {
776
+ items: import("../components/ContextMenu").ContextMenuItems;
777
+ top: number;
778
+ left: number;
779
+ } | null;
780
+ showWelcomeScreen: boolean;
781
+ isLoading: boolean;
782
+ errorMessage: import("react").ReactNode;
783
+ activeIFrame: {
784
+ element: import("../element/types").NonDeletedExcalidrawElement;
785
+ state: "active" | "hover";
786
+ } | null;
787
+ draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
788
+ resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
789
+ multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
790
+ selectionElement: import("../element/types").NonDeletedExcalidrawElement | null;
791
+ isBindingEnabled: boolean;
792
+ startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
793
+ suggestedBindings: import("../element/binding").SuggestedBinding[];
794
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
795
+ shouldRenderFrames: boolean;
796
+ editingFrame: string | null;
797
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
798
+ editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
799
+ editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
800
+ activeTool: {
801
+ lastActiveTool: import("../types").LastActiveTool;
802
+ locked: boolean;
803
+ } & ({
804
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
805
+ customType: null;
806
+ } | {
807
+ type: "custom";
808
+ customType: string;
809
+ });
810
+ penMode: boolean;
811
+ penDetected: boolean;
812
+ exportBackground: boolean;
813
+ exportEmbedScene: boolean;
814
+ exportWithDarkMode: boolean;
815
+ exportScale: number;
816
+ currentItemStrokeColor: string;
817
+ currentItemBackgroundColor: string;
818
+ currentItemFillStyle: import("../element/types").FillStyle;
819
+ currentItemStrokeWidth: number;
820
+ currentItemStrokeStyle: import("../element/types").StrokeStyle;
821
+ currentItemRoughness: number;
822
+ currentItemOpacity: number;
823
+ currentItemFontFamily: number;
824
+ currentItemFontSize: number;
825
+ currentItemTextAlign: string;
826
+ currentItemStartArrowhead: import("../element/types").Arrowhead | null;
827
+ currentItemEndArrowhead: import("../element/types").Arrowhead | null;
828
+ currentItemRoundness: import("../element/types").StrokeRoundness;
829
+ viewBackgroundColor: string;
830
+ cursorButton: "up" | "down";
831
+ scrolledOutside: boolean;
832
+ name: string;
833
+ isResizing: boolean;
834
+ isRotating: boolean;
835
+ openMenu: "canvas" | "shape" | null;
836
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
837
+ openSidebar: {
838
+ name: string;
839
+ tab?: string | undefined;
840
+ } | null;
841
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
842
+ defaultSidebarDockedPreference: boolean;
843
+ lastPointerDownWith: import("../element/types").PointerType;
844
+ selectedElementIds: {
845
+ [id: string]: boolean;
846
+ };
847
+ previousSelectedElementIds: {
848
+ [id: string]: boolean;
849
+ };
850
+ selectedElementsAreBeingDragged: boolean;
851
+ shouldCacheIgnoreZoom: boolean;
852
+ toast: {
853
+ message: string;
854
+ closable?: boolean | undefined;
855
+ duration?: number | undefined;
856
+ } | null;
857
+ zenModeEnabled: boolean;
858
+ theme: string;
859
+ gridSize: number | null;
860
+ previousGridSize: number | null;
861
+ viewModeEnabled: boolean;
862
+ selectedGroupIds: {
863
+ [groupId: string]: boolean;
864
+ };
865
+ editingGroupId: string | null;
866
+ width: number;
867
+ height: number;
868
+ offsetTop: number;
869
+ offsetLeft: number;
870
+ fileHandle: import("browser-fs-access").FileSystemHandle | null;
871
+ collaborators: Map<string, import("../types").Collaborator>;
872
+ showStats: boolean;
873
+ currentChartType: import("../element/types").ChartType;
874
+ pasteDialog: {
875
+ shown: false;
876
+ data: null;
877
+ } | {
878
+ shown: true;
879
+ data: import("../charts").Spreadsheet;
880
+ };
881
+ pendingImageElementId: string | null;
882
+ showHyperlinkPopup: false | "info" | "editor";
883
+ linkOpacity: number;
884
+ trayModeEnabled: boolean;
885
+ colorPalette?: {
886
+ canvasBackground: import("../colors").ColorPaletteCustom;
887
+ elementBackground: import("../colors").ColorPaletteCustom;
888
+ elementStroke: import("../colors").ColorPaletteCustom;
889
+ topPicks: {
890
+ canvasBackground: [string, string, string, string, string];
891
+ elementStroke: [string, string, string, string, string];
892
+ elementBackground: [string, string, string, string, string];
893
+ };
894
+ } | undefined;
895
+ allowWheelZoom?: boolean | undefined;
896
+ allowPinchZoom?: boolean | undefined;
897
+ pinnedScripts?: string[] | undefined;
898
+ customPens?: any[] | undefined;
899
+ currentStrokeOptions?: any;
900
+ resetCustomPen?: any;
901
+ gridColor: string;
902
+ dynamicStyle: string;
903
+ invertBindingBehaviour: boolean;
904
+ selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
905
+ };
906
+ commitToHistory: boolean;
907
+ };
908
+ keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
909
+ } & {
910
+ keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
911
+ };
912
+ export declare const actionZoomToFitSelection: {
913
+ name: "zoomToFitSelection";
914
+ trackEvent: {
915
+ category: "canvas";
916
+ };
917
+ perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>) => {
918
+ appState: {
721
919
  scrollX: number;
722
920
  scrollY: number;
921
+ zoom: {
922
+ value: NormalizedZoomValue;
923
+ };
723
924
  contextMenu: {
724
925
  items: import("../components/ContextMenu").ContextMenuItems;
725
926
  top: number;
@@ -728,6 +929,10 @@ export declare const actionZoomToSelected: {
728
929
  showWelcomeScreen: boolean;
729
930
  isLoading: boolean;
730
931
  errorMessage: import("react").ReactNode;
932
+ activeIFrame: {
933
+ element: import("../element/types").NonDeletedExcalidrawElement;
934
+ state: "active" | "hover";
935
+ } | null;
731
936
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
732
937
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
733
938
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -735,13 +940,17 @@ export declare const actionZoomToSelected: {
735
940
  isBindingEnabled: boolean;
736
941
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
737
942
  suggestedBindings: import("../element/binding").SuggestedBinding[];
943
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
944
+ shouldRenderFrames: boolean;
945
+ editingFrame: string | null;
946
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
738
947
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
739
948
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
740
949
  activeTool: {
741
950
  lastActiveTool: import("../types").LastActiveTool;
742
951
  locked: boolean;
743
952
  } & ({
744
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
953
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
745
954
  customType: null;
746
955
  } | {
747
956
  type: "custom";
@@ -787,6 +996,7 @@ export declare const actionZoomToSelected: {
787
996
  previousSelectedElementIds: {
788
997
  [id: string]: boolean;
789
998
  };
999
+ selectedElementsAreBeingDragged: boolean;
790
1000
  shouldCacheIgnoreZoom: boolean;
791
1001
  toast: {
792
1002
  message: string;
@@ -856,11 +1066,11 @@ export declare const actionZoomToFit: {
856
1066
  };
857
1067
  perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>) => {
858
1068
  appState: {
1069
+ scrollX: number;
1070
+ scrollY: number;
859
1071
  zoom: {
860
1072
  value: NormalizedZoomValue;
861
1073
  };
862
- scrollX: number;
863
- scrollY: number;
864
1074
  contextMenu: {
865
1075
  items: import("../components/ContextMenu").ContextMenuItems;
866
1076
  top: number;
@@ -869,6 +1079,10 @@ export declare const actionZoomToFit: {
869
1079
  showWelcomeScreen: boolean;
870
1080
  isLoading: boolean;
871
1081
  errorMessage: import("react").ReactNode;
1082
+ activeIFrame: {
1083
+ element: import("../element/types").NonDeletedExcalidrawElement;
1084
+ state: "active" | "hover";
1085
+ } | null;
872
1086
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
873
1087
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
874
1088
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -876,13 +1090,17 @@ export declare const actionZoomToFit: {
876
1090
  isBindingEnabled: boolean;
877
1091
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
878
1092
  suggestedBindings: import("../element/binding").SuggestedBinding[];
1093
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
1094
+ shouldRenderFrames: boolean;
1095
+ editingFrame: string | null;
1096
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
879
1097
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
880
1098
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
881
1099
  activeTool: {
882
1100
  lastActiveTool: import("../types").LastActiveTool;
883
1101
  locked: boolean;
884
1102
  } & ({
885
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
1103
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
886
1104
  customType: null;
887
1105
  } | {
888
1106
  type: "custom";
@@ -928,6 +1146,7 @@ export declare const actionZoomToFit: {
928
1146
  previousSelectedElementIds: {
929
1147
  [id: string]: boolean;
930
1148
  };
1149
+ selectedElementsAreBeingDragged: boolean;
931
1150
  shouldCacheIgnoreZoom: boolean;
932
1151
  toast: {
933
1152
  message: string;
@@ -1006,6 +1225,10 @@ export declare const actionToggleTheme: {
1006
1225
  showWelcomeScreen: boolean;
1007
1226
  isLoading: boolean;
1008
1227
  errorMessage: import("react").ReactNode;
1228
+ activeIFrame: {
1229
+ element: import("../element/types").NonDeletedExcalidrawElement;
1230
+ state: "active" | "hover";
1231
+ } | null;
1009
1232
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1010
1233
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1011
1234
  multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
@@ -1013,13 +1236,17 @@ export declare const actionToggleTheme: {
1013
1236
  isBindingEnabled: boolean;
1014
1237
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
1015
1238
  suggestedBindings: import("../element/binding").SuggestedBinding[];
1239
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
1240
+ shouldRenderFrames: boolean;
1241
+ editingFrame: string | null;
1242
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
1016
1243
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1017
1244
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1018
1245
  activeTool: {
1019
1246
  lastActiveTool: import("../types").LastActiveTool;
1020
1247
  locked: boolean;
1021
1248
  } & ({
1022
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
1249
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
1023
1250
  customType: null;
1024
1251
  } | {
1025
1252
  type: "custom";
@@ -1070,6 +1297,7 @@ export declare const actionToggleTheme: {
1070
1297
  previousSelectedElementIds: {
1071
1298
  [id: string]: boolean;
1072
1299
  };
1300
+ selectedElementsAreBeingDragged: boolean;
1073
1301
  shouldCacheIgnoreZoom: boolean;
1074
1302
  toast: {
1075
1303
  message: string;
@@ -1140,11 +1368,12 @@ export declare const actionToggleEraserTool: {
1140
1368
  appState: {
1141
1369
  selectedElementIds: {};
1142
1370
  selectedGroupIds: {};
1371
+ activeIFrame: null;
1143
1372
  activeTool: {
1144
1373
  lastActiveTool: import("../types").LastActiveTool;
1145
1374
  locked: boolean;
1146
1375
  } & ({
1147
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
1376
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
1148
1377
  customType: null;
1149
1378
  } | {
1150
1379
  type: "custom";
@@ -1165,6 +1394,10 @@ export declare const actionToggleEraserTool: {
1165
1394
  isBindingEnabled: boolean;
1166
1395
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
1167
1396
  suggestedBindings: import("../element/binding").SuggestedBinding[];
1397
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
1398
+ shouldRenderFrames: boolean;
1399
+ editingFrame: string | null;
1400
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
1168
1401
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1169
1402
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1170
1403
  penMode: boolean;
@@ -1209,6 +1442,7 @@ export declare const actionToggleEraserTool: {
1209
1442
  previousSelectedElementIds: {
1210
1443
  [id: string]: boolean;
1211
1444
  };
1445
+ selectedElementsAreBeingDragged: boolean;
1212
1446
  shouldCacheIgnoreZoom: boolean;
1213
1447
  toast: {
1214
1448
  message: string;
@@ -1276,11 +1510,12 @@ export declare const actionToggleHandTool: {
1276
1510
  appState: {
1277
1511
  selectedElementIds: {};
1278
1512
  selectedGroupIds: {};
1513
+ activeIFrame: null;
1279
1514
  activeTool: {
1280
1515
  lastActiveTool: import("../types").LastActiveTool;
1281
1516
  locked: boolean;
1282
1517
  } & ({
1283
- type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "freedraw" | "eraser" | "hand";
1518
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
1284
1519
  customType: null;
1285
1520
  } | {
1286
1521
  type: "custom";
@@ -1301,6 +1536,10 @@ export declare const actionToggleHandTool: {
1301
1536
  isBindingEnabled: boolean;
1302
1537
  startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
1303
1538
  suggestedBindings: import("../element/binding").SuggestedBinding[];
1539
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
1540
+ shouldRenderFrames: boolean;
1541
+ editingFrame: string | null;
1542
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
1304
1543
  editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1305
1544
  editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1306
1545
  penMode: boolean;
@@ -1345,6 +1584,7 @@ export declare const actionToggleHandTool: {
1345
1584
  previousSelectedElementIds: {
1346
1585
  [id: string]: boolean;
1347
1586
  };
1587
+ selectedElementsAreBeingDragged: boolean;
1348
1588
  shouldCacheIgnoreZoom: boolean;
1349
1589
  toast: {
1350
1590
  message: string;
@@ -1403,3 +1643,143 @@ export declare const actionToggleHandTool: {
1403
1643
  } & {
1404
1644
  keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
1405
1645
  };
1646
+ export declare const zoomToFitElements: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, zoomToSelection: boolean, maxZoom?: number, margin?: number) => {
1647
+ appState: {
1648
+ zoom: {
1649
+ value: NormalizedZoomValue;
1650
+ };
1651
+ scrollX: number;
1652
+ scrollY: number;
1653
+ contextMenu: {
1654
+ items: import("../components/ContextMenu").ContextMenuItems;
1655
+ top: number;
1656
+ left: number;
1657
+ } | null;
1658
+ showWelcomeScreen: boolean;
1659
+ isLoading: boolean;
1660
+ errorMessage: import("react").ReactNode;
1661
+ activeIFrame: {
1662
+ element: import("../element/types").NonDeletedExcalidrawElement;
1663
+ state: "active" | "hover";
1664
+ } | null;
1665
+ draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1666
+ resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1667
+ multiElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawLinearElement> | null;
1668
+ selectionElement: import("../element/types").NonDeletedExcalidrawElement | null;
1669
+ isBindingEnabled: boolean;
1670
+ startBoundElement: import("../element/types").NonDeleted<import("../element/types").ExcalidrawBindableElement> | null;
1671
+ suggestedBindings: import("../element/binding").SuggestedBinding[];
1672
+ frameToHighlight: import("../element/types").NonDeleted<import("../element/types").ExcalidrawFrameElement> | null;
1673
+ shouldRenderFrames: boolean;
1674
+ editingFrame: string | null;
1675
+ elementsToHighlight: import("../element/types").NonDeleted<ExcalidrawElement>[] | null;
1676
+ editingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1677
+ editingLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1678
+ activeTool: {
1679
+ lastActiveTool: import("../types").LastActiveTool;
1680
+ locked: boolean;
1681
+ } & ({
1682
+ type: "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "iframe" | "image" | "frame" | "freedraw" | "eraser" | "hand";
1683
+ customType: null;
1684
+ } | {
1685
+ type: "custom";
1686
+ customType: string;
1687
+ });
1688
+ penMode: boolean;
1689
+ penDetected: boolean;
1690
+ exportBackground: boolean;
1691
+ exportEmbedScene: boolean;
1692
+ exportWithDarkMode: boolean;
1693
+ exportScale: number;
1694
+ currentItemStrokeColor: string;
1695
+ currentItemBackgroundColor: string;
1696
+ currentItemFillStyle: import("../element/types").FillStyle;
1697
+ currentItemStrokeWidth: number;
1698
+ currentItemStrokeStyle: import("../element/types").StrokeStyle;
1699
+ currentItemRoughness: number;
1700
+ currentItemOpacity: number;
1701
+ currentItemFontFamily: number;
1702
+ currentItemFontSize: number;
1703
+ currentItemTextAlign: string;
1704
+ currentItemStartArrowhead: import("../element/types").Arrowhead | null;
1705
+ currentItemEndArrowhead: import("../element/types").Arrowhead | null;
1706
+ currentItemRoundness: import("../element/types").StrokeRoundness;
1707
+ viewBackgroundColor: string;
1708
+ cursorButton: "up" | "down";
1709
+ scrolledOutside: boolean;
1710
+ name: string;
1711
+ isResizing: boolean;
1712
+ isRotating: boolean;
1713
+ openMenu: "canvas" | "shape" | null;
1714
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
1715
+ openSidebar: {
1716
+ name: string;
1717
+ tab?: string | undefined;
1718
+ } | null;
1719
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
1720
+ defaultSidebarDockedPreference: boolean;
1721
+ lastPointerDownWith: import("../element/types").PointerType;
1722
+ selectedElementIds: {
1723
+ [id: string]: boolean;
1724
+ };
1725
+ previousSelectedElementIds: {
1726
+ [id: string]: boolean;
1727
+ };
1728
+ selectedElementsAreBeingDragged: boolean;
1729
+ shouldCacheIgnoreZoom: boolean;
1730
+ toast: {
1731
+ message: string;
1732
+ closable?: boolean | undefined;
1733
+ duration?: number | undefined;
1734
+ } | null;
1735
+ zenModeEnabled: boolean;
1736
+ theme: string;
1737
+ gridSize: number | null;
1738
+ previousGridSize: number | null;
1739
+ viewModeEnabled: boolean;
1740
+ selectedGroupIds: {
1741
+ [groupId: string]: boolean;
1742
+ };
1743
+ editingGroupId: string | null;
1744
+ width: number;
1745
+ height: number;
1746
+ offsetTop: number;
1747
+ offsetLeft: number;
1748
+ fileHandle: import("browser-fs-access").FileSystemHandle | null;
1749
+ collaborators: Map<string, import("../types").Collaborator>;
1750
+ showStats: boolean;
1751
+ currentChartType: import("../element/types").ChartType;
1752
+ pasteDialog: {
1753
+ shown: false;
1754
+ data: null;
1755
+ } | {
1756
+ shown: true;
1757
+ data: import("../charts").Spreadsheet;
1758
+ };
1759
+ pendingImageElementId: string | null;
1760
+ showHyperlinkPopup: false | "info" | "editor";
1761
+ linkOpacity: number;
1762
+ trayModeEnabled: boolean;
1763
+ colorPalette?: {
1764
+ canvasBackground: import("../colors").ColorPaletteCustom;
1765
+ elementBackground: import("../colors").ColorPaletteCustom;
1766
+ elementStroke: import("../colors").ColorPaletteCustom;
1767
+ topPicks: {
1768
+ canvasBackground: [string, string, string, string, string];
1769
+ elementStroke: [string, string, string, string, string];
1770
+ elementBackground: [string, string, string, string, string];
1771
+ };
1772
+ } | undefined;
1773
+ allowWheelZoom?: boolean | undefined;
1774
+ allowPinchZoom?: boolean | undefined;
1775
+ pinnedScripts?: string[] | undefined;
1776
+ customPens?: any[] | undefined;
1777
+ currentStrokeOptions?: any;
1778
+ resetCustomPen?: any;
1779
+ gridColor: string;
1780
+ dynamicStyle: string;
1781
+ invertBindingBehaviour: boolean;
1782
+ selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1783
+ };
1784
+ commitToHistory: boolean;
1785
+ };