import { StyleValue } from '@solidjs-use/shared/solid-to-vue'; import { Accessor } from 'solid-js'; import { MaybeAccessor } from '@solidjs-use/shared'; type UseVirtualListItemSize = number | ((index: number) => number); interface UseHorizontalVirtualListOptions extends UseVirtualListOptionsBase { /** * item width, accept a pixel value or a function that returns the height * * @default 0 */ itemWidth: UseVirtualListItemSize; } interface UseVerticalVirtualListOptions extends UseVirtualListOptionsBase { /** * item height, accept a pixel value or a function that returns the height * * @default 0 */ itemHeight: UseVirtualListItemSize; } interface UseVirtualListOptionsBase { /** * the extra buffer items outside of the view area * * @default 5 */ overscan?: number; } type UseVirtualListOptions = UseHorizontalVirtualListOptions | UseVerticalVirtualListOptions; interface UseVirtualListItem { data: T; index: number; } interface UseVirtualListReturn { list: Accessor>>; scrollTo: (index: number) => void; containerProps: { ref: (el: HTMLElement | null) => void; onScroll: () => void; style: StyleValue; }; wrapperProps: Accessor<{ style: { width: string; height: string; 'margin-top': string; } | { width: string; height: string; 'margin-left': string; display: string; }; }>; } /** * Create virtual lists with ease. * * @see https://solidjs-use.github.io/solidjs-use/core/useVirtualList */ declare function useVirtualList(list: MaybeAccessor, options: UseVirtualListOptions): UseVirtualListReturn; export { UseHorizontalVirtualListOptions, UseVerticalVirtualListOptions, UseVirtualListItem, UseVirtualListOptions, UseVirtualListOptionsBase, UseVirtualListReturn, useVirtualList };