@tsparticles/engine 4.0.0-alpha.2 → 4.0.0-alpha.20

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 (428) hide show
  1. package/515.min.js +1 -0
  2. package/README.md +2 -5
  3. package/browser/Core/Canvas.js +238 -154
  4. package/browser/Core/Container.js +111 -227
  5. package/browser/Core/Engine.js +84 -124
  6. package/browser/Core/Particle.js +236 -140
  7. package/browser/Core/Particles.js +212 -123
  8. package/browser/Core/Retina.js +5 -0
  9. package/browser/Core/Utils/Constants.js +2 -2
  10. package/browser/Core/Utils/EventListeners.js +69 -310
  11. package/browser/Core/Utils/Point.js +2 -0
  12. package/browser/Core/Utils/QuadTree.js +13 -8
  13. package/browser/Core/Utils/Ranges.js +4 -0
  14. package/browser/Core/Utils/Vectors.js +7 -4
  15. package/browser/Enums/Types/EasingType.js +18 -3
  16. package/browser/Options/Classes/AnimatableColor.js +1 -0
  17. package/browser/Options/Classes/AnimationOptions.js +8 -0
  18. package/browser/Options/Classes/Background/Background.js +6 -0
  19. package/browser/Options/Classes/ColorAnimation.js +1 -0
  20. package/browser/Options/Classes/FullScreen/FullScreen.js +2 -0
  21. package/browser/Options/Classes/HslAnimation.js +3 -5
  22. package/browser/Options/Classes/Options.js +32 -78
  23. package/browser/Options/Classes/OptionsColor.js +1 -0
  24. package/browser/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  25. package/browser/Options/Classes/Particles/Effect/Effect.js +4 -0
  26. package/browser/Options/Classes/Particles/Move/Move.js +18 -0
  27. package/browser/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  28. package/browser/Options/Classes/Particles/Move/MoveAttract.js +3 -0
  29. package/browser/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  30. package/browser/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  31. package/browser/Options/Classes/Particles/Move/OutModes.js +5 -0
  32. package/browser/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  33. package/browser/Options/Classes/Particles/Move/Spin.js +3 -0
  34. package/browser/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  35. package/browser/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  36. package/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  37. package/browser/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  38. package/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  39. package/browser/Options/Classes/Particles/ParticlesOptions.js +19 -11
  40. package/browser/Options/Classes/Particles/Shape/Shape.js +4 -0
  41. package/browser/Options/Classes/Particles/Size/Size.js +1 -0
  42. package/browser/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  43. package/browser/Options/Classes/Particles/Stroke.js +3 -0
  44. package/browser/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  45. package/{esm/Options/Classes/Interactivity/Events → browser/Options/Classes}/ResizeEvent.js +3 -1
  46. package/browser/Options/Classes/ValueWithRandom.js +3 -4
  47. package/browser/Utils/CanvasUtils.js +31 -106
  48. package/browser/Utils/ColorUtils.js +17 -2
  49. package/browser/Utils/EventDispatcher.js +1 -0
  50. package/browser/Utils/MathUtils.js +3 -2
  51. package/browser/Utils/Utils.js +53 -44
  52. package/browser/exports.js +1 -21
  53. package/cjs/Core/Canvas.js +238 -154
  54. package/cjs/Core/Container.js +111 -227
  55. package/cjs/Core/Engine.js +84 -124
  56. package/cjs/Core/Particle.js +236 -140
  57. package/cjs/Core/Particles.js +212 -123
  58. package/cjs/Core/Retina.js +5 -0
  59. package/cjs/Core/Utils/Constants.js +2 -2
  60. package/cjs/Core/Utils/EventListeners.js +69 -310
  61. package/cjs/Core/Utils/Point.js +2 -0
  62. package/cjs/Core/Utils/QuadTree.js +13 -8
  63. package/cjs/Core/Utils/Ranges.js +4 -0
  64. package/cjs/Core/Utils/Vectors.js +7 -4
  65. package/cjs/Enums/Types/EasingType.js +18 -3
  66. package/cjs/Options/Classes/AnimatableColor.js +1 -0
  67. package/cjs/Options/Classes/AnimationOptions.js +8 -0
  68. package/cjs/Options/Classes/Background/Background.js +6 -0
  69. package/cjs/Options/Classes/ColorAnimation.js +1 -0
  70. package/cjs/Options/Classes/FullScreen/FullScreen.js +2 -0
  71. package/cjs/Options/Classes/HslAnimation.js +3 -5
  72. package/cjs/Options/Classes/Options.js +32 -78
  73. package/cjs/Options/Classes/OptionsColor.js +1 -0
  74. package/cjs/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  75. package/cjs/Options/Classes/Particles/Effect/Effect.js +4 -0
  76. package/cjs/Options/Classes/Particles/Move/Move.js +18 -0
  77. package/cjs/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  78. package/cjs/Options/Classes/Particles/Move/MoveAttract.js +3 -0
  79. package/cjs/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  80. package/cjs/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  81. package/cjs/Options/Classes/Particles/Move/OutModes.js +5 -0
  82. package/cjs/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  83. package/cjs/Options/Classes/Particles/Move/Spin.js +3 -0
  84. package/cjs/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  85. package/cjs/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  86. package/cjs/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  87. package/cjs/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  88. package/cjs/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  89. package/cjs/Options/Classes/Particles/ParticlesOptions.js +19 -11
  90. package/cjs/Options/Classes/Particles/Shape/Shape.js +4 -0
  91. package/cjs/Options/Classes/Particles/Size/Size.js +1 -0
  92. package/cjs/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  93. package/cjs/Options/Classes/Particles/Stroke.js +3 -0
  94. package/cjs/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  95. package/cjs/Options/Classes/{Interactivity/Events/ResizeEvent.js → ResizeEvent.js} +3 -1
  96. package/cjs/Options/Classes/ValueWithRandom.js +3 -4
  97. package/cjs/Utils/CanvasUtils.js +31 -106
  98. package/cjs/Utils/ColorUtils.js +17 -2
  99. package/cjs/Utils/EventDispatcher.js +1 -0
  100. package/cjs/Utils/MathUtils.js +3 -2
  101. package/cjs/Utils/Utils.js +53 -44
  102. package/cjs/exports.js +1 -21
  103. package/dist_browser_Core_Container_js.js +8 -18
  104. package/esm/Core/Canvas.js +238 -154
  105. package/esm/Core/Container.js +111 -227
  106. package/esm/Core/Engine.js +84 -124
  107. package/esm/Core/Particle.js +236 -140
  108. package/esm/Core/Particles.js +212 -123
  109. package/esm/Core/Retina.js +5 -0
  110. package/esm/Core/Utils/Constants.js +2 -2
  111. package/esm/Core/Utils/EventListeners.js +69 -310
  112. package/esm/Core/Utils/Point.js +2 -0
  113. package/esm/Core/Utils/QuadTree.js +13 -8
  114. package/esm/Core/Utils/Ranges.js +4 -0
  115. package/esm/Core/Utils/Vectors.js +7 -4
  116. package/esm/Enums/Types/EasingType.js +18 -3
  117. package/esm/Options/Classes/AnimatableColor.js +1 -0
  118. package/esm/Options/Classes/AnimationOptions.js +8 -0
  119. package/esm/Options/Classes/Background/Background.js +6 -0
  120. package/esm/Options/Classes/ColorAnimation.js +1 -0
  121. package/esm/Options/Classes/FullScreen/FullScreen.js +2 -0
  122. package/esm/Options/Classes/HslAnimation.js +3 -5
  123. package/esm/Options/Classes/Options.js +32 -78
  124. package/esm/Options/Classes/OptionsColor.js +1 -0
  125. package/esm/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  126. package/esm/Options/Classes/Particles/Effect/Effect.js +4 -0
  127. package/esm/Options/Classes/Particles/Move/Move.js +18 -0
  128. package/esm/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  129. package/esm/Options/Classes/Particles/Move/MoveAttract.js +3 -0
  130. package/esm/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  131. package/esm/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  132. package/esm/Options/Classes/Particles/Move/OutModes.js +5 -0
  133. package/esm/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  134. package/esm/Options/Classes/Particles/Move/Spin.js +3 -0
  135. package/esm/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  136. package/esm/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  137. package/esm/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  138. package/esm/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  139. package/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  140. package/esm/Options/Classes/Particles/ParticlesOptions.js +19 -11
  141. package/esm/Options/Classes/Particles/Shape/Shape.js +4 -0
  142. package/esm/Options/Classes/Particles/Size/Size.js +1 -0
  143. package/esm/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  144. package/esm/Options/Classes/Particles/Stroke.js +3 -0
  145. package/esm/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  146. package/{browser/Options/Classes/Interactivity/Events → esm/Options/Classes}/ResizeEvent.js +3 -1
  147. package/esm/Options/Classes/ValueWithRandom.js +3 -4
  148. package/esm/Utils/CanvasUtils.js +31 -106
  149. package/esm/Utils/ColorUtils.js +17 -2
  150. package/esm/Utils/EventDispatcher.js +1 -0
  151. package/esm/Utils/MathUtils.js +3 -2
  152. package/esm/Utils/Utils.js +53 -44
  153. package/esm/exports.js +1 -21
  154. package/package.json +1 -1
  155. package/report.html +3 -3
  156. package/tsparticles.engine.js +67 -247
  157. package/tsparticles.engine.min.js +2 -2
  158. package/types/Core/Canvas.d.ts +15 -4
  159. package/types/Core/Container.d.ts +5 -20
  160. package/types/Core/Engine.d.ts +18 -32
  161. package/types/Core/Interfaces/IColorManager.d.ts +0 -1
  162. package/types/Core/Interfaces/IContainerPlugin.d.ts +12 -2
  163. package/types/Core/Interfaces/IDrawParticleParams.d.ts +1 -1
  164. package/types/Core/Interfaces/IMovePathGenerator.d.ts +1 -2
  165. package/types/Core/Interfaces/IParticleOpacityData.d.ts +4 -0
  166. package/types/Core/Interfaces/IParticleRotateData.d.ts +4 -0
  167. package/types/Core/Interfaces/IParticleTransformValues.d.ts +4 -4
  168. package/types/Core/Interfaces/IParticleUpdater.d.ts +1 -1
  169. package/types/Core/Interfaces/IPlugin.d.ts +5 -1
  170. package/types/Core/Interfaces/IShapeDrawer.d.ts +0 -1
  171. package/types/Core/Particle.d.ts +13 -2
  172. package/types/Core/Particles.d.ts +17 -8
  173. package/types/Core/Utils/Constants.d.ts +2 -2
  174. package/types/Core/Utils/EventListeners.d.ts +0 -14
  175. package/types/Enums/Types/EasingType.d.ts +20 -5
  176. package/types/Options/Classes/HslAnimation.d.ts +3 -4
  177. package/types/Options/Classes/Options.d.ts +2 -11
  178. package/types/Options/Classes/Particles/ParticlesOptions.d.ts +0 -2
  179. package/types/Options/Classes/ResizeEvent.d.ts +9 -0
  180. package/types/Options/Classes/ValueWithRandom.d.ts +0 -1
  181. package/types/Options/Interfaces/IOptions.d.ts +2 -8
  182. package/types/Options/Interfaces/Particles/IParticlesOptions.d.ts +0 -3
  183. package/types/Types/CustomEventListener.d.ts +1 -1
  184. package/types/Types/EngineInitializers.d.ts +19 -0
  185. package/types/Utils/CanvasUtils.d.ts +6 -25
  186. package/types/Utils/EventDispatcher.d.ts +1 -1
  187. package/types/Utils/Utils.d.ts +5 -7
  188. package/types/export-types.d.ts +3 -19
  189. package/types/exports.d.ts +1 -21
  190. package/umd/Core/Canvas.js +236 -152
  191. package/umd/Core/Container.js +111 -227
  192. package/umd/Core/Engine.js +83 -123
  193. package/umd/Core/Particle.js +236 -140
  194. package/umd/Core/Particles.js +213 -124
  195. package/umd/Core/Retina.js +5 -0
  196. package/umd/Core/Utils/Constants.js +3 -3
  197. package/umd/Core/Utils/EventListeners.js +69 -310
  198. package/umd/Core/Utils/Point.js +2 -0
  199. package/umd/Core/Utils/QuadTree.js +13 -8
  200. package/umd/Core/Utils/Ranges.js +4 -0
  201. package/umd/Core/Utils/Vectors.js +7 -4
  202. package/umd/Enums/Types/EasingType.js +18 -3
  203. package/umd/Options/Classes/AnimatableColor.js +1 -0
  204. package/umd/Options/Classes/AnimationOptions.js +8 -0
  205. package/umd/Options/Classes/Background/Background.js +6 -0
  206. package/umd/Options/Classes/ColorAnimation.js +1 -0
  207. package/umd/Options/Classes/FullScreen/FullScreen.js +2 -0
  208. package/umd/Options/Classes/HslAnimation.js +3 -5
  209. package/umd/Options/Classes/Options.js +32 -78
  210. package/umd/Options/Classes/OptionsColor.js +1 -0
  211. package/umd/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  212. package/umd/Options/Classes/Particles/Effect/Effect.js +4 -0
  213. package/umd/Options/Classes/Particles/Move/Move.js +18 -0
  214. package/umd/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  215. package/umd/Options/Classes/Particles/Move/MoveAttract.js +3 -0
  216. package/umd/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  217. package/umd/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  218. package/umd/Options/Classes/Particles/Move/OutModes.js +5 -0
  219. package/umd/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  220. package/umd/Options/Classes/Particles/Move/Spin.js +3 -0
  221. package/umd/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  222. package/umd/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  223. package/umd/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  224. package/umd/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  225. package/umd/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  226. package/umd/Options/Classes/Particles/ParticlesOptions.js +19 -11
  227. package/umd/Options/Classes/Particles/Shape/Shape.js +4 -0
  228. package/umd/Options/Classes/Particles/Size/Size.js +1 -0
  229. package/umd/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  230. package/umd/Options/Classes/Particles/Stroke.js +3 -0
  231. package/umd/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  232. package/umd/Options/Classes/{Interactivity/Events/ResizeEvent.js → ResizeEvent.js} +4 -2
  233. package/umd/Options/Classes/ValueWithRandom.js +3 -4
  234. package/umd/Utils/CanvasUtils.js +30 -108
  235. package/umd/Utils/ColorUtils.js +17 -2
  236. package/umd/Utils/EventDispatcher.js +1 -0
  237. package/umd/Utils/MathUtils.js +3 -2
  238. package/umd/Utils/Utils.js +55 -48
  239. package/umd/exports.js +2 -22
  240. package/638.min.js +0 -2
  241. package/638.min.js.LICENSE.txt +0 -1
  242. package/browser/Core/Utils/ExternalInteractorBase.js +0 -7
  243. package/browser/Core/Utils/InteractionManager.js +0 -60
  244. package/browser/Core/Utils/ParticlesInteractorBase.js +0 -7
  245. package/browser/Enums/InteractivityDetect.js +0 -6
  246. package/browser/Enums/Modes/ResponsiveMode.js +0 -5
  247. package/browser/Enums/Modes/ThemeMode.js +0 -6
  248. package/browser/Enums/Types/DivType.js +0 -5
  249. package/browser/Enums/Types/InteractorType.js +0 -5
  250. package/browser/Options/Classes/Interactivity/Events/ClickEvent.js +0 -18
  251. package/browser/Options/Classes/Interactivity/Events/DivEvent.js +0 -27
  252. package/browser/Options/Classes/Interactivity/Events/Events.js +0 -30
  253. package/browser/Options/Classes/Interactivity/Events/HoverEvent.js +0 -21
  254. package/browser/Options/Classes/Interactivity/Events/Parallax.js +0 -22
  255. package/browser/Options/Classes/Interactivity/Interactivity.js +0 -22
  256. package/browser/Options/Classes/Interactivity/Modes/Modes.js +0 -25
  257. package/browser/Options/Classes/ManualParticle.js +0 -21
  258. package/browser/Options/Classes/Responsive.js +0 -29
  259. package/browser/Options/Classes/Theme/Theme.js +0 -21
  260. package/browser/Options/Classes/Theme/ThemeDefault.js +0 -23
  261. package/browser/Options/Interfaces/Interactivity/Events/IEvents.js +0 -1
  262. package/browser/Options/Interfaces/Interactivity/Events/IHoverEvent.js +0 -1
  263. package/browser/Options/Interfaces/Interactivity/Events/IParallax.js +0 -1
  264. package/browser/Options/Interfaces/Interactivity/IInteractivity.js +0 -1
  265. package/browser/Options/Interfaces/Interactivity/Modes/IModeDiv.js +0 -1
  266. package/browser/Options/Interfaces/Interactivity/Modes/IModes.js +0 -1
  267. package/browser/Options/Interfaces/Theme/ITheme.js +0 -1
  268. package/browser/Options/Interfaces/Theme/IThemeDefault.js +0 -1
  269. package/cjs/Core/Interfaces/IContainerInteractivity.js +0 -1
  270. package/cjs/Core/Interfaces/IExternalInteractor.js +0 -1
  271. package/cjs/Core/Interfaces/IInteractor.js +0 -1
  272. package/cjs/Core/Interfaces/IMouseData.js +0 -1
  273. package/cjs/Core/Interfaces/IParticlesInteractor.js +0 -1
  274. package/cjs/Core/Utils/ExternalInteractorBase.js +0 -7
  275. package/cjs/Core/Utils/InteractionManager.js +0 -60
  276. package/cjs/Core/Utils/ParticlesInteractorBase.js +0 -7
  277. package/cjs/Enums/InteractivityDetect.js +0 -6
  278. package/cjs/Enums/Modes/ResponsiveMode.js +0 -5
  279. package/cjs/Enums/Modes/ThemeMode.js +0 -6
  280. package/cjs/Enums/Types/DivType.js +0 -5
  281. package/cjs/Enums/Types/InteractorType.js +0 -5
  282. package/cjs/Options/Classes/Interactivity/Events/ClickEvent.js +0 -18
  283. package/cjs/Options/Classes/Interactivity/Events/DivEvent.js +0 -27
  284. package/cjs/Options/Classes/Interactivity/Events/Events.js +0 -30
  285. package/cjs/Options/Classes/Interactivity/Events/HoverEvent.js +0 -21
  286. package/cjs/Options/Classes/Interactivity/Events/Parallax.js +0 -22
  287. package/cjs/Options/Classes/Interactivity/Interactivity.js +0 -22
  288. package/cjs/Options/Classes/Interactivity/Modes/Modes.js +0 -25
  289. package/cjs/Options/Classes/ManualParticle.js +0 -21
  290. package/cjs/Options/Classes/Responsive.js +0 -29
  291. package/cjs/Options/Classes/Theme/Theme.js +0 -21
  292. package/cjs/Options/Classes/Theme/ThemeDefault.js +0 -23
  293. package/cjs/Options/Interfaces/IManualParticle.js +0 -1
  294. package/cjs/Options/Interfaces/IResponsive.js +0 -1
  295. package/cjs/Options/Interfaces/Interactivity/Events/IClickEvent.js +0 -1
  296. package/cjs/Options/Interfaces/Interactivity/Events/IDivEvent.js +0 -1
  297. package/cjs/Options/Interfaces/Interactivity/Events/IEvents.js +0 -1
  298. package/cjs/Options/Interfaces/Interactivity/Events/IHoverEvent.js +0 -1
  299. package/cjs/Options/Interfaces/Interactivity/Events/IParallax.js +0 -1
  300. package/cjs/Options/Interfaces/Interactivity/IInteractivity.js +0 -1
  301. package/cjs/Options/Interfaces/Interactivity/Modes/IModeDiv.js +0 -1
  302. package/cjs/Options/Interfaces/Interactivity/Modes/IModes.js +0 -1
  303. package/cjs/Options/Interfaces/Theme/ITheme.js +0 -1
  304. package/cjs/Options/Interfaces/Theme/IThemeDefault.js +0 -1
  305. package/esm/Core/Interfaces/IContainerInteractivity.js +0 -1
  306. package/esm/Core/Interfaces/IExternalInteractor.js +0 -1
  307. package/esm/Core/Interfaces/IInteractor.js +0 -1
  308. package/esm/Core/Interfaces/IMouseData.js +0 -1
  309. package/esm/Core/Interfaces/IParticlesInteractor.js +0 -1
  310. package/esm/Core/Utils/ExternalInteractorBase.js +0 -7
  311. package/esm/Core/Utils/InteractionManager.js +0 -60
  312. package/esm/Core/Utils/ParticlesInteractorBase.js +0 -7
  313. package/esm/Enums/InteractivityDetect.js +0 -6
  314. package/esm/Enums/Modes/ResponsiveMode.js +0 -5
  315. package/esm/Enums/Modes/ThemeMode.js +0 -6
  316. package/esm/Enums/Types/DivType.js +0 -5
  317. package/esm/Enums/Types/InteractorType.js +0 -5
  318. package/esm/Options/Classes/Interactivity/Events/ClickEvent.js +0 -18
  319. package/esm/Options/Classes/Interactivity/Events/DivEvent.js +0 -27
  320. package/esm/Options/Classes/Interactivity/Events/Events.js +0 -30
  321. package/esm/Options/Classes/Interactivity/Events/HoverEvent.js +0 -21
  322. package/esm/Options/Classes/Interactivity/Events/Parallax.js +0 -22
  323. package/esm/Options/Classes/Interactivity/Interactivity.js +0 -22
  324. package/esm/Options/Classes/Interactivity/Modes/Modes.js +0 -25
  325. package/esm/Options/Classes/ManualParticle.js +0 -21
  326. package/esm/Options/Classes/Responsive.js +0 -29
  327. package/esm/Options/Classes/Theme/Theme.js +0 -21
  328. package/esm/Options/Classes/Theme/ThemeDefault.js +0 -23
  329. package/esm/Options/Interfaces/IManualParticle.js +0 -1
  330. package/esm/Options/Interfaces/IResponsive.js +0 -1
  331. package/esm/Options/Interfaces/Interactivity/Events/IClickEvent.js +0 -1
  332. package/esm/Options/Interfaces/Interactivity/Events/IDivEvent.js +0 -1
  333. package/esm/Options/Interfaces/Interactivity/Events/IEvents.js +0 -1
  334. package/esm/Options/Interfaces/Interactivity/Events/IHoverEvent.js +0 -1
  335. package/esm/Options/Interfaces/Interactivity/Events/IParallax.js +0 -1
  336. package/esm/Options/Interfaces/Interactivity/IInteractivity.js +0 -1
  337. package/esm/Options/Interfaces/Interactivity/Modes/IModeDiv.js +0 -1
  338. package/esm/Options/Interfaces/Interactivity/Modes/IModes.js +0 -1
  339. package/esm/Options/Interfaces/Theme/ITheme.js +0 -1
  340. package/esm/Options/Interfaces/Theme/IThemeDefault.js +0 -1
  341. package/tsparticles.engine.min.js.LICENSE.txt +0 -1
  342. package/types/Core/Interfaces/IContainerInteractivity.d.ts +0 -6
  343. package/types/Core/Interfaces/IExternalInteractor.d.ts +0 -12
  344. package/types/Core/Interfaces/IInteractor.d.ts +0 -16
  345. package/types/Core/Interfaces/IMouseData.d.ts +0 -9
  346. package/types/Core/Interfaces/IParticlesInteractor.d.ts +0 -7
  347. package/types/Core/Utils/ExternalInteractorBase.d.ts +0 -15
  348. package/types/Core/Utils/InteractionManager.d.ts +0 -17
  349. package/types/Core/Utils/ParticlesInteractorBase.d.ts +0 -15
  350. package/types/Enums/InteractivityDetect.d.ts +0 -5
  351. package/types/Enums/Modes/ResponsiveMode.d.ts +0 -4
  352. package/types/Enums/Modes/ThemeMode.d.ts +0 -5
  353. package/types/Enums/Types/DivType.d.ts +0 -4
  354. package/types/Enums/Types/InteractorType.d.ts +0 -4
  355. package/types/Options/Classes/Interactivity/Events/ClickEvent.d.ts +0 -10
  356. package/types/Options/Classes/Interactivity/Events/DivEvent.d.ts +0 -13
  357. package/types/Options/Classes/Interactivity/Events/Events.d.ts +0 -16
  358. package/types/Options/Classes/Interactivity/Events/HoverEvent.d.ts +0 -12
  359. package/types/Options/Classes/Interactivity/Events/Parallax.d.ts +0 -10
  360. package/types/Options/Classes/Interactivity/Events/ResizeEvent.d.ts +0 -9
  361. package/types/Options/Classes/Interactivity/Interactivity.d.ts +0 -16
  362. package/types/Options/Classes/Interactivity/Modes/Modes.d.ts +0 -12
  363. package/types/Options/Classes/ManualParticle.d.ts +0 -10
  364. package/types/Options/Classes/Responsive.d.ts +0 -12
  365. package/types/Options/Classes/Theme/Theme.d.ts +0 -12
  366. package/types/Options/Classes/Theme/ThemeDefault.d.ts +0 -11
  367. package/types/Options/Interfaces/IManualParticle.d.ts +0 -7
  368. package/types/Options/Interfaces/IResponsive.d.ts +0 -7
  369. package/types/Options/Interfaces/Interactivity/Events/IClickEvent.d.ts +0 -5
  370. package/types/Options/Interfaces/Interactivity/Events/IDivEvent.d.ts +0 -8
  371. package/types/Options/Interfaces/Interactivity/Events/IEvents.d.ts +0 -11
  372. package/types/Options/Interfaces/Interactivity/Events/IHoverEvent.d.ts +0 -7
  373. package/types/Options/Interfaces/Interactivity/Events/IParallax.d.ts +0 -5
  374. package/types/Options/Interfaces/Interactivity/IInteractivity.d.ts +0 -9
  375. package/types/Options/Interfaces/Interactivity/Modes/IModeDiv.d.ts +0 -4
  376. package/types/Options/Interfaces/Interactivity/Modes/IModes.d.ts +0 -1
  377. package/types/Options/Interfaces/Theme/ITheme.d.ts +0 -7
  378. package/types/Options/Interfaces/Theme/IThemeDefault.d.ts +0 -6
  379. package/umd/Core/Interfaces/IMouseData.js +0 -12
  380. package/umd/Core/Interfaces/IParticlesInteractor.js +0 -12
  381. package/umd/Core/Utils/ExternalInteractorBase.js +0 -21
  382. package/umd/Core/Utils/InteractionManager.js +0 -74
  383. package/umd/Core/Utils/ParticlesInteractorBase.js +0 -21
  384. package/umd/Enums/InteractivityDetect.js +0 -19
  385. package/umd/Enums/Modes/ResponsiveMode.js +0 -18
  386. package/umd/Enums/Modes/ThemeMode.js +0 -19
  387. package/umd/Enums/Types/DivType.js +0 -18
  388. package/umd/Enums/Types/InteractorType.js +0 -18
  389. package/umd/Options/Classes/Interactivity/Events/ClickEvent.js +0 -32
  390. package/umd/Options/Classes/Interactivity/Events/DivEvent.js +0 -41
  391. package/umd/Options/Classes/Interactivity/Events/Events.js +0 -44
  392. package/umd/Options/Classes/Interactivity/Events/HoverEvent.js +0 -35
  393. package/umd/Options/Classes/Interactivity/Events/Parallax.js +0 -36
  394. package/umd/Options/Classes/Interactivity/Interactivity.js +0 -36
  395. package/umd/Options/Classes/Interactivity/Modes/Modes.js +0 -39
  396. package/umd/Options/Classes/ManualParticle.js +0 -35
  397. package/umd/Options/Classes/Responsive.js +0 -43
  398. package/umd/Options/Classes/Theme/Theme.js +0 -35
  399. package/umd/Options/Classes/Theme/ThemeDefault.js +0 -37
  400. package/umd/Options/Interfaces/IManualParticle.js +0 -12
  401. package/umd/Options/Interfaces/IResponsive.js +0 -12
  402. package/umd/Options/Interfaces/Interactivity/Events/IClickEvent.js +0 -12
  403. package/umd/Options/Interfaces/Interactivity/Events/IDivEvent.js +0 -12
  404. package/umd/Options/Interfaces/Interactivity/Events/IEvents.js +0 -12
  405. package/umd/Options/Interfaces/Interactivity/Events/IHoverEvent.js +0 -12
  406. package/umd/Options/Interfaces/Interactivity/Events/IParallax.js +0 -12
  407. package/umd/Options/Interfaces/Interactivity/IInteractivity.js +0 -12
  408. package/umd/Options/Interfaces/Interactivity/Modes/IModeDiv.js +0 -12
  409. package/umd/Options/Interfaces/Interactivity/Modes/IModes.js +0 -12
  410. package/umd/Options/Interfaces/Theme/ITheme.js +0 -12
  411. package/umd/Options/Interfaces/Theme/IThemeDefault.js +0 -12
  412. /package/browser/Core/Interfaces/{IContainerInteractivity.js → IParticleOpacityData.js} +0 -0
  413. /package/browser/Core/Interfaces/{IExternalInteractor.js → IParticleRotateData.js} +0 -0
  414. /package/browser/Options/Interfaces/{Interactivity/Events/IResizeEvent.js → IResizeEvent.js} +0 -0
  415. /package/browser/{Core/Interfaces/IInteractor.js → Types/EngineInitializers.js} +0 -0
  416. /package/{browser/Core/Interfaces/IMouseData.js → cjs/Core/Interfaces/IParticleOpacityData.js} +0 -0
  417. /package/{browser/Core/Interfaces/IParticlesInteractor.js → cjs/Core/Interfaces/IParticleRotateData.js} +0 -0
  418. /package/cjs/Options/Interfaces/{Interactivity/Events/IResizeEvent.js → IResizeEvent.js} +0 -0
  419. /package/{browser/Options/Interfaces/IManualParticle.js → cjs/Types/EngineInitializers.js} +0 -0
  420. /package/{browser/Options/Interfaces/IResponsive.js → esm/Core/Interfaces/IParticleOpacityData.js} +0 -0
  421. /package/{browser/Options/Interfaces/Interactivity/Events/IClickEvent.js → esm/Core/Interfaces/IParticleRotateData.js} +0 -0
  422. /package/esm/Options/Interfaces/{Interactivity/Events/IResizeEvent.js → IResizeEvent.js} +0 -0
  423. /package/{browser/Options/Interfaces/Interactivity/Events/IDivEvent.js → esm/Types/EngineInitializers.js} +0 -0
  424. /package/types/Options/Interfaces/{Interactivity/Events/IResizeEvent.d.ts → IResizeEvent.d.ts} +0 -0
  425. /package/umd/Core/Interfaces/{IContainerInteractivity.js → IParticleOpacityData.js} +0 -0
  426. /package/umd/Core/Interfaces/{IExternalInteractor.js → IParticleRotateData.js} +0 -0
  427. /package/umd/Options/Interfaces/{Interactivity/Events/IResizeEvent.js → IResizeEvent.js} +0 -0
  428. /package/umd/{Core/Interfaces/IInteractor.js → Types/EngineInitializers.js} +0 -0
@@ -4,7 +4,7 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "../Utils/MathUtils.js", "./Utils/Constants.js", "./Canvas.js", "./Utils/EventListeners.js", "../Enums/Types/EventType.js", "../Options/Classes/Options.js", "./Particles.js", "./Retina.js", "../Utils/LogUtils.js", "../Utils/OptionsUtils.js", "../Utils/Utils.js"], factory);
7
+ define(["require", "exports", "../Utils/MathUtils.js", "./Utils/Constants.js", "./Canvas.js", "./Utils/EventListeners.js", "../Enums/Types/EventType.js", "../Options/Classes/Options.js", "./Particles.js", "./Retina.js", "../Utils/LogUtils.js", "../Utils/OptionsUtils.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -20,15 +20,12 @@
20
20
  const Retina_js_1 = require("./Retina.js");
21
21
  const LogUtils_js_1 = require("../Utils/LogUtils.js");
22
22
  const OptionsUtils_js_1 = require("../Utils/OptionsUtils.js");
23
- const Utils_js_1 = require("../Utils/Utils.js");
24
23
  function guardCheck(container) {
25
24
  return !container.destroyed;
26
25
  }
27
- function initDelta(value, fpsLimit = Constants_js_1.defaultFps, smooth = false) {
28
- return {
29
- value,
30
- factor: smooth ? Constants_js_1.defaultFps / fpsLimit : (Constants_js_1.defaultFps * value) / Constants_js_1.millisecondsToSeconds,
31
- };
26
+ function updateDelta(delta, value, fpsLimit = Constants_js_1.defaultFps, smooth = false) {
27
+ delta.value = value;
28
+ delta.factor = smooth ? Constants_js_1.defaultFps / fpsLimit : (Constants_js_1.defaultFps * value) / Constants_js_1.millisecondsToSeconds;
32
29
  }
33
30
  function loadContainerOptions(engine, container, ...sourceOptionsArr) {
34
31
  const options = new Options_js_1.Options(engine, container);
@@ -36,52 +33,37 @@
36
33
  return options;
37
34
  }
38
35
  class Container {
36
+ actualOptions;
37
+ canvas;
38
+ destroyed;
39
+ fpsLimit;
40
+ hdr;
41
+ id;
42
+ pageHidden;
43
+ particleCreatedPlugins;
44
+ particleDestroyedPlugins;
45
+ particlePositionPlugins;
46
+ particles;
47
+ plugins;
48
+ retina;
49
+ started;
50
+ zLayers;
51
+ _delay;
52
+ _delayTimeout;
53
+ _delta = { value: 0, factor: 0 };
54
+ _drawAnimationFrame;
55
+ _duration;
56
+ _engine;
57
+ _eventListeners;
58
+ _firstStart;
59
+ _initialSourceOptions;
60
+ _lastFrameTime;
61
+ _lifeTime;
62
+ _options;
63
+ _paused;
64
+ _smooth;
65
+ _sourceOptions;
39
66
  constructor(engine, id, sourceOptions) {
40
- this._intersectionManager = entries => {
41
- if (!guardCheck(this) || !this.actualOptions.pauseOnOutsideViewport) {
42
- return;
43
- }
44
- for (const entry of entries) {
45
- if (entry.target !== this.interactivity.element) {
46
- continue;
47
- }
48
- if (entry.isIntersecting) {
49
- this.play();
50
- }
51
- else {
52
- this.pause();
53
- }
54
- }
55
- };
56
- this._nextFrame = (timestamp) => {
57
- try {
58
- if (!this._smooth &&
59
- this._lastFrameTime !== undefined &&
60
- timestamp < this._lastFrameTime + Constants_js_1.millisecondsToSeconds / this.fpsLimit) {
61
- this.draw(false);
62
- return;
63
- }
64
- this._lastFrameTime ??= timestamp;
65
- const delta = initDelta(timestamp - this._lastFrameTime, this.fpsLimit, this._smooth);
66
- this.addLifeTime(delta.value);
67
- this._lastFrameTime = timestamp;
68
- if (delta.value > Constants_js_1.millisecondsToSeconds) {
69
- this.draw(false);
70
- return;
71
- }
72
- this.canvas.drawParticles(delta);
73
- if (!this.alive()) {
74
- this.destroy();
75
- return;
76
- }
77
- if (this.animationStatus) {
78
- this.draw(false);
79
- }
80
- }
81
- catch (e) {
82
- (0, LogUtils_js_1.getLogger)().error("error in animation loop", e);
83
- }
84
- };
85
67
  this._engine = engine;
86
68
  this.id = Symbol(id);
87
69
  this.fpsLimit = 120;
@@ -97,28 +79,18 @@
97
79
  this._lastFrameTime = 0;
98
80
  this.zLayers = 100;
99
81
  this.pageHidden = false;
100
- this._clickHandlers = new Map();
101
82
  this._sourceOptions = sourceOptions;
102
83
  this._initialSourceOptions = sourceOptions;
103
84
  this.retina = new Retina_js_1.Retina(this);
104
85
  this.canvas = new Canvas_js_1.Canvas(this, this._engine);
105
86
  this.particles = new Particles_js_1.Particles(this._engine, this);
106
- this.pathGenerators = new Map();
107
- this.interactivity = {
108
- mouse: {
109
- clicking: false,
110
- inside: false,
111
- },
112
- };
113
- this.plugins = new Map();
114
- this.effectDrawers = new Map();
115
- this.shapeDrawers = new Map();
87
+ this.plugins = [];
88
+ this.particleDestroyedPlugins = [];
89
+ this.particleCreatedPlugins = [];
90
+ this.particlePositionPlugins = [];
116
91
  this._options = loadContainerOptions(this._engine, this);
117
92
  this.actualOptions = loadContainerOptions(this._engine, this);
118
93
  this._eventListeners = new EventListeners_js_1.EventListeners(this);
119
- this._intersectionObserver = (0, Utils_js_1.safeIntersectionObserver)(entries => {
120
- this._intersectionManager(entries);
121
- });
122
94
  this._engine.dispatchEvent(EventType_js_1.EventType.containerBuilt, { container: this });
123
95
  }
124
96
  get animationStatus() {
@@ -130,123 +102,27 @@
130
102
  get sourceOptions() {
131
103
  return this._sourceOptions;
132
104
  }
133
- addClickHandler(callback) {
134
- if (!guardCheck(this)) {
135
- return;
136
- }
137
- const el = this.interactivity.element;
138
- if (!el) {
139
- return;
140
- }
141
- const clickOrTouchHandler = (e, pos, radius) => {
142
- if (!guardCheck(this)) {
143
- return;
144
- }
145
- const pxRatio = this.retina.pixelRatio, posRetina = {
146
- x: pos.x * pxRatio,
147
- y: pos.y * pxRatio,
148
- }, particles = this.particles.quadTree.queryCircle(posRetina, radius * pxRatio);
149
- callback(e, particles);
150
- }, clickHandler = (e) => {
151
- if (!guardCheck(this)) {
152
- return;
153
- }
154
- const mouseEvent = e, pos = {
155
- x: mouseEvent.offsetX || mouseEvent.clientX,
156
- y: mouseEvent.offsetY || mouseEvent.clientY,
157
- };
158
- clickOrTouchHandler(e, pos, Constants_js_1.clickRadius);
159
- }, touchStartHandler = () => {
160
- if (!guardCheck(this)) {
161
- return;
162
- }
163
- touched = true;
164
- touchMoved = false;
165
- }, touchMoveHandler = () => {
166
- if (!guardCheck(this)) {
167
- return;
168
- }
169
- touchMoved = true;
170
- }, touchEndHandler = (e) => {
171
- if (!guardCheck(this)) {
172
- return;
173
- }
174
- if (touched && !touchMoved) {
175
- const touchEvent = e, lastTouch = touchEvent.touches[touchEvent.touches.length - Constants_js_1.touchEndLengthOffset];
176
- if (!lastTouch) {
177
- return;
178
- }
179
- const element = this.canvas.element, canvasRect = element ? element.getBoundingClientRect() : undefined, pos = {
180
- x: lastTouch.clientX - (canvasRect ? canvasRect.left : Constants_js_1.minCoordinate),
181
- y: lastTouch.clientY - (canvasRect ? canvasRect.top : Constants_js_1.minCoordinate),
182
- };
183
- clickOrTouchHandler(e, pos, Math.max(lastTouch.radiusX, lastTouch.radiusY));
184
- }
185
- touched = false;
186
- touchMoved = false;
187
- }, touchCancelHandler = () => {
188
- if (!guardCheck(this)) {
189
- return;
190
- }
191
- touched = false;
192
- touchMoved = false;
193
- };
194
- let touched = false, touchMoved = false;
195
- this._clickHandlers.set("click", clickHandler);
196
- this._clickHandlers.set("touchstart", touchStartHandler);
197
- this._clickHandlers.set("touchmove", touchMoveHandler);
198
- this._clickHandlers.set("touchend", touchEndHandler);
199
- this._clickHandlers.set("touchcancel", touchCancelHandler);
200
- for (const [key, handler] of this._clickHandlers) {
201
- el.addEventListener(key, handler);
202
- }
203
- }
204
105
  addLifeTime(value) {
205
106
  this._lifeTime += value;
206
107
  }
207
- addPath(key, generator, override = false) {
208
- if (!guardCheck(this) || (!override && this.pathGenerators.has(key))) {
209
- return false;
210
- }
211
- this.pathGenerators.set(key, generator);
212
- return true;
213
- }
214
108
  alive() {
215
109
  return !this._duration || this._lifeTime <= this._duration;
216
110
  }
217
- clearClickHandlers() {
218
- if (!guardCheck(this)) {
219
- return;
220
- }
221
- for (const [key, handler] of this._clickHandlers) {
222
- this.interactivity.element?.removeEventListener(key, handler);
223
- }
224
- this._clickHandlers.clear();
225
- }
226
111
  destroy(remove = true) {
227
112
  if (!guardCheck(this)) {
228
113
  return;
229
114
  }
230
115
  this.stop();
231
- this.clearClickHandlers();
232
116
  this.particles.destroy();
233
117
  this.canvas.destroy();
234
- for (const effectDrawer of this.effectDrawers.values()) {
235
- effectDrawer.destroy?.(this);
236
- }
237
- for (const shapeDrawer of this.shapeDrawers.values()) {
238
- shapeDrawer.destroy?.(this);
239
- }
240
- for (const key of this.effectDrawers.keys()) {
241
- this.effectDrawers.delete(key);
242
- }
243
- for (const key of this.shapeDrawers.keys()) {
244
- this.shapeDrawers.delete(key);
118
+ for (const plugin of this.plugins) {
119
+ plugin.destroy?.();
245
120
  }
121
+ this.plugins.length = 0;
246
122
  this._engine.clearPlugins(this);
247
123
  this.destroyed = true;
248
124
  if (remove) {
249
- const mainArr = this._engine.items, idx = mainArr.findIndex(t => t === this);
125
+ const mainArr = this._engine.items, idx = mainArr.indexOf(this);
250
126
  if (idx >= Constants_js_1.removeMinIndex) {
251
127
  mainArr.splice(idx, Constants_js_1.removeDeleteCount);
252
128
  }
@@ -270,7 +146,7 @@
270
146
  });
271
147
  }
272
148
  async export(type, options = {}) {
273
- for (const plugin of this.plugins.values()) {
149
+ for (const plugin of this.plugins) {
274
150
  if (!plugin.export) {
275
151
  continue;
276
152
  }
@@ -283,39 +159,38 @@
283
159
  (0, LogUtils_js_1.getLogger)().error(`Export plugin with type ${type} not found`);
284
160
  return undefined;
285
161
  }
286
- handleClickMode(mode) {
287
- if (!guardCheck(this)) {
288
- return;
289
- }
290
- this.particles.handleClickMode(mode);
291
- for (const plugin of this.plugins.values()) {
292
- plugin.handleClickMode?.(mode);
293
- }
294
- }
295
162
  async init() {
296
163
  if (!guardCheck(this)) {
297
164
  return;
298
165
  }
299
- const effects = this._engine.getSupportedEffects();
300
- for (const type of effects) {
301
- const drawer = this._engine.getEffectDrawer(type);
302
- if (drawer) {
303
- this.effectDrawers.set(type, drawer);
304
- }
305
- }
306
- const shapes = this._engine.getSupportedShapes();
307
- for (const type of shapes) {
308
- const drawer = this._engine.getShapeDrawer(type);
309
- if (drawer) {
310
- this.shapeDrawers.set(type, drawer);
166
+ const allContainerPlugins = new Map();
167
+ for (const plugin of this._engine.plugins) {
168
+ const containerPlugin = await plugin.getPlugin(this);
169
+ if (containerPlugin.preInit) {
170
+ await containerPlugin.preInit();
311
171
  }
172
+ allContainerPlugins.set(plugin, containerPlugin);
312
173
  }
313
174
  await this.particles.initPlugins();
314
175
  this._options = loadContainerOptions(this._engine, this, this._initialSourceOptions, this.sourceOptions);
315
176
  this.actualOptions = loadContainerOptions(this._engine, this, this._options);
316
- const availablePlugins = await this._engine.getAvailablePlugins(this);
317
- for (const [id, plugin] of availablePlugins) {
318
- this.plugins.set(id, plugin);
177
+ this.plugins.length = 0;
178
+ this.particleDestroyedPlugins.length = 0;
179
+ this.particleCreatedPlugins.length = 0;
180
+ this.particlePositionPlugins.length = 0;
181
+ for (const [plugin, containerPlugin] of allContainerPlugins) {
182
+ if (plugin.needsPlugin(this.actualOptions)) {
183
+ this.plugins.push(containerPlugin);
184
+ if (containerPlugin.particleCreated) {
185
+ this.particleCreatedPlugins.push(containerPlugin);
186
+ }
187
+ if (containerPlugin.particleDestroyed) {
188
+ this.particleDestroyedPlugins.push(containerPlugin);
189
+ }
190
+ if (containerPlugin.particlePosition) {
191
+ this.particlePositionPlugins.push(containerPlugin);
192
+ }
193
+ }
319
194
  }
320
195
  this.retina.init();
321
196
  this.canvas.init();
@@ -330,30 +205,17 @@
330
205
  this._lifeTime = 0;
331
206
  this.fpsLimit = fpsLimit > Constants_js_1.minFpsLimit ? fpsLimit : Constants_js_1.defaultFpsLimit;
332
207
  this._smooth = smooth;
333
- for (const drawer of this.effectDrawers.values()) {
334
- await drawer.init?.(this);
335
- }
336
- for (const drawer of this.shapeDrawers.values()) {
337
- await drawer.init?.(this);
338
- }
339
- for (const plugin of this.plugins.values()) {
208
+ for (const plugin of this.plugins) {
340
209
  await plugin.init?.();
341
210
  }
342
- this._engine.dispatchEvent(EventType_js_1.EventType.containerInit, { container: this });
343
211
  await this.particles.init();
212
+ this._engine.dispatchEvent(EventType_js_1.EventType.containerInit, { container: this });
344
213
  this.particles.setDensity();
345
- for (const plugin of this.plugins.values()) {
214
+ for (const plugin of this.plugins) {
346
215
  plugin.particlesSetup?.();
347
216
  }
348
217
  this._engine.dispatchEvent(EventType_js_1.EventType.particlesSetup, { container: this });
349
218
  }
350
- async loadTheme(name) {
351
- if (!guardCheck(this)) {
352
- return;
353
- }
354
- this._currentTheme = name;
355
- await this.refresh();
356
- }
357
219
  pause() {
358
220
  if (!guardCheck(this)) {
359
221
  return;
@@ -365,7 +227,7 @@
365
227
  if (this._paused) {
366
228
  return;
367
229
  }
368
- for (const plugin of this.plugins.values()) {
230
+ for (const plugin of this.plugins) {
369
231
  plugin.pause?.();
370
232
  }
371
233
  if (!this.pageHidden) {
@@ -386,7 +248,7 @@
386
248
  this._paused = false;
387
249
  }
388
250
  if (needsUpdate) {
389
- for (const plugin of this.plugins.values()) {
251
+ for (const plugin of this.plugins) {
390
252
  if (plugin.play) {
391
253
  plugin.play();
392
254
  }
@@ -421,10 +283,7 @@
421
283
  await new Promise(resolve => {
422
284
  const start = async () => {
423
285
  this._eventListeners.addListeners();
424
- if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {
425
- this._intersectionObserver.observe(this.interactivity.element);
426
- }
427
- for (const plugin of this.plugins.values()) {
286
+ for (const plugin of this.plugins) {
428
287
  await plugin.start?.();
429
288
  }
430
289
  this._engine.dispatchEvent(EventType_js_1.EventType.containerStarted, { container: this });
@@ -448,28 +307,53 @@
448
307
  this.pause();
449
308
  this.particles.clear();
450
309
  this.canvas.stop();
451
- if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {
452
- this._intersectionObserver.unobserve(this.interactivity.element);
453
- }
454
- for (const plugin of this.plugins.values()) {
310
+ for (const plugin of this.plugins) {
455
311
  plugin.stop?.();
456
312
  }
457
- for (const key of this.plugins.keys()) {
458
- this.plugins.delete(key);
459
- }
313
+ this.particleCreatedPlugins.length = 0;
314
+ this.particleDestroyedPlugins.length = 0;
315
+ this.particlePositionPlugins.length = 0;
460
316
  this._sourceOptions = this._options;
461
317
  this._engine.dispatchEvent(EventType_js_1.EventType.containerStopped, { container: this });
462
318
  }
463
319
  updateActualOptions() {
464
- this.actualOptions.responsive = [];
465
- const newMaxWidth = this.actualOptions.setResponsive(this.canvas.size.width, this.retina.pixelRatio, this._options);
466
- this.actualOptions.setTheme(this._currentTheme);
467
- if (this._responsiveMaxWidth === newMaxWidth) {
468
- return false;
320
+ let refresh = false;
321
+ for (const plugin of this.plugins) {
322
+ if (plugin.updateActualOptions) {
323
+ refresh = plugin.updateActualOptions() || refresh;
324
+ }
469
325
  }
470
- this._responsiveMaxWidth = newMaxWidth;
471
- return true;
326
+ return refresh;
472
327
  }
328
+ _nextFrame = (timestamp) => {
329
+ try {
330
+ if (!this._smooth &&
331
+ this._lastFrameTime !== undefined &&
332
+ timestamp < this._lastFrameTime + Constants_js_1.millisecondsToSeconds / this.fpsLimit) {
333
+ this.draw(false);
334
+ return;
335
+ }
336
+ this._lastFrameTime ??= timestamp;
337
+ updateDelta(this._delta, timestamp - this._lastFrameTime, this.fpsLimit, this._smooth);
338
+ this.addLifeTime(this._delta.value);
339
+ this._lastFrameTime = timestamp;
340
+ if (this._delta.value > Constants_js_1.millisecondsToSeconds) {
341
+ this.draw(false);
342
+ return;
343
+ }
344
+ this.canvas.drawParticles(this._delta);
345
+ if (!this.alive()) {
346
+ this.destroy();
347
+ return;
348
+ }
349
+ if (this.animationStatus) {
350
+ this.draw(false);
351
+ }
352
+ }
353
+ catch (e) {
354
+ (0, LogUtils_js_1.getLogger)().error("error in animation loop", e);
355
+ }
356
+ };
473
357
  }
474
358
  exports.Container = Container;
475
359
  });