UNPKG

@sberdevices/plasma-temple

Version:

SberDevices CanvasApp Templates.

41 lines 2.14 kB
/// <reference types="react" /> import { HeaderProps } from '@sberdevices/plasma-ui/components/Header/Header'; import { AnyObject, AssistantAppState, AssistantInstance } from '../../types'; export declare type PushScreenParams<PageStateType extends AnyObject, Params extends Record<keyof PageStateType, any>, Name extends keyof Params> = Name extends keyof Params ? [Name, Params[Name]] : [Name]; export interface PushScreenFn<S, P extends { [key in keyof S]: unknown; }> { <T extends keyof S, P1 extends P[T]>(name: T, params: P extends void ? never : P1): void; <T extends keyof S>(name: T, params?: never): void; } export interface ReplaceScreensFn<S, P extends { [key in keyof S]: unknown; }> { <T extends keyof S, P1 extends P[T]>(screens: Array<{ name: T; params?: P extends void ? never : P1; }>): void; <T extends keyof S>(screens: Array<{ name: T; params?: never; }>): void; } export interface PageMethods<State, PageStateType extends AnyObject, PageParamsType extends Partial<Record<keyof PageStateType, any>>, PageType extends keyof PageStateType = keyof PageStateType> { pushHistory: <T extends PageType>(name: T, data: PageStateType[T]) => void; pushScreen: PushScreenFn<PageStateType, PageParamsType>; replacePreviousScreens: ReplaceScreensFn<PageStateType, PageParamsType>; goToScreen: <T extends PageType>(name: T) => void; popScreen: () => void; changeState: (data: State) => void; sendData: AssistantInstance['sendData']; setAssistantState: <T extends AssistantAppState>(state: T) => void; } export declare type PageComponent<PageStateType extends AnyObject, Name extends keyof PageStateType, PageParamsType extends Partial<Record<keyof PageStateType, any>> = Partial<Record<keyof PageStateType, any>>> = React.ComponentType<PageMethods<PageStateType[Name], PageStateType, PageParamsType> & { name: Name; state: PageStateType[Name]; params: PageParamsType[Name]; assistant: AssistantInstance | null; fallbackComponent?: React.ReactNode; header?: HeaderProps; }>; //# sourceMappingURL=types.d.ts.map