1+ import type { PubSub } from 'yummies/complex' ;
12import type { AnyObject , Class , DeepPartial , Maybe } from 'yummies/types' ;
2-
33import type { ViewModelHocConfig } from '../hoc/with-view-model.js' ;
44import type {
55 AnyViewModel ,
66 PayloadCompareFn ,
77 ViewModelCreateConfig ,
8+ ViewModelStore ,
89} from '../view-model/index.js' ;
9-
1010import type { ObservableAnnotationsArray } from './utils/apply-observable.js' ;
1111
1212export interface ViewModelObservableConfig {
@@ -37,7 +37,9 @@ export type CreateViewModelFactoryFn<
3737 * Configuration options for view models.
3838 * [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config)
3939 */
40- export interface ViewModelsConfig < VM extends AnyViewModel = AnyViewModel > {
40+ export interface ViewModelsConfig <
41+ TViewModel extends AnyViewModel = AnyViewModel ,
42+ > {
4143 /** [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config#startviewtransitions) */
4244 startViewTransitions : {
4345 mount : boolean ;
@@ -53,17 +55,22 @@ export interface ViewModelsConfig<VM extends AnyViewModel = AnyViewModel> {
5355 /** [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config#generateid) */
5456 generateId : GenerateViewModelIdFn ;
5557 /** [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config#factory) */
56- factory : CreateViewModelFactoryFn < VM > ;
58+ factory : CreateViewModelFactoryFn < TViewModel > ;
5759 /** [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config#fallbackcomponent) */
5860 fallbackComponent ?: React . ComponentType ;
5961 /** [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config#onmount) */
60- onMount ?: ( viewModel : VM ) => void ;
62+ onMount ?: ( viewModel : TViewModel ) => void ;
6163 /** [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config#onunmount) */
62- onUnmount ?: ( viewModel : VM ) => void ;
64+ onUnmount ?: ( viewModel : TViewModel ) => void ;
6365 /** [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config#processviewcomponent) */
66+ readonly hooks : {
67+ readonly storeCreate : PubSub <
68+ [ viewModelStore : ViewModelStore < AnyViewModel > ]
69+ > ;
70+ } ;
6471 processViewComponent ?: (
6572 component : React . ComponentType < any > | undefined ,
66- VM : Class < VM > ,
73+ VM : Class < TViewModel > ,
6774 config : ViewModelHocConfig < any > ,
6875 ) => Maybe < React . ComponentType < any > > ;
6976 /** [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config#wrapviewsinobserver) */
@@ -78,9 +85,11 @@ export interface ViewModelsConfig<VM extends AnyViewModel = AnyViewModel> {
7885/**
7986 * [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config)
8087 */
81- export type ViewModelsRawConfig = Omit <
82- ViewModelsConfig ,
83- 'startViewTransitions' | 'observable' | 'factory' | 'generateId'
88+ export type ViewModelsRawConfig <
89+ TViewModel extends AnyViewModel = AnyViewModel ,
90+ > = Omit <
91+ ViewModelsConfig < TViewModel > ,
92+ 'startViewTransitions' | 'observable' | 'factory' | 'generateId' | 'hooks'
8493> & {
8594 startViewTransitions ?:
8695 | DeepPartial < ViewModelsConfig [ 'startViewTransitions' ] >
0 commit comments