@zezosoft/zezo-ott-react-native-video-player 1.0.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/LICENSE +21 -0
- package/README.md +308 -0
- package/lib/module/VideoPlayer/MediaControls/BottomControls.js +156 -0
- package/lib/module/VideoPlayer/MediaControls/BottomControls.js.map +1 -0
- package/lib/module/VideoPlayer/MediaControls/MediaControls.js +27 -0
- package/lib/module/VideoPlayer/MediaControls/MediaControls.js.map +1 -0
- package/lib/module/VideoPlayer/MediaControls/MediaControlsProvider.js +85 -0
- package/lib/module/VideoPlayer/MediaControls/MediaControlsProvider.js.map +1 -0
- package/lib/module/VideoPlayer/MediaControls/MiddleControls.js +208 -0
- package/lib/module/VideoPlayer/MediaControls/MiddleControls.js.map +1 -0
- package/lib/module/VideoPlayer/MediaControls/TopControls.js +94 -0
- package/lib/module/VideoPlayer/MediaControls/TopControls.js.map +1 -0
- package/lib/module/VideoPlayer/Styles/fonts.js +58 -0
- package/lib/module/VideoPlayer/Styles/fonts.js.map +1 -0
- package/lib/module/VideoPlayer/Styles/globalStyles.js +75 -0
- package/lib/module/VideoPlayer/Styles/globalStyles.js.map +1 -0
- package/lib/module/VideoPlayer/VideoPlayer.js +180 -0
- package/lib/module/VideoPlayer/VideoPlayer.js.map +1 -0
- package/lib/module/VideoPlayer/components/ProgressBar.js +84 -0
- package/lib/module/VideoPlayer/components/ProgressBar.js.map +1 -0
- package/lib/module/VideoPlayer/components/SkipAndNextControls.js +154 -0
- package/lib/module/VideoPlayer/components/SkipAndNextControls.js.map +1 -0
- package/lib/module/VideoPlayer/components/SubtitleView.js +57 -0
- package/lib/module/VideoPlayer/components/SubtitleView.js.map +1 -0
- package/lib/module/VideoPlayer/context/VideoPlayerConfig.js +47 -0
- package/lib/module/VideoPlayer/context/VideoPlayerConfig.js.map +1 -0
- package/lib/module/VideoPlayer/context/index.js +4 -0
- package/lib/module/VideoPlayer/context/index.js.map +1 -0
- package/lib/module/VideoPlayer/index.js +7 -0
- package/lib/module/VideoPlayer/index.js.map +1 -0
- package/lib/module/VideoPlayer/model/AudioAndSubtitles.js +257 -0
- package/lib/module/VideoPlayer/model/AudioAndSubtitles.js.map +1 -0
- package/lib/module/VideoPlayer/model/Episodes.js +272 -0
- package/lib/module/VideoPlayer/model/Episodes.js.map +1 -0
- package/lib/module/VideoPlayer/model/SettingModal.js +115 -0
- package/lib/module/VideoPlayer/model/SettingModal.js.map +1 -0
- package/lib/module/VideoPlayer/model/SpeedControls.js +140 -0
- package/lib/module/VideoPlayer/model/SpeedControls.js.map +1 -0
- package/lib/module/VideoPlayer/model/VideoPlayerSettings.js +113 -0
- package/lib/module/VideoPlayer/model/VideoPlayerSettings.js.map +1 -0
- package/lib/module/VideoPlayer/store/index.js +5 -0
- package/lib/module/VideoPlayer/store/index.js.map +1 -0
- package/lib/module/VideoPlayer/store/videoPlayer.type.js +4 -0
- package/lib/module/VideoPlayer/store/videoPlayer.type.js.map +1 -0
- package/lib/module/VideoPlayer/store/videoPlayerStore.js +147 -0
- package/lib/module/VideoPlayer/store/videoPlayerStore.js.map +1 -0
- package/lib/module/VideoPlayer/utils/Display.js +22 -0
- package/lib/module/VideoPlayer/utils/Display.js.map +1 -0
- package/lib/module/VideoPlayer/utils/PlatformSelector.js +18 -0
- package/lib/module/VideoPlayer/utils/PlatformSelector.js.map +1 -0
- package/lib/module/VideoPlayer/utils/hooks/index.js +5 -0
- package/lib/module/VideoPlayer/utils/hooks/index.js.map +1 -0
- package/lib/module/VideoPlayer/utils/hooks/useVideoPlayerBack.js +48 -0
- package/lib/module/VideoPlayer/utils/hooks/useVideoPlayerBack.js.map +1 -0
- package/lib/module/VideoPlayer/utils/hooks/useVideoResolutions.js +88 -0
- package/lib/module/VideoPlayer/utils/hooks/useVideoResolutions.js.map +1 -0
- package/lib/module/VideoPlayer/utils/index.js +10 -0
- package/lib/module/VideoPlayer/utils/index.js.map +1 -0
- package/lib/module/VideoPlayer/utils/lockOrientation.js +31 -0
- package/lib/module/VideoPlayer/utils/lockOrientation.js.map +1 -0
- package/lib/module/VideoPlayer/utils/playerEvents.js +79 -0
- package/lib/module/VideoPlayer/utils/playerEvents.js.map +1 -0
- package/lib/module/VideoPlayer/utils/timeFormatter.js +35 -0
- package/lib/module/VideoPlayer/utils/timeFormatter.js.map +1 -0
- package/lib/module/VideoPlayer/utils/useWatchReporter.js +68 -0
- package/lib/module/VideoPlayer/utils/useWatchReporter.js.map +1 -0
- package/lib/module/VideoPlayer/utils/videoControl.js +166 -0
- package/lib/module/VideoPlayer/utils/videoControl.js.map +1 -0
- package/lib/module/VideoPlayer/utils/videoRef.js +5 -0
- package/lib/module/VideoPlayer/utils/videoRef.js.map +1 -0
- package/lib/module/VideoPlayer/utils/videoSource.js +17 -0
- package/lib/module/VideoPlayer/utils/videoSource.js.map +1 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/BottomControls.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/BottomControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MediaControls.d.ts +6 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MediaControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MediaControlsProvider.d.ts +14 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MediaControlsProvider.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MiddleControls.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MiddleControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/TopControls.d.ts +7 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/TopControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/Styles/fonts.d.ts +54 -0
- package/lib/typescript/src/VideoPlayer/Styles/fonts.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/Styles/globalStyles.d.ts +70 -0
- package/lib/typescript/src/VideoPlayer/Styles/globalStyles.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/VideoPlayer.d.ts +22 -0
- package/lib/typescript/src/VideoPlayer/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/components/ProgressBar.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/components/ProgressBar.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/components/SkipAndNextControls.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/components/SkipAndNextControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/components/SubtitleView.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/components/SubtitleView.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/context/VideoPlayerConfig.d.ts +25 -0
- package/lib/typescript/src/VideoPlayer/context/VideoPlayerConfig.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/context/index.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/context/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/index.d.ts +5 -0
- package/lib/typescript/src/VideoPlayer/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/AudioAndSubtitles.d.ts +4 -0
- package/lib/typescript/src/VideoPlayer/model/AudioAndSubtitles.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/Episodes.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/model/Episodes.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/SettingModal.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/model/SettingModal.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/SpeedControls.d.ts +4 -0
- package/lib/typescript/src/VideoPlayer/model/SpeedControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/VideoPlayerSettings.d.ts +7 -0
- package/lib/typescript/src/VideoPlayer/model/VideoPlayerSettings.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/store/index.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/store/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/store/videoPlayer.type.d.ts +144 -0
- package/lib/typescript/src/VideoPlayer/store/videoPlayer.type.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/store/videoPlayerStore.d.ts +20 -0
- package/lib/typescript/src/VideoPlayer/store/videoPlayerStore.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/Display.d.ts +8 -0
- package/lib/typescript/src/VideoPlayer/utils/Display.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/PlatformSelector.d.ts +11 -0
- package/lib/typescript/src/VideoPlayer/utils/PlatformSelector.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/index.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoPlayerBack.d.ts +6 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoPlayerBack.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoResolutions.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoResolutions.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/index.d.ts +8 -0
- package/lib/typescript/src/VideoPlayer/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/lockOrientation.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/utils/lockOrientation.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/playerEvents.d.ts +18 -0
- package/lib/typescript/src/VideoPlayer/utils/playerEvents.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/timeFormatter.d.ts +9 -0
- package/lib/typescript/src/VideoPlayer/utils/timeFormatter.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/useWatchReporter.d.ts +26 -0
- package/lib/typescript/src/VideoPlayer/utils/useWatchReporter.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/videoControl.d.ts +17 -0
- package/lib/typescript/src/VideoPlayer/utils/videoControl.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/videoRef.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/utils/videoRef.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/videoSource.d.ts +10 -0
- package/lib/typescript/src/VideoPlayer/utils/videoSource.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +191 -0
- package/src/VideoPlayer/MediaControls/BottomControls.tsx +185 -0
- package/src/VideoPlayer/MediaControls/MediaControls.tsx +29 -0
- package/src/VideoPlayer/MediaControls/MediaControlsProvider.tsx +99 -0
- package/src/VideoPlayer/MediaControls/MiddleControls.tsx +232 -0
- package/src/VideoPlayer/MediaControls/TopControls.tsx +92 -0
- package/src/VideoPlayer/Styles/fonts.ts +106 -0
- package/src/VideoPlayer/Styles/globalStyles.ts +74 -0
- package/src/VideoPlayer/VideoPlayer.tsx +217 -0
- package/src/VideoPlayer/components/ProgressBar.tsx +98 -0
- package/src/VideoPlayer/components/SkipAndNextControls.tsx +195 -0
- package/src/VideoPlayer/components/SubtitleView.tsx +53 -0
- package/src/VideoPlayer/context/VideoPlayerConfig.tsx +65 -0
- package/src/VideoPlayer/context/index.ts +5 -0
- package/src/VideoPlayer/index.ts +4 -0
- package/src/VideoPlayer/model/AudioAndSubtitles.tsx +302 -0
- package/src/VideoPlayer/model/Episodes.tsx +294 -0
- package/src/VideoPlayer/model/SettingModal.tsx +128 -0
- package/src/VideoPlayer/model/SpeedControls.tsx +134 -0
- package/src/VideoPlayer/model/VideoPlayerSettings.tsx +141 -0
- package/src/VideoPlayer/store/index.ts +2 -0
- package/src/VideoPlayer/store/videoPlayer.type.ts +192 -0
- package/src/VideoPlayer/store/videoPlayerStore.ts +101 -0
- package/src/VideoPlayer/utils/Display.ts +14 -0
- package/src/VideoPlayer/utils/PlatformSelector.ts +18 -0
- package/src/VideoPlayer/utils/hooks/index.ts +2 -0
- package/src/VideoPlayer/utils/hooks/useVideoPlayerBack.ts +66 -0
- package/src/VideoPlayer/utils/hooks/useVideoResolutions.ts +119 -0
- package/src/VideoPlayer/utils/index.ts +7 -0
- package/src/VideoPlayer/utils/lockOrientation.ts +34 -0
- package/src/VideoPlayer/utils/playerEvents.ts +97 -0
- package/src/VideoPlayer/utils/timeFormatter.ts +47 -0
- package/src/VideoPlayer/utils/useWatchReporter.ts +104 -0
- package/src/VideoPlayer/utils/videoControl.ts +192 -0
- package/src/VideoPlayer/utils/videoRef.ts +4 -0
- package/src/VideoPlayer/utils/videoSource.ts +23 -0
- package/src/index.tsx +1 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable react-native/no-inline-styles */
|
|
4
|
+
import React, { useState, useRef } from 'react';
|
|
5
|
+
import { ActivityIndicator, StyleSheet, Text, TouchableOpacity, View, Animated, Easing } from 'react-native';
|
|
6
|
+
import { moderateScale, scale } from 'react-native-size-matters';
|
|
7
|
+
import { RFValue } from 'react-native-responsive-fontsize';
|
|
8
|
+
import { Play, Pause, RotateCcw, RotateCw } from 'lucide-react-native';
|
|
9
|
+
import { useVideoPlayerStore } from "../store/videoPlayerStore.js";
|
|
10
|
+
import { videoRef } from "../utils/videoRef.js";
|
|
11
|
+
import { handlePause } from "../utils/index.js";
|
|
12
|
+
import { useVideoPlayerConfig } from "../context/index.js";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
const BUTTON_SIZE = moderateScale(80);
|
|
15
|
+
const SMALL_BUTTON_SIZE = moderateScale(60);
|
|
16
|
+
const FEEDBACK_DURATION = 500;
|
|
17
|
+
const MOVE_DISTANCE = 60;
|
|
18
|
+
const MiddleControls = () => {
|
|
19
|
+
const {
|
|
20
|
+
isPaused,
|
|
21
|
+
isBuffering,
|
|
22
|
+
setStartWatchTime,
|
|
23
|
+
error,
|
|
24
|
+
setIsPaused,
|
|
25
|
+
duration,
|
|
26
|
+
currentTime,
|
|
27
|
+
setCurrentTime
|
|
28
|
+
} = useVideoPlayerStore();
|
|
29
|
+
const {
|
|
30
|
+
colors
|
|
31
|
+
} = useVideoPlayerConfig();
|
|
32
|
+
if (error) {
|
|
33
|
+
return /*#__PURE__*/_jsx(View, {
|
|
34
|
+
style: [StyleSheet.absoluteFillObject, styles.container],
|
|
35
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
36
|
+
style: [styles.errorText, {
|
|
37
|
+
color: colors.text
|
|
38
|
+
}],
|
|
39
|
+
children: error
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const handleSkip = delta => {
|
|
44
|
+
let newTime = currentTime + delta;
|
|
45
|
+
if (newTime < 0) newTime = 0;
|
|
46
|
+
if (newTime > duration) newTime = duration;
|
|
47
|
+
videoRef?.current?.seek(newTime);
|
|
48
|
+
setCurrentTime(newTime);
|
|
49
|
+
};
|
|
50
|
+
const isVideoEnded = duration > 0 && currentTime >= duration;
|
|
51
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
52
|
+
style: [StyleSheet.absoluteFillObject, styles.container],
|
|
53
|
+
children: [/*#__PURE__*/_jsx(SkipButton, {
|
|
54
|
+
direction: "backward",
|
|
55
|
+
onPress: ({
|
|
56
|
+
second
|
|
57
|
+
}) => handleSkip(-second),
|
|
58
|
+
colors: colors,
|
|
59
|
+
disabled: currentTime <= 0
|
|
60
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
61
|
+
onPress: () => {
|
|
62
|
+
if (isBuffering) return;
|
|
63
|
+
if (isVideoEnded) {
|
|
64
|
+
videoRef.current?.seek(0);
|
|
65
|
+
setCurrentTime(0);
|
|
66
|
+
setIsPaused(false);
|
|
67
|
+
setStartWatchTime(Date.now());
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (!isPaused) {
|
|
71
|
+
handlePause();
|
|
72
|
+
setIsPaused(true);
|
|
73
|
+
} else {
|
|
74
|
+
setIsPaused(false);
|
|
75
|
+
setStartWatchTime(Date.now());
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
style: [styles.button, styles.playButton],
|
|
79
|
+
activeOpacity: 0.8,
|
|
80
|
+
children: isBuffering ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
81
|
+
size: scale(50),
|
|
82
|
+
color: colors.text
|
|
83
|
+
}) : isPaused ? /*#__PURE__*/_jsx(Play, {
|
|
84
|
+
size: scale(50),
|
|
85
|
+
color: colors.text
|
|
86
|
+
}) : /*#__PURE__*/_jsx(Pause, {
|
|
87
|
+
size: scale(50),
|
|
88
|
+
color: colors.text
|
|
89
|
+
})
|
|
90
|
+
}), /*#__PURE__*/_jsx(SkipButton, {
|
|
91
|
+
direction: "forward",
|
|
92
|
+
onPress: ({
|
|
93
|
+
second
|
|
94
|
+
}) => handleSkip(second),
|
|
95
|
+
colors: colors,
|
|
96
|
+
disabled: currentTime >= duration
|
|
97
|
+
})]
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
export default MiddleControls;
|
|
101
|
+
const SkipButton = ({
|
|
102
|
+
direction,
|
|
103
|
+
onPress,
|
|
104
|
+
colors,
|
|
105
|
+
disabled
|
|
106
|
+
}) => {
|
|
107
|
+
const [step, setStep] = useState(0);
|
|
108
|
+
const anim = useRef(new Animated.Value(0)).current;
|
|
109
|
+
const timeoutRef = useRef(null);
|
|
110
|
+
const handlePress = () => {
|
|
111
|
+
if (disabled) return;
|
|
112
|
+
const newStep = step + 10;
|
|
113
|
+
setStep(newStep);
|
|
114
|
+
onPress({
|
|
115
|
+
second: newStep
|
|
116
|
+
});
|
|
117
|
+
anim.setValue(0);
|
|
118
|
+
Animated.timing(anim, {
|
|
119
|
+
toValue: 1,
|
|
120
|
+
duration: FEEDBACK_DURATION,
|
|
121
|
+
easing: Easing.out(Easing.quad),
|
|
122
|
+
useNativeDriver: true
|
|
123
|
+
}).start();
|
|
124
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
125
|
+
timeoutRef.current = setTimeout(() => setStep(0), FEEDBACK_DURATION);
|
|
126
|
+
};
|
|
127
|
+
const translateX = anim.interpolate({
|
|
128
|
+
inputRange: [0, 1],
|
|
129
|
+
outputRange: direction === 'forward' ? [SMALL_BUTTON_SIZE, SMALL_BUTTON_SIZE + MOVE_DISTANCE] : [-SMALL_BUTTON_SIZE, -SMALL_BUTTON_SIZE - MOVE_DISTANCE]
|
|
130
|
+
});
|
|
131
|
+
const opacity = anim.interpolate({
|
|
132
|
+
inputRange: [0, 0.8, 1],
|
|
133
|
+
outputRange: [1, 1, 0]
|
|
134
|
+
});
|
|
135
|
+
const scaleAnim = anim.interpolate({
|
|
136
|
+
inputRange: [0, 0.5, 1],
|
|
137
|
+
outputRange: [1, 1.3, 1]
|
|
138
|
+
});
|
|
139
|
+
return /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
140
|
+
onPress: handlePress,
|
|
141
|
+
style: [styles.button, styles.smallButton, disabled && {
|
|
142
|
+
opacity: 0.3
|
|
143
|
+
}],
|
|
144
|
+
activeOpacity: disabled ? 1 : 0.7,
|
|
145
|
+
disabled: disabled,
|
|
146
|
+
children: [direction === 'forward' ? /*#__PURE__*/_jsx(RotateCw, {
|
|
147
|
+
size: scale(35),
|
|
148
|
+
color: colors.text
|
|
149
|
+
}) : /*#__PURE__*/_jsx(RotateCcw, {
|
|
150
|
+
size: scale(35),
|
|
151
|
+
color: colors.text
|
|
152
|
+
}), step > 0 && !disabled && /*#__PURE__*/_jsx(Animated.View, {
|
|
153
|
+
style: [styles.feedbackOverlay, {
|
|
154
|
+
transform: [{
|
|
155
|
+
translateX
|
|
156
|
+
}, {
|
|
157
|
+
scale: scaleAnim
|
|
158
|
+
}],
|
|
159
|
+
opacity
|
|
160
|
+
}],
|
|
161
|
+
children: /*#__PURE__*/_jsxs(Text, {
|
|
162
|
+
style: [styles.feedbackText, {
|
|
163
|
+
color: colors.text
|
|
164
|
+
}],
|
|
165
|
+
children: [step, "s"]
|
|
166
|
+
})
|
|
167
|
+
})]
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
const styles = StyleSheet.create({
|
|
171
|
+
container: {
|
|
172
|
+
flex: 1,
|
|
173
|
+
flexDirection: 'row',
|
|
174
|
+
justifyContent: 'center',
|
|
175
|
+
alignItems: 'center'
|
|
176
|
+
},
|
|
177
|
+
button: {
|
|
178
|
+
justifyContent: 'center',
|
|
179
|
+
alignItems: 'center',
|
|
180
|
+
borderRadius: 100
|
|
181
|
+
},
|
|
182
|
+
playButton: {
|
|
183
|
+
width: BUTTON_SIZE,
|
|
184
|
+
height: BUTTON_SIZE,
|
|
185
|
+
marginHorizontal: moderateScale(14)
|
|
186
|
+
},
|
|
187
|
+
smallButton: {
|
|
188
|
+
width: SMALL_BUTTON_SIZE,
|
|
189
|
+
height: SMALL_BUTTON_SIZE,
|
|
190
|
+
marginHorizontal: moderateScale(10)
|
|
191
|
+
},
|
|
192
|
+
errorText: {
|
|
193
|
+
fontSize: RFValue(18),
|
|
194
|
+
fontWeight: '600',
|
|
195
|
+
textAlign: 'center',
|
|
196
|
+
paddingHorizontal: scale(20)
|
|
197
|
+
},
|
|
198
|
+
feedbackOverlay: {
|
|
199
|
+
position: 'absolute',
|
|
200
|
+
justifyContent: 'center',
|
|
201
|
+
alignItems: 'center'
|
|
202
|
+
},
|
|
203
|
+
feedbackText: {
|
|
204
|
+
fontSize: RFValue(15),
|
|
205
|
+
fontWeight: '600'
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
//# sourceMappingURL=MiddleControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","useRef","ActivityIndicator","StyleSheet","Text","TouchableOpacity","View","Animated","Easing","moderateScale","scale","RFValue","Play","Pause","RotateCcw","RotateCw","useVideoPlayerStore","videoRef","handlePause","useVideoPlayerConfig","jsx","_jsx","jsxs","_jsxs","BUTTON_SIZE","SMALL_BUTTON_SIZE","FEEDBACK_DURATION","MOVE_DISTANCE","MiddleControls","isPaused","isBuffering","setStartWatchTime","error","setIsPaused","duration","currentTime","setCurrentTime","colors","style","absoluteFillObject","styles","container","children","errorText","color","text","handleSkip","delta","newTime","current","seek","isVideoEnded","SkipButton","direction","onPress","second","disabled","Date","now","button","playButton","activeOpacity","size","step","setStep","anim","Value","timeoutRef","handlePress","newStep","setValue","timing","toValue","easing","out","quad","useNativeDriver","start","clearTimeout","setTimeout","translateX","interpolate","inputRange","outputRange","opacity","scaleAnim","smallButton","feedbackOverlay","transform","feedbackText","create","flex","flexDirection","justifyContent","alignItems","borderRadius","width","height","marginHorizontal","fontSize","fontWeight","textAlign","paddingHorizontal","position"],"sourceRoot":"../../../../src","sources":["VideoPlayer/MediaControls/MiddleControls.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
|
|
5
|
+
import { moderateScale } from 'react-native-size-matters';
|
|
6
|
+
import { RFValue } from 'react-native-responsive-fontsize';
|
|
7
|
+
import { X } from 'lucide-react-native';
|
|
8
|
+
import { useVideoPlayerStore } from "../store/videoPlayerStore.js";
|
|
9
|
+
import { lockToPortrait } from "../utils/lockOrientation.js";
|
|
10
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
11
|
+
import { useVideoPlayerConfig } from "../context/index.js";
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
const TopControls = ({
|
|
14
|
+
onClose
|
|
15
|
+
}) => {
|
|
16
|
+
const {
|
|
17
|
+
activeTrack,
|
|
18
|
+
resetStore
|
|
19
|
+
} = useVideoPlayerStore();
|
|
20
|
+
const {
|
|
21
|
+
top
|
|
22
|
+
} = useSafeAreaInsets();
|
|
23
|
+
const {
|
|
24
|
+
colors
|
|
25
|
+
} = useVideoPlayerConfig();
|
|
26
|
+
const handleClose = () => {
|
|
27
|
+
onClose?.();
|
|
28
|
+
resetStore();
|
|
29
|
+
lockToPortrait();
|
|
30
|
+
};
|
|
31
|
+
const showSubtitle = activeTrack?.isTrailer || activeTrack?.seasonNumber !== undefined || activeTrack?.episodeNumber !== undefined;
|
|
32
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
33
|
+
style: [styles.container, {
|
|
34
|
+
paddingTop: top + moderateScale(10)
|
|
35
|
+
}],
|
|
36
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
37
|
+
style: styles.textContainer,
|
|
38
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
39
|
+
numberOfLines: 1,
|
|
40
|
+
ellipsizeMode: "tail",
|
|
41
|
+
style: [styles.title, {
|
|
42
|
+
color: colors.text
|
|
43
|
+
}],
|
|
44
|
+
children: activeTrack?.title || 'Unknown'
|
|
45
|
+
}), showSubtitle && /*#__PURE__*/_jsx(Text, {
|
|
46
|
+
style: [styles.subtitle, {
|
|
47
|
+
color: colors.text
|
|
48
|
+
}],
|
|
49
|
+
children: activeTrack?.isTrailer ? 'Trailer' : `${activeTrack?.seasonNumber ? `S${activeTrack.seasonNumber} ` : ''}${activeTrack?.episodeNumber ? `E${activeTrack.episodeNumber}` : ''}`
|
|
50
|
+
})]
|
|
51
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
52
|
+
style: styles.closeButton,
|
|
53
|
+
onPress: handleClose,
|
|
54
|
+
accessibilityRole: "button",
|
|
55
|
+
accessibilityLabel: "Close player",
|
|
56
|
+
accessibilityHint: "Closes the video player and exits",
|
|
57
|
+
children: /*#__PURE__*/_jsx(X, {
|
|
58
|
+
size: moderateScale(25),
|
|
59
|
+
color: colors.text
|
|
60
|
+
})
|
|
61
|
+
})]
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
export default TopControls;
|
|
65
|
+
const styles = StyleSheet.create({
|
|
66
|
+
container: {
|
|
67
|
+
flexDirection: 'row',
|
|
68
|
+
justifyContent: 'space-between',
|
|
69
|
+
alignItems: 'center',
|
|
70
|
+
paddingHorizontal: moderateScale(16),
|
|
71
|
+
zIndex: 51
|
|
72
|
+
},
|
|
73
|
+
textContainer: {
|
|
74
|
+
flex: 1,
|
|
75
|
+
paddingRight: moderateScale(10)
|
|
76
|
+
},
|
|
77
|
+
title: {
|
|
78
|
+
fontSize: RFValue(18),
|
|
79
|
+
fontWeight: '600'
|
|
80
|
+
},
|
|
81
|
+
subtitle: {
|
|
82
|
+
fontSize: RFValue(14),
|
|
83
|
+
fontWeight: '400',
|
|
84
|
+
marginTop: moderateScale(2)
|
|
85
|
+
},
|
|
86
|
+
closeButton: {
|
|
87
|
+
width: moderateScale(40),
|
|
88
|
+
height: moderateScale(40),
|
|
89
|
+
justifyContent: 'center',
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
borderRadius: moderateScale(20)
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=TopControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","Text","View","TouchableOpacity","moderateScale","RFValue","X","useVideoPlayerStore","lockToPortrait","useSafeAreaInsets","useVideoPlayerConfig","jsx","_jsx","jsxs","_jsxs","TopControls","onClose","activeTrack","resetStore","top","colors","handleClose","showSubtitle","isTrailer","seasonNumber","undefined","episodeNumber","style","styles","container","paddingTop","children","textContainer","numberOfLines","ellipsizeMode","title","color","text","subtitle","closeButton","onPress","accessibilityRole","accessibilityLabel","accessibilityHint","size","create","flexDirection","justifyContent","alignItems","paddingHorizontal","zIndex","flex","paddingRight","fontSize","fontWeight","marginTop","width","height","borderRadius"],"sourceRoot":"../../../../src","sources":["VideoPlayer/MediaControls/TopControls.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @author Naresh Dhamu
|
|
5
|
+
* @lastModified Fri 08 Aug 2025 at 06:55 PM
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const Fonts = {
|
|
9
|
+
// inter font
|
|
10
|
+
inter: {
|
|
11
|
+
black: 'Inter-Black',
|
|
12
|
+
bold: 'Inter-Bold',
|
|
13
|
+
extraBold: 'Inter-ExtraBold',
|
|
14
|
+
extraLight: 'Inter-ExtraLight',
|
|
15
|
+
light: 'Inter-Light',
|
|
16
|
+
medium: 'Inter-Medium',
|
|
17
|
+
regular: 'Inter-Regular',
|
|
18
|
+
semiBold: 'Inter-SemiBold',
|
|
19
|
+
thin: 'Inter-Thin'
|
|
20
|
+
},
|
|
21
|
+
// poppins font
|
|
22
|
+
poppins: {
|
|
23
|
+
black: 'Poppins-Black',
|
|
24
|
+
blackItalic: 'Poppins-BlackItalic',
|
|
25
|
+
bold: 'Poppins-Bold',
|
|
26
|
+
boldItalic: 'Poppins-BoldItalic',
|
|
27
|
+
extraBold: 'Poppins-ExtraBold',
|
|
28
|
+
extraBoldItalic: 'Poppins-ExtraBoldItalic',
|
|
29
|
+
extraLight: 'Poppins-ExtraLight',
|
|
30
|
+
extraLightItalic: 'Poppins-ExtraLightItalic',
|
|
31
|
+
italic: 'Poppins-Italic',
|
|
32
|
+
light: 'Poppins-Light',
|
|
33
|
+
lightItalic: 'Poppins-LightItalic',
|
|
34
|
+
medium: 'Poppins-Medium',
|
|
35
|
+
mediumItalic: 'Poppins-MediumItalic',
|
|
36
|
+
regular: 'Poppins-Regular',
|
|
37
|
+
semiBold: 'Poppins-SemiBold',
|
|
38
|
+
semiBoldItalic: 'Poppins-SemiBoldItalic',
|
|
39
|
+
thin: 'Poppins-Thin',
|
|
40
|
+
thinItalic: 'Poppins-ThinItalic'
|
|
41
|
+
},
|
|
42
|
+
// roboto font
|
|
43
|
+
roboto: {
|
|
44
|
+
black: 'Roboto-Black',
|
|
45
|
+
blackItalic: 'Roboto-BlackItalic',
|
|
46
|
+
bold: 'Roboto-Bold',
|
|
47
|
+
boldItalic: 'Roboto-BoldItalic',
|
|
48
|
+
italic: 'Roboto-Italic',
|
|
49
|
+
light: 'Roboto-Light',
|
|
50
|
+
lightItalic: 'Roboto-LightItalic',
|
|
51
|
+
medium: 'Roboto-Medium',
|
|
52
|
+
mediumItalic: 'Roboto-MediumItalic',
|
|
53
|
+
regular: 'Roboto-Regular',
|
|
54
|
+
thin: 'Roboto-Thin',
|
|
55
|
+
thinItalic: 'Roboto-ThinItalic'
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=fonts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Fonts","inter","black","bold","extraBold","extraLight","light","medium","regular","semiBold","thin","poppins","blackItalic","boldItalic","extraBoldItalic","extraLightItalic","italic","lightItalic","mediumItalic","semiBoldItalic","thinItalic","roboto"],"sourceRoot":"../../../../src","sources":["VideoPlayer/Styles/fonts.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAqDA,OAAO,MAAMA,KAAa,GAAG;EAC3B;EACAC,KAAK,EAAE;IACLC,KAAK,EAAE,aAAa;IACpBC,IAAI,EAAE,YAAY;IAClBC,SAAS,EAAE,iBAAiB;IAC5BC,UAAU,EAAE,kBAAkB;IAC9BC,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAE,cAAc;IACtBC,OAAO,EAAE,eAAe;IACxBC,QAAQ,EAAE,gBAAgB;IAC1BC,IAAI,EAAE;EACR,CAAC;EACD;EACAC,OAAO,EAAE;IACPT,KAAK,EAAE,eAAe;IACtBU,WAAW,EAAE,qBAAqB;IAClCT,IAAI,EAAE,cAAc;IACpBU,UAAU,EAAE,oBAAoB;IAChCT,SAAS,EAAE,mBAAmB;IAC9BU,eAAe,EAAE,yBAAyB;IAC1CT,UAAU,EAAE,oBAAoB;IAChCU,gBAAgB,EAAE,0BAA0B;IAC5CC,MAAM,EAAE,gBAAgB;IACxBV,KAAK,EAAE,eAAe;IACtBW,WAAW,EAAE,qBAAqB;IAClCV,MAAM,EAAE,gBAAgB;IACxBW,YAAY,EAAE,sBAAsB;IACpCV,OAAO,EAAE,iBAAiB;IAC1BC,QAAQ,EAAE,kBAAkB;IAC5BU,cAAc,EAAE,wBAAwB;IACxCT,IAAI,EAAE,cAAc;IACpBU,UAAU,EAAE;EACd,CAAC;EACD;EACAC,MAAM,EAAE;IACNnB,KAAK,EAAE,cAAc;IACrBU,WAAW,EAAE,oBAAoB;IACjCT,IAAI,EAAE,aAAa;IACnBU,UAAU,EAAE,mBAAmB;IAC/BG,MAAM,EAAE,eAAe;IACvBV,KAAK,EAAE,cAAc;IACrBW,WAAW,EAAE,oBAAoB;IACjCV,MAAM,EAAE,eAAe;IACvBW,YAAY,EAAE,qBAAqB;IACnCV,OAAO,EAAE,gBAAgB;IACzBE,IAAI,EAAE,aAAa;IACnBU,UAAU,EAAE;EACd;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @author Naresh Dhamu
|
|
5
|
+
* @lastModified Fri 08 Aug 2025 at 06:53 PM
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { StyleSheet } from 'react-native';
|
|
9
|
+
const globalStyles = StyleSheet.create({
|
|
10
|
+
centerContainer: {
|
|
11
|
+
flex: 1,
|
|
12
|
+
alignItems: 'center',
|
|
13
|
+
justifyContent: 'center'
|
|
14
|
+
},
|
|
15
|
+
container: {
|
|
16
|
+
flex: 1
|
|
17
|
+
},
|
|
18
|
+
newContainer: {
|
|
19
|
+
flex: 1
|
|
20
|
+
},
|
|
21
|
+
// new styles
|
|
22
|
+
flexOneJustifyContentAndAlignItemsCenter: {
|
|
23
|
+
flex: 1,
|
|
24
|
+
justifyContent: 'center',
|
|
25
|
+
alignItems: 'center'
|
|
26
|
+
},
|
|
27
|
+
flexOneJustifyContentCenterAndAlignItemsCenter: {
|
|
28
|
+
flex: 1,
|
|
29
|
+
justifyContent: 'center',
|
|
30
|
+
alignItems: 'center'
|
|
31
|
+
},
|
|
32
|
+
hundredPercentWidth: {
|
|
33
|
+
width: '100%'
|
|
34
|
+
},
|
|
35
|
+
hundredPercentHeight: {
|
|
36
|
+
height: '100%'
|
|
37
|
+
},
|
|
38
|
+
marginZeroAndPaddingZero: {
|
|
39
|
+
margin: 0,
|
|
40
|
+
padding: 0
|
|
41
|
+
},
|
|
42
|
+
overflowHidden: {
|
|
43
|
+
overflow: 'hidden'
|
|
44
|
+
},
|
|
45
|
+
flexOne: {
|
|
46
|
+
flex: 1
|
|
47
|
+
},
|
|
48
|
+
flexZero: {
|
|
49
|
+
flex: 0
|
|
50
|
+
},
|
|
51
|
+
positionAbsolute: {
|
|
52
|
+
position: 'absolute'
|
|
53
|
+
},
|
|
54
|
+
twentyPercentWidth: {
|
|
55
|
+
width: '20%'
|
|
56
|
+
},
|
|
57
|
+
alignItemsCenterAndJustifyContentCenter: {
|
|
58
|
+
alignItems: 'center',
|
|
59
|
+
justifyContent: 'center'
|
|
60
|
+
},
|
|
61
|
+
textAlignCenter: {
|
|
62
|
+
textAlign: 'center'
|
|
63
|
+
},
|
|
64
|
+
flexRow_alignCenter_justifyBetween: {
|
|
65
|
+
flexDirection: 'row',
|
|
66
|
+
alignItems: 'center',
|
|
67
|
+
justifyContent: 'space-between'
|
|
68
|
+
},
|
|
69
|
+
flexOneWithBlackBackground: {
|
|
70
|
+
flex: 1,
|
|
71
|
+
backgroundColor: 'black'
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
export default globalStyles;
|
|
75
|
+
//# sourceMappingURL=globalStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","globalStyles","create","centerContainer","flex","alignItems","justifyContent","container","newContainer","flexOneJustifyContentAndAlignItemsCenter","flexOneJustifyContentCenterAndAlignItemsCenter","hundredPercentWidth","width","hundredPercentHeight","height","marginZeroAndPaddingZero","margin","padding","overflowHidden","overflow","flexOne","flexZero","positionAbsolute","position","twentyPercentWidth","alignItemsCenterAndJustifyContentCenter","textAlignCenter","textAlign","flexRow_alignCenter_justifyBetween","flexDirection","flexOneWithBlackBackground","backgroundColor"],"sourceRoot":"../../../../src","sources":["VideoPlayer/Styles/globalStyles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,cAAc;AAEzC,MAAMC,YAAY,GAAGD,UAAU,CAACE,MAAM,CAAC;EACrCC,eAAe,EAAE;IACfC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAE;EACR,CAAC;EACDI,YAAY,EAAE;IACZJ,IAAI,EAAE;EACR,CAAC;EACD;EACAK,wCAAwC,EAAE;IACxCL,IAAI,EAAE,CAAC;IACPE,cAAc,EAAE,QAAQ;IACxBD,UAAU,EAAE;EACd,CAAC;EACDK,8CAA8C,EAAE;IAC9CN,IAAI,EAAE,CAAC;IACPE,cAAc,EAAE,QAAQ;IACxBD,UAAU,EAAE;EACd,CAAC;EACDM,mBAAmB,EAAE;IACnBC,KAAK,EAAE;EACT,CAAC;EACDC,oBAAoB,EAAE;IACpBC,MAAM,EAAE;EACV,CAAC;EACDC,wBAAwB,EAAE;IACxBC,MAAM,EAAE,CAAC;IACTC,OAAO,EAAE;EACX,CAAC;EACDC,cAAc,EAAE;IACdC,QAAQ,EAAE;EACZ,CAAC;EACDC,OAAO,EAAE;IACPhB,IAAI,EAAE;EACR,CAAC;EACDiB,QAAQ,EAAE;IACRjB,IAAI,EAAE;EACR,CAAC;EACDkB,gBAAgB,EAAE;IAChBC,QAAQ,EAAE;EACZ,CAAC;EACDC,kBAAkB,EAAE;IAClBZ,KAAK,EAAE;EACT,CAAC;EACDa,uCAAuC,EAAE;IACvCpB,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDoB,eAAe,EAAE;IACfC,SAAS,EAAE;EACb,CAAC;EACDC,kCAAkC,EAAE;IAClCC,aAAa,EAAE,KAAK;IACpBxB,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDwB,0BAA0B,EAAE;IAC1B1B,IAAI,EAAE,CAAC;IACP2B,eAAe,EAAE;EACnB;AACF,CAAC,CAAC;AAEF,eAAe9B,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useCallback, useEffect } from 'react';
|
|
4
|
+
import { AppState, StyleSheet, View } from 'react-native';
|
|
5
|
+
import Video from 'react-native-video';
|
|
6
|
+
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
|
7
|
+
import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
8
|
+
import { runOnJS } from 'react-native-reanimated';
|
|
9
|
+
import { videoRef } from "./utils/videoRef.js";
|
|
10
|
+
import { lockToLandscape, lockToPortrait } from "./utils/lockOrientation.js";
|
|
11
|
+
import { getVideoSource, handlePause } from "./utils/index.js";
|
|
12
|
+
import MediaControlsProvider from "./MediaControls/MediaControlsProvider.js";
|
|
13
|
+
import { useVideoPlayerStore } from "./store/videoPlayerStore.js";
|
|
14
|
+
import { createPlayerEvents } from "./utils/playerEvents.js";
|
|
15
|
+
import globalStyles from "./Styles/globalStyles.js";
|
|
16
|
+
import { VideoPlayerConfigProvider } from "./context/index.js";
|
|
17
|
+
import { useWatchReporter } from "./utils/useWatchReporter.js";
|
|
18
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
|
+
const controlsStyles = {
|
|
20
|
+
hideForward: true,
|
|
21
|
+
hideDuration: true,
|
|
22
|
+
hideFullscreen: true,
|
|
23
|
+
hidePlayPause: true,
|
|
24
|
+
hideNavigationBarOnFullScreenMode: true,
|
|
25
|
+
hideNotificationBarOnFullScreenMode: true,
|
|
26
|
+
hideNext: true,
|
|
27
|
+
hidePosition: true,
|
|
28
|
+
hidePrevious: true,
|
|
29
|
+
hideRewind: true,
|
|
30
|
+
hideSeekBar: true,
|
|
31
|
+
hideSettingButton: true
|
|
32
|
+
};
|
|
33
|
+
const VideoPlayer = ({
|
|
34
|
+
onClose,
|
|
35
|
+
isFocused = true,
|
|
36
|
+
mode = 'fullscreen',
|
|
37
|
+
seekTime,
|
|
38
|
+
event,
|
|
39
|
+
autoNext = true,
|
|
40
|
+
theme,
|
|
41
|
+
onWatchProgress
|
|
42
|
+
}) => {
|
|
43
|
+
const {
|
|
44
|
+
isPaused,
|
|
45
|
+
resizeMode,
|
|
46
|
+
setResizeMode,
|
|
47
|
+
setControlsVisible,
|
|
48
|
+
controlsVisible,
|
|
49
|
+
playBackRate,
|
|
50
|
+
selectedAudioTrack,
|
|
51
|
+
selectedSubtitleTrack,
|
|
52
|
+
maxBitRate,
|
|
53
|
+
selectedVideoTrack,
|
|
54
|
+
setIsPaused,
|
|
55
|
+
playList,
|
|
56
|
+
currentTrackIndex,
|
|
57
|
+
activeTrack,
|
|
58
|
+
setError
|
|
59
|
+
} = useVideoPlayerStore();
|
|
60
|
+
const playerEvents = createPlayerEvents();
|
|
61
|
+
const {
|
|
62
|
+
reportProgress
|
|
63
|
+
} = useWatchReporter({
|
|
64
|
+
onWatchProgress
|
|
65
|
+
});
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
if (isFocused) {
|
|
68
|
+
if (mode === 'fullscreen') {
|
|
69
|
+
lockToLandscape();
|
|
70
|
+
} else {
|
|
71
|
+
lockToPortrait();
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
lockToPortrait();
|
|
75
|
+
}
|
|
76
|
+
}, [isFocused, mode]);
|
|
77
|
+
const handleCombinedProgress = useCallback(progressEvent => {
|
|
78
|
+
playerEvents.onProgress(progressEvent);
|
|
79
|
+
}, [playerEvents]);
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
if (seekTime && !activeTrack?.isTrailer && videoRef?.current) {
|
|
82
|
+
videoRef.current?.seek(seekTime);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
86
|
+
}, [seekTime, videoRef?.current]);
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
const handleAppStateChange = nextState => {
|
|
89
|
+
if (nextState === 'inactive' || nextState === 'background') {
|
|
90
|
+
handlePause();
|
|
91
|
+
setIsPaused(true);
|
|
92
|
+
reportProgress('PROGRESS');
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const sub = AppState.addEventListener('change', handleAppStateChange);
|
|
96
|
+
return () => sub.remove();
|
|
97
|
+
}, [reportProgress, setIsPaused]);
|
|
98
|
+
const trigger = type => {
|
|
99
|
+
switch (type) {
|
|
100
|
+
case 'Pinch':
|
|
101
|
+
if (resizeMode === 'cover') {
|
|
102
|
+
setResizeMode('contain');
|
|
103
|
+
} else {
|
|
104
|
+
setResizeMode('cover');
|
|
105
|
+
}
|
|
106
|
+
break;
|
|
107
|
+
case 'Tap':
|
|
108
|
+
{
|
|
109
|
+
setControlsVisible(!controlsVisible);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const composedGestures = Gesture.Race(Gesture.Pinch().onEnd(() => runOnJS(trigger)('Pinch')), Gesture.Tap().onEnd(() => runOnJS(trigger)('Tap')));
|
|
114
|
+
return /*#__PURE__*/_jsx(VideoPlayerConfigProvider, {
|
|
115
|
+
theme: theme,
|
|
116
|
+
children: /*#__PURE__*/_jsx(SafeAreaProvider, {
|
|
117
|
+
style: globalStyles.flexOne,
|
|
118
|
+
children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
119
|
+
style: globalStyles.flexOne,
|
|
120
|
+
children: /*#__PURE__*/_jsx(MediaControlsProvider, {
|
|
121
|
+
onClose: () => {
|
|
122
|
+
reportProgress('VIDEO_CLOSE');
|
|
123
|
+
onClose?.();
|
|
124
|
+
},
|
|
125
|
+
onPressEpisode: async ({
|
|
126
|
+
episode
|
|
127
|
+
}) => {
|
|
128
|
+
if (event?.onPressEpisode) {
|
|
129
|
+
return await event.onPressEpisode({
|
|
130
|
+
episode
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return Promise.resolve(true);
|
|
134
|
+
},
|
|
135
|
+
reportProgress: reportProgress,
|
|
136
|
+
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
137
|
+
gesture: composedGestures,
|
|
138
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
139
|
+
style: globalStyles.flexOneWithBlackBackground,
|
|
140
|
+
children: /*#__PURE__*/_jsx(Video, {
|
|
141
|
+
ref: videoRef,
|
|
142
|
+
source: getVideoSource({
|
|
143
|
+
playList,
|
|
144
|
+
currentTrackIndex
|
|
145
|
+
}),
|
|
146
|
+
paused: isPaused,
|
|
147
|
+
onProgress: handleCombinedProgress,
|
|
148
|
+
onLoad: playerEvents.onLoad,
|
|
149
|
+
onBuffer: playerEvents.onBuffer,
|
|
150
|
+
onEnd: () => {
|
|
151
|
+
playerEvents.onEnd({
|
|
152
|
+
reportProgress,
|
|
153
|
+
onPressEpisode: event?.onPressEpisode ?? (async () => true),
|
|
154
|
+
autoNext
|
|
155
|
+
});
|
|
156
|
+
},
|
|
157
|
+
onLoadStart: playerEvents.onLoadStart,
|
|
158
|
+
onError: () => setError("Video couldn't be loaded"),
|
|
159
|
+
controls: false,
|
|
160
|
+
resizeMode: resizeMode || 'contain',
|
|
161
|
+
rate: playBackRate || 1,
|
|
162
|
+
selectedAudioTrack: selectedAudioTrack,
|
|
163
|
+
selectedTextTrack: selectedSubtitleTrack?.value === 'Off' ? undefined : selectedSubtitleTrack,
|
|
164
|
+
selectedVideoTrack: selectedVideoTrack ? {
|
|
165
|
+
type: selectedVideoTrack.type,
|
|
166
|
+
value: selectedVideoTrack.value
|
|
167
|
+
} : undefined,
|
|
168
|
+
maxBitRate: maxBitRate ?? undefined,
|
|
169
|
+
style: StyleSheet.absoluteFillObject,
|
|
170
|
+
controlsStyles: controlsStyles
|
|
171
|
+
})
|
|
172
|
+
})
|
|
173
|
+
})
|
|
174
|
+
})
|
|
175
|
+
})
|
|
176
|
+
})
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
export default VideoPlayer;
|
|
180
|
+
//# sourceMappingURL=VideoPlayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","AppState","StyleSheet","View","Video","SafeAreaProvider","Gesture","GestureDetector","GestureHandlerRootView","runOnJS","videoRef","lockToLandscape","lockToPortrait","getVideoSource","handlePause","MediaControlsProvider","useVideoPlayerStore","createPlayerEvents","globalStyles","VideoPlayerConfigProvider","useWatchReporter","jsx","_jsx","controlsStyles","hideForward","hideDuration","hideFullscreen","hidePlayPause","hideNavigationBarOnFullScreenMode","hideNotificationBarOnFullScreenMode","hideNext","hidePosition","hidePrevious","hideRewind","hideSeekBar","hideSettingButton","VideoPlayer","onClose","isFocused","mode","seekTime","event","autoNext","theme","onWatchProgress","isPaused","resizeMode","setResizeMode","setControlsVisible","controlsVisible","playBackRate","selectedAudioTrack","selectedSubtitleTrack","maxBitRate","selectedVideoTrack","setIsPaused","playList","currentTrackIndex","activeTrack","setError","playerEvents","reportProgress","handleCombinedProgress","progressEvent","onProgress","isTrailer","current","seek","handleAppStateChange","nextState","sub","addEventListener","remove","trigger","type","composedGestures","Race","Pinch","onEnd","Tap","children","style","flexOne","onPressEpisode","episode","Promise","resolve","gesture","flexOneWithBlackBackground","ref","source","paused","onLoad","onBuffer","onLoadStart","onError","controls","rate","selectedTextTrack","value","undefined","absoluteFillObject"],"sourceRoot":"../../../src","sources":["VideoPlayer/VideoPlayer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,QAAQ,OAAO;AACrD,SAASC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAA6B,cAAc;AAC9E,OAAOC,KAAK,MAGL,oBAAoB;AAC3B,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,SACEC,OAAO,EACPC,eAAe,EACfC,sBAAsB,QACjB,8BAA8B;AACrC,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,SAASC,QAAQ,QAAQ,qBAAkB;AAC3C,SAASC,eAAe,EAAEC,cAAc,QAAQ,4BAAyB;AACzE,SAASC,cAAc,EAAEC,WAAW,QAAQ,kBAAS;AACrD,OAAOC,qBAAqB,MAAM,0CAAuC;AACzE,SAASC,mBAAmB,QAAQ,6BAA0B;AAC9D,SAASC,kBAAkB,QAAQ,yBAAsB;AAEzD,OAAOC,YAAY,MAAM,0BAAuB;AAChD,SAASC,yBAAyB,QAA+B,oBAAW;AAC5E,SACEC,gBAAgB,QAEX,6BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAoBlC,MAAMC,cAAc,GAAG;EACrBC,WAAW,EAAE,IAAI;EACjBC,YAAY,EAAE,IAAI;EAClBC,cAAc,EAAE,IAAI;EACpBC,aAAa,EAAE,IAAI;EACnBC,iCAAiC,EAAE,IAAI;EACvCC,mCAAmC,EAAE,IAAI;EACzCC,QAAQ,EAAE,IAAI;EACdC,YAAY,EAAE,IAAI;EAClBC,YAAY,EAAE,IAAI;EAClBC,UAAU,EAAE,IAAI;EAChBC,WAAW,EAAE,IAAI;EACjBC,iBAAiB,EAAE;AACrB,CAAC;AAED,MAAMC,WAAuC,GAAGA,CAAC;EAC/CC,OAAO;EACPC,SAAS,GAAG,IAAI;EAChBC,IAAI,GAAG,YAAY;EACnBC,QAAQ;EACRC,KAAK;EACLC,QAAQ,GAAG,IAAI;EACfC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,QAAQ;IACRC,UAAU;IACVC,aAAa;IACbC,kBAAkB;IAClBC,eAAe;IACfC,YAAY;IACZC,kBAAkB;IAClBC,qBAAqB;IACrBC,UAAU;IACVC,kBAAkB;IAClBC,WAAW;IACXC,QAAQ;IACRC,iBAAiB;IACjBC,WAAW;IACXC;EACF,CAAC,GAAG3C,mBAAmB,CAAC,CAAC;EAEzB,MAAM4C,YAAY,GAAG3C,kBAAkB,CAAC,CAAC;EACzC,MAAM;IAAE4C;EAAe,CAAC,GAAGzC,gBAAgB,CAAC;IAAEwB;EAAgB,CAAC,CAAC;EAEhE5C,SAAS,CAAC,MAAM;IACd,IAAIsC,SAAS,EAAE;MACb,IAAIC,IAAI,KAAK,YAAY,EAAE;QACzB5B,eAAe,CAAC,CAAC;MACnB,CAAC,MAAM;QACLC,cAAc,CAAC,CAAC;MAClB;IACF,CAAC,MAAM;MACLA,cAAc,CAAC,CAAC;IAClB;EACF,CAAC,EAAE,CAAC0B,SAAS,EAAEC,IAAI,CAAC,CAAC;EAErB,MAAMuB,sBAAsB,GAAG/D,WAAW,CACvCgE,aAA6B,IAAK;IACjCH,YAAY,CAACI,UAAU,CAACD,aAAa,CAAC;EACxC,CAAC,EACD,CAACH,YAAY,CACf,CAAC;EAED5D,SAAS,CAAC,MAAM;IACd,IAAIwC,QAAQ,IAAI,CAACkB,WAAW,EAAEO,SAAS,IAAIvD,QAAQ,EAAEwD,OAAO,EAAE;MAC5DxD,QAAQ,CAACwD,OAAO,EAAEC,IAAI,CAAC3B,QAAQ,CAAC;IAClC;;IAEA;EACF,CAAC,EAAE,CAACA,QAAQ,EAAE9B,QAAQ,EAAEwD,OAAO,CAAC,CAAC;EAEjClE,SAAS,CAAC,MAAM;IACd,MAAMoE,oBAAoB,GAAIC,SAAyB,IAAK;MAC1D,IAAIA,SAAS,KAAK,UAAU,IAAIA,SAAS,KAAK,YAAY,EAAE;QAC1DvD,WAAW,CAAC,CAAC;QACbyC,WAAW,CAAC,IAAI,CAAC;QACjBM,cAAc,CAAC,UAAU,CAAC;MAC5B;IACF,CAAC;IACD,MAAMS,GAAG,GAAGrE,QAAQ,CAACsE,gBAAgB,CAAC,QAAQ,EAAEH,oBAAoB,CAAC;IACrE,OAAO,MAAME,GAAG,CAACE,MAAM,CAAC,CAAC;EAC3B,CAAC,EAAE,CAACX,cAAc,EAAEN,WAAW,CAAC,CAAC;EAEjC,MAAMkB,OAAO,GAAIC,IAAqB,IAAK;IACzC,QAAQA,IAAI;MACV,KAAK,OAAO;QACV,IAAI5B,UAAU,KAAK,OAAO,EAAE;UAC1BC,aAAa,CAAC,SAAS,CAAC;QAC1B,CAAC,MAAM;UACLA,aAAa,CAAC,OAAO,CAAC;QACxB;QACA;MACF,KAAK,KAAK;QAAE;UACVC,kBAAkB,CAAC,CAACC,eAAe,CAAC;QACtC;IACF;EACF,CAAC;EACD,MAAM0B,gBAAgB,GAAGrE,OAAO,CAACsE,IAAI,CACnCtE,OAAO,CAACuE,KAAK,CAAC,CAAC,CAACC,KAAK,CAAC,MAAMrE,OAAO,CAACgE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EACtDnE,OAAO,CAACyE,GAAG,CAAC,CAAC,CAACD,KAAK,CAAC,MAAMrE,OAAO,CAACgE,OAAO,CAAC,CAAC,KAAK,CAAC,CACnD,CAAC;EAED,oBACEnD,IAAA,CAACH,yBAAyB;IAACwB,KAAK,EAAEA,KAAM;IAAAqC,QAAA,eACtC1D,IAAA,CAACjB,gBAAgB;MAAC4E,KAAK,EAAE/D,YAAY,CAACgE,OAAQ;MAAAF,QAAA,eAC5C1D,IAAA,CAACd,sBAAsB;QAACyE,KAAK,EAAE/D,YAAY,CAACgE,OAAQ;QAAAF,QAAA,eAClD1D,IAAA,CAACP,qBAAqB;UACpBsB,OAAO,EAAEA,CAAA,KAAM;YACbwB,cAAc,CAAC,aAAa,CAAC;YAC7BxB,OAAO,GAAG,CAAC;UACb,CAAE;UACF8C,cAAc,EAAE,MAAAA,CAAO;YAAEC;UAAQ,CAAC,KAAK;YACrC,IAAI3C,KAAK,EAAE0C,cAAc,EAAE;cACzB,OAAO,MAAM1C,KAAK,CAAC0C,cAAc,CAAC;gBAAEC;cAAQ,CAAC,CAAC;YAChD;YACA,OAAOC,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC;UAC9B,CAAE;UACFzB,cAAc,EAAEA,cAAe;UAAAmB,QAAA,eAE/B1D,IAAA,CAACf,eAAe;YAACgF,OAAO,EAAEZ,gBAAiB;YAAAK,QAAA,eACzC1D,IAAA,CAACnB,IAAI;cAAC8E,KAAK,EAAE/D,YAAY,CAACsE,0BAA2B;cAAAR,QAAA,eACnD1D,IAAA,CAAClB,KAAK;gBACJqF,GAAG,EAAE/E,QAAS;gBACdgF,MAAM,EAAE7E,cAAc,CAAC;kBAAE2C,QAAQ;kBAAEC;gBAAkB,CAAC,CAAE;gBACxDkC,MAAM,EAAE9C,QAAS;gBACjBmB,UAAU,EAAEF,sBAAuB;gBACnC8B,MAAM,EAAEhC,YAAY,CAACgC,MAAO;gBAC5BC,QAAQ,EAAEjC,YAAY,CAACiC,QAAS;gBAChCf,KAAK,EAAEA,CAAA,KAAM;kBACXlB,YAAY,CAACkB,KAAK,CAAC;oBACjBjB,cAAc;oBACdsB,cAAc,EACZ1C,KAAK,EAAE0C,cAAc,KAAK,YAAY,IAAI,CAAC;oBAC7CzC;kBACF,CAAC,CAAC;gBACJ,CAAE;gBACFoD,WAAW,EAAElC,YAAY,CAACkC,WAAY;gBACtCC,OAAO,EAAEA,CAAA,KAAMpC,QAAQ,CAAC,0BAA0B,CAAE;gBACpDqC,QAAQ,EAAE,KAAM;gBAChBlD,UAAU,EAAEA,UAAU,IAAI,SAAU;gBACpCmD,IAAI,EAAE/C,YAAY,IAAI,CAAE;gBACxBC,kBAAkB,EAAEA,kBAAoC;gBACxD+C,iBAAiB,EACf9C,qBAAqB,EAAE+C,KAAK,KAAK,KAAK,GAClCC,SAAS,GACRhD,qBACN;gBACDE,kBAAkB,EAChBA,kBAAkB,GACd;kBACEoB,IAAI,EAAEpB,kBAAkB,CAACoB,IAAI;kBAC7ByB,KAAK,EAAE7C,kBAAkB,CAAC6C;gBAC5B,CAAC,GACDC,SACL;gBACD/C,UAAU,EAAEA,UAAU,IAAI+C,SAAU;gBACpCnB,KAAK,EAAE/E,UAAU,CAACmG,kBAAmB;gBACrC9E,cAAc,EAAEA;cAAe,CAChC;YAAC,CACE;UAAC,CACQ;QAAC,CACG;MAAC,CACF;IAAC,CACT;EAAC,CACM,CAAC;AAEhC,CAAC;AAED,eAAea,WAAW","ignoreList":[]}
|