@wordpress/components
Version:
UI components for WordPress.
67 lines (53 loc) • 1.89 kB
JavaScript
;
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