UNPKG

@web-atoms/core

Version:
80 lines 3.2 kB
import type { App } from "../App"; import type { AtomControl } from "../web/controls/AtomControl"; import EventScope from "./EventScope"; import Route from "./Route"; import { type IDisposable } from "./types"; export declare const routeSymbol: unique symbol; export declare const displayRouteSymbol: unique symbol; export type CustomEventEx<T, TR> = CustomEvent<T> & { executed?: boolean; promise?: Promise<TR>; returnResult?: boolean; }; export declare class PageCommands { static pushPage: (page: any, parameters: any) => any; static pushPageForResult: (page: any, parameters: any) => Promise<any>; static openPage: (page: any, parameters: any) => any; } export type IPage<TIn, TOut> = { default: abstract new (...a: any[]) => { parameters: TIn; close(result: TOut): any; }; } | (abstract new (...a: any[]) => { parameters: TIn; close(result: TOut): any; }); export default class Command<T = any, TR = any> { readonly name: string; readonly eventScope: EventScope<T>; readonly registerOnClick: (p: T) => { "data-click-command": string; commandParameter: T; }; static routePrefix: string; static registry: Map<string, Command>; static routes: Command[]; static invokeRoute(route?: string, forceDisplay?: boolean): Command<any, any>; static create<TIn = any, TOut = any>({ name, eventScope, route, routeQueries, routeOrder, routeDefaults, pageLoader, pageListener, openPage, pushPage, registerOnClick, pushPageForResult, pushPageForResultOrCancel, listener }: { name?: string; eventScope?: EventScope<TIn>; route?: string; routeQueries?: string[]; routeOrder?: number; routeDefaults?: Partial<TIn>; registerOnClick?: (p: TIn) => any; pageLoader?: (() => Promise<IPage<TIn, TOut>>); pageListener?: ((page: IPage<TIn, TOut>) => (ce: CustomEvent<TIn>) => any); openPage?: (() => Promise<IPage<TIn, TOut>>); pushPage?: (() => Promise<IPage<TIn, TOut>>); pushPageForResult?: (() => Promise<IPage<TIn, TOut>>); pushPageForResultOrCancel?: (() => Promise<IPage<TIn, TOut>>); listener?: ((ce: CustomEvent<TIn>) => any); }): Command<TIn, TOut>; private listener; /** * This name does not contain `event-` prefix */ get eventName(): string; private routeObj; get route(): Route; defaults?: any; constructor(name?: string, eventScope?: EventScope<T>, registerOnClick?: (p: T) => { "data-click-command": string; commandParameter: T; }); displayRoute(p: Partial<T>, absoluteUrl?: boolean): string; withRoute(route: string, queries?: string[], order?: number, defaults?: any): this; listen(r: { app: App; registerDisposable: (d: IDisposable) => void; }, handler?: (ce: CustomEventEx<T, TR>) => any): void; dispatch(detail?: T, cancelable?: boolean): void; private updateRoute; dispatchAsync(detail?: T, cancelable?: boolean): Promise<TR>; } export declare class Commands { protected static app: App; static install(control: AtomControl): void; } //# sourceMappingURL=Command.d.ts.map