tsparticles 1.41.6 → 1.42.2

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.d.ts +1 -1
  2. package/Core/Canvas.js +8 -4
  3. package/Core/Interfaces/ICoordinates.d.ts +8 -0
  4. package/Core/Interfaces/IParticleGravity.d.ts +5 -0
  5. package/Core/Interfaces/IParticleGravity.js +2 -0
  6. package/Core/Interfaces/index.d.ts +1 -0
  7. package/Core/Interfaces/index.js +1 -0
  8. package/Core/Particle.d.ts +2 -1
  9. package/Core/Particle.js +8 -7
  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 +3 -3
  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.d.ts +1 -1
  61. package/browser/Core/Canvas.js +9 -5
  62. package/browser/Core/Interfaces/ICoordinates.d.ts +8 -0
  63. package/browser/Core/Interfaces/IParticleGravity.d.ts +5 -0
  64. package/browser/Core/Interfaces/IParticleGravity.js +1 -0
  65. package/browser/Core/Interfaces/index.d.ts +1 -0
  66. package/browser/Core/Interfaces/index.js +1 -0
  67. package/browser/Core/Particle.d.ts +2 -1
  68. package/browser/Core/Particle.js +8 -7
  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 +3 -3
  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.d.ts +1 -1
  120. package/esm/Core/Canvas.js +9 -5
  121. package/esm/Core/Interfaces/ICoordinates.d.ts +8 -0
  122. package/esm/Core/Interfaces/IParticleGravity.d.ts +5 -0
  123. package/esm/Core/Interfaces/IParticleGravity.js +1 -0
  124. package/esm/Core/Interfaces/index.d.ts +1 -0
  125. package/esm/Core/Interfaces/index.js +1 -0
  126. package/esm/Core/Particle.d.ts +2 -1
  127. package/esm/Core/Particle.js +8 -7
  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 +3 -3
  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 +15 -3
  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 +48 -45
  183. package/tsparticles.engine.min.js +2 -2
  184. package/tsparticles.interaction.external.attract.js +320 -34
  185. package/tsparticles.interaction.external.attract.min.js +1 -1
  186. package/tsparticles.interaction.external.bounce.js +320 -34
  187. package/tsparticles.interaction.external.bounce.min.js +1 -1
  188. package/tsparticles.interaction.external.bubble.js +320 -34
  189. package/tsparticles.interaction.external.bubble.min.js +1 -1
  190. package/tsparticles.interaction.external.connect.js +320 -34
  191. package/tsparticles.interaction.external.connect.min.js +1 -1
  192. package/tsparticles.interaction.external.grab.js +320 -34
  193. package/tsparticles.interaction.external.grab.min.js +1 -1
  194. package/tsparticles.interaction.external.repulse.js +320 -34
  195. package/tsparticles.interaction.external.repulse.min.js +1 -1
  196. package/tsparticles.interaction.external.trail.js +320 -34
  197. package/tsparticles.interaction.external.trail.min.js +1 -1
  198. package/tsparticles.interaction.particles.attract.js +320 -34
  199. package/tsparticles.interaction.particles.attract.min.js +1 -1
  200. package/tsparticles.interaction.particles.collisions.js +320 -34
  201. package/tsparticles.interaction.particles.collisions.min.js +1 -1
  202. package/tsparticles.interaction.particles.links.js +321 -35
  203. package/tsparticles.interaction.particles.links.min.js +2 -2
  204. package/tsparticles.js +74 -65
  205. package/tsparticles.min.js +2 -2
  206. package/tsparticles.pathseg.min.js +1 -1
  207. package/tsparticles.plugins.absorbers.js +328 -39
  208. package/tsparticles.plugins.absorbers.min.js +2 -2
  209. package/tsparticles.plugins.emitters.js +431 -142
  210. package/tsparticles.plugins.emitters.min.js +2 -2
  211. package/tsparticles.plugins.polygonMask.js +320 -34
  212. package/tsparticles.plugins.polygonMask.min.js +1 -1
  213. package/tsparticles.shape.circle.min.js +1 -1
  214. package/tsparticles.shape.image.js +320 -34
  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 +320 -34
  221. package/tsparticles.shape.text.min.js +1 -1
  222. package/tsparticles.slim.js +52 -49
  223. package/tsparticles.slim.min.js +2 -2
  224. package/tsparticles.updater.angle.js +321 -35
  225. package/tsparticles.updater.angle.min.js +2 -2
  226. package/tsparticles.updater.color.js +320 -34
  227. package/tsparticles.updater.color.min.js +2 -2
  228. package/tsparticles.updater.life.js +320 -34
  229. package/tsparticles.updater.life.min.js +1 -1
  230. package/tsparticles.updater.opacity.js +322 -36
  231. package/tsparticles.updater.opacity.min.js +2 -2
  232. package/tsparticles.updater.outModes.js +320 -34
  233. package/tsparticles.updater.outModes.min.js +1 -1
  234. package/tsparticles.updater.roll.js +323 -37
  235. package/tsparticles.updater.roll.min.js +2 -2
  236. package/tsparticles.updater.size.js +320 -34
  237. package/tsparticles.updater.size.min.js +1 -1
  238. package/tsparticles.updater.strokeColor.js +320 -34
  239. package/tsparticles.updater.strokeColor.min.js +2 -2
  240. package/tsparticles.updater.tilt.js +321 -35
  241. package/tsparticles.updater.tilt.min.js +2 -2
  242. package/tsparticles.updater.wobble.js +320 -34
  243. package/tsparticles.updater.wobble.min.js +1 -1
  244. package/umd/Core/Canvas.d.ts +1 -1
  245. package/umd/Core/Canvas.js +8 -4
  246. package/umd/Core/Interfaces/ICoordinates.d.ts +8 -0
  247. package/umd/Core/Interfaces/IParticleGravity.d.ts +5 -0
  248. package/umd/Core/Interfaces/IParticleGravity.js +12 -0
  249. package/umd/Core/Interfaces/index.d.ts +1 -0
  250. package/umd/Core/Interfaces/index.js +2 -1
  251. package/umd/Core/Particle.d.ts +2 -1
  252. package/umd/Core/Particle.js +8 -7
  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 +3 -3
  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
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TiltAnimation = void 0;
4
+ const Utils_1 = require("../../../../Utils");
4
5
  class TiltAnimation {
5
6
  constructor() {
6
7
  this.enable = false;
@@ -15,7 +16,7 @@ class TiltAnimation {
15
16
  this.enable = data.enable;
16
17
  }
17
18
  if (data.speed !== undefined) {
18
- this.speed = data.speed;
19
+ this.speed = (0, Utils_1.setRangeValue)(data.speed);
19
20
  }
20
21
  if (data.sync !== undefined) {
21
22
  this.sync = data.sync;
@@ -1,12 +1,12 @@
1
+ import type { RangeValue, RecursivePartial } from "../../../../Types";
1
2
  import type { IOptionLoader } from "../../../Interfaces/IOptionLoader";
2
3
  import type { ITwinkleValues } from "../../../Interfaces/Particles/Twinkle/ITwinkleValues";
3
4
  import { OptionsColor } from "../../OptionsColor";
4
- import type { RecursivePartial } from "../../../../Types";
5
5
  export declare class TwinkleValues implements ITwinkleValues, IOptionLoader<ITwinkleValues> {
6
6
  color?: OptionsColor;
7
7
  enable: boolean;
8
8
  frequency: number;
9
- opacity: number;
9
+ opacity: RangeValue;
10
10
  constructor();
11
11
  load(data?: RecursivePartial<ITwinkleValues>): void;
12
12
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TwinkleValues = void 0;
4
4
  const OptionsColor_1 = require("../../OptionsColor");
5
+ const Utils_1 = require("../../../../Utils");
5
6
  class TwinkleValues {
6
7
  constructor() {
7
8
  this.enable = false;
@@ -22,7 +23,7 @@ class TwinkleValues {
22
23
  this.frequency = data.frequency;
23
24
  }
24
25
  if (data.opacity !== undefined) {
25
- this.opacity = data.opacity;
26
+ this.opacity = (0, Utils_1.setRangeValue)(data.opacity);
26
27
  }
27
28
  }
28
29
  }
@@ -1,6 +1,7 @@
1
+ import { RangeValue } from "../../Types";
1
2
  export interface IAnimation {
2
- count: number;
3
+ count: RangeValue;
3
4
  enable: boolean;
4
- speed: number;
5
+ speed: RangeValue;
5
6
  sync: boolean;
6
7
  }
@@ -1,6 +1,7 @@
1
- import type { ICoordinates } from "../../../../Core/Interfaces/ICoordinates";
1
+ import type { ICoordinates } from "../../../../Core";
2
+ import type { RangeValue } from "../../../../Types";
2
3
  export interface IAttract {
3
- distance: number;
4
+ distance: RangeValue;
4
5
  enable: boolean;
5
6
  rotateX: number;
6
7
  rotateY: number;
@@ -1,4 +1,5 @@
1
+ import type { RangeValue } from "../../../../Types";
1
2
  export interface IMoveAngle {
2
- offset: number;
3
- value: number;
3
+ offset: RangeValue;
4
+ value: RangeValue;
4
5
  }
@@ -1,6 +1,7 @@
1
+ import type { RangeValue } from "../../../../Types";
1
2
  export interface IMoveGravity {
2
- acceleration: number;
3
+ acceleration: RangeValue;
3
4
  enable: boolean;
4
5
  inverse: boolean;
5
- maxSpeed: number;
6
+ maxSpeed: RangeValue;
6
7
  }
@@ -2,11 +2,12 @@ import type { IAnimatable } from "../../IAnimatable";
2
2
  import type { IAnimation } from "../../IAnimation";
3
3
  import type { IColor } from "../../../../Core";
4
4
  import type { IValueWithRandom } from "../../IValueWithRandom";
5
+ import type { RangeValue } from "../../../../Types";
5
6
  export interface IOrbit extends IAnimatable<IAnimation> {
6
7
  color?: string | IColor;
7
8
  enable: boolean;
8
- radius?: number;
9
+ radius?: RangeValue;
9
10
  rotation: IValueWithRandom;
10
- opacity: number;
11
- width: number;
11
+ opacity: RangeValue;
12
+ width: RangeValue;
12
13
  }
@@ -1,8 +1,9 @@
1
1
  import type { IValueWithRandom } from "../../IValueWithRandom";
2
+ import type { RangeValue } from "../../../../Types";
2
3
  export interface IRepulse extends IValueWithRandom {
3
4
  enabled: boolean;
4
- distance: number;
5
- duration: number;
6
- factor: number;
7
- speed: number;
5
+ distance: RangeValue;
6
+ duration: RangeValue;
7
+ factor: RangeValue;
8
+ speed: RangeValue;
8
9
  }
@@ -1,4 +1,5 @@
1
+ import type { RangeValue } from "../../../../Types";
1
2
  export interface IRollLight {
2
3
  enable: boolean;
3
- value: number;
4
+ value: RangeValue;
4
5
  }
@@ -1,5 +1,6 @@
1
+ import type { RangeValue } from "../../../../Types";
1
2
  export interface IRotateAnimation {
2
3
  enable: boolean;
3
- speed: number;
4
+ speed: RangeValue;
4
5
  sync: boolean;
5
6
  }
@@ -1,5 +1,6 @@
1
+ import type { RangeValue } from "../../../../Types";
1
2
  export interface ITiltAnimation {
2
3
  enable: boolean;
3
- speed: number;
4
+ speed: RangeValue;
4
5
  sync: boolean;
5
6
  }
@@ -1,7 +1,8 @@
1
- import type { IColor } from "../../../../Core/Interfaces/Colors";
1
+ import type { IColor } from "../../../../Core";
2
+ import type { RangeValue } from "../../../../Types";
2
3
  export interface ITwinkleValues {
3
4
  color?: string | IColor;
4
5
  enable: boolean;
5
6
  frequency: number;
6
- opacity: number;
7
+ opacity: RangeValue;
7
8
  }
@@ -105,7 +105,7 @@ class AbsorberInstance {
105
105
  var _a, _b;
106
106
  const container = this.container;
107
107
  const percentPosition = this.options.position;
108
- return Core_1.Vector.create((((_a = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.x) !== null && _a !== void 0 ? _a : Math.random() * 100) / 100) * container.canvas.size.width, (((_b = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.y) !== null && _b !== void 0 ? _b : Math.random() * 100) / 100) * container.canvas.size.height);
108
+ return Core_1.Vector.create(((0, Utils_1.getRangeValue)((_a = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.x) !== null && _a !== void 0 ? _a : Math.random() * 100) / 100) * container.canvas.size.width, ((0, Utils_1.getRangeValue)((_b = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.y) !== null && _b !== void 0 ? _b : Math.random() * 100) / 100) * container.canvas.size.height);
109
109
  }
110
110
  updateParticlePosition(particle, v) {
111
111
  var _a;
@@ -1,7 +1,7 @@
1
1
  import { AbsorberSize } from "./AbsorberSize";
2
2
  import type { IAbsorber } from "../Interfaces/IAbsorber";
3
- import type { ICoordinates } from "../../../../Core";
4
3
  import type { IOptionLoader } from "../../../../Options/Interfaces/IOptionLoader";
4
+ import type { IRangedCoordinates } from "../../../../Core";
5
5
  import { OptionsColor } from "../../../../Options/Classes/OptionsColor";
6
6
  import type { RecursivePartial } from "../../../../Types";
7
7
  export declare class Absorber implements IAbsorber, IOptionLoader<IAbsorber> {
@@ -9,7 +9,7 @@ export declare class Absorber implements IAbsorber, IOptionLoader<IAbsorber> {
9
9
  draggable: boolean;
10
10
  name?: string;
11
11
  opacity: number;
12
- position?: RecursivePartial<ICoordinates>;
12
+ position?: RecursivePartial<IRangedCoordinates>;
13
13
  size: AbsorberSize;
14
14
  destroy: boolean;
15
15
  orbits: boolean;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Absorber = void 0;
4
4
  const AbsorberSize_1 = require("./AbsorberSize");
5
5
  const OptionsColor_1 = require("../../../../Options/Classes/OptionsColor");
6
+ const Utils_1 = require("../../../../Utils");
6
7
  class Absorber {
7
8
  constructor() {
8
9
  this.color = new OptionsColor_1.OptionsColor();
@@ -28,10 +29,13 @@ class Absorber {
28
29
  this.opacity = data.opacity;
29
30
  }
30
31
  if (data.position !== undefined) {
31
- this.position = {
32
- x: data.position.x,
33
- y: data.position.y,
34
- };
32
+ this.position = {};
33
+ if (data.position.x !== undefined) {
34
+ this.position.x = (0, Utils_1.setRangeValue)(data.position.x);
35
+ }
36
+ if (data.position.y !== undefined) {
37
+ this.position.y = (0, Utils_1.setRangeValue)(data.position.y);
38
+ }
35
39
  }
36
40
  if (data.size !== undefined) {
37
41
  this.size.load(data.size);
@@ -1,11 +1,11 @@
1
- import type { IColor, ICoordinates } from "../../../../Core";
1
+ import type { IColor, IRangedCoordinates } from "../../../../Core";
2
2
  import type { IAbsorberSize } from "./IAbsorberSize";
3
3
  import { RecursivePartial } from "../../../../Types";
4
4
  export interface IAbsorber {
5
5
  color: IColor | string;
6
6
  name?: string;
7
7
  opacity: number;
8
- position?: RecursivePartial<ICoordinates>;
8
+ position?: RecursivePartial<IRangedCoordinates>;
9
9
  size: IAbsorberSize;
10
10
  draggable: boolean;
11
11
  destroy: boolean;
@@ -211,8 +211,8 @@ class EmitterInstance {
211
211
  const container = this.container;
212
212
  const percentPosition = this.options.position;
213
213
  return {
214
- x: (((_a = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.x) !== null && _a !== void 0 ? _a : Math.random() * 100) / 100) * container.canvas.size.width,
215
- y: (((_b = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.y) !== null && _b !== void 0 ? _b : Math.random() * 100) / 100) * container.canvas.size.height,
214
+ x: ((0, Utils_1.getRangeValue)((_a = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.x) !== null && _a !== void 0 ? _a : Math.random() * 100) / 100) * container.canvas.size.width,
215
+ y: ((0, Utils_1.getRangeValue)((_b = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.y) !== null && _b !== void 0 ? _b : Math.random() * 100) / 100) * container.canvas.size.height,
216
216
  };
217
217
  }
218
218
  emit() {
@@ -261,7 +261,7 @@ class EmitterInstance {
261
261
  const colorOffset = (0, Utils_1.randomInRange)(animation.offset);
262
262
  const delay = (0, Utils_1.getRangeValue)(this.options.rate.delay);
263
263
  const emitFactor = (1000 * delay) / container.retina.reduceFactor;
264
- const colorSpeed = (_a = animation.speed) !== null && _a !== void 0 ? _a : 0;
264
+ const colorSpeed = (0, Utils_1.getRangeValue)((_a = animation.speed) !== null && _a !== void 0 ? _a : 0);
265
265
  return (initValue + (colorSpeed * container.fpsLimit) / emitFactor + colorOffset * 3.6) % maxValue;
266
266
  }
267
267
  }
@@ -4,10 +4,10 @@ import { EmitterLife } from "./EmitterLife";
4
4
  import { EmitterRate } from "./EmitterRate";
5
5
  import { EmitterShapeType } from "../../Enums";
6
6
  import { EmitterSize } from "./EmitterSize";
7
- import type { ICoordinates } from "../../../../Core";
8
7
  import type { IEmitter } from "../Interfaces/IEmitter";
9
8
  import type { IOptionLoader } from "../../../../Options/Interfaces/IOptionLoader";
10
9
  import type { IParticles } from "../../../../Options/Interfaces/Particles/IParticles";
10
+ import type { IRangedCoordinates } from "../../../../Core";
11
11
  import type { RecursivePartial } from "../../../../Types";
12
12
  export declare class Emitter implements IEmitter, IOptionLoader<IEmitter> {
13
13
  autoPlay: boolean;
@@ -18,7 +18,7 @@ export declare class Emitter implements IEmitter, IOptionLoader<IEmitter> {
18
18
  life: EmitterLife;
19
19
  name?: string;
20
20
  particles?: RecursivePartial<IParticles>;
21
- position?: RecursivePartial<ICoordinates>;
21
+ position?: RecursivePartial<IRangedCoordinates>;
22
22
  rate: EmitterRate;
23
23
  shape: EmitterShapeType | keyof typeof EmitterShapeType;
24
24
  spawnColor?: AnimatableColor;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Emitter = void 0;
4
+ const Utils_1 = require("../../../../Utils");
4
5
  const AnimatableColor_1 = require("../../../../Options/Classes/AnimatableColor");
5
6
  const EmitterLife_1 = require("./EmitterLife");
6
7
  const EmitterRate_1 = require("./EmitterRate");
7
8
  const EmitterSize_1 = require("./EmitterSize");
8
- const Utils_1 = require("../../../../Utils");
9
9
  class Emitter {
10
10
  constructor() {
11
11
  this.autoPlay = true;
@@ -45,10 +45,13 @@ class Emitter {
45
45
  this.shape = data.shape;
46
46
  }
47
47
  if (data.position !== undefined) {
48
- this.position = {
49
- x: data.position.x,
50
- y: data.position.y,
51
- };
48
+ this.position = {};
49
+ if (data.position.x !== undefined) {
50
+ this.position.x = (0, Utils_1.setRangeValue)(data.position.x);
51
+ }
52
+ if (data.position.y !== undefined) {
53
+ this.position.y = (0, Utils_1.setRangeValue)(data.position.y);
54
+ }
52
55
  }
53
56
  if (data.spawnColor !== undefined) {
54
57
  if (this.spawnColor === undefined) {
@@ -1,11 +1,11 @@
1
1
  import type { MoveDirection, MoveDirectionAlt } from "../../../../Enums";
2
2
  import type { EmitterShapeType } from "../../Enums";
3
3
  import type { IAnimatableColor } from "../../../../Options/Interfaces/IAnimatableColor";
4
- import type { ICoordinates } from "../../../../Core";
5
4
  import type { IEmitterLife } from "./IEmitterLife";
6
5
  import type { IEmitterRate } from "./IEmitterRate";
7
6
  import type { IEmitterSize } from "./IEmitterSize";
8
7
  import type { IParticles } from "../../../../Options/Interfaces/Particles/IParticles";
8
+ import type { IRangedCoordinates } from "../../../../Core";
9
9
  import type { RecursivePartial } from "../../../../Types";
10
10
  export interface IEmitter {
11
11
  autoPlay: boolean;
@@ -16,7 +16,7 @@ export interface IEmitter {
16
16
  life: IEmitterLife;
17
17
  name?: string;
18
18
  particles?: RecursivePartial<IParticles>;
19
- position?: RecursivePartial<ICoordinates>;
19
+ position?: RecursivePartial<IRangedCoordinates>;
20
20
  rate: IEmitterRate;
21
21
  shape: EmitterShapeType | keyof typeof EmitterShapeType;
22
22
  spawnColor?: IAnimatableColor;
@@ -57,7 +57,8 @@ class AngleUpdater {
57
57
  }
58
58
  const rotateAnimation = particle.options.rotate.animation;
59
59
  if (rotateAnimation.enable) {
60
- particle.rotate.velocity = (rotateAnimation.speed / 360) * this.container.retina.reduceFactor;
60
+ particle.rotate.velocity =
61
+ ((0, Utils_1.getRangeValue)(rotateAnimation.speed) / 360) * this.container.retina.reduceFactor;
61
62
  if (!rotateAnimation.sync) {
62
63
  particle.rotate.velocity *= Math.random();
63
64
  }
@@ -71,7 +71,7 @@ class OpacityUpdater {
71
71
  min: (0, Utils_1.getRangeMin)(opacityOptions.value),
72
72
  value: (0, Utils_1.getRangeValue)(opacityOptions.value),
73
73
  loops: 0,
74
- maxLoops: opacityOptions.animation.count,
74
+ maxLoops: (0, Utils_1.getRangeValue)(opacityOptions.animation.count),
75
75
  };
76
76
  const opacityAnimation = opacityOptions.animation;
77
77
  if (opacityAnimation.enable) {
@@ -95,7 +95,8 @@ class OpacityUpdater {
95
95
  particle.opacity.status = 1;
96
96
  break;
97
97
  }
98
- particle.opacity.velocity = (opacityAnimation.speed / 100) * this.container.retina.reduceFactor;
98
+ particle.opacity.velocity =
99
+ ((0, Utils_1.getRangeValue)(opacityAnimation.speed) / 100) * this.container.retina.reduceFactor;
99
100
  if (!opacityAnimation.sync) {
100
101
  particle.opacity.velocity *= Math.random();
101
102
  }
@@ -29,19 +29,19 @@ class RollUpdater {
29
29
  const alterType = Math.random() >= 0.5 ? "darken" : "enlighten";
30
30
  particle.roll.alter = {
31
31
  type: alterType,
32
- value: alterType === "darken" ? rollOpt.darken.value : rollOpt.enlighten.value,
32
+ value: (0, Utils_1.getRangeValue)(alterType === "darken" ? rollOpt.darken.value : rollOpt.enlighten.value),
33
33
  };
34
34
  }
35
35
  else if (rollOpt.darken.enable) {
36
36
  particle.roll.alter = {
37
37
  type: "darken",
38
- value: rollOpt.darken.value,
38
+ value: (0, Utils_1.getRangeValue)(rollOpt.darken.value),
39
39
  };
40
40
  }
41
41
  else if (rollOpt.enlighten.enable) {
42
42
  particle.roll.alter = {
43
43
  type: "enlighten",
44
- value: rollOpt.enlighten.value,
44
+ value: (0, Utils_1.getRangeValue)(rollOpt.enlighten.value),
45
45
  };
46
46
  }
47
47
  }
@@ -58,7 +58,7 @@ class TiltUpdater {
58
58
  }
59
59
  const tiltAnimation = particle.options.tilt.animation;
60
60
  if (tiltAnimation.enable) {
61
- particle.tilt.velocity = (tiltAnimation.speed / 360) * this.container.retina.reduceFactor;
61
+ particle.tilt.velocity = ((0, Utils_1.getRangeValue)(tiltAnimation.speed) / 360) * this.container.retina.reduceFactor;
62
62
  if (!tiltAnimation.sync) {
63
63
  particle.tilt.velocity *= Math.random();
64
64
  }
@@ -460,7 +460,7 @@ exports.getHslAnimationFromHsl = getHslAnimationFromHsl;
460
460
  function setColorAnimation(colorValue, colorAnimation, reduceFactor) {
461
461
  colorValue.enable = colorAnimation.enable;
462
462
  if (colorValue.enable) {
463
- colorValue.velocity = (colorAnimation.speed / 100) * reduceFactor;
463
+ colorValue.velocity = ((0, NumberUtils_1.getRangeValue)(colorAnimation.speed) / 100) * reduceFactor;
464
464
  if (colorAnimation.sync) {
465
465
  return;
466
466
  }
@@ -21,7 +21,7 @@ export declare class Canvas {
21
21
  */
22
22
  private context;
23
23
  private generatedCanvas;
24
- private coverColor?;
24
+ private coverColorStyle?;
25
25
  private trailFillColor?;
26
26
  private originalStyle?;
27
27
  /**
@@ -1,4 +1,4 @@
1
- import { clear, colorToHsl, colorToRgb, deepExtend, drawConnectLine, drawGrabLine, drawParticle, drawParticlePlugin, drawPlugin, getStyleFromHsl, getStyleFromRgb, gradient, paintBase, } from "../Utils";
1
+ import { clear, colorToHsl, colorToRgb, deepExtend, drawConnectLine, drawGrabLine, drawParticle, drawParticlePlugin, drawPlugin, getRangeValue, getStyleFromHsl, getStyleFromRgb, gradient, paintBase, } from "../Utils";
2
2
  import { Constants } from "./Utils";
3
3
  /**
4
4
  * Canvas manager
@@ -62,9 +62,9 @@ export class Canvas {
62
62
  paint() {
63
63
  const options = this.container.actualOptions;
64
64
  this.draw((ctx) => {
65
- if (options.backgroundMask.enable && options.backgroundMask.cover && this.coverColor) {
65
+ if (options.backgroundMask.enable && options.backgroundMask.cover) {
66
66
  clear(ctx, this.size);
67
- this.paintBase(getStyleFromRgb(this.coverColor, this.coverColor.a));
67
+ this.paintBase(this.coverColorStyle);
68
68
  }
69
69
  else {
70
70
  this.paintBase();
@@ -176,7 +176,9 @@ export class Canvas {
176
176
  const zIndexOptions = particle.options.zIndex;
177
177
  const zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate;
178
178
  const radius = particle.getRadius();
179
- 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;
179
+ const opacity = twinkling
180
+ ? getRangeValue(twinkle.opacity)
181
+ : (_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;
180
182
  const strokeOpacity = (_f = (_e = particle.stroke) === null || _e === void 0 ? void 0 : _e.opacity) !== null && _f !== void 0 ? _f : opacity;
181
183
  const zOpacity = opacity * zOpacityFactor;
182
184
  const fillColorValue = fColor ? getStyleFromHsl(fColor, zOpacity) : undefined;
@@ -246,12 +248,14 @@ export class Canvas {
246
248
  const color = cover.color;
247
249
  const coverRgb = colorToRgb(color);
248
250
  if (coverRgb) {
249
- this.coverColor = {
251
+ const coverColor = {
250
252
  r: coverRgb.r,
251
253
  g: coverRgb.g,
252
254
  b: coverRgb.b,
253
255
  a: cover.opacity,
254
256
  };
257
+ this.coverColorStyle = getStyleFromRgb(coverColor, coverColor.a);
258
+ console.log(this.coverColorStyle);
255
259
  }
256
260
  }
257
261
  initTrail() {
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @category Interfaces
3
3
  */
4
+ import type { RangeValue } from "../../Types";
4
5
  export interface ICoordinates {
5
6
  x: number;
6
7
  y: number;
@@ -8,3 +9,10 @@ export interface ICoordinates {
8
9
  export interface ICoordinates3d extends ICoordinates {
9
10
  z: number;
10
11
  }
12
+ export interface IRangedCoordinates {
13
+ x: RangeValue;
14
+ y: RangeValue;
15
+ }
16
+ export interface IRangedCoordinates3d extends IRangedCoordinates {
17
+ z: RangeValue;
18
+ }
@@ -0,0 +1,5 @@
1
+ export interface IParticleGravity {
2
+ enable: boolean;
3
+ acceleration: number;
4
+ inverse: boolean;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -18,6 +18,7 @@ export * from "./IMovePathGenerator";
18
18
  export * from "./IParticle";
19
19
  export * from "./IParticleGradientAnimation";
20
20
  export * from "./IParticleGradientColorAnimation";
21
+ export * from "./IParticleGravity";
21
22
  export * from "./IParticleHslAnimation";
22
23
  export * from "./IParticlesInteractor";
23
24
  export * from "./IParticleLife";
@@ -18,6 +18,7 @@ export * from "./IMovePathGenerator";
18
18
  export * from "./IParticle";
19
19
  export * from "./IParticleGradientAnimation";
20
20
  export * from "./IParticleGradientColorAnimation";
21
+ export * from "./IParticleGravity";
21
22
  export * from "./IParticleHslAnimation";
22
23
  export * from "./IParticlesInteractor";
23
24
  export * from "./IParticleLife";
@@ -1,5 +1,5 @@
1
1
  import { ShapeType } from "../Enums";
2
- import type { IBubbleParticleData, ICoordinates, ICoordinates3d, IDelta, IHsl, IParticle, IParticleGradientAnimation, IParticleHslAnimation, IParticleLife, IParticleNumericValueAnimation, IParticleRetinaProps, IParticleRoll, IParticleSpin, IParticleTiltValueAnimation, IParticleValueAnimation, IParticleWobble, IRgb, IShapeValues } from "./Interfaces";
2
+ import type { IBubbleParticleData, ICoordinates, ICoordinates3d, IDelta, IHsl, IParticle, IParticleGradientAnimation, IParticleGravity, IParticleHslAnimation, IParticleLife, IParticleNumericValueAnimation, IParticleRetinaProps, IParticleRoll, IParticleSpin, IParticleTiltValueAnimation, IParticleValueAnimation, IParticleWobble, IRgb, IShapeValues } from "./Interfaces";
3
3
  import { Vector, Vector3d } from "./Utils";
4
4
  import type { Container } from "./Container";
5
5
  import type { Engine } from "../engine";
@@ -41,6 +41,7 @@ export declare class Particle implements IParticle {
41
41
  strokeWidth?: number;
42
42
  stroke?: Stroke;
43
43
  strokeColor?: IParticleHslAnimation;
44
+ readonly gravity: IParticleGravity;
44
45
  readonly moveDecay: number;
45
46
  readonly direction: number;
46
47
  readonly position: Vector3d;
@@ -91,7 +91,7 @@ export class Particle {
91
91
  max: getRangeMax(sizeRange) * pxRatio,
92
92
  min: getRangeMin(sizeRange) * pxRatio,
93
93
  loops: 0,
94
- maxLoops: sizeOptions.animation.count,
94
+ maxLoops: getRangeValue(sizeOptions.animation.count),
95
95
  };
96
96
  const sizeAnimation = sizeOptions.animation;
97
97
  if (sizeAnimation.enable) {
@@ -126,6 +126,12 @@ export class Particle {
126
126
  this.initialVelocity = this.calculateVelocity();
127
127
  this.velocity = this.initialVelocity.copy();
128
128
  this.moveDecay = 1 - getRangeValue(this.options.move.decay);
129
+ const gravityOptions = this.options.move.gravity;
130
+ this.gravity = {
131
+ enable: gravityOptions.enable,
132
+ acceleration: getRangeValue(gravityOptions.acceleration),
133
+ inverse: gravityOptions.inverse,
134
+ };
129
135
  /* position */
130
136
  this.position = this.calcPosition(container, position, clamp(zIndexValue, 0, container.zLayers));
131
137
  this.initialPosition = this.position.copy();
@@ -340,12 +346,7 @@ export class Particle {
340
346
  return overlaps;
341
347
  }
342
348
  calculateVelocity() {
343
- const baseVelocity = getParticleBaseVelocity(this.direction);
344
- const res = baseVelocity.copy();
345
- const moveOptions = this.options.move;
346
- const rad = (Math.PI / 180) * moveOptions.angle.value;
347
- const radOffset = (Math.PI / 180) * moveOptions.angle.offset;
348
- const range = {
349
+ 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 = {
349
350
  left: radOffset - rad / 2,
350
351
  right: radOffset + rad / 2,
351
352
  };
@@ -49,13 +49,13 @@ export class Retina {
49
49
  container.canvas.size.height = element.offsetHeight * ratio;
50
50
  }
51
51
  const particles = options.particles;
52
- this.attractDistance = particles.move.attract.distance * ratio;
52
+ this.attractDistance = getRangeValue(particles.move.attract.distance) * ratio;
53
53
  this.linksDistance = particles.links.distance * ratio;
54
54
  this.linksWidth = particles.links.width * ratio;
55
- this.sizeAnimationSpeed = particles.size.animation.speed * ratio;
56
- this.maxSpeed = particles.move.gravity.maxSpeed * ratio;
55
+ this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;
56
+ this.maxSpeed = getRangeValue(particles.move.gravity.maxSpeed) * ratio;
57
57
  if (particles.orbit.radius !== undefined) {
58
- this.orbitRadius = particles.orbit.radius * this.container.retina.pixelRatio;
58
+ this.orbitRadius = getRangeValue(particles.orbit.radius) * this.container.retina.pixelRatio;
59
59
  }
60
60
  const modes = options.interactivity.modes;
61
61
  this.connectModeDistance = modes.connect.distance * ratio;
@@ -75,19 +75,19 @@ export class Retina {
75
75
  const ratio = this.pixelRatio;
76
76
  const moveDistance = options.move.distance;
77
77
  const props = particle.retina;
78
- props.attractDistance = options.move.attract.distance * ratio;
78
+ props.attractDistance = getRangeValue(options.move.attract.distance) * ratio;
79
79
  props.linksDistance = options.links.distance * ratio;
80
80
  props.linksWidth = options.links.width * ratio;
81
81
  props.moveDrift = getRangeValue(options.move.drift) * ratio;
82
82
  props.moveSpeed = getRangeValue(options.move.speed) * ratio;
83
- props.sizeAnimationSpeed = options.size.animation.speed * ratio;
83
+ props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;
84
84
  if (particle.spin) {
85
85
  props.spinAcceleration = getRangeValue(options.move.spin.acceleration) * ratio;
86
86
  }
87
87
  const maxDistance = props.maxDistance;
88
88
  maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;
89
89
  maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;
90
- props.maxSpeed = options.move.gravity.maxSpeed * ratio;
90
+ props.maxSpeed = getRangeValue(options.move.gravity.maxSpeed) * ratio;
91
91
  }
92
92
  handleMotionChange(mediaQuery) {
93
93
  const options = this.container.actualOptions;
@@ -56,7 +56,7 @@ export class ParticlesMover {
56
56
  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)) *
57
57
  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;
58
58
  this.applyPath(particle, delta);
59
- const gravityOptions = moveOptions.gravity;
59
+ const gravityOptions = particle.gravity;
60
60
  const gravityFactor = gravityOptions.enable && gravityOptions.inverse ? -1 : 1;
61
61
  if (gravityOptions.enable && moveSpeed) {
62
62
  particle.velocity.y += (gravityFactor * (gravityOptions.acceleration * delta.factor)) / (60 * moveSpeed);
@@ -71,7 +71,7 @@ export class ParticlesMover {
71
71
  const velocity = particle.velocity.mult(moveSpeed);
72
72
  const maxSpeed = (_c = particle.retina.maxSpeed) !== null && _c !== void 0 ? _c : container.retina.maxSpeed;
73
73
  if (gravityOptions.enable &&
74
- gravityOptions.maxSpeed > 0 &&
74
+ maxSpeed > 0 &&
75
75
  ((!gravityOptions.inverse && velocity.y >= 0 && velocity.y >= maxSpeed) ||
76
76
  (gravityOptions.inverse && velocity.y <= 0 && velocity.y <= -maxSpeed))) {
77
77
  velocity.y = gravityFactor * maxSpeed;