box-ui-elements-mlh
Version:
22 lines (18 loc) • 806 B
JavaScript
// @flow strict
import * as React from 'react';
import FeatureConsumer from './FeatureConsumer';
import type { FeatureConfig } from './flowTypes';
type WrapperProps = {};
function withFeatureConsumer(WrappedComponent: React.ComponentType<{ features: FeatureConfig }>) {
function wrapComponent(props: WrapperProps, ref) {
return (
<FeatureConsumer>
{(features: FeatureConfig) => <WrappedComponent {...props} ref={ref} features={features} />}
</FeatureConsumer>
);
}
const wrappedName = WrappedComponent.displayName || WrappedComponent.name || 'component';
wrapComponent.displayName = `withFeatureConsumer(${wrappedName})`;
return React.forwardRef<WrapperProps, HTMLElement>(wrapComponent);
}
export default withFeatureConsumer;