import type { PositionCache } from '../utils/positionCache'; import type { CalculationTypeLike, ColumnsCalculationType } from './viewportBase'; import { ViewportBaseCalculator } from './viewportBase'; /** * @typedef {object} ViewportColumnsCalculatorOptions * @property {Map} calculationTypes The calculation types to be performed. * @property {number} viewportWidth Width of the viewport. * @property {number} scrollOffset Current horizontal scroll position of the viewport. * @property {number} totalColumns Total number of columns. * @property {Function} overrideFn Function that allows to adjust the `startRow` and `endRow` parameters. * @property {string} inlineStartOffset Inline-start offset of the parent container. * @property {PositionCache} columnWidthCache A built prefix sum cache. The single source of truth for column sizes. */ export interface ViewportColumnsCalculatorOptions { calculationTypes: Array<[string, CalculationTypeLike]>; viewportWidth: number; scrollOffset: number; totalColumns: number; overrideFn: ((calc: unknown) => void) | null; inlineStartOffset: number; columnWidthCache: PositionCache; } /** * Calculates indexes of columns to render OR columns that are visible OR partially visible in the viewport. * * @class ViewportColumnsCalculator */ export declare class ViewportColumnsCalculator extends ViewportBaseCalculator { /** * @type {number} */ viewportWidth: number; /** * @type {number} */ scrollOffset: number; /** * @type {number} */ zeroBasedScrollOffset: number; /** * @type {number} */ totalColumns: number; /** * @type {number} */ columnWidth: number; /** * @type {((calc: unknown) => void) | null} */ overrideFn: ((calc: unknown) => void) | null; /** * @type {number} */ inlineStartOffset: number; /** * @type {number} */ totalCalculatedWidth: number; /** * @type {boolean} */ needReverse: boolean; /** * @type {PositionCache | null} */ positionCache: PositionCache | null; /** * @type {number} */ lastProcessedIndex: number; /** * @param {ViewportColumnsCalculatorOptions} options Object with all options specified for column viewport calculation. */ constructor({ calculationTypes, viewportWidth, scrollOffset, totalColumns, overrideFn, inlineStartOffset, columnWidthCache, }: ViewportColumnsCalculatorOptions); /** * Calculates viewport. */ calculate(): void; /** * @param {string} calculatorId The id of the calculator. * @returns {ColumnsCalculationType | undefined} */ getResultsFor(calculatorId: string): (ColumnsCalculationType & CalculationTypeLike) | undefined; /** * Gets the column width at the specified column index. * * @param {number} column Column index. * @returns {number} */ getColumnWidth(column: number): number; }