@nextcloud/excalidraw-common 0.18.0-4e1c0ab → 0.18.0-nc.1

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 (225) hide show
  1. package/dist/dev/index.js +204 -85
  2. package/dist/dev/index.js.map +3 -3
  3. package/dist/prod/index.js +3 -3
  4. package/dist/types/common/src/colors.d.ts +23 -1
  5. package/dist/types/common/src/constants.d.ts +66 -7
  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 +6 -43
  10. package/dist/types/element/src/Scene.d.ts +16 -5
  11. package/dist/types/element/src/align.d.ts +2 -2
  12. package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
  13. package/dist/types/element/src/arrows/focus.d.ts +5 -2
  14. package/dist/types/element/src/binding.d.ts +28 -13
  15. package/dist/types/element/src/bounds.d.ts +24 -7
  16. package/dist/types/element/src/bucketFill.d.ts +110 -0
  17. package/dist/types/element/src/collision.d.ts +14 -5
  18. package/dist/types/element/src/comparisons.d.ts +8 -5
  19. package/dist/types/element/src/convertToShape.d.ts +23 -0
  20. package/dist/types/element/src/cropElement.d.ts +36 -4
  21. package/dist/types/element/src/delta.d.ts +23 -1
  22. package/dist/types/element/src/distribute.d.ts +2 -2
  23. package/dist/types/element/src/dragElements.d.ts +27 -0
  24. package/dist/types/element/src/duplicate.d.ts +64 -3
  25. package/dist/types/element/src/embeddable.d.ts +2 -2
  26. package/dist/types/element/src/flowchart.d.ts +11 -7
  27. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  28. package/dist/types/element/src/frame.d.ts +11 -10
  29. package/dist/types/element/src/groups.d.ts +10 -15
  30. package/dist/types/element/src/index.d.ts +6 -1
  31. package/dist/types/element/src/linearElementEditor.d.ts +27 -10
  32. package/dist/types/element/src/listMarker.d.ts +34 -0
  33. package/dist/types/element/src/mutateElement.d.ts +1 -1
  34. package/dist/types/element/src/newElement.d.ts +53 -3
  35. package/dist/types/element/src/renderElement.d.ts +21 -7
  36. package/dist/types/element/src/resizeElements.d.ts +8 -1
  37. package/dist/types/element/src/selection.d.ts +6 -12
  38. package/dist/types/element/src/shape.d.ts +27 -1
  39. package/dist/types/element/src/sizeHelpers.d.ts +6 -0
  40. package/dist/types/element/src/sortElements.d.ts +10 -0
  41. package/dist/types/element/src/stickyNote.d.ts +183 -0
  42. package/dist/types/element/src/textElement.d.ts +20 -9
  43. package/dist/types/element/src/transform.d.ts +26 -7
  44. package/dist/types/element/src/typeChecks.d.ts +29 -27
  45. package/dist/types/element/src/types.d.ts +43 -7
  46. package/dist/types/element/src/utils.d.ts +15 -4
  47. package/dist/types/element/src/zindex.d.ts +2 -2
  48. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +87 -18
  49. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  50. package/dist/types/excalidraw/actions/actionBoundText.d.ts +74 -203
  51. package/dist/types/excalidraw/actions/actionCanvas.d.ts +266 -941
  52. package/dist/types/excalidraw/actions/actionClipboard.d.ts +58 -12
  53. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +29 -6
  54. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +4 -518
  55. package/dist/types/excalidraw/actions/actionDeselect.d.ts +30 -7
  56. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  57. package/dist/types/excalidraw/actions/actionElementLink.d.ts +29 -6
  58. package/dist/types/excalidraw/actions/actionElementLock.d.ts +59 -13
  59. package/dist/types/excalidraw/actions/actionExport.d.ts +64 -18
  60. package/dist/types/excalidraw/actions/actionFinalize.d.ts +1 -0
  61. package/dist/types/excalidraw/actions/actionFrame.d.ts +114 -651
  62. package/dist/types/excalidraw/actions/actionGroup.d.ts +73 -27
  63. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +84 -9
  64. package/dist/types/excalidraw/actions/actionLink.d.ts +30 -7
  65. package/dist/types/excalidraw/actions/actionMenu.d.ts +29 -6
  66. package/dist/types/excalidraw/actions/actionProperties.d.ts +96 -34
  67. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +34 -11
  68. package/dist/types/excalidraw/actions/actionStyles.d.ts +30 -7
  69. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  70. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +30 -7
  71. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +33 -11
  72. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +30 -7
  73. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +30 -7
  74. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +33 -11
  75. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  76. package/dist/types/excalidraw/actions/{actionEmbeddable.d.ts → actionToggleShowHints.d.ts} +45 -19
  77. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +30 -7
  78. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +31 -8
  79. package/dist/types/excalidraw/actions/actionToggleWrap.d.ts +12 -0
  80. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +30 -7
  81. package/dist/types/excalidraw/actions/colorTargets.d.ts +39 -0
  82. package/dist/types/excalidraw/actions/index.d.ts +3 -2
  83. package/dist/types/excalidraw/actions/manager.d.ts +1 -0
  84. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  85. package/dist/types/excalidraw/actions/types.d.ts +8 -4
  86. package/dist/types/excalidraw/{animated-trail.d.ts → animatedTrail.d.ts} +4 -3
  87. package/dist/types/excalidraw/appState.d.ts +34 -10
  88. package/dist/types/excalidraw/components/Actions.d.ts +17 -12
  89. package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +1 -1
  90. package/dist/types/excalidraw/components/App.arrowText.d.ts +70 -0
  91. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  92. package/dist/types/excalidraw/components/App.clipboard.d.ts +31 -0
  93. package/dist/types/excalidraw/components/App.cursor.d.ts +38 -0
  94. package/dist/types/excalidraw/components/App.d.ts +324 -111
  95. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  96. package/dist/types/excalidraw/components/App.duplicate.d.ts +101 -0
  97. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  98. package/dist/types/excalidraw/components/App.modifiers.d.ts +38 -0
  99. package/dist/types/excalidraw/components/App.pan.d.ts +62 -0
  100. package/dist/types/excalidraw/components/App.selection.d.ts +265 -0
  101. package/dist/types/excalidraw/components/App.selectionTool.d.ts +93 -0
  102. package/dist/types/excalidraw/components/App.text.d.ts +146 -0
  103. package/dist/types/excalidraw/components/App.textTool.d.ts +140 -0
  104. package/dist/types/excalidraw/components/App.toolDrag.d.ts +63 -0
  105. package/dist/types/excalidraw/components/App.viewport.d.ts +113 -0
  106. package/dist/types/excalidraw/components/App.wheel.d.ts +26 -0
  107. package/dist/types/excalidraw/components/App.wrap.d.ts +31 -0
  108. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -3
  109. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  110. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +5 -1
  111. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -2
  112. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
  113. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  114. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +1 -1
  115. package/dist/types/excalidraw/components/ColorPicker/colorTopPicksDnD.d.ts +11 -0
  116. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -1
  117. package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -2
  118. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
  119. package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
  120. package/dist/types/excalidraw/components/EyeDropper.d.ts +1 -1
  121. package/dist/types/excalidraw/components/FileDropOverlay.d.ts +2 -0
  122. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +4 -1
  123. package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +6 -1
  124. package/dist/types/excalidraw/components/FontPicker/fontTopPicksDnD.d.ts +12 -0
  125. package/dist/types/excalidraw/components/IconButton.d.ts +48 -0
  126. package/dist/types/excalidraw/components/Island.d.ts +7 -0
  127. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  128. package/dist/types/excalidraw/components/LayerUI.d.ts +5 -2
  129. package/dist/types/excalidraw/components/LibraryMenu.d.ts +1 -1
  130. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +3 -1
  131. package/dist/types/excalidraw/components/LibraryMenuItems.d.ts +3 -1
  132. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +6 -2
  133. package/dist/types/excalidraw/components/LibraryUnit.d.ts +7 -2
  134. package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
  135. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
  136. package/dist/types/excalidraw/components/MobileMenu.d.ts +4 -4
  137. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  138. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
  139. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  140. package/dist/types/excalidraw/components/Popover.d.ts +1 -3
  141. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  142. package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
  143. package/dist/types/excalidraw/components/SearchMenu.d.ts +1 -1
  144. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +1 -1
  145. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  146. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  147. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -2
  148. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  149. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
  150. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  151. package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
  152. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  153. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +4 -4
  154. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +3 -3
  155. package/dist/types/excalidraw/components/ToolPopover.d.ts +3 -6
  156. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  157. package/dist/types/excalidraw/components/Tools.d.ts +151 -0
  158. package/dist/types/excalidraw/components/Tooltip.d.ts +15 -1
  159. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksContextMenu.d.ts +14 -0
  160. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksTip.d.ts +11 -0
  161. package/dist/types/excalidraw/components/TopPicksDnD/topPicksDnD.d.ts +58 -0
  162. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  163. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  164. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +3 -1
  165. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +3 -0
  166. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
  167. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -1
  168. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  169. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +2 -2
  170. package/dist/types/excalidraw/components/icons.d.ts +7 -1
  171. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +10 -4
  172. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  173. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  174. package/dist/types/excalidraw/data/blob.d.ts +70 -24
  175. package/dist/types/excalidraw/data/index.d.ts +4 -4
  176. package/dist/types/excalidraw/data/json.d.ts +41 -18
  177. package/dist/types/excalidraw/data/library.d.ts +1 -1
  178. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  179. package/dist/types/excalidraw/eraser/index.d.ts +2 -3
  180. package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -2
  181. package/dist/types/excalidraw/hooks/useAppStateValue.d.ts +29 -0
  182. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  183. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +5 -5
  184. package/dist/types/excalidraw/{laser-trails.d.ts → laserTrails.d.ts} +5 -7
  185. package/dist/types/excalidraw/lasso/index.d.ts +2 -3
  186. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  187. package/dist/types/excalidraw/renderOverrides.d.ts +9 -0
  188. package/dist/types/excalidraw/renderer/animation.d.ts +5 -1
  189. package/dist/types/excalidraw/renderer/helpers.d.ts +25 -0
  190. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +2 -4
  191. package/dist/types/excalidraw/scene/Renderer.d.ts +489 -20
  192. package/dist/types/excalidraw/scene/export.d.ts +3 -3
  193. package/dist/types/excalidraw/scene/index.d.ts +2 -2
  194. package/dist/types/excalidraw/scene/types.d.ts +7 -4
  195. package/dist/types/excalidraw/snapping.d.ts +7 -7
  196. package/dist/types/excalidraw/types.d.ts +574 -29
  197. package/dist/types/excalidraw/viewport.d.ts +302 -0
  198. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +13 -3
  199. package/dist/types/fractional-indexing/src/index.d.ts +29 -0
  200. package/dist/types/laser-pointer/src/index.d.ts +2 -0
  201. package/dist/types/laser-pointer/src/math.d.ts +16 -0
  202. package/dist/types/laser-pointer/src/simplify.d.ts +2 -0
  203. package/dist/types/laser-pointer/src/state.d.ts +36 -0
  204. package/dist/types/math/src/constants.d.ts +0 -1
  205. package/dist/types/math/src/curve.d.ts +23 -13
  206. package/dist/types/math/src/index.d.ts +1 -0
  207. package/dist/types/math/src/pca.d.ts +79 -0
  208. package/dist/types/math/src/point.d.ts +1 -0
  209. package/dist/types/math/src/polygon.d.ts +25 -1
  210. package/dist/types/math/src/segment.d.ts +6 -0
  211. package/dist/types/utils/src/export.d.ts +4 -3
  212. package/dist/types/utils/src/index.d.ts +1 -2
  213. package/dist/types/utils/src/shape.d.ts +2 -2
  214. package/package.json +1 -1
  215. package/dist/types/excalidraw/animation-frame-handler.d.ts +0 -16
  216. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  217. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  218. package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -10
  219. package/dist/types/excalidraw/components/ToolButton.d.ts +0 -49
  220. package/dist/types/excalidraw/components/shapes.d.ts +0 -263
  221. package/dist/types/excalidraw/cursor.d.ts +0 -5
  222. package/dist/types/excalidraw/scene/scroll.d.ts +0 -18
  223. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
  224. package/dist/types/utils/src/bbox.d.ts +0 -9
  225. package/dist/types/utils/src/withinBounds.d.ts +0 -19
@@ -20,7 +20,13 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
20
20
  data: {
21
21
  elements: import("@nextcloud/excalidraw-element/types").OrderedExcalidrawElement[];
22
22
  appState: {
23
+ zoom: import("../types").Zoom;
23
24
  viewModeEnabled: boolean;
25
+ activeTool: {
26
+ lastActiveTool: import("../types").ActiveTool | null;
27
+ locked: boolean;
28
+ fromSelection: boolean;
29
+ } & import("../types").ActiveTool;
24
30
  zenModeEnabled: boolean;
25
31
  gridModeEnabled: boolean;
26
32
  objectsSnapModeEnabled: boolean;
@@ -28,11 +34,6 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
28
34
  name: string | null;
29
35
  currentItemArrowType: "sharp" | "round" | "elbow";
30
36
  gridSize: number;
31
- activeTool: {
32
- lastActiveTool: import("../types").ActiveTool | null;
33
- locked: boolean;
34
- fromSelection: boolean;
35
- } & import("../types").ActiveTool;
36
37
  contextMenu: {
37
38
  items: import("../components/ContextMenu").ContextMenuItems;
38
39
  top: number;
@@ -50,13 +51,26 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
50
51
  multiElement: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawLinearElement> | null;
51
52
  selectionElement: import("@nextcloud/excalidraw-element/types").NonDeletedExcalidrawElement | null;
52
53
  isBindingEnabled: boolean;
54
+ boxSelectionMode: import("../types").BoxSelectionMode;
53
55
  bindingPreference: "enabled" | "disabled";
54
56
  isMidpointSnappingEnabled: boolean;
55
- startBoundElement: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawBindableElement> | null;
57
+ showHints: boolean;
58
+ inputDevice: import("../types").InputDevice;
56
59
  suggestedBinding: {
57
60
  element: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawBindableElement>;
58
61
  midPoint?: import("@nextcloud/excalidraw-math").GlobalPoint;
59
62
  } | null;
63
+ textToolHover: {
64
+ type: "text";
65
+ elementId: ExcalidrawElement["id"];
66
+ } | {
67
+ type: "container";
68
+ elementId: ExcalidrawElement["id"];
69
+ } | {
70
+ type: "arrow";
71
+ elementId: import("@nextcloud/excalidraw-element/types").ExcalidrawArrowElement["id"];
72
+ anchor: "start" | "end" | "label";
73
+ } | null;
60
74
  frameToHighlight: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawFrameLikeElement> | null;
61
75
  frameRendering: {
62
76
  enabled: boolean;
@@ -64,8 +78,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
64
78
  outline: boolean;
65
79
  clip: boolean;
66
80
  };
67
- editingFrame: string | null;
68
- elementsToHighlight: import("@nextcloud/excalidraw-element/types").NonDeleted<ExcalidrawElement>[] | null;
81
+ editingFrame: import("@nextcloud/excalidraw-element/types").ExcalidrawFrameLikeElement["id"] | null;
82
+ elementsToHighlight: readonly import("@nextcloud/excalidraw-element/types").NonDeletedExcalidrawElement[] | null;
69
83
  editingTextElement: import("@nextcloud/excalidraw-element/types").ExcalidrawTextElement | null;
70
84
  preferredSelectionTool: {
71
85
  type: "selection" | "lasso";
@@ -78,11 +92,14 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
78
92
  exportWithDarkMode: boolean;
79
93
  exportScale: number;
80
94
  currentItemStrokeColor: string;
95
+ currentItemStickynoteStrokeColor: string;
96
+ currentItemStickynoteBackgroundColor: string;
81
97
  currentItemBackgroundColor: string;
82
98
  currentItemFillStyle: ExcalidrawElement["fillStyle"];
83
- currentItemStrokeWidth: number;
99
+ currentItemStrokeWidthKey: import("@nextcloud/excalidraw-common").StrokeWidthKey;
84
100
  currentItemStrokeStyle: ExcalidrawElement["strokeStyle"];
85
101
  currentItemRoughness: number;
102
+ currentItemStrokeVariability: import("@nextcloud/excalidraw-element/types").StrokeVariability;
86
103
  currentItemOpacity: number;
87
104
  currentItemFontFamily: import("@nextcloud/excalidraw-element/types").FontFamilyValues;
88
105
  currentItemFontSize: number;
@@ -94,11 +111,11 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
94
111
  viewBackgroundColor: string;
95
112
  scrollX: number;
96
113
  scrollY: number;
114
+ scrollConstraints: import("../types").ScrollConstraints | null;
97
115
  cursorButton: "up" | "down";
98
116
  scrolledOutside: boolean;
99
117
  isResizing: boolean;
100
118
  isRotating: boolean;
101
- zoom: import("../types").Zoom;
102
119
  openMenu: "canvas" | null;
103
120
  openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
104
121
  openSidebar: {
@@ -158,8 +175,6 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
158
175
  x: number;
159
176
  y: number;
160
177
  } | null;
161
- userToFollow: import("../types").UserToFollow | null;
162
- followedBy: Set<import("../types").SocketId>;
163
178
  isCropping: boolean;
164
179
  croppingElementId: ExcalidrawElement["id"] | null;
165
180
  searchMatches: Readonly<{
@@ -171,6 +186,14 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
171
186
  [groupId: string]: true;
172
187
  };
173
188
  bindMode: import("@nextcloud/excalidraw-element/types").BindMode;
189
+ colorTopPicks: {
190
+ elementStroke: readonly string[] | null;
191
+ elementBackground: readonly string[] | null;
192
+ bucketFill: readonly string[] | null;
193
+ stickyNoteStroke: readonly string[] | null;
194
+ stickyNoteBackground: readonly string[] | null;
195
+ };
196
+ fontTopPicks: readonly import("@nextcloud/excalidraw-element/types").FontFamilyValues[] | null;
174
197
  };
175
198
  files: import("../types").BinaryFiles;
176
199
  };
@@ -185,7 +208,13 @@ localAppState: AppState | null, localElements: readonly ExcalidrawElement[] | nu
185
208
  fileHandle?: FileSystemFileHandle | null) => Promise<{
186
209
  elements: import("@nextcloud/excalidraw-element/types").OrderedExcalidrawElement[];
187
210
  appState: {
211
+ zoom: import("../types").Zoom;
188
212
  viewModeEnabled: boolean;
213
+ activeTool: {
214
+ lastActiveTool: import("../types").ActiveTool | null;
215
+ locked: boolean;
216
+ fromSelection: boolean;
217
+ } & import("../types").ActiveTool;
189
218
  zenModeEnabled: boolean;
190
219
  gridModeEnabled: boolean;
191
220
  objectsSnapModeEnabled: boolean;
@@ -193,11 +222,6 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
193
222
  name: string | null;
194
223
  currentItemArrowType: "sharp" | "round" | "elbow";
195
224
  gridSize: number;
196
- activeTool: {
197
- lastActiveTool: import("../types").ActiveTool | null;
198
- locked: boolean;
199
- fromSelection: boolean;
200
- } & import("../types").ActiveTool;
201
225
  contextMenu: {
202
226
  items: import("../components/ContextMenu").ContextMenuItems;
203
227
  top: number;
@@ -215,13 +239,26 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
215
239
  multiElement: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawLinearElement> | null;
216
240
  selectionElement: import("@nextcloud/excalidraw-element/types").NonDeletedExcalidrawElement | null;
217
241
  isBindingEnabled: boolean;
242
+ boxSelectionMode: import("../types").BoxSelectionMode;
218
243
  bindingPreference: "enabled" | "disabled";
219
244
  isMidpointSnappingEnabled: boolean;
220
- startBoundElement: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawBindableElement> | null;
245
+ showHints: boolean;
246
+ inputDevice: import("../types").InputDevice;
221
247
  suggestedBinding: {
222
248
  element: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawBindableElement>;
223
249
  midPoint?: import("@nextcloud/excalidraw-math").GlobalPoint;
224
250
  } | null;
251
+ textToolHover: {
252
+ type: "text";
253
+ elementId: ExcalidrawElement["id"];
254
+ } | {
255
+ type: "container";
256
+ elementId: ExcalidrawElement["id"];
257
+ } | {
258
+ type: "arrow";
259
+ elementId: import("@nextcloud/excalidraw-element/types").ExcalidrawArrowElement["id"];
260
+ anchor: "start" | "end" | "label";
261
+ } | null;
225
262
  frameToHighlight: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawFrameLikeElement> | null;
226
263
  frameRendering: {
227
264
  enabled: boolean;
@@ -229,8 +266,8 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
229
266
  outline: boolean;
230
267
  clip: boolean;
231
268
  };
232
- editingFrame: string | null;
233
- elementsToHighlight: import("@nextcloud/excalidraw-element/types").NonDeleted<ExcalidrawElement>[] | null;
269
+ editingFrame: import("@nextcloud/excalidraw-element/types").ExcalidrawFrameLikeElement["id"] | null;
270
+ elementsToHighlight: readonly import("@nextcloud/excalidraw-element/types").NonDeletedExcalidrawElement[] | null;
234
271
  editingTextElement: import("@nextcloud/excalidraw-element/types").ExcalidrawTextElement | null;
235
272
  preferredSelectionTool: {
236
273
  type: "selection" | "lasso";
@@ -243,11 +280,14 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
243
280
  exportWithDarkMode: boolean;
244
281
  exportScale: number;
245
282
  currentItemStrokeColor: string;
283
+ currentItemStickynoteStrokeColor: string;
284
+ currentItemStickynoteBackgroundColor: string;
246
285
  currentItemBackgroundColor: string;
247
286
  currentItemFillStyle: ExcalidrawElement["fillStyle"];
248
- currentItemStrokeWidth: number;
287
+ currentItemStrokeWidthKey: import("@nextcloud/excalidraw-common").StrokeWidthKey;
249
288
  currentItemStrokeStyle: ExcalidrawElement["strokeStyle"];
250
289
  currentItemRoughness: number;
290
+ currentItemStrokeVariability: import("@nextcloud/excalidraw-element/types").StrokeVariability;
251
291
  currentItemOpacity: number;
252
292
  currentItemFontFamily: import("@nextcloud/excalidraw-element/types").FontFamilyValues;
253
293
  currentItemFontSize: number;
@@ -259,11 +299,11 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
259
299
  viewBackgroundColor: string;
260
300
  scrollX: number;
261
301
  scrollY: number;
302
+ scrollConstraints: import("../types").ScrollConstraints | null;
262
303
  cursorButton: "up" | "down";
263
304
  scrolledOutside: boolean;
264
305
  isResizing: boolean;
265
306
  isRotating: boolean;
266
- zoom: import("../types").Zoom;
267
307
  openMenu: "canvas" | null;
268
308
  openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
269
309
  openSidebar: {
@@ -323,8 +363,6 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
323
363
  x: number;
324
364
  y: number;
325
365
  } | null;
326
- userToFollow: import("../types").UserToFollow | null;
327
- followedBy: Set<import("../types").SocketId>;
328
366
  isCropping: boolean;
329
367
  croppingElementId: ExcalidrawElement["id"] | null;
330
368
  searchMatches: Readonly<{
@@ -336,6 +374,14 @@ fileHandle?: FileSystemFileHandle | null) => Promise<{
336
374
  [groupId: string]: true;
337
375
  };
338
376
  bindMode: import("@nextcloud/excalidraw-element/types").BindMode;
377
+ colorTopPicks: {
378
+ elementStroke: readonly string[] | null;
379
+ elementBackground: readonly string[] | null;
380
+ bucketFill: readonly string[] | null;
381
+ stickyNoteStroke: readonly string[] | null;
382
+ stickyNoteBackground: readonly string[] | null;
383
+ };
384
+ fontTopPicks: readonly import("@nextcloud/excalidraw-element/types").FontFamilyValues[] | null;
339
385
  };
340
386
  files: import("../types").BinaryFiles;
341
387
  }>;
@@ -1,4 +1,4 @@
1
- import type { ExcalidrawElement, ExcalidrawFrameLikeElement, NonDeletedExcalidrawElement } from "@nextcloud/excalidraw-element/types";
1
+ import type { ExcalidrawElement, ExcalidrawFrameLikeElement, NonDeleted, NonDeletedExcalidrawElement } from "@nextcloud/excalidraw-element/types";
2
2
  import type { ExportType } from "../scene/types";
3
3
  import type { AppState, BinaryFiles } from "../types";
4
4
  export { loadFromBlob } from "./blob";
@@ -6,8 +6,8 @@ export { loadFromJSON, saveAsJSON } from "./json";
6
6
  export type ExportedElements = readonly NonDeletedExcalidrawElement[] & {
7
7
  _brand: "exportedElements";
8
8
  };
9
- export declare const prepareElementsForExport: (elements: readonly ExcalidrawElement[], { selectedElementIds }: Pick<AppState, "selectedElementIds">, exportSelectionOnly: boolean) => {
10
- exportingFrame: ExcalidrawFrameLikeElement | null;
9
+ export declare const prepareElementsForExport: (allElements: readonly ExcalidrawElement[], { selectedElementIds }: Pick<AppState, "selectedElementIds">, exportSelectionOnly: boolean) => {
10
+ exportingFrame: NonDeleted<ExcalidrawFrameLikeElement> | null;
11
11
  exportedElements: ExportedElements;
12
12
  };
13
13
  export declare const exportCanvas: (type: Omit<ExportType, "backend">, elements: ExportedElements, appState: AppState, files: BinaryFiles, { exportBackground, exportPadding, viewBackgroundColor, name, fileHandle, exportingFrame, }: {
@@ -17,5 +17,5 @@ export declare const exportCanvas: (type: Omit<ExportType, "backend">, elements:
17
17
  /** filename, if applicable */
18
18
  name?: string;
19
19
  fileHandle?: FileSystemFileHandle | null;
20
- exportingFrame: ExcalidrawFrameLikeElement | null;
20
+ exportingFrame: NonDeleted<ExcalidrawFrameLikeElement> | null;
21
21
  }) => Promise<FileSystemFileHandle | null | undefined>;
@@ -1,9 +1,9 @@
1
- import type { ExcalidrawElement, NonDeleted } from "@nextcloud/excalidraw-element/types";
1
+ import type { ExcalidrawElement } from "@nextcloud/excalidraw-element/types";
2
2
  import type { MaybePromise } from "@nextcloud/excalidraw-common/utility-types";
3
3
  import type { AppState, BinaryFiles, LibraryItems } from "../types";
4
4
  import type { ImportedDataState, ImportedLibraryData } from "./types";
5
5
  export type JSONExportData = {
6
- elements: readonly NonDeleted<ExcalidrawElement>[];
6
+ elements: readonly ExcalidrawElement[];
7
7
  appState: AppState;
8
8
  files: BinaryFiles;
9
9
  };
@@ -18,7 +18,13 @@ export declare const saveAsJSON: ({ data, filename, fileHandle, }: {
18
18
  export declare const loadFromJSON: (localAppState: AppState, localElements: readonly ExcalidrawElement[] | null) => Promise<{
19
19
  elements: import("@nextcloud/excalidraw-element/types").OrderedExcalidrawElement[];
20
20
  appState: {
21
+ zoom: import("../types").Zoom;
21
22
  viewModeEnabled: boolean;
23
+ activeTool: {
24
+ lastActiveTool: import("../types").ActiveTool | null;
25
+ locked: boolean;
26
+ fromSelection: boolean;
27
+ } & import("../types").ActiveTool;
22
28
  zenModeEnabled: boolean;
23
29
  gridModeEnabled: boolean;
24
30
  objectsSnapModeEnabled: boolean;
@@ -26,11 +32,6 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
26
32
  name: string | null;
27
33
  currentItemArrowType: "sharp" | "round" | "elbow";
28
34
  gridSize: number;
29
- activeTool: {
30
- lastActiveTool: import("../types").ActiveTool | null;
31
- locked: boolean;
32
- fromSelection: boolean;
33
- } & import("../types").ActiveTool;
34
35
  contextMenu: {
35
36
  items: import("../components/ContextMenu").ContextMenuItems;
36
37
  top: number;
@@ -43,27 +44,40 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
43
44
  element: import("@nextcloud/excalidraw-element/types").NonDeletedExcalidrawElement;
44
45
  state: "hover" | "active";
45
46
  } | null;
46
- newElement: NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawNonSelectionElement> | null;
47
+ newElement: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawNonSelectionElement> | null;
47
48
  resizingElement: import("@nextcloud/excalidraw-element/types").NonDeletedExcalidrawElement | null;
48
- multiElement: NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawLinearElement> | null;
49
+ multiElement: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawLinearElement> | null;
49
50
  selectionElement: import("@nextcloud/excalidraw-element/types").NonDeletedExcalidrawElement | null;
50
51
  isBindingEnabled: boolean;
52
+ boxSelectionMode: import("../types").BoxSelectionMode;
51
53
  bindingPreference: "enabled" | "disabled";
52
54
  isMidpointSnappingEnabled: boolean;
53
- startBoundElement: NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawBindableElement> | null;
55
+ showHints: boolean;
56
+ inputDevice: import("../types").InputDevice;
54
57
  suggestedBinding: {
55
- element: NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawBindableElement>;
58
+ element: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawBindableElement>;
56
59
  midPoint?: import("@nextcloud/excalidraw-math").GlobalPoint;
57
60
  } | null;
58
- frameToHighlight: NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawFrameLikeElement> | null;
61
+ textToolHover: {
62
+ type: "text";
63
+ elementId: ExcalidrawElement["id"];
64
+ } | {
65
+ type: "container";
66
+ elementId: ExcalidrawElement["id"];
67
+ } | {
68
+ type: "arrow";
69
+ elementId: import("@nextcloud/excalidraw-element/types").ExcalidrawArrowElement["id"];
70
+ anchor: "start" | "end" | "label";
71
+ } | null;
72
+ frameToHighlight: import("@nextcloud/excalidraw-element/types").NonDeleted<import("@nextcloud/excalidraw-element/types").ExcalidrawFrameLikeElement> | null;
59
73
  frameRendering: {
60
74
  enabled: boolean;
61
75
  name: boolean;
62
76
  outline: boolean;
63
77
  clip: boolean;
64
78
  };
65
- editingFrame: string | null;
66
- elementsToHighlight: NonDeleted<ExcalidrawElement>[] | null;
79
+ editingFrame: import("@nextcloud/excalidraw-element/types").ExcalidrawFrameLikeElement["id"] | null;
80
+ elementsToHighlight: readonly import("@nextcloud/excalidraw-element/types").NonDeletedExcalidrawElement[] | null;
67
81
  editingTextElement: import("@nextcloud/excalidraw-element/types").ExcalidrawTextElement | null;
68
82
  preferredSelectionTool: {
69
83
  type: "selection" | "lasso";
@@ -76,11 +90,14 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
76
90
  exportWithDarkMode: boolean;
77
91
  exportScale: number;
78
92
  currentItemStrokeColor: string;
93
+ currentItemStickynoteStrokeColor: string;
94
+ currentItemStickynoteBackgroundColor: string;
79
95
  currentItemBackgroundColor: string;
80
96
  currentItemFillStyle: ExcalidrawElement["fillStyle"];
81
- currentItemStrokeWidth: number;
97
+ currentItemStrokeWidthKey: import("@nextcloud/excalidraw-common").StrokeWidthKey;
82
98
  currentItemStrokeStyle: ExcalidrawElement["strokeStyle"];
83
99
  currentItemRoughness: number;
100
+ currentItemStrokeVariability: import("@nextcloud/excalidraw-element/types").StrokeVariability;
84
101
  currentItemOpacity: number;
85
102
  currentItemFontFamily: import("@nextcloud/excalidraw-element/types").FontFamilyValues;
86
103
  currentItemFontSize: number;
@@ -92,11 +109,11 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
92
109
  viewBackgroundColor: string;
93
110
  scrollX: number;
94
111
  scrollY: number;
112
+ scrollConstraints: import("../types").ScrollConstraints | null;
95
113
  cursorButton: "up" | "down";
96
114
  scrolledOutside: boolean;
97
115
  isResizing: boolean;
98
116
  isRotating: boolean;
99
- zoom: import("../types").Zoom;
100
117
  openMenu: "canvas" | null;
101
118
  openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
102
119
  openSidebar: {
@@ -156,8 +173,6 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
156
173
  x: number;
157
174
  y: number;
158
175
  } | null;
159
- userToFollow: import("../types").UserToFollow | null;
160
- followedBy: Set<import("../types").SocketId>;
161
176
  isCropping: boolean;
162
177
  croppingElementId: ExcalidrawElement["id"] | null;
163
178
  searchMatches: Readonly<{
@@ -169,6 +184,14 @@ export declare const loadFromJSON: (localAppState: AppState, localElements: read
169
184
  [groupId: string]: true;
170
185
  };
171
186
  bindMode: import("@nextcloud/excalidraw-element/types").BindMode;
187
+ colorTopPicks: {
188
+ elementStroke: readonly string[] | null;
189
+ elementBackground: readonly string[] | null;
190
+ bucketFill: readonly string[] | null;
191
+ stickyNoteStroke: readonly string[] | null;
192
+ stickyNoteBackground: readonly string[] | null;
193
+ };
194
+ fontTopPicks: readonly import("@nextcloud/excalidraw-element/types").FontFamilyValues[] | null;
172
195
  };
173
196
  files: BinaryFiles;
174
197
  }>;
@@ -37,7 +37,7 @@ export interface LibraryMigrationAdapter {
37
37
  /** clears entire storage afterwards */
38
38
  clear(): MaybePromise<void>;
39
39
  }
40
- export declare const libraryItemsAtom: import("jotai/vanilla/atom").PrimitiveAtom<{
40
+ export declare const libraryItemsAtom: import("jotai").PrimitiveAtom<{
41
41
  status: "loading" | "loaded";
42
42
  /** indicates whether library is initialized with library items (has gone
43
43
  * through at least one update). Used in UI. Specific to this atom only. */
@@ -0,0 +1,16 @@
1
+ import type { GlobalPoint } from "@nextcloud/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
+ }
@@ -1,10 +1,9 @@
1
- import { AnimatedTrail } from "../animated-trail";
2
- import type { AnimationFrameHandler } from "../animation-frame-handler";
1
+ import { AnimatedTrail } from "../animatedTrail";
3
2
  import type App from "../components/App";
4
3
  export declare class EraserTrail extends AnimatedTrail {
5
4
  private elementsToErase;
6
5
  private groupsToErase;
7
- constructor(animationFrameHandler: AnimationFrameHandler, app: App);
6
+ constructor(app: App);
8
7
  startPath(x: number, y: number): void;
9
8
  addPointToPath(x: number, y: number, restore?: boolean): string[];
10
9
  private updateElementsToBeErased;
@@ -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
  */
@@ -0,0 +1,29 @@
1
+ import type { AppState } from "../types";
2
+ /**
3
+ * Subscribes to specific appState changes. The component re-renders
4
+ * only when the specified prop(s) change — not on every appState update.
5
+ *
6
+ * Works both inside and outside the <Excalidraw> tree, as long as
7
+ * ExcalidrawAPIContext.Provider is an ancestor (automatically provided
8
+ * inside <Excalidraw>, or manually by the host app).
9
+ *
10
+ * Returns the narrowed value depending on prop form:
11
+ * - `keyof AppState` → `AppState[K]`
12
+ * - `(keyof AppState)[]` → whole `AppState`
13
+ * - selector function → selector's return type `T`
14
+ *
15
+ * If excalidrawAPI is not ready yet (host apps), hook is rerendered with latest
16
+ * value once available.
17
+ */
18
+ export declare function useAppStateValue<K extends keyof AppState>(prop: K, _internal?: boolean): AppState[K];
19
+ export declare function useAppStateValue(props: (keyof AppState)[], _internal?: boolean): AppState;
20
+ export declare function useAppStateValue<T>(selector: (appState: AppState) => T, _internal?: boolean): T;
21
+ /**
22
+ * Subscribes to specific appState changes without causing component rerenders.
23
+ *
24
+ * The callback is called on every matching change, but also on initial render
25
+ * so you can initialize your state.
26
+ */
27
+ export declare function useOnAppStateChange<K extends keyof AppState>(prop: K, callback: (value: AppState[K], appState: AppState) => void): undefined;
28
+ export declare function useOnAppStateChange(props: (keyof AppState)[], callback: (props: AppState, appState: AppState) => void): undefined;
29
+ export declare function useOnAppStateChange<T>(selector: (appState: AppState) => T, callback: (value: T, appState: AppState) => void): undefined;
@@ -1,6 +1,6 @@
1
1
  import type { LibraryItem } from "../types";
2
2
  export type SvgCache = Map<LibraryItem["id"], SVGSVGElement>;
3
- export declare const libraryItemSvgsCache: import("jotai/vanilla/atom").PrimitiveAtom<SvgCache> & {
3
+ export declare const libraryItemSvgsCache: import("jotai").PrimitiveAtom<SvgCache> & {
4
4
  init: SvgCache;
5
5
  };
6
6
  export declare const useLibraryItemSvg: (id: LibraryItem["id"] | null, elements: LibraryItem["elements"] | undefined, svgCache: SvgCache, ref: React.RefObject<HTMLDivElement | null>) => SVGSVGElement | undefined;
@@ -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,20 +1,18 @@
1
- import { AnimatedTrail } from "./animated-trail";
2
- import type { Trail } from "./animated-trail";
3
- import type { AnimationFrameHandler } from "./animation-frame-handler";
1
+ import { AnimatedTrail } from "./animatedTrail";
2
+ import type { Trail } from "./animatedTrail";
4
3
  import type App from "./components/App";
5
4
  export declare class LaserTrails implements Trail {
6
- private animationFrameHandler;
7
5
  private app;
8
6
  localTrail: AnimatedTrail;
9
7
  private collabTrails;
10
8
  private container?;
11
- constructor(animationFrameHandler: AnimationFrameHandler, app: App);
9
+ constructor(app: App);
12
10
  private getTrailOptions;
13
11
  startPath(x: number, y: number): void;
14
12
  addPointToPath(x: number, y: number): void;
15
13
  endPath(): void;
16
14
  start(container: SVGSVGElement): void;
17
15
  stop(): void;
18
- onFrame(): void;
19
- private updateCollabTrails;
16
+ private stopCollabTrails;
17
+ updateCollabTrails(collaborators: App["state"]["collaborators"]): void;
20
18
  }
@@ -1,5 +1,4 @@
1
- import { type AnimationFrameHandler } from "../animation-frame-handler";
2
- import { AnimatedTrail } from "../animated-trail";
1
+ import { AnimatedTrail } from "../animatedTrail";
3
2
  import type App from "../components/App";
4
3
  export declare class LassoTrail extends AnimatedTrail {
5
4
  private intersectedElements;
@@ -7,7 +6,7 @@ export declare class LassoTrail extends AnimatedTrail {
7
6
  private elementsSegments;
8
7
  private canvasTranslate;
9
8
  private keepPreviousSelection;
10
- constructor(animationFrameHandler: AnimationFrameHandler, app: App);
9
+ constructor(app: App);
11
10
  startPath(x: number, y: number, keepPreviousSelection?: boolean): void;
12
11
  selectElementsFromIds: (ids: string[]) => void;
13
12
  addPointToPath: (x: number, y: number, keepPreviousSelection?: boolean) => void;
@@ -1,5 +1,6 @@
1
1
  import type { ElementsSegmentsMap, GlobalPoint } from "@nextcloud/excalidraw-math/types";
2
2
  import type { ElementsMap, ExcalidrawElement } from "@nextcloud/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;
@@ -3,10 +3,14 @@ export type Animation<R extends object> = (params: {
3
3
  state?: R;
4
4
  }) => R | null | undefined;
5
5
  export declare class AnimationController {
6
- private static isRunning;
6
+ private static scheduledFrame;
7
7
  private static animations;
8
8
  static start<R extends object>(key: string, animation: Animation<R>): void;
9
+ private static scheduleNextFrame;
10
+ private static cancelScheduledFrame;
11
+ private static cancelScheduledFrameIfIdle;
9
12
  private static tick;
10
13
  static running(key: string): boolean;
11
14
  static cancel(key: string): void;
15
+ static reset(): void;
12
16
  }
@@ -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;