@tsparticles/engine 4.0.0-alpha.5 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/164.min.js +1 -0
  2. package/README.md +41 -7
  3. package/browser/Core/Canvas.js +250 -143
  4. package/browser/Core/Container.js +80 -74
  5. package/browser/Core/Engine.js +44 -67
  6. package/browser/Core/Particle.js +202 -173
  7. package/browser/Core/Particles.js +187 -138
  8. package/browser/Core/Retina.js +5 -0
  9. package/browser/Core/Utils/Constants.js +2 -2
  10. package/browser/Core/Utils/EventListeners.js +67 -63
  11. package/browser/Core/Utils/Ranges.js +29 -10
  12. package/browser/Core/Utils/SpatialHashGrid.js +102 -0
  13. package/browser/Core/Utils/Vectors.js +17 -18
  14. package/browser/Enums/Types/EasingType.js +18 -3
  15. package/browser/Options/Classes/AnimatableColor.js +1 -0
  16. package/browser/Options/Classes/AnimationOptions.js +8 -0
  17. package/browser/Options/Classes/Background/Background.js +6 -0
  18. package/browser/Options/Classes/ColorAnimation.js +12 -1
  19. package/browser/Options/Classes/FullScreen/FullScreen.js +2 -0
  20. package/browser/Options/Classes/HslAnimation.js +4 -5
  21. package/browser/Options/Classes/Options.js +63 -4
  22. package/browser/Options/Classes/OptionsColor.js +1 -0
  23. package/browser/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  24. package/browser/Options/Classes/Particles/Effect/Effect.js +3 -4
  25. package/browser/Options/Classes/Particles/Fill.js +28 -0
  26. package/browser/Options/Classes/Particles/Move/Move.js +17 -3
  27. package/browser/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  28. package/browser/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  29. package/browser/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  30. package/browser/Options/Classes/Particles/Move/OutModes.js +5 -0
  31. package/browser/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  32. package/browser/Options/Classes/Particles/Move/Spin.js +3 -0
  33. package/browser/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  34. package/browser/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  35. package/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  36. package/browser/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  37. package/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  38. package/browser/Options/Classes/Particles/ParticlesOptions.js +25 -5
  39. package/browser/Options/Classes/Particles/Shape/Shape.js +3 -4
  40. package/browser/Options/Classes/Particles/Size/Size.js +1 -0
  41. package/browser/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  42. package/browser/Options/Classes/Particles/Stroke.js +3 -0
  43. package/browser/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  44. package/browser/Options/Classes/ResizeEvent.js +2 -0
  45. package/browser/Options/Classes/ValueWithRandom.js +3 -4
  46. package/browser/Utils/CanvasUtils.js +43 -62
  47. package/browser/Utils/ColorUtils.js +30 -19
  48. package/browser/Utils/EventDispatcher.js +1 -0
  49. package/browser/Utils/MathUtils.js +12 -7
  50. package/browser/Utils/Utils.js +109 -31
  51. package/browser/exports.js +1 -2
  52. package/cjs/Core/Canvas.js +250 -143
  53. package/cjs/Core/Container.js +80 -74
  54. package/cjs/Core/Engine.js +44 -67
  55. package/cjs/Core/Particle.js +202 -173
  56. package/cjs/Core/Particles.js +187 -138
  57. package/cjs/Core/Retina.js +5 -0
  58. package/cjs/Core/Utils/Constants.js +2 -2
  59. package/cjs/Core/Utils/EventListeners.js +67 -63
  60. package/cjs/Core/Utils/Ranges.js +29 -10
  61. package/cjs/Core/Utils/SpatialHashGrid.js +102 -0
  62. package/cjs/Core/Utils/Vectors.js +17 -18
  63. package/cjs/Enums/Types/EasingType.js +18 -3
  64. package/cjs/Options/Classes/AnimatableColor.js +1 -0
  65. package/cjs/Options/Classes/AnimationOptions.js +8 -0
  66. package/cjs/Options/Classes/Background/Background.js +6 -0
  67. package/cjs/Options/Classes/ColorAnimation.js +12 -1
  68. package/cjs/Options/Classes/FullScreen/FullScreen.js +2 -0
  69. package/cjs/Options/Classes/HslAnimation.js +4 -5
  70. package/cjs/Options/Classes/Options.js +63 -4
  71. package/cjs/Options/Classes/OptionsColor.js +1 -0
  72. package/cjs/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  73. package/cjs/Options/Classes/Particles/Effect/Effect.js +3 -4
  74. package/cjs/Options/Classes/Particles/Fill.js +28 -0
  75. package/cjs/Options/Classes/Particles/Move/Move.js +17 -3
  76. package/cjs/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  77. package/cjs/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  78. package/cjs/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  79. package/cjs/Options/Classes/Particles/Move/OutModes.js +5 -0
  80. package/cjs/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  81. package/cjs/Options/Classes/Particles/Move/Spin.js +3 -0
  82. package/cjs/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  83. package/cjs/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  84. package/cjs/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  85. package/cjs/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  86. package/cjs/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  87. package/cjs/Options/Classes/Particles/ParticlesOptions.js +25 -5
  88. package/cjs/Options/Classes/Particles/Shape/Shape.js +3 -4
  89. package/cjs/Options/Classes/Particles/Size/Size.js +1 -0
  90. package/cjs/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  91. package/cjs/Options/Classes/Particles/Stroke.js +3 -0
  92. package/cjs/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  93. package/cjs/Options/Classes/ResizeEvent.js +2 -0
  94. package/cjs/Options/Classes/ValueWithRandom.js +3 -4
  95. package/cjs/Utils/CanvasUtils.js +43 -62
  96. package/cjs/Utils/ColorUtils.js +30 -19
  97. package/cjs/Utils/EventDispatcher.js +1 -0
  98. package/cjs/Utils/MathUtils.js +12 -7
  99. package/cjs/Utils/Utils.js +109 -31
  100. package/cjs/exports.js +1 -2
  101. package/dist_browser_Core_Container_js.js +12 -12
  102. package/esm/Core/Canvas.js +250 -143
  103. package/esm/Core/Container.js +80 -74
  104. package/esm/Core/Engine.js +44 -67
  105. package/esm/Core/Particle.js +202 -173
  106. package/esm/Core/Particles.js +187 -138
  107. package/esm/Core/Retina.js +5 -0
  108. package/esm/Core/Utils/Constants.js +2 -2
  109. package/esm/Core/Utils/EventListeners.js +67 -63
  110. package/esm/Core/Utils/Ranges.js +29 -10
  111. package/esm/Core/Utils/SpatialHashGrid.js +102 -0
  112. package/esm/Core/Utils/Vectors.js +17 -18
  113. package/esm/Enums/Types/EasingType.js +18 -3
  114. package/esm/Options/Classes/AnimatableColor.js +1 -0
  115. package/esm/Options/Classes/AnimationOptions.js +8 -0
  116. package/esm/Options/Classes/Background/Background.js +6 -0
  117. package/esm/Options/Classes/ColorAnimation.js +12 -1
  118. package/esm/Options/Classes/FullScreen/FullScreen.js +2 -0
  119. package/esm/Options/Classes/HslAnimation.js +4 -5
  120. package/esm/Options/Classes/Options.js +63 -4
  121. package/esm/Options/Classes/OptionsColor.js +1 -0
  122. package/esm/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  123. package/esm/Options/Classes/Particles/Effect/Effect.js +3 -4
  124. package/esm/Options/Classes/Particles/Fill.js +28 -0
  125. package/esm/Options/Classes/Particles/Move/Move.js +17 -3
  126. package/esm/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  127. package/esm/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  128. package/esm/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  129. package/esm/Options/Classes/Particles/Move/OutModes.js +5 -0
  130. package/esm/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  131. package/esm/Options/Classes/Particles/Move/Spin.js +3 -0
  132. package/esm/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  133. package/esm/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  134. package/esm/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  135. package/esm/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  136. package/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  137. package/esm/Options/Classes/Particles/ParticlesOptions.js +25 -5
  138. package/esm/Options/Classes/Particles/Shape/Shape.js +3 -4
  139. package/esm/Options/Classes/Particles/Size/Size.js +1 -0
  140. package/esm/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  141. package/esm/Options/Classes/Particles/Stroke.js +3 -0
  142. package/esm/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  143. package/esm/Options/Classes/ResizeEvent.js +2 -0
  144. package/esm/Options/Classes/ValueWithRandom.js +3 -4
  145. package/esm/Utils/CanvasUtils.js +43 -62
  146. package/esm/Utils/ColorUtils.js +30 -19
  147. package/esm/Utils/EventDispatcher.js +1 -0
  148. package/esm/Utils/MathUtils.js +12 -7
  149. package/esm/Utils/Utils.js +109 -31
  150. package/esm/exports.js +1 -2
  151. package/package.json +1 -1
  152. package/report.html +3 -3
  153. package/scripts/install.js +4 -20
  154. package/tsparticles.engine.js +93 -91
  155. package/tsparticles.engine.min.js +2 -2
  156. package/types/Core/Canvas.d.ts +17 -4
  157. package/types/Core/Container.d.ts +3 -7
  158. package/types/Core/Engine.d.ts +13 -20
  159. package/types/Core/Interfaces/IColorManager.d.ts +0 -1
  160. package/types/Core/Interfaces/IContainerPlugin.d.ts +6 -1
  161. package/types/Core/Interfaces/IPalette.d.ts +7 -0
  162. package/types/Core/Interfaces/IParticleOpacityData.d.ts +1 -0
  163. package/types/Core/Interfaces/IParticleValueAnimation.d.ts +3 -3
  164. package/types/Core/Interfaces/IShapeDrawData.d.ts +8 -0
  165. package/types/Core/Interfaces/IShapeDrawer.d.ts +0 -1
  166. package/types/Core/Interfaces/IShapeValues.d.ts +0 -1
  167. package/types/Core/Particle.d.ts +4 -7
  168. package/types/Core/Particles.d.ts +15 -7
  169. package/types/Core/Utils/Constants.d.ts +2 -2
  170. package/types/Core/Utils/Ranges.d.ts +4 -1
  171. package/types/Core/Utils/SpatialHashGrid.d.ts +25 -0
  172. package/types/Core/Utils/Vectors.d.ts +8 -10
  173. package/types/Enums/Types/EasingType.d.ts +20 -5
  174. package/types/Options/Classes/ColorAnimation.d.ts +3 -1
  175. package/types/Options/Classes/HslAnimation.d.ts +3 -4
  176. package/types/Options/Classes/Options.d.ts +2 -0
  177. package/types/Options/Classes/Particles/Effect/Effect.d.ts +0 -1
  178. package/types/Options/Classes/Particles/Fill.d.ts +12 -0
  179. package/types/Options/Classes/Particles/Move/Move.d.ts +0 -2
  180. package/types/Options/Classes/Particles/ParticlesOptions.d.ts +2 -2
  181. package/types/Options/Classes/Particles/Shape/Shape.d.ts +0 -1
  182. package/types/Options/Classes/ValueWithRandom.d.ts +0 -1
  183. package/types/Options/Interfaces/IColorAnimation.d.ts +2 -0
  184. package/types/Options/Interfaces/IOptions.d.ts +1 -0
  185. package/types/Options/Interfaces/Particles/Effect/IEffect.d.ts +0 -1
  186. package/types/Options/Interfaces/Particles/IFill.d.ts +9 -0
  187. package/types/Options/Interfaces/Particles/IParticlesOptions.d.ts +2 -2
  188. package/types/Options/Interfaces/Particles/IStroke.d.ts +2 -2
  189. package/types/Options/Interfaces/Particles/Move/IMove.d.ts +0 -2
  190. package/types/Options/Interfaces/Particles/Shape/IShape.d.ts +0 -1
  191. package/types/Types/EngineInitializers.d.ts +6 -3
  192. package/types/Utils/CanvasUtils.d.ts +6 -14
  193. package/types/Utils/ColorUtils.d.ts +3 -2
  194. package/types/Utils/MathUtils.d.ts +2 -0
  195. package/types/Utils/Utils.d.ts +8 -1
  196. package/types/export-types.d.ts +3 -5
  197. package/types/exports.d.ts +1 -2
  198. package/umd/Core/Canvas.js +248 -141
  199. package/umd/Core/Container.js +80 -74
  200. package/umd/Core/Engine.js +43 -66
  201. package/umd/Core/Particle.js +203 -174
  202. package/umd/Core/Particles.js +187 -138
  203. package/umd/Core/Retina.js +5 -0
  204. package/umd/Core/Utils/Constants.js +3 -3
  205. package/umd/Core/Utils/EventListeners.js +67 -63
  206. package/umd/Core/Utils/Ranges.js +28 -9
  207. package/umd/Core/Utils/SpatialHashGrid.js +116 -0
  208. package/umd/Core/Utils/Vectors.js +17 -18
  209. package/umd/Enums/Types/EasingType.js +18 -3
  210. package/umd/Options/Classes/AnimatableColor.js +1 -0
  211. package/umd/Options/Classes/AnimationOptions.js +8 -0
  212. package/umd/Options/Classes/Background/Background.js +6 -0
  213. package/umd/Options/Classes/ColorAnimation.js +12 -1
  214. package/umd/Options/Classes/FullScreen/FullScreen.js +2 -0
  215. package/umd/Options/Classes/HslAnimation.js +5 -6
  216. package/umd/Options/Classes/Options.js +63 -4
  217. package/umd/Options/Classes/OptionsColor.js +1 -0
  218. package/umd/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  219. package/umd/Options/Classes/Particles/Effect/Effect.js +3 -4
  220. package/umd/Options/Classes/Particles/Fill.js +42 -0
  221. package/umd/Options/Classes/Particles/Move/Move.js +18 -4
  222. package/umd/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  223. package/umd/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  224. package/umd/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  225. package/umd/Options/Classes/Particles/Move/OutModes.js +5 -0
  226. package/umd/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  227. package/umd/Options/Classes/Particles/Move/Spin.js +3 -0
  228. package/umd/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  229. package/umd/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  230. package/umd/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  231. package/umd/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  232. package/umd/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  233. package/umd/Options/Classes/Particles/ParticlesOptions.js +26 -6
  234. package/umd/Options/Classes/Particles/Shape/Shape.js +3 -4
  235. package/umd/Options/Classes/Particles/Size/Size.js +1 -0
  236. package/umd/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  237. package/umd/Options/Classes/Particles/Stroke.js +3 -0
  238. package/umd/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  239. package/umd/Options/Classes/ResizeEvent.js +2 -0
  240. package/umd/Options/Classes/ValueWithRandom.js +3 -4
  241. package/umd/Utils/CanvasUtils.js +43 -66
  242. package/umd/Utils/ColorUtils.js +30 -18
  243. package/umd/Utils/EventDispatcher.js +1 -0
  244. package/umd/Utils/MathUtils.js +14 -7
  245. package/umd/Utils/Utils.js +111 -32
  246. package/umd/exports.js +2 -3
  247. package/794.min.js +0 -2
  248. package/794.min.js.LICENSE.txt +0 -1
  249. package/browser/Core/Utils/Point.js +0 -6
  250. package/browser/Core/Utils/QuadTree.js +0 -59
  251. package/browser/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  252. package/cjs/Core/Utils/Point.js +0 -6
  253. package/cjs/Core/Utils/QuadTree.js +0 -59
  254. package/cjs/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  255. package/esm/Core/Interfaces/IMovePathGenerator.js +0 -1
  256. package/esm/Core/Interfaces/IParticleMover.js +0 -1
  257. package/esm/Core/Utils/Point.js +0 -6
  258. package/esm/Core/Utils/QuadTree.js +0 -59
  259. package/esm/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  260. package/esm/Options/Interfaces/Particles/Move/IMoveAttract.js +0 -1
  261. package/tsparticles.engine.min.js.LICENSE.txt +0 -1
  262. package/types/Core/Interfaces/IMovePathGenerator.d.ts +0 -10
  263. package/types/Core/Interfaces/IParticleMover.d.ts +0 -7
  264. package/types/Core/Utils/Point.d.ts +0 -7
  265. package/types/Core/Utils/QuadTree.d.ts +0 -18
  266. package/types/Options/Classes/Particles/Move/MoveAttract.d.ts +0 -12
  267. package/types/Options/Interfaces/Particles/Move/IMoveAttract.d.ts +0 -7
  268. package/umd/Core/Utils/Point.js +0 -20
  269. package/umd/Core/Utils/QuadTree.js +0 -73
  270. package/umd/Options/Classes/Particles/Move/MoveAttract.js +0 -47
  271. package/umd/Options/Interfaces/Particles/Move/IMoveAttract.js +0 -12
  272. /package/browser/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  273. /package/browser/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  274. /package/{browser/Options/Interfaces/Particles/Move/IMoveAttract.js → cjs/Core/Interfaces/IPalette.js} +0 -0
  275. /package/cjs/{Core/Interfaces/IMovePathGenerator.js → Options/Interfaces/Particles/IFill.js} +0 -0
  276. /package/{cjs/Core/Interfaces/IParticleMover.js → esm/Core/Interfaces/IPalette.js} +0 -0
  277. /package/{cjs/Options/Interfaces/Particles/Move/IMoveAttract.js → esm/Options/Interfaces/Particles/IFill.js} +0 -0
  278. /package/umd/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  279. /package/umd/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { deepExtend, executeOnSingleOrMultiple } from "../../../Utils/Utils.js";
2
- import { AnimatableColor } from "../AnimatableColor.js";
3
2
  import { Effect } from "./Effect/Effect.js";
3
+ import { Fill } from "./Fill.js";
4
4
  import { Move } from "./Move/Move.js";
5
5
  import { Opacity } from "./Opacity/Opacity.js";
6
6
  import { ParticlesBounce } from "./Bounce/ParticlesBounce.js";
@@ -11,13 +11,26 @@ import { Stroke } from "./Stroke.js";
11
11
  import { ZIndex } from "./ZIndex/ZIndex.js";
12
12
  import { isNull } from "../../../Utils/TypeUtils.js";
13
13
  export class ParticlesOptions {
14
+ bounce;
15
+ effect;
16
+ fill;
17
+ groups;
18
+ move;
19
+ number;
20
+ opacity;
21
+ reduceDuplicates;
22
+ shape;
23
+ size;
24
+ stroke;
25
+ zIndex;
26
+ _container;
27
+ _engine;
14
28
  constructor(engine, container) {
15
29
  this._engine = engine;
16
30
  this._container = container;
17
31
  this.bounce = new ParticlesBounce();
18
- this.color = new AnimatableColor();
19
- this.color.value = "#fff";
20
32
  this.effect = new Effect();
33
+ this.fill = new Fill();
21
34
  this.groups = {};
22
35
  this.move = new Move();
23
36
  this.number = new ParticlesNumber();
@@ -34,7 +47,7 @@ export class ParticlesOptions {
34
47
  }
35
48
  if (data.groups !== undefined) {
36
49
  for (const group of Object.keys(data.groups)) {
37
- if (!Object.hasOwn(data.groups, group)) {
50
+ if (!(group in data.groups)) {
38
51
  continue;
39
52
  }
40
53
  const item = data.groups[group];
@@ -47,7 +60,6 @@ export class ParticlesOptions {
47
60
  this.reduceDuplicates = data.reduceDuplicates;
48
61
  }
49
62
  this.bounce.load(data.bounce);
50
- this.color.load(AnimatableColor.create(this.color, data.color));
51
63
  this.effect.load(data.effect);
52
64
  this.move.load(data.move);
53
65
  this.number.load(data.number);
@@ -55,6 +67,14 @@ export class ParticlesOptions {
55
67
  this.shape.load(data.shape);
56
68
  this.size.load(data.size);
57
69
  this.zIndex.load(data.zIndex);
70
+ const fillToLoad = data.fill;
71
+ if (fillToLoad) {
72
+ this.fill = executeOnSingleOrMultiple(fillToLoad, t => {
73
+ const tmp = new Fill();
74
+ tmp.load(t);
75
+ return tmp;
76
+ });
77
+ }
58
78
  const strokeToLoad = data.stroke;
59
79
  if (strokeToLoad) {
60
80
  this.stroke = executeOnSingleOrMultiple(strokeToLoad, t => {
@@ -1,9 +1,11 @@
1
1
  import { deepExtend } from "../../../../Utils/Utils.js";
2
2
  import { isNull } from "../../../../Utils/TypeUtils.js";
3
3
  export class Shape {
4
+ close;
5
+ options;
6
+ type;
4
7
  constructor() {
5
8
  this.close = true;
6
- this.fill = true;
7
9
  this.options = {};
8
10
  this.type = "circle";
9
11
  }
@@ -23,9 +25,6 @@ export class Shape {
23
25
  if (data.close !== undefined) {
24
26
  this.close = data.close;
25
27
  }
26
- if (data.fill !== undefined) {
27
- this.fill = data.fill;
28
- }
29
28
  if (data.type !== undefined) {
30
29
  this.type = data.type;
31
30
  }
@@ -2,6 +2,7 @@ import { RangedAnimationValueWithRandom } from "../../ValueWithRandom.js";
2
2
  import { SizeAnimation } from "./SizeAnimation.js";
3
3
  import { isNull } from "../../../../Utils/TypeUtils.js";
4
4
  export class Size extends RangedAnimationValueWithRandom {
5
+ animation;
5
6
  constructor() {
6
7
  super();
7
8
  this.animation = new SizeAnimation();
@@ -2,6 +2,7 @@ import { DestroyType } from "../../../../Enums/Types/DestroyType.js";
2
2
  import { RangedAnimationOptions } from "../../AnimationOptions.js";
3
3
  import { isNull } from "../../../../Utils/TypeUtils.js";
4
4
  export class SizeAnimation extends RangedAnimationOptions {
5
+ destroy;
5
6
  constructor() {
6
7
  super();
7
8
  this.destroy = DestroyType.none;
@@ -2,6 +2,9 @@ import { AnimatableColor } from "../AnimatableColor.js";
2
2
  import { isNull } from "../../../Utils/TypeUtils.js";
3
3
  import { setRangeValue } from "../../../Utils/MathUtils.js";
4
4
  export class Stroke {
5
+ color;
6
+ opacity;
7
+ width;
5
8
  constructor() {
6
9
  this.width = 0;
7
10
  }
@@ -1,6 +1,9 @@
1
1
  import { ValueWithRandom } from "../../ValueWithRandom.js";
2
2
  import { isNull } from "../../../../Utils/TypeUtils.js";
3
3
  export class ZIndex extends ValueWithRandom {
4
+ opacityRate;
5
+ sizeRate;
6
+ velocityRate;
4
7
  constructor() {
5
8
  super();
6
9
  this.opacityRate = 1;
@@ -1,5 +1,7 @@
1
1
  import { isNull } from "../../Utils/TypeUtils.js";
2
2
  export class ResizeEvent {
3
+ delay;
4
+ enable;
3
5
  constructor() {
4
6
  this.delay = 0.5;
5
7
  this.enable = true;
@@ -2,6 +2,7 @@ import { AnimationOptions, RangedAnimationOptions } from "./AnimationOptions.js"
2
2
  import { isNull } from "../../Utils/TypeUtils.js";
3
3
  import { setRangeValue } from "../../Utils/MathUtils.js";
4
4
  export class ValueWithRandom {
5
+ value;
5
6
  constructor() {
6
7
  this.value = 0;
7
8
  }
@@ -15,10 +16,7 @@ export class ValueWithRandom {
15
16
  }
16
17
  }
17
18
  export class AnimationValueWithRandom extends ValueWithRandom {
18
- constructor() {
19
- super();
20
- this.animation = new AnimationOptions();
21
- }
19
+ animation = new AnimationOptions();
22
20
  load(data) {
23
21
  super.load(data);
24
22
  if (isNull(data)) {
@@ -31,6 +29,7 @@ export class AnimationValueWithRandom extends ValueWithRandom {
31
29
  }
32
30
  }
33
31
  export class RangedAnimationValueWithRandom extends AnimationValueWithRandom {
32
+ animation;
34
33
  constructor() {
35
34
  super();
36
35
  this.animation = new RangedAnimationOptions();
@@ -1,17 +1,4 @@
1
- import { lFactor, minStrokeWidth, originPoint } from "../Core/Utils/Constants.js";
2
- import { AlterType } from "../Enums/Types/AlterType.js";
3
- export function clearDrawPlugin(context, plugin, delta) {
4
- if (!plugin.clearDraw) {
5
- return;
6
- }
7
- plugin.clearDraw(context, delta);
8
- }
9
- export function drawLine(context, begin, end) {
10
- context.beginPath();
11
- context.moveTo(begin.x, begin.y);
12
- context.lineTo(end.x, end.y);
13
- context.closePath();
14
- }
1
+ import { defaultZoom, minStrokeWidth, originPoint } from "../Core/Utils/Constants.js";
15
2
  export function paintBase(context, dimension, baseColor) {
16
3
  context.fillStyle = baseColor ?? "rgba(0,0,0,0)";
17
4
  context.fillRect(originPoint.x, originPoint.y, dimension.width, dimension.height);
@@ -20,20 +7,24 @@ export function paintImage(context, dimension, image, opacity) {
20
7
  if (!image) {
21
8
  return;
22
9
  }
10
+ const prevAlpha = context.globalAlpha;
23
11
  context.globalAlpha = opacity;
24
12
  context.drawImage(image, originPoint.x, originPoint.y, dimension.width, dimension.height);
25
- context.globalAlpha = 1;
13
+ context.globalAlpha = prevAlpha;
26
14
  }
27
15
  export function clear(context, dimension) {
28
16
  context.clearRect(originPoint.x, originPoint.y, dimension.width, dimension.height);
29
17
  }
30
18
  export function drawParticle(data) {
31
- const { container, context, particle, delta, colorStyles, radius, opacity, transform } = data, pos = particle.getPosition(), transformData = particle.getTransformData(transform);
19
+ const { container, context, particle, delta, colorStyles, radius, opacity, transform } = data, { effectDrawers, shapeDrawers } = container.particles, pos = particle.getPosition(), transformData = particle.getTransformData(transform), drawScale = defaultZoom, drawPosition = {
20
+ x: pos.x,
21
+ y: pos.y,
22
+ };
32
23
  context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);
33
24
  if (colorStyles.fill) {
34
25
  context.fillStyle = colorStyles.fill;
35
26
  }
36
- const strokeWidth = particle.strokeWidth ?? minStrokeWidth;
27
+ const fillEnabled = !!particle.fillEnabled, strokeWidth = particle.strokeWidth ?? minStrokeWidth;
37
28
  context.lineWidth = strokeWidth;
38
29
  if (colorStyles.stroke) {
39
30
  context.strokeStyle = colorStyles.stroke;
@@ -42,49 +33,54 @@ export function drawParticle(data) {
42
33
  context,
43
34
  particle,
44
35
  radius,
36
+ drawRadius: radius * drawScale,
45
37
  opacity,
46
38
  delta,
47
39
  pixelRatio: container.retina.pixelRatio,
48
- fill: particle.shapeFill,
49
- stroke: strokeWidth > minStrokeWidth || !particle.shapeFill,
40
+ fill: fillEnabled,
41
+ stroke: strokeWidth > minStrokeWidth,
50
42
  transformData,
43
+ position: { ...pos },
44
+ drawPosition,
45
+ drawScale,
51
46
  };
52
- drawBeforeEffect(container, drawData);
53
- drawShapeBeforeDraw(container, drawData);
54
- drawShape(container, drawData);
55
- drawShapeAfterDraw(container, drawData);
56
- drawAfterEffect(container, drawData);
47
+ for (const plugin of container.plugins) {
48
+ plugin.drawParticleTransform?.(drawData);
49
+ }
50
+ const effect = particle.effect ? effectDrawers.get(particle.effect) : undefined, shape = particle.shape ? shapeDrawers.get(particle.shape) : undefined;
51
+ drawBeforeEffect(effect, drawData);
52
+ drawShapeBeforeDraw(shape, drawData);
53
+ drawShape(shape, drawData);
54
+ drawShapeAfterDraw(shape, drawData);
55
+ drawAfterEffect(effect, drawData);
57
56
  context.resetTransform();
58
57
  }
59
- export function drawAfterEffect(container, data) {
58
+ export function drawAfterEffect(drawer, data) {
59
+ if (!drawer?.drawAfter) {
60
+ return;
61
+ }
60
62
  const { particle } = data;
61
63
  if (!particle.effect) {
62
64
  return;
63
65
  }
64
- const drawer = container.effectDrawers.get(particle.effect), drawFunc = drawer?.drawAfter;
65
- if (!drawFunc) {
66
+ drawer.drawAfter(data);
67
+ }
68
+ export function drawBeforeEffect(drawer, data) {
69
+ if (!drawer?.drawBefore) {
66
70
  return;
67
71
  }
68
- drawFunc(data);
69
- }
70
- export function drawBeforeEffect(container, data) {
71
72
  const { particle } = data;
72
73
  if (!particle.effect) {
73
74
  return;
74
75
  }
75
- const drawer = container.effectDrawers.get(particle.effect);
76
- if (!drawer?.drawBefore) {
77
- return;
78
- }
79
76
  drawer.drawBefore(data);
80
77
  }
81
- export function drawShape(container, data) {
82
- const { context, particle, stroke } = data;
83
- if (!particle.shape) {
78
+ export function drawShape(drawer, data) {
79
+ if (!drawer) {
84
80
  return;
85
81
  }
86
- const drawer = container.shapeDrawers.get(particle.shape);
87
- if (!drawer) {
82
+ const { context, fill, particle, stroke } = data;
83
+ if (!particle.shape) {
88
84
  return;
89
85
  }
90
86
  context.beginPath();
@@ -95,37 +91,29 @@ export function drawShape(container, data) {
95
91
  if (stroke) {
96
92
  context.stroke();
97
93
  }
98
- if (particle.shapeFill) {
94
+ if (fill) {
99
95
  context.fill();
100
96
  }
101
97
  }
102
- export function drawShapeAfterDraw(container, data) {
103
- const { particle } = data;
104
- if (!particle.shape) {
105
- return;
106
- }
107
- const drawer = container.shapeDrawers.get(particle.shape);
98
+ export function drawShapeAfterDraw(drawer, data) {
108
99
  if (!drawer?.afterDraw) {
109
100
  return;
110
101
  }
111
- drawer.afterDraw(data);
112
- }
113
- export function drawShapeBeforeDraw(container, data) {
114
102
  const { particle } = data;
115
103
  if (!particle.shape) {
116
104
  return;
117
105
  }
118
- const drawer = container.shapeDrawers.get(particle.shape);
106
+ drawer.afterDraw(data);
107
+ }
108
+ export function drawShapeBeforeDraw(drawer, data) {
119
109
  if (!drawer?.beforeDraw) {
120
110
  return;
121
111
  }
122
- drawer.beforeDraw(data);
123
- }
124
- export function drawPlugin(context, plugin, delta) {
125
- if (!plugin.draw) {
112
+ const { particle } = data;
113
+ if (!particle.shape) {
126
114
  return;
127
115
  }
128
- plugin.draw(context, delta);
116
+ drawer.beforeDraw(data);
129
117
  }
130
118
  export function drawParticlePlugin(context, plugin, particle, delta) {
131
119
  if (!plugin.drawParticle) {
@@ -133,10 +121,3 @@ export function drawParticlePlugin(context, plugin, particle, delta) {
133
121
  }
134
122
  plugin.drawParticle(context, particle, delta);
135
123
  }
136
- export function alterHsl(color, type, value) {
137
- return {
138
- h: color.h,
139
- s: color.s,
140
- l: color.l + (type === AlterType.darken ? -lFactor : lFactor) * value,
141
- };
142
- }
@@ -1,6 +1,7 @@
1
- import { clamp, getRandom, getRandomInRange, getRangeMax, getRangeMin, getRangeValue, mix, randomInRangeValue, setRangeValue, } from "./MathUtils.js";
2
- import { decayOffset, defaultLoops, defaultOpacity, defaultRgbMin, defaultTime, defaultVelocity, double, hMax, hMin, hPhase, half, identity, lMax, lMin, midColorValue, millisecondsToSeconds, percentDenominator, phaseNumerator, randomColorValue, rgbMax, sMax, sMin, sNormalizedOffset, sextuple, triple, } from "../Core/Utils/Constants.js";
1
+ import { clamp, getRandom, getRandomInRange, getRangeValue, mix, randomInRangeValue, setRangeValue, } from "./MathUtils.js";
2
+ import { decayOffset, defaultLoops, defaultOpacity, defaultRgbMin, defaultTime, defaultVelocity, double, hMax, hMin, hPhase, half, identity, lFactor, lMax, lMin, midColorValue, millisecondsToSeconds, percentDenominator, phaseNumerator, randomColorValue, rgbMax, sMax, sMin, sNormalizedOffset, sextuple, triple, } from "../Core/Utils/Constants.js";
3
3
  import { isArray, isString } from "./TypeUtils.js";
4
+ import { AlterType } from "../Enums/Types/AlterType.js";
4
5
  import { AnimationStatus } from "../Enums/AnimationStatus.js";
5
6
  import { itemFromArray } from "./Utils.js";
6
7
  const styleCache = new Map(), maxCacheSize = 1000, firstIndex = 0, rgbFixedPrecision = 2, hslFixedPrecision = 2;
@@ -189,10 +190,10 @@ function getSdrStyleFromHsl(color, opacity) {
189
190
  }
190
191
  export function colorMix(color1, color2, size1, size2) {
191
192
  let rgb1 = color1, rgb2 = color2;
192
- if (!Object.hasOwn(rgb1, "r")) {
193
+ if (!("r" in rgb1)) {
193
194
  rgb1 = hslToRgb(color1);
194
195
  }
195
- if (!Object.hasOwn(rgb2, "r")) {
196
+ if (!("r" in rgb2)) {
196
197
  rgb2 = hslToRgb(color2);
197
198
  }
198
199
  return {
@@ -245,27 +246,33 @@ export function getLinkRandomColor(engine, optColor, blink, consent) {
245
246
  }
246
247
  }
247
248
  export function getHslFromAnimation(animation) {
248
- return animation !== undefined
249
- ? {
249
+ return animation === undefined
250
+ ? undefined
251
+ : {
250
252
  h: animation.h.value,
251
253
  s: animation.s.value,
252
254
  l: animation.l.value,
253
- }
254
- : undefined;
255
+ };
255
256
  }
256
257
  export function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {
257
258
  const resColor = {
258
259
  h: {
259
260
  enable: false,
260
261
  value: hsl.h,
262
+ min: hMin,
263
+ max: hMax,
261
264
  },
262
265
  s: {
263
266
  enable: false,
264
267
  value: hsl.s,
268
+ min: sMin,
269
+ max: sMax,
265
270
  },
266
271
  l: {
267
272
  enable: false,
268
273
  value: hsl.l,
274
+ min: lMin,
275
+ max: lMax,
269
276
  },
270
277
  };
271
278
  if (animationOptions) {
@@ -277,6 +284,8 @@ export function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {
277
284
  }
278
285
  function setColorAnimation(colorValue, colorAnimation, reduceFactor) {
279
286
  colorValue.enable = colorAnimation.enable;
287
+ colorValue.min = colorAnimation.min;
288
+ colorValue.max = colorAnimation.max;
280
289
  if (colorValue.enable) {
281
290
  colorValue.velocity = (getRangeValue(colorAnimation.speed) / percentDenominator) * reduceFactor;
282
291
  colorValue.decay = decayOffset - getRangeValue(colorAnimation.decay);
@@ -296,7 +305,7 @@ function setColorAnimation(colorValue, colorAnimation, reduceFactor) {
296
305
  colorValue.velocity = defaultVelocity;
297
306
  }
298
307
  }
299
- export function updateColorValue(data, range, decrease, delta) {
308
+ export function updateColorValue(data, decrease, delta) {
300
309
  const minLoops = 0, minDelay = 0, identity = 1, minVelocity = 0, minOffset = 0, velocityFactor = 3.6;
301
310
  if (!data.enable ||
302
311
  ((data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops))) {
@@ -309,7 +318,7 @@ export function updateColorValue(data, range, decrease, delta) {
309
318
  if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {
310
319
  return;
311
320
  }
312
- const offset = data.offset ? randomInRangeValue(data.offset) : minOffset, velocity = (data.velocity ?? minVelocity) * delta.factor + offset * velocityFactor, decay = data.decay ?? identity, max = getRangeMax(range), min = getRangeMin(range);
321
+ const offset = data.offset ? randomInRangeValue(data.offset) : minOffset, velocity = (data.velocity ?? minVelocity) * delta.factor + offset * velocityFactor, decay = data.decay ?? identity, max = data.max, min = data.min;
313
322
  if (!decrease || data.status === AnimationStatus.increasing) {
314
323
  data.value += velocity;
315
324
  if (data.value > max) {
@@ -325,8 +334,7 @@ export function updateColorValue(data, range, decrease, delta) {
325
334
  }
326
335
  else {
327
336
  data.value -= velocity;
328
- const minValue = 0;
329
- if (data.value < minValue) {
337
+ if (data.value < min) {
330
338
  data.loops ??= 0;
331
339
  data.loops++;
332
340
  data.status = AnimationStatus.increasing;
@@ -341,12 +349,15 @@ export function updateColor(color, delta) {
341
349
  if (!color) {
342
350
  return;
343
351
  }
344
- const { h, s, l } = color, ranges = {
345
- h: { min: hMin, max: hMax },
346
- s: { min: sMin, max: sMax },
347
- l: { min: lMin, max: lMax },
352
+ const { h, s, l } = color;
353
+ updateColorValue(h, false, delta);
354
+ updateColorValue(s, true, delta);
355
+ updateColorValue(l, true, delta);
356
+ }
357
+ export function alterHsl(color, type, value) {
358
+ return {
359
+ h: color.h,
360
+ s: color.s,
361
+ l: color.l + (type === AlterType.darken ? -lFactor : lFactor) * value,
348
362
  };
349
- updateColorValue(h, ranges.h, false, delta);
350
- updateColorValue(s, ranges.s, true, delta);
351
- updateColorValue(l, ranges.l, true, delta);
352
363
  }
@@ -1,5 +1,6 @@
1
1
  import { deleteCount, minIndex } from "../Core/Utils/Constants.js";
2
2
  export class EventDispatcher {
3
+ _listeners;
3
4
  constructor() {
4
5
  this._listeners = new Map();
5
6
  }
@@ -21,10 +21,8 @@ export function getRandomInRange(min, max) {
21
21
  return getRandom() * (max - min) + min;
22
22
  }
23
23
  export function setAnimationFunctions(nextFrame, cancel) {
24
- _animationLoop.nextFrame = (callback) => nextFrame(callback);
25
- _animationLoop.cancel = (handle) => {
26
- cancel(handle);
27
- };
24
+ _animationLoop.nextFrame = nextFrame;
25
+ _animationLoop.cancel = cancel;
28
26
  }
29
27
  export function animate(fn) {
30
28
  return _animationLoop.nextFrame(fn);
@@ -68,11 +66,18 @@ export function setRangeValue(source, value) {
68
66
  : setRangeValue(min, max);
69
67
  }
70
68
  export function getDistances(pointA, pointB) {
71
- const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y, squareExp = 2;
72
- return { dx: dx, dy: dy, distance: Math.sqrt(dx ** squareExp + dy ** squareExp) };
69
+ const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y;
70
+ return { dx: dx, dy: dy, distance: Math.hypot(dx, dy) };
71
+ }
72
+ export function getDistanceSq(pointA, pointB) {
73
+ const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y;
74
+ return dx * dx + dy * dy;
73
75
  }
74
76
  export function getDistance(pointA, pointB) {
75
- return getDistances(pointA, pointB).distance;
77
+ return Math.sqrt(getDistanceSq(pointA, pointB));
78
+ }
79
+ export function checkDistance(pointA, pointB, distance) {
80
+ return getDistanceSq(pointA, pointB) <= distance * distance;
76
81
  }
77
82
  export function degToRad(degrees) {
78
83
  return degrees * degToRadFactor;