import React from 'react'; import { Icons } from '@/components/ui/Icon'; import { DesktopMoreMenu } from './DesktopMoreMenu'; import { DesktopSpeedMenu } from './DesktopSpeedMenu'; interface DesktopOverlayProps { isLoading: boolean; isTransitioningToNextEpisode?: boolean; isPlaying: boolean; showSkipForwardIndicator: boolean; showSkipBackwardIndicator: boolean; skipForwardAmount: number; skipBackwardAmount: number; isSkipForwardAnimatingOut: boolean; isSkipBackwardAnimatingOut: boolean; showToast: boolean; toastMessage: string | null; showControls: boolean; onTogglePlay: () => void; onSkipForward: () => void; onSkipBackward: () => void; showMoreMenu: boolean; isProxied: boolean; onToggleMoreMenu: () => void; onMoreMenuMouseEnter: () => void; onMoreMenuMouseLeave: () => void; onCopyLink: (type?: 'original' | 'proxy') => void; // Speed Menu Props playbackRate: number; showSpeedMenu: boolean; speeds: number[]; onToggleSpeedMenu: () => void; onSpeedChange: (speed: number) => void; onSpeedMenuMouseEnter: () => void; onSpeedMenuMouseLeave: () => void; containerRef: React.RefObject; } export function DesktopOverlay({ isLoading, isTransitioningToNextEpisode = false, isPlaying, showSkipForwardIndicator, showSkipBackwardIndicator, skipForwardAmount, skipBackwardAmount, isSkipForwardAnimatingOut, isSkipBackwardAnimatingOut, showToast, toastMessage, onTogglePlay, onSkipForward, onSkipBackward, showControls, showMoreMenu, isProxied, onToggleMoreMenu, onMoreMenuMouseEnter, onMoreMenuMouseLeave, onCopyLink, playbackRate, showSpeedMenu, speeds, onToggleSpeedMenu, onSpeedChange, onSpeedMenuMouseEnter, onSpeedMenuMouseLeave, containerRef, }: DesktopOverlayProps) { // Show navigation buttons when controls are visible or when paused (controls usually show when paused anyway) const showNavButtons = showControls || !isPlaying; return ( <> {/* More Menu (Top Left) */}
{/* Speed Menu (Top Right) */}
{/* Loading Spinner - Glass Effect */} {isLoading && (
{isTransitioningToNextEpisode ? (
正在自动播放下一集...
) : (
)}
)} {/* Skip Backward Indicator (Animation) */} {showSkipBackwardIndicator && (
-{skipBackwardAmount}秒
)} {/* Skip Forward Indicator (Animation) */} {showSkipForwardIndicator && (
+{skipForwardAmount}秒
)} {/* Previous Button (Method: Skip Backward) */}
{/* Next Button (Method: Skip Forward) - Refined to use FastForward icon */}
{/* Center Play Button (when paused) */} {!isPlaying && !isLoading && (
)} {/* Toast Notification */} {showToast && toastMessage && (
{toastMessage}
)} ); }