Files
ArtPlayer/packages/artplayer/src/player/subtitleOffsetMix.ts
T

30 lines
1.0 KiB
TypeScript

import type { SubtitleOffsetHost } from '../subtitle/types'
import { clamp, def } from '../utils'
export default function subtitleOffsetMix(art: SubtitleOffsetHost): void {
const { notice, i18n, template } = art
def(art, 'subtitleOffset', {
get() {
return template.$track?.offset || 0
},
set(value: number) {
const { cues } = art.subtitle
if (!template.$track || cues.length === 0)
return
const offset = clamp(value, -10, 10)
template.$track.offset = offset
for (let index = 0; index < cues.length; index++) {
const cue = cues[index]!
cue.originalStartTime = cue.originalStartTime ?? cue.startTime
cue.originalEndTime = cue.originalEndTime ?? cue.endTime
cue.startTime = clamp(cue.originalStartTime + offset, 0, art.duration)
cue.endTime = clamp(cue.originalEndTime + offset, 0, art.duration)
}
art.subtitle.update()
notice.show = `${i18n.get('Subtitle Offset')}: ${value}s`
art.emit('subtitleOffset', value)
},
})
}