import type { Ref } from "vue"; import type { DataGridColumnSnapshot, DataGridRowId, DataGridRowNode, DataGridSelectionProjectionIdentity, DataGridSelectionSnapshot } from "@affino/datagrid-core"; import type { DataGridCopyRange, GridSelectionPointLike } from "../advanced"; import type { UseDataGridRuntimeResult } from "../composables/useDataGridRuntime"; import type { DataGridAppMode } from "./useDataGridAppControls"; export interface DataGridAppCellCoord { rowIndex: number; columnIndex: number; rowId: DataGridRowId | null; } export type DataGridAppSelectionAnchorLike = DataGridAppCellCoord | GridSelectionPointLike; export interface UseDataGridAppCellSelectionOptions { mode: Ref; runtime: Pick, "api" | "getBodyRowAtIndex">; totalRows: Ref; visibleColumns: Ref; viewportRowStart: Ref; resolveRowIndex?: (rowOffset: number) => number; selectionSnapshot: Ref; selectionAnchor: Ref | null>; isEditingCell: (row: DataGridRowNode, columnKey: string) => boolean; isVirtualSelectionMode?: () => boolean; isRowLoadedAtIndex?: (rowIndex: number) => boolean; resolveLoadedRowIntervals?: (range: DataGridCopyRange) => readonly { start: number; end: number; }[]; resolveProjectionIdentity?: () => DataGridSelectionProjectionIdentity | null; } export interface UseDataGridAppCellSelectionResult { normalizeRowId: (value: unknown) => DataGridRowId | null; normalizeCellCoord: (coord: DataGridAppCellCoord) => DataGridAppCellCoord | null; resolveSelectionRange: () => DataGridCopyRange | null; resolveSelectionRanges: () => readonly DataGridCopyRange[]; resolveCurrentCellCoord: () => { rowIndex: number; columnIndex: number; } | null; applySelectionRange: (range: DataGridCopyRange) => void; applyCellSelectionByCoord: (coord: DataGridAppCellCoord, extend: boolean, fallbackAnchor?: DataGridAppSelectionAnchorLike, additive?: boolean) => void; setCellSelection: (row: DataGridRowNode, rowOffset: number, columnIndex: number, extend: boolean, additive?: boolean) => void; clearCellSelection: () => void; isCellSelected: (rowOffset: number, columnIndex: number) => boolean; isSelectionAnchorCell: (rowOffset: number, columnIndex: number) => boolean; shouldHighlightSelectedCell: (rowOffset: number, columnIndex: number) => boolean; isCellOnSelectionEdge: (rowOffset: number, columnIndex: number, edge: "top" | "right" | "bottom" | "left") => boolean; } export declare function useDataGridAppCellSelection(options: UseDataGridAppCellSelectionOptions): UseDataGridAppCellSelectionResult; //# sourceMappingURL=useDataGridAppCellSelection.d.ts.map