import { Eye, EyeOff, Lock, LockOpen, Volume2, VolumeX } from "lucide-react" import { useTranslation } from "react-i18next" import { Slider } from "@/components/ui/slider" import { MediaTrack } from "@/features/media/types" interface TrackControlsProps { track: MediaTrack isVisible?: boolean isLocked?: boolean trackVolume?: number trackVolumes?: Record isMuted?: boolean setIsMuted?: (muted: boolean) => void volume?: number // Глобальная громкость трека setVolume?: (volume: number) => void isSolo?: boolean setIsSolo?: (trackId: string, solo: boolean) => void isHidden?: boolean setIsHidden?: (trackId: string, hidden: boolean) => void setIsLocked?: (trackId: string, locked: boolean) => void setTrackVolume?: (trackId: string, volume: number) => void onVisibilityChange?: (visible: boolean) => void onLockChange?: (locked: boolean) => void onVolumeChange?: (volume: number) => void } export function TrackControls({ track, isVisible = true, isLocked = false, isMuted = false, volume = 100, setIsMuted = () => {}, onVisibilityChange, onLockChange, onVolumeChange, }: TrackControlsProps) { const { t } = useTranslation() const handleVisibilityToggle = (): void => { const newValue = !isVisible onVisibilityChange?.(newValue) } const handleLockToggle = (): void => { const newValue = !isLocked onLockChange?.(newValue) } const handleVolumeToggle = (): void => { const newValue = !isMuted setIsMuted(newValue) const newVolume = newValue ? 0 : volume onVolumeChange?.(newVolume) } const handleVolumeChange = (value: number[]): void => { const newVolume = value[0] onVolumeChange?.(newVolume) } // Определяем, является ли трек видео или аудио const isVideoTrack = track.videos?.some((video) => video.probeData?.streams?.some((stream) => stream.codec_type === "video"), ) return (
{!isVideoTrack && (
{isMuted ? 0 : volume}
)}
{isVideoTrack ? t("timeline.track.videoTrack", { index: track.index }) : t("timeline.track.audioTrack", { index: track.index })}
) }