import React, { useMemo, useState } from 'react'; import { HMSPlaylistType, selectAudioPlaylist, } from '@100mslive/hms-video-store'; import { AudioPlaylistIcon, CloseIcon, PlaylistIcon } from '../Icons'; import { Text } from '../Text'; import { Button } from '../Button'; import { ContextMenu, ContextMenuItem } from '../ContextMenu'; import { PlaylistControls } from './PlaylistControls'; import { PlaylistItem } from './PlaylistItem'; import { useHMSActions, useHMSStore } from '../../hooks/HMSRoomProvider'; import { useHMSTheme } from '../../hooks/HMSThemeProvider'; import { hmsUiClassParserGenerator } from '../../utils/classes'; export interface AudioPlaylistClasses { root?: string; header?: string; body?: string; footer?: string; collapse?: string; controls?: string; icon?: string; sliderContainer?: string; } export interface AudioPlaylistProps { classes: AudioPlaylistClasses; } const defaultClasses = { root: 'flex flex-column text-gray-100 dark:text-white', header: 'flex justify-between items-center px-3 py-3', body: 'flex-1 overflow-y-auto bg-gray-100', collapse: 'h-0', footer: 'py-2', }; export const AudioPlaylist = ({ classes }: AudioPlaylistProps) => { const { tw } = useHMSTheme(); const styler = useMemo( () => hmsUiClassParserGenerator({ tw, classes, defaultClasses, tag: 'hmsui-audioplaylist', }), [], ); const hmsActions = useHMSActions(); const playlist = useHMSStore(selectAudioPlaylist.list); const active = useHMSStore(selectAudioPlaylist.selectedItem); const [open, setOpen] = useState(false); const [collapse, setCollapse] = useState(!!active); return ( setOpen(value => !value)} /> } onTrigger={value => { setOpen(value); }} menuProps={{ anchorOrigin: { vertical: 'top', horizontal: 'center', }, transformOrigin: { vertical: 'bottom', horizontal: 'center', }, }} menuOpen={open} noGutters >
Audio Player
{playlist.map(item => { return ( { await hmsActions.audioPlaylist.play(item.id); }} /> ); })}
{active && (
{ setCollapse(value => !value); }} > } />
)}
); };