import { type Ref, type ComputedRef, type TemplateRef } from 'vue'; export interface VirtualColumnsOptions { scrollContainer: TemplateRef; itemWidth?: number | Ref | ComputedRef; rowHeight?: number | Ref | ComputedRef; overscan?: number; containerPadding?: number | Ref | ComputedRef; lockItemsPerRow: Ref | ComputedRef; } export interface VirtualColumnsReturn { scrollTop: Ref; itemsPerRow: Ref; totalRows: Ref; totalHeight: Ref; visibleRange: Ref<{ start: number; end: number; }>; visibleRows: Ref; updateItemsPerRow: () => void; handleScroll: (event: Event) => void; getRowItems: (items: T[], rowIndex: number) => T[]; getItemsInRange: (items: T[], minRow: number, maxRow: number, minCol: number, maxCol: number) => T[]; getItemPosition: (itemIndex: number) => { row: number; col: number; }; getContainerHeight: () => number; } export default function useVirtualColumns(items: Ref, // Accept only Vue refs (including computed) options: VirtualColumnsOptions): VirtualColumnsReturn;