@react-md/core 1.0.0-next.1 → 1.0.0-next.3

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 (840) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/.turbo/turbo-lint.log +3 -3
  3. package/.turbo/turbo-test.log +142 -129
  4. package/.turbo/turbo-typecheck.log +1 -1
  5. package/CHANGELOG.md +111 -0
  6. package/coverage/clover.xml +437 -3
  7. package/coverage/coverage-final.json +4 -1
  8. package/coverage/lcov-report/Avatar.tsx.html +472 -0
  9. package/coverage/lcov-report/DefaultToastRenderer.tsx.html +166 -112
  10. package/coverage/lcov-report/IconRotator.tsx.html +322 -0
  11. package/coverage/lcov-report/ListItem.tsx.html +892 -0
  12. package/coverage/lcov-report/Portal.tsx.html +223 -0
  13. package/coverage/lcov-report/PortalContainerProvider.tsx.html +367 -0
  14. package/coverage/lcov-report/SkeletonPlaceholder.tsx.html +613 -0
  15. package/coverage/lcov-report/Snackbar.tsx.html +360 -402
  16. package/coverage/lcov-report/Tab.tsx.html +261 -147
  17. package/coverage/lcov-report/Toast.tsx.html +868 -0
  18. package/coverage/lcov-report/ToastManager.tsx.html +1783 -0
  19. package/coverage/lcov-report/ToastManagerProvider.tsx.html +216 -216
  20. package/coverage/lcov-report/TreeGroup.tsx.html +313 -0
  21. package/coverage/lcov-report/app-bar/AppBar.tsx.html +178 -28
  22. package/coverage/lcov-report/app-bar/index.html +7 -7
  23. package/coverage/lcov-report/button/TooltippedButton.tsx.html +445 -0
  24. package/coverage/lcov-report/button/index.html +10 -10
  25. package/coverage/lcov-report/card/Card.tsx.html +349 -0
  26. package/coverage/lcov-report/card/CardContent.tsx.html +223 -0
  27. package/coverage/lcov-report/card/ClickableCard.tsx.html +400 -0
  28. package/coverage/lcov-report/card/index.html +21 -21
  29. package/coverage/lcov-report/card/styles.ts.html +428 -392
  30. package/coverage/lcov-report/cssUtils.ts.html +86 -59
  31. package/coverage/lcov-report/draggable/index.html +21 -36
  32. package/coverage/lcov-report/draggable/useDraggable.ts.html +377 -368
  33. package/coverage/lcov-report/draggable/utils.ts.html +96 -195
  34. package/coverage/lcov-report/expansion-panel/ExpansionList.tsx.html +211 -0
  35. package/coverage/lcov-report/expansion-panel/ExpansionPanel.tsx.html +12 -15
  36. package/coverage/lcov-report/expansion-panel/index.html +34 -19
  37. package/coverage/lcov-report/expansion-panel/useExpansionPanels.ts.html +928 -0
  38. package/coverage/lcov-report/form/MenuItemInputToggle.tsx.html +2 -2
  39. package/coverage/lcov-report/form/Select.tsx.html +1663 -0
  40. package/coverage/lcov-report/form/Slider.tsx.html +163 -40
  41. package/coverage/lcov-report/form/index.html +21 -21
  42. package/coverage/lcov-report/icon/FontIcon.tsx.html +28 -28
  43. package/coverage/lcov-report/icon/index.html +1 -1
  44. package/coverage/lcov-report/index.html +41 -11
  45. package/coverage/lcov-report/interaction/UserInteractionModeProvider.tsx.html +679 -0
  46. package/coverage/lcov-report/interaction/config.ts.html +181 -0
  47. package/coverage/lcov-report/interaction/index.html +33 -18
  48. package/coverage/lcov-report/list/List.tsx.html +490 -0
  49. package/coverage/lcov-report/list/ListItem.tsx.html +886 -0
  50. package/coverage/lcov-report/list/ListItemAddon.tsx.html +286 -0
  51. package/coverage/lcov-report/list/ListItemChildren.tsx.html +445 -0
  52. package/coverage/lcov-report/list/ListItemLink.tsx.html +5 -5
  53. package/coverage/lcov-report/list/index.html +81 -6
  54. package/coverage/lcov-report/list/listItemStyles.ts.html +703 -0
  55. package/coverage/lcov-report/media-queries/appSize.ts.html +1 -1
  56. package/coverage/lcov-report/media-queries/index.html +1 -1
  57. package/coverage/lcov-report/menu/Menu.tsx.html +37 -19
  58. package/coverage/lcov-report/menu/index.html +14 -44
  59. package/coverage/lcov-report/sheet/index.html +8 -8
  60. package/coverage/lcov-report/sheet/styles.ts.html +376 -0
  61. package/coverage/lcov-report/skeletonPlaceholderUtils.ts.html +400 -0
  62. package/coverage/lcov-report/snackbar/Snackbar.tsx.html +55 -97
  63. package/coverage/lcov-report/snackbar/Toast.tsx.html +546 -501
  64. package/coverage/lcov-report/snackbar/ToastManager.tsx.html +269 -269
  65. package/coverage/lcov-report/snackbar/ToastManagerProvider.tsx.html +23 -23
  66. package/coverage/lcov-report/snackbar/index.html +59 -14
  67. package/coverage/lcov-report/snackbar/snackbarStyles.ts.html +12 -87
  68. package/coverage/lcov-report/snackbar/toastStyles.ts.html +206 -146
  69. package/coverage/lcov-report/snackbar/useCurrentToastActions.ts.html +226 -0
  70. package/coverage/lcov-report/snackbarStyles.ts.html +46 -121
  71. package/coverage/lcov-report/src/CoreProviders.tsx.html +20 -20
  72. package/coverage/lcov-report/src/NoSsr.tsx.html +1 -1
  73. package/coverage/lcov-report/src/SsrProvider.tsx.html +10 -10
  74. package/coverage/lcov-report/src/app-bar/AppBar.tsx.html +143 -23
  75. package/coverage/lcov-report/src/app-bar/AppBarTitle.tsx.html +1 -1
  76. package/coverage/lcov-report/src/app-bar/index.html +5 -5
  77. package/coverage/lcov-report/src/avatar/Avatar.tsx.html +2 -2
  78. package/coverage/lcov-report/src/avatar/index.html +1 -1
  79. package/coverage/lcov-report/src/avatar/styles.ts.html +1 -1
  80. package/coverage/lcov-report/src/badge/Badge.tsx.html +1 -1
  81. package/coverage/lcov-report/src/badge/index.html +1 -1
  82. package/coverage/lcov-report/src/box/Box.tsx.html +1 -1
  83. package/coverage/lcov-report/src/box/index.html +23 -8
  84. package/coverage/lcov-report/src/box/styles.ts.html +46 -46
  85. package/coverage/lcov-report/src/button/AsyncButton.tsx.html +1 -1
  86. package/coverage/lcov-report/src/button/Button.tsx.html +84 -84
  87. package/coverage/lcov-report/src/button/ButtonUnstyled.tsx.html +1 -1
  88. package/coverage/lcov-report/src/button/FloatingActionButton.tsx.html +11 -11
  89. package/coverage/lcov-report/src/button/TooltippedButton.tsx.html +445 -0
  90. package/coverage/lcov-report/src/button/buttonStyles.ts.html +52 -52
  91. package/coverage/lcov-report/src/button/buttonUnstyledStyles.ts.html +1 -1
  92. package/coverage/lcov-report/src/button/index.html +83 -8
  93. package/coverage/lcov-report/src/card/Card.tsx.html +37 -31
  94. package/coverage/lcov-report/src/card/CardContent.tsx.html +4 -4
  95. package/coverage/lcov-report/src/card/CardFooter.tsx.html +1 -1
  96. package/coverage/lcov-report/src/card/CardHeader.tsx.html +1 -1
  97. package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +1 -1
  98. package/coverage/lcov-report/src/card/CardTitle.tsx.html +1 -1
  99. package/coverage/lcov-report/src/card/ClickableCard.tsx.html +400 -0
  100. package/coverage/lcov-report/src/card/index.html +24 -9
  101. package/coverage/lcov-report/src/card/styles.ts.html +58 -31
  102. package/coverage/lcov-report/src/chip/Chip.tsx.html +1 -1
  103. package/coverage/lcov-report/src/chip/index.html +7 -7
  104. package/coverage/lcov-report/src/chip/styles.ts.html +9 -12
  105. package/coverage/lcov-report/src/cssUtils.ts.html +53 -53
  106. package/coverage/lcov-report/src/delegateEvent.ts.html +109 -109
  107. package/coverage/lcov-report/src/dialog/Dialog.tsx.html +1 -1
  108. package/coverage/lcov-report/src/dialog/DialogContainer.tsx.html +1 -1
  109. package/coverage/lcov-report/src/dialog/DialogContent.tsx.html +1 -1
  110. package/coverage/lcov-report/src/dialog/DialogFooter.tsx.html +1 -1
  111. package/coverage/lcov-report/src/dialog/DialogHeader.tsx.html +1 -1
  112. package/coverage/lcov-report/src/dialog/DialogTitle.tsx.html +1 -1
  113. package/coverage/lcov-report/src/dialog/FixedDialog.tsx.html +1 -1
  114. package/coverage/lcov-report/src/dialog/NestedDialogProvider.ts.html +1 -1
  115. package/coverage/lcov-report/src/dialog/index.html +129 -9
  116. package/coverage/lcov-report/src/dialog/styles.ts.html +1 -1
  117. package/coverage/lcov-report/src/divider/Divider.tsx.html +4 -7
  118. package/coverage/lcov-report/src/divider/index.html +5 -5
  119. package/coverage/lcov-report/src/divider/styles.ts.html +1 -1
  120. package/coverage/lcov-report/src/draggable/index.html +27 -27
  121. package/coverage/lcov-report/src/draggable/useDraggable.ts.html +47 -44
  122. package/coverage/lcov-report/src/draggable/utils.ts.html +29 -131
  123. package/coverage/lcov-report/src/expansion-panel/ExpansionList.tsx.html +1 -1
  124. package/coverage/lcov-report/src/expansion-panel/ExpansionPanel.tsx.html +1 -1
  125. package/coverage/lcov-report/src/expansion-panel/ExpansionPanelHeader.tsx.html +1 -1
  126. package/coverage/lcov-report/src/expansion-panel/index.html +8 -8
  127. package/coverage/lcov-report/src/expansion-panel/useExpansionList.ts.html +1 -1
  128. package/coverage/lcov-report/src/expansion-panel/useExpansionPanels.ts.html +36 -24
  129. package/coverage/lcov-report/src/focus/index.html +1 -1
  130. package/coverage/lcov-report/src/focus/useFocusContainer.ts.html +1 -1
  131. package/coverage/lcov-report/src/focus/utils.ts.html +1 -1
  132. package/coverage/lcov-report/src/form/Checkbox.tsx.html +1 -1
  133. package/coverage/lcov-report/src/form/Fieldset.tsx.html +1 -1
  134. package/coverage/lcov-report/src/form/FileInput.tsx.html +1 -1
  135. package/coverage/lcov-report/src/form/Form.tsx.html +1 -1
  136. package/coverage/lcov-report/src/form/FormMessage.tsx.html +1 -1
  137. package/coverage/lcov-report/src/form/FormMessageContainer.tsx.html +5 -5
  138. package/coverage/lcov-report/src/form/FormMessageCounter.tsx.html +1 -1
  139. package/coverage/lcov-report/src/form/InputToggle.tsx.html +110 -110
  140. package/coverage/lcov-report/src/form/InputToggleIcon.tsx.html +63 -63
  141. package/coverage/lcov-report/src/form/Label.tsx.html +98 -98
  142. package/coverage/lcov-report/src/form/Legend.tsx.html +1 -1
  143. package/coverage/lcov-report/src/form/MenuItemCheckbox.tsx.html +1 -1
  144. package/coverage/lcov-report/src/form/MenuItemFileInput.tsx.html +1 -1
  145. package/coverage/lcov-report/src/form/MenuItemInputToggle.tsx.html +2 -2
  146. package/coverage/lcov-report/src/form/MenuItemRadio.tsx.html +1 -1
  147. package/coverage/lcov-report/src/form/MenuItemSwitch.tsx.html +1 -1
  148. package/coverage/lcov-report/src/form/MenuItemTextField.tsx.html +1 -1
  149. package/coverage/lcov-report/src/form/NativeSelect.tsx.html +1 -1
  150. package/coverage/lcov-report/src/form/OptGroup.tsx.html +1 -1
  151. package/coverage/lcov-report/src/form/Option.tsx.html +1 -1
  152. package/coverage/lcov-report/src/form/Password.tsx.html +1 -1
  153. package/coverage/lcov-report/src/form/Radio.tsx.html +3 -3
  154. package/coverage/lcov-report/src/form/Select.tsx.html +29 -5
  155. package/coverage/lcov-report/src/form/SelectValue.tsx.html +1 -1
  156. package/coverage/lcov-report/src/form/Slider.tsx.html +1 -1
  157. package/coverage/lcov-report/src/form/SliderContainer.tsx.html +1 -1
  158. package/coverage/lcov-report/src/form/SliderMark.tsx.html +1 -1
  159. package/coverage/lcov-report/src/form/SliderMarkLabel.tsx.html +1 -1
  160. package/coverage/lcov-report/src/form/SliderThumb.tsx.html +1 -1
  161. package/coverage/lcov-report/src/form/SliderTrack.tsx.html +1 -1
  162. package/coverage/lcov-report/src/form/SliderValueMarks.tsx.html +1 -1
  163. package/coverage/lcov-report/src/form/SliderValueTooltip.tsx.html +1 -1
  164. package/coverage/lcov-report/src/form/Switch.tsx.html +1 -1
  165. package/coverage/lcov-report/src/form/SwitchTrack.tsx.html +1 -1
  166. package/coverage/lcov-report/src/form/TextArea.tsx.html +2 -2
  167. package/coverage/lcov-report/src/form/TextField.tsx.html +1 -1
  168. package/coverage/lcov-report/src/form/TextFieldAddon.tsx.html +1 -1
  169. package/coverage/lcov-report/src/form/TextFieldContainer.tsx.html +1 -1
  170. package/coverage/lcov-report/src/form/TextFieldContainerStyles.ts.html +8 -8
  171. package/coverage/lcov-report/src/form/fileUtils.ts.html +1 -1
  172. package/coverage/lcov-report/src/form/formConfig.ts.html +1 -1
  173. package/coverage/lcov-report/src/form/formMessageStyles.ts.html +1 -1
  174. package/coverage/lcov-report/src/form/index.html +940 -10
  175. package/coverage/lcov-report/src/form/inputToggleStyles.ts.html +30 -30
  176. package/coverage/lcov-report/src/form/nativeSelectStyles.ts.html +1 -1
  177. package/coverage/lcov-report/src/form/optionStyles.ts.html +1 -1
  178. package/coverage/lcov-report/src/form/passwordStyles.ts.html +1 -1
  179. package/coverage/lcov-report/src/form/selectStyles.ts.html +1 -1
  180. package/coverage/lcov-report/src/form/selectUtils.ts.html +1 -1
  181. package/coverage/lcov-report/src/form/sliderUtils.ts.html +1 -1
  182. package/coverage/lcov-report/src/form/switchStyles.ts.html +1 -1
  183. package/coverage/lcov-report/src/form/textAreaStyles.ts.html +3 -3
  184. package/coverage/lcov-report/src/form/textFieldStyles.ts.html +1 -1
  185. package/coverage/lcov-report/src/form/useCheckboxGroup.ts.html +1 -1
  186. package/coverage/lcov-report/src/form/useFileUpload.ts.html +1 -1
  187. package/coverage/lcov-report/src/form/useListboxProvider.ts.html +1 -1
  188. package/coverage/lcov-report/src/form/useNumberField.ts.html +1 -1
  189. package/coverage/lcov-report/src/form/useRadioGroup.ts.html +47 -47
  190. package/coverage/lcov-report/src/form/useRangeSlider.ts.html +1 -1
  191. package/coverage/lcov-report/src/form/useResizingTextArea.ts.html +1 -1
  192. package/coverage/lcov-report/src/form/useSlider.ts.html +1 -1
  193. package/coverage/lcov-report/src/form/useTextField.ts.html +1 -1
  194. package/coverage/lcov-report/src/form/utils.ts.html +1 -1
  195. package/coverage/lcov-report/src/form/validation.ts.html +1 -1
  196. package/coverage/lcov-report/src/hoverMode/index.html +1 -1
  197. package/coverage/lcov-report/src/hoverMode/useHoverMode.ts.html +98 -98
  198. package/coverage/lcov-report/src/hoverMode/useHoverModeProvider.ts.html +19 -19
  199. package/coverage/lcov-report/src/icon/FontIcon.tsx.html +28 -28
  200. package/coverage/lcov-report/src/icon/IconRotator.tsx.html +5 -8
  201. package/coverage/lcov-report/src/icon/MaterialIcon.tsx.html +1 -1
  202. package/coverage/lcov-report/src/icon/MaterialSymbol.tsx.html +1 -1
  203. package/coverage/lcov-report/src/icon/SVGIcon.tsx.html +1 -1
  204. package/coverage/lcov-report/src/icon/TextIconSpacing.tsx.html +1 -1
  205. package/coverage/lcov-report/src/icon/iconConfig.tsx.html +8 -8
  206. package/coverage/lcov-report/src/icon/index.html +7 -7
  207. package/coverage/lcov-report/src/icon/material.ts.html +1 -1
  208. package/coverage/lcov-report/src/icon/materialConfig.ts.html +1 -1
  209. package/coverage/lcov-report/src/icon/styles.ts.html +38 -38
  210. package/coverage/lcov-report/src/index.html +354 -9
  211. package/coverage/lcov-report/src/interaction/Ripple.tsx.html +1 -1
  212. package/coverage/lcov-report/src/interaction/RippleContainer.tsx.html +1 -1
  213. package/coverage/lcov-report/src/interaction/UserInteractionModeProvider.tsx.html +87 -87
  214. package/coverage/lcov-report/src/interaction/config.ts.html +7 -7
  215. package/coverage/lcov-report/src/interaction/index.html +1 -1
  216. package/coverage/lcov-report/src/interaction/useElementInteraction.tsx.html +123 -123
  217. package/coverage/lcov-report/src/interaction/useHigherContrastChildren.tsx.html +17 -17
  218. package/coverage/lcov-report/src/interaction/utils.ts.html +1 -1
  219. package/coverage/lcov-report/src/layout/LayoutAppBar.tsx.html +1 -1
  220. package/coverage/lcov-report/src/layout/LayoutNav.tsx.html +60 -60
  221. package/coverage/lcov-report/src/layout/LayoutWindowSplitter.tsx.html +1 -1
  222. package/coverage/lcov-report/src/layout/Main.tsx.html +1 -1
  223. package/coverage/lcov-report/src/layout/index.html +15 -15
  224. package/coverage/lcov-report/src/layout/layoutNavStyles.ts.html +5 -5
  225. package/coverage/lcov-report/src/layout/layoutWindowSplitterStyles.ts.html +1 -1
  226. package/coverage/lcov-report/src/layout/mainStyles.ts.html +1 -1
  227. package/coverage/lcov-report/src/layout/useExpandableLayout.ts.html +1 -1
  228. package/coverage/lcov-report/src/layout/useHorizontalLayoutTransition.ts.html +1 -1
  229. package/coverage/lcov-report/src/layout/useLayoutAppBarHeight.ts.html +20 -32
  230. package/coverage/lcov-report/src/layout/useLayoutTree.ts.html +1 -1
  231. package/coverage/lcov-report/src/layout/useLayoutWindowSplitter.ts.html +1 -1
  232. package/coverage/lcov-report/src/layout/useMainTabIndex.ts.html +1 -1
  233. package/coverage/lcov-report/src/layout/useResizableLayout.ts.html +1 -1
  234. package/coverage/lcov-report/src/layout/useTemporaryLayout.ts.html +1 -1
  235. package/coverage/lcov-report/src/link/Link.tsx.html +1 -1
  236. package/coverage/lcov-report/src/link/SkipToMainContent.tsx.html +1 -1
  237. package/coverage/lcov-report/src/link/index.html +1 -1
  238. package/coverage/lcov-report/src/link/styles.ts.html +1 -1
  239. package/coverage/lcov-report/src/list/List.tsx.html +30 -30
  240. package/coverage/lcov-report/src/list/ListItem.tsx.html +37 -16
  241. package/coverage/lcov-report/src/list/ListItemAddon.tsx.html +13 -7
  242. package/coverage/lcov-report/src/list/ListItemChildren.tsx.html +12 -6
  243. package/coverage/lcov-report/src/list/ListItemLink.tsx.html +4 -4
  244. package/coverage/lcov-report/src/list/ListItemText.tsx.html +1 -1
  245. package/coverage/lcov-report/src/list/ListSubheader.tsx.html +1 -1
  246. package/coverage/lcov-report/src/list/getListItemHeight.ts.html +1 -1
  247. package/coverage/lcov-report/src/list/index.html +11 -11
  248. package/coverage/lcov-report/src/list/listItemStyles.ts.html +39 -9
  249. package/coverage/lcov-report/src/media-queries/AppSizeProvider.tsx.html +54 -54
  250. package/coverage/lcov-report/src/media-queries/appSize.ts.html +1 -1
  251. package/coverage/lcov-report/src/media-queries/index.html +1 -1
  252. package/coverage/lcov-report/src/media-queries/useMediaQuery.ts.html +25 -25
  253. package/coverage/lcov-report/src/menu/DropdownMenu.tsx.html +1 -1
  254. package/coverage/lcov-report/src/menu/Menu.tsx.html +2 -2
  255. package/coverage/lcov-report/src/menu/MenuBar.tsx.html +1 -1
  256. package/coverage/lcov-report/src/menu/MenuButton.tsx.html +1 -1
  257. package/coverage/lcov-report/src/menu/MenuConfigurationProvider.tsx.html +1 -1
  258. package/coverage/lcov-report/src/menu/MenuItem.tsx.html +1 -1
  259. package/coverage/lcov-report/src/menu/MenuItemButton.tsx.html +1 -1
  260. package/coverage/lcov-report/src/menu/MenuItemGroup.tsx.html +1 -1
  261. package/coverage/lcov-report/src/menu/MenuItemSeparator.tsx.html +1 -1
  262. package/coverage/lcov-report/src/menu/MenuSheet.tsx.html +1 -1
  263. package/coverage/lcov-report/src/menu/MenuVisibilityProvider.tsx.html +1 -1
  264. package/coverage/lcov-report/src/menu/MenuWidget.tsx.html +1 -1
  265. package/coverage/lcov-report/src/menu/MenuWidgetKeyboardProvider.tsx.html +1 -1
  266. package/coverage/lcov-report/src/menu/index.html +1 -1
  267. package/coverage/lcov-report/src/menu/useContextMenu.ts.html +1 -1
  268. package/coverage/lcov-report/src/menu/useMenuBarProvider.ts.html +1 -1
  269. package/coverage/lcov-report/src/menu/utils.ts.html +1 -1
  270. package/coverage/lcov-report/src/movement/constants.ts.html +1 -1
  271. package/coverage/lcov-report/src/movement/findMatchIndex.ts.html +1 -1
  272. package/coverage/lcov-report/src/movement/index.html +1 -1
  273. package/coverage/lcov-report/src/movement/useKeyboardMovementProvider.ts.html +3 -3
  274. package/coverage/lcov-report/src/movement/utils.ts.html +1 -1
  275. package/coverage/lcov-report/src/overlay/Overlay.tsx.html +1 -1
  276. package/coverage/lcov-report/src/overlay/index.html +1 -1
  277. package/coverage/lcov-report/src/overlay/overlayStyles.ts.html +1 -1
  278. package/coverage/lcov-report/src/portal/Portal.tsx.html +7 -7
  279. package/coverage/lcov-report/src/portal/PortalContainerProvider.tsx.html +59 -35
  280. package/coverage/lcov-report/src/portal/index.html +7 -7
  281. package/coverage/lcov-report/src/positioning/constants.ts.html +1 -1
  282. package/coverage/lcov-report/src/positioning/createHorizontalPosition.ts.html +47 -47
  283. package/coverage/lcov-report/src/positioning/createVerticalPosition.ts.html +55 -55
  284. package/coverage/lcov-report/src/positioning/getFixedPosition.ts.html +89 -89
  285. package/coverage/lcov-report/src/positioning/index.html +1 -1
  286. package/coverage/lcov-report/src/positioning/useFixedPositioning.ts.html +193 -193
  287. package/coverage/lcov-report/src/positioning/utils.ts.html +59 -59
  288. package/coverage/lcov-report/src/progress/CircularProgress.tsx.html +3 -3
  289. package/coverage/lcov-report/src/progress/LinearProgress.tsx.html +3 -3
  290. package/coverage/lcov-report/src/progress/getProgressA11y.ts.html +1 -1
  291. package/coverage/lcov-report/src/progress/index.html +20 -5
  292. package/coverage/lcov-report/src/responsive-item/ResponsiveItemContainer.tsx.html +1 -1
  293. package/coverage/lcov-report/src/responsive-item/ResponsiveItemOverlay.tsx.html +1 -1
  294. package/coverage/lcov-report/src/responsive-item/index.html +1 -1
  295. package/coverage/lcov-report/src/responsive-item/styles.ts.html +1 -1
  296. package/coverage/lcov-report/src/scroll/ScrollLock.tsx.html +1 -1
  297. package/coverage/lcov-report/src/scroll/getScrollbarWidth.ts.html +1 -1
  298. package/coverage/lcov-report/src/scroll/index.html +1 -1
  299. package/coverage/lcov-report/src/scroll/useScrollLock.ts.html +1 -1
  300. package/coverage/lcov-report/src/segmented-button/SegmentedButton.tsx.html +1 -1
  301. package/coverage/lcov-report/src/segmented-button/SegmentedButtonContainer.tsx.html +1 -1
  302. package/coverage/lcov-report/src/segmented-button/index.html +1 -1
  303. package/coverage/lcov-report/src/segmented-button/segmentedButtonContainerStyles.ts.html +1 -1
  304. package/coverage/lcov-report/src/segmented-button/segmentedButtonStyles.ts.html +1 -1
  305. package/coverage/lcov-report/src/sheet/Sheet.tsx.html +1 -1
  306. package/coverage/lcov-report/src/sheet/index.html +5 -5
  307. package/coverage/lcov-report/src/sheet/styles.ts.html +45 -48
  308. package/coverage/lcov-report/src/snackbar/DefaultToastRenderer.tsx.html +80 -80
  309. package/coverage/lcov-report/src/snackbar/Snackbar.tsx.html +21 -45
  310. package/coverage/lcov-report/src/snackbar/Toast.tsx.html +108 -93
  311. package/coverage/lcov-report/src/snackbar/ToastActionButton.tsx.html +1 -1
  312. package/coverage/lcov-report/src/snackbar/ToastCloseButton.tsx.html +1 -1
  313. package/coverage/lcov-report/src/snackbar/ToastContent.tsx.html +48 -48
  314. package/coverage/lcov-report/src/snackbar/ToastManager.tsx.html +278 -275
  315. package/coverage/lcov-report/src/snackbar/ToastManagerProvider.tsx.html +6 -6
  316. package/coverage/lcov-report/src/snackbar/index.html +19 -19
  317. package/coverage/lcov-report/src/snackbar/snackbarStyles.ts.html +15 -15
  318. package/coverage/lcov-report/src/snackbar/toastContentStyles.ts.html +14 -14
  319. package/coverage/lcov-report/src/snackbar/toastStyles.ts.html +27 -27
  320. package/coverage/lcov-report/src/snackbar/useCurrentToastActions.ts.html +1 -1
  321. package/coverage/lcov-report/src/suspense/CircularProgressSuspense.tsx.html +1 -1
  322. package/coverage/lcov-report/src/suspense/NullSuspense.tsx.html +1 -1
  323. package/coverage/lcov-report/src/suspense/index.html +20 -5
  324. package/coverage/lcov-report/src/table/Table.tsx.html +45 -114
  325. package/coverage/lcov-report/src/table/TableBody.tsx.html +43 -43
  326. package/coverage/lcov-report/src/table/TableCell.tsx.html +109 -298
  327. package/coverage/lcov-report/src/table/TableCellContent.tsx.html +81 -27
  328. package/coverage/lcov-report/src/table/TableCheckbox.tsx.html +16 -10
  329. package/coverage/lcov-report/src/table/TableConfigurationProvider.tsx.html +20 -20
  330. package/coverage/lcov-report/src/table/TableContainer.tsx.html +7 -28
  331. package/coverage/lcov-report/src/table/TableContainerProvider.tsx.html +1 -1
  332. package/coverage/lcov-report/src/table/TableFooter.tsx.html +64 -43
  333. package/coverage/lcov-report/src/table/TableHeader.tsx.html +41 -92
  334. package/coverage/lcov-report/src/table/TableRadio.tsx.html +676 -0
  335. package/coverage/lcov-report/src/table/TableRow.tsx.html +38 -119
  336. package/coverage/lcov-report/src/table/index.html +151 -46
  337. package/coverage/lcov-report/src/table/tableCellStyles.ts.html +334 -0
  338. package/coverage/lcov-report/src/table/tableContainerStyles.ts.html +142 -0
  339. package/coverage/lcov-report/src/table/tableFooterStyles.ts.html +166 -0
  340. package/coverage/lcov-report/src/table/tableHeaderStyles.ts.html +172 -0
  341. package/coverage/lcov-report/src/table/tableRowStyles.ts.html +169 -0
  342. package/coverage/lcov-report/src/table/tableStyles.ts.html +157 -0
  343. package/coverage/lcov-report/src/tabs/Tab.tsx.html +263 -143
  344. package/coverage/lcov-report/src/tabs/TabList.tsx.html +1 -1
  345. package/coverage/lcov-report/src/tabs/TabListScrollButton.tsx.html +1 -1
  346. package/coverage/lcov-report/src/tabs/index.html +25 -25
  347. package/coverage/lcov-report/src/tabs/tabIndicatorStyles.ts.html +37 -7
  348. package/coverage/lcov-report/src/tabs/tabListScrollButtonStyles.ts.html +1 -1
  349. package/coverage/lcov-report/src/tabs/tabListStyles.ts.html +2 -2
  350. package/coverage/lcov-report/src/tabs/tabStyles.ts.html +64 -28
  351. package/coverage/lcov-report/src/tabs/useTabList.ts.html +44 -38
  352. package/coverage/lcov-report/src/tabs/useTabs.ts.html +1 -1
  353. package/coverage/lcov-report/src/tabs/utils.ts.html +3 -3
  354. package/coverage/lcov-report/src/test-utils/IntersectionObserver.ts.html +1 -1
  355. package/coverage/lcov-report/src/test-utils/ResizeObserver.ts.html +205 -205
  356. package/coverage/lcov-report/src/test-utils/data-testid.ts.html +1 -1
  357. package/coverage/lcov-report/src/test-utils/drag.ts.html +1 -1
  358. package/coverage/lcov-report/src/test-utils/index.html +4 -4
  359. package/coverage/lcov-report/src/test-utils/jest-setup.ts.html +9 -9
  360. package/coverage/lcov-report/src/test-utils/matchMedia.ts.html +4 -4
  361. package/coverage/lcov-report/src/test-utils/polyfills/IntersectionObserver.ts.html +4 -4
  362. package/coverage/lcov-report/src/test-utils/polyfills/ResizeObserver.ts.html +3 -3
  363. package/coverage/lcov-report/src/test-utils/polyfills/index.html +1 -1
  364. package/coverage/lcov-report/src/test-utils/polyfills/matchMedia.ts.html +6 -6
  365. package/coverage/lcov-report/src/test-utils/polyfills/offsetParent.ts.html +14 -14
  366. package/coverage/lcov-report/src/test-utils/polyfills/scrollIntoView.ts.html +5 -5
  367. package/coverage/lcov-report/src/test-utils/render.tsx.html +21 -21
  368. package/coverage/lcov-report/src/test-utils/timers.ts.html +1 -1
  369. package/coverage/lcov-report/src/theme/LocalStorageColorSchemeProvider.tsx.html +1 -1
  370. package/coverage/lcov-report/src/theme/ThemeProvider.tsx.html +1 -1
  371. package/coverage/lcov-report/src/theme/colors.ts.html +1 -1
  372. package/coverage/lcov-report/src/theme/cssVars.ts.html +1 -1
  373. package/coverage/lcov-report/src/theme/index.html +1 -1
  374. package/coverage/lcov-report/src/theme/useCSSVariables.ts.html +25 -25
  375. package/coverage/lcov-report/src/theme/useColorScheme.ts.html +1 -1
  376. package/coverage/lcov-report/src/theme/useColorSchemeMetaTag.ts.html +1 -1
  377. package/coverage/lcov-report/src/theme/useColorSchemeProvider.ts.html +1 -1
  378. package/coverage/lcov-report/src/theme/usePrefersColorScheme.ts.html +1 -1
  379. package/coverage/lcov-report/src/theme/utils.ts.html +1 -1
  380. package/coverage/lcov-report/src/tooltip/Tooltip.tsx.html +62 -62
  381. package/coverage/lcov-report/src/tooltip/TooltipHoverModeProvider.tsx.html +3 -3
  382. package/coverage/lcov-report/src/tooltip/constants.ts.html +1 -1
  383. package/coverage/lcov-report/src/tooltip/index.html +9 -9
  384. package/coverage/lcov-report/src/tooltip/tooltipStyles.ts.html +12 -12
  385. package/coverage/lcov-report/src/tooltip/useTooltip.ts.html +243 -222
  386. package/coverage/lcov-report/src/tooltip/useTooltipPosition.ts.html +27 -27
  387. package/coverage/lcov-report/src/tooltip/utils.ts.html +22 -22
  388. package/coverage/lcov-report/src/transition/CSSTransition.tsx.html +1 -1
  389. package/coverage/lcov-report/src/transition/Collapse.tsx.html +1 -1
  390. package/coverage/lcov-report/src/transition/CrossFade.tsx.html +1 -1
  391. package/coverage/lcov-report/src/transition/ScaleTransition.tsx.html +1 -1
  392. package/coverage/lcov-report/src/transition/SkeletonPlaceholder.tsx.html +374 -338
  393. package/coverage/lcov-report/src/transition/Slide.tsx.html +1 -1
  394. package/coverage/lcov-report/src/transition/SlideContainer.tsx.html +1 -1
  395. package/coverage/lcov-report/src/transition/collapseStyles.ts.html +13 -13
  396. package/coverage/lcov-report/src/transition/config.ts.html +5 -5
  397. package/coverage/lcov-report/src/transition/index.html +47 -32
  398. package/coverage/lcov-report/src/transition/maxWidthTransition.ts.html +1 -1
  399. package/coverage/lcov-report/src/transition/skeletonPlaceholderUtils.ts.html +400 -0
  400. package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +68 -68
  401. package/coverage/lcov-report/src/transition/useCarousel.ts.html +1 -1
  402. package/coverage/lcov-report/src/transition/useCollapseTransition.ts.html +87 -87
  403. package/coverage/lcov-report/src/transition/useCrossFadeTransition.ts.html +1 -1
  404. package/coverage/lcov-report/src/transition/useMaxWidthTransition.ts.html +1 -1
  405. package/coverage/lcov-report/src/transition/useScaleTransition.ts.html +18 -18
  406. package/coverage/lcov-report/src/transition/useSkeletonPlaceholder.ts.html +607 -562
  407. package/coverage/lcov-report/src/transition/useSlideTransition.ts.html +1 -1
  408. package/coverage/lcov-report/src/transition/useTransition.ts.html +237 -237
  409. package/coverage/lcov-report/src/transition/utils.ts.html +43 -43
  410. package/coverage/lcov-report/src/tree/DefaultTreeItemRenderer.tsx.html +18 -6
  411. package/coverage/lcov-report/src/tree/Tree.tsx.html +20 -8
  412. package/coverage/lcov-report/src/tree/TreeGroup.tsx.html +45 -45
  413. package/coverage/lcov-report/src/tree/TreeItem.tsx.html +7 -10
  414. package/coverage/lcov-report/src/tree/TreeItemExpander.tsx.html +1 -1
  415. package/coverage/lcov-report/src/tree/TreeProvider.tsx.html +8 -8
  416. package/coverage/lcov-report/src/tree/index.html +11 -11
  417. package/coverage/lcov-report/src/tree/styles.ts.html +8 -35
  418. package/coverage/lcov-report/src/tree/useTree.ts.html +1 -1
  419. package/coverage/lcov-report/src/tree/useTreeExpansion.ts.html +1 -1
  420. package/coverage/lcov-report/src/tree/useTreeItems.ts.html +1 -1
  421. package/coverage/lcov-report/src/tree/useTreeMovement.ts.html +1 -1
  422. package/coverage/lcov-report/src/tree/useTreeSelection.ts.html +1 -1
  423. package/coverage/lcov-report/src/tree/utils.ts.html +1 -1
  424. package/coverage/lcov-report/src/typography/SrOnly.tsx.html +1 -1
  425. package/coverage/lcov-report/src/typography/TextContainer.tsx.html +1 -1
  426. package/coverage/lcov-report/src/typography/Typography.tsx.html +1 -1
  427. package/coverage/lcov-report/src/typography/WritingDirectionProvider.tsx.html +1 -1
  428. package/coverage/lcov-report/src/typography/index.html +1 -1
  429. package/coverage/lcov-report/src/useAsyncAction.ts.html +1 -1
  430. package/coverage/lcov-report/src/useDebouncedFunction.ts.html +1 -1
  431. package/coverage/lcov-report/src/useDropzone.ts.html +1 -1
  432. package/coverage/lcov-report/src/useElementSize.ts.html +334 -0
  433. package/coverage/lcov-report/src/useEnsuredId.ts.html +8 -8
  434. package/coverage/lcov-report/src/useEnsuredRef.ts.html +14 -14
  435. package/coverage/lcov-report/src/useEnsuredState.ts.html +1 -1
  436. package/coverage/lcov-report/src/useHtmlClassName.ts.html +1 -1
  437. package/coverage/lcov-report/src/useIntersectionObserver.ts.html +1 -1
  438. package/coverage/lcov-report/src/useIsomorphicLayoutEffect.ts.html +1 -1
  439. package/coverage/lcov-report/src/useLocalStorage.ts.html +1 -1
  440. package/coverage/lcov-report/src/useOrientation.ts.html +32 -32
  441. package/coverage/lcov-report/src/usePageInactive.ts.html +30 -30
  442. package/coverage/lcov-report/src/useResizeListener.ts.html +38 -32
  443. package/coverage/lcov-report/src/useResizeObserver.ts.html +68 -179
  444. package/coverage/lcov-report/src/useThrottledFunction.ts.html +1 -1
  445. package/coverage/lcov-report/src/useToggle.ts.html +1 -1
  446. package/coverage/lcov-report/src/useUnmounted.ts.html +1 -1
  447. package/coverage/lcov-report/src/useWindowSize.ts.html +124 -94
  448. package/coverage/lcov-report/src/utils/RenderRecursively.tsx.html +1 -1
  449. package/coverage/lcov-report/src/utils/alphaNumericSort.ts.html +1 -1
  450. package/coverage/lcov-report/src/utils/applyRef.ts.html +11 -11
  451. package/coverage/lcov-report/src/utils/bem.ts.html +45 -45
  452. package/coverage/lcov-report/src/utils/filters.ts.html +1 -1
  453. package/coverage/lcov-report/src/utils/getClientPosition.ts.html +1 -1
  454. package/coverage/lcov-report/src/utils/getMiddleOfRange.ts.html +163 -0
  455. package/coverage/lcov-report/src/utils/getPercentage.ts.html +9 -9
  456. package/coverage/lcov-report/src/utils/getRangeDefaultValue.ts.html +66 -87
  457. package/coverage/lcov-report/src/utils/getRangeSteps.ts.html +7 -7
  458. package/coverage/lcov-report/src/utils/identity.ts.html +1 -1
  459. package/coverage/lcov-report/src/utils/index.html +46 -31
  460. package/coverage/lcov-report/src/utils/isElementVisible.ts.html +1 -1
  461. package/coverage/lcov-report/src/utils/isValidNumber.ts.html +118 -0
  462. package/coverage/lcov-report/src/utils/loop.ts.html +1 -1
  463. package/coverage/lcov-report/src/utils/nearest.ts.html +21 -21
  464. package/coverage/lcov-report/src/utils/parseCssLengthUnit.ts.html +18 -18
  465. package/coverage/lcov-report/src/utils/randomInt.ts.html +52 -52
  466. package/coverage/lcov-report/src/utils/wait.ts.html +1 -1
  467. package/coverage/lcov-report/src/utils/withinRange.ts.html +1 -1
  468. package/coverage/lcov-report/src/window-splitter/WindowSplitter.tsx.html +1 -1
  469. package/coverage/lcov-report/src/window-splitter/index.html +14 -14
  470. package/coverage/lcov-report/src/window-splitter/useWindowSplitter.ts.html +19 -67
  471. package/coverage/lcov-report/src/window-splitter/useWindowSplitterMaxValue.ts.html +256 -0
  472. package/coverage/lcov-report/suspense/CircularProgressSuspense.tsx.html +283 -0
  473. package/coverage/lcov-report/suspense/NullSuspense.tsx.html +202 -0
  474. package/coverage/lcov-report/suspense/index.html +131 -0
  475. package/coverage/lcov-report/tabIndicatorStyles.ts.html +43 -13
  476. package/coverage/lcov-report/tabListStyles.ts.html +35 -26
  477. package/coverage/lcov-report/tabStyles.ts.html +68 -26
  478. package/coverage/lcov-report/tabs/Tab.tsx.html +233 -143
  479. package/coverage/lcov-report/tabs/TabList.tsx.html +85 -85
  480. package/coverage/lcov-report/tabs/index.html +56 -11
  481. package/coverage/lcov-report/tabs/tabIndicatorStyles.ts.html +187 -0
  482. package/coverage/lcov-report/tabs/tabListStyles.ts.html +241 -0
  483. package/coverage/lcov-report/tabs/tabStyles.ts.html +253 -0
  484. package/coverage/lcov-report/tabs/useTabList.ts.html +736 -0
  485. package/coverage/lcov-report/tabs/useTabs.ts.html +1 -1
  486. package/coverage/lcov-report/tabs/utils.ts.html +1 -1
  487. package/coverage/lcov-report/test-utils/index.html +21 -21
  488. package/coverage/lcov-report/test-utils/use.ts.html +187 -0
  489. package/coverage/lcov-report/tooltip/Tooltip.tsx.html +62 -62
  490. package/coverage/lcov-report/tooltip/index.html +10 -70
  491. package/coverage/lcov-report/tooltip/useTooltip.ts.html +243 -222
  492. package/coverage/lcov-report/transition/SkeletonPlaceholder.tsx.html +595 -0
  493. package/coverage/lcov-report/transition/config.ts.html +5 -5
  494. package/coverage/lcov-report/transition/index.html +1 -1
  495. package/coverage/lcov-report/transition/skeletonPlaceholderUtils.ts.html +400 -0
  496. package/coverage/lcov-report/transition/useSkeletonPlaceholder.ts.html +952 -0
  497. package/coverage/lcov-report/tree/TreeItem.tsx.html +7 -10
  498. package/coverage/lcov-report/tree/index.html +12 -27
  499. package/coverage/lcov-report/tree/styles.ts.html +538 -0
  500. package/coverage/lcov-report/typography/Typography.tsx.html +138 -432
  501. package/coverage/lcov-report/typography/WritingDirectionProvider.tsx.html +75 -75
  502. package/coverage/lcov-report/typography/index.html +18 -18
  503. package/coverage/lcov-report/useSkeletonPlaceholder.ts.html +952 -0
  504. package/coverage/lcov-report/useTabList.ts.html +142 -136
  505. package/coverage/lcov-report/useWindowSplitter.ts.html +640 -0
  506. package/coverage/lcov-report/useWindowSplitterMaxValue.ts.html +256 -0
  507. package/coverage/lcov-report/utils/index.html +16 -31
  508. package/coverage/lcov-report/utils/isElementVisible.ts.html +14 -14
  509. package/coverage/lcov-report/utils/randomInt.ts.html +148 -0
  510. package/coverage/lcov-report/utils/wait.ts.html +1 -1
  511. package/coverage/lcov-report/window-splitter/index.html +21 -36
  512. package/coverage/lcov-report/window-splitter/useWindowSplitter.ts.html +406 -328
  513. package/coverage/lcov.info +474 -0
  514. package/dist/_box-shadows.scss +12 -2
  515. package/dist/_core.scss +34 -3
  516. package/dist/_utils.scss +79 -0
  517. package/dist/app-bar/AppBar.d.ts +4 -9
  518. package/dist/app-bar/AppBar.js +29 -7
  519. package/dist/app-bar/AppBar.js.map +1 -1
  520. package/dist/app-bar/_app-bar.scss +22 -32
  521. package/dist/avatar/Avatar.d.ts +1 -1
  522. package/dist/avatar/Avatar.js.map +1 -1
  523. package/dist/avatar/_avatar.scss +25 -34
  524. package/dist/badge/_badge.scss +80 -48
  525. package/dist/box/_box.scss +18 -29
  526. package/dist/button/TooltippedButton.d.ts +62 -0
  527. package/dist/button/TooltippedButton.js +62 -0
  528. package/dist/button/TooltippedButton.js.map +1 -0
  529. package/dist/button/_button.scss +50 -62
  530. package/dist/card/Card.js +3 -2
  531. package/dist/card/Card.js.map +1 -1
  532. package/dist/card/CardContent.js +1 -1
  533. package/dist/card/CardContent.js.map +1 -1
  534. package/dist/card/ClickableCard.d.ts +42 -0
  535. package/dist/card/ClickableCard.js +73 -0
  536. package/dist/card/ClickableCard.js.map +1 -0
  537. package/dist/card/_card.scss +29 -32
  538. package/dist/card/styles.d.ts +8 -0
  539. package/dist/card/styles.js +6 -3
  540. package/dist/card/styles.js.map +1 -1
  541. package/dist/chip/_chip.scss +33 -46
  542. package/dist/dialog/_dialog.scss +118 -103
  543. package/dist/divider/Divider.d.ts +0 -1
  544. package/dist/divider/Divider.js.map +1 -1
  545. package/dist/divider/_divider.scss +40 -51
  546. package/dist/draggable/useDraggable.d.ts +12 -23
  547. package/dist/draggable/useDraggable.js +15 -6
  548. package/dist/draggable/useDraggable.js.map +1 -1
  549. package/dist/draggable/utils.d.ts +4 -17
  550. package/dist/draggable/utils.js +9 -25
  551. package/dist/draggable/utils.js.map +1 -1
  552. package/dist/expansion-panel/_expansion-panel.scss +25 -16
  553. package/dist/expansion-panel/useExpansionPanels.d.ts +5 -3
  554. package/dist/expansion-panel/useExpansionPanels.js +16 -9
  555. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  556. package/dist/form/Label.d.ts +5 -5
  557. package/dist/form/Label.js.map +1 -1
  558. package/dist/form/MenuItemInputToggle.d.ts +1 -1
  559. package/dist/form/MenuItemInputToggle.js.map +1 -1
  560. package/dist/form/Select.js +6 -1
  561. package/dist/form/Select.js.map +1 -1
  562. package/dist/form/TextArea.js +1 -1
  563. package/dist/form/TextArea.js.map +1 -1
  564. package/dist/form/TextFieldContainerStyles.d.ts +7 -7
  565. package/dist/form/TextFieldContainerStyles.js.map +1 -1
  566. package/dist/form/_form.scss +240 -225
  567. package/dist/form/textAreaStyles.d.ts +2 -2
  568. package/dist/form/textAreaStyles.js.map +1 -1
  569. package/dist/form/types.d.ts +0 -2
  570. package/dist/form/types.js.map +1 -1
  571. package/dist/icon/IconRotator.js +2 -3
  572. package/dist/icon/IconRotator.js.map +1 -1
  573. package/dist/icon/_icon.scss +38 -49
  574. package/dist/index.d.ts +5 -0
  575. package/dist/index.js +5 -0
  576. package/dist/index.js.map +1 -1
  577. package/dist/interaction/_interaction.scss +59 -66
  578. package/dist/layout/_layout.scss +14 -19
  579. package/dist/layout/useLayoutAppBarHeight.js +5 -9
  580. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  581. package/dist/link/_link.scss +41 -35
  582. package/dist/list/ListItem.d.ts +8 -3
  583. package/dist/list/ListItem.js +4 -3
  584. package/dist/list/ListItem.js.map +1 -1
  585. package/dist/list/ListItemAddon.js +2 -1
  586. package/dist/list/ListItemAddon.js.map +1 -1
  587. package/dist/list/ListItemChildren.js +3 -2
  588. package/dist/list/ListItemChildren.js.map +1 -1
  589. package/dist/list/ListItemLink.js +3 -3
  590. package/dist/list/ListItemLink.js.map +1 -1
  591. package/dist/list/_list.scss +75 -74
  592. package/dist/list/listItemStyles.d.ts +9 -1
  593. package/dist/list/listItemStyles.js +5 -5
  594. package/dist/list/listItemStyles.js.map +1 -1
  595. package/dist/list/types.d.ts +14 -4
  596. package/dist/list/types.js.map +1 -1
  597. package/dist/menu/Menu.d.ts +1 -1
  598. package/dist/menu/Menu.js.map +1 -1
  599. package/dist/menu/_menu.scss +19 -41
  600. package/dist/overlay/_overlay.scss +14 -19
  601. package/dist/portal/PortalContainerProvider.d.ts +2 -2
  602. package/dist/portal/PortalContainerProvider.js +6 -1
  603. package/dist/portal/PortalContainerProvider.js.map +1 -1
  604. package/dist/progress/_progress.scss +25 -30
  605. package/dist/segmented-button/_segmented-button.scss +32 -43
  606. package/dist/sheet/_sheet.scss +24 -42
  607. package/dist/sheet/styles.d.ts +14 -15
  608. package/dist/sheet/styles.js.map +1 -1
  609. package/dist/snackbar/DefaultToastRenderer.js +1 -1
  610. package/dist/snackbar/DefaultToastRenderer.js.map +1 -1
  611. package/dist/snackbar/Snackbar.d.ts +1 -3
  612. package/dist/snackbar/Snackbar.js +2 -3
  613. package/dist/snackbar/Snackbar.js.map +1 -1
  614. package/dist/snackbar/Toast.d.ts +1 -1
  615. package/dist/snackbar/Toast.js +5 -1
  616. package/dist/snackbar/Toast.js.map +1 -1
  617. package/dist/snackbar/ToastManager.d.ts +2 -1
  618. package/dist/snackbar/ToastManager.js +1 -1
  619. package/dist/snackbar/ToastManager.js.map +1 -1
  620. package/dist/snackbar/_snackbar.scss +15 -23
  621. package/dist/table/TableCheckbox.d.ts +3 -2
  622. package/dist/table/TableCheckbox.js +4 -2
  623. package/dist/table/TableCheckbox.js.map +1 -1
  624. package/dist/table/TableRadio.d.ts +3 -2
  625. package/dist/table/TableRadio.js +4 -2
  626. package/dist/table/TableRadio.js.map +1 -1
  627. package/dist/table/_table.scss +55 -70
  628. package/dist/table/tableCellStyles.d.ts +1 -1
  629. package/dist/table/tableCellStyles.js.map +1 -1
  630. package/dist/tabs/Tab.d.ts +24 -3
  631. package/dist/tabs/Tab.js +15 -8
  632. package/dist/tabs/Tab.js.map +1 -1
  633. package/dist/tabs/_tabs.scss +54 -47
  634. package/dist/tabs/tabIndicatorStyles.d.ts +2 -1
  635. package/dist/tabs/tabIndicatorStyles.js +6 -3
  636. package/dist/tabs/tabIndicatorStyles.js.map +1 -1
  637. package/dist/tabs/tabListStyles.js +2 -1
  638. package/dist/tabs/tabListStyles.js.map +1 -1
  639. package/dist/tabs/tabStyles.d.ts +2 -0
  640. package/dist/tabs/tabStyles.js +6 -3
  641. package/dist/tabs/tabStyles.js.map +1 -1
  642. package/dist/tabs/useTabList.d.ts +3 -3
  643. package/dist/tabs/useTabList.js +9 -6
  644. package/dist/tabs/useTabList.js.map +1 -1
  645. package/dist/theme/_theme.scss +31 -89
  646. package/dist/tooltip/_tooltip.scss +16 -25
  647. package/dist/tooltip/useTooltip.d.ts +14 -14
  648. package/dist/tooltip/useTooltip.js.map +1 -1
  649. package/dist/transition/SkeletonPlaceholder.d.ts +2 -2
  650. package/dist/transition/SkeletonPlaceholder.js +8 -3
  651. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  652. package/dist/transition/_transition.scss +50 -44
  653. package/dist/transition/skeletonPlaceholderUtils.d.ts +77 -0
  654. package/dist/transition/skeletonPlaceholderUtils.js +38 -0
  655. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -0
  656. package/dist/transition/useSkeletonPlaceholder.d.ts +12 -7
  657. package/dist/transition/useSkeletonPlaceholder.js +38 -37
  658. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  659. package/dist/tree/DefaultTreeItemRenderer.d.ts +2 -2
  660. package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
  661. package/dist/tree/Tree.d.ts +8 -4
  662. package/dist/tree/Tree.js.map +1 -1
  663. package/dist/tree/TreeItem.js +3 -4
  664. package/dist/tree/TreeItem.js.map +1 -1
  665. package/dist/tree/_tree.scss +106 -106
  666. package/dist/tree/styles.d.ts +0 -6
  667. package/dist/tree/styles.js +1 -2
  668. package/dist/tree/styles.js.map +1 -1
  669. package/dist/types.d.ts +7 -0
  670. package/dist/types.js +1 -2
  671. package/dist/types.js.map +1 -1
  672. package/dist/typography/_typography.scss +30 -25
  673. package/dist/useElementSize.d.ts +40 -0
  674. package/dist/useElementSize.js +53 -0
  675. package/dist/useElementSize.js.map +1 -0
  676. package/dist/useResizeListener.d.ts +1 -1
  677. package/dist/useResizeListener.js +1 -0
  678. package/dist/useResizeListener.js.map +1 -1
  679. package/dist/useResizeObserver.d.ts +4 -43
  680. package/dist/useResizeObserver.js +3 -42
  681. package/dist/useResizeObserver.js.map +1 -1
  682. package/dist/useWindowSize.d.ts +14 -11
  683. package/dist/useWindowSize.js +12 -7
  684. package/dist/useWindowSize.js.map +1 -1
  685. package/dist/utils/getMiddleOfRange.d.ts +13 -0
  686. package/dist/utils/getMiddleOfRange.js +20 -0
  687. package/dist/utils/getMiddleOfRange.js.map +1 -0
  688. package/dist/utils/getRangeDefaultValue.d.ts +3 -5
  689. package/dist/utils/getRangeDefaultValue.js +3 -13
  690. package/dist/utils/getRangeDefaultValue.js.map +1 -1
  691. package/dist/utils/getRangeSteps.d.ts +1 -1
  692. package/dist/utils/getRangeSteps.js +2 -2
  693. package/dist/utils/getRangeSteps.js.map +1 -1
  694. package/dist/utils/nearest.js +1 -1
  695. package/dist/utils/nearest.js.map +1 -1
  696. package/dist/window-splitter/_window-splitter.scss +30 -61
  697. package/dist/window-splitter/useWindowSplitter.d.ts +3 -5
  698. package/dist/window-splitter/useWindowSplitter.js +3 -11
  699. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  700. package/package.json +18 -18
  701. package/src/__tests__/useElementSize.tsx +181 -0
  702. package/src/__tests__/useWindowSize.node.tsx +56 -0
  703. package/src/__tests__/useWindowSize.tsx +156 -0
  704. package/src/_box-shadows.scss +12 -2
  705. package/src/_core.scss +34 -3
  706. package/src/_utils.scss +79 -0
  707. package/src/app-bar/AppBar.tsx +59 -19
  708. package/src/app-bar/__tests__/__snapshots__/AppBar.tsx.snap +21 -21
  709. package/src/app-bar/_app-bar.scss +22 -32
  710. package/src/avatar/Avatar.tsx +1 -1
  711. package/src/avatar/_avatar.scss +25 -34
  712. package/src/badge/_badge.scss +80 -48
  713. package/src/box/_box.scss +18 -29
  714. package/src/button/TooltippedButton.tsx +120 -0
  715. package/src/button/__tests__/TooltippedButton.tsx +60 -0
  716. package/src/button/__tests__/__snapshots__/TooltippedButton.tsx.snap +26 -0
  717. package/src/button/_button.scss +50 -62
  718. package/src/card/Card.tsx +5 -3
  719. package/src/card/CardContent.tsx +3 -3
  720. package/src/card/ClickableCard.tsx +105 -0
  721. package/src/card/__tests__/ClickableCard.tsx +66 -0
  722. package/src/card/__tests__/__snapshots__/CardHeader.tsx.snap +1 -1
  723. package/src/card/__tests__/__snapshots__/CardSubtitle.tsx.snap +2 -2
  724. package/src/card/__tests__/__snapshots__/ClickableCard.tsx.snap +20 -0
  725. package/src/card/__tests__/__snapshots__/styles.ts.snap +1 -1
  726. package/src/card/_card.scss +29 -32
  727. package/src/card/styles.ts +19 -10
  728. package/src/chip/_chip.scss +33 -46
  729. package/src/dialog/_dialog.scss +118 -103
  730. package/src/divider/Divider.tsx +0 -1
  731. package/src/divider/_divider.scss +40 -51
  732. package/src/draggable/useDraggable.ts +26 -25
  733. package/src/draggable/utils.ts +16 -50
  734. package/src/expansion-panel/__tests__/ExpansionPanel.tsx +2 -2
  735. package/src/expansion-panel/_expansion-panel.scss +25 -16
  736. package/src/expansion-panel/useExpansionPanels.ts +20 -16
  737. package/src/form/Label.tsx +5 -5
  738. package/src/form/MenuItemInputToggle.tsx +1 -1
  739. package/src/form/Select.tsx +9 -1
  740. package/src/form/TextArea.tsx +1 -1
  741. package/src/form/TextFieldContainerStyles.ts +7 -7
  742. package/src/form/_form.scss +240 -225
  743. package/src/form/textAreaStyles.ts +2 -2
  744. package/src/form/types.ts +0 -2
  745. package/src/icon/IconRotator.tsx +1 -2
  746. package/src/icon/_icon.scss +38 -49
  747. package/src/index.ts +5 -0
  748. package/src/interaction/_interaction.scss +59 -66
  749. package/src/layout/__tests__/__snapshots__/LayoutAppBar.tsx.snap +4 -4
  750. package/src/layout/__tests__/__snapshots__/useExpandableLayout.tsx.snap +1 -1
  751. package/src/layout/__tests__/__snapshots__/useLayoutTree.tsx.snap +18 -18
  752. package/src/layout/__tests__/__snapshots__/useResizableLayout.tsx.snap +1 -1
  753. package/src/layout/__tests__/__snapshots__/useTemporaryLayout.tsx.snap +1 -1
  754. package/src/layout/_layout.scss +14 -19
  755. package/src/layout/useLayoutAppBarHeight.ts +5 -9
  756. package/src/link/_link.scss +41 -35
  757. package/src/list/ListItem.tsx +19 -12
  758. package/src/list/ListItemAddon.tsx +5 -3
  759. package/src/list/ListItemChildren.tsx +4 -2
  760. package/src/list/ListItemLink.tsx +3 -3
  761. package/src/list/__tests__/ListItem.tsx +1 -1
  762. package/src/list/__tests__/__snapshots__/ListItem.tsx.snap +1 -1
  763. package/src/list/_list.scss +75 -74
  764. package/src/list/listItemStyles.ts +15 -5
  765. package/src/list/types.ts +15 -4
  766. package/src/menu/Menu.tsx +1 -1
  767. package/src/menu/_menu.scss +19 -41
  768. package/src/overlay/_overlay.scss +14 -19
  769. package/src/portal/PortalContainerProvider.tsx +10 -2
  770. package/src/portal/__tests__/PortalContainerProvider.tsx +23 -0
  771. package/src/progress/_progress.scss +25 -30
  772. package/src/segmented-button/_segmented-button.scss +32 -43
  773. package/src/sheet/_sheet.scss +24 -42
  774. package/src/sheet/styles.ts +14 -15
  775. package/src/snackbar/DefaultToastRenderer.tsx +1 -1
  776. package/src/snackbar/Snackbar.tsx +17 -25
  777. package/src/snackbar/Toast.tsx +7 -2
  778. package/src/snackbar/ToastManager.tsx +3 -2
  779. package/src/snackbar/__tests__/Snackbar.tsx +12 -11
  780. package/src/snackbar/__tests__/ToastManagerProvider.tsx +20 -42
  781. package/src/snackbar/__tests__/__snapshots__/Snackbar.tsx.snap +127 -27
  782. package/src/snackbar/__tests__/__snapshots__/ToastManagerProvider.tsx.snap +23 -8
  783. package/src/snackbar/_snackbar.scss +15 -23
  784. package/src/suspense/__tests__/CircularProgressSuspense.tsx +90 -0
  785. package/src/suspense/__tests__/NullSuspense.tsx +46 -0
  786. package/src/suspense/__tests__/__snapshots__/CircularProgressSuspense.tsx.snap +24 -0
  787. package/src/table/TableCheckbox.tsx +4 -2
  788. package/src/table/TableRadio.tsx +4 -2
  789. package/src/table/_table.scss +55 -70
  790. package/src/table/tableCellStyles.ts +1 -1
  791. package/src/tabs/Tab.tsx +110 -70
  792. package/src/tabs/__tests__/Tab.tsx +25 -2
  793. package/src/tabs/__tests__/TabList.tsx +4 -4
  794. package/src/tabs/__tests__/__snapshots__/TabList.tsx.snap +2 -2
  795. package/src/tabs/_tabs.scss +54 -47
  796. package/src/tabs/tabIndicatorStyles.ts +13 -3
  797. package/src/tabs/tabListStyles.ts +1 -1
  798. package/src/tabs/tabStyles.ts +16 -4
  799. package/src/tabs/useTabList.ts +10 -8
  800. package/src/theme/_theme.scss +31 -89
  801. package/src/tooltip/_tooltip.scss +16 -25
  802. package/src/tooltip/useTooltip.ts +23 -16
  803. package/src/transition/SkeletonPlaceholder.tsx +18 -6
  804. package/src/transition/__tests__/SkeletonPlaceholder.tsx +72 -0
  805. package/src/transition/__tests__/__snapshots__/SkeletonPlaceholder.tsx.snap +24 -0
  806. package/src/transition/_transition.scss +50 -44
  807. package/src/transition/skeletonPlaceholderUtils.ts +105 -0
  808. package/src/transition/useSkeletonPlaceholder.ts +62 -47
  809. package/src/tree/DefaultTreeItemRenderer.tsx +6 -2
  810. package/src/tree/Tree.tsx +8 -4
  811. package/src/tree/TreeItem.tsx +3 -4
  812. package/src/tree/__tests__/Tree.tsx +1 -1
  813. package/src/tree/__tests__/__snapshots__/Tree.tsx.snap +124 -124
  814. package/src/tree/_tree.scss +106 -106
  815. package/src/tree/styles.ts +0 -9
  816. package/src/types.ts +8 -0
  817. package/src/typography/_typography.scss +30 -25
  818. package/src/useElementSize.ts +83 -0
  819. package/src/useResizeListener.ts +3 -1
  820. package/src/useResizeObserver.ts +7 -44
  821. package/src/useWindowSize.ts +29 -19
  822. package/src/utils/__tests__/getMiddleOfRange.ts +12 -0
  823. package/src/utils/__tests__/getRangeDefaultValue.ts +47 -0
  824. package/src/utils/getMiddleOfRange.ts +26 -0
  825. package/src/utils/getRangeDefaultValue.ts +8 -15
  826. package/src/utils/getRangeSteps.ts +2 -2
  827. package/src/utils/nearest.ts +1 -1
  828. package/src/window-splitter/_window-splitter.scss +30 -61
  829. package/src/window-splitter/useWindowSplitter.ts +12 -28
  830. package/dist/divider/VerticalDivider.d.ts +0 -32
  831. package/dist/divider/useVerticalDividerHeight.d.ts +0 -37
  832. package/dist/icon/MaterialIconsProvider.d.ts +0 -12
  833. package/dist/icon/MaterialIconsProvider.js +0 -17
  834. package/dist/icon/MaterialIconsProvider.js.map +0 -1
  835. package/dist/icon/MaterialSymbolsProvider.d.ts +0 -145
  836. package/dist/icon/MaterialSymbolsProvider.js +0 -60
  837. package/dist/icon/MaterialSymbolsProvider.js.map +0 -1
  838. package/dist/link/LinkProvider.d.ts +0 -29
  839. package/dist/menu/menuConfig.d.ts +0 -60
  840. package/dist/tooltip/useOverflowTooltip.d.ts +0 -61
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/draggable/useDraggable.ts"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport type { HTMLAttributes, Ref, RefCallback } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useUserInteractionMode } from \"../interaction/UserInteractionModeProvider.js\";\nimport { useScrollLock } from \"../scroll/useScrollLock.js\";\nimport type {\n NonNullRef,\n UseStateInitializer,\n UseStateSetter,\n} from \"../types.js\";\nimport { useDir } from \"../typography/WritingDirectionProvider.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useEnsuredState } from \"../useEnsuredState.js\";\nimport { useHtmlClassName } from \"../useHtmlClassName.js\";\nimport { getRangeSteps } from \"../utils/getRangeSteps.js\";\nimport { nearest } from \"../utils/nearest.js\";\nimport { withinRange } from \"../utils/withinRange.js\";\nimport {\n getDraggableDefaultValue,\n isMouseDragStartEvent,\n isTouchDragStartEvent,\n updateDragPosition,\n} from \"./utils.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableTouchEventHandlers<E extends HTMLElement> = Pick<\n HTMLAttributes<E>,\n \"onTouchStart\" | \"onTouchMove\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableMouseEventHandlers<E extends HTMLElement> = Pick<\n HTMLAttributes<E>,\n \"onMouseDown\" | \"onMouseUp\" | \"onMouseMove\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableKeyboardEventHandlers<E extends HTMLElement> = Pick<\n HTMLAttributes<E>,\n \"onKeyDown\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableEventHandlers<E extends HTMLElement> =\n DraggableTouchEventHandlers<E> &\n DraggableMouseEventHandlers<E> &\n DraggableKeyboardEventHandlers<E>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ControllableDraggableStateOptions {\n value?: number;\n setValue?: UseStateSetter<number>;\n defaultValue?: UseStateInitializer<number>;\n dragging?: boolean;\n setDragging?: UseStateSetter<boolean>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface BaseDraggableOptions<E extends HTMLElement>\n extends DraggableEventHandlers<E>,\n ControllableDraggableStateOptions {\n /**\n * An optional ref to merge with the returned\n * {@link DraggableImplementation.draggableRef}.\n */\n ref?: Ref<E>;\n\n /**\n * The minimum number of pixels allowed for the draggable element. This must\n * be a number greater than or equal to 0.\n *\n * When {@link withinOffsetParent} is set to `true`, this is the minimum value\n * allowed instead of pixels.\n */\n min: number;\n\n /**\n * The maximum number of pixels allowed for the draggable element. This must\n * be a number greater than the {@link min} and usually a number less than the\n * viewport size.\n *\n * When {@link withinOffsetParent} is set to `true`, this is the maximum value\n * allowed instead of pixels.\n */\n max: number;\n\n /**\n * The amount to increment or decrement the value with arrow keys.\n *\n * @defaultValue `1`\n */\n step?: number;\n\n /**\n * This was added to support range sliders where there are two (or more)\n * draggable elements within the same container element and their values\n * cannot pass each other. Without these overrides, the range would keep\n * changing as the other values change, so the drag percentage would be\n * incorrect.\n *\n * @example\n * Range Slider\n * ```ts\n * const min = 0;\n * const max = 100;\n * const minValue = 3;\n * const maxValue = 80;\n *\n * const minValueDraggable = useDraggable({\n * min,\n * max,\n * rangeMax: maxValue,\n * });\n * const maxValueDraggable = useDraggable({\n * min,\n * max,\n * rangeMin: minValue,\n * });\n * ```\n *\n * @defaultValue `min`\n */\n rangeMin?: number;\n\n /**\n * @see {@link rangeMin} for an explanation of this option.\n * @defaultValue `max`\n */\n rangeMax?: number;\n\n /**\n * Set this to `true` to enable dragging vertically instead of horizontally.\n *\n * @defaultValue `false`\n */\n vertical?: boolean;\n\n /**\n * The default drag behavior is to increase the value when:\n *\n * - dragging `\"right\"` and the writing direction is `\"ltr\"`\n * - dragging `\"left\"` and the writing direction is `\"rtl\"`\n * - dragging `\"upwards\"`\n *\n * When this is set to `true`, the value when increase when:\n *\n * - dragging `\"left\"` and the writing direction is `\"ltr\"`\n * - dragging `\"right\"` and the writing direction is `\"rtl\"`\n * - dragging `\"downwards\"`\n *\n * @defaultValue `false`\n */\n reversed?: boolean;\n\n /**\n * Set this to `true` to disable all drag behavior. This will still call any\n * of the provided {@link DraggableEventHandlers}.\n *\n * @defaultValue `false`\n */\n disabled?: boolean;\n\n /**\n * Set this to `true` if the dragging calculations should be to the\n * `draggableRef.current.offsetParent` instead of the entire window. The main\n * use case for this is sliders.\n *\n * @defaultValue `false`\n */\n withinOffsetParent?: boolean;\n\n /**\n * Set this to `true` to prevent the `document.documentElement` from gaining\n * the `.rmd-dragging` class names while dragging.\n *\n * This should normally remain as `false` to improve performance and prevent\n * other mouse events from firing while dragging.\n *\n * @defaultValue `false`\n */\n disableDraggingClassName?: boolean;\n\n /**\n * Set this to `true` to prevent the vertical or horizontal cursor from\n * appearing while dragging.\n *\n * @defaultValue `false`\n */\n disableDraggingCursorClassName?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface UncontrolledDraggableOptions {\n value?: never;\n setValue?: never;\n dragging?: never;\n setDragging?: never;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ControlledValueDraggableOptions {\n value: number;\n setValue: UseStateSetter<number>;\n defaultValue?: never;\n dragging?: never;\n setDragging?: never;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ControlledDraggingDraggableOptions {\n value?: never;\n setValue?: never;\n defaultValue?: never;\n dragging: boolean;\n setDragging: UseStateSetter<boolean>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface FullyControlledDraggableOptions {\n value: number;\n setValue: UseStateSetter<number>;\n dragging: boolean;\n setDragging: UseStateSetter<boolean>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableStateOptions =\n | UncontrolledDraggableOptions\n | ControlledValueDraggableOptions\n | ControlledDraggingDraggableOptions\n | FullyControlledDraggableOptions;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableOptions<E extends HTMLElement = HTMLElement> =\n BaseDraggableOptions<E> & DraggableStateOptions;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface DraggableImplementation<E extends HTMLElement = HTMLElement>\n extends Required<DraggableEventHandlers<E>> {\n mouseEventHandlers: Required<DraggableMouseEventHandlers<E>>;\n touchEventHandlers: Required<DraggableTouchEventHandlers<E>>;\n keyboardEventHandlers: Required<DraggableKeyboardEventHandlers<E>>;\n\n /**\n * Set the {@link value} to {@link DraggableOptions.min}.\n */\n minimum(): void;\n\n /**\n * Set the {@link value} to {@link DraggableOptions.max}.\n */\n maximum(): void;\n\n /**\n * Increment the {@link value} by {@link DraggableOptions.step}.\n */\n increment(): void;\n\n /**\n * Decrement the {@link value} by {@link DraggableOptions.step}.\n */\n decrement(): void;\n\n /**\n * A ref that **Must** be passed to the element that should be draggable.\n */\n draggableRef: RefCallback<E>;\n\n /**\n * This value will only update while dragging with a mouse or touch and should\n * be used for the positioning styles while dragging.\n *\n * @example\n * Inline Styles\n * ```ts\n * import { getPercentage, useDraggable } from \"@react-md/core\";\n *\n * const min = 120;\n * const max = 256;\n * const { value, dragging, dragPercentage } = useDraggable({\n * min,\n * max,\n * defaultValue: min,\n * });\n *\n * const percentage = dragging\n * ? dragPercentage\n * : getPercentage({ min, max, value });\n *\n * const style: CSSProperties = {\n * left: `${percentage * 100}%`<>\n * };\n *\n * // do stuff\n * ```\n */\n dragPercentage: number;\n\n /**\n * Flag to determine if the user has dragged at least once. Used internally\n * for manually persisting the value into local storage once the user has\n * stopped dragging.\n */\n draggedOnce: NonNullRef<boolean>;\n\n value: number;\n setValue: UseStateSetter<number>;\n dragging: boolean;\n setDragging: UseStateSetter<boolean>;\n}\n\n/**\n * This is most likely an internal only hook that provides the functionality for\n * dragging an element through mouse, touch, and keyboard events. The main use\n * cases so far for this hook are:\n * - window splitters\n * - sliders\n *\n * @remarks \\@since 6.0.0\n */\nexport function useDraggable<E extends HTMLElement>(\n options: DraggableOptions<E>\n): DraggableImplementation<E> {\n const {\n ref: propRef,\n min,\n max,\n rangeMin = min,\n rangeMax = max,\n step = 1,\n reversed = false,\n vertical = false,\n onKeyDown = noop,\n onMouseUp = noop,\n onMouseDown = noop,\n onMouseMove = noop,\n onTouchStart = noop,\n onTouchMove = noop,\n dragging: propDragging,\n setDragging: propSetDragging,\n value: propValue,\n setValue: propSetValue,\n defaultValue,\n withinOffsetParent = false,\n disabled = false,\n disableDraggingClassName = false,\n disableDraggingCursorClassName = disableDraggingClassName,\n } = options;\n\n const [nodeRef, ref] = useEnsuredRef(propRef);\n const isTouch = useUserInteractionMode() === \"touch\";\n const draggingRef = useRef(false);\n const [dragPercentage, setDragPercentage] = useState(min);\n const [value, setValue] = useEnsuredState({\n value: propValue,\n setValue: propSetValue,\n defaultValue: () => getDraggableDefaultValue({ min, max, defaultValue }),\n });\n const [dragging, setDragging] = useEnsuredState({\n value: propDragging,\n setValue: propSetDragging,\n defaultValue: false,\n });\n\n const isRTL = useDir().dir === \"rtl\";\n const maximum = useCallback(() => {\n setValue(max);\n }, [max, setValue]);\n const minimum = useCallback(() => {\n setValue(min);\n }, [min, setValue]);\n const increment = useCallback(() => {\n setValue((prevValue) => withinRange({ min, max, value: prevValue + step }));\n }, [max, min, setValue, step]);\n const decrement = useCallback(() => {\n setValue((prevValue) => withinRange({ min, max, value: prevValue - step }));\n }, [max, min, setValue, step]);\n\n const draggingClassName = dragging && !disableDraggingClassName;\n useHtmlClassName(cnb(draggingClassName && \"rmd-dragging\"));\n useHtmlClassName(\n cnb(\n !disableDraggingCursorClassName &&\n draggingClassName &&\n `rmd-dragging--${vertical ? \"v\" : \"h\"}`\n )\n );\n\n const draggedOnce = useRef(false);\n useEffect(() => {\n if (!dragging) {\n return;\n }\n\n draggedOnce.current = true;\n const updatePosition = (event: MouseEvent | TouchEvent): void => {\n if (!event.cancelable) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n updateDragPosition({\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n isDragStart: false,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n };\n\n const stopDragging = (event: MouseEvent | TouchEvent): void => {\n updatePosition(event);\n draggingRef.current = false;\n setDragging(false);\n };\n\n const updateKey = isTouch ? \"touchmove\" : \"mousemove\";\n const stopKey = isTouch ? \"touchend\" : \"mouseup\";\n const passive = isTouch ? { passive: false } : undefined;\n\n window.addEventListener(updateKey, updatePosition, passive);\n window.addEventListener(stopKey, stopDragging);\n return () => {\n window.removeEventListener(updateKey, updatePosition);\n window.removeEventListener(stopKey, stopDragging);\n };\n }, [\n dragging,\n isRTL,\n isTouch,\n max,\n min,\n nodeRef,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]);\n\n const prevRange = useRef({ min, max, step });\n useEffect(() => {\n if (\n prevRange.current.min === min &&\n prevRange.current.max === max &&\n prevRange.current.step === step\n ) {\n return;\n }\n\n // ensure that if the `min`, `max`, or `step` value changes that the value\n // is updated as well. Without this, there will be a runtime error if the\n // value is not within the new range.\n prevRange.current = { min, max, step };\n setValue((prevValue) =>\n nearest({\n min,\n max,\n steps: getRangeSteps({ min, max, step }),\n value: prevValue,\n })\n );\n }, [max, min, setValue, step]);\n\n const mouseEventHandlers: Required<DraggableMouseEventHandlers<E>> = {\n onMouseDown: useCallback(\n (event) => {\n onMouseDown(event);\n if (disabled || isTouch || !isMouseDragStartEvent(event)) {\n return;\n }\n\n // dont' allow text to be selected\n event.preventDefault();\n updateDragPosition({\n isDragStart: true,\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n\n // don't set dragging immediately so that click events can still happen\n draggingRef.current = true;\n },\n [\n disabled,\n isRTL,\n isTouch,\n max,\n min,\n nodeRef,\n onMouseDown,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]\n ),\n onMouseMove: useCallback(\n (event) => {\n onMouseMove(event);\n if (disabled || isTouch || !draggingRef.current || dragging) {\n return;\n }\n\n updateDragPosition({\n isDragStart: true,\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n setDragging(true);\n },\n [\n disabled,\n dragging,\n isRTL,\n isTouch,\n max,\n min,\n nodeRef,\n onMouseMove,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]\n ),\n onMouseUp: useCallback(\n (event) => {\n onMouseUp(event);\n if (disabled || isTouch) {\n return;\n }\n\n draggingRef.current = false;\n },\n [disabled, isTouch, onMouseUp]\n ),\n };\n const keyboardEventHandlers: Required<DraggableKeyboardEventHandlers<E>> = {\n onKeyDown: useCallback(\n (event) => {\n onKeyDown(event);\n if (disabled) {\n return;\n }\n\n const decrementKey = vertical ? \"ArrowUp\" : \"ArrowLeft\";\n const incrementKey = vertical ? \"ArrowDown\" : \"ArrowRight\";\n\n switch (event.key) {\n case decrementKey:\n event.preventDefault();\n decrement();\n break;\n case incrementKey:\n event.preventDefault();\n increment();\n break;\n case \"Home\":\n event.preventDefault();\n minimum();\n break;\n case \"End\":\n event.preventDefault();\n maximum();\n break;\n }\n },\n [decrement, disabled, increment, maximum, minimum, onKeyDown, vertical]\n ),\n };\n\n // touch devices are a bit weird and cause issues since the \"start\" event is\n // also used for scrolling. If the user quickly grabs the draggable element\n // and drags vertically, most of the time it will try to scroll instead of\n // dragging the element. The workaround is to being the drag events\n // immediately on touchstart and disable scroll behavior for the page.\n //\n // There are also some issues with calling `event.preventDefault()` within\n // touch events even while `{ passive: false } is manually set, so need to\n // also attach a touchmove event.\n useScrollLock(isTouch && dragging);\n const touchEventHandlers: Required<DraggableTouchEventHandlers<E>> = {\n onTouchStart: useCallback(\n (event) => {\n onTouchStart(event);\n if (disabled || !isTouchDragStartEvent(event)) {\n return;\n }\n\n draggingRef.current = true;\n updateDragPosition({\n isDragStart: true,\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n },\n [\n disabled,\n isRTL,\n max,\n min,\n nodeRef,\n onTouchStart,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]\n ),\n onTouchMove: useCallback(\n (event) => {\n onTouchMove(event);\n if (disabled || !draggingRef.current || !event.cancelable) {\n return;\n }\n\n // prevent the document's touchmove event from also firing\n event.stopPropagation();\n updateDragPosition({\n isDragStart: true,\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n },\n [\n disabled,\n isRTL,\n max,\n min,\n nodeRef,\n onTouchMove,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]\n ),\n };\n\n return {\n ...touchEventHandlers,\n ...mouseEventHandlers,\n ...keyboardEventHandlers,\n value,\n setValue,\n dragging,\n setDragging,\n maximum,\n minimum,\n increment,\n decrement,\n draggedOnce,\n draggableRef: ref,\n dragPercentage,\n touchEventHandlers,\n mouseEventHandlers,\n keyboardEventHandlers,\n };\n}\n"],"names":["cnb","useCallback","useEffect","useRef","useState","useUserInteractionMode","useScrollLock","useDir","useEnsuredRef","useEnsuredState","useHtmlClassName","getRangeSteps","nearest","withinRange","getDraggableDefaultValue","isMouseDragStartEvent","isTouchDragStartEvent","updateDragPosition","noop","useDraggable","options","ref","propRef","min","max","rangeMin","rangeMax","step","reversed","vertical","onKeyDown","onMouseUp","onMouseDown","onMouseMove","onTouchStart","onTouchMove","dragging","propDragging","setDragging","propSetDragging","value","propValue","setValue","propSetValue","defaultValue","withinOffsetParent","disabled","disableDraggingClassName","disableDraggingCursorClassName","nodeRef","isTouch","draggingRef","dragPercentage","setDragPercentage","isRTL","dir","maximum","minimum","increment","prevValue","decrement","draggingClassName","draggedOnce","current","updatePosition","event","cancelable","preventDefault","stopPropagation","isDragStart","stopDragging","updateKey","stopKey","passive","undefined","window","addEventListener","removeEventListener","prevRange","steps","mouseEventHandlers","keyboardEventHandlers","decrementKey","incrementKey","key","touchEventHandlers","draggableRef"],"mappings":"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ACAJ;gBACAe;gBACAR;YACF;QACF,GACA;YACEC;YACAQ;YACA9B;YACAD;YACA0B;YACAf;YACAR;YACAD;YACAG;YACAU;YACAI;YACAf;YACAE;YACAgB;SACD;QAEHV,aAAalC,YACX,CAACgE;YACC9B,YAAY8B;YACZ,IAAInB,YAAY,CAACK,YAAYY,OAAO,IAAI,CAACE,MAAMC,UAAU,EAAE;gBACzD;YACF;YAEA,0DAA0D;YAC1DD,MAAMG,eAAe;YACrBnD,mBAAmB;gBACjBoD,aAAa;gBACbJ;gBACAhB;gBACA1B;gBACAC;gBACAG;gBACAF;gBACAC;gBACA4B;gBACA1B;gBACAC;gBACAa;gBACAJ;gBACAe;gBACAR;YACF;QACF,GACA;YACEC;YACAQ;YACA9B;YACAD;YACA0B;YACAd;YACAT;YACAD;YACAG;YACAU;YACAI;YACAf;YACAE;YACAgB;SACD;IAEL;IAEA,OAAO;QACL,GAAGwC,kBAAkB;QACrB,GAAGL,kBAAkB;QACrB,GAAGC,qBAAqB;QACxBzC;QACAE;QACAN;QACAE;QACAkB;QACAC;QACAC;QACAE;QACAE;QACAwB,cAAcjE;QACd+B;QACAiC;QACAL;QACAC;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/draggable/useDraggable.ts"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport type { HTMLAttributes, Ref, RefCallback } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useUserInteractionMode } from \"../interaction/UserInteractionModeProvider.js\";\nimport { useScrollLock } from \"../scroll/useScrollLock.js\";\nimport type {\n NonNullRef,\n UseStateInitializer,\n UseStateSetter,\n} from \"../types.js\";\nimport { useDir } from \"../typography/WritingDirectionProvider.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useEnsuredState } from \"../useEnsuredState.js\";\nimport { useHtmlClassName } from \"../useHtmlClassName.js\";\nimport { getPercentage } from \"../utils/getPercentage.js\";\nimport { getRangeDefaultValue } from \"../utils/getRangeDefaultValue.js\";\nimport { getRangeSteps } from \"../utils/getRangeSteps.js\";\nimport { nearest } from \"../utils/nearest.js\";\nimport { withinRange } from \"../utils/withinRange.js\";\nimport {\n isMouseDragStartEvent,\n isTouchDragStartEvent,\n updateDragPosition,\n} from \"./utils.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableTouchEventHandlers<E extends HTMLElement> = Pick<\n HTMLAttributes<E>,\n \"onTouchStart\" | \"onTouchMove\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableMouseEventHandlers<E extends HTMLElement> = Pick<\n HTMLAttributes<E>,\n \"onMouseDown\" | \"onMouseUp\" | \"onMouseMove\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableKeyboardEventHandlers<E extends HTMLElement> = Pick<\n HTMLAttributes<E>,\n \"onKeyDown\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableEventHandlers<E extends HTMLElement> =\n DraggableTouchEventHandlers<E> &\n DraggableMouseEventHandlers<E> &\n DraggableKeyboardEventHandlers<E>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ControllableDraggableStateOptions {\n value?: number;\n setValue?: UseStateSetter<number>;\n defaultValue?: UseStateInitializer<number>;\n dragging?: boolean;\n setDragging?: UseStateSetter<boolean>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface BaseDraggableOptions<E extends HTMLElement>\n extends DraggableEventHandlers<E>,\n ControllableDraggableStateOptions {\n /**\n * An optional ref to merge with the returned\n * {@link DraggableImplementation.draggableRef}.\n */\n ref?: Ref<E>;\n\n /**\n * The minimum number of pixels allowed for the draggable element. This must\n * be a number greater than or equal to 0.\n *\n * When {@link withinOffsetParent} is set to `true`, this is the minimum value\n * allowed instead of pixels.\n */\n min: number;\n\n /**\n * The maximum number of pixels allowed for the draggable element. This must\n * be a number greater than the {@link min} and usually a number less than the\n * viewport size.\n *\n * When {@link withinOffsetParent} is set to `true`, this is the maximum value\n * allowed instead of pixels.\n */\n max: number;\n\n /**\n * The amount to increment or decrement the value with arrow keys.\n *\n * @defaultValue `1`\n */\n step?: number;\n\n /**\n * This was added to support range sliders where there are two (or more)\n * draggable elements within the same container element and their values\n * cannot pass each other. Without these overrides, the range would keep\n * changing as the other values change, so the drag percentage would be\n * incorrect.\n *\n * @example\n * Range Slider\n * ```ts\n * const min = 0;\n * const max = 100;\n * const minValue = 3;\n * const maxValue = 80;\n *\n * const minValueDraggable = useDraggable({\n * min,\n * max,\n * rangeMax: maxValue,\n * });\n * const maxValueDraggable = useDraggable({\n * min,\n * max,\n * rangeMin: minValue,\n * });\n * ```\n *\n * @defaultValue `min`\n */\n rangeMin?: number;\n\n /**\n * @see {@link rangeMin} for an explanation of this option.\n * @defaultValue `max`\n */\n rangeMax?: number;\n\n /**\n * Set this to `true` to enable dragging vertically instead of horizontally.\n *\n * @defaultValue `false`\n */\n vertical?: boolean;\n\n /**\n * The default drag behavior is to increase the value when:\n *\n * - dragging `\"right\"` and the writing direction is `\"ltr\"`\n * - dragging `\"left\"` and the writing direction is `\"rtl\"`\n * - dragging `\"upwards\"`\n *\n * When this is set to `true`, the value when increase when:\n *\n * - dragging `\"left\"` and the writing direction is `\"ltr\"`\n * - dragging `\"right\"` and the writing direction is `\"rtl\"`\n * - dragging `\"downwards\"`\n *\n * @defaultValue `false`\n */\n reversed?: boolean;\n\n /**\n * Set this to `true` to disable all drag behavior. This will still call any\n * of the provided {@link DraggableEventHandlers}.\n *\n * @defaultValue `false`\n */\n disabled?: boolean;\n\n /**\n * Set this to `true` if the dragging calculations should be to the\n * `draggableRef.current.offsetParent` instead of the entire window. The main\n * use case for this is sliders.\n *\n * @defaultValue `false`\n */\n withinOffsetParent?: boolean;\n\n /**\n * Set this to `true` to prevent the `document.documentElement` from gaining\n * the `.rmd-dragging` class names while dragging.\n *\n * This should normally remain as `false` to improve performance and prevent\n * other mouse events from firing while dragging.\n *\n * @defaultValue `false`\n */\n disableDraggingClassName?: boolean;\n\n /**\n * Set this to `true` to prevent the vertical or horizontal cursor from\n * appearing while dragging.\n *\n * @defaultValue `false`\n */\n disableDraggingCursorClassName?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface UncontrolledDraggableOptions {\n value?: never;\n setValue?: never;\n dragging?: never;\n setDragging?: never;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ControlledValueDraggableOptions {\n value: number;\n setValue: UseStateSetter<number>;\n defaultValue?: never;\n dragging?: never;\n setDragging?: never;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ControlledDraggingDraggableOptions {\n value?: never;\n setValue?: never;\n defaultValue?: never;\n dragging: boolean;\n setDragging: UseStateSetter<boolean>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface FullyControlledDraggableOptions {\n value: number;\n setValue: UseStateSetter<number>;\n dragging: boolean;\n setDragging: UseStateSetter<boolean>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableStateOptions =\n | UncontrolledDraggableOptions\n | ControlledValueDraggableOptions\n | ControlledDraggingDraggableOptions\n | FullyControlledDraggableOptions;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type DraggableOptions<E extends HTMLElement = HTMLElement> =\n BaseDraggableOptions<E> & DraggableStateOptions;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface DraggableImplementation<E extends HTMLElement = HTMLElement>\n extends Required<DraggableEventHandlers<E>> {\n mouseEventHandlers: Required<DraggableMouseEventHandlers<E>>;\n touchEventHandlers: Required<DraggableTouchEventHandlers<E>>;\n keyboardEventHandlers: Required<DraggableKeyboardEventHandlers<E>>;\n\n /**\n * Set the {@link value} to {@link DraggableOptions.min}.\n */\n minimum(): void;\n\n /**\n * Set the {@link value} to {@link DraggableOptions.max}.\n */\n maximum(): void;\n\n /**\n * Increment the {@link value} by {@link DraggableOptions.step}.\n */\n increment(): void;\n\n /**\n * Decrement the {@link value} by {@link DraggableOptions.step}.\n */\n decrement(): void;\n\n /**\n * THe current percentage the `value` is within the range.\n *\n * ```ts\n * const percentage =\n * dragging && withinOffsetParent\n * ? : dragPercentage\n * : getPercentage({ min, max, value });\n * ```\n */\n percentage: number;\n\n /**\n * A ref that **Must** be passed to the element that should be draggable.\n */\n draggableRef: RefCallback<E>;\n\n /**\n * This value will only update while dragging with a mouse or touch and should\n * be used for the positioning styles while dragging.\n *\n * Note: The {@Link percentage} will use this value while dragging.\n */\n dragPercentage: number;\n\n /**\n * Flag to determine if the user has dragged at least once. Used internally\n * for manually persisting the value into local storage once the user has\n * stopped dragging.\n */\n draggedOnce: NonNullRef<boolean>;\n\n value: number;\n setValue: UseStateSetter<number>;\n dragging: boolean;\n setDragging: UseStateSetter<boolean>;\n}\n\n/**\n * This is most likely an internal only hook that provides the functionality for\n * dragging an element through mouse, touch, and keyboard events. The main use\n * cases so far for this hook are:\n * - window splitters\n * - sliders\n *\n * @remarks \\@since 6.0.0\n */\nexport function useDraggable<E extends HTMLElement>(\n options: DraggableOptions<E>\n): DraggableImplementation<E> {\n const {\n ref: propRef,\n min,\n max,\n rangeMin = min,\n rangeMax = max,\n step = 1,\n reversed = false,\n vertical = false,\n onKeyDown = noop,\n onMouseUp = noop,\n onMouseDown = noop,\n onMouseMove = noop,\n onTouchStart = noop,\n onTouchMove = noop,\n dragging: propDragging,\n setDragging: propSetDragging,\n value: propValue,\n setValue: propSetValue,\n defaultValue,\n withinOffsetParent = false,\n disabled = false,\n disableDraggingClassName = false,\n disableDraggingCursorClassName = disableDraggingClassName,\n } = options;\n\n const [nodeRef, ref] = useEnsuredRef(propRef);\n const isTouch = useUserInteractionMode() === \"touch\";\n const draggingRef = useRef(false);\n const [dragPercentage, setDragPercentage] = useState(min);\n const [value, setValue] = useEnsuredState({\n value: propValue,\n setValue: propSetValue,\n defaultValue: getRangeDefaultValue({\n min,\n max,\n step: 1,\n defaultValue,\n }),\n });\n const [dragging, setDragging] = useEnsuredState({\n value: propDragging,\n setValue: propSetDragging,\n defaultValue: false,\n });\n\n const isRTL = useDir().dir === \"rtl\";\n const percentage =\n dragging && withinOffsetParent\n ? dragPercentage\n : getPercentage({ min, max, value });\n const maximum = useCallback(() => {\n setValue(max);\n }, [max, setValue]);\n const minimum = useCallback(() => {\n setValue(min);\n }, [min, setValue]);\n const increment = useCallback(() => {\n setValue((prevValue) => withinRange({ min, max, value: prevValue + step }));\n }, [max, min, setValue, step]);\n const decrement = useCallback(() => {\n setValue((prevValue) => withinRange({ min, max, value: prevValue - step }));\n }, [max, min, setValue, step]);\n\n const draggingClassName = dragging && !disableDraggingClassName;\n useHtmlClassName(cnb(draggingClassName && \"rmd-dragging\"));\n useHtmlClassName(\n cnb(\n !disableDraggingCursorClassName &&\n draggingClassName &&\n `rmd-dragging--${vertical ? \"v\" : \"h\"}`\n )\n );\n\n const draggedOnce = useRef(false);\n useEffect(() => {\n if (!dragging) {\n return;\n }\n\n draggedOnce.current = true;\n const updatePosition = (event: MouseEvent | TouchEvent): void => {\n if (!event.cancelable) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n updateDragPosition({\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n isDragStart: false,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n };\n\n const stopDragging = (event: MouseEvent | TouchEvent): void => {\n updatePosition(event);\n draggingRef.current = false;\n setDragging(false);\n };\n\n const updateKey = isTouch ? \"touchmove\" : \"mousemove\";\n const stopKey = isTouch ? \"touchend\" : \"mouseup\";\n const passive = isTouch ? { passive: false } : undefined;\n\n window.addEventListener(updateKey, updatePosition, passive);\n window.addEventListener(stopKey, stopDragging);\n return () => {\n window.removeEventListener(updateKey, updatePosition);\n window.removeEventListener(stopKey, stopDragging);\n };\n }, [\n dragging,\n isRTL,\n isTouch,\n max,\n min,\n nodeRef,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]);\n\n const prevRange = useRef({ min, max, step });\n useEffect(() => {\n if (\n prevRange.current.min === min &&\n prevRange.current.max === max &&\n prevRange.current.step === step\n ) {\n return;\n }\n\n // ensure that if the `min`, `max`, or `step` value changes that the value\n // is updated as well. Without this, there will be a runtime error if the\n // value is not within the new range.\n prevRange.current = { min, max, step };\n setValue((prevValue) =>\n nearest({\n min,\n max,\n steps: getRangeSteps({ min, max, step }),\n value: prevValue,\n })\n );\n }, [max, min, setValue, step]);\n\n const mouseEventHandlers: Required<DraggableMouseEventHandlers<E>> = {\n onMouseDown: useCallback(\n (event) => {\n onMouseDown(event);\n if (disabled || isTouch || !isMouseDragStartEvent(event)) {\n return;\n }\n\n // dont' allow text to be selected\n event.preventDefault();\n updateDragPosition({\n isDragStart: true,\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n\n // don't set dragging immediately so that click events can still happen\n draggingRef.current = true;\n },\n [\n disabled,\n isRTL,\n isTouch,\n max,\n min,\n nodeRef,\n onMouseDown,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]\n ),\n onMouseMove: useCallback(\n (event) => {\n onMouseMove(event);\n if (disabled || isTouch || !draggingRef.current || dragging) {\n return;\n }\n\n updateDragPosition({\n isDragStart: true,\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n setDragging(true);\n },\n [\n disabled,\n dragging,\n isRTL,\n isTouch,\n max,\n min,\n nodeRef,\n onMouseMove,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]\n ),\n onMouseUp: useCallback(\n (event) => {\n onMouseUp(event);\n if (disabled || isTouch) {\n return;\n }\n\n draggingRef.current = false;\n },\n [disabled, isTouch, onMouseUp]\n ),\n };\n const keyboardEventHandlers: Required<DraggableKeyboardEventHandlers<E>> = {\n onKeyDown: useCallback(\n (event) => {\n onKeyDown(event);\n if (disabled) {\n return;\n }\n\n const decrementKey = vertical ? \"ArrowUp\" : \"ArrowLeft\";\n const incrementKey = vertical ? \"ArrowDown\" : \"ArrowRight\";\n\n switch (event.key) {\n case decrementKey:\n event.preventDefault();\n decrement();\n break;\n case incrementKey:\n event.preventDefault();\n increment();\n break;\n case \"Home\":\n event.preventDefault();\n minimum();\n break;\n case \"End\":\n event.preventDefault();\n maximum();\n break;\n }\n },\n [decrement, disabled, increment, maximum, minimum, onKeyDown, vertical]\n ),\n };\n\n // touch devices are a bit weird and cause issues since the \"start\" event is\n // also used for scrolling. If the user quickly grabs the draggable element\n // and drags vertically, most of the time it will try to scroll instead of\n // dragging the element. The workaround is to being the drag events\n // immediately on touchstart and disable scroll behavior for the page.\n //\n // There are also some issues with calling `event.preventDefault()` within\n // touch events even while `{ passive: false } is manually set, so need to\n // also attach a touchmove event.\n useScrollLock(isTouch && dragging);\n const touchEventHandlers: Required<DraggableTouchEventHandlers<E>> = {\n onTouchStart: useCallback(\n (event) => {\n onTouchStart(event);\n if (disabled || !isTouchDragStartEvent(event)) {\n return;\n }\n\n draggingRef.current = true;\n updateDragPosition({\n isDragStart: true,\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n },\n [\n disabled,\n isRTL,\n max,\n min,\n nodeRef,\n onTouchStart,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]\n ),\n onTouchMove: useCallback(\n (event) => {\n onTouchMove(event);\n if (disabled || !draggingRef.current || !event.cancelable) {\n return;\n }\n\n // prevent the document's touchmove event from also firing\n event.stopPropagation();\n updateDragPosition({\n isDragStart: true,\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n });\n },\n [\n disabled,\n isRTL,\n max,\n min,\n nodeRef,\n onTouchMove,\n rangeMax,\n rangeMin,\n reversed,\n setDragging,\n setValue,\n step,\n vertical,\n withinOffsetParent,\n ]\n ),\n };\n\n return {\n ...touchEventHandlers,\n ...mouseEventHandlers,\n ...keyboardEventHandlers,\n value,\n setValue,\n dragging,\n setDragging,\n maximum,\n minimum,\n increment,\n decrement,\n draggedOnce,\n draggableRef: ref,\n percentage,\n dragPercentage,\n touchEventHandlers,\n mouseEventHandlers,\n keyboardEventHandlers,\n };\n}\n"],"names":["cnb","useCallback","useEffect","useRef","useState","useUserInteractionMode","useScrollLock","useDir","useEnsuredRef","useEnsuredState","useHtmlClassName","getPercentage","getRangeDefaultValue","getRangeSteps","nearest","withinRange","isMouseDragStartEvent","isTouchDragStartEvent","updateDragPosition","noop","useDraggable","options","ref","propRef","min","max","rangeMin","rangeMax","step","reversed","vertical","onKeyDown","onMouseUp","onMouseDown","onMouseMove","onTouchStart","onTouchMove","dragging","propDragging","setDragging","propSetDragging","value","propValue","setValue","propSetValue","defaultValue","withinOffsetParent","disabled","disableDraggingClassName","disableDraggingCursorClassName","nodeRef","isTouch","draggingRef","dragPercentage","setDragPercentage","isRTL","dir","percentage","maximum","minimum","increment","prevValue","decrement","draggingClassName","draggedOnce","current","updatePosition","event","cancelable","preventDefault","stopPropagation","isDragStart","stopDragging","updateKey","stopKey","passive","undefined","window","addEventListener","removeEventListener","prevRange","steps","mouseEventHandlers","keyboardEventHandlers","decrementKey","incrementKey","key","touchEventHandlers","draggableRef"],"mappings":"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AAO,GAAG;YACtB/C,mBAAmB;gBACjBqD,aAAa;gBACbJ;gBACAjB;gBACA1B;gBACAC;gBACAG;gBACAF;gBACAC;gBACA4B;gBACA1B;gBACAC;gBACAa;gBACAJ;gBACAe;gBACAR;YACF;QACF,GACA;YACEC;YACAQ;YACA9B;YACAD;YACA0B;YACAf;YACAR;YACAD;YACAG;YACAU;YACAI;YACAf;YACAE;YACAgB;SACD;QAEHV,aAAanC,YACX,CAACkE;YACC/B,YAAY+B;YACZ,IAAIpB,YAAY,CAACK,YAAYa,OAAO,IAAI,CAACE,MAAMC,UAAU,EAAE;gBACzD;YACF;YAEA,0DAA0D;YAC1DD,MAAMG,eAAe;YACrBpD,mBAAmB;gBACjBqD,aAAa;gBACbJ;gBACAjB;gBACA1B;gBACAC;gBACAG;gBACAF;gBACAC;gBACA4B;gBACA1B;gBACAC;gBACAa;gBACAJ;gBACAe;gBACAR;YACF;QACF,GACA;YACEC;YACAQ;YACA9B;YACAD;YACA0B;YACAd;YACAT;YACAD;YACAG;YACAU;YACAI;YACAf;YACAE;YACAgB;SACD;IAEL;IAEA,OAAO;QACL,GAAGyC,kBAAkB;QACrB,GAAGL,kBAAkB;QACrB,GAAGC,qBAAqB;QACxB1C;QACAE;QACAN;QACAE;QACAmB;QACAC;QACAC;QACAE;QACAE;QACAwB,cAAclE;QACdmC;QACAJ;QACAkC;QACAL;QACAC;IACF;AACF"}
@@ -1,6 +1,5 @@
1
- import type { MouseEvent, RefObject, TouchEvent } from "react";
2
- import type { UseStateInitializer } from "../types.js";
3
- import type { ClientPositionEvent, ClientPositionOptions } from "../utils/getClientPosition.js";
1
+ import { type MouseEvent, type RefObject, type TouchEvent } from "react";
2
+ import { type ClientPositionEvent, type ClientPositionOptions } from "../utils/getClientPosition.js";
4
3
  /**
5
4
  * @internal
6
5
  */
@@ -28,6 +27,8 @@ interface RelativeDragPositionOptions extends DragPositionOptions {
28
27
  min: number;
29
28
  max: number;
30
29
  step: number;
30
+ rangeMin: number;
31
+ rangeMax: number;
31
32
  }
32
33
  /**
33
34
  * @internal
@@ -47,8 +48,6 @@ interface UpdateDragPositionOptions extends Omit<RelativeDragPositionOptions, "c
47
48
  event: ClientPositionEvent;
48
49
  nodeRef: RefObject<HTMLElement>;
49
50
  focus?: boolean;
50
- rangeMin: number;
51
- rangeMax: number;
52
51
  isDragStart: boolean;
53
52
  setValue(value: number): void;
54
53
  setDragging(dragging: boolean): void;
@@ -59,18 +58,6 @@ interface UpdateDragPositionOptions extends Omit<RelativeDragPositionOptions, "c
59
58
  * @internal
60
59
  */
61
60
  export declare const updateDragPosition: (options: UpdateDragPositionOptions) => void;
62
- /**
63
- * @internal
64
- */
65
- export interface DraggableDefaultValueOptions {
66
- min: number;
67
- max: number;
68
- defaultValue: UseStateInitializer<number> | undefined;
69
- }
70
- /**
71
- * @internal
72
- */
73
- export declare function getDraggableDefaultValue(options: DraggableDefaultValueOptions): number;
74
61
  /**
75
62
  * @internal
76
63
  * @remarks \@since 6.0.0
@@ -30,7 +30,7 @@ import { withinRange } from "../utils/withinRange.js";
30
30
  /**
31
31
  * @internal
32
32
  */ export const getRelativeDragPosition = (options)=>{
33
- const { min, max, step, isRTL, vertical, container } = options;
33
+ const { min, max, rangeMin, rangeMax, step, isRTL, vertical, container } = options;
34
34
  const { height, width, left, top } = container.getBoundingClientRect();
35
35
  const containerSize = vertical ? height : width;
36
36
  const containerPosition = vertical ? top + height : left;
@@ -41,13 +41,13 @@ import { withinRange } from "../utils/withinRange.js";
41
41
  if (isRTL && !vertical) {
42
42
  dragPercentage = 1 - dragPercentage;
43
43
  }
44
- const range = max - min;
44
+ const range = rangeMax - rangeMin;
45
45
  const steps = getRangeSteps({
46
- min,
47
- max,
46
+ min: rangeMin,
47
+ max: rangeMax,
48
48
  step
49
49
  });
50
- const value = dragPercentage * range + min;
50
+ const value = dragPercentage * range + rangeMin;
51
51
  const nextValue = nearest({
52
52
  min,
53
53
  max,
@@ -101,8 +101,10 @@ import { withinRange } from "../utils/withinRange.js";
101
101
  return;
102
102
  }
103
103
  const { value, dragPercentage } = getRelativeDragPosition({
104
- min: rangeMin,
105
- max: rangeMax,
104
+ min,
105
+ max,
106
+ rangeMin,
107
+ rangeMax,
106
108
  step,
107
109
  event,
108
110
  isRTL,
@@ -113,24 +115,6 @@ import { withinRange } from "../utils/withinRange.js";
113
115
  setValue(value);
114
116
  setDragPercentage(dragPercentage);
115
117
  };
116
- /**
117
- * @internal
118
- */ export function getDraggableDefaultValue(options) {
119
- const { min, max, defaultValue } = options;
120
- let value;
121
- if (typeof defaultValue === "function") {
122
- value = defaultValue();
123
- } else if (typeof defaultValue === "undefined") {
124
- value = Math.ceil((max - min) / 2);
125
- } else {
126
- value = defaultValue;
127
- }
128
- if (value < min || value > max) {
129
- // TODO: Determine if this should just be a `Math.min(Math.max(min, value), max)` instead
130
- throw new Error("useDraggable default value must be between the min and max values");
131
- }
132
- return value;
133
- }
134
118
  /**
135
119
  * @internal
136
120
  * @remarks \@since 6.0.0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/draggable/utils.ts"],"sourcesContent":["import type { MouseEvent, RefObject, TouchEvent } from \"react\";\nimport type { UseStateInitializer } from \"../types.js\";\nimport type {\n ClientPositionEvent,\n ClientPositionOptions,\n} from \"../utils/getClientPosition.js\";\nimport { getClientPosition } from \"../utils/getClientPosition.js\";\nimport { getRangeSteps } from \"../utils/getRangeSteps.js\";\nimport { nearest } from \"../utils/nearest.js\";\nimport { withinRange } from \"../utils/withinRange.js\";\n\n/**\n * @internal\n */\nexport const isMouseDragStartEvent = (event: MouseEvent): boolean =>\n event.button === 0 &&\n !event.altKey &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey;\n\n/**\n * @internal\n */\nexport const isTouchDragStartEvent = (event: TouchEvent): boolean =>\n event.changedTouches.length === 1;\n\n/**\n * @internal\n */\ninterface DragPositionOptions extends ClientPositionOptions {\n isRTL: boolean;\n reversed: boolean;\n container: Element;\n}\n\n/**\n * @internal\n */\nexport const getDragPosition = (options: DragPositionOptions): number => {\n const { isRTL, reversed, vertical, container } = options;\n\n const clientPosition = getClientPosition(options);\n const { left, right, top } = container.getBoundingClientRect();\n if (vertical) {\n if (reversed) {\n return window.innerHeight - clientPosition;\n }\n\n // added `Math.max` since the `top` will be a negative number if rendered\n // within a portal element like a dialog/sheet\n return clientPosition - Math.max(0, top);\n }\n\n if (reversed ? !isRTL : isRTL) {\n return right - clientPosition;\n }\n\n return clientPosition - left;\n};\n\n/**\n * @internal\n */\ninterface RelativeDragPositionOptions extends DragPositionOptions {\n min: number;\n max: number;\n step: number;\n}\n\n/**\n * @internal\n */\ninterface RelativeDragPosition {\n value: number;\n dragPercentage: number;\n}\n\n/**\n * @internal\n */\nexport const getRelativeDragPosition = (\n options: RelativeDragPositionOptions\n): RelativeDragPosition => {\n const { min, max, step, isRTL, vertical, container } = options;\n\n const { height, width, left, top } = container.getBoundingClientRect();\n const containerSize = vertical ? height : width;\n const containerPosition = vertical ? top + height : left;\n const clientPosition = getClientPosition(options);\n\n const position = vertical\n ? containerPosition - clientPosition\n : clientPosition - containerPosition;\n const distanceDragged = Math.min(Math.max(0, position), containerSize);\n let dragPercentage = distanceDragged / containerSize;\n if (isRTL && !vertical) {\n dragPercentage = 1 - dragPercentage;\n }\n\n const range = max - min;\n const steps = getRangeSteps({ min, max, step });\n const value = dragPercentage * range + min;\n const nextValue = nearest({\n min,\n max,\n steps,\n range,\n value,\n });\n\n return {\n value: nextValue,\n dragPercentage,\n };\n};\n\n/**\n * @internal\n */\ninterface UpdateDragPositionOptions\n extends Omit<RelativeDragPositionOptions, \"container\"> {\n event: ClientPositionEvent;\n nodeRef: RefObject<HTMLElement>;\n focus?: boolean;\n rangeMin: number;\n rangeMax: number;\n isDragStart: boolean;\n setValue(value: number): void;\n setDragging(dragging: boolean): void;\n setDragPercentage(value: number): void;\n withinOffsetParent: boolean;\n}\n\n/**\n * @internal\n */\nexport const updateDragPosition = (\n options: UpdateDragPositionOptions\n): void => {\n const {\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n isDragStart,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n } = options;\n\n const element = nodeRef.current;\n if (!element) {\n return;\n }\n\n if (isDragStart) {\n // need to focus so that Chromium based browsers allow drag events. this\n // really appeared while trying to create a DnD tree\n element.focus({ preventScroll: true });\n\n if (!withinOffsetParent && !(\"changedTouches\" in event)) {\n return;\n }\n\n // unlike the other flow, start dragging immediately so that you can trigger\n // a mousedown or touchstart event on the container element and drag until\n // the user lets go\n setDragging(true);\n }\n\n // firefox defaults to `document.body` while chrome will return `null`\n const container = element.offsetParent || document.body;\n if (!withinOffsetParent) {\n const dragPosition = getDragPosition({\n event,\n isRTL,\n reversed,\n vertical,\n container,\n });\n const nextValue = withinRange({\n min,\n max,\n value: dragPosition,\n });\n setValue(nextValue);\n\n return;\n }\n\n const { value, dragPercentage } = getRelativeDragPosition({\n min: rangeMin,\n max: rangeMax,\n step,\n event,\n isRTL,\n reversed,\n vertical,\n container,\n });\n\n setValue(value);\n setDragPercentage(dragPercentage);\n};\n\n/**\n * @internal\n */\nexport interface DraggableDefaultValueOptions {\n min: number;\n max: number;\n defaultValue: UseStateInitializer<number> | undefined;\n}\n\n/**\n * @internal\n */\nexport function getDraggableDefaultValue(\n options: DraggableDefaultValueOptions\n): number {\n const { min, max, defaultValue } = options;\n\n let value: number;\n if (typeof defaultValue === \"function\") {\n value = defaultValue();\n } else if (typeof defaultValue === \"undefined\") {\n value = Math.ceil((max - min) / 2);\n } else {\n value = defaultValue;\n }\n\n if (value < min || value > max) {\n // TODO: Determine if this should just be a `Math.min(Math.max(min, value), max)` instead\n throw new Error(\n \"useDraggable default value must be between the min and max values\"\n );\n }\n\n return value;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface DeserializeDraggableValueOptions {\n min: number;\n max: number;\n item: string;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function deserializeDraggableValue(\n options: DeserializeDraggableValueOptions\n): number {\n const { item, min, max } = options;\n\n const value = parseFloat(item);\n if (Number.isNaN(item)) {\n return min;\n }\n\n return Math.max(min, Math.min(max, value));\n}\n"],"names":["getClientPosition","getRangeSteps","nearest","withinRange","isMouseDragStartEvent","event","button","altKey","metaKey","ctrlKey","shiftKey","isTouchDragStartEvent","changedTouches","length","getDragPosition","options","isRTL","reversed","vertical","container","clientPosition","left","right","top","getBoundingClientRect","window","innerHeight","Math","max","getRelativeDragPosition","min","step","height","width","containerSize","containerPosition","position","distanceDragged","dragPercentage","range","steps","value","nextValue","updateDragPosition","nodeRef","rangeMin","rangeMax","isDragStart","setValue","setDragging","setDragPercentage","withinOffsetParent","element","current","focus","preventScroll","offsetParent","document","body","dragPosition","getDraggableDefaultValue","defaultValue","ceil","Error","deserializeDraggableValue","item","parseFloat","Number","isNaN"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/draggable/utils.ts"],"sourcesContent":["import { type MouseEvent, type RefObject, type TouchEvent } from \"react\";\nimport {\n getClientPosition,\n type ClientPositionEvent,\n type ClientPositionOptions,\n} from \"../utils/getClientPosition.js\";\nimport { getRangeSteps } from \"../utils/getRangeSteps.js\";\nimport { nearest } from \"../utils/nearest.js\";\nimport { withinRange } from \"../utils/withinRange.js\";\n\n/**\n * @internal\n */\nexport const isMouseDragStartEvent = (event: MouseEvent): boolean =>\n event.button === 0 &&\n !event.altKey &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey;\n\n/**\n * @internal\n */\nexport const isTouchDragStartEvent = (event: TouchEvent): boolean =>\n event.changedTouches.length === 1;\n\n/**\n * @internal\n */\ninterface DragPositionOptions extends ClientPositionOptions {\n isRTL: boolean;\n reversed: boolean;\n container: Element;\n}\n\n/**\n * @internal\n */\nexport const getDragPosition = (options: DragPositionOptions): number => {\n const { isRTL, reversed, vertical, container } = options;\n\n const clientPosition = getClientPosition(options);\n const { left, right, top } = container.getBoundingClientRect();\n if (vertical) {\n if (reversed) {\n return window.innerHeight - clientPosition;\n }\n\n // added `Math.max` since the `top` will be a negative number if rendered\n // within a portal element like a dialog/sheet\n return clientPosition - Math.max(0, top);\n }\n\n if (reversed ? !isRTL : isRTL) {\n return right - clientPosition;\n }\n\n return clientPosition - left;\n};\n\n/**\n * @internal\n */\ninterface RelativeDragPositionOptions extends DragPositionOptions {\n min: number;\n max: number;\n step: number;\n rangeMin: number;\n rangeMax: number;\n}\n\n/**\n * @internal\n */\ninterface RelativeDragPosition {\n value: number;\n dragPercentage: number;\n}\n\n/**\n * @internal\n */\nexport const getRelativeDragPosition = (\n options: RelativeDragPositionOptions\n): RelativeDragPosition => {\n const { min, max, rangeMin, rangeMax, step, isRTL, vertical, container } =\n options;\n\n const { height, width, left, top } = container.getBoundingClientRect();\n const containerSize = vertical ? height : width;\n const containerPosition = vertical ? top + height : left;\n const clientPosition = getClientPosition(options);\n\n const position = vertical\n ? containerPosition - clientPosition\n : clientPosition - containerPosition;\n const distanceDragged = Math.min(Math.max(0, position), containerSize);\n let dragPercentage = distanceDragged / containerSize;\n if (isRTL && !vertical) {\n dragPercentage = 1 - dragPercentage;\n }\n\n const range = rangeMax - rangeMin;\n const steps = getRangeSteps({ min: rangeMin, max: rangeMax, step });\n const value = dragPercentage * range + rangeMin;\n const nextValue = nearest({\n min,\n max,\n steps,\n range,\n value,\n });\n\n return {\n value: nextValue,\n dragPercentage,\n };\n};\n\n/**\n * @internal\n */\ninterface UpdateDragPositionOptions\n extends Omit<RelativeDragPositionOptions, \"container\"> {\n event: ClientPositionEvent;\n nodeRef: RefObject<HTMLElement>;\n focus?: boolean;\n isDragStart: boolean;\n setValue(value: number): void;\n setDragging(dragging: boolean): void;\n setDragPercentage(value: number): void;\n withinOffsetParent: boolean;\n}\n\n/**\n * @internal\n */\nexport const updateDragPosition = (\n options: UpdateDragPositionOptions\n): void => {\n const {\n event,\n nodeRef,\n min,\n max,\n step,\n rangeMin,\n rangeMax,\n isRTL,\n reversed,\n vertical,\n isDragStart,\n setValue,\n setDragging,\n setDragPercentage,\n withinOffsetParent,\n } = options;\n\n const element = nodeRef.current;\n if (!element) {\n return;\n }\n\n if (isDragStart) {\n // need to focus so that Chromium based browsers allow drag events. this\n // really appeared while trying to create a DnD tree\n element.focus({ preventScroll: true });\n\n if (!withinOffsetParent && !(\"changedTouches\" in event)) {\n return;\n }\n\n // unlike the other flow, start dragging immediately so that you can trigger\n // a mousedown or touchstart event on the container element and drag until\n // the user lets go\n setDragging(true);\n }\n\n // firefox defaults to `document.body` while chrome will return `null`\n const container = element.offsetParent || document.body;\n if (!withinOffsetParent) {\n const dragPosition = getDragPosition({\n event,\n isRTL,\n reversed,\n vertical,\n container,\n });\n const nextValue = withinRange({\n min,\n max,\n value: dragPosition,\n });\n setValue(nextValue);\n\n return;\n }\n\n const { value, dragPercentage } = getRelativeDragPosition({\n min,\n max,\n rangeMin,\n rangeMax,\n step,\n event,\n isRTL,\n reversed,\n vertical,\n container,\n });\n\n setValue(value);\n setDragPercentage(dragPercentage);\n};\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface DeserializeDraggableValueOptions {\n min: number;\n max: number;\n item: string;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function deserializeDraggableValue(\n options: DeserializeDraggableValueOptions\n): number {\n const { item, min, max } = options;\n\n const value = parseFloat(item);\n if (Number.isNaN(item)) {\n return min;\n }\n\n return Math.max(min, Math.min(max, value));\n}\n"],"names":["getClientPosition","getRangeSteps","nearest","withinRange","isMouseDragStartEvent","event","button","altKey","metaKey","ctrlKey","shiftKey","isTouchDragStartEvent","changedTouches","length","getDragPosition","options","isRTL","reversed","vertical","container","clientPosition","left","right","top","getBoundingClientRect","window","innerHeight","Math","max","getRelativeDragPosition","min","rangeMin","rangeMax","step","height","width","containerSize","containerPosition","position","distanceDragged","dragPercentage","range","steps","value","nextValue","updateDragPosition","nodeRef","isDragStart","setValue","setDragging","setDragPercentage","withinOffsetParent","element","current","focus","preventScroll","offsetParent","document","body","dragPosition","deserializeDraggableValue","item","parseFloat","Number","isNaN"],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  @use "../transition/transition";
3
3
  @use "../icon/icon";
4
4
  @use "../button/button";
5
+ @use "../theme/theme";
5
6
 
6
7
  $disable-everything: false !default;
7
8
  $disable-margin-top-transition: false !default;
@@ -12,6 +13,9 @@ $button-spacing: icon.$spacing !default;
12
13
  $rotate-from: icon.$rotate-from !default;
13
14
  $rotate-to: icon.$rotate-to !default;
14
15
 
16
+ $box-shadow-overlay-height: 10px !default;
17
+ $box-shadow-overlay-bottom: -6px !default;
18
+
15
19
  @mixin styles {
16
20
  @if not $disable-everything {
17
21
  // does not require custom styles
@@ -28,23 +32,28 @@ $rotate-to: icon.$rotate-to !default;
28
32
  }
29
33
  }
30
34
 
31
- // once firefox supports the `:has` selector, I can handle most of this in CSS instead of javascript:
32
- // &:where(:not(.rmd-expansion-panel--expanded)):has(+ .rmd-expansion-panel) {
33
- // border-bottom-left-radius: 0;
34
- // border-bottom-right-radius: 0;
35
- // position: relative;
35
+ @if not utils.$disable-has-selectors {
36
+ // this makes it so that the box-shadow between closed panels is not
37
+ // visible by covering it in a small overlay of the current
38
+ // background-color
39
+ &:where(:not(.rmd-expansion-panel--expanded)):has(
40
+ + .rmd-expansion-panel
41
+ ) {
42
+ position: relative;
43
+
44
+ &::after {
45
+ @include theme.theme-use-var(background-color);
36
46
 
37
- // &::after {
38
- // background: #fff;
39
- // bottom: -5px;
40
- // content: "";
41
- // height: 8px;
42
- // left: 0;
43
- // position: absolute;
44
- // right: 0;
45
- // z-index: 1;
46
- // }
47
- // }
47
+ bottom: $box-shadow-overlay-bottom;
48
+ content: "";
49
+ height: $box-shadow-overlay-height;
50
+ left: 0;
51
+ position: absolute;
52
+ right: 0;
53
+ z-index: 1;
54
+ }
55
+ }
56
+ }
48
57
  }
49
58
 
50
59
  // .rmd-expansion-panel__header {
@@ -20,7 +20,7 @@ export interface ExpansionPanelHookOptions {
20
20
  *
21
21
  * @defaultValue `false`
22
22
  */
23
- preventAllClosed?: boolean;
23
+ preventAllCollapsed?: boolean;
24
24
  /**
25
25
  * This is a convenience option to disable the expansion transition for all
26
26
  * panels.
@@ -29,7 +29,7 @@ export interface ExpansionPanelHookOptions {
29
29
  */
30
30
  disableTransition?: boolean;
31
31
  /**
32
- * @defaultValue `preventAllClosed ? ["expansion-panel-" + useId() + "-1"] : []`
32
+ * @defaultValue `preventAllCollapsed ? ["expansion-panel-" + useId() + "-1"] : []`
33
33
  */
34
34
  defaultExpandedIds?: UseStateInitializer<string[]>;
35
35
  /**
@@ -58,7 +58,9 @@ export interface ExpansionPanelHookOptions {
58
58
  disableContentPadding?: boolean;
59
59
  }
60
60
  /** @remarks \@since 6.0.0 */
61
- export type ProvidedExpansionPanelProps = Pick<Required<ExpansionPanelProps>, "id" | "disabled" | "expanded" | "onExpandClick" | "disableTransition" | "disableContentPadding">;
61
+ export type ProvidedExpansionPanelProps = Pick<Required<ExpansionPanelProps>, "disabled" | "expanded" | "onExpandClick" | "disableTransition" | "disableContentPadding"> & {
62
+ id?: string;
63
+ };
62
64
  /**
63
65
  * @param indexOrPanelId - This should either be a DOM id to use for the panel
64
66
  * or the panel's index.
@@ -80,13 +80,13 @@ import { useEnsuredId } from "../useEnsuredId.js";
80
80
  * panel props based on the provided `count`, and the hook no longer supports
81
81
  * having all panels expanded by default.
82
82
  */ export function useExpansionPanels(options = {}) {
83
- const { baseId: propBaseId, multiple = false, preventAllClosed = false, disableTransition = false, defaultExpandedIds, defaultExpandedIndex, disableContentPadding = false } = options;
83
+ const { baseId: propBaseId, multiple = false, preventAllCollapsed = false, disableTransition = false, defaultExpandedIds, defaultExpandedIndex, disableContentPadding = false } = options;
84
84
  const baseId = useEnsuredId(propBaseId, "expansion-panel");
85
85
  const createId = (index)=>`${baseId}-${index + 1}`;
86
86
  const [expandedIds, setExpandedIds] = useState(()=>{
87
87
  if (typeof defaultExpandedIds === "undefined") {
88
88
  const initialList = [];
89
- if (typeof defaultExpandedIndex === "number" || preventAllClosed) {
89
+ if (typeof defaultExpandedIndex === "number" || preventAllCollapsed) {
90
90
  initialList.push(createId(defaultExpandedIndex ?? 0));
91
91
  }
92
92
  return new Set(initialList);
@@ -98,9 +98,16 @@ import { useEnsuredId } from "../useEnsuredId.js";
98
98
  expandedIds,
99
99
  setExpandedIds,
100
100
  getPanelProps (indexOrPanelId) {
101
- const id = typeof indexOrPanelId === "string" ? indexOrPanelId : createId(indexOrPanelId);
102
- const expanded = expandedIds.has(id);
103
- const disabled = expanded && preventAllClosed && expandedIds.size === 1;
101
+ let id;
102
+ let panelId;
103
+ if (typeof indexOrPanelId === "number") {
104
+ id = createId(indexOrPanelId);
105
+ panelId = id;
106
+ } else {
107
+ panelId = indexOrPanelId;
108
+ }
109
+ const expanded = expandedIds.has(panelId);
110
+ const disabled = expanded && preventAllCollapsed && expandedIds.size === 1;
104
111
  return {
105
112
  id,
106
113
  disabled,
@@ -110,17 +117,17 @@ import { useEnsuredId } from "../useEnsuredId.js";
110
117
  return;
111
118
  }
112
119
  setExpandedIds((prevIds)=>{
113
- const expanded = prevIds.has(id);
120
+ const expanded = prevIds.has(panelId);
114
121
  if (!multiple) {
115
122
  return new Set(expanded ? [] : [
116
- id
123
+ panelId
117
124
  ]);
118
125
  }
119
126
  const nextIds = new Set(prevIds);
120
127
  if (expanded) {
121
- nextIds.delete(id);
128
+ nextIds.delete(panelId);
122
129
  } else {
123
- nextIds.add(id);
130
+ nextIds.add(panelId);
124
131
  }
125
132
  return nextIds;
126
133
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expansion-panel/useExpansionPanels.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport type { UseStateInitializer, UseStateSetter } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport type { ExpansionPanelProps } from \"./ExpansionPanel.js\";\n\n/** @remarks \\@since 6.0.0 */\nexport interface ExpansionPanelHookOptions {\n /**\n * An optional id to prefix each panel with.\n *\n * @defaultValue `\"expansion-panel-\" + useId()`\n */\n baseId?: string;\n\n /**\n * Set this to `true` if multiple panels can be open at the same time.\n *\n * @defaultValue `false`\n */\n multiple?: boolean;\n\n /**\n * Set this to `true` to enforce that at least one panel must always be\n * expanded.\n *\n * @defaultValue `false`\n */\n preventAllClosed?: boolean;\n\n /**\n * This is a convenience option to disable the expansion transition for all\n * panels.\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * @defaultValue `preventAllClosed ? [\"expansion-panel-\" + useId() + \"-1\"] : []`\n */\n defaultExpandedIds?: UseStateInitializer<string[]>;\n\n /**\n * This can only be used if the {@link defaultExpandedIds} was not provided\n * and using index based panels.\n *\n * @example\n * ```tsx\n * const { getPanelProps } = useExpansionPanels({\n * defaultExpandedIndex: 2,\n * });\n *\n * return (\n * <ExpansionPanel {...getPanelProps(0)} />\n * <ExpansionPanel {...getPanelProps(1)} />\n * // expanded on first render\n * <ExpansionPanel {...getPanelProps(2)} />\n * <ExpansionPanel {...getPanelProps(3)} />\n * );\n * ```\n */\n defaultExpandedIndex?: number;\n\n /**\n * @defaultValue `false`\n */\n disableContentPadding?: boolean;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport type ProvidedExpansionPanelProps = Pick<\n Required<ExpansionPanelProps>,\n | \"id\"\n | \"disabled\"\n | \"expanded\"\n | \"onExpandClick\"\n | \"disableTransition\"\n | \"disableContentPadding\"\n>;\n\n/**\n * @param indexOrPanelId - This should either be a DOM id to use for the panel\n * or the panel's index.\n * @returns Props to pass to an `ExpansionPanel` for it to work correctly.\n * @remarks \\@since 6.0.0\n */\nexport type GetExpansionPanelProps = (\n indexOrPanelId: string | number\n) => ProvidedExpansionPanelProps;\n\n/** @remarks \\@since 6.0.0 */\nexport interface ExpansionPanelImplementation {\n /**\n * The current set of expanded panel ids if you need this for some reason.\n */\n expandedIds: ReadonlySet<string>;\n\n /**\n * This can be used to manually control which panels are expanded if the\n * default behavior does not work for your use case.\n */\n setExpandedIds: UseStateSetter<ReadonlySet<string>>;\n\n /**\n * @example\n * Index Based Panels\n * ```tsx\n * <ExpansionPanel {...getPanelProps(0)} />\n * <ExpansionPanel {...getPanelProps(1)} />\n * <ExpansionPanel {...getPanelProps(2)} />\n * ```\n *\n * @example\n * Custom Panel Ids\n * ```tsx\n * <ExpansionPanel {...getPanelProps(\"address-panel\")} />\n * <ExpansionPanel {...getPanelProps(\"billing-panel\")} />\n * <ExpansionPanel {...getPanelProps(\"confirmation-panel\")} />\n * ```\n */\n getPanelProps: GetExpansionPanelProps;\n}\n\n/**\n * Use this hook to control the expanded state for a group of `ExpansionPanel`.\n *\n * @example\n * Index Based Panels\n * ```tsx\n * import {\n * ExpansionList,\n * ExpansionPanel,\n * useExpansionPanels,\n * } from \"@react-md/core\";\n * import { type ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const { getPanelProps } = useExpansionPanels();\n *\n * return (\n * <ExpansionList>\n * <ExpansionPanel {...getPanelProps(0)} headerChildren=\"Panel 1\">\n * Panel 1 Contents\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(1)} headerChildren=\"Panel 2\">\n * Panel 2 Contents\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(2)} headerChildren=\"Panel 3\">\n * Panel 3 Contents\n * </ExpansionPanel>\n * </ExpansionList>\n * );\n * }\n * ```\n *\n * @example\n * Custom Panel Ids and Expand All Panels by Default\n * ```tsx\n * import {\n * ExpansionList,\n * ExpansionPanel,\n * useExpansionPanels,\n * } from \"@react-md/core\";\n * import { type ReactElement } from \"react\";\n *\n * import { BillingAddress } from \"./BillingAddress\";\n * import { BillingInformation } from \"./BillingInformation\";\n * import { PersonalInformation } from \"./PersonalInformation\";\n *\n * const panel1Id = \"personal-information-panel\";\n * const panel2Id = \"billing-information-panel\";\n * const panel3Id = \"billing-address-panel\";\n *\n * function Example(): ReactElement {\n * const { getPanelProps } = useExpansionPanels({\n * multiple: true,\n * defaultExpandedIds: () => [panel1Id, panel2Id, panel3Id],\n * });\n *\n * return (\n * <ExpansionList>\n * <ExpansionPanel {...getPanelProps(panel1Id)} headerChildren=\"Personal Information\">\n * <PersonalInformation />\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(panel2Id)} headerChildren=\"Billing Information\">\n * <BillingInformation />\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(panel3Id)} headerChildren=\"Billing Address\">\n * <BillingAddress />\n * </ExpansionPanel>\n * </ExpansionList>\n * );\n * }\n * ```\n *\n *\n * @remarks\n * \\@since 6.0.0 The hook was renamed from `usePanels` to `useExpansionPanels`,\n * the API changed to return `getPanelProps` instead of a generated list of\n * panel props based on the provided `count`, and the hook no longer supports\n * having all panels expanded by default.\n */\nexport function useExpansionPanels(\n options: ExpansionPanelHookOptions = {}\n): ExpansionPanelImplementation {\n const {\n baseId: propBaseId,\n multiple = false,\n preventAllClosed = false,\n disableTransition = false,\n defaultExpandedIds,\n defaultExpandedIndex,\n disableContentPadding = false,\n } = options;\n\n const baseId = useEnsuredId(propBaseId, \"expansion-panel\");\n const createId = (index: number): string => `${baseId}-${index + 1}`;\n const [expandedIds, setExpandedIds] = useState<ReadonlySet<string>>(() => {\n if (typeof defaultExpandedIds === \"undefined\") {\n const initialList: string[] = [];\n if (typeof defaultExpandedIndex === \"number\" || preventAllClosed) {\n initialList.push(createId(defaultExpandedIndex ?? 0));\n }\n\n return new Set(initialList);\n }\n\n const ids =\n typeof defaultExpandedIds === \"function\"\n ? defaultExpandedIds()\n : defaultExpandedIds;\n return new Set(ids);\n });\n\n return {\n expandedIds,\n setExpandedIds,\n getPanelProps(indexOrPanelId) {\n const id =\n typeof indexOrPanelId === \"string\"\n ? indexOrPanelId\n : createId(indexOrPanelId);\n\n const expanded = expandedIds.has(id);\n const disabled = expanded && preventAllClosed && expandedIds.size === 1;\n return {\n id,\n disabled,\n expanded,\n onExpandClick() {\n if (disabled) {\n return;\n }\n\n setExpandedIds((prevIds) => {\n const expanded = prevIds.has(id);\n if (!multiple) {\n return new Set(expanded ? [] : [id]);\n }\n\n const nextIds = new Set(prevIds);\n if (expanded) {\n nextIds.delete(id);\n } else {\n nextIds.add(id);\n }\n\n return nextIds;\n });\n },\n disableTransition,\n disableContentPadding,\n };\n },\n };\n}\n"],"names":["useState","useEnsuredId","useExpansionPanels","options","baseId","propBaseId","multiple","preventAllClosed","disableTransition","defaultExpandedIds","defaultExpandedIndex","disableContentPadding","createId","index","expandedIds","setExpandedIds","initialList","push","Set","ids","getPanelProps","indexOrPanelId","id","expanded","has","disabled","size","onExpandClick","prevIds","nextIds","delete","add"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,QAAQ;AAEjC,SAASC,YAAY,QAAQ,qBAAqB;AAyHlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EC,GACD,OAAO,SAASC,mBACdC,UAAqC,CAAC,CAAC;IAEvC,MAAM,EACJC,QAAQC,UAAU,EAClBC,WAAW,KAAK,EAChBC,mBAAmB,KAAK,EACxBC,oBAAoB,KAAK,EACzBC,kBAAkB,EAClBC,oBAAoB,EACpBC,wBAAwB,KAAK,EAC9B,GAAGR;IAEJ,MAAMC,SAASH,aAAaI,YAAY;IACxC,MAAMO,WAAW,CAACC,QAA0B,CAAC,EAAET,OAAO,CAAC,EAAES,QAAQ,EAAE,CAAC;IACpE,MAAM,CAACC,aAAaC,eAAe,GAAGf,SAA8B;QAClE,IAAI,OAAOS,uBAAuB,aAAa;YAC7C,MAAMO,cAAwB,EAAE;YAChC,IAAI,OAAON,yBAAyB,YAAYH,kBAAkB;gBAChES,YAAYC,IAAI,CAACL,SAASF,wBAAwB;YACpD;YAEA,OAAO,IAAIQ,IAAIF;QACjB;QAEA,MAAMG,MACJ,OAAOV,uBAAuB,aAC1BA,uBACAA;QACN,OAAO,IAAIS,IAAIC;IACjB;IAEA,OAAO;QACLL;QACAC;QACAK,eAAcC,cAAc;YAC1B,MAAMC,KACJ,OAAOD,mBAAmB,WACtBA,iBACAT,SAASS;YAEf,MAAME,WAAWT,YAAYU,GAAG,CAACF;YACjC,MAAMG,WAAWF,YAAYhB,oBAAoBO,YAAYY,IAAI,KAAK;YACtE,OAAO;gBACLJ;gBACAG;gBACAF;gBACAI;oBACE,IAAIF,UAAU;wBACZ;oBACF;oBAEAV,eAAe,CAACa;wBACd,MAAML,WAAWK,QAAQJ,GAAG,CAACF;wBAC7B,IAAI,CAAChB,UAAU;4BACb,OAAO,IAAIY,IAAIK,WAAW,EAAE,GAAG;gCAACD;6BAAG;wBACrC;wBAEA,MAAMO,UAAU,IAAIX,IAAIU;wBACxB,IAAIL,UAAU;4BACZM,QAAQC,MAAM,CAACR;wBACjB,OAAO;4BACLO,QAAQE,GAAG,CAACT;wBACd;wBAEA,OAAOO;oBACT;gBACF;gBACArB;gBACAG;YACF;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/expansion-panel/useExpansionPanels.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport type { UseStateInitializer, UseStateSetter } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport type { ExpansionPanelProps } from \"./ExpansionPanel.js\";\n\n/** @remarks \\@since 6.0.0 */\nexport interface ExpansionPanelHookOptions {\n /**\n * An optional id to prefix each panel with.\n *\n * @defaultValue `\"expansion-panel-\" + useId()`\n */\n baseId?: string;\n\n /**\n * Set this to `true` if multiple panels can be open at the same time.\n *\n * @defaultValue `false`\n */\n multiple?: boolean;\n\n /**\n * Set this to `true` to enforce that at least one panel must always be\n * expanded.\n *\n * @defaultValue `false`\n */\n preventAllCollapsed?: boolean;\n\n /**\n * This is a convenience option to disable the expansion transition for all\n * panels.\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * @defaultValue `preventAllCollapsed ? [\"expansion-panel-\" + useId() + \"-1\"] : []`\n */\n defaultExpandedIds?: UseStateInitializer<string[]>;\n\n /**\n * This can only be used if the {@link defaultExpandedIds} was not provided\n * and using index based panels.\n *\n * @example\n * ```tsx\n * const { getPanelProps } = useExpansionPanels({\n * defaultExpandedIndex: 2,\n * });\n *\n * return (\n * <ExpansionPanel {...getPanelProps(0)} />\n * <ExpansionPanel {...getPanelProps(1)} />\n * // expanded on first render\n * <ExpansionPanel {...getPanelProps(2)} />\n * <ExpansionPanel {...getPanelProps(3)} />\n * );\n * ```\n */\n defaultExpandedIndex?: number;\n\n /**\n * @defaultValue `false`\n */\n disableContentPadding?: boolean;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport type ProvidedExpansionPanelProps = Pick<\n Required<ExpansionPanelProps>,\n | \"disabled\"\n | \"expanded\"\n | \"onExpandClick\"\n | \"disableTransition\"\n | \"disableContentPadding\"\n> & { id?: string };\n\n/**\n * @param indexOrPanelId - This should either be a DOM id to use for the panel\n * or the panel's index.\n * @returns Props to pass to an `ExpansionPanel` for it to work correctly.\n * @remarks \\@since 6.0.0\n */\nexport type GetExpansionPanelProps = (\n indexOrPanelId: string | number\n) => ProvidedExpansionPanelProps;\n\n/** @remarks \\@since 6.0.0 */\nexport interface ExpansionPanelImplementation {\n /**\n * The current set of expanded panel ids if you need this for some reason.\n */\n expandedIds: ReadonlySet<string>;\n\n /**\n * This can be used to manually control which panels are expanded if the\n * default behavior does not work for your use case.\n */\n setExpandedIds: UseStateSetter<ReadonlySet<string>>;\n\n /**\n * @example\n * Index Based Panels\n * ```tsx\n * <ExpansionPanel {...getPanelProps(0)} />\n * <ExpansionPanel {...getPanelProps(1)} />\n * <ExpansionPanel {...getPanelProps(2)} />\n * ```\n *\n * @example\n * Custom Panel Ids\n * ```tsx\n * <ExpansionPanel {...getPanelProps(\"address-panel\")} />\n * <ExpansionPanel {...getPanelProps(\"billing-panel\")} />\n * <ExpansionPanel {...getPanelProps(\"confirmation-panel\")} />\n * ```\n */\n getPanelProps: GetExpansionPanelProps;\n}\n\n/**\n * Use this hook to control the expanded state for a group of `ExpansionPanel`.\n *\n * @example\n * Index Based Panels\n * ```tsx\n * import {\n * ExpansionList,\n * ExpansionPanel,\n * useExpansionPanels,\n * } from \"@react-md/core\";\n * import { type ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const { getPanelProps } = useExpansionPanels();\n *\n * return (\n * <ExpansionList>\n * <ExpansionPanel {...getPanelProps(0)} headerChildren=\"Panel 1\">\n * Panel 1 Contents\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(1)} headerChildren=\"Panel 2\">\n * Panel 2 Contents\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(2)} headerChildren=\"Panel 3\">\n * Panel 3 Contents\n * </ExpansionPanel>\n * </ExpansionList>\n * );\n * }\n * ```\n *\n * @example\n * Custom Panel Ids and Expand All Panels by Default\n * ```tsx\n * import {\n * ExpansionList,\n * ExpansionPanel,\n * useExpansionPanels,\n * } from \"@react-md/core\";\n * import { type ReactElement } from \"react\";\n *\n * import { BillingAddress } from \"./BillingAddress\";\n * import { BillingInformation } from \"./BillingInformation\";\n * import { PersonalInformation } from \"./PersonalInformation\";\n *\n * const panel1Id = \"personal-information-panel\";\n * const panel2Id = \"billing-information-panel\";\n * const panel3Id = \"billing-address-panel\";\n *\n * function Example(): ReactElement {\n * const { getPanelProps } = useExpansionPanels({\n * multiple: true,\n * defaultExpandedIds: () => [panel1Id, panel2Id, panel3Id],\n * });\n *\n * return (\n * <ExpansionList>\n * <ExpansionPanel {...getPanelProps(panel1Id)} headerChildren=\"Personal Information\">\n * <PersonalInformation />\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(panel2Id)} headerChildren=\"Billing Information\">\n * <BillingInformation />\n * </ExpansionPanel>\n * <ExpansionPanel {...getPanelProps(panel3Id)} headerChildren=\"Billing Address\">\n * <BillingAddress />\n * </ExpansionPanel>\n * </ExpansionList>\n * );\n * }\n * ```\n *\n *\n * @remarks\n * \\@since 6.0.0 The hook was renamed from `usePanels` to `useExpansionPanels`,\n * the API changed to return `getPanelProps` instead of a generated list of\n * panel props based on the provided `count`, and the hook no longer supports\n * having all panels expanded by default.\n */\nexport function useExpansionPanels(\n options: ExpansionPanelHookOptions = {}\n): ExpansionPanelImplementation {\n const {\n baseId: propBaseId,\n multiple = false,\n preventAllCollapsed = false,\n disableTransition = false,\n defaultExpandedIds,\n defaultExpandedIndex,\n disableContentPadding = false,\n } = options;\n\n const baseId = useEnsuredId(propBaseId, \"expansion-panel\");\n const createId = (index: number): string => `${baseId}-${index + 1}`;\n const [expandedIds, setExpandedIds] = useState<ReadonlySet<string>>(() => {\n if (typeof defaultExpandedIds === \"undefined\") {\n const initialList: string[] = [];\n if (typeof defaultExpandedIndex === \"number\" || preventAllCollapsed) {\n initialList.push(createId(defaultExpandedIndex ?? 0));\n }\n\n return new Set(initialList);\n }\n\n const ids =\n typeof defaultExpandedIds === \"function\"\n ? defaultExpandedIds()\n : defaultExpandedIds;\n return new Set(ids);\n });\n\n return {\n expandedIds,\n setExpandedIds,\n getPanelProps(indexOrPanelId) {\n let id: string | undefined;\n let panelId: string;\n if (typeof indexOrPanelId === \"number\") {\n id = createId(indexOrPanelId);\n panelId = id;\n } else {\n panelId = indexOrPanelId;\n }\n\n const expanded = expandedIds.has(panelId);\n const disabled =\n expanded && preventAllCollapsed && expandedIds.size === 1;\n return {\n id,\n disabled,\n expanded,\n onExpandClick() {\n if (disabled) {\n return;\n }\n\n setExpandedIds((prevIds) => {\n const expanded = prevIds.has(panelId);\n if (!multiple) {\n return new Set(expanded ? [] : [panelId]);\n }\n\n const nextIds = new Set(prevIds);\n if (expanded) {\n nextIds.delete(panelId);\n } else {\n nextIds.add(panelId);\n }\n\n return nextIds;\n });\n },\n disableTransition,\n disableContentPadding,\n };\n },\n };\n}\n"],"names":["useState","useEnsuredId","useExpansionPanels","options","baseId","propBaseId","multiple","preventAllCollapsed","disableTransition","defaultExpandedIds","defaultExpandedIndex","disableContentPadding","createId","index","expandedIds","setExpandedIds","initialList","push","Set","ids","getPanelProps","indexOrPanelId","id","panelId","expanded","has","disabled","size","onExpandClick","prevIds","nextIds","delete","add"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,QAAQ;AAEjC,SAASC,YAAY,QAAQ,qBAAqB;AAwHlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EC,GACD,OAAO,SAASC,mBACdC,UAAqC,CAAC,CAAC;IAEvC,MAAM,EACJC,QAAQC,UAAU,EAClBC,WAAW,KAAK,EAChBC,sBAAsB,KAAK,EAC3BC,oBAAoB,KAAK,EACzBC,kBAAkB,EAClBC,oBAAoB,EACpBC,wBAAwB,KAAK,EAC9B,GAAGR;IAEJ,MAAMC,SAASH,aAAaI,YAAY;IACxC,MAAMO,WAAW,CAACC,QAA0B,CAAC,EAAET,OAAO,CAAC,EAAES,QAAQ,EAAE,CAAC;IACpE,MAAM,CAACC,aAAaC,eAAe,GAAGf,SAA8B;QAClE,IAAI,OAAOS,uBAAuB,aAAa;YAC7C,MAAMO,cAAwB,EAAE;YAChC,IAAI,OAAON,yBAAyB,YAAYH,qBAAqB;gBACnES,YAAYC,IAAI,CAACL,SAASF,wBAAwB;YACpD;YAEA,OAAO,IAAIQ,IAAIF;QACjB;QAEA,MAAMG,MACJ,OAAOV,uBAAuB,aAC1BA,uBACAA;QACN,OAAO,IAAIS,IAAIC;IACjB;IAEA,OAAO;QACLL;QACAC;QACAK,eAAcC,cAAc;YAC1B,IAAIC;YACJ,IAAIC;YACJ,IAAI,OAAOF,mBAAmB,UAAU;gBACtCC,KAAKV,SAASS;gBACdE,UAAUD;YACZ,OAAO;gBACLC,UAAUF;YACZ;YAEA,MAAMG,WAAWV,YAAYW,GAAG,CAACF;YACjC,MAAMG,WACJF,YAAYjB,uBAAuBO,YAAYa,IAAI,KAAK;YAC1D,OAAO;gBACLL;gBACAI;gBACAF;gBACAI;oBACE,IAAIF,UAAU;wBACZ;oBACF;oBAEAX,eAAe,CAACc;wBACd,MAAML,WAAWK,QAAQJ,GAAG,CAACF;wBAC7B,IAAI,CAACjB,UAAU;4BACb,OAAO,IAAIY,IAAIM,WAAW,EAAE,GAAG;gCAACD;6BAAQ;wBAC1C;wBAEA,MAAMO,UAAU,IAAIZ,IAAIW;wBACxB,IAAIL,UAAU;4BACZM,QAAQC,MAAM,CAACR;wBACjB,OAAO;4BACLO,QAAQE,GAAG,CAACT;wBACd;wBAEA,OAAOO;oBACT;gBACF;gBACAtB;gBACAG;YACF;QACF;IACF;AACF"}
@@ -2,11 +2,11 @@
2
2
  import { type LabelClassNameOptions, type LabelProps } from "./types.js";
3
3
  declare module "react" {
4
4
  interface CSSProperties {
5
- "--rmd-form-label-floating-top"?: string | number;
6
- "--rmd-form-label-left-offset"?: string | number;
7
- "--rmd-form-label-top-offset"?: string | number;
8
- "--rmd-form-label-active-padding"?: string | number;
9
- "--rmd-form-label-active-background-color"?: string;
5
+ "--rmd-label-floating-top"?: string | number;
6
+ "--rmd-label-left-offset"?: string | number;
7
+ "--rmd-label-top-offset"?: string | number;
8
+ "--rmd-label-active-padding"?: string | number;
9
+ "--rmd-label-active-background-color"?: string;
10
10
  }
11
11
  }
12
12
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/Label.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { forwardRef } from \"react\";\nimport { type TextColor, type ThemeColor, cssUtils } from \"../cssUtils.js\";\nimport { bem } from \"../utils/bem.js\";\nimport { type LabelClassNameOptions, type LabelProps } from \"./types.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-form-label-floating-top\"?: string | number;\n \"--rmd-form-label-left-offset\"?: string | number;\n \"--rmd-form-label-top-offset\"?: string | number;\n \"--rmd-form-label-active-padding\"?: string | number;\n \"--rmd-form-label-active-background-color\"?: string;\n }\n}\n\nconst labelStyles = bem(\"rmd-label\");\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function label(options: LabelClassNameOptions): string {\n const {\n className,\n gap = false,\n error = false,\n dense = false,\n active = false,\n stacked = false,\n reversed = false,\n disabled = false,\n floating = false,\n inactive = false,\n floatingActive = active,\n } = options;\n\n let textColor: TextColor | ThemeColor | undefined;\n if (disabled) {\n textColor = \"text-disabled\";\n } else if (error) {\n textColor = \"error\";\n } else if (floating && inactive) {\n textColor = \"text-secondary\";\n }\n\n return cnb(\n labelStyles({\n gap,\n error,\n dense,\n active,\n disabled,\n floating,\n stacked: stacked && !reversed,\n reversed: !stacked && reversed,\n \"stacked-reversed\": stacked && reversed,\n \"floating-dense\": floating && dense,\n \"floating-active\": floating && floatingActive,\n }),\n cssUtils({\n textColor,\n }),\n className\n );\n}\n\n/**\n * **Server Component**\n *\n * Most of the form components already use this `Label` internally when a\n * `label` prop has been provided. You should generally use this component if\n * you need to separate the label from an existing form component or you need to\n * create a custom implementation of a form component.\n *\n * @remarks \\@since 6.0.0 Updated to be usable externally and combines the\n * floating label styles instead of having separate components.\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n function Label(props, ref) {\n const {\n gap = false,\n error = false,\n dense = false,\n active = false,\n stacked = false,\n reversed = false,\n disabled = false,\n floating = false,\n inactive = false,\n floatingActive = active,\n className,\n children,\n ...remaining\n } = props;\n\n return (\n <label\n ref={ref}\n {...remaining}\n className={label({\n gap,\n error,\n dense,\n active,\n stacked,\n reversed,\n disabled,\n floating,\n floatingActive,\n inactive,\n className,\n })}\n >\n {children}\n </label>\n );\n }\n);\n"],"names":["cnb","forwardRef","cssUtils","bem","labelStyles","label","options","className","gap","error","dense","active","stacked","reversed","disabled","floating","inactive","floatingActive","textColor","Label","props","ref","children","remaining"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAAQ,QAAQ;AACnC,SAA0CC,QAAQ,QAAQ,iBAAiB;AAC3E,SAASC,GAAG,QAAQ,kBAAkB;AAatC,MAAMC,cAAcD,IAAI;AAExB;;CAEC,GACD,OAAO,SAASE,MAAMC,OAA8B;IAClD,MAAM,EACJC,SAAS,EACTC,MAAM,KAAK,EACXC,QAAQ,KAAK,EACbC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,iBAAiBN,MAAM,EACxB,GAAGL;IAEJ,IAAIY;IACJ,IAAIJ,UAAU;QACZI,YAAY;IACd,OAAO,IAAIT,OAAO;QAChBS,YAAY;IACd,OAAO,IAAIH,YAAYC,UAAU;QAC/BE,YAAY;IACd;IAEA,OAAOlB,IACLI,YAAY;QACVI;QACAC;QACAC;QACAC;QACAG;QACAC;QACAH,SAASA,WAAW,CAACC;QACrBA,UAAU,CAACD,WAAWC;QACtB,oBAAoBD,WAAWC;QAC/B,kBAAkBE,YAAYL;QAC9B,mBAAmBK,YAAYE;IACjC,IACAf,SAAS;QACPgB;IACF,IACAX;AAEJ;AAEA;;;;;;;;;;CAUC,GACD,OAAO,MAAMY,sBAAQlB,WACnB,SAASkB,MAAMC,KAAK,EAAEC,GAAG;IACvB,MAAM,EACJb,MAAM,KAAK,EACXC,QAAQ,KAAK,EACbC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,iBAAiBN,MAAM,EACvBJ,SAAS,EACTe,QAAQ,EACR,GAAGC,WACJ,GAAGH;IAEJ,qBACE,KAACf;QACCgB,KAAKA;QACJ,GAAGE,SAAS;QACbhB,WAAWF,MAAM;YACfG;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAE;YACAD;YACAT;QACF;kBAECe;;AAGP,GACA"}
1
+ {"version":3,"sources":["../../src/form/Label.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { forwardRef } from \"react\";\nimport { type TextColor, type ThemeColor, cssUtils } from \"../cssUtils.js\";\nimport { bem } from \"../utils/bem.js\";\nimport { type LabelClassNameOptions, type LabelProps } from \"./types.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-label-floating-top\"?: string | number;\n \"--rmd-label-left-offset\"?: string | number;\n \"--rmd-label-top-offset\"?: string | number;\n \"--rmd-label-active-padding\"?: string | number;\n \"--rmd-label-active-background-color\"?: string;\n }\n}\n\nconst labelStyles = bem(\"rmd-label\");\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function label(options: LabelClassNameOptions): string {\n const {\n className,\n gap = false,\n error = false,\n dense = false,\n active = false,\n stacked = false,\n reversed = false,\n disabled = false,\n floating = false,\n inactive = false,\n floatingActive = active,\n } = options;\n\n let textColor: TextColor | ThemeColor | undefined;\n if (disabled) {\n textColor = \"text-disabled\";\n } else if (error) {\n textColor = \"error\";\n } else if (floating && inactive) {\n textColor = \"text-secondary\";\n }\n\n return cnb(\n labelStyles({\n gap,\n error,\n dense,\n active,\n disabled,\n floating,\n stacked: stacked && !reversed,\n reversed: !stacked && reversed,\n \"stacked-reversed\": stacked && reversed,\n \"floating-dense\": floating && dense,\n \"floating-active\": floating && floatingActive,\n }),\n cssUtils({\n textColor,\n }),\n className\n );\n}\n\n/**\n * **Server Component**\n *\n * Most of the form components already use this `Label` internally when a\n * `label` prop has been provided. You should generally use this component if\n * you need to separate the label from an existing form component or you need to\n * create a custom implementation of a form component.\n *\n * @remarks \\@since 6.0.0 Updated to be usable externally and combines the\n * floating label styles instead of having separate components.\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n function Label(props, ref) {\n const {\n gap = false,\n error = false,\n dense = false,\n active = false,\n stacked = false,\n reversed = false,\n disabled = false,\n floating = false,\n inactive = false,\n floatingActive = active,\n className,\n children,\n ...remaining\n } = props;\n\n return (\n <label\n ref={ref}\n {...remaining}\n className={label({\n gap,\n error,\n dense,\n active,\n stacked,\n reversed,\n disabled,\n floating,\n floatingActive,\n inactive,\n className,\n })}\n >\n {children}\n </label>\n );\n }\n);\n"],"names":["cnb","forwardRef","cssUtils","bem","labelStyles","label","options","className","gap","error","dense","active","stacked","reversed","disabled","floating","inactive","floatingActive","textColor","Label","props","ref","children","remaining"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAAQ,QAAQ;AACnC,SAA0CC,QAAQ,QAAQ,iBAAiB;AAC3E,SAASC,GAAG,QAAQ,kBAAkB;AAatC,MAAMC,cAAcD,IAAI;AAExB;;CAEC,GACD,OAAO,SAASE,MAAMC,OAA8B;IAClD,MAAM,EACJC,SAAS,EACTC,MAAM,KAAK,EACXC,QAAQ,KAAK,EACbC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,iBAAiBN,MAAM,EACxB,GAAGL;IAEJ,IAAIY;IACJ,IAAIJ,UAAU;QACZI,YAAY;IACd,OAAO,IAAIT,OAAO;QAChBS,YAAY;IACd,OAAO,IAAIH,YAAYC,UAAU;QAC/BE,YAAY;IACd;IAEA,OAAOlB,IACLI,YAAY;QACVI;QACAC;QACAC;QACAC;QACAG;QACAC;QACAH,SAASA,WAAW,CAACC;QACrBA,UAAU,CAACD,WAAWC;QACtB,oBAAoBD,WAAWC;QAC/B,kBAAkBE,YAAYL;QAC9B,mBAAmBK,YAAYE;IACjC,IACAf,SAAS;QACPgB;IACF,IACAX;AAEJ;AAEA;;;;;;;;;;CAUC,GACD,OAAO,MAAMY,sBAAQlB,WACnB,SAASkB,MAAMC,KAAK,EAAEC,GAAG;IACvB,MAAM,EACJb,MAAM,KAAK,EACXC,QAAQ,KAAK,EACbC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,iBAAiBN,MAAM,EACvBJ,SAAS,EACTe,QAAQ,EACR,GAAGC,WACJ,GAAGH;IAEJ,qBACE,KAACf;QACCgB,KAAKA;QACJ,GAAGE,SAAS;QACbhB,WAAWF,MAAM;YACfG;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAE;YACAD;YACAT;QACF;kBAECe;;AAGP,GACA"}
@@ -47,7 +47,7 @@ export interface BaseMenuItemInputToggleProps extends HTMLAttributes<HTMLLIEleme
47
47
  /** @defaultValue `"auto"` */
48
48
  height?: ListItemHeight;
49
49
  /** @defaultValue `false` */
50
- threeLines?: boolean;
50
+ multiline?: boolean;
51
51
  /** @defaultValue `false` */
52
52
  disableTextChildren?: boolean;
53
53
  /** @defaultValue `false` */