redux-devtools/packages/redux-devtools-rtk-query-monitor/src/containers/mapProps.tsx
renovate[bot] 9fa9a6ff79
fix(deps): update all non-major dependencies (#1713)
* fix(deps): update all non-major dependencies

* weird

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2024-08-26 01:53:07 +00:00

31 lines
726 B
TypeScript

import React, { ComponentType, ReactNode, Component } from 'react';
interface Mapper<In, Out> {
(inProps: In): Out;
}
interface MapPropsOutput<In, Out> {
(comp: ComponentType<Out>): ComponentType<In>;
}
export function mapProps<In, Out>(
mapper: Mapper<In, Out>,
): MapPropsOutput<In, Out> {
return function mapPropsHoc(Comp) {
class MapPropsHoc extends Component<In> {
render(): ReactNode {
const mappedProps = mapper(this.props);
// TODO Not really sure why this is needed, but it is
return <Comp {...(mappedProps as any)} />;
}
static displayName = `mapProps(${
Comp.displayName || Comp.name || 'Component'
})`;
}
return MapPropsHoc;
};
}