UNPKG

mobx-view-model

Version:
20 lines 1.57 kB
import { ComponentProps, ComponentType } from 'react'; import { LoadableMixin, LoadableConfig } from 'react-simple-loadable'; import { PackedAsyncModule } from 'yummies/imports'; import { Class, MaybePromise } from '../utils/types.js'; import { AnyViewModel } from '../view-model/index.js'; import { ComponentWithViewModel, ViewModelHocConfig } from './with-view-model.js'; export interface LazyViewAndModel<TViewModel extends AnyViewModel, TView extends ComponentType<any>> { Model: Class<TViewModel> | PackedAsyncModule<Class<TViewModel>>; View?: TView | PackedAsyncModule<TView>; } export type ComponentWithLazyViewModel<TViewModel extends AnyViewModel, TView extends ComponentType<any>> = ComponentWithViewModel<TViewModel, ComponentProps<TView>> & LoadableMixin; export interface LazyViewModelHocConfig<TViewModel extends AnyViewModel> extends ViewModelHocConfig<TViewModel>, Pick<LoadableConfig, 'loading' | 'preload' | 'throwOnError'> { } /** * A Higher-Order Component that **LAZY** connects React components to their ViewModels, providing seamless MobX integration. * * [**Documentation**](https://js2me.github.io/mobx-view-model/react/api/with-lazy-view-model.html) */ export declare function withLazyViewModel<TViewModel extends AnyViewModel, TView extends ComponentType<any>>(loadFunction: () => MaybePromise<LazyViewAndModel<TViewModel, TView>>, configOrFallbackComponent?: LazyViewModelHocConfig<NoInfer<TViewModel>> | LoadableConfig['loading']): ComponentWithLazyViewModel<TViewModel, TView>; //# sourceMappingURL=with-lazy-view-model.d.ts.map