falling-animation 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"falling-animation.cjs.js","sources":["../src/utils.ts","../src/animations/index.ts","../src/Particle.ts","../src/FallingAnimation.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null],"names":[],"mappings":"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"}
@@ -0,0 +1,663 @@
1
+ /**
2
+ * Utility functions for falling-animation
3
+ */
4
+ /**
5
+ * Generate a random number between min and max
6
+ */
7
+ function randomRange(min, max) {
8
+ return Math.random() * (max - min) + min;
9
+ }
10
+ /**
11
+ * Generate a random number from a RangeValue
12
+ */
13
+ function randomFromRange(range) {
14
+ return randomRange(range.min, range.max);
15
+ }
16
+ /**
17
+ * Pick a random item from an array
18
+ */
19
+ function randomPick(array) {
20
+ return array[Math.floor(Math.random() * array.length)];
21
+ }
22
+ /**
23
+ * Pick a random item based on weights
24
+ */
25
+ function weightedRandomPick(items) {
26
+ var _a;
27
+ const totalWeight = items.reduce((sum, item) => { var _a; return sum + ((_a = item.weight) !== null && _a !== void 0 ? _a : 1); }, 0);
28
+ let random = Math.random() * totalWeight;
29
+ for (const item of items) {
30
+ random -= (_a = item.weight) !== null && _a !== void 0 ? _a : 1;
31
+ if (random <= 0) {
32
+ return item;
33
+ }
34
+ }
35
+ return items[items.length - 1];
36
+ }
37
+ /**
38
+ * Generate a unique ID
39
+ */
40
+ let idCounter = 0;
41
+ function generateId() {
42
+ return ++idCounter;
43
+ }
44
+ /**
45
+ * Resolve container from element or selector
46
+ */
47
+ function resolveContainer(container) {
48
+ if (!container) {
49
+ return document.body;
50
+ }
51
+ if (typeof container === 'string') {
52
+ const element = document.querySelector(container);
53
+ if (!element) {
54
+ console.warn(`[falling-animation] Container "${container}" not found, using document.body`);
55
+ return document.body;
56
+ }
57
+ return element;
58
+ }
59
+ return container;
60
+ }
61
+ /**
62
+ * Throttle function calls
63
+ */
64
+ function throttle(func, limit) {
65
+ let inThrottle = false;
66
+ return function (...args) {
67
+ if (!inThrottle) {
68
+ func.apply(this, args);
69
+ inThrottle = true;
70
+ setTimeout(() => (inThrottle = false), limit);
71
+ }
72
+ };
73
+ }
74
+
75
+ /**
76
+ * Animation functions for falling particles
77
+ * Each animation modifies particle state based on deltaTime and elapsed time
78
+ */
79
+ /**
80
+ * Simple vertical fall - no special effects
81
+ */
82
+ const fall = (particle, deltaTime) => {
83
+ // Skip movement if speed is 0
84
+ if (particle.vy === 0 && particle.vx === 0)
85
+ return;
86
+ particle.y += particle.vy * deltaTime;
87
+ particle.x += particle.vx * deltaTime;
88
+ };
89
+ /**
90
+ * Swing - pendulum-like swinging motion while falling
91
+ */
92
+ const swing = (particle, deltaTime, elapsed) => {
93
+ const swingAmplitude = 30; // pixels
94
+ const swingFrequency = 0.002; // oscillations per ms
95
+ // Slight rotation based on swing - always animate
96
+ particle.rotation = Math.sin((elapsed + particle.phase) * swingFrequency) * 20;
97
+ // Skip movement if speed is 0
98
+ if (particle.vy === 0 && particle.vx === 0)
99
+ return;
100
+ particle.y += particle.vy * deltaTime;
101
+ // Calculate swing offset
102
+ const swingOffset = Math.sin((elapsed + particle.phase) * swingFrequency) * swingAmplitude;
103
+ particle.x += particle.vx * deltaTime + (swingOffset * 0.05);
104
+ };
105
+ /**
106
+ * Rotate - continuous 360° rotation while falling
107
+ */
108
+ const rotate = (particle, deltaTime) => {
109
+ // Continuous rotation - always animate
110
+ particle.rotation += particle.rotationSpeed * deltaTime;
111
+ // Skip movement if speed is 0
112
+ if (particle.vy === 0 && particle.vx === 0)
113
+ return;
114
+ particle.y += particle.vy * deltaTime;
115
+ particle.x += particle.vx * deltaTime;
116
+ };
117
+ /**
118
+ * Flutter - butterfly-like fluttering motion
119
+ */
120
+ const flutter = (particle, deltaTime, elapsed) => {
121
+ const flutterFrequency = 0.005;
122
+ // Tilt based on direction - always animate
123
+ particle.rotation = Math.sin((elapsed + particle.phase) * flutterFrequency) * 30;
124
+ // Skip movement if speed is 0
125
+ if (particle.vy === 0 && particle.vx === 0)
126
+ return;
127
+ const flutterAmplitude = 40;
128
+ const verticalWobble = 0.3;
129
+ // Horizontal flutter
130
+ const flutter = Math.sin((elapsed + particle.phase) * flutterFrequency) * flutterAmplitude;
131
+ particle.x += particle.vx * deltaTime + flutter * 0.03;
132
+ // Vertical movement with slight wobble
133
+ const wobble = Math.sin((elapsed + particle.phase) * flutterFrequency * 2) * verticalWobble;
134
+ particle.y += (particle.vy + wobble) * deltaTime;
135
+ };
136
+ /**
137
+ * Spiral - spiraling down pattern
138
+ */
139
+ const spiral = (particle, deltaTime, elapsed) => {
140
+ const spiralSpeed = 0.003;
141
+ const angle = (elapsed + particle.phase) * spiralSpeed;
142
+ // Rotate with spiral - always animate
143
+ particle.rotation = angle * (180 / Math.PI);
144
+ // Skip movement if speed is 0
145
+ if (particle.vy === 0 && particle.vx === 0)
146
+ return;
147
+ const spiralRadius = 25;
148
+ particle.y += particle.vy * deltaTime;
149
+ // Spiral motion
150
+ particle.x += particle.vx * deltaTime + Math.cos(angle) * spiralRadius * 0.02;
151
+ };
152
+ /**
153
+ * Tumble - chaotic tumbling motion
154
+ */
155
+ const tumble = (particle, deltaTime, elapsed) => {
156
+ var _a, _b, _c;
157
+ const tumbleSpeed = (_a = particle.data.tumbleSpeed) !== null && _a !== void 0 ? _a : 5;
158
+ // Fast tumbling rotation - always animate
159
+ particle.rotation += tumbleSpeed * deltaTime;
160
+ // Skip movement if speed is 0
161
+ if (particle.vy === 0 && particle.vx === 0)
162
+ return;
163
+ const wobbleX = (_b = particle.data.wobbleX) !== null && _b !== void 0 ? _b : 0.02;
164
+ const wobbleY = (_c = particle.data.wobbleY) !== null && _c !== void 0 ? _c : 0.01;
165
+ particle.y += particle.vy * deltaTime;
166
+ // Chaotic horizontal movement
167
+ particle.x += particle.vx * deltaTime +
168
+ Math.sin((elapsed + particle.phase) * wobbleX) * 20 * 0.02;
169
+ // Add some vertical variation
170
+ particle.y += Math.sin((elapsed + particle.phase * 1.5) * wobbleY) * 0.5;
171
+ };
172
+ /**
173
+ * Zigzag - zigzag falling pattern
174
+ */
175
+ const zigzag = (particle, deltaTime, elapsed) => {
176
+ const zigzagFrequency = 0.002;
177
+ const period = 1 / zigzagFrequency;
178
+ const t = ((elapsed + particle.phase) % period) / period;
179
+ const triangleWave = Math.abs(t * 2 - 1) * 2 - 1;
180
+ // Tilt in direction of movement - always animate
181
+ particle.rotation = triangleWave * 25;
182
+ // Skip movement if speed is 0
183
+ if (particle.vy === 0 && particle.vx === 0)
184
+ return;
185
+ const zigzagWidth = 50;
186
+ particle.y += particle.vy * deltaTime;
187
+ // Create zigzag using triangle wave
188
+ particle.x += particle.vx * deltaTime + triangleWave * zigzagWidth * 0.02;
189
+ };
190
+ /**
191
+ * Float - slow floating descent with gentle movement
192
+ */
193
+ const float = (particle, deltaTime, elapsed) => {
194
+ const floatFrequency = 0.001;
195
+ // Gentle rotation - always animate
196
+ particle.rotation = Math.sin((elapsed + particle.phase) * floatFrequency) * 10;
197
+ // Skip movement if speed is 0
198
+ if (particle.vy === 0 && particle.vx === 0)
199
+ return;
200
+ const floatAmplitudeX = 20;
201
+ const floatAmplitudeY = 5;
202
+ // Very slow descent with vertical wobble
203
+ const yWobble = Math.sin((elapsed + particle.phase) * floatFrequency * 2) * floatAmplitudeY;
204
+ particle.y += (particle.vy * 0.5 + yWobble * 0.01) * deltaTime;
205
+ // Gentle horizontal drift
206
+ const xDrift = Math.sin((elapsed + particle.phase) * floatFrequency) * floatAmplitudeX;
207
+ particle.x += particle.vx * deltaTime + xDrift * 0.01;
208
+ };
209
+ /**
210
+ * Animation registry - all available animations
211
+ */
212
+ const animations = {
213
+ fall,
214
+ swing,
215
+ rotate,
216
+ flutter,
217
+ spiral,
218
+ tumble,
219
+ zigzag,
220
+ float
221
+ };
222
+ /**
223
+ * Get animation function by name
224
+ */
225
+ function getAnimation(name) {
226
+ var _a;
227
+ return (_a = animations[name]) !== null && _a !== void 0 ? _a : fall;
228
+ }
229
+
230
+ /**
231
+ * Particle class - manages individual falling objects
232
+ */
233
+ /**
234
+ * Speed multiplier to convert user-friendly speed units to px/ms
235
+ * speed = 1 means ~40 pixels per second (~1cm/s at 96 DPI)
236
+ * speed = 0.1 means ~4 pixels per second (~1mm/s)
237
+ * speed = 0 means standing still
238
+ */
239
+ const SPEED_MULTIPLIER = 0.04; // 40 px/s per unit, divided by 1000 for ms
240
+ class Particle {
241
+ constructor(options) {
242
+ this.options = options;
243
+ this.id = generateId();
244
+ this.age = 0;
245
+ this.phase = Math.random() * Math.PI * 2;
246
+ this.data = {};
247
+ // Get container dimensions
248
+ this.containerWidth = options.container.clientWidth;
249
+ this.containerHeight = options.container.clientHeight;
250
+ // Pick random object
251
+ const object = weightedRandomPick(options.objects);
252
+ // Initialize position at top with random x
253
+ this.x = randomRange(-50, this.containerWidth + 50);
254
+ this.y = -50;
255
+ // Initialize velocity (apply speed multiplier for intuitive units)
256
+ // speed=1 → ~40px/s (1cm/s), speed=0.1 → ~4px/s (1mm/s)
257
+ this.vy = randomFromRange(options.speed) * SPEED_MULTIPLIER;
258
+ this.vx = options.wind * SPEED_MULTIPLIER * randomRange(0.5, 1.5);
259
+ // Initialize size and opacity
260
+ this.size = randomFromRange(options.size);
261
+ this.opacity = randomFromRange(options.opacity);
262
+ // Initialize rotation
263
+ this.rotation = randomRange(0, 360);
264
+ this.rotationSpeed = randomRange(-3, 3);
265
+ // Pick animation
266
+ this.animation = randomPick(options.animation);
267
+ // Initialize animation-specific data
268
+ this.initAnimationData();
269
+ // Create DOM element
270
+ this.element = this.createElement(object);
271
+ }
272
+ /**
273
+ * Initialize animation-specific data
274
+ */
275
+ initAnimationData() {
276
+ if (this.animation === 'tumble') {
277
+ this.data.tumbleSpeed = randomRange(3, 8);
278
+ this.data.wobbleX = randomRange(0.01, 0.03);
279
+ this.data.wobbleY = randomRange(0.005, 0.015);
280
+ }
281
+ }
282
+ /**
283
+ * Create DOM element for the particle
284
+ */
285
+ createElement(object) {
286
+ var _a, _b, _c, _d;
287
+ const element = document.createElement('div');
288
+ element.className = 'falling-particle';
289
+ element.setAttribute('data-particle-id', String(this.id));
290
+ // Set content based on type
291
+ switch (object.type) {
292
+ case 'emoji':
293
+ element.textContent = (_a = object.content) !== null && _a !== void 0 ? _a : '❄️';
294
+ element.style.fontSize = `${this.size}px`;
295
+ element.style.lineHeight = '1';
296
+ break;
297
+ case 'image':
298
+ const img = document.createElement('img');
299
+ img.src = (_c = (_b = object.src) !== null && _b !== void 0 ? _b : object.content) !== null && _c !== void 0 ? _c : '';
300
+ img.alt = '';
301
+ img.style.width = `${this.size}px`;
302
+ img.style.height = `${this.size}px`;
303
+ img.style.objectFit = 'contain';
304
+ img.draggable = false;
305
+ element.appendChild(img);
306
+ break;
307
+ case 'html':
308
+ element.innerHTML = (_d = object.content) !== null && _d !== void 0 ? _d : '';
309
+ break;
310
+ }
311
+ // Apply base styles
312
+ Object.assign(element.style, {
313
+ position: 'absolute',
314
+ pointerEvents: 'none',
315
+ userSelect: 'none',
316
+ willChange: 'transform, opacity',
317
+ opacity: String(this.opacity),
318
+ left: '0',
319
+ top: '0',
320
+ transform: this.getTransform()
321
+ });
322
+ return element;
323
+ }
324
+ /**
325
+ * Get CSS transform string
326
+ */
327
+ getTransform() {
328
+ return `translate3d(${this.x}px, ${this.y}px, 0) rotate(${this.rotation}deg)`;
329
+ }
330
+ /**
331
+ * Update particle state
332
+ */
333
+ update(deltaTime, elapsed) {
334
+ this.age += deltaTime;
335
+ // Apply animation
336
+ const animationFn = getAnimation(this.animation);
337
+ animationFn(this, deltaTime, elapsed);
338
+ // Update DOM
339
+ this.element.style.transform = this.getTransform();
340
+ }
341
+ /**
342
+ * Check if particle is out of bounds
343
+ */
344
+ isOutOfBounds() {
345
+ return (this.y > this.containerHeight + 100 ||
346
+ this.x < -100 ||
347
+ this.x > this.containerWidth + 100);
348
+ }
349
+ /**
350
+ * Update container dimensions (for resize handling)
351
+ */
352
+ updateContainerSize(width, height) {
353
+ this.containerWidth = width;
354
+ this.containerHeight = height;
355
+ }
356
+ /**
357
+ * Remove particle from DOM
358
+ */
359
+ destroy() {
360
+ this.element.remove();
361
+ }
362
+ }
363
+
364
+ /**
365
+ * FallingAnimation - Main class for creating falling object animations
366
+ */
367
+ /** Default configuration values */
368
+ const DEFAULTS = {
369
+ speed: { min: 2, max: 5 },
370
+ spawnRate: 3,
371
+ maxParticles: 50,
372
+ animation: ['fall'],
373
+ size: { min: 20, max: 40 },
374
+ opacity: { min: 0.6, max: 1 },
375
+ wind: 0,
376
+ autoStart: true,
377
+ zIndex: 9999,
378
+ responsive: true
379
+ };
380
+ class FallingAnimation {
381
+ constructor(options) {
382
+ this.particles = [];
383
+ this.wrapper = null;
384
+ this.isRunning = false;
385
+ this.isPaused = false;
386
+ this.animationId = null;
387
+ this.lastSpawnTime = 0;
388
+ this.startTime = 0;
389
+ this.lastFrameTime = 0;
390
+ this.resizeHandler = null;
391
+ /**
392
+ * Main animation loop
393
+ */
394
+ this.animate = (currentTime) => {
395
+ if (!this.isRunning)
396
+ return;
397
+ // Calculate delta time
398
+ if (this.lastFrameTime === 0) {
399
+ this.lastFrameTime = currentTime;
400
+ this.startTime = currentTime;
401
+ }
402
+ const deltaTime = Math.min(currentTime - this.lastFrameTime, 50); // Cap at 50ms
403
+ const elapsed = currentTime - this.startTime;
404
+ this.lastFrameTime = currentTime;
405
+ // Spawn new particles based on rate
406
+ const spawnInterval = 1000 / this.options.spawnRate;
407
+ if (currentTime - this.lastSpawnTime >= spawnInterval) {
408
+ this.spawnParticle();
409
+ this.lastSpawnTime = currentTime;
410
+ }
411
+ // Update particles
412
+ const particlesToRemove = [];
413
+ for (const particle of this.particles) {
414
+ particle.update(deltaTime, elapsed);
415
+ if (particle.isOutOfBounds()) {
416
+ particlesToRemove.push(particle);
417
+ }
418
+ }
419
+ // Remove out-of-bounds particles
420
+ particlesToRemove.forEach(p => this.removeParticle(p));
421
+ // Continue animation loop
422
+ this.animationId = requestAnimationFrame(this.animate);
423
+ };
424
+ // Validate required options
425
+ if (!options.objects || options.objects.length === 0) {
426
+ throw new Error('[falling-animation] "objects" option is required and must not be empty');
427
+ }
428
+ // Resolve options with defaults
429
+ this.options = this.resolveOptions(options);
430
+ // Create wrapper element
431
+ this.createWrapper();
432
+ // Setup resize handler if responsive
433
+ if (this.options.responsive) {
434
+ this.setupResizeHandler();
435
+ }
436
+ // Auto start if enabled
437
+ if (this.options.autoStart) {
438
+ this.start();
439
+ }
440
+ }
441
+ /**
442
+ * Merge user options with defaults
443
+ */
444
+ resolveOptions(options) {
445
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
446
+ const container = resolveContainer(options.container);
447
+ // Normalize animation to array
448
+ let animation;
449
+ if (!options.animation) {
450
+ animation = DEFAULTS.animation;
451
+ }
452
+ else if (typeof options.animation === 'string') {
453
+ animation = [options.animation];
454
+ }
455
+ else {
456
+ animation = options.animation;
457
+ }
458
+ return {
459
+ container,
460
+ objects: options.objects,
461
+ speed: (_a = options.speed) !== null && _a !== void 0 ? _a : DEFAULTS.speed,
462
+ spawnRate: (_b = options.spawnRate) !== null && _b !== void 0 ? _b : DEFAULTS.spawnRate,
463
+ maxParticles: (_c = options.maxParticles) !== null && _c !== void 0 ? _c : DEFAULTS.maxParticles,
464
+ animation,
465
+ size: (_d = options.size) !== null && _d !== void 0 ? _d : DEFAULTS.size,
466
+ opacity: (_e = options.opacity) !== null && _e !== void 0 ? _e : DEFAULTS.opacity,
467
+ wind: (_f = options.wind) !== null && _f !== void 0 ? _f : DEFAULTS.wind,
468
+ autoStart: (_g = options.autoStart) !== null && _g !== void 0 ? _g : DEFAULTS.autoStart,
469
+ zIndex: (_h = options.zIndex) !== null && _h !== void 0 ? _h : DEFAULTS.zIndex,
470
+ responsive: (_j = options.responsive) !== null && _j !== void 0 ? _j : DEFAULTS.responsive
471
+ };
472
+ }
473
+ /**
474
+ * Create wrapper element for particles
475
+ */
476
+ createWrapper() {
477
+ this.wrapper = document.createElement('div');
478
+ this.wrapper.className = 'falling-animation-wrapper';
479
+ // Apply styles
480
+ Object.assign(this.wrapper.style, {
481
+ position: this.options.container === document.body ? 'fixed' : 'absolute',
482
+ top: '0',
483
+ left: '0',
484
+ width: '100%',
485
+ height: '100%',
486
+ overflow: 'hidden',
487
+ pointerEvents: 'none',
488
+ zIndex: String(this.options.zIndex)
489
+ });
490
+ // Ensure container has position for absolute wrapper
491
+ if (this.options.container !== document.body) {
492
+ const containerPosition = getComputedStyle(this.options.container).position;
493
+ if (containerPosition === 'static') {
494
+ this.options.container.style.position = 'relative';
495
+ }
496
+ }
497
+ this.options.container.appendChild(this.wrapper);
498
+ }
499
+ /**
500
+ * Setup resize handler for responsive behavior
501
+ */
502
+ setupResizeHandler() {
503
+ this.resizeHandler = throttle(() => {
504
+ const width = this.options.container.clientWidth;
505
+ const height = this.options.container.clientHeight;
506
+ this.particles.forEach(particle => {
507
+ particle.updateContainerSize(width, height);
508
+ });
509
+ }, 200);
510
+ window.addEventListener('resize', this.resizeHandler);
511
+ }
512
+ /**
513
+ * Spawn a new particle
514
+ */
515
+ spawnParticle() {
516
+ if (this.particles.length >= this.options.maxParticles) {
517
+ return;
518
+ }
519
+ const particle = new Particle(this.options);
520
+ this.particles.push(particle);
521
+ if (this.wrapper) {
522
+ this.wrapper.appendChild(particle.element);
523
+ }
524
+ }
525
+ /**
526
+ * Remove a particle
527
+ */
528
+ removeParticle(particle) {
529
+ const index = this.particles.indexOf(particle);
530
+ if (index > -1) {
531
+ this.particles.splice(index, 1);
532
+ particle.destroy();
533
+ }
534
+ }
535
+ /**
536
+ * Start the animation
537
+ */
538
+ start() {
539
+ if (this.isRunning)
540
+ return;
541
+ this.isRunning = true;
542
+ this.isPaused = false;
543
+ this.lastFrameTime = 0;
544
+ this.lastSpawnTime = 0;
545
+ this.animationId = requestAnimationFrame(this.animate);
546
+ }
547
+ /**
548
+ * Stop the animation and clear all particles
549
+ */
550
+ stop() {
551
+ this.isRunning = false;
552
+ this.isPaused = false;
553
+ if (this.animationId !== null) {
554
+ cancelAnimationFrame(this.animationId);
555
+ this.animationId = null;
556
+ }
557
+ // Clear all particles
558
+ this.particles.forEach(p => p.destroy());
559
+ this.particles = [];
560
+ }
561
+ /**
562
+ * Pause the animation (keeps particles in place)
563
+ */
564
+ pause() {
565
+ if (!this.isRunning || this.isPaused)
566
+ return;
567
+ this.isPaused = true;
568
+ this.isRunning = false;
569
+ if (this.animationId !== null) {
570
+ cancelAnimationFrame(this.animationId);
571
+ this.animationId = null;
572
+ }
573
+ }
574
+ /**
575
+ * Resume a paused animation
576
+ */
577
+ resume() {
578
+ if (this.isRunning || !this.isPaused)
579
+ return;
580
+ this.isRunning = true;
581
+ this.isPaused = false;
582
+ this.lastFrameTime = 0;
583
+ this.animationId = requestAnimationFrame(this.animate);
584
+ }
585
+ /**
586
+ * Update options dynamically
587
+ */
588
+ setOptions(newOptions) {
589
+ // Merge new options
590
+ if (newOptions.speed) {
591
+ this.options.speed = newOptions.speed;
592
+ }
593
+ if (newOptions.spawnRate !== undefined) {
594
+ this.options.spawnRate = newOptions.spawnRate;
595
+ }
596
+ if (newOptions.maxParticles !== undefined) {
597
+ this.options.maxParticles = newOptions.maxParticles;
598
+ }
599
+ if (newOptions.animation) {
600
+ this.options.animation = typeof newOptions.animation === 'string'
601
+ ? [newOptions.animation]
602
+ : newOptions.animation;
603
+ }
604
+ if (newOptions.size) {
605
+ this.options.size = newOptions.size;
606
+ }
607
+ if (newOptions.opacity) {
608
+ this.options.opacity = newOptions.opacity;
609
+ }
610
+ if (newOptions.wind !== undefined) {
611
+ this.options.wind = newOptions.wind;
612
+ }
613
+ if (newOptions.objects) {
614
+ this.options.objects = newOptions.objects;
615
+ }
616
+ }
617
+ /**
618
+ * Get current particle count
619
+ */
620
+ getParticleCount() {
621
+ return this.particles.length;
622
+ }
623
+ /**
624
+ * Check if animation is running
625
+ */
626
+ getIsRunning() {
627
+ return this.isRunning;
628
+ }
629
+ /**
630
+ * Check if animation is paused
631
+ */
632
+ getIsPaused() {
633
+ return this.isPaused;
634
+ }
635
+ /**
636
+ * Destroy the animation and clean up
637
+ */
638
+ destroy() {
639
+ this.stop();
640
+ // Remove wrapper
641
+ if (this.wrapper) {
642
+ this.wrapper.remove();
643
+ this.wrapper = null;
644
+ }
645
+ // Remove resize handler
646
+ if (this.resizeHandler) {
647
+ window.removeEventListener('resize', this.resizeHandler);
648
+ this.resizeHandler = null;
649
+ }
650
+ }
651
+ }
652
+
653
+ /**
654
+ * falling-animation
655
+ * A lightweight, customizable falling objects animation library
656
+ *
657
+ * @author phongdh
658
+ * @license MIT
659
+ */
660
+ // Main class
661
+
662
+ export { FallingAnimation, animations, FallingAnimation as default, getAnimation };
663
+ //# sourceMappingURL=falling-animation.esm.js.map