UNPKG

5.54 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _clsx = _interopRequireDefault(require("clsx"));
12var _propTypes = _interopRequireDefault(require("prop-types"));
13var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
15var _styled = _interopRequireDefault(require("../styles/styled"));
16var _useTheme = _interopRequireDefault(require("../styles/useTheme"));
17var _hiddenCssClasses = require("./hiddenCssClasses");
18var _jsxRuntime = require("react/jsx-runtime");
19const useUtilityClasses = ownerState => {
20 const {
21 classes,
22 breakpoints
23 } = ownerState;
24 const slots = {
25 root: ['root', ...breakpoints.map(({
26 breakpoint,
27 dir
28 }) => {
29 return dir === 'only' ? `${dir}${(0, _capitalize.default)(breakpoint)}` : `${breakpoint}${(0, _capitalize.default)(dir)}`;
30 })]
31 };
32 return (0, _composeClasses.default)(slots, _hiddenCssClasses.getHiddenCssUtilityClass, classes);
33};
34
35// FIXME(romgrk): Can't use memoTheme here, should we memo also on ownerState?
36const HiddenCssRoot = (0, _styled.default)('div', {
37 name: 'PrivateHiddenCss',
38 slot: 'Root'
39})(({
40 theme,
41 ownerState
42}) => {
43 const hidden = {
44 display: 'none'
45 };
46 return {
47 ...ownerState.breakpoints.map(({
48 breakpoint,
49 dir
50 }) => {
51 if (dir === 'only') {
52 return {
53 [theme.breakpoints.only(breakpoint)]: hidden
54 };
55 }
56 return dir === 'up' ? {
57 [theme.breakpoints.up(breakpoint)]: hidden
58 } : {
59 [theme.breakpoints.down(breakpoint)]: hidden
60 };
61 }).reduce((r, o) => {
62 Object.keys(o).forEach(k => {
63 r[k] = o[k];
64 });
65 return r;
66 }, {})
67 };
68});
69
70/**
71 * @ignore - internal component.
72 */
73function HiddenCss(props) {
74 const {
75 children,
76 className,
77 only,
78 ...other
79 } = props;
80 const theme = (0, _useTheme.default)();
81 if (process.env.NODE_ENV !== 'production') {
82 const unknownProps = Object.keys(other).filter(propName => {
83 const isUndeclaredBreakpoint = !theme.breakpoints.keys.some(breakpoint => {
84 return `${breakpoint}Up` === propName || `${breakpoint}Down` === propName;
85 });
86 return !['classes', 'theme', 'isRtl', 'sx'].includes(propName) && isUndeclaredBreakpoint;
87 });
88 if (unknownProps.length > 0) {
89 console.error(`MUI: Unsupported props received by \`<Hidden implementation="css" />\`: ${unknownProps.join(', ')}. Did you forget to wrap this component in a ThemeProvider declaring these breakpoints?`);
90 }
91 }
92 const breakpoints = [];
93 for (let i = 0; i < theme.breakpoints.keys.length; i += 1) {
94 const breakpoint = theme.breakpoints.keys[i];
95 const breakpointUp = other[`${breakpoint}Up`];
96 const breakpointDown = other[`${breakpoint}Down`];
97 if (breakpointUp) {
98 breakpoints.push({
99 breakpoint,
100 dir: 'up'
101 });
102 }
103 if (breakpointDown) {
104 breakpoints.push({
105 breakpoint,
106 dir: 'down'
107 });
108 }
109 }
110 if (only) {
111 const onlyBreakpoints = Array.isArray(only) ? only : [only];
112 onlyBreakpoints.forEach(breakpoint => {
113 breakpoints.push({
114 breakpoint,
115 dir: 'only'
116 });
117 });
118 }
119 const ownerState = {
120 ...props,
121 breakpoints
122 };
123 const classes = useUtilityClasses(ownerState);
124 return /*#__PURE__*/(0, _jsxRuntime.jsx)(HiddenCssRoot, {
125 className: (0, _clsx.default)(classes.root, className),
126 ownerState: ownerState,
127 children: children
128 });
129}
130process.env.NODE_ENV !== "production" ? HiddenCss.propTypes = {
131 /**
132 * The content of the component.
133 */
134 children: _propTypes.default.node,
135 /**
136 * @ignore
137 */
138 className: _propTypes.default.string,
139 /**
140 * Specify which implementation to use. 'js' is the default, 'css' works better for
141 * server-side rendering.
142 */
143 implementation: _propTypes.default.oneOf(['js', 'css']),
144 /**
145 * If `true`, screens this size and down are hidden.
146 */
147 lgDown: _propTypes.default.bool,
148 /**
149 * If `true`, screens this size and up are hidden.
150 */
151 lgUp: _propTypes.default.bool,
152 /**
153 * If `true`, screens this size and down are hidden.
154 */
155 mdDown: _propTypes.default.bool,
156 /**
157 * If `true`, screens this size and up are hidden.
158 */
159 mdUp: _propTypes.default.bool,
160 /**
161 * Hide the given breakpoint(s).
162 */
163 only: _propTypes.default.oneOfType([_propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl']), _propTypes.default.arrayOf(_propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl']))]),
164 /**
165 * If `true`, screens this size and down are hidden.
166 */
167 smDown: _propTypes.default.bool,
168 /**
169 * If `true`, screens this size and up are hidden.
170 */
171 smUp: _propTypes.default.bool,
172 /**
173 * If `true`, screens this size and down are hidden.
174 */
175 xlDown: _propTypes.default.bool,
176 /**
177 * If `true`, screens this size and up are hidden.
178 */
179 xlUp: _propTypes.default.bool,
180 /**
181 * If `true`, screens this size and down are hidden.
182 */
183 xsDown: _propTypes.default.bool,
184 /**
185 * If `true`, screens this size and up are hidden.
186 */
187 xsUp: _propTypes.default.bool
188} : void 0;
189var _default = exports.default = HiddenCss;
\No newline at end of file