@myoc/math 0.19.521 → 0.19.522

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 (153) hide show
  1. package/dist/dev/index.js +261 -92
  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 +14 -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 -1
  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 +17 -10
  29. package/dist/types/element/src/newElement.d.ts +13 -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 +12 -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 +2 -1
  39. package/dist/types/element/src/zindex.d.ts +2 -2
  40. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  41. package/dist/types/excalidraw/actions/actionBoundText.d.ts +24 -8
  42. package/dist/types/excalidraw/actions/actionCanvas.d.ts +128 -961
  43. package/dist/types/excalidraw/actions/actionClipboard.d.ts +24 -8
  44. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +12 -4
  45. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +38 -13
  46. package/dist/types/excalidraw/actions/actionDeselect.d.ts +9 -4
  47. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  48. package/dist/types/excalidraw/actions/actionElementLink.d.ts +12 -4
  49. package/dist/types/excalidraw/actions/actionElementLock.d.ts +25 -9
  50. package/dist/types/excalidraw/actions/actionExport.d.ts +26 -10
  51. package/dist/types/excalidraw/actions/actionFrame.d.ts +47 -205
  52. package/dist/types/excalidraw/actions/actionGroup.d.ts +39 -23
  53. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +15 -6
  54. package/dist/types/excalidraw/actions/actionLink.d.ts +13 -5
  55. package/dist/types/excalidraw/actions/actionMenu.d.ts +12 -4
  56. package/dist/types/excalidraw/actions/actionProperties.d.ts +43 -24
  57. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +17 -9
  58. package/dist/types/excalidraw/actions/actionStyles.d.ts +12 -4
  59. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  60. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +14 -6
  61. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +16 -9
  62. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +13 -5
  63. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +13 -5
  64. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +16 -9
  65. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +13 -5
  66. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +14 -6
  67. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +13 -5
  68. package/dist/types/excalidraw/actions/index.d.ts +1 -2
  69. package/dist/types/excalidraw/actions/manager.d.ts +1 -0
  70. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  71. package/dist/types/excalidraw/actions/types.d.ts +8 -4
  72. package/dist/types/excalidraw/appState.d.ts +10 -5
  73. package/dist/types/excalidraw/components/Actions.d.ts +17 -12
  74. package/dist/types/excalidraw/components/App.arrowText.d.ts +72 -0
  75. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  76. package/dist/types/excalidraw/components/App.cursor.d.ts +30 -0
  77. package/dist/types/excalidraw/components/App.d.ts +384 -60
  78. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  79. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  80. package/dist/types/excalidraw/components/App.viewport.d.ts +73 -0
  81. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -3
  82. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  83. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +3 -1
  84. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -2
  85. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
  86. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  87. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -1
  88. package/dist/types/excalidraw/components/ColorPicker/topPicksDnD.d.ts +31 -0
  89. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +1 -1
  90. package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
  91. package/dist/types/excalidraw/components/{ToolButton.d.ts → IconButton.d.ts} +16 -19
  92. package/dist/types/excalidraw/components/Island.d.ts +7 -0
  93. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  94. package/dist/types/excalidraw/components/LayerUI.d.ts +5 -2
  95. package/dist/types/excalidraw/components/LockButton.d.ts +9 -0
  96. package/dist/types/excalidraw/components/MobileMenu.d.ts +4 -4
  97. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  98. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  99. package/dist/types/excalidraw/components/Popover.d.ts +1 -3
  100. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  101. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  102. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  103. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -2
  104. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  105. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
  106. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  107. package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
  108. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  109. package/dist/types/excalidraw/components/ToolPopover.d.ts +3 -6
  110. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  111. package/dist/types/excalidraw/components/Tools.d.ts +146 -0
  112. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  113. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  114. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -0
  115. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  116. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +2 -2
  117. package/dist/types/excalidraw/components/icons.d.ts +4 -1
  118. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  119. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  120. package/dist/types/excalidraw/context/tunnels.d.ts +0 -1
  121. package/dist/types/excalidraw/data/blob.d.ts +14 -6
  122. package/dist/types/excalidraw/data/index.d.ts +4 -4
  123. package/dist/types/excalidraw/data/json.d.ts +20 -12
  124. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  125. package/dist/types/excalidraw/hooks/useAppStateValue.d.ts +29 -0
  126. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  127. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +10 -3
  128. package/dist/types/excalidraw/scene/Renderer.d.ts +11 -11
  129. package/dist/types/excalidraw/scene/export.d.ts +3 -3
  130. package/dist/types/excalidraw/scene/index.d.ts +1 -1
  131. package/dist/types/excalidraw/scene/types.d.ts +4 -3
  132. package/dist/types/excalidraw/snapping.d.ts +7 -7
  133. package/dist/types/excalidraw/types.d.ts +423 -27
  134. package/dist/types/excalidraw/viewport.d.ts +283 -0
  135. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -3
  136. package/dist/types/laser-pointer/src/state.d.ts +1 -0
  137. package/dist/types/math/src/index.d.ts +1 -0
  138. package/dist/types/math/src/pca.d.ts +79 -0
  139. package/dist/types/math/src/polygon.d.ts +25 -1
  140. package/dist/types/utils/src/export.d.ts +3 -3
  141. package/package.json +2 -2
  142. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +0 -180
  143. package/dist/types/excalidraw/actions/actionSmartZoom.d.ts +0 -16
  144. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +0 -27
  145. package/dist/types/excalidraw/components/ElementCanvasButtons.d.ts +0 -7
  146. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  147. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  148. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -10
  149. package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -12
  150. package/dist/types/excalidraw/cursor.d.ts +0 -5
  151. package/dist/types/excalidraw/scene/scroll.d.ts +0 -18
  152. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
  153. package/dist/types/excalidraw/scroll.d.ts +0 -46
@@ -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;
@@ -56,6 +56,7 @@ export declare const saveAs: import("react/jsx-runtime").JSX.Element;
56
56
  export declare const LoadIcon: import("react/jsx-runtime").JSX.Element;
57
57
  export declare const clipboard: import("react/jsx-runtime").JSX.Element;
58
58
  export declare const palette: import("react/jsx-runtime").JSX.Element;
59
+ 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"];
59
60
  export declare const bucketFillIcon: import("react/jsx-runtime").JSX.Element;
60
61
  export declare const slashIcon: import("react/jsx-runtime").JSX.Element;
61
62
  export declare const ExportImageIcon: import("react/jsx-runtime").JSX.Element;
@@ -195,12 +196,13 @@ export declare const playerPlayIcon: import("react/jsx-runtime").JSX.Element;
195
196
  export declare const playerStopFilledIcon: import("react/jsx-runtime").JSX.Element;
196
197
  export declare const tablerCheckIcon: import("react/jsx-runtime").JSX.Element;
197
198
  export declare const alertTriangleIcon: import("react/jsx-runtime").JSX.Element;
199
+ 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"];
198
200
  export declare const eyeDropperIcon: import("react/jsx-runtime").JSX.Element;
199
- export declare const extraToolsIcon: import("react/jsx-runtime").JSX.Element;
200
201
  export declare const frameToolIcon: import("react/jsx-runtime").JSX.Element;
201
202
  export declare const RetryIcon: import("react/jsx-runtime").JSX.Element;
202
203
  export declare const stackPushIcon: import("react/jsx-runtime").JSX.Element;
203
204
  export declare const ArrowRightIcon: import("react/jsx-runtime").JSX.Element;
205
+ export declare const drawShapeToolIcon: import("react/jsx-runtime").JSX.Element;
204
206
  export declare const laserPointerToolIcon: import("react/jsx-runtime").JSX.Element;
205
207
  export declare const MagicIcon: import("react/jsx-runtime").JSX.Element;
206
208
  export declare const MagicIconThin: import("react/jsx-runtime").JSX.Element;
@@ -251,6 +253,7 @@ export declare const sidebarRightIcon: import("react/jsx-runtime").JSX.Element;
251
253
  export declare const messageCircleIcon: import("react/jsx-runtime").JSX.Element;
252
254
  export declare const presentationIcon: import("react/jsx-runtime").JSX.Element;
253
255
  export declare const emptyIcon: import("react/jsx-runtime").JSX.Element;
256
+ export declare const chevronDownIcon: import("react/jsx-runtime").JSX.Element;
254
257
  export declare const chevronRight: import("react/jsx-runtime").JSX.Element;
255
258
  export declare const settingsIcon: import("react/jsx-runtime").JSX.Element;
256
259
  export {};
@@ -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>;
@@ -12,7 +12,6 @@ type TunnelsContextValue = {
12
12
  DefaultSidebarTriggerTunnel: Tunnel;
13
13
  DefaultSidebarTabTriggersTunnel: Tunnel;
14
14
  OverwriteConfirmDialogTunnel: Tunnel;
15
- TTDDialogTriggerTunnel: Tunnel;
16
15
  tunnelsJotai: ReturnType<typeof createIsolation>;
17
16
  };
18
17
  export declare const TunnelsContext: React.Context<TunnelsContextValue>;
@@ -65,12 +65,17 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
65
65
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
66
66
  isBindingEnabled: boolean;
67
67
  isMidpointSnappingEnabled: boolean;
68
+ gridModeEnabled: boolean;
68
69
  suggestedBinding: {
69
70
  element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
70
71
  midPoint?: import("@excalidraw/math").GlobalPoint;
71
72
  } | null;
73
+ hoveredArrowTextAnchor: {
74
+ elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
75
+ anchor: "start" | "end" | "label";
76
+ } | null;
72
77
  isRotating: boolean;
73
- elementsToHighlight: import("@excalidraw/element/types").NonDeleted<ExcalidrawElement>[] | null;
78
+ elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
74
79
  collaborators: Map<import("../types").SocketId, import("../types").Collaborator>;
75
80
  snapLines: readonly import("../snapping").SnapLine[];
76
81
  zenModeEnabled: boolean;
@@ -88,10 +93,9 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
88
93
  shouldCacheIgnoreZoom: boolean;
89
94
  exportScale: number;
90
95
  currentItemArrowType: "sharp" | "round" | "elbow";
91
- bindMode: import("@excalidraw/element/types").BindMode;
92
96
  gridSize: number;
97
+ bindMode: import("@excalidraw/element/types").BindMode;
93
98
  viewModeOnly: boolean;
94
- gridModeEnabled: boolean;
95
99
  objectsSnapModeEnabled: boolean;
96
100
  wheelZoomsOnDefault?: boolean | undefined;
97
101
  selectedElementsAreBeingDragged: boolean;
@@ -119,7 +123,7 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
119
123
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
120
124
  boxSelectionMode: import("../types").BoxSelectionMode;
121
125
  bindingPreference: "enabled" | "disabled";
122
- editingFrame: string | null;
126
+ editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
123
127
  preferredSelectionTool: {
124
128
  type: "selection" | "lasso";
125
129
  initialized: boolean;
@@ -143,6 +147,7 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
143
147
  currentItemStartArrowhead: import("@excalidraw/element/types").Arrowhead | null;
144
148
  currentItemEndArrowhead: import("@excalidraw/element/types").Arrowhead | null;
145
149
  currentItemRoundness: import("@excalidraw/element/types").StrokeRoundness;
150
+ scrollConstraints: import("../types").ScrollConstraints | null;
146
151
  cursorButton: "up" | "down";
147
152
  scrolledOutside: boolean;
148
153
  isResizing: boolean;
@@ -172,11 +177,14 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
172
177
  x: number;
173
178
  y: number;
174
179
  } | null;
175
- userToFollow: import("../types").UserToFollow | null;
176
- followedBy: Set<import("../types").SocketId>;
177
180
  lockedMultiSelections: {
178
181
  [groupId: string]: true;
179
182
  };
183
+ colorTopPicks: {
184
+ elementStroke: readonly string[] | null;
185
+ elementBackground: readonly string[] | null;
186
+ bucketFill: readonly string[] | null;
187
+ };
180
188
  };
181
189
  files: import("../types").BinaryFiles;
182
190
  }>;
@@ -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 } from "../types";
4
4
  import type { ImportedDataState } 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
  };
@@ -47,7 +47,7 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
47
47
  selectedElementIds: Readonly<{
48
48
  [id: string]: true;
49
49
  }>;
50
- frameToHighlight: NonDeleted<import("@excalidraw/element/types").ExcalidrawFrameLikeElement> | null;
50
+ frameToHighlight: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawFrameLikeElement> | null;
51
51
  activeTool: {
52
52
  lastActiveTool: import("../types").ActiveTool | null;
53
53
  locked: boolean;
@@ -62,16 +62,21 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
62
62
  [groupId: string]: boolean;
63
63
  };
64
64
  selectedLinearElement: import("@excalidraw/element").LinearElementEditor | null;
65
- multiElement: NonDeleted<import("@excalidraw/element/types").ExcalidrawLinearElement> | null;
66
- newElement: NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
65
+ multiElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawLinearElement> | null;
66
+ newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
67
67
  isBindingEnabled: boolean;
68
68
  isMidpointSnappingEnabled: boolean;
69
+ gridModeEnabled: boolean;
69
70
  suggestedBinding: {
70
- element: NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
71
+ element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
71
72
  midPoint?: import("@excalidraw/math").GlobalPoint;
72
73
  } | null;
74
+ hoveredArrowTextAnchor: {
75
+ elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
76
+ anchor: "start" | "end" | "label";
77
+ } | null;
73
78
  isRotating: boolean;
74
- elementsToHighlight: NonDeleted<ExcalidrawElement>[] | null;
79
+ elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
75
80
  collaborators: Map<import("../types").SocketId, import("../types").Collaborator>;
76
81
  snapLines: readonly import("../snapping").SnapLine[];
77
82
  zenModeEnabled: boolean;
@@ -89,10 +94,9 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
89
94
  shouldCacheIgnoreZoom: boolean;
90
95
  exportScale: number;
91
96
  currentItemArrowType: "sharp" | "round" | "elbow";
92
- bindMode: import("@excalidraw/element/types").BindMode;
93
97
  gridSize: number;
98
+ bindMode: import("@excalidraw/element/types").BindMode;
94
99
  viewModeOnly: boolean;
95
- gridModeEnabled: boolean;
96
100
  objectsSnapModeEnabled: boolean;
97
101
  wheelZoomsOnDefault?: boolean | undefined;
98
102
  selectedElementsAreBeingDragged: boolean;
@@ -120,7 +124,7 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
120
124
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
121
125
  boxSelectionMode: import("../types").BoxSelectionMode;
122
126
  bindingPreference: "enabled" | "disabled";
123
- editingFrame: string | null;
127
+ editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
124
128
  preferredSelectionTool: {
125
129
  type: "selection" | "lasso";
126
130
  initialized: boolean;
@@ -144,6 +148,7 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
144
148
  currentItemStartArrowhead: import("@excalidraw/element/types").Arrowhead | null;
145
149
  currentItemEndArrowhead: import("@excalidraw/element/types").Arrowhead | null;
146
150
  currentItemRoundness: import("@excalidraw/element/types").StrokeRoundness;
151
+ scrollConstraints: import("../types").ScrollConstraints | null;
147
152
  cursorButton: "up" | "down";
148
153
  scrolledOutside: boolean;
149
154
  isResizing: boolean;
@@ -173,11 +178,14 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
173
178
  x: number;
174
179
  y: number;
175
180
  } | null;
176
- userToFollow: import("../types").UserToFollow | null;
177
- followedBy: Set<import("../types").SocketId>;
178
181
  lockedMultiSelections: {
179
182
  [groupId: string]: true;
180
183
  };
184
+ colorTopPicks: {
185
+ elementStroke: readonly string[] | null;
186
+ elementBackground: readonly string[] | null;
187
+ bucketFill: readonly string[] | null;
188
+ };
181
189
  };
182
190
  files: BinaryFiles;
183
191
  }>;
@@ -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
+ }
@@ -0,0 +1,29 @@
1
+ import type { AppState } from "../types";
2
+ /**
3
+ * Subscribes to specific appState changes. The component re-renders
4
+ * only when the specified prop(s) change — not on every appState update.
5
+ *
6
+ * Works both inside and outside the <Excalidraw> tree, as long as
7
+ * ExcalidrawAPIContext.Provider is an ancestor (automatically provided
8
+ * inside <Excalidraw>, or manually by the host app).
9
+ *
10
+ * Returns the narrowed value depending on prop form:
11
+ * - `keyof AppState` → `AppState[K]`
12
+ * - `(keyof AppState)[]` → whole `AppState`
13
+ * - selector function → selector's return type `T`
14
+ *
15
+ * If excalidrawAPI is not ready yet (host apps), hook is rerendered with latest
16
+ * value once available.
17
+ */
18
+ export declare function useAppStateValue<K extends keyof AppState>(prop: K, _internal?: boolean): AppState[K];
19
+ export declare function useAppStateValue(props: (keyof AppState)[], _internal?: boolean): AppState;
20
+ export declare function useAppStateValue<T>(selector: (appState: AppState) => T, _internal?: boolean): T;
21
+ /**
22
+ * Subscribes to specific appState changes without causing component rerenders.
23
+ *
24
+ * The callback is called on every matching change, but also on initial render
25
+ * so you can initialize your state.
26
+ */
27
+ export declare function useOnAppStateChange<K extends keyof AppState>(prop: K, callback: (value: AppState[K], appState: AppState) => void): undefined;
28
+ export declare function useOnAppStateChange(props: (keyof AppState)[], callback: (props: AppState, appState: AppState) => void): undefined;
29
+ export declare function useOnAppStateChange<T>(selector: (appState: AppState) => T, callback: (value: T, appState: AppState) => void): undefined;
@@ -1,5 +1,6 @@
1
1
  import type { ElementsSegmentsMap, GlobalPoint } from "@excalidraw/math/types";
2
2
  import type { ElementsMap, ExcalidrawElement } from "@excalidraw/element/types";
3
+ import type { BoxSelectionMode } from "../types";
3
4
  export declare const getLassoSelectedElementIds: (input: {
4
5
  lassoPath: GlobalPoint[];
5
6
  elements: readonly ExcalidrawElement[];
@@ -8,6 +9,7 @@ export declare const getLassoSelectedElementIds: (input: {
8
9
  intersectedElements: Set<ExcalidrawElement["id"]>;
9
10
  enclosedElements: Set<ExcalidrawElement["id"]>;
10
11
  simplifyDistance?: number;
12
+ mode?: BoxSelectionMode;
11
13
  }) => {
12
14
  selectedElementIds: string[];
13
15
  };
@@ -1,9 +1,16 @@
1
+ import type { ElementsMap, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
1
2
  import { getScrollBars } from "../scene/scrollbars";
2
- import type { InteractiveSceneRenderConfig, RenderableElementsMap } from "../scene/types";
3
+ import type { InteractiveCanvasAppState } from "../types";
4
+ import type { InteractiveSceneRenderConfig } from "../scene/types";
5
+ type ImageStatusOverlayPlacement = "center" | "top-right";
6
+ export declare const getImageStatusOverlayPosition: (element: NonDeletedExcalidrawElement, elementsMap: ElementsMap, appState: InteractiveCanvasAppState, placement: ImageStatusOverlayPlacement) => {
7
+ centerX: number;
8
+ centerY: number;
9
+ radius: number;
10
+ lineWidth: number;
11
+ } | null;
3
12
  declare const _renderInteractiveScene: ({ app, canvas, elementsMap, visibleElements, selectedElements, allElementsMap, scale, appState, renderConfig, editorInterface, animationState, deltaTime, }: InteractiveSceneRenderConfig) => {
4
13
  scrollBars?: ReturnType<typeof getScrollBars>;
5
- atLeastOneVisibleElement: boolean;
6
- elementsMap: RenderableElementsMap;
7
14
  animationState?: typeof animationState;
8
15
  };
9
16
  /**