@excalidraw/excalidraw 0.18.0-817d8c5 → 0.18.0-8608d7b

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 (306) 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-FB2NA5UG.js +4132 -0
  5. package/dist/dev/chunk-FB2NA5UG.js.map +7 -0
  6. package/dist/dev/{chunk-LMHBUWQS.js → chunk-PWQMCSHA.js} +27 -8
  7. package/dist/dev/chunk-PWQMCSHA.js.map +7 -0
  8. package/dist/dev/chunk-YMRX7R7U.js +5671 -0
  9. package/dist/dev/chunk-YMRX7R7U.js.map +7 -0
  10. package/dist/dev/data/{image-V26YBSDB.js → image-L23D26XS.js} +3 -3
  11. package/dist/dev/index.css +3945 -3493
  12. package/dist/dev/index.css.map +3 -3
  13. package/dist/dev/index.js +33090 -24527
  14. package/dist/dev/index.js.map +4 -4
  15. package/dist/dev/locales/{en-OZCJJ2HN.js → en-V3NQTBPG.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-GF46JCB3.js +12 -0
  20. package/dist/prod/chunk-HT4FKTIQ.js +4 -0
  21. package/dist/prod/chunk-LS7FJGPW.js +86 -0
  22. package/dist/prod/data/image-NWF7UX55.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-LQE6K457.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 +52 -12
  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 +25 -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 +20 -7
  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} +78 -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 +58 -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/element/src/positionElementsOnGrid.d.ts +2 -0
  64. package/dist/types/{excalidraw/renderer → element/src}/renderElement.d.ts +6 -3
  65. package/dist/types/{excalidraw/element → element/src}/resizeElements.d.ts +7 -6
  66. package/dist/types/{excalidraw/element → element/src}/resizeTest.d.ts +4 -4
  67. package/dist/types/{excalidraw/scene → element/src}/selection.d.ts +13 -7
  68. package/dist/types/element/src/shape.d.ts +42 -0
  69. package/dist/types/{excalidraw/element → element/src}/showSelectedShapeActions.d.ts +1 -1
  70. package/dist/types/{excalidraw/element → element/src}/sizeHelpers.d.ts +3 -3
  71. package/dist/types/element/src/store.d.ts +237 -0
  72. package/dist/types/{excalidraw/element → element/src}/textElement.d.ts +8 -7
  73. package/dist/types/{excalidraw/element → element/src}/transformHandles.d.ts +7 -7
  74. package/dist/types/{excalidraw/element → element/src}/typeChecks.d.ts +21 -3
  75. package/dist/types/{excalidraw/element → element/src}/types.d.ts +17 -4
  76. package/dist/types/element/src/utils.d.ts +31 -0
  77. package/dist/types/{excalidraw → element/src}/zindex.d.ts +5 -4
  78. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +115 -109
  79. package/dist/types/excalidraw/actions/actionAlign.d.ts +7 -7
  80. package/dist/types/excalidraw/actions/actionBoundText.d.ts +82 -78
  81. package/dist/types/excalidraw/actions/actionCanvas.d.ts +705 -502
  82. package/dist/types/excalidraw/actions/actionClipboard.d.ts +242 -228
  83. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +40 -38
  84. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +120 -113
  85. package/dist/types/excalidraw/actions/actionDistribute.d.ts +3 -3
  86. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +3 -7
  87. package/dist/types/excalidraw/actions/actionElementLink.d.ts +43 -41
  88. package/dist/types/excalidraw/actions/actionElementLock.d.ts +94 -92
  89. package/dist/types/excalidraw/{element/embeddable.d.ts → actions/actionEmbeddable.d.ts} +40 -48
  90. package/dist/types/excalidraw/actions/actionExport.d.ts +405 -387
  91. package/dist/types/excalidraw/actions/actionFinalize.d.ts +112 -67
  92. package/dist/types/excalidraw/actions/actionFlip.d.ts +3 -3
  93. package/dist/types/excalidraw/actions/actionFrame.d.ts +276 -268
  94. package/dist/types/excalidraw/actions/actionGroup.d.ts +79 -75
  95. package/dist/types/excalidraw/actions/actionHistory.d.ts +2 -3
  96. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +568 -42
  97. package/dist/types/excalidraw/actions/actionLink.d.ts +41 -39
  98. package/dist/types/excalidraw/actions/actionMenu.d.ts +116 -110
  99. package/dist/types/excalidraw/actions/actionNavigate.d.ts +77 -73
  100. package/dist/types/excalidraw/actions/actionProperties.d.ts +571 -524
  101. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +41 -39
  102. package/dist/types/excalidraw/actions/actionStyles.d.ts +42 -40
  103. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +3 -3
  104. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +40 -38
  105. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +40 -38
  106. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +39 -209
  107. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +19 -0
  108. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +39 -38
  109. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +40 -39
  110. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +40 -39
  111. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -8
  112. package/dist/types/excalidraw/actions/index.d.ts +2 -1
  113. package/dist/types/excalidraw/actions/manager.d.ts +2 -2
  114. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  115. package/dist/types/excalidraw/actions/types.d.ts +6 -5
  116. package/dist/types/excalidraw/animated-trail.d.ts +7 -1
  117. package/dist/types/excalidraw/appState.d.ts +42 -28
  118. package/dist/types/excalidraw/charts.d.ts +1 -1
  119. package/dist/types/excalidraw/clipboard.d.ts +71 -8
  120. package/dist/types/excalidraw/components/Actions.d.ts +19 -9
  121. package/dist/types/excalidraw/components/App.d.ts +58 -34
  122. package/dist/types/excalidraw/components/Avatar.d.ts +1 -1
  123. package/dist/types/excalidraw/components/ButtonIcon.d.ts +2 -1
  124. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -1
  125. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +10 -5
  126. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +1 -1
  127. package/dist/types/excalidraw/components/ColorPicker/HotkeyLabel.d.ts +1 -2
  128. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +6 -5
  129. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +4 -4
  130. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -3
  131. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +1 -1
  132. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +4 -4
  133. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
  134. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +2 -1
  135. package/dist/types/excalidraw/components/ConfirmDialog.d.ts +1 -1
  136. package/dist/types/excalidraw/components/ContextMenu.d.ts +2 -2
  137. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +23 -0
  138. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  139. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +2 -2
  140. package/dist/types/excalidraw/components/DialogActionButton.d.ts +1 -1
  141. package/dist/types/excalidraw/{element → components}/ElementCanvasButtons.d.ts +1 -1
  142. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +5 -4
  143. package/dist/types/excalidraw/components/Ellipsify.d.ts +4 -0
  144. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +1 -1
  145. package/dist/types/excalidraw/components/EyeDropper.d.ts +1 -1
  146. package/dist/types/excalidraw/components/FixedSideContainer.d.ts +1 -1
  147. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +1 -1
  148. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +3 -2
  149. package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +3 -3
  150. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +4 -2
  151. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +1 -1
  152. package/dist/types/excalidraw/components/HintViewer.d.ts +1 -1
  153. package/dist/types/excalidraw/components/IconPicker.d.ts +1 -1
  154. package/dist/types/excalidraw/components/ImageExportDialog.d.ts +2 -2
  155. package/dist/types/excalidraw/components/InitializeApp.d.ts +1 -1
  156. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  157. package/dist/types/excalidraw/components/Island.d.ts +1 -1
  158. package/dist/types/excalidraw/components/JSONExportDialog.d.ts +2 -2
  159. package/dist/types/excalidraw/components/LayerUI.d.ts +5 -4
  160. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -1
  161. package/dist/types/excalidraw/components/LibraryMenuItems.d.ts +1 -1
  162. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +4 -4
  163. package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -2
  164. package/dist/types/excalidraw/components/LoadingMessage.d.ts +1 -1
  165. package/dist/types/excalidraw/components/MagicButton.d.ts +1 -1
  166. package/dist/types/excalidraw/components/MobileMenu.d.ts +5 -7
  167. package/dist/types/excalidraw/components/MobileToolBar.d.ts +11 -0
  168. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +1 -1
  169. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +2 -1
  170. package/dist/types/excalidraw/components/PublishLibrary.d.ts +1 -1
  171. package/dist/types/excalidraw/components/{ButtonIconSelect.d.ts → RadioSelection.d.ts} +1 -1
  172. package/dist/types/excalidraw/components/Range.d.ts +3 -3
  173. package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
  174. package/dist/types/excalidraw/components/Sidebar/SidebarTrigger.d.ts +1 -1
  175. package/dist/types/excalidraw/components/Sidebar/common.d.ts +1 -1
  176. package/dist/types/excalidraw/components/Stack.d.ts +1 -1
  177. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  178. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +1 -1
  179. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +2 -1
  180. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  181. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +14 -4
  182. package/dist/types/excalidraw/components/Stats/FontSize.d.ts +2 -2
  183. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  184. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +3 -3
  185. package/dist/types/excalidraw/components/Stats/MultiFontSize.d.ts +2 -2
  186. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  187. package/dist/types/excalidraw/components/Stats/Position.d.ts +2 -2
  188. package/dist/types/excalidraw/components/Stats/index.d.ts +2 -2
  189. package/dist/types/excalidraw/components/Stats/utils.d.ts +4 -11
  190. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -2
  191. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +1 -1
  192. package/dist/types/excalidraw/components/TextField.d.ts +2 -1
  193. package/dist/types/excalidraw/components/Toast.d.ts +1 -1
  194. package/dist/types/excalidraw/components/ToolButton.d.ts +2 -2
  195. package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
  196. package/dist/types/excalidraw/components/Tooltip.d.ts +1 -1
  197. package/dist/types/excalidraw/components/UnlockPopup.d.ts +8 -0
  198. package/dist/types/excalidraw/components/UserList.d.ts +1 -1
  199. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +4 -3
  200. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +2 -2
  201. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +3 -3
  202. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +5 -3
  203. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +2 -1
  204. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +2 -2
  205. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +1 -1
  206. package/dist/types/excalidraw/components/hyperlink/Hyperlink.d.ts +5 -4
  207. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +3 -2
  208. package/dist/types/excalidraw/components/icons.d.ts +10 -1
  209. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +1 -1
  210. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +4 -1
  211. package/dist/types/excalidraw/components/shapes.d.ts +190 -0
  212. package/dist/types/excalidraw/context/tunnels.d.ts +1 -1
  213. package/dist/types/excalidraw/data/EditorLocalStorage.d.ts +1 -1
  214. package/dist/types/excalidraw/data/blob.d.ts +7 -11
  215. package/dist/types/excalidraw/data/filesystem.d.ts +2 -2
  216. package/dist/types/excalidraw/data/index.d.ts +2 -2
  217. package/dist/types/excalidraw/data/json.d.ts +1 -1
  218. package/dist/types/excalidraw/data/library.d.ts +3 -3
  219. package/dist/types/excalidraw/data/reconcile.d.ts +3 -2
  220. package/dist/types/excalidraw/data/resave.d.ts +1 -1
  221. package/dist/types/excalidraw/data/restore.d.ts +6 -1
  222. package/dist/types/excalidraw/data/transform.d.ts +4 -4
  223. package/dist/types/excalidraw/data/types.d.ts +6 -3
  224. package/dist/types/excalidraw/editor-jotai.d.ts +6 -6
  225. package/dist/types/excalidraw/eraser/index.d.ts +12 -0
  226. package/dist/types/excalidraw/errors.d.ts +0 -3
  227. package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -13
  228. package/dist/types/excalidraw/history.d.ts +31 -23
  229. package/dist/types/excalidraw/hooks/useEmitter.d.ts +1 -1
  230. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  231. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
  232. package/dist/types/excalidraw/i18n.d.ts +1 -1
  233. package/dist/types/excalidraw/index.d.ts +18 -16
  234. package/dist/types/excalidraw/laser-trails.d.ts +1 -1
  235. package/dist/types/excalidraw/lasso/index.d.ts +16 -0
  236. package/dist/types/excalidraw/lasso/utils.d.ts +13 -0
  237. package/dist/types/excalidraw/renderer/helpers.d.ts +8 -3
  238. package/dist/types/excalidraw/renderer/staticScene.d.ts +4 -1
  239. package/dist/types/excalidraw/renderer/staticSvgScene.d.ts +2 -2
  240. package/dist/types/excalidraw/scene/Renderer.d.ts +3 -4
  241. package/dist/types/excalidraw/scene/export.d.ts +1 -1
  242. package/dist/types/excalidraw/scene/index.d.ts +2 -2
  243. package/dist/types/excalidraw/scene/scroll.d.ts +1 -1
  244. package/dist/types/excalidraw/scene/scrollbars.d.ts +2 -3
  245. package/dist/types/excalidraw/scene/types.d.ts +6 -4
  246. package/dist/types/excalidraw/snapping.d.ts +5 -6
  247. package/dist/types/excalidraw/types.d.ts +55 -26
  248. package/dist/types/excalidraw/{element → wysiwyg}/textWysiwyg.d.ts +4 -2
  249. package/dist/types/math/{angle.d.ts → src/angle.d.ts} +2 -0
  250. package/dist/types/math/src/constants.d.ts +3 -0
  251. package/dist/types/math/src/curve.d.ts +74 -0
  252. package/dist/types/math/{index.d.ts → src/index.d.ts} +1 -0
  253. package/dist/types/math/{point.d.ts → src/point.d.ts} +3 -3
  254. package/dist/types/math/{polygon.d.ts → src/polygon.d.ts} +1 -0
  255. package/dist/types/math/{rectangle.d.ts → src/rectangle.d.ts} +2 -0
  256. package/dist/types/math/{segment.d.ts → src/segment.d.ts} +2 -1
  257. package/dist/types/math/{types.d.ts → src/types.d.ts} +1 -0
  258. package/dist/types/math/{vector.d.ts → src/vector.d.ts} +8 -2
  259. package/dist/types/utils/{bbox.d.ts → src/bbox.d.ts} +1 -1
  260. package/dist/types/utils/{export.d.ts → src/export.d.ts} +2 -2
  261. package/dist/types/utils/{index.d.ts → src/index.d.ts} +1 -1
  262. package/dist/types/utils/{geometry → src}/shape.d.ts +2 -15
  263. package/dist/types/utils/{withinBounds.d.ts → src/withinBounds.d.ts} +2 -2
  264. package/history.ts +148 -109
  265. package/package.json +26 -11
  266. package/dist/dev/chunk-3SN6HYVK.js +0 -25695
  267. package/dist/dev/chunk-3SN6HYVK.js.map +0 -7
  268. package/dist/dev/chunk-53KHN5WM.js +0 -7
  269. package/dist/dev/chunk-53KHN5WM.js.map +0 -7
  270. package/dist/dev/chunk-LMHBUWQS.js.map +0 -7
  271. package/dist/dev/chunk-OKSO7T74.js +0 -4132
  272. package/dist/dev/chunk-OKSO7T74.js.map +0 -7
  273. package/dist/prod/chunk-36CXSE6H.js +0 -34
  274. package/dist/prod/chunk-6U3AYISY.js +0 -12
  275. package/dist/prod/chunk-EIO257PC.js +0 -86
  276. package/dist/prod/chunk-G5N3DNGT.js +0 -7
  277. package/dist/prod/data/image-N4WCURRR.js +0 -1
  278. package/dist/types/excalidraw/align.d.ts +0 -7
  279. package/dist/types/excalidraw/components/ButtonSelect.d.ts +0 -9
  280. package/dist/types/excalidraw/element/collision.d.ts +0 -26
  281. package/dist/types/excalidraw/element/distance.d.ts +0 -3
  282. package/dist/types/excalidraw/element/index.d.ts +0 -26
  283. package/dist/types/excalidraw/element/mutateElement.d.ts +0 -13
  284. package/dist/types/excalidraw/element/utils.d.ts +0 -21
  285. package/dist/types/excalidraw/scene/Shape.d.ts +0 -17
  286. package/dist/types/excalidraw/scene/ShapeCache.d.ts +0 -25
  287. package/dist/types/excalidraw/shapes.d.ts +0 -85
  288. package/dist/types/excalidraw/store.d.ts +0 -129
  289. package/dist/types/excalidraw/visualdebug.d.ts +0 -41
  290. package/dist/types/math/curve.d.ts +0 -40
  291. package/dist/types/utils/collision.d.ts +0 -9
  292. /package/dist/dev/data/{image-V26YBSDB.js.map → image-L23D26XS.js.map} +0 -0
  293. /package/dist/dev/locales/{en-OZCJJ2HN.js.map → en-V3NQTBPG.js.map} +0 -0
  294. /package/dist/types/{excalidraw → common/src}/keys.d.ts +0 -0
  295. /package/dist/types/{excalidraw → common/src}/queue.d.ts +0 -0
  296. /package/dist/types/{excalidraw → common/src}/random.d.ts +0 -0
  297. /package/dist/types/{excalidraw/data → common/src}/url.d.ts +0 -0
  298. /package/dist/types/{excalidraw/element → element/src}/containerCache.d.ts +0 -0
  299. /package/dist/types/{excalidraw/element → element/src}/sortElements.d.ts +0 -0
  300. /package/dist/types/{excalidraw/element → element/src}/textMeasurements.d.ts +0 -0
  301. /package/dist/types/{excalidraw/element → element/src}/textWrapping.d.ts +0 -0
  302. /package/dist/types/math/{ellipse.d.ts → src/ellipse.d.ts} +0 -0
  303. /package/dist/types/math/{line.d.ts → src/line.d.ts} +0 -0
  304. /package/dist/types/math/{range.d.ts → src/range.d.ts} +0 -0
  305. /package/dist/types/math/{triangle.d.ts → src/triangle.d.ts} +0 -0
  306. /package/dist/types/math/{utils.d.ts → src/utils.d.ts} +0 -0
@@ -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 { 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,7 +219,12 @@ export interface AppState {
219
219
  */
220
220
  lastActiveTool: ActiveTool | null;
221
221
  locked: boolean;
222
+ fromSelection: boolean;
222
223
  } & ActiveTool;
224
+ preferredSelectionTool: {
225
+ type: "selection" | "lasso";
226
+ initialized: boolean;
227
+ };
223
228
  penMode: boolean;
224
229
  penDetected: boolean;
225
230
  exportBackground: boolean;
@@ -251,7 +256,7 @@ export interface AppState {
251
256
  isRotating: boolean;
252
257
  zoom: Zoom;
253
258
  openMenu: "canvas" | "shape" | null;
254
- openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | null;
259
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
255
260
  openSidebar: {
256
261
  name: SidebarName;
257
262
  tab?: SidebarTabName;
@@ -325,8 +330,6 @@ export interface AppState {
325
330
  shown: true;
326
331
  data: Spreadsheet;
327
332
  };
328
- /** imageElement waiting to be placed on canvas */
329
- pendingImageElementId: ExcalidrawImageElement["id"] | null;
330
333
  showHyperlinkPopup: false | "info" | "editor";
331
334
  selectedLinearElement: LinearElementEditor | null;
332
335
  snapLines: readonly SnapLine[];
@@ -342,9 +345,20 @@ export interface AppState {
342
345
  /** image cropping */
343
346
  isCropping: boolean;
344
347
  croppingElementId: ExcalidrawElement["id"] | null;
345
- searchMatches: readonly SearchMatch[];
348
+ /** null if no search matches found / search closed */
349
+ searchMatches: Readonly<{
350
+ focusedId: ExcalidrawElement["id"] | null;
351
+ matches: readonly SearchMatch[];
352
+ }> | null;
353
+ /** the locked element/group that's active and shows unlock popup */
354
+ activeLockedId: string | null;
355
+ lockedMultiSelections: {
356
+ [groupId: string]: true;
357
+ };
358
+ /** properties sidebar mode - determines whether to show compact or complete sidebar */
359
+ stylesPanelMode: "compact" | "full" | "mobile";
346
360
  }
347
- type SearchMatch = {
361
+ export type SearchMatch = {
348
362
  id: string;
349
363
  focus: boolean;
350
364
  matchedLines: {
@@ -352,6 +366,7 @@ type SearchMatch = {
352
366
  offsetY: number;
353
367
  width: number;
354
368
  height: number;
369
+ showOnCanvas: boolean;
355
370
  }[];
356
371
  };
357
372
  export type UIAppState = Omit<AppState, "suggestedBindings" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
@@ -404,6 +419,7 @@ export type OnUserFollowedPayload = {
404
419
  };
405
420
  export interface ExcalidrawProps {
406
421
  onChange?: (elements: readonly OrderedExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
422
+ onIncrement?: (event: DurableIncrement | EphemeralIncrement) => void;
407
423
  initialData?: (() => MaybePromise<ExcalidrawInitialDataState | null>) | MaybePromise<ExcalidrawInitialDataState | null>;
408
424
  excalidrawAPI?: (api: ExcalidrawImperativeAPI) => void;
409
425
  isCollaborating?: boolean;
@@ -431,6 +447,7 @@ export interface ExcalidrawProps {
431
447
  onDuplicate?: (nextElements: readonly ExcalidrawElement[],
432
448
  /** excludes the duplicated elements */
433
449
  prevElements: readonly ExcalidrawElement[]) => ExcalidrawElement[] | void;
450
+ renderTopLeftUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
434
451
  renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
435
452
  langCode?: Language["code"];
436
453
  viewModeEnabled?: boolean;
@@ -460,6 +477,7 @@ export interface ExcalidrawProps {
460
477
  renderEmbeddable?: (element: NonDeleted<ExcalidrawEmbeddableElement>, appState: AppState) => JSX.Element | null;
461
478
  aiEnabled?: boolean;
462
479
  showDeprecatedFonts?: boolean;
480
+ renderScrollbars?: boolean;
463
481
  }
464
482
  export type SceneData = {
465
483
  elements?: ImportedDataState["elements"];
@@ -545,6 +563,8 @@ export type AppClassProperties = {
545
563
  visibleElements: App["visibleElements"];
546
564
  excalidrawContainerValue: App["excalidrawContainerValue"];
547
565
  onPointerUpEmitter: App["onPointerUpEmitter"];
566
+ updateEditorAtom: App["updateEditorAtom"];
567
+ onPointerDownEmitter: App["onPointerDownEmitter"];
548
568
  };
549
569
  export type PointerDownState = Readonly<{
550
570
  origin: Readonly<{
@@ -588,6 +608,11 @@ export type PointerDownState = Readonly<{
588
608
  x: number;
589
609
  y: number;
590
610
  } | null;
611
+ origin: {
612
+ x: number;
613
+ y: number;
614
+ };
615
+ blockDragging: boolean;
591
616
  };
592
617
  eventListeners: {
593
618
  onMove: null | ReturnType<typeof throttleRAF>;
@@ -602,9 +627,12 @@ export type PointerDownState = Readonly<{
602
627
  export type UnsubscribeCallback = () => void;
603
628
  export interface ExcalidrawImperativeAPI {
604
629
  updateScene: InstanceType<typeof App>["updateScene"];
630
+ applyDeltas: InstanceType<typeof App>["applyDeltas"];
631
+ mutateElement: InstanceType<typeof App>["mutateElement"];
605
632
  updateLibrary: InstanceType<typeof Library>["updateLibrary"];
606
633
  resetScene: InstanceType<typeof App>["resetScene"];
607
634
  getSceneElementsIncludingDeleted: InstanceType<typeof App>["getSceneElementsIncludingDeleted"];
635
+ getSceneElementsMapIncludingDeleted: InstanceType<typeof App>["getSceneElementsMapIncludingDeleted"];
608
636
  history: {
609
637
  clear: InstanceType<typeof App>["resetHistory"];
610
638
  };
@@ -629,6 +657,7 @@ export interface ExcalidrawImperativeAPI {
629
657
  */
630
658
  updateFrameRendering: InstanceType<typeof App>["updateFrameRendering"];
631
659
  onChange: (callback: (elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles) => void) => UnsubscribeCallback;
660
+ onIncrement: (callback: (event: DurableIncrement | EphemeralIncrement) => void) => UnsubscribeCallback;
632
661
  onPointerDown: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: React.PointerEvent<HTMLElement>) => void) => UnsubscribeCallback;
633
662
  onPointerUp: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: PointerEvent) => void) => UnsubscribeCallback;
634
663
  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,5 @@ 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;
40
+ export declare function lineSegmentsDistance<Point extends GlobalPoint | LocalPoint>(s1: LineSegment<Point>, s2: LineSegment<Point>): number;
@@ -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";