import { TextCellRenderer } from "../renderers/TextCellRenderer"; import { ICellCallback } from "../types"; import { Hook } from "../utils/Hook"; export declare type cssspace_t = number; export declare type renderspace_t = number; export declare type row_t = number; export declare type col_t = number; export declare class TableState { containerElement: HTMLElement; constructor(containerElement: HTMLElement); canvasContainerElement: HTMLDivElement; canvasElement: HTMLCanvasElement; cellRenderers: TextCellRenderer[]; colsLeft: Int32Array; containerHeight: cssspace_t; containerWidth: cssspace_t; contentElement: HTMLDivElement; ctx: CanvasRenderingContext2D | null; frozenHeight: renderspace_t; frozenWidth: renderspace_t; layers: Layer[]; pixelRatio: number; scrollLeft: cssspace_t; scrollTop: cssspace_t; selection: Set; userCellCallback: ICellCallback; userCols: string[]; userColWidths: Map; userRows: string[]; virtualHeight: renderspace_t; virtualWidth: renderspace_t; onDirty: Hook; onInvalidate: Hook; onDispose: Hook; onResize: Hook; onBeforeRender: Hook; onRender: Hook; onStart: Hook; } export interface IRenderContext { ctx: CanvasRenderingContext2D; pixelRatio: number; } export declare class TableElement { data: IElementData; parent: TableElement | null; constructor(data: IElementData, parent: TableElement | null); } export declare type IElementData = { type: "colheader_resize_handle"; col: col_t; } | { type: "colheader"; col: col_t; } | { type: "cell"; row: row_t; col: col_t; } | { type: "row"; row: row_t; } | { type: "root"; }; export interface Layer { render(table: TableState, source: Rect, clean: Rect): void; query(table: TableState, x: renderspace_t, y: renderspace_t): TableElement | null; } export interface CellRenderer { cellKind: string; render(table: TableState, cells: Cell[]): void; } export declare class Cell { row: row_t; col: col_t; value: any; constructor(row: row_t, col: col_t, value: any); } export declare class Rect { readonly left: T; readonly top: T; readonly width: T; readonly height: T; constructor(left: T, top: T, width: T, height: T); get right(): T; get bottom(): T; }