UNPKG

6.26 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
11var _integerPropType = _interopRequireDefault(require("@mui/utils/integerPropType"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _propTypes = _interopRequireDefault(require("prop-types"));
14var React = _interopRequireWildcard(require("react"));
15var _reactIs = require("react-is");
16var _ImageListContext = _interopRequireDefault(require("../ImageList/ImageListContext"));
17var _zeroStyled = require("../zero-styled");
18var _DefaultPropsProvider = require("../DefaultPropsProvider");
19var _isMuiElement = _interopRequireDefault(require("../utils/isMuiElement"));
20var _imageListItemClasses = _interopRequireWildcard(require("./imageListItemClasses"));
21var _jsxRuntime = require("react/jsx-runtime");
22const useUtilityClasses = ownerState => {
23 const {
24 classes,
25 variant
26 } = ownerState;
27 const slots = {
28 root: ['root', variant],
29 img: ['img']
30 };
31 return (0, _composeClasses.default)(slots, _imageListItemClasses.getImageListItemUtilityClass, classes);
32};
33const ImageListItemRoot = (0, _zeroStyled.styled)('li', {
34 name: 'MuiImageListItem',
35 slot: 'Root',
36 overridesResolver: (props, styles) => {
37 const {
38 ownerState
39 } = props;
40 return [{
41 [`& .${_imageListItemClasses.default.img}`]: styles.img
42 }, styles.root, styles[ownerState.variant]];
43 }
44})({
45 display: 'block',
46 position: 'relative',
47 [`& .${_imageListItemClasses.default.img}`]: {
48 objectFit: 'cover',
49 width: '100%',
50 height: '100%',
51 display: 'block'
52 },
53 variants: [{
54 props: {
55 variant: 'standard'
56 },
57 style: {
58 // For titlebar under list item
59 display: 'flex',
60 flexDirection: 'column'
61 }
62 }, {
63 props: {
64 variant: 'woven'
65 },
66 style: {
67 height: '100%',
68 alignSelf: 'center',
69 '&:nth-of-type(even)': {
70 height: '70%'
71 }
72 }
73 }, {
74 props: {
75 variant: 'standard'
76 },
77 style: {
78 [`& .${_imageListItemClasses.default.img}`]: {
79 height: 'auto',
80 flexGrow: 1
81 }
82 }
83 }]
84});
85const ImageListItem = /*#__PURE__*/React.forwardRef(function ImageListItem(inProps, ref) {
86 const props = (0, _DefaultPropsProvider.useDefaultProps)({
87 props: inProps,
88 name: 'MuiImageListItem'
89 });
90
91 // TODO: - Use jsdoc @default?: "cols rows default values are for docs only"
92 const {
93 children,
94 className,
95 cols = 1,
96 component = 'li',
97 rows = 1,
98 style,
99 ...other
100 } = props;
101 const {
102 rowHeight = 'auto',
103 gap,
104 variant
105 } = React.useContext(_ImageListContext.default);
106 let height = 'auto';
107 if (variant === 'woven') {
108 height = undefined;
109 } else if (rowHeight !== 'auto') {
110 height = rowHeight * rows + gap * (rows - 1);
111 }
112 const ownerState = {
113 ...props,
114 cols,
115 component,
116 gap,
117 rowHeight,
118 rows,
119 variant
120 };
121 const classes = useUtilityClasses(ownerState);
122 return /*#__PURE__*/(0, _jsxRuntime.jsx)(ImageListItemRoot, {
123 as: component,
124 className: (0, _clsx.default)(classes.root, classes[variant], className),
125 ref: ref,
126 style: {
127 height,
128 gridColumnEnd: variant !== 'masonry' ? `span ${cols}` : undefined,
129 gridRowEnd: variant !== 'masonry' ? `span ${rows}` : undefined,
130 marginBottom: variant === 'masonry' ? gap : undefined,
131 breakInside: variant === 'masonry' ? 'avoid' : undefined,
132 ...style
133 },
134 ownerState: ownerState,
135 ...other,
136 children: React.Children.map(children, child => {
137 if (! /*#__PURE__*/React.isValidElement(child)) {
138 return null;
139 }
140 if (process.env.NODE_ENV !== 'production') {
141 if ((0, _reactIs.isFragment)(child)) {
142 console.error(["MUI: The ImageListItem component doesn't accept a Fragment as a child.", 'Consider providing an array instead.'].join('\n'));
143 }
144 }
145 if (child.type === 'img' || (0, _isMuiElement.default)(child, ['Image'])) {
146 return /*#__PURE__*/React.cloneElement(child, {
147 className: (0, _clsx.default)(classes.img, child.props.className)
148 });
149 }
150 return child;
151 })
152 });
153});
154process.env.NODE_ENV !== "production" ? ImageListItem.propTypes /* remove-proptypes */ = {
155 // ┌────────────────────────────── Warning ──────────────────────────────┐
156 // │ These PropTypes are generated from the TypeScript type definitions. │
157 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
158 // └─────────────────────────────────────────────────────────────────────┘
159 /**
160 * The content of the component, normally an `<img>`.
161 */
162 children: _propTypes.default.node,
163 /**
164 * Override or extend the styles applied to the component.
165 */
166 classes: _propTypes.default.object,
167 /**
168 * @ignore
169 */
170 className: _propTypes.default.string,
171 /**
172 * Width of the item in number of grid columns.
173 * @default 1
174 */
175 cols: _integerPropType.default,
176 /**
177 * The component used for the root node.
178 * Either a string to use a HTML element or a component.
179 */
180 component: _propTypes.default.elementType,
181 /**
182 * Height of the item in number of grid rows.
183 * @default 1
184 */
185 rows: _integerPropType.default,
186 /**
187 * @ignore
188 */
189 style: _propTypes.default.object,
190 /**
191 * The system prop that allows defining system overrides as well as additional CSS styles.
192 */
193 sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
194} : void 0;
195var _default = exports.default = ImageListItem;
\No newline at end of file