related-ui-components 2.7.6 → 2.7.7
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/app.js +16 -31
- package/lib/module/app.js.map +1 -1
- package/lib/module/components/CarouselCardStack/CarouselCardStack.js +99 -81
- package/lib/module/components/CarouselCardStack/CarouselCardStack.js.map +1 -1
- package/lib/module/components/TravelBooking/HotelSummary.js +168 -37
- package/lib/module/components/TravelBooking/HotelSummary.js.map +1 -1
- package/lib/typescript/src/app.d.ts.map +1 -1
- package/lib/typescript/src/components/CarouselCardStack/CarouselCardStack.d.ts.map +1 -1
- package/lib/typescript/src/components/TravelBooking/HotelSummary.d.ts +14 -0
- package/lib/typescript/src/components/TravelBooking/HotelSummary.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/app.tsx +17 -38
- package/src/components/CarouselCardStack/CarouselCardStack.tsx +130 -120
- package/src/components/TravelBooking/HotelSummary.tsx +243 -76
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useTheme","React","useCallback","useEffect","useMemo","useState","StyleSheet","Text","TouchableOpacity","View","I18nManager","NumericStepper","BottomSheetScrollView","jsx","_jsx","jsxs","_jsxs","DEFAULT_GUEST_CONFIG","key","name","description","defaultValue","minValue","maxValue","createNewRoom","guestConfig","newRoom","id","Date","now","toString","Math","random","substring","forEach","guest","HotelSummary","guestConfigData","guestConfigProp","selection","onSelectionChange","maxRooms","minRooms","roomTitlePrefix","removeRoomText","addRoomText","containerStyle","roomContainerStyle","roomHeaderStyle","roomTitleStyle","removeRoomButtonStyle","removeRoomTextStyle","guestRowStyle","guestLabelContainerStyle","guestNameStyle","guestDescriptionStyle","addRoomButtonStyle","addRoomButtonTextStyle","stepperContainerStyle","stepperButtonStyle","stepperButtonTextStyle","stepperValueTextStyle","roomListContainerStyle","theme","styles","themedStyles","isRTL","rooms","setRooms","length","Array","from","triggerSelectionChange","updatedRooms","addRoom","prevRooms","removeRoom","roomIdToRemove","filter","room","handleGuestChange","roomId","guestKey","action","guestInfo","find","g","valueChanged","map","currentVal","newValue","min","max","style","container","children","maxHeight","showsVerticalScrollIndicator","index","roomContainer","roomHeader","roomTitle","onPress","guestRow","guestLabelContainer","guestName","guestDescription","value","onIncrement","onDecrement","buttonStyle","buttonTextStyle","valueTextStyle","addRoomButton","addRoomButtonText","create","backgroundColor","surface","padding","width","marginBottom","paddingBottom","borderBottomWidth","hairlineWidth","borderBottomColor","border","flexDirection","justifyContent","alignItems","fontSize","fontWeight","color","onSurface","error","paddingVertical","flexShrink","opacity","marginTop","alignSelf","primary"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/TravelBooking/HotelSummary.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useTheme","React","useCallback","useEffect","useMemo","useState","StyleSheet","Text","TouchableOpacity","View","I18nManager","NumericStepper","BottomSheetScrollView","RNPickerSelect","Ionicons","jsx","_jsx","jsxs","_jsxs","DEFAULT_GUEST_CONFIG","key","name","description","defaultValue","minValue","maxValue","ageRange","min","max","defaultAge","createNewRoom","guestConfig","newRoom","id","Date","now","toString","Math","random","substring","forEach","guest","Array","from","length","_","i","age","HotelSummary","guestConfigData","guestConfigProp","selection","onSelectionChange","maxRooms","minRooms","roomTitlePrefix","removeRoomText","addRoomText","formatChildAgeLabel","guestType","index","containerStyle","roomContainerStyle","roomHeaderStyle","roomTitleStyle","removeRoomButtonStyle","removeRoomTextStyle","guestRowStyle","guestLabelContainerStyle","guestNameStyle","guestDescriptionStyle","addRoomButtonStyle","addRoomButtonTextStyle","stepperContainerStyle","stepperButtonStyle","stepperButtonTextStyle","stepperValueTextStyle","roomListContainerStyle","agePickerRowStyle","agePickerLabelStyle","overrideTheme","theme","defaultTheme","styles","themedStyles","isRTL","rooms","setRooms","triggerSelectionChange","updatedRooms","addRoom","prevRooms","removeRoom","roomIdToRemove","filter","room","handleGuestCountChange","roomId","guestKey","action","guestInfo","find","g","valueChanged","map","currentVal","newRoomState","currentArray","newGuest","slice","newValue","handleIndividualAgeChange","guestId","newAge","undefined","guestArray","getAgePickerItems","config","label","value","style","container","children","maxHeight","showsVerticalScrollIndicator","roomContainer","roomHeader","roomTitle","onPress","guestRow","guestLabelContainer","guestName","guestDescription","onIncrement","onDecrement","buttonStyle","buttonTextStyle","valueTextStyle","individualGuest","guestIndex","agePickerRow","agePickerLabel","pickerContainer","onValueChange","items","placeholder","inputIOS","pickerInput","inputAndroid","iconContainer","pickerIconContainer","textInputProps","pointerEvents","useNativeAndroidPickerStyle","Icon","size","color","helper","addRoomButton","addRoomButtonText","create","backgroundColor","surface","padding","width","marginBottom","paddingBottom","borderBottomWidth","hairlineWidth","borderBottomColor","border","flexDirection","justifyContent","alignItems","fontSize","fontWeight","onSurface","error","paddingVertical","flexShrink","opacity","marginTop","alignSelf","primary","paddingHorizontal","background","borderColor","divider","onBackground","height","borderWidth","borderRadius","top","right"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/TravelBooking/HotelSummary.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AA+BnD,QAAA,MAAM,GAAG,yBA6GR,CAAC;AAWF,eAAe,GAAG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselCardStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/CarouselCardStack/CarouselCardStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CarouselCardStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/CarouselCardStack/CarouselCardStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAgC5D,UAAU,oBAAoB;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,UAAU,sBAAsB;IAC9B,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4GD,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAoIvD,CAAC;AAkDF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import { ThemeType } from "../../theme";
|
|
1
2
|
import React from "react";
|
|
2
3
|
import { StyleProp, ViewStyle, TextStyle } from "react-native";
|
|
3
4
|
import { NumericStepperProps } from "../NumericStepper";
|
|
5
|
+
export interface IndividualGuest {
|
|
6
|
+
id: string;
|
|
7
|
+
age: number;
|
|
8
|
+
}
|
|
4
9
|
export interface RoomState {
|
|
5
10
|
id: string;
|
|
6
11
|
[key: string]: any;
|
|
@@ -12,6 +17,11 @@ export interface GuestConfigType {
|
|
|
12
17
|
defaultValue: number;
|
|
13
18
|
minValue: number;
|
|
14
19
|
maxValue?: number;
|
|
20
|
+
ageRange?: {
|
|
21
|
+
min: number;
|
|
22
|
+
max: number;
|
|
23
|
+
};
|
|
24
|
+
defaultAge?: number;
|
|
15
25
|
}
|
|
16
26
|
export interface HotelSummaryProps {
|
|
17
27
|
guestConfigData?: GuestConfigType[];
|
|
@@ -22,6 +32,7 @@ export interface HotelSummaryProps {
|
|
|
22
32
|
roomTitlePrefix?: string;
|
|
23
33
|
removeRoomText?: string;
|
|
24
34
|
addRoomText?: string;
|
|
35
|
+
formatChildAgeLabel?: (guestType: string, index: number) => string;
|
|
25
36
|
containerStyle?: StyleProp<ViewStyle>;
|
|
26
37
|
roomContainerStyle?: StyleProp<ViewStyle>;
|
|
27
38
|
roomListContainerStyle?: StyleProp<ViewStyle>;
|
|
@@ -33,12 +44,15 @@ export interface HotelSummaryProps {
|
|
|
33
44
|
guestLabelContainerStyle?: StyleProp<ViewStyle>;
|
|
34
45
|
guestNameStyle?: StyleProp<TextStyle>;
|
|
35
46
|
guestDescriptionStyle?: StyleProp<TextStyle>;
|
|
47
|
+
agePickerRowStyle?: StyleProp<ViewStyle>;
|
|
48
|
+
agePickerLabelStyle?: StyleProp<TextStyle>;
|
|
36
49
|
addRoomButtonStyle?: StyleProp<ViewStyle>;
|
|
37
50
|
addRoomButtonTextStyle?: StyleProp<TextStyle>;
|
|
38
51
|
stepperContainerStyle?: NumericStepperProps["style"];
|
|
39
52
|
stepperButtonStyle?: NumericStepperProps["buttonStyle"];
|
|
40
53
|
stepperButtonTextStyle?: NumericStepperProps["buttonTextStyle"];
|
|
41
54
|
stepperValueTextStyle?: NumericStepperProps["valueTextStyle"];
|
|
55
|
+
overrideTheme?: ThemeType;
|
|
42
56
|
}
|
|
43
57
|
declare const HotelSummary: React.FC<HotelSummaryProps>;
|
|
44
58
|
export default HotelSummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelSummary.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/HotelSummary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HotelSummary.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/HotelSummary.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/app.tsx
CHANGED
|
@@ -14,46 +14,20 @@ import {
|
|
|
14
14
|
RedemptionOption,
|
|
15
15
|
SelaDealCard,
|
|
16
16
|
} from "./components";
|
|
17
|
-
import { lightTheme, RelatedProvider, useTheme } from "./theme";
|
|
17
|
+
import { darkTheme, lightTheme, RelatedProvider, useTheme } from "./theme";
|
|
18
18
|
import CircularProgressBar from "./components/ProgressBar/CircularProgressBar";
|
|
19
19
|
import PhoneInput from "./components/Input/PhoneInput";
|
|
20
20
|
import { BottomSheetStackProvider } from "./contexts";
|
|
21
21
|
import { SafeAreaProvider } from "react-native-safe-area-context";
|
|
22
22
|
import { Ionicons } from "@expo/vector-icons";
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
const DUMMY_DATA =
|
|
26
|
-
{
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
},
|
|
32
|
-
// {
|
|
33
|
-
// id: "2",
|
|
34
|
-
// image:
|
|
35
|
-
// "https://images.pexels.com/photos/163273/sunrise-speedboat-ocean-water-163273.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
|
|
36
|
-
// title: "Sunset Cruise",
|
|
37
|
-
// },
|
|
38
|
-
{
|
|
39
|
-
id: "3",
|
|
40
|
-
image:
|
|
41
|
-
"https://images.pexels.com/photos/1430677/pexels-photo-1430677.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
|
|
42
|
-
title: "Ocean Horizon",
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
id: "4",
|
|
46
|
-
image:
|
|
47
|
-
"https://images.pexels.com/photos/2387793/pexels-photo-2387793.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
|
|
48
|
-
title: "Forest Trail",
|
|
49
|
-
},
|
|
50
|
-
// {
|
|
51
|
-
// id: "5",
|
|
52
|
-
// image:
|
|
53
|
-
// "https://images.pexels.com/photos/302804/pexels-photo-302804.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
|
|
54
|
-
// title: "City Lights",
|
|
55
|
-
// },
|
|
56
|
-
];
|
|
24
|
+
|
|
25
|
+
const DUMMY_DATA = Array.from({ length: 10 }, (_, i) => ({
|
|
26
|
+
id: `image-${i + 1}`,
|
|
27
|
+
// Using a random query parameter ensures you get a different image for each ID
|
|
28
|
+
image: `https://picsum.photos/seed/picsum/400/600`,
|
|
29
|
+
title: `Image #${i + 1}`,
|
|
30
|
+
}));
|
|
57
31
|
|
|
58
32
|
const App = () => {
|
|
59
33
|
const { theme } = useTheme();
|
|
@@ -70,8 +44,6 @@ const App = () => {
|
|
|
70
44
|
setProgress(newProgress);
|
|
71
45
|
};
|
|
72
46
|
|
|
73
|
-
|
|
74
|
-
|
|
75
47
|
return (
|
|
76
48
|
<>
|
|
77
49
|
<SafeAreaProvider>
|
|
@@ -80,6 +52,13 @@ const App = () => {
|
|
|
80
52
|
<BottomSheetStackProvider>
|
|
81
53
|
<StatusBar barStyle="light-content" />
|
|
82
54
|
<SafeAreaView style={styles.appContainer}>
|
|
55
|
+
<CarouselCardStack
|
|
56
|
+
data={DUMMY_DATA}
|
|
57
|
+
// backgroundColor="#333" // Set a background color for the component area
|
|
58
|
+
// onActiveIndexChange={(index) => {
|
|
59
|
+
// console.log("Active item index:", index);
|
|
60
|
+
// }}
|
|
61
|
+
/>
|
|
83
62
|
{/* <CircularProgressBar
|
|
84
63
|
progress={5}
|
|
85
64
|
lineCap="round"
|
|
@@ -119,9 +98,9 @@ const App = () => {
|
|
|
119
98
|
applyButtonTextStyle={{ color: theme.secondary }}
|
|
120
99
|
headerStyle={{ borderBottomWidth: 0 }}
|
|
121
100
|
></Filters> */}
|
|
122
|
-
<FlightSummary></FlightSummary>
|
|
101
|
+
{/* <FlightSummary></FlightSummary> */}
|
|
123
102
|
{/* <FlightForm></FlightForm> */}
|
|
124
|
-
{/* <HotelSummary></HotelSummary> */}
|
|
103
|
+
{/* <HotelSummary overrideTheme={darkTheme}></HotelSummary> */}
|
|
125
104
|
{/* <HotelForm></HotelForm> */}
|
|
126
105
|
{/* <DateRangePicker onDatesChange={()=>{}} labelContainerStyle={{backgroundColor:"red"}}></DateRangePicker> */}
|
|
127
106
|
{/* <CarRentalForm onSelectionChange={console.log}></CarRentalForm> */}
|
|
@@ -25,9 +25,11 @@ const SIDE_CARD_TRANSLATE_X_FACTOR = Math.min(0.32, MAX_X_FACTOR);
|
|
|
25
25
|
const SIDE_CARD_TRANSLATE_X = CARD_WIDTH * SIDE_CARD_TRANSLATE_X_FACTOR;
|
|
26
26
|
const ACTIVE_CARD_SCALE = 1.0;
|
|
27
27
|
const SPRING_CONFIG = { damping: 18, stiffness: 120, mass: 0.6 };
|
|
28
|
-
const FADE_SPRING_CONFIG = { damping: 35, stiffness: 50, mass: 1.2 };
|
|
29
28
|
const SIDE_CARD_ROTATION_DEGREES = 7;
|
|
30
29
|
|
|
30
|
+
// Only render visible items + buffer
|
|
31
|
+
const VISIBLE_RANGE = 2; // Items on each side of active item
|
|
32
|
+
|
|
31
33
|
interface CarouselItemOriginal {
|
|
32
34
|
id: string;
|
|
33
35
|
image: string;
|
|
@@ -42,7 +44,7 @@ interface CarouselCardStackProps {
|
|
|
42
44
|
data: CarouselItemOriginal[];
|
|
43
45
|
cardHeight?: number;
|
|
44
46
|
cardWidth?: number;
|
|
45
|
-
backgroundColor
|
|
47
|
+
backgroundColor?: string;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
const createVirtualData = (
|
|
@@ -66,6 +68,91 @@ const createVirtualData = (
|
|
|
66
68
|
return [...prevSegment, ...currSegment, ...nextSegment];
|
|
67
69
|
};
|
|
68
70
|
|
|
71
|
+
// Memoized card component
|
|
72
|
+
const CarouselCard = React.memo<{
|
|
73
|
+
item: CarouselItemVirtual;
|
|
74
|
+
index: number;
|
|
75
|
+
activeIndex: Animated.SharedValue<number>;
|
|
76
|
+
gestureTranslateX: Animated.SharedValue<number>;
|
|
77
|
+
cardWidth: number;
|
|
78
|
+
cardHeight: number;
|
|
79
|
+
virtualDataLength: number;
|
|
80
|
+
}>(({ item, index, activeIndex, gestureTranslateX, cardWidth, cardHeight, virtualDataLength }) => {
|
|
81
|
+
const animatedStyle = useAnimatedStyle(() => {
|
|
82
|
+
const currentCardDragOffset = gestureTranslateX.value / cardWidth;
|
|
83
|
+
const displayOffset = index - (activeIndex.value - currentCardDragOffset);
|
|
84
|
+
|
|
85
|
+
// Early return for items that are too far away to optimize performance
|
|
86
|
+
const absDisplayOffset = Math.abs(displayOffset);
|
|
87
|
+
if (absDisplayOffset > 2.5) {
|
|
88
|
+
return {
|
|
89
|
+
opacity: 0,
|
|
90
|
+
transform: [{ translateX: 0 }, { scale: 0.8 }, { rotateZ: '0deg' }],
|
|
91
|
+
zIndex: 0,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const scale = interpolate(
|
|
96
|
+
displayOffset,
|
|
97
|
+
[-1, 0, 1],
|
|
98
|
+
[SIDE_CARD_SCALE_FACTOR, ACTIVE_CARD_SCALE, SIDE_CARD_SCALE_FACTOR],
|
|
99
|
+
Extrapolation.CLAMP
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
const translateX = interpolate(
|
|
103
|
+
displayOffset,
|
|
104
|
+
[-1, 0, 1],
|
|
105
|
+
[-SIDE_CARD_TRANSLATE_X, 0, SIDE_CARD_TRANSLATE_X],
|
|
106
|
+
Extrapolation.CLAMP
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
const rotation = interpolate(
|
|
110
|
+
displayOffset,
|
|
111
|
+
[-1, 0, 1],
|
|
112
|
+
[-SIDE_CARD_ROTATION_DEGREES, 0, SIDE_CARD_ROTATION_DEGREES],
|
|
113
|
+
Extrapolation.CLAMP
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
const opacity = interpolate(
|
|
117
|
+
absDisplayOffset,
|
|
118
|
+
[0, 1, 2, 2.75],
|
|
119
|
+
[1, 1, 0.6, 0],
|
|
120
|
+
Extrapolation.CLAMP
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
const snappedDisplayOffset = index - Math.round(activeIndex.value);
|
|
124
|
+
const zIndex = virtualDataLength - Math.abs(snappedDisplayOffset);
|
|
125
|
+
|
|
126
|
+
return {
|
|
127
|
+
transform: [{ translateX }, { scale }, { rotateZ: `${rotation}deg` }],
|
|
128
|
+
opacity,
|
|
129
|
+
zIndex,
|
|
130
|
+
};
|
|
131
|
+
}, [index, cardWidth, virtualDataLength]);
|
|
132
|
+
|
|
133
|
+
return (
|
|
134
|
+
<Animated.View
|
|
135
|
+
style={[
|
|
136
|
+
styles.card,
|
|
137
|
+
{ width: cardWidth, height: cardHeight },
|
|
138
|
+
animatedStyle,
|
|
139
|
+
]}
|
|
140
|
+
>
|
|
141
|
+
<Image
|
|
142
|
+
source={{ uri: item.image }}
|
|
143
|
+
style={styles.cardImage}
|
|
144
|
+
resizeMode="cover"
|
|
145
|
+
fadeDuration={0}
|
|
146
|
+
/>
|
|
147
|
+
{item.title && (
|
|
148
|
+
<View style={styles.titleContainer}>
|
|
149
|
+
<Text style={styles.cardTitle}>{item.title}</Text>
|
|
150
|
+
</View>
|
|
151
|
+
)}
|
|
152
|
+
</Animated.View>
|
|
153
|
+
);
|
|
154
|
+
});
|
|
155
|
+
|
|
69
156
|
const CarouselCardStack: React.FC<CarouselCardStackProps> = ({
|
|
70
157
|
data: originalData,
|
|
71
158
|
cardHeight = CARD_HEIGHT,
|
|
@@ -73,7 +160,6 @@ const CarouselCardStack: React.FC<CarouselCardStackProps> = ({
|
|
|
73
160
|
backgroundColor = "transparent"
|
|
74
161
|
}) => {
|
|
75
162
|
const { theme } = useTheme();
|
|
76
|
-
|
|
77
163
|
const N_original = originalData.length;
|
|
78
164
|
|
|
79
165
|
const virtualData = useMemo(
|
|
@@ -90,35 +176,29 @@ const CarouselCardStack: React.FC<CarouselCardStackProps> = ({
|
|
|
90
176
|
gestureTranslateX.value = 0;
|
|
91
177
|
}, [N_original, activeIndex, gestureTranslateX]);
|
|
92
178
|
|
|
93
|
-
//
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
// If in the "prev" segment (indices < N_original)
|
|
105
|
-
else if (currentValue < N_original) {
|
|
106
|
-
activeIndex.value = currentValue + N_original;
|
|
107
|
-
}
|
|
108
|
-
};
|
|
179
|
+
// Calculate visible items - moved outside of render
|
|
180
|
+
const visibleItems = useDerivedValue(() => {
|
|
181
|
+
const center = Math.round(activeIndex.value);
|
|
182
|
+
const start = Math.max(0, center - VISIBLE_RANGE);
|
|
183
|
+
const end = Math.min(virtualData.length - 1, center + VISIBLE_RANGE);
|
|
184
|
+
|
|
185
|
+
return virtualData.slice(start, end + 1).map((item, sliceIndex) => ({
|
|
186
|
+
item,
|
|
187
|
+
originalIndex: start + sliceIndex
|
|
188
|
+
}));
|
|
189
|
+
});
|
|
109
190
|
|
|
110
191
|
useDerivedValue(() => {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
192
|
+
const currentValue = Math.round(activeIndex.value);
|
|
193
|
+
|
|
194
|
+
if (gestureTranslateX.value === 0) {
|
|
195
|
+
if (currentValue >= N_original * 2) {
|
|
196
|
+
activeIndex.value = currentValue - N_original;
|
|
197
|
+
} else if (currentValue < N_original) {
|
|
198
|
+
activeIndex.value = currentValue + N_original;
|
|
199
|
+
}
|
|
119
200
|
}
|
|
120
|
-
}
|
|
121
|
-
});
|
|
201
|
+
});
|
|
122
202
|
|
|
123
203
|
const panGesture = Gesture.Pan()
|
|
124
204
|
.activeOffsetX([-10, 10])
|
|
@@ -140,22 +220,12 @@ const CarouselCardStack: React.FC<CarouselCardStackProps> = ({
|
|
|
140
220
|
newTargetVirtualIndex = activeIndex.value - 1;
|
|
141
221
|
}
|
|
142
222
|
|
|
143
|
-
// Clamp to virtual data bounds
|
|
144
223
|
newTargetVirtualIndex = Math.max(
|
|
145
224
|
0,
|
|
146
225
|
Math.min(newTargetVirtualIndex, virtualData.length - 1)
|
|
147
226
|
);
|
|
148
227
|
|
|
149
|
-
activeIndex.value = withSpring(
|
|
150
|
-
newTargetVirtualIndex,
|
|
151
|
-
SPRING_CONFIG,
|
|
152
|
-
(finished) => {
|
|
153
|
-
"worklet";
|
|
154
|
-
if (finished) {
|
|
155
|
-
handleLoopReset();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
);
|
|
228
|
+
activeIndex.value = withSpring(newTargetVirtualIndex, SPRING_CONFIG);
|
|
159
229
|
gestureTranslateX.value = withSpring(0, SPRING_CONFIG);
|
|
160
230
|
contextX.value = 0;
|
|
161
231
|
});
|
|
@@ -175,100 +245,40 @@ const CarouselCardStack: React.FC<CarouselCardStackProps> = ({
|
|
|
175
245
|
}
|
|
176
246
|
|
|
177
247
|
return (
|
|
178
|
-
<View style={[styles.container, { height: cardHeight + 60, backgroundColor
|
|
248
|
+
<View style={[styles.container, { height: cardHeight + 60, backgroundColor }]}>
|
|
179
249
|
<GestureDetector gesture={panGesture}>
|
|
180
250
|
<Animated.View style={[styles.cardContainer, { height: cardHeight }]}>
|
|
181
|
-
{
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
],
|
|
195
|
-
Extrapolation.CLAMP
|
|
196
|
-
);
|
|
197
|
-
|
|
198
|
-
const translateX = interpolate(
|
|
199
|
-
displayOffset,
|
|
200
|
-
[-1, 0, 1],
|
|
201
|
-
[-SIDE_CARD_TRANSLATE_X, 0, SIDE_CARD_TRANSLATE_X],
|
|
202
|
-
Extrapolation.CLAMP
|
|
203
|
-
);
|
|
204
|
-
|
|
205
|
-
const rotation = interpolate(
|
|
206
|
-
displayOffset,
|
|
207
|
-
[-1, 0, 1],
|
|
208
|
-
[
|
|
209
|
-
-SIDE_CARD_ROTATION_DEGREES,
|
|
210
|
-
0,
|
|
211
|
-
SIDE_CARD_ROTATION_DEGREES,
|
|
212
|
-
],
|
|
213
|
-
Extrapolation.CLAMP,
|
|
214
|
-
);
|
|
215
|
-
|
|
216
|
-
const opacity = interpolate(
|
|
217
|
-
Math.abs(displayOffset),
|
|
218
|
-
[0, 1, 2, 2.75],
|
|
219
|
-
[1, 1, 0.6, 0],
|
|
220
|
-
Extrapolation.CLAMP
|
|
221
|
-
);
|
|
222
|
-
|
|
223
|
-
const snappedDisplayOffset =
|
|
224
|
-
index - Math.round(activeIndex.value);
|
|
225
|
-
const zIndex =
|
|
226
|
-
virtualData.length - Math.abs(snappedDisplayOffset);
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
return {
|
|
230
|
-
transform: [{ translateX }, { scale }, { rotateZ: `${rotation}deg` }],
|
|
231
|
-
opacity,
|
|
232
|
-
zIndex,
|
|
233
|
-
};
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
return (
|
|
237
|
-
<Animated.View
|
|
238
|
-
key={item.uniqueId}
|
|
239
|
-
style={[
|
|
240
|
-
styles.card,
|
|
241
|
-
{ width: cardWidth, height: cardHeight },
|
|
242
|
-
animatedStyle,
|
|
243
|
-
]}
|
|
244
|
-
>
|
|
245
|
-
<Image source={{ uri: item.image }} style={styles.cardImage} />
|
|
246
|
-
{item.title && (
|
|
247
|
-
<View style={styles.titleContainer}>
|
|
248
|
-
<Text style={styles.cardTitle}>{item.title}</Text>
|
|
249
|
-
</View>
|
|
250
|
-
)}
|
|
251
|
-
</Animated.View>
|
|
252
|
-
);
|
|
253
|
-
})}
|
|
251
|
+
{/* Render all items but optimize with early returns in animations */}
|
|
252
|
+
{virtualData.map((item, index) => (
|
|
253
|
+
<CarouselCard
|
|
254
|
+
key={item.uniqueId}
|
|
255
|
+
item={item}
|
|
256
|
+
index={index}
|
|
257
|
+
activeIndex={activeIndex}
|
|
258
|
+
gestureTranslateX={gestureTranslateX}
|
|
259
|
+
cardWidth={cardWidth}
|
|
260
|
+
cardHeight={cardHeight}
|
|
261
|
+
virtualDataLength={virtualData.length}
|
|
262
|
+
/>
|
|
263
|
+
))}
|
|
254
264
|
</Animated.View>
|
|
255
265
|
</GestureDetector>
|
|
256
266
|
|
|
257
267
|
{N_original > 0 && (
|
|
258
268
|
<View style={styles.paginationContainer}>
|
|
259
269
|
{originalData.map((_, i) => {
|
|
260
|
-
const isActiveDot = useDerivedValue(() => {
|
|
261
|
-
return activeDotIndex.value === i;
|
|
262
|
-
});
|
|
263
270
|
const dotStyle = useAnimatedStyle(() => {
|
|
271
|
+
const isActive = activeDotIndex.value === i;
|
|
264
272
|
return {
|
|
265
|
-
width: withSpring(
|
|
273
|
+
width: withSpring(isActive ? 24 : 8, SPRING_CONFIG),
|
|
266
274
|
height: 8,
|
|
267
275
|
borderRadius: 4,
|
|
268
|
-
backgroundColor:
|
|
276
|
+
backgroundColor: isActive ? theme.primary : "#FFFFFF",
|
|
269
277
|
marginHorizontal: 4,
|
|
278
|
+
opacity: isActive ? 1 : 0.5,
|
|
270
279
|
};
|
|
271
280
|
});
|
|
281
|
+
|
|
272
282
|
return <Animated.View key={`dot-${i}`} style={dotStyle} />;
|
|
273
283
|
})}
|
|
274
284
|
</View>
|
|
@@ -325,4 +335,4 @@ const styles = StyleSheet.create({
|
|
|
325
335
|
},
|
|
326
336
|
});
|
|
327
337
|
|
|
328
|
-
export default CarouselCardStack;
|
|
338
|
+
export default CarouselCardStack;
|