@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
@@ -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>[];
@@ -1,5 +1,5 @@
1
- import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/excalidraw/element/types";
2
- import type { Bounds } from "@excalidraw/excalidraw/element/bounds";
1
+ import type { Bounds } from "@excalidraw/element";
2
+ import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
3
3
  type Element = NonDeletedExcalidrawElement;
4
4
  type Elements = readonly NonDeletedExcalidrawElement[];
5
5
  export declare const isElementInsideBBox: (element: Element, bbox: Bounds, eitherDirection?: boolean) => boolean;
package/history.ts CHANGED
@@ -1,10 +1,84 @@
1
- import type { AppStateChange, ElementsChange } from "./change";
2
- import type { SceneElementsMap } from "./element/types";
3
- import { Emitter } from "./emitter";
4
- import type { Snapshot } from "./store";
1
+ import { Emitter } from "@excalidraw/common";
2
+
3
+ import {
4
+ CaptureUpdateAction,
5
+ StoreChange,
6
+ StoreDelta,
7
+ } from "@excalidraw/element";
8
+
9
+ import type { StoreSnapshot, Store } from "@excalidraw/element";
10
+
11
+ import type { SceneElementsMap } from "@excalidraw/element/types";
12
+
5
13
  import type { AppState } from "./types";
6
14
 
7
- type HistoryStack = HistoryEntry[];
15
+ export class HistoryDelta extends StoreDelta {
16
+ /**
17
+ * Apply the delta to the passed elements and appState, does not modify the snapshot.
18
+ */
19
+ public applyTo(
20
+ elements: SceneElementsMap,
21
+ appState: AppState,
22
+ snapshot: StoreSnapshot,
23
+ ): [SceneElementsMap, AppState, boolean] {
24
+ const [nextElements, elementsContainVisibleChange] = this.elements.applyTo(
25
+ elements,
26
+ // used to fallback into local snapshot in case we couldn't apply the delta
27
+ // due to a missing (force deleted) elements in the scene
28
+ snapshot.elements,
29
+ // we don't want to apply the `version` and `versionNonce` properties for history
30
+ // as we always need to end up with a new version due to collaboration,
31
+ // approaching each undo / redo as a new user action
32
+ {
33
+ excludedProperties: new Set(["version", "versionNonce"]),
34
+ },
35
+ );
36
+
37
+ const [nextAppState, appStateContainsVisibleChange] = this.appState.applyTo(
38
+ appState,
39
+ nextElements,
40
+ );
41
+
42
+ const appliedVisibleChanges =
43
+ elementsContainVisibleChange || appStateContainsVisibleChange;
44
+
45
+ return [nextElements, nextAppState, appliedVisibleChanges];
46
+ }
47
+
48
+ /**
49
+ * Overriding once to avoid type casting everywhere.
50
+ */
51
+ public static override calculate(
52
+ prevSnapshot: StoreSnapshot,
53
+ nextSnapshot: StoreSnapshot,
54
+ ) {
55
+ return super.calculate(prevSnapshot, nextSnapshot) as HistoryDelta;
56
+ }
57
+
58
+ /**
59
+ * Overriding once to avoid type casting everywhere.
60
+ */
61
+ public static override inverse(delta: StoreDelta): HistoryDelta {
62
+ return super.inverse(delta) as HistoryDelta;
63
+ }
64
+
65
+ /**
66
+ * Overriding once to avoid type casting everywhere.
67
+ */
68
+ public static override applyLatestChanges(
69
+ delta: StoreDelta,
70
+ prevElements: SceneElementsMap,
71
+ nextElements: SceneElementsMap,
72
+ modifierOptions?: "deleted" | "inserted",
73
+ ) {
74
+ return super.applyLatestChanges(
75
+ delta,
76
+ prevElements,
77
+ nextElements,
78
+ modifierOptions,
79
+ ) as HistoryDelta;
80
+ }
81
+ }
8
82
 
9
83
  export class HistoryChangedEvent {
10
84
  constructor(
@@ -18,8 +92,8 @@ export class History {
18
92
  [HistoryChangedEvent]
19
93
  >();
20
94
 
21
- private readonly undoStack: HistoryStack = [];
22
- private readonly redoStack: HistoryStack = [];
95
+ public readonly undoStack: HistoryDelta[] = [];
96
+ public readonly redoStack: HistoryDelta[] = [];
23
97
 
24
98
  public get isUndoStackEmpty() {
25
99
  return this.undoStack.length === 0;
@@ -29,98 +103,119 @@ export class History {
29
103
  return this.redoStack.length === 0;
30
104
  }
31
105
 
106
+ constructor(private readonly store: Store) {}
107
+
32
108
  public clear() {
33
109
  this.undoStack.length = 0;
34
110
  this.redoStack.length = 0;
35
111
  }
36
112
 
37
113
  /**
38
- * Record a local change which will go into the history
114
+ * Record a non-empty local durable increment, which will go into the undo stack..
115
+ * Do not re-record history entries, which were already pushed to undo / redo stack, as part of history action.
39
116
  */
40
- public record(
41
- elementsChange: ElementsChange,
42
- appStateChange: AppStateChange,
43
- ) {
44
- const entry = HistoryEntry.create(appStateChange, elementsChange);
117
+ public record(delta: StoreDelta) {
118
+ if (delta.isEmpty() || delta instanceof HistoryDelta) {
119
+ return;
120
+ }
45
121
 
46
- if (!entry.isEmpty()) {
47
- // we have the latest changes, no need to `applyLatest`, which is done within `History.push`
48
- this.undoStack.push(entry.inverse());
122
+ // construct history entry, so once it's emitted, it's not recorded again
123
+ const historyDelta = HistoryDelta.inverse(delta);
49
124
 
50
- if (!entry.elementsChange.isEmpty()) {
51
- // don't reset redo stack on local appState changes,
52
- // as a simple click (unselect) could lead to losing all the redo entries
53
- // only reset on non empty elements changes!
54
- this.redoStack.length = 0;
55
- }
125
+ this.undoStack.push(historyDelta);
56
126
 
57
- this.onHistoryChangedEmitter.trigger(
58
- new HistoryChangedEvent(this.isUndoStackEmpty, this.isRedoStackEmpty),
59
- );
127
+ if (!historyDelta.elements.isEmpty()) {
128
+ // don't reset redo stack on local appState changes,
129
+ // as a simple click (unselect) could lead to losing all the redo entries
130
+ // only reset on non empty elements changes!
131
+ this.redoStack.length = 0;
60
132
  }
133
+
134
+ this.onHistoryChangedEmitter.trigger(
135
+ new HistoryChangedEvent(this.isUndoStackEmpty, this.isRedoStackEmpty),
136
+ );
61
137
  }
62
138
 
63
- public undo(
64
- elements: SceneElementsMap,
65
- appState: AppState,
66
- snapshot: Readonly<Snapshot>,
67
- ) {
139
+ public undo(elements: SceneElementsMap, appState: AppState) {
68
140
  return this.perform(
69
141
  elements,
70
142
  appState,
71
- snapshot,
72
143
  () => History.pop(this.undoStack),
73
- (entry: HistoryEntry) => History.push(this.redoStack, entry, elements),
144
+ (entry: HistoryDelta) => History.push(this.redoStack, entry),
74
145
  );
75
146
  }
76
147
 
77
- public redo(
78
- elements: SceneElementsMap,
79
- appState: AppState,
80
- snapshot: Readonly<Snapshot>,
81
- ) {
148
+ public redo(elements: SceneElementsMap, appState: AppState) {
82
149
  return this.perform(
83
150
  elements,
84
151
  appState,
85
- snapshot,
86
152
  () => History.pop(this.redoStack),
87
- (entry: HistoryEntry) => History.push(this.undoStack, entry, elements),
153
+ (entry: HistoryDelta) => History.push(this.undoStack, entry),
88
154
  );
89
155
  }
90
156
 
91
157
  private perform(
92
158
  elements: SceneElementsMap,
93
159
  appState: AppState,
94
- snapshot: Readonly<Snapshot>,
95
- pop: () => HistoryEntry | null,
96
- push: (entry: HistoryEntry) => void,
160
+ pop: () => HistoryDelta | null,
161
+ push: (entry: HistoryDelta) => void,
97
162
  ): [SceneElementsMap, AppState] | void {
98
163
  try {
99
- let historyEntry = pop();
164
+ let historyDelta = pop();
100
165
 
101
- if (historyEntry === null) {
166
+ if (historyDelta === null) {
102
167
  return;
103
168
  }
104
169
 
170
+ const action = CaptureUpdateAction.IMMEDIATELY;
171
+
172
+ let prevSnapshot = this.store.snapshot;
173
+
105
174
  let nextElements = elements;
106
175
  let nextAppState = appState;
107
176
  let containsVisibleChange = false;
108
177
 
109
178
  // iterate through the history entries in case they result in no visible changes
110
- while (historyEntry) {
179
+ while (historyDelta) {
111
180
  try {
112
181
  [nextElements, nextAppState, containsVisibleChange] =
113
- historyEntry.applyTo(nextElements, nextAppState, snapshot);
182
+ historyDelta.applyTo(nextElements, nextAppState, prevSnapshot);
183
+
184
+ const prevElements = prevSnapshot.elements;
185
+ const nextSnapshot = prevSnapshot.maybeClone(
186
+ action,
187
+ nextElements,
188
+ nextAppState,
189
+ );
190
+
191
+ const change = StoreChange.create(prevSnapshot, nextSnapshot);
192
+ const delta = HistoryDelta.applyLatestChanges(
193
+ historyDelta,
194
+ prevElements,
195
+ nextElements,
196
+ );
197
+
198
+ if (!delta.isEmpty()) {
199
+ // schedule immediate capture, so that it's emitted for the sync purposes
200
+ this.store.scheduleMicroAction({
201
+ action,
202
+ change,
203
+ delta,
204
+ });
205
+
206
+ historyDelta = delta;
207
+ }
208
+
209
+ prevSnapshot = nextSnapshot;
114
210
  } finally {
115
- // make sure to always push / pop, even if the increment is corrupted
116
- push(historyEntry);
211
+ push(historyDelta);
117
212
  }
118
213
 
119
214
  if (containsVisibleChange) {
120
215
  break;
121
216
  }
122
217
 
123
- historyEntry = pop();
218
+ historyDelta = pop();
124
219
  }
125
220
 
126
221
  return [nextElements, nextAppState];
@@ -133,7 +228,7 @@ export class History {
133
228
  }
134
229
  }
135
230
 
136
- private static pop(stack: HistoryStack): HistoryEntry | null {
231
+ private static pop(stack: HistoryDelta[]): HistoryDelta | null {
137
232
  if (!stack.length) {
138
233
  return null;
139
234
  }
@@ -147,64 +242,8 @@ export class History {
147
242
  return null;
148
243
  }
149
244
 
150
- private static push(
151
- stack: HistoryStack,
152
- entry: HistoryEntry,
153
- prevElements: SceneElementsMap,
154
- ) {
155
- const updatedEntry = entry.inverse().applyLatestChanges(prevElements);
156
- return stack.push(updatedEntry);
157
- }
158
- }
159
-
160
- export class HistoryEntry {
161
- private constructor(
162
- public readonly appStateChange: AppStateChange,
163
- public readonly elementsChange: ElementsChange,
164
- ) {}
165
-
166
- public static create(
167
- appStateChange: AppStateChange,
168
- elementsChange: ElementsChange,
169
- ) {
170
- return new HistoryEntry(appStateChange, elementsChange);
171
- }
172
-
173
- public inverse(): HistoryEntry {
174
- return new HistoryEntry(
175
- this.appStateChange.inverse(),
176
- this.elementsChange.inverse(),
177
- );
178
- }
179
-
180
- public applyTo(
181
- elements: SceneElementsMap,
182
- appState: AppState,
183
- snapshot: Readonly<Snapshot>,
184
- ): [SceneElementsMap, AppState, boolean] {
185
- const [nextElements, elementsContainVisibleChange] =
186
- this.elementsChange.applyTo(elements, snapshot.elements);
187
-
188
- const [nextAppState, appStateContainsVisibleChange] =
189
- this.appStateChange.applyTo(appState, nextElements);
190
-
191
- const appliedVisibleChanges =
192
- elementsContainVisibleChange || appStateContainsVisibleChange;
193
-
194
- return [nextElements, nextAppState, appliedVisibleChanges];
195
- }
196
-
197
- /**
198
- * Apply latest (remote) changes to the history entry, creates new instance of `HistoryEntry`.
199
- */
200
- public applyLatestChanges(elements: SceneElementsMap): HistoryEntry {
201
- const updatedElementsChange =
202
- this.elementsChange.applyLatestChanges(elements);
203
-
204
- return HistoryEntry.create(this.appStateChange, updatedElementsChange);
205
- }
206
-
207
- public isEmpty(): boolean {
208
- return this.appStateChange.isEmpty() && this.elementsChange.isEmpty();
245
+ private static push(stack: HistoryDelta[], entry: HistoryDelta) {
246
+ const inversedEntry = HistoryDelta.inverse(entry);
247
+ return stack.push(inversedEntry);
209
248
  }
210
249
  }
package/package.json CHANGED
@@ -1,11 +1,23 @@
1
1
  {
2
2
  "name": "@excalidraw/excalidraw",
3
- "version": "0.18.0-817d8c5",
3
+ "version": "0.18.0-8608d7b",
4
4
  "type": "module",
5
5
  "types": "./dist/types/excalidraw/index.d.ts",
6
6
  "main": "./dist/prod/index.js",
7
7
  "module": "./dist/prod/index.js",
8
8
  "exports": {
9
+ "./common/*": {
10
+ "types": "./dist/types/common/src/*.d.ts"
11
+ },
12
+ "./element/*": {
13
+ "types": "./dist/types/element/src/*.d.ts"
14
+ },
15
+ "./math/*": {
16
+ "types": "./dist/types/math/src/*.d.ts"
17
+ },
18
+ "./utils/*": {
19
+ "types": "./dist/types/utils/src/*.d.ts"
20
+ },
9
21
  "./*": {
10
22
  "types": "./dist/types/excalidraw/*.d.ts"
11
23
  },
@@ -54,17 +66,27 @@
54
66
  "last 1 safari version"
55
67
  ]
56
68
  },
69
+ "repository": "https://github.com/excalidraw/excalidraw",
70
+ "bugs": "https://github.com/excalidraw/excalidraw/issues",
71
+ "homepage": "https://github.com/excalidraw/excalidraw/tree/master/packages/excalidraw",
72
+ "scripts": {
73
+ "gen:types": "rimraf types && tsc",
74
+ "build:esm": "rimraf dist && node ../../scripts/buildPackage.js && yarn gen:types"
75
+ },
57
76
  "peerDependencies": {
58
77
  "react": "^17.0.2 || ^18.2.0 || ^19.0.0",
59
78
  "react-dom": "^17.0.2 || ^18.2.0 || ^19.0.0"
60
79
  },
61
80
  "dependencies": {
62
81
  "@braintree/sanitize-url": "6.0.2",
82
+ "@excalidraw/common": "0.18.0-8608d7b",
83
+ "@excalidraw/element": "0.18.0-8608d7b",
84
+ "@excalidraw/math": "0.18.0-8608d7b",
63
85
  "@excalidraw/laser-pointer": "1.3.1",
64
- "@excalidraw/mermaid-to-excalidraw": "1.1.2",
86
+ "@excalidraw/mermaid-to-excalidraw": "1.1.3",
65
87
  "@excalidraw/random-username": "1.1.0",
66
88
  "@radix-ui/react-popover": "1.1.6",
67
- "@radix-ui/react-tabs": "1.0.2",
89
+ "@radix-ui/react-tabs": "1.1.3",
68
90
  "browser-fs-access": "0.29.1",
69
91
  "canvas-roundrect-polyfill": "0.0.1",
70
92
  "clsx": "1.1.1",
@@ -112,12 +134,5 @@
112
134
  "harfbuzzjs": "0.3.6",
113
135
  "jest-diff": "29.7.0",
114
136
  "typescript": "4.9.4"
115
- },
116
- "repository": "https://github.com/excalidraw/excalidraw",
117
- "bugs": "https://github.com/excalidraw/excalidraw/issues",
118
- "homepage": "https://github.com/excalidraw/excalidraw/tree/master/packages/excalidraw",
119
- "scripts": {
120
- "gen:types": "rm -rf types && tsc",
121
- "build:esm": "rm -rf dist && node ../../scripts/buildPackage.js && yarn gen:types"
122
137
  }
123
- }
138
+ }