react-native-theoplayer
Version:
A THEOplayer video component for react-native.
89 lines (88 loc) • 3.29 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DefaultTextTrackState = void 0;
var _reactNativeTheoplayer = require("react-native-theoplayer");
class DefaultTextTrackState {
_textTracks = [];
constructor(_player) {
this._player = _player;
_player.addEventListener(_reactNativeTheoplayer.PlayerEventType.LOADED_METADATA, this.onLoadedMetadata);
_player.addEventListener(_reactNativeTheoplayer.PlayerEventType.TEXT_TRACK, this.onTextTrack);
_player.addEventListener(_reactNativeTheoplayer.PlayerEventType.TEXT_TRACK_LIST, this.onTextTrackList);
}
destroy() {
this._player.removeEventListener(_reactNativeTheoplayer.PlayerEventType.LOADED_METADATA, this.onLoadedMetadata);
this._player.removeEventListener(_reactNativeTheoplayer.PlayerEventType.TEXT_TRACK, this.onTextTrack);
this._player.removeEventListener(_reactNativeTheoplayer.PlayerEventType.TEXT_TRACK_LIST, this.onTextTrackList);
}
get textTracks() {
return this._textTracks;
}
set textTracks(tracks) {
this._textTracks = tracks;
}
onLoadedMetadata = event => {
this._textTracks = event.textTracks;
this._selectedTextTrack = event.selectedTextTrack;
};
onTextTrack = event => {
const {
subType,
cue,
trackUid
} = event;
const track = (0, _reactNativeTheoplayer.findTextTrackByUid)(this.textTracks, trackUid);
switch (subType) {
case _reactNativeTheoplayer.TextTrackEventType.ADD_CUE:
(0, _reactNativeTheoplayer.addTextTrackCue)(track, cue);
break;
case _reactNativeTheoplayer.TextTrackEventType.REMOVE_CUE:
(0, _reactNativeTheoplayer.removeTextTrackCue)(track, cue);
break;
}
};
onTextTrackList = event => {
const {
subType,
track
} = event;
switch (subType) {
case _reactNativeTheoplayer.TrackListEventType.ADD_TRACK:
this._textTracks = (0, _reactNativeTheoplayer.addTrack)(this._textTracks, track);
break;
case _reactNativeTheoplayer.TrackListEventType.REMOVE_TRACK:
this._textTracks = (0, _reactNativeTheoplayer.removeTrack)(this._textTracks, track);
break;
case _reactNativeTheoplayer.TrackListEventType.CHANGE_TRACK:
this._textTracks = (0, _reactNativeTheoplayer.removeTrack)(this._textTracks, track);
this._textTracks = (0, _reactNativeTheoplayer.addTrack)(this._textTracks, track);
if (event.track.mode === _reactNativeTheoplayer.TextTrackMode.showing) {
this._selectedTextTrack = event.track.uid;
}
break;
}
};
get selectedTextTrack() {
return this._selectedTextTrack;
}
set selectedTextTrack(trackUid) {
if (!this.hasValidSource()) {
return;
}
this._selectedTextTrack = trackUid;
this.textTracks.forEach(track => {
if (track.uid === trackUid) {
track.mode = _reactNativeTheoplayer.TextTrackMode.showing;
} else if (track.mode === _reactNativeTheoplayer.TextTrackMode.showing) {
track.mode = _reactNativeTheoplayer.TextTrackMode.disabled;
}
});
}
hasValidSource() {
return this._player?.source !== undefined;
}
}
exports.DefaultTextTrackState = DefaultTextTrackState;
//# sourceMappingURL=DefaultTextTrackState.js.map