/** * Internal dependencies */ import createHigherOrderComponent from '../../utils/create-higher-order-component'; /** * Higher-order component creator, creating a new component which renders if * the given condition is satisfied or with the given optional prop name. * * @example * ```ts * type Props = { foo: string }; * const Component = ( props: Props ) =>
{ props.foo }
; * const ConditionalComponent = ifCondition( ( props: Props ) => props.foo.length !== 0 )( Component ); * ; // => null * ; // =>
bar
; * ``` * * @param predicate Function to test condition. * * @return Higher-order component. */ const ifCondition = < TProps extends Record< string, any > >( predicate: ( props: TProps ) => boolean ) => createHigherOrderComponent< {} >( ( WrappedComponent ) => ( props ) => { if ( ! predicate( props as TProps ) ) { return null; } return ; }, 'ifCondition' ); export default ifCondition;