react-native-confetti-reanimated 0.1.0 → 0.1.2

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.
@@ -2,10 +2,11 @@
2
2
 
3
3
  import React, { useEffect } from 'react';
4
4
  import { StyleSheet } from 'react-native';
5
- import Animated, { useAnimatedStyle, useSharedValue, withTiming, Easing, runOnJS } from 'react-native-reanimated';
5
+ import Animated, { useAnimatedStyle, useSharedValue, useFrameCallback, cancelAnimation } from 'react-native-reanimated';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  export const ConfettiParticle = ({
8
8
  particle,
9
+ config,
9
10
  duration,
10
11
  onComplete
11
12
  }) => {
@@ -13,68 +14,159 @@ export const ConfettiParticle = ({
13
14
  const translateY = useSharedValue(0);
14
15
  const rotation = useSharedValue(particle.rotation);
15
16
  const opacity = useSharedValue(1);
17
+
18
+ // Velocity state
19
+ const velX = useSharedValue(particle.velocity.x);
20
+ const velY = useSharedValue(particle.velocity.y);
21
+ const startTime = useSharedValue(Date.now());
22
+ const isComplete = useSharedValue(false);
23
+
24
+ // Canvas-confetti realistic wobble and tilt variables
25
+ const wobble = useSharedValue(Math.random() * 10);
26
+ const wobbleSpeed = useSharedValue(Math.min(0.11, Math.random() * 0.1 + 0.05));
27
+ const tiltAngle = useSharedValue(particle.tiltAngle);
28
+ const tiltSin = useSharedValue(0);
29
+ const tiltCos = useSharedValue(0);
30
+ const random = useSharedValue(Math.random() + 2);
31
+ const tick = useSharedValue(0);
32
+ const totalTicks = useSharedValue(duration / 1000 * 60); // 60fps
33
+
16
34
  useEffect(() => {
17
- // Animate the particle
18
- translateX.value = withTiming(particle.velocity.x * (duration / 16), {
19
- duration,
20
- easing: Easing.linear
21
- });
22
- translateY.value = withTiming(particle.velocity.y * (duration / 16), {
23
- duration,
24
- easing: Easing.bezier(0.33, 1, 0.68, 1) // Custom easing for gravity effect
25
- });
26
- rotation.value = withTiming(particle.rotation + particle.rotationVelocity * (duration / 16), {
27
- duration,
28
- easing: Easing.linear
29
- });
30
- opacity.value = withTiming(0, {
31
- duration,
32
- easing: Easing.linear
33
- }, finished => {
34
- if (finished && onComplete) {
35
- runOnJS(onComplete)();
35
+ startTime.value = Date.now();
36
+ tick.value = 0;
37
+
38
+ // Cleanup callback
39
+ const timer = setTimeout(() => {
40
+ isComplete.value = true;
41
+ if (onComplete) {
42
+ onComplete();
36
43
  }
37
- });
38
- }, [duration, onComplete, opacity, particle, rotation, translateX, translateY]);
44
+ }, duration);
45
+ return () => {
46
+ clearTimeout(timer);
47
+ cancelAnimation(translateX);
48
+ cancelAnimation(translateY);
49
+ cancelAnimation(rotation);
50
+ cancelAnimation(opacity);
51
+ };
52
+ }, [duration, onComplete, opacity, isComplete, startTime, translateX, translateY, rotation, tick]);
53
+
54
+ // Real-time physics simulation using frame callback
55
+ useFrameCallback(() => {
56
+ 'worklet';
57
+
58
+ if (isComplete.value) {
59
+ return;
60
+ }
61
+ const elapsed = Date.now() - startTime.value;
62
+ if (elapsed >= duration) {
63
+ isComplete.value = true;
64
+ return;
65
+ }
66
+
67
+ // Update position based on current velocity
68
+ translateX.value += velX.value;
69
+ translateY.value += velY.value;
70
+
71
+ // Apply gravity (increases downward velocity) - realistic physics!
72
+ velY.value += config.gravity;
73
+
74
+ // Apply drift (horizontal wind)
75
+ velX.value += config.drift;
76
+
77
+ // Apply decay (air resistance)
78
+ velX.value *= config.decay;
79
+ velY.value *= config.decay;
80
+
81
+ // Update rotation - ALL particles spin faster when moving fast, slower when slowing down
82
+ const speed = Math.sqrt(velX.value * velX.value + velY.value * velY.value);
83
+ const speedBoost = 1 + speed / 20;
84
+ rotation.value += particle.rotationVelocity * speedBoost;
85
+
86
+ // Canvas-confetti wobble effect (creates side-to-side flutter)
87
+ wobble.value += wobbleSpeed.value;
88
+
89
+ // Canvas-confetti tilt animation (creates 3D tumbling effect)
90
+ tiltAngle.value += 0.1;
91
+ tiltSin.value = Math.sin(tiltAngle.value);
92
+ tiltCos.value = Math.cos(tiltAngle.value);
93
+ random.value = Math.random() + 2;
94
+
95
+ // Update tick for progressive opacity fade
96
+ tick.value += 1;
97
+
98
+ // Canvas-confetti progressive fade: opacity decreases linearly over lifetime
99
+ const progress = tick.value / totalTicks.value;
100
+ opacity.value = 1 - progress;
101
+ });
39
102
  const animatedStyle = useAnimatedStyle(() => {
103
+ // Canvas-confetti wobble calculation (circular motion)
104
+ const wobbleX = 10 * config.scalar * Math.cos(wobble.value);
105
+ const wobbleY = 10 * config.scalar * Math.sin(wobble.value);
106
+
107
+ // Canvas-confetti 3D-like positioning with tilt
108
+ const x1 = translateX.value + random.value * tiltCos.value;
109
+ const y1 = translateY.value + random.value * tiltSin.value;
110
+ const x2 = translateX.value + wobbleX + random.value * tiltCos.value;
111
+ const y2 = translateY.value + wobbleY + random.value * tiltSin.value;
112
+
113
+ // Dynamic scaling based on wobble (creates 3D depth perception)
114
+ const scaleX = Math.abs(x2 - x1) * 0.1;
115
+ const scaleY = Math.abs(y2 - y1) * 0.1;
40
116
  return {
41
117
  transform: [{
42
- translateX: translateX.value
118
+ translateX: x2
43
119
  }, {
44
- translateY: translateY.value
120
+ translateY: y2
45
121
  }, {
46
122
  rotate: `${rotation.value}deg`
123
+ }, {
124
+ scaleX: Math.max(0.3, scaleX)
125
+ },
126
+ // Prevent too small
127
+ {
128
+ scaleY: Math.max(0.3, scaleY)
47
129
  }],
48
130
  opacity: opacity.value
49
131
  };
50
132
  });
51
133
  const renderShape = () => {
52
- const baseStyle = [styles.particle, {
53
- width: particle.size,
54
- height: particle.size,
55
- backgroundColor: particle.color
56
- }];
57
134
  if (particle.shape === 'circle') {
135
+ // Circles for snow - perfectly round
136
+ const size = particle.width;
58
137
  return /*#__PURE__*/_jsx(Animated.View, {
59
- style: [...baseStyle, styles.circle, animatedStyle]
138
+ style: [styles.particle, styles.circle, {
139
+ width: size,
140
+ height: size,
141
+ backgroundColor: particle.color
142
+ }, animatedStyle]
60
143
  });
61
- } else if (particle.shape === 'triangle') {
62
- return /*#__PURE__*/_jsx(Animated.View, {
63
- style: [...baseStyle, styles.transparent, animatedStyle],
64
- children: /*#__PURE__*/_jsx(Animated.View, {
65
- style: [styles.triangle, {
66
- borderLeftWidth: particle.size / 2,
67
- borderRightWidth: particle.size / 2,
68
- borderBottomWidth: particle.size,
69
- borderBottomColor: particle.color
70
- }]
71
- })
144
+ }
145
+ if (particle.shape === 'star') {
146
+ // Stars using Unicode character
147
+ const fontSize = particle.width * 1.5;
148
+ return /*#__PURE__*/_jsx(Animated.Text, {
149
+ style: [styles.particle, {
150
+ fontSize,
151
+ color: particle.color,
152
+ textShadowColor: particle.color,
153
+ textShadowOffset: {
154
+ width: 0,
155
+ height: 0
156
+ },
157
+ textShadowRadius: 3
158
+ }, animatedStyle],
159
+ children: "\u2605"
72
160
  });
73
161
  }
74
162
 
75
- // Square (default)
163
+ // Rectangles - sharp, thin confetti strips
76
164
  return /*#__PURE__*/_jsx(Animated.View, {
77
- style: [...baseStyle, animatedStyle]
165
+ style: [styles.particle, {
166
+ width: particle.width,
167
+ height: particle.height,
168
+ backgroundColor: particle.color
169
+ }, animatedStyle]
78
170
  });
79
171
  };
80
172
  return /*#__PURE__*/_jsx(Animated.View, {
@@ -94,17 +186,6 @@ const styles = StyleSheet.create({
94
186
  },
95
187
  circle: {
96
188
  borderRadius: 999
97
- },
98
- transparent: {
99
- backgroundColor: 'transparent'
100
- },
101
- triangle: {
102
- width: 0,
103
- height: 0,
104
- backgroundColor: 'transparent',
105
- borderStyle: 'solid',
106
- borderLeftColor: 'transparent',
107
- borderRightColor: 'transparent'
108
189
  }
109
190
  });
110
191
  //# sourceMappingURL=ConfettiParticle.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","StyleSheet","Animated","useAnimatedStyle","useSharedValue","withTiming","Easing","runOnJS","jsx","_jsx","ConfettiParticle","particle","duration","onComplete","translateX","translateY","rotation","opacity","value","velocity","x","easing","linear","y","bezier","rotationVelocity","finished","animatedStyle","transform","rotate","renderShape","baseStyle","styles","width","size","height","backgroundColor","color","shape","View","style","circle","transparent","children","triangle","borderLeftWidth","borderRightWidth","borderBottomWidth","borderBottomColor","container","left","top","create","position","borderRadius","borderStyle","borderLeftColor","borderRightColor"],"sourceRoot":"../../src","sources":["ConfettiParticle.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","StyleSheet","Animated","useAnimatedStyle","useSharedValue","useFrameCallback","cancelAnimation","jsx","_jsx","ConfettiParticle","particle","config","duration","onComplete","translateX","translateY","rotation","opacity","velX","velocity","x","velY","y","startTime","Date","now","isComplete","wobble","Math","random","wobbleSpeed","min","tiltAngle","tiltSin","tiltCos","tick","totalTicks","value","timer","setTimeout","clearTimeout","elapsed","gravity","drift","decay","speed","sqrt","speedBoost","rotationVelocity","sin","cos","progress","animatedStyle","wobbleX","scalar","wobbleY","x1","y1","x2","y2","scaleX","abs","scaleY","transform","rotate","max","renderShape","shape","size","width","View","style","styles","circle","height","backgroundColor","color","fontSize","Text","textShadowColor","textShadowOffset","textShadowRadius","children","container","left","top","create","position","borderRadius"],"sourceRoot":"../../src","sources":["ConfettiParticle.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,9 +5,9 @@
5
5
  */
6
6
 
7
7
  /**
8
- * Basic celebration with confetti from the center
8
+ * Basic Cannon - The default basic blast of confetti
9
9
  */
10
- export const celebration = {
10
+ export const basicCannon = {
11
11
  particleCount: 100,
12
12
  spread: 70,
13
13
  origin: {
@@ -16,36 +16,70 @@ export const celebration = {
16
16
  };
17
17
 
18
18
  /**
19
- * Fireworks effect
19
+ * Random Direction - Random amount in random directions
20
+ */
21
+ export const randomDirection = {
22
+ particleCount: Math.floor(200 + Math.random() * 100),
23
+ angle: Math.random() * 360,
24
+ spread: 180 + Math.random() * 180,
25
+ origin: {
26
+ x: Math.random(),
27
+ y: Math.random() - 0.2
28
+ },
29
+ startVelocity: 30 + Math.random() * 20
30
+ };
31
+
32
+ /**
33
+ * Realistic Look - Mix multiple effects to avoid "flattened cone"
34
+ * Fires 3 bursts with varying parameters for natural look
35
+ */
36
+ export const realistic = {
37
+ particleCount: 100,
38
+ // Per burst (will fire 3x)
39
+ spread: 70,
40
+ startVelocity: 45,
41
+ decay: 0.91,
42
+ scalar: 1,
43
+ origin: {
44
+ y: 0.7
45
+ }
46
+ };
47
+
48
+ /**
49
+ * Fireworks - From the sides
20
50
  */
21
51
  export const fireworks = {
22
- particleCount: 150,
52
+ particleCount: 100,
23
53
  spread: 360,
24
54
  startVelocity: 30,
25
55
  decay: 0.94,
26
- scalar: 1.2
56
+ scalar: 1.2,
57
+ origin: {
58
+ y: 0.6
59
+ }
27
60
  };
28
61
 
29
62
  /**
30
- * Confetti from the bottom
63
+ * Stars - Burst of star shapes
31
64
  */
32
- export const bottomCannon = {
65
+ export const stars = {
33
66
  particleCount: 50,
34
- angle: 60,
35
- spread: 55,
36
- origin: {
37
- y: 0.8,
38
- x: 0.5
39
- },
40
- startVelocity: 55
67
+ spread: 360,
68
+ startVelocity: 20,
69
+ decay: 0.95,
70
+ gravity: 0.5,
71
+ shapes: ['star'],
72
+ scalar: 1.5,
73
+ // Scaled appropriately for star character
74
+ colors: ['#FFD700', '#FFA500', '#FFFF00']
41
75
  };
42
76
 
43
77
  /**
44
- * Confetti from left side
78
+ * Left Cannon - Confetti from left side
45
79
  */
46
80
  export const leftCannon = {
47
81
  particleCount: 50,
48
- angle: 45,
82
+ angle: 60,
49
83
  spread: 55,
50
84
  origin: {
51
85
  x: 0,
@@ -55,11 +89,11 @@ export const leftCannon = {
55
89
  };
56
90
 
57
91
  /**
58
- * Confetti from right side
92
+ * Right Cannon - Confetti from right side
59
93
  */
60
94
  export const rightCannon = {
61
95
  particleCount: 50,
62
- angle: 135,
96
+ angle: 120,
63
97
  spread: 55,
64
98
  origin: {
65
99
  x: 1,
@@ -69,74 +103,26 @@ export const rightCannon = {
69
103
  };
70
104
 
71
105
  /**
72
- * Realistic looking confetti
106
+ * Bottom Cannon - Confetti from bottom
73
107
  */
74
- export const realistic = {
75
- particleCount: 200,
76
- spread: 160,
77
- origin: {
78
- y: 0.5
79
- },
80
- startVelocity: 35,
81
- gravity: 1.5,
82
- drift: 1,
83
- tilt: true,
84
- shapes: ['square', 'circle', 'triangle'],
85
- scalar: 0.8
86
- };
87
-
88
- /**
89
- * Snow effect
90
- */
91
- export const snow = {
92
- particleCount: 100,
93
- spread: 180,
94
- origin: {
95
- y: -0.1
96
- },
97
- startVelocity: 0,
98
- gravity: 0.3,
99
- drift: 1,
100
- colors: ['#ffffff', '#e8f4ff', '#c9e5ff'],
101
- shapes: ['circle'],
102
- scalar: 0.6,
103
- angle: 270
104
- };
105
-
106
- /**
107
- * Stars effect
108
- */
109
- export const stars = {
108
+ export const bottomCannon = {
110
109
  particleCount: 50,
111
- spread: 360,
112
- startVelocity: 20,
113
- decay: 0.95,
114
- gravity: 0.5,
115
- colors: ['#FFD700', '#FFA500', '#FFFF00'],
116
- shapes: ['circle'],
117
- scalar: 0.5
118
- };
119
-
120
- /**
121
- * School pride (custom colors)
122
- */
123
- export const schoolPride = {
124
- particleCount: 100,
125
- spread: 160,
110
+ angle: 90,
111
+ spread: 45,
126
112
  origin: {
127
- y: 0.6
113
+ y: 1,
114
+ x: 0.5
128
115
  },
129
- colors: ['#bb0000', '#ffffff']
116
+ startVelocity: 55
130
117
  };
131
118
  export const presets = {
132
- celebration,
119
+ basicCannon,
120
+ randomDirection,
121
+ realistic,
133
122
  fireworks,
134
- bottomCannon,
123
+ stars,
135
124
  leftCannon,
136
125
  rightCannon,
137
- realistic,
138
- snow,
139
- stars,
140
- schoolPride
126
+ bottomCannon
141
127
  };
142
128
  //# sourceMappingURL=presets.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["celebration","particleCount","spread","origin","y","fireworks","startVelocity","decay","scalar","bottomCannon","angle","x","leftCannon","rightCannon","realistic","gravity","drift","tilt","shapes","snow","colors","stars","schoolPride","presets"],"sourceRoot":"../../src","sources":["presets.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["basicCannon","particleCount","spread","origin","y","randomDirection","Math","floor","random","angle","x","startVelocity","realistic","decay","scalar","fireworks","stars","gravity","shapes","colors","leftCannon","rightCannon","bottomCannon","presets"],"sourceRoot":"../../src","sources":["presets.ts"],"mappings":";;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,MAAMA,WAA2B,GAAG;EACzCC,aAAa,EAAE,GAAG;EAClBC,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE;IAAEC,CAAC,EAAE;EAAI;AACnB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,eAA+B,GAAG;EAC7CJ,aAAa,EAAEK,IAAI,CAACC,KAAK,CAAC,GAAG,GAAGD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;EACpDC,KAAK,EAAEH,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG;EAC1BN,MAAM,EAAE,GAAG,GAAGI,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG;EACjCL,MAAM,EAAE;IACNO,CAAC,EAAEJ,IAAI,CAACE,MAAM,CAAC,CAAC;IAChBJ,CAAC,EAAEE,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG;EACrB,CAAC;EACDG,aAAa,EAAE,EAAE,GAAGL,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG;AACtC,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMI,SAAyB,GAAG;EACvCX,aAAa,EAAE,GAAG;EAAE;EACpBC,MAAM,EAAE,EAAE;EACVS,aAAa,EAAE,EAAE;EACjBE,KAAK,EAAE,IAAI;EACXC,MAAM,EAAE,CAAC;EACTX,MAAM,EAAE;IAAEC,CAAC,EAAE;EAAI;AACnB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMW,SAAyB,GAAG;EACvCd,aAAa,EAAE,GAAG;EAClBC,MAAM,EAAE,GAAG;EACXS,aAAa,EAAE,EAAE;EACjBE,KAAK,EAAE,IAAI;EACXC,MAAM,EAAE,GAAG;EACXX,MAAM,EAAE;IAAEC,CAAC,EAAE;EAAI;AACnB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMY,KAAqB,GAAG;EACnCf,aAAa,EAAE,EAAE;EACjBC,MAAM,EAAE,GAAG;EACXS,aAAa,EAAE,EAAE;EACjBE,KAAK,EAAE,IAAI;EACXI,OAAO,EAAE,GAAG;EACZC,MAAM,EAAE,CAAC,MAAM,CAAC;EAChBJ,MAAM,EAAE,GAAG;EAAE;EACbK,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS;AAC1C,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,UAA0B,GAAG;EACxCnB,aAAa,EAAE,EAAE;EACjBQ,KAAK,EAAE,EAAE;EACTP,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE;IAAEO,CAAC,EAAE,CAAC;IAAEN,CAAC,EAAE;EAAI,CAAC;EACxBO,aAAa,EAAE;AACjB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMU,WAA2B,GAAG;EACzCpB,aAAa,EAAE,EAAE;EACjBQ,KAAK,EAAE,GAAG;EACVP,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE;IAAEO,CAAC,EAAE,CAAC;IAAEN,CAAC,EAAE;EAAI,CAAC;EACxBO,aAAa,EAAE;AACjB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMW,YAA4B,GAAG;EAC1CrB,aAAa,EAAE,EAAE;EACjBQ,KAAK,EAAE,EAAE;EACTP,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE;IAAEC,CAAC,EAAE,CAAC;IAAEM,CAAC,EAAE;EAAI,CAAC;EACxBC,aAAa,EAAE;AACjB,CAAC;AAED,OAAO,MAAMY,OAAO,GAAG;EACrBvB,WAAW;EACXK,eAAe;EACfO,SAAS;EACTG,SAAS;EACTC,KAAK;EACLI,UAAU;EACVC,WAAW;EACXC;AACF,CAAC","ignoreList":[]}
@@ -1,6 +1,49 @@
1
1
  "use strict";
2
2
 
3
- export const DEFAULT_COLORS = ['#26ccff', '#a25afd', '#ff5e7e', '#88ff5a', '#fcff42', '#ffa62d', '#ff36ff'];
3
+ // Canvas-confetti uses highly contrasting, distinct colors for realistic effect
4
+ // Each color is maximally different from others for clear visibility
5
+ export const DEFAULT_COLORS = [
6
+ // Primary vibrant colors (maximally distinct)
7
+ '#26ccff',
8
+ // Bright Cyan
9
+ '#a25afd',
10
+ // Purple
11
+ '#ff5e7e',
12
+ // Pink
13
+ '#88ff5a',
14
+ // Lime Green
15
+ '#fcff42',
16
+ // Yellow
17
+ '#ffa62d',
18
+ // Orange
19
+ '#ff36ff',
20
+ // Magenta
21
+ // Secondary distinct colors
22
+ '#1e90ff',
23
+ // Dodger Blue
24
+ '#9400d3',
25
+ // Dark Violet
26
+ '#ff1493',
27
+ // Deep Pink
28
+ '#32cd32',
29
+ // Lime
30
+ '#ffd700',
31
+ // Gold
32
+ '#ff6347',
33
+ // Tomato
34
+ '#00ffff',
35
+ // Cyan
36
+ '#ff00ff',
37
+ // Fuchsia
38
+ // Additional contrast colors
39
+ '#00ff00',
40
+ // Pure Green
41
+ '#ff0000',
42
+ // Pure Red
43
+ '#0000ff',
44
+ // Pure Blue
45
+ '#ffff00' // Pure Yellow
46
+ ];
4
47
  export const DEFAULT_CONFIG = {
5
48
  particleCount: 50,
6
49
  angle: 90,
@@ -16,7 +59,8 @@ export const DEFAULT_CONFIG = {
16
59
  x: 0.5,
17
60
  y: 0.5
18
61
  },
19
- shapes: ['square', 'circle'],
62
+ shapes: ['square'],
63
+ // Rectangular strips are most realistic
20
64
  tilt: true,
21
65
  tiltAngleIncrement: 10,
22
66
  tickDuration: 200,
@@ -56,22 +100,34 @@ export const createConfettiParticles = (config, screenWidth, screenHeight) => {
56
100
  const particles = [];
57
101
  const angleInRadians = degreesToRadians(config.angle);
58
102
  const spreadInRadians = degreesToRadians(config.spread);
103
+ const timestamp = Date.now();
59
104
  for (let i = 0; i < config.particleCount; i++) {
60
- const angle = angleInRadians + randomRange(-spreadInRadians / 2, spreadInRadians / 2);
61
- const velocity = config.startVelocity * (0.5 + Math.random() * 0.5);
105
+ // Add spread variation to the angle
106
+ const spreadVariation = randomRange(-spreadInRadians / 2, spreadInRadians / 2);
107
+ const particleAngle = angleInRadians + spreadVariation;
108
+ // Randomize velocity within range
109
+ const velocityMagnitude = config.startVelocity * (0.5 + Math.random() * 0.5);
110
+ // Create confetti particles - broader and shorter like canvas-confetti
111
+ const baseWidth = (6 + Math.random() * 4) * config.scalar; // 6-10px wide (BROADER)
112
+ const aspectRatio = 0.5 + Math.random() * 0.3; // 0.5-0.8 ratio (SHORTER than wide)
62
113
  const particle = {
63
- id: `confetti-${i}-${Date.now()}`,
114
+ id: `confetti-${timestamp}-${i}-${Math.random()}`,
64
115
  color: randomFromArray(config.colors),
65
116
  shape: randomFromArray(config.shapes),
66
117
  x: (config.origin.x ?? 0.5) * screenWidth,
67
118
  y: (config.origin.y ?? 0.5) * screenHeight,
68
- size: (5 + Math.random() * 5) * config.scalar,
119
+ width: baseWidth,
120
+ height: baseWidth * aspectRatio,
121
+ // Height is SMALLER than width
69
122
  velocity: {
70
- x: Math.cos(angle) * velocity,
71
- y: Math.sin(angle) * velocity
123
+ // Canvas-confetti uses pixels per frame (60fps)
124
+ // Use velocity as-is for proper scaling to device
125
+ x: Math.cos(particleAngle) * velocityMagnitude,
126
+ y: -Math.sin(particleAngle) * velocityMagnitude // Negative = upward initially
72
127
  },
73
128
  rotation: Math.random() * 360,
74
- rotationVelocity: randomRange(-10, 10),
129
+ rotationVelocity: randomRange(-50, 50),
130
+ // Very wide range for dramatic spinning
75
131
  tiltAngle: config.tilt ? Math.random() * config.tiltAngleIncrement : 0,
76
132
  opacity: 1
77
133
  };
@@ -88,7 +144,6 @@ export const updateParticle = (particle, config, deltaTime) => {
88
144
 
89
145
  // Apply gravity
90
146
  const newVelocityY = particle.velocity.y - config.gravity * dt;
91
-
92
147
  // Apply drift
93
148
  const newVelocityX = particle.velocity.x + config.drift * dt;
94
149
 
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_COLORS","DEFAULT_CONFIG","particleCount","angle","spread","startVelocity","decay","gravity","drift","duration","colors","scalar","origin","x","y","shapes","tilt","tiltAngleIncrement","tickDuration","disableForReducedMotion","usePerformanceMode","degreesToRadians","degrees","Math","PI","randomRange","min","max","random","randomFromArray","arr","item","floor","length","undefined","Error","createConfettiParticles","config","screenWidth","screenHeight","particles","angleInRadians","spreadInRadians","i","velocity","particle","id","Date","now","color","shape","size","cos","sin","rotation","rotationVelocity","tiltAngle","opacity","push","updateParticle","deltaTime","dt","newVelocityY","newVelocityX","newX","newY","newRotation","newOpacity","pow"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_COLORS","DEFAULT_CONFIG","particleCount","angle","spread","startVelocity","decay","gravity","drift","duration","colors","scalar","origin","x","y","shapes","tilt","tiltAngleIncrement","tickDuration","disableForReducedMotion","usePerformanceMode","degreesToRadians","degrees","Math","PI","randomRange","min","max","random","randomFromArray","arr","item","floor","length","undefined","Error","createConfettiParticles","config","screenWidth","screenHeight","particles","angleInRadians","spreadInRadians","timestamp","Date","now","i","spreadVariation","particleAngle","velocityMagnitude","baseWidth","aspectRatio","particle","id","color","shape","width","height","velocity","cos","sin","rotation","rotationVelocity","tiltAngle","opacity","push","updateParticle","deltaTime","dt","newVelocityY","newVelocityX","newX","newY","newRotation","newOpacity","pow"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfettiCanvas.d.ts","sourceRoot":"","sources":["../../src/ConfettiCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAE1E,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,6FA6E1B,CAAC"}
1
+ {"version":3,"file":"ConfettiCanvas.d.ts","sourceRoot":"","sources":["../../src/ConfettiCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAE1E,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,eAAO,MAAM,cAAc,6FA8E1B,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
- import type { ConfettiParticle as ConfettiParticleType } from './types';
2
+ import type { ConfettiParticle as ConfettiParticleType, ConfettiConfig } from './types';
3
3
  interface Props {
4
4
  particle: ConfettiParticleType;
5
+ config: Required<ConfettiConfig>;
5
6
  duration: number;
6
7
  onComplete?: () => void;
7
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConfettiParticle.d.ts","sourceRoot":"","sources":["../../src/ConfettiParticle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AASzC,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAExE,UAAU,KAAK;IACb,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmG5C,CAAC"}
1
+ {"version":3,"file":"ConfettiParticle.d.ts","sourceRoot":"","sources":["../../src/ConfettiParticle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAQzC,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAExF,UAAU,KAAK;IACb,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6L5C,CAAC"}