related-ui-components 3.2.7 → 3.2.9
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.
|
@@ -6,65 +6,17 @@ import { Svg, Path, G, Text as SvgText, Circle } from "react-native-svg";
|
|
|
6
6
|
import { Button } from "../Button/index.js";
|
|
7
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
8
|
//default random colors
|
|
9
|
-
const colors = ["#FF0000",
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"#008000",
|
|
16
|
-
// Green
|
|
17
|
-
"#0000FF",
|
|
18
|
-
// Blue
|
|
19
|
-
"#800080",
|
|
20
|
-
// Purple
|
|
21
|
-
"#FFC0CB",
|
|
22
|
-
// Pink
|
|
23
|
-
"#00FFFF",
|
|
24
|
-
// Cyan
|
|
25
|
-
"#FF00FF",
|
|
26
|
-
// Magenta
|
|
27
|
-
"#00FF00",
|
|
28
|
-
// Lime
|
|
29
|
-
"#4B0082",
|
|
30
|
-
// Indigo
|
|
31
|
-
"#EE82EE",
|
|
32
|
-
// Violet
|
|
33
|
-
"#40E0D0",
|
|
34
|
-
// Turquoise
|
|
35
|
-
"#FFD700",
|
|
36
|
-
// Gold
|
|
37
|
-
"#C0C0C0",
|
|
38
|
-
// Silver
|
|
39
|
-
"#FFDAB9",
|
|
40
|
-
// Peach
|
|
41
|
-
"#E6E6FA",
|
|
42
|
-
// Lavender
|
|
43
|
-
"#008080",
|
|
44
|
-
// Teal
|
|
45
|
-
"#FF7F50",
|
|
46
|
-
// Coral
|
|
47
|
-
"#DC143C",
|
|
48
|
-
// Crimson
|
|
49
|
-
"#87CEEB",
|
|
50
|
-
// Sky Blue
|
|
51
|
-
"#7FFF00",
|
|
52
|
-
// Chartreuse
|
|
53
|
-
"#CCCCFF",
|
|
54
|
-
// Periwinkle
|
|
55
|
-
"#FF6347",
|
|
56
|
-
// Tomato
|
|
57
|
-
"#FA8072" // Salmon
|
|
58
|
-
];
|
|
9
|
+
const colors = ["#FF0000", "#FFA500", "#FFFF00", "#008000", "#0000FF", "#800080", "#FFC0CB", "#00FFFF", "#FF00FF", "#00FF00", "#4B0082", "#EE82EE", "#40E0D0", "#FFD700", "#C0C0C0", "#FFDAB9", "#E6E6FA", "#008080", "#FF7F50", "#DC143C", "#87CEEB", "#7FFF00", "#CCCCFF", "#FF6347", "#FA8072"];
|
|
10
|
+
// Constants for consistent animation
|
|
11
|
+
const ROTATION_DURATION = 2500; // Duration for one full rotation
|
|
12
|
+
const DECEL_DURATION = 3000; // Duration for deceleration phase
|
|
13
|
+
const EXTRA_SPINS = 3; // Number of extra full rotations before stopping
|
|
14
|
+
|
|
59
15
|
const SpinWheel = ({
|
|
60
16
|
items,
|
|
61
|
-
predeterminedWinner,
|
|
62
|
-
// Destructure new prop
|
|
63
17
|
size = 300,
|
|
64
|
-
spinDuration = 5000,
|
|
65
18
|
winner,
|
|
66
19
|
minSpinDuration = 2000,
|
|
67
|
-
enabled = true,
|
|
68
20
|
onSpinStart,
|
|
69
21
|
onSpinEnd,
|
|
70
22
|
containerStyle,
|
|
@@ -86,18 +38,14 @@ const SpinWheel = ({
|
|
|
86
38
|
const spinLoop = useRef(null);
|
|
87
39
|
const spinStartTime = useRef(0);
|
|
88
40
|
const [spinning, setSpinning] = useState(false);
|
|
89
|
-
const [_, setWinner] = useState(null);
|
|
90
41
|
const rotateValue = useRef(new Animated.Value(0)).current;
|
|
91
|
-
|
|
92
|
-
// Track rotation manually for calculations
|
|
93
42
|
const rotationRef = useRef(0);
|
|
94
43
|
const startInfiniteSpin = () => {
|
|
95
44
|
rotateValue.setValue(rotationRef.current);
|
|
96
45
|
spinStartTime.current = Date.now();
|
|
97
46
|
spinLoop.current = Animated.loop(Animated.timing(rotateValue, {
|
|
98
47
|
toValue: rotationRef.current + 1,
|
|
99
|
-
|
|
100
|
-
duration: 800,
|
|
48
|
+
duration: ROTATION_DURATION,
|
|
101
49
|
easing: Easing.linear,
|
|
102
50
|
useNativeDriver: true
|
|
103
51
|
}));
|
|
@@ -112,23 +60,38 @@ const SpinWheel = ({
|
|
|
112
60
|
const winnerId = typeof winnerValue === "object" ? winnerValue.id : winnerValue;
|
|
113
61
|
const index = items.findIndex(i => i.id === winnerId);
|
|
114
62
|
if (index === -1) return;
|
|
63
|
+
|
|
64
|
+
// Calculate target angle (pointer at top = 270 degrees)
|
|
65
|
+
const anglePerItem = 360 / items.length;
|
|
115
66
|
const segmentCenter = (index + 0.5) * anglePerItem;
|
|
116
67
|
const targetAngle = (270 - segmentCenter + 360) % 360;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const
|
|
68
|
+
|
|
69
|
+
// Get current rotation position
|
|
70
|
+
const currentRotation = rotationRef.current;
|
|
71
|
+
const currentAngle = currentRotation * 360 % 360;
|
|
72
|
+
|
|
73
|
+
// Calculate shortest path to target
|
|
74
|
+
let offset = (targetAngle - currentAngle + 360) % 360;
|
|
75
|
+
|
|
76
|
+
// Add extra full rotations for dramatic effect
|
|
77
|
+
const extraRotations = EXTRA_SPINS * 360;
|
|
78
|
+
const totalRotation = offset + extraRotations;
|
|
79
|
+
|
|
80
|
+
// Final rotation value
|
|
81
|
+
const finalRotation = currentRotation + totalRotation / 360;
|
|
82
|
+
|
|
83
|
+
// Use ease-out cubic for smooth deceleration
|
|
120
84
|
Animated.timing(rotateValue, {
|
|
121
85
|
toValue: finalRotation,
|
|
122
|
-
duration:
|
|
86
|
+
duration: DECEL_DURATION,
|
|
123
87
|
easing: Easing.out(Easing.cubic),
|
|
124
88
|
useNativeDriver: true
|
|
125
89
|
}).start(() => {
|
|
90
|
+
rotationRef.current = finalRotation;
|
|
126
91
|
setSpinning(false);
|
|
127
92
|
onSpinEnd?.(items[index]);
|
|
128
93
|
});
|
|
129
94
|
};
|
|
130
|
-
|
|
131
|
-
// Update tracked rotation when animation completes
|
|
132
95
|
useEffect(() => {
|
|
133
96
|
const listener = rotateValue.addListener(({
|
|
134
97
|
value
|
|
@@ -139,11 +102,7 @@ const SpinWheel = ({
|
|
|
139
102
|
rotateValue.removeListener(listener);
|
|
140
103
|
};
|
|
141
104
|
}, [rotateValue]);
|
|
142
|
-
|
|
143
|
-
// Calculate angle for each segment
|
|
144
105
|
const anglePerItem = wheelItems.length > 0 ? 360 / wheelItems.length : 0;
|
|
145
|
-
|
|
146
|
-
// Create wheel segments
|
|
147
106
|
const generateWheelPaths = () => {
|
|
148
107
|
if (wheelItems.length === 0) return [];
|
|
149
108
|
return wheelItems.map((item, index) => {
|
|
@@ -160,80 +119,16 @@ const SpinWheel = ({
|
|
|
160
119
|
const midRad = (startAngle + endAngle) / 2 * (Math.PI / 180);
|
|
161
120
|
const textX = size / 2 + size * 0.32 * Math.cos(midRad);
|
|
162
121
|
const textY = size / 2 + size * 0.32 * Math.sin(midRad);
|
|
163
|
-
|
|
164
|
-
// decorationX and decorationY are calculated but not used in the provided JSX
|
|
165
|
-
// const decorationX = size / 2 + size * 0.43 * Math.cos(midRad);
|
|
166
|
-
// const decorationY = size / 2 + size * 0.43 * Math.sin(midRad);
|
|
167
|
-
|
|
168
122
|
return {
|
|
169
123
|
path: pathData,
|
|
170
124
|
item,
|
|
171
125
|
textX,
|
|
172
126
|
textY,
|
|
173
|
-
// decorationX,
|
|
174
|
-
// decorationY,
|
|
175
127
|
angle: (startAngle + endAngle) / 2
|
|
176
128
|
};
|
|
177
129
|
});
|
|
178
130
|
};
|
|
179
131
|
const wheelPaths = generateWheelPaths();
|
|
180
|
-
|
|
181
|
-
// Handle spin button press
|
|
182
|
-
const handleSpin = () => {
|
|
183
|
-
if (spinning || !enabled || wheelItems.length === 0) return;
|
|
184
|
-
setSpinning(true);
|
|
185
|
-
onSpinStart?.();
|
|
186
|
-
let targetRotation = 0;
|
|
187
|
-
let winnerTargetIndex = -1;
|
|
188
|
-
if (predeterminedWinner) {
|
|
189
|
-
const winnerId = typeof predeterminedWinner === "object" ? predeterminedWinner.id : predeterminedWinner;
|
|
190
|
-
winnerTargetIndex = wheelItems.findIndex(item => item.id === winnerId);
|
|
191
|
-
}
|
|
192
|
-
if (winnerTargetIndex !== -1) {
|
|
193
|
-
const targetSegmentCenterAngle = (winnerTargetIndex + 0.5) * anglePerItem;
|
|
194
|
-
const targetNormalizedAngle = (270 - targetSegmentCenterAngle + 360) % 360;
|
|
195
|
-
const currentAbsoluteAngle = rotationRef.current * 360;
|
|
196
|
-
const currentNormalizedAngle = (currentAbsoluteAngle % 360 + 360) % 360;
|
|
197
|
-
|
|
198
|
-
// Additional angle needed to reach the targetNormalizedAngle from currentNormalizedAngle
|
|
199
|
-
const angleOffset = (targetNormalizedAngle - currentNormalizedAngle + 360) % 360;
|
|
200
|
-
|
|
201
|
-
// Number of full spins (e.g., 3 to 5)
|
|
202
|
-
const numberOfFullSpins = 3 + Math.floor(Math.random() * 3); // 3, 4, or 5 spins
|
|
203
|
-
targetRotation = numberOfFullSpins * 360 + angleOffset;
|
|
204
|
-
|
|
205
|
-
// Ensure minimum rotation if already aligned (e.g. if angleOffset is 0)
|
|
206
|
-
if (targetRotation < 360) {
|
|
207
|
-
targetRotation += 360 * (3 + Math.floor(Math.random() * 3));
|
|
208
|
-
}
|
|
209
|
-
} else {
|
|
210
|
-
const randomSpins = 3 + Math.random() * 2;
|
|
211
|
-
const randomAngle = Math.random() * 360;
|
|
212
|
-
targetRotation = 360 * randomSpins + randomAngle;
|
|
213
|
-
}
|
|
214
|
-
Animated.timing(rotateValue, {
|
|
215
|
-
toValue: rotationRef.current + targetRotation / 360,
|
|
216
|
-
duration: spinDuration,
|
|
217
|
-
easing: Easing.out(Easing.cubic),
|
|
218
|
-
useNativeDriver: true
|
|
219
|
-
}).start(() => handleSpinEnd());
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
// Handle spin completion
|
|
223
|
-
const handleSpinEnd = () => {
|
|
224
|
-
setSpinning(false);
|
|
225
|
-
const normalizedAngle = rotationRef.current * 360 % 360;
|
|
226
|
-
const winningIndex = Math.floor((normalizedAngle - 270) % 360 / anglePerItem);
|
|
227
|
-
const adjustedIndex = (wheelItems.length - 1 - winningIndex) % wheelItems.length;
|
|
228
|
-
const finalWinnerIndex = adjustedIndex >= 0 ? adjustedIndex : wheelItems.length + adjustedIndex;
|
|
229
|
-
if (finalWinnerIndex >= 0 && finalWinnerIndex < wheelItems.length) {
|
|
230
|
-
const winningItem = wheelItems[finalWinnerIndex];
|
|
231
|
-
setWinner(winningItem);
|
|
232
|
-
onSpinEnd?.(winningItem);
|
|
233
|
-
} else if (wheelItems.length > 0) {
|
|
234
|
-
onSpinEnd?.(wheelItems[0]);
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
132
|
useEffect(() => {
|
|
238
133
|
if (!winner || !spinning) return;
|
|
239
134
|
const elapsed = Date.now() - spinStartTime.current;
|
|
@@ -242,9 +137,7 @@ const SpinWheel = ({
|
|
|
242
137
|
stopOnWinner(winner);
|
|
243
138
|
}, delay);
|
|
244
139
|
return () => clearTimeout(timeout);
|
|
245
|
-
}, [winner]);
|
|
246
|
-
|
|
247
|
-
// Animation interpolation for rotation
|
|
140
|
+
}, [winner, spinning]);
|
|
248
141
|
const rotate = rotateValue.interpolate({
|
|
249
142
|
inputRange: [0, 1],
|
|
250
143
|
outputRange: ["0deg", "360deg"]
|
|
@@ -277,13 +170,11 @@ const SpinWheel = ({
|
|
|
277
170
|
textX,
|
|
278
171
|
textY,
|
|
279
172
|
angle
|
|
280
|
-
}
|
|
173
|
+
}) => {
|
|
281
174
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
282
175
|
children: [/*#__PURE__*/_jsx(Path, {
|
|
283
176
|
d: path,
|
|
284
177
|
fill: item.color == "" || item.color == null ? colors[Math.floor(Math.random() * colors.length)] : item.color
|
|
285
|
-
// stroke="#FA8072"
|
|
286
|
-
// strokeWidth={1}
|
|
287
178
|
}), /*#__PURE__*/_jsx(SvgText, {
|
|
288
179
|
x: textX,
|
|
289
180
|
y: textY,
|
|
@@ -292,7 +183,7 @@ const SpinWheel = ({
|
|
|
292
183
|
fontWeight: wheelTextStyle?.fontWeight || "bold",
|
|
293
184
|
textAnchor: "middle",
|
|
294
185
|
alignmentBaseline: "central",
|
|
295
|
-
transform: `rotate(${angle + 180}, ${textX}, ${textY}
|
|
186
|
+
transform: `rotate(${angle + 180}, ${textX}, ${textY})`,
|
|
296
187
|
children: item.label
|
|
297
188
|
})]
|
|
298
189
|
}, item.id);
|
|
@@ -311,7 +202,6 @@ const SpinWheel = ({
|
|
|
311
202
|
position: "absolute",
|
|
312
203
|
top: "50%",
|
|
313
204
|
left: "50%",
|
|
314
|
-
// Center the component perfectly
|
|
315
205
|
transform: [{
|
|
316
206
|
translateX: -(actualCenterSize / 2)
|
|
317
207
|
}, {
|
|
@@ -366,7 +256,7 @@ const styles = StyleSheet.create({
|
|
|
366
256
|
alignItems: "center",
|
|
367
257
|
justifyContent: "center",
|
|
368
258
|
marginTop: 20,
|
|
369
|
-
marginBottom: 70
|
|
259
|
+
marginBottom: 70
|
|
370
260
|
},
|
|
371
261
|
wheelContainer: {
|
|
372
262
|
overflow: "hidden",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useRef","useEffect","View","StyleSheet","Animated","Easing","Svg","Path","G","Text","SvgText","Circle","Button","jsx","_jsx","jsxs","_jsxs","colors","SpinWheel","items","predeterminedWinner","size","spinDuration","winner","minSpinDuration","enabled","onSpinStart","onSpinEnd","containerStyle","centerStyle","spinButtonText","wheelTextStyle","knobStyle","knobColor","actionButtonStyle","actionButtonTextStyle","wheelBorderColor","wheelBorderWidth","wheelTextColor","actionButtonProps","centerSize","centerComponent","wheelItems","length","spinLoop","spinStartTime","spinning","setSpinning","_","setWinner","rotateValue","Value","current","rotationRef","startInfiniteSpin","setValue","Date","now","loop","timing","toValue","duration","easing","linear","useNativeDriver","start","stopOnWinner","winnerValue","stop","winnerId","id","index","findIndex","i","segmentCenter","anglePerItem","targetAngle","currentAngle","offset","finalRotation","out","cubic","listener","addListener","value","removeListener","generateWheelPaths","map","item","startAngle","endAngle","startRad","Math","PI","endRad","x1","cos","y1","sin","x2","y2","largeArcFlag","pathData","join","midRad","textX","textY","path","angle","wheelPaths","handleSpin","targetRotation","winnerTargetIndex","targetSegmentCenterAngle","targetNormalizedAngle","currentAbsoluteAngle","currentNormalizedAngle","angleOffset","numberOfFullSpins","floor","random","randomSpins","randomAngle","handleSpinEnd","normalizedAngle","winningIndex","adjustedIndex","finalWinnerIndex","winningItem","elapsed","delay","max","timeout","setTimeout","clearTimeout","rotate","interpolate","inputRange","outputRange","actualCenterSize","undefined","style","styles","container","children","width","height","wheelContainer","borderRadius","transform","viewBox","Fragment","d","fill","color","x","y","textColor","fontSize","fontWeight","textAnchor","alignmentBaseline","label","cx","cy","r","stroke","strokeWidth","position","top","left","translateX","translateY","zIndex","wheelCenter","pointerPosition","pointer","borderBottomColor","alignItems","justifyContent","bottom","actionButton","onPress","title","disabled","textStyle","actionButtonText","create","marginTop","marginBottom","overflow","backgroundColor","borderWidth","borderColor","borderStyle","borderLeftWidth","borderRightWidth","borderBottomWidth","borderLeftColor","borderRightColor","paddingHorizontal","paddingVertical","shadowColor","shadowRadius"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Wheel/Wheel.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useState","useRef","useEffect","View","StyleSheet","Animated","Easing","Svg","Path","G","Text","SvgText","Circle","Button","jsx","_jsx","jsxs","_jsxs","colors","ROTATION_DURATION","DECEL_DURATION","EXTRA_SPINS","SpinWheel","items","size","winner","minSpinDuration","onSpinStart","onSpinEnd","containerStyle","centerStyle","spinButtonText","wheelTextStyle","knobStyle","knobColor","actionButtonStyle","actionButtonTextStyle","wheelBorderColor","wheelBorderWidth","wheelTextColor","actionButtonProps","centerSize","centerComponent","wheelItems","length","spinLoop","spinStartTime","spinning","setSpinning","rotateValue","Value","current","rotationRef","startInfiniteSpin","setValue","Date","now","loop","timing","toValue","duration","easing","linear","useNativeDriver","start","stopOnWinner","winnerValue","stop","winnerId","id","index","findIndex","i","anglePerItem","segmentCenter","targetAngle","currentRotation","currentAngle","offset","extraRotations","totalRotation","finalRotation","out","cubic","listener","addListener","value","removeListener","generateWheelPaths","map","item","startAngle","endAngle","startRad","Math","PI","endRad","x1","cos","y1","sin","x2","y2","largeArcFlag","pathData","join","midRad","textX","textY","path","angle","wheelPaths","elapsed","delay","max","timeout","setTimeout","clearTimeout","rotate","interpolate","inputRange","outputRange","actualCenterSize","undefined","style","styles","container","children","width","height","wheelContainer","borderRadius","transform","viewBox","Fragment","d","fill","color","floor","random","x","y","textColor","fontSize","fontWeight","textAnchor","alignmentBaseline","label","cx","cy","r","stroke","strokeWidth","position","top","left","translateX","translateY","zIndex","wheelCenter","pointerPosition","pointer","borderBottomColor","alignItems","justifyContent","bottom","actionButton","onPress","title","disabled","textStyle","actionButtonText","create","marginTop","marginBottom","overflow","backgroundColor","borderWidth","borderColor","borderStyle","borderLeftWidth","borderRightWidth","borderBottomWidth","borderLeftColor","borderRightColor","paddingHorizontal","paddingVertical","shadowColor","shadowRadius"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Wheel/Wheel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Wheel/Wheel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAOL,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAU,MAAM,WAAW,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Wheel/Wheel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAOL,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAU,MAAM,WAAW,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAWD,UAAU,cAAc;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,mBAAmB,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;AAOD,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAmSvC,CAAC;AAqDF,eAAe,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -22,55 +22,25 @@ export interface SpinWheelItem {
|
|
|
22
22
|
|
|
23
23
|
//default random colors
|
|
24
24
|
const colors = [
|
|
25
|
-
"#FF0000",
|
|
26
|
-
"#
|
|
27
|
-
"#
|
|
28
|
-
"#
|
|
29
|
-
"#
|
|
30
|
-
"#800080", // Purple
|
|
31
|
-
"#FFC0CB", // Pink
|
|
32
|
-
"#00FFFF", // Cyan
|
|
33
|
-
"#FF00FF", // Magenta
|
|
34
|
-
"#00FF00", // Lime
|
|
35
|
-
"#4B0082", // Indigo
|
|
36
|
-
"#EE82EE", // Violet
|
|
37
|
-
"#40E0D0", // Turquoise
|
|
38
|
-
"#FFD700", // Gold
|
|
39
|
-
"#C0C0C0", // Silver
|
|
40
|
-
"#FFDAB9", // Peach
|
|
41
|
-
"#E6E6FA", // Lavender
|
|
42
|
-
"#008080", // Teal
|
|
43
|
-
"#FF7F50", // Coral
|
|
44
|
-
"#DC143C", // Crimson
|
|
45
|
-
"#87CEEB", // Sky Blue
|
|
46
|
-
"#7FFF00", // Chartreuse
|
|
47
|
-
"#CCCCFF", // Periwinkle
|
|
48
|
-
"#FF6347", // Tomato
|
|
49
|
-
"#FA8072", // Salmon
|
|
25
|
+
"#FF0000", "#FFA500", "#FFFF00", "#008000", "#0000FF", "#800080",
|
|
26
|
+
"#FFC0CB", "#00FFFF", "#FF00FF", "#00FF00", "#4B0082", "#EE82EE",
|
|
27
|
+
"#40E0D0", "#FFD700", "#C0C0C0", "#FFDAB9", "#E6E6FA", "#008080",
|
|
28
|
+
"#FF7F50", "#DC143C", "#87CEEB", "#7FFF00", "#CCCCFF", "#FF6347",
|
|
29
|
+
"#FA8072",
|
|
50
30
|
];
|
|
51
31
|
|
|
52
32
|
interface SpinWheelProps {
|
|
53
|
-
// Data
|
|
54
33
|
items: SpinWheelItem[];
|
|
55
34
|
predeterminedWinner?: SpinWheelItem | string | number;
|
|
56
|
-
|
|
57
|
-
// Dimensions
|
|
58
35
|
size?: number;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
minSpinDuration?: number; // buffer in ms before stopping
|
|
63
|
-
|
|
64
|
-
// Behavior
|
|
36
|
+
startSpin?: boolean;
|
|
37
|
+
winner?: SpinWheelItem | string | number;
|
|
38
|
+
minSpinDuration?: number;
|
|
65
39
|
spinDuration?: number;
|
|
66
40
|
friction?: number;
|
|
67
41
|
enabled?: boolean;
|
|
68
|
-
|
|
69
|
-
// Events
|
|
70
42
|
onSpinStart?: () => void;
|
|
71
43
|
onSpinEnd?: (item: SpinWheelItem) => void;
|
|
72
|
-
|
|
73
|
-
// Styling
|
|
74
44
|
containerStyle?: ViewStyle;
|
|
75
45
|
centerStyle?: ViewStyle;
|
|
76
46
|
spinButtonText?: string;
|
|
@@ -79,25 +49,24 @@ interface SpinWheelProps {
|
|
|
79
49
|
actionButtonStyle?: ViewStyle;
|
|
80
50
|
actionButtonTextStyle?: TextStyle;
|
|
81
51
|
actionButtonProps?: Partial<Omit<AppButtonProps, "title" | "onPress">>;
|
|
82
|
-
|
|
83
52
|
wheelBorderColor?: string;
|
|
84
53
|
wheelBorderWidth?: number;
|
|
85
54
|
wheelTextColor?: string;
|
|
86
55
|
knobColor?: string;
|
|
87
|
-
|
|
88
56
|
centerSize?: number;
|
|
89
|
-
|
|
90
|
-
centerComponent?: React.ReactNode; // Note: centerComponent prop is declared but not used
|
|
57
|
+
centerComponent?: React.ReactNode;
|
|
91
58
|
}
|
|
92
59
|
|
|
60
|
+
// Constants for consistent animation
|
|
61
|
+
const ROTATION_DURATION = 2500; // Duration for one full rotation
|
|
62
|
+
const DECEL_DURATION = 3000; // Duration for deceleration phase
|
|
63
|
+
const EXTRA_SPINS = 3; // Number of extra full rotations before stopping
|
|
64
|
+
|
|
93
65
|
const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
94
66
|
items,
|
|
95
|
-
predeterminedWinner, // Destructure new prop
|
|
96
67
|
size = 300,
|
|
97
|
-
spinDuration = 5000,
|
|
98
68
|
winner,
|
|
99
69
|
minSpinDuration = 2000,
|
|
100
|
-
enabled = true,
|
|
101
70
|
onSpinStart,
|
|
102
71
|
onSpinEnd,
|
|
103
72
|
containerStyle,
|
|
@@ -121,21 +90,17 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
121
90
|
const spinStartTime = useRef<number>(0);
|
|
122
91
|
|
|
123
92
|
const [spinning, setSpinning] = useState(false);
|
|
124
|
-
const [_, setWinner] = useState<SpinWheelItem | null>(null);
|
|
125
93
|
const rotateValue = useRef(new Animated.Value(0)).current;
|
|
126
|
-
|
|
127
|
-
// Track rotation manually for calculations
|
|
128
94
|
const rotationRef = useRef(0);
|
|
129
95
|
|
|
130
96
|
const startInfiniteSpin = () => {
|
|
131
97
|
rotateValue.setValue(rotationRef.current);
|
|
132
|
-
|
|
133
98
|
spinStartTime.current = Date.now();
|
|
134
99
|
|
|
135
100
|
spinLoop.current = Animated.loop(
|
|
136
101
|
Animated.timing(rotateValue, {
|
|
137
|
-
toValue: rotationRef.current + 1,
|
|
138
|
-
duration:
|
|
102
|
+
toValue: rotationRef.current + 1,
|
|
103
|
+
duration: ROTATION_DURATION,
|
|
139
104
|
easing: Easing.linear,
|
|
140
105
|
useNativeDriver: true,
|
|
141
106
|
})
|
|
@@ -158,26 +123,38 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
158
123
|
const index = items.findIndex((i) => i.id === winnerId);
|
|
159
124
|
if (index === -1) return;
|
|
160
125
|
|
|
126
|
+
// Calculate target angle (pointer at top = 270 degrees)
|
|
127
|
+
const anglePerItem = 360 / items.length;
|
|
161
128
|
const segmentCenter = (index + 0.5) * anglePerItem;
|
|
162
129
|
const targetAngle = (270 - segmentCenter + 360) % 360;
|
|
163
130
|
|
|
164
|
-
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
131
|
+
// Get current rotation position
|
|
132
|
+
const currentRotation = rotationRef.current;
|
|
133
|
+
const currentAngle = (currentRotation * 360) % 360;
|
|
134
|
+
|
|
135
|
+
// Calculate shortest path to target
|
|
136
|
+
let offset = (targetAngle - currentAngle + 360) % 360;
|
|
137
|
+
|
|
138
|
+
// Add extra full rotations for dramatic effect
|
|
139
|
+
const extraRotations = EXTRA_SPINS * 360;
|
|
140
|
+
const totalRotation = offset + extraRotations;
|
|
141
|
+
|
|
142
|
+
// Final rotation value
|
|
143
|
+
const finalRotation = currentRotation + totalRotation / 360;
|
|
144
|
+
|
|
145
|
+
// Use ease-out cubic for smooth deceleration
|
|
169
146
|
Animated.timing(rotateValue, {
|
|
170
147
|
toValue: finalRotation,
|
|
171
|
-
duration:
|
|
148
|
+
duration: DECEL_DURATION,
|
|
172
149
|
easing: Easing.out(Easing.cubic),
|
|
173
150
|
useNativeDriver: true,
|
|
174
151
|
}).start(() => {
|
|
152
|
+
rotationRef.current = finalRotation;
|
|
175
153
|
setSpinning(false);
|
|
176
154
|
onSpinEnd?.(items[index]);
|
|
177
155
|
});
|
|
178
156
|
};
|
|
179
157
|
|
|
180
|
-
// Update tracked rotation when animation completes
|
|
181
158
|
useEffect(() => {
|
|
182
159
|
const listener = rotateValue.addListener(({ value }) => {
|
|
183
160
|
rotationRef.current = value;
|
|
@@ -188,10 +165,8 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
188
165
|
};
|
|
189
166
|
}, [rotateValue]);
|
|
190
167
|
|
|
191
|
-
// Calculate angle for each segment
|
|
192
168
|
const anglePerItem = wheelItems.length > 0 ? 360 / wheelItems.length : 0;
|
|
193
169
|
|
|
194
|
-
// Create wheel segments
|
|
195
170
|
const generateWheelPaths = () => {
|
|
196
171
|
if (wheelItems.length === 0) return [];
|
|
197
172
|
return wheelItems.map((item, index) => {
|
|
@@ -219,17 +194,11 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
219
194
|
const textX = size / 2 + size * 0.32 * Math.cos(midRad);
|
|
220
195
|
const textY = size / 2 + size * 0.32 * Math.sin(midRad);
|
|
221
196
|
|
|
222
|
-
// decorationX and decorationY are calculated but not used in the provided JSX
|
|
223
|
-
// const decorationX = size / 2 + size * 0.43 * Math.cos(midRad);
|
|
224
|
-
// const decorationY = size / 2 + size * 0.43 * Math.sin(midRad);
|
|
225
|
-
|
|
226
197
|
return {
|
|
227
198
|
path: pathData,
|
|
228
199
|
item,
|
|
229
200
|
textX,
|
|
230
201
|
textY,
|
|
231
|
-
// decorationX,
|
|
232
|
-
// decorationY,
|
|
233
202
|
angle: (startAngle + endAngle) / 2,
|
|
234
203
|
};
|
|
235
204
|
});
|
|
@@ -237,82 +206,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
237
206
|
|
|
238
207
|
const wheelPaths = generateWheelPaths();
|
|
239
208
|
|
|
240
|
-
// Handle spin button press
|
|
241
|
-
const handleSpin = () => {
|
|
242
|
-
if (spinning || !enabled || wheelItems.length === 0) return;
|
|
243
|
-
|
|
244
|
-
setSpinning(true);
|
|
245
|
-
onSpinStart?.();
|
|
246
|
-
|
|
247
|
-
let targetRotation = 0;
|
|
248
|
-
let winnerTargetIndex = -1;
|
|
249
|
-
|
|
250
|
-
if (predeterminedWinner) {
|
|
251
|
-
const winnerId =
|
|
252
|
-
typeof predeterminedWinner === "object"
|
|
253
|
-
? predeterminedWinner.id
|
|
254
|
-
: predeterminedWinner;
|
|
255
|
-
winnerTargetIndex = wheelItems.findIndex((item) => item.id === winnerId);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
if (winnerTargetIndex !== -1) {
|
|
259
|
-
const targetSegmentCenterAngle = (winnerTargetIndex + 0.5) * anglePerItem;
|
|
260
|
-
|
|
261
|
-
const targetNormalizedAngle =
|
|
262
|
-
(270 - targetSegmentCenterAngle + 360) % 360;
|
|
263
|
-
|
|
264
|
-
const currentAbsoluteAngle = rotationRef.current * 360;
|
|
265
|
-
const currentNormalizedAngle = ((currentAbsoluteAngle % 360) + 360) % 360;
|
|
266
|
-
|
|
267
|
-
// Additional angle needed to reach the targetNormalizedAngle from currentNormalizedAngle
|
|
268
|
-
const angleOffset =
|
|
269
|
-
(targetNormalizedAngle - currentNormalizedAngle + 360) % 360;
|
|
270
|
-
|
|
271
|
-
// Number of full spins (e.g., 3 to 5)
|
|
272
|
-
const numberOfFullSpins = 3 + Math.floor(Math.random() * 3); // 3, 4, or 5 spins
|
|
273
|
-
targetRotation = numberOfFullSpins * 360 + angleOffset;
|
|
274
|
-
|
|
275
|
-
// Ensure minimum rotation if already aligned (e.g. if angleOffset is 0)
|
|
276
|
-
if (targetRotation < 360) {
|
|
277
|
-
targetRotation += 360 * (3 + Math.floor(Math.random() * 3));
|
|
278
|
-
}
|
|
279
|
-
} else {
|
|
280
|
-
const randomSpins = 3 + Math.random() * 2;
|
|
281
|
-
const randomAngle = Math.random() * 360;
|
|
282
|
-
targetRotation = 360 * randomSpins + randomAngle;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
Animated.timing(rotateValue, {
|
|
286
|
-
toValue: rotationRef.current + targetRotation / 360,
|
|
287
|
-
duration: spinDuration,
|
|
288
|
-
easing: Easing.out(Easing.cubic),
|
|
289
|
-
useNativeDriver: true,
|
|
290
|
-
}).start(() => handleSpinEnd());
|
|
291
|
-
};
|
|
292
|
-
|
|
293
|
-
// Handle spin completion
|
|
294
|
-
const handleSpinEnd = () => {
|
|
295
|
-
setSpinning(false);
|
|
296
|
-
|
|
297
|
-
const normalizedAngle = (rotationRef.current * 360) % 360;
|
|
298
|
-
const winningIndex = Math.floor(
|
|
299
|
-
((normalizedAngle - 270) % 360) / anglePerItem
|
|
300
|
-
);
|
|
301
|
-
const adjustedIndex =
|
|
302
|
-
(wheelItems.length - 1 - winningIndex) % wheelItems.length;
|
|
303
|
-
|
|
304
|
-
const finalWinnerIndex =
|
|
305
|
-
adjustedIndex >= 0 ? adjustedIndex : wheelItems.length + adjustedIndex;
|
|
306
|
-
|
|
307
|
-
if (finalWinnerIndex >= 0 && finalWinnerIndex < wheelItems.length) {
|
|
308
|
-
const winningItem = wheelItems[finalWinnerIndex];
|
|
309
|
-
setWinner(winningItem);
|
|
310
|
-
onSpinEnd?.(winningItem);
|
|
311
|
-
} else if (wheelItems.length > 0) {
|
|
312
|
-
onSpinEnd?.(wheelItems[0]);
|
|
313
|
-
}
|
|
314
|
-
};
|
|
315
|
-
|
|
316
209
|
useEffect(() => {
|
|
317
210
|
if (!winner || !spinning) return;
|
|
318
211
|
|
|
@@ -324,9 +217,8 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
324
217
|
}, delay);
|
|
325
218
|
|
|
326
219
|
return () => clearTimeout(timeout);
|
|
327
|
-
}, [winner]);
|
|
220
|
+
}, [winner, spinning]);
|
|
328
221
|
|
|
329
|
-
// Animation interpolation for rotation
|
|
330
222
|
const rotate = rotateValue.interpolate({
|
|
331
223
|
inputRange: [0, 1],
|
|
332
224
|
outputRange: ["0deg", "360deg"],
|
|
@@ -337,7 +229,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
337
229
|
return (
|
|
338
230
|
<View style={[styles.container, containerStyle]}>
|
|
339
231
|
<View style={{ width: size, height: size }}>
|
|
340
|
-
{/* The wheel */}
|
|
341
232
|
<Animated.View
|
|
342
233
|
style={[
|
|
343
234
|
styles.wheelContainer,
|
|
@@ -351,7 +242,7 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
351
242
|
>
|
|
352
243
|
<Svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>
|
|
353
244
|
<G>
|
|
354
|
-
{wheelPaths.map(({ path, item, textX, textY, angle }
|
|
245
|
+
{wheelPaths.map(({ path, item, textX, textY, angle }) => {
|
|
355
246
|
return (
|
|
356
247
|
<React.Fragment key={item.id}>
|
|
357
248
|
<Path
|
|
@@ -361,8 +252,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
361
252
|
? colors[Math.floor(Math.random() * colors.length)]
|
|
362
253
|
: item.color
|
|
363
254
|
}
|
|
364
|
-
// stroke="#FA8072"
|
|
365
|
-
// strokeWidth={1}
|
|
366
255
|
/>
|
|
367
256
|
<SvgText
|
|
368
257
|
x={textX}
|
|
@@ -372,7 +261,7 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
372
261
|
fontWeight={(wheelTextStyle?.fontWeight as any) || "bold"}
|
|
373
262
|
textAnchor="middle"
|
|
374
263
|
alignmentBaseline="central"
|
|
375
|
-
transform={`rotate(${angle + 180}, ${textX}, ${textY}
|
|
264
|
+
transform={`rotate(${angle + 180}, ${textX}, ${textY})`}
|
|
376
265
|
>
|
|
377
266
|
{item.label}
|
|
378
267
|
</SvgText>
|
|
@@ -394,14 +283,12 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
394
283
|
</Svg>
|
|
395
284
|
</Animated.View>
|
|
396
285
|
|
|
397
|
-
{/* The center circle */}
|
|
398
286
|
{centerComponent ? (
|
|
399
287
|
<View
|
|
400
288
|
style={{
|
|
401
289
|
position: "absolute",
|
|
402
290
|
top: "50%",
|
|
403
291
|
left: "50%",
|
|
404
|
-
// Center the component perfectly
|
|
405
292
|
transform: [
|
|
406
293
|
{ translateX: -(actualCenterSize / 2) },
|
|
407
294
|
{ translateY: -(actualCenterSize / 2) },
|
|
@@ -429,7 +316,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
429
316
|
/>
|
|
430
317
|
)}
|
|
431
318
|
|
|
432
|
-
{/* The pointer is a triangle on top */}
|
|
433
319
|
<View
|
|
434
320
|
style={[
|
|
435
321
|
styles.pointerPosition,
|
|
@@ -445,7 +331,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
445
331
|
/>
|
|
446
332
|
</View>
|
|
447
333
|
|
|
448
|
-
{/* Action Button */}
|
|
449
334
|
<View
|
|
450
335
|
style={{
|
|
451
336
|
position: "absolute",
|
|
@@ -464,15 +349,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
464
349
|
textStyle={[styles.actionButtonText, actionButtonTextStyle]}
|
|
465
350
|
{...actionButtonProps}
|
|
466
351
|
/>
|
|
467
|
-
{/* <TouchableOpacity
|
|
468
|
-
onPress={handleSpin}
|
|
469
|
-
disabled={spinning || !enabled || wheelItems.length === 0}
|
|
470
|
-
style={[styles.actionButton, actionButtonStyle]}
|
|
471
|
-
>
|
|
472
|
-
<Text style={[styles.actionButtonText, actionButtonTextStyle]}>
|
|
473
|
-
{spinButtonText}
|
|
474
|
-
</Text>
|
|
475
|
-
</TouchableOpacity> */}
|
|
476
352
|
</View>
|
|
477
353
|
</View>
|
|
478
354
|
</View>
|
|
@@ -484,7 +360,7 @@ const styles = StyleSheet.create({
|
|
|
484
360
|
alignItems: "center",
|
|
485
361
|
justifyContent: "center",
|
|
486
362
|
marginTop: 20,
|
|
487
|
-
marginBottom: 70,
|
|
363
|
+
marginBottom: 70,
|
|
488
364
|
},
|
|
489
365
|
wheelContainer: {
|
|
490
366
|
overflow: "hidden",
|