@tsparticles/engine 4.0.0-alpha.8 → 4.0.0-beta.1

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 (307) hide show
  1. package/155.min.js +1 -0
  2. package/README.md +41 -28
  3. package/browser/Core/CanvasManager.js +303 -0
  4. package/browser/Core/Container.js +134 -101
  5. package/browser/Core/Engine.js +29 -162
  6. package/browser/Core/Particle.js +197 -183
  7. package/browser/Core/ParticlesManager.js +363 -0
  8. package/browser/Core/RenderManager.js +303 -0
  9. package/browser/Core/Retina.js +6 -6
  10. package/browser/Core/Utils/Constants.js +2 -2
  11. package/browser/Core/Utils/EventListeners.js +67 -63
  12. package/browser/Core/Utils/PluginManager.js +145 -0
  13. package/browser/Core/Utils/Ranges.js +29 -10
  14. package/browser/Core/Utils/SpatialHashGrid.js +102 -0
  15. package/browser/Core/Utils/Vectors.js +17 -18
  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 +12 -1
  20. package/browser/Options/Classes/FullScreen/FullScreen.js +2 -0
  21. package/browser/Options/Classes/HslAnimation.js +4 -5
  22. package/browser/Options/Classes/Options.js +67 -8
  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 +3 -4
  26. package/browser/Options/Classes/Particles/Fill.js +28 -0
  27. package/browser/Options/Classes/Particles/Move/Move.js +17 -3
  28. package/browser/Options/Classes/Particles/Move/MoveAngle.js +2 -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 +29 -9
  40. package/browser/Options/Classes/Particles/Shape/Shape.js +3 -4
  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/browser/Options/Classes/ResizeEvent.js +2 -0
  46. package/browser/Options/Classes/ValueWithRandom.js +3 -4
  47. package/browser/Utils/CanvasUtils.js +44 -51
  48. package/browser/Utils/ColorUtils.js +51 -40
  49. package/browser/Utils/EventDispatcher.js +1 -0
  50. package/browser/Utils/LogUtils.js +1 -0
  51. package/browser/Utils/MathUtils.js +12 -7
  52. package/browser/Utils/OptionsUtils.js +2 -2
  53. package/browser/Utils/Utils.js +109 -31
  54. package/browser/exports.js +1 -2
  55. package/cjs/Core/CanvasManager.js +303 -0
  56. package/cjs/Core/Container.js +134 -101
  57. package/cjs/Core/Engine.js +29 -162
  58. package/cjs/Core/Particle.js +197 -183
  59. package/cjs/Core/ParticlesManager.js +363 -0
  60. package/cjs/Core/RenderManager.js +303 -0
  61. package/cjs/Core/Retina.js +6 -6
  62. package/cjs/Core/Utils/Constants.js +2 -2
  63. package/cjs/Core/Utils/EventListeners.js +67 -63
  64. package/cjs/Core/Utils/PluginManager.js +145 -0
  65. package/cjs/Core/Utils/Ranges.js +29 -10
  66. package/cjs/Core/Utils/SpatialHashGrid.js +102 -0
  67. package/cjs/Core/Utils/Vectors.js +17 -18
  68. package/cjs/Options/Classes/AnimatableColor.js +1 -0
  69. package/cjs/Options/Classes/AnimationOptions.js +8 -0
  70. package/cjs/Options/Classes/Background/Background.js +6 -0
  71. package/cjs/Options/Classes/ColorAnimation.js +12 -1
  72. package/cjs/Options/Classes/FullScreen/FullScreen.js +2 -0
  73. package/cjs/Options/Classes/HslAnimation.js +4 -5
  74. package/cjs/Options/Classes/Options.js +67 -8
  75. package/cjs/Options/Classes/OptionsColor.js +1 -0
  76. package/cjs/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  77. package/cjs/Options/Classes/Particles/Effect/Effect.js +3 -4
  78. package/cjs/Options/Classes/Particles/Fill.js +28 -0
  79. package/cjs/Options/Classes/Particles/Move/Move.js +17 -3
  80. package/cjs/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  81. package/cjs/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  82. package/cjs/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  83. package/cjs/Options/Classes/Particles/Move/OutModes.js +5 -0
  84. package/cjs/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  85. package/cjs/Options/Classes/Particles/Move/Spin.js +3 -0
  86. package/cjs/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  87. package/cjs/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  88. package/cjs/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  89. package/cjs/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  90. package/cjs/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  91. package/cjs/Options/Classes/Particles/ParticlesOptions.js +29 -9
  92. package/cjs/Options/Classes/Particles/Shape/Shape.js +3 -4
  93. package/cjs/Options/Classes/Particles/Size/Size.js +1 -0
  94. package/cjs/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  95. package/cjs/Options/Classes/Particles/Stroke.js +3 -0
  96. package/cjs/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  97. package/cjs/Options/Classes/ResizeEvent.js +2 -0
  98. package/cjs/Options/Classes/ValueWithRandom.js +3 -4
  99. package/cjs/Utils/CanvasUtils.js +44 -51
  100. package/cjs/Utils/ColorUtils.js +51 -40
  101. package/cjs/Utils/EventDispatcher.js +1 -0
  102. package/cjs/Utils/LogUtils.js +1 -0
  103. package/cjs/Utils/MathUtils.js +12 -7
  104. package/cjs/Utils/OptionsUtils.js +2 -2
  105. package/cjs/Utils/Utils.js +109 -31
  106. package/cjs/exports.js +1 -2
  107. package/dist_browser_Core_Container_js.js +30 -20
  108. package/esm/Core/CanvasManager.js +303 -0
  109. package/esm/Core/Container.js +134 -101
  110. package/esm/Core/Engine.js +29 -162
  111. package/esm/Core/Particle.js +197 -183
  112. package/esm/Core/ParticlesManager.js +363 -0
  113. package/esm/Core/RenderManager.js +303 -0
  114. package/esm/Core/Retina.js +6 -6
  115. package/esm/Core/Utils/Constants.js +2 -2
  116. package/esm/Core/Utils/EventListeners.js +67 -63
  117. package/esm/Core/Utils/PluginManager.js +145 -0
  118. package/esm/Core/Utils/Ranges.js +29 -10
  119. package/esm/Core/Utils/SpatialHashGrid.js +102 -0
  120. package/esm/Core/Utils/Vectors.js +17 -18
  121. package/esm/Options/Classes/AnimatableColor.js +1 -0
  122. package/esm/Options/Classes/AnimationOptions.js +8 -0
  123. package/esm/Options/Classes/Background/Background.js +6 -0
  124. package/esm/Options/Classes/ColorAnimation.js +12 -1
  125. package/esm/Options/Classes/FullScreen/FullScreen.js +2 -0
  126. package/esm/Options/Classes/HslAnimation.js +4 -5
  127. package/esm/Options/Classes/Options.js +67 -8
  128. package/esm/Options/Classes/OptionsColor.js +1 -0
  129. package/esm/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  130. package/esm/Options/Classes/Particles/Effect/Effect.js +3 -4
  131. package/esm/Options/Classes/Particles/Fill.js +28 -0
  132. package/esm/Options/Classes/Particles/Move/Move.js +17 -3
  133. package/esm/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  134. package/esm/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  135. package/esm/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  136. package/esm/Options/Classes/Particles/Move/OutModes.js +5 -0
  137. package/esm/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  138. package/esm/Options/Classes/Particles/Move/Spin.js +3 -0
  139. package/esm/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  140. package/esm/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  141. package/esm/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  142. package/esm/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  143. package/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  144. package/esm/Options/Classes/Particles/ParticlesOptions.js +29 -9
  145. package/esm/Options/Classes/Particles/Shape/Shape.js +3 -4
  146. package/esm/Options/Classes/Particles/Size/Size.js +1 -0
  147. package/esm/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  148. package/esm/Options/Classes/Particles/Stroke.js +3 -0
  149. package/esm/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  150. package/esm/Options/Classes/ResizeEvent.js +2 -0
  151. package/esm/Options/Classes/ValueWithRandom.js +3 -4
  152. package/esm/Utils/CanvasUtils.js +44 -51
  153. package/esm/Utils/ColorUtils.js +51 -40
  154. package/esm/Utils/EventDispatcher.js +1 -0
  155. package/esm/Utils/LogUtils.js +1 -0
  156. package/esm/Utils/MathUtils.js +12 -7
  157. package/esm/Utils/OptionsUtils.js +2 -2
  158. package/esm/Utils/Utils.js +109 -31
  159. package/esm/exports.js +1 -2
  160. package/package.json +1 -1
  161. package/report.html +84 -29
  162. package/scripts/install.js +4 -20
  163. package/tsparticles.engine.js +98 -86
  164. package/tsparticles.engine.min.js +2 -2
  165. package/types/Core/CanvasManager.d.ts +39 -0
  166. package/types/Core/Container.d.ts +29 -14
  167. package/types/Core/Engine.d.ts +2 -61
  168. package/types/Core/Interfaces/IColorManager.d.ts +0 -1
  169. package/types/Core/Interfaces/IContainerPlugin.d.ts +10 -8
  170. package/types/Core/Interfaces/IDrawParticleParams.d.ts +2 -1
  171. package/types/Core/Interfaces/IPalette.d.ts +7 -0
  172. package/types/Core/Interfaces/IParticleOpacityData.d.ts +1 -0
  173. package/types/Core/Interfaces/IParticleRetinaProps.d.ts +4 -4
  174. package/types/Core/Interfaces/IParticleUpdater.d.ts +2 -1
  175. package/types/Core/Interfaces/IParticleValueAnimation.d.ts +3 -3
  176. package/types/Core/Interfaces/IShapeDrawData.d.ts +10 -1
  177. package/types/Core/Interfaces/IShapeDrawer.d.ts +0 -1
  178. package/types/Core/Interfaces/IShapeValues.d.ts +0 -1
  179. package/types/Core/Particle.d.ts +7 -11
  180. package/types/Core/{Particles.d.ts → ParticlesManager.d.ts} +15 -14
  181. package/types/Core/RenderManager.d.ts +49 -0
  182. package/types/Core/Retina.d.ts +0 -2
  183. package/types/Core/Utils/Constants.d.ts +2 -2
  184. package/types/Core/Utils/PluginManager.d.ts +62 -0
  185. package/types/Core/Utils/Ranges.d.ts +4 -1
  186. package/types/Core/Utils/SpatialHashGrid.d.ts +25 -0
  187. package/types/Core/Utils/Vectors.d.ts +8 -10
  188. package/types/Options/Classes/ColorAnimation.d.ts +3 -1
  189. package/types/Options/Classes/HslAnimation.d.ts +3 -4
  190. package/types/Options/Classes/Options.d.ts +5 -3
  191. package/types/Options/Classes/Particles/Effect/Effect.d.ts +0 -1
  192. package/types/Options/Classes/Particles/Fill.d.ts +12 -0
  193. package/types/Options/Classes/Particles/Move/Move.d.ts +0 -2
  194. package/types/Options/Classes/Particles/ParticlesOptions.d.ts +5 -5
  195. package/types/Options/Classes/Particles/Shape/Shape.d.ts +0 -1
  196. package/types/Options/Classes/ValueWithRandom.d.ts +0 -1
  197. package/types/Options/Interfaces/IColorAnimation.d.ts +2 -0
  198. package/types/Options/Interfaces/IOptions.d.ts +1 -0
  199. package/types/Options/Interfaces/Particles/Effect/IEffect.d.ts +0 -1
  200. package/types/Options/Interfaces/Particles/IFill.d.ts +9 -0
  201. package/types/Options/Interfaces/Particles/IParticlesOptions.d.ts +2 -2
  202. package/types/Options/Interfaces/Particles/IStroke.d.ts +2 -2
  203. package/types/Options/Interfaces/Particles/Move/IMove.d.ts +0 -2
  204. package/types/Options/Interfaces/Particles/Shape/IShape.d.ts +0 -1
  205. package/types/Types/CanvasContextType.d.ts +1 -0
  206. package/types/Types/EngineInitializers.d.ts +6 -3
  207. package/types/Utils/CanvasUtils.d.ts +13 -16
  208. package/types/Utils/ColorUtils.d.ts +11 -10
  209. package/types/Utils/LogUtils.d.ts +1 -0
  210. package/types/Utils/MathUtils.d.ts +2 -0
  211. package/types/Utils/OptionsUtils.d.ts +2 -2
  212. package/types/Utils/Utils.d.ts +8 -1
  213. package/types/export-types.d.ts +7 -7
  214. package/types/exports.d.ts +1 -2
  215. package/umd/Core/CanvasManager.js +317 -0
  216. package/umd/Core/Container.js +134 -101
  217. package/umd/Core/Engine.js +28 -161
  218. package/umd/Core/Particle.js +198 -184
  219. package/umd/Core/{Particles.js → ParticlesManager.js} +186 -167
  220. package/umd/Core/RenderManager.js +317 -0
  221. package/umd/Core/Retina.js +6 -6
  222. package/umd/Core/Utils/Constants.js +3 -3
  223. package/umd/Core/Utils/EventListeners.js +67 -63
  224. package/umd/Core/Utils/PluginManager.js +159 -0
  225. package/umd/Core/Utils/Ranges.js +28 -9
  226. package/umd/Core/Utils/SpatialHashGrid.js +116 -0
  227. package/umd/Core/Utils/Vectors.js +17 -18
  228. package/umd/Options/Classes/AnimatableColor.js +1 -0
  229. package/umd/Options/Classes/AnimationOptions.js +8 -0
  230. package/umd/Options/Classes/Background/Background.js +6 -0
  231. package/umd/Options/Classes/ColorAnimation.js +12 -1
  232. package/umd/Options/Classes/FullScreen/FullScreen.js +2 -0
  233. package/umd/Options/Classes/HslAnimation.js +5 -6
  234. package/umd/Options/Classes/Options.js +67 -8
  235. package/umd/Options/Classes/OptionsColor.js +1 -0
  236. package/umd/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  237. package/umd/Options/Classes/Particles/Effect/Effect.js +3 -4
  238. package/umd/Options/Classes/Particles/Fill.js +42 -0
  239. package/umd/Options/Classes/Particles/Move/Move.js +18 -4
  240. package/umd/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  241. package/umd/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  242. package/umd/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  243. package/umd/Options/Classes/Particles/Move/OutModes.js +5 -0
  244. package/umd/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  245. package/umd/Options/Classes/Particles/Move/Spin.js +3 -0
  246. package/umd/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  247. package/umd/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  248. package/umd/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  249. package/umd/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  250. package/umd/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  251. package/umd/Options/Classes/Particles/ParticlesOptions.js +30 -10
  252. package/umd/Options/Classes/Particles/Shape/Shape.js +3 -4
  253. package/umd/Options/Classes/Particles/Size/Size.js +1 -0
  254. package/umd/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  255. package/umd/Options/Classes/Particles/Stroke.js +3 -0
  256. package/umd/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  257. package/umd/Options/Classes/ResizeEvent.js +2 -0
  258. package/umd/Options/Classes/ValueWithRandom.js +3 -4
  259. package/umd/Utils/CanvasUtils.js +44 -53
  260. package/umd/Utils/ColorUtils.js +51 -39
  261. package/umd/Utils/EventDispatcher.js +1 -0
  262. package/umd/Utils/LogUtils.js +1 -0
  263. package/umd/Utils/MathUtils.js +14 -7
  264. package/umd/Utils/OptionsUtils.js +2 -2
  265. package/umd/Utils/Utils.js +111 -32
  266. package/umd/exports.js +2 -3
  267. package/794.min.js +0 -2
  268. package/794.min.js.LICENSE.txt +0 -1
  269. package/browser/Core/Canvas.js +0 -469
  270. package/browser/Core/Particles.js +0 -344
  271. package/browser/Core/Utils/Point.js +0 -6
  272. package/browser/Core/Utils/QuadTree.js +0 -59
  273. package/browser/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  274. package/cjs/Core/Canvas.js +0 -469
  275. package/cjs/Core/Particles.js +0 -344
  276. package/cjs/Core/Utils/Point.js +0 -6
  277. package/cjs/Core/Utils/QuadTree.js +0 -59
  278. package/cjs/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  279. package/esm/Core/Canvas.js +0 -469
  280. package/esm/Core/Particles.js +0 -344
  281. package/esm/Core/Utils/Point.js +0 -6
  282. package/esm/Core/Utils/QuadTree.js +0 -59
  283. package/esm/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  284. package/tsparticles.engine.min.js.LICENSE.txt +0 -1
  285. package/types/Core/Canvas.d.ts +0 -55
  286. package/types/Core/Interfaces/IMovePathGenerator.d.ts +0 -10
  287. package/types/Core/Interfaces/IParticleMover.d.ts +0 -7
  288. package/types/Core/Utils/Point.d.ts +0 -7
  289. package/types/Core/Utils/QuadTree.d.ts +0 -18
  290. package/types/Options/Classes/Particles/Move/MoveAttract.d.ts +0 -12
  291. package/types/Options/Interfaces/Particles/Move/IMoveAttract.d.ts +0 -7
  292. package/umd/Core/Canvas.js +0 -483
  293. package/umd/Core/Utils/Point.js +0 -20
  294. package/umd/Core/Utils/QuadTree.js +0 -73
  295. package/umd/Options/Classes/Particles/Move/MoveAttract.js +0 -47
  296. /package/browser/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  297. /package/browser/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  298. /package/browser/{Options/Interfaces/Particles/Move/IMoveAttract.js → Types/CanvasContextType.js} +0 -0
  299. /package/cjs/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  300. /package/cjs/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  301. /package/cjs/{Options/Interfaces/Particles/Move/IMoveAttract.js → Types/CanvasContextType.js} +0 -0
  302. /package/esm/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  303. /package/esm/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  304. /package/esm/{Options/Interfaces/Particles/Move/IMoveAttract.js → Types/CanvasContextType.js} +0 -0
  305. /package/umd/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  306. /package/umd/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  307. /package/umd/{Options/Interfaces/Particles/Move/IMoveAttract.js → Types/CanvasContextType.js} +0 -0
@@ -1,10 +1,13 @@
1
1
  import type { Container } from "../Core/Container.js";
2
- import type { IParticleMover } from "../Core/Interfaces/IParticleMover.js";
2
+ import type { IEffectDrawer } from "../Core/Interfaces/IEffectDrawer.js";
3
3
  import type { IParticleUpdater } from "../Core/Interfaces/IParticleUpdater.js";
4
+ import type { IShapeDrawer } from "../Core/Interfaces/IShapeDrawer.js";
4
5
  export type GenericInitializer<T> = (container: Container) => Promise<T>;
5
- export type MoverInitializer = GenericInitializer<IParticleMover>;
6
+ export type EffectInitializer = GenericInitializer<IEffectDrawer>;
7
+ export type ShapeInitializer = GenericInitializer<IShapeDrawer>;
6
8
  export type UpdaterInitializer = GenericInitializer<IParticleUpdater>;
7
9
  export interface Initializers {
8
- movers: Map<string, MoverInitializer>;
10
+ effects: Map<string, EffectInitializer>;
11
+ shapes: Map<string, ShapeInitializer>;
9
12
  updaters: Map<string, UpdaterInitializer>;
10
13
  }
@@ -1,22 +1,19 @@
1
- import { AlterType } from "../Enums/Types/AlterType.js";
2
- import type { Container } from "../Core/Container.js";
1
+ import type { CanvasContextType } from "../Types/CanvasContextType.js";
3
2
  import type { IContainerPlugin } from "../Core/Interfaces/IContainerPlugin.js";
4
- import type { ICoordinates } from "../Core/Interfaces/ICoordinates.js";
5
3
  import type { IDelta } from "../Core/Interfaces/IDelta.js";
6
4
  import type { IDimension } from "../Core/Interfaces/IDimension.js";
7
5
  import type { IDrawParticleParams } from "../Core/Interfaces/IDrawParticleParams.js";
8
- import type { IHsl } from "../Core/Interfaces/Colors.js";
9
- import type { IShapeDrawData } from "../export-types.js";
6
+ import type { IEffectDrawer } from "../Core/Interfaces/IEffectDrawer.js";
7
+ import type { IShapeDrawData } from "../Core/Interfaces/IShapeDrawData.js";
8
+ import type { IShapeDrawer } from "../Core/Interfaces/IShapeDrawer.js";
10
9
  import type { Particle } from "../Core/Particle.js";
11
- export declare function drawLine(context: CanvasRenderingContext2D, begin: ICoordinates, end: ICoordinates): void;
12
- export declare function paintBase(context: CanvasRenderingContext2D, dimension: IDimension, baseColor?: string): void;
13
- export declare function paintImage(context: CanvasRenderingContext2D, dimension: IDimension, image: HTMLImageElement | undefined, opacity: number): void;
14
- export declare function clear(context: CanvasRenderingContext2D, dimension: IDimension): void;
10
+ export declare function paintBase(context: CanvasContextType, dimension: IDimension, baseColor?: string): void;
11
+ export declare function paintImage(context: CanvasContextType, dimension: IDimension, image: HTMLImageElement | undefined, opacity: number): void;
12
+ export declare function clear(context: CanvasContextType, dimension: IDimension): void;
15
13
  export declare function drawParticle(data: IDrawParticleParams): void;
16
- export declare function drawAfterEffect(container: Container, data: IShapeDrawData): void;
17
- export declare function drawBeforeEffect(container: Container, data: IShapeDrawData): void;
18
- export declare function drawShape(container: Container, data: IShapeDrawData): void;
19
- export declare function drawShapeAfterDraw(container: Container, data: IShapeDrawData): void;
20
- export declare function drawShapeBeforeDraw(container: Container, data: IShapeDrawData): void;
21
- export declare function drawParticlePlugin(context: CanvasRenderingContext2D, plugin: IContainerPlugin, particle: Particle, delta: IDelta): void;
22
- export declare function alterHsl(color: IHsl, type: AlterType, value: number): IHsl;
14
+ export declare function drawAfterEffect(drawer: IEffectDrawer | undefined, data: IShapeDrawData): void;
15
+ export declare function drawBeforeEffect(drawer: IEffectDrawer | undefined, data: IShapeDrawData): void;
16
+ export declare function drawShape(drawer: IShapeDrawer | undefined, data: IShapeDrawData): void;
17
+ export declare function drawShapeAfterDraw(drawer: IShapeDrawer | undefined, data: IShapeDrawData): void;
18
+ export declare function drawShapeBeforeDraw(drawer: IShapeDrawer | undefined, data: IShapeDrawData): void;
19
+ export declare function drawParticlePlugin(context: CanvasContextType, plugin: IContainerPlugin, particle: Particle, delta: IDelta): void;
@@ -1,19 +1,19 @@
1
1
  import type { IColor, IHsl, IHsla, IRangeColor, IRgb, IRgba } from "../Core/Interfaces/Colors.js";
2
- import type { Engine } from "../Core/Engine.js";
2
+ import { AlterType } from "../Enums/Types/AlterType.js";
3
3
  import type { HslAnimation } from "../Options/Classes/HslAnimation.js";
4
4
  import type { IDelta } from "../Core/Interfaces/IDelta.js";
5
5
  import type { IOptionsColor } from "../Options/Interfaces/IOptionsColor.js";
6
6
  import type { IParticleColorAnimation } from "../Core/Interfaces/IParticleValueAnimation.js";
7
7
  import type { IParticleHslAnimation } from "../Core/Interfaces/IParticleHslAnimation.js";
8
- import type { IRangeValue } from "../Core/Interfaces/IRangeValue.js";
9
8
  import type { Particle } from "../Core/Particle.js";
10
- export declare function rangeColorToRgb(engine: Engine, input?: string | IRangeColor, index?: number, useIndex?: boolean): IRgb | undefined;
11
- export declare function colorToRgb(engine: Engine, input?: string | IColor, index?: number, useIndex?: boolean): IRgb | undefined;
12
- export declare function colorToHsl(engine: Engine, color: string | IColor | undefined, index?: number, useIndex?: boolean): IHsl | undefined;
13
- export declare function rangeColorToHsl(engine: Engine, color: string | IRangeColor | undefined, index?: number, useIndex?: boolean): IHsl | undefined;
9
+ import type { PluginManager } from "../Core/Utils/PluginManager.js";
10
+ export declare function rangeColorToRgb(pluginManager: PluginManager, input?: string | IRangeColor, index?: number, useIndex?: boolean): IRgb | undefined;
11
+ export declare function colorToRgb(pluginManager: PluginManager, input?: string | IColor, index?: number, useIndex?: boolean): IRgb | undefined;
12
+ export declare function colorToHsl(pluginManager: PluginManager, color: string | IColor | undefined, index?: number, useIndex?: boolean): IHsl | undefined;
13
+ export declare function rangeColorToHsl(pluginManager: PluginManager, color: string | IRangeColor | undefined, index?: number, useIndex?: boolean): IHsl | undefined;
14
14
  export declare function rgbToHsl(color: IRgb): IHsl;
15
- export declare function stringToAlpha(engine: Engine, input: string): number | undefined;
16
- export declare function stringToRgb(engine: Engine, input: string): IRgb | undefined;
15
+ export declare function stringToAlpha(pluginManager: PluginManager, input: string): number | undefined;
16
+ export declare function stringToRgb(pluginManager: PluginManager, input: string): IRgb | undefined;
17
17
  export declare function hslToRgb(hsl: IHsl): IRgb;
18
18
  export declare function hslaToRgba(hsla: IHsla): IRgba;
19
19
  export declare function getRandomRgbColor(min?: number): IRgb;
@@ -21,8 +21,9 @@ export declare function getStyleFromRgb(color: IRgb, hdr: boolean, opacity?: num
21
21
  export declare function getStyleFromHsl(color: IHsl, hdr: boolean, opacity?: number): string;
22
22
  export declare function colorMix(color1: IRgb | IHsl, color2: IRgb | IHsl, size1: number, size2: number): IRgb;
23
23
  export declare function getLinkColor(p1: Particle, p2?: Particle, linkColor?: string | IRgb): IRgb | undefined;
24
- export declare function getLinkRandomColor(engine: Engine, optColor: string | IOptionsColor, blink: boolean, consent: boolean): IRgb | string | undefined;
24
+ export declare function getLinkRandomColor(pluginManager: PluginManager, optColor: string | IOptionsColor, blink: boolean, consent: boolean): IRgb | string | undefined;
25
25
  export declare function getHslFromAnimation(animation?: IParticleHslAnimation): IHsl | undefined;
26
26
  export declare function getHslAnimationFromHsl(hsl: IHsl, animationOptions: HslAnimation | undefined, reduceFactor: number): IParticleHslAnimation;
27
- export declare function updateColorValue(data: IParticleColorAnimation, range: IRangeValue, decrease: boolean, delta: IDelta): void;
27
+ export declare function updateColorValue(data: IParticleColorAnimation, decrease: boolean, delta: IDelta): void;
28
28
  export declare function updateColor(color: IParticleHslAnimation | undefined, delta: IDelta): void;
29
+ export declare function alterHsl(color: IHsl, type: AlterType, value: number): IHsl;
@@ -3,6 +3,7 @@ interface ILogger {
3
3
  error(this: void, message?: unknown, ...optionalParams: unknown[]): void;
4
4
  info(this: void, message?: unknown, ...optionalParams: unknown[]): void;
5
5
  log(this: void, message?: unknown, ...optionalParams: unknown[]): void;
6
+ trace(this: void, ...data: unknown[]): void;
6
7
  verbose(this: void, message?: unknown, ...optionalParams: unknown[]): void;
7
8
  warning(this: void, message?: unknown, ...optionalParams: unknown[]): void;
8
9
  }
@@ -21,7 +21,9 @@ export declare function getDistances(pointA: ICoordinates, pointB: ICoordinates)
21
21
  dx: number;
22
22
  dy: number;
23
23
  };
24
+ export declare function getDistanceSq(pointA: ICoordinates, pointB: ICoordinates): number;
24
25
  export declare function getDistance(pointA: ICoordinates, pointB: ICoordinates): number;
26
+ export declare function checkDistance(pointA: ICoordinates, pointB: ICoordinates, distance: number): boolean;
25
27
  export declare function degToRad(degrees: number): number;
26
28
  export declare function getParticleDirectionAngle(direction: MoveDirection | keyof typeof MoveDirection | MoveDirectionAlt | number, position: ICoordinates, center: ICoordinates): number;
27
29
  export declare function getParticleBaseVelocity(direction: number): Vector;
@@ -1,8 +1,8 @@
1
1
  import type { Container } from "../Core/Container.js";
2
- import type { Engine } from "../Core/Engine.js";
3
2
  import type { IOptionLoader } from "../Options/Interfaces/IOptionLoader.js";
4
3
  import type { IParticlesOptions } from "../Options/Interfaces/Particles/IParticlesOptions.js";
5
4
  import { ParticlesOptions } from "../Options/Classes/Particles/ParticlesOptions.js";
5
+ import type { PluginManager } from "../Core/Utils/PluginManager.js";
6
6
  import type { RecursivePartial } from "../Types/RecursivePartial.js";
7
7
  export declare function loadOptions<T>(options: IOptionLoader<T>, ...sourceOptionsArr: RecursivePartial<T | undefined>[]): void;
8
- export declare function loadParticlesOptions(engine: Engine, container: Container, ...sourceOptionsArr: RecursivePartial<IParticlesOptions | undefined>[]): ParticlesOptions;
8
+ export declare function loadParticlesOptions(pluginManager: PluginManager, container: Container, ...sourceOptionsArr: RecursivePartial<IParticlesOptions | undefined>[]): ParticlesOptions;
@@ -11,13 +11,18 @@ import { OutModeDirection } from "../Enums/Directions/OutModeDirection.js";
11
11
  import type { Particle } from "../Core/Particle.js";
12
12
  import type { RangedAnimationValueWithRandom } from "../Options/Classes/ValueWithRandom.js";
13
13
  import type { SingleOrMultiple } from "../Types/SingleOrMultiple.js";
14
+ interface MemoizeOptions<TArgs> {
15
+ keyFn?: (args: TArgs) => string;
16
+ maxSize?: number;
17
+ ttlMs?: number;
18
+ }
19
+ export declare function memoize<TArgs extends unknown[], Result>(fn: (...args: TArgs) => Result, options?: MemoizeOptions<TArgs>): (...args: TArgs) => Result;
14
20
  export declare function hasMatchMedia(): boolean;
15
21
  export declare function safeDocument(): Document;
16
22
  export declare function safeMatchMedia(query: string): MediaQueryList | undefined;
17
23
  export declare function safeIntersectionObserver(callback: (records: IntersectionObserverEntry[]) => void): IntersectionObserver | undefined;
18
24
  export declare function safeMutationObserver(callback: (records: MutationRecord[]) => void): MutationObserver | undefined;
19
25
  export declare function isInArray<T>(value: T, array: SingleOrMultiple<T>): boolean;
20
- export declare function loadFont(font?: string, weight?: string): Promise<void>;
21
26
  export declare function arrayRandomIndex(array: unknown[]): number;
22
27
  export declare function itemFromArray<T>(array: T[], index?: number, useIndex?: boolean): T | undefined;
23
28
  export declare function isPointInside(point: ICoordinates, size: IDimension, offset: ICoordinates, radius?: number, direction?: OutModeDirection): boolean;
@@ -37,3 +42,5 @@ export declare function cloneStyle(style: Partial<CSSStyleDeclaration>): CSSStyl
37
42
  export declare const getFullScreenStyle: (zIndex: number) => CSSStyleDeclaration;
38
43
  export declare function manageListener(element: HTMLElement | Node | Window | MediaQueryList | typeof globalThis, event: string, handler: EventListenerOrEventListenerObject, add: boolean, options?: boolean | AddEventListenerOptions | EventListenerObject): void;
39
44
  export declare function getItemsFromInitializer<TItem, TInitializer extends GenericInitializer<TItem>>(container: Container, map: Map<Container, TItem[]>, initializers: Map<string, TInitializer>, force?: boolean): Promise<TItem[]>;
45
+ export declare function getItemMapFromInitializer<TItem, TInitializer extends GenericInitializer<TItem>>(container: Container, map: Map<Container, Map<string, TItem>>, initializers: Map<string, TInitializer>, force?: boolean): Promise<Map<string, TItem>>;
46
+ export {};
@@ -11,11 +11,10 @@ export type * from "./Core/Interfaces/IDistance.js";
11
11
  export type * from "./Core/Interfaces/IDrawParticleParams.js";
12
12
  export type * from "./Core/Interfaces/IEffectDrawer.js";
13
13
  export type * from "./Core/Interfaces/ILoadParams.js";
14
- export type * from "./Core/Interfaces/IMovePathGenerator.js";
14
+ export type * from "./Core/Interfaces/IPalette.js";
15
15
  export type * from "./Core/Interfaces/IParticleColorStyle.js";
16
16
  export type * from "./Core/Interfaces/IParticleHslAnimation.js";
17
17
  export type * from "./Core/Interfaces/IParticleLife.js";
18
- export type * from "./Core/Interfaces/IParticleMover.js";
19
18
  export type * from "./Core/Interfaces/IParticleRetinaProps.js";
20
19
  export type * from "./Core/Interfaces/IParticleRoll.js";
21
20
  export type * from "./Core/Interfaces/IParticleTransformValues.js";
@@ -43,8 +42,8 @@ export type * from "./Options/Interfaces/IValueWithRandom.js";
43
42
  export type * from "./Options/Interfaces/Particles/Bounce/IParticlesBounce.js";
44
43
  export type * from "./Options/Interfaces/Particles/Effect/IEffect.js";
45
44
  export type * from "./Options/Interfaces/Particles/IParticlesOptions.js";
45
+ export type * from "./Options/Interfaces/Particles/IFill.js";
46
46
  export type * from "./Options/Interfaces/Particles/IStroke.js";
47
- export type * from "./Options/Interfaces/Particles/Move/IMoveAttract.js";
48
47
  export type * from "./Options/Interfaces/Particles/Move/IMove.js";
49
48
  export type * from "./Options/Interfaces/Particles/Move/IMoveAngle.js";
50
49
  export type * from "./Options/Interfaces/Particles/Move/IMoveCenter.js";
@@ -61,6 +60,7 @@ export type * from "./Options/Interfaces/Particles/Shape/IShape.js";
61
60
  export type * from "./Options/Interfaces/Particles/Size/ISize.js";
62
61
  export type * from "./Options/Interfaces/Particles/Size/ISizeAnimation.js";
63
62
  export type * from "./Options/Interfaces/Particles/ZIndex/IZIndex.js";
63
+ export type * from "./Types/CanvasContextType.js";
64
64
  export type * from "./Types/CustomEventArgs.js";
65
65
  export type * from "./Types/CustomEventListener.js";
66
66
  export type * from "./Types/EasingFunction.js";
@@ -74,11 +74,11 @@ export type * from "./Types/RecursivePartial.js";
74
74
  export type * from "./Types/ShapeData.js";
75
75
  export type * from "./Types/SingleOrMultiple.js";
76
76
  export type { EventListeners } from "./Core/Utils/EventListeners.js";
77
- export type { QuadTree } from "./Core/Utils/QuadTree.js";
78
- export type { Canvas } from "./Core/Canvas.js";
77
+ export type { SpatialHashGrid } from "./Core/Utils/SpatialHashGrid.js";
78
+ export type { CanvasManager } from "./Core/CanvasManager.js";
79
79
  export type { Container } from "./Core/Container.js";
80
80
  export type { Particle } from "./Core/Particle.js";
81
- export type { Particles } from "./Core/Particles.js";
81
+ export type { ParticlesManager } from "./Core/ParticlesManager.js";
82
82
  export type { Retina } from "./Core/Retina.js";
83
83
  export type { Engine } from "./Core/Engine.js";
84
- export type { IParticlesNumberLimit } from "./Options/Interfaces/Particles/Number/IParticlesNumberLimit.js";
84
+ export type { PluginManager } from "./Core/Utils/PluginManager.js";
@@ -1,5 +1,4 @@
1
1
  export * from "./Core/Utils/Constants.js";
2
- export * from "./Core/Utils/Point.js";
3
2
  export * from "./Core/Utils/Ranges.js";
4
3
  export * from "./Core/Utils/Vectors.js";
5
4
  export * from "./Enums/Directions/MoveDirection.js";
@@ -28,8 +27,8 @@ export * from "./Options/Classes/OptionsColor.js";
28
27
  export * from "./Options/Classes/Particles/Bounce/ParticlesBounce.js";
29
28
  export * from "./Options/Classes/Particles/Bounce/ParticlesBounceFactor.js";
30
29
  export * from "./Options/Classes/Particles/ParticlesOptions.js";
30
+ export * from "./Options/Classes/Particles/Fill.js";
31
31
  export * from "./Options/Classes/Particles/Stroke.js";
32
- export * from "./Options/Classes/Particles/Move/MoveAttract.js";
33
32
  export * from "./Options/Classes/Particles/Move/Move.js";
34
33
  export * from "./Options/Classes/Particles/Move/MoveAngle.js";
35
34
  export * from "./Options/Classes/Particles/Move/MoveCenter.js";
@@ -0,0 +1,317 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "../Utils/Utils.js", "./Utils/Constants.js", "../Utils/ColorUtils.js", "./RenderManager.js"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CanvasManager = void 0;
13
+ const Utils_js_1 = require("../Utils/Utils.js");
14
+ const Constants_js_1 = require("./Utils/Constants.js");
15
+ const ColorUtils_js_1 = require("../Utils/ColorUtils.js");
16
+ const RenderManager_js_1 = require("./RenderManager.js");
17
+ function setStyle(canvas, style, important = false) {
18
+ if (!style) {
19
+ return;
20
+ }
21
+ const element = canvas, elementStyle = element.style, keys = new Set();
22
+ for (let i = 0; i < elementStyle.length; i++) {
23
+ const key = elementStyle.item(i);
24
+ if (!key) {
25
+ continue;
26
+ }
27
+ keys.add(key);
28
+ }
29
+ for (let i = 0; i < style.length; i++) {
30
+ const key = style.item(i);
31
+ if (!key) {
32
+ continue;
33
+ }
34
+ keys.add(key);
35
+ }
36
+ for (const key of keys) {
37
+ const value = style.getPropertyValue(key);
38
+ if (value) {
39
+ elementStyle.setProperty(key, value, important ? "important" : "");
40
+ }
41
+ else {
42
+ elementStyle.removeProperty(key);
43
+ }
44
+ }
45
+ }
46
+ class CanvasManager {
47
+ element;
48
+ render;
49
+ size;
50
+ zoom = Constants_js_1.defaultZoom;
51
+ _container;
52
+ _generated;
53
+ _mutationObserver;
54
+ _originalStyle;
55
+ _pluginManager;
56
+ _pointerEvents;
57
+ _resizePlugins;
58
+ _standardSize;
59
+ _zoomCenter;
60
+ constructor(pluginManager, container) {
61
+ this._pluginManager = pluginManager;
62
+ this._container = container;
63
+ this.render = new RenderManager_js_1.RenderManager(pluginManager, container, this);
64
+ this._standardSize = {
65
+ height: 0,
66
+ width: 0,
67
+ };
68
+ const pxRatio = container.retina.pixelRatio, stdSize = this._standardSize;
69
+ this.size = {
70
+ height: stdSize.height * pxRatio,
71
+ width: stdSize.width * pxRatio,
72
+ };
73
+ this._generated = false;
74
+ this._resizePlugins = [];
75
+ this._pointerEvents = "none";
76
+ }
77
+ get _fullScreen() {
78
+ return this._container.actualOptions.fullScreen.enable;
79
+ }
80
+ destroy() {
81
+ this.stop();
82
+ if (this._generated) {
83
+ const element = this.element;
84
+ element?.remove();
85
+ this.element = undefined;
86
+ }
87
+ else {
88
+ this._resetOriginalStyle();
89
+ }
90
+ this.render.destroy();
91
+ this._resizePlugins = [];
92
+ }
93
+ getZoomCenter() {
94
+ const pxRatio = this._container.retina.pixelRatio, { width, height } = this.size;
95
+ if (this._zoomCenter) {
96
+ return this._zoomCenter;
97
+ }
98
+ return {
99
+ x: (width * Constants_js_1.half) / pxRatio,
100
+ y: (height * Constants_js_1.half) / pxRatio,
101
+ };
102
+ }
103
+ init() {
104
+ this._safeMutationObserver(obs => {
105
+ obs.disconnect();
106
+ });
107
+ this._mutationObserver = (0, Utils_js_1.safeMutationObserver)(records => {
108
+ for (const record of records) {
109
+ if (record.type === "attributes" && record.attributeName === "style") {
110
+ this._repairStyle();
111
+ }
112
+ }
113
+ });
114
+ this.resize();
115
+ this._initStyle();
116
+ this.initBackground();
117
+ this._safeMutationObserver(obs => {
118
+ if (!this.element || !(this.element instanceof Node)) {
119
+ return;
120
+ }
121
+ obs.observe(this.element, { attributes: true });
122
+ });
123
+ this.initPlugins();
124
+ this.render.init();
125
+ }
126
+ initBackground() {
127
+ const { _container } = this, options = _container.actualOptions, background = options.background, element = this.element;
128
+ if (!element) {
129
+ return;
130
+ }
131
+ const elementStyle = element.style, color = (0, ColorUtils_js_1.rangeColorToRgb)(this._pluginManager, background.color);
132
+ if (color) {
133
+ elementStyle.backgroundColor = (0, ColorUtils_js_1.getStyleFromRgb)(color, _container.hdr, background.opacity);
134
+ }
135
+ else {
136
+ elementStyle.backgroundColor = "";
137
+ }
138
+ elementStyle.backgroundImage = background.image || "";
139
+ elementStyle.backgroundPosition = background.position || "";
140
+ elementStyle.backgroundRepeat = background.repeat || "";
141
+ elementStyle.backgroundSize = background.size || "";
142
+ }
143
+ initPlugins() {
144
+ this._resizePlugins = [];
145
+ for (const plugin of this._container.plugins) {
146
+ if (plugin.resize) {
147
+ this._resizePlugins.push(plugin);
148
+ }
149
+ }
150
+ }
151
+ loadCanvas(canvas) {
152
+ if (this._generated && this.element) {
153
+ this.element.remove();
154
+ }
155
+ const container = this._container;
156
+ this._generated =
157
+ Constants_js_1.generatedAttribute in canvas.dataset ? canvas.dataset[Constants_js_1.generatedAttribute] === "true" : this._generated;
158
+ this.element = canvas;
159
+ this.element.ariaHidden = "true";
160
+ this._originalStyle = (0, Utils_js_1.cloneStyle)(this.element.style);
161
+ const standardSize = this._standardSize;
162
+ standardSize.height = canvas.offsetHeight;
163
+ standardSize.width = canvas.offsetWidth;
164
+ const pxRatio = this._container.retina.pixelRatio, retinaSize = this.size;
165
+ canvas.height = retinaSize.height = standardSize.height * pxRatio;
166
+ canvas.width = retinaSize.width = standardSize.width * pxRatio;
167
+ const canSupportHdrQuery = (0, Utils_js_1.safeMatchMedia)("(color-gamut: p3)");
168
+ this.render.setContextSettings({
169
+ alpha: true,
170
+ colorSpace: canSupportHdrQuery?.matches && container.hdr ? "display-p3" : "srgb",
171
+ desynchronized: true,
172
+ willReadFrequently: false,
173
+ });
174
+ this.render.setContext(this.element.getContext("2d", this.render.settings));
175
+ this._safeMutationObserver(obs => {
176
+ obs.disconnect();
177
+ });
178
+ container.retina.init();
179
+ this.initBackground();
180
+ this._safeMutationObserver(obs => {
181
+ if (!this.element || !(this.element instanceof Node)) {
182
+ return;
183
+ }
184
+ obs.observe(this.element, { attributes: true });
185
+ });
186
+ }
187
+ resize() {
188
+ if (!this.element) {
189
+ return false;
190
+ }
191
+ const container = this._container, currentSize = container.canvas._standardSize, newSize = {
192
+ width: this.element.offsetWidth,
193
+ height: this.element.offsetHeight,
194
+ }, pxRatio = container.retina.pixelRatio, retinaSize = {
195
+ width: newSize.width * pxRatio,
196
+ height: newSize.height * pxRatio,
197
+ };
198
+ if (newSize.height === currentSize.height &&
199
+ newSize.width === currentSize.width &&
200
+ retinaSize.height === this.element.height &&
201
+ retinaSize.width === this.element.width) {
202
+ return false;
203
+ }
204
+ const oldSize = { ...currentSize };
205
+ currentSize.height = newSize.height;
206
+ currentSize.width = newSize.width;
207
+ const canvasSize = this.size;
208
+ this.element.width = canvasSize.width = retinaSize.width;
209
+ this.element.height = canvasSize.height = retinaSize.height;
210
+ if (this._container.started) {
211
+ container.particles.setResizeFactor({
212
+ width: currentSize.width / oldSize.width,
213
+ height: currentSize.height / oldSize.height,
214
+ });
215
+ }
216
+ return true;
217
+ }
218
+ setPointerEvents(type) {
219
+ const element = this.element;
220
+ if (!element) {
221
+ return;
222
+ }
223
+ this._pointerEvents = type;
224
+ this._repairStyle();
225
+ }
226
+ setZoom(zoomLevel, center) {
227
+ this.zoom = zoomLevel;
228
+ this._zoomCenter = center;
229
+ }
230
+ stop() {
231
+ this._safeMutationObserver(obs => {
232
+ obs.disconnect();
233
+ });
234
+ this._mutationObserver = undefined;
235
+ this.render.stop();
236
+ }
237
+ async windowResize() {
238
+ if (!this.element || !this.resize()) {
239
+ return;
240
+ }
241
+ const container = this._container, needsRefresh = container.updateActualOptions();
242
+ container.particles.setDensity();
243
+ this._applyResizePlugins();
244
+ if (needsRefresh) {
245
+ await container.refresh();
246
+ }
247
+ }
248
+ _applyResizePlugins = () => {
249
+ for (const plugin of this._resizePlugins) {
250
+ plugin.resize?.();
251
+ }
252
+ };
253
+ _initStyle = () => {
254
+ const element = this.element, options = this._container.actualOptions;
255
+ if (!element) {
256
+ return;
257
+ }
258
+ if (this._fullScreen) {
259
+ this._setFullScreenStyle();
260
+ }
261
+ else {
262
+ this._resetOriginalStyle();
263
+ }
264
+ for (const key in options.style) {
265
+ if (!key || !(key in options.style)) {
266
+ continue;
267
+ }
268
+ const value = options.style[key];
269
+ if (!value) {
270
+ continue;
271
+ }
272
+ element.style.setProperty(key, value, "important");
273
+ }
274
+ };
275
+ _repairStyle = () => {
276
+ const element = this.element;
277
+ if (!element) {
278
+ return;
279
+ }
280
+ this._safeMutationObserver(observer => {
281
+ observer.disconnect();
282
+ });
283
+ this._initStyle();
284
+ this.initBackground();
285
+ const pointerEvents = this._pointerEvents;
286
+ element.style.pointerEvents = pointerEvents;
287
+ element.setAttribute("pointer-events", pointerEvents);
288
+ this._safeMutationObserver(observer => {
289
+ if (!(element instanceof Node)) {
290
+ return;
291
+ }
292
+ observer.observe(element, { attributes: true });
293
+ });
294
+ };
295
+ _resetOriginalStyle = () => {
296
+ const element = this.element, originalStyle = this._originalStyle;
297
+ if (!element || !originalStyle) {
298
+ return;
299
+ }
300
+ setStyle(element, originalStyle, true);
301
+ };
302
+ _safeMutationObserver = callback => {
303
+ if (!this._mutationObserver) {
304
+ return;
305
+ }
306
+ callback(this._mutationObserver);
307
+ };
308
+ _setFullScreenStyle = () => {
309
+ const element = this.element;
310
+ if (!element) {
311
+ return;
312
+ }
313
+ setStyle(element, (0, Utils_js_1.getFullScreenStyle)(this._container.actualOptions.fullScreen.zIndex), true);
314
+ };
315
+ }
316
+ exports.CanvasManager = CanvasManager;
317
+ });