react-native-video-provider 0.2.0 → 0.2.2
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 +18 -7
- package/android/src/main/java/com/auvideo/AuVideoModule.kt +15 -10
- package/ios/AuVideo.mm +4 -4
- package/ios/AuVideoOrientation.swift +31 -14
- package/lib/module/NativeAuVideo.js.map +1 -1
- package/lib/module/components/FloatingPlayer.js +8 -11
- package/lib/module/components/FloatingPlayer.js.map +1 -1
- package/lib/module/components/MiniPlayer.js +10 -10
- package/lib/module/components/MiniPlayer.js.map +1 -1
- package/lib/module/components/SvgIcons.js +163 -0
- package/lib/module/components/SvgIcons.js.map +1 -0
- package/lib/module/components/VideoControls.js +36 -15
- package/lib/module/components/VideoControls.js.map +1 -1
- package/lib/module/components/VideoPlayer.js +8 -0
- package/lib/module/components/VideoPlayer.js.map +1 -1
- package/lib/module/components/icons.js +164 -0
- package/lib/module/components/icons.js.map +1 -0
- package/lib/module/core/VideoManager.js +40 -18
- package/lib/module/core/VideoManager.js.map +1 -1
- package/lib/module/hooks/useFullscreen.js +2 -2
- package/lib/module/hooks/useFullscreen.js.map +1 -1
- package/lib/typescript/src/NativeAuVideo.d.ts +8 -4
- package/lib/typescript/src/NativeAuVideo.d.ts.map +1 -1
- package/lib/typescript/src/components/MiniPlayer.d.ts.map +1 -1
- package/lib/typescript/src/components/SvgIcons.d.ts +8 -0
- package/lib/typescript/src/components/SvgIcons.d.ts.map +1 -0
- package/lib/typescript/src/components/VideoControls.d.ts.map +1 -1
- package/lib/typescript/src/components/VideoPlayer.d.ts +8 -1
- package/lib/typescript/src/components/VideoPlayer.d.ts.map +1 -1
- package/lib/typescript/src/components/icons.d.ts +13 -0
- package/lib/typescript/src/components/icons.d.ts.map +1 -0
- package/lib/typescript/src/core/VideoManager.d.ts +20 -5
- package/lib/typescript/src/core/VideoManager.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useFullscreen.d.ts +2 -2
- package/lib/typescript/src/hooks/useFullscreen.d.ts.map +1 -1
- package/lib/typescript/src/types/video.d.ts +0 -6
- package/lib/typescript/src/types/video.d.ts.map +1 -1
- package/package.json +4 -2
- package/src/NativeAuVideo.ts +8 -4
- package/src/components/FloatingPlayer.tsx +3 -7
- package/src/components/MiniPlayer.tsx +7 -6
- package/src/components/SvgIcons.tsx +169 -0
- package/src/components/VideoControls.tsx +30 -10
- package/src/components/VideoPlayer.tsx +16 -0
- package/src/components/icons.tsx +117 -0
- package/src/core/VideoManager.ts +51 -17
- package/src/hooks/useFullscreen.ts +8 -2
- package/src/types/video.ts +0 -6
package/README.md
CHANGED
|
@@ -83,20 +83,31 @@ player.showFloating(); // draggable in-app window
|
|
|
83
83
|
player.enterPiP(); // system picture-in-picture
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
**5. Force an orientation** —
|
|
87
|
-
|
|
86
|
+
**5. Force an orientation** — values: `'auto' | 'portrait' |
|
|
87
|
+
'inverted-portrait' | 'landscape' | 'inverted-landscape'`.
|
|
88
|
+
|
|
89
|
+
Scoped to fullscreen (applied when fullscreen opens, restored when it
|
|
90
|
+
closes — the rest of the app is unaffected):
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
// This player's fullscreen (incl. the built-in controls' button) locks to
|
|
94
|
+
// portrait — e.g. a vertical video:
|
|
95
|
+
<VideoPlayer source={video} fullscreenOrientation="portrait" />
|
|
96
|
+
|
|
97
|
+
// Or per call:
|
|
98
|
+
const { enter, toggle } = useFullscreen();
|
|
99
|
+
enter('landscape');
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Or as a standing lock, independent of fullscreen:
|
|
88
103
|
|
|
89
104
|
```tsx
|
|
90
105
|
// While this player is mounted (released on unmount):
|
|
91
106
|
<VideoPlayer source={video} orientation="landscape" />
|
|
92
107
|
|
|
93
|
-
// Imperative
|
|
94
|
-
// | 'landscape' | 'inverted-landscape'
|
|
108
|
+
// Imperative:
|
|
95
109
|
player.setOrientation('inverted-landscape');
|
|
96
110
|
player.setOrientation('auto'); // release
|
|
97
|
-
|
|
98
|
-
// Always go landscape in the built-in fullscreen host:
|
|
99
|
-
<VideoProvider config={{ fullscreenOrientation: 'landscape' }}>
|
|
100
111
|
```
|
|
101
112
|
|
|
102
113
|
On iOS this needs the AppDelegate forwarding shown in
|
|
@@ -135,19 +135,21 @@ class AuVideoModule(reactContext: ReactApplicationContext) :
|
|
|
135
135
|
|
|
136
136
|
// ---------------------------------------------------------- orientation
|
|
137
137
|
|
|
138
|
+
private fun parseOrientation(orientation: String): Int? = when (orientation) {
|
|
139
|
+
"portrait" -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
|
140
|
+
"inverted-portrait" -> ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
|
|
141
|
+
"landscape" -> ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
|
|
142
|
+
"inverted-landscape" -> ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
|
|
143
|
+
else -> null // "auto"
|
|
144
|
+
}
|
|
145
|
+
|
|
138
146
|
override fun setOrientation(orientation: String) {
|
|
139
147
|
UiThreadUtil.runOnUiThread {
|
|
140
148
|
val activity = currentActivity ?: return@runOnUiThread
|
|
141
149
|
if (previousOrientation == null) {
|
|
142
150
|
previousOrientation = activity.requestedOrientation
|
|
143
151
|
}
|
|
144
|
-
lockedOrientation =
|
|
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
|
-
}
|
|
152
|
+
lockedOrientation = parseOrientation(orientation)
|
|
151
153
|
applyOrientation(activity)
|
|
152
154
|
}
|
|
153
155
|
}
|
|
@@ -170,15 +172,17 @@ class AuVideoModule(reactContext: ReactApplicationContext) :
|
|
|
170
172
|
|
|
171
173
|
// ----------------------------------------------------------- fullscreen
|
|
172
174
|
|
|
173
|
-
override fun enterFullscreen() {
|
|
175
|
+
override fun enterFullscreen(orientation: String) {
|
|
174
176
|
UiThreadUtil.runOnUiThread {
|
|
175
177
|
val activity = currentActivity ?: return@runOnUiThread
|
|
176
178
|
if (previousOrientation == null) {
|
|
177
179
|
previousOrientation = activity.requestedOrientation
|
|
178
180
|
}
|
|
179
181
|
// Unlock rotation while fullscreen is visible, even in portrait-locked
|
|
180
|
-
// apps — unless
|
|
182
|
+
// apps — unless `orientation` locks it, applied in this same call so
|
|
183
|
+
// there's no unlocked frame before the lock takes effect.
|
|
181
184
|
fullscreenActive = true
|
|
185
|
+
lockedOrientation = parseOrientation(orientation)
|
|
182
186
|
applyOrientation(activity)
|
|
183
187
|
|
|
184
188
|
val window = activity.window
|
|
@@ -191,10 +195,11 @@ class AuVideoModule(reactContext: ReactApplicationContext) :
|
|
|
191
195
|
}
|
|
192
196
|
}
|
|
193
197
|
|
|
194
|
-
override fun exitFullscreen() {
|
|
198
|
+
override fun exitFullscreen(orientation: String) {
|
|
195
199
|
UiThreadUtil.runOnUiThread {
|
|
196
200
|
val activity = currentActivity ?: return@runOnUiThread
|
|
197
201
|
fullscreenActive = false
|
|
202
|
+
lockedOrientation = parseOrientation(orientation)
|
|
198
203
|
applyOrientation(activity)
|
|
199
204
|
|
|
200
205
|
val window = activity.window
|
package/ios/AuVideo.mm
CHANGED
|
@@ -149,14 +149,14 @@ static AuVideoSourceSpec *AuVideoParseSource(NativeVideoSource &source)
|
|
|
149
149
|
|
|
150
150
|
#pragma mark - Fullscreen
|
|
151
151
|
|
|
152
|
-
- (void)enterFullscreen
|
|
152
|
+
- (void)enterFullscreen:(NSString *)orientation
|
|
153
153
|
{
|
|
154
|
-
dispatch_async(dispatch_get_main_queue(), ^{ [AuVideoOrientation
|
|
154
|
+
dispatch_async(dispatch_get_main_queue(), ^{ [AuVideoOrientation enterFullscreen:orientation]; });
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
- (void)exitFullscreen
|
|
157
|
+
- (void)exitFullscreen:(NSString *)orientation
|
|
158
158
|
{
|
|
159
|
-
dispatch_async(dispatch_get_main_queue(), ^{ [AuVideoOrientation
|
|
159
|
+
dispatch_async(dispatch_get_main_queue(), ^{ [AuVideoOrientation exitFullscreen:orientation]; });
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
- (void)setOrientation:(NSString *)orientation
|
|
@@ -22,8 +22,8 @@ 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
|
|
26
|
-
///
|
|
25
|
+
/// Explicit lock. Empty = no lock. Wins over both the app default and the
|
|
26
|
+
/// fullscreen unlock.
|
|
27
27
|
@objc public private(set) static var lockMask: UIInterfaceOrientationMask = []
|
|
28
28
|
|
|
29
29
|
/// Call from AppDelegate's supportedInterfaceOrientationsFor.
|
|
@@ -37,33 +37,50 @@ public final class AuVideoOrientation: NSObject {
|
|
|
37
37
|
return isFullscreenActive ? fullscreenMask : defaultMask
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
/// Enter fullscreen and apply `orientation` in the same call — never as a
|
|
41
|
+
/// separate follow-up — so there is no unlocked frame where the sensor
|
|
42
|
+
/// could win before the lock takes effect.
|
|
43
|
+
/// Values: auto | portrait | inverted-portrait | landscape | inverted-landscape
|
|
44
|
+
@objc(enterFullscreen:)
|
|
45
|
+
public static func enterFullscreen(_ orientation: String) {
|
|
46
|
+
isFullscreenActive = true
|
|
47
|
+
lockMask = maskFor(orientation)
|
|
43
48
|
applyCurrent()
|
|
44
49
|
}
|
|
45
50
|
|
|
46
|
-
///
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
/// Exit fullscreen, restoring `orientation` atomically (same value semantics).
|
|
52
|
+
@objc(exitFullscreen:)
|
|
53
|
+
public static func exitFullscreen(_ orientation: String) {
|
|
54
|
+
isFullscreenActive = false
|
|
55
|
+
lockMask = maskFor(orientation)
|
|
56
|
+
applyCurrent()
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/// Force a screen orientation until cleared with "auto", independent of
|
|
60
|
+
/// fullscreen. (Upside-down portrait is ignored on iPhones without a home
|
|
61
|
+
/// button.)
|
|
49
62
|
@objc(setOrientation:)
|
|
50
63
|
public static func setOrientation(_ orientation: String) {
|
|
64
|
+
lockMask = maskFor(orientation)
|
|
65
|
+
applyCurrent()
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private static func maskFor(_ orientation: String) -> UIInterfaceOrientationMask {
|
|
51
69
|
// "landscape" = device top pointing left (interface landscapeRight),
|
|
52
70
|
// matching Android's SCREEN_ORIENTATION_LANDSCAPE; "inverted-" is the
|
|
53
71
|
// 180° rotation of each.
|
|
54
72
|
switch orientation {
|
|
55
73
|
case "portrait":
|
|
56
|
-
|
|
74
|
+
return .portrait
|
|
57
75
|
case "inverted-portrait":
|
|
58
|
-
|
|
76
|
+
return .portraitUpsideDown
|
|
59
77
|
case "landscape":
|
|
60
|
-
|
|
78
|
+
return .landscapeRight
|
|
61
79
|
case "inverted-landscape":
|
|
62
|
-
|
|
80
|
+
return .landscapeLeft
|
|
63
81
|
default:
|
|
64
|
-
|
|
82
|
+
return []
|
|
65
83
|
}
|
|
66
|
-
applyCurrent()
|
|
67
84
|
}
|
|
68
85
|
|
|
69
86
|
/// Re-query supported orientations and rotate to whatever now applies:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAuVideo.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AACpE;AACA;;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAuVideo.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AACpE;AACA;;AAoHA,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useRef } from 'react';
|
|
4
|
-
import { Animated, PanResponder, Pressable, StyleSheet,
|
|
4
|
+
import { Animated, PanResponder, Pressable, StyleSheet, useWindowDimensions } from 'react-native';
|
|
5
5
|
import { FLOATING_SURFACE_ID } from "../core/VideoManager.js";
|
|
6
6
|
import { usePlayback } from "../hooks/usePlayback.js";
|
|
7
7
|
import { useVideoManager } from "../provider/VideoContext.js";
|
|
8
|
+
import { CloseIcon, EnterFullscreenIcon } from "./icons.js";
|
|
8
9
|
import { VideoSurface } from "./VideoSurface.js";
|
|
9
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
11
|
/**
|
|
@@ -57,9 +58,9 @@ export function FloatingPlayer({
|
|
|
57
58
|
style: [styles.button, styles.closeButton],
|
|
58
59
|
hitSlop: 8,
|
|
59
60
|
onPress: () => manager.hideFloating(),
|
|
60
|
-
children: /*#__PURE__*/_jsx(
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
children: /*#__PURE__*/_jsx(CloseIcon, {
|
|
62
|
+
size: 12,
|
|
63
|
+
color: "#fff"
|
|
63
64
|
})
|
|
64
65
|
}), /*#__PURE__*/_jsx(Pressable, {
|
|
65
66
|
style: [styles.button, styles.expandButton],
|
|
@@ -68,9 +69,9 @@ export function FloatingPlayer({
|
|
|
68
69
|
manager.hideFloating();
|
|
69
70
|
manager.enterFullscreen();
|
|
70
71
|
},
|
|
71
|
-
children: /*#__PURE__*/_jsx(
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
children: /*#__PURE__*/_jsx(EnterFullscreenIcon, {
|
|
73
|
+
size: 12,
|
|
74
|
+
color: "#fff"
|
|
74
75
|
})
|
|
75
76
|
})]
|
|
76
77
|
});
|
|
@@ -110,10 +111,6 @@ const styles = StyleSheet.create({
|
|
|
110
111
|
},
|
|
111
112
|
expandButton: {
|
|
112
113
|
left: 4
|
|
113
|
-
},
|
|
114
|
-
icon: {
|
|
115
|
-
color: '#fff',
|
|
116
|
-
fontSize: 12
|
|
117
114
|
}
|
|
118
115
|
});
|
|
119
116
|
//# sourceMappingURL=FloatingPlayer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","Animated","PanResponder","Pressable","StyleSheet","
|
|
1
|
+
{"version":3,"names":["useRef","Animated","PanResponder","Pressable","StyleSheet","useWindowDimensions","FLOATING_SURFACE_ID","usePlayback","useVideoManager","CloseIcon","EnterFullscreenIcon","VideoSurface","jsx","_jsx","jsxs","_jsxs","FloatingPlayer","width","manager","floating","s","screen","height","pan","ValueXY","x","y","current","responder","create","onMoveShouldSetPanResponder","_e","g","Math","abs","dx","dy","onPanResponderGrant","extractOffset","onPanResponderMove","event","useNativeDriver","onPanResponderRelease","flattenOffset","View","style","styles","window","transform","getTranslateTransform","panHandlers","children","surfaceId","autoAttach","surface","button","closeButton","hitSlop","onPress","hideFloating","size","color","expandButton","enterFullscreen","position","top","left","borderRadius","overflow","backgroundColor","elevation","shadowColor","shadowOpacity","shadowRadius","shadowOffset","flex","alignItems","justifyContent","right"],"sourceRoot":"../../../src","sources":["components/FloatingPlayer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { Pressable, StyleSheet, Text, View } from 'react-native';
|
|
4
4
|
import { usePlayback } from "../hooks/usePlayback.js";
|
|
5
5
|
import { useVideoManager } from "../provider/VideoContext.js";
|
|
6
|
+
import { CloseIcon, PauseIcon, PlayIcon } from "./icons.js";
|
|
6
7
|
import { VideoSurface } from "./VideoSurface.js";
|
|
7
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
9
|
/**
|
|
@@ -38,17 +39,20 @@ export function MiniPlayer({
|
|
|
38
39
|
style: styles.button,
|
|
39
40
|
hitSlop: 8,
|
|
40
41
|
onPress: () => manager.toggle(),
|
|
41
|
-
children: /*#__PURE__*/_jsx(
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
children: playing ? /*#__PURE__*/_jsx(PauseIcon, {
|
|
43
|
+
size: 16,
|
|
44
|
+
color: "#fff"
|
|
45
|
+
}) : /*#__PURE__*/_jsx(PlayIcon, {
|
|
46
|
+
size: 16,
|
|
47
|
+
color: "#fff"
|
|
44
48
|
})
|
|
45
49
|
}), onClose ? /*#__PURE__*/_jsx(Pressable, {
|
|
46
50
|
style: styles.button,
|
|
47
51
|
hitSlop: 8,
|
|
48
52
|
onPress: onClose,
|
|
49
|
-
children: /*#__PURE__*/_jsx(
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
children: /*#__PURE__*/_jsx(CloseIcon, {
|
|
54
|
+
size: 16,
|
|
55
|
+
color: "#fff"
|
|
52
56
|
})
|
|
53
57
|
}) : null]
|
|
54
58
|
});
|
|
@@ -80,10 +84,6 @@ const styles = StyleSheet.create({
|
|
|
80
84
|
button: {
|
|
81
85
|
paddingHorizontal: 10,
|
|
82
86
|
paddingVertical: 8
|
|
83
|
-
},
|
|
84
|
-
icon: {
|
|
85
|
-
color: '#fff',
|
|
86
|
-
fontSize: 16
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
89
|
//# sourceMappingURL=MiniPlayer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Pressable","StyleSheet","Text","View","usePlayback","useVideoManager","VideoSurface","jsx","_jsx","jsxs","_jsxs","MiniPlayer","surfaceId","onPress","onClose","style","rest","manager","playing","s","title","currentVideo","styles","bar","children","body","thumb","numberOfLines","button","hitSlop","toggle","
|
|
1
|
+
{"version":3,"names":["Pressable","StyleSheet","Text","View","usePlayback","useVideoManager","CloseIcon","PauseIcon","PlayIcon","VideoSurface","jsx","_jsx","jsxs","_jsxs","MiniPlayer","surfaceId","onPress","onClose","style","rest","manager","playing","s","title","currentVideo","styles","bar","children","body","thumb","numberOfLines","button","hitSlop","toggle","size","color","create","flexDirection","alignItems","backgroundColor","height","paddingRight","flex","gap","width","fontSize","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../src","sources":["components/MiniPlayer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Svg, { G, Path } from 'react-native-svg';
|
|
4
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
+
const SvgIcons = ({
|
|
6
|
+
icon,
|
|
7
|
+
type,
|
|
8
|
+
fill,
|
|
9
|
+
size = 24
|
|
10
|
+
}) => {
|
|
11
|
+
switch (icon) {
|
|
12
|
+
case 'fullScreen':
|
|
13
|
+
return type === 'full' ? /*#__PURE__*/_jsxs(Svg, {
|
|
14
|
+
width: size,
|
|
15
|
+
height: size,
|
|
16
|
+
viewBox: "0 0 24 24",
|
|
17
|
+
fill: "none",
|
|
18
|
+
children: [/*#__PURE__*/_jsx(G, {
|
|
19
|
+
id: "SVGRepo_bgCarrier",
|
|
20
|
+
strokeWidth: 0
|
|
21
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
22
|
+
id: "SVGRepo_tracerCarrier",
|
|
23
|
+
strokeLinecap: "round",
|
|
24
|
+
strokeLinejoin: "round"
|
|
25
|
+
}), /*#__PURE__*/_jsxs(G, {
|
|
26
|
+
id: "SVGRepo_iconCarrier",
|
|
27
|
+
children: [/*#__PURE__*/_jsx(Path, {
|
|
28
|
+
d: "M4 1.5C2.61929 1.5 1.5 2.61929 1.5 4V8.5C1.5 9.05228 1.94772 9.5 2.5 9.5H3.5C4.05228 9.5 4.5 9.05228 4.5 8.5V4.5H8.5C9.05228 4.5 9.5 4.05228 9.5 3.5V2.5C9.5 1.94772 9.05228 1.5 8.5 1.5H4Z",
|
|
29
|
+
fill: fill || '#fff'
|
|
30
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
31
|
+
d: "M20 1.5C21.3807 1.5 22.5 2.61929 22.5 4V8.5C22.5 9.05228 22.0523 9.5 21.5 9.5H20.5C19.9477 9.5 19.5 9.05228 19.5 8.5V4.5H15.5C14.9477 4.5 14.5 4.05228 14.5 3.5V2.5C14.5 1.94772 14.9477 1.5 15.5 1.5H20Z",
|
|
32
|
+
fill: fill || '#fff'
|
|
33
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
34
|
+
d: "M20 22.5C21.3807 22.5 22.5 21.3807 22.5 20V15.5C22.5 14.9477 22.0523 14.5 21.5 14.5H20.5C19.9477 14.5 19.5 14.9477 19.5 15.5V19.5H15.5C14.9477 19.5 14.5 19.9477 14.5 20.5V21.5C14.5 22.0523 14.9477 22.5 15.5 22.5H20Z",
|
|
35
|
+
fill: fill || '#fff'
|
|
36
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
37
|
+
d: "M1.5 20C1.5 21.3807 2.61929 22.5 4 22.5H8.5C9.05228 22.5 9.5 22.0523 9.5 21.5V20.5C9.5 19.9477 9.05228 19.5 8.5 19.5H4.5V15.5C4.5 14.9477 4.05228 14.5 3.5 14.5H2.5C1.94772 14.5 1.5 14.9477 1.5 15.5V20Z",
|
|
38
|
+
fill: fill || '#fff'
|
|
39
|
+
})]
|
|
40
|
+
})]
|
|
41
|
+
}) : /*#__PURE__*/_jsxs(Svg, {
|
|
42
|
+
width: size,
|
|
43
|
+
height: size,
|
|
44
|
+
viewBox: "0 0 24 24",
|
|
45
|
+
fill: "none",
|
|
46
|
+
children: [/*#__PURE__*/_jsx(G, {
|
|
47
|
+
id: "SVGRepo_bgCarrier",
|
|
48
|
+
strokeWidth: 0
|
|
49
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
50
|
+
id: "SVGRepo_tracerCarrier",
|
|
51
|
+
strokeLinecap: "round",
|
|
52
|
+
strokeLinejoin: "round"
|
|
53
|
+
}), /*#__PURE__*/_jsxs(G, {
|
|
54
|
+
id: "SVGRepo_iconCarrier",
|
|
55
|
+
children: [/*#__PURE__*/_jsx(Path, {
|
|
56
|
+
d: "M7 9.5C8.38071 9.5 9.5 8.38071 9.5 7V2.5C9.5 1.94772 9.05228 1.5 8.5 1.5H7.5C6.94772 1.5 6.5 1.94772 6.5 2.5V6.5H2.5C1.94772 6.5 1.5 6.94772 1.5 7.5V8.5C1.5 9.05228 1.94772 9.5 2.5 9.5H7Z",
|
|
57
|
+
fill: fill || '#fff'
|
|
58
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
59
|
+
d: "M17 9.5C15.6193 9.5 14.5 8.38071 14.5 7V2.5C14.5 1.94772 14.9477 1.5 15.5 1.5H16.5C17.0523 1.5 17.5 1.94772 17.5 2.5V6.5H21.5C22.0523 6.5 22.5 6.94772 22.5 7.5V8.5C22.5 9.05228 22.0523 9.5 21.5 9.5H17Z",
|
|
60
|
+
fill: fill || '#fff'
|
|
61
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
62
|
+
d: "M17 14.5C15.6193 14.5 14.5 15.6193 14.5 17V21.5C14.5 22.0523 14.9477 22.5 15.5 22.5H16.5C17.0523 22.5 17.5 22.0523 17.5 21.5V17.5H21.5C22.0523 17.5 22.5 17.0523 22.5 16.5V15.5C22.5 14.9477 22.0523 14.5 21.5 14.5H17Z",
|
|
63
|
+
fill: fill || '#fff'
|
|
64
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
65
|
+
d: "M9.5 17C9.5 15.6193 8.38071 14.5 7 14.5H2.5C1.94772 14.5 1.5 14.9477 1.5 15.5V16.5C1.5 17.0523 1.94772 17.5 2.5 17.5H6.5V21.5C6.5 22.0523 6.94772 22.5 7.5 22.5H8.5C9.05228 22.5 9.5 22.0523 9.5 21.5V17Z",
|
|
66
|
+
fill: fill || '#fff'
|
|
67
|
+
})]
|
|
68
|
+
})]
|
|
69
|
+
});
|
|
70
|
+
case 'muteUnmute':
|
|
71
|
+
return type === 'mute' ? /*#__PURE__*/_jsxs(Svg, {
|
|
72
|
+
fill: fill || '#000000',
|
|
73
|
+
viewBox: "0 0 24 24",
|
|
74
|
+
width: size || 24,
|
|
75
|
+
height: size || 24,
|
|
76
|
+
children: [/*#__PURE__*/_jsx(G, {
|
|
77
|
+
id: "SVGRepo_bgCarrier",
|
|
78
|
+
strokeWidth: 0
|
|
79
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
80
|
+
id: "SVGRepo_tracerCarrier",
|
|
81
|
+
strokeLinecap: "round",
|
|
82
|
+
strokeLinejoin: "round"
|
|
83
|
+
}), /*#__PURE__*/_jsxs(G, {
|
|
84
|
+
id: "SVGRepo_iconCarrier",
|
|
85
|
+
children: [/*#__PURE__*/_jsx(Path, {
|
|
86
|
+
fillRule: "evenodd",
|
|
87
|
+
d: "M11.553 3.064A.75.75 0 0112 3.75v16.5a.75.75 0 01-1.255.555L5.46 16H2.75A1.75 1.75 0 011 14.25v-4.5C1 8.784 1.784 8 2.75 8h2.71l5.285-4.805a.75.75 0 01.808-.13zM10.5 5.445l-4.245 3.86a.75.75 0 01-.505.195h-3a.25.25 0 00-.25.25v4.5c0 .138.112.25.25.25h3a.75.75 0 01.505.195l4.245 3.86V5.445z"
|
|
88
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
89
|
+
d: "M18.718 4.222a.75.75 0 011.06 0c4.296 4.296 4.296 11.26 0 15.556a.75.75 0 01-1.06-1.06 9.5 9.5 0 000-13.436.75.75 0 010-1.06z"
|
|
90
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
91
|
+
d: "M16.243 7.757a.75.75 0 10-1.061 1.061 4.5 4.5 0 010 6.364.75.75 0 001.06 1.06 6 6 0 000-8.485z"
|
|
92
|
+
})]
|
|
93
|
+
})]
|
|
94
|
+
}) : /*#__PURE__*/_jsxs(Svg, {
|
|
95
|
+
fill: fill || '#000000',
|
|
96
|
+
viewBox: "0 0 16 16",
|
|
97
|
+
width: size || 16,
|
|
98
|
+
height: size || 16,
|
|
99
|
+
children: [/*#__PURE__*/_jsx(G, {
|
|
100
|
+
id: "SVGRepo_bgCarrier",
|
|
101
|
+
strokeWidth: 0
|
|
102
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
103
|
+
id: "SVGRepo_tracerCarrier",
|
|
104
|
+
strokeLinecap: "round",
|
|
105
|
+
strokeLinejoin: "round"
|
|
106
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
107
|
+
id: "SVGRepo_iconCarrier",
|
|
108
|
+
children: /*#__PURE__*/_jsx(Path, {
|
|
109
|
+
d: "M14.266 1.264l-13 13 .47.472 3.239-3.238L8 14.666V8.473l2.312-2.313c.467.542.737 1.227.737 1.947 0 .796-.316 1.559-.88 2.122l-.353.353.707.707.354-.353a4 4 0 0 0 1.172-2.829c0-.985-.377-1.923-1.03-2.654l1.422-1.422a5.994 5.994 0 0 1 1.608 4.076 5.999 5.999 0 0 1-1.758 4.243l-.354.353.707.707.354-.353a7 7 0 0 0 2.05-4.95 6.994 6.994 0 0 0-1.9-4.783l1.588-1.588zM8 1.334L4.5 5H1.871S1 5.894 1 8.002C1 10.11 1.871 11 1.871 11h1.422L8 6.293z",
|
|
110
|
+
opacity: 1,
|
|
111
|
+
fill: fill || 'white'
|
|
112
|
+
})
|
|
113
|
+
})]
|
|
114
|
+
});
|
|
115
|
+
case 'playPause':
|
|
116
|
+
return type === 'play' ? /*#__PURE__*/_jsxs(Svg, {
|
|
117
|
+
viewBox: "0 0 24 24",
|
|
118
|
+
fill: "none",
|
|
119
|
+
width: size || 24,
|
|
120
|
+
height: size || 24,
|
|
121
|
+
children: [/*#__PURE__*/_jsx(G, {
|
|
122
|
+
id: "SVGRepo_bgCarrier",
|
|
123
|
+
strokeWidth: 0
|
|
124
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
125
|
+
id: "SVGRepo_tracerCarrier",
|
|
126
|
+
strokeLinecap: "round",
|
|
127
|
+
strokeLinejoin: "round"
|
|
128
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
129
|
+
id: "SVGRepo_iconCarrier",
|
|
130
|
+
children: /*#__PURE__*/_jsx(Path, {
|
|
131
|
+
d: "M21.4086 9.35258C23.5305 10.5065 23.5305 13.4935 21.4086 14.6474L8.59662 21.6145C6.53435 22.736 4 21.2763 4 18.9671L4 5.0329C4 2.72368 6.53435 1.26402 8.59661 2.38548L21.4086 9.35258Z",
|
|
132
|
+
fill: fill || '#1C274C'
|
|
133
|
+
})
|
|
134
|
+
})]
|
|
135
|
+
}) : /*#__PURE__*/_jsxs(Svg, {
|
|
136
|
+
viewBox: "0 0 24 24",
|
|
137
|
+
fill: "none",
|
|
138
|
+
width: size || 24,
|
|
139
|
+
height: size || 24,
|
|
140
|
+
children: [/*#__PURE__*/_jsx(G, {
|
|
141
|
+
id: "SVGRepo_bgCarrier",
|
|
142
|
+
strokeWidth: 0
|
|
143
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
144
|
+
id: "SVGRepo_tracerCarrier",
|
|
145
|
+
strokeLinecap: "round",
|
|
146
|
+
strokeLinejoin: "round"
|
|
147
|
+
}), /*#__PURE__*/_jsxs(G, {
|
|
148
|
+
id: "SVGRepo_iconCarrier",
|
|
149
|
+
children: [/*#__PURE__*/_jsx(Path, {
|
|
150
|
+
d: "M2 6C2 4.11438 2 3.17157 2.58579 2.58579C3.17157 2 4.11438 2 6 2C7.88562 2 8.82843 2 9.41421 2.58579C10 3.17157 10 4.11438 10 6V18C10 19.8856 10 20.8284 9.41421 21.4142C8.82843 22 7.88562 22 6 22C4.11438 22 3.17157 22 2.58579 21.4142C2 20.8284 2 19.8856 2 18V6Z",
|
|
151
|
+
fill: fill || '#1C274C'
|
|
152
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
153
|
+
d: "M14 6C14 4.11438 14 3.17157 14.5858 2.58579C15.1716 2 16.1144 2 18 2C19.8856 2 20.8284 2 21.4142 2.58579C22 3.17157 22 4.11438 22 6V18C22 19.8856 22 20.8284 21.4142 21.4142C20.8284 22 19.8856 22 18 22C16.1144 22 15.1716 22 14.5858 21.4142C14 20.8284 14 19.8856 14 18V6Z",
|
|
154
|
+
fill: fill || '#1C274C'
|
|
155
|
+
})]
|
|
156
|
+
})]
|
|
157
|
+
});
|
|
158
|
+
default:
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
export default SvgIcons;
|
|
163
|
+
//# sourceMappingURL=SvgIcons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Svg","G","Path","jsx","_jsx","jsxs","_jsxs","SvgIcons","icon","type","fill","size","width","height","viewBox","children","id","strokeWidth","strokeLinecap","strokeLinejoin","d","fillRule","opacity"],"sourceRoot":"../../../src","sources":["components/SvgIcons.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,CAAC,EAAEC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEhD,MAAMC,QAAQ,GAAGA,CAAC;EAChBC,IAAI;EACJC,IAAI;EACJC,IAAI;EACJC,IAAI,GAAG;AAMT,CAAC,KAAK;EACJ,QAAQH,IAAI;IACV,KAAK,YAAY;MACf,OAAOC,IAAI,KAAK,MAAM,gBACpBH,KAAA,CAACN,GAAG;QAACY,KAAK,EAAED,IAAK;QAACE,MAAM,EAAEF,IAAK;QAACG,OAAO,EAAC,WAAW;QAACJ,IAAI,EAAC,MAAM;QAAAK,QAAA,gBAC7DX,IAAA,CAACH,CAAC;UAACe,EAAE,EAAC,mBAAmB;UAACC,WAAW,EAAE;QAAE,CAAE,CAAC,eAC5Cb,IAAA,CAACH,CAAC;UACAe,EAAE,EAAC,uBAAuB;UAC1BE,aAAa,EAAC,OAAO;UACrBC,cAAc,EAAC;QAAO,CACvB,CAAC,eACFb,KAAA,CAACL,CAAC;UAACe,EAAE,EAAC,qBAAqB;UAAAD,QAAA,gBACzBX,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,6LAA6L;YAC/LV,IAAI,EAAEA,IAAI,IAAI;UAAO,CACtB,CAAC,eACFN,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,2MAA2M;YAC7MV,IAAI,EAAEA,IAAI,IAAI;UAAO,CACtB,CAAC,eACFN,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,yNAAyN;YAC3NV,IAAI,EAAEA,IAAI,IAAI;UAAO,CACtB,CAAC,eACFN,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,2MAA2M;YAC7MV,IAAI,EAAEA,IAAI,IAAI;UAAO,CACtB,CAAC;QAAA,CACD,CAAC;MAAA,CACD,CAAC,gBAENJ,KAAA,CAACN,GAAG;QAACY,KAAK,EAAED,IAAK;QAACE,MAAM,EAAEF,IAAK;QAACG,OAAO,EAAC,WAAW;QAACJ,IAAI,EAAC,MAAM;QAAAK,QAAA,gBAC7DX,IAAA,CAACH,CAAC;UAACe,EAAE,EAAC,mBAAmB;UAACC,WAAW,EAAE;QAAE,CAAE,CAAC,eAC5Cb,IAAA,CAACH,CAAC;UACAe,EAAE,EAAC,uBAAuB;UAC1BE,aAAa,EAAC,OAAO;UACrBC,cAAc,EAAC;QAAO,CACvB,CAAC,eACFb,KAAA,CAACL,CAAC;UAACe,EAAE,EAAC,qBAAqB;UAAAD,QAAA,gBACzBX,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,6LAA6L;YAC/LV,IAAI,EAAEA,IAAI,IAAI;UAAO,CACtB,CAAC,eACFN,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,2MAA2M;YAC7MV,IAAI,EAAEA,IAAI,IAAI;UAAO,CACtB,CAAC,eACFN,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,yNAAyN;YAC3NV,IAAI,EAAEA,IAAI,IAAI;UAAO,CACtB,CAAC,eACFN,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,2MAA2M;YAC7MV,IAAI,EAAEA,IAAI,IAAI;UAAO,CACtB,CAAC;QAAA,CACD,CAAC;MAAA,CACD,CACN;IAEH,KAAK,YAAY;MACf,OAAOD,IAAI,KAAK,MAAM,gBACpBH,KAAA,CAACN,GAAG;QACFU,IAAI,EAAEA,IAAI,IAAI,SAAU;QACxBI,OAAO,EAAC,WAAW;QACnBF,KAAK,EAAED,IAAI,IAAI,EAAG;QAClBE,MAAM,EAAEF,IAAI,IAAI,EAAG;QAAAI,QAAA,gBAEnBX,IAAA,CAACH,CAAC;UAACe,EAAE,EAAC,mBAAmB;UAACC,WAAW,EAAE;QAAE,CAAE,CAAC,eAC5Cb,IAAA,CAACH,CAAC;UACAe,EAAE,EAAC,uBAAuB;UAC1BE,aAAa,EAAC,OAAO;UACrBC,cAAc,EAAC;QAAO,CACvB,CAAC,eACFb,KAAA,CAACL,CAAC;UAACe,EAAE,EAAC,qBAAqB;UAAAD,QAAA,gBACzBX,IAAA,CAACF,IAAI;YACHmB,QAAQ,EAAC,SAAS;YAClBD,CAAC,EAAC;UAAoS,CACvS,CAAC,eACFhB,IAAA,CAACF,IAAI;YAACkB,CAAC,EAAC;UAA+H,CAAE,CAAC,eAC1IhB,IAAA,CAACF,IAAI;YAACkB,CAAC,EAAC;UAAgG,CAAE,CAAC;QAAA,CAC1G,CAAC;MAAA,CACD,CAAC,gBAENd,KAAA,CAACN,GAAG;QACFU,IAAI,EAAEA,IAAI,IAAI,SAAU;QACxBI,OAAO,EAAC,WAAW;QACnBF,KAAK,EAAED,IAAI,IAAI,EAAG;QAClBE,MAAM,EAAEF,IAAI,IAAI,EAAG;QAAAI,QAAA,gBAEnBX,IAAA,CAACH,CAAC;UAACe,EAAE,EAAC,mBAAmB;UAACC,WAAW,EAAE;QAAE,CAAE,CAAC,eAC5Cb,IAAA,CAACH,CAAC;UACAe,EAAE,EAAC,uBAAuB;UAC1BE,aAAa,EAAC,OAAO;UACrBC,cAAc,EAAC;QAAO,CACvB,CAAC,eACFf,IAAA,CAACH,CAAC;UAACe,EAAE,EAAC,qBAAqB;UAAAD,QAAA,eACzBX,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,ybAAyb;YAC3bE,OAAO,EAAE,CAAE;YACXZ,IAAI,EAAEA,IAAI,IAAI;UAAQ,CACvB;QAAC,CACD,CAAC;MAAA,CACD,CACN;IAEH,KAAK,WAAW;MACd,OAAOD,IAAI,KAAK,MAAM,gBACpBH,KAAA,CAACN,GAAG;QACFc,OAAO,EAAC,WAAW;QACnBJ,IAAI,EAAC,MAAM;QACXE,KAAK,EAAED,IAAI,IAAI,EAAG;QAClBE,MAAM,EAAEF,IAAI,IAAI,EAAG;QAAAI,QAAA,gBAEnBX,IAAA,CAACH,CAAC;UAACe,EAAE,EAAC,mBAAmB;UAACC,WAAW,EAAE;QAAE,CAAE,CAAC,eAC5Cb,IAAA,CAACH,CAAC;UACAe,EAAE,EAAC,uBAAuB;UAC1BE,aAAa,EAAC,OAAO;UACrBC,cAAc,EAAC;QAAO,CACvB,CAAC,eACFf,IAAA,CAACH,CAAC;UAACe,EAAE,EAAC,qBAAqB;UAAAD,QAAA,eACzBX,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,yLAAyL;YAC3LV,IAAI,EAAEA,IAAI,IAAI;UAAU,CACzB;QAAC,CACD,CAAC;MAAA,CACD,CAAC,gBAENJ,KAAA,CAACN,GAAG;QACFc,OAAO,EAAC,WAAW;QACnBJ,IAAI,EAAC,MAAM;QACXE,KAAK,EAAED,IAAI,IAAI,EAAG;QAClBE,MAAM,EAAEF,IAAI,IAAI,EAAG;QAAAI,QAAA,gBAEnBX,IAAA,CAACH,CAAC;UAACe,EAAE,EAAC,mBAAmB;UAACC,WAAW,EAAE;QAAE,CAAE,CAAC,eAC5Cb,IAAA,CAACH,CAAC;UACAe,EAAE,EAAC,uBAAuB;UAC1BE,aAAa,EAAC,OAAO;UACrBC,cAAc,EAAC;QAAO,CACvB,CAAC,eACFb,KAAA,CAACL,CAAC;UAACe,EAAE,EAAC,qBAAqB;UAAAD,QAAA,gBACzBX,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,uQAAuQ;YACzQV,IAAI,EAAEA,IAAI,IAAI;UAAU,CACzB,CAAC,eACFN,IAAA,CAACF,IAAI;YACHkB,CAAC,EAAC,+QAA+Q;YACjRV,IAAI,EAAEA,IAAI,IAAI;UAAU,CACzB,CAAC;QAAA,CACD,CAAC;MAAA,CACD,CACN;IACH;MACE,OAAO,IAAI;EACf;AACF,CAAC;AAED,eAAeH,QAAQ","ignoreList":[]}
|
|
@@ -6,6 +6,8 @@ import { useVideoManager } from "../provider/VideoContext.js";
|
|
|
6
6
|
import { usePlayback } from "../hooks/usePlayback.js";
|
|
7
7
|
import { formatTime } from "../utils/formatTime.js";
|
|
8
8
|
import { GestureOverlay } from "./GestureOverlay.js";
|
|
9
|
+
import { CloseIcon } from "./icons.js";
|
|
10
|
+
import SvgIcons from "./SvgIcons.js";
|
|
9
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
12
|
/**
|
|
11
13
|
* Minimal built-in chrome: play/pause, seek bar, time, mute and fullscreen
|
|
@@ -72,17 +74,24 @@ export function VideoControls({
|
|
|
72
74
|
style: styles.button,
|
|
73
75
|
onPress: onClose,
|
|
74
76
|
hitSlop: 8,
|
|
75
|
-
children: /*#__PURE__*/_jsx(
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
children: /*#__PURE__*/_jsx(CloseIcon, {
|
|
78
|
+
size: 18,
|
|
79
|
+
color: "#fff"
|
|
78
80
|
})
|
|
79
81
|
}) : /*#__PURE__*/_jsx(View, {}), /*#__PURE__*/_jsx(Pressable, {
|
|
80
82
|
style: styles.button,
|
|
81
83
|
onPress: () => muted ? manager.unmute() : manager.mute(),
|
|
82
84
|
hitSlop: 8,
|
|
83
|
-
children: /*#__PURE__*/_jsx(
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
children: muted ? /*#__PURE__*/_jsx(SvgIcons, {
|
|
86
|
+
icon: "muteUnmute",
|
|
87
|
+
type: "mute",
|
|
88
|
+
size: 18,
|
|
89
|
+
fill: "#fff"
|
|
90
|
+
}) : /*#__PURE__*/_jsx(SvgIcons, {
|
|
91
|
+
icon: "muteUnmute",
|
|
92
|
+
type: "unmute",
|
|
93
|
+
size: 18,
|
|
94
|
+
fill: "#fff"
|
|
86
95
|
})
|
|
87
96
|
})]
|
|
88
97
|
}), /*#__PURE__*/_jsx(Pressable, {
|
|
@@ -92,9 +101,19 @@ export function VideoControls({
|
|
|
92
101
|
scheduleHide();
|
|
93
102
|
},
|
|
94
103
|
hitSlop: 16,
|
|
95
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
104
|
+
children: buffering ? /*#__PURE__*/_jsx(Text, {
|
|
96
105
|
style: styles.playIcon,
|
|
97
|
-
children:
|
|
106
|
+
children: "\u2026"
|
|
107
|
+
}) : playing ? /*#__PURE__*/_jsx(SvgIcons, {
|
|
108
|
+
icon: "playPause",
|
|
109
|
+
type: "pause",
|
|
110
|
+
size: 34,
|
|
111
|
+
fill: "#fff"
|
|
112
|
+
}) : /*#__PURE__*/_jsx(SvgIcons, {
|
|
113
|
+
icon: "playPause",
|
|
114
|
+
type: "play",
|
|
115
|
+
size: 34,
|
|
116
|
+
fill: "#fff"
|
|
98
117
|
})
|
|
99
118
|
}), /*#__PURE__*/_jsxs(View, {
|
|
100
119
|
style: styles.bottomRow,
|
|
@@ -119,9 +138,15 @@ export function VideoControls({
|
|
|
119
138
|
style: styles.button,
|
|
120
139
|
onPress: () => manager.toggleFullscreen(),
|
|
121
140
|
hitSlop: 8,
|
|
122
|
-
children: /*#__PURE__*/_jsx(
|
|
123
|
-
|
|
124
|
-
|
|
141
|
+
children: fullscreen ? /*#__PURE__*/_jsx(SvgIcons, {
|
|
142
|
+
icon: "fullScreen",
|
|
143
|
+
size: 18,
|
|
144
|
+
fill: "#fff"
|
|
145
|
+
}) : /*#__PURE__*/_jsx(SvgIcons, {
|
|
146
|
+
icon: "fullScreen",
|
|
147
|
+
type: "full",
|
|
148
|
+
size: 18,
|
|
149
|
+
fill: "#fff"
|
|
125
150
|
})
|
|
126
151
|
}) : null]
|
|
127
152
|
})]
|
|
@@ -182,10 +207,6 @@ const styles = StyleSheet.create({
|
|
|
182
207
|
},
|
|
183
208
|
button: {
|
|
184
209
|
padding: 4
|
|
185
|
-
},
|
|
186
|
-
icon: {
|
|
187
|
-
color: '#fff',
|
|
188
|
-
fontSize: 18
|
|
189
210
|
}
|
|
190
211
|
});
|
|
191
212
|
//# sourceMappingURL=VideoControls.js.map
|