UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

75 lines (74 loc) 2.36 kB
"use client"; import _extends from "@babel/runtime-corejs3/helpers/esm/extends"; import _pushInstanceProperty from "core-js-pure/stable/instance/push.js"; import React, { createContext, useContext } from 'react'; import classnames from 'classnames'; import Typography, { TypographyContext } from "./Typography.js"; function P(props) { const { remainingModifiers, element = 'p', className, proseMaxWidth: proseMaxWidthProp, ...rest } = handleDeprecatedProps(props); const paragraphContext = useContext(ParagraphContext); const { proseMaxWidth: proseMaxWidthContext } = useContext(TypographyContext); const proseMaxWidth = proseMaxWidthProp !== null && proseMaxWidthProp !== void 0 ? proseMaxWidthProp : proseMaxWidthContext; const deprecatedModifierString = remainingModifiers.reduce((acc, cur) => { return `${acc} dnb-p--${cur}`; }, ''); return React.createElement(ParagraphContext.Provider, { value: { isNested: true } }, React.createElement(Typography, _extends({ element: element === 'p' && paragraphContext !== null && paragraphContext !== void 0 && paragraphContext.isNested ? 'span' : element, className: classnames('dnb-p', deprecatedModifierString, className), proseMaxWidth: proseMaxWidth }, rest))); } const handleDeprecatedProps = ({ weight, size, modifier, bold, medium, ...rest }) => { let oldWeight; let oldSize; const allModifiers = [bold && 'bold', medium && 'medium']; if (modifier) { modifier.split(/\s/g).forEach(modifier => _pushInstanceProperty(allModifiers).call(allModifiers, modifier)); } const remainingModifiers = allModifiers.filter(cur => { if (!cur) { return false; } if (['x-small'].includes(cur)) { oldSize = 'x-small'; } else if (['small'].includes(cur)) { oldSize = oldSize || 'small'; } else if (['medium'].includes(cur)) { oldWeight = oldWeight || 'medium'; } else if (['bold'].includes(cur)) { oldWeight = 'bold'; } else { return true; } return false; }, []); return { weight: weight || oldWeight, size: oldSize && size !== 'x-small' ? oldSize : size, remainingModifiers, ...rest }; }; P._supportsSpacingProps = true; export default P; export const ParagraphContext = createContext(undefined); //# sourceMappingURL=P.js.map