@excalidraw/common 0.18.0-3bdaafe → 0.18.0-3c916c5

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 (378) hide show
  1. package/dist/dev/index.js +1867 -345
  2. package/dist/dev/index.js.map +4 -4
  3. package/dist/prod/index.js +3 -3
  4. package/dist/types/common/debug.d.ts +21 -0
  5. package/dist/types/common/src/appEventBus.d.ts +27 -0
  6. package/dist/types/common/src/bounds.d.ts +10 -0
  7. package/dist/types/common/src/colors.d.ts +81 -39
  8. package/dist/types/common/src/constants.d.ts +103 -35
  9. package/dist/types/common/src/editorInterface.d.ts +34 -0
  10. package/dist/types/common/src/font-metadata.d.ts +1 -3
  11. package/dist/types/common/src/index.d.ts +5 -0
  12. package/dist/types/common/src/keys.d.ts +5 -1
  13. package/dist/types/common/src/points.d.ts +1 -1
  14. package/dist/types/common/src/random.d.ts +7 -0
  15. package/dist/types/common/src/utility-types.d.ts +0 -1
  16. package/dist/types/common/src/utils.d.ts +59 -78
  17. package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
  18. package/dist/types/element/src/Scene.d.ts +12 -8
  19. package/dist/types/element/src/align.d.ts +5 -2
  20. package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
  21. package/dist/types/element/src/arrowheads.d.ts +3 -0
  22. package/dist/types/element/src/arrows/focus.d.ts +30 -0
  23. package/dist/types/element/src/arrows/helpers.d.ts +5 -0
  24. package/dist/types/element/src/binding.d.ts +145 -49
  25. package/dist/types/element/src/bounds.d.ts +34 -19
  26. package/dist/types/element/src/bucketFill.d.ts +110 -0
  27. package/dist/types/element/src/collision.d.ts +24 -3
  28. package/dist/types/element/src/comparisons.d.ts +10 -7
  29. package/dist/types/element/src/convertToShape.d.ts +23 -0
  30. package/dist/types/element/src/cropElement.d.ts +36 -4
  31. package/dist/types/element/src/delta.d.ts +30 -2
  32. package/dist/types/element/src/distribute.d.ts +6 -2
  33. package/dist/types/element/src/dragElements.d.ts +37 -5
  34. package/dist/types/element/src/duplicate.d.ts +67 -6
  35. package/dist/types/element/src/elbowArrow.d.ts +7 -0
  36. package/dist/types/element/src/embeddable.d.ts +3 -2
  37. package/dist/types/element/src/flowchart.d.ts +9 -11
  38. package/dist/types/element/src/fractionalIndex.d.ts +4 -4
  39. package/dist/types/element/src/frame.d.ts +35 -12
  40. package/dist/types/element/src/groups.d.ts +10 -15
  41. package/dist/types/element/src/heading.d.ts +2 -1
  42. package/dist/types/element/src/image.d.ts +6 -13
  43. package/dist/types/element/src/index.d.ts +11 -4
  44. package/dist/types/element/src/linearElementEditor.d.ts +51 -30
  45. package/dist/types/element/src/listMarker.d.ts +39 -0
  46. package/dist/types/element/src/mutateElement.d.ts +6 -2
  47. package/dist/types/element/src/newElement.d.ts +61 -9
  48. package/dist/types/element/src/renderElement.d.ts +33 -12
  49. package/dist/types/element/src/renderEnvironment.d.ts +66 -0
  50. package/dist/types/element/src/resizeElements.d.ts +24 -14
  51. package/dist/types/element/src/resizeTest.d.ts +6 -5
  52. package/dist/types/element/src/selection.d.ts +11 -17
  53. package/dist/types/element/src/shape.d.ts +38 -9
  54. package/dist/types/element/src/sizeHelpers.d.ts +6 -0
  55. package/dist/types/element/src/sortElements.d.ts +10 -0
  56. package/dist/types/element/src/stickyNote.d.ts +191 -0
  57. package/dist/types/element/src/textElement.d.ts +23 -11
  58. package/dist/types/element/src/textMeasurements.d.ts +16 -14
  59. package/dist/types/element/src/textWrapping.d.ts +28 -1
  60. package/dist/types/{excalidraw/data → element/src}/transform.d.ts +32 -9
  61. package/dist/types/element/src/transformHandles.d.ts +8 -27
  62. package/dist/types/element/src/typeChecks.d.ts +30 -31
  63. package/dist/types/element/src/types.d.ts +55 -20
  64. package/dist/types/element/src/utils.d.ts +22 -6
  65. package/dist/types/element/src/zindex.d.ts +7 -1
  66. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +248 -219
  67. package/dist/types/excalidraw/actions/actionAlign.d.ts +12 -13
  68. package/dist/types/excalidraw/actions/actionBoundText.d.ts +116 -272
  69. package/dist/types/excalidraw/actions/actionCanvas.d.ts +578 -1611
  70. package/dist/types/excalidraw/actions/actionClipboard.d.ts +177 -899
  71. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +73 -64
  72. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +4 -562
  73. package/dist/types/excalidraw/actions/actionDeselect.d.ts +182 -0
  74. package/dist/types/excalidraw/actions/actionDistribute.d.ts +4 -6
  75. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +3 -4
  76. package/dist/types/excalidraw/actions/actionElementLink.d.ts +80 -77
  77. package/dist/types/excalidraw/actions/actionElementLock.d.ts +149 -130
  78. package/dist/types/excalidraw/actions/actionExport.d.ts +229 -1415
  79. package/dist/types/excalidraw/actions/actionFinalize.d.ts +11 -394
  80. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
  81. package/dist/types/excalidraw/actions/actionFrame.d.ts +247 -875
  82. package/dist/types/excalidraw/actions/actionGroup.d.ts +160 -149
  83. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +261 -238
  84. package/dist/types/excalidraw/actions/actionLink.d.ts +86 -77
  85. package/dist/types/excalidraw/actions/actionMenu.d.ts +75 -438
  86. package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -359
  87. package/dist/types/excalidraw/actions/actionProperties.d.ts +238 -2533
  88. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +80 -75
  89. package/dist/types/excalidraw/actions/actionStyles.d.ts +74 -64
  90. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +4 -4
  91. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +195 -0
  92. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +88 -80
  93. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +195 -0
  94. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +87 -78
  95. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +76 -74
  96. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +2 -2
  97. package/dist/types/excalidraw/actions/actionToggleShowHints.d.ts +197 -0
  98. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +86 -77
  99. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +87 -78
  100. package/dist/types/excalidraw/actions/actionToggleWrap.d.ts +12 -0
  101. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +87 -78
  102. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -9
  103. package/dist/types/excalidraw/actions/colorTargets.d.ts +39 -0
  104. package/dist/types/excalidraw/actions/index.d.ts +7 -3
  105. package/dist/types/excalidraw/actions/manager.d.ts +1 -0
  106. package/dist/types/excalidraw/actions/register.d.ts +2 -2
  107. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  108. package/dist/types/excalidraw/actions/types.d.ts +11 -7
  109. package/dist/types/excalidraw/{animated-trail.d.ts → animatedTrail.d.ts} +4 -3
  110. package/dist/types/excalidraw/appState.d.ts +66 -35
  111. package/dist/types/excalidraw/charts/charts.bar.d.ts +3 -0
  112. package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
  113. package/dist/types/excalidraw/charts/charts.helpers.d.ts +33 -0
  114. package/dist/types/excalidraw/charts/charts.line.d.ts +3 -0
  115. package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
  116. package/dist/types/excalidraw/charts/charts.radar.d.ts +3 -0
  117. package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
  118. package/dist/types/excalidraw/charts/index.d.ts +8 -0
  119. package/dist/types/excalidraw/clipboard.d.ts +58 -21
  120. package/dist/types/excalidraw/components/Actions.d.ts +33 -11
  121. package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +1 -1
  122. package/dist/types/excalidraw/components/App.arrowText.d.ts +70 -0
  123. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  124. package/dist/types/excalidraw/components/App.clipboard.d.ts +31 -0
  125. package/dist/types/excalidraw/components/App.cursor.d.ts +38 -0
  126. package/dist/types/excalidraw/components/App.d.ts +415 -154
  127. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  128. package/dist/types/excalidraw/components/App.duplicate.d.ts +101 -0
  129. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  130. package/dist/types/excalidraw/components/App.host.d.ts +102 -0
  131. package/dist/types/excalidraw/components/App.modifiers.d.ts +38 -0
  132. package/dist/types/excalidraw/components/App.pan.d.ts +62 -0
  133. package/dist/types/excalidraw/components/App.selection.d.ts +265 -0
  134. package/dist/types/excalidraw/components/App.selectionTool.d.ts +93 -0
  135. package/dist/types/excalidraw/components/App.text.d.ts +146 -0
  136. package/dist/types/excalidraw/components/App.textTool.d.ts +140 -0
  137. package/dist/types/excalidraw/components/App.toolDrag.d.ts +63 -0
  138. package/dist/types/excalidraw/components/App.viewport.d.ts +123 -0
  139. package/dist/types/excalidraw/components/App.wheel.d.ts +26 -0
  140. package/dist/types/excalidraw/components/App.wrap.d.ts +31 -0
  141. package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
  142. package/dist/types/excalidraw/components/Card.d.ts +1 -3
  143. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
  144. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -4
  145. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  146. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +7 -1
  147. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +10 -2
  148. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +5 -2
  149. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  150. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +1 -2
  151. package/dist/types/excalidraw/components/ColorPicker/colorTopPicksDnD.d.ts +11 -0
  152. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
  153. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  154. package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -2
  155. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +2 -4
  156. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +6 -5
  157. package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
  158. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  159. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
  160. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
  161. package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
  162. package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
  163. package/dist/types/excalidraw/components/EyeDropper.d.ts +1 -2
  164. package/dist/types/excalidraw/components/FileDropOverlay.d.ts +2 -0
  165. package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
  166. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +5 -1
  167. package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +6 -1
  168. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
  169. package/dist/types/excalidraw/components/FontPicker/fontTopPicksDnD.d.ts +12 -0
  170. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
  171. package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
  172. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  173. package/dist/types/excalidraw/components/IconButton.d.ts +48 -0
  174. package/dist/types/excalidraw/components/IconPicker.d.ts +14 -9
  175. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  176. package/dist/types/excalidraw/components/Island.d.ts +7 -0
  177. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  178. package/dist/types/excalidraw/components/LayerUI.d.ts +6 -2
  179. package/dist/types/excalidraw/components/LibraryMenu.d.ts +1 -1
  180. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  181. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
  182. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +7 -3
  183. package/dist/types/excalidraw/components/LibraryUnit.d.ts +9 -5
  184. package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
  185. package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
  186. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
  187. package/dist/types/excalidraw/components/MobileMenu.d.ts +5 -7
  188. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  189. package/dist/types/excalidraw/components/Modal.d.ts +0 -1
  190. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
  191. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
  192. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
  193. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  194. package/dist/types/excalidraw/components/Popover.d.ts +2 -3
  195. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +2 -1
  196. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  197. package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
  198. package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
  199. package/dist/types/excalidraw/components/Range.d.ts +10 -4
  200. package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
  201. package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
  202. package/dist/types/excalidraw/components/SearchMenu.d.ts +1 -1
  203. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +16 -22
  204. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
  205. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
  206. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
  207. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
  208. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
  209. package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
  210. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  211. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
  212. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
  213. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  214. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -3
  215. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  216. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
  217. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  218. package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
  219. package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
  220. package/dist/types/excalidraw/components/Stats/utils.d.ts +4 -2
  221. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
  222. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
  223. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
  224. package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
  225. package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
  226. package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
  227. package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
  228. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +4 -2
  229. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
  230. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
  231. package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
  232. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +9 -3
  233. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
  234. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
  235. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
  236. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
  237. package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +12 -0
  238. package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
  239. package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +10 -0
  240. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +19 -16
  241. package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
  242. package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
  243. package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +8 -0
  244. package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
  245. package/dist/types/excalidraw/components/TTDDialog/types.d.ts +108 -0
  246. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
  247. package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
  248. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
  249. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +26 -0
  250. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
  251. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  252. package/dist/types/excalidraw/components/Toast.d.ts +11 -7
  253. package/dist/types/excalidraw/components/ToolPopover.d.ts +22 -0
  254. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  255. package/dist/types/excalidraw/components/Tools.d.ts +151 -0
  256. package/dist/types/excalidraw/components/Tooltip.d.ts +26 -2
  257. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksContextMenu.d.ts +14 -0
  258. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksTip.d.ts +11 -0
  259. package/dist/types/excalidraw/components/TopPicksDnD/topPicksDnD.d.ts +58 -0
  260. package/dist/types/excalidraw/components/Trans.d.ts +2 -2
  261. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  262. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  263. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +9 -4
  264. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +3 -0
  265. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
  266. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +47 -35
  267. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -5
  268. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
  269. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
  270. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
  271. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
  272. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -2
  273. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
  274. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
  275. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
  276. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
  277. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
  278. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
  279. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
  280. package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
  281. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  282. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
  283. package/dist/types/excalidraw/components/hyperlink/Hyperlink.d.ts +3 -2
  284. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +16 -5
  285. package/dist/types/excalidraw/components/icons.d.ts +56 -22
  286. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +26 -3
  287. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -35
  288. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  289. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  290. package/dist/types/excalidraw/data/blob.d.ts +373 -15
  291. package/dist/types/excalidraw/data/encode.d.ts +4 -4
  292. package/dist/types/excalidraw/data/encryption.d.ts +5 -5
  293. package/dist/types/excalidraw/data/filesystem.d.ts +5 -7
  294. package/dist/types/excalidraw/data/index.d.ts +11 -12
  295. package/dist/types/excalidraw/data/json.d.ts +192 -3
  296. package/dist/types/excalidraw/data/library.d.ts +25 -10
  297. package/dist/types/excalidraw/data/resave.d.ts +7 -2
  298. package/dist/types/excalidraw/data/restore.d.ts +25 -10
  299. package/dist/types/excalidraw/data/types.d.ts +4 -1
  300. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  301. package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
  302. package/dist/types/excalidraw/eraser/index.d.ts +2 -3
  303. package/dist/types/excalidraw/errors.d.ts +14 -0
  304. package/dist/types/excalidraw/fonts/Fonts.d.ts +12 -8
  305. package/dist/types/excalidraw/history.d.ts +10 -4
  306. package/dist/types/excalidraw/hooks/useAppStateValue.d.ts +29 -0
  307. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +2 -2
  308. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
  309. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
  310. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
  311. package/dist/types/excalidraw/i18n.d.ts +2 -2
  312. package/dist/types/excalidraw/{laser-trails.d.ts → laserTrails.d.ts} +5 -7
  313. package/dist/types/excalidraw/lasso/index.d.ts +2 -3
  314. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  315. package/dist/types/excalidraw/mermaid.d.ts +7 -0
  316. package/dist/types/excalidraw/reactUtils.d.ts +1 -1
  317. package/dist/types/excalidraw/renderOverrides.d.ts +9 -0
  318. package/dist/types/excalidraw/renderer/animation.d.ts +23 -0
  319. package/dist/types/excalidraw/renderer/helpers.d.ts +31 -8
  320. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +7 -15
  321. package/dist/types/excalidraw/renderer/staticScene.d.ts +11 -6
  322. package/dist/types/excalidraw/scene/Renderer.d.ts +492 -20
  323. package/dist/types/excalidraw/scene/export.d.ts +344 -21
  324. package/dist/types/excalidraw/scene/index.d.ts +2 -2
  325. package/dist/types/excalidraw/scene/types.d.ts +51 -9
  326. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  327. package/dist/types/excalidraw/snapping.d.ts +12 -12
  328. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
  329. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
  330. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
  331. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
  332. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
  333. package/dist/types/excalidraw/textAutoResizeHandle.d.ts +15 -0
  334. package/dist/types/excalidraw/types.d.ts +697 -61
  335. package/dist/types/excalidraw/viewport.d.ts +302 -0
  336. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +19 -5
  337. package/dist/types/fractional-indexing/src/index.d.ts +29 -0
  338. package/dist/types/laser-pointer/src/index.d.ts +2 -0
  339. package/dist/types/laser-pointer/src/math.d.ts +16 -0
  340. package/dist/types/laser-pointer/src/simplify.d.ts +2 -0
  341. package/dist/types/laser-pointer/src/state.d.ts +36 -0
  342. package/dist/types/math/src/constants.d.ts +0 -1
  343. package/dist/types/math/src/curve.d.ts +23 -13
  344. package/dist/types/math/src/index.d.ts +1 -0
  345. package/dist/types/math/src/pca.d.ts +79 -0
  346. package/dist/types/math/src/point.d.ts +8 -2
  347. package/dist/types/math/src/polygon.d.ts +26 -2
  348. package/dist/types/math/src/range.d.ts +1 -3
  349. package/dist/types/math/src/segment.d.ts +10 -3
  350. package/dist/types/math/src/types.d.ts +25 -1
  351. package/dist/types/utils/src/index.d.ts +4 -3
  352. package/dist/types/utils/src/shape.d.ts +8 -8
  353. package/package.json +7 -1
  354. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +0 -185
  355. package/dist/types/excalidraw/animation-frame-handler.d.ts +0 -16
  356. package/dist/types/excalidraw/charts.d.ts +0 -27
  357. package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
  358. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -16
  359. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  360. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  361. package/dist/types/excalidraw/components/InitializeApp.d.ts +0 -10
  362. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +0 -9
  363. package/dist/types/excalidraw/components/ToolButton.d.ts +0 -49
  364. package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +0 -8
  365. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -10
  366. package/dist/types/excalidraw/components/shapes.d.ts +0 -190
  367. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -58
  368. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +0 -19
  369. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +0 -85
  370. package/dist/types/excalidraw/cursor.d.ts +0 -5
  371. package/dist/types/excalidraw/data/reconcile.d.ts +0 -7
  372. package/dist/types/excalidraw/index.d.ts +0 -47
  373. package/dist/types/excalidraw/polyfill.d.ts +0 -2
  374. package/dist/types/excalidraw/scene/scroll.d.ts +0 -23
  375. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
  376. package/dist/types/utils/src/bbox.d.ts +0 -9
  377. package/dist/types/utils/src/export.d.ts +0 -35
  378. package/dist/types/utils/src/withinBounds.d.ts +0 -19
@@ -1,14 +1,15 @@
1
+ import { type EditorInterface } from "@excalidraw/common";
1
2
  import type { GlobalPoint, LocalPoint } from "@excalidraw/math";
2
- import type { AppState, Device, Zoom } from "@excalidraw/excalidraw/types";
3
- import type { Bounds } from "./bounds";
3
+ import type { AppState, Zoom } from "@excalidraw/excalidraw/types";
4
+ import type { Bounds } from "@excalidraw/common";
4
5
  import type { MaybeTransformHandleType } from "./transformHandles";
5
6
  import type { ExcalidrawElement, PointerType, NonDeletedExcalidrawElement, ElementsMap } from "./types";
6
- export declare const resizeTest: <Point extends GlobalPoint | LocalPoint>(element: NonDeletedExcalidrawElement, elementsMap: ElementsMap, appState: AppState, x: number, y: number, zoom: Zoom, pointerType: PointerType, device: Device) => MaybeTransformHandleType;
7
- export declare const getElementWithTransformHandleType: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, scenePointerX: number, scenePointerY: number, zoom: Zoom, pointerType: PointerType, elementsMap: ElementsMap, device: Device) => {
7
+ export declare const resizeTest: <Point extends GlobalPoint | LocalPoint>(element: NonDeletedExcalidrawElement, elementsMap: ElementsMap, appState: AppState, x: number, y: number, zoom: Zoom, pointerType: PointerType, editorInterface: EditorInterface) => MaybeTransformHandleType;
8
+ export declare const getElementWithTransformHandleType: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, scenePointerX: number, scenePointerY: number, zoom: Zoom, pointerType: PointerType, elementsMap: ElementsMap, editorInterface: EditorInterface) => {
8
9
  element: NonDeletedExcalidrawElement;
9
10
  transformHandleType: MaybeTransformHandleType;
10
11
  } | null;
11
- export declare const getTransformHandleTypeFromCoords: <Point extends GlobalPoint | LocalPoint>([x1, y1, x2, y2]: Bounds, scenePointerX: number, scenePointerY: number, zoom: Zoom, pointerType: PointerType, device: Device) => MaybeTransformHandleType;
12
+ export declare const getTransformHandleTypeFromCoords: <Point extends GlobalPoint | LocalPoint>([x1, y1, x2, y2]: Bounds, scenePointerX: number, scenePointerY: number, zoom: Zoom, pointerType: PointerType, editorInterface: EditorInterface) => MaybeTransformHandleType;
12
13
  export declare const getCursorForResizingElement: (resizingElement: {
13
14
  element?: ExcalidrawElement;
14
15
  transformHandleType: MaybeTransformHandleType;
@@ -1,6 +1,6 @@
1
- import type { AppState, InteractiveCanvasAppState } from "@excalidraw/excalidraw/types";
2
- import { LinearElementEditor } from "./linearElementEditor";
3
- import type { ElementsMap, ElementsMapOrArray, ExcalidrawElement, NonDeletedExcalidrawElement } from "./types";
1
+ import type { AppState, BoxSelectionMode, InteractiveCanvasAppState } from "@excalidraw/excalidraw/types";
2
+ import type { ElementsMap, ElementsMapOrArray, ExcalidrawElement, NonDeleted, NonDeletedExcalidrawElement } from "./types";
3
+ export declare const shouldIgnoreElementFromSelection: (element: ExcalidrawElement) => boolean;
4
4
  /**
5
5
  * Frames and their containing elements are not to be selected at the same time.
6
6
  * Given an array of selected elements, if there are frames and their containing elements
@@ -8,8 +8,8 @@ import type { ElementsMap, ElementsMapOrArray, ExcalidrawElement, NonDeletedExca
8
8
  * @param selectedElements
9
9
  */
10
10
  export declare const excludeElementsInFramesFromSelection: <T extends ExcalidrawElement>(selectedElements: readonly T[]) => T[];
11
- export declare const getElementsWithinSelection: (elements: readonly NonDeletedExcalidrawElement[], selection: NonDeletedExcalidrawElement, elementsMap: ElementsMap, excludeElementsInFrames?: boolean) => NonDeletedExcalidrawElement[];
12
- export declare const getVisibleAndNonSelectedElements: (elements: readonly NonDeletedExcalidrawElement[], selectedElements: readonly NonDeletedExcalidrawElement[], appState: AppState, elementsMap: ElementsMap) => NonDeletedExcalidrawElement[];
11
+ export declare const getElementsWithinSelection: <T extends ExcalidrawElement>(elements: readonly T[], selection: ExcalidrawElement, elementsMap: ElementsMap, excludeElementsInFrames?: boolean, boxSelectionMode?: BoxSelectionMode) => T[];
12
+ export declare const getVisibleAndNonSelectedElements: <T extends NonDeletedExcalidrawElement>(elements: readonly T[], selectedElements: readonly ExcalidrawElement[], appState: AppState, elementsMap: ElementsMap) => T[];
13
13
  export declare const isSomeElementSelected: {
14
14
  (elements: readonly NonDeletedExcalidrawElement[], appState: Pick<AppState, "selectedElementIds">): boolean;
15
15
  clearCache(): void;
@@ -17,8 +17,8 @@ export declare const isSomeElementSelected: {
17
17
  export declare const getSelectedElements: (elements: ElementsMapOrArray, appState: Pick<InteractiveCanvasAppState, "selectedElementIds">, opts?: {
18
18
  includeBoundTextElement?: boolean;
19
19
  includeElementsInFrames?: boolean;
20
- }) => ExcalidrawElement[];
21
- export declare const getTargetElements: (elements: ElementsMapOrArray, appState: Pick<AppState, "selectedElementIds" | "editingTextElement" | "newElement">) => ExcalidrawElement[];
20
+ }) => NonDeletedExcalidrawElement[];
21
+ export declare const getTargetElements: (elements: ElementsMapOrArray, appState: Pick<AppState, "selectedElementIds" | "editingTextElement" | "newElement" | "activeTool">) => NonDeletedExcalidrawElement[] | import("./types").ExcalidrawTextElement[];
22
22
  /**
23
23
  * returns prevState's selectedElementids if no change from previous, so as to
24
24
  * retain reference identity for memoization
@@ -26,13 +26,7 @@ export declare const getTargetElements: (elements: ElementsMapOrArray, appState:
26
26
  export declare const makeNextSelectedElementIds: (nextSelectedElementIds: AppState["selectedElementIds"], prevState: Pick<AppState, "selectedElementIds">) => Readonly<{
27
27
  [id: string]: true;
28
28
  }>;
29
- export declare const getSelectionStateForElements: (targetElements: readonly ExcalidrawElement[], allElements: readonly NonDeletedExcalidrawElement[], appState: AppState) => {
30
- editingGroupId: string | null;
31
- selectedElementIds: Readonly<{
32
- [id: string]: true;
33
- }>;
34
- selectedGroupIds: {
35
- [groupId: string]: boolean;
36
- };
37
- selectedLinearElement: LinearElementEditor | null;
38
- };
29
+ /**
30
+ * Returns editing or single-selected text element, if any.
31
+ */
32
+ export declare const getActiveTextElement: (selectedElements: readonly NonDeleted<ExcalidrawElement>[], appState: Pick<AppState, "editingTextElement">) => import("./types").ExcalidrawTextElement | null;
@@ -1,9 +1,9 @@
1
1
  import { type GeometricShape } from "@excalidraw/utils/shape";
2
2
  import { type LocalPoint } from "@excalidraw/math";
3
- import type { GlobalPoint } from "@excalidraw/math";
3
+ import type { GlobalPoint, Polygon } from "@excalidraw/math";
4
4
  import type { AppState, EmbedsValidationStatus } from "@excalidraw/excalidraw/types";
5
5
  import type { ElementShape, ElementShapes } from "@excalidraw/excalidraw/scene/types";
6
- import type { ExcalidrawElement, ExcalidrawLinearElement, ExcalidrawFreeDrawElement, ElementsMap, ExcalidrawLineElement } from "./types";
6
+ import type { ExcalidrawElement, ExcalidrawSelectionElement, ExcalidrawLinearElement, ExcalidrawFreeDrawElement, ElementsMap, ExcalidrawLineElement } from "./types";
7
7
  import type { Drawable, Options } from "roughjs/bin/core";
8
8
  export declare class ShapeCache {
9
9
  private static rg;
@@ -12,25 +12,32 @@ export declare class ShapeCache {
12
12
  * Retrieves shape from cache if available. Use this only if shape
13
13
  * is optional and you have a fallback in case it's not cached.
14
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;
15
+ static get: <T extends ExcalidrawElement>(element: T, theme: AppState["theme"] | null) => (T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] | undefined : ElementShape | undefined) | undefined;
16
+ static delete: (element: ExcalidrawElement) => void;
18
17
  static destroy: () => void;
19
18
  /**
20
19
  * Generates & caches shape for element if not already cached, otherwise
21
20
  * returns cached shape.
22
21
  */
23
- static generateElementShape: <T extends import("./types").ExcalidrawTextElement | import("./types").ExcalidrawRectangleElement | import("./types").ExcalidrawDiamondElement | import("./types").ExcalidrawFrameElement | import("./types").ExcalidrawMagicFrameElement | import("./types").ExcalidrawEmbeddableElement | import("./types").ExcalidrawImageElement | import("./types").ExcalidrawIframeElement | import("./types").ExcalidrawEllipseElement | ExcalidrawLinearElement | import("./types").ExcalidrawArrowElement | ExcalidrawFreeDrawElement>(element: T, renderConfig: {
22
+ static generateElementShape: <T extends Exclude<ExcalidrawElement, ExcalidrawSelectionElement>>(element: T, renderConfig: {
24
23
  isExporting: boolean;
25
24
  canvasBackgroundColor: AppState["viewBackgroundColor"];
26
25
  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);
26
+ theme: AppState["theme"];
27
+ } | null) => ((T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] | undefined : ElementShape | undefined) & {}) | (T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] : Drawable | null);
28
28
  }
29
- export declare const generateRoughOptions: (element: ExcalidrawElement, continuousPath?: boolean) => Options;
30
- export declare const generateLinearCollisionShape: (element: ExcalidrawLinearElement | ExcalidrawFreeDrawElement) => {
29
+ export declare const generateRoughOptions: (element: ExcalidrawElement, continuousPath?: boolean, isDarkMode?: boolean) => Options;
30
+ /**
31
+ * Returns the flattened fill contour of a freedraw loop in local, unrotated
32
+ * coordinates, following the rendered fill rather than the stroke outline.
33
+ */
34
+ export declare const getFreedrawFillPolygon: (element: ExcalidrawFreeDrawElement) => Polygon<LocalPoint>;
35
+ export declare const generateLinearCollisionShape: (element: ExcalidrawLinearElement | ExcalidrawFreeDrawElement, elementsMap: ElementsMap) => {
31
36
  op: string;
32
37
  data: number[];
33
38
  }[];
39
+ export declare const ELBOW_ARROW_CORNER_RADIUS = 16;
40
+ export declare const generateElbowArrowShape: (routePoints: readonly LocalPoint[], radius: number) => string;
34
41
  /**
35
42
  * get the pure geometric shape of an excalidraw elementw
36
43
  * which is then used for hit detection
@@ -40,3 +47,25 @@ export declare const toggleLinePolygonState: (element: ExcalidrawLineElement, ne
40
47
  polygon: ExcalidrawLineElement["polygon"];
41
48
  points: ExcalidrawLineElement["points"];
42
49
  } | null;
50
+ export declare const getFreedrawOutlinePoints: (element: ExcalidrawFreeDrawElement) => [number, number][];
51
+ /**
52
+ * Upper bound on how far a freedraw stroke's ink reaches past its centerline
53
+ * points. Both stroke generators scale the stroke size by at most 1 (easing
54
+ * or pressure), so the size itself bounds the radius, except for
55
+ * perfect-freehand's short strokes: under 3px long, the start cap is drawn
56
+ * around the first point from an outline point of the last one (reaching
57
+ * sqrt(size² + 3²)), and a single point gets a synthetic neighbor 1px away.
58
+ */
59
+ export declare const getFreedrawMaxStrokeRadius: (element: ExcalidrawFreeDrawElement) => number;
60
+ /**
61
+ * The streamline-smoothed centerline the freedraw stroke is rendered
62
+ * around, in element-local coordinates. Boundary-sensitive consumers (e.g.
63
+ * bucket fill) should use this instead of `element.points`: raw input
64
+ * points can sit 20px+ apart and the rendered stroke is smoothed between
65
+ * them, so raw chords visibly deviate from what's on screen.
66
+ *
67
+ * Constant-width ("laser geometry") strokes technically smooth via
68
+ * `LaserPointer` instead; the perfect-freehand centerline with the same
69
+ * `streamline` is a close approximation the stroke width hides.
70
+ */
71
+ export declare const getFreedrawStrokeCenterPoints: (element: ExcalidrawFreeDrawElement) => [number, number][];
@@ -1,5 +1,11 @@
1
1
  import type { AppState, Offsets, Zoom } from "@excalidraw/excalidraw/types";
2
2
  import type { ElementsMap, ExcalidrawElement } from "./types";
3
+ export type VerticalResizeAnchor = "top" | "bottom" | "center";
4
+ /** Keeps the chosen edge or center fixed when an element's height changes. */
5
+ export declare const getPositionAfterHeightChange: (element: Pick<ExcalidrawElement, "x" | "y" | "height" | "angle">, nextHeight: number, anchor?: VerticalResizeAnchor) => {
6
+ x: number;
7
+ y: number;
8
+ };
3
9
  export declare const INVISIBLY_SMALL_ELEMENT_SIZE = 0.1;
4
10
  export declare const isInvisiblySmallElement: (element: ExcalidrawElement) => boolean;
5
11
  export declare const isElementInViewport: (element: ExcalidrawElement, width: number, height: number, viewTransformations: {
@@ -1,2 +1,12 @@
1
1
  import type { ExcalidrawElement } from "./types";
2
+ /**
3
+ * In theory, when we have text elements bound to a container, they
4
+ * should be right after the container element in the elements array.
5
+ * However, this is not guaranteed due to old and potential future bugs.
6
+ *
7
+ * This function sorts containers and their bound texts together. It prefers
8
+ * original z-index of container (i.e. it moves bound text elements after
9
+ * containers).
10
+ */
11
+ export declare const normalizeBoundElementsOrder: <T extends ExcalidrawElement>(elements: readonly T[]) => readonly T[];
2
12
  export declare const normalizeElementOrder: (elements: readonly ExcalidrawElement[]) => readonly ExcalidrawElement[];
@@ -0,0 +1,191 @@
1
+ import type { RenderEnvironment } from "./renderEnvironment";
2
+ import type { Scene } from "./Scene";
3
+ import type { VerticalResizeAnchor } from "./sizeHelpers";
4
+ import type { TransformHandleDirection } from "./transformHandles";
5
+ import type { ElementsMap, ExcalidrawElement, ExcalidrawStickyNoteElement, ExcalidrawTextElement, NonDeletedExcalidrawElement } from "./types";
6
+ export type StickyNoteRenderPoint = {
7
+ x: number;
8
+ y: number;
9
+ };
10
+ export type StickyNotePathCommand = {
11
+ type: "move";
12
+ point: StickyNoteRenderPoint;
13
+ } | {
14
+ type: "line";
15
+ point: StickyNoteRenderPoint;
16
+ } | {
17
+ type: "quadratic";
18
+ control: StickyNoteRenderPoint;
19
+ point: StickyNoteRenderPoint;
20
+ };
21
+ export declare const normalizeStickyNoteStrokeColor: (strokeColor: string | null | undefined) => string;
22
+ export declare const normalizeStickyNoteBackgroundColor: (backgroundColor: string | null | undefined) => string;
23
+ /**
24
+ * The update that applies a picked color to an element under the sticky
25
+ * note policy: a note is always filled and its label — the visible text,
26
+ * which the note's own `strokeColor` seeds — never goes transparent. Every
27
+ * color surface (actions, both eyedroppers, paste styles, bind) routes
28
+ * through this instead of re-deriving the rule.
29
+ */
30
+ /**
31
+ * The element a color pick on `element` lands on. A note's label has no fill
32
+ * of its own, so a background pick on the label — the styles panel while
33
+ * editing it — goes to the note; everything else colors itself.
34
+ */
35
+ export declare const getColorTargetElement: (element: ExcalidrawElement, property: "strokeColor" | "backgroundColor", elementsMap: ElementsMap) => ExcalidrawElement;
36
+ export declare const getColorUpdate: (element: ExcalidrawElement, property: "strokeColor" | "backgroundColor", color: string, elementsMap: ElementsMap) => {
37
+ strokeColor: string;
38
+ } | {
39
+ backgroundColor: string;
40
+ };
41
+ /**
42
+ * A note's ink is one color: the container's `strokeColor` — the seed for a
43
+ * new label and what the creation-date footer paints with — and its label's.
44
+ * Run after a property write to copy the side that changed onto the other;
45
+ * when both changed, or neither (data that drifted), the label wins: it is
46
+ * the text the user styled. A transparent label always takes the note's
47
+ * color. Returns the same array when nothing needs to change.
48
+ */
49
+ export declare const syncStickyNoteInk: <T extends ExcalidrawElement>(elements: readonly T[], prevElementsMap: ElementsMap) => readonly T[];
50
+ export declare const getStickyNoteCornerRadius: (element: ExcalidrawStickyNoteElement) => number;
51
+ export declare const getStickyNoteRenderPoints: (element: ExcalidrawStickyNoteElement, { offsetX, offsetY, seedOffset, }?: {
52
+ offsetX?: number;
53
+ offsetY?: number;
54
+ seedOffset?: number;
55
+ }) => StickyNoteRenderPoint[];
56
+ export declare const getStickyNotePathCommands: (element: ExcalidrawStickyNoteElement, { shadow }?: {
57
+ shadow?: boolean;
58
+ }) => StickyNotePathCommand[];
59
+ export declare const normalizeStickyNoteFontSize: (fontSize: number) => number;
60
+ /** whether the text element is the label of a sticky note */
61
+ export declare const isStickyNoteBoundText: (textElement: ExcalidrawTextElement, elementsMap: ElementsMap) => boolean;
62
+ /**
63
+ * The font size the user picked: the ceiling the auto-fit shrinks from for a
64
+ * sticky note label, plain `fontSize` for any other text.
65
+ *
66
+ * Container-aware on purpose — generic binding repair (duplication, history)
67
+ * rewrites `containerId` without touching the ceiling, so a numeric
68
+ * `baseFontSize` alone does not prove the text is still sticky-bound.
69
+ */
70
+ export declare const getBaseFontSize: (textElement: ExcalidrawTextElement, elementsMap: ElementsMap) => number;
71
+ /** the update that applies a user-picked font size (see `getBaseFontSize`) */
72
+ export declare const getBaseFontSizeUpdate: (textElement: ExcalidrawTextElement, fontSize: number, elementsMap: ElementsMap) => {
73
+ fontSize: number;
74
+ } | {
75
+ baseFontSize: number;
76
+ };
77
+ /**
78
+ * The creation-date label: absolute, so painting needs no clock and exports
79
+ * don't go stale, and short ("7 Sep") while the year is the current one.
80
+ * `null` when the note has no usable timestamp (files restored without one).
81
+ * Fixed English in the viewer's local time zone — the element package has no
82
+ * locale, and the footer is chosen by width bucket rather than measured.
83
+ */
84
+ export declare const getStickyNoteDateLabel: (created: ExcalidrawStickyNoteElement["created"], { short, now }?: {
85
+ short?: boolean;
86
+ now?: number;
87
+ }) => string | null;
88
+ /**
89
+ * What the footer paints and where, in note-local coordinates — shared by the
90
+ * canvas and SVG renderers, which take the font and opacity from
91
+ * `STICKY_NOTE_FOOTER`. `null` for the 0×0 creation draft and anything under
92
+ * the data floor, where the band would overlap the top padding.
93
+ */
94
+ export declare const getStickyNoteFooter: (element: Pick<ExcalidrawStickyNoteElement, "created" | "width" | "height">, now?: number) => {
95
+ text: string;
96
+ x: number;
97
+ y: number;
98
+ } | null;
99
+ /**
100
+ * The smallest note the UI lets a user create or resize to: one line at the
101
+ * label's font ceiling plus padding (and, vertically, the footer), never below
102
+ * `STICKY_NOTE_MIN_SIZE`. Without the font term a fresh note would grow on
103
+ * the very first keystroke. Data-level passes (restore, action post-passes)
104
+ * only enforce the constant floor — the layout grows a note as needed.
105
+ */
106
+ export declare const getStickyNoteMinSize: ({ fontSize, fontFamily, }: Pick<ExcalidrawTextElement, "fontSize" | "fontFamily">) => {
107
+ width: number;
108
+ height: number;
109
+ };
110
+ export type StickyNoteLayoutAnchor = VerticalResizeAnchor;
111
+ export type StickyNoteLayoutOpts = {
112
+ /** unwrapped text to lay out; defaults to the label's `originalText` */
113
+ originalText?: string;
114
+ /**
115
+ * absolute base-height intent — the gesture-start value to preserve, or the
116
+ * height a resize asked for. Omitted = keep the note's live `baseHeight`
117
+ * (typing, style changes, restore).
118
+ */
119
+ baseHeight?: number;
120
+ /**
121
+ * absolute font-ceiling intent (a proportional resize passes
122
+ * `gesture-start ceiling × scale`). Omitted = keep the label's live ceiling.
123
+ * Never a multiplier on the live value — that compounds across pointer-moves.
124
+ */
125
+ baseFontSize?: number;
126
+ /** the edge that stays put when the content correction changes the height */
127
+ anchor?: StickyNoteLayoutAnchor;
128
+ /**
129
+ * the host whose text metrics the fit measures with; omitted = the global
130
+ * environment. An editor passes its own so a note laid out in one window
131
+ * (or headlessly) is measured with that realm's fonts and canvas.
132
+ */
133
+ renderEnvironment?: RenderEnvironment;
134
+ };
135
+ export type StickyNoteLayout = {
136
+ container: Pick<ExcalidrawStickyNoteElement, "x" | "y" | "width" | "height" | "baseHeight">;
137
+ text: Pick<ExcalidrawTextElement, "text" | "fontSize" | "baseFontSize" | "width" | "height" | "x" | "y" | "angle"> | null;
138
+ };
139
+ /**
140
+ * The single source of truth for a sticky note's geometry: wraps the label at
141
+ * the note's width, fits the font under the ceiling, grows the note past
142
+ * `baseHeight` only when the text still overflows at the minimum size, and
143
+ * positions the label inside. Pure — returns the updates for both elements.
144
+ */
145
+ export declare const getStickyNoteLayout: (container: ExcalidrawStickyNoteElement, textElement: ExcalidrawTextElement | null, opts?: StickyNoteLayoutOpts) => StickyNoteLayout;
146
+ /**
147
+ * Resize intents for a sticky note — the §3.3 matrix of the plan. Every value
148
+ * is absolute and derived from the gesture-start snapshot on each pointer-move,
149
+ * so releasing Shift (or Alt) mid-gesture restores the original base height
150
+ * and ceiling instead of keeping values a previous move scaled.
151
+ *
152
+ * - width-only gestures (free E/W, Stats W) preserve the base height
153
+ * - height-changing gestures use the requested height as the new base
154
+ * - proportional gestures (Shift on any handle, aspect-locked multi-select,
155
+ * Stats group) additionally scale the font ceiling with the note
156
+ * - flips preserve everything
157
+ * - the content correction anchors at the edge the gesture holds still
158
+ */
159
+ export declare const getStickyNoteResizeIntent: (
160
+ /** the note with the requested geometry already applied */
161
+ container: ExcalidrawStickyNoteElement, originalElementsMap: ElementsMap, handleDirection: TransformHandleDirection, { proportional, fromCenter, flip, }: {
162
+ proportional: boolean;
163
+ fromCenter: boolean;
164
+ flip?: boolean;
165
+ }) => Pick<StickyNoteLayoutOpts, "baseHeight" | "baseFontSize" | "anchor">;
166
+ /**
167
+ * Applies `getStickyNoteLayout` to a live scene, then runs the bound-arrow
168
+ * pass unless the caller already owns one (`bindings: false`) or needs to
169
+ * forward its context (`bindings: { simultaneouslyUpdated }` — arrows resized
170
+ * in the same gesture must not be moved by the pass, `updateBoundElements`
171
+ * skips them only when told).
172
+ */
173
+ export declare const updateStickyNoteLayout: (container: ExcalidrawStickyNoteElement, scene: Scene, { text, bindings, ...layoutOpts }?: StickyNoteLayoutOpts & {
174
+ /** the label to lay out when it is an uncommitted clone (font actions clone before install) */
175
+ text?: ExcalidrawTextElement | null;
176
+ bindings?: {
177
+ simultaneouslyUpdated?: readonly NonDeletedExcalidrawElement[];
178
+ } | false;
179
+ }) => StickyNoteLayout;
180
+ /**
181
+ * Applies `getStickyNoteLayout` inside an immutable elements array (property
182
+ * actions, paste styles, restore): the notes among `affectedIds` — or the
183
+ * notes whose labels are — get both halves merged into their clones. Elements
184
+ * that need no change keep their identity and version; when `prevElementsMap`
185
+ * is given, notes whose layout inputs did not change skip the fit entirely.
186
+ * Bound arrows are the caller's job once the result is installed.
187
+ */
188
+ export declare const relayoutStickyNotes: <T extends ExcalidrawElement>(elements: readonly T[], affectedIds: ReadonlySet<ExcalidrawElement["id"]>, opts?: {
189
+ prevElementsMap?: ElementsMap;
190
+ renderEnvironment?: RenderEnvironment;
191
+ }) => readonly T[];
@@ -1,23 +1,27 @@
1
1
  import { type Radians } from "@excalidraw/math";
2
- import type { AppState } from "@excalidraw/excalidraw/types";
3
2
  import type { ExtractSetType } from "@excalidraw/common/utility-types";
3
+ import type { RenderEnvironment } from "./renderEnvironment";
4
4
  import type { Scene } from "./Scene";
5
5
  import type { MaybeTransformHandleType } from "./transformHandles";
6
- import type { ElementsMap, ExcalidrawElement, ExcalidrawElementType, ExcalidrawTextContainer, ExcalidrawTextElement, ExcalidrawTextElementWithContainer, NonDeletedExcalidrawElement } from "./types";
7
- export declare const redrawTextBoundingBox: (textElement: ExcalidrawTextElement, container: ExcalidrawElement | null, scene: Scene) => void;
8
- export declare const handleBindTextResize: (container: NonDeletedExcalidrawElement, scene: Scene, transformHandleType: MaybeTransformHandleType, shouldMaintainAspectRatio?: boolean) => void;
6
+ import type { ElementsMap, ExcalidrawElement, ExcalidrawElementType, ExcalidrawTextContainer, ExcalidrawTextElement, ExcalidrawTextElementWithContainer, NonDeleted } from "./types";
7
+ export declare const redrawTextBoundingBox: (textElement: ExcalidrawTextElement, container: ExcalidrawElement | null, scene: Scene, renderEnvironment?: RenderEnvironment) => void;
8
+ export declare const handleBindTextResize: (container: ExcalidrawElement, scene: Scene, transformHandleType: MaybeTransformHandleType, shouldMaintainAspectRatio?: boolean, shouldResizeFromCenter?: boolean, flipByY?: boolean, renderEnvironment?: RenderEnvironment) => void;
9
9
  export declare const computeBoundTextPosition: (container: ExcalidrawElement, boundTextElement: ExcalidrawTextElementWithContainer, elementsMap: ElementsMap) => {
10
10
  x: number;
11
11
  y: number;
12
12
  };
13
13
  export declare const getBoundTextElementId: (container: ExcalidrawElement | null) => string | null;
14
- export declare const getBoundTextElement: (element: ExcalidrawElement | null, elementsMap: ElementsMap) => ExcalidrawTextElementWithContainer | null;
15
- export declare const getContainerElement: (element: ExcalidrawTextElement | null, elementsMap: ElementsMap) => ExcalidrawTextContainer | null;
16
- export declare const getContainerCenter: (container: ExcalidrawElement, appState: AppState, elementsMap: ElementsMap) => {
14
+ export declare const getBoundTextElement: (element: ExcalidrawElement | null, elementsMap: ElementsMap) => NonDeleted<ExcalidrawTextElementWithContainer> | null;
15
+ export declare const getContainerElement: <T extends ExcalidrawTextElement, R extends ExcalidrawTextContainer>(element: T | null, elementsMap: ElementsMap) => R | null;
16
+ /**
17
+ * The point a text bound to this container centers on — and, for arrows, the
18
+ * point the text tool snaps a new label to.
19
+ */
20
+ export declare const getContainerCenter: (container: ExcalidrawElement, elementsMap: ElementsMap) => {
17
21
  x: number;
18
22
  y: number;
19
23
  };
20
- export declare const getContainerCoords: (container: NonDeletedExcalidrawElement) => {
24
+ export declare const getContainerCoords: (container: ExcalidrawElement) => {
21
25
  x: number;
22
26
  y: number;
23
27
  };
@@ -26,15 +30,23 @@ export declare const getBoundTextElementPosition: (container: ExcalidrawElement,
26
30
  x: number;
27
31
  y: number;
28
32
  } | undefined;
29
- export declare const shouldAllowVerticalAlign: (selectedElements: NonDeletedExcalidrawElement[], elementsMap: ElementsMap) => boolean;
30
- export declare const suppportsHorizontalAlign: (selectedElements: NonDeletedExcalidrawElement[], elementsMap: ElementsMap) => boolean;
33
+ /**
34
+ * Returns the text element with its accurate coords. An arrow label's
35
+ * position is derived from the arrow at render time rather than kept in
36
+ * sync on the element itself (see getBoundTextElementPosition), so
37
+ * consumers reading a label's coords directly must go through this helper.
38
+ */
39
+ export declare const getTextElementWithAccuratePosition: <T extends ExcalidrawTextElement>(textElement: T, elementsMap: ElementsMap) => T;
40
+ export declare const shouldAllowVerticalAlign: (selectedElements: readonly ExcalidrawElement[], elementsMap: ElementsMap) => boolean;
41
+ export declare const suppportsHorizontalAlign: (selectedElements: readonly ExcalidrawElement[], elementsMap: ElementsMap) => boolean;
31
42
  declare const VALID_CONTAINER_TYPES: Set<string>;
32
43
  export declare const isValidTextContainer: (element: {
33
44
  type: ExcalidrawElementType;
34
- }) => boolean;
45
+ }) => element is ExcalidrawTextContainer;
35
46
  export declare const computeContainerDimensionForBoundText: (dimension: number, containerType: ExtractSetType<typeof VALID_CONTAINER_TYPES>) => number;
36
47
  export declare const getBoundTextMaxWidth: (container: ExcalidrawElement, boundTextElement: ExcalidrawTextElement | null) => number;
37
48
  export declare const getBoundTextMaxHeight: (container: ExcalidrawElement, boundTextElement: ExcalidrawTextElementWithContainer) => number;
38
49
  /** retrieves text from text elements and concatenates to a single string */
39
50
  export declare const getTextFromElements: (elements: readonly ExcalidrawElement[], separator?: string) => string;
51
+ export declare const DEFAULT_BOUND_TEXT_LABEL_POSITION = 0.5;
40
52
  export {};
@@ -1,19 +1,18 @@
1
+ import type { RenderEnvironment } from "./renderEnvironment";
1
2
  import type { FontString, ExcalidrawTextElement } from "./types";
2
- export declare const measureText: (text: string, font: FontString, lineHeight: ExcalidrawTextElement["lineHeight"]) => {
3
+ export declare const measureText: (text: string, font: FontString, lineHeight: ExcalidrawTextElement["lineHeight"], env?: RenderEnvironment) => {
3
4
  width: number;
4
5
  height: number;
5
6
  };
6
- export declare const getApproxMinLineWidth: (font: FontString, lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
7
- export declare const getMinTextElementWidth: (font: FontString, lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
7
+ export declare const getApproxMinLineWidth: (font: FontString, lineHeight: ExcalidrawTextElement["lineHeight"], env?: RenderEnvironment) => number;
8
+ export declare const getMinTextElementWidth: (font: FontString, lineHeight: ExcalidrawTextElement["lineHeight"], env?: RenderEnvironment) => number;
8
9
  export declare const isMeasureTextSupported: () => boolean;
9
10
  export declare const normalizeText: (text: string) => string;
10
11
  /**
11
12
  * To get unitless line-height (if unknown) we can calculate it by dividing
12
13
  * height-per-line by fontSize.
13
14
  */
14
- export declare const detectLineHeight: (textElement: ExcalidrawTextElement) => number & {
15
- _brand: "unitlessLineHeight";
16
- };
15
+ export declare const detectLineHeight: (textElement: ExcalidrawTextElement) => ExcalidrawTextElement["lineHeight"];
17
16
  /**
18
17
  * We calculate the line height from the font size and the unitless line height,
19
18
  * aligning with the W3C spec.
@@ -21,21 +20,24 @@ export declare const detectLineHeight: (textElement: ExcalidrawTextElement) => n
21
20
  export declare const getLineHeightInPx: (fontSize: ExcalidrawTextElement["fontSize"], lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
22
21
  export declare const getApproxMinLineHeight: (fontSize: ExcalidrawTextElement["fontSize"], lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
23
22
  /**
24
- * Set a custom text metrics provider.
23
+ * Set a custom text metrics provider, for all text measured in an environment
24
+ * without its own (`RenderEnvironment["textMetrics"]`) -- e.g. elements
25
+ * created outside the editor, on a server. Pass `undefined` to go back to
26
+ * measuring on a canvas.
25
27
  *
26
28
  * Useful for overriding the width calculation algorithm where canvas API is not available / desired.
27
29
  */
28
- export declare const setCustomTextMetricsProvider: (provider: TextMetricsProvider) => void;
30
+ export declare const setCustomTextMetricsProvider: (provider: TextMetricsProvider | undefined) => void;
29
31
  export interface TextMetricsProvider {
30
32
  getLineWidth(text: string, fontString: FontString): number;
31
33
  }
32
- export declare const getLineWidth: (text: string, font: FontString) => number;
33
- export declare const getTextWidth: (text: string, font: FontString) => number;
34
+ export declare const getLineWidth: (text: string, font: FontString, env?: RenderEnvironment) => number;
35
+ export declare const getTextWidth: (text: string, font: FontString, env?: RenderEnvironment) => number;
34
36
  export declare const getTextHeight: (text: string, fontSize: number, lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
35
37
  export declare const charWidth: {
36
- calculate: (char: string, font: FontString) => number;
37
- getCache: (font: FontString) => number[];
38
+ calculate: (char: string, font: FontString, env?: RenderEnvironment) => number;
39
+ getCache: (font: FontString, env?: RenderEnvironment) => number[] | undefined;
38
40
  clearCache: (font: FontString) => void;
39
41
  };
40
- export declare const getMinCharWidth: (font: FontString) => number;
41
- export declare const getMaxCharWidth: (font: FontString) => number;
42
+ export declare const getMinCharWidth: (font: FontString, env?: RenderEnvironment) => number;
43
+ export declare const getMaxCharWidth: (font: FontString, env?: RenderEnvironment) => number;
@@ -1,3 +1,4 @@
1
+ import type { RenderEnvironment } from "./renderEnvironment";
1
2
  import type { FontString } from "./types";
2
3
  /**
3
4
  * Test if a given text contains any CJK characters (including symbols, punctuation, etc,).
@@ -5,9 +6,35 @@ import type { FontString } from "./types";
5
6
  export declare const containsCJK: (text: string) => boolean;
6
7
  /**
7
8
  * Breaks the line into the tokens based on the found line break opporutnities.
9
+ *
10
+ * Note: tokenization normalizes to NFC first so decomposed graphemes are treated as
11
+ * their composed variants for wrapping. Any code that needs exact source offsets should
12
+ * keep in mind that this assumes the input text is already NFC-normalized.
8
13
  */
9
14
  export declare const parseTokens: (line: string) => string[];
10
15
  /**
11
16
  * Wraps the original text into the lines based on the given width.
17
+ *
18
+ * This is a convenience adapter over `getWrappedTextLines()` for call sites
19
+ * that only need the rendered wrapped string and not the source offsets.
12
20
  */
13
- export declare const wrapText: (text: string, font: FontString, maxWidth: number) => string;
21
+ export declare const wrapText: (text: string, font: FontString, maxWidth: number, env?: RenderEnvironment) => string;
22
+ /**
23
+ * A single rendered visual line produced from the original text.
24
+ *
25
+ * `start` and `end` are end-exclusive code-unit offsets into the original text, and do
26
+ * not include synthetic soft line breaks inserted by this module. If trailing whitespace
27
+ * was trimmed away at a wrap boundary, `end` points to the last rendered character.
28
+ */
29
+ export type WrappedTextLine = {
30
+ text: string;
31
+ start: number;
32
+ end: number;
33
+ };
34
+ /**
35
+ * Returns the rendered visual lines together with their source offsets.
36
+ *
37
+ * This is the source-of-truth wrapping pipeline for callers that need more than the
38
+ * final wrapped string, for example caret placement or future editor/rich-text mapping.
39
+ */
40
+ export declare const getWrappedTextLines: (text: string, font: FontString, maxWidth: number, env?: RenderEnvironment) => WrappedTextLine[];
@@ -1,6 +1,13 @@
1
- import type { ElementConstructorOpts } from "@excalidraw/element";
2
- import type { ExcalidrawBindableElement, ExcalidrawElement, ExcalidrawFrameElement, ExcalidrawFreeDrawElement, ExcalidrawGenericElement, ExcalidrawIframeLikeElement, ExcalidrawImageElement, ExcalidrawLinearElement, ExcalidrawMagicFrameElement, ExcalidrawSelectionElement, ExcalidrawTextElement, FileId, FontFamilyValues, TextAlign, VerticalAlign } from "@excalidraw/element/types";
3
1
  import type { MarkOptional } from "@excalidraw/common/utility-types";
2
+ import { type ElementConstructorOpts } from "./newElement";
3
+ import type { RenderEnvironment } from "./renderEnvironment";
4
+ import type { ExcalidrawBindableElement, ExcalidrawElement, ExcalidrawFrameElement, ExcalidrawFreeDrawElement, ExcalidrawGenericElement, ExcalidrawIframeLikeElement, ExcalidrawImageElement, ExcalidrawLinearElement, ExcalidrawMagicFrameElement, ExcalidrawSelectionElement, ExcalidrawTextElement, FileId, FontFamilyValues, NonDeletedExcalidrawElement, Ordered, TextAlign, VerticalAlign, ExcalidrawStickyNoteElement } from "./types";
5
+ /**
6
+ * Options for elements generated from a skeleton fragment (bound labels and
7
+ * binding endpoints). Such elements are always constructed fresh, hence they
8
+ * never carry a creation time of their own.
9
+ */
10
+ type FragmentConstructorOpts = MarkOptional<Omit<ElementConstructorOpts, "created">, "x" | "y">;
4
11
  export type ValidLinearElement = {
5
12
  type: "arrow" | "line";
6
13
  x: number;
@@ -11,7 +18,9 @@ export type ValidLinearElement = {
11
18
  fontFamily?: FontFamilyValues;
12
19
  textAlign?: TextAlign;
13
20
  verticalAlign?: VerticalAlign;
14
- } & MarkOptional<ElementConstructorOpts, "x" | "y">;
21
+ /** where along an arrow's path (0-1) the label is centered */
22
+ labelPosition?: ExcalidrawTextElement["labelPosition"];
23
+ } & FragmentConstructorOpts;
15
24
  end?: (({
16
25
  type: Exclude<ExcalidrawBindableElement["type"], "image" | "text" | "frame" | "magicframe" | "embeddable" | "iframe">;
17
26
  id?: ExcalidrawGenericElement["id"];
@@ -25,7 +34,7 @@ export type ValidLinearElement = {
25
34
  type?: "text";
26
35
  id: ExcalidrawTextElement["id"];
27
36
  text: string;
28
- }) & Partial<ExcalidrawTextElement>)) & MarkOptional<ElementConstructorOpts, "x" | "y">;
37
+ }) & Partial<Omit<ExcalidrawTextElement, "created">>)) & FragmentConstructorOpts;
29
38
  start?: (({
30
39
  type: Exclude<ExcalidrawBindableElement["type"], "image" | "text" | "frame" | "magicframe" | "embeddable" | "iframe">;
31
40
  id?: ExcalidrawGenericElement["id"];
@@ -39,7 +48,7 @@ export type ValidLinearElement = {
39
48
  type?: "text";
40
49
  id: ExcalidrawTextElement["id"];
41
50
  text: string;
42
- }) & Partial<ExcalidrawTextElement>)) & MarkOptional<ElementConstructorOpts, "x" | "y">;
51
+ }) & Partial<Omit<ExcalidrawTextElement, "created">>)) & FragmentConstructorOpts;
43
52
  } & Partial<ExcalidrawLinearElement>;
44
53
  export type ValidContainer = {
45
54
  type: Exclude<ExcalidrawGenericElement["type"], "selection">;
@@ -50,13 +59,25 @@ export type ValidContainer = {
50
59
  fontFamily?: FontFamilyValues;
51
60
  textAlign?: TextAlign;
52
61
  verticalAlign?: VerticalAlign;
53
- } & MarkOptional<ElementConstructorOpts, "x" | "y">;
62
+ } & FragmentConstructorOpts;
54
63
  } & ElementConstructorOpts;
64
+ /**
65
+ * A sticky note: an always-filled note whose label auto-fits. `label.fontSize`
66
+ * is the font ceiling the fit shrinks from; the note grows past its height
67
+ * (kept as `baseHeight`) only once the label hits the minimum font size.
68
+ */
69
+ export type ValidStickyNote = {
70
+ type: "stickynote";
71
+ id?: ExcalidrawStickyNoteElement["id"];
72
+ label?: Extract<ValidContainer, {
73
+ label?: unknown;
74
+ }>["label"];
75
+ } & ElementConstructorOpts & Partial<Pick<ExcalidrawStickyNoteElement, "baseHeight">>;
55
76
  export type ExcalidrawElementSkeleton = Extract<Exclude<ExcalidrawElement, ExcalidrawSelectionElement>, ExcalidrawIframeLikeElement | ExcalidrawFreeDrawElement> | ({
56
77
  type: Extract<ExcalidrawLinearElement["type"], "line">;
57
78
  x: number;
58
79
  y: number;
59
- } & Partial<ExcalidrawLinearElement>) | ValidContainer | ValidLinearElement | ({
80
+ } & Partial<ExcalidrawLinearElement>) | ValidContainer | ValidStickyNote | ValidLinearElement | ({
60
81
  type: "text";
61
82
  text: string;
62
83
  x: number;
@@ -77,5 +98,7 @@ export type ExcalidrawElementSkeleton = Extract<Exclude<ExcalidrawElement, Excal
77
98
  name?: string;
78
99
  } & Partial<ExcalidrawMagicFrameElement>);
79
100
  export declare const convertToExcalidrawElements: (elementsSkeleton: ExcalidrawElementSkeleton[] | null, opts?: {
80
- regenerateIds: boolean;
81
- }) => import("@excalidraw/element/types").OrderedExcalidrawElement[];
101
+ regenerateIds?: boolean;
102
+ renderEnvironment?: RenderEnvironment;
103
+ }) => Ordered<NonDeletedExcalidrawElement>[];
104
+ export {};