@zezosoft/zezo-ott-react-native-ui-kit 1.1.2 → 1.1.3
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/lib/module/components/Auth/QrLogin/QrLogin.js +304 -138
- package/lib/module/components/Auth/QrLogin/QrLogin.js.map +1 -1
- package/lib/module/components/Auth/QrLogin/components/QrViewArea.js +193 -141
- package/lib/module/components/Auth/QrLogin/components/QrViewArea.js.map +1 -1
- package/lib/module/components/Content/Card/Category/Category.js +83 -11
- package/lib/module/components/Content/Card/Category/Category.js.map +1 -1
- package/lib/module/components/Content/Card/NowWatching/NowWatching.js +237 -108
- package/lib/module/components/Content/Card/NowWatching/NowWatching.js.map +1 -1
- package/lib/module/components/Content/Card/Sliders/Styles/One.js +185 -126
- package/lib/module/components/Content/Card/Sliders/Styles/One.js.map +1 -1
- package/lib/module/components/Content/Card/Sliders/Styles/Two.js +139 -92
- package/lib/module/components/Content/Card/Sliders/Styles/Two.js.map +1 -1
- package/lib/module/components/Content/Card/Styles/Five.js +131 -48
- package/lib/module/components/Content/Card/Styles/Five.js.map +1 -1
- package/lib/module/components/Content/Card/Styles/Four.js +126 -59
- package/lib/module/components/Content/Card/Styles/Four.js.map +1 -1
- package/lib/module/components/Content/Card/Styles/One.js +125 -50
- package/lib/module/components/Content/Card/Styles/One.js.map +1 -1
- package/lib/module/components/Content/Card/Styles/RotateInOut.js +138 -53
- package/lib/module/components/Content/Card/Styles/RotateInOut.js.map +1 -1
- package/lib/module/components/Content/Card/Styles/Six.js +207 -115
- package/lib/module/components/Content/Card/Styles/Six.js.map +1 -1
- package/lib/module/components/Content/Card/Styles/Three.js +134 -79
- package/lib/module/components/Content/Card/Styles/Three.js.map +1 -1
- package/lib/module/components/Content/Card/Styles/TopTen.js +186 -171
- package/lib/module/components/Content/Card/Styles/TopTen.js.map +1 -1
- package/lib/module/components/Content/Card/Styles/Two.js +144 -64
- package/lib/module/components/Content/Card/Styles/Two.js.map +1 -1
- package/lib/module/components/Content/Card/components/AdsPoster.js +162 -0
- package/lib/module/components/Content/Card/components/AdsPoster.js.map +1 -0
- package/lib/module/components/Content/Card/components/CardPoster.js +120 -136
- package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
- package/lib/module/components/Content/Card/components/index.js +4 -0
- package/lib/module/components/Content/Card/components/index.js.map +1 -0
- package/lib/module/components/Content/Content.js +67 -27
- package/lib/module/components/Content/Content.js.map +1 -1
- package/lib/module/components/Content/Sections.js +32 -11
- package/lib/module/components/Content/Sections.js.map +1 -1
- package/lib/module/constants/dummySections.js +44 -4
- package/lib/module/constants/dummySections.js.map +1 -1
- package/lib/module/hooks/Images/index.js +5 -0
- package/lib/module/hooks/Images/index.js.map +1 -0
- package/lib/module/hooks/Images/useImageLoader.js +168 -0
- package/lib/module/hooks/Images/useImageLoader.js.map +1 -0
- package/lib/module/hooks/Images/useImageValidation.js +36 -0
- package/lib/module/hooks/Images/useImageValidation.js.map +1 -0
- package/lib/module/hooks/index.js +3 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useAdTracking.js +270 -0
- package/lib/module/hooks/useAdTracking.js.map +1 -0
- package/lib/module/hooks/useCards.js +164 -0
- package/lib/module/hooks/useCards.js.map +1 -0
- package/lib/module/hooks/usePaginatedSection.js +11 -6
- package/lib/module/hooks/usePaginatedSection.js.map +1 -1
- package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts +2 -0
- package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts.map +1 -1
- package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Category/Category.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/NowWatching/NowWatching.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts +13 -1
- package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts +13 -1
- package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Styles/One.d.ts +15 -3
- package/lib/typescript/src/components/Content/Card/Styles/One.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts +13 -1
- package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts +1 -0
- package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts +13 -5
- package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts +1 -0
- package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts +13 -1
- package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/components/AdsPoster.d.ts +26 -0
- package/lib/typescript/src/components/Content/Card/components/AdsPoster.d.ts.map +1 -0
- package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts +3 -1
- package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Card/components/index.d.ts +2 -0
- package/lib/typescript/src/components/Content/Card/components/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Content/Card/index.d.ts +76 -6
- package/lib/typescript/src/components/Content/Card/index.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Content.d.ts +4 -3
- package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
- package/lib/typescript/src/components/Content/Sections.d.ts +20 -6
- package/lib/typescript/src/components/Content/Sections.d.ts.map +1 -1
- package/lib/typescript/src/constants/dummySections.d.ts +5 -0
- package/lib/typescript/src/constants/dummySections.d.ts.map +1 -1
- package/lib/typescript/src/hooks/Images/index.d.ts +3 -0
- package/lib/typescript/src/hooks/Images/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/Images/useImageLoader.d.ts +36 -0
- package/lib/typescript/src/hooks/Images/useImageLoader.d.ts.map +1 -0
- package/lib/typescript/src/hooks/Images/useImageValidation.d.ts +17 -0
- package/lib/typescript/src/hooks/Images/useImageValidation.d.ts.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +3 -0
- package/lib/typescript/src/hooks/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useAdTracking.d.ts +39 -0
- package/lib/typescript/src/hooks/useAdTracking.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useCards.d.ts +36 -0
- package/lib/typescript/src/hooks/useCards.d.ts.map +1 -0
- package/lib/typescript/src/hooks/usePaginatedSection.d.ts +12 -2
- package/lib/typescript/src/hooks/usePaginatedSection.d.ts.map +1 -1
- package/lib/typescript/src/types/sections/index.d.ts +7 -4
- package/lib/typescript/src/types/sections/index.d.ts.map +1 -1
- package/package.json +6 -3
- package/src/components/Auth/QrLogin/QrLogin.tsx +382 -122
- package/src/components/Auth/QrLogin/components/QrViewArea.tsx +291 -197
- package/src/components/Content/Card/Category/Category.tsx +95 -8
- package/src/components/Content/Card/NowWatching/NowWatching.tsx +281 -136
- package/src/components/Content/Card/Sliders/Styles/One.tsx +244 -148
- package/src/components/Content/Card/Sliders/Styles/Two.tsx +171 -102
- package/src/components/Content/Card/Styles/Five.tsx +161 -62
- package/src/components/Content/Card/Styles/Four.tsx +164 -85
- package/src/components/Content/Card/Styles/One.tsx +161 -71
- package/src/components/Content/Card/Styles/RotateInOut.tsx +157 -60
- package/src/components/Content/Card/Styles/Six.tsx +242 -142
- package/src/components/Content/Card/Styles/Three.tsx +166 -133
- package/src/components/Content/Card/Styles/TopTen.tsx +230 -191
- package/src/components/Content/Card/Styles/Two.tsx +182 -79
- package/src/components/Content/Card/components/AdsPoster.tsx +202 -0
- package/src/components/Content/Card/components/CardPoster.tsx +134 -154
- package/src/components/Content/Card/components/index.ts +1 -0
- package/src/components/Content/Content.tsx +83 -45
- package/src/components/Content/Sections.tsx +51 -10
- package/src/constants/dummySections.ts +48 -1
- package/src/hooks/Images/index.ts +2 -0
- package/src/hooks/Images/useImageLoader.ts +206 -0
- package/src/hooks/Images/useImageValidation.ts +36 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useAdTracking.ts +349 -0
- package/src/hooks/useCards.ts +228 -0
- package/src/hooks/usePaginatedSection.ts +26 -7
- package/src/types/sections/index.ts +7 -4
|
@@ -20,18 +20,49 @@ import { ThumbnailCard } from "../../components/ThumbnailCard.js";
|
|
|
20
20
|
import { RFValue } from 'react-native-responsive-fontsize';
|
|
21
21
|
import RentOrBuyIcon from "../../components/RentOrBuyIcon.js";
|
|
22
22
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Constants
|
|
25
|
+
// ============================================================================
|
|
23
26
|
const FULL_WIDTH = Display.fullWidth;
|
|
24
|
-
const
|
|
27
|
+
const ASPECT_RATIO = 9 / 16;
|
|
28
|
+
const FULL_HEIGHT = FULL_WIDTH * ASPECT_RATIO;
|
|
29
|
+
const DEFAULT_SKELETON_COUNT = 3;
|
|
30
|
+
const SCROLL_ANIMATION_DURATION = 300;
|
|
31
|
+
const AUTO_PLAY_INTERVAL = 3000;
|
|
32
|
+
const CAROUSEL_WINDOW_SIZE = 2;
|
|
33
|
+
const SNAP_DEBOUNCE_DELAY = 50;
|
|
34
|
+
const SKELETON_SPEED = 2000;
|
|
35
|
+
const PAN_GESTURE_ACTIVE_OFFSET_X = [-10, 10];
|
|
36
|
+
const PAN_GESTURE_FAIL_OFFSET_Y = [-5, 5];
|
|
37
|
+
const GRADIENT_OVERLAY_COLORS = ['transparent', 'rgba(0,0,0,0.7)'];
|
|
38
|
+
const GRADIENT_START = {
|
|
39
|
+
x: 0.5,
|
|
40
|
+
y: 0
|
|
41
|
+
};
|
|
42
|
+
const GRADIENT_END = {
|
|
43
|
+
x: 0.5,
|
|
44
|
+
y: 1
|
|
45
|
+
};
|
|
46
|
+
const INDICATOR_WIDTH_ACTIVE = scale(18);
|
|
47
|
+
const INDICATOR_WIDTH_INACTIVE = scale(8);
|
|
48
|
+
const INDICATOR_HEIGHT = scale(8);
|
|
49
|
+
const INDICATOR_BORDER_RADIUS = scale(50);
|
|
50
|
+
const TOUCH_OPACITY = 0.85;
|
|
25
51
|
|
|
26
|
-
//
|
|
52
|
+
// ============================================================================
|
|
53
|
+
// Types
|
|
54
|
+
// ============================================================================
|
|
27
55
|
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Helper Components
|
|
58
|
+
// ============================================================================
|
|
28
59
|
const CarouselItem = /*#__PURE__*/memo(({
|
|
29
60
|
item,
|
|
30
61
|
onPressItem,
|
|
31
62
|
appliedTheme,
|
|
32
63
|
gradientConfig
|
|
33
64
|
}) => /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
34
|
-
activeOpacity:
|
|
65
|
+
activeOpacity: TOUCH_OPACITY,
|
|
35
66
|
onPress: () => onPressItem?.(item),
|
|
36
67
|
style: styles.itemWrapper,
|
|
37
68
|
accessibilityRole: "button",
|
|
@@ -52,23 +83,65 @@ const CarouselItem = /*#__PURE__*/memo(({
|
|
|
52
83
|
style: styles.gradientBottomOverlay
|
|
53
84
|
})]
|
|
54
85
|
}));
|
|
86
|
+
CarouselItem.displayName = 'CarouselItem';
|
|
87
|
+
|
|
88
|
+
// ============================================================================
|
|
89
|
+
// Main Component
|
|
90
|
+
// ============================================================================
|
|
55
91
|
const SliderTwo = ({
|
|
56
92
|
data,
|
|
57
93
|
onPressItem,
|
|
58
94
|
isLoading = true,
|
|
59
|
-
skeletonCount =
|
|
95
|
+
skeletonCount = DEFAULT_SKELETON_COUNT,
|
|
60
96
|
accessibilityLabel = 'Full Width Slider',
|
|
61
97
|
accessibilityHint = 'Swipe to view content',
|
|
62
98
|
theme
|
|
63
99
|
}) => {
|
|
100
|
+
// ========================================================================
|
|
101
|
+
// Hooks & State
|
|
102
|
+
// ========================================================================
|
|
64
103
|
const {
|
|
65
104
|
theme: appliedTheme
|
|
66
105
|
} = useInternalTheme(theme);
|
|
67
|
-
const contentData = useMemo(() => data?.data ?? [], [data]);
|
|
68
106
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
69
|
-
const gradientColors = useMemo(() => [appliedTheme.colors.primary, appliedTheme.colors.primary], [appliedTheme.colors.primary]);
|
|
70
|
-
// Debounce snap handler to prevent stuttering
|
|
71
107
|
const snapTimeoutRef = useRef(null);
|
|
108
|
+
|
|
109
|
+
// ========================================================================
|
|
110
|
+
// Data Processing
|
|
111
|
+
// ========================================================================
|
|
112
|
+
const contentData = useMemo(() => data?.data ?? [], [data]);
|
|
113
|
+
const skeletonItems = useSkeletonItems(skeletonCount);
|
|
114
|
+
const indicatorArray = useMemo(() => Array.from({
|
|
115
|
+
length: isLoading ? skeletonItems.length : contentData.length
|
|
116
|
+
}, (_, i) => i), [isLoading, skeletonItems.length, contentData.length]);
|
|
117
|
+
const carouselData = useMemo(() => isLoading ? skeletonItems : contentData, [isLoading, skeletonItems, contentData]);
|
|
118
|
+
|
|
119
|
+
// ========================================================================
|
|
120
|
+
// Memoized Values
|
|
121
|
+
// ========================================================================
|
|
122
|
+
const gradientColors = useMemo(() => [appliedTheme.colors.primary, appliedTheme.colors.primary], [appliedTheme.colors.primary]);
|
|
123
|
+
const gradientConfig = useMemo(() => ({
|
|
124
|
+
colors: GRADIENT_OVERLAY_COLORS,
|
|
125
|
+
start: GRADIENT_START,
|
|
126
|
+
end: GRADIENT_END
|
|
127
|
+
}), []);
|
|
128
|
+
const carouselProps = useMemo(() => ({
|
|
129
|
+
width: FULL_WIDTH,
|
|
130
|
+
height: FULL_HEIGHT,
|
|
131
|
+
autoPlay: !isLoading && contentData.length > 1,
|
|
132
|
+
loop: !isLoading && contentData.length > 1,
|
|
133
|
+
scrollAnimationDuration: SCROLL_ANIMATION_DURATION,
|
|
134
|
+
autoPlayInterval: AUTO_PLAY_INTERVAL,
|
|
135
|
+
windowSize: CAROUSEL_WINDOW_SIZE,
|
|
136
|
+
enabled: true
|
|
137
|
+
}), [isLoading, contentData.length]);
|
|
138
|
+
const inactiveIndicatorStyle = useMemo(() => [styles.inactiveIndicator, {
|
|
139
|
+
backgroundColor: appliedTheme.colors.onSurface
|
|
140
|
+
}], [appliedTheme.colors.onSurface]);
|
|
141
|
+
|
|
142
|
+
// ========================================================================
|
|
143
|
+
// Event Handlers
|
|
144
|
+
// ========================================================================
|
|
72
145
|
const handleSnapToItem = useCallback(i => {
|
|
73
146
|
if (snapTimeoutRef.current) {
|
|
74
147
|
clearTimeout(snapTimeoutRef.current);
|
|
@@ -77,48 +150,27 @@ const SliderTwo = ({
|
|
|
77
150
|
InteractionManager.runAfterInteractions(() => {
|
|
78
151
|
setActiveIndex(i);
|
|
79
152
|
});
|
|
80
|
-
},
|
|
153
|
+
}, SNAP_DEBOUNCE_DELAY);
|
|
81
154
|
}, []);
|
|
155
|
+
const configurePanGesture = useCallback(gesture => gesture.activeOffsetX(PAN_GESTURE_ACTIVE_OFFSET_X).failOffsetY(PAN_GESTURE_FAIL_OFFSET_Y), []);
|
|
82
156
|
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}, (_, i) => i), [contentData.length]);
|
|
90
|
-
|
|
91
|
-
// Memoize carousel data
|
|
92
|
-
const carouselData = useMemo(() => isLoading ? skeletonItems : contentData, [isLoading, skeletonItems, contentData]);
|
|
93
|
-
|
|
94
|
-
// Memoize gradient configuration
|
|
95
|
-
const gradientConfig = useMemo(() => ({
|
|
96
|
-
colors: ['transparent', 'rgba(0,0,0,0.7)'],
|
|
97
|
-
start: {
|
|
98
|
-
x: 0.5,
|
|
99
|
-
y: 0
|
|
100
|
-
},
|
|
101
|
-
end: {
|
|
102
|
-
x: 0.5,
|
|
103
|
-
y: 1
|
|
104
|
-
}
|
|
105
|
-
}), []);
|
|
106
|
-
|
|
107
|
-
// Memoize pan gesture handler for smooth scrolling
|
|
108
|
-
const configurePanGesture = useCallback(gesture => {
|
|
109
|
-
gesture.activeOffsetX([-10, 10]).failOffsetY([-5, 5]);
|
|
110
|
-
}, []);
|
|
111
|
-
const renderSkeletonItem = useCallback(() => /*#__PURE__*/_jsx(View, {
|
|
157
|
+
// ========================================================================
|
|
158
|
+
// Render Functions
|
|
159
|
+
// ========================================================================
|
|
160
|
+
const renderSkeletonItem = useCallback(({
|
|
161
|
+
item: _item
|
|
162
|
+
}) => /*#__PURE__*/_jsx(View, {
|
|
112
163
|
style: styles.itemWrapper,
|
|
113
164
|
children: /*#__PURE__*/_jsx(SkeletonPlaceholder, {
|
|
114
165
|
backgroundColor: appliedTheme.colors.skeletonBaseColor,
|
|
115
166
|
highlightColor: appliedTheme.colors.skeletonHighlightColor,
|
|
167
|
+
speed: SKELETON_SPEED,
|
|
116
168
|
children: /*#__PURE__*/_jsx(SkeletonPlaceholder.Item, {
|
|
117
169
|
width: FULL_WIDTH,
|
|
118
170
|
height: FULL_HEIGHT
|
|
119
171
|
})
|
|
120
172
|
})
|
|
121
|
-
}), [appliedTheme.colors]);
|
|
173
|
+
}), [appliedTheme.colors.skeletonBaseColor, appliedTheme.colors.skeletonHighlightColor]);
|
|
122
174
|
const renderCarouselItem = useCallback(({
|
|
123
175
|
item
|
|
124
176
|
}) => /*#__PURE__*/_jsx(CarouselItem, {
|
|
@@ -127,55 +179,42 @@ const SliderTwo = ({
|
|
|
127
179
|
appliedTheme: appliedTheme,
|
|
128
180
|
gradientConfig: gradientConfig
|
|
129
181
|
}), [appliedTheme, onPressItem, gradientConfig]);
|
|
130
|
-
|
|
131
|
-
// Memoize renderItem to prevent switching functions
|
|
132
182
|
const renderItem = useMemo(() => isLoading ? renderSkeletonItem : renderCarouselItem, [isLoading, renderSkeletonItem, renderCarouselItem]);
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
width: scale(18),
|
|
160
|
-
height: scale(8),
|
|
161
|
-
borderRadius: scale(50)
|
|
183
|
+
const renderIndicator = useCallback((_, i) => {
|
|
184
|
+
const isActive = i === activeIndex;
|
|
185
|
+
return /*#__PURE__*/_jsx(View, {
|
|
186
|
+
style: styles.indicatorWrapper,
|
|
187
|
+
children: isLoading ? /*#__PURE__*/_jsx(SkeletonPlaceholder, {
|
|
188
|
+
backgroundColor: appliedTheme.colors.skeletonBaseColor,
|
|
189
|
+
highlightColor: appliedTheme.colors.skeletonHighlightColor,
|
|
190
|
+
speed: SKELETON_SPEED,
|
|
191
|
+
children: /*#__PURE__*/_jsx(SkeletonPlaceholder.Item, {
|
|
192
|
+
width: INDICATOR_WIDTH_ACTIVE,
|
|
193
|
+
height: INDICATOR_HEIGHT,
|
|
194
|
+
borderRadius: INDICATOR_BORDER_RADIUS
|
|
195
|
+
})
|
|
196
|
+
}) : isActive ? /*#__PURE__*/_jsx(LinearGradient, {
|
|
197
|
+
start: {
|
|
198
|
+
x: 0,
|
|
199
|
+
y: 0
|
|
200
|
+
},
|
|
201
|
+
end: {
|
|
202
|
+
x: 1,
|
|
203
|
+
y: 0
|
|
204
|
+
},
|
|
205
|
+
colors: gradientColors,
|
|
206
|
+
style: styles.activeIndicator
|
|
207
|
+
}) : /*#__PURE__*/_jsx(View, {
|
|
208
|
+
style: inactiveIndicatorStyle
|
|
162
209
|
})
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
},
|
|
172
|
-
colors: gradientColors,
|
|
173
|
-
style: styles.activeIndicator
|
|
174
|
-
}) : /*#__PURE__*/_jsx(View, {
|
|
175
|
-
style: inactiveIndicatorStyle
|
|
176
|
-
})
|
|
177
|
-
}, i), [isLoading, appliedTheme.colors.skeletonBaseColor, appliedTheme.colors.skeletonHighlightColor, inactiveIndicatorStyle, activeIndex, gradientColors]);
|
|
178
|
-
if (!data || !isLoading && contentData.length === 0) {
|
|
210
|
+
}, i);
|
|
211
|
+
}, [isLoading, appliedTheme.colors.skeletonBaseColor, appliedTheme.colors.skeletonHighlightColor, inactiveIndicatorStyle, activeIndex, gradientColors]);
|
|
212
|
+
|
|
213
|
+
// ========================================================================
|
|
214
|
+
// Early Returns
|
|
215
|
+
// ========================================================================
|
|
216
|
+
// Don't return early if loading - we need to show skeleton
|
|
217
|
+
if (!isLoading && (!data || contentData.length === 0)) {
|
|
179
218
|
return /*#__PURE__*/_jsx(View, {
|
|
180
219
|
style: [styles.container, styles.emptyState],
|
|
181
220
|
children: /*#__PURE__*/_jsx(Text, {
|
|
@@ -184,6 +223,10 @@ const SliderTwo = ({
|
|
|
184
223
|
})
|
|
185
224
|
});
|
|
186
225
|
}
|
|
226
|
+
|
|
227
|
+
// ========================================================================
|
|
228
|
+
// Render Main Content
|
|
229
|
+
// ========================================================================
|
|
187
230
|
return /*#__PURE__*/_jsxs(View, {
|
|
188
231
|
style: styles.container,
|
|
189
232
|
accessibilityLabel: accessibilityLabel,
|
|
@@ -194,7 +237,7 @@ const SliderTwo = ({
|
|
|
194
237
|
renderItem: renderItem,
|
|
195
238
|
onSnapToItem: handleSnapToItem,
|
|
196
239
|
onConfigurePanGesture: configurePanGesture
|
|
197
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
240
|
+
}), indicatorArray.length > 0 && /*#__PURE__*/_jsx(View, {
|
|
198
241
|
style: styles.indicatorContainer,
|
|
199
242
|
children: /*#__PURE__*/_jsx(View, {
|
|
200
243
|
style: styles.indicator,
|
|
@@ -203,6 +246,10 @@ const SliderTwo = ({
|
|
|
203
246
|
})]
|
|
204
247
|
});
|
|
205
248
|
};
|
|
249
|
+
|
|
250
|
+
// ============================================================================
|
|
251
|
+
// Styles
|
|
252
|
+
// ============================================================================
|
|
206
253
|
const styles = StyleSheet.create({
|
|
207
254
|
container: {
|
|
208
255
|
flex: 1,
|
|
@@ -239,14 +286,14 @@ const styles = StyleSheet.create({
|
|
|
239
286
|
justifyContent: 'center'
|
|
240
287
|
},
|
|
241
288
|
activeIndicator: {
|
|
242
|
-
width:
|
|
243
|
-
height:
|
|
244
|
-
borderRadius:
|
|
289
|
+
width: INDICATOR_WIDTH_ACTIVE,
|
|
290
|
+
height: INDICATOR_HEIGHT,
|
|
291
|
+
borderRadius: INDICATOR_BORDER_RADIUS
|
|
245
292
|
},
|
|
246
293
|
inactiveIndicator: {
|
|
247
|
-
width:
|
|
248
|
-
height:
|
|
249
|
-
borderRadius:
|
|
294
|
+
width: INDICATOR_WIDTH_INACTIVE,
|
|
295
|
+
height: INDICATOR_HEIGHT,
|
|
296
|
+
borderRadius: INDICATOR_BORDER_RADIUS
|
|
250
297
|
},
|
|
251
298
|
emptyState: {
|
|
252
299
|
padding: scale(12),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useCallback","useMemo","useState","useRef","InteractionManager","useSkeletonItems","View","TouchableOpacity","StyleSheet","Carousel","scale","verticalScale","FastImage","LinearGradient","SkeletonPlaceholder","Text","useInternalTheme","Display","ThumbnailCard","RFValue","RentOrBuyIcon","jsx","_jsx","jsxs","_jsxs","FULL_WIDTH","fullWidth","FULL_HEIGHT","CarouselItem","item","onPressItem","appliedTheme","gradientConfig","activeOpacity","onPress","style","styles","itemWrapper","accessibilityRole","accessibilityLabel","name","children","theme","content_offering_type","thumbnailUri","thumbnail","isLoading","wrapperStyle","image","resizeMode","cover","colors","start","end","gradientBottomOverlay","SliderTwo","data","skeletonCount","accessibilityHint","contentData","activeIndex","setActiveIndex","gradientColors","primary","snapTimeoutRef","handleSnapToItem","i","current","clearTimeout","setTimeout","runAfterInteractions","skeletonItems","indicatorArray","Array","from","length","_","carouselData","x","y","configurePanGesture","gesture","activeOffsetX","failOffsetY","renderSkeletonItem","backgroundColor","skeletonBaseColor","highlightColor","skeletonHighlightColor","Item","width","height","renderCarouselItem","renderItem","carouselProps","autoPlay","loop","scrollAnimationDuration","autoPlayInterval","windowSize","enabled","inactiveIndicatorStyle","inactiveIndicator","onSurface","renderIndicator","indicatorWrapper","speed","borderRadius","activeIndicator","container","emptyState","emptyText","onSnapToItem","onConfigurePanGesture","indicatorContainer","indicator","map","create","flex","marginVertical","overflow","position","bottom","left","right","zIndex","alignItems","justifyContent","marginTop","flexDirection","gap","padding","fontSize","fontWeight","color","textAlign"],"sourceRoot":"../../../../../../../src","sources":["components/Content/Card/Sliders/Styles/Two.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","memo","useCallback","useMemo","useState","useRef","InteractionManager","useSkeletonItems","View","TouchableOpacity","StyleSheet","Carousel","scale","verticalScale","FastImage","LinearGradient","SkeletonPlaceholder","Text","useInternalTheme","Display","ThumbnailCard","RFValue","RentOrBuyIcon","jsx","_jsx","jsxs","_jsxs","FULL_WIDTH","fullWidth","ASPECT_RATIO","FULL_HEIGHT","DEFAULT_SKELETON_COUNT","SCROLL_ANIMATION_DURATION","AUTO_PLAY_INTERVAL","CAROUSEL_WINDOW_SIZE","SNAP_DEBOUNCE_DELAY","SKELETON_SPEED","PAN_GESTURE_ACTIVE_OFFSET_X","PAN_GESTURE_FAIL_OFFSET_Y","GRADIENT_OVERLAY_COLORS","GRADIENT_START","x","y","GRADIENT_END","INDICATOR_WIDTH_ACTIVE","INDICATOR_WIDTH_INACTIVE","INDICATOR_HEIGHT","INDICATOR_BORDER_RADIUS","TOUCH_OPACITY","CarouselItem","item","onPressItem","appliedTheme","gradientConfig","activeOpacity","onPress","style","styles","itemWrapper","accessibilityRole","accessibilityLabel","name","children","theme","content_offering_type","thumbnailUri","thumbnail","isLoading","wrapperStyle","image","resizeMode","cover","colors","start","end","gradientBottomOverlay","displayName","SliderTwo","data","skeletonCount","accessibilityHint","activeIndex","setActiveIndex","snapTimeoutRef","contentData","skeletonItems","indicatorArray","Array","from","length","_","i","carouselData","gradientColors","primary","carouselProps","width","height","autoPlay","loop","scrollAnimationDuration","autoPlayInterval","windowSize","enabled","inactiveIndicatorStyle","inactiveIndicator","backgroundColor","onSurface","handleSnapToItem","current","clearTimeout","setTimeout","runAfterInteractions","configurePanGesture","gesture","activeOffsetX","failOffsetY","renderSkeletonItem","_item","skeletonBaseColor","highlightColor","skeletonHighlightColor","speed","Item","renderCarouselItem","renderItem","renderIndicator","isActive","indicatorWrapper","borderRadius","activeIndicator","container","emptyState","emptyText","onSnapToItem","onConfigurePanGesture","indicatorContainer","indicator","map","create","flex","marginVertical","overflow","position","bottom","left","right","zIndex","alignItems","justifyContent","marginTop","flexDirection","gap","padding","fontSize","fontWeight","color","textAlign"],"sourceRoot":"../../../../../../../src","sources":["components/Content/Card/Sliders/Styles/Two.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,21 +10,43 @@ import { View, FlatList, TouchableOpacity, StyleSheet, ScrollView } from 'react-
|
|
|
10
10
|
import SkeletonPlaceholder from 'react-native-skeleton-placeholder';
|
|
11
11
|
import { moderateScale, verticalScale } from 'react-native-size-matters';
|
|
12
12
|
import FastImage from 'react-native-fast-image';
|
|
13
|
+
import { RFValue } from 'react-native-responsive-fontsize';
|
|
13
14
|
import CardPoster from "../components/CardPoster.js";
|
|
14
15
|
import NavigateToMore from "../components/NavigateToMore.js";
|
|
15
|
-
import {
|
|
16
|
+
import { AdsPoster } from "../components/index.js";
|
|
16
17
|
import { useInternalTheme } from "../../../../theme/hook/useInternalTheme.js";
|
|
17
|
-
import {
|
|
18
|
+
import { useCards } from "../../../../hooks/index.js";
|
|
19
|
+
|
|
20
|
+
// Constants
|
|
18
21
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
22
|
const DEFAULT_ITEM_WIDTH = moderateScale(140);
|
|
20
23
|
const DEFAULT_BORDER_RADIUS = moderateScale(5);
|
|
21
24
|
const DEFAULT_SKELETON_COUNT = 3;
|
|
25
|
+
const ASPECT_RATIO = 0.67;
|
|
26
|
+
const END_REACHED_THRESHOLD = 0.5;
|
|
27
|
+
const ITEM_ACTIVE_OPACITY = 0.8;
|
|
28
|
+
const INITIAL_NUM_TO_RENDER = 5;
|
|
29
|
+
const SKELETON_TITLE_WIDTH = moderateScale(100);
|
|
30
|
+
const SKELETON_TITLE_HEIGHT = moderateScale(20);
|
|
31
|
+
const SKELETON_TITLE_BORDER_RADIUS = moderateScale(4);
|
|
32
|
+
const SKELETON_TITLE_MARGIN_HORIZONTAL = moderateScale(15);
|
|
33
|
+
const SKELETON_TITLE_MARGIN_BOTTOM = verticalScale(6);
|
|
34
|
+
const SKELETON_ITEM_MARGIN_LEFT = moderateScale(12);
|
|
35
|
+
const SKELETON_ITEM_MARGIN_RIGHT = moderateScale(12);
|
|
36
|
+
const ITEM_MARGIN_LEFT = moderateScale(10);
|
|
37
|
+
const ITEM_MARGIN_BOTTOM = verticalScale(2);
|
|
38
|
+
const LIST_CONTENT_PADDING_RIGHT = moderateScale(15);
|
|
39
|
+
const SKELETON_LIST_PADDING_RIGHT = moderateScale(15);
|
|
40
|
+
|
|
41
|
+
// Types
|
|
42
|
+
|
|
43
|
+
// Main Component
|
|
22
44
|
const MovieCardFive = ({
|
|
23
45
|
theme,
|
|
24
46
|
title,
|
|
25
47
|
section_id,
|
|
26
48
|
type,
|
|
27
|
-
data:
|
|
49
|
+
data: externalData,
|
|
28
50
|
moreFetchData,
|
|
29
51
|
onPressItem,
|
|
30
52
|
onPressMore,
|
|
@@ -32,25 +54,47 @@ const MovieCardFive = ({
|
|
|
32
54
|
itemWidth = DEFAULT_ITEM_WIDTH,
|
|
33
55
|
borderRadius = DEFAULT_BORDER_RADIUS,
|
|
34
56
|
skeletonCount = DEFAULT_SKELETON_COUNT,
|
|
57
|
+
paginationSkeletonCount,
|
|
35
58
|
containerStyle,
|
|
36
59
|
titleStyle,
|
|
37
60
|
itemStyle,
|
|
38
61
|
isLoading = false,
|
|
39
62
|
accessibilityLabel,
|
|
40
|
-
accessibilityHint
|
|
63
|
+
accessibilityHint,
|
|
64
|
+
onDisplayAds,
|
|
65
|
+
screenDimensions,
|
|
66
|
+
viewportOffsets
|
|
41
67
|
}) => {
|
|
68
|
+
// Refs
|
|
69
|
+
const flatListRef = useRef(null);
|
|
70
|
+
const onEndReachedCalledDuringMomentum = useRef(false);
|
|
71
|
+
|
|
72
|
+
// Theme
|
|
42
73
|
const {
|
|
43
74
|
theme: appliedTheme
|
|
44
75
|
} = useInternalTheme(theme);
|
|
45
|
-
|
|
46
|
-
|
|
76
|
+
|
|
77
|
+
// Styles
|
|
47
78
|
const styles = useMemo(() => getStyles(appliedTheme, itemWidth, borderRadius), [appliedTheme, itemWidth, borderRadius]);
|
|
79
|
+
|
|
80
|
+
// Data Management
|
|
48
81
|
const {
|
|
49
|
-
|
|
82
|
+
listData,
|
|
50
83
|
pagination,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
84
|
+
loadMore,
|
|
85
|
+
isEmpty,
|
|
86
|
+
isPaging: isPaginating
|
|
87
|
+
} = useCards({
|
|
88
|
+
sectionId: section_id,
|
|
89
|
+
data: externalData,
|
|
90
|
+
fetchMore: moreFetchData,
|
|
91
|
+
loading: isLoading,
|
|
92
|
+
initialSkeleton: skeletonCount,
|
|
93
|
+
pagingSkeleton: paginationSkeletonCount,
|
|
94
|
+
adsRender: true
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// Event Handlers
|
|
54
98
|
const handleItemPress = useCallback(item => onPressItem?.(item), [onPressItem]);
|
|
55
99
|
const handlePressMore = useCallback(() => {
|
|
56
100
|
onPressMore?.({
|
|
@@ -62,48 +106,89 @@ const MovieCardFive = ({
|
|
|
62
106
|
const handleEndReached = useCallback(() => {
|
|
63
107
|
if (!onEndReachedCalledDuringMomentum.current && pagination?.hasNextPage && pagination?.nextPage) {
|
|
64
108
|
onEndReachedCalledDuringMomentum.current = true;
|
|
65
|
-
|
|
109
|
+
loadMore(pagination.nextPage);
|
|
66
110
|
}
|
|
67
|
-
}, [
|
|
111
|
+
}, [loadMore, pagination]);
|
|
112
|
+
const handleScrollBeginDrag = useCallback(() => {
|
|
113
|
+
onEndReachedCalledDuringMomentum.current = false;
|
|
114
|
+
}, []);
|
|
115
|
+
const handleMomentumScrollBegin = useCallback(() => {
|
|
116
|
+
onEndReachedCalledDuringMomentum.current = false;
|
|
117
|
+
}, []);
|
|
118
|
+
|
|
119
|
+
// Render Functions
|
|
68
120
|
const renderItem = useCallback(({
|
|
69
121
|
item,
|
|
70
122
|
index
|
|
71
123
|
}) => {
|
|
124
|
+
// Handle ads
|
|
125
|
+
if ('type' in item && item.type === 'ads') {
|
|
126
|
+
const adItem = item;
|
|
127
|
+
return /*#__PURE__*/_jsx(View, {
|
|
128
|
+
style: [styles.item, itemStyle],
|
|
129
|
+
children: /*#__PURE__*/_jsx(AdsPoster, {
|
|
130
|
+
ad: adItem,
|
|
131
|
+
theme: appliedTheme,
|
|
132
|
+
isLoading: isLoading,
|
|
133
|
+
containerStyle: {
|
|
134
|
+
width: itemWidth,
|
|
135
|
+
aspectRatio: ASPECT_RATIO
|
|
136
|
+
},
|
|
137
|
+
imageStyle: styles.image,
|
|
138
|
+
borderRadius: borderRadius,
|
|
139
|
+
onDisplayAds: onDisplayAds,
|
|
140
|
+
screenDimensions: screenDimensions,
|
|
141
|
+
viewportOffsets: viewportOffsets
|
|
142
|
+
})
|
|
143
|
+
}, `ad-${adItem.tracking?.impression || index}`);
|
|
144
|
+
}
|
|
145
|
+
// Handle content items
|
|
146
|
+
const contentItem = item;
|
|
147
|
+
const isSkeleton = contentItem._id?.startsWith?.('pagination-skeleton') ?? false;
|
|
72
148
|
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
73
149
|
style: [styles.item, itemStyle],
|
|
74
|
-
onPress: () =>
|
|
75
|
-
|
|
150
|
+
onPress: () => {
|
|
151
|
+
if (!isSkeleton && !isLoading) {
|
|
152
|
+
handleItemPress(contentItem);
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
activeOpacity: ITEM_ACTIVE_OPACITY,
|
|
76
156
|
children: renderItemImage ? renderItemImage({
|
|
77
157
|
item,
|
|
78
158
|
index
|
|
79
159
|
}) : /*#__PURE__*/_jsx(CardPoster, {
|
|
80
|
-
content_offering_type:
|
|
81
|
-
posterUri:
|
|
160
|
+
content_offering_type: contentItem.content_offering_type,
|
|
161
|
+
posterUri: contentItem.poster,
|
|
82
162
|
theme: appliedTheme,
|
|
83
163
|
borderRadius: borderRadius,
|
|
84
164
|
posterWrapperStyle: styles.image,
|
|
85
165
|
resizeMode: FastImage.resizeMode.cover,
|
|
86
|
-
isLoading: isLoading
|
|
166
|
+
isLoading: isSkeleton || isLoading
|
|
87
167
|
})
|
|
88
|
-
});
|
|
89
|
-
}, [styles.item, styles.image, itemStyle, renderItemImage, appliedTheme, borderRadius, isLoading, handleItemPress]);
|
|
90
|
-
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
const renderSkeletonItem = ({
|
|
168
|
+
}, contentItem._id);
|
|
169
|
+
}, [styles.item, styles.image, itemStyle, renderItemImage, appliedTheme, borderRadius, isLoading, handleItemPress, itemWidth, onDisplayAds, screenDimensions, viewportOffsets]);
|
|
170
|
+
const renderSkeletonItem = useCallback(({
|
|
94
171
|
index
|
|
95
172
|
}) => /*#__PURE__*/_jsx(SkeletonPlaceholder, {
|
|
96
173
|
highlightColor: appliedTheme.colors.skeletonHighlightColor,
|
|
97
174
|
backgroundColor: appliedTheme.colors.skeletonBaseColor,
|
|
98
175
|
children: /*#__PURE__*/_jsx(SkeletonPlaceholder.Item, {
|
|
99
176
|
width: itemWidth,
|
|
100
|
-
aspectRatio:
|
|
177
|
+
aspectRatio: ASPECT_RATIO,
|
|
101
178
|
borderRadius: borderRadius,
|
|
102
|
-
marginLeft: index === 0 ?
|
|
103
|
-
marginRight:
|
|
179
|
+
marginLeft: index === 0 ? SKELETON_ITEM_MARGIN_LEFT : 0,
|
|
180
|
+
marginRight: SKELETON_ITEM_MARGIN_RIGHT
|
|
104
181
|
})
|
|
105
|
-
}, `skeleton-${index}`);
|
|
106
|
-
|
|
182
|
+
}, `skeleton-${index}`), [appliedTheme, itemWidth, borderRadius]);
|
|
183
|
+
const keyExtractor = useCallback((item, index) => {
|
|
184
|
+
return '_id' in item ? item._id : `ad-${index}`;
|
|
185
|
+
}, []);
|
|
186
|
+
|
|
187
|
+
// Early Returns
|
|
188
|
+
if (!externalData) return null;
|
|
189
|
+
if (!isLoading && listData.length === 0 && !isEmpty) return null;
|
|
190
|
+
|
|
191
|
+
// Main Render
|
|
107
192
|
return /*#__PURE__*/_jsx(View, {
|
|
108
193
|
style: [styles.root, containerStyle],
|
|
109
194
|
accessibilityLabel: accessibilityLabel || `Movie section: ${title}`,
|
|
@@ -113,11 +198,11 @@ const MovieCardFive = ({
|
|
|
113
198
|
highlightColor: appliedTheme.colors.skeletonHighlightColor,
|
|
114
199
|
backgroundColor: appliedTheme.colors.skeletonBaseColor,
|
|
115
200
|
children: /*#__PURE__*/_jsx(SkeletonPlaceholder.Item, {
|
|
116
|
-
width:
|
|
117
|
-
height:
|
|
118
|
-
borderRadius:
|
|
119
|
-
marginHorizontal:
|
|
120
|
-
marginBottom:
|
|
201
|
+
width: SKELETON_TITLE_WIDTH,
|
|
202
|
+
height: SKELETON_TITLE_HEIGHT,
|
|
203
|
+
borderRadius: SKELETON_TITLE_BORDER_RADIUS,
|
|
204
|
+
marginHorizontal: SKELETON_TITLE_MARGIN_HORIZONTAL,
|
|
205
|
+
marginBottom: SKELETON_TITLE_MARGIN_BOTTOM
|
|
121
206
|
})
|
|
122
207
|
}), /*#__PURE__*/_jsx(ScrollView, {
|
|
123
208
|
horizontal: true,
|
|
@@ -143,21 +228,17 @@ const MovieCardFive = ({
|
|
|
143
228
|
}
|
|
144
229
|
}), /*#__PURE__*/_jsx(FlatList, {
|
|
145
230
|
ref: flatListRef,
|
|
146
|
-
data:
|
|
231
|
+
data: listData,
|
|
147
232
|
horizontal: true,
|
|
148
|
-
keyExtractor:
|
|
233
|
+
keyExtractor: keyExtractor,
|
|
149
234
|
renderItem: renderItem,
|
|
150
235
|
showsHorizontalScrollIndicator: false,
|
|
151
236
|
contentContainerStyle: styles.listContent,
|
|
152
|
-
initialNumToRender:
|
|
237
|
+
initialNumToRender: INITIAL_NUM_TO_RENDER,
|
|
153
238
|
onEndReached: handleEndReached,
|
|
154
|
-
onEndReachedThreshold:
|
|
155
|
-
onScrollBeginDrag:
|
|
156
|
-
|
|
157
|
-
},
|
|
158
|
-
onMomentumScrollBegin: () => {
|
|
159
|
-
onEndReachedCalledDuringMomentum.current = false;
|
|
160
|
-
},
|
|
239
|
+
onEndReachedThreshold: END_REACHED_THRESHOLD,
|
|
240
|
+
onScrollBeginDrag: handleScrollBeginDrag,
|
|
241
|
+
onMomentumScrollBegin: handleMomentumScrollBegin,
|
|
161
242
|
ListFooterComponent: isPaginating ? renderSkeletonItem({
|
|
162
243
|
index: 0
|
|
163
244
|
}) : null
|
|
@@ -165,17 +246,19 @@ const MovieCardFive = ({
|
|
|
165
246
|
})
|
|
166
247
|
});
|
|
167
248
|
};
|
|
249
|
+
|
|
250
|
+
// Styles
|
|
168
251
|
const getStyles = (theme, width, radius) => StyleSheet.create({
|
|
169
252
|
root: {
|
|
170
253
|
marginVertical: verticalScale(6)
|
|
171
254
|
},
|
|
172
255
|
item: {
|
|
173
|
-
marginLeft:
|
|
174
|
-
marginBottom:
|
|
256
|
+
marginLeft: ITEM_MARGIN_LEFT,
|
|
257
|
+
marginBottom: ITEM_MARGIN_BOTTOM
|
|
175
258
|
},
|
|
176
259
|
image: {
|
|
177
260
|
width,
|
|
178
|
-
aspectRatio:
|
|
261
|
+
aspectRatio: ASPECT_RATIO,
|
|
179
262
|
borderRadius: radius,
|
|
180
263
|
backgroundColor: theme.colors.surfaceVariant
|
|
181
264
|
},
|
|
@@ -188,12 +271,12 @@ const getStyles = (theme, width, radius) => StyleSheet.create({
|
|
|
188
271
|
fontWeight: '600'
|
|
189
272
|
},
|
|
190
273
|
listContent: {
|
|
191
|
-
paddingRight:
|
|
274
|
+
paddingRight: LIST_CONTENT_PADDING_RIGHT
|
|
192
275
|
},
|
|
193
276
|
skeletonList: {
|
|
194
277
|
flexDirection: 'row',
|
|
195
278
|
alignItems: 'flex-start',
|
|
196
|
-
paddingRight:
|
|
279
|
+
paddingRight: SKELETON_LIST_PADDING_RIGHT
|
|
197
280
|
}
|
|
198
281
|
});
|
|
199
282
|
export default /*#__PURE__*/memo(MovieCardFive);
|