UNPKG

@discoveryjs/discovery

Version:

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

109 lines (108 loc) 5.09 kB
import type { ModelEvents, ModelOptions, PageAnchor, PageParams, PageRef, PageHashState, PageHashStateWithAnchor, SetDataOptions } from './model.js'; import type { Dataset } from '../core/utils/load-data.js'; import type { InjectStyle } from '../core/utils/inject-styles.js'; import type { Progressbar } from '../core/utils/progressbar.js'; import { Model } from './model.js'; import { Observer } from '../core/observer.js'; import { ColorScheme, ColorSchemeState } from '../core/color-scheme.js'; import { ViewModelNavigation } from '../nav/index.js'; import { PageRenderer } from '../core/page.js'; import { ViewRenderer } from '../core/view.js'; import { PresetRenderer } from '../core/preset.js'; export type RenderSubject = typeof renderSubjects[number]; export type SetDataProgressOptions = Partial<{ dataset: Dataset; progressbar: Progressbar; }>; declare const renderSubjects: readonly ["nav", "sidebar", "page"]; export interface ViewModelEvents extends ModelEvents { startSetData: [subscribe: Progressbar['subscribeSync']]; pageStateChange: [prev: PageHashState]; pageAnchorChange: [prev: string | null]; pageHashChange: [replace: boolean]; } export interface ViewModelOptions<T = ViewModel> extends ModelOptions<T> { container: HTMLElement; styles: InjectStyle[]; compact: boolean; colorScheme: ColorSchemeState; colorSchemePersistent: boolean; defaultPage: string; defaultPageId: string; discoveryPageId: string; reportToDiscoveryRedirect: boolean; inspector: boolean; /** @deprecated Legacy option, use colorScheme instead */ darkmode: ColorSchemeState; /** @deprecated Legacy option, use colorSchemePersistent instead */ darkmodePersistent: boolean; } type ViewModelOptionsBind = ViewModelOptions; export declare class ViewModel<Options extends ViewModelOptions = ViewModelOptionsBind, Events extends ViewModelEvents = ViewModelEvents> extends Model<Options, Events> { #private; compact: boolean; colorScheme: ColorScheme; inspectMode: Observer<boolean>; view: ViewRenderer; nav: ViewModelNavigation; preset: PresetRenderer; page: PageRenderer; defaultPageId: string; discoveryPageId: string; reportToDiscoveryRedirect: boolean; pageId: string; pageRef: PageRef; pageParams: Record<string, any>; pageAnchor: PageAnchor; pageHash: string; dom: { ready: Promise<void>; wrapper: HTMLElement; root: HTMLElement | ShadowRoot; container: HTMLElement; nav: HTMLElement; sidebar: HTMLElement; content: HTMLElement; pageContent: HTMLElement; detachColorScheme: null | (() => void); }; queryExtensions: Record<string, (...args: unknown[]) => any>; constructor(options: Partial<Options>); initRenderTriggers(): void; setData(data: unknown, options?: SetDataOptions & { render?: boolean; }): Promise<void>; setDataProgress(data: unknown, context: unknown, options?: SetDataProgressOptions): Promise<void>; initDom(styles?: InjectStyle[]): void; setContainer(container?: HTMLElement): void; disposeDom(): void; addGlobalEventListener<E extends keyof DocumentEventMap>(type: E, listener: (e: DocumentEventMap[E]) => void, options?: boolean | AddEventListenerOptions): () => void; addHostElEventListener<E extends keyof HTMLElementEventMap>(type: E, listener: (e: HTMLElementEventMap[E]) => void, options?: boolean | AddEventListenerOptions): () => void; scheduleRender(...subjects: RenderSubject[]): void; enforceScheduledRenders(): Promise<void>; cancelScheduledRender(subject?: RenderSubject): void; getRenderContext(): any; protected renderNav(): void; protected renderSidebar(): Promise<void> | undefined; encodePageHash(pageId: string, pageRef?: PageRef, pageParams?: PageParams, pageAnchor?: string | null): string; decodePageHash(hash: string): { pageId: string; pageRef: string | null; pageParams: Record<string, unknown>; pageAnchor: string | null; }; setPageHashState(pageState?: Partial<PageHashState>, replace?: boolean): boolean; overridePageHashState(pageState: Partial<PageHashState>, replace?: boolean): boolean; getPageHashState(): PageHashState; setPageHashStateWithAnchor(pageStateWithAnchor: Partial<PageHashStateWithAnchor>, replace?: boolean): boolean; overridePageHashStateWithAnchor(pageState: Partial<PageHashStateWithAnchor>, replace?: boolean): boolean; getPageHashStateWithAnchor(): PageHashStateWithAnchor; setPage(pageId: string, pageRef?: PageRef, pageParams?: PageParams, replace?: boolean): boolean; setPageRef(pageRef?: PageRef, replace?: boolean): boolean; setPageParams(pageParams: PageParams, replace?: boolean): boolean; setPageAnchor(pageAnchor: string | null, replace?: boolean): boolean; setPageHash(hash: string, replace?: boolean): boolean; applyPageAnchor(onlyIfPageAnchorPresent?: boolean): void; protected renderPage(): Promise<void>; } export {};