@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
43 lines (42 loc) • 1.91 kB
TypeScript
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 {};