import type { Theme } from "../.."; import type { SpriteManager } from "../data-grid-sprites"; import type { InnerGridCell, Rectangle, ImageWindowLoader, CustomCell, ProvideEditorCallback, BaseGridMouseEventArgs } from "../data-grid-types"; export interface BaseDrawArgs { ctx: CanvasRenderingContext2D; theme: Theme; col: number; row: number; rect: Rectangle; highlighted: boolean; hoverAmount: number; hoverX: number | undefined; hoverY: number | undefined; imageLoader: ImageWindowLoader; spriteManager: SpriteManager; hyperWrapping: boolean; cell: InnerGridCell; requestAnimationFrame: () => void; } /** @category Drawing */ export interface DrawArgs extends BaseDrawArgs { cell: T; } /** @category Drawing */ export interface PrepResult { font: string | undefined; fillStyle: string | undefined; renderer: {}; deprep: ((args: Pick) => void) | undefined; } /** @category Renderers */ export declare type DrawCallback = (args: DrawArgs, cell: T) => void; declare type PrepCallback = (args: BaseDrawArgs, lastPrep?: PrepResult) => Partial; interface BaseCellRenderer { readonly kind: T["kind"]; readonly draw: DrawCallback; readonly drawPrep?: PrepCallback; readonly needsHover?: boolean; readonly needsHoverPosition?: boolean; readonly measure?: (ctx: CanvasRenderingContext2D, cell: T, theme: Theme) => number; readonly provideEditor?: ProvideEditorCallback; readonly onClick?: (args: { readonly cell: T; readonly posX: number; readonly posY: number; readonly bounds: Rectangle; readonly theme: Theme; readonly preventDefault: () => void; } & BaseGridMouseEventArgs) => T | undefined; readonly onSelect?: (args: { readonly cell: T; readonly posX: number; readonly posY: number; readonly bounds: Rectangle; readonly theme: Theme; readonly preventDefault: () => void; } & BaseGridMouseEventArgs) => void; readonly onDelete?: (cell: T) => T | undefined; } export interface PasteImage { name: string; type: string; blob: Blob; } export declare type CellPasteValue = string | PasteImage; /** @category Renderers */ export interface InternalCellRenderer extends BaseCellRenderer { readonly useLabel?: boolean; readonly getAccessibilityString: (cell: T) => string; readonly onPaste: (val: CellPasteValue, cell: T) => Promise | T | undefined; } /** @category Renderers */ export interface CustomRenderer extends BaseCellRenderer { readonly isMatch: (cell: CustomCell) => cell is T; readonly onPaste?: (val: CellPasteValue, cellData: T["data"]) => Promise | T["data"] | undefined; } /** @category Renderers */ export declare type CellRenderer = [T] extends [CustomCell] ? CustomRenderer> : InternalCellRenderer; /** @category Renderers */ export declare type GetCellRendererCallback = (cell: T) => CellRenderer | undefined; export {}; //# sourceMappingURL=cell-types.d.ts.map