@myoc/excalidraw 0.18.16 → 0.18.17

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 (152) hide show
  1. package/dist/dev/{chunk-3HLOFB5F.js → chunk-FQEIAL75.js} +14723 -9831
  2. package/dist/dev/chunk-FQEIAL75.js.map +7 -0
  3. package/dist/dev/{chunk-PEI7EPYO.js → chunk-KJKC5BJI.js} +10 -4
  4. package/dist/dev/chunk-KJKC5BJI.js.map +7 -0
  5. package/dist/dev/{chunk-QQGTICP4.js → chunk-XL2I4W52.js} +2 -2
  6. package/dist/dev/data/{image-XPEIZ6XQ.js → image-WMF622SS.js} +3 -3
  7. package/dist/dev/index.css +69 -22
  8. package/dist/dev/index.css.map +3 -3
  9. package/dist/dev/index.js +3099 -6535
  10. package/dist/dev/index.js.map +4 -4
  11. package/dist/dev/locales/{en-R455UJTM.js → en-UQFCZXHO.js} +2 -2
  12. package/dist/dev/subset-shared.chunk.js +1 -1
  13. package/dist/dev/subset-worker.chunk.js +1 -1
  14. package/dist/prod/{chunk-7HNFGNL7.js → chunk-5JAQX5EH.js} +1 -1
  15. package/dist/prod/{chunk-KZWZ7WHC.js → chunk-EJLAYNAE.js} +4 -4
  16. package/dist/prod/chunk-LSNMPGNI.js +33 -0
  17. package/dist/prod/data/image-Z433FUMH.js +1 -0
  18. package/dist/prod/index.css +1 -1
  19. package/dist/prod/index.js +17 -16
  20. package/dist/prod/locales/{en-YWERZJD6.js → en-7EHYHCIL.js} +1 -1
  21. package/dist/prod/subset-shared.chunk.js +1 -1
  22. package/dist/prod/subset-worker.chunk.js +1 -1
  23. package/dist/types/common/src/constants.d.ts +3 -1
  24. package/dist/types/{excalidraw → common/src}/emitter.d.ts +1 -1
  25. package/dist/types/common/src/font-metadata.d.ts +4 -2
  26. package/dist/types/common/src/index.d.ts +1 -0
  27. package/dist/types/common/src/utility-types.d.ts +5 -0
  28. package/dist/types/common/src/utils.d.ts +16 -4
  29. package/dist/types/{excalidraw/scene → element/src}/Scene.d.ts +11 -14
  30. package/dist/types/element/src/ShapeCache.d.ts +1 -1
  31. package/dist/types/element/src/align.d.ts +3 -3
  32. package/dist/types/element/src/arrange.d.ts +2 -1
  33. package/dist/types/element/src/binding.d.ts +18 -10
  34. package/dist/types/element/src/bounds.d.ts +1 -1
  35. package/dist/types/{excalidraw/change.d.ts → element/src/delta.d.ts} +40 -35
  36. package/dist/types/element/src/dragElements.d.ts +3 -2
  37. package/dist/types/element/src/elbowArrow.d.ts +1 -1
  38. package/dist/types/element/src/flowchart.d.ts +3 -2
  39. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  40. package/dist/types/element/src/frame.d.ts +4 -3
  41. package/dist/types/element/src/index.d.ts +45 -2
  42. package/dist/types/element/src/linearElementEditor.d.ts +14 -18
  43. package/dist/types/element/src/mutateElement.d.ts +10 -2
  44. package/dist/types/element/src/newElement.d.ts +3 -3
  45. package/dist/types/element/src/resizeElements.d.ts +4 -4
  46. package/dist/types/element/src/selection.d.ts +1 -6
  47. package/dist/types/element/src/shapes.d.ts +1 -1
  48. package/dist/types/element/src/sizeHelpers.d.ts +0 -1
  49. package/dist/types/element/src/store.d.ts +227 -0
  50. package/dist/types/element/src/textElement.d.ts +4 -3
  51. package/dist/types/element/src/typeChecks.d.ts +5 -1
  52. package/dist/types/element/src/types.d.ts +8 -0
  53. package/dist/types/element/src/zindex.d.ts +1 -1
  54. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +27 -45
  55. package/dist/types/excalidraw/actions/actionAlign.d.ts +8 -8
  56. package/dist/types/excalidraw/actions/actionArrange.d.ts +2 -2
  57. package/dist/types/excalidraw/actions/actionBoundText.d.ts +18 -30
  58. package/dist/types/excalidraw/actions/actionCanvas.d.ts +127 -199
  59. package/dist/types/excalidraw/actions/actionClipboard.d.ts +56 -92
  60. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +9 -15
  61. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +25 -43
  62. package/dist/types/excalidraw/actions/actionDistribute.d.ts +4 -4
  63. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -2
  64. package/dist/types/excalidraw/actions/actionElementLink.d.ts +9 -15
  65. package/dist/types/excalidraw/actions/actionElementLock.d.ts +20 -32
  66. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +9 -15
  67. package/dist/types/excalidraw/actions/actionExport.d.ts +175 -229
  68. package/dist/types/excalidraw/actions/actionFinalize.d.ts +16 -28
  69. package/dist/types/excalidraw/actions/actionFlip.d.ts +4 -4
  70. package/dist/types/excalidraw/actions/actionFrame.d.ts +80 -104
  71. package/dist/types/excalidraw/actions/actionGroup.d.ts +24 -36
  72. package/dist/types/excalidraw/actions/actionHistory.d.ts +1 -2
  73. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +8 -14
  74. package/dist/types/excalidraw/actions/actionLink.d.ts +9 -15
  75. package/dist/types/excalidraw/actions/actionMenu.d.ts +27 -45
  76. package/dist/types/excalidraw/actions/actionNavigate.d.ts +17 -29
  77. package/dist/types/excalidraw/actions/actionProperties.d.ts +123 -213
  78. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +11 -17
  79. package/dist/types/excalidraw/actions/actionSmartZoom.d.ts +2 -2
  80. package/dist/types/excalidraw/actions/actionStyles.d.ts +13 -19
  81. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +11 -17
  82. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +11 -17
  83. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +11 -198
  84. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +19 -0
  85. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +11 -17
  86. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +11 -17
  87. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +11 -17
  88. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -8
  89. package/dist/types/excalidraw/actions/types.d.ts +3 -3
  90. package/dist/types/excalidraw/appState.d.ts +30 -30
  91. package/dist/types/excalidraw/components/App.d.ts +13 -8
  92. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -1
  93. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +5 -1
  94. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +1 -1
  95. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -3
  96. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -3
  97. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -2
  98. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +1 -1
  99. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +1 -1
  100. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +1 -1
  101. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +23 -0
  102. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +4 -3
  103. package/dist/types/excalidraw/components/{ButtonIconSelect.d.ts → RadioSelection.d.ts} +1 -1
  104. package/dist/types/excalidraw/components/Range.d.ts +3 -3
  105. package/dist/types/excalidraw/components/Stats/Angle.d.ts +1 -1
  106. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +1 -1
  107. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +2 -1
  108. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +1 -1
  109. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +1 -1
  110. package/dist/types/excalidraw/components/Stats/FontSize.d.ts +1 -1
  111. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +1 -1
  112. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +1 -1
  113. package/dist/types/excalidraw/components/Stats/MultiFontSize.d.ts +1 -1
  114. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +1 -1
  115. package/dist/types/excalidraw/components/Stats/Position.d.ts +1 -1
  116. package/dist/types/excalidraw/components/Stats/utils.d.ts +4 -11
  117. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +1 -1
  118. package/dist/types/excalidraw/components/hyperlink/Hyperlink.d.ts +3 -2
  119. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +2 -1
  120. package/dist/types/excalidraw/components/icons.d.ts +1 -0
  121. package/dist/types/excalidraw/components/shapes.d.ts +1 -1
  122. package/dist/types/excalidraw/data/blob.d.ts +1 -1
  123. package/dist/types/excalidraw/data/transform.d.ts +1 -1
  124. package/dist/types/excalidraw/editor-jotai.d.ts +6 -6
  125. package/dist/types/excalidraw/fonts/Fonts.d.ts +1 -1
  126. package/dist/types/excalidraw/history.d.ts +14 -22
  127. package/dist/types/excalidraw/hooks/useEmitter.d.ts +1 -1
  128. package/dist/types/excalidraw/index.d.ts +9 -9
  129. package/dist/types/excalidraw/lasso/index.d.ts +1 -0
  130. package/dist/types/excalidraw/renderer/helpers.d.ts +6 -1
  131. package/dist/types/excalidraw/scene/Renderer.d.ts +1 -1
  132. package/dist/types/excalidraw/scene/index.d.ts +2 -2
  133. package/dist/types/excalidraw/snapping.d.ts +2 -2
  134. package/dist/types/excalidraw/types.d.ts +15 -6
  135. package/dist/types/excalidraw/visualdebug.d.ts +1 -1
  136. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +3 -1
  137. package/dist/types/math/src/curve.d.ts +2 -0
  138. package/dist/types/math/src/vector.d.ts +4 -0
  139. package/dist/types/utils/src/bbox.d.ts +1 -1
  140. package/dist/types/utils/src/index.d.ts +1 -1
  141. package/dist/types/utils/src/withinBounds.d.ts +1 -1
  142. package/history.ts +68 -94
  143. package/package.json +4 -4
  144. package/dist/dev/chunk-3HLOFB5F.js.map +0 -7
  145. package/dist/dev/chunk-PEI7EPYO.js.map +0 -7
  146. package/dist/prod/chunk-KKQVTSHB.js +0 -33
  147. package/dist/prod/data/image-QD7FUQED.js +0 -1
  148. package/dist/types/excalidraw/components/ButtonSelect.d.ts +0 -9
  149. package/dist/types/excalidraw/store.d.ts +0 -129
  150. /package/dist/dev/{chunk-QQGTICP4.js.map → chunk-XL2I4W52.js.map} +0 -0
  151. /package/dist/dev/data/{image-XPEIZ6XQ.js.map → image-WMF622SS.js.map} +0 -0
  152. /package/dist/dev/locales/{en-R455UJTM.js.map → en-UQFCZXHO.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import type { ExcalidrawElement, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
2
+ import type { Scene } from "@excalidraw/element";
2
3
  import type { AtomicUnit } from "./utils";
3
- import type Scene from "../../scene/Scene";
4
4
  import type { AppState } from "../../types";
5
5
  interface MultiDimensionProps {
6
6
  property: "width" | "height";
@@ -1,5 +1,5 @@
1
1
  import type { ExcalidrawElement, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
2
- import type Scene from "../../scene/Scene";
2
+ import type { Scene } from "@excalidraw/element";
3
3
  import type { AppState } from "../../types";
4
4
  interface MultiFontSizeProps {
5
5
  elements: readonly ExcalidrawElement[];
@@ -1,6 +1,6 @@
1
1
  import type { ElementsMap, ExcalidrawElement } from "@excalidraw/element/types";
2
+ import type { Scene } from "@excalidraw/element";
2
3
  import type { AtomicUnit } from "./utils";
3
- import type Scene from "../../scene/Scene";
4
4
  import type { AppState } from "../../types";
5
5
  interface MultiPositionProps {
6
6
  property: "x" | "y";
@@ -1,5 +1,5 @@
1
1
  import type { ElementsMap, ExcalidrawElement } from "@excalidraw/element/types";
2
- import type Scene from "../../scene/Scene";
2
+ import type { Scene } from "@excalidraw/element";
3
3
  import type { AppState } from "../../types";
4
4
  interface PositionProps {
5
5
  property: "x" | "y";
@@ -1,8 +1,9 @@
1
- import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
2
- import type Scene from "../../scene/Scene";
1
+ import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
+ import type { Scene } from "@excalidraw/element";
3
3
  import type { AppState } from "../../types";
4
4
  export type StatsInputProperty = "x" | "y" | "width" | "height" | "angle" | "fontSize" | "gridStep";
5
5
  export declare const SMALLEST_DELTA = 0.01;
6
+ export declare const STEP_SIZE = 10;
6
7
  export declare const isPropertyEditable: (element: ExcalidrawElement, property: keyof ExcalidrawElement) => boolean;
7
8
  export declare const getStepSizedValue: (value: number, stepSize: number) => number;
8
9
  export type AtomicUnit = Record<string, true>;
@@ -14,13 +15,5 @@ export declare const newOrigin: (x1: number, y1: number, w1: number, h1: number,
14
15
  x: number;
15
16
  y: number;
16
17
  };
17
- export declare const moveElement: (newTopLeftX: number, newTopLeftY: number, originalElement: ExcalidrawElement, elementsMap: NonDeletedSceneElementsMap, elements: readonly NonDeletedExcalidrawElement[], scene: Scene, originalElementsMap: ElementsMap, shouldInformMutation?: boolean) => void;
18
+ export declare const moveElement: (newTopLeftX: number, newTopLeftY: number, originalElement: ExcalidrawElement, scene: Scene, originalElementsMap: ElementsMap, shouldInformMutation?: boolean) => void;
18
19
  export declare const getAtomicUnits: (targetElements: readonly ExcalidrawElement[], appState: AppState) => AtomicUnit[];
19
- export declare const updateBindings: (latestElement: ExcalidrawElement, elementsMap: NonDeletedSceneElementsMap, elements: readonly NonDeletedExcalidrawElement[], scene: Scene, options?: {
20
- simultaneouslyUpdated?: readonly ExcalidrawElement[];
21
- newSize?: {
22
- width: number;
23
- height: number;
24
- };
25
- zoom?: AppState["zoom"];
26
- }) => void;
@@ -3,4 +3,4 @@ export declare const DropdownMenuContentPropsContext: React.Context<{
3
3
  onSelect?: ((event: Event) => void) | undefined;
4
4
  }>;
5
5
  export declare const getDropdownMenuItemClassName: (className?: string, selected?: boolean, hovered?: boolean) => string;
6
- export declare const useHandleDropdownMenuItemClick: (origOnClick: React.MouseEventHandler<HTMLAnchorElement | HTMLButtonElement> | undefined, onSelect: ((event: Event) => void) | undefined) => (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement, MouseEvent>) => void;
6
+ export declare const useHandleDropdownMenuItemClick: (origOnClick: React.MouseEventHandler<HTMLAnchorElement | HTMLButtonElement> | undefined, onSelect: ((event: Event) => void) | undefined) => (event: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>) => void;
@@ -1,9 +1,10 @@
1
+ import type { Scene } from "@excalidraw/element";
1
2
  import type { ElementsMap, ExcalidrawEmbeddableElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
3
  import "./Hyperlink.scss";
3
4
  import type { AppState, ExcalidrawProps, UIAppState } from "../../types";
4
- export declare const Hyperlink: ({ element, elementsMap, setAppState, onLinkOpen, setToast, updateEmbedValidationStatus, }: {
5
+ export declare const Hyperlink: ({ element, scene, setAppState, onLinkOpen, setToast, updateEmbedValidationStatus, }: {
5
6
  element: NonDeletedExcalidrawElement;
6
- elementsMap: ElementsMap;
7
+ scene: Scene;
7
8
  setAppState: React.Component<any, AppState>["setState"];
8
9
  onLinkOpen: ExcalidrawProps["onLinkOpen"];
9
10
  setToast: (toast: {
@@ -1,7 +1,8 @@
1
1
  import type { GlobalPoint, Radians } from "@excalidraw/math";
2
- import type { Bounds } from "@excalidraw/element/bounds";
2
+ import type { Bounds } from "@excalidraw/element";
3
3
  import type { ElementsMap, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
4
4
  import type { AppState, UIAppState } from "../../types";
5
+ export declare const DEFAULT_LINK_SIZE = 12;
5
6
  export declare const EXTERNAL_LINK_IMG: HTMLImageElement;
6
7
  export declare const ELEMENT_LINK_IMG: HTMLImageElement;
7
8
  export declare const getLinkHandleFromCoords: ([x1, y1, x2, y2]: Bounds, angle: Radians, appState: Pick<UIAppState, "zoom">) => Bounds;
@@ -54,6 +54,7 @@ export declare const LoadIcon: import("react/jsx-runtime").JSX.Element;
54
54
  export declare const clipboard: import("react/jsx-runtime").JSX.Element;
55
55
  export declare const palette: import("react/jsx-runtime").JSX.Element;
56
56
  export declare const bucketFillIcon: import("react/jsx-runtime").JSX.Element;
57
+ export declare const slashIcon: import("react/jsx-runtime").JSX.Element;
57
58
  export declare const ExportImageIcon: import("react/jsx-runtime").JSX.Element;
58
59
  export declare const exportToFileIcon: import("react/jsx-runtime").JSX.Element;
59
60
  export declare const zoomIn: import("react/jsx-runtime").JSX.Element;
@@ -59,4 +59,4 @@ export declare const SHAPES: readonly [{
59
59
  readonly fillable: false;
60
60
  readonly myocSimplifiedMode: true;
61
61
  }];
62
- export declare const findShapeByKey: (key: string) => "line" | "ellipse" | "text" | "rectangle" | "diamond" | "image" | "selection" | "arrow" | "freedraw" | "eraser" | null;
62
+ export declare const findShapeByKey: (key: string) => "text" | "line" | "arrow" | "selection" | "rectangle" | "diamond" | "ellipse" | "freedraw" | "image" | "eraser" | null;
@@ -6,7 +6,7 @@ import type { FileSystemHandle } from "./filesystem";
6
6
  import type { ImportedLibraryData } from "./types";
7
7
  export declare const getMimeType: (blob: Blob | string) => string;
8
8
  export declare const getFileHandleType: (handle: FileSystemHandle | null) => string | null;
9
- export declare const isImageFileHandleType: (type: string | null) => type is "png" | "svg";
9
+ export declare const isImageFileHandleType: (type: string | null) => type is "svg" | "png";
10
10
  export declare const isImageFileHandle: (handle: FileSystemHandle | null) => boolean;
11
11
  export declare const isSupportedImageFileType: (type: string | null | undefined) => boolean;
12
12
  export declare const isSupportedImageFile: (blob: Blob | null | undefined) => blob is Blob & {
@@ -1,4 +1,4 @@
1
- import type { ElementConstructorOpts } from "@excalidraw/element/newElement";
1
+ import type { ElementConstructorOpts } from "@excalidraw/element";
2
2
  import type { ExcalidrawBindableElement, ExcalidrawElement, ExcalidrawFrameElement, ExcalidrawFreeDrawElement, ExcalidrawGenericElement, ExcalidrawIframeLikeElement, ExcalidrawImageElement, ExcalidrawLinearElement, ExcalidrawMagicFrameElement, ExcalidrawSelectionElement, ExcalidrawTextElement, FileId, FontFamilyValues, TextAlign, VerticalAlign } from "@excalidraw/element/types";
3
3
  import type { MarkOptional } from "@excalidraw/common/utility-types";
4
4
  export type ValidLinearElement = {
@@ -1,14 +1,14 @@
1
- import { atom, createStore, type PrimitiveAtom } from "jotai";
1
+ import { atom, createStore, type PrimitiveAtom, type WritableAtom } from "jotai";
2
2
  import { createIsolation } from "jotai-scope";
3
- export { atom, PrimitiveAtom };
3
+ export { atom, PrimitiveAtom, WritableAtom };
4
4
  export declare const useAtom: typeof import("jotai").useAtom, useSetAtom: typeof import("jotai").useSetAtom, useAtomValue: typeof import("jotai").useAtomValue, useStore: (options?: {
5
5
  store?: {
6
6
  get: <Value>(atom: import("jotai").Atom<Value>) => Value;
7
- set: <Value_1, Args extends unknown[], Result>(atom: import("jotai").WritableAtom<Value_1, Args, Result>, ...args: Args) => Result;
7
+ set: <Value_1, Args extends unknown[], Result>(atom: WritableAtom<Value_1, Args, Result>, ...args: Args) => Result;
8
8
  sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
9
9
  } | ({
10
10
  get: <Value_2>(atom: import("jotai").Atom<Value_2>) => Value_2;
11
- set: <Value_1_1, Args_1 extends unknown[], Result_1>(atom: import("jotai").WritableAtom<Value_1_1, Args_1, Result_1>, ...args: Args_1) => Result_1;
11
+ set: <Value_1_1, Args_1 extends unknown[], Result_1>(atom: WritableAtom<Value_1_1, Args_1, Result_1>, ...args: Args_1) => Result_1;
12
12
  sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
13
13
  } & {
14
14
  dev4_get_internal_weak_map: () => WeakMap<import("jotai").Atom<unknown>, {
@@ -29,11 +29,11 @@ export declare const useAtom: typeof import("jotai").useAtom, useSetAtom: typeof
29
29
  }) | undefined;
30
30
  } | undefined) => {
31
31
  get: <Value_3>(atom: import("jotai").Atom<Value_3>) => Value_3;
32
- set: <Value_1_2, Args_2 extends unknown[], Result_2>(atom: import("jotai").WritableAtom<Value_1_2, Args_2, Result_2>, ...args: Args_2) => Result_2;
32
+ set: <Value_1_2, Args_2 extends unknown[], Result_2>(atom: WritableAtom<Value_1_2, Args_2, Result_2>, ...args: Args_2) => Result_2;
33
33
  sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
34
34
  } | ({
35
35
  get: <Value_4>(atom: import("jotai").Atom<Value_4>) => Value_4;
36
- set: <Value_1_3, Args_3 extends unknown[], Result_3>(atom: import("jotai").WritableAtom<Value_1_3, Args_3, Result_3>, ...args: Args_3) => Result_3;
36
+ set: <Value_1_3, Args_3 extends unknown[], Result_3>(atom: WritableAtom<Value_1_3, Args_3, Result_3>, ...args: Args_3) => Result_3;
37
37
  sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
38
38
  } & {
39
39
  dev4_get_internal_weak_map: () => WeakMap<import("jotai").Atom<unknown>, {
@@ -1,7 +1,7 @@
1
1
  import { type FontMetadata } from "@excalidraw/common";
2
2
  import type { ExcalidrawElement } from "@excalidraw/element/types";
3
+ import type { Scene } from "@excalidraw/element";
3
4
  import { ExcalidrawFontFace } from "./ExcalidrawFontFace";
4
- import type Scene from "../scene/Scene";
5
5
  export declare class Fonts {
6
6
  static readonly loadedFontsCache: Set<string>;
7
7
  private static _registered;
@@ -1,40 +1,32 @@
1
+ import { Emitter } from "@excalidraw/common";
2
+ import { StoreDelta, type Store } from "@excalidraw/element";
1
3
  import type { SceneElementsMap } from "@excalidraw/element/types";
2
- import { Emitter } from "./emitter";
3
- import type { AppStateChange, ElementsChange } from "./change";
4
- import type { Snapshot } from "./store";
5
4
  import type { AppState } from "./types";
5
+ declare class HistoryEntry extends StoreDelta {
6
+ }
6
7
  export declare class HistoryChangedEvent {
7
8
  readonly isUndoStackEmpty: boolean;
8
9
  readonly isRedoStackEmpty: boolean;
9
10
  constructor(isUndoStackEmpty?: boolean, isRedoStackEmpty?: boolean);
10
11
  }
11
12
  export declare class History {
13
+ private readonly store;
12
14
  readonly onHistoryChangedEmitter: Emitter<[HistoryChangedEvent]>;
13
- private readonly undoStack;
14
- private readonly redoStack;
15
+ readonly undoStack: HistoryEntry[];
16
+ readonly redoStack: HistoryEntry[];
15
17
  get isUndoStackEmpty(): boolean;
16
18
  get isRedoStackEmpty(): boolean;
19
+ constructor(store: Store);
17
20
  clear(): void;
18
21
  /**
19
- * Record a local change which will go into the history
22
+ * Record a non-empty local durable increment, which will go into the undo stack..
23
+ * Do not re-record history entries, which were already pushed to undo / redo stack, as part of history action.
20
24
  */
21
- record(elementsChange: ElementsChange, appStateChange: AppStateChange): void;
22
- undo(elements: SceneElementsMap, appState: AppState, snapshot: Readonly<Snapshot>): void | [SceneElementsMap, AppState];
23
- redo(elements: SceneElementsMap, appState: AppState, snapshot: Readonly<Snapshot>): void | [SceneElementsMap, AppState];
25
+ record(delta: StoreDelta): void;
26
+ undo(elements: SceneElementsMap, appState: AppState): void | [SceneElementsMap, AppState];
27
+ redo(elements: SceneElementsMap, appState: AppState): void | [SceneElementsMap, AppState];
24
28
  private perform;
25
29
  private static pop;
26
30
  private static push;
27
31
  }
28
- export declare class HistoryEntry {
29
- readonly appStateChange: AppStateChange;
30
- readonly elementsChange: ElementsChange;
31
- private constructor();
32
- static create(appStateChange: AppStateChange, elementsChange: ElementsChange): HistoryEntry;
33
- inverse(): HistoryEntry;
34
- applyTo(elements: SceneElementsMap, appState: AppState, snapshot: Readonly<Snapshot>): [SceneElementsMap, AppState, boolean];
35
- /**
36
- * Apply latest (remote) changes to the history entry, creates new instance of `HistoryEntry`.
37
- */
38
- applyLatestChanges(elements: SceneElementsMap): HistoryEntry;
39
- isEmpty(): boolean;
40
- }
32
+ export {};
@@ -1,2 +1,2 @@
1
- import type { Emitter } from "../emitter";
1
+ import type { Emitter } from "@excalidraw/common";
2
2
  export declare const useEmitter: <TEvent extends unknown>(emitter: Emitter<[TEvent]>, initialState: TEvent) => TEvent;
@@ -9,20 +9,20 @@ import "./fonts/fonts.css";
9
9
  import type { ExcalidrawProps } from "./types";
10
10
  export declare const Excalidraw: React.MemoExoticComponent<(props: ExcalidrawProps) => import("react/jsx-runtime").JSX.Element>;
11
11
  export { getSceneVersion, hashElementsVersion, hashString, getNonDeletedElements, } from "@excalidraw/element";
12
- export { getTextFromElements } from "@excalidraw/element/textElement";
13
- export { isInvisiblySmallElement } from "@excalidraw/element/sizeHelpers";
12
+ export { getTextFromElements } from "@excalidraw/element";
13
+ export { isInvisiblySmallElement } from "@excalidraw/element";
14
14
  export { defaultLang, useI18n, languages } from "./i18n";
15
15
  export { restore, restoreAppState, restoreElements, restoreLibraryItems, } from "./data/restore";
16
16
  export { reconcileElements } from "./data/reconcile";
17
17
  export { exportToCanvas, exportToBlob, exportToSvg, exportToClipboard, } from "@excalidraw/utils/export";
18
18
  export { serializeAsJSON, serializeLibraryAsJSON } from "./data/json";
19
19
  export { loadFromBlob, loadSceneOrLibraryFromBlob, loadLibraryFromBlob, } from "./data/blob";
20
- export { getFreeDrawSvgPath } from "@excalidraw/element/renderElement";
20
+ export { getFreeDrawSvgPath } from "@excalidraw/element";
21
21
  export { mergeLibraryItems, getLibraryItemsHash } from "./data/library";
22
- export { isLinearElement } from "@excalidraw/element/typeChecks";
22
+ export { isLinearElement } from "@excalidraw/element";
23
23
  export { FONT_FAMILY, THEME, MIME_TYPES, ROUNDNESS, DEFAULT_LASER_COLOR, UserIdleState, normalizeLink, } from "@excalidraw/common";
24
- export { mutateElement, newElementWith, bumpVersion, } from "@excalidraw/element/mutateElement";
25
- export { CaptureUpdateAction } from "./store";
24
+ export { mutateElement, newElementWith, bumpVersion, } from "@excalidraw/element";
25
+ export { CaptureUpdateAction } from "@excalidraw/element";
26
26
  export { parseLibraryTokensFromUrl, useHandleLibrary } from "./data/library";
27
27
  export { sceneCoordsToViewportCoords, viewportCoordsToSceneCoords, } from "@excalidraw/common";
28
28
  export { Sidebar } from "./components/Sidebar/Sidebar";
@@ -38,9 +38,9 @@ export { TTDDialog } from "./components/TTDDialog/TTDDialog";
38
38
  export { TTDDialogTrigger } from "./components/TTDDialog/TTDDialogTrigger";
39
39
  export { zoomToFitBounds } from "./actions/actionCanvas";
40
40
  export { convertToExcalidrawElements } from "./data/transform";
41
- export { getCommonBounds, getVisibleSceneBounds, } from "@excalidraw/element/bounds";
41
+ export { getCommonBounds, getVisibleSceneBounds } from "@excalidraw/element";
42
42
  export { elementsOverlappingBBox, isElementInsideBBox, elementPartiallyOverlapsWithOrContainsBBox, } from "@excalidraw/utils/withinBounds";
43
43
  export { DiagramToCodePlugin } from "./components/DiagramToCodePlugin/DiagramToCodePlugin";
44
44
  export { getDataURL } from "./data/blob";
45
- export { isElementLink } from "@excalidraw/element/elementLink";
46
- export { setCustomTextMetricsProvider } from "@excalidraw/element/textMeasurements";
45
+ export { isElementLink } from "@excalidraw/element";
46
+ export { setCustomTextMetricsProvider } from "@excalidraw/element";
@@ -5,6 +5,7 @@ export declare class LassoTrail extends AnimatedTrail {
5
5
  private intersectedElements;
6
6
  private enclosedElements;
7
7
  private elementsSegments;
8
+ private canvasTranslate;
8
9
  private keepPreviousSelection;
9
10
  constructor(animationFrameHandler: AnimationFrameHandler, app: App);
10
11
  startPath(x: number, y: number, keepPreviousSelection?: boolean): void;
@@ -1,5 +1,6 @@
1
+ import type { ExcalidrawDiamondElement, ExcalidrawRectanguloidElement } from "@excalidraw/element/types";
1
2
  import type { StaticCanvasRenderConfig } from "../scene/types";
2
- import type { StaticCanvasAppState, AppState } from "../types";
3
+ import type { AppState, StaticCanvasAppState } from "../types";
3
4
  export declare const fillCircle: (context: CanvasRenderingContext2D, cx: number, cy: number, radius: number, stroke?: boolean) => void;
4
5
  export declare const getNormalizedCanvasDimensions: (canvas: HTMLCanvasElement, scale: number) => [number, number];
5
6
  export declare const bootstrapCanvas: ({ canvas, scale, normalizedWidth, normalizedHeight, theme, isExporting, viewBackgroundColor, }: {
@@ -11,3 +12,7 @@ export declare const bootstrapCanvas: ({ canvas, scale, normalizedWidth, normali
11
12
  isExporting?: boolean | undefined;
12
13
  viewBackgroundColor?: string | null | undefined;
13
14
  }) => CanvasRenderingContext2D;
15
+ export declare const drawHighlightForRectWithRotation: (context: CanvasRenderingContext2D, element: ExcalidrawRectanguloidElement, padding: number) => void;
16
+ export declare const strokeEllipseWithRotation: (context: CanvasRenderingContext2D, width: number, height: number, cx: number, cy: number, angle: number) => void;
17
+ export declare const strokeRectWithRotation: (context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, cx: number, cy: number, angle: number, fill?: boolean, radius?: number) => void;
18
+ export declare const drawHighlightForDiamondWithRotation: (context: CanvasRenderingContext2D, padding: number, element: ExcalidrawDiamondElement) => void;
@@ -1,5 +1,5 @@
1
1
  import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
- import type Scene from "./Scene";
2
+ import type { Scene } from "@excalidraw/element";
3
3
  import type { AppState } from "../types";
4
4
  export declare class Renderer {
5
5
  private scene;
@@ -1,4 +1,4 @@
1
- export { isSomeElementSelected, getElementsWithinSelection, getCommonAttributeOfSelectedElements, getSelectedElements, getTargetElements, } from "@excalidraw/element/selection";
1
+ export { isSomeElementSelected, getElementsWithinSelection, getSelectedElements, getTargetElements, } from "@excalidraw/element";
2
2
  export { calculateScrollCenter } from "./scroll";
3
- export { hasBackground, hasStrokeWidth, hasStrokeStyle, canHaveArrowheads, canChangeRoundness, } from "@excalidraw/element/comparisons";
3
+ export { hasBackground, hasStrokeWidth, hasStrokeStyle, canHaveArrowheads, canChangeRoundness, } from "@excalidraw/element";
4
4
  export { getNormalizedZoom, getNormalizedGridSize, getNormalizedGridStep, } from "./normalize";
@@ -1,7 +1,7 @@
1
1
  import { type GlobalPoint } from "@excalidraw/math";
2
2
  import type { InclusiveRange } from "@excalidraw/math";
3
- import type { Bounds } from "@excalidraw/element/bounds";
4
- import type { MaybeTransformHandleType } from "@excalidraw/element/transformHandles";
3
+ import type { Bounds } from "@excalidraw/element";
4
+ import type { MaybeTransformHandleType } from "@excalidraw/element";
5
5
  import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
6
6
  import type { AppClassProperties, AppState, KeyboardModifiersObject } from "./types";
7
7
  export declare const getSnapDistance: (zoomValue: number) => number;
@@ -1,9 +1,10 @@
1
1
  import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES, ColorTuple } from "@excalidraw/common";
2
- import type { SuggestedBinding } from "@excalidraw/element/binding";
3
- import type { LinearElementEditor } from "@excalidraw/element/linearElementEditor";
4
- import type { MaybeTransformHandleType } from "@excalidraw/element/transformHandles";
2
+ import type { SuggestedBinding } from "@excalidraw/element";
3
+ import type { LinearElementEditor } from "@excalidraw/element";
4
+ import type { MaybeTransformHandleType } from "@excalidraw/element";
5
5
  import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, ExcalidrawImageElement, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement, ExcalidrawNonSelectionElement, ArrangeAlgorithms } from "@excalidraw/element/types";
6
6
  import type { Merge, MaybePromise, ValueOf, MakeBrand } from "@excalidraw/common/utility-types";
7
+ import type { CaptureUpdateActionType, DurableIncrement, EphemeralIncrement } from "@excalidraw/element";
7
8
  import type { Action } from "./actions/types";
8
9
  import type { Spreadsheet } from "./charts";
9
10
  import type { ClipboardData } from "./clipboard";
@@ -12,7 +13,6 @@ import type Library from "./data/library";
12
13
  import type { FileSystemHandle } from "./data/filesystem";
13
14
  import type { ContextMenuItems } from "./components/ContextMenu";
14
15
  import type { SnapLine } from "./snapping";
15
- import type { CaptureUpdateActionType } from "./store";
16
16
  import type { ImportedDataState } from "./data/types";
17
17
  import type { Language } from "./i18n";
18
18
  import type { isOverScrollBars } from "./scene/scrollbars";
@@ -349,9 +349,13 @@ export interface AppState {
349
349
  /** image cropping */
350
350
  isCropping: boolean;
351
351
  croppingElementId: ExcalidrawElement["id"] | null;
352
- searchMatches: readonly SearchMatch[];
352
+ /** null if no search matches found / search closed */
353
+ searchMatches: Readonly<{
354
+ focusedId: ExcalidrawElement["id"] | null;
355
+ matches: readonly SearchMatch[];
356
+ }> | null;
353
357
  }
354
- type SearchMatch = {
358
+ export type SearchMatch = {
355
359
  id: string;
356
360
  focus: boolean;
357
361
  matchedLines: {
@@ -359,6 +363,7 @@ type SearchMatch = {
359
363
  offsetY: number;
360
364
  width: number;
361
365
  height: number;
366
+ showOnCanvas: boolean;
362
367
  }[];
363
368
  };
364
369
  export type UIAppState = Omit<AppState, "suggestedBindings" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
@@ -411,6 +416,7 @@ export type OnUserFollowedPayload = {
411
416
  };
412
417
  export interface ExcalidrawProps {
413
418
  onChange?: (elements: readonly OrderedExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
419
+ onIncrement?: (event: DurableIncrement | EphemeralIncrement) => void;
414
420
  initialData?: (() => MaybePromise<ExcalidrawInitialDataState | null>) | MaybePromise<ExcalidrawInitialDataState | null>;
415
421
  excalidrawAPI?: (api: ExcalidrawImperativeAPI) => void;
416
422
  isCollaborating?: boolean;
@@ -556,6 +562,7 @@ export type AppClassProperties = {
556
562
  visibleElements: App["visibleElements"];
557
563
  excalidrawContainerValue: App["excalidrawContainerValue"];
558
564
  onPointerUpEmitter: App["onPointerUpEmitter"];
565
+ updateEditorAtom: App["updateEditorAtom"];
559
566
  };
560
567
  export type PointerDownState = Readonly<{
561
568
  origin: Readonly<{
@@ -617,6 +624,7 @@ export type PointerDownState = Readonly<{
617
624
  export type UnsubscribeCallback = () => void;
618
625
  export interface ExcalidrawImperativeAPI {
619
626
  updateScene: InstanceType<typeof App>["updateScene"];
627
+ mutateElement: InstanceType<typeof App>["mutateElement"];
620
628
  updateLibrary: InstanceType<typeof Library>["updateLibrary"];
621
629
  resetScene: InstanceType<typeof App>["resetScene"];
622
630
  getSceneElementsIncludingDeleted: InstanceType<typeof App>["getSceneElementsIncludingDeleted"];
@@ -650,6 +658,7 @@ export interface ExcalidrawImperativeAPI {
650
658
  */
651
659
  updateFrameRendering: InstanceType<typeof App>["updateFrameRendering"];
652
660
  onChange: (callback: (elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles) => void) => UnsubscribeCallback;
661
+ onIncrement: (callback: (event: DurableIncrement | EphemeralIncrement) => void) => UnsubscribeCallback;
653
662
  onPointerDown: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: React.PointerEvent<HTMLElement>) => void) => UnsubscribeCallback;
654
663
  onPointerUp: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: PointerEvent) => void) => UnsubscribeCallback;
655
664
  onScrollChange: (callback: (scrollX: number, scrollY: number, zoom: Zoom) => void) => UnsubscribeCallback;
@@ -1,7 +1,7 @@
1
1
  import { type GlobalPoint, type LocalPoint } from "@excalidraw/math";
2
2
  import type { Curve } from "@excalidraw/math";
3
3
  import type { LineSegment } from "@excalidraw/utils";
4
- import type { Bounds } from "@excalidraw/element/bounds";
4
+ import type { Bounds } from "@excalidraw/element";
5
5
  declare global {
6
6
  interface Window {
7
7
  visualDebug?: {
@@ -1,5 +1,6 @@
1
1
  import type { ExcalidrawElement, ExcalidrawTextElement } from "@excalidraw/element/types";
2
2
  import type App from "../components/App";
3
+ type SubmitHandler = () => void;
3
4
  export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect, }: {
4
5
  id: ExcalidrawElement["id"];
5
6
  /**
@@ -19,4 +20,5 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
19
20
  excalidrawContainer: HTMLDivElement | null;
20
21
  app: App;
21
22
  autoSelect?: boolean | undefined;
22
- }) => void;
23
+ }) => SubmitHandler;
24
+ export {};
@@ -8,6 +8,7 @@ import type { Curve, GlobalPoint, LineSegment, LocalPoint } from "./types";
8
8
  * @returns
9
9
  */
10
10
  export declare function curve<Point extends GlobalPoint | LocalPoint>(a: Point, b: Point, c: Point, d: Point): Curve<Point>;
11
+ export declare const bezierEquation: <Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, t: number) => Point;
11
12
  /**
12
13
  * Computes the intersection between a cubic spline and a line segment.
13
14
  */
@@ -38,3 +39,4 @@ export declare function curvePointDistance<Point extends GlobalPoint | LocalPoin
38
39
  * Determines if the parameter is a Curve
39
40
  */
40
41
  export declare function isCurve<P extends GlobalPoint | LocalPoint>(v: unknown): v is Curve<P>;
42
+ export declare function curveTangent<Point extends GlobalPoint | LocalPoint>([p0, p1, p2, p3]: Curve<Point>, t: number): import("./types").Vector;
@@ -86,3 +86,7 @@ export declare function vectorMagnitude(v: Vector): number;
86
86
  * @returns The new normalized vector
87
87
  */
88
88
  export declare const vectorNormalize: (v: Vector) => Vector;
89
+ /**
90
+ * Calculate the right-hand normal of the vector.
91
+ */
92
+ export declare const vectorNormal: (v: Vector) => Vector;
@@ -1,5 +1,5 @@
1
1
  import { type GlobalPoint, type LocalPoint } from "@excalidraw/math";
2
- import type { Bounds } from "@excalidraw/element/bounds";
2
+ import type { Bounds } from "@excalidraw/element";
3
3
  export type LineSegment<P extends LocalPoint | GlobalPoint> = [P, P];
4
4
  export declare function getBBox<P extends LocalPoint | GlobalPoint>(line: LineSegment<P>): Bounds;
5
5
  export declare function doBBoxesIntersect(a: Bounds, b: Bounds): boolean;
@@ -1,4 +1,4 @@
1
1
  export * from "./export";
2
2
  export * from "./withinBounds";
3
3
  export * from "./bbox";
4
- export { getCommonBounds } from "@excalidraw/element/bounds";
4
+ export { getCommonBounds } from "@excalidraw/element";
@@ -1,4 +1,4 @@
1
- import type { Bounds } from "@excalidraw/element/bounds";
1
+ import type { Bounds } from "@excalidraw/element";
2
2
  import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
3
3
  type Element = NonDeletedExcalidrawElement;
4
4
  type Elements = readonly NonDeletedExcalidrawElement[];