@excalidraw/math 0.18.0-2a82821 → 0.18.0-2b1c2a9

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 (160) hide show
  1. package/dist/dev/index.js +270 -107
  2. package/dist/dev/index.js.map +4 -4
  3. package/dist/prod/index.js +1 -1
  4. package/dist/types/common/src/colors.d.ts +19 -0
  5. package/dist/types/common/src/constants.d.ts +3 -0
  6. package/dist/types/common/src/keys.d.ts +2 -0
  7. package/dist/types/common/src/points.d.ts +1 -1
  8. package/dist/types/common/src/utils.d.ts +1 -43
  9. package/dist/types/element/src/Scene.d.ts +1 -1
  10. package/dist/types/element/src/align.d.ts +2 -2
  11. package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
  12. package/dist/types/element/src/arrows/focus.d.ts +5 -2
  13. package/dist/types/element/src/binding.d.ts +17 -8
  14. package/dist/types/element/src/bounds.d.ts +5 -9
  15. package/dist/types/element/src/bucketFill.d.ts +110 -0
  16. package/dist/types/element/src/collision.d.ts +1 -1
  17. package/dist/types/element/src/comparisons.d.ts +4 -4
  18. package/dist/types/element/src/convertToShape.d.ts +23 -0
  19. package/dist/types/element/src/distribute.d.ts +2 -2
  20. package/dist/types/element/src/dragElements.d.ts +27 -0
  21. package/dist/types/element/src/duplicate.d.ts +3 -3
  22. package/dist/types/element/src/embeddable.d.ts +2 -2
  23. package/dist/types/element/src/flowchart.d.ts +7 -7
  24. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  25. package/dist/types/element/src/frame.d.ts +4 -4
  26. package/dist/types/element/src/groups.d.ts +9 -9
  27. package/dist/types/element/src/index.d.ts +4 -1
  28. package/dist/types/element/src/linearElementEditor.d.ts +27 -10
  29. package/dist/types/element/src/newElement.d.ts +14 -0
  30. package/dist/types/element/src/renderElement.d.ts +0 -3
  31. package/dist/types/element/src/resizeElements.d.ts +2 -2
  32. package/dist/types/element/src/selection.d.ts +5 -5
  33. package/dist/types/element/src/shape.d.ts +12 -0
  34. package/dist/types/element/src/sortElements.d.ts +10 -0
  35. package/dist/types/element/src/textElement.d.ts +13 -9
  36. package/dist/types/element/src/transform.d.ts +2 -2
  37. package/dist/types/element/src/typeChecks.d.ts +25 -25
  38. package/dist/types/element/src/types.d.ts +9 -1
  39. package/dist/types/element/src/utils.d.ts +7 -3
  40. package/dist/types/element/src/zindex.d.ts +2 -2
  41. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +36 -12
  42. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  43. package/dist/types/excalidraw/actions/actionBoundText.d.ts +24 -8
  44. package/dist/types/excalidraw/actions/actionCanvas.d.ts +146 -931
  45. package/dist/types/excalidraw/actions/actionClipboard.d.ts +24 -8
  46. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +12 -4
  47. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +38 -13
  48. package/dist/types/excalidraw/actions/actionDeselect.d.ts +9 -4
  49. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  50. package/dist/types/excalidraw/actions/actionElementLink.d.ts +12 -4
  51. package/dist/types/excalidraw/actions/actionElementLock.d.ts +25 -9
  52. package/dist/types/excalidraw/actions/actionExport.d.ts +26 -10
  53. package/dist/types/excalidraw/actions/actionFinalize.d.ts +1 -0
  54. package/dist/types/excalidraw/actions/actionFrame.d.ts +48 -197
  55. package/dist/types/excalidraw/actions/actionGroup.d.ts +39 -23
  56. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +16 -6
  57. package/dist/types/excalidraw/actions/actionLink.d.ts +13 -5
  58. package/dist/types/excalidraw/actions/actionMenu.d.ts +12 -4
  59. package/dist/types/excalidraw/actions/actionProperties.d.ts +43 -24
  60. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +17 -9
  61. package/dist/types/excalidraw/actions/actionStyles.d.ts +12 -4
  62. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  63. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +13 -5
  64. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +16 -9
  65. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +13 -5
  66. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +13 -5
  67. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +16 -9
  68. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  69. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +13 -5
  70. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +14 -6
  71. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +13 -5
  72. package/dist/types/excalidraw/actions/index.d.ts +1 -2
  73. package/dist/types/excalidraw/actions/manager.d.ts +1 -0
  74. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  75. package/dist/types/excalidraw/actions/types.d.ts +8 -4
  76. package/dist/types/excalidraw/appState.d.ts +9 -4
  77. package/dist/types/excalidraw/components/Actions.d.ts +17 -12
  78. package/dist/types/excalidraw/components/App.arrowText.d.ts +104 -0
  79. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  80. package/dist/types/excalidraw/components/App.cursor.d.ts +38 -0
  81. package/dist/types/excalidraw/components/App.d.ts +372 -67
  82. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  83. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  84. package/dist/types/excalidraw/components/App.viewport.d.ts +73 -0
  85. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -3
  86. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  87. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +3 -1
  88. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -2
  89. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
  90. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  91. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -1
  92. package/dist/types/excalidraw/components/ColorPicker/topPicksDnD.d.ts +31 -0
  93. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +1 -1
  94. package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
  95. package/dist/types/excalidraw/components/{ToolButton.d.ts → IconButton.d.ts} +16 -19
  96. package/dist/types/excalidraw/components/Island.d.ts +7 -0
  97. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  98. package/dist/types/excalidraw/components/LayerUI.d.ts +5 -2
  99. package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
  100. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
  101. package/dist/types/excalidraw/components/MobileMenu.d.ts +4 -4
  102. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  103. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  104. package/dist/types/excalidraw/components/Popover.d.ts +1 -3
  105. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  106. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  107. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  108. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -2
  109. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  110. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
  111. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  112. package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
  113. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  114. package/dist/types/excalidraw/components/ToolPopover.d.ts +3 -6
  115. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  116. package/dist/types/excalidraw/components/Tools.d.ts +146 -0
  117. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  118. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  119. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -0
  120. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  121. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +2 -2
  122. package/dist/types/excalidraw/components/icons.d.ts +4 -1
  123. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +1 -1
  124. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  125. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  126. package/dist/types/excalidraw/data/blob.d.ts +28 -12
  127. package/dist/types/excalidraw/data/index.d.ts +4 -4
  128. package/dist/types/excalidraw/data/json.d.ts +20 -12
  129. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  130. package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -2
  131. package/dist/types/excalidraw/hooks/useAppStateValue.d.ts +29 -0
  132. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +5 -5
  133. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  134. package/dist/types/excalidraw/renderer/animation.d.ts +1 -0
  135. package/dist/types/excalidraw/renderer/helpers.d.ts +7 -0
  136. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +1 -3
  137. package/dist/types/excalidraw/scene/Renderer.d.ts +12 -11
  138. package/dist/types/excalidraw/scene/export.d.ts +3 -3
  139. package/dist/types/excalidraw/scene/index.d.ts +1 -1
  140. package/dist/types/excalidraw/scene/types.d.ts +4 -3
  141. package/dist/types/excalidraw/snapping.d.ts +7 -7
  142. package/dist/types/excalidraw/types.d.ts +410 -20
  143. package/dist/types/excalidraw/viewport.d.ts +275 -0
  144. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -3
  145. package/dist/types/laser-pointer/src/state.d.ts +1 -0
  146. package/dist/types/math/src/curve.d.ts +19 -12
  147. package/dist/types/math/src/index.d.ts +1 -0
  148. package/dist/types/math/src/pca.d.ts +79 -0
  149. package/dist/types/math/src/polygon.d.ts +25 -1
  150. package/dist/types/math/src/segment.d.ts +6 -0
  151. package/dist/types/utils/src/export.d.ts +3 -3
  152. package/package.json +2 -2
  153. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +0 -172
  154. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  155. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  156. package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -10
  157. package/dist/types/excalidraw/components/shapes.d.ts +0 -270
  158. package/dist/types/excalidraw/cursor.d.ts +0 -5
  159. package/dist/types/excalidraw/scene/scroll.d.ts +0 -18
  160. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
@@ -4,7 +4,8 @@ import type { AppClassProperties } from "../types";
4
4
  type ToolOption = {
5
5
  type: string;
6
6
  icon: React.ReactNode;
7
- title?: string;
7
+ title: string;
8
+ fillable?: boolean;
8
9
  };
9
10
  type ToolPopoverProps = {
10
11
  app: AppClassProperties;
@@ -13,13 +14,9 @@ type ToolPopoverProps = {
13
14
  type: string;
14
15
  };
15
16
  defaultOption: string;
16
- className?: string;
17
- namePrefix: string;
18
- title: string;
19
17
  "data-testid": string;
20
18
  onToolChange: (type: string) => void;
21
19
  displayedOption: ToolOption;
22
- fillable?: boolean;
23
20
  };
24
- export declare const ToolPopover: ({ app, options, activeTool, defaultOption, className, namePrefix, title, "data-testid": dataTestId, onToolChange, displayedOption, fillable, }: ToolPopoverProps) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const ToolPopover: ({ app, options, activeTool, defaultOption, "data-testid": dataTestId, onToolChange, displayedOption, }: ToolPopoverProps) => import("react/jsx-runtime").JSX.Element;
25
22
  export {};
@@ -0,0 +1,11 @@
1
+ import type { AppClassProperties, AppProps, AppState, UIAppState } from "../types";
2
+ /** the main (desktop/tablet) toolbar island */
3
+ export declare const Toolbar: ({ app, appState, setAppState, UIOptions, onPenModeToggle, onLockToggle, heading, }: {
4
+ app: AppClassProperties;
5
+ appState: UIAppState;
6
+ setAppState: React.Component<any, AppState>["setState"];
7
+ UIOptions: AppProps["UIOptions"];
8
+ onPenModeToggle: AppClassProperties["togglePenMode"];
9
+ onLockToggle: () => void;
10
+ heading: React.ReactNode;
11
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,146 @@
1
+ import type { AppClassProperties, AppState, ToolType, UIAppState } from "../types";
2
+ export type ToolConfig = {
3
+ icon: React.ReactNode;
4
+ /** letter shortcut(s) — the first one is shown in tooltips */
5
+ letterKey?: string | readonly string[];
6
+ /** whether `letterKey` requires Shift to be held (e.g. Shift+X) */
7
+ shiftKey?: boolean;
8
+ numericKey?: string;
9
+ /** whether the tool's shapes can be filled — fills the icon when active */
10
+ fillable?: boolean;
11
+ /**
12
+ * re-activating the tool switches back to the previously active tool
13
+ * (via the keyboard shortcut or ESC — see `setActiveTool`'s `toggle`
14
+ * option)
15
+ */
16
+ toggle?: boolean;
17
+ };
18
+ /**
19
+ * Tool data — the single source of truth for tool buttons, keyboard
20
+ * shortcuts (`findShapeByKey`), and the command palette. Toolbar placement
21
+ * is not defined here: toolbars compose the `*ToolButton` components below
22
+ * manually, so entries without a toolbar slot (e.g. laser) are data-only.
23
+ */
24
+ export declare const TOOLS: {
25
+ hand: ToolConfig;
26
+ selection: ToolConfig;
27
+ rectangle: ToolConfig;
28
+ diamond: ToolConfig;
29
+ ellipse: ToolConfig;
30
+ arrow: ToolConfig;
31
+ line: ToolConfig;
32
+ freedraw: ToolConfig;
33
+ text: ToolConfig;
34
+ image: ToolConfig;
35
+ eraser: ToolConfig;
36
+ frame: ToolConfig;
37
+ autoshape: ToolConfig;
38
+ embeddable: ToolConfig;
39
+ laser: ToolConfig;
40
+ bucketfill: ToolConfig;
41
+ lasso: ToolConfig;
42
+ };
43
+ export type ToolbarToolType = keyof typeof TOOLS;
44
+ /**
45
+ * tools that, when activated while already active, switch back to the
46
+ * previously active tool (see `setActiveTool`'s `toggle` option)
47
+ */
48
+ export declare const TOGGLE_TOOLS: readonly (ToolType | "custom")[];
49
+ export declare const getToolLetter: (type: ToolbarToolType) => string | undefined;
50
+ /** human-readable shortcut hint, e.g. "R or 2", used in tooltips & aria */
51
+ export declare const getToolShortcut: (type: ToolbarToolType) => string;
52
+ export declare const findShapeByKey: (key: string, app: AppClassProperties, shiftKey?: boolean) => "line" | "arrow" | "text" | "selection" | "rectangle" | "diamond" | "ellipse" | "embeddable" | "image" | "frame" | "freedraw" | "lasso" | "eraser" | "hand" | "laser" | "autoshape" | "bucketfill" | null;
53
+ /**
54
+ * Whether a toolbar entry activating the given tool renders disabled — true
55
+ * when the active tool is host-controlled (`props.activeTool`) and the entry
56
+ * doesn't activate the forced tool (`setActiveTool` refuses it).
57
+ */
58
+ export declare const isToolButtonDisabled: (app: AppClassProperties, type: string) => boolean;
59
+ export type ToolButtonComponentProps = {
60
+ app: AppClassProperties;
61
+ activeTool: UIAppState["activeTool"];
62
+ /** hide the keybinding badge rendered in the button's corner */
63
+ hideKeyBinding?: boolean;
64
+ /**
65
+ * hide all shortcut affordances (tooltip hint, aria-keyshortcuts, and the
66
+ * keybinding badge) — used on mobile where there's no keyboard
67
+ */
68
+ hideShortcut?: boolean;
69
+ };
70
+ export declare const HandToolButton: {
71
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
72
+ displayName: string;
73
+ };
74
+ export declare const RectangleToolButton: {
75
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
76
+ displayName: string;
77
+ };
78
+ export declare const DiamondToolButton: {
79
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
80
+ displayName: string;
81
+ };
82
+ export declare const EllipseToolButton: {
83
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
84
+ displayName: string;
85
+ };
86
+ export declare const ArrowToolButton: {
87
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
88
+ displayName: string;
89
+ };
90
+ export declare const LineToolButton: {
91
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
92
+ displayName: string;
93
+ };
94
+ export declare const FreedrawToolButton: {
95
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
96
+ displayName: string;
97
+ };
98
+ export declare const TextToolButton: {
99
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
100
+ displayName: string;
101
+ };
102
+ export declare const ImageToolButton: {
103
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
104
+ displayName: string;
105
+ };
106
+ export declare const EraserToolButton: {
107
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
108
+ displayName: string;
109
+ };
110
+ export declare const FrameToolButton: {
111
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
112
+ displayName: string;
113
+ };
114
+ /**
115
+ * The selection tool button — pointer-clicking it while the selection tool
116
+ * is active switches to lasso.
117
+ */
118
+ export declare const SelectionToolButton: {
119
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
120
+ displayName: string;
121
+ };
122
+ /**
123
+ * Rendered in place of the selection button when lasso is the preferred
124
+ * selection tool; the selection shortcut activates it then.
125
+ */
126
+ export declare const LassoToolButton: {
127
+ ({ app, activeTool, hideKeyBinding, hideShortcut, }: ToolButtonComponentProps): import("react/jsx-runtime").JSX.Element;
128
+ displayName: string;
129
+ };
130
+ /**
131
+ * The selection ⇄ lasso popover used in compact (tablet) and mobile
132
+ * toolbars; picking an option also makes it the preferred selection tool.
133
+ */
134
+ export declare const SelectionToolPopover: ({ app, activeTool, setAppState, }: {
135
+ app: AppClassProperties;
136
+ activeTool: UIAppState["activeTool"];
137
+ setAppState: React.Component<any, AppState>["setState"];
138
+ }) => import("react/jsx-runtime").JSX.Element;
139
+ /**
140
+ * The freedraw ⇄ draw-shape popover used in compact (tablet) and mobile
141
+ * toolbars. The trigger remembers and displays the most recently used option.
142
+ */
143
+ export declare const FreedrawToolPopover: ({ app, activeTool, }: {
144
+ app: AppClassProperties;
145
+ activeTool: UIAppState["activeTool"];
146
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -7,12 +7,13 @@ export type GoToCollaboratorComponentProps = {
7
7
  withName: boolean;
8
8
  isBeingFollowed: boolean;
9
9
  };
10
- type UserListUserObject = Pick<Collaborator, "avatarUrl" | "id" | "socketId" | "username" | "isInCall" | "isSpeaking" | "isMuted">;
10
+ type UserListUserObject = Pick<Collaborator, "avatarUrl" | "id" | "socketId" | "username" | "isInCall" | "isSpeaking" | "isMuted" | "isCurrentUser">;
11
11
  type UserListProps = {
12
12
  className?: string;
13
13
  mobile?: boolean;
14
14
  collaborators: Map<SocketId, UserListUserObject>;
15
15
  userToFollow: SocketId | null;
16
+ currentUserControls?: React.ReactNode | ((isMobile: boolean) => React.ReactNode);
16
17
  };
17
- export declare const UserList: React.MemoExoticComponent<({ className, mobile, collaborators, userToFollow }: UserListProps) => import("react/jsx-runtime").JSX.Element>;
18
+ export declare const UserList: React.MemoExoticComponent<({ className, mobile, collaborators, userToFollow, currentUserControls, }: UserListProps) => import("react/jsx-runtime").JSX.Element>;
18
19
  export {};
@@ -0,0 +1,11 @@
1
+ import "./ViewportStatusFrame.scss";
2
+ import type { CSSProperties } from "react";
3
+ import type { ViewportStatusFrame as ViewportStatusFrameType } from "../../types";
4
+ export declare const ViewportStatusBorder: ({ border, style, }: {
5
+ border: string;
6
+ style?: CSSProperties;
7
+ }) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const ViewportStatusBadge: ({ label, border, }: {
9
+ label: NonNullable<ViewportStatusFrameType["label"]>;
10
+ border?: ViewportStatusFrameType["border"];
11
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -18,6 +18,8 @@ type InteractiveCanvasProps = {
18
18
  renderScrollbars: boolean;
19
19
  editorInterface: EditorInterface;
20
20
  app: AppClassProperties;
21
+ interactionEnabled: boolean;
22
+ navigationEnabled: boolean;
21
23
  renderInteractiveSceneCallback: (data: RenderInteractiveSceneCallback) => void;
22
24
  handleCanvasRef: (canvas: HTMLCanvasElement | null) => void;
23
25
  onContextMenu: Exclude<DOMAttributes<HTMLCanvasElement | HTMLDivElement>["onContextMenu"], undefined>;
@@ -1,11 +1,13 @@
1
1
  import type { ActionManager } from "../../actions/manager";
2
2
  import type { UIAppState } from "../../types";
3
3
  declare const Footer: {
4
- ({ appState, actionManager, showExitZenModeBtn, renderWelcomeScreen, }: {
4
+ ({ appState, actionManager, showExitZenModeBtn, renderWelcomeScreen, defaultUIEnabled, zoomUIEnabled, }: {
5
5
  appState: UIAppState;
6
6
  actionManager: ActionManager;
7
7
  showExitZenModeBtn: boolean;
8
8
  renderWelcomeScreen: boolean;
9
+ defaultUIEnabled: boolean;
10
+ zoomUIEnabled: boolean;
9
11
  }): import("react/jsx-runtime").JSX.Element;
10
12
  displayName: string;
11
13
  };
@@ -1,10 +1,10 @@
1
1
  import type { GlobalPoint, Radians } from "@excalidraw/math";
2
2
  import type { Bounds } from "@excalidraw/common";
3
3
  import type { ElementsMap, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
4
- import type { AppState, UIAppState } from "../../types";
4
+ import type { AppState } from "../../types";
5
5
  export declare const DEFAULT_LINK_SIZE = 12;
6
6
  export declare const EXTERNAL_LINK_IMG: HTMLImageElement;
7
7
  export declare const ELEMENT_LINK_IMG: HTMLImageElement;
8
- export declare const getLinkHandleFromCoords: ([x1, y1, x2, y2]: Bounds, angle: Radians, appState: Pick<UIAppState, "zoom">) => Bounds;
8
+ export declare const getLinkHandleFromCoords: ([x1, y1, x2, y2]: Bounds, angle: Radians, appState: Pick<AppState, "zoom">) => Bounds;
9
9
  export declare const isPointHittingLinkIcon: (element: NonDeletedExcalidrawElement, elementsMap: ElementsMap, appState: AppState, [x, y]: GlobalPoint) => boolean;
10
10
  export declare const isPointHittingLink: (element: NonDeletedExcalidrawElement, elementsMap: ElementsMap, appState: AppState, [x, y]: GlobalPoint, isMobile: boolean) => boolean;
@@ -57,6 +57,7 @@ export declare const saveAs: import("react/jsx-runtime").JSX.Element;
57
57
  export declare const LoadIcon: import("react/jsx-runtime").JSX.Element;
58
58
  export declare const clipboard: import("react/jsx-runtime").JSX.Element;
59
59
  export declare const palette: import("react/jsx-runtime").JSX.Element;
60
+ export declare const bucketFillIconSvgPaths: readonly ["M5 16l1.465 1.638a2 2 0 1 1 -3.015 .099l1.55 -1.737z", "M13.737 9.737c2.299 -2.3 3.23 -5.095 2.081 -6.245c-1.15 -1.15 -3.945 -.217 -6.244 2.082c-2.3 2.299 -3.231 5.095 -2.082 6.244c1.15 1.15 3.946 .218 6.245 -2.081z", "M7.492 11.818c.362 .362 .768 .676 1.208 .934l6.895 4.047c1.078 .557 2.255 -.075 3.692 -1.512c1.437 -1.437 2.07 -2.614 1.512 -3.692c-.372 -.718 -1.72 -3.017 -4.047 -6.895a6.015 6.015 0 0 0 -.934 -1.208"];
60
61
  export declare const bucketFillIcon: import("react/jsx-runtime").JSX.Element;
61
62
  export declare const slashIcon: import("react/jsx-runtime").JSX.Element;
62
63
  export declare const ExportImageIcon: import("react/jsx-runtime").JSX.Element;
@@ -196,13 +197,14 @@ export declare const playerPlayIcon: import("react/jsx-runtime").JSX.Element;
196
197
  export declare const playerStopFilledIcon: import("react/jsx-runtime").JSX.Element;
197
198
  export declare const tablerCheckIcon: import("react/jsx-runtime").JSX.Element;
198
199
  export declare const alertTriangleIcon: import("react/jsx-runtime").JSX.Element;
200
+ export declare const eyeDropperIconSvgPaths: readonly ["M4 16l11.7 -11.7a1 1 0 0 1 1.4 0l2.6 2.6a1 1 0 0 1 0 1.4l-11.7 11.7h-4v-4z", "M11 7l6 6"];
199
201
  export declare const eyeDropperIcon: import("react/jsx-runtime").JSX.Element;
200
- export declare const extraToolsIcon: import("react/jsx-runtime").JSX.Element;
201
202
  export declare const frameToolIcon: import("react/jsx-runtime").JSX.Element;
202
203
  export declare const mermaidLogoIcon: import("react/jsx-runtime").JSX.Element;
203
204
  export declare const RetryIcon: import("react/jsx-runtime").JSX.Element;
204
205
  export declare const stackPushIcon: import("react/jsx-runtime").JSX.Element;
205
206
  export declare const ArrowRightIcon: import("react/jsx-runtime").JSX.Element;
207
+ export declare const drawShapeToolIcon: import("react/jsx-runtime").JSX.Element;
206
208
  export declare const laserPointerToolIcon: import("react/jsx-runtime").JSX.Element;
207
209
  export declare const MagicIcon: import("react/jsx-runtime").JSX.Element;
208
210
  export declare const MagicIconThin: import("react/jsx-runtime").JSX.Element;
@@ -250,6 +252,7 @@ export declare const sidebarRightIcon: import("react/jsx-runtime").JSX.Element;
250
252
  export declare const messageCircleIcon: import("react/jsx-runtime").JSX.Element;
251
253
  export declare const presentationIcon: import("react/jsx-runtime").JSX.Element;
252
254
  export declare const emptyIcon: import("react/jsx-runtime").JSX.Element;
255
+ export declare const chevronDownIcon: import("react/jsx-runtime").JSX.Element;
253
256
  export declare const chevronRight: import("react/jsx-runtime").JSX.Element;
254
257
  export declare const settingsIcon: import("react/jsx-runtime").JSX.Element;
255
258
  export {};
@@ -79,7 +79,7 @@ export declare const Preferences: {
79
79
  ToggleMidpointSnapping: () => import("react/jsx-runtime").JSX.Element;
80
80
  ToggleGridMode: () => import("react/jsx-runtime").JSX.Element;
81
81
  ToggleZenMode: () => import("react/jsx-runtime").JSX.Element;
82
- ToggleViewMode: () => import("react/jsx-runtime").JSX.Element;
82
+ ToggleViewMode: () => import("react/jsx-runtime").JSX.Element | null;
83
83
  ToggleElementProperties: () => import("react/jsx-runtime").JSX.Element;
84
84
  displayName: string;
85
85
  };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Positions an element beside a cursor within a container, flipping the
3
+ * element to the other side of the cursor when it would overflow the
4
+ * container, resolved independently on each axis.
5
+ *
6
+ * Takes the cursor in client (viewport) coordinates and returns
7
+ * container-local coordinates.
8
+ */
9
+ export declare const positionElementBesideCursor: ({ cursor, element, container, gap, }: {
10
+ /** client (viewport) coordinates */
11
+ cursor: {
12
+ x: number;
13
+ y: number;
14
+ };
15
+ element: {
16
+ width: number;
17
+ height: number;
18
+ };
19
+ /** the container's bounding client rect */
20
+ container: Pick<DOMRect, "left" | "top" | "width" | "height">;
21
+ /** distance between the cursor and the positioned element */
22
+ gap: number;
23
+ }) => {
24
+ left: number;
25
+ top: number;
26
+ };
@@ -0,0 +1,39 @@
1
+ import type { ExcalidrawElement, NonDeletedElementsMap, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
2
+ import type { AppClassProperties, UIAppState } from "../types";
3
+ export declare const canChangeStrokeColor: (appState: UIAppState, targetElements: ExcalidrawElement[]) => boolean;
4
+ export declare const canChangeBackgroundColor: (appState: UIAppState, targetElements: ExcalidrawElement[]) => boolean;
5
+ /**
6
+ * Single source of truth for "which shape-action controls are relevant right
7
+ * now". Each flag answers whether a given control should be shown, given the
8
+ * active tool and the current selection. All three styles-panel layouts
9
+ * (full / compact / mobile) and the compact popovers consume these flags so
10
+ * that visibility logic lives in one place and layout stays pure.
11
+ */
12
+ export declare const getShapeActionPredicates: (appState: UIAppState, targetElements: ExcalidrawElement[], elementsMap: NonDeletedElementsMap | NonDeletedSceneElementsMap, app: AppClassProperties) => {
13
+ /** some element(s) selected */
14
+ hasSelection: boolean;
15
+ /** actions on selected elements (delete/duplicate/...) */
16
+ showExtraActions: boolean;
17
+ strokeColor: boolean;
18
+ backgroundColor: boolean;
19
+ fill: boolean;
20
+ strokeWidth: boolean;
21
+ freedrawMode: boolean;
22
+ strokeStyle: boolean;
23
+ sloppiness: boolean;
24
+ roundness: boolean;
25
+ arrowType: boolean;
26
+ arrowheads: boolean;
27
+ text: boolean;
28
+ textAlign: boolean;
29
+ verticalAlign: boolean;
30
+ opacity: boolean;
31
+ layers: boolean;
32
+ align: boolean;
33
+ distribute: boolean;
34
+ link: boolean;
35
+ linkSingleOnly: boolean;
36
+ cropEditor: boolean;
37
+ lineEditor: boolean;
38
+ };
39
+ export type ShapeActionPredicates = ReturnType<typeof getShapeActionPredicates>;
@@ -73,12 +73,17 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
73
73
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
74
74
  isBindingEnabled: boolean;
75
75
  isMidpointSnappingEnabled: boolean;
76
+ gridModeEnabled: boolean;
76
77
  suggestedBinding: {
77
78
  element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
78
79
  midPoint?: import("@excalidraw/math").GlobalPoint;
79
80
  } | null;
81
+ hoveredArrowTextAnchor: {
82
+ elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
83
+ anchor: "start" | "end" | "label";
84
+ } | null;
80
85
  isRotating: boolean;
81
- elementsToHighlight: import("@excalidraw/element/types").NonDeleted<ExcalidrawElement>[] | null;
86
+ elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
82
87
  collaborators: Map<import("../types").SocketId, import("../types").Collaborator>;
83
88
  snapLines: readonly import("../snapping").SnapLine[];
84
89
  zenModeEnabled: boolean;
@@ -96,8 +101,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
96
101
  shouldCacheIgnoreZoom: boolean;
97
102
  exportScale: number;
98
103
  currentItemArrowType: "sharp" | "round" | "elbow";
99
- bindMode: import("@excalidraw/element/types").BindMode;
100
104
  gridSize: number;
105
+ bindMode: import("@excalidraw/element/types").BindMode;
101
106
  contextMenu: {
102
107
  items: import("../components/ContextMenu").ContextMenuItems;
103
108
  top: number;
@@ -109,7 +114,7 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
109
114
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
110
115
  boxSelectionMode: import("../types").BoxSelectionMode;
111
116
  bindingPreference: "enabled" | "disabled";
112
- editingFrame: string | null;
117
+ editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
113
118
  preferredSelectionTool: {
114
119
  type: "selection" | "lasso";
115
120
  initialized: boolean;
@@ -134,6 +139,7 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
134
139
  currentItemEndArrowhead: import("@excalidraw/element/types").Arrowhead | null;
135
140
  currentHoveredFontFamily: import("@excalidraw/element/types").FontFamilyValues | null;
136
141
  currentItemRoundness: import("@excalidraw/element/types").StrokeRoundness;
142
+ scrollConstraints: import("../types").ScrollConstraints | null;
137
143
  cursorButton: "up" | "down";
138
144
  scrolledOutside: boolean;
139
145
  isResizing: boolean;
@@ -155,7 +161,6 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
155
161
  duration?: number;
156
162
  } | null;
157
163
  gridStep: number;
158
- gridModeEnabled: boolean;
159
164
  fileHandle: FileSystemFileHandle | null;
160
165
  stats: {
161
166
  open: boolean;
@@ -167,11 +172,14 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
167
172
  y: number;
168
173
  } | null;
169
174
  objectsSnapModeEnabled: boolean;
170
- userToFollow: import("../types").UserToFollow | null;
171
- followedBy: Set<import("../types").SocketId>;
172
175
  lockedMultiSelections: {
173
176
  [groupId: string]: true;
174
177
  };
178
+ colorTopPicks: {
179
+ elementStroke: readonly string[] | null;
180
+ elementBackground: readonly string[] | null;
181
+ bucketFill: readonly string[] | null;
182
+ };
175
183
  };
176
184
  files: import("../types").BinaryFiles;
177
185
  };
@@ -239,12 +247,17 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
239
247
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
240
248
  isBindingEnabled: boolean;
241
249
  isMidpointSnappingEnabled: boolean;
250
+ gridModeEnabled: boolean;
242
251
  suggestedBinding: {
243
252
  element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
244
253
  midPoint?: import("@excalidraw/math").GlobalPoint;
245
254
  } | null;
255
+ hoveredArrowTextAnchor: {
256
+ elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
257
+ anchor: "start" | "end" | "label";
258
+ } | null;
246
259
  isRotating: boolean;
247
- elementsToHighlight: import("@excalidraw/element/types").NonDeleted<ExcalidrawElement>[] | null;
260
+ elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
248
261
  collaborators: Map<import("../types").SocketId, import("../types").Collaborator>;
249
262
  snapLines: readonly import("../snapping").SnapLine[];
250
263
  zenModeEnabled: boolean;
@@ -262,8 +275,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
262
275
  shouldCacheIgnoreZoom: boolean;
263
276
  exportScale: number;
264
277
  currentItemArrowType: "sharp" | "round" | "elbow";
265
- bindMode: import("@excalidraw/element/types").BindMode;
266
278
  gridSize: number;
279
+ bindMode: import("@excalidraw/element/types").BindMode;
267
280
  contextMenu: {
268
281
  items: import("../components/ContextMenu").ContextMenuItems;
269
282
  top: number;
@@ -275,7 +288,7 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
275
288
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
276
289
  boxSelectionMode: import("../types").BoxSelectionMode;
277
290
  bindingPreference: "enabled" | "disabled";
278
- editingFrame: string | null;
291
+ editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
279
292
  preferredSelectionTool: {
280
293
  type: "selection" | "lasso";
281
294
  initialized: boolean;
@@ -300,6 +313,7 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
300
313
  currentItemEndArrowhead: import("@excalidraw/element/types").Arrowhead | null;
301
314
  currentHoveredFontFamily: import("@excalidraw/element/types").FontFamilyValues | null;
302
315
  currentItemRoundness: import("@excalidraw/element/types").StrokeRoundness;
316
+ scrollConstraints: import("../types").ScrollConstraints | null;
303
317
  cursorButton: "up" | "down";
304
318
  scrolledOutside: boolean;
305
319
  isResizing: boolean;
@@ -321,7 +335,6 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
321
335
  duration?: number;
322
336
  } | null;
323
337
  gridStep: number;
324
- gridModeEnabled: boolean;
325
338
  fileHandle: FileSystemFileHandle | null;
326
339
  stats: {
327
340
  open: boolean;
@@ -333,11 +346,14 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
333
346
  y: number;
334
347
  } | null;
335
348
  objectsSnapModeEnabled: boolean;
336
- userToFollow: import("../types").UserToFollow | null;
337
- followedBy: Set<import("../types").SocketId>;
338
349
  lockedMultiSelections: {
339
350
  [groupId: string]: true;
340
351
  };
352
+ colorTopPicks: {
353
+ elementStroke: readonly string[] | null;
354
+ elementBackground: readonly string[] | null;
355
+ bucketFill: readonly string[] | null;
356
+ };
341
357
  };
342
358
  files: import("../types").BinaryFiles;
343
359
  }>;
@@ -1,4 +1,4 @@
1
- import type { ExcalidrawElement, ExcalidrawFrameLikeElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
1
+ import type { ExcalidrawElement, ExcalidrawFrameLikeElement, NonDeleted, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
2
  import type { ExportType } from "../scene/types";
3
3
  import type { AppState, BinaryFiles } from "../types";
4
4
  export { loadFromBlob } from "./blob";
@@ -6,8 +6,8 @@ export { loadFromJSON, saveAsJSON } from "./json";
6
6
  export type ExportedElements = readonly NonDeletedExcalidrawElement[] & {
7
7
  _brand: "exportedElements";
8
8
  };
9
- export declare const prepareElementsForExport: (elements: readonly ExcalidrawElement[], { selectedElementIds }: Pick<AppState, "selectedElementIds">, exportSelectionOnly: boolean) => {
10
- exportingFrame: ExcalidrawFrameLikeElement | null;
9
+ export declare const prepareElementsForExport: (allElements: readonly ExcalidrawElement[], { selectedElementIds }: Pick<AppState, "selectedElementIds">, exportSelectionOnly: boolean) => {
10
+ exportingFrame: NonDeleted<ExcalidrawFrameLikeElement> | null;
11
11
  exportedElements: ExportedElements;
12
12
  };
13
13
  export declare const exportCanvas: (type: Omit<ExportType, "backend">, elements: ExportedElements, appState: AppState, files: BinaryFiles, { exportBackground, exportPadding, viewBackgroundColor, name, fileHandle, exportingFrame, }: {
@@ -17,5 +17,5 @@ export declare const exportCanvas: (type: Omit<ExportType, "backend">, elements:
17
17
  /** filename, if applicable */
18
18
  name?: string;
19
19
  fileHandle?: FileSystemFileHandle | null;
20
- exportingFrame: ExcalidrawFrameLikeElement | null;
20
+ exportingFrame: NonDeleted<ExcalidrawFrameLikeElement> | null;
21
21
  }) => Promise<FileSystemFileHandle | null | undefined>;
@@ -1,9 +1,9 @@
1
- import type { ExcalidrawElement, NonDeleted } from "@excalidraw/element/types";
1
+ import type { ExcalidrawElement } from "@excalidraw/element/types";
2
2
  import type { MaybePromise } from "@excalidraw/common/utility-types";
3
3
  import type { AppState, BinaryFiles, LibraryItems } from "../types";
4
4
  import type { ImportedDataState, ImportedLibraryData } from "./types";
5
5
  export type JSONExportData = {
6
- elements: readonly NonDeleted<ExcalidrawElement>[];
6
+ elements: readonly ExcalidrawElement[];
7
7
  appState: AppState;
8
8
  files: BinaryFiles;
9
9
  };
@@ -52,7 +52,7 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
52
52
  selectedElementIds: Readonly<{
53
53
  [id: string]: true;
54
54
  }>;
55
- frameToHighlight: NonDeleted<import("@excalidraw/element/types").ExcalidrawFrameLikeElement> | null;
55
+ frameToHighlight: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawFrameLikeElement> | null;
56
56
  activeTool: {
57
57
  lastActiveTool: import("../types").ActiveTool | null;
58
58
  locked: boolean;
@@ -67,16 +67,21 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
67
67
  [groupId: string]: boolean;
68
68
  };
69
69
  selectedLinearElement: import("@excalidraw/element").LinearElementEditor | null;
70
- multiElement: NonDeleted<import("@excalidraw/element/types").ExcalidrawLinearElement> | null;
71
- newElement: NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
70
+ multiElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawLinearElement> | null;
71
+ newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
72
72
  isBindingEnabled: boolean;
73
73
  isMidpointSnappingEnabled: boolean;
74
+ gridModeEnabled: boolean;
74
75
  suggestedBinding: {
75
- element: NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
76
+ element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
76
77
  midPoint?: import("@excalidraw/math").GlobalPoint;
77
78
  } | null;
79
+ hoveredArrowTextAnchor: {
80
+ elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
81
+ anchor: "start" | "end" | "label";
82
+ } | null;
78
83
  isRotating: boolean;
79
- elementsToHighlight: NonDeleted<ExcalidrawElement>[] | null;
84
+ elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
80
85
  collaborators: Map<import("../types").SocketId, import("../types").Collaborator>;
81
86
  snapLines: readonly import("../snapping").SnapLine[];
82
87
  zenModeEnabled: boolean;
@@ -94,8 +99,8 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
94
99
  shouldCacheIgnoreZoom: boolean;
95
100
  exportScale: number;
96
101
  currentItemArrowType: "sharp" | "round" | "elbow";
97
- bindMode: import("@excalidraw/element/types").BindMode;
98
102
  gridSize: number;
103
+ bindMode: import("@excalidraw/element/types").BindMode;
99
104
  contextMenu: {
100
105
  items: import("../components/ContextMenu").ContextMenuItems;
101
106
  top: number;
@@ -107,7 +112,7 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
107
112
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
108
113
  boxSelectionMode: import("../types").BoxSelectionMode;
109
114
  bindingPreference: "enabled" | "disabled";
110
- editingFrame: string | null;
115
+ editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
111
116
  preferredSelectionTool: {
112
117
  type: "selection" | "lasso";
113
118
  initialized: boolean;
@@ -132,6 +137,7 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
132
137
  currentItemEndArrowhead: import("@excalidraw/element/types").Arrowhead | null;
133
138
  currentHoveredFontFamily: import("@excalidraw/element/types").FontFamilyValues | null;
134
139
  currentItemRoundness: import("@excalidraw/element/types").StrokeRoundness;
140
+ scrollConstraints: import("../types").ScrollConstraints | null;
135
141
  cursorButton: "up" | "down";
136
142
  scrolledOutside: boolean;
137
143
  isResizing: boolean;
@@ -153,7 +159,6 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
153
159
  duration?: number;
154
160
  } | null;
155
161
  gridStep: number;
156
- gridModeEnabled: boolean;
157
162
  fileHandle: FileSystemFileHandle | null;
158
163
  stats: {
159
164
  open: boolean;
@@ -165,11 +170,14 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
165
170
  y: number;
166
171
  } | null;
167
172
  objectsSnapModeEnabled: boolean;
168
- userToFollow: import("../types").UserToFollow | null;
169
- followedBy: Set<import("../types").SocketId>;
170
173
  lockedMultiSelections: {
171
174
  [groupId: string]: true;
172
175
  };
176
+ colorTopPicks: {
177
+ elementStroke: readonly string[] | null;
178
+ elementBackground: readonly string[] | null;
179
+ bucketFill: readonly string[] | null;
180
+ };
173
181
  };
174
182
  files: BinaryFiles;
175
183
  }>;
@@ -0,0 +1,16 @@
1
+ import type { GlobalPoint } from "@excalidraw/math";
2
+ import type App from "./components/App";
3
+ import type { Trail } from "./animatedTrail";
4
+ export declare class DrawShapeTrail implements Trail {
5
+ private app;
6
+ private trail;
7
+ constructor(app: App);
8
+ private getTrailOptions;
9
+ startPath(x: number, y: number): void;
10
+ addPointToPath(x: number, y: number): void;
11
+ endPath(): void;
12
+ clearTrails(): void;
13
+ getCurrentPoints(): GlobalPoint[];
14
+ start(container: SVGSVGElement): void;
15
+ stop(): void;
16
+ }