react-native-theoplayer 2.6.0 → 2.7.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/util/ViewResolver.kt +9 -1
- package/ios/THEOplayerRCTDebug.swift +3 -3
- package/ios/THEOplayerRCTMainEventHandler.swift +59 -59
- package/ios/THEOplayerRCTMediaTrackEventHandler.swift +18 -18
- package/ios/THEOplayerRCTNetworkUtils.swift +1 -1
- package/ios/THEOplayerRCTPlayerAPI.swift +14 -14
- package/ios/THEOplayerRCTPrintUtils.swift +16 -0
- package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +6 -6
- package/ios/THEOplayerRCTTextTrackEventHandler.swift +21 -21
- package/ios/THEOplayerRCTView.swift +29 -29
- package/ios/ads/THEOplayerRCTAdsAPI+DAI.swift +6 -6
- package/ios/ads/THEOplayerRCTAdsAPI.swift +13 -13
- package/ios/ads/THEOplayerRCTAdsEventHandler.swift +27 -27
- package/ios/ads/THEOplayerRCTSourceDescriptionBuilder+Ads.swift +5 -5
- package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +16 -15
- package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +16 -16
- package/ios/casting/THEOplayerRCTCastAPI+Airplay.swift +6 -6
- package/ios/casting/THEOplayerRCTCastAPI+Chromecast.swift +10 -10
- package/ios/casting/THEOplayerRCTCastAPI.swift +1 -1
- package/ios/casting/THEOplayerRCTCastEventHandler.swift +11 -11
- package/ios/contentprotection/THEOplayerRCTContentProtectionAPI.swift +1 -1
- package/ios/pip/THEOplayerRCTPipControlsManager.swift +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +41 -10
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +41 -10
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +2 -0
- package/package.json +1 -1
- package/src/internal/adapter/THEOplayerAdapter.ts +44 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DefaultEventDispatcher","addTrack","AspectRatio","findMediaTrackByUid","MediaTrackEventType","MediaTrackType","PlayerEventType","PresentationMode","removeTrack","TextTrackMode","TrackListEventType","THEOplayerNativeAdsAdapter","THEOplayerNativeCastAdapter","AbrAdapter","NativeModules","Platform","TextTrackStyleAdapter","defaultPlayerState","source","undefined","autoplay","paused","seekable","buffered","pipConfig","startsAutomatically","backgroundAudioConfig","enabled","presentationMode","inline","muted","seeking","volume","currentTime","duration","NaN","playbackRate","preload","aspectRatio","FIT","audioTracks","videoTracks","textTracks","targetVideoQuality","selectedVideoTrack","selectedAudioTrack","selectedTextTrack","THEOplayerAdapter","constructor","view","initialState","arguments","length","_defineProperty","_state","play","pause","event","_event$seekable","_event$buffered","sort","a","b","end","subType","track","ADD_TRACK","REMOVE_TRACK","CHANGE_TRACK","trackType","trackUid","tracks","VIDEO","ACTIVE_QUALITY_CHANGED","Object","assign","activeQuality","qualities","isAudio","AUDIO","_view","_adsAdapter","_castAdapter","_abrAdapter","_textTrackStyleAdapter","addEventListener","SOURCE_CHANGE","onSourceChange","LOADED_METADATA","onLoadedMetadata","PAUSE","onPause","PLAYING","onPlaying","TIME_UPDATE","onTimeupdate","DURATION_CHANGE","onDurationChange","RATE_CHANGE","onRateChange","SEEKING","onSeeking","SEEKED","onSeeked","PROGRESS","onProgress","TEXT_TRACK_LIST","onTextTrackList","MEDIA_TRACK","onMediaTrack","MEDIA_TRACK_LIST","onMediaTrackList","PRESENTATIONMODE_CHANGE","onPresentationModeChange","abr","OS","ads","PlayerModule","setPaused","nativeHandle","type","setPreload","seekableEnd","ranges","cast","isNaN","seekTime","Infinity","setCurrentTime","pipConfiguration","setPipConfig","backgroundAudioConfiguration","setBackgroundAudioConfig","setPresentationMode","setMuted","setPlaybackRate","setSelectedAudioTrack","setSelectedVideoTrack","forEach","uid","mode","showing","disabled","setSelectedTextTrack","textTrackStyle","setSource","target","Array","isArray","targetQuality","setTargetVideoQuality","setVolume","ratio","setAspectRatio","initializeWithNativePlayerState_","state","init_"],"sources":["THEOplayerAdapter.ts"],"sourcesContent":["import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';\nimport type {\n ABRConfiguration,\n AdsAPI,\n CastAPI,\n DurationChangeEvent,\n LoadedMetadataEvent,\n MediaTrack,\n MediaTrackEvent,\n MediaTrackListEvent,\n NativeHandleType,\n PiPConfiguration,\n PlayerEventMap,\n PresentationModeChangeEvent,\n ProgressEvent,\n RateChangeEvent,\n SourceDescription,\n TextTrack,\n TextTrackListEvent,\n THEOplayer,\n THEOplayerView,\n TimeUpdateEvent,\n} from 'react-native-theoplayer';\nimport {\n addTrack,\n AspectRatio,\n findMediaTrackByUid,\n MediaTrackEventType,\n MediaTrackType,\n PlayerEventType,\n PreloadType,\n PresentationMode,\n removeTrack,\n TextTrackMode,\n TextTrackStyle,\n TrackListEventType,\n} from 'react-native-theoplayer';\nimport { THEOplayerNativeAdsAdapter } from './ads/THEOplayerNativeAdsAdapter';\nimport { THEOplayerNativeCastAdapter } from './cast/THEOplayerNativeCastAdapter';\nimport { AbrAdapter } from './abr/AbrAdapter';\nimport { NativeModules, Platform } from 'react-native';\nimport { TextTrackStyleAdapter } from './track/TextTrackStyleAdapter';\nimport type { BackgroundAudioConfiguration } from 'src/api/backgroundAudio/BackgroundAudioConfiguration';\nimport type { NativePlayerState } from './NativePlayerState';\n\nconst defaultPlayerState: NativePlayerState = {\n source: undefined,\n autoplay: false,\n paused: false,\n seekable: [],\n buffered: [],\n pipConfig: { startsAutomatically: false },\n backgroundAudioConfig: { enabled: false },\n presentationMode: PresentationMode.inline,\n muted: false,\n seeking: false,\n volume: 1,\n currentTime: 0,\n duration: NaN,\n playbackRate: 1,\n preload: 'none',\n aspectRatio: AspectRatio.FIT,\n audioTracks: [],\n videoTracks: [],\n textTracks: [],\n targetVideoQuality: undefined,\n selectedVideoTrack: undefined,\n selectedAudioTrack: undefined,\n selectedTextTrack: undefined,\n};\n\nexport class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> implements THEOplayer {\n private readonly _view: THEOplayerView;\n private readonly _state: NativePlayerState;\n private readonly _adsAdapter: THEOplayerNativeAdsAdapter;\n private readonly _castAdapter: THEOplayerNativeCastAdapter;\n private readonly _abrAdapter: AbrAdapter;\n private readonly _textTrackStyleAdapter: TextTrackStyleAdapter;\n\n constructor(view: THEOplayerView, initialState: NativePlayerState = defaultPlayerState) {\n super();\n this._view = view;\n this._state = { ...initialState };\n this._adsAdapter = new THEOplayerNativeAdsAdapter(this._view);\n this._castAdapter = new THEOplayerNativeCastAdapter(this, this._view);\n this._abrAdapter = new AbrAdapter(this._view);\n this._textTrackStyleAdapter = new TextTrackStyleAdapter(this._view);\n\n this.addEventListener(PlayerEventType.SOURCE_CHANGE, this.onSourceChange);\n this.addEventListener(PlayerEventType.LOADED_METADATA, this.onLoadedMetadata);\n this.addEventListener(PlayerEventType.PAUSE, this.onPause);\n this.addEventListener(PlayerEventType.PLAYING, this.onPlaying);\n this.addEventListener(PlayerEventType.TIME_UPDATE, this.onTimeupdate);\n this.addEventListener(PlayerEventType.DURATION_CHANGE, this.onDurationChange);\n this.addEventListener(PlayerEventType.RATE_CHANGE, this.onRateChange);\n this.addEventListener(PlayerEventType.SEEKING, this.onSeeking);\n this.addEventListener(PlayerEventType.SEEKED, this.onSeeked);\n this.addEventListener(PlayerEventType.PROGRESS, this.onProgress);\n this.addEventListener(PlayerEventType.TEXT_TRACK_LIST, this.onTextTrackList);\n this.addEventListener(PlayerEventType.MEDIA_TRACK, this.onMediaTrack);\n this.addEventListener(PlayerEventType.MEDIA_TRACK_LIST, this.onMediaTrackList);\n this.addEventListener(PlayerEventType.PRESENTATIONMODE_CHANGE, this.onPresentationModeChange);\n }\n\n private onSourceChange = () => {\n if (this._state.autoplay) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n private onPause = () => {\n this._state.paused = true;\n };\n\n private onPlaying = () => {\n this._state.paused = false;\n };\n\n private onPresentationModeChange = (event: PresentationModeChangeEvent) => {\n this._state.presentationMode = event.presentationMode;\n };\n\n private onTimeupdate = (event: TimeUpdateEvent) => {\n this._state.currentTime = event.currentTime;\n };\n\n private onLoadedMetadata = (event: LoadedMetadataEvent) => {\n this._state.duration = event.duration;\n this._state.audioTracks = event.audioTracks;\n this._state.videoTracks = event.videoTracks;\n this._state.textTracks = event.textTracks;\n this._state.selectedAudioTrack = event.selectedAudioTrack;\n this._state.selectedVideoTrack = event.selectedVideoTrack;\n this._state.selectedTextTrack = event.selectedTextTrack;\n };\n\n private onDurationChange = (event: DurationChangeEvent) => {\n this._state.duration = event.duration;\n };\n\n private onRateChange = (event: RateChangeEvent) => {\n this._state.playbackRate = event.playbackRate;\n };\n\n private onSeeking = () => {\n this._state.seeking = true;\n };\n\n private onSeeked = () => {\n this._state.seeking = false;\n };\n\n private onProgress = (event: ProgressEvent) => {\n this._state.seekable = event.seekable?.sort((a, b) => a.end - b.end);\n this._state.buffered = event.buffered?.sort((a, b) => a.end - b.end);\n };\n\n private onTextTrackList = (event: TextTrackListEvent) => {\n const { subType, track } = event;\n switch (subType) {\n case TrackListEventType.ADD_TRACK:\n this._state.textTracks = addTrack(this._state.textTracks, track);\n break;\n case TrackListEventType.REMOVE_TRACK:\n this._state.textTracks = removeTrack(this._state.textTracks, track);\n break;\n case TrackListEventType.CHANGE_TRACK:\n this._state.textTracks = removeTrack(this._state.textTracks, track);\n this._state.textTracks = addTrack(this._state.textTracks, track);\n break;\n }\n };\n\n private onMediaTrack = (event: MediaTrackEvent) => {\n const { subType, trackType, trackUid } = event;\n const tracks = trackType === MediaTrackType.VIDEO ? this._state.videoTracks : this._state.audioTracks;\n const track = findMediaTrackByUid(tracks, trackUid);\n switch (subType) {\n case MediaTrackEventType.ACTIVE_QUALITY_CHANGED:\n // Update local state\n if (track) {\n Object.assign(track, { ...track, activeQuality: event.qualities });\n }\n break;\n }\n };\n\n private onMediaTrackList = (event: MediaTrackListEvent) => {\n const { subType, trackType, track } = event;\n const isAudio = trackType === MediaTrackType.AUDIO;\n switch (subType) {\n case TrackListEventType.ADD_TRACK:\n if (isAudio) {\n this._state.audioTracks = addTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = addTrack(this._state.videoTracks, track);\n }\n break;\n case TrackListEventType.REMOVE_TRACK:\n if (isAudio) {\n this._state.audioTracks = removeTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = removeTrack(this._state.videoTracks, track);\n }\n break;\n case TrackListEventType.CHANGE_TRACK:\n if (isAudio) {\n this._state.audioTracks = removeTrack(this._state.audioTracks, track);\n this._state.audioTracks = addTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = removeTrack(this._state.videoTracks, track);\n this._state.videoTracks = addTrack(this._state.videoTracks, track);\n }\n break;\n }\n };\n\n get abr(): ABRConfiguration | undefined {\n return Platform.OS === 'android' ? this._abrAdapter : undefined;\n }\n\n get ads(): AdsAPI {\n return this._adsAdapter;\n }\n\n set autoplay(autoplay: boolean) {\n this._state.autoplay = autoplay;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, !autoplay);\n }\n\n get autoplay(): boolean {\n return this._state.autoplay;\n }\n\n set preload(type: PreloadType) {\n this._state.preload = type;\n NativeModules.PlayerModule.setPreload(this._view.nativeHandle, type);\n }\n\n get preload(): PreloadType {\n return this._state.preload;\n }\n\n get seekable() {\n return this._state.seekable;\n }\n\n private seekableEnd(): number {\n const ranges = this.seekable;\n return ranges.length === 0 ? 0 : ranges[ranges.length - 1].end;\n }\n\n get buffered() {\n return this._state.buffered;\n }\n\n get cast(): CastAPI {\n return this._castAdapter;\n }\n\n get currentTime(): number {\n return this._state.currentTime;\n }\n\n set currentTime(currentTime: number) {\n if (isNaN(currentTime)) {\n return;\n }\n\n // Sanitise currentTime\n let seekTime = currentTime;\n if (currentTime === Infinity) {\n seekTime = this.seekableEnd();\n }\n\n this._state.currentTime = seekTime;\n NativeModules.PlayerModule.setCurrentTime(this._view.nativeHandle, seekTime);\n }\n\n get duration(): number {\n return this._state.duration;\n }\n\n get pipConfiguration(): PiPConfiguration {\n return this._state.pipConfig;\n }\n\n set pipConfiguration(pipConfiguration: PiPConfiguration) {\n this._state.pipConfig = pipConfiguration;\n NativeModules.PlayerModule.setPipConfig(this._view.nativeHandle, pipConfiguration);\n }\n\n get backgroundAudioConfiguration(): BackgroundAudioConfiguration {\n return this._state.backgroundAudioConfig;\n }\n\n set backgroundAudioConfiguration(backgroundAudioConfiguration: BackgroundAudioConfiguration) {\n this._state.backgroundAudioConfig = backgroundAudioConfiguration;\n NativeModules.PlayerModule.setBackgroundAudioConfig(this._view.nativeHandle, backgroundAudioConfiguration);\n }\n\n get presentationMode(): PresentationMode {\n return this._state.presentationMode;\n }\n\n set presentationMode(presentationMode: PresentationMode) {\n this._state.presentationMode = presentationMode;\n NativeModules.PlayerModule.setPresentationMode(this._view.nativeHandle, presentationMode);\n }\n\n get muted(): boolean {\n return this._state.muted;\n }\n\n set muted(muted: boolean) {\n this._state.muted = muted;\n NativeModules.PlayerModule.setMuted(this._view.nativeHandle, muted);\n }\n\n get seeking(): boolean {\n return this._state.seeking;\n }\n\n get paused(): boolean {\n return this._state.paused;\n }\n\n get playbackRate(): number {\n return this._state.playbackRate;\n }\n\n set playbackRate(playbackRate: number) {\n this._state.playbackRate = playbackRate;\n NativeModules.PlayerModule.setPlaybackRate(this._view.nativeHandle, playbackRate);\n }\n\n get audioTracks(): MediaTrack[] {\n return this._state.audioTracks;\n }\n\n get selectedAudioTrack(): number | undefined {\n return this._state.selectedAudioTrack;\n }\n\n set selectedAudioTrack(trackUid: number | undefined) {\n this._state.selectedAudioTrack = trackUid;\n NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get videoTracks(): MediaTrack[] {\n return this._state.videoTracks;\n }\n\n get selectedVideoTrack(): number | undefined {\n return this._state.selectedVideoTrack;\n }\n\n set selectedVideoTrack(trackUid: number | undefined) {\n this._state.selectedVideoTrack = trackUid;\n this._state.targetVideoQuality = undefined;\n NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get textTracks(): TextTrack[] {\n return this._state.textTracks;\n }\n\n get selectedTextTrack(): number | undefined {\n return this._state.selectedTextTrack;\n }\n\n set selectedTextTrack(trackUid: number | undefined) {\n this._state.selectedTextTrack = trackUid;\n this.textTracks.forEach((track) => {\n if (track.uid === trackUid) {\n track.mode = TextTrackMode.showing;\n } else if (track.mode === TextTrackMode.showing) {\n track.mode = TextTrackMode.disabled;\n }\n });\n NativeModules.PlayerModule.setSelectedTextTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get textTrackStyle(): TextTrackStyle {\n return this._textTrackStyleAdapter;\n }\n\n get source(): SourceDescription | undefined {\n return this._state.source;\n }\n\n set source(source: SourceDescription | undefined) {\n // This is to correctly reset autoplay during a source change.\n this.pause();\n this._state.source = source;\n NativeModules.PlayerModule.setSource(this._view.nativeHandle, source);\n // Reset state for play-out of new source\n Object.assign(this._state, {\n playbackRate: 1,\n seeking: false,\n audioTracks: [],\n videoTracks: [],\n textTracks: [],\n seekable: [],\n buffered: [],\n selectedTextTrack: undefined,\n selectedVideoTrack: undefined,\n selectedAudioTrack: undefined,\n targetVideoQuality: undefined,\n });\n }\n\n get targetVideoQuality(): number | number[] | undefined {\n return this._state.targetVideoQuality;\n }\n\n set targetVideoQuality(target: number | number[] | undefined) {\n // Always pass an array for targetVideoQuality.\n this._state.targetVideoQuality = !target ? [] : Array.isArray(target) ? target : [target];\n\n // Update local state\n const track = findMediaTrackByUid(this._state.videoTracks, this.selectedVideoTrack);\n if (track) {\n Object.assign(track, { ...track, targetQuality: this._state.targetVideoQuality });\n }\n NativeModules.PlayerModule.setTargetVideoQuality(this._view.nativeHandle, this._state.targetVideoQuality);\n }\n\n get volume(): number {\n return this._state.volume;\n }\n\n set volume(volume: number) {\n this._state.volume = volume;\n NativeModules.PlayerModule.setVolume(this._view.nativeHandle, volume);\n }\n\n get aspectRatio(): AspectRatio {\n return this._state.aspectRatio;\n }\n\n set aspectRatio(ratio: AspectRatio) {\n this._state.aspectRatio = ratio;\n NativeModules.PlayerModule.setAspectRatio(this._view.nativeHandle, ratio);\n }\n\n pause(): void {\n this._state.paused = true;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, true);\n }\n\n play(): void {\n this._state.paused = false;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, false);\n }\n\n get nativeHandle(): NativeHandleType {\n return this._view.nativeHandle;\n }\n\n initializeWithNativePlayerState_(state: NativePlayerState) {\n Object.assign(this._state, state);\n this._castAdapter.init_();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["DefaultEventDispatcher","addTrack","AspectRatio","findMediaTrackByUid","MediaTrackEventType","MediaTrackType","PlayerEventType","PresentationMode","removeTrack","TextTrackMode","TrackListEventType","THEOplayerNativeAdsAdapter","THEOplayerNativeCastAdapter","AbrAdapter","NativeModules","Platform","TextTrackStyleAdapter","defaultPlayerState","source","undefined","autoplay","paused","seekable","buffered","pipConfig","startsAutomatically","backgroundAudioConfig","enabled","presentationMode","inline","muted","seeking","volume","currentTime","duration","NaN","playbackRate","preload","aspectRatio","FIT","audioTracks","videoTracks","textTracks","targetVideoQuality","selectedVideoTrack","selectedAudioTrack","selectedTextTrack","THEOplayerAdapter","constructor","view","initialState","arguments","length","_defineProperty","applyAutoplay","_state","event","_event$seekable","_event$buffered","sort","a","b","end","subType","track","ADD_TRACK","REMOVE_TRACK","CHANGE_TRACK","trackType","trackUid","tracks","VIDEO","ACTIVE_QUALITY_CHANGED","Object","assign","activeQuality","qualities","isAudio","AUDIO","_view","_adsAdapter","_castAdapter","_abrAdapter","_textTrackStyleAdapter","addEventListener","SOURCE_CHANGE","onSourceChange","LOADED_METADATA","onLoadedMetadata","PAUSE","onPause","PLAYING","onPlaying","TIME_UPDATE","onTimeupdate","DURATION_CHANGE","onDurationChange","RATE_CHANGE","onRateChange","SEEKING","onSeeking","SEEKED","onSeeked","PROGRESS","onProgress","TEXT_TRACK_LIST","onTextTrackList","MEDIA_TRACK","onMediaTrack","MEDIA_TRACK_LIST","onMediaTrackList","PRESENTATIONMODE_CHANGE","onPresentationModeChange","hasValidSource","abr","OS","ads","play","pause","type","PlayerModule","setPreload","nativeHandle","seekableEnd","ranges","cast","isNaN","seekTime","Infinity","setCurrentTime","pipConfiguration","setPipConfig","backgroundAudioConfiguration","setBackgroundAudioConfig","setPresentationMode","setMuted","setPlaybackRate","setSelectedAudioTrack","setSelectedVideoTrack","forEach","uid","mode","showing","disabled","setSelectedTextTrack","textTrackStyle","setSource","target","Array","isArray","targetQuality","setTargetVideoQuality","setVolume","ratio","setAspectRatio","setPaused","initializeWithNativePlayerState_","state","init_"],"sources":["THEOplayerAdapter.ts"],"sourcesContent":["import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';\nimport type {\n ABRConfiguration,\n AdsAPI,\n CastAPI,\n DurationChangeEvent,\n LoadedMetadataEvent,\n MediaTrack,\n MediaTrackEvent,\n MediaTrackListEvent,\n NativeHandleType,\n PiPConfiguration,\n PlayerEventMap,\n PresentationModeChangeEvent,\n ProgressEvent,\n RateChangeEvent,\n SourceDescription,\n TextTrack,\n TextTrackListEvent,\n THEOplayer,\n THEOplayerView,\n TimeUpdateEvent,\n} from 'react-native-theoplayer';\nimport {\n addTrack,\n AspectRatio,\n findMediaTrackByUid,\n MediaTrackEventType,\n MediaTrackType,\n PlayerEventType,\n PreloadType,\n PresentationMode,\n removeTrack,\n TextTrackMode,\n TextTrackStyle,\n TrackListEventType,\n} from 'react-native-theoplayer';\nimport { THEOplayerNativeAdsAdapter } from './ads/THEOplayerNativeAdsAdapter';\nimport { THEOplayerNativeCastAdapter } from './cast/THEOplayerNativeCastAdapter';\nimport { AbrAdapter } from './abr/AbrAdapter';\nimport { NativeModules, Platform } from 'react-native';\nimport { TextTrackStyleAdapter } from './track/TextTrackStyleAdapter';\nimport type { BackgroundAudioConfiguration } from 'src/api/backgroundAudio/BackgroundAudioConfiguration';\nimport type { NativePlayerState } from './NativePlayerState';\n\nconst defaultPlayerState: NativePlayerState = {\n source: undefined,\n autoplay: false,\n paused: false,\n seekable: [],\n buffered: [],\n pipConfig: { startsAutomatically: false },\n backgroundAudioConfig: { enabled: false },\n presentationMode: PresentationMode.inline,\n muted: false,\n seeking: false,\n volume: 1,\n currentTime: 0,\n duration: NaN,\n playbackRate: 1,\n preload: 'none',\n aspectRatio: AspectRatio.FIT,\n audioTracks: [],\n videoTracks: [],\n textTracks: [],\n targetVideoQuality: undefined,\n selectedVideoTrack: undefined,\n selectedAudioTrack: undefined,\n selectedTextTrack: undefined,\n};\n\nexport class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> implements THEOplayer {\n private readonly _view: THEOplayerView;\n private readonly _state: NativePlayerState;\n private readonly _adsAdapter: THEOplayerNativeAdsAdapter;\n private readonly _castAdapter: THEOplayerNativeCastAdapter;\n private readonly _abrAdapter: AbrAdapter;\n private readonly _textTrackStyleAdapter: TextTrackStyleAdapter;\n\n constructor(view: THEOplayerView, initialState: NativePlayerState = defaultPlayerState) {\n super();\n this._view = view;\n this._state = { ...initialState };\n this._adsAdapter = new THEOplayerNativeAdsAdapter(this._view);\n this._castAdapter = new THEOplayerNativeCastAdapter(this, this._view);\n this._abrAdapter = new AbrAdapter(this._view);\n this._textTrackStyleAdapter = new TextTrackStyleAdapter(this._view);\n\n this.addEventListener(PlayerEventType.SOURCE_CHANGE, this.onSourceChange);\n this.addEventListener(PlayerEventType.LOADED_METADATA, this.onLoadedMetadata);\n this.addEventListener(PlayerEventType.PAUSE, this.onPause);\n this.addEventListener(PlayerEventType.PLAYING, this.onPlaying);\n this.addEventListener(PlayerEventType.TIME_UPDATE, this.onTimeupdate);\n this.addEventListener(PlayerEventType.DURATION_CHANGE, this.onDurationChange);\n this.addEventListener(PlayerEventType.RATE_CHANGE, this.onRateChange);\n this.addEventListener(PlayerEventType.SEEKING, this.onSeeking);\n this.addEventListener(PlayerEventType.SEEKED, this.onSeeked);\n this.addEventListener(PlayerEventType.PROGRESS, this.onProgress);\n this.addEventListener(PlayerEventType.TEXT_TRACK_LIST, this.onTextTrackList);\n this.addEventListener(PlayerEventType.MEDIA_TRACK, this.onMediaTrack);\n this.addEventListener(PlayerEventType.MEDIA_TRACK_LIST, this.onMediaTrackList);\n this.addEventListener(PlayerEventType.PRESENTATIONMODE_CHANGE, this.onPresentationModeChange);\n }\n\n private onSourceChange = () => {\n this.applyAutoplay();\n };\n\n private hasValidSource(): boolean {\n return this._state.source !== undefined;\n }\n\n private onPause = () => {\n this._state.paused = true;\n };\n\n private onPlaying = () => {\n this._state.paused = false;\n };\n\n private onPresentationModeChange = (event: PresentationModeChangeEvent) => {\n this._state.presentationMode = event.presentationMode;\n };\n\n private onTimeupdate = (event: TimeUpdateEvent) => {\n this._state.currentTime = event.currentTime;\n };\n\n private onLoadedMetadata = (event: LoadedMetadataEvent) => {\n this._state.duration = event.duration;\n this._state.audioTracks = event.audioTracks;\n this._state.videoTracks = event.videoTracks;\n this._state.textTracks = event.textTracks;\n this._state.selectedAudioTrack = event.selectedAudioTrack;\n this._state.selectedVideoTrack = event.selectedVideoTrack;\n this._state.selectedTextTrack = event.selectedTextTrack;\n };\n\n private onDurationChange = (event: DurationChangeEvent) => {\n this._state.duration = event.duration;\n };\n\n private onRateChange = (event: RateChangeEvent) => {\n this._state.playbackRate = event.playbackRate;\n };\n\n private onSeeking = () => {\n this._state.seeking = true;\n };\n\n private onSeeked = () => {\n this._state.seeking = false;\n };\n\n private onProgress = (event: ProgressEvent) => {\n this._state.seekable = event.seekable?.sort((a, b) => a.end - b.end);\n this._state.buffered = event.buffered?.sort((a, b) => a.end - b.end);\n };\n\n private onTextTrackList = (event: TextTrackListEvent) => {\n const { subType, track } = event;\n switch (subType) {\n case TrackListEventType.ADD_TRACK:\n this._state.textTracks = addTrack(this._state.textTracks, track);\n break;\n case TrackListEventType.REMOVE_TRACK:\n this._state.textTracks = removeTrack(this._state.textTracks, track);\n break;\n case TrackListEventType.CHANGE_TRACK:\n this._state.textTracks = removeTrack(this._state.textTracks, track);\n this._state.textTracks = addTrack(this._state.textTracks, track);\n break;\n }\n };\n\n private onMediaTrack = (event: MediaTrackEvent) => {\n const { subType, trackType, trackUid } = event;\n const tracks = trackType === MediaTrackType.VIDEO ? this._state.videoTracks : this._state.audioTracks;\n const track = findMediaTrackByUid(tracks, trackUid);\n switch (subType) {\n case MediaTrackEventType.ACTIVE_QUALITY_CHANGED:\n // Update local state\n if (track) {\n Object.assign(track, { ...track, activeQuality: event.qualities });\n }\n break;\n }\n };\n\n private onMediaTrackList = (event: MediaTrackListEvent) => {\n const { subType, trackType, track } = event;\n const isAudio = trackType === MediaTrackType.AUDIO;\n switch (subType) {\n case TrackListEventType.ADD_TRACK:\n if (isAudio) {\n this._state.audioTracks = addTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = addTrack(this._state.videoTracks, track);\n }\n break;\n case TrackListEventType.REMOVE_TRACK:\n if (isAudio) {\n this._state.audioTracks = removeTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = removeTrack(this._state.videoTracks, track);\n }\n break;\n case TrackListEventType.CHANGE_TRACK:\n if (isAudio) {\n this._state.audioTracks = removeTrack(this._state.audioTracks, track);\n this._state.audioTracks = addTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = removeTrack(this._state.videoTracks, track);\n this._state.videoTracks = addTrack(this._state.videoTracks, track);\n }\n break;\n }\n };\n\n get abr(): ABRConfiguration | undefined {\n return Platform.OS === 'android' ? this._abrAdapter : undefined;\n }\n\n get ads(): AdsAPI {\n return this._adsAdapter;\n }\n\n private applyAutoplay() {\n if (!this.hasValidSource()) {\n return;\n }\n if (this._state.autoplay) {\n this.play();\n } else {\n this.pause();\n }\n }\n\n set autoplay(autoplay: boolean) {\n this._state.autoplay = autoplay;\n\n // Apply autoplay in case a source was already set.\n // If autoplay is changed before setting a source, `onSourceChange` applies autoplay.\n this.applyAutoplay();\n }\n\n get autoplay(): boolean {\n return this._state.autoplay;\n }\n\n set preload(type: PreloadType) {\n this._state.preload = type;\n NativeModules.PlayerModule.setPreload(this._view.nativeHandle, type);\n }\n\n get preload(): PreloadType {\n return this._state.preload;\n }\n\n get seekable() {\n return this._state.seekable;\n }\n\n private seekableEnd(): number {\n const ranges = this.seekable;\n return ranges.length === 0 ? 0 : ranges[ranges.length - 1].end;\n }\n\n get buffered() {\n return this._state.buffered;\n }\n\n get cast(): CastAPI {\n return this._castAdapter;\n }\n\n get currentTime(): number {\n return this._state.currentTime;\n }\n\n set currentTime(currentTime: number) {\n if (!this.hasValidSource()) {\n return;\n }\n\n if (isNaN(currentTime)) {\n return;\n }\n\n // Sanitise currentTime\n let seekTime = currentTime;\n if (currentTime === Infinity) {\n seekTime = this.seekableEnd();\n }\n\n this._state.currentTime = seekTime;\n NativeModules.PlayerModule.setCurrentTime(this._view.nativeHandle, seekTime);\n }\n\n get duration(): number {\n return this._state.duration;\n }\n\n get pipConfiguration(): PiPConfiguration {\n return this._state.pipConfig;\n }\n\n set pipConfiguration(pipConfiguration: PiPConfiguration) {\n this._state.pipConfig = pipConfiguration;\n NativeModules.PlayerModule.setPipConfig(this._view.nativeHandle, pipConfiguration);\n }\n\n get backgroundAudioConfiguration(): BackgroundAudioConfiguration {\n return this._state.backgroundAudioConfig;\n }\n\n set backgroundAudioConfiguration(backgroundAudioConfiguration: BackgroundAudioConfiguration) {\n this._state.backgroundAudioConfig = backgroundAudioConfiguration;\n NativeModules.PlayerModule.setBackgroundAudioConfig(this._view.nativeHandle, backgroundAudioConfiguration);\n }\n\n get presentationMode(): PresentationMode {\n return this._state.presentationMode;\n }\n\n set presentationMode(presentationMode: PresentationMode) {\n this._state.presentationMode = presentationMode;\n NativeModules.PlayerModule.setPresentationMode(this._view.nativeHandle, presentationMode);\n }\n\n get muted(): boolean {\n return this._state.muted;\n }\n\n set muted(muted: boolean) {\n this._state.muted = muted;\n NativeModules.PlayerModule.setMuted(this._view.nativeHandle, muted);\n }\n\n get seeking(): boolean {\n return this._state.seeking;\n }\n\n get paused(): boolean {\n return this._state.paused;\n }\n\n get playbackRate(): number {\n return this._state.playbackRate;\n }\n\n set playbackRate(playbackRate: number) {\n this._state.playbackRate = playbackRate;\n NativeModules.PlayerModule.setPlaybackRate(this._view.nativeHandle, playbackRate);\n }\n\n get audioTracks(): MediaTrack[] {\n return this._state.audioTracks;\n }\n\n get selectedAudioTrack(): number | undefined {\n return this._state.selectedAudioTrack;\n }\n\n set selectedAudioTrack(trackUid: number | undefined) {\n if (!this.hasValidSource()) {\n return;\n }\n this._state.selectedAudioTrack = trackUid;\n NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get videoTracks(): MediaTrack[] {\n return this._state.videoTracks;\n }\n\n get selectedVideoTrack(): number | undefined {\n return this._state.selectedVideoTrack;\n }\n\n set selectedVideoTrack(trackUid: number | undefined) {\n if (!this.hasValidSource()) {\n return;\n }\n this._state.selectedVideoTrack = trackUid;\n this._state.targetVideoQuality = undefined;\n NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get textTracks(): TextTrack[] {\n return this._state.textTracks;\n }\n\n get selectedTextTrack(): number | undefined {\n return this._state.selectedTextTrack;\n }\n\n set selectedTextTrack(trackUid: number | undefined) {\n if (!this.hasValidSource()) {\n return;\n }\n this._state.selectedTextTrack = trackUid;\n this.textTracks.forEach((track) => {\n if (track.uid === trackUid) {\n track.mode = TextTrackMode.showing;\n } else if (track.mode === TextTrackMode.showing) {\n track.mode = TextTrackMode.disabled;\n }\n });\n NativeModules.PlayerModule.setSelectedTextTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get textTrackStyle(): TextTrackStyle {\n return this._textTrackStyleAdapter;\n }\n\n get source(): SourceDescription | undefined {\n return this._state.source;\n }\n\n set source(source: SourceDescription | undefined) {\n // This is to correctly reset autoplay during a source change.\n this.pause();\n this._state.source = source;\n NativeModules.PlayerModule.setSource(this._view.nativeHandle, source);\n // Reset state for play-out of new source\n Object.assign(this._state, {\n playbackRate: 1,\n seeking: false,\n audioTracks: [],\n videoTracks: [],\n textTracks: [],\n seekable: [],\n buffered: [],\n selectedTextTrack: undefined,\n selectedVideoTrack: undefined,\n selectedAudioTrack: undefined,\n targetVideoQuality: undefined,\n });\n }\n\n get targetVideoQuality(): number | number[] | undefined {\n return this._state.targetVideoQuality;\n }\n\n set targetVideoQuality(target: number | number[] | undefined) {\n if (!this.hasValidSource()) {\n return;\n }\n // Always pass an array for targetVideoQuality.\n this._state.targetVideoQuality = !target ? [] : Array.isArray(target) ? target : [target];\n\n // Update local state\n const track = findMediaTrackByUid(this._state.videoTracks, this.selectedVideoTrack);\n if (track) {\n Object.assign(track, { ...track, targetQuality: this._state.targetVideoQuality });\n }\n NativeModules.PlayerModule.setTargetVideoQuality(this._view.nativeHandle, this._state.targetVideoQuality);\n }\n\n get volume(): number {\n return this._state.volume;\n }\n\n set volume(volume: number) {\n this._state.volume = volume;\n NativeModules.PlayerModule.setVolume(this._view.nativeHandle, volume);\n }\n\n get aspectRatio(): AspectRatio {\n return this._state.aspectRatio;\n }\n\n set aspectRatio(ratio: AspectRatio) {\n this._state.aspectRatio = ratio;\n NativeModules.PlayerModule.setAspectRatio(this._view.nativeHandle, ratio);\n }\n\n pause(): void {\n if (this.hasValidSource()) {\n this._state.paused = true;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, true);\n }\n }\n\n play(): void {\n if (this.hasValidSource()) {\n this._state.paused = false;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, false);\n }\n }\n\n get nativeHandle(): NativeHandleType {\n return this._view.nativeHandle;\n }\n\n initializeWithNativePlayerState_(state: NativePlayerState) {\n Object.assign(this._state, state);\n this._castAdapter.init_();\n }\n}\n"],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export declare class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEven
|
|
|
12
12
|
private readonly _textTrackStyleAdapter;
|
|
13
13
|
constructor(view: THEOplayerView, initialState?: NativePlayerState);
|
|
14
14
|
private onSourceChange;
|
|
15
|
+
private hasValidSource;
|
|
15
16
|
private onPause;
|
|
16
17
|
private onPlaying;
|
|
17
18
|
private onPresentationModeChange;
|
|
@@ -27,6 +28,7 @@ export declare class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEven
|
|
|
27
28
|
private onMediaTrackList;
|
|
28
29
|
get abr(): ABRConfiguration | undefined;
|
|
29
30
|
get ads(): AdsAPI;
|
|
31
|
+
private applyAutoplay;
|
|
30
32
|
set autoplay(autoplay: boolean);
|
|
31
33
|
get autoplay(): boolean;
|
|
32
34
|
set preload(type: PreloadType);
|
package/package.json
CHANGED
|
@@ -103,13 +103,13 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
private onSourceChange = () => {
|
|
106
|
-
|
|
107
|
-
this.play();
|
|
108
|
-
} else {
|
|
109
|
-
this.pause();
|
|
110
|
-
}
|
|
106
|
+
this.applyAutoplay();
|
|
111
107
|
};
|
|
112
108
|
|
|
109
|
+
private hasValidSource(): boolean {
|
|
110
|
+
return this._state.source !== undefined;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
113
|
private onPause = () => {
|
|
114
114
|
this._state.paused = true;
|
|
115
115
|
};
|
|
@@ -225,9 +225,23 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
225
225
|
return this._adsAdapter;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
private applyAutoplay() {
|
|
229
|
+
if (!this.hasValidSource()) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (this._state.autoplay) {
|
|
233
|
+
this.play();
|
|
234
|
+
} else {
|
|
235
|
+
this.pause();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
228
239
|
set autoplay(autoplay: boolean) {
|
|
229
240
|
this._state.autoplay = autoplay;
|
|
230
|
-
|
|
241
|
+
|
|
242
|
+
// Apply autoplay in case a source was already set.
|
|
243
|
+
// If autoplay is changed before setting a source, `onSourceChange` applies autoplay.
|
|
244
|
+
this.applyAutoplay();
|
|
231
245
|
}
|
|
232
246
|
|
|
233
247
|
get autoplay(): boolean {
|
|
@@ -265,6 +279,10 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
265
279
|
}
|
|
266
280
|
|
|
267
281
|
set currentTime(currentTime: number) {
|
|
282
|
+
if (!this.hasValidSource()) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
|
|
268
286
|
if (isNaN(currentTime)) {
|
|
269
287
|
return;
|
|
270
288
|
}
|
|
@@ -345,6 +363,9 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
345
363
|
}
|
|
346
364
|
|
|
347
365
|
set selectedAudioTrack(trackUid: number | undefined) {
|
|
366
|
+
if (!this.hasValidSource()) {
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
348
369
|
this._state.selectedAudioTrack = trackUid;
|
|
349
370
|
NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle, trackUid || -1);
|
|
350
371
|
}
|
|
@@ -358,6 +379,9 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
358
379
|
}
|
|
359
380
|
|
|
360
381
|
set selectedVideoTrack(trackUid: number | undefined) {
|
|
382
|
+
if (!this.hasValidSource()) {
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
361
385
|
this._state.selectedVideoTrack = trackUid;
|
|
362
386
|
this._state.targetVideoQuality = undefined;
|
|
363
387
|
NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle, trackUid || -1);
|
|
@@ -372,6 +396,9 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
372
396
|
}
|
|
373
397
|
|
|
374
398
|
set selectedTextTrack(trackUid: number | undefined) {
|
|
399
|
+
if (!this.hasValidSource()) {
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
375
402
|
this._state.selectedTextTrack = trackUid;
|
|
376
403
|
this.textTracks.forEach((track) => {
|
|
377
404
|
if (track.uid === trackUid) {
|
|
@@ -417,6 +444,9 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
417
444
|
}
|
|
418
445
|
|
|
419
446
|
set targetVideoQuality(target: number | number[] | undefined) {
|
|
447
|
+
if (!this.hasValidSource()) {
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
420
450
|
// Always pass an array for targetVideoQuality.
|
|
421
451
|
this._state.targetVideoQuality = !target ? [] : Array.isArray(target) ? target : [target];
|
|
422
452
|
|
|
@@ -447,13 +477,17 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
447
477
|
}
|
|
448
478
|
|
|
449
479
|
pause(): void {
|
|
450
|
-
this.
|
|
451
|
-
|
|
480
|
+
if (this.hasValidSource()) {
|
|
481
|
+
this._state.paused = true;
|
|
482
|
+
NativeModules.PlayerModule.setPaused(this._view.nativeHandle, true);
|
|
483
|
+
}
|
|
452
484
|
}
|
|
453
485
|
|
|
454
486
|
play(): void {
|
|
455
|
-
this.
|
|
456
|
-
|
|
487
|
+
if (this.hasValidSource()) {
|
|
488
|
+
this._state.paused = false;
|
|
489
|
+
NativeModules.PlayerModule.setPaused(this._view.nativeHandle, false);
|
|
490
|
+
}
|
|
457
491
|
}
|
|
458
492
|
|
|
459
493
|
get nativeHandle(): NativeHandleType {
|