UNPKG

@discoveryjs/discovery

Version:

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

40 lines (39 loc) 1.56 kB
import type { ViewModel, PageParams } from '../main/index.js'; import type { ViewRenderer } from './view.js'; import { Dictionary } from './dict.js'; import { Observer } from './observer.js'; import { type RawViewConfig } from './view.js'; export type PageOptionName = keyof PageOptions; export type PageOptionRender = RawViewConfig | Page['render']; export type PageOptions = { reuseEl: boolean; init(newPageEl: HTMLElement): void; render: PageOptionRender; keepScrollOffset: boolean; encodeParams(params: PageParams): [string, any][] | string; decodeParams(params: [string, string | boolean][]): Record<string, unknown>; }; export type PageOptionsWithoutRender = Exclude<PageOptions, 'render'>; export type Page = { name: string; render(el: HTMLElement, data: any, context: any): any; options?: Partial<PageOptions>; [CONFIG]?: any; }; declare const CONFIG: unique symbol; export declare class PageRenderer extends Dictionary<Page> { #private; lastPage: string | null; lastPageRef: string | number | null; pageOverscrolled: Observer<boolean>; setPageOverscroll: (el: HTMLElement) => void; constructor(host: ViewModel, view: ViewRenderer); define(name: string, options: PageOptions): Readonly<Page>; define(name: string, render: PageOptionRender, options?: PageOptionsWithoutRender): Readonly<Page>; render(prevPageEl: HTMLElement, name: string, data: any, context: any): { pageEl: HTMLElement; config: any; renderState: Promise<void>; }; } export {};