import React, { FC } from 'react'; import { TabletDesktopWrapper, TabletDesktopInnerWrapper, LeftControls, CenterControls, RightControls, TabletDesktopPlayPauseButton, TabletDesktopStatusText, TabletDesktopVolumeControlContainer, TabletDesktopVolumeButton, TabletDesktopVolumeSlider, TabletDesktopTimeDisplay, TabletDesktopSeekBar, TabletDesktopSpeedButton, SpeedSelectModal, SpeedOptionItem, TabletDesktopCloseButton, SpeedButtonContainer, SpeedOptionsContainer } from './styles'; import { PlayIcon, PauseIcon, IconVolume, IconCheck, AudioCloseIcon } from '@times-components/icons'; import { formatTime } from './utils'; import { TabletDesktopPlayerProps } from './types'; export const TabletDesktopPlayer: FC = ({ isPlaying, togglePlayPause, currentTime, duration, allowTogglePlay, allowSeek, allowVolumeChange, volume, handleSeek, handleVolumeChange, speed, allowPlaybackRateChange, isSpeedModalOpen, setIsSpeedModalOpen, speedOptions, handleSpeedSelect, isVolumeSliderVisible, setIsVolumeSliderVisible, onClose, allowExpandCollapse, isMobile }) => { return ( {isPlaying ? : } {isPlaying ? 'Playing' : 'Paused'} {allowVolumeChange && ( setIsVolumeSliderVisible(!isVolumeSliderVisible)} aria-label="Volume Control" > {isVolumeSliderVisible && ( handleVolumeChange(parseFloat(e.target.value))} /> )} )} {formatTime(currentTime)} handleSeek(parseFloat(e.target.value))} disabled={!allowSeek} aria-label="Seek Bar" progress={duration > 0 ? (currentTime / duration) * 100 : 0} /> {formatTime(duration)} {allowPlaybackRateChange && ( { if (allowPlaybackRateChange) { setIsSpeedModalOpen(!isSpeedModalOpen); } }} aria-label="Change Playback Speed" > Speed {isSpeedModalOpen && ( {speedOptions.map(option => ( handleSpeedSelect(option)} > {option}x {option === speed && } ))} )} )} {allowExpandCollapse && ( )} ); };