tsparticles 1.39.3 → 1.40.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 (168) hide show
  1. package/Core/Container.d.ts +3 -1
  2. package/Core/Container.js +27 -12
  3. package/Core/Loader.d.ts +12 -9
  4. package/Core/Loader.js +35 -19
  5. package/Core/Particle.d.ts +3 -1
  6. package/Core/Particle.js +17 -2
  7. package/Core/Particles.d.ts +3 -1
  8. package/Core/Particles.js +20 -5
  9. package/Core/Utils/InteractionManager.d.ts +3 -1
  10. package/Core/Utils/InteractionManager.js +17 -3
  11. package/Core/Utils/Plugins.d.ts +29 -15
  12. package/Core/Utils/Plugins.js +58 -46
  13. package/Options/Classes/Options.d.ts +2 -1
  14. package/Options/Classes/Options.js +13 -6
  15. package/Plugins/Emitters/EmitterInstance.d.ts +6 -3
  16. package/Plugins/Emitters/EmitterInstance.js +46 -16
  17. package/Plugins/Emitters/Emitters.d.ts +3 -1
  18. package/Plugins/Emitters/Emitters.js +17 -2
  19. package/Plugins/Emitters/{EmittersMain.d.ts → EmittersEngine.d.ts} +3 -1
  20. package/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
  21. package/Plugins/Emitters/IEmitterShape.d.ts +2 -2
  22. package/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
  23. package/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
  24. package/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +1 -0
  25. package/Plugins/Emitters/ShapeManager.d.ts +6 -3
  26. package/Plugins/Emitters/ShapeManager.js +16 -4
  27. package/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
  28. package/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
  29. package/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
  30. package/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
  31. package/Plugins/Emitters/index.d.ts +3 -3
  32. package/Plugins/Emitters/index.js +25 -6
  33. package/README.md +1 -1
  34. package/browser/Core/Container.d.ts +4 -1
  35. package/browser/Core/Container.js +29 -13
  36. package/browser/Core/Loader.d.ts +12 -9
  37. package/browser/Core/Loader.js +35 -19
  38. package/browser/Core/Particle.d.ts +3 -1
  39. package/browser/Core/Particle.js +18 -3
  40. package/browser/Core/Particles.d.ts +3 -1
  41. package/browser/Core/Particles.js +21 -6
  42. package/browser/Core/Utils/InteractionManager.d.ts +3 -1
  43. package/browser/Core/Utils/InteractionManager.js +17 -3
  44. package/browser/Core/Utils/Plugins.d.ts +29 -15
  45. package/browser/Core/Utils/Plugins.js +58 -46
  46. package/browser/Options/Classes/Options.d.ts +2 -1
  47. package/browser/Options/Classes/Options.js +13 -6
  48. package/browser/Plugins/Emitters/EmitterInstance.d.ts +6 -3
  49. package/browser/Plugins/Emitters/EmitterInstance.js +46 -16
  50. package/browser/Plugins/Emitters/Emitters.d.ts +3 -1
  51. package/browser/Plugins/Emitters/Emitters.js +17 -2
  52. package/{esm/Plugins/Emitters/EmittersMain.d.ts → browser/Plugins/Emitters/EmittersEngine.d.ts} +3 -1
  53. package/browser/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
  54. package/browser/Plugins/Emitters/IEmitterShape.d.ts +2 -2
  55. package/browser/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
  56. package/browser/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
  57. package/browser/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +4 -0
  58. package/browser/Plugins/Emitters/ShapeManager.d.ts +6 -3
  59. package/browser/Plugins/Emitters/ShapeManager.js +16 -4
  60. package/browser/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
  61. package/browser/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
  62. package/browser/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
  63. package/browser/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
  64. package/browser/Plugins/Emitters/index.d.ts +3 -3
  65. package/browser/Plugins/Emitters/index.js +25 -6
  66. package/browser/engine.d.ts +5 -1
  67. package/browser/engine.js +22 -17
  68. package/engine.d.ts +3 -0
  69. package/engine.js +20 -16
  70. package/esm/Core/Container.d.ts +3 -1
  71. package/esm/Core/Container.js +28 -13
  72. package/esm/Core/Loader.d.ts +12 -9
  73. package/esm/Core/Loader.js +35 -19
  74. package/esm/Core/Particle.d.ts +3 -1
  75. package/esm/Core/Particle.js +18 -3
  76. package/esm/Core/Particles.d.ts +3 -1
  77. package/esm/Core/Particles.js +21 -6
  78. package/esm/Core/Utils/InteractionManager.d.ts +3 -1
  79. package/esm/Core/Utils/InteractionManager.js +17 -3
  80. package/esm/Core/Utils/Plugins.d.ts +29 -15
  81. package/esm/Core/Utils/Plugins.js +58 -46
  82. package/esm/Options/Classes/Options.d.ts +2 -1
  83. package/esm/Options/Classes/Options.js +13 -6
  84. package/esm/Plugins/Emitters/EmitterInstance.d.ts +6 -3
  85. package/esm/Plugins/Emitters/EmitterInstance.js +46 -16
  86. package/esm/Plugins/Emitters/Emitters.d.ts +3 -1
  87. package/esm/Plugins/Emitters/Emitters.js +17 -2
  88. package/{browser/Plugins/Emitters/EmittersMain.d.ts → esm/Plugins/Emitters/EmittersEngine.d.ts} +3 -1
  89. package/esm/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
  90. package/esm/Plugins/Emitters/IEmitterShape.d.ts +2 -2
  91. package/esm/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
  92. package/esm/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
  93. package/esm/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +1 -0
  94. package/esm/Plugins/Emitters/ShapeManager.d.ts +6 -3
  95. package/esm/Plugins/Emitters/ShapeManager.js +16 -4
  96. package/esm/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
  97. package/esm/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
  98. package/esm/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
  99. package/esm/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
  100. package/esm/Plugins/Emitters/index.d.ts +3 -3
  101. package/esm/Plugins/Emitters/index.js +25 -6
  102. package/esm/engine.d.ts +3 -0
  103. package/esm/engine.js +20 -16
  104. package/package.json +1 -1
  105. package/report.html +2 -2
  106. package/report.slim.html +2 -2
  107. package/tsparticles.engine.js +221 -114
  108. package/tsparticles.engine.min.js +2 -2
  109. package/tsparticles.interaction.external.attract.js +199 -96
  110. package/tsparticles.interaction.external.attract.min.js +2 -2
  111. package/tsparticles.interaction.external.bounce.js +199 -96
  112. package/tsparticles.interaction.external.bounce.min.js +2 -2
  113. package/tsparticles.interaction.external.bubble.js +199 -96
  114. package/tsparticles.interaction.external.bubble.min.js +2 -2
  115. package/tsparticles.interaction.external.connect.js +199 -96
  116. package/tsparticles.interaction.external.connect.min.js +2 -2
  117. package/tsparticles.interaction.external.grab.js +199 -96
  118. package/tsparticles.interaction.external.grab.min.js +2 -2
  119. package/tsparticles.interaction.external.repulse.js +199 -96
  120. package/tsparticles.interaction.external.repulse.min.js +2 -2
  121. package/tsparticles.interaction.external.trail.js +199 -96
  122. package/tsparticles.interaction.external.trail.min.js +2 -2
  123. package/tsparticles.interaction.particles.attract.js +199 -96
  124. package/tsparticles.interaction.particles.attract.min.js +2 -2
  125. package/tsparticles.interaction.particles.collisions.js +199 -96
  126. package/tsparticles.interaction.particles.collisions.min.js +2 -2
  127. package/tsparticles.interaction.particles.links.js +199 -96
  128. package/tsparticles.interaction.particles.links.min.js +2 -2
  129. package/tsparticles.js +341 -152
  130. package/tsparticles.min.js +2 -2
  131. package/tsparticles.pathseg.min.js +1 -1
  132. package/tsparticles.plugins.absorbers.js +199 -96
  133. package/tsparticles.plugins.absorbers.min.js +2 -2
  134. package/tsparticles.plugins.emitters.js +324 -139
  135. package/tsparticles.plugins.emitters.min.js +2 -2
  136. package/tsparticles.plugins.polygonMask.js +199 -96
  137. package/tsparticles.plugins.polygonMask.min.js +2 -2
  138. package/tsparticles.shape.circle.min.js +1 -1
  139. package/tsparticles.shape.image.js +202 -99
  140. package/tsparticles.shape.image.min.js +2 -2
  141. package/tsparticles.shape.line.min.js +1 -1
  142. package/tsparticles.shape.polygon.min.js +1 -1
  143. package/tsparticles.shape.square.min.js +1 -1
  144. package/tsparticles.shape.star.min.js +1 -1
  145. package/tsparticles.shape.text.js +199 -96
  146. package/tsparticles.shape.text.min.js +2 -2
  147. package/tsparticles.slim.js +221 -114
  148. package/tsparticles.slim.min.js +2 -2
  149. package/tsparticles.updater.angle.js +199 -96
  150. package/tsparticles.updater.angle.min.js +2 -2
  151. package/tsparticles.updater.color.js +199 -96
  152. package/tsparticles.updater.color.min.js +2 -2
  153. package/tsparticles.updater.life.js +199 -96
  154. package/tsparticles.updater.life.min.js +2 -2
  155. package/tsparticles.updater.opacity.js +199 -96
  156. package/tsparticles.updater.opacity.min.js +2 -2
  157. package/tsparticles.updater.outModes.js +199 -96
  158. package/tsparticles.updater.outModes.min.js +2 -2
  159. package/tsparticles.updater.roll.js +199 -96
  160. package/tsparticles.updater.roll.min.js +2 -2
  161. package/tsparticles.updater.size.js +199 -96
  162. package/tsparticles.updater.size.min.js +2 -2
  163. package/tsparticles.updater.strokeColor.js +199 -96
  164. package/tsparticles.updater.strokeColor.min.js +2 -2
  165. package/tsparticles.updater.tilt.js +199 -96
  166. package/tsparticles.updater.tilt.min.js +2 -2
  167. package/tsparticles.updater.wobble.js +199 -96
  168. package/tsparticles.updater.wobble.min.js +2 -2
@@ -1559,15 +1559,30 @@
1559
1559
  this.type = 0;
1560
1560
  }
1561
1561
  }
1562
+ var __classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
1563
+ if (kind === "m") throw new TypeError("Private method is not writable");
1564
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
1565
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
1566
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
1567
+ value;
1568
+ };
1569
+ var __classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
1570
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
1571
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
1572
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
1573
+ };
1574
+ var _InteractionManager_engine;
1562
1575
  class InteractionManager_InteractionManager {
1563
- constructor(container) {
1576
+ constructor(engine, container) {
1564
1577
  this.container = container;
1578
+ _InteractionManager_engine.set(this, void 0);
1579
+ __classPrivateFieldSet(this, _InteractionManager_engine, engine, "f");
1565
1580
  this.externalInteractors = [];
1566
1581
  this.particleInteractors = [];
1567
1582
  this.init();
1568
1583
  }
1569
1584
  init() {
1570
- const interactors = Plugins.getInteractors(this.container, true);
1585
+ const interactors = __classPrivateFieldGet(this, _InteractionManager_engine, "f").plugins.getInteractors(this.container, true);
1571
1586
  this.externalInteractors = [];
1572
1587
  this.particleInteractors = [];
1573
1588
  for (const interactor of interactors) {
@@ -1600,6 +1615,7 @@
1600
1615
  }
1601
1616
  }
1602
1617
  }
1618
+ _InteractionManager_engine = new WeakMap;
1603
1619
  function applyDistance(particle) {
1604
1620
  const initialPosition = particle.initialPosition;
1605
1621
  const {dx: dx, dy: dy} = getDistances(initialPosition, particle.position);
@@ -1773,26 +1789,38 @@
1773
1789
  return proximityFactor / slowFactor;
1774
1790
  }
1775
1791
  }
1776
- const plugins = null && [];
1777
- const interactorsInitializers = new Map;
1778
- const updatersInitializers = new Map;
1779
- const interactors = new Map;
1780
- const updaters = new Map;
1781
- const presets = new Map;
1782
- const drawers = new Map;
1783
- const pathGenerators = new Map;
1784
- class Plugins_Plugins {
1785
- static getPlugin(plugin) {
1786
- return plugins.find((t => t.id === plugin));
1792
+ var Plugins_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
1793
+ if (kind === "m") throw new TypeError("Private method is not writable");
1794
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
1795
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
1796
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
1797
+ value;
1798
+ };
1799
+ var _Plugins_engine;
1800
+ class Plugins {
1801
+ constructor(engine) {
1802
+ _Plugins_engine.set(this, void 0);
1803
+ Plugins_classPrivateFieldSet(this, _Plugins_engine, engine, "f");
1804
+ this.plugins = [];
1805
+ this.interactorsInitializers = new Map;
1806
+ this.updatersInitializers = new Map;
1807
+ this.interactors = new Map;
1808
+ this.updaters = new Map;
1809
+ this.presets = new Map;
1810
+ this.drawers = new Map;
1811
+ this.pathGenerators = new Map;
1787
1812
  }
1788
- static addPlugin(plugin) {
1789
- if (!Plugins_Plugins.getPlugin(plugin.id)) {
1790
- plugins.push(plugin);
1813
+ getPlugin(plugin) {
1814
+ return this.plugins.find((t => t.id === plugin));
1815
+ }
1816
+ addPlugin(plugin) {
1817
+ if (!this.getPlugin(plugin.id)) {
1818
+ this.plugins.push(plugin);
1791
1819
  }
1792
1820
  }
1793
- static getAvailablePlugins(container) {
1821
+ getAvailablePlugins(container) {
1794
1822
  const res = new Map;
1795
- for (const plugin of plugins) {
1823
+ for (const plugin of this.plugins) {
1796
1824
  if (!plugin.needsPlugin(container.actualOptions)) {
1797
1825
  continue;
1798
1826
  }
@@ -1800,61 +1828,62 @@
1800
1828
  }
1801
1829
  return res;
1802
1830
  }
1803
- static loadOptions(options, sourceOptions) {
1804
- for (const plugin of plugins) {
1831
+ loadOptions(options, sourceOptions) {
1832
+ for (const plugin of this.plugins) {
1805
1833
  plugin.loadOptions(options, sourceOptions);
1806
1834
  }
1807
1835
  }
1808
- static getPreset(preset) {
1809
- return presets.get(preset);
1836
+ getPreset(preset) {
1837
+ return this.presets.get(preset);
1810
1838
  }
1811
- static addPreset(presetKey, options, override = false) {
1812
- if (override || !Plugins_Plugins.getPreset(presetKey)) {
1813
- presets.set(presetKey, options);
1839
+ addPreset(presetKey, options, override = false) {
1840
+ if (override || !this.getPreset(presetKey)) {
1841
+ this.presets.set(presetKey, options);
1814
1842
  }
1815
1843
  }
1816
- static addShapeDrawer(type, drawer) {
1817
- if (!Plugins_Plugins.getShapeDrawer(type)) {
1818
- drawers.set(type, drawer);
1844
+ addShapeDrawer(type, drawer) {
1845
+ if (!this.getShapeDrawer(type)) {
1846
+ this.drawers.set(type, drawer);
1819
1847
  }
1820
1848
  }
1821
- static getShapeDrawer(type) {
1822
- return drawers.get(type);
1849
+ getShapeDrawer(type) {
1850
+ return this.drawers.get(type);
1823
1851
  }
1824
- static getSupportedShapes() {
1825
- return drawers.keys();
1852
+ getSupportedShapes() {
1853
+ return this.drawers.keys();
1826
1854
  }
1827
- static getPathGenerator(type) {
1828
- return pathGenerators.get(type);
1855
+ getPathGenerator(type) {
1856
+ return this.pathGenerators.get(type);
1829
1857
  }
1830
- static addPathGenerator(type, pathGenerator) {
1831
- if (!Plugins_Plugins.getPathGenerator(type)) {
1832
- pathGenerators.set(type, pathGenerator);
1858
+ addPathGenerator(type, pathGenerator) {
1859
+ if (!this.getPathGenerator(type)) {
1860
+ this.pathGenerators.set(type, pathGenerator);
1833
1861
  }
1834
1862
  }
1835
- static getInteractors(container, force = false) {
1836
- let res = interactors.get(container);
1863
+ getInteractors(container, force = false) {
1864
+ let res = this.interactors.get(container);
1837
1865
  if (!res || force) {
1838
- res = [ ...interactorsInitializers.values() ].map((t => t(container)));
1839
- interactors.set(container, res);
1866
+ res = [ ...this.interactorsInitializers.values() ].map((t => t(container)));
1867
+ this.interactors.set(container, res);
1840
1868
  }
1841
1869
  return res;
1842
1870
  }
1843
- static addInteractor(name, initInteractor) {
1844
- interactorsInitializers.set(name, initInteractor);
1871
+ addInteractor(name, initInteractor) {
1872
+ this.interactorsInitializers.set(name, initInteractor);
1845
1873
  }
1846
- static getUpdaters(container, force = false) {
1847
- let res = updaters.get(container);
1874
+ getUpdaters(container, force = false) {
1875
+ let res = this.updaters.get(container);
1848
1876
  if (!res || force) {
1849
- res = [ ...updatersInitializers.values() ].map((t => t(container)));
1850
- updaters.set(container, res);
1877
+ res = [ ...this.updatersInitializers.values() ].map((t => t(container)));
1878
+ this.updaters.set(container, res);
1851
1879
  }
1852
1880
  return res;
1853
1881
  }
1854
- static addParticleUpdater(name, initUpdater) {
1855
- updatersInitializers.set(name, initUpdater);
1882
+ addParticleUpdater(name, initUpdater) {
1883
+ this.updatersInitializers.set(name, initUpdater);
1856
1884
  }
1857
1885
  }
1886
+ _Plugins_engine = new WeakMap;
1858
1887
  class QuadTree_QuadTree {
1859
1888
  constructor(rectangle, capacity) {
1860
1889
  this.rectangle = rectangle;
@@ -3381,15 +3410,24 @@
3381
3410
  }
3382
3411
  }
3383
3412
  }
3384
- var __classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
3413
+ var Options_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
3414
+ if (kind === "m") throw new TypeError("Private method is not writable");
3415
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
3416
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
3417
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
3418
+ value;
3419
+ };
3420
+ var Options_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
3385
3421
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3386
3422
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
3387
3423
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
3388
3424
  };
3389
- var _Options_instances, _Options_findDefaultTheme;
3425
+ var _Options_instances, _Options_engine, _Options_findDefaultTheme;
3390
3426
  class Options_Options {
3391
- constructor() {
3427
+ constructor(engine) {
3392
3428
  _Options_instances.add(this);
3429
+ _Options_engine.set(this, void 0);
3430
+ Options_classPrivateFieldSet(this, _Options_engine, engine, "f");
3393
3431
  this.autoPlay = true;
3394
3432
  this.background = new Background;
3395
3433
  this.backgroundMask = new BackgroundMask;
@@ -3482,7 +3520,7 @@
3482
3520
  this.motion.load(data.motion);
3483
3521
  this.particles.load(data.particles);
3484
3522
  this.style = deepExtend(this.style, data.style);
3485
- Plugins.loadOptions(this, data);
3523
+ Options_classPrivateFieldGet(this, _Options_engine, "f").plugins.loadOptions(this, data);
3486
3524
  if (data.responsive !== undefined) {
3487
3525
  for (const responsive of data.responsive) {
3488
3526
  const optResponsive = new Responsive;
@@ -3498,8 +3536,8 @@
3498
3536
  this.themes.push(optTheme);
3499
3537
  }
3500
3538
  }
3501
- this.defaultDarkTheme = (_d = __classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, "dark")) === null || _d === void 0 ? void 0 : _d.name;
3502
- this.defaultLightTheme = (_e = __classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, "light")) === null || _e === void 0 ? void 0 : _e.name;
3539
+ this.defaultDarkTheme = (_d = Options_classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, "dark")) === null || _d === void 0 ? void 0 : _d.name;
3540
+ this.defaultLightTheme = (_e = Options_classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, "light")) === null || _e === void 0 ? void 0 : _e.name;
3503
3541
  }
3504
3542
  setTheme(name) {
3505
3543
  if (name) {
@@ -3508,7 +3546,7 @@
3508
3546
  this.load(chosenTheme.options);
3509
3547
  }
3510
3548
  } else {
3511
- const mediaMatch = typeof matchMedia !== "undefined" && matchMedia("(prefers-color-scheme: dark)"), clientDarkMode = mediaMatch && mediaMatch.matches, defaultTheme = __classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, clientDarkMode ? "dark" : "light");
3549
+ const mediaMatch = typeof matchMedia !== "undefined" && matchMedia("(prefers-color-scheme: dark)"), clientDarkMode = mediaMatch && mediaMatch.matches, defaultTheme = Options_classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, clientDarkMode ? "dark" : "light");
3512
3550
  if (defaultTheme) {
3513
3551
  this.load(defaultTheme.options);
3514
3552
  }
@@ -3521,13 +3559,26 @@
3521
3559
  return responsiveOptions === null || responsiveOptions === void 0 ? void 0 : responsiveOptions.maxWidth;
3522
3560
  }
3523
3561
  importPreset(preset) {
3524
- this.load(Plugins.getPreset(preset));
3562
+ this.load(Options_classPrivateFieldGet(this, _Options_engine, "f").plugins.getPreset(preset));
3525
3563
  }
3526
3564
  }
3527
- _Options_instances = new WeakSet, _Options_findDefaultTheme = function _Options_findDefaultTheme(mode) {
3565
+ _Options_engine = new WeakMap, _Options_instances = new WeakSet, _Options_findDefaultTheme = function _Options_findDefaultTheme(mode) {
3528
3566
  var _a;
3529
3567
  return (_a = this.themes.find((theme => theme.default.value && theme.default.mode === mode))) !== null && _a !== void 0 ? _a : this.themes.find((theme => theme.default.value && theme.default.mode === "any"));
3530
3568
  };
3569
+ var Particle_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
3570
+ if (kind === "m") throw new TypeError("Private method is not writable");
3571
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
3572
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
3573
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
3574
+ value;
3575
+ };
3576
+ var Particle_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
3577
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3578
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
3579
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
3580
+ };
3581
+ var _Particle_engine;
3531
3582
  const fixOutMode = data => {
3532
3583
  if (isInArray(data.outMode, data.checkModes) || isInArray(data.outMode, data.checkModes)) {
3533
3584
  if (data.coord > data.maxCoord - data.radius * 2) {
@@ -3538,11 +3589,13 @@
3538
3589
  }
3539
3590
  };
3540
3591
  class Particle_Particle {
3541
- constructor(id, container, position, overrideOptions, group) {
3592
+ constructor(engine, id, container, position, overrideOptions, group) {
3542
3593
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
3543
3594
  this.id = id;
3544
3595
  this.container = container;
3545
3596
  this.group = group;
3597
+ _Particle_engine.set(this, void 0);
3598
+ Particle_classPrivateFieldSet(this, _Particle_engine, engine, "f");
3546
3599
  this.fill = true;
3547
3600
  this.close = true;
3548
3601
  this.lastPathTime = 0;
@@ -3636,7 +3689,7 @@
3636
3689
  this.sides = 24;
3637
3690
  let drawer = container.drawers.get(this.shape);
3638
3691
  if (!drawer) {
3639
- drawer = Plugins.getShapeDrawer(this.shape);
3692
+ drawer = Particle_classPrivateFieldGet(this, _Particle_engine, "f").plugins.getShapeDrawer(this.shape);
3640
3693
  if (drawer) {
3641
3694
  container.drawers.set(this.shape, drawer);
3642
3695
  }
@@ -3876,9 +3929,25 @@
3876
3929
  return life;
3877
3930
  }
3878
3931
  }
3932
+ _Particle_engine = new WeakMap;
3933
+ var Particles_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
3934
+ if (kind === "m") throw new TypeError("Private method is not writable");
3935
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
3936
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
3937
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
3938
+ value;
3939
+ };
3940
+ var Particles_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
3941
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3942
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
3943
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
3944
+ };
3945
+ var _Particles_engine;
3879
3946
  class Particles_Particles {
3880
- constructor(container) {
3947
+ constructor(engine, container) {
3881
3948
  this.container = container;
3949
+ _Particles_engine.set(this, void 0);
3950
+ Particles_classPrivateFieldSet(this, _Particles_engine, engine, "f");
3882
3951
  this.nextId = 0;
3883
3952
  this.array = [];
3884
3953
  this.zArray = [];
@@ -3890,11 +3959,11 @@
3890
3959
  links: new Map,
3891
3960
  triangles: new Map
3892
3961
  };
3893
- this.interactionManager = new InteractionManager(container);
3962
+ this.interactionManager = new InteractionManager(Particles_classPrivateFieldGet(this, _Particles_engine, "f"), container);
3894
3963
  const canvasSize = this.container.canvas.size;
3895
3964
  this.linksColors = new Map;
3896
3965
  this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
3897
- this.updaters = Plugins.getUpdaters(container, true);
3966
+ this.updaters = Particles_classPrivateFieldGet(this, _Particles_engine, "f").plugins.getUpdaters(container, true);
3898
3967
  }
3899
3968
  get count() {
3900
3969
  return this.array.length;
@@ -3908,7 +3977,7 @@
3908
3977
  this.freqs.links = new Map;
3909
3978
  this.freqs.triangles = new Map;
3910
3979
  let handled = false;
3911
- this.updaters = Plugins.getUpdaters(container, true);
3980
+ this.updaters = Particles_classPrivateFieldGet(this, _Particles_engine, "f").plugins.getUpdaters(container, true);
3912
3981
  this.interactionManager.init();
3913
3982
  for (const [, plugin] of container.plugins) {
3914
3983
  if (plugin.particlesInitialization !== undefined) {
@@ -4155,7 +4224,7 @@
4155
4224
  }
4156
4225
  pushParticle(position, overrideOptions, group, initializer) {
4157
4226
  try {
4158
- const particle = new Particle(this.nextId, this.container, position, overrideOptions, group);
4227
+ const particle = new Particle(Particles_classPrivateFieldGet(this, _Particles_engine, "f"), this.nextId, this.container, position, overrideOptions, group);
4159
4228
  let canAdd = true;
4160
4229
  if (initializer) {
4161
4230
  canAdd = initializer(particle);
@@ -4173,6 +4242,7 @@
4173
4242
  }
4174
4243
  }
4175
4244
  }
4245
+ _Particles_engine = new WeakMap;
4176
4246
  class Retina_Retina {
4177
4247
  constructor(container) {
4178
4248
  this.container = container;
@@ -4260,9 +4330,24 @@
4260
4330
  }
4261
4331
  }
4262
4332
  }
4333
+ var Container_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
4334
+ if (kind === "m") throw new TypeError("Private method is not writable");
4335
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4336
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
4337
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
4338
+ value;
4339
+ };
4340
+ var Container_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
4341
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4342
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4343
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
4344
+ };
4345
+ var _Container_engine;
4263
4346
  class Container_Container {
4264
- constructor(id, sourceOptions, ...presets) {
4347
+ constructor(engine, id, sourceOptions, ...presets) {
4265
4348
  this.id = id;
4349
+ _Container_engine.set(this, void 0);
4350
+ Container_classPrivateFieldSet(this, _Container_engine, engine, "f");
4266
4351
  this.fpsLimit = 120;
4267
4352
  this.duration = 0;
4268
4353
  this.lifeTime = 0;
@@ -4277,7 +4362,7 @@
4277
4362
  this._initialSourceOptions = sourceOptions;
4278
4363
  this.retina = new Retina(this);
4279
4364
  this.canvas = new Canvas(this);
4280
- this.particles = new Particles(this);
4365
+ this.particles = new Particles(Container_classPrivateFieldGet(this, _Container_engine, "f"), this);
4281
4366
  this.drawer = new FrameManager(this);
4282
4367
  this.presets = presets;
4283
4368
  this.pathGenerator = {
@@ -4306,8 +4391,8 @@
4306
4391
  this.plugins = new Map;
4307
4392
  this.drawers = new Map;
4308
4393
  this.density = 1;
4309
- this._options = new Options;
4310
- this.actualOptions = new Options;
4394
+ this._options = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
4395
+ this.actualOptions = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
4311
4396
  this.eventListeners = new EventListeners(this);
4312
4397
  if (typeof IntersectionObserver !== "undefined" && IntersectionObserver) {
4313
4398
  this.intersectionObserver = new IntersectionObserver((entries => this.intersectionManager(entries)));
@@ -4422,7 +4507,7 @@
4422
4507
  return this.start();
4423
4508
  }
4424
4509
  reset() {
4425
- this._options = new Options;
4510
+ this._options = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
4426
4511
  return this.refresh();
4427
4512
  }
4428
4513
  stop() {
@@ -4563,20 +4648,20 @@
4563
4648
  return false;
4564
4649
  }
4565
4650
  async init() {
4566
- this._options = new Options;
4651
+ this._options = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
4567
4652
  for (const preset of this.presets) {
4568
- this._options.load(Plugins.getPreset(preset));
4653
+ this._options.load(Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getPreset(preset));
4569
4654
  }
4570
- const shapes = Plugins.getSupportedShapes();
4655
+ const shapes = Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getSupportedShapes();
4571
4656
  for (const type of shapes) {
4572
- const drawer = Plugins.getShapeDrawer(type);
4657
+ const drawer = Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getShapeDrawer(type);
4573
4658
  if (drawer) {
4574
4659
  this.drawers.set(type, drawer);
4575
4660
  }
4576
4661
  }
4577
4662
  this._options.load(this._initialSourceOptions);
4578
4663
  this._options.load(this._sourceOptions);
4579
- this.actualOptions = new Options;
4664
+ this.actualOptions = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
4580
4665
  this.actualOptions.load(this._options);
4581
4666
  this.retina.init();
4582
4667
  this.canvas.init();
@@ -4587,7 +4672,7 @@
4587
4672
  this.duration = getRangeValue(this.actualOptions.duration);
4588
4673
  this.lifeTime = 0;
4589
4674
  this.fpsLimit = this.actualOptions.fpsLimit > 0 ? this.actualOptions.fpsLimit : 120;
4590
- const availablePlugins = Plugins.getAvailablePlugins(this);
4675
+ const availablePlugins = Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getAvailablePlugins(this);
4591
4676
  for (const [id, plugin] of availablePlugins) {
4592
4677
  this.plugins.set(id, plugin);
4593
4678
  }
@@ -4605,7 +4690,7 @@
4605
4690
  }
4606
4691
  const pathOptions = this.actualOptions.particles.move.path;
4607
4692
  if (pathOptions.generator) {
4608
- const customGenerator = Plugins.getPathGenerator(pathOptions.generator);
4693
+ const customGenerator = Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getPathGenerator(pathOptions.generator);
4609
4694
  if (customGenerator) {
4610
4695
  if (customGenerator.init) {
4611
4696
  this.pathGenerator.init = customGenerator.init;
@@ -4642,24 +4727,41 @@
4642
4727
  }
4643
4728
  }
4644
4729
  }
4645
- const tsParticlesDom = null && [];
4730
+ _Container_engine = new WeakMap;
4731
+ var Loader_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
4732
+ if (kind === "m") throw new TypeError("Private method is not writable");
4733
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4734
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
4735
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
4736
+ value;
4737
+ };
4738
+ var Loader_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
4739
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4740
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4741
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
4742
+ };
4743
+ var _Loader_engine;
4646
4744
  function fetchError(statusCode) {
4647
4745
  console.error(`Error tsParticles - fetch status: ${statusCode}`);
4648
4746
  console.error("Error tsParticles - File config not found");
4649
4747
  }
4650
4748
  class Loader {
4651
- static dom() {
4652
- return tsParticlesDom;
4749
+ constructor(engine) {
4750
+ _Loader_engine.set(this, void 0);
4751
+ Loader_classPrivateFieldSet(this, _Loader_engine, engine, "f");
4752
+ }
4753
+ dom() {
4754
+ return Loader_classPrivateFieldGet(this, _Loader_engine, "f").domArray;
4653
4755
  }
4654
- static domItem(index) {
4655
- const dom = Loader.dom();
4756
+ domItem(index) {
4757
+ const dom = this.dom();
4656
4758
  const item = dom[index];
4657
4759
  if (item && !item.destroyed) {
4658
4760
  return item;
4659
4761
  }
4660
4762
  dom.splice(index, 1);
4661
4763
  }
4662
- static async loadOptions(params) {
4764
+ async loadOptions(params) {
4663
4765
  var _a, _b, _c;
4664
4766
  const tagId = (_a = params.tagId) !== null && _a !== void 0 ? _a : `tsparticles${Math.floor(Math.random() * 1e4)}`;
4665
4767
  const {options: options, index: index} = params;
@@ -4670,10 +4772,10 @@
4670
4772
  (_c = document.querySelector("body")) === null || _c === void 0 ? void 0 : _c.append(domContainer);
4671
4773
  }
4672
4774
  const currentOptions = options instanceof Array ? itemFromArray(options, index) : options;
4673
- const dom = Loader.dom();
4775
+ const dom = this.dom();
4674
4776
  const oldIndex = dom.findIndex((v => v.id === tagId));
4675
4777
  if (oldIndex >= 0) {
4676
- const old = Loader.domItem(oldIndex);
4778
+ const old = this.domItem(oldIndex);
4677
4779
  if (old && !old.destroyed) {
4678
4780
  old.destroy();
4679
4781
  dom.splice(oldIndex, 1);
@@ -4696,7 +4798,7 @@
4696
4798
  domContainer.appendChild(canvasEl);
4697
4799
  }
4698
4800
  }
4699
- const newItem = new Container(tagId, currentOptions);
4801
+ const newItem = new Container(Loader_classPrivateFieldGet(this, _Loader_engine, "f"), tagId, currentOptions);
4700
4802
  if (oldIndex >= 0) {
4701
4803
  dom.splice(oldIndex, 0, newItem);
4702
4804
  } else {
@@ -4706,7 +4808,7 @@
4706
4808
  await newItem.start();
4707
4809
  return newItem;
4708
4810
  }
4709
- static async loadRemoteOptions(params) {
4811
+ async loadRemoteOptions(params) {
4710
4812
  const {url: jsonUrl, index: index} = params;
4711
4813
  const url = jsonUrl instanceof Array ? itemFromArray(jsonUrl, index) : jsonUrl;
4712
4814
  if (!url) {
@@ -4718,14 +4820,14 @@
4718
4820
  return;
4719
4821
  }
4720
4822
  const data = await response.json();
4721
- return await Loader.loadOptions({
4823
+ return this.loadOptions({
4722
4824
  tagId: params.tagId,
4723
4825
  element: params.element,
4724
4826
  index: index,
4725
4827
  options: data
4726
4828
  });
4727
4829
  }
4728
- static load(tagId, options, index) {
4830
+ load(tagId, options, index) {
4729
4831
  const params = {
4730
4832
  index: index
4731
4833
  };
@@ -4741,7 +4843,7 @@
4741
4843
  }
4742
4844
  return this.loadOptions(params);
4743
4845
  }
4744
- static async set(id, domContainer, options, index) {
4846
+ async set(id, domContainer, options, index) {
4745
4847
  const params = {
4746
4848
  index: index
4747
4849
  };
@@ -4762,7 +4864,7 @@
4762
4864
  }
4763
4865
  return this.loadOptions(params);
4764
4866
  }
4765
- static async loadJSON(tagId, jsonUrl, index) {
4867
+ async loadJSON(tagId, jsonUrl, index) {
4766
4868
  let url, id;
4767
4869
  if (typeof jsonUrl === "number" || jsonUrl === undefined) {
4768
4870
  url = tagId;
@@ -4770,13 +4872,13 @@
4770
4872
  id = tagId;
4771
4873
  url = jsonUrl;
4772
4874
  }
4773
- return await Loader.loadRemoteOptions({
4875
+ return this.loadRemoteOptions({
4774
4876
  tagId: id,
4775
4877
  url: url,
4776
4878
  index: index
4777
4879
  });
4778
4880
  }
4779
- static async setJSON(id, domContainer, jsonUrl, index) {
4881
+ async setJSON(id, domContainer, jsonUrl, index) {
4780
4882
  let url, newId, newIndex, element;
4781
4883
  if (id instanceof HTMLElement) {
4782
4884
  element = id;
@@ -4788,15 +4890,15 @@
4788
4890
  url = jsonUrl;
4789
4891
  newIndex = index;
4790
4892
  }
4791
- return await Loader.loadRemoteOptions({
4893
+ return this.loadRemoteOptions({
4792
4894
  tagId: newId,
4793
4895
  url: url,
4794
4896
  index: newIndex,
4795
4897
  element: element
4796
4898
  });
4797
4899
  }
4798
- static setOnClickHandler(callback) {
4799
- const dom = Loader.dom();
4900
+ setOnClickHandler(callback) {
4901
+ const dom = this.dom();
4800
4902
  if (dom.length === 0) {
4801
4903
  throw new Error("Can only set click handlers after calling tsParticles.load() or tsParticles.loadJSON()");
4802
4904
  }
@@ -4805,6 +4907,7 @@
4805
4907
  }
4806
4908
  }
4807
4909
  }
4910
+ _Loader_engine = new WeakMap;
4808
4911
  class Grabber extends ExternalInteractorBase {
4809
4912
  constructor(container) {
4810
4913
  super(container);