import React, { useRef } from 'react'; import { useVirtualizer } from '@tanstack/react-virtual'; import type { VideoData } from '../types/video'; import { formatDuration, formatDate } from '../utils/csvParser'; import { Badge } from './ui/badge'; import { Button } from './ui/button'; interface VirtualTableProps { data: VideoData[]; } export function VirtualTable({ data }: VirtualTableProps) { const parentRef = useRef(null); console.log(data); const rowVirtualizer = useVirtualizer({ count: data.length, getScrollElement: () => parentRef.current, estimateSize: () => 120, overscan: 5, }); const virtualItems = rowVirtualizer.getVirtualItems(); return (
{/* Table Header */}
Video
Channel
Classification
Language
Duration
Date
Actions
{/* Virtual Container */}
{virtualItems.map((virtualItem) => { const video = data[virtualItem.index]; console.log(data, virtualItem, video); if (!video) return null; return (
{/* Video Info */}

{video.video_title}

{video.detailed_subtags.split(',').slice(0, 3).map((tag, i) => ( {tag.trim()} ))}
{/* Channel */}
{video.channel_name}
{video.playlist_name}
{/* Classification */}
{video.classification}
{/* Language */}
{video.language}
{/* Duration */}
{formatDuration(video.video_length_seconds)}
{/* Date */}
{formatDate(video.video_date)}
Added: {formatDate(video.timestamp)}
{/* Actions */}
); })}
{/* Footer */}
Showing {data.length} videos
); }