@excalidraw/excalidraw 0.18.0-c4c0649 → 0.18.0-c6f8ef9

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 (130) hide show
  1. package/dist/dev/chunk-CP5DND7P.js +7 -0
  2. package/dist/dev/chunk-CP5DND7P.js.map +7 -0
  3. package/dist/dev/chunk-CRKRRBMD.js +5677 -0
  4. package/dist/dev/chunk-CRKRRBMD.js.map +7 -0
  5. package/dist/dev/{chunk-JCUIYZXF.js → chunk-QF5FRM6O.js} +6 -2
  6. package/dist/dev/chunk-QF5FRM6O.js.map +7 -0
  7. package/dist/dev/data/{image-SLEZBMLG.js → image-IWGLHPIX.js} +3 -3
  8. package/dist/dev/index.css +51 -20
  9. package/dist/dev/index.css.map +3 -3
  10. package/dist/dev/index.js +6874 -4280
  11. package/dist/dev/index.js.map +4 -4
  12. package/dist/dev/locales/{en-ZDTPSZNL.js → en-SMAPCEOQ.js} +2 -2
  13. package/dist/dev/subset-shared.chunk.js +1 -1
  14. package/dist/dev/subset-worker.chunk.js +1 -1
  15. package/dist/prod/chunk-A66AFZZU.js +7 -0
  16. package/dist/prod/chunk-HHV2PJKY.js +4 -0
  17. package/dist/prod/{chunk-GCFVWREF.js → chunk-I4UNSFV6.js} +4 -4
  18. package/dist/prod/data/image-4SM4COIL.js +1 -0
  19. package/dist/prod/index.css +1 -1
  20. package/dist/prod/index.js +25 -18
  21. package/dist/prod/locales/{en-MHZ26NAR.js → en-TYY6KWIJ.js} +1 -1
  22. package/dist/prod/subset-shared.chunk.js +1 -1
  23. package/dist/prod/subset-worker.chunk.js +1 -1
  24. package/dist/types/common/src/constants.d.ts +19 -3
  25. package/dist/types/common/src/utils.d.ts +3 -5
  26. package/dist/types/element/src/Scene.d.ts +7 -3
  27. package/dist/types/element/src/align.d.ts +2 -1
  28. package/dist/types/element/src/binding.d.ts +10 -7
  29. package/dist/types/element/src/bounds.d.ts +11 -3
  30. package/dist/types/element/src/collision.d.ts +18 -12
  31. package/dist/types/element/src/cropElement.d.ts +1 -1
  32. package/dist/types/element/src/delta.d.ts +42 -9
  33. package/dist/types/element/src/distance.d.ts +2 -2
  34. package/dist/types/element/src/distribute.d.ts +2 -1
  35. package/dist/types/element/src/fractionalIndex.d.ts +8 -2
  36. package/dist/types/element/src/frame.d.ts +2 -2
  37. package/dist/types/element/src/groups.d.ts +1 -0
  38. package/dist/types/element/src/index.d.ts +1 -3
  39. package/dist/types/element/src/linearElementEditor.d.ts +14 -23
  40. package/dist/types/element/src/mutateElement.d.ts +1 -1
  41. package/dist/types/element/src/newElement.d.ts +2 -1
  42. package/dist/types/element/src/resizeElements.d.ts +1 -0
  43. package/dist/types/element/src/selection.d.ts +1 -1
  44. package/dist/types/element/src/shape.d.ts +42 -0
  45. package/dist/types/element/src/sizeHelpers.d.ts +2 -1
  46. package/dist/types/element/src/store.d.ts +19 -9
  47. package/dist/types/element/src/transformHandles.d.ts +4 -4
  48. package/dist/types/element/src/typeChecks.d.ts +15 -1
  49. package/dist/types/element/src/types.d.ts +8 -3
  50. package/dist/types/element/src/utils.d.ts +16 -6
  51. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +21 -15
  52. package/dist/types/excalidraw/actions/actionAlign.d.ts +8 -8
  53. package/dist/types/excalidraw/actions/actionBoundText.d.ts +14 -10
  54. package/dist/types/excalidraw/actions/actionCanvas.d.ts +180 -154
  55. package/dist/types/excalidraw/actions/actionClipboard.d.ts +50 -36
  56. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +7 -5
  57. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +27 -20
  58. package/dist/types/excalidraw/actions/actionDistribute.d.ts +4 -4
  59. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -2
  60. package/dist/types/excalidraw/actions/actionElementLink.d.ts +6 -4
  61. package/dist/types/excalidraw/actions/actionElementLock.d.ts +29 -26
  62. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +7 -5
  63. package/dist/types/excalidraw/actions/actionExport.d.ts +147 -129
  64. package/dist/types/excalidraw/actions/actionFinalize.d.ts +65 -20
  65. package/dist/types/excalidraw/actions/actionFlip.d.ts +4 -4
  66. package/dist/types/excalidraw/actions/actionFrame.d.ts +78 -70
  67. package/dist/types/excalidraw/actions/actionGroup.d.ts +20 -16
  68. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +533 -7
  69. package/dist/types/excalidraw/actions/actionLink.d.ts +8 -6
  70. package/dist/types/excalidraw/actions/actionMenu.d.ts +22 -16
  71. package/dist/types/excalidraw/actions/actionNavigate.d.ts +14 -10
  72. package/dist/types/excalidraw/actions/actionProperties.d.ts +119 -81
  73. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +10 -8
  74. package/dist/types/excalidraw/actions/actionStyles.d.ts +11 -9
  75. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +9 -7
  76. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +9 -7
  77. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +8 -6
  78. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +9 -7
  79. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +9 -7
  80. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +9 -7
  81. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -8
  82. package/dist/types/excalidraw/actions/types.d.ts +2 -1
  83. package/dist/types/excalidraw/appState.d.ts +29 -20
  84. package/dist/types/excalidraw/components/Actions.d.ts +0 -4
  85. package/dist/types/excalidraw/components/App.d.ts +15 -16
  86. package/dist/types/excalidraw/components/ButtonIcon.d.ts +1 -0
  87. package/dist/types/excalidraw/components/Ellipsify.d.ts +4 -0
  88. package/dist/types/excalidraw/components/{ButtonIconSelect.d.ts → RadioSelection.d.ts} +1 -1
  89. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +11 -1
  90. package/dist/types/excalidraw/components/UnlockPopup.d.ts +8 -0
  91. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -0
  92. package/dist/types/excalidraw/components/icons.d.ts +2 -0
  93. package/dist/types/excalidraw/components/shapes.d.ts +1 -1
  94. package/dist/types/excalidraw/data/blob.d.ts +1 -1
  95. package/dist/types/excalidraw/data/reconcile.d.ts +1 -0
  96. package/dist/types/excalidraw/data/restore.d.ts +6 -1
  97. package/dist/types/excalidraw/eraser/index.d.ts +0 -2
  98. package/dist/types/excalidraw/history.d.ts +21 -5
  99. package/dist/types/excalidraw/index.d.ts +2 -1
  100. package/dist/types/excalidraw/lasso/index.d.ts +1 -0
  101. package/dist/types/excalidraw/lasso/utils.d.ts +2 -1
  102. package/dist/types/excalidraw/renderer/helpers.d.ts +4 -4
  103. package/dist/types/excalidraw/renderer/staticScene.d.ts +4 -1
  104. package/dist/types/excalidraw/scene/Renderer.d.ts +0 -1
  105. package/dist/types/excalidraw/types.d.ts +15 -8
  106. package/dist/types/math/src/angle.d.ts +2 -0
  107. package/dist/types/math/src/constants.d.ts +3 -0
  108. package/dist/types/math/src/curve.d.ts +32 -0
  109. package/dist/types/math/src/index.d.ts +1 -0
  110. package/dist/types/math/src/point.d.ts +1 -1
  111. package/dist/types/math/src/rectangle.d.ts +2 -0
  112. package/dist/types/math/src/vector.d.ts +4 -2
  113. package/history.ts +107 -44
  114. package/package.json +12 -9
  115. package/dist/dev/chunk-HNRFOURL.js +0 -23482
  116. package/dist/dev/chunk-HNRFOURL.js.map +0 -7
  117. package/dist/dev/chunk-JCUIYZXF.js.map +0 -7
  118. package/dist/dev/chunk-VKWYDXFZ.js +0 -7
  119. package/dist/dev/chunk-VKWYDXFZ.js.map +0 -7
  120. package/dist/prod/chunk-G6SRO7HP.js +0 -7
  121. package/dist/prod/chunk-M3D5LUUK.js +0 -33
  122. package/dist/prod/data/image-PMKVN4IF.js +0 -1
  123. package/dist/types/element/src/Shape.d.ts +0 -17
  124. package/dist/types/element/src/ShapeCache.d.ts +0 -25
  125. package/dist/types/element/src/shapes.d.ts +0 -23
  126. package/dist/types/excalidraw/components/ButtonSelect.d.ts +0 -9
  127. package/dist/types/excalidraw/visualdebug.d.ts +0 -41
  128. package/dist/types/utils/src/collision.d.ts +0 -8
  129. /package/dist/dev/data/{image-SLEZBMLG.js.map → image-IWGLHPIX.js.map} +0 -0
  130. /package/dist/dev/locales/{en-ZDTPSZNL.js.map → en-SMAPCEOQ.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import type { MarkOptional } from "@excalidraw/common/utility-types";
2
- import type { ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap, ExcalidrawArrowElement, ExcalidrawElbowArrowElement } from "./types";
2
+ import type { ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap, ExcalidrawArrowElement, ExcalidrawElbowArrowElement, ExcalidrawLineElement } from "./types";
3
3
  export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "index" | "boundElements" | "seed" | "version" | "versionNonce" | "link" | "strokeStyle" | "fillStyle" | "strokeColor" | "backgroundColor" | "roughness" | "strokeWidth" | "roundness" | "locked" | "opacity" | "customData">;
4
4
  export declare const newElement: (opts: {
5
5
  type: ExcalidrawGenericElement["type"];
@@ -43,6 +43,7 @@ export declare const newFreeDrawElement: (opts: {
43
43
  export declare const newLinearElement: (opts: {
44
44
  type: ExcalidrawLinearElement["type"];
45
45
  points?: ExcalidrawLinearElement["points"];
46
+ polygon?: ExcalidrawLineElement["polygon"];
46
47
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawLinearElement>;
47
48
  export declare const newArrowElement: <T extends boolean>(opts: {
48
49
  type: ExcalidrawArrowElement["type"];
@@ -13,6 +13,7 @@ export declare const rescalePointsInElement: (element: NonDeletedExcalidrawEleme
13
13
  export declare const measureFontSizeFromWidth: (element: NonDeleted<ExcalidrawTextElement>, elementsMap: ElementsMap, nextWidth: number) => {
14
14
  size: number;
15
15
  } | null;
16
+ export declare const resizeSingleTextElement: (origElement: NonDeleted<ExcalidrawTextElement>, element: NonDeleted<ExcalidrawTextElement>, scene: Scene, transformHandleType: TransformHandleDirection, shouldResizeFromCenter: boolean, nextWidth: number, nextHeight: number) => void;
16
17
  export declare const getResizeOffsetXY: (transformHandleType: MaybeTransformHandleType, selectedElements: NonDeletedExcalidrawElement[], elementsMap: ElementsMap, x: number, y: number) => [number, number];
17
18
  export declare const getResizeArrowDirection: (transformHandleType: MaybeTransformHandleType, element: NonDeleted<ExcalidrawLinearElement>) => "origin" | "end";
18
19
  export declare const resizeSingleElement: (nextWidth: number, nextHeight: number, latestElement: ExcalidrawElement, origElement: ExcalidrawElement, originalElementsMap: ElementsMap, scene: Scene, handleDirection: TransformHandleDirection, { shouldInformMutation, shouldMaintainAspectRatio, shouldResizeFromCenter, }?: {
@@ -27,12 +27,12 @@ export declare const makeNextSelectedElementIds: (nextSelectedElementIds: AppSta
27
27
  [id: string]: true;
28
28
  }>;
29
29
  export declare const getSelectionStateForElements: (targetElements: readonly ExcalidrawElement[], allElements: readonly NonDeletedExcalidrawElement[], appState: AppState) => {
30
+ editingGroupId: string | null;
30
31
  selectedElementIds: Readonly<{
31
32
  [id: string]: true;
32
33
  }>;
33
34
  selectedGroupIds: {
34
35
  [groupId: string]: boolean;
35
36
  };
36
- editingGroupId: string | null;
37
37
  selectedLinearElement: LinearElementEditor | null;
38
38
  };
@@ -0,0 +1,42 @@
1
+ import { type GeometricShape } from "@excalidraw/utils/shape";
2
+ import { type LocalPoint } from "@excalidraw/math";
3
+ import type { GlobalPoint } from "@excalidraw/math";
4
+ import type { AppState, EmbedsValidationStatus } from "@excalidraw/excalidraw/types";
5
+ import type { ElementShape, ElementShapes } from "@excalidraw/excalidraw/scene/types";
6
+ import type { ExcalidrawElement, ExcalidrawLinearElement, ExcalidrawFreeDrawElement, ElementsMap, ExcalidrawLineElement } from "./types";
7
+ import type { Drawable, Options } from "roughjs/bin/core";
8
+ export declare class ShapeCache {
9
+ private static rg;
10
+ private static cache;
11
+ /**
12
+ * Retrieves shape from cache if available. Use this only if shape
13
+ * is optional and you have a fallback in case it's not cached.
14
+ */
15
+ static get: <T extends ExcalidrawElement>(element: T) => T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] | undefined : ElementShape | undefined;
16
+ static set: <T extends ExcalidrawElement>(element: T, shape: T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] : Drawable) => WeakMap<ExcalidrawElement, ElementShape>;
17
+ static delete: (element: ExcalidrawElement) => boolean;
18
+ static destroy: () => void;
19
+ /**
20
+ * Generates & caches shape for element if not already cached, otherwise
21
+ * returns cached shape.
22
+ */
23
+ static generateElementShape: <T extends ExcalidrawLinearElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawEllipseElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawTextElement | ExcalidrawFreeDrawElement | import("./types").ExcalidrawArrowElement>(element: T, renderConfig: {
24
+ isExporting: boolean;
25
+ canvasBackgroundColor: AppState["viewBackgroundColor"];
26
+ embedsValidationStatus: EmbedsValidationStatus;
27
+ } | null) => ((T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] | undefined : ElementShape | undefined) & ({} | null)) | (T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] : Drawable | null);
28
+ }
29
+ export declare const generateRoughOptions: (element: ExcalidrawElement, continuousPath?: boolean) => Options;
30
+ export declare const generateLinearCollisionShape: (element: ExcalidrawLinearElement | ExcalidrawFreeDrawElement) => {
31
+ op: string;
32
+ data: number[];
33
+ }[];
34
+ /**
35
+ * get the pure geometric shape of an excalidraw elementw
36
+ * which is then used for hit detection
37
+ */
38
+ export declare const getElementShape: <Point extends GlobalPoint | LocalPoint>(element: ExcalidrawElement, elementsMap: ElementsMap) => GeometricShape<Point>;
39
+ export declare const toggleLinePolygonState: (element: ExcalidrawLineElement, nextPolygonState: boolean) => {
40
+ polygon: ExcalidrawLineElement["polygon"];
41
+ points: ExcalidrawLineElement["points"];
42
+ } | null;
@@ -1,5 +1,6 @@
1
1
  import type { AppState, Offsets, Zoom } from "@excalidraw/excalidraw/types";
2
2
  import type { ElementsMap, ExcalidrawElement } from "./types";
3
+ export declare const INVISIBLY_SMALL_ELEMENT_SIZE = 0.1;
3
4
  export declare const isInvisiblySmallElement: (element: ExcalidrawElement) => boolean;
4
5
  export declare const isElementInViewport: (element: ExcalidrawElement, width: number, height: number, viewTransformations: {
5
6
  zoom: Zoom;
@@ -22,7 +23,7 @@ export declare const getPerfectElementSize: (elementType: AppState["activeTool"]
22
23
  width: number;
23
24
  height: number;
24
25
  };
25
- export declare const getLockedLinearCursorAlignSize: (originX: number, originY: number, x: number, y: number) => {
26
+ export declare const getLockedLinearCursorAlignSize: (originX: number, originY: number, x: number, y: number, customAngle?: number) => {
26
27
  width: number;
27
28
  height: number;
28
29
  };
@@ -3,7 +3,8 @@ import type App from "@excalidraw/excalidraw/components/App";
3
3
  import type { DTO, ValueOf } from "@excalidraw/common/utility-types";
4
4
  import type { AppState, ObservedAppState } from "@excalidraw/excalidraw/types";
5
5
  import { ElementsDelta, AppStateDelta } from "./delta";
6
- import type { OrderedExcalidrawElement, SceneElementsMap } from "./types";
6
+ import type { ApplyToOptions } from "./delta";
7
+ import type { ExcalidrawElement, OrderedExcalidrawElement, SceneElementsMap } from "./types";
7
8
  export declare const CaptureUpdateAction: {
8
9
  /**
9
10
  * Immediately undoable.
@@ -60,7 +61,7 @@ export declare class Store {
60
61
  */
61
62
  scheduleMicroAction(params: {
62
63
  action: CaptureUpdateActionType;
63
- elements: SceneElementsMap | undefined;
64
+ elements: readonly ExcalidrawElement[] | undefined;
64
65
  appState: AppState | ObservedAppState | undefined;
65
66
  } | {
66
67
  action: typeof CaptureUpdateAction.IMMEDIATELY;
@@ -157,6 +158,10 @@ export declare class StoreDelta {
157
158
  static create(elements: ElementsDelta, appState: AppStateDelta, opts?: {
158
159
  id: string;
159
160
  }): StoreDelta;
161
+ /**
162
+ * Calculate the delta between the previous and next snapshot.
163
+ */
164
+ static calculate(prevSnapshot: StoreSnapshot, nextSnapshot: StoreSnapshot): StoreDelta;
160
165
  /**
161
166
  * Restore a store delta instance from a DTO.
162
167
  */
@@ -164,19 +169,24 @@ export declare class StoreDelta {
164
169
  /**
165
170
  * Parse and load the delta from the remote payload.
166
171
  */
167
- static load({ id, elements: { added, removed, updated }, }: DTO<StoreDelta>): StoreDelta;
172
+ static load({ id, elements: { added, removed, updated }, appState: { delta: appStateDelta }, }: DTO<StoreDelta>): StoreDelta;
173
+ /**
174
+ * Squash the passed deltas into the aggregated delta instance.
175
+ */
176
+ static squash(...deltas: StoreDelta[]): StoreDelta;
168
177
  /**
169
178
  * Inverse store delta, creates new instance of `StoreDelta`.
170
179
  */
171
180
  static inverse(delta: StoreDelta): StoreDelta;
172
181
  /**
173
- * Apply latest (remote) changes to the delta, creates new instance of `StoreDelta`.
182
+ * Apply the delta to the passed elements and appState, does not modify the snapshot.
174
183
  */
175
- static applyLatestChanges(delta: StoreDelta, elements: SceneElementsMap, modifierOptions: "deleted" | "inserted"): StoreDelta;
184
+ static applyTo(delta: StoreDelta, elements: SceneElementsMap, appState: AppState, options?: ApplyToOptions): [SceneElementsMap, AppState, boolean];
176
185
  /**
177
- * Apply the delta to the passed elements and appState, does not modify the snapshot.
186
+ * Apply latest (remote) changes to the delta, creates new instance of `StoreDelta`.
178
187
  */
179
- static applyTo(delta: StoreDelta, elements: SceneElementsMap, appState: AppState, prevSnapshot?: StoreSnapshot): [SceneElementsMap, AppState, boolean];
188
+ static applyLatestChanges(delta: StoreDelta, prevElements: SceneElementsMap, nextElements: SceneElementsMap, modifierOptions?: "deleted" | "inserted"): StoreDelta;
189
+ static empty(): StoreDelta;
180
190
  isEmpty(): boolean;
181
191
  }
182
192
  /**
@@ -216,7 +226,7 @@ export declare class StoreSnapshot {
216
226
  private maybeCreateElementsSnapshot;
217
227
  private detectChangedAppState;
218
228
  /**
219
- * Detect if there any changed elements.
229
+ * Detect if there are any changed elements.
220
230
  */
221
231
  private detectChangedElements;
222
232
  /**
@@ -224,4 +234,4 @@ export declare class StoreSnapshot {
224
234
  */
225
235
  private createElementsSnapshot;
226
236
  }
227
- export declare const getObservedAppState: (appState: AppState) => ObservedAppState;
237
+ export declare const getObservedAppState: (appState: AppState | ObservedAppState) => ObservedAppState;
@@ -32,9 +32,9 @@ export declare const canResizeFromSides: (device: Device) => boolean;
32
32
  export declare const getOmitSidesForDevice: (device: Device) => {};
33
33
  export declare const getTransformHandlesFromCoords: ([x1, y1, x2, y2, cx, cy]: [number, number, number, number, number, number], angle: Radians, zoom: Zoom, pointerType: PointerType, omitSides?: {
34
34
  s?: boolean | undefined;
35
- e?: boolean | undefined;
36
- w?: boolean | undefined;
37
35
  n?: boolean | undefined;
36
+ w?: boolean | undefined;
37
+ e?: boolean | undefined;
38
38
  nw?: boolean | undefined;
39
39
  ne?: boolean | undefined;
40
40
  sw?: boolean | undefined;
@@ -43,9 +43,9 @@ export declare const getTransformHandlesFromCoords: ([x1, y1, x2, y2, cx, cy]: [
43
43
  }, margin?: number, spacing?: number) => TransformHandles;
44
44
  export declare const getTransformHandles: (element: ExcalidrawElement, zoom: Zoom, elementsMap: ElementsMap, pointerType?: PointerType, omitSides?: {
45
45
  s?: boolean | undefined;
46
- e?: boolean | undefined;
47
- w?: boolean | undefined;
48
46
  n?: boolean | undefined;
47
+ w?: boolean | undefined;
48
+ e?: boolean | undefined;
49
49
  nw?: boolean | undefined;
50
50
  ne?: boolean | undefined;
51
51
  sw?: boolean | undefined;
@@ -1,7 +1,7 @@
1
1
  import type { ElementOrToolType } from "@excalidraw/excalidraw/types";
2
2
  import type { MarkNonNullable } from "@excalidraw/common/utility-types";
3
3
  import type { Bounds } from "./bounds";
4
- import type { ExcalidrawElement, ExcalidrawTextElement, ExcalidrawEmbeddableElement, ExcalidrawLinearElement, ExcalidrawBindableElement, ExcalidrawFreeDrawElement, InitializedExcalidrawImageElement, ExcalidrawImageElement, ExcalidrawTextElementWithContainer, ExcalidrawTextContainer, ExcalidrawFrameElement, RoundnessType, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeElement, ExcalidrawIframeLikeElement, ExcalidrawMagicFrameElement, ExcalidrawArrowElement, ExcalidrawElbowArrowElement, PointBinding, FixedPointBinding, ExcalidrawFlowchartNodeElement, ExcalidrawLinearElementSubType } from "./types";
4
+ import type { ExcalidrawElement, ExcalidrawTextElement, ExcalidrawEmbeddableElement, ExcalidrawLinearElement, ExcalidrawBindableElement, ExcalidrawFreeDrawElement, InitializedExcalidrawImageElement, ExcalidrawImageElement, ExcalidrawTextElementWithContainer, ExcalidrawTextContainer, ExcalidrawFrameElement, RoundnessType, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeElement, ExcalidrawIframeLikeElement, ExcalidrawMagicFrameElement, ExcalidrawArrowElement, ExcalidrawElbowArrowElement, ExcalidrawLineElement, PointBinding, FixedPointBinding, ExcalidrawFlowchartNodeElement, ExcalidrawLinearElementSubType } from "./types";
5
5
  export declare const isInitializedImageElement: (element: ExcalidrawElement | null) => element is InitializedExcalidrawImageElement;
6
6
  export declare const isImageElement: (element: ExcalidrawElement | null) => element is ExcalidrawImageElement;
7
7
  export declare const isEmbeddableElement: (element: ExcalidrawElement | null | undefined) => element is ExcalidrawEmbeddableElement;
@@ -14,8 +14,13 @@ export declare const isFrameLikeElement: (element: ExcalidrawElement | null) =>
14
14
  export declare const isFreeDrawElement: (element?: ExcalidrawElement | null) => element is ExcalidrawFreeDrawElement;
15
15
  export declare const isFreeDrawElementType: (elementType: ExcalidrawElementType) => boolean;
16
16
  export declare const isLinearElement: (element?: ExcalidrawElement | null) => element is ExcalidrawLinearElement;
17
+ export declare const isLineElement: (element?: ExcalidrawElement | null) => element is ExcalidrawLineElement;
17
18
  export declare const isArrowElement: (element?: ExcalidrawElement | null) => element is ExcalidrawArrowElement;
18
19
  export declare const isElbowArrow: (element?: ExcalidrawElement) => element is ExcalidrawElbowArrowElement;
20
+ /**
21
+ * sharp or curved arrow, but not elbow
22
+ */
23
+ export declare const isSimpleArrow: (element?: ExcalidrawElement) => element is ExcalidrawArrowElement;
19
24
  export declare const isSharpArrow: (element?: ExcalidrawElement) => element is ExcalidrawArrowElement;
20
25
  export declare const isCurvedArrow: (element?: ExcalidrawElement) => element is ExcalidrawArrowElement;
21
26
  export declare const isLinearElementType: (elementType: ElementOrToolType) => boolean;
@@ -41,3 +46,12 @@ export declare const getDefaultRoundnessTypeForElement: (element: ExcalidrawElem
41
46
  export declare const isFixedPointBinding: (binding: PointBinding | FixedPointBinding) => binding is FixedPointBinding;
42
47
  export declare const isBounds: (box: unknown) => box is Bounds;
43
48
  export declare const getLinearElementSubType: (element: ExcalidrawLinearElement) => ExcalidrawLinearElementSubType;
49
+ /**
50
+ * Checks if current element points meet all the conditions for polygon=true
51
+ * (this isn't a element type check, for that use isLineElement).
52
+ *
53
+ * If you want to check if points *can* be turned into a polygon, use
54
+ * canBecomePolygon(points).
55
+ */
56
+ export declare const isValidPolygon: (points: ExcalidrawLineElement["points"]) => boolean;
57
+ export declare const canBecomePolygon: (points: ExcalidrawLineElement["points"]) => boolean;
@@ -151,7 +151,7 @@ export type ExcalidrawFrameLikeElement = ExcalidrawFrameElement | ExcalidrawMagi
151
151
  */
152
152
  export type ExcalidrawGenericElement = ExcalidrawSelectionElement | ExcalidrawRectangleElement | ExcalidrawDiamondElement | ExcalidrawEllipseElement;
153
153
  export type ExcalidrawFlowchartNodeElement = ExcalidrawRectangleElement | ExcalidrawDiamondElement | ExcalidrawEllipseElement;
154
- export type ExcalidrawRectanguloidElement = ExcalidrawRectangleElement | ExcalidrawImageElement | ExcalidrawTextElement | ExcalidrawFreeDrawElement | ExcalidrawIframeLikeElement | ExcalidrawFrameLikeElement | ExcalidrawEmbeddableElement;
154
+ export type ExcalidrawRectanguloidElement = ExcalidrawRectangleElement | ExcalidrawImageElement | ExcalidrawTextElement | ExcalidrawFreeDrawElement | ExcalidrawIframeLikeElement | ExcalidrawFrameLikeElement | ExcalidrawEmbeddableElement | ExcalidrawSelectionElement;
155
155
  /**
156
156
  * ExcalidrawElement should be JSON serializable and (eventually) contain
157
157
  * no computed data. The list of all ExcalidrawElements should be shareable
@@ -205,7 +205,8 @@ export type PointBinding = {
205
205
  export type FixedPointBinding = Merge<PointBinding, {
206
206
  fixedPoint: FixedPoint;
207
207
  }>;
208
- export type PointsPositionUpdates = Map<number, {
208
+ type Index = number;
209
+ export type PointsPositionUpdates = Map<Index, {
209
210
  point: LocalPoint;
210
211
  isDragging?: boolean;
211
212
  }>;
@@ -219,10 +220,14 @@ export type ExcalidrawLinearElement = _ExcalidrawElementBase & Readonly<{
219
220
  startArrowhead: Arrowhead | null;
220
221
  endArrowhead: Arrowhead | null;
221
222
  }>;
223
+ export type ExcalidrawLineElement = ExcalidrawLinearElement & Readonly<{
224
+ type: "line";
225
+ polygon: boolean;
226
+ }>;
222
227
  export type FixedSegment = {
223
228
  start: LocalPoint;
224
229
  end: LocalPoint;
225
- index: number;
230
+ index: Index;
226
231
  };
227
232
  export type ExcalidrawArrowElement = ExcalidrawLinearElement & Readonly<{
228
233
  type: "arrow";
@@ -1,21 +1,31 @@
1
1
  import { type GlobalPoint } from "@excalidraw/math";
2
2
  import type { Curve, LineSegment } from "@excalidraw/math";
3
- import type { ExcalidrawDiamondElement, ExcalidrawRectanguloidElement } from "./types";
3
+ import type { Zoom } from "@excalidraw/excalidraw/types";
4
+ import type { ExcalidrawDiamondElement, ExcalidrawElement, ExcalidrawFreeDrawElement, ExcalidrawLinearElement, ExcalidrawRectanguloidElement } from "./types";
5
+ /**
6
+ * Returns the **rotated** components of freedraw, line or arrow elements.
7
+ *
8
+ * @param element The linear element to deconstruct
9
+ * @returns The rotated in components.
10
+ */
11
+ export declare function deconstructLinearOrFreeDrawElement(element: ExcalidrawLinearElement | ExcalidrawFreeDrawElement): [LineSegment<GlobalPoint>[], Curve<GlobalPoint>[]];
4
12
  /**
5
13
  * Get the building components of a rectanguloid element in the form of
6
- * line segments and curves.
14
+ * line segments and curves **unrotated**.
7
15
  *
8
16
  * @param element Target rectanguloid element
9
17
  * @param offset Optional offset to expand the rectanguloid shape
10
- * @returns Tuple of line segments (0) and curves (1)
18
+ * @returns Tuple of **unrotated** line segments (0) and curves (1)
11
19
  */
12
20
  export declare function deconstructRectanguloidElement(element: ExcalidrawRectanguloidElement, offset?: number): [LineSegment<GlobalPoint>[], Curve<GlobalPoint>[]];
13
21
  /**
14
- * Get the building components of a diamond element in the form of
15
- * line segments and curves as a tuple, in this order.
22
+ * Get the **unrotated** building components of a diamond element
23
+ * in the form of line segments and curves as a tuple, in this order.
16
24
  *
17
25
  * @param element The element to deconstruct
18
26
  * @param offset An optional offset
19
- * @returns Tuple of line segments (0) and curves (1)
27
+ * @returns Tuple of line **unrotated** segments (0) and curves (1)
20
28
  */
21
29
  export declare function deconstructDiamondElement(element: ExcalidrawDiamondElement, offset?: number): [LineSegment<GlobalPoint>[], Curve<GlobalPoint>[]];
30
+ export declare const isPathALoop: (points: ExcalidrawLinearElement["points"], zoomValue?: Zoom["value"]) => boolean;
31
+ export declare const getCornerRadius: (x: number, element: ExcalidrawElement) => number;
@@ -20,7 +20,7 @@ export declare const actionAddToLibrary: {
20
20
  errorMessage: import("react").ReactNode;
21
21
  activeEmbeddable: {
22
22
  element: import("@excalidraw/element/types").NonDeletedExcalidrawElement;
23
- state: "hover" | "active";
23
+ state: "active" | "hover";
24
24
  } | null;
25
25
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
26
26
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
@@ -39,7 +39,6 @@ export declare const actionAddToLibrary: {
39
39
  editingFrame: string | null;
40
40
  elementsToHighlight: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawElement>[] | null;
41
41
  editingTextElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
42
- editingLinearElement: import("@excalidraw/element").LinearElementEditor | null;
43
42
  activeTool: {
44
43
  lastActiveTool: import("../types").ActiveTool | null;
45
44
  locked: boolean;
@@ -87,7 +86,7 @@ export declare const actionAddToLibrary: {
87
86
  name: "imageExport" | "help" | "jsonExport";
88
87
  } | {
89
88
  name: "ttd";
90
- tab: "text-to-diagram" | "mermaid";
89
+ tab: "mermaid" | "text-to-diagram";
91
90
  } | {
92
91
  name: "commandPalette";
93
92
  } | {
@@ -154,8 +153,7 @@ export declare const actionAddToLibrary: {
154
153
  shown: true;
155
154
  data: import("../charts").Spreadsheet;
156
155
  };
157
- pendingImageElementId: string | null;
158
- showHyperlinkPopup: false | "info" | "editor";
156
+ showHyperlinkPopup: false | "editor" | "info";
159
157
  selectedLinearElement: import("@excalidraw/element").LinearElementEditor | null;
160
158
  snapLines: readonly import("../snapping").SnapLine[];
161
159
  originSnapOffset: {
@@ -171,6 +169,10 @@ export declare const actionAddToLibrary: {
171
169
  focusedId: string | null;
172
170
  matches: readonly import("../types").SearchMatch[];
173
171
  }> | null;
172
+ activeLockedId: string | null;
173
+ lockedMultiSelections: {
174
+ [groupId: string]: true;
175
+ };
174
176
  };
175
177
  } | {
176
178
  captureUpdate: "EVENTUALLY";
@@ -185,7 +187,7 @@ export declare const actionAddToLibrary: {
185
187
  isLoading: boolean;
186
188
  activeEmbeddable: {
187
189
  element: import("@excalidraw/element/types").NonDeletedExcalidrawElement;
188
- state: "hover" | "active";
190
+ state: "active" | "hover";
189
191
  } | null;
190
192
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
191
193
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
@@ -204,7 +206,6 @@ export declare const actionAddToLibrary: {
204
206
  editingFrame: string | null;
205
207
  elementsToHighlight: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawElement>[] | null;
206
208
  editingTextElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
207
- editingLinearElement: import("@excalidraw/element").LinearElementEditor | null;
208
209
  activeTool: {
209
210
  lastActiveTool: import("../types").ActiveTool | null;
210
211
  locked: boolean;
@@ -252,7 +253,7 @@ export declare const actionAddToLibrary: {
252
253
  name: "imageExport" | "help" | "jsonExport";
253
254
  } | {
254
255
  name: "ttd";
255
- tab: "text-to-diagram" | "mermaid";
256
+ tab: "mermaid" | "text-to-diagram";
256
257
  } | {
257
258
  name: "commandPalette";
258
259
  } | {
@@ -324,8 +325,7 @@ export declare const actionAddToLibrary: {
324
325
  shown: true;
325
326
  data: import("../charts").Spreadsheet;
326
327
  };
327
- pendingImageElementId: string | null;
328
- showHyperlinkPopup: false | "info" | "editor";
328
+ showHyperlinkPopup: false | "editor" | "info";
329
329
  selectedLinearElement: import("@excalidraw/element").LinearElementEditor | null;
330
330
  snapLines: readonly import("../snapping").SnapLine[];
331
331
  originSnapOffset: {
@@ -341,6 +341,10 @@ export declare const actionAddToLibrary: {
341
341
  focusedId: string | null;
342
342
  matches: readonly import("../types").SearchMatch[];
343
343
  }> | null;
344
+ activeLockedId: string | null;
345
+ lockedMultiSelections: {
346
+ [groupId: string]: true;
347
+ };
344
348
  };
345
349
  }> | {
346
350
  captureUpdate: "EVENTUALLY";
@@ -355,7 +359,7 @@ export declare const actionAddToLibrary: {
355
359
  isLoading: boolean;
356
360
  activeEmbeddable: {
357
361
  element: import("@excalidraw/element/types").NonDeletedExcalidrawElement;
358
- state: "hover" | "active";
362
+ state: "active" | "hover";
359
363
  } | null;
360
364
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
361
365
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
@@ -374,7 +378,6 @@ export declare const actionAddToLibrary: {
374
378
  editingFrame: string | null;
375
379
  elementsToHighlight: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawElement>[] | null;
376
380
  editingTextElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
377
- editingLinearElement: import("@excalidraw/element").LinearElementEditor | null;
378
381
  activeTool: {
379
382
  lastActiveTool: import("../types").ActiveTool | null;
380
383
  locked: boolean;
@@ -422,7 +425,7 @@ export declare const actionAddToLibrary: {
422
425
  name: "imageExport" | "help" | "jsonExport";
423
426
  } | {
424
427
  name: "ttd";
425
- tab: "text-to-diagram" | "mermaid";
428
+ tab: "mermaid" | "text-to-diagram";
426
429
  } | {
427
430
  name: "commandPalette";
428
431
  } | {
@@ -494,8 +497,7 @@ export declare const actionAddToLibrary: {
494
497
  shown: true;
495
498
  data: import("../charts").Spreadsheet;
496
499
  };
497
- pendingImageElementId: string | null;
498
- showHyperlinkPopup: false | "info" | "editor";
500
+ showHyperlinkPopup: false | "editor" | "info";
499
501
  selectedLinearElement: import("@excalidraw/element").LinearElementEditor | null;
500
502
  snapLines: readonly import("../snapping").SnapLine[];
501
503
  originSnapOffset: {
@@ -511,6 +513,10 @@ export declare const actionAddToLibrary: {
511
513
  focusedId: string | null;
512
514
  matches: readonly import("../types").SearchMatch[];
513
515
  }> | null;
516
+ activeLockedId: string | null;
517
+ lockedMultiSelections: {
518
+ [groupId: string]: true;
519
+ };
514
520
  };
515
521
  };
516
522
  label: string;
@@ -15,10 +15,10 @@ export declare const actionAlignTop: {
15
15
  elements: ExcalidrawElement[];
16
16
  captureUpdate: "IMMEDIATELY";
17
17
  };
18
- keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
18
+ keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
19
19
  PanelComponent: ({ elements, appState, updateData, app }: import("./types").PanelComponentProps) => import("react/jsx-runtime").JSX.Element;
20
20
  } & {
21
- keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
21
+ keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
22
22
  };
23
23
  export declare const actionAlignBottom: {
24
24
  name: "alignBottom";
@@ -33,10 +33,10 @@ export declare const actionAlignBottom: {
33
33
  elements: ExcalidrawElement[];
34
34
  captureUpdate: "IMMEDIATELY";
35
35
  };
36
- keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
36
+ keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
37
37
  PanelComponent: ({ elements, appState, updateData, app }: import("./types").PanelComponentProps) => import("react/jsx-runtime").JSX.Element;
38
38
  } & {
39
- keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
39
+ keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
40
40
  };
41
41
  export declare const actionAlignLeft: {
42
42
  name: "alignLeft";
@@ -51,10 +51,10 @@ export declare const actionAlignLeft: {
51
51
  elements: ExcalidrawElement[];
52
52
  captureUpdate: "IMMEDIATELY";
53
53
  };
54
- keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
54
+ keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
55
55
  PanelComponent: ({ elements, appState, updateData, app }: import("./types").PanelComponentProps) => import("react/jsx-runtime").JSX.Element;
56
56
  } & {
57
- keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
57
+ keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
58
58
  };
59
59
  export declare const actionAlignRight: {
60
60
  name: "alignRight";
@@ -69,10 +69,10 @@ export declare const actionAlignRight: {
69
69
  elements: ExcalidrawElement[];
70
70
  captureUpdate: "IMMEDIATELY";
71
71
  };
72
- keyTest: (event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean;
72
+ keyTest: (event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean;
73
73
  PanelComponent: ({ elements, appState, updateData, app }: import("./types").PanelComponentProps) => import("react/jsx-runtime").JSX.Element;
74
74
  } & {
75
- keyTest?: ((event: import("react").KeyboardEvent<Element> | KeyboardEvent) => boolean) | undefined;
75
+ keyTest?: ((event: KeyboardEvent | import("react").KeyboardEvent<Element>) => boolean) | undefined;
76
76
  };
77
77
  export declare const actionAlignVerticallyCentered: {
78
78
  name: "alignVerticallyCentered";
@@ -40,7 +40,7 @@ export declare const actionBindText: {
40
40
  errorMessage: import("react").ReactNode;
41
41
  activeEmbeddable: {
42
42
  element: import("@excalidraw/element/types").NonDeletedExcalidrawElement;
43
- state: "hover" | "active";
43
+ state: "active" | "hover";
44
44
  } | null;
45
45
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
46
46
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
@@ -59,7 +59,6 @@ export declare const actionBindText: {
59
59
  editingFrame: string | null;
60
60
  elementsToHighlight: import("@excalidraw/element/types").NonDeleted<ExcalidrawElement>[] | null;
61
61
  editingTextElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
62
- editingLinearElement: import("@excalidraw/element").LinearElementEditor | null;
63
62
  activeTool: {
64
63
  lastActiveTool: import("../types").ActiveTool | null;
65
64
  locked: boolean;
@@ -107,7 +106,7 @@ export declare const actionBindText: {
107
106
  name: "imageExport" | "help" | "jsonExport";
108
107
  } | {
109
108
  name: "ttd";
110
- tab: "text-to-diagram" | "mermaid";
109
+ tab: "mermaid" | "text-to-diagram";
111
110
  } | {
112
111
  name: "commandPalette";
113
112
  } | {
@@ -176,8 +175,7 @@ export declare const actionBindText: {
176
175
  shown: true;
177
176
  data: import("../charts").Spreadsheet;
178
177
  };
179
- pendingImageElementId: string | null;
180
- showHyperlinkPopup: false | "info" | "editor";
178
+ showHyperlinkPopup: false | "editor" | "info";
181
179
  selectedLinearElement: import("@excalidraw/element").LinearElementEditor | null;
182
180
  snapLines: readonly import("../snapping").SnapLine[];
183
181
  originSnapOffset: {
@@ -193,6 +191,10 @@ export declare const actionBindText: {
193
191
  focusedId: string | null;
194
192
  matches: readonly import("../types").SearchMatch[];
195
193
  }> | null;
194
+ activeLockedId: string | null;
195
+ lockedMultiSelections: {
196
+ [groupId: string]: true;
197
+ };
196
198
  };
197
199
  captureUpdate: "IMMEDIATELY";
198
200
  };
@@ -222,7 +224,7 @@ export declare const actionWrapTextInContainer: {
222
224
  errorMessage: import("react").ReactNode;
223
225
  activeEmbeddable: {
224
226
  element: import("@excalidraw/element/types").NonDeletedExcalidrawElement;
225
- state: "hover" | "active";
227
+ state: "active" | "hover";
226
228
  } | null;
227
229
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
228
230
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
@@ -241,7 +243,6 @@ export declare const actionWrapTextInContainer: {
241
243
  editingFrame: string | null;
242
244
  elementsToHighlight: import("@excalidraw/element/types").NonDeleted<ExcalidrawElement>[] | null;
243
245
  editingTextElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
244
- editingLinearElement: import("@excalidraw/element").LinearElementEditor | null;
245
246
  activeTool: {
246
247
  lastActiveTool: import("../types").ActiveTool | null;
247
248
  locked: boolean;
@@ -289,7 +290,7 @@ export declare const actionWrapTextInContainer: {
289
290
  name: "imageExport" | "help" | "jsonExport";
290
291
  } | {
291
292
  name: "ttd";
292
- tab: "text-to-diagram" | "mermaid";
293
+ tab: "mermaid" | "text-to-diagram";
293
294
  } | {
294
295
  name: "commandPalette";
295
296
  } | {
@@ -358,8 +359,7 @@ export declare const actionWrapTextInContainer: {
358
359
  shown: true;
359
360
  data: import("../charts").Spreadsheet;
360
361
  };
361
- pendingImageElementId: string | null;
362
- showHyperlinkPopup: false | "info" | "editor";
362
+ showHyperlinkPopup: false | "editor" | "info";
363
363
  selectedLinearElement: import("@excalidraw/element").LinearElementEditor | null;
364
364
  snapLines: readonly import("../snapping").SnapLine[];
365
365
  originSnapOffset: {
@@ -375,6 +375,10 @@ export declare const actionWrapTextInContainer: {
375
375
  focusedId: string | null;
376
376
  matches: readonly import("../types").SearchMatch[];
377
377
  }> | null;
378
+ activeLockedId: string | null;
379
+ lockedMultiSelections: {
380
+ [groupId: string]: true;
381
+ };
378
382
  };
379
383
  captureUpdate: "IMMEDIATELY";
380
384
  };