react-native-theoplayer 3.6.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 +6 -0
- package/README.md +1 -0
- package/android/src/main/java/com/theoplayer/presentation/PresentationManager.kt +41 -1
- 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/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
|
@@ -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
|
+
}
|