UNPKG

@expressive/react

Version:
39 lines (36 loc) 1.6 kB
export { Pragma } from './adapter'; import Model__default, { Context } from '@expressive/mvc'; export { Context, Model, Observable, Model as default, get, has, ref, set, use } from '@expressive/mvc'; import * as React from 'react'; import { ReactNode } from 'react'; export { Fragment, createElement } from 'react'; declare module '@expressive/mvc' { namespace Context { function use(create?: true): Context; function use(create: boolean): Context | null | undefined; } } declare namespace Consumer { type Props<T extends Model__default> = { /** Type of controller to fetch from context. */ for: Model__default.Type<T>; /** * Render function, will receive instance of desired controller. * * Called every render of parent component. * Similar to `Model.get()`, updates to properties accessed in * this function will cause a refresh when they change. */ children: (value: T) => ReactNode | void; }; } declare function Consumer<T extends Model__default>(props: Consumer.Props<T>): string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<ReactNode> | React.ReactPortal | null; declare namespace Provider { interface Props<T extends Model__default> { for: Context.Accept<T>; forEach?: Context.Expect<T>; children?: ReactNode; } } declare function Provider<T extends Model__default>(props: Provider.Props<T>): React.FunctionComponentElement<React.ProviderProps<Context>>; export { Consumer, Provider };