@zezosoft/zezo-ott-react-native-video-player 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +308 -0
- package/lib/module/VideoPlayer/MediaControls/BottomControls.js +156 -0
- package/lib/module/VideoPlayer/MediaControls/BottomControls.js.map +1 -0
- package/lib/module/VideoPlayer/MediaControls/MediaControls.js +27 -0
- package/lib/module/VideoPlayer/MediaControls/MediaControls.js.map +1 -0
- package/lib/module/VideoPlayer/MediaControls/MediaControlsProvider.js +85 -0
- package/lib/module/VideoPlayer/MediaControls/MediaControlsProvider.js.map +1 -0
- package/lib/module/VideoPlayer/MediaControls/MiddleControls.js +208 -0
- package/lib/module/VideoPlayer/MediaControls/MiddleControls.js.map +1 -0
- package/lib/module/VideoPlayer/MediaControls/TopControls.js +94 -0
- package/lib/module/VideoPlayer/MediaControls/TopControls.js.map +1 -0
- package/lib/module/VideoPlayer/Styles/fonts.js +58 -0
- package/lib/module/VideoPlayer/Styles/fonts.js.map +1 -0
- package/lib/module/VideoPlayer/Styles/globalStyles.js +75 -0
- package/lib/module/VideoPlayer/Styles/globalStyles.js.map +1 -0
- package/lib/module/VideoPlayer/VideoPlayer.js +180 -0
- package/lib/module/VideoPlayer/VideoPlayer.js.map +1 -0
- package/lib/module/VideoPlayer/components/ProgressBar.js +84 -0
- package/lib/module/VideoPlayer/components/ProgressBar.js.map +1 -0
- package/lib/module/VideoPlayer/components/SkipAndNextControls.js +154 -0
- package/lib/module/VideoPlayer/components/SkipAndNextControls.js.map +1 -0
- package/lib/module/VideoPlayer/components/SubtitleView.js +57 -0
- package/lib/module/VideoPlayer/components/SubtitleView.js.map +1 -0
- package/lib/module/VideoPlayer/context/VideoPlayerConfig.js +47 -0
- package/lib/module/VideoPlayer/context/VideoPlayerConfig.js.map +1 -0
- package/lib/module/VideoPlayer/context/index.js +4 -0
- package/lib/module/VideoPlayer/context/index.js.map +1 -0
- package/lib/module/VideoPlayer/index.js +7 -0
- package/lib/module/VideoPlayer/index.js.map +1 -0
- package/lib/module/VideoPlayer/model/AudioAndSubtitles.js +257 -0
- package/lib/module/VideoPlayer/model/AudioAndSubtitles.js.map +1 -0
- package/lib/module/VideoPlayer/model/Episodes.js +272 -0
- package/lib/module/VideoPlayer/model/Episodes.js.map +1 -0
- package/lib/module/VideoPlayer/model/SettingModal.js +115 -0
- package/lib/module/VideoPlayer/model/SettingModal.js.map +1 -0
- package/lib/module/VideoPlayer/model/SpeedControls.js +140 -0
- package/lib/module/VideoPlayer/model/SpeedControls.js.map +1 -0
- package/lib/module/VideoPlayer/model/VideoPlayerSettings.js +113 -0
- package/lib/module/VideoPlayer/model/VideoPlayerSettings.js.map +1 -0
- package/lib/module/VideoPlayer/store/index.js +5 -0
- package/lib/module/VideoPlayer/store/index.js.map +1 -0
- package/lib/module/VideoPlayer/store/videoPlayer.type.js +4 -0
- package/lib/module/VideoPlayer/store/videoPlayer.type.js.map +1 -0
- package/lib/module/VideoPlayer/store/videoPlayerStore.js +147 -0
- package/lib/module/VideoPlayer/store/videoPlayerStore.js.map +1 -0
- package/lib/module/VideoPlayer/utils/Display.js +22 -0
- package/lib/module/VideoPlayer/utils/Display.js.map +1 -0
- package/lib/module/VideoPlayer/utils/PlatformSelector.js +18 -0
- package/lib/module/VideoPlayer/utils/PlatformSelector.js.map +1 -0
- package/lib/module/VideoPlayer/utils/hooks/index.js +5 -0
- package/lib/module/VideoPlayer/utils/hooks/index.js.map +1 -0
- package/lib/module/VideoPlayer/utils/hooks/useVideoPlayerBack.js +48 -0
- package/lib/module/VideoPlayer/utils/hooks/useVideoPlayerBack.js.map +1 -0
- package/lib/module/VideoPlayer/utils/hooks/useVideoResolutions.js +88 -0
- package/lib/module/VideoPlayer/utils/hooks/useVideoResolutions.js.map +1 -0
- package/lib/module/VideoPlayer/utils/index.js +10 -0
- package/lib/module/VideoPlayer/utils/index.js.map +1 -0
- package/lib/module/VideoPlayer/utils/lockOrientation.js +31 -0
- package/lib/module/VideoPlayer/utils/lockOrientation.js.map +1 -0
- package/lib/module/VideoPlayer/utils/playerEvents.js +79 -0
- package/lib/module/VideoPlayer/utils/playerEvents.js.map +1 -0
- package/lib/module/VideoPlayer/utils/timeFormatter.js +35 -0
- package/lib/module/VideoPlayer/utils/timeFormatter.js.map +1 -0
- package/lib/module/VideoPlayer/utils/useWatchReporter.js +68 -0
- package/lib/module/VideoPlayer/utils/useWatchReporter.js.map +1 -0
- package/lib/module/VideoPlayer/utils/videoControl.js +166 -0
- package/lib/module/VideoPlayer/utils/videoControl.js.map +1 -0
- package/lib/module/VideoPlayer/utils/videoRef.js +5 -0
- package/lib/module/VideoPlayer/utils/videoRef.js.map +1 -0
- package/lib/module/VideoPlayer/utils/videoSource.js +17 -0
- package/lib/module/VideoPlayer/utils/videoSource.js.map +1 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/BottomControls.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/BottomControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MediaControls.d.ts +6 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MediaControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MediaControlsProvider.d.ts +14 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MediaControlsProvider.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MiddleControls.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/MiddleControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/TopControls.d.ts +7 -0
- package/lib/typescript/src/VideoPlayer/MediaControls/TopControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/Styles/fonts.d.ts +54 -0
- package/lib/typescript/src/VideoPlayer/Styles/fonts.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/Styles/globalStyles.d.ts +70 -0
- package/lib/typescript/src/VideoPlayer/Styles/globalStyles.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/VideoPlayer.d.ts +22 -0
- package/lib/typescript/src/VideoPlayer/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/components/ProgressBar.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/components/ProgressBar.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/components/SkipAndNextControls.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/components/SkipAndNextControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/components/SubtitleView.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/components/SubtitleView.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/context/VideoPlayerConfig.d.ts +25 -0
- package/lib/typescript/src/VideoPlayer/context/VideoPlayerConfig.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/context/index.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/context/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/index.d.ts +5 -0
- package/lib/typescript/src/VideoPlayer/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/AudioAndSubtitles.d.ts +4 -0
- package/lib/typescript/src/VideoPlayer/model/AudioAndSubtitles.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/Episodes.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/model/Episodes.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/SettingModal.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/model/SettingModal.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/SpeedControls.d.ts +4 -0
- package/lib/typescript/src/VideoPlayer/model/SpeedControls.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/model/VideoPlayerSettings.d.ts +7 -0
- package/lib/typescript/src/VideoPlayer/model/VideoPlayerSettings.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/store/index.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/store/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/store/videoPlayer.type.d.ts +144 -0
- package/lib/typescript/src/VideoPlayer/store/videoPlayer.type.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/store/videoPlayerStore.d.ts +20 -0
- package/lib/typescript/src/VideoPlayer/store/videoPlayerStore.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/Display.d.ts +8 -0
- package/lib/typescript/src/VideoPlayer/utils/Display.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/PlatformSelector.d.ts +11 -0
- package/lib/typescript/src/VideoPlayer/utils/PlatformSelector.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/index.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoPlayerBack.d.ts +6 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoPlayerBack.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoResolutions.d.ts +12 -0
- package/lib/typescript/src/VideoPlayer/utils/hooks/useVideoResolutions.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/index.d.ts +8 -0
- package/lib/typescript/src/VideoPlayer/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/lockOrientation.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/utils/lockOrientation.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/playerEvents.d.ts +18 -0
- package/lib/typescript/src/VideoPlayer/utils/playerEvents.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/timeFormatter.d.ts +9 -0
- package/lib/typescript/src/VideoPlayer/utils/timeFormatter.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/useWatchReporter.d.ts +26 -0
- package/lib/typescript/src/VideoPlayer/utils/useWatchReporter.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/videoControl.d.ts +17 -0
- package/lib/typescript/src/VideoPlayer/utils/videoControl.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/videoRef.d.ts +3 -0
- package/lib/typescript/src/VideoPlayer/utils/videoRef.d.ts.map +1 -0
- package/lib/typescript/src/VideoPlayer/utils/videoSource.d.ts +10 -0
- package/lib/typescript/src/VideoPlayer/utils/videoSource.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +191 -0
- package/src/VideoPlayer/MediaControls/BottomControls.tsx +185 -0
- package/src/VideoPlayer/MediaControls/MediaControls.tsx +29 -0
- package/src/VideoPlayer/MediaControls/MediaControlsProvider.tsx +99 -0
- package/src/VideoPlayer/MediaControls/MiddleControls.tsx +232 -0
- package/src/VideoPlayer/MediaControls/TopControls.tsx +92 -0
- package/src/VideoPlayer/Styles/fonts.ts +106 -0
- package/src/VideoPlayer/Styles/globalStyles.ts +74 -0
- package/src/VideoPlayer/VideoPlayer.tsx +217 -0
- package/src/VideoPlayer/components/ProgressBar.tsx +98 -0
- package/src/VideoPlayer/components/SkipAndNextControls.tsx +195 -0
- package/src/VideoPlayer/components/SubtitleView.tsx +53 -0
- package/src/VideoPlayer/context/VideoPlayerConfig.tsx +65 -0
- package/src/VideoPlayer/context/index.ts +5 -0
- package/src/VideoPlayer/index.ts +4 -0
- package/src/VideoPlayer/model/AudioAndSubtitles.tsx +302 -0
- package/src/VideoPlayer/model/Episodes.tsx +294 -0
- package/src/VideoPlayer/model/SettingModal.tsx +128 -0
- package/src/VideoPlayer/model/SpeedControls.tsx +134 -0
- package/src/VideoPlayer/model/VideoPlayerSettings.tsx +141 -0
- package/src/VideoPlayer/store/index.ts +2 -0
- package/src/VideoPlayer/store/videoPlayer.type.ts +192 -0
- package/src/VideoPlayer/store/videoPlayerStore.ts +101 -0
- package/src/VideoPlayer/utils/Display.ts +14 -0
- package/src/VideoPlayer/utils/PlatformSelector.ts +18 -0
- package/src/VideoPlayer/utils/hooks/index.ts +2 -0
- package/src/VideoPlayer/utils/hooks/useVideoPlayerBack.ts +66 -0
- package/src/VideoPlayer/utils/hooks/useVideoResolutions.ts +119 -0
- package/src/VideoPlayer/utils/index.ts +7 -0
- package/src/VideoPlayer/utils/lockOrientation.ts +34 -0
- package/src/VideoPlayer/utils/playerEvents.ts +97 -0
- package/src/VideoPlayer/utils/timeFormatter.ts +47 -0
- package/src/VideoPlayer/utils/useWatchReporter.ts +104 -0
- package/src/VideoPlayer/utils/videoControl.ts +192 -0
- package/src/VideoPlayer/utils/videoRef.ts +4 -0
- package/src/VideoPlayer/utils/videoSource.ts +23 -0
- package/src/index.tsx +1 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable react/no-unstable-nested-components */
|
|
4
|
+
import { FlatList, TouchableOpacity, View, StyleSheet, Text } from 'react-native';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import FastImage from 'react-native-fast-image';
|
|
7
|
+
import { moderateScale, verticalScale } from 'react-native-size-matters';
|
|
8
|
+
import { MenuProvider, Menu, MenuOptions, MenuOption, MenuTrigger } from 'react-native-popup-menu';
|
|
9
|
+
import { RFValue } from 'react-native-responsive-fontsize';
|
|
10
|
+
import { formatDuration, getEpisodeIndex } from "../utils/index.js";
|
|
11
|
+
import { useVideoPlayerStore } from "../store/videoPlayerStore.js";
|
|
12
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
13
|
+
import globalStyles from "../Styles/globalStyles.js";
|
|
14
|
+
import { useVideoPlayerConfig } from "../context/index.js";
|
|
15
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
const Episodes = ({
|
|
17
|
+
onPressEpisode,
|
|
18
|
+
reportProgress
|
|
19
|
+
}) => {
|
|
20
|
+
const {
|
|
21
|
+
activeSeason,
|
|
22
|
+
activeTrack,
|
|
23
|
+
setCurrentTrackIndex,
|
|
24
|
+
setActiveTrack,
|
|
25
|
+
playList,
|
|
26
|
+
setSettingsModal,
|
|
27
|
+
setIsPaused,
|
|
28
|
+
contentSeasons,
|
|
29
|
+
setActiveSeason,
|
|
30
|
+
setSelectedSubtitleTrack,
|
|
31
|
+
setPlayBackRate,
|
|
32
|
+
setActiveSubtitle,
|
|
33
|
+
setSelectedVideoTrack,
|
|
34
|
+
setMaxBitRate,
|
|
35
|
+
setDuration
|
|
36
|
+
} = useVideoPlayerStore();
|
|
37
|
+
const {
|
|
38
|
+
colors
|
|
39
|
+
} = useVideoPlayerConfig();
|
|
40
|
+
const {
|
|
41
|
+
left
|
|
42
|
+
} = useSafeAreaInsets();
|
|
43
|
+
if (!activeSeason?.seasonNumber || !activeSeason?.episodes) {
|
|
44
|
+
return /*#__PURE__*/_jsx(View, {
|
|
45
|
+
style: globalStyles.flexOneJustifyContentCenterAndAlignItemsCenter,
|
|
46
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
47
|
+
style: {
|
|
48
|
+
color: colors.text
|
|
49
|
+
},
|
|
50
|
+
children: "Something went wrong. Please try again."
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const handleEpisodePress = async episode => {
|
|
55
|
+
const isSuccess = await onPressEpisode({
|
|
56
|
+
episode
|
|
57
|
+
});
|
|
58
|
+
if (!isSuccess) return;
|
|
59
|
+
if (episode.id === activeTrack?.episodeId) {
|
|
60
|
+
setSettingsModal({
|
|
61
|
+
isVisible: false,
|
|
62
|
+
action: 'none'
|
|
63
|
+
});
|
|
64
|
+
setIsPaused(false);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const index = getEpisodeIndex(playList, episode.id);
|
|
68
|
+
setCurrentTrackIndex(index);
|
|
69
|
+
setDuration(0);
|
|
70
|
+
setActiveTrack({
|
|
71
|
+
type: 'series',
|
|
72
|
+
episodeId: episode.id,
|
|
73
|
+
contentId: episode.contentId,
|
|
74
|
+
episodeName: episode.title,
|
|
75
|
+
episodeNumber: episode.episodeNumber,
|
|
76
|
+
seasonNumber: activeSeason.seasonNumber ?? 0,
|
|
77
|
+
skipIntro: episode.skipIntro ?? undefined,
|
|
78
|
+
nextEpisodeAt: episode.nextEpisodeAt ?? undefined,
|
|
79
|
+
sourceLink: episode.sourceLink || '',
|
|
80
|
+
thumbnail: episode.thumbnail,
|
|
81
|
+
subtitles: episode.subtitles || null,
|
|
82
|
+
id: episode.id,
|
|
83
|
+
title: episode.title,
|
|
84
|
+
description: episode.description || '',
|
|
85
|
+
duration: episode.duration || 0,
|
|
86
|
+
sourceType: episode.sourceType || 'HLS'
|
|
87
|
+
});
|
|
88
|
+
setSelectedSubtitleTrack(null);
|
|
89
|
+
setActiveSubtitle(null);
|
|
90
|
+
setSelectedVideoTrack(null);
|
|
91
|
+
setMaxBitRate(null);
|
|
92
|
+
setSettingsModal({
|
|
93
|
+
isVisible: false,
|
|
94
|
+
action: 'none'
|
|
95
|
+
});
|
|
96
|
+
setIsPaused(false);
|
|
97
|
+
setPlayBackRate(1, 'Normal');
|
|
98
|
+
};
|
|
99
|
+
return /*#__PURE__*/_jsx(MenuProvider, {
|
|
100
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
101
|
+
children: [/*#__PURE__*/_jsxs(Menu, {
|
|
102
|
+
children: [/*#__PURE__*/_jsx(MenuTrigger, {
|
|
103
|
+
style: [styles.menuTrigger, {
|
|
104
|
+
marginLeft: left + moderateScale(8)
|
|
105
|
+
}],
|
|
106
|
+
customStyles: {
|
|
107
|
+
triggerText: {
|
|
108
|
+
...menuTriggerCustomStyles.triggerText,
|
|
109
|
+
color: colors.text
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
text: `Season ${activeSeason?.seasonNumber}`
|
|
113
|
+
}), /*#__PURE__*/_jsx(MenuOptions, {
|
|
114
|
+
optionsContainerStyle: styles.menuOptionsContainer,
|
|
115
|
+
children: contentSeasons?.map((season, index) => /*#__PURE__*/_jsx(MenuOption, {
|
|
116
|
+
style: styles.menuOption,
|
|
117
|
+
customStyles: menuOptionCustomStyles,
|
|
118
|
+
onSelect: () => setActiveSeason(season),
|
|
119
|
+
text: `Season ${season.seasonNumber}`
|
|
120
|
+
}, index))
|
|
121
|
+
})]
|
|
122
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
123
|
+
style: styles.episodesContainer,
|
|
124
|
+
children: /*#__PURE__*/_jsx(FlatList, {
|
|
125
|
+
data: activeSeason?.episodes,
|
|
126
|
+
horizontal: true,
|
|
127
|
+
showsHorizontalScrollIndicator: false,
|
|
128
|
+
ItemSeparatorComponent: () => /*#__PURE__*/_jsx(View, {
|
|
129
|
+
style: {
|
|
130
|
+
width: moderateScale(12)
|
|
131
|
+
}
|
|
132
|
+
}),
|
|
133
|
+
ListHeaderComponent: () => /*#__PURE__*/_jsx(View, {
|
|
134
|
+
style: {
|
|
135
|
+
width: left + moderateScale(8)
|
|
136
|
+
}
|
|
137
|
+
}),
|
|
138
|
+
ListFooterComponent: () => /*#__PURE__*/_jsx(View, {
|
|
139
|
+
style: {
|
|
140
|
+
width: moderateScale(16)
|
|
141
|
+
}
|
|
142
|
+
}),
|
|
143
|
+
renderItem: ({
|
|
144
|
+
item
|
|
145
|
+
}) => /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
146
|
+
onPress: () => {
|
|
147
|
+
reportProgress('EPISODE_CHANGE');
|
|
148
|
+
handleEpisodePress(item);
|
|
149
|
+
},
|
|
150
|
+
style: styles.episodeItem,
|
|
151
|
+
activeOpacity: 0.8,
|
|
152
|
+
children: [/*#__PURE__*/_jsx(FastImage, {
|
|
153
|
+
source: {
|
|
154
|
+
uri: item?.thumbnail
|
|
155
|
+
},
|
|
156
|
+
style: styles.episodeThumbnail,
|
|
157
|
+
resizeMode: FastImage.resizeMode.cover
|
|
158
|
+
}), item.id === activeTrack?.episodeId && /*#__PURE__*/_jsx(Text, {
|
|
159
|
+
style: [styles.nowPlayingBadge, {
|
|
160
|
+
color: colors.text,
|
|
161
|
+
backgroundColor: colors.primary
|
|
162
|
+
}],
|
|
163
|
+
children: "Now Playing"
|
|
164
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
165
|
+
numberOfLines: 1,
|
|
166
|
+
style: [styles.episodeTitle, {
|
|
167
|
+
color: colors.text
|
|
168
|
+
}],
|
|
169
|
+
children: item?.title
|
|
170
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
171
|
+
style: styles.episodeInfoRow,
|
|
172
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
173
|
+
style: styles.episodeInfoText,
|
|
174
|
+
children: [item.episodeNumber && `S${String(activeSeason?.seasonNumber).padStart(2, '0')} E${String(item.episodeNumber).padStart(2, '0')}`, item.publishDate && `(${item.publishDate})`, item?.duration && formatDuration(item?.duration, true)].filter(Boolean).join(' | ')
|
|
175
|
+
})
|
|
176
|
+
}), item.description && /*#__PURE__*/_jsx(Text, {
|
|
177
|
+
style: styles.episodeDescription,
|
|
178
|
+
numberOfLines: 3,
|
|
179
|
+
children: item?.description
|
|
180
|
+
})]
|
|
181
|
+
}),
|
|
182
|
+
keyExtractor: item => item?.id
|
|
183
|
+
})
|
|
184
|
+
})]
|
|
185
|
+
})
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
const styles = StyleSheet.create({
|
|
189
|
+
menuTrigger: {
|
|
190
|
+
alignSelf: 'flex-start',
|
|
191
|
+
backgroundColor: 'gray',
|
|
192
|
+
paddingHorizontal: moderateScale(16),
|
|
193
|
+
paddingVertical: moderateScale(8),
|
|
194
|
+
marginTop: verticalScale(20),
|
|
195
|
+
borderRadius: moderateScale(8)
|
|
196
|
+
},
|
|
197
|
+
menuOptionsContainer: {
|
|
198
|
+
marginTop: verticalScale(60),
|
|
199
|
+
width: moderateScale(150)
|
|
200
|
+
},
|
|
201
|
+
menuOption: {
|
|
202
|
+
paddingHorizontal: moderateScale(16),
|
|
203
|
+
paddingVertical: moderateScale(12)
|
|
204
|
+
},
|
|
205
|
+
episodesContainer: {
|
|
206
|
+
marginTop: verticalScale(20),
|
|
207
|
+
paddingBottom: verticalScale(20)
|
|
208
|
+
},
|
|
209
|
+
episodeItem: {
|
|
210
|
+
width: moderateScale(240),
|
|
211
|
+
backgroundColor: '#373737ff',
|
|
212
|
+
borderRadius: moderateScale(12),
|
|
213
|
+
overflow: 'hidden'
|
|
214
|
+
},
|
|
215
|
+
episodeThumbnail: {
|
|
216
|
+
width: '100%',
|
|
217
|
+
height: undefined,
|
|
218
|
+
aspectRatio: 16 / 9,
|
|
219
|
+
backgroundColor: '#444' // slightly lighter fallback
|
|
220
|
+
},
|
|
221
|
+
nowPlayingBadge: {
|
|
222
|
+
position: 'absolute',
|
|
223
|
+
top: moderateScale(6),
|
|
224
|
+
left: moderateScale(6),
|
|
225
|
+
paddingHorizontal: moderateScale(8),
|
|
226
|
+
paddingVertical: moderateScale(4),
|
|
227
|
+
// slightly bigger
|
|
228
|
+
borderRadius: moderateScale(4),
|
|
229
|
+
fontSize: RFValue(12),
|
|
230
|
+
fontWeight: '600',
|
|
231
|
+
overflow: 'hidden'
|
|
232
|
+
},
|
|
233
|
+
episodeTitle: {
|
|
234
|
+
fontSize: RFValue(14),
|
|
235
|
+
// bigger
|
|
236
|
+
fontWeight: '600',
|
|
237
|
+
// bolder
|
|
238
|
+
marginHorizontal: moderateScale(8),
|
|
239
|
+
marginTop: verticalScale(3)
|
|
240
|
+
},
|
|
241
|
+
episodeInfoRow: {
|
|
242
|
+
flexDirection: 'row',
|
|
243
|
+
justifyContent: 'flex-start',
|
|
244
|
+
// better alignment
|
|
245
|
+
marginHorizontal: moderateScale(8),
|
|
246
|
+
marginTop: verticalScale(2),
|
|
247
|
+
alignItems: 'center'
|
|
248
|
+
},
|
|
249
|
+
episodeInfoText: {
|
|
250
|
+
color: '#f1f1f1ff',
|
|
251
|
+
fontSize: RFValue(10.5)
|
|
252
|
+
},
|
|
253
|
+
episodeDescription: {
|
|
254
|
+
marginHorizontal: moderateScale(8),
|
|
255
|
+
marginVertical: verticalScale(5),
|
|
256
|
+
color: '#f1f1f1ff',
|
|
257
|
+
fontSize: RFValue(10),
|
|
258
|
+
lineHeight: RFValue(10)
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
const menuTriggerCustomStyles = {
|
|
262
|
+
triggerText: {
|
|
263
|
+
fontSize: RFValue(16)
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
const menuOptionCustomStyles = {
|
|
267
|
+
optionText: {
|
|
268
|
+
fontSize: RFValue(16)
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
export default Episodes;
|
|
272
|
+
//# sourceMappingURL=Episodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FlatList","TouchableOpacity","View","StyleSheet","Text","React","FastImage","moderateScale","verticalScale","MenuProvider","Menu","MenuOptions","MenuOption","MenuTrigger","RFValue","formatDuration","getEpisodeIndex","useVideoPlayerStore","useSafeAreaInsets","globalStyles","useVideoPlayerConfig","jsx","_jsx","jsxs","_jsxs","Episodes","onPressEpisode","reportProgress","activeSeason","activeTrack","setCurrentTrackIndex","setActiveTrack","playList","setSettingsModal","setIsPaused","contentSeasons","setActiveSeason","setSelectedSubtitleTrack","setPlayBackRate","setActiveSubtitle","setSelectedVideoTrack","setMaxBitRate","setDuration","colors","left","seasonNumber","episodes","style","flexOneJustifyContentCenterAndAlignItemsCenter","children","color","text","handleEpisodePress","episode","isSuccess","id","episodeId","isVisible","action","index","type","contentId","episodeName","title","episodeNumber","skipIntro","undefined","nextEpisodeAt","sourceLink","thumbnail","subtitles","description","duration","sourceType","styles","menuTrigger","marginLeft","customStyles","triggerText","menuTriggerCustomStyles","optionsContainerStyle","menuOptionsContainer","map","season","menuOption","menuOptionCustomStyles","onSelect","episodesContainer","data","horizontal","showsHorizontalScrollIndicator","ItemSeparatorComponent","width","ListHeaderComponent","ListFooterComponent","renderItem","item","onPress","episodeItem","activeOpacity","source","uri","episodeThumbnail","resizeMode","cover","nowPlayingBadge","backgroundColor","primary","numberOfLines","episodeTitle","episodeInfoRow","episodeInfoText","String","padStart","publishDate","filter","Boolean","join","episodeDescription","keyExtractor","create","alignSelf","paddingHorizontal","paddingVertical","marginTop","borderRadius","paddingBottom","overflow","height","aspectRatio","position","top","fontSize","fontWeight","marginHorizontal","flexDirection","justifyContent","alignItems","marginVertical","lineHeight","optionText"],"sourceRoot":"../../../../src","sources":["VideoPlayer/model/Episodes.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { moderateScale } from 'react-native-size-matters';
|
|
6
|
+
import { X } from 'lucide-react-native';
|
|
7
|
+
import { useVideoPlayerStore } from "../store/videoPlayerStore.js";
|
|
8
|
+
import Episodes from "./Episodes.js";
|
|
9
|
+
import SpeedControls from "./SpeedControls.js";
|
|
10
|
+
import VideoPlayerSettings from "./VideoPlayerSettings.js";
|
|
11
|
+
import AudioAndSubtitles from "./AudioAndSubtitles.js";
|
|
12
|
+
import { useVideoResolutions } from "../utils/hooks/useVideoResolutions.js";
|
|
13
|
+
import { useVideoPlayerConfig } from "../context/index.js";
|
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
const VisibleAction = ({
|
|
16
|
+
settingModalAction,
|
|
17
|
+
onPressEpisode,
|
|
18
|
+
reportProgress,
|
|
19
|
+
resolutions
|
|
20
|
+
}) => {
|
|
21
|
+
switch (settingModalAction) {
|
|
22
|
+
case 'speed':
|
|
23
|
+
return /*#__PURE__*/_jsx(SpeedControls, {});
|
|
24
|
+
case 'audioOrSubtitle':
|
|
25
|
+
return /*#__PURE__*/_jsx(AudioAndSubtitles, {});
|
|
26
|
+
case 'settings':
|
|
27
|
+
return /*#__PURE__*/_jsx(VideoPlayerSettings, {
|
|
28
|
+
resolutions: resolutions || []
|
|
29
|
+
});
|
|
30
|
+
case 'episodes':
|
|
31
|
+
return /*#__PURE__*/_jsx(Episodes, {
|
|
32
|
+
onPressEpisode: onPressEpisode,
|
|
33
|
+
reportProgress: reportProgress
|
|
34
|
+
});
|
|
35
|
+
default:
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const SettingModal = ({
|
|
40
|
+
onPressEpisode,
|
|
41
|
+
reportProgress
|
|
42
|
+
}) => {
|
|
43
|
+
const {
|
|
44
|
+
settingsModal,
|
|
45
|
+
setSettingsModal,
|
|
46
|
+
setIsPaused,
|
|
47
|
+
setControlsVisible,
|
|
48
|
+
activeTrack
|
|
49
|
+
} = useVideoPlayerStore();
|
|
50
|
+
const {
|
|
51
|
+
colors
|
|
52
|
+
} = useVideoPlayerConfig();
|
|
53
|
+
// Fetch available resolutions for current track
|
|
54
|
+
const resolutions = useVideoResolutions(activeTrack);
|
|
55
|
+
const onClose = () => {
|
|
56
|
+
setSettingsModal({
|
|
57
|
+
isVisible: false,
|
|
58
|
+
action: 'none'
|
|
59
|
+
});
|
|
60
|
+
setIsPaused(false);
|
|
61
|
+
setControlsVisible(true);
|
|
62
|
+
};
|
|
63
|
+
if (!settingsModal.isVisible) return null;
|
|
64
|
+
const containerStyle = settingsModal.action === 'audioOrSubtitle' ? [styles.contentContainer, styles.audioOrSubtitlePadding] : styles.contentContainer;
|
|
65
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
66
|
+
style: StyleSheet.absoluteFill,
|
|
67
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
68
|
+
style: styles.overlay
|
|
69
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
70
|
+
onPress: onClose,
|
|
71
|
+
style: styles.closeButton,
|
|
72
|
+
children: /*#__PURE__*/_jsx(X, {
|
|
73
|
+
color: colors.text,
|
|
74
|
+
size: moderateScale(25)
|
|
75
|
+
})
|
|
76
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
77
|
+
style: containerStyle,
|
|
78
|
+
children: /*#__PURE__*/_jsx(VisibleAction, {
|
|
79
|
+
settingModalAction: settingsModal.action,
|
|
80
|
+
resolutions: resolutions,
|
|
81
|
+
onPressEpisode: onPressEpisode,
|
|
82
|
+
reportProgress: reportProgress
|
|
83
|
+
})
|
|
84
|
+
})]
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
export default SettingModal;
|
|
88
|
+
const styles = StyleSheet.create({
|
|
89
|
+
overlay: {
|
|
90
|
+
...StyleSheet.absoluteFillObject,
|
|
91
|
+
backgroundColor: 'rgba(0,0,0,0.9)',
|
|
92
|
+
pointerEvents: 'none'
|
|
93
|
+
},
|
|
94
|
+
closeButton: {
|
|
95
|
+
position: 'absolute',
|
|
96
|
+
top: moderateScale(20),
|
|
97
|
+
right: moderateScale(60),
|
|
98
|
+
width: moderateScale(50),
|
|
99
|
+
height: moderateScale(50),
|
|
100
|
+
justifyContent: 'center',
|
|
101
|
+
alignItems: 'center',
|
|
102
|
+
borderRadius: moderateScale(50),
|
|
103
|
+
zIndex: 10000
|
|
104
|
+
},
|
|
105
|
+
contentContainer: {
|
|
106
|
+
flex: 1,
|
|
107
|
+
zIndex: 1000
|
|
108
|
+
},
|
|
109
|
+
audioOrSubtitlePadding: {
|
|
110
|
+
paddingLeft: moderateScale(16),
|
|
111
|
+
paddingRight: moderateScale(16),
|
|
112
|
+
paddingTop: moderateScale(8)
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=SettingModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","TouchableOpacity","View","React","moderateScale","X","useVideoPlayerStore","Episodes","SpeedControls","VideoPlayerSettings","AudioAndSubtitles","useVideoResolutions","useVideoPlayerConfig","jsx","_jsx","jsxs","_jsxs","VisibleAction","settingModalAction","onPressEpisode","reportProgress","resolutions","SettingModal","settingsModal","setSettingsModal","setIsPaused","setControlsVisible","activeTrack","colors","onClose","isVisible","action","containerStyle","styles","contentContainer","audioOrSubtitlePadding","style","absoluteFill","children","overlay","onPress","closeButton","color","text","size","create","absoluteFillObject","backgroundColor","pointerEvents","position","top","right","width","height","justifyContent","alignItems","borderRadius","zIndex","flex","paddingLeft","paddingRight","paddingTop"],"sourceRoot":"../../../../src","sources":["VideoPlayer/model/SettingModal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useMemo } from 'react';
|
|
4
|
+
import { FlatList, TouchableOpacity, View, StyleSheet, Text } from 'react-native';
|
|
5
|
+
import { verticalScale } from 'react-native-size-matters';
|
|
6
|
+
import { RFValue } from 'react-native-responsive-fontsize';
|
|
7
|
+
import { useVideoPlayerStore } from "../store/videoPlayerStore.js";
|
|
8
|
+
import globalStyles from "../Styles/globalStyles.js";
|
|
9
|
+
import { useVideoPlayerConfig } from "../context/index.js";
|
|
10
|
+
|
|
11
|
+
// --- Constants ---
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
const SPEED_OPTIONS = [{
|
|
14
|
+
name: '0.25x',
|
|
15
|
+
value: 0.25
|
|
16
|
+
}, {
|
|
17
|
+
name: '0.5x',
|
|
18
|
+
value: 0.5
|
|
19
|
+
}, {
|
|
20
|
+
name: '0.75x',
|
|
21
|
+
value: 0.75
|
|
22
|
+
}, {
|
|
23
|
+
name: 'Normal',
|
|
24
|
+
value: 1
|
|
25
|
+
}, {
|
|
26
|
+
name: '1.25x',
|
|
27
|
+
value: 1.25
|
|
28
|
+
}, {
|
|
29
|
+
name: '1.5x',
|
|
30
|
+
value: 1.5
|
|
31
|
+
}, {
|
|
32
|
+
name: '1.75x',
|
|
33
|
+
value: 1.75
|
|
34
|
+
}, {
|
|
35
|
+
name: '2x',
|
|
36
|
+
value: 2
|
|
37
|
+
}];
|
|
38
|
+
|
|
39
|
+
// --- UI Components ---
|
|
40
|
+
const ListHeader = () => /*#__PURE__*/_jsx(View, {
|
|
41
|
+
style: styles.listHeader
|
|
42
|
+
});
|
|
43
|
+
const ListFooter = () => /*#__PURE__*/_jsx(View, {
|
|
44
|
+
style: styles.listFooter
|
|
45
|
+
});
|
|
46
|
+
const SpeedItem = ({
|
|
47
|
+
name,
|
|
48
|
+
value,
|
|
49
|
+
isSelected,
|
|
50
|
+
onPress,
|
|
51
|
+
colors
|
|
52
|
+
}) => /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
53
|
+
onPress: () => onPress({
|
|
54
|
+
value,
|
|
55
|
+
name
|
|
56
|
+
}),
|
|
57
|
+
style: styles.itemTouchable,
|
|
58
|
+
activeOpacity: 0.7,
|
|
59
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
60
|
+
style: [styles.itemText, {
|
|
61
|
+
color: colors.text
|
|
62
|
+
}, isSelected ? styles.itemTextSelected : styles.itemTextUnselected],
|
|
63
|
+
children: name
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// --- Main Component ---
|
|
68
|
+
const SpeedControls = () => {
|
|
69
|
+
const {
|
|
70
|
+
setIsPaused,
|
|
71
|
+
playBackRate,
|
|
72
|
+
setPlayBackRate,
|
|
73
|
+
setControlsVisible,
|
|
74
|
+
setSettingsModal
|
|
75
|
+
} = useVideoPlayerStore();
|
|
76
|
+
const {
|
|
77
|
+
colors
|
|
78
|
+
} = useVideoPlayerConfig();
|
|
79
|
+
const speeds = useMemo(() => SPEED_OPTIONS, []);
|
|
80
|
+
const handleSelectSpeed = (value, name) => {
|
|
81
|
+
setPlayBackRate(value, name);
|
|
82
|
+
setSettingsModal({
|
|
83
|
+
action: 'none',
|
|
84
|
+
isVisible: false
|
|
85
|
+
});
|
|
86
|
+
setControlsVisible(true);
|
|
87
|
+
setIsPaused(false);
|
|
88
|
+
};
|
|
89
|
+
return /*#__PURE__*/_jsx(View, {
|
|
90
|
+
style: globalStyles.flexOneJustifyContentCenterAndAlignItemsCenter,
|
|
91
|
+
children: /*#__PURE__*/_jsx(FlatList, {
|
|
92
|
+
data: speeds,
|
|
93
|
+
showsVerticalScrollIndicator: false,
|
|
94
|
+
keyExtractor: item => item.name,
|
|
95
|
+
ListHeaderComponent: ListHeader,
|
|
96
|
+
ListFooterComponent: ListFooter,
|
|
97
|
+
renderItem: ({
|
|
98
|
+
item
|
|
99
|
+
}) => /*#__PURE__*/_jsx(SpeedItem, {
|
|
100
|
+
name: item.name,
|
|
101
|
+
value: item.value,
|
|
102
|
+
isSelected: playBackRate === item.value,
|
|
103
|
+
onPress: ({
|
|
104
|
+
value,
|
|
105
|
+
name
|
|
106
|
+
}) => handleSelectSpeed(value, name),
|
|
107
|
+
colors: colors
|
|
108
|
+
})
|
|
109
|
+
})
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
export default SpeedControls;
|
|
113
|
+
|
|
114
|
+
// --- Styles ---
|
|
115
|
+
const styles = StyleSheet.create({
|
|
116
|
+
listHeader: {
|
|
117
|
+
height: verticalScale(20)
|
|
118
|
+
},
|
|
119
|
+
listFooter: {
|
|
120
|
+
height: verticalScale(50)
|
|
121
|
+
},
|
|
122
|
+
itemTouchable: {
|
|
123
|
+
paddingVertical: verticalScale(12),
|
|
124
|
+
paddingHorizontal: verticalScale(30),
|
|
125
|
+
alignItems: 'center'
|
|
126
|
+
},
|
|
127
|
+
itemText: {
|
|
128
|
+
textAlign: 'center',
|
|
129
|
+
fontSize: RFValue(17),
|
|
130
|
+
// better readability
|
|
131
|
+
fontWeight: '600' // semi-bold for better emphasis
|
|
132
|
+
},
|
|
133
|
+
itemTextSelected: {
|
|
134
|
+
opacity: 1
|
|
135
|
+
},
|
|
136
|
+
itemTextUnselected: {
|
|
137
|
+
opacity: 0.6
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=SpeedControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useMemo","FlatList","TouchableOpacity","View","StyleSheet","Text","verticalScale","RFValue","useVideoPlayerStore","globalStyles","useVideoPlayerConfig","jsx","_jsx","SPEED_OPTIONS","name","value","ListHeader","style","styles","listHeader","ListFooter","listFooter","SpeedItem","isSelected","onPress","colors","itemTouchable","activeOpacity","children","itemText","color","text","itemTextSelected","itemTextUnselected","SpeedControls","setIsPaused","playBackRate","setPlayBackRate","setControlsVisible","setSettingsModal","speeds","handleSelectSpeed","action","isVisible","flexOneJustifyContentCenterAndAlignItemsCenter","data","showsVerticalScrollIndicator","keyExtractor","item","ListHeaderComponent","ListFooterComponent","renderItem","create","height","paddingVertical","paddingHorizontal","alignItems","textAlign","fontSize","fontWeight","opacity"],"sourceRoot":"../../../../src","sources":["VideoPlayer/model/SpeedControls.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable react/no-unstable-nested-components */
|
|
4
|
+
import { useCallback } from 'react';
|
|
5
|
+
import { FlatList, TouchableOpacity, View, StyleSheet, Text } from 'react-native';
|
|
6
|
+
import { scale, verticalScale } from 'react-native-size-matters';
|
|
7
|
+
import { RFValue } from 'react-native-responsive-fontsize';
|
|
8
|
+
import { SelectedVideoTrackType } from 'react-native-video';
|
|
9
|
+
import globalStyles from "../Styles/globalStyles.js";
|
|
10
|
+
import { useVideoPlayerStore } from "../store/index.js";
|
|
11
|
+
import { useVideoPlayerConfig } from "../context/index.js";
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
const VideoPlayerSettings = ({
|
|
14
|
+
resolutions
|
|
15
|
+
}) => {
|
|
16
|
+
const {
|
|
17
|
+
setMaxBitRate,
|
|
18
|
+
setSelectedVideoTrack,
|
|
19
|
+
setIsPaused,
|
|
20
|
+
setSettingsModal,
|
|
21
|
+
setControlsVisible,
|
|
22
|
+
maxBitRate
|
|
23
|
+
} = useVideoPlayerStore();
|
|
24
|
+
const {
|
|
25
|
+
colors
|
|
26
|
+
} = useVideoPlayerConfig();
|
|
27
|
+
const handleSelect = useCallback(item => {
|
|
28
|
+
if (item.height === 'auto') {
|
|
29
|
+
setSelectedVideoTrack(null);
|
|
30
|
+
setMaxBitRate(null);
|
|
31
|
+
} else {
|
|
32
|
+
setSelectedVideoTrack({
|
|
33
|
+
type: SelectedVideoTrackType.RESOLUTION,
|
|
34
|
+
value: Number(item.height)
|
|
35
|
+
});
|
|
36
|
+
setMaxBitRate(item.bandwidth ?? null);
|
|
37
|
+
}
|
|
38
|
+
setIsPaused(false);
|
|
39
|
+
setSettingsModal({
|
|
40
|
+
isVisible: false,
|
|
41
|
+
action: 'none'
|
|
42
|
+
});
|
|
43
|
+
setControlsVisible(false);
|
|
44
|
+
}, [setMaxBitRate, setSelectedVideoTrack, setIsPaused, setSettingsModal, setControlsVisible]);
|
|
45
|
+
const keyExtractor = useCallback((item, index) => `${item.height}-${index}`, []);
|
|
46
|
+
const renderItem = useCallback(({
|
|
47
|
+
item
|
|
48
|
+
}) => {
|
|
49
|
+
const isSelected = maxBitRate === item.bandwidth;
|
|
50
|
+
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
51
|
+
onPress: () => handleSelect(item),
|
|
52
|
+
activeOpacity: 0.7,
|
|
53
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
54
|
+
style: [styles.optionText, {
|
|
55
|
+
color: colors.text
|
|
56
|
+
}, isSelected ? styles.optionTextSelected : styles.optionTextUnselected],
|
|
57
|
+
children: item.height === 'auto' ? 'Auto' : `${item.height}p`
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
}, [colors.text, handleSelect, maxBitRate]);
|
|
61
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
62
|
+
style: [globalStyles.flexOne, styles.container],
|
|
63
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
64
|
+
style: [styles.headerText, {
|
|
65
|
+
color: colors.text
|
|
66
|
+
}, styles.marginTopBottom],
|
|
67
|
+
children: "Video Quality"
|
|
68
|
+
}), /*#__PURE__*/_jsx(FlatList, {
|
|
69
|
+
data: resolutions,
|
|
70
|
+
renderItem: renderItem,
|
|
71
|
+
keyExtractor: keyExtractor,
|
|
72
|
+
showsVerticalScrollIndicator: false,
|
|
73
|
+
contentContainerStyle: {
|
|
74
|
+
paddingBottom: verticalScale(50)
|
|
75
|
+
},
|
|
76
|
+
ItemSeparatorComponent: () => /*#__PURE__*/_jsx(View, {
|
|
77
|
+
style: {
|
|
78
|
+
height: verticalScale(12)
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
})]
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
export default VideoPlayerSettings;
|
|
85
|
+
const styles = StyleSheet.create({
|
|
86
|
+
container: {
|
|
87
|
+
alignItems: 'center',
|
|
88
|
+
paddingHorizontal: 20
|
|
89
|
+
},
|
|
90
|
+
headerText: {
|
|
91
|
+
fontSize: RFValue(20),
|
|
92
|
+
fontWeight: '700',
|
|
93
|
+
textAlign: 'center'
|
|
94
|
+
},
|
|
95
|
+
marginTopBottom: {
|
|
96
|
+
marginBottom: verticalScale(16),
|
|
97
|
+
paddingTop: verticalScale(24)
|
|
98
|
+
},
|
|
99
|
+
optionText: {
|
|
100
|
+
fontSize: RFValue(17),
|
|
101
|
+
paddingVertical: verticalScale(4),
|
|
102
|
+
paddingHorizontal: scale(12),
|
|
103
|
+
textAlign: 'center'
|
|
104
|
+
},
|
|
105
|
+
optionTextSelected: {
|
|
106
|
+
fontWeight: '700',
|
|
107
|
+
textDecorationLine: 'underline' // selected highlight
|
|
108
|
+
},
|
|
109
|
+
optionTextUnselected: {
|
|
110
|
+
opacity: 0.8
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=VideoPlayerSettings.js.map
|