UNPKG

@expressive/react

Version:
58 lines (55 loc) 2.66 kB
import { Model } from '@expressive/mvc'; import React__default from 'react'; export { Fragment } from 'react'; declare module "@expressive/mvc" { namespace Model { /** * Use this to define a component which wraps a Model, intended to forward props. * This is to be used explicity, in JSDoc types or type annotations. * The second type parameter is additional props the component expects to receive. * * @example * ```tsx * import { Model } from '@expressive/react'; * * class MyModel extends Model { * foo: string; * bar: number; * } * * const MyComponent: Model.FC<MyModel, { label: string }> = * ({ label, ...rest }) => ( * <div> * <span>{label}</span> * <MyModel {...rest} /> * </div> * ); * ``` */ type FC<T extends Model, P extends {} = {}> = React__default.FC<Props<T> & P>; } } declare namespace JSX { type ElementType = Model.Type<Model.Compat> | React__default.JSX.ElementType | ((props: {}, ref?: any) => void); type LibraryManagedAttributes<C, P> = C extends new (...args: any[]) => { props: infer U; } ? U : C extends Model.Type<infer U> ? Model.Props<U> : React__default.JSX.LibraryManagedAttributes<C, P>; interface Element extends React__default.JSX.Element { } interface ElementClass extends React__default.JSX.ElementClass { } interface ElementAttributesProperty { } interface ElementChildrenAttribute extends React__default.JSX.ElementChildrenAttribute { } interface IntrinsicAttributes extends React__default.JSX.IntrinsicAttributes { } interface IntrinsicClassAttributes<T> extends React__default.JSX.IntrinsicClassAttributes<T> { } interface IntrinsicElements extends React__default.JSX.IntrinsicElements { } } declare function compat(this: (type: React__default.ElementType, ...args: any[]) => React__default.ReactElement, type: React__default.ElementType | Model.Init, ...args: any[]): React__default.ReactElement; declare const jsx: (type: React__default.ElementType<any, keyof React__default.JSX.IntrinsicElements> | Model.Init<Model>, ...args: any[]) => React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>>; declare const jsxs: (type: React__default.ElementType<any, keyof React__default.JSX.IntrinsicElements> | Model.Init<Model>, ...args: any[]) => React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>>; export { JSX, compat, jsx, jsxs };