import type { PositionCache } from '../utils/positionCache'; import type { CalculationTypeLike, RowsCalculationType } from './viewportBase'; import { ViewportBaseCalculator } from './viewportBase'; /** * @typedef {object} ViewportRowsCalculatorOptions * @property {Map} calculationTypes The calculation types to be performed. * @property {number} viewportHeight Height of the viewport. * @property {number} scrollOffset Current vertical scroll position of the viewport. * @property {number} totalRows Total number of rows. * @property {Function} overrideFn Function that allows to adjust the `startRow` and `endRow` parameters. * @property {number} horizontalScrollbarHeight The scrollbar height. * @property {PositionCache} rowHeightCache A built prefix sum cache. The single source of truth for row sizes. */ export interface ViewportRowsCalculatorOptions { calculationTypes: Array<[string, CalculationTypeLike]>; viewportHeight: number; scrollOffset: number; totalRows: number; overrideFn: ((calc: unknown) => void) | null; horizontalScrollbarHeight?: number; rowHeightCache: PositionCache; } /** * Calculates indexes of rows to render OR rows that are visible OR partially visible in the viewport. * * @class ViewportRowsCalculator */ export declare class ViewportRowsCalculator extends ViewportBaseCalculator { /** * @type {number} */ viewportHeight: number; /** * @type {number} */ scrollOffset: number; /** * @type {number} */ zeroBasedScrollOffset: number; /** * @type {number} */ totalRows: number; /** * @type {number} */ rowHeight: number; /** * @type {((calc: unknown) => void) | null} */ overrideFn: ((calc: unknown) => void) | null; /** * @type {number} */ horizontalScrollbarHeight: number; /** * @type {number} */ innerViewportHeight: number; /** * @type {number} */ totalCalculatedHeight: number; /** * @type {boolean} */ needReverse: boolean; /** * @type {PositionCache | null} */ positionCache: PositionCache | null; /** * @type {number} */ lastProcessedIndex: number; /** * @param {ViewportRowsCalculatorOptions} options Object with all options specified for row viewport calculation. */ constructor({ calculationTypes, viewportHeight, scrollOffset, totalRows, overrideFn, horizontalScrollbarHeight, rowHeightCache, }: ViewportRowsCalculatorOptions); /** * Calculates viewport. */ calculate(): void; /** * @param {string} calculatorId The id of the calculator. * @returns {RowsCalculationType | undefined} */ getResultsFor(calculatorId: string): (RowsCalculationType & CalculationTypeLike) | undefined; /** * Gets the row height at the specified row index. * * @param {number} row Row index. * @returns {number} */ getRowHeight(row: number): number; }