import type { HeatmapDescriber } from './heatmap-format'; import { type BodyRow, type HeatmapCellInfo, type HeatmapColumn, type HeatmapRow, type HeatmapTotals, type ModelCell } from './heatmap-model'; import { type HeatmapAggregate, type ResolvedHeatmapScale } from './heatmap-scale'; import { type HeatmapPalette } from './heatmap-variants'; /** How the selection behaves. */ export type HeatmapSelectionMode = 'none' | 'single' | 'multiple' | 'range'; /** A position in the navigable matrix: a body or footer row and a column * (the last column is the row-totals column when there is one). */ export interface GridPosition { rowKey: string; col: number; } /** Internal selection key for a data cell: its row id and column id, never * its position, so a change to the columns cannot move it. */ export declare const selectionKey: (rowId: string, columnId: string | number) => string; /** The row id and the column id (as a string) a selection key holds. */ export declare const splitSelectionKey: (key: string) => [string, string]; export interface HeatmapGridProps { title: string; rowsLabel?: string; rows: readonly HeatmapRow[]; columns: readonly HeatmapColumn[]; matrix: readonly ModelCell[][]; body: readonly BodyRow[]; scale: ResolvedHeatmapScale; palette: HeatmapPalette; describer: HeatmapDescriber; showValues: boolean; /** Every total, withheld ones already reduced to a value-less cell. */ totals: HeatmapTotals | null; rowTotals: HeatmapAggregate | false; columnTotals: HeatmapAggregate | false; /** How a group header's per-column totals are worked out. */ groupColumnMethod: HeatmapAggregate; /** Each group's public id: what DOM hooks carry, never a label. */ groupIds: ReadonlyMap; selectionMode: HeatmapSelectionMode; /** Selection keys (row id + column id) of the selected cells. */ selected: ReadonlySet; /** Column index for the column id a selection key holds. */ columnIndexOfKey: (columnKey: string) => number | undefined; interactive: boolean; virtualised: boolean; size: 'sm' | 'md' | 'lg'; density: 'compact' | 'default'; cellInfo: (rowIndex: number, columnIndex: number) => HeatmapCellInfo; /** A data cell's tooltip text. */ tooltipText: (cell: HeatmapCellInfo) => string; /** Describe the focused data cell with its tooltip text (a consumer's * renderTooltip says more than the cell's name). */ describeFocused: boolean; /** A data cell was activated by click, Enter or Space. `select` is false * for a click that only reports the cell (a range press already chose). */ onActivate: (rowIndex: number, columnIndex: number, select: boolean) => void; /** Range drag or Shift+arrows: select the rectangle anchor to target. */ onRange: (anchor: { rowIndex: number; col: number; }, target: { rowIndex: number; col: number; }) => void; onToggleGroup: (groupId: string) => void; } export declare function HeatmapGrid(props: HeatmapGridProps): import("react/jsx-runtime").JSX.Element; //# sourceMappingURL=heatmap-grid.d.ts.map