import type { ElementSize } from '../../../models/elementSize'; export interface GridDimensions { /** * The viewport size including scrollbars. */ viewportOuterSize: ElementSize; /** * The viewport size not including scrollbars. */ viewportInnerSize: ElementSize; /** * Indicates if a scroll is currently needed to go from the beginning of the first column to the end of the last column. */ hasScrollX: boolean; /** * Indicates if a scroll is currently needed to go from the beginning of the first row to the end of the last row. */ hasScrollY: boolean; /** * Size of the scrollbar used to scroll the rows in pixel. * It is defined even when the scrollbar is currently not needed. */ scrollBarSize: number; } export interface GridDimensionsApi { /** * Triggers a resize of the component and recalculation of width and height. */ resize: () => void; /** * Returns the dimensions of the grid * @returns {GridDimensions | null} The dimension information of the grid. If `null`, the grid is not ready yet. */ getRootDimensions: () => GridDimensions | null; } export interface GridDimensionsPrivateApi { /** * Returns the amount of rows that are currently visible in the viewport * @returns {number} The amount of rows visible in the viewport */ getViewportPageSize: () => number; /** * Forces a recalculation of all dimensions. */ updateGridDimensionsRef: () => void; /** * Computes the size and publishes a `resize` event with the new value. */ computeSizeAndPublishResizeEvent: () => void; }