import { clsx } from 'clsx' import { createSignal, Show } from 'solid-js' import { MediaItem } from '../../../pages/types' import { useOutsideClickHandler } from '../../../utils/useOutsideClickHandler' import { Icon } from '../../_shared/Icon' import styles from './AudioPlayer.module.scss' type Props = { onPlayMedia: () => void playPrevTrack: () => void playNextTrack: () => void onVolumeChange: (volume: number) => void isPlaying: boolean currentTrack: MediaItem } export const PlayerHeader = (props: Props) => { const volumeContainerRef: { current: HTMLDivElement } = { current: null, } const [isVolumeBarOpened, setIsVolumeBarOpened] = createSignal(false) const toggleVolumeBar = () => { setIsVolumeBarOpened(!isVolumeBarOpened()) } useOutsideClickHandler({ containerRef: volumeContainerRef, predicate: () => isVolumeBarOpened(), handler: () => toggleVolumeBar(), }) return (
{props.currentTrack.title}
(volumeContainerRef.current = el)} class={styles.volumeContainer}> props.onVolumeChange(Number(target.value))} />
) }