UNPKG

@wordpress/components

Version:
67 lines (53 loc) 1.89 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.withNext = withNext; var _element = require("@wordpress/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _contextConnect = require("./context-connect"); var _useContextSystem = require("./use-context-system"); /** * Internal dependencies */ /** * @template {{}} TCurrentProps * @template {{}} TNextProps * @param {import('react').ForwardRefExoticComponent<TCurrentProps>} CurrentComponent * @param {import('react').ComponentType<TNextProps>} NextComponent * @param {string} namespace * @param {(props: TCurrentProps) => TNextProps} adapter */ function withNext(CurrentComponent, NextComponent = () => null, namespace = 'Component', adapter = p => /** @type {any} */ p) { if (process.env.COMPONENT_SYSTEM_PHASE === 1) { /* eslint-disable jsdoc/no-undefined-types */ /** * @param {TCurrentProps} props * @param {import('react').Ref<any>} ref */ /* eslint-enable jsdoc/no-undefined-types */ const WrappedComponent = (props, ref) => { // @ts-ignore const { __unstableVersion, ...otherProps } = (0, _useContextSystem.useContextSystem)(props, namespace); if (__unstableVersion === 'next') { // @ts-ignore const nextProps = adapter(otherProps); return (0, _element.createElement)(NextComponent, (0, _extends2.default)({}, nextProps, { ref: ref })); } return (0, _element.createElement)(CurrentComponent, (0, _extends2.default)({}, props, { ref: ref })); }; return (0, _contextConnect.contextConnect)(WrappedComponent, namespace); } return CurrentComponent; } //# sourceMappingURL=with-next.js.map