/** * Turns a React component or stateless render function into a reactive component. */ import * as React from "react" export { useAsObservableSource, useLocalStore, IObserverOptions, Observer } from "mobx-react-lite" export type IReactComponent

= | React.StatelessComponent

| React.ComponentClass

| React.ClassicComponentClass

/** * Observer */ export function observer(target: T): T /** * Inject */ export type IValueMap = { [key: string]: any } export type IStoresToProps< S extends IValueMap = {}, P extends IValueMap = {}, I extends IValueMap = {}, C extends IValueMap = {} > = (stores: S, nextProps: P, context: C) => I export type IWrappedComponent

= { wrappedComponent: IReactComponent

} // Ideally we would want to return React.ComponentClass>, // but TS doesn't allow such things in decorators, like we do in the non-decorator version // See also #256 export function inject( ...stores: string[] ): >( target: T ) => T & (T extends IReactComponent ? IWrappedComponent

: never) export function inject( fn: IStoresToProps ): (target: T) => T & IWrappedComponent

// Ideal implementation: // export function inject // ( // fn: IStoresToProps // ): //

(target: IReactComponent

) => IReactComponent> & IWrappedComponent>> // // Or even better: (but that would require type inference to work other way around) // export function inject // ( // fn: IStoresToProps // ): // (target: T) => IReactComponent

& IWrappedComponent /** * disposeOnUnmount */ type Disposer = () => void export function disposeOnUnmount(target: React.Component, propertyKey: string): void export function disposeOnUnmount( target: React.Component, fn: TF ): TF /** * Utilities */ export class Provider extends React.Component {} export const MobXProviderContext: React.Context export function useStaticRendering(value: boolean): void export function isUsingStaticRendering(): boolean export const PropTypes: { observableArray: React.Requireable observableArrayOf: (type: React.Validator) => React.Requireable observableMap: React.Requireable observableObject: React.Requireable arrayOrObservableArray: React.Requireable arrayOrObservableArrayOf: (type: React.Validator) => React.Requireable objectOrObservableObject: React.Requireable }