Spaces:
Sleeping
Sleeping
File size: 4,869 Bytes
56fda74 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
'use client';
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import _extends from "@babel/runtime/helpers/esm/extends";
const _excluded = ["children", "className", "component", "image", "src", "style"];
import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import chainPropTypes from '@mui/utils/chainPropTypes';
import composeClasses from '@mui/utils/composeClasses';
import { useDefaultProps } from '../DefaultPropsProvider';
import styled from '../styles/styled';
import { getCardMediaUtilityClass } from './cardMediaClasses';
import { jsx as _jsx } from "react/jsx-runtime";
const useUtilityClasses = ownerState => {
const {
classes,
isMediaComponent,
isImageComponent
} = ownerState;
const slots = {
root: ['root', isMediaComponent && 'media', isImageComponent && 'img']
};
return composeClasses(slots, getCardMediaUtilityClass, classes);
};
const CardMediaRoot = styled('div', {
name: 'MuiCardMedia',
slot: 'Root',
overridesResolver: (props, styles) => {
const {
ownerState
} = props;
const {
isMediaComponent,
isImageComponent
} = ownerState;
return [styles.root, isMediaComponent && styles.media, isImageComponent && styles.img];
}
})(({
ownerState
}) => _extends({
display: 'block',
backgroundSize: 'cover',
backgroundRepeat: 'no-repeat',
backgroundPosition: 'center'
}, ownerState.isMediaComponent && {
width: '100%'
}, ownerState.isImageComponent && {
// β οΈ object-fit is not supported by IE11.
objectFit: 'cover'
}));
const MEDIA_COMPONENTS = ['video', 'audio', 'picture', 'iframe', 'img'];
const IMAGE_COMPONENTS = ['picture', 'img'];
const CardMedia = /*#__PURE__*/React.forwardRef(function CardMedia(inProps, ref) {
const props = useDefaultProps({
props: inProps,
name: 'MuiCardMedia'
});
const {
children,
className,
component = 'div',
image,
src,
style
} = props,
other = _objectWithoutPropertiesLoose(props, _excluded);
const isMediaComponent = MEDIA_COMPONENTS.indexOf(component) !== -1;
const composedStyle = !isMediaComponent && image ? _extends({
backgroundImage: `url("${image}")`
}, style) : style;
const ownerState = _extends({}, props, {
component,
isMediaComponent,
isImageComponent: IMAGE_COMPONENTS.indexOf(component) !== -1
});
const classes = useUtilityClasses(ownerState);
return /*#__PURE__*/_jsx(CardMediaRoot, _extends({
className: clsx(classes.root, className),
as: component,
role: !isMediaComponent && image ? 'img' : undefined,
ref: ref,
style: composedStyle,
ownerState: ownerState,
src: isMediaComponent ? image || src : undefined
}, other, {
children: children
}));
});
process.env.NODE_ENV !== "production" ? CardMedia.propTypes /* remove-proptypes */ = {
// βββββββββββββββββββββββββββββββ Warning βββββββββββββββββββββββββββββββ
// β These PropTypes are generated from the TypeScript type definitions. β
// β To update them, edit the d.ts file and run `pnpm proptypes`. β
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
/**
* The content of the component.
*/
children: chainPropTypes(PropTypes.node, props => {
if (!props.children && !props.image && !props.src && !props.component) {
return new Error('MUI: Either `children`, `image`, `src` or `component` prop must be specified.');
}
return null;
}),
/**
* Override or extend the styles applied to the component.
*/
classes: PropTypes.object,
/**
* @ignore
*/
className: PropTypes.string,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: PropTypes.elementType,
/**
* Image to be displayed as a background image.
* Either `image` or `src` prop must be specified.
* Note that caller must specify height otherwise the image will not be visible.
*/
image: PropTypes.string,
/**
* An alias for `image` property.
* Available only with media components.
* Media components: `video`, `audio`, `picture`, `iframe`, `img`.
*/
src: PropTypes.string,
/**
* @ignore
*/
style: PropTypes.object,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
} : void 0;
export default CardMedia; |