/** * Оверлей с информацией о переходе в видеоплеере */ import { X } from "lucide-react" import { Button } from "@/components/ui/button" import { Card, CardContent } from "@/components/ui/card" import { Progress } from "@/components/ui/progress" import { TimelineTransition } from "@/features/timeline/types/timeline-transition" import { cn } from "@/lib/utils" interface TransitionPlayerOverlayProps { transition: TimelineTransition progress: number // 0-1 onClose?: () => void className?: string compact?: boolean } /** * Оверлей для отображения информации о переходе в плеере */ export function TransitionPlayerOverlay({ transition, progress, onClose, className, compact = false, }: TransitionPlayerOverlayProps) { if (compact) { return (
{transition.transitionId} {(progress * 100).toFixed(0)}%
) } return (

Активный переход

{onClose && ( )}
{/* Основная информация */}
Тип перехода
{transition.transitionId}
{/* Прогресс */}
Прогресс {(progress * 100).toFixed(1)}%
{/* Временные параметры */}
Позиция
{transition.position.toFixed(2)}s
Длительность
{transition.duration.toFixed(2)}s
{/* Тип перехода */}
Режим
{transition.type === "in" && "Вход"} {transition.type === "out" && "Выход"} {transition.type === "between" && "Между клипами"}
{/* Параметры */} {transition.parameters && Object.keys(transition.parameters).length > 0 && (
Параметры
{transition.parameters.intensity && (
Интенсивность: {(transition.parameters.intensity * 100).toFixed(0)}%
)} {transition.parameters.direction && (
Направление: {transition.parameters.direction}
)} {transition.parameters.blur?.enabled && (
Размытие: {transition.parameters.blur.amount}%
)}
)} {/* Статус */}
{transition.isEnabled ? "Включён" : "Отключён"} {transition.renderCache?.status && ( <> • Кеш: {transition.renderCache.status} )}
) } /** * Мини-индикатор перехода для показа в углу плеера */ export function TransitionMiniIndicator({ transition, progress, className, }: { transition: TimelineTransition progress: number className?: string }) { return (
{transition.transitionId} {(progress * 100).toFixed(0)}%
) }