@excalidraw/excalidraw 0.18.0-817d8c5 → 0.18.0-8fc71066d

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 (298) hide show
  1. package/CHANGELOG.md +11 -11
  2. package/dist/dev/chunk-CP5DND7P.js +7 -0
  3. package/dist/dev/chunk-CP5DND7P.js.map +7 -0
  4. package/dist/dev/chunk-CRKRRBMD.js +5677 -0
  5. package/dist/dev/chunk-CRKRRBMD.js.map +7 -0
  6. package/dist/dev/chunk-FB2NA5UG.js +4132 -0
  7. package/dist/dev/chunk-FB2NA5UG.js.map +7 -0
  8. package/dist/dev/{chunk-LMHBUWQS.js → chunk-QF5FRM6O.js} +16 -5
  9. package/dist/dev/chunk-QF5FRM6O.js.map +7 -0
  10. package/dist/dev/data/{image-V26YBSDB.js → image-IWGLHPIX.js} +3 -3
  11. package/dist/dev/index.css +3021 -2942
  12. package/dist/dev/index.css.map +3 -3
  13. package/dist/dev/index.js +30925 -24333
  14. package/dist/dev/index.js.map +4 -4
  15. package/dist/dev/locales/{en-OZCJJ2HN.js → en-SMAPCEOQ.js} +2 -2
  16. package/dist/dev/subset-shared.chunk.js +2 -2
  17. package/dist/dev/subset-worker.chunk.js +2 -2
  18. package/dist/prod/chunk-A66AFZZU.js +7 -0
  19. package/dist/prod/chunk-HHV2PJKY.js +4 -0
  20. package/dist/prod/chunk-I4UNSFV6.js +12 -0
  21. package/dist/prod/chunk-LS7FJGPW.js +86 -0
  22. package/dist/prod/data/image-4SM4COIL.js +1 -0
  23. package/dist/prod/index.css +1 -1
  24. package/dist/prod/index.js +27 -16
  25. package/dist/prod/locales/{en-B4ZKOASM.js → en-TYY6KWIJ.js} +1 -1
  26. package/dist/prod/subset-shared.chunk.js +1 -1
  27. package/dist/prod/subset-worker.chunk.js +1 -1
  28. package/dist/types/{excalidraw/binaryheap.d.ts → common/src/binary-heap.d.ts} +1 -1
  29. package/dist/types/{excalidraw → common/src}/colors.d.ts +1 -0
  30. package/dist/types/{excalidraw → common/src}/constants.d.ts +29 -8
  31. package/dist/types/{excalidraw → common/src}/emitter.d.ts +1 -1
  32. package/dist/types/{excalidraw/fonts/FontMetadata.d.ts → common/src/font-metadata.d.ts} +15 -5
  33. package/dist/types/common/src/index.d.ts +12 -0
  34. package/dist/types/{excalidraw → common/src}/points.d.ts +2 -0
  35. package/dist/types/common/src/promise-pool.d.ts +6 -0
  36. package/dist/types/{excalidraw → common/src}/utility-types.d.ts +5 -0
  37. package/dist/types/{excalidraw → common/src}/utils.d.ts +22 -11
  38. package/dist/types/{excalidraw/scene → element/src}/Scene.d.ts +19 -18
  39. package/dist/types/element/src/align.d.ts +8 -0
  40. package/dist/types/{excalidraw/element → element/src}/binding.d.ts +30 -19
  41. package/dist/types/{excalidraw/element → element/src}/bounds.d.ts +19 -6
  42. package/dist/types/element/src/collision.d.ts +32 -0
  43. package/dist/types/{excalidraw/scene → element/src}/comparisons.d.ts +1 -1
  44. package/dist/types/{excalidraw/element → element/src}/cropElement.d.ts +1 -1
  45. package/dist/types/{excalidraw/change.d.ts → element/src/delta.d.ts} +79 -41
  46. package/dist/types/element/src/distance.d.ts +3 -0
  47. package/dist/types/{excalidraw → element/src}/distribute.d.ts +3 -2
  48. package/dist/types/{excalidraw/element → element/src}/dragElements.d.ts +5 -4
  49. package/dist/types/element/src/duplicate.d.ts +63 -0
  50. package/dist/types/{excalidraw/element → element/src}/elbowArrow.d.ts +1 -1
  51. package/dist/types/{excalidraw/element → element/src}/elementLink.d.ts +1 -1
  52. package/dist/types/element/src/embeddable.d.ts +10 -0
  53. package/dist/types/{excalidraw/element → element/src}/flowchart.d.ts +4 -3
  54. package/dist/types/{excalidraw → element/src}/fractionalIndex.d.ts +12 -3
  55. package/dist/types/{excalidraw → element/src}/frame.d.ts +8 -7
  56. package/dist/types/{excalidraw → element/src}/groups.d.ts +6 -5
  57. package/dist/types/{excalidraw/element → element/src}/heading.d.ts +1 -2
  58. package/dist/types/{excalidraw/element → element/src}/image.d.ts +2 -2
  59. package/dist/types/element/src/index.d.ts +57 -0
  60. package/dist/types/{excalidraw/element → element/src}/linearElementEditor.d.ts +24 -37
  61. package/dist/types/element/src/mutateElement.d.ts +21 -0
  62. package/dist/types/{excalidraw/element → element/src}/newElement.d.ts +4 -43
  63. package/dist/types/{excalidraw/renderer → element/src}/renderElement.d.ts +3 -3
  64. package/dist/types/{excalidraw/element → element/src}/resizeElements.d.ts +7 -6
  65. package/dist/types/{excalidraw/element → element/src}/resizeTest.d.ts +4 -4
  66. package/dist/types/{excalidraw/scene → element/src}/selection.d.ts +13 -7
  67. package/dist/types/element/src/shape.d.ts +42 -0
  68. package/dist/types/{excalidraw/element → element/src}/showSelectedShapeActions.d.ts +1 -1
  69. package/dist/types/{excalidraw/element → element/src}/sizeHelpers.d.ts +3 -3
  70. package/dist/types/element/src/store.d.ts +232 -0
  71. package/dist/types/{excalidraw/element → element/src}/textElement.d.ts +8 -7
  72. package/dist/types/{excalidraw/element → element/src}/transformHandles.d.ts +7 -7
  73. package/dist/types/{excalidraw/element → element/src}/typeChecks.d.ts +21 -3
  74. package/dist/types/{excalidraw/element → element/src}/types.d.ts +17 -4
  75. package/dist/types/element/src/utils.d.ts +31 -0
  76. package/dist/types/{excalidraw → element/src}/zindex.d.ts +5 -4
  77. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +97 -106
  78. package/dist/types/excalidraw/actions/actionAlign.d.ts +7 -7
  79. package/dist/types/excalidraw/actions/actionBoundText.d.ts +70 -76
  80. package/dist/types/excalidraw/actions/actionCanvas.d.ts +627 -490
  81. package/dist/types/excalidraw/actions/actionClipboard.d.ts +206 -222
  82. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +34 -37
  83. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +102 -110
  84. package/dist/types/excalidraw/actions/actionDistribute.d.ts +3 -3
  85. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +3 -7
  86. package/dist/types/excalidraw/actions/actionElementLink.d.ts +37 -40
  87. package/dist/types/excalidraw/actions/actionElementLock.d.ts +82 -90
  88. package/dist/types/excalidraw/{element/embeddable.d.ts → actions/actionEmbeddable.d.ts} +34 -47
  89. package/dist/types/excalidraw/actions/actionExport.d.ts +351 -378
  90. package/dist/types/excalidraw/actions/actionFinalize.d.ts +100 -65
  91. package/dist/types/excalidraw/actions/actionFlip.d.ts +3 -3
  92. package/dist/types/excalidraw/actions/actionFrame.d.ts +252 -264
  93. package/dist/types/excalidraw/actions/actionGroup.d.ts +67 -73
  94. package/dist/types/excalidraw/actions/actionHistory.d.ts +2 -3
  95. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +561 -40
  96. package/dist/types/excalidraw/actions/actionLink.d.ts +35 -38
  97. package/dist/types/excalidraw/actions/actionMenu.d.ts +98 -107
  98. package/dist/types/excalidraw/actions/actionNavigate.d.ts +65 -71
  99. package/dist/types/excalidraw/actions/actionProperties.d.ts +469 -506
  100. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +35 -38
  101. package/dist/types/excalidraw/actions/actionStyles.d.ts +36 -39
  102. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +3 -3
  103. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +34 -37
  104. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +34 -37
  105. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +33 -208
  106. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +19 -0
  107. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +33 -37
  108. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +34 -38
  109. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +34 -38
  110. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -8
  111. package/dist/types/excalidraw/actions/index.d.ts +1 -0
  112. package/dist/types/excalidraw/actions/manager.d.ts +2 -2
  113. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  114. package/dist/types/excalidraw/actions/types.d.ts +6 -5
  115. package/dist/types/excalidraw/animated-trail.d.ts +7 -1
  116. package/dist/types/excalidraw/appState.d.ts +38 -28
  117. package/dist/types/excalidraw/charts.d.ts +1 -1
  118. package/dist/types/excalidraw/clipboard.d.ts +7 -7
  119. package/dist/types/excalidraw/components/Actions.d.ts +3 -7
  120. package/dist/types/excalidraw/components/App.d.ts +46 -29
  121. package/dist/types/excalidraw/components/Avatar.d.ts +1 -1
  122. package/dist/types/excalidraw/components/ButtonIcon.d.ts +2 -1
  123. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -1
  124. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -5
  125. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +1 -1
  126. package/dist/types/excalidraw/components/ColorPicker/HotkeyLabel.d.ts +1 -2
  127. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +4 -5
  128. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +3 -4
  129. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +3 -3
  130. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +1 -1
  131. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +4 -4
  132. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
  133. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -1
  134. package/dist/types/excalidraw/components/ConfirmDialog.d.ts +1 -1
  135. package/dist/types/excalidraw/components/ContextMenu.d.ts +2 -2
  136. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +23 -0
  137. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  138. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +2 -2
  139. package/dist/types/excalidraw/components/DialogActionButton.d.ts +1 -1
  140. package/dist/types/excalidraw/{element → components}/ElementCanvasButtons.d.ts +1 -1
  141. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +5 -4
  142. package/dist/types/excalidraw/components/Ellipsify.d.ts +4 -0
  143. package/dist/types/excalidraw/components/EyeDropper.d.ts +1 -1
  144. package/dist/types/excalidraw/components/FixedSideContainer.d.ts +1 -1
  145. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +1 -1
  146. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +1 -1
  147. package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +3 -3
  148. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +1 -1
  149. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +1 -1
  150. package/dist/types/excalidraw/components/HintViewer.d.ts +1 -1
  151. package/dist/types/excalidraw/components/IconPicker.d.ts +1 -1
  152. package/dist/types/excalidraw/components/ImageExportDialog.d.ts +2 -2
  153. package/dist/types/excalidraw/components/InitializeApp.d.ts +1 -1
  154. package/dist/types/excalidraw/components/Island.d.ts +1 -1
  155. package/dist/types/excalidraw/components/JSONExportDialog.d.ts +2 -2
  156. package/dist/types/excalidraw/components/LayerUI.d.ts +3 -3
  157. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -1
  158. package/dist/types/excalidraw/components/LibraryMenuItems.d.ts +1 -1
  159. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +3 -3
  160. package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -2
  161. package/dist/types/excalidraw/components/LoadingMessage.d.ts +1 -1
  162. package/dist/types/excalidraw/components/MagicButton.d.ts +1 -1
  163. package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -3
  164. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +1 -1
  165. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -1
  166. package/dist/types/excalidraw/components/PublishLibrary.d.ts +1 -1
  167. package/dist/types/excalidraw/components/{ButtonIconSelect.d.ts → RadioSelection.d.ts} +1 -1
  168. package/dist/types/excalidraw/components/Range.d.ts +3 -3
  169. package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
  170. package/dist/types/excalidraw/components/Sidebar/SidebarTrigger.d.ts +1 -1
  171. package/dist/types/excalidraw/components/Sidebar/common.d.ts +1 -1
  172. package/dist/types/excalidraw/components/Stack.d.ts +1 -1
  173. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  174. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +1 -1
  175. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +2 -1
  176. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  177. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +14 -4
  178. package/dist/types/excalidraw/components/Stats/FontSize.d.ts +2 -2
  179. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  180. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +3 -3
  181. package/dist/types/excalidraw/components/Stats/MultiFontSize.d.ts +2 -2
  182. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  183. package/dist/types/excalidraw/components/Stats/Position.d.ts +2 -2
  184. package/dist/types/excalidraw/components/Stats/index.d.ts +2 -2
  185. package/dist/types/excalidraw/components/Stats/utils.d.ts +4 -11
  186. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -1
  187. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +1 -1
  188. package/dist/types/excalidraw/components/TextField.d.ts +1 -1
  189. package/dist/types/excalidraw/components/Toast.d.ts +1 -1
  190. package/dist/types/excalidraw/components/ToolButton.d.ts +2 -2
  191. package/dist/types/excalidraw/components/Tooltip.d.ts +1 -1
  192. package/dist/types/excalidraw/components/UnlockPopup.d.ts +8 -0
  193. package/dist/types/excalidraw/components/UserList.d.ts +1 -1
  194. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +4 -3
  195. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +2 -2
  196. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +3 -3
  197. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +1 -1
  198. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +2 -2
  199. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +1 -1
  200. package/dist/types/excalidraw/components/hyperlink/Hyperlink.d.ts +5 -4
  201. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +3 -2
  202. package/dist/types/excalidraw/components/icons.d.ts +5 -1
  203. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +1 -1
  204. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +4 -1
  205. package/dist/types/excalidraw/components/shapes.d.ts +62 -0
  206. package/dist/types/excalidraw/context/tunnels.d.ts +1 -1
  207. package/dist/types/excalidraw/data/EditorLocalStorage.d.ts +1 -1
  208. package/dist/types/excalidraw/data/blob.d.ts +4 -4
  209. package/dist/types/excalidraw/data/filesystem.d.ts +2 -2
  210. package/dist/types/excalidraw/data/index.d.ts +2 -2
  211. package/dist/types/excalidraw/data/json.d.ts +1 -1
  212. package/dist/types/excalidraw/data/library.d.ts +3 -3
  213. package/dist/types/excalidraw/data/reconcile.d.ts +3 -2
  214. package/dist/types/excalidraw/data/resave.d.ts +1 -1
  215. package/dist/types/excalidraw/data/restore.d.ts +6 -1
  216. package/dist/types/excalidraw/data/transform.d.ts +4 -4
  217. package/dist/types/excalidraw/data/types.d.ts +3 -3
  218. package/dist/types/excalidraw/editor-jotai.d.ts +6 -6
  219. package/dist/types/excalidraw/eraser/index.d.ts +12 -0
  220. package/dist/types/excalidraw/errors.d.ts +0 -3
  221. package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -13
  222. package/dist/types/excalidraw/history.d.ts +31 -23
  223. package/dist/types/excalidraw/hooks/useEmitter.d.ts +1 -1
  224. package/dist/types/excalidraw/i18n.d.ts +1 -1
  225. package/dist/types/excalidraw/index.d.ts +18 -16
  226. package/dist/types/excalidraw/laser-trails.d.ts +1 -1
  227. package/dist/types/excalidraw/lasso/index.d.ts +16 -0
  228. package/dist/types/excalidraw/lasso/utils.d.ts +13 -0
  229. package/dist/types/excalidraw/renderer/helpers.d.ts +8 -3
  230. package/dist/types/excalidraw/renderer/staticScene.d.ts +4 -1
  231. package/dist/types/excalidraw/renderer/staticSvgScene.d.ts +2 -2
  232. package/dist/types/excalidraw/scene/Renderer.d.ts +3 -4
  233. package/dist/types/excalidraw/scene/export.d.ts +1 -1
  234. package/dist/types/excalidraw/scene/index.d.ts +2 -2
  235. package/dist/types/excalidraw/scene/scroll.d.ts +1 -1
  236. package/dist/types/excalidraw/scene/scrollbars.d.ts +2 -3
  237. package/dist/types/excalidraw/scene/types.d.ts +6 -4
  238. package/dist/types/excalidraw/snapping.d.ts +5 -6
  239. package/dist/types/excalidraw/types.d.ts +46 -25
  240. package/dist/types/excalidraw/{element → wysiwyg}/textWysiwyg.d.ts +4 -2
  241. package/dist/types/math/{angle.d.ts → src/angle.d.ts} +2 -0
  242. package/dist/types/math/src/constants.d.ts +3 -0
  243. package/dist/types/math/src/curve.d.ts +74 -0
  244. package/dist/types/math/{index.d.ts → src/index.d.ts} +1 -0
  245. package/dist/types/math/{point.d.ts → src/point.d.ts} +3 -3
  246. package/dist/types/math/{polygon.d.ts → src/polygon.d.ts} +1 -0
  247. package/dist/types/math/{rectangle.d.ts → src/rectangle.d.ts} +2 -0
  248. package/dist/types/math/{segment.d.ts → src/segment.d.ts} +1 -1
  249. package/dist/types/math/{types.d.ts → src/types.d.ts} +1 -0
  250. package/dist/types/math/{vector.d.ts → src/vector.d.ts} +8 -2
  251. package/dist/types/utils/{bbox.d.ts → src/bbox.d.ts} +1 -1
  252. package/dist/types/utils/{export.d.ts → src/export.d.ts} +2 -2
  253. package/dist/types/utils/{index.d.ts → src/index.d.ts} +1 -1
  254. package/dist/types/utils/{geometry → src}/shape.d.ts +2 -15
  255. package/dist/types/utils/{withinBounds.d.ts → src/withinBounds.d.ts} +2 -2
  256. package/history.ts +148 -109
  257. package/package.json +25 -10
  258. package/dist/dev/chunk-3SN6HYVK.js +0 -25695
  259. package/dist/dev/chunk-3SN6HYVK.js.map +0 -7
  260. package/dist/dev/chunk-53KHN5WM.js +0 -7
  261. package/dist/dev/chunk-53KHN5WM.js.map +0 -7
  262. package/dist/dev/chunk-LMHBUWQS.js.map +0 -7
  263. package/dist/dev/chunk-OKSO7T74.js +0 -4132
  264. package/dist/dev/chunk-OKSO7T74.js.map +0 -7
  265. package/dist/prod/chunk-36CXSE6H.js +0 -34
  266. package/dist/prod/chunk-6U3AYISY.js +0 -12
  267. package/dist/prod/chunk-EIO257PC.js +0 -86
  268. package/dist/prod/chunk-G5N3DNGT.js +0 -7
  269. package/dist/prod/data/image-N4WCURRR.js +0 -1
  270. package/dist/types/excalidraw/align.d.ts +0 -7
  271. package/dist/types/excalidraw/components/ButtonSelect.d.ts +0 -9
  272. package/dist/types/excalidraw/element/collision.d.ts +0 -26
  273. package/dist/types/excalidraw/element/distance.d.ts +0 -3
  274. package/dist/types/excalidraw/element/index.d.ts +0 -26
  275. package/dist/types/excalidraw/element/mutateElement.d.ts +0 -13
  276. package/dist/types/excalidraw/element/utils.d.ts +0 -21
  277. package/dist/types/excalidraw/scene/Shape.d.ts +0 -17
  278. package/dist/types/excalidraw/scene/ShapeCache.d.ts +0 -25
  279. package/dist/types/excalidraw/shapes.d.ts +0 -85
  280. package/dist/types/excalidraw/store.d.ts +0 -129
  281. package/dist/types/excalidraw/visualdebug.d.ts +0 -41
  282. package/dist/types/math/curve.d.ts +0 -40
  283. package/dist/types/utils/collision.d.ts +0 -9
  284. /package/dist/dev/data/{image-V26YBSDB.js.map → image-IWGLHPIX.js.map} +0 -0
  285. /package/dist/dev/locales/{en-OZCJJ2HN.js.map → en-SMAPCEOQ.js.map} +0 -0
  286. /package/dist/types/{excalidraw → common/src}/keys.d.ts +0 -0
  287. /package/dist/types/{excalidraw → common/src}/queue.d.ts +0 -0
  288. /package/dist/types/{excalidraw → common/src}/random.d.ts +0 -0
  289. /package/dist/types/{excalidraw/data → common/src}/url.d.ts +0 -0
  290. /package/dist/types/{excalidraw/element → element/src}/containerCache.d.ts +0 -0
  291. /package/dist/types/{excalidraw/element → element/src}/sortElements.d.ts +0 -0
  292. /package/dist/types/{excalidraw/element → element/src}/textMeasurements.d.ts +0 -0
  293. /package/dist/types/{excalidraw/element → element/src}/textWrapping.d.ts +0 -0
  294. /package/dist/types/math/{ellipse.d.ts → src/ellipse.d.ts} +0 -0
  295. /package/dist/types/math/{line.d.ts → src/line.d.ts} +0 -0
  296. /package/dist/types/math/{range.d.ts → src/range.d.ts} +0 -0
  297. /package/dist/types/math/{triangle.d.ts → src/triangle.d.ts} +0 -0
  298. /package/dist/types/math/{utils.d.ts → src/utils.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
- import type { Trail } from "./animated-trail";
2
1
  import { AnimatedTrail } from "./animated-trail";
2
+ import type { Trail } from "./animated-trail";
3
3
  import type { AnimationFrameHandler } from "./animation-frame-handler";
4
4
  import type App from "./components/App";
5
5
  export declare class LaserTrails implements Trail {
@@ -0,0 +1,16 @@
1
+ import { type AnimationFrameHandler } from "../animation-frame-handler";
2
+ import { AnimatedTrail } from "../animated-trail";
3
+ import type App from "../components/App";
4
+ export declare class LassoTrail extends AnimatedTrail {
5
+ private intersectedElements;
6
+ private enclosedElements;
7
+ private elementsSegments;
8
+ private canvasTranslate;
9
+ private keepPreviousSelection;
10
+ constructor(animationFrameHandler: AnimationFrameHandler, app: App);
11
+ startPath(x: number, y: number, keepPreviousSelection?: boolean): void;
12
+ selectElementsFromIds: (ids: string[]) => void;
13
+ addPointToPath: (x: number, y: number, keepPreviousSelection?: boolean) => void;
14
+ private updateSelection;
15
+ endPath(): void;
16
+ }
@@ -0,0 +1,13 @@
1
+ import type { ElementsSegmentsMap, GlobalPoint } from "@excalidraw/math/types";
2
+ import type { ElementsMap, ExcalidrawElement } from "@excalidraw/element/types";
3
+ export declare const getLassoSelectedElementIds: (input: {
4
+ lassoPath: GlobalPoint[];
5
+ elements: readonly ExcalidrawElement[];
6
+ elementsMap: ElementsMap;
7
+ elementsSegments: ElementsSegmentsMap;
8
+ intersectedElements: Set<ExcalidrawElement["id"]>;
9
+ enclosedElements: Set<ExcalidrawElement["id"]>;
10
+ simplifyDistance?: number;
11
+ }) => {
12
+ selectedElementIds: string[];
13
+ };
@@ -1,13 +1,18 @@
1
- import type { StaticCanvasAppState, AppState } from "../types";
1
+ import type { ElementsMap, ExcalidrawDiamondElement, ExcalidrawRectanguloidElement } from "@excalidraw/element/types";
2
2
  import type { StaticCanvasRenderConfig } from "../scene/types";
3
- export declare const fillCircle: (context: CanvasRenderingContext2D, cx: number, cy: number, radius: number, stroke?: boolean) => void;
3
+ import type { AppState, StaticCanvasAppState } from "../types";
4
+ export declare const fillCircle: (context: CanvasRenderingContext2D, cx: number, cy: number, radius: number, stroke: boolean, fill?: boolean) => void;
4
5
  export declare const getNormalizedCanvasDimensions: (canvas: HTMLCanvasElement, scale: number) => [number, number];
5
6
  export declare const bootstrapCanvas: ({ canvas, scale, normalizedWidth, normalizedHeight, theme, isExporting, viewBackgroundColor, }: {
6
7
  canvas: HTMLCanvasElement;
7
8
  scale: number;
8
9
  normalizedWidth: number;
9
10
  normalizedHeight: number;
10
- theme?: import("../element/types").Theme | undefined;
11
+ theme?: import("@excalidraw/element/types").Theme | undefined;
11
12
  isExporting?: boolean | undefined;
12
13
  viewBackgroundColor?: string | null | undefined;
13
14
  }) => CanvasRenderingContext2D;
15
+ export declare const drawHighlightForRectWithRotation: (context: CanvasRenderingContext2D, element: ExcalidrawRectanguloidElement, elementsMap: ElementsMap, padding: number) => void;
16
+ export declare const strokeEllipseWithRotation: (context: CanvasRenderingContext2D, width: number, height: number, cx: number, cy: number, angle: number) => void;
17
+ export declare const strokeRectWithRotation: (context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, cx: number, cy: number, angle: number, fill?: boolean, radius?: number) => void;
18
+ export declare const drawHighlightForDiamondWithRotation: (context: CanvasRenderingContext2D, padding: number, element: ExcalidrawDiamondElement, elementsMap: ElementsMap) => void;
@@ -1,4 +1,7 @@
1
- import type { StaticSceneRenderConfig } from "../scene/types";
1
+ import type { ExcalidrawFrameLikeElement } from "@excalidraw/element/types";
2
+ import type { StaticCanvasRenderConfig, StaticSceneRenderConfig } from "../scene/types";
3
+ import type { StaticCanvasAppState } from "../types";
4
+ export declare const frameClip: (frame: ExcalidrawFrameLikeElement, context: CanvasRenderingContext2D, renderConfig: StaticCanvasRenderConfig, appState: StaticCanvasAppState) => void;
2
5
  /** throttled to animation framerate */
3
6
  export declare const renderStaticSceneThrottled: {
4
7
  (config: StaticSceneRenderConfig): void;
@@ -1,5 +1,5 @@
1
- import type { RoughSVG } from "roughjs/bin/svg";
2
- import type { NonDeletedExcalidrawElement } from "../element/types";
1
+ import type { NonDeletedExcalidrawElement } from "@excalidraw/element/types";
3
2
  import type { RenderableElementsMap, SVGRenderConfig } from "../scene/types";
4
3
  import type { BinaryFiles } from "../types";
4
+ import type { RoughSVG } from "roughjs/bin/svg";
5
5
  export declare const renderSceneToSvg: (elements: readonly NonDeletedExcalidrawElement[], elementsMap: RenderableElementsMap, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, renderConfig: SVGRenderConfig) => void;
@@ -1,6 +1,6 @@
1
- import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "../element/types";
1
+ import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
+ import type { Scene } from "@excalidraw/element";
2
3
  import type { AppState } from "../types";
3
- import type Scene from "./Scene";
4
4
  export declare class Renderer {
5
5
  private scene;
6
6
  constructor(scene: Scene);
@@ -16,10 +16,9 @@ export declare class Renderer {
16
16
  /** note: first render of newElement will always bust the cache
17
17
  * (we'd have to prefilter elements outside of this function) */
18
18
  newElementId: ExcalidrawElement["id"] | undefined;
19
- pendingImageElementId: AppState["pendingImageElementId"];
20
19
  sceneNonce: ReturnType<InstanceType<typeof Scene>["getSceneNonce"]>;
21
20
  }) => {
22
- elementsMap: Map<string, NonDeletedExcalidrawElement> & import("../utility-types").MakeBrand<"NonDeletedElementsMap"> & import("../utility-types").MakeBrand<"RenderableElementsMap">;
21
+ elementsMap: Map<string, NonDeletedExcalidrawElement> & import("@excalidraw/common/utility-types").MakeBrand<"NonDeletedElementsMap"> & import("@excalidraw/common/utility-types").MakeBrand<"RenderableElementsMap">;
23
22
  visibleElements: readonly NonDeletedExcalidrawElement[];
24
23
  }) & {
25
24
  clear: () => void;
@@ -1,4 +1,4 @@
1
- import type { ExcalidrawFrameLikeElement, NonDeletedExcalidrawElement } from "../element/types";
1
+ import type { ExcalidrawFrameLikeElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
2
  import type { AppState, BinaryFiles } from "../types";
3
3
  export declare const exportToCanvas: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, files: BinaryFiles, { exportBackground, exportPadding, viewBackgroundColor, exportingFrame, }: {
4
4
  exportBackground: boolean;
@@ -1,4 +1,4 @@
1
- export { isSomeElementSelected, getElementsWithinSelection, getCommonAttributeOfSelectedElements, getSelectedElements, getTargetElements, } from "./selection";
1
+ export { isSomeElementSelected, getElementsWithinSelection, getSelectedElements, getTargetElements, } from "@excalidraw/element";
2
2
  export { calculateScrollCenter } from "./scroll";
3
- export { hasBackground, hasStrokeWidth, hasStrokeStyle, canHaveArrowheads, canChangeRoundness, } from "./comparisons";
3
+ export { hasBackground, hasStrokeWidth, hasStrokeStyle, canHaveArrowheads, canChangeRoundness, } from "@excalidraw/element";
4
4
  export { getNormalizedZoom, getNormalizedGridSize, getNormalizedGridStep, } from "./normalize";
@@ -1,5 +1,5 @@
1
+ import type { ExcalidrawElement } from "@excalidraw/element/types";
1
2
  import type { AppState, Offsets, PointerCoords, Zoom } from "../types";
2
- import type { ExcalidrawElement } from "../element/types";
3
3
  export declare const centerScrollOn: ({ scenePoint, viewportDimensions, zoom, offsets, }: {
4
4
  scenePoint: PointerCoords;
5
5
  viewportDimensions: {
@@ -1,10 +1,9 @@
1
1
  import type { InteractiveCanvasAppState } from "../types";
2
- import type { ScrollBars } from "./types";
3
- import type { ExcalidrawElement } from "../element/types";
2
+ import type { RenderableElementsMap, ScrollBars } from "./types";
4
3
  export declare const SCROLLBAR_MARGIN = 4;
5
4
  export declare const SCROLLBAR_WIDTH = 6;
6
5
  export declare const SCROLLBAR_COLOR = "rgba(0,0,0,0.3)";
7
- export declare const getScrollBars: (elements: readonly ExcalidrawElement[], viewportWidth: number, viewportHeight: number, appState: InteractiveCanvasAppState) => ScrollBars;
6
+ export declare const getScrollBars: (elements: RenderableElementsMap, viewportWidth: number, viewportHeight: number, appState: InteractiveCanvasAppState) => ScrollBars;
8
7
  export declare const isOverScrollBars: (scrollBars: ScrollBars, x: number, y: number) => {
9
8
  isOverEither: boolean;
10
9
  isOverHorizontal: boolean;
@@ -1,9 +1,9 @@
1
+ import type { UserIdleState } from "@excalidraw/common";
2
+ import type { ExcalidrawElement, NonDeletedElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "@excalidraw/element/types";
3
+ import type { MakeBrand } from "@excalidraw/common/utility-types";
4
+ import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, Device, PendingExcalidrawElements } from "../types";
1
5
  import type { RoughCanvas } from "roughjs/bin/canvas";
2
6
  import type { Drawable } from "roughjs/bin/core";
3
- import type { ExcalidrawElement, NonDeletedElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "../element/types";
4
- import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, Device, PendingExcalidrawElements } from "../types";
5
- import type { MakeBrand } from "../utility-types";
6
- import type { UserIdleState } from "../constants";
7
7
  export type RenderableElementsMap = NonDeletedElementsMap & MakeBrand<"RenderableElementsMap">;
8
8
  export type StaticCanvasRenderConfig = {
9
9
  canvasBackgroundColor: AppState["viewBackgroundColor"];
@@ -93,12 +93,14 @@ export type ScrollBars = {
93
93
  y: number;
94
94
  width: number;
95
95
  height: number;
96
+ deltaMultiplier: number;
96
97
  } | null;
97
98
  vertical: {
98
99
  x: number;
99
100
  y: number;
100
101
  width: number;
101
102
  height: number;
103
+ deltaMultiplier: number;
102
104
  } | null;
103
105
  };
104
106
  export type ElementShape = Drawable | Drawable[] | null;
@@ -1,9 +1,9 @@
1
- import type { InclusiveRange } from "@excalidraw/math";
2
1
  import { type GlobalPoint } from "@excalidraw/math";
3
- import type { Bounds } from "./element/bounds";
4
- import type { MaybeTransformHandleType } from "./element/transformHandles";
5
- import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement } from "./element/types";
6
- import type { AppClassProperties, AppState, KeyboardModifiersObject, NullableGridSize } from "./types";
2
+ import type { InclusiveRange } from "@excalidraw/math";
3
+ import type { Bounds } from "@excalidraw/element";
4
+ import type { MaybeTransformHandleType } from "@excalidraw/element";
5
+ import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
6
+ import type { AppClassProperties, AppState, KeyboardModifiersObject } from "./types";
7
7
  export declare const getSnapDistance: (zoomValue: number) => number;
8
8
  type Vector2D = {
9
9
  x: number;
@@ -108,5 +108,4 @@ export declare const getSnapLinesAtPointer: (elements: readonly ExcalidrawElemen
108
108
  snapLines: PointerSnapLine[];
109
109
  };
110
110
  export declare const isActiveToolNonLinearSnappable: (activeToolType: AppState["activeTool"]["type"]) => boolean;
111
- export declare const getGridPoint: (x: number, y: number, gridSize: NullableGridSize) => [number, number];
112
111
  export {};
@@ -1,25 +1,23 @@
1
- import type { JSX } from "react";
2
- import type React from "react";
3
- import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, ExcalidrawImageElement, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement, ExcalidrawNonSelectionElement } from "./element/types";
1
+ import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES } from "@excalidraw/common";
2
+ import type { ApplyToOptions, SuggestedBinding } from "@excalidraw/element";
3
+ import type { LinearElementEditor } from "@excalidraw/element";
4
+ import type { MaybeTransformHandleType } from "@excalidraw/element";
5
+ import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement, ExcalidrawNonSelectionElement } from "@excalidraw/element/types";
6
+ import type { Merge, MaybePromise, ValueOf, MakeBrand } from "@excalidraw/common/utility-types";
7
+ import type { CaptureUpdateActionType, DurableIncrement, EphemeralIncrement } from "@excalidraw/element";
4
8
  import type { Action } from "./actions/types";
5
- import type { LinearElementEditor } from "./element/linearElementEditor";
6
- import type { SuggestedBinding } from "./element/binding";
7
- import type { ImportedDataState } from "./data/types";
8
- import type App from "./components/App";
9
- import type { throttleRAF } from "./utils";
10
9
  import type { Spreadsheet } from "./charts";
11
- import type { Language } from "./i18n";
12
10
  import type { ClipboardData } from "./clipboard";
13
- import type { isOverScrollBars } from "./scene/scrollbars";
14
- import type { MaybeTransformHandleType } from "./element/transformHandles";
11
+ import type App from "./components/App";
15
12
  import type Library from "./data/library";
16
13
  import type { FileSystemHandle } from "./data/filesystem";
17
- import type { IMAGE_MIME_TYPES, MIME_TYPES } from "./constants";
18
14
  import type { ContextMenuItems } from "./components/ContextMenu";
19
15
  import type { SnapLine } from "./snapping";
20
- import type { Merge, MaybePromise, ValueOf, MakeBrand } from "./utility-types";
21
- import type { CaptureUpdateActionType } from "./store";
22
- import type { UserIdleState } from "./constants";
16
+ import type { ImportedDataState } from "./data/types";
17
+ import type { Language } from "./i18n";
18
+ import type { isOverScrollBars } from "./scene/scrollbars";
19
+ import type React from "react";
20
+ import type { JSX } from "react";
23
21
  export type SocketId = string & {
24
22
  _brand: "SocketId";
25
23
  };
@@ -86,7 +84,7 @@ export type BinaryFileData = {
86
84
  };
87
85
  export type BinaryFileMetadata = Omit<BinaryFileData, "dataURL">;
88
86
  export type BinaryFiles = Record<ExcalidrawElement["id"], BinaryFileData>;
89
- export type ToolType = "selection" | "rectangle" | "diamond" | "ellipse" | "arrow" | "line" | "freedraw" | "text" | "image" | "eraser" | "hand" | "frame" | "magicframe" | "embeddable" | "laser";
87
+ export type ToolType = "selection" | "lasso" | "rectangle" | "diamond" | "ellipse" | "arrow" | "line" | "freedraw" | "text" | "image" | "eraser" | "hand" | "frame" | "magicframe" | "embeddable" | "laser";
90
88
  export type ElementOrToolType = ExcalidrawElementType | ToolType | "custom";
91
89
  export type ActiveTool = {
92
90
  type: ToolType;
@@ -115,7 +113,6 @@ type _CommonCanvasAppState = {
115
113
  offsetLeft: AppState["offsetLeft"];
116
114
  offsetTop: AppState["offsetTop"];
117
115
  theme: AppState["theme"];
118
- pendingImageElementId: AppState["pendingImageElementId"];
119
116
  };
120
117
  export type StaticCanvasAppState = Readonly<_CommonCanvasAppState & {
121
118
  shouldCacheIgnoreZoom: AppState["shouldCacheIgnoreZoom"];
@@ -132,7 +129,6 @@ export type StaticCanvasAppState = Readonly<_CommonCanvasAppState & {
132
129
  }>;
133
130
  export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
134
131
  activeEmbeddable: AppState["activeEmbeddable"];
135
- editingLinearElement: AppState["editingLinearElement"];
136
132
  selectionElement: AppState["selectionElement"];
137
133
  selectedGroupIds: AppState["selectedGroupIds"];
138
134
  selectedLinearElement: AppState["selectedLinearElement"];
@@ -148,6 +144,7 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
148
144
  isCropping: AppState["isCropping"];
149
145
  croppingElementId: AppState["croppingElementId"];
150
146
  searchMatches: AppState["searchMatches"];
147
+ activeLockedId: AppState["activeLockedId"];
151
148
  }>;
152
149
  export type ObservedAppState = ObservedStandaloneAppState & ObservedElementsAppState;
153
150
  export type ObservedStandaloneAppState = {
@@ -158,9 +155,13 @@ export type ObservedElementsAppState = {
158
155
  editingGroupId: AppState["editingGroupId"];
159
156
  selectedElementIds: AppState["selectedElementIds"];
160
157
  selectedGroupIds: AppState["selectedGroupIds"];
161
- editingLinearElementId: LinearElementEditor["elementId"] | null;
162
- selectedLinearElementId: LinearElementEditor["elementId"] | null;
158
+ selectedLinearElement: {
159
+ elementId: LinearElementEditor["elementId"];
160
+ isEditing: boolean;
161
+ } | null;
163
162
  croppingElementId: AppState["croppingElementId"];
163
+ lockedMultiSelections: AppState["lockedMultiSelections"];
164
+ activeLockedId: AppState["activeLockedId"];
164
165
  };
165
166
  export interface AppState {
166
167
  contextMenu: {
@@ -211,7 +212,6 @@ export interface AppState {
211
212
  * set when a new text is created or when an existing text is being edited
212
213
  */
213
214
  editingTextElement: NonDeletedExcalidrawElement | null;
214
- editingLinearElement: LinearElementEditor | null;
215
215
  activeTool: {
216
216
  /**
217
217
  * indicates a previous tool we should revert back to if we deselect the
@@ -219,6 +219,7 @@ export interface AppState {
219
219
  */
220
220
  lastActiveTool: ActiveTool | null;
221
221
  locked: boolean;
222
+ fromSelection: boolean;
222
223
  } & ActiveTool;
223
224
  penMode: boolean;
224
225
  penDetected: boolean;
@@ -325,8 +326,6 @@ export interface AppState {
325
326
  shown: true;
326
327
  data: Spreadsheet;
327
328
  };
328
- /** imageElement waiting to be placed on canvas */
329
- pendingImageElementId: ExcalidrawImageElement["id"] | null;
330
329
  showHyperlinkPopup: false | "info" | "editor";
331
330
  selectedLinearElement: LinearElementEditor | null;
332
331
  snapLines: readonly SnapLine[];
@@ -342,9 +341,18 @@ export interface AppState {
342
341
  /** image cropping */
343
342
  isCropping: boolean;
344
343
  croppingElementId: ExcalidrawElement["id"] | null;
345
- searchMatches: readonly SearchMatch[];
344
+ /** null if no search matches found / search closed */
345
+ searchMatches: Readonly<{
346
+ focusedId: ExcalidrawElement["id"] | null;
347
+ matches: readonly SearchMatch[];
348
+ }> | null;
349
+ /** the locked element/group that's active and shows unlock popup */
350
+ activeLockedId: string | null;
351
+ lockedMultiSelections: {
352
+ [groupId: string]: true;
353
+ };
346
354
  }
347
- type SearchMatch = {
355
+ export type SearchMatch = {
348
356
  id: string;
349
357
  focus: boolean;
350
358
  matchedLines: {
@@ -352,6 +360,7 @@ type SearchMatch = {
352
360
  offsetY: number;
353
361
  width: number;
354
362
  height: number;
363
+ showOnCanvas: boolean;
355
364
  }[];
356
365
  };
357
366
  export type UIAppState = Omit<AppState, "suggestedBindings" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
@@ -404,6 +413,7 @@ export type OnUserFollowedPayload = {
404
413
  };
405
414
  export interface ExcalidrawProps {
406
415
  onChange?: (elements: readonly OrderedExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
416
+ onIncrement?: (event: DurableIncrement | EphemeralIncrement) => void;
407
417
  initialData?: (() => MaybePromise<ExcalidrawInitialDataState | null>) | MaybePromise<ExcalidrawInitialDataState | null>;
408
418
  excalidrawAPI?: (api: ExcalidrawImperativeAPI) => void;
409
419
  isCollaborating?: boolean;
@@ -460,6 +470,7 @@ export interface ExcalidrawProps {
460
470
  renderEmbeddable?: (element: NonDeleted<ExcalidrawEmbeddableElement>, appState: AppState) => JSX.Element | null;
461
471
  aiEnabled?: boolean;
462
472
  showDeprecatedFonts?: boolean;
473
+ renderScrollbars?: boolean;
463
474
  }
464
475
  export type SceneData = {
465
476
  elements?: ImportedDataState["elements"];
@@ -467,6 +478,7 @@ export type SceneData = {
467
478
  collaborators?: Map<SocketId, Collaborator>;
468
479
  captureUpdate?: CaptureUpdateActionType;
469
480
  };
481
+ export type ApplyDeltasOptions = Omit<ApplyToOptions, "skipRedraw">;
470
482
  export type ExportOpts = {
471
483
  saveFileToDisk?: boolean;
472
484
  onExportToBackend?: (exportedElements: readonly NonDeletedExcalidrawElement[], appState: UIAppState, files: BinaryFiles) => void;
@@ -545,6 +557,7 @@ export type AppClassProperties = {
545
557
  visibleElements: App["visibleElements"];
546
558
  excalidrawContainerValue: App["excalidrawContainerValue"];
547
559
  onPointerUpEmitter: App["onPointerUpEmitter"];
560
+ updateEditorAtom: App["updateEditorAtom"];
548
561
  };
549
562
  export type PointerDownState = Readonly<{
550
563
  origin: Readonly<{
@@ -588,6 +601,10 @@ export type PointerDownState = Readonly<{
588
601
  x: number;
589
602
  y: number;
590
603
  } | null;
604
+ origin: {
605
+ x: number;
606
+ y: number;
607
+ };
591
608
  };
592
609
  eventListeners: {
593
610
  onMove: null | ReturnType<typeof throttleRAF>;
@@ -602,9 +619,12 @@ export type PointerDownState = Readonly<{
602
619
  export type UnsubscribeCallback = () => void;
603
620
  export interface ExcalidrawImperativeAPI {
604
621
  updateScene: InstanceType<typeof App>["updateScene"];
622
+ applyDeltas: InstanceType<typeof App>["applyDeltas"];
623
+ mutateElement: InstanceType<typeof App>["mutateElement"];
605
624
  updateLibrary: InstanceType<typeof Library>["updateLibrary"];
606
625
  resetScene: InstanceType<typeof App>["resetScene"];
607
626
  getSceneElementsIncludingDeleted: InstanceType<typeof App>["getSceneElementsIncludingDeleted"];
627
+ getSceneElementsMapIncludingDeleted: InstanceType<typeof App>["getSceneElementsMapIncludingDeleted"];
608
628
  history: {
609
629
  clear: InstanceType<typeof App>["resetHistory"];
610
630
  };
@@ -629,6 +649,7 @@ export interface ExcalidrawImperativeAPI {
629
649
  */
630
650
  updateFrameRendering: InstanceType<typeof App>["updateFrameRendering"];
631
651
  onChange: (callback: (elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles) => void) => UnsubscribeCallback;
652
+ onIncrement: (callback: (event: DurableIncrement | EphemeralIncrement) => void) => UnsubscribeCallback;
632
653
  onPointerDown: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: React.PointerEvent<HTMLElement>) => void) => UnsubscribeCallback;
633
654
  onPointerUp: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: PointerEvent) => void) => UnsubscribeCallback;
634
655
  onScrollChange: (callback: (scrollX: number, scrollY: number, zoom: Zoom) => void) => UnsubscribeCallback;
@@ -1,5 +1,6 @@
1
- import type { ExcalidrawElement, ExcalidrawTextElement } from "./types";
1
+ import type { ExcalidrawElement, ExcalidrawTextElement } from "@excalidraw/element/types";
2
2
  import type App from "../components/App";
3
+ type SubmitHandler = () => void;
3
4
  export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect, }: {
4
5
  id: ExcalidrawElement["id"];
5
6
  /**
@@ -19,4 +20,5 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
19
20
  excalidrawContainer: HTMLDivElement | null;
20
21
  app: App;
21
22
  autoSelect?: boolean | undefined;
22
- }) => void;
23
+ }) => SubmitHandler;
24
+ export {};
@@ -15,3 +15,5 @@ export declare function radiansToDegrees(degrees: Radians): Degrees;
15
15
  * @returns TRUE if the provided angle is a right angle
16
16
  */
17
17
  export declare function isRightAngleRads(rads: Radians): boolean;
18
+ export declare function radiansBetweenAngles(a: Radians, min: Radians, max: Radians): boolean;
19
+ export declare function radiansDifference(a: Radians, b: Radians): Radians;
@@ -0,0 +1,3 @@
1
+ export declare const PRECISION = 0.0001;
2
+ export declare const LegendreGaussN24TValues: number[];
3
+ export declare const LegendreGaussN24CValues: number[];
@@ -0,0 +1,74 @@
1
+ import type { Curve, GlobalPoint, LineSegment, LocalPoint } from "./types";
2
+ /**
3
+ *
4
+ * @param a
5
+ * @param b
6
+ * @param c
7
+ * @param d
8
+ * @returns
9
+ */
10
+ export declare function curve<Point extends GlobalPoint | LocalPoint>(a: Point, b: Point, c: Point, d: Point): Curve<Point>;
11
+ export declare const bezierEquation: <Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, t: number) => Point;
12
+ /**
13
+ * Computes the intersection between a cubic spline and a line segment.
14
+ */
15
+ export declare function curveIntersectLineSegment<Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, l: LineSegment<Point>): Point[];
16
+ /**
17
+ * Finds the closest point on the Bezier curve from another point
18
+ *
19
+ * @param x
20
+ * @param y
21
+ * @param P0
22
+ * @param P1
23
+ * @param P2
24
+ * @param P3
25
+ * @param tolerance
26
+ * @param maxLevel
27
+ * @returns
28
+ */
29
+ export declare function curveClosestPoint<Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, p: Point, tolerance?: number): Point | null;
30
+ /**
31
+ * Determines the distance between a point and the closest point on the
32
+ * Bezier curve.
33
+ *
34
+ * @param c The curve to test
35
+ * @param p The point to measure from
36
+ */
37
+ export declare function curvePointDistance<Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, p: Point): number;
38
+ /**
39
+ * Determines if the parameter is a Curve
40
+ */
41
+ export declare function isCurve<P extends GlobalPoint | LocalPoint>(v: unknown): v is Curve<P>;
42
+ export declare function curveTangent<Point extends GlobalPoint | LocalPoint>([p0, p1, p2, p3]: Curve<Point>, t: number): import("./types").Vector;
43
+ export declare function curveCatmullRomQuadraticApproxPoints(points: GlobalPoint[], tension?: number): [GlobalPoint, GlobalPoint][] | undefined;
44
+ export declare function curveCatmullRomCubicApproxPoints<Point extends GlobalPoint | LocalPoint>(points: Point[], tension?: number): Curve<Point>[] | undefined;
45
+ export declare function curveOffsetPoints([p0, p1, p2, p3]: Curve<GlobalPoint>, offset: number, steps?: number): GlobalPoint[];
46
+ export declare function offsetPointsForQuadraticBezier(p0: GlobalPoint, p1: GlobalPoint, p2: GlobalPoint, offsetDist: number, steps?: number): GlobalPoint[];
47
+ /**
48
+ * Implementation based on Legendre-Gauss quadrature for more accurate arc
49
+ * length calculation.
50
+ *
51
+ * Reference: https://pomax.github.io/bezierinfo/#arclength
52
+ *
53
+ * @param c The curve to calculate the length of
54
+ * @returns The approximated length of the curve
55
+ */
56
+ export declare function curveLength<P extends GlobalPoint | LocalPoint>(c: Curve<P>): number;
57
+ /**
58
+ * Calculates the curve length from t=0 to t=parameter using the same
59
+ * Legendre-Gauss quadrature method used in curveLength
60
+ *
61
+ * @param c The curve to calculate the partial length for
62
+ * @param t The parameter value (0 to 1) to calculate length up to
63
+ * @returns The length of the curve from beginning to parameter t
64
+ */
65
+ export declare function curveLengthAtParameter<P extends GlobalPoint | LocalPoint>(c: Curve<P>, t: number): number;
66
+ /**
67
+ * Calculates the point at a specific percentage of a curve's total length
68
+ * using binary search for improved efficiency and accuracy.
69
+ *
70
+ * @param c The curve to calculate point on
71
+ * @param percent A value between 0 and 1 representing the percentage of the curve's length
72
+ * @returns The point at the specified percentage of curve length
73
+ */
74
+ export declare function curvePointAtLength<P extends GlobalPoint | LocalPoint>(c: Curve<P>, percent: number): P;
@@ -1,5 +1,6 @@
1
1
  export * from "./angle";
2
2
  export * from "./curve";
3
+ export * from "./ellipse";
3
4
  export * from "./line";
4
5
  export * from "./point";
5
6
  export * from "./polygon";
@@ -43,9 +43,9 @@ export declare function isPoint(p: unknown): p is LocalPoint | GlobalPoint;
43
43
  * @param b Point The second point to compare
44
44
  * @returns TRUE if the points are sufficiently close to each other
45
45
  */
46
- export declare function pointsEqual<Point extends GlobalPoint | LocalPoint>(a: Point, b: Point): boolean;
46
+ export declare function pointsEqual<Point extends GlobalPoint | LocalPoint>(a: Point, b: Point, tolerance?: number): boolean;
47
47
  /**
48
- * Roate a point by [angle] radians.
48
+ * Rotate a point by [angle] radians.
49
49
  *
50
50
  * @param point The point to rotate
51
51
  * @param center The point to rotate around, the center point
@@ -54,7 +54,7 @@ export declare function pointsEqual<Point extends GlobalPoint | LocalPoint>(a: P
54
54
  */
55
55
  export declare function pointRotateRads<Point extends GlobalPoint | LocalPoint>([x, y]: Point, [cx, cy]: Point, angle: Radians): Point;
56
56
  /**
57
- * Roate a point by [angle] degree.
57
+ * Rotate a point by [angle] degree.
58
58
  *
59
59
  * @param point The point to rotate
60
60
  * @param center The point to rotate around, the center point
@@ -2,4 +2,5 @@ import type { GlobalPoint, LocalPoint, Polygon } from "./types";
2
2
  export declare function polygon<Point extends GlobalPoint | LocalPoint>(...points: Point[]): Polygon<Point>;
3
3
  export declare function polygonFromPoints<Point extends GlobalPoint | LocalPoint>(points: Point[]): Polygon<Point>;
4
4
  export declare const polygonIncludesPoint: <Point extends GlobalPoint | LocalPoint>(point: Point, polygon: Polygon<Point>) => boolean;
5
+ export declare const polygonIncludesPointNonZero: <Point extends [number, number]>(point: Point, polygon: Point[]) => boolean;
5
6
  export declare const pointOnPolygon: <Point extends GlobalPoint | LocalPoint>(p: Point, poly: Polygon<Point>, threshold?: number) => boolean;
@@ -1,3 +1,5 @@
1
1
  import type { GlobalPoint, LineSegment, LocalPoint, Rectangle } from "./types";
2
2
  export declare function rectangle<P extends GlobalPoint | LocalPoint>(topLeft: P, bottomRight: P): Rectangle<P>;
3
+ export declare function rectangleFromNumberSequence<Point extends LocalPoint | GlobalPoint>(minX: number, minY: number, maxX: number, maxY: number): Rectangle<Point>;
3
4
  export declare function rectangleIntersectLineSegment<Point extends LocalPoint | GlobalPoint>(r: Rectangle<Point>, l: LineSegment<Point>): Point[];
5
+ export declare function rectangleIntersectRectangle<Point extends LocalPoint | GlobalPoint>(rectangle1: Rectangle<Point>, rectangle2: Rectangle<Point>): boolean;
@@ -36,4 +36,4 @@ export declare const distanceToLineSegment: <Point extends GlobalPoint | LocalPo
36
36
  * @param s
37
37
  * @returns
38
38
  */
39
- export declare function lineSegmentIntersectionPoints<Point extends GlobalPoint | LocalPoint>(l: LineSegment<Point>, s: LineSegment<Point>): Point | null;
39
+ export declare function lineSegmentIntersectionPoints<Point extends GlobalPoint | LocalPoint>(l: LineSegment<Point>, s: LineSegment<Point>, threshold?: number): Point | null;
@@ -103,3 +103,4 @@ export type Ellipse<Point extends GlobalPoint | LocalPoint> = {
103
103
  } & {
104
104
  _brand: "excalimath_ellipse";
105
105
  };
106
+ export type ElementsSegmentsMap = Map<string, LineSegment<GlobalPoint>[]>;
@@ -12,9 +12,11 @@ export declare function vector(x: number, y: number, originX?: number, originY?:
12
12
  *
13
13
  * @param p The point to turn into a vector
14
14
  * @param origin The origin point in a given coordiante system
15
- * @returns The created vector from the point and the origin
15
+ * @param threshold The threshold to consider the vector as 'undefined'
16
+ * @param defaultValue The default value to return if the vector is 'undefined'
17
+ * @returns The created vector from the point and the origin or default
16
18
  */
17
- export declare function vectorFromPoint<Point extends GlobalPoint | LocalPoint>(p: Point, origin?: Point): Vector;
19
+ export declare function vectorFromPoint<Point extends GlobalPoint | LocalPoint>(p: Point, origin?: Point, threshold?: number, defaultValue?: Vector): Vector;
18
20
  /**
19
21
  * Cross product is a binary operation on two vectors in 2D space.
20
22
  * It results in a vector that is perpendicular to both vectors.
@@ -86,3 +88,7 @@ export declare function vectorMagnitude(v: Vector): number;
86
88
  * @returns The new normalized vector
87
89
  */
88
90
  export declare const vectorNormalize: (v: Vector) => Vector;
91
+ /**
92
+ * Calculate the right-hand normal of the vector.
93
+ */
94
+ export declare const vectorNormal: (v: Vector) => Vector;
@@ -1,5 +1,5 @@
1
1
  import { type GlobalPoint, type LocalPoint } from "@excalidraw/math";
2
- import type { Bounds } from "@excalidraw/excalidraw/element/bounds";
2
+ import type { Bounds } from "@excalidraw/element";
3
3
  export type LineSegment<P extends LocalPoint | GlobalPoint> = [P, P];
4
4
  export declare function getBBox<P extends LocalPoint | GlobalPoint>(line: LineSegment<P>): Bounds;
5
5
  export declare function doBBoxesIntersect(a: Bounds, b: Bounds): boolean;
@@ -1,6 +1,6 @@
1
+ import { MIME_TYPES } from "@excalidraw/common";
2
+ import type { ExcalidrawElement, ExcalidrawFrameLikeElement, NonDeleted } from "@excalidraw/element/types";
1
3
  import type { AppState, BinaryFiles } from "@excalidraw/excalidraw/types";
2
- import type { ExcalidrawElement, ExcalidrawFrameLikeElement, NonDeleted } from "@excalidraw/excalidraw/element/types";
3
- import { MIME_TYPES } from "@excalidraw/excalidraw/constants";
4
4
  export { MIME_TYPES };
5
5
  type ExportOpts = {
6
6
  elements: readonly NonDeleted<ExcalidrawElement>[];
@@ -1,4 +1,4 @@
1
1
  export * from "./export";
2
2
  export * from "./withinBounds";
3
3
  export * from "./bbox";
4
- export { getCommonBounds } from "@excalidraw/excalidraw/element/bounds";
4
+ export { getCommonBounds } from "@excalidraw/element";
@@ -1,19 +1,6 @@
1
- /**
2
- * this file defines pure geometric shapes
3
- *
4
- * for instance, a cubic bezier curve is specified by its four control points and
5
- * an ellipse is defined by its center, angle, semi major axis and semi minor axis
6
- * (but in semi-width and semi-height so it's more relevant to Excalidraw)
7
- *
8
- * the idea with pure shapes is so that we can provide collision and other geoemtric methods not depending on
9
- * the specifics of roughjs or elements in Excalidraw; instead, we can focus on the pure shapes themselves
10
- *
11
- * also included in this file are methods for converting an Excalidraw element or a Drawable from roughjs
12
- * to pure shapes
13
- */
14
- import type { Curve, LineSegment, Polygon, Radians } from "@excalidraw/math";
15
1
  import { type GlobalPoint, type LocalPoint } from "@excalidraw/math";
16
- import type { ElementsMap, ExcalidrawBindableElement, ExcalidrawDiamondElement, ExcalidrawElement, ExcalidrawEllipseElement, ExcalidrawEmbeddableElement, ExcalidrawFrameLikeElement, ExcalidrawFreeDrawElement, ExcalidrawIframeElement, ExcalidrawImageElement, ExcalidrawLinearElement, ExcalidrawRectangleElement, ExcalidrawSelectionElement, ExcalidrawTextElement } from "@excalidraw/excalidraw/element/types";
2
+ import type { ElementsMap, ExcalidrawBindableElement, ExcalidrawDiamondElement, ExcalidrawElement, ExcalidrawEllipseElement, ExcalidrawEmbeddableElement, ExcalidrawFrameLikeElement, ExcalidrawFreeDrawElement, ExcalidrawIframeElement, ExcalidrawImageElement, ExcalidrawLinearElement, ExcalidrawRectangleElement, ExcalidrawSelectionElement, ExcalidrawTextElement } from "@excalidraw/element/types";
3
+ import type { Curve, LineSegment, Polygon, Radians } from "@excalidraw/math";
17
4
  import type { Drawable, Op } from "roughjs/bin/core";
18
5
  export type Polyline<Point extends GlobalPoint | LocalPoint> = LineSegment<Point>[];
19
6
  export type Polycurve<Point extends GlobalPoint | LocalPoint> = Curve<Point>[];