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
@@ -619,7 +619,7 @@
619
619
  }
620
620
  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;
621
621
  this.applyPath(particle, delta);
622
- const gravityOptions = moveOptions.gravity;
622
+ const gravityOptions = particle.gravity;
623
623
  const gravityFactor = gravityOptions.enable && gravityOptions.inverse ? -1 : 1;
624
624
  if (gravityOptions.enable && moveSpeed) {
625
625
  particle.velocity.y += gravityFactor * (gravityOptions.acceleration * delta.factor) / (60 * moveSpeed);
@@ -633,7 +633,7 @@
633
633
  }
634
634
  const velocity = particle.velocity.mult(moveSpeed);
635
635
  const maxSpeed = (_c = particle.retina.maxSpeed) !== null && _c !== void 0 ? _c : container.retina.maxSpeed;
636
- if (gravityOptions.enable && gravityOptions.maxSpeed > 0 && (!gravityOptions.inverse && velocity.y >= 0 && velocity.y >= maxSpeed || gravityOptions.inverse && velocity.y <= 0 && velocity.y <= -maxSpeed)) {
636
+ if (gravityOptions.enable && maxSpeed > 0 && (!gravityOptions.inverse && velocity.y >= 0 && velocity.y >= maxSpeed || gravityOptions.inverse && velocity.y <= 0 && velocity.y <= -maxSpeed)) {
637
637
  velocity.y = gravityFactor * maxSpeed;
638
638
  if (moveSpeed) {
639
639
  particle.velocity.y = velocity.y / moveSpeed;
@@ -1083,10 +1083,7 @@
1083
1083
  const container = this.container;
1084
1084
  const pxRatio = container.retina.pixelRatio;
1085
1085
  const size = container.canvas.size;
1086
- const oldSize = {
1087
- width: size.width,
1088
- height: size.height
1089
- };
1086
+ const oldSize = Object.assign({}, size);
1090
1087
  size.width = this.element.offsetWidth * pxRatio;
1091
1088
  size.height = this.element.offsetHeight * pxRatio;
1092
1089
  this.element.width = size.width;
@@ -1145,7 +1142,7 @@
1145
1142
  const zIndexOptions = particle.options.zIndex;
1146
1143
  const zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate;
1147
1144
  const radius = particle.getRadius();
1148
- 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;
1145
+ 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;
1149
1146
  const strokeOpacity = (_f = (_e = particle.stroke) === null || _e === void 0 ? void 0 : _e.opacity) !== null && _f !== void 0 ? _f : opacity;
1150
1147
  const zOpacity = opacity * zOpacityFactor;
1151
1148
  const fillColorValue = fColor ? getStyleFromHsl(fColor, zOpacity) : undefined;
@@ -1416,7 +1413,7 @@
1416
1413
  return;
1417
1414
  }
1418
1415
  if (data.count !== undefined) {
1419
- this.count = data.count;
1416
+ this.count = setRangeValue(data.count);
1420
1417
  }
1421
1418
  if (data.enable !== undefined) {
1422
1419
  this.enable = data.enable;
@@ -1425,7 +1422,7 @@
1425
1422
  this.offset = setRangeValue(data.offset);
1426
1423
  }
1427
1424
  if (data.speed !== undefined) {
1428
- this.speed = data.speed;
1425
+ this.speed = setRangeValue(data.speed);
1429
1426
  }
1430
1427
  if (data.sync !== undefined) {
1431
1428
  this.sync = data.sync;
@@ -1573,13 +1570,13 @@
1573
1570
  return;
1574
1571
  }
1575
1572
  if (data.count !== undefined) {
1576
- this.count = data.count;
1573
+ this.count = setRangeValue(data.count);
1577
1574
  }
1578
1575
  if (data.enable !== undefined) {
1579
1576
  this.enable = data.enable;
1580
1577
  }
1581
1578
  if (data.speed !== undefined) {
1582
- this.speed = data.speed;
1579
+ this.speed = setRangeValue(data.speed);
1583
1580
  }
1584
1581
  if (data.sync !== undefined) {
1585
1582
  this.sync = data.sync;
@@ -1599,13 +1596,13 @@
1599
1596
  return;
1600
1597
  }
1601
1598
  if (data.count !== undefined) {
1602
- this.count = data.count;
1599
+ this.count = setRangeValue(data.count);
1603
1600
  }
1604
1601
  if (data.enable !== undefined) {
1605
1602
  this.enable = data.enable;
1606
1603
  }
1607
1604
  if (data.speed !== undefined) {
1608
- this.speed = data.speed;
1605
+ this.speed = setRangeValue(data.speed);
1609
1606
  }
1610
1607
  if (data.sync !== undefined) {
1611
1608
  this.sync = data.sync;
@@ -1777,6 +1774,90 @@
1777
1774
  this.duration.load(data.duration);
1778
1775
  }
1779
1776
  }
1777
+ class Attract_Attract {
1778
+ constructor() {
1779
+ this.distance = 200;
1780
+ this.enable = false;
1781
+ this.rotate = {
1782
+ x: 3e3,
1783
+ y: 3e3
1784
+ };
1785
+ }
1786
+ get rotateX() {
1787
+ return this.rotate.x;
1788
+ }
1789
+ set rotateX(value) {
1790
+ this.rotate.x = value;
1791
+ }
1792
+ get rotateY() {
1793
+ return this.rotate.y;
1794
+ }
1795
+ set rotateY(value) {
1796
+ this.rotate.y = value;
1797
+ }
1798
+ load(data) {
1799
+ var _a, _b, _c, _d;
1800
+ if (!data) {
1801
+ return;
1802
+ }
1803
+ if (data.distance !== undefined) {
1804
+ this.distance = setRangeValue(data.distance);
1805
+ }
1806
+ if (data.enable !== undefined) {
1807
+ this.enable = data.enable;
1808
+ }
1809
+ const rotateX = (_b = (_a = data.rotate) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : data.rotateX;
1810
+ if (rotateX !== undefined) {
1811
+ this.rotate.x = rotateX;
1812
+ }
1813
+ const rotateY = (_d = (_c = data.rotate) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : data.rotateY;
1814
+ if (rotateY !== undefined) {
1815
+ this.rotate.y = rotateY;
1816
+ }
1817
+ }
1818
+ }
1819
+ class MoveAngle_MoveAngle {
1820
+ constructor() {
1821
+ this.offset = 0;
1822
+ this.value = 90;
1823
+ }
1824
+ load(data) {
1825
+ if (data === undefined) {
1826
+ return;
1827
+ }
1828
+ if (data.offset !== undefined) {
1829
+ this.offset = setRangeValue(data.offset);
1830
+ }
1831
+ if (data.value !== undefined) {
1832
+ this.value = setRangeValue(data.value);
1833
+ }
1834
+ }
1835
+ }
1836
+ class MoveGravity_MoveGravity {
1837
+ constructor() {
1838
+ this.acceleration = 9.81;
1839
+ this.enable = false;
1840
+ this.inverse = false;
1841
+ this.maxSpeed = 50;
1842
+ }
1843
+ load(data) {
1844
+ if (!data) {
1845
+ return;
1846
+ }
1847
+ if (data.acceleration !== undefined) {
1848
+ this.acceleration = setRangeValue(data.acceleration);
1849
+ }
1850
+ if (data.enable !== undefined) {
1851
+ this.enable = data.enable;
1852
+ }
1853
+ if (data.inverse !== undefined) {
1854
+ this.inverse = data.inverse;
1855
+ }
1856
+ if (data.maxSpeed !== undefined) {
1857
+ this.maxSpeed = setRangeValue(data.maxSpeed);
1858
+ }
1859
+ }
1860
+ }
1780
1861
  class PathDelay_PathDelay extends(null && ValueWithRandom){
1781
1862
  constructor() {
1782
1863
  super();
@@ -1938,6 +2019,70 @@
1938
2019
  }
1939
2020
  }
1940
2021
  }
2022
+ class AnimationOptions_AnimationOptions {
2023
+ constructor() {
2024
+ this.count = 0;
2025
+ this.enable = false;
2026
+ this.speed = 1;
2027
+ this.sync = false;
2028
+ }
2029
+ load(data) {
2030
+ if (!data) {
2031
+ return;
2032
+ }
2033
+ if (data.count !== undefined) {
2034
+ this.count = setRangeValue(data.count);
2035
+ }
2036
+ if (data.enable !== undefined) {
2037
+ this.enable = data.enable;
2038
+ }
2039
+ if (data.speed !== undefined) {
2040
+ this.speed = setRangeValue(data.speed);
2041
+ }
2042
+ if (data.sync !== undefined) {
2043
+ this.sync = data.sync;
2044
+ }
2045
+ }
2046
+ }
2047
+ class OpacityAnimation_OpacityAnimation extends(null && AnimationOptions){
2048
+ constructor() {
2049
+ super();
2050
+ this.destroy = "none";
2051
+ this.enable = false;
2052
+ this.speed = 2;
2053
+ this.startValue = "random";
2054
+ this.sync = false;
2055
+ }
2056
+ get opacity_min() {
2057
+ return this.minimumValue;
2058
+ }
2059
+ set opacity_min(value) {
2060
+ this.minimumValue = value;
2061
+ }
2062
+ load(data) {
2063
+ var _a;
2064
+ if (data === undefined) {
2065
+ return;
2066
+ }
2067
+ super.load(data);
2068
+ if (data.destroy !== undefined) {
2069
+ this.destroy = data.destroy;
2070
+ }
2071
+ if (data.enable !== undefined) {
2072
+ this.enable = data.enable;
2073
+ }
2074
+ this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.opacity_min;
2075
+ if (data.speed !== undefined) {
2076
+ this.speed = data.speed;
2077
+ }
2078
+ if (data.startValue !== undefined) {
2079
+ this.startValue = data.startValue;
2080
+ }
2081
+ if (data.sync !== undefined) {
2082
+ this.sync = data.sync;
2083
+ }
2084
+ }
2085
+ }
1941
2086
  class Opacity_Opacity extends(null && ValueWithRandom){
1942
2087
  constructor() {
1943
2088
  super();
@@ -1996,13 +2141,13 @@
1996
2141
  this.enable = data.enable;
1997
2142
  }
1998
2143
  if (data.opacity !== undefined) {
1999
- this.opacity = data.opacity;
2144
+ this.opacity = setRangeValue(data.opacity);
2000
2145
  }
2001
2146
  if (data.width !== undefined) {
2002
- this.width = data.width;
2147
+ this.width = setRangeValue(data.width);
2003
2148
  }
2004
2149
  if (data.radius !== undefined) {
2005
- this.radius = data.radius;
2150
+ this.radius = setRangeValue(data.radius);
2006
2151
  }
2007
2152
  if (data.color !== undefined) {
2008
2153
  this.color = OptionsColor.create(this.color, data.color);
@@ -2027,16 +2172,33 @@
2027
2172
  this.enabled = data.enabled;
2028
2173
  }
2029
2174
  if (data.distance !== undefined) {
2030
- this.distance = data.distance;
2175
+ this.distance = setRangeValue(data.distance);
2031
2176
  }
2032
2177
  if (data.duration !== undefined) {
2033
- this.duration = data.duration;
2178
+ this.duration = setRangeValue(data.duration);
2034
2179
  }
2035
2180
  if (data.factor !== undefined) {
2036
- this.factor = data.factor;
2181
+ this.factor = setRangeValue(data.factor);
2037
2182
  }
2038
2183
  if (data.speed !== undefined) {
2039
- this.speed = data.speed;
2184
+ this.speed = setRangeValue(data.speed);
2185
+ }
2186
+ }
2187
+ }
2188
+ class RollLight_RollLight {
2189
+ constructor() {
2190
+ this.enable = false;
2191
+ this.value = 0;
2192
+ }
2193
+ load(data) {
2194
+ if (!data) {
2195
+ return;
2196
+ }
2197
+ if (data.enable !== undefined) {
2198
+ this.enable = data.enable;
2199
+ }
2200
+ if (data.value !== undefined) {
2201
+ this.value = setRangeValue(data.value);
2040
2202
  }
2041
2203
  }
2042
2204
  }
@@ -2068,6 +2230,27 @@
2068
2230
  }
2069
2231
  }
2070
2232
  }
2233
+ class RotateAnimation_RotateAnimation {
2234
+ constructor() {
2235
+ this.enable = false;
2236
+ this.speed = 0;
2237
+ this.sync = false;
2238
+ }
2239
+ load(data) {
2240
+ if (data === undefined) {
2241
+ return;
2242
+ }
2243
+ if (data.enable !== undefined) {
2244
+ this.enable = data.enable;
2245
+ }
2246
+ if (data.speed !== undefined) {
2247
+ this.speed = setRangeValue(data.speed);
2248
+ }
2249
+ if (data.sync !== undefined) {
2250
+ this.sync = data.sync;
2251
+ }
2252
+ }
2253
+ }
2071
2254
  class Rotate_Rotate extends(null && ValueWithRandom){
2072
2255
  constructor() {
2073
2256
  super();
@@ -2186,6 +2369,45 @@
2186
2369
  }
2187
2370
  }
2188
2371
  }
2372
+ class SizeAnimation_SizeAnimation extends(null && AnimationOptions){
2373
+ constructor() {
2374
+ super();
2375
+ this.destroy = "none";
2376
+ this.enable = false;
2377
+ this.speed = 5;
2378
+ this.startValue = "random";
2379
+ this.sync = false;
2380
+ }
2381
+ get size_min() {
2382
+ return this.minimumValue;
2383
+ }
2384
+ set size_min(value) {
2385
+ this.minimumValue = value;
2386
+ }
2387
+ load(data) {
2388
+ var _a;
2389
+ if (data === undefined) {
2390
+ return;
2391
+ }
2392
+ super.load(data);
2393
+ if (data.destroy !== undefined) {
2394
+ this.destroy = data.destroy;
2395
+ }
2396
+ if (data.enable !== undefined) {
2397
+ this.enable = data.enable;
2398
+ }
2399
+ this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.size_min;
2400
+ if (data.speed !== undefined) {
2401
+ this.speed = data.speed;
2402
+ }
2403
+ if (data.startValue !== undefined) {
2404
+ this.startValue = data.startValue;
2405
+ }
2406
+ if (data.sync !== undefined) {
2407
+ this.sync = data.sync;
2408
+ }
2409
+ }
2410
+ }
2189
2411
  class Size_Size extends(null && ValueWithRandom){
2190
2412
  constructor() {
2191
2413
  super();
@@ -2231,6 +2453,27 @@
2231
2453
  }
2232
2454
  }
2233
2455
  }
2456
+ class TiltAnimation_TiltAnimation {
2457
+ constructor() {
2458
+ this.enable = false;
2459
+ this.speed = 0;
2460
+ this.sync = false;
2461
+ }
2462
+ load(data) {
2463
+ if (data === undefined) {
2464
+ return;
2465
+ }
2466
+ if (data.enable !== undefined) {
2467
+ this.enable = data.enable;
2468
+ }
2469
+ if (data.speed !== undefined) {
2470
+ this.speed = setRangeValue(data.speed);
2471
+ }
2472
+ if (data.sync !== undefined) {
2473
+ this.sync = data.sync;
2474
+ }
2475
+ }
2476
+ }
2234
2477
  class Tilt_Tilt extends(null && ValueWithRandom){
2235
2478
  constructor() {
2236
2479
  super();
@@ -2253,6 +2496,43 @@
2253
2496
  }
2254
2497
  }
2255
2498
  }
2499
+ class TwinkleValues_TwinkleValues {
2500
+ constructor() {
2501
+ this.enable = false;
2502
+ this.frequency = .05;
2503
+ this.opacity = 1;
2504
+ }
2505
+ load(data) {
2506
+ if (data === undefined) {
2507
+ return;
2508
+ }
2509
+ if (data.color !== undefined) {
2510
+ this.color = OptionsColor.create(this.color, data.color);
2511
+ }
2512
+ if (data.enable !== undefined) {
2513
+ this.enable = data.enable;
2514
+ }
2515
+ if (data.frequency !== undefined) {
2516
+ this.frequency = data.frequency;
2517
+ }
2518
+ if (data.opacity !== undefined) {
2519
+ this.opacity = setRangeValue(data.opacity);
2520
+ }
2521
+ }
2522
+ }
2523
+ class Twinkle_Twinkle {
2524
+ constructor() {
2525
+ this.lines = new TwinkleValues;
2526
+ this.particles = new TwinkleValues;
2527
+ }
2528
+ load(data) {
2529
+ if (data === undefined) {
2530
+ return;
2531
+ }
2532
+ this.lines.load(data.lines);
2533
+ this.particles.load(data.particles);
2534
+ }
2535
+ }
2256
2536
  class Wobble_Wobble {
2257
2537
  constructor() {
2258
2538
  this.distance = 5;
@@ -2650,6 +2930,7 @@
2650
2930
  this.retina = {
2651
2931
  maxDistance: {}
2652
2932
  };
2933
+ this.ignoresResizeRatio = true;
2653
2934
  const pxRatio = container.retina.pixelRatio;
2654
2935
  const mainOptions = container.actualOptions;
2655
2936
  const particlesOptions = new ParticlesOptions;
@@ -2689,7 +2970,7 @@
2689
2970
  max: getRangeMax(sizeRange) * pxRatio,
2690
2971
  min: getRangeMin(sizeRange) * pxRatio,
2691
2972
  loops: 0,
2692
- maxLoops: sizeOptions.animation.count
2973
+ maxLoops: getRangeValue(sizeOptions.animation.count)
2693
2974
  };
2694
2975
  const sizeAnimation = sizeOptions.animation;
2695
2976
  if (sizeAnimation.enable) {
@@ -2723,6 +3004,12 @@
2723
3004
  this.initialVelocity = this.calculateVelocity();
2724
3005
  this.velocity = this.initialVelocity.copy();
2725
3006
  this.moveDecay = 1 - getRangeValue(this.options.move.decay);
3007
+ const gravityOptions = this.options.move.gravity;
3008
+ this.gravity = {
3009
+ enable: gravityOptions.enable,
3010
+ acceleration: getRangeValue(gravityOptions.acceleration),
3011
+ inverse: gravityOptions.inverse
3012
+ };
2726
3013
  this.position = this.calcPosition(container, position, clamp(zIndexValue, 0, container.zLayers));
2727
3014
  this.initialPosition = this.position.copy();
2728
3015
  this.offset = Vector.origin;
@@ -2930,12 +3217,7 @@
2930
3217
  return overlaps;
2931
3218
  }
2932
3219
  calculateVelocity() {
2933
- const baseVelocity = getParticleBaseVelocity(this.direction);
2934
- const res = baseVelocity.copy();
2935
- const moveOptions = this.options.move;
2936
- const rad = Math.PI / 180 * moveOptions.angle.value;
2937
- const radOffset = Math.PI / 180 * moveOptions.angle.offset;
2938
- const range = {
3220
+ 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 = {
2939
3221
  left: radOffset - rad / 2,
2940
3222
  right: radOffset + rad / 2
2941
3223
  };
@@ -3085,10 +3367,11 @@
3085
3367
  }
3086
3368
  for (const particle of this.array) {
3087
3369
  const resizeFactor = container.canvas.resizeFactor;
3088
- if (resizeFactor) {
3370
+ if (resizeFactor && !particle.ignoresResizeRatio) {
3089
3371
  particle.position.x *= resizeFactor.width;
3090
3372
  particle.position.y *= resizeFactor.height;
3091
3373
  }
3374
+ particle.ignoresResizeRatio = false;
3092
3375
  particle.bubble.inRange = false;
3093
3376
  for (const [, plugin] of this.container.plugins) {
3094
3377
  if (particle.destroyed) {
@@ -3324,13 +3607,13 @@
3324
3607
  container.canvas.size.height = element.offsetHeight * ratio;
3325
3608
  }
3326
3609
  const particles = options.particles;
3327
- this.attractDistance = particles.move.attract.distance * ratio;
3610
+ this.attractDistance = getRangeValue(particles.move.attract.distance) * ratio;
3328
3611
  this.linksDistance = particles.links.distance * ratio;
3329
3612
  this.linksWidth = particles.links.width * ratio;
3330
- this.sizeAnimationSpeed = particles.size.animation.speed * ratio;
3331
- this.maxSpeed = particles.move.gravity.maxSpeed * ratio;
3613
+ this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;
3614
+ this.maxSpeed = getRangeValue(particles.move.gravity.maxSpeed) * ratio;
3332
3615
  if (particles.orbit.radius !== undefined) {
3333
- this.orbitRadius = particles.orbit.radius * this.container.retina.pixelRatio;
3616
+ this.orbitRadius = getRangeValue(particles.orbit.radius) * this.container.retina.pixelRatio;
3334
3617
  }
3335
3618
  const modes = options.interactivity.modes;
3336
3619
  this.connectModeDistance = modes.connect.distance * ratio;
@@ -3350,19 +3633,19 @@
3350
3633
  const ratio = this.pixelRatio;
3351
3634
  const moveDistance = options.move.distance;
3352
3635
  const props = particle.retina;
3353
- props.attractDistance = options.move.attract.distance * ratio;
3636
+ props.attractDistance = getRangeValue(options.move.attract.distance) * ratio;
3354
3637
  props.linksDistance = options.links.distance * ratio;
3355
3638
  props.linksWidth = options.links.width * ratio;
3356
3639
  props.moveDrift = getRangeValue(options.move.drift) * ratio;
3357
3640
  props.moveSpeed = getRangeValue(options.move.speed) * ratio;
3358
- props.sizeAnimationSpeed = options.size.animation.speed * ratio;
3641
+ props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;
3359
3642
  if (particle.spin) {
3360
3643
  props.spinAcceleration = getRangeValue(options.move.spin.acceleration) * ratio;
3361
3644
  }
3362
3645
  const maxDistance = props.maxDistance;
3363
3646
  maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;
3364
3647
  maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;
3365
- props.maxSpeed = options.move.gravity.maxSpeed * ratio;
3648
+ props.maxSpeed = getRangeValue(options.move.gravity.maxSpeed) * ratio;
3366
3649
  }
3367
3650
  handleMotionChange(mediaQuery) {
3368
3651
  const options = this.container.actualOptions;
@@ -4694,7 +4977,7 @@
4694
4977
  function setColorAnimation(colorValue, colorAnimation, reduceFactor) {
4695
4978
  colorValue.enable = colorAnimation.enable;
4696
4979
  if (colorValue.enable) {
4697
- colorValue.velocity = colorAnimation.speed / 100 * reduceFactor;
4980
+ colorValue.velocity = getRangeValue(colorAnimation.speed) / 100 * reduceFactor;
4698
4981
  if (colorAnimation.sync) {
4699
4982
  return;
4700
4983
  }
@@ -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 i in o)("object"==typeof exports?exports:t)[i]=o[i]}}(window,(function(){return function(){"use strict";var t={d:function(e,o){for(var i in o)t.o(o,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:o[i]})},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={};t.r(e),t.d(e,{loadParticlesCollisionsInteraction:function(){return g}});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;class i{constructor(t,e){let o,i;if(void 0===e){if("number"==typeof t)throw new Error("tsParticles - Vector not initialized correctly");const e=t;[o,i]=[e.x,e.y]}else[o,i]=[t,e];this.x=o,this.y=i}static clone(t){return i.create(t.x,t.y)}static create(t,e){return new i(t,e)}static get origin(){return i.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 i.create(this.x+t.x,this.y+t.y)}addTo(t){this.x+=t.x,this.y+=t.y}sub(t){return i.create(this.x-t.x,this.y-t.y)}subFrom(t){this.x-=t.x,this.y-=t.y}mult(t){return i.create(this.x*t,this.y*t)}multTo(t){this.x*=t,this.y*=t}div(t){return i.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 i.clone(this)}setTo(t){this.x=t.x,this.y=t.y}rotate(t){return i.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;function n(t,e,o){return Math.min(Math.max(t,e),o)}function s(t){return"number"==typeof t?t:function(t){const e=r(t);let o=a(t);return e===o&&(o=0),Math.random()*(e-o)+o}(t)}function a(t){return"number"==typeof t?t:t.min}function r(t){return"number"==typeof t?t:t.max}function u(t,e){if(t===e||void 0===e&&"number"==typeof t)return t;const o=a(t),i=r(t);return void 0!==e?{min:Math.min(o,e),max:Math.max(i,e)}:u(o,i)}function c(t){const e=t.random,{enable:o,minimumValue:i}="boolean"==typeof e?{enable:e,minimumValue:0}:e;return s(o?u(t.value,i):t.value)}function d(t,e){const o=t.x-e.x,i=t.y-e.y;return{dx:o,dy:i,distance:Math.sqrt(o*o+i*i)}}function l(t,e,o,n){return i.create(t.x*(o-n)/(o+n)+2*e.x*n/(o+n),t.y)}function y(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:i.create(c(t.options.bounce.horizontal),c(t.options.bounce.vertical))}}function h(t,e){!function(t,e){const{x:o,y:i}=t.velocity.sub(e.velocity),[n,s]=[t.position,e.position],{dx:a,dy:r}=d(s,n);if(o*a+i*r>=0){const o=-Math.atan2(r,a),i=t.mass,n=e.mass,s=t.velocity.rotate(o),u=e.velocity.rotate(o),c=l(s,u,i,n),d=l(u,s,i,n),y=c.rotate(-o),h=d.rotate(-o);t.velocity.x=y.x*t.factor.x,t.velocity.y=y.y*t.factor.y,e.velocity.x=h.x*e.factor.x,e.velocity.y=h.y*e.factor.y}}(y(t),y(e))}new WeakMap;class f extends class{constructor(t){this.container=t,this.type=1}}{constructor(t){super(t)}isEnabled(t){return t.options.collisions.enable}reset(){}async interact(t){const e=this.container,o=t.getPosition(),i=t.getRadius(),n=e.particles.quadTree.queryCircle(o,2*i);for(const e of n){if(t===e||!e.options.collisions.enable||t.options.collisions.mode!==e.options.collisions.mode||e.destroyed||e.spawning)continue;const n=e.getPosition();if(Math.round(o.z)!==Math.round(n.z))continue;d(o,n).distance<=i+e.getRadius()&&this.resolveCollision(t,e)}}resolveCollision(t,e){switch(t.options.collisions.mode){case"absorb":this.absorb(t,e);break;case"bounce":h(t,e);break;case"destroy":!function(t,e){t.unbreakable||e.unbreakable||h(t,e),void 0===t.getRadius()&&void 0!==e.getRadius()?t.destroy():void 0!==t.getRadius()&&void 0===e.getRadius()?e.destroy():void 0!==t.getRadius()&&void 0!==e.getRadius()&&(t.getRadius()>=e.getRadius()?e.destroy():t.destroy())}(t,e)}}absorb(t,e){const o=this.container,i=o.fpsLimit/1e3;if(void 0===t.getRadius()&&void 0!==e.getRadius())t.destroy();else if(void 0!==t.getRadius()&&void 0===e.getRadius())e.destroy();else if(void 0!==t.getRadius()&&void 0!==e.getRadius())if(t.getRadius()>=e.getRadius()){const s=n(t.getRadius()/e.getRadius(),0,e.getRadius())*i;t.size.value+=s,e.size.value-=s,e.getRadius()<=o.retina.pixelRatio&&(e.size.value=0,e.destroy())}else{const s=n(e.getRadius()/t.getRadius(),0,t.getRadius())*i;t.size.value-=s,e.size.value+=s,t.getRadius()<=o.retina.pixelRatio&&(t.size.value=0,t.destroy())}}}async function g(t){await t.addInteractor("particlesCollisions",(t=>new f(t)))}return e}()}));