UNPKG

model-vue-presenter

Version:
30 lines (28 loc) 1.37 kB
import { ComputedRef } from 'vue'; export type Props = object | void; export type View = object | void; export type PresenterConfig = { viewModel: ComputedRef; /** * @description The onCreated hook is invoked when the presenter is resolved. */ onCreated?(): void; /** * @description The onDestroy hook is called when the Vue component unmounts. * If you're using a presenter without its component (during testing, for example), * then you must ensure to call this hook manually. */ onDestroy?(): void; }; type RemoveInternalPresenterHooks<TPresenterConfig extends PresenterConfig> = Omit<TPresenterConfig, 'onCreated' | 'onDestroy'>; type UnwrapComputedRef<T extends ComputedRef> = T['value']; /** * @description Callback function used override properties on a presenter view model. */ export type ViewModelOverride<TPresenterConfig extends PresenterConfig> = <TViewModel extends UnwrapComputedRef<TPresenterConfig['viewModel']>>(viewModel: TViewModel) => TViewModel; export type PresenterHookOutput<TPresenterConfig extends PresenterConfig> = { presenter: RemoveInternalPresenterHooks<TPresenterConfig>; viewModel: TPresenterConfig['viewModel']; }; export type PresenterFactoryFunction<TProps, TView, TPresenterConfig extends PresenterConfig> = (props: TProps, view: TView) => TPresenterConfig; export {};