UNPKG

@mui/material

Version:

React components that implement Google's Material Design.

204 lines (202 loc) 8.28 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TypographyRoot = void 0; var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var React = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _clsx = _interopRequireDefault(require("clsx")); var _system = require("@mui/system"); var _base = require("@mui/base"); var _styled = _interopRequireDefault(require("../styles/styled")); var _useThemeProps = _interopRequireDefault(require("../styles/useThemeProps")); var _capitalize = _interopRequireDefault(require("../utils/capitalize")); var _typographyClasses = require("./typographyClasses"); var _jsxRuntime = require("react/jsx-runtime"); const _excluded = ["align", "className", "component", "gutterBottom", "noWrap", "paragraph", "variant", "variantMapping"]; 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 { align, gutterBottom, noWrap, paragraph, variant, classes } = ownerState; const slots = { root: ['root', variant, ownerState.align !== 'inherit' && `align${(0, _capitalize.default)(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph'] }; return (0, _base.unstable_composeClasses)(slots, _typographyClasses.getTypographyUtilityClass, classes); }; const TypographyRoot = (0, _styled.default)('span', { name: 'MuiTypography', slot: 'Root', overridesResolver: (props, styles) => { const { ownerState } = props; return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${(0, _capitalize.default)(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph]; } })(({ theme, ownerState }) => (0, _extends2.default)({ margin: 0 }, ownerState.variant && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && { textAlign: ownerState.align }, ownerState.noWrap && { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }, ownerState.gutterBottom && { marginBottom: '0.35em' }, ownerState.paragraph && { marginBottom: 16 })); exports.TypographyRoot = TypographyRoot; const defaultVariantMapping = { h1: 'h1', h2: 'h2', h3: 'h3', h4: 'h4', h5: 'h5', h6: 'h6', subtitle1: 'h6', subtitle2: 'h6', body1: 'p', body2: 'p', inherit: 'p' }; // TODO v6: deprecate these color values in v5.x and remove the transformation in v6 const colorTransformations = { primary: 'primary.main', textPrimary: 'text.primary', secondary: 'secondary.main', textSecondary: 'text.secondary', error: 'error.main' }; const transformDeprecatedColors = color => { return colorTransformations[color] || color; }; const Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) { const themeProps = (0, _useThemeProps.default)({ props: inProps, name: 'MuiTypography' }); const color = transformDeprecatedColors(themeProps.color); const props = (0, _system.unstable_extendSxProp)((0, _extends2.default)({}, themeProps, { color })); const { align = 'inherit', className, component, gutterBottom = false, noWrap = false, paragraph = false, variant = 'body1', variantMapping = defaultVariantMapping } = props, other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded); const ownerState = (0, _extends2.default)({}, props, { align, color, className, component, gutterBottom, noWrap, paragraph, variant, variantMapping }); const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span'; const classes = useUtilityClasses(ownerState); return /*#__PURE__*/(0, _jsxRuntime.jsx)(TypographyRoot, (0, _extends2.default)({ as: Component, ref: ref, ownerState: ownerState, className: (0, _clsx.default)(classes.root, className) }, other)); }); process.env.NODE_ENV !== "production" ? Typography.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" | // ---------------------------------------------------------------------- /** * Set the text-align on the component. * @default 'inherit' */ align: _propTypes.default.oneOf(['center', 'inherit', 'justify', 'left', 'right']), /** * The content of the component. */ children: _propTypes.default.node, /** * Override or extend the styles applied to the component. */ classes: _propTypes.default.object, /** * @ignore */ className: _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, /** * If `true`, the text will have a bottom margin. * @default false */ gutterBottom: _propTypes.default.bool, /** * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis. * * Note that text overflow can only happen with block or inline-block level elements * (the element needs to have a width in order to overflow). * @default false */ noWrap: _propTypes.default.bool, /** * If `true`, the element will be a paragraph element. * @default false */ paragraph: _propTypes.default.bool, /** * 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]), /** * Applies the theme typography styles. * @default 'body1' */ variant: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), _propTypes.default.string]), /** * The component maps the variant prop to a range of different HTML element types. * For instance, subtitle1 to `<h6>`. * If you wish to change that mapping, you can provide your own. * Alternatively, you can use the `component` prop. * @default { * h1: 'h1', * h2: 'h2', * h3: 'h3', * h4: 'h4', * h5: 'h5', * h6: 'h6', * subtitle1: 'h6', * subtitle2: 'h6', * body1: 'p', * body2: 'p', * inherit: 'p', * } */ variantMapping: _propTypes.default /* @typescript-to-proptypes-ignore */.object } : void 0; var _default = Typography; exports.default = _default;