From b7887caf9d0c52978cdcdda1601b9477b8b98afa Mon Sep 17 00:00:00 2001 From: root Date: Thu, 10 Jul 2025 23:35:20 +0800 Subject: [PATCH] fix --- src/components/Timeline.tsx | 228 ------------------------------------ src/pages/EditorPage.tsx | 4 - 2 files changed, 232 deletions(-) delete mode 100644 src/components/Timeline.tsx diff --git a/src/components/Timeline.tsx b/src/components/Timeline.tsx deleted file mode 100644 index 059cf22..0000000 --- a/src/components/Timeline.tsx +++ /dev/null @@ -1,228 +0,0 @@ -import React, { useRef, useEffect, useState } from 'react' -import { Play, Pause, SkipBack, SkipForward, Volume2, Scissors } from 'lucide-react' -import { useProjectStore } from '../stores/useProjectStore' -import { useMediaStore } from '../stores/useMediaStore' - -interface TimelineProps { - className?: string -} - -const Timeline: React.FC = ({ className = '' }) => { - const timelineRef = useRef(null) - const [isDragging, setIsDragging] = useState(false) - const [dragStartX, setDragStartX] = useState(0) - - const { currentProject, setTimelinePosition, setTimelineZoom } = useProjectStore() - const { - isPlaying, - currentTime, - duration, - volume, - setPlaying, - setCurrentTime, - setVolume - } = useMediaStore() - - const timeline = currentProject?.timeline || { duration: 0, zoom: 1, position: 0 } - const videoTracks = currentProject?.video_tracks || [] - const audioTracks = currentProject?.audio_tracks || [] - - // Handle timeline scrubbing - const handleTimelineClick = (e: React.MouseEvent) => { - if (!timelineRef.current) return - - const rect = timelineRef.current.getBoundingClientRect() - const x = e.clientX - rect.left - const percentage = x / rect.width - const newTime = percentage * timeline.duration - - setCurrentTime(newTime) - setTimelinePosition(newTime) - } - - // Handle track dragging - const handleTrackMouseDown = (e: React.MouseEvent, trackId: string, trackType: 'video' | 'audio') => { - e.preventDefault() - setIsDragging(true) - setDragStartX(e.clientX) - - const handleMouseMove = (e: MouseEvent) => { - if (!isDragging) return - - const deltaX = e.clientX - dragStartX - const timeDelta = (deltaX / (timelineRef.current?.clientWidth || 1)) * timeline.duration - - // Update track position - // This would update the track's start_time - console.log(`Moving ${trackType} track ${trackId} by ${timeDelta}s`) - } - - const handleMouseUp = () => { - setIsDragging(false) - document.removeEventListener('mousemove', handleMouseMove) - document.removeEventListener('mouseup', handleMouseUp) - } - - document.addEventListener('mousemove', handleMouseMove) - document.addEventListener('mouseup', handleMouseUp) - } - - // Format time for display - const formatTime = (seconds: number): string => { - const mins = Math.floor(seconds / 60) - const secs = Math.floor(seconds % 60) - return `${mins}:${secs.toString().padStart(2, '0')}` - } - - // Calculate track position and width - const getTrackStyle = (startTime: number, duration: number) => { - const left = (startTime / timeline.duration) * 100 - const width = (duration / timeline.duration) * 100 - return { - left: `${left}%`, - width: `${width}%` - } - } - - return ( -
- {/* Timeline Controls */} -
-
- - - - - - -
- - setVolume(parseFloat(e.target.value))} - className="w-20" - /> -
-
- -
- - {formatTime(currentTime)} / {formatTime(timeline.duration)} - - -
- 缩放: - setTimelineZoom(parseFloat(e.target.value))} - className="w-20" - /> -
-
-
- - {/* Timeline Ruler */} -
-
- {Array.from({ length: Math.ceil(timeline.duration / 10) + 1 }, (_, i) => { - const time = i * 10 - const left = (time / timeline.duration) * 100 - return ( -
- {formatTime(time)} -
- ) - })} -
- - {/* Playhead */} -
-
- - {/* Timeline Tracks */} -
- {/* Video Tracks */} - {videoTracks.map((track, index) => ( -
-
- 视频 {index + 1} -
-
handleTrackMouseDown(e, track.id, 'video')} - > -
- {track.name} -
-
-
- ))} - - {/* Audio Tracks */} - {audioTracks.map((track, index) => ( -
-
- 音频 {index + 1} -
-
handleTrackMouseDown(e, track.id, 'audio')} - > -
- {track.name} -
-
-
- ))} - - {/* Empty state */} - {videoTracks.length === 0 && audioTracks.length === 0 && ( -
-
- -

拖拽媒体文件到这里开始编辑

-
-
- )} -
-
- ) -} - -export default Timeline diff --git a/src/pages/EditorPage.tsx b/src/pages/EditorPage.tsx index 2d41e3b..a0cdb44 100644 --- a/src/pages/EditorPage.tsx +++ b/src/pages/EditorPage.tsx @@ -1,7 +1,6 @@ import React from 'react' import { Download, Save, Scissors } from 'lucide-react' import VideoPreview from '../components/VideoPreview' -import Timeline from '../components/Timeline' import MediaLibrary from '../components/MediaLibrary' import { useProjectStore } from '../stores/useProjectStore' @@ -71,9 +70,6 @@ const EditorPage: React.FC = () => {
- - {/* Timeline */} -
{/* Properties Panel */}