@dwelle/excalidraw 0.4.0-e80989b → 0.4.0-eadd4b9

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 (200) hide show
  1. package/CHANGELOG.md +458 -0
  2. package/README.md +16 -1424
  3. package/dist/excalidraw.development.js +1829 -500
  4. package/dist/excalidraw.production.min.js +1 -1
  5. package/dist/excalidraw.production.min.js.LICENSE.txt +20 -0
  6. package/package.json +3 -3
  7. package/types/actions/actionAddToLibrary.d.ts +68 -34
  8. package/types/actions/actionAlign.d.ts +12 -18
  9. package/types/actions/actionBoundText.d.ts +158 -19
  10. package/types/actions/actionCanvas.d.ts +430 -118
  11. package/types/actions/actionClipboard.d.ts +132 -59
  12. package/types/actions/actionDeleteSelected.d.ts +72 -41
  13. package/types/actions/actionDistribute.d.ts +2 -6
  14. package/types/actions/actionDuplicateSelection.d.ts +2 -4
  15. package/types/actions/actionElementLock.d.ts +254 -0
  16. package/types/actions/actionExport.d.ts +215 -131
  17. package/types/actions/actionFinalize.d.ts +47 -27
  18. package/types/actions/actionFlip.d.ts +2 -4
  19. package/types/actions/actionFrame.d.ts +397 -0
  20. package/types/actions/actionGroup.d.ts +6 -10
  21. package/types/actions/actionHistory.d.ts +1 -1
  22. package/types/actions/actionLinearEditor.d.ts +25 -13
  23. package/types/actions/actionMenu.d.ts +73 -46
  24. package/types/actions/actionNavigate.d.ts +2 -3
  25. package/types/actions/actionProperties.d.ts +315 -198
  26. package/types/actions/actionStyles.d.ts +23 -12
  27. package/types/actions/actionToggleGridMode.d.ts +25 -12
  28. package/types/actions/actionToggleStats.d.ts +24 -12
  29. package/types/actions/actionToggleViewMode.d.ts +25 -12
  30. package/types/actions/actionToggleZenMode.d.ts +25 -12
  31. package/types/actions/actionZindex.d.ts +8 -16
  32. package/types/actions/index.d.ts +1 -1
  33. package/types/actions/manager.d.ts +3 -2
  34. package/types/actions/shortcuts.d.ts +2 -1
  35. package/types/actions/types.d.ts +13 -11
  36. package/types/appState.d.ts +16 -12
  37. package/types/charts.d.ts +2 -2
  38. package/types/clients.d.ts +5 -6
  39. package/types/clipboard.d.ts +2 -2
  40. package/types/colors.d.ts +60 -5
  41. package/types/components/Actions.d.ts +5 -5
  42. package/types/components/ActiveConfirmDialog.d.ts +4 -0
  43. package/types/components/App.d.ts +52 -68
  44. package/types/components/Avatar.d.ts +1 -2
  45. package/types/components/BraveMeasureTextError.d.ts +2 -0
  46. package/types/components/Button.d.ts +17 -0
  47. package/types/components/ButtonIconSelect.d.ts +11 -3
  48. package/types/components/Card.d.ts +7 -0
  49. package/types/components/ColorPicker/ColorInput.d.ts +7 -0
  50. package/types/components/ColorPicker/ColorPicker.d.ts +19 -0
  51. package/types/components/ColorPicker/CustomColorList.d.ts +8 -0
  52. package/types/components/ColorPicker/HotkeyLabel.d.ts +8 -0
  53. package/types/components/ColorPicker/Picker.d.ts +18 -0
  54. package/types/components/ColorPicker/PickerColorList.d.ts +10 -0
  55. package/types/components/ColorPicker/PickerHeading.d.ts +5 -0
  56. package/types/components/ColorPicker/ShadeList.d.ts +8 -0
  57. package/types/components/ColorPicker/TopPicks.d.ts +9 -0
  58. package/types/components/ColorPicker/colorPickerUtils.d.ts +21 -0
  59. package/types/components/ColorPicker/keyboardNavHandlers.d.ts +21 -0
  60. package/types/components/ContextMenu.d.ts +9 -22
  61. package/types/components/DefaultSidebar.d.ts +30 -0
  62. package/types/components/Dialog.d.ts +2 -4
  63. package/types/components/ErrorDialog.d.ts +3 -2
  64. package/types/components/EyeDropper.d.ts +18 -0
  65. package/types/components/FilledButton.d.ts +16 -0
  66. package/types/components/FixedSideContainer.d.ts +1 -1
  67. package/types/components/HandButton.d.ts +10 -0
  68. package/types/components/HelpButton.d.ts +1 -2
  69. package/types/components/HintViewer.d.ts +2 -2
  70. package/types/components/HomeButton.d.ts +1 -1
  71. package/types/components/ImageExportDialog.d.ts +8 -13
  72. package/types/components/Island.d.ts +1 -1
  73. package/types/components/JSONExportDialog.d.ts +6 -4
  74. package/types/components/LayerUI.d.ts +7 -15
  75. package/types/components/LibraryMenu.d.ts +13 -14
  76. package/types/components/LibraryMenuBrowseButton.d.ts +2 -2
  77. package/types/components/LibraryMenuControlButtons.d.ts +9 -0
  78. package/types/components/LibraryMenuHeaderContent.d.ts +11 -5
  79. package/types/components/LibraryMenuItems.d.ts +6 -7
  80. package/types/components/LibraryMenuSection.d.ts +22 -0
  81. package/types/components/LibraryUnit.d.ts +7 -3
  82. package/types/components/LockButton.d.ts +1 -2
  83. package/types/components/MobileMenu.d.ts +8 -11
  84. package/types/components/PasteChartDialog.d.ts +4 -5
  85. package/types/components/PenModeButton.d.ts +1 -1
  86. package/types/components/Popover.d.ts +1 -1
  87. package/types/components/ProjectName.d.ts +2 -1
  88. package/types/components/PublishLibrary.d.ts +2 -2
  89. package/types/components/RadioGroup.d.ts +12 -0
  90. package/types/components/Sidebar/Sidebar.d.ts +66 -63
  91. package/types/components/Sidebar/SidebarHeader.d.ts +6 -19
  92. package/types/components/Sidebar/SidebarTab.d.ts +9 -0
  93. package/types/components/Sidebar/SidebarTabTrigger.d.ts +10 -0
  94. package/types/components/Sidebar/SidebarTabTriggers.d.ts +7 -0
  95. package/types/components/Sidebar/SidebarTabs.d.ts +7 -0
  96. package/types/components/Sidebar/SidebarTrigger.d.ts +6 -0
  97. package/types/components/Sidebar/common.d.ts +24 -7
  98. package/types/components/Spinner.d.ts +2 -1
  99. package/types/components/Stack.d.ts +4 -3
  100. package/types/components/Stats.d.ts +3 -3
  101. package/types/components/Switch.d.ts +9 -0
  102. package/types/components/ToolButton.d.ts +6 -5
  103. package/types/components/Tooltip.d.ts +1 -1
  104. package/types/components/Trans.d.ts +8 -0
  105. package/types/components/UserList.d.ts +0 -2
  106. package/types/components/dropdownMenu/DropdownMenu.d.ts +67 -0
  107. package/types/components/dropdownMenu/DropdownMenuContent.d.ts +15 -0
  108. package/types/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -0
  109. package/types/components/dropdownMenu/DropdownMenuItem.d.ts +12 -0
  110. package/types/components/dropdownMenu/DropdownMenuItemContent.d.ts +6 -0
  111. package/types/components/dropdownMenu/DropdownMenuItemCustom.d.ts +6 -0
  112. package/types/components/dropdownMenu/DropdownMenuItemLink.d.ts +13 -0
  113. package/types/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -0
  114. package/types/components/dropdownMenu/DropdownMenuTrigger.d.ts +11 -0
  115. package/types/components/dropdownMenu/common.d.ts +6 -0
  116. package/types/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -0
  117. package/types/components/footer/Footer.d.ts +12 -0
  118. package/types/components/footer/FooterCenter.d.ts +8 -0
  119. package/types/components/hoc/withInternalFallback.d.ts +4 -0
  120. package/types/components/icons.d.ts +13 -2
  121. package/types/components/live-collaboration/LiveCollaborationTrigger.d.ts +10 -0
  122. package/types/components/main-menu/DefaultItems.d.ts +47 -0
  123. package/types/components/main-menu/MainMenu.d.ts +61 -0
  124. package/types/components/welcome-screen/WelcomeScreen.Center.d.ts +58 -0
  125. package/types/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -0
  126. package/types/components/welcome-screen/WelcomeScreen.d.ts +85 -0
  127. package/types/constants.d.ts +73 -16
  128. package/types/context/tunnels.d.ts +18 -0
  129. package/types/context/ui-appState.d.ts +4 -0
  130. package/types/data/blob.d.ts +3 -2
  131. package/types/data/encode.d.ts +1 -1
  132. package/types/data/filesystem.d.ts +2 -1
  133. package/types/data/index.d.ts +1 -1
  134. package/types/data/library.d.ts +3 -45
  135. package/types/data/restore.d.ts +10 -4
  136. package/types/data/types.d.ts +3 -5
  137. package/types/element/Hyperlink.d.ts +27 -18
  138. package/types/element/binding.d.ts +3 -3
  139. package/types/element/bounds.d.ts +32 -7
  140. package/types/element/collision.d.ts +7 -7
  141. package/types/element/dragElements.d.ts +2 -1
  142. package/types/element/image.d.ts +11 -1
  143. package/types/element/index.d.ts +3 -2
  144. package/types/element/linearElementEditor.d.ts +24 -13
  145. package/types/element/mutateElement.d.ts +2 -1
  146. package/types/element/newElement.d.ts +37 -11
  147. package/types/element/resizeElements.d.ts +1 -0
  148. package/types/element/showSelectedShapeActions.d.ts +2 -2
  149. package/types/element/sortElements.d.ts +2 -0
  150. package/types/element/textElement.d.ts +40 -5
  151. package/types/element/textWysiwyg.d.ts +6 -1
  152. package/types/element/transformHandles.d.ts +12 -5
  153. package/types/element/typeChecks.d.ts +12 -2
  154. package/types/element/types.d.ts +53 -36
  155. package/types/emitter.d.ts +1 -1
  156. package/types/errors.d.ts +1 -1
  157. package/types/frame.d.ts +40 -0
  158. package/types/ga.d.ts +5 -5
  159. package/types/groups.d.ts +4 -0
  160. package/types/hooks/useCreatePortalContainer.d.ts +4 -0
  161. package/types/hooks/useLibraryItemSvg.d.ts +11 -0
  162. package/types/hooks/useOutsideClick.d.ts +19 -1
  163. package/types/hooks/useScrollPosition.d.ts +2 -0
  164. package/types/hooks/useTransition.d.ts +2 -0
  165. package/types/i18n.d.ts +7 -1
  166. package/types/jotai.d.ts +20 -108
  167. package/types/keys.d.ts +4 -4
  168. package/types/math.d.ts +4 -1
  169. package/types/packages/excalidraw/example/App.d.ts +7 -1
  170. package/types/packages/excalidraw/example/CustomFooter.d.ts +5 -0
  171. package/types/packages/excalidraw/example/MobileFooter.d.ts +5 -0
  172. package/types/packages/excalidraw/example/initialData.d.ts +6 -0
  173. package/types/packages/excalidraw/index.d.ts +17 -3
  174. package/types/packages/utils.d.ts +26 -25
  175. package/types/renderer/renderElement.d.ts +7 -5
  176. package/types/renderer/renderScene.d.ts +13 -6
  177. package/types/renderer/roundRect.d.ts +1 -1
  178. package/types/scene/Scene.d.ts +12 -5
  179. package/types/scene/comparisons.d.ts +1 -1
  180. package/types/scene/export.d.ts +157 -10
  181. package/types/scene/index.d.ts +1 -1
  182. package/types/scene/selection.d.ts +15 -5
  183. package/types/scene/types.d.ts +13 -5
  184. package/types/types.d.ts +126 -77
  185. package/types/utility-types.d.ts +22 -0
  186. package/types/utils.d.ts +40 -9
  187. package/types/zindex.d.ts +4 -4
  188. package/types/actions/actionToggleLock.d.ts +0 -116
  189. package/types/components/ActiveFile.d.ts +0 -7
  190. package/types/components/ClearCanvas.d.ts +0 -4
  191. package/types/components/CollabButton.d.ts +0 -6
  192. package/types/components/ColorPicker.d.ts +0 -14
  193. package/types/components/Footer.d.ts +0 -10
  194. package/types/components/LibraryButton.d.ts +0 -8
  195. package/types/components/MenuItem.d.ts +0 -11
  196. package/types/components/MenuUtils.d.ts +0 -1
  197. package/types/components/SingleLibraryItem.d.ts +0 -10
  198. package/types/components/WelcomeScreen.d.ts +0 -10
  199. package/types/components/WelcomeScreenDecor.d.ts +0 -6
  200. package/types/components/hoc/withUpstreamOverride.d.ts +0 -10
@@ -0,0 +1,21 @@
1
+ /// <reference types="react" />
2
+ import { ColorPaletteCustom } from "../../colors";
3
+ import { ActiveColorPickerSectionAtomType } from "./colorPickerUtils";
4
+ interface ColorPickerKeyNavHandlerProps {
5
+ event: React.KeyboardEvent;
6
+ activeColorPickerSection: ActiveColorPickerSectionAtomType;
7
+ palette: ColorPaletteCustom;
8
+ color: string;
9
+ onChange: (color: string) => void;
10
+ customColors: string[];
11
+ setActiveColorPickerSection: (update: React.SetStateAction<ActiveColorPickerSectionAtomType>) => void;
12
+ updateData: (formData?: any) => void;
13
+ activeShade: number;
14
+ onEyeDropperToggle: (force?: boolean) => void;
15
+ onEscape: (event: React.KeyboardEvent | KeyboardEvent) => void;
16
+ }
17
+ /**
18
+ * @returns true if the event was handled
19
+ */
20
+ export declare const colorPickerKeyNavHandler: ({ event, activeColorPickerSection, palette, color, onChange, customColors, setActiveColorPickerSection, updateData, activeShade, onEyeDropperToggle, onEscape, }: ColorPickerKeyNavHandlerProps) => boolean;
21
+ export {};
@@ -1,28 +1,15 @@
1
1
  import "./ContextMenu.scss";
2
2
  import { Action } from "../actions/types";
3
3
  import { ActionManager } from "../actions/manager";
4
- import { AppState } from "../types";
5
- import { NonDeletedExcalidrawElement } from "../element/types";
6
- export declare type ContextMenuOption = "separator" | Action;
7
- declare type ContextMenuProps = {
8
- options: ContextMenuOption[];
9
- onCloseRequest?(): void;
4
+ import React from "react";
5
+ export type ContextMenuItem = typeof CONTEXT_MENU_SEPARATOR | Action;
6
+ export type ContextMenuItems = (ContextMenuItem | false | null | undefined)[];
7
+ type ContextMenuProps = {
8
+ actionManager: ActionManager;
9
+ items: ContextMenuItems;
10
10
  top: number;
11
11
  left: number;
12
- actionManager: ActionManager;
13
- appState: Readonly<AppState>;
14
- elements: readonly NonDeletedExcalidrawElement[];
15
- };
16
- declare type ContextMenuParams = {
17
- options: (ContextMenuOption | false | null | undefined)[];
18
- top: ContextMenuProps["top"];
19
- left: ContextMenuProps["left"];
20
- actionManager: ContextMenuProps["actionManager"];
21
- appState: Readonly<AppState>;
22
- container: HTMLElement;
23
- elements: readonly NonDeletedExcalidrawElement[];
24
- };
25
- declare const _default: {
26
- push(params: ContextMenuParams): void;
27
12
  };
28
- export default _default;
13
+ export declare const CONTEXT_MENU_SEPARATOR = "separator";
14
+ export declare const ContextMenu: React.MemoExoticComponent<({ actionManager, items, top, left }: ContextMenuProps) => JSX.Element>;
15
+ export {};
@@ -0,0 +1,30 @@
1
+ /// <reference types="react" />
2
+ import { MarkOptional } from "../utility-types";
3
+ import { SidebarProps, SidebarTriggerProps } from "./Sidebar/common";
4
+ export declare const DefaultSidebar: import("react").FC<Omit<MarkOptional<Omit<{
5
+ name: string;
6
+ children: import("react").ReactNode;
7
+ onStateChange?: ((state: {
8
+ name: string;
9
+ tab?: string | undefined;
10
+ } | null) => void) | undefined;
11
+ onDock?: ((docked: boolean) => void) | undefined;
12
+ docked?: boolean | undefined;
13
+ className?: string | undefined;
14
+ __fallback?: boolean | undefined;
15
+ }, "name">, "children">, "onDock"> & {
16
+ /** pass `false` to disable docking */
17
+ onDock?: SidebarProps["onDock"] | false;
18
+ } & {
19
+ __fallback?: boolean | undefined;
20
+ }> & {
21
+ Trigger: import("react").FC<Omit<SidebarTriggerProps, "name"> & import("react").HTMLAttributes<HTMLDivElement> & {
22
+ __fallback?: boolean | undefined;
23
+ }>;
24
+ TabTriggers: {
25
+ ({ children, ...rest }: {
26
+ children: React.ReactNode;
27
+ } & import("react").HTMLAttributes<HTMLDivElement>): JSX.Element;
28
+ displayName: string;
29
+ };
30
+ };
@@ -1,14 +1,12 @@
1
1
  import React from "react";
2
2
  import "./Dialog.scss";
3
- import { AppState } from "../types";
4
3
  export interface DialogProps {
5
4
  children: React.ReactNode;
6
5
  className?: string;
7
- small?: boolean;
6
+ size?: "small" | "regular" | "wide";
8
7
  onCloseRequest(): void;
9
- title: React.ReactNode;
8
+ title: React.ReactNode | false;
10
9
  autofocus?: boolean;
11
- theme?: AppState["theme"];
12
10
  closeOnClickOutside?: boolean;
13
11
  }
14
12
  export declare const Dialog: (props: DialogProps) => JSX.Element;
@@ -1,4 +1,5 @@
1
- export declare const ErrorDialog: ({ message, onClose, }: {
2
- message: string;
1
+ import React from "react";
2
+ export declare const ErrorDialog: ({ children, onClose, }: {
3
+ children?: React.ReactNode;
3
4
  onClose?: (() => void) | undefined;
4
5
  }) => JSX.Element;
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ import "./EyeDropper.scss";
3
+ type EyeDropperProperties = {
4
+ keepOpenOnAlt: boolean;
5
+ swapPreviewOnAlt?: boolean;
6
+ onSelect?: (color: string, event: PointerEvent) => void;
7
+ previewType?: "strokeColor" | "backgroundColor";
8
+ };
9
+ export declare const activeEyeDropperAtom: import("jotai").PrimitiveAtom<EyeDropperProperties | null> & {
10
+ init: EyeDropperProperties | null;
11
+ };
12
+ export declare const EyeDropper: React.FC<{
13
+ onCancel: () => void;
14
+ onSelect: Required<EyeDropperProperties>["onSelect"];
15
+ swapPreviewOnAlt?: EyeDropperProperties["swapPreviewOnAlt"];
16
+ previewType?: EyeDropperProperties["previewType"];
17
+ }>;
18
+ export {};
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import "./FilledButton.scss";
3
+ export type ButtonVariant = "filled" | "outlined" | "icon";
4
+ export type ButtonColor = "primary" | "danger";
5
+ export type ButtonSize = "medium" | "large";
6
+ export type FilledButtonProps = {
7
+ label: string;
8
+ children?: React.ReactNode;
9
+ onClick?: () => void;
10
+ variant?: ButtonVariant;
11
+ color?: ButtonColor;
12
+ size?: ButtonSize;
13
+ className?: string;
14
+ startIcon?: React.ReactNode;
15
+ };
16
+ export declare const FilledButton: React.ForwardRefExoticComponent<FilledButtonProps & React.RefAttributes<HTMLButtonElement>>;
@@ -1,6 +1,6 @@
1
1
  import "./FixedSideContainer.scss";
2
2
  import React from "react";
3
- declare type FixedSideContainerProps = {
3
+ type FixedSideContainerProps = {
4
4
  children: React.ReactNode;
5
5
  side: "top" | "left" | "right";
6
6
  className?: string;
@@ -0,0 +1,10 @@
1
+ import "./ToolIcon.scss";
2
+ type LockIconProps = {
3
+ title?: string;
4
+ name?: string;
5
+ checked: boolean;
6
+ onChange?(): void;
7
+ isMobile?: boolean;
8
+ };
9
+ export declare const HandButton: (props: LockIconProps) => JSX.Element;
10
+ export {};
@@ -1,5 +1,4 @@
1
- declare type HelpButtonProps = {
2
- title?: string;
1
+ type HelpButtonProps = {
3
2
  name?: string;
4
3
  id?: string;
5
4
  onClick?(): void;
@@ -1,8 +1,8 @@
1
1
  import { NonDeletedExcalidrawElement } from "../element/types";
2
+ import { Device, UIAppState } from "../types";
2
3
  import "./HintViewer.scss";
3
- import { AppState, Device } from "../types";
4
4
  interface HintViewerProps {
5
- appState: AppState;
5
+ appState: UIAppState;
6
6
  elements: readonly NonDeletedExcalidrawElement[];
7
7
  isMobile: boolean;
8
8
  device: Device;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import "./LibraryButton.scss";
2
+ import "./HomeButton.scss";
3
3
  export declare const HomeButton: React.FC<{
4
4
  onHomeButtonClick: () => void;
5
5
  }>;
@@ -1,18 +1,13 @@
1
- import React from "react";
1
+ import type { ActionManager } from "../actions/manager";
2
+ import type { AppClassProperties, BinaryFiles, UIAppState } from "../types";
2
3
  import { NonDeletedExcalidrawElement } from "../element/types";
3
- import { AppState, BinaryFiles } from "../types";
4
- import "./ExportDialog.scss";
5
- import { ActionManager } from "../actions/manager";
4
+ import "./ImageExportDialog.scss";
6
5
  export declare const ErrorCanvasPreview: () => JSX.Element;
7
- export declare type ExportCB = (elements: readonly NonDeletedExcalidrawElement[], scale?: number) => void;
8
- export declare const ImageExportDialog: ({ elements, appState, setAppState, files, exportPadding, actionManager, onExportToPng, onExportToSvg, onExportToClipboard, }: {
9
- appState: AppState;
10
- setAppState: React.Component<any, AppState>["setState"];
6
+ export declare const ImageExportDialog: ({ elements, appState, files, actionManager, onExportImage, onCloseRequest, }: {
7
+ appState: UIAppState;
11
8
  elements: readonly NonDeletedExcalidrawElement[];
12
9
  files: BinaryFiles;
13
- exportPadding?: number | undefined;
14
10
  actionManager: ActionManager;
15
- onExportToPng: ExportCB;
16
- onExportToSvg: ExportCB;
17
- onExportToClipboard: ExportCB;
18
- }) => JSX.Element;
11
+ onExportImage: AppClassProperties["onExportImage"];
12
+ onCloseRequest: () => void;
13
+ }) => JSX.Element | null;
@@ -1,6 +1,6 @@
1
1
  import "./Island.scss";
2
2
  import React from "react";
3
- declare type IslandProps = {
3
+ type IslandProps = {
4
4
  children: React.ReactNode;
5
5
  padding?: number;
6
6
  className?: string | boolean;
@@ -1,13 +1,15 @@
1
+ import React from "react";
1
2
  import { NonDeletedExcalidrawElement } from "../element/types";
2
- import { AppState, ExportOpts, BinaryFiles } from "../types";
3
+ import { ExportOpts, BinaryFiles, UIAppState } from "../types";
3
4
  import "./ExportDialog.scss";
4
5
  import { ActionManager } from "../actions/manager";
5
- export declare type ExportCB = (elements: readonly NonDeletedExcalidrawElement[], scale?: number) => void;
6
- export declare const JSONExportDialog: ({ elements, appState, files, actionManager, exportOpts, canvas, }: {
6
+ export type ExportCB = (elements: readonly NonDeletedExcalidrawElement[], scale?: number) => void;
7
+ export declare const JSONExportDialog: ({ elements, appState, files, actionManager, exportOpts, canvas, setAppState, }: {
7
8
  elements: readonly NonDeletedExcalidrawElement[];
8
- appState: AppState;
9
+ appState: UIAppState;
9
10
  files: BinaryFiles;
10
11
  actionManager: ActionManager;
11
12
  exportOpts: ExportOpts;
12
13
  canvas: HTMLCanvasElement | null;
14
+ setAppState: React.Component<any, UIAppState>["setState"];
13
15
  }) => JSX.Element;
@@ -1,40 +1,32 @@
1
1
  import React from "react";
2
2
  import { ActionManager } from "../actions/manager";
3
- import { NonDeletedExcalidrawElement, Theme } from "../element/types";
3
+ import { NonDeletedExcalidrawElement } from "../element/types";
4
4
  import { Language } from "../i18n";
5
- import { AppProps, AppState, ExcalidrawProps, BinaryFiles } from "../types";
6
- import Library from "../data/library";
5
+ import { AppProps, AppState, ExcalidrawProps, BinaryFiles, UIAppState, AppClassProperties } from "../types";
7
6
  import "./LayerUI.scss";
8
7
  import "./Toolbar.scss";
9
8
  interface LayerUIProps {
10
9
  actionManager: ActionManager;
11
- appState: AppState;
10
+ appState: UIAppState;
12
11
  files: BinaryFiles;
13
12
  canvas: HTMLCanvasElement | null;
14
13
  setAppState: React.Component<any, AppState>["setState"];
15
14
  elements: readonly NonDeletedExcalidrawElement[];
16
- onCollabButtonClick?: () => void;
17
15
  onLockToggle: () => void;
16
+ onHandToolToggle: () => void;
18
17
  onPenModeToggle: () => void;
19
- onInsertElements: (elements: readonly NonDeletedExcalidrawElement[]) => void;
20
18
  showExitZenModeBtn: boolean;
21
19
  langCode: Language["code"];
22
- isCollaborating: boolean;
23
20
  renderTopRightUI?: ExcalidrawProps["renderTopRightUI"];
24
- renderCustomFooter?: ExcalidrawProps["renderFooter"];
25
21
  renderCustomStats?: ExcalidrawProps["renderCustomStats"];
26
- renderCustomSidebar?: ExcalidrawProps["renderSidebar"];
27
- libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
28
22
  UIOptions: AppProps["UIOptions"];
29
- focusContainer: () => void;
30
- library: Library;
31
- id: string;
32
23
  onImageAction: (data: {
33
24
  insertOnCanvasDirectly: boolean;
34
25
  }) => void;
26
+ onExportImage: AppClassProperties["onExportImage"];
35
27
  renderWelcomeScreen: boolean;
36
28
  onHomeButtonClick: () => void;
37
- onThemeToggle: (theme: Theme) => void;
29
+ children?: React.ReactNode;
38
30
  }
39
- declare const _default: React.MemoExoticComponent<({ actionManager, appState, files, setAppState, elements, canvas, onCollabButtonClick, onLockToggle, onPenModeToggle, onInsertElements, showExitZenModeBtn, isCollaborating, renderTopRightUI, renderCustomFooter, renderCustomStats, renderCustomSidebar, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, renderWelcomeScreen, onHomeButtonClick, onThemeToggle, }: LayerUIProps) => JSX.Element>;
31
+ declare const _default: React.MemoExoticComponent<({ actionManager, appState, files, setAppState, elements, canvas, onLockToggle, onHandToolToggle, onPenModeToggle, showExitZenModeBtn, renderTopRightUI, renderCustomStats, UIOptions, onImageAction, onExportImage, renderWelcomeScreen, onHomeButtonClick, children, }: LayerUIProps) => JSX.Element>;
40
32
  export default _default;
@@ -1,25 +1,24 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import Library from "../data/library";
3
- import { LibraryItems, LibraryItem, AppState, ExcalidrawProps } from "../types";
3
+ import { LibraryItems, LibraryItem, ExcalidrawProps, UIAppState } from "../types";
4
4
  import "./LibraryMenu.scss";
5
- import { NonDeletedExcalidrawElement } from "../element/types";
6
- export declare const LibraryMenuContent: ({ onInsertLibraryItems, pendingElements, onAddToLibrary, setAppState, libraryReturnUrl, library, id, appState, selectedItems, onSelectItems, }: {
5
+ export declare const isLibraryMenuOpenAtom: import("jotai").PrimitiveAtom<boolean> & {
6
+ init: boolean;
7
+ };
8
+ export declare const LibraryMenuContent: ({ onInsertLibraryItems, pendingElements, onAddToLibrary, setAppState, libraryReturnUrl, library, id, theme, selectedItems, onSelectItems, }: {
7
9
  pendingElements: LibraryItem["elements"];
8
10
  onInsertLibraryItems: (libraryItems: LibraryItems) => void;
9
11
  onAddToLibrary: () => void;
10
- setAppState: React.Component<any, AppState>["setState"];
12
+ setAppState: React.Component<any, UIAppState>["setState"];
11
13
  libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
12
14
  library: Library;
13
15
  id: string;
14
- appState: AppState;
16
+ theme: UIAppState["theme"];
15
17
  selectedItems: LibraryItem["id"][];
16
18
  onSelectItems: (id: LibraryItem["id"][]) => void;
17
19
  }) => JSX.Element;
18
- export declare const LibraryMenu: React.FC<{
19
- appState: AppState;
20
- onInsertElements: (elements: readonly NonDeletedExcalidrawElement[]) => void;
21
- libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
22
- focusContainer: () => void;
23
- library: Library;
24
- id: string;
25
- }>;
20
+ /**
21
+ * This component is meant to be rendered inside <Sidebar.Tab/> inside our
22
+ * <DefaultSidebar/> or host apps Sidebar components.
23
+ */
24
+ export declare const LibraryMenu: () => JSX.Element;
@@ -1,7 +1,7 @@
1
- import { AppState, ExcalidrawProps } from "../types";
1
+ import { ExcalidrawProps, UIAppState } from "../types";
2
2
  declare const LibraryMenuBrowseButton: ({ theme, id, libraryReturnUrl, }: {
3
3
  libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
4
- theme: AppState["theme"];
4
+ theme: UIAppState["theme"];
5
5
  id: string;
6
6
  }) => JSX.Element;
7
7
  export default LibraryMenuBrowseButton;
@@ -0,0 +1,9 @@
1
+ import { ExcalidrawProps, UIAppState } from "../types";
2
+ export declare const LibraryMenuControlButtons: ({ libraryReturnUrl, theme, id, style, children, className, }: {
3
+ libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
4
+ theme: UIAppState["theme"];
5
+ id: string;
6
+ style: React.CSSProperties;
7
+ children?: React.ReactNode;
8
+ className?: string | undefined;
9
+ }) => JSX.Element;
@@ -1,12 +1,18 @@
1
- import React from "react";
1
+ /// <reference types="react" />
2
+ import { LibraryItem, UIAppState } from "../types";
2
3
  import Library from "../data/library";
3
- import { AppState, LibraryItem } from "../types";
4
- export declare const LibraryMenuHeader: React.FC<{
5
- setAppState: React.Component<any, AppState>["setState"];
4
+ export declare const LibraryDropdownMenuButton: React.FC<{
5
+ setAppState: React.Component<any, UIAppState>["setState"];
6
6
  selectedItems: LibraryItem["id"][];
7
7
  library: Library;
8
8
  onRemoveFromLibrary: () => void;
9
9
  resetLibrary: () => void;
10
10
  onSelectItems: (items: LibraryItem["id"][]) => void;
11
- appState: AppState;
11
+ appState: UIAppState;
12
+ className?: string;
12
13
  }>;
14
+ export declare const LibraryDropdownMenu: ({ selectedItems, onSelectItems, className, }: {
15
+ selectedItems: LibraryItem["id"][];
16
+ onSelectItems: (id: LibraryItem["id"][]) => void;
17
+ className?: string | undefined;
18
+ }) => JSX.Element;
@@ -1,15 +1,14 @@
1
- import { AppState, ExcalidrawProps, LibraryItem, LibraryItems } from "../types";
1
+ import { ExcalidrawProps, LibraryItem, LibraryItems, UIAppState } from "../types";
2
2
  import "./LibraryMenuItems.scss";
3
- declare const LibraryMenuItems: ({ isLoading, libraryItems, onAddToLibrary, onInsertLibraryItems, pendingElements, selectedItems, onSelectItems, theme, id, libraryReturnUrl, }: {
3
+ export default function LibraryMenuItems({ isLoading, libraryItems, onAddToLibrary, onInsertLibraryItems, pendingElements, theme, id, libraryReturnUrl, onSelectItems, selectedItems, }: {
4
4
  isLoading: boolean;
5
5
  libraryItems: LibraryItems;
6
6
  pendingElements: LibraryItem["elements"];
7
7
  onInsertLibraryItems: (libraryItems: LibraryItems) => void;
8
8
  onAddToLibrary: (elements: LibraryItem["elements"]) => void;
9
- selectedItems: LibraryItem["id"][];
10
- onSelectItems: (id: LibraryItem["id"][]) => void;
11
9
  libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
12
- theme: AppState["theme"];
10
+ theme: UIAppState["theme"];
13
11
  id: string;
14
- }) => JSX.Element;
15
- export default LibraryMenuItems;
12
+ selectedItems: LibraryItem["id"][];
13
+ onSelectItems: (id: LibraryItem["id"][]) => void;
14
+ }): JSX.Element;
@@ -0,0 +1,22 @@
1
+ import React, { ReactNode } from "react";
2
+ import { LibraryItem } from "../types";
3
+ import { ExcalidrawElement, NonDeleted } from "../element/types";
4
+ import { SvgCache } from "../hooks/useLibraryItemSvg";
5
+ type LibraryOrPendingItem = (LibraryItem | /* pending library item */ {
6
+ id: null;
7
+ elements: readonly NonDeleted<ExcalidrawElement>[];
8
+ })[];
9
+ interface Props {
10
+ items: LibraryOrPendingItem;
11
+ onClick: (id: LibraryItem["id"] | null) => void;
12
+ onItemSelectToggle: (id: LibraryItem["id"], event: React.MouseEvent) => void;
13
+ onItemDrag: (id: LibraryItem["id"], event: React.DragEvent) => void;
14
+ isItemSelected: (id: LibraryItem["id"] | null) => boolean;
15
+ svgCache: SvgCache;
16
+ itemsRenderedPerBatch: number;
17
+ }
18
+ export declare const LibraryMenuSectionGrid: ({ children, }: {
19
+ children: ReactNode;
20
+ }) => JSX.Element;
21
+ export declare const LibraryMenuSection: React.MemoExoticComponent<({ items, onItemSelectToggle, onItemDrag, isItemSelected, onClick, svgCache, itemsRenderedPerBatch, }: Props) => JSX.Element>;
22
+ export {};
@@ -1,11 +1,15 @@
1
+ /// <reference types="react" />
1
2
  import { LibraryItem } from "../types";
2
3
  import "./LibraryUnit.scss";
3
- export declare const LibraryUnit: ({ id, elements, isPending, onClick, selected, onToggle, onDrag, }: {
4
+ import { SvgCache } from "../hooks/useLibraryItemSvg";
5
+ export declare const LibraryUnit: import("react").MemoExoticComponent<({ id, elements, isPending, onClick, selected, onToggle, onDrag, svgCache, }: {
4
6
  id: LibraryItem["id"] | /** for pending item */ null;
5
7
  elements?: readonly import("../element/types").NonDeleted<import("../element/types").ExcalidrawElement>[] | undefined;
6
8
  isPending?: boolean | undefined;
7
- onClick: () => void;
9
+ onClick: (id: LibraryItem["id"] | null) => void;
8
10
  selected: boolean;
9
11
  onToggle: (id: string, event: React.MouseEvent) => void;
10
12
  onDrag: (id: string, event: React.DragEvent) => void;
11
- }) => JSX.Element;
13
+ svgCache: SvgCache;
14
+ }) => JSX.Element>;
15
+ export declare const EmptyLibraryUnit: () => JSX.Element;
@@ -1,10 +1,9 @@
1
1
  import "./ToolIcon.scss";
2
- declare type LockIconProps = {
2
+ type LockIconProps = {
3
3
  title?: string;
4
4
  name?: string;
5
5
  checked: boolean;
6
6
  onChange?(): void;
7
- zenModeEnabled?: boolean;
8
7
  isMobile?: boolean;
9
8
  };
10
9
  export declare const LockButton: (props: LockIconProps) => JSX.Element;
@@ -1,30 +1,27 @@
1
1
  import React from "react";
2
- import { AppState, Device, ExcalidrawProps } from "../types";
2
+ import { AppState, Device, ExcalidrawProps, UIAppState } from "../types";
3
3
  import { ActionManager } from "../actions/manager";
4
- import { NonDeletedExcalidrawElement, Theme } from "../element/types";
5
- declare type MobileMenuProps = {
6
- appState: AppState;
4
+ import { NonDeletedExcalidrawElement } from "../element/types";
5
+ type MobileMenuProps = {
6
+ appState: UIAppState;
7
7
  actionManager: ActionManager;
8
8
  renderJSONExportDialog: () => React.ReactNode;
9
9
  renderImageExportDialog: () => React.ReactNode;
10
10
  setAppState: React.Component<any, AppState>["setState"];
11
11
  elements: readonly NonDeletedExcalidrawElement[];
12
- onCollabButtonClick?: () => void;
13
12
  onLockToggle: () => void;
13
+ onHandToolToggle: () => void;
14
14
  onPenModeToggle: () => void;
15
15
  canvas: HTMLCanvasElement | null;
16
- isCollaborating: boolean;
17
- renderCustomFooter?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
18
16
  onImageAction: (data: {
19
17
  insertOnCanvasDirectly: boolean;
20
18
  }) => void;
21
- renderTopRightUI?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
19
+ renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
22
20
  renderCustomStats?: ExcalidrawProps["renderCustomStats"];
23
21
  renderSidebars: () => JSX.Element | null;
24
22
  device: Device;
25
- renderWelcomeScreen?: boolean;
23
+ renderWelcomeScreen: boolean;
26
24
  onHomeButtonClick: () => void;
27
- onThemeToggle: (theme: Theme) => void;
28
25
  };
29
- export declare const MobileMenu: ({ appState, elements, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, onImageAction, renderTopRightUI, renderCustomStats, renderSidebars, device, renderWelcomeScreen, onHomeButtonClick, onThemeToggle, }: MobileMenuProps) => JSX.Element;
26
+ export declare const MobileMenu: ({ appState, elements, actionManager, setAppState, onLockToggle, onHandToolToggle, onPenModeToggle, canvas, onImageAction, renderTopRightUI, renderCustomStats, renderSidebars, device, renderWelcomeScreen, onHomeButtonClick, }: MobileMenuProps) => JSX.Element;
30
27
  export {};
@@ -1,9 +1,8 @@
1
1
  import React from "react";
2
- import { AppState, LibraryItem } from "../types";
2
+ import { UIAppState } from "../types";
3
3
  import "./PasteChartDialog.scss";
4
- export declare const PasteChartDialog: ({ setAppState, appState, onClose, onInsertChart, }: {
5
- appState: AppState;
4
+ export declare const PasteChartDialog: ({ setAppState, appState, onClose, }: {
5
+ appState: UIAppState;
6
6
  onClose: () => void;
7
- setAppState: React.Component<any, AppState>["setState"];
8
- onInsertChart: (elements: LibraryItem["elements"]) => void;
7
+ setAppState: React.Component<any, UIAppState>["setState"];
9
8
  }) => JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import "./ToolIcon.scss";
2
- declare type PenModeIconProps = {
2
+ type PenModeIconProps = {
3
3
  title?: string;
4
4
  name?: string;
5
5
  checked: boolean;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import "./Popover.scss";
3
- declare type Props = {
3
+ type Props = {
4
4
  top?: number;
5
5
  left?: number;
6
6
  children?: React.ReactNode;
@@ -1,10 +1,11 @@
1
1
  import "./TextInput.scss";
2
2
  import "./ProjectName.scss";
3
- declare type Props = {
3
+ type Props = {
4
4
  value: string;
5
5
  onChange: (value: string) => void;
6
6
  label: string;
7
7
  isNameEditable: boolean;
8
+ ignoreFocus?: boolean;
8
9
  };
9
10
  export declare const ProjectName: (props: Props) => JSX.Element;
10
11
  export {};
@@ -1,9 +1,9 @@
1
- import { AppState, LibraryItems } from "../types";
1
+ import { LibraryItems, UIAppState } from "../types";
2
2
  import "./PublishLibrary.scss";
3
3
  declare const PublishLibrary: ({ onClose, libraryItems, appState, onSuccess, onError, updateItemsInStorage, onRemove, }: {
4
4
  onClose: () => void;
5
5
  libraryItems: LibraryItems;
6
- appState: AppState;
6
+ appState: UIAppState;
7
7
  onSuccess: (data: {
8
8
  url: string;
9
9
  authorName: string;
@@ -0,0 +1,12 @@
1
+ import "./RadioGroup.scss";
2
+ export type RadioGroupChoice<T> = {
3
+ value: T;
4
+ label: string;
5
+ };
6
+ export type RadioGroupProps<T> = {
7
+ choices: RadioGroupChoice<T>[];
8
+ value: T;
9
+ onChange: (value: T) => void;
10
+ name: string;
11
+ };
12
+ export declare const RadioGroup: <T>({ onChange, value, choices, name, }: RadioGroupProps<T>) => JSX.Element;