@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","useVideoPlayerStore","mmkvStorage","countWatchTime","forceFlush","duration","setStartWatchTime","startWatchTime","getState","currentTimeFromStorage","Number","getItem","prevWatchTime","completed","Math","round","totalTimeWatched","elapsedTime","Date","now","setItem","toString","latest","totalWatchTime","currentTime","useWatchReporter","onWatchProgress","reportProgress","event","forcedCurrentTime","activeTrack","progress","contentId","episodeId","contentType","type","isVideoCompleted"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/useWatchReporter.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,mBAAmB,EAAEC,WAAW,QAAQ,8BAA2B;AAyB5E,OAAO,MAAMC,cAAc,GAAGA,CAC5BC,UAAU,GAAG,KAAK,KAKf;EACH,MAAM;IAAEC,QAAQ;IAAEC,iBAAiB;IAAEC;EAAe,CAAC,GACnDN,mBAAmB,CAACO,QAAQ,CAAC,CAAC;EAEhC,MAAMC,sBAAsB,GAAGC,MAAM,CACnCR,WAAW,CAACS,OAAO,CAAC,aAAa,CAAC,IAAI,CACxC,CAAC;EACD,MAAMC,aAAa,GAAGF,MAAM,CAACR,WAAW,CAACS,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;EAE5E,MAAME,SAAS,GACbR,QAAQ,GAAG,CAAC,IAAIS,IAAI,CAACC,KAAK,CAACN,sBAAsB,GAAGJ,QAAQ,CAAC,IAAI,IAAI;EAEvE,IAAIW,gBAAgB,GAAGJ,aAAa;EAEpC,IAAIL,cAAc,EAAE;IAClB,MAAMU,WAAW,GAAG,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGZ,cAAc,IAAI,IAAI;IACxDS,gBAAgB,GAAGJ,aAAa,GAAGK,WAAW;IAC9Cf,WAAW,CAACkB,OAAO,CAAC,oBAAoB,EAAEJ,gBAAgB,CAACK,QAAQ,CAAC,CAAC,CAAC;IAEtEf,iBAAiB,CAAC,IAAI,CAAC;EACzB;EAEA,IAAIF,UAAU,EAAE;IACd,MAAMkB,MAAM,GAAGZ,MAAM,CAACR,WAAW,CAACS,OAAO,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC;IACvE,OAAO;MACLY,cAAc,EAAED,MAAM;MACtBT,SAAS;MACTW,WAAW,EAAEf;IACf,CAAC;EACH;EAEA,OAAO;IACLc,cAAc,EAAEP,gBAAgB;IAChCH,SAAS;IACTW,WAAW,EAAEf;EACf,CAAC;AACH,CAAC;AAED,OAAO,MAAMgB,gBAAgB,GAAGA,CAAC;EAC/BC;AAGF,CAAC,KAAK;EACJ,MAAMC,cAAc,GAAG3B,WAAW,CAChC,CAAC4B,KAAqB,GAAG,UAAU,EAAEC,iBAA0B,KAAK;IAClE,MAAM;MAAEC,WAAW;MAAEzB;IAAS,CAAC,GAAGJ,mBAAmB,CAACO,QAAQ,CAAC,CAAC;IAChE,IAAI,CAACsB,WAAW,EAAE;IAElB,MAAM;MAAEP,cAAc;MAAEV,SAAS;MAAEW;IAAY,CAAC,GAAGrB,cAAc,CAC/DyB,KAAK,KAAK,aAAa,IACrBA,KAAK,KAAK,gBAAgB,IAC1BA,KAAK,KAAK,WACd,CAAC;IAED,MAAMG,QAA8B,GAAG;MACrCC,SAAS,EAAEF,WAAW,EAAEE,SAAS,IAAI,IAAI;MACzCC,SAAS,EAAEH,WAAW,EAAEG,SAAS,IAAI,IAAI;MACzCC,WAAW,EAAEJ,WAAW,EAAEK,IAAI;MAC9BX,WAAW,EAAEK,iBAAiB,IAAIL,WAAW;MAC7CD,cAAc;MACdlB,QAAQ,EAAEA,QAAQ,IAAI,CAAC;MACvB+B,gBAAgB,EAAEvB,SAAS;MAC3BiB;IACF,CAAC;IAEDJ,eAAe,GAAG;MAAE,GAAGK,QAAQ;MAAEH;IAAM,CAAC,CAAC;EAC3C,CAAC,EACD,CAACF,eAAe,CAClB,CAAC;EAED,OAAO;IAAEC;EAAe,CAAC;AAC3B,CAAC","ignoreList":[]}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ import { mmkvStorage, useVideoPlayerStore } from "../store/videoPlayerStore.js";
4
+ export const handlePause = () => {
5
+ const {
6
+ setIsPaused,
7
+ startWatchTime,
8
+ setStartWatchTime
9
+ } = useVideoPlayerStore.getState();
10
+ setIsPaused(true);
11
+ if (!startWatchTime) return;
12
+ const elapsedTime = (Date.now() - startWatchTime) / 1000;
13
+ const storedTime = Number(mmkvStorage.getItem('current_watch_time') ?? 0);
14
+ mmkvStorage.setItem('current_watch_time', (storedTime + elapsedTime).toString());
15
+ setStartWatchTime(null);
16
+ };
17
+ export const handleNext = async ({
18
+ onPressEpisode,
19
+ autoNext
20
+ }) => {
21
+ const {
22
+ playList: playlist,
23
+ currentTrackIndex,
24
+ setCurrentTrackIndex,
25
+ setActiveTrack,
26
+ setCurrentTime,
27
+ setIsPaused,
28
+ setActiveSubtitle,
29
+ setPlayBackRate,
30
+ contentSeasons,
31
+ setActiveSeason,
32
+ setControlsVisible,
33
+ setSelectedSubtitleTrack,
34
+ setSelectedVideoTrack,
35
+ setMaxBitRate,
36
+ setDuration
37
+ } = useVideoPlayerStore.getState();
38
+ if (!playlist?.length) return null;
39
+
40
+ // 👉 Check autoNext
41
+ if (!autoNext) {
42
+ // Just pause at the end, don’t go next
43
+ setIsPaused(true);
44
+ setControlsVisible(true);
45
+ return currentTrackIndex;
46
+ }
47
+ let nextIndex = currentTrackIndex + 1;
48
+
49
+ // 👉 No next episode? stop here
50
+ if (nextIndex >= playlist.length) {
51
+ setIsPaused(true);
52
+ setControlsVisible(true);
53
+ return currentTrackIndex;
54
+ }
55
+ const nextTrack = playlist[nextIndex];
56
+ if (!nextTrack) return currentTrackIndex;
57
+
58
+ // 👉 Trigger hook
59
+ let isSuccess = true;
60
+ if (onPressEpisode) {
61
+ isSuccess = await onPressEpisode({
62
+ episode: {
63
+ id: nextTrack.episodeId || '',
64
+ title: nextTrack.episodeName ?? '',
65
+ contentId: nextTrack.contentId || '',
66
+ sourceLink: nextTrack.sourceLink,
67
+ thumbnail: nextTrack.thumbnail,
68
+ nextEpisodeAt: nextTrack.nextEpisodeAt,
69
+ publishDate: nextTrack.publishDate,
70
+ skipIntro: nextTrack.skipIntro,
71
+ description: nextTrack?.description || '',
72
+ duration: nextTrack?.duration || 0,
73
+ sourceType: nextTrack?.sourceType || 'HLS',
74
+ episodeNumber: nextTrack?.episodeNumber || 0,
75
+ subtitles: nextTrack?.subtitles ?? []
76
+ }
77
+ });
78
+ }
79
+ if (!isSuccess) {
80
+ setIsPaused(true);
81
+ setControlsVisible(true);
82
+ return currentTrackIndex;
83
+ }
84
+
85
+ // 👉 Play next episode
86
+ setIsPaused(false);
87
+ setCurrentTime(0);
88
+ setDuration(0);
89
+ setCurrentTrackIndex(nextIndex);
90
+ setActiveTrack(nextTrack);
91
+ setActiveSubtitle(null);
92
+ setSelectedVideoTrack(null);
93
+ setMaxBitRate(null);
94
+ setPlayBackRate(1, 'Normal');
95
+ setSelectedSubtitleTrack(null);
96
+ if (nextTrack.seasonId) {
97
+ const activeSeason = contentSeasons?.find(s => s.id === nextTrack.seasonId);
98
+ if (activeSeason) {
99
+ setActiveSeason(activeSeason);
100
+ }
101
+ }
102
+ return nextIndex;
103
+ };
104
+ export const viewCount = () => {
105
+ const {
106
+ isViewCounted,
107
+ setIsViewCounted,
108
+ activeTrack
109
+ } = useVideoPlayerStore.getState();
110
+ if (!isViewCounted) {
111
+ if (activeTrack?.id) {
112
+ setIsViewCounted(true);
113
+ return true;
114
+ }
115
+ } else {
116
+ return false;
117
+ }
118
+ return false;
119
+ };
120
+ export const countWatchTime = () => {
121
+ const {
122
+ activeTrack,
123
+ duration,
124
+ setStartWatchTime,
125
+ startWatchTime
126
+ } = useVideoPlayerStore.getState();
127
+ const currentTimeFromStorage = Number(mmkvStorage.getItem('currentTime') || 0);
128
+ const prevWatchTime = Number(mmkvStorage.getItem('current_watch_time') || 0);
129
+
130
+ // ✅ Completed check (>= 95%)
131
+ const completed = duration > 0 && Math.round(currentTimeFromStorage / duration) >= 0.95;
132
+
133
+ // ⏱ If no start time (pause/close before resuming)
134
+ if (!startWatchTime) {
135
+ return {
136
+ totalWatchTime: prevWatchTime,
137
+ completed,
138
+ currentTime: currentTimeFromStorage
139
+ };
140
+ }
141
+ const elapsedTime = (Date.now() - startWatchTime) / 1000;
142
+ const totalTimeWatched = prevWatchTime + elapsedTime;
143
+ mmkvStorage.setItem('current_watch_time', totalTimeWatched.toString());
144
+ setStartWatchTime(null);
145
+ if (totalTimeWatched < 30) {
146
+ return {
147
+ totalWatchTime: 0,
148
+ completed: false,
149
+ currentTime: currentTimeFromStorage
150
+ };
151
+ }
152
+ if (activeTrack?.id) {
153
+ return {
154
+ totalWatchTime: totalTimeWatched,
155
+ completed,
156
+ currentTime: currentTimeFromStorage
157
+ };
158
+ }
159
+ mmkvStorage.setItem('current_watch_time', '0');
160
+ return {
161
+ totalWatchTime: 0,
162
+ completed: false,
163
+ currentTime: 0
164
+ };
165
+ };
166
+ //# sourceMappingURL=videoControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mmkvStorage","useVideoPlayerStore","handlePause","setIsPaused","startWatchTime","setStartWatchTime","getState","elapsedTime","Date","now","storedTime","Number","getItem","setItem","toString","handleNext","onPressEpisode","autoNext","playList","playlist","currentTrackIndex","setCurrentTrackIndex","setActiveTrack","setCurrentTime","setActiveSubtitle","setPlayBackRate","contentSeasons","setActiveSeason","setControlsVisible","setSelectedSubtitleTrack","setSelectedVideoTrack","setMaxBitRate","setDuration","length","nextIndex","nextTrack","isSuccess","episode","id","episodeId","title","episodeName","contentId","sourceLink","thumbnail","nextEpisodeAt","publishDate","skipIntro","description","duration","sourceType","episodeNumber","subtitles","seasonId","activeSeason","find","s","viewCount","isViewCounted","setIsViewCounted","activeTrack","countWatchTime","currentTimeFromStorage","prevWatchTime","completed","Math","round","totalWatchTime","currentTime","totalTimeWatched"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/videoControl.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { createRef } from 'react';
4
+ export const videoRef = /*#__PURE__*/createRef();
5
+ //# sourceMappingURL=videoRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRef","videoRef"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/videoRef.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AAGjC,OAAO,MAAMC,QAAQ,gBAAGD,SAAS,CAAW,CAAC","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ export const getVideoSource = ({
4
+ playList,
5
+ currentTrackIndex
6
+ }) => {
7
+ const track = playList?.[currentTrackIndex];
8
+ if (!track) return {
9
+ uri: ''
10
+ };
11
+ const uri = track.isTrailer ? track.trailerSource : track.sourceLink;
12
+ return {
13
+ uri: encodeURI(uri?.trim() || '') ?? ''
14
+ };
15
+ };
16
+ export const getEpisodeIndex = (playList, episodeId) => playList.findIndex(item => item.episodeId === episodeId);
17
+ //# sourceMappingURL=videoSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getVideoSource","playList","currentTrackIndex","track","uri","isTrailer","trailerSource","sourceLink","encodeURI","trim","getEpisodeIndex","episodeId","findIndex","item"],"sourceRoot":"../../../../src","sources":["VideoPlayer/utils/videoSource.ts"],"mappings":";;AAQA,OAAO,MAAMA,cAAc,GAAGA,CAAC;EAC7BC,QAAQ;EACRC;AACe,CAAC,KAAuB;EACvC,MAAMC,KAAK,GAAGF,QAAQ,GAAGC,iBAAiB,CAAC;EAC3C,IAAI,CAACC,KAAK,EAAE,OAAO;IAAEC,GAAG,EAAE;EAAG,CAAC;EAE9B,MAAMA,GAAG,GAAGD,KAAK,CAACE,SAAS,GAAGF,KAAK,CAACG,aAAa,GAAGH,KAAK,CAACI,UAAU;EACpE,OAAO;IAAEH,GAAG,EAAEI,SAAS,CAACJ,GAAG,EAAEK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI;EAAG,CAAC;AACpD,CAAC;AAED,OAAO,MAAMC,eAAe,GAAGA,CAC7BT,QAAsB,EACtBU,SAAiB,KACNV,QAAQ,CAACW,SAAS,CAAEC,IAAI,IAAKA,IAAI,CAACF,SAAS,KAAKA,SAAS,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export * from "./VideoPlayer/index.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,cAAc,wBAAe","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,3 @@
1
+ declare const BottomControls: () => import("react/jsx-runtime").JSX.Element;
2
+ export default BottomControls;
3
+ //# sourceMappingURL=BottomControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BottomControls.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/MediaControls/BottomControls.tsx"],"names":[],"mappings":"AA6DA,QAAA,MAAM,cAAc,+CAmFnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type MediaControlsProps = {
2
+ onClose?: () => void;
3
+ };
4
+ declare const _default: import("react").NamedExoticComponent<MediaControlsProps>;
5
+ export default _default;
6
+ //# sourceMappingURL=MediaControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaControls.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/MediaControls/MediaControls.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;;AAYF,wBAAmC"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { type MediaControlsProps } from './MediaControls';
3
+ import type { MediaEpisode } from '../store/videoPlayer.type';
4
+ import type { ExtendedWatchProgress } from '../utils/useWatchReporter';
5
+ interface MediaControlsProviderProps extends MediaControlsProps {
6
+ children: React.ReactNode;
7
+ onPressEpisode: ({ episode }: {
8
+ episode: MediaEpisode;
9
+ }) => Promise<boolean>;
10
+ reportProgress: (event: ExtendedWatchProgress['event']) => void;
11
+ }
12
+ declare const MediaControlsProvider: React.FC<MediaControlsProviderProps>;
13
+ export default MediaControlsProvider;
14
+ //# sourceMappingURL=MediaControlsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaControlsProvider.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/MediaControls/MediaControlsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAUjD,OAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,UAAU,0BAA2B,SAAQ,kBAAkB;IAC7D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACjE;AAED,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAgE/D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const MiddleControls: () => import("react/jsx-runtime").JSX.Element;
2
+ export default MiddleControls;
3
+ //# sourceMappingURL=MiddleControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiddleControls.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/MediaControls/MiddleControls.tsx"],"names":[],"mappings":"AAwBA,QAAA,MAAM,cAAc,+CAkFnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface TopControlsProps {
3
+ onClose?: () => void;
4
+ }
5
+ declare const TopControls: React.FC<TopControlsProps>;
6
+ export default TopControls;
7
+ //# sourceMappingURL=TopControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopControls.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/MediaControls/TopControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA6C3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Fri 08 Aug 2025 at 06:55 PM
4
+ */
5
+ interface IFonts {
6
+ inter: {
7
+ black: string;
8
+ bold: string;
9
+ extraBold: string;
10
+ extraLight: string;
11
+ light: string;
12
+ medium: string;
13
+ regular: string;
14
+ semiBold: string;
15
+ thin: string;
16
+ };
17
+ poppins: {
18
+ black: string;
19
+ blackItalic: string;
20
+ bold: string;
21
+ boldItalic: string;
22
+ extraBold: string;
23
+ extraBoldItalic: string;
24
+ extraLight: string;
25
+ extraLightItalic: string;
26
+ italic: string;
27
+ light: string;
28
+ lightItalic: string;
29
+ medium: string;
30
+ mediumItalic: string;
31
+ regular: string;
32
+ semiBold: string;
33
+ semiBoldItalic: string;
34
+ thin: string;
35
+ thinItalic: string;
36
+ };
37
+ roboto: {
38
+ black: string;
39
+ blackItalic: string;
40
+ bold: string;
41
+ boldItalic: string;
42
+ italic: string;
43
+ light: string;
44
+ lightItalic: string;
45
+ medium: string;
46
+ mediumItalic: string;
47
+ regular: string;
48
+ thin: string;
49
+ thinItalic: string;
50
+ };
51
+ }
52
+ export declare const Fonts: IFonts;
53
+ export {};
54
+ //# sourceMappingURL=fonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/Styles/fonts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,MAAM;IAEd,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,eAAO,MAAM,KAAK,EAAE,MAiDnB,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @author Naresh Dhamu
3
+ * @lastModified Fri 08 Aug 2025 at 06:53 PM
4
+ */
5
+ declare const globalStyles: {
6
+ centerContainer: {
7
+ flex: number;
8
+ alignItems: "center";
9
+ justifyContent: "center";
10
+ };
11
+ container: {
12
+ flex: number;
13
+ };
14
+ newContainer: {
15
+ flex: number;
16
+ };
17
+ flexOneJustifyContentAndAlignItemsCenter: {
18
+ flex: number;
19
+ justifyContent: "center";
20
+ alignItems: "center";
21
+ };
22
+ flexOneJustifyContentCenterAndAlignItemsCenter: {
23
+ flex: number;
24
+ justifyContent: "center";
25
+ alignItems: "center";
26
+ };
27
+ hundredPercentWidth: {
28
+ width: "100%";
29
+ };
30
+ hundredPercentHeight: {
31
+ height: "100%";
32
+ };
33
+ marginZeroAndPaddingZero: {
34
+ margin: number;
35
+ padding: number;
36
+ };
37
+ overflowHidden: {
38
+ overflow: "hidden";
39
+ };
40
+ flexOne: {
41
+ flex: number;
42
+ };
43
+ flexZero: {
44
+ flex: number;
45
+ };
46
+ positionAbsolute: {
47
+ position: "absolute";
48
+ };
49
+ twentyPercentWidth: {
50
+ width: "20%";
51
+ };
52
+ alignItemsCenterAndJustifyContentCenter: {
53
+ alignItems: "center";
54
+ justifyContent: "center";
55
+ };
56
+ textAlignCenter: {
57
+ textAlign: "center";
58
+ };
59
+ flexRow_alignCenter_justifyBetween: {
60
+ flexDirection: "row";
61
+ alignItems: "center";
62
+ justifyContent: "space-between";
63
+ };
64
+ flexOneWithBlackBackground: {
65
+ flex: number;
66
+ backgroundColor: string;
67
+ };
68
+ };
69
+ export default globalStyles;
70
+ //# sourceMappingURL=globalStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalStyles.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/Styles/globalStyles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEhB,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { MediaEpisode } from './store/videoPlayer.type';
3
+ import { type VideoPlayerTheme } from './context';
4
+ import { type ExtendedWatchProgress } from './utils/useWatchReporter';
5
+ export interface VideoPlayerProps {
6
+ onClose?: () => void;
7
+ isFocused?: boolean;
8
+ seekTime?: number | null;
9
+ mode?: 'fullscreen' | 'normal';
10
+ onSeek?: (time: number) => void;
11
+ autoNext?: boolean;
12
+ event?: {
13
+ onPressEpisode?: ({ episode, }: {
14
+ episode: MediaEpisode;
15
+ }) => Promise<boolean>;
16
+ };
17
+ theme?: Partial<VideoPlayerTheme>;
18
+ onWatchProgress?: (progress: ExtendedWatchProgress) => void;
19
+ }
20
+ declare const VideoPlayer: React.FC<VideoPlayerProps>;
21
+ export default VideoPlayer;
22
+ //# sourceMappingURL=VideoPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../../../src/VideoPlayer/VideoPlayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAoBtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACN,cAAc,CAAC,EAAE,CAAC,EAChB,OAAO,GACR,EAAE;YACD,OAAO,EAAE,YAAY,CAAC;SACvB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACxB,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC7D;AAiBD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyJ3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ duration: number;
4
+ currentTime: number;
5
+ bufferedTime: number;
6
+ onSeek: (time: number) => void;
7
+ showThumb?: boolean;
8
+ height?: number;
9
+ }
10
+ declare const ProgressBar: React.FC<Props>;
11
+ export default ProgressBar;
12
+ //# sourceMappingURL=ProgressBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/components/ProgressBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAOzC,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkEhC,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { MediaEpisode } from '../store/videoPlayer.type';
3
+ import type { ExtendedWatchProgress } from '../utils/useWatchReporter';
4
+ type SkipAndNextControlsProps = {
5
+ onPressEpisode: ({ episode }: {
6
+ episode: MediaEpisode;
7
+ }) => Promise<boolean>;
8
+ reportProgress: (event: ExtendedWatchProgress['event']) => void;
9
+ };
10
+ declare const SkipAndNextControls: React.FC<SkipAndNextControlsProps>;
11
+ export default SkipAndNextControls;
12
+ //# sourceMappingURL=SkipAndNextControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkipAndNextControls.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/components/SkipAndNextControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAkBzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,KAAK,wBAAwB,GAAG;IAC9B,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA+D3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const SubtitleView: () => import("react/jsx-runtime").JSX.Element | null;
2
+ export default SubtitleView;
3
+ //# sourceMappingURL=SubtitleView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubtitleView.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/components/SubtitleView.tsx"],"names":[],"mappings":"AAQA,QAAA,MAAM,YAAY,sDAwBjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface VideoPlayerTheme {
3
+ colors: {
4
+ primary: string;
5
+ secondary: string;
6
+ background: string;
7
+ onBackground: string;
8
+ text: string;
9
+ white: string;
10
+ black: string;
11
+ track: string;
12
+ buffer: string;
13
+ };
14
+ metrics: {
15
+ thumbSize: number;
16
+ sliderHeight: number;
17
+ controlSize: number;
18
+ };
19
+ }
20
+ export declare const VideoPlayerConfigProvider: ({ children, theme, }: {
21
+ children: ReactNode;
22
+ theme?: Partial<VideoPlayerTheme>;
23
+ }) => import("react/jsx-runtime").JSX.Element;
24
+ export declare const useVideoPlayerConfig: () => VideoPlayerTheme;
25
+ //# sourceMappingURL=VideoPlayerConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayerConfig.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/context/VideoPlayerConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAuBD,eAAO,MAAM,yBAAyB,GAAI,sBAGvC;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACnC,4CAaA,CAAC;AAEF,eAAO,MAAM,oBAAoB,wBAA6C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { VideoPlayerConfigProvider, useVideoPlayerConfig, } from './VideoPlayerConfig';
2
+ export type { VideoPlayerTheme } from './VideoPlayerConfig';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { default as VideoPlayer } from './VideoPlayer';
2
+ export * from './store';
3
+ export * from './utils';
4
+ export * from './context';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/VideoPlayer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ declare const AudioAndSubtitles: React.FC;
3
+ export default AudioAndSubtitles;
4
+ //# sourceMappingURL=AudioAndSubtitles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioAndSubtitles.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/model/AudioAndSubtitles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AA8FvC,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EA2K9B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { MediaEpisode } from '../store';
3
+ import type { ExtendedWatchProgress } from '../utils/useWatchReporter';
4
+ type EpisodesProps = {
5
+ onPressEpisode: ({ episode }: {
6
+ episode: MediaEpisode;
7
+ }) => Promise<boolean>;
8
+ reportProgress: (event: ExtendedWatchProgress['event']) => void;
9
+ };
10
+ declare const Episodes: React.FC<EpisodesProps>;
11
+ export default Episodes;
12
+ //# sourceMappingURL=Episodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Episodes.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/model/Episodes.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,KAAK,aAAa,GAAG;IACnB,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAiLrC,CAAC;AAoFF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { MediaEpisode } from '../store/videoPlayer.type';
3
+ import type { ExtendedWatchProgress } from '../utils/useWatchReporter';
4
+ type SettingModalProps = {
5
+ onPressEpisode: ({ episode }: {
6
+ episode: MediaEpisode;
7
+ }) => Promise<boolean>;
8
+ reportProgress: (event: ExtendedWatchProgress['event']) => void;
9
+ };
10
+ declare const SettingModal: React.FC<SettingModalProps>;
11
+ export default SettingModal;
12
+ //# sourceMappingURL=SettingModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingModal.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/model/SettingModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,2BAA2B,CAAC;AAE9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AA2BvE,KAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiD7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ declare const SpeedControls: React.FC;
3
+ export default SpeedControls;
4
+ //# sourceMappingURL=SpeedControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedControls.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/model/SpeedControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAmEvC,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAsC1B,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Resolution } from '../utils';
2
+ interface VideoPlayerSettingsProps {
3
+ resolutions: Resolution[];
4
+ }
5
+ declare const VideoPlayerSettings: ({ resolutions }: VideoPlayerSettingsProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default VideoPlayerSettings;
7
+ //# sourceMappingURL=VideoPlayerSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayerSettings.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/model/VideoPlayerSettings.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,UAAU,wBAAwB;IAChC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,QAAA,MAAM,mBAAmB,GAAI,iBAAiB,wBAAwB,4CAwFrE,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './videoPlayerStore';
2
+ export * from './videoPlayer.type';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/VideoPlayer/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}