UNPKG

context-hook

Version:

Simple util that resolves common cases with react Context API.

16 lines (15 loc) 866 B
import React from "react"; import { PascalCase } from "./to-pascal-case"; declare type HookFunc<P extends object | void, R extends object> = void extends P ? () => R : (payload: P) => R; declare type Props<P extends object | void> = void extends P ? { children?: React.ReactNode; } : P & { children?: React.ReactNode; }; declare type HookName<Name extends string> = `use${PascalCase<Name>}`; declare type ProviderName<Name extends string> = `${PascalCase<Name>}Provider`; declare type Result<P extends object | void, R extends object, Name extends string> = { [K in HookName<Name> | ProviderName<Name>]: K extends HookName<Name> ? () => R : (props: Props<P>) => JSX.Element; }; export declare const createContextHook: <P extends void | object, R extends object, Name extends string>(name: Name, useHook: HookFunc<P, R>) => Result<P, R, Name>; export {};