File size: 2,480 Bytes
7312c42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import type { MultiTrackType } from '@/types/multitrack'

export interface SegmentTrackPresentation {
  backgroundColor: string
  backgroundColorStrong: string
  borderColor: string
  textColor: string
  textClassName: string
  titleBackgroundColor: string | null
  waveformColor: string | null
  showThumbnail: boolean
  showWaveform: boolean
  waveformSource: 'decoded-media' | null
}

const VIDEO_PRESENTATION: SegmentTrackPresentation = {
  backgroundColor: 'var(--multitrack-video-bg)',
  backgroundColorStrong: 'var(--multitrack-video-bg-strong)',
  borderColor: 'var(--multitrack-video-border)',
  textColor: 'var(--multitrack-video-text)',
  textClassName: 'text-[10px]',
  titleBackgroundColor: null,
  waveformColor: 'var(--multitrack-video-waveform)',
  showThumbnail: true,
  showWaveform: true,
  waveformSource: 'decoded-media',
}

const AUDIO_PRESENTATION: SegmentTrackPresentation = {
  backgroundColor: 'var(--multitrack-audio-bg)',
  backgroundColorStrong: 'var(--multitrack-audio-bg-strong)',
  borderColor: 'var(--multitrack-audio-border)',
  textColor: 'var(--multitrack-audio-text)',
  textClassName: 'text-[10px]',
  titleBackgroundColor: 'var(--multitrack-audio-title-bg)',
  waveformColor: 'var(--multitrack-audio-waveform)',
  showThumbnail: false,
  showWaveform: true,
  waveformSource: 'decoded-media',
}

const TASK_PRESENTATION: SegmentTrackPresentation = {
  backgroundColor: 'var(--multitrack-task-bg)',
  backgroundColorStrong: 'var(--multitrack-task-bg-strong)',
  borderColor: 'var(--multitrack-task-border)',
  textColor: 'var(--multitrack-task-text)',
  textClassName: 'text-[8px]',
  titleBackgroundColor: null,
  waveformColor: null,
  showThumbnail: false,
  showWaveform: false,
  waveformSource: null,
}

const SUBTITLE_PRESENTATION: SegmentTrackPresentation = {
  backgroundColor: 'var(--multitrack-subtitle-bg)',
  backgroundColorStrong: 'var(--multitrack-subtitle-bg-strong)',
  borderColor: 'var(--multitrack-subtitle-border)',
  textColor: 'var(--multitrack-subtitle-text)',
  textClassName: 'text-[8px]',
  titleBackgroundColor: null,
  waveformColor: null,
  showThumbnail: false,
  showWaveform: false,
  waveformSource: null,
}

export function getSegmentTrackPresentation(trackType: MultiTrackType): SegmentTrackPresentation {
  if (trackType === 'video') return VIDEO_PRESENTATION
  if (trackType === 'audio') return AUDIO_PRESENTATION
  if (trackType === 'subtitle') return SUBTITLE_PRESENTATION
  return TASK_PRESENTATION
}