@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.
Files changed (185) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +308 -0
  3. package/lib/module/VideoPlayer/MediaControls/BottomControls.js +156 -0
  4. package/lib/module/VideoPlayer/MediaControls/BottomControls.js.map +1 -0
  5. package/lib/module/VideoPlayer/MediaControls/MediaControls.js +27 -0
  6. package/lib/module/VideoPlayer/MediaControls/MediaControls.js.map +1 -0
  7. package/lib/module/VideoPlayer/MediaControls/MediaControlsProvider.js +85 -0
  8. package/lib/module/VideoPlayer/MediaControls/MediaControlsProvider.js.map +1 -0
  9. package/lib/module/VideoPlayer/MediaControls/MiddleControls.js +208 -0
  10. package/lib/module/VideoPlayer/MediaControls/MiddleControls.js.map +1 -0
  11. package/lib/module/VideoPlayer/MediaControls/TopControls.js +94 -0
  12. package/lib/module/VideoPlayer/MediaControls/TopControls.js.map +1 -0
  13. package/lib/module/VideoPlayer/Styles/fonts.js +58 -0
  14. package/lib/module/VideoPlayer/Styles/fonts.js.map +1 -0
  15. package/lib/module/VideoPlayer/Styles/globalStyles.js +75 -0
  16. package/lib/module/VideoPlayer/Styles/globalStyles.js.map +1 -0
  17. package/lib/module/VideoPlayer/VideoPlayer.js +180 -0
  18. package/lib/module/VideoPlayer/VideoPlayer.js.map +1 -0
  19. package/lib/module/VideoPlayer/components/ProgressBar.js +84 -0
  20. package/lib/module/VideoPlayer/components/ProgressBar.js.map +1 -0
  21. package/lib/module/VideoPlayer/components/SkipAndNextControls.js +154 -0
  22. package/lib/module/VideoPlayer/components/SkipAndNextControls.js.map +1 -0
  23. package/lib/module/VideoPlayer/components/SubtitleView.js +57 -0
  24. package/lib/module/VideoPlayer/components/SubtitleView.js.map +1 -0
  25. package/lib/module/VideoPlayer/context/VideoPlayerConfig.js +47 -0
  26. package/lib/module/VideoPlayer/context/VideoPlayerConfig.js.map +1 -0
  27. package/lib/module/VideoPlayer/context/index.js +4 -0
  28. package/lib/module/VideoPlayer/context/index.js.map +1 -0
  29. package/lib/module/VideoPlayer/index.js +7 -0
  30. package/lib/module/VideoPlayer/index.js.map +1 -0
  31. package/lib/module/VideoPlayer/model/AudioAndSubtitles.js +257 -0
  32. package/lib/module/VideoPlayer/model/AudioAndSubtitles.js.map +1 -0
  33. package/lib/module/VideoPlayer/model/Episodes.js +272 -0
  34. package/lib/module/VideoPlayer/model/Episodes.js.map +1 -0
  35. package/lib/module/VideoPlayer/model/SettingModal.js +115 -0
  36. package/lib/module/VideoPlayer/model/SettingModal.js.map +1 -0
  37. package/lib/module/VideoPlayer/model/SpeedControls.js +140 -0
  38. package/lib/module/VideoPlayer/model/SpeedControls.js.map +1 -0
  39. package/lib/module/VideoPlayer/model/VideoPlayerSettings.js +113 -0
  40. package/lib/module/VideoPlayer/model/VideoPlayerSettings.js.map +1 -0
  41. package/lib/module/VideoPlayer/store/index.js +5 -0
  42. package/lib/module/VideoPlayer/store/index.js.map +1 -0
  43. package/lib/module/VideoPlayer/store/videoPlayer.type.js +4 -0
  44. package/lib/module/VideoPlayer/store/videoPlayer.type.js.map +1 -0
  45. package/lib/module/VideoPlayer/store/videoPlayerStore.js +147 -0
  46. package/lib/module/VideoPlayer/store/videoPlayerStore.js.map +1 -0
  47. package/lib/module/VideoPlayer/utils/Display.js +22 -0
  48. package/lib/module/VideoPlayer/utils/Display.js.map +1 -0
  49. package/lib/module/VideoPlayer/utils/PlatformSelector.js +18 -0
  50. package/lib/module/VideoPlayer/utils/PlatformSelector.js.map +1 -0
  51. package/lib/module/VideoPlayer/utils/hooks/index.js +5 -0
  52. package/lib/module/VideoPlayer/utils/hooks/index.js.map +1 -0
  53. package/lib/module/VideoPlayer/utils/hooks/useVideoPlayerBack.js +48 -0
  54. package/lib/module/VideoPlayer/utils/hooks/useVideoPlayerBack.js.map +1 -0
  55. package/lib/module/VideoPlayer/utils/hooks/useVideoResolutions.js +88 -0
  56. package/lib/module/VideoPlayer/utils/hooks/useVideoResolutions.js.map +1 -0
  57. package/lib/module/VideoPlayer/utils/index.js +10 -0
  58. package/lib/module/VideoPlayer/utils/index.js.map +1 -0
  59. package/lib/module/VideoPlayer/utils/lockOrientation.js +31 -0
  60. package/lib/module/VideoPlayer/utils/lockOrientation.js.map +1 -0
  61. package/lib/module/VideoPlayer/utils/playerEvents.js +79 -0
  62. package/lib/module/VideoPlayer/utils/playerEvents.js.map +1 -0
  63. package/lib/module/VideoPlayer/utils/timeFormatter.js +35 -0
  64. package/lib/module/VideoPlayer/utils/timeFormatter.js.map +1 -0
  65. package/lib/module/VideoPlayer/utils/useWatchReporter.js +68 -0
  66. package/lib/module/VideoPlayer/utils/useWatchReporter.js.map +1 -0
  67. package/lib/module/VideoPlayer/utils/videoControl.js +166 -0
  68. package/lib/module/VideoPlayer/utils/videoControl.js.map +1 -0
  69. package/lib/module/VideoPlayer/utils/videoRef.js +5 -0
  70. package/lib/module/VideoPlayer/utils/videoRef.js.map +1 -0
  71. package/lib/module/VideoPlayer/utils/videoSource.js +17 -0
  72. package/lib/module/VideoPlayer/utils/videoSource.js.map +1 -0
  73. package/lib/module/index.js +4 -0
  74. package/lib/module/index.js.map +1 -0
  75. package/lib/module/package.json +1 -0
  76. package/lib/typescript/package.json +1 -0
  77. package/lib/typescript/src/VideoPlayer/MediaControls/BottomControls.d.ts +3 -0
  78. package/lib/typescript/src/VideoPlayer/MediaControls/BottomControls.d.ts.map +1 -0
  79. package/lib/typescript/src/VideoPlayer/MediaControls/MediaControls.d.ts +6 -0
  80. package/lib/typescript/src/VideoPlayer/MediaControls/MediaControls.d.ts.map +1 -0
  81. package/lib/typescript/src/VideoPlayer/MediaControls/MediaControlsProvider.d.ts +14 -0
  82. package/lib/typescript/src/VideoPlayer/MediaControls/MediaControlsProvider.d.ts.map +1 -0
  83. package/lib/typescript/src/VideoPlayer/MediaControls/MiddleControls.d.ts +3 -0
  84. package/lib/typescript/src/VideoPlayer/MediaControls/MiddleControls.d.ts.map +1 -0
  85. package/lib/typescript/src/VideoPlayer/MediaControls/TopControls.d.ts +7 -0
  86. package/lib/typescript/src/VideoPlayer/MediaControls/TopControls.d.ts.map +1 -0
  87. package/lib/typescript/src/VideoPlayer/Styles/fonts.d.ts +54 -0
  88. package/lib/typescript/src/VideoPlayer/Styles/fonts.d.ts.map +1 -0
  89. package/lib/typescript/src/VideoPlayer/Styles/globalStyles.d.ts +70 -0
  90. package/lib/typescript/src/VideoPlayer/Styles/globalStyles.d.ts.map +1 -0
  91. package/lib/typescript/src/VideoPlayer/VideoPlayer.d.ts +22 -0
  92. package/lib/typescript/src/VideoPlayer/VideoPlayer.d.ts.map +1 -0
  93. package/lib/typescript/src/VideoPlayer/components/ProgressBar.d.ts +12 -0
  94. package/lib/typescript/src/VideoPlayer/components/ProgressBar.d.ts.map +1 -0
  95. package/lib/typescript/src/VideoPlayer/components/SkipAndNextControls.d.ts +12 -0
  96. package/lib/typescript/src/VideoPlayer/components/SkipAndNextControls.d.ts.map +1 -0
  97. package/lib/typescript/src/VideoPlayer/components/SubtitleView.d.ts +3 -0
  98. package/lib/typescript/src/VideoPlayer/components/SubtitleView.d.ts.map +1 -0
  99. package/lib/typescript/src/VideoPlayer/context/VideoPlayerConfig.d.ts +25 -0
  100. package/lib/typescript/src/VideoPlayer/context/VideoPlayerConfig.d.ts.map +1 -0
  101. package/lib/typescript/src/VideoPlayer/context/index.d.ts +3 -0
  102. package/lib/typescript/src/VideoPlayer/context/index.d.ts.map +1 -0
  103. package/lib/typescript/src/VideoPlayer/index.d.ts +5 -0
  104. package/lib/typescript/src/VideoPlayer/index.d.ts.map +1 -0
  105. package/lib/typescript/src/VideoPlayer/model/AudioAndSubtitles.d.ts +4 -0
  106. package/lib/typescript/src/VideoPlayer/model/AudioAndSubtitles.d.ts.map +1 -0
  107. package/lib/typescript/src/VideoPlayer/model/Episodes.d.ts +12 -0
  108. package/lib/typescript/src/VideoPlayer/model/Episodes.d.ts.map +1 -0
  109. package/lib/typescript/src/VideoPlayer/model/SettingModal.d.ts +12 -0
  110. package/lib/typescript/src/VideoPlayer/model/SettingModal.d.ts.map +1 -0
  111. package/lib/typescript/src/VideoPlayer/model/SpeedControls.d.ts +4 -0
  112. package/lib/typescript/src/VideoPlayer/model/SpeedControls.d.ts.map +1 -0
  113. package/lib/typescript/src/VideoPlayer/model/VideoPlayerSettings.d.ts +7 -0
  114. package/lib/typescript/src/VideoPlayer/model/VideoPlayerSettings.d.ts.map +1 -0
  115. package/lib/typescript/src/VideoPlayer/store/index.d.ts +3 -0
  116. package/lib/typescript/src/VideoPlayer/store/index.d.ts.map +1 -0
  117. package/lib/typescript/src/VideoPlayer/store/videoPlayer.type.d.ts +144 -0
  118. package/lib/typescript/src/VideoPlayer/store/videoPlayer.type.d.ts.map +1 -0
  119. package/lib/typescript/src/VideoPlayer/store/videoPlayerStore.d.ts +20 -0
  120. package/lib/typescript/src/VideoPlayer/store/videoPlayerStore.d.ts.map +1 -0
  121. package/lib/typescript/src/VideoPlayer/utils/Display.d.ts +8 -0
  122. package/lib/typescript/src/VideoPlayer/utils/Display.d.ts.map +1 -0
  123. package/lib/typescript/src/VideoPlayer/utils/PlatformSelector.d.ts +11 -0
  124. package/lib/typescript/src/VideoPlayer/utils/PlatformSelector.d.ts.map +1 -0
  125. package/lib/typescript/src/VideoPlayer/utils/hooks/index.d.ts +3 -0
  126. package/lib/typescript/src/VideoPlayer/utils/hooks/index.d.ts.map +1 -0
  127. package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoPlayerBack.d.ts +6 -0
  128. package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoPlayerBack.d.ts.map +1 -0
  129. package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoResolutions.d.ts +12 -0
  130. package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoResolutions.d.ts.map +1 -0
  131. package/lib/typescript/src/VideoPlayer/utils/index.d.ts +8 -0
  132. package/lib/typescript/src/VideoPlayer/utils/index.d.ts.map +1 -0
  133. package/lib/typescript/src/VideoPlayer/utils/lockOrientation.d.ts +3 -0
  134. package/lib/typescript/src/VideoPlayer/utils/lockOrientation.d.ts.map +1 -0
  135. package/lib/typescript/src/VideoPlayer/utils/playerEvents.d.ts +18 -0
  136. package/lib/typescript/src/VideoPlayer/utils/playerEvents.d.ts.map +1 -0
  137. package/lib/typescript/src/VideoPlayer/utils/timeFormatter.d.ts +9 -0
  138. package/lib/typescript/src/VideoPlayer/utils/timeFormatter.d.ts.map +1 -0
  139. package/lib/typescript/src/VideoPlayer/utils/useWatchReporter.d.ts +26 -0
  140. package/lib/typescript/src/VideoPlayer/utils/useWatchReporter.d.ts.map +1 -0
  141. package/lib/typescript/src/VideoPlayer/utils/videoControl.d.ts +17 -0
  142. package/lib/typescript/src/VideoPlayer/utils/videoControl.d.ts.map +1 -0
  143. package/lib/typescript/src/VideoPlayer/utils/videoRef.d.ts +3 -0
  144. package/lib/typescript/src/VideoPlayer/utils/videoRef.d.ts.map +1 -0
  145. package/lib/typescript/src/VideoPlayer/utils/videoSource.d.ts +10 -0
  146. package/lib/typescript/src/VideoPlayer/utils/videoSource.d.ts.map +1 -0
  147. package/lib/typescript/src/index.d.ts +2 -0
  148. package/lib/typescript/src/index.d.ts.map +1 -0
  149. package/package.json +191 -0
  150. package/src/VideoPlayer/MediaControls/BottomControls.tsx +185 -0
  151. package/src/VideoPlayer/MediaControls/MediaControls.tsx +29 -0
  152. package/src/VideoPlayer/MediaControls/MediaControlsProvider.tsx +99 -0
  153. package/src/VideoPlayer/MediaControls/MiddleControls.tsx +232 -0
  154. package/src/VideoPlayer/MediaControls/TopControls.tsx +92 -0
  155. package/src/VideoPlayer/Styles/fonts.ts +106 -0
  156. package/src/VideoPlayer/Styles/globalStyles.ts +74 -0
  157. package/src/VideoPlayer/VideoPlayer.tsx +217 -0
  158. package/src/VideoPlayer/components/ProgressBar.tsx +98 -0
  159. package/src/VideoPlayer/components/SkipAndNextControls.tsx +195 -0
  160. package/src/VideoPlayer/components/SubtitleView.tsx +53 -0
  161. package/src/VideoPlayer/context/VideoPlayerConfig.tsx +65 -0
  162. package/src/VideoPlayer/context/index.ts +5 -0
  163. package/src/VideoPlayer/index.ts +4 -0
  164. package/src/VideoPlayer/model/AudioAndSubtitles.tsx +302 -0
  165. package/src/VideoPlayer/model/Episodes.tsx +294 -0
  166. package/src/VideoPlayer/model/SettingModal.tsx +128 -0
  167. package/src/VideoPlayer/model/SpeedControls.tsx +134 -0
  168. package/src/VideoPlayer/model/VideoPlayerSettings.tsx +141 -0
  169. package/src/VideoPlayer/store/index.ts +2 -0
  170. package/src/VideoPlayer/store/videoPlayer.type.ts +192 -0
  171. package/src/VideoPlayer/store/videoPlayerStore.ts +101 -0
  172. package/src/VideoPlayer/utils/Display.ts +14 -0
  173. package/src/VideoPlayer/utils/PlatformSelector.ts +18 -0
  174. package/src/VideoPlayer/utils/hooks/index.ts +2 -0
  175. package/src/VideoPlayer/utils/hooks/useVideoPlayerBack.ts +66 -0
  176. package/src/VideoPlayer/utils/hooks/useVideoResolutions.ts +119 -0
  177. package/src/VideoPlayer/utils/index.ts +7 -0
  178. package/src/VideoPlayer/utils/lockOrientation.ts +34 -0
  179. package/src/VideoPlayer/utils/playerEvents.ts +97 -0
  180. package/src/VideoPlayer/utils/timeFormatter.ts +47 -0
  181. package/src/VideoPlayer/utils/useWatchReporter.ts +104 -0
  182. package/src/VideoPlayer/utils/videoControl.ts +192 -0
  183. package/src/VideoPlayer/utils/videoRef.ts +4 -0
  184. package/src/VideoPlayer/utils/videoSource.ts +23 -0
  185. 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":[]}