import React, { Component } from 'react'; import { SortDirectionType, CellMeasurerCache, GridCellProps, Index } from 'react-virtualized'; import { Themeable } from '../../types/theme'; import { TableCellBuilder, ColumnStyle, TableCellBuilderOptions } from './TableCellBuilder'; import { SeriesData } from '../../types/data'; import { InterpolateFunction } from '../../types/panel'; export interface Props extends Themeable { data: SeriesData; minColumnWidth: number; showHeader: boolean; fixedHeader: boolean; fixedColumns: number; rotate: boolean; styles: ColumnStyle[]; replaceVariables: InterpolateFunction; width: number; height: number; isUTC?: boolean; } interface State { sortBy?: number; sortDirection?: SortDirectionType; data: SeriesData; } interface ColumnRenderInfo { header: string; width: number; builder: TableCellBuilder; } interface DataIndex { column: number; row: number; } export declare class Table extends Component { renderer: ColumnRenderInfo[]; measurer: CellMeasurerCache; scrollToTop: boolean; rotateWidth: number; static defaultProps: { showHeader: boolean; fixedHeader: boolean; fixedColumns: number; rotate: boolean; minColumnWidth: number; }; constructor(props: Props); componentDidUpdate(prevProps: Props, prevState: State): void; /** Given the configuration, setup how each column gets rendered */ initColumns(props: Props): ColumnRenderInfo[]; doSort: (columnIndex: number) => void; /** Converts the grid coordinates to SeriesData coordinates */ getCellRef: (rowIndex: number, columnIndex: number) => DataIndex; onCellClick: (rowIndex: number, columnIndex: number) => void; headerBuilder: (cell: TableCellBuilderOptions) => React.ReactElement<"div", string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>; getTableCellBuilder: (column: number) => TableCellBuilder; cellRenderer: (props: GridCellProps) => React.ReactNode; getColumnWidth: (col: Index) => number; render(): JSX.Element; } export default Table;