UNPKG

5.26 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 _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _chainPropTypes = _interopRequireDefault(require("@mui/utils/chainPropTypes"));
14var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15var _zeroStyled = require("../zero-styled");
16var _DefaultPropsProvider = require("../DefaultPropsProvider");
17var _cardMediaClasses = require("./cardMediaClasses");
18var _jsxRuntime = require("react/jsx-runtime");
19const useUtilityClasses = ownerState => {
20 const {
21 classes,
22 isMediaComponent,
23 isImageComponent
24 } = ownerState;
25 const slots = {
26 root: ['root', isMediaComponent && 'media', isImageComponent && 'img']
27 };
28 return (0, _composeClasses.default)(slots, _cardMediaClasses.getCardMediaUtilityClass, classes);
29};
30const CardMediaRoot = (0, _zeroStyled.styled)('div', {
31 name: 'MuiCardMedia',
32 slot: 'Root',
33 overridesResolver: (props, styles) => {
34 const {
35 ownerState
36 } = props;
37 const {
38 isMediaComponent,
39 isImageComponent
40 } = ownerState;
41 return [styles.root, isMediaComponent && styles.media, isImageComponent && styles.img];
42 }
43})({
44 display: 'block',
45 backgroundSize: 'cover',
46 backgroundRepeat: 'no-repeat',
47 backgroundPosition: 'center',
48 variants: [{
49 props: {
50 isMediaComponent: true
51 },
52 style: {
53 width: '100%'
54 }
55 }, {
56 props: {
57 isImageComponent: true
58 },
59 style: {
60 objectFit: 'cover'
61 }
62 }]
63});
64const MEDIA_COMPONENTS = ['video', 'audio', 'picture', 'iframe', 'img'];
65const IMAGE_COMPONENTS = ['picture', 'img'];
66const CardMedia = /*#__PURE__*/React.forwardRef(function CardMedia(inProps, ref) {
67 const props = (0, _DefaultPropsProvider.useDefaultProps)({
68 props: inProps,
69 name: 'MuiCardMedia'
70 });
71 const {
72 children,
73 className,
74 component = 'div',
75 image,
76 src,
77 style,
78 ...other
79 } = props;
80 const isMediaComponent = MEDIA_COMPONENTS.includes(component);
81 const composedStyle = !isMediaComponent && image ? {
82 backgroundImage: `url("${image}")`,
83 ...style
84 } : style;
85 const ownerState = {
86 ...props,
87 component,
88 isMediaComponent,
89 isImageComponent: IMAGE_COMPONENTS.includes(component)
90 };
91 const classes = useUtilityClasses(ownerState);
92 return /*#__PURE__*/(0, _jsxRuntime.jsx)(CardMediaRoot, {
93 className: (0, _clsx.default)(classes.root, className),
94 as: component,
95 role: !isMediaComponent && image ? 'img' : undefined,
96 ref: ref,
97 style: composedStyle,
98 ownerState: ownerState,
99 src: isMediaComponent ? image || src : undefined,
100 ...other,
101 children: children
102 });
103});
104process.env.NODE_ENV !== "production" ? CardMedia.propTypes /* remove-proptypes */ = {
105 // ┌────────────────────────────── Warning ──────────────────────────────┐
106 // │ These PropTypes are generated from the TypeScript type definitions. │
107 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
108 // └─────────────────────────────────────────────────────────────────────┘
109 /**
110 * The content of the component.
111 */
112 children: (0, _chainPropTypes.default)(_propTypes.default.node, props => {
113 if (!props.children && !props.image && !props.src && !props.component) {
114 return new Error('MUI: Either `children`, `image`, `src` or `component` prop must be specified.');
115 }
116 return null;
117 }),
118 /**
119 * Override or extend the styles applied to the component.
120 */
121 classes: _propTypes.default.object,
122 /**
123 * @ignore
124 */
125 className: _propTypes.default.string,
126 /**
127 * The component used for the root node.
128 * Either a string to use a HTML element or a component.
129 */
130 component: _propTypes.default.elementType,
131 /**
132 * Image to be displayed as a background image.
133 * Either `image` or `src` prop must be specified.
134 * Note that caller must specify height otherwise the image will not be visible.
135 */
136 image: _propTypes.default.string,
137 /**
138 * An alias for `image` property.
139 * Available only with media components.
140 * Media components: `video`, `audio`, `picture`, `iframe`, `img`.
141 */
142 src: _propTypes.default.string,
143 /**
144 * @ignore
145 */
146 style: _propTypes.default.object,
147 /**
148 * The system prop that allows defining system overrides as well as additional CSS styles.
149 */
150 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])
151} : void 0;
152var _default = exports.default = CardMedia;
\No newline at end of file