'use client'; import * as React from 'react'; import { FileUpload } from './FileUpload'; import { AudioInfo } from './AudioInfo'; import { Waveform } from './Waveform'; import { PlaybackControls } from './PlaybackControls'; import { useAudioPlayer } from '@/lib/hooks/useAudioPlayer'; import { useToast } from '@/components/ui/Toast'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card'; import { Loader2 } from 'lucide-react'; export function AudioEditor() { const { loadFile, clearFile, play, pause, stop, seek, setVolume, isPlaying, isPaused, currentTime, duration, volume, audioBuffer, fileName, isLoading, error, currentTimeFormatted, durationFormatted, } = useAudioPlayer(); const { addToast } = useToast(); const handleFileSelect = async (file: File) => { try { await loadFile(file); addToast({ title: 'File loaded', description: `Successfully loaded ${file.name}`, variant: 'success', duration: 3000, }); } catch (err) { addToast({ title: 'Error loading file', description: err instanceof Error ? err.message : 'Unknown error', variant: 'error', duration: 5000, }); } }; const handleClear = () => { clearFile(); addToast({ title: 'Audio cleared', description: 'Audio file has been removed', variant: 'info', duration: 2000, }); }; // Show error toast React.useEffect(() => { if (error) { addToast({ title: 'Error', description: error, variant: 'error', duration: 5000, }); } }, [error, addToast]); return (
Loading audio file...