import type { LoadReport } from "./errors.js"; import { type Selection } from "./interact.js"; import type { DependencyReference } from "./api-schema/DependencyReference.js"; import { type PivotFilterController } from "./pivotFilterPopover.js"; import { type TableFilterController } from "./tableFilterPopover.js"; import type { Sheet, WorkbookLayout } from "./types.js"; export interface PreviewerOptions { initialSheet?: number | string; initialZoom?: number; className?: string; report?: LoadReport; showHidden?: boolean; editable?: boolean; onDownload?: () => void | Promise; pivotController?: PivotFilterController; tableController?: TableFilterController; engine?: PreviewerEngine; } export interface PreviewerEngine { parseReferences(sheetName: string, anchorRef: string, formula: string): DependencyReference[]; functionNames(): string[]; } export type { PivotFilterController, PivotFilterContext, } from "./pivotFilterPopover.js"; export type { TableFilterController, TableFilterContext, } from "./tableFilterPopover.js"; export interface PreviewerState { activeSheetIndex: number; activeCell: { r: number; c: number; }; selection: Selection; zoom: number; } export type PreviewerEventName = "selectionchange" | "sheetchange" | "zoomchange" | "layoutchange" | "pivotfilter" | "tablefilter" | "celledit" | "drawingmoved" | "drawingdeleted" | "rangecopy" | "rangecut" | "rangepaste" | "imagepaste" | "rangefill" | "cellclear" | "sheetadd"; export type { PivotFilterEvent, TableFilterEvent, ValidationPickEvent } from "./interact.js"; export interface WorkbookPreviewer { readonly root: HTMLElement; readonly canvas: HTMLCanvasElement; readonly layout: WorkbookLayout; readonly report?: LoadReport; destroy(): void; redraw(): void; replaceLayout(layout: WorkbookLayout): void; patchSheetLayout(layout: WorkbookLayout): void; getState(): PreviewerState; getActiveSheet(): Sheet; getActiveSheetIndex(): number; setActiveSheet(sheet: number | string): void; getActiveCell(): { r: number; c: number; }; getSelection(): Selection; selectCell(r: number, c: number, options?: { scroll?: boolean; }): void; selectRange(selection: Selection, options?: { scroll?: boolean; activeCell?: { r: number; c: number; }; }): void; scrollToCell(r: number, c: number): void; getZoom(): number; setZoom(zoom: number): void; on(name: PreviewerEventName, listener: EventListener): void; off(name: PreviewerEventName, listener: EventListener): void; } export declare function createWorkbookPreviewer(container: HTMLElement, layout: WorkbookLayout, options?: PreviewerOptions): WorkbookPreviewer;