import { DropdownSourceItem } from '../vega-dropdown/types';

/**
 * Item type consumed by the virtual scroll component (alias).
 */
export type SourceItemType = DropdownSourceItem;

/**
 * Scrolling modes supported by the virtual scroll component.
 */
export type VirtualScrollMode = 'normal' | 'virtual';

/**
 * Positioning configuration object used during virtual scroll calculations.
 */
export type VirtualScrollPositionConfig = {
	/**
	 * Starting index for the rendered window.
	 */
	startIndex: number;
	/**
	 * Index of the first item visible in the viewport.
	 */
	viewportStartIndex: number;
	/**
	 * Ending index for the rendered window.
	 */
	endIndex: number;
	/**
	 * Vertical translate offset in pixels.
	 */
	transformY: number;
};

/**
 * Payload emitted when the virtual scroll reaches the bottom of the list.
 */
export type VegaVirtualScrollToBottomEvent = {
	/**
	 * The final item index reached at the bottom.
	 */
	endIndex: number;
};
