///
import { ReactNode } from 'react';
import { StyleProp, ViewStyle } from 'react-native';
import { ColumnObject, RowObject } from './VirtualizedGridUtils.js';
export type CellMethods = {
update: (info: {
rowIndex: number;
columnIndex: number;
}) => ReactNode;
};
export type CellProps = {
column: ColumnObject;
row: RowObject;
renderCell: (info: {
column: ColumnObject;
row: RowObject;
focused: boolean;
}) => ReactNode;
focus: (info: {
column: ColumnObject;
row: RowObject;
}) => void;
focused?: boolean;
};
export type VirtualizedGridProps = {
/**
* 单元格最小宽度
*/
cellMinWidth?: number;
/**
* 单元格最小高度
*/
cellMinHeight?: number;
debug?: boolean;
style?: StyleProp;
freezedColumns?: {
/**
* how many columns should be freezed to left
*/
start?: number;
};
freezedRows?: {
/**
* how many rows should be freezed to top
*/
start?: number;
};
columnCount: number;
rowCount: number;
showRowLine?: boolean;
showColumnLine?: boolean;
getColumnWidth?: (info: {
columnIndex: number;
}) => number;
getRowHeight?: (info: {
rowIndex: number;
}) => number;
renderCell: (info: {
focused: boolean;
row: RowObject;
column: ColumnObject;
}) => ReactNode;
renderRow?: (info: {
row: RowObject;
}) => ReactNode;
renderColumn?: (info: {
column: ColumnObject;
}) => ReactNode;
onChangeColumn?: (column: ColumnObject) => void;
onChangeRow?: (row: RowObject) => void;
/**
* change row order event handler
*/
onChangeRowOrder?: (options: {
fromIndex: number;
toIndex: number;
}) => void;
/**
* change column order event handler
*/
onChangeColumnOrder?: (options: {
fromIndex: number;
toIndex: number;
}) => void;
/**
* visible area changed
*/
onChangeVisibleArea?: (event: {
minRow: RowObject;
maxRow: RowObject;
minColumn: ColumnObject;
maxColumn: ColumnObject;
}) => void;
};
export type VirtualizedGridMethods = {
forceUpdate: () => void;
};