summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/timeline/group-move/track-placement.ts
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-04-20 11:31:17 +0200
committerMaze Winther <mazewinther@gmail.com>2026-04-20 11:31:17 +0200
commit3e89d2998588f8e35c524e523ba2ee853f0f6475 (patch)
tree57221f96c1259b3b07e3ddf8c1adefc502b9d8eb /apps/web/src/lib/timeline/group-move/track-placement.ts
parent729d10592f4e802f91c555c309ff3ba4b119f843 (diff)
downloadopencut-3e89d2998588f8e35c524e523ba2ee853f0f6475.tar.gz
refactor: restructure files to their domains, new preview overlay system, and dep graph
Diffstat (limited to 'apps/web/src/lib/timeline/group-move/track-placement.ts')
-rw-r--r--apps/web/src/lib/timeline/group-move/track-placement.ts83
1 files changed, 0 insertions, 83 deletions
diff --git a/apps/web/src/lib/timeline/group-move/track-placement.ts b/apps/web/src/lib/timeline/group-move/track-placement.ts
deleted file mode 100644
index d301e5ef..00000000
--- a/apps/web/src/lib/timeline/group-move/track-placement.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-import type { SceneTracks, TimelineTrack } from "@/lib/timeline";
-import type { GroupTrackSection } from "./types";
-
-export interface TrackPlacement {
- trackId: string;
- trackType: TimelineTrack["type"];
- section: GroupTrackSection;
- sectionIndex: number;
- displayIndex: number;
-}
-
-export function getDisplayTracks({
- tracks,
-}: {
- tracks: SceneTracks;
-}): TimelineTrack[] {
- return [...tracks.overlay, tracks.main, ...tracks.audio];
-}
-
-export function getTrackPlacementById({
- tracks,
- trackId,
-}: {
- tracks: SceneTracks;
- trackId: string;
-}): TrackPlacement | null {
- if (tracks.main.id === trackId) {
- return {
- trackId,
- trackType: tracks.main.type,
- section: "main",
- sectionIndex: -1,
- displayIndex: tracks.overlay.length,
- };
- }
-
- const overlayTrackIndex = tracks.overlay.findIndex(
- (track) => track.id === trackId,
- );
- if (overlayTrackIndex >= 0) {
- return {
- trackId,
- trackType: tracks.overlay[overlayTrackIndex].type,
- section: "overlay",
- sectionIndex: overlayTrackIndex,
- displayIndex: overlayTrackIndex,
- };
- }
-
- const audioTrackIndex = tracks.audio.findIndex(
- (track) => track.id === trackId,
- );
- if (audioTrackIndex >= 0) {
- return {
- trackId,
- trackType: tracks.audio[audioTrackIndex].type,
- section: "audio",
- sectionIndex: audioTrackIndex,
- displayIndex: tracks.overlay.length + 1 + audioTrackIndex,
- };
- }
-
- return null;
-}
-
-export function getTrackPlacementByDisplayIndex({
- tracks,
- displayIndex,
-}: {
- tracks: SceneTracks;
- displayIndex: number;
-}): TrackPlacement | null {
- const displayTracks = getDisplayTracks({ tracks });
- const track = displayTracks[displayIndex];
- if (!track) {
- return null;
- }
-
- return getTrackPlacementById({
- tracks,
- trackId: track.id,
- });
-}