import { type FocusEventHandler, type MouseEventHandler, type MouseEvent as ReactMouseEvent, type ReactNode, type RefObject } from "react"; import type { ColumnGroupProps } from "../ColumnGroup"; import type { FocusedPart } from "../CursorContext"; import type { GridCellSelectionMode, GridColumnGroupModel, GridColumnModel, GridColumnMoveHandler, GridRowModel, GridRowSelectionMode, RowKeyGetter } from "../Grid"; import type { GridColumnInfo } from "../GridColumn"; import type { GridContext } from "../GridContext"; import { NumberRange } from "../NumberRange"; export declare function useActiveOnWheel(onWheel: EventListener): RefObject; export declare function useSumWidth(columns: GridColumnModel[]): number; export declare function useSum(source: number[]): number; export declare function useSumRangeWidth(columns: GridColumnModel[], range: NumberRange): number; export declare function useBodyVisibleColumnRange(midColumns: GridColumnModel[], scrollLeft: number, clientMidWidth: number): NumberRange; export declare function useClientMidWidth(clientWidth: number, leftWidth: number, rightWidth: number): number; export declare function useClientMidHeight(clientHeight: number, topHeight: number, botHeight: number): number; export declare function useBodyVisibleAreaTop(rowHeight: number, visibleRowRange: NumberRange, topHeight: number): number; export declare function useVisibleRowRange(scrollTop: number, clientMidHeight: number, rowHeight: number, rowCount: number): NumberRange; export declare function useColumnRange(columns: GridColumnModel[], range: NumberRange): GridColumnModel[]; export declare function useLeftScrolledOutWidth(midColumns: GridColumnModel[], bodyVisibleColumnRange: NumberRange): number; export declare function useRowIdxByKey(rowKeyGetter: RowKeyGetter, rowData: T[]): Map; export type SetState = (v: T | ((p: T) => T)) => void; export declare function useRowModels(getKey: RowKeyGetter, rowData: T[], visibleRowRange: NumberRange): GridRowModel[]; export declare const useColumnGroups: (grpPs: ColumnGroupProps[], startIdx: number) => GridColumnGroupModel[]; export declare function useVisibleColumnGroupRange(bodyVisColRng: NumberRange, midCols: GridColumnModel[], midGrpByColId: Map, leftGrpCount: number): NumberRange; export declare function last(source: T[]): T; export declare function useHeadVisibleColumnRange(bodyVisColRng: NumberRange, visColGrps: GridColumnGroupModel[], midColsById: Map>, leftColCount: number): NumberRange; export declare function useCols(colInfos: GridColumnInfo[], startIdx: number, groups: GridColumnGroupModel[]): GridColumnModel[]; export declare function useScrollToCell(visRowRng: NumberRange, rowHeight: number, clientMidHeight: number, midCols: GridColumnModel[], bodyVisColRng: NumberRange, clientMidWidth: number, scroll: (left?: number, top?: number, source?: "user" | "table") => void): (part: FocusedPart, rowIdx: number, colIdx: number) => void; export declare function useColumnResize(cols: GridColumnModel[], resizeColumn: (columnIndex: number, width: number) => void): (event: ReactMouseEvent) => void; export declare function useFlatten(map: Map): T[]; export declare function useColumnRegistry(children: ReactNode): { leftCols: GridColumnModel[]; midCols: GridColumnModel[]; rightCols: GridColumnModel[]; leftGroups: GridColumnGroupModel[]; midGroups: GridColumnGroupModel[]; rightGroups: GridColumnGroupModel[]; contextValue: GridContext; }; export type SelectRowsOptions = { rowIndex: number; isRange?: boolean; incremental?: boolean; unselectOtherRows?: boolean; }; export declare function useRowSelection(rowKeyGetter: RowKeyGetter, rowData: T[], defaultSelectedRowIdxs?: number[], selectedRowIdxs?: number[], rowSelectionMode?: GridRowSelectionMode, onRowSelected?: (selectedRowIdxs: number[]) => void): { onMouseDown: (event: ReactMouseEvent) => void; selRowIdxs: Set; isAllSelected: boolean; isAnySelected: boolean; selectRows: ({ rowIndex, isRange, incremental, unselectOtherRows, }: SelectRowsOptions) => void; selectAll: () => void; unselectAll: () => void; }; export interface ColumnDragState { columnIndex: number; x: number; y: number; } export interface Target { columnIndex: number; x: number; } export declare function useColumnMove(columnMove: boolean | undefined, rootRef: RefObject, leftCols: GridColumnModel[], midCols: GridColumnModel[], rightCols: GridColumnModel[], cols: GridColumnModel[], scrollLeft: number, clientMidWidth: number, onColumnMove: GridColumnMoveHandler): { onColumnMoveHandleMouseDown: MouseEventHandler; dragState: ColumnDragState | undefined; activeTarget: Target | undefined; onColumnMoveCancel: () => void; }; export interface CellPosition { rowIdx: number; colIdx: number; } export interface CellRange { start: CellPosition; end: CellPosition; } export declare function cellPositionEquals(a: CellPosition, b: CellPosition): boolean; export declare function cellRangeEquals(a: CellRange | undefined, b: CellRange | undefined): boolean; export declare function useRangeSelection(cellSelectionMode?: GridCellSelectionMode): { selectedCellRange: CellRange | undefined; onCellMouseDown: (event: ReactMouseEvent) => void; onKeyboardRangeSelectionStart: (pos: CellPosition) => void; onKeyboardRangeSelectionEnd: () => void; onCursorMove: (pos: CellPosition) => void; selectRange: (range: CellRange) => void; }; export declare function useFocusableContent(): { ref: RefObject; isFocusableContent: boolean; onFocus: FocusEventHandler; };