react-native-theoplayer
Version:
A THEOplayer video component for react-native.
95 lines (94 loc) • 2.22 kB
JavaScript
;
import { decodeNanInf } from '../../utils/TypeUtils';
export function isDateRangeCue(cue) {
return cue.customAttributes != undefined;
}
export function fromNativeCue(cue) {
return {
id: cue.id,
uid: cue.uid,
startTime: decodeNanInf(1e3 * cue.startTime),
endTime: decodeNanInf(1e3 * cue.endTime),
content: cue.content,
...(isDateRangeCue(cue) && {
class: cue.class,
startDate: cue.startDate,
endDate: cue.endDate,
duration: cue.duration ? decodeNanInf(1e3 * cue.duration) : cue.duration,
plannedDuration: cue.plannedDuration ? decodeNanInf(1e3 * cue.plannedDuration) : cue.plannedDuration,
endOnNext: cue.endOnNext,
scte35Cmd: cue.scte35Cmd,
scte35Out: cue.scte35Out,
scte35In: cue.scte35In,
customAttributes: cue.customAttributes
})
};
}
export function fromNativeTextTrackList(tracks) {
return tracks.map(track => fromNativeTextTrack(track));
}
export function fromNativeTextTrack(track) {
const {
id,
uid,
kind,
label,
language,
mode,
type,
src,
forced
} = track;
return {
id,
uid,
kind,
label,
language,
mode,
type,
src,
forced,
cues: track.cues ? track.cues.map(cue => fromNativeCue(cue)) : []
};
}
export function fromNativeMediaTrackList(tracks) {
return tracks.map(track => fromNativeMediaTrack(track));
}
export function fromNativeMediaTrack(track) {
const {
id,
uid,
kind,
label,
language,
activeQuality,
qualities,
enabled
} = track;
return {
kind,
label,
language,
id,
uid,
activeQuality,
qualities,
enabled
};
}
export function findNativeQualityByUid(mediaTrack, uid) {
return mediaTrack.qualities.find(quality => quality.uid === uid);
}
export function findNativeQualitiesByUid(mediaTrack, uid) {
if (uid !== undefined && mediaTrack) {
if (Array.isArray(uid)) {
return mediaTrack.qualities.filter(quality => uid.includes(quality.uid));
} else {
const quality = findNativeQualityByUid(mediaTrack, uid);
return quality ? [quality] : undefined;
}
}
return undefined;
}
//# sourceMappingURL=TrackUtils.js.map