UNPKG

@wordpress/compose

Version:
38 lines (37 loc) 1.33 kB
/** * External dependencies */ import { pascalCase } from 'change-case'; /** * Given a function mapping a component to an enhanced component and modifier * name, returns the enhanced component augmented with a generated displayName. * * @param mapComponent Function mapping component to enhanced component. * @param modifierName Seed name from which to generated display name. * * @return Component class with generated display name assigned. */ export function createHigherOrderComponent(mapComponent, modifierName) { return Inner => { const Outer = mapComponent(Inner); Outer.displayName = hocName(modifierName, Inner); return Outer; }; } /** * Returns a displayName for a higher-order component, given a wrapper name. * * @example * hocName( 'MyMemo', Widget ) === 'MyMemo(Widget)'; * hocName( 'MyMemo', <div /> ) === 'MyMemo(Component)'; * * @param name Name assigned to higher-order component's wrapper component. * @param Inner Wrapped component inside higher-order component. * @return Wrapped name of higher-order component. */ const hocName = (name, Inner) => { const inner = Inner.displayName || Inner.name || 'Component'; const outer = pascalCase(name !== null && name !== void 0 ? name : ''); return `${outer}(${inner})`; }; //# sourceMappingURL=index.js.map