UNPKG

react-native-theoplayer

Version:

A THEOplayer video component for react-native.

89 lines (88 loc) 3.29 kB
"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