import { type MouseEvent as ReactMouseEvent, type KeyboardEvent as ReactKeyboardEvent, type TouchEvent as ReactTouchEvent } from 'react'; import type { TableFeature, TableOptions } from '../hooks/useTable/types.js'; /** * DataTableV2 columnSizing state represented with a columnId key and a pixel size value. * @public */ export type DataTableV2ColumnSizingState = Record; /** * @public */ export interface DataTableV2ColumnSizingBaseProps { /** * Enables resizable columns for the table. * @defaultValue false */ resizable?: boolean; /** * Callback that triggers when a user finishes resizing a column. */ onColumnSizingChange?: (newSizes: DataTableV2ColumnSizingState) => void; } /** * @public */ export interface DataTableV2ColumnSizingControlledProps extends DataTableV2ColumnSizingBaseProps { /** * ColumnSizing state that lets you set the individual column sizes in a controlled scenario. */ columnSizing?: DataTableV2ColumnSizingState; /** * ColumnSizing state that lets you set the individual column sizes in a uncontrolled scenario. */ defaultColumnSizing?: never; } /** * @public */ export interface DataTableV2ColumnSizingUncontrolledProps extends DataTableV2ColumnSizingBaseProps { /** * ColumnSizing state that lets you set the individual column sizes in a controlled scenario. */ columnSizing?: never; /** * ColumnSizing state that lets you set the individual column sizes in a uncontrolled scenario. */ defaultColumnSizing?: DataTableV2ColumnSizingState; } /** * DataTableV2 props associated with columnSizing / columnResizing feature. * @public */ export type DataTableV2ColumnSizingProps = DataTableV2ColumnSizingControlledProps | DataTableV2ColumnSizingUncontrolledProps; /** * @internal */ export interface DataTableV2ColumnSizingTableState { columnSizing: DataTableV2ColumnSizingState; columnSizingInfo: DataTableV2ColumnSizingInfoState; } /** @internal */ export interface DataTableV2ColumnSizingHeader { getResizeHandler: () => (event: ReactMouseEvent | ReactTouchEvent) => void; getResizeExpandHandler: () => (event: ReactMouseEvent) => void; } /** * @internal */ export interface DataTableV2ColumnSizingInfoState { columnSizingStart: [string, number][]; deltaOffset: null | number; deltaPercentage: null | number; isResizingColumn: false | string; startOffset: null | number; startSize: null | number; } /** * Extension interface to extend the types of the `HeaderCell` from the tanstack table. * @internal */ export interface DataTableV2ColumnSizingHeader { getKeyboardResizeHandler: () => (event: ReactKeyboardEvent) => void; } /** * @internal */ export declare const DataTableV2ColumnSizing: TableFeature; /** * @internal */ export declare function useColumnSizing(props: DataTableV2ColumnSizingProps, options: TableOptions): void;