import React, { useRef, useMemo, useState, useEffect, RefObject, MutableRefObject } from 'react'; export type ConstRef = Readonly>; export interface ElementSize { width: number; height: number; } export interface ElementScroll { x: number; y: number; } export interface GridListItemData { key: string; height: number; width: number; } export interface GridListEntry

{ item: P; data: GridListItemData; } export interface GridListConfigData

{ windowMargin: number; gridGap: number; columnCount: number; entries: GridListEntry

[]; } export interface GridListContainerData { windowSize: ElementSize; elementSize: ElementSize | null; windowScroll: ElementScroll; elementWindowOffset: number | null; } export interface GridListCell

{ key: string; columnNumber: number; rowNumber: number; offset: number; height: number; width: number; item: P; } export interface GridListLayoutData

{ totalHeight: number; cells: GridListCell

[]; } export interface GridListRenderData

{ cellsToRender: GridListCell

[]; firstRenderedRowNumber: number | null; firstRenderedRowOffset: number | null; }