@kaliber/use-subtitles
Version:
Hook to easily consume your HTMLMediaElement WebVTT subtitles.
39 lines (30 loc) • 945 B
JavaScript
import { metadataDefault, subtitlesDefault } from "../defaults"
import { getVoiceFromCue, isJSON } from "./utilities"
function convertToMetadata(track) {
const activeCue = track.activeCues?.[0]
if (!activeCue) return metadataDefault
let text = activeCue?.text ?? null
if (isJSON(activeCue?.text)) {
text = JSON.parse(activeCue?.text)
}
return {
text,
startTime: activeCue?.startTime ?? null,
endTime: activeCue?.endTime ?? null
}
}
function convertToSubtitles(track) {
const activeCue = track.activeCues?.[0]
if (!activeCue) return subtitlesDefault
return {
text: activeCue?.getCueAsHTML()?.textContent ?? null,
voice: activeCue?.text ? getVoiceFromCue({ text: activeCue.text }) : null,
startTime: activeCue?.startTime ?? null,
endTime: activeCue?.endTime ?? null
}
}
const converters = {
metadata: convertToMetadata,
subtitles: convertToSubtitles
}
export default converters