@tsparticles/engine 3.0.3 → 3.2.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 (156) hide show
  1. package/373.min.js +2 -0
  2. package/373.min.js.LICENSE.txt +1 -0
  3. package/438.min.js +2 -0
  4. package/438.min.js.LICENSE.txt +1 -0
  5. package/README.md +337 -216
  6. package/browser/Core/Canvas.js +102 -49
  7. package/browser/Core/Container.js +53 -41
  8. package/browser/Core/Engine.js +47 -32
  9. package/browser/Core/Particle.js +46 -48
  10. package/browser/Core/Particles.js +70 -57
  11. package/browser/Core/Retina.js +5 -4
  12. package/browser/Core/Utils/Circle.js +4 -3
  13. package/browser/Core/Utils/Constants.js +3 -0
  14. package/browser/Core/Utils/EventListeners.js +19 -16
  15. package/browser/Core/Utils/ExternalInteractorBase.js +1 -1
  16. package/browser/Core/Utils/InteractionManager.js +17 -8
  17. package/browser/Core/Utils/ParticlesInteractorBase.js +1 -1
  18. package/browser/Core/Utils/QuadTree.js +5 -3
  19. package/browser/Core/Utils/Vector.js +7 -2
  20. package/browser/Core/Utils/Vector3d.js +14 -9
  21. package/browser/Options/Classes/BackgroundMask/BackgroundMask.js +1 -1
  22. package/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js +3 -2
  23. package/browser/Options/Classes/ManualParticle.js +3 -2
  24. package/browser/Options/Classes/Options.js +3 -0
  25. package/browser/Utils/CanvasUtils.js +50 -40
  26. package/browser/Utils/ColorUtils.js +124 -45
  27. package/browser/Utils/EventDispatcher.js +6 -5
  28. package/browser/Utils/HslColorManager.js +5 -5
  29. package/browser/Utils/NumberUtils.js +35 -23
  30. package/browser/Utils/RgbColorManager.js +5 -5
  31. package/browser/Utils/Utils.js +102 -19
  32. package/cjs/Core/Canvas.js +102 -49
  33. package/cjs/Core/Container.js +53 -41
  34. package/cjs/Core/Engine.js +70 -32
  35. package/cjs/Core/Particle.js +45 -47
  36. package/cjs/Core/Particles.js +93 -57
  37. package/cjs/Core/Retina.js +5 -4
  38. package/cjs/Core/Utils/Circle.js +4 -3
  39. package/cjs/Core/Utils/Constants.js +4 -1
  40. package/cjs/Core/Utils/EventListeners.js +18 -15
  41. package/cjs/Core/Utils/ExternalInteractorBase.js +1 -1
  42. package/cjs/Core/Utils/InteractionManager.js +17 -8
  43. package/cjs/Core/Utils/ParticlesInteractorBase.js +1 -1
  44. package/cjs/Core/Utils/QuadTree.js +5 -3
  45. package/cjs/Core/Utils/Vector.js +7 -2
  46. package/cjs/Core/Utils/Vector3d.js +14 -9
  47. package/cjs/Options/Classes/BackgroundMask/BackgroundMask.js +1 -1
  48. package/cjs/Options/Classes/BackgroundMask/BackgroundMaskCover.js +3 -2
  49. package/cjs/Options/Classes/ManualParticle.js +3 -2
  50. package/cjs/Options/Classes/Options.js +3 -0
  51. package/cjs/Utils/CanvasUtils.js +50 -40
  52. package/cjs/Utils/ColorUtils.js +126 -45
  53. package/cjs/Utils/EventDispatcher.js +6 -5
  54. package/cjs/Utils/HslColorManager.js +5 -5
  55. package/cjs/Utils/NumberUtils.js +37 -24
  56. package/cjs/Utils/RgbColorManager.js +5 -5
  57. package/cjs/Utils/Utils.js +103 -19
  58. package/dist_browser_Core_Container_js.js +92 -0
  59. package/dist_browser_Core_Particle_js.js +32 -0
  60. package/esm/Core/Canvas.js +102 -49
  61. package/esm/Core/Container.js +53 -41
  62. package/esm/Core/Engine.js +47 -32
  63. package/esm/Core/Particle.js +46 -48
  64. package/esm/Core/Particles.js +70 -57
  65. package/esm/Core/Retina.js +5 -4
  66. package/esm/Core/Utils/Circle.js +4 -3
  67. package/esm/Core/Utils/Constants.js +3 -0
  68. package/esm/Core/Utils/EventListeners.js +19 -16
  69. package/esm/Core/Utils/ExternalInteractorBase.js +1 -1
  70. package/esm/Core/Utils/InteractionManager.js +17 -8
  71. package/esm/Core/Utils/ParticlesInteractorBase.js +1 -1
  72. package/esm/Core/Utils/QuadTree.js +5 -3
  73. package/esm/Core/Utils/Vector.js +7 -2
  74. package/esm/Core/Utils/Vector3d.js +14 -9
  75. package/esm/Options/Classes/BackgroundMask/BackgroundMask.js +1 -1
  76. package/esm/Options/Classes/BackgroundMask/BackgroundMaskCover.js +3 -2
  77. package/esm/Options/Classes/ManualParticle.js +3 -2
  78. package/esm/Options/Classes/Options.js +3 -0
  79. package/esm/Utils/CanvasUtils.js +50 -40
  80. package/esm/Utils/ColorUtils.js +124 -45
  81. package/esm/Utils/EventDispatcher.js +6 -5
  82. package/esm/Utils/HslColorManager.js +5 -5
  83. package/esm/Utils/NumberUtils.js +35 -23
  84. package/esm/Utils/RgbColorManager.js +5 -5
  85. package/esm/Utils/Utils.js +102 -19
  86. package/package.json +1 -1
  87. package/report.html +3 -3
  88. package/tsparticles.engine.js +894 -5461
  89. package/tsparticles.engine.min.js +1 -1
  90. package/tsparticles.engine.min.js.LICENSE.txt +1 -1
  91. package/types/Core/Canvas.d.ts +5 -3
  92. package/types/Core/Container.d.ts +1 -1
  93. package/types/Core/Engine.d.ts +13 -8
  94. package/types/Core/Interfaces/IContainerPlugin.d.ts +3 -3
  95. package/types/Core/Interfaces/IEffectDrawer.d.ts +3 -3
  96. package/types/Core/Interfaces/IMovePathGenerator.d.ts +2 -2
  97. package/types/Core/Interfaces/IParticleHslAnimation.d.ts +4 -4
  98. package/types/Core/Interfaces/IParticleMover.d.ts +2 -2
  99. package/types/Core/Interfaces/IParticleUpdater.d.ts +2 -2
  100. package/types/Core/Interfaces/IParticleValueAnimation.d.ts +4 -0
  101. package/types/Core/Interfaces/IPlugin.d.ts +1 -1
  102. package/types/Core/Interfaces/IShapeDrawData.d.ts +2 -2
  103. package/types/Core/Interfaces/IShapeDrawer.d.ts +4 -4
  104. package/types/Core/Particle.d.ts +3 -3
  105. package/types/Core/Particles.d.ts +12 -8
  106. package/types/Core/Utils/Constants.d.ts +3 -0
  107. package/types/Core/Utils/ExternalInteractorBase.d.ts +1 -1
  108. package/types/Core/Utils/InteractionManager.d.ts +3 -3
  109. package/types/Core/Utils/ParticlesInteractorBase.d.ts +1 -1
  110. package/types/Core/Utils/Point.d.ts +1 -1
  111. package/types/Enums/Modes/OutMode.d.ts +0 -3
  112. package/types/Options/Classes/BackgroundMask/BackgroundMaskCover.d.ts +2 -1
  113. package/types/Options/Classes/Options.d.ts +1 -0
  114. package/types/Options/Classes/Particles/Move/Move.d.ts +1 -2
  115. package/types/Options/Classes/Particles/Move/OutModes.d.ts +5 -6
  116. package/types/Options/Interfaces/BackgroundMask/IBackgroundMask.d.ts +2 -1
  117. package/types/Options/Interfaces/BackgroundMask/IBackgroundMaskCover.d.ts +2 -1
  118. package/types/Options/Interfaces/IOptions.d.ts +1 -0
  119. package/types/Options/Interfaces/Interactivity/Modes/IModes.d.ts +1 -3
  120. package/types/Options/Interfaces/Particles/Move/IMove.d.ts +2 -2
  121. package/types/Options/Interfaces/Particles/Move/IOutModes.d.ts +6 -6
  122. package/types/Types/CustomEventArgs.d.ts +2 -2
  123. package/types/Types/ExportResult.d.ts +2 -2
  124. package/types/Types/ParticlesGroups.d.ts +1 -3
  125. package/types/Types/PathOptions.d.ts +1 -3
  126. package/types/Types/ShapeData.d.ts +1 -3
  127. package/types/Utils/CanvasUtils.d.ts +9 -8
  128. package/types/Utils/ColorUtils.d.ts +5 -0
  129. package/types/Utils/NumberUtils.d.ts +2 -2
  130. package/types/Utils/Utils.d.ts +9 -6
  131. package/umd/Core/Canvas.js +102 -49
  132. package/umd/Core/Container.js +54 -42
  133. package/umd/Core/Engine.js +72 -33
  134. package/umd/Core/Particle.js +46 -48
  135. package/umd/Core/Particles.js +95 -58
  136. package/umd/Core/Retina.js +5 -4
  137. package/umd/Core/Utils/Circle.js +4 -3
  138. package/umd/Core/Utils/Constants.js +4 -1
  139. package/umd/Core/Utils/EventListeners.js +18 -15
  140. package/umd/Core/Utils/ExternalInteractorBase.js +1 -1
  141. package/umd/Core/Utils/InteractionManager.js +17 -8
  142. package/umd/Core/Utils/ParticlesInteractorBase.js +1 -1
  143. package/umd/Core/Utils/QuadTree.js +5 -3
  144. package/umd/Core/Utils/Vector.js +7 -2
  145. package/umd/Core/Utils/Vector3d.js +14 -9
  146. package/umd/Options/Classes/BackgroundMask/BackgroundMask.js +1 -1
  147. package/umd/Options/Classes/BackgroundMask/BackgroundMaskCover.js +3 -2
  148. package/umd/Options/Classes/ManualParticle.js +3 -2
  149. package/umd/Options/Classes/Options.js +3 -0
  150. package/umd/Utils/CanvasUtils.js +50 -40
  151. package/umd/Utils/ColorUtils.js +127 -46
  152. package/umd/Utils/EventDispatcher.js +6 -5
  153. package/umd/Utils/HslColorManager.js +5 -5
  154. package/umd/Utils/NumberUtils.js +38 -25
  155. package/umd/Utils/RgbColorManager.js +5 -5
  156. package/umd/Utils/Utils.js +104 -20
@@ -24,13 +24,13 @@ export class RgbColorManager {
24
24
  if (!input.startsWith(this.stringPrefix)) {
25
25
  return;
26
26
  }
27
- const regex = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.%]+)\s*)?\)/i, result = regex.exec(input);
27
+ const regex = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.%]+)\s*)?\)/i, result = regex.exec(input), radix = 10, minLength = 4, defaultAlpha = 1;
28
28
  return result
29
29
  ? {
30
- a: result.length > 4 ? parseAlpha(result[5]) : 1,
31
- b: parseInt(result[3], 10),
32
- g: parseInt(result[2], 10),
33
- r: parseInt(result[1], 10),
30
+ a: result.length > minLength ? parseAlpha(result[5]) : defaultAlpha,
31
+ b: parseInt(result[3], radix),
32
+ g: parseInt(result[2], radix),
33
+ r: parseInt(result[1], radix),
34
34
  }
35
35
  : undefined;
36
36
  }
@@ -1,4 +1,5 @@
1
- import { collisionVelocity, getDistances, getRandom, getRangeMax, getRangeMin, getRangeValue, randomInRange, } from "./NumberUtils.js";
1
+ import { clamp, collisionVelocity, getDistances, getRandom, getRangeMax, getRangeMin, getRangeValue, randomInRange, } from "./NumberUtils.js";
2
+ import { halfRandom, millisecondsToSeconds, percentDenominator } from "../Core/Utils/Constants.js";
2
3
  import { Vector } from "../Core/Utils/Vector.js";
3
4
  const _logger = {
4
5
  debug: console.debug,
@@ -20,15 +21,15 @@ export function getLogger() {
20
21
  return _logger;
21
22
  }
22
23
  function rectSideBounce(data) {
23
- const res = { bounced: false }, { pSide, pOtherSide, rectSide, rectOtherSide, velocity, factor } = data;
24
+ const res = { bounced: false }, { pSide, pOtherSide, rectSide, rectOtherSide, velocity, factor } = data, half = 0.5, minVelocity = 0;
24
25
  if (pOtherSide.min < rectOtherSide.min ||
25
26
  pOtherSide.min > rectOtherSide.max ||
26
27
  pOtherSide.max < rectOtherSide.min ||
27
28
  pOtherSide.max > rectOtherSide.max) {
28
29
  return res;
29
30
  }
30
- if ((pSide.max >= rectSide.min && pSide.max <= (rectSide.max + rectSide.min) * 0.5 && velocity > 0) ||
31
- (pSide.min <= rectSide.max && pSide.min > (rectSide.max + rectSide.min) * 0.5 && velocity < 0)) {
31
+ if ((pSide.max >= rectSide.min && pSide.max <= (rectSide.max + rectSide.min) * half && velocity > minVelocity) ||
32
+ (pSide.min <= rectSide.max && pSide.min > (rectSide.max + rectSide.min) * half && velocity < minVelocity)) {
32
33
  res.velocity = velocity * -factor;
33
34
  res.bounced = true;
34
35
  }
@@ -65,7 +66,8 @@ export function safeMutationObserver(callback) {
65
66
  return new MutationObserver(callback);
66
67
  }
67
68
  export function isInArray(value, array) {
68
- return value === array || (isArray(array) && array.indexOf(value) > -1);
69
+ const invalidIndex = -1;
70
+ return value === array || (isArray(array) && array.indexOf(value) > invalidIndex);
69
71
  }
70
72
  export async function loadFont(font, weight) {
71
73
  try {
@@ -81,7 +83,8 @@ export function itemFromArray(array, index, useIndex = true) {
81
83
  return array[index !== undefined && useIndex ? index % array.length : arrayRandomIndex(array)];
82
84
  }
83
85
  export function isPointInside(point, size, offset, radius, direction) {
84
- return areBoundsInside(calculateBounds(point, radius ?? 0), size, offset, direction);
86
+ const minRadius = 0;
87
+ return areBoundsInside(calculateBounds(point, radius ?? minRadius), size, offset, direction);
85
88
  }
86
89
  export function areBoundsInside(bounds, size, offset, direction) {
87
90
  let inside = true;
@@ -171,8 +174,8 @@ export function circleBounceDataFromParticle(p) {
171
174
  };
172
175
  }
173
176
  export function circleBounce(p1, p2) {
174
- const { x: xVelocityDiff, y: yVelocityDiff } = p1.velocity.sub(p2.velocity), [pos1, pos2] = [p1.position, p2.position], { dx: xDist, dy: yDist } = getDistances(pos2, pos1);
175
- if (xVelocityDiff * xDist + yVelocityDiff * yDist < 0) {
177
+ const { x: xVelocityDiff, y: yVelocityDiff } = p1.velocity.sub(p2.velocity), [pos1, pos2] = [p1.position, p2.position], { dx: xDist, dy: yDist } = getDistances(pos2, pos1), minimumDistance = 0;
178
+ if (xVelocityDiff * xDist + yVelocityDiff * yDist < minimumDistance) {
176
179
  return;
177
180
  }
178
181
  const angle = -Math.atan2(yDist, xDist), m1 = p1.mass, m2 = p2.mass, u1 = p1.velocity.rotate(angle), u2 = p2.velocity.rotate(angle), v1 = collisionVelocity(u1, u2, m1, m2), v2 = collisionVelocity(u2, u1, m1, m2), vFinal1 = v1.rotate(-angle), vFinal2 = v2.rotate(-angle);
@@ -240,17 +243,22 @@ export function rectBounce(particle, divBounds) {
240
243
  }
241
244
  }
242
245
  export function executeOnSingleOrMultiple(obj, callback) {
243
- return isArray(obj) ? obj.map((item, index) => callback(item, index)) : callback(obj, 0);
246
+ const defaultIndex = 0;
247
+ return isArray(obj) ? obj.map((item, index) => callback(item, index)) : callback(obj, defaultIndex);
244
248
  }
245
249
  export function itemFromSingleOrMultiple(obj, index, useIndex) {
246
250
  return isArray(obj) ? itemFromArray(obj, index, useIndex) : obj;
247
251
  }
248
252
  export function findItemFromSingleOrMultiple(obj, callback) {
249
- return isArray(obj) ? obj.find((t, index) => callback(t, index)) : callback(obj, 0) ? obj : undefined;
253
+ if (isArray(obj)) {
254
+ return obj.find((t, index) => callback(t, index));
255
+ }
256
+ const defaultIndex = 0;
257
+ return callback(obj, defaultIndex) ? obj : undefined;
250
258
  }
251
259
  export function initParticleNumericAnimationValue(options, pxRatio) {
252
260
  const valueRange = options.value, animationOptions = options.animation, res = {
253
- delayTime: getRangeValue(animationOptions.delay) * 1000,
261
+ delayTime: getRangeValue(animationOptions.delay) * millisecondsToSeconds,
254
262
  enable: animationOptions.enable,
255
263
  value: getRangeValue(options.value) * pxRatio,
256
264
  max: getRangeMax(valueRange) * pxRatio,
@@ -258,9 +266,9 @@ export function initParticleNumericAnimationValue(options, pxRatio) {
258
266
  loops: 0,
259
267
  maxLoops: getRangeValue(animationOptions.count),
260
268
  time: 0,
261
- };
269
+ }, decayOffset = 1;
262
270
  if (animationOptions.enable) {
263
- res.decay = 1 - getRangeValue(animationOptions.decay);
271
+ res.decay = decayOffset - getRangeValue(animationOptions.decay);
264
272
  switch (animationOptions.mode) {
265
273
  case "increase":
266
274
  res.status = "increasing";
@@ -269,7 +277,7 @@ export function initParticleNumericAnimationValue(options, pxRatio) {
269
277
  res.status = "decreasing";
270
278
  break;
271
279
  case "random":
272
- res.status = getRandom() >= 0.5 ? "increasing" : "decreasing";
280
+ res.status = getRandom() >= halfRandom ? "increasing" : "decreasing";
273
281
  break;
274
282
  }
275
283
  const autoStatus = animationOptions.mode === "auto";
@@ -290,7 +298,7 @@ export function initParticleNumericAnimationValue(options, pxRatio) {
290
298
  default:
291
299
  res.value = randomInRange(res);
292
300
  if (autoStatus) {
293
- res.status = getRandom() >= 0.5 ? "increasing" : "decreasing";
301
+ res.status = getRandom() >= halfRandom ? "increasing" : "decreasing";
294
302
  }
295
303
  break;
296
304
  }
@@ -307,14 +315,14 @@ function getPositionOrSize(positionOrSize, canvasSize) {
307
315
  const isPosition = "x" in positionOrSize;
308
316
  if (isPosition) {
309
317
  return {
310
- x: (positionOrSize.x / 100) * canvasSize.width,
311
- y: (positionOrSize.y / 100) * canvasSize.height,
318
+ x: (positionOrSize.x / percentDenominator) * canvasSize.width,
319
+ y: (positionOrSize.y / percentDenominator) * canvasSize.height,
312
320
  };
313
321
  }
314
322
  else {
315
323
  return {
316
- width: (positionOrSize.width / 100) * canvasSize.width,
317
- height: (positionOrSize.height / 100) * canvasSize.height,
324
+ width: (positionOrSize.width / percentDenominator) * canvasSize.width,
325
+ height: (positionOrSize.height / percentDenominator) * canvasSize.height,
318
326
  };
319
327
  }
320
328
  }
@@ -342,3 +350,78 @@ export function isObject(arg) {
342
350
  export function isArray(arg) {
343
351
  return Array.isArray(arg);
344
352
  }
353
+ function checkDestroy(particle, destroyType, value, minValue, maxValue) {
354
+ switch (destroyType) {
355
+ case "max":
356
+ if (value >= maxValue) {
357
+ particle.destroy();
358
+ }
359
+ break;
360
+ case "min":
361
+ if (value <= minValue) {
362
+ particle.destroy();
363
+ }
364
+ break;
365
+ }
366
+ }
367
+ export function updateAnimation(particle, data, changeDirection, destroyType, delta) {
368
+ const minLoops = 0, minDelay = 0, identity = 1, minVelocity = 0, minDecay = 1;
369
+ if (particle.destroyed ||
370
+ !data ||
371
+ !data.enable ||
372
+ ((data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops))) {
373
+ return;
374
+ }
375
+ const velocity = (data.velocity ?? minVelocity) * delta.factor, minValue = data.min, maxValue = data.max, decay = data.decay ?? minDecay;
376
+ if (!data.time) {
377
+ data.time = 0;
378
+ }
379
+ if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {
380
+ data.time += delta.value;
381
+ }
382
+ if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {
383
+ return;
384
+ }
385
+ switch (data.status) {
386
+ case "increasing":
387
+ if (data.value >= maxValue) {
388
+ if (changeDirection) {
389
+ data.status = "decreasing";
390
+ }
391
+ else {
392
+ data.value -= maxValue;
393
+ }
394
+ if (!data.loops) {
395
+ data.loops = minLoops;
396
+ }
397
+ data.loops++;
398
+ }
399
+ else {
400
+ data.value += velocity;
401
+ }
402
+ break;
403
+ case "decreasing":
404
+ if (data.value <= minValue) {
405
+ if (changeDirection) {
406
+ data.status = "increasing";
407
+ }
408
+ else {
409
+ data.value += maxValue;
410
+ }
411
+ if (!data.loops) {
412
+ data.loops = minLoops;
413
+ }
414
+ data.loops++;
415
+ }
416
+ else {
417
+ data.value -= velocity;
418
+ }
419
+ }
420
+ if (data.velocity && decay !== identity) {
421
+ data.velocity *= decay;
422
+ }
423
+ checkDestroy(particle, destroyType, data.value, minValue, maxValue);
424
+ if (!particle.destroyed) {
425
+ data.value = clamp(data.value, minValue, maxValue);
426
+ }
427
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/engine",
3
- "version": "3.0.3",
3
+ "version": "3.2.0",
4
4
  "description": "Easily create highly customizable particle, confetti and fireworks animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.",
5
5
  "homepage": "https://particles.js.org",
6
6
  "scripts": {
package/report.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>@tsparticles/engine [26 Dec 2023 at 19:24]</title>
6
+ <title>@tsparticles/engine [31 Jan 2024 at 02:02]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
@@ -31,8 +31,8 @@
31
31
  <body>
32
32
  <div id="app"></div>
33
33
  <script>
34
- window.chartData = [{"label":"tsparticles.engine.js","isAsset":true,"statSize":157175,"parsedSize":159553,"gzipSize":30211,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":157175,"groups":[{"id":518,"label":"index.js + 79 modules (concatenated)","path":"./dist/browser/index.js + 79 modules (concatenated)","statSize":157175,"parsedSize":159553,"gzipSize":30211,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser","statSize":157175,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/index.js","statSize":246,"parsedSize":249,"gzipSize":47,"inaccurateSizes":true},{"id":null,"label":"init.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/init.js","statSize":481,"parsedSize":488,"gzipSize":92,"inaccurateSizes":true},{"label":"Utils","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils","statSize":31629,"groups":[{"id":null,"label":"Utils.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils/Utils.js","statSize":11126,"parsedSize":11294,"gzipSize":2138,"inaccurateSizes":true},{"id":null,"label":"RgbColorManager.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils/RgbColorManager.js","statSize":1053,"parsedSize":1068,"gzipSize":202,"inaccurateSizes":true},{"id":null,"label":"NumberUtils.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils/NumberUtils.js","statSize":4334,"parsedSize":4399,"gzipSize":833,"inaccurateSizes":true},{"id":null,"label":"HslColorManager.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils/HslColorManager.js","statSize":1215,"parsedSize":1233,"gzipSize":233,"inaccurateSizes":true},{"id":null,"label":"ColorUtils.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils/ColorUtils.js","statSize":8040,"parsedSize":8161,"gzipSize":1545,"inaccurateSizes":true},{"id":null,"label":"OptionsUtils.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils/OptionsUtils.js","statSize":436,"parsedSize":442,"gzipSize":83,"inaccurateSizes":true},{"id":null,"label":"CanvasUtils.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils/CanvasUtils.js","statSize":4416,"parsedSize":4482,"gzipSize":848,"inaccurateSizes":true},{"id":null,"label":"EventDispatcher.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Utils/EventDispatcher.js","statSize":1009,"parsedSize":1024,"gzipSize":193,"inaccurateSizes":true}],"parsedSize":32107,"gzipSize":6079,"inaccurateSizes":true},{"id":null,"label":"exports.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/exports.js","statSize":4900,"parsedSize":4974,"gzipSize":941,"inaccurateSizes":true},{"label":"Core","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core","statSize":83777,"groups":[{"label":"Utils","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils","statSize":21490,"groups":[{"id":null,"label":"Vector.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/Vector.js","statSize":336,"parsedSize":341,"gzipSize":64,"inaccurateSizes":true},{"id":null,"label":"Vector3d.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/Vector3d.js","statSize":2398,"parsedSize":2434,"gzipSize":460,"inaccurateSizes":true},{"id":null,"label":"Constants.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/Constants.js","statSize":587,"parsedSize":595,"gzipSize":112,"inaccurateSizes":true},{"id":null,"label":"Rectangle.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/Rectangle.js","statSize":913,"parsedSize":926,"gzipSize":175,"inaccurateSizes":true},{"id":null,"label":"Range.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/Range.js","statSize":100,"parsedSize":101,"gzipSize":19,"inaccurateSizes":true},{"id":null,"label":"Circle.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/Circle.js","statSize":1057,"parsedSize":1072,"gzipSize":203,"inaccurateSizes":true},{"id":null,"label":"Point.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/Point.js","statSize":122,"parsedSize":123,"gzipSize":23,"inaccurateSizes":true},{"id":null,"label":"ExternalInteractorBase.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/ExternalInteractorBase.js","statSize":130,"parsedSize":131,"gzipSize":24,"inaccurateSizes":true},{"id":null,"label":"ParticlesInteractorBase.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/ParticlesInteractorBase.js","statSize":132,"parsedSize":133,"gzipSize":25,"inaccurateSizes":true},{"id":null,"label":"EventListeners.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/EventListeners.js","statSize":12224,"parsedSize":12408,"gzipSize":2349,"inaccurateSizes":true},{"id":null,"label":"InteractionManager.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/InteractionManager.js","statSize":1600,"parsedSize":1624,"gzipSize":307,"inaccurateSizes":true},{"id":null,"label":"QuadTree.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Utils/QuadTree.js","statSize":1891,"parsedSize":1919,"gzipSize":363,"inaccurateSizes":true}],"parsedSize":21815,"gzipSize":4130,"inaccurateSizes":true},{"id":null,"label":"Engine.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Engine.js","statSize":7885,"parsedSize":8004,"gzipSize":1515,"inaccurateSizes":true},{"id":null,"label":"Container.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Container.js","statSize":13602,"parsedSize":13807,"gzipSize":2614,"inaccurateSizes":true},{"id":null,"label":"Retina.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Retina.js","statSize":1689,"parsedSize":1714,"gzipSize":324,"inaccurateSizes":true},{"id":null,"label":"Canvas.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Canvas.js","statSize":13991,"parsedSize":14202,"gzipSize":2689,"inaccurateSizes":true},{"id":null,"label":"Particles.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Particles.js","statSize":11156,"parsedSize":11324,"gzipSize":2144,"inaccurateSizes":true},{"id":null,"label":"Particle.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Core/Particle.js","statSize":13964,"parsedSize":14175,"gzipSize":2684,"inaccurateSizes":true}],"parsedSize":85044,"gzipSize":16102,"inaccurateSizes":true},{"label":"Options/Classes","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes","statSize":36142,"groups":[{"id":null,"label":"Options.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Options.js","statSize":5435,"parsedSize":5517,"gzipSize":1044,"inaccurateSizes":true},{"label":"Background","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Background","statSize":815,"groups":[{"id":null,"label":"Background.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Background/Background.js","statSize":815,"parsedSize":827,"gzipSize":156,"inaccurateSizes":true}],"parsedSize":827,"gzipSize":156,"inaccurateSizes":true},{"id":null,"label":"OptionsColor.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/OptionsColor.js","statSize":536,"parsedSize":544,"gzipSize":103,"inaccurateSizes":true},{"label":"BackgroundMask","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask","statSize":1193,"groups":[{"id":null,"label":"BackgroundMask.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask/BackgroundMask.js","statSize":753,"parsedSize":764,"gzipSize":144,"inaccurateSizes":true},{"id":null,"label":"BackgroundMaskCover.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js","statSize":440,"parsedSize":446,"gzipSize":84,"inaccurateSizes":true}],"parsedSize":1211,"gzipSize":229,"inaccurateSizes":true},{"label":"FullScreen","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/FullScreen","statSize":302,"groups":[{"id":null,"label":"FullScreen.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/FullScreen/FullScreen.js","statSize":302,"parsedSize":306,"gzipSize":58,"inaccurateSizes":true}],"parsedSize":306,"gzipSize":58,"inaccurateSizes":true},{"label":"Interactivity","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity","statSize":3745,"groups":[{"id":null,"label":"Interactivity.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Interactivity.js","statSize":503,"parsedSize":510,"gzipSize":96,"inaccurateSizes":true},{"label":"Events","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events","statSize":2739,"groups":[{"id":null,"label":"Events.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/Events.js","statSize":821,"parsedSize":833,"gzipSize":157,"inaccurateSizes":true},{"id":null,"label":"ClickEvent.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/ClickEvent.js","statSize":296,"parsedSize":300,"gzipSize":56,"inaccurateSizes":true},{"id":null,"label":"DivEvent.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/DivEvent.js","statSize":500,"parsedSize":507,"gzipSize":96,"inaccurateSizes":true},{"id":null,"label":"HoverEvent.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/HoverEvent.js","statSize":413,"parsedSize":419,"gzipSize":79,"inaccurateSizes":true},{"id":null,"label":"Parallax.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/Parallax.js","statSize":395,"parsedSize":400,"gzipSize":75,"inaccurateSizes":true},{"id":null,"label":"ResizeEvent.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/ResizeEvent.js","statSize":314,"parsedSize":318,"gzipSize":60,"inaccurateSizes":true}],"parsedSize":2780,"gzipSize":526,"inaccurateSizes":true},{"label":"Modes","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Modes","statSize":503,"groups":[{"id":null,"label":"Modes.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Modes/Modes.js","statSize":503,"parsedSize":510,"gzipSize":96,"inaccurateSizes":true}],"parsedSize":510,"gzipSize":96,"inaccurateSizes":true}],"parsedSize":3801,"gzipSize":719,"inaccurateSizes":true},{"label":"Particles","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles","statSize":18510,"groups":[{"id":null,"label":"ParticlesOptions.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/ParticlesOptions.js","statSize":3102,"parsedSize":3148,"gzipSize":596,"inaccurateSizes":true},{"label":"Bounce","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Bounce","statSize":537,"groups":[{"id":null,"label":"ParticlesBounce.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Bounce/ParticlesBounce.js","statSize":360,"parsedSize":365,"gzipSize":69,"inaccurateSizes":true},{"id":null,"label":"ParticlesBounceFactor.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js","statSize":177,"parsedSize":179,"gzipSize":34,"inaccurateSizes":true}],"parsedSize":545,"gzipSize":103,"inaccurateSizes":true},{"label":"Collisions","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions","statSize":1422,"groups":[{"id":null,"label":"Collisions.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions/Collisions.js","statSize":905,"parsedSize":918,"gzipSize":173,"inaccurateSizes":true},{"id":null,"label":"CollisionsAbsorb.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions/CollisionsAbsorb.js","statSize":204,"parsedSize":207,"gzipSize":39,"inaccurateSizes":true},{"id":null,"label":"CollisionsOverlap.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js","statSize":313,"parsedSize":317,"gzipSize":60,"inaccurateSizes":true}],"parsedSize":1443,"gzipSize":273,"inaccurateSizes":true},{"label":"Move","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move","statSize":7212,"groups":[{"id":null,"label":"Move.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Move.js","statSize":2663,"parsedSize":2703,"gzipSize":511,"inaccurateSizes":true},{"id":null,"label":"MoveAngle.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveAngle.js","statSize":391,"parsedSize":396,"gzipSize":75,"inaccurateSizes":true},{"id":null,"label":"MoveAttract.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveAttract.js","statSize":706,"parsedSize":716,"gzipSize":135,"inaccurateSizes":true},{"id":null,"label":"MoveCenter.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveCenter.js","statSize":455,"parsedSize":461,"gzipSize":87,"inaccurateSizes":true},{"id":null,"label":"MoveGravity.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveGravity.js","statSize":638,"parsedSize":647,"gzipSize":122,"inaccurateSizes":true},{"label":"Path","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Path","statSize":647,"groups":[{"id":null,"label":"MovePath.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Path/MovePath.js","statSize":647,"parsedSize":656,"gzipSize":124,"inaccurateSizes":true}],"parsedSize":656,"gzipSize":124,"inaccurateSizes":true},{"id":null,"label":"OutModes.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/OutModes.js","statSize":384,"parsedSize":389,"gzipSize":73,"inaccurateSizes":true},{"id":null,"label":"Spin.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Spin.js","statSize":543,"parsedSize":551,"gzipSize":104,"inaccurateSizes":true},{"id":null,"label":"MoveTrail.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveTrail.js","statSize":466,"parsedSize":473,"gzipSize":89,"inaccurateSizes":true},{"id":null,"label":"MoveTrailFill.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveTrailFill.js","statSize":319,"parsedSize":323,"gzipSize":61,"inaccurateSizes":true}],"parsedSize":7321,"gzipSize":1386,"inaccurateSizes":true},{"label":"Number","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Number","statSize":1239,"groups":[{"id":null,"label":"ParticlesNumber.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Number/ParticlesNumber.js","statSize":485,"parsedSize":492,"gzipSize":93,"inaccurateSizes":true},{"id":null,"label":"ParticlesDensity.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Number/ParticlesDensity.js","statSize":450,"parsedSize":456,"gzipSize":86,"inaccurateSizes":true},{"id":null,"label":"ParticlesNumberLimit.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js","statSize":304,"parsedSize":308,"gzipSize":58,"inaccurateSizes":true}],"parsedSize":1257,"gzipSize":238,"inaccurateSizes":true},{"label":"Opacity","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity","statSize":862,"groups":[{"id":null,"label":"Opacity.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity/Opacity.js","statSize":491,"parsedSize":498,"gzipSize":94,"inaccurateSizes":true},{"id":null,"label":"OpacityAnimation.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js","statSize":371,"parsedSize":376,"gzipSize":71,"inaccurateSizes":true}],"parsedSize":875,"gzipSize":165,"inaccurateSizes":true},{"id":null,"label":"Shadow.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Shadow.js","statSize":743,"parsedSize":754,"gzipSize":142,"inaccurateSizes":true},{"label":"Shape","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Shape","statSize":726,"groups":[{"id":null,"label":"Shape.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Shape/Shape.js","statSize":726,"parsedSize":736,"gzipSize":139,"inaccurateSizes":true}],"parsedSize":736,"gzipSize":139,"inaccurateSizes":true},{"label":"Size","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Size","statSize":847,"groups":[{"id":null,"label":"Size.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Size/Size.js","statSize":479,"parsedSize":486,"gzipSize":92,"inaccurateSizes":true},{"id":null,"label":"SizeAnimation.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Size/SizeAnimation.js","statSize":368,"parsedSize":373,"gzipSize":70,"inaccurateSizes":true}],"parsedSize":859,"gzipSize":162,"inaccurateSizes":true},{"id":null,"label":"Stroke.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Stroke.js","statSize":532,"parsedSize":540,"gzipSize":102,"inaccurateSizes":true},{"label":"ZIndex","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/ZIndex","statSize":563,"groups":[{"id":null,"label":"ZIndex.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/ZIndex/ZIndex.js","statSize":563,"parsedSize":571,"gzipSize":108,"inaccurateSizes":true}],"parsedSize":571,"gzipSize":108,"inaccurateSizes":true},{"label":"Effect","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Effect","statSize":725,"groups":[{"id":null,"label":"Effect.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Particles/Effect/Effect.js","statSize":725,"parsedSize":735,"gzipSize":139,"inaccurateSizes":true}],"parsedSize":735,"gzipSize":139,"inaccurateSizes":true}],"parsedSize":18790,"gzipSize":3557,"inaccurateSizes":true},{"id":null,"label":"ValueWithRandom.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/ValueWithRandom.js","statSize":909,"parsedSize":922,"gzipSize":174,"inaccurateSizes":true},{"id":null,"label":"AnimationOptions.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/AnimationOptions.js","statSize":1189,"parsedSize":1206,"gzipSize":228,"inaccurateSizes":true},{"id":null,"label":"AnimatableColor.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/AnimatableColor.js","statSize":922,"parsedSize":935,"gzipSize":177,"inaccurateSizes":true},{"id":null,"label":"HslAnimation.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/HslAnimation.js","statSize":341,"parsedSize":346,"gzipSize":65,"inaccurateSizes":true},{"id":null,"label":"ColorAnimation.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/ColorAnimation.js","statSize":421,"parsedSize":427,"gzipSize":80,"inaccurateSizes":true},{"id":null,"label":"ManualParticle.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/ManualParticle.js","statSize":397,"parsedSize":403,"gzipSize":76,"inaccurateSizes":true},{"id":null,"label":"Responsive.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Responsive.js","statSize":572,"parsedSize":580,"gzipSize":109,"inaccurateSizes":true},{"label":"Theme","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Theme","statSize":855,"groups":[{"id":null,"label":"Theme.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Theme/Theme.js","statSize":465,"parsedSize":472,"gzipSize":89,"inaccurateSizes":true},{"id":null,"label":"ThemeDefault.js","path":"./dist/browser/index.js + 79 modules (concatenated)/dist/browser/Options/Classes/Theme/ThemeDefault.js","statSize":390,"parsedSize":395,"gzipSize":74,"inaccurateSizes":true}],"parsedSize":867,"gzipSize":164,"inaccurateSizes":true}],"parsedSize":36688,"gzipSize":6946,"inaccurateSizes":true}],"parsedSize":159553,"gzipSize":30211,"inaccurateSizes":true}]}],"parsedSize":159553,"gzipSize":30211}],"isInitialByEntrypoint":{"tsparticles.engine":true}}];
35
- window.entrypoints = ["tsparticles.engine","tsparticles.engine.min"];
34
+ window.chartData = [];
35
+ window.entrypoints = ["tsparticles.engine.min"];
36
36
  window.defaultSizes = "parsed";
37
37
  </script>
38
38
  </body>