import {usePlayerStore} from '@common/player/hooks/use-player-store'; import clsx from 'clsx'; import {Seekbar} from '@common/player/ui/controls/seeking/seekbar'; import {PlayButton} from '@common/player/ui/controls/play-button'; import {NextButton} from '@common/player/ui/controls/next-button'; import { ToggleMuteButton, VolumeControls, } from '@common/player/ui/controls/volume-controls'; import {FormattedCurrentTime} from '@common/player/ui/controls/formatted-current-time'; import {FormattedPlayerDuration} from '@common/player/ui/controls/formatted-player-duration'; import {ToggleCaptionsButton} from '@common/player/ui/controls/toggle-captions-button'; import {PlaybackOptionsButton} from '@common/player/ui/controls/playback-options-button'; import {FullscreenButton} from '@common/player/ui/controls/fullscreen-button'; import {PipButton} from '@common/player/ui/controls/pip-button'; import {Fragment, ReactNode} from 'react'; import {useIsMobileMediaQuery} from '@common/utils/hooks/is-mobile-media-query'; interface Props { rightActions?: ReactNode; onPointerEnter?: () => void; onPointerLeave?: () => void; } export function VideoPlayerControls(props: Props) { const isMobile = useIsMobileMediaQuery(); const controlsVisible = usePlayerStore(s => s.controlsVisible); const className = clsx( 'player-bottom-text-shadow absolute z-40 text-white/87 transition-opacity duration-300', controlsVisible ? 'opacity-100' : 'opacity-0' ); return isMobile ? ( ) : ( ); } interface ResponsiveControlsProps extends Props { className: string; } function DesktopControls({ onPointerEnter, onPointerLeave, rightActions, className, }: ResponsiveControlsProps) { return (
e.stopPropagation()} className={clsx('bottom-0 left-0 right-0 p-8', className)} >
/{' '}
{rightActions}
); } function MobileControls({ rightActions, onPointerEnter, onPointerLeave, className, }: ResponsiveControlsProps) { return (
e.stopPropagation()} className={clsx('left-0 right-0 top-0 px-6 pt-6 ', className)} >
{rightActions}
e.stopPropagation()} className={clsx('bottom-0 left-0 right-0 px-12', className)} >
/{' '}
); }