tsparticles 1.41.0 → 1.41.4

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 (205) hide show
  1. package/Core/Container.js +2 -2
  2. package/Core/Interfaces/IExternalInteractor.d.ts +1 -1
  3. package/Core/Interfaces/IParticlesInteractor.d.ts +1 -1
  4. package/Core/Particle.js +2 -2
  5. package/Core/Particles.d.ts +3 -3
  6. package/Core/Particles.js +7 -7
  7. package/Core/Utils/ExternalInteractorBase.d.ts +1 -1
  8. package/Core/Utils/FrameManager.d.ts +1 -1
  9. package/Core/Utils/FrameManager.js +2 -2
  10. package/Core/Utils/InteractionManager.d.ts +2 -2
  11. package/Core/Utils/InteractionManager.js +4 -4
  12. package/Core/Utils/ParticlesInteractorBase.d.ts +1 -1
  13. package/Interactions/External/Attract/Attractor.d.ts +1 -1
  14. package/Interactions/External/Attract/Attractor.js +1 -1
  15. package/Interactions/External/Bounce/Bouncer.d.ts +1 -1
  16. package/Interactions/External/Bounce/Bouncer.js +1 -1
  17. package/Interactions/External/Bubble/Bubbler.d.ts +1 -1
  18. package/Interactions/External/Bubble/Bubbler.js +1 -1
  19. package/Interactions/External/Connect/Connector.d.ts +1 -1
  20. package/Interactions/External/Connect/Connector.js +1 -1
  21. package/Interactions/External/Grab/Grabber.d.ts +1 -1
  22. package/Interactions/External/Grab/Grabber.js +1 -1
  23. package/Interactions/External/Repulse/Repulser.d.ts +1 -1
  24. package/Interactions/External/Repulse/Repulser.js +1 -1
  25. package/Interactions/External/Trail/TrailMaker.d.ts +1 -1
  26. package/Interactions/External/Trail/TrailMaker.js +1 -1
  27. package/Interactions/Particles/Attract/Attractor.d.ts +1 -1
  28. package/Interactions/Particles/Attract/Attractor.js +1 -1
  29. package/Interactions/Particles/Collisions/Collider.d.ts +1 -1
  30. package/Interactions/Particles/Collisions/Collider.js +1 -1
  31. package/Interactions/Particles/Links/Linker.d.ts +1 -1
  32. package/Interactions/Particles/Links/Linker.js +1 -1
  33. package/Plugins/PolygonMask/PolygonMaskInstance.js +1 -1
  34. package/Updaters/Opacity/OpacityUpdater.js +7 -5
  35. package/Updaters/Size/SizeUpdater.js +6 -5
  36. package/browser/Core/Container.js +2 -2
  37. package/browser/Core/Interfaces/IExternalInteractor.d.ts +1 -1
  38. package/browser/Core/Interfaces/IParticlesInteractor.d.ts +1 -1
  39. package/browser/Core/Particle.js +2 -2
  40. package/browser/Core/Particles.d.ts +3 -3
  41. package/browser/Core/Particles.js +7 -7
  42. package/browser/Core/Utils/ExternalInteractorBase.d.ts +1 -1
  43. package/browser/Core/Utils/FrameManager.d.ts +1 -1
  44. package/browser/Core/Utils/FrameManager.js +2 -2
  45. package/browser/Core/Utils/InteractionManager.d.ts +2 -2
  46. package/browser/Core/Utils/InteractionManager.js +4 -4
  47. package/browser/Core/Utils/ParticlesInteractorBase.d.ts +1 -1
  48. package/browser/Interactions/External/Attract/Attractor.d.ts +1 -1
  49. package/browser/Interactions/External/Attract/Attractor.js +1 -1
  50. package/browser/Interactions/External/Bounce/Bouncer.d.ts +1 -1
  51. package/browser/Interactions/External/Bounce/Bouncer.js +1 -1
  52. package/browser/Interactions/External/Bubble/Bubbler.d.ts +1 -1
  53. package/browser/Interactions/External/Bubble/Bubbler.js +1 -1
  54. package/browser/Interactions/External/Connect/Connector.d.ts +1 -1
  55. package/browser/Interactions/External/Connect/Connector.js +1 -1
  56. package/browser/Interactions/External/Grab/Grabber.d.ts +1 -1
  57. package/browser/Interactions/External/Grab/Grabber.js +1 -1
  58. package/browser/Interactions/External/Repulse/Repulser.d.ts +1 -1
  59. package/browser/Interactions/External/Repulse/Repulser.js +1 -1
  60. package/browser/Interactions/External/Trail/TrailMaker.d.ts +1 -1
  61. package/browser/Interactions/External/Trail/TrailMaker.js +1 -1
  62. package/browser/Interactions/Particles/Attract/Attractor.d.ts +1 -1
  63. package/browser/Interactions/Particles/Attract/Attractor.js +1 -1
  64. package/browser/Interactions/Particles/Collisions/Collider.d.ts +1 -1
  65. package/browser/Interactions/Particles/Collisions/Collider.js +1 -1
  66. package/browser/Interactions/Particles/Links/Linker.d.ts +1 -1
  67. package/browser/Interactions/Particles/Links/Linker.js +1 -1
  68. package/browser/Plugins/PolygonMask/PolygonMaskInstance.js +1 -1
  69. package/browser/Updaters/Opacity/OpacityUpdater.js +7 -5
  70. package/browser/Updaters/Size/SizeUpdater.js +6 -5
  71. package/esm/Core/Container.js +2 -2
  72. package/esm/Core/Interfaces/IExternalInteractor.d.ts +1 -1
  73. package/esm/Core/Interfaces/IParticlesInteractor.d.ts +1 -1
  74. package/esm/Core/Particle.js +2 -2
  75. package/esm/Core/Particles.d.ts +3 -3
  76. package/esm/Core/Particles.js +7 -7
  77. package/esm/Core/Utils/ExternalInteractorBase.d.ts +1 -1
  78. package/esm/Core/Utils/FrameManager.d.ts +1 -1
  79. package/esm/Core/Utils/FrameManager.js +2 -2
  80. package/esm/Core/Utils/InteractionManager.d.ts +2 -2
  81. package/esm/Core/Utils/InteractionManager.js +4 -4
  82. package/esm/Core/Utils/ParticlesInteractorBase.d.ts +1 -1
  83. package/esm/Interactions/External/Attract/Attractor.d.ts +1 -1
  84. package/esm/Interactions/External/Attract/Attractor.js +1 -1
  85. package/esm/Interactions/External/Bounce/Bouncer.d.ts +1 -1
  86. package/esm/Interactions/External/Bounce/Bouncer.js +1 -1
  87. package/esm/Interactions/External/Bubble/Bubbler.d.ts +1 -1
  88. package/esm/Interactions/External/Bubble/Bubbler.js +1 -1
  89. package/esm/Interactions/External/Connect/Connector.d.ts +1 -1
  90. package/esm/Interactions/External/Connect/Connector.js +1 -1
  91. package/esm/Interactions/External/Grab/Grabber.d.ts +1 -1
  92. package/esm/Interactions/External/Grab/Grabber.js +1 -1
  93. package/esm/Interactions/External/Repulse/Repulser.d.ts +1 -1
  94. package/esm/Interactions/External/Repulse/Repulser.js +1 -1
  95. package/esm/Interactions/External/Trail/TrailMaker.d.ts +1 -1
  96. package/esm/Interactions/External/Trail/TrailMaker.js +1 -1
  97. package/esm/Interactions/Particles/Attract/Attractor.d.ts +1 -1
  98. package/esm/Interactions/Particles/Attract/Attractor.js +1 -1
  99. package/esm/Interactions/Particles/Collisions/Collider.d.ts +1 -1
  100. package/esm/Interactions/Particles/Collisions/Collider.js +1 -1
  101. package/esm/Interactions/Particles/Links/Linker.d.ts +1 -1
  102. package/esm/Interactions/Particles/Links/Linker.js +1 -1
  103. package/esm/Plugins/PolygonMask/PolygonMaskInstance.js +1 -1
  104. package/esm/Updaters/Opacity/OpacityUpdater.js +7 -5
  105. package/esm/Updaters/Size/SizeUpdater.js +6 -5
  106. package/package.json +1 -1
  107. package/report.html +6 -5
  108. package/report.slim.html +6 -5
  109. package/tsparticles.engine.js +17 -17
  110. package/tsparticles.engine.min.js +2 -2
  111. package/tsparticles.interaction.external.attract.js +16 -16
  112. package/tsparticles.interaction.external.attract.min.js +2 -2
  113. package/tsparticles.interaction.external.bounce.js +16 -16
  114. package/tsparticles.interaction.external.bounce.min.js +2 -2
  115. package/tsparticles.interaction.external.bubble.js +16 -16
  116. package/tsparticles.interaction.external.bubble.min.js +2 -2
  117. package/tsparticles.interaction.external.connect.js +16 -16
  118. package/tsparticles.interaction.external.connect.min.js +2 -2
  119. package/tsparticles.interaction.external.grab.js +16 -16
  120. package/tsparticles.interaction.external.grab.min.js +2 -2
  121. package/tsparticles.interaction.external.repulse.js +16 -16
  122. package/tsparticles.interaction.external.repulse.min.js +2 -2
  123. package/tsparticles.interaction.external.trail.js +16 -16
  124. package/tsparticles.interaction.external.trail.min.js +2 -2
  125. package/tsparticles.interaction.particles.attract.js +16 -16
  126. package/tsparticles.interaction.particles.attract.min.js +2 -2
  127. package/tsparticles.interaction.particles.collisions.js +16 -16
  128. package/tsparticles.interaction.particles.collisions.min.js +2 -2
  129. package/tsparticles.interaction.particles.links.js +16 -16
  130. package/tsparticles.interaction.particles.links.min.js +2 -2
  131. package/tsparticles.js +35 -35
  132. package/tsparticles.min.js +2 -2
  133. package/tsparticles.pathseg.min.js +1 -1
  134. package/tsparticles.plugins.absorbers.js +15 -15
  135. package/tsparticles.plugins.absorbers.min.js +1 -1
  136. package/tsparticles.plugins.emitters.js +15 -15
  137. package/tsparticles.plugins.emitters.min.js +1 -1
  138. package/tsparticles.plugins.polygonMask.js +17 -17
  139. package/tsparticles.plugins.polygonMask.min.js +2 -2
  140. package/tsparticles.shape.circle.min.js +1 -1
  141. package/tsparticles.shape.image.js +15 -15
  142. package/tsparticles.shape.image.min.js +1 -1
  143. package/tsparticles.shape.line.min.js +1 -1
  144. package/tsparticles.shape.polygon.min.js +1 -1
  145. package/tsparticles.shape.square.min.js +1 -1
  146. package/tsparticles.shape.star.min.js +1 -1
  147. package/tsparticles.shape.text.js +15 -15
  148. package/tsparticles.shape.text.min.js +1 -1
  149. package/tsparticles.slim.js +32 -32
  150. package/tsparticles.slim.min.js +2 -2
  151. package/tsparticles.updater.angle.js +15 -15
  152. package/tsparticles.updater.angle.min.js +1 -1
  153. package/tsparticles.updater.color.js +15 -15
  154. package/tsparticles.updater.color.min.js +1 -1
  155. package/tsparticles.updater.life.js +15 -15
  156. package/tsparticles.updater.life.min.js +1 -1
  157. package/tsparticles.updater.opacity.js +18 -18
  158. package/tsparticles.updater.opacity.min.js +2 -2
  159. package/tsparticles.updater.outModes.js +15 -15
  160. package/tsparticles.updater.outModes.min.js +1 -1
  161. package/tsparticles.updater.roll.js +15 -15
  162. package/tsparticles.updater.roll.min.js +1 -1
  163. package/tsparticles.updater.size.js +18 -18
  164. package/tsparticles.updater.size.min.js +2 -2
  165. package/tsparticles.updater.strokeColor.js +15 -15
  166. package/tsparticles.updater.strokeColor.min.js +1 -1
  167. package/tsparticles.updater.tilt.js +15 -15
  168. package/tsparticles.updater.tilt.min.js +1 -1
  169. package/tsparticles.updater.wobble.js +15 -15
  170. package/tsparticles.updater.wobble.min.js +1 -1
  171. package/umd/Core/Container.js +2 -2
  172. package/umd/Core/Interfaces/IExternalInteractor.d.ts +1 -1
  173. package/umd/Core/Interfaces/IParticlesInteractor.d.ts +1 -1
  174. package/umd/Core/Particle.js +2 -2
  175. package/umd/Core/Particles.d.ts +3 -3
  176. package/umd/Core/Particles.js +7 -7
  177. package/umd/Core/Utils/ExternalInteractorBase.d.ts +1 -1
  178. package/umd/Core/Utils/FrameManager.d.ts +1 -1
  179. package/umd/Core/Utils/FrameManager.js +2 -2
  180. package/umd/Core/Utils/InteractionManager.d.ts +2 -2
  181. package/umd/Core/Utils/InteractionManager.js +4 -4
  182. package/umd/Core/Utils/ParticlesInteractorBase.d.ts +1 -1
  183. package/umd/Interactions/External/Attract/Attractor.d.ts +1 -1
  184. package/umd/Interactions/External/Attract/Attractor.js +1 -1
  185. package/umd/Interactions/External/Bounce/Bouncer.d.ts +1 -1
  186. package/umd/Interactions/External/Bounce/Bouncer.js +1 -1
  187. package/umd/Interactions/External/Bubble/Bubbler.d.ts +1 -1
  188. package/umd/Interactions/External/Bubble/Bubbler.js +1 -1
  189. package/umd/Interactions/External/Connect/Connector.d.ts +1 -1
  190. package/umd/Interactions/External/Connect/Connector.js +1 -1
  191. package/umd/Interactions/External/Grab/Grabber.d.ts +1 -1
  192. package/umd/Interactions/External/Grab/Grabber.js +1 -1
  193. package/umd/Interactions/External/Repulse/Repulser.d.ts +1 -1
  194. package/umd/Interactions/External/Repulse/Repulser.js +1 -1
  195. package/umd/Interactions/External/Trail/TrailMaker.d.ts +1 -1
  196. package/umd/Interactions/External/Trail/TrailMaker.js +1 -1
  197. package/umd/Interactions/Particles/Attract/Attractor.d.ts +1 -1
  198. package/umd/Interactions/Particles/Attract/Attractor.js +1 -1
  199. package/umd/Interactions/Particles/Collisions/Collider.d.ts +1 -1
  200. package/umd/Interactions/Particles/Collisions/Collider.js +1 -1
  201. package/umd/Interactions/Particles/Links/Linker.d.ts +1 -1
  202. package/umd/Interactions/Particles/Links/Linker.js +1 -1
  203. package/umd/Plugins/PolygonMask/PolygonMaskInstance.js +1 -1
  204. package/umd/Updaters/Opacity/OpacityUpdater.js +7 -5
  205. package/umd/Updaters/Size/SizeUpdater.js +6 -5
@@ -544,20 +544,20 @@
544
544
  }
545
545
  }
546
546
  }
547
- externalInteract(delta) {
547
+ async externalInteract(delta) {
548
548
  for (const interactor of this.externalInteractors) {
549
549
  if (interactor.isEnabled()) {
550
- interactor.interact(delta);
550
+ await interactor.interact(delta);
551
551
  }
552
552
  }
553
553
  }
554
- particlesInteract(particle, delta) {
554
+ async particlesInteract(particle, delta) {
555
555
  for (const interactor of this.externalInteractors) {
556
556
  interactor.reset(particle);
557
557
  }
558
558
  for (const interactor of this.particleInteractors) {
559
559
  if (interactor.isEnabled(particle)) {
560
- interactor.interact(particle, delta);
560
+ await interactor.interact(particle, delta);
561
561
  }
562
562
  }
563
563
  }
@@ -2714,10 +2714,10 @@
2714
2714
  return this.getRadius() ** 2 * Math.PI / 2;
2715
2715
  }
2716
2716
  getFillColor() {
2717
- var _a, _b, _c;
2717
+ var _a, _b;
2718
2718
  const color = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.color);
2719
2719
  if (color && this.roll && (this.backColor || this.roll.alter)) {
2720
- const rolled = Math.floor(((_c = (_b = this.roll) === null || _b === void 0 ? void 0 : _b.angle) !== null && _c !== void 0 ? _c : 0) / (Math.PI / 2)) % 2;
2720
+ const backFactor = this.options.roll.mode === "both" ? 2 : 1, backSum = this.options.roll.mode === "horizontal" ? Math.PI / 2 : 0, rolled = Math.floor((((_b = this.roll.angle) !== null && _b !== void 0 ? _b : 0) + backSum) / (Math.PI / backFactor)) % 2;
2721
2721
  if (rolled) {
2722
2722
  if (this.backColor) {
2723
2723
  return this.backColor;
@@ -2949,10 +2949,10 @@
2949
2949
  }
2950
2950
  container.pathGenerator.init(container);
2951
2951
  }
2952
- redraw() {
2952
+ async redraw() {
2953
2953
  this.clear();
2954
2954
  this.init();
2955
- this.draw({
2955
+ await this.draw({
2956
2956
  value: 0,
2957
2957
  factor: 0
2958
2958
  });
@@ -2977,7 +2977,7 @@
2977
2977
  remove(particle, group, override) {
2978
2978
  this.removeAt(this.array.indexOf(particle), undefined, group, override);
2979
2979
  }
2980
- update(delta) {
2980
+ async update(delta) {
2981
2981
  const container = this.container;
2982
2982
  const particlesToDelete = [];
2983
2983
  container.pathGenerator.update();
@@ -3011,23 +3011,23 @@
3011
3011
  for (const particle of particlesToDelete) {
3012
3012
  this.remove(particle);
3013
3013
  }
3014
- this.interactionManager.externalInteract(delta);
3014
+ await this.interactionManager.externalInteract(delta);
3015
3015
  for (const particle of container.particles.array) {
3016
3016
  for (const updater of this.updaters) {
3017
3017
  updater.update(particle, delta);
3018
3018
  }
3019
3019
  if (!particle.destroyed && !particle.spawning) {
3020
- this.interactionManager.particlesInteract(particle, delta);
3020
+ await this.interactionManager.particlesInteract(particle, delta);
3021
3021
  }
3022
3022
  }
3023
3023
  delete container.canvas.resizeFactor;
3024
3024
  }
3025
- draw(delta) {
3025
+ async draw(delta) {
3026
3026
  const container = this.container;
3027
3027
  container.canvas.clear();
3028
3028
  const canvasSize = this.container.canvas.size;
3029
3029
  this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
3030
- this.update(delta);
3030
+ await this.update(delta);
3031
3031
  if (this.needsSort) {
3032
3032
  this.zArray.sort(((a, b) => b.position.z - a.position.z || a.id - b.id));
3033
3033
  this.lastZIndex = this.zArray[this.zArray.length - 1].position.z;
@@ -3388,12 +3388,12 @@
3388
3388
  }
3389
3389
  draw(force) {
3390
3390
  let refreshTime = force;
3391
- this.drawAnimationFrame = animate()((timestamp => {
3391
+ this.drawAnimationFrame = animate()((async timestamp => {
3392
3392
  if (refreshTime) {
3393
3393
  this.lastFrameTime = undefined;
3394
3394
  refreshTime = false;
3395
3395
  }
3396
- this.drawer.nextFrame(timestamp);
3396
+ await this.drawer.nextFrame(timestamp);
3397
3397
  }));
3398
3398
  }
3399
3399
  getAnimationStatus() {
@@ -1,2 +1,2 @@
1
- /*! tsParticles v1.41.0 by Matteo Bruni */
1
+ /*! tsParticles v1.41.4 by Matteo Bruni */
2
2
  !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var o=t();for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(window,(function(){return function(){"use strict";var e={d:function(t,o){for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{loadAngleUpdater:function(){return u}});class o{}o.generatedAttribute="generated",o.randomColorValue="random",o.midColorValue="mid",o.touchEndEvent="touchend",o.mouseDownEvent="mousedown",o.mouseUpEvent="mouseup",o.mouseMoveEvent="mousemove",o.touchStartEvent="touchstart",o.touchMoveEvent="touchmove",o.mouseLeaveEvent="mouseleave",o.mouseOutEvent="mouseout",o.touchCancelEvent="touchcancel",o.resizeEvent="resize",o.visibilityChangeEvent="visibilitychange",o.noPolygonDataLoaded="No polygon data loaded.",o.noPolygonFound="No polygon found, you need to specify SVG url in config.";new WeakMap;new WeakMap;new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;function n(e){return"number"==typeof e?e:function(e){const t=r(e);let o=a(e);return t===o&&(o=0),Math.random()*(t-o)+o}(e)}function a(e){return"number"==typeof e?e:e.min}function r(e){return"number"==typeof e?e:e.max}new WeakMap;class i{constructor(e){this.container=e}init(e){const t=e.options.rotate;e.rotate={enable:t.animation.enable,value:n(t.value)*Math.PI/180};let o=t.direction;if("random"===o){o=Math.floor(2*Math.random())>0?"counter-clockwise":"clockwise"}switch(o){case"counter-clockwise":case"counterClockwise":e.rotate.status=1;break;case"clockwise":e.rotate.status=0}const a=e.options.rotate.animation;a.enable&&(e.rotate.velocity=a.speed/360*this.container.retina.reduceFactor,a.sync||(e.rotate.velocity*=Math.random()))}isEnabled(e){const t=e.options.rotate,o=t.animation;return!e.destroyed&&!e.spawning&&!t.path&&o.enable}update(e,t){this.isEnabled(e)&&function(e,t){var o;const n=e.rotate;if(!n)return;const a=e.options.rotate.animation,r=(null!==(o=n.velocity)&&void 0!==o?o:0)*t.factor,i=2*Math.PI;if(a.enable)switch(n.status){case 0:n.value+=r,n.value>i&&(n.value-=i);break;case 1:default:n.value-=r,n.value<0&&(n.value+=i)}}(e,t)}}async function u(e){await e.addParticleUpdater("angle",(e=>new i(e)))}return t}()}));
@@ -544,20 +544,20 @@
544
544
  }
545
545
  }
546
546
  }
547
- externalInteract(delta) {
547
+ async externalInteract(delta) {
548
548
  for (const interactor of this.externalInteractors) {
549
549
  if (interactor.isEnabled()) {
550
- interactor.interact(delta);
550
+ await interactor.interact(delta);
551
551
  }
552
552
  }
553
553
  }
554
- particlesInteract(particle, delta) {
554
+ async particlesInteract(particle, delta) {
555
555
  for (const interactor of this.externalInteractors) {
556
556
  interactor.reset(particle);
557
557
  }
558
558
  for (const interactor of this.particleInteractors) {
559
559
  if (interactor.isEnabled(particle)) {
560
- interactor.interact(particle, delta);
560
+ await interactor.interact(particle, delta);
561
561
  }
562
562
  }
563
563
  }
@@ -2714,10 +2714,10 @@
2714
2714
  return this.getRadius() ** 2 * Math.PI / 2;
2715
2715
  }
2716
2716
  getFillColor() {
2717
- var _a, _b, _c;
2717
+ var _a, _b;
2718
2718
  const color = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.color);
2719
2719
  if (color && this.roll && (this.backColor || this.roll.alter)) {
2720
- const rolled = Math.floor(((_c = (_b = this.roll) === null || _b === void 0 ? void 0 : _b.angle) !== null && _c !== void 0 ? _c : 0) / (Math.PI / 2)) % 2;
2720
+ const backFactor = this.options.roll.mode === "both" ? 2 : 1, backSum = this.options.roll.mode === "horizontal" ? Math.PI / 2 : 0, rolled = Math.floor((((_b = this.roll.angle) !== null && _b !== void 0 ? _b : 0) + backSum) / (Math.PI / backFactor)) % 2;
2721
2721
  if (rolled) {
2722
2722
  if (this.backColor) {
2723
2723
  return this.backColor;
@@ -2949,10 +2949,10 @@
2949
2949
  }
2950
2950
  container.pathGenerator.init(container);
2951
2951
  }
2952
- redraw() {
2952
+ async redraw() {
2953
2953
  this.clear();
2954
2954
  this.init();
2955
- this.draw({
2955
+ await this.draw({
2956
2956
  value: 0,
2957
2957
  factor: 0
2958
2958
  });
@@ -2977,7 +2977,7 @@
2977
2977
  remove(particle, group, override) {
2978
2978
  this.removeAt(this.array.indexOf(particle), undefined, group, override);
2979
2979
  }
2980
- update(delta) {
2980
+ async update(delta) {
2981
2981
  const container = this.container;
2982
2982
  const particlesToDelete = [];
2983
2983
  container.pathGenerator.update();
@@ -3011,23 +3011,23 @@
3011
3011
  for (const particle of particlesToDelete) {
3012
3012
  this.remove(particle);
3013
3013
  }
3014
- this.interactionManager.externalInteract(delta);
3014
+ await this.interactionManager.externalInteract(delta);
3015
3015
  for (const particle of container.particles.array) {
3016
3016
  for (const updater of this.updaters) {
3017
3017
  updater.update(particle, delta);
3018
3018
  }
3019
3019
  if (!particle.destroyed && !particle.spawning) {
3020
- this.interactionManager.particlesInteract(particle, delta);
3020
+ await this.interactionManager.particlesInteract(particle, delta);
3021
3021
  }
3022
3022
  }
3023
3023
  delete container.canvas.resizeFactor;
3024
3024
  }
3025
- draw(delta) {
3025
+ async draw(delta) {
3026
3026
  const container = this.container;
3027
3027
  container.canvas.clear();
3028
3028
  const canvasSize = this.container.canvas.size;
3029
3029
  this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
3030
- this.update(delta);
3030
+ await this.update(delta);
3031
3031
  if (this.needsSort) {
3032
3032
  this.zArray.sort(((a, b) => b.position.z - a.position.z || a.id - b.id));
3033
3033
  this.lastZIndex = this.zArray[this.zArray.length - 1].position.z;
@@ -3388,12 +3388,12 @@
3388
3388
  }
3389
3389
  draw(force) {
3390
3390
  let refreshTime = force;
3391
- this.drawAnimationFrame = animate()((timestamp => {
3391
+ this.drawAnimationFrame = animate()((async timestamp => {
3392
3392
  if (refreshTime) {
3393
3393
  this.lastFrameTime = undefined;
3394
3394
  refreshTime = false;
3395
3395
  }
3396
- this.drawer.nextFrame(timestamp);
3396
+ await this.drawer.nextFrame(timestamp);
3397
3397
  }));
3398
3398
  }
3399
3399
  getAnimationStatus() {
@@ -1,2 +1,2 @@
1
- /*! tsParticles v1.41.0 by Matteo Bruni */
1
+ /*! tsParticles v1.41.4 by Matteo Bruni */
2
2
  !function(e,o){if("object"==typeof exports&&"object"==typeof module)module.exports=o();else if("function"==typeof define&&define.amd)define([],o);else{var n=o();for(var t in n)("object"==typeof exports?exports:e)[t]=n[t]}}(window,(function(){return function(){"use strict";var e={d:function(o,n){for(var t in n)e.o(n,t)&&!e.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:n[t]})},o:function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},o={};e.r(o),e.d(o,{loadColorUpdater:function(){return m}});class n{}n.generatedAttribute="generated",n.randomColorValue="random",n.midColorValue="mid",n.touchEndEvent="touchend",n.mouseDownEvent="mousedown",n.mouseUpEvent="mouseup",n.mouseMoveEvent="mousemove",n.touchStartEvent="touchstart",n.touchMoveEvent="touchmove",n.mouseLeaveEvent="mouseleave",n.mouseOutEvent="mouseout",n.touchCancelEvent="touchcancel",n.resizeEvent="resize",n.visibilityChangeEvent="visibilitychange",n.noPolygonDataLoaded="No polygon data loaded.",n.noPolygonFound="No polygon found, you need to specify SVG url in config.";new WeakMap;new WeakMap;new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;function t(e){const o=a(e);let n=r(e);return o===n&&(n=0),Math.random()*(o-n)+n}function r(e){return"number"==typeof e?e:e.min}function a(e){return"number"==typeof e?e:e.max}function l(e,o){if(e===o||void 0===o&&"number"==typeof e)return e;const n=r(e),t=a(e);return void 0!==o?{min:Math.min(n,o),max:Math.max(t,o)}:l(n,t)}function s(e,o,n=!0){return e[void 0!==o&&n?o%e.length:function(e){return Math.floor(Math.random()*e.length)}(e)]}function i(e,o,n){let t=n;return t<0&&(t+=1),t>1&&(t-=1),t<1/6?e+6*(o-e)*t:t<.5?o:t<2/3?e+(o-e)*(2/3-t)*6:e}function u(e){if(e.startsWith("rgb")){const o=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.]+)\s*)?\)/i.exec(e);return o?{a:o.length>4?parseFloat(o[5]):1,b:parseInt(o[3],10),g:parseInt(o[2],10),r:parseInt(o[1],10)}:void 0}if(e.startsWith("hsl")){const o=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(e);return o?function(e){const o=v(e);return{a:e.a,b:o.b,g:o.g,r:o.r}}({a:o.length>4?parseFloat(o[5]):1,h:parseInt(o[1],10),l:parseInt(o[3],10),s:parseInt(o[2],10)}):void 0}if(e.startsWith("hsv")){const o=/hsva?\(\s*(\d+)°\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(e);return o?function(e){const o=f(e);return{a:e.a,b:o.b,g:o.g,r:o.r}}({a:o.length>4?parseFloat(o[5]):1,h:parseInt(o[1],10),s:parseInt(o[2],10),v:parseInt(o[3],10)}):void 0}{const o=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,n=e.replace(o,((e,o,n,t,r)=>o+o+n+n+t+t+(void 0!==r?r+r:""))),t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(n);return t?{a:void 0!==t[4]?parseInt(t[4],16)/255:1,b:parseInt(t[3],16),g:parseInt(t[2],16),r:parseInt(t[1],16)}:void 0}}function c(e,o,t=!0){var r,a,l;if(void 0===e)return;const i="string"==typeof e?{value:e}:e;let d;if("string"==typeof i.value)d=i.value===n.randomColorValue?h():function(e){return u(e)}(i.value);else if(i.value instanceof Array){d=c({value:s(i.value,o,t)})}else{const e=i.value,o=null!==(r=e.rgb)&&void 0!==r?r:i.value;if(void 0!==o.r)d=o;else{const o=null!==(a=e.hsl)&&void 0!==a?a:i.value;if(void 0!==o.h&&void 0!==o.l)d=v(o);else{const o=null!==(l=e.hsv)&&void 0!==l?l:i.value;void 0!==o.h&&void 0!==o.v&&(d=f(o))}}}return d}function d(e,o,n=!0){const t=c(e,o,n);return void 0!==t?function(e){const o=e.r/255,n=e.g/255,t=e.b/255,r=Math.max(o,n,t),a=Math.min(o,n,t),l={h:0,l:(r+a)/2,s:0};r!=a&&(l.s=l.l<.5?(r-a)/(r+a):(r-a)/(2-r-a),l.h=o===r?(n-t)/(r-a):l.h=n===r?2+(t-o)/(r-a):4+(o-n)/(r-a));l.l*=100,l.s*=100,l.h*=60,l.h<0&&(l.h+=360);return l}(t):void 0}function v(e){const o={b:0,g:0,r:0},n={h:e.h/360,l:e.l/100,s:e.s/100};if(0===n.s)o.b=n.l,o.g=n.l,o.r=n.l;else{const e=n.l<.5?n.l*(1+n.s):n.l+n.s-n.l*n.s,t=2*n.l-e;o.r=i(t,e,n.h+1/3),o.g=i(t,e,n.h),o.b=i(t,e,n.h-1/3)}return o.r=Math.floor(255*o.r),o.g=Math.floor(255*o.g),o.b=Math.floor(255*o.b),o}function f(e){const o={b:0,g:0,r:0},n=e.h/60,t=e.s/100,r=e.v/100,a=r*t,l=a*(1-Math.abs(n%2-1));let s;if(n>=0&&n<=1?s={r:a,g:l,b:0}:n>1&&n<=2?s={r:l,g:a,b:0}:n>2&&n<=3?s={r:0,g:a,b:l}:n>3&&n<=4?s={r:0,g:l,b:a}:n>4&&n<=5?s={r:l,g:0,b:a}:n>5&&n<=6&&(s={r:a,g:0,b:l}),s){const e=r-a;o.r=Math.floor(255*(s.r+e)),o.g=Math.floor(255*(s.g+e)),o.b=Math.floor(255*(s.b+e))}return o}function h(e){const o=null!=e?e:0;return{b:Math.floor(t(l(o,256))),g:Math.floor(t(l(o,256))),r:Math.floor(t(l(o,256)))}}function p(e,o,n){if(e.enable=o.enable,e.enable){if(e.velocity=o.speed/100*n,o.sync)return;e.status=0,e.velocity*=Math.random(),e.value&&(e.value*=Math.random())}else e.velocity=0}function b(e,o,n,r,a){var l;const s=o;if(!s||!n.enable)return;const i=t(n.offset),u=(null!==(l=o.velocity)&&void 0!==l?l:0)*e.factor+3.6*i;a&&0!==s.status?(s.value-=u,s.value<0&&(s.status=0,s.value+=s.value)):(s.value+=u,a&&s.value>r&&(s.status=1,s.value-=s.value%r)),s.value>r&&(s.value%=r)}new WeakMap;class g{constructor(e){this.container=e}init(e){const o=d(e.options.color,e.id,e.options.reduceDuplicates);o&&(e.color=function(e,o,n){const t={h:{enable:!1,value:e.h},s:{enable:!1,value:e.s},l:{enable:!1,value:e.l}};return o&&(p(t.h,o.h,n),p(t.s,o.s,n),p(t.l,o.l,n)),t}(o,e.options.color.animation,this.container.retina.reduceFactor))}isEnabled(e){var o,n,t;const r=e.options.color.animation;return!e.destroyed&&!e.spawning&&(void 0!==(null===(o=e.color)||void 0===o?void 0:o.h.value)&&r.h.enable||void 0!==(null===(n=e.color)||void 0===n?void 0:n.s.value)&&r.s.enable||void 0!==(null===(t=e.color)||void 0===t?void 0:t.l.value)&&r.l.enable)}update(e,o){!function(e,o){var n,t,r;const a=e.options.color.animation;void 0!==(null===(n=e.color)||void 0===n?void 0:n.h)&&b(o,e.color.h,a.h,360,!1),void 0!==(null===(t=e.color)||void 0===t?void 0:t.s)&&b(o,e.color.s,a.s,100,!0),void 0!==(null===(r=e.color)||void 0===r?void 0:r.l)&&b(o,e.color.l,a.l,100,!0)}(e,o)}}async function m(e){await e.addParticleUpdater("color",(e=>new g(e)))}return o}()}));
@@ -544,20 +544,20 @@
544
544
  }
545
545
  }
546
546
  }
547
- externalInteract(delta) {
547
+ async externalInteract(delta) {
548
548
  for (const interactor of this.externalInteractors) {
549
549
  if (interactor.isEnabled()) {
550
- interactor.interact(delta);
550
+ await interactor.interact(delta);
551
551
  }
552
552
  }
553
553
  }
554
- particlesInteract(particle, delta) {
554
+ async particlesInteract(particle, delta) {
555
555
  for (const interactor of this.externalInteractors) {
556
556
  interactor.reset(particle);
557
557
  }
558
558
  for (const interactor of this.particleInteractors) {
559
559
  if (interactor.isEnabled(particle)) {
560
- interactor.interact(particle, delta);
560
+ await interactor.interact(particle, delta);
561
561
  }
562
562
  }
563
563
  }
@@ -2714,10 +2714,10 @@
2714
2714
  return this.getRadius() ** 2 * Math.PI / 2;
2715
2715
  }
2716
2716
  getFillColor() {
2717
- var _a, _b, _c;
2717
+ var _a, _b;
2718
2718
  const color = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.color);
2719
2719
  if (color && this.roll && (this.backColor || this.roll.alter)) {
2720
- const rolled = Math.floor(((_c = (_b = this.roll) === null || _b === void 0 ? void 0 : _b.angle) !== null && _c !== void 0 ? _c : 0) / (Math.PI / 2)) % 2;
2720
+ const backFactor = this.options.roll.mode === "both" ? 2 : 1, backSum = this.options.roll.mode === "horizontal" ? Math.PI / 2 : 0, rolled = Math.floor((((_b = this.roll.angle) !== null && _b !== void 0 ? _b : 0) + backSum) / (Math.PI / backFactor)) % 2;
2721
2721
  if (rolled) {
2722
2722
  if (this.backColor) {
2723
2723
  return this.backColor;
@@ -2949,10 +2949,10 @@
2949
2949
  }
2950
2950
  container.pathGenerator.init(container);
2951
2951
  }
2952
- redraw() {
2952
+ async redraw() {
2953
2953
  this.clear();
2954
2954
  this.init();
2955
- this.draw({
2955
+ await this.draw({
2956
2956
  value: 0,
2957
2957
  factor: 0
2958
2958
  });
@@ -2977,7 +2977,7 @@
2977
2977
  remove(particle, group, override) {
2978
2978
  this.removeAt(this.array.indexOf(particle), undefined, group, override);
2979
2979
  }
2980
- update(delta) {
2980
+ async update(delta) {
2981
2981
  const container = this.container;
2982
2982
  const particlesToDelete = [];
2983
2983
  container.pathGenerator.update();
@@ -3011,23 +3011,23 @@
3011
3011
  for (const particle of particlesToDelete) {
3012
3012
  this.remove(particle);
3013
3013
  }
3014
- this.interactionManager.externalInteract(delta);
3014
+ await this.interactionManager.externalInteract(delta);
3015
3015
  for (const particle of container.particles.array) {
3016
3016
  for (const updater of this.updaters) {
3017
3017
  updater.update(particle, delta);
3018
3018
  }
3019
3019
  if (!particle.destroyed && !particle.spawning) {
3020
- this.interactionManager.particlesInteract(particle, delta);
3020
+ await this.interactionManager.particlesInteract(particle, delta);
3021
3021
  }
3022
3022
  }
3023
3023
  delete container.canvas.resizeFactor;
3024
3024
  }
3025
- draw(delta) {
3025
+ async draw(delta) {
3026
3026
  const container = this.container;
3027
3027
  container.canvas.clear();
3028
3028
  const canvasSize = this.container.canvas.size;
3029
3029
  this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
3030
- this.update(delta);
3030
+ await this.update(delta);
3031
3031
  if (this.needsSort) {
3032
3032
  this.zArray.sort(((a, b) => b.position.z - a.position.z || a.id - b.id));
3033
3033
  this.lastZIndex = this.zArray[this.zArray.length - 1].position.z;
@@ -3388,12 +3388,12 @@
3388
3388
  }
3389
3389
  draw(force) {
3390
3390
  let refreshTime = force;
3391
- this.drawAnimationFrame = animate()((timestamp => {
3391
+ this.drawAnimationFrame = animate()((async timestamp => {
3392
3392
  if (refreshTime) {
3393
3393
  this.lastFrameTime = undefined;
3394
3394
  refreshTime = false;
3395
3395
  }
3396
- this.drawer.nextFrame(timestamp);
3396
+ await this.drawer.nextFrame(timestamp);
3397
3397
  }));
3398
3398
  }
3399
3399
  getAnimationStatus() {
@@ -1,2 +1,2 @@
1
- /*! tsParticles v1.41.0 by Matteo Bruni */
1
+ /*! tsParticles v1.41.4 by Matteo Bruni */
2
2
  !function(e,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var t=n();for(var o in t)("object"==typeof exports?exports:e)[o]=t[o]}}(window,(function(){return function(){"use strict";var e={d:function(n,t){for(var o in t)e.o(t,o)&&!e.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:t[o]})},o:function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},n={};e.r(n),e.d(n,{loadLifeUpdater:function(){return l}});class t{}t.generatedAttribute="generated",t.randomColorValue="random",t.midColorValue="mid",t.touchEndEvent="touchend",t.mouseDownEvent="mousedown",t.mouseUpEvent="mouseup",t.mouseMoveEvent="mousemove",t.touchStartEvent="touchstart",t.touchMoveEvent="touchmove",t.mouseLeaveEvent="mouseleave",t.mouseOutEvent="mouseout",t.touchCancelEvent="touchcancel",t.resizeEvent="resize",t.visibilityChangeEvent="visibilitychange",t.noPolygonDataLoaded="No polygon data loaded.",t.noPolygonFound="No polygon found, you need to specify SVG url in config.";new WeakMap;new WeakMap;new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;function o(e){const n=r(e);let t=a(e);return n===t&&(t=0),Math.random()*(n-t)+t}function i(e){return"number"==typeof e?e:o(e)}function a(e){return"number"==typeof e?e:e.min}function r(e){return"number"==typeof e?e:e.max}function u(e,n){if(e===n||void 0===n&&"number"==typeof e)return e;const t=a(e),o=r(e);return void 0!==n?{min:Math.min(t,n),max:Math.max(o,n)}:u(t,o)}new WeakMap;class d{constructor(e){this.container=e}init(){}isEnabled(e){return!e.destroyed}update(e,n){if(!this.isEnabled(e))return;const t=e.life;let a=!1;if(e.spawning){if(t.delayTime+=n.value,!(t.delayTime>=e.life.delay))return;a=!0,e.spawning=!1,t.delayTime=0,t.time=0}if(-1===t.duration)return;if(e.spawning)return;if(a?t.time=0:t.time+=n.value,t.time<t.duration)return;if(t.time=0,e.life.count>0&&e.life.count--,0===e.life.count)return void e.destroy();const r=this.container.canvas.size,d=u(0,r.width),l=u(0,r.width);e.position.x=o(d),e.position.y=o(l),e.spawning=!0,t.delayTime=0,t.time=0,e.reset();const c=e.options.life;t.delay=1e3*i(c.delay.value),t.duration=1e3*i(c.duration.value)}}async function l(e){await e.addParticleUpdater("life",(e=>new d(e)))}return n}()}));
@@ -544,20 +544,20 @@
544
544
  }
545
545
  }
546
546
  }
547
- externalInteract(delta) {
547
+ async externalInteract(delta) {
548
548
  for (const interactor of this.externalInteractors) {
549
549
  if (interactor.isEnabled()) {
550
- interactor.interact(delta);
550
+ await interactor.interact(delta);
551
551
  }
552
552
  }
553
553
  }
554
- particlesInteract(particle, delta) {
554
+ async particlesInteract(particle, delta) {
555
555
  for (const interactor of this.externalInteractors) {
556
556
  interactor.reset(particle);
557
557
  }
558
558
  for (const interactor of this.particleInteractors) {
559
559
  if (interactor.isEnabled(particle)) {
560
- interactor.interact(particle, delta);
560
+ await interactor.interact(particle, delta);
561
561
  }
562
562
  }
563
563
  }
@@ -2714,10 +2714,10 @@
2714
2714
  return this.getRadius() ** 2 * Math.PI / 2;
2715
2715
  }
2716
2716
  getFillColor() {
2717
- var _a, _b, _c;
2717
+ var _a, _b;
2718
2718
  const color = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.color);
2719
2719
  if (color && this.roll && (this.backColor || this.roll.alter)) {
2720
- const rolled = Math.floor(((_c = (_b = this.roll) === null || _b === void 0 ? void 0 : _b.angle) !== null && _c !== void 0 ? _c : 0) / (Math.PI / 2)) % 2;
2720
+ const backFactor = this.options.roll.mode === "both" ? 2 : 1, backSum = this.options.roll.mode === "horizontal" ? Math.PI / 2 : 0, rolled = Math.floor((((_b = this.roll.angle) !== null && _b !== void 0 ? _b : 0) + backSum) / (Math.PI / backFactor)) % 2;
2721
2721
  if (rolled) {
2722
2722
  if (this.backColor) {
2723
2723
  return this.backColor;
@@ -2949,10 +2949,10 @@
2949
2949
  }
2950
2950
  container.pathGenerator.init(container);
2951
2951
  }
2952
- redraw() {
2952
+ async redraw() {
2953
2953
  this.clear();
2954
2954
  this.init();
2955
- this.draw({
2955
+ await this.draw({
2956
2956
  value: 0,
2957
2957
  factor: 0
2958
2958
  });
@@ -2977,7 +2977,7 @@
2977
2977
  remove(particle, group, override) {
2978
2978
  this.removeAt(this.array.indexOf(particle), undefined, group, override);
2979
2979
  }
2980
- update(delta) {
2980
+ async update(delta) {
2981
2981
  const container = this.container;
2982
2982
  const particlesToDelete = [];
2983
2983
  container.pathGenerator.update();
@@ -3011,23 +3011,23 @@
3011
3011
  for (const particle of particlesToDelete) {
3012
3012
  this.remove(particle);
3013
3013
  }
3014
- this.interactionManager.externalInteract(delta);
3014
+ await this.interactionManager.externalInteract(delta);
3015
3015
  for (const particle of container.particles.array) {
3016
3016
  for (const updater of this.updaters) {
3017
3017
  updater.update(particle, delta);
3018
3018
  }
3019
3019
  if (!particle.destroyed && !particle.spawning) {
3020
- this.interactionManager.particlesInteract(particle, delta);
3020
+ await this.interactionManager.particlesInteract(particle, delta);
3021
3021
  }
3022
3022
  }
3023
3023
  delete container.canvas.resizeFactor;
3024
3024
  }
3025
- draw(delta) {
3025
+ async draw(delta) {
3026
3026
  const container = this.container;
3027
3027
  container.canvas.clear();
3028
3028
  const canvasSize = this.container.canvas.size;
3029
3029
  this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
3030
- this.update(delta);
3030
+ await this.update(delta);
3031
3031
  if (this.needsSort) {
3032
3032
  this.zArray.sort(((a, b) => b.position.z - a.position.z || a.id - b.id));
3033
3033
  this.lastZIndex = this.zArray[this.zArray.length - 1].position.z;
@@ -3388,12 +3388,12 @@
3388
3388
  }
3389
3389
  draw(force) {
3390
3390
  let refreshTime = force;
3391
- this.drawAnimationFrame = animate()((timestamp => {
3391
+ this.drawAnimationFrame = animate()((async timestamp => {
3392
3392
  if (refreshTime) {
3393
3393
  this.lastFrameTime = undefined;
3394
3394
  refreshTime = false;
3395
3395
  }
3396
- this.drawer.nextFrame(timestamp);
3396
+ await this.drawer.nextFrame(timestamp);
3397
3397
  }));
3398
3398
  }
3399
3399
  getAnimationStatus() {
@@ -4910,7 +4910,7 @@
4910
4910
  }
4911
4911
  const minValue = particle.opacity.min;
4912
4912
  const maxValue = particle.opacity.max;
4913
- if (!(!particle.destroyed && particle.opacity.enable && (((_a = particle.opacity.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 || ((_b = particle.opacity.loops) !== null && _b !== void 0 ? _b : 0) < ((_c = particle.opacity.maxLoops) !== null && _c !== void 0 ? _c : 0)))) {
4913
+ if (particle.destroyed || !particle.opacity.enable || ((_a = particle.opacity.maxLoops) !== null && _a !== void 0 ? _a : 0) > 0 && ((_b = particle.opacity.loops) !== null && _b !== void 0 ? _b : 0) > ((_c = particle.opacity.maxLoops) !== null && _c !== void 0 ? _c : 0)) {
4914
4914
  return;
4915
4915
  }
4916
4916
  switch (particle.opacity.status) {
@@ -4987,8 +4987,8 @@
4987
4987
  }
4988
4988
  }
4989
4989
  isEnabled(particle) {
4990
- var _a, _b, _c;
4991
- return !particle.destroyed && !particle.spawning && !!particle.opacity && particle.opacity.enable && (((_a = particle.opacity.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 || ((_b = particle.opacity.loops) !== null && _b !== void 0 ? _b : 0) < ((_c = particle.opacity.maxLoops) !== null && _c !== void 0 ? _c : 0));
4990
+ var _a, _b, _c, _d;
4991
+ return !particle.destroyed && !particle.spawning && !!particle.opacity && particle.opacity.enable && (((_a = particle.opacity.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 || ((_b = particle.opacity.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 && ((_c = particle.opacity.loops) !== null && _c !== void 0 ? _c : 0) < ((_d = particle.opacity.maxLoops) !== null && _d !== void 0 ? _d : 0));
4992
4992
  }
4993
4993
  update(particle, delta) {
4994
4994
  if (!this.isEnabled(particle)) {
@@ -1,2 +1,2 @@
1
- /*! tsParticles v1.41.0 by Matteo Bruni */
2
- !function(o,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e=t();for(var a in e)("object"==typeof exports?exports:o)[a]=e[a]}}(window,(function(){return function(){"use strict";var o={d:function(t,e){for(var a in e)o.o(e,a)&&!o.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},o:function(o,t){return Object.prototype.hasOwnProperty.call(o,t)},r:function(o){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})}},t={};o.r(t),o.d(t,{loadOpacityUpdater:function(){return s}});class e{}e.generatedAttribute="generated",e.randomColorValue="random",e.midColorValue="mid",e.touchEndEvent="touchend",e.mouseDownEvent="mousedown",e.mouseUpEvent="mouseup",e.mouseMoveEvent="mousemove",e.touchStartEvent="touchstart",e.touchMoveEvent="touchmove",e.mouseLeaveEvent="mouseleave",e.mouseOutEvent="mouseout",e.touchCancelEvent="touchcancel",e.resizeEvent="resize",e.visibilityChangeEvent="visibilitychange",e.noPolygonDataLoaded="No polygon data loaded.",e.noPolygonFound="No polygon found, you need to specify SVG url in config.";new WeakMap;new WeakMap;new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;function a(o){const t=c(o);let e=i(o);return t===e&&(e=0),Math.random()*(t-e)+e}function n(o){return"number"==typeof o?o:a(o)}function i(o){return"number"==typeof o?o:o.min}function c(o){return"number"==typeof o?o:o.max}function u(o,t){var e,a,n,i,c;if(!o.opacity)return;const u=o.opacity.min,p=o.opacity.max;if(!o.destroyed&&o.opacity.enable&&((null!==(e=o.opacity.maxLoops)&&void 0!==e?e:0)<=0||(null!==(a=o.opacity.loops)&&void 0!==a?a:0)<(null!==(n=o.opacity.maxLoops)&&void 0!==n?n:0))){switch(o.opacity.status){case 0:o.opacity.value>=p?(o.opacity.status=1,o.opacity.loops||(o.opacity.loops=0),o.opacity.loops++):o.opacity.value+=(null!==(i=o.opacity.velocity)&&void 0!==i?i:0)*t.factor;break;case 1:o.opacity.value<=u?(o.opacity.status=0,o.opacity.loops||(o.opacity.loops=0),o.opacity.loops++):o.opacity.value-=(null!==(c=o.opacity.velocity)&&void 0!==c?c:0)*t.factor}var s,r,l;!function(o,t,e,a){switch(o.options.opacity.animation.destroy){case"max":t>=a&&o.destroy();break;case"min":t<=e&&o.destroy()}}(o,o.opacity.value,u,p),o.destroyed||(o.opacity.value=(s=o.opacity.value,r=u,l=p,Math.min(Math.max(s,r),l)))}}new WeakMap;class p{constructor(o){this.container=o}init(o){const t=o.options.opacity;o.opacity={enable:t.animation.enable,max:c(t.value),min:i(t.value),value:n(t.value),loops:0,maxLoops:t.animation.count};const e=t.animation;if(e.enable){o.opacity.status=0;const n=t.value;switch(o.opacity.min=i(n),o.opacity.max=c(n),e.startValue){case"min":o.opacity.value=o.opacity.min,o.opacity.status=0;break;case"random":o.opacity.value=a(o.opacity),o.opacity.status=Math.random()>=.5?0:1;break;case"max":default:o.opacity.value=o.opacity.max,o.opacity.status=1}o.opacity.velocity=e.speed/100*this.container.retina.reduceFactor,e.sync||(o.opacity.velocity*=Math.random())}}isEnabled(o){var t,e,a;return!o.destroyed&&!o.spawning&&!!o.opacity&&o.opacity.enable&&((null!==(t=o.opacity.maxLoops)&&void 0!==t?t:0)<=0||(null!==(e=o.opacity.loops)&&void 0!==e?e:0)<(null!==(a=o.opacity.maxLoops)&&void 0!==a?a:0))}update(o,t){this.isEnabled(o)&&u(o,t)}}async function s(o){await o.addParticleUpdater("opacity",(o=>new p(o)))}return t}()}));
1
+ /*! tsParticles v1.41.4 by Matteo Bruni */
2
+ !function(o,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e=t();for(var a in e)("object"==typeof exports?exports:o)[a]=e[a]}}(window,(function(){return function(){"use strict";var o={d:function(t,e){for(var a in e)o.o(e,a)&&!o.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},o:function(o,t){return Object.prototype.hasOwnProperty.call(o,t)},r:function(o){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})}},t={};o.r(t),o.d(t,{loadOpacityUpdater:function(){return s}});class e{}e.generatedAttribute="generated",e.randomColorValue="random",e.midColorValue="mid",e.touchEndEvent="touchend",e.mouseDownEvent="mousedown",e.mouseUpEvent="mouseup",e.mouseMoveEvent="mousemove",e.touchStartEvent="touchstart",e.touchMoveEvent="touchmove",e.mouseLeaveEvent="mouseleave",e.mouseOutEvent="mouseout",e.touchCancelEvent="touchcancel",e.resizeEvent="resize",e.visibilityChangeEvent="visibilitychange",e.noPolygonDataLoaded="No polygon data loaded.",e.noPolygonFound="No polygon found, you need to specify SVG url in config.";new WeakMap;new WeakMap;new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;function a(o){const t=c(o);let e=i(o);return t===e&&(e=0),Math.random()*(t-e)+e}function n(o){return"number"==typeof o?o:a(o)}function i(o){return"number"==typeof o?o:o.min}function c(o){return"number"==typeof o?o:o.max}function p(o,t){var e,a,n,i,c;if(!o.opacity)return;const p=o.opacity.min,u=o.opacity.max;if(!(o.destroyed||!o.opacity.enable||(null!==(e=o.opacity.maxLoops)&&void 0!==e?e:0)>0&&(null!==(a=o.opacity.loops)&&void 0!==a?a:0)>(null!==(n=o.opacity.maxLoops)&&void 0!==n?n:0))){switch(o.opacity.status){case 0:o.opacity.value>=u?(o.opacity.status=1,o.opacity.loops||(o.opacity.loops=0),o.opacity.loops++):o.opacity.value+=(null!==(i=o.opacity.velocity)&&void 0!==i?i:0)*t.factor;break;case 1:o.opacity.value<=p?(o.opacity.status=0,o.opacity.loops||(o.opacity.loops=0),o.opacity.loops++):o.opacity.value-=(null!==(c=o.opacity.velocity)&&void 0!==c?c:0)*t.factor}var s,r,l;!function(o,t,e,a){switch(o.options.opacity.animation.destroy){case"max":t>=a&&o.destroy();break;case"min":t<=e&&o.destroy()}}(o,o.opacity.value,p,u),o.destroyed||(o.opacity.value=(s=o.opacity.value,r=p,l=u,Math.min(Math.max(s,r),l)))}}new WeakMap;class u{constructor(o){this.container=o}init(o){const t=o.options.opacity;o.opacity={enable:t.animation.enable,max:c(t.value),min:i(t.value),value:n(t.value),loops:0,maxLoops:t.animation.count};const e=t.animation;if(e.enable){o.opacity.status=0;const n=t.value;switch(o.opacity.min=i(n),o.opacity.max=c(n),e.startValue){case"min":o.opacity.value=o.opacity.min,o.opacity.status=0;break;case"random":o.opacity.value=a(o.opacity),o.opacity.status=Math.random()>=.5?0:1;break;case"max":default:o.opacity.value=o.opacity.max,o.opacity.status=1}o.opacity.velocity=e.speed/100*this.container.retina.reduceFactor,e.sync||(o.opacity.velocity*=Math.random())}}isEnabled(o){var t,e,a,n;return!o.destroyed&&!o.spawning&&!!o.opacity&&o.opacity.enable&&((null!==(t=o.opacity.maxLoops)&&void 0!==t?t:0)<=0||(null!==(e=o.opacity.maxLoops)&&void 0!==e?e:0)>0&&(null!==(a=o.opacity.loops)&&void 0!==a?a:0)<(null!==(n=o.opacity.maxLoops)&&void 0!==n?n:0))}update(o,t){this.isEnabled(o)&&p(o,t)}}async function s(o){await o.addParticleUpdater("opacity",(o=>new u(o)))}return t}()}));
@@ -544,20 +544,20 @@
544
544
  }
545
545
  }
546
546
  }
547
- externalInteract(delta) {
547
+ async externalInteract(delta) {
548
548
  for (const interactor of this.externalInteractors) {
549
549
  if (interactor.isEnabled()) {
550
- interactor.interact(delta);
550
+ await interactor.interact(delta);
551
551
  }
552
552
  }
553
553
  }
554
- particlesInteract(particle, delta) {
554
+ async particlesInteract(particle, delta) {
555
555
  for (const interactor of this.externalInteractors) {
556
556
  interactor.reset(particle);
557
557
  }
558
558
  for (const interactor of this.particleInteractors) {
559
559
  if (interactor.isEnabled(particle)) {
560
- interactor.interact(particle, delta);
560
+ await interactor.interact(particle, delta);
561
561
  }
562
562
  }
563
563
  }
@@ -2714,10 +2714,10 @@
2714
2714
  return this.getRadius() ** 2 * Math.PI / 2;
2715
2715
  }
2716
2716
  getFillColor() {
2717
- var _a, _b, _c;
2717
+ var _a, _b;
2718
2718
  const color = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.color);
2719
2719
  if (color && this.roll && (this.backColor || this.roll.alter)) {
2720
- const rolled = Math.floor(((_c = (_b = this.roll) === null || _b === void 0 ? void 0 : _b.angle) !== null && _c !== void 0 ? _c : 0) / (Math.PI / 2)) % 2;
2720
+ const backFactor = this.options.roll.mode === "both" ? 2 : 1, backSum = this.options.roll.mode === "horizontal" ? Math.PI / 2 : 0, rolled = Math.floor((((_b = this.roll.angle) !== null && _b !== void 0 ? _b : 0) + backSum) / (Math.PI / backFactor)) % 2;
2721
2721
  if (rolled) {
2722
2722
  if (this.backColor) {
2723
2723
  return this.backColor;
@@ -2949,10 +2949,10 @@
2949
2949
  }
2950
2950
  container.pathGenerator.init(container);
2951
2951
  }
2952
- redraw() {
2952
+ async redraw() {
2953
2953
  this.clear();
2954
2954
  this.init();
2955
- this.draw({
2955
+ await this.draw({
2956
2956
  value: 0,
2957
2957
  factor: 0
2958
2958
  });
@@ -2977,7 +2977,7 @@
2977
2977
  remove(particle, group, override) {
2978
2978
  this.removeAt(this.array.indexOf(particle), undefined, group, override);
2979
2979
  }
2980
- update(delta) {
2980
+ async update(delta) {
2981
2981
  const container = this.container;
2982
2982
  const particlesToDelete = [];
2983
2983
  container.pathGenerator.update();
@@ -3011,23 +3011,23 @@
3011
3011
  for (const particle of particlesToDelete) {
3012
3012
  this.remove(particle);
3013
3013
  }
3014
- this.interactionManager.externalInteract(delta);
3014
+ await this.interactionManager.externalInteract(delta);
3015
3015
  for (const particle of container.particles.array) {
3016
3016
  for (const updater of this.updaters) {
3017
3017
  updater.update(particle, delta);
3018
3018
  }
3019
3019
  if (!particle.destroyed && !particle.spawning) {
3020
- this.interactionManager.particlesInteract(particle, delta);
3020
+ await this.interactionManager.particlesInteract(particle, delta);
3021
3021
  }
3022
3022
  }
3023
3023
  delete container.canvas.resizeFactor;
3024
3024
  }
3025
- draw(delta) {
3025
+ async draw(delta) {
3026
3026
  const container = this.container;
3027
3027
  container.canvas.clear();
3028
3028
  const canvasSize = this.container.canvas.size;
3029
3029
  this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
3030
- this.update(delta);
3030
+ await this.update(delta);
3031
3031
  if (this.needsSort) {
3032
3032
  this.zArray.sort(((a, b) => b.position.z - a.position.z || a.id - b.id));
3033
3033
  this.lastZIndex = this.zArray[this.zArray.length - 1].position.z;
@@ -3388,12 +3388,12 @@
3388
3388
  }
3389
3389
  draw(force) {
3390
3390
  let refreshTime = force;
3391
- this.drawAnimationFrame = animate()((timestamp => {
3391
+ this.drawAnimationFrame = animate()((async timestamp => {
3392
3392
  if (refreshTime) {
3393
3393
  this.lastFrameTime = undefined;
3394
3394
  refreshTime = false;
3395
3395
  }
3396
- this.drawer.nextFrame(timestamp);
3396
+ await this.drawer.nextFrame(timestamp);
3397
3397
  }));
3398
3398
  }
3399
3399
  getAnimationStatus() {
@@ -1,2 +1,2 @@
1
- /*! tsParticles v1.41.0 by Matteo Bruni */
1
+ /*! tsParticles v1.41.4 by Matteo Bruni */
2
2
  !function(t,o){if("object"==typeof exports&&"object"==typeof module)module.exports=o();else if("function"==typeof define&&define.amd)define([],o);else{var e=o();for(var i in e)("object"==typeof exports?exports:t)[i]=e[i]}}(window,(function(){return function(){"use strict";var t={d:function(o,e){for(var i in e)t.o(e,i)&&!t.o(o,i)&&Object.defineProperty(o,i,{enumerable:!0,get:e[i]})},o:function(t,o){return Object.prototype.hasOwnProperty.call(t,o)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},o={};t.r(o),t.d(o,{loadOutModesUpdater:function(){return c}});class e{}e.generatedAttribute="generated",e.randomColorValue="random",e.midColorValue="mid",e.touchEndEvent="touchend",e.mouseDownEvent="mousedown",e.mouseUpEvent="mouseup",e.mouseMoveEvent="mousemove",e.touchStartEvent="touchstart",e.touchMoveEvent="touchmove",e.mouseLeaveEvent="mouseleave",e.mouseOutEvent="mouseout",e.touchCancelEvent="touchcancel",e.resizeEvent="resize",e.visibilityChangeEvent="visibilitychange",e.noPolygonDataLoaded="No polygon data loaded.",e.noPolygonFound="No polygon found, you need to specify SVG url in config.";new WeakMap;new WeakMap;new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;function i(t){return"number"==typeof t?t:function(t){const o=s(t);let e=n(t);return o===e&&(e=0),Math.random()*(o-e)+e}(t)}function n(t){return"number"==typeof t?t:t.min}function s(t){return"number"==typeof t?t:t.max}function a(t,o,e,i){return function(t,o,e){let i=!0;e&&"bottom"!==e||(i=t.top<o.height);!i||e&&"left"!==e||(i=t.right>0);!i||e&&"right"!==e||(i=t.left<o.width);!i||e&&"top"!==e||(i=t.bottom>0);return i}(r(t,null!=e?e:0),o,i)}function r(t,o){return{bottom:t.y+o,left:t.x-o,right:t.x+o,top:t.y-o}}new WeakMap;class u{constructor(t){this.container=t}init(){}isEnabled(t){return!t.destroyed&&!t.spawning}update(t,o){var e,i,n,s;const a=t.options.move.outModes;this.updateOutMode(t,o,null!==(e=a.bottom)&&void 0!==e?e:a.default,"bottom"),this.updateOutMode(t,o,null!==(i=a.left)&&void 0!==i?i:a.default,"left"),this.updateOutMode(t,o,null!==(n=a.right)&&void 0!==n?n:a.default,"right"),this.updateOutMode(t,o,null!==(s=a.top)&&void 0!==s?s:a.default,"top")}updateOutMode(t,o,e,i){switch(e){case"bounce":case"bounce-vertical":case"bounce-horizontal":case"bounceVertical":case"bounceHorizontal":case"split":this.bounce(t,o,i,e);break;case"destroy":this.destroy(t,i);break;case"out":this.out(t,i);break;case"none":default:this.none(t,i)}}destroy(t,o){const e=this.container;a(t.position,e.canvas.size,t.getRadius(),o)||e.particles.remove(t,void 0,!0)}out(t,o){const e=this.container;if(a(t.position,e.canvas.size,t.getRadius(),o))return;const i=t.options.move.warp,n=e.canvas.size,s={bottom:n.height+t.getRadius()+t.offset.y,left:-t.getRadius()-t.offset.x,right:n.width+t.getRadius()+t.offset.x,top:-t.getRadius()-t.offset.y},u=t.getRadius(),c=r(t.position,u);"right"===o&&c.left>n.width+t.offset.x?(t.position.x=s.left,t.initialPosition.x=t.position.x,i||(t.position.y=Math.random()*n.height,t.initialPosition.y=t.position.y)):"left"===o&&c.right<-t.offset.x&&(t.position.x=s.right,t.initialPosition.x=t.position.x,i||(t.position.y=Math.random()*n.height,t.initialPosition.y=t.position.y)),"bottom"===o&&c.top>n.height+t.offset.y?(i||(t.position.x=Math.random()*n.width,t.initialPosition.x=t.position.x),t.position.y=s.top,t.initialPosition.y=t.position.y):"top"===o&&c.bottom<-t.offset.y&&(i||(t.position.x=Math.random()*n.width,t.initialPosition.x=t.position.x),t.position.y=s.bottom,t.initialPosition.y=t.position.y)}bounce(t,o,e,n){const s=this.container;let a=!1;for(const[,i]of s.plugins)if(void 0!==i.particleBounce&&(a=i.particleBounce(t,o,e)),a)break;if(a)return;const u=t.getPosition(),c=t.offset,d=t.getRadius(),l=r(u,d),p=s.canvas.size;!function(t){if("bounce"!==t.outMode&&"bounce-horizontal"!==t.outMode&&"bounceHorizontal"!==t.outMode&&"split"!==t.outMode)return;const o=t.particle.velocity.x;let e=!1;if("right"===t.direction&&t.bounds.right>=t.canvasSize.width&&o>0||"left"===t.direction&&t.bounds.left<=0&&o<0){const o=i(t.particle.options.bounce.horizontal.value);t.particle.velocity.x*=-o,e=!0}if(!e)return;const n=t.offset.x+t.size;t.bounds.right>=t.canvasSize.width?t.particle.position.x=t.canvasSize.width-n:t.bounds.left<=0&&(t.particle.position.x=n),"split"===t.outMode&&t.particle.destroy()}({particle:t,outMode:n,direction:e,bounds:l,canvasSize:p,offset:c,size:d}),function(t){if("bounce"===t.outMode||"bounce-vertical"===t.outMode||"bounceVertical"===t.outMode||"split"===t.outMode){const o=t.particle.velocity.y;let e=!1;if("bottom"===t.direction&&t.bounds.bottom>=t.canvasSize.height&&o>0||"top"===t.direction&&t.bounds.top<=0&&o<0){const o=i(t.particle.options.bounce.vertical.value);t.particle.velocity.y*=-o,e=!0}if(!e)return;const n=t.offset.y+t.size;t.bounds.bottom>=t.canvasSize.height?t.particle.position.y=t.canvasSize.height-n:t.bounds.top<=0&&(t.particle.position.y=n),"split"===t.outMode&&t.particle.destroy()}}({particle:t,outMode:n,direction:e,bounds:l,canvasSize:p,offset:c,size:d})}none(t,o){if(t.options.move.distance.horizontal&&("left"===o||"right"===o)||t.options.move.distance.vertical&&("top"===o||"bottom"===o))return;const e=t.options.move.gravity,i=this.container,n=i.canvas.size,s=t.getRadius();if(e.enable){const a=t.position;(!e.inverse&&a.y>n.height+s&&"bottom"===o||e.inverse&&a.y<-s&&"top"===o)&&i.particles.remove(t)}else{if(t.velocity.y>0&&t.position.y<=n.height+s||t.velocity.y<0&&t.position.y>=-s||t.velocity.x>0&&t.position.x<=n.width+s||t.velocity.x<0&&t.position.x>=-s)return;a(t.position,i.canvas.size,s,o)||i.particles.remove(t)}}}async function c(t){await t.addParticleUpdater("outModes",(t=>new u(t)))}return o}()}));