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;
@@ -2079,10 +2079,7 @@
2079
2079
  const container = this.container;
2080
2080
  const pxRatio = container.retina.pixelRatio;
2081
2081
  const size = container.canvas.size;
2082
- const oldSize = {
2083
- width: size.width,
2084
- height: size.height
2085
- };
2082
+ const oldSize = Object.assign({}, size);
2086
2083
  size.width = this.element.offsetWidth * pxRatio;
2087
2084
  size.height = this.element.offsetHeight * pxRatio;
2088
2085
  this.element.width = size.width;
@@ -2141,7 +2138,7 @@
2141
2138
  const zIndexOptions = particle.options.zIndex;
2142
2139
  const zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate;
2143
2140
  const radius = particle.getRadius();
2144
- 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;
2141
+ 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;
2145
2142
  const strokeOpacity = (_f = (_e = particle.stroke) === null || _e === void 0 ? void 0 : _e.opacity) !== null && _f !== void 0 ? _f : opacity;
2146
2143
  const zOpacity = opacity * zOpacityFactor;
2147
2144
  const fillColorValue = fColor ? getStyleFromHsl(fColor, zOpacity) : undefined;
@@ -2412,7 +2409,7 @@
2412
2409
  return;
2413
2410
  }
2414
2411
  if (data.count !== undefined) {
2415
- this.count = data.count;
2412
+ this.count = setRangeValue(data.count);
2416
2413
  }
2417
2414
  if (data.enable !== undefined) {
2418
2415
  this.enable = data.enable;
@@ -2421,7 +2418,7 @@
2421
2418
  this.offset = setRangeValue(data.offset);
2422
2419
  }
2423
2420
  if (data.speed !== undefined) {
2424
- this.speed = data.speed;
2421
+ this.speed = setRangeValue(data.speed);
2425
2422
  }
2426
2423
  if (data.sync !== undefined) {
2427
2424
  this.sync = data.sync;
@@ -2569,13 +2566,13 @@
2569
2566
  return;
2570
2567
  }
2571
2568
  if (data.count !== undefined) {
2572
- this.count = data.count;
2569
+ this.count = setRangeValue(data.count);
2573
2570
  }
2574
2571
  if (data.enable !== undefined) {
2575
2572
  this.enable = data.enable;
2576
2573
  }
2577
2574
  if (data.speed !== undefined) {
2578
- this.speed = data.speed;
2575
+ this.speed = setRangeValue(data.speed);
2579
2576
  }
2580
2577
  if (data.sync !== undefined) {
2581
2578
  this.sync = data.sync;
@@ -2595,13 +2592,13 @@
2595
2592
  return;
2596
2593
  }
2597
2594
  if (data.count !== undefined) {
2598
- this.count = data.count;
2595
+ this.count = setRangeValue(data.count);
2599
2596
  }
2600
2597
  if (data.enable !== undefined) {
2601
2598
  this.enable = data.enable;
2602
2599
  }
2603
2600
  if (data.speed !== undefined) {
2604
- this.speed = data.speed;
2601
+ this.speed = setRangeValue(data.speed);
2605
2602
  }
2606
2603
  if (data.sync !== undefined) {
2607
2604
  this.sync = data.sync;
@@ -2773,6 +2770,90 @@
2773
2770
  this.duration.load(data.duration);
2774
2771
  }
2775
2772
  }
2773
+ class Attract_Attract {
2774
+ constructor() {
2775
+ this.distance = 200;
2776
+ this.enable = false;
2777
+ this.rotate = {
2778
+ x: 3e3,
2779
+ y: 3e3
2780
+ };
2781
+ }
2782
+ get rotateX() {
2783
+ return this.rotate.x;
2784
+ }
2785
+ set rotateX(value) {
2786
+ this.rotate.x = value;
2787
+ }
2788
+ get rotateY() {
2789
+ return this.rotate.y;
2790
+ }
2791
+ set rotateY(value) {
2792
+ this.rotate.y = value;
2793
+ }
2794
+ load(data) {
2795
+ var _a, _b, _c, _d;
2796
+ if (!data) {
2797
+ return;
2798
+ }
2799
+ if (data.distance !== undefined) {
2800
+ this.distance = setRangeValue(data.distance);
2801
+ }
2802
+ if (data.enable !== undefined) {
2803
+ this.enable = data.enable;
2804
+ }
2805
+ const rotateX = (_b = (_a = data.rotate) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : data.rotateX;
2806
+ if (rotateX !== undefined) {
2807
+ this.rotate.x = rotateX;
2808
+ }
2809
+ const rotateY = (_d = (_c = data.rotate) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : data.rotateY;
2810
+ if (rotateY !== undefined) {
2811
+ this.rotate.y = rotateY;
2812
+ }
2813
+ }
2814
+ }
2815
+ class MoveAngle_MoveAngle {
2816
+ constructor() {
2817
+ this.offset = 0;
2818
+ this.value = 90;
2819
+ }
2820
+ load(data) {
2821
+ if (data === undefined) {
2822
+ return;
2823
+ }
2824
+ if (data.offset !== undefined) {
2825
+ this.offset = setRangeValue(data.offset);
2826
+ }
2827
+ if (data.value !== undefined) {
2828
+ this.value = setRangeValue(data.value);
2829
+ }
2830
+ }
2831
+ }
2832
+ class MoveGravity_MoveGravity {
2833
+ constructor() {
2834
+ this.acceleration = 9.81;
2835
+ this.enable = false;
2836
+ this.inverse = false;
2837
+ this.maxSpeed = 50;
2838
+ }
2839
+ load(data) {
2840
+ if (!data) {
2841
+ return;
2842
+ }
2843
+ if (data.acceleration !== undefined) {
2844
+ this.acceleration = setRangeValue(data.acceleration);
2845
+ }
2846
+ if (data.enable !== undefined) {
2847
+ this.enable = data.enable;
2848
+ }
2849
+ if (data.inverse !== undefined) {
2850
+ this.inverse = data.inverse;
2851
+ }
2852
+ if (data.maxSpeed !== undefined) {
2853
+ this.maxSpeed = setRangeValue(data.maxSpeed);
2854
+ }
2855
+ }
2856
+ }
2776
2857
  class PathDelay_PathDelay extends(null && ValueWithRandom){
2777
2858
  constructor() {
2778
2859
  super();
@@ -2934,6 +3015,70 @@
2934
3015
  }
2935
3016
  }
2936
3017
  }
3018
+ class AnimationOptions_AnimationOptions {
3019
+ constructor() {
3020
+ this.count = 0;
3021
+ this.enable = false;
3022
+ this.speed = 1;
3023
+ this.sync = false;
3024
+ }
3025
+ load(data) {
3026
+ if (!data) {
3027
+ return;
3028
+ }
3029
+ if (data.count !== undefined) {
3030
+ this.count = setRangeValue(data.count);
3031
+ }
3032
+ if (data.enable !== undefined) {
3033
+ this.enable = data.enable;
3034
+ }
3035
+ if (data.speed !== undefined) {
3036
+ this.speed = setRangeValue(data.speed);
3037
+ }
3038
+ if (data.sync !== undefined) {
3039
+ this.sync = data.sync;
3040
+ }
3041
+ }
3042
+ }
3043
+ class OpacityAnimation_OpacityAnimation extends(null && AnimationOptions){
3044
+ constructor() {
3045
+ super();
3046
+ this.destroy = "none";
3047
+ this.enable = false;
3048
+ this.speed = 2;
3049
+ this.startValue = "random";
3050
+ this.sync = false;
3051
+ }
3052
+ get opacity_min() {
3053
+ return this.minimumValue;
3054
+ }
3055
+ set opacity_min(value) {
3056
+ this.minimumValue = value;
3057
+ }
3058
+ load(data) {
3059
+ var _a;
3060
+ if (data === undefined) {
3061
+ return;
3062
+ }
3063
+ super.load(data);
3064
+ if (data.destroy !== undefined) {
3065
+ this.destroy = data.destroy;
3066
+ }
3067
+ if (data.enable !== undefined) {
3068
+ this.enable = data.enable;
3069
+ }
3070
+ this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.opacity_min;
3071
+ if (data.speed !== undefined) {
3072
+ this.speed = data.speed;
3073
+ }
3074
+ if (data.startValue !== undefined) {
3075
+ this.startValue = data.startValue;
3076
+ }
3077
+ if (data.sync !== undefined) {
3078
+ this.sync = data.sync;
3079
+ }
3080
+ }
3081
+ }
2937
3082
  class Opacity_Opacity extends(null && ValueWithRandom){
2938
3083
  constructor() {
2939
3084
  super();
@@ -2992,13 +3137,13 @@
2992
3137
  this.enable = data.enable;
2993
3138
  }
2994
3139
  if (data.opacity !== undefined) {
2995
- this.opacity = data.opacity;
3140
+ this.opacity = setRangeValue(data.opacity);
2996
3141
  }
2997
3142
  if (data.width !== undefined) {
2998
- this.width = data.width;
3143
+ this.width = setRangeValue(data.width);
2999
3144
  }
3000
3145
  if (data.radius !== undefined) {
3001
- this.radius = data.radius;
3146
+ this.radius = setRangeValue(data.radius);
3002
3147
  }
3003
3148
  if (data.color !== undefined) {
3004
3149
  this.color = OptionsColor.create(this.color, data.color);
@@ -3023,16 +3168,33 @@
3023
3168
  this.enabled = data.enabled;
3024
3169
  }
3025
3170
  if (data.distance !== undefined) {
3026
- this.distance = data.distance;
3171
+ this.distance = setRangeValue(data.distance);
3027
3172
  }
3028
3173
  if (data.duration !== undefined) {
3029
- this.duration = data.duration;
3174
+ this.duration = setRangeValue(data.duration);
3030
3175
  }
3031
3176
  if (data.factor !== undefined) {
3032
- this.factor = data.factor;
3177
+ this.factor = setRangeValue(data.factor);
3033
3178
  }
3034
3179
  if (data.speed !== undefined) {
3035
- this.speed = data.speed;
3180
+ this.speed = setRangeValue(data.speed);
3181
+ }
3182
+ }
3183
+ }
3184
+ class RollLight_RollLight {
3185
+ constructor() {
3186
+ this.enable = false;
3187
+ this.value = 0;
3188
+ }
3189
+ load(data) {
3190
+ if (!data) {
3191
+ return;
3192
+ }
3193
+ if (data.enable !== undefined) {
3194
+ this.enable = data.enable;
3195
+ }
3196
+ if (data.value !== undefined) {
3197
+ this.value = setRangeValue(data.value);
3036
3198
  }
3037
3199
  }
3038
3200
  }
@@ -3064,6 +3226,27 @@
3064
3226
  }
3065
3227
  }
3066
3228
  }
3229
+ class RotateAnimation_RotateAnimation {
3230
+ constructor() {
3231
+ this.enable = false;
3232
+ this.speed = 0;
3233
+ this.sync = false;
3234
+ }
3235
+ load(data) {
3236
+ if (data === undefined) {
3237
+ return;
3238
+ }
3239
+ if (data.enable !== undefined) {
3240
+ this.enable = data.enable;
3241
+ }
3242
+ if (data.speed !== undefined) {
3243
+ this.speed = setRangeValue(data.speed);
3244
+ }
3245
+ if (data.sync !== undefined) {
3246
+ this.sync = data.sync;
3247
+ }
3248
+ }
3249
+ }
3067
3250
  class Rotate_Rotate extends(null && ValueWithRandom){
3068
3251
  constructor() {
3069
3252
  super();
@@ -3182,6 +3365,45 @@
3182
3365
  }
3183
3366
  }
3184
3367
  }
3368
+ class SizeAnimation_SizeAnimation extends(null && AnimationOptions){
3369
+ constructor() {
3370
+ super();
3371
+ this.destroy = "none";
3372
+ this.enable = false;
3373
+ this.speed = 5;
3374
+ this.startValue = "random";
3375
+ this.sync = false;
3376
+ }
3377
+ get size_min() {
3378
+ return this.minimumValue;
3379
+ }
3380
+ set size_min(value) {
3381
+ this.minimumValue = value;
3382
+ }
3383
+ load(data) {
3384
+ var _a;
3385
+ if (data === undefined) {
3386
+ return;
3387
+ }
3388
+ super.load(data);
3389
+ if (data.destroy !== undefined) {
3390
+ this.destroy = data.destroy;
3391
+ }
3392
+ if (data.enable !== undefined) {
3393
+ this.enable = data.enable;
3394
+ }
3395
+ this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.size_min;
3396
+ if (data.speed !== undefined) {
3397
+ this.speed = data.speed;
3398
+ }
3399
+ if (data.startValue !== undefined) {
3400
+ this.startValue = data.startValue;
3401
+ }
3402
+ if (data.sync !== undefined) {
3403
+ this.sync = data.sync;
3404
+ }
3405
+ }
3406
+ }
3185
3407
  class Size_Size extends(null && ValueWithRandom){
3186
3408
  constructor() {
3187
3409
  super();
@@ -3227,6 +3449,27 @@
3227
3449
  }
3228
3450
  }
3229
3451
  }
3452
+ class TiltAnimation_TiltAnimation {
3453
+ constructor() {
3454
+ this.enable = false;
3455
+ this.speed = 0;
3456
+ this.sync = false;
3457
+ }
3458
+ load(data) {
3459
+ if (data === undefined) {
3460
+ return;
3461
+ }
3462
+ if (data.enable !== undefined) {
3463
+ this.enable = data.enable;
3464
+ }
3465
+ if (data.speed !== undefined) {
3466
+ this.speed = setRangeValue(data.speed);
3467
+ }
3468
+ if (data.sync !== undefined) {
3469
+ this.sync = data.sync;
3470
+ }
3471
+ }
3472
+ }
3230
3473
  class Tilt_Tilt extends(null && ValueWithRandom){
3231
3474
  constructor() {
3232
3475
  super();
@@ -3249,6 +3492,43 @@
3249
3492
  }
3250
3493
  }
3251
3494
  }
3495
+ class TwinkleValues_TwinkleValues {
3496
+ constructor() {
3497
+ this.enable = false;
3498
+ this.frequency = .05;
3499
+ this.opacity = 1;
3500
+ }
3501
+ load(data) {
3502
+ if (data === undefined) {
3503
+ return;
3504
+ }
3505
+ if (data.color !== undefined) {
3506
+ this.color = OptionsColor.create(this.color, data.color);
3507
+ }
3508
+ if (data.enable !== undefined) {
3509
+ this.enable = data.enable;
3510
+ }
3511
+ if (data.frequency !== undefined) {
3512
+ this.frequency = data.frequency;
3513
+ }
3514
+ if (data.opacity !== undefined) {
3515
+ this.opacity = setRangeValue(data.opacity);
3516
+ }
3517
+ }
3518
+ }
3519
+ class Twinkle_Twinkle {
3520
+ constructor() {
3521
+ this.lines = new TwinkleValues;
3522
+ this.particles = new TwinkleValues;
3523
+ }
3524
+ load(data) {
3525
+ if (data === undefined) {
3526
+ return;
3527
+ }
3528
+ this.lines.load(data.lines);
3529
+ this.particles.load(data.particles);
3530
+ }
3531
+ }
3252
3532
  class Wobble_Wobble {
3253
3533
  constructor() {
3254
3534
  this.distance = 5;
@@ -3646,6 +3926,7 @@
3646
3926
  this.retina = {
3647
3927
  maxDistance: {}
3648
3928
  };
3929
+ this.ignoresResizeRatio = true;
3649
3930
  const pxRatio = container.retina.pixelRatio;
3650
3931
  const mainOptions = container.actualOptions;
3651
3932
  const particlesOptions = new ParticlesOptions;
@@ -3685,7 +3966,7 @@
3685
3966
  max: getRangeMax(sizeRange) * pxRatio,
3686
3967
  min: getRangeMin(sizeRange) * pxRatio,
3687
3968
  loops: 0,
3688
- maxLoops: sizeOptions.animation.count
3969
+ maxLoops: getRangeValue(sizeOptions.animation.count)
3689
3970
  };
3690
3971
  const sizeAnimation = sizeOptions.animation;
3691
3972
  if (sizeAnimation.enable) {
@@ -3719,6 +4000,12 @@
3719
4000
  this.initialVelocity = this.calculateVelocity();
3720
4001
  this.velocity = this.initialVelocity.copy();
3721
4002
  this.moveDecay = 1 - getRangeValue(this.options.move.decay);
4003
+ const gravityOptions = this.options.move.gravity;
4004
+ this.gravity = {
4005
+ enable: gravityOptions.enable,
4006
+ acceleration: getRangeValue(gravityOptions.acceleration),
4007
+ inverse: gravityOptions.inverse
4008
+ };
3722
4009
  this.position = this.calcPosition(container, position, clamp(zIndexValue, 0, container.zLayers));
3723
4010
  this.initialPosition = this.position.copy();
3724
4011
  this.offset = Vector.origin;
@@ -3926,12 +4213,7 @@
3926
4213
  return overlaps;
3927
4214
  }
3928
4215
  calculateVelocity() {
3929
- const baseVelocity = getParticleBaseVelocity(this.direction);
3930
- const res = baseVelocity.copy();
3931
- const moveOptions = this.options.move;
3932
- const rad = Math.PI / 180 * moveOptions.angle.value;
3933
- const radOffset = Math.PI / 180 * moveOptions.angle.offset;
3934
- const range = {
4216
+ 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 = {
3935
4217
  left: radOffset - rad / 2,
3936
4218
  right: radOffset + rad / 2
3937
4219
  };
@@ -4081,10 +4363,11 @@
4081
4363
  }
4082
4364
  for (const particle of this.array) {
4083
4365
  const resizeFactor = container.canvas.resizeFactor;
4084
- if (resizeFactor) {
4366
+ if (resizeFactor && !particle.ignoresResizeRatio) {
4085
4367
  particle.position.x *= resizeFactor.width;
4086
4368
  particle.position.y *= resizeFactor.height;
4087
4369
  }
4370
+ particle.ignoresResizeRatio = false;
4088
4371
  particle.bubble.inRange = false;
4089
4372
  for (const [, plugin] of this.container.plugins) {
4090
4373
  if (particle.destroyed) {
@@ -4320,13 +4603,13 @@
4320
4603
  container.canvas.size.height = element.offsetHeight * ratio;
4321
4604
  }
4322
4605
  const particles = options.particles;
4323
- this.attractDistance = particles.move.attract.distance * ratio;
4606
+ this.attractDistance = getRangeValue(particles.move.attract.distance) * ratio;
4324
4607
  this.linksDistance = particles.links.distance * ratio;
4325
4608
  this.linksWidth = particles.links.width * ratio;
4326
- this.sizeAnimationSpeed = particles.size.animation.speed * ratio;
4327
- this.maxSpeed = particles.move.gravity.maxSpeed * ratio;
4609
+ this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;
4610
+ this.maxSpeed = getRangeValue(particles.move.gravity.maxSpeed) * ratio;
4328
4611
  if (particles.orbit.radius !== undefined) {
4329
- this.orbitRadius = particles.orbit.radius * this.container.retina.pixelRatio;
4612
+ this.orbitRadius = getRangeValue(particles.orbit.radius) * this.container.retina.pixelRatio;
4330
4613
  }
4331
4614
  const modes = options.interactivity.modes;
4332
4615
  this.connectModeDistance = modes.connect.distance * ratio;
@@ -4346,19 +4629,19 @@
4346
4629
  const ratio = this.pixelRatio;
4347
4630
  const moveDistance = options.move.distance;
4348
4631
  const props = particle.retina;
4349
- props.attractDistance = options.move.attract.distance * ratio;
4632
+ props.attractDistance = getRangeValue(options.move.attract.distance) * ratio;
4350
4633
  props.linksDistance = options.links.distance * ratio;
4351
4634
  props.linksWidth = options.links.width * ratio;
4352
4635
  props.moveDrift = getRangeValue(options.move.drift) * ratio;
4353
4636
  props.moveSpeed = getRangeValue(options.move.speed) * ratio;
4354
- props.sizeAnimationSpeed = options.size.animation.speed * ratio;
4637
+ props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;
4355
4638
  if (particle.spin) {
4356
4639
  props.spinAcceleration = getRangeValue(options.move.spin.acceleration) * ratio;
4357
4640
  }
4358
4641
  const maxDistance = props.maxDistance;
4359
4642
  maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;
4360
4643
  maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;
4361
- props.maxSpeed = options.move.gravity.maxSpeed * ratio;
4644
+ props.maxSpeed = getRangeValue(options.move.gravity.maxSpeed) * ratio;
4362
4645
  }
4363
4646
  handleMotionChange(mediaQuery) {
4364
4647
  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(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var o=t();for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(window,(function(){return function(){"use strict";var e={d:function(t,o){for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function o(e,t,o){return Math.min(Math.max(e,t),o)}function n(e,t,o,n){return Math.floor((e*o+t*n)/(o+n))}function i(e){const t=s(e);let o=r(e);return t===o&&(o=0),Math.random()*(t-o)+o}function r(e){return"number"==typeof e?e:e.min}function s(e){return"number"==typeof e?e:e.max}function a(e,t){if(e===t||void 0===t&&"number"==typeof e)return e;const o=r(e),n=s(e);return void 0!==t?{min:Math.min(o,t),max:Math.max(n,t)}:a(o,n)}function l(e,t){return function(e,t){const o=e.x-t.x,n=e.y-t.y;return{dx:o,dy:n,distance:Math.sqrt(o*o+n*n)}}(e,t).distance}function u(e,t){if(t instanceof Array){for(const o of t)if(e.matches(o))return!0;return!1}return e.matches(t)}function b(e,t){return e===t||t instanceof Array&&t.indexOf(e)>-1}function c(e,t,o=!0){return e[void 0!==t&&o?t%e.length:function(e){return Math.floor(Math.random()*e.length)}(e)]}function d(e,t){const o=e.selectors;if(o instanceof Array)for(const n of o)t(n,e);else t(o,e)}function f(e,t){if(t&&e)return e instanceof Array?e.find((e=>u(t,e.selectors))):u(t,e.selectors)?e:void 0}function v(e,t,o){let n=o;return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function h(e){if(e.startsWith("rgb")){const t=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.]+)\s*)?\)/i.exec(e);return t?{a:t.length>4?parseFloat(t[5]):1,b:parseInt(t[3],10),g:parseInt(t[2],10),r:parseInt(t[1],10)}:void 0}if(e.startsWith("hsl")){const t=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(e);return t?function(e){const t=g(e);return{a:e.a,b:t.b,g:t.g,r:t.r}}({a:t.length>4?parseFloat(t[5]):1,h:parseInt(t[1],10),l:parseInt(t[3],10),s:parseInt(t[2],10)}):void 0}if(e.startsWith("hsv")){const t=/hsva?\(\s*(\d+)°\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(e);return t?function(e){const t=m(e);return{a:e.a,b:t.b,g:t.g,r:t.r}}({a:t.length>4?parseFloat(t[5]):1,h:parseInt(t[1],10),s:parseInt(t[2],10),v:parseInt(t[3],10)}):void 0}{const t=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,o=e.replace(t,((e,t,o,n,i)=>t+t+o+o+n+n+(void 0!==i?i+i:""))),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(o);return n?{a:void 0!==n[4]?parseInt(n[4],16)/255:1,b:parseInt(n[3],16),g:parseInt(n[2],16),r:parseInt(n[1],16)}:void 0}}function p(e,t,o=!0){var n,i,r;if(void 0===e)return;const s="string"==typeof e?{value:e}:e;let a;if("string"==typeof s.value)a=s.value===O.randomColorValue?M():function(e){return h(e)}(s.value);else if(s.value instanceof Array){a=p({value:c(s.value,t,o)})}else{const e=s.value,t=null!==(n=e.rgb)&&void 0!==n?n:s.value;if(void 0!==t.r)a=t;else{const t=null!==(i=e.hsl)&&void 0!==i?i:s.value;if(void 0!==t.h&&void 0!==t.l)a=g(t);else{const t=null!==(r=e.hsv)&&void 0!==r?r:s.value;void 0!==t.h&&void 0!==t.v&&(a=m(t))}}}return a}function y(e){const t=e.r/255,o=e.g/255,n=e.b/255,i=Math.max(t,o,n),r=Math.min(t,o,n),s={h:0,l:(i+r)/2,s:0};return i!=r&&(s.s=s.l<.5?(i-r)/(i+r):(i-r)/(2-i-r),s.h=t===i?(o-n)/(i-r):s.h=o===i?2+(n-t)/(i-r):4+(t-o)/(i-r)),s.l*=100,s.s*=100,s.h*=60,s.h<0&&(s.h+=360),s}function g(e){const t={b:0,g:0,r:0},o={h:e.h/360,l:e.l/100,s:e.s/100};if(0===o.s)t.b=o.l,t.g=o.l,t.r=o.l;else{const e=o.l<.5?o.l*(1+o.s):o.l+o.s-o.l*o.s,n=2*o.l-e;t.r=v(n,e,o.h+1/3),t.g=v(n,e,o.h),t.b=v(n,e,o.h-1/3)}return t.r=Math.floor(255*t.r),t.g=Math.floor(255*t.g),t.b=Math.floor(255*t.b),t}function m(e){const t={b:0,g:0,r:0},o=e.h/60,n=e.s/100,i=e.v/100,r=i*n,s=r*(1-Math.abs(o%2-1));let a;if(o>=0&&o<=1?a={r:r,g:s,b:0}:o>1&&o<=2?a={r:s,g:r,b:0}:o>2&&o<=3?a={r:0,g:r,b:s}:o>3&&o<=4?a={r:0,g:s,b:r}:o>4&&o<=5?a={r:s,g:0,b:r}:o>5&&o<=6&&(a={r:r,g:0,b:s}),a){const e=i-r;t.r=Math.floor(255*(a.r+e)),t.g=Math.floor(255*(a.g+e)),t.b=Math.floor(255*(a.b+e))}return t}function M(e){const t=null!=e?e:0;return{b:Math.floor(i(a(t,256))),g:Math.floor(i(a(t,256))),r:Math.floor(i(a(t,256)))}}function x(e,t,o,i){let r=e,s=t;return void 0===r.r&&(r=g(e)),void 0===s.r&&(s=g(t)),{b:n(r.b,s.b,o,i),g:n(r.g,s.g,o,i),r:n(r.r,s.r,o,i)}}e.r(t),e.d(t,{loadExternalBubbleInteraction:function(){return B}});class z{constructor(e,t){this.position={x:e,y:t}}}class w extends z{constructor(e,t,o){super(e,t),this.radius=o}contains(e){return l(e,this.position)<=this.radius}intersects(e){const t=e,o=e,n=this.position,i=e.position,r=Math.abs(i.x-n.x),s=Math.abs(i.y-n.y),a=this.radius;if(void 0!==o.radius){return a+o.radius>Math.sqrt(r*r+s+s)}if(void 0!==t.size){const e=t.size.width,o=t.size.height,n=Math.pow(r-e,2)+Math.pow(s-o,2);return!(r>a+e||s>a+o)&&(r<=e||s<=o||n<=a*a)}return!1}}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 E extends z{constructor(e,t,o,n){super(e,t),this.size={height:n,width:o}}contains(e){const t=this.size.width,o=this.size.height,n=this.position;return e.x>=n.x&&e.x<=n.x+t&&e.y>=n.y&&e.y<=n.y+o}intersects(e){const t=e,o=e,n=this.size.width,i=this.size.height,r=this.position,s=e.position;if(void 0!==o.radius)return o.intersects(this);if(void 0!==t.size){const e=t.size,o=e.width,a=e.height;return s.x<r.x+n&&s.x+o>r.x&&s.y<r.y+i&&s.y+a>r.y}return!1}}new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;function C(e,t,n,i){if(t>=n){return o(e+(t-n)*i,e,t)}if(t<n){return o(e-(n-t)*i,t,e)}}new WeakMap;class k extends class{constructor(e){this.container=e,this.type=0}}{constructor(e){super(e)}isEnabled(){const e=this.container,t=e.actualOptions,o=e.interactivity.mouse,n=t.interactivity.events,i=function(e,t){return t instanceof Array?!!t.find((t=>t.enable&&b(e,t.mode))):b(e,t.mode)}("bubble",n.onDiv);if(!(i||n.onHover.enable&&o.position||n.onClick.enable&&o.clickPosition))return!1;const r=n.onHover.mode,s=n.onClick.mode;return b("bubble",r)||b("bubble",s)||i}reset(e,t){e.bubble.inRange&&!t||(delete e.bubble.div,delete e.bubble.opacity,delete e.bubble.radius,delete e.bubble.color)}async interact(){const e=this.container.actualOptions.interactivity.events,t=e.onHover,o=e.onClick,n=t.enable,i=t.mode,r=o.enable,s=o.mode,a=e.onDiv;n&&b("bubble",i)?this.hoverBubble():r&&b("bubble",s)?this.clickBubble():function(e,t,o){if(t instanceof Array)for(const n of t){const t=n.mode;n.enable&&b(e,t)&&d(n,o)}else{const n=t.mode;t.enable&&b(e,n)&&d(t,o)}}("bubble",a,((e,t)=>this.singleSelectorHover(e,t)))}singleSelectorHover(e,t){const o=this.container,n=document.querySelectorAll(e);n.length&&n.forEach((e=>{const n=e,i=o.retina.pixelRatio,r={x:(n.offsetLeft+n.offsetWidth/2)*i,y:(n.offsetTop+n.offsetHeight/2)*i},s=n.offsetWidth/2*i,a="circle"===t.type?new w(r.x,r.y,s):new E(n.offsetLeft*i,n.offsetTop*i,n.offsetWidth*i,n.offsetHeight*i),l=o.particles.quadTree.query(a);for(const e of l){if(!a.contains(e.getPosition()))continue;e.bubble.inRange=!0;const t=f(o.actualOptions.interactivity.modes.bubble.divs,n);e.bubble.div&&e.bubble.div===n||(this.reset(e,!0),e.bubble.div=n),this.hoverBubbleSize(e,1,t),this.hoverBubbleOpacity(e,1,t),this.hoverBubbleColor(e,1,t)}}))}process(e,t,o,n){const i=this.container,r=n.bubbleObj.optValue;if(void 0===r)return;const s=i.actualOptions.interactivity.modes.bubble.duration,a=i.retina.bubbleModeDistance,l=n.particlesObj.optValue,u=n.bubbleObj.value,b=n.particlesObj.value||0,c=n.type;if(r!==l)if(i.bubble.durationEnd)u&&("size"===c&&delete e.bubble.radius,"opacity"===c&&delete e.bubble.opacity);else if(t<=a){if((null!=u?u:b)!==r){const t=b-o*(b-r)/s;"size"===c&&(e.bubble.radius=t),"opacity"===c&&(e.bubble.opacity=t)}}else"size"===c&&delete e.bubble.radius,"opacity"===c&&delete e.bubble.opacity}clickBubble(){var e,t;const o=this.container,n=o.actualOptions,i=o.interactivity.mouse.clickPosition;if(!i)return;const r=o.retina.bubbleModeDistance,a=o.particles.quadTree.queryCircle(i,r);for(const r of a){if(!o.bubble.clicking)continue;r.bubble.inRange=!o.bubble.durationEnd;const a=l(r.getPosition(),i),u=((new Date).getTime()-(o.interactivity.mouse.clickTime||0))/1e3;u>n.interactivity.modes.bubble.duration&&(o.bubble.durationEnd=!0),u>2*n.interactivity.modes.bubble.duration&&(o.bubble.clicking=!1,o.bubble.durationEnd=!1);const b={bubbleObj:{optValue:o.retina.bubbleModeSize,value:r.bubble.radius},particlesObj:{optValue:s(r.options.size.value)*o.retina.pixelRatio,value:r.size.value},type:"size"};this.process(r,a,u,b);const c={bubbleObj:{optValue:n.interactivity.modes.bubble.opacity,value:r.bubble.opacity},particlesObj:{optValue:s(r.options.opacity.value),value:null!==(t=null===(e=r.opacity)||void 0===e?void 0:e.value)&&void 0!==t?t:1},type:"opacity"};this.process(r,a,u,c),o.bubble.durationEnd?delete r.bubble.color:a<=o.retina.bubbleModeDistance?this.hoverBubbleColor(r,a):delete r.bubble.color}}hoverBubble(){const e=this.container,t=e.interactivity.mouse.position;if(void 0===t)return;const o=e.retina.bubbleModeDistance,n=e.particles.quadTree.queryCircle(t,o);for(const i of n){i.bubble.inRange=!0;const n=l(i.getPosition(),t),r=1-n/o;n<=o?r>=0&&e.interactivity.status===O.mouseMoveEvent&&(this.hoverBubbleSize(i,r),this.hoverBubbleOpacity(i,r),this.hoverBubbleColor(i,r)):this.reset(i),e.interactivity.status===O.mouseLeaveEvent&&this.reset(i)}}hoverBubbleSize(e,t,o){const n=this.container,i=(null==o?void 0:o.size)?o.size*n.retina.pixelRatio:n.retina.bubbleModeSize;if(void 0===i)return;const r=s(e.options.size.value)*n.retina.pixelRatio,a=C(e.size.value,i,r,t);void 0!==a&&(e.bubble.radius=a)}hoverBubbleOpacity(e,t,o){var n,i,r;const a=this.container.actualOptions,l=null!==(n=null==o?void 0:o.opacity)&&void 0!==n?n:a.interactivity.modes.bubble.opacity;if(!l)return;const u=e.options.opacity.value,b=C(null!==(r=null===(i=e.opacity)||void 0===i?void 0:i.value)&&void 0!==r?r:1,l,s(u),t);void 0!==b&&(e.bubble.opacity=b)}hoverBubbleColor(e,t,o){const n=this.container.actualOptions,i=null!=o?o:n.interactivity.modes.bubble;if(!e.bubble.finalColor){const t=i.color;if(!t)return;const o=t instanceof Array?c(t):t;e.bubble.finalColor=function(e,t,o=!0){const n=p(e,t,o);return void 0!==n?y(n):void 0}(o)}if(e.bubble.finalColor)if(i.mix){e.bubble.color=void 0;const o=e.getFillColor();e.bubble.color=o?y(x(o,e.bubble.finalColor,1-t,t)):e.bubble.finalColor}else e.bubble.color=e.bubble.finalColor}}async function B(e){await e.addInteractor("externalBubble",(e=>new k(e)))}return t}()}));