import { round } from 'common/math'; import { useBackend } from '../backend'; import { Box, Button, Collapsible, LabeledList, ProgressBar, Section, Slider } from '../components'; import { Window } from '../layouts'; export const Jukebox = (props, context) => { const { act, data } = useBackend(context); const { playing, loop_mode, volume, current_track_ref, current_track, current_genre, percent, tracks } = data; let genre_songs = tracks.length && tracks.reduce((acc, obj) => { let key = obj.genre || 'Uncategorized'; if (!acc[key]) { acc[key] = []; } acc[key].push(obj); return acc; }, {}); let true_genre = playing && (current_genre || 'Uncategorized'); return (
{(playing && current_track && ( {current_track.title} by {current_track.artist || 'Unkown'} )) || Stopped} round(val, 1) + '%'} onChange={(e, val) => act('volume', { val: round(val / 100, 2) })} />
{(tracks.length && Object.keys(genre_songs) .sort() .map((genre) => (
{genre_songs[genre].map((track) => ( ))}
))) || Error: No songs loaded.}
); };