@mui/lab 5.0.0-alpha.134 → 5.0.0-alpha.136

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 (54) hide show
  1. package/CHANGELOG.md +245 -10
  2. package/Masonry/Masonry.js +16 -6
  3. package/README.md +2 -2
  4. package/Timeline/Timeline.d.ts +3 -1
  5. package/Timeline/Timeline.js +4 -4
  6. package/Timeline/timelineClasses.d.ts +1 -1
  7. package/Timeline/timelineClasses.js +1 -1
  8. package/TimelineContent/TimelineContent.js +3 -3
  9. package/TimelineContent/timelineContentClasses.d.ts +2 -0
  10. package/TimelineContent/timelineContentClasses.js +1 -1
  11. package/TimelineItem/TimelineItem.d.ts +1 -1
  12. package/TimelineItem/TimelineItem.js +7 -6
  13. package/TimelineItem/timelineItemClasses.d.ts +2 -0
  14. package/TimelineItem/timelineItemClasses.js +1 -1
  15. package/TimelineOppositeContent/TimelineOppositeContent.js +3 -3
  16. package/TimelineOppositeContent/timelineOppositeContentClasses.d.ts +2 -0
  17. package/TimelineOppositeContent/timelineOppositeContentClasses.js +1 -1
  18. package/index.js +1 -1
  19. package/internal/convertTimelinePositionToClass.d.ts +1 -0
  20. package/internal/convertTimelinePositionToClass.js +4 -0
  21. package/legacy/Masonry/Masonry.js +14 -6
  22. package/legacy/Timeline/Timeline.js +4 -4
  23. package/legacy/Timeline/timelineClasses.js +1 -1
  24. package/legacy/TimelineContent/TimelineContent.js +3 -3
  25. package/legacy/TimelineContent/timelineContentClasses.js +1 -1
  26. package/legacy/TimelineItem/TimelineItem.js +13 -14
  27. package/legacy/TimelineItem/timelineItemClasses.js +1 -1
  28. package/legacy/TimelineOppositeContent/TimelineOppositeContent.js +3 -3
  29. package/legacy/TimelineOppositeContent/timelineOppositeContentClasses.js +1 -1
  30. package/legacy/index.js +1 -1
  31. package/legacy/internal/convertTimelinePositionToClass.js +4 -0
  32. package/modern/Masonry/Masonry.js +16 -6
  33. package/modern/Timeline/Timeline.js +4 -4
  34. package/modern/Timeline/timelineClasses.js +1 -1
  35. package/modern/TimelineContent/TimelineContent.js +3 -3
  36. package/modern/TimelineContent/timelineContentClasses.js +1 -1
  37. package/modern/TimelineItem/TimelineItem.js +7 -6
  38. package/modern/TimelineItem/timelineItemClasses.js +1 -1
  39. package/modern/TimelineOppositeContent/TimelineOppositeContent.js +3 -3
  40. package/modern/TimelineOppositeContent/timelineOppositeContentClasses.js +1 -1
  41. package/modern/index.js +1 -1
  42. package/modern/internal/convertTimelinePositionToClass.js +4 -0
  43. package/node/Masonry/Masonry.js +15 -5
  44. package/node/Timeline/Timeline.js +4 -4
  45. package/node/Timeline/timelineClasses.js +1 -1
  46. package/node/TimelineContent/TimelineContent.js +3 -3
  47. package/node/TimelineContent/timelineContentClasses.js +1 -1
  48. package/node/TimelineItem/TimelineItem.js +6 -5
  49. package/node/TimelineItem/timelineItemClasses.js +1 -1
  50. package/node/TimelineOppositeContent/TimelineOppositeContent.js +3 -3
  51. package/node/TimelineOppositeContent/timelineOppositeContentClasses.js +1 -1
  52. package/node/index.js +1 -1
  53. package/node/internal/convertTimelinePositionToClass.js +10 -0
  54. package/package.json +5 -5
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/lab v5.0.0-alpha.134
2
+ * @mui/lab v5.0.0-alpha.136
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -0,0 +1 @@
1
+ export default function convertTimelinePositionToClass(position: string): string;
@@ -0,0 +1,4 @@
1
+ import { capitalize } from '@mui/material/utils';
2
+ export default function convertTimelinePositionToClass(position) {
3
+ return position === 'alternate-reverse' ? 'positionAlternateReverse' : `position${capitalize(position)}`;
4
+ }
@@ -6,7 +6,7 @@ import { unstable_composeClasses as composeClasses } from '@mui/base';
6
6
  import * as ReactDOM from 'react-dom';
7
7
  import { styled, useThemeProps } from '@mui/material/styles';
8
8
  import { createUnarySpacing, getValue, handleBreakpoints, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';
9
- import { deepmerge, unstable_useForkRef as useForkRef } from '@mui/utils';
9
+ import { deepmerge, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
10
10
  import clsx from 'clsx';
11
11
  import PropTypes from 'prop-types';
12
12
  import * as React from 'react';
@@ -224,20 +224,28 @@ var Masonry = /*#__PURE__*/React.forwardRef(function Masonry(inProps, ref) {
224
224
  });
225
225
  }
226
226
  };
227
- var observer = React.useRef(typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(handleResize));
228
- React.useEffect(function () {
229
- var resizeObserver = observer.current;
227
+ useEnhancedEffect(function () {
230
228
  // IE and old browsers are not supported
231
- if (resizeObserver === undefined) {
229
+ if (typeof ResizeObserver === 'undefined') {
232
230
  return undefined;
233
231
  }
232
+ var animationFrame;
233
+ var resizeObserver = new ResizeObserver(function () {
234
+ // see https://github.com/mui/material-ui/issues/36909
235
+ animationFrame = window.requestAnimationFrame(handleResize);
236
+ });
234
237
  if (masonryRef.current) {
235
238
  masonryRef.current.childNodes.forEach(function (childNode) {
236
239
  resizeObserver.observe(childNode);
237
240
  });
238
241
  }
239
242
  return function () {
240
- return resizeObserver ? resizeObserver.disconnect() : {};
243
+ if (animationFrame) {
244
+ window.cancelAnimationFrame(animationFrame);
245
+ }
246
+ if (resizeObserver) {
247
+ resizeObserver.disconnect();
248
+ }
241
249
  };
242
250
  }, [columns, spacing, children]);
243
251
  var handleRef = useForkRef(ref, masonryRef);
@@ -6,17 +6,17 @@ import clsx from 'clsx';
6
6
 
7
7
  // eslint-disable-next-line no-restricted-imports -- importing types
8
8
 
9
- import { capitalize } from '@mui/material/utils';
10
9
  import { unstable_composeClasses as composeClasses } from '@mui/base';
11
10
  import { styled, useThemeProps } from '@mui/material/styles';
12
11
  import TimelineContext from './TimelineContext';
13
12
  import { getTimelineUtilityClass } from './timelineClasses';
13
+ import convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
15
  var useUtilityClasses = function useUtilityClasses(ownerState) {
16
16
  var position = ownerState.position,
17
17
  classes = ownerState.classes;
18
18
  var slots = {
19
- root: ['root', position && "position".concat(capitalize(position))]
19
+ root: ['root', position && convertTimelinePositionToClass(position)]
20
20
  };
21
21
  return composeClasses(slots, getTimelineUtilityClass, classes);
22
22
  };
@@ -25,7 +25,7 @@ var TimelineRoot = styled('ul', {
25
25
  slot: 'Root',
26
26
  overridesResolver: function overridesResolver(props, styles) {
27
27
  var ownerState = props.ownerState;
28
- return [styles.root, ownerState.position && styles["position".concat(capitalize(ownerState.position))]];
28
+ return [styles.root, ownerState.position && styles[convertTimelinePositionToClass(ownerState.position)]];
29
29
  }
30
30
  })({
31
31
  display: 'flex',
@@ -94,7 +94,7 @@ process.env.NODE_ENV !== "production" ? Timeline.propTypes /* remove-proptypes *
94
94
  * The position where the TimelineContent should appear relative to the time axis.
95
95
  * @default 'right'
96
96
  */
97
- position: PropTypes.oneOf(['alternate', 'left', 'right']),
97
+ position: PropTypes.oneOf(['alternate-reverse', 'alternate', 'left', 'right']),
98
98
  /**
99
99
  * The system prop that allows defining system overrides as well as additional CSS styles.
100
100
  */
@@ -3,5 +3,5 @@ import generateUtilityClasses from '@mui/material/generateUtilityClasses';
3
3
  export function getTimelineUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTimeline', slot);
5
5
  }
6
- var timelineClasses = generateUtilityClasses('MuiTimeline', ['root', 'positionLeft', 'positionRight', 'positionAlternate']);
6
+ var timelineClasses = generateUtilityClasses('MuiTimeline', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);
7
7
  export default timelineClasses;
@@ -3,18 +3,18 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import * as React from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import clsx from 'clsx';
6
- import { capitalize } from '@mui/material/utils';
7
6
  import { styled, useThemeProps } from '@mui/material/styles';
8
7
  import { unstable_composeClasses as composeClasses } from '@mui/base';
9
8
  import Typography from '@mui/material/Typography';
10
9
  import TimelineContext from '../Timeline/TimelineContext';
11
10
  import { getTimelineContentUtilityClass } from './timelineContentClasses';
11
+ import convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  var useUtilityClasses = function useUtilityClasses(ownerState) {
14
14
  var position = ownerState.position,
15
15
  classes = ownerState.classes;
16
16
  var slots = {
17
- root: ['root', "position".concat(capitalize(position))]
17
+ root: ['root', convertTimelinePositionToClass(position)]
18
18
  };
19
19
  return composeClasses(slots, getTimelineContentUtilityClass, classes);
20
20
  };
@@ -23,7 +23,7 @@ var TimelineContentRoot = styled(Typography, {
23
23
  slot: 'Root',
24
24
  overridesResolver: function overridesResolver(props, styles) {
25
25
  var ownerState = props.ownerState;
26
- return [styles.root, styles["position".concat(capitalize(ownerState.position))]];
26
+ return [styles.root, styles[convertTimelinePositionToClass(ownerState.position)]];
27
27
  }
28
28
  })(function (_ref) {
29
29
  var ownerState = _ref.ownerState;
@@ -3,5 +3,5 @@ import generateUtilityClasses from '@mui/material/generateUtilityClasses';
3
3
  export function getTimelineContentUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTimelineContent', slot);
5
5
  }
6
- var timelineContentClasses = generateUtilityClasses('MuiTimelineContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate']);
6
+ var timelineContentClasses = generateUtilityClasses('MuiTimelineContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);
7
7
  export default timelineContentClasses;
@@ -4,20 +4,21 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
- import { capitalize, isMuiElement } from '@mui/material/utils';
7
+ import { isMuiElement } from '@mui/material/utils';
8
8
  import { styled, useThemeProps } from '@mui/material/styles';
9
9
  import { unstable_composeClasses as composeClasses } from '@mui/base';
10
10
  import { timelineContentClasses } from '../TimelineContent';
11
11
  import { timelineOppositeContentClasses } from '../TimelineOppositeContent';
12
12
  import TimelineContext from '../Timeline/TimelineContext';
13
13
  import { getTimelineItemUtilityClass } from './timelineItemClasses';
14
+ import convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';
14
15
  import { jsx as _jsx } from "react/jsx-runtime";
15
16
  var useUtilityClasses = function useUtilityClasses(ownerState) {
16
17
  var position = ownerState.position,
17
18
  classes = ownerState.classes,
18
19
  hasOppositeContent = ownerState.hasOppositeContent;
19
20
  var slots = {
20
- root: ['root', "position".concat(capitalize(position)), !hasOppositeContent && 'missingOppositeContent']
21
+ root: ['root', convertTimelinePositionToClass(position), !hasOppositeContent && 'missingOppositeContent']
21
22
  };
22
23
  return composeClasses(slots, getTimelineItemUtilityClass, classes);
23
24
  };
@@ -26,10 +27,10 @@ var TimelineItemRoot = styled('li', {
26
27
  slot: 'Root',
27
28
  overridesResolver: function overridesResolver(props, styles) {
28
29
  var ownerState = props.ownerState;
29
- return [styles.root, styles["position".concat(capitalize(ownerState.position))]];
30
+ return [styles.root, styles[convertTimelinePositionToClass(ownerState.position)]];
30
31
  }
31
32
  })(function (_ref) {
32
- var _nthOfTypeEven;
33
+ var _nthOfType$conca;
33
34
  var ownerState = _ref.ownerState;
34
35
  return _extends({
35
36
  listStyle: 'none',
@@ -38,15 +39,13 @@ var TimelineItemRoot = styled('li', {
38
39
  minHeight: 70
39
40
  }, ownerState.position === 'left' && {
40
41
  flexDirection: 'row-reverse'
41
- }, ownerState.position === 'alternate' && {
42
- '&:nth-of-type(even)': (_nthOfTypeEven = {
43
- flexDirection: 'row-reverse'
44
- }, _defineProperty(_nthOfTypeEven, "& .".concat(timelineContentClasses.root), {
45
- textAlign: 'right'
46
- }), _defineProperty(_nthOfTypeEven, "& .".concat(timelineOppositeContentClasses.root), {
47
- textAlign: 'left'
48
- }), _nthOfTypeEven)
49
- }, !ownerState.hasOppositeContent && {
42
+ }, (ownerState.position === 'alternate' || ownerState.position === 'alternate-reverse') && _defineProperty({}, "&:nth-of-type(".concat(ownerState.position === 'alternate' ? 'even' : 'odd', ")"), (_nthOfType$conca = {
43
+ flexDirection: 'row-reverse'
44
+ }, _defineProperty(_nthOfType$conca, "& .".concat(timelineContentClasses.root), {
45
+ textAlign: 'right'
46
+ }), _defineProperty(_nthOfType$conca, "& .".concat(timelineOppositeContentClasses.root), {
47
+ textAlign: 'left'
48
+ }), _nthOfType$conca)), !ownerState.hasOppositeContent && {
50
49
  '&:before': {
51
50
  content: '""',
52
51
  flex: 1,
@@ -109,7 +108,7 @@ process.env.NODE_ENV !== "production" ? TimelineItem.propTypes /* remove-proptyp
109
108
  /**
110
109
  * The position where the timeline's item should appear.
111
110
  */
112
- position: PropTypes.oneOf(['left', 'right']),
111
+ position: PropTypes.oneOf(['alternate-reverse', 'alternate', 'left', 'right']),
113
112
  /**
114
113
  * The system prop that allows defining system overrides as well as additional CSS styles.
115
114
  */
@@ -3,5 +3,5 @@ import generateUtilityClasses from '@mui/material/generateUtilityClasses';
3
3
  export function getTimelineItemUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTimelineItem', slot);
5
5
  }
6
- var timelineItemClasses = generateUtilityClasses('MuiTimelineItem', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'missingOppositeContent']);
6
+ var timelineItemClasses = generateUtilityClasses('MuiTimelineItem', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse', 'missingOppositeContent']);
7
7
  export default timelineItemClasses;
@@ -4,17 +4,17 @@ import * as React from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import clsx from 'clsx';
6
6
  import { styled, useThemeProps } from '@mui/material/styles';
7
- import { capitalize } from '@mui/material/utils';
8
7
  import { unstable_composeClasses as composeClasses } from '@mui/base';
9
8
  import Typography from '@mui/material/Typography';
10
9
  import TimelineContext from '../Timeline/TimelineContext';
11
10
  import { getTimelineOppositeContentUtilityClass } from './timelineOppositeContentClasses';
11
+ import convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  var useUtilityClasses = function useUtilityClasses(ownerState) {
14
14
  var position = ownerState.position,
15
15
  classes = ownerState.classes;
16
16
  var slots = {
17
- root: ['root', "position".concat(capitalize(position))]
17
+ root: ['root', convertTimelinePositionToClass(position)]
18
18
  };
19
19
  return composeClasses(slots, getTimelineOppositeContentUtilityClass, classes);
20
20
  };
@@ -23,7 +23,7 @@ var TimelineOppositeContentRoot = styled(Typography, {
23
23
  slot: 'Root',
24
24
  overridesResolver: function overridesResolver(props, styles) {
25
25
  var ownerState = props.ownerState;
26
- return [styles.root, styles["position".concat(capitalize(ownerState.position))]];
26
+ return [styles.root, styles[convertTimelinePositionToClass(ownerState.position)]];
27
27
  }
28
28
  })(function (_ref) {
29
29
  var ownerState = _ref.ownerState;
@@ -3,5 +3,5 @@ import generateUtilityClasses from '@mui/material/generateUtilityClasses';
3
3
  export function getTimelineOppositeContentUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTimelineOppositeContent', slot);
5
5
  }
6
- var timelineOppositeContentClasses = generateUtilityClasses('MuiTimelineOppositeContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate']);
6
+ var timelineOppositeContentClasses = generateUtilityClasses('MuiTimelineOppositeContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);
7
7
  export default timelineOppositeContentClasses;
package/legacy/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/lab v5.0.0-alpha.134
2
+ * @mui/lab v5.0.0-alpha.136
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -0,0 +1,4 @@
1
+ import { capitalize } from '@mui/material/utils';
2
+ export default function convertTimelinePositionToClass(position) {
3
+ return position === 'alternate-reverse' ? 'positionAlternateReverse' : "position".concat(capitalize(position));
4
+ }
@@ -5,7 +5,7 @@ import { unstable_composeClasses as composeClasses } from '@mui/base';
5
5
  import * as ReactDOM from 'react-dom';
6
6
  import { styled, useThemeProps } from '@mui/material/styles';
7
7
  import { createUnarySpacing, getValue, handleBreakpoints, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';
8
- import { deepmerge, unstable_useForkRef as useForkRef } from '@mui/utils';
8
+ import { deepmerge, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
9
9
  import clsx from 'clsx';
10
10
  import PropTypes from 'prop-types';
11
11
  import * as React from 'react';
@@ -221,19 +221,29 @@ const Masonry = /*#__PURE__*/React.forwardRef(function Masonry(inProps, ref) {
221
221
  });
222
222
  }
223
223
  };
224
- const observer = React.useRef(typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(handleResize));
225
- React.useEffect(() => {
226
- const resizeObserver = observer.current;
224
+ useEnhancedEffect(() => {
227
225
  // IE and old browsers are not supported
228
- if (resizeObserver === undefined) {
226
+ if (typeof ResizeObserver === 'undefined') {
229
227
  return undefined;
230
228
  }
229
+ let animationFrame;
230
+ const resizeObserver = new ResizeObserver(() => {
231
+ // see https://github.com/mui/material-ui/issues/36909
232
+ animationFrame = window.requestAnimationFrame(handleResize);
233
+ });
231
234
  if (masonryRef.current) {
232
235
  masonryRef.current.childNodes.forEach(childNode => {
233
236
  resizeObserver.observe(childNode);
234
237
  });
235
238
  }
236
- return () => resizeObserver ? resizeObserver.disconnect() : {};
239
+ return () => {
240
+ if (animationFrame) {
241
+ window.cancelAnimationFrame(animationFrame);
242
+ }
243
+ if (resizeObserver) {
244
+ resizeObserver.disconnect();
245
+ }
246
+ };
237
247
  }, [columns, spacing, children]);
238
248
  const handleRef = useForkRef(ref, masonryRef);
239
249
 
@@ -7,11 +7,11 @@ import clsx from 'clsx';
7
7
 
8
8
  // eslint-disable-next-line no-restricted-imports -- importing types
9
9
 
10
- import { capitalize } from '@mui/material/utils';
11
10
  import { unstable_composeClasses as composeClasses } from '@mui/base';
12
11
  import { styled, useThemeProps } from '@mui/material/styles';
13
12
  import TimelineContext from './TimelineContext';
14
13
  import { getTimelineUtilityClass } from './timelineClasses';
14
+ import convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';
15
15
  import { jsx as _jsx } from "react/jsx-runtime";
16
16
  const useUtilityClasses = ownerState => {
17
17
  const {
@@ -19,7 +19,7 @@ const useUtilityClasses = ownerState => {
19
19
  classes
20
20
  } = ownerState;
21
21
  const slots = {
22
- root: ['root', position && `position${capitalize(position)}`]
22
+ root: ['root', position && convertTimelinePositionToClass(position)]
23
23
  };
24
24
  return composeClasses(slots, getTimelineUtilityClass, classes);
25
25
  };
@@ -30,7 +30,7 @@ const TimelineRoot = styled('ul', {
30
30
  const {
31
31
  ownerState
32
32
  } = props;
33
- return [styles.root, ownerState.position && styles[`position${capitalize(ownerState.position)}`]];
33
+ return [styles.root, ownerState.position && styles[convertTimelinePositionToClass(ownerState.position)]];
34
34
  }
35
35
  })({
36
36
  display: 'flex',
@@ -98,7 +98,7 @@ process.env.NODE_ENV !== "production" ? Timeline.propTypes /* remove-proptypes *
98
98
  * The position where the TimelineContent should appear relative to the time axis.
99
99
  * @default 'right'
100
100
  */
101
- position: PropTypes.oneOf(['alternate', 'left', 'right']),
101
+ position: PropTypes.oneOf(['alternate-reverse', 'alternate', 'left', 'right']),
102
102
  /**
103
103
  * The system prop that allows defining system overrides as well as additional CSS styles.
104
104
  */
@@ -3,5 +3,5 @@ import generateUtilityClasses from '@mui/material/generateUtilityClasses';
3
3
  export function getTimelineUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTimeline', slot);
5
5
  }
6
- const timelineClasses = generateUtilityClasses('MuiTimeline', ['root', 'positionLeft', 'positionRight', 'positionAlternate']);
6
+ const timelineClasses = generateUtilityClasses('MuiTimeline', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);
7
7
  export default timelineClasses;
@@ -4,12 +4,12 @@ const _excluded = ["className"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
- import { capitalize } from '@mui/material/utils';
8
7
  import { styled, useThemeProps } from '@mui/material/styles';
9
8
  import { unstable_composeClasses as composeClasses } from '@mui/base';
10
9
  import Typography from '@mui/material/Typography';
11
10
  import TimelineContext from '../Timeline/TimelineContext';
12
11
  import { getTimelineContentUtilityClass } from './timelineContentClasses';
12
+ import convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  const useUtilityClasses = ownerState => {
15
15
  const {
@@ -17,7 +17,7 @@ const useUtilityClasses = ownerState => {
17
17
  classes
18
18
  } = ownerState;
19
19
  const slots = {
20
- root: ['root', `position${capitalize(position)}`]
20
+ root: ['root', convertTimelinePositionToClass(position)]
21
21
  };
22
22
  return composeClasses(slots, getTimelineContentUtilityClass, classes);
23
23
  };
@@ -28,7 +28,7 @@ const TimelineContentRoot = styled(Typography, {
28
28
  const {
29
29
  ownerState
30
30
  } = props;
31
- return [styles.root, styles[`position${capitalize(ownerState.position)}`]];
31
+ return [styles.root, styles[convertTimelinePositionToClass(ownerState.position)]];
32
32
  }
33
33
  })(({
34
34
  ownerState
@@ -3,5 +3,5 @@ import generateUtilityClasses from '@mui/material/generateUtilityClasses';
3
3
  export function getTimelineContentUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTimelineContent', slot);
5
5
  }
6
- const timelineContentClasses = generateUtilityClasses('MuiTimelineContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate']);
6
+ const timelineContentClasses = generateUtilityClasses('MuiTimelineContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);
7
7
  export default timelineContentClasses;
@@ -4,13 +4,14 @@ const _excluded = ["position", "className"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
- import { capitalize, isMuiElement } from '@mui/material/utils';
7
+ import { isMuiElement } from '@mui/material/utils';
8
8
  import { styled, useThemeProps } from '@mui/material/styles';
9
9
  import { unstable_composeClasses as composeClasses } from '@mui/base';
10
10
  import { timelineContentClasses } from '../TimelineContent';
11
11
  import { timelineOppositeContentClasses } from '../TimelineOppositeContent';
12
12
  import TimelineContext from '../Timeline/TimelineContext';
13
13
  import { getTimelineItemUtilityClass } from './timelineItemClasses';
14
+ import convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';
14
15
  import { jsx as _jsx } from "react/jsx-runtime";
15
16
  const useUtilityClasses = ownerState => {
16
17
  const {
@@ -19,7 +20,7 @@ const useUtilityClasses = ownerState => {
19
20
  hasOppositeContent
20
21
  } = ownerState;
21
22
  const slots = {
22
- root: ['root', `position${capitalize(position)}`, !hasOppositeContent && 'missingOppositeContent']
23
+ root: ['root', convertTimelinePositionToClass(position), !hasOppositeContent && 'missingOppositeContent']
23
24
  };
24
25
  return composeClasses(slots, getTimelineItemUtilityClass, classes);
25
26
  };
@@ -30,7 +31,7 @@ const TimelineItemRoot = styled('li', {
30
31
  const {
31
32
  ownerState
32
33
  } = props;
33
- return [styles.root, styles[`position${capitalize(ownerState.position)}`]];
34
+ return [styles.root, styles[convertTimelinePositionToClass(ownerState.position)]];
34
35
  }
35
36
  })(({
36
37
  ownerState
@@ -41,8 +42,8 @@ const TimelineItemRoot = styled('li', {
41
42
  minHeight: 70
42
43
  }, ownerState.position === 'left' && {
43
44
  flexDirection: 'row-reverse'
44
- }, ownerState.position === 'alternate' && {
45
- '&:nth-of-type(even)': {
45
+ }, (ownerState.position === 'alternate' || ownerState.position === 'alternate-reverse') && {
46
+ [`&:nth-of-type(${ownerState.position === 'alternate' ? 'even' : 'odd'})`]: {
46
47
  flexDirection: 'row-reverse',
47
48
  [`& .${timelineContentClasses.root}`]: {
48
49
  textAlign: 'right'
@@ -114,7 +115,7 @@ process.env.NODE_ENV !== "production" ? TimelineItem.propTypes /* remove-proptyp
114
115
  /**
115
116
  * The position where the timeline's item should appear.
116
117
  */
117
- position: PropTypes.oneOf(['left', 'right']),
118
+ position: PropTypes.oneOf(['alternate-reverse', 'alternate', 'left', 'right']),
118
119
  /**
119
120
  * The system prop that allows defining system overrides as well as additional CSS styles.
120
121
  */
@@ -3,5 +3,5 @@ import generateUtilityClasses from '@mui/material/generateUtilityClasses';
3
3
  export function getTimelineItemUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTimelineItem', slot);
5
5
  }
6
- const timelineItemClasses = generateUtilityClasses('MuiTimelineItem', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'missingOppositeContent']);
6
+ const timelineItemClasses = generateUtilityClasses('MuiTimelineItem', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse', 'missingOppositeContent']);
7
7
  export default timelineItemClasses;
@@ -5,11 +5,11 @@ import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
7
  import { styled, useThemeProps } from '@mui/material/styles';
8
- import { capitalize } from '@mui/material/utils';
9
8
  import { unstable_composeClasses as composeClasses } from '@mui/base';
10
9
  import Typography from '@mui/material/Typography';
11
10
  import TimelineContext from '../Timeline/TimelineContext';
12
11
  import { getTimelineOppositeContentUtilityClass } from './timelineOppositeContentClasses';
12
+ import convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  const useUtilityClasses = ownerState => {
15
15
  const {
@@ -17,7 +17,7 @@ const useUtilityClasses = ownerState => {
17
17
  classes
18
18
  } = ownerState;
19
19
  const slots = {
20
- root: ['root', `position${capitalize(position)}`]
20
+ root: ['root', convertTimelinePositionToClass(position)]
21
21
  };
22
22
  return composeClasses(slots, getTimelineOppositeContentUtilityClass, classes);
23
23
  };
@@ -28,7 +28,7 @@ const TimelineOppositeContentRoot = styled(Typography, {
28
28
  const {
29
29
  ownerState
30
30
  } = props;
31
- return [styles.root, styles[`position${capitalize(ownerState.position)}`]];
31
+ return [styles.root, styles[convertTimelinePositionToClass(ownerState.position)]];
32
32
  }
33
33
  })(({
34
34
  ownerState
@@ -3,5 +3,5 @@ import generateUtilityClasses from '@mui/material/generateUtilityClasses';
3
3
  export function getTimelineOppositeContentUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTimelineOppositeContent', slot);
5
5
  }
6
- const timelineOppositeContentClasses = generateUtilityClasses('MuiTimelineOppositeContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate']);
6
+ const timelineOppositeContentClasses = generateUtilityClasses('MuiTimelineOppositeContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);
7
7
  export default timelineOppositeContentClasses;
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/lab v5.0.0-alpha.134
2
+ * @mui/lab v5.0.0-alpha.136
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -0,0 +1,4 @@
1
+ import { capitalize } from '@mui/material/utils';
2
+ export default function convertTimelinePositionToClass(position) {
3
+ return position === 'alternate-reverse' ? 'positionAlternateReverse' : `position${capitalize(position)}`;
4
+ }
@@ -231,19 +231,29 @@ const Masonry = /*#__PURE__*/React.forwardRef(function Masonry(inProps, ref) {
231
231
  });
232
232
  }
233
233
  };
234
- const observer = React.useRef(typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(handleResize));
235
- React.useEffect(() => {
236
- const resizeObserver = observer.current;
234
+ (0, _utils.unstable_useEnhancedEffect)(() => {
237
235
  // IE and old browsers are not supported
238
- if (resizeObserver === undefined) {
236
+ if (typeof ResizeObserver === 'undefined') {
239
237
  return undefined;
240
238
  }
239
+ let animationFrame;
240
+ const resizeObserver = new ResizeObserver(() => {
241
+ // see https://github.com/mui/material-ui/issues/36909
242
+ animationFrame = window.requestAnimationFrame(handleResize);
243
+ });
241
244
  if (masonryRef.current) {
242
245
  masonryRef.current.childNodes.forEach(childNode => {
243
246
  resizeObserver.observe(childNode);
244
247
  });
245
248
  }
246
- return () => resizeObserver ? resizeObserver.disconnect() : {};
249
+ return () => {
250
+ if (animationFrame) {
251
+ window.cancelAnimationFrame(animationFrame);
252
+ }
253
+ if (resizeObserver) {
254
+ resizeObserver.disconnect();
255
+ }
256
+ };
247
257
  }, [columns, spacing, children]);
248
258
  const handleRef = (0, _utils.unstable_useForkRef)(ref, masonryRef);
249
259
 
@@ -10,11 +10,11 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
- var _utils = require("@mui/material/utils");
14
13
  var _base = require("@mui/base");
15
14
  var _styles = require("@mui/material/styles");
16
15
  var _TimelineContext = _interopRequireDefault(require("./TimelineContext"));
17
16
  var _timelineClasses = require("./timelineClasses");
17
+ var _convertTimelinePositionToClass = _interopRequireDefault(require("../internal/convertTimelinePositionToClass"));
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
19
  const _excluded = ["position", "className"]; // eslint-disable-next-line no-restricted-imports -- importing types
20
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -25,7 +25,7 @@ const useUtilityClasses = ownerState => {
25
25
  classes
26
26
  } = ownerState;
27
27
  const slots = {
28
- root: ['root', position && `position${(0, _utils.capitalize)(position)}`]
28
+ root: ['root', position && (0, _convertTimelinePositionToClass.default)(position)]
29
29
  };
30
30
  return (0, _base.unstable_composeClasses)(slots, _timelineClasses.getTimelineUtilityClass, classes);
31
31
  };
@@ -36,7 +36,7 @@ const TimelineRoot = (0, _styles.styled)('ul', {
36
36
  const {
37
37
  ownerState
38
38
  } = props;
39
- return [styles.root, ownerState.position && styles[`position${(0, _utils.capitalize)(ownerState.position)}`]];
39
+ return [styles.root, ownerState.position && styles[(0, _convertTimelinePositionToClass.default)(ownerState.position)]];
40
40
  }
41
41
  })({
42
42
  display: 'flex',
@@ -104,7 +104,7 @@ process.env.NODE_ENV !== "production" ? Timeline.propTypes /* remove-proptypes *
104
104
  * The position where the TimelineContent should appear relative to the time axis.
105
105
  * @default 'right'
106
106
  */
107
- position: _propTypes.default.oneOf(['alternate', 'left', 'right']),
107
+ position: _propTypes.default.oneOf(['alternate-reverse', 'alternate', 'left', 'right']),
108
108
  /**
109
109
  * The system prop that allows defining system overrides as well as additional CSS styles.
110
110
  */
@@ -11,6 +11,6 @@ var _generateUtilityClasses = _interopRequireDefault(require("@mui/material/gene
11
11
  function getTimelineUtilityClass(slot) {
12
12
  return (0, _generateUtilityClass.default)('MuiTimeline', slot);
13
13
  }
14
- const timelineClasses = (0, _generateUtilityClasses.default)('MuiTimeline', ['root', 'positionLeft', 'positionRight', 'positionAlternate']);
14
+ const timelineClasses = (0, _generateUtilityClasses.default)('MuiTimeline', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);
15
15
  var _default = timelineClasses;
16
16
  exports.default = _default;