@react-md/core 1.0.0-next.15 → 1.0.0-next.17

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 (1344) hide show
  1. package/dist/RootHtml.d.ts +0 -2
  2. package/dist/RootHtml.js +0 -2
  3. package/dist/RootHtml.js.map +1 -1
  4. package/dist/_box-shadows.scss +76 -0
  5. package/dist/_colors.scss +279 -277
  6. package/dist/_core.scss +107 -16
  7. package/dist/_object-fit.scss +86 -0
  8. package/dist/_utils.scss +246 -72
  9. package/dist/app-bar/AppBar.d.ts +1 -92
  10. package/dist/app-bar/AppBar.js +1 -42
  11. package/dist/app-bar/AppBar.js.map +1 -1
  12. package/dist/app-bar/AppBarTitle.d.ts +1 -30
  13. package/dist/app-bar/AppBarTitle.js +1 -17
  14. package/dist/app-bar/AppBarTitle.js.map +1 -1
  15. package/dist/app-bar/_app-bar.scss +156 -25
  16. package/dist/app-bar/styles.d.ts +117 -0
  17. package/dist/app-bar/styles.js +55 -0
  18. package/dist/app-bar/styles.js.map +1 -0
  19. package/dist/autocomplete/Autocomplete.d.ts +8 -79
  20. package/dist/autocomplete/Autocomplete.js +112 -83
  21. package/dist/autocomplete/Autocomplete.js.map +1 -1
  22. package/dist/autocomplete/AutocompleteChip.d.ts +8 -0
  23. package/dist/autocomplete/AutocompleteChip.js +34 -0
  24. package/dist/autocomplete/AutocompleteChip.js.map +1 -0
  25. package/dist/autocomplete/AutocompleteCircularProgress.d.ts +5 -11
  26. package/dist/autocomplete/AutocompleteCircularProgress.js +4 -0
  27. package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
  28. package/dist/autocomplete/AutocompleteClearButton.d.ts +9 -0
  29. package/dist/autocomplete/AutocompleteClearButton.js +29 -0
  30. package/dist/autocomplete/AutocompleteClearButton.js.map +1 -0
  31. package/dist/autocomplete/AutocompleteDropdownButton.d.ts +4 -26
  32. package/dist/autocomplete/AutocompleteDropdownButton.js +5 -1
  33. package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
  34. package/dist/autocomplete/AutocompleteListboxChildren.d.ts +22 -0
  35. package/dist/autocomplete/AutocompleteListboxChildren.js +37 -0
  36. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -0
  37. package/dist/autocomplete/_autocomplete.scss +362 -34
  38. package/dist/autocomplete/autocompleteStyles.d.ts +22 -0
  39. package/dist/autocomplete/autocompleteStyles.js +17 -8
  40. package/dist/autocomplete/autocompleteStyles.js.map +1 -1
  41. package/dist/autocomplete/defaults.d.ts +9 -9
  42. package/dist/autocomplete/defaults.js +13 -13
  43. package/dist/autocomplete/defaults.js.map +1 -1
  44. package/dist/autocomplete/types.d.ts +554 -56
  45. package/dist/autocomplete/types.js.map +1 -1
  46. package/dist/autocomplete/useAutocomplete.d.ts +22 -0
  47. package/dist/autocomplete/useAutocomplete.js +281 -0
  48. package/dist/autocomplete/useAutocomplete.js.map +1 -0
  49. package/dist/autocomplete/utils.d.ts +81 -0
  50. package/dist/autocomplete/utils.js +108 -0
  51. package/dist/autocomplete/utils.js.map +1 -0
  52. package/dist/avatar/Avatar.d.ts +0 -2
  53. package/dist/avatar/Avatar.js +0 -2
  54. package/dist/avatar/Avatar.js.map +1 -1
  55. package/dist/avatar/_avatar.scss +93 -2
  56. package/dist/badge/Badge.d.ts +2 -23
  57. package/dist/badge/Badge.js +1 -16
  58. package/dist/badge/Badge.js.map +1 -1
  59. package/dist/badge/_badge.scss +90 -3
  60. package/dist/badge/styles.d.ts +26 -0
  61. package/dist/badge/styles.js +18 -0
  62. package/dist/badge/styles.js.map +1 -0
  63. package/dist/box/Box.d.ts +0 -2
  64. package/dist/box/Box.js +2 -3
  65. package/dist/box/Box.js.map +1 -1
  66. package/dist/box/_box.scss +130 -17
  67. package/dist/box/styles.d.ts +6 -0
  68. package/dist/box/styles.js +2 -1
  69. package/dist/box/styles.js.map +1 -1
  70. package/dist/button/AsyncButton.d.ts +1 -1
  71. package/dist/button/AsyncButton.js.map +1 -1
  72. package/dist/button/Button.d.ts +2 -1
  73. package/dist/button/Button.js +2 -1
  74. package/dist/button/Button.js.map +1 -1
  75. package/dist/button/ButtonUnstyled.d.ts +0 -2
  76. package/dist/button/ButtonUnstyled.js +0 -2
  77. package/dist/button/ButtonUnstyled.js.map +1 -1
  78. package/dist/button/_button.scss +157 -25
  79. package/dist/card/Card.d.ts +16 -2
  80. package/dist/card/Card.js +11 -5
  81. package/dist/card/Card.js.map +1 -1
  82. package/dist/card/CardContent.d.ts +0 -2
  83. package/dist/card/CardContent.js +0 -2
  84. package/dist/card/CardContent.js.map +1 -1
  85. package/dist/card/CardFooter.d.ts +0 -3
  86. package/dist/card/CardFooter.js +0 -2
  87. package/dist/card/CardFooter.js.map +1 -1
  88. package/dist/card/CardHeader.d.ts +0 -2
  89. package/dist/card/CardHeader.js +0 -2
  90. package/dist/card/CardHeader.js.map +1 -1
  91. package/dist/card/CardSubtitle.d.ts +0 -3
  92. package/dist/card/CardSubtitle.js +0 -2
  93. package/dist/card/CardSubtitle.js.map +1 -1
  94. package/dist/card/CardTitle.d.ts +0 -3
  95. package/dist/card/CardTitle.js +0 -2
  96. package/dist/card/CardTitle.js.map +1 -1
  97. package/dist/card/ClickableCard.d.ts +2 -1
  98. package/dist/card/ClickableCard.js +5 -2
  99. package/dist/card/ClickableCard.js.map +1 -1
  100. package/dist/card/_card.scss +90 -19
  101. package/dist/card/styles.d.ts +0 -7
  102. package/dist/card/styles.js +2 -3
  103. package/dist/card/styles.js.map +1 -1
  104. package/dist/chip/Chip.d.ts +2 -3
  105. package/dist/chip/Chip.js +2 -3
  106. package/dist/chip/Chip.js.map +1 -1
  107. package/dist/chip/_chip.scss +42 -20
  108. package/dist/chip/styles.d.ts +12 -10
  109. package/dist/chip/styles.js.map +1 -1
  110. package/dist/cssUtils.js.map +1 -1
  111. package/dist/delegateEvent.d.ts +2 -2
  112. package/dist/delegateEvent.js.map +1 -1
  113. package/dist/dialog/Dialog.d.ts +8 -21
  114. package/dist/dialog/Dialog.js +27 -27
  115. package/dist/dialog/Dialog.js.map +1 -1
  116. package/dist/dialog/DialogContent.d.ts +3 -3
  117. package/dist/dialog/DialogContent.js +3 -3
  118. package/dist/dialog/DialogContent.js.map +1 -1
  119. package/dist/dialog/DialogFooter.d.ts +2 -3
  120. package/dist/dialog/DialogFooter.js +2 -3
  121. package/dist/dialog/DialogFooter.js.map +1 -1
  122. package/dist/dialog/DialogHeader.d.ts +3 -3
  123. package/dist/dialog/DialogHeader.js +3 -3
  124. package/dist/dialog/DialogHeader.js.map +1 -1
  125. package/dist/dialog/DialogTitle.d.ts +3 -4
  126. package/dist/dialog/DialogTitle.js +3 -3
  127. package/dist/dialog/DialogTitle.js.map +1 -1
  128. package/dist/dialog/FixedDialog.d.ts +1 -3
  129. package/dist/dialog/FixedDialog.js +0 -8
  130. package/dist/dialog/FixedDialog.js.map +1 -1
  131. package/dist/dialog/NestedDialogProvider.d.ts +0 -1
  132. package/dist/dialog/_dialog.scss +67 -13
  133. package/dist/dialog/styles.d.ts +56 -0
  134. package/dist/dialog/styles.js +29 -2
  135. package/dist/dialog/styles.js.map +1 -1
  136. package/dist/divider/Divider.d.ts +0 -13
  137. package/dist/divider/Divider.js +0 -2
  138. package/dist/divider/Divider.js.map +1 -1
  139. package/dist/divider/_divider.scss +7 -1
  140. package/dist/divider/styles.d.ts +11 -0
  141. package/dist/divider/styles.js.map +1 -1
  142. package/dist/draggable/useDraggable.d.ts +6 -6
  143. package/dist/draggable/useDraggable.js.map +1 -1
  144. package/dist/draggable/utils.d.ts +3 -3
  145. package/dist/draggable/utils.js.map +1 -1
  146. package/dist/expansion-panel/ExpansionList.d.ts +1 -1
  147. package/dist/expansion-panel/ExpansionList.js +1 -1
  148. package/dist/expansion-panel/ExpansionList.js.map +1 -1
  149. package/dist/expansion-panel/ExpansionPanel.d.ts +9 -25
  150. package/dist/expansion-panel/ExpansionPanel.js +1 -12
  151. package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
  152. package/dist/expansion-panel/ExpansionPanelHeader.d.ts +0 -1
  153. package/dist/expansion-panel/ExpansionPanelHeader.js +0 -1
  154. package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
  155. package/dist/expansion-panel/_expansion-panel.scss +5 -1
  156. package/dist/expansion-panel/expansionPanelStyles.d.ts +19 -0
  157. package/dist/expansion-panel/expansionPanelStyles.js +14 -0
  158. package/dist/expansion-panel/expansionPanelStyles.js.map +1 -0
  159. package/dist/expansion-panel/useExpansionPanels.js +12 -24
  160. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  161. package/dist/{form → files}/FileInput.d.ts +3 -6
  162. package/dist/{form → files}/FileInput.js +3 -6
  163. package/dist/files/FileInput.js.map +1 -0
  164. package/dist/files/_files.scss +22 -0
  165. package/dist/files/styles.d.ts +5 -0
  166. package/dist/files/styles.js +7 -0
  167. package/dist/files/styles.js.map +1 -0
  168. package/dist/{form → files}/useFileUpload.d.ts +7 -9
  169. package/dist/{form → files}/useFileUpload.js +5 -7
  170. package/dist/files/useFileUpload.js.map +1 -0
  171. package/dist/files/utils.d.ts +169 -0
  172. package/dist/files/utils.js +114 -0
  173. package/dist/files/utils.js.map +1 -0
  174. package/dist/{form/fileUtils.d.ts → files/validation.d.ts} +9 -174
  175. package/dist/{form/fileUtils.js → files/validation.js} +9 -134
  176. package/dist/files/validation.js.map +1 -0
  177. package/dist/focus/useFocusContainer.d.ts +2 -2
  178. package/dist/focus/useFocusContainer.js.map +1 -1
  179. package/dist/focus/utils.js.map +1 -1
  180. package/dist/form/Checkbox.d.ts +0 -1
  181. package/dist/form/Fieldset.d.ts +0 -2
  182. package/dist/form/Fieldset.js.map +1 -1
  183. package/dist/form/FormMessage.d.ts +0 -3
  184. package/dist/form/FormMessage.js +0 -2
  185. package/dist/form/FormMessage.js.map +1 -1
  186. package/dist/form/FormMessageContainer.d.ts +0 -1
  187. package/dist/form/FormMessageContainer.js +4 -3
  188. package/dist/form/FormMessageContainer.js.map +1 -1
  189. package/dist/form/FormMessageCounter.d.ts +0 -2
  190. package/dist/form/FormMessageCounter.js +0 -2
  191. package/dist/form/FormMessageCounter.js.map +1 -1
  192. package/dist/form/InputToggle.d.ts +2 -1
  193. package/dist/form/InputToggle.js +2 -1
  194. package/dist/form/InputToggle.js.map +1 -1
  195. package/dist/form/InputToggleIcon.d.ts +0 -2
  196. package/dist/form/InputToggleIcon.js +0 -2
  197. package/dist/form/InputToggleIcon.js.map +1 -1
  198. package/dist/form/Label.d.ts +0 -3
  199. package/dist/form/Label.js +2 -4
  200. package/dist/form/Label.js.map +1 -1
  201. package/dist/form/Legend.d.ts +0 -3
  202. package/dist/form/Legend.js +0 -2
  203. package/dist/form/Legend.js.map +1 -1
  204. package/dist/form/Listbox.d.ts +24 -0
  205. package/dist/form/Listbox.js +46 -0
  206. package/dist/form/Listbox.js.map +1 -0
  207. package/dist/form/ListboxProvider.d.ts +21 -0
  208. package/dist/form/{useListboxProvider.js → ListboxProvider.js} +1 -1
  209. package/dist/form/ListboxProvider.js.map +1 -0
  210. package/dist/form/MenuItemCheckbox.d.ts +0 -1
  211. package/dist/form/MenuItemRadio.d.ts +0 -1
  212. package/dist/form/MenuItemSwitch.d.ts +0 -1
  213. package/dist/form/MenuItemTextField.js +1 -2
  214. package/dist/form/MenuItemTextField.js.map +1 -1
  215. package/dist/form/NativeSelect.d.ts +0 -2
  216. package/dist/form/NativeSelect.js +7 -6
  217. package/dist/form/NativeSelect.js.map +1 -1
  218. package/dist/form/Option.d.ts +49 -10
  219. package/dist/form/Option.js +11 -9
  220. package/dist/form/Option.js.map +1 -1
  221. package/dist/form/Password.js.map +1 -1
  222. package/dist/form/Radio.d.ts +0 -1
  223. package/dist/form/Select.d.ts +2 -2
  224. package/dist/form/Select.js +81 -85
  225. package/dist/form/Select.js.map +1 -1
  226. package/dist/form/SelectedOption.d.ts +0 -2
  227. package/dist/form/SelectedOption.js +0 -2
  228. package/dist/form/SelectedOption.js.map +1 -1
  229. package/dist/form/Slider.d.ts +4 -4
  230. package/dist/form/Slider.js +6 -2
  231. package/dist/form/Slider.js.map +1 -1
  232. package/dist/form/SliderContainer.d.ts +0 -2
  233. package/dist/form/SliderContainer.js +0 -2
  234. package/dist/form/SliderContainer.js.map +1 -1
  235. package/dist/form/SliderMark.d.ts +0 -2
  236. package/dist/form/SliderMark.js +0 -2
  237. package/dist/form/SliderMark.js.map +1 -1
  238. package/dist/form/SliderMarkLabel.d.ts +0 -2
  239. package/dist/form/SliderMarkLabel.js +0 -2
  240. package/dist/form/SliderMarkLabel.js.map +1 -1
  241. package/dist/form/SliderThumb.d.ts +3 -3
  242. package/dist/form/SliderThumb.js.map +1 -1
  243. package/dist/form/SliderTrack.d.ts +0 -2
  244. package/dist/form/SliderTrack.js +0 -2
  245. package/dist/form/SliderTrack.js.map +1 -1
  246. package/dist/form/SliderValueMarks.d.ts +2 -4
  247. package/dist/form/SliderValueMarks.js +0 -2
  248. package/dist/form/SliderValueMarks.js.map +1 -1
  249. package/dist/form/SliderValueTooltip.js.map +1 -1
  250. package/dist/form/Switch.d.ts +0 -2
  251. package/dist/form/Switch.js +0 -2
  252. package/dist/form/Switch.js.map +1 -1
  253. package/dist/form/SwitchTrack.d.ts +2 -1
  254. package/dist/form/SwitchTrack.js +2 -1
  255. package/dist/form/SwitchTrack.js.map +1 -1
  256. package/dist/form/TextArea.js +1 -2
  257. package/dist/form/TextArea.js.map +1 -1
  258. package/dist/form/TextField.d.ts +0 -2
  259. package/dist/form/TextField.js +1 -4
  260. package/dist/form/TextField.js.map +1 -1
  261. package/dist/form/TextFieldAddon.d.ts +1 -4
  262. package/dist/form/TextFieldAddon.js +1 -3
  263. package/dist/form/TextFieldAddon.js.map +1 -1
  264. package/dist/form/TextFieldContainer.js +1 -2
  265. package/dist/form/TextFieldContainer.js.map +1 -1
  266. package/dist/form/_form.scss +186 -121
  267. package/dist/form/formMessageContainerStyles.d.ts +10 -0
  268. package/dist/form/formMessageContainerStyles.js +11 -0
  269. package/dist/form/formMessageContainerStyles.js.map +1 -0
  270. package/dist/form/inputToggleStyles.js.map +1 -1
  271. package/dist/form/optionStyles.d.ts +1 -0
  272. package/dist/form/optionStyles.js +2 -2
  273. package/dist/form/optionStyles.js.map +1 -1
  274. package/dist/form/selectUtils.js.map +1 -1
  275. package/dist/form/sliderUtils.d.ts +1 -1
  276. package/dist/form/sliderUtils.js.map +1 -1
  277. package/dist/form/textFieldContainerStyles.d.ts +0 -2
  278. package/dist/form/textFieldContainerStyles.js +1 -2
  279. package/dist/form/textFieldContainerStyles.js.map +1 -1
  280. package/dist/form/types.d.ts +3 -10
  281. package/dist/form/types.js.map +1 -1
  282. package/dist/form/useCheckboxGroup.d.ts +17 -17
  283. package/dist/form/useCheckboxGroup.js +9 -17
  284. package/dist/form/useCheckboxGroup.js.map +1 -1
  285. package/dist/form/useCombobox.d.ts +56 -21
  286. package/dist/form/useCombobox.js +19 -4
  287. package/dist/form/useCombobox.js.map +1 -1
  288. package/dist/form/useEditableCombobox.d.ts +24 -4
  289. package/dist/form/useEditableCombobox.js +5 -0
  290. package/dist/form/useEditableCombobox.js.map +1 -1
  291. package/dist/form/useNumberField.js.map +1 -1
  292. package/dist/form/useRadioGroup.d.ts +6 -6
  293. package/dist/form/useRadioGroup.js.map +1 -1
  294. package/dist/form/useResizingTextArea.js.map +1 -1
  295. package/dist/form/useSelectCombobox.d.ts +3 -4
  296. package/dist/form/useSelectCombobox.js.map +1 -1
  297. package/dist/form/useTextField.d.ts +1 -1
  298. package/dist/form/useTextField.js.map +1 -1
  299. package/dist/form/useTextFieldContainerAddons.js.map +1 -1
  300. package/dist/hoverMode/useHoverMode.d.ts +3 -3
  301. package/dist/hoverMode/useHoverMode.js.map +1 -1
  302. package/dist/hoverMode/useHoverModeProvider.d.ts +4 -4
  303. package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
  304. package/dist/icon/FontIcon.d.ts +0 -2
  305. package/dist/icon/FontIcon.js +0 -2
  306. package/dist/icon/FontIcon.js.map +1 -1
  307. package/dist/icon/IconRotator.d.ts +0 -2
  308. package/dist/icon/IconRotator.js +0 -2
  309. package/dist/icon/IconRotator.js.map +1 -1
  310. package/dist/icon/MaterialIcon.d.ts +0 -2
  311. package/dist/icon/MaterialIcon.js +0 -2
  312. package/dist/icon/MaterialIcon.js.map +1 -1
  313. package/dist/icon/MaterialSymbol.d.ts +0 -1
  314. package/dist/icon/MaterialSymbol.js +0 -1
  315. package/dist/icon/MaterialSymbol.js.map +1 -1
  316. package/dist/icon/SVGIcon.d.ts +0 -2
  317. package/dist/icon/SVGIcon.js +0 -2
  318. package/dist/icon/SVGIcon.js.map +1 -1
  319. package/dist/icon/TextIconSpacing.d.ts +0 -2
  320. package/dist/icon/TextIconSpacing.js +0 -2
  321. package/dist/icon/TextIconSpacing.js.map +1 -1
  322. package/dist/icon/_icon.scss +153 -4
  323. package/dist/icon/iconConfig.d.ts +10 -0
  324. package/dist/icon/iconConfig.js +7 -0
  325. package/dist/icon/iconConfig.js.map +1 -1
  326. package/dist/icon/materialConfig.js.map +1 -1
  327. package/dist/icon/styles.js +1 -1
  328. package/dist/icon/styles.js.map +1 -1
  329. package/dist/interaction/RippleContainer.d.ts +0 -2
  330. package/dist/interaction/RippleContainer.js +0 -2
  331. package/dist/interaction/RippleContainer.js.map +1 -1
  332. package/dist/interaction/UserInteractionModeProvider.d.ts +5 -5
  333. package/dist/interaction/UserInteractionModeProvider.js +12 -8
  334. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  335. package/dist/interaction/types.d.ts +20 -2
  336. package/dist/interaction/types.js.map +1 -1
  337. package/dist/interaction/useElementInteraction.d.ts +7 -1
  338. package/dist/interaction/useElementInteraction.js +1 -2
  339. package/dist/interaction/useElementInteraction.js.map +1 -1
  340. package/dist/interaction/utils.d.ts +2 -2
  341. package/dist/interaction/utils.js +2 -2
  342. package/dist/interaction/utils.js.map +1 -1
  343. package/dist/layout/LayoutAppBar.d.ts +0 -1
  344. package/dist/layout/LayoutNav.js +1 -2
  345. package/dist/layout/LayoutNav.js.map +1 -1
  346. package/dist/layout/LayoutWindowSplitter.d.ts +0 -1
  347. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  348. package/dist/layout/_layout.scss +23 -10
  349. package/dist/layout/useExpandableLayout.d.ts +3 -3
  350. package/dist/layout/useExpandableLayout.js.map +1 -1
  351. package/dist/layout/useHorizontalLayoutTransition.js +1 -1
  352. package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
  353. package/dist/layout/useLayoutAppBarHeight.d.ts +2 -3
  354. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  355. package/dist/layout/useLayoutTree.d.ts +2 -2
  356. package/dist/layout/useLayoutTree.js.map +1 -1
  357. package/dist/layout/useTemporaryLayout.d.ts +2 -2
  358. package/dist/layout/useTemporaryLayout.js.map +1 -1
  359. package/dist/link/Link.d.ts +0 -2
  360. package/dist/link/Link.js +0 -2
  361. package/dist/link/Link.js.map +1 -1
  362. package/dist/link/SkipToMainContent.js.map +1 -1
  363. package/dist/list/List.d.ts +0 -20
  364. package/dist/list/List.js +1 -14
  365. package/dist/list/List.js.map +1 -1
  366. package/dist/list/ListItem.d.ts +2 -17
  367. package/dist/list/ListItem.js +2 -1
  368. package/dist/list/ListItem.js.map +1 -1
  369. package/dist/list/ListItemAddon.d.ts +0 -2
  370. package/dist/list/ListItemAddon.js +0 -2
  371. package/dist/list/ListItemAddon.js.map +1 -1
  372. package/dist/list/ListItemChildren.d.ts +0 -2
  373. package/dist/list/ListItemChildren.js +0 -2
  374. package/dist/list/ListItemChildren.js.map +1 -1
  375. package/dist/list/ListItemLink.d.ts +2 -1
  376. package/dist/list/ListItemLink.js +2 -1
  377. package/dist/list/ListItemLink.js.map +1 -1
  378. package/dist/list/ListItemText.d.ts +0 -2
  379. package/dist/list/ListItemText.js +0 -2
  380. package/dist/list/ListItemText.js.map +1 -1
  381. package/dist/list/ListSubheader.d.ts +3 -2
  382. package/dist/list/ListSubheader.js +0 -2
  383. package/dist/list/ListSubheader.js.map +1 -1
  384. package/dist/list/_list.scss +6 -5
  385. package/dist/list/getListItemHeight.d.ts +2 -2
  386. package/dist/list/getListItemHeight.js +2 -2
  387. package/dist/list/getListItemHeight.js.map +1 -1
  388. package/dist/list/listItemStyles.d.ts +17 -1
  389. package/dist/list/listItemStyles.js.map +1 -1
  390. package/dist/list/listStyles.d.ts +18 -0
  391. package/dist/list/listStyles.js +14 -0
  392. package/dist/list/listStyles.js.map +1 -0
  393. package/dist/list/types.d.ts +9 -3
  394. package/dist/list/types.js +6 -1
  395. package/dist/list/types.js.map +1 -1
  396. package/dist/media-queries/AppSizeProvider.d.ts +8 -0
  397. package/dist/media-queries/AppSizeProvider.js +2 -0
  398. package/dist/media-queries/AppSizeProvider.js.map +1 -1
  399. package/dist/media-queries/_media-queries.scss +12 -0
  400. package/dist/media-queries/appSize.d.ts +5 -5
  401. package/dist/media-queries/appSize.js.map +1 -1
  402. package/dist/media-queries/useMediaQuery.d.ts +1 -1
  403. package/dist/media-queries/useMediaQuery.js +4 -2
  404. package/dist/media-queries/useMediaQuery.js.map +1 -1
  405. package/dist/menu/DropdownMenu.js.map +1 -1
  406. package/dist/menu/Menu.d.ts +8 -3
  407. package/dist/menu/Menu.js +2 -1
  408. package/dist/menu/Menu.js.map +1 -1
  409. package/dist/menu/MenuBar.d.ts +0 -1
  410. package/dist/menu/MenuButton.d.ts +0 -1
  411. package/dist/menu/MenuConfigurationProvider.js.map +1 -1
  412. package/dist/menu/MenuItem.d.ts +0 -1
  413. package/dist/menu/MenuItemButton.d.ts +0 -1
  414. package/dist/menu/MenuItemButton.js +6 -2
  415. package/dist/menu/MenuItemButton.js.map +1 -1
  416. package/dist/menu/useContextMenu.d.ts +3 -3
  417. package/dist/menu/useContextMenu.js.map +1 -1
  418. package/dist/menu/useMenuBarProvider.d.ts +0 -1
  419. package/dist/movement/types.d.ts +5 -5
  420. package/dist/movement/types.js.map +1 -1
  421. package/dist/movement/useKeyboardMovementProvider.d.ts +0 -1
  422. package/dist/navigation/CollapsibleNavGroup.d.ts +5 -3
  423. package/dist/navigation/CollapsibleNavGroup.js +3 -4
  424. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  425. package/dist/navigation/DefaultNavigationRenderer.d.ts +1 -2
  426. package/dist/navigation/DefaultNavigationRenderer.js +6 -2
  427. package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
  428. package/dist/navigation/NavGroup.d.ts +0 -2
  429. package/dist/navigation/NavGroup.js +0 -2
  430. package/dist/navigation/NavGroup.js.map +1 -1
  431. package/dist/navigation/NavItem.d.ts +0 -2
  432. package/dist/navigation/NavItem.js +0 -2
  433. package/dist/navigation/NavItem.js.map +1 -1
  434. package/dist/navigation/NavItemButton.d.ts +1 -1
  435. package/dist/navigation/NavItemButton.js +1 -0
  436. package/dist/navigation/NavItemButton.js.map +1 -1
  437. package/dist/navigation/NavItemLink.d.ts +3 -2
  438. package/dist/navigation/NavItemLink.js +6 -2
  439. package/dist/navigation/NavItemLink.js.map +1 -1
  440. package/dist/navigation/NavSubheader.d.ts +2 -6
  441. package/dist/navigation/NavSubheader.js +0 -2
  442. package/dist/navigation/NavSubheader.js.map +1 -1
  443. package/dist/navigation/Navigation.d.ts +1 -1
  444. package/dist/navigation/Navigation.js.map +1 -1
  445. package/dist/navigation/_navigation.scss +6 -5
  446. package/dist/navigation/types.d.ts +54 -6
  447. package/dist/navigation/types.js.map +1 -1
  448. package/dist/navigation/useActiveHeadingId.d.ts +1 -1
  449. package/dist/navigation/useActiveHeadingId.js.map +1 -1
  450. package/dist/navigation/useNavigationExpansion.d.ts +104 -0
  451. package/dist/navigation/useNavigationExpansion.js +77 -0
  452. package/dist/navigation/useNavigationExpansion.js.map +1 -0
  453. package/dist/navigation/utils.d.ts +13 -0
  454. package/dist/navigation/utils.js +36 -0
  455. package/dist/navigation/utils.js.map +1 -0
  456. package/dist/objectFit.d.ts +69 -0
  457. package/dist/objectFit.js +52 -0
  458. package/dist/objectFit.js.map +1 -0
  459. package/dist/overlay/_overlay.scss +2 -1
  460. package/dist/positioning/useFixedPositioning.d.ts +17 -4
  461. package/dist/positioning/useFixedPositioning.js +10 -5
  462. package/dist/positioning/useFixedPositioning.js.map +1 -1
  463. package/dist/positioning/utils.js.map +1 -1
  464. package/dist/progress/CircularProgress.d.ts +0 -2
  465. package/dist/progress/CircularProgress.js +0 -2
  466. package/dist/progress/CircularProgress.js.map +1 -1
  467. package/dist/progress/LinearProgress.d.ts +0 -2
  468. package/dist/progress/LinearProgress.js +0 -2
  469. package/dist/progress/LinearProgress.js.map +1 -1
  470. package/dist/progress/_progress.scss +20 -14
  471. package/dist/responsive-item/ResponsiveItem.d.ts +64 -0
  472. package/dist/responsive-item/ResponsiveItem.js +68 -0
  473. package/dist/responsive-item/ResponsiveItem.js.map +1 -0
  474. package/dist/responsive-item/ResponsiveItemOverlay.d.ts +1 -21
  475. package/dist/responsive-item/ResponsiveItemOverlay.js +1 -14
  476. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  477. package/dist/responsive-item/_responsive-item.scss +110 -133
  478. package/dist/responsive-item/responsiveItemOverlayStyles.d.ts +19 -0
  479. package/dist/responsive-item/responsiveItemOverlayStyles.js +14 -0
  480. package/dist/responsive-item/responsiveItemOverlayStyles.js.map +1 -0
  481. package/dist/responsive-item/responsiveItemStyles.d.ts +52 -0
  482. package/dist/responsive-item/responsiveItemStyles.js +15 -0
  483. package/dist/responsive-item/responsiveItemStyles.js.map +1 -0
  484. package/dist/scroll/useScrollLock.d.ts +5 -0
  485. package/dist/scroll/useScrollLock.js.map +1 -1
  486. package/dist/searching/utils.d.ts +2 -2
  487. package/dist/searching/utils.js.map +1 -1
  488. package/dist/segmented-button/SegmentedButton.d.ts +2 -1
  489. package/dist/segmented-button/SegmentedButton.js +2 -1
  490. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  491. package/dist/segmented-button/SegmentedButtonContainer.d.ts +0 -2
  492. package/dist/segmented-button/SegmentedButtonContainer.js +0 -2
  493. package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
  494. package/dist/segmented-button/_segmented-button.scss +6 -6
  495. package/dist/sheet/Sheet.d.ts +30 -16
  496. package/dist/sheet/Sheet.js +24 -14
  497. package/dist/sheet/Sheet.js.map +1 -1
  498. package/dist/sheet/_sheet.scss +18 -6
  499. package/dist/sheet/styles.d.ts +29 -0
  500. package/dist/sheet/styles.js +13 -0
  501. package/dist/sheet/styles.js.map +1 -1
  502. package/dist/snackbar/ToastActionButton.d.ts +0 -1
  503. package/dist/snackbar/ToastCloseButton.d.ts +0 -1
  504. package/dist/snackbar/ToastManager.js +15 -5
  505. package/dist/snackbar/ToastManager.js.map +1 -1
  506. package/dist/snackbar/_snackbar.scss +30 -17
  507. package/dist/snackbar/useCurrentToastActions.d.ts +5 -6
  508. package/dist/snackbar/useCurrentToastActions.js.map +1 -1
  509. package/dist/suspense/CircularProgressSuspense.d.ts +0 -2
  510. package/dist/suspense/CircularProgressSuspense.js +0 -2
  511. package/dist/suspense/CircularProgressSuspense.js.map +1 -1
  512. package/dist/suspense/NullSuspense.d.ts +0 -2
  513. package/dist/suspense/NullSuspense.js +0 -2
  514. package/dist/suspense/NullSuspense.js.map +1 -1
  515. package/dist/table/TableCellContent.d.ts +0 -3
  516. package/dist/table/TableCellContent.js +0 -3
  517. package/dist/table/TableCellContent.js.map +1 -1
  518. package/dist/table/TableConfigurationProvider.d.ts +0 -1
  519. package/dist/table/_table.scss +15 -3
  520. package/dist/table/tableCellStyles.d.ts +7 -3
  521. package/dist/table/tableCellStyles.js +2 -2
  522. package/dist/table/tableCellStyles.js.map +1 -1
  523. package/dist/tabs/Tab.d.ts +5 -1
  524. package/dist/tabs/Tab.js +2 -1
  525. package/dist/tabs/Tab.js.map +1 -1
  526. package/dist/tabs/TabList.d.ts +2 -2
  527. package/dist/tabs/TabList.js.map +1 -1
  528. package/dist/tabs/TabListScrollButton.d.ts +1 -1
  529. package/dist/tabs/TabListScrollButton.js +6 -2
  530. package/dist/tabs/TabListScrollButton.js.map +1 -1
  531. package/dist/tabs/_tabs.scss +48 -9
  532. package/dist/tabs/getTabListScrollToOptions.d.ts +18 -0
  533. package/dist/tabs/getTabListScrollToOptions.js +19 -0
  534. package/dist/tabs/getTabListScrollToOptions.js.map +1 -0
  535. package/dist/tabs/tabListScrollButtonStyles.d.ts +2 -0
  536. package/dist/tabs/tabListScrollButtonStyles.js +9 -5
  537. package/dist/tabs/tabListScrollButtonStyles.js.map +1 -1
  538. package/dist/tabs/tabStyles.d.ts +3 -0
  539. package/dist/tabs/tabStyles.js.map +1 -1
  540. package/dist/tabs/useTabList.d.ts +3 -8
  541. package/dist/tabs/useTabList.js +5 -2
  542. package/dist/tabs/useTabList.js.map +1 -1
  543. package/dist/tabs/useTabs.d.ts +39 -17
  544. package/dist/tabs/useTabs.js +9 -3
  545. package/dist/tabs/useTabs.js.map +1 -1
  546. package/dist/tabs/utils.d.ts +0 -18
  547. package/dist/tabs/utils.js +0 -15
  548. package/dist/tabs/utils.js.map +1 -1
  549. package/dist/test-utils/IntersectionObserver.js.map +1 -1
  550. package/dist/test-utils/data-testid.d.ts +0 -1
  551. package/dist/test-utils/matchMedia.d.ts +1 -1
  552. package/dist/test-utils/matchMedia.js +4 -4
  553. package/dist/test-utils/matchMedia.js.map +1 -1
  554. package/dist/test-utils/polyfills/TextDecoder.js +0 -1
  555. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
  556. package/dist/test-utils/timers.d.ts +9 -5
  557. package/dist/test-utils/timers.js +5 -5
  558. package/dist/test-utils/timers.js.map +1 -1
  559. package/dist/theme/LocalStorageColorSchemeProvider.d.ts +1 -1
  560. package/dist/theme/LocalStorageColorSchemeProvider.js +2 -1
  561. package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
  562. package/dist/theme/ThemeProvider.js +3 -1
  563. package/dist/theme/ThemeProvider.js.map +1 -1
  564. package/dist/theme/_a11y.scss +77 -13
  565. package/dist/theme/_colors.scss +279 -277
  566. package/dist/theme/_theme.scss +308 -37
  567. package/dist/theme/isColorScheme.d.ts +16 -0
  568. package/dist/theme/isColorScheme.js +19 -0
  569. package/dist/theme/isColorScheme.js.map +1 -0
  570. package/dist/theme/types.d.ts +53 -1
  571. package/dist/theme/types.js +1 -23
  572. package/dist/theme/types.js.map +1 -1
  573. package/dist/theme/useCSSVariables.d.ts +2 -19
  574. package/dist/theme/useCSSVariables.js.map +1 -1
  575. package/dist/theme/useColorScheme.d.ts +1 -36
  576. package/dist/theme/useColorScheme.js.map +1 -1
  577. package/dist/theme/useColorSchemeMetaTag.d.ts +1 -1
  578. package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
  579. package/dist/theme/useColorSchemeProvider.d.ts +1 -1
  580. package/dist/theme/useColorSchemeProvider.js +1 -1
  581. package/dist/theme/useColorSchemeProvider.js.map +1 -1
  582. package/dist/theme/{usePrefersColorScheme.js → usePrefersDarkScheme.js} +1 -1
  583. package/dist/theme/usePrefersDarkScheme.js.map +1 -0
  584. package/dist/theme/utils.js.map +1 -1
  585. package/dist/tooltip/useTooltip.d.ts +14 -9
  586. package/dist/tooltip/useTooltip.js +2 -1
  587. package/dist/tooltip/useTooltip.js.map +1 -1
  588. package/dist/transition/SlideContainer.d.ts +2 -48
  589. package/dist/transition/SlideContainer.js +2 -48
  590. package/dist/transition/SlideContainer.js.map +1 -1
  591. package/dist/transition/_transition.scss +16 -9
  592. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
  593. package/dist/transition/types.d.ts +1 -1
  594. package/dist/transition/types.js.map +1 -1
  595. package/dist/transition/useCarousel.d.ts +3 -3
  596. package/dist/transition/useCarousel.js.map +1 -1
  597. package/dist/transition/useCollapseTransition.js.map +1 -1
  598. package/dist/transition/useTransition.js +1 -0
  599. package/dist/transition/useTransition.js.map +1 -1
  600. package/dist/transition/utils.js.map +1 -1
  601. package/dist/tree/DefaultTreeItemRenderer.d.ts +2 -3
  602. package/dist/tree/DefaultTreeItemRenderer.js +1 -1
  603. package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
  604. package/dist/tree/Tree.d.ts +3 -4
  605. package/dist/tree/Tree.js.map +1 -1
  606. package/dist/tree/TreeItem.d.ts +12 -4
  607. package/dist/tree/TreeItem.js +9 -5
  608. package/dist/tree/TreeItem.js.map +1 -1
  609. package/dist/tree/TreeItemExpander.js.map +1 -1
  610. package/dist/tree/_tree.scss +8 -6
  611. package/dist/tree/types.d.ts +11 -6
  612. package/dist/tree/types.js +1 -26
  613. package/dist/tree/types.js.map +1 -1
  614. package/dist/tree/useTree.d.ts +3 -3
  615. package/dist/tree/useTree.js.map +1 -1
  616. package/dist/tree/useTreeExpansion.d.ts +4 -4
  617. package/dist/tree/useTreeExpansion.js +6 -18
  618. package/dist/tree/useTreeExpansion.js.map +1 -1
  619. package/dist/tree/useTreeSelection.d.ts +4 -4
  620. package/dist/tree/useTreeSelection.js +7 -25
  621. package/dist/tree/useTreeSelection.js.map +1 -1
  622. package/dist/tree/utils.d.ts +1 -1
  623. package/dist/tree/utils.js.map +1 -1
  624. package/dist/types.d.ts +12 -4
  625. package/dist/types.js.map +1 -1
  626. package/dist/typography/SrOnly.d.ts +2 -1
  627. package/dist/typography/SrOnly.js +2 -1
  628. package/dist/typography/SrOnly.js.map +1 -1
  629. package/dist/typography/TextContainer.d.ts +0 -2
  630. package/dist/typography/TextContainer.js +0 -2
  631. package/dist/typography/TextContainer.js.map +1 -1
  632. package/dist/typography/Typography.d.ts +0 -2
  633. package/dist/typography/Typography.js +0 -2
  634. package/dist/typography/Typography.js.map +1 -1
  635. package/dist/typography/WritingDirectionProvider.d.ts +3 -3
  636. package/dist/typography/WritingDirectionProvider.js +2 -2
  637. package/dist/typography/WritingDirectionProvider.js.map +1 -1
  638. package/dist/typography/_typography.scss +94 -37
  639. package/dist/typography/typographyStyles.js.map +1 -1
  640. package/dist/useDebouncedFunction.d.ts +1 -5
  641. package/dist/useDebouncedFunction.js +3 -1
  642. package/dist/useDebouncedFunction.js.map +1 -1
  643. package/dist/useDropzone.d.ts +4 -4
  644. package/dist/useDropzone.js.map +1 -1
  645. package/dist/useEnsuredId.js.map +1 -1
  646. package/dist/useIntersectionObserver.d.ts +5 -5
  647. package/dist/useIntersectionObserver.js.map +1 -1
  648. package/dist/useLocalStorage.d.ts +3 -3
  649. package/dist/useLocalStorage.js +1 -1
  650. package/dist/useLocalStorage.js.map +1 -1
  651. package/dist/useMutationObserver.d.ts +1 -1
  652. package/dist/useMutationObserver.js.map +1 -1
  653. package/dist/useOrientation.js +3 -1
  654. package/dist/useOrientation.js.map +1 -1
  655. package/dist/usePageInactive.d.ts +2 -2
  656. package/dist/usePageInactive.js.map +1 -1
  657. package/dist/useReadonlySet.d.ts +76 -0
  658. package/dist/useReadonlySet.js +72 -0
  659. package/dist/useReadonlySet.js.map +1 -0
  660. package/dist/useResizeListener.d.ts +8 -2
  661. package/dist/useResizeListener.js.map +1 -1
  662. package/dist/useResizeObserver.d.ts +3 -3
  663. package/dist/useResizeObserver.js.map +1 -1
  664. package/dist/useThrottledFunction.d.ts +1 -5
  665. package/dist/useThrottledFunction.js +3 -1
  666. package/dist/useThrottledFunction.js.map +1 -1
  667. package/dist/useToggle.d.ts +7 -7
  668. package/dist/useToggle.js +1 -1
  669. package/dist/useToggle.js.map +1 -1
  670. package/dist/utils/RenderRecursively.d.ts +1 -1
  671. package/dist/utils/RenderRecursively.js.map +1 -1
  672. package/dist/utils/alphaNumericSort.d.ts +1 -1
  673. package/dist/utils/alphaNumericSort.js.map +1 -1
  674. package/dist/utils/bem.js.map +1 -1
  675. package/dist/utils/debounce.d.ts +5 -0
  676. package/dist/utils/debounce.js +17 -0
  677. package/dist/utils/debounce.js.map +1 -0
  678. package/dist/utils/nearest.js.map +1 -1
  679. package/dist/utils/parseCssLengthUnit.js.map +1 -1
  680. package/dist/utils/throttle.d.ts +5 -0
  681. package/dist/utils/throttle.js +30 -0
  682. package/dist/utils/throttle.js.map +1 -0
  683. package/dist/utils/wait.js +3 -1
  684. package/dist/utils/wait.js.map +1 -1
  685. package/dist/window-splitter/WindowSplitter.d.ts +39 -17
  686. package/dist/window-splitter/WindowSplitter.js +40 -19
  687. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  688. package/dist/window-splitter/_window-splitter.scss +32 -14
  689. package/dist/window-splitter/styles.d.ts +14 -0
  690. package/dist/window-splitter/styles.js +18 -0
  691. package/dist/window-splitter/styles.js.map +1 -0
  692. package/package.json +27 -26
  693. package/src/RootHtml.tsx +0 -2
  694. package/src/app-bar/AppBar.tsx +1 -172
  695. package/src/app-bar/AppBarTitle.tsx +1 -46
  696. package/src/app-bar/styles.ts +206 -0
  697. package/src/autocomplete/Autocomplete.tsx +194 -211
  698. package/src/autocomplete/AutocompleteChip.tsx +48 -0
  699. package/src/autocomplete/AutocompleteCircularProgress.tsx +6 -17
  700. package/src/autocomplete/AutocompleteClearButton.tsx +44 -0
  701. package/src/autocomplete/AutocompleteDropdownButton.tsx +16 -37
  702. package/src/autocomplete/AutocompleteListboxChildren.tsx +68 -0
  703. package/src/autocomplete/autocompleteStyles.ts +48 -9
  704. package/src/autocomplete/defaults.ts +26 -17
  705. package/src/autocomplete/types.ts +744 -61
  706. package/src/autocomplete/useAutocomplete.ts +428 -0
  707. package/src/autocomplete/utils.ts +211 -0
  708. package/src/avatar/Avatar.tsx +0 -2
  709. package/src/badge/Badge.tsx +2 -42
  710. package/src/badge/styles.ts +45 -0
  711. package/src/box/Box.tsx +11 -11
  712. package/src/box/styles.ts +14 -5
  713. package/src/button/AsyncButton.tsx +1 -1
  714. package/src/button/Button.tsx +5 -1
  715. package/src/button/ButtonUnstyled.tsx +0 -2
  716. package/src/card/Card.tsx +35 -6
  717. package/src/card/CardContent.tsx +0 -2
  718. package/src/card/CardFooter.tsx +0 -2
  719. package/src/card/CardHeader.tsx +0 -2
  720. package/src/card/CardSubtitle.tsx +0 -2
  721. package/src/card/CardTitle.tsx +0 -2
  722. package/src/card/ClickableCard.tsx +9 -2
  723. package/src/card/styles.ts +1 -10
  724. package/src/chip/Chip.tsx +6 -3
  725. package/src/chip/styles.ts +12 -10
  726. package/src/delegateEvent.ts +5 -5
  727. package/src/dialog/Dialog.tsx +48 -61
  728. package/src/dialog/DialogContent.tsx +3 -3
  729. package/src/dialog/DialogFooter.tsx +2 -3
  730. package/src/dialog/DialogHeader.tsx +3 -3
  731. package/src/dialog/DialogTitle.tsx +3 -3
  732. package/src/dialog/FixedDialog.tsx +1 -11
  733. package/src/dialog/styles.ts +97 -0
  734. package/src/divider/Divider.tsx +0 -14
  735. package/src/divider/styles.ts +12 -0
  736. package/src/draggable/useDraggable.ts +17 -10
  737. package/src/draggable/utils.ts +3 -3
  738. package/src/expansion-panel/ExpansionList.tsx +1 -1
  739. package/src/expansion-panel/ExpansionPanel.tsx +10 -39
  740. package/src/expansion-panel/ExpansionPanelHeader.tsx +0 -1
  741. package/src/expansion-panel/expansionPanelStyles.ts +33 -0
  742. package/src/expansion-panel/useExpansionPanels.ts +18 -27
  743. package/src/{form → files}/FileInput.tsx +7 -15
  744. package/src/files/styles.ts +10 -0
  745. package/src/{form → files}/useFileUpload.ts +30 -34
  746. package/src/files/utils.ts +234 -0
  747. package/src/{form/fileUtils.ts → files/validation.ts} +13 -242
  748. package/src/focus/useFocusContainer.ts +16 -8
  749. package/src/form/Fieldset.tsx +0 -2
  750. package/src/form/FormMessage.tsx +0 -2
  751. package/src/form/FormMessageContainer.tsx +2 -3
  752. package/src/form/FormMessageCounter.tsx +0 -2
  753. package/src/form/InputToggle.tsx +6 -2
  754. package/src/form/InputToggleIcon.tsx +0 -2
  755. package/src/form/Label.tsx +18 -20
  756. package/src/form/Legend.tsx +0 -2
  757. package/src/form/Listbox.tsx +87 -0
  758. package/src/form/ListboxProvider.ts +37 -0
  759. package/src/form/MenuItemTextField.tsx +1 -2
  760. package/src/form/NativeSelect.tsx +14 -12
  761. package/src/form/Option.tsx +74 -22
  762. package/src/form/Select.tsx +89 -85
  763. package/src/form/SelectedOption.tsx +0 -2
  764. package/src/form/Slider.tsx +14 -11
  765. package/src/form/SliderContainer.tsx +0 -2
  766. package/src/form/SliderMark.tsx +0 -2
  767. package/src/form/SliderMarkLabel.tsx +0 -2
  768. package/src/form/SliderThumb.tsx +4 -4
  769. package/src/form/SliderTrack.tsx +0 -2
  770. package/src/form/SliderValueMarks.tsx +4 -6
  771. package/src/form/Switch.tsx +0 -2
  772. package/src/form/SwitchTrack.tsx +2 -1
  773. package/src/form/TextArea.tsx +6 -8
  774. package/src/form/TextField.tsx +0 -4
  775. package/src/form/TextFieldAddon.tsx +1 -3
  776. package/src/form/TextFieldContainer.tsx +9 -11
  777. package/src/form/formMessageContainerStyles.ts +22 -0
  778. package/src/form/optionStyles.ts +7 -2
  779. package/src/form/sliderUtils.ts +1 -1
  780. package/src/form/textFieldContainerStyles.ts +9 -14
  781. package/src/form/types.ts +3 -11
  782. package/src/form/useCheckboxGroup.ts +28 -36
  783. package/src/form/useCombobox.ts +86 -38
  784. package/src/form/useEditableCombobox.ts +43 -8
  785. package/src/form/useRadioGroup.ts +6 -6
  786. package/src/form/useSelectCombobox.ts +4 -4
  787. package/src/form/useTextField.ts +1 -1
  788. package/src/hoverMode/useHoverMode.ts +3 -3
  789. package/src/hoverMode/useHoverModeProvider.ts +4 -4
  790. package/src/icon/FontIcon.tsx +0 -2
  791. package/src/icon/IconRotator.tsx +0 -2
  792. package/src/icon/MaterialIcon.tsx +0 -2
  793. package/src/icon/MaterialSymbol.tsx +0 -1
  794. package/src/icon/SVGIcon.tsx +0 -2
  795. package/src/icon/TextIconSpacing.tsx +0 -2
  796. package/src/icon/iconConfig.tsx +12 -0
  797. package/src/icon/styles.ts +1 -1
  798. package/src/interaction/RippleContainer.tsx +0 -2
  799. package/src/interaction/UserInteractionModeProvider.tsx +12 -8
  800. package/src/interaction/types.ts +21 -2
  801. package/src/interaction/useElementInteraction.tsx +9 -2
  802. package/src/interaction/utils.ts +7 -7
  803. package/src/layout/LayoutNav.tsx +3 -2
  804. package/src/layout/useExpandableLayout.ts +3 -3
  805. package/src/layout/useHorizontalLayoutTransition.ts +1 -1
  806. package/src/layout/useLayoutAppBarHeight.ts +3 -4
  807. package/src/layout/useLayoutTree.ts +2 -2
  808. package/src/layout/useTemporaryLayout.ts +2 -2
  809. package/src/link/Link.tsx +0 -2
  810. package/src/list/List.tsx +1 -33
  811. package/src/list/ListItem.tsx +5 -18
  812. package/src/list/ListItemAddon.tsx +0 -2
  813. package/src/list/ListItemChildren.tsx +0 -2
  814. package/src/list/ListItemLink.tsx +5 -1
  815. package/src/list/ListItemText.tsx +0 -2
  816. package/src/list/ListSubheader.tsx +3 -2
  817. package/src/list/getListItemHeight.ts +2 -2
  818. package/src/list/listItemStyles.ts +21 -4
  819. package/src/list/listStyles.ts +31 -0
  820. package/src/list/types.ts +9 -3
  821. package/src/media-queries/AppSizeProvider.tsx +8 -0
  822. package/src/media-queries/useMediaQuery.ts +3 -2
  823. package/src/menu/Menu.tsx +11 -3
  824. package/src/menu/MenuConfigurationProvider.tsx +2 -2
  825. package/src/menu/MenuItemButton.tsx +7 -1
  826. package/src/menu/useContextMenu.ts +3 -3
  827. package/src/movement/types.ts +5 -5
  828. package/src/navigation/CollapsibleNavGroup.tsx +16 -8
  829. package/src/navigation/DefaultNavigationRenderer.tsx +8 -6
  830. package/src/navigation/NavGroup.tsx +0 -2
  831. package/src/navigation/NavItem.tsx +0 -2
  832. package/src/navigation/NavItemButton.tsx +2 -1
  833. package/src/navigation/NavItemLink.tsx +11 -3
  834. package/src/navigation/NavSubheader.tsx +1 -3
  835. package/src/navigation/Navigation.tsx +1 -1
  836. package/src/navigation/types.ts +60 -10
  837. package/src/navigation/useActiveHeadingId.ts +1 -1
  838. package/src/navigation/useNavigationExpansion.ts +170 -0
  839. package/src/navigation/utils.ts +47 -0
  840. package/src/objectFit.ts +88 -0
  841. package/src/positioning/useFixedPositioning.ts +34 -11
  842. package/src/progress/CircularProgress.tsx +0 -2
  843. package/src/progress/LinearProgress.tsx +0 -2
  844. package/src/responsive-item/ResponsiveItem.tsx +96 -0
  845. package/src/responsive-item/ResponsiveItemOverlay.tsx +6 -48
  846. package/src/responsive-item/responsiveItemOverlayStyles.ts +46 -0
  847. package/src/responsive-item/responsiveItemStyles.ts +81 -0
  848. package/src/scroll/useScrollLock.ts +6 -0
  849. package/src/searching/utils.ts +3 -3
  850. package/src/segmented-button/SegmentedButton.tsx +5 -1
  851. package/src/segmented-button/SegmentedButtonContainer.tsx +0 -2
  852. package/src/sheet/Sheet.tsx +36 -33
  853. package/src/sheet/styles.ts +50 -0
  854. package/src/snackbar/ToastManager.tsx +16 -5
  855. package/src/snackbar/useCurrentToastActions.ts +5 -5
  856. package/src/suspense/CircularProgressSuspense.tsx +0 -2
  857. package/src/suspense/NullSuspense.tsx +0 -2
  858. package/src/table/TableCellContent.tsx +0 -3
  859. package/src/table/tableCellStyles.ts +10 -6
  860. package/src/tabs/Tab.tsx +7 -1
  861. package/src/tabs/TabList.tsx +2 -2
  862. package/src/tabs/TabListScrollButton.tsx +13 -6
  863. package/src/tabs/getTabListScrollToOptions.ts +37 -0
  864. package/src/tabs/tabListScrollButtonStyles.ts +9 -5
  865. package/src/tabs/tabStyles.ts +4 -0
  866. package/src/tabs/useTabList.ts +6 -9
  867. package/src/tabs/useTabs.ts +67 -20
  868. package/src/tabs/utils.ts +0 -38
  869. package/src/test-utils/IntersectionObserver.ts +1 -1
  870. package/src/test-utils/matchMedia.ts +5 -5
  871. package/src/test-utils/polyfills/TextDecoder.ts +0 -1
  872. package/src/test-utils/timers.ts +10 -7
  873. package/src/theme/LocalStorageColorSchemeProvider.tsx +4 -4
  874. package/src/theme/ThemeProvider.tsx +3 -3
  875. package/src/theme/isColorScheme.ts +22 -0
  876. package/src/theme/types.ts +67 -1
  877. package/src/theme/useCSSVariables.ts +7 -30
  878. package/src/theme/useColorScheme.ts +1 -40
  879. package/src/theme/useColorSchemeMetaTag.ts +1 -1
  880. package/src/theme/useColorSchemeProvider.ts +2 -2
  881. package/src/tooltip/useTooltip.ts +17 -9
  882. package/src/transition/SlideContainer.tsx +2 -48
  883. package/src/transition/types.ts +1 -1
  884. package/src/transition/useCarousel.ts +3 -3
  885. package/src/transition/useTransition.ts +1 -0
  886. package/src/tree/DefaultTreeItemRenderer.tsx +3 -4
  887. package/src/tree/Tree.tsx +4 -6
  888. package/src/tree/TreeItem.tsx +18 -5
  889. package/src/tree/TreeItemExpander.tsx +1 -1
  890. package/src/tree/types.ts +16 -6
  891. package/src/tree/useTree.ts +3 -3
  892. package/src/tree/useTreeExpansion.ts +10 -28
  893. package/src/tree/useTreeSelection.ts +11 -35
  894. package/src/tree/utils.ts +6 -2
  895. package/src/types.ts +20 -4
  896. package/src/typography/SrOnly.tsx +2 -1
  897. package/src/typography/TextContainer.tsx +0 -2
  898. package/src/typography/Typography.tsx +0 -2
  899. package/src/typography/WritingDirectionProvider.tsx +3 -3
  900. package/src/useDebouncedFunction.ts +4 -9
  901. package/src/useDropzone.ts +4 -4
  902. package/src/useIntersectionObserver.ts +5 -5
  903. package/src/useLocalStorage.ts +6 -6
  904. package/src/useMutationObserver.ts +1 -1
  905. package/src/useOrientation.ts +3 -1
  906. package/src/usePageInactive.ts +2 -2
  907. package/src/useReadonlySet.ts +122 -0
  908. package/src/useResizeListener.ts +8 -2
  909. package/src/useResizeObserver.ts +3 -3
  910. package/src/useThrottledFunction.ts +6 -9
  911. package/src/useToggle.ts +7 -7
  912. package/src/utils/RenderRecursively.tsx +1 -1
  913. package/src/utils/alphaNumericSort.ts +1 -1
  914. package/src/utils/debounce.ts +22 -0
  915. package/src/utils/throttle.ts +38 -0
  916. package/src/utils/wait.ts +5 -1
  917. package/src/window-splitter/WindowSplitter.tsx +40 -45
  918. package/src/window-splitter/styles.ts +42 -0
  919. package/.eslintrc.cjs +0 -34
  920. package/.stylelintrc.json +0 -14
  921. package/.swcrc +0 -17
  922. package/.turbo/turbo-build.log +0 -22
  923. package/.turbo/turbo-lint.log +0 -12
  924. package/.turbo/turbo-test.log +0 -5516
  925. package/.turbo/turbo-typecheck.log +0 -4
  926. package/CHANGELOG.md +0 -323
  927. package/coverage/clover.xml +0 -842
  928. package/coverage/coverage-final.json +0 -6
  929. package/coverage/lcov-report/autocomplete/Autocomplete.tsx.html +0 -1033
  930. package/coverage/lcov-report/autocomplete/AutocompleteClearButton.tsx.html +0 -262
  931. package/coverage/lcov-report/autocomplete/FilterAutocompleteOptions.tsx.html +0 -364
  932. package/coverage/lcov-report/autocomplete/index.html +0 -146
  933. package/coverage/lcov-report/base.css +0 -224
  934. package/coverage/lcov-report/block-navigation.js +0 -87
  935. package/coverage/lcov-report/button/Button.tsx.html +0 -676
  936. package/coverage/lcov-report/button/index.html +0 -116
  937. package/coverage/lcov-report/card/Card.tsx.html +0 -349
  938. package/coverage/lcov-report/card/CardSubtitle.tsx.html +0 -265
  939. package/coverage/lcov-report/card/index.html +0 -146
  940. package/coverage/lcov-report/card/styles.ts.html +0 -682
  941. package/coverage/lcov-report/createHorizontalPosition.ts.html +0 -1075
  942. package/coverage/lcov-report/createVerticalPosition.ts.html +0 -997
  943. package/coverage/lcov-report/favicon.png +0 -0
  944. package/coverage/lcov-report/form/Option.tsx.html +0 -727
  945. package/coverage/lcov-report/form/index.html +0 -131
  946. package/coverage/lcov-report/form/useListboxProvider.ts.html +0 -253
  947. package/coverage/lcov-report/index.html +0 -146
  948. package/coverage/lcov-report/prettify.css +0 -1
  949. package/coverage/lcov-report/prettify.js +0 -2
  950. package/coverage/lcov-report/searching/fuzzy.ts.html +0 -607
  951. package/coverage/lcov-report/searching/index.html +0 -116
  952. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  953. package/coverage/lcov-report/sorter.js +0 -196
  954. package/coverage/lcov-report/src/card/Card.tsx.html +0 -349
  955. package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +0 -277
  956. package/coverage/lcov-report/src/card/index.html +0 -146
  957. package/coverage/lcov-report/src/card/styles.ts.html +0 -682
  958. package/coverage/lcov-report/src/cssUtils.ts.html +0 -787
  959. package/coverage/lcov-report/src/index.html +0 -116
  960. package/coverage/lcov-report/src/transition/index.html +0 -116
  961. package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +0 -766
  962. package/coverage/lcov-report/transition/index.html +0 -116
  963. package/coverage/lcov-report/transition/useCSSTransition.ts.html +0 -766
  964. package/coverage/lcov-report/typography/SrOnly.tsx.html +0 -325
  965. package/coverage/lcov-report/typography/index.html +0 -116
  966. package/coverage/lcov-report/utils.ts.html +0 -1225
  967. package/coverage/lcov.info +0 -952
  968. package/dist/autocomplete/FilterAutocompleteOptions.d.ts +0 -8
  969. package/dist/autocomplete/FilterAutocompleteOptions.js +0 -57
  970. package/dist/autocomplete/FilterAutocompleteOptions.js.map +0 -1
  971. package/dist/dialog/DialogContainer.d.ts +0 -16
  972. package/dist/dialog/DialogContainer.js +0 -22
  973. package/dist/dialog/DialogContainer.js.map +0 -1
  974. package/dist/form/FileInput.js.map +0 -1
  975. package/dist/form/fileUtils.js.map +0 -1
  976. package/dist/form/useFileUpload.js.map +0 -1
  977. package/dist/form/useListboxProvider.d.ts +0 -31
  978. package/dist/form/useListboxProvider.js.map +0 -1
  979. package/dist/navigation/getHrefFromParents.d.ts +0 -5
  980. package/dist/navigation/getHrefFromParents.js +0 -13
  981. package/dist/navigation/getHrefFromParents.js.map +0 -1
  982. package/dist/responsive-item/ResponsiveItemContainer.d.ts +0 -117
  983. package/dist/responsive-item/ResponsiveItemContainer.js +0 -82
  984. package/dist/responsive-item/ResponsiveItemContainer.js.map +0 -1
  985. package/dist/responsive-item/styles.d.ts +0 -34
  986. package/dist/responsive-item/styles.js +0 -17
  987. package/dist/responsive-item/styles.js.map +0 -1
  988. package/dist/theme/usePrefersColorScheme.js.map +0 -1
  989. package/jest.config.ts +0 -68
  990. package/jest.setup.ts +0 -3
  991. package/scripts/copySassFiles.ts +0 -70
  992. package/scripts/getExportMap.ts +0 -66
  993. package/scripts/tsconfig.json +0 -18
  994. package/src/__tests__/NoSsr.node.tsx +0 -26
  995. package/src/__tests__/NoSsr.tsx +0 -89
  996. package/src/__tests__/RootHtml.node.tsx +0 -46
  997. package/src/__tests__/__snapshots__/RootHtml.node.tsx.snap +0 -19
  998. package/src/__tests__/useAsyncFunction.tsx +0 -124
  999. package/src/__tests__/useDebouncedFunction.tsx +0 -108
  1000. package/src/__tests__/useDropzone.tsx +0 -131
  1001. package/src/__tests__/useElementSize.tsx +0 -181
  1002. package/src/__tests__/useEnsuredId.tsx +0 -25
  1003. package/src/__tests__/useEnsuredState.tsx +0 -74
  1004. package/src/__tests__/useHtmlClassName.tsx +0 -54
  1005. package/src/__tests__/useLocalStorage.tsx +0 -377
  1006. package/src/__tests__/useOrientation.node.tsx +0 -20
  1007. package/src/__tests__/useOrientation.tsx +0 -63
  1008. package/src/__tests__/useResizeObserver.tsx +0 -258
  1009. package/src/__tests__/useThrottledFunction.tsx +0 -226
  1010. package/src/__tests__/useToggle.tsx +0 -78
  1011. package/src/__tests__/useWindowSize.node.tsx +0 -56
  1012. package/src/__tests__/useWindowSize.tsx +0 -155
  1013. package/src/_box-shadows.scss +0 -219
  1014. package/src/_core.scss +0 -432
  1015. package/src/_utils.scss +0 -348
  1016. package/src/app-bar/__tests__/AppBar.tsx +0 -121
  1017. package/src/app-bar/__tests__/AppBarTitle.tsx +0 -39
  1018. package/src/app-bar/__tests__/__snapshots__/AppBar.tsx.snap +0 -186
  1019. package/src/app-bar/__tests__/__snapshots__/AppBarTitle.tsx.snap +0 -47
  1020. package/src/app-bar/_app-bar.scss +0 -248
  1021. package/src/autocomplete/FilterAutocompleteOptions.tsx +0 -86
  1022. package/src/autocomplete/__tests__/Autocomplete.tsx +0 -458
  1023. package/src/autocomplete/__tests__/__snapshots__/Autocomplete.tsx.snap +0 -144
  1024. package/src/autocomplete/_autocomplete.scss +0 -75
  1025. package/src/avatar/__tests__/Avatar.tsx +0 -75
  1026. package/src/avatar/__tests__/__snapshots__/Avatar.tsx.snap +0 -73
  1027. package/src/avatar/_avatar.scss +0 -157
  1028. package/src/badge/__tests__/Badge.tsx +0 -42
  1029. package/src/badge/__tests__/__snapshots__/Badge.tsx.snap +0 -54
  1030. package/src/badge/_badge.scss +0 -145
  1031. package/src/box/__tests__/Box.tsx +0 -158
  1032. package/src/box/__tests__/__snapshots__/Box.tsx.snap +0 -544
  1033. package/src/box/_box.scss +0 -168
  1034. package/src/button/__tests__/AsyncButton.tsx +0 -211
  1035. package/src/button/__tests__/Button.tsx +0 -198
  1036. package/src/button/__tests__/ButtonUnstyled.tsx +0 -37
  1037. package/src/button/__tests__/TooltippedButton.tsx +0 -60
  1038. package/src/button/__tests__/__snapshots__/AsyncButton.tsx.snap +0 -418
  1039. package/src/button/__tests__/__snapshots__/Button.tsx.snap +0 -573
  1040. package/src/button/__tests__/__snapshots__/ButtonUnstyled.tsx.snap +0 -22
  1041. package/src/button/__tests__/__snapshots__/TooltippedButton.tsx.snap +0 -26
  1042. package/src/button/__tests__/__snapshots__/buttonStyles.ts.snap +0 -11
  1043. package/src/button/__tests__/buttonStyles.ts +0 -15
  1044. package/src/button/_button.scss +0 -330
  1045. package/src/card/__tests__/Card.tsx +0 -37
  1046. package/src/card/__tests__/CardContent.tsx +0 -40
  1047. package/src/card/__tests__/CardFooter.tsx +0 -34
  1048. package/src/card/__tests__/CardHeader.tsx +0 -66
  1049. package/src/card/__tests__/CardSubtitle.tsx +0 -30
  1050. package/src/card/__tests__/CardTitle.tsx +0 -30
  1051. package/src/card/__tests__/ClickableCard.tsx +0 -66
  1052. package/src/card/__tests__/__snapshots__/Card.tsx.snap +0 -40
  1053. package/src/card/__tests__/__snapshots__/CardContent.tsx.snap +0 -50
  1054. package/src/card/__tests__/__snapshots__/CardFooter.tsx.snap +0 -30
  1055. package/src/card/__tests__/__snapshots__/CardHeader.tsx.snap +0 -74
  1056. package/src/card/__tests__/__snapshots__/CardSubtitle.tsx.snap +0 -18
  1057. package/src/card/__tests__/__snapshots__/CardTitle.tsx.snap +0 -18
  1058. package/src/card/__tests__/__snapshots__/ClickableCard.tsx.snap +0 -20
  1059. package/src/card/__tests__/__snapshots__/styles.ts.snap +0 -13
  1060. package/src/card/__tests__/styles.ts +0 -45
  1061. package/src/card/_card.scss +0 -189
  1062. package/src/chip/__tests__/Chip.tsx +0 -327
  1063. package/src/chip/__tests__/__snapshots__/Chip.tsx.snap +0 -597
  1064. package/src/chip/__tests__/__snapshots__/styles.ts.snap +0 -5
  1065. package/src/chip/__tests__/styles.ts +0 -14
  1066. package/src/chip/_chip.scss +0 -324
  1067. package/src/dialog/DialogContainer.tsx +0 -30
  1068. package/src/dialog/__tests__/Dialog.tsx +0 -316
  1069. package/src/dialog/__tests__/DialogContent.tsx +0 -53
  1070. package/src/dialog/__tests__/DialogFooter.tsx +0 -70
  1071. package/src/dialog/__tests__/DialogHeader.tsx +0 -37
  1072. package/src/dialog/__tests__/DialogTitle.tsx +0 -41
  1073. package/src/dialog/__tests__/__snapshots__/Dialog.tsx.snap +0 -84
  1074. package/src/dialog/__tests__/__snapshots__/DialogContent.tsx.snap +0 -36
  1075. package/src/dialog/__tests__/__snapshots__/DialogFooter.tsx.snap +0 -186
  1076. package/src/dialog/__tests__/__snapshots__/DialogHeader.tsx.snap +0 -18
  1077. package/src/dialog/__tests__/__snapshots__/DialogTitle.tsx.snap +0 -26
  1078. package/src/dialog/_dialog.scss +0 -273
  1079. package/src/divider/__tests__/Divider.tsx +0 -36
  1080. package/src/divider/__tests__/__snapshots__/Divider.tsx.snap +0 -26
  1081. package/src/divider/_divider.scss +0 -124
  1082. package/src/draggable/__tests__/__snapshots__/useDraggable.tsx.snap +0 -49
  1083. package/src/draggable/__tests__/useDraggable.tsx +0 -540
  1084. package/src/draggable/_draggable.scss +0 -29
  1085. package/src/expansion-panel/__tests__/ExpansionPanel.tsx +0 -290
  1086. package/src/expansion-panel/__tests__/__snapshots__/ExpansionPanel.tsx.snap +0 -197
  1087. package/src/expansion-panel/_expansion-panel.scss +0 -107
  1088. package/src/focus/__tests__/useFocusContainer.tsx +0 -280
  1089. package/src/form/__tests__/Checkbox.tsx +0 -42
  1090. package/src/form/__tests__/Fieldset.tsx +0 -44
  1091. package/src/form/__tests__/FileInput.tsx +0 -120
  1092. package/src/form/__tests__/Label.tsx +0 -69
  1093. package/src/form/__tests__/Legend.tsx +0 -34
  1094. package/src/form/__tests__/MenuItemCheckbox.tsx +0 -53
  1095. package/src/form/__tests__/MenuItemRadio.tsx +0 -53
  1096. package/src/form/__tests__/Radio.tsx +0 -35
  1097. package/src/form/__tests__/Select.tsx +0 -439
  1098. package/src/form/__tests__/Switch.tsx +0 -152
  1099. package/src/form/__tests__/TextArea.tsx +0 -433
  1100. package/src/form/__tests__/TextField.tsx +0 -195
  1101. package/src/form/__tests__/__snapshots__/Checkbox.tsx.snap +0 -99
  1102. package/src/form/__tests__/__snapshots__/Fieldset.tsx.snap +0 -58
  1103. package/src/form/__tests__/__snapshots__/FileInput.tsx.snap +0 -612
  1104. package/src/form/__tests__/__snapshots__/Label.tsx.snap +0 -140
  1105. package/src/form/__tests__/__snapshots__/Legend.tsx.snap +0 -30
  1106. package/src/form/__tests__/__snapshots__/MenuItemCheckbox.tsx.snap +0 -96
  1107. package/src/form/__tests__/__snapshots__/MenuItemRadio.tsx.snap +0 -96
  1108. package/src/form/__tests__/__snapshots__/Radio.tsx.snap +0 -99
  1109. package/src/form/__tests__/__snapshots__/Select.tsx.snap +0 -492
  1110. package/src/form/__tests__/__snapshots__/Switch.tsx.snap +0 -428
  1111. package/src/form/__tests__/__snapshots__/TextArea.tsx.snap +0 -548
  1112. package/src/form/__tests__/__snapshots__/TextField.tsx.snap +0 -279
  1113. package/src/form/__tests__/__snapshots__/useCheckboxGroup.tsx.snap +0 -481
  1114. package/src/form/__tests__/__snapshots__/useRadioGroup.tsx.snap +0 -704
  1115. package/src/form/__tests__/useCheckboxGroup.tsx +0 -292
  1116. package/src/form/__tests__/useFileUpload.tsx +0 -289
  1117. package/src/form/__tests__/useFormReset.tsx +0 -194
  1118. package/src/form/__tests__/useRadioGroup.tsx +0 -227
  1119. package/src/form/__tests__/utils.ts +0 -247
  1120. package/src/form/_form.scss +0 -2190
  1121. package/src/form/useListboxProvider.ts +0 -45
  1122. package/src/icon/__tests__/FontIcon.tsx +0 -45
  1123. package/src/icon/__tests__/IconRotator.tsx +0 -120
  1124. package/src/icon/__tests__/MaterialIcon.tsx +0 -79
  1125. package/src/icon/__tests__/MaterialSymbol.tsx +0 -100
  1126. package/src/icon/__tests__/SVGIcon.tsx +0 -40
  1127. package/src/icon/__tests__/TextIconSpacing.tsx +0 -108
  1128. package/src/icon/__tests__/__snapshots__/FontIcon.tsx.snap +0 -35
  1129. package/src/icon/__tests__/__snapshots__/IconRotator.tsx.snap +0 -165
  1130. package/src/icon/__tests__/__snapshots__/MaterialIcon.tsx.snap +0 -82
  1131. package/src/icon/__tests__/__snapshots__/MaterialSymbol.tsx.snap +0 -42
  1132. package/src/icon/__tests__/__snapshots__/SVGIcon.tsx.snap +0 -47
  1133. package/src/icon/__tests__/__snapshots__/TextIconSpacing.tsx.snap +0 -101
  1134. package/src/icon/__tests__/__snapshots__/styles.ts.snap +0 -29
  1135. package/src/icon/__tests__/styles.ts +0 -28
  1136. package/src/icon/_icon.scss +0 -213
  1137. package/src/interaction/__tests__/UserInteractionModeProvider.tsx +0 -121
  1138. package/src/interaction/__tests__/__snapshots__/useHigherContrastChildren.tsx.snap +0 -79
  1139. package/src/interaction/__tests__/useHigherContrastChildren.tsx +0 -97
  1140. package/src/interaction/_interaction.scss +0 -436
  1141. package/src/layout/__tests__/LayoutAppBar.tsx +0 -117
  1142. package/src/layout/__tests__/LayoutNav.tsx +0 -78
  1143. package/src/layout/__tests__/LayoutWindowSplitter.tsx +0 -63
  1144. package/src/layout/__tests__/Main.tsx +0 -51
  1145. package/src/layout/__tests__/__snapshots__/LayoutAppBar.tsx.snap +0 -78
  1146. package/src/layout/__tests__/__snapshots__/LayoutNav.tsx.snap +0 -31
  1147. package/src/layout/__tests__/__snapshots__/LayoutWindowSplitter.tsx.snap +0 -60
  1148. package/src/layout/__tests__/__snapshots__/Main.tsx.snap +0 -32
  1149. package/src/layout/__tests__/__snapshots__/useExpandableLayout.tsx.snap +0 -116
  1150. package/src/layout/__tests__/__snapshots__/useLayoutTree.tsx.snap +0 -676
  1151. package/src/layout/__tests__/__snapshots__/useResizableLayout.tsx.snap +0 -95
  1152. package/src/layout/__tests__/__snapshots__/useTemporaryLayout.tsx.snap +0 -141
  1153. package/src/layout/__tests__/useExpandableLayout.tsx +0 -279
  1154. package/src/layout/__tests__/useLayoutTree.tsx +0 -212
  1155. package/src/layout/__tests__/useResizableLayout.tsx +0 -170
  1156. package/src/layout/__tests__/useTemporaryLayout.tsx +0 -109
  1157. package/src/layout/_layout.scss +0 -163
  1158. package/src/link/__tests__/Link.tsx +0 -31
  1159. package/src/link/__tests__/SkipToMainContent.tsx +0 -125
  1160. package/src/link/__tests__/__snapshots__/Link.tsx.snap +0 -20
  1161. package/src/link/__tests__/__snapshots__/SkipToMainContent.tsx.snap +0 -22
  1162. package/src/link/_link.scss +0 -149
  1163. package/src/list/__tests__/List.tsx +0 -58
  1164. package/src/list/__tests__/ListItem.tsx +0 -280
  1165. package/src/list/__tests__/ListItemLink.tsx +0 -89
  1166. package/src/list/__tests__/ListSubheader.tsx +0 -81
  1167. package/src/list/__tests__/__snapshots__/List.tsx.snap +0 -41
  1168. package/src/list/__tests__/__snapshots__/ListItem.tsx.snap +0 -414
  1169. package/src/list/__tests__/__snapshots__/ListItemLink.tsx.snap +0 -73
  1170. package/src/list/__tests__/__snapshots__/ListSubheader.tsx.snap +0 -99
  1171. package/src/list/__tests__/getListItemHeight.ts +0 -176
  1172. package/src/list/_list.scss +0 -322
  1173. package/src/media-queries/__tests__/AppSizeProvider.node.tsx +0 -37
  1174. package/src/media-queries/__tests__/AppSizeProvider.tsx +0 -119
  1175. package/src/media-queries/__tests__/useMediaQuery.node.tsx +0 -20
  1176. package/src/media-queries/__tests__/useMediaQuery.tsx +0 -59
  1177. package/src/media-queries/_media-queries.scss +0 -63
  1178. package/src/menu/__tests__/DropdownMenu.tsx +0 -627
  1179. package/src/menu/__tests__/MenuBar.tsx +0 -354
  1180. package/src/menu/__tests__/MenuItemCircularProgress.tsx +0 -39
  1181. package/src/menu/__tests__/MenuVisibilityProvider.tsx +0 -34
  1182. package/src/menu/__tests__/__snapshots__/DropdownMenu.tsx.snap +0 -292
  1183. package/src/menu/__tests__/__snapshots__/MenuBar.tsx.snap +0 -87
  1184. package/src/menu/__tests__/__snapshots__/MenuItemCircularProgress.tsx.snap +0 -68
  1185. package/src/menu/__tests__/__snapshots__/useContextMenu.tsx.snap +0 -54
  1186. package/src/menu/__tests__/useContextMenu.tsx +0 -41
  1187. package/src/menu/__tests__/utils.ts +0 -121
  1188. package/src/menu/_menu.scss +0 -116
  1189. package/src/movement/__tests__/findMatchIndex.ts +0 -244
  1190. package/src/movement/__tests__/utils.ts +0 -710
  1191. package/src/navigation/__tests__/Navigation.tsx +0 -97
  1192. package/src/navigation/__tests__/__snapshots__/Navigation.tsx.snap +0 -165
  1193. package/src/navigation/_navigation.scss +0 -99
  1194. package/src/navigation/getHrefFromParents.ts +0 -15
  1195. package/src/overlay/__tests__/Overlay.tsx +0 -198
  1196. package/src/overlay/__tests__/__snapshots__/Overlay.tsx.snap +0 -77
  1197. package/src/overlay/_overlay.scss +0 -74
  1198. package/src/portal/__tests__/PortalContainerProvider.node.tsx +0 -26
  1199. package/src/portal/__tests__/PortalContainerProvider.tsx +0 -84
  1200. package/src/positioning/__tests__/__snapshots__/useFixedPositioning.tsx.snap +0 -87
  1201. package/src/positioning/__tests__/createHorizontalPosition.ts +0 -777
  1202. package/src/positioning/__tests__/createVerticalPosition.ts +0 -464
  1203. package/src/positioning/__tests__/useFixedPositioning.tsx +0 -205
  1204. package/src/positioning/__tests__/utils.ts +0 -1311
  1205. package/src/progress/__tests__/CircularProgress.tsx +0 -153
  1206. package/src/progress/__tests__/LinearProgress.tsx +0 -131
  1207. package/src/progress/__tests__/__snapshots__/CircularProgress.tsx.snap +0 -499
  1208. package/src/progress/__tests__/__snapshots__/LinearProgress.tsx.snap +0 -321
  1209. package/src/progress/__tests__/getProgressA11y.ts +0 -16
  1210. package/src/progress/_progress.scss +0 -577
  1211. package/src/responsive-item/ResponsiveItemContainer.tsx +0 -176
  1212. package/src/responsive-item/__tests__/ResponsiveItemContainer.tsx +0 -56
  1213. package/src/responsive-item/__tests__/ResponsiveItemOverlay.tsx +0 -66
  1214. package/src/responsive-item/__tests__/__snapshots__/ResponsiveItemContainer.tsx.snap +0 -85
  1215. package/src/responsive-item/__tests__/__snapshots__/ResponsiveItemOverlay.tsx.snap +0 -151
  1216. package/src/responsive-item/__tests__/__snapshots__/styles.ts.snap +0 -9
  1217. package/src/responsive-item/__tests__/styles.ts +0 -32
  1218. package/src/responsive-item/_responsive-item.scss +0 -199
  1219. package/src/responsive-item/styles.ts +0 -58
  1220. package/src/searching/__tests__/caseInsensitive.ts +0 -165
  1221. package/src/searching/__tests__/fuzzy.ts +0 -169
  1222. package/src/searching/__tests__/toSearchQuery.ts +0 -21
  1223. package/src/searching/__tests__/useFuzzyMatch.tsx +0 -200
  1224. package/src/segmented-button/__tests__/SegmentedButton.tsx +0 -61
  1225. package/src/segmented-button/__tests__/SegmentedButtonContainer.tsx +0 -38
  1226. package/src/segmented-button/__tests__/__snapshots__/SegmentedButton.tsx.snap +0 -116
  1227. package/src/segmented-button/__tests__/__snapshots__/SegmentedButtonContainer.tsx.snap +0 -22
  1228. package/src/segmented-button/_segmented-button.scss +0 -208
  1229. package/src/sheet/_sheet.scss +0 -189
  1230. package/src/snackbar/__tests__/Snackbar.tsx +0 -85
  1231. package/src/snackbar/__tests__/Toast.tsx +0 -105
  1232. package/src/snackbar/__tests__/ToastActionButton.tsx +0 -112
  1233. package/src/snackbar/__tests__/ToastCloseButton.tsx +0 -140
  1234. package/src/snackbar/__tests__/ToastContent.tsx +0 -88
  1235. package/src/snackbar/__tests__/ToastManagerProvider.tsx +0 -852
  1236. package/src/snackbar/__tests__/__snapshots__/Snackbar.tsx.snap +0 -176
  1237. package/src/snackbar/__tests__/__snapshots__/Toast.tsx.snap +0 -52
  1238. package/src/snackbar/__tests__/__snapshots__/ToastActionButton.tsx.snap +0 -36
  1239. package/src/snackbar/__tests__/__snapshots__/ToastCloseButton.tsx.snap +0 -104
  1240. package/src/snackbar/__tests__/__snapshots__/ToastContent.tsx.snap +0 -26
  1241. package/src/snackbar/__tests__/__snapshots__/ToastManagerProvider.tsx.snap +0 -290
  1242. package/src/snackbar/_snackbar.scss +0 -266
  1243. package/src/suspense/__tests__/CircularProgressSuspense.tsx +0 -90
  1244. package/src/suspense/__tests__/NullSuspense.tsx +0 -46
  1245. package/src/suspense/__tests__/__snapshots__/CircularProgressSuspense.tsx.snap +0 -24
  1246. package/src/table/__tests__/Table.tsx +0 -315
  1247. package/src/table/__tests__/TableBody.tsx +0 -52
  1248. package/src/table/__tests__/TableCheckbox.tsx +0 -89
  1249. package/src/table/__tests__/TableContainer.tsx +0 -31
  1250. package/src/table/__tests__/TableRadio.tsx +0 -112
  1251. package/src/table/__tests__/TableRow.tsx +0 -63
  1252. package/src/table/__tests__/__snapshots__/Table.tsx.snap +0 -2426
  1253. package/src/table/__tests__/__snapshots__/TableBody.tsx.snap +0 -54
  1254. package/src/table/__tests__/__snapshots__/TableCheckbox.tsx.snap +0 -142
  1255. package/src/table/__tests__/__snapshots__/TableContainer.tsx.snap +0 -16
  1256. package/src/table/__tests__/__snapshots__/TableRadio.tsx.snap +0 -138
  1257. package/src/table/__tests__/__snapshots__/TableRow.tsx.snap +0 -56
  1258. package/src/table/__tests__/__snapshots__/tableContainerStyles.ts.snap +0 -3
  1259. package/src/table/__tests__/__snapshots__/tableRowStyles.ts.snap +0 -3
  1260. package/src/table/__tests__/__snapshots__/tableStyles.ts.snap +0 -3
  1261. package/src/table/__tests__/tableContainerStyles.ts +0 -8
  1262. package/src/table/__tests__/tableRowStyles.ts +0 -8
  1263. package/src/table/__tests__/tableStyles.ts +0 -8
  1264. package/src/table/_table.scss +0 -447
  1265. package/src/tabs/__tests__/Tab.tsx +0 -51
  1266. package/src/tabs/__tests__/TabList.tsx +0 -640
  1267. package/src/tabs/__tests__/__snapshots__/Tab.tsx.snap +0 -85
  1268. package/src/tabs/__tests__/__snapshots__/TabList.tsx.snap +0 -51
  1269. package/src/tabs/__tests__/useTabs.tsx +0 -212
  1270. package/src/tabs/_tabs.scss +0 -273
  1271. package/src/test-utils/__tests__/ResizeObserver.ts +0 -171
  1272. package/src/theme/__tests__/LocalStorageColorSchemeProvider.tsx +0 -162
  1273. package/src/theme/__tests__/ThemeProvider.tsx +0 -90
  1274. package/src/theme/__tests__/__snapshots__/useCSSVariables.tsx.snap +0 -27
  1275. package/src/theme/__tests__/__snapshots__/useColorSchemeMetaTag.tsx.snap +0 -15
  1276. package/src/theme/__tests__/useCSSVariables.tsx +0 -177
  1277. package/src/theme/__tests__/useColorSchemeMetaTag.tsx +0 -36
  1278. package/src/theme/__tests__/utils.ts +0 -67
  1279. package/src/theme/_a11y.scss +0 -114
  1280. package/src/theme/_colors.scss +0 -1057
  1281. package/src/theme/_theme.scss +0 -520
  1282. package/src/tooltip/__tests__/Tooltip.tsx +0 -501
  1283. package/src/tooltip/__tests__/TooltipHoverModeProvider.tsx +0 -94
  1284. package/src/tooltip/__tests__/__snapshots__/Tooltip.tsx.snap +0 -34
  1285. package/src/tooltip/__tests__/utils.ts +0 -94
  1286. package/src/tooltip/_tooltip.scss +0 -155
  1287. package/src/transition/__tests__/CSSTransition.tsx +0 -182
  1288. package/src/transition/__tests__/Collapse.tsx +0 -209
  1289. package/src/transition/__tests__/CrossFade.tsx +0 -227
  1290. package/src/transition/__tests__/ScaleTransition.tsx +0 -204
  1291. package/src/transition/__tests__/SkeletonPlaceholder.tsx +0 -72
  1292. package/src/transition/__tests__/__snapshots__/CSSTransition.tsx.snap +0 -145
  1293. package/src/transition/__tests__/__snapshots__/Collapse.tsx.snap +0 -224
  1294. package/src/transition/__tests__/__snapshots__/CrossFade.tsx.snap +0 -240
  1295. package/src/transition/__tests__/__snapshots__/ScaleTransition.tsx.snap +0 -239
  1296. package/src/transition/__tests__/__snapshots__/SkeletonPlaceholder.tsx.snap +0 -24
  1297. package/src/transition/__tests__/__snapshots__/useCollapseTransition.tsx.snap +0 -361
  1298. package/src/transition/__tests__/__snapshots__/useCrossFadeTransition.tsx.snap +0 -258
  1299. package/src/transition/__tests__/__snapshots__/useMaxWidthTransition.tsx.snap +0 -68
  1300. package/src/transition/__tests__/__snapshots__/useScaleTransition.tsx.snap +0 -209
  1301. package/src/transition/__tests__/useCSSTransition.tsx +0 -190
  1302. package/src/transition/__tests__/useCollapseTransition.tsx +0 -316
  1303. package/src/transition/__tests__/useCrossFadeTransition.tsx +0 -229
  1304. package/src/transition/__tests__/useMaxWidthTransition.tsx +0 -123
  1305. package/src/transition/__tests__/useScaleTransition.tsx +0 -212
  1306. package/src/transition/__tests__/useTransition.tsx +0 -569
  1307. package/src/transition/__tests__/utils.ts +0 -620
  1308. package/src/transition/_transition.scss +0 -365
  1309. package/src/tree/__tests__/Tree.tsx +0 -735
  1310. package/src/tree/__tests__/TreeGroup.tsx +0 -76
  1311. package/src/tree/__tests__/TreeItemExpander.tsx +0 -74
  1312. package/src/tree/__tests__/__snapshots__/Tree.tsx.snap +0 -3618
  1313. package/src/tree/__tests__/__snapshots__/TreeItemExpander.tsx.snap +0 -11
  1314. package/src/tree/__tests__/utils.ts +0 -98
  1315. package/src/tree/_tree.scss +0 -176
  1316. package/src/typography/__tests__/SrOnly.tsx +0 -43
  1317. package/src/typography/__tests__/TextContainer.tsx +0 -45
  1318. package/src/typography/__tests__/Typography.tsx +0 -87
  1319. package/src/typography/__tests__/WritingDirectionProvider.node.tsx +0 -27
  1320. package/src/typography/__tests__/WritingDirectionProvider.tsx +0 -119
  1321. package/src/typography/__tests__/__snapshots__/SrOnly.tsx.snap +0 -56
  1322. package/src/typography/__tests__/__snapshots__/TextContainer.tsx.snap +0 -29
  1323. package/src/typography/__tests__/__snapshots__/Typography.tsx.snap +0 -112
  1324. package/src/typography/_typography.scss +0 -399
  1325. package/src/utils/__tests__/RenderRecursively.tsx +0 -87
  1326. package/src/utils/__tests__/__snapshots__/RenderRecursively.tsx.snap +0 -80
  1327. package/src/utils/__tests__/applyRef.ts +0 -30
  1328. package/src/utils/__tests__/bem.ts +0 -54
  1329. package/src/utils/__tests__/getMiddleOfRange.ts +0 -12
  1330. package/src/utils/__tests__/getPercentage.ts +0 -104
  1331. package/src/utils/__tests__/getRangeDefaultValue.ts +0 -47
  1332. package/src/utils/__tests__/getRangeSteps.ts +0 -14
  1333. package/src/utils/__tests__/loop.ts +0 -50
  1334. package/src/utils/__tests__/nearest.ts +0 -83
  1335. package/src/utils/__tests__/parseCssLengthUnit.node.ts +0 -28
  1336. package/src/utils/__tests__/parseCssLengthUnit.ts +0 -47
  1337. package/src/utils/__tests__/wait.ts +0 -12
  1338. package/src/utils/__tests__/withinRange.ts +0 -24
  1339. package/src/window-splitter/_window-splitter.scss +0 -143
  1340. package/tsconfig.json +0 -19
  1341. package/tsconfig.types.json +0 -12
  1342. package/tsdoc.json +0 -14
  1343. /package/dist/theme/{usePrefersColorScheme.d.ts → usePrefersDarkScheme.d.ts} +0 -0
  1344. /package/src/theme/{usePrefersColorScheme.ts → usePrefersDarkScheme.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/files/useFileUpload.ts"],"sourcesContent":["\"use client\";\nimport { nanoid } from \"nanoid\";\nimport {\n useCallback,\n useEffect,\n useReducer,\n type ChangeEvent,\n type DragEvent,\n} from \"react\";\nimport {\n getFileParser as defaultGetFileParser,\n type CompletedFileUploadStats,\n type FileReaderResult,\n type FileUploadHandlers,\n type FileUploadStats,\n type GetFileParser,\n type ProcessingFileUploadStats,\n} from \"./utils.js\";\nimport {\n FileAccessError,\n isValidFileName as defaultIsValidFileName,\n validateFiles as defaultValidateFiles,\n type FileValidationError,\n type FileValidationOptions,\n type FilesValidator,\n} from \"./validation.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n *\n * @typeParam CustomError - An optional error type that gets returned from the\n * {@link FilesValidator}.\n * @since 2.9.0\n */\nexport interface FileUploadState<CustomError = never> {\n /**\n * All the files that have been validated and are either:\n * - pending upload\n * - uploading\n * - complete\n *\n * Each key in this object is the {@link BaseFileUploadStats.key} generated\n * once the upload starts pending.\n */\n stats: Readonly<Record<string, Readonly<FileUploadStats>>>;\n\n /**\n * A list of validation errors that have occurred before starting the upload\n * process.\n *\n * @see {@link FileAccessError}\n * @see {@link TooManyFilesError}\n * @see {@link FileValidationError}\n */\n errors: readonly FileValidationError<CustomError>[];\n}\n\n/**\n *\n * @typeParam CustomError - An optional error type that gets returned from the\n * {@link FilesValidator}.\n * @since 2.9.0\n * @internal\n */\nexport interface FileUploadHookState<CustomError = never>\n extends FileUploadState<CustomError> {\n /**\n * All the current readers used for uploading files to the browser.\n *\n * Note: Once an upload has completed, the reader will be removed.\n */\n readers: Readonly<Record<string, FileReader>>;\n}\n\n/**\n *\n * @typeParam E - An optional HTMLElement type that is used for the\n * {@link FileUploadHandlers}.\n * @typeParam CustomError - An optional error type that gets returned from the\n * {@link FilesValidator}.\n * @since 2.9.0\n */\nexport interface FileUploadOptions<E extends HTMLElement, CustomError = never>\n extends FileUploadHandlers<E>,\n FileValidationOptions {\n /**\n * Setting this value to a number greater than `0` will update the browser\n * upload process to queue the uploads in chunks instead of all at once. This\n * can help prevent the browser from freezing if dealing with large files that\n * are being converted to data urls.\n *\n * @defaultValue `-1`\n */\n concurrency?: number;\n\n /** {@inheritDoc FilesValidator} */\n validateFiles?: FilesValidator<CustomError>;\n /** {@inheritDoc GetFileParser} */\n getFileParser?: GetFileParser;\n}\n\n/** @internal */\ntype Action<E = never> =\n | {\n type: \"queue\";\n errors: readonly FileValidationError<E>[];\n files: readonly File[];\n }\n | { type: \"reset\" }\n | { type: \"remove\"; files: readonly string[] }\n | { type: \"start\"; key: string; reader: FileReader }\n | { type: \"progress\"; key: string; progress: number }\n | { type: \"complete\"; key: string; result: FileReaderResult }\n | { type: \"clearErrors\" };\n\n/** @since 2.9.0 */\nexport interface FileUploadActions {\n /**\n * Reset everything related to uploads ensuring that all file readers have\n * been aborted.\n */\n reset: () => void;\n\n /**\n * Removes all the errors that exist in state without canceling any of the\n * uploads already in progress.\n */\n clearErrors: () => void;\n\n /**\n * This function is used to cancel pending and uploading files or removing\n * completed files.\n *\n * @param keyOrKeys - A single or list of {@link BaseFileUploadStats.key} to\n * remove from state.\n */\n remove: (keyOrKeys: string | readonly string[]) => void;\n}\n\n/**\n *\n * @typeParam E - An optional HTMLElement type that is used for the\n * {@link FileUploadHandlers}.\n * @typeParam CustomError - An optional error type that gets returned from the\n * {@link FilesValidator}.\n * @since 2.9.0\n */\nexport interface FileUploadHookReturnValue<\n E extends HTMLElement = HTMLElement,\n CustomError = never,\n> extends FileUploadActions,\n Required<FileUploadHandlers<E>> {\n /** {@inheritDoc FileUploadState.errors} */\n errors: readonly FileValidationError<CustomError>[];\n\n /**\n * A list of all the {@link FileUploadStats}.\n *\n * @see {@link getSplitFileUploads} for separating by status\n */\n stats: readonly Readonly<FileUploadStats>[];\n\n /**\n * The total number of bytes for all the files that exist in the\n * {@link stats} list.\n */\n totalBytes: number;\n\n /**\n * The total number of files in the {@link stats} list.\n */\n totalFiles: number;\n\n /**\n * An `accept` string that can be passed to the {@link FileInput} component\n * when the {@link FileValidationOptions.extensions} list has been provided to\n * limit which files the OS will _attempt_ to allow access to.\n *\n * @example Simple example\n * ```ts\n * const extensions = ['pdf', 'docx', 'ppt'];\n * const { accept } = useFileUpload({ extensions, ...others });\n *\n * expect(accept).toBe(\"*.pdf,*.docx,*.ppt\")\n * ```\n *\n * @defaultValue `\"*\"`\n */\n accept: string;\n}\n\n/** @internal */\nconst EMPTY_LIST = [] as const;\n/** @internal */\nconst EMPTY_OBJECT = {} as const;\n\n/**\n * This hook is generally used to upload files **to the browser** in different\n * formats to be previewed `<img>`, `<video>`, `<embed>`, etc tags. However, it\n * can also be used to upload the files as an `ArrayBuffer` and then uploaded to\n * a server.\n *\n * @typeParam E - An optional HTMLElement type that is used for the\n * {@link FileUploadHandlers}.\n * @typeParam CustomError - An optional error type that gets returned from the\n * {@link FilesValidator}.\n * @param options - All the {@link FileUploadOptions}\n * @returns the {@link FileUploadHookReturnValue}\n * @since 2.9.0\n */\nexport function useFileUpload<E extends HTMLElement, CustomError = never>(\n options: FileUploadOptions<E, CustomError> = {}\n): Readonly<FileUploadHookReturnValue<E, CustomError>> {\n const {\n maxFiles = -1,\n extensions = EMPTY_LIST,\n minFileSize = -1,\n maxFileSize = -1,\n totalFileSize = -1,\n concurrency = -1,\n onDrop: propOnDrop = noop,\n onChange: propOnChange = noop,\n validateFiles = defaultValidateFiles,\n getFileParser = defaultGetFileParser,\n isValidFileName = defaultIsValidFileName,\n } = options;\n\n const [state, dispatch] = useReducer(\n function reducer(\n state: FileUploadHookState<CustomError>,\n action: Action<CustomError>\n ): FileUploadHookState<CustomError> {\n switch (action.type) {\n case \"reset\":\n // need to reuse constants so that calling reset doesn't cause an\n // infinite loop in an effect\n return {\n stats: EMPTY_OBJECT,\n errors: EMPTY_LIST,\n readers: EMPTY_OBJECT,\n };\n case \"remove\": {\n const stats: Record<string, FileUploadStats> = {};\n for (const key in state.stats) {\n if (!action.files.includes(key)) {\n stats[key] = state.stats[key];\n }\n }\n\n return {\n ...state,\n stats,\n };\n }\n case \"queue\":\n return {\n ...state,\n stats: {\n ...state.stats,\n ...action.files.reduce<Record<string, ProcessingFileUploadStats>>(\n (files, file) => {\n const key = nanoid();\n files[key] = {\n key,\n file,\n progress: 0,\n status: \"pending\",\n };\n\n return files;\n },\n {}\n ),\n },\n errors: [...state.errors, ...action.errors],\n };\n case \"start\": {\n const { key, reader } = action;\n const fileStats: ProcessingFileUploadStats = {\n key,\n file: state.stats[key].file,\n progress: 0,\n status: \"uploading\",\n };\n\n return {\n ...state,\n readers: {\n ...state.readers,\n [key]: reader,\n },\n stats: {\n ...state.stats,\n [key]: fileStats,\n },\n };\n }\n case \"progress\": {\n const { key, progress } = action;\n return {\n ...state,\n stats: {\n ...state.stats,\n [key]: {\n ...state.stats[key],\n progress,\n },\n },\n };\n }\n case \"complete\": {\n const { key, result } = action;\n const file: CompletedFileUploadStats = {\n key,\n file: state.stats[key].file,\n status: \"complete\",\n result,\n progress: 100,\n };\n const { [key]: _reader, ...readers } = state.readers;\n\n return {\n ...state,\n readers,\n stats: {\n ...state.stats,\n [key]: file,\n },\n };\n }\n case \"clearErrors\":\n return { ...state, errors: [] };\n }\n },\n {\n stats: EMPTY_OBJECT,\n errors: EMPTY_LIST,\n readers: EMPTY_OBJECT,\n }\n );\n const { stats, errors, readers } = state;\n\n const statsList = Object.values(stats);\n const totalFiles = statsList.length;\n const totalBytes = statsList.reduce(\n (result, { file: { size } }) => result + size,\n 0\n );\n const queueFiles = useCallback(\n (files: readonly File[]) => {\n const { pending, errors } = validateFiles(files, {\n maxFiles,\n extensions,\n minFileSize,\n maxFileSize,\n totalBytes,\n totalFiles,\n totalFileSize,\n isValidFileName,\n });\n\n dispatch({ type: \"queue\", errors, files: pending });\n },\n [\n validateFiles,\n maxFiles,\n extensions,\n minFileSize,\n maxFileSize,\n totalBytes,\n totalFiles,\n totalFileSize,\n isValidFileName,\n ]\n );\n const onDrop = useCallback(\n (event: DragEvent<E>) => {\n propOnDrop(event);\n event.preventDefault();\n event.stopPropagation();\n\n try {\n const files = event.dataTransfer.files;\n if (files) {\n queueFiles(Array.from(files));\n }\n } catch (e) {\n dispatch({\n type: \"queue\",\n files: [],\n errors: [\n new FileAccessError(e instanceof Error ? e.message : undefined),\n ],\n });\n }\n },\n [queueFiles, propOnDrop]\n );\n const onChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n propOnChange(event);\n try {\n const files = event.currentTarget.files;\n if (files) {\n queueFiles(Array.from(files));\n } else {\n throw new Error();\n }\n } catch (e) {\n dispatch({\n type: \"queue\",\n files: [],\n errors: [\n new FileAccessError(e instanceof Error ? e.message : undefined),\n ],\n });\n }\n },\n [queueFiles, propOnChange]\n );\n\n const remove = useCallback(\n (keyOrKeys: string | readonly string[]) => {\n const files = typeof keyOrKeys === \"string\" ? [keyOrKeys] : keyOrKeys;\n files.forEach((fileKey) => {\n readers[fileKey]?.abort();\n });\n\n dispatch({ type: \"remove\", files });\n },\n [readers]\n );\n const reset = useCallback(() => {\n Object.values(readers).forEach((reader) => {\n reader.abort();\n });\n\n dispatch({ type: \"reset\" });\n }, [readers]);\n const clearErrors = useCallback(() => {\n dispatch({ type: \"clearErrors\" });\n }, []);\n const start = useCallback((key: string, reader: FileReader) => {\n dispatch({ type: \"start\", key, reader });\n }, []);\n const complete = useCallback(\n (key: string, result: FileReaderResult = null) => {\n dispatch({ type: \"complete\", key, result });\n },\n []\n );\n const createProgressEventHandler = useCallback(\n (key: string) => (event: ProgressEvent) => {\n if (event.lengthComputable) {\n const percentage = Math.round((event.loaded * 100) / event.total);\n dispatch({ type: \"progress\", key, progress: percentage });\n }\n },\n []\n );\n\n useEffect(() => {\n const pending: ProcessingFileUploadStats[] = [];\n const uploading: ProcessingFileUploadStats[] = [];\n Object.values(stats).forEach((file) => {\n if (file.status === \"pending\") {\n pending.push(file);\n } else if (file.status === \"uploading\") {\n uploading.push(file);\n }\n });\n\n const lastIndex =\n concurrency === -1\n ? pending.length\n : Math.max(0, concurrency - uploading.length);\n const queue = pending.slice(0, lastIndex);\n if (!queue.length) {\n return;\n }\n\n queue.forEach((stats) => {\n const { key, file } = stats;\n const reader = new FileReader();\n\n // using `addEventListener` instead of directly setting to\n // `reader.progress`/`reader.load` so it's easier to test\n reader.addEventListener(\"progress\", createProgressEventHandler(key));\n reader.addEventListener(\"load\", () => {\n complete(key, reader.result);\n });\n\n start(key, reader);\n const parser = getFileParser(file);\n /* istanbul ignore next */\n if (\n process.env.NODE_ENV !== \"production\" &&\n ![\"readAsText\", \"readAsDataURL\", \"readAsArrayBuffer\"].includes(parser)\n ) {\n throw new Error(\"Invalid file reader parser\");\n }\n\n reader[parser](file);\n });\n }, [\n concurrency,\n stats,\n getFileParser,\n createProgressEventHandler,\n start,\n complete,\n ]);\n\n let accept = \"\";\n if (extensions.length) {\n accept = extensions.reduce((s, ext) => `${s ? `${s},` : \"\"}.${ext}`, \"\");\n }\n\n return {\n stats: statsList,\n errors,\n accept,\n totalBytes,\n totalFiles,\n onDrop,\n onChange,\n reset,\n remove,\n clearErrors,\n };\n}\n"],"names":["nanoid","useCallback","useEffect","useReducer","getFileParser","defaultGetFileParser","FileAccessError","isValidFileName","defaultIsValidFileName","validateFiles","defaultValidateFiles","noop","EMPTY_LIST","EMPTY_OBJECT","useFileUpload","options","maxFiles","extensions","minFileSize","maxFileSize","totalFileSize","concurrency","onDrop","propOnDrop","onChange","propOnChange","state","dispatch","reducer","action","type","stats","errors","readers","key","files","includes","reduce","file","progress","status","reader","fileStats","result","_reader","statsList","Object","values","totalFiles","length","totalBytes","size","queueFiles","pending","event","preventDefault","stopPropagation","dataTransfer","Array","from","e","Error","message","undefined","currentTarget","remove","keyOrKeys","forEach","fileKey","abort","reset","clearErrors","start","complete","createProgressEventHandler","lengthComputable","percentage","Math","round","loaded","total","uploading","push","lastIndex","max","queue","slice","FileReader","addEventListener","parser","process","env","NODE_ENV","accept","s","ext"],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ import { type ChangeEventHandler, type DragEventHandler } from "react";
2
+ /** @since 2.9.0 */
3
+ export interface BaseFileUploadStats {
4
+ /**
5
+ * A unique key associated with each upload generated by `nanoid`.
6
+ */
7
+ key: string;
8
+ /**
9
+ * The file instance that is being uploaded.
10
+ */
11
+ file: File;
12
+ /**
13
+ * The current upload progress as a percentage from 0 - 100 percent.
14
+ */
15
+ progress: number;
16
+ }
17
+ /** @since 2.9.0 */
18
+ export interface ProcessingFileUploadStats extends BaseFileUploadStats {
19
+ status: "pending" | "uploading";
20
+ }
21
+ /** @since 2.9.0 */
22
+ export type FileReaderResult = FileReader["result"];
23
+ /** @since 2.9.0 */
24
+ export interface CompletedFileUploadStats extends BaseFileUploadStats {
25
+ status: "complete";
26
+ /**
27
+ * The result after a `FileReader` has read a file completely.
28
+ *
29
+ * Note: This _should_ be an `ArrayBuffer` if the next step is to upload to a
30
+ * server.
31
+ *
32
+ * @see {@link FileReaderParser}
33
+ * @see {@link getFileParser}
34
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/FileReader | FileReader}
35
+ */
36
+ result: FileReaderResult;
37
+ }
38
+ /** @since 2.9.0 */
39
+ export type FileUploadStats = ProcessingFileUploadStats | CompletedFileUploadStats;
40
+ /** @since 2.9.0 */
41
+ export type FileUploadStatus = FileUploadStats["status"];
42
+ /** @since 2.9.0 */
43
+ export interface FileUploadHandlers<E extends HTMLElement> {
44
+ onDrop?: DragEventHandler<E>;
45
+ onChange?: ChangeEventHandler<HTMLInputElement>;
46
+ }
47
+ /**
48
+ * This will first check if the mime-type of the file starts with `text/` and
49
+ * fallback to checking a few file names or extensions that should be considered
50
+ * text.
51
+ *
52
+ * This function is not guaranteed to be 100% correct and is only useful if
53
+ * trying to generate a preview of files uploaded to the browser.
54
+ *
55
+ * @param file - The file to check
56
+ * @returns `true` if the file should be considered as a text-content file.
57
+ * @since 2.9.0
58
+ */
59
+ export declare function isTextFile(file: File): boolean;
60
+ /**
61
+ * This will first check if the mime-type of the file starts with `text\/` and
62
+ * fallback to checking a few file names or extensions that should be considered
63
+ * text.
64
+ *
65
+ * This function is not guaranteed to be 100% correct and is only useful if
66
+ * trying to generate a preview of files uploaded to the browser.
67
+ *
68
+ * @param file - The file to check
69
+ * @returns `true` if the file should be considered as a text content file.
70
+ * @since 2.9.0
71
+ */
72
+ export declare function isImageFile(file: File): boolean;
73
+ /**
74
+ * This will first check if the mime-type of the file starts with `audio/` and
75
+ * fallback to checking a few file names or extensions that should be considered
76
+ * audio.
77
+ *
78
+ * This function is not guaranteed to be 100% correct and is only useful if
79
+ * trying to generate a preview of files uploaded to the browser.
80
+ *
81
+ * @param file - The file to check
82
+ * @returns `true` if the file should be considered as a audio content file.
83
+ * @since 2.9.0
84
+ */
85
+ export declare function isAudioFile(file: File): boolean;
86
+ /**
87
+ * This will first check if the mime-type of the file starts with `video/` and
88
+ * fallback to checking a few file names or extensions that should be considered
89
+ * video.
90
+ *
91
+ * This function is not guaranteed to be 100% correct and is only useful if
92
+ * trying to generate a preview of files uploaded to the browser.
93
+ *
94
+ * @param file - The file to check
95
+ * @returns `true` if the file should be considered as a video content file.
96
+ * @since 2.9.0
97
+ */
98
+ export declare function isVideoFile(file: File): boolean;
99
+ /**
100
+ * This function is not guaranteed to be 100% correct and is only useful if
101
+ * trying to generate a preview of files uploaded to the browser.
102
+ *
103
+ * @param file - The file to check
104
+ * @returns `true` if the file matches an image, audio, or video file.
105
+ * @since 2.9.0
106
+ */
107
+ export declare function isMediaFile(file: File): boolean;
108
+ /**
109
+ * One of the function names from a `FileReader` to upload a file to the
110
+ * client.
111
+ *
112
+ * Note: If this file does not need to be previewed in the browser and will
113
+ * immediately be uploaded to a server, use `readAsArrayBuffer`.
114
+ *
115
+ * @since 2.9.0
116
+ * @since 6.0.0 Removed `"readAsBinaryString` since it is deprecated
117
+ * {@see https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsBinaryString}
118
+ */
119
+ export type FileReaderParser = "readAsText" | "readAsDataURL" | "readAsArrayBuffer";
120
+ /**
121
+ * A function that should return one of the {@link FileReaderParser} functions
122
+ * to start uploading a file to the browser.
123
+ *
124
+ * @example The Default File Upload Parser
125
+ * ```ts
126
+ * export const getFileParser: GetFileParser = (file) => {
127
+ * if (isMediaFile(file)) {
128
+ * return "readAsDataURL";
129
+ * }
130
+ *
131
+ * if (isTextFile(file)) {
132
+ * return "readAsText";
133
+ * }
134
+ *
135
+ * return "readAsArrayBuffer";
136
+ * };
137
+ * ```
138
+ *
139
+ * @param file - The file to get a parser for
140
+ * @returns the {@link FileReaderParser} string.
141
+ * @since 2.9.0
142
+ */
143
+ export type GetFileParser = (file: File) => FileReaderParser;
144
+ /**
145
+ * This function will attempt to read:
146
+ * - media (image, audio, and video) files as a data url so they can be
147
+ * previewed in `<img>`, `<audio>`, and `<video>` tags
148
+ * - text files as plain text
149
+ * - everything else as an `ArrayBuffer` which can be manually converted into a
150
+ * data url if needed with `URL.createObjectURL`
151
+ *
152
+ * @since 2.9.0
153
+ */
154
+ export declare const getFileParser: GetFileParser;
155
+ /** @since 2.9.0 */
156
+ export interface SplitFileUploads {
157
+ readonly pending: readonly ProcessingFileUploadStats[];
158
+ readonly uploading: readonly ProcessingFileUploadStats[];
159
+ readonly complete: readonly CompletedFileUploadStats[];
160
+ }
161
+ /**
162
+ * This util will split all the current upload stats by status.
163
+ *
164
+ * @param stats - The {@link FileUploadStats} list generally returned by the
165
+ * {@link useFileUpload} hook.
166
+ * @returns the {@link SplitFileUploads}.
167
+ * @since 2.9.0
168
+ */
169
+ export declare function getSplitFileUploads(stats: readonly FileUploadStats[]): SplitFileUploads;
@@ -0,0 +1,114 @@
1
+ /**
2
+ * This will first check if the mime-type of the file starts with `text/` and
3
+ * fallback to checking a few file names or extensions that should be considered
4
+ * text.
5
+ *
6
+ * This function is not guaranteed to be 100% correct and is only useful if
7
+ * trying to generate a preview of files uploaded to the browser.
8
+ *
9
+ * @param file - The file to check
10
+ * @returns `true` if the file should be considered as a text-content file.
11
+ * @since 2.9.0
12
+ */ export function isTextFile(file) {
13
+ return /\.((j|t)sx?|json|lock|hbs|ya?ml|log|txt|md)$/i.test(file.name);
14
+ }
15
+ /**
16
+ * This will first check if the mime-type of the file starts with `text\/` and
17
+ * fallback to checking a few file names or extensions that should be considered
18
+ * text.
19
+ *
20
+ * This function is not guaranteed to be 100% correct and is only useful if
21
+ * trying to generate a preview of files uploaded to the browser.
22
+ *
23
+ * @param file - The file to check
24
+ * @returns `true` if the file should be considered as a text content file.
25
+ * @since 2.9.0
26
+ */ export function isImageFile(file) {
27
+ return /\.(a?png|avif|svg|tiff|gifv?|jpe?g)/i.test(file.name);
28
+ }
29
+ /**
30
+ * This will first check if the mime-type of the file starts with `audio/` and
31
+ * fallback to checking a few file names or extensions that should be considered
32
+ * audio.
33
+ *
34
+ * This function is not guaranteed to be 100% correct and is only useful if
35
+ * trying to generate a preview of files uploaded to the browser.
36
+ *
37
+ * @param file - The file to check
38
+ * @returns `true` if the file should be considered as a audio content file.
39
+ * @since 2.9.0
40
+ */ export function isAudioFile(file) {
41
+ return /\.(mp3|wav|ogg|m4p|flac)$/i.test(file.name);
42
+ }
43
+ /**
44
+ * This will first check if the mime-type of the file starts with `video/` and
45
+ * fallback to checking a few file names or extensions that should be considered
46
+ * video.
47
+ *
48
+ * This function is not guaranteed to be 100% correct and is only useful if
49
+ * trying to generate a preview of files uploaded to the browser.
50
+ *
51
+ * @param file - The file to check
52
+ * @returns `true` if the file should be considered as a video content file.
53
+ * @since 2.9.0
54
+ */ export function isVideoFile(file) {
55
+ return /\.(mkv|mpe?g|mov|avi|flv|webm|mp4)$/i.test(file.name);
56
+ }
57
+ /**
58
+ * This function is not guaranteed to be 100% correct and is only useful if
59
+ * trying to generate a preview of files uploaded to the browser.
60
+ *
61
+ * @param file - The file to check
62
+ * @returns `true` if the file matches an image, audio, or video file.
63
+ * @since 2.9.0
64
+ */ export function isMediaFile(file) {
65
+ return isImageFile(file) || isAudioFile(file) || isVideoFile(file);
66
+ }
67
+ /**
68
+ * This function will attempt to read:
69
+ * - media (image, audio, and video) files as a data url so they can be
70
+ * previewed in `<img>`, `<audio>`, and `<video>` tags
71
+ * - text files as plain text
72
+ * - everything else as an `ArrayBuffer` which can be manually converted into a
73
+ * data url if needed with `URL.createObjectURL`
74
+ *
75
+ * @since 2.9.0
76
+ */ export const getFileParser = (file)=>{
77
+ if (isMediaFile(file)) {
78
+ return "readAsDataURL";
79
+ }
80
+ if (isTextFile(file)) {
81
+ return "readAsText";
82
+ }
83
+ return "readAsArrayBuffer";
84
+ };
85
+ /**
86
+ * This util will split all the current upload stats by status.
87
+ *
88
+ * @param stats - The {@link FileUploadStats} list generally returned by the
89
+ * {@link useFileUpload} hook.
90
+ * @returns the {@link SplitFileUploads}.
91
+ * @since 2.9.0
92
+ */ export function getSplitFileUploads(stats) {
93
+ const pending = [];
94
+ const uploading = [];
95
+ const complete = [];
96
+ stats.forEach((stat)=>{
97
+ if (stat.status === "pending") {
98
+ pending.push(stat);
99
+ } else if (stat.status === "uploading") {
100
+ uploading.push(stat);
101
+ } else if (stat.status === "complete") {
102
+ complete.push(stat);
103
+ } else {
104
+ /* istanbul ignore next */ throw new Error("Invalid upload stat");
105
+ }
106
+ });
107
+ return {
108
+ pending,
109
+ uploading,
110
+ complete
111
+ };
112
+ }
113
+
114
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/files/utils.ts"],"sourcesContent":["import { type ChangeEventHandler, type DragEventHandler } from \"react\";\n\n/** @since 2.9.0 */\nexport interface BaseFileUploadStats {\n /**\n * A unique key associated with each upload generated by `nanoid`.\n */\n key: string;\n\n /**\n * The file instance that is being uploaded.\n */\n file: File;\n\n /**\n * The current upload progress as a percentage from 0 - 100 percent.\n */\n progress: number;\n}\n\n/** @since 2.9.0 */\nexport interface ProcessingFileUploadStats extends BaseFileUploadStats {\n status: \"pending\" | \"uploading\";\n}\n\n/** @since 2.9.0 */\nexport type FileReaderResult = FileReader[\"result\"];\n\n/** @since 2.9.0 */\nexport interface CompletedFileUploadStats extends BaseFileUploadStats {\n status: \"complete\";\n\n /**\n * The result after a `FileReader` has read a file completely.\n *\n * Note: This _should_ be an `ArrayBuffer` if the next step is to upload to a\n * server.\n *\n * @see {@link FileReaderParser}\n * @see {@link getFileParser}\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/FileReader | FileReader}\n */\n result: FileReaderResult;\n}\n\n/** @since 2.9.0 */\nexport type FileUploadStats =\n | ProcessingFileUploadStats\n | CompletedFileUploadStats;\n\n/** @since 2.9.0 */\nexport type FileUploadStatus = FileUploadStats[\"status\"];\n\n/** @since 2.9.0 */\nexport interface FileUploadHandlers<E extends HTMLElement> {\n onDrop?: DragEventHandler<E>;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n}\n\n/**\n * This will first check if the mime-type of the file starts with `text/` and\n * fallback to checking a few file names or extensions that should be considered\n * text.\n *\n * This function is not guaranteed to be 100% correct and is only useful if\n * trying to generate a preview of files uploaded to the browser.\n *\n * @param file - The file to check\n * @returns `true` if the file should be considered as a text-content file.\n * @since 2.9.0\n */\nexport function isTextFile(file: File): boolean {\n return /\\.((j|t)sx?|json|lock|hbs|ya?ml|log|txt|md)$/i.test(file.name);\n}\n\n/**\n * This will first check if the mime-type of the file starts with `text\\/` and\n * fallback to checking a few file names or extensions that should be considered\n * text.\n *\n * This function is not guaranteed to be 100% correct and is only useful if\n * trying to generate a preview of files uploaded to the browser.\n *\n * @param file - The file to check\n * @returns `true` if the file should be considered as a text content file.\n * @since 2.9.0\n */\nexport function isImageFile(file: File): boolean {\n return /\\.(a?png|avif|svg|tiff|gifv?|jpe?g)/i.test(file.name);\n}\n\n/**\n * This will first check if the mime-type of the file starts with `audio/` and\n * fallback to checking a few file names or extensions that should be considered\n * audio.\n *\n * This function is not guaranteed to be 100% correct and is only useful if\n * trying to generate a preview of files uploaded to the browser.\n *\n * @param file - The file to check\n * @returns `true` if the file should be considered as a audio content file.\n * @since 2.9.0\n */\nexport function isAudioFile(file: File): boolean {\n return /\\.(mp3|wav|ogg|m4p|flac)$/i.test(file.name);\n}\n\n/**\n * This will first check if the mime-type of the file starts with `video/` and\n * fallback to checking a few file names or extensions that should be considered\n * video.\n *\n * This function is not guaranteed to be 100% correct and is only useful if\n * trying to generate a preview of files uploaded to the browser.\n *\n * @param file - The file to check\n * @returns `true` if the file should be considered as a video content file.\n * @since 2.9.0\n */\nexport function isVideoFile(file: File): boolean {\n return /\\.(mkv|mpe?g|mov|avi|flv|webm|mp4)$/i.test(file.name);\n}\n\n/**\n * This function is not guaranteed to be 100% correct and is only useful if\n * trying to generate a preview of files uploaded to the browser.\n *\n * @param file - The file to check\n * @returns `true` if the file matches an image, audio, or video file.\n * @since 2.9.0\n */\nexport function isMediaFile(file: File): boolean {\n return isImageFile(file) || isAudioFile(file) || isVideoFile(file);\n}\n\n/**\n * One of the function names from a `FileReader` to upload a file to the\n * client.\n *\n * Note: If this file does not need to be previewed in the browser and will\n * immediately be uploaded to a server, use `readAsArrayBuffer`.\n *\n * @since 2.9.0\n * @since 6.0.0 Removed `\"readAsBinaryString` since it is deprecated\n * {@see https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsBinaryString}\n */\nexport type FileReaderParser =\n | \"readAsText\"\n | \"readAsDataURL\"\n | \"readAsArrayBuffer\";\n\n/**\n * A function that should return one of the {@link FileReaderParser} functions\n * to start uploading a file to the browser.\n *\n * @example The Default File Upload Parser\n * ```ts\n * export const getFileParser: GetFileParser = (file) => {\n * if (isMediaFile(file)) {\n * return \"readAsDataURL\";\n * }\n *\n * if (isTextFile(file)) {\n * return \"readAsText\";\n * }\n *\n * return \"readAsArrayBuffer\";\n * };\n * ```\n *\n * @param file - The file to get a parser for\n * @returns the {@link FileReaderParser} string.\n * @since 2.9.0\n */\nexport type GetFileParser = (file: File) => FileReaderParser;\n\n/**\n * This function will attempt to read:\n * - media (image, audio, and video) files as a data url so they can be\n * previewed in `<img>`, `<audio>`, and `<video>` tags\n * - text files as plain text\n * - everything else as an `ArrayBuffer` which can be manually converted into a\n * data url if needed with `URL.createObjectURL`\n *\n * @since 2.9.0\n */\nexport const getFileParser: GetFileParser = (file) => {\n if (isMediaFile(file)) {\n return \"readAsDataURL\";\n }\n\n if (isTextFile(file)) {\n return \"readAsText\";\n }\n\n return \"readAsArrayBuffer\";\n};\n\n/** @since 2.9.0 */\nexport interface SplitFileUploads {\n readonly pending: readonly ProcessingFileUploadStats[];\n readonly uploading: readonly ProcessingFileUploadStats[];\n readonly complete: readonly CompletedFileUploadStats[];\n}\n\n/**\n * This util will split all the current upload stats by status.\n *\n * @param stats - The {@link FileUploadStats} list generally returned by the\n * {@link useFileUpload} hook.\n * @returns the {@link SplitFileUploads}.\n * @since 2.9.0\n */\nexport function getSplitFileUploads(\n stats: readonly FileUploadStats[]\n): SplitFileUploads {\n const pending: ProcessingFileUploadStats[] = [];\n const uploading: ProcessingFileUploadStats[] = [];\n const complete: CompletedFileUploadStats[] = [];\n stats.forEach((stat) => {\n if (stat.status === \"pending\") {\n pending.push(stat);\n } else if (stat.status === \"uploading\") {\n uploading.push(stat);\n } else if (stat.status === \"complete\") {\n complete.push(stat);\n } else {\n /* istanbul ignore next */\n throw new Error(\"Invalid upload stat\");\n }\n });\n\n return { pending, uploading, complete };\n}\n"],"names":["isTextFile","file","test","name","isImageFile","isAudioFile","isVideoFile","isMediaFile","getFileParser","getSplitFileUploads","stats","pending","uploading","complete","forEach","stat","status","push","Error"],"mappings":"AA2DA;;;;;;;;;;;CAWC,GACD,OAAO,SAASA,WAAWC,IAAU;IACnC,OAAO,gDAAgDC,IAAI,CAACD,KAAKE,IAAI;AACvE;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,YAAYH,IAAU;IACpC,OAAO,uCAAuCC,IAAI,CAACD,KAAKE,IAAI;AAC9D;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASE,YAAYJ,IAAU;IACpC,OAAO,6BAA6BC,IAAI,CAACD,KAAKE,IAAI;AACpD;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASG,YAAYL,IAAU;IACpC,OAAO,uCAAuCC,IAAI,CAACD,KAAKE,IAAI;AAC9D;AAEA;;;;;;;CAOC,GACD,OAAO,SAASI,YAAYN,IAAU;IACpC,OAAOG,YAAYH,SAASI,YAAYJ,SAASK,YAAYL;AAC/D;AA2CA;;;;;;;;;CASC,GACD,OAAO,MAAMO,gBAA+B,CAACP;IAC3C,IAAIM,YAAYN,OAAO;QACrB,OAAO;IACT;IAEA,IAAID,WAAWC,OAAO;QACpB,OAAO;IACT;IAEA,OAAO;AACT,EAAE;AASF;;;;;;;CAOC,GACD,OAAO,SAASQ,oBACdC,KAAiC;IAEjC,MAAMC,UAAuC,EAAE;IAC/C,MAAMC,YAAyC,EAAE;IACjD,MAAMC,WAAuC,EAAE;IAC/CH,MAAMI,OAAO,CAAC,CAACC;QACb,IAAIA,KAAKC,MAAM,KAAK,WAAW;YAC7BL,QAAQM,IAAI,CAACF;QACf,OAAO,IAAIA,KAAKC,MAAM,KAAK,aAAa;YACtCJ,UAAUK,IAAI,CAACF;QACjB,OAAO,IAAIA,KAAKC,MAAM,KAAK,YAAY;YACrCH,SAASI,IAAI,CAACF;QAChB,OAAO;YACL,wBAAwB,GACxB,MAAM,IAAIG,MAAM;QAClB;IACF;IAEA,OAAO;QAAEP;QAASC;QAAWC;IAAS;AACxC"}
@@ -1,49 +1,3 @@
1
- import { type ChangeEventHandler, type DragEventHandler } from "react";
2
- /** @since 2.9.0 */
3
- export interface BaseFileUploadStats {
4
- /**
5
- * A unique key associated with each upload generated by `nanoid`.
6
- */
7
- key: string;
8
- /**
9
- * The file instance that is being uploaded.
10
- */
11
- file: File;
12
- /**
13
- * The current upload progress as a percentage from 0 - 100 percent.
14
- */
15
- progress: number;
16
- }
17
- /** @since 2.9.0 */
18
- export interface ProcessingFileUploadStats extends BaseFileUploadStats {
19
- status: "pending" | "uploading";
20
- }
21
- /** @since 2.9.0 */
22
- export type FileReaderResult = FileReader["result"];
23
- /** @since 2.9.0 */
24
- export interface CompletedFileUploadStats extends BaseFileUploadStats {
25
- status: "complete";
26
- /**
27
- * The result after a `FileReader` has read a file completely.
28
- *
29
- * Note: This _should_ be an `ArrayBuffer` if the next step is to upload to a
30
- * server.
31
- *
32
- * @see {@link FileReaderParser}
33
- * @see {@link getFileParser}
34
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/FileReader | FileReader}
35
- */
36
- result: FileReaderResult;
37
- }
38
- /** @since 2.9.0 */
39
- export type FileUploadStats = ProcessingFileUploadStats | CompletedFileUploadStats;
40
- /** @since 2.9.0 */
41
- export type FileUploadStatus = FileUploadStats["status"];
42
- /** @since 2.9.0 */
43
- export interface FileUploadHandlers<E extends HTMLElement> {
44
- onDrop?: DragEventHandler<E>;
45
- onChange?: ChangeEventHandler<HTMLInputElement>;
46
- }
47
1
  /**
48
2
  * An error that will be created if a user tries dragging and dropping files
49
3
  * from a shared directory that they do not have access to. This error will not
@@ -146,7 +100,7 @@ export type FileValidationError<E = GenericFileError> = FileAccessError | TooMan
146
100
  * @param error - The error to check
147
101
  * @returns true if the error is a {@link FileAccessError}
148
102
  */
149
- export declare function isGenericFileError<CustomError extends {}>(error: FileValidationError<CustomError>): error is GenericFileError;
103
+ export declare function isGenericFileError<CustomError extends object>(error: FileValidationError<CustomError>): error is GenericFileError;
150
104
  /**
151
105
  * A simple type-guard that can be used to check if the
152
106
  * {@link FileValidationError} is the {@link FileAccessError} which can be
@@ -155,7 +109,7 @@ export declare function isGenericFileError<CustomError extends {}>(error: FileVa
155
109
  * @param error - The error to check
156
110
  * @returns true if the error is a {@link FileAccessError}
157
111
  */
158
- export declare function isFileAccessError<CustomError extends {}>(error: FileValidationError<CustomError>): error is FileAccessError;
112
+ export declare function isFileAccessError<CustomError extends object>(error: FileValidationError<CustomError>): error is FileAccessError;
159
113
  /**
160
114
  * A simple type-guard that can be used to check if the
161
115
  * {@link FileValidationError} is the {@link TooManyFilesError} which can be
@@ -164,7 +118,7 @@ export declare function isFileAccessError<CustomError extends {}>(error: FileVal
164
118
  * @param error - The error to check
165
119
  * @returns true if the error is a {@link TooManyFilesError}
166
120
  */
167
- export declare function isTooManyFilesError<CustomError extends {}>(error: FileValidationError<CustomError>): error is TooManyFilesError;
121
+ export declare function isTooManyFilesError<CustomError extends object>(error: FileValidationError<CustomError>): error is TooManyFilesError;
168
122
  /**
169
123
  * A simple type-guard that can be used to check if the
170
124
  * {@link FileValidationError} is the {@link FileSizeError} which can be
@@ -173,7 +127,7 @@ export declare function isTooManyFilesError<CustomError extends {}>(error: FileV
173
127
  * @param error - The error to check
174
128
  * @returns true if the error is a {@link FileSizeError}
175
129
  */
176
- export declare function isFileSizeError<CustomError extends {}>(error: FileValidationError<CustomError>): error is FileSizeError;
130
+ export declare function isFileSizeError<CustomError extends object>(error: FileValidationError<CustomError>): error is FileSizeError;
177
131
  /**
178
132
  * A simple type-guard that can be used to check if the
179
133
  * {@link FileValidationError} is the {@link FileExtensionError} which can be
@@ -182,7 +136,7 @@ export declare function isFileSizeError<CustomError extends {}>(error: FileValid
182
136
  * @param error - The error to check
183
137
  * @returns true if the error is a {@link FileExtensionError}
184
138
  */
185
- export declare function isFileExtensionError<CustomError extends {}>(error: FileValidationError<CustomError>): error is FileExtensionError;
139
+ export declare function isFileExtensionError<CustomError extends object>(error: FileValidationError<CustomError>): error is FileExtensionError;
186
140
  /**
187
141
  * This function is used to determine if a file should be added to the
188
142
  * {@link FileExtensionError}. The default implementation should work for most
@@ -267,7 +221,9 @@ export interface FilesValidationOptions extends Required<FileValidationOptions>
267
221
  */
268
222
  totalFiles: number;
269
223
  }
270
- /** @since 2.9.0 */
224
+ /**
225
+ * @since 2.9.0
226
+ */
271
227
  export interface ValidatedFilesResult<CustomError> {
272
228
  /**
273
229
  * A filtered list of files that have been validated and can be queued for the
@@ -328,125 +284,4 @@ export type FilesValidator<CustomError = never> = (files: readonly File[], optio
328
284
  * @returns the {@link ValidatedFilesResult}
329
285
  * @since 2.9.0
330
286
  */
331
- export declare function validateFiles<CustomError>(files: readonly File[], { maxFiles, extensions, minFileSize, maxFileSize, totalBytes, totalFiles, totalFileSize, isValidFileName, }: FilesValidationOptions): ValidatedFilesResult<CustomError>;
332
- /**
333
- * This will first check if the mime-type of the file starts with `text/` and
334
- * fallback to checking a few file names or extensions that should be considered
335
- * text.
336
- *
337
- * This function is not guaranteed to be 100% correct and is only useful if
338
- * trying to generate a preview of files uploaded to the browser.
339
- *
340
- * @param file - The file to check
341
- * @returns `true` if the file should be considered as a text-content file.
342
- * @since 2.9.0
343
- */
344
- export declare function isTextFile(file: File): boolean;
345
- /**
346
- * This will first check if the mime-type of the file starts with `text\/` and
347
- * fallback to checking a few file names or extensions that should be considered
348
- * text.
349
- *
350
- * This function is not guaranteed to be 100% correct and is only useful if
351
- * trying to generate a preview of files uploaded to the browser.
352
- *
353
- * @param file - The file to check
354
- * @returns `true` if the file should be considered as a text content file.
355
- * @since 2.9.0
356
- */
357
- export declare function isImageFile(file: File): boolean;
358
- /**
359
- * This will first check if the mime-type of the file starts with `audio/` and
360
- * fallback to checking a few file names or extensions that should be considered
361
- * audio.
362
- *
363
- * This function is not guaranteed to be 100% correct and is only useful if
364
- * trying to generate a preview of files uploaded to the browser.
365
- *
366
- * @param file - The file to check
367
- * @returns `true` if the file should be considered as a audio content file.
368
- * @since 2.9.0
369
- */
370
- export declare function isAudioFile(file: File): boolean;
371
- /**
372
- * This will first check if the mime-type of the file starts with `video/` and
373
- * fallback to checking a few file names or extensions that should be considered
374
- * video.
375
- *
376
- * This function is not guaranteed to be 100% correct and is only useful if
377
- * trying to generate a preview of files uploaded to the browser.
378
- *
379
- * @param file - The file to check
380
- * @returns `true` if the file should be considered as a video content file.
381
- * @since 2.9.0
382
- */
383
- export declare function isVideoFile(file: File): boolean;
384
- /**
385
- * This function is not guaranteed to be 100% correct and is only useful if
386
- * trying to generate a preview of files uploaded to the browser.
387
- *
388
- * @param file - The file to check
389
- * @returns `true` if the file matches an image, audio, or video file.
390
- * @since 2.9.0
391
- */
392
- export declare function isMediaFile(file: File): boolean;
393
- /**
394
- * One of the function names from a `FileReader` to upload a file to the
395
- * client.
396
- *
397
- * Note: If this file does not need to be previewed in the browser and will
398
- * immediately be uploaded to a server, use `readAsArrayBuffer`.
399
- *
400
- * @since 2.9.0
401
- */
402
- export type FileReaderParser = "readAsText" | "readAsDataURL" | "readAsBinaryString" | "readAsArrayBuffer";
403
- /**
404
- * A function that should return one of the {@link FileReaderParser} functions
405
- * to start uploading a file to the browser.
406
- *
407
- * @example The Default File Upload Parser
408
- * ```ts
409
- * export const getFileParser: GetFileParser = (file) => {
410
- * if (isMediaFile(file)) {
411
- * return "readAsDataURL";
412
- * }
413
- *
414
- * if (isTextFile(file)) {
415
- * return "readAsText";
416
- * }
417
- *
418
- * return "readAsArrayBuffer";
419
- * };
420
- * ```
421
- *
422
- * @param file - The file to get a parser for
423
- * @returns the {@link FileReaderParser} string.
424
- * @since 2.9.0
425
- */
426
- export type GetFileParser = (file: File) => FileReaderParser;
427
- /**
428
- * This function will attempt to read:
429
- * - media (image, audio, and video) files as a data url so they can be
430
- * previewed in `<img>`, `<audio>`, and `<video>` tags
431
- * - text files as plain text
432
- * - everything else as an `ArrayBuffer` which can be manually converted into a
433
- * data url if needed with `URL.createObjectURL`
434
- *
435
- * @since 2.9.0
436
- */
437
- export declare const getFileParser: GetFileParser;
438
- /** @since 2.9.0 */
439
- export interface SplitFileUploads {
440
- readonly pending: readonly ProcessingFileUploadStats[];
441
- readonly uploading: readonly ProcessingFileUploadStats[];
442
- readonly complete: readonly CompletedFileUploadStats[];
443
- }
444
- /**
445
- * This util will split all the current upload stats by status.
446
- *
447
- * @param stats - The {@link FileUploadStats} list generally returned by the
448
- * {@link useFileUpload} hook.
449
- * @returns the {@link SplitFileUploads}.
450
- * @since 2.9.0
451
- */
452
- export declare function getSplitFileUploads(stats: readonly FileUploadStats[]): SplitFileUploads;
287
+ export declare function validateFiles<CustomError>(files: readonly File[], options: FilesValidationOptions): ValidatedFilesResult<CustomError>;