@mui/utils 6.0.0-beta.0 → 6.0.0-beta.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 (331) hide show
  1. package/CHANGELOG.md +473 -31
  2. package/ClassNameGenerator/ClassNameGenerator.js +7 -1
  3. package/ClassNameGenerator/index.js +13 -1
  4. package/ClassNameGenerator/package.json +2 -2
  5. package/HTMLElementType/HTMLElementType.js +7 -1
  6. package/HTMLElementType/index.js +13 -1
  7. package/HTMLElementType/package.json +2 -2
  8. package/appendOwnerState/appendOwnerState.d.ts +20 -0
  9. package/appendOwnerState/appendOwnerState.js +34 -0
  10. package/appendOwnerState/index.d.ts +2 -0
  11. package/{node/capitalize → appendOwnerState}/index.js +2 -2
  12. package/appendOwnerState/package.json +6 -0
  13. package/capitalize/capitalize.js +10 -3
  14. package/capitalize/index.js +13 -1
  15. package/capitalize/package.json +2 -2
  16. package/chainPropTypes/chainPropTypes.js +7 -1
  17. package/chainPropTypes/index.js +13 -1
  18. package/chainPropTypes/package.json +2 -2
  19. package/clamp/clamp.js +7 -1
  20. package/clamp/index.js +13 -1
  21. package/clamp/package.json +2 -2
  22. package/composeClasses/composeClasses.js +7 -1
  23. package/composeClasses/index.js +13 -1
  24. package/composeClasses/package.json +2 -2
  25. package/createChainedFunction/createChainedFunction.js +7 -1
  26. package/createChainedFunction/index.js +13 -1
  27. package/createChainedFunction/package.json +2 -2
  28. package/debounce/debounce.js +7 -1
  29. package/debounce/index.js +26 -2
  30. package/debounce/package.json +2 -2
  31. package/deepmerge/deepmerge.js +9 -2
  32. package/deepmerge/index.js +26 -2
  33. package/deepmerge/package.json +2 -2
  34. package/deprecatedPropType/deprecatedPropType.js +7 -1
  35. package/deprecatedPropType/index.js +13 -1
  36. package/deprecatedPropType/package.json +2 -2
  37. package/elementAcceptingRef/elementAcceptingRef.js +12 -5
  38. package/elementAcceptingRef/index.js +13 -1
  39. package/elementAcceptingRef/package.json +2 -2
  40. package/elementTypeAcceptingRef/elementTypeAcceptingRef.js +10 -3
  41. package/elementTypeAcceptingRef/index.js +13 -1
  42. package/elementTypeAcceptingRef/package.json +2 -2
  43. package/{node → esm}/ClassNameGenerator/ClassNameGenerator.js +1 -7
  44. package/esm/ClassNameGenerator/index.js +1 -0
  45. package/{node → esm}/HTMLElementType/HTMLElementType.js +1 -7
  46. package/esm/HTMLElementType/index.js +1 -0
  47. package/esm/appendOwnerState/appendOwnerState.js +28 -0
  48. package/esm/appendOwnerState/index.js +1 -0
  49. package/esm/capitalize/capitalize.js +11 -0
  50. package/esm/capitalize/index.js +1 -0
  51. package/{node → esm}/chainPropTypes/chainPropTypes.js +1 -7
  52. package/esm/chainPropTypes/index.js +1 -0
  53. package/esm/clamp/clamp.js +4 -0
  54. package/esm/clamp/index.js +1 -0
  55. package/{node → esm}/composeClasses/composeClasses.js +1 -7
  56. package/esm/composeClasses/index.js +1 -0
  57. package/{node → esm}/createChainedFunction/createChainedFunction.js +1 -7
  58. package/esm/createChainedFunction/index.js +1 -0
  59. package/{node → esm}/debounce/debounce.js +1 -7
  60. package/esm/debounce/index.js +2 -0
  61. package/{node → esm}/deepmerge/deepmerge.js +2 -9
  62. package/esm/deepmerge/index.js +2 -0
  63. package/{node → esm}/deprecatedPropType/deprecatedPropType.js +1 -7
  64. package/esm/deprecatedPropType/index.js +1 -0
  65. package/{node → esm}/elementAcceptingRef/elementAcceptingRef.js +5 -12
  66. package/esm/elementAcceptingRef/index.js +1 -0
  67. package/{node → esm}/elementTypeAcceptingRef/elementTypeAcceptingRef.js +3 -10
  68. package/esm/elementTypeAcceptingRef/index.js +1 -0
  69. package/{node → esm}/exactProp/exactProp.js +1 -7
  70. package/esm/exactProp/index.js +1 -0
  71. package/esm/extractEventHandlers/extractEventHandlers.js +18 -0
  72. package/esm/extractEventHandlers/index.js +1 -0
  73. package/{node → esm}/formatMuiErrorMessage/formatMuiErrorMessage.js +1 -7
  74. package/esm/formatMuiErrorMessage/index.js +1 -0
  75. package/esm/generateUtilityClass/generateUtilityClass.js +22 -0
  76. package/esm/generateUtilityClass/index.js +2 -0
  77. package/esm/generateUtilityClasses/generateUtilityClasses.js +8 -0
  78. package/esm/generateUtilityClasses/index.js +1 -0
  79. package/{node → esm}/getDisplayName/getDisplayName.js +4 -10
  80. package/esm/getDisplayName/index.js +1 -0
  81. package/{node → esm}/getScrollbarSize/getScrollbarSize.js +1 -7
  82. package/esm/getScrollbarSize/index.js +1 -0
  83. package/esm/getValidReactChildren/getValidReactChildren.js +11 -0
  84. package/esm/getValidReactChildren/index.js +1 -0
  85. package/esm/index.js +47 -0
  86. package/esm/integerPropType/index.js +2 -0
  87. package/{node → esm}/integerPropType/integerPropType.js +2 -9
  88. package/esm/isFocusVisible/index.js +1 -0
  89. package/{node → esm}/isFocusVisible/isFocusVisible.js +1 -7
  90. package/esm/isHostComponent/index.js +1 -0
  91. package/esm/isHostComponent/isHostComponent.js +7 -0
  92. package/esm/isMuiElement/index.js +1 -0
  93. package/esm/isMuiElement/isMuiElement.js +8 -0
  94. package/esm/mergeSlotProps/index.js +1 -0
  95. package/esm/mergeSlotProps/mergeSlotProps.js +90 -0
  96. package/esm/omitEventHandlers/index.js +1 -0
  97. package/esm/omitEventHandlers/omitEventHandlers.js +18 -0
  98. package/esm/ownerDocument/index.js +1 -0
  99. package/esm/ownerDocument/ownerDocument.js +3 -0
  100. package/esm/ownerWindow/index.js +1 -0
  101. package/esm/ownerWindow/ownerWindow.js +5 -0
  102. package/esm/ponyfillGlobal/index.js +1 -0
  103. package/esm/ponyfillGlobal/ponyfillGlobal.js +3 -0
  104. package/esm/refType/index.js +1 -0
  105. package/esm/refType/refType.js +3 -0
  106. package/esm/requirePropFactory/index.js +1 -0
  107. package/{node → esm}/requirePropFactory/requirePropFactory.js +2 -8
  108. package/esm/resolveComponentProps/index.js +1 -0
  109. package/esm/resolveComponentProps/resolveComponentProps.js +11 -0
  110. package/esm/resolveProps/index.js +1 -0
  111. package/{node → esm}/resolveProps/resolveProps.js +1 -7
  112. package/esm/setRef/index.js +1 -0
  113. package/{node → esm}/setRef/setRef.js +1 -7
  114. package/esm/types.js +1 -0
  115. package/esm/unsupportedProp/index.js +1 -0
  116. package/{node → esm}/unsupportedProp/unsupportedProp.js +1 -7
  117. package/esm/useControlled/index.js +1 -0
  118. package/{node → esm}/useControlled/useControlled.js +2 -9
  119. package/esm/useEnhancedEffect/index.js +1 -0
  120. package/esm/useEnhancedEffect/useEnhancedEffect.js +13 -0
  121. package/esm/useEventCallback/index.js +1 -0
  122. package/esm/useEventCallback/useEventCallback.js +20 -0
  123. package/esm/useForkRef/index.js +1 -0
  124. package/esm/useForkRef/useForkRef.js +22 -0
  125. package/esm/useId/index.js +1 -0
  126. package/{node → esm}/useId/useId.js +3 -10
  127. package/esm/useLazyRef/index.js +1 -0
  128. package/esm/useLazyRef/useLazyRef.js +19 -0
  129. package/esm/useLocalStorageState/index.js +1 -0
  130. package/{node → esm}/useLocalStorageState/useLocalStorageState.js +4 -13
  131. package/esm/useOnMount/index.js +1 -0
  132. package/esm/useOnMount/useOnMount.js +13 -0
  133. package/esm/usePreviousProps/index.js +1 -0
  134. package/esm/usePreviousProps/usePreviousProps.js +11 -0
  135. package/esm/useSlotProps/index.js +1 -0
  136. package/esm/useSlotProps/useSlotProps.js +38 -0
  137. package/esm/useTimeout/index.js +2 -0
  138. package/esm/useTimeout/useTimeout.js +35 -0
  139. package/esm/visuallyHidden/index.js +1 -0
  140. package/{node → esm}/visuallyHidden/visuallyHidden.js +1 -7
  141. package/exactProp/exactProp.js +7 -1
  142. package/exactProp/index.js +13 -1
  143. package/exactProp/package.json +2 -2
  144. package/extractEventHandlers/extractEventHandlers.d.ts +10 -0
  145. package/extractEventHandlers/extractEventHandlers.js +24 -0
  146. package/extractEventHandlers/index.d.ts +1 -0
  147. package/{node/ClassNameGenerator → extractEventHandlers}/index.js +2 -2
  148. package/extractEventHandlers/package.json +6 -0
  149. package/formatMuiErrorMessage/formatMuiErrorMessage.js +7 -1
  150. package/formatMuiErrorMessage/index.js +13 -1
  151. package/formatMuiErrorMessage/package.json +2 -2
  152. package/generateUtilityClass/generateUtilityClass.js +14 -5
  153. package/generateUtilityClass/index.js +26 -2
  154. package/generateUtilityClass/package.json +2 -2
  155. package/generateUtilityClasses/generateUtilityClasses.js +10 -3
  156. package/generateUtilityClasses/index.js +13 -1
  157. package/generateUtilityClasses/package.json +2 -2
  158. package/getDisplayName/getDisplayName.js +10 -4
  159. package/getDisplayName/index.js +13 -1
  160. package/getDisplayName/package.json +2 -2
  161. package/getScrollbarSize/getScrollbarSize.js +7 -1
  162. package/getScrollbarSize/index.js +13 -1
  163. package/getScrollbarSize/package.json +2 -2
  164. package/getValidReactChildren/getValidReactChildren.js +9 -2
  165. package/getValidReactChildren/index.js +13 -1
  166. package/getValidReactChildren/package.json +2 -2
  167. package/index.d.ts +5 -0
  168. package/index.js +399 -44
  169. package/integerPropType/index.js +26 -2
  170. package/integerPropType/integerPropType.js +9 -2
  171. package/integerPropType/package.json +2 -2
  172. package/isFocusVisible/index.js +13 -1
  173. package/isFocusVisible/isFocusVisible.js +7 -1
  174. package/isFocusVisible/package.json +2 -2
  175. package/isHostComponent/index.d.ts +1 -0
  176. package/{node/clamp → isHostComponent}/index.js +2 -2
  177. package/isHostComponent/isHostComponent.d.ts +6 -0
  178. package/isHostComponent/isHostComponent.js +13 -0
  179. package/isHostComponent/package.json +6 -0
  180. package/isMuiElement/index.js +13 -1
  181. package/isMuiElement/isMuiElement.js +13 -5
  182. package/isMuiElement/package.json +2 -2
  183. package/mergeSlotProps/index.d.ts +2 -0
  184. package/{node/chainPropTypes → mergeSlotProps}/index.js +2 -2
  185. package/mergeSlotProps/mergeSlotProps.d.ts +56 -0
  186. package/mergeSlotProps/mergeSlotProps.js +97 -0
  187. package/mergeSlotProps/package.json +6 -0
  188. package/modern/appendOwnerState/appendOwnerState.js +28 -0
  189. package/modern/appendOwnerState/index.js +1 -0
  190. package/modern/extractEventHandlers/extractEventHandlers.js +18 -0
  191. package/modern/extractEventHandlers/index.js +1 -0
  192. package/modern/index.js +6 -2
  193. package/modern/isHostComponent/index.js +1 -0
  194. package/modern/isHostComponent/isHostComponent.js +7 -0
  195. package/modern/mergeSlotProps/index.js +1 -0
  196. package/modern/mergeSlotProps/mergeSlotProps.js +90 -0
  197. package/modern/omitEventHandlers/index.js +1 -0
  198. package/modern/omitEventHandlers/omitEventHandlers.js +18 -0
  199. package/modern/resolveComponentProps/index.js +1 -0
  200. package/modern/resolveComponentProps/resolveComponentProps.js +11 -0
  201. package/modern/types.js +1 -0
  202. package/modern/useSlotProps/index.js +1 -0
  203. package/modern/useSlotProps/useSlotProps.js +38 -0
  204. package/omitEventHandlers/index.d.ts +1 -0
  205. package/{node/HTMLElementType → omitEventHandlers}/index.js +2 -2
  206. package/omitEventHandlers/omitEventHandlers.d.ts +9 -0
  207. package/omitEventHandlers/omitEventHandlers.js +24 -0
  208. package/omitEventHandlers/package.json +6 -0
  209. package/ownerDocument/index.js +13 -1
  210. package/ownerDocument/ownerDocument.js +7 -1
  211. package/ownerDocument/package.json +2 -2
  212. package/ownerWindow/index.js +13 -1
  213. package/ownerWindow/ownerWindow.js +10 -3
  214. package/ownerWindow/package.json +2 -2
  215. package/package.json +7 -5
  216. package/ponyfillGlobal/index.js +13 -1
  217. package/ponyfillGlobal/package.json +2 -2
  218. package/ponyfillGlobal/ponyfillGlobal.js +7 -1
  219. package/refType/index.js +13 -1
  220. package/refType/package.json +2 -2
  221. package/refType/refType.js +10 -3
  222. package/requirePropFactory/index.js +13 -1
  223. package/requirePropFactory/package.json +2 -2
  224. package/requirePropFactory/requirePropFactory.js +8 -2
  225. package/resolveComponentProps/index.d.ts +1 -0
  226. package/resolveComponentProps/index.js +13 -0
  227. package/resolveComponentProps/package.json +6 -0
  228. package/resolveComponentProps/resolveComponentProps.d.ts +6 -0
  229. package/resolveComponentProps/resolveComponentProps.js +17 -0
  230. package/resolveProps/index.js +13 -1
  231. package/resolveProps/package.json +2 -2
  232. package/resolveProps/resolveProps.js +7 -1
  233. package/setRef/index.js +13 -1
  234. package/setRef/package.json +2 -2
  235. package/setRef/setRef.js +7 -1
  236. package/types.d.ts +7 -0
  237. package/types.js +5 -0
  238. package/unsupportedProp/index.js +13 -1
  239. package/unsupportedProp/package.json +2 -2
  240. package/unsupportedProp/unsupportedProp.js +7 -1
  241. package/useControlled/index.js +13 -1
  242. package/useControlled/package.json +2 -2
  243. package/useControlled/useControlled.js +9 -2
  244. package/useEnhancedEffect/index.js +13 -1
  245. package/useEnhancedEffect/package.json +2 -2
  246. package/useEnhancedEffect/useEnhancedEffect.js +9 -3
  247. package/useEventCallback/index.js +13 -1
  248. package/useEventCallback/package.json +2 -2
  249. package/useEventCallback/useEventCallback.js +12 -5
  250. package/useForkRef/index.js +13 -1
  251. package/useForkRef/package.json +2 -2
  252. package/useForkRef/useForkRef.js +12 -4
  253. package/useId/index.js +13 -1
  254. package/useId/package.json +2 -2
  255. package/useId/useId.js +10 -3
  256. package/useLazyRef/index.js +13 -1
  257. package/useLazyRef/package.json +2 -2
  258. package/useLazyRef/useLazyRef.js +9 -2
  259. package/useLocalStorageState/index.js +13 -1
  260. package/useLocalStorageState/package.json +2 -2
  261. package/useLocalStorageState/useLocalStorageState.js +13 -4
  262. package/useOnMount/index.js +13 -1
  263. package/useOnMount/package.json +2 -2
  264. package/useOnMount/useOnMount.js +9 -2
  265. package/usePreviousProps/index.js +13 -1
  266. package/usePreviousProps/package.json +2 -2
  267. package/usePreviousProps/usePreviousProps.js +9 -2
  268. package/useSlotProps/index.d.ts +2 -0
  269. package/{node/exactProp → useSlotProps}/index.js +2 -2
  270. package/useSlotProps/package.json +6 -0
  271. package/useSlotProps/useSlotProps.d.ts +41 -0
  272. package/useSlotProps/useSlotProps.js +45 -0
  273. package/useTimeout/index.js +20 -2
  274. package/useTimeout/package.json +2 -2
  275. package/useTimeout/useTimeout.js +14 -6
  276. package/visuallyHidden/index.js +13 -1
  277. package/visuallyHidden/package.json +2 -2
  278. package/visuallyHidden/visuallyHidden.js +7 -1
  279. package/node/capitalize/capitalize.js +0 -18
  280. package/node/clamp/clamp.js +0 -10
  281. package/node/composeClasses/index.js +0 -13
  282. package/node/createChainedFunction/index.js +0 -13
  283. package/node/debounce/index.js +0 -26
  284. package/node/deepmerge/index.js +0 -26
  285. package/node/deprecatedPropType/index.js +0 -13
  286. package/node/elementAcceptingRef/index.js +0 -13
  287. package/node/elementTypeAcceptingRef/index.js +0 -13
  288. package/node/formatMuiErrorMessage/index.js +0 -13
  289. package/node/generateUtilityClass/generateUtilityClass.js +0 -31
  290. package/node/generateUtilityClass/index.js +0 -26
  291. package/node/generateUtilityClasses/generateUtilityClasses.js +0 -15
  292. package/node/generateUtilityClasses/index.js +0 -13
  293. package/node/getDisplayName/index.js +0 -13
  294. package/node/getScrollbarSize/index.js +0 -13
  295. package/node/getValidReactChildren/getValidReactChildren.js +0 -18
  296. package/node/getValidReactChildren/index.js +0 -13
  297. package/node/index.js +0 -369
  298. package/node/integerPropType/index.js +0 -26
  299. package/node/isFocusVisible/index.js +0 -13
  300. package/node/isMuiElement/index.js +0 -13
  301. package/node/isMuiElement/isMuiElement.js +0 -16
  302. package/node/ownerDocument/index.js +0 -13
  303. package/node/ownerDocument/ownerDocument.js +0 -9
  304. package/node/ownerWindow/index.js +0 -13
  305. package/node/ownerWindow/ownerWindow.js +0 -12
  306. package/node/ponyfillGlobal/index.js +0 -13
  307. package/node/ponyfillGlobal/ponyfillGlobal.js +0 -9
  308. package/node/refType/index.js +0 -13
  309. package/node/refType/refType.js +0 -10
  310. package/node/requirePropFactory/index.js +0 -13
  311. package/node/resolveProps/index.js +0 -13
  312. package/node/setRef/index.js +0 -13
  313. package/node/unsupportedProp/index.js +0 -13
  314. package/node/useControlled/index.js +0 -13
  315. package/node/useEnhancedEffect/index.js +0 -13
  316. package/node/useEnhancedEffect/useEnhancedEffect.js +0 -19
  317. package/node/useEventCallback/index.js +0 -13
  318. package/node/useEventCallback/useEventCallback.js +0 -27
  319. package/node/useForkRef/index.js +0 -13
  320. package/node/useForkRef/useForkRef.js +0 -30
  321. package/node/useId/index.js +0 -13
  322. package/node/useLazyRef/index.js +0 -13
  323. package/node/useLazyRef/useLazyRef.js +0 -26
  324. package/node/useLocalStorageState/index.js +0 -13
  325. package/node/useOnMount/index.js +0 -13
  326. package/node/useOnMount/useOnMount.js +0 -20
  327. package/node/usePreviousProps/index.js +0 -13
  328. package/node/usePreviousProps/usePreviousProps.js +0 -18
  329. package/node/useTimeout/index.js +0 -20
  330. package/node/useTimeout/useTimeout.js +0 -43
  331. package/node/visuallyHidden/index.js +0 -13
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+ import { ClassValue } from 'clsx';
3
+ import { Simplify } from '@mui/types';
4
+ import { EventHandlers } from '../types';
5
+ export type WithCommonProps<OtherProps> = OtherProps & {
6
+ className?: string;
7
+ style?: React.CSSProperties;
8
+ ref?: React.Ref<any>;
9
+ };
10
+ export interface MergeSlotPropsParameters<SlotProps, ExternalForwardedProps, ExternalSlotProps, AdditionalProps> {
11
+ /**
12
+ * A function that returns the internal props of the component.
13
+ * It accepts the event handlers passed into the component by the user
14
+ * and is responsible for calling them where appropriate.
15
+ */
16
+ getSlotProps?: (other: EventHandlers) => WithCommonProps<SlotProps>;
17
+ /**
18
+ * Props provided to the `slotProps.*` of the Base UI component.
19
+ */
20
+ externalSlotProps?: WithCommonProps<ExternalSlotProps>;
21
+ /**
22
+ * Extra props placed on the Base UI component that should be forwarded to the slot.
23
+ * This should usually be used only for the root slot.
24
+ */
25
+ externalForwardedProps?: WithCommonProps<ExternalForwardedProps>;
26
+ /**
27
+ * Additional props to be placed on the slot.
28
+ */
29
+ additionalProps?: WithCommonProps<AdditionalProps>;
30
+ /**
31
+ * Extra class name(s) to be placed on the slot.
32
+ */
33
+ className?: ClassValue | ClassValue[];
34
+ }
35
+ export type MergeSlotPropsResult<SlotProps, ExternalForwardedProps, ExternalSlotProps, AdditionalProps> = {
36
+ props: Simplify<SlotProps & ExternalForwardedProps & ExternalSlotProps & AdditionalProps & {
37
+ className?: string;
38
+ style?: React.CSSProperties;
39
+ }>;
40
+ internalRef: React.Ref<any> | undefined;
41
+ };
42
+ /**
43
+ * Merges the slot component internal props (usually coming from a hook)
44
+ * with the externally provided ones.
45
+ *
46
+ * The merge order is (the latter overrides the former):
47
+ * 1. The internal props (specified as a getter function to work with get*Props hook result)
48
+ * 2. Additional props (specified internally on a Base UI component)
49
+ * 3. External props specified on the owner component. These should only be used on a root slot.
50
+ * 4. External props specified in the `slotProps.*` prop.
51
+ * 5. The `className` prop - combined from all the above.
52
+ * @param parameters
53
+ * @returns
54
+ */
55
+ declare function mergeSlotProps<SlotProps, ExternalForwardedProps extends Record<string, unknown>, ExternalSlotProps extends Record<string, unknown>, AdditionalProps>(parameters: MergeSlotPropsParameters<SlotProps, ExternalForwardedProps, ExternalSlotProps, AdditionalProps>): MergeSlotPropsResult<SlotProps, ExternalForwardedProps, ExternalSlotProps, AdditionalProps>;
56
+ export default mergeSlotProps;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _clsx = _interopRequireDefault(require("clsx"));
9
+ var _extractEventHandlers = _interopRequireDefault(require("../extractEventHandlers"));
10
+ var _omitEventHandlers = _interopRequireDefault(require("../omitEventHandlers"));
11
+ /**
12
+ * Merges the slot component internal props (usually coming from a hook)
13
+ * with the externally provided ones.
14
+ *
15
+ * The merge order is (the latter overrides the former):
16
+ * 1. The internal props (specified as a getter function to work with get*Props hook result)
17
+ * 2. Additional props (specified internally on a Base UI component)
18
+ * 3. External props specified on the owner component. These should only be used on a root slot.
19
+ * 4. External props specified in the `slotProps.*` prop.
20
+ * 5. The `className` prop - combined from all the above.
21
+ * @param parameters
22
+ * @returns
23
+ */
24
+ function mergeSlotProps(parameters) {
25
+ const {
26
+ getSlotProps,
27
+ additionalProps,
28
+ externalSlotProps,
29
+ externalForwardedProps,
30
+ className
31
+ } = parameters;
32
+ if (!getSlotProps) {
33
+ // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,
34
+ // so we can simply merge all the props without having to worry about extracting event handlers.
35
+ const joinedClasses = (0, _clsx.default)(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);
36
+ const mergedStyle = {
37
+ ...(additionalProps == null ? void 0 : additionalProps.style),
38
+ ...(externalForwardedProps == null ? void 0 : externalForwardedProps.style),
39
+ ...(externalSlotProps == null ? void 0 : externalSlotProps.style)
40
+ };
41
+ const props = {
42
+ ...additionalProps,
43
+ ...externalForwardedProps,
44
+ ...externalSlotProps
45
+ };
46
+ if (joinedClasses.length > 0) {
47
+ props.className = joinedClasses;
48
+ }
49
+ if (Object.keys(mergedStyle).length > 0) {
50
+ props.style = mergedStyle;
51
+ }
52
+ return {
53
+ props,
54
+ internalRef: undefined
55
+ };
56
+ }
57
+
58
+ // In this case, getSlotProps is responsible for calling the external event handlers.
59
+ // We don't need to include them in the merged props because of this.
60
+
61
+ const eventHandlers = (0, _extractEventHandlers.default)({
62
+ ...externalForwardedProps,
63
+ ...externalSlotProps
64
+ });
65
+ const componentsPropsWithoutEventHandlers = (0, _omitEventHandlers.default)(externalSlotProps);
66
+ const otherPropsWithoutEventHandlers = (0, _omitEventHandlers.default)(externalForwardedProps);
67
+ const internalSlotProps = getSlotProps(eventHandlers);
68
+
69
+ // The order of classes is important here.
70
+ // Emotion (that we use in libraries consuming Base UI) depends on this order
71
+ // to properly override style. It requires the most important classes to be last
72
+ // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.
73
+ const joinedClasses = (0, _clsx.default)(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);
74
+ const mergedStyle = {
75
+ ...(internalSlotProps == null ? void 0 : internalSlotProps.style),
76
+ ...(additionalProps == null ? void 0 : additionalProps.style),
77
+ ...(externalForwardedProps == null ? void 0 : externalForwardedProps.style),
78
+ ...(externalSlotProps == null ? void 0 : externalSlotProps.style)
79
+ };
80
+ const props = {
81
+ ...internalSlotProps,
82
+ ...additionalProps,
83
+ ...otherPropsWithoutEventHandlers,
84
+ ...componentsPropsWithoutEventHandlers
85
+ };
86
+ if (joinedClasses.length > 0) {
87
+ props.className = joinedClasses;
88
+ }
89
+ if (Object.keys(mergedStyle).length > 0) {
90
+ props.style = mergedStyle;
91
+ }
92
+ return {
93
+ props,
94
+ internalRef: internalSlotProps.ref
95
+ };
96
+ }
97
+ var _default = exports.default = mergeSlotProps;
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "../esm/mergeSlotProps/index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,28 @@
1
+ import isHostComponent from '../isHostComponent';
2
+
3
+ /**
4
+ * Type of the ownerState based on the type of an element it applies to.
5
+ * This resolves to the provided OwnerState for React components and `undefined` for host components.
6
+ * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.
7
+ */
8
+
9
+ /**
10
+ * Appends the ownerState object to the props, merging with the existing one if necessary.
11
+ *
12
+ * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.
13
+ * @param otherProps Props of the element.
14
+ * @param ownerState
15
+ */
16
+ function appendOwnerState(elementType, otherProps, ownerState) {
17
+ if (elementType === undefined || isHostComponent(elementType)) {
18
+ return otherProps;
19
+ }
20
+ return {
21
+ ...otherProps,
22
+ ownerState: {
23
+ ...otherProps.ownerState,
24
+ ...ownerState
25
+ }
26
+ };
27
+ }
28
+ export default appendOwnerState;
@@ -0,0 +1 @@
1
+ export { default } from './appendOwnerState';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Extracts event handlers from a given object.
3
+ * A prop is considered an event handler if it is a function and its name starts with `on`.
4
+ *
5
+ * @param object An object to extract event handlers from.
6
+ * @param excludeKeys An array of keys to exclude from the returned object.
7
+ */
8
+ function extractEventHandlers(object, excludeKeys = []) {
9
+ if (object === undefined) {
10
+ return {};
11
+ }
12
+ const result = {};
13
+ Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {
14
+ result[prop] = object[prop];
15
+ });
16
+ return result;
17
+ }
18
+ export default extractEventHandlers;
@@ -0,0 +1 @@
1
+ export { default } from './extractEventHandlers';
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/utils v6.0.0-beta.0
2
+ * @mui/utils v6.0.0-beta.3
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -47,4 +47,8 @@ export { isGlobalState as unstable_isGlobalState } from './generateUtilityClass'
47
47
  export * from './generateUtilityClass';
48
48
  export { default as unstable_generateUtilityClasses } from './generateUtilityClasses';
49
49
  export { default as unstable_ClassNameGenerator } from './ClassNameGenerator';
50
- export { default as clamp } from './clamp';
50
+ export { default as clamp } from './clamp';
51
+ export { default as unstable_useSlotProps } from './useSlotProps';
52
+ export { default as unstable_resolveComponentProps } from './resolveComponentProps';
53
+ export { default as unstable_extractEventHandlers } from './extractEventHandlers';
54
+ export * from './types';
@@ -0,0 +1 @@
1
+ export { default } from './isHostComponent';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Determines if a given element is a DOM element name (i.e. not a React component).
3
+ */
4
+ function isHostComponent(element) {
5
+ return typeof element === 'string';
6
+ }
7
+ export default isHostComponent;
@@ -0,0 +1 @@
1
+ export { default } from './mergeSlotProps';
@@ -0,0 +1,90 @@
1
+ import clsx from 'clsx';
2
+ import extractEventHandlers from '../extractEventHandlers';
3
+ import omitEventHandlers from '../omitEventHandlers';
4
+ /**
5
+ * Merges the slot component internal props (usually coming from a hook)
6
+ * with the externally provided ones.
7
+ *
8
+ * The merge order is (the latter overrides the former):
9
+ * 1. The internal props (specified as a getter function to work with get*Props hook result)
10
+ * 2. Additional props (specified internally on a Base UI component)
11
+ * 3. External props specified on the owner component. These should only be used on a root slot.
12
+ * 4. External props specified in the `slotProps.*` prop.
13
+ * 5. The `className` prop - combined from all the above.
14
+ * @param parameters
15
+ * @returns
16
+ */
17
+ function mergeSlotProps(parameters) {
18
+ const {
19
+ getSlotProps,
20
+ additionalProps,
21
+ externalSlotProps,
22
+ externalForwardedProps,
23
+ className
24
+ } = parameters;
25
+ if (!getSlotProps) {
26
+ // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,
27
+ // so we can simply merge all the props without having to worry about extracting event handlers.
28
+ const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);
29
+ const mergedStyle = {
30
+ ...additionalProps?.style,
31
+ ...externalForwardedProps?.style,
32
+ ...externalSlotProps?.style
33
+ };
34
+ const props = {
35
+ ...additionalProps,
36
+ ...externalForwardedProps,
37
+ ...externalSlotProps
38
+ };
39
+ if (joinedClasses.length > 0) {
40
+ props.className = joinedClasses;
41
+ }
42
+ if (Object.keys(mergedStyle).length > 0) {
43
+ props.style = mergedStyle;
44
+ }
45
+ return {
46
+ props,
47
+ internalRef: undefined
48
+ };
49
+ }
50
+
51
+ // In this case, getSlotProps is responsible for calling the external event handlers.
52
+ // We don't need to include them in the merged props because of this.
53
+
54
+ const eventHandlers = extractEventHandlers({
55
+ ...externalForwardedProps,
56
+ ...externalSlotProps
57
+ });
58
+ const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);
59
+ const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);
60
+ const internalSlotProps = getSlotProps(eventHandlers);
61
+
62
+ // The order of classes is important here.
63
+ // Emotion (that we use in libraries consuming Base UI) depends on this order
64
+ // to properly override style. It requires the most important classes to be last
65
+ // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.
66
+ const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);
67
+ const mergedStyle = {
68
+ ...internalSlotProps?.style,
69
+ ...additionalProps?.style,
70
+ ...externalForwardedProps?.style,
71
+ ...externalSlotProps?.style
72
+ };
73
+ const props = {
74
+ ...internalSlotProps,
75
+ ...additionalProps,
76
+ ...otherPropsWithoutEventHandlers,
77
+ ...componentsPropsWithoutEventHandlers
78
+ };
79
+ if (joinedClasses.length > 0) {
80
+ props.className = joinedClasses;
81
+ }
82
+ if (Object.keys(mergedStyle).length > 0) {
83
+ props.style = mergedStyle;
84
+ }
85
+ return {
86
+ props,
87
+ internalRef: internalSlotProps.ref
88
+ };
89
+ }
90
+ export default mergeSlotProps;
@@ -0,0 +1 @@
1
+ export { default } from './omitEventHandlers';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Removes event handlers from the given object.
3
+ * A field is considered an event handler if it is a function with a name beginning with `on`.
4
+ *
5
+ * @param object Object to remove event handlers from.
6
+ * @returns Object with event handlers removed.
7
+ */
8
+ function omitEventHandlers(object) {
9
+ if (object === undefined) {
10
+ return {};
11
+ }
12
+ const result = {};
13
+ Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {
14
+ result[prop] = object[prop];
15
+ });
16
+ return result;
17
+ }
18
+ export default omitEventHandlers;
@@ -0,0 +1 @@
1
+ export { default } from './resolveComponentProps';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * If `componentProps` is a function, calls it with the provided `ownerState`.
3
+ * Otherwise, just returns `componentProps`.
4
+ */
5
+ function resolveComponentProps(componentProps, ownerState, slotState) {
6
+ if (typeof componentProps === 'function') {
7
+ return componentProps(ownerState, slotState);
8
+ }
9
+ return componentProps;
10
+ }
11
+ export default resolveComponentProps;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export { default } from './useSlotProps';
@@ -0,0 +1,38 @@
1
+ 'use client';
2
+
3
+ import useForkRef from '../useForkRef';
4
+ import appendOwnerState from '../appendOwnerState';
5
+ import mergeSlotProps from '../mergeSlotProps';
6
+ import resolveComponentProps from '../resolveComponentProps';
7
+ /**
8
+ * @ignore - do not document.
9
+ * Builds the props to be passed into the slot of an unstyled component.
10
+ * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.
11
+ * If the slot component is not a host component, it also merges in the `ownerState`.
12
+ *
13
+ * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.
14
+ */
15
+ function useSlotProps(parameters) {
16
+ const {
17
+ elementType,
18
+ externalSlotProps,
19
+ ownerState,
20
+ skipResolvingSlotProps = false,
21
+ ...other
22
+ } = parameters;
23
+ const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);
24
+ const {
25
+ props: mergedProps,
26
+ internalRef
27
+ } = mergeSlotProps({
28
+ ...other,
29
+ externalSlotProps: resolvedComponentsProps
30
+ });
31
+ const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);
32
+ const props = appendOwnerState(elementType, {
33
+ ...mergedProps,
34
+ ref
35
+ }, ownerState);
36
+ return props;
37
+ }
38
+ export default useSlotProps;
@@ -0,0 +1 @@
1
+ export { default } from './omitEventHandlers';
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  Object.defineProperty(exports, "default", {
8
8
  enumerable: true,
9
9
  get: function () {
10
- return _HTMLElementType.default;
10
+ return _omitEventHandlers.default;
11
11
  }
12
12
  });
13
- var _HTMLElementType = _interopRequireDefault(require("./HTMLElementType"));
13
+ var _omitEventHandlers = _interopRequireDefault(require("./omitEventHandlers"));
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Removes event handlers from the given object.
3
+ * A field is considered an event handler if it is a function with a name beginning with `on`.
4
+ *
5
+ * @param object Object to remove event handlers from.
6
+ * @returns Object with event handlers removed.
7
+ */
8
+ declare function omitEventHandlers<Props extends Record<string, unknown>>(object: Props | undefined): {};
9
+ export default omitEventHandlers;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * Removes event handlers from the given object.
9
+ * A field is considered an event handler if it is a function with a name beginning with `on`.
10
+ *
11
+ * @param object Object to remove event handlers from.
12
+ * @returns Object with event handlers removed.
13
+ */
14
+ function omitEventHandlers(object) {
15
+ if (object === undefined) {
16
+ return {};
17
+ }
18
+ const result = {};
19
+ Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {
20
+ result[prop] = object[prop];
21
+ });
22
+ return result;
23
+ }
24
+ var _default = exports.default = omitEventHandlers;
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "../esm/omitEventHandlers/index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -1 +1,13 @@
1
- export { default } from './ownerDocument';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _ownerDocument.default;
11
+ }
12
+ });
13
+ var _ownerDocument = _interopRequireDefault(require("./ownerDocument"));
@@ -1,3 +1,9 @@
1
- export default function ownerDocument(node) {
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ownerDocument;
7
+ function ownerDocument(node) {
2
8
  return node && node.ownerDocument || document;
3
9
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "sideEffects": false,
3
- "module": "./index.js",
4
- "main": "../node/ownerDocument/index.js",
3
+ "module": "../esm/ownerDocument/index.js",
4
+ "main": "./index.js",
5
5
  "types": "./index.d.ts"
6
6
  }
@@ -1 +1,13 @@
1
- export { default } from './ownerWindow';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _ownerWindow.default;
11
+ }
12
+ });
13
+ var _ownerWindow = _interopRequireDefault(require("./ownerWindow"));
@@ -1,5 +1,12 @@
1
- import ownerDocument from '../ownerDocument';
2
- export default function ownerWindow(node) {
3
- const doc = ownerDocument(node);
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = ownerWindow;
8
+ var _ownerDocument = _interopRequireDefault(require("../ownerDocument"));
9
+ function ownerWindow(node) {
10
+ const doc = (0, _ownerDocument.default)(node);
4
11
  return doc.defaultView || window;
5
12
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "sideEffects": false,
3
- "module": "./index.js",
4
- "main": "../node/ownerWindow/index.js",
3
+ "module": "../esm/ownerWindow/index.js",
4
+ "main": "./index.js",
5
5
  "types": "./index.d.ts"
6
6
  }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@mui/utils",
3
- "version": "6.0.0-beta.0",
3
+ "version": "6.0.0-beta.3",
4
4
  "private": false,
5
5
  "author": "MUI Team",
6
6
  "description": "Utility functions for React components.",
7
- "main": "./node/index.js",
7
+ "main": "./index.js",
8
8
  "keywords": [
9
9
  "react",
10
10
  "react-component",
@@ -26,10 +26,12 @@
26
26
  "url": "https://opencollective.com/mui-org"
27
27
  },
28
28
  "dependencies": {
29
- "@babel/runtime": "^7.24.7",
29
+ "@babel/runtime": "^7.24.8",
30
30
  "@types/prop-types": "^15.7.12",
31
+ "clsx": "^2.1.1",
31
32
  "prop-types": "^15.8.1",
32
- "react-is": "^18.3.1"
33
+ "react-is": "^18.3.1",
34
+ "@mui/types": "^7.2.14"
33
35
  },
34
36
  "peerDependencies": {
35
37
  "@types/react": "^17.0.0 || ^18.0.0",
@@ -48,6 +50,6 @@
48
50
  "engines": {
49
51
  "node": ">=12.0.0"
50
52
  },
51
- "module": "./index.js",
53
+ "module": "./esm/index.js",
52
54
  "types": "./index.d.ts"
53
55
  }
@@ -1 +1,13 @@
1
- export { default } from './ponyfillGlobal';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _ponyfillGlobal.default;
11
+ }
12
+ });
13
+ var _ponyfillGlobal = _interopRequireDefault(require("./ponyfillGlobal"));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "sideEffects": false,
3
- "module": "./index.js",
4
- "main": "../node/ponyfillGlobal/index.js",
3
+ "module": "../esm/ponyfillGlobal/index.js",
4
+ "main": "./index.js",
5
5
  "types": "./index.d.ts"
6
6
  }
@@ -1,3 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
1
7
  /* eslint-disable */
2
8
  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
3
- export default typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
9
+ var _default = exports.default = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
package/refType/index.js CHANGED
@@ -1 +1,13 @@
1
- export { default } from './refType';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _refType.default;
11
+ }
12
+ });
13
+ var _refType = _interopRequireDefault(require("./refType"));