import React, { CSSProperties, ReactNode, useCallback, useEffect, useRef, } from "react"; import { useVirtualizer } from "@tanstack/react-virtual"; import { useInView } from "react-intersection-observer"; import { QortalMetadata } from "../types/interfaces/resources"; interface PropsVirtualizedList { list: any[]; children: (item: any, index: number) => React.ReactNode; onSeenLastItem?: (item: QortalMetadata)=> void; } export const VirtualizedList = ({ list, children, onSeenLastItem }: PropsVirtualizedList) => { const parentRef = useRef(null); const rowVirtualizer = useVirtualizer({ count: list.length, getItemKey: useCallback( (index: number) => list[index]?.name && list[index]?.name ? `${list[index].name}-${list[index].identifier}` : list[index]?.id, [list] ), getScrollElement: () => parentRef.current, estimateSize: () => 80, // Provide an estimated height of items, adjust this as needed overscan: 10, // Number of items to render outside the visible area to improve smoothness }); const onSeenLastItemFunc = useCallback((lastItem: QortalMetadata) => { if(onSeenLastItem){ onSeenLastItem(lastItem) } }, []); return (