@excalidraw/math 0.18.0-91c7748 → 0.18.0-a52cd20

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 (360) hide show
  1. package/dist/dev/index.js +361 -173
  2. package/dist/dev/index.js.map +4 -4
  3. package/dist/prod/index.js +1 -1
  4. package/dist/types/common/debug.d.ts +21 -0
  5. package/dist/types/common/src/appEventBus.d.ts +27 -0
  6. package/dist/types/common/src/bounds.d.ts +10 -0
  7. package/dist/types/common/src/colors.d.ts +81 -39
  8. package/dist/types/common/src/constants.d.ts +89 -34
  9. package/dist/types/common/src/editorInterface.d.ts +34 -0
  10. package/dist/types/common/src/font-metadata.d.ts +1 -3
  11. package/dist/types/common/src/index.d.ts +5 -0
  12. package/dist/types/common/src/keys.d.ts +5 -1
  13. package/dist/types/common/src/points.d.ts +1 -1
  14. package/dist/types/common/src/random.d.ts +7 -0
  15. package/dist/types/common/src/utility-types.d.ts +0 -1
  16. package/dist/types/common/src/utils.d.ts +52 -78
  17. package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
  18. package/dist/types/element/src/Scene.d.ts +12 -8
  19. package/dist/types/element/src/align.d.ts +2 -2
  20. package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
  21. package/dist/types/element/src/arrowheads.d.ts +3 -0
  22. package/dist/types/element/src/arrows/focus.d.ts +30 -0
  23. package/dist/types/element/src/arrows/helpers.d.ts +5 -0
  24. package/dist/types/element/src/binding.d.ts +85 -51
  25. package/dist/types/element/src/bounds.d.ts +25 -18
  26. package/dist/types/element/src/bucketFill.d.ts +110 -0
  27. package/dist/types/element/src/collision.d.ts +11 -3
  28. package/dist/types/element/src/comparisons.d.ts +10 -7
  29. package/dist/types/element/src/convertToShape.d.ts +23 -0
  30. package/dist/types/element/src/delta.d.ts +23 -1
  31. package/dist/types/element/src/distribute.d.ts +3 -2
  32. package/dist/types/element/src/dragElements.d.ts +30 -3
  33. package/dist/types/element/src/duplicate.d.ts +67 -6
  34. package/dist/types/element/src/elbowArrow.d.ts +2 -0
  35. package/dist/types/element/src/embeddable.d.ts +2 -2
  36. package/dist/types/element/src/flowchart.d.ts +11 -7
  37. package/dist/types/element/src/fractionalIndex.d.ts +4 -4
  38. package/dist/types/element/src/frame.d.ts +16 -11
  39. package/dist/types/element/src/groups.d.ts +9 -9
  40. package/dist/types/element/src/heading.d.ts +2 -1
  41. package/dist/types/element/src/image.d.ts +1 -11
  42. package/dist/types/element/src/index.d.ts +9 -4
  43. package/dist/types/element/src/linearElementEditor.d.ts +48 -30
  44. package/dist/types/element/src/mutateElement.d.ts +6 -2
  45. package/dist/types/element/src/newElement.d.ts +59 -9
  46. package/dist/types/element/src/renderElement.d.ts +21 -13
  47. package/dist/types/element/src/resizeElements.d.ts +12 -12
  48. package/dist/types/element/src/resizeTest.d.ts +6 -5
  49. package/dist/types/element/src/selection.d.ts +14 -14
  50. package/dist/types/element/src/shape.d.ts +36 -9
  51. package/dist/types/element/src/sizeHelpers.d.ts +6 -0
  52. package/dist/types/element/src/sortElements.d.ts +10 -0
  53. package/dist/types/element/src/stickyNote.d.ts +183 -0
  54. package/dist/types/element/src/textElement.d.ts +21 -10
  55. package/dist/types/element/src/textMeasurements.d.ts +1 -3
  56. package/dist/types/element/src/textWrapping.d.ts +26 -0
  57. package/dist/types/{excalidraw/data → element/src}/transform.d.ts +27 -8
  58. package/dist/types/element/src/transformHandles.d.ts +8 -27
  59. package/dist/types/element/src/typeChecks.d.ts +30 -31
  60. package/dist/types/element/src/types.d.ts +55 -20
  61. package/dist/types/element/src/utils.d.ts +22 -6
  62. package/dist/types/element/src/zindex.d.ts +7 -1
  63. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +248 -222
  64. package/dist/types/excalidraw/actions/actionAlign.d.ts +12 -13
  65. package/dist/types/excalidraw/actions/actionBoundText.d.ts +150 -133
  66. package/dist/types/excalidraw/actions/actionCanvas.d.ts +543 -1576
  67. package/dist/types/excalidraw/actions/actionClipboard.d.ts +177 -905
  68. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +73 -65
  69. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +234 -211
  70. package/dist/types/excalidraw/actions/actionDeselect.d.ts +182 -0
  71. package/dist/types/excalidraw/actions/actionDistribute.d.ts +4 -6
  72. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +3 -4
  73. package/dist/types/excalidraw/actions/actionElementLink.d.ts +80 -78
  74. package/dist/types/excalidraw/actions/actionElementLock.d.ts +149 -132
  75. package/dist/types/excalidraw/actions/actionExport.d.ts +228 -1423
  76. package/dist/types/excalidraw/actions/actionFinalize.d.ts +11 -396
  77. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
  78. package/dist/types/excalidraw/actions/actionFrame.d.ts +359 -507
  79. package/dist/types/excalidraw/actions/actionGroup.d.ts +160 -151
  80. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +219 -197
  81. package/dist/types/excalidraw/actions/actionLink.d.ts +86 -78
  82. package/dist/types/excalidraw/actions/actionMenu.d.ts +75 -441
  83. package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -361
  84. package/dist/types/excalidraw/actions/actionProperties.d.ts +241 -2560
  85. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +80 -76
  86. package/dist/types/excalidraw/actions/actionStyles.d.ts +74 -65
  87. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +4 -4
  88. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +195 -0
  89. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +88 -81
  90. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +195 -0
  91. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +87 -79
  92. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +76 -75
  93. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +2 -2
  94. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +86 -78
  95. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +87 -79
  96. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +87 -79
  97. package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -9
  98. package/dist/types/excalidraw/actions/colorTargets.d.ts +39 -0
  99. package/dist/types/excalidraw/actions/index.d.ts +5 -3
  100. package/dist/types/excalidraw/actions/manager.d.ts +1 -0
  101. package/dist/types/excalidraw/actions/register.d.ts +2 -2
  102. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  103. package/dist/types/excalidraw/actions/types.d.ts +11 -7
  104. package/dist/types/excalidraw/{animated-trail.d.ts → animatedTrail.d.ts} +4 -3
  105. package/dist/types/excalidraw/appState.d.ts +57 -27
  106. package/dist/types/excalidraw/charts/charts.bar.d.ts +2 -0
  107. package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
  108. package/dist/types/excalidraw/charts/charts.helpers.d.ts +32 -0
  109. package/dist/types/excalidraw/charts/charts.line.d.ts +2 -0
  110. package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
  111. package/dist/types/excalidraw/charts/charts.radar.d.ts +2 -0
  112. package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
  113. package/dist/types/excalidraw/charts/index.d.ts +7 -0
  114. package/dist/types/excalidraw/clipboard.d.ts +13 -38
  115. package/dist/types/excalidraw/components/Actions.d.ts +26 -11
  116. package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +1 -1
  117. package/dist/types/excalidraw/components/App.arrowText.d.ts +70 -0
  118. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  119. package/dist/types/excalidraw/components/App.cursor.d.ts +38 -0
  120. package/dist/types/excalidraw/components/App.d.ts +646 -132
  121. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  122. package/dist/types/excalidraw/components/App.duplicate.d.ts +51 -0
  123. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  124. package/dist/types/excalidraw/components/App.pan.d.ts +62 -0
  125. package/dist/types/excalidraw/components/App.textTool.d.ts +140 -0
  126. package/dist/types/excalidraw/components/App.toolDrag.d.ts +63 -0
  127. package/dist/types/excalidraw/components/App.viewport.d.ts +113 -0
  128. package/dist/types/excalidraw/components/App.wheel.d.ts +26 -0
  129. package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
  130. package/dist/types/excalidraw/components/Card.d.ts +1 -3
  131. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
  132. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -5
  133. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  134. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +7 -1
  135. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +10 -2
  136. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +5 -2
  137. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  138. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +1 -2
  139. package/dist/types/excalidraw/components/ColorPicker/colorTopPicksDnD.d.ts +11 -0
  140. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
  141. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  142. package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -2
  143. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +2 -4
  144. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +4 -4
  145. package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
  146. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  147. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
  148. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
  149. package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
  150. package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
  151. package/dist/types/excalidraw/components/EyeDropper.d.ts +1 -2
  152. package/dist/types/excalidraw/components/FileDropOverlay.d.ts +2 -0
  153. package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
  154. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +4 -1
  155. package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +6 -1
  156. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +2 -1
  157. package/dist/types/excalidraw/components/FontPicker/fontTopPicksDnD.d.ts +12 -0
  158. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
  159. package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
  160. package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
  161. package/dist/types/excalidraw/components/IconButton.d.ts +48 -0
  162. package/dist/types/excalidraw/components/IconPicker.d.ts +14 -9
  163. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  164. package/dist/types/excalidraw/components/Island.d.ts +7 -0
  165. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  166. package/dist/types/excalidraw/components/LayerUI.d.ts +6 -2
  167. package/dist/types/excalidraw/components/LibraryMenu.d.ts +1 -1
  168. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  169. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
  170. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +7 -3
  171. package/dist/types/excalidraw/components/LibraryUnit.d.ts +9 -5
  172. package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
  173. package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
  174. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
  175. package/dist/types/excalidraw/components/MobileMenu.d.ts +5 -7
  176. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  177. package/dist/types/excalidraw/components/Modal.d.ts +0 -1
  178. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
  179. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
  180. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
  181. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  182. package/dist/types/excalidraw/components/Popover.d.ts +2 -3
  183. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -1
  184. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  185. package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
  186. package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
  187. package/dist/types/excalidraw/components/Range.d.ts +10 -4
  188. package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
  189. package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
  190. package/dist/types/excalidraw/components/SearchMenu.d.ts +1 -1
  191. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +16 -22
  192. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
  193. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
  194. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
  195. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
  196. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
  197. package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
  198. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  199. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
  200. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
  201. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  202. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -3
  203. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  204. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
  205. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  206. package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
  207. package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
  208. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  209. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
  210. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
  211. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
  212. package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
  213. package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
  214. package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
  215. package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
  216. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
  217. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
  218. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
  219. package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
  220. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +5 -2
  221. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
  222. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
  223. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
  224. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
  225. package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
  226. package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
  227. package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +9 -0
  228. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
  229. package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
  230. package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
  231. package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
  232. package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
  233. package/dist/types/excalidraw/components/TTDDialog/types.d.ts +95 -0
  234. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
  235. package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
  236. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
  237. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +10 -0
  238. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
  239. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  240. package/dist/types/excalidraw/components/Toast.d.ts +11 -7
  241. package/dist/types/excalidraw/components/ToolPopover.d.ts +22 -0
  242. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  243. package/dist/types/excalidraw/components/Tools.d.ts +151 -0
  244. package/dist/types/excalidraw/components/Tooltip.d.ts +15 -1
  245. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksContextMenu.d.ts +14 -0
  246. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksTip.d.ts +11 -0
  247. package/dist/types/excalidraw/components/TopPicksDnD/topPicksDnD.d.ts +58 -0
  248. package/dist/types/excalidraw/components/Trans.d.ts +2 -2
  249. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  250. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  251. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +10 -4
  252. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +3 -0
  253. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
  254. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +47 -35
  255. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -5
  256. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
  257. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
  258. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
  259. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
  260. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -2
  261. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
  262. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
  263. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
  264. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
  265. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
  266. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
  267. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
  268. package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
  269. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  270. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
  271. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +3 -3
  272. package/dist/types/excalidraw/components/icons.d.ts +51 -23
  273. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +26 -3
  274. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -35
  275. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  276. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  277. package/dist/types/excalidraw/data/blob.d.ts +373 -8
  278. package/dist/types/excalidraw/data/encode.d.ts +4 -4
  279. package/dist/types/excalidraw/data/encryption.d.ts +5 -5
  280. package/dist/types/excalidraw/data/filesystem.d.ts +5 -7
  281. package/dist/types/excalidraw/data/index.d.ts +8 -9
  282. package/dist/types/excalidraw/data/json.d.ts +192 -3
  283. package/dist/types/excalidraw/data/library.d.ts +25 -10
  284. package/dist/types/excalidraw/data/resave.d.ts +7 -2
  285. package/dist/types/excalidraw/data/restore.d.ts +25 -10
  286. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  287. package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
  288. package/dist/types/excalidraw/eraser/index.d.ts +2 -3
  289. package/dist/types/excalidraw/errors.d.ts +14 -0
  290. package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -2
  291. package/dist/types/excalidraw/hooks/useAppStateValue.d.ts +29 -0
  292. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +2 -2
  293. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
  294. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
  295. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +5 -5
  296. package/dist/types/excalidraw/i18n.d.ts +2 -2
  297. package/dist/types/excalidraw/{laser-trails.d.ts → laserTrails.d.ts} +5 -7
  298. package/dist/types/excalidraw/lasso/index.d.ts +2 -3
  299. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  300. package/dist/types/excalidraw/renderOverrides.d.ts +9 -0
  301. package/dist/types/excalidraw/renderer/animation.d.ts +16 -0
  302. package/dist/types/excalidraw/renderer/helpers.d.ts +31 -8
  303. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +7 -15
  304. package/dist/types/excalidraw/scene/Renderer.d.ts +491 -19
  305. package/dist/types/excalidraw/scene/export.d.ts +4 -4
  306. package/dist/types/excalidraw/scene/index.d.ts +2 -2
  307. package/dist/types/excalidraw/scene/types.d.ts +28 -8
  308. package/dist/types/excalidraw/shortcut.d.ts +1 -0
  309. package/dist/types/excalidraw/snapping.d.ts +12 -12
  310. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
  311. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
  312. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
  313. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
  314. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
  315. package/dist/types/excalidraw/textAutoResizeHandle.d.ts +15 -0
  316. package/dist/types/excalidraw/types.d.ts +644 -60
  317. package/dist/types/excalidraw/viewport.d.ts +302 -0
  318. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +14 -5
  319. package/dist/types/fractional-indexing/src/index.d.ts +29 -0
  320. package/dist/types/laser-pointer/src/index.d.ts +2 -0
  321. package/dist/types/laser-pointer/src/math.d.ts +16 -0
  322. package/dist/types/laser-pointer/src/simplify.d.ts +2 -0
  323. package/dist/types/laser-pointer/src/state.d.ts +36 -0
  324. package/dist/types/math/src/constants.d.ts +0 -1
  325. package/dist/types/math/src/curve.d.ts +23 -13
  326. package/dist/types/math/src/index.d.ts +1 -0
  327. package/dist/types/math/src/pca.d.ts +79 -0
  328. package/dist/types/math/src/point.d.ts +8 -2
  329. package/dist/types/math/src/polygon.d.ts +26 -2
  330. package/dist/types/math/src/range.d.ts +1 -3
  331. package/dist/types/math/src/segment.d.ts +9 -3
  332. package/dist/types/math/src/types.d.ts +25 -1
  333. package/dist/types/utils/src/export.d.ts +9 -8
  334. package/dist/types/utils/src/index.d.ts +1 -2
  335. package/dist/types/utils/src/shape.d.ts +8 -8
  336. package/package.json +2 -2
  337. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +0 -186
  338. package/dist/types/excalidraw/animation-frame-handler.d.ts +0 -16
  339. package/dist/types/excalidraw/charts.d.ts +0 -27
  340. package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
  341. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -16
  342. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  343. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  344. package/dist/types/excalidraw/components/InitializeApp.d.ts +0 -10
  345. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +0 -9
  346. package/dist/types/excalidraw/components/ToolButton.d.ts +0 -49
  347. package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +0 -8
  348. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -10
  349. package/dist/types/excalidraw/components/shapes.d.ts +0 -190
  350. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -58
  351. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +0 -19
  352. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +0 -85
  353. package/dist/types/excalidraw/cursor.d.ts +0 -5
  354. package/dist/types/excalidraw/data/reconcile.d.ts +0 -7
  355. package/dist/types/excalidraw/index.d.ts +0 -47
  356. package/dist/types/excalidraw/polyfill.d.ts +0 -2
  357. package/dist/types/excalidraw/scene/scroll.d.ts +0 -23
  358. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
  359. package/dist/types/utils/src/bbox.d.ts +0 -9
  360. package/dist/types/utils/src/withinBounds.d.ts +0 -19
package/dist/dev/index.js CHANGED
@@ -101,8 +101,8 @@ var vectorNormalize = (v) => {
101
101
  var vectorNormal = (v) => vector(v[1], -v[0]);
102
102
 
103
103
  // src/point.ts
104
- function pointFrom(x, y) {
105
- return [x, y];
104
+ function pointFrom(xOrCoords, y) {
105
+ return typeof xOrCoords === "object" ? [xOrCoords.x, xOrCoords.y] : [xOrCoords, y];
106
106
  }
107
107
  function pointFromArray(numberArray) {
108
108
  return numberArray.length === 2 ? pointFrom(numberArray[0], numberArray[1]) : void 0;
@@ -120,7 +120,12 @@ function pointsEqual(a, b, tolerance = PRECISION) {
120
120
  const abs = Math.abs;
121
121
  return abs(a[0] - b[0]) < tolerance && abs(a[1] - b[1]) < tolerance;
122
122
  }
123
- function pointRotateRads([x, y], [cx, cy], angle) {
123
+ function pointRotateRads(point, center, angle) {
124
+ if (!angle) {
125
+ return point;
126
+ }
127
+ const [x, y] = point;
128
+ const [cx, cy] = center;
124
129
  return pointFrom(
125
130
  (x - cx) * Math.cos(angle) - (y - cy) * Math.sin(angle) + cx,
126
131
  (x - cx) * Math.sin(angle) + (y - cy) * Math.cos(angle) + cy
@@ -147,6 +152,9 @@ var pointScaleFromOrigin = (p, mid, multiplier) => pointTranslate(mid, vectorSca
147
152
  var isPointWithinBounds = (p, q, r) => {
148
153
  return q[0] <= Math.max(p[0], r[0]) && q[0] >= Math.min(p[0], r[0]) && q[1] <= Math.max(p[1], r[1]) && q[1] >= Math.min(p[1], r[1]);
149
154
  };
155
+ var isValidPoint = (point) => {
156
+ return Array.isArray(point) && point.length === 2 && isFiniteNumber(point[0]) && isFiniteNumber(point[1]);
157
+ };
150
158
 
151
159
  // src/constants.ts
152
160
  var LegendreGaussN24TValues = [
@@ -206,41 +214,41 @@ var LegendreGaussN24CValues = [
206
214
  function curve(a, b, c, d) {
207
215
  return [a, b, c, d];
208
216
  }
209
- function gradient(f, t0, s0, delta = 1e-6) {
210
- return [
211
- (f(t0 + delta, s0) - f(t0 - delta, s0)) / (2 * delta),
212
- (f(t0, s0 + delta) - f(t0, s0 - delta)) / (2 * delta)
213
- ];
214
- }
215
- function solve(f, t0, s0, tolerance = 1e-3, iterLimit = 10) {
217
+ function solveWithAnalyticalJacobian(curve2, lineSegment2, t0, s0, tolerance = 1e-3, iterLimit = 10) {
216
218
  let error = Infinity;
217
219
  let iter = 0;
218
220
  while (error >= tolerance) {
219
221
  if (iter >= iterLimit) {
220
222
  return null;
221
223
  }
222
- const y0 = f(t0, s0);
223
- const jacobian = [
224
- gradient((t, s) => f(t, s)[0], t0, s0),
225
- gradient((t, s) => f(t, s)[1], t0, s0)
226
- ];
227
- const b = [[-y0[0]], [-y0[1]]];
228
- const det = jacobian[0][0] * jacobian[1][1] - jacobian[0][1] * jacobian[1][0];
229
- if (det === 0) {
224
+ const bt = 1 - t0;
225
+ const bt2 = bt * bt;
226
+ const bt3 = bt2 * bt;
227
+ const t0_2 = t0 * t0;
228
+ const t0_3 = t0_2 * t0;
229
+ const bezierX = bt3 * curve2[0][0] + 3 * bt2 * t0 * curve2[1][0] + 3 * bt * t0_2 * curve2[2][0] + t0_3 * curve2[3][0];
230
+ const bezierY = bt3 * curve2[0][1] + 3 * bt2 * t0 * curve2[1][1] + 3 * bt * t0_2 * curve2[2][1] + t0_3 * curve2[3][1];
231
+ const lineX = lineSegment2[0][0] + s0 * (lineSegment2[1][0] - lineSegment2[0][0]);
232
+ const lineY = lineSegment2[0][1] + s0 * (lineSegment2[1][1] - lineSegment2[0][1]);
233
+ const fx = bezierX - lineX;
234
+ const fy = bezierY - lineY;
235
+ error = Math.abs(fx) + Math.abs(fy);
236
+ if (error < tolerance) {
237
+ break;
238
+ }
239
+ const dfx_dt = -3 * bt2 * curve2[0][0] + 3 * bt2 * curve2[1][0] - 6 * bt * t0 * curve2[1][0] - 3 * t0_2 * curve2[2][0] + 6 * bt * t0 * curve2[2][0] + 3 * t0_2 * curve2[3][0];
240
+ const dfy_dt = -3 * bt2 * curve2[0][1] + 3 * bt2 * curve2[1][1] - 6 * bt * t0 * curve2[1][1] - 3 * t0_2 * curve2[2][1] + 6 * bt * t0 * curve2[2][1] + 3 * t0_2 * curve2[3][1];
241
+ const dfx_ds = -(lineSegment2[1][0] - lineSegment2[0][0]);
242
+ const dfy_ds = -(lineSegment2[1][1] - lineSegment2[0][1]);
243
+ const det = dfx_dt * dfy_ds - dfx_ds * dfy_dt;
244
+ if (Math.abs(det) < 1e-12) {
230
245
  return null;
231
246
  }
232
- const iJ = [
233
- [jacobian[1][1] / det, -jacobian[0][1] / det],
234
- [-jacobian[1][0] / det, jacobian[0][0] / det]
235
- ];
236
- const h = [
237
- [iJ[0][0] * b[0][0] + iJ[0][1] * b[1][0]],
238
- [iJ[1][0] * b[0][0] + iJ[1][1] * b[1][0]]
239
- ];
240
- t0 = t0 + h[0][0];
241
- s0 = s0 + h[1][0];
242
- const [tErr, sErr] = f(t0, s0);
243
- error = Math.max(Math.abs(tErr), Math.abs(sErr));
247
+ const invDet = 1 / det;
248
+ const dt = invDet * (dfy_ds * -fx - dfx_ds * -fy);
249
+ const ds = invDet * (-dfy_dt * -fx + dfx_dt * -fy);
250
+ t0 += dt;
251
+ s0 += ds;
244
252
  iter += 1;
245
253
  }
246
254
  return [t0, s0];
@@ -249,53 +257,63 @@ var bezierEquation = (c, t) => pointFrom(
249
257
  (1 - t) ** 3 * c[0][0] + 3 * (1 - t) ** 2 * t * c[1][0] + 3 * (1 - t) * t ** 2 * c[2][0] + t ** 3 * c[3][0],
250
258
  (1 - t) ** 3 * c[0][1] + 3 * (1 - t) ** 2 * t * c[1][1] + 3 * (1 - t) * t ** 2 * c[2][1] + t ** 3 * c[3][1]
251
259
  );
252
- function curveIntersectLineSegment(c, l) {
253
- const line2 = (s) => pointFrom(
254
- l[0][0] + s * (l[1][0] - l[0][0]),
255
- l[0][1] + s * (l[1][1] - l[0][1])
260
+ var initial_guesses = [
261
+ [0.5, 0],
262
+ [0.2, 0],
263
+ [0.8, 0]
264
+ ];
265
+ var calculate = ([t0, s0], l, c, tolerance = 0.01, iterLimit = 4) => {
266
+ const solution = solveWithAnalyticalJacobian(
267
+ c,
268
+ l,
269
+ t0,
270
+ s0,
271
+ tolerance,
272
+ iterLimit
273
+ );
274
+ if (!solution) {
275
+ return null;
276
+ }
277
+ const [t, s] = solution;
278
+ if (t < 0 || t > 1 || s < 0 || s > 1) {
279
+ return null;
280
+ }
281
+ return bezierEquation(c, t);
282
+ };
283
+ function curveIntersectLineSegment(c, l, opts) {
284
+ let solution = calculate(
285
+ initial_guesses[0],
286
+ l,
287
+ c,
288
+ opts?.tolerance,
289
+ opts?.iterLimit
256
290
  );
257
- const initial_guesses = [
258
- [0.5, 0],
259
- [0.2, 0],
260
- [0.8, 0]
261
- ];
262
- const calculate = ([t0, s0]) => {
263
- const solution2 = solve(
264
- (t2, s2) => {
265
- const bezier_point = bezierEquation(c, t2);
266
- const line_point = line2(s2);
267
- return [
268
- bezier_point[0] - line_point[0],
269
- bezier_point[1] - line_point[1]
270
- ];
271
- },
272
- t0,
273
- s0
274
- );
275
- if (!solution2) {
276
- return null;
277
- }
278
- const [t, s] = solution2;
279
- if (t < 0 || t > 1 || s < 0 || s > 1) {
280
- return null;
281
- }
282
- return bezierEquation(c, t);
283
- };
284
- let solution = calculate(initial_guesses[0]);
285
291
  if (solution) {
286
292
  return [solution];
287
293
  }
288
- solution = calculate(initial_guesses[1]);
294
+ solution = calculate(
295
+ initial_guesses[1],
296
+ l,
297
+ c,
298
+ opts?.tolerance,
299
+ opts?.iterLimit
300
+ );
289
301
  if (solution) {
290
302
  return [solution];
291
303
  }
292
- solution = calculate(initial_guesses[2]);
304
+ solution = calculate(
305
+ initial_guesses[2],
306
+ l,
307
+ c,
308
+ opts?.tolerance,
309
+ opts?.iterLimit
310
+ );
293
311
  if (solution) {
294
312
  return [solution];
295
313
  }
296
314
  return [];
297
315
  }
298
- function curveClosestPoint(c, p, tolerance = 1e-3) {
316
+ function curveClosestParameter(c, p, tolerance = 1e-3) {
299
317
  const localMinimum = (min, max, f, e = tolerance) => {
300
318
  let m = min;
301
319
  let n = max;
@@ -312,7 +330,7 @@ function curveClosestPoint(c, p, tolerance = 1e-3) {
312
330
  };
313
331
  const maxSteps = 30;
314
332
  let closestStep = 0;
315
- for (let min = Infinity, step = 0; step < maxSteps; step++) {
333
+ for (let min = Infinity, step = 0; step <= maxSteps; step++) {
316
334
  const d = pointDistance(p, bezierEquation(c, step / maxSteps));
317
335
  if (d < min) {
318
336
  min = d;
@@ -321,22 +339,18 @@ function curveClosestPoint(c, p, tolerance = 1e-3) {
321
339
  }
322
340
  const t0 = Math.max((closestStep - 1) / maxSteps, 0);
323
341
  const t1 = Math.min((closestStep + 1) / maxSteps, 1);
324
- const solution = localMinimum(
342
+ const param = localMinimum(
325
343
  t0,
326
344
  t1,
327
345
  (t) => pointDistance(p, bezierEquation(c, t))
328
346
  );
329
- if (!solution) {
330
- return null;
331
- }
332
- return bezierEquation(c, solution);
347
+ return param ?? closestStep / maxSteps;
333
348
  }
334
- function curvePointDistance(c, p) {
335
- const closest = curveClosestPoint(c, p);
336
- if (!closest) {
337
- return 0;
338
- }
339
- return pointDistance(p, closest);
349
+ function curveClosestPoint(c, p, tolerance = 1e-3) {
350
+ return bezierEquation(c, curveClosestParameter(c, p, tolerance));
351
+ }
352
+ function curvePointDistance(c, p, tolerance = 1e-3) {
353
+ return pointDistance(p, curveClosestPoint(c, p, tolerance));
340
354
  }
341
355
  function isCurve(v) {
342
356
  return Array.isArray(v) && v.length === 4 && isPoint(v[0]) && isPoint(v[1]) && isPoint(v[2]) && isPoint(v[3]);
@@ -454,14 +468,13 @@ function curveLengthAtParameter(c, t) {
454
468
  }
455
469
  return z1 * sum;
456
470
  }
457
- function curvePointAtLength(c, percent) {
471
+ function curvePointAtLength(c, percent, totalLength = curveLength(c)) {
458
472
  if (percent <= 0) {
459
473
  return bezierEquation(c, 0);
460
474
  }
461
475
  if (percent >= 1) {
462
476
  return bezierEquation(c, 1);
463
477
  }
464
- const totalLength = curveLength(c);
465
478
  const targetLength = totalLength * percent;
466
479
  let tMin = 0;
467
480
  let tMax = 1;
@@ -510,6 +523,9 @@ var ellipseDistanceFromPoint = (p, ellipse2) => {
510
523
  vectorFromPoint(p),
511
524
  vectorScale(vectorFromPoint(center), -1)
512
525
  );
526
+ if (a === b) {
527
+ return Math.abs(Math.hypot(translatedPoint[0], translatedPoint[1]) - a);
528
+ }
513
529
  const px = Math.abs(translatedPoint[0]);
514
530
  const py = Math.abs(translatedPoint[1]);
515
531
  let tx = 0.707;
@@ -525,6 +541,9 @@ var ellipseDistanceFromPoint = (p, ellipse2) => {
525
541
  const qy = py - ey;
526
542
  const r = Math.hypot(ry, rx);
527
543
  const q = Math.hypot(qy, qx);
544
+ if (q === 0) {
545
+ break;
546
+ }
528
547
  tx = Math.min(1, Math.max(0, (qx * r / q + ex) / a));
529
548
  ty = Math.min(1, Math.max(0, (qy * r / q + ey) / b));
530
549
  const t = Math.hypot(ty, tx);
@@ -532,8 +551,8 @@ var ellipseDistanceFromPoint = (p, ellipse2) => {
532
551
  ty /= t;
533
552
  }
534
553
  const [minX, minY] = [
535
- a * tx * Math.sign(translatedPoint[0]),
536
- b * ty * Math.sign(translatedPoint[1])
554
+ a * tx * (translatedPoint[0] < 0 ? -1 : 1),
555
+ b * ty * (translatedPoint[1] < 0 ? -1 : 1)
537
556
  ];
538
557
  return pointDistance(pointFromVector(translatedPoint), pointFrom(minX, minY));
539
558
  };
@@ -620,93 +639,98 @@ function linesIntersectAt(a, b) {
620
639
  return null;
621
640
  }
622
641
 
623
- // src/segment.ts
624
- function lineSegment(a, b) {
625
- return [a, b];
626
- }
627
- var isLineSegment = (segment) => Array.isArray(segment) && segment.length === 2 && isPoint(segment[0]) && isPoint(segment[0]);
628
- var lineSegmentRotate = (l, angle, origin) => {
629
- return lineSegment(
630
- pointRotateRads(l[0], origin || pointCenter(l[0], l[1]), angle),
631
- pointRotateRads(l[1], origin || pointCenter(l[0], l[1]), angle)
632
- );
633
- };
634
- var segmentsIntersectAt = (a, b) => {
635
- const a0 = vectorFromPoint(a[0]);
636
- const a1 = vectorFromPoint(a[1]);
637
- const b0 = vectorFromPoint(b[0]);
638
- const b1 = vectorFromPoint(b[1]);
639
- const r = vectorSubtract(a1, a0);
640
- const s = vectorSubtract(b1, b0);
641
- const denominator = vectorCross(r, s);
642
- if (denominator === 0) {
643
- return null;
644
- }
645
- const i = vectorSubtract(vectorFromPoint(b[0]), vectorFromPoint(a[0]));
646
- const u = vectorCross(i, r) / denominator;
647
- const t = vectorCross(i, s) / denominator;
648
- if (u === 0) {
649
- return null;
642
+ // src/pca.ts
643
+ function centroid(points) {
644
+ let cx = 0;
645
+ let cy = 0;
646
+ for (const [x, y] of points) {
647
+ cx += x;
648
+ cy += y;
650
649
  }
651
- const p = vectorAdd(a0, vectorScale(r, t));
652
- if (t >= 0 && t < 1 && u >= 0 && u < 1) {
653
- return pointFromVector(p);
654
- }
655
- return null;
656
- };
657
- var pointOnLineSegment = (point, line2, threshold = PRECISION) => {
658
- const distance = distanceToLineSegment(point, line2);
659
- if (distance === 0) {
660
- return true;
650
+ return pointFrom(cx / points.length, cy / points.length);
651
+ }
652
+ function principalAxes(points) {
653
+ if (points.length < 2) {
654
+ console.error("Degenerate point set: at least two points are required");
661
655
  }
662
- return distance < threshold;
663
- };
664
- var distanceToLineSegment = (point, line2) => {
665
- const [x, y] = point;
666
- const [[x1, y1], [x2, y2]] = line2;
667
- const A = x - x1;
668
- const B = y - y1;
669
- const C = x2 - x1;
670
- const D = y2 - y1;
671
- const dot = A * C + B * D;
672
- const len_sq = C * C + D * D;
673
- let param = -1;
674
- if (len_sq !== 0) {
675
- param = dot / len_sq;
656
+ const c = centroid(points);
657
+ let m20 = 0;
658
+ let m02 = 0;
659
+ let m11 = 0;
660
+ for (const [x, y] of points) {
661
+ const dx = x - c[0];
662
+ const dy = y - c[1];
663
+ m20 += dx * dx;
664
+ m02 += dy * dy;
665
+ m11 += dx * dy;
676
666
  }
677
- let xx;
678
- let yy;
679
- if (param < 0) {
680
- xx = x1;
681
- yy = y1;
682
- } else if (param > 1) {
683
- xx = x2;
684
- yy = y2;
667
+ m20 /= points.length;
668
+ m02 /= points.length;
669
+ m11 /= points.length;
670
+ const trace = m20 + m02;
671
+ const diff = Math.hypot(m20 - m02, 2 * m11);
672
+ const majorVariance = (trace + diff) / 2;
673
+ const minorVariance = (trace - diff) / 2;
674
+ let major;
675
+ if (Math.abs(m11) > Number.EPSILON) {
676
+ major = vectorNormalize(vector(majorVariance - m02, m11));
685
677
  } else {
686
- xx = x1 + param * C;
687
- yy = y1 + param * D;
678
+ major = m20 >= m02 ? vector(1, 0) : vector(0, 1);
688
679
  }
689
- const dx = x - xx;
690
- const dy = y - yy;
691
- return Math.sqrt(dx * dx + dy * dy);
692
- };
693
- function lineSegmentIntersectionPoints(l, s, threshold) {
694
- const candidate = linesIntersectAt(line(l[0], l[1]), line(s[0], s[1]));
695
- if (!candidate || !pointOnLineSegment(candidate, s, threshold) || !pointOnLineSegment(candidate, l, threshold)) {
696
- return null;
680
+ return {
681
+ centroid: c,
682
+ major,
683
+ minor: vectorNormal(major),
684
+ majorVariance,
685
+ minorVariance
686
+ };
687
+ }
688
+ function principalCoords(points, axes, scale = 1) {
689
+ const { centroid: c, major, minor } = axes;
690
+ return points.map(([x, y]) => {
691
+ const dx = x - c[0];
692
+ const dy = y - c[1];
693
+ return [
694
+ (dx * major[0] + dy * major[1]) * scale,
695
+ (dx * minor[0] + dy * minor[1]) * scale
696
+ ];
697
+ });
698
+ }
699
+ function orientPrincipalAxes(points, axes) {
700
+ const u = principalCoords(points, axes).map(([uu]) => uu);
701
+ if (skewness(u) <= 0) {
702
+ return axes;
697
703
  }
698
- return candidate;
704
+ const major = vectorScale(axes.major, -1);
705
+ return { ...axes, major, minor: vectorNormal(major) };
699
706
  }
700
- function lineSegmentsDistance(s1, s2) {
701
- if (lineSegmentIntersectionPoints(s1, s2)) {
702
- return 0;
707
+ function elongation(axes) {
708
+ return axes.majorVariance > 0 ? axes.minorVariance / axes.majorVariance : 1;
709
+ }
710
+ function standardizedMoment(values, order) {
711
+ const n = values.length;
712
+ let mean = 0;
713
+ for (const v of values) {
714
+ mean += v;
703
715
  }
704
- return Math.min(
705
- distanceToLineSegment(s1[0], s2),
706
- distanceToLineSegment(s1[1], s2),
707
- distanceToLineSegment(s2[0], s1),
708
- distanceToLineSegment(s2[1], s1)
709
- );
716
+ mean /= n;
717
+ let variance = 0;
718
+ let moment = 0;
719
+ for (const v of values) {
720
+ const d = v - mean;
721
+ variance += d * d;
722
+ moment += d ** order;
723
+ }
724
+ variance /= n;
725
+ moment /= n;
726
+ const sigma = Math.sqrt(variance);
727
+ return sigma > Number.EPSILON ? moment / sigma ** order : 0;
728
+ }
729
+ function skewness(values) {
730
+ return standardizedMoment(values, 3);
731
+ }
732
+ function kurtosis(values) {
733
+ return standardizedMoment(values, 4);
710
734
  }
711
735
 
712
736
  // src/polygon.ts
@@ -752,21 +776,84 @@ var polygonIncludesPointNonZero = (point, polygon2) => {
752
776
  }
753
777
  return windingNumber !== 0;
754
778
  };
755
- var pointOnPolygon = (p, poly, threshold = PRECISION) => {
756
- let on = false;
757
- for (let i = 0, l = poly.length - 1; i < l; i++) {
758
- if (pointOnLineSegment(p, lineSegment(poly[i], poly[i + 1]), threshold)) {
759
- on = true;
760
- break;
761
- }
762
- }
763
- return on;
764
- };
765
779
  function polygonClose(polygon2) {
766
780
  return polygonIsClosed(polygon2) ? polygon2 : [...polygon2, polygon2[0]];
767
781
  }
768
- function polygonIsClosed(polygon2) {
769
- return pointsEqual(polygon2[0], polygon2[polygon2.length - 1]);
782
+ function polygonIsClosed(polygon2, tolerance = PRECISION) {
783
+ return pointsEqual(polygon2[0], polygon2[polygon2.length - 1], tolerance);
784
+ }
785
+ function polygonSignedArea(polygon2, tolerance = PRECISION) {
786
+ const pts = polygonIsClosed(polygon2, tolerance) ? polygon2.slice(0, -1) : polygon2;
787
+ let sum = 0;
788
+ for (let i = 0, j = pts.length - 1; i < pts.length; j = i++) {
789
+ sum += pts[j][0] * pts[i][1] - pts[i][0] * pts[j][1];
790
+ }
791
+ return sum / 2;
792
+ }
793
+ function polygonArea(polygon2, tolerance = PRECISION) {
794
+ return Math.abs(polygonSignedArea(polygon2, tolerance));
795
+ }
796
+ function convexHull(points) {
797
+ if (points.length < 3) {
798
+ return [...points];
799
+ }
800
+ const sorted = [...points].sort(
801
+ (a, b) => a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]
802
+ );
803
+ const cross = (o, a, b) => (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
804
+ const half = (pts) => {
805
+ const chain = [];
806
+ for (const p of pts) {
807
+ while (chain.length >= 2 && cross(chain[chain.length - 2], chain[chain.length - 1], p) <= 0) {
808
+ chain.pop();
809
+ }
810
+ chain.push(p);
811
+ }
812
+ chain.pop();
813
+ return chain;
814
+ };
815
+ const hull = [...half(sorted), ...half([...sorted].reverse())];
816
+ return hull.length >= 3 ? hull : [...points];
817
+ }
818
+ function simplifyConvexPolygon(polygon2, angleThreshold) {
819
+ if (polygon2.length < 3) {
820
+ return [...polygon2];
821
+ }
822
+ const turnAt = (i) => {
823
+ const prev = polygon2[(i - 1 + polygon2.length) % polygon2.length];
824
+ const curr = polygon2[i];
825
+ const next = polygon2[(i + 1) % polygon2.length];
826
+ const inAngle = Math.atan2(curr[1] - prev[1], curr[0] - prev[0]);
827
+ const outAngle = Math.atan2(next[1] - curr[1], next[0] - curr[0]);
828
+ return Math.abs(normalizeTurn(outAngle - inAngle));
829
+ };
830
+ let start = 0;
831
+ for (let i = 1; i < polygon2.length; i++) {
832
+ if (turnAt(i) > turnAt(start)) {
833
+ start = i;
834
+ }
835
+ }
836
+ const simplified = [];
837
+ let accumulated = 0;
838
+ for (let k = 0; k < polygon2.length; k++) {
839
+ const i = (start + k) % polygon2.length;
840
+ accumulated += turnAt(i);
841
+ if (accumulated >= angleThreshold) {
842
+ simplified.push(polygon2[i]);
843
+ accumulated = 0;
844
+ }
845
+ }
846
+ return simplified.length >= 3 ? simplified : [...polygon2];
847
+ }
848
+ function normalizeTurn(angle) {
849
+ let a = angle;
850
+ while (a > Math.PI) {
851
+ a -= 2 * Math.PI;
852
+ }
853
+ while (a < -Math.PI) {
854
+ a += 2 * Math.PI;
855
+ }
856
+ return a;
770
857
  }
771
858
 
772
859
  // src/range.ts
@@ -798,6 +885,91 @@ var rangeIncludesValue = (value, [min, max]) => {
798
885
  return value >= min && value <= max;
799
886
  };
800
887
 
888
+ // src/segment.ts
889
+ function lineSegment(a, b) {
890
+ return [a, b];
891
+ }
892
+ var isLineSegment = (segment) => Array.isArray(segment) && segment.length === 2 && isPoint(segment[0]) && isPoint(segment[1]);
893
+ var lineSegmentRotate = (l, angle, origin) => {
894
+ return lineSegment(
895
+ pointRotateRads(l[0], origin || pointCenter(l[0], l[1]), angle),
896
+ pointRotateRads(l[1], origin || pointCenter(l[0], l[1]), angle)
897
+ );
898
+ };
899
+ var segmentsIntersectAt = (a, b) => {
900
+ const a0 = vectorFromPoint(a[0]);
901
+ const a1 = vectorFromPoint(a[1]);
902
+ const b0 = vectorFromPoint(b[0]);
903
+ const b1 = vectorFromPoint(b[1]);
904
+ const r = vectorSubtract(a1, a0);
905
+ const s = vectorSubtract(b1, b0);
906
+ const denominator = vectorCross(r, s);
907
+ if (denominator === 0) {
908
+ return null;
909
+ }
910
+ const i = vectorSubtract(vectorFromPoint(b[0]), vectorFromPoint(a[0]));
911
+ const u = vectorCross(i, r) / denominator;
912
+ const t = vectorCross(i, s) / denominator;
913
+ if (u === 0) {
914
+ return null;
915
+ }
916
+ const p = vectorAdd(a0, vectorScale(r, t));
917
+ if (t >= 0 && t < 1 && u >= 0 && u < 1) {
918
+ return pointFromVector(p);
919
+ }
920
+ return null;
921
+ };
922
+ var pointOnLineSegment = (point, line2, threshold = PRECISION) => {
923
+ const distance = distanceToLineSegment(point, line2);
924
+ if (distance === 0) {
925
+ return true;
926
+ }
927
+ return distance < threshold;
928
+ };
929
+ var distanceToLineSegment = (point, line2) => {
930
+ return pointDistance(
931
+ point,
932
+ lineSegmentPointAt(line2, lineSegmentClosestParameter(point, line2))
933
+ );
934
+ };
935
+ function lineSegmentPointAt(line2, t) {
936
+ const [[x1, y1], [x2, y2]] = line2;
937
+ return pointFrom(x1 + t * (x2 - x1), y1 + t * (y2 - y1));
938
+ }
939
+ function lineSegmentIntersectionPoints(l, s, threshold) {
940
+ const candidate = linesIntersectAt(line(l[0], l[1]), line(s[0], s[1]));
941
+ if (!candidate || !pointOnLineSegment(candidate, s, threshold) || !pointOnLineSegment(candidate, l, threshold)) {
942
+ return null;
943
+ }
944
+ return candidate;
945
+ }
946
+ function lineSegmentsDistance(s1, s2) {
947
+ if (lineSegmentIntersectionPoints(s1, s2)) {
948
+ return 0;
949
+ }
950
+ return Math.min(
951
+ distanceToLineSegment(s1[0], s2),
952
+ distanceToLineSegment(s1[1], s2),
953
+ distanceToLineSegment(s2[0], s1),
954
+ distanceToLineSegment(s2[1], s1)
955
+ );
956
+ }
957
+ function lineSegmentClosestParameter(point, line2) {
958
+ const [x, y] = point;
959
+ const [[x1, y1], [x2, y2]] = line2;
960
+ const A = x - x1;
961
+ const B = y - y1;
962
+ const C = x2 - x1;
963
+ const D = y2 - y1;
964
+ const dot = A * C + B * D;
965
+ const len_sq = C * C + D * D;
966
+ let param = 0;
967
+ if (len_sq !== 0) {
968
+ param = dot / len_sq;
969
+ }
970
+ return Math.max(0, Math.min(1, param));
971
+ }
972
+
801
973
  // src/rectangle.ts
802
974
  function rectangle(topLeft, bottomRight) {
803
975
  return [topLeft, bottomRight];
@@ -834,10 +1006,13 @@ export {
834
1006
  average,
835
1007
  bezierEquation,
836
1008
  cartesian2Polar,
1009
+ centroid,
837
1010
  clamp,
1011
+ convexHull,
838
1012
  curve,
839
1013
  curveCatmullRomCubicApproxPoints,
840
1014
  curveCatmullRomQuadraticApproxPoints,
1015
+ curveClosestParameter,
841
1016
  curveClosestPoint,
842
1017
  curveIntersectLineSegment,
843
1018
  curveLength,
@@ -854,6 +1029,7 @@ export {
854
1029
  ellipseLineIntersectionPoints,
855
1030
  ellipseSegmentInterceptPoints,
856
1031
  ellipseTouchesPoint,
1032
+ elongation,
857
1033
  isCloseTo,
858
1034
  isCurve,
859
1035
  isFiniteNumber,
@@ -861,15 +1037,20 @@ export {
861
1037
  isPoint,
862
1038
  isPointWithinBounds,
863
1039
  isRightAngleRads,
1040
+ isValidPoint,
864
1041
  isVector,
1042
+ kurtosis,
865
1043
  line,
866
1044
  lineSegment,
1045
+ lineSegmentClosestParameter,
867
1046
  lineSegmentIntersectionPoints,
1047
+ lineSegmentPointAt,
868
1048
  lineSegmentRotate,
869
1049
  lineSegmentsDistance,
870
1050
  linesIntersectAt,
871
1051
  normalizeRadians,
872
1052
  offsetPointsForQuadraticBezier,
1053
+ orientPrincipalAxes,
873
1054
  pointCenter,
874
1055
  pointDistance,
875
1056
  pointDistanceSq,
@@ -878,16 +1059,20 @@ export {
878
1059
  pointFromPair,
879
1060
  pointFromVector,
880
1061
  pointOnLineSegment,
881
- pointOnPolygon,
882
1062
  pointRotateDegs,
883
1063
  pointRotateRads,
884
1064
  pointScaleFromOrigin,
885
1065
  pointTranslate,
886
1066
  pointsEqual,
887
1067
  polygon,
1068
+ polygonArea,
888
1069
  polygonFromPoints,
889
1070
  polygonIncludesPoint,
890
1071
  polygonIncludesPointNonZero,
1072
+ polygonIsClosed,
1073
+ polygonSignedArea,
1074
+ principalAxes,
1075
+ principalCoords,
891
1076
  radiansBetweenAngles,
892
1077
  radiansDifference,
893
1078
  radiansToDegrees,
@@ -903,6 +1088,9 @@ export {
903
1088
  round,
904
1089
  roundToStep,
905
1090
  segmentsIntersectAt,
1091
+ simplifyConvexPolygon,
1092
+ skewness,
1093
+ standardizedMoment,
906
1094
  triangleIncludesPoint,
907
1095
  vector,
908
1096
  vectorAdd,