import { formatDuration } from '@/web/utils/common' import { css, cx } from '@emotion/css' import { useMemo } from 'react' import { player } from '@/web/store' import { useSnapshot } from 'valtio' import Wave from './Wave' import Icon from '@/web/components/Icon' const TrackList = ({ tracks, onPlay, className, }: { tracks?: Track[] onPlay: (id: number) => void className?: string }) => { const playerSnapshot = useSnapshot(player) const playingTrack = useMemo( () => playerSnapshot.track, [playerSnapshot.track] ) const handleClick = (e: React.MouseEvent, trackID: number) => { if (e.detail === 2) onPlay?.(trackID) } const playing = useMemo( () => playerSnapshot.state === 'playing', [playerSnapshot.state] ) return (
{tracks?.map(track => (
handleClick(e, track.id)} className='group relative flex items-center py-2 text-16 font-medium text-neutral-200 transition duration-300 ease-in-out' >
{String(track.no).padStart(2, '0')}
{track.name} {playingTrack?.id === track.id && (
)}
{/* */}
{/* */}
{/* */}
{formatDuration(track.dt, 'en', 'hh:mm:ss')}
))}
) } export default TrackList