/// import * as React from 'react'; import { Observable, Subscription } from 'rxjs'; import { AnonymousSubscription, TeardownLogic } from 'rxjs/Subscription'; import { ReactSpreadRestrictedProps, ReactSpreadResult } from '../../Extensions/React'; import { Alert, Logging } from '../../Utils'; import { Command, IterableLike, Property } from '../../WebRx'; import { BaseViewModel } from './BaseViewModel'; export interface ViewModelProps { viewModel: Readonly; } export declare type ReactSpreadRestrictedViewModelProps = ReactSpreadRestrictedProps & Partial>; export declare const reactSpreadRestrictedViewModelProps: ReactSpreadRestrictedViewModelProps; export interface BaseViewProps extends ViewModelProps, React.HTMLProps { } export interface ViewModelState { viewModel: T; } export declare abstract class BaseView, TViewModel extends BaseViewModel> extends React.Component> implements AnonymousSubscription { static displayName: string; private updateSubscription; private subscriptions; protected readonly createAlert: typeof Alert.create; protected readonly alertForError: typeof Alert.createForError; protected readonly logger: Logging.Logger; constructor(props: any); readonly viewModel: Readonly; private getSubscriptions(); componentWillMount(): void; componentDidMount(): void; componentWillReceiveProps(nextProps: Readonly, nextContext: any): void; componentWillUpdate(nextProps: Readonly, nextState: Readonly>, nextContext: any): void; componentDidUpdate(prevProps: Readonly, prevState: Readonly>, prevContext: any): void; componentWillUnmount(): void; private initializeView(); private loadedView(); private updatingView(nextProps, nextState); private updatedView(prevProps, prevState); private cleanupView(); protected initialize(): void; protected loaded(): void; protected updating(nextProps?: Readonly, nextState?: Readonly>): void; protected updated(prevProps?: Readonly, prevState?: Readonly>): void; protected cleanup(): void; protected subscribeToUpdates(props: Readonly, state: Readonly>): void; protected updateOn(viewModel: Readonly): IterableLike>; protected getDisplayName(): string; protected getRateLimit(): number; protected renderView(): void; /** * Binds an observable to a command on the view model */ protected bindObservableToCommand(observable: Observable, commandSelector: (viewModel: Readonly) => Command, onNext?: (value: TInput) => void, onError?: (exception: any) => void, onCompleted?: () => void): Subscription; /** * Binds a DOM event to an observable property on the view model */ protected bindEventToProperty>(targetSelector: (viewModel: Readonly) => Property, valueSelector?: (eventKey: any, event: TEvent) => TValue): any; /** * Binds a DOM event to an observable command on the view model */ protected bindEventToCommand>(commandSelector: (viewModel: Readonly) => Command, paramSelector?: (eventKey: any, event: TEvent) => TParameter, conditionSelector?: (event: TEvent, eventKey: any) => boolean, onNext?: (value: TCommand) => void, onError?: (exception: any) => void, onCompleted?: () => void): any; protected createStateFromProps(props: Readonly): Readonly>; protected getViewModelFromState(state: Readonly>): Readonly; protected addSubscription(subscription: T): T; protected addSubscriptions(...subscriptions: T[]): T[]; unsubscribe(): void; restProps(propsCreator?: (x: TViewProps) => T, restrictedProps?: R): ReactSpreadResult; }