import { Group } from '@mantine/core'; import { useVirtualizer } from '@tanstack/react-virtual'; import { useRef } from 'react'; import { RiAddBoxFill, RiAddCircleFill, RiPlayFill } from 'react-icons/ri'; import { generatePath } from 'react-router'; import { Link } from 'react-router-dom'; import { LibraryItem } from '/@/renderer/api/types'; import { Button, NativeScrollArea, Text } from '/@/renderer/components'; import { usePlayQueueAdd } from '/@/renderer/features/player'; import { usePlaylistList } from '/@/renderer/features/playlists'; import { AppRoute } from '/@/renderer/router/routes'; import { Play } from '/@/renderer/types'; interface SidebarPlaylistListProps { data: ReturnType['data']; } export const SidebarPlaylistList = ({ data }: SidebarPlaylistListProps) => { const scrollAreaRef = useRef(null); const handlePlayQueueAdd = usePlayQueueAdd(); const handlePlayPlaylist = (id: string, play: Play) => { handlePlayQueueAdd?.({ byItemType: { id: [id], type: LibraryItem.PLAYLIST, }, play, }); }; const rowVirtualizer = useVirtualizer({ count: data?.items?.length || 0, estimateSize: () => 25, getScrollElement: () => { return scrollAreaRef.current; }, overscan: 5, }); return (
{rowVirtualizer.getVirtualItems().map((virtualRow) => (
{data?.items?.[virtualRow.index].name}
))}
); };