react-native-theoplayer 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +4 -0
- package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +5 -0
- package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +8 -0
- package/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt +47 -2
- package/ios/THEOplayerRCTTextTrackEventHandler.swift +21 -17
- package/ios/THEOplayerRCTTrackMetadataAggregator.swift +64 -8
- package/ios/THEOplayerRCTView.swift +4 -0
- package/lib/commonjs/api/config/PlayerConfiguration.js.map +1 -1
- package/lib/commonjs/api/track/DateRangeCue.js +19 -0
- package/lib/commonjs/api/track/DateRangeCue.js.map +1 -0
- package/lib/commonjs/api/track/TextTrack.js +2 -0
- package/lib/commonjs/api/track/TextTrack.js.map +1 -1
- package/lib/commonjs/api/track/barrel.js +11 -0
- package/lib/commonjs/api/track/barrel.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.js +17 -2
- package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +3 -3
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/WebEventForwarder.js +3 -0
- package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
- package/lib/commonjs/internal/adapter/web/TrackUtils.js +17 -1
- package/lib/commonjs/internal/adapter/web/TrackUtils.js.map +1 -1
- package/lib/module/api/config/PlayerConfiguration.js.map +1 -1
- package/lib/module/api/track/DateRangeCue.js +13 -0
- package/lib/module/api/track/DateRangeCue.js.map +1 -0
- package/lib/module/api/track/TextTrack.js +2 -0
- package/lib/module/api/track/TextTrack.js.map +1 -1
- package/lib/module/api/track/barrel.js +1 -0
- package/lib/module/api/track/barrel.js.map +1 -1
- package/lib/module/internal/THEOplayerView.js +18 -2
- package/lib/module/internal/THEOplayerView.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +3 -3
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/WebEventForwarder.js +4 -1
- package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
- package/lib/module/internal/adapter/web/TrackUtils.js +16 -1
- package/lib/module/internal/adapter/web/TrackUtils.js.map +1 -1
- package/lib/typescript/api/config/PlayerConfiguration.d.ts +4 -0
- package/lib/typescript/api/track/DateRangeCue.d.ts +61 -0
- package/lib/typescript/api/track/TextTrack.d.ts +4 -1
- package/lib/typescript/api/track/barrel.d.ts +1 -0
- package/lib/typescript/internal/THEOplayerView.d.ts +2 -1
- package/lib/typescript/internal/adapter/web/TrackUtils.d.ts +2 -1
- package/package.json +1 -1
- package/src/api/config/PlayerConfiguration.ts +5 -0
- package/src/api/track/DateRangeCue.ts +74 -0
- package/src/api/track/TextTrack.ts +3 -0
- package/src/api/track/barrel.ts +1 -0
- package/src/internal/THEOplayerView.tsx +19 -3
- package/src/internal/adapter/THEOplayerAdapter.ts +3 -3
- package/src/internal/adapter/WebEventForwarder.ts +5 -0
- package/src/internal/adapter/web/TrackUtils.ts +18 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AdEventType","MediaTrackEventType","MediaTrackType","PlayerEventType","PresentationMode","TextTrackEventType","TrackListEventType","BaseEvent","DefaultAdEvent","DefaultAirplayStateChangeEvent","DefaultChromecastChangeEvent","DefaultChromecastErrorEvent","DefaultDurationChangeEvent","DefaultErrorEvent","DefaultLoadedMetadataEvent","DefaultMediaTrackEvent","DefaultMediaTrackListEvent","DefaultPresentationModeChangeEvent","DefaultProgressEvent","DefaultRateChangeEvent","DefaultReadyStateChangeEvent","DefaultSegmentNotFoundEvent","DefaultTextTrackEvent","DefaultTextTrackListEvent","DefaultTimeupdateEvent","DefaultVolumeChangeEvent","fromNativeCue","fromNativeMediaTrack","fromNativeTextTrack","WebEventForwarder","constructor","player","facade","_defineProperty","_facade","dispatchEvent","SOURCE_CHANGE","LOAD_START","LOADED_DATA","_this$_player$textTra","_this$_player$videoTr","_this$_player$audioTr","_player","textTracks","map","textTrack","audioTracks","audioTrack","videoTracks","videoTrack","duration","find","track","mode","uid","enabled","event","errorCode","errorObject","code","toString","errorMessage","message","fromTimeRanges","seekable","buffered","CANPLAY","PLAY","PLAYING","PAUSE","SEEKING","SEEKED","ENDED","WAITING","readyState","_event$currentProgram","currentTime","currentProgramDateTime","getTime","playbackRate","volume","muted","presentationMode","inline","addEventListener","onAddTextTrackCue","onRemoveTextTrackCue","onEnterTextTrackCue","onExitTextTrackCue","ADD_TRACK","removeEventListener","REMOVE_TRACK","CHANGE_TRACK","onAddMediaTrack","AUDIO","VIDEO","trackType","onActiveQualityChanged","onRemoveMediaTrack","onChangeMediaTrack","state","error","castedEvent","type","ad","cue","ADD_CUE","REMOVE_CUE","ENTER_CUE","EXIT_CUE","quality","activeQuality","ACTIVE_QUALITY_CHANGED","undefined","addEventListeners","_this$_player$cast","_this$_player$cast2","_this$_player$cast3","_this$_player$ads","onSourceChange","onLoadStart","onLoadedData","onLoadedMetadata","onError","onProgress","onPlay","onCanPlay","onPlaying","onPause","onSeeking","onSeeked","onEnded","onWaiting","onReadyStateChanged","onTimeUpdate","onDurationChange","onPlaybackRateChange","onSegmentNotFound","onVolumeChangeEvent","presentation","onPresentationModeChange","onAddTextTrack","onRemoveTextTrack","onChangeTextTrack","onAddAudioTrack","onRemoveAudioTrack","onChangeAudioTrack","onAddVideoTrack","onRemoveVideoTrack","onChangeVideoTrack","cast","chromecast","onChromecastStateChange","onChromecastError","airplay","onAirplayStateChange","ads","FORWARDED_AD_EVENTS","onAdEvent","unload","removeEventListeners","_this$_player$cast4","_this$_player$cast5","_this$_player$cast6","_this$_player$ads2","ADD_AD_BREAK","REMOVE_AD_BREAK","AD_LOADED","AD_BREAK_BEGIN","AD_BREAK_END","AD_BREAK_CHANGE","UPDATE_AD_BREAK","ADD_AD","AD_BEGIN","AD_END","UPDATE_AD","AD_FIRST_QUARTILE","AD_MIDPOINT","AD_THIRD_QUARTILE","AD_SKIP","AD_IMPRESSION","AD_ERROR","AD_METADATA","AD_BUFFERING","timeRanges","result","i","length","push","start","end"],"sources":["WebEventForwarder.ts"],"sourcesContent":["import type { ChromelessPlayer } from 'theoplayer';\nimport type {\n AddTrackEvent,\n CastStateChangeEvent,\n ChromecastErrorEvent,\n DurationChangeEvent as NativeDurationChangeEvent,\n ErrorEvent as NativeErrorEvent,\n Event as NativeEvent,\n MediaTrack as NativeMediaTrack,\n PresentationModeChangeEvent,\n RateChangeEvent as NativeRateChangeEvent,\n ReadyStateChangeEvent as NativeReadyStateChangeEvent,\n RemoveTrackEvent,\n TextTrack as NativeTextTrack,\n TextTrackCue as NativeTextTrackCue,\n TimeUpdateEvent as NativeTimeUpdateEvent,\n TrackChangeEvent,\n VolumeChangeEvent as NativeVolumeChangeEvent,\n} from 'theoplayer';\nimport type { AdEvent, MediaTrack, TextTrack, TimeRange } from 'react-native-theoplayer';\nimport {\n AdEventType,\n CastState,\n MediaTrackEventType,\n MediaTrackType,\n PlayerEventType,\n PresentationMode,\n TextTrackEventType,\n TrackListEventType,\n} from 'react-native-theoplayer';\nimport type { THEOplayerWebAdapter } from './THEOplayerWebAdapter';\nimport { BaseEvent } from './event/BaseEvent';\nimport {\n DefaultAdEvent,\n DefaultAirplayStateChangeEvent,\n DefaultChromecastChangeEvent,\n DefaultChromecastErrorEvent,\n DefaultDurationChangeEvent,\n DefaultErrorEvent,\n DefaultLoadedMetadataEvent,\n DefaultMediaTrackEvent,\n DefaultMediaTrackListEvent,\n DefaultPresentationModeChangeEvent,\n DefaultProgressEvent,\n DefaultRateChangeEvent,\n DefaultReadyStateChangeEvent,\n DefaultSegmentNotFoundEvent,\n DefaultTextTrackEvent,\n DefaultTextTrackListEvent,\n DefaultTimeupdateEvent,\n DefaultVolumeChangeEvent,\n} from './event/PlayerEvents';\nimport { fromNativeCue, fromNativeMediaTrack, fromNativeTextTrack } from './web/TrackUtils';\n\nexport class WebEventForwarder {\n private readonly _player: ChromelessPlayer;\n private readonly _facade: THEOplayerWebAdapter;\n\n constructor(player: ChromelessPlayer, facade: THEOplayerWebAdapter) {\n this._player = player;\n this._facade = facade;\n this.addEventListeners();\n }\n\n private addEventListeners() {\n this._player.addEventListener('sourcechange', this.onSourceChange);\n this._player.addEventListener('loadstart', this.onLoadStart);\n this._player.addEventListener('loadeddata', this.onLoadedData);\n this._player.addEventListener('loadedmetadata', this.onLoadedMetadata);\n this._player.addEventListener('error', this.onError);\n this._player.addEventListener('progress', this.onProgress);\n this._player.addEventListener('play', this.onPlay);\n this._player.addEventListener('canplay', this.onCanPlay);\n this._player.addEventListener('playing', this.onPlaying);\n this._player.addEventListener('pause', this.onPause);\n this._player.addEventListener('seeking', this.onSeeking);\n this._player.addEventListener('seeked', this.onSeeked);\n this._player.addEventListener('ended', this.onEnded);\n this._player.addEventListener('waiting', this.onWaiting);\n this._player.addEventListener('readystatechange', this.onReadyStateChanged);\n this._player.addEventListener('timeupdate', this.onTimeUpdate);\n this._player.addEventListener('durationchange', this.onDurationChange);\n this._player.addEventListener('ratechange', this.onPlaybackRateChange);\n this._player.addEventListener('segmentnotfound', this.onSegmentNotFound);\n this._player.addEventListener('volumechange', this.onVolumeChangeEvent);\n this._player.presentation.addEventListener('presentationmodechange', this.onPresentationModeChange);\n\n this._player.textTracks.addEventListener('addtrack', this.onAddTextTrack);\n this._player.textTracks.addEventListener('removetrack', this.onRemoveTextTrack);\n this._player.textTracks.addEventListener('change', this.onChangeTextTrack);\n\n this._player.audioTracks.addEventListener('addtrack', this.onAddAudioTrack);\n this._player.audioTracks.addEventListener('removetrack', this.onRemoveAudioTrack);\n this._player.audioTracks.addEventListener('change', this.onChangeAudioTrack);\n\n this._player.videoTracks.addEventListener('addtrack', this.onAddVideoTrack);\n this._player.videoTracks.addEventListener('removetrack', this.onRemoveVideoTrack);\n this._player.videoTracks.addEventListener('change', this.onChangeVideoTrack);\n\n this._player.cast?.chromecast?.addEventListener('statechange', this.onChromecastStateChange);\n this._player.cast?.chromecast?.addEventListener('error', this.onChromecastError);\n this._player.cast?.airplay?.addEventListener('statechange', this.onAirplayStateChange);\n\n this._player.ads?.addEventListener(FORWARDED_AD_EVENTS, this.onAdEvent);\n }\n\n unload(): void {\n this.removeEventListeners();\n }\n\n private removeEventListeners() {\n this._player.removeEventListener('sourcechange', this.onSourceChange);\n this._player.removeEventListener('loadstart', this.onLoadStart);\n this._player.removeEventListener('loadeddata', this.onLoadedData);\n this._player.removeEventListener('loadedmetadata', this.onLoadedMetadata);\n this._player.removeEventListener('error', this.onError);\n this._player.removeEventListener('progress', this.onProgress);\n this._player.removeEventListener('canplay', this.onCanPlay);\n this._player.removeEventListener('play', this.onPlay);\n this._player.removeEventListener('playing', this.onPlaying);\n this._player.removeEventListener('pause', this.onPause);\n this._player.removeEventListener('seeking', this.onSeeking);\n this._player.removeEventListener('seeked', this.onSeeked);\n this._player.removeEventListener('ended', this.onEnded);\n this._player.removeEventListener('waiting', this.onWaiting);\n this._player.removeEventListener('readystatechange', this.onReadyStateChanged);\n this._player.removeEventListener('timeupdate', this.onTimeUpdate);\n this._player.removeEventListener('durationchange', this.onDurationChange);\n this._player.removeEventListener('ratechange', this.onPlaybackRateChange);\n this._player.removeEventListener('segmentnotfound', this.onSegmentNotFound);\n this._player.removeEventListener('volumechange', this.onVolumeChangeEvent);\n this._player.presentation.removeEventListener('presentationmodechange', this.onPresentationModeChange);\n\n this._player.textTracks.removeEventListener('addtrack', this.onAddTextTrack);\n this._player.textTracks.removeEventListener('removetrack', this.onRemoveTextTrack);\n this._player.textTracks.removeEventListener('change', this.onChangeTextTrack);\n\n this._player.audioTracks.removeEventListener('addtrack', this.onAddAudioTrack);\n this._player.audioTracks.removeEventListener('removetrack', this.onRemoveAudioTrack);\n this._player.audioTracks.removeEventListener('change', this.onChangeAudioTrack);\n\n this._player.videoTracks.removeEventListener('addtrack', this.onAddVideoTrack);\n this._player.videoTracks.removeEventListener('removetrack', this.onRemoveVideoTrack);\n this._player.videoTracks.removeEventListener('change', this.onChangeVideoTrack);\n\n this._player.cast?.chromecast?.removeEventListener('statechange', this.onChromecastStateChange);\n this._player.cast?.chromecast?.removeEventListener('error', this.onChromecastError);\n this._player.cast?.airplay?.removeEventListener('statechange', this.onAirplayStateChange);\n\n this._player.ads?.removeEventListener(FORWARDED_AD_EVENTS, this.onAdEvent);\n }\n\n private readonly onSourceChange = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.SOURCE_CHANGE));\n };\n\n private readonly onLoadStart = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.LOAD_START));\n };\n\n private readonly onLoadedData = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.LOADED_DATA));\n };\n\n private readonly onLoadedMetadata = () => {\n this._facade.dispatchEvent(\n new DefaultLoadedMetadataEvent(\n this._player.textTracks.map((textTrack: NativeTextTrack) => fromNativeTextTrack(textTrack)),\n this._player.audioTracks.map((audioTrack: NativeMediaTrack) => fromNativeMediaTrack(audioTrack)),\n this._player.videoTracks.map((videoTrack: NativeMediaTrack) => fromNativeMediaTrack(videoTrack)),\n 1e3 * this._player.duration,\n this._player.textTracks.find((track: NativeTextTrack) => track.mode === 'showing')?.uid,\n this._player.videoTracks.find((track: NativeMediaTrack) => track.enabled)?.uid,\n this._player.audioTracks.find((track: NativeMediaTrack) => track.enabled)?.uid,\n ),\n );\n };\n\n private readonly onError = (event: NativeErrorEvent) => {\n this._facade.dispatchEvent(\n new DefaultErrorEvent({\n errorCode: event.errorObject.code.toString(),\n errorMessage: event.errorObject.message,\n }),\n );\n };\n\n private readonly onProgress = () => {\n this._facade.dispatchEvent(new DefaultProgressEvent(fromTimeRanges(this._player.seekable), fromTimeRanges(this._player.buffered)));\n };\n\n private readonly onCanPlay = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.CANPLAY));\n };\n\n private readonly onPlay = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.PLAY));\n };\n\n private readonly onPlaying = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.PLAYING));\n };\n\n private readonly onPause = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.PAUSE));\n };\n\n private readonly onSeeking = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.SEEKING));\n };\n\n private readonly onSeeked = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.SEEKED));\n };\n\n private readonly onEnded = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.ENDED));\n };\n\n private readonly onWaiting = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.WAITING));\n };\n\n private readonly onReadyStateChanged = (event: NativeReadyStateChangeEvent) => {\n this._facade.dispatchEvent(new DefaultReadyStateChangeEvent(event.readyState));\n };\n\n private readonly onTimeUpdate = (event: NativeTimeUpdateEvent) => {\n this._facade.dispatchEvent(new DefaultTimeupdateEvent(event.currentTime * 1e3, event.currentProgramDateTime?.getTime()));\n };\n\n private readonly onDurationChange = (event: NativeDurationChangeEvent) => {\n this._facade.dispatchEvent(new DefaultDurationChangeEvent(event.duration * 1e3));\n };\n\n private readonly onPlaybackRateChange = (event: NativeRateChangeEvent) => {\n this._facade.dispatchEvent(new DefaultRateChangeEvent(event.playbackRate));\n };\n\n private readonly onSegmentNotFound = () => {\n this._facade.dispatchEvent(new DefaultSegmentNotFoundEvent(0, 'Segment not found', -1));\n };\n\n private readonly onVolumeChangeEvent = (event: NativeVolumeChangeEvent) => {\n this._facade.dispatchEvent(new DefaultVolumeChangeEvent(event.volume, this._player.muted));\n };\n\n private readonly onPresentationModeChange = (event: PresentationModeChangeEvent) => {\n this._facade.dispatchEvent(new DefaultPresentationModeChangeEvent(event.presentationMode as PresentationMode, PresentationMode.inline)); // TODO: move to extended event\n };\n\n private readonly onAddTextTrack = (event: AddTrackEvent) => {\n const track = event.track as NativeTextTrack;\n track.addEventListener('addcue', this.onAddTextTrackCue(track));\n track.addEventListener('removecue', this.onRemoveTextTrackCue(track));\n track.addEventListener('entercue', this.onEnterTextTrackCue(track));\n track.addEventListener('exitcue', this.onExitTextTrackCue(track));\n this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.ADD_TRACK, track as TextTrack));\n };\n\n private readonly onRemoveTextTrack = (event: RemoveTrackEvent) => {\n const track = event.track as NativeTextTrack;\n track.removeEventListener('addcue', this.onAddTextTrackCue(track));\n track.removeEventListener('removecue', this.onRemoveTextTrackCue(track));\n track.removeEventListener('entercue', this.onEnterTextTrackCue(track));\n track.removeEventListener('exitcue', this.onExitTextTrackCue(track));\n this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.REMOVE_TRACK, track as NativeTextTrack as TextTrack));\n };\n\n private readonly onChangeTextTrack = (event: TrackChangeEvent) => {\n this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.CHANGE_TRACK, event.track as NativeTextTrack as TextTrack));\n };\n\n private readonly onAddAudioTrack = (event: AddTrackEvent) => {\n this.onAddMediaTrack(event, MediaTrackType.AUDIO);\n };\n\n private readonly onAddVideoTrack = (event: AddTrackEvent) => {\n this.onAddMediaTrack(event, MediaTrackType.VIDEO);\n };\n\n private readonly onAddMediaTrack = (event: AddTrackEvent, trackType: MediaTrackType) => {\n const track = event.track as NativeMediaTrack;\n track.addEventListener('activequalitychanged', this.onActiveQualityChanged(trackType, track));\n this._facade.dispatchEvent(new DefaultMediaTrackListEvent(TrackListEventType.ADD_TRACK, trackType, track as MediaTrack));\n };\n\n private readonly onRemoveAudioTrack = (event: RemoveTrackEvent) => {\n this.onRemoveMediaTrack(event, MediaTrackType.AUDIO);\n };\n\n private readonly onRemoveVideoTrack = (event: RemoveTrackEvent) => {\n this.onRemoveMediaTrack(event, MediaTrackType.VIDEO);\n };\n\n private readonly onRemoveMediaTrack = (event: RemoveTrackEvent, trackType: MediaTrackType) => {\n const track = event.track as NativeMediaTrack;\n track.removeEventListener('activequalitychanged', this.onActiveQualityChanged(trackType, track));\n this._facade.dispatchEvent(new DefaultMediaTrackListEvent(TrackListEventType.REMOVE_TRACK, trackType, track as MediaTrack));\n };\n\n private readonly onChangeAudioTrack = (event: TrackChangeEvent) => {\n this.onChangeMediaTrack(event, MediaTrackType.AUDIO);\n };\n\n private readonly onChangeVideoTrack = (event: TrackChangeEvent) => {\n this.onChangeMediaTrack(event, MediaTrackType.VIDEO);\n };\n\n private onChangeMediaTrack = (event: TrackChangeEvent, trackType: MediaTrackType) => {\n const track = event.track as NativeMediaTrack;\n this._facade.dispatchEvent(new DefaultMediaTrackListEvent(TrackListEventType.CHANGE_TRACK, trackType, track as MediaTrack));\n };\n\n private readonly onChromecastStateChange = (event: CastStateChangeEvent) => {\n this._facade.dispatchEvent(new DefaultChromecastChangeEvent(event.state as CastState));\n };\n\n private readonly onChromecastError = (event: ChromecastErrorEvent) => {\n this._facade.dispatchEvent(new DefaultChromecastErrorEvent(event.error));\n };\n\n private readonly onAirplayStateChange = (event: CastStateChangeEvent) => {\n this._facade.dispatchEvent(new DefaultAirplayStateChangeEvent(event.state as CastState));\n };\n\n private readonly onAdEvent = (event: NativeEvent) => {\n const castedEvent = event as AdEvent;\n this._facade.dispatchEvent(new DefaultAdEvent(event.type as AdEventType, castedEvent.ad));\n };\n\n private readonly onAddTextTrackCue = (track: NativeTextTrack) => (event: NativeEvent<'addcue'>) => {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n this._facade.dispatchEvent(new DefaultTextTrackEvent(TextTrackEventType.ADD_CUE, track.uid, fromNativeCue(cue)));\n }\n };\n\n private readonly onRemoveTextTrackCue = (track: NativeTextTrack) => (event: NativeEvent<'removecue'>) => {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n this._facade.dispatchEvent(new DefaultTextTrackEvent(TextTrackEventType.REMOVE_CUE, track.uid, fromNativeCue(cue)));\n }\n };\n\n private readonly onEnterTextTrackCue = (track: NativeTextTrack) => (event: NativeEvent<'entercue'>) => {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n this._facade.dispatchEvent(new DefaultTextTrackEvent(TextTrackEventType.ENTER_CUE, track.uid, fromNativeCue(cue)));\n }\n };\n\n private readonly onExitTextTrackCue = (track: NativeTextTrack) => (event: NativeEvent<'exitcue'>) => {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n this._facade.dispatchEvent(new DefaultTextTrackEvent(TextTrackEventType.EXIT_CUE, track.uid, fromNativeCue(cue)));\n }\n };\n\n private readonly onActiveQualityChanged = (trackType: MediaTrackType, track: NativeMediaTrack) => () => {\n const quality = track.activeQuality;\n this._facade.dispatchEvent(\n new DefaultMediaTrackEvent(MediaTrackEventType.ACTIVE_QUALITY_CHANGED, trackType, track.uid, quality ? [quality] : undefined),\n );\n };\n}\n\nconst FORWARDED_AD_EVENTS: Array<AdEventType> = [\n AdEventType.ADD_AD_BREAK,\n AdEventType.REMOVE_AD_BREAK,\n AdEventType.AD_LOADED,\n AdEventType.AD_BREAK_BEGIN,\n AdEventType.AD_BREAK_END,\n AdEventType.AD_BREAK_CHANGE,\n AdEventType.UPDATE_AD_BREAK,\n AdEventType.ADD_AD,\n AdEventType.AD_BEGIN,\n AdEventType.AD_END,\n AdEventType.UPDATE_AD,\n AdEventType.AD_FIRST_QUARTILE,\n AdEventType.AD_MIDPOINT,\n AdEventType.AD_THIRD_QUARTILE,\n AdEventType.AD_SKIP,\n AdEventType.AD_IMPRESSION,\n AdEventType.AD_ERROR,\n AdEventType.AD_METADATA,\n AdEventType.AD_BUFFERING,\n];\n\nfunction fromTimeRanges(timeRanges: TimeRanges): TimeRange[] {\n const result: TimeRange[] = [];\n for (let i = 0; i < timeRanges.length; i++) {\n result.push({\n start: timeRanges.start(i) * 1e3,\n end: timeRanges.end(i) * 1e3,\n });\n }\n return result;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AdEventType","MediaTrackEventType","MediaTrackType","PlayerEventType","PresentationMode","TextTrackEventType","TextTrackKind","TextTrackMode","TrackListEventType","BaseEvent","DefaultAdEvent","DefaultAirplayStateChangeEvent","DefaultChromecastChangeEvent","DefaultChromecastErrorEvent","DefaultDurationChangeEvent","DefaultErrorEvent","DefaultLoadedMetadataEvent","DefaultMediaTrackEvent","DefaultMediaTrackListEvent","DefaultPresentationModeChangeEvent","DefaultProgressEvent","DefaultRateChangeEvent","DefaultReadyStateChangeEvent","DefaultSegmentNotFoundEvent","DefaultTextTrackEvent","DefaultTextTrackListEvent","DefaultTimeupdateEvent","DefaultVolumeChangeEvent","fromNativeCue","fromNativeMediaTrack","fromNativeTextTrack","WebEventForwarder","constructor","player","facade","_defineProperty","_facade","dispatchEvent","SOURCE_CHANGE","LOAD_START","LOADED_DATA","_this$_player$textTra","_this$_player$videoTr","_this$_player$audioTr","_player","textTracks","map","textTrack","audioTracks","audioTrack","videoTracks","videoTrack","duration","find","track","mode","uid","enabled","event","errorCode","errorObject","code","toString","errorMessage","message","fromTimeRanges","seekable","buffered","CANPLAY","PLAY","PLAYING","PAUSE","SEEKING","SEEKED","ENDED","WAITING","readyState","_event$currentProgram","currentTime","currentProgramDateTime","getTime","playbackRate","volume","muted","presentationMode","inline","kind","metadata","hidden","addEventListener","onAddTextTrackCue","onRemoveTextTrackCue","onEnterTextTrackCue","onExitTextTrackCue","ADD_TRACK","removeEventListener","REMOVE_TRACK","CHANGE_TRACK","onAddMediaTrack","AUDIO","VIDEO","trackType","onActiveQualityChanged","onRemoveMediaTrack","onChangeMediaTrack","state","error","castedEvent","type","ad","cue","ADD_CUE","REMOVE_CUE","ENTER_CUE","EXIT_CUE","quality","activeQuality","ACTIVE_QUALITY_CHANGED","undefined","addEventListeners","_this$_player$cast","_this$_player$cast2","_this$_player$cast3","_this$_player$ads","onSourceChange","onLoadStart","onLoadedData","onLoadedMetadata","onError","onProgress","onPlay","onCanPlay","onPlaying","onPause","onSeeking","onSeeked","onEnded","onWaiting","onReadyStateChanged","onTimeUpdate","onDurationChange","onPlaybackRateChange","onSegmentNotFound","onVolumeChangeEvent","presentation","onPresentationModeChange","onAddTextTrack","onRemoveTextTrack","onChangeTextTrack","onAddAudioTrack","onRemoveAudioTrack","onChangeAudioTrack","onAddVideoTrack","onRemoveVideoTrack","onChangeVideoTrack","cast","chromecast","onChromecastStateChange","onChromecastError","airplay","onAirplayStateChange","ads","FORWARDED_AD_EVENTS","onAdEvent","unload","removeEventListeners","_this$_player$cast4","_this$_player$cast5","_this$_player$cast6","_this$_player$ads2","ADD_AD_BREAK","REMOVE_AD_BREAK","AD_LOADED","AD_BREAK_BEGIN","AD_BREAK_END","AD_BREAK_CHANGE","UPDATE_AD_BREAK","ADD_AD","AD_BEGIN","AD_END","UPDATE_AD","AD_FIRST_QUARTILE","AD_MIDPOINT","AD_THIRD_QUARTILE","AD_SKIP","AD_IMPRESSION","AD_ERROR","AD_METADATA","AD_BUFFERING","timeRanges","result","i","length","push","start","end"],"sources":["WebEventForwarder.ts"],"sourcesContent":["import type { ChromelessPlayer } from 'theoplayer';\nimport type {\n AddTrackEvent,\n CastStateChangeEvent,\n ChromecastErrorEvent,\n DurationChangeEvent as NativeDurationChangeEvent,\n ErrorEvent as NativeErrorEvent,\n Event as NativeEvent,\n MediaTrack as NativeMediaTrack,\n PresentationModeChangeEvent,\n RateChangeEvent as NativeRateChangeEvent,\n ReadyStateChangeEvent as NativeReadyStateChangeEvent,\n RemoveTrackEvent,\n TextTrack as NativeTextTrack,\n TextTrackCue as NativeTextTrackCue,\n TimeUpdateEvent as NativeTimeUpdateEvent,\n TrackChangeEvent,\n VolumeChangeEvent as NativeVolumeChangeEvent,\n} from 'theoplayer';\nimport type { AdEvent, MediaTrack, TextTrack, TimeRange } from 'react-native-theoplayer';\nimport {\n AdEventType,\n CastState,\n MediaTrackEventType,\n MediaTrackType,\n PlayerEventType,\n PresentationMode,\n TextTrackEventType,\n TextTrackKind,\n TextTrackMode,\n TrackListEventType,\n} from 'react-native-theoplayer';\nimport type { THEOplayerWebAdapter } from './THEOplayerWebAdapter';\nimport { BaseEvent } from './event/BaseEvent';\nimport {\n DefaultAdEvent,\n DefaultAirplayStateChangeEvent,\n DefaultChromecastChangeEvent,\n DefaultChromecastErrorEvent,\n DefaultDurationChangeEvent,\n DefaultErrorEvent,\n DefaultLoadedMetadataEvent,\n DefaultMediaTrackEvent,\n DefaultMediaTrackListEvent,\n DefaultPresentationModeChangeEvent,\n DefaultProgressEvent,\n DefaultRateChangeEvent,\n DefaultReadyStateChangeEvent,\n DefaultSegmentNotFoundEvent,\n DefaultTextTrackEvent,\n DefaultTextTrackListEvent,\n DefaultTimeupdateEvent,\n DefaultVolumeChangeEvent,\n} from './event/PlayerEvents';\nimport { fromNativeCue, fromNativeMediaTrack, fromNativeTextTrack } from './web/TrackUtils';\n\nexport class WebEventForwarder {\n private readonly _player: ChromelessPlayer;\n private readonly _facade: THEOplayerWebAdapter;\n\n constructor(player: ChromelessPlayer, facade: THEOplayerWebAdapter) {\n this._player = player;\n this._facade = facade;\n this.addEventListeners();\n }\n\n private addEventListeners() {\n this._player.addEventListener('sourcechange', this.onSourceChange);\n this._player.addEventListener('loadstart', this.onLoadStart);\n this._player.addEventListener('loadeddata', this.onLoadedData);\n this._player.addEventListener('loadedmetadata', this.onLoadedMetadata);\n this._player.addEventListener('error', this.onError);\n this._player.addEventListener('progress', this.onProgress);\n this._player.addEventListener('play', this.onPlay);\n this._player.addEventListener('canplay', this.onCanPlay);\n this._player.addEventListener('playing', this.onPlaying);\n this._player.addEventListener('pause', this.onPause);\n this._player.addEventListener('seeking', this.onSeeking);\n this._player.addEventListener('seeked', this.onSeeked);\n this._player.addEventListener('ended', this.onEnded);\n this._player.addEventListener('waiting', this.onWaiting);\n this._player.addEventListener('readystatechange', this.onReadyStateChanged);\n this._player.addEventListener('timeupdate', this.onTimeUpdate);\n this._player.addEventListener('durationchange', this.onDurationChange);\n this._player.addEventListener('ratechange', this.onPlaybackRateChange);\n this._player.addEventListener('segmentnotfound', this.onSegmentNotFound);\n this._player.addEventListener('volumechange', this.onVolumeChangeEvent);\n this._player.presentation.addEventListener('presentationmodechange', this.onPresentationModeChange);\n\n this._player.textTracks.addEventListener('addtrack', this.onAddTextTrack);\n this._player.textTracks.addEventListener('removetrack', this.onRemoveTextTrack);\n this._player.textTracks.addEventListener('change', this.onChangeTextTrack);\n\n this._player.audioTracks.addEventListener('addtrack', this.onAddAudioTrack);\n this._player.audioTracks.addEventListener('removetrack', this.onRemoveAudioTrack);\n this._player.audioTracks.addEventListener('change', this.onChangeAudioTrack);\n\n this._player.videoTracks.addEventListener('addtrack', this.onAddVideoTrack);\n this._player.videoTracks.addEventListener('removetrack', this.onRemoveVideoTrack);\n this._player.videoTracks.addEventListener('change', this.onChangeVideoTrack);\n\n this._player.cast?.chromecast?.addEventListener('statechange', this.onChromecastStateChange);\n this._player.cast?.chromecast?.addEventListener('error', this.onChromecastError);\n this._player.cast?.airplay?.addEventListener('statechange', this.onAirplayStateChange);\n\n this._player.ads?.addEventListener(FORWARDED_AD_EVENTS, this.onAdEvent);\n }\n\n unload(): void {\n this.removeEventListeners();\n }\n\n private removeEventListeners() {\n this._player.removeEventListener('sourcechange', this.onSourceChange);\n this._player.removeEventListener('loadstart', this.onLoadStart);\n this._player.removeEventListener('loadeddata', this.onLoadedData);\n this._player.removeEventListener('loadedmetadata', this.onLoadedMetadata);\n this._player.removeEventListener('error', this.onError);\n this._player.removeEventListener('progress', this.onProgress);\n this._player.removeEventListener('canplay', this.onCanPlay);\n this._player.removeEventListener('play', this.onPlay);\n this._player.removeEventListener('playing', this.onPlaying);\n this._player.removeEventListener('pause', this.onPause);\n this._player.removeEventListener('seeking', this.onSeeking);\n this._player.removeEventListener('seeked', this.onSeeked);\n this._player.removeEventListener('ended', this.onEnded);\n this._player.removeEventListener('waiting', this.onWaiting);\n this._player.removeEventListener('readystatechange', this.onReadyStateChanged);\n this._player.removeEventListener('timeupdate', this.onTimeUpdate);\n this._player.removeEventListener('durationchange', this.onDurationChange);\n this._player.removeEventListener('ratechange', this.onPlaybackRateChange);\n this._player.removeEventListener('segmentnotfound', this.onSegmentNotFound);\n this._player.removeEventListener('volumechange', this.onVolumeChangeEvent);\n this._player.presentation.removeEventListener('presentationmodechange', this.onPresentationModeChange);\n\n this._player.textTracks.removeEventListener('addtrack', this.onAddTextTrack);\n this._player.textTracks.removeEventListener('removetrack', this.onRemoveTextTrack);\n this._player.textTracks.removeEventListener('change', this.onChangeTextTrack);\n\n this._player.audioTracks.removeEventListener('addtrack', this.onAddAudioTrack);\n this._player.audioTracks.removeEventListener('removetrack', this.onRemoveAudioTrack);\n this._player.audioTracks.removeEventListener('change', this.onChangeAudioTrack);\n\n this._player.videoTracks.removeEventListener('addtrack', this.onAddVideoTrack);\n this._player.videoTracks.removeEventListener('removetrack', this.onRemoveVideoTrack);\n this._player.videoTracks.removeEventListener('change', this.onChangeVideoTrack);\n\n this._player.cast?.chromecast?.removeEventListener('statechange', this.onChromecastStateChange);\n this._player.cast?.chromecast?.removeEventListener('error', this.onChromecastError);\n this._player.cast?.airplay?.removeEventListener('statechange', this.onAirplayStateChange);\n\n this._player.ads?.removeEventListener(FORWARDED_AD_EVENTS, this.onAdEvent);\n }\n\n private readonly onSourceChange = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.SOURCE_CHANGE));\n };\n\n private readonly onLoadStart = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.LOAD_START));\n };\n\n private readonly onLoadedData = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.LOADED_DATA));\n };\n\n private readonly onLoadedMetadata = () => {\n this._facade.dispatchEvent(\n new DefaultLoadedMetadataEvent(\n this._player.textTracks.map((textTrack: NativeTextTrack) => fromNativeTextTrack(textTrack)),\n this._player.audioTracks.map((audioTrack: NativeMediaTrack) => fromNativeMediaTrack(audioTrack)),\n this._player.videoTracks.map((videoTrack: NativeMediaTrack) => fromNativeMediaTrack(videoTrack)),\n 1e3 * this._player.duration,\n this._player.textTracks.find((track: NativeTextTrack) => track.mode === 'showing')?.uid,\n this._player.videoTracks.find((track: NativeMediaTrack) => track.enabled)?.uid,\n this._player.audioTracks.find((track: NativeMediaTrack) => track.enabled)?.uid,\n ),\n );\n };\n\n private readonly onError = (event: NativeErrorEvent) => {\n this._facade.dispatchEvent(\n new DefaultErrorEvent({\n errorCode: event.errorObject.code.toString(),\n errorMessage: event.errorObject.message,\n }),\n );\n };\n\n private readonly onProgress = () => {\n this._facade.dispatchEvent(new DefaultProgressEvent(fromTimeRanges(this._player.seekable), fromTimeRanges(this._player.buffered)));\n };\n\n private readonly onCanPlay = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.CANPLAY));\n };\n\n private readonly onPlay = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.PLAY));\n };\n\n private readonly onPlaying = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.PLAYING));\n };\n\n private readonly onPause = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.PAUSE));\n };\n\n private readonly onSeeking = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.SEEKING));\n };\n\n private readonly onSeeked = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.SEEKED));\n };\n\n private readonly onEnded = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.ENDED));\n };\n\n private readonly onWaiting = () => {\n this._facade.dispatchEvent(new BaseEvent(PlayerEventType.WAITING));\n };\n\n private readonly onReadyStateChanged = (event: NativeReadyStateChangeEvent) => {\n this._facade.dispatchEvent(new DefaultReadyStateChangeEvent(event.readyState));\n };\n\n private readonly onTimeUpdate = (event: NativeTimeUpdateEvent) => {\n this._facade.dispatchEvent(new DefaultTimeupdateEvent(event.currentTime * 1e3, event.currentProgramDateTime?.getTime()));\n };\n\n private readonly onDurationChange = (event: NativeDurationChangeEvent) => {\n this._facade.dispatchEvent(new DefaultDurationChangeEvent(event.duration * 1e3));\n };\n\n private readonly onPlaybackRateChange = (event: NativeRateChangeEvent) => {\n this._facade.dispatchEvent(new DefaultRateChangeEvent(event.playbackRate));\n };\n\n private readonly onSegmentNotFound = () => {\n this._facade.dispatchEvent(new DefaultSegmentNotFoundEvent(0, 'Segment not found', -1));\n };\n\n private readonly onVolumeChangeEvent = (event: NativeVolumeChangeEvent) => {\n this._facade.dispatchEvent(new DefaultVolumeChangeEvent(event.volume, this._player.muted));\n };\n\n private readonly onPresentationModeChange = (event: PresentationModeChangeEvent) => {\n this._facade.dispatchEvent(new DefaultPresentationModeChangeEvent(event.presentationMode as PresentationMode, PresentationMode.inline)); // TODO: move to extended event\n };\n\n private readonly onAddTextTrack = (event: AddTrackEvent) => {\n const track = event.track as NativeTextTrack;\n if (track.kind === TextTrackKind.metadata) {\n track.mode = TextTrackMode.hidden;\n }\n track.addEventListener('addcue', this.onAddTextTrackCue(track));\n track.addEventListener('removecue', this.onRemoveTextTrackCue(track));\n track.addEventListener('entercue', this.onEnterTextTrackCue(track));\n track.addEventListener('exitcue', this.onExitTextTrackCue(track));\n this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.ADD_TRACK, track as TextTrack));\n };\n\n private readonly onRemoveTextTrack = (event: RemoveTrackEvent) => {\n const track = event.track as NativeTextTrack;\n track.removeEventListener('addcue', this.onAddTextTrackCue(track));\n track.removeEventListener('removecue', this.onRemoveTextTrackCue(track));\n track.removeEventListener('entercue', this.onEnterTextTrackCue(track));\n track.removeEventListener('exitcue', this.onExitTextTrackCue(track));\n this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.REMOVE_TRACK, track as NativeTextTrack as TextTrack));\n };\n\n private readonly onChangeTextTrack = (event: TrackChangeEvent) => {\n this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.CHANGE_TRACK, event.track as NativeTextTrack as TextTrack));\n };\n\n private readonly onAddAudioTrack = (event: AddTrackEvent) => {\n this.onAddMediaTrack(event, MediaTrackType.AUDIO);\n };\n\n private readonly onAddVideoTrack = (event: AddTrackEvent) => {\n this.onAddMediaTrack(event, MediaTrackType.VIDEO);\n };\n\n private readonly onAddMediaTrack = (event: AddTrackEvent, trackType: MediaTrackType) => {\n const track = event.track as NativeMediaTrack;\n track.addEventListener('activequalitychanged', this.onActiveQualityChanged(trackType, track));\n this._facade.dispatchEvent(new DefaultMediaTrackListEvent(TrackListEventType.ADD_TRACK, trackType, track as MediaTrack));\n };\n\n private readonly onRemoveAudioTrack = (event: RemoveTrackEvent) => {\n this.onRemoveMediaTrack(event, MediaTrackType.AUDIO);\n };\n\n private readonly onRemoveVideoTrack = (event: RemoveTrackEvent) => {\n this.onRemoveMediaTrack(event, MediaTrackType.VIDEO);\n };\n\n private readonly onRemoveMediaTrack = (event: RemoveTrackEvent, trackType: MediaTrackType) => {\n const track = event.track as NativeMediaTrack;\n track.removeEventListener('activequalitychanged', this.onActiveQualityChanged(trackType, track));\n this._facade.dispatchEvent(new DefaultMediaTrackListEvent(TrackListEventType.REMOVE_TRACK, trackType, track as MediaTrack));\n };\n\n private readonly onChangeAudioTrack = (event: TrackChangeEvent) => {\n this.onChangeMediaTrack(event, MediaTrackType.AUDIO);\n };\n\n private readonly onChangeVideoTrack = (event: TrackChangeEvent) => {\n this.onChangeMediaTrack(event, MediaTrackType.VIDEO);\n };\n\n private onChangeMediaTrack = (event: TrackChangeEvent, trackType: MediaTrackType) => {\n const track = event.track as NativeMediaTrack;\n this._facade.dispatchEvent(new DefaultMediaTrackListEvent(TrackListEventType.CHANGE_TRACK, trackType, track as MediaTrack));\n };\n\n private readonly onChromecastStateChange = (event: CastStateChangeEvent) => {\n this._facade.dispatchEvent(new DefaultChromecastChangeEvent(event.state as CastState));\n };\n\n private readonly onChromecastError = (event: ChromecastErrorEvent) => {\n this._facade.dispatchEvent(new DefaultChromecastErrorEvent(event.error));\n };\n\n private readonly onAirplayStateChange = (event: CastStateChangeEvent) => {\n this._facade.dispatchEvent(new DefaultAirplayStateChangeEvent(event.state as CastState));\n };\n\n private readonly onAdEvent = (event: NativeEvent) => {\n const castedEvent = event as AdEvent;\n this._facade.dispatchEvent(new DefaultAdEvent(event.type as AdEventType, castedEvent.ad));\n };\n\n private readonly onAddTextTrackCue = (track: NativeTextTrack) => (event: NativeEvent<'addcue'>) => {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n this._facade.dispatchEvent(new DefaultTextTrackEvent(TextTrackEventType.ADD_CUE, track.uid, fromNativeCue(cue)));\n }\n };\n\n private readonly onRemoveTextTrackCue = (track: NativeTextTrack) => (event: NativeEvent<'removecue'>) => {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n this._facade.dispatchEvent(new DefaultTextTrackEvent(TextTrackEventType.REMOVE_CUE, track.uid, fromNativeCue(cue)));\n }\n };\n\n private readonly onEnterTextTrackCue = (track: NativeTextTrack) => (event: NativeEvent<'entercue'>) => {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n this._facade.dispatchEvent(new DefaultTextTrackEvent(TextTrackEventType.ENTER_CUE, track.uid, fromNativeCue(cue)));\n }\n };\n\n private readonly onExitTextTrackCue = (track: NativeTextTrack) => (event: NativeEvent<'exitcue'>) => {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n this._facade.dispatchEvent(new DefaultTextTrackEvent(TextTrackEventType.EXIT_CUE, track.uid, fromNativeCue(cue)));\n }\n };\n\n private readonly onActiveQualityChanged = (trackType: MediaTrackType, track: NativeMediaTrack) => () => {\n const quality = track.activeQuality;\n this._facade.dispatchEvent(\n new DefaultMediaTrackEvent(MediaTrackEventType.ACTIVE_QUALITY_CHANGED, trackType, track.uid, quality ? [quality] : undefined),\n );\n };\n}\n\nconst FORWARDED_AD_EVENTS: Array<AdEventType> = [\n AdEventType.ADD_AD_BREAK,\n AdEventType.REMOVE_AD_BREAK,\n AdEventType.AD_LOADED,\n AdEventType.AD_BREAK_BEGIN,\n AdEventType.AD_BREAK_END,\n AdEventType.AD_BREAK_CHANGE,\n AdEventType.UPDATE_AD_BREAK,\n AdEventType.ADD_AD,\n AdEventType.AD_BEGIN,\n AdEventType.AD_END,\n AdEventType.UPDATE_AD,\n AdEventType.AD_FIRST_QUARTILE,\n AdEventType.AD_MIDPOINT,\n AdEventType.AD_THIRD_QUARTILE,\n AdEventType.AD_SKIP,\n AdEventType.AD_IMPRESSION,\n AdEventType.AD_ERROR,\n AdEventType.AD_METADATA,\n AdEventType.AD_BUFFERING,\n];\n\nfunction fromTimeRanges(timeRanges: TimeRanges): TimeRange[] {\n const result: TimeRange[] = [];\n for (let i = 0; i < timeRanges.length; i++) {\n result.push({\n start: timeRanges.start(i) * 1e3,\n end: timeRanges.end(i) * 1e3,\n });\n }\n return result;\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
import { decodeNanInf } from '../../utils/TypeUtils';
|
|
2
|
+
export function isDateRangeCue(cue) {
|
|
3
|
+
return cue.customAttributes != undefined;
|
|
4
|
+
}
|
|
2
5
|
export function fromNativeCue(cue) {
|
|
3
6
|
return {
|
|
4
7
|
id: cue.id,
|
|
5
8
|
uid: cue.uid,
|
|
6
9
|
startTime: decodeNanInf(1e3 * cue.startTime),
|
|
7
10
|
endTime: decodeNanInf(1e3 * cue.endTime),
|
|
8
|
-
content: cue.content
|
|
11
|
+
content: cue.content,
|
|
12
|
+
...(isDateRangeCue(cue) && {
|
|
13
|
+
class: cue.class,
|
|
14
|
+
startDate: cue.startDate,
|
|
15
|
+
endDate: cue.endDate,
|
|
16
|
+
duration: cue.duration ? decodeNanInf(1e3 * cue.duration) : cue.duration,
|
|
17
|
+
plannedDuration: cue.plannedDuration ? decodeNanInf(1e3 * cue.plannedDuration) : cue.plannedDuration,
|
|
18
|
+
endOnNext: cue.endOnNext,
|
|
19
|
+
scte35Cmd: cue.scte35Cmd,
|
|
20
|
+
scte35Out: cue.scte35Out,
|
|
21
|
+
scte35In: cue.scte35In,
|
|
22
|
+
customAttributes: cue.customAttributes
|
|
23
|
+
})
|
|
9
24
|
};
|
|
10
25
|
}
|
|
11
26
|
export function fromNativeTextTrackList(tracks) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["decodeNanInf","
|
|
1
|
+
{"version":3,"names":["decodeNanInf","isDateRangeCue","cue","customAttributes","undefined","fromNativeCue","id","uid","startTime","endTime","content","class","startDate","endDate","duration","plannedDuration","endOnNext","scte35Cmd","scte35Out","scte35In","fromNativeTextTrackList","tracks","map","track","fromNativeTextTrack","kind","label","language","mode","type","src","forced","cues","fromNativeMediaTrackList","fromNativeMediaTrack","activeQuality","qualities","findNativeQualityByUid","mediaTrack","find","quality","findNativeQualitiesByUid","Array","isArray","filter","includes"],"sources":["TrackUtils.ts"],"sourcesContent":["import type {\n DateRangeCue as NativeDateRangeCue,\n MediaTrack as NativeMediaTrack,\n MediaTrackList as NativeMediaTrackList,\n Quality as NativeQuality,\n TextTrack as NativeTextTrack,\n TextTrackCue as NativeTextTrackCue,\n TextTracksList as NativeTextTrackList,\n} from 'theoplayer';\nimport type { MediaTrack, TextTrack, TextTrackCue, DateRangeCue } from 'react-native-theoplayer';\nimport { decodeNanInf } from '../../utils/TypeUtils';\n\nexport function isDateRangeCue(cue: TextTrackCue): cue is DateRangeCue {\n return (cue as NativeDateRangeCue).customAttributes != undefined;\n}\n\nexport function fromNativeCue(cue: NativeTextTrackCue): TextTrackCue {\n return {\n id: cue.id,\n uid: cue.uid,\n startTime: decodeNanInf(1e3 * cue.startTime),\n endTime: decodeNanInf(1e3 * cue.endTime),\n content: cue.content,\n ...(isDateRangeCue(cue) && {\n class: cue.class,\n startDate: cue.startDate,\n endDate: cue.endDate,\n duration: cue.duration ? decodeNanInf(1e3 * cue.duration) : cue.duration,\n plannedDuration: cue.plannedDuration ? decodeNanInf(1e3 * cue.plannedDuration) : cue.plannedDuration,\n endOnNext: cue.endOnNext,\n scte35Cmd: cue.scte35Cmd,\n scte35Out: cue.scte35Out,\n scte35In: cue.scte35In,\n customAttributes: cue.customAttributes,\n }),\n } as TextTrackCue;\n}\n\nexport function fromNativeTextTrackList(tracks: NativeTextTrackList): TextTrack[] {\n return tracks.map((track) => fromNativeTextTrack(track));\n}\n\nexport function fromNativeTextTrack(track: NativeTextTrack): TextTrack {\n const { id, uid, kind, label, language, mode, type, src, forced } = track;\n\n return {\n id,\n uid,\n kind,\n label,\n language,\n mode,\n type,\n src,\n forced,\n cues: track.cues ? track.cues.map((cue) => fromNativeCue(cue)) : [],\n } as TextTrack;\n}\n\nexport function fromNativeMediaTrackList(tracks: NativeMediaTrackList): MediaTrack[] {\n return tracks.map((track) => fromNativeMediaTrack(track));\n}\n\nexport function fromNativeMediaTrack(track: NativeMediaTrack): MediaTrack {\n const { id, uid, kind, label, language, activeQuality, qualities } = track;\n return {\n kind,\n label,\n language,\n id,\n uid,\n activeQuality,\n qualities,\n } as MediaTrack;\n}\n\nexport function findNativeQualityByUid(mediaTrack: NativeMediaTrack, uid: number | undefined): NativeQuality | undefined {\n return mediaTrack.qualities.find((quality) => quality.uid === uid);\n}\n\nexport function findNativeQualitiesByUid(mediaTrack: NativeMediaTrack | undefined, uid: number | number[] | undefined): NativeQuality[] | undefined {\n if (uid !== undefined && mediaTrack) {\n if (Array.isArray(uid)) {\n return mediaTrack.qualities.filter((quality) => uid.includes(quality.uid));\n } else {\n const quality = findNativeQualityByUid(mediaTrack, uid);\n return quality ? [quality] : undefined;\n }\n }\n return undefined;\n}\n"],"mappings":"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"}
|
|
@@ -50,6 +50,10 @@ export interface PlayerConfiguration {
|
|
|
50
50
|
* <br/> - This parameter only applies to Web platforms.
|
|
51
51
|
*/
|
|
52
52
|
readonly chromeless?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Sets whether DateRange tags from the playlists should be imported as a textTrack.
|
|
55
|
+
*/
|
|
56
|
+
readonly hlsDateRange?: boolean;
|
|
53
57
|
/**
|
|
54
58
|
* The retry configuration for the player.
|
|
55
59
|
*
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { TextTrackCue } from './TextTrackCue';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a cue of a HLS date range metadata text track.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface DateRangeCue extends TextTrackCue {
|
|
8
|
+
/**
|
|
9
|
+
* The class of the date range cue.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* <br/> - The class is a client-defined string specifying a set of attributes with associated value semantics.
|
|
13
|
+
*/
|
|
14
|
+
class: string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* The playback position at which the date range cue becomes active, as a Date.
|
|
17
|
+
*/
|
|
18
|
+
startDate: Date;
|
|
19
|
+
/**
|
|
20
|
+
* The playback position at which the date range cue becomes inactive, as a Date.
|
|
21
|
+
*/
|
|
22
|
+
endDate: Date | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* The duration of the date range cue, in milliseconds.
|
|
25
|
+
*/
|
|
26
|
+
duration: number | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* The planned duration of the date range cue, in milliseconds.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* <br/> - This is used when the exact duration is not known yet.
|
|
32
|
+
*/
|
|
33
|
+
plannedDuration: number | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Whether end-on-next is enabled for the date range cue.
|
|
36
|
+
*
|
|
37
|
+
* @remarks
|
|
38
|
+
* <br/> - End-on-next results in the {@link DateRangeCue.endDate} of the date range cue becoming equal to the {@link DateRangeCue.startDate} of the next date range cue with the same {@link DateRangeCue."class"}, once it is known.
|
|
39
|
+
*/
|
|
40
|
+
endOnNext: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The SCTE 'cmd' splice_info_section of the date range cue.
|
|
43
|
+
*/
|
|
44
|
+
scte35Cmd: ArrayBuffer | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* The SCTE 'out' splice_info_section of the date range cue.
|
|
47
|
+
*/
|
|
48
|
+
scte35Out: ArrayBuffer | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* The SCTE 'in' splice_info_section of the date range cue.
|
|
51
|
+
*/
|
|
52
|
+
scte35In: ArrayBuffer | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Custom attributes extracted from the cue source.
|
|
55
|
+
*/
|
|
56
|
+
customAttributes: Record<string, string | number | ArrayBuffer>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Check whether a text track cue is of type DateRangeCue.
|
|
60
|
+
*/
|
|
61
|
+
export declare function isDateRangeCue(cue: TextTrackCue): cue is DateRangeCue;
|
|
@@ -5,7 +5,9 @@ export declare enum TextTrackType {
|
|
|
5
5
|
id3 = "id3",
|
|
6
6
|
srt = "srt",
|
|
7
7
|
ttml = "ttml",
|
|
8
|
-
webvtt = "webvtt"
|
|
8
|
+
webvtt = "webvtt",
|
|
9
|
+
daterange = "daterange",
|
|
10
|
+
eventstream = "eventstream"
|
|
9
11
|
}
|
|
10
12
|
export declare enum TextTrackKind {
|
|
11
13
|
captions = "captions",
|
|
@@ -56,6 +58,7 @@ export interface TextTrack extends Track {
|
|
|
56
58
|
* The mode of the text track, represented by a value from the following list:
|
|
57
59
|
* <br/> - `'disabled'`: The track is disabled.
|
|
58
60
|
* <br/> - `'showing'`: The track is showing.
|
|
61
|
+
* <br/> - `'hidden'`: The track is enabled and loading cues, but not shown. (used for metadata tracks)
|
|
59
62
|
*/
|
|
60
63
|
mode: TextTrackMode;
|
|
61
64
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
|
-
import
|
|
2
|
+
import { PlayerError, THEOplayerViewProps } from 'react-native-theoplayer';
|
|
3
3
|
interface THEOplayerRCTViewState {
|
|
4
4
|
error?: PlayerError;
|
|
5
5
|
}
|
|
@@ -34,6 +34,7 @@ export declare class THEOplayerView extends PureComponent<React.PropsWithChildre
|
|
|
34
34
|
private _onSegmentNotFound;
|
|
35
35
|
private _onTextTrackListEvent;
|
|
36
36
|
private _onTextTrackEvent;
|
|
37
|
+
private normalizeCue;
|
|
37
38
|
private _onMediaTrackListEvent;
|
|
38
39
|
private _onMediaTrackEvent;
|
|
39
40
|
private _onAdEvent;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { MediaTrack as NativeMediaTrack, MediaTrackList as NativeMediaTrackList, Quality as NativeQuality, TextTrack as NativeTextTrack, TextTrackCue as NativeTextTrackCue, TextTracksList as NativeTextTrackList } from 'theoplayer';
|
|
2
|
-
import type { MediaTrack, TextTrack, TextTrackCue } from 'react-native-theoplayer';
|
|
2
|
+
import type { MediaTrack, TextTrack, TextTrackCue, DateRangeCue } from 'react-native-theoplayer';
|
|
3
|
+
export declare function isDateRangeCue(cue: TextTrackCue): cue is DateRangeCue;
|
|
3
4
|
export declare function fromNativeCue(cue: NativeTextTrackCue): TextTrackCue;
|
|
4
5
|
export declare function fromNativeTextTrackList(tracks: NativeTextTrackList): TextTrack[];
|
|
5
6
|
export declare function fromNativeTextTrack(track: NativeTextTrack): TextTrack;
|
package/package.json
CHANGED
|
@@ -59,6 +59,11 @@ export interface PlayerConfiguration {
|
|
|
59
59
|
*/
|
|
60
60
|
readonly chromeless?: boolean;
|
|
61
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Sets whether DateRange tags from the playlists should be imported as a textTrack.
|
|
64
|
+
*/
|
|
65
|
+
readonly hlsDateRange?: boolean;
|
|
66
|
+
|
|
62
67
|
/**
|
|
63
68
|
* The retry configuration for the player.
|
|
64
69
|
*
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { TextTrackCue } from './TextTrackCue';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents a cue of a HLS date range metadata text track.
|
|
5
|
+
*
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export interface DateRangeCue extends TextTrackCue {
|
|
9
|
+
/**
|
|
10
|
+
* The class of the date range cue.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* <br/> - The class is a client-defined string specifying a set of attributes with associated value semantics.
|
|
14
|
+
*/
|
|
15
|
+
class: string | undefined;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The playback position at which the date range cue becomes active, as a Date.
|
|
19
|
+
*/
|
|
20
|
+
startDate: Date;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The playback position at which the date range cue becomes inactive, as a Date.
|
|
24
|
+
*/
|
|
25
|
+
endDate: Date | undefined;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The duration of the date range cue, in milliseconds.
|
|
29
|
+
*/
|
|
30
|
+
duration: number | undefined;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The planned duration of the date range cue, in milliseconds.
|
|
34
|
+
*
|
|
35
|
+
* @remarks
|
|
36
|
+
* <br/> - This is used when the exact duration is not known yet.
|
|
37
|
+
*/
|
|
38
|
+
plannedDuration: number | undefined;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Whether end-on-next is enabled for the date range cue.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* <br/> - End-on-next results in the {@link DateRangeCue.endDate} of the date range cue becoming equal to the {@link DateRangeCue.startDate} of the next date range cue with the same {@link DateRangeCue."class"}, once it is known.
|
|
45
|
+
*/
|
|
46
|
+
endOnNext: boolean;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The SCTE 'cmd' splice_info_section of the date range cue.
|
|
50
|
+
*/
|
|
51
|
+
scte35Cmd: ArrayBuffer | undefined;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The SCTE 'out' splice_info_section of the date range cue.
|
|
55
|
+
*/
|
|
56
|
+
scte35Out: ArrayBuffer | undefined;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The SCTE 'in' splice_info_section of the date range cue.
|
|
60
|
+
*/
|
|
61
|
+
scte35In: ArrayBuffer | undefined;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Custom attributes extracted from the cue source.
|
|
65
|
+
*/
|
|
66
|
+
customAttributes: Record<string, string | number | ArrayBuffer>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Check whether a text track cue is of type DateRangeCue.
|
|
71
|
+
*/
|
|
72
|
+
export function isDateRangeCue(cue: TextTrackCue): cue is DateRangeCue {
|
|
73
|
+
return (cue as DateRangeCue).customAttributes != undefined;
|
|
74
|
+
}
|
|
@@ -7,6 +7,8 @@ export enum TextTrackType {
|
|
|
7
7
|
srt = 'srt',
|
|
8
8
|
ttml = 'ttml',
|
|
9
9
|
webvtt = 'webvtt',
|
|
10
|
+
daterange = 'daterange',
|
|
11
|
+
eventstream = 'eventstream',
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
export enum TextTrackKind {
|
|
@@ -65,6 +67,7 @@ export interface TextTrack extends Track {
|
|
|
65
67
|
* The mode of the text track, represented by a value from the following list:
|
|
66
68
|
* <br/> - `'disabled'`: The track is disabled.
|
|
67
69
|
* <br/> - `'showing'`: The track is showing.
|
|
70
|
+
* <br/> - `'hidden'`: The track is enabled and loading cues, but not shown. (used for metadata tracks)
|
|
68
71
|
*/
|
|
69
72
|
mode: TextTrackMode;
|
|
70
73
|
|
package/src/api/track/barrel.ts
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
View,
|
|
12
12
|
ViewStyle,
|
|
13
13
|
} from 'react-native';
|
|
14
|
-
import
|
|
14
|
+
import { isDateRangeCue, PlayerConfiguration, PlayerError, TextTrackCue, THEOplayerViewProps } from 'react-native-theoplayer';
|
|
15
15
|
import { CastEventType, PlayerEventType } from 'react-native-theoplayer';
|
|
16
16
|
|
|
17
17
|
import styles from './THEOplayerView.style';
|
|
@@ -254,12 +254,28 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
254
254
|
const nativeEvent = event.nativeEvent;
|
|
255
255
|
const cue = nativeEvent.cue;
|
|
256
256
|
if (cue) {
|
|
257
|
-
|
|
258
|
-
cue.endTime = decodeNanInf(cue.endTime);
|
|
257
|
+
this.normalizeCue(cue);
|
|
259
258
|
}
|
|
260
259
|
this._facade.dispatchEvent(new DefaultTextTrackEvent(toTextTrackEventType(nativeEvent.type), nativeEvent.trackUid, cue));
|
|
261
260
|
};
|
|
262
261
|
|
|
262
|
+
private normalizeCue(cue: TextTrackCue) {
|
|
263
|
+
cue.startTime = decodeNanInf(cue.startTime);
|
|
264
|
+
cue.endTime = decodeNanInf(cue.endTime);
|
|
265
|
+
if (isDateRangeCue(cue)) {
|
|
266
|
+
cue.startDate = new Date(cue.startDate);
|
|
267
|
+
if (cue.endDate) {
|
|
268
|
+
cue.endDate = new Date(cue.endDate);
|
|
269
|
+
}
|
|
270
|
+
if (cue.duration) {
|
|
271
|
+
cue.duration = decodeNanInf(cue.duration);
|
|
272
|
+
}
|
|
273
|
+
if (cue.plannedDuration) {
|
|
274
|
+
cue.plannedDuration = decodeNanInf(cue.plannedDuration);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
263
279
|
private _onMediaTrackListEvent = (event: NativeSyntheticEvent<NativeMediaTrackListEvent>) => {
|
|
264
280
|
const nativeEvent = event.nativeEvent;
|
|
265
281
|
this._facade.dispatchEvent(
|
|
@@ -391,7 +391,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
391
391
|
return;
|
|
392
392
|
}
|
|
393
393
|
this._state.selectedAudioTrack = trackUid;
|
|
394
|
-
NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle, trackUid
|
|
394
|
+
NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle, (trackUid !== undefined) ? trackUid : -1);
|
|
395
395
|
}
|
|
396
396
|
|
|
397
397
|
get videoTracks(): MediaTrack[] {
|
|
@@ -408,7 +408,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
408
408
|
}
|
|
409
409
|
this._state.selectedVideoTrack = trackUid;
|
|
410
410
|
this._state.targetVideoQuality = undefined;
|
|
411
|
-
NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle, trackUid
|
|
411
|
+
NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle, (trackUid !== undefined) ? trackUid : -1);
|
|
412
412
|
}
|
|
413
413
|
|
|
414
414
|
get textTracks(): TextTrack[] {
|
|
@@ -431,7 +431,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
431
431
|
track.mode = TextTrackMode.disabled;
|
|
432
432
|
}
|
|
433
433
|
});
|
|
434
|
-
NativeModules.PlayerModule.setSelectedTextTrack(this._view.nativeHandle, trackUid
|
|
434
|
+
NativeModules.PlayerModule.setSelectedTextTrack(this._view.nativeHandle, (trackUid !== undefined) ? trackUid : -1);
|
|
435
435
|
}
|
|
436
436
|
|
|
437
437
|
get textTrackStyle(): TextTrackStyle {
|
|
@@ -26,6 +26,8 @@ import {
|
|
|
26
26
|
PlayerEventType,
|
|
27
27
|
PresentationMode,
|
|
28
28
|
TextTrackEventType,
|
|
29
|
+
TextTrackKind,
|
|
30
|
+
TextTrackMode,
|
|
29
31
|
TrackListEventType,
|
|
30
32
|
} from 'react-native-theoplayer';
|
|
31
33
|
import type { THEOplayerWebAdapter } from './THEOplayerWebAdapter';
|
|
@@ -251,6 +253,9 @@ export class WebEventForwarder {
|
|
|
251
253
|
|
|
252
254
|
private readonly onAddTextTrack = (event: AddTrackEvent) => {
|
|
253
255
|
const track = event.track as NativeTextTrack;
|
|
256
|
+
if (track.kind === TextTrackKind.metadata) {
|
|
257
|
+
track.mode = TextTrackMode.hidden;
|
|
258
|
+
}
|
|
254
259
|
track.addEventListener('addcue', this.onAddTextTrackCue(track));
|
|
255
260
|
track.addEventListener('removecue', this.onRemoveTextTrackCue(track));
|
|
256
261
|
track.addEventListener('entercue', this.onEnterTextTrackCue(track));
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
DateRangeCue as NativeDateRangeCue,
|
|
2
3
|
MediaTrack as NativeMediaTrack,
|
|
3
4
|
MediaTrackList as NativeMediaTrackList,
|
|
4
5
|
Quality as NativeQuality,
|
|
@@ -6,9 +7,13 @@ import type {
|
|
|
6
7
|
TextTrackCue as NativeTextTrackCue,
|
|
7
8
|
TextTracksList as NativeTextTrackList,
|
|
8
9
|
} from 'theoplayer';
|
|
9
|
-
import type { MediaTrack, TextTrack, TextTrackCue } from 'react-native-theoplayer';
|
|
10
|
+
import type { MediaTrack, TextTrack, TextTrackCue, DateRangeCue } from 'react-native-theoplayer';
|
|
10
11
|
import { decodeNanInf } from '../../utils/TypeUtils';
|
|
11
12
|
|
|
13
|
+
export function isDateRangeCue(cue: TextTrackCue): cue is DateRangeCue {
|
|
14
|
+
return (cue as NativeDateRangeCue).customAttributes != undefined;
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
export function fromNativeCue(cue: NativeTextTrackCue): TextTrackCue {
|
|
13
18
|
return {
|
|
14
19
|
id: cue.id,
|
|
@@ -16,6 +21,18 @@ export function fromNativeCue(cue: NativeTextTrackCue): TextTrackCue {
|
|
|
16
21
|
startTime: decodeNanInf(1e3 * cue.startTime),
|
|
17
22
|
endTime: decodeNanInf(1e3 * cue.endTime),
|
|
18
23
|
content: cue.content,
|
|
24
|
+
...(isDateRangeCue(cue) && {
|
|
25
|
+
class: cue.class,
|
|
26
|
+
startDate: cue.startDate,
|
|
27
|
+
endDate: cue.endDate,
|
|
28
|
+
duration: cue.duration ? decodeNanInf(1e3 * cue.duration) : cue.duration,
|
|
29
|
+
plannedDuration: cue.plannedDuration ? decodeNanInf(1e3 * cue.plannedDuration) : cue.plannedDuration,
|
|
30
|
+
endOnNext: cue.endOnNext,
|
|
31
|
+
scte35Cmd: cue.scte35Cmd,
|
|
32
|
+
scte35Out: cue.scte35Out,
|
|
33
|
+
scte35In: cue.scte35In,
|
|
34
|
+
customAttributes: cue.customAttributes,
|
|
35
|
+
}),
|
|
19
36
|
} as TextTrackCue;
|
|
20
37
|
}
|
|
21
38
|
|