@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 @@
1
+ {"version":3,"names":["useCallback","FlatList","TouchableOpacity","View","StyleSheet","Text","scale","verticalScale","RFValue","SelectedVideoTrackType","globalStyles","useVideoPlayerStore","useVideoPlayerConfig","jsx","_jsx","jsxs","_jsxs","VideoPlayerSettings","resolutions","setMaxBitRate","setSelectedVideoTrack","setIsPaused","setSettingsModal","setControlsVisible","maxBitRate","colors","handleSelect","item","height","type","RESOLUTION","value","Number","bandwidth","isVisible","action","keyExtractor","index","renderItem","isSelected","onPress","activeOpacity","children","style","styles","optionText","color","text","optionTextSelected","optionTextUnselected","flexOne","container","headerText","marginTopBottom","data","showsVerticalScrollIndicator","contentContainerStyle","paddingBottom","ItemSeparatorComponent","create","alignItems","paddingHorizontal","fontSize","fontWeight","textAlign","marginBottom","paddingTop","paddingVertical","textDecorationLine","opacity"],"sourceRoot":"../../../../src","sources":["VideoPlayer/model/VideoPlayerSettings.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export * from "./videoPlayerStore.js";
4
+ export * from "./videoPlayer.type.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["VideoPlayer/store/index.ts"],"mappings":";;AAAA,cAAc,uBAAoB;AAClC,cAAc,uBAAoB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=videoPlayer.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["VideoPlayer/store/videoPlayer.type.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @author Naresh Dhamu
5
+ * @lastModified Sat 16 Aug 2025 at 10:26 AM
6
+ */
7
+ import { create } from 'zustand';
8
+ import { createJSONStorage, persist } from 'zustand/middleware';
9
+ import { MMKV } from 'react-native-mmkv';
10
+ import { ResizeMode } from 'react-native-video';
11
+ export const storage = new MMKV({
12
+ id: 'videoPlayerStorage',
13
+ encryptionKey: 'videoPlayerKey'
14
+ });
15
+ export const mmkvStorage = {
16
+ setItem: (key, value) => storage.set(key, value),
17
+ getItem: key => storage.getString(key) ?? null,
18
+ removeItem: key => storage.delete(key)
19
+ };
20
+ const storeDataDefaults = {
21
+ currentTime: 0,
22
+ duration: 0,
23
+ isPaused: false,
24
+ isBuffering: false,
25
+ resizeMode: ResizeMode.CONTAIN,
26
+ controlsVisible: true,
27
+ controlsTimer: 6,
28
+ activeTrack: null,
29
+ playableDuration: 0,
30
+ settingsModal: {
31
+ isVisible: false,
32
+ action: 'none'
33
+ },
34
+ playBackRate: 1,
35
+ playBackRateLabel: null,
36
+ onLoad: null,
37
+ selectedAudioTrack: null,
38
+ selectedSubtitleTrack: null,
39
+ selectedVideoTrack: null,
40
+ activeSubtitle: null,
41
+ maxBitRate: null,
42
+ startWatchTime: null,
43
+ playList: [],
44
+ currentTrackIndex: 0,
45
+ contentSeasons: null,
46
+ activeSeason: null,
47
+ error: null,
48
+ isViewCounted: false,
49
+ isSkipIntroVisible: false,
50
+ isNextEpisodeVisible: false
51
+ };
52
+ export const useVideoPlayerStore = create()(persist(set => ({
53
+ ...storeDataDefaults,
54
+ setCurrentTime: currentTime => set({
55
+ currentTime
56
+ }),
57
+ setDuration: duration => set({
58
+ duration
59
+ }),
60
+ setIsPaused: isPaused => set({
61
+ isPaused
62
+ }),
63
+ setIsBuffering: isBuffering => set({
64
+ isBuffering
65
+ }),
66
+ setResizeMode: resizeMode => set({
67
+ resizeMode
68
+ }),
69
+ setControlsVisible: controlsVisible => set({
70
+ controlsVisible
71
+ }),
72
+ setControlsTimer: controlsTimer => set({
73
+ controlsTimer
74
+ }),
75
+ setActiveTrack: activeTrack => set({
76
+ activeTrack
77
+ }),
78
+ setPlayableDuration: playableDuration => set({
79
+ playableDuration
80
+ }),
81
+ setSettingsModal: ({
82
+ isVisible,
83
+ action
84
+ }) => set({
85
+ settingsModal: {
86
+ isVisible,
87
+ action
88
+ }
89
+ }),
90
+ setPlayBackRate: (playBackRate, playBackRateLabel) => set({
91
+ playBackRate,
92
+ playBackRateLabel
93
+ }),
94
+ setOnLoad: onLoad => set({
95
+ onLoad
96
+ }),
97
+ setSelectedAudioTrack: selectedAudioTrack => set({
98
+ selectedAudioTrack
99
+ }),
100
+ setSelectedSubtitleTrack: selectedSubtitleTrack => set({
101
+ selectedSubtitleTrack
102
+ }),
103
+ setSelectedVideoTrack: selectedVideoTrack => set({
104
+ selectedVideoTrack
105
+ }),
106
+ setActiveSubtitle: activeSubtitle => set({
107
+ activeSubtitle
108
+ }),
109
+ setMaxBitRate: maxBitRate => set({
110
+ maxBitRate
111
+ }),
112
+ setStartWatchTime: startWatchTime => set({
113
+ startWatchTime
114
+ }),
115
+ setPlayList: playList => set({
116
+ playList
117
+ }),
118
+ setCurrentTrackIndex: currentTrackIndex => set({
119
+ currentTrackIndex
120
+ }),
121
+ setContentSeasons: contentSeasons => set({
122
+ contentSeasons
123
+ }),
124
+ setActiveSeason: activeSeason => set({
125
+ activeSeason
126
+ }),
127
+ setError: error => set({
128
+ error
129
+ }),
130
+ setIsViewCounted: isViewCounted => set({
131
+ isViewCounted
132
+ }),
133
+ setIsSkipIntroVisible: isSkipIntroVisible => set({
134
+ isSkipIntroVisible
135
+ }),
136
+ setIsNextEpisodeVisible: isNextEpisodeVisible => set({
137
+ isNextEpisodeVisible
138
+ }),
139
+ resetStore: () => {
140
+ set(storeDataDefaults);
141
+ storage.clearAll();
142
+ }
143
+ }), {
144
+ name: 'VideoPlayerStorage',
145
+ storage: createJSONStorage(() => mmkvStorage)
146
+ }));
147
+ //# sourceMappingURL=videoPlayerStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","createJSONStorage","persist","MMKV","ResizeMode","storage","id","encryptionKey","mmkvStorage","setItem","key","value","set","getItem","getString","removeItem","delete","storeDataDefaults","currentTime","duration","isPaused","isBuffering","resizeMode","CONTAIN","controlsVisible","controlsTimer","activeTrack","playableDuration","settingsModal","isVisible","action","playBackRate","playBackRateLabel","onLoad","selectedAudioTrack","selectedSubtitleTrack","selectedVideoTrack","activeSubtitle","maxBitRate","startWatchTime","playList","currentTrackIndex","contentSeasons","activeSeason","error","isViewCounted","isSkipIntroVisible","isNextEpisodeVisible","useVideoPlayerStore","setCurrentTime","setDuration","setIsPaused","setIsBuffering","setResizeMode","setControlsVisible","setControlsTimer","setActiveTrack","setPlayableDuration","setSettingsModal","setPlayBackRate","setOnLoad","setSelectedAudioTrack","setSelectedSubtitleTrack","setSelectedVideoTrack","setActiveSubtitle","setMaxBitRate","setStartWatchTime","setPlayList","setCurrentTrackIndex","setContentSeasons","setActiveSeason","setError","setIsViewCounted","setIsSkipIntroVisible","setIsNextEpisodeVisible","resetStore","clearAll","name"],"sourceRoot":"../../../../src","sources":["VideoPlayer/store/videoPlayerStore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @author Naresh Dhamu
5
+ * @lastModified Thu 14 Aug 2025 at 09:41 AM
6
+ */
7
+ import { Dimensions } from 'react-native';
8
+ const {
9
+ height,
10
+ width
11
+ } = Dimensions.get('window');
12
+ const setHeight = h => height / 100 * h;
13
+ const setWidth = w => width / 100 * w;
14
+ const fullWidth = Dimensions.get('window').width;
15
+ const fullHeight = Dimensions.get('window').height;
16
+ export default {
17
+ setHeight,
18
+ setWidth,
19
+ fullWidth,
20
+ fullHeight
21
+ };
22
+ //# sourceMappingURL=Display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","height","width","get","setHeight","h","setWidth","w","fullWidth","fullHeight"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/Display.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,cAAc;AAEzC,MAAM;EAAEC,MAAM;EAAEC;AAAM,CAAC,GAAGF,UAAU,CAACG,GAAG,CAAC,QAAQ,CAAC;AAElD,MAAMC,SAAS,GAAIC,CAAS,IAAMJ,MAAM,GAAG,GAAG,GAAII,CAAC;AACnD,MAAMC,QAAQ,GAAIC,CAAS,IAAML,KAAK,GAAG,GAAG,GAAIK,CAAC;AACjD,MAAMC,SAAS,GAAGR,UAAU,CAACG,GAAG,CAAC,QAAQ,CAAC,CAACD,KAAK;AAChD,MAAMO,UAAU,GAAGT,UAAU,CAACG,GAAG,CAAC,QAAQ,CAAC,CAACF,MAAM;AAElD,eAAe;EAAEG,SAAS;EAAEE,QAAQ;EAAEE,SAAS;EAAEC;AAAW,CAAC","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @author Naresh Dhamu
5
+ * @lastModified Fri 08 Aug 2025 at 08:44 PM
6
+ */
7
+
8
+ import { Platform } from 'react-native';
9
+ class PlatformSelector {
10
+ isAndroid() {
11
+ return Platform.OS === 'android';
12
+ }
13
+ isIOS() {
14
+ return Platform.OS === 'ios';
15
+ }
16
+ }
17
+ export default new PlatformSelector();
18
+ //# sourceMappingURL=PlatformSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","PlatformSelector","isAndroid","OS","isIOS"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/PlatformSelector.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,cAAc;AAEvC,MAAMC,gBAAgB,CAAC;EACdC,SAASA,CAAA,EAAY;IAC1B,OAAOF,QAAQ,CAACG,EAAE,KAAK,SAAS;EAClC;EAEOC,KAAKA,CAAA,EAAY;IACtB,OAAOJ,QAAQ,CAACG,EAAE,KAAK,KAAK;EAC9B;AACF;AAEA,eAAe,IAAIF,gBAAgB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export * from "./useVideoPlayerBack.js";
4
+ export * from "./useVideoResolutions.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["VideoPlayer/utils/hooks/index.ts"],"mappings":";;AAAA,cAAc,yBAAsB;AACpC,cAAc,0BAAuB","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useCallback, useRef } from 'react';
4
+ import { BackHandler, Platform, AppState } from 'react-native';
5
+ import { lockToPortrait } from "../lockOrientation.js";
6
+ import { useVideoPlayerStore } from "../../store/videoPlayerStore.js";
7
+ export const useVideoPlayerBack = ({
8
+ navigation
9
+ } = {}) => {
10
+ const {
11
+ resetStore
12
+ } = useVideoPlayerStore();
13
+ const hasClosed = useRef(false); // prevent multiple calls
14
+
15
+ const handleClose = useCallback(() => {
16
+ if (hasClosed.current) return; // prevent loop
17
+ hasClosed.current = true;
18
+ resetStore();
19
+ lockToPortrait();
20
+ if (navigation?.canGoBack()) {
21
+ navigation.goBack();
22
+ }
23
+ }, [resetStore, navigation]);
24
+ useEffect(() => {
25
+ const backHandler = Platform.OS === 'android' ? BackHandler.addEventListener('hardwareBackPress', () => {
26
+ handleClose();
27
+ return true;
28
+ }) : undefined;
29
+ const unsubscribe = navigation?.addListener('beforeRemove', e => {
30
+ e.preventDefault();
31
+ handleClose();
32
+ navigation.dispatch(e.data.action);
33
+ });
34
+ const handleAppStateChange = nextAppState => {
35
+ if (nextAppState === 'inactive') {
36
+ handleClose();
37
+ }
38
+ };
39
+ const appStateListener = AppState.addEventListener('change', handleAppStateChange);
40
+ return () => {
41
+ backHandler?.remove();
42
+ unsubscribe?.();
43
+ appStateListener.remove();
44
+ };
45
+ }, [handleClose, navigation]);
46
+ return handleClose;
47
+ };
48
+ //# sourceMappingURL=useVideoPlayerBack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useCallback","useRef","BackHandler","Platform","AppState","lockToPortrait","useVideoPlayerStore","useVideoPlayerBack","navigation","resetStore","hasClosed","handleClose","current","canGoBack","goBack","backHandler","OS","addEventListener","undefined","unsubscribe","addListener","e","preventDefault","dispatch","data","action","handleAppStateChange","nextAppState","appStateListener","remove"],"sourceRoot":"../../../../../src","sources":["VideoPlayer/utils/hooks/useVideoPlayerBack.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AACtD,SACEC,WAAW,EACXC,QAAQ,EACRC,QAAQ,QAEH,cAAc;AACrB,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,mBAAmB,QAAQ,iCAA8B;AAMlE,OAAO,MAAMC,kBAAkB,GAAGA,CAAC;EACjCC;AACuB,CAAC,GAAG,CAAC,CAAC,KAAK;EAClC,MAAM;IAAEC;EAAW,CAAC,GAAGH,mBAAmB,CAAC,CAAC;EAC5C,MAAMI,SAAS,GAAGT,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;EAEjC,MAAMU,WAAW,GAAGX,WAAW,CAAC,MAAM;IACpC,IAAIU,SAAS,CAACE,OAAO,EAAE,OAAO,CAAC;IAC/BF,SAAS,CAACE,OAAO,GAAG,IAAI;IAExBH,UAAU,CAAC,CAAC;IACZJ,cAAc,CAAC,CAAC;IAEhB,IAAIG,UAAU,EAAEK,SAAS,CAAC,CAAC,EAAE;MAC3BL,UAAU,CAACM,MAAM,CAAC,CAAC;IACrB;EACF,CAAC,EAAE,CAACL,UAAU,EAAED,UAAU,CAAC,CAAC;EAE5BT,SAAS,CAAC,MAAM;IACd,MAAMgB,WAAW,GACfZ,QAAQ,CAACa,EAAE,KAAK,SAAS,GACrBd,WAAW,CAACe,gBAAgB,CAAC,mBAAmB,EAAE,MAAM;MACtDN,WAAW,CAAC,CAAC;MACb,OAAO,IAAI;IACb,CAAC,CAAC,GACFO,SAAS;IAEf,MAAMC,WAAW,GAAGX,UAAU,EAAEY,WAAW,CAAC,cAAc,EAAGC,CAAM,IAAK;MACtEA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBX,WAAW,CAAC,CAAC;MACbH,UAAU,CAACe,QAAQ,CAACF,CAAC,CAACG,IAAI,CAACC,MAAM,CAAC;IACpC,CAAC,CAAC;IAEF,MAAMC,oBAAoB,GAAIC,YAA4B,IAAK;MAC7D,IAAIA,YAAY,KAAK,UAAU,EAAE;QAC/BhB,WAAW,CAAC,CAAC;MACf;IACF,CAAC;IACD,MAAMiB,gBAAgB,GAAGxB,QAAQ,CAACa,gBAAgB,CAChD,QAAQ,EACRS,oBACF,CAAC;IAED,OAAO,MAAM;MACXX,WAAW,EAAEc,MAAM,CAAC,CAAC;MACrBV,WAAW,GAAG,CAAC;MACfS,gBAAgB,CAACC,MAAM,CAAC,CAAC;IAC3B,CAAC;EACH,CAAC,EAAE,CAAClB,WAAW,EAAEH,UAAU,CAAC,CAAC;EAE7B,OAAOG,WAAW;AACpB,CAAC","ignoreList":[]}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useState } from 'react';
4
+ import axios from 'axios';
5
+ async function getHLSBandwidthAndResolutions(m3u8Url) {
6
+ try {
7
+ if (!m3u8Url?.endsWith('.m3u8')) return [];
8
+ const {
9
+ data
10
+ } = await axios.get(m3u8Url);
11
+ if (!data) return [];
12
+ const lines = data.split('\n');
13
+ const streams = [];
14
+ let bandwidth = null;
15
+ let width = null;
16
+ let height = null;
17
+ for (const line of lines) {
18
+ if (line.startsWith('#EXT-X-STREAM-INF')) {
19
+ const bandwidthMatch = line.match(/BANDWIDTH=(\d+)/);
20
+ const resolutionMatch = line.match(/RESOLUTION=(\d+)x(\d+)/);
21
+ bandwidth = bandwidthMatch ? Number(bandwidthMatch[1]) : null;
22
+ if (resolutionMatch) {
23
+ width = Number(resolutionMatch[1]);
24
+ height = Number(resolutionMatch[2]);
25
+ }
26
+ }
27
+ if (line.trim().endsWith('.m3u8') && bandwidth !== null && width !== null && height !== null) {
28
+ streams.push({
29
+ bandwidth,
30
+ width,
31
+ height
32
+ });
33
+ bandwidth = null;
34
+ width = null;
35
+ height = null;
36
+ }
37
+ }
38
+ streams.sort((a, b) => b.height - a.height);
39
+ const autoStream = {
40
+ bandwidth: 0,
41
+ width: 'auto',
42
+ height: 'auto'
43
+ };
44
+ return [autoStream, ...streams];
45
+ } catch (error) {
46
+ console.error('Error fetching or parsing HLS stream:', error);
47
+ return [];
48
+ }
49
+ }
50
+ // Simple in-memory cache
51
+ const resolutionCache = {};
52
+ export const useVideoResolutions = track => {
53
+ const [resolutions, setResolutions] = useState([{
54
+ height: 'auto',
55
+ bandwidth: null
56
+ }]);
57
+ useEffect(() => {
58
+ if (!track) return;
59
+ const source = track.isTrailer ? track.trailerSource : track.sourceLink;
60
+ if (!source) return;
61
+
62
+ // Cache hit
63
+ if (resolutionCache[source]) {
64
+ setResolutions(resolutionCache[source]);
65
+ return;
66
+ }
67
+ const fetchResolutions = async () => {
68
+ try {
69
+ const data = await getHLSBandwidthAndResolutions(source);
70
+ const filteredData = data.filter(item => typeof item.height === 'number');
71
+ const newResolutions = [{
72
+ height: 'auto',
73
+ bandwidth: null
74
+ }, ...filteredData.map(item => ({
75
+ height: item.height,
76
+ bandwidth: item.bandwidth
77
+ }))];
78
+ resolutionCache[source] = newResolutions; // cache
79
+ setResolutions(newResolutions);
80
+ } catch (error) {
81
+ console.error('Failed to fetch video resolutions', error);
82
+ }
83
+ };
84
+ fetchResolutions();
85
+ }, [track]);
86
+ return resolutions;
87
+ };
88
+ //# sourceMappingURL=useVideoResolutions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","axios","getHLSBandwidthAndResolutions","m3u8Url","endsWith","data","get","lines","split","streams","bandwidth","width","height","line","startsWith","bandwidthMatch","match","resolutionMatch","Number","trim","push","sort","a","b","autoStream","error","console","resolutionCache","useVideoResolutions","track","resolutions","setResolutions","source","isTrailer","trailerSource","sourceLink","fetchResolutions","filteredData","filter","item","newResolutions","map"],"sourceRoot":"../../../../../src","sources":["VideoPlayer/utils/hooks/useVideoResolutions.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ export * from "./lockOrientation.js";
4
+ export * from "./hooks/index.js";
5
+ export * from "./playerEvents.js";
6
+ export * from "./videoControl.js";
7
+ export * from "./videoSource.js";
8
+ export * from "./timeFormatter.js";
9
+ export * from "./videoRef.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/index.ts"],"mappings":";;AAAA,cAAc,sBAAmB;AACjC,cAAc,kBAAS;AACvB,cAAc,mBAAgB;AAC9B,cAAc,mBAAgB;AAC9B,cAAc,kBAAe;AAC7B,cAAc,oBAAiB;AAC/B,cAAc,eAAY","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ import { StatusBar, Platform } from 'react-native';
4
+ import Orientation from 'react-native-orientation-locker';
5
+ import SystemNavigationBar from 'react-native-system-navigation-bar';
6
+ import PlatformSelector from "./PlatformSelector.js";
7
+ export const lockToPortrait = () => {
8
+ try {
9
+ Orientation.lockToPortrait();
10
+ StatusBar.setHidden(false, 'fade');
11
+ if (PlatformSelector.isAndroid()) {
12
+ SystemNavigationBar.fullScreen(false);
13
+ SystemNavigationBar.navigationShow();
14
+ } else if (Platform.OS === 'ios') {}
15
+ } catch (error) {
16
+ console.warn('Error locking to portrait:', error);
17
+ }
18
+ };
19
+ export const lockToLandscape = () => {
20
+ try {
21
+ Orientation.lockToLandscape();
22
+ StatusBar.setHidden(true, 'fade');
23
+ if (PlatformSelector.isAndroid()) {
24
+ SystemNavigationBar.fullScreen(true);
25
+ SystemNavigationBar.stickyImmersive();
26
+ } else if (Platform.OS === 'ios') {}
27
+ } catch (error) {
28
+ console.warn('Error locking to landscape:', error);
29
+ }
30
+ };
31
+ //# sourceMappingURL=lockOrientation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StatusBar","Platform","Orientation","SystemNavigationBar","PlatformSelector","lockToPortrait","setHidden","isAndroid","fullScreen","navigationShow","OS","error","console","warn","lockToLandscape","stickyImmersive"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/lockOrientation.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,cAAc;AAClD,OAAOC,WAAW,MAAM,iCAAiC;AACzD,OAAOC,mBAAmB,MAAM,oCAAoC;AACpE,OAAOC,gBAAgB,MAAM,uBAAoB;AAEjD,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,IAAI;IACFH,WAAW,CAACG,cAAc,CAAC,CAAC;IAC5BL,SAAS,CAACM,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAElC,IAAIF,gBAAgB,CAACG,SAAS,CAAC,CAAC,EAAE;MAChCJ,mBAAmB,CAACK,UAAU,CAAC,KAAK,CAAC;MACrCL,mBAAmB,CAACM,cAAc,CAAC,CAAC;IACtC,CAAC,MAAM,IAAIR,QAAQ,CAACS,EAAE,KAAK,KAAK,EAAE,CAClC;EACF,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdC,OAAO,CAACC,IAAI,CAAC,4BAA4B,EAAEF,KAAK,CAAC;EACnD;AACF,CAAC;AAED,OAAO,MAAMG,eAAe,GAAGA,CAAA,KAAM;EACnC,IAAI;IACFZ,WAAW,CAACY,eAAe,CAAC,CAAC;IAC7Bd,SAAS,CAACM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IAEjC,IAAIF,gBAAgB,CAACG,SAAS,CAAC,CAAC,EAAE;MAChCJ,mBAAmB,CAACK,UAAU,CAAC,IAAI,CAAC;MACpCL,mBAAmB,CAACY,eAAe,CAAC,CAAC;IACvC,CAAC,MAAM,IAAId,QAAQ,CAACS,EAAE,KAAK,KAAK,EAAE,CAClC;EACF,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdC,OAAO,CAACC,IAAI,CAAC,6BAA6B,EAAEF,KAAK,CAAC;EACpD;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ import { mmkvStorage, useVideoPlayerStore } from "../store/videoPlayerStore.js";
4
+ import { handleNext } from "./index.js";
5
+ export const createPlayerEvents = () => {
6
+ const onProgress = ({
7
+ currentTime = 0,
8
+ playableDuration = 0
9
+ }) => {
10
+ const store = useVideoPlayerStore.getState(); // always fresh store
11
+ store.setCurrentTime(currentTime);
12
+ store.setPlayableDuration(playableDuration);
13
+ try {
14
+ mmkvStorage.setItem('currentTime', String(currentTime));
15
+ } catch (e) {
16
+ console.warn('MMKV save failed', e);
17
+ }
18
+ if (store.isBuffering) store.setIsBuffering(false);
19
+ };
20
+ const onLoad = data => {
21
+ const store = useVideoPlayerStore.getState();
22
+ store.setDuration(data.duration || 0);
23
+ store.setOnLoad(data);
24
+ mmkvStorage.setItem('current_watch_time', '0');
25
+ store.setError(null);
26
+ store.setIsViewCounted(false);
27
+ store.setStartWatchTime(Date.now());
28
+ store.setIsNextEpisodeVisible(true);
29
+ store.setIsSkipIntroVisible(true);
30
+ store.setIsBuffering(false);
31
+ };
32
+ const onBuffer = ({
33
+ isBuffering
34
+ }) => {
35
+ const store = useVideoPlayerStore.getState();
36
+ if (isBuffering) store.setIsBuffering(true);else setTimeout(() => store.setIsBuffering(false), 150);
37
+ };
38
+ const onEnd = ({
39
+ onPressEpisode,
40
+ reportProgress,
41
+ autoNext
42
+ }) => {
43
+ reportProgress('COMPLETED');
44
+ const store = useVideoPlayerStore.getState();
45
+ if (!store.activeTrack?.isTrailer && store.activeTrack?.type === 'series') {
46
+ handleNext({
47
+ onPressEpisode,
48
+ autoNext
49
+ });
50
+ } else {
51
+ store.setIsPaused(true);
52
+ }
53
+ };
54
+ const onLoadStart = _ => {
55
+ const store = useVideoPlayerStore.getState();
56
+ store.setIsBuffering(true);
57
+ };
58
+ const LeaveVideoPlayer = () => {
59
+ const store = useVideoPlayerStore.getState();
60
+ store.setDuration(0);
61
+ store.setCurrentTime(0);
62
+ store.setPlayableDuration(0);
63
+ store.setIsPaused(false);
64
+ store.setSettingsModal({
65
+ isVisible: false,
66
+ action: 'none'
67
+ });
68
+ store.setIsBuffering(false);
69
+ };
70
+ return {
71
+ onProgress,
72
+ onLoad,
73
+ onBuffer,
74
+ onEnd,
75
+ onLoadStart,
76
+ LeaveVideoPlayer
77
+ };
78
+ };
79
+ //# sourceMappingURL=playerEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mmkvStorage","useVideoPlayerStore","handleNext","createPlayerEvents","onProgress","currentTime","playableDuration","store","getState","setCurrentTime","setPlayableDuration","setItem","String","e","console","warn","isBuffering","setIsBuffering","onLoad","data","setDuration","duration","setOnLoad","setError","setIsViewCounted","setStartWatchTime","Date","now","setIsNextEpisodeVisible","setIsSkipIntroVisible","onBuffer","setTimeout","onEnd","onPressEpisode","reportProgress","autoNext","activeTrack","isTrailer","type","setIsPaused","onLoadStart","_","LeaveVideoPlayer","setSettingsModal","isVisible","action"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/playerEvents.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @author Naresh Dhamu
5
+ * @lastModified Sat 16 Aug 2025 at 10:32 PM
6
+ * @description: Utility functions for formatting time
7
+ */
8
+
9
+ export const formatDuration = (totalSeconds, hideSeconds = false, addSpaces = false) => {
10
+ const hours = Math.floor(totalSeconds / 3600);
11
+ const minutes = Math.floor(totalSeconds % 3600 / 60);
12
+ const seconds = totalSeconds % 60;
13
+ const formatUnit = (value, label) => value ? `${value}${addSpaces ? ` ${label} ` : label}` : '';
14
+ const result = formatUnit(hours, 'h') + formatUnit(minutes, 'm') + formatUnit(seconds, 's');
15
+ return hideSeconds ? formatUnit(hours, 'h') + formatUnit(minutes, 'm') : result;
16
+ };
17
+ export const formatTime = seconds => {
18
+ const h = Math.floor(seconds / 3600);
19
+ const m = Math.floor(seconds % 3600 / 60);
20
+ const s = Math.floor(seconds % 60);
21
+ if (h > 0) {
22
+ return `${h}:${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`;
23
+ }
24
+ return `${m}:${String(s).padStart(2, '0')}`;
25
+ };
26
+ export const formatTimeWithMs = seconds => {
27
+ if (isNaN(seconds) || seconds < 0) return '00:00.000';
28
+ const totalMs = Math.floor(seconds * 1000);
29
+ const ms = totalMs % 1000;
30
+ const totalSec = Math.floor(totalMs / 1000);
31
+ const min = Math.floor(totalSec / 60);
32
+ const sec = totalSec % 60;
33
+ return `${String(min).padStart(2, '0')}:${String(sec).padStart(2, '0')}.${String(ms).padStart(3, '0')}`;
34
+ };
35
+ //# sourceMappingURL=timeFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatDuration","totalSeconds","hideSeconds","addSpaces","hours","Math","floor","minutes","seconds","formatUnit","value","label","result","formatTime","h","m","s","String","padStart","formatTimeWithMs","isNaN","totalMs","ms","totalSec","min","sec"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/timeFormatter.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,cAAc,GAAGA,CAC5BC,YAAoB,EACpBC,WAAW,GAAG,KAAK,EACnBC,SAAS,GAAG,KAAK,KACN;EACX,MAAMC,KAAK,GAAGC,IAAI,CAACC,KAAK,CAACL,YAAY,GAAG,IAAI,CAAC;EAC7C,MAAMM,OAAO,GAAGF,IAAI,CAACC,KAAK,CAAEL,YAAY,GAAG,IAAI,GAAI,EAAE,CAAC;EACtD,MAAMO,OAAO,GAAGP,YAAY,GAAG,EAAE;EAEjC,MAAMQ,UAAU,GAAGA,CAACC,KAAa,EAAEC,KAAa,KAC9CD,KAAK,GAAG,GAAGA,KAAK,GAAGP,SAAS,GAAG,IAAIQ,KAAK,GAAG,GAAGA,KAAK,EAAE,GAAG,EAAE;EAE5D,MAAMC,MAAM,GACVH,UAAU,CAACL,KAAK,EAAE,GAAG,CAAC,GACtBK,UAAU,CAACF,OAAO,EAAE,GAAG,CAAC,GACxBE,UAAU,CAACD,OAAO,EAAE,GAAG,CAAC;EAE1B,OAAON,WAAW,GACdO,UAAU,CAACL,KAAK,EAAE,GAAG,CAAC,GAAGK,UAAU,CAACF,OAAO,EAAE,GAAG,CAAC,GACjDK,MAAM;AACZ,CAAC;AAED,OAAO,MAAMC,UAAU,GAAIL,OAAe,IAAK;EAC7C,MAAMM,CAAC,GAAGT,IAAI,CAACC,KAAK,CAACE,OAAO,GAAG,IAAI,CAAC;EACpC,MAAMO,CAAC,GAAGV,IAAI,CAACC,KAAK,CAAEE,OAAO,GAAG,IAAI,GAAI,EAAE,CAAC;EAC3C,MAAMQ,CAAC,GAAGX,IAAI,CAACC,KAAK,CAACE,OAAO,GAAG,EAAE,CAAC;EAClC,IAAIM,CAAC,GAAG,CAAC,EAAE;IACT,OAAO,GAAGA,CAAC,IAAIG,MAAM,CAACF,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAID,MAAM,CAACD,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;EAC3E;EACA,OAAO,GAAGH,CAAC,IAAIE,MAAM,CAACD,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AAC7C,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAIX,OAAe,IAAa;EAC3D,IAAIY,KAAK,CAACZ,OAAO,CAAC,IAAIA,OAAO,GAAG,CAAC,EAAE,OAAO,WAAW;EACrD,MAAMa,OAAO,GAAGhB,IAAI,CAACC,KAAK,CAACE,OAAO,GAAG,IAAI,CAAC;EAC1C,MAAMc,EAAE,GAAGD,OAAO,GAAG,IAAI;EACzB,MAAME,QAAQ,GAAGlB,IAAI,CAACC,KAAK,CAACe,OAAO,GAAG,IAAI,CAAC;EAC3C,MAAMG,GAAG,GAAGnB,IAAI,CAACC,KAAK,CAACiB,QAAQ,GAAG,EAAE,CAAC;EACrC,MAAME,GAAG,GAAGF,QAAQ,GAAG,EAAE;EACzB,OAAO,GAAGN,MAAM,CAACO,GAAG,CAAC,CAACN,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAID,MAAM,CAACQ,GAAG,CAAC,CAACP,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAID,MAAM,CAACK,EAAE,CAAC,CAACJ,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACzG,CAAC","ignoreList":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ import { useCallback } from 'react';
4
+ import { useVideoPlayerStore, mmkvStorage } from "../store/videoPlayerStore.js";
5
+ export const countWatchTime = (forceFlush = false) => {
6
+ const {
7
+ duration,
8
+ setStartWatchTime,
9
+ startWatchTime
10
+ } = useVideoPlayerStore.getState();
11
+ const currentTimeFromStorage = Number(mmkvStorage.getItem('currentTime') || 0);
12
+ const prevWatchTime = Number(mmkvStorage.getItem('current_watch_time') || 0);
13
+ const completed = duration > 0 && Math.round(currentTimeFromStorage / duration) >= 0.95;
14
+ let totalTimeWatched = prevWatchTime;
15
+ if (startWatchTime) {
16
+ const elapsedTime = (Date.now() - startWatchTime) / 1000;
17
+ totalTimeWatched = prevWatchTime + elapsedTime;
18
+ mmkvStorage.setItem('current_watch_time', totalTimeWatched.toString());
19
+ setStartWatchTime(null);
20
+ }
21
+ if (forceFlush) {
22
+ const latest = Number(mmkvStorage.getItem('current_watch_time') || '0');
23
+ return {
24
+ totalWatchTime: latest,
25
+ completed,
26
+ currentTime: currentTimeFromStorage
27
+ };
28
+ }
29
+ return {
30
+ totalWatchTime: totalTimeWatched,
31
+ completed,
32
+ currentTime: currentTimeFromStorage
33
+ };
34
+ };
35
+ export const useWatchReporter = ({
36
+ onWatchProgress
37
+ }) => {
38
+ const reportProgress = useCallback((event = 'PROGRESS', forcedCurrentTime) => {
39
+ const {
40
+ activeTrack,
41
+ duration
42
+ } = useVideoPlayerStore.getState();
43
+ if (!activeTrack) return;
44
+ const {
45
+ totalWatchTime,
46
+ completed,
47
+ currentTime
48
+ } = countWatchTime(event === 'VIDEO_CLOSE' || event === 'EPISODE_CHANGE' || event === 'COMPLETED');
49
+ const progress = {
50
+ contentId: activeTrack?.contentId || null,
51
+ episodeId: activeTrack?.episodeId || null,
52
+ contentType: activeTrack?.type,
53
+ currentTime: forcedCurrentTime ?? currentTime,
54
+ totalWatchTime,
55
+ duration: duration || 0,
56
+ isVideoCompleted: completed,
57
+ activeTrack
58
+ };
59
+ onWatchProgress?.({
60
+ ...progress,
61
+ event
62
+ });
63
+ }, [onWatchProgress]);
64
+ return {
65
+ reportProgress
66
+ };
67
+ };
68
+ //# sourceMappingURL=useWatchReporter.js.map