UNPKG

nrgy

Version:

The library for reactive programming using efficient computing and MVC/MVVM patterns

73 lines (66 loc) 4.22 kB
import React, { FC, PropsWithChildren } from 'react'; import { i as ExtensionParamsProvider, B as BaseControllerContext, a as BaseService, c as ControllerDeclaration } from './controller-BVEgCAYk.js'; import { I as InferViewPropsFromControllerContext, V as ViewProps, i as ViewControllerContext, B as BaseViewModel, d as ViewModelDeclaration, j as InferViewModelProps } from './viewModel-CspUG5If.js'; import './types-CxOJPpKX.js'; import './types-jkBBq3Lp.js'; import './atom-DIp83xZa.js'; /** * NrgyControllerExtension provides a way to add extension params * to view controller contexts of all its children. */ declare const NrgyControllerExtension: FC<PropsWithChildren<{ provider: ExtensionParamsProvider; }>>; /** * Returns a controller instance for the given controller declaration. */ declare function useController<TContext extends BaseControllerContext, TService extends BaseService>(declaration: ControllerDeclaration<TContext, TService>): TService; /** * Returns a controller instance for the given controller declaration and props. */ declare function useController<TContext extends BaseControllerContext, TService extends BaseService, TProps extends InferViewPropsFromControllerContext<TContext, never>>(declaration: ControllerDeclaration<TContext, TService>, props: TProps): TService; /** * Returns parent's view controller that is provided for the given controller declaration. * * If the controller is not provided in the context, an error will be thrown. */ declare function useProvidedViewController<TContext extends BaseControllerContext, TService extends BaseService>(declaration: ControllerDeclaration<TContext, TService>): TService; /** * Returns parent's view controller that is provided for the given controller declaration. * * Optional view controller can be used when the controller is not provided in the context. */ declare function useOptionalViewController<TContext extends BaseControllerContext, TService extends BaseService>(declaration: ControllerDeclaration<TContext, TService>): TService | undefined; /** * Returns parent's view controller that is provided for the given controller declaration. * * Optional view controller can be used when the controller is not provided in the context. */ declare function useOptionalViewController<TContext extends BaseControllerContext, TService extends BaseService, TDefault extends TService | undefined>(declaration: ControllerDeclaration<TContext, TService>, defaultValue: TDefault): TService | TDefault; /** * Provides a controller for a given controller declaration using a React context. */ declare const ViewControllerProvider: <TContext extends BaseControllerContext, TService extends BaseService>(props: PropsWithChildren<{ declaration: ControllerDeclaration<TContext, TService>; controller: TService; }>) => React.JSX.Element; /** * Creates a higher-order React component that provides a controller for a given view component. * * @param controllerDeclaration - Controller declaration */ declare function withViewController<TProps extends ViewProps, TService extends BaseService>(controllerDeclaration: ControllerDeclaration<ViewControllerContext<TProps>, TService>): (ViewComponent: React.ComponentType<TProps & { controller: TService; }>) => FC<TProps>; type InferHocComponent<TViewModel extends BaseViewModel, TComponentProps extends { viewModel: TViewModel; }, TViewModelProps = InferViewModelProps<TViewModel>> = FC<PropsWithChildren<Omit<TComponentProps, 'viewModel'> & TViewModelProps>>; /** * Creates a higher-order React component that provides a view model for a given view component. * * @param viewModelDeclaration - Controller declaration */ declare function withViewModel<TViewModel extends BaseViewModel>(viewModelDeclaration: ViewModelDeclaration<TViewModel, ViewControllerContext<InferViewModelProps<TViewModel>>>): <TComponentProps extends { viewModel: TViewModel; }>(ViewComponent: React.ComponentType<PropsWithChildren<TComponentProps>>) => InferHocComponent<TViewModel, TComponentProps>; export { NrgyControllerExtension, ViewControllerProvider, useController, useOptionalViewController, useProvidedViewController, withViewController, withViewModel };