UNPKG

@wordpress/components

Version:
55 lines (47 loc) 1.58 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { createElement } from "@wordpress/element"; /** * Internal dependencies */ import { contextConnect } from './context-connect'; import { useContextSystem } from './use-context-system'; /** * @template {{}} TCurrentProps * @template {{}} TNextProps * @param {import('react').ForwardRefExoticComponent<TCurrentProps>} CurrentComponent * @param {import('react').ComponentType<TNextProps>} NextComponent * @param {string} namespace * @param {(props: TCurrentProps) => TNextProps} adapter */ export 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 } = useContextSystem(props, namespace); if (__unstableVersion === 'next') { // @ts-ignore const nextProps = adapter(otherProps); return createElement(NextComponent, _extends({}, nextProps, { ref: ref })); } return createElement(CurrentComponent, _extends({}, props, { ref: ref })); }; return contextConnect(WrappedComponent, namespace); } return CurrentComponent; } //# sourceMappingURL=with-next.js.map