import { useState } from "react" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Switch } from "@/components/ui/switch" import { Textarea } from "@/components/ui/textarea" import { SubtitleClip } from "../types/timeline" interface SubtitleEditorProps { open: boolean onOpenChange: (open: boolean) => void subtitle?: SubtitleClip | null onSave: (subtitle: Partial) => void availableStyles?: Array<{ id: string; name: string }> } export function SubtitleEditor({ open, onOpenChange, subtitle, onSave, availableStyles = [] }: SubtitleEditorProps) { const [text, setText] = useState(subtitle?.text || "") const [startTime, setStartTime] = useState(subtitle?.startTime || 0) const [duration, setDuration] = useState(subtitle?.duration || 2) const [styleId, setStyleId] = useState(subtitle?.subtitleStyleId || "") const [animationIn, setAnimationIn] = useState<"none" | "fade" | "slide" | "typewriter" | "scale" | "wave">( subtitle?.animationIn?.type || "none", ) const [animationOut, setAnimationOut] = useState<"none" | "fade" | "slide" | "scale">( subtitle?.animationOut?.type || "none", ) const [animationInDuration, setAnimationInDuration] = useState(subtitle?.animationIn?.duration || 0.5) const [animationOutDuration, setAnimationOutDuration] = useState(subtitle?.animationOut?.duration || 0.5) const [position, setPosition] = useState< | "top-left" | "top-center" | "top-right" | "middle-left" | "middle-center" | "middle-right" | "bottom-left" | "bottom-center" | "bottom-right" >(subtitle?.subtitlePosition?.alignment || "bottom-center") const [wordWrap, setWordWrap] = useState(subtitle?.wordWrap ?? true) const [maxWidth, setMaxWidth] = useState(subtitle?.maxWidth || 80) const handleSave = () => { const updatedSubtitle: Partial = { text, startTime, duration, subtitleStyleId: styleId === "default" ? undefined : styleId || undefined, animationIn: animationIn !== "none" ? { type: animationIn, duration: animationInDuration, } : undefined, animationOut: animationOut !== "none" ? { type: animationOut, duration: animationOutDuration, } : undefined, subtitlePosition: { alignment: position, marginX: 20, marginY: 20, }, wordWrap, maxWidth, } onSave(updatedSubtitle) onOpenChange(false) } return ( {subtitle ? "Редактировать субтитр" : "Добавить субтитр"} Введите текст субтитра и настройте его параметры
{/* Текст субтитра */}