mobx-view-model
Version:
MobX ViewModel power for ReactJS
32 lines • 2.67 kB
TypeScript
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, AnyViewModelSimple } from '../view-model/index.js';
import { VMComponent, ViewModelHocConfig, ViewModelSimpleHocConfig } from './with-view-model.js';
export interface LazyViewAndModel<TViewModel extends AnyViewModel | AnyViewModelSimple, TView extends ComponentType<any>> {
Model: Class<TViewModel> | PackedAsyncModule<Class<TViewModel>>;
View?: TView | PackedAsyncModule<TView>;
}
export type VMLazyComponent<TViewModel extends AnyViewModel | AnyViewModelSimple, TView extends ComponentType<any>> = VMComponent<TViewModel, ComponentProps<TView>> & LoadableMixin;
/**
* @deprecated use `VMLazyComponent` instead. Will be removed in next major release
*/
export type ComponentWithLazyViewModel<TViewModel extends AnyViewModel | AnyViewModelSimple, TView extends ComponentType<any>> = VMLazyComponent<TViewModel, ComponentProps<TView>> & LoadableMixin;
export interface LazyViewModelHocConfig<TViewModel extends AnyViewModel> extends ViewModelHocConfig<TViewModel>, Pick<LoadableConfig, 'loading' | 'preload' | 'throwOnError'> {
}
export interface LazyViewModelSimpleHocConfig<TViewModel extends AnyViewModelSimple> extends ViewModelSimpleHocConfig<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']): VMLazyComponent<TViewModel, TView>;
/**
* 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 AnyViewModelSimple, TView extends ComponentType<any>>(loadFunction: () => MaybePromise<LazyViewAndModel<TViewModel, TView>>, configOrFallbackComponent?: LazyViewModelSimpleHocConfig<NoInfer<TViewModel>> | LoadableConfig['loading']): VMLazyComponent<TViewModel, TView>;
//# sourceMappingURL=with-lazy-view-model.d.ts.map