UNPKG

@discoveryjs/discovery

Version:

Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards

43 lines (42 loc) 1.91 kB
import type { SetDataProgressOptions, ViewModelEvents, ViewModelOptions } from './view-model.js'; import type { LoadDataResult } from '../core/utils/load-data.js'; import type { InjectStyle } from '../core/utils/inject-styles.js'; import type { ProgressbarOptions } from '../core/utils/progressbar.js'; import type { UploadOptions } from '../extensions/upload.js'; import type { EmbedClientOptions } from '../extensions/embed-client.js'; import { ViewModel } from './view-model.js'; import { Progressbar } from '../core/utils/progressbar.js'; export type AppLoadingState = 'init' | 'error' | 'success'; export type AppLoadingStateOptions<T> = T extends 'init' ? { progressbar: Progressbar; } : T extends 'error' ? { error: Error & { renderContent?: any; }; progressbar: Progressbar; } : undefined; export interface AppEvents extends ViewModelEvents { startLoadData: [subscribe: Progressbar['subscribeSync']]; } export interface AppOptions<T = ViewModel> extends ViewModelOptions<T> { mode: 'modelfree'; router: boolean; upload: Partial<UploadOptions> | boolean; embed: Partial<EmbedClientOptions> | boolean; } type AppOptionsBind = AppOptions; export declare class App<Options extends AppOptions = AppOptionsBind, Events extends AppEvents = AppEvents> extends ViewModel<Options, Events> { dom: ViewModel['dom'] & { loadingOverlay: HTMLElement; }; constructor(options?: Partial<Options>); setLoadingState<S extends AppLoadingState>(state: S, options?: AppLoadingStateOptions<S>): void; setDataProgress(data: unknown, context: unknown, options?: SetDataProgressOptions): Promise<void>; progressbar(options: ProgressbarOptions & { title?: string; }): Progressbar; trackLoadDataProgress(loadDataResult: LoadDataResult): Promise<void>; initDom(styles?: InjectStyle[]): void; renderPage(): Promise<void>; } export {};