related-ui-components 1.8.4 → 1.8.6

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.
@@ -10,57 +10,7 @@ var _reactNativeSvg = require("react-native-svg");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
- //default random colors
14
- const colors = ["#FF0000",
15
- // Red
16
- "#FFA500",
17
- // Orange
18
- "#FFFF00",
19
- // Yellow
20
- "#008000",
21
- // Green
22
- "#0000FF",
23
- // Blue
24
- "#800080",
25
- // Purple
26
- "#FFC0CB",
27
- // Pink
28
- "#00FFFF",
29
- // Cyan
30
- "#FF00FF",
31
- // Magenta
32
- "#00FF00",
33
- // Lime
34
- "#4B0082",
35
- // Indigo
36
- "#EE82EE",
37
- // Violet
38
- "#40E0D0",
39
- // Turquoise
40
- "#FFD700",
41
- // Gold
42
- "#C0C0C0",
43
- // Silver
44
- "#FFDAB9",
45
- // Peach
46
- "#E6E6FA",
47
- // Lavender
48
- "#008080",
49
- // Teal
50
- "#FF7F50",
51
- // Coral
52
- "#DC143C",
53
- // Crimson
54
- "#87CEEB",
55
- // Sky Blue
56
- "#7FFF00",
57
- // Chartreuse
58
- "#CCCCFF",
59
- // Periwinkle
60
- "#FF6347",
61
- // Tomato
62
- "#FA8072" // Salmon
63
- ];
13
+ 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"];
64
14
  const SpinWheel = ({
65
15
  items,
66
16
  size = 300,
@@ -76,17 +26,14 @@ const SpinWheel = ({
76
26
  knobColor = "#D81E5B",
77
27
  actionButtonStyle,
78
28
  actionButtonTextStyle,
79
- wheelTextColor = "#FFFFFF"
29
+ wheelTextColor = "#FFFFFF",
30
+ winner
80
31
  }) => {
81
32
  const wheelItems = items.length > 0 ? items : [];
82
33
  const [spinning, setSpinning] = (0, _react.useState)(false);
83
- const [_, setWinner] = (0, _react.useState)(null);
34
+ const [internalWinner, setInternalWinner] = (0, _react.useState)(null);
84
35
  const rotateValue = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
85
-
86
- // Track rotation manually for calculations
87
36
  const rotationRef = (0, _react.useRef)(0);
88
-
89
- // Update tracked rotation when animation completes
90
37
  (0, _react.useEffect)(() => {
91
38
  const listener = rotateValue.addListener(({
92
39
  value
@@ -97,17 +44,13 @@ const SpinWheel = ({
97
44
  rotateValue.removeListener(listener);
98
45
  };
99
46
  }, [rotateValue]);
100
-
101
- // Calculate angle for each segment
102
47
  const anglePerItem = 360 / wheelItems.length;
103
48
 
104
- // Create wheel segments
49
+ // Generate wheel paths and text positions
105
50
  const generateWheelPaths = () => {
106
51
  return wheelItems.map((item, index) => {
107
52
  const startAngle = index * anglePerItem;
108
53
  const endAngle = (index + 1) * anglePerItem;
109
-
110
- // Calculate path for segment
111
54
  const startRad = startAngle * Math.PI / 180;
112
55
  const endRad = endAngle * Math.PI / 180;
113
56
  const x1 = size / 2 + size / 2 * Math.cos(startRad);
@@ -116,56 +59,67 @@ const SpinWheel = ({
116
59
  const y2 = size / 2 + size / 2 * Math.sin(endRad);
117
60
  const largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
118
61
  const pathData = [`M ${size / 2} ${size / 2}`, `L ${x1} ${y1}`, `A ${size / 2} ${size / 2} 0 ${largeArcFlag} 1 ${x2} ${y2}`, "Z"].join(" ");
119
-
120
- // Calculate coordinates for text and decoration
121
62
  const midRad = (startAngle + endAngle) / 2 * (Math.PI / 180);
122
63
  const textX = size / 2 + size * 0.32 * Math.cos(midRad);
123
64
  const textY = size / 2 + size * 0.32 * Math.sin(midRad);
124
- const decorationX = size / 2 + size * 0.43 * Math.cos(midRad);
125
- const decorationY = size / 2 + size * 0.43 * Math.sin(midRad);
126
65
  return {
127
66
  path: pathData,
128
67
  item,
129
68
  textX,
130
69
  textY,
131
- decorationX,
132
- decorationY,
133
70
  angle: (startAngle + endAngle) / 2
134
71
  };
135
72
  });
136
73
  };
137
74
  const wheelPaths = generateWheelPaths();
138
75
 
139
- // Handle spin button press
140
- const handleSpin = () => {
141
- if (spinning || !enabled) return;
76
+ // Helper: get index of a SpinWheelItem
77
+ const getItemIndex = target => wheelItems.findIndex(item => item.id === target.id);
78
+
79
+ // Helper: spin to a given index
80
+ const spinToIndex = (targetIndex, callbackItem) => {
142
81
  setSpinning(true);
143
82
  onSpinStart?.();
144
83
 
145
- // Random number of spins (3-5 full rotations) plus random angle
146
- const randomSpins = 3 + Math.random() * 2;
147
- const randomAngle = Math.random() * 360;
148
- const targetRotation = 360 * randomSpins + randomAngle;
84
+ // The pointer is at 270deg (top), so we want the winner to land there.
85
+ // The center of the segment is at: (index + 0.5) * anglePerItem
86
+ const winnerAngle = 360 - ((targetIndex + 0.5) * anglePerItem - 270);
87
+
88
+ // Add extra spins for effect
89
+ const extraSpins = 3;
90
+ const currentRotation = rotationRef.current * 360;
91
+ const targetRotation = currentRotation + extraSpins * 360 + winnerAngle;
149
92
  _reactNative.Animated.timing(rotateValue, {
150
- toValue: rotationRef.current + targetRotation / 360,
93
+ toValue: targetRotation / 360,
151
94
  duration: spinDuration,
152
95
  easing: _reactNative.Easing.out(_reactNative.Easing.cubic),
153
96
  useNativeDriver: true
154
- }).start(() => handleSpinEnd());
97
+ }).start(() => {
98
+ setSpinning(false);
99
+ setInternalWinner(callbackItem);
100
+ onSpinEnd?.(callbackItem);
101
+ });
155
102
  };
156
103
 
157
- // Handle spin completion
158
- const handleSpinEnd = () => {
159
- setSpinning(false);
104
+ // If winner prop changes, spin to it
105
+ (0, _react.useEffect)(() => {
106
+ if (!winner || spinning) return;
107
+ const winnerIndex = getItemIndex(winner);
108
+ if (winnerIndex === -1) return;
109
+ spinToIndex(winnerIndex, winner);
110
+ // eslint-disable-next-line react-hooks/exhaustive-deps
111
+ }, [winner]);
112
+
113
+ // Handle random spin (if no winner is set)
114
+ const handleSpin = () => {
115
+ if (spinning || !enabled) return;
116
+ // If winner prop is set, ignore button (or you can allow override)
117
+ if (winner) return;
160
118
 
161
- // Calculate winning segment based on final rotation with pointer at 270 degrees
162
- const normalizedAngle = rotationRef.current * 360 % 360;
163
- // Adjust calculation to account for pointer at 270 degrees (instead of 0)
164
- const winningIndex = Math.floor((normalizedAngle - 270) % 360 / anglePerItem);
165
- const adjustedIndex = (wheelItems.length - 1 - winningIndex) % wheelItems.length;
166
- const winningItem = wheelItems[adjustedIndex >= 0 ? adjustedIndex : wheelItems.length + adjustedIndex];
167
- setWinner(winningItem);
168
- onSpinEnd?.(winningItem);
119
+ // Pick a random winner
120
+ const randomIndex = Math.floor(Math.random() * wheelItems.length);
121
+ const randomWinner = wheelItems[randomIndex];
122
+ spinToIndex(randomIndex, randomWinner);
169
123
  };
170
124
 
171
125
  // Animation interpolation for rotation
@@ -199,29 +153,25 @@ const SpinWheel = ({
199
153
  item,
200
154
  textX,
201
155
  textY,
202
- decorationX,
203
- decorationY,
204
156
  angle
205
- }, index) => {
206
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, {
207
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
208
- d: path,
209
- fill: item.color == "" || null ? colors[Math.floor(Math.random() * colors.length)] : item.color,
210
- stroke: "#000000",
211
- strokeWidth: 1
212
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Text, {
213
- x: textX,
214
- y: textY,
215
- fill: item.textColor || wheelTextColor,
216
- fontSize: wheelTextStyle?.fontSize || 14,
217
- fontWeight: wheelTextStyle?.fontWeight || "bold",
218
- textAnchor: "middle",
219
- alignmentBaseline: "central",
220
- transform: `rotate(${angle + 180}, ${textX}, ${textY} )`,
221
- children: item.label
222
- })]
223
- }, item.id);
224
- })
157
+ }, index) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, {
158
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
159
+ d: path,
160
+ fill: !item.color ? colors[index % colors.length] : item.color,
161
+ stroke: "#000000",
162
+ strokeWidth: 1
163
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Text, {
164
+ x: textX,
165
+ y: textY,
166
+ fill: item.textColor || wheelTextColor,
167
+ fontSize: wheelTextStyle?.fontSize || 14,
168
+ fontWeight: wheelTextStyle?.fontWeight || "bold",
169
+ textAnchor: "middle",
170
+ alignmentBaseline: "central",
171
+ transform: `rotate(${angle + 180}, ${textX}, ${textY})`,
172
+ children: item.label
173
+ })]
174
+ }, item.id))
225
175
  })
226
176
  })
227
177
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
@@ -253,7 +203,7 @@ const SpinWheel = ({
253
203
  },
254
204
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
255
205
  onPress: handleSpin,
256
- disabled: spinning || !enabled,
206
+ disabled: spinning || !enabled || !!winner,
257
207
  style: [styles.actionButton, actionButtonStyle],
258
208
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
259
209
  style: [styles.actionButtonText, actionButtonTextStyle],
@@ -269,7 +219,7 @@ const styles = _reactNative.StyleSheet.create({
269
219
  alignItems: "center",
270
220
  justifyContent: "center",
271
221
  marginTop: 20,
272
- marginBottom: 70 // Space for the button
222
+ marginBottom: 70
273
223
  },
274
224
  wheelContainer: {
275
225
  overflow: "hidden",
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","colors","SpinWheel","items","size","spinDuration","enabled","onSpinStart","onSpinEnd","containerStyle","centerStyle","spinButtonText","wheelTextStyle","knobStyle","knobColor","actionButtonStyle","actionButtonTextStyle","wheelTextColor","wheelItems","length","spinning","setSpinning","useState","_","setWinner","rotateValue","useRef","Animated","Value","current","rotationRef","useEffect","listener","addListener","value","removeListener","anglePerItem","generateWheelPaths","map","item","index","startAngle","endAngle","startRad","Math","PI","endRad","x1","cos","y1","sin","x2","y2","largeArcFlag","pathData","join","midRad","textX","textY","decorationX","decorationY","path","angle","wheelPaths","handleSpin","randomSpins","random","randomAngle","targetRotation","timing","toValue","duration","easing","Easing","out","cubic","useNativeDriver","start","handleSpinEnd","normalizedAngle","winningIndex","floor","adjustedIndex","winningItem","rotate","interpolate","inputRange","outputRange","jsx","View","style","styles","container","children","jsxs","width","height","wheelContainer","borderRadius","transform","Svg","viewBox","G","Fragment","Path","d","fill","color","stroke","strokeWidth","Text","x","y","textColor","fontSize","fontWeight","textAnchor","alignmentBaseline","label","id","wheelCenter","translateX","translateY","pointerPosition","pointer","borderBottomColor","position","alignItems","justifyContent","bottom","zIndex","TouchableOpacity","onPress","disabled","actionButton","actionButtonText","StyleSheet","create","marginTop","marginBottom","overflow","backgroundColor","top","left","borderWidth","borderColor","borderStyle","borderLeftWidth","borderRightWidth","borderBottomWidth","borderLeftColor","borderRightColor","paddingHorizontal","paddingVertical","shadowColor","shadowRadius","_default","exports"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Wheel/Wheel.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","colors","SpinWheel","items","size","spinDuration","enabled","onSpinStart","onSpinEnd","containerStyle","centerStyle","spinButtonText","wheelTextStyle","knobStyle","knobColor","actionButtonStyle","actionButtonTextStyle","wheelTextColor","winner","wheelItems","length","spinning","setSpinning","useState","internalWinner","setInternalWinner","rotateValue","useRef","Animated","Value","current","rotationRef","useEffect","listener","addListener","value","removeListener","anglePerItem","generateWheelPaths","map","item","index","startAngle","endAngle","startRad","Math","PI","endRad","x1","cos","y1","sin","x2","y2","largeArcFlag","pathData","join","midRad","textX","textY","path","angle","wheelPaths","getItemIndex","target","findIndex","id","spinToIndex","targetIndex","callbackItem","winnerAngle","extraSpins","currentRotation","targetRotation","timing","toValue","duration","easing","Easing","out","cubic","useNativeDriver","start","winnerIndex","handleSpin","randomIndex","floor","random","randomWinner","rotate","interpolate","inputRange","outputRange","jsx","View","style","styles","container","children","jsxs","width","height","wheelContainer","borderRadius","transform","Svg","viewBox","G","Fragment","Path","d","fill","color","stroke","strokeWidth","Text","x","y","textColor","fontSize","fontWeight","textAnchor","alignmentBaseline","label","wheelCenter","translateX","translateY","pointerPosition","pointer","borderBottomColor","position","alignItems","justifyContent","bottom","zIndex","TouchableOpacity","onPress","disabled","actionButton","actionButtonText","StyleSheet","create","marginTop","marginBottom","overflow","backgroundColor","top","left","borderWidth","borderColor","borderStyle","borderLeftWidth","borderRightWidth","borderBottomWidth","borderLeftColor","borderRightColor","paddingHorizontal","paddingVertical","shadowColor","shadowRadius","_default","exports"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Wheel/Wheel.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,57 +4,7 @@ import React, { useState, useRef, useEffect } from "react";
4
4
  import { View, StyleSheet, Animated, Text, TouchableOpacity, Easing } from "react-native";
5
5
  import { Svg, Path, G, Text as SvgText } from "react-native-svg";
6
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
- //default random colors
8
- const colors = ["#FF0000",
9
- // Red
10
- "#FFA500",
11
- // Orange
12
- "#FFFF00",
13
- // Yellow
14
- "#008000",
15
- // Green
16
- "#0000FF",
17
- // Blue
18
- "#800080",
19
- // Purple
20
- "#FFC0CB",
21
- // Pink
22
- "#00FFFF",
23
- // Cyan
24
- "#FF00FF",
25
- // Magenta
26
- "#00FF00",
27
- // Lime
28
- "#4B0082",
29
- // Indigo
30
- "#EE82EE",
31
- // Violet
32
- "#40E0D0",
33
- // Turquoise
34
- "#FFD700",
35
- // Gold
36
- "#C0C0C0",
37
- // Silver
38
- "#FFDAB9",
39
- // Peach
40
- "#E6E6FA",
41
- // Lavender
42
- "#008080",
43
- // Teal
44
- "#FF7F50",
45
- // Coral
46
- "#DC143C",
47
- // Crimson
48
- "#87CEEB",
49
- // Sky Blue
50
- "#7FFF00",
51
- // Chartreuse
52
- "#CCCCFF",
53
- // Periwinkle
54
- "#FF6347",
55
- // Tomato
56
- "#FA8072" // Salmon
57
- ];
7
+ 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"];
58
8
  const SpinWheel = ({
59
9
  items,
60
10
  size = 300,
@@ -70,17 +20,14 @@ const SpinWheel = ({
70
20
  knobColor = "#D81E5B",
71
21
  actionButtonStyle,
72
22
  actionButtonTextStyle,
73
- wheelTextColor = "#FFFFFF"
23
+ wheelTextColor = "#FFFFFF",
24
+ winner
74
25
  }) => {
75
26
  const wheelItems = items.length > 0 ? items : [];
76
27
  const [spinning, setSpinning] = useState(false);
77
- const [_, setWinner] = useState(null);
28
+ const [internalWinner, setInternalWinner] = useState(null);
78
29
  const rotateValue = useRef(new Animated.Value(0)).current;
79
-
80
- // Track rotation manually for calculations
81
30
  const rotationRef = useRef(0);
82
-
83
- // Update tracked rotation when animation completes
84
31
  useEffect(() => {
85
32
  const listener = rotateValue.addListener(({
86
33
  value
@@ -91,17 +38,13 @@ const SpinWheel = ({
91
38
  rotateValue.removeListener(listener);
92
39
  };
93
40
  }, [rotateValue]);
94
-
95
- // Calculate angle for each segment
96
41
  const anglePerItem = 360 / wheelItems.length;
97
42
 
98
- // Create wheel segments
43
+ // Generate wheel paths and text positions
99
44
  const generateWheelPaths = () => {
100
45
  return wheelItems.map((item, index) => {
101
46
  const startAngle = index * anglePerItem;
102
47
  const endAngle = (index + 1) * anglePerItem;
103
-
104
- // Calculate path for segment
105
48
  const startRad = startAngle * Math.PI / 180;
106
49
  const endRad = endAngle * Math.PI / 180;
107
50
  const x1 = size / 2 + size / 2 * Math.cos(startRad);
@@ -110,56 +53,67 @@ const SpinWheel = ({
110
53
  const y2 = size / 2 + size / 2 * Math.sin(endRad);
111
54
  const largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
112
55
  const pathData = [`M ${size / 2} ${size / 2}`, `L ${x1} ${y1}`, `A ${size / 2} ${size / 2} 0 ${largeArcFlag} 1 ${x2} ${y2}`, "Z"].join(" ");
113
-
114
- // Calculate coordinates for text and decoration
115
56
  const midRad = (startAngle + endAngle) / 2 * (Math.PI / 180);
116
57
  const textX = size / 2 + size * 0.32 * Math.cos(midRad);
117
58
  const textY = size / 2 + size * 0.32 * Math.sin(midRad);
118
- const decorationX = size / 2 + size * 0.43 * Math.cos(midRad);
119
- const decorationY = size / 2 + size * 0.43 * Math.sin(midRad);
120
59
  return {
121
60
  path: pathData,
122
61
  item,
123
62
  textX,
124
63
  textY,
125
- decorationX,
126
- decorationY,
127
64
  angle: (startAngle + endAngle) / 2
128
65
  };
129
66
  });
130
67
  };
131
68
  const wheelPaths = generateWheelPaths();
132
69
 
133
- // Handle spin button press
134
- const handleSpin = () => {
135
- if (spinning || !enabled) return;
70
+ // Helper: get index of a SpinWheelItem
71
+ const getItemIndex = target => wheelItems.findIndex(item => item.id === target.id);
72
+
73
+ // Helper: spin to a given index
74
+ const spinToIndex = (targetIndex, callbackItem) => {
136
75
  setSpinning(true);
137
76
  onSpinStart?.();
138
77
 
139
- // Random number of spins (3-5 full rotations) plus random angle
140
- const randomSpins = 3 + Math.random() * 2;
141
- const randomAngle = Math.random() * 360;
142
- const targetRotation = 360 * randomSpins + randomAngle;
78
+ // The pointer is at 270deg (top), so we want the winner to land there.
79
+ // The center of the segment is at: (index + 0.5) * anglePerItem
80
+ const winnerAngle = 360 - ((targetIndex + 0.5) * anglePerItem - 270);
81
+
82
+ // Add extra spins for effect
83
+ const extraSpins = 3;
84
+ const currentRotation = rotationRef.current * 360;
85
+ const targetRotation = currentRotation + extraSpins * 360 + winnerAngle;
143
86
  Animated.timing(rotateValue, {
144
- toValue: rotationRef.current + targetRotation / 360,
87
+ toValue: targetRotation / 360,
145
88
  duration: spinDuration,
146
89
  easing: Easing.out(Easing.cubic),
147
90
  useNativeDriver: true
148
- }).start(() => handleSpinEnd());
91
+ }).start(() => {
92
+ setSpinning(false);
93
+ setInternalWinner(callbackItem);
94
+ onSpinEnd?.(callbackItem);
95
+ });
149
96
  };
150
97
 
151
- // Handle spin completion
152
- const handleSpinEnd = () => {
153
- setSpinning(false);
98
+ // If winner prop changes, spin to it
99
+ useEffect(() => {
100
+ if (!winner || spinning) return;
101
+ const winnerIndex = getItemIndex(winner);
102
+ if (winnerIndex === -1) return;
103
+ spinToIndex(winnerIndex, winner);
104
+ // eslint-disable-next-line react-hooks/exhaustive-deps
105
+ }, [winner]);
106
+
107
+ // Handle random spin (if no winner is set)
108
+ const handleSpin = () => {
109
+ if (spinning || !enabled) return;
110
+ // If winner prop is set, ignore button (or you can allow override)
111
+ if (winner) return;
154
112
 
155
- // Calculate winning segment based on final rotation with pointer at 270 degrees
156
- const normalizedAngle = rotationRef.current * 360 % 360;
157
- // Adjust calculation to account for pointer at 270 degrees (instead of 0)
158
- const winningIndex = Math.floor((normalizedAngle - 270) % 360 / anglePerItem);
159
- const adjustedIndex = (wheelItems.length - 1 - winningIndex) % wheelItems.length;
160
- const winningItem = wheelItems[adjustedIndex >= 0 ? adjustedIndex : wheelItems.length + adjustedIndex];
161
- setWinner(winningItem);
162
- onSpinEnd?.(winningItem);
113
+ // Pick a random winner
114
+ const randomIndex = Math.floor(Math.random() * wheelItems.length);
115
+ const randomWinner = wheelItems[randomIndex];
116
+ spinToIndex(randomIndex, randomWinner);
163
117
  };
164
118
 
165
119
  // Animation interpolation for rotation
@@ -193,29 +147,25 @@ const SpinWheel = ({
193
147
  item,
194
148
  textX,
195
149
  textY,
196
- decorationX,
197
- decorationY,
198
150
  angle
199
- }, index) => {
200
- return /*#__PURE__*/_jsxs(React.Fragment, {
201
- children: [/*#__PURE__*/_jsx(Path, {
202
- d: path,
203
- fill: item.color == "" || null ? colors[Math.floor(Math.random() * colors.length)] : item.color,
204
- stroke: "#000000",
205
- strokeWidth: 1
206
- }), /*#__PURE__*/_jsx(SvgText, {
207
- x: textX,
208
- y: textY,
209
- fill: item.textColor || wheelTextColor,
210
- fontSize: wheelTextStyle?.fontSize || 14,
211
- fontWeight: wheelTextStyle?.fontWeight || "bold",
212
- textAnchor: "middle",
213
- alignmentBaseline: "central",
214
- transform: `rotate(${angle + 180}, ${textX}, ${textY} )`,
215
- children: item.label
216
- })]
217
- }, item.id);
218
- })
151
+ }, index) => /*#__PURE__*/_jsxs(React.Fragment, {
152
+ children: [/*#__PURE__*/_jsx(Path, {
153
+ d: path,
154
+ fill: !item.color ? colors[index % colors.length] : item.color,
155
+ stroke: "#000000",
156
+ strokeWidth: 1
157
+ }), /*#__PURE__*/_jsx(SvgText, {
158
+ x: textX,
159
+ y: textY,
160
+ fill: item.textColor || wheelTextColor,
161
+ fontSize: wheelTextStyle?.fontSize || 14,
162
+ fontWeight: wheelTextStyle?.fontWeight || "bold",
163
+ textAnchor: "middle",
164
+ alignmentBaseline: "central",
165
+ transform: `rotate(${angle + 180}, ${textX}, ${textY})`,
166
+ children: item.label
167
+ })]
168
+ }, item.id))
219
169
  })
220
170
  })
221
171
  }), /*#__PURE__*/_jsx(View, {
@@ -247,7 +197,7 @@ const SpinWheel = ({
247
197
  },
248
198
  children: /*#__PURE__*/_jsx(TouchableOpacity, {
249
199
  onPress: handleSpin,
250
- disabled: spinning || !enabled,
200
+ disabled: spinning || !enabled || !!winner,
251
201
  style: [styles.actionButton, actionButtonStyle],
252
202
  children: /*#__PURE__*/_jsx(Text, {
253
203
  style: [styles.actionButtonText, actionButtonTextStyle],
@@ -263,7 +213,7 @@ const styles = StyleSheet.create({
263
213
  alignItems: "center",
264
214
  justifyContent: "center",
265
215
  marginTop: 20,
266
- marginBottom: 70 // Space for the button
216
+ marginBottom: 70
267
217
  },
268
218
  wheelContainer: {
269
219
  overflow: "hidden",
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useRef","useEffect","View","StyleSheet","Animated","Text","TouchableOpacity","Easing","Svg","Path","G","SvgText","jsx","_jsx","jsxs","_jsxs","colors","SpinWheel","items","size","spinDuration","enabled","onSpinStart","onSpinEnd","containerStyle","centerStyle","spinButtonText","wheelTextStyle","knobStyle","knobColor","actionButtonStyle","actionButtonTextStyle","wheelTextColor","wheelItems","length","spinning","setSpinning","_","setWinner","rotateValue","Value","current","rotationRef","listener","addListener","value","removeListener","anglePerItem","generateWheelPaths","map","item","index","startAngle","endAngle","startRad","Math","PI","endRad","x1","cos","y1","sin","x2","y2","largeArcFlag","pathData","join","midRad","textX","textY","decorationX","decorationY","path","angle","wheelPaths","handleSpin","randomSpins","random","randomAngle","targetRotation","timing","toValue","duration","easing","out","cubic","useNativeDriver","start","handleSpinEnd","normalizedAngle","winningIndex","floor","adjustedIndex","winningItem","rotate","interpolate","inputRange","outputRange","style","styles","container","children","width","height","wheelContainer","borderRadius","transform","viewBox","Fragment","d","fill","color","stroke","strokeWidth","x","y","textColor","fontSize","fontWeight","textAnchor","alignmentBaseline","label","id","wheelCenter","translateX","translateY","pointerPosition","pointer","borderBottomColor","position","alignItems","justifyContent","bottom","zIndex","onPress","disabled","actionButton","actionButtonText","create","marginTop","marginBottom","overflow","backgroundColor","top","left","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","Text","TouchableOpacity","Easing","Svg","Path","G","SvgText","jsx","_jsx","jsxs","_jsxs","colors","SpinWheel","items","size","spinDuration","enabled","onSpinStart","onSpinEnd","containerStyle","centerStyle","spinButtonText","wheelTextStyle","knobStyle","knobColor","actionButtonStyle","actionButtonTextStyle","wheelTextColor","winner","wheelItems","length","spinning","setSpinning","internalWinner","setInternalWinner","rotateValue","Value","current","rotationRef","listener","addListener","value","removeListener","anglePerItem","generateWheelPaths","map","item","index","startAngle","endAngle","startRad","Math","PI","endRad","x1","cos","y1","sin","x2","y2","largeArcFlag","pathData","join","midRad","textX","textY","path","angle","wheelPaths","getItemIndex","target","findIndex","id","spinToIndex","targetIndex","callbackItem","winnerAngle","extraSpins","currentRotation","targetRotation","timing","toValue","duration","easing","out","cubic","useNativeDriver","start","winnerIndex","handleSpin","randomIndex","floor","random","randomWinner","rotate","interpolate","inputRange","outputRange","style","styles","container","children","width","height","wheelContainer","borderRadius","transform","viewBox","Fragment","d","fill","color","stroke","strokeWidth","x","y","textColor","fontSize","fontWeight","textAnchor","alignmentBaseline","label","wheelCenter","translateX","translateY","pointerPosition","pointer","borderBottomColor","position","alignItems","justifyContent","bottom","zIndex","onPress","disabled","actionButton","actionButtonText","create","marginTop","marginBottom","overflow","backgroundColor","top","left","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":[]}
@@ -11,7 +11,6 @@ interface SpinWheelProps {
11
11
  items: SpinWheelItem[];
12
12
  size?: number;
13
13
  spinDuration?: number;
14
- friction?: number;
15
14
  enabled?: boolean;
16
15
  onSpinStart?: () => void;
17
16
  onSpinEnd?: (item: SpinWheelItem) => void;
@@ -22,10 +21,10 @@ interface SpinWheelProps {
22
21
  knobStyle?: ViewStyle;
23
22
  actionButtonStyle?: ViewStyle;
24
23
  actionButtonTextStyle?: TextStyle;
25
- wheelBorderColor?: string;
26
24
  wheelTextColor?: string;
27
25
  knobColor?: string;
28
26
  centerComponent?: React.ReactNode;
27
+ winner?: SpinWheelItem | null;
29
28
  }
30
29
  declare const SpinWheel: React.FC<SpinWheelProps>;
31
30
  export default SpinWheel;
@@ -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;AAGtB,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;AA+BD,UAAU,cAAc;IAEtB,KAAK,EAAE,aAAa,EAAE,CAAC;IAGvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAG1C,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;IAGlC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyOvC,CAAC;AAsDF,eAAe,SAAS,CAAC"}
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;AAGtB,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;AASD,UAAU,cAAc;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,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,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqOvC,CAAC;AAsDF,eAAe,SAAS,CAAC"}
@@ -11,7 +11,6 @@ interface SpinWheelProps {
11
11
  items: SpinWheelItem[];
12
12
  size?: number;
13
13
  spinDuration?: number;
14
- friction?: number;
15
14
  enabled?: boolean;
16
15
  onSpinStart?: () => void;
17
16
  onSpinEnd?: (item: SpinWheelItem) => void;
@@ -22,10 +21,10 @@ interface SpinWheelProps {
22
21
  knobStyle?: ViewStyle;
23
22
  actionButtonStyle?: ViewStyle;
24
23
  actionButtonTextStyle?: TextStyle;
25
- wheelBorderColor?: string;
26
24
  wheelTextColor?: string;
27
25
  knobColor?: string;
28
26
  centerComponent?: React.ReactNode;
27
+ winner?: SpinWheelItem | null;
29
28
  }
30
29
  declare const SpinWheel: React.FC<SpinWheelProps>;
31
30
  export default SpinWheel;
@@ -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;AAGtB,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;AA+BD,UAAU,cAAc;IAEtB,KAAK,EAAE,aAAa,EAAE,CAAC;IAGvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAG1C,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;IAGlC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyOvC,CAAC;AAsDF,eAAe,SAAS,CAAC"}
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;AAGtB,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;AASD,UAAU,cAAc;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,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,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqOvC,CAAC;AAsDF,eAAe,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "related-ui-components",
3
3
  "main": "./src/index.ts",
4
- "version": "1.8.4",
4
+ "version": "1.8.6",
5
5
  "scripts": {
6
6
  "start": "expo start",
7
7
  "reset-project": "node ./scripts/reset-project.js",
@@ -19,52 +19,20 @@ export interface SpinWheelItem {
19
19
  textColor?: string;
20
20
  }
21
21
 
22
- //default random colors
23
22
  const colors = [
24
- "#FF0000", // Red
25
- "#FFA500", // Orange
26
- "#FFFF00", // Yellow
27
- "#008000", // Green
28
- "#0000FF", // Blue
29
- "#800080", // Purple
30
- "#FFC0CB", // Pink
31
- "#00FFFF", // Cyan
32
- "#FF00FF", // Magenta
33
- "#00FF00", // Lime
34
- "#4B0082", // Indigo
35
- "#EE82EE", // Violet
36
- "#40E0D0", // Turquoise
37
- "#FFD700", // Gold
38
- "#C0C0C0", // Silver
39
- "#FFDAB9", // Peach
40
- "#E6E6FA", // Lavender
41
- "#008080", // Teal
42
- "#FF7F50", // Coral
43
- "#DC143C", // Crimson
44
- "#87CEEB", // Sky Blue
45
- "#7FFF00", // Chartreuse
46
- "#CCCCFF", // Periwinkle
47
- "#FF6347", // Tomato
48
- "#FA8072" // Salmon
23
+ "#FF0000", "#FFA500", "#FFFF00", "#008000", "#0000FF", "#800080",
24
+ "#FFC0CB", "#00FFFF", "#FF00FF", "#00FF00", "#4B0082", "#EE82EE",
25
+ "#40E0D0", "#FFD700", "#C0C0C0", "#FFDAB9", "#E6E6FA", "#008080",
26
+ "#FF7F50", "#DC143C", "#87CEEB", "#7FFF00", "#CCCCFF", "#FF6347", "#FA8072"
49
27
  ];
50
28
 
51
29
  interface SpinWheelProps {
52
- // Data
53
30
  items: SpinWheelItem[];
54
-
55
- // Dimensions
56
31
  size?: number;
57
-
58
- // Behavior
59
32
  spinDuration?: number;
60
- friction?: number;
61
33
  enabled?: boolean;
62
-
63
- // Events
64
34
  onSpinStart?: () => void;
65
35
  onSpinEnd?: (item: SpinWheelItem) => void;
66
-
67
- // Styling
68
36
  containerStyle?: ViewStyle;
69
37
  centerStyle?: ViewStyle;
70
38
  spinButtonText?: string;
@@ -72,14 +40,10 @@ interface SpinWheelProps {
72
40
  knobStyle?: ViewStyle;
73
41
  actionButtonStyle?: ViewStyle;
74
42
  actionButtonTextStyle?: TextStyle;
75
-
76
- // Custom colors
77
- wheelBorderColor?: string;
78
43
  wheelTextColor?: string;
79
44
  knobColor?: string;
80
-
81
- // Custom components
82
45
  centerComponent?: React.ReactNode;
46
+ winner?: SpinWheelItem | null; // Winner to spin to
83
47
  }
84
48
 
85
49
  const SpinWheel: React.FC<SpinWheelProps> = ({
@@ -98,69 +62,51 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
98
62
  actionButtonStyle,
99
63
  actionButtonTextStyle,
100
64
  wheelTextColor = "#FFFFFF",
65
+ winner,
101
66
  }) => {
102
67
  const wheelItems = items.length > 0 ? items : [];
103
-
104
68
  const [spinning, setSpinning] = useState(false);
105
- const [_, setWinner] = useState<SpinWheelItem | null>(null);
69
+ const [internalWinner, setInternalWinner] = useState<SpinWheelItem | null>(null);
106
70
  const rotateValue = useRef(new Animated.Value(0)).current;
107
-
108
- // Track rotation manually for calculations
109
71
  const rotationRef = useRef(0);
110
72
 
111
- // Update tracked rotation when animation completes
112
73
  useEffect(() => {
113
74
  const listener = rotateValue.addListener(({ value }) => {
114
75
  rotationRef.current = value;
115
76
  });
116
-
117
77
  return () => {
118
78
  rotateValue.removeListener(listener);
119
79
  };
120
80
  }, [rotateValue]);
121
81
 
122
- // Calculate angle for each segment
123
82
  const anglePerItem = 360 / wheelItems.length;
124
83
 
125
- // Create wheel segments
84
+ // Generate wheel paths and text positions
126
85
  const generateWheelPaths = () => {
127
86
  return wheelItems.map((item, index) => {
128
87
  const startAngle = index * anglePerItem;
129
88
  const endAngle = (index + 1) * anglePerItem;
130
-
131
- // Calculate path for segment
132
89
  const startRad = (startAngle * Math.PI) / 180;
133
90
  const endRad = (endAngle * Math.PI) / 180;
134
-
135
91
  const x1 = size / 2 + (size / 2) * Math.cos(startRad);
136
92
  const y1 = size / 2 + (size / 2) * Math.sin(startRad);
137
93
  const x2 = size / 2 + (size / 2) * Math.cos(endRad);
138
94
  const y2 = size / 2 + (size / 2) * Math.sin(endRad);
139
-
140
95
  const largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
141
-
142
96
  const pathData = [
143
97
  `M ${size / 2} ${size / 2}`,
144
98
  `L ${x1} ${y1}`,
145
99
  `A ${size / 2} ${size / 2} 0 ${largeArcFlag} 1 ${x2} ${y2}`,
146
100
  "Z",
147
101
  ].join(" ");
148
-
149
- // Calculate coordinates for text and decoration
150
102
  const midRad = ((startAngle + endAngle) / 2) * (Math.PI / 180);
151
103
  const textX = size / 2 + size * 0.32 * Math.cos(midRad);
152
104
  const textY = size / 2 + size * 0.32 * Math.sin(midRad);
153
-
154
- const decorationX = size / 2 + size * 0.43 * Math.cos(midRad);
155
- const decorationY = size / 2 + size * 0.43 * Math.sin(midRad);
156
-
157
105
  return {
158
106
  path: pathData,
159
107
  item,
160
108
  textX,
161
109
  textY,
162
- decorationX,
163
- decorationY,
164
110
  angle: (startAngle + endAngle) / 2,
165
111
  };
166
112
  });
@@ -168,45 +114,56 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
168
114
 
169
115
  const wheelPaths = generateWheelPaths();
170
116
 
171
- // Handle spin button press
172
- const handleSpin = () => {
173
- if (spinning || !enabled) return;
117
+ // Helper: get index of a SpinWheelItem
118
+ const getItemIndex = (target: SpinWheelItem) =>
119
+ wheelItems.findIndex((item) => item.id === target.id);
174
120
 
121
+ // Helper: spin to a given index
122
+ const spinToIndex = (targetIndex: number, callbackItem: SpinWheelItem) => {
175
123
  setSpinning(true);
176
124
  onSpinStart?.();
177
125
 
178
- // Random number of spins (3-5 full rotations) plus random angle
179
- const randomSpins = 3 + Math.random() * 2;
180
- const randomAngle = Math.random() * 360;
181
- const targetRotation = 360 * randomSpins + randomAngle;
126
+ // The pointer is at 270deg (top), so we want the winner to land there.
127
+ // The center of the segment is at: (index + 0.5) * anglePerItem
128
+ const winnerAngle =
129
+ 360 - ((targetIndex + 0.5) * anglePerItem - 270);
130
+
131
+ // Add extra spins for effect
132
+ const extraSpins = 3;
133
+ const currentRotation = rotationRef.current * 360;
134
+ const targetRotation = currentRotation + extraSpins * 360 + winnerAngle;
182
135
 
183
136
  Animated.timing(rotateValue, {
184
- toValue: rotationRef.current + targetRotation / 360,
137
+ toValue: targetRotation / 360,
185
138
  duration: spinDuration,
186
139
  easing: Easing.out(Easing.cubic),
187
140
  useNativeDriver: true,
188
- }).start(() => handleSpinEnd());
141
+ }).start(() => {
142
+ setSpinning(false);
143
+ setInternalWinner(callbackItem);
144
+ onSpinEnd?.(callbackItem);
145
+ });
189
146
  };
190
147
 
191
- // Handle spin completion
192
- const handleSpinEnd = () => {
193
- setSpinning(false);
194
-
195
- // Calculate winning segment based on final rotation with pointer at 270 degrees
196
- const normalizedAngle = (rotationRef.current * 360) % 360;
197
- // Adjust calculation to account for pointer at 270 degrees (instead of 0)
198
- const winningIndex = Math.floor(
199
- ((normalizedAngle - 270) % 360) / anglePerItem
200
- );
201
- const adjustedIndex =
202
- (wheelItems.length - 1 - winningIndex) % wheelItems.length;
203
- const winningItem =
204
- wheelItems[
205
- adjustedIndex >= 0 ? adjustedIndex : wheelItems.length + adjustedIndex
206
- ];
148
+ // If winner prop changes, spin to it
149
+ useEffect(() => {
150
+ if (!winner || spinning) return;
151
+ const winnerIndex = getItemIndex(winner);
152
+ if (winnerIndex === -1) return;
153
+ spinToIndex(winnerIndex, winner);
154
+ // eslint-disable-next-line react-hooks/exhaustive-deps
155
+ }, [winner]);
156
+
157
+ // Handle random spin (if no winner is set)
158
+ const handleSpin = () => {
159
+ if (spinning || !enabled) return;
160
+ // If winner prop is set, ignore button (or you can allow override)
161
+ if (winner) return;
207
162
 
208
- setWinner(winningItem);
209
- onSpinEnd?.(winningItem);
163
+ // Pick a random winner
164
+ const randomIndex = Math.floor(Math.random() * wheelItems.length);
165
+ const randomWinner = wheelItems[randomIndex];
166
+ spinToIndex(randomIndex, randomWinner);
210
167
  };
211
168
 
212
169
  // Animation interpolation for rotation
@@ -233,35 +190,32 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
233
190
  <Svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>
234
191
  <G>
235
192
  {wheelPaths.map(
236
- (
237
- { path, item, textX, textY, decorationX, decorationY, angle },
238
- index
239
- ) => {
240
- return (
241
- <React.Fragment key={item.id}>
242
- <Path
243
- d={path}
244
- fill={item.color == "" || null ? colors[Math.floor(Math.random() * colors.length)] : item.color}
245
- stroke="#000000"
246
- strokeWidth={1}
247
- />
248
-
249
- {/* Fixed text rendering */}
250
- <SvgText
251
- x={textX}
252
- y={textY}
253
- fill={item.textColor || wheelTextColor}
254
- fontSize={wheelTextStyle?.fontSize || 14}
255
- fontWeight={wheelTextStyle?.fontWeight || "bold"}
256
- textAnchor="middle"
257
- alignmentBaseline="central"
258
- transform={`rotate(${angle + 180}, ${textX}, ${textY} )`}
259
- >
260
- {item.label}
261
- </SvgText>
262
- </React.Fragment>
263
- );
264
- }
193
+ ({ path, item, textX, textY, angle }, index) => (
194
+ <React.Fragment key={item.id}>
195
+ <Path
196
+ d={path}
197
+ fill={
198
+ !item.color
199
+ ? colors[index % colors.length]
200
+ : item.color
201
+ }
202
+ stroke="#000000"
203
+ strokeWidth={1}
204
+ />
205
+ <SvgText
206
+ x={textX}
207
+ y={textY}
208
+ fill={item.textColor || wheelTextColor}
209
+ fontSize={wheelTextStyle?.fontSize || 14}
210
+ fontWeight={wheelTextStyle?.fontWeight || "bold"}
211
+ textAnchor="middle"
212
+ alignmentBaseline="central"
213
+ transform={`rotate(${angle + 180}, ${textX}, ${textY})`}
214
+ >
215
+ {item.label}
216
+ </SvgText>
217
+ </React.Fragment>
218
+ )
265
219
  )}
266
220
  </G>
267
221
  </Svg>
@@ -280,13 +234,21 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
280
234
  ],
281
235
  borderRadius: size / 5,
282
236
  },
283
- centerStyle
237
+ centerStyle,
284
238
  ]}
285
- />
239
+ >
240
+ {/** Optional: custom center component */}
241
+ </View>
286
242
 
287
243
  {/* The pointer is a triangle on top */}
288
244
  <View style={styles.pointerPosition}>
289
- <View style={[styles.pointer, { borderBottomColor: knobColor }, knobStyle]} />
245
+ <View
246
+ style={[
247
+ styles.pointer,
248
+ { borderBottomColor: knobColor },
249
+ knobStyle,
250
+ ]}
251
+ />
290
252
  </View>
291
253
 
292
254
  {/* Action Button */}
@@ -302,12 +264,10 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
302
264
  >
303
265
  <TouchableOpacity
304
266
  onPress={handleSpin}
305
- disabled={spinning || !enabled}
306
- style={[styles.actionButton, actionButtonStyle]}
267
+ disabled={spinning || !enabled || !!winner}
268
+ style={[styles.actionButton, actionButtonStyle]}
307
269
  >
308
- <Text
309
- style={[styles.actionButtonText, actionButtonTextStyle]}
310
- >
270
+ <Text style={[styles.actionButtonText, actionButtonTextStyle]}>
311
271
  {spinButtonText}
312
272
  </Text>
313
273
  </TouchableOpacity>
@@ -322,7 +282,7 @@ const styles = StyleSheet.create({
322
282
  alignItems: "center",
323
283
  justifyContent: "center",
324
284
  marginTop: 20,
325
- marginBottom: 70, // Space for the button
285
+ marginBottom: 70,
326
286
  },
327
287
  wheelContainer: {
328
288
  overflow: "hidden",
@@ -361,12 +321,12 @@ const styles = StyleSheet.create({
361
321
  borderRadius: 25,
362
322
  shadowColor: "#000",
363
323
  shadowRadius: 3,
364
- backgroundColor: "grey"
324
+ backgroundColor: "grey",
365
325
  },
366
326
  actionButtonText: {
367
327
  fontWeight: "bold",
368
328
  fontSize: 16,
369
- }
329
+ },
370
330
  });
371
331
 
372
332
  export default SpinWheel;