diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-03-25 16:47:22 +0100 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-03-29 15:48:22 +0200 |
| commit | 8db3bead13441a5882d8689dfc6a9f09c82375d9 (patch) | |
| tree | e9d0cafa93904ffcbec3188c37961bcc16c6422d /apps/web/src/constants/timeline-constants.ts | |
| parent | 39ea298a9ccba3104c549c0ca079c231981811f5 (diff) | |
| download | opencut-8db3bead13441a5882d8689dfc6a9f09c82375d9.tar.gz | |
feat: masks, properties refactor, shaders, storage migrations, and more
Diffstat (limited to 'apps/web/src/constants/timeline-constants.ts')
| -rw-r--r-- | apps/web/src/constants/timeline-constants.ts | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/apps/web/src/constants/timeline-constants.ts b/apps/web/src/constants/timeline-constants.ts new file mode 100644 index 00000000..827fab85 --- /dev/null +++ b/apps/web/src/constants/timeline-constants.ts @@ -0,0 +1,85 @@ +import type { ElementType, TrackType } from "@/lib/timeline"; + +export const TRACK_CONFIG: Record< + TrackType, + { + height: number; + defaultName: string; + } +> = { + video: { + height: 65, + defaultName: "Video track", + }, + text: { + height: 25, + defaultName: "Text track", + }, + audio: { + height: 50, + defaultName: "Audio track", + }, + graphic: { + height: 25, + defaultName: "Graphic track", + }, + effect: { + height: 25, + defaultName: "Effect track", + }, +} as const; + +export const ELEMENT_TYPE_CONFIG: Record< + TrackType, + { + background: string; + waveformColor?: string; + } +> = { + video: { background: "transparent" }, + text: { background: "bg-[#5DBAA0]" }, + audio: { + background: "bg-[#8F5DBA]", + waveformColor: "rgba(255, 255, 255, 0.5)", + }, + graphic: { background: "bg-[#BA5D7A]" }, + effect: { background: "bg-[#5d93ba]" }, +} as const; + +export const ELEMENT_TRACK_MAP: Record<ElementType, TrackType> = { + audio: "audio", + text: "text", + sticker: "graphic", + graphic: "graphic", + effect: "effect", + video: "video", + image: "video", +}; + +export const TRACK_GAP = 6; +export const TRACK_LABELS_WIDTH_PX = 112; + +export const TIMELINE_RULER_HEIGHT = 22; +export const TIMELINE_BOOKMARK_ROW_HEIGHT = 16; + +export const DEFAULT_BOOKMARK_COLOR = "#009dff"; +export const DRAG_THRESHOLD_PX = 5; +export const TIMELINE_SCROLLBAR_SIZE_PX = 12; +export const TIMELINE_LAYERS = { + trackContent: 10, + dragLine: 20, + playhead: 30, + snapIndicator: 40, +} as const; + +export const TIMELINE_CONSTANTS = { + PIXELS_PER_SECOND: 50, + DEFAULT_ELEMENT_DURATION: 5, + PADDING_TOP_PX: 2, + HORIZONTAL_WHEEL_STEP_PX: 40, + ZOOM_MIN: 0.1, + ZOOM_MAX: 100, + ZOOM_BUTTON_FACTOR: 1.7, + ZOOM_ANCHOR_PLAYHEAD_THRESHOLD: 0.15, + TRACK_SELECTED_BG: "bg-accent/50", +} as const; |
