summaryrefslogtreecommitdiff
path: root/apps/web/src/components/editor/timeline/timeline-track.tsx
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2025-08-06 12:52:11 +0200
committerMaze Winther <mazewinther@gmail.com>2025-08-06 12:52:11 +0200
commitce58b5199adae444c6ade029c14c496379932d83 (patch)
tree8379e0ad5406a038a67a26ea16c53f914552f720 /apps/web/src/components/editor/timeline/timeline-track.tsx
parent2c90ddd5d5f16c868f5e04943b64e0a3a78147f1 (diff)
downloadopencut-ce58b5199adae444c6ade029c14c496379932d83.tar.gz
feat: external files always create new tracks at playhead position
Diffstat (limited to 'apps/web/src/components/editor/timeline/timeline-track.tsx')
-rw-r--r--apps/web/src/components/editor/timeline/timeline-track.tsx12
1 files changed, 8 insertions, 4 deletions
diff --git a/apps/web/src/components/editor/timeline/timeline-track.tsx b/apps/web/src/components/editor/timeline/timeline-track.tsx
index 75910c46..ff4797fb 100644
--- a/apps/web/src/components/editor/timeline/timeline-track.tsx
+++ b/apps/web/src/components/editor/timeline/timeline-track.tsx
@@ -15,6 +15,7 @@ import { usePlaybackStore } from "@/stores/playback-store";
import type {
TimelineElement as TimelineElementType,
DragData,
+ TrackType,
} from "@/types/timeline";
import {
snapTimeToFrame,
@@ -1061,7 +1062,7 @@ export function TimelineTrackContent({
return;
}
- // Process and add files to timeline at the drop position
+ // Process and add files to new timeline tracks at playhead position
processMediaFiles(e.dataTransfer.files)
.then(async (processedItems) => {
for (const processedItem of processedItems) {
@@ -1074,13 +1075,16 @@ export function TimelineTrackContent({
);
if (addedItem) {
- // Add to current track at the drop position
- addElementToTrack(track.id, {
+ const trackType: TrackType =
+ addedItem.type === "audio" ? "audio" : "media";
+ const targetTrackId = insertTrackAt(trackType, 0);
+
+ addElementToTrack(targetTrackId, {
type: "media",
mediaId: addedItem.id,
name: addedItem.name,
duration: addedItem.duration || 5,
- startTime: snappedTime,
+ startTime: currentTime,
trimStart: 0,
trimEnd: 0,
});