import { MobileControls } from './MobileControls'; import { useMobilePlayerState } from '../hooks/useMobilePlayerState'; import { useMobilePlayerLogic } from '../hooks/useMobilePlayerLogic'; interface MobileControlsWrapperProps { state: ReturnType['state']; logic: ReturnType; refs: ReturnType['refs']; } export function MobileControlsWrapper({ state, logic, refs }: MobileControlsWrapperProps) { const { isPlaying, currentTime, duration, volume, isMuted, isFullscreen, showControls, playbackRate, showSpeedMenu, showVolumeMenu, showMoreMenu, isPiPSupported, viewportWidth, } = state; const { progressBarRef, videoRef, } = refs; const { togglePlay, skipVideo, toggleMute, toggleFullscreen, togglePictureInPicture, changePlaybackSpeed, handleCopyLink, handleProgressClick, handleProgressTouchStart, handleProgressTouchMove, handleProgressTouchEnd, formatTime, } = logic; const speeds = [0.5, 0.75, 1, 1.25, 1.5, 2]; const isCompactLayout = viewportWidth < 640; return ( state.setShowMoreMenu(!showMoreMenu)} onToggleVolumeMenu={() => state.setShowVolumeMenu(!showVolumeMenu)} onToggleSpeedMenu={() => state.setShowSpeedMenu(!showSpeedMenu)} onTogglePiP={togglePictureInPicture} onVolumeChange={(v) => { state.setVolume(v); if (videoRef.current) videoRef.current.volume = v; state.setIsMuted(v === 0); }} onSpeedChange={changePlaybackSpeed} onCopyLink={handleCopyLink} onProgressClick={handleProgressClick} onProgressTouchStart={handleProgressTouchStart} onProgressTouchMove={handleProgressTouchMove} onProgressTouchEnd={handleProgressTouchEnd} formatTime={formatTime} speeds={speeds} /> ); }