related-ui-components 4.1.2 → 4.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/components/Wheel/Wheel.js +47 -88
- package/lib/module/components/Wheel/Wheel.js.map +1 -1
- package/lib/module/contexts/UniversalModalProvider.js +2 -3
- package/lib/module/contexts/UniversalModalProvider.js.map +1 -1
- package/lib/typescript/src/components/Wheel/Wheel.d.ts +1 -11
- package/lib/typescript/src/components/Wheel/Wheel.d.ts.map +1 -1
- package/lib/typescript/src/contexts/UniversalModalProvider.d.ts +0 -1
- package/lib/typescript/src/contexts/UniversalModalProvider.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Wheel/Wheel.tsx +49 -116
- package/src/contexts/UniversalModalProvider.tsx +2 -3
|
@@ -1,90 +1,85 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { Button } from "../Button/index.js";
|
|
3
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { Animated, Easing, StyleSheet, View } from "react-native";
|
|
5
|
+
import { Circle, G, Path, Svg, Text as SvgText } from "react-native-svg";
|
|
7
6
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
-
//default random colors
|
|
9
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"];
|
|
10
|
-
//
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const EXTRA_SPINS = 3; // Number of extra full rotations before stopping
|
|
8
|
+
// Config for the single animation
|
|
9
|
+
const TOTAL_SPINS = 5; // How many full rotations before stopping
|
|
10
|
+
const SPIN_DURATION = 4000; // Total time for the one animation
|
|
14
11
|
|
|
15
12
|
const SpinWheel = ({
|
|
16
13
|
items,
|
|
17
14
|
size = 300,
|
|
18
15
|
winner,
|
|
19
|
-
minSpinDuration = 2000,
|
|
20
|
-
onSpinStart,
|
|
21
16
|
onSpinEnd,
|
|
22
17
|
containerStyle,
|
|
23
18
|
centerStyle,
|
|
24
|
-
spinButtonText = "Spin",
|
|
25
19
|
wheelTextStyle,
|
|
26
20
|
knobStyle,
|
|
27
21
|
knobColor = "#D81E5B",
|
|
28
|
-
actionButtonStyle,
|
|
29
|
-
actionButtonTextStyle,
|
|
30
22
|
wheelBorderColor,
|
|
31
23
|
wheelBorderWidth,
|
|
32
24
|
wheelTextColor = "#FFFFFF",
|
|
33
|
-
actionButtonProps,
|
|
34
25
|
centerSize,
|
|
35
26
|
centerComponent
|
|
36
27
|
}) => {
|
|
37
28
|
const wheelItems = items.length > 0 ? items : [];
|
|
38
|
-
const spinLoop = useRef(null);
|
|
39
|
-
const spinStartTime = useRef(0);
|
|
40
29
|
const [spinning, setSpinning] = useState(false);
|
|
30
|
+
|
|
31
|
+
// 0-1 represents 0-360 degrees. We keep increasing this value.
|
|
41
32
|
const rotateValue = useRef(new Animated.Value(0)).current;
|
|
42
33
|
const rotationRef = useRef(0);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
34
|
+
|
|
35
|
+
// Sync the ref with the animated value to ensure we start next spin from where we left off
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
const listener = rotateValue.addListener(({
|
|
38
|
+
value
|
|
39
|
+
}) => {
|
|
40
|
+
rotationRef.current = value;
|
|
41
|
+
});
|
|
42
|
+
return () => {
|
|
43
|
+
rotateValue.removeListener(listener);
|
|
44
|
+
};
|
|
45
|
+
}, [rotateValue]);
|
|
46
|
+
|
|
47
|
+
// Main Logic: Trigger spin when 'winner' is provided
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (winner != null && !spinning) {
|
|
50
|
+
spinToWinner(winner);
|
|
51
|
+
}
|
|
52
|
+
}, [winner]);
|
|
53
|
+
const spinToWinner = winnerValue => {
|
|
60
54
|
const winnerId = typeof winnerValue === "object" ? winnerValue.id : winnerValue;
|
|
61
55
|
const index = items.findIndex(i => i.id === winnerId);
|
|
62
|
-
if (index === -1)
|
|
56
|
+
if (index === -1) {
|
|
57
|
+
console.warn("Winner not found in items array");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
setSpinning(true);
|
|
63
61
|
|
|
64
|
-
// Calculate
|
|
62
|
+
// 1. Calculate the angle where the item is centered
|
|
65
63
|
const anglePerItem = 360 / items.length;
|
|
64
|
+
// We want the item centered at 270 degrees (top of the wheel in standard SVG)
|
|
66
65
|
const segmentCenter = (index + 0.5) * anglePerItem;
|
|
67
66
|
const targetAngle = (270 - segmentCenter + 360) % 360;
|
|
68
67
|
|
|
69
|
-
//
|
|
70
|
-
const
|
|
71
|
-
const
|
|
68
|
+
// 2. Calculate offset from current position
|
|
69
|
+
const currentRotationDegrees = rotationRef.current * 360 % 360;
|
|
70
|
+
const offset = (targetAngle - currentRotationDegrees + 360) % 360;
|
|
72
71
|
|
|
73
|
-
// Calculate
|
|
74
|
-
|
|
72
|
+
// 3. Calculate total rotation:
|
|
73
|
+
// Current Rotation + (Distance to target) + (Extra Full Spins)
|
|
74
|
+
// We divide by 360 because our Animated.Value goes from 0 to 1 for a full circle
|
|
75
|
+
const finalRotation = rotationRef.current + (offset + 360 * TOTAL_SPINS) / 360;
|
|
75
76
|
|
|
76
|
-
//
|
|
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
|
|
77
|
+
// 4. One smooth animation
|
|
84
78
|
Animated.timing(rotateValue, {
|
|
85
79
|
toValue: finalRotation,
|
|
86
|
-
duration:
|
|
80
|
+
duration: SPIN_DURATION,
|
|
87
81
|
easing: Easing.out(Easing.cubic),
|
|
82
|
+
// Starts fast, slows down smoothly
|
|
88
83
|
useNativeDriver: true
|
|
89
84
|
}).start(() => {
|
|
90
85
|
rotationRef.current = finalRotation;
|
|
@@ -92,16 +87,6 @@ const SpinWheel = ({
|
|
|
92
87
|
onSpinEnd?.(items[index]);
|
|
93
88
|
});
|
|
94
89
|
};
|
|
95
|
-
useEffect(() => {
|
|
96
|
-
const listener = rotateValue.addListener(({
|
|
97
|
-
value
|
|
98
|
-
}) => {
|
|
99
|
-
rotationRef.current = value;
|
|
100
|
-
});
|
|
101
|
-
return () => {
|
|
102
|
-
rotateValue.removeListener(listener);
|
|
103
|
-
};
|
|
104
|
-
}, [rotateValue]);
|
|
105
90
|
const anglePerItem = wheelItems.length > 0 ? 360 / wheelItems.length : 0;
|
|
106
91
|
const generateWheelPaths = () => {
|
|
107
92
|
if (wheelItems.length === 0) return [];
|
|
@@ -129,15 +114,6 @@ const SpinWheel = ({
|
|
|
129
114
|
});
|
|
130
115
|
};
|
|
131
116
|
const wheelPaths = generateWheelPaths();
|
|
132
|
-
useEffect(() => {
|
|
133
|
-
if (!winner || !spinning) return;
|
|
134
|
-
const elapsed = Date.now() - spinStartTime.current;
|
|
135
|
-
const delay = Math.max(0, minSpinDuration - elapsed);
|
|
136
|
-
const timeout = setTimeout(() => {
|
|
137
|
-
stopOnWinner(winner);
|
|
138
|
-
}, delay);
|
|
139
|
-
return () => clearTimeout(timeout);
|
|
140
|
-
}, [winner, spinning]);
|
|
141
117
|
const rotate = rotateValue.interpolate({
|
|
142
118
|
inputRange: [0, 1],
|
|
143
119
|
outputRange: ["0deg", "360deg"]
|
|
@@ -188,14 +164,14 @@ const SpinWheel = ({
|
|
|
188
164
|
})]
|
|
189
165
|
}, item.id);
|
|
190
166
|
})
|
|
191
|
-
}), wheelBorderWidth
|
|
167
|
+
}), wheelBorderWidth ? /*#__PURE__*/_jsx(Circle, {
|
|
192
168
|
cx: size / 2,
|
|
193
169
|
cy: size / 2,
|
|
194
170
|
r: size / 2 - wheelBorderWidth / 2,
|
|
195
171
|
stroke: wheelBorderColor,
|
|
196
172
|
strokeWidth: wheelBorderWidth,
|
|
197
173
|
fill: "none"
|
|
198
|
-
})]
|
|
174
|
+
}) : /*#__PURE__*/_jsx(View, {})]
|
|
199
175
|
})
|
|
200
176
|
}), centerComponent ? /*#__PURE__*/_jsx(View, {
|
|
201
177
|
style: {
|
|
@@ -230,23 +206,6 @@ const SpinWheel = ({
|
|
|
230
206
|
borderBottomColor: knobColor
|
|
231
207
|
}, knobStyle]
|
|
232
208
|
})
|
|
233
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
234
|
-
style: {
|
|
235
|
-
position: "absolute",
|
|
236
|
-
width: "100%",
|
|
237
|
-
alignItems: "center",
|
|
238
|
-
justifyContent: "center",
|
|
239
|
-
bottom: -70,
|
|
240
|
-
zIndex: 2
|
|
241
|
-
},
|
|
242
|
-
children: /*#__PURE__*/_jsx(Button, {
|
|
243
|
-
style: [styles.actionButton, actionButtonStyle],
|
|
244
|
-
onPress: startInfiniteSpin,
|
|
245
|
-
title: spinButtonText,
|
|
246
|
-
disabled: spinning,
|
|
247
|
-
textStyle: [styles.actionButtonText, actionButtonTextStyle],
|
|
248
|
-
...actionButtonProps
|
|
249
|
-
})
|
|
250
209
|
})]
|
|
251
210
|
})
|
|
252
211
|
});
|
|
@@ -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","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":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,MAAM,EAAEC,SAAS,QAAQ,OAAO;AAC1D,SACEC,IAAI,EACJC,UAAU,EACVC,QAAQ,EAGRC,MAAM,QAGD,cAAc;AACrB,SAASC,GAAG,EAAEC,IAAI,EAAEC,CAAC,EAAEC,IAAI,IAAIC,OAAO,EAAEC,MAAM,QAAQ,kBAAkB;AACxE,SAAyBC,MAAM,QAAQ,oBAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAUnD;AACA,MAAMC,MAAM,GAAG,CACb,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAChE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAChE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAChE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAChE,SAAS,CACV;AA8BD;AACA,MAAMC,iBAAiB,GAAG,IAAI,CAAC,CAAC;AAChC,MAAMC,cAAc,GAAG,IAAI,CAAC,CAAC;AAC7B,MAAMC,WAAW,GAAG,CAAC,CAAC,CAAC;;AAEvB,MAAMC,SAAmC,GAAGA,CAAC;EAC3CC,KAAK;EACLC,IAAI,GAAG,GAAG;EACVC,MAAM;EACNC,eAAe,GAAG,IAAI;EACtBC,WAAW;EACXC,SAAS;EACTC,cAAc;EACdC,WAAW;EACXC,cAAc,GAAG,MAAM;EACvBC,cAAc;EACdC,SAAS;EACTC,SAAS,GAAG,SAAS;EACrBC,iBAAiB;EACjBC,qBAAqB;EACrBC,gBAAgB;EAChBC,gBAAgB;EAChBC,cAAc,GAAG,SAAS;EAC1BC,iBAAiB;EACjBC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,MAAMC,UAAU,GAAGpB,KAAK,CAACqB,MAAM,GAAG,CAAC,GAAGrB,KAAK,GAAG,EAAE;EAEhD,MAAMsB,QAAQ,GAAG5C,MAAM,CAAqC,IAAI,CAAC;EACjE,MAAM6C,aAAa,GAAG7C,MAAM,CAAS,CAAC,CAAC;EAEvC,MAAM,CAAC8C,QAAQ,EAAEC,WAAW,CAAC,GAAGhD,QAAQ,CAAC,KAAK,CAAC;EAC/C,MAAMiD,WAAW,GAAGhD,MAAM,CAAC,IAAII,QAAQ,CAAC6C,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACzD,MAAMC,WAAW,GAAGnD,MAAM,CAAC,CAAC,CAAC;EAE7B,MAAMoD,iBAAiB,GAAGA,CAAA,KAAM;IAC9BJ,WAAW,CAACK,QAAQ,CAACF,WAAW,CAACD,OAAO,CAAC;IACzCL,aAAa,CAACK,OAAO,GAAGI,IAAI,CAACC,GAAG,CAAC,CAAC;IAElCX,QAAQ,CAACM,OAAO,GAAG9C,QAAQ,CAACoD,IAAI,CAC9BpD,QAAQ,CAACqD,MAAM,CAACT,WAAW,EAAE;MAC3BU,OAAO,EAAEP,WAAW,CAACD,OAAO,GAAG,CAAC;MAChCS,QAAQ,EAAEzC,iBAAiB;MAC3B0C,MAAM,EAAEvD,MAAM,CAACwD,MAAM;MACrBC,eAAe,EAAE;IACnB,CAAC,CACH,CAAC;IAEDlB,QAAQ,CAACM,OAAO,CAACa,KAAK,CAAC,CAAC;IACxBhB,WAAW,CAAC,IAAI,CAAC;IACjBrB,WAAW,GAAG,CAAC;EACjB,CAAC;EAED,MAAMsC,YAAY,GAAIC,WAA4C,IAAK;IACrE,IAAI,CAACrB,QAAQ,CAACM,OAAO,EAAE;IAEvBN,QAAQ,CAACM,OAAO,CAACgB,IAAI,CAAC,CAAC;IACvBtB,QAAQ,CAACM,OAAO,GAAG,IAAI;IAEvB,MAAMiB,QAAQ,GACZ,OAAOF,WAAW,KAAK,QAAQ,GAAGA,WAAW,CAACG,EAAE,GAAGH,WAAW;IAEhE,MAAMI,KAAK,GAAG/C,KAAK,CAACgD,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACH,EAAE,KAAKD,QAAQ,CAAC;IACvD,IAAIE,KAAK,KAAK,CAAC,CAAC,EAAE;;IAElB;IACA,MAAMG,YAAY,GAAG,GAAG,GAAGlD,KAAK,CAACqB,MAAM;IACvC,MAAM8B,aAAa,GAAG,CAACJ,KAAK,GAAG,GAAG,IAAIG,YAAY;IAClD,MAAME,WAAW,GAAG,CAAC,GAAG,GAAGD,aAAa,GAAG,GAAG,IAAI,GAAG;;IAErD;IACA,MAAME,eAAe,GAAGxB,WAAW,CAACD,OAAO;IAC3C,MAAM0B,YAAY,GAAID,eAAe,GAAG,GAAG,GAAI,GAAG;;IAElD;IACA,IAAIE,MAAM,GAAG,CAACH,WAAW,GAAGE,YAAY,GAAG,GAAG,IAAI,GAAG;;IAErD;IACA,MAAME,cAAc,GAAG1D,WAAW,GAAG,GAAG;IACxC,MAAM2D,aAAa,GAAGF,MAAM,GAAGC,cAAc;;IAE7C;IACA,MAAME,aAAa,GAAGL,eAAe,GAAGI,aAAa,GAAG,GAAG;;IAE3D;IACA3E,QAAQ,CAACqD,MAAM,CAACT,WAAW,EAAE;MAC3BU,OAAO,EAAEsB,aAAa;MACtBrB,QAAQ,EAAExC,cAAc;MACxByC,MAAM,EAAEvD,MAAM,CAAC4E,GAAG,CAAC5E,MAAM,CAAC6E,KAAK,CAAC;MAChCpB,eAAe,EAAE;IACnB,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM;MACbZ,WAAW,CAACD,OAAO,GAAG8B,aAAa;MACnCjC,WAAW,CAAC,KAAK,CAAC;MAClBpB,SAAS,GAAGL,KAAK,CAAC+C,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;EACJ,CAAC;EAEDpE,SAAS,CAAC,MAAM;IACd,MAAMkF,QAAQ,GAAGnC,WAAW,CAACoC,WAAW,CAAC,CAAC;MAAEC;IAAM,CAAC,KAAK;MACtDlC,WAAW,CAACD,OAAO,GAAGmC,KAAK;IAC7B,CAAC,CAAC;IAEF,OAAO,MAAM;MACXrC,WAAW,CAACsC,cAAc,CAACH,QAAQ,CAAC;IACtC,CAAC;EACH,CAAC,EAAE,CAACnC,WAAW,CAAC,CAAC;EAEjB,MAAMwB,YAAY,GAAG9B,UAAU,CAACC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAGD,UAAU,CAACC,MAAM,GAAG,CAAC;EAExE,MAAM4C,kBAAkB,GAAGA,CAAA,KAAM;IAC/B,IAAI7C,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;IACtC,OAAOD,UAAU,CAAC8C,GAAG,CAAC,CAACC,IAAI,EAAEpB,KAAK,KAAK;MACrC,MAAMqB,UAAU,GAAGrB,KAAK,GAAGG,YAAY;MACvC,MAAMmB,QAAQ,GAAG,CAACtB,KAAK,GAAG,CAAC,IAAIG,YAAY;MAE3C,MAAMoB,QAAQ,GAAIF,UAAU,GAAGG,IAAI,CAACC,EAAE,GAAI,GAAG;MAC7C,MAAMC,MAAM,GAAIJ,QAAQ,GAAGE,IAAI,CAACC,EAAE,GAAI,GAAG;MAEzC,MAAME,EAAE,GAAGzE,IAAI,GAAG,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAIsE,IAAI,CAACI,GAAG,CAACL,QAAQ,CAAC;MACrD,MAAMM,EAAE,GAAG3E,IAAI,GAAG,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAIsE,IAAI,CAACM,GAAG,CAACP,QAAQ,CAAC;MACrD,MAAMQ,EAAE,GAAG7E,IAAI,GAAG,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAIsE,IAAI,CAACI,GAAG,CAACF,MAAM,CAAC;MACnD,MAAMM,EAAE,GAAG9E,IAAI,GAAG,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAIsE,IAAI,CAACM,GAAG,CAACJ,MAAM,CAAC;MAEnD,MAAMO,YAAY,GAAGX,QAAQ,GAAGD,UAAU,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG;MAE7D,MAAMa,QAAQ,GAAG,CACf,KAAKhF,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,CAAC,EAAE,EAC3B,KAAKyE,EAAE,IAAIE,EAAE,EAAE,EACf,KAAK3E,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,CAAC,MAAM+E,YAAY,MAAMF,EAAE,IAAIC,EAAE,EAAE,EAC3D,GAAG,CACJ,CAACG,IAAI,CAAC,GAAG,CAAC;MAEX,MAAMC,MAAM,GAAI,CAACf,UAAU,GAAGC,QAAQ,IAAI,CAAC,IAAKE,IAAI,CAACC,EAAE,GAAG,GAAG,CAAC;MAC9D,MAAMY,KAAK,GAAGnF,IAAI,GAAG,CAAC,GAAGA,IAAI,GAAG,IAAI,GAAGsE,IAAI,CAACI,GAAG,CAACQ,MAAM,CAAC;MACvD,MAAME,KAAK,GAAGpF,IAAI,GAAG,CAAC,GAAGA,IAAI,GAAG,IAAI,GAAGsE,IAAI,CAACM,GAAG,CAACM,MAAM,CAAC;MAEvD,OAAO;QACLG,IAAI,EAAEL,QAAQ;QACdd,IAAI;QACJiB,KAAK;QACLC,KAAK;QACLE,KAAK,EAAE,CAACnB,UAAU,GAAGC,QAAQ,IAAI;MACnC,CAAC;IACH,CAAC,CAAC;EACJ,CAAC;EAED,MAAMmB,UAAU,GAAGvB,kBAAkB,CAAC,CAAC;EAEvCtF,SAAS,CAAC,MAAM;IACd,IAAI,CAACuB,MAAM,IAAI,CAACsB,QAAQ,EAAE;IAE1B,MAAMiE,OAAO,GAAGzD,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGV,aAAa,CAACK,OAAO;IAClD,MAAM8D,KAAK,GAAGnB,IAAI,CAACoB,GAAG,CAAC,CAAC,EAAExF,eAAe,GAAGsF,OAAO,CAAC;IAEpD,MAAMG,OAAO,GAAGC,UAAU,CAAC,MAAM;MAC/BnD,YAAY,CAACxC,MAAM,CAAC;IACtB,CAAC,EAAEwF,KAAK,CAAC;IAET,OAAO,MAAMI,YAAY,CAACF,OAAO,CAAC;EACpC,CAAC,EAAE,CAAC1F,MAAM,EAAEsB,QAAQ,CAAC,CAAC;EAEtB,MAAMuE,MAAM,GAAGrE,WAAW,CAACsE,WAAW,CAAC;IACrCC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClBC,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ;EAChC,CAAC,CAAC;EAEF,MAAMC,gBAAgB,GAAGjF,UAAU,KAAKkF,SAAS,GAAGlF,UAAU,GAAGjB,IAAI,GAAG,CAAC;EAEzE,oBACET,IAAA,CAACZ,IAAI;IAACyH,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEjG,cAAc,CAAE;IAAAkG,QAAA,eAC9C9G,KAAA,CAACd,IAAI;MAACyH,KAAK,EAAE;QAAEI,KAAK,EAAExG,IAAI;QAAEyG,MAAM,EAAEzG;MAAK,CAAE;MAAAuG,QAAA,gBACzChH,IAAA,CAACV,QAAQ,CAACF,IAAI;QACZyH,KAAK,EAAE,CACLC,MAAM,CAACK,cAAc,EACrB;UACEF,KAAK,EAAExG,IAAI;UACXyG,MAAM,EAAEzG,IAAI;UACZ2G,YAAY,EAAE3G,IAAI,GAAG,CAAC;UACtB4G,SAAS,EAAE,CAAC;YAAEd;UAAO,CAAC;QACxB,CAAC,CACD;QAAAS,QAAA,eAEF9G,KAAA,CAACV,GAAG;UAACyH,KAAK,EAAExG,IAAK;UAACyG,MAAM,EAAEzG,IAAK;UAAC6G,OAAO,EAAE,OAAO7G,IAAI,IAAIA,IAAI,EAAG;UAAAuG,QAAA,gBAC7DhH,IAAA,CAACN,CAAC;YAAAsH,QAAA,EACChB,UAAU,CAACtB,GAAG,CAAC,CAAC;cAAEoB,IAAI;cAAEnB,IAAI;cAAEiB,KAAK;cAAEC,KAAK;cAAEE;YAAM,CAAC,KAAK;cACvD,oBACE7F,KAAA,CAAClB,KAAK,CAACuI,QAAQ;gBAAAP,QAAA,gBACbhH,IAAA,CAACP,IAAI;kBACH+H,CAAC,EAAE1B,IAAK;kBACR2B,IAAI,EACF9C,IAAI,CAAC+C,KAAK,IAAI,EAAE,IAAI/C,IAAI,CAAC+C,KAAK,IAAI,IAAI,GAClCvH,MAAM,CAAC4E,IAAI,CAAC4C,KAAK,CAAC5C,IAAI,CAAC6C,MAAM,CAAC,CAAC,GAAGzH,MAAM,CAAC0B,MAAM,CAAC,CAAC,GACjD8C,IAAI,CAAC+C;gBACV,CACF,CAAC,eACF1H,IAAA,CAACJ,OAAO;kBACNiI,CAAC,EAAEjC,KAAM;kBACTkC,CAAC,EAAEjC,KAAM;kBACT4B,IAAI,EAAE9C,IAAI,CAACoD,SAAS,IAAIvG,cAAe;kBACvCwG,QAAQ,EAAE/G,cAAc,EAAE+G,QAAQ,IAAI,EAAG;kBACzCC,UAAU,EAAGhH,cAAc,EAAEgH,UAAU,IAAY,MAAO;kBAC1DC,UAAU,EAAC,QAAQ;kBACnBC,iBAAiB,EAAC,SAAS;kBAC3Bd,SAAS,EAAE,UAAUtB,KAAK,GAAG,GAAG,KAAKH,KAAK,KAAKC,KAAK,GAAI;kBAAAmB,QAAA,EAEvDrC,IAAI,CAACyD;gBAAK,CACJ,CAAC;cAAA,GApBSzD,IAAI,CAACrB,EAqBV,CAAC;YAErB,CAAC;UAAC,CACD,CAAC,EAEH/B,gBAAgB,iBACfvB,IAAA,CAACH,MAAM;YACLwI,EAAE,EAAE5H,IAAI,GAAG,CAAE;YACb6H,EAAE,EAAE7H,IAAI,GAAG,CAAE;YACb8H,CAAC,EAAE9H,IAAI,GAAG,CAAC,GAAGc,gBAAgB,GAAG,CAAE;YACnCiH,MAAM,EAAElH,gBAAiB;YACzBmH,WAAW,EAAElH,gBAAiB;YAC9BkG,IAAI,EAAC;UAAM,CACZ,CACF;QAAA,CACE;MAAC,CACO,CAAC,EAEf9F,eAAe,gBACd3B,IAAA,CAACZ,IAAI;QACHyH,KAAK,EAAE;UACL6B,QAAQ,EAAE,UAAU;UACpBC,GAAG,EAAE,KAAK;UACVC,IAAI,EAAE,KAAK;UACXvB,SAAS,EAAE,CACT;YAAEwB,UAAU,EAAE,EAAElC,gBAAgB,GAAG,CAAC;UAAE,CAAC,EACvC;YAAEmC,UAAU,EAAE,EAAEnC,gBAAgB,GAAG,CAAC;UAAE,CAAC,CACxC;UACDoC,MAAM,EAAE;QACV,CAAE;QAAA/B,QAAA,EAEDrF;MAAe,CACZ,CAAC,gBAEP3B,IAAA,CAACZ,IAAI;QACHyH,KAAK,EAAE,CACLC,MAAM,CAACkC,WAAW,EAClB;UACE/B,KAAK,EAAEN,gBAAgB;UACvBO,MAAM,EAAEP,gBAAgB;UACxBS,YAAY,EAAET,gBAAgB,GAAG,CAAC;UAClCU,SAAS,EAAE,CACT;YAAEwB,UAAU,EAAE,CAAClC,gBAAgB,GAAG;UAAE,CAAC,EACrC;YAAEmC,UAAU,EAAE,CAACnC,gBAAgB,GAAG;UAAE,CAAC;QAEzC,CAAC,EACD5F,WAAW;MACX,CACH,CACF,eAEDf,IAAA,CAACZ,IAAI;QACHyH,KAAK,EAAE,CACLC,MAAM,CAACmC,eAAe,EACtB1H,gBAAgB,GAAG;UAAEoH,GAAG,EAAEpH;QAAiB,CAAC,GAAG,CAAC,CAAC,CACjD;QAAAyF,QAAA,eAEFhH,IAAA,CAACZ,IAAI;UACHyH,KAAK,EAAE,CACLC,MAAM,CAACoC,OAAO,EACd;YAAEC,iBAAiB,EAAEhI;UAAU,CAAC,EAChCD,SAAS;QACT,CACH;MAAC,CACE,CAAC,eAEPlB,IAAA,CAACZ,IAAI;QACHyH,KAAK,EAAE;UACL6B,QAAQ,EAAE,UAAU;UACpBzB,KAAK,EAAE,MAAM;UACbmC,UAAU,EAAE,QAAQ;UACpBC,cAAc,EAAE,QAAQ;UACxBC,MAAM,EAAE,CAAC,EAAE;UACXP,MAAM,EAAE;QACV,CAAE;QAAA/B,QAAA,eAEFhH,IAAA,CAACF,MAAM;UACL+G,KAAK,EAAE,CAACC,MAAM,CAACyC,YAAY,EAAEnI,iBAAiB,CAAE;UAChDoI,OAAO,EAAElH,iBAAkB;UAC3BmH,KAAK,EAAEzI,cAAe;UACtB0I,QAAQ,EAAE1H,QAAS;UACnB2H,SAAS,EAAE,CAAC7C,MAAM,CAAC8C,gBAAgB,EAAEvI,qBAAqB,CAAE;UAAA,GACxDI;QAAiB,CACtB;MAAC,CACE,CAAC;IAAA,CACH;EAAC,CACH,CAAC;AAEX,CAAC;AAED,MAAMqF,MAAM,GAAGzH,UAAU,CAACwK,MAAM,CAAC;EAC/B9C,SAAS,EAAE;IACTqC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBS,SAAS,EAAE,EAAE;IACbC,YAAY,EAAE;EAChB,CAAC;EACD5C,cAAc,EAAE;IACd6C,QAAQ,EAAE,QAAQ;IAClBC,eAAe,EAAE;EACnB,CAAC;EACDjB,WAAW,EAAE;IACXN,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,KAAK;IACVC,IAAI,EAAE,KAAK;IACXqB,eAAe,EAAE,SAAS;IAC1BC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,SAAS;IACtBpB,MAAM,EAAE;EACV,CAAC;EACDE,eAAe,EAAE;IACfP,QAAQ,EAAE,UAAU;IACpBE,IAAI,EAAE,KAAK;IACXvB,SAAS,EAAE,CAAC;MAAEwB,UAAU,EAAE,CAAC;IAAG,CAAC,EAAE;MAAEtC,MAAM,EAAE;IAAS,CAAC,CAAC;IACtDwC,MAAM,EAAE;EACV,CAAC;EACDG,OAAO,EAAE;IACPjC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACT+C,eAAe,EAAE,aAAa;IAC9BG,WAAW,EAAE,OAAO;IACpBC,eAAe,EAAE,EAAE;IACnBC,gBAAgB,EAAE,EAAE;IACpBC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,aAAa;IAC9BC,gBAAgB,EAAE;EACpB,CAAC;EACDlB,YAAY,EAAE;IACZmB,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBvD,YAAY,EAAE,EAAE;IAChBwD,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE,CAAC;IACfZ,eAAe,EAAE;EACnB,CAAC;EACDL,gBAAgB,EAAE;IAChB3B,UAAU,EAAE,MAAM;IAClBD,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAezH,SAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","Animated","Easing","StyleSheet","View","Circle","G","Path","Svg","Text","SvgText","jsx","_jsx","jsxs","_jsxs","colors","TOTAL_SPINS","SPIN_DURATION","SpinWheel","items","size","winner","onSpinEnd","containerStyle","centerStyle","wheelTextStyle","knobStyle","knobColor","wheelBorderColor","wheelBorderWidth","wheelTextColor","centerSize","centerComponent","wheelItems","length","spinning","setSpinning","rotateValue","Value","current","rotationRef","listener","addListener","value","removeListener","spinToWinner","winnerValue","winnerId","id","index","findIndex","i","console","warn","anglePerItem","segmentCenter","targetAngle","currentRotationDegrees","offset","finalRotation","timing","toValue","duration","easing","out","cubic","useNativeDriver","start","generateWheelPaths","map","item","startAngle","endAngle","startRad","Math","PI","endRad","x1","cos","y1","sin","x2","y2","largeArcFlag","pathData","join","midRad","textX","textY","path","angle","wheelPaths","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","create","alignItems","justifyContent","marginTop","marginBottom","overflow","backgroundColor","borderWidth","borderColor","borderStyle","borderLeftWidth","borderRightWidth","borderBottomWidth","borderLeftColor","borderRightColor","actionButton","paddingHorizontal","paddingVertical","shadowColor","shadowRadius","actionButtonText"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Wheel/Wheel.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SACEC,QAAQ,EACRC,MAAM,EACNC,UAAU,EAEVC,IAAI,QAEC,cAAc;AACrB,SAASC,MAAM,EAAEC,CAAC,EAAEC,IAAI,EAAEC,GAAG,EAAEC,IAAI,IAAIC,OAAO,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAUzE,MAAMC,MAAM,GAAG,CACb,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAChE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAChE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAChE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAChE,SAAS,CACV;AAqBD;AACA,MAAMC,WAAW,GAAG,CAAC,CAAC,CAAC;AACvB,MAAMC,aAAa,GAAG,IAAI,CAAC,CAAC;;AAE5B,MAAMC,SAAmC,GAAGA,CAAC;EAC3CC,KAAK;EACLC,IAAI,GAAG,GAAG;EACVC,MAAM;EACNC,SAAS;EACTC,cAAc;EACdC,WAAW;EACXC,cAAc;EACdC,SAAS;EACTC,SAAS,GAAG,SAAS;EACrBC,gBAAgB;EAChBC,gBAAgB;EAChBC,cAAc,GAAG,SAAS;EAC1BC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,MAAMC,UAAU,GAAGd,KAAK,CAACe,MAAM,GAAG,CAAC,GAAGf,KAAK,GAAG,EAAE;EAChD,MAAM,CAACgB,QAAQ,EAAEC,WAAW,CAAC,GAAGpC,QAAQ,CAAC,KAAK,CAAC;;EAE/C;EACA,MAAMqC,WAAW,GAAGtC,MAAM,CAAC,IAAIE,QAAQ,CAACqC,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACzD,MAAMC,WAAW,GAAGzC,MAAM,CAAC,CAAC,CAAC;;EAE7B;EACAD,SAAS,CAAC,MAAM;IACd,MAAM2C,QAAQ,GAAGJ,WAAW,CAACK,WAAW,CAAC,CAAC;MAAEC;IAAM,CAAC,KAAK;MACtDH,WAAW,CAACD,OAAO,GAAGI,KAAK;IAC7B,CAAC,CAAC;IACF,OAAO,MAAM;MACXN,WAAW,CAACO,cAAc,CAACH,QAAQ,CAAC;IACtC,CAAC;EACH,CAAC,EAAE,CAACJ,WAAW,CAAC,CAAC;;EAEjB;EACAvC,SAAS,CAAC,MAAM;IACd,IAAIuB,MAAM,IAAI,IAAI,IAAI,CAACc,QAAQ,EAAE;MAC/BU,YAAY,CAACxB,MAAM,CAAC;IACtB;EACF,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZ,MAAMwB,YAAY,GAAIC,WAA4C,IAAK;IACrE,MAAMC,QAAQ,GACZ,OAAOD,WAAW,KAAK,QAAQ,GAAGA,WAAW,CAACE,EAAE,GAAGF,WAAW;IAEhE,MAAMG,KAAK,GAAG9B,KAAK,CAAC+B,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACH,EAAE,KAAKD,QAAQ,CAAC;IACvD,IAAIE,KAAK,KAAK,CAAC,CAAC,EAAE;MAChBG,OAAO,CAACC,IAAI,CAAC,iCAAiC,CAAC;MAC/C;IACF;IAEAjB,WAAW,CAAC,IAAI,CAAC;;IAEjB;IACA,MAAMkB,YAAY,GAAG,GAAG,GAAGnC,KAAK,CAACe,MAAM;IACvC;IACA,MAAMqB,aAAa,GAAG,CAACN,KAAK,GAAG,GAAG,IAAIK,YAAY;IAClD,MAAME,WAAW,GAAG,CAAC,GAAG,GAAGD,aAAa,GAAG,GAAG,IAAI,GAAG;;IAErD;IACA,MAAME,sBAAsB,GAAIjB,WAAW,CAACD,OAAO,GAAG,GAAG,GAAI,GAAG;IAChE,MAAMmB,MAAM,GAAG,CAACF,WAAW,GAAGC,sBAAsB,GAAG,GAAG,IAAI,GAAG;;IAEjE;IACA;IACA;IACA,MAAME,aAAa,GACjBnB,WAAW,CAACD,OAAO,GAAG,CAACmB,MAAM,GAAG,GAAG,GAAG1C,WAAW,IAAI,GAAG;;IAE1D;IACAf,QAAQ,CAAC2D,MAAM,CAACvB,WAAW,EAAE;MAC3BwB,OAAO,EAAEF,aAAa;MACtBG,QAAQ,EAAE7C,aAAa;MACvB8C,MAAM,EAAE7D,MAAM,CAAC8D,GAAG,CAAC9D,MAAM,CAAC+D,KAAK,CAAC;MAAE;MAClCC,eAAe,EAAE;IACnB,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM;MACb3B,WAAW,CAACD,OAAO,GAAGoB,aAAa;MACnCvB,WAAW,CAAC,KAAK,CAAC;MAClBd,SAAS,GAAGH,KAAK,CAAC8B,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;EACJ,CAAC;EAED,MAAMK,YAAY,GAAGrB,UAAU,CAACC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAGD,UAAU,CAACC,MAAM,GAAG,CAAC;EAExE,MAAMkC,kBAAkB,GAAGA,CAAA,KAAM;IAC/B,IAAInC,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;IACtC,OAAOD,UAAU,CAACoC,GAAG,CAAC,CAACC,IAAI,EAAErB,KAAK,KAAK;MACrC,MAAMsB,UAAU,GAAGtB,KAAK,GAAGK,YAAY;MACvC,MAAMkB,QAAQ,GAAG,CAACvB,KAAK,GAAG,CAAC,IAAIK,YAAY;MAE3C,MAAMmB,QAAQ,GAAIF,UAAU,GAAGG,IAAI,CAACC,EAAE,GAAI,GAAG;MAC7C,MAAMC,MAAM,GAAIJ,QAAQ,GAAGE,IAAI,CAACC,EAAE,GAAI,GAAG;MAEzC,MAAME,EAAE,GAAGzD,IAAI,GAAG,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAIsD,IAAI,CAACI,GAAG,CAACL,QAAQ,CAAC;MACrD,MAAMM,EAAE,GAAG3D,IAAI,GAAG,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAIsD,IAAI,CAACM,GAAG,CAACP,QAAQ,CAAC;MACrD,MAAMQ,EAAE,GAAG7D,IAAI,GAAG,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAIsD,IAAI,CAACI,GAAG,CAACF,MAAM,CAAC;MACnD,MAAMM,EAAE,GAAG9D,IAAI,GAAG,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAIsD,IAAI,CAACM,GAAG,CAACJ,MAAM,CAAC;MAEnD,MAAMO,YAAY,GAAGX,QAAQ,GAAGD,UAAU,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG;MAE7D,MAAMa,QAAQ,GAAG,CACf,KAAKhE,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,CAAC,EAAE,EAC3B,KAAKyD,EAAE,IAAIE,EAAE,EAAE,EACf,KAAK3D,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,CAAC,MAAM+D,YAAY,MAAMF,EAAE,IAAIC,EAAE,EAAE,EAC3D,GAAG,CACJ,CAACG,IAAI,CAAC,GAAG,CAAC;MAEX,MAAMC,MAAM,GAAI,CAACf,UAAU,GAAGC,QAAQ,IAAI,CAAC,IAAKE,IAAI,CAACC,EAAE,GAAG,GAAG,CAAC;MAC9D,MAAMY,KAAK,GAAGnE,IAAI,GAAG,CAAC,GAAGA,IAAI,GAAG,IAAI,GAAGsD,IAAI,CAACI,GAAG,CAACQ,MAAM,CAAC;MACvD,MAAME,KAAK,GAAGpE,IAAI,GAAG,CAAC,GAAGA,IAAI,GAAG,IAAI,GAAGsD,IAAI,CAACM,GAAG,CAACM,MAAM,CAAC;MAEvD,OAAO;QACLG,IAAI,EAAEL,QAAQ;QACdd,IAAI;QACJiB,KAAK;QACLC,KAAK;QACLE,KAAK,EAAE,CAACnB,UAAU,GAAGC,QAAQ,IAAI;MACnC,CAAC;IACH,CAAC,CAAC;EACJ,CAAC;EAED,MAAMmB,UAAU,GAAGvB,kBAAkB,CAAC,CAAC;EAEvC,MAAMwB,MAAM,GAAGvD,WAAW,CAACwD,WAAW,CAAC;IACrCC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClBC,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ;EAChC,CAAC,CAAC;EAEF,MAAMC,gBAAgB,GAAGjE,UAAU,KAAKkE,SAAS,GAAGlE,UAAU,GAAGX,IAAI,GAAG,CAAC;EAEzE,oBACER,IAAA,CAACR,IAAI;IAAC8F,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE7E,cAAc,CAAE;IAAA8E,QAAA,eAC9CvF,KAAA,CAACV,IAAI;MAAC8F,KAAK,EAAE;QAAEI,KAAK,EAAElF,IAAI;QAAEmF,MAAM,EAAEnF;MAAK,CAAE;MAAAiF,QAAA,gBACzCzF,IAAA,CAACX,QAAQ,CAACG,IAAI;QACZ8F,KAAK,EAAE,CACLC,MAAM,CAACK,cAAc,EACrB;UACEF,KAAK,EAAElF,IAAI;UACXmF,MAAM,EAAEnF,IAAI;UACZqF,YAAY,EAAErF,IAAI,GAAG,CAAC;UACtBsF,SAAS,EAAE,CAAC;YAAEd;UAAO,CAAC;QACxB,CAAC,CACD;QAAAS,QAAA,eAEFvF,KAAA,CAACN,GAAG;UAAC8F,KAAK,EAAElF,IAAK;UAACmF,MAAM,EAAEnF,IAAK;UAACuF,OAAO,EAAE,OAAOvF,IAAI,IAAIA,IAAI,EAAG;UAAAiF,QAAA,gBAC7DzF,IAAA,CAACN,CAAC;YAAA+F,QAAA,EACCV,UAAU,CAACtB,GAAG,CAAC,CAAC;cAAEoB,IAAI;cAAEnB,IAAI;cAAEiB,KAAK;cAAEC,KAAK;cAAEE;YAAM,CAAC,KAAK;cACvD,oBACE5E,KAAA,CAACjB,KAAK,CAAC+G,QAAQ;gBAAAP,QAAA,gBACbzF,IAAA,CAACL,IAAI;kBACHsG,CAAC,EAAEpB,IAAK;kBACRqB,IAAI,EACFxC,IAAI,CAACyC,KAAK,IAAI,EAAE,IAAIzC,IAAI,CAACyC,KAAK,IAAI,IAAI,GAClChG,MAAM,CAAC2D,IAAI,CAACsC,KAAK,CAACtC,IAAI,CAACuC,MAAM,CAAC,CAAC,GAAGlG,MAAM,CAACmB,MAAM,CAAC,CAAC,GACjDoC,IAAI,CAACyC;gBACV,CACF,CAAC,eACFnG,IAAA,CAACF,OAAO;kBACNwG,CAAC,EAAE3B,KAAM;kBACT4B,CAAC,EAAE3B,KAAM;kBACTsB,IAAI,EAAExC,IAAI,CAAC8C,SAAS,IAAItF,cAAe;kBACvCuF,QAAQ,EAAE5F,cAAc,EAAE4F,QAAQ,IAAI,EAAG;kBACzCC,UAAU,EAAG7F,cAAc,EAAE6F,UAAU,IAAY,MAAO;kBAC1DC,UAAU,EAAC,QAAQ;kBACnBC,iBAAiB,EAAC,SAAS;kBAC3Bd,SAAS,EAAE,UAAUhB,KAAK,GAAG,GAAG,KAAKH,KAAK,KAAKC,KAAK,GAAI;kBAAAa,QAAA,EAEvD/B,IAAI,CAACmD;gBAAK,CACJ,CAAC;cAAA,GApBSnD,IAAI,CAACtB,EAqBV,CAAC;YAErB,CAAC;UAAC,CACD,CAAC,EAEHnB,gBAAgB,gBACfjB,IAAA,CAACP,MAAM;YACLqH,EAAE,EAAEtG,IAAI,GAAG,CAAE;YACbuG,EAAE,EAAEvG,IAAI,GAAG,CAAE;YACbwG,CAAC,EAAExG,IAAI,GAAG,CAAC,GAAGS,gBAAgB,GAAG,CAAE;YACnCgG,MAAM,EAAEjG,gBAAiB;YACzBkG,WAAW,EAAEjG,gBAAiB;YAC9BiF,IAAI,EAAC;UAAM,CACZ,CAAC,gBAEFlG,IAAA,CAACR,IAAI,IAAO,CACb;QAAA,CACE;MAAC,CACO,CAAC,EAEf4B,eAAe,gBACdpB,IAAA,CAACR,IAAI;QACH8F,KAAK,EAAE;UACL6B,QAAQ,EAAE,UAAU;UACpBC,GAAG,EAAE,KAAK;UACVC,IAAI,EAAE,KAAK;UACXvB,SAAS,EAAE,CACT;YAAEwB,UAAU,EAAE,EAAElC,gBAAgB,GAAG,CAAC;UAAE,CAAC,EACvC;YAAEmC,UAAU,EAAE,EAAEnC,gBAAgB,GAAG,CAAC;UAAE,CAAC,CACxC;UACDoC,MAAM,EAAE;QACV,CAAE;QAAA/B,QAAA,EAEDrE;MAAe,CACZ,CAAC,gBAEPpB,IAAA,CAACR,IAAI;QACH8F,KAAK,EAAE,CACLC,MAAM,CAACkC,WAAW,EAClB;UACE/B,KAAK,EAAEN,gBAAgB;UACvBO,MAAM,EAAEP,gBAAgB;UACxBS,YAAY,EAAET,gBAAgB,GAAG,CAAC;UAClCU,SAAS,EAAE,CACT;YAAEwB,UAAU,EAAE,CAAClC,gBAAgB,GAAG;UAAE,CAAC,EACrC;YAAEmC,UAAU,EAAE,CAACnC,gBAAgB,GAAG;UAAE,CAAC;QAEzC,CAAC,EACDxE,WAAW;MACX,CACH,CACF,eAEDZ,IAAA,CAACR,IAAI;QACH8F,KAAK,EAAE,CACLC,MAAM,CAACmC,eAAe,EACtBzG,gBAAgB,GAAG;UAAEmG,GAAG,EAAEnG;QAAiB,CAAC,GAAG,CAAC,CAAC,CACjD;QAAAwE,QAAA,eAEFzF,IAAA,CAACR,IAAI;UACH8F,KAAK,EAAE,CACLC,MAAM,CAACoC,OAAO,EACd;YAAEC,iBAAiB,EAAE7G;UAAU,CAAC,EAChCD,SAAS;QACT,CACH;MAAC,CACE,CAAC;IAAA,CACH;EAAC,CACH,CAAC;AAEX,CAAC;AAED,MAAMyE,MAAM,GAAGhG,UAAU,CAACsI,MAAM,CAAC;EAC/BrC,SAAS,EAAE;IACTsC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,SAAS,EAAE,EAAE;IACbC,YAAY,EAAE;EAChB,CAAC;EACDrC,cAAc,EAAE;IACdsC,QAAQ,EAAE,QAAQ;IAClBC,eAAe,EAAE;EACnB,CAAC;EACDV,WAAW,EAAE;IACXN,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,KAAK;IACVC,IAAI,EAAE,KAAK;IACXc,eAAe,EAAE,SAAS;IAC1BC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,SAAS;IACtBb,MAAM,EAAE;EACV,CAAC;EACDE,eAAe,EAAE;IACfP,QAAQ,EAAE,UAAU;IACpBE,IAAI,EAAE,KAAK;IACXvB,SAAS,EAAE,CAAC;MAAEwB,UAAU,EAAE,CAAC;IAAG,CAAC,EAAE;MAAEtC,MAAM,EAAE;IAAS,CAAC,CAAC;IACtDwC,MAAM,EAAE;EACV,CAAC;EACDG,OAAO,EAAE;IACPjC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTwC,eAAe,EAAE,aAAa;IAC9BG,WAAW,EAAE,OAAO;IACpBC,eAAe,EAAE,EAAE;IACnBC,gBAAgB,EAAE,EAAE;IACpBC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,aAAa;IAC9BC,gBAAgB,EAAE;EACpB,CAAC;EACDC,YAAY,EAAE;IACZC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBjD,YAAY,EAAE,EAAE;IAChBkD,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE,CAAC;IACfb,eAAe,EAAE;EACnB,CAAC;EACDc,gBAAgB,EAAE;IAChBvC,UAAU,EAAE,MAAM;IAClBD,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAenG,SAAS","ignoreList":[]}
|
|
@@ -172,9 +172,8 @@ export const UniversalModalProvider = ({
|
|
|
172
172
|
const ModalUI = CustomModalComponent || DefaultModalUI;
|
|
173
173
|
const value = useMemo(() => ({
|
|
174
174
|
showModal,
|
|
175
|
-
hideModal
|
|
176
|
-
|
|
177
|
-
}), [showModal, hideModal, state.isVisible]);
|
|
175
|
+
hideModal
|
|
176
|
+
}), [showModal, hideModal]);
|
|
178
177
|
return /*#__PURE__*/_jsx(ModalContext.Provider, {
|
|
179
178
|
value: value,
|
|
180
179
|
children: /*#__PURE__*/_jsxs(PortalProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Portal","PortalHost","PortalProvider","React","createContext","useCallback","useContext","useEffect","useMemo","useState","BackHandler","StyleSheet","TouchableOpacity","View","KeyboardAvoidingView","Animated","Easing","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useSafeAreaInsets","jsx","_jsx","jsxs","_jsxs","ModalContext","undefined","DEFAULT_MODAL_HOST","DefaultModalUI","isVisible","children","options","onClose","insets","isRendered","setIsRendered","opacity","closeOnBackdropPress","closeOnBackButton","animationConfig","duration","easing","bezier","position","animateFrom","avoidKeyboard","backdropStyle","containerStyle","closeIconComponent","value","finished","backHandler","addEventListener","remove","backdropAnimatedStyle","closeIconAnimatedStyle","contentAnimatedStyle","transform","push","translateY","scale","justifyContent","paddingBottom","bottom","paddingTop","top","ContentWrapper","style","absoluteFill","styles","overlayWrapper","backdrop","activeOpacity","onPress","closeIconContainer","pointerEvents","hitSlop","left","right","behavior","keyboardVerticalOffset","keyboardView","baseContainer","UniversalModalProvider","defaultOptions","portalHostName","CustomModalComponent","state","setState","content","showModal","hideModal","prev","setTimeout","ModalUI","Provider","name","hostName","useModal","context","Error","create","zIndex","elevation","backgroundColor","alignItems","width"],"sourceRoot":"..\\..\\..\\src","sources":["contexts/UniversalModalProvider.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,UAAU,EAAEC,cAAc,QAAQ,gBAAgB;AACnE,OAAOC,KAAK,IACVC,aAAa,EAEbC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,QAAQ,QACH,OAAO;AACd,SACEC,WAAW,EAEXC,UAAU,EACVC,gBAAgB,EAChBC,IAAI,QAEC,cAAc;AACrB,SAASC,oBAAoB,QAAQ,kCAAkC;AACvE,OAAOC,QAAQ,IACbC,MAAM,EACNC,OAAO,EACPC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,QAEL,yBAAyB;AAChC,SAASC,iBAAiB,QAAQ,gCAAgC;;AAElE;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["Portal","PortalHost","PortalProvider","React","createContext","useCallback","useContext","useEffect","useMemo","useState","BackHandler","StyleSheet","TouchableOpacity","View","KeyboardAvoidingView","Animated","Easing","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useSafeAreaInsets","jsx","_jsx","jsxs","_jsxs","ModalContext","undefined","DEFAULT_MODAL_HOST","DefaultModalUI","isVisible","children","options","onClose","insets","isRendered","setIsRendered","opacity","closeOnBackdropPress","closeOnBackButton","animationConfig","duration","easing","bezier","position","animateFrom","avoidKeyboard","backdropStyle","containerStyle","closeIconComponent","value","finished","backHandler","addEventListener","remove","backdropAnimatedStyle","closeIconAnimatedStyle","contentAnimatedStyle","transform","push","translateY","scale","justifyContent","paddingBottom","bottom","paddingTop","top","ContentWrapper","style","absoluteFill","styles","overlayWrapper","backdrop","activeOpacity","onPress","closeIconContainer","pointerEvents","hitSlop","left","right","behavior","keyboardVerticalOffset","keyboardView","baseContainer","UniversalModalProvider","defaultOptions","portalHostName","CustomModalComponent","state","setState","content","showModal","hideModal","prev","setTimeout","ModalUI","Provider","name","hostName","useModal","context","Error","create","zIndex","elevation","backgroundColor","alignItems","width"],"sourceRoot":"..\\..\\..\\src","sources":["contexts/UniversalModalProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
3
|
-
import { AppButtonProps } from "../Button";
|
|
2
|
+
import { TextStyle, ViewStyle } from "react-native";
|
|
4
3
|
export interface SpinWheelItem {
|
|
5
4
|
id: string | number;
|
|
6
5
|
label: string;
|
|
@@ -10,24 +9,15 @@ export interface SpinWheelItem {
|
|
|
10
9
|
}
|
|
11
10
|
interface SpinWheelProps {
|
|
12
11
|
items: SpinWheelItem[];
|
|
13
|
-
predeterminedWinner?: SpinWheelItem | string | number;
|
|
14
12
|
size?: number;
|
|
15
|
-
startSpin?: boolean;
|
|
16
13
|
winner?: SpinWheelItem | string | number;
|
|
17
|
-
minSpinDuration?: number;
|
|
18
14
|
spinDuration?: number;
|
|
19
|
-
friction?: number;
|
|
20
|
-
enabled?: boolean;
|
|
21
15
|
onSpinStart?: () => void;
|
|
22
16
|
onSpinEnd?: (item: SpinWheelItem) => void;
|
|
23
17
|
containerStyle?: ViewStyle;
|
|
24
18
|
centerStyle?: ViewStyle;
|
|
25
|
-
spinButtonText?: string;
|
|
26
19
|
wheelTextStyle?: TextStyle;
|
|
27
20
|
knobStyle?: ViewStyle;
|
|
28
|
-
actionButtonStyle?: ViewStyle;
|
|
29
|
-
actionButtonTextStyle?: TextStyle;
|
|
30
|
-
actionButtonProps?: Partial<Omit<AppButtonProps, "title" | "onPress">>;
|
|
31
21
|
wheelBorderColor?: string;
|
|
32
22
|
wheelBorderWidth?: number;
|
|
33
23
|
wheelTextColor?: string;
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Wheel/Wheel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAIL,SAAS,EAET,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;AAUD,UAAU,cAAc;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,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,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,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;AAMD,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA8OvC,CAAC;AAqDF,eAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalModalProvider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/UniversalModalProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAMV,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,SAAS,EAIT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAiB,EAMf,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,qCAAqC;IACrC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1C,mDAAmD;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAChE,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"UniversalModalProvider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/UniversalModalProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAMV,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,SAAS,EAIT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAiB,EAMf,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,qCAAqC;IACrC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1C,mDAAmD;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAChE,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,SAAS,CAAC;QACpB,OAAO,EAAE,YAAY,CAAC;QACtB,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC,CAAC;CACJ;AAMD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AA8JvD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA8D/D,CAAC;AAEF,eAAO,MAAM,QAAQ,wBAMpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
import {
|
|
3
|
-
View,
|
|
4
|
-
StyleSheet,
|
|
5
3
|
Animated,
|
|
6
|
-
Text,
|
|
7
|
-
TouchableOpacity,
|
|
8
4
|
Easing,
|
|
9
|
-
|
|
5
|
+
StyleSheet,
|
|
10
6
|
TextStyle,
|
|
7
|
+
View,
|
|
8
|
+
ViewStyle,
|
|
11
9
|
} from "react-native";
|
|
12
|
-
import {
|
|
13
|
-
import { AppButtonProps, Button } from "../Button";
|
|
10
|
+
import { Circle, G, Path, Svg, Text as SvgText } from "react-native-svg";
|
|
14
11
|
|
|
15
12
|
export interface SpinWheelItem {
|
|
16
13
|
id: string | number;
|
|
@@ -20,7 +17,6 @@ export interface SpinWheelItem {
|
|
|
20
17
|
textColor?: string;
|
|
21
18
|
}
|
|
22
19
|
|
|
23
|
-
//default random colors
|
|
24
20
|
const colors = [
|
|
25
21
|
"#FF0000", "#FFA500", "#FFFF00", "#008000", "#0000FF", "#800080",
|
|
26
22
|
"#FFC0CB", "#00FFFF", "#FF00FF", "#00FF00", "#4B0082", "#EE82EE",
|
|
@@ -31,24 +27,15 @@ const colors = [
|
|
|
31
27
|
|
|
32
28
|
interface SpinWheelProps {
|
|
33
29
|
items: SpinWheelItem[];
|
|
34
|
-
predeterminedWinner?: SpinWheelItem | string | number;
|
|
35
30
|
size?: number;
|
|
36
|
-
startSpin?: boolean;
|
|
37
31
|
winner?: SpinWheelItem | string | number;
|
|
38
|
-
minSpinDuration?: number;
|
|
39
32
|
spinDuration?: number;
|
|
40
|
-
friction?: number;
|
|
41
|
-
enabled?: boolean;
|
|
42
33
|
onSpinStart?: () => void;
|
|
43
34
|
onSpinEnd?: (item: SpinWheelItem) => void;
|
|
44
35
|
containerStyle?: ViewStyle;
|
|
45
36
|
centerStyle?: ViewStyle;
|
|
46
|
-
spinButtonText?: string;
|
|
47
37
|
wheelTextStyle?: TextStyle;
|
|
48
38
|
knobStyle?: ViewStyle;
|
|
49
|
-
actionButtonStyle?: ViewStyle;
|
|
50
|
-
actionButtonTextStyle?: TextStyle;
|
|
51
|
-
actionButtonProps?: Partial<Omit<AppButtonProps, "title" | "onPress">>;
|
|
52
39
|
wheelBorderColor?: string;
|
|
53
40
|
wheelBorderWidth?: number;
|
|
54
41
|
wheelTextColor?: string;
|
|
@@ -57,96 +44,83 @@ interface SpinWheelProps {
|
|
|
57
44
|
centerComponent?: React.ReactNode;
|
|
58
45
|
}
|
|
59
46
|
|
|
60
|
-
//
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const EXTRA_SPINS = 3; // Number of extra full rotations before stopping
|
|
47
|
+
// Config for the single animation
|
|
48
|
+
const TOTAL_SPINS = 5; // How many full rotations before stopping
|
|
49
|
+
const SPIN_DURATION = 4000; // Total time for the one animation
|
|
64
50
|
|
|
65
51
|
const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
66
52
|
items,
|
|
67
53
|
size = 300,
|
|
68
54
|
winner,
|
|
69
|
-
minSpinDuration = 2000,
|
|
70
|
-
onSpinStart,
|
|
71
55
|
onSpinEnd,
|
|
72
56
|
containerStyle,
|
|
73
57
|
centerStyle,
|
|
74
|
-
spinButtonText = "Spin",
|
|
75
58
|
wheelTextStyle,
|
|
76
59
|
knobStyle,
|
|
77
60
|
knobColor = "#D81E5B",
|
|
78
|
-
actionButtonStyle,
|
|
79
|
-
actionButtonTextStyle,
|
|
80
61
|
wheelBorderColor,
|
|
81
62
|
wheelBorderWidth,
|
|
82
63
|
wheelTextColor = "#FFFFFF",
|
|
83
|
-
actionButtonProps,
|
|
84
64
|
centerSize,
|
|
85
65
|
centerComponent,
|
|
86
66
|
}) => {
|
|
87
67
|
const wheelItems = items.length > 0 ? items : [];
|
|
88
|
-
|
|
89
|
-
const spinLoop = useRef<Animated.CompositeAnimation | null>(null);
|
|
90
|
-
const spinStartTime = useRef<number>(0);
|
|
91
|
-
|
|
92
68
|
const [spinning, setSpinning] = useState(false);
|
|
69
|
+
|
|
70
|
+
// 0-1 represents 0-360 degrees. We keep increasing this value.
|
|
93
71
|
const rotateValue = useRef(new Animated.Value(0)).current;
|
|
94
72
|
const rotationRef = useRef(0);
|
|
95
73
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
useNativeDriver: true,
|
|
106
|
-
})
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
spinLoop.current.start();
|
|
110
|
-
setSpinning(true);
|
|
111
|
-
onSpinStart?.();
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
const stopOnWinner = (winnerValue: SpinWheelItem | string | number) => {
|
|
115
|
-
if (!spinLoop.current) return;
|
|
74
|
+
// Sync the ref with the animated value to ensure we start next spin from where we left off
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
const listener = rotateValue.addListener(({ value }) => {
|
|
77
|
+
rotationRef.current = value;
|
|
78
|
+
});
|
|
79
|
+
return () => {
|
|
80
|
+
rotateValue.removeListener(listener);
|
|
81
|
+
};
|
|
82
|
+
}, [rotateValue]);
|
|
116
83
|
|
|
117
|
-
|
|
118
|
-
|
|
84
|
+
// Main Logic: Trigger spin when 'winner' is provided
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
if (winner != null && !spinning) {
|
|
87
|
+
spinToWinner(winner);
|
|
88
|
+
}
|
|
89
|
+
}, [winner]);
|
|
119
90
|
|
|
91
|
+
const spinToWinner = (winnerValue: SpinWheelItem | string | number) => {
|
|
120
92
|
const winnerId =
|
|
121
93
|
typeof winnerValue === "object" ? winnerValue.id : winnerValue;
|
|
122
94
|
|
|
123
95
|
const index = items.findIndex((i) => i.id === winnerId);
|
|
124
|
-
if (index === -1)
|
|
96
|
+
if (index === -1) {
|
|
97
|
+
console.warn("Winner not found in items array");
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
125
100
|
|
|
126
|
-
|
|
101
|
+
setSpinning(true);
|
|
102
|
+
|
|
103
|
+
// 1. Calculate the angle where the item is centered
|
|
127
104
|
const anglePerItem = 360 / items.length;
|
|
105
|
+
// We want the item centered at 270 degrees (top of the wheel in standard SVG)
|
|
128
106
|
const segmentCenter = (index + 0.5) * anglePerItem;
|
|
129
107
|
const targetAngle = (270 - segmentCenter + 360) % 360;
|
|
130
108
|
|
|
131
|
-
//
|
|
132
|
-
const
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
// Calculate
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const totalRotation = offset + extraRotations;
|
|
141
|
-
|
|
142
|
-
// Final rotation value
|
|
143
|
-
const finalRotation = currentRotation + totalRotation / 360;
|
|
109
|
+
// 2. Calculate offset from current position
|
|
110
|
+
const currentRotationDegrees = (rotationRef.current * 360) % 360;
|
|
111
|
+
const offset = (targetAngle - currentRotationDegrees + 360) % 360;
|
|
112
|
+
|
|
113
|
+
// 3. Calculate total rotation:
|
|
114
|
+
// Current Rotation + (Distance to target) + (Extra Full Spins)
|
|
115
|
+
// We divide by 360 because our Animated.Value goes from 0 to 1 for a full circle
|
|
116
|
+
const finalRotation =
|
|
117
|
+
rotationRef.current + (offset + 360 * TOTAL_SPINS) / 360;
|
|
144
118
|
|
|
145
|
-
//
|
|
119
|
+
// 4. One smooth animation
|
|
146
120
|
Animated.timing(rotateValue, {
|
|
147
121
|
toValue: finalRotation,
|
|
148
|
-
duration:
|
|
149
|
-
easing: Easing.out(Easing.cubic),
|
|
122
|
+
duration: SPIN_DURATION,
|
|
123
|
+
easing: Easing.out(Easing.cubic), // Starts fast, slows down smoothly
|
|
150
124
|
useNativeDriver: true,
|
|
151
125
|
}).start(() => {
|
|
152
126
|
rotationRef.current = finalRotation;
|
|
@@ -155,16 +129,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
155
129
|
});
|
|
156
130
|
};
|
|
157
131
|
|
|
158
|
-
useEffect(() => {
|
|
159
|
-
const listener = rotateValue.addListener(({ value }) => {
|
|
160
|
-
rotationRef.current = value;
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
return () => {
|
|
164
|
-
rotateValue.removeListener(listener);
|
|
165
|
-
};
|
|
166
|
-
}, [rotateValue]);
|
|
167
|
-
|
|
168
132
|
const anglePerItem = wheelItems.length > 0 ? 360 / wheelItems.length : 0;
|
|
169
133
|
|
|
170
134
|
const generateWheelPaths = () => {
|
|
@@ -206,19 +170,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
206
170
|
|
|
207
171
|
const wheelPaths = generateWheelPaths();
|
|
208
172
|
|
|
209
|
-
useEffect(() => {
|
|
210
|
-
if (!winner || !spinning) return;
|
|
211
|
-
|
|
212
|
-
const elapsed = Date.now() - spinStartTime.current;
|
|
213
|
-
const delay = Math.max(0, minSpinDuration - elapsed);
|
|
214
|
-
|
|
215
|
-
const timeout = setTimeout(() => {
|
|
216
|
-
stopOnWinner(winner);
|
|
217
|
-
}, delay);
|
|
218
|
-
|
|
219
|
-
return () => clearTimeout(timeout);
|
|
220
|
-
}, [winner, spinning]);
|
|
221
|
-
|
|
222
173
|
const rotate = rotateValue.interpolate({
|
|
223
174
|
inputRange: [0, 1],
|
|
224
175
|
outputRange: ["0deg", "360deg"],
|
|
@@ -270,7 +221,7 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
270
221
|
})}
|
|
271
222
|
</G>
|
|
272
223
|
|
|
273
|
-
{wheelBorderWidth
|
|
224
|
+
{wheelBorderWidth ? (
|
|
274
225
|
<Circle
|
|
275
226
|
cx={size / 2}
|
|
276
227
|
cy={size / 2}
|
|
@@ -279,6 +230,8 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
279
230
|
strokeWidth={wheelBorderWidth}
|
|
280
231
|
fill="none"
|
|
281
232
|
/>
|
|
233
|
+
) : (
|
|
234
|
+
<View></View>
|
|
282
235
|
)}
|
|
283
236
|
</Svg>
|
|
284
237
|
</Animated.View>
|
|
@@ -330,26 +283,6 @@ const SpinWheel: React.FC<SpinWheelProps> = ({
|
|
|
330
283
|
]}
|
|
331
284
|
/>
|
|
332
285
|
</View>
|
|
333
|
-
|
|
334
|
-
<View
|
|
335
|
-
style={{
|
|
336
|
-
position: "absolute",
|
|
337
|
-
width: "100%",
|
|
338
|
-
alignItems: "center",
|
|
339
|
-
justifyContent: "center",
|
|
340
|
-
bottom: -70,
|
|
341
|
-
zIndex: 2,
|
|
342
|
-
}}
|
|
343
|
-
>
|
|
344
|
-
<Button
|
|
345
|
-
style={[styles.actionButton, actionButtonStyle]}
|
|
346
|
-
onPress={startInfiniteSpin}
|
|
347
|
-
title={spinButtonText}
|
|
348
|
-
disabled={spinning}
|
|
349
|
-
textStyle={[styles.actionButtonText, actionButtonTextStyle]}
|
|
350
|
-
{...actionButtonProps}
|
|
351
|
-
/>
|
|
352
|
-
</View>
|
|
353
286
|
</View>
|
|
354
287
|
</View>
|
|
355
288
|
);
|
|
@@ -51,7 +51,6 @@ export interface ModalOptions {
|
|
|
51
51
|
interface ModalContextType {
|
|
52
52
|
showModal: (content: ReactNode, options?: ModalOptions) => void;
|
|
53
53
|
hideModal: () => void;
|
|
54
|
-
isVisible: boolean;
|
|
55
54
|
}
|
|
56
55
|
|
|
57
56
|
interface ModalProviderProps {
|
|
@@ -272,8 +271,8 @@ export const UniversalModalProvider: React.FC<ModalProviderProps> = ({
|
|
|
272
271
|
const ModalUI = CustomModalComponent || DefaultModalUI;
|
|
273
272
|
|
|
274
273
|
const value = useMemo(
|
|
275
|
-
() => ({ showModal, hideModal
|
|
276
|
-
[showModal, hideModal
|
|
274
|
+
() => ({ showModal, hideModal }),
|
|
275
|
+
[showModal, hideModal],
|
|
277
276
|
);
|
|
278
277
|
|
|
279
278
|
return (
|