1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
4 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.isWidthUp = exports.isWidthDown = exports.default = void 0;
|
9 | var React = _interopRequireWildcard(require("react"));
|
10 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
11 | var _getDisplayName = _interopRequireDefault(require("@mui/utils/getDisplayName"));
|
12 | var _useThemeProps = require("@mui/system/useThemeProps");
|
13 | var _useTheme = _interopRequireDefault(require("../styles/useTheme"));
|
14 | var _useEnhancedEffect = _interopRequireDefault(require("../utils/useEnhancedEffect"));
|
15 | var _useMediaQuery = _interopRequireDefault(require("../useMediaQuery"));
|
16 | var _jsxRuntime = require("react/jsx-runtime");
|
17 | const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];
|
18 |
|
19 |
|
20 | const isWidthUp = (breakpoint, width, inclusive = true) => {
|
21 | if (inclusive) {
|
22 | return breakpointKeys.indexOf(breakpoint) <= breakpointKeys.indexOf(width);
|
23 | }
|
24 | return breakpointKeys.indexOf(breakpoint) < breakpointKeys.indexOf(width);
|
25 | };
|
26 |
|
27 |
|
28 | exports.isWidthUp = isWidthUp;
|
29 | const isWidthDown = (breakpoint, width, inclusive = false) => {
|
30 | if (inclusive) {
|
31 | return breakpointKeys.indexOf(width) <= breakpointKeys.indexOf(breakpoint);
|
32 | }
|
33 | return breakpointKeys.indexOf(width) < breakpointKeys.indexOf(breakpoint);
|
34 | };
|
35 | exports.isWidthDown = isWidthDown;
|
36 | const withWidth = (options = {}) => Component => {
|
37 | const {
|
38 | withTheme: withThemeOption = false,
|
39 | noSSR = false,
|
40 | initialWidth: initialWidthOption
|
41 | } = options;
|
42 | function WithWidth(props) {
|
43 | const contextTheme = (0, _useTheme.default)();
|
44 | const theme = props.theme || contextTheme;
|
45 | const {
|
46 | initialWidth,
|
47 | width,
|
48 | ...other
|
49 | } = (0, _useThemeProps.getThemeProps)({
|
50 | theme,
|
51 | name: 'MuiWithWidth',
|
52 | props
|
53 | });
|
54 | const [mountedState, setMountedState] = React.useState(false);
|
55 | (0, _useEnhancedEffect.default)(() => {
|
56 | setMountedState(true);
|
57 | }, []);
|
58 |
|
59 | |
60 |
|
61 |
|
62 |
|
63 |
|
64 | const keys = theme.breakpoints.keys.slice().reverse();
|
65 | const widthComputed = keys.reduce((output, key) => {
|
66 |
|
67 |
|
68 | const matches = (0, _useMediaQuery.default)(theme.breakpoints.up(key));
|
69 | return !output && matches ? key : output;
|
70 | }, null);
|
71 | const more = {
|
72 | width: width || (mountedState || noSSR ? widthComputed : undefined) || initialWidth || initialWidthOption,
|
73 | ...(withThemeOption ? {
|
74 | theme
|
75 | } : {}),
|
76 | ...other
|
77 | };
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 | if (more.width === undefined) {
|
86 | return null;
|
87 | }
|
88 | return (0, _jsxRuntime.jsx)(Component, {
|
89 | ...more
|
90 | });
|
91 | }
|
92 | process.env.NODE_ENV !== "production" ? WithWidth.propTypes = {
|
93 | |
94 |
|
95 |
|
96 |
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 | initialWidth: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
|
103 | |
104 |
|
105 |
|
106 | theme: _propTypes.default.object,
|
107 | |
108 |
|
109 |
|
110 | width: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl'])
|
111 | } : void 0;
|
112 | if (process.env.NODE_ENV !== 'production') {
|
113 | WithWidth.displayName = `WithWidth(${(0, _getDisplayName.default)(Component)})`;
|
114 | }
|
115 | return WithWidth;
|
116 | };
|
117 | var _default = exports.default = withWidth; |
\ | No newline at end of file |