@react-md/core 1.0.0-next.2 → 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 (752) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/.turbo/turbo-lint.log +12 -0
  3. package/.turbo/turbo-test.log +179 -0
  4. package/.turbo/turbo-typecheck.log +4 -0
  5. package/CHANGELOG.md +103 -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/IconRotator.tsx.html +322 -0
  10. package/coverage/lcov-report/ListItem.tsx.html +892 -0
  11. package/coverage/lcov-report/Portal.tsx.html +223 -0
  12. package/coverage/lcov-report/PortalContainerProvider.tsx.html +367 -0
  13. package/coverage/lcov-report/SkeletonPlaceholder.tsx.html +613 -0
  14. package/coverage/lcov-report/Tab.tsx.html +261 -147
  15. package/coverage/lcov-report/TreeGroup.tsx.html +313 -0
  16. package/coverage/lcov-report/app-bar/AppBar.tsx.html +178 -28
  17. package/coverage/lcov-report/app-bar/index.html +7 -7
  18. package/coverage/lcov-report/button/TooltippedButton.tsx.html +445 -0
  19. package/coverage/lcov-report/button/index.html +10 -10
  20. package/coverage/lcov-report/card/Card.tsx.html +349 -0
  21. package/coverage/lcov-report/card/CardContent.tsx.html +223 -0
  22. package/coverage/lcov-report/card/ClickableCard.tsx.html +400 -0
  23. package/coverage/lcov-report/card/index.html +21 -21
  24. package/coverage/lcov-report/card/styles.ts.html +428 -392
  25. package/coverage/lcov-report/cssUtils.ts.html +86 -59
  26. package/coverage/lcov-report/draggable/index.html +21 -36
  27. package/coverage/lcov-report/draggable/useDraggable.ts.html +377 -368
  28. package/coverage/lcov-report/draggable/utils.ts.html +96 -195
  29. package/coverage/lcov-report/expansion-panel/ExpansionList.tsx.html +211 -0
  30. package/coverage/lcov-report/expansion-panel/ExpansionPanel.tsx.html +12 -15
  31. package/coverage/lcov-report/expansion-panel/index.html +34 -19
  32. package/coverage/lcov-report/expansion-panel/useExpansionPanels.ts.html +928 -0
  33. package/coverage/lcov-report/form/MenuItemInputToggle.tsx.html +2 -2
  34. package/coverage/lcov-report/form/Select.tsx.html +1663 -0
  35. package/coverage/lcov-report/form/Slider.tsx.html +163 -40
  36. package/coverage/lcov-report/form/index.html +21 -21
  37. package/coverage/lcov-report/icon/FontIcon.tsx.html +28 -28
  38. package/coverage/lcov-report/icon/index.html +1 -1
  39. package/coverage/lcov-report/index.html +41 -11
  40. package/coverage/lcov-report/interaction/UserInteractionModeProvider.tsx.html +679 -0
  41. package/coverage/lcov-report/interaction/config.ts.html +181 -0
  42. package/coverage/lcov-report/interaction/index.html +33 -18
  43. package/coverage/lcov-report/list/List.tsx.html +490 -0
  44. package/coverage/lcov-report/list/ListItem.tsx.html +886 -0
  45. package/coverage/lcov-report/list/ListItemAddon.tsx.html +286 -0
  46. package/coverage/lcov-report/list/ListItemChildren.tsx.html +445 -0
  47. package/coverage/lcov-report/list/ListItemLink.tsx.html +5 -5
  48. package/coverage/lcov-report/list/index.html +81 -6
  49. package/coverage/lcov-report/list/listItemStyles.ts.html +703 -0
  50. package/coverage/lcov-report/media-queries/appSize.ts.html +1 -1
  51. package/coverage/lcov-report/media-queries/index.html +1 -1
  52. package/coverage/lcov-report/menu/Menu.tsx.html +37 -19
  53. package/coverage/lcov-report/menu/index.html +14 -44
  54. package/coverage/lcov-report/sheet/index.html +8 -8
  55. package/coverage/lcov-report/sheet/styles.ts.html +376 -0
  56. package/coverage/lcov-report/skeletonPlaceholderUtils.ts.html +400 -0
  57. package/coverage/lcov-report/src/CoreProviders.tsx.html +20 -20
  58. package/coverage/lcov-report/src/NoSsr.tsx.html +1 -1
  59. package/coverage/lcov-report/src/SsrProvider.tsx.html +10 -10
  60. package/coverage/lcov-report/src/app-bar/AppBar.tsx.html +143 -23
  61. package/coverage/lcov-report/src/app-bar/AppBarTitle.tsx.html +1 -1
  62. package/coverage/lcov-report/src/app-bar/index.html +5 -5
  63. package/coverage/lcov-report/src/avatar/Avatar.tsx.html +2 -2
  64. package/coverage/lcov-report/src/avatar/index.html +1 -1
  65. package/coverage/lcov-report/src/avatar/styles.ts.html +1 -1
  66. package/coverage/lcov-report/src/badge/Badge.tsx.html +1 -1
  67. package/coverage/lcov-report/src/badge/index.html +1 -1
  68. package/coverage/lcov-report/src/box/Box.tsx.html +1 -1
  69. package/coverage/lcov-report/src/box/index.html +23 -8
  70. package/coverage/lcov-report/src/box/styles.ts.html +46 -46
  71. package/coverage/lcov-report/src/button/AsyncButton.tsx.html +1 -1
  72. package/coverage/lcov-report/src/button/Button.tsx.html +84 -84
  73. package/coverage/lcov-report/src/button/ButtonUnstyled.tsx.html +1 -1
  74. package/coverage/lcov-report/src/button/FloatingActionButton.tsx.html +11 -11
  75. package/coverage/lcov-report/src/button/TooltippedButton.tsx.html +445 -0
  76. package/coverage/lcov-report/src/button/buttonStyles.ts.html +52 -52
  77. package/coverage/lcov-report/src/button/buttonUnstyledStyles.ts.html +1 -1
  78. package/coverage/lcov-report/src/button/index.html +83 -8
  79. package/coverage/lcov-report/src/card/Card.tsx.html +37 -31
  80. package/coverage/lcov-report/src/card/CardContent.tsx.html +4 -4
  81. package/coverage/lcov-report/src/card/CardFooter.tsx.html +1 -1
  82. package/coverage/lcov-report/src/card/CardHeader.tsx.html +1 -1
  83. package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +1 -1
  84. package/coverage/lcov-report/src/card/CardTitle.tsx.html +1 -1
  85. package/coverage/lcov-report/src/card/ClickableCard.tsx.html +400 -0
  86. package/coverage/lcov-report/src/card/index.html +24 -9
  87. package/coverage/lcov-report/src/card/styles.ts.html +58 -31
  88. package/coverage/lcov-report/src/chip/Chip.tsx.html +1 -1
  89. package/coverage/lcov-report/src/chip/index.html +7 -7
  90. package/coverage/lcov-report/src/chip/styles.ts.html +9 -12
  91. package/coverage/lcov-report/src/cssUtils.ts.html +53 -53
  92. package/coverage/lcov-report/src/delegateEvent.ts.html +109 -109
  93. package/coverage/lcov-report/src/dialog/Dialog.tsx.html +1 -1
  94. package/coverage/lcov-report/src/dialog/DialogContainer.tsx.html +1 -1
  95. package/coverage/lcov-report/src/dialog/DialogContent.tsx.html +1 -1
  96. package/coverage/lcov-report/src/dialog/DialogFooter.tsx.html +1 -1
  97. package/coverage/lcov-report/src/dialog/DialogHeader.tsx.html +1 -1
  98. package/coverage/lcov-report/src/dialog/DialogTitle.tsx.html +1 -1
  99. package/coverage/lcov-report/src/dialog/FixedDialog.tsx.html +1 -1
  100. package/coverage/lcov-report/src/dialog/NestedDialogProvider.ts.html +1 -1
  101. package/coverage/lcov-report/src/dialog/index.html +129 -9
  102. package/coverage/lcov-report/src/dialog/styles.ts.html +1 -1
  103. package/coverage/lcov-report/src/divider/Divider.tsx.html +4 -7
  104. package/coverage/lcov-report/src/divider/index.html +5 -5
  105. package/coverage/lcov-report/src/divider/styles.ts.html +1 -1
  106. package/coverage/lcov-report/src/draggable/index.html +27 -27
  107. package/coverage/lcov-report/src/draggable/useDraggable.ts.html +47 -44
  108. package/coverage/lcov-report/src/draggable/utils.ts.html +29 -131
  109. package/coverage/lcov-report/src/expansion-panel/ExpansionList.tsx.html +1 -1
  110. package/coverage/lcov-report/src/expansion-panel/ExpansionPanel.tsx.html +1 -1
  111. package/coverage/lcov-report/src/expansion-panel/ExpansionPanelHeader.tsx.html +1 -1
  112. package/coverage/lcov-report/src/expansion-panel/index.html +8 -8
  113. package/coverage/lcov-report/src/expansion-panel/useExpansionList.ts.html +1 -1
  114. package/coverage/lcov-report/src/expansion-panel/useExpansionPanels.ts.html +36 -24
  115. package/coverage/lcov-report/src/focus/index.html +1 -1
  116. package/coverage/lcov-report/src/focus/useFocusContainer.ts.html +1 -1
  117. package/coverage/lcov-report/src/focus/utils.ts.html +1 -1
  118. package/coverage/lcov-report/src/form/Checkbox.tsx.html +1 -1
  119. package/coverage/lcov-report/src/form/Fieldset.tsx.html +1 -1
  120. package/coverage/lcov-report/src/form/FileInput.tsx.html +1 -1
  121. package/coverage/lcov-report/src/form/Form.tsx.html +1 -1
  122. package/coverage/lcov-report/src/form/FormMessage.tsx.html +1 -1
  123. package/coverage/lcov-report/src/form/FormMessageContainer.tsx.html +5 -5
  124. package/coverage/lcov-report/src/form/FormMessageCounter.tsx.html +1 -1
  125. package/coverage/lcov-report/src/form/InputToggle.tsx.html +110 -110
  126. package/coverage/lcov-report/src/form/InputToggleIcon.tsx.html +63 -63
  127. package/coverage/lcov-report/src/form/Label.tsx.html +98 -98
  128. package/coverage/lcov-report/src/form/Legend.tsx.html +1 -1
  129. package/coverage/lcov-report/src/form/MenuItemCheckbox.tsx.html +1 -1
  130. package/coverage/lcov-report/src/form/MenuItemFileInput.tsx.html +1 -1
  131. package/coverage/lcov-report/src/form/MenuItemInputToggle.tsx.html +2 -2
  132. package/coverage/lcov-report/src/form/MenuItemRadio.tsx.html +1 -1
  133. package/coverage/lcov-report/src/form/MenuItemSwitch.tsx.html +1 -1
  134. package/coverage/lcov-report/src/form/MenuItemTextField.tsx.html +1 -1
  135. package/coverage/lcov-report/src/form/NativeSelect.tsx.html +1 -1
  136. package/coverage/lcov-report/src/form/OptGroup.tsx.html +1 -1
  137. package/coverage/lcov-report/src/form/Option.tsx.html +1 -1
  138. package/coverage/lcov-report/src/form/Password.tsx.html +1 -1
  139. package/coverage/lcov-report/src/form/Radio.tsx.html +3 -3
  140. package/coverage/lcov-report/src/form/Select.tsx.html +29 -5
  141. package/coverage/lcov-report/src/form/SelectValue.tsx.html +1 -1
  142. package/coverage/lcov-report/src/form/Slider.tsx.html +1 -1
  143. package/coverage/lcov-report/src/form/SliderContainer.tsx.html +1 -1
  144. package/coverage/lcov-report/src/form/SliderMark.tsx.html +1 -1
  145. package/coverage/lcov-report/src/form/SliderMarkLabel.tsx.html +1 -1
  146. package/coverage/lcov-report/src/form/SliderThumb.tsx.html +1 -1
  147. package/coverage/lcov-report/src/form/SliderTrack.tsx.html +1 -1
  148. package/coverage/lcov-report/src/form/SliderValueMarks.tsx.html +1 -1
  149. package/coverage/lcov-report/src/form/SliderValueTooltip.tsx.html +1 -1
  150. package/coverage/lcov-report/src/form/Switch.tsx.html +1 -1
  151. package/coverage/lcov-report/src/form/SwitchTrack.tsx.html +1 -1
  152. package/coverage/lcov-report/src/form/TextArea.tsx.html +2 -2
  153. package/coverage/lcov-report/src/form/TextField.tsx.html +1 -1
  154. package/coverage/lcov-report/src/form/TextFieldAddon.tsx.html +1 -1
  155. package/coverage/lcov-report/src/form/TextFieldContainer.tsx.html +1 -1
  156. package/coverage/lcov-report/src/form/TextFieldContainerStyles.ts.html +8 -8
  157. package/coverage/lcov-report/src/form/fileUtils.ts.html +1 -1
  158. package/coverage/lcov-report/src/form/formConfig.ts.html +1 -1
  159. package/coverage/lcov-report/src/form/formMessageStyles.ts.html +1 -1
  160. package/coverage/lcov-report/src/form/index.html +940 -10
  161. package/coverage/lcov-report/src/form/inputToggleStyles.ts.html +30 -30
  162. package/coverage/lcov-report/src/form/nativeSelectStyles.ts.html +1 -1
  163. package/coverage/lcov-report/src/form/optionStyles.ts.html +1 -1
  164. package/coverage/lcov-report/src/form/passwordStyles.ts.html +1 -1
  165. package/coverage/lcov-report/src/form/selectStyles.ts.html +1 -1
  166. package/coverage/lcov-report/src/form/selectUtils.ts.html +1 -1
  167. package/coverage/lcov-report/src/form/sliderUtils.ts.html +1 -1
  168. package/coverage/lcov-report/src/form/switchStyles.ts.html +1 -1
  169. package/coverage/lcov-report/src/form/textAreaStyles.ts.html +3 -3
  170. package/coverage/lcov-report/src/form/textFieldStyles.ts.html +1 -1
  171. package/coverage/lcov-report/src/form/useCheckboxGroup.ts.html +1 -1
  172. package/coverage/lcov-report/src/form/useFileUpload.ts.html +1 -1
  173. package/coverage/lcov-report/src/form/useListboxProvider.ts.html +1 -1
  174. package/coverage/lcov-report/src/form/useNumberField.ts.html +1 -1
  175. package/coverage/lcov-report/src/form/useRadioGroup.ts.html +47 -47
  176. package/coverage/lcov-report/src/form/useRangeSlider.ts.html +1 -1
  177. package/coverage/lcov-report/src/form/useResizingTextArea.ts.html +1 -1
  178. package/coverage/lcov-report/src/form/useSlider.ts.html +1 -1
  179. package/coverage/lcov-report/src/form/useTextField.ts.html +1 -1
  180. package/coverage/lcov-report/src/form/utils.ts.html +1 -1
  181. package/coverage/lcov-report/src/form/validation.ts.html +1 -1
  182. package/coverage/lcov-report/src/hoverMode/index.html +1 -1
  183. package/coverage/lcov-report/src/hoverMode/useHoverMode.ts.html +98 -98
  184. package/coverage/lcov-report/src/hoverMode/useHoverModeProvider.ts.html +19 -19
  185. package/coverage/lcov-report/src/icon/FontIcon.tsx.html +28 -28
  186. package/coverage/lcov-report/src/icon/IconRotator.tsx.html +5 -8
  187. package/coverage/lcov-report/src/icon/MaterialIcon.tsx.html +1 -1
  188. package/coverage/lcov-report/src/icon/MaterialSymbol.tsx.html +1 -1
  189. package/coverage/lcov-report/src/icon/SVGIcon.tsx.html +1 -1
  190. package/coverage/lcov-report/src/icon/TextIconSpacing.tsx.html +1 -1
  191. package/coverage/lcov-report/src/icon/iconConfig.tsx.html +8 -8
  192. package/coverage/lcov-report/src/icon/index.html +7 -7
  193. package/coverage/lcov-report/src/icon/material.ts.html +1 -1
  194. package/coverage/lcov-report/src/icon/materialConfig.ts.html +1 -1
  195. package/coverage/lcov-report/src/icon/styles.ts.html +38 -38
  196. package/coverage/lcov-report/src/index.html +354 -9
  197. package/coverage/lcov-report/src/interaction/Ripple.tsx.html +1 -1
  198. package/coverage/lcov-report/src/interaction/RippleContainer.tsx.html +1 -1
  199. package/coverage/lcov-report/src/interaction/UserInteractionModeProvider.tsx.html +87 -87
  200. package/coverage/lcov-report/src/interaction/config.ts.html +7 -7
  201. package/coverage/lcov-report/src/interaction/index.html +1 -1
  202. package/coverage/lcov-report/src/interaction/useElementInteraction.tsx.html +123 -123
  203. package/coverage/lcov-report/src/interaction/useHigherContrastChildren.tsx.html +17 -17
  204. package/coverage/lcov-report/src/interaction/utils.ts.html +1 -1
  205. package/coverage/lcov-report/src/layout/LayoutAppBar.tsx.html +1 -1
  206. package/coverage/lcov-report/src/layout/LayoutNav.tsx.html +60 -60
  207. package/coverage/lcov-report/src/layout/LayoutWindowSplitter.tsx.html +1 -1
  208. package/coverage/lcov-report/src/layout/Main.tsx.html +1 -1
  209. package/coverage/lcov-report/src/layout/index.html +15 -15
  210. package/coverage/lcov-report/src/layout/layoutNavStyles.ts.html +5 -5
  211. package/coverage/lcov-report/src/layout/layoutWindowSplitterStyles.ts.html +1 -1
  212. package/coverage/lcov-report/src/layout/mainStyles.ts.html +1 -1
  213. package/coverage/lcov-report/src/layout/useExpandableLayout.ts.html +1 -1
  214. package/coverage/lcov-report/src/layout/useHorizontalLayoutTransition.ts.html +1 -1
  215. package/coverage/lcov-report/src/layout/useLayoutAppBarHeight.ts.html +20 -32
  216. package/coverage/lcov-report/src/layout/useLayoutTree.ts.html +1 -1
  217. package/coverage/lcov-report/src/layout/useLayoutWindowSplitter.ts.html +1 -1
  218. package/coverage/lcov-report/src/layout/useMainTabIndex.ts.html +1 -1
  219. package/coverage/lcov-report/src/layout/useResizableLayout.ts.html +1 -1
  220. package/coverage/lcov-report/src/layout/useTemporaryLayout.ts.html +1 -1
  221. package/coverage/lcov-report/src/link/Link.tsx.html +1 -1
  222. package/coverage/lcov-report/src/link/SkipToMainContent.tsx.html +1 -1
  223. package/coverage/lcov-report/src/link/index.html +1 -1
  224. package/coverage/lcov-report/src/link/styles.ts.html +1 -1
  225. package/coverage/lcov-report/src/list/List.tsx.html +30 -30
  226. package/coverage/lcov-report/src/list/ListItem.tsx.html +37 -16
  227. package/coverage/lcov-report/src/list/ListItemAddon.tsx.html +13 -7
  228. package/coverage/lcov-report/src/list/ListItemChildren.tsx.html +12 -6
  229. package/coverage/lcov-report/src/list/ListItemLink.tsx.html +4 -4
  230. package/coverage/lcov-report/src/list/ListItemText.tsx.html +1 -1
  231. package/coverage/lcov-report/src/list/ListSubheader.tsx.html +1 -1
  232. package/coverage/lcov-report/src/list/getListItemHeight.ts.html +1 -1
  233. package/coverage/lcov-report/src/list/index.html +11 -11
  234. package/coverage/lcov-report/src/list/listItemStyles.ts.html +39 -9
  235. package/coverage/lcov-report/src/media-queries/AppSizeProvider.tsx.html +54 -54
  236. package/coverage/lcov-report/src/media-queries/appSize.ts.html +1 -1
  237. package/coverage/lcov-report/src/media-queries/index.html +1 -1
  238. package/coverage/lcov-report/src/media-queries/useMediaQuery.ts.html +25 -25
  239. package/coverage/lcov-report/src/menu/DropdownMenu.tsx.html +1 -1
  240. package/coverage/lcov-report/src/menu/Menu.tsx.html +2 -2
  241. package/coverage/lcov-report/src/menu/MenuBar.tsx.html +1 -1
  242. package/coverage/lcov-report/src/menu/MenuButton.tsx.html +1 -1
  243. package/coverage/lcov-report/src/menu/MenuConfigurationProvider.tsx.html +1 -1
  244. package/coverage/lcov-report/src/menu/MenuItem.tsx.html +1 -1
  245. package/coverage/lcov-report/src/menu/MenuItemButton.tsx.html +1 -1
  246. package/coverage/lcov-report/src/menu/MenuItemGroup.tsx.html +1 -1
  247. package/coverage/lcov-report/src/menu/MenuItemSeparator.tsx.html +1 -1
  248. package/coverage/lcov-report/src/menu/MenuSheet.tsx.html +1 -1
  249. package/coverage/lcov-report/src/menu/MenuVisibilityProvider.tsx.html +1 -1
  250. package/coverage/lcov-report/src/menu/MenuWidget.tsx.html +1 -1
  251. package/coverage/lcov-report/src/menu/MenuWidgetKeyboardProvider.tsx.html +1 -1
  252. package/coverage/lcov-report/src/menu/index.html +1 -1
  253. package/coverage/lcov-report/src/menu/useContextMenu.ts.html +1 -1
  254. package/coverage/lcov-report/src/menu/useMenuBarProvider.ts.html +1 -1
  255. package/coverage/lcov-report/src/menu/utils.ts.html +1 -1
  256. package/coverage/lcov-report/src/movement/constants.ts.html +1 -1
  257. package/coverage/lcov-report/src/movement/findMatchIndex.ts.html +1 -1
  258. package/coverage/lcov-report/src/movement/index.html +1 -1
  259. package/coverage/lcov-report/src/movement/useKeyboardMovementProvider.ts.html +3 -3
  260. package/coverage/lcov-report/src/movement/utils.ts.html +1 -1
  261. package/coverage/lcov-report/src/overlay/Overlay.tsx.html +1 -1
  262. package/coverage/lcov-report/src/overlay/index.html +1 -1
  263. package/coverage/lcov-report/src/overlay/overlayStyles.ts.html +1 -1
  264. package/coverage/lcov-report/src/portal/Portal.tsx.html +7 -7
  265. package/coverage/lcov-report/src/portal/PortalContainerProvider.tsx.html +59 -35
  266. package/coverage/lcov-report/src/portal/index.html +7 -7
  267. package/coverage/lcov-report/src/positioning/constants.ts.html +1 -1
  268. package/coverage/lcov-report/src/positioning/createHorizontalPosition.ts.html +47 -47
  269. package/coverage/lcov-report/src/positioning/createVerticalPosition.ts.html +55 -55
  270. package/coverage/lcov-report/src/positioning/getFixedPosition.ts.html +89 -89
  271. package/coverage/lcov-report/src/positioning/index.html +1 -1
  272. package/coverage/lcov-report/src/positioning/useFixedPositioning.ts.html +193 -193
  273. package/coverage/lcov-report/src/positioning/utils.ts.html +59 -59
  274. package/coverage/lcov-report/src/progress/CircularProgress.tsx.html +3 -3
  275. package/coverage/lcov-report/src/progress/LinearProgress.tsx.html +3 -3
  276. package/coverage/lcov-report/src/progress/getProgressA11y.ts.html +1 -1
  277. package/coverage/lcov-report/src/progress/index.html +20 -5
  278. package/coverage/lcov-report/src/responsive-item/ResponsiveItemContainer.tsx.html +1 -1
  279. package/coverage/lcov-report/src/responsive-item/ResponsiveItemOverlay.tsx.html +1 -1
  280. package/coverage/lcov-report/src/responsive-item/index.html +1 -1
  281. package/coverage/lcov-report/src/responsive-item/styles.ts.html +1 -1
  282. package/coverage/lcov-report/src/scroll/ScrollLock.tsx.html +1 -1
  283. package/coverage/lcov-report/src/scroll/getScrollbarWidth.ts.html +1 -1
  284. package/coverage/lcov-report/src/scroll/index.html +1 -1
  285. package/coverage/lcov-report/src/scroll/useScrollLock.ts.html +1 -1
  286. package/coverage/lcov-report/src/segmented-button/SegmentedButton.tsx.html +1 -1
  287. package/coverage/lcov-report/src/segmented-button/SegmentedButtonContainer.tsx.html +1 -1
  288. package/coverage/lcov-report/src/segmented-button/index.html +1 -1
  289. package/coverage/lcov-report/src/segmented-button/segmentedButtonContainerStyles.ts.html +1 -1
  290. package/coverage/lcov-report/src/segmented-button/segmentedButtonStyles.ts.html +1 -1
  291. package/coverage/lcov-report/src/sheet/Sheet.tsx.html +1 -1
  292. package/coverage/lcov-report/src/sheet/index.html +5 -5
  293. package/coverage/lcov-report/src/sheet/styles.ts.html +45 -48
  294. package/coverage/lcov-report/src/snackbar/DefaultToastRenderer.tsx.html +80 -80
  295. package/coverage/lcov-report/src/snackbar/Snackbar.tsx.html +21 -45
  296. package/coverage/lcov-report/src/snackbar/Toast.tsx.html +108 -93
  297. package/coverage/lcov-report/src/snackbar/ToastActionButton.tsx.html +1 -1
  298. package/coverage/lcov-report/src/snackbar/ToastCloseButton.tsx.html +1 -1
  299. package/coverage/lcov-report/src/snackbar/ToastContent.tsx.html +48 -48
  300. package/coverage/lcov-report/src/snackbar/ToastManager.tsx.html +278 -275
  301. package/coverage/lcov-report/src/snackbar/ToastManagerProvider.tsx.html +6 -6
  302. package/coverage/lcov-report/src/snackbar/index.html +19 -19
  303. package/coverage/lcov-report/src/snackbar/snackbarStyles.ts.html +15 -15
  304. package/coverage/lcov-report/src/snackbar/toastContentStyles.ts.html +14 -14
  305. package/coverage/lcov-report/src/snackbar/toastStyles.ts.html +27 -27
  306. package/coverage/lcov-report/src/snackbar/useCurrentToastActions.ts.html +1 -1
  307. package/coverage/lcov-report/src/suspense/CircularProgressSuspense.tsx.html +1 -1
  308. package/coverage/lcov-report/src/suspense/NullSuspense.tsx.html +1 -1
  309. package/coverage/lcov-report/src/suspense/index.html +20 -5
  310. package/coverage/lcov-report/src/table/Table.tsx.html +45 -114
  311. package/coverage/lcov-report/src/table/TableBody.tsx.html +43 -43
  312. package/coverage/lcov-report/src/table/TableCell.tsx.html +109 -298
  313. package/coverage/lcov-report/src/table/TableCellContent.tsx.html +81 -27
  314. package/coverage/lcov-report/src/table/TableCheckbox.tsx.html +16 -10
  315. package/coverage/lcov-report/src/table/TableConfigurationProvider.tsx.html +20 -20
  316. package/coverage/lcov-report/src/table/TableContainer.tsx.html +7 -28
  317. package/coverage/lcov-report/src/table/TableContainerProvider.tsx.html +1 -1
  318. package/coverage/lcov-report/src/table/TableFooter.tsx.html +64 -43
  319. package/coverage/lcov-report/src/table/TableHeader.tsx.html +41 -92
  320. package/coverage/lcov-report/src/table/TableRadio.tsx.html +676 -0
  321. package/coverage/lcov-report/src/table/TableRow.tsx.html +38 -119
  322. package/coverage/lcov-report/src/table/index.html +151 -46
  323. package/coverage/lcov-report/src/table/tableCellStyles.ts.html +334 -0
  324. package/coverage/lcov-report/src/table/tableContainerStyles.ts.html +142 -0
  325. package/coverage/lcov-report/src/table/tableFooterStyles.ts.html +166 -0
  326. package/coverage/lcov-report/src/table/tableHeaderStyles.ts.html +172 -0
  327. package/coverage/lcov-report/src/table/tableRowStyles.ts.html +169 -0
  328. package/coverage/lcov-report/src/table/tableStyles.ts.html +157 -0
  329. package/coverage/lcov-report/src/tabs/Tab.tsx.html +263 -143
  330. package/coverage/lcov-report/src/tabs/TabList.tsx.html +1 -1
  331. package/coverage/lcov-report/src/tabs/TabListScrollButton.tsx.html +1 -1
  332. package/coverage/lcov-report/src/tabs/index.html +25 -25
  333. package/coverage/lcov-report/src/tabs/tabIndicatorStyles.ts.html +37 -7
  334. package/coverage/lcov-report/src/tabs/tabListScrollButtonStyles.ts.html +1 -1
  335. package/coverage/lcov-report/src/tabs/tabListStyles.ts.html +2 -2
  336. package/coverage/lcov-report/src/tabs/tabStyles.ts.html +64 -28
  337. package/coverage/lcov-report/src/tabs/useTabList.ts.html +44 -38
  338. package/coverage/lcov-report/src/tabs/useTabs.ts.html +1 -1
  339. package/coverage/lcov-report/src/tabs/utils.ts.html +3 -3
  340. package/coverage/lcov-report/src/test-utils/IntersectionObserver.ts.html +1 -1
  341. package/coverage/lcov-report/src/test-utils/ResizeObserver.ts.html +205 -205
  342. package/coverage/lcov-report/src/test-utils/data-testid.ts.html +1 -1
  343. package/coverage/lcov-report/src/test-utils/drag.ts.html +1 -1
  344. package/coverage/lcov-report/src/test-utils/index.html +4 -4
  345. package/coverage/lcov-report/src/test-utils/jest-setup.ts.html +9 -9
  346. package/coverage/lcov-report/src/test-utils/matchMedia.ts.html +4 -4
  347. package/coverage/lcov-report/src/test-utils/polyfills/IntersectionObserver.ts.html +4 -4
  348. package/coverage/lcov-report/src/test-utils/polyfills/ResizeObserver.ts.html +3 -3
  349. package/coverage/lcov-report/src/test-utils/polyfills/index.html +1 -1
  350. package/coverage/lcov-report/src/test-utils/polyfills/matchMedia.ts.html +6 -6
  351. package/coverage/lcov-report/src/test-utils/polyfills/offsetParent.ts.html +14 -14
  352. package/coverage/lcov-report/src/test-utils/polyfills/scrollIntoView.ts.html +5 -5
  353. package/coverage/lcov-report/src/test-utils/render.tsx.html +21 -21
  354. package/coverage/lcov-report/src/test-utils/timers.ts.html +1 -1
  355. package/coverage/lcov-report/src/theme/LocalStorageColorSchemeProvider.tsx.html +1 -1
  356. package/coverage/lcov-report/src/theme/ThemeProvider.tsx.html +1 -1
  357. package/coverage/lcov-report/src/theme/colors.ts.html +1 -1
  358. package/coverage/lcov-report/src/theme/cssVars.ts.html +1 -1
  359. package/coverage/lcov-report/src/theme/index.html +1 -1
  360. package/coverage/lcov-report/src/theme/useCSSVariables.ts.html +25 -25
  361. package/coverage/lcov-report/src/theme/useColorScheme.ts.html +1 -1
  362. package/coverage/lcov-report/src/theme/useColorSchemeMetaTag.ts.html +1 -1
  363. package/coverage/lcov-report/src/theme/useColorSchemeProvider.ts.html +1 -1
  364. package/coverage/lcov-report/src/theme/usePrefersColorScheme.ts.html +1 -1
  365. package/coverage/lcov-report/src/theme/utils.ts.html +1 -1
  366. package/coverage/lcov-report/src/tooltip/Tooltip.tsx.html +62 -62
  367. package/coverage/lcov-report/src/tooltip/TooltipHoverModeProvider.tsx.html +3 -3
  368. package/coverage/lcov-report/src/tooltip/constants.ts.html +1 -1
  369. package/coverage/lcov-report/src/tooltip/index.html +9 -9
  370. package/coverage/lcov-report/src/tooltip/tooltipStyles.ts.html +12 -12
  371. package/coverage/lcov-report/src/tooltip/useTooltip.ts.html +243 -222
  372. package/coverage/lcov-report/src/tooltip/useTooltipPosition.ts.html +27 -27
  373. package/coverage/lcov-report/src/tooltip/utils.ts.html +22 -22
  374. package/coverage/lcov-report/src/transition/CSSTransition.tsx.html +1 -1
  375. package/coverage/lcov-report/src/transition/Collapse.tsx.html +1 -1
  376. package/coverage/lcov-report/src/transition/CrossFade.tsx.html +1 -1
  377. package/coverage/lcov-report/src/transition/ScaleTransition.tsx.html +1 -1
  378. package/coverage/lcov-report/src/transition/SkeletonPlaceholder.tsx.html +374 -338
  379. package/coverage/lcov-report/src/transition/Slide.tsx.html +1 -1
  380. package/coverage/lcov-report/src/transition/SlideContainer.tsx.html +1 -1
  381. package/coverage/lcov-report/src/transition/collapseStyles.ts.html +13 -13
  382. package/coverage/lcov-report/src/transition/config.ts.html +5 -5
  383. package/coverage/lcov-report/src/transition/index.html +47 -32
  384. package/coverage/lcov-report/src/transition/maxWidthTransition.ts.html +1 -1
  385. package/coverage/lcov-report/src/transition/skeletonPlaceholderUtils.ts.html +400 -0
  386. package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +68 -68
  387. package/coverage/lcov-report/src/transition/useCarousel.ts.html +1 -1
  388. package/coverage/lcov-report/src/transition/useCollapseTransition.ts.html +87 -87
  389. package/coverage/lcov-report/src/transition/useCrossFadeTransition.ts.html +1 -1
  390. package/coverage/lcov-report/src/transition/useMaxWidthTransition.ts.html +1 -1
  391. package/coverage/lcov-report/src/transition/useScaleTransition.ts.html +18 -18
  392. package/coverage/lcov-report/src/transition/useSkeletonPlaceholder.ts.html +607 -562
  393. package/coverage/lcov-report/src/transition/useSlideTransition.ts.html +1 -1
  394. package/coverage/lcov-report/src/transition/useTransition.ts.html +237 -237
  395. package/coverage/lcov-report/src/transition/utils.ts.html +43 -43
  396. package/coverage/lcov-report/src/tree/DefaultTreeItemRenderer.tsx.html +18 -6
  397. package/coverage/lcov-report/src/tree/Tree.tsx.html +20 -8
  398. package/coverage/lcov-report/src/tree/TreeGroup.tsx.html +45 -45
  399. package/coverage/lcov-report/src/tree/TreeItem.tsx.html +7 -10
  400. package/coverage/lcov-report/src/tree/TreeItemExpander.tsx.html +1 -1
  401. package/coverage/lcov-report/src/tree/TreeProvider.tsx.html +8 -8
  402. package/coverage/lcov-report/src/tree/index.html +11 -11
  403. package/coverage/lcov-report/src/tree/styles.ts.html +8 -35
  404. package/coverage/lcov-report/src/tree/useTree.ts.html +1 -1
  405. package/coverage/lcov-report/src/tree/useTreeExpansion.ts.html +1 -1
  406. package/coverage/lcov-report/src/tree/useTreeItems.ts.html +1 -1
  407. package/coverage/lcov-report/src/tree/useTreeMovement.ts.html +1 -1
  408. package/coverage/lcov-report/src/tree/useTreeSelection.ts.html +1 -1
  409. package/coverage/lcov-report/src/tree/utils.ts.html +1 -1
  410. package/coverage/lcov-report/src/typography/SrOnly.tsx.html +1 -1
  411. package/coverage/lcov-report/src/typography/TextContainer.tsx.html +1 -1
  412. package/coverage/lcov-report/src/typography/Typography.tsx.html +1 -1
  413. package/coverage/lcov-report/src/typography/WritingDirectionProvider.tsx.html +1 -1
  414. package/coverage/lcov-report/src/typography/index.html +1 -1
  415. package/coverage/lcov-report/src/useAsyncAction.ts.html +1 -1
  416. package/coverage/lcov-report/src/useDebouncedFunction.ts.html +1 -1
  417. package/coverage/lcov-report/src/useDropzone.ts.html +1 -1
  418. package/coverage/lcov-report/src/useElementSize.ts.html +334 -0
  419. package/coverage/lcov-report/src/useEnsuredId.ts.html +8 -8
  420. package/coverage/lcov-report/src/useEnsuredRef.ts.html +14 -14
  421. package/coverage/lcov-report/src/useEnsuredState.ts.html +1 -1
  422. package/coverage/lcov-report/src/useHtmlClassName.ts.html +1 -1
  423. package/coverage/lcov-report/src/useIntersectionObserver.ts.html +1 -1
  424. package/coverage/lcov-report/src/useIsomorphicLayoutEffect.ts.html +1 -1
  425. package/coverage/lcov-report/src/useLocalStorage.ts.html +1 -1
  426. package/coverage/lcov-report/src/useOrientation.ts.html +32 -32
  427. package/coverage/lcov-report/src/usePageInactive.ts.html +30 -30
  428. package/coverage/lcov-report/src/useResizeListener.ts.html +38 -32
  429. package/coverage/lcov-report/src/useResizeObserver.ts.html +68 -179
  430. package/coverage/lcov-report/src/useThrottledFunction.ts.html +1 -1
  431. package/coverage/lcov-report/src/useToggle.ts.html +1 -1
  432. package/coverage/lcov-report/src/useUnmounted.ts.html +1 -1
  433. package/coverage/lcov-report/src/useWindowSize.ts.html +124 -94
  434. package/coverage/lcov-report/src/utils/RenderRecursively.tsx.html +1 -1
  435. package/coverage/lcov-report/src/utils/alphaNumericSort.ts.html +1 -1
  436. package/coverage/lcov-report/src/utils/applyRef.ts.html +11 -11
  437. package/coverage/lcov-report/src/utils/bem.ts.html +45 -45
  438. package/coverage/lcov-report/src/utils/filters.ts.html +1 -1
  439. package/coverage/lcov-report/src/utils/getClientPosition.ts.html +1 -1
  440. package/coverage/lcov-report/src/utils/getMiddleOfRange.ts.html +163 -0
  441. package/coverage/lcov-report/src/utils/getPercentage.ts.html +9 -9
  442. package/coverage/lcov-report/src/utils/getRangeDefaultValue.ts.html +66 -87
  443. package/coverage/lcov-report/src/utils/getRangeSteps.ts.html +7 -7
  444. package/coverage/lcov-report/src/utils/identity.ts.html +1 -1
  445. package/coverage/lcov-report/src/utils/index.html +46 -31
  446. package/coverage/lcov-report/src/utils/isElementVisible.ts.html +1 -1
  447. package/coverage/lcov-report/src/utils/isValidNumber.ts.html +118 -0
  448. package/coverage/lcov-report/src/utils/loop.ts.html +1 -1
  449. package/coverage/lcov-report/src/utils/nearest.ts.html +21 -21
  450. package/coverage/lcov-report/src/utils/parseCssLengthUnit.ts.html +18 -18
  451. package/coverage/lcov-report/src/utils/randomInt.ts.html +52 -52
  452. package/coverage/lcov-report/src/utils/wait.ts.html +1 -1
  453. package/coverage/lcov-report/src/utils/withinRange.ts.html +1 -1
  454. package/coverage/lcov-report/src/window-splitter/WindowSplitter.tsx.html +1 -1
  455. package/coverage/lcov-report/src/window-splitter/index.html +14 -14
  456. package/coverage/lcov-report/src/window-splitter/useWindowSplitter.ts.html +19 -67
  457. package/coverage/lcov-report/src/window-splitter/useWindowSplitterMaxValue.ts.html +256 -0
  458. package/coverage/lcov-report/suspense/CircularProgressSuspense.tsx.html +283 -0
  459. package/coverage/lcov-report/suspense/NullSuspense.tsx.html +202 -0
  460. package/coverage/lcov-report/suspense/index.html +131 -0
  461. package/coverage/lcov-report/tabIndicatorStyles.ts.html +43 -13
  462. package/coverage/lcov-report/tabListStyles.ts.html +35 -26
  463. package/coverage/lcov-report/tabStyles.ts.html +68 -26
  464. package/coverage/lcov-report/tabs/Tab.tsx.html +233 -143
  465. package/coverage/lcov-report/tabs/TabList.tsx.html +85 -85
  466. package/coverage/lcov-report/tabs/index.html +56 -11
  467. package/coverage/lcov-report/tabs/tabIndicatorStyles.ts.html +187 -0
  468. package/coverage/lcov-report/tabs/tabListStyles.ts.html +241 -0
  469. package/coverage/lcov-report/tabs/tabStyles.ts.html +253 -0
  470. package/coverage/lcov-report/tabs/useTabList.ts.html +736 -0
  471. package/coverage/lcov-report/tabs/useTabs.ts.html +1 -1
  472. package/coverage/lcov-report/tabs/utils.ts.html +1 -1
  473. package/coverage/lcov-report/test-utils/index.html +21 -21
  474. package/coverage/lcov-report/test-utils/use.ts.html +187 -0
  475. package/coverage/lcov-report/tooltip/Tooltip.tsx.html +62 -62
  476. package/coverage/lcov-report/tooltip/index.html +10 -70
  477. package/coverage/lcov-report/tooltip/useTooltip.ts.html +243 -222
  478. package/coverage/lcov-report/transition/SkeletonPlaceholder.tsx.html +595 -0
  479. package/coverage/lcov-report/transition/config.ts.html +5 -5
  480. package/coverage/lcov-report/transition/index.html +1 -1
  481. package/coverage/lcov-report/transition/skeletonPlaceholderUtils.ts.html +400 -0
  482. package/coverage/lcov-report/transition/useSkeletonPlaceholder.ts.html +952 -0
  483. package/coverage/lcov-report/tree/TreeItem.tsx.html +7 -10
  484. package/coverage/lcov-report/tree/index.html +12 -27
  485. package/coverage/lcov-report/tree/styles.ts.html +538 -0
  486. package/coverage/lcov-report/typography/Typography.tsx.html +110 -110
  487. package/coverage/lcov-report/typography/WritingDirectionProvider.tsx.html +75 -75
  488. package/coverage/lcov-report/typography/index.html +15 -15
  489. package/coverage/lcov-report/useSkeletonPlaceholder.ts.html +952 -0
  490. package/coverage/lcov-report/useTabList.ts.html +142 -136
  491. package/coverage/lcov-report/useWindowSplitter.ts.html +640 -0
  492. package/coverage/lcov-report/useWindowSplitterMaxValue.ts.html +256 -0
  493. package/coverage/lcov-report/utils/index.html +16 -31
  494. package/coverage/lcov-report/utils/isElementVisible.ts.html +14 -14
  495. package/coverage/lcov-report/utils/randomInt.ts.html +148 -0
  496. package/coverage/lcov-report/utils/wait.ts.html +1 -1
  497. package/coverage/lcov-report/window-splitter/index.html +21 -36
  498. package/coverage/lcov-report/window-splitter/useWindowSplitter.ts.html +406 -328
  499. package/coverage/lcov.info +474 -0
  500. package/dist/_box-shadows.scss +12 -2
  501. package/dist/_core.scss +0 -2
  502. package/dist/_utils.scss +22 -0
  503. package/dist/app-bar/AppBar.d.ts +4 -9
  504. package/dist/app-bar/AppBar.js +29 -7
  505. package/dist/app-bar/AppBar.js.map +1 -1
  506. package/dist/app-bar/_app-bar.scss +7 -9
  507. package/dist/avatar/Avatar.d.ts +1 -1
  508. package/dist/avatar/Avatar.js.map +1 -1
  509. package/dist/badge/_badge.scss +12 -7
  510. package/dist/button/TooltippedButton.d.ts +62 -0
  511. package/dist/button/TooltippedButton.js +62 -0
  512. package/dist/button/TooltippedButton.js.map +1 -0
  513. package/dist/card/Card.js +3 -2
  514. package/dist/card/Card.js.map +1 -1
  515. package/dist/card/CardContent.js +1 -1
  516. package/dist/card/CardContent.js.map +1 -1
  517. package/dist/card/ClickableCard.d.ts +42 -0
  518. package/dist/card/ClickableCard.js +73 -0
  519. package/dist/card/ClickableCard.js.map +1 -0
  520. package/dist/card/_card.scss +15 -9
  521. package/dist/card/styles.d.ts +8 -0
  522. package/dist/card/styles.js +6 -3
  523. package/dist/card/styles.js.map +1 -1
  524. package/dist/dialog/_dialog.scss +28 -15
  525. package/dist/divider/_divider.scss +9 -10
  526. package/dist/draggable/useDraggable.d.ts +12 -23
  527. package/dist/draggable/useDraggable.js +15 -6
  528. package/dist/draggable/useDraggable.js.map +1 -1
  529. package/dist/draggable/utils.d.ts +4 -17
  530. package/dist/draggable/utils.js +9 -25
  531. package/dist/draggable/utils.js.map +1 -1
  532. package/dist/expansion-panel/_expansion-panel.scss +25 -16
  533. package/dist/expansion-panel/useExpansionPanels.d.ts +5 -3
  534. package/dist/expansion-panel/useExpansionPanels.js +16 -9
  535. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  536. package/dist/form/MenuItemInputToggle.d.ts +1 -1
  537. package/dist/form/MenuItemInputToggle.js.map +1 -1
  538. package/dist/form/Select.js +6 -1
  539. package/dist/form/Select.js.map +1 -1
  540. package/dist/form/_form.scss +40 -22
  541. package/dist/icon/IconRotator.js +2 -3
  542. package/dist/icon/IconRotator.js.map +1 -1
  543. package/dist/icon/_icon.scss +7 -2
  544. package/dist/index.d.ts +5 -0
  545. package/dist/index.js +5 -0
  546. package/dist/index.js.map +1 -1
  547. package/dist/interaction/_interaction.scss +12 -9
  548. package/dist/layout/useLayoutAppBarHeight.js +5 -9
  549. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  550. package/dist/link/_link.scss +26 -12
  551. package/dist/list/ListItem.d.ts +8 -3
  552. package/dist/list/ListItem.js +4 -3
  553. package/dist/list/ListItem.js.map +1 -1
  554. package/dist/list/ListItemAddon.js +2 -1
  555. package/dist/list/ListItemAddon.js.map +1 -1
  556. package/dist/list/ListItemChildren.js +3 -2
  557. package/dist/list/ListItemChildren.js.map +1 -1
  558. package/dist/list/ListItemLink.js +3 -3
  559. package/dist/list/ListItemLink.js.map +1 -1
  560. package/dist/list/_list.scss +29 -18
  561. package/dist/list/listItemStyles.d.ts +9 -1
  562. package/dist/list/listItemStyles.js +5 -5
  563. package/dist/list/listItemStyles.js.map +1 -1
  564. package/dist/list/types.d.ts +14 -4
  565. package/dist/list/types.js.map +1 -1
  566. package/dist/menu/Menu.d.ts +1 -1
  567. package/dist/menu/Menu.js.map +1 -1
  568. package/dist/menu/_menu.scss +3 -14
  569. package/dist/portal/PortalContainerProvider.d.ts +2 -2
  570. package/dist/portal/PortalContainerProvider.js +6 -1
  571. package/dist/portal/PortalContainerProvider.js.map +1 -1
  572. package/dist/sheet/styles.d.ts +14 -15
  573. package/dist/sheet/styles.js.map +1 -1
  574. package/dist/table/TableCheckbox.d.ts +3 -2
  575. package/dist/table/TableCheckbox.js +4 -2
  576. package/dist/table/TableCheckbox.js.map +1 -1
  577. package/dist/table/TableRadio.d.ts +3 -2
  578. package/dist/table/TableRadio.js +4 -2
  579. package/dist/table/TableRadio.js.map +1 -1
  580. package/dist/table/tableCellStyles.d.ts +1 -1
  581. package/dist/table/tableCellStyles.js.map +1 -1
  582. package/dist/tabs/Tab.d.ts +24 -3
  583. package/dist/tabs/Tab.js +15 -8
  584. package/dist/tabs/Tab.js.map +1 -1
  585. package/dist/tabs/_tabs.scss +28 -16
  586. package/dist/tabs/tabIndicatorStyles.d.ts +2 -1
  587. package/dist/tabs/tabIndicatorStyles.js +6 -3
  588. package/dist/tabs/tabIndicatorStyles.js.map +1 -1
  589. package/dist/tabs/tabListStyles.js +2 -1
  590. package/dist/tabs/tabListStyles.js.map +1 -1
  591. package/dist/tabs/tabStyles.d.ts +2 -0
  592. package/dist/tabs/tabStyles.js +6 -3
  593. package/dist/tabs/tabStyles.js.map +1 -1
  594. package/dist/tabs/useTabList.d.ts +3 -3
  595. package/dist/tabs/useTabList.js +9 -6
  596. package/dist/tabs/useTabList.js.map +1 -1
  597. package/dist/tooltip/useTooltip.d.ts +14 -14
  598. package/dist/tooltip/useTooltip.js.map +1 -1
  599. package/dist/transition/SkeletonPlaceholder.d.ts +2 -2
  600. package/dist/transition/SkeletonPlaceholder.js +8 -3
  601. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  602. package/dist/transition/_transition.scss +12 -7
  603. package/dist/transition/skeletonPlaceholderUtils.d.ts +77 -0
  604. package/dist/transition/skeletonPlaceholderUtils.js +38 -0
  605. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -0
  606. package/dist/transition/useSkeletonPlaceholder.d.ts +12 -7
  607. package/dist/transition/useSkeletonPlaceholder.js +38 -37
  608. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  609. package/dist/tree/DefaultTreeItemRenderer.d.ts +2 -2
  610. package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
  611. package/dist/tree/Tree.d.ts +8 -4
  612. package/dist/tree/Tree.js.map +1 -1
  613. package/dist/tree/TreeItem.js +3 -4
  614. package/dist/tree/TreeItem.js.map +1 -1
  615. package/dist/tree/_tree.scss +29 -22
  616. package/dist/tree/styles.d.ts +0 -6
  617. package/dist/tree/styles.js +1 -2
  618. package/dist/tree/styles.js.map +1 -1
  619. package/dist/types.d.ts +7 -0
  620. package/dist/types.js +1 -2
  621. package/dist/types.js.map +1 -1
  622. package/dist/typography/_typography.scss +12 -2
  623. package/dist/useElementSize.d.ts +40 -0
  624. package/dist/useElementSize.js +53 -0
  625. package/dist/useElementSize.js.map +1 -0
  626. package/dist/useResizeListener.d.ts +1 -1
  627. package/dist/useResizeListener.js +1 -0
  628. package/dist/useResizeListener.js.map +1 -1
  629. package/dist/useResizeObserver.d.ts +4 -43
  630. package/dist/useResizeObserver.js +3 -42
  631. package/dist/useResizeObserver.js.map +1 -1
  632. package/dist/useWindowSize.d.ts +14 -11
  633. package/dist/useWindowSize.js +12 -7
  634. package/dist/useWindowSize.js.map +1 -1
  635. package/dist/utils/getMiddleOfRange.d.ts +13 -0
  636. package/dist/utils/getMiddleOfRange.js +20 -0
  637. package/dist/utils/getMiddleOfRange.js.map +1 -0
  638. package/dist/utils/getRangeDefaultValue.d.ts +3 -5
  639. package/dist/utils/getRangeDefaultValue.js +3 -13
  640. package/dist/utils/getRangeDefaultValue.js.map +1 -1
  641. package/dist/utils/getRangeSteps.d.ts +1 -1
  642. package/dist/utils/getRangeSteps.js +2 -2
  643. package/dist/utils/getRangeSteps.js.map +1 -1
  644. package/dist/utils/nearest.js +1 -1
  645. package/dist/utils/nearest.js.map +1 -1
  646. package/dist/window-splitter/_window-splitter.scss +11 -16
  647. package/dist/window-splitter/useWindowSplitter.d.ts +3 -5
  648. package/dist/window-splitter/useWindowSplitter.js +3 -11
  649. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  650. package/package.json +18 -18
  651. package/src/__tests__/useElementSize.tsx +181 -0
  652. package/src/__tests__/useWindowSize.node.tsx +56 -0
  653. package/src/__tests__/useWindowSize.tsx +156 -0
  654. package/src/_box-shadows.scss +12 -2
  655. package/src/_core.scss +0 -2
  656. package/src/_utils.scss +22 -0
  657. package/src/app-bar/AppBar.tsx +59 -19
  658. package/src/app-bar/__tests__/__snapshots__/AppBar.tsx.snap +21 -21
  659. package/src/app-bar/_app-bar.scss +7 -9
  660. package/src/avatar/Avatar.tsx +1 -1
  661. package/src/badge/_badge.scss +12 -7
  662. package/src/button/TooltippedButton.tsx +120 -0
  663. package/src/button/__tests__/TooltippedButton.tsx +60 -0
  664. package/src/button/__tests__/__snapshots__/TooltippedButton.tsx.snap +26 -0
  665. package/src/card/Card.tsx +5 -3
  666. package/src/card/CardContent.tsx +3 -3
  667. package/src/card/ClickableCard.tsx +105 -0
  668. package/src/card/__tests__/ClickableCard.tsx +66 -0
  669. package/src/card/__tests__/__snapshots__/CardHeader.tsx.snap +1 -1
  670. package/src/card/__tests__/__snapshots__/CardSubtitle.tsx.snap +2 -2
  671. package/src/card/__tests__/__snapshots__/ClickableCard.tsx.snap +20 -0
  672. package/src/card/__tests__/__snapshots__/styles.ts.snap +1 -1
  673. package/src/card/_card.scss +15 -9
  674. package/src/card/styles.ts +19 -10
  675. package/src/dialog/_dialog.scss +28 -15
  676. package/src/divider/_divider.scss +9 -10
  677. package/src/draggable/useDraggable.ts +26 -25
  678. package/src/draggable/utils.ts +16 -50
  679. package/src/expansion-panel/__tests__/ExpansionPanel.tsx +2 -2
  680. package/src/expansion-panel/_expansion-panel.scss +25 -16
  681. package/src/expansion-panel/useExpansionPanels.ts +20 -16
  682. package/src/form/MenuItemInputToggle.tsx +1 -1
  683. package/src/form/Select.tsx +9 -1
  684. package/src/form/_form.scss +40 -22
  685. package/src/icon/IconRotator.tsx +1 -2
  686. package/src/icon/_icon.scss +7 -2
  687. package/src/index.ts +5 -0
  688. package/src/interaction/_interaction.scss +12 -9
  689. package/src/layout/__tests__/__snapshots__/LayoutAppBar.tsx.snap +4 -4
  690. package/src/layout/__tests__/__snapshots__/useExpandableLayout.tsx.snap +1 -1
  691. package/src/layout/__tests__/__snapshots__/useLayoutTree.tsx.snap +18 -18
  692. package/src/layout/__tests__/__snapshots__/useResizableLayout.tsx.snap +1 -1
  693. package/src/layout/__tests__/__snapshots__/useTemporaryLayout.tsx.snap +1 -1
  694. package/src/layout/useLayoutAppBarHeight.ts +5 -9
  695. package/src/link/_link.scss +26 -12
  696. package/src/list/ListItem.tsx +19 -12
  697. package/src/list/ListItemAddon.tsx +5 -3
  698. package/src/list/ListItemChildren.tsx +4 -2
  699. package/src/list/ListItemLink.tsx +3 -3
  700. package/src/list/__tests__/ListItem.tsx +1 -1
  701. package/src/list/__tests__/__snapshots__/ListItem.tsx.snap +1 -1
  702. package/src/list/_list.scss +29 -18
  703. package/src/list/listItemStyles.ts +15 -5
  704. package/src/list/types.ts +15 -4
  705. package/src/menu/Menu.tsx +1 -1
  706. package/src/menu/_menu.scss +3 -14
  707. package/src/portal/PortalContainerProvider.tsx +10 -2
  708. package/src/portal/__tests__/PortalContainerProvider.tsx +23 -0
  709. package/src/sheet/styles.ts +14 -15
  710. package/src/suspense/__tests__/CircularProgressSuspense.tsx +90 -0
  711. package/src/suspense/__tests__/NullSuspense.tsx +46 -0
  712. package/src/suspense/__tests__/__snapshots__/CircularProgressSuspense.tsx.snap +24 -0
  713. package/src/table/TableCheckbox.tsx +4 -2
  714. package/src/table/TableRadio.tsx +4 -2
  715. package/src/table/tableCellStyles.ts +1 -1
  716. package/src/tabs/Tab.tsx +110 -70
  717. package/src/tabs/__tests__/Tab.tsx +25 -2
  718. package/src/tabs/__tests__/TabList.tsx +4 -4
  719. package/src/tabs/__tests__/__snapshots__/TabList.tsx.snap +2 -2
  720. package/src/tabs/_tabs.scss +28 -16
  721. package/src/tabs/tabIndicatorStyles.ts +13 -3
  722. package/src/tabs/tabListStyles.ts +1 -1
  723. package/src/tabs/tabStyles.ts +16 -4
  724. package/src/tabs/useTabList.ts +10 -8
  725. package/src/tooltip/useTooltip.ts +23 -16
  726. package/src/transition/SkeletonPlaceholder.tsx +18 -6
  727. package/src/transition/__tests__/SkeletonPlaceholder.tsx +72 -0
  728. package/src/transition/__tests__/__snapshots__/SkeletonPlaceholder.tsx.snap +24 -0
  729. package/src/transition/_transition.scss +12 -7
  730. package/src/transition/skeletonPlaceholderUtils.ts +105 -0
  731. package/src/transition/useSkeletonPlaceholder.ts +62 -47
  732. package/src/tree/DefaultTreeItemRenderer.tsx +6 -2
  733. package/src/tree/Tree.tsx +8 -4
  734. package/src/tree/TreeItem.tsx +3 -4
  735. package/src/tree/__tests__/Tree.tsx +1 -1
  736. package/src/tree/__tests__/__snapshots__/Tree.tsx.snap +124 -124
  737. package/src/tree/_tree.scss +29 -22
  738. package/src/tree/styles.ts +0 -9
  739. package/src/types.ts +8 -0
  740. package/src/typography/_typography.scss +12 -2
  741. package/src/useElementSize.ts +83 -0
  742. package/src/useResizeListener.ts +3 -1
  743. package/src/useResizeObserver.ts +7 -44
  744. package/src/useWindowSize.ts +29 -19
  745. package/src/utils/__tests__/getMiddleOfRange.ts +12 -0
  746. package/src/utils/__tests__/getRangeDefaultValue.ts +47 -0
  747. package/src/utils/getMiddleOfRange.ts +26 -0
  748. package/src/utils/getRangeDefaultValue.ts +8 -15
  749. package/src/utils/getRangeSteps.ts +2 -2
  750. package/src/utils/nearest.ts +1 -1
  751. package/src/window-splitter/_window-splitter.scss +11 -16
  752. package/src/window-splitter/useWindowSplitter.ts +12 -28
@@ -1,4 +1,4 @@
1
- import type { Ref, RefCallback } from "react";
1
+ import { type Ref, type RefCallback } from "react";
2
2
  /**
3
3
  * @remarks \@since 6.0.0
4
4
  */
@@ -98,48 +98,9 @@ export interface ResizeObserverHookOptions<E extends HTMLElement> {
98
98
  disableWidth?: boolean;
99
99
  }
100
100
  /**
101
- * @example
102
- * Simple Example
103
- * ```tsx
104
- * import { useResizeObserver } from "@react-md/core";
105
- * import type { ReactElement } from "react";
106
- * import { useState } from "react";
107
- *
108
- * interface Size {
109
- * height: number;
110
- * width: number;
111
- * }
112
- *
113
- * function Example(): ReactElement {
114
- * const [{ height, width }, setSize] = useState<Size>({
115
- * height: 0,
116
- * width: 0,
117
- * });
118
- * const targetRef = useResizeObserver({
119
- * onResize: useCallback((entry) => {
120
- * const { height, width } = entry.borderBox;
121
- * setSize({ height, width });
122
- * }, []),
123
- * });
124
- *
125
- * return (
126
- * <div ref={targetRef}>
127
- * <table>
128
- * <tbody>
129
- * <tr>
130
- * <th scope="col">Height:</th>
131
- * <td>{height}</td>
132
- * </tr>
133
- * <tr>
134
- * <th scope="col">Width:</th>
135
- * <td>{width}</td>
136
- * </tr>
137
- * </tbody>
138
- * </table>
139
- * </div>
140
- * );
141
- * }
142
- * ```
101
+ * The resize observer is used to track the size changes of a specific element.
102
+ * For most cases you can use the {@link useElementSize} instead, but this hook
103
+ * can be used for more complex behavior with the {@link ResizeObserverEntry}.
143
104
  *
144
105
  * @remarks
145
106
  * \@since 2.3.0
@@ -95,48 +95,9 @@ import { useEnsuredRef } from "./useEnsuredRef.js";
95
95
  * @remarks \@since 6.0.0
96
96
  */ export const resizeObserverManager = new ResizeObserverManager();
97
97
  /**
98
- * @example
99
- * Simple Example
100
- * ```tsx
101
- * import { useResizeObserver } from "@react-md/core";
102
- * import type { ReactElement } from "react";
103
- * import { useState } from "react";
104
- *
105
- * interface Size {
106
- * height: number;
107
- * width: number;
108
- * }
109
- *
110
- * function Example(): ReactElement {
111
- * const [{ height, width }, setSize] = useState<Size>({
112
- * height: 0,
113
- * width: 0,
114
- * });
115
- * const targetRef = useResizeObserver({
116
- * onResize: useCallback((entry) => {
117
- * const { height, width } = entry.borderBox;
118
- * setSize({ height, width });
119
- * }, []),
120
- * });
121
- *
122
- * return (
123
- * <div ref={targetRef}>
124
- * <table>
125
- * <tbody>
126
- * <tr>
127
- * <th scope="col">Height:</th>
128
- * <td>{height}</td>
129
- * </tr>
130
- * <tr>
131
- * <th scope="col">Width:</th>
132
- * <td>{width}</td>
133
- * </tr>
134
- * </tbody>
135
- * </table>
136
- * </div>
137
- * );
138
- * }
139
- * ```
98
+ * The resize observer is used to track the size changes of a specific element.
99
+ * For most cases you can use the {@link useElementSize} instead, but this hook
100
+ * can be used for more complex behavior with the {@link ResizeObserverEntry}.
140
101
  *
141
102
  * @remarks
142
103
  * \@since 2.3.0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useResizeObserver.ts"],"sourcesContent":["\"use client\";\nimport type { Ref, RefCallback } from \"react\";\nimport { useEffect } from \"react\";\nimport { useEnsuredRef } from \"./useEnsuredRef.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type ResizeObserverEntryCallback = (entry: ResizeObserverEntry) => void;\n\n/** @internal */\ntype Unsubscribe = () => void;\n\n/** @internal */\ninterface TargetSize {\n height: number;\n width: number;\n scrollHeight: number;\n scrollWidth: number;\n}\n\n/** @internal */\ninterface TargetSubscription {\n readonly onUpdate: ResizeObserverEntryCallback;\n readonly disableHeight: boolean;\n readonly disableWidth: boolean;\n\n size?: TargetSize;\n}\n\n/** @internal */\ninterface SubscribeOptions {\n element: Element;\n onUpdate: ResizeObserverEntryCallback;\n disableHeight: boolean;\n disableWidth: boolean;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0 This was added to help with testing. The\n * `subscriptions` and `sharedObserver` used to be module-level variables but\n * moving to a class makes it easier to mock. Checkout the\n * `src/tests-utils/ResizeObserver.ts`\n */\nexport class ResizeObserverManager {\n frame: number;\n subscriptions: Map<Element, Set<TargetSubscription>>;\n\n /**\n * Why is there a single shared observer instead of multiple and a\n * \"subscription\" model?\n *\n * Note: Probably a bit of a premature optimization right now...\n *\n * @see https://github.com/WICG/resize-observer/issues/59\n * @internal\n */\n sharedObserver: ResizeObserver | undefined;\n\n constructor() {\n this.frame = 0;\n this.subscriptions = new Map();\n }\n\n subscribe = (options: SubscribeOptions): Unsubscribe => {\n const { element, onUpdate, disableHeight, disableWidth } = options;\n\n // lazy initialize the observer\n const observer =\n this.sharedObserver ||\n new ResizeObserver((entries) => {\n // this prevents the `ResizeObserver loop limit exceeded`\n window.cancelAnimationFrame(this.frame);\n this.frame = window.requestAnimationFrame(() => {\n this.handleResizeEntries(entries);\n });\n });\n this.sharedObserver = observer;\n\n const updates = this.subscriptions.get(element) || new Set();\n const subscription: TargetSubscription = {\n onUpdate,\n disableHeight,\n disableWidth,\n };\n updates.add(subscription);\n if (!this.subscriptions.has(element)) {\n this.subscriptions.set(element, updates);\n }\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n updates.delete(subscription);\n };\n };\n\n handleResizeEntries = (entries: ResizeObserverEntry[]): void => {\n for (const entry of entries) {\n const targetSubscriptions = this.subscriptions.get(entry.target);\n // shouldn't really happen\n /* c8 ignore start */\n if (!targetSubscriptions) {\n continue;\n }\n /* c8 ignore end */\n\n const entries = targetSubscriptions.values();\n for (const subscription of entries) {\n const { height, width } = entry.contentRect;\n const { scrollHeight, scrollWidth } = entry.target;\n const { onUpdate, size, disableHeight, disableWidth } = subscription;\n const isHeightChange =\n !disableHeight &&\n (!size ||\n size.height !== height ||\n size.scrollHeight !== scrollHeight);\n const isWidthChange =\n !disableWidth &&\n (!size || size.width !== width || size.scrollWidth !== scrollWidth);\n\n subscription.size = {\n height,\n width,\n scrollHeight,\n scrollWidth,\n };\n if (isHeightChange || isWidthChange) {\n onUpdate(entry);\n }\n }\n }\n };\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport const resizeObserverManager = new ResizeObserverManager();\n\n/**\n * @remarks\n * \\@since 2.3.0\n * \\@since 6.0.0 Renamed from `UseResizeObserverOptions` and added\n * `onUpdate`/`disabled` options.\n */\nexport interface ResizeObserverHookOptions<E extends HTMLElement> {\n /**\n * An optional ref to merge with the ref returned by this hook.\n */\n ref?: Ref<E>;\n\n /**\n * **Must be wrapped in `useCallback` to prevent re-creating the\n * ResizeObserver each render.**\n *\n * This function will be called whenever the target element resizes.\n *\n * @see {@link useResizeObserver} for an example.\n */\n onUpdate: ResizeObserverEntryCallback;\n\n /**\n * Set this to `true` to prevent observing the element's size changes. THis is\n * equivalent to not attaching the returned ref to any element.\n *\n * @defaultValue `false`\n */\n disabled?: boolean;\n\n /**\n * Set this to `true` if the {@link onUpdate} should not be fired for height\n * changes.\n *\n * @defaultValue `false`\n */\n disableHeight?: boolean;\n\n /**\n * Set this to `true` if the {@link onUpdate} should not be fired for width\n * changes.\n *\n * @defaultValue `false`\n */\n disableWidth?: boolean;\n}\n\n/**\n * @example\n * Simple Example\n * ```tsx\n * import { useResizeObserver } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n * import { useState } from \"react\";\n *\n * interface Size {\n * height: number;\n * width: number;\n * }\n *\n * function Example(): ReactElement {\n * const [{ height, width }, setSize] = useState<Size>({\n * height: 0,\n * width: 0,\n * });\n * const targetRef = useResizeObserver({\n * onResize: useCallback((entry) => {\n * const { height, width } = entry.borderBox;\n * setSize({ height, width });\n * }, []),\n * });\n *\n * return (\n * <div ref={targetRef}>\n * <table>\n * <tbody>\n * <tr>\n * <th scope=\"col\">Height:</th>\n * <td>{height}</td>\n * </tr>\n * <tr>\n * <th scope=\"col\">Width:</th>\n * <td>{width}</td>\n * </tr>\n * </tbody>\n * </table>\n * </div>\n * );\n * }\n * ```\n *\n * @remarks\n * \\@since 2.3.0\n * \\@since 6.0.0 The API was updated to match the `useIntersectionObserver`\n * implementation -- accepts only a single object parameter and returns a\n * {@link RefCallback} instead of `[nodeRef, refCallback]`\n */\nexport function useResizeObserver<E extends HTMLElement>(\n options: ResizeObserverHookOptions<E>\n): RefCallback<E> {\n const {\n ref,\n onUpdate,\n disabled,\n disableHeight = false,\n disableWidth = false,\n } = options;\n\n const [targetNodeRef, refCallback] = useEnsuredRef(ref);\n useEffect(() => {\n const element = targetNodeRef.current;\n if (disabled || (disableHeight && disableWidth) || !element) {\n return;\n }\n\n const unsubscribe = resizeObserverManager.subscribe({\n element,\n onUpdate,\n disableHeight,\n disableWidth,\n });\n\n return () => {\n unsubscribe();\n };\n }, [disableHeight, disableWidth, disabled, onUpdate, targetNodeRef]);\n\n return refCallback;\n}\n"],"names":["useEffect","useEnsuredRef","ResizeObserverManager","constructor","frame","subscriptions","sharedObserver","subscribe","options","element","onUpdate","disableHeight","disableWidth","observer","ResizeObserver","entries","window","cancelAnimationFrame","requestAnimationFrame","handleResizeEntries","updates","get","Set","subscription","add","has","set","observe","unobserve","delete","entry","targetSubscriptions","target","values","height","width","contentRect","scrollHeight","scrollWidth","size","isHeightChange","isWidthChange","Map","resizeObserverManager","useResizeObserver","ref","disabled","targetNodeRef","refCallback","current","unsubscribe"],"mappings":"AAAA;;;;;;;;;;;;;;AAEA,SAASA,SAAS,QAAQ,QAAQ;AAClC,SAASC,aAAa,QAAQ,qBAAqB;AAmCnD;;;;;;CAMC,GACD,OAAO,MAAMC;IAeXC,aAAc;QAddC,uBAAAA,SAAAA,KAAAA;QACAC,uBAAAA,iBAAAA,KAAAA;QAEA;;;;;;;;GAQC,GACDC,uBAAAA,kBAAAA,KAAAA;QAOAC,uBAAAA,aAAY,CAACC;YACX,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,aAAa,EAAEC,YAAY,EAAE,GAAGJ;YAE3D,+BAA+B;YAC/B,MAAMK,WACJ,IAAI,CAACP,cAAc,IACnB,IAAIQ,eAAe,CAACC;gBAClB,yDAAyD;gBACzDC,OAAOC,oBAAoB,CAAC,IAAI,CAACb,KAAK;gBACtC,IAAI,CAACA,KAAK,GAAGY,OAAOE,qBAAqB,CAAC;oBACxC,IAAI,CAACC,mBAAmB,CAACJ;gBAC3B;YACF;YACF,IAAI,CAACT,cAAc,GAAGO;YAEtB,MAAMO,UAAU,IAAI,CAACf,aAAa,CAACgB,GAAG,CAACZ,YAAY,IAAIa;YACvD,MAAMC,eAAmC;gBACvCb;gBACAC;gBACAC;YACF;YACAQ,QAAQI,GAAG,CAACD;YACZ,IAAI,CAAC,IAAI,CAAClB,aAAa,CAACoB,GAAG,CAAChB,UAAU;gBACpC,IAAI,CAACJ,aAAa,CAACqB,GAAG,CAACjB,SAASW;YAClC;YAEAP,SAASc,OAAO,CAAClB;YAEjB,OAAO;gBACLI,SAASe,SAAS,CAACnB;gBACnBW,QAAQS,MAAM,CAACN;YACjB;QACF;QAEAJ,uBAAAA,uBAAsB,CAACJ;YACrB,KAAK,MAAMe,SAASf,QAAS;gBAC3B,MAAMgB,sBAAsB,IAAI,CAAC1B,aAAa,CAACgB,GAAG,CAACS,MAAME,MAAM;gBAC/D,0BAA0B;gBAC1B,mBAAmB,GACnB,IAAI,CAACD,qBAAqB;oBACxB;gBACF;gBACA,iBAAiB,GAEjB,MAAMhB,UAAUgB,oBAAoBE,MAAM;gBAC1C,KAAK,MAAMV,gBAAgBR,QAAS;oBAClC,MAAM,EAAEmB,MAAM,EAAEC,KAAK,EAAE,GAAGL,MAAMM,WAAW;oBAC3C,MAAM,EAAEC,YAAY,EAAEC,WAAW,EAAE,GAAGR,MAAME,MAAM;oBAClD,MAAM,EAAEtB,QAAQ,EAAE6B,IAAI,EAAE5B,aAAa,EAAEC,YAAY,EAAE,GAAGW;oBACxD,MAAMiB,iBACJ,CAAC7B,iBACA,CAAA,CAAC4B,QACAA,KAAKL,MAAM,KAAKA,UAChBK,KAAKF,YAAY,KAAKA,YAAW;oBACrC,MAAMI,gBACJ,CAAC7B,gBACA,CAAA,CAAC2B,QAAQA,KAAKJ,KAAK,KAAKA,SAASI,KAAKD,WAAW,KAAKA,WAAU;oBAEnEf,aAAagB,IAAI,GAAG;wBAClBL;wBACAC;wBACAE;wBACAC;oBACF;oBACA,IAAIE,kBAAkBC,eAAe;wBACnC/B,SAASoB;oBACX;gBACF;YACF;QACF;QAzEE,IAAI,CAAC1B,KAAK,GAAG;QACb,IAAI,CAACC,aAAa,GAAG,IAAIqC;IAC3B;AAwEF;AAEA;;;CAGC,GACD,OAAO,MAAMC,wBAAwB,IAAIzC,wBAAwB;AAiDjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDC,GACD,OAAO,SAAS0C,kBACdpC,OAAqC;IAErC,MAAM,EACJqC,GAAG,EACHnC,QAAQ,EACRoC,QAAQ,EACRnC,gBAAgB,KAAK,EACrBC,eAAe,KAAK,EACrB,GAAGJ;IAEJ,MAAM,CAACuC,eAAeC,YAAY,GAAG/C,cAAc4C;IACnD7C,UAAU;QACR,MAAMS,UAAUsC,cAAcE,OAAO;QACrC,IAAIH,YAAanC,iBAAiBC,gBAAiB,CAACH,SAAS;YAC3D;QACF;QAEA,MAAMyC,cAAcP,sBAAsBpC,SAAS,CAAC;YAClDE;YACAC;YACAC;YACAC;QACF;QAEA,OAAO;YACLsC;QACF;IACF,GAAG;QAACvC;QAAeC;QAAckC;QAAUpC;QAAUqC;KAAc;IAEnE,OAAOC;AACT"}
1
+ {"version":3,"sources":["../src/useResizeObserver.ts"],"sourcesContent":["\"use client\";\nimport { useEffect, type Ref, type RefCallback } from \"react\";\nimport { useEnsuredRef } from \"./useEnsuredRef.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type useElementSize } from \"./useElementSize.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type ResizeObserverEntryCallback = (entry: ResizeObserverEntry) => void;\n\n/** @internal */\ntype Unsubscribe = () => void;\n\n/** @internal */\ninterface TargetSize {\n height: number;\n width: number;\n scrollHeight: number;\n scrollWidth: number;\n}\n\n/** @internal */\ninterface TargetSubscription {\n readonly onUpdate: ResizeObserverEntryCallback;\n readonly disableHeight: boolean;\n readonly disableWidth: boolean;\n\n size?: TargetSize;\n}\n\n/** @internal */\ninterface SubscribeOptions {\n element: Element;\n onUpdate: ResizeObserverEntryCallback;\n disableHeight: boolean;\n disableWidth: boolean;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0 This was added to help with testing. The\n * `subscriptions` and `sharedObserver` used to be module-level variables but\n * moving to a class makes it easier to mock. Checkout the\n * `src/tests-utils/ResizeObserver.ts`\n */\nexport class ResizeObserverManager {\n frame: number;\n subscriptions: Map<Element, Set<TargetSubscription>>;\n\n /**\n * Why is there a single shared observer instead of multiple and a\n * \"subscription\" model?\n *\n * Note: Probably a bit of a premature optimization right now...\n *\n * @see https://github.com/WICG/resize-observer/issues/59\n * @internal\n */\n sharedObserver: ResizeObserver | undefined;\n\n constructor() {\n this.frame = 0;\n this.subscriptions = new Map();\n }\n\n subscribe = (options: SubscribeOptions): Unsubscribe => {\n const { element, onUpdate, disableHeight, disableWidth } = options;\n\n // lazy initialize the observer\n const observer =\n this.sharedObserver ||\n new ResizeObserver((entries) => {\n // this prevents the `ResizeObserver loop limit exceeded`\n window.cancelAnimationFrame(this.frame);\n this.frame = window.requestAnimationFrame(() => {\n this.handleResizeEntries(entries);\n });\n });\n this.sharedObserver = observer;\n\n const updates = this.subscriptions.get(element) || new Set();\n const subscription: TargetSubscription = {\n onUpdate,\n disableHeight,\n disableWidth,\n };\n updates.add(subscription);\n if (!this.subscriptions.has(element)) {\n this.subscriptions.set(element, updates);\n }\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n updates.delete(subscription);\n };\n };\n\n handleResizeEntries = (entries: ResizeObserverEntry[]): void => {\n for (const entry of entries) {\n const targetSubscriptions = this.subscriptions.get(entry.target);\n // shouldn't really happen\n /* c8 ignore start */\n if (!targetSubscriptions) {\n continue;\n }\n /* c8 ignore end */\n\n const entries = targetSubscriptions.values();\n for (const subscription of entries) {\n const { height, width } = entry.contentRect;\n const { scrollHeight, scrollWidth } = entry.target;\n const { onUpdate, size, disableHeight, disableWidth } = subscription;\n const isHeightChange =\n !disableHeight &&\n (!size ||\n size.height !== height ||\n size.scrollHeight !== scrollHeight);\n const isWidthChange =\n !disableWidth &&\n (!size || size.width !== width || size.scrollWidth !== scrollWidth);\n\n subscription.size = {\n height,\n width,\n scrollHeight,\n scrollWidth,\n };\n if (isHeightChange || isWidthChange) {\n onUpdate(entry);\n }\n }\n }\n };\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport const resizeObserverManager = new ResizeObserverManager();\n\n/**\n * @remarks\n * \\@since 2.3.0\n * \\@since 6.0.0 Renamed from `UseResizeObserverOptions` and added\n * `onUpdate`/`disabled` options.\n */\nexport interface ResizeObserverHookOptions<E extends HTMLElement> {\n /**\n * An optional ref to merge with the ref returned by this hook.\n */\n ref?: Ref<E>;\n\n /**\n * **Must be wrapped in `useCallback` to prevent re-creating the\n * ResizeObserver each render.**\n *\n * This function will be called whenever the target element resizes.\n *\n * @see {@link useResizeObserver} for an example.\n */\n onUpdate: ResizeObserverEntryCallback;\n\n /**\n * Set this to `true` to prevent observing the element's size changes. THis is\n * equivalent to not attaching the returned ref to any element.\n *\n * @defaultValue `false`\n */\n disabled?: boolean;\n\n /**\n * Set this to `true` if the {@link onUpdate} should not be fired for height\n * changes.\n *\n * @defaultValue `false`\n */\n disableHeight?: boolean;\n\n /**\n * Set this to `true` if the {@link onUpdate} should not be fired for width\n * changes.\n *\n * @defaultValue `false`\n */\n disableWidth?: boolean;\n}\n\n/**\n * The resize observer is used to track the size changes of a specific element.\n * For most cases you can use the {@link useElementSize} instead, but this hook\n * can be used for more complex behavior with the {@link ResizeObserverEntry}.\n *\n * @remarks\n * \\@since 2.3.0\n * \\@since 6.0.0 The API was updated to match the `useIntersectionObserver`\n * implementation -- accepts only a single object parameter and returns a\n * {@link RefCallback} instead of `[nodeRef, refCallback]`\n */\nexport function useResizeObserver<E extends HTMLElement>(\n options: ResizeObserverHookOptions<E>\n): RefCallback<E> {\n const {\n ref,\n onUpdate,\n disabled,\n disableHeight = false,\n disableWidth = false,\n } = options;\n\n const [targetNodeRef, refCallback] = useEnsuredRef(ref);\n useEffect(() => {\n const element = targetNodeRef.current;\n if (disabled || (disableHeight && disableWidth) || !element) {\n return;\n }\n\n const unsubscribe = resizeObserverManager.subscribe({\n element,\n onUpdate,\n disableHeight,\n disableWidth,\n });\n\n return () => {\n unsubscribe();\n };\n }, [disableHeight, disableWidth, disabled, onUpdate, targetNodeRef]);\n\n return refCallback;\n}\n"],"names":["useEffect","useEnsuredRef","ResizeObserverManager","constructor","frame","subscriptions","sharedObserver","subscribe","options","element","onUpdate","disableHeight","disableWidth","observer","ResizeObserver","entries","window","cancelAnimationFrame","requestAnimationFrame","handleResizeEntries","updates","get","Set","subscription","add","has","set","observe","unobserve","delete","entry","targetSubscriptions","target","values","height","width","contentRect","scrollHeight","scrollWidth","size","isHeightChange","isWidthChange","Map","resizeObserverManager","useResizeObserver","ref","disabled","targetNodeRef","refCallback","current","unsubscribe"],"mappings":"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"}
@@ -1,18 +1,21 @@
1
+ import { type ElementSize } from "./types.js";
2
+ import { type ResizeListenerOptions } from "./useResizeListener.js";
1
3
  /**
2
4
  * @remarks \@since 6.0.0
3
5
  */
4
- export interface WindowSize {
5
- height: number;
6
- width: number;
7
- }
8
- /**
9
- * @remarks \@since 6.0.0
10
- */
11
- export interface WindowSizeOptions extends AddEventListenerOptions {
6
+ export interface WindowSizeOptions extends Omit<ResizeListenerOptions, "disabled" | "onUpdate"> {
12
7
  /**
13
- * @defaultValue `true`
8
+ * The default value to use in SSR environments for the window's height.
9
+ *
10
+ * @defaultValue `0`
11
+ */
12
+ ssrHeight?: number;
13
+ /**
14
+ * The default value to use in SSR environments for the window's width.
15
+ *
16
+ * @defaultValue `0`
14
17
  */
15
- throttle?: boolean;
18
+ ssrWidth?: number;
16
19
  /**
17
20
  * Set this to `true` to ignore resize events that only updated the height.
18
21
  * The hook can be disabled by setting this and {@link disableWidth} to
@@ -54,4 +57,4 @@ export interface WindowSizeOptions extends AddEventListenerOptions {
54
57
  *
55
58
  * @remarks \@since 6.0.0
56
59
  */
57
- export declare function useWindowSize(options?: WindowSizeOptions): WindowSize;
60
+ export declare function useWindowSize(options?: WindowSizeOptions): ElementSize;
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import { useState } from "react";
2
+ import { useCallback, useState } from "react";
3
+ import { useSsr } from "./SsrProvider.js";
3
4
  import { useResizeListener } from "./useResizeListener.js";
4
5
  /**
5
6
  * This is just a convenience wrapper around the {@link useResizeListener}.
@@ -25,12 +26,13 @@ import { useResizeListener } from "./useResizeListener.js";
25
26
  *
26
27
  * @remarks \@since 6.0.0
27
28
  */ export function useWindowSize(options = {}) {
28
- const { once, signal, capture, passive, throttle, disableWidth, disableHeight } = options;
29
+ const { once, signal, capture, passive, throttle, ssrHeight = 0, ssrWidth = 0, disableWidth, disableHeight } = options;
30
+ const ssr = useSsr();
29
31
  const [size, setSize] = useState(()=>{
30
- if (typeof window === "undefined") {
32
+ if (typeof window === "undefined" || ssr) {
31
33
  return {
32
- height: 0,
33
- width: 0
34
+ height: ssrHeight,
35
+ width: ssrWidth
34
36
  };
35
37
  }
36
38
  return {
@@ -45,7 +47,7 @@ import { useResizeListener } from "./useResizeListener.js";
45
47
  passive,
46
48
  throttle,
47
49
  disabled: disableHeight && disableWidth,
48
- onUpdate () {
50
+ onUpdate: useCallback(()=>{
49
51
  setSize((prevSize)=>{
50
52
  const nextSize = {
51
53
  height: window.innerHeight,
@@ -55,7 +57,10 @@ import { useResizeListener } from "./useResizeListener.js";
55
57
  const isWidthChange = !disableWidth && prevSize.width !== nextSize.width;
56
58
  return isHeightChange || isWidthChange ? nextSize : prevSize;
57
59
  });
58
- }
60
+ }, [
61
+ disableHeight,
62
+ disableWidth
63
+ ])
59
64
  });
60
65
  return size;
61
66
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useWindowSize.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { useResizeListener } from \"./useResizeListener.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface WindowSize {\n height: number;\n width: number;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface WindowSizeOptions extends AddEventListenerOptions {\n /**\n * @defaultValue `true`\n */\n throttle?: boolean;\n\n /**\n * Set this to `true` to ignore resize events that only updated the height.\n * The hook can be disabled by setting this and {@link disableWidth} to\n * `true`.\n *\n * @defaultValue `false`\n */\n disableHeight?: boolean;\n\n /**\n * Set this to `true` to ignore resize events that only updated the width.\n * The hook can be disabled by setting this and {@link disableHeight} to\n * `true`.\n *\n * @defaultValue `false`\n */\n disableWidth?: boolean;\n}\n\n/**\n * This is just a convenience wrapper around the {@link useResizeListener}.\n *\n * @example\n * Simple Example\n * ```tsx\n * import { useWindowSize } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n * import { useState } from \"react\";\n *\n * function Example(): ReactElement {\n * const { height, width } = useWindowSize();\n *\n * return (\n * <>\n * The current window size:\n * <pre><code>{JSON.stringify(size, null, 2)}</code></pre>\n * </>\n * );\n * }\n * ```\n *\n * @remarks \\@since 6.0.0\n */\nexport function useWindowSize(options: WindowSizeOptions = {}): WindowSize {\n const {\n once,\n signal,\n capture,\n passive,\n throttle,\n disableWidth,\n disableHeight,\n } = options;\n\n const [size, setSize] = useState(() => {\n if (typeof window === \"undefined\") {\n return {\n height: 0,\n width: 0,\n };\n }\n\n return {\n height: window.innerHeight,\n width: window.innerWidth,\n };\n });\n\n useResizeListener({\n once,\n signal,\n capture,\n passive,\n throttle,\n disabled: disableHeight && disableWidth,\n onUpdate() {\n setSize((prevSize) => {\n const nextSize: WindowSize = {\n height: window.innerHeight,\n width: window.innerWidth,\n };\n\n const isHeightChange =\n !disableHeight && prevSize.height !== nextSize.height;\n const isWidthChange =\n !disableWidth && prevSize.width !== nextSize.width;\n\n return isHeightChange || isWidthChange ? nextSize : prevSize;\n });\n },\n });\n\n return size;\n}\n"],"names":["useState","useResizeListener","useWindowSize","options","once","signal","capture","passive","throttle","disableWidth","disableHeight","size","setSize","window","height","width","innerHeight","innerWidth","disabled","onUpdate","prevSize","nextSize","isHeightChange","isWidthChange"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,QAAQ;AACjC,SAASC,iBAAiB,QAAQ,yBAAyB;AAsC3D;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GACD,OAAO,SAASC,cAAcC,UAA6B,CAAC,CAAC;IAC3D,MAAM,EACJC,IAAI,EACJC,MAAM,EACNC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,YAAY,EACZC,aAAa,EACd,GAAGP;IAEJ,MAAM,CAACQ,MAAMC,QAAQ,GAAGZ,SAAS;QAC/B,IAAI,OAAOa,WAAW,aAAa;YACjC,OAAO;gBACLC,QAAQ;gBACRC,OAAO;YACT;QACF;QAEA,OAAO;YACLD,QAAQD,OAAOG,WAAW;YAC1BD,OAAOF,OAAOI,UAAU;QAC1B;IACF;IAEAhB,kBAAkB;QAChBG;QACAC;QACAC;QACAC;QACAC;QACAU,UAAUR,iBAAiBD;QAC3BU;YACEP,QAAQ,CAACQ;gBACP,MAAMC,WAAuB;oBAC3BP,QAAQD,OAAOG,WAAW;oBAC1BD,OAAOF,OAAOI,UAAU;gBAC1B;gBAEA,MAAMK,iBACJ,CAACZ,iBAAiBU,SAASN,MAAM,KAAKO,SAASP,MAAM;gBACvD,MAAMS,gBACJ,CAACd,gBAAgBW,SAASL,KAAK,KAAKM,SAASN,KAAK;gBAEpD,OAAOO,kBAAkBC,gBAAgBF,WAAWD;YACtD;QACF;IACF;IAEA,OAAOT;AACT"}
1
+ {"version":3,"sources":["../src/useWindowSize.ts"],"sourcesContent":["\"use client\";\nimport { useCallback, useState } from \"react\";\nimport { useSsr } from \"./SsrProvider.js\";\nimport { type ElementSize } from \"./types.js\";\nimport {\n useResizeListener,\n type ResizeListenerOptions,\n} from \"./useResizeListener.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface WindowSizeOptions\n extends Omit<ResizeListenerOptions, \"disabled\" | \"onUpdate\"> {\n /**\n * The default value to use in SSR environments for the window's height.\n *\n * @defaultValue `0`\n */\n ssrHeight?: number;\n\n /**\n * The default value to use in SSR environments for the window's width.\n *\n * @defaultValue `0`\n */\n ssrWidth?: number;\n\n /**\n * Set this to `true` to ignore resize events that only updated the height.\n * The hook can be disabled by setting this and {@link disableWidth} to\n * `true`.\n *\n * @defaultValue `false`\n */\n disableHeight?: boolean;\n\n /**\n * Set this to `true` to ignore resize events that only updated the width.\n * The hook can be disabled by setting this and {@link disableHeight} to\n * `true`.\n *\n * @defaultValue `false`\n */\n disableWidth?: boolean;\n}\n\n/**\n * This is just a convenience wrapper around the {@link useResizeListener}.\n *\n * @example\n * Simple Example\n * ```tsx\n * import { useWindowSize } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n * import { useState } from \"react\";\n *\n * function Example(): ReactElement {\n * const { height, width } = useWindowSize();\n *\n * return (\n * <>\n * The current window size:\n * <pre><code>{JSON.stringify(size, null, 2)}</code></pre>\n * </>\n * );\n * }\n * ```\n *\n * @remarks \\@since 6.0.0\n */\nexport function useWindowSize(options: WindowSizeOptions = {}): ElementSize {\n const {\n once,\n signal,\n capture,\n passive,\n throttle,\n ssrHeight = 0,\n ssrWidth = 0,\n disableWidth,\n disableHeight,\n } = options;\n\n const ssr = useSsr();\n const [size, setSize] = useState(() => {\n if (typeof window === \"undefined\" || ssr) {\n return {\n height: ssrHeight,\n width: ssrWidth,\n };\n }\n\n return {\n height: window.innerHeight,\n width: window.innerWidth,\n };\n });\n\n useResizeListener({\n once,\n signal,\n capture,\n passive,\n throttle,\n disabled: disableHeight && disableWidth,\n onUpdate: useCallback(() => {\n setSize((prevSize) => {\n const nextSize: ElementSize = {\n height: window.innerHeight,\n width: window.innerWidth,\n };\n\n const isHeightChange =\n !disableHeight && prevSize.height !== nextSize.height;\n const isWidthChange =\n !disableWidth && prevSize.width !== nextSize.width;\n\n return isHeightChange || isWidthChange ? nextSize : prevSize;\n });\n }, [disableHeight, disableWidth]),\n });\n\n return size;\n}\n"],"names":["useCallback","useState","useSsr","useResizeListener","useWindowSize","options","once","signal","capture","passive","throttle","ssrHeight","ssrWidth","disableWidth","disableHeight","ssr","size","setSize","window","height","width","innerHeight","innerWidth","disabled","onUpdate","prevSize","nextSize","isHeightChange","isWidthChange"],"mappings":"AAAA;AACA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAC9C,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,SACEC,iBAAiB,QAEZ,yBAAyB;AAwChC;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GACD,OAAO,SAASC,cAAcC,UAA6B,CAAC,CAAC;IAC3D,MAAM,EACJC,IAAI,EACJC,MAAM,EACNC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,YAAY,CAAC,EACbC,WAAW,CAAC,EACZC,YAAY,EACZC,aAAa,EACd,GAAGT;IAEJ,MAAMU,MAAMb;IACZ,MAAM,CAACc,MAAMC,QAAQ,GAAGhB,SAAS;QAC/B,IAAI,OAAOiB,WAAW,eAAeH,KAAK;YACxC,OAAO;gBACLI,QAAQR;gBACRS,OAAOR;YACT;QACF;QAEA,OAAO;YACLO,QAAQD,OAAOG,WAAW;YAC1BD,OAAOF,OAAOI,UAAU;QAC1B;IACF;IAEAnB,kBAAkB;QAChBG;QACAC;QACAC;QACAC;QACAC;QACAa,UAAUT,iBAAiBD;QAC3BW,UAAUxB,YAAY;YACpBiB,QAAQ,CAACQ;gBACP,MAAMC,WAAwB;oBAC5BP,QAAQD,OAAOG,WAAW;oBAC1BD,OAAOF,OAAOI,UAAU;gBAC1B;gBAEA,MAAMK,iBACJ,CAACb,iBAAiBW,SAASN,MAAM,KAAKO,SAASP,MAAM;gBACvD,MAAMS,gBACJ,CAACf,gBAAgBY,SAASL,KAAK,KAAKM,SAASN,KAAK;gBAEpD,OAAOO,kBAAkBC,gBAAgBF,WAAWD;YACtD;QACF,GAAG;YAACX;YAAeD;SAAa;IAClC;IAEA,OAAOG;AACT"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @remarks \@since 6.0.0
3
+ */
4
+ export interface GetMiddleOfRangeOptions {
5
+ min: number;
6
+ max: number;
7
+ step: number;
8
+ }
9
+ /**
10
+ * @internal
11
+ * @remarks \@since 6.0.0
12
+ */
13
+ export declare function getMiddleOfRange(options: GetMiddleOfRangeOptions): number;
@@ -0,0 +1,20 @@
1
+ import { getRangeSteps } from "./getRangeSteps.js";
2
+ import { nearest } from "./nearest.js";
3
+ /**
4
+ * @internal
5
+ * @remarks \@since 6.0.0
6
+ */ export function getMiddleOfRange(options) {
7
+ const { min, max, step } = options;
8
+ return nearest({
9
+ min,
10
+ max,
11
+ steps: getRangeSteps({
12
+ min,
13
+ max,
14
+ step
15
+ }),
16
+ value: (max - min) / 2 + min
17
+ });
18
+ }
19
+
20
+ //# sourceMappingURL=getMiddleOfRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/getMiddleOfRange.ts"],"sourcesContent":["import { getRangeSteps } from \"./getRangeSteps.js\";\nimport { nearest } from \"./nearest.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface GetMiddleOfRangeOptions {\n min: number;\n max: number;\n step: number;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function getMiddleOfRange(options: GetMiddleOfRangeOptions): number {\n const { min, max, step } = options;\n\n return nearest({\n min,\n max,\n steps: getRangeSteps({ min, max, step }),\n value: (max - min) / 2 + min,\n });\n}\n"],"names":["getRangeSteps","nearest","getMiddleOfRange","options","min","max","step","steps","value"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,OAAO,QAAQ,eAAe;AAWvC;;;CAGC,GACD,OAAO,SAASC,iBAAiBC,OAAgC;IAC/D,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGH;IAE3B,OAAOF,QAAQ;QACbG;QACAC;QACAE,OAAOP,cAAc;YAAEI;YAAKC;YAAKC;QAAK;QACtCE,OAAO,AAACH,CAAAA,MAAMD,GAAE,IAAK,IAAIA;IAC3B;AACF"}
@@ -1,12 +1,10 @@
1
- import type { UseStateInitializer } from "../types.js";
1
+ import { type UseStateInitializer } from "../types.js";
2
+ import { type GetMiddleOfRangeOptions } from "./getMiddleOfRange.js";
2
3
  /**
3
4
  * @internal
4
5
  * @remarks \@since 6.0.0
5
6
  */
6
- export interface RangeDefaultValueOptions {
7
- min: number;
8
- max: number;
9
- step: number;
7
+ export interface RangeDefaultValueOptions extends GetMiddleOfRangeOptions {
10
8
  defaultValue?: UseStateInitializer<number>;
11
9
  }
12
10
  /**
@@ -1,23 +1,13 @@
1
- import { getRangeSteps } from "./getRangeSteps.js";
2
- import { nearest } from "./nearest.js";
1
+ import { getMiddleOfRange } from "./getMiddleOfRange.js";
3
2
  /**
4
3
  * @internal
5
4
  * @remarks \@since 6.0.0
6
5
  */ export function getRangeDefaultValue(options) {
7
- const { min, max, step, defaultValue } = options;
6
+ const { defaultValue } = options;
8
7
  if (typeof defaultValue !== "undefined") {
9
8
  return defaultValue;
10
9
  }
11
- return ()=>nearest({
12
- min,
13
- max,
14
- steps: getRangeSteps({
15
- min,
16
- max,
17
- step
18
- }),
19
- value: (max - min) / 2
20
- });
10
+ return ()=>getMiddleOfRange(options);
21
11
  }
22
12
 
23
13
  //# sourceMappingURL=getRangeDefaultValue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/getRangeDefaultValue.ts"],"sourcesContent":["import type { UseStateInitializer } from \"../types.js\";\nimport { getRangeSteps } from \"./getRangeSteps.js\";\nimport { nearest } from \"./nearest.js\";\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface RangeDefaultValueOptions {\n min: number;\n max: number;\n step: number;\n defaultValue?: UseStateInitializer<number>;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function getRangeDefaultValue(\n options: RangeDefaultValueOptions\n): UseStateInitializer<number> {\n const { min, max, step, defaultValue } = options;\n if (typeof defaultValue !== \"undefined\") {\n return defaultValue;\n }\n\n return () =>\n nearest({\n min,\n max,\n steps: getRangeSteps({ min, max, step }),\n value: (max - min) / 2,\n });\n}\n"],"names":["getRangeSteps","nearest","getRangeDefaultValue","options","min","max","step","defaultValue","steps","value"],"mappings":"AACA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,OAAO,QAAQ,eAAe;AAavC;;;CAGC,GACD,OAAO,SAASC,qBACdC,OAAiC;IAEjC,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAEC,YAAY,EAAE,GAAGJ;IACzC,IAAI,OAAOI,iBAAiB,aAAa;QACvC,OAAOA;IACT;IAEA,OAAO,IACLN,QAAQ;YACNG;YACAC;YACAG,OAAOR,cAAc;gBAAEI;gBAAKC;gBAAKC;YAAK;YACtCG,OAAO,AAACJ,CAAAA,MAAMD,GAAE,IAAK;QACvB;AACJ"}
1
+ {"version":3,"sources":["../../src/utils/getRangeDefaultValue.ts"],"sourcesContent":["import { type UseStateInitializer } from \"../types.js\";\nimport {\n getMiddleOfRange,\n type GetMiddleOfRangeOptions,\n} from \"./getMiddleOfRange.js\";\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface RangeDefaultValueOptions extends GetMiddleOfRangeOptions {\n defaultValue?: UseStateInitializer<number>;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function getRangeDefaultValue(\n options: RangeDefaultValueOptions\n): UseStateInitializer<number> {\n const { defaultValue } = options;\n if (typeof defaultValue !== \"undefined\") {\n return defaultValue;\n }\n\n return () => getMiddleOfRange(options);\n}\n"],"names":["getMiddleOfRange","getRangeDefaultValue","options","defaultValue"],"mappings":"AACA,SACEA,gBAAgB,QAEX,wBAAwB;AAU/B;;;CAGC,GACD,OAAO,SAASC,qBACdC,OAAiC;IAEjC,MAAM,EAAEC,YAAY,EAAE,GAAGD;IACzB,IAAI,OAAOC,iBAAiB,aAAa;QACvC,OAAOA;IACT;IAEA,OAAO,IAAMH,iBAAiBE;AAChC"}
@@ -16,4 +16,4 @@ export interface RangeStepsOptions {
16
16
  * \@since 6.0.0 Converted to using an object instead of multiple arguments and
17
17
  * renamed from `getSteps` to `getRangeSteps`.
18
18
  */
19
- export declare const getRangeSteps: (options: RangeStepsOptions) => number;
19
+ export declare function getRangeSteps(options: RangeStepsOptions): number;
@@ -9,9 +9,9 @@
9
9
  * \@since 2.5.0
10
10
  * \@since 6.0.0 Converted to using an object instead of multiple arguments and
11
11
  * renamed from `getSteps` to `getRangeSteps`.
12
- */ export const getRangeSteps = (options)=>{
12
+ */ export function getRangeSteps(options) {
13
13
  const { min, max, step } = options;
14
14
  return Math.abs(max - min) / step;
15
- };
15
+ }
16
16
 
17
17
  //# sourceMappingURL=getRangeSteps.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/getRangeSteps.ts"],"sourcesContent":["/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface RangeStepsOptions {\n min: number;\n max: number;\n step: number;\n}\n\n/**\n * Gets the number of steps in the allowed range of values.\n *\n * @internal\n * @remarks\n * \\@since 2.5.0\n * \\@since 6.0.0 Converted to using an object instead of multiple arguments and\n * renamed from `getSteps` to `getRangeSteps`.\n */\nexport const getRangeSteps = (options: RangeStepsOptions): number => {\n const { min, max, step } = options;\n\n return Math.abs(max - min) / step;\n};\n"],"names":["getRangeSteps","options","min","max","step","Math","abs"],"mappings":"AAAA;;;CAGC,GAOD;;;;;;;;CAQC,GACD,OAAO,MAAMA,gBAAgB,CAACC;IAC5B,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGH;IAE3B,OAAOI,KAAKC,GAAG,CAACH,MAAMD,OAAOE;AAC/B,EAAE"}
1
+ {"version":3,"sources":["../../src/utils/getRangeSteps.ts"],"sourcesContent":["/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface RangeStepsOptions {\n min: number;\n max: number;\n step: number;\n}\n\n/**\n * Gets the number of steps in the allowed range of values.\n *\n * @internal\n * @remarks\n * \\@since 2.5.0\n * \\@since 6.0.0 Converted to using an object instead of multiple arguments and\n * renamed from `getSteps` to `getRangeSteps`.\n */\nexport function getRangeSteps(options: RangeStepsOptions): number {\n const { min, max, step } = options;\n\n return Math.abs(max - min) / step;\n}\n"],"names":["getRangeSteps","options","min","max","step","Math","abs"],"mappings":"AAAA;;;CAGC,GAOD;;;;;;;;CAQC,GACD,OAAO,SAASA,cAAcC,OAA0B;IACtD,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGH;IAE3B,OAAOI,KAAKC,GAAG,CAACH,MAAMD,OAAOE;AAC/B"}
@@ -20,7 +20,7 @@
20
20
  // precision gets weird:
21
21
  // 0.28 * 100 === 28.000000000000004
22
22
  const step = range / steps;
23
- const decimals = Number.isInteger(step) ? range % steps : step.toString().split(".")[1].length;
23
+ const decimals = Number.isInteger(step) ? range % steps : `${step}`.split(".")[1].length;
24
24
  return Math.min(max, Math.max(min, parseFloat((zeroToOne * range + min).toFixed(decimals))));
25
25
  }
26
26
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/nearest.ts"],"sourcesContent":["/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface NearestOptions {\n min: number;\n max: number;\n steps: number;\n value: number;\n\n /** @defaultValue `max - min` */\n range?: number;\n}\n\n/**\n * Rounds a number to the nearest step within a min/max range.\n *\n * @see https://stackoverflow.com/a/13635455\n * @returns the value rounded to the nearest step in the min/max range\n * @remarks\n * \\@since 2.5.0 Added the `range` param\n * \\@since 6.0.0 Converted to using an object instead of multiple arguments.\n */\nexport function nearest(options: NearestOptions): number {\n const { min, max, steps, value, range = max - min } = options;\n if (min === max) {\n return max;\n }\n\n const rounded = Math.round(((value - min) * steps) / range) / steps;\n const zeroToOne = Math.min(Math.max(rounded, 0), 1);\n\n // have to calculate the number of allowed decimal places since decimal\n // precision gets weird:\n // 0.28 * 100 === 28.000000000000004\n const step = range / steps;\n const decimals = Number.isInteger(step)\n ? range % steps\n : step.toString().split(\".\")[1].length;\n\n return Math.min(\n max,\n Math.max(min, parseFloat((zeroToOne * range + min).toFixed(decimals)))\n );\n}\n"],"names":["nearest","options","min","max","steps","value","range","rounded","Math","round","zeroToOne","step","decimals","Number","isInteger","toString","split","length","parseFloat","toFixed"],"mappings":"AAAA;;;CAGC,GAWD;;;;;;;;CAQC,GACD,OAAO,SAASA,QAAQC,OAAuB;IAC7C,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQH,MAAMD,GAAG,EAAE,GAAGD;IACtD,IAAIC,QAAQC,KAAK;QACf,OAAOA;IACT;IAEA,MAAMI,UAAUC,KAAKC,KAAK,CAAC,AAAEJ,CAAAA,QAAQH,GAAE,IAAKE,QAASE,SAASF;IAC9D,MAAMM,YAAYF,KAAKN,GAAG,CAACM,KAAKL,GAAG,CAACI,SAAS,IAAI;IAEjD,uEAAuE;IACvE,wBAAwB;IACxB,oCAAoC;IACpC,MAAMI,OAAOL,QAAQF;IACrB,MAAMQ,WAAWC,OAAOC,SAAS,CAACH,QAC9BL,QAAQF,QACRO,KAAKI,QAAQ,GAAGC,KAAK,CAAC,IAAI,CAAC,EAAE,CAACC,MAAM;IAExC,OAAOT,KAAKN,GAAG,CACbC,KACAK,KAAKL,GAAG,CAACD,KAAKgB,WAAW,AAACR,CAAAA,YAAYJ,QAAQJ,GAAE,EAAGiB,OAAO,CAACP;AAE/D"}
1
+ {"version":3,"sources":["../../src/utils/nearest.ts"],"sourcesContent":["/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface NearestOptions {\n min: number;\n max: number;\n steps: number;\n value: number;\n\n /** @defaultValue `max - min` */\n range?: number;\n}\n\n/**\n * Rounds a number to the nearest step within a min/max range.\n *\n * @see https://stackoverflow.com/a/13635455\n * @returns the value rounded to the nearest step in the min/max range\n * @remarks\n * \\@since 2.5.0 Added the `range` param\n * \\@since 6.0.0 Converted to using an object instead of multiple arguments.\n */\nexport function nearest(options: NearestOptions): number {\n const { min, max, steps, value, range = max - min } = options;\n if (min === max) {\n return max;\n }\n\n const rounded = Math.round(((value - min) * steps) / range) / steps;\n const zeroToOne = Math.min(Math.max(rounded, 0), 1);\n\n // have to calculate the number of allowed decimal places since decimal\n // precision gets weird:\n // 0.28 * 100 === 28.000000000000004\n const step = range / steps;\n const decimals = Number.isInteger(step)\n ? range % steps\n : `${step}`.split(\".\")[1].length;\n\n return Math.min(\n max,\n Math.max(min, parseFloat((zeroToOne * range + min).toFixed(decimals)))\n );\n}\n"],"names":["nearest","options","min","max","steps","value","range","rounded","Math","round","zeroToOne","step","decimals","Number","isInteger","split","length","parseFloat","toFixed"],"mappings":"AAAA;;;CAGC,GAWD;;;;;;;;CAQC,GACD,OAAO,SAASA,QAAQC,OAAuB;IAC7C,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQH,MAAMD,GAAG,EAAE,GAAGD;IACtD,IAAIC,QAAQC,KAAK;QACf,OAAOA;IACT;IAEA,MAAMI,UAAUC,KAAKC,KAAK,CAAC,AAAEJ,CAAAA,QAAQH,GAAE,IAAKE,QAASE,SAASF;IAC9D,MAAMM,YAAYF,KAAKN,GAAG,CAACM,KAAKL,GAAG,CAACI,SAAS,IAAI;IAEjD,uEAAuE;IACvE,wBAAwB;IACxB,oCAAoC;IACpC,MAAMI,OAAOL,QAAQF;IACrB,MAAMQ,WAAWC,OAAOC,SAAS,CAACH,QAC9BL,QAAQF,QACR,CAAC,EAAEO,KAAK,CAAC,CAACI,KAAK,CAAC,IAAI,CAAC,EAAE,CAACC,MAAM;IAElC,OAAOR,KAAKN,GAAG,CACbC,KACAK,KAAKL,GAAG,CAACD,KAAKe,WAAW,AAACP,CAAAA,YAAYJ,QAAQJ,GAAE,EAAGgB,OAAO,CAACN;AAE/D"}
@@ -41,6 +41,17 @@ $variables: (top, right, bottom, left, opacity, position);
41
41
  @if not $disable-everything {
42
42
  .rmd-window-splitter {
43
43
  @include use-var(opacity);
44
+ @include utils.mouse-hover {
45
+ @include set-var(opacity, 1);
46
+ }
47
+ @include utils.keyboard-only {
48
+ // Do not use `:focus-visible` here since since it'll still be active
49
+ // after dragging with a mouse until the user clicks something else. The
50
+ // `--dragging` state handles that part
51
+ &:focus {
52
+ @include set-var(opacity, 1);
53
+ }
54
+ }
44
55
 
45
56
  background-color: transparent;
46
57
  border: 0;
@@ -57,22 +68,6 @@ $variables: (top, right, bottom, left, opacity, position);
57
68
  position: absolute;
58
69
  }
59
70
 
60
- &:hover {
61
- @include set-var(opacity, 1);
62
- }
63
-
64
- @include utils.keyboard-only {
65
- &:focus {
66
- @include set-var(opacity, 1);
67
- }
68
- }
69
-
70
- @include utils.touch-only {
71
- &:hover {
72
- @include set-var(opacity, 0);
73
- }
74
- }
75
-
76
71
  @if not $disable-horizontal {
77
72
  &--h {
78
73
  @include utils.auto-rtl(left, get-var(position));
@@ -1,5 +1,5 @@
1
- import type { Ref, RefCallback } from "react";
2
- import type { BaseDraggableOptions, DraggableImplementation, DraggableKeyboardEventHandlers, DraggableMouseEventHandlers, DraggableStateOptions, DraggableTouchEventHandlers } from "../draggable/useDraggable.js";
1
+ import { type Ref, type RefCallback } from "react";
2
+ import { type BaseDraggableOptions, type DraggableImplementation, type DraggableKeyboardEventHandlers, type DraggableMouseEventHandlers, type DraggableStateOptions, type DraggableTouchEventHandlers } from "../draggable/useDraggable.js";
3
3
  declare module "react" {
4
4
  interface CSSProperties {
5
5
  "--rmd-window-splitter-top"?: number | string;
@@ -51,9 +51,7 @@ export interface WindowSplitterImplementation<E extends HTMLElement = HTMLButton
51
51
  splitterProps: WindowSplitterWidgetProps<E>;
52
52
  }
53
53
  /**
54
- * You are most likely looking for the `useWindowSplitter` or
55
- * `useLocalStorageWindowSplitter` hooks instead since this is a low-level hook
56
- * to implement those two versions.
54
+ * Used to control the state for the `WindowSplitter` component.
57
55
  *
58
56
  * @example
59
57
  * Custom Implementation
@@ -1,11 +1,8 @@
1
1
  "use client";
2
2
  import { useDraggable } from "../draggable/useDraggable.js";
3
3
  import { useEnsuredId } from "../useEnsuredId.js";
4
- import { getPercentage } from "../utils/getPercentage.js";
5
4
  /**
6
- * You are most likely looking for the `useWindowSplitter` or
7
- * `useLocalStorageWindowSplitter` hooks instead since this is a low-level hook
8
- * to implement those two versions.
5
+ * Used to control the state for the `WindowSplitter` component.
9
6
  *
10
7
  * @example
11
8
  * Custom Implementation
@@ -37,15 +34,10 @@ import { getPercentage } from "../utils/getPercentage.js";
37
34
  *
38
35
  * @remarks \@since 6.0.0
39
36
  */ export function useWindowSplitter(options) {
40
- const { id: propId, min, max, reversed = false, vertical, withinOffsetParent } = options;
37
+ const { id: propId, reversed = false, vertical } = options;
41
38
  const id = useEnsuredId(propId, "splitter");
42
39
  const draggableImplementation = useDraggable(options);
43
- const { value, dragging, draggableRef, dragPercentage, mouseEventHandlers, keyboardEventHandlers } = draggableImplementation;
44
- const percentage = dragging && withinOffsetParent ? dragPercentage : getPercentage({
45
- min,
46
- max,
47
- value
48
- });
40
+ const { dragging, percentage, draggableRef, mouseEventHandlers, keyboardEventHandlers } = draggableImplementation;
49
41
  return {
50
42
  ...draggableImplementation,
51
43
  splitterProps: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/window-splitter/useWindowSplitter.ts"],"sourcesContent":["\"use client\";\nimport type { Ref, RefCallback } from \"react\";\nimport type {\n BaseDraggableOptions,\n DraggableImplementation,\n DraggableKeyboardEventHandlers,\n DraggableMouseEventHandlers,\n DraggableStateOptions,\n DraggableTouchEventHandlers,\n} from \"../draggable/useDraggable.js\";\nimport { useDraggable } from \"../draggable/useDraggable.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { getPercentage } from \"../utils/getPercentage.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-window-splitter-top\"?: number | string;\n \"--rmd-window-splitter-right\"?: number | string;\n \"--rmd-window-splitter-bottom\"?: number | string;\n \"--rmd-window-splitter-left\"?: number | string;\n \"--rmd-window-splitter-opacity\"?: number | string;\n \"--rmd-window-splitter-position\"?: number | string;\n }\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface BaseWindowSplitterOptions<\n E extends HTMLElement = HTMLButtonElement,\n> extends Omit<BaseDraggableOptions<E>, keyof DraggableTouchEventHandlers<E>> {\n /**\n * An optional id to use for the window splitter.\n *\n * @defaultValue `\"window-splitter-\" + useId()`\n */\n id?: string;\n\n /**\n * An optional ref for the window splitter element. This will be merged into\n * the {@link WindowSplitterWidgetProps.ref}.\n */\n ref?: Ref<E>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type WindowSplitterOptions<E extends HTMLElement = HTMLButtonElement> =\n BaseWindowSplitterOptions<E> & DraggableStateOptions;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface WindowSplitterWidgetProps<E extends HTMLElement>\n extends Required<DraggableMouseEventHandlers<E>>,\n Required<DraggableKeyboardEventHandlers<E>> {\n \"aria-orientation\": \"vertical\" | undefined;\n \"aria-valuenow\": number;\n \"aria-valuemin\": number;\n \"aria-valuemax\": number;\n id: string;\n ref: RefCallback<E>;\n role: \"separator\";\n reversed: boolean;\n dragging: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface WindowSplitterImplementation<\n E extends HTMLElement = HTMLButtonElement,\n> extends DraggableImplementation<E> {\n splitterProps: WindowSplitterWidgetProps<E>;\n}\n\n/**\n * You are most likely looking for the `useWindowSplitter` or\n * `useLocalStorageWindowSplitter` hooks instead since this is a low-level hook\n * to implement those two versions.\n *\n * @example\n * Custom Implementation\n * ```tsx\n * import { useWindowSplitter, WindowSplitterImplementation } from \"@react-md/core\";\n * import { useState } from \"react\";\n *\n * // this is pretty much the `useWindowSplitter` implementation\n * export function useMyCustomWindowSplitter(): WindowSplitterImplementation {\n * const [dragging, setDragging] = useState(false);\n * const [value, setValue] = useState(0);\n * const splitter = useWindowSplitter({\n * min: 0,\n * max: 100,\n * value,\n * setValue,\n * dragging,\n * setDragging,\n * });\n *\n * return {\n * ...splitter,\n * value,\n * setValue,\n * dragging,\n * }\n * }\n * ```\n *\n * @remarks \\@since 6.0.0\n */\nexport function useWindowSplitter<E extends HTMLElement = HTMLButtonElement>(\n options: WindowSplitterOptions<E>\n): WindowSplitterImplementation<E> {\n const {\n id: propId,\n min,\n max,\n reversed = false,\n vertical,\n withinOffsetParent,\n } = options;\n\n const id = useEnsuredId(propId, \"splitter\");\n const draggableImplementation = useDraggable(options);\n const {\n value,\n dragging,\n draggableRef,\n dragPercentage,\n mouseEventHandlers,\n keyboardEventHandlers,\n } = draggableImplementation;\n\n const percentage =\n dragging && withinOffsetParent\n ? dragPercentage\n : getPercentage({ min, max, value });\n\n return {\n ...draggableImplementation,\n splitterProps: {\n \"aria-orientation\": vertical ? \"vertical\" : undefined,\n \"aria-valuenow\": Math.ceil(percentage * 100),\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100,\n id,\n ref: draggableRef,\n role: \"separator\",\n dragging,\n reversed,\n ...mouseEventHandlers,\n ...keyboardEventHandlers,\n },\n };\n}\n"],"names":["useDraggable","useEnsuredId","getPercentage","useWindowSplitter","options","id","propId","min","max","reversed","vertical","withinOffsetParent","draggableImplementation","value","dragging","draggableRef","dragPercentage","mouseEventHandlers","keyboardEventHandlers","percentage","splitterProps","undefined","Math","ceil","ref","role"],"mappings":"AAAA;AAUA,SAASA,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,aAAa,QAAQ,4BAA4B;AAiE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCC,GACD,OAAO,SAASC,kBACdC,OAAiC;IAEjC,MAAM,EACJC,IAAIC,MAAM,EACVC,GAAG,EACHC,GAAG,EACHC,WAAW,KAAK,EAChBC,QAAQ,EACRC,kBAAkB,EACnB,GAAGP;IAEJ,MAAMC,KAAKJ,aAAaK,QAAQ;IAChC,MAAMM,0BAA0BZ,aAAaI;IAC7C,MAAM,EACJS,KAAK,EACLC,QAAQ,EACRC,YAAY,EACZC,cAAc,EACdC,kBAAkB,EAClBC,qBAAqB,EACtB,GAAGN;IAEJ,MAAMO,aACJL,YAAYH,qBACRK,iBACAd,cAAc;QAAEK;QAAKC;QAAKK;IAAM;IAEtC,OAAO;QACL,GAAGD,uBAAuB;QAC1BQ,eAAe;YACb,oBAAoBV,WAAW,aAAaW;YAC5C,iBAAiBC,KAAKC,IAAI,CAACJ,aAAa;YACxC,iBAAiB;YACjB,iBAAiB;YACjBd;YACAmB,KAAKT;YACLU,MAAM;YACNX;YACAL;YACA,GAAGQ,kBAAkB;YACrB,GAAGC,qBAAqB;QAC1B;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/window-splitter/useWindowSplitter.ts"],"sourcesContent":["\"use client\";\nimport { type Ref, type RefCallback } from \"react\";\nimport {\n useDraggable,\n type BaseDraggableOptions,\n type DraggableImplementation,\n type DraggableKeyboardEventHandlers,\n type DraggableMouseEventHandlers,\n type DraggableStateOptions,\n type DraggableTouchEventHandlers,\n} from \"../draggable/useDraggable.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-window-splitter-top\"?: number | string;\n \"--rmd-window-splitter-right\"?: number | string;\n \"--rmd-window-splitter-bottom\"?: number | string;\n \"--rmd-window-splitter-left\"?: number | string;\n \"--rmd-window-splitter-opacity\"?: number | string;\n \"--rmd-window-splitter-position\"?: number | string;\n }\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface BaseWindowSplitterOptions<\n E extends HTMLElement = HTMLButtonElement,\n> extends Omit<BaseDraggableOptions<E>, keyof DraggableTouchEventHandlers<E>> {\n /**\n * An optional id to use for the window splitter.\n *\n * @defaultValue `\"window-splitter-\" + useId()`\n */\n id?: string;\n\n /**\n * An optional ref for the window splitter element. This will be merged into\n * the {@link WindowSplitterWidgetProps.ref}.\n */\n ref?: Ref<E>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type WindowSplitterOptions<E extends HTMLElement = HTMLButtonElement> =\n BaseWindowSplitterOptions<E> & DraggableStateOptions;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface WindowSplitterWidgetProps<E extends HTMLElement>\n extends Required<DraggableMouseEventHandlers<E>>,\n Required<DraggableKeyboardEventHandlers<E>> {\n \"aria-orientation\": \"vertical\" | undefined;\n \"aria-valuenow\": number;\n \"aria-valuemin\": number;\n \"aria-valuemax\": number;\n id: string;\n ref: RefCallback<E>;\n role: \"separator\";\n reversed: boolean;\n dragging: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface WindowSplitterImplementation<\n E extends HTMLElement = HTMLButtonElement,\n> extends DraggableImplementation<E> {\n splitterProps: WindowSplitterWidgetProps<E>;\n}\n\n/**\n * Used to control the state for the `WindowSplitter` component.\n *\n * @example\n * Custom Implementation\n * ```tsx\n * import { useWindowSplitter, WindowSplitterImplementation } from \"@react-md/core\";\n * import { useState } from \"react\";\n *\n * // this is pretty much the `useWindowSplitter` implementation\n * export function useMyCustomWindowSplitter(): WindowSplitterImplementation {\n * const [dragging, setDragging] = useState(false);\n * const [value, setValue] = useState(0);\n * const splitter = useWindowSplitter({\n * min: 0,\n * max: 100,\n * value,\n * setValue,\n * dragging,\n * setDragging,\n * });\n *\n * return {\n * ...splitter,\n * value,\n * setValue,\n * dragging,\n * }\n * }\n * ```\n *\n * @remarks \\@since 6.0.0\n */\nexport function useWindowSplitter<E extends HTMLElement = HTMLButtonElement>(\n options: WindowSplitterOptions<E>\n): WindowSplitterImplementation<E> {\n const { id: propId, reversed = false, vertical } = options;\n\n const id = useEnsuredId(propId, \"splitter\");\n const draggableImplementation = useDraggable(options);\n const {\n dragging,\n percentage,\n draggableRef,\n mouseEventHandlers,\n keyboardEventHandlers,\n } = draggableImplementation;\n\n return {\n ...draggableImplementation,\n splitterProps: {\n \"aria-orientation\": vertical ? \"vertical\" : undefined,\n \"aria-valuenow\": Math.ceil(percentage * 100),\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100,\n id,\n ref: draggableRef,\n role: \"separator\",\n dragging,\n reversed,\n ...mouseEventHandlers,\n ...keyboardEventHandlers,\n },\n };\n}\n"],"names":["useDraggable","useEnsuredId","useWindowSplitter","options","id","propId","reversed","vertical","draggableImplementation","dragging","percentage","draggableRef","mouseEventHandlers","keyboardEventHandlers","splitterProps","undefined","Math","ceil","ref","role"],"mappings":"AAAA;AAEA,SACEA,YAAY,QAOP,+BAA+B;AACtC,SAASC,YAAY,QAAQ,qBAAqB;AAiElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCC,GACD,OAAO,SAASC,kBACdC,OAAiC;IAEjC,MAAM,EAAEC,IAAIC,MAAM,EAAEC,WAAW,KAAK,EAAEC,QAAQ,EAAE,GAAGJ;IAEnD,MAAMC,KAAKH,aAAaI,QAAQ;IAChC,MAAMG,0BAA0BR,aAAaG;IAC7C,MAAM,EACJM,QAAQ,EACRC,UAAU,EACVC,YAAY,EACZC,kBAAkB,EAClBC,qBAAqB,EACtB,GAAGL;IAEJ,OAAO;QACL,GAAGA,uBAAuB;QAC1BM,eAAe;YACb,oBAAoBP,WAAW,aAAaQ;YAC5C,iBAAiBC,KAAKC,IAAI,CAACP,aAAa;YACxC,iBAAiB;YACjB,iBAAiB;YACjBN;YACAc,KAAKP;YACLQ,MAAM;YACNV;YACAH;YACA,GAAGM,kBAAkB;YACrB,GAAGC,qBAAqB;QAC1B;IACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-md/core",
3
- "version": "1.0.0-next.2",
3
+ "version": "1.0.0-next.3",
4
4
  "description": "The core components and functionality for react-md.",
5
5
  "type": "module",
6
6
  "sass": "./dist/_core.scss",
@@ -55,22 +55,22 @@
55
55
  "license": "MIT",
56
56
  "dependencies": {
57
57
  "cnbuilder": "^3.1.0",
58
- "nanoid": "^5.0.3"
58
+ "nanoid": "^5.0.4"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@jest/globals": "^29.7.0",
62
62
  "@jest/types": "^29.6.3",
63
- "@swc/cli": "^0.1.62",
64
- "@swc/core": "1.3.96",
63
+ "@swc/cli": "^0.1.63",
64
+ "@swc/core": "1.3.102",
65
65
  "@swc/jest": "^0.2.29",
66
- "@testing-library/dom": "^9.3.3",
67
- "@testing-library/jest-dom": "^6.1.4",
68
- "@testing-library/react": "^14.1.0",
69
- "@testing-library/user-event": "^14.5.1",
70
- "@types/lodash": "^4.14.201",
71
- "@types/node": "^20.9.0",
72
- "@types/react": "^18.2.37",
73
- "@types/react-dom": "^18.2.15",
66
+ "@testing-library/dom": "^9.3.4",
67
+ "@testing-library/jest-dom": "^6.2.0",
68
+ "@testing-library/react": "^14.1.2",
69
+ "@testing-library/user-event": "^14.5.2",
70
+ "@types/lodash": "^4.14.202",
71
+ "@types/node": "^20.11.0",
72
+ "@types/react": "^18.2.47",
73
+ "@types/react-dom": "^18.2.18",
74
74
  "chokidar": "^3.5.3",
75
75
  "filesize": "^10.1.0",
76
76
  "glob": "10.3.10",
@@ -80,14 +80,14 @@
80
80
  "lodash": "^4.17.21",
81
81
  "lz-string": "^1.5.0",
82
82
  "npm-run-all": "^4.1.5",
83
- "postcss": "^8.4.31",
83
+ "postcss": "^8.4.33",
84
84
  "postcss-scss": "^4.0.9",
85
- "stylelint": "^15.11.0",
85
+ "stylelint": "^16.1.0",
86
86
  "stylelint-config-prettier-scss": "^1.0.0",
87
- "stylelint-config-recommended-scss": "^13.1.0",
88
- "stylelint-order": "^6.0.3",
89
- "ts-node": "^10.9.1",
90
- "typescript": "^5.2.2"
87
+ "stylelint-config-recommended-scss": "^14.0.0",
88
+ "stylelint-order": "^6.0.4",
89
+ "ts-node": "^10.9.2",
90
+ "typescript": "^5.3.3"
91
91
  },
92
92
  "peerDependencies": {
93
93
  "@jest/globals": "^29.6.1",