UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

59 lines (53 loc) 2.35 kB
'use strict'; var clsx = require('clsx'); var React = require('react'); require('@primer/behaviors/utils'); require('@primer/behaviors'); var useRefObjectAsForwardedRef = require('../hooks/useRefObjectAsForwardedRef.js'); var Heading_module = require('./Heading.module.css.js'); var Box = require('../Box/Box.js'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefault(React); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } const Heading = /*#__PURE__*/React.forwardRef(({ as: Component = 'h2', className, variant, ...props }, forwardedRef) => { const innerRef = React__default.default.useRef(null); useRefObjectAsForwardedRef.useRefObjectAsForwardedRef(forwardedRef, innerRef); if (process.env.NODE_ENV !== "production") { /** * The Linter yells because it thinks this conditionally calls an effect, * but since this is a compile-time flag and not a runtime conditional * this is safe, and ensures the entire effect is kept out of prod builds * shaving precious bytes from the output, and avoiding mounting a noop effect */ // eslint-disable-next-line react-hooks/rules-of-hooks React.useEffect(() => { if (innerRef.current && !(innerRef.current instanceof HTMLHeadingElement)) { // eslint-disable-next-line no-console console.warn('This Heading component should be an instanceof of h1-h6'); } }, [innerRef]); } if (props.sx) { return /*#__PURE__*/React__default.default.createElement(Box, _extends({ as: Component, className: clsx.clsx(className, Heading_module.Heading), "data-variant": variant }, props, { // @ts-ignore temporary disable as we migrate to css modules, until we remove PolymorphicForwardRefComponent ref: innerRef })); } return /*#__PURE__*/React__default.default.createElement(Component, _extends({ className: clsx.clsx(className, Heading_module.Heading), "data-variant": variant }, props, { ref: innerRef })); }); Heading.displayName = 'Heading'; module.exports = Heading;