react-native-theoplayer 9.10.0 → 10.1.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 +35 -0
- package/README.md +2 -1
- package/android/build.gradle +11 -12
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/10.0.0/ads-wrapper-10.0.0.aar +0 -0
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/{9.0.0/ads-wrapper-9.0.0.pom → 10.0.0/ads-wrapper-10.0.0.pom} +3 -3
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +4 -4
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +39 -10
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerPackage.kt +32 -14
- package/android/src/main/java/com/theoplayer/ads/AdsModule.kt +18 -6
- package/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt +15 -5
- package/android/src/main/java/com/theoplayer/cache/CacheAdapter.kt +0 -12
- package/android/src/main/java/com/theoplayer/cache/CacheModule.kt +20 -7
- package/android/src/main/java/com/theoplayer/cast/CastEventAdapter.kt +11 -7
- package/android/src/main/java/com/theoplayer/cast/CastModule.kt +17 -3
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionAdapter.kt +1 -1
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +28 -11
- package/android/src/main/java/com/theoplayer/media/ConditionalMediaButtonReceiver.kt +38 -0
- package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +17 -4
- package/android/src/main/java/com/theoplayer/presentation/PresentationManager.kt +12 -3
- package/android/src/main/java/com/theoplayer/source/SourceAdapter.kt +16 -37
- package/android/src/main/java/com/theoplayer/theoads/THEOadsAdapter.kt +83 -0
- package/android/src/main/java/com/theoplayer/theoads/THEOadsEventAdapter.kt +55 -0
- package/android/src/main/java/com/theoplayer/theoads/THEOadsModule.kt +63 -0
- package/android/src/main/java/com/theoplayer/theolive/THEOliveEventAdapter.kt +21 -8
- package/android/src/main/java/com/theoplayer/theolive/THEOliveModule.kt +16 -3
- package/android/src/main/java/com/theoplayer/track/TextTrackStyleAdapter.kt +8 -1
- package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +8 -0
- package/ios/THEOplayerRCTBridge.m +21 -1
- package/ios/THEOplayerRCTDebug.swift +4 -1
- package/ios/THEOplayerRCTMainEventHandler.swift +24 -21
- package/ios/THEOplayerRCTPlayerAPI.swift +3 -3
- package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +2 -1
- package/ios/THEOplayerRCTView.swift +22 -4
- package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +96 -50
- package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +0 -1
- package/ios/casting/THEOplayerRCTCastEventHandler.swift +1 -1
- package/ios/presentationMode/THEOplayerRCTPresentationModeManager.swift +24 -6
- package/ios/theoAds/THEOplayerRCTTHEOAdsAPI.swift +101 -0
- package/ios/theoAds/THEOplayerRCTTHEOAdsEventAdapter.swift +118 -0
- package/ios/theoAds/THEOplayerRCTTHEOAdsEventHandler.swift +174 -0
- package/ios/theolive/THEOplayerRCTSourceDescriptionBuilder+Theolive.swift +0 -1
- package/ios/theolive/THEOplayerRCTTHEOliveEventHandler.swift +1 -1
- package/ios/theolive/THEOplayerRCTView+THEOlive.swift +1 -5
- package/ios/theolive/THEOplayerRCTView+THEOliveConfig.swift +0 -2
- package/lib/commonjs/api/barrel.js +45 -56
- package/lib/commonjs/api/barrel.js.map +1 -1
- package/lib/commonjs/api/cache/CachingTaskParameters.js +0 -19
- package/lib/commonjs/api/cache/CachingTaskParameters.js.map +1 -1
- package/lib/commonjs/api/event/PlayerEvent.js +16 -0
- package/lib/commonjs/api/event/PlayerEvent.js.map +1 -1
- package/lib/commonjs/api/event/TheoAdsEvent.js +7 -0
- package/lib/commonjs/api/event/TheoAdsEvent.js.map +1 -1
- package/lib/commonjs/api/player/PlayerEventMap.js +2 -0
- package/lib/commonjs/api/player/PlayerEventMap.js.map +1 -1
- package/lib/commonjs/api/source/SourceDescription.js +1 -13
- package/lib/commonjs/api/source/SourceDescription.js.map +1 -1
- package/lib/commonjs/api/source/ads/{THEOplayerAdDescription.js → CsaiAdDescription.js} +1 -1
- package/lib/commonjs/api/source/ads/CsaiAdDescription.js.map +1 -0
- package/lib/commonjs/api/source/ads/barrel.js +4 -4
- package/lib/commonjs/api/source/ads/barrel.js.map +1 -1
- package/lib/commonjs/api/track/Quality.js +37 -0
- package/lib/commonjs/api/track/Quality.js.map +1 -1
- package/lib/commonjs/api/track/TextTrackStyle.js.map +1 -1
- package/lib/commonjs/index.js +0 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.js +15 -3
- package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
- package/lib/commonjs/internal/adapter/DefaultNativePlayerState.js +2 -0
- package/lib/commonjs/internal/adapter/DefaultNativePlayerState.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +27 -9
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +18 -1
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/WebEventForwarder.js +15 -1
- package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
- package/lib/commonjs/internal/adapter/event/PlayerEvents.js +30 -1
- package/lib/commonjs/internal/adapter/event/PlayerEvents.js.map +1 -1
- package/lib/commonjs/internal/adapter/event/native/NativeTheoAdsEvent.js +20 -0
- package/lib/commonjs/internal/adapter/event/native/NativeTheoAdsEvent.js.map +1 -0
- package/lib/commonjs/internal/adapter/theoads/THEOAdsNativeAdapter.js +6 -12
- package/lib/commonjs/internal/adapter/theoads/THEOAdsNativeAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js +10 -0
- package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
- package/lib/commonjs/internal/utils/TypeUtils.js +4 -1
- package/lib/commonjs/internal/utils/TypeUtils.js.map +1 -1
- package/lib/commonjs/manifest.json +1 -1
- package/lib/module/api/barrel.js +0 -1
- package/lib/module/api/barrel.js.map +1 -1
- package/lib/module/api/cache/CachingTaskParameters.js +1 -19
- package/lib/module/api/cache/CachingTaskParameters.js.map +1 -1
- package/lib/module/api/event/PlayerEvent.js +18 -0
- package/lib/module/api/event/PlayerEvent.js.map +1 -1
- package/lib/module/api/event/TheoAdsEvent.js +8 -0
- package/lib/module/api/event/TheoAdsEvent.js.map +1 -1
- package/lib/module/api/player/PlayerEventMap.js +2 -0
- package/lib/module/api/player/PlayerEventMap.js.map +1 -1
- package/lib/module/api/source/SourceDescription.js +0 -13
- package/lib/module/api/source/SourceDescription.js.map +1 -1
- package/lib/module/api/source/ads/CsaiAdDescription.js +4 -0
- package/lib/module/api/source/ads/CsaiAdDescription.js.map +1 -0
- package/lib/module/api/source/ads/barrel.js +1 -1
- package/lib/module/api/source/ads/barrel.js.map +1 -1
- package/lib/module/api/track/Quality.js +34 -0
- package/lib/module/api/track/Quality.js.map +1 -1
- package/lib/module/api/track/TextTrackStyle.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/internal/THEOplayerView.js +16 -4
- package/lib/module/internal/THEOplayerView.js.map +1 -1
- package/lib/module/internal/THEOplayerView.web.js +1 -1
- package/lib/module/internal/THEOplayerView.web.js.map +1 -1
- package/lib/module/internal/adapter/DefaultNativePlayerState.js +2 -0
- package/lib/module/internal/adapter/DefaultNativePlayerState.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +28 -10
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js +18 -1
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/module/internal/adapter/WebEventForwarder.js +16 -2
- package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
- package/lib/module/internal/adapter/event/PlayerEvents.js +26 -0
- package/lib/module/internal/adapter/event/PlayerEvents.js.map +1 -1
- package/lib/module/internal/adapter/event/native/NativeTheoAdsEvent.js +16 -0
- package/lib/module/internal/adapter/event/native/NativeTheoAdsEvent.js.map +1 -0
- package/lib/module/internal/adapter/theoads/THEOAdsNativeAdapter.js +6 -12
- package/lib/module/internal/adapter/theoads/THEOAdsNativeAdapter.js.map +1 -1
- package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js +10 -0
- package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
- package/lib/module/internal/utils/TypeUtils.js +3 -0
- package/lib/module/internal/utils/TypeUtils.js.map +1 -1
- package/lib/module/manifest.json +1 -1
- package/lib/typescript/api/barrel.d.ts +0 -1
- package/lib/typescript/api/barrel.d.ts.map +1 -1
- package/lib/typescript/api/cache/CachingTaskParameters.d.ts +0 -34
- package/lib/typescript/api/cache/CachingTaskParameters.d.ts.map +1 -1
- package/lib/typescript/api/event/PlayerEvent.d.ts +36 -0
- package/lib/typescript/api/event/PlayerEvent.d.ts.map +1 -1
- package/lib/typescript/api/event/TheoAdsEvent.d.ts +13 -0
- package/lib/typescript/api/event/TheoAdsEvent.d.ts.map +1 -1
- package/lib/typescript/api/player/PlayerEventMap.d.ts +17 -2
- package/lib/typescript/api/player/PlayerEventMap.d.ts.map +1 -1
- package/lib/typescript/api/player/THEOplayer.d.ts +8 -0
- package/lib/typescript/api/player/THEOplayer.d.ts.map +1 -1
- package/lib/typescript/api/source/SourceDescription.d.ts +0 -20
- package/lib/typescript/api/source/SourceDescription.d.ts.map +1 -1
- package/lib/typescript/api/source/ads/{THEOplayerAdDescription.d.ts → CsaiAdDescription.d.ts} +2 -2
- package/lib/typescript/api/source/ads/CsaiAdDescription.d.ts.map +1 -0
- package/lib/typescript/api/source/ads/barrel.d.ts +1 -1
- package/lib/typescript/api/source/ads/barrel.d.ts.map +1 -1
- package/lib/typescript/api/track/Quality.d.ts +1 -0
- package/lib/typescript/api/track/Quality.d.ts.map +1 -1
- package/lib/typescript/api/track/TextTrackStyle.d.ts +7 -0
- package/lib/typescript/api/track/TextTrackStyle.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +0 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/internal/THEOplayerView.d.ts +3 -1
- package/lib/typescript/internal/THEOplayerView.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/DefaultNativePlayerState.d.ts +2 -0
- package/lib/typescript/internal/adapter/DefaultNativePlayerState.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/NativePlayerState.d.ts +2 -0
- package/lib/typescript/internal/adapter/NativePlayerState.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +5 -3
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +5 -0
- package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/WebEventForwarder.d.ts +1 -0
- package/lib/typescript/internal/adapter/WebEventForwarder.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts +20 -1
- package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/event/native/NativePlayerEvent.d.ts +11 -1
- package/lib/typescript/internal/adapter/event/native/NativePlayerEvent.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/event/native/NativeTheoAdsEvent.d.ts +18 -0
- package/lib/typescript/internal/adapter/event/native/NativeTheoAdsEvent.d.ts.map +1 -0
- package/lib/typescript/internal/adapter/theoads/THEOAdsNativeAdapter.d.ts +1 -1
- package/lib/typescript/internal/adapter/theoads/THEOAdsNativeAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/track/TextTrackStyleAdapter.d.ts +3 -0
- package/lib/typescript/internal/adapter/track/TextTrackStyleAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/utils/TypeUtils.d.ts +1 -0
- package/lib/typescript/internal/utils/TypeUtils.d.ts.map +1 -1
- package/package.json +6 -6
- package/react-native-theoplayer.podspec +7 -7
- package/src/api/barrel.ts +0 -1
- package/src/api/cache/CachingTaskParameters.ts +0 -37
- package/src/api/event/PlayerEvent.ts +40 -0
- package/src/api/event/TheoAdsEvent.ts +14 -0
- package/src/api/player/PlayerEventMap.ts +19 -0
- package/src/api/player/THEOplayer.ts +10 -0
- package/src/api/source/SourceDescription.ts +0 -22
- package/src/api/source/ads/{THEOplayerAdDescription.ts → CsaiAdDescription.ts} +1 -1
- package/src/api/source/ads/barrel.ts +1 -1
- package/src/api/track/Quality.ts +15 -0
- package/src/api/track/TextTrackStyle.ts +8 -0
- package/src/index.tsx +0 -1
- package/src/internal/THEOplayerView.tsx +24 -5
- package/src/internal/THEOplayerView.web.tsx +1 -1
- package/src/internal/adapter/DefaultNativePlayerState.ts +2 -0
- package/src/internal/adapter/NativePlayerState.ts +2 -0
- package/src/internal/adapter/THEOplayerAdapter.ts +43 -21
- package/src/internal/adapter/THEOplayerWebAdapter.ts +22 -2
- package/src/internal/adapter/WebEventForwarder.ts +17 -1
- package/src/internal/adapter/event/PlayerEvents.ts +34 -0
- package/src/internal/adapter/event/native/NativePlayerEvent.ts +13 -1
- package/src/internal/adapter/event/native/NativeTheoAdsEvent.ts +30 -0
- package/src/internal/adapter/theoads/THEOAdsNativeAdapter.ts +7 -12
- package/src/internal/adapter/track/TextTrackStyleAdapter.ts +12 -0
- package/src/internal/utils/TypeUtils.ts +6 -0
- package/src/manifest.json +1 -1
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/9.0.0/ads-wrapper-9.0.0.aar +0 -0
- package/android/src/main/java/com/theoplayer/playback/PlaybackSettingsModule.kt +0 -28
- package/lib/commonjs/api/playback/PlaybackSettingsAPI.js +0 -2
- package/lib/commonjs/api/playback/PlaybackSettingsAPI.js.map +0 -1
- package/lib/commonjs/api/playback/barrel.js +0 -17
- package/lib/commonjs/api/playback/barrel.js.map +0 -1
- package/lib/commonjs/api/source/ads/THEOplayerAdDescription.js.map +0 -1
- package/lib/commonjs/internal/playback/PlaybackSettings.js +0 -28
- package/lib/commonjs/internal/playback/PlaybackSettings.js.map +0 -1
- package/lib/module/api/playback/PlaybackSettingsAPI.js +0 -2
- package/lib/module/api/playback/PlaybackSettingsAPI.js.map +0 -1
- package/lib/module/api/playback/barrel.js +0 -4
- package/lib/module/api/playback/barrel.js.map +0 -1
- package/lib/module/api/source/ads/THEOplayerAdDescription.js +0 -4
- package/lib/module/api/source/ads/THEOplayerAdDescription.js.map +0 -1
- package/lib/module/internal/playback/PlaybackSettings.js +0 -23
- package/lib/module/internal/playback/PlaybackSettings.js.map +0 -1
- package/lib/typescript/api/playback/PlaybackSettingsAPI.d.ts +0 -35
- package/lib/typescript/api/playback/PlaybackSettingsAPI.d.ts.map +0 -1
- package/lib/typescript/api/playback/barrel.d.ts +0 -2
- package/lib/typescript/api/playback/barrel.d.ts.map +0 -1
- package/lib/typescript/api/source/ads/THEOplayerAdDescription.d.ts.map +0 -1
- package/lib/typescript/internal/playback/PlaybackSettings.d.ts +0 -7
- package/lib/typescript/internal/playback/PlaybackSettings.d.ts.map +0 -1
- package/src/api/playback/PlaybackSettingsAPI.ts +0 -36
- package/src/api/playback/barrel.ts +0 -1
- package/src/internal/playback/PlaybackSettings.ts +0 -25
package/src/api/barrel.ts
CHANGED
|
@@ -19,7 +19,6 @@ export * from './track/barrel';
|
|
|
19
19
|
export * from './ui/barrel';
|
|
20
20
|
export * from './utils/barrel';
|
|
21
21
|
export * from './THEOplayerView';
|
|
22
|
-
export * from './playback/barrel';
|
|
23
22
|
export * from './player/barrel';
|
|
24
23
|
export * from './presentation/barrel';
|
|
25
24
|
export * from './version/barrel';
|
|
@@ -1,33 +1,5 @@
|
|
|
1
1
|
import type { CachingPreferredTrackSelection } from "./CachingPreferredTrackSelection";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* The types of cache storage supported by THEOplayer.
|
|
5
|
-
*
|
|
6
|
-
* @platform android
|
|
7
|
-
* @category Caching
|
|
8
|
-
* @public
|
|
9
|
-
*/
|
|
10
|
-
export enum StorageType {
|
|
11
|
-
/**
|
|
12
|
-
* Write to the legacy cache.
|
|
13
|
-
*
|
|
14
|
-
* @remarks
|
|
15
|
-
* <br/> - This was the default for all caching tasks created in THEOplayer version 8.x and earlier.
|
|
16
|
-
* <br/> - Sources cached with this storage type can be played in both the default playback pipeline and the Media3 playback pipeline.
|
|
17
|
-
* <br/> - This cache storage will be removed in THEOplayer version 10.
|
|
18
|
-
*/
|
|
19
|
-
LEGACY = 'legacy',
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Write to the Media3 cache.
|
|
23
|
-
*
|
|
24
|
-
* @remarks
|
|
25
|
-
* <br/> - This is the default starting with THEOplayer version 9.0.
|
|
26
|
-
* <br/> - Sources cached with this storage type can only be played in the [Media3 playback pipeline][PlaybackPipeline.MEDIA3].
|
|
27
|
-
*/
|
|
28
|
-
MEDIA3 = 'media3'
|
|
29
|
-
}
|
|
30
|
-
|
|
31
3
|
/**
|
|
32
4
|
* Describes the configuration of a caching task.
|
|
33
5
|
*
|
|
@@ -91,13 +63,4 @@ export interface CachingTaskParameters {
|
|
|
91
63
|
* <br/> - If the download is scheduled/started on WIFI-only mode, and suddenly we would like allow Cellular Network download too, the `CachingTask` has to be removed and scheduled again with the new `CachingParamaters`.
|
|
92
64
|
*/
|
|
93
65
|
readonly allowsCellularAccess?: boolean;
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* The storage type to use for caching.
|
|
97
|
-
*
|
|
98
|
-
* @defaultValue [StorageType.MEDIA3]
|
|
99
|
-
*
|
|
100
|
-
* @platform android
|
|
101
|
-
*/
|
|
102
|
-
readonly storageType?: StorageType;
|
|
103
66
|
}
|
|
@@ -50,12 +50,33 @@ export interface TimeUpdateEvent extends Event<PlayerEventType.TIME_UPDATE> {
|
|
|
50
50
|
readonly currentProgramDateTime?: number;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Dispatched when the player dimensions are updated.
|
|
55
|
+
*
|
|
56
|
+
* @category Events
|
|
57
|
+
* @category Player
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
export interface DimensionChangeEvent extends Event<PlayerEventType.DIMENSION_CHANGE> {
|
|
61
|
+
/**
|
|
62
|
+
* The player's current width.
|
|
63
|
+
*/
|
|
64
|
+
readonly width: number;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The player's current height.
|
|
68
|
+
*/
|
|
69
|
+
readonly height: number;
|
|
70
|
+
}
|
|
71
|
+
|
|
53
72
|
/**
|
|
54
73
|
* Dispatched when player is resized.
|
|
55
74
|
*
|
|
56
75
|
* @category Events
|
|
57
76
|
* @category Player
|
|
58
77
|
* @public
|
|
78
|
+
*
|
|
79
|
+
* @deprecated use {@link DimensionChangeEvent} instead. This event is set for removal in version 11.
|
|
59
80
|
*/
|
|
60
81
|
export interface ResizeEvent extends Event<PlayerEventType.RESIZE> {
|
|
61
82
|
/**
|
|
@@ -69,6 +90,25 @@ export interface ResizeEvent extends Event<PlayerEventType.RESIZE> {
|
|
|
69
90
|
readonly height: number;
|
|
70
91
|
}
|
|
71
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Dispatched when video is resized.
|
|
95
|
+
*
|
|
96
|
+
* @category Events
|
|
97
|
+
* @category Player
|
|
98
|
+
* @public
|
|
99
|
+
*/
|
|
100
|
+
export interface VideoResizeEvent extends Event<PlayerEventType.VIDEO_RESIZE> {
|
|
101
|
+
/**
|
|
102
|
+
* The video's current width.
|
|
103
|
+
*/
|
|
104
|
+
readonly videoWidth: number;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* The video's current height.
|
|
108
|
+
*/
|
|
109
|
+
readonly videoHeight: number;
|
|
110
|
+
}
|
|
111
|
+
|
|
72
112
|
/**
|
|
73
113
|
* Dispatched when the player's duration changes.
|
|
74
114
|
*
|
|
@@ -20,6 +20,20 @@ export interface TheoAdsEvent extends Event<PlayerEventType.THEOADS_EVENT> {
|
|
|
20
20
|
interstitial: Interstitial;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Fired when an interstitial has errored.
|
|
25
|
+
*
|
|
26
|
+
* @category Events
|
|
27
|
+
* @category THEOads
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export interface TheoAdsErrorEvent extends TheoAdsEvent {
|
|
31
|
+
/**
|
|
32
|
+
* Type of THEOads event.
|
|
33
|
+
*/
|
|
34
|
+
message: string | undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
23
37
|
/**
|
|
24
38
|
* The THEOads event types dispatched by the {@link AdsAPI | Ads API}.
|
|
25
39
|
*
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Event } from '../event/Event';
|
|
2
2
|
import type {
|
|
3
|
+
DimensionChangeEvent,
|
|
3
4
|
DurationChangeEvent,
|
|
4
5
|
ErrorEvent,
|
|
5
6
|
LoadedMetadataEvent,
|
|
@@ -13,6 +14,7 @@ import type {
|
|
|
13
14
|
ResizeEvent,
|
|
14
15
|
SeekedEvent,
|
|
15
16
|
SeekingEvent,
|
|
17
|
+
VideoResizeEvent,
|
|
16
18
|
} from '../event/PlayerEvent';
|
|
17
19
|
import type { MediaTrackEvent, MediaTrackListEvent, TextTrackEvent, TextTrackListEvent } from '../event/TrackEvent';
|
|
18
20
|
import type { AdEvent } from '../event/AdEvent';
|
|
@@ -58,7 +60,12 @@ export enum PlayerEventType {
|
|
|
58
60
|
WAITING = 'waiting',
|
|
59
61
|
PRESENTATIONMODE_CHANGE = 'presentationmodechange',
|
|
60
62
|
DESTROY = 'destroy',
|
|
63
|
+
/**
|
|
64
|
+
* @deprecated Use {@link PlayerEventType.DIMENSION_CHANGE} instead. This event is set for removal in version 11.
|
|
65
|
+
*/
|
|
61
66
|
RESIZE = 'resize',
|
|
67
|
+
DIMENSION_CHANGE = 'dimensionchange',
|
|
68
|
+
VIDEO_RESIZE = 'videoresize',
|
|
62
69
|
}
|
|
63
70
|
|
|
64
71
|
/**
|
|
@@ -226,6 +233,18 @@ export interface PlayerEventMap {
|
|
|
226
233
|
|
|
227
234
|
/**
|
|
228
235
|
* Dispatched when the player size changes.
|
|
236
|
+
*
|
|
237
|
+
* @deprecated Use {@link dimensionchange} instead. This event is set for removal in version 11.
|
|
229
238
|
*/
|
|
230
239
|
[PlayerEventType.RESIZE]: ResizeEvent;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Dispatched when the player size changes.
|
|
243
|
+
*/
|
|
244
|
+
[PlayerEventType.DIMENSION_CHANGE]: DimensionChangeEvent;
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Dispatched when the video size changes.
|
|
248
|
+
*/
|
|
249
|
+
[PlayerEventType.VIDEO_RESIZE]: VideoResizeEvent;
|
|
231
250
|
}
|
|
@@ -273,6 +273,16 @@ export interface THEOplayer extends EventDispatcher<PlayerEventMap> {
|
|
|
273
273
|
*/
|
|
274
274
|
readonly height: number | undefined;
|
|
275
275
|
|
|
276
|
+
/**
|
|
277
|
+
* The width of the active video rendition, in pixels.
|
|
278
|
+
*/
|
|
279
|
+
readonly videoWidth: number | undefined;
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* The height of the active video rendition, in pixels.
|
|
283
|
+
*/
|
|
284
|
+
readonly videoHeight: number | undefined;
|
|
285
|
+
|
|
276
286
|
/**
|
|
277
287
|
* The API for theolive.
|
|
278
288
|
*/
|
|
@@ -61,18 +61,6 @@ export enum SourceIntegrationId {
|
|
|
61
61
|
THEO_LIVE = 'theolive'
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
/**
|
|
65
|
-
* The playback pipeline to use to play a stream.
|
|
66
|
-
*
|
|
67
|
-
* @category Source
|
|
68
|
-
* @platform android
|
|
69
|
-
* @public
|
|
70
|
-
*/
|
|
71
|
-
export enum PlaybackPipeline {
|
|
72
|
-
LEGACY = 'legacy',
|
|
73
|
-
MEDIA3 = 'media3'
|
|
74
|
-
}
|
|
75
|
-
|
|
76
64
|
/**
|
|
77
65
|
* Describes the configuration of a player's source.
|
|
78
66
|
*
|
|
@@ -364,16 +352,6 @@ export interface BaseSource {
|
|
|
364
352
|
* <br/> - Ignored for non-HLS streams.
|
|
365
353
|
*/
|
|
366
354
|
hls?: HlsPlaybackConfiguration;
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* The playback pipeline to use for this stream.
|
|
370
|
-
*
|
|
371
|
-
* @defaultValue [PlaybackPipeline.MEDIA3]
|
|
372
|
-
* @since React Native THEOplayer SDK v9.0.0.
|
|
373
|
-
* @since Native THEOplayer SDK v9.0.0.
|
|
374
|
-
* @platform android
|
|
375
|
-
*/
|
|
376
|
-
playbackPipeline?: PlaybackPipeline;
|
|
377
355
|
}
|
|
378
356
|
|
|
379
357
|
/**
|
package/src/api/track/Quality.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isArray } from '../../internal/utils/TypeUtils';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Represents a quality of a media track.
|
|
3
5
|
*
|
|
@@ -80,6 +82,19 @@ export interface VideoQuality extends Quality {
|
|
|
80
82
|
readonly firstFrame: number;
|
|
81
83
|
}
|
|
82
84
|
|
|
85
|
+
export function isVideoQuality(qualities: Quality | Quality[] | undefined): qualities is VideoQuality {
|
|
86
|
+
if (!qualities) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
let quality = qualities;
|
|
91
|
+
if (isArray(qualities) && qualities.length > 0) {
|
|
92
|
+
quality = qualities[0];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return (quality as VideoQuality).height !== undefined;
|
|
96
|
+
}
|
|
97
|
+
|
|
83
98
|
/**
|
|
84
99
|
* Represents a quality of an audio track.
|
|
85
100
|
*
|
|
@@ -28,6 +28,14 @@ export interface TextTrackStyle {
|
|
|
28
28
|
*/
|
|
29
29
|
fontSize: string | undefined;
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* The path to a font in the Android `app/src/main/assets/` folder.
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* Only supported on Android.
|
|
36
|
+
*/
|
|
37
|
+
fontPath: string | undefined;
|
|
38
|
+
|
|
31
39
|
/**
|
|
32
40
|
* The background color for the text track.
|
|
33
41
|
*
|
package/src/index.tsx
CHANGED
|
@@ -2,5 +2,4 @@ export * from './api/barrel';
|
|
|
2
2
|
export { THEOplayerView } from './internal/THEOplayerView';
|
|
3
3
|
export { ContentProtectionRegistry } from './internal/drm/ContentProtectionRegistry';
|
|
4
4
|
export { MediaCache } from './internal/cache/MediaCache';
|
|
5
|
-
export { PlaybackSettings } from './internal/playback/PlaybackSettings';
|
|
6
5
|
export { sdkVersions } from './internal/version/Version';
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
DefaultAirplayStateChangeEvent,
|
|
25
25
|
DefaultChromecastChangeEvent,
|
|
26
26
|
DefaultChromecastErrorEvent,
|
|
27
|
+
DefaultDimensionChangeEvent,
|
|
27
28
|
DefaultDurationChangeEvent,
|
|
28
29
|
DefaultErrorEvent,
|
|
29
30
|
DefaultLoadedMetadataEvent,
|
|
@@ -41,6 +42,7 @@ import {
|
|
|
41
42
|
DefaultResizeEvent,
|
|
42
43
|
DefaultSeekingEvent,
|
|
43
44
|
DefaultSeekedEvent,
|
|
45
|
+
DefaultVideoResizeEvent,
|
|
44
46
|
} from './adapter/event/PlayerEvents';
|
|
45
47
|
import type { NativeCastEvent } from './adapter/event/native/NativeCastEvent';
|
|
46
48
|
import type {
|
|
@@ -62,12 +64,14 @@ import {
|
|
|
62
64
|
NativeSegmentNotFoundEvent,
|
|
63
65
|
NativeTimeUpdateEvent,
|
|
64
66
|
NativeVolumeChangeEvent,
|
|
65
|
-
|
|
67
|
+
NativeDimensionChangeEvent,
|
|
66
68
|
NativeSeekingEvent,
|
|
67
69
|
NativeSeekedEvent,
|
|
70
|
+
NativeVideoResizeEvent,
|
|
68
71
|
} from './adapter/event/native/NativePlayerEvent';
|
|
69
72
|
import type { NativeAdEvent } from './adapter/event/native/NativeAdEvent';
|
|
70
73
|
import { fromNativeTheoLiveEvent, NativeTheoLiveEvent } from './adapter/event/native/NativeTheoLiveEvent';
|
|
74
|
+
import { fromNativeTheoAdsEvent, NativeTheoAdsEvent } from './adapter/event/native/NativeTheoAdsEvent';
|
|
71
75
|
import { THEOplayerAdapter } from './adapter/THEOplayerAdapter';
|
|
72
76
|
import { getFullscreenSize } from './utils/Dimensions';
|
|
73
77
|
import { Poster } from './poster/Poster';
|
|
@@ -105,10 +109,12 @@ interface THEOplayerRCTViewProps {
|
|
|
105
109
|
onNativeMediaTrackEvent: (event: NativeSyntheticEvent<NativeMediaTrackEvent>) => void;
|
|
106
110
|
onNativeAdEvent: (event: NativeSyntheticEvent<NativeAdEvent>) => void;
|
|
107
111
|
onNativeTHEOliveEvent: (event: NativeSyntheticEvent<NativeTheoLiveEvent>) => void;
|
|
112
|
+
onNativeTHEOadsEvent: (event: NativeSyntheticEvent<NativeTheoAdsEvent>) => void;
|
|
108
113
|
onNativeCastEvent: (event: NativeSyntheticEvent<NativeCastEvent>) => void;
|
|
109
114
|
onNativePresentationModeChange: (event: NativeSyntheticEvent<NativePresentationModeChangeEvent>) => void;
|
|
110
115
|
onNativeDeviceOrientationChanged: () => void;
|
|
111
|
-
|
|
116
|
+
onNativeDimensionChange: (event: NativeSyntheticEvent<NativeDimensionChangeEvent>) => void;
|
|
117
|
+
onNativeVideoResize: (event: NativeSyntheticEvent<NativeVideoResizeEvent>) => void;
|
|
112
118
|
}
|
|
113
119
|
|
|
114
120
|
interface THEOplayerRCTViewState {
|
|
@@ -350,6 +356,10 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
350
356
|
this._facade.dispatchEvent(fromNativeTheoLiveEvent(event));
|
|
351
357
|
};
|
|
352
358
|
|
|
359
|
+
private _onTHEOadsEvent = (event: NativeSyntheticEvent<NativeTheoAdsEvent>) => {
|
|
360
|
+
this._facade.dispatchEvent(fromNativeTheoAdsEvent(event));
|
|
361
|
+
};
|
|
362
|
+
|
|
353
363
|
private _onCastEvent = (event: NativeSyntheticEvent<NativeCastEvent>) => {
|
|
354
364
|
switch (event.nativeEvent.type) {
|
|
355
365
|
case CastEventType.CHROMECAST_STATE_CHANGE:
|
|
@@ -381,8 +391,15 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
381
391
|
);
|
|
382
392
|
};
|
|
383
393
|
|
|
384
|
-
private
|
|
385
|
-
|
|
394
|
+
private _onDimensionChange = (event: NativeSyntheticEvent<NativeDimensionChangeEvent>) => {
|
|
395
|
+
const width = event.nativeEvent.width;
|
|
396
|
+
const height = event.nativeEvent.height;
|
|
397
|
+
this._facade.dispatchEvent(new DefaultResizeEvent(width, height));
|
|
398
|
+
this._facade.dispatchEvent(new DefaultDimensionChangeEvent(width, height));
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
private _onVideoResize = (event: NativeSyntheticEvent<NativeVideoResizeEvent>) => {
|
|
402
|
+
this._facade.dispatchEvent(new DefaultVideoResizeEvent(event.nativeEvent.videoWidth, event.nativeEvent.videoHeight));
|
|
386
403
|
};
|
|
387
404
|
|
|
388
405
|
private _updatePoster = () => {
|
|
@@ -442,10 +459,12 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
|
|
|
442
459
|
onNativeMediaTrackEvent={this._onMediaTrackEvent}
|
|
443
460
|
onNativeAdEvent={this._onAdEvent}
|
|
444
461
|
onNativeTHEOliveEvent={this._onTHEOliveEvent}
|
|
462
|
+
onNativeTHEOadsEvent={this._onTHEOadsEvent}
|
|
445
463
|
onNativeCastEvent={this._onCastEvent}
|
|
446
464
|
onNativePresentationModeChange={this._onPresentationModeChange}
|
|
447
465
|
onNativeDeviceOrientationChanged={this._onDeviceOrientationChanged}
|
|
448
|
-
|
|
466
|
+
onNativeDimensionChange={this._onDimensionChange}
|
|
467
|
+
onNativeVideoResize={this._onVideoResize}
|
|
449
468
|
/>
|
|
450
469
|
{posterActive && <Poster uri={poster} style={posterStyle} />}
|
|
451
470
|
{children}
|
|
@@ -56,7 +56,7 @@ export function THEOplayerView(props: React.PropsWithChildren<THEOplayerViewProp
|
|
|
56
56
|
// Note: `display: contents` causes an element's children to appear as if they were direct children of the element's parent,
|
|
57
57
|
// ignoring the element itself.
|
|
58
58
|
// It's necessary to make sure we do not interfere with the IMA container
|
|
59
|
-
<div id={'theoplayer-root-container'} style={{ display: 'contents' }}>
|
|
59
|
+
<div id={'theoplayer-root-container'} style={{ display: CSS.supports('display', 'contents') ? 'contents' : 'flex' }}>
|
|
60
60
|
{!CSS.supports('aspect-ratio', '16/9') ? (
|
|
61
61
|
// Handle aspect-ratio 16/9 with padding-top: 56.25% to support older versions.
|
|
62
62
|
// {@link https://www.w3schools.com/howto/howto_css_aspect_ratio.asp}
|
|
@@ -39,6 +39,8 @@ export class DefaultNativePlayerState extends DefaultTextTrackState implements N
|
|
|
39
39
|
selectedVideoTrack: number | undefined = undefined;
|
|
40
40
|
width: number | undefined = undefined;
|
|
41
41
|
height: number | undefined = undefined;
|
|
42
|
+
videoWidth: number | undefined = undefined;
|
|
43
|
+
videoHeight: number | undefined = undefined;
|
|
42
44
|
|
|
43
45
|
apply(state: Partial<NativePlayerState>): void {
|
|
44
46
|
Object.assign(this, state);
|
|
@@ -33,6 +33,8 @@ export interface MediaTrackState {
|
|
|
33
33
|
targetVideoQuality: number | number[] | undefined;
|
|
34
34
|
selectedVideoTrack: number | undefined;
|
|
35
35
|
selectedAudioTrack: number | undefined;
|
|
36
|
+
videoWidth: number | undefined;
|
|
37
|
+
videoHeight: number | undefined;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
export interface TextTrackState {
|
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';
|
|
2
2
|
import {
|
|
3
3
|
ABRConfiguration,
|
|
4
|
+
addTrack,
|
|
4
5
|
AdsAPI,
|
|
6
|
+
AspectRatio,
|
|
7
|
+
BackgroundAudioConfiguration,
|
|
5
8
|
CastAPI,
|
|
9
|
+
DimensionChangeEvent,
|
|
6
10
|
DurationChangeEvent,
|
|
7
11
|
EventBroadcastAPI,
|
|
12
|
+
findMediaTrackByUid,
|
|
13
|
+
isVideoQuality,
|
|
8
14
|
LoadedMetadataEvent,
|
|
9
15
|
MediaTrack,
|
|
10
16
|
MediaTrackEvent,
|
|
17
|
+
MediaTrackEventType,
|
|
11
18
|
MediaTrackListEvent,
|
|
19
|
+
MediaTrackType,
|
|
12
20
|
NativeHandleType,
|
|
13
21
|
PiPConfiguration,
|
|
14
22
|
PlayerEventMap,
|
|
23
|
+
PlayerEventType,
|
|
24
|
+
PlayerVersion,
|
|
25
|
+
PreloadType,
|
|
26
|
+
PresentationMode,
|
|
15
27
|
PresentationModeChangeEvent,
|
|
16
28
|
ProgressEvent,
|
|
17
29
|
RateChangeEvent,
|
|
30
|
+
removeTrack,
|
|
18
31
|
RenderingTarget,
|
|
19
|
-
ResizeEvent,
|
|
20
32
|
SeekedEvent,
|
|
21
33
|
SeekingEvent,
|
|
22
34
|
SourceDescription,
|
|
23
35
|
TextTrack,
|
|
36
|
+
TextTrackStyle,
|
|
24
37
|
TheoAdsAPI,
|
|
25
38
|
TheoLiveAPI,
|
|
26
39
|
THEOplayer,
|
|
27
40
|
THEOplayerView,
|
|
28
41
|
TimeUpdateEvent,
|
|
29
|
-
} from 'react-native-theoplayer';
|
|
30
|
-
import {
|
|
31
|
-
addTrack,
|
|
32
|
-
AspectRatio,
|
|
33
|
-
BackgroundAudioConfiguration,
|
|
34
|
-
findMediaTrackByUid,
|
|
35
|
-
MediaTrackEventType,
|
|
36
|
-
MediaTrackType,
|
|
37
|
-
PlayerEventType,
|
|
38
|
-
PlayerVersion,
|
|
39
|
-
PreloadType,
|
|
40
|
-
PresentationMode,
|
|
41
|
-
removeTrack,
|
|
42
|
-
TextTrackStyle,
|
|
43
42
|
TrackListEventType,
|
|
43
|
+
VideoResizeEvent,
|
|
44
44
|
} from 'react-native-theoplayer';
|
|
45
45
|
import { THEOplayerNativeAdsAdapter } from './ads/THEOplayerNativeAdsAdapter';
|
|
46
46
|
import { THEOplayerNativeCastAdapter } from './cast/THEOplayerNativeCastAdapter';
|
|
@@ -90,7 +90,8 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
90
90
|
this.addEventListener(PlayerEventType.MEDIA_TRACK, this.onMediaTrack);
|
|
91
91
|
this.addEventListener(PlayerEventType.MEDIA_TRACK_LIST, this.onMediaTrackList);
|
|
92
92
|
this.addEventListener(PlayerEventType.PRESENTATIONMODE_CHANGE, this.onPresentationModeChange);
|
|
93
|
-
this.addEventListener(PlayerEventType.
|
|
93
|
+
this.addEventListener(PlayerEventType.DIMENSION_CHANGE, this.onDimensionChange);
|
|
94
|
+
this.addEventListener(PlayerEventType.VIDEO_RESIZE, this.onVideoResize);
|
|
94
95
|
}
|
|
95
96
|
|
|
96
97
|
private hasValidSource(): boolean {
|
|
@@ -117,11 +118,16 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
117
118
|
this._state.currentProgramDateTime = event.currentProgramDateTime;
|
|
118
119
|
};
|
|
119
120
|
|
|
120
|
-
private
|
|
121
|
+
private onDimensionChange = (event: DimensionChangeEvent) => {
|
|
121
122
|
this._state.width = event.width;
|
|
122
123
|
this._state.height = event.height;
|
|
123
124
|
};
|
|
124
125
|
|
|
126
|
+
private onVideoResize = (event: VideoResizeEvent) => {
|
|
127
|
+
this._state.videoWidth = event.videoWidth;
|
|
128
|
+
this._state.videoHeight = event.videoHeight;
|
|
129
|
+
};
|
|
130
|
+
|
|
125
131
|
private onLoadedMetadata = (event: LoadedMetadataEvent) => {
|
|
126
132
|
this._state.duration = event.duration;
|
|
127
133
|
this._state.audioTracks = event.audioTracks;
|
|
@@ -157,16 +163,24 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
157
163
|
};
|
|
158
164
|
|
|
159
165
|
private onMediaTrack = (event: MediaTrackEvent) => {
|
|
160
|
-
const { subType, trackType, trackUid } = event;
|
|
166
|
+
const { subType, trackType, trackUid, qualities } = event;
|
|
161
167
|
const tracks = trackType === MediaTrackType.VIDEO ? this._state.videoTracks : this._state.audioTracks;
|
|
162
168
|
const track = findMediaTrackByUid(tracks, trackUid);
|
|
163
169
|
switch (subType) {
|
|
164
170
|
case MediaTrackEventType.ACTIVE_QUALITY_CHANGED:
|
|
171
|
+
if (!track) {
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
|
|
165
175
|
// Update local state
|
|
166
|
-
|
|
167
|
-
|
|
176
|
+
Object.assign(track, { ...track, activeQuality: qualities });
|
|
177
|
+
|
|
178
|
+
if (!isVideoQuality(qualities)) {
|
|
179
|
+
break;
|
|
168
180
|
}
|
|
169
|
-
|
|
181
|
+
|
|
182
|
+
this._state.videoWidth = qualities.width;
|
|
183
|
+
this._state.videoHeight = qualities.height;
|
|
170
184
|
}
|
|
171
185
|
};
|
|
172
186
|
|
|
@@ -524,4 +538,12 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
|
|
|
524
538
|
get height(): number | undefined {
|
|
525
539
|
return this._state.height;
|
|
526
540
|
}
|
|
541
|
+
|
|
542
|
+
get videoWidth(): number | undefined {
|
|
543
|
+
return this._state.videoWidth;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
get videoHeight(): number | undefined {
|
|
547
|
+
return this._state.videoHeight;
|
|
548
|
+
}
|
|
527
549
|
}
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
} from 'react-native-theoplayer';
|
|
24
24
|
import { THEOplayerWebAdsAdapter } from './ads/THEOplayerWebAdsAdapter';
|
|
25
25
|
import { THEOplayerWebCastAdapter } from './cast/THEOplayerWebCastAdapter';
|
|
26
|
-
import type { MediaTrack as NativeMediaTrack, TextTrack as NativeTextTrack } from 'theoplayer';
|
|
26
|
+
import type { DimensionChangeEvent, MediaTrack as NativeMediaTrack, TextTrack as NativeTextTrack } from 'theoplayer';
|
|
27
27
|
import { ChromelessPlayer as NativeChromelessPlayer, SourceDescription as NativeSourceDescription, version as nativeVersion } from 'theoplayer';
|
|
28
28
|
import { findNativeQualitiesByUid, fromNativeMediaTrackList } from './web/TrackUtils';
|
|
29
29
|
import type { ABRConfiguration, SourceDescription } from 'src/api/barrel';
|
|
@@ -62,6 +62,8 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher<PlayerEventMap>
|
|
|
62
62
|
private _pipConfiguration: PiPConfiguration = defaultPipConfiguration;
|
|
63
63
|
private _externalEventRouter: EventBroadcastAPI | undefined = undefined;
|
|
64
64
|
private _cmcdConnector: CMCDConnector | undefined = undefined;
|
|
65
|
+
private _width: number | undefined = undefined;
|
|
66
|
+
private _height: number | undefined = undefined;
|
|
65
67
|
|
|
66
68
|
constructor(player: NativeChromelessPlayer, config?: PlayerConfiguration) {
|
|
67
69
|
super();
|
|
@@ -74,6 +76,7 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher<PlayerEventMap>
|
|
|
74
76
|
this._eventForwarder = new WebEventForwarder(this._player, this);
|
|
75
77
|
this._presentationModeManager = new WebPresentationModeManager(this._player, this);
|
|
76
78
|
document.addEventListener('visibilitychange', this.onVisibilityChange);
|
|
79
|
+
this._player.addEventListener('dimensionchange', this.onPlayerDimensionChange);
|
|
77
80
|
|
|
78
81
|
// Optionally create a media session connector
|
|
79
82
|
if (config?.mediaControl?.mediaSessionEnabled !== false) {
|
|
@@ -387,6 +390,7 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher<PlayerEventMap>
|
|
|
387
390
|
this._mediaSession = undefined;
|
|
388
391
|
this._cmcdConnector?.destroy();
|
|
389
392
|
this._cmcdConnector = undefined;
|
|
393
|
+
this._player?.removeEventListener('dimensionchange', this.onPlayerDimensionChange);
|
|
390
394
|
this._player?.destroy();
|
|
391
395
|
this._player = undefined;
|
|
392
396
|
}
|
|
@@ -405,6 +409,14 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher<PlayerEventMap>
|
|
|
405
409
|
this._mediaSession?.updateMediaSession();
|
|
406
410
|
};
|
|
407
411
|
|
|
412
|
+
private readonly onPlayerDimensionChange = (event: DimensionChangeEvent) => {
|
|
413
|
+
if (!this._player) {
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
this._width = event.width;
|
|
417
|
+
this._height = event.height;
|
|
418
|
+
};
|
|
419
|
+
|
|
408
420
|
get nativeHandle(): NativeHandleType {
|
|
409
421
|
return this._player;
|
|
410
422
|
}
|
|
@@ -414,10 +426,18 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher<PlayerEventMap>
|
|
|
414
426
|
}
|
|
415
427
|
|
|
416
428
|
get width(): number | undefined {
|
|
417
|
-
return this.
|
|
429
|
+
return this._width;
|
|
418
430
|
}
|
|
419
431
|
|
|
420
432
|
get height(): number | undefined {
|
|
433
|
+
return this._height;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
get videoWidth(): number | undefined {
|
|
437
|
+
return this._player?.videoWidth;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
get videoHeight(): number | undefined {
|
|
421
441
|
return this._player?.videoHeight;
|
|
422
442
|
}
|
|
423
443
|
}
|