@mui/system 6.1.1 → 6.1.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 (355) hide show
  1. package/Box/Box.js +17 -11
  2. package/Box/boxClasses.js +10 -3
  3. package/Box/index.js +35 -3
  4. package/Box/package.json +2 -2
  5. package/CHANGELOG.md +136 -0
  6. package/Container/Container.js +17 -12
  7. package/Container/ContainerProps.js +5 -1
  8. package/Container/containerClasses.js +14 -6
  9. package/Container/createContainer.js +36 -28
  10. package/Container/index.js +35 -3
  11. package/Container/package.json +2 -2
  12. package/DefaultPropsProvider/DefaultPropsProvider.js +19 -11
  13. package/DefaultPropsProvider/index.js +19 -1
  14. package/DefaultPropsProvider/package.json +2 -2
  15. package/GlobalStyles/GlobalStyles.js +18 -11
  16. package/GlobalStyles/index.js +25 -2
  17. package/GlobalStyles/package.json +2 -2
  18. package/Grid/Grid.js +38 -27
  19. package/Grid/GridProps.d.ts +16 -11
  20. package/Grid/GridProps.js +5 -1
  21. package/Grid/createGrid.js +46 -38
  22. package/Grid/gridClasses.js +14 -6
  23. package/Grid/gridGenerator.d.ts +3 -7
  24. package/Grid/gridGenerator.js +62 -69
  25. package/Grid/index.js +63 -6
  26. package/Grid/package.json +2 -2
  27. package/Grid/traverseBreakpoints.js +11 -3
  28. package/InitColorSchemeScript/InitColorSchemeScript.js +16 -7
  29. package/InitColorSchemeScript/index.js +13 -1
  30. package/InitColorSchemeScript/package.json +2 -2
  31. package/RtlProvider/index.js +17 -8
  32. package/RtlProvider/package.json +2 -2
  33. package/Stack/Stack.js +17 -11
  34. package/Stack/StackProps.js +5 -1
  35. package/Stack/createStack.js +46 -36
  36. package/Stack/index.js +55 -5
  37. package/Stack/package.json +2 -2
  38. package/Stack/stackClasses.js +14 -6
  39. package/ThemeProvider/ThemeProvider.js +27 -20
  40. package/ThemeProvider/index.js +13 -1
  41. package/ThemeProvider/package.json +2 -2
  42. package/borders/borders.js +36 -26
  43. package/borders/index.js +25 -2
  44. package/borders/package.json +2 -2
  45. package/breakpoints/breakpoints.js +34 -21
  46. package/breakpoints/index.js +25 -2
  47. package/breakpoints/package.json +2 -2
  48. package/colorManipulator/colorManipulator.js +50 -25
  49. package/colorManipulator/index.js +16 -1
  50. package/colorManipulator/package.json +2 -2
  51. package/compose/compose.js +10 -3
  52. package/compose/index.js +13 -1
  53. package/compose/package.json +2 -2
  54. package/createBox/createBox.js +20 -13
  55. package/createBox/index.js +13 -1
  56. package/createBox/package.json +2 -2
  57. package/createBreakpoints/createBreakpoints.js +9 -2
  58. package/createBreakpoints/index.js +13 -3
  59. package/createBreakpoints/package.json +2 -2
  60. package/createStyled/createStyled.js +161 -117
  61. package/createStyled/index.js +25 -2
  62. package/createStyled/package.json +2 -2
  63. package/createTheme/applyStyles.js +7 -1
  64. package/createTheme/createSpacing.js +8 -3
  65. package/createTheme/createTheme.d.ts +16 -10
  66. package/createTheme/createTheme.js +25 -18
  67. package/createTheme/index.js +27 -3
  68. package/createTheme/package.json +2 -2
  69. package/createTheme/shape.js +7 -1
  70. package/cssContainerQueries/cssContainerQueries.js +16 -7
  71. package/cssContainerQueries/index.js +31 -2
  72. package/cssContainerQueries/package.json +2 -2
  73. package/cssGrid/cssGrid.js +40 -31
  74. package/cssGrid/index.js +25 -2
  75. package/cssGrid/package.json +2 -2
  76. package/cssVars/createCssVarsProvider.d.ts +7 -1
  77. package/cssVars/createCssVarsProvider.js +46 -31
  78. package/cssVars/createCssVarsTheme.js +14 -7
  79. package/cssVars/createGetCssVar.js +7 -1
  80. package/cssVars/cssVarsParser.js +13 -3
  81. package/cssVars/getColorSchemeSelector.js +7 -1
  82. package/cssVars/index.js +41 -5
  83. package/cssVars/package.json +2 -2
  84. package/cssVars/prepareCssVars.js +16 -9
  85. package/cssVars/prepareTypographyVars.js +7 -1
  86. package/cssVars/useCurrentColorScheme.js +19 -11
  87. package/display/display.js +16 -9
  88. package/display/index.js +25 -2
  89. package/display/package.json +2 -2
  90. package/esm/Box/Box.js +30 -0
  91. package/esm/Box/boxClasses.js +3 -0
  92. package/esm/Box/index.js +3 -0
  93. package/{node → esm}/Container/Container.js +12 -17
  94. package/esm/Container/ContainerProps.js +1 -0
  95. package/esm/Container/containerClasses.js +7 -0
  96. package/{node → esm}/Container/createContainer.js +28 -36
  97. package/esm/Container/index.js +3 -0
  98. package/{node → esm}/DefaultPropsProvider/DefaultPropsProvider.js +11 -19
  99. package/esm/DefaultPropsProvider/index.js +1 -0
  100. package/esm/GlobalStyles/GlobalStyles.js +37 -0
  101. package/esm/GlobalStyles/index.js +2 -0
  102. package/esm/Grid/Grid.js +106 -0
  103. package/esm/Grid/GridProps.js +1 -0
  104. package/esm/Grid/createGrid.js +148 -0
  105. package/{node → esm}/Grid/gridClasses.js +6 -14
  106. package/esm/Grid/gridGenerator.js +193 -0
  107. package/esm/Grid/index.js +6 -0
  108. package/{node → esm}/Grid/traverseBreakpoints.js +3 -11
  109. package/{node → esm}/InitColorSchemeScript/InitColorSchemeScript.js +7 -16
  110. package/esm/InitColorSchemeScript/index.js +1 -0
  111. package/esm/RtlProvider/index.js +22 -0
  112. package/{node → esm}/Stack/Stack.js +11 -17
  113. package/esm/Stack/StackProps.js +1 -0
  114. package/{node → esm}/Stack/createStack.js +36 -46
  115. package/esm/Stack/index.js +5 -0
  116. package/esm/Stack/stackClasses.js +7 -0
  117. package/{node → esm}/ThemeProvider/ThemeProvider.js +20 -27
  118. package/esm/ThemeProvider/index.js +1 -0
  119. package/esm/borders/borders.js +49 -0
  120. package/esm/borders/index.js +2 -0
  121. package/{node → esm}/breakpoints/breakpoints.js +21 -34
  122. package/esm/breakpoints/index.js +2 -0
  123. package/{node → esm}/colorManipulator/colorManipulator.js +23 -51
  124. package/esm/colorManipulator/index.js +1 -0
  125. package/{node → esm}/compose/compose.js +3 -10
  126. package/esm/compose/index.js +1 -0
  127. package/esm/createBox/createBox.js +35 -0
  128. package/esm/createBox/index.js +1 -0
  129. package/{node → esm}/createBreakpoints/createBreakpoints.js +2 -9
  130. package/esm/createBreakpoints/index.js +3 -0
  131. package/esm/createStyled/createStyled.js +276 -0
  132. package/esm/createStyled/index.js +2 -0
  133. package/{node → esm}/createTheme/applyStyles.js +1 -7
  134. package/{node → esm}/createTheme/createSpacing.js +3 -8
  135. package/esm/createTheme/createTheme.js +49 -0
  136. package/esm/createTheme/index.js +3 -0
  137. package/esm/createTheme/shape.js +4 -0
  138. package/{node → esm}/cssContainerQueries/cssContainerQueries.js +6 -17
  139. package/esm/cssContainerQueries/index.js +2 -0
  140. package/esm/cssGrid/cssGrid.js +85 -0
  141. package/esm/cssGrid/index.js +2 -0
  142. package/{node → esm}/cssVars/createCssVarsProvider.js +37 -40
  143. package/esm/cssVars/createCssVarsTheme.js +21 -0
  144. package/{node → esm}/cssVars/createGetCssVar.js +1 -7
  145. package/{node → esm}/cssVars/cssVarsParser.js +3 -13
  146. package/{node → esm}/cssVars/getColorSchemeSelector.js +1 -7
  147. package/esm/cssVars/index.js +5 -0
  148. package/{node → esm}/cssVars/prepareCssVars.js +9 -16
  149. package/{node → esm}/cssVars/prepareTypographyVars.js +1 -7
  150. package/{node → esm}/cssVars/useCurrentColorScheme.js +11 -19
  151. package/esm/display/display.js +27 -0
  152. package/esm/display/index.js +2 -0
  153. package/esm/flexbox/flexbox.js +43 -0
  154. package/esm/flexbox/index.js +2 -0
  155. package/esm/getThemeValue/getThemeValue.js +51 -0
  156. package/esm/getThemeValue/index.js +2 -0
  157. package/esm/index.js +68 -0
  158. package/esm/memoTheme.js +28 -0
  159. package/esm/memoize/index.js +1 -0
  160. package/{node → esm}/memoize/memoize.js +1 -7
  161. package/esm/merge/index.js +1 -0
  162. package/esm/merge/merge.js +10 -0
  163. package/esm/palette/index.js +2 -0
  164. package/esm/palette/palette.js +26 -0
  165. package/esm/positions/index.js +2 -0
  166. package/esm/positions/positions.js +22 -0
  167. package/esm/preprocessStyles.js +25 -0
  168. package/esm/propsToClassKey/index.js +1 -0
  169. package/esm/propsToClassKey/propsToClassKey.js +25 -0
  170. package/esm/responsivePropType/index.js +1 -0
  171. package/esm/responsivePropType/responsivePropType.js +3 -0
  172. package/esm/shadows/index.js +1 -0
  173. package/esm/shadows/shadows.js +6 -0
  174. package/esm/sizing/index.js +2 -0
  175. package/esm/sizing/sizing.js +64 -0
  176. package/esm/spacing/index.js +2 -0
  177. package/{node → esm}/spacing/spacing.js +21 -36
  178. package/esm/style/index.js +2 -0
  179. package/{node → esm}/style/style.js +9 -18
  180. package/{node → esm}/styleFunctionSx/defaultSxConfig.js +65 -71
  181. package/{node → esm}/styleFunctionSx/extendSxProp.js +5 -12
  182. package/esm/styleFunctionSx/index.js +4 -0
  183. package/{node → esm}/styleFunctionSx/styleFunctionSx.js +19 -27
  184. package/esm/styled/index.js +1 -0
  185. package/esm/styled/styled.js +3 -0
  186. package/esm/typography/index.js +2 -0
  187. package/esm/typography/typography.js +37 -0
  188. package/esm/useMediaQuery/index.js +2 -0
  189. package/{node → esm}/useMediaQuery/useMediaQuery.js +8 -15
  190. package/esm/useTheme/index.js +2 -0
  191. package/esm/useTheme/useTheme.js +9 -0
  192. package/esm/useThemeProps/getThemeProps.js +12 -0
  193. package/esm/useThemeProps/index.js +2 -0
  194. package/esm/useThemeProps/useThemeProps.js +20 -0
  195. package/esm/useThemeWithoutDefault/index.js +1 -0
  196. package/esm/useThemeWithoutDefault/useThemeWithoutDefault.js +12 -0
  197. package/esm/version/index.js +6 -0
  198. package/flexbox/flexbox.js +24 -17
  199. package/flexbox/index.js +25 -2
  200. package/flexbox/package.json +2 -2
  201. package/getThemeValue/getThemeValue.js +40 -33
  202. package/getThemeValue/index.js +25 -2
  203. package/getThemeValue/package.json +2 -2
  204. package/index.d.ts +2 -0
  205. package/index.js +606 -63
  206. package/memoTheme.d.ts +12 -0
  207. package/memoTheme.js +34 -0
  208. package/memoize/index.js +13 -1
  209. package/memoize/memoize.js +7 -1
  210. package/memoize/package.json +2 -2
  211. package/merge/index.js +13 -1
  212. package/merge/merge.js +10 -3
  213. package/merge/package.json +2 -2
  214. package/modern/Grid/Grid.js +16 -11
  215. package/modern/Grid/createGrid.js +1 -1
  216. package/modern/Grid/gridGenerator.js +28 -51
  217. package/modern/colorManipulator/colorManipulator.js +3 -4
  218. package/modern/createStyled/createStyled.js +144 -109
  219. package/modern/cssContainerQueries/cssContainerQueries.js +1 -2
  220. package/modern/cssVars/createCssVarsProvider.js +8 -2
  221. package/modern/cssVars/useCurrentColorScheme.js +4 -4
  222. package/modern/index.js +3 -2
  223. package/modern/memoTheme.js +28 -0
  224. package/modern/preprocessStyles.js +25 -0
  225. package/modern/version/index.js +2 -2
  226. package/package.json +7 -7
  227. package/palette/index.js +25 -2
  228. package/palette/package.json +2 -2
  229. package/palette/palette.js +16 -8
  230. package/positions/index.js +25 -2
  231. package/positions/package.json +2 -2
  232. package/positions/positions.js +16 -9
  233. package/preprocessStyles.d.ts +5 -0
  234. package/preprocessStyles.js +31 -0
  235. package/propsToClassKey/index.js +13 -1
  236. package/propsToClassKey/package.json +2 -2
  237. package/propsToClassKey/propsToClassKey.js +11 -4
  238. package/responsivePropType/index.js +13 -1
  239. package/responsivePropType/package.json +2 -2
  240. package/responsivePropType/responsivePropType.js +10 -3
  241. package/shadows/index.js +13 -1
  242. package/shadows/package.json +2 -2
  243. package/shadows/shadows.js +10 -3
  244. package/sizing/index.js +25 -2
  245. package/sizing/package.json +2 -2
  246. package/sizing/sizing.js +27 -17
  247. package/spacing/index.js +25 -2
  248. package/spacing/package.json +2 -2
  249. package/spacing/spacing.js +36 -21
  250. package/style/index.js +25 -2
  251. package/style/package.json +2 -2
  252. package/style/style.js +18 -9
  253. package/styleFunctionSx/defaultSxConfig.js +71 -65
  254. package/styleFunctionSx/extendSxProp.js +12 -5
  255. package/styleFunctionSx/index.js +34 -4
  256. package/styleFunctionSx/package.json +2 -2
  257. package/styleFunctionSx/styleFunctionSx.d.ts +1 -1
  258. package/styleFunctionSx/styleFunctionSx.js +27 -19
  259. package/styled/index.js +13 -1
  260. package/styled/package.json +2 -2
  261. package/styled/styled.js +10 -3
  262. package/typography/index.js +25 -2
  263. package/typography/package.json +2 -2
  264. package/typography/typography.js +20 -13
  265. package/useMediaQuery/index.js +25 -2
  266. package/useMediaQuery/package.json +2 -2
  267. package/useMediaQuery/useMediaQuery.js +15 -8
  268. package/useTheme/index.js +25 -2
  269. package/useTheme/package.json +2 -2
  270. package/useTheme/useTheme.js +11 -5
  271. package/useThemeProps/getThemeProps.js +10 -3
  272. package/useThemeProps/index.js +20 -2
  273. package/useThemeProps/package.json +2 -2
  274. package/useThemeProps/useThemeProps.js +11 -5
  275. package/useThemeWithoutDefault/index.js +13 -1
  276. package/useThemeWithoutDefault/package.json +2 -2
  277. package/useThemeWithoutDefault/useThemeWithoutDefault.js +10 -4
  278. package/version/index.js +12 -6
  279. package/version/package.json +2 -2
  280. package/node/Box/Box.js +0 -36
  281. package/node/Box/boxClasses.js +0 -10
  282. package/node/Box/index.js +0 -35
  283. package/node/Container/ContainerProps.js +0 -5
  284. package/node/Container/containerClasses.js +0 -15
  285. package/node/Container/index.js +0 -35
  286. package/node/DefaultPropsProvider/index.js +0 -19
  287. package/node/GlobalStyles/GlobalStyles.js +0 -44
  288. package/node/GlobalStyles/index.js +0 -25
  289. package/node/Grid/Grid.js +0 -107
  290. package/node/Grid/GridProps.js +0 -5
  291. package/node/Grid/createGrid.js +0 -156
  292. package/node/Grid/gridGenerator.js +0 -232
  293. package/node/Grid/index.js +0 -63
  294. package/node/InitColorSchemeScript/index.js +0 -13
  295. package/node/RtlProvider/index.js +0 -31
  296. package/node/Stack/StackProps.js +0 -5
  297. package/node/Stack/index.js +0 -55
  298. package/node/Stack/stackClasses.js +0 -15
  299. package/node/ThemeProvider/index.js +0 -13
  300. package/node/borders/borders.js +0 -59
  301. package/node/borders/index.js +0 -25
  302. package/node/breakpoints/index.js +0 -25
  303. package/node/colorManipulator/index.js +0 -16
  304. package/node/compose/index.js +0 -13
  305. package/node/createBox/createBox.js +0 -42
  306. package/node/createBox/index.js +0 -13
  307. package/node/createBreakpoints/index.js +0 -13
  308. package/node/createStyled/createStyled.js +0 -252
  309. package/node/createStyled/index.js +0 -25
  310. package/node/createTheme/createTheme.js +0 -56
  311. package/node/createTheme/index.js +0 -27
  312. package/node/createTheme/shape.js +0 -10
  313. package/node/cssContainerQueries/index.js +0 -31
  314. package/node/cssGrid/cssGrid.js +0 -94
  315. package/node/cssGrid/index.js +0 -25
  316. package/node/cssVars/createCssVarsTheme.js +0 -28
  317. package/node/cssVars/index.js +0 -41
  318. package/node/display/display.js +0 -34
  319. package/node/display/index.js +0 -25
  320. package/node/flexbox/flexbox.js +0 -50
  321. package/node/flexbox/index.js +0 -25
  322. package/node/getThemeValue/getThemeValue.js +0 -58
  323. package/node/getThemeValue/index.js +0 -25
  324. package/node/index.js +0 -609
  325. package/node/memoize/index.js +0 -13
  326. package/node/merge/index.js +0 -13
  327. package/node/merge/merge.js +0 -17
  328. package/node/palette/index.js +0 -25
  329. package/node/palette/palette.js +0 -34
  330. package/node/positions/index.js +0 -25
  331. package/node/positions/positions.js +0 -29
  332. package/node/propsToClassKey/index.js +0 -13
  333. package/node/propsToClassKey/propsToClassKey.js +0 -32
  334. package/node/responsivePropType/index.js +0 -13
  335. package/node/responsivePropType/responsivePropType.js +0 -10
  336. package/node/shadows/index.js +0 -13
  337. package/node/shadows/shadows.js +0 -13
  338. package/node/sizing/index.js +0 -25
  339. package/node/sizing/sizing.js +0 -74
  340. package/node/spacing/index.js +0 -25
  341. package/node/style/index.js +0 -25
  342. package/node/styleFunctionSx/index.js +0 -34
  343. package/node/styled/index.js +0 -13
  344. package/node/styled/styled.js +0 -10
  345. package/node/typography/index.js +0 -25
  346. package/node/typography/typography.js +0 -44
  347. package/node/useMediaQuery/index.js +0 -25
  348. package/node/useTheme/index.js +0 -25
  349. package/node/useTheme/useTheme.js +0 -15
  350. package/node/useThemeProps/getThemeProps.js +0 -19
  351. package/node/useThemeProps/index.js +0 -20
  352. package/node/useThemeProps/useThemeProps.js +0 -26
  353. package/node/useThemeWithoutDefault/index.js +0 -13
  354. package/node/useThemeWithoutDefault/useThemeWithoutDefault.js +0 -18
  355. package/node/version/index.js +0 -12
@@ -1,89 +1,95 @@
1
- /* eslint-disable no-underscore-dangle */
2
- import styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';
1
+ import styledEngineStyled, { internal_mutateStyles as mutateStyles } from '@mui/styled-engine';
3
2
  import { isPlainObject } from '@mui/utils/deepmerge';
4
3
  import capitalize from '@mui/utils/capitalize';
5
4
  import getDisplayName from '@mui/utils/getDisplayName';
6
5
  import createTheme from "../createTheme/index.js";
7
6
  import styleFunctionSx from "../styleFunctionSx/index.js";
7
+ import preprocessStyles from "../preprocessStyles.js";
8
+
9
+ /* eslint-disable no-underscore-dangle */
10
+ /* eslint-disable no-labels */
11
+ /* eslint-disable no-lone-blocks */
12
+
8
13
  export const systemDefaultTheme = createTheme();
9
14
 
10
15
  // Update /system/styled/#api in case if this changes
11
16
  export function shouldForwardProp(prop) {
12
17
  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';
13
18
  }
14
- function resolveTheme(themeId, theme, defaultTheme) {
15
- return isObjectEmpty(theme) ? defaultTheme : theme[themeId] || theme;
16
- }
17
- const PROCESSED_PROPS = Symbol('mui.processed_props');
18
- function attachTheme(props, themeId, defaultTheme) {
19
- if (PROCESSED_PROPS in props) {
20
- return props[PROCESSED_PROPS];
21
- }
22
- const processedProps = {
23
- ...props,
24
- theme: resolveTheme(themeId, props.theme, defaultTheme)
25
- };
26
- props[PROCESSED_PROPS] = processedProps;
27
- processedProps[PROCESSED_PROPS] = processedProps;
28
- return processedProps;
29
- }
30
19
  function defaultOverridesResolver(slot) {
31
20
  if (!slot) {
32
21
  return null;
33
22
  }
34
23
  return (_props, styles) => styles[slot];
35
24
  }
36
- function processStyle(style, props) {
25
+ function attachTheme(props, themeId, defaultTheme) {
26
+ props.theme = isObjectEmpty(props.theme) ? defaultTheme : props.theme[themeId] || props.theme;
27
+ }
28
+ function processStyle(props, style) {
29
+ /*
30
+ * Style types:
31
+ * - null/undefined
32
+ * - string
33
+ * - CSS style object: { [cssKey]: [cssValue], variants }
34
+ * - Processed style object: { style, variants, isProcessed: true }
35
+ * - Array of any of the above
36
+ */
37
+
37
38
  const resolvedStyle = typeof style === 'function' ? style(props) : style;
38
39
  if (Array.isArray(resolvedStyle)) {
39
- return resolvedStyle.flatMap(subStyle => processStyle(subStyle, props));
40
+ return resolvedStyle.flatMap(subStyle => processStyle(props, subStyle));
40
41
  }
41
42
  if (Array.isArray(resolvedStyle?.variants)) {
42
- const {
43
- variants,
44
- ...otherStyles
45
- } = resolvedStyle;
46
- let result = otherStyles;
47
- let mergedState; // We might not need it, initalized lazily
43
+ let rootStyle;
44
+ if (resolvedStyle.isProcessed) {
45
+ rootStyle = resolvedStyle.style;
46
+ } else {
47
+ const {
48
+ variants,
49
+ ...otherStyles
50
+ } = resolvedStyle;
51
+ rootStyle = otherStyles;
52
+ }
53
+ return processStyleVariants(props, resolvedStyle.variants, [rootStyle]);
54
+ }
55
+ if (resolvedStyle?.isProcessed) {
56
+ return resolvedStyle.style;
57
+ }
58
+ return resolvedStyle;
59
+ }
60
+ function processStyleVariants(props, variants, results = []) {
61
+ let mergedState; // We might not need it, initialized lazily
48
62
 
49
- /* eslint-disable no-labels */
50
- variantLoop: for (let i = 0; i < variants.length; i += 1) {
51
- const variant = variants[i];
52
- if (typeof variant.props === 'function') {
53
- mergedState ?? (mergedState = {
54
- ...props,
55
- ...props.ownerState,
56
- ownerState: props.ownerState
57
- });
58
- if (!variant.props(mergedState)) {
59
- continue;
60
- }
61
- } else {
62
- for (const key in variant.props) {
63
- if (props[key] !== variant.props[key] && props.ownerState?.[key] !== variant.props[key]) {
64
- continue variantLoop;
65
- }
66
- }
63
+ variantLoop: for (let i = 0; i < variants.length; i += 1) {
64
+ const variant = variants[i];
65
+ if (typeof variant.props === 'function') {
66
+ mergedState ?? (mergedState = {
67
+ ...props,
68
+ ...props.ownerState,
69
+ ownerState: props.ownerState
70
+ });
71
+ if (!variant.props(mergedState)) {
72
+ continue;
67
73
  }
68
- if (!Array.isArray(result)) {
69
- result = [result];
70
- }
71
- if (typeof variant.style === 'function') {
72
- mergedState ?? (mergedState = {
73
- ...props,
74
- ...props.ownerState,
75
- ownerState: props.ownerState
76
- });
77
- result.push(variant.style(mergedState));
78
- } else {
79
- result.push(variant.style);
74
+ } else {
75
+ for (const key in variant.props) {
76
+ if (props[key] !== variant.props[key] && props.ownerState?.[key] !== variant.props[key]) {
77
+ continue variantLoop;
78
+ }
80
79
  }
81
80
  }
82
- /* eslint-enable no-labels */
83
-
84
- return result;
81
+ if (typeof variant.style === 'function') {
82
+ mergedState ?? (mergedState = {
83
+ ...props,
84
+ ...props.ownerState,
85
+ ownerState: props.ownerState
86
+ });
87
+ results.push(variant.style(mergedState));
88
+ } else {
89
+ results.push(variant.style);
90
+ }
85
91
  }
86
- return resolvedStyle;
92
+ return results;
87
93
  }
88
94
  export default function createStyled(input = {}) {
89
95
  const {
@@ -92,13 +98,13 @@ export default function createStyled(input = {}) {
92
98
  rootShouldForwardProp = shouldForwardProp,
93
99
  slotShouldForwardProp = shouldForwardProp
94
100
  } = input;
95
- const systemSx = props => {
96
- return styleFunctionSx(attachTheme(props, themeId, defaultTheme));
97
- };
98
- systemSx.__mui_systemSx = true;
101
+ function styleAttachTheme(props) {
102
+ attachTheme(props, themeId, defaultTheme);
103
+ }
99
104
  const styled = (tag, inputOptions = {}) => {
100
- // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.
101
- processStyles(tag, styles => styles.filter(style => !style?.__mui_systemSx));
105
+ // If `tag` is already a styled component, filter out the `sx` style function
106
+ // to prevent unnecessary styles generated by the composite components.
107
+ mutateStyles(tag, styles => styles.filter(style => style !== styleFunctionSx));
102
108
  const {
103
109
  name: componentName,
104
110
  slot: componentSlot,
@@ -116,14 +122,6 @@ export default function createStyled(input = {}) {
116
122
  // For more details: https://github.com/mui/material-ui/pull/37908
117
123
  componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;
118
124
  const skipSx = inputSkipSx || false;
119
- let label;
120
- if (process.env.NODE_ENV !== 'production') {
121
- if (componentName) {
122
- // TODO v6: remove `lowercaseFirstLetter()` in the next major release
123
- // For more details: https://github.com/mui/material-ui/pull/37908
124
- label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;
125
- }
126
- }
127
125
  let shouldForwardPropOption = shouldForwardProp;
128
126
 
129
127
  // TODO v6: remove `Root` in the next major release
@@ -139,75 +137,95 @@ export default function createStyled(input = {}) {
139
137
  }
140
138
  const defaultStyledResolver = styledEngineStyled(tag, {
141
139
  shouldForwardProp: shouldForwardPropOption,
142
- label,
140
+ label: generateStyledLabel(componentName, componentSlot),
143
141
  ...options
144
142
  });
145
- const transformStyleArg = style => {
143
+ const transformStyle = style => {
146
144
  // On the server Emotion doesn't use React.forwardRef for creating components, so the created
147
145
  // component stays as a function. This condition makes sure that we do not interpolate functions
148
146
  // which are basically components used as a selectors.
149
- if (typeof style === 'function' && style.__emotion_real !== style || isPlainObject(style)) {
150
- return props => processStyle(style, attachTheme(props, themeId, defaultTheme));
147
+ if (typeof style === 'function' && style.__emotion_real !== style) {
148
+ return function styleFunctionProcessor(props) {
149
+ return processStyle(props, style);
150
+ };
151
+ }
152
+ if (isPlainObject(style)) {
153
+ const serialized = preprocessStyles(style);
154
+ if (!serialized.variants) {
155
+ return serialized.style;
156
+ }
157
+ return function styleObjectProcessor(props) {
158
+ return processStyle(props, serialized);
159
+ };
151
160
  }
152
161
  return style;
153
162
  };
154
- const muiStyledResolver = (style, ...expressions) => {
155
- let transformedStyle = transformStyleArg(style);
156
- const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];
163
+ const muiStyledResolver = (...expressionsInput) => {
164
+ const expressionsHead = [];
165
+ const expressionsBody = expressionsInput.map(transformStyle);
166
+ const expressionsTail = [];
167
+
168
+ // Preprocess `props` to set the scoped theme value.
169
+ // This must run before any other expression.
170
+ expressionsHead.push(styleAttachTheme);
157
171
  if (componentName && overridesResolver) {
158
- expressionsWithDefaultTheme.push(props => {
159
- const theme = resolveTheme(themeId, props.theme, defaultTheme);
160
- if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {
172
+ expressionsTail.push(function styleThemeOverrides(props) {
173
+ const theme = props.theme;
174
+ const styleOverrides = theme.components?.[componentName]?.styleOverrides;
175
+ if (!styleOverrides) {
161
176
  return null;
162
177
  }
163
- const styleOverrides = theme.components[componentName].styleOverrides;
164
178
  const resolvedStyleOverrides = {};
165
- const propsWithTheme = attachTheme(props, themeId, defaultTheme);
166
179
 
167
180
  // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly
168
181
  // eslint-disable-next-line guard-for-in
169
182
  for (const slotKey in styleOverrides) {
170
- resolvedStyleOverrides[slotKey] = processStyle(styleOverrides[slotKey], propsWithTheme);
183
+ resolvedStyleOverrides[slotKey] = processStyle(props, styleOverrides[slotKey]);
171
184
  }
172
185
  return overridesResolver(props, resolvedStyleOverrides);
173
186
  });
174
187
  }
175
188
  if (componentName && !skipVariantsResolver) {
176
- expressionsWithDefaultTheme.push(props => {
177
- const theme = resolveTheme(themeId, props.theme, defaultTheme);
189
+ expressionsTail.push(function styleThemeVariants(props) {
190
+ const theme = props.theme;
178
191
  const themeVariants = theme?.components?.[componentName]?.variants;
179
192
  if (!themeVariants) {
180
193
  return null;
181
194
  }
182
- return processStyle({
183
- variants: themeVariants
184
- }, attachTheme(props, themeId, defaultTheme));
195
+ return processStyleVariants(props, themeVariants);
185
196
  });
186
197
  }
187
198
  if (!skipSx) {
188
- expressionsWithDefaultTheme.push(systemSx);
199
+ expressionsTail.push(styleFunctionSx);
189
200
  }
190
- const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;
191
- if (Array.isArray(style) && numOfCustomFnsApplied > 0) {
192
- const placeholders = new Array(numOfCustomFnsApplied).fill('');
193
- // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.
194
- transformedStyle = [...style, ...placeholders];
195
- transformedStyle.raw = [...style.raw, ...placeholders];
196
- }
197
- const Component = defaultStyledResolver(transformedStyle, ...expressionsWithDefaultTheme);
198
- if (process.env.NODE_ENV !== 'production') {
199
- let displayName;
200
- if (componentName) {
201
- displayName = `${componentName}${capitalize(componentSlot || '')}`;
202
- }
203
- if (displayName === undefined) {
204
- displayName = `Styled(${getDisplayName(tag)})`;
201
+
202
+ // This function can be called as a tagged template, so the first argument would contain
203
+ // CSS `string[]` values.
204
+ if (Array.isArray(expressionsBody[0])) {
205
+ const inputStrings = expressionsBody.shift();
206
+
207
+ // We need to add placeholders in the tagged template for the custom functions we have
208
+ // possibly added (attachTheme, overrides, variants, and sx).
209
+ const placeholdersHead = new Array(expressionsHead.length).fill('');
210
+ const placeholdersTail = new Array(expressionsTail.length).fill('');
211
+ let outputStrings;
212
+ // prettier-ignore
213
+ {
214
+ outputStrings = [...placeholdersHead, ...inputStrings, ...placeholdersTail];
215
+ outputStrings.raw = [...placeholdersHead, ...inputStrings.raw, ...placeholdersTail];
205
216
  }
206
- Component.displayName = displayName;
217
+
218
+ // The only case where we put something before `attachTheme`
219
+ expressionsHead.unshift(outputStrings);
207
220
  }
221
+ const expressions = [...expressionsHead, ...expressionsBody, ...expressionsTail];
222
+ const Component = defaultStyledResolver(...expressions);
208
223
  if (tag.muiName) {
209
224
  Component.muiName = tag.muiName;
210
225
  }
226
+ if (process.env.NODE_ENV !== 'production') {
227
+ Component.displayName = generateDisplayName(componentName, componentSlot, tag);
228
+ }
211
229
  return Component;
212
230
  };
213
231
  if (defaultStyledResolver.withConfig) {
@@ -217,6 +235,23 @@ export default function createStyled(input = {}) {
217
235
  };
218
236
  return styled;
219
237
  }
238
+ function generateDisplayName(componentName, componentSlot, tag) {
239
+ if (componentName) {
240
+ return `${componentName}${capitalize(componentSlot || '')}`;
241
+ }
242
+ return `Styled(${getDisplayName(tag)})`;
243
+ }
244
+ function generateStyledLabel(componentName, componentSlot) {
245
+ let label;
246
+ if (process.env.NODE_ENV !== 'production') {
247
+ if (componentName) {
248
+ // TODO v6: remove `lowercaseFirstLetter()` in the next major release
249
+ // For more details: https://github.com/mui/material-ui/pull/37908
250
+ label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;
251
+ }
252
+ }
253
+ return label;
254
+ }
220
255
  function isObjectEmpty(object) {
221
256
  // eslint-disable-next-line
222
257
  for (const _ in object) {
@@ -32,8 +32,7 @@ export function getContainerQuery(theme, shorthand) {
32
32
  const matches = shorthand.match(/^@([^/]+)?\/?(.+)?$/);
33
33
  if (!matches) {
34
34
  if (process.env.NODE_ENV !== 'production') {
35
- throw new Error(process.env.NODE_ENV !== "production" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \`@<breakpoint | number>\` or \`@<breakpoint | number>/<container>\`.
36
- For example, \`@sm\` or \`@600\` or \`@40rem/sidebar\`.` : _formatMuiErrorMessage(18, `(${shorthand})`));
35
+ throw new Error(process.env.NODE_ENV !== "production" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \`@<breakpoint | number>\` or \`@<breakpoint | number>/<container>\`.\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatMuiErrorMessage(18, `(${shorthand})`));
37
36
  }
38
37
  return null;
39
38
  }
@@ -49,7 +49,8 @@ export default function createCssVarsProvider(options) {
49
49
  documentNode = typeof document === 'undefined' ? undefined : document,
50
50
  colorSchemeNode = typeof document === 'undefined' ? undefined : document.documentElement,
51
51
  disableNestedContext = false,
52
- disableStyleSheetGeneration = false
52
+ disableStyleSheetGeneration = false,
53
+ defaultMode: initialMode = 'system'
53
54
  } = props;
54
55
  const hasMounted = React.useRef(false);
55
56
  const upperTheme = muiUseTheme();
@@ -72,7 +73,7 @@ export default function createCssVarsProvider(options) {
72
73
  const allColorSchemes = React.useMemo(() => joinedColorSchemes.split(','), [joinedColorSchemes]);
73
74
  const defaultLightColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.light;
74
75
  const defaultDarkColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.dark;
75
- const defaultMode = colorSchemes[defaultLightColorScheme] && colorSchemes[defaultDarkColorScheme] ? 'system' : colorSchemes[restThemeProp.defaultColorScheme]?.palette?.mode || restThemeProp.palette?.mode;
76
+ const defaultMode = colorSchemes[defaultLightColorScheme] && colorSchemes[defaultDarkColorScheme] ? initialMode : colorSchemes[restThemeProp.defaultColorScheme]?.palette?.mode || restThemeProp.palette?.mode;
76
77
 
77
78
  // 1. Get the data about the `mode`, `colorScheme`, and setter functions.
78
79
  const {
@@ -244,6 +245,11 @@ export default function createCssVarsProvider(options) {
244
245
  * localStorage key used to store `colorScheme`
245
246
  */
246
247
  colorSchemeStorageKey: PropTypes.string,
248
+ /**
249
+ * The default mode when the storage is empty,
250
+ * require the theme to have `colorSchemes` with light and dark.
251
+ */
252
+ defaultMode: PropTypes.string,
247
253
  /**
248
254
  * If `true`, the provider creates its own context and generate stylesheet as if it is a root `CssVarsProvider`.
249
255
  */
@@ -43,7 +43,7 @@ function initializeValue(key, defaultValue) {
43
43
  // the first time that user enters the site.
44
44
  localStorage.setItem(key, defaultValue);
45
45
  }
46
- } catch (e) {
46
+ } catch {
47
47
  // Unsupported
48
48
  }
49
49
  return value || defaultValue;
@@ -90,7 +90,7 @@ export default function useCurrentColorScheme(options) {
90
90
  const newMode = mode ?? defaultMode;
91
91
  try {
92
92
  localStorage.setItem(modeStorageKey, newMode);
93
- } catch (e) {
93
+ } catch {
94
94
  // Unsupported
95
95
  }
96
96
  return {
@@ -106,7 +106,7 @@ export default function useCurrentColorScheme(options) {
106
106
  try {
107
107
  localStorage.setItem(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);
108
108
  localStorage.setItem(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);
109
- } catch (e) {
109
+ } catch {
110
110
  // Unsupported
111
111
  }
112
112
  return {
@@ -126,7 +126,7 @@ export default function useCurrentColorScheme(options) {
126
126
  processState(currentState, mode => {
127
127
  try {
128
128
  localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);
129
- } catch (e) {
129
+ } catch {
130
130
  // Unsupported
131
131
  }
132
132
  if (mode === 'light') {
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/system v6.1.1
2
+ * @mui/system v6.1.3
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -35,7 +35,7 @@ export { default as unstable_styleFunctionSx, unstable_createStyleFunctionSx, ex
35
35
  // TODO: Remove this function in v6
36
36
  // eslint-disable-next-line @typescript-eslint/naming-convention
37
37
  export function experimental_sx() {
38
- throw new Error(process.env.NODE_ENV !== "production" ? `MUI: The \`experimental_sx\` has been moved to \`theme.unstable_sx\`.For more details, see https://github.com/mui/material-ui/pull/35150.` : _formatMuiErrorMessage(19));
38
+ throw new Error(process.env.NODE_ENV !== "production" ? 'MUI: The `experimental_sx` has been moved to `theme.unstable_sx`.' + 'For more details, see https://github.com/mui/material-ui/pull/35150.' : _formatMuiErrorMessage(19));
39
39
  }
40
40
  export { default as unstable_getThemeValue } from "./getThemeValue/index.js";
41
41
  export { default as Box } from "./Box/index.js";
@@ -53,6 +53,7 @@ export { default as useThemeWithoutDefault } from "./useThemeWithoutDefault/inde
53
53
  export { default as useMediaQuery } from "./useMediaQuery/index.js";
54
54
  export * from "./colorManipulator/index.js";
55
55
  export { default as ThemeProvider } from "./ThemeProvider/index.js";
56
+ export { default as unstable_memoTheme } from "./memoTheme.js";
56
57
  export { default as unstable_createCssVarsProvider } from "./cssVars/createCssVarsProvider.js";
57
58
  export { default as unstable_createGetCssVar } from "./cssVars/createGetCssVar.js";
58
59
  export { default as unstable_cssVarsParser } from "./cssVars/cssVarsParser.js";
@@ -0,0 +1,28 @@
1
+ import preprocessStyles from "./preprocessStyles.js";
2
+
3
+ /* eslint-disable @typescript-eslint/naming-convention */
4
+
5
+ // We need to pass an argument as `{ theme }` for PigmentCSS, but we don't want to
6
+ // allocate more objects.
7
+ const arg = {
8
+ theme: undefined
9
+ };
10
+
11
+ /**
12
+ * Memoize style function on theme.
13
+ * Intended to be used in styled() calls that only need access to the theme.
14
+ */
15
+ export default function unstable_memoTheme(styleFn) {
16
+ let lastValue;
17
+ let lastTheme;
18
+ return function styleMemoized(props) {
19
+ let value = lastValue;
20
+ if (value === undefined || props.theme !== lastTheme) {
21
+ arg.theme = props.theme;
22
+ value = preprocessStyles(styleFn(arg));
23
+ lastValue = value;
24
+ lastTheme = props.theme;
25
+ }
26
+ return value;
27
+ };
28
+ }
@@ -0,0 +1,25 @@
1
+ import { internal_serializeStyles } from '@mui/styled-engine';
2
+ export default function preprocessStyles(input) {
3
+ const {
4
+ variants,
5
+ ...style
6
+ } = input;
7
+ const result = {
8
+ variants,
9
+ style: internal_serializeStyles(style),
10
+ isProcessed: true
11
+ };
12
+
13
+ // Not supported on styled-components
14
+ if (result.style === style) {
15
+ return result;
16
+ }
17
+ if (variants) {
18
+ variants.forEach(variant => {
19
+ if (typeof variant.style !== 'function') {
20
+ variant.style = internal_serializeStyles(variant.style);
21
+ }
22
+ });
23
+ }
24
+ return result;
25
+ }
@@ -1,6 +1,6 @@
1
- export const version = "6.1.1";
1
+ export const version = "6.1.3";
2
2
  export const major = Number("6");
3
3
  export const minor = Number("1");
4
- export const patch = Number("1");
4
+ export const patch = Number("3");
5
5
  export const prerelease = undefined;
6
6
  export default version;
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@mui/system",
3
- "version": "6.1.1",
3
+ "version": "6.1.3",
4
4
  "private": false,
5
5
  "author": "MUI Team",
6
6
  "description": "MUI System is a set of CSS utilities to help you build custom designs more efficiently. It makes it possible to rapidly lay out custom designs.",
7
- "main": "./node/index.js",
7
+ "main": "./index.js",
8
8
  "keywords": [
9
9
  "react",
10
10
  "react-component",
@@ -30,10 +30,10 @@
30
30
  "clsx": "^2.1.1",
31
31
  "csstype": "^3.1.3",
32
32
  "prop-types": "^15.8.1",
33
- "@mui/private-theming": "^6.1.1",
34
- "@mui/styled-engine": "^6.1.1",
35
- "@mui/utils": "^6.1.1",
36
- "@mui/types": "^7.2.17"
33
+ "@mui/private-theming": "^6.1.3",
34
+ "@mui/styled-engine": "^6.1.3",
35
+ "@mui/types": "^7.2.18",
36
+ "@mui/utils": "^6.1.3"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@emotion/react": "^11.5.0",
@@ -60,6 +60,6 @@
60
60
  "engines": {
61
61
  "node": ">=14.0.0"
62
62
  },
63
- "module": "./index.js",
63
+ "module": "./esm/index.js",
64
64
  "types": "./index.d.ts"
65
65
  }
package/palette/index.js CHANGED
@@ -1,2 +1,25 @@
1
- export { default } from "./palette.js";
2
- export * from "./palette.js";
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ var _exportNames = {};
8
+ Object.defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function () {
11
+ return _palette.default;
12
+ }
13
+ });
14
+ var _palette = _interopRequireWildcard(require("./palette"));
15
+ Object.keys(_palette).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
18
+ if (key in exports && exports[key] === _palette[key]) return;
19
+ Object.defineProperty(exports, key, {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _palette[key];
23
+ }
24
+ });
25
+ });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "sideEffects": false,
3
- "module": "./index.js",
4
- "main": "../node/palette/index.js",
3
+ "module": "../esm/palette/index.js",
4
+ "main": "./index.js",
5
5
  "types": "./index.d.ts"
6
6
  }
@@ -1,26 +1,34 @@
1
- import style from "../style/index.js";
2
- import compose from "../compose/index.js";
3
- export function paletteTransform(value, userValue) {
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.color = exports.bgcolor = exports.backgroundColor = void 0;
8
+ exports.paletteTransform = paletteTransform;
9
+ var _style = _interopRequireDefault(require("../style"));
10
+ var _compose = _interopRequireDefault(require("../compose"));
11
+ function paletteTransform(value, userValue) {
4
12
  if (userValue === 'grey') {
5
13
  return userValue;
6
14
  }
7
15
  return value;
8
16
  }
9
- export const color = style({
17
+ const color = exports.color = (0, _style.default)({
10
18
  prop: 'color',
11
19
  themeKey: 'palette',
12
20
  transform: paletteTransform
13
21
  });
14
- export const bgcolor = style({
22
+ const bgcolor = exports.bgcolor = (0, _style.default)({
15
23
  prop: 'bgcolor',
16
24
  cssProperty: 'backgroundColor',
17
25
  themeKey: 'palette',
18
26
  transform: paletteTransform
19
27
  });
20
- export const backgroundColor = style({
28
+ const backgroundColor = exports.backgroundColor = (0, _style.default)({
21
29
  prop: 'backgroundColor',
22
30
  themeKey: 'palette',
23
31
  transform: paletteTransform
24
32
  });
25
- const palette = compose(color, bgcolor, backgroundColor);
26
- export default palette;
33
+ const palette = (0, _compose.default)(color, bgcolor, backgroundColor);
34
+ var _default = exports.default = palette;
@@ -1,2 +1,25 @@
1
- export { default } from "./positions.js";
2
- export * from "./positions.js";
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ var _exportNames = {};
8
+ Object.defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function () {
11
+ return _positions.default;
12
+ }
13
+ });
14
+ var _positions = _interopRequireWildcard(require("./positions"));
15
+ Object.keys(_positions).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
18
+ if (key in exports && exports[key] === _positions[key]) return;
19
+ Object.defineProperty(exports, key, {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _positions[key];
23
+ }
24
+ });
25
+ });