import { DetailedMeta } from "@/backend/metadata/getmeta"; import { useIsMobile } from "@/hooks/useIsMobile"; import { useCallback, useRef, useState } from "react"; import { CSSTransition } from "react-transition-group"; import { AirplayControl } from "./controls/AirplayControl"; import { BackdropControl } from "./controls/BackdropControl"; import { ChromeCastControl } from "./controls/ChromeCastControl"; import { FullscreenControl } from "./controls/FullscreenControl"; import { LoadingControl } from "./controls/LoadingControl"; import { MiddlePauseControl } from "./controls/MiddlePauseControl"; import { MobileCenterControl } from "./controls/MobileCenterControl"; import { PageTitleControl } from "./controls/PageTitleControl"; import { PauseControl } from "./controls/PauseControl"; import { ProgressControl } from "./controls/ProgressControl"; import { QualityDisplayControl } from "./controls/QualityDisplayControl"; import { SeriesSelectionControl } from "./controls/SeriesSelectionControl"; import { ShowTitleControl } from "./controls/ShowTitleControl"; import { SkipTime } from "./controls/SkipTime"; import { SourceSelectionControl } from "./controls/SourceSelectionControl"; import { TimeControl } from "./controls/TimeControl"; import { VolumeControl } from "./controls/VolumeControl"; import { VideoPlayerError } from "./parts/VideoPlayerError"; import { VideoPlayerHeader } from "./parts/VideoPlayerHeader"; import { useVideoPlayerState } from "./VideoContext"; import { VideoPlayer, VideoPlayerProps } from "./VideoPlayer"; interface DecoratedVideoPlayerProps { media?: DetailedMeta; onGoBack?: () => void; } function LeftSideControls() { const { videoState } = useVideoPlayerState(); const handleMouseEnter = useCallback(() => { videoState.setLeftControlsHover(true); }, [videoState]); const handleMouseLeave = useCallback(() => { videoState.setLeftControlsHover(false); }, [videoState]); return ( <>
); } export function DecoratedVideoPlayer( props: VideoPlayerProps & DecoratedVideoPlayerProps ) { const top = useRef(null); const center = useRef(null); const bottom = useRef(null); const [show, setShow] = useState(false); const { isMobile } = useIsMobile(); const onBackdropChange = useCallback( (showing: boolean) => { setShow(showing); }, [setShow] ); return (
{isMobile ? (
) : ( "" )}
{isMobile && }
{isMobile ? (
) : ( <>
)}
{props.children} ); }