tsparticles 1.41.4 → 1.42.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 (302) hide show
  1. package/Core/Canvas.js +4 -5
  2. package/Core/Interfaces/ICoordinates.d.ts +8 -0
  3. package/Core/Interfaces/IParticleGravity.d.ts +5 -0
  4. package/Core/Interfaces/IParticleGravity.js +2 -0
  5. package/Core/Interfaces/index.d.ts +1 -0
  6. package/Core/Interfaces/index.js +1 -0
  7. package/Core/Particle.d.ts +3 -1
  8. package/Core/Particle.js +9 -7
  9. package/Core/Particles.js +2 -1
  10. package/Core/Retina.js +7 -7
  11. package/Core/Utils/ParticlesMover.js +2 -2
  12. package/Interactions/Particles/Links/LinkInstance.js +1 -1
  13. package/Options/Classes/AnimatableGradient.d.ts +4 -4
  14. package/Options/Classes/AnimatableGradient.js +4 -4
  15. package/Options/Classes/AnimationOptions.d.ts +5 -5
  16. package/Options/Classes/AnimationOptions.js +3 -2
  17. package/Options/Classes/ColorAnimation.d.ts +2 -2
  18. package/Options/Classes/ColorAnimation.js +2 -2
  19. package/Options/Classes/Particles/Move/Attract.d.ts +2 -2
  20. package/Options/Classes/Particles/Move/Attract.js +2 -1
  21. package/Options/Classes/Particles/Move/MoveAngle.d.ts +3 -3
  22. package/Options/Classes/Particles/Move/MoveAngle.js +3 -2
  23. package/Options/Classes/Particles/Move/MoveGravity.d.ts +5 -5
  24. package/Options/Classes/Particles/Move/MoveGravity.js +3 -2
  25. package/Options/Classes/Particles/Orbit/Orbit.d.ts +4 -4
  26. package/Options/Classes/Particles/Orbit/Orbit.js +4 -3
  27. package/Options/Classes/Particles/Repulse/Repulse.d.ts +5 -5
  28. package/Options/Classes/Particles/Repulse/Repulse.js +5 -4
  29. package/Options/Classes/Particles/Roll/RollLight.d.ts +2 -2
  30. package/Options/Classes/Particles/Roll/RollLight.js +2 -1
  31. package/Options/Classes/Particles/Rotate/RotateAnimation.d.ts +2 -2
  32. package/Options/Classes/Particles/Rotate/RotateAnimation.js +2 -1
  33. package/Options/Classes/Particles/Tilt/TiltAnimation.d.ts +2 -2
  34. package/Options/Classes/Particles/Tilt/TiltAnimation.js +2 -1
  35. package/Options/Classes/Particles/Twinkle/TwinkleValues.d.ts +2 -2
  36. package/Options/Classes/Particles/Twinkle/TwinkleValues.js +2 -1
  37. package/Options/Interfaces/IAnimation.d.ts +3 -2
  38. package/Options/Interfaces/Particles/Move/IAttract.d.ts +3 -2
  39. package/Options/Interfaces/Particles/Move/IMoveAngle.d.ts +3 -2
  40. package/Options/Interfaces/Particles/Move/IMoveGravity.d.ts +3 -2
  41. package/Options/Interfaces/Particles/Orbit/IOrbit.d.ts +4 -3
  42. package/Options/Interfaces/Particles/Repulse/IRepulse.d.ts +5 -4
  43. package/Options/Interfaces/Particles/Roll/IRollLight.d.ts +2 -1
  44. package/Options/Interfaces/Particles/Rotate/IRotateAnimation.d.ts +2 -1
  45. package/Options/Interfaces/Particles/Tilt/ITiltAnimation.d.ts +2 -1
  46. package/Options/Interfaces/Particles/Twinkle/ITwinkleValues.d.ts +3 -2
  47. package/Plugins/Absorbers/AbsorberInstance.js +1 -1
  48. package/Plugins/Absorbers/Options/Classes/Absorber.d.ts +2 -2
  49. package/Plugins/Absorbers/Options/Classes/Absorber.js +8 -4
  50. package/Plugins/Absorbers/Options/Interfaces/IAbsorber.d.ts +2 -2
  51. package/Plugins/Emitters/EmitterInstance.js +11 -10
  52. package/Plugins/Emitters/Options/Classes/Emitter.d.ts +2 -2
  53. package/Plugins/Emitters/Options/Classes/Emitter.js +8 -5
  54. package/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +2 -2
  55. package/Updaters/Angle/AngleUpdater.js +2 -1
  56. package/Updaters/Opacity/OpacityUpdater.js +3 -2
  57. package/Updaters/Roll/RollUpdater.js +3 -3
  58. package/Updaters/Tilt/TiltUpdater.js +1 -1
  59. package/Utils/ColorUtils.js +1 -1
  60. package/browser/Core/Canvas.js +5 -6
  61. package/browser/Core/Interfaces/ICoordinates.d.ts +8 -0
  62. package/browser/Core/Interfaces/IParticleGravity.d.ts +5 -0
  63. package/browser/Core/Interfaces/IParticleGravity.js +1 -0
  64. package/browser/Core/Interfaces/index.d.ts +1 -0
  65. package/browser/Core/Interfaces/index.js +1 -0
  66. package/browser/Core/Particle.d.ts +3 -1
  67. package/browser/Core/Particle.js +9 -7
  68. package/browser/Core/Particles.js +2 -1
  69. package/browser/Core/Retina.js +7 -7
  70. package/browser/Core/Utils/ParticlesMover.js +2 -2
  71. package/browser/Interactions/Particles/Links/LinkInstance.js +2 -2
  72. package/browser/Options/Classes/AnimatableGradient.d.ts +4 -4
  73. package/browser/Options/Classes/AnimatableGradient.js +4 -4
  74. package/browser/Options/Classes/AnimationOptions.d.ts +5 -5
  75. package/browser/Options/Classes/AnimationOptions.js +3 -2
  76. package/browser/Options/Classes/ColorAnimation.d.ts +2 -2
  77. package/browser/Options/Classes/ColorAnimation.js +2 -2
  78. package/browser/Options/Classes/Particles/Move/Attract.d.ts +2 -2
  79. package/browser/Options/Classes/Particles/Move/Attract.js +2 -1
  80. package/browser/Options/Classes/Particles/Move/MoveAngle.d.ts +3 -3
  81. package/browser/Options/Classes/Particles/Move/MoveAngle.js +3 -2
  82. package/browser/Options/Classes/Particles/Move/MoveGravity.d.ts +5 -5
  83. package/browser/Options/Classes/Particles/Move/MoveGravity.js +3 -2
  84. package/browser/Options/Classes/Particles/Orbit/Orbit.d.ts +4 -4
  85. package/browser/Options/Classes/Particles/Orbit/Orbit.js +4 -3
  86. package/browser/Options/Classes/Particles/Repulse/Repulse.d.ts +5 -5
  87. package/browser/Options/Classes/Particles/Repulse/Repulse.js +5 -4
  88. package/browser/Options/Classes/Particles/Roll/RollLight.d.ts +2 -2
  89. package/browser/Options/Classes/Particles/Roll/RollLight.js +2 -1
  90. package/browser/Options/Classes/Particles/Rotate/RotateAnimation.d.ts +2 -2
  91. package/browser/Options/Classes/Particles/Rotate/RotateAnimation.js +2 -1
  92. package/browser/Options/Classes/Particles/Tilt/TiltAnimation.d.ts +2 -2
  93. package/browser/Options/Classes/Particles/Tilt/TiltAnimation.js +2 -1
  94. package/browser/Options/Classes/Particles/Twinkle/TwinkleValues.d.ts +2 -2
  95. package/browser/Options/Classes/Particles/Twinkle/TwinkleValues.js +2 -1
  96. package/browser/Options/Interfaces/IAnimation.d.ts +3 -2
  97. package/browser/Options/Interfaces/Particles/Move/IAttract.d.ts +3 -2
  98. package/browser/Options/Interfaces/Particles/Move/IMoveAngle.d.ts +3 -2
  99. package/browser/Options/Interfaces/Particles/Move/IMoveGravity.d.ts +3 -2
  100. package/browser/Options/Interfaces/Particles/Orbit/IOrbit.d.ts +4 -3
  101. package/browser/Options/Interfaces/Particles/Repulse/IRepulse.d.ts +5 -4
  102. package/browser/Options/Interfaces/Particles/Roll/IRollLight.d.ts +2 -1
  103. package/browser/Options/Interfaces/Particles/Rotate/IRotateAnimation.d.ts +2 -1
  104. package/browser/Options/Interfaces/Particles/Tilt/ITiltAnimation.d.ts +2 -1
  105. package/browser/Options/Interfaces/Particles/Twinkle/ITwinkleValues.d.ts +3 -2
  106. package/browser/Plugins/Absorbers/AbsorberInstance.js +1 -1
  107. package/browser/Plugins/Absorbers/Options/Classes/Absorber.d.ts +2 -2
  108. package/browser/Plugins/Absorbers/Options/Classes/Absorber.js +8 -4
  109. package/browser/Plugins/Absorbers/Options/Interfaces/IAbsorber.d.ts +2 -2
  110. package/browser/Plugins/Emitters/EmitterInstance.js +11 -10
  111. package/browser/Plugins/Emitters/Options/Classes/Emitter.d.ts +2 -2
  112. package/browser/Plugins/Emitters/Options/Classes/Emitter.js +8 -5
  113. package/browser/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +2 -2
  114. package/browser/Updaters/Angle/AngleUpdater.js +2 -1
  115. package/browser/Updaters/Opacity/OpacityUpdater.js +3 -2
  116. package/browser/Updaters/Roll/RollUpdater.js +3 -3
  117. package/browser/Updaters/Tilt/TiltUpdater.js +1 -1
  118. package/browser/Utils/ColorUtils.js +2 -2
  119. package/esm/Core/Canvas.js +5 -6
  120. package/esm/Core/Interfaces/ICoordinates.d.ts +8 -0
  121. package/esm/Core/Interfaces/IParticleGravity.d.ts +5 -0
  122. package/esm/Core/Interfaces/IParticleGravity.js +1 -0
  123. package/esm/Core/Interfaces/index.d.ts +1 -0
  124. package/esm/Core/Interfaces/index.js +1 -0
  125. package/esm/Core/Particle.d.ts +3 -1
  126. package/esm/Core/Particle.js +9 -7
  127. package/esm/Core/Particles.js +2 -1
  128. package/esm/Core/Retina.js +7 -7
  129. package/esm/Core/Utils/ParticlesMover.js +2 -2
  130. package/esm/Interactions/Particles/Links/LinkInstance.js +2 -2
  131. package/esm/Options/Classes/AnimatableGradient.d.ts +4 -4
  132. package/esm/Options/Classes/AnimatableGradient.js +4 -4
  133. package/esm/Options/Classes/AnimationOptions.d.ts +5 -5
  134. package/esm/Options/Classes/AnimationOptions.js +3 -2
  135. package/esm/Options/Classes/ColorAnimation.d.ts +2 -2
  136. package/esm/Options/Classes/ColorAnimation.js +2 -2
  137. package/esm/Options/Classes/Particles/Move/Attract.d.ts +2 -2
  138. package/esm/Options/Classes/Particles/Move/Attract.js +2 -1
  139. package/esm/Options/Classes/Particles/Move/MoveAngle.d.ts +3 -3
  140. package/esm/Options/Classes/Particles/Move/MoveAngle.js +3 -2
  141. package/esm/Options/Classes/Particles/Move/MoveGravity.d.ts +5 -5
  142. package/esm/Options/Classes/Particles/Move/MoveGravity.js +3 -2
  143. package/esm/Options/Classes/Particles/Orbit/Orbit.d.ts +4 -4
  144. package/esm/Options/Classes/Particles/Orbit/Orbit.js +4 -3
  145. package/esm/Options/Classes/Particles/Repulse/Repulse.d.ts +5 -5
  146. package/esm/Options/Classes/Particles/Repulse/Repulse.js +5 -4
  147. package/esm/Options/Classes/Particles/Roll/RollLight.d.ts +2 -2
  148. package/esm/Options/Classes/Particles/Roll/RollLight.js +2 -1
  149. package/esm/Options/Classes/Particles/Rotate/RotateAnimation.d.ts +2 -2
  150. package/esm/Options/Classes/Particles/Rotate/RotateAnimation.js +2 -1
  151. package/esm/Options/Classes/Particles/Tilt/TiltAnimation.d.ts +2 -2
  152. package/esm/Options/Classes/Particles/Tilt/TiltAnimation.js +2 -1
  153. package/esm/Options/Classes/Particles/Twinkle/TwinkleValues.d.ts +2 -2
  154. package/esm/Options/Classes/Particles/Twinkle/TwinkleValues.js +2 -1
  155. package/esm/Options/Interfaces/IAnimation.d.ts +3 -2
  156. package/esm/Options/Interfaces/Particles/Move/IAttract.d.ts +3 -2
  157. package/esm/Options/Interfaces/Particles/Move/IMoveAngle.d.ts +3 -2
  158. package/esm/Options/Interfaces/Particles/Move/IMoveGravity.d.ts +3 -2
  159. package/esm/Options/Interfaces/Particles/Orbit/IOrbit.d.ts +4 -3
  160. package/esm/Options/Interfaces/Particles/Repulse/IRepulse.d.ts +5 -4
  161. package/esm/Options/Interfaces/Particles/Roll/IRollLight.d.ts +2 -1
  162. package/esm/Options/Interfaces/Particles/Rotate/IRotateAnimation.d.ts +2 -1
  163. package/esm/Options/Interfaces/Particles/Tilt/ITiltAnimation.d.ts +2 -1
  164. package/esm/Options/Interfaces/Particles/Twinkle/ITwinkleValues.d.ts +3 -2
  165. package/esm/Plugins/Absorbers/AbsorberInstance.js +1 -1
  166. package/esm/Plugins/Absorbers/Options/Classes/Absorber.d.ts +2 -2
  167. package/esm/Plugins/Absorbers/Options/Classes/Absorber.js +8 -4
  168. package/esm/Plugins/Absorbers/Options/Interfaces/IAbsorber.d.ts +2 -2
  169. package/esm/Plugins/Emitters/EmitterInstance.js +11 -10
  170. package/esm/Plugins/Emitters/Options/Classes/Emitter.d.ts +2 -2
  171. package/esm/Plugins/Emitters/Options/Classes/Emitter.js +8 -5
  172. package/esm/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +2 -2
  173. package/esm/Updaters/Angle/AngleUpdater.js +2 -1
  174. package/esm/Updaters/Opacity/OpacityUpdater.js +3 -2
  175. package/esm/Updaters/Roll/RollUpdater.js +3 -3
  176. package/esm/Updaters/Tilt/TiltUpdater.js +1 -1
  177. package/esm/Utils/ColorUtils.js +2 -2
  178. package/package.json +1 -1
  179. package/report.html +2 -2
  180. package/report.slim.html +2 -2
  181. package/scripts/install.js +11 -2
  182. package/tsparticles.engine.js +47 -47
  183. package/tsparticles.engine.min.js +2 -2
  184. package/tsparticles.interaction.external.attract.js +319 -36
  185. package/tsparticles.interaction.external.attract.min.js +1 -1
  186. package/tsparticles.interaction.external.bounce.js +319 -36
  187. package/tsparticles.interaction.external.bounce.min.js +1 -1
  188. package/tsparticles.interaction.external.bubble.js +319 -36
  189. package/tsparticles.interaction.external.bubble.min.js +1 -1
  190. package/tsparticles.interaction.external.connect.js +319 -36
  191. package/tsparticles.interaction.external.connect.min.js +1 -1
  192. package/tsparticles.interaction.external.grab.js +319 -36
  193. package/tsparticles.interaction.external.grab.min.js +1 -1
  194. package/tsparticles.interaction.external.repulse.js +319 -36
  195. package/tsparticles.interaction.external.repulse.min.js +1 -1
  196. package/tsparticles.interaction.external.trail.js +319 -36
  197. package/tsparticles.interaction.external.trail.min.js +1 -1
  198. package/tsparticles.interaction.particles.attract.js +319 -36
  199. package/tsparticles.interaction.particles.attract.min.js +1 -1
  200. package/tsparticles.interaction.particles.collisions.js +319 -36
  201. package/tsparticles.interaction.particles.collisions.min.js +1 -1
  202. package/tsparticles.interaction.particles.links.js +320 -37
  203. package/tsparticles.interaction.particles.links.min.js +2 -2
  204. package/tsparticles.js +81 -74
  205. package/tsparticles.min.js +2 -2
  206. package/tsparticles.pathseg.min.js +1 -1
  207. package/tsparticles.plugins.absorbers.js +327 -41
  208. package/tsparticles.plugins.absorbers.min.js +2 -2
  209. package/tsparticles.plugins.emitters.js +438 -151
  210. package/tsparticles.plugins.emitters.min.js +2 -2
  211. package/tsparticles.plugins.polygonMask.js +319 -36
  212. package/tsparticles.plugins.polygonMask.min.js +1 -1
  213. package/tsparticles.shape.circle.min.js +1 -1
  214. package/tsparticles.shape.image.js +319 -36
  215. package/tsparticles.shape.image.min.js +1 -1
  216. package/tsparticles.shape.line.min.js +1 -1
  217. package/tsparticles.shape.polygon.min.js +1 -1
  218. package/tsparticles.shape.square.min.js +1 -1
  219. package/tsparticles.shape.star.min.js +1 -1
  220. package/tsparticles.shape.text.js +319 -36
  221. package/tsparticles.shape.text.min.js +1 -1
  222. package/tsparticles.slim.js +51 -51
  223. package/tsparticles.slim.min.js +2 -2
  224. package/tsparticles.updater.angle.js +320 -37
  225. package/tsparticles.updater.angle.min.js +2 -2
  226. package/tsparticles.updater.color.js +319 -36
  227. package/tsparticles.updater.color.min.js +2 -2
  228. package/tsparticles.updater.life.js +319 -36
  229. package/tsparticles.updater.life.min.js +1 -1
  230. package/tsparticles.updater.opacity.js +321 -38
  231. package/tsparticles.updater.opacity.min.js +2 -2
  232. package/tsparticles.updater.outModes.js +319 -36
  233. package/tsparticles.updater.outModes.min.js +1 -1
  234. package/tsparticles.updater.roll.js +322 -39
  235. package/tsparticles.updater.roll.min.js +2 -2
  236. package/tsparticles.updater.size.js +319 -36
  237. package/tsparticles.updater.size.min.js +1 -1
  238. package/tsparticles.updater.strokeColor.js +319 -36
  239. package/tsparticles.updater.strokeColor.min.js +2 -2
  240. package/tsparticles.updater.tilt.js +320 -37
  241. package/tsparticles.updater.tilt.min.js +2 -2
  242. package/tsparticles.updater.wobble.js +319 -36
  243. package/tsparticles.updater.wobble.min.js +1 -1
  244. package/umd/Core/Canvas.js +4 -5
  245. package/umd/Core/Interfaces/ICoordinates.d.ts +8 -0
  246. package/umd/Core/Interfaces/IParticleGravity.d.ts +5 -0
  247. package/umd/Core/Interfaces/IParticleGravity.js +12 -0
  248. package/umd/Core/Interfaces/index.d.ts +1 -0
  249. package/umd/Core/Interfaces/index.js +2 -1
  250. package/umd/Core/Particle.d.ts +3 -1
  251. package/umd/Core/Particle.js +9 -7
  252. package/umd/Core/Particles.js +2 -1
  253. package/umd/Core/Retina.js +7 -7
  254. package/umd/Core/Utils/ParticlesMover.js +2 -2
  255. package/umd/Interactions/Particles/Links/LinkInstance.js +1 -1
  256. package/umd/Options/Classes/AnimatableGradient.d.ts +4 -4
  257. package/umd/Options/Classes/AnimatableGradient.js +4 -4
  258. package/umd/Options/Classes/AnimationOptions.d.ts +5 -5
  259. package/umd/Options/Classes/AnimationOptions.js +4 -3
  260. package/umd/Options/Classes/ColorAnimation.d.ts +2 -2
  261. package/umd/Options/Classes/ColorAnimation.js +2 -2
  262. package/umd/Options/Classes/Particles/Move/Attract.d.ts +2 -2
  263. package/umd/Options/Classes/Particles/Move/Attract.js +3 -2
  264. package/umd/Options/Classes/Particles/Move/MoveAngle.d.ts +3 -3
  265. package/umd/Options/Classes/Particles/Move/MoveAngle.js +4 -3
  266. package/umd/Options/Classes/Particles/Move/MoveGravity.d.ts +5 -5
  267. package/umd/Options/Classes/Particles/Move/MoveGravity.js +4 -3
  268. package/umd/Options/Classes/Particles/Orbit/Orbit.d.ts +4 -4
  269. package/umd/Options/Classes/Particles/Orbit/Orbit.js +5 -4
  270. package/umd/Options/Classes/Particles/Repulse/Repulse.d.ts +5 -5
  271. package/umd/Options/Classes/Particles/Repulse/Repulse.js +6 -5
  272. package/umd/Options/Classes/Particles/Roll/RollLight.d.ts +2 -2
  273. package/umd/Options/Classes/Particles/Roll/RollLight.js +3 -2
  274. package/umd/Options/Classes/Particles/Rotate/RotateAnimation.d.ts +2 -2
  275. package/umd/Options/Classes/Particles/Rotate/RotateAnimation.js +3 -2
  276. package/umd/Options/Classes/Particles/Tilt/TiltAnimation.d.ts +2 -2
  277. package/umd/Options/Classes/Particles/Tilt/TiltAnimation.js +3 -2
  278. package/umd/Options/Classes/Particles/Twinkle/TwinkleValues.d.ts +2 -2
  279. package/umd/Options/Classes/Particles/Twinkle/TwinkleValues.js +3 -2
  280. package/umd/Options/Interfaces/IAnimation.d.ts +3 -2
  281. package/umd/Options/Interfaces/Particles/Move/IAttract.d.ts +3 -2
  282. package/umd/Options/Interfaces/Particles/Move/IMoveAngle.d.ts +3 -2
  283. package/umd/Options/Interfaces/Particles/Move/IMoveGravity.d.ts +3 -2
  284. package/umd/Options/Interfaces/Particles/Orbit/IOrbit.d.ts +4 -3
  285. package/umd/Options/Interfaces/Particles/Repulse/IRepulse.d.ts +5 -4
  286. package/umd/Options/Interfaces/Particles/Roll/IRollLight.d.ts +2 -1
  287. package/umd/Options/Interfaces/Particles/Rotate/IRotateAnimation.d.ts +2 -1
  288. package/umd/Options/Interfaces/Particles/Tilt/ITiltAnimation.d.ts +2 -1
  289. package/umd/Options/Interfaces/Particles/Twinkle/ITwinkleValues.d.ts +3 -2
  290. package/umd/Plugins/Absorbers/AbsorberInstance.js +1 -1
  291. package/umd/Plugins/Absorbers/Options/Classes/Absorber.d.ts +2 -2
  292. package/umd/Plugins/Absorbers/Options/Classes/Absorber.js +9 -5
  293. package/umd/Plugins/Absorbers/Options/Interfaces/IAbsorber.d.ts +2 -2
  294. package/umd/Plugins/Emitters/EmitterInstance.js +11 -10
  295. package/umd/Plugins/Emitters/Options/Classes/Emitter.d.ts +2 -2
  296. package/umd/Plugins/Emitters/Options/Classes/Emitter.js +9 -6
  297. package/umd/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +2 -2
  298. package/umd/Updaters/Angle/AngleUpdater.js +2 -1
  299. package/umd/Updaters/Opacity/OpacityUpdater.js +3 -2
  300. package/umd/Updaters/Roll/RollUpdater.js +3 -3
  301. package/umd/Updaters/Tilt/TiltUpdater.js +1 -1
  302. package/umd/Utils/ColorUtils.js +1 -1
@@ -799,7 +799,7 @@
799
799
  function setColorAnimation(colorValue, colorAnimation, reduceFactor) {
800
800
  colorValue.enable = colorAnimation.enable;
801
801
  if (colorValue.enable) {
802
- colorValue.velocity = colorAnimation.speed / 100 * reduceFactor;
802
+ colorValue.velocity = getRangeValue(colorAnimation.speed) / 100 * reduceFactor;
803
803
  if (colorAnimation.sync) {
804
804
  return;
805
805
  }
@@ -1674,7 +1674,7 @@
1674
1674
  }
1675
1675
  const container = this.container, slowFactor = this.getProximitySpeedFactor(particle), baseSpeed = ((_a = (_d = particle.retina).moveSpeed) !== null && _a !== void 0 ? _a : _d.moveSpeed = getRangeValue(moveOptions.speed) * container.retina.pixelRatio) * container.retina.reduceFactor, moveDrift = (_b = (_e = particle.retina).moveDrift) !== null && _b !== void 0 ? _b : _e.moveDrift = getRangeValue(particle.options.move.drift) * container.retina.pixelRatio, maxSize = getRangeMax(particleOptions.size.value) * container.retina.pixelRatio, sizeFactor = moveOptions.size ? particle.getRadius() / maxSize : 1, diffFactor = 2, speedFactor = sizeFactor * slowFactor * (delta.factor || 1) / diffFactor, moveSpeed = baseSpeed * speedFactor;
1676
1676
  this.applyPath(particle, delta);
1677
- const gravityOptions = moveOptions.gravity;
1677
+ const gravityOptions = particle.gravity;
1678
1678
  const gravityFactor = gravityOptions.enable && gravityOptions.inverse ? -1 : 1;
1679
1679
  if (gravityOptions.enable && moveSpeed) {
1680
1680
  particle.velocity.y += gravityFactor * (gravityOptions.acceleration * delta.factor) / (60 * moveSpeed);
@@ -1688,7 +1688,7 @@
1688
1688
  }
1689
1689
  const velocity = particle.velocity.mult(moveSpeed);
1690
1690
  const maxSpeed = (_c = particle.retina.maxSpeed) !== null && _c !== void 0 ? _c : container.retina.maxSpeed;
1691
- if (gravityOptions.enable && gravityOptions.maxSpeed > 0 && (!gravityOptions.inverse && velocity.y >= 0 && velocity.y >= maxSpeed || gravityOptions.inverse && velocity.y <= 0 && velocity.y <= -maxSpeed)) {
1691
+ if (gravityOptions.enable && maxSpeed > 0 && (!gravityOptions.inverse && velocity.y >= 0 && velocity.y >= maxSpeed || gravityOptions.inverse && velocity.y <= 0 && velocity.y <= -maxSpeed)) {
1692
1692
  velocity.y = gravityFactor * maxSpeed;
1693
1693
  if (moveSpeed) {
1694
1694
  particle.velocity.y = velocity.y / moveSpeed;
@@ -2170,10 +2170,7 @@
2170
2170
  const container = this.container;
2171
2171
  const pxRatio = container.retina.pixelRatio;
2172
2172
  const size = container.canvas.size;
2173
- const oldSize = {
2174
- width: size.width,
2175
- height: size.height
2176
- };
2173
+ const oldSize = Object.assign({}, size);
2177
2174
  size.width = this.element.offsetWidth * pxRatio;
2178
2175
  size.height = this.element.offsetHeight * pxRatio;
2179
2176
  this.element.width = size.width;
@@ -2232,7 +2229,7 @@
2232
2229
  const zIndexOptions = particle.options.zIndex;
2233
2230
  const zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate;
2234
2231
  const radius = particle.getRadius();
2235
- const opacity = twinkling ? twinkle.opacity : (_d = (_b = particle.bubble.opacity) !== null && _b !== void 0 ? _b : (_c = particle.opacity) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : 1;
2232
+ const opacity = twinkling ? getRangeValue(twinkle.opacity) : (_d = (_b = particle.bubble.opacity) !== null && _b !== void 0 ? _b : (_c = particle.opacity) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : 1;
2236
2233
  const strokeOpacity = (_f = (_e = particle.stroke) === null || _e === void 0 ? void 0 : _e.opacity) !== null && _f !== void 0 ? _f : opacity;
2237
2234
  const zOpacity = opacity * zOpacityFactor;
2238
2235
  const fillColorValue = fColor ? getStyleFromHsl(fColor, zOpacity) : undefined;
@@ -2503,7 +2500,7 @@
2503
2500
  return;
2504
2501
  }
2505
2502
  if (data.count !== undefined) {
2506
- this.count = data.count;
2503
+ this.count = setRangeValue(data.count);
2507
2504
  }
2508
2505
  if (data.enable !== undefined) {
2509
2506
  this.enable = data.enable;
@@ -2512,7 +2509,7 @@
2512
2509
  this.offset = setRangeValue(data.offset);
2513
2510
  }
2514
2511
  if (data.speed !== undefined) {
2515
- this.speed = data.speed;
2512
+ this.speed = setRangeValue(data.speed);
2516
2513
  }
2517
2514
  if (data.sync !== undefined) {
2518
2515
  this.sync = data.sync;
@@ -2660,13 +2657,13 @@
2660
2657
  return;
2661
2658
  }
2662
2659
  if (data.count !== undefined) {
2663
- this.count = data.count;
2660
+ this.count = setRangeValue(data.count);
2664
2661
  }
2665
2662
  if (data.enable !== undefined) {
2666
2663
  this.enable = data.enable;
2667
2664
  }
2668
2665
  if (data.speed !== undefined) {
2669
- this.speed = data.speed;
2666
+ this.speed = setRangeValue(data.speed);
2670
2667
  }
2671
2668
  if (data.sync !== undefined) {
2672
2669
  this.sync = data.sync;
@@ -2686,13 +2683,13 @@
2686
2683
  return;
2687
2684
  }
2688
2685
  if (data.count !== undefined) {
2689
- this.count = data.count;
2686
+ this.count = setRangeValue(data.count);
2690
2687
  }
2691
2688
  if (data.enable !== undefined) {
2692
2689
  this.enable = data.enable;
2693
2690
  }
2694
2691
  if (data.speed !== undefined) {
2695
- this.speed = data.speed;
2692
+ this.speed = setRangeValue(data.speed);
2696
2693
  }
2697
2694
  if (data.sync !== undefined) {
2698
2695
  this.sync = data.sync;
@@ -2864,6 +2861,90 @@
2864
2861
  this.duration.load(data.duration);
2865
2862
  }
2866
2863
  }
2864
+ class Attract_Attract {
2865
+ constructor() {
2866
+ this.distance = 200;
2867
+ this.enable = false;
2868
+ this.rotate = {
2869
+ x: 3e3,
2870
+ y: 3e3
2871
+ };
2872
+ }
2873
+ get rotateX() {
2874
+ return this.rotate.x;
2875
+ }
2876
+ set rotateX(value) {
2877
+ this.rotate.x = value;
2878
+ }
2879
+ get rotateY() {
2880
+ return this.rotate.y;
2881
+ }
2882
+ set rotateY(value) {
2883
+ this.rotate.y = value;
2884
+ }
2885
+ load(data) {
2886
+ var _a, _b, _c, _d;
2887
+ if (!data) {
2888
+ return;
2889
+ }
2890
+ if (data.distance !== undefined) {
2891
+ this.distance = setRangeValue(data.distance);
2892
+ }
2893
+ if (data.enable !== undefined) {
2894
+ this.enable = data.enable;
2895
+ }
2896
+ const rotateX = (_b = (_a = data.rotate) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : data.rotateX;
2897
+ if (rotateX !== undefined) {
2898
+ this.rotate.x = rotateX;
2899
+ }
2900
+ const rotateY = (_d = (_c = data.rotate) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : data.rotateY;
2901
+ if (rotateY !== undefined) {
2902
+ this.rotate.y = rotateY;
2903
+ }
2904
+ }
2905
+ }
2906
+ class MoveAngle_MoveAngle {
2907
+ constructor() {
2908
+ this.offset = 0;
2909
+ this.value = 90;
2910
+ }
2911
+ load(data) {
2912
+ if (data === undefined) {
2913
+ return;
2914
+ }
2915
+ if (data.offset !== undefined) {
2916
+ this.offset = setRangeValue(data.offset);
2917
+ }
2918
+ if (data.value !== undefined) {
2919
+ this.value = setRangeValue(data.value);
2920
+ }
2921
+ }
2922
+ }
2923
+ class MoveGravity_MoveGravity {
2924
+ constructor() {
2925
+ this.acceleration = 9.81;
2926
+ this.enable = false;
2927
+ this.inverse = false;
2928
+ this.maxSpeed = 50;
2929
+ }
2930
+ load(data) {
2931
+ if (!data) {
2932
+ return;
2933
+ }
2934
+ if (data.acceleration !== undefined) {
2935
+ this.acceleration = setRangeValue(data.acceleration);
2936
+ }
2937
+ if (data.enable !== undefined) {
2938
+ this.enable = data.enable;
2939
+ }
2940
+ if (data.inverse !== undefined) {
2941
+ this.inverse = data.inverse;
2942
+ }
2943
+ if (data.maxSpeed !== undefined) {
2944
+ this.maxSpeed = setRangeValue(data.maxSpeed);
2945
+ }
2946
+ }
2947
+ }
2867
2948
  class PathDelay_PathDelay extends(null && ValueWithRandom){
2868
2949
  constructor() {
2869
2950
  super();
@@ -3025,6 +3106,70 @@
3025
3106
  }
3026
3107
  }
3027
3108
  }
3109
+ class AnimationOptions_AnimationOptions {
3110
+ constructor() {
3111
+ this.count = 0;
3112
+ this.enable = false;
3113
+ this.speed = 1;
3114
+ this.sync = false;
3115
+ }
3116
+ load(data) {
3117
+ if (!data) {
3118
+ return;
3119
+ }
3120
+ if (data.count !== undefined) {
3121
+ this.count = setRangeValue(data.count);
3122
+ }
3123
+ if (data.enable !== undefined) {
3124
+ this.enable = data.enable;
3125
+ }
3126
+ if (data.speed !== undefined) {
3127
+ this.speed = setRangeValue(data.speed);
3128
+ }
3129
+ if (data.sync !== undefined) {
3130
+ this.sync = data.sync;
3131
+ }
3132
+ }
3133
+ }
3134
+ class OpacityAnimation_OpacityAnimation extends(null && AnimationOptions){
3135
+ constructor() {
3136
+ super();
3137
+ this.destroy = "none";
3138
+ this.enable = false;
3139
+ this.speed = 2;
3140
+ this.startValue = "random";
3141
+ this.sync = false;
3142
+ }
3143
+ get opacity_min() {
3144
+ return this.minimumValue;
3145
+ }
3146
+ set opacity_min(value) {
3147
+ this.minimumValue = value;
3148
+ }
3149
+ load(data) {
3150
+ var _a;
3151
+ if (data === undefined) {
3152
+ return;
3153
+ }
3154
+ super.load(data);
3155
+ if (data.destroy !== undefined) {
3156
+ this.destroy = data.destroy;
3157
+ }
3158
+ if (data.enable !== undefined) {
3159
+ this.enable = data.enable;
3160
+ }
3161
+ this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.opacity_min;
3162
+ if (data.speed !== undefined) {
3163
+ this.speed = data.speed;
3164
+ }
3165
+ if (data.startValue !== undefined) {
3166
+ this.startValue = data.startValue;
3167
+ }
3168
+ if (data.sync !== undefined) {
3169
+ this.sync = data.sync;
3170
+ }
3171
+ }
3172
+ }
3028
3173
  class Opacity_Opacity extends(null && ValueWithRandom){
3029
3174
  constructor() {
3030
3175
  super();
@@ -3083,13 +3228,13 @@
3083
3228
  this.enable = data.enable;
3084
3229
  }
3085
3230
  if (data.opacity !== undefined) {
3086
- this.opacity = data.opacity;
3231
+ this.opacity = setRangeValue(data.opacity);
3087
3232
  }
3088
3233
  if (data.width !== undefined) {
3089
- this.width = data.width;
3234
+ this.width = setRangeValue(data.width);
3090
3235
  }
3091
3236
  if (data.radius !== undefined) {
3092
- this.radius = data.radius;
3237
+ this.radius = setRangeValue(data.radius);
3093
3238
  }
3094
3239
  if (data.color !== undefined) {
3095
3240
  this.color = OptionsColor.create(this.color, data.color);
@@ -3114,16 +3259,33 @@
3114
3259
  this.enabled = data.enabled;
3115
3260
  }
3116
3261
  if (data.distance !== undefined) {
3117
- this.distance = data.distance;
3262
+ this.distance = setRangeValue(data.distance);
3118
3263
  }
3119
3264
  if (data.duration !== undefined) {
3120
- this.duration = data.duration;
3265
+ this.duration = setRangeValue(data.duration);
3121
3266
  }
3122
3267
  if (data.factor !== undefined) {
3123
- this.factor = data.factor;
3268
+ this.factor = setRangeValue(data.factor);
3124
3269
  }
3125
3270
  if (data.speed !== undefined) {
3126
- this.speed = data.speed;
3271
+ this.speed = setRangeValue(data.speed);
3272
+ }
3273
+ }
3274
+ }
3275
+ class RollLight_RollLight {
3276
+ constructor() {
3277
+ this.enable = false;
3278
+ this.value = 0;
3279
+ }
3280
+ load(data) {
3281
+ if (!data) {
3282
+ return;
3283
+ }
3284
+ if (data.enable !== undefined) {
3285
+ this.enable = data.enable;
3286
+ }
3287
+ if (data.value !== undefined) {
3288
+ this.value = setRangeValue(data.value);
3127
3289
  }
3128
3290
  }
3129
3291
  }
@@ -3155,6 +3317,27 @@
3155
3317
  }
3156
3318
  }
3157
3319
  }
3320
+ class RotateAnimation_RotateAnimation {
3321
+ constructor() {
3322
+ this.enable = false;
3323
+ this.speed = 0;
3324
+ this.sync = false;
3325
+ }
3326
+ load(data) {
3327
+ if (data === undefined) {
3328
+ return;
3329
+ }
3330
+ if (data.enable !== undefined) {
3331
+ this.enable = data.enable;
3332
+ }
3333
+ if (data.speed !== undefined) {
3334
+ this.speed = setRangeValue(data.speed);
3335
+ }
3336
+ if (data.sync !== undefined) {
3337
+ this.sync = data.sync;
3338
+ }
3339
+ }
3340
+ }
3158
3341
  class Rotate_Rotate extends(null && ValueWithRandom){
3159
3342
  constructor() {
3160
3343
  super();
@@ -3273,6 +3456,45 @@
3273
3456
  }
3274
3457
  }
3275
3458
  }
3459
+ class SizeAnimation_SizeAnimation extends(null && AnimationOptions){
3460
+ constructor() {
3461
+ super();
3462
+ this.destroy = "none";
3463
+ this.enable = false;
3464
+ this.speed = 5;
3465
+ this.startValue = "random";
3466
+ this.sync = false;
3467
+ }
3468
+ get size_min() {
3469
+ return this.minimumValue;
3470
+ }
3471
+ set size_min(value) {
3472
+ this.minimumValue = value;
3473
+ }
3474
+ load(data) {
3475
+ var _a;
3476
+ if (data === undefined) {
3477
+ return;
3478
+ }
3479
+ super.load(data);
3480
+ if (data.destroy !== undefined) {
3481
+ this.destroy = data.destroy;
3482
+ }
3483
+ if (data.enable !== undefined) {
3484
+ this.enable = data.enable;
3485
+ }
3486
+ this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.size_min;
3487
+ if (data.speed !== undefined) {
3488
+ this.speed = data.speed;
3489
+ }
3490
+ if (data.startValue !== undefined) {
3491
+ this.startValue = data.startValue;
3492
+ }
3493
+ if (data.sync !== undefined) {
3494
+ this.sync = data.sync;
3495
+ }
3496
+ }
3497
+ }
3276
3498
  class Size_Size extends(null && ValueWithRandom){
3277
3499
  constructor() {
3278
3500
  super();
@@ -3318,6 +3540,27 @@
3318
3540
  }
3319
3541
  }
3320
3542
  }
3543
+ class TiltAnimation_TiltAnimation {
3544
+ constructor() {
3545
+ this.enable = false;
3546
+ this.speed = 0;
3547
+ this.sync = false;
3548
+ }
3549
+ load(data) {
3550
+ if (data === undefined) {
3551
+ return;
3552
+ }
3553
+ if (data.enable !== undefined) {
3554
+ this.enable = data.enable;
3555
+ }
3556
+ if (data.speed !== undefined) {
3557
+ this.speed = setRangeValue(data.speed);
3558
+ }
3559
+ if (data.sync !== undefined) {
3560
+ this.sync = data.sync;
3561
+ }
3562
+ }
3563
+ }
3321
3564
  class Tilt_Tilt extends(null && ValueWithRandom){
3322
3565
  constructor() {
3323
3566
  super();
@@ -3340,6 +3583,43 @@
3340
3583
  }
3341
3584
  }
3342
3585
  }
3586
+ class TwinkleValues_TwinkleValues {
3587
+ constructor() {
3588
+ this.enable = false;
3589
+ this.frequency = .05;
3590
+ this.opacity = 1;
3591
+ }
3592
+ load(data) {
3593
+ if (data === undefined) {
3594
+ return;
3595
+ }
3596
+ if (data.color !== undefined) {
3597
+ this.color = OptionsColor.create(this.color, data.color);
3598
+ }
3599
+ if (data.enable !== undefined) {
3600
+ this.enable = data.enable;
3601
+ }
3602
+ if (data.frequency !== undefined) {
3603
+ this.frequency = data.frequency;
3604
+ }
3605
+ if (data.opacity !== undefined) {
3606
+ this.opacity = setRangeValue(data.opacity);
3607
+ }
3608
+ }
3609
+ }
3610
+ class Twinkle_Twinkle {
3611
+ constructor() {
3612
+ this.lines = new TwinkleValues;
3613
+ this.particles = new TwinkleValues;
3614
+ }
3615
+ load(data) {
3616
+ if (data === undefined) {
3617
+ return;
3618
+ }
3619
+ this.lines.load(data.lines);
3620
+ this.particles.load(data.particles);
3621
+ }
3622
+ }
3343
3623
  class Wobble_Wobble {
3344
3624
  constructor() {
3345
3625
  this.distance = 5;
@@ -3737,6 +4017,7 @@
3737
4017
  this.retina = {
3738
4018
  maxDistance: {}
3739
4019
  };
4020
+ this.ignoresResizeRatio = true;
3740
4021
  const pxRatio = container.retina.pixelRatio;
3741
4022
  const mainOptions = container.actualOptions;
3742
4023
  const particlesOptions = new ParticlesOptions;
@@ -3776,7 +4057,7 @@
3776
4057
  max: getRangeMax(sizeRange) * pxRatio,
3777
4058
  min: getRangeMin(sizeRange) * pxRatio,
3778
4059
  loops: 0,
3779
- maxLoops: sizeOptions.animation.count
4060
+ maxLoops: getRangeValue(sizeOptions.animation.count)
3780
4061
  };
3781
4062
  const sizeAnimation = sizeOptions.animation;
3782
4063
  if (sizeAnimation.enable) {
@@ -3810,6 +4091,12 @@
3810
4091
  this.initialVelocity = this.calculateVelocity();
3811
4092
  this.velocity = this.initialVelocity.copy();
3812
4093
  this.moveDecay = 1 - getRangeValue(this.options.move.decay);
4094
+ const gravityOptions = this.options.move.gravity;
4095
+ this.gravity = {
4096
+ enable: gravityOptions.enable,
4097
+ acceleration: getRangeValue(gravityOptions.acceleration),
4098
+ inverse: gravityOptions.inverse
4099
+ };
3813
4100
  this.position = this.calcPosition(container, position, clamp(zIndexValue, 0, container.zLayers));
3814
4101
  this.initialPosition = this.position.copy();
3815
4102
  this.offset = Vector.origin;
@@ -4017,12 +4304,7 @@
4017
4304
  return overlaps;
4018
4305
  }
4019
4306
  calculateVelocity() {
4020
- const baseVelocity = getParticleBaseVelocity(this.direction);
4021
- const res = baseVelocity.copy();
4022
- const moveOptions = this.options.move;
4023
- const rad = Math.PI / 180 * moveOptions.angle.value;
4024
- const radOffset = Math.PI / 180 * moveOptions.angle.offset;
4025
- const range = {
4307
+ const baseVelocity = getParticleBaseVelocity(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move, rad = Math.PI / 180 * getRangeValue(moveOptions.angle.value), radOffset = Math.PI / 180 * getRangeValue(moveOptions.angle.offset), range = {
4026
4308
  left: radOffset - rad / 2,
4027
4309
  right: radOffset + rad / 2
4028
4310
  };
@@ -4172,10 +4454,11 @@
4172
4454
  }
4173
4455
  for (const particle of this.array) {
4174
4456
  const resizeFactor = container.canvas.resizeFactor;
4175
- if (resizeFactor) {
4457
+ if (resizeFactor && !particle.ignoresResizeRatio) {
4176
4458
  particle.position.x *= resizeFactor.width;
4177
4459
  particle.position.y *= resizeFactor.height;
4178
4460
  }
4461
+ particle.ignoresResizeRatio = false;
4179
4462
  particle.bubble.inRange = false;
4180
4463
  for (const [, plugin] of this.container.plugins) {
4181
4464
  if (particle.destroyed) {
@@ -4411,13 +4694,13 @@
4411
4694
  container.canvas.size.height = element.offsetHeight * ratio;
4412
4695
  }
4413
4696
  const particles = options.particles;
4414
- this.attractDistance = particles.move.attract.distance * ratio;
4697
+ this.attractDistance = getRangeValue(particles.move.attract.distance) * ratio;
4415
4698
  this.linksDistance = particles.links.distance * ratio;
4416
4699
  this.linksWidth = particles.links.width * ratio;
4417
- this.sizeAnimationSpeed = particles.size.animation.speed * ratio;
4418
- this.maxSpeed = particles.move.gravity.maxSpeed * ratio;
4700
+ this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;
4701
+ this.maxSpeed = getRangeValue(particles.move.gravity.maxSpeed) * ratio;
4419
4702
  if (particles.orbit.radius !== undefined) {
4420
- this.orbitRadius = particles.orbit.radius * this.container.retina.pixelRatio;
4703
+ this.orbitRadius = getRangeValue(particles.orbit.radius) * this.container.retina.pixelRatio;
4421
4704
  }
4422
4705
  const modes = options.interactivity.modes;
4423
4706
  this.connectModeDistance = modes.connect.distance * ratio;
@@ -4437,19 +4720,19 @@
4437
4720
  const ratio = this.pixelRatio;
4438
4721
  const moveDistance = options.move.distance;
4439
4722
  const props = particle.retina;
4440
- props.attractDistance = options.move.attract.distance * ratio;
4723
+ props.attractDistance = getRangeValue(options.move.attract.distance) * ratio;
4441
4724
  props.linksDistance = options.links.distance * ratio;
4442
4725
  props.linksWidth = options.links.width * ratio;
4443
4726
  props.moveDrift = getRangeValue(options.move.drift) * ratio;
4444
4727
  props.moveSpeed = getRangeValue(options.move.speed) * ratio;
4445
- props.sizeAnimationSpeed = options.size.animation.speed * ratio;
4728
+ props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;
4446
4729
  if (particle.spin) {
4447
4730
  props.spinAcceleration = getRangeValue(options.move.spin.acceleration) * ratio;
4448
4731
  }
4449
4732
  const maxDistance = props.maxDistance;
4450
4733
  maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;
4451
4734
  maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;
4452
- props.maxSpeed = options.move.gravity.maxSpeed * ratio;
4735
+ props.maxSpeed = getRangeValue(options.move.gravity.maxSpeed) * ratio;
4453
4736
  }
4454
4737
  handleMotionChange(mediaQuery) {
4455
4738
  const options = this.container.actualOptions;
@@ -1,2 +1,2 @@
1
- /*! tsParticles v1.41.4 by Matteo Bruni */
1
+ /*! tsParticles v1.42.0 by Matteo Bruni */
2
2
  !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o=e();for(var n in o)("object"==typeof exports?exports:t)[n]=o[n]}}(window,(function(){return function(){"use strict";var t={d:function(e,o){for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function o(t){return"number"==typeof t?t:function(t){const e=i(t);let o=n(t);return e===o&&(o=0),Math.random()*(e-o)+o}(t)}function n(t){return"number"==typeof t?t:t.min}function i(t){return"number"==typeof t?t:t.max}function s(t,e){if(t===e||void 0===e&&"number"==typeof t)return t;const o=n(t),r=i(t);return void 0!==e?{min:Math.min(o,e),max:Math.max(r,e)}:s(o,r)}function r(t){const e=t.random,{enable:n,minimumValue:i}="boolean"==typeof e?{enable:e,minimumValue:0}:e;return o(n?s(t.value,i):t.value)}function a(t,e){const o=t.x-e.x,n=t.y-e.y;return{dx:o,dy:n,distance:Math.sqrt(o*o+n*n)}}function c(t,e,o,n){return b.create(t.x*(o-n)/(o+n)+2*e.x*n/(o+n),t.y)}function u(t,e,o,n,i,s){const r={bounced:!1};return e.min>=n.min&&e.min<=n.max&&e.max>=n.min&&e.max<=n.max&&(t.max>=o.min&&t.max<=(o.max+o.min)/2&&i>0||t.min<=o.max&&t.min>(o.max+o.min)/2&&i<0)&&(r.velocity=i*-s,r.bounced=!0),r}function h(t,e){return t===e||e instanceof Array&&e.indexOf(t)>-1}function y(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function l(t,e){const o=t.selectors;if(o instanceof Array)for(const n of o)e(n,t);else e(o,t)}function f(t,e){const{x:o,y:n}=t.velocity.sub(e.velocity),[i,s]=[t.position,e.position],{dx:r,dy:u}=a(s,i);if(o*r+n*u>=0){const o=-Math.atan2(u,r),n=t.mass,i=e.mass,s=t.velocity.rotate(o),a=e.velocity.rotate(o),h=c(s,a,n,i),y=c(a,s,n,i),l=h.rotate(-o),f=y.rotate(-o);t.velocity.x=l.x*t.factor.x,t.velocity.y=l.y*t.factor.y,e.velocity.x=f.x*e.factor.x,e.velocity.y=f.y*e.factor.y}}function d(t,e){const o=y(t.getPosition(),t.getRadius()),n=u({min:o.left,max:o.right},{min:o.top,max:o.bottom},{min:e.left,max:e.right},{min:e.top,max:e.bottom},t.velocity.x,r(t.options.bounce.horizontal));n.bounced&&(void 0!==n.velocity&&(t.velocity.x=n.velocity),void 0!==n.position&&(t.position.x=n.position));const i=u({min:o.top,max:o.bottom},{min:o.left,max:o.right},{min:e.top,max:e.bottom},{min:e.left,max:e.right},t.velocity.y,r(t.options.bounce.vertical));i.bounced&&(void 0!==i.velocity&&(t.velocity.y=i.velocity),void 0!==i.position&&(t.position.y=i.position))}t.r(e),t.d(e,{loadExternalBounceInteraction:function(){return M}});class m{constructor(t,e){this.position={x:t,y:e}}}class x extends m{constructor(t,e,o){super(t,e),this.radius=o}contains(t){return e=t,o=this.position,a(e,o).distance<=this.radius;var e,o}intersects(t){const e=t,o=t,n=this.position,i=t.position,s=Math.abs(i.x-n.x),r=Math.abs(i.y-n.y),a=this.radius;if(void 0!==o.radius){return a+o.radius>Math.sqrt(s*s+r+r)}if(void 0!==e.size){const t=e.size.width,o=e.size.height,n=Math.pow(s-t,2)+Math.pow(r-o,2);return!(s>a+t||r>a+o)&&(s<=t||r<=o||n<=a*a)}return!1}}class p{}p.generatedAttribute="generated",p.randomColorValue="random",p.midColorValue="mid",p.touchEndEvent="touchend",p.mouseDownEvent="mousedown",p.mouseUpEvent="mouseup",p.mouseMoveEvent="mousemove",p.touchStartEvent="touchstart",p.touchMoveEvent="touchmove",p.mouseLeaveEvent="mouseleave",p.mouseOutEvent="mouseout",p.touchCancelEvent="touchcancel",p.resizeEvent="resize",p.visibilityChangeEvent="visibilitychange",p.noPolygonDataLoaded="No polygon data loaded.",p.noPolygonFound="No polygon found, you need to specify SVG url in config.";new WeakMap;new WeakMap;class v extends m{constructor(t,e,o,n){super(t,e),this.size={height:n,width:o}}contains(t){const e=this.size.width,o=this.size.height,n=this.position;return t.x>=n.x&&t.x<=n.x+e&&t.y>=n.y&&t.y<=n.y+o}intersects(t){const e=t,o=t,n=this.size.width,i=this.size.height,s=this.position,r=t.position;if(void 0!==o.radius)return o.intersects(this);if(void 0!==e.size){const t=e.size,o=t.width,a=t.height;return r.x<s.x+n&&r.x+o>s.x&&r.y<s.y+i&&r.y+a>s.y}return!1}}class b{constructor(t,e){let o,n;if(void 0===e){if("number"==typeof t)throw new Error("tsParticles - Vector not initialized correctly");const e=t;[o,n]=[e.x,e.y]}else[o,n]=[t,e];this.x=o,this.y=n}static clone(t){return b.create(t.x,t.y)}static create(t,e){return new b(t,e)}static get origin(){return b.create(0,0)}get angle(){return Math.atan2(this.y,this.x)}set angle(t){this.updateFromAngle(t,this.length)}get length(){return Math.sqrt(this.x**2+this.y**2)}set length(t){this.updateFromAngle(this.angle,t)}add(t){return b.create(this.x+t.x,this.y+t.y)}addTo(t){this.x+=t.x,this.y+=t.y}sub(t){return b.create(this.x-t.x,this.y-t.y)}subFrom(t){this.x-=t.x,this.y-=t.y}mult(t){return b.create(this.x*t,this.y*t)}multTo(t){this.x*=t,this.y*=t}div(t){return b.create(this.x/t,this.y/t)}divTo(t){this.x/=t,this.y/=t}distanceTo(t){return this.sub(t).length}getLengthSq(){return this.x**2+this.y**2}distanceToSq(t){return this.sub(t).getLengthSq()}manhattanDistanceTo(t){return Math.abs(t.x-this.x)+Math.abs(t.y-this.y)}copy(){return b.clone(this)}setTo(t){this.x=t.x,this.y=t.y}rotate(t){return b.create(this.x*Math.cos(t)-this.y*Math.sin(t),this.x*Math.sin(t)+this.y*Math.cos(t))}updateFromAngle(t,e){this.x=Math.cos(t)*e,this.y=Math.sin(t)*e}}new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;new WeakMap;class g extends class{constructor(t){this.container=t,this.type=0}}{constructor(t){super(t)}isEnabled(){const t=this.container,e=t.actualOptions,o=t.interactivity.mouse,n=e.interactivity.events,i=n.onDiv;return o.position&&n.onHover.enable&&h("bounce",n.onHover.mode)||function(t,e){return e instanceof Array?!!e.find((e=>e.enable&&h(t,e.mode))):h(t,e.mode)}("bounce",i)}async interact(){const t=this.container,e=t.actualOptions.interactivity.events,o=t.interactivity.status===p.mouseMoveEvent,n=e.onHover.enable,i=e.onHover.mode,s=e.onDiv;o&&n&&h("bounce",i)?this.processMouseBounce():function(t,e,o){if(e instanceof Array)for(const n of e){const e=n.mode;n.enable&&h(t,e)&&l(n,o)}else{const n=e.mode;e.enable&&h(t,n)&&l(e,o)}}("bounce",s,((t,e)=>this.singleSelectorBounce(t,e)))}reset(){}processMouseBounce(){const t=this.container,e=10*t.retina.pixelRatio,o=t.interactivity.mouse.position,n=t.retina.bounceModeDistance;o&&this.processBounce(o,n,new x(o.x,o.y,n+e))}singleSelectorBounce(t,e){const o=this.container,n=document.querySelectorAll(t);n.length&&n.forEach((t=>{const n=t,i=o.retina.pixelRatio,s={x:(n.offsetLeft+n.offsetWidth/2)*i,y:(n.offsetTop+n.offsetHeight/2)*i},r=n.offsetWidth/2*i,a=10*i,c="circle"===e.type?new x(s.x,s.y,r+a):new v(n.offsetLeft*i-a,n.offsetTop*i-a,n.offsetWidth*i+2*a,n.offsetHeight*i+2*a);this.processBounce(s,r,c)}))}processBounce(t,e,o){const n=this.container.particles.quadTree.query(o);for(const s of n)o instanceof x?f({position:(i=s).getPosition(),radius:i.getRadius(),mass:i.getMass(),velocity:i.velocity,factor:b.create(r(i.options.bounce.horizontal),r(i.options.bounce.vertical))},{position:t,radius:e,mass:e**2*Math.PI/2,velocity:b.origin,factor:b.origin}):o instanceof v&&d(s,y(t,e));var i}}async function M(t){await t.addInteractor("externalBounce",(t=>new g(t)))}return e}()}));