@excalidraw/element 0.18.0-063e025 → 0.18.0-1118751

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 (154) hide show
  1. package/dist/dev/index.js +13047 -9808
  2. package/dist/dev/index.js.map +4 -4
  3. package/dist/prod/index.js +19 -19
  4. package/dist/types/common/src/colors.d.ts +22 -0
  5. package/dist/types/common/src/constants.d.ts +54 -0
  6. package/dist/types/common/src/keys.d.ts +4 -0
  7. package/dist/types/common/src/points.d.ts +1 -1
  8. package/dist/types/common/src/random.d.ts +7 -0
  9. package/dist/types/common/src/utils.d.ts +1 -1
  10. package/dist/types/element/src/Scene.d.ts +1 -1
  11. package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
  12. package/dist/types/element/src/arrows/focus.d.ts +5 -2
  13. package/dist/types/element/src/binding.d.ts +15 -8
  14. package/dist/types/element/src/bucketFill.d.ts +110 -0
  15. package/dist/types/element/src/collision.d.ts +8 -5
  16. package/dist/types/element/src/comparisons.d.ts +7 -5
  17. package/dist/types/element/src/convertToShape.d.ts +23 -0
  18. package/dist/types/element/src/delta.d.ts +23 -1
  19. package/dist/types/element/src/dragElements.d.ts +27 -0
  20. package/dist/types/element/src/duplicate.d.ts +60 -0
  21. package/dist/types/element/src/flowchart.d.ts +10 -6
  22. package/dist/types/element/src/frame.d.ts +2 -2
  23. package/dist/types/element/src/groups.d.ts +1 -1
  24. package/dist/types/element/src/index.d.ts +4 -0
  25. package/dist/types/element/src/linearElementEditor.d.ts +17 -0
  26. package/dist/types/element/src/mutateElement.d.ts +1 -1
  27. package/dist/types/element/src/newElement.d.ts +37 -2
  28. package/dist/types/element/src/renderElement.d.ts +21 -4
  29. package/dist/types/element/src/selection.d.ts +1 -1
  30. package/dist/types/element/src/shape.d.ts +27 -1
  31. package/dist/types/element/src/sizeHelpers.d.ts +6 -0
  32. package/dist/types/element/src/sortElements.d.ts +10 -0
  33. package/dist/types/element/src/stickyNote.d.ts +183 -0
  34. package/dist/types/element/src/textElement.d.ts +7 -3
  35. package/dist/types/element/src/transform.d.ts +25 -6
  36. package/dist/types/element/src/typeChecks.d.ts +3 -2
  37. package/dist/types/element/src/types.d.ts +35 -6
  38. package/dist/types/element/src/utils.d.ts +15 -4
  39. package/dist/types/element/src/zindex.d.ts +1 -1
  40. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +48 -9
  41. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  42. package/dist/types/excalidraw/actions/actionBoundText.d.ts +32 -6
  43. package/dist/types/excalidraw/actions/actionCanvas.d.ts +173 -576
  44. package/dist/types/excalidraw/actions/actionClipboard.d.ts +32 -6
  45. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +16 -3
  46. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +50 -10
  47. package/dist/types/excalidraw/actions/actionDeselect.d.ts +13 -3
  48. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -2
  49. package/dist/types/excalidraw/actions/actionElementLink.d.ts +16 -3
  50. package/dist/types/excalidraw/actions/actionElementLock.d.ts +32 -6
  51. package/dist/types/excalidraw/actions/actionExport.d.ts +34 -8
  52. package/dist/types/excalidraw/actions/actionFinalize.d.ts +1 -0
  53. package/dist/types/excalidraw/actions/actionFrame.d.ts +99 -185
  54. package/dist/types/excalidraw/actions/actionGroup.d.ts +33 -7
  55. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +68 -4
  56. package/dist/types/excalidraw/actions/actionLink.d.ts +16 -3
  57. package/dist/types/excalidraw/actions/actionMenu.d.ts +16 -3
  58. package/dist/types/excalidraw/actions/actionProperties.d.ts +45 -12
  59. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +16 -3
  60. package/dist/types/excalidraw/actions/actionStyles.d.ts +17 -4
  61. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  62. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +16 -3
  63. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +16 -3
  64. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +16 -3
  65. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +16 -3
  66. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +16 -3
  67. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +16 -3
  68. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +17 -4
  69. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +16 -3
  70. package/dist/types/excalidraw/actions/colorTargets.d.ts +39 -0
  71. package/dist/types/excalidraw/actions/index.d.ts +1 -2
  72. package/dist/types/excalidraw/actions/manager.d.ts +1 -0
  73. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  74. package/dist/types/excalidraw/actions/types.d.ts +5 -1
  75. package/dist/types/excalidraw/appState.d.ts +26 -5
  76. package/dist/types/excalidraw/components/Actions.d.ts +16 -10
  77. package/dist/types/excalidraw/components/App.arrowText.d.ts +104 -0
  78. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  79. package/dist/types/excalidraw/components/App.cursor.d.ts +38 -0
  80. package/dist/types/excalidraw/components/App.d.ts +468 -99
  81. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  82. package/dist/types/excalidraw/components/App.duplicate.d.ts +51 -0
  83. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  84. package/dist/types/excalidraw/components/App.pan.d.ts +54 -0
  85. package/dist/types/excalidraw/components/App.toolDrag.d.ts +63 -0
  86. package/dist/types/excalidraw/components/App.viewport.d.ts +73 -0
  87. package/dist/types/excalidraw/components/App.wheel.d.ts +26 -0
  88. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +8 -2
  89. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  90. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +5 -1
  91. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -2
  92. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
  93. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  94. package/dist/types/excalidraw/components/ColorPicker/colorTopPicksDnD.d.ts +11 -0
  95. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -1
  96. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +4 -1
  97. package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +6 -1
  98. package/dist/types/excalidraw/components/FontPicker/fontTopPicksDnD.d.ts +12 -0
  99. package/dist/types/excalidraw/components/IconButton.d.ts +48 -0
  100. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  101. package/dist/types/excalidraw/components/LayerUI.d.ts +5 -2
  102. package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
  103. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
  104. package/dist/types/excalidraw/components/MobileMenu.d.ts +4 -4
  105. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  106. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  107. package/dist/types/excalidraw/components/Popover.d.ts +1 -3
  108. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  109. package/dist/types/excalidraw/components/ToolPopover.d.ts +3 -6
  110. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  111. package/dist/types/excalidraw/components/Tools.d.ts +151 -0
  112. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksContextMenu.d.ts +14 -0
  113. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksTip.d.ts +11 -0
  114. package/dist/types/excalidraw/components/TopPicksDnD/topPicksDnD.d.ts +58 -0
  115. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  116. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  117. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -0
  118. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +2 -0
  119. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  120. package/dist/types/excalidraw/components/icons.d.ts +5 -1
  121. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +2 -1
  122. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  123. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  124. package/dist/types/excalidraw/data/blob.d.ts +36 -10
  125. package/dist/types/excalidraw/data/json.d.ts +18 -5
  126. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  127. package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -2
  128. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +5 -5
  129. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  130. package/dist/types/excalidraw/renderOverrides.d.ts +9 -0
  131. package/dist/types/excalidraw/renderer/helpers.d.ts +25 -0
  132. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +1 -1
  133. package/dist/types/excalidraw/scene/Renderer.d.ts +64 -2
  134. package/dist/types/excalidraw/scene/index.d.ts +1 -1
  135. package/dist/types/excalidraw/scene/types.d.ts +6 -1
  136. package/dist/types/excalidraw/types.d.ts +341 -21
  137. package/dist/types/excalidraw/viewport.d.ts +31 -66
  138. package/dist/types/laser-pointer/src/state.d.ts +1 -0
  139. package/dist/types/math/src/curve.d.ts +19 -12
  140. package/dist/types/math/src/index.d.ts +1 -0
  141. package/dist/types/math/src/pca.d.ts +79 -0
  142. package/dist/types/math/src/polygon.d.ts +25 -1
  143. package/dist/types/math/src/segment.d.ts +6 -0
  144. package/dist/types/utils/src/export.d.ts +1 -0
  145. package/dist/types/utils/src/shape.d.ts +2 -2
  146. package/package.json +4 -4
  147. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +0 -173
  148. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  149. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  150. package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -10
  151. package/dist/types/excalidraw/components/ToolButton.d.ts +0 -49
  152. package/dist/types/excalidraw/components/shapes.d.ts +0 -270
  153. package/dist/types/excalidraw/cursor.d.ts +0 -5
  154. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
@@ -73,10 +73,15 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
73
73
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
74
74
  isBindingEnabled: boolean;
75
75
  isMidpointSnappingEnabled: boolean;
76
+ gridModeEnabled: boolean;
76
77
  suggestedBinding: {
77
78
  element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
78
79
  midPoint?: import("@excalidraw/math").GlobalPoint;
79
80
  } | null;
81
+ hoveredArrowTextAnchor: {
82
+ elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
83
+ anchor: "start" | "end" | "label";
84
+ } | null;
80
85
  isRotating: boolean;
81
86
  elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
82
87
  collaborators: Map<import("../types").SocketId, import("../types").Collaborator>;
@@ -96,8 +101,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
96
101
  shouldCacheIgnoreZoom: boolean;
97
102
  exportScale: number;
98
103
  currentItemArrowType: "sharp" | "round" | "elbow";
99
- bindMode: import("@excalidraw/element/types").BindMode;
100
104
  gridSize: number;
105
+ bindMode: import("@excalidraw/element/types").BindMode;
101
106
  contextMenu: {
102
107
  items: import("../components/ContextMenu").ContextMenuItems;
103
108
  top: number;
@@ -109,7 +114,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
109
114
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
110
115
  boxSelectionMode: import("../types").BoxSelectionMode;
111
116
  bindingPreference: "enabled" | "disabled";
112
- editingFrame: string | null;
117
+ inputDevice: import("../types").InputDevice;
118
+ editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
113
119
  preferredSelectionTool: {
114
120
  type: "selection" | "lasso";
115
121
  initialized: boolean;
@@ -120,6 +126,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
120
126
  exportEmbedScene: boolean;
121
127
  exportWithDarkMode: boolean;
122
128
  currentItemStrokeColor: string;
129
+ currentItemStickynoteStrokeColor: string;
130
+ currentItemStickynoteBackgroundColor: string;
123
131
  currentItemBackgroundColor: string;
124
132
  currentItemFillStyle: ExcalidrawElement["fillStyle"];
125
133
  currentItemStrokeWidthKey: import("@excalidraw/common").StrokeWidthKey;
@@ -156,7 +164,6 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
156
164
  duration?: number;
157
165
  } | null;
158
166
  gridStep: number;
159
- gridModeEnabled: boolean;
160
167
  fileHandle: FileSystemFileHandle | null;
161
168
  stats: {
162
169
  open: boolean;
@@ -168,11 +175,17 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
168
175
  y: number;
169
176
  } | null;
170
177
  objectsSnapModeEnabled: boolean;
171
- userToFollow: import("../types").UserToFollow | null;
172
- followedBy: Set<import("../types").SocketId>;
173
178
  lockedMultiSelections: {
174
179
  [groupId: string]: true;
175
180
  };
181
+ colorTopPicks: {
182
+ elementStroke: readonly string[] | null;
183
+ elementBackground: readonly string[] | null;
184
+ bucketFill: readonly string[] | null;
185
+ stickyNoteStroke: readonly string[] | null;
186
+ stickyNoteBackground: readonly string[] | null;
187
+ };
188
+ fontTopPicks: readonly import("@excalidraw/element/types").FontFamilyValues[] | null;
176
189
  };
177
190
  files: import("../types").BinaryFiles;
178
191
  };
@@ -240,10 +253,15 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
240
253
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
241
254
  isBindingEnabled: boolean;
242
255
  isMidpointSnappingEnabled: boolean;
256
+ gridModeEnabled: boolean;
243
257
  suggestedBinding: {
244
258
  element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
245
259
  midPoint?: import("@excalidraw/math").GlobalPoint;
246
260
  } | null;
261
+ hoveredArrowTextAnchor: {
262
+ elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
263
+ anchor: "start" | "end" | "label";
264
+ } | null;
247
265
  isRotating: boolean;
248
266
  elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
249
267
  collaborators: Map<import("../types").SocketId, import("../types").Collaborator>;
@@ -263,8 +281,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
263
281
  shouldCacheIgnoreZoom: boolean;
264
282
  exportScale: number;
265
283
  currentItemArrowType: "sharp" | "round" | "elbow";
266
- bindMode: import("@excalidraw/element/types").BindMode;
267
284
  gridSize: number;
285
+ bindMode: import("@excalidraw/element/types").BindMode;
268
286
  contextMenu: {
269
287
  items: import("../components/ContextMenu").ContextMenuItems;
270
288
  top: number;
@@ -276,7 +294,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
276
294
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
277
295
  boxSelectionMode: import("../types").BoxSelectionMode;
278
296
  bindingPreference: "enabled" | "disabled";
279
- editingFrame: string | null;
297
+ inputDevice: import("../types").InputDevice;
298
+ editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
280
299
  preferredSelectionTool: {
281
300
  type: "selection" | "lasso";
282
301
  initialized: boolean;
@@ -287,6 +306,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
287
306
  exportEmbedScene: boolean;
288
307
  exportWithDarkMode: boolean;
289
308
  currentItemStrokeColor: string;
309
+ currentItemStickynoteStrokeColor: string;
310
+ currentItemStickynoteBackgroundColor: string;
290
311
  currentItemBackgroundColor: string;
291
312
  currentItemFillStyle: ExcalidrawElement["fillStyle"];
292
313
  currentItemStrokeWidthKey: import("@excalidraw/common").StrokeWidthKey;
@@ -323,7 +344,6 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
323
344
  duration?: number;
324
345
  } | null;
325
346
  gridStep: number;
326
- gridModeEnabled: boolean;
327
347
  fileHandle: FileSystemFileHandle | null;
328
348
  stats: {
329
349
  open: boolean;
@@ -335,11 +355,17 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
335
355
  y: number;
336
356
  } | null;
337
357
  objectsSnapModeEnabled: boolean;
338
- userToFollow: import("../types").UserToFollow | null;
339
- followedBy: Set<import("../types").SocketId>;
340
358
  lockedMultiSelections: {
341
359
  [groupId: string]: true;
342
360
  };
361
+ colorTopPicks: {
362
+ elementStroke: readonly string[] | null;
363
+ elementBackground: readonly string[] | null;
364
+ bucketFill: readonly string[] | null;
365
+ stickyNoteStroke: readonly string[] | null;
366
+ stickyNoteBackground: readonly string[] | null;
367
+ };
368
+ fontTopPicks: readonly import("@excalidraw/element/types").FontFamilyValues[] | null;
343
369
  };
344
370
  files: import("../types").BinaryFiles;
345
371
  }>;
@@ -71,10 +71,15 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
71
71
  newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
72
72
  isBindingEnabled: boolean;
73
73
  isMidpointSnappingEnabled: boolean;
74
+ gridModeEnabled: boolean;
74
75
  suggestedBinding: {
75
76
  element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
76
77
  midPoint?: import("@excalidraw/math").GlobalPoint;
77
78
  } | null;
79
+ hoveredArrowTextAnchor: {
80
+ elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
81
+ anchor: "start" | "end" | "label";
82
+ } | null;
78
83
  isRotating: boolean;
79
84
  elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
80
85
  collaborators: Map<import("../types").SocketId, import("../types").Collaborator>;
@@ -94,8 +99,8 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
94
99
  shouldCacheIgnoreZoom: boolean;
95
100
  exportScale: number;
96
101
  currentItemArrowType: "sharp" | "round" | "elbow";
97
- bindMode: import("@excalidraw/element/types").BindMode;
98
102
  gridSize: number;
103
+ bindMode: import("@excalidraw/element/types").BindMode;
99
104
  contextMenu: {
100
105
  items: import("../components/ContextMenu").ContextMenuItems;
101
106
  top: number;
@@ -107,7 +112,8 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
107
112
  resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
108
113
  boxSelectionMode: import("../types").BoxSelectionMode;
109
114
  bindingPreference: "enabled" | "disabled";
110
- editingFrame: string | null;
115
+ inputDevice: import("../types").InputDevice;
116
+ editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
111
117
  preferredSelectionTool: {
112
118
  type: "selection" | "lasso";
113
119
  initialized: boolean;
@@ -118,6 +124,8 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
118
124
  exportEmbedScene: boolean;
119
125
  exportWithDarkMode: boolean;
120
126
  currentItemStrokeColor: string;
127
+ currentItemStickynoteStrokeColor: string;
128
+ currentItemStickynoteBackgroundColor: string;
121
129
  currentItemBackgroundColor: string;
122
130
  currentItemFillStyle: ExcalidrawElement["fillStyle"];
123
131
  currentItemStrokeWidthKey: import("@excalidraw/common").StrokeWidthKey;
@@ -154,7 +162,6 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
154
162
  duration?: number;
155
163
  } | null;
156
164
  gridStep: number;
157
- gridModeEnabled: boolean;
158
165
  fileHandle: FileSystemFileHandle | null;
159
166
  stats: {
160
167
  open: boolean;
@@ -166,11 +173,17 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
166
173
  y: number;
167
174
  } | null;
168
175
  objectsSnapModeEnabled: boolean;
169
- userToFollow: import("../types").UserToFollow | null;
170
- followedBy: Set<import("../types").SocketId>;
171
176
  lockedMultiSelections: {
172
177
  [groupId: string]: true;
173
178
  };
179
+ colorTopPicks: {
180
+ elementStroke: readonly string[] | null;
181
+ elementBackground: readonly string[] | null;
182
+ bucketFill: readonly string[] | null;
183
+ stickyNoteStroke: readonly string[] | null;
184
+ stickyNoteBackground: readonly string[] | null;
185
+ };
186
+ fontTopPicks: readonly import("@excalidraw/element/types").FontFamilyValues[] | null;
174
187
  };
175
188
  files: BinaryFiles;
176
189
  }>;
@@ -0,0 +1,16 @@
1
+ import type { GlobalPoint } from "@excalidraw/math";
2
+ import type App from "./components/App";
3
+ import type { Trail } from "./animatedTrail";
4
+ export declare class DrawShapeTrail implements Trail {
5
+ private app;
6
+ private trail;
7
+ constructor(app: App);
8
+ private getTrailOptions;
9
+ startPath(x: number, y: number): void;
10
+ addPointToPath(x: number, y: number): void;
11
+ endPath(): void;
12
+ clearTrails(): void;
13
+ getCurrentPoints(): GlobalPoint[];
14
+ start(container: SVGSVGElement): void;
15
+ stop(): void;
16
+ }
@@ -15,7 +15,8 @@ export declare class Fonts {
15
15
  fontFaces: ExcalidrawFontFace[];
16
16
  }>;
17
17
  private readonly scene;
18
- constructor(scene: Scene);
18
+ private readonly ownerDocument;
19
+ constructor(scene: Scene, ownerDocument?: Document);
19
20
  /**
20
21
  * Get all the font families for the given scene.
21
22
  */
@@ -36,7 +37,7 @@ export declare class Fonts {
36
37
  /**
37
38
  * Load font faces for passed elements - use when the scene is unavailable (i.e. export).
38
39
  */
39
- static loadElementsFonts: (elements: readonly ExcalidrawElement[]) => Promise<FontFace[]>;
40
+ static loadElementsFonts: (elements: readonly ExcalidrawElement[], ownerDocument?: Document) => Promise<FontFace[]>;
40
41
  /**
41
42
  * Generate CSS @font-face declarations for the given elements.
42
43
  */
@@ -2,13 +2,13 @@ export type CaretPosition = {
2
2
  start: number;
3
3
  end: number;
4
4
  };
5
- export declare const saveCaretPosition: () => CaretPosition | null;
6
- export declare const restoreCaretPosition: (position: CaretPosition | null) => void;
7
- export declare const withCaretPositionPreservation: (callback: () => void, isCompactMode: boolean, isEditingText: boolean, onPreventClose?: () => void) => void;
8
- export declare const useTextEditorFocus: () => {
5
+ export declare const saveCaretPosition: (ownerDocument?: Document) => CaretPosition | null;
6
+ export declare const restoreCaretPosition: (position: CaretPosition | null, ownerDocument?: Document) => void;
7
+ export declare const withCaretPositionPreservation: (callback: () => void, isCompactMode: boolean, isEditingText: boolean, onPreventClose?: () => void, ownerDocument?: Document) => void;
8
+ export declare const useTextEditorFocus: (ownerDocument?: Document) => {
9
9
  saveCaretPosition: () => void;
10
10
  restoreCaretPosition: () => void;
11
11
  clearSavedPosition: () => void;
12
12
  hasSavedPosition: boolean;
13
13
  };
14
- export declare const temporarilyDisableTextEditorBlur: (duration?: number) => void;
14
+ export declare const temporarilyDisableTextEditorBlur: (ownerDocument?: Document, duration?: number) => void;
@@ -1,5 +1,6 @@
1
1
  import type { ElementsSegmentsMap, GlobalPoint } from "@excalidraw/math/types";
2
2
  import type { ElementsMap, ExcalidrawElement } from "@excalidraw/element/types";
3
+ import type { BoxSelectionMode } from "../types";
3
4
  export declare const getLassoSelectedElementIds: (input: {
4
5
  lassoPath: GlobalPoint[];
5
6
  elements: readonly ExcalidrawElement[];
@@ -8,6 +9,7 @@ export declare const getLassoSelectedElementIds: (input: {
8
9
  intersectedElements: Set<ExcalidrawElement["id"]>;
9
10
  enclosedElements: Set<ExcalidrawElement["id"]>;
10
11
  simplifyDistance?: number;
12
+ mode?: BoxSelectionMode;
11
13
  }) => {
12
14
  selectedElementIds: string[];
13
15
  };
@@ -0,0 +1,9 @@
1
+ import type { ElementRenderOffsets, ElementRenderOverrides } from "./types";
2
+ /** Validate and copy before publishing, so a rejected snapshot changes nothing. */
3
+ export declare const copyElementRenderOverrides: (overrides: ElementRenderOverrides | null) => ElementRenderOverrides;
4
+ /**
5
+ * Extracts the offsets of a snapshot, returning `previous` when they are the
6
+ * same. Visibility is memoized on this map's identity, so a snapshot that only
7
+ * changes opacities (a fade) never re-runs viewport geometry.
8
+ */
9
+ export declare const getElementRenderOffsets: (overrides: ElementRenderOverrides, previous: ElementRenderOffsets) => ElementRenderOffsets;
@@ -1,6 +1,31 @@
1
1
  import type { StaticCanvasRenderConfig } from "../scene/types";
2
2
  import type { AppState, StaticCanvasAppState } from "../types";
3
+ export declare const DEFAULT_SELECTION_COLOR = "#6965db";
4
+ /**
5
+ * Returns the theme's selection color (`--color-selection`), read from the
6
+ * computed style of any element inside the editor container so that host
7
+ * overrides are respected. Falls back to the default when unavailable.
8
+ */
9
+ export declare const getSelectionColor: (element: Element | null | undefined) => string;
3
10
  export declare const fillCircle: (context: CanvasRenderingContext2D, cx: number, cy: number, radius: number, stroke: boolean, fill?: boolean) => void;
11
+ /**
12
+ * The scroll the renderers draw at: the real one, rounded to whole device
13
+ * pixels. Panning writes a fractional scroll (pointer delta ÷ zoom), and an
14
+ * element's cached bitmap blitted at a fractional device offset gets
15
+ * resampled — so as the fraction drifts under a pan, every element pulses
16
+ * between crisp and soft. A whole-pixel scroll moves the scene the way a
17
+ * browser scrolls a page: each element keeps its own, constant sub-pixel
18
+ * phase and a pan never changes how anything is filtered. The difference
19
+ * stays under half a device pixel, so hit-testing and DOM overlays keep
20
+ * using the real scroll. Identity when nothing needs to change.
21
+ */
22
+ export declare const snapScrollToDevicePixels: <T extends {
23
+ scrollX: number;
24
+ scrollY: number;
25
+ zoom: {
26
+ value: number;
27
+ };
28
+ }>(appState: T, scale: number) => T;
4
29
  export declare const getNormalizedCanvasDimensions: (canvas: HTMLCanvasElement, scale: number) => [number, number];
5
30
  export declare const bootstrapCanvas: ({ canvas, scale, normalizedWidth, normalizedHeight, theme, isExporting, viewBackgroundColor, }: {
6
31
  canvas: HTMLCanvasElement;
@@ -1,6 +1,6 @@
1
1
  import { getScrollBars } from "../scene/scrollbars";
2
2
  import type { InteractiveSceneRenderConfig } from "../scene/types";
3
- declare const _renderInteractiveScene: ({ app, canvas, elementsMap, visibleElements, selectedElements, allElementsMap, scale, appState, renderConfig, editorInterface, animationState, deltaTime, }: InteractiveSceneRenderConfig) => {
3
+ declare const _renderInteractiveScene: ({ app, canvas, elementsMap, visibleElements, selectedElements, allElementsMap, scale, appState: unsnappedAppState, renderConfig, editorInterface, animationState, deltaTime, }: InteractiveSceneRenderConfig) => {
4
4
  scrollBars?: ReturnType<typeof getScrollBars>;
5
5
  animationState?: typeof animationState;
6
6
  };
@@ -1,7 +1,7 @@
1
1
  import type { NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
2
  import type { Scene } from "@excalidraw/element";
3
3
  import type { RenderableElementsMap } from "./types";
4
- import type { AppState } from "../types";
4
+ import type { AppState, ElementRenderOffsets } from "../types";
5
5
  type GetRenderableElementsOpts = {
6
6
  zoom: AppState["zoom"];
7
7
  offsetLeft: AppState["offsetLeft"];
@@ -19,6 +19,19 @@ type GetRenderableElementsOpts = {
19
19
  export declare class Renderer {
20
20
  private scene;
21
21
  constructor(scene: Scene);
22
+ /**
23
+ * Adjusts the document-visible set for render-override translations: an
24
+ * element leaves it when its offset moves it out of view and enters it when
25
+ * its offset brings it in; everything else keeps its document visibility.
26
+ * Only translated elements go through viewport geometry. The result is
27
+ * memoized on the offsets' identity so that opacity-only snapshots don't
28
+ * reach it at all.
29
+ */
30
+ getVisibleElementsWithRenderOffsets(visibleElements: readonly NonDeletedExcalidrawElement[], elementsMap: RenderableElementsMap, appState: AppState, offsets: ElementRenderOffsets): readonly NonDeletedExcalidrawElement[];
31
+ private _getVisibleElementsWithRenderOffsets;
32
+ /** the document-visible elements as a set, cached per visible array */
33
+ private visibleSets;
34
+ private getVisibleSet;
22
35
  private getVisibleCanvasElements;
23
36
  private getRenderableElementsMap;
24
37
  private sortSelectedElementsIntoHighlightedFrame;
@@ -53,6 +66,7 @@ export declare class Renderer {
53
66
  frameId: string | null;
54
67
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
55
68
  updated: number;
69
+ created: number | null;
56
70
  link: string | null;
57
71
  locked: boolean;
58
72
  customData?: Record<string, any>;
@@ -92,6 +106,7 @@ export declare class Renderer {
92
106
  frameId: string | null;
93
107
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
94
108
  updated: number;
109
+ created: number | null;
95
110
  link: string | null;
96
111
  locked: boolean;
97
112
  customData?: Record<string, any>;
@@ -126,6 +141,43 @@ export declare class Renderer {
126
141
  frameId: string | null;
127
142
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
128
143
  updated: number;
144
+ created: number | null;
145
+ link: string | null;
146
+ locked: boolean;
147
+ customData?: Record<string, any>;
148
+ }> & Readonly<{
149
+ type: "stickynote";
150
+ baseHeight: number;
151
+ }> & {
152
+ isDeleted: false;
153
+ }) | (Readonly<{
154
+ id: string;
155
+ x: number;
156
+ y: number;
157
+ strokeColor: string;
158
+ backgroundColor: string;
159
+ fillStyle: import("@excalidraw/element/types").FillStyle;
160
+ strokeWidth: number;
161
+ strokeStyle: import("@excalidraw/element/types").StrokeStyle;
162
+ roundness: null | {
163
+ type: import("@excalidraw/element/types").RoundnessType;
164
+ value?: number;
165
+ };
166
+ roughness: number;
167
+ opacity: number;
168
+ width: number;
169
+ height: number;
170
+ angle: import("@excalidraw/math").Radians;
171
+ seed: number;
172
+ version: number;
173
+ versionNonce: number;
174
+ index: import("@excalidraw/element/types").FractionalIndex | null;
175
+ isDeleted: boolean;
176
+ groupIds: readonly import("@excalidraw/element/types").GroupId[];
177
+ frameId: string | null;
178
+ boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
179
+ updated: number;
180
+ created: number | null;
129
181
  link: string | null;
130
182
  locked: boolean;
131
183
  customData?: Record<string, any>;
@@ -160,6 +212,7 @@ export declare class Renderer {
160
212
  frameId: string | null;
161
213
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
162
214
  updated: number;
215
+ created: number | null;
163
216
  link: string | null;
164
217
  locked: boolean;
165
218
  customData?: Record<string, any>;
@@ -194,6 +247,7 @@ export declare class Renderer {
194
247
  frameId: string | null;
195
248
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
196
249
  updated: number;
250
+ created: number | null;
197
251
  link: string | null;
198
252
  locked: boolean;
199
253
  customData?: Record<string, any>;
@@ -228,6 +282,7 @@ export declare class Renderer {
228
282
  frameId: string | null;
229
283
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
230
284
  updated: number;
285
+ created: number | null;
231
286
  link: string | null;
232
287
  locked: boolean;
233
288
  customData?: Record<string, any>;
@@ -265,6 +320,7 @@ export declare class Renderer {
265
320
  frameId: string | null;
266
321
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
267
322
  updated: number;
323
+ created: number | null;
268
324
  link: string | null;
269
325
  locked: boolean;
270
326
  customData?: Record<string, any>;
@@ -303,6 +359,7 @@ export declare class Renderer {
303
359
  frameId: string | null;
304
360
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
305
361
  updated: number;
362
+ created: number | null;
306
363
  link: string | null;
307
364
  locked: boolean;
308
365
  customData?: Record<string, any>;
@@ -338,6 +395,7 @@ export declare class Renderer {
338
395
  frameId: string | null;
339
396
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
340
397
  updated: number;
398
+ created: number | null;
341
399
  link: string | null;
342
400
  locked: boolean;
343
401
  customData?: Record<string, any>;
@@ -373,6 +431,7 @@ export declare class Renderer {
373
431
  frameId: string | null;
374
432
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
375
433
  updated: number;
434
+ created: number | null;
376
435
  link: string | null;
377
436
  locked: boolean;
378
437
  customData?: Record<string, any>;
@@ -380,15 +439,17 @@ export declare class Renderer {
380
439
  type: "text";
381
440
  fontSize: number;
382
441
  fontFamily: import("@excalidraw/element/types").FontFamilyValues;
442
+ baseFontSize: number | null;
383
443
  text: string;
384
444
  textAlign: import("@excalidraw/element/types").TextAlign;
385
445
  verticalAlign: import("@excalidraw/element/types").VerticalAlign;
386
- containerId: import("@excalidraw/element/types").ExcalidrawGenericElement["id"] | null;
446
+ containerId: import("@excalidraw/element/types").ExcalidrawTextContainer["id"] | null;
387
447
  originalText: string;
388
448
  autoResize: boolean;
389
449
  lineHeight: number & {
390
450
  _brand: "unitlessLineHeight";
391
451
  };
452
+ labelPosition?: number | null;
392
453
  }> & {
393
454
  isDeleted: false;
394
455
  }) | (Readonly<{
@@ -418,6 +479,7 @@ export declare class Renderer {
418
479
  frameId: string | null;
419
480
  boundElements: readonly import("@excalidraw/element/types").BoundElement[] | null;
420
481
  updated: number;
482
+ created: number | null;
421
483
  link: string | null;
422
484
  locked: boolean;
423
485
  customData?: Record<string, any>;
@@ -1,4 +1,4 @@
1
1
  export { isSomeElementSelected, getElementsWithinSelection, getSelectedElements, getTargetElements, } from "@excalidraw/element";
2
2
  export { getScrollToContentState } from "../viewport";
3
- export { hasBackground, hasStrokeWidth, hasStrokeStyle, hasFreedrawMode, canHaveArrowheads, canChangeRoundness, } from "@excalidraw/element";
3
+ export { hasBackground, hasFillStyle, hasRoughness, hasStrokeWidth, hasStrokeStyle, hasFreedrawMode, canHaveArrowheads, canChangeRoundness, } from "@excalidraw/element";
4
4
  export { getNormalizedZoom, getNormalizedGridSize, getNormalizedGridStep, } from "./normalize";
@@ -1,7 +1,7 @@
1
1
  import type { UserIdleState, EditorInterface } from "@excalidraw/common";
2
2
  import type { ExcalidrawElement, NonDeletedElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
3
3
  import type { MakeBrand } from "@excalidraw/common/utility-types";
4
- import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, PendingExcalidrawElements } from "../types";
4
+ import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementRenderOverrides, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, PendingExcalidrawElements } from "../types";
5
5
  import type { RoughCanvas } from "roughjs/bin/canvas";
6
6
  import type { Drawable } from "roughjs/bin/core";
7
7
  export type RenderableElementsMap = NonDeletedElementsMap & MakeBrand<"RenderableElementsMap">;
@@ -9,6 +9,9 @@ export type StaticCanvasRenderConfig = {
9
9
  canvasBackgroundColor: AppState["viewBackgroundColor"];
10
10
  imageCache: AppClassProperties["imageCache"];
11
11
  renderGrid: boolean;
12
+ /** whether to render link icons on elements with links (never rendered
13
+ when exporting). @default true */
14
+ renderLinks?: boolean;
12
15
  /** when exporting the behavior is slightly different (e.g. we can't use
13
16
  CSS filters), and we disable render optimizations for best output */
14
17
  isExporting: boolean;
@@ -16,6 +19,7 @@ export type StaticCanvasRenderConfig = {
16
19
  elementsPendingErasure: ElementsPendingErasure;
17
20
  pendingFlowchartNodes: PendingExcalidrawElements | null;
18
21
  theme: AppState["theme"];
22
+ elementRenderOverrides?: ElementRenderOverrides;
19
23
  };
20
24
  export type SVGRenderConfig = {
21
25
  offsetX: number;
@@ -129,6 +133,7 @@ export type ElementShapes = {
129
133
  arrow: Drawable[];
130
134
  line: Drawable[];
131
135
  text: null;
136
+ stickynote: null;
132
137
  image: null;
133
138
  frame: null;
134
139
  magicframe: null;