react-native-video-provider 0.1.1 → 0.2.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/README.md +23 -2
- package/android/src/main/java/com/auvideo/AuVideoModule.kt +48 -5
- package/ios/AuVideo.mm +5 -0
- package/ios/AuVideoOrientation.swift +62 -11
- package/lib/module/NativeAuVideo.js +3 -0
- package/lib/module/NativeAuVideo.js.map +1 -1
- package/lib/module/codegen-types.d.js +2 -0
- package/lib/module/codegen-types.d.js.map +1 -0
- package/lib/module/components/VideoPlayer.js +8 -0
- package/lib/module/components/VideoPlayer.js.map +1 -1
- package/lib/module/core/VideoManager.js +22 -1
- package/lib/module/core/VideoManager.js.map +1 -1
- package/lib/module/hooks/useFullscreen.js +5 -1
- package/lib/module/hooks/useFullscreen.js.map +1 -1
- package/lib/module/state/createVideoStore.js +1 -0
- package/lib/module/state/createVideoStore.js.map +1 -1
- package/lib/typescript/src/NativeAuVideo.d.ts +18 -11
- package/lib/typescript/src/NativeAuVideo.d.ts.map +1 -1
- package/lib/typescript/src/components/VideoPlayer.d.ts +8 -2
- package/lib/typescript/src/components/VideoPlayer.d.ts.map +1 -1
- package/lib/typescript/src/core/VideoManager.d.ts +6 -1
- package/lib/typescript/src/core/VideoManager.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useFullscreen.d.ts +3 -0
- package/lib/typescript/src/hooks/useFullscreen.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/state/createVideoStore.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +1 -1
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/types/video.d.ts +18 -0
- package/lib/typescript/src/types/video.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeAuVideo.ts +24 -15
- package/src/codegen-types.d.ts +20 -0
- package/src/components/VideoPlayer.tsx +16 -1
- package/src/core/VideoManager.ts +20 -0
- package/src/hooks/useFullscreen.ts +7 -1
- package/src/index.ts +1 -0
- package/src/state/createVideoStore.ts +1 -0
- package/src/types/index.ts +1 -0
- package/src/types/video.ts +24 -0
package/README.md
CHANGED
|
@@ -83,6 +83,26 @@ player.showFloating(); // draggable in-app window
|
|
|
83
83
|
player.enterPiP(); // system picture-in-picture
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
**5. Force an orientation** — per player, imperatively, or whenever
|
|
87
|
+
fullscreen is active:
|
|
88
|
+
|
|
89
|
+
```tsx
|
|
90
|
+
// While this player is mounted (released on unmount):
|
|
91
|
+
<VideoPlayer source={video} orientation="landscape" />
|
|
92
|
+
|
|
93
|
+
// Imperative — 'auto' | 'portrait' | 'inverted-portrait'
|
|
94
|
+
// | 'landscape' | 'inverted-landscape'
|
|
95
|
+
player.setOrientation('inverted-landscape');
|
|
96
|
+
player.setOrientation('auto'); // release
|
|
97
|
+
|
|
98
|
+
// Always go landscape in the built-in fullscreen host:
|
|
99
|
+
<VideoProvider config={{ fullscreenOrientation: 'landscape' }}>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
On iOS this needs the AppDelegate forwarding shown in
|
|
103
|
+
[Platform setup](#ios--fullscreen-rotation). Inverted portrait is ignored by
|
|
104
|
+
iPhones without a home button (the OS doesn't allow it).
|
|
105
|
+
|
|
86
106
|
## Surfaces (the core idea)
|
|
87
107
|
|
|
88
108
|
`<VideoSurface>` never creates a player — it registers a mount point. The
|
|
@@ -120,8 +140,9 @@ useVideoEvents({
|
|
|
120
140
|
### iOS — fullscreen rotation
|
|
121
141
|
|
|
122
142
|
iOS asks the AppDelegate which orientations are allowed. Forward that to the
|
|
123
|
-
library so rotation unlocks
|
|
124
|
-
|
|
143
|
+
library so rotation unlocks while fullscreen is visible and `setOrientation`
|
|
144
|
+
/ the `orientation` prop can force a rotation (skip this only if you don't
|
|
145
|
+
use those features and your app already supports all orientations):
|
|
125
146
|
|
|
126
147
|
```swift
|
|
127
148
|
// AppDelegate.swift
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
package com.auvideo
|
|
2
2
|
|
|
3
|
+
import android.app.Activity
|
|
3
4
|
import android.app.PictureInPictureParams
|
|
4
5
|
import android.content.pm.ActivityInfo
|
|
5
6
|
import android.content.pm.PackageManager
|
|
@@ -17,8 +18,14 @@ import com.facebook.react.bridge.UiThreadUtil
|
|
|
17
18
|
class AuVideoModule(reactContext: ReactApplicationContext) :
|
|
18
19
|
NativeAuVideoSpec(reactContext), PlayerCore.Listener {
|
|
19
20
|
|
|
21
|
+
/** The app's own requestedOrientation, saved before we first override it. */
|
|
20
22
|
private var previousOrientation: Int? = null
|
|
21
23
|
|
|
24
|
+
/** Explicit lock from setOrientation; wins over the fullscreen unlock. */
|
|
25
|
+
private var lockedOrientation: Int? = null
|
|
26
|
+
|
|
27
|
+
private var fullscreenActive = false
|
|
28
|
+
|
|
22
29
|
// ------------------------------------------------------------ lifecycle
|
|
23
30
|
|
|
24
31
|
override fun nativeInit() {
|
|
@@ -126,6 +133,41 @@ class AuVideoModule(reactContext: ReactApplicationContext) :
|
|
|
126
133
|
UiThreadUtil.runOnUiThread { PlayerCore.detach() }
|
|
127
134
|
}
|
|
128
135
|
|
|
136
|
+
// ---------------------------------------------------------- orientation
|
|
137
|
+
|
|
138
|
+
override fun setOrientation(orientation: String) {
|
|
139
|
+
UiThreadUtil.runOnUiThread {
|
|
140
|
+
val activity = currentActivity ?: return@runOnUiThread
|
|
141
|
+
if (previousOrientation == null) {
|
|
142
|
+
previousOrientation = activity.requestedOrientation
|
|
143
|
+
}
|
|
144
|
+
lockedOrientation = when (orientation) {
|
|
145
|
+
"portrait" -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
|
146
|
+
"inverted-portrait" -> ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
|
|
147
|
+
"landscape" -> ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
|
|
148
|
+
"inverted-landscape" -> ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
|
|
149
|
+
else -> null // "auto"
|
|
150
|
+
}
|
|
151
|
+
applyOrientation(activity)
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Precedence: explicit lock > fullscreen sensor unlock > the app's own
|
|
157
|
+
* orientation. Once nothing overrides anymore, the saved value is dropped.
|
|
158
|
+
*/
|
|
159
|
+
private fun applyOrientation(activity: Activity) {
|
|
160
|
+
val lock = lockedOrientation
|
|
161
|
+
activity.requestedOrientation = when {
|
|
162
|
+
lock != null -> lock
|
|
163
|
+
fullscreenActive -> ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
|
|
164
|
+
else -> previousOrientation ?: ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
|
|
165
|
+
}
|
|
166
|
+
if (lock == null && !fullscreenActive) {
|
|
167
|
+
previousOrientation = null
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
129
171
|
// ----------------------------------------------------------- fullscreen
|
|
130
172
|
|
|
131
173
|
override fun enterFullscreen() {
|
|
@@ -134,8 +176,10 @@ class AuVideoModule(reactContext: ReactApplicationContext) :
|
|
|
134
176
|
if (previousOrientation == null) {
|
|
135
177
|
previousOrientation = activity.requestedOrientation
|
|
136
178
|
}
|
|
137
|
-
// Unlock rotation while fullscreen is visible, even in portrait-locked
|
|
138
|
-
|
|
179
|
+
// Unlock rotation while fullscreen is visible, even in portrait-locked
|
|
180
|
+
// apps — unless an explicit orientation lock is active.
|
|
181
|
+
fullscreenActive = true
|
|
182
|
+
applyOrientation(activity)
|
|
139
183
|
|
|
140
184
|
val window = activity.window
|
|
141
185
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
|
@@ -150,9 +194,8 @@ class AuVideoModule(reactContext: ReactApplicationContext) :
|
|
|
150
194
|
override fun exitFullscreen() {
|
|
151
195
|
UiThreadUtil.runOnUiThread {
|
|
152
196
|
val activity = currentActivity ?: return@runOnUiThread
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
previousOrientation = null
|
|
197
|
+
fullscreenActive = false
|
|
198
|
+
applyOrientation(activity)
|
|
156
199
|
|
|
157
200
|
val window = activity.window
|
|
158
201
|
WindowCompat.setDecorFitsSystemWindows(window, true)
|
package/ios/AuVideo.mm
CHANGED
|
@@ -159,6 +159,11 @@ static AuVideoSourceSpec *AuVideoParseSource(NativeVideoSource &source)
|
|
|
159
159
|
dispatch_async(dispatch_get_main_queue(), ^{ [AuVideoOrientation setFullscreen:NO]; });
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
+
- (void)setOrientation:(NSString *)orientation
|
|
163
|
+
{
|
|
164
|
+
dispatch_async(dispatch_get_main_queue(), ^{ [AuVideoOrientation setOrientation:orientation]; });
|
|
165
|
+
}
|
|
166
|
+
|
|
162
167
|
#pragma mark - PiP
|
|
163
168
|
|
|
164
169
|
- (void)enterPip:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import Foundation
|
|
2
2
|
import UIKit
|
|
3
3
|
|
|
4
|
-
/// Fullscreen orientation coordination.
|
|
4
|
+
/// Fullscreen + forced-orientation coordination.
|
|
5
5
|
///
|
|
6
6
|
/// iOS decides allowed orientations by asking the AppDelegate. For rotation
|
|
7
|
-
/// to unlock only while the player is fullscreen
|
|
8
|
-
/// question here (see README):
|
|
7
|
+
/// to unlock only while the player is fullscreen (and for `setOrientation`
|
|
8
|
+
/// locks to apply), the host app forwards that question here (see README):
|
|
9
9
|
///
|
|
10
10
|
/// ```swift
|
|
11
11
|
/// func application(_ application: UIApplication,
|
|
@@ -22,38 +22,89 @@ public final class AuVideoOrientation: NSObject {
|
|
|
22
22
|
/// Orientations allowed while fullscreen. Default: everything but upside-down.
|
|
23
23
|
@objc public static var fullscreenMask: UIInterfaceOrientationMask = .allButUpsideDown
|
|
24
24
|
|
|
25
|
+
/// Explicit lock from `setOrientation`. Empty = no lock. Wins over both
|
|
26
|
+
/// the app default and the fullscreen unlock.
|
|
27
|
+
@objc public private(set) static var lockMask: UIInterfaceOrientationMask = []
|
|
28
|
+
|
|
25
29
|
/// Call from AppDelegate's supportedInterfaceOrientationsFor.
|
|
26
30
|
@objc(maskWithDefault:)
|
|
27
31
|
public static func mask(
|
|
28
32
|
withDefault defaultMask: UIInterfaceOrientationMask
|
|
29
33
|
) -> UIInterfaceOrientationMask {
|
|
34
|
+
if !lockMask.isEmpty {
|
|
35
|
+
return lockMask
|
|
36
|
+
}
|
|
30
37
|
return isFullscreenActive ? fullscreenMask : defaultMask
|
|
31
38
|
}
|
|
32
39
|
|
|
33
40
|
@objc public static func setFullscreen(_ active: Bool) {
|
|
34
41
|
guard isFullscreenActive != active else { return }
|
|
35
42
|
isFullscreenActive = active
|
|
36
|
-
|
|
43
|
+
applyCurrent()
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/// Force a screen orientation until cleared with "auto".
|
|
47
|
+
/// Values: auto | portrait | inverted-portrait | landscape | inverted-landscape
|
|
48
|
+
/// (upside-down portrait is ignored on iPhones without a home button).
|
|
49
|
+
@objc(setOrientation:)
|
|
50
|
+
public static func setOrientation(_ orientation: String) {
|
|
51
|
+
// "landscape" = device top pointing left (interface landscapeRight),
|
|
52
|
+
// matching Android's SCREEN_ORIENTATION_LANDSCAPE; "inverted-" is the
|
|
53
|
+
// 180° rotation of each.
|
|
54
|
+
switch orientation {
|
|
55
|
+
case "portrait":
|
|
56
|
+
lockMask = .portrait
|
|
57
|
+
case "inverted-portrait":
|
|
58
|
+
lockMask = .portraitUpsideDown
|
|
59
|
+
case "landscape":
|
|
60
|
+
lockMask = .landscapeRight
|
|
61
|
+
case "inverted-landscape":
|
|
62
|
+
lockMask = .landscapeLeft
|
|
63
|
+
default:
|
|
64
|
+
lockMask = []
|
|
65
|
+
}
|
|
66
|
+
applyCurrent()
|
|
37
67
|
}
|
|
38
68
|
|
|
39
|
-
///
|
|
40
|
-
///
|
|
41
|
-
|
|
69
|
+
/// Re-query supported orientations and rotate to whatever now applies:
|
|
70
|
+
/// the lock if set, free rotation while fullscreen, else back to portrait
|
|
71
|
+
/// (portrait-locked apps are the common host).
|
|
72
|
+
private static func applyCurrent() {
|
|
73
|
+
if !lockMask.isEmpty {
|
|
74
|
+
refresh(rotatingTo: lockMask)
|
|
75
|
+
} else {
|
|
76
|
+
refresh(rotatingTo: isFullscreenActive ? nil : .portrait)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private static func refresh(rotatingTo mask: UIInterfaceOrientationMask?) {
|
|
42
81
|
DispatchQueue.main.async {
|
|
43
82
|
if #available(iOS 16.0, *) {
|
|
44
83
|
for case let scene as UIWindowScene in UIApplication.shared.connectedScenes {
|
|
45
84
|
scene.keyWindow?.rootViewController?
|
|
46
85
|
.setNeedsUpdateOfSupportedInterfaceOrientations()
|
|
47
|
-
if
|
|
48
|
-
scene.requestGeometryUpdate(.iOS(interfaceOrientations:
|
|
86
|
+
if let mask {
|
|
87
|
+
scene.requestGeometryUpdate(.iOS(interfaceOrientations: mask), errorHandler: { _ in })
|
|
49
88
|
}
|
|
50
89
|
}
|
|
51
90
|
} else {
|
|
52
|
-
if
|
|
53
|
-
UIDevice.current.setValue(
|
|
91
|
+
if let device = legacyDeviceOrientation(for: mask) {
|
|
92
|
+
UIDevice.current.setValue(device.rawValue, forKey: "orientation")
|
|
54
93
|
}
|
|
55
94
|
UIViewController.attemptRotationToDeviceOrientation()
|
|
56
95
|
}
|
|
57
96
|
}
|
|
58
97
|
}
|
|
98
|
+
|
|
99
|
+
private static func legacyDeviceOrientation(
|
|
100
|
+
for mask: UIInterfaceOrientationMask?
|
|
101
|
+
) -> UIDeviceOrientation? {
|
|
102
|
+
guard let mask else { return nil }
|
|
103
|
+
if mask.contains(.portrait) { return .portrait }
|
|
104
|
+
if mask.contains(.portraitUpsideDown) { return .portraitUpsideDown }
|
|
105
|
+
// Interface landscapeRight is device landscapeLeft, and vice versa.
|
|
106
|
+
if mask.contains(.landscapeRight) { return .landscapeLeft }
|
|
107
|
+
if mask.contains(.landscapeLeft) { return .landscapeRight }
|
|
108
|
+
return nil
|
|
109
|
+
}
|
|
59
110
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { TurboModuleRegistry } from 'react-native';
|
|
4
|
+
// Direct imports (not the `CodegenTypes.` namespace) so the spec parses on
|
|
5
|
+
// RN 0.79's codegen as well as 0.80+.
|
|
6
|
+
|
|
4
7
|
export default TurboModuleRegistry.getEnforcing('AuVideo');
|
|
5
8
|
//# sourceMappingURL=NativeAuVideo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAuVideo.ts"],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAuVideo.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AACpE;AACA;;AAgHA,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["codegen-types.d.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -21,6 +21,7 @@ export function VideoPlayer({
|
|
|
21
21
|
surfaceId,
|
|
22
22
|
controls = true,
|
|
23
23
|
resizeMode,
|
|
24
|
+
orientation,
|
|
24
25
|
style,
|
|
25
26
|
...rest
|
|
26
27
|
}) {
|
|
@@ -40,6 +41,13 @@ export function VideoPlayer({
|
|
|
40
41
|
manager.setResizeMode(resizeMode);
|
|
41
42
|
}
|
|
42
43
|
}, [manager, resizeMode]);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (!orientation || orientation === 'auto') {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
manager.setOrientation(orientation);
|
|
49
|
+
return () => manager.setOrientation('auto');
|
|
50
|
+
}, [manager, orientation]);
|
|
43
51
|
return /*#__PURE__*/_jsxs(View, {
|
|
44
52
|
style: [styles.container, style],
|
|
45
53
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","StyleSheet","View","useVideoManager","VideoControls","VideoSurface","jsx","_jsx","jsxs","_jsxs","VideoPlayer","source","autoplay","surfaceId","controls","resizeMode","style","rest","manager","id","setSource","setResizeMode","styles","container","children","surface","create","backgroundColor","overflow","position","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["components/VideoPlayer.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,UAAU,EAAEC,IAAI,QAAwB,cAAc;AAC/D,SAASC,eAAe,QAAQ,6BAA0B;AAE1D,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["useEffect","StyleSheet","View","useVideoManager","VideoControls","VideoSurface","jsx","_jsx","jsxs","_jsxs","VideoPlayer","source","autoplay","surfaceId","controls","resizeMode","orientation","style","rest","manager","id","setSource","setResizeMode","setOrientation","styles","container","children","surface","create","backgroundColor","overflow","position","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["components/VideoPlayer.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,UAAU,EAAEC,IAAI,QAAwB,cAAc;AAC/D,SAASC,eAAe,QAAQ,6BAA0B;AAE1D,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAuB9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAC;EAC1BC,MAAM;EACNC,QAAQ,GAAG,IAAI;EACfC,SAAS;EACTC,QAAQ,GAAG,IAAI;EACfC,UAAU;EACVC,WAAW;EACXC,KAAK;EACL,GAAGC;AACa,CAAC,EAAE;EACnB,MAAMC,OAAO,GAAGhB,eAAe,CAAC,CAAC;EACjC,MAAMiB,EAAE,GAAGP,SAAS,IAAI,UAAUF,MAAM,CAACS,EAAE,EAAE;EAE7CpB,SAAS,CAAC,MAAM;IACdmB,OAAO,CAACE,SAAS,CAACV,MAAM,EAAE;MAAEC,QAAQ;MAAEC,SAAS,EAAEO;IAAG,CAAC,CAAC;IACtD;IACA;IACA;EACF,CAAC,EAAE,CAACD,OAAO,EAAER,MAAM,CAACS,EAAE,EAAEA,EAAE,CAAC,CAAC;EAE5BpB,SAAS,CAAC,MAAM;IACd,IAAIe,UAAU,EAAE;MACdI,OAAO,CAACG,aAAa,CAACP,UAAU,CAAC;IACnC;EACF,CAAC,EAAE,CAACI,OAAO,EAAEJ,UAAU,CAAC,CAAC;EAEzBf,SAAS,CAAC,MAAM;IACd,IAAI,CAACgB,WAAW,IAAIA,WAAW,KAAK,MAAM,EAAE;MAC1C;IACF;IACAG,OAAO,CAACI,cAAc,CAACP,WAAW,CAAC;IACnC,OAAO,MAAMG,OAAO,CAACI,cAAc,CAAC,MAAM,CAAC;EAC7C,CAAC,EAAE,CAACJ,OAAO,EAAEH,WAAW,CAAC,CAAC;EAE1B,oBACEP,KAAA,CAACP,IAAI;IAACe,KAAK,EAAE,CAACO,MAAM,CAACC,SAAS,EAAER,KAAK,CAAE;IAAA,GAAKC,IAAI;IAAAQ,QAAA,gBAC9CnB,IAAA,CAACF,YAAY;MAACQ,SAAS,EAAEO,EAAG;MAACH,KAAK,EAAEO,MAAM,CAACG;IAAQ,CAAE,CAAC,EACrDb,QAAQ,gBAAGP,IAAA,CAACH,aAAa,IAAE,CAAC,GAAG,IAAI;EAAA,CAChC,CAAC;AAEX;AAEA,MAAMoB,MAAM,GAAGvB,UAAU,CAAC2B,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,eAAe,EAAE,MAAM;IACvBC,QAAQ,EAAE;EACZ,CAAC;EACDH,OAAO,EAAE;IACPI,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -43,7 +43,8 @@ export class VideoManager {
|
|
|
43
43
|
config = {
|
|
44
44
|
fullscreenHost: true,
|
|
45
45
|
floatingHost: true,
|
|
46
|
-
pauseOnDetach: false
|
|
46
|
+
pauseOnDetach: false,
|
|
47
|
+
fullscreenOrientation: 'auto'
|
|
47
48
|
};
|
|
48
49
|
/** Last non-reserved surface, restored after fullscreen/floating exits. */
|
|
49
50
|
lastInlineSurfaceId = null;
|
|
@@ -271,6 +272,17 @@ export class VideoManager {
|
|
|
271
272
|
});
|
|
272
273
|
NativeAuVideo.setResizeMode(mode);
|
|
273
274
|
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Force a screen orientation (`'landscape'`, `'inverted-portrait'`, …),
|
|
278
|
+
* overriding the app's own lock until cleared with `'auto'`.
|
|
279
|
+
*/
|
|
280
|
+
setOrientation(lock) {
|
|
281
|
+
this.set({
|
|
282
|
+
orientationLock: lock
|
|
283
|
+
});
|
|
284
|
+
NativeAuVideo.setOrientation(lock);
|
|
285
|
+
}
|
|
274
286
|
async getPosition() {
|
|
275
287
|
return NativeAuVideo.getPosition();
|
|
276
288
|
}
|
|
@@ -334,6 +346,10 @@ export class VideoManager {
|
|
|
334
346
|
});
|
|
335
347
|
this.setMode('fullscreen');
|
|
336
348
|
NativeAuVideo.enterFullscreen();
|
|
349
|
+
const forced = this.config.fullscreenOrientation;
|
|
350
|
+
if (forced !== 'auto') {
|
|
351
|
+
NativeAuVideo.setOrientation(forced);
|
|
352
|
+
}
|
|
337
353
|
this.events.emit('onEnterFullscreen', undefined);
|
|
338
354
|
}
|
|
339
355
|
|
|
@@ -342,6 +358,10 @@ export class VideoManager {
|
|
|
342
358
|
if (!this.store.getState().fullscreen) {
|
|
343
359
|
return;
|
|
344
360
|
}
|
|
361
|
+
if (this.config.fullscreenOrientation !== 'auto') {
|
|
362
|
+
// Drop the fullscreen-only lock, restoring any explicit setOrientation.
|
|
363
|
+
NativeAuVideo.setOrientation(this.store.getState().orientationLock);
|
|
364
|
+
}
|
|
345
365
|
NativeAuVideo.exitFullscreen();
|
|
346
366
|
this.set({
|
|
347
367
|
fullscreen: false
|
|
@@ -424,6 +444,7 @@ export class VideoManager {
|
|
|
424
444
|
this.events.removeAll();
|
|
425
445
|
this.initialized = false;
|
|
426
446
|
this.lastInlineSurfaceId = null;
|
|
447
|
+
NativeAuVideo.setOrientation('auto');
|
|
427
448
|
NativeAuVideo.releasePlayer();
|
|
428
449
|
this.store.setState({
|
|
429
450
|
...initialVideoState
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeAuVideo","createVideoStore","initialVideoState","Emitter","FULLSCREEN_SURFACE_ID","FLOATING_SURFACE_ID","RESERVED_SURFACES","Set","toNativeSource","source","id","uri","headers","title","artist","artworkUri","startPosition","VideoManager","instance","shared","store","events","nativeSubscriptions","initialized","config","fullscreenHost","floatingHost","pauseOnDetach","lastInlineSurfaceId","constructor","providerConfig","init","nativeInit","subscribeNative","addListener","event","listener","subs","push","onStatusChange","e","applyStatus","status","onLoad","set","duration","videoWidth","width","videoHeight","height","loading","emit","videoId","onProgress","position","buffered","onSeek","onEnd","undefined","onError","error","playing","onAttach","onDetach","pause","onPipChange","pip","active","setMode","deriveMode","prev","getState","paused","buffering","setSource","options","autoplay","current","currentVideo","sameVideo","video","play","surfaceId","attach","preload","resume","toggle","stop","seek","clamped","Math","max","min","seekTo","seekBy","offset","setRate","rate","setVolume","volume","mute","muted","setMuted","unmute","setRepeat","repeat","setResizeMode","mode","resizeMode","getPosition","has","detach","handleSurfaceUnmount","state","enterFullscreen","fullscreen","floating","exitFullscreen","restoreInlineSurface","toggleFullscreen","showFloating","hideFloating","enterPiP","enterPip","exitPiP","exitPip","override","s","destroy","sub","remove","removeAll","releasePlayer","setState","partial"],"sourceRoot":"../../../src","sources":["core/VideoManager.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["NativeAuVideo","createVideoStore","initialVideoState","Emitter","FULLSCREEN_SURFACE_ID","FLOATING_SURFACE_ID","RESERVED_SURFACES","Set","toNativeSource","source","id","uri","headers","title","artist","artworkUri","startPosition","VideoManager","instance","shared","store","events","nativeSubscriptions","initialized","config","fullscreenHost","floatingHost","pauseOnDetach","fullscreenOrientation","lastInlineSurfaceId","constructor","providerConfig","init","nativeInit","subscribeNative","addListener","event","listener","subs","push","onStatusChange","e","applyStatus","status","onLoad","set","duration","videoWidth","width","videoHeight","height","loading","emit","videoId","onProgress","position","buffered","onSeek","onEnd","undefined","onError","error","playing","onAttach","onDetach","pause","onPipChange","pip","active","setMode","deriveMode","prev","getState","paused","buffering","setSource","options","autoplay","current","currentVideo","sameVideo","video","play","surfaceId","attach","preload","resume","toggle","stop","seek","clamped","Math","max","min","seekTo","seekBy","offset","setRate","rate","setVolume","volume","mute","muted","setMuted","unmute","setRepeat","repeat","setResizeMode","mode","resizeMode","setOrientation","lock","orientationLock","getPosition","has","detach","handleSurfaceUnmount","state","enterFullscreen","fullscreen","floating","forced","exitFullscreen","restoreInlineSurface","toggleFullscreen","showFloating","hideFloating","enterPiP","enterPip","exitPiP","exitPip","override","s","destroy","sub","remove","removeAll","releasePlayer","setState","partial"],"sourceRoot":"../../../src","sources":["core/VideoManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,14 +6,18 @@ import { usePlayback } from "./usePlayback.js";
|
|
|
6
6
|
export function useFullscreen() {
|
|
7
7
|
const manager = useVideoManager();
|
|
8
8
|
const isFullscreen = usePlayback(s => s.fullscreen);
|
|
9
|
+
const orientationLock = usePlayback(s => s.orientationLock);
|
|
9
10
|
const enter = useCallback(() => manager.enterFullscreen(), [manager]);
|
|
10
11
|
const exit = useCallback(() => manager.exitFullscreen(), [manager]);
|
|
11
12
|
const toggle = useCallback(() => manager.toggleFullscreen(), [manager]);
|
|
13
|
+
const setOrientation = useCallback(lock => manager.setOrientation(lock), [manager]);
|
|
12
14
|
return {
|
|
13
15
|
isFullscreen,
|
|
14
16
|
enter,
|
|
15
17
|
exit,
|
|
16
|
-
toggle
|
|
18
|
+
toggle,
|
|
19
|
+
orientationLock,
|
|
20
|
+
setOrientation
|
|
17
21
|
};
|
|
18
22
|
}
|
|
19
23
|
//# sourceMappingURL=useFullscreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useVideoManager","usePlayback","useFullscreen","manager","isFullscreen","s","fullscreen","enter","enterFullscreen","exit","exitFullscreen","toggle","toggleFullscreen"],"sourceRoot":"../../../src","sources":["hooks/useFullscreen.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,eAAe,QAAQ,6BAA0B;
|
|
1
|
+
{"version":3,"names":["useCallback","useVideoManager","usePlayback","useFullscreen","manager","isFullscreen","s","fullscreen","orientationLock","enter","enterFullscreen","exit","exitFullscreen","toggle","toggleFullscreen","setOrientation","lock"],"sourceRoot":"../../../src","sources":["hooks/useFullscreen.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,eAAe,QAAQ,6BAA0B;AAE1D,SAASC,WAAW,QAAQ,kBAAe;AAE3C,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAGH,eAAe,CAAC,CAAC;EACjC,MAAMI,YAAY,GAAGH,WAAW,CAAEI,CAAC,IAAKA,CAAC,CAACC,UAAU,CAAC;EACrD,MAAMC,eAAe,GAAGN,WAAW,CAAEI,CAAC,IAAKA,CAAC,CAACE,eAAe,CAAC;EAE7D,MAAMC,KAAK,GAAGT,WAAW,CAAC,MAAMI,OAAO,CAACM,eAAe,CAAC,CAAC,EAAE,CAACN,OAAO,CAAC,CAAC;EACrE,MAAMO,IAAI,GAAGX,WAAW,CAAC,MAAMI,OAAO,CAACQ,cAAc,CAAC,CAAC,EAAE,CAACR,OAAO,CAAC,CAAC;EACnE,MAAMS,MAAM,GAAGb,WAAW,CAAC,MAAMI,OAAO,CAACU,gBAAgB,CAAC,CAAC,EAAE,CAACV,OAAO,CAAC,CAAC;EACvE,MAAMW,cAAc,GAAGf,WAAW,CAC/BgB,IAAqB,IAAKZ,OAAO,CAACW,cAAc,CAACC,IAAI,CAAC,EACvD,CAACZ,OAAO,CACV,CAAC;EAED,OAAO;IAAEC,YAAY;IAAEI,KAAK;IAAEE,IAAI;IAAEE,MAAM;IAAEL,eAAe;IAAEO;EAAe,CAAC;AAC/E","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createStore","initialVideoState","currentVideo","status","playing","paused","buffering","loading","position","duration","buffered","rate","volume","muted","repeat","resizeMode","fullscreen","pip","floating","mode","surfaceId","videoWidth","videoHeight","error","createVideoStore"],"sourceRoot":"../../../src","sources":["state/createVideoStore.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAuB,iBAAiB;AAG5D,OAAO,MAAMC,iBAA6B,GAAG;EAC3CC,YAAY,EAAE,IAAI;EAClBC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAE,KAAK;EACdC,MAAM,EAAE,KAAK;EACbC,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAE,KAAK;EACdC,QAAQ,EAAE,CAAC;EACXC,QAAQ,EAAE,CAAC;EACXC,QAAQ,EAAE,CAAC;EACXC,IAAI,EAAE,CAAC;EACPC,MAAM,EAAE,CAAC;EACTC,KAAK,EAAE,KAAK;EACZC,MAAM,EAAE,KAAK;EACbC,UAAU,EAAE,SAAS;EACrBC,UAAU,EAAE,KAAK;EACjBC,GAAG,EAAE,KAAK;EACVC,QAAQ,EAAE,KAAK;EACfC,IAAI,EAAE,QAAQ;EACdC,SAAS,EAAE,IAAI;EACfC,UAAU,EAAE,CAAC;EACbC,WAAW,EAAE,CAAC;EACdC,KAAK,EAAE;AACT,CAAC;AAID,OAAO,SAASC,gBAAgBA,CAAA,EAAe;EAC7C,
|
|
1
|
+
{"version":3,"names":["createStore","initialVideoState","currentVideo","status","playing","paused","buffering","loading","position","duration","buffered","rate","volume","muted","repeat","resizeMode","orientationLock","fullscreen","pip","floating","mode","surfaceId","videoWidth","videoHeight","error","createVideoStore"],"sourceRoot":"../../../src","sources":["state/createVideoStore.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAuB,iBAAiB;AAG5D,OAAO,MAAMC,iBAA6B,GAAG;EAC3CC,YAAY,EAAE,IAAI;EAClBC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAE,KAAK;EACdC,MAAM,EAAE,KAAK;EACbC,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAE,KAAK;EACdC,QAAQ,EAAE,CAAC;EACXC,QAAQ,EAAE,CAAC;EACXC,QAAQ,EAAE,CAAC;EACXC,IAAI,EAAE,CAAC;EACPC,MAAM,EAAE,CAAC;EACTC,KAAK,EAAE,KAAK;EACZC,MAAM,EAAE,KAAK;EACbC,UAAU,EAAE,SAAS;EACrBC,eAAe,EAAE,MAAM;EACvBC,UAAU,EAAE,KAAK;EACjBC,GAAG,EAAE,KAAK;EACVC,QAAQ,EAAE,KAAK;EACfC,IAAI,EAAE,QAAQ;EACdC,SAAS,EAAE,IAAI;EACfC,UAAU,EAAE,CAAC;EACbC,WAAW,EAAE,CAAC;EACdC,KAAK,EAAE;AACT,CAAC;AAID,OAAO,SAASC,gBAAgBA,CAAA,EAAe;EAC7C,OAAOzB,WAAW,CAAa,CAAC,CAAC,OAAO;IAAE,GAAGC;EAAkB,CAAC,CAAC,CAAC;AACpE","ignoreList":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { type TurboModule
|
|
1
|
+
import { type TurboModule } from 'react-native';
|
|
2
|
+
import type { EventEmitter, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
|
|
2
3
|
export type NativeVideoSource = {
|
|
3
4
|
id: string;
|
|
4
5
|
uri: string;
|
|
5
6
|
/** HTTP headers, string -> string */
|
|
6
|
-
headers?:
|
|
7
|
+
headers?: UnsafeObject;
|
|
7
8
|
title?: string;
|
|
8
9
|
artist?: string;
|
|
9
10
|
artworkUri?: string;
|
|
@@ -65,20 +66,26 @@ export interface Spec extends TurboModule {
|
|
|
65
66
|
enterFullscreen(): void;
|
|
66
67
|
/** Restore the previous orientation lock. */
|
|
67
68
|
exitFullscreen(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Force a screen orientation, overriding the app's own lock and the
|
|
71
|
+
* fullscreen sensor unlock until cleared with 'auto'.
|
|
72
|
+
* auto | portrait | inverted-portrait | landscape | inverted-landscape
|
|
73
|
+
*/
|
|
74
|
+
setOrientation(orientation: string): void;
|
|
68
75
|
enterPip(): Promise<boolean>;
|
|
69
76
|
exitPip(): void;
|
|
70
77
|
getPosition(): Promise<number>;
|
|
71
78
|
/** Tear down the native player entirely. */
|
|
72
79
|
releasePlayer(): void;
|
|
73
|
-
readonly onStatusChange:
|
|
74
|
-
readonly onLoad:
|
|
75
|
-
readonly onProgress:
|
|
76
|
-
readonly onSeek:
|
|
77
|
-
readonly onEnd:
|
|
78
|
-
readonly onError:
|
|
79
|
-
readonly onAttach:
|
|
80
|
-
readonly onDetach:
|
|
81
|
-
readonly onPipChange:
|
|
80
|
+
readonly onStatusChange: EventEmitter<NativeStatusEvent>;
|
|
81
|
+
readonly onLoad: EventEmitter<NativeLoadEvent>;
|
|
82
|
+
readonly onProgress: EventEmitter<NativeProgressEvent>;
|
|
83
|
+
readonly onSeek: EventEmitter<NativeSeekEvent>;
|
|
84
|
+
readonly onEnd: EventEmitter<void>;
|
|
85
|
+
readonly onError: EventEmitter<NativeErrorEvent>;
|
|
86
|
+
readonly onAttach: EventEmitter<NativeSurfaceEvent>;
|
|
87
|
+
readonly onDetach: EventEmitter<NativeSurfaceEvent>;
|
|
88
|
+
readonly onPipChange: EventEmitter<NativePipEvent>;
|
|
82
89
|
}
|
|
83
90
|
declare const _default: Spec;
|
|
84
91
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAuVideo.d.ts","sourceRoot":"","sources":["../../../src/NativeAuVideo.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"NativeAuVideo.d.ts","sourceRoot":"","sources":["../../../src/NativeAuVideo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ViewProps } from 'react-native';
|
|
2
|
-
import type { ResizeMode, VideoSource } from '../types/video.js';
|
|
2
|
+
import type { OrientationLock, ResizeMode, VideoSource } from '../types/video.js';
|
|
3
3
|
export interface VideoPlayerProps extends ViewProps {
|
|
4
4
|
source: VideoSource;
|
|
5
5
|
/** Default true. */
|
|
@@ -13,6 +13,12 @@ export interface VideoPlayerProps extends ViewProps {
|
|
|
13
13
|
/** Show built-in controls. Default true. */
|
|
14
14
|
controls?: boolean;
|
|
15
15
|
resizeMode?: ResizeMode;
|
|
16
|
+
/**
|
|
17
|
+
* Force the screen into this orientation while the player is mounted:
|
|
18
|
+
* `'landscape'`, `'inverted-landscape'`, `'portrait'` or
|
|
19
|
+
* `'inverted-portrait'`. Released (back to `'auto'`) on unmount.
|
|
20
|
+
*/
|
|
21
|
+
orientation?: OrientationLock;
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* Convenience all-in-one player: `setSource` (same-video handoff aware) +
|
|
@@ -23,5 +29,5 @@ export interface VideoPlayerProps extends ViewProps {
|
|
|
23
29
|
* <VideoPlayer source={{ id: '123', uri }} style={{ aspectRatio: 16 / 9 }} />
|
|
24
30
|
* ```
|
|
25
31
|
*/
|
|
26
|
-
export declare function VideoPlayer({ source, autoplay, surfaceId, controls, resizeMode, style, ...rest }: VideoPlayerProps): import("react").JSX.Element;
|
|
32
|
+
export declare function VideoPlayer({ source, autoplay, surfaceId, controls, resizeMode, orientation, style, ...rest }: VideoPlayerProps): import("react").JSX.Element;
|
|
27
33
|
//# sourceMappingURL=VideoPlayer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../../../src/components/VideoPlayer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../../../src/components/VideoPlayer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAgB,CAAC;AAI/E,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,QAAe,EACf,SAAS,EACT,QAAe,EACf,UAAU,EACV,WAAW,EACX,KAAK,EACL,GAAG,IAAI,EACR,EAAE,gBAAgB,+BA+BlB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type VideoStore } from '../state/createVideoStore.js';
|
|
2
2
|
import type { VideoEventMap, VideoEventName } from '../types/events.js';
|
|
3
|
-
import type { ResizeMode, SetSourceOptions, VideoProviderConfig, VideoSource } from '../types/video.js';
|
|
3
|
+
import type { OrientationLock, ResizeMode, SetSourceOptions, VideoProviderConfig, VideoSource } from '../types/video.js';
|
|
4
4
|
import { type Listener, type Subscription } from '../utils/Emitter.js';
|
|
5
5
|
/** Surface id used by the built-in fullscreen host. */
|
|
6
6
|
export declare const FULLSCREEN_SURFACE_ID = "__au_fullscreen__";
|
|
@@ -55,6 +55,11 @@ export declare class VideoManager {
|
|
|
55
55
|
unmute(): void;
|
|
56
56
|
setRepeat(repeat: boolean): void;
|
|
57
57
|
setResizeMode(mode: ResizeMode): void;
|
|
58
|
+
/**
|
|
59
|
+
* Force a screen orientation (`'landscape'`, `'inverted-portrait'`, …),
|
|
60
|
+
* overriding the app's own lock until cleared with `'auto'`.
|
|
61
|
+
*/
|
|
62
|
+
setOrientation(lock: OrientationLock): void;
|
|
58
63
|
getPosition(): Promise<number>;
|
|
59
64
|
/** Re-parent the player into the surface registered under `surfaceId`. */
|
|
60
65
|
attach(surfaceId: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoManager.d.ts","sourceRoot":"","sources":["../../../../src/core/VideoManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,8BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAiB,CAAC;AACrE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"VideoManager.d.ts","sourceRoot":"","sources":["../../../../src/core/VideoManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import type { OrientationLock } from '../types/video.js';
|
|
1
2
|
export declare function useFullscreen(): {
|
|
2
3
|
isFullscreen: boolean;
|
|
3
4
|
enter: () => void;
|
|
4
5
|
exit: () => void;
|
|
5
6
|
toggle: () => void;
|
|
7
|
+
orientationLock: OrientationLock;
|
|
8
|
+
setOrientation: (lock: OrientationLock) => void;
|
|
6
9
|
};
|
|
7
10
|
//# sourceMappingURL=useFullscreen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFullscreen.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useFullscreen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFullscreen.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useFullscreen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAgB,CAAC;AAGtD,wBAAgB,aAAa;;;;;;2BASlB,eAAe;EAKzB"}
|
|
@@ -14,5 +14,5 @@ export { useFullscreen } from './hooks/useFullscreen.js';
|
|
|
14
14
|
export { usePiP } from './hooks/usePiP.js';
|
|
15
15
|
export { useVideoEvents, type VideoEventHandlers, } from './hooks/useVideoEvents.js';
|
|
16
16
|
export { formatTime } from './utils/formatTime.js';
|
|
17
|
-
export type { VideoSource, ResizeMode, PlayerMode, PlaybackStatus, VideoError, VideoState, SetSourceOptions, VideoProviderConfig, VideoEventMap, VideoEventName, } from './types/index.js';
|
|
17
|
+
export type { VideoSource, ResizeMode, OrientationLock, PlayerMode, PlaybackStatus, VideoError, VideoState, SetSourceOptions, VideoProviderConfig, VideoEventMap, VideoEventName, } from './types/index.js';
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,6BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAAyB,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAqB,CAAC;AAE7B,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,8BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA0B,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAA+B,CAAC;AACjE,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,gCAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAAyB,CAAC;AAC3E,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,+BAA4B,CAAC;AACpC,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,gCAA6B,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAAuB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAgB,CAAC;AACxC,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,2BAAwB,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAoB,CAAC;AAEhD,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,kBAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,6BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAAyB,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAqB,CAAC;AAE7B,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,8BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA0B,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAA+B,CAAC;AACjE,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,gCAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAAyB,CAAC;AAC3E,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,+BAA4B,CAAC;AACpC,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,gCAA6B,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAAuB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAgB,CAAC;AACxC,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,2BAAwB,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAoB,CAAC;AAEhD,YAAY,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,kBAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createVideoStore.d.ts","sourceRoot":"","sources":["../../../../src/state/createVideoStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAgB,CAAC;AAEjD,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"createVideoStore.d.ts","sourceRoot":"","sources":["../../../../src/state/createVideoStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAgB,CAAC;AAEjD,eAAO,MAAM,iBAAiB,EAAE,UAwB/B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAE9C,wBAAgB,gBAAgB,IAAI,UAAU,CAE7C"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { VideoSource, ResizeMode, PlayerMode, PlaybackStatus, VideoError, VideoState, SetSourceOptions, VideoProviderConfig, } from './video.js';
|
|
1
|
+
export type { VideoSource, ResizeMode, OrientationLock, PlayerMode, PlaybackStatus, VideoError, VideoState, SetSourceOptions, VideoProviderConfig, } from './video.js';
|
|
2
2
|
export type { VideoEventMap, VideoEventName } from './events.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAS,CAAC;AACjB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAS,CAAC;AACjB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAU,CAAC"}
|
|
@@ -14,6 +14,16 @@ export interface VideoSource {
|
|
|
14
14
|
startPosition?: number;
|
|
15
15
|
}
|
|
16
16
|
export type ResizeMode = 'contain' | 'cover' | 'stretch';
|
|
17
|
+
/**
|
|
18
|
+
* Forced screen orientation.
|
|
19
|
+
*
|
|
20
|
+
* - `auto` — no lock; the app's own orientation settings apply.
|
|
21
|
+
* - `landscape` / `inverted-landscape` — the two landscape rotations
|
|
22
|
+
* (inverted = rotated 180°).
|
|
23
|
+
* - `portrait` / `inverted-portrait` — upright and upside-down portrait.
|
|
24
|
+
* Note: iPhones without a home button ignore upside-down portrait.
|
|
25
|
+
*/
|
|
26
|
+
export type OrientationLock = 'auto' | 'portrait' | 'inverted-portrait' | 'landscape' | 'inverted-landscape';
|
|
17
27
|
export type PlayerMode = 'inline' | 'fullscreen' | 'floating' | 'pip' | 'background' | 'hidden';
|
|
18
28
|
export type PlaybackStatus = 'idle' | 'loading' | 'ready' | 'playing' | 'paused' | 'buffering' | 'ended' | 'error';
|
|
19
29
|
export interface VideoError {
|
|
@@ -38,6 +48,8 @@ export interface VideoState {
|
|
|
38
48
|
muted: boolean;
|
|
39
49
|
repeat: boolean;
|
|
40
50
|
resizeMode: ResizeMode;
|
|
51
|
+
/** Orientation forced via `setOrientation` (not the fullscreen unlock). */
|
|
52
|
+
orientationLock: OrientationLock;
|
|
41
53
|
fullscreen: boolean;
|
|
42
54
|
pip: boolean;
|
|
43
55
|
floating: boolean;
|
|
@@ -66,5 +78,11 @@ export interface VideoProviderConfig {
|
|
|
66
78
|
floatingHost?: boolean;
|
|
67
79
|
/** Pause playback when the active surface unmounts. Default false. */
|
|
68
80
|
pauseOnDetach?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Orientation to force while fullscreen is active, e.g. `'landscape'`.
|
|
83
|
+
* Restored to the previous lock (or `'auto'`) on exit.
|
|
84
|
+
* Default `'auto'` — fullscreen just unlocks the sensor.
|
|
85
|
+
*/
|
|
86
|
+
fullscreenOrientation?: OrientationLock;
|
|
69
87
|
}
|
|
70
88
|
//# sourceMappingURL=video.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../../src/types/video.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD,MAAM,MAAM,UAAU,GACpB,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,KAAK,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEzE,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,SAAS,GACT,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../../src/types/video.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,UAAU,GACV,mBAAmB,GACnB,WAAW,GACX,oBAAoB,CAAC;AAEzB,MAAM,MAAM,UAAU,GACpB,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,KAAK,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEzE,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,SAAS,GACT,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,2EAA2E;IAC3E,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,eAAe,CAAC;CACzC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-video-provider",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Singleton-engine video library for React Native (one native player, many surfaces)",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
package/src/NativeAuVideo.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { TurboModuleRegistry, type TurboModule } from 'react-native';
|
|
2
|
+
// Direct imports (not the `CodegenTypes.` namespace) so the spec parses on
|
|
3
|
+
// RN 0.79's codegen as well as 0.80+.
|
|
4
|
+
import type {
|
|
5
|
+
EventEmitter,
|
|
6
|
+
UnsafeObject,
|
|
7
|
+
} from 'react-native/Libraries/Types/CodegenTypes';
|
|
6
8
|
|
|
7
9
|
export type NativeVideoSource = {
|
|
8
10
|
id: string;
|
|
9
11
|
uri: string;
|
|
10
12
|
/** HTTP headers, string -> string */
|
|
11
|
-
headers?:
|
|
13
|
+
headers?: UnsafeObject;
|
|
12
14
|
title?: string;
|
|
13
15
|
artist?: string;
|
|
14
16
|
artworkUri?: string;
|
|
@@ -84,6 +86,13 @@ export interface Spec extends TurboModule {
|
|
|
84
86
|
/** Restore the previous orientation lock. */
|
|
85
87
|
exitFullscreen(): void;
|
|
86
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Force a screen orientation, overriding the app's own lock and the
|
|
91
|
+
* fullscreen sensor unlock until cleared with 'auto'.
|
|
92
|
+
* auto | portrait | inverted-portrait | landscape | inverted-landscape
|
|
93
|
+
*/
|
|
94
|
+
setOrientation(orientation: string): void;
|
|
95
|
+
|
|
87
96
|
enterPip(): Promise<boolean>;
|
|
88
97
|
exitPip(): void;
|
|
89
98
|
|
|
@@ -92,15 +101,15 @@ export interface Spec extends TurboModule {
|
|
|
92
101
|
/** Tear down the native player entirely. */
|
|
93
102
|
releasePlayer(): void;
|
|
94
103
|
|
|
95
|
-
readonly onStatusChange:
|
|
96
|
-
readonly onLoad:
|
|
97
|
-
readonly onProgress:
|
|
98
|
-
readonly onSeek:
|
|
99
|
-
readonly onEnd:
|
|
100
|
-
readonly onError:
|
|
101
|
-
readonly onAttach:
|
|
102
|
-
readonly onDetach:
|
|
103
|
-
readonly onPipChange:
|
|
104
|
+
readonly onStatusChange: EventEmitter<NativeStatusEvent>;
|
|
105
|
+
readonly onLoad: EventEmitter<NativeLoadEvent>;
|
|
106
|
+
readonly onProgress: EventEmitter<NativeProgressEvent>;
|
|
107
|
+
readonly onSeek: EventEmitter<NativeSeekEvent>;
|
|
108
|
+
readonly onEnd: EventEmitter<void>;
|
|
109
|
+
readonly onError: EventEmitter<NativeErrorEvent>;
|
|
110
|
+
readonly onAttach: EventEmitter<NativeSurfaceEvent>;
|
|
111
|
+
readonly onDetach: EventEmitter<NativeSurfaceEvent>;
|
|
112
|
+
readonly onPipChange: EventEmitter<NativePipEvent>;
|
|
104
113
|
}
|
|
105
114
|
|
|
106
115
|
export default TurboModuleRegistry.getEnforcing<Spec>('AuVideo');
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The TurboModule spec imports codegen types from the deep path
|
|
3
|
+
* 'react-native/Libraries/Types/CodegenTypes' so it parses on RN 0.79's
|
|
4
|
+
* codegen (which can't resolve the `CodegenTypes.` namespace style added in
|
|
5
|
+
* 0.80). This repo typechecks with the `react-native-strict-api` condition,
|
|
6
|
+
* which blocks deep Libraries/* type resolution — so alias the deep path to
|
|
7
|
+
* the public namespace here. Type-only; erased at build time.
|
|
8
|
+
*/
|
|
9
|
+
declare module 'react-native/Libraries/Types/CodegenTypes' {
|
|
10
|
+
import type { CodegenTypes } from 'react-native';
|
|
11
|
+
|
|
12
|
+
export type EventEmitter<T> = CodegenTypes.EventEmitter<T>;
|
|
13
|
+
export type UnsafeObject = CodegenTypes.UnsafeObject;
|
|
14
|
+
export type Int32 = CodegenTypes.Int32;
|
|
15
|
+
export type Float = CodegenTypes.Float;
|
|
16
|
+
export type Double = CodegenTypes.Double;
|
|
17
|
+
export type WithDefault<T, D> = CodegenTypes.WithDefault<T, D>;
|
|
18
|
+
export type DirectEventHandler<T> = CodegenTypes.DirectEventHandler<T>;
|
|
19
|
+
export type BubblingEventHandler<T> = CodegenTypes.BubblingEventHandler<T>;
|
|
20
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { StyleSheet, View, type ViewProps } from 'react-native';
|
|
3
3
|
import { useVideoManager } from '../provider/VideoContext';
|
|
4
|
-
import type { ResizeMode, VideoSource } from '../types/video';
|
|
4
|
+
import type { OrientationLock, ResizeMode, VideoSource } from '../types/video';
|
|
5
5
|
import { VideoControls } from './VideoControls';
|
|
6
6
|
import { VideoSurface } from './VideoSurface';
|
|
7
7
|
|
|
@@ -18,6 +18,12 @@ export interface VideoPlayerProps extends ViewProps {
|
|
|
18
18
|
/** Show built-in controls. Default true. */
|
|
19
19
|
controls?: boolean;
|
|
20
20
|
resizeMode?: ResizeMode;
|
|
21
|
+
/**
|
|
22
|
+
* Force the screen into this orientation while the player is mounted:
|
|
23
|
+
* `'landscape'`, `'inverted-landscape'`, `'portrait'` or
|
|
24
|
+
* `'inverted-portrait'`. Released (back to `'auto'`) on unmount.
|
|
25
|
+
*/
|
|
26
|
+
orientation?: OrientationLock;
|
|
21
27
|
}
|
|
22
28
|
|
|
23
29
|
/**
|
|
@@ -35,6 +41,7 @@ export function VideoPlayer({
|
|
|
35
41
|
surfaceId,
|
|
36
42
|
controls = true,
|
|
37
43
|
resizeMode,
|
|
44
|
+
orientation,
|
|
38
45
|
style,
|
|
39
46
|
...rest
|
|
40
47
|
}: VideoPlayerProps) {
|
|
@@ -54,6 +61,14 @@ export function VideoPlayer({
|
|
|
54
61
|
}
|
|
55
62
|
}, [manager, resizeMode]);
|
|
56
63
|
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
if (!orientation || orientation === 'auto') {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
manager.setOrientation(orientation);
|
|
69
|
+
return () => manager.setOrientation('auto');
|
|
70
|
+
}, [manager, orientation]);
|
|
71
|
+
|
|
57
72
|
return (
|
|
58
73
|
<View style={[styles.container, style]} {...rest}>
|
|
59
74
|
<VideoSurface surfaceId={id} style={styles.surface} />
|
package/src/core/VideoManager.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
} from '../state/createVideoStore';
|
|
8
8
|
import type { VideoEventMap, VideoEventName } from '../types/events';
|
|
9
9
|
import type {
|
|
10
|
+
OrientationLock,
|
|
10
11
|
PlaybackStatus,
|
|
11
12
|
PlayerMode,
|
|
12
13
|
ResizeMode,
|
|
@@ -62,6 +63,7 @@ export class VideoManager {
|
|
|
62
63
|
fullscreenHost: true,
|
|
63
64
|
floatingHost: true,
|
|
64
65
|
pauseOnDetach: false,
|
|
66
|
+
fullscreenOrientation: 'auto',
|
|
65
67
|
};
|
|
66
68
|
/** Last non-reserved surface, restored after fullscreen/floating exits. */
|
|
67
69
|
private lastInlineSurfaceId: string | null = null;
|
|
@@ -295,6 +297,15 @@ export class VideoManager {
|
|
|
295
297
|
NativeAuVideo.setResizeMode(mode);
|
|
296
298
|
}
|
|
297
299
|
|
|
300
|
+
/**
|
|
301
|
+
* Force a screen orientation (`'landscape'`, `'inverted-portrait'`, …),
|
|
302
|
+
* overriding the app's own lock until cleared with `'auto'`.
|
|
303
|
+
*/
|
|
304
|
+
setOrientation(lock: OrientationLock): void {
|
|
305
|
+
this.set({ orientationLock: lock });
|
|
306
|
+
NativeAuVideo.setOrientation(lock);
|
|
307
|
+
}
|
|
308
|
+
|
|
298
309
|
async getPosition(): Promise<number> {
|
|
299
310
|
return NativeAuVideo.getPosition();
|
|
300
311
|
}
|
|
@@ -349,6 +360,10 @@ export class VideoManager {
|
|
|
349
360
|
this.set({ fullscreen: true, floating: false });
|
|
350
361
|
this.setMode('fullscreen');
|
|
351
362
|
NativeAuVideo.enterFullscreen();
|
|
363
|
+
const forced = this.config.fullscreenOrientation;
|
|
364
|
+
if (forced !== 'auto') {
|
|
365
|
+
NativeAuVideo.setOrientation(forced);
|
|
366
|
+
}
|
|
352
367
|
this.events.emit('onEnterFullscreen', undefined);
|
|
353
368
|
}
|
|
354
369
|
|
|
@@ -357,6 +372,10 @@ export class VideoManager {
|
|
|
357
372
|
if (!this.store.getState().fullscreen) {
|
|
358
373
|
return;
|
|
359
374
|
}
|
|
375
|
+
if (this.config.fullscreenOrientation !== 'auto') {
|
|
376
|
+
// Drop the fullscreen-only lock, restoring any explicit setOrientation.
|
|
377
|
+
NativeAuVideo.setOrientation(this.store.getState().orientationLock);
|
|
378
|
+
}
|
|
360
379
|
NativeAuVideo.exitFullscreen();
|
|
361
380
|
this.set({ fullscreen: false });
|
|
362
381
|
this.events.emit('onExitFullscreen', undefined);
|
|
@@ -431,6 +450,7 @@ export class VideoManager {
|
|
|
431
450
|
this.events.removeAll();
|
|
432
451
|
this.initialized = false;
|
|
433
452
|
this.lastInlineSurfaceId = null;
|
|
453
|
+
NativeAuVideo.setOrientation('auto');
|
|
434
454
|
NativeAuVideo.releasePlayer();
|
|
435
455
|
this.store.setState({ ...initialVideoState }, true);
|
|
436
456
|
}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
2
|
import { useVideoManager } from '../provider/VideoContext';
|
|
3
|
+
import type { OrientationLock } from '../types/video';
|
|
3
4
|
import { usePlayback } from './usePlayback';
|
|
4
5
|
|
|
5
6
|
export function useFullscreen() {
|
|
6
7
|
const manager = useVideoManager();
|
|
7
8
|
const isFullscreen = usePlayback((s) => s.fullscreen);
|
|
9
|
+
const orientationLock = usePlayback((s) => s.orientationLock);
|
|
8
10
|
|
|
9
11
|
const enter = useCallback(() => manager.enterFullscreen(), [manager]);
|
|
10
12
|
const exit = useCallback(() => manager.exitFullscreen(), [manager]);
|
|
11
13
|
const toggle = useCallback(() => manager.toggleFullscreen(), [manager]);
|
|
14
|
+
const setOrientation = useCallback(
|
|
15
|
+
(lock: OrientationLock) => manager.setOrientation(lock),
|
|
16
|
+
[manager]
|
|
17
|
+
);
|
|
12
18
|
|
|
13
|
-
return { isFullscreen, enter, exit, toggle };
|
|
19
|
+
return { isFullscreen, enter, exit, toggle, orientationLock, setOrientation };
|
|
14
20
|
}
|
package/src/index.ts
CHANGED
package/src/types/index.ts
CHANGED
package/src/types/video.ts
CHANGED
|
@@ -16,6 +16,22 @@ export interface VideoSource {
|
|
|
16
16
|
|
|
17
17
|
export type ResizeMode = 'contain' | 'cover' | 'stretch';
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Forced screen orientation.
|
|
21
|
+
*
|
|
22
|
+
* - `auto` — no lock; the app's own orientation settings apply.
|
|
23
|
+
* - `landscape` / `inverted-landscape` — the two landscape rotations
|
|
24
|
+
* (inverted = rotated 180°).
|
|
25
|
+
* - `portrait` / `inverted-portrait` — upright and upside-down portrait.
|
|
26
|
+
* Note: iPhones without a home button ignore upside-down portrait.
|
|
27
|
+
*/
|
|
28
|
+
export type OrientationLock =
|
|
29
|
+
| 'auto'
|
|
30
|
+
| 'portrait'
|
|
31
|
+
| 'inverted-portrait'
|
|
32
|
+
| 'landscape'
|
|
33
|
+
| 'inverted-landscape';
|
|
34
|
+
|
|
19
35
|
export type PlayerMode =
|
|
20
36
|
'inline' | 'fullscreen' | 'floating' | 'pip' | 'background' | 'hidden';
|
|
21
37
|
|
|
@@ -52,6 +68,8 @@ export interface VideoState {
|
|
|
52
68
|
muted: boolean;
|
|
53
69
|
repeat: boolean;
|
|
54
70
|
resizeMode: ResizeMode;
|
|
71
|
+
/** Orientation forced via `setOrientation` (not the fullscreen unlock). */
|
|
72
|
+
orientationLock: OrientationLock;
|
|
55
73
|
fullscreen: boolean;
|
|
56
74
|
pip: boolean;
|
|
57
75
|
floating: boolean;
|
|
@@ -82,4 +100,10 @@ export interface VideoProviderConfig {
|
|
|
82
100
|
floatingHost?: boolean;
|
|
83
101
|
/** Pause playback when the active surface unmounts. Default false. */
|
|
84
102
|
pauseOnDetach?: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Orientation to force while fullscreen is active, e.g. `'landscape'`.
|
|
105
|
+
* Restored to the previous lock (or `'auto'`) on exit.
|
|
106
|
+
* Default `'auto'` — fullscreen just unlocks the sensor.
|
|
107
|
+
*/
|
|
108
|
+
fullscreenOrientation?: OrientationLock;
|
|
85
109
|
}
|