GoScrobble/web/node_modules/@restart/context/mapContextToProps.d.ts

155 lines
3.9 KiB
TypeScript

// TypeScript Version: 3.0
declare module '@restart/context/mapContextToProps' {
import * as React from 'react';
type Omit<T, U> = Pick<T, Exclude<keyof T, keyof U>>;
type GetProps<C> = C extends React.ComponentType<infer P> ? P : never;
export interface ContextInjectedComponent<
TComponent,
TInjectedProps,
TExtraProps
>
extends React.ForwardRefExoticComponent<
Omit<GetProps<TComponent>, TInjectedProps> & TExtraProps
> {}
// Single Context
function mapContextToProps<TComponent, TContext, TContextProps, TOwnProps>(
context: React.Context<TContext> | [React.Context<TContext>],
mapToProps: (ctxValue: TContext, props: TOwnProps) => TContextProps,
Component: TComponent,
): ContextInjectedComponent<TComponent, TContextProps, TOwnProps>;
function mapContextToProps<TContext, TContextProps, TOwnProps>(
context: React.Context<TContext> | [React.Context<TContext>],
mapToProps: (ctxValue: TContext, props: TOwnProps) => TContextProps,
): <TComponent>(
component: TComponent,
) => ContextInjectedComponent<TComponent, TContextProps, TOwnProps>;
// 2 Contexts
function mapContextToProps<
TComponent,
TContext1,
TContext2,
TContextProps,
TOwnProps
>(
context: [React.Context<TContext1>, React.Context<TContext2>],
mapToProps: (
c1: TContext1,
c2: TContext2,
props: TOwnProps,
) => TContextProps,
Component: TComponent,
): ContextInjectedComponent<TComponent, TContextProps, TOwnProps>;
function mapContextToProps<TContext1, TContext2, TContextProps, TOwnProps>(
context: [React.Context<TContext1>, React.Context<TContext2>],
mapToProps: (
c1: TContext1,
c2: TContext2,
props: TOwnProps,
) => TContextProps,
): <TComponent>(
component: TComponent,
) => ContextInjectedComponent<TComponent, TContextProps, TOwnProps>;
// 3 Contexts
function mapContextToProps<
TComponent,
TContext1,
TContext2,
TContext3,
TContextProps,
TOwnProps
>(
context: [
React.Context<TContext1>,
React.Context<TContext2>,
React.Context<TContext3>
],
mapToProps: (
c1: TContext1,
c2: TContext2,
c3: TContext3,
props: TOwnProps,
) => TContextProps,
Component: TComponent,
): ContextInjectedComponent<TComponent, TContextProps, TOwnProps>;
function mapContextToProps<
TContext1,
TContext2,
TContext3,
TContextProps,
TOwnProps
>(
context: [
React.Context<TContext1>,
React.Context<TContext2>,
React.Context<TContext3>
],
mapToProps: (
c1: TContext1,
c2: TContext2,
c3: TContext3,
props: TOwnProps,
) => TContextProps,
): <TComponent>(
component: TComponent,
) => ContextInjectedComponent<TComponent, TContextProps, TOwnProps>;
// 4 Contexts
function mapContextToProps<
TComponent,
TContext1,
TContext2,
TContext3,
TContext4,
TContextProps,
TOwnProps
>(
context: [
React.Context<TContext1>,
React.Context<TContext2>,
React.Context<TContext3>,
React.Context<TContext4>
],
mapToProps: (
c1: TContext1,
c2: TContext2,
c3: TContext3,
c4: TContext4,
props: TOwnProps,
) => TContextProps,
Component: TComponent,
): ContextInjectedComponent<TComponent, TContextProps, TOwnProps>;
function mapContextToProps<
TContext1,
TContext2,
TContext3,
TContext4,
TContextProps,
TOwnProps
>(
context: [
React.Context<TContext1>,
React.Context<TContext2>,
React.Context<TContext3>,
React.Context<TContext4>
],
mapToProps: (
c1: TContext1,
c2: TContext2,
c3: TContext3,
c4: TContext4,
props: TOwnProps,
) => TContextProps,
): <TComponent>(
component: TComponent,
) => ContextInjectedComponent<TComponent, TContextProps, TOwnProps>;
export default mapContextToProps;
}