react-confetti-burst 1.0.0

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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +303 -0
  3. package/dist/cjs/components.d.ts +219 -0
  4. package/dist/cjs/components.d.ts.map +1 -0
  5. package/dist/cjs/components.js +341 -0
  6. package/dist/cjs/components.js.map +1 -0
  7. package/dist/cjs/confetti-engine.d.ts +122 -0
  8. package/dist/cjs/confetti-engine.d.ts.map +1 -0
  9. package/dist/cjs/confetti-engine.js +589 -0
  10. package/dist/cjs/confetti-engine.js.map +1 -0
  11. package/dist/cjs/confetti.d.ts +50 -0
  12. package/dist/cjs/confetti.d.ts.map +1 -0
  13. package/dist/cjs/confetti.js +446 -0
  14. package/dist/cjs/confetti.js.map +1 -0
  15. package/dist/cjs/constants.d.ts +147 -0
  16. package/dist/cjs/constants.d.ts.map +1 -0
  17. package/dist/cjs/constants.js +609 -0
  18. package/dist/cjs/constants.js.map +1 -0
  19. package/dist/cjs/hooks.d.ts +94 -0
  20. package/dist/cjs/hooks.d.ts.map +1 -0
  21. package/dist/cjs/hooks.js +225 -0
  22. package/dist/cjs/hooks.js.map +1 -0
  23. package/dist/cjs/index.d.ts +34 -0
  24. package/dist/cjs/index.d.ts.map +1 -0
  25. package/dist/cjs/index.js +180 -0
  26. package/dist/cjs/index.js.map +1 -0
  27. package/dist/cjs/particle.d.ts +50 -0
  28. package/dist/cjs/particle.d.ts.map +1 -0
  29. package/dist/cjs/particle.js +475 -0
  30. package/dist/cjs/particle.js.map +1 -0
  31. package/dist/cjs/shapes.d.ts +190 -0
  32. package/dist/cjs/shapes.d.ts.map +1 -0
  33. package/dist/cjs/shapes.js +272 -0
  34. package/dist/cjs/shapes.js.map +1 -0
  35. package/dist/cjs/types.d.ts +720 -0
  36. package/dist/cjs/types.d.ts.map +1 -0
  37. package/dist/cjs/types.js +25 -0
  38. package/dist/cjs/types.js.map +1 -0
  39. package/dist/cjs/utils.d.ts +90 -0
  40. package/dist/cjs/utils.d.ts.map +1 -0
  41. package/dist/cjs/utils.js +330 -0
  42. package/dist/cjs/utils.js.map +1 -0
  43. package/dist/esm/components.js +334 -0
  44. package/dist/esm/components.js.map +1 -0
  45. package/dist/esm/confetti-engine.js +581 -0
  46. package/dist/esm/confetti-engine.js.map +1 -0
  47. package/dist/esm/confetti.js +443 -0
  48. package/dist/esm/confetti.js.map +1 -0
  49. package/dist/esm/constants.js +605 -0
  50. package/dist/esm/constants.js.map +1 -0
  51. package/dist/esm/hooks.js +218 -0
  52. package/dist/esm/hooks.js.map +1 -0
  53. package/dist/esm/index.js +146 -0
  54. package/dist/esm/index.js.map +1 -0
  55. package/dist/esm/particle.js +465 -0
  56. package/dist/esm/particle.js.map +1 -0
  57. package/dist/esm/shapes.js +265 -0
  58. package/dist/esm/shapes.js.map +1 -0
  59. package/dist/esm/types.js +24 -0
  60. package/dist/esm/types.js.map +1 -0
  61. package/dist/esm/utils.js +309 -0
  62. package/dist/esm/utils.js.map +1 -0
  63. package/dist/types/components.d.ts +219 -0
  64. package/dist/types/components.d.ts.map +1 -0
  65. package/dist/types/confetti-engine.d.ts +122 -0
  66. package/dist/types/confetti-engine.d.ts.map +1 -0
  67. package/dist/types/confetti.d.ts +50 -0
  68. package/dist/types/confetti.d.ts.map +1 -0
  69. package/dist/types/constants.d.ts +147 -0
  70. package/dist/types/constants.d.ts.map +1 -0
  71. package/dist/types/hooks.d.ts +94 -0
  72. package/dist/types/hooks.d.ts.map +1 -0
  73. package/dist/types/index.d.ts +34 -0
  74. package/dist/types/index.d.ts.map +1 -0
  75. package/dist/types/particle.d.ts +50 -0
  76. package/dist/types/particle.d.ts.map +1 -0
  77. package/dist/types/shapes.d.ts +190 -0
  78. package/dist/types/shapes.d.ts.map +1 -0
  79. package/dist/types/types.d.ts +720 -0
  80. package/dist/types/types.d.ts.map +1 -0
  81. package/dist/types/utils.d.ts +90 -0
  82. package/dist/types/utils.d.ts.map +1 -0
  83. package/package.json +73 -0
@@ -0,0 +1,446 @@
1
+ "use strict";
2
+ /**
3
+ * Functional Confetti API
4
+ *
5
+ * Provides a canvas-confetti compatible function-based API for
6
+ * imperative confetti control without React components.
7
+ *
8
+ * @module confetti
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.confetti = confetti;
12
+ /**
13
+ * Global registry of confetti instances
14
+ */
15
+ const instances = new Map();
16
+ /**
17
+ * Check if user prefers reduced motion
18
+ */
19
+ function prefersReducedMotion() {
20
+ if (typeof window === 'undefined')
21
+ return false;
22
+ return window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;
23
+ }
24
+ /**
25
+ * Create a random particle
26
+ */
27
+ function createParticle(canvas, options) {
28
+ const { angle = 90, spread = 45, startVelocity = 45, decay = 0.9, gravity = 1, drift = 0, flat = false, ticks = 200, origin = { x: 0.5, y: 0.5 }, colors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff'], shapes = ['square', 'circle'], scalar = 1, } = options;
29
+ const radAngle = (angle - 90) * (Math.PI / 180);
30
+ const spreadRad = spread * (Math.PI / 180);
31
+ const randomAngle = radAngle + (Math.random() - 0.5) * spreadRad;
32
+ const velocity = startVelocity * (0.5 + Math.random() * 0.5);
33
+ return {
34
+ x: origin.x * canvas.width,
35
+ y: origin.y * canvas.height,
36
+ vx: Math.cos(randomAngle) * velocity,
37
+ vy: Math.sin(randomAngle) * velocity,
38
+ tiltAngle: Math.random() * Math.PI * 2,
39
+ tiltSpeed: (Math.random() - 0.5) * 0.1,
40
+ color: colors[Math.floor(Math.random() * colors.length)],
41
+ shape: (shapes[Math.floor(Math.random() * shapes.length)] ?? 'circle'),
42
+ scalar,
43
+ gravity: gravity * 0.5,
44
+ drift,
45
+ decay,
46
+ flat,
47
+ tick: 0,
48
+ totalTicks: ticks,
49
+ wobble: Math.random() * 10,
50
+ wobbleSpeed: 0.1 + Math.random() * 0.1,
51
+ };
52
+ }
53
+ /**
54
+ * Update particle physics
55
+ */
56
+ function updateParticle(particle) {
57
+ particle.tick++;
58
+ if (particle.tick >= particle.totalTicks) {
59
+ return false;
60
+ }
61
+ // Apply physics
62
+ particle.vy += particle.gravity;
63
+ particle.vx += particle.drift;
64
+ particle.vx *= particle.decay;
65
+ particle.vy *= particle.decay;
66
+ particle.x += particle.vx;
67
+ particle.y += particle.vy;
68
+ // Update wobble and tilt
69
+ particle.wobble += particle.wobbleSpeed;
70
+ if (!particle.flat) {
71
+ particle.tiltAngle += particle.tiltSpeed;
72
+ }
73
+ return true;
74
+ }
75
+ /**
76
+ * Draw a single particle
77
+ */
78
+ function drawParticle(ctx, particle) {
79
+ const progress = particle.tick / particle.totalTicks;
80
+ const fadeOut = 1 - progress;
81
+ const size = 10 * particle.scalar;
82
+ ctx.save();
83
+ ctx.translate(particle.x, particle.y);
84
+ if (!particle.flat) {
85
+ ctx.rotate(particle.tiltAngle);
86
+ // Add wobble for 3D effect
87
+ const wobbleX = Math.sin(particle.wobble) * 0.5;
88
+ ctx.scale(1 + wobbleX * 0.2, 1);
89
+ }
90
+ ctx.globalAlpha = fadeOut;
91
+ ctx.fillStyle = particle.color;
92
+ if (particle.shape === 'circle') {
93
+ ctx.beginPath();
94
+ ctx.arc(0, 0, size / 2, 0, Math.PI * 2);
95
+ ctx.fill();
96
+ }
97
+ else if (particle.shape === 'square') {
98
+ ctx.fillRect(-size / 2, -size / 2, size, size);
99
+ }
100
+ else {
101
+ // Rectangle (default)
102
+ ctx.fillRect(-size / 2, -size / 3, size, size * 0.6);
103
+ }
104
+ ctx.restore();
105
+ }
106
+ /**
107
+ * Animation loop for a confetti instance
108
+ */
109
+ function animate(instance) {
110
+ if (instance.isDestroyed) {
111
+ return;
112
+ }
113
+ const { canvas, ctx, particles } = instance;
114
+ // Clear canvas
115
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
116
+ // Update and draw particles
117
+ for (let i = particles.length - 1; i >= 0; i--) {
118
+ const particle = particles[i];
119
+ const alive = updateParticle(particle);
120
+ if (alive) {
121
+ drawParticle(ctx, particle);
122
+ }
123
+ else {
124
+ particles.splice(i, 1);
125
+ }
126
+ }
127
+ // Continue animation or resolve
128
+ if (particles.length > 0) {
129
+ instance.animationId = requestAnimationFrame(() => animate(instance));
130
+ }
131
+ else {
132
+ instance.animationId = null;
133
+ instance.resolve?.();
134
+ instance.resolve = null;
135
+ instance.promise = null;
136
+ }
137
+ }
138
+ /**
139
+ * Get or create the default canvas
140
+ */
141
+ function getDefaultCanvas() {
142
+ let canvas = document.getElementById('confetti-canvas');
143
+ if (!canvas) {
144
+ canvas = document.createElement('canvas');
145
+ canvas.id = 'confetti-canvas';
146
+ canvas.style.cssText = `
147
+ position: fixed;
148
+ top: 0;
149
+ left: 0;
150
+ width: 100%;
151
+ height: 100%;
152
+ pointer-events: none;
153
+ z-index: 2147483647;
154
+ `;
155
+ document.body.appendChild(canvas);
156
+ }
157
+ // Update size
158
+ canvas.width = window.innerWidth;
159
+ canvas.height = window.innerHeight;
160
+ return canvas;
161
+ }
162
+ /**
163
+ * Get or create a confetti instance
164
+ */
165
+ function getInstance(canvas, createOptions = {}) {
166
+ let instance = instances.get(canvas);
167
+ if (!instance) {
168
+ const actualCanvas = canvas === 'default' ? getDefaultCanvas() : canvas;
169
+ const ctx = actualCanvas.getContext('2d');
170
+ if (!ctx) {
171
+ console.error('Could not get 2D context from canvas');
172
+ return null;
173
+ }
174
+ instance = {
175
+ canvas: actualCanvas,
176
+ ctx,
177
+ animationId: null,
178
+ particles: [],
179
+ options: createOptions,
180
+ promise: null,
181
+ resolve: null,
182
+ isDestroyed: false,
183
+ };
184
+ instances.set(canvas, instance);
185
+ // Handle resize if enabled
186
+ if (createOptions.resize && canvas === 'default') {
187
+ window.addEventListener('resize', () => {
188
+ if (!instance.isDestroyed) {
189
+ instance.canvas.width = window.innerWidth;
190
+ instance.canvas.height = window.innerHeight;
191
+ }
192
+ });
193
+ }
194
+ }
195
+ return instance;
196
+ }
197
+ /**
198
+ * Main confetti function - canvas-confetti compatible API
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * // Basic confetti burst
203
+ * confetti();
204
+ *
205
+ * // Customized confetti
206
+ * confetti({
207
+ * particleCount: 100,
208
+ * spread: 70,
209
+ * origin: { x: 0.5, y: 0.5 }
210
+ * });
211
+ *
212
+ * // Wait for completion
213
+ * await confetti({ particleCount: 200 });
214
+ * console.log('Confetti finished!');
215
+ * ```
216
+ *
217
+ * @param options - Confetti configuration options
218
+ * @returns Promise that resolves when animation completes
219
+ */
220
+ function confetti(options = {}) {
221
+ // Check for reduced motion preference
222
+ if (options.disableForReducedMotion && prefersReducedMotion()) {
223
+ return Promise.resolve();
224
+ }
225
+ const instance = getInstance('default');
226
+ if (!instance) {
227
+ return null;
228
+ }
229
+ const { particleCount = 50, } = options;
230
+ // Create particles
231
+ for (let i = 0; i < particleCount; i++) {
232
+ instance.particles.push(createParticle(instance.canvas, options));
233
+ }
234
+ // Start animation if not already running
235
+ if (!instance.animationId) {
236
+ instance.promise = new Promise(resolve => {
237
+ instance.resolve = resolve;
238
+ });
239
+ instance.animationId = requestAnimationFrame(() => animate(instance));
240
+ }
241
+ return instance.promise;
242
+ }
243
+ /**
244
+ * Create a confetti instance bound to a specific canvas
245
+ *
246
+ * @example
247
+ * ```typescript
248
+ * // Custom canvas confetti
249
+ * const myCanvas = document.getElementById('my-canvas');
250
+ * const myConfetti = confetti.create(myCanvas, { resize: true });
251
+ *
252
+ * // Use the custom instance
253
+ * myConfetti({ particleCount: 100 });
254
+ *
255
+ * // Reset/clear the custom instance
256
+ * myConfetti.reset();
257
+ * ```
258
+ *
259
+ * @param canvas - Target canvas element
260
+ * @param globalOptions - Global options for this instance
261
+ * @returns Confetti function bound to the canvas
262
+ */
263
+ confetti.create = function (canvas, globalOptions = {}) {
264
+ const instance = getInstance(canvas, globalOptions);
265
+ const fire = (options = {}) => {
266
+ if (!instance || instance.isDestroyed) {
267
+ return null;
268
+ }
269
+ // Check for reduced motion preference
270
+ const disableForReducedMotion = options.disableForReducedMotion ?? globalOptions.disableForReducedMotion;
271
+ if (disableForReducedMotion && prefersReducedMotion()) {
272
+ return Promise.resolve();
273
+ }
274
+ const { particleCount = 50, } = options;
275
+ // Create particles
276
+ for (let i = 0; i < particleCount; i++) {
277
+ instance.particles.push(createParticle(instance.canvas, options));
278
+ }
279
+ // Start animation if not already running
280
+ if (!instance.animationId) {
281
+ instance.promise = new Promise(resolve => {
282
+ instance.resolve = resolve;
283
+ });
284
+ instance.animationId = requestAnimationFrame(() => animate(instance));
285
+ }
286
+ return instance.promise;
287
+ };
288
+ fire.reset = () => {
289
+ if (instance) {
290
+ if (instance.animationId) {
291
+ cancelAnimationFrame(instance.animationId);
292
+ instance.animationId = null;
293
+ }
294
+ instance.particles = [];
295
+ instance.ctx.clearRect(0, 0, instance.canvas.width, instance.canvas.height);
296
+ instance.resolve?.();
297
+ instance.resolve = null;
298
+ instance.promise = null;
299
+ }
300
+ };
301
+ return fire;
302
+ };
303
+ /**
304
+ * Reset/clear all confetti on the default canvas
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * // Fire some confetti
309
+ * confetti({ particleCount: 100 });
310
+ *
311
+ * // Clear it immediately
312
+ * confetti.reset();
313
+ * ```
314
+ */
315
+ confetti.reset = function () {
316
+ const instance = instances.get('default');
317
+ if (instance) {
318
+ if (instance.animationId) {
319
+ cancelAnimationFrame(instance.animationId);
320
+ instance.animationId = null;
321
+ }
322
+ instance.particles = [];
323
+ instance.ctx.clearRect(0, 0, instance.canvas.width, instance.canvas.height);
324
+ instance.resolve?.();
325
+ instance.resolve = null;
326
+ instance.promise = null;
327
+ }
328
+ };
329
+ /**
330
+ * Fire confetti from both sides (common celebration pattern)
331
+ *
332
+ * @example
333
+ * ```typescript
334
+ * // Celebration from both corners
335
+ * confetti.fireworks();
336
+ * ```
337
+ */
338
+ confetti.fireworks = async function (options = {}) {
339
+ const baseOptions = {
340
+ particleCount: 30,
341
+ spread: 55,
342
+ ...options,
343
+ };
344
+ await Promise.all([
345
+ confetti({
346
+ ...baseOptions,
347
+ angle: 60,
348
+ origin: { x: 0, y: 0.65 },
349
+ }),
350
+ confetti({
351
+ ...baseOptions,
352
+ angle: 120,
353
+ origin: { x: 1, y: 0.65 },
354
+ }),
355
+ ]);
356
+ };
357
+ /**
358
+ * Fire confetti in a school pride pattern
359
+ *
360
+ * @example
361
+ * ```typescript
362
+ * // School colors celebration
363
+ * confetti.schoolPride({ colors: ['#ff0000', '#ffffff'] });
364
+ * ```
365
+ */
366
+ confetti.schoolPride = function (options = {}) {
367
+ const end = Date.now() + 3000;
368
+ const colors = options.colors ?? ['#bb0000', '#ffffff'];
369
+ function frame() {
370
+ confetti({
371
+ particleCount: 2,
372
+ angle: 60,
373
+ spread: 55,
374
+ origin: { x: 0, y: 0.6 },
375
+ colors,
376
+ ...options,
377
+ });
378
+ confetti({
379
+ particleCount: 2,
380
+ angle: 120,
381
+ spread: 55,
382
+ origin: { x: 1, y: 0.6 },
383
+ colors,
384
+ ...options,
385
+ });
386
+ if (Date.now() < end) {
387
+ requestAnimationFrame(frame);
388
+ }
389
+ }
390
+ frame();
391
+ };
392
+ /**
393
+ * Fire confetti in a snow pattern
394
+ *
395
+ * @example
396
+ * ```typescript
397
+ * confetti.snow({ duration: 5000 });
398
+ * ```
399
+ */
400
+ confetti.snow = function (options = {}) {
401
+ const { duration = 5000, ...confettiOptions } = options;
402
+ const end = Date.now() + duration;
403
+ function frame() {
404
+ confetti({
405
+ particleCount: 1,
406
+ startVelocity: 0,
407
+ ticks: 300,
408
+ gravity: 0.3,
409
+ origin: {
410
+ x: Math.random(),
411
+ y: 0,
412
+ },
413
+ colors: ['#ffffff', '#f0f8ff', '#e6f3ff'],
414
+ shapes: ['circle'],
415
+ scalar: 0.8 + Math.random() * 0.4,
416
+ drift: Math.random() - 0.5,
417
+ ...confettiOptions,
418
+ });
419
+ if (Date.now() < end) {
420
+ requestAnimationFrame(frame);
421
+ }
422
+ }
423
+ frame();
424
+ };
425
+ /**
426
+ * Fire realistic looking firework bursts
427
+ *
428
+ * @example
429
+ * ```typescript
430
+ * confetti.burst({ x: 0.5, y: 0.3 });
431
+ * ```
432
+ */
433
+ confetti.burst = function (origin, options = {}) {
434
+ return confetti({
435
+ particleCount: 80,
436
+ spread: 360,
437
+ startVelocity: 30,
438
+ decay: 0.92,
439
+ scalar: 1.2,
440
+ origin,
441
+ ...options,
442
+ });
443
+ };
444
+ // Make confetti the default export
445
+ exports.default = confetti;
446
+ //# sourceMappingURL=confetti.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confetti.js","sourceRoot":"","sources":["../../src/confetti.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Default constants and configuration values
3
+ *
4
+ * All default values are carefully tuned for optimal visual appeal
5
+ * and performance across different devices and screen sizes.
6
+ */
7
+ import type { ConfettiBurstConfig, ParticleConfig, PhysicsConfig, DirectionConfig, EasingFunction, EasingPreset, RGBAColor, ContinuousConfig, FireworkConfig, CanvasConfig, TrailConfig, GlowConfig, PresetConfig, PresetName, ConfettiBurstOptions } from './types';
8
+ /**
9
+ * Default vibrant color palette for confetti particles
10
+ * Designed for high visibility on both light and dark backgrounds
11
+ */
12
+ export declare const DEFAULT_COLORS: readonly string[];
13
+ /**
14
+ * Default physics configuration
15
+ */
16
+ export declare const DEFAULT_PHYSICS: PhysicsConfig;
17
+ /**
18
+ * Default direction configuration
19
+ */
20
+ export declare const DEFAULT_DIRECTION: DirectionConfig;
21
+ /**
22
+ * Default particle configuration
23
+ */
24
+ export declare const DEFAULT_PARTICLE: ParticleConfig;
25
+ /**
26
+ * Default trail configuration
27
+ */
28
+ export declare const DEFAULT_TRAIL: TrailConfig;
29
+ /**
30
+ * Default glow configuration
31
+ */
32
+ export declare const DEFAULT_GLOW: GlowConfig;
33
+ /**
34
+ * Default continuous mode configuration
35
+ */
36
+ export declare const DEFAULT_CONTINUOUS: ContinuousConfig;
37
+ /**
38
+ * Default firework configuration
39
+ */
40
+ export declare const DEFAULT_FIREWORK: FireworkConfig;
41
+ /**
42
+ * Default canvas configuration
43
+ */
44
+ export declare const DEFAULT_CANVAS: CanvasConfig;
45
+ /**
46
+ * Default accessibility configuration
47
+ */
48
+ export declare const DEFAULT_ACCESSIBILITY: {
49
+ readonly disableForReducedMotion: false;
50
+ readonly ariaLabel: "Confetti animation";
51
+ readonly ariaHidden: true;
52
+ };
53
+ /**
54
+ * Complete default configuration
55
+ */
56
+ export declare const DEFAULT_CONFIG: ConfettiBurstConfig;
57
+ /**
58
+ * Direction angles in degrees (0 = right, counter-clockwise)
59
+ */
60
+ export declare const DIRECTION_ANGLES: Record<Exclude<import('./types').BurstDirection, 'custom' | 'radial'>, number>;
61
+ /**
62
+ * Pre-calculated values for performance
63
+ */
64
+ export declare const MATH_CONSTANTS: {
65
+ readonly DEG_TO_RAD: number;
66
+ readonly RAD_TO_DEG: number;
67
+ readonly TWO_PI: number;
68
+ readonly HALF_PI: number;
69
+ };
70
+ /**
71
+ * Easing functions for smooth animations
72
+ */
73
+ export declare const EASING_FUNCTIONS: Record<EasingPreset, EasingFunction>;
74
+ /**
75
+ * Built-in shape names (excluding custom shapes)
76
+ */
77
+ type BuiltinShapeName = 'square' | 'circle' | 'rectangle' | 'triangle' | 'star' | 'line' | 'heart' | 'diamond' | 'hexagon' | 'spiral' | 'ribbon' | 'custom';
78
+ /**
79
+ * Shape rendering aspect ratios
80
+ */
81
+ export declare const SHAPE_ASPECT_RATIOS: Record<BuiltinShapeName, number>;
82
+ /**
83
+ * Default transparent color for fallback
84
+ */
85
+ export declare const TRANSPARENT_COLOR: RGBAColor;
86
+ /**
87
+ * Performance tuning constants
88
+ */
89
+ export declare const PERFORMANCE: {
90
+ /** Maximum particles before reducing quality */
91
+ readonly MAX_PARTICLES: 500;
92
+ /** Frame time budget in ms (targeting 60fps) */
93
+ readonly FRAME_BUDGET: 16.67;
94
+ /** Minimum opacity before particle is considered dead */
95
+ readonly MIN_OPACITY: 0.01;
96
+ /** Minimum size before particle is considered dead */
97
+ readonly MIN_SIZE: 0.5;
98
+ /** Device pixel ratio limit for high-DPI displays */
99
+ readonly MAX_DPR: 2;
100
+ };
101
+ /**
102
+ * Canvas cleanup delay in milliseconds
103
+ */
104
+ export declare const CLEANUP_DELAY = 100;
105
+ /**
106
+ * Star shape points configuration
107
+ */
108
+ export declare const STAR_POINTS = 5;
109
+ export declare const STAR_INNER_RATIO = 0.5;
110
+ /**
111
+ * Color palettes for presets
112
+ */
113
+ export declare const COLOR_PALETTES: {
114
+ readonly rainbow: readonly string[];
115
+ readonly pride: readonly ["#E40303", "#FF8C00", "#FFED00", "#008026", "#24408E", "#732982"];
116
+ readonly christmas: readonly ["#C41E3A", "#165B33", "#FFD700", "#FFFFFF", "#BB2528"];
117
+ readonly halloween: readonly ["#FF6600", "#000000", "#8B008B", "#00FF00", "#FFD700"];
118
+ readonly pastel: readonly ["#FFB3BA", "#FFDFBA", "#FFFFBA", "#BAFFC9", "#BAE1FF"];
119
+ readonly neon: readonly ["#FF00FF", "#00FFFF", "#FF0080", "#80FF00", "#FF8000"];
120
+ readonly gold: readonly ["#FFD700", "#DAA520", "#B8860B", "#FFC125", "#FFDF00"];
121
+ readonly silver: readonly ["#C0C0C0", "#A8A8A8", "#D3D3D3", "#DCDCDC", "#E8E8E8"];
122
+ readonly hearts: readonly ["#FF69B4", "#FF1493", "#FF007F", "#DC143C", "#FFB6C1"];
123
+ readonly ocean: readonly ["#006994", "#00CED1", "#20B2AA", "#48D1CC", "#87CEEB"];
124
+ };
125
+ /**
126
+ * Emoji sets for presets
127
+ */
128
+ export declare const EMOJI_SETS: {
129
+ readonly celebration: readonly ["🎉", "🎊", "🥳", "✨", "🎈"];
130
+ readonly hearts: readonly ["❤️", "💕", "💖", "💗", "💓", "💘"];
131
+ readonly stars: readonly ["⭐", "🌟", "✨", "💫", "⚡"];
132
+ readonly money: readonly ["💰", "💵", "💸", "🤑", "💎"];
133
+ readonly christmas: readonly ["🎄", "🎅", "🎁", "❄️", "⭐"];
134
+ readonly halloween: readonly ["🎃", "👻", "🦇", "🕷️", "💀"];
135
+ readonly birthday: readonly ["🎂", "🎁", "🎈", "🎉", "🥳"];
136
+ readonly food: readonly ["🍕", "🍔", "🍟", "🌭", "🍿"];
137
+ };
138
+ /**
139
+ * Preset configurations for quick setup
140
+ */
141
+ export declare const PRESETS: Record<PresetName, PresetConfig>;
142
+ /**
143
+ * Get preset options by name
144
+ */
145
+ export declare function getPreset(name: PresetName): ConfettiBurstOptions;
146
+ export {};
147
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAWlC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAapB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAItB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAYrB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAKlB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,UAKjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBAMvB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAWrB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YASnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,mBAYnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC,EAAE,MAAM,CAKlG,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CA6CxD,CAAC;AAEX;;GAEG;AACH,KAAK,gBAAgB,GACjB,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,UAAU,GACV,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAavD,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAKtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;IACtB,gDAAgD;;IAEhD,gDAAgD;;IAEhD,yDAAyD;;IAEzD,sDAAsD;;IAEtD,qDAAqD;;CAE7C,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;CAWjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAyT3C,CAAC;AAEX;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,oBAAoB,CAEhE"}