1 |
|
2 |
|
3 | import * as React from 'react';
|
4 |
|
5 | export type Omit<T, U> = Pick<T, Exclude<keyof T, U>>;
|
6 |
|
7 | export type mapper<TInner, TOuter> = (input: TInner) => TOuter;
|
8 |
|
9 | export interface InferableComponentEnhancerWithProps<
|
10 | TInjectedProps,
|
11 | TNeedsProps
|
12 | > {
|
13 | <P extends TInjectedProps>(
|
14 | component: React.ComponentType<P>,
|
15 | ): React.ComponentType<Omit<P, keyof TInjectedProps> & TNeedsProps>;
|
16 | }
|
17 |
|
18 | export function mapProps<TInner, TOuter>(
|
19 | propsMapper: mapper<TOuter, TInner>,
|
20 | ): InferableComponentEnhancerWithProps<TInner, TOuter>;
|
21 |
|
22 | export function withProps<TInner, TOuter>(
|
23 | createProps: TInner | mapper<TOuter, TInner>,
|
24 | ): InferableComponentEnhancerWithProps<TInner & TOuter, TOuter>;
|