react-native-theoplayer 3.5.0 → 3.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 +17 -0
- package/README.md +1 -0
- package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +1 -1
- package/android/src/main/java/com/theoplayer/broadcast/DefaultEventDispatcher.kt +2 -1
- package/android/src/main/java/com/theoplayer/cast/CastEventAdapter.kt +1 -0
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +2 -0
- package/android/src/main/java/com/theoplayer/media/MediaNotificationBuilder.kt +11 -0
- package/android/src/main/java/com/theoplayer/media/MediaPlaybackService.kt +31 -19
- package/android/src/main/java/com/theoplayer/presentation/PresentationManager.kt +41 -1
- package/android/src/main/res/drawable/ic_notification_large.png +0 -0
- package/ios/THEOplayerRCTMainEventHandler.swift +6 -24
- package/ios/THEOplayerRCTPlayerAPI.swift +3 -16
- package/ios/THEOplayerRCTTextTrackEventHandler.swift +0 -9
- package/ios/THEOplayerRCTTrackMetadataAggregator.swift +1 -1
- package/ios/THEOplayerRCTView.swift +12 -10
- package/ios/Theoplayer-Bridging-Header.h +1 -0
- package/ios/eventBroadcasting/THEOplayerRCTBroadcastEventHandler.swift +1 -1
- package/ios/pip/THEOplayerRCTView+PipConfig.swift +2 -2
- package/ios/{THEOplayerRCTPresentationModeContext.swift → presentationMode/THEOplayerRCTPresentationModeContext.swift} +4 -8
- package/ios/presentationMode/THEOplayerRCTPresentationModeManager.swift +159 -0
- package/ios/presentationMode/THEOplayerRCTView+PresentationMode.swift +11 -0
- package/ios/{THEOplayerRCTSideloadedMetadataTrackHandler.swift → sideloadedMetadata/THEOplayerRCTSideloadedMetadataProcessor.swift} +14 -4
- package/ios/sideloadedMetadata/THEOplayerRCTSideloadedMetadataTrackEventHandler.swift +28 -0
- package/lib/commonjs/internal/THEOplayerView.js +24 -3
- package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +3 -0
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/utils/Dimensions.js +31 -0
- package/lib/commonjs/internal/utils/Dimensions.js.map +1 -0
- package/lib/module/internal/THEOplayerView.js +26 -5
- package/lib/module/internal/THEOplayerView.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +5 -2
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/utils/Dimensions.js +26 -0
- package/lib/module/internal/utils/Dimensions.js.map +1 -0
- package/lib/typescript/internal/THEOplayerView.d.ts +7 -1
- package/lib/typescript/internal/utils/Dimensions.d.ts +5 -0
- package/package.json +1 -1
- package/react-native-theoplayer.podspec +5 -5
- package/src/internal/THEOplayerView.tsx +25 -5
- package/src/internal/adapter/THEOplayerAdapter.ts +11 -7
- package/src/internal/utils/Dimensions.ts +24 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DefaultEventDispatcher","addTextTrackCue","addTrack","AspectRatio","findMediaTrackByUid","findTextTrackByUid","MediaTrackEventType","MediaTrackType","PlayerEventType","PresentationMode","removeTextTrackCue","removeTrack","TextTrackEventType","TextTrackMode","TrackListEventType","THEOplayerNativeAdsAdapter","THEOplayerNativeCastAdapter","AbrAdapter","NativeModules","Platform","TextTrackStyleAdapter","EventBroadcastAdapter","defaultPlayerState","source","undefined","autoplay","paused","seekable","buffered","pipConfig","startsAutomatically","backgroundAudioConfig","enabled","presentationMode","inline","muted","seeking","volume","currentTime","duration","NaN","playbackRate","preload","aspectRatio","FIT","keepScreenOn","audioTracks","videoTracks","textTracks","targetVideoQuality","selectedVideoTrack","selectedAudioTrack","selectedTextTrack","THEOplayerAdapter","constructor","view","initialState","arguments","length","_defineProperty","applyAutoplay","_state","event","isFinite","start","end","_event$seekable","_event$buffered","sort","a","b","subType","cue","trackUid","track","ADD_CUE","REMOVE_CUE","ADD_TRACK","REMOVE_TRACK","CHANGE_TRACK","trackType","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","TEXT_TRACK","onTextTrack","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","value","setKeepScreenOn","setPaused","version","_playerVersion","broadcast","_externalEventRouter","initializeFromNativePlayer_","state","init_"],"sources":["THEOplayerAdapter.ts"],"sourcesContent":["import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';\nimport type {\n ABRConfiguration,\n AdsAPI,\n CastAPI,\n DurationChangeEvent, EventBroadcastAPI,\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 TextTrackEvent,\n TextTrackListEvent,\n THEOplayer,\n THEOplayerView,\n TimeUpdateEvent,\n} from 'react-native-theoplayer';\nimport {\n addTextTrackCue,\n addTrack,\n AspectRatio,\n BackgroundAudioConfiguration,\n findMediaTrackByUid,\n findTextTrackByUid,\n MediaTrackEventType,\n MediaTrackType,\n PlayerEventType,\n PlayerVersion,\n PreloadType,\n PresentationMode,\n removeTextTrackCue,\n removeTrack,\n TextTrackEventType,\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 { NativePlayerState } from './NativePlayerState';\nimport { EventBroadcastAdapter } from \"./broadcast/EventBroadcastAdapter\";\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 keepScreenOn: true,\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 private _externalEventRouter: EventBroadcastAPI | undefined = undefined;\n private _playerVersion!: PlayerVersion;\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.TEXT_TRACK, this.onTextTrack);\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 if (isFinite(this._state.duration)) {\n this._state.seekable = [{start: 0, end: this._state.duration}];\n }\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 onTextTrack = (event: TextTrackEvent) => {\n const { subType, cue, trackUid } = event;\n const track = findTextTrackByUid(this._state.textTracks, trackUid);\n switch (subType) {\n case TextTrackEventType.ADD_CUE:\n addTextTrackCue(track, cue);\n break;\n case TextTrackEventType.REMOVE_CUE:\n removeTextTrackCue(track, cue);\n break;\n }\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 !== undefined) ? 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 !== undefined) ? 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 !== undefined) ? 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 get keepScreenOn(): boolean {\n return this._state.keepScreenOn;\n }\n\n set keepScreenOn(value: boolean) {\n this._state.keepScreenOn = value;\n if (Platform.OS === 'android') {\n NativeModules.PlayerModule.setKeepScreenOn(this._view.nativeHandle, value);\n }\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 public get version(): PlayerVersion {\n return this._playerVersion;\n }\n\n // @internal\n get nativeHandle(): NativeHandleType {\n return this._view.nativeHandle;\n }\n\n // @internal\n get broadcast(): EventBroadcastAPI {\n return this._externalEventRouter ?? (this._externalEventRouter = new EventBroadcastAdapter(this));\n }\n\n initializeFromNativePlayer_(version: PlayerVersion, state: NativePlayerState | undefined) {\n this._playerVersion = version;\n if (state) {\n Object.assign(this._state, state);\n this._castAdapter.init_();\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["DefaultEventDispatcher","addTextTrackCue","addTrack","AspectRatio","findMediaTrackByUid","findTextTrackByUid","MediaTrackEventType","MediaTrackType","PlayerEventType","PresentationMode","removeTextTrackCue","removeTrack","TextTrackEventType","TextTrackMode","TrackListEventType","THEOplayerNativeAdsAdapter","THEOplayerNativeCastAdapter","AbrAdapter","NativeModules","Platform","StatusBar","TextTrackStyleAdapter","EventBroadcastAdapter","defaultPlayerState","source","undefined","autoplay","paused","seekable","buffered","pipConfig","startsAutomatically","backgroundAudioConfig","enabled","presentationMode","inline","muted","seeking","volume","currentTime","duration","NaN","playbackRate","preload","aspectRatio","FIT","keepScreenOn","audioTracks","videoTracks","textTracks","targetVideoQuality","selectedVideoTrack","selectedAudioTrack","selectedTextTrack","THEOplayerAdapter","constructor","view","initialState","arguments","length","_defineProperty","applyAutoplay","_state","event","OS","setHidden","fullscreen","isFinite","start","end","_event$seekable","_event$buffered","sort","a","b","subType","cue","trackUid","track","ADD_CUE","REMOVE_CUE","ADD_TRACK","REMOVE_TRACK","CHANGE_TRACK","trackType","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","TEXT_TRACK","onTextTrack","MEDIA_TRACK","onMediaTrack","MEDIA_TRACK_LIST","onMediaTrackList","PRESENTATIONMODE_CHANGE","onPresentationModeChange","hasValidSource","abr","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","value","setKeepScreenOn","setPaused","version","_playerVersion","broadcast","_externalEventRouter","initializeFromNativePlayer_","state","init_"],"sources":["THEOplayerAdapter.ts"],"sourcesContent":["import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';\nimport type {\n ABRConfiguration,\n AdsAPI,\n CastAPI,\n DurationChangeEvent,\n EventBroadcastAPI,\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 TextTrackEvent,\n TextTrackListEvent,\n THEOplayer,\n THEOplayerView,\n TimeUpdateEvent,\n} from 'react-native-theoplayer';\nimport {\n addTextTrackCue,\n addTrack,\n AspectRatio,\n BackgroundAudioConfiguration,\n findMediaTrackByUid,\n findTextTrackByUid,\n MediaTrackEventType,\n MediaTrackType,\n PlayerEventType,\n PlayerVersion,\n PreloadType,\n PresentationMode,\n removeTextTrackCue,\n removeTrack,\n TextTrackEventType,\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, StatusBar } from 'react-native';\nimport { TextTrackStyleAdapter } from './track/TextTrackStyleAdapter';\nimport type { NativePlayerState } from './NativePlayerState';\nimport { EventBroadcastAdapter } from './broadcast/EventBroadcastAdapter';\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 keepScreenOn: true,\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 private _externalEventRouter: EventBroadcastAPI | undefined = undefined;\n private _playerVersion!: PlayerVersion;\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.TEXT_TRACK, this.onTextTrack);\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 if (Platform.OS === 'ios') {\n StatusBar.setHidden(event.presentationMode === PresentationMode.fullscreen, 'slide');\n }\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 if (isFinite(this._state.duration)) {\n this._state.seekable = [{ start: 0, end: this._state.duration }];\n }\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 onTextTrack = (event: TextTrackEvent) => {\n const { subType, cue, trackUid } = event;\n const track = findTextTrackByUid(this._state.textTracks, trackUid);\n switch (subType) {\n case TextTrackEventType.ADD_CUE:\n addTextTrackCue(track, cue);\n break;\n case TextTrackEventType.REMOVE_CUE:\n removeTextTrackCue(track, cue);\n break;\n }\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 !== undefined ? 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 !== undefined ? 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 !== undefined ? 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 get keepScreenOn(): boolean {\n return this._state.keepScreenOn;\n }\n\n set keepScreenOn(value: boolean) {\n this._state.keepScreenOn = value;\n if (Platform.OS === 'android') {\n NativeModules.PlayerModule.setKeepScreenOn(this._view.nativeHandle, value);\n }\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 public get version(): PlayerVersion {\n return this._playerVersion;\n }\n\n // @internal\n get nativeHandle(): NativeHandleType {\n return this._view.nativeHandle;\n }\n\n // @internal\n get broadcast(): EventBroadcastAPI {\n return this._externalEventRouter ?? (this._externalEventRouter = new EventBroadcastAdapter(this));\n }\n\n initializeFromNativePlayer_(version: PlayerVersion, state: NativePlayerState | undefined) {\n this._playerVersion = version;\n if (state) {\n Object.assign(this._state, state);\n this._castAdapter.init_();\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Dimensions, Platform, StatusBar } from 'react-native';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculate the device's screen dimensions, while taking into account the statusBar height and orientation on Android.
|
|
5
|
+
*/
|
|
6
|
+
export function getFullscreenSize() {
|
|
7
|
+
const screenSize = Dimensions.get('screen');
|
|
8
|
+
|
|
9
|
+
// Adjust for statusBar height on Android, depending on the device's current orientation.
|
|
10
|
+
if (Platform.OS === 'android' && Platform.Version >= 29) {
|
|
11
|
+
const statusBarHeight = StatusBar.currentHeight || 0;
|
|
12
|
+
if (screenSize.width < screenSize.height) {
|
|
13
|
+
// portrait
|
|
14
|
+
if (screenSize.height !== Dimensions.get('window').height + statusBarHeight) {
|
|
15
|
+
screenSize.height = screenSize.height - statusBarHeight;
|
|
16
|
+
}
|
|
17
|
+
} else {
|
|
18
|
+
// landscape
|
|
19
|
+
if (screenSize.width !== Dimensions.get('window').width) {
|
|
20
|
+
screenSize.width = screenSize.width - statusBarHeight;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return screenSize;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=Dimensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Dimensions","Platform","StatusBar","getFullscreenSize","screenSize","get","OS","Version","statusBarHeight","currentHeight","width","height"],"sources":["Dimensions.ts"],"sourcesContent":["import type { ScaledSize } from 'react-native/Libraries/Utilities/Dimensions';\nimport { Dimensions, Platform, StatusBar } from 'react-native';\n\n/**\n * Calculate the device's screen dimensions, while taking into account the statusBar height and orientation on Android.\n */\nexport function getFullscreenSize(): ScaledSize {\n const screenSize = Dimensions.get('screen');\n\n // Adjust for statusBar height on Android, depending on the device's current orientation.\n if (Platform.OS === 'android' && Platform.Version >= 29) {\n const statusBarHeight = (StatusBar.currentHeight || 0);\n if (screenSize.width < screenSize.height) { // portrait\n if (screenSize.height !== Dimensions.get('window').height + statusBarHeight) {\n screenSize.height = screenSize.height - statusBarHeight;\n }\n } else { // landscape\n if (screenSize.width !== Dimensions.get('window').width) {\n screenSize.width = screenSize.width - statusBarHeight;\n }\n }\n }\n return screenSize;\n}\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,cAAc;;AAE9D;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAA,EAAe;EAC9C,MAAMC,UAAU,GAAGJ,UAAU,CAACK,GAAG,CAAC,QAAQ,CAAC;;EAE3C;EACA,IAAIJ,QAAQ,CAACK,EAAE,KAAK,SAAS,IAAIL,QAAQ,CAACM,OAAO,IAAI,EAAE,EAAE;IACvD,MAAMC,eAAe,GAAIN,SAAS,CAACO,aAAa,IAAI,CAAE;IACtD,IAAIL,UAAU,CAACM,KAAK,GAAGN,UAAU,CAACO,MAAM,EAAE;MAAE;MAC1C,IAAIP,UAAU,CAACO,MAAM,KAAKX,UAAU,CAACK,GAAG,CAAC,QAAQ,CAAC,CAACM,MAAM,GAAGH,eAAe,EAAE;QAC3EJ,UAAU,CAACO,MAAM,GAAGP,UAAU,CAACO,MAAM,GAAGH,eAAe;MACzD;IACF,CAAC,MAAM;MAAE;MACP,IAAIJ,UAAU,CAACM,KAAK,KAAKV,UAAU,CAACK,GAAG,CAAC,QAAQ,CAAC,CAACK,KAAK,EAAE;QACvDN,UAAU,CAACM,KAAK,GAAGN,UAAU,CAACM,KAAK,GAAGF,eAAe;MACvD;IACF;EACF;EACA,OAAOJ,UAAU;AACnB"}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { ScaledSize } from 'react-native';
|
|
3
|
+
import { PlayerError, PresentationMode, THEOplayerViewProps } from 'react-native-theoplayer';
|
|
3
4
|
interface THEOplayerRCTViewState {
|
|
4
5
|
error?: PlayerError;
|
|
6
|
+
presentationMode?: PresentationMode | undefined;
|
|
7
|
+
screenSize: ScaledSize;
|
|
5
8
|
}
|
|
6
9
|
export declare class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOplayerViewProps>, THEOplayerRCTViewState> {
|
|
7
10
|
private readonly _root;
|
|
8
11
|
private readonly _facade;
|
|
12
|
+
private _dimensionsHandler?;
|
|
9
13
|
private static initialState;
|
|
10
14
|
constructor(props: THEOplayerViewProps);
|
|
15
|
+
componentDidMount(): void;
|
|
11
16
|
componentWillUnmount(): void;
|
|
12
17
|
get nativeHandle(): number;
|
|
13
18
|
private reset;
|
|
19
|
+
private _onDimensionsChanged;
|
|
14
20
|
private _onNativePlayerReady;
|
|
15
21
|
private _onSourceChange;
|
|
16
22
|
private _onLoadStart;
|
package/package.json
CHANGED
|
@@ -20,7 +20,7 @@ Pod::Spec.new do |s|
|
|
|
20
20
|
s.platforms = { :ios => "12.0", :tvos => "12.0" }
|
|
21
21
|
s.source = { :git => "https://www.theoplayer.com/.git", :tag => "#{s.version}" }
|
|
22
22
|
|
|
23
|
-
s.source_files = 'ios/*.{h,m,swift}', 'ios/ads/*.swift', 'ios/casting/*.swift', 'ios/contentprotection/*.swift', 'ios/pip/*.swift', 'ios/backgroundAudio/*.swift', 'ios/cache/*.swift', 'ios/eventBroadcasting/*.swift' , 'ios/ui/*.swift'
|
|
23
|
+
s.source_files = 'ios/*.{h,m,swift}', 'ios/ads/*.swift', 'ios/casting/*.swift', 'ios/contentprotection/*.swift', 'ios/pip/*.swift', 'ios/backgroundAudio/*.swift', 'ios/cache/*.swift', 'ios/sideloadedMetadata/*.swift', 'ios/eventBroadcasting/*.swift' , 'ios/ui/*.swift', 'ios/presentationMode/*.swift'
|
|
24
24
|
s.resources = ['ios/*.css']
|
|
25
25
|
|
|
26
26
|
# ReactNative Dependency
|
|
@@ -36,18 +36,18 @@ Pod::Spec.new do |s|
|
|
|
36
36
|
}
|
|
37
37
|
else
|
|
38
38
|
puts "Using THEOplayer-core SDK"
|
|
39
|
-
s.dependency "THEOplayerSDK-core", "~> 6.
|
|
39
|
+
s.dependency "THEOplayerSDK-core", "~> 6.9"
|
|
40
40
|
if theofeatures.include?("GOOGLE_IMA")
|
|
41
41
|
puts "Adding THEOplayer-Integration-GoogleIMA"
|
|
42
|
-
s.dependency "THEOplayer-Integration-GoogleIMA", "~> 6.
|
|
42
|
+
s.dependency "THEOplayer-Integration-GoogleIMA", "~> 6.9"
|
|
43
43
|
end
|
|
44
44
|
if theofeatures.include?("CHROMECAST")
|
|
45
45
|
puts "Adding THEOplayer-Integration-GoogleCast"
|
|
46
|
-
s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 6.
|
|
46
|
+
s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 6.9"
|
|
47
47
|
end
|
|
48
48
|
if theofeatures.include?("SIDELOADED_TEXTTRACKS")
|
|
49
49
|
puts "Adding THEOplayer-Connector-SideloadedSubtitle"
|
|
50
|
-
s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 6.
|
|
50
|
+
s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 6.9"
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
2
|
import {
|
|
3
|
+
Dimensions,
|
|
3
4
|
findNodeHandle,
|
|
4
5
|
HostComponent,
|
|
5
6
|
NativeSyntheticEvent,
|
|
@@ -11,7 +12,8 @@ import {
|
|
|
11
12
|
View,
|
|
12
13
|
ViewStyle,
|
|
13
14
|
} from 'react-native';
|
|
14
|
-
import {
|
|
15
|
+
import type { ScaledSize, EmitterSubscription } from 'react-native';
|
|
16
|
+
import { isDateRangeCue, PlayerConfiguration, PlayerError, PresentationMode, TextTrackCue, THEOplayerViewProps } from 'react-native-theoplayer';
|
|
15
17
|
import { CastEventType, PlayerEventType } from 'react-native-theoplayer';
|
|
16
18
|
|
|
17
19
|
import styles from './THEOplayerView.style';
|
|
@@ -60,6 +62,7 @@ import type {
|
|
|
60
62
|
} from './adapter/event/native/NativePlayerEvent';
|
|
61
63
|
import type { NativeAdEvent } from './adapter/event/native/NativeAdEvent';
|
|
62
64
|
import { THEOplayerAdapter } from './adapter/THEOplayerAdapter';
|
|
65
|
+
import { getFullscreenSize } from './utils/Dimensions';
|
|
63
66
|
|
|
64
67
|
const INVALID_HANDLE = -1;
|
|
65
68
|
|
|
@@ -99,6 +102,8 @@ interface THEOplayerRCTViewProps {
|
|
|
99
102
|
|
|
100
103
|
interface THEOplayerRCTViewState {
|
|
101
104
|
error?: PlayerError;
|
|
105
|
+
presentationMode?: PresentationMode | undefined;
|
|
106
|
+
screenSize: ScaledSize;
|
|
102
107
|
}
|
|
103
108
|
|
|
104
109
|
type THEOplayerViewNativeComponent = HostComponent<THEOplayerRCTViewProps>;
|
|
@@ -106,9 +111,12 @@ type THEOplayerViewNativeComponent = HostComponent<THEOplayerRCTViewProps>;
|
|
|
106
111
|
export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOplayerViewProps>, THEOplayerRCTViewState> {
|
|
107
112
|
private readonly _root: React.RefObject<THEOplayerViewNativeComponent>;
|
|
108
113
|
private readonly _facade: THEOplayerAdapter;
|
|
114
|
+
private _dimensionsHandler?: EmitterSubscription = undefined;
|
|
109
115
|
|
|
110
116
|
private static initialState: THEOplayerRCTViewState = {
|
|
111
117
|
error: undefined,
|
|
118
|
+
presentationMode: PresentationMode.inline,
|
|
119
|
+
screenSize: getFullscreenSize(),
|
|
112
120
|
};
|
|
113
121
|
|
|
114
122
|
constructor(props: THEOplayerViewProps) {
|
|
@@ -118,6 +126,10 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
118
126
|
this._facade = new THEOplayerAdapter(this);
|
|
119
127
|
}
|
|
120
128
|
|
|
129
|
+
componentDidMount() {
|
|
130
|
+
this._dimensionsHandler = Dimensions.addEventListener('change', this._onDimensionsChanged);
|
|
131
|
+
}
|
|
132
|
+
|
|
121
133
|
componentWillUnmount() {
|
|
122
134
|
// Notify the player will be destroyed.
|
|
123
135
|
const { onPlayerDestroy } = this.props;
|
|
@@ -125,6 +137,7 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
125
137
|
onPlayerDestroy(this._facade);
|
|
126
138
|
}
|
|
127
139
|
this._facade.dispatchEvent(new BaseEvent(PlayerEventType.DESTROY));
|
|
140
|
+
this._dimensionsHandler?.remove();
|
|
128
141
|
|
|
129
142
|
if (Platform.OS === 'ios') {
|
|
130
143
|
// TODO: move to native module
|
|
@@ -143,6 +156,10 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
143
156
|
this.setState(THEOplayerView.initialState);
|
|
144
157
|
}
|
|
145
158
|
|
|
159
|
+
private _onDimensionsChanged = () => {
|
|
160
|
+
this.setState({ screenSize: getFullscreenSize() });
|
|
161
|
+
};
|
|
162
|
+
|
|
146
163
|
private _onNativePlayerReady = (event: NativeSyntheticEvent<NativePlayerStateEvent>) => {
|
|
147
164
|
// Optionally apply an initial player state
|
|
148
165
|
const { version, state } = event?.nativeEvent;
|
|
@@ -315,6 +332,7 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
315
332
|
};
|
|
316
333
|
|
|
317
334
|
private _onPresentationModeChange = (event: NativeSyntheticEvent<NativePresentationModeChangeEvent>) => {
|
|
335
|
+
this.setState({ presentationMode: event.nativeEvent.presentationMode });
|
|
318
336
|
this._facade.dispatchEvent(
|
|
319
337
|
new DefaultPresentationModeChangeEvent(
|
|
320
338
|
event.nativeEvent.presentationMode,
|
|
@@ -326,8 +344,10 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
326
344
|
|
|
327
345
|
public render(): JSX.Element {
|
|
328
346
|
const { config, style, children } = this.props;
|
|
347
|
+
const { presentationMode, screenSize: fullscreenSize } = this.state;
|
|
348
|
+
|
|
329
349
|
return (
|
|
330
|
-
<View style={[styles.base, style]}>
|
|
350
|
+
<View style={[styles.base, style, presentationMode === PresentationMode.fullscreen ? fullscreenSize : {}]}>
|
|
331
351
|
<THEOplayerRCTView
|
|
332
352
|
ref={this._root}
|
|
333
353
|
style={StyleSheet.absoluteFill}
|
|
@@ -369,7 +389,7 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
369
389
|
|
|
370
390
|
const LINKING_ERROR =
|
|
371
391
|
`The package 'react-native-theoplayer' doesn't seem to be linked. Make sure: \n\n` +
|
|
372
|
-
Platform.select({ ios:
|
|
392
|
+
Platform.select({ ios: '- You have run \'pod install\'\n', default: '' }) +
|
|
373
393
|
'- You rebuilt the app after installing the package\n' +
|
|
374
394
|
'- You are not using Expo managed workflow\n';
|
|
375
395
|
|
|
@@ -379,5 +399,5 @@ const THEOplayerRCTView =
|
|
|
379
399
|
UIManager.getViewManagerConfig(ComponentName) != null
|
|
380
400
|
? requireNativeComponent<THEOplayerRCTViewProps>(ComponentName)
|
|
381
401
|
: () => {
|
|
382
|
-
|
|
383
|
-
|
|
402
|
+
throw new Error(LINKING_ERROR);
|
|
403
|
+
};
|
|
@@ -3,7 +3,8 @@ import type {
|
|
|
3
3
|
ABRConfiguration,
|
|
4
4
|
AdsAPI,
|
|
5
5
|
CastAPI,
|
|
6
|
-
DurationChangeEvent,
|
|
6
|
+
DurationChangeEvent,
|
|
7
|
+
EventBroadcastAPI,
|
|
7
8
|
LoadedMetadataEvent,
|
|
8
9
|
MediaTrack,
|
|
9
10
|
MediaTrackEvent,
|
|
@@ -45,10 +46,10 @@ import {
|
|
|
45
46
|
import { THEOplayerNativeAdsAdapter } from './ads/THEOplayerNativeAdsAdapter';
|
|
46
47
|
import { THEOplayerNativeCastAdapter } from './cast/THEOplayerNativeCastAdapter';
|
|
47
48
|
import { AbrAdapter } from './abr/AbrAdapter';
|
|
48
|
-
import { NativeModules, Platform } from 'react-native';
|
|
49
|
+
import { NativeModules, Platform, StatusBar } from 'react-native';
|
|
49
50
|
import { TextTrackStyleAdapter } from './track/TextTrackStyleAdapter';
|
|
50
51
|
import type { NativePlayerState } from './NativePlayerState';
|
|
51
|
-
import { EventBroadcastAdapter } from
|
|
52
|
+
import { EventBroadcastAdapter } from './broadcast/EventBroadcastAdapter';
|
|
52
53
|
|
|
53
54
|
const defaultPlayerState: NativePlayerState = {
|
|
54
55
|
source: undefined,
|
|
@@ -131,6 +132,9 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
131
132
|
|
|
132
133
|
private onPresentationModeChange = (event: PresentationModeChangeEvent) => {
|
|
133
134
|
this._state.presentationMode = event.presentationMode;
|
|
135
|
+
if (Platform.OS === 'ios') {
|
|
136
|
+
StatusBar.setHidden(event.presentationMode === PresentationMode.fullscreen, 'slide');
|
|
137
|
+
}
|
|
134
138
|
};
|
|
135
139
|
|
|
136
140
|
private onTimeupdate = (event: TimeUpdateEvent) => {
|
|
@@ -146,7 +150,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
146
150
|
this._state.selectedVideoTrack = event.selectedVideoTrack;
|
|
147
151
|
this._state.selectedTextTrack = event.selectedTextTrack;
|
|
148
152
|
if (isFinite(this._state.duration)) {
|
|
149
|
-
this._state.seekable = [{start: 0, end: this._state.duration}];
|
|
153
|
+
this._state.seekable = [{ start: 0, end: this._state.duration }];
|
|
150
154
|
}
|
|
151
155
|
};
|
|
152
156
|
|
|
@@ -394,7 +398,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
394
398
|
return;
|
|
395
399
|
}
|
|
396
400
|
this._state.selectedAudioTrack = trackUid;
|
|
397
|
-
NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle,
|
|
401
|
+
NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle, trackUid !== undefined ? trackUid : -1);
|
|
398
402
|
}
|
|
399
403
|
|
|
400
404
|
get videoTracks(): MediaTrack[] {
|
|
@@ -411,7 +415,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
411
415
|
}
|
|
412
416
|
this._state.selectedVideoTrack = trackUid;
|
|
413
417
|
this._state.targetVideoQuality = undefined;
|
|
414
|
-
NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle,
|
|
418
|
+
NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle, trackUid !== undefined ? trackUid : -1);
|
|
415
419
|
}
|
|
416
420
|
|
|
417
421
|
get textTracks(): TextTrack[] {
|
|
@@ -434,7 +438,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
434
438
|
track.mode = TextTrackMode.disabled;
|
|
435
439
|
}
|
|
436
440
|
});
|
|
437
|
-
NativeModules.PlayerModule.setSelectedTextTrack(this._view.nativeHandle,
|
|
441
|
+
NativeModules.PlayerModule.setSelectedTextTrack(this._view.nativeHandle, trackUid !== undefined ? trackUid : -1);
|
|
438
442
|
}
|
|
439
443
|
|
|
440
444
|
get textTrackStyle(): TextTrackStyle {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ScaledSize } from 'react-native/Libraries/Utilities/Dimensions';
|
|
2
|
+
import { Dimensions, Platform, StatusBar } from 'react-native';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Calculate the device's screen dimensions, while taking into account the statusBar height and orientation on Android.
|
|
6
|
+
*/
|
|
7
|
+
export function getFullscreenSize(): ScaledSize {
|
|
8
|
+
const screenSize = Dimensions.get('screen');
|
|
9
|
+
|
|
10
|
+
// Adjust for statusBar height on Android, depending on the device's current orientation.
|
|
11
|
+
if (Platform.OS === 'android' && Platform.Version >= 29) {
|
|
12
|
+
const statusBarHeight = (StatusBar.currentHeight || 0);
|
|
13
|
+
if (screenSize.width < screenSize.height) { // portrait
|
|
14
|
+
if (screenSize.height !== Dimensions.get('window').height + statusBarHeight) {
|
|
15
|
+
screenSize.height = screenSize.height - statusBarHeight;
|
|
16
|
+
}
|
|
17
|
+
} else { // landscape
|
|
18
|
+
if (screenSize.width !== Dimensions.get('window').width) {
|
|
19
|
+
screenSize.width = screenSize.width - statusBarHeight;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return screenSize;
|
|
24
|
+
}
|