react-native-theoplayer 3.1.0 → 3.2.1

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +4 -0
  3. package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +7 -2
  4. package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +8 -0
  5. package/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt +47 -2
  6. package/android/src/main/java/com/theoplayer/util/ViewResolver.kt +2 -2
  7. package/ios/THEOplayerRCTTextTrackEventHandler.swift +21 -17
  8. package/ios/THEOplayerRCTTrackMetadataAggregator.swift +64 -8
  9. package/ios/THEOplayerRCTView.swift +4 -0
  10. package/lib/commonjs/api/config/PlayerConfiguration.js.map +1 -1
  11. package/lib/commonjs/api/track/DateRangeCue.js +19 -0
  12. package/lib/commonjs/api/track/DateRangeCue.js.map +1 -0
  13. package/lib/commonjs/api/track/TextTrack.js +2 -0
  14. package/lib/commonjs/api/track/TextTrack.js.map +1 -1
  15. package/lib/commonjs/api/track/barrel.js +11 -0
  16. package/lib/commonjs/api/track/barrel.js.map +1 -1
  17. package/lib/commonjs/internal/THEOplayerView.js +17 -2
  18. package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
  19. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +3 -3
  20. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
  21. package/lib/commonjs/internal/adapter/WebEventForwarder.js +3 -0
  22. package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
  23. package/lib/commonjs/internal/adapter/web/TrackUtils.js +17 -1
  24. package/lib/commonjs/internal/adapter/web/TrackUtils.js.map +1 -1
  25. package/lib/module/api/config/PlayerConfiguration.js.map +1 -1
  26. package/lib/module/api/track/DateRangeCue.js +13 -0
  27. package/lib/module/api/track/DateRangeCue.js.map +1 -0
  28. package/lib/module/api/track/TextTrack.js +2 -0
  29. package/lib/module/api/track/TextTrack.js.map +1 -1
  30. package/lib/module/api/track/barrel.js +1 -0
  31. package/lib/module/api/track/barrel.js.map +1 -1
  32. package/lib/module/internal/THEOplayerView.js +18 -2
  33. package/lib/module/internal/THEOplayerView.js.map +1 -1
  34. package/lib/module/internal/adapter/THEOplayerAdapter.js +3 -3
  35. package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
  36. package/lib/module/internal/adapter/WebEventForwarder.js +4 -1
  37. package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
  38. package/lib/module/internal/adapter/web/TrackUtils.js +16 -1
  39. package/lib/module/internal/adapter/web/TrackUtils.js.map +1 -1
  40. package/lib/typescript/api/config/PlayerConfiguration.d.ts +4 -0
  41. package/lib/typescript/api/track/DateRangeCue.d.ts +61 -0
  42. package/lib/typescript/api/track/TextTrack.d.ts +4 -1
  43. package/lib/typescript/api/track/barrel.d.ts +1 -0
  44. package/lib/typescript/internal/THEOplayerView.d.ts +2 -1
  45. package/lib/typescript/internal/adapter/web/TrackUtils.d.ts +2 -1
  46. package/package.json +1 -1
  47. package/src/api/config/PlayerConfiguration.ts +5 -0
  48. package/src/api/track/DateRangeCue.ts +74 -0
  49. package/src/api/track/TextTrack.ts +3 -0
  50. package/src/api/track/barrel.ts +1 -0
  51. package/src/internal/THEOplayerView.tsx +19 -3
  52. package/src/internal/adapter/THEOplayerAdapter.ts +3 -3
  53. package/src/internal/adapter/WebEventForwarder.ts +5 -0
  54. 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","fromNativeCue","cue","id","uid","startTime","endTime","content","fromNativeTextTrackList","tracks","map","track","fromNativeTextTrack","kind","label","language","mode","type","src","forced","cues","fromNativeMediaTrackList","fromNativeMediaTrack","activeQuality","qualities","findNativeQualityByUid","mediaTrack","find","quality","findNativeQualitiesByUid","undefined","Array","isArray","filter","includes"],"sources":["TrackUtils.ts"],"sourcesContent":["import type {\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 } from 'react-native-theoplayer';\nimport { decodeNanInf } from '../../utils/TypeUtils';\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 } 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":"AASA,SAASA,YAAY,QAAQ,uBAAuB;AAEpD,OAAO,SAASC,aAAaA,CAACC,GAAuB,EAAgB;EACnE,OAAO;IACLC,EAAE,EAAED,GAAG,CAACC,EAAE;IACVC,GAAG,EAAEF,GAAG,CAACE,GAAG;IACZC,SAAS,EAAEL,YAAY,CAAC,GAAG,GAAGE,GAAG,CAACG,SAAS,CAAC;IAC5CC,OAAO,EAAEN,YAAY,CAAC,GAAG,GAAGE,GAAG,CAACI,OAAO,CAAC;IACxCC,OAAO,EAAEL,GAAG,CAACK;EACf,CAAC;AACH;AAEA,OAAO,SAASC,uBAAuBA,CAACC,MAA2B,EAAe;EAChF,OAAOA,MAAM,CAACC,GAAG,CAAEC,KAAK,IAAKC,mBAAmB,CAACD,KAAK,CAAC,CAAC;AAC1D;AAEA,OAAO,SAASC,mBAAmBA,CAACD,KAAsB,EAAa;EACrE,MAAM;IAAER,EAAE;IAAEC,GAAG;IAAES,IAAI;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,IAAI;IAAEC,GAAG;IAAEC;EAAO,CAAC,GAAGR,KAAK;EAEzE,OAAO;IACLR,EAAE;IACFC,GAAG;IACHS,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRC,IAAI;IACJC,IAAI;IACJC,GAAG;IACHC,MAAM;IACNC,IAAI,EAAET,KAAK,CAACS,IAAI,GAAGT,KAAK,CAACS,IAAI,CAACV,GAAG,CAAER,GAAG,IAAKD,aAAa,CAACC,GAAG,CAAC,CAAC,GAAG;EACnE,CAAC;AACH;AAEA,OAAO,SAASmB,wBAAwBA,CAACZ,MAA4B,EAAgB;EACnF,OAAOA,MAAM,CAACC,GAAG,CAAEC,KAAK,IAAKW,oBAAoB,CAACX,KAAK,CAAC,CAAC;AAC3D;AAEA,OAAO,SAASW,oBAAoBA,CAACX,KAAuB,EAAc;EACxE,MAAM;IAAER,EAAE;IAAEC,GAAG;IAAES,IAAI;IAAEC,KAAK;IAAEC,QAAQ;IAAEQ,aAAa;IAAEC;EAAU,CAAC,GAAGb,KAAK;EAC1E,OAAO;IACLE,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRZ,EAAE;IACFC,GAAG;IACHmB,aAAa;IACbC;EACF,CAAC;AACH;AAEA,OAAO,SAASC,sBAAsBA,CAACC,UAA4B,EAAEtB,GAAuB,EAA6B;EACvH,OAAOsB,UAAU,CAACF,SAAS,CAACG,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACxB,GAAG,KAAKA,GAAG,CAAC;AACpE;AAEA,OAAO,SAASyB,wBAAwBA,CAACH,UAAwC,EAAEtB,GAAkC,EAA+B;EAClJ,IAAIA,GAAG,KAAK0B,SAAS,IAAIJ,UAAU,EAAE;IACnC,IAAIK,KAAK,CAACC,OAAO,CAAC5B,GAAG,CAAC,EAAE;MACtB,OAAOsB,UAAU,CAACF,SAAS,CAACS,MAAM,CAAEL,OAAO,IAAKxB,GAAG,CAAC8B,QAAQ,CAACN,OAAO,CAACxB,GAAG,CAAC,CAAC;IAC5E,CAAC,MAAM;MACL,MAAMwB,OAAO,GAAGH,sBAAsB,CAACC,UAAU,EAAEtB,GAAG,CAAC;MACvD,OAAOwB,OAAO,GAAG,CAACA,OAAO,CAAC,GAAGE,SAAS;IACxC;EACF;EACA,OAAOA,SAAS;AAClB"}
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
  /**
@@ -4,3 +4,4 @@ export * from './TextTrack';
4
4
  export * from './TextTrackCue';
5
5
  export * from './Track';
6
6
  export * from './TextTrackStyle';
7
+ export * from './DateRangeCue';
@@ -1,5 +1,5 @@
1
1
  import React, { PureComponent } from 'react';
2
- import type { PlayerError, THEOplayerViewProps } from 'react-native-theoplayer';
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-theoplayer",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "A THEOplayer video component for react-native.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -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
 
@@ -4,3 +4,4 @@ export * from './TextTrack';
4
4
  export * from './TextTrackCue';
5
5
  export * from './Track';
6
6
  export * from './TextTrackStyle';
7
+ export * from './DateRangeCue';
@@ -11,7 +11,7 @@ import {
11
11
  View,
12
12
  ViewStyle,
13
13
  } from 'react-native';
14
- import type { PlayerConfiguration, PlayerError, THEOplayerViewProps } from 'react-native-theoplayer';
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
- cue.startTime = decodeNanInf(cue.startTime);
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 || -1);
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 || -1);
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 || -1);
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