UNPKG

@mui/material

Version:

Quickly build beautiful React apps. MUI is a simple and customizable component library to build faster, beautiful, and more accessible React applications. Follow your own design system, or start with Material Design.

182 lines (156 loc) 7.02 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var React = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _clsx = _interopRequireDefault(require("clsx")); var _base = require("@mui/base"); var _styled = _interopRequireDefault(require("../styles/styled")); var _useThemeProps = _interopRequireDefault(require("../styles/useThemeProps")); var _capitalize = _interopRequireDefault(require("../utils/capitalize")); var _iconClasses = require("./iconClasses"); var _jsxRuntime = require("react/jsx-runtime"); const _excluded = ["baseClassName", "className", "color", "component", "fontSize"]; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const useUtilityClasses = ownerState => { const { color, fontSize, classes } = ownerState; const slots = { root: ['root', color !== 'inherit' && `color${(0, _capitalize.default)(color)}`, `fontSize${(0, _capitalize.default)(fontSize)}`] }; return (0, _base.unstable_composeClasses)(slots, _iconClasses.getIconUtilityClass, classes); }; const IconRoot = (0, _styled.default)('span', { name: 'MuiIcon', slot: 'Root', overridesResolver: (props, styles) => { const { ownerState } = props; return [styles.root, ownerState.color !== 'inherit' && styles[`color${(0, _capitalize.default)(ownerState.color)}`], styles[`fontSize${(0, _capitalize.default)(ownerState.fontSize)}`]]; } })(({ theme, ownerState }) => ({ userSelect: 'none', width: '1em', height: '1em', // Chrome fix for https://bugs.chromium.org/p/chromium/issues/detail?id=820541 // To remove at some point. overflow: 'hidden', display: 'inline-block', // allow overflow hidden to take action textAlign: 'center', // support non-square icon flexShrink: 0, fontSize: { inherit: 'inherit', small: theme.typography.pxToRem(20), medium: theme.typography.pxToRem(24), large: theme.typography.pxToRem(36) }[ownerState.fontSize], // TODO v5 deprecate, v6 remove for sx color: { primary: theme.palette.primary.main, secondary: theme.palette.secondary.main, info: theme.palette.info.main, success: theme.palette.success.main, warning: theme.palette.warning.main, action: theme.palette.action.active, error: theme.palette.error.main, disabled: theme.palette.action.disabled, inherit: undefined }[ownerState.color] })); const Icon = /*#__PURE__*/React.forwardRef(function Icon(inProps, ref) { const props = (0, _useThemeProps.default)({ props: inProps, name: 'MuiIcon' }); const { baseClassName = 'material-icons', className, color = 'inherit', component: Component = 'span', fontSize = 'medium' } = props, other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded); const ownerState = (0, _extends2.default)({}, props, { baseClassName, color, component: Component, fontSize }); const classes = useUtilityClasses(ownerState); return /*#__PURE__*/(0, _jsxRuntime.jsx)(IconRoot, (0, _extends2.default)({ as: Component, className: (0, _clsx.default)(baseClassName, // Prevent the translation of the text content. // The font relies on the exact text content to render the icon. 'notranslate', classes.root, className), ownerState: ownerState, "aria-hidden": true, ref: ref }, other)); }); process.env.NODE_ENV !== "production" ? Icon.propTypes /* remove-proptypes */ = { // ----------------------------- Warning -------------------------------- // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the d.ts file and run "yarn proptypes" | // ---------------------------------------------------------------------- /** * The base class applied to the icon. Defaults to 'material-icons', but can be changed to any * other base class that suits the icon font you're using (e.g. material-icons-rounded, fas, etc). * @default 'material-icons' */ baseClassName: _propTypes.default.string, /** * The name of the icon font ligature. */ children: _propTypes.default.node, /** * Override or extend the styles applied to the component. */ classes: _propTypes.default.object, /** * @ignore */ className: _propTypes.default.string, /** * The color of the component. It supports those theme colors that make sense for this component. * @default 'inherit' */ color: _propTypes.default /* @typescript-to-proptypes-ignore */ .oneOfType([_propTypes.default.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), _propTypes.default.string]), /** * The component used for the root node. * Either a string to use a HTML element or a component. */ component: _propTypes.default.elementType, /** * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size. * @default 'medium' */ fontSize: _propTypes.default /* @typescript-to-proptypes-ignore */ .oneOfType([_propTypes.default.oneOf(['inherit', 'large', 'medium', 'small']), _propTypes.default.string]), /** * The system prop that allows defining system overrides as well as additional CSS styles. */ 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]) } : void 0; Icon.muiName = 'Icon'; var _default = Icon; exports.default = _default;