From 3e89d2998588f8e35c524e523ba2ee853f0f6475 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Mon, 20 Apr 2026 11:31:17 +0200 Subject: refactor: restructure files to their domains, new preview overlay system, and dep graph --- apps/web/src/timeline/components/track-layout.ts | 60 ++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 apps/web/src/timeline/components/track-layout.ts (limited to 'apps/web/src/timeline/components/track-layout.ts') diff --git a/apps/web/src/timeline/components/track-layout.ts b/apps/web/src/timeline/components/track-layout.ts new file mode 100644 index 00000000..59f4a5f9 --- /dev/null +++ b/apps/web/src/timeline/components/track-layout.ts @@ -0,0 +1,60 @@ +import type { TrackType } from "@/timeline"; +import { + KEYFRAME_LANE_HEIGHT_PX, + TIMELINE_TRACK_GAP_PX, + TIMELINE_TRACK_HEIGHTS_PX, +} from "./layout"; + +export function getTrackHeight({ type }: { type: TrackType }): number { + return TIMELINE_TRACK_HEIGHTS_PX[type]; +} + +export function getExpandedTrackHeight({ + type, + expandedLaneCount, +}: { + type: TrackType; + expandedLaneCount: number; +}): number { + return ( + TIMELINE_TRACK_HEIGHTS_PX[type] + + expandedLaneCount * KEYFRAME_LANE_HEIGHT_PX + ); +} + +export function getCumulativeHeightBefore({ + tracks, + trackIndex, + getExtraHeight, +}: { + tracks: Array<{ type: TrackType }>; + trackIndex: number; + getExtraHeight?: (trackIndex: number) => number; +}): number { + return tracks + .slice(0, trackIndex) + .reduce( + (sum, track, i) => + sum + + getTrackHeight({ type: track.type }) + + (getExtraHeight?.(i) ?? 0) + + TIMELINE_TRACK_GAP_PX, + 0, + ); +} + +export function getTotalTracksHeight({ + tracks, + getExtraHeight, +}: { + tracks: Array<{ type: TrackType }>; + getExtraHeight?: (trackIndex: number) => number; +}): number { + const tracksHeight = tracks.reduce( + (sum, track, i) => + sum + getTrackHeight({ type: track.type }) + (getExtraHeight?.(i) ?? 0), + 0, + ); + const gapsHeight = Math.max(0, tracks.length - 1) * TIMELINE_TRACK_GAP_PX; + return tracksHeight + gapsHeight; +} -- cgit v1.3.1