react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
29 lines • 3.04 kB
JavaScript
/**
* Apply multiple hocs
*
* @example
* const NewComponent = withHocs([withWrapper(A), withWrapper(B)])(MyComponent)
* <A>
* <B>
* <NewComponent ... />
* </B>
* </A>
*
* @example
* const MyComponent = (() => {
* function MyComponent(props: { ... }) {
* return <OtherComponents />;
* }
* return withHocs([ ... ])(MyComponent);
* })();
*
* @example
* import { withHoc1, withHoc1 } from 'my-hocs'
* // `withHoc1_2` can be used somewhere else
* export const withHoc1_2 = withHocs([withHoc1, withHoc2])
*/
export function withHocs(hocs) {
return arg => hocs.reduceRight((Component, hoc) => hoc(Component), arg);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3aXRoSG9jcyIsImhvY3MiLCJhcmciLCJyZWR1Y2VSaWdodCIsIkNvbXBvbmVudCIsImhvYyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob2NzL3dpdGhIb2NzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGbiB9IGZyb20gXCIuLi90eXBlcy9GblwiO1xuaW1wb3J0IHsgSG9jIH0gZnJvbSBcIi4uL3R5cGVzL0hvY1wiO1xuXG50eXBlIFdpdGhIb2NzQXJnID1cbiAgfCBIb2M8YW55PlxuICB8ICgoQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPGFueT4pID0+IENvbXBvbmVudFR5cGU8YW55Pik7XG5cbnR5cGUgV2l0aEhvY3NGbGF0PFxuICBIb2NzIGV4dGVuZHMgV2l0aEhvY3NBcmdbXSxcbiAgQWNjIGV4dGVuZHMgRm5bXSA9IFtdLFxuPiA9IEhvY3MgZXh0ZW5kcyBbaW5mZXIgZmlyc3QsIC4uLmluZmVyIHJlc3QgZXh0ZW5kcyBXaXRoSG9jc0FyZ1tdXVxuICA/IGZpcnN0IGV4dGVuZHMgSG9jPGluZmVyIEZucyBleHRlbmRzIEZuW10+XG4gICAgPyBXaXRoSG9jc0ZsYXQ8cmVzdCwgWy4uLkFjYywgLi4uRm5zXT5cbiAgICA6IFdpdGhIb2NzRmxhdDxyZXN0LCBBY2M+XG4gIDogQWNjO1xuXG4vKipcbiAqIEFwcGx5IG11bHRpcGxlIGhvY3NcbiAqXG4gKiAgQGV4YW1wbGVcbiAqIGNvbnN0IE5ld0NvbXBvbmVudCA9IHdpdGhIb2NzKFt3aXRoV3JhcHBlcihBKSwgd2l0aFdyYXBwZXIoQildKShNeUNvbXBvbmVudClcbiAqIDxBPlxuICogICA8Qj5cbiAqICAgICA8TmV3Q29tcG9uZW50IC4uLiAvPlxuICogICA8L0I+XG4gKiA8L0E+XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IE15Q29tcG9uZW50ID0gKCgpID0+IHtcbiAqICAgZnVuY3Rpb24gTXlDb21wb25lbnQocHJvcHM6IHsgLi4uIH0pIHtcbiAqICAgICByZXR1cm4gPE90aGVyQ29tcG9uZW50cyAvPjtcbiAqICAgfVxuICogICByZXR1cm4gd2l0aEhvY3MoWyAuLi4gXSkoTXlDb21wb25lbnQpO1xuICogfSkoKTtcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgd2l0aEhvYzEsIHdpdGhIb2MxIH0gZnJvbSAnbXktaG9jcydcbiAqIC8vIGB3aXRoSG9jMV8yYCBjYW4gYmUgdXNlZCBzb21ld2hlcmUgZWxzZVxuICogZXhwb3J0IGNvbnN0IHdpdGhIb2MxXzIgPSB3aXRoSG9jcyhbd2l0aEhvYzEsIHdpdGhIb2MyXSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIb2NzPGNvbnN0IEhvY3MgZXh0ZW5kcyByZWFkb25seSBXaXRoSG9jc0FyZ1tdPihcbiAgaG9jczogSG9jcyxcbik6IEhvYzxXaXRoSG9jc0ZsYXQ8Wy4uLkhvY3NdPj4ge1xuICByZXR1cm4gKGFyZzogYW55KSA9PlxuICAgIGhvY3MucmVkdWNlUmlnaHQoKENvbXBvbmVudCwgaG9jKSA9PiBob2MoQ29tcG9uZW50KSwgYXJnKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0EsUUFBUUEsQ0FDdEJDLElBQVUsRUFDb0I7RUFDOUIsT0FBUUMsR0FBUSxJQUNkRCxJQUFJLENBQUNFLFdBQVcsQ0FBQyxDQUFDQyxTQUFTLEVBQUVDLEdBQUcsS0FBS0EsR0FBRyxDQUFDRCxTQUFTLENBQUMsRUFBRUYsR0FBRyxDQUFDO0FBQzdEIn0=
//# sourceMappingURL=withHocs.js.map