@tsparticles/engine 3.0.0-beta.2 → 3.0.0-beta.3

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 (49) hide show
  1. package/browser/Core/Container.js +3 -5
  2. package/browser/Core/Engine.js +10 -50
  3. package/browser/Core/Particle.js +13 -13
  4. package/browser/Utils/CanvasUtils.js +9 -6
  5. package/browser/Utils/Utils.js +6 -0
  6. package/browser/export-types.js +0 -2
  7. package/cjs/Core/Container.js +3 -5
  8. package/cjs/Core/Engine.js +9 -49
  9. package/cjs/Core/Particle.js +13 -13
  10. package/cjs/Utils/CanvasUtils.js +9 -6
  11. package/cjs/Utils/Utils.js +8 -1
  12. package/cjs/export-types.js +0 -2
  13. package/esm/Core/Container.js +3 -5
  14. package/esm/Core/Engine.js +10 -50
  15. package/esm/Core/Particle.js +13 -13
  16. package/esm/Utils/CanvasUtils.js +9 -6
  17. package/esm/Utils/Utils.js +6 -0
  18. package/esm/export-types.js +0 -2
  19. package/package.json +1 -1
  20. package/report.html +2 -2
  21. package/tsparticles.engine.js +80 -70
  22. package/tsparticles.engine.min.js +1 -1
  23. package/tsparticles.engine.min.js.LICENSE.txt +1 -1
  24. package/types/Core/Container.d.ts +2 -2
  25. package/types/Core/Engine.d.ts +3 -4
  26. package/types/Core/Interfaces/IShapeDrawer.d.ts +19 -9
  27. package/types/Core/Particle.d.ts +1 -3
  28. package/types/Enums/Types/EventType.d.ts +1 -0
  29. package/types/Types/CustomEventArgs.d.ts +1 -1
  30. package/types/Utils/CanvasUtils.d.ts +11 -2
  31. package/types/Utils/ColorUtils.d.ts +2 -2
  32. package/types/Utils/Utils.d.ts +4 -3
  33. package/types/export-types.d.ts +0 -2
  34. package/umd/Core/Container.js +4 -6
  35. package/umd/Core/Engine.js +9 -49
  36. package/umd/Core/Particle.js +13 -13
  37. package/umd/Utils/CanvasUtils.js +9 -6
  38. package/umd/Utils/Utils.js +8 -1
  39. package/umd/export-types.js +1 -3
  40. package/browser/Core/Interfaces/IParticle.js +0 -1
  41. package/browser/Types/ShapeDrawerFunctions.js +0 -1
  42. package/cjs/Core/Interfaces/IParticle.js +0 -2
  43. package/cjs/Types/ShapeDrawerFunctions.js +0 -2
  44. package/esm/Core/Interfaces/IParticle.js +0 -1
  45. package/esm/Types/ShapeDrawerFunctions.js +0 -1
  46. package/types/Core/Interfaces/IParticle.d.ts +0 -48
  47. package/types/Types/ShapeDrawerFunctions.d.ts +0 -10
  48. package/umd/Core/Interfaces/IParticle.js +0 -12
  49. package/umd/Types/ShapeDrawerFunctions.js +0 -12
@@ -7,7 +7,17 @@ import { Vector3d } from "./Utils/Vector3d.js";
7
7
  import { alterHsl } from "../Utils/CanvasUtils.js";
8
8
  import { errorPrefix } from "./Utils/Constants.js";
9
9
  import { loadParticlesOptions } from "../Utils/OptionsUtils.js";
10
- const fixOutMode = (data) => {
10
+ function loadShapeData(shape, shapeOptions, id, reduceDuplicates) {
11
+ const shapeData = shapeOptions.options[shape];
12
+ if (!shapeData) {
13
+ return;
14
+ }
15
+ return deepExtend({
16
+ close: shapeOptions.close,
17
+ fill: shapeOptions.fill,
18
+ }, itemFromSingleOrMultiple(shapeData, id, reduceDuplicates));
19
+ }
20
+ function fixOutMode(data) {
11
21
  if (!isInArray(data.outMode, data.checkModes)) {
12
22
  return;
13
23
  }
@@ -18,7 +28,7 @@ const fixOutMode = (data) => {
18
28
  else if (data.coord < diameter) {
19
29
  data.setCb(data.radius);
20
30
  }
21
- };
31
+ }
22
32
  export class Particle {
23
33
  constructor(engine, id, container, position, overrideOptions, group) {
24
34
  this.container = container;
@@ -129,16 +139,6 @@ export class Particle {
129
139
  }
130
140
  this.offset = Vector.origin;
131
141
  };
132
- this._loadShapeData = (shapeOptions, reduceDuplicates) => {
133
- const shapeData = shapeOptions.options[this.shape];
134
- if (!shapeData) {
135
- return;
136
- }
137
- return deepExtend({
138
- close: shapeOptions.close,
139
- fill: shapeOptions.fill,
140
- }, itemFromSingleOrMultiple(shapeData, this.id, reduceDuplicates));
141
- };
142
142
  this._engine = engine;
143
143
  this.init(id, position, overrideOptions, group);
144
144
  }
@@ -217,7 +217,7 @@ export class Particle {
217
217
  shapeOptions.load(overrideOptions.shape);
218
218
  }
219
219
  }
220
- this.shapeData = this._loadShapeData(shapeOptions, reduceDuplicates);
220
+ this.shapeData = loadShapeData(this.shape, shapeOptions, this.id, reduceDuplicates);
221
221
  particlesOptions.load(overrideOptions);
222
222
  const shapeData = this.shapeData;
223
223
  if (shapeData) {
@@ -58,7 +58,8 @@ export function drawParticle(data) {
58
58
  if (colorStyles.stroke) {
59
59
  context.strokeStyle = colorStyles.stroke;
60
60
  }
61
- drawShape(container, context, particle, radius, opacity, delta);
61
+ const drawData = { container, context, particle, radius, opacity, delta };
62
+ drawShape(drawData);
62
63
  if (strokeWidth > 0) {
63
64
  context.stroke();
64
65
  }
@@ -68,11 +69,12 @@ export function drawParticle(data) {
68
69
  if (particle.fill) {
69
70
  context.fill();
70
71
  }
71
- drawShapeAfterEffect(container, context, particle, radius, opacity, delta);
72
+ drawShapeAfterEffect(drawData);
72
73
  context.globalCompositeOperation = "source-over";
73
74
  context.setTransform(1, 0, 0, 1, 0, 0);
74
75
  }
75
- export function drawShape(container, context, particle, radius, opacity, delta) {
76
+ export function drawShape(data) {
77
+ const { container, context, particle, radius, opacity, delta } = data;
76
78
  if (!particle.shape) {
77
79
  return;
78
80
  }
@@ -80,9 +82,10 @@ export function drawShape(container, context, particle, radius, opacity, delta)
80
82
  if (!drawer) {
81
83
  return;
82
84
  }
83
- drawer.draw(context, particle, radius, opacity, delta, container.retina.pixelRatio);
85
+ drawer.draw({ context, particle, radius, opacity, delta, pixelRatio: container.retina.pixelRatio });
84
86
  }
85
- export function drawShapeAfterEffect(container, context, particle, radius, opacity, delta) {
87
+ export function drawShapeAfterEffect(data) {
88
+ const { container, context, particle, radius, opacity, delta } = data;
86
89
  if (!particle.shape) {
87
90
  return;
88
91
  }
@@ -90,7 +93,7 @@ export function drawShapeAfterEffect(container, context, particle, radius, opaci
90
93
  if (!drawer || !drawer.afterEffect) {
91
94
  return;
92
95
  }
93
- drawer.afterEffect(context, particle, radius, opacity, delta, container.retina.pixelRatio);
96
+ drawer.afterEffect({ context, particle, radius, opacity, delta, pixelRatio: container.retina.pixelRatio });
94
97
  }
95
98
  export function drawPlugin(context, plugin, delta) {
96
99
  if (!plugin.draw) {
@@ -52,6 +52,12 @@ export function safeMatchMedia(query) {
52
52
  }
53
53
  return matchMedia(query);
54
54
  }
55
+ export function safeIntersectionObserver(callback) {
56
+ if (isSsr() || typeof IntersectionObserver === "undefined") {
57
+ return;
58
+ }
59
+ return new IntersectionObserver(callback);
60
+ }
55
61
  export function safeMutationObserver(callback) {
56
62
  if (isSsr() || typeof MutationObserver === "undefined") {
57
63
  return;
@@ -15,7 +15,6 @@ export * from "./Core/Interfaces/IInteractor.js";
15
15
  export * from "./Core/Interfaces/ILoadParams.js";
16
16
  export * from "./Core/Interfaces/IMouseData.js";
17
17
  export * from "./Core/Interfaces/IMovePathGenerator.js";
18
- export * from "./Core/Interfaces/IParticle.js";
19
18
  export * from "./Core/Interfaces/IParticleColorStyle.js";
20
19
  export * from "./Core/Interfaces/IParticleHslAnimation.js";
21
20
  export * from "./Core/Interfaces/IParticleLife.js";
@@ -93,5 +92,4 @@ export * from "./Types/PathOptions.js";
93
92
  export * from "./Types/RangeValue.js";
94
93
  export * from "./Types/RecursivePartial.js";
95
94
  export * from "./Types/ShapeData.js";
96
- export * from "./Types/ShapeDrawerFunctions.js";
97
95
  export * from "./Types/SingleOrMultiple.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/engine",
3
- "version": "3.0.0-beta.2",
3
+ "version": "3.0.0-beta.3",
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 [11 Sep 2023 at 10:13]</title>
6
+ <title>@tsparticles/engine [20 Sep 2023 at 09:23]</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>
@@ -49,7 +49,7 @@ var t="[object Symbol]",n=/[&<>"'`]/g,i=RegExp(n.source),r="object"==typeof self
49
49
  <body>
50
50
  <div id="app"></div>
51
51
  <script>
52
- window.chartData = [{"label":"tsparticles.engine.js","isAsset":true,"statSize":153020,"parsedSize":155319,"gzipSize":29631,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":153020,"groups":[{"id":394,"label":"index.js + 78 modules (concatenated)","path":"./dist/browser/index.js + 78 modules (concatenated)","statSize":153020,"parsedSize":155319,"gzipSize":29631,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser","statSize":153020,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/index.js","statSize":246,"parsedSize":249,"gzipSize":47,"inaccurateSizes":true},{"id":null,"label":"init.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/init.js","statSize":481,"parsedSize":488,"gzipSize":93,"inaccurateSizes":true},{"label":"Utils","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils","statSize":30706,"groups":[{"id":null,"label":"Utils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/Utils.js","statSize":10883,"parsedSize":11046,"gzipSize":2107,"inaccurateSizes":true},{"id":null,"label":"RgbColorManager.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/RgbColorManager.js","statSize":1053,"parsedSize":1068,"gzipSize":203,"inaccurateSizes":true},{"id":null,"label":"NumberUtils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/NumberUtils.js","statSize":4645,"parsedSize":4714,"gzipSize":899,"inaccurateSizes":true},{"id":null,"label":"HslColorManager.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/HslColorManager.js","statSize":1215,"parsedSize":1233,"gzipSize":235,"inaccurateSizes":true},{"id":null,"label":"ColorUtils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/ColorUtils.js","statSize":7728,"parsedSize":7844,"gzipSize":1496,"inaccurateSizes":true},{"id":null,"label":"OptionsUtils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/OptionsUtils.js","statSize":436,"parsedSize":442,"gzipSize":84,"inaccurateSizes":true},{"id":null,"label":"CanvasUtils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/CanvasUtils.js","statSize":3737,"parsedSize":3793,"gzipSize":723,"inaccurateSizes":true},{"id":null,"label":"EventDispatcher.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/EventDispatcher.js","statSize":1009,"parsedSize":1024,"gzipSize":195,"inaccurateSizes":true}],"parsedSize":31167,"gzipSize":5945,"inaccurateSizes":true},{"id":null,"label":"exports.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/exports.js","statSize":4910,"parsedSize":4983,"gzipSize":950,"inaccurateSizes":true},{"label":"Core","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core","statSize":80697,"groups":[{"label":"Utils","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils","statSize":21480,"groups":[{"id":null,"label":"Vector.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/Vector.js","statSize":336,"parsedSize":341,"gzipSize":65,"inaccurateSizes":true},{"id":null,"label":"Vector3d.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/Vector3d.js","statSize":2398,"parsedSize":2434,"gzipSize":464,"inaccurateSizes":true},{"id":null,"label":"Constants.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/Constants.js","statSize":587,"parsedSize":595,"gzipSize":113,"inaccurateSizes":true},{"id":null,"label":"Rectangle.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/Rectangle.js","statSize":913,"parsedSize":926,"gzipSize":176,"inaccurateSizes":true},{"id":null,"label":"Range.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Core/Utils/Circle.js","statSize":1057,"parsedSize":1072,"gzipSize":204,"inaccurateSizes":true},{"id":null,"label":"Point.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Core/Utils/ExternalInteractorBase.js","statSize":130,"parsedSize":131,"gzipSize":25,"inaccurateSizes":true},{"id":null,"label":"ParticlesInteractorBase.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Core/Utils/EventListeners.js","statSize":12224,"parsedSize":12407,"gzipSize":2367,"inaccurateSizes":true},{"id":null,"label":"InteractionManager.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/InteractionManager.js","statSize":1600,"parsedSize":1624,"gzipSize":309,"inaccurateSizes":true},{"id":null,"label":"QuadTree.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/QuadTree.js","statSize":1881,"parsedSize":1909,"gzipSize":364,"inaccurateSizes":true}],"parsedSize":21802,"gzipSize":4159,"inaccurateSizes":true},{"id":null,"label":"Engine.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Engine.js","statSize":8423,"parsedSize":8549,"gzipSize":1631,"inaccurateSizes":true},{"id":null,"label":"Container.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Container.js","statSize":13013,"parsedSize":13208,"gzipSize":2519,"inaccurateSizes":true},{"id":null,"label":"Retina.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Retina.js","statSize":1850,"parsedSize":1877,"gzipSize":358,"inaccurateSizes":true},{"id":null,"label":"Canvas.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Canvas.js","statSize":13955,"parsedSize":14164,"gzipSize":2702,"inaccurateSizes":true},{"id":null,"label":"Particles.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Particles.js","statSize":9949,"parsedSize":10098,"gzipSize":1926,"inaccurateSizes":true},{"id":null,"label":"Particle.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Particle.js","statSize":12027,"parsedSize":12207,"gzipSize":2328,"inaccurateSizes":true}],"parsedSize":81909,"gzipSize":15626,"inaccurateSizes":true},{"label":"Options/Classes","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes","statSize":35980,"groups":[{"id":null,"label":"Options.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Options.js","statSize":5269,"parsedSize":5348,"gzipSize":1020,"inaccurateSizes":true},{"label":"Background","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Background","statSize":815,"groups":[{"id":null,"label":"Background.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Background/Background.js","statSize":815,"parsedSize":827,"gzipSize":157,"inaccurateSizes":true}],"parsedSize":827,"gzipSize":157,"inaccurateSizes":true},{"id":null,"label":"OptionsColor.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/OptionsColor.js","statSize":536,"parsedSize":544,"gzipSize":103,"inaccurateSizes":true},{"label":"BackgroundMask","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask","statSize":1193,"groups":[{"id":null,"label":"BackgroundMask.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask/BackgroundMask.js","statSize":753,"parsedSize":764,"gzipSize":145,"inaccurateSizes":true},{"id":null,"label":"BackgroundMaskCover.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js","statSize":440,"parsedSize":446,"gzipSize":85,"inaccurateSizes":true}],"parsedSize":1210,"gzipSize":231,"inaccurateSizes":true},{"label":"FullScreen","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/FullScreen","statSize":302,"groups":[{"id":null,"label":"FullScreen.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity","statSize":3851,"groups":[{"id":null,"label":"Interactivity.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Interactivity.js","statSize":503,"parsedSize":510,"gzipSize":97,"inaccurateSizes":true},{"label":"Events","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events","statSize":2845,"groups":[{"id":null,"label":"Events.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/Events.js","statSize":927,"parsedSize":940,"gzipSize":179,"inaccurateSizes":true},{"id":null,"label":"ClickEvent.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/ClickEvent.js","statSize":296,"parsedSize":300,"gzipSize":57,"inaccurateSizes":true},{"id":null,"label":"DivEvent.js","path":"./dist/browser/index.js + 78 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 + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/Parallax.js","statSize":395,"parsedSize":400,"gzipSize":76,"inaccurateSizes":true},{"id":null,"label":"ResizeEvent.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/ResizeEvent.js","statSize":314,"parsedSize":318,"gzipSize":60,"inaccurateSizes":true}],"parsedSize":2887,"gzipSize":550,"inaccurateSizes":true},{"label":"Modes","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Modes","statSize":503,"groups":[{"id":null,"label":"Modes.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Modes/Modes.js","statSize":503,"parsedSize":510,"gzipSize":97,"inaccurateSizes":true}],"parsedSize":510,"gzipSize":97,"inaccurateSizes":true}],"parsedSize":3908,"gzipSize":745,"inaccurateSizes":true},{"label":"Particles","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles","statSize":17291,"groups":[{"id":null,"label":"ParticlesOptions.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/ParticlesOptions.js","statSize":2897,"parsedSize":2940,"gzipSize":560,"inaccurateSizes":true},{"label":"Bounce","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Bounce","statSize":573,"groups":[{"id":null,"label":"ParticlesBounce.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js","statSize":213,"parsedSize":216,"gzipSize":41,"inaccurateSizes":true}],"parsedSize":581,"gzipSize":110,"inaccurateSizes":true},{"label":"Collisions","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions","statSize":1422,"groups":[{"id":null,"label":"Collisions.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions/Collisions.js","statSize":905,"parsedSize":918,"gzipSize":175,"inaccurateSizes":true},{"id":null,"label":"CollisionsAbsorb.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js","statSize":313,"parsedSize":317,"gzipSize":60,"inaccurateSizes":true}],"parsedSize":1443,"gzipSize":275,"inaccurateSizes":true},{"label":"Move","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move","statSize":7212,"groups":[{"id":null,"label":"Move.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Move.js","statSize":2663,"parsedSize":2703,"gzipSize":515,"inaccurateSizes":true},{"id":null,"label":"MoveAngle.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveAttract.js","statSize":706,"parsedSize":716,"gzipSize":136,"inaccurateSizes":true},{"id":null,"label":"MoveCenter.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveCenter.js","statSize":455,"parsedSize":461,"gzipSize":88,"inaccurateSizes":true},{"id":null,"label":"MoveGravity.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveGravity.js","statSize":638,"parsedSize":647,"gzipSize":123,"inaccurateSizes":true},{"label":"Path","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Path","statSize":647,"groups":[{"id":null,"label":"MovePath.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Path/MovePath.js","statSize":647,"parsedSize":656,"gzipSize":125,"inaccurateSizes":true}],"parsedSize":656,"gzipSize":125,"inaccurateSizes":true},{"id":null,"label":"OutModes.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/OutModes.js","statSize":384,"parsedSize":389,"gzipSize":74,"inaccurateSizes":true},{"id":null,"label":"Spin.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Spin.js","statSize":543,"parsedSize":551,"gzipSize":105,"inaccurateSizes":true},{"id":null,"label":"MoveTrail.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveTrail.js","statSize":466,"parsedSize":473,"gzipSize":90,"inaccurateSizes":true},{"id":null,"label":"MoveTrailFill.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveTrailFill.js","statSize":319,"parsedSize":323,"gzipSize":61,"inaccurateSizes":true}],"parsedSize":7320,"gzipSize":1396,"inaccurateSizes":true},{"label":"Number","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Number","statSize":904,"groups":[{"id":null,"label":"ParticlesNumber.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Number/ParticlesNumber.js","statSize":454,"parsedSize":460,"gzipSize":87,"inaccurateSizes":true},{"id":null,"label":"ParticlesDensity.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Number/ParticlesDensity.js","statSize":450,"parsedSize":456,"gzipSize":87,"inaccurateSizes":true}],"parsedSize":917,"gzipSize":175,"inaccurateSizes":true},{"label":"Opacity","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity","statSize":868,"groups":[{"id":null,"label":"Opacity.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity/Opacity.js","statSize":497,"parsedSize":504,"gzipSize":96,"inaccurateSizes":true},{"id":null,"label":"OpacityAnimation.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js","statSize":371,"parsedSize":376,"gzipSize":71,"inaccurateSizes":true}],"parsedSize":881,"gzipSize":168,"inaccurateSizes":true},{"id":null,"label":"Shadow.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Shadow.js","statSize":743,"parsedSize":754,"gzipSize":143,"inaccurateSizes":true},{"label":"Shape","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Shape","statSize":726,"groups":[{"id":null,"label":"Shape.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Shape/Shape.js","statSize":726,"parsedSize":736,"gzipSize":140,"inaccurateSizes":true}],"parsedSize":736,"gzipSize":140,"inaccurateSizes":true},{"label":"Size","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Size","statSize":851,"groups":[{"id":null,"label":"Size.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Size/Size.js","statSize":483,"parsedSize":490,"gzipSize":93,"inaccurateSizes":true},{"id":null,"label":"SizeAnimation.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Size/SizeAnimation.js","statSize":368,"parsedSize":373,"gzipSize":71,"inaccurateSizes":true}],"parsedSize":863,"gzipSize":164,"inaccurateSizes":true},{"id":null,"label":"Stroke.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Stroke.js","statSize":532,"parsedSize":539,"gzipSize":103,"inaccurateSizes":true},{"label":"ZIndex","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/ZIndex","statSize":563,"groups":[{"id":null,"label":"ZIndex.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/ZIndex/ZIndex.js","statSize":563,"parsedSize":571,"gzipSize":109,"inaccurateSizes":true}],"parsedSize":571,"gzipSize":109,"inaccurateSizes":true}],"parsedSize":17550,"gzipSize":3348,"inaccurateSizes":true},{"id":null,"label":"ValueWithRandom.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/ValueWithRandom.js","statSize":1218,"parsedSize":1236,"gzipSize":235,"inaccurateSizes":true},{"id":null,"label":"AnimationOptions.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/AnimationOptions.js","statSize":1189,"parsedSize":1206,"gzipSize":230,"inaccurateSizes":true},{"id":null,"label":"AnimatableColor.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/AnimatableColor.js","statSize":922,"parsedSize":935,"gzipSize":178,"inaccurateSizes":true},{"id":null,"label":"HslAnimation.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/HslAnimation.js","statSize":341,"parsedSize":346,"gzipSize":66,"inaccurateSizes":true},{"id":null,"label":"ColorAnimation.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/ColorAnimation.js","statSize":906,"parsedSize":919,"gzipSize":175,"inaccurateSizes":true},{"id":null,"label":"ManualParticle.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/ManualParticle.js","statSize":397,"parsedSize":402,"gzipSize":76,"inaccurateSizes":true},{"id":null,"label":"Responsive.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Responsive.js","statSize":572,"parsedSize":580,"gzipSize":110,"inaccurateSizes":true},{"label":"Theme","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Theme","statSize":855,"groups":[{"id":null,"label":"Theme.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Theme/Theme.js","statSize":465,"parsedSize":471,"gzipSize":90,"inaccurateSizes":true},{"id":null,"label":"ThemeDefault.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Theme/ThemeDefault.js","statSize":390,"parsedSize":395,"gzipSize":75,"inaccurateSizes":true}],"parsedSize":867,"gzipSize":165,"inaccurateSizes":true},{"id":null,"label":"Random.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Random.js","statSize":323,"parsedSize":327,"gzipSize":62,"inaccurateSizes":true}],"parsedSize":36520,"gzipSize":6967,"inaccurateSizes":true}],"parsedSize":155319,"gzipSize":29631,"inaccurateSizes":true}]}],"parsedSize":155319,"gzipSize":29631}],"isInitialByEntrypoint":{"tsparticles.engine":true}}];
52
+ window.chartData = [{"label":"tsparticles.engine.js","isAsset":true,"statSize":152343,"parsedSize":154719,"gzipSize":29477,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":152343,"groups":[{"id":394,"label":"index.js + 78 modules (concatenated)","path":"./dist/browser/index.js + 78 modules (concatenated)","statSize":152343,"parsedSize":154719,"gzipSize":29477,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser","statSize":152343,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/index.js","statSize":246,"parsedSize":249,"gzipSize":47,"inaccurateSizes":true},{"id":null,"label":"init.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/init.js","statSize":481,"parsedSize":488,"gzipSize":93,"inaccurateSizes":true},{"label":"Utils","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils","statSize":31087,"groups":[{"id":null,"label":"Utils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/Utils.js","statSize":11063,"parsedSize":11235,"gzipSize":2140,"inaccurateSizes":true},{"id":null,"label":"RgbColorManager.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/RgbColorManager.js","statSize":1053,"parsedSize":1069,"gzipSize":203,"inaccurateSizes":true},{"id":null,"label":"NumberUtils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/NumberUtils.js","statSize":4645,"parsedSize":4717,"gzipSize":898,"inaccurateSizes":true},{"id":null,"label":"HslColorManager.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/HslColorManager.js","statSize":1215,"parsedSize":1233,"gzipSize":235,"inaccurateSizes":true},{"id":null,"label":"ColorUtils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/ColorUtils.js","statSize":7728,"parsedSize":7848,"gzipSize":1495,"inaccurateSizes":true},{"id":null,"label":"OptionsUtils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/OptionsUtils.js","statSize":436,"parsedSize":442,"gzipSize":84,"inaccurateSizes":true},{"id":null,"label":"CanvasUtils.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/CanvasUtils.js","statSize":3938,"parsedSize":3999,"gzipSize":761,"inaccurateSizes":true},{"id":null,"label":"EventDispatcher.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Utils/EventDispatcher.js","statSize":1009,"parsedSize":1024,"gzipSize":195,"inaccurateSizes":true}],"parsedSize":31571,"gzipSize":6015,"inaccurateSizes":true},{"id":null,"label":"exports.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/exports.js","statSize":4910,"parsedSize":4986,"gzipSize":950,"inaccurateSizes":true},{"label":"Core","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core","statSize":79639,"groups":[{"label":"Utils","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils","statSize":21480,"groups":[{"id":null,"label":"Vector.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/Vector.js","statSize":336,"parsedSize":341,"gzipSize":65,"inaccurateSizes":true},{"id":null,"label":"Vector3d.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/Vector3d.js","statSize":2398,"parsedSize":2435,"gzipSize":463,"inaccurateSizes":true},{"id":null,"label":"Constants.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/Constants.js","statSize":587,"parsedSize":596,"gzipSize":113,"inaccurateSizes":true},{"id":null,"label":"Rectangle.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/Rectangle.js","statSize":913,"parsedSize":927,"gzipSize":176,"inaccurateSizes":true},{"id":null,"label":"Range.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Core/Utils/Circle.js","statSize":1057,"parsedSize":1073,"gzipSize":204,"inaccurateSizes":true},{"id":null,"label":"Point.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Core/Utils/ExternalInteractorBase.js","statSize":130,"parsedSize":132,"gzipSize":25,"inaccurateSizes":true},{"id":null,"label":"ParticlesInteractorBase.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/ParticlesInteractorBase.js","statSize":132,"parsedSize":134,"gzipSize":25,"inaccurateSizes":true},{"id":null,"label":"EventListeners.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/EventListeners.js","statSize":12224,"parsedSize":12414,"gzipSize":2365,"inaccurateSizes":true},{"id":null,"label":"InteractionManager.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/InteractionManager.js","statSize":1600,"parsedSize":1624,"gzipSize":309,"inaccurateSizes":true},{"id":null,"label":"QuadTree.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Utils/QuadTree.js","statSize":1881,"parsedSize":1910,"gzipSize":363,"inaccurateSizes":true}],"parsedSize":21815,"gzipSize":4156,"inaccurateSizes":true},{"id":null,"label":"Engine.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Engine.js","statSize":7448,"parsedSize":7564,"gzipSize":1441,"inaccurateSizes":true},{"id":null,"label":"Container.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Container.js","statSize":12960,"parsedSize":13162,"gzipSize":2507,"inaccurateSizes":true},{"id":null,"label":"Retina.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Retina.js","statSize":1850,"parsedSize":1878,"gzipSize":357,"inaccurateSizes":true},{"id":null,"label":"Canvas.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Canvas.js","statSize":13955,"parsedSize":14172,"gzipSize":2700,"inaccurateSizes":true},{"id":null,"label":"Particles.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Particles.js","statSize":9949,"parsedSize":10104,"gzipSize":1925,"inaccurateSizes":true},{"id":null,"label":"Particle.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Core/Particle.js","statSize":11997,"parsedSize":12184,"gzipSize":2321,"inaccurateSizes":true}],"parsedSize":80881,"gzipSize":15409,"inaccurateSizes":true},{"label":"Options/Classes","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes","statSize":35980,"groups":[{"id":null,"label":"Options.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Options.js","statSize":5269,"parsedSize":5351,"gzipSize":1019,"inaccurateSizes":true},{"label":"Background","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Background","statSize":815,"groups":[{"id":null,"label":"Background.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Background/Background.js","statSize":815,"parsedSize":827,"gzipSize":157,"inaccurateSizes":true}],"parsedSize":827,"gzipSize":157,"inaccurateSizes":true},{"id":null,"label":"OptionsColor.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/OptionsColor.js","statSize":536,"parsedSize":544,"gzipSize":103,"inaccurateSizes":true},{"label":"BackgroundMask","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask","statSize":1193,"groups":[{"id":null,"label":"BackgroundMask.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask/BackgroundMask.js","statSize":753,"parsedSize":764,"gzipSize":145,"inaccurateSizes":true},{"id":null,"label":"BackgroundMaskCover.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js","statSize":440,"parsedSize":446,"gzipSize":85,"inaccurateSizes":true}],"parsedSize":1211,"gzipSize":230,"inaccurateSizes":true},{"label":"FullScreen","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/FullScreen","statSize":302,"groups":[{"id":null,"label":"FullScreen.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity","statSize":3851,"groups":[{"id":null,"label":"Interactivity.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Interactivity.js","statSize":503,"parsedSize":510,"gzipSize":97,"inaccurateSizes":true},{"label":"Events","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events","statSize":2845,"groups":[{"id":null,"label":"Events.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/Events.js","statSize":927,"parsedSize":941,"gzipSize":179,"inaccurateSizes":true},{"id":null,"label":"ClickEvent.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/ClickEvent.js","statSize":296,"parsedSize":300,"gzipSize":57,"inaccurateSizes":true},{"id":null,"label":"DivEvent.js","path":"./dist/browser/index.js + 78 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 + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/Parallax.js","statSize":395,"parsedSize":401,"gzipSize":76,"inaccurateSizes":true},{"id":null,"label":"ResizeEvent.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Events/ResizeEvent.js","statSize":314,"parsedSize":318,"gzipSize":60,"inaccurateSizes":true}],"parsedSize":2889,"gzipSize":550,"inaccurateSizes":true},{"label":"Modes","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Modes","statSize":503,"groups":[{"id":null,"label":"Modes.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Interactivity/Modes/Modes.js","statSize":503,"parsedSize":510,"gzipSize":97,"inaccurateSizes":true}],"parsedSize":510,"gzipSize":97,"inaccurateSizes":true}],"parsedSize":3911,"gzipSize":745,"inaccurateSizes":true},{"label":"Particles","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles","statSize":17291,"groups":[{"id":null,"label":"ParticlesOptions.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/ParticlesOptions.js","statSize":2897,"parsedSize":2942,"gzipSize":560,"inaccurateSizes":true},{"label":"Bounce","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Bounce","statSize":573,"groups":[{"id":null,"label":"ParticlesBounce.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js","statSize":213,"parsedSize":216,"gzipSize":41,"inaccurateSizes":true}],"parsedSize":581,"gzipSize":110,"inaccurateSizes":true},{"label":"Collisions","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions","statSize":1422,"groups":[{"id":null,"label":"Collisions.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions/Collisions.js","statSize":905,"parsedSize":919,"gzipSize":175,"inaccurateSizes":true},{"id":null,"label":"CollisionsAbsorb.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js","statSize":313,"parsedSize":317,"gzipSize":60,"inaccurateSizes":true}],"parsedSize":1444,"gzipSize":275,"inaccurateSizes":true},{"label":"Move","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move","statSize":7212,"groups":[{"id":null,"label":"Move.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Move.js","statSize":2663,"parsedSize":2704,"gzipSize":515,"inaccurateSizes":true},{"id":null,"label":"MoveAngle.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveAngle.js","statSize":391,"parsedSize":397,"gzipSize":75,"inaccurateSizes":true},{"id":null,"label":"MoveAttract.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveAttract.js","statSize":706,"parsedSize":717,"gzipSize":136,"inaccurateSizes":true},{"id":null,"label":"MoveCenter.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveCenter.js","statSize":455,"parsedSize":462,"gzipSize":88,"inaccurateSizes":true},{"id":null,"label":"MoveGravity.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveGravity.js","statSize":638,"parsedSize":647,"gzipSize":123,"inaccurateSizes":true},{"label":"Path","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Path","statSize":647,"groups":[{"id":null,"label":"MovePath.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Path/MovePath.js","statSize":647,"parsedSize":657,"gzipSize":125,"inaccurateSizes":true}],"parsedSize":657,"gzipSize":125,"inaccurateSizes":true},{"id":null,"label":"OutModes.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/OutModes.js","statSize":384,"parsedSize":389,"gzipSize":74,"inaccurateSizes":true},{"id":null,"label":"Spin.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/Spin.js","statSize":543,"parsedSize":551,"gzipSize":105,"inaccurateSizes":true},{"id":null,"label":"MoveTrail.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveTrail.js","statSize":466,"parsedSize":473,"gzipSize":90,"inaccurateSizes":true},{"id":null,"label":"MoveTrailFill.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Move/MoveTrailFill.js","statSize":319,"parsedSize":323,"gzipSize":61,"inaccurateSizes":true}],"parsedSize":7324,"gzipSize":1395,"inaccurateSizes":true},{"label":"Number","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Number","statSize":904,"groups":[{"id":null,"label":"ParticlesNumber.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Number/ParticlesNumber.js","statSize":454,"parsedSize":461,"gzipSize":87,"inaccurateSizes":true},{"id":null,"label":"ParticlesDensity.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Number/ParticlesDensity.js","statSize":450,"parsedSize":457,"gzipSize":87,"inaccurateSizes":true}],"parsedSize":918,"gzipSize":174,"inaccurateSizes":true},{"label":"Opacity","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity","statSize":868,"groups":[{"id":null,"label":"Opacity.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity/Opacity.js","statSize":497,"parsedSize":504,"gzipSize":96,"inaccurateSizes":true},{"id":null,"label":"OpacityAnimation.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js","statSize":371,"parsedSize":376,"gzipSize":71,"inaccurateSizes":true}],"parsedSize":881,"gzipSize":167,"inaccurateSizes":true},{"id":null,"label":"Shadow.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Shadow.js","statSize":743,"parsedSize":754,"gzipSize":143,"inaccurateSizes":true},{"label":"Shape","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Shape","statSize":726,"groups":[{"id":null,"label":"Shape.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Shape/Shape.js","statSize":726,"parsedSize":737,"gzipSize":140,"inaccurateSizes":true}],"parsedSize":737,"gzipSize":140,"inaccurateSizes":true},{"label":"Size","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Size","statSize":851,"groups":[{"id":null,"label":"Size.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Size/Size.js","statSize":483,"parsedSize":490,"gzipSize":93,"inaccurateSizes":true},{"id":null,"label":"SizeAnimation.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Size/SizeAnimation.js","statSize":368,"parsedSize":373,"gzipSize":71,"inaccurateSizes":true}],"parsedSize":864,"gzipSize":164,"inaccurateSizes":true},{"id":null,"label":"Stroke.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/Stroke.js","statSize":532,"parsedSize":540,"gzipSize":102,"inaccurateSizes":true},{"label":"ZIndex","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/ZIndex","statSize":563,"groups":[{"id":null,"label":"ZIndex.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Particles/ZIndex/ZIndex.js","statSize":563,"parsedSize":571,"gzipSize":108,"inaccurateSizes":true}],"parsedSize":571,"gzipSize":108,"inaccurateSizes":true}],"parsedSize":17560,"gzipSize":3345,"inaccurateSizes":true},{"id":null,"label":"ValueWithRandom.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/ValueWithRandom.js","statSize":1218,"parsedSize":1236,"gzipSize":235,"inaccurateSizes":true},{"id":null,"label":"AnimationOptions.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/AnimationOptions.js","statSize":1189,"parsedSize":1207,"gzipSize":230,"inaccurateSizes":true},{"id":null,"label":"AnimatableColor.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/AnimatableColor.js","statSize":922,"parsedSize":936,"gzipSize":178,"inaccurateSizes":true},{"id":null,"label":"HslAnimation.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/ColorAnimation.js","statSize":906,"parsedSize":920,"gzipSize":175,"inaccurateSizes":true},{"id":null,"label":"ManualParticle.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Responsive.js","statSize":572,"parsedSize":580,"gzipSize":110,"inaccurateSizes":true},{"label":"Theme","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Theme","statSize":855,"groups":[{"id":null,"label":"Theme.js","path":"./dist/browser/index.js + 78 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 + 78 modules (concatenated)/dist/browser/Options/Classes/Theme/ThemeDefault.js","statSize":390,"parsedSize":396,"gzipSize":75,"inaccurateSizes":true}],"parsedSize":868,"gzipSize":165,"inaccurateSizes":true},{"id":null,"label":"Random.js","path":"./dist/browser/index.js + 78 modules (concatenated)/dist/browser/Options/Classes/Random.js","statSize":323,"parsedSize":328,"gzipSize":62,"inaccurateSizes":true}],"parsedSize":36541,"gzipSize":6961,"inaccurateSizes":true}],"parsedSize":154719,"gzipSize":29477,"inaccurateSizes":true}]}],"parsedSize":154719,"gzipSize":29477}],"isInitialByEntrypoint":{"tsparticles.engine":true}}];
53
53
  window.entrypoints = ["tsparticles.engine","tsparticles.engine.min"];
54
54
  window.defaultSizes = "parsed";
55
55
  </script>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * tsParticles Engine v3.0.0-beta.2
2
+ * tsParticles Engine v3.0.0-beta.3
3
3
  * Author: Matteo Bruni
4
4
  * MIT license: https://opensource.org/licenses/MIT
5
5
  * Website: https://particles.js.org/
@@ -207,6 +207,7 @@ __webpack_require__.d(__webpack_exports__, {
207
207
  rectBounce: () => (/* reexport */ rectBounce),
208
208
  resizeEvent: () => (/* reexport */ resizeEvent),
209
209
  rgbToHsl: () => (/* reexport */ rgbToHsl),
210
+ safeIntersectionObserver: () => (/* reexport */ safeIntersectionObserver),
210
211
  safeMatchMedia: () => (/* reexport */ safeMatchMedia),
211
212
  safeMutationObserver: () => (/* reexport */ safeMutationObserver),
212
213
  setLogger: () => (/* reexport */ setLogger),
@@ -573,6 +574,12 @@ function safeMatchMedia(query) {
573
574
  }
574
575
  return matchMedia(query);
575
576
  }
577
+ function safeIntersectionObserver(callback) {
578
+ if (isSsr() || typeof IntersectionObserver === "undefined") {
579
+ return;
580
+ }
581
+ return new IntersectionObserver(callback);
582
+ }
576
583
  function safeMutationObserver(callback) {
577
584
  if (isSsr() || typeof MutationObserver === "undefined") {
578
585
  return;
@@ -1232,7 +1239,15 @@ function drawParticle(data) {
1232
1239
  if (colorStyles.stroke) {
1233
1240
  context.strokeStyle = colorStyles.stroke;
1234
1241
  }
1235
- drawShape(container, context, particle, radius, opacity, delta);
1242
+ const drawData = {
1243
+ container,
1244
+ context,
1245
+ particle,
1246
+ radius,
1247
+ opacity,
1248
+ delta
1249
+ };
1250
+ drawShape(drawData);
1236
1251
  if (strokeWidth > 0) {
1237
1252
  context.stroke();
1238
1253
  }
@@ -1242,11 +1257,19 @@ function drawParticle(data) {
1242
1257
  if (particle.fill) {
1243
1258
  context.fill();
1244
1259
  }
1245
- drawShapeAfterEffect(container, context, particle, radius, opacity, delta);
1260
+ drawShapeAfterEffect(drawData);
1246
1261
  context.globalCompositeOperation = "source-over";
1247
1262
  context.setTransform(1, 0, 0, 1, 0, 0);
1248
1263
  }
1249
- function drawShape(container, context, particle, radius, opacity, delta) {
1264
+ function drawShape(data) {
1265
+ const {
1266
+ container,
1267
+ context,
1268
+ particle,
1269
+ radius,
1270
+ opacity,
1271
+ delta
1272
+ } = data;
1250
1273
  if (!particle.shape) {
1251
1274
  return;
1252
1275
  }
@@ -1254,9 +1277,24 @@ function drawShape(container, context, particle, radius, opacity, delta) {
1254
1277
  if (!drawer) {
1255
1278
  return;
1256
1279
  }
1257
- drawer.draw(context, particle, radius, opacity, delta, container.retina.pixelRatio);
1280
+ drawer.draw({
1281
+ context,
1282
+ particle,
1283
+ radius,
1284
+ opacity,
1285
+ delta,
1286
+ pixelRatio: container.retina.pixelRatio
1287
+ });
1258
1288
  }
1259
- function drawShapeAfterEffect(container, context, particle, radius, opacity, delta) {
1289
+ function drawShapeAfterEffect(data) {
1290
+ const {
1291
+ container,
1292
+ context,
1293
+ particle,
1294
+ radius,
1295
+ opacity,
1296
+ delta
1297
+ } = data;
1260
1298
  if (!particle.shape) {
1261
1299
  return;
1262
1300
  }
@@ -1264,7 +1302,14 @@ function drawShapeAfterEffect(container, context, particle, radius, opacity, del
1264
1302
  if (!drawer || !drawer.afterEffect) {
1265
1303
  return;
1266
1304
  }
1267
- drawer.afterEffect(context, particle, radius, opacity, delta, container.retina.pixelRatio);
1305
+ drawer.afterEffect({
1306
+ context,
1307
+ particle,
1308
+ radius,
1309
+ opacity,
1310
+ delta,
1311
+ pixelRatio: container.retina.pixelRatio
1312
+ });
1268
1313
  }
1269
1314
  function drawPlugin(context, plugin, delta) {
1270
1315
  if (!plugin.draw) {
@@ -3648,7 +3693,17 @@ class InteractionManager {
3648
3693
 
3649
3694
 
3650
3695
 
3651
- const fixOutMode = data => {
3696
+ function loadShapeData(shape, shapeOptions, id, reduceDuplicates) {
3697
+ const shapeData = shapeOptions.options[shape];
3698
+ if (!shapeData) {
3699
+ return;
3700
+ }
3701
+ return deepExtend({
3702
+ close: shapeOptions.close,
3703
+ fill: shapeOptions.fill
3704
+ }, itemFromSingleOrMultiple(shapeData, id, reduceDuplicates));
3705
+ }
3706
+ function fixOutMode(data) {
3652
3707
  if (!isInArray(data.outMode, data.checkModes)) {
3653
3708
  return;
3654
3709
  }
@@ -3658,7 +3713,7 @@ const fixOutMode = data => {
3658
3713
  } else if (data.coord < diameter) {
3659
3714
  data.setCb(data.radius);
3660
3715
  }
3661
- };
3716
+ }
3662
3717
  class Particle {
3663
3718
  constructor(engine, id, container, position, overrideOptions, group) {
3664
3719
  this.container = container;
@@ -3783,16 +3838,6 @@ class Particle {
3783
3838
  }
3784
3839
  this.offset = Vector.origin;
3785
3840
  };
3786
- this._loadShapeData = (shapeOptions, reduceDuplicates) => {
3787
- const shapeData = shapeOptions.options[this.shape];
3788
- if (!shapeData) {
3789
- return;
3790
- }
3791
- return deepExtend({
3792
- close: shapeOptions.close,
3793
- fill: shapeOptions.fill
3794
- }, itemFromSingleOrMultiple(shapeData, this.id, reduceDuplicates));
3795
- };
3796
3841
  this._engine = engine;
3797
3842
  this.init(id, position, overrideOptions, group);
3798
3843
  }
@@ -3881,7 +3926,7 @@ class Particle {
3881
3926
  shapeOptions.load(overrideOptions.shape);
3882
3927
  }
3883
3928
  }
3884
- this.shapeData = this._loadShapeData(shapeOptions, reduceDuplicates);
3929
+ this.shapeData = loadShapeData(this.shape, shapeOptions, this.id, reduceDuplicates);
3885
3930
  particlesOptions.load(overrideOptions);
3886
3931
  const shapeData = this.shapeData;
3887
3932
  if (shapeData) {
@@ -4477,7 +4522,6 @@ function loadContainerOptions(engine, container, ...sourceOptionsArr) {
4477
4522
  }
4478
4523
  class Container {
4479
4524
  constructor(engine, id, sourceOptions) {
4480
- this.id = id;
4481
4525
  this._intersectionManager = entries => {
4482
4526
  if (!guardCheck(this) || !this.actualOptions.pauseOnOutsideViewport) {
4483
4527
  return;
@@ -4516,6 +4560,7 @@ class Container {
4516
4560
  }
4517
4561
  };
4518
4562
  this._engine = engine;
4563
+ this.id = Symbol(id);
4519
4564
  this.fpsLimit = 120;
4520
4565
  this.smooth = false;
4521
4566
  this._delay = 0;
@@ -4545,9 +4590,7 @@ class Container {
4545
4590
  this._options = loadContainerOptions(this._engine, this);
4546
4591
  this.actualOptions = loadContainerOptions(this._engine, this);
4547
4592
  this._eventListeners = new EventListeners(this);
4548
- if (typeof IntersectionObserver !== "undefined" && IntersectionObserver) {
4549
- this._intersectionObserver = new IntersectionObserver(entries => this._intersectionManager(entries));
4550
- }
4593
+ this._intersectionObserver = safeIntersectionObserver(entries => this._intersectionManager(entries));
4551
4594
  this._engine.dispatchEvent("containerBuilt", {
4552
4595
  container: this
4553
4596
  });
@@ -4990,17 +5033,17 @@ class Engine {
4990
5033
  return res;
4991
5034
  }
4992
5035
  get version() {
4993
- return "3.0.0-beta.2";
5036
+ return "3.0.0-beta.3";
4994
5037
  }
4995
- addConfig(nameOrConfig, config) {
4996
- if (isString(nameOrConfig)) {
4997
- if (config) {
4998
- config.name = nameOrConfig;
4999
- this._configs.set(nameOrConfig, config);
5038
+ addConfig(config) {
5039
+ const name = config.name ?? "default";
5040
+ this._configs.set(name, config);
5041
+ this._eventDispatcher.dispatchEvent("configAdded", {
5042
+ data: {
5043
+ name,
5044
+ config
5000
5045
  }
5001
- } else {
5002
- this._configs.set(nameOrConfig.name ?? "default", nameOrConfig);
5003
- }
5046
+ });
5004
5047
  }
5005
5048
  addEventListener(type, listener) {
5006
5049
  this._eventDispatcher.addEventListener(type, listener);
@@ -5029,44 +5072,11 @@ class Engine {
5029
5072
  (override || !this.getPreset(preset)) && this.presets.set(preset, options);
5030
5073
  await this.refresh(refresh);
5031
5074
  }
5032
- async addShape(shape, drawer, initOrRefresh, afterEffectOrRefresh, destroyOrRefresh, refresh = true) {
5033
- let customDrawer;
5034
- let realRefresh = refresh,
5035
- realInit,
5036
- realAfterEffect,
5037
- realDestroy;
5038
- if (isBoolean(initOrRefresh)) {
5039
- realRefresh = initOrRefresh;
5040
- realInit = undefined;
5041
- } else {
5042
- realInit = initOrRefresh;
5043
- }
5044
- if (isBoolean(afterEffectOrRefresh)) {
5045
- realRefresh = afterEffectOrRefresh;
5046
- realAfterEffect = undefined;
5047
- } else {
5048
- realAfterEffect = afterEffectOrRefresh;
5049
- }
5050
- if (isBoolean(destroyOrRefresh)) {
5051
- realRefresh = destroyOrRefresh;
5052
- realDestroy = undefined;
5053
- } else {
5054
- realDestroy = destroyOrRefresh;
5055
- }
5056
- if (isFunction(drawer)) {
5057
- customDrawer = {
5058
- afterEffect: realAfterEffect,
5059
- destroy: realDestroy,
5060
- draw: drawer,
5061
- init: realInit
5062
- };
5063
- } else {
5064
- customDrawer = drawer;
5065
- }
5075
+ async addShape(shape, drawer, refresh = true) {
5066
5076
  executeOnSingleOrMultiple(shape, type => {
5067
- !this.getShapeDrawer(type) && this.drawers.set(type, customDrawer);
5077
+ !this.getShapeDrawer(type) && this.drawers.set(type, drawer);
5068
5078
  });
5069
- await this.refresh(realRefresh);
5079
+ await this.refresh(refresh);
5070
5080
  }
5071
5081
  clearPlugins(container) {
5072
5082
  this.updaters.delete(container);
@@ -5144,7 +5154,7 @@ class Engine {
5144
5154
  }
5145
5155
  const currentOptions = itemFromSingleOrMultiple(options, index),
5146
5156
  dom = this.dom(),
5147
- oldIndex = dom.findIndex(v => v.id === id);
5157
+ oldIndex = dom.findIndex(v => v.id.description === id);
5148
5158
  if (oldIndex >= 0) {
5149
5159
  const old = this.domItem(oldIndex);
5150
5160
  if (old && !old.destroyed) {