@tsparticles/engine 3.2.2 → 3.4.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 (281) hide show
  1. package/README.md +0 -4
  2. package/browser/Core/Canvas.js +34 -29
  3. package/browser/Core/Container.js +60 -47
  4. package/browser/Core/Engine.js +82 -74
  5. package/browser/Core/Particle.js +40 -26
  6. package/browser/Core/Particles.js +51 -52
  7. package/browser/Core/Utils/EventListeners.js +18 -17
  8. package/browser/Core/Utils/ExternalInteractorBase.js +2 -1
  9. package/browser/Core/Utils/InteractionManager.js +7 -6
  10. package/browser/Core/Utils/ParticlesInteractorBase.js +2 -1
  11. package/browser/Core/Utils/QuadTree.js +1 -1
  12. package/browser/Core/Utils/Ranges.js +5 -4
  13. package/browser/Enums/AnimationStatus.js +5 -1
  14. package/browser/Enums/Directions/MoveDirection.js +14 -1
  15. package/browser/Enums/Directions/OutModeDirection.js +7 -1
  16. package/browser/Enums/Directions/RotateDirection.js +6 -1
  17. package/browser/Enums/InteractivityDetect.js +6 -1
  18. package/browser/Enums/Modes/AnimationMode.js +7 -1
  19. package/browser/Enums/Modes/CollisionMode.js +6 -1
  20. package/browser/Enums/Modes/LimitMode.js +5 -1
  21. package/browser/Enums/Modes/OutMode.js +8 -1
  22. package/browser/Enums/Modes/PixelMode.js +5 -1
  23. package/browser/Enums/Modes/ResponsiveMode.js +5 -1
  24. package/browser/Enums/Modes/ThemeMode.js +6 -1
  25. package/browser/Enums/Types/AlterType.js +5 -1
  26. package/browser/Enums/Types/DestroyType.js +6 -1
  27. package/browser/Enums/Types/DivType.js +5 -1
  28. package/browser/Enums/Types/EasingType.js +30 -1
  29. package/browser/Enums/Types/EventType.js +15 -1
  30. package/browser/Enums/Types/GradientType.js +6 -1
  31. package/browser/Enums/Types/InteractorType.js +5 -1
  32. package/browser/Enums/Types/ParticleOutType.js +6 -1
  33. package/browser/Enums/Types/StartValueType.js +6 -1
  34. package/browser/Options/Classes/AnimationOptions.js +4 -2
  35. package/browser/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
  36. package/browser/Options/Classes/Interactivity/Events/Events.js +1 -1
  37. package/browser/Options/Classes/Interactivity/Interactivity.js +2 -1
  38. package/browser/Options/Classes/ManualParticle.js +2 -1
  39. package/browser/Options/Classes/Options.js +14 -12
  40. package/browser/Options/Classes/Particles/Collisions/Collisions.js +2 -1
  41. package/browser/Options/Classes/Particles/Move/Move.js +2 -1
  42. package/browser/Options/Classes/Particles/Move/MoveCenter.js +2 -1
  43. package/browser/Options/Classes/Particles/Move/OutModes.js +2 -1
  44. package/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
  45. package/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
  46. package/browser/Options/Classes/Particles/ParticlesOptions.js +1 -1
  47. package/browser/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
  48. package/browser/Options/Classes/Responsive.js +5 -4
  49. package/browser/Options/Classes/Theme/ThemeDefault.js +2 -1
  50. package/browser/Types/RangeType.js +5 -1
  51. package/browser/Utils/CanvasUtils.js +27 -21
  52. package/browser/Utils/ColorUtils.js +17 -9
  53. package/browser/Utils/EventDispatcher.js +1 -1
  54. package/browser/Utils/HslColorManager.js +11 -4
  55. package/browser/Utils/NumberUtils.js +11 -10
  56. package/browser/Utils/RgbColorManager.js +11 -4
  57. package/browser/Utils/Utils.js +37 -31
  58. package/cjs/Core/Canvas.js +34 -29
  59. package/cjs/Core/Container.js +60 -47
  60. package/cjs/Core/Engine.js +82 -97
  61. package/cjs/Core/Particle.js +40 -26
  62. package/cjs/Core/Particles.js +52 -76
  63. package/cjs/Core/Utils/EventListeners.js +18 -17
  64. package/cjs/Core/Utils/ExternalInteractorBase.js +2 -1
  65. package/cjs/Core/Utils/InteractionManager.js +7 -6
  66. package/cjs/Core/Utils/ParticlesInteractorBase.js +2 -1
  67. package/cjs/Core/Utils/QuadTree.js +1 -1
  68. package/cjs/Core/Utils/Ranges.js +5 -4
  69. package/cjs/Enums/AnimationStatus.js +6 -0
  70. package/cjs/Enums/Directions/MoveDirection.js +15 -0
  71. package/cjs/Enums/Directions/OutModeDirection.js +8 -0
  72. package/cjs/Enums/Directions/RotateDirection.js +7 -0
  73. package/cjs/Enums/InteractivityDetect.js +7 -0
  74. package/cjs/Enums/Modes/AnimationMode.js +8 -0
  75. package/cjs/Enums/Modes/CollisionMode.js +7 -0
  76. package/cjs/Enums/Modes/LimitMode.js +6 -0
  77. package/cjs/Enums/Modes/OutMode.js +9 -0
  78. package/cjs/Enums/Modes/PixelMode.js +6 -0
  79. package/cjs/Enums/Modes/ResponsiveMode.js +6 -0
  80. package/cjs/Enums/Modes/ThemeMode.js +7 -0
  81. package/cjs/Enums/Types/AlterType.js +6 -0
  82. package/cjs/Enums/Types/DestroyType.js +7 -0
  83. package/cjs/Enums/Types/DivType.js +6 -0
  84. package/cjs/Enums/Types/EasingType.js +31 -0
  85. package/cjs/Enums/Types/EventType.js +16 -0
  86. package/cjs/Enums/Types/GradientType.js +7 -0
  87. package/cjs/Enums/Types/InteractorType.js +6 -0
  88. package/cjs/Enums/Types/ParticleOutType.js +7 -0
  89. package/cjs/Enums/Types/StartValueType.js +7 -0
  90. package/cjs/Options/Classes/AnimationOptions.js +4 -2
  91. package/cjs/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
  92. package/cjs/Options/Classes/Interactivity/Events/Events.js +1 -1
  93. package/cjs/Options/Classes/Interactivity/Interactivity.js +2 -1
  94. package/cjs/Options/Classes/ManualParticle.js +2 -1
  95. package/cjs/Options/Classes/Options.js +14 -12
  96. package/cjs/Options/Classes/Particles/Collisions/Collisions.js +2 -1
  97. package/cjs/Options/Classes/Particles/Move/Move.js +2 -1
  98. package/cjs/Options/Classes/Particles/Move/MoveCenter.js +2 -1
  99. package/cjs/Options/Classes/Particles/Move/OutModes.js +2 -1
  100. package/cjs/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
  101. package/cjs/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
  102. package/cjs/Options/Classes/Particles/ParticlesOptions.js +1 -1
  103. package/cjs/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
  104. package/cjs/Options/Classes/Responsive.js +5 -4
  105. package/cjs/Options/Classes/Theme/ThemeDefault.js +2 -1
  106. package/cjs/Types/RangeType.js +6 -0
  107. package/cjs/Utils/CanvasUtils.js +27 -21
  108. package/cjs/Utils/ColorUtils.js +17 -9
  109. package/cjs/Utils/EventDispatcher.js +1 -1
  110. package/cjs/Utils/HslColorManager.js +11 -4
  111. package/cjs/Utils/NumberUtils.js +11 -10
  112. package/cjs/Utils/RgbColorManager.js +11 -4
  113. package/cjs/Utils/Utils.js +37 -31
  114. package/esm/Core/Canvas.js +34 -29
  115. package/esm/Core/Container.js +60 -47
  116. package/esm/Core/Engine.js +82 -74
  117. package/esm/Core/Particle.js +40 -26
  118. package/esm/Core/Particles.js +51 -52
  119. package/esm/Core/Utils/EventListeners.js +18 -17
  120. package/esm/Core/Utils/ExternalInteractorBase.js +2 -1
  121. package/esm/Core/Utils/InteractionManager.js +7 -6
  122. package/esm/Core/Utils/ParticlesInteractorBase.js +2 -1
  123. package/esm/Core/Utils/QuadTree.js +1 -1
  124. package/esm/Core/Utils/Ranges.js +5 -4
  125. package/esm/Enums/AnimationStatus.js +5 -1
  126. package/esm/Enums/Directions/MoveDirection.js +14 -1
  127. package/esm/Enums/Directions/OutModeDirection.js +7 -1
  128. package/esm/Enums/Directions/RotateDirection.js +6 -1
  129. package/esm/Enums/InteractivityDetect.js +6 -1
  130. package/esm/Enums/Modes/AnimationMode.js +7 -1
  131. package/esm/Enums/Modes/CollisionMode.js +6 -1
  132. package/esm/Enums/Modes/LimitMode.js +5 -1
  133. package/esm/Enums/Modes/OutMode.js +8 -1
  134. package/esm/Enums/Modes/PixelMode.js +5 -1
  135. package/esm/Enums/Modes/ResponsiveMode.js +5 -1
  136. package/esm/Enums/Modes/ThemeMode.js +6 -1
  137. package/esm/Enums/Types/AlterType.js +5 -1
  138. package/esm/Enums/Types/DestroyType.js +6 -1
  139. package/esm/Enums/Types/DivType.js +5 -1
  140. package/esm/Enums/Types/EasingType.js +30 -1
  141. package/esm/Enums/Types/EventType.js +15 -1
  142. package/esm/Enums/Types/GradientType.js +6 -1
  143. package/esm/Enums/Types/InteractorType.js +5 -1
  144. package/esm/Enums/Types/ParticleOutType.js +6 -1
  145. package/esm/Enums/Types/StartValueType.js +6 -1
  146. package/esm/Options/Classes/AnimationOptions.js +4 -2
  147. package/esm/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
  148. package/esm/Options/Classes/Interactivity/Events/Events.js +1 -1
  149. package/esm/Options/Classes/Interactivity/Interactivity.js +2 -1
  150. package/esm/Options/Classes/ManualParticle.js +2 -1
  151. package/esm/Options/Classes/Options.js +14 -12
  152. package/esm/Options/Classes/Particles/Collisions/Collisions.js +2 -1
  153. package/esm/Options/Classes/Particles/Move/Move.js +2 -1
  154. package/esm/Options/Classes/Particles/Move/MoveCenter.js +2 -1
  155. package/esm/Options/Classes/Particles/Move/OutModes.js +2 -1
  156. package/esm/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
  157. package/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
  158. package/esm/Options/Classes/Particles/ParticlesOptions.js +1 -1
  159. package/esm/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
  160. package/esm/Options/Classes/Responsive.js +5 -4
  161. package/esm/Options/Classes/Theme/ThemeDefault.js +2 -1
  162. package/esm/Types/RangeType.js +5 -1
  163. package/esm/Utils/CanvasUtils.js +27 -21
  164. package/esm/Utils/ColorUtils.js +17 -9
  165. package/esm/Utils/EventDispatcher.js +1 -1
  166. package/esm/Utils/HslColorManager.js +11 -4
  167. package/esm/Utils/NumberUtils.js +11 -10
  168. package/esm/Utils/RgbColorManager.js +11 -4
  169. package/esm/Utils/Utils.js +37 -31
  170. package/package.json +1 -1
  171. package/report.html +1 -1
  172. package/tsparticles.engine.js +327 -225
  173. package/tsparticles.engine.min.js +1 -1
  174. package/tsparticles.engine.min.js.LICENSE.txt +1 -1
  175. package/types/Core/Canvas.d.ts +4 -4
  176. package/types/Core/Container.d.ts +4 -2
  177. package/types/Core/Engine.d.ts +6 -5
  178. package/types/Core/Interfaces/IContainerPlugin.d.ts +4 -4
  179. package/types/Core/Interfaces/IEffectDrawer.d.ts +3 -3
  180. package/types/Core/Interfaces/IExternalInteractor.d.ts +1 -1
  181. package/types/Core/Interfaces/IMovePathGenerator.d.ts +2 -2
  182. package/types/Core/Interfaces/IParticleMover.d.ts +2 -2
  183. package/types/Core/Interfaces/IParticleUpdater.d.ts +2 -2
  184. package/types/Core/Interfaces/IParticlesInteractor.d.ts +1 -1
  185. package/types/Core/Interfaces/IPlugin.d.ts +3 -4
  186. package/types/Core/Interfaces/IShapeDrawer.d.ts +5 -4
  187. package/types/Core/Particle.d.ts +3 -2
  188. package/types/Core/Particles.d.ts +7 -7
  189. package/types/Core/Utils/ExternalInteractorBase.d.ts +1 -1
  190. package/types/Core/Utils/InteractionManager.d.ts +2 -2
  191. package/types/Core/Utils/ParticlesInteractorBase.d.ts +1 -1
  192. package/types/Enums/AnimationStatus.d.ts +1 -1
  193. package/types/Enums/Directions/MoveDirection.d.ts +1 -1
  194. package/types/Enums/Directions/OutModeDirection.d.ts +1 -1
  195. package/types/Enums/Directions/RotateDirection.d.ts +1 -1
  196. package/types/Enums/InteractivityDetect.d.ts +1 -1
  197. package/types/Enums/Modes/AnimationMode.d.ts +1 -1
  198. package/types/Enums/Modes/CollisionMode.d.ts +1 -1
  199. package/types/Enums/Modes/LimitMode.d.ts +1 -1
  200. package/types/Enums/Modes/OutMode.d.ts +1 -1
  201. package/types/Enums/Modes/PixelMode.d.ts +1 -1
  202. package/types/Enums/Modes/ResponsiveMode.d.ts +1 -1
  203. package/types/Enums/Modes/ThemeMode.d.ts +1 -1
  204. package/types/Enums/Types/AlterType.d.ts +1 -1
  205. package/types/Enums/Types/DestroyType.d.ts +1 -1
  206. package/types/Enums/Types/DivType.d.ts +1 -1
  207. package/types/Enums/Types/EasingType.d.ts +1 -1
  208. package/types/Enums/Types/EventType.d.ts +1 -1
  209. package/types/Enums/Types/GradientType.d.ts +1 -1
  210. package/types/Enums/Types/InteractorType.d.ts +1 -1
  211. package/types/Enums/Types/ParticleOutType.d.ts +1 -1
  212. package/types/Enums/Types/StartValueType.d.ts +1 -1
  213. package/types/Options/Classes/Options.d.ts +2 -1
  214. package/types/Options/Classes/Responsive.d.ts +2 -2
  215. package/types/Options/Classes/Theme/Theme.d.ts +2 -2
  216. package/types/Options/Interfaces/IResponsive.d.ts +2 -3
  217. package/types/Options/Interfaces/Theme/ITheme.d.ts +2 -3
  218. package/types/Types/RangeType.d.ts +1 -1
  219. package/types/Utils/CanvasUtils.d.ts +6 -6
  220. package/umd/Core/Canvas.js +34 -29
  221. package/umd/Core/Container.js +61 -48
  222. package/umd/Core/Engine.js +83 -99
  223. package/umd/Core/Particle.js +41 -27
  224. package/umd/Core/Particles.js +53 -78
  225. package/umd/Core/Utils/EventListeners.js +19 -18
  226. package/umd/Core/Utils/ExternalInteractorBase.js +3 -2
  227. package/umd/Core/Utils/InteractionManager.js +8 -7
  228. package/umd/Core/Utils/ParticlesInteractorBase.js +3 -2
  229. package/umd/Core/Utils/QuadTree.js +1 -1
  230. package/umd/Core/Utils/Ranges.js +6 -5
  231. package/umd/Enums/AnimationStatus.js +6 -0
  232. package/umd/Enums/Directions/MoveDirection.js +15 -0
  233. package/umd/Enums/Directions/OutModeDirection.js +8 -0
  234. package/umd/Enums/Directions/RotateDirection.js +7 -0
  235. package/umd/Enums/InteractivityDetect.js +7 -0
  236. package/umd/Enums/Modes/AnimationMode.js +8 -0
  237. package/umd/Enums/Modes/CollisionMode.js +7 -0
  238. package/umd/Enums/Modes/LimitMode.js +6 -0
  239. package/umd/Enums/Modes/OutMode.js +9 -0
  240. package/umd/Enums/Modes/PixelMode.js +6 -0
  241. package/umd/Enums/Modes/ResponsiveMode.js +6 -0
  242. package/umd/Enums/Modes/ThemeMode.js +7 -0
  243. package/umd/Enums/Types/AlterType.js +6 -0
  244. package/umd/Enums/Types/DestroyType.js +7 -0
  245. package/umd/Enums/Types/DivType.js +6 -0
  246. package/umd/Enums/Types/EasingType.js +31 -0
  247. package/umd/Enums/Types/EventType.js +16 -0
  248. package/umd/Enums/Types/GradientType.js +7 -0
  249. package/umd/Enums/Types/InteractorType.js +6 -0
  250. package/umd/Enums/Types/ParticleOutType.js +7 -0
  251. package/umd/Enums/Types/StartValueType.js +7 -0
  252. package/umd/Options/Classes/AnimationOptions.js +5 -3
  253. package/umd/Options/Classes/Interactivity/Events/DivEvent.js +3 -2
  254. package/umd/Options/Classes/Interactivity/Events/Events.js +1 -1
  255. package/umd/Options/Classes/Interactivity/Interactivity.js +3 -2
  256. package/umd/Options/Classes/ManualParticle.js +3 -2
  257. package/umd/Options/Classes/Options.js +15 -13
  258. package/umd/Options/Classes/Particles/Collisions/Collisions.js +3 -2
  259. package/umd/Options/Classes/Particles/Move/Move.js +3 -2
  260. package/umd/Options/Classes/Particles/Move/MoveCenter.js +3 -2
  261. package/umd/Options/Classes/Particles/Move/OutModes.js +3 -2
  262. package/umd/Options/Classes/Particles/Number/ParticlesNumberLimit.js +3 -2
  263. package/umd/Options/Classes/Particles/Opacity/OpacityAnimation.js +3 -2
  264. package/umd/Options/Classes/Particles/ParticlesOptions.js +1 -1
  265. package/umd/Options/Classes/Particles/Size/SizeAnimation.js +3 -2
  266. package/umd/Options/Classes/Responsive.js +6 -5
  267. package/umd/Options/Classes/Theme/ThemeDefault.js +3 -2
  268. package/umd/Types/RangeType.js +6 -0
  269. package/umd/Utils/CanvasUtils.js +28 -22
  270. package/umd/Utils/ColorUtils.js +18 -10
  271. package/umd/Utils/EventDispatcher.js +1 -1
  272. package/umd/Utils/HslColorManager.js +11 -4
  273. package/umd/Utils/NumberUtils.js +12 -11
  274. package/umd/Utils/RgbColorManager.js +11 -4
  275. package/umd/Utils/Utils.js +38 -32
  276. package/373.min.js +0 -2
  277. package/373.min.js.LICENSE.txt +0 -1
  278. package/438.min.js +0 -2
  279. package/438.min.js.LICENSE.txt +0 -1
  280. package/dist_browser_Core_Container_js.js +0 -92
  281. package/dist_browser_Core_Particle_js.js +0 -32
@@ -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/Vectors.js", "../Utils/NumberUtils.js", "../Utils/Utils.js", "./Utils/Constants.js", "../Utils/ColorUtils.js", "../Options/Classes/Interactivity/Interactivity.js", "../Utils/CanvasUtils.js", "../Utils/OptionsUtils.js"], factory);
7
+ define(["require", "exports", "./Utils/Vectors.js", "../Utils/NumberUtils.js", "../Utils/Utils.js", "./Utils/Constants.js", "../Utils/ColorUtils.js", "../Enums/Types/EventType.js", "../Options/Classes/Interactivity/Interactivity.js", "../Enums/Directions/MoveDirection.js", "../Enums/Modes/OutMode.js", "../Enums/Types/ParticleOutType.js", "../Enums/Modes/PixelMode.js", "../Utils/CanvasUtils.js", "../Utils/OptionsUtils.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -15,10 +15,15 @@
15
15
  const Utils_js_1 = require("../Utils/Utils.js");
16
16
  const Constants_js_1 = require("./Utils/Constants.js");
17
17
  const ColorUtils_js_1 = require("../Utils/ColorUtils.js");
18
+ const EventType_js_1 = require("../Enums/Types/EventType.js");
18
19
  const Interactivity_js_1 = require("../Options/Classes/Interactivity/Interactivity.js");
20
+ const MoveDirection_js_1 = require("../Enums/Directions/MoveDirection.js");
21
+ const OutMode_js_1 = require("../Enums/Modes/OutMode.js");
22
+ const ParticleOutType_js_1 = require("../Enums/Types/ParticleOutType.js");
23
+ const PixelMode_js_1 = require("../Enums/Modes/PixelMode.js");
19
24
  const CanvasUtils_js_1 = require("../Utils/CanvasUtils.js");
20
25
  const OptionsUtils_js_1 = require("../Utils/OptionsUtils.js");
21
- const defaultRetryCount = 0, double = 2, half = 0.5, squareExp = 2;
26
+ const defaultRetryCount = 0, double = 2, half = 0.5, squareExp = 2, randomString = "random";
22
27
  function loadEffectData(effect, effectOptions, id, reduceDuplicates) {
23
28
  const effectData = effectOptions.options[effect];
24
29
  if (!effectData) {
@@ -67,7 +72,7 @@
67
72
  }), pos = Vectors_js_1.Vector3d.create(exactPosition.x, exactPosition.y, zIndex), radius = this.getRadius(), outModes = this.options.move.outModes, fixHorizontal = (outMode) => {
68
73
  fixOutMode({
69
74
  outMode,
70
- checkModes: ["bounce"],
75
+ checkModes: [OutMode_js_1.OutMode.bounce],
71
76
  coord: pos.x,
72
77
  maxCoord: container.canvas.size.width,
73
78
  setCb: (value) => (pos.x += value),
@@ -76,7 +81,7 @@
76
81
  }, fixVertical = (outMode) => {
77
82
  fixOutMode({
78
83
  outMode,
79
- checkModes: ["bounce"],
84
+ checkModes: [OutMode_js_1.OutMode.bounce],
80
85
  coord: pos.y,
81
86
  maxCoord: container.canvas.size.height,
82
87
  setCb: (value) => (pos.y += value),
@@ -95,7 +100,7 @@
95
100
  };
96
101
  this._calculateVelocity = () => {
97
102
  const baseVelocity = (0, NumberUtils_js_1.getParticleBaseVelocity)(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move;
98
- if (moveOptions.direction === "inside" || moveOptions.direction === "outside") {
103
+ if (moveOptions.direction === MoveDirection_js_1.MoveDirection.inside || moveOptions.direction === MoveDirection_js_1.MoveDirection.outside) {
99
104
  return res;
100
105
  }
101
106
  const rad = (0, NumberUtils_js_1.degToRad)((0, NumberUtils_js_1.getRangeValue)(moveOptions.angle.value)), radOffset = (0, NumberUtils_js_1.degToRad)((0, NumberUtils_js_1.getRangeValue)(moveOptions.angle.offset)), range = {
@@ -123,9 +128,9 @@
123
128
  if (retries >= minRetries && tryCount > retries) {
124
129
  throw new Error(`${Constants_js_1.errorPrefix} particle is overlapping and can't be placed`);
125
130
  }
126
- return !!this.container.particles.find((particle) => (0, NumberUtils_js_1.getDistance)(pos, particle.position) < radius + particle.getRadius());
131
+ return !!this.container.particles.find(particle => (0, NumberUtils_js_1.getDistance)(pos, particle.position) < radius + particle.getRadius());
127
132
  };
128
- this._getRollColor = (color) => {
133
+ this._getRollColor = color => {
129
134
  if (!color || !this.roll || (!this.backColor && !this.roll.alter)) {
130
135
  return color;
131
136
  }
@@ -141,7 +146,7 @@
141
146
  }
142
147
  return color;
143
148
  };
144
- this._initPosition = (position) => {
149
+ this._initPosition = position => {
145
150
  const container = this.container, zIndexValue = (0, NumberUtils_js_1.getRangeValue)(this.options.zIndex.value), minZ = 0;
146
151
  this.position = this._calcPosition(container, position, (0, NumberUtils_js_1.clamp)(zIndexValue, minZ, container.zLayers));
147
152
  this.initialPosition = this.position.copy();
@@ -149,15 +154,15 @@
149
154
  this.moveCenter = {
150
155
  ...(0, Utils_js_1.getPosition)(this.options.move.center, canvasSize),
151
156
  radius: this.options.move.center.radius ?? defaultRadius,
152
- mode: this.options.move.center.mode ?? "percent",
157
+ mode: this.options.move.center.mode ?? PixelMode_js_1.PixelMode.percent,
153
158
  };
154
159
  this.direction = (0, NumberUtils_js_1.getParticleDirectionAngle)(this.options.move.direction, this.position, this.moveCenter);
155
160
  switch (this.options.move.direction) {
156
- case "inside":
157
- this.outType = "inside";
161
+ case MoveDirection_js_1.MoveDirection.inside:
162
+ this.outType = ParticleOutType_js_1.ParticleOutType.inside;
158
163
  break;
159
- case "outside":
160
- this.outType = "outside";
164
+ case MoveDirection_js_1.MoveDirection.outside:
165
+ this.outType = ParticleOutType_js_1.ParticleOutType.outside;
161
166
  break;
162
167
  }
163
168
  this.offset = Vectors_js_1.Vector.origin;
@@ -180,19 +185,19 @@
180
185
  updater.particleDestroyed?.(this, override);
181
186
  }
182
187
  pathGenerator?.reset(this);
183
- this._engine.dispatchEvent("particleDestroyed", {
188
+ this._engine.dispatchEvent(EventType_js_1.EventType.particleDestroyed, {
184
189
  container: this.container,
185
190
  data: {
186
191
  particle: this,
187
192
  },
188
193
  });
189
194
  }
190
- async draw(delta) {
195
+ draw(delta) {
191
196
  const container = this.container, canvas = container.canvas;
192
197
  for (const [, plugin] of container.plugins) {
193
- await canvas.drawParticlePlugin(plugin, this, delta);
198
+ canvas.drawParticlePlugin(plugin, this, delta);
194
199
  }
195
- await canvas.drawParticle(this, delta);
200
+ canvas.drawParticle(this, delta);
196
201
  }
197
202
  getFillColor() {
198
203
  return this._getRollColor(this.bubble.color ?? (0, ColorUtils_js_1.getHslFromAnimation)(this.color));
@@ -213,7 +218,7 @@
213
218
  getStrokeColor() {
214
219
  return this._getRollColor(this.bubble.color ?? (0, ColorUtils_js_1.getHslFromAnimation)(this.strokeColor));
215
220
  }
216
- async init(id, position, overrideOptions, group) {
221
+ init(id, position, overrideOptions, group) {
217
222
  const container = this.container, engine = this._engine;
218
223
  this.id = id;
219
224
  this.group = group;
@@ -225,14 +230,15 @@
225
230
  this.lastPathTime = 0;
226
231
  this.destroyed = false;
227
232
  this.unbreakable = false;
233
+ this.isRotating = false;
228
234
  this.rotation = 0;
229
235
  this.misplaced = false;
230
236
  this.retina = {
231
237
  maxDistance: {},
232
238
  };
233
- this.outType = "normal";
239
+ this.outType = ParticleOutType_js_1.ParticleOutType.normal;
234
240
  this.ignoresResizeRatio = true;
235
- const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = (0, OptionsUtils_js_1.loadParticlesOptions)(this._engine, container, mainOptions.particles), effectType = particlesOptions.effect.type, shapeType = particlesOptions.shape.type, { reduceDuplicates } = particlesOptions;
241
+ const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = (0, OptionsUtils_js_1.loadParticlesOptions)(this._engine, container, mainOptions.particles), { reduceDuplicates } = particlesOptions, effectType = particlesOptions.effect.type, shapeType = particlesOptions.shape.type;
236
242
  this.effect = (0, Utils_js_1.itemFromSingleOrMultiple)(effectType, this.id, reduceDuplicates);
237
243
  this.shape = (0, Utils_js_1.itemFromSingleOrMultiple)(shapeType, this.id, reduceDuplicates);
238
244
  const effectOptions = particlesOptions.effect, shapeOptions = particlesOptions.shape;
@@ -252,6 +258,14 @@
252
258
  }
253
259
  }
254
260
  }
261
+ if (this.effect === randomString) {
262
+ const availableEffects = [...this.container.effectDrawers.keys()];
263
+ this.effect = availableEffects[Math.floor(Math.random() * availableEffects.length)];
264
+ }
265
+ if (this.shape === randomString) {
266
+ const availableShapes = [...this.container.shapeDrawers.keys()];
267
+ this.shape = availableShapes[Math.floor(Math.random() * availableShapes.length)];
268
+ }
255
269
  this.effectData = loadEffectData(this.effect, effectOptions, this.id, reduceDuplicates);
256
270
  this.shapeData = loadShapeData(this.shape, shapeOptions, this.id, reduceDuplicates);
257
271
  particlesOptions.load(overrideOptions);
@@ -277,7 +291,7 @@
277
291
  if (pathOptions.generator) {
278
292
  this.pathGenerator = this._engine.getPathGenerator(pathOptions.generator);
279
293
  if (this.pathGenerator && container.addPath(pathOptions.generator, this.pathGenerator)) {
280
- await this.pathGenerator.init(container);
294
+ this.pathGenerator.init(container);
281
295
  }
282
296
  }
283
297
  container.retina.initParticle(this);
@@ -306,7 +320,7 @@
306
320
  }
307
321
  }
308
322
  if (effectDrawer?.loadEffect) {
309
- await effectDrawer.loadEffect(this);
323
+ effectDrawer.loadEffect(this);
310
324
  }
311
325
  let shapeDrawer = container.shapeDrawers.get(this.shape);
312
326
  if (!shapeDrawer) {
@@ -316,7 +330,7 @@
316
330
  }
317
331
  }
318
332
  if (shapeDrawer?.loadShape) {
319
- await shapeDrawer.loadShape(this);
333
+ shapeDrawer.loadShape(this);
320
334
  }
321
335
  const sideCountFunc = shapeDrawer?.getSidesCount;
322
336
  if (sideCountFunc) {
@@ -325,13 +339,13 @@
325
339
  this.spawning = false;
326
340
  this.shadowColor = (0, ColorUtils_js_1.rangeColorToRgb)(this.options.shadow.color);
327
341
  for (const updater of particles.updaters) {
328
- await updater.init(this);
342
+ updater.init(this);
329
343
  }
330
344
  for (const mover of particles.movers) {
331
- await mover.init?.(this);
345
+ mover.init?.(this);
332
346
  }
333
- await effectDrawer?.particleInit?.(container, this);
334
- await shapeDrawer?.particleInit?.(container, this);
347
+ effectDrawer?.particleInit?.(container, this);
348
+ shapeDrawer?.particleInit?.(container, this);
335
349
  for (const [, plugin] of container.plugins) {
336
350
  plugin.particleCreated?.(this);
337
351
  }
@@ -1,41 +1,20 @@
1
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
- if (k2 === undefined) k2 = k;
3
- var desc = Object.getOwnPropertyDescriptor(m, k);
4
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
- desc = { enumerable: true, get: function() { return m[k]; } };
6
- }
7
- Object.defineProperty(o, k2, desc);
8
- }) : (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- o[k2] = m[k];
11
- }));
12
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
- Object.defineProperty(o, "default", { enumerable: true, value: v });
14
- }) : function(o, v) {
15
- o["default"] = v;
16
- });
17
- var __importStar = (this && this.__importStar) || function (mod) {
18
- if (mod && mod.__esModule) return mod;
19
- var result = {};
20
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
- __setModuleDefault(result, mod);
22
- return result;
23
- };
24
1
  (function (factory) {
25
2
  if (typeof module === "object" && typeof module.exports === "object") {
26
3
  var v = factory(require, exports);
27
4
  if (v !== undefined) module.exports = v;
28
5
  }
29
6
  else if (typeof define === "function" && define.amd) {
30
- define(["require", "exports", "../Utils/Utils.js", "./Utils/InteractionManager.js", "./Utils/Point.js", "./Utils/QuadTree.js", "./Utils/Ranges.js", "./Utils/Constants.js"], factory);
7
+ define(["require", "exports", "../Utils/Utils.js", "../Enums/Types/EventType.js", "./Utils/InteractionManager.js", "../Enums/Modes/LimitMode.js", "./Particle.js", "./Utils/Point.js", "./Utils/QuadTree.js", "./Utils/Ranges.js", "./Utils/Constants.js"], factory);
31
8
  }
32
9
  })(function (require, exports) {
33
10
  "use strict";
34
- var __syncRequire = typeof module === "object" && typeof module.exports === "object";
35
11
  Object.defineProperty(exports, "__esModule", { value: true });
36
12
  exports.Particles = void 0;
37
13
  const Utils_js_1 = require("../Utils/Utils.js");
14
+ const EventType_js_1 = require("../Enums/Types/EventType.js");
38
15
  const InteractionManager_js_1 = require("./Utils/InteractionManager.js");
16
+ const LimitMode_js_1 = require("../Enums/Modes/LimitMode.js");
17
+ const Particle_js_1 = require("./Particle.js");
39
18
  const Point_js_1 = require("./Utils/Point.js");
40
19
  const QuadTree_js_1 = require("./Utils/QuadTree.js");
41
20
  const Ranges_js_1 = require("./Utils/Ranges.js");
@@ -48,11 +27,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
48
27
  class Particles {
49
28
  constructor(engine, container) {
50
29
  this._addToPool = (...particles) => {
51
- for (const particle of particles) {
52
- this._pool.push(particle);
53
- }
30
+ this._pool.push(...particles);
54
31
  };
55
- this._applyDensity = async (options, manualCount, group) => {
32
+ this._applyDensity = (options, manualCount, group) => {
56
33
  const numberOptions = options.number;
57
34
  if (!options.number.density?.enable) {
58
35
  if (group === undefined) {
@@ -63,7 +40,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
63
40
  }
64
41
  return;
65
42
  }
66
- const densityFactor = this._initDensityFactor(numberOptions.density), optParticlesNumber = numberOptions.value, minLimit = 0, optParticlesLimit = numberOptions.limit.value > minLimit ? numberOptions.limit.value : optParticlesNumber, particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor + manualCount, particlesCount = Math.min(this.count, this.filter((t) => t.group === group).length);
43
+ const densityFactor = this._initDensityFactor(numberOptions.density), optParticlesNumber = numberOptions.value, minLimit = 0, optParticlesLimit = numberOptions.limit.value > minLimit ? numberOptions.limit.value : optParticlesNumber, particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor + manualCount, particlesCount = Math.min(this.count, this.filter(t => t.group === group).length);
67
44
  if (group === undefined) {
68
45
  this._limit = numberOptions.limit.value * densityFactor;
69
46
  }
@@ -71,13 +48,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
71
48
  this._groupLimits.set(group, numberOptions.limit.value * densityFactor);
72
49
  }
73
50
  if (particlesCount < particlesNumber) {
74
- await this.push(Math.abs(particlesNumber - particlesCount), undefined, options, group);
51
+ this.push(Math.abs(particlesNumber - particlesCount), undefined, options, group);
75
52
  }
76
53
  else if (particlesCount > particlesNumber) {
77
54
  this.removeQuantity(particlesCount - particlesNumber, group);
78
55
  }
79
56
  };
80
- this._initDensityFactor = (densityOptions) => {
57
+ this._initDensityFactor = densityOptions => {
81
58
  const container = this._container, defaultFactor = 1;
82
59
  if (!container.canvas.element || !densityOptions.enable) {
83
60
  return defaultFactor;
@@ -85,14 +62,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
85
62
  const canvas = container.canvas.element, pxRatio = container.retina.pixelRatio;
86
63
  return (canvas.width * canvas.height) / (densityOptions.height * densityOptions.width * pxRatio ** squareExp);
87
64
  };
88
- this._pushParticle = async (position, overrideOptions, group, initializer) => {
65
+ this._pushParticle = (position, overrideOptions, group, initializer) => {
89
66
  try {
90
67
  let particle = this._pool.pop();
91
68
  if (!particle) {
92
- const { Particle } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./Particle.js"))) : new Promise((resolve_1, reject_1) => { require(["./Particle.js"], resolve_1, reject_1); }).then(__importStar));
93
- particle = new Particle(this._engine, this._container);
69
+ particle = new Particle_js_1.Particle(this._engine, this._container);
94
70
  }
95
- await particle.init(this._nextId, position, overrideOptions, group);
71
+ particle.init(this._nextId, position, overrideOptions, group);
96
72
  let canAdd = true;
97
73
  if (initializer) {
98
74
  canAdd = initializer(particle);
@@ -103,7 +79,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
103
79
  this._array.push(particle);
104
80
  this._zArray.push(particle);
105
81
  this._nextId++;
106
- this._engine.dispatchEvent("particleAdded", {
82
+ this._engine.dispatchEvent(EventType_js_1.EventType.particleAdded, {
107
83
  container: this._container,
108
84
  data: {
109
85
  particle,
@@ -124,7 +100,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
124
100
  this._array.splice(index, deleteCount);
125
101
  this._zArray.splice(zIdx, deleteCount);
126
102
  particle.destroy(override);
127
- this._engine.dispatchEvent("particleRemoved", {
103
+ this._engine.dispatchEvent(EventType_js_1.EventType.particleRemoved, {
128
104
  container: this._container,
129
105
  data: {
130
106
  particle,
@@ -153,28 +129,29 @@ var __importStar = (this && this.__importStar) || function (mod) {
153
129
  get count() {
154
130
  return this._array.length;
155
131
  }
156
- async addManualParticles() {
132
+ addManualParticles() {
157
133
  const container = this._container, options = container.actualOptions;
158
- for (const particle of options.manualParticles) {
159
- await this.addParticle(particle.position ? (0, Utils_js_1.getPosition)(particle.position, container.canvas.size) : undefined, particle.options);
160
- }
134
+ options.manualParticles.forEach(p => this.addParticle(p.position ? (0, Utils_js_1.getPosition)(p.position, container.canvas.size) : undefined, p.options));
161
135
  }
162
- async addParticle(position, overrideOptions, group, initializer) {
163
- const limitOptions = this._container.actualOptions.particles.number.limit, limit = group === undefined ? this._limit : this._groupLimits.get(group) ?? this._limit, currentCount = this.count, minLimit = 0;
136
+ addParticle(position, overrideOptions, group, initializer) {
137
+ const limitMode = this._container.actualOptions.particles.number.limit.mode, limit = group === undefined ? this._limit : this._groupLimits.get(group) ?? this._limit, currentCount = this.count, minLimit = 0;
164
138
  if (limit > minLimit) {
165
- if (limitOptions.mode === "delete") {
166
- const countOffset = 1, minCount = 0, countToRemove = currentCount + countOffset - limit;
167
- if (countToRemove > minCount) {
168
- this.removeQuantity(countToRemove);
169
- }
170
- }
171
- else if (limitOptions.mode === "wait") {
172
- if (currentCount >= limit) {
173
- return;
139
+ switch (limitMode) {
140
+ case LimitMode_js_1.LimitMode.delete: {
141
+ const countOffset = 1, minCount = 0, countToRemove = currentCount + countOffset - limit;
142
+ if (countToRemove > minCount) {
143
+ this.removeQuantity(countToRemove);
144
+ }
145
+ break;
174
146
  }
147
+ case LimitMode_js_1.LimitMode.wait:
148
+ if (currentCount >= limit) {
149
+ return;
150
+ }
151
+ break;
175
152
  }
176
153
  }
177
- return await this._pushParticle(position, overrideOptions, group, initializer);
154
+ return this._pushParticle(position, overrideOptions, group, initializer);
178
155
  }
179
156
  clear() {
180
157
  this._array = [];
@@ -187,15 +164,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
187
164
  this.movers = [];
188
165
  this.updaters = [];
189
166
  }
190
- async draw(delta) {
167
+ draw(delta) {
191
168
  const container = this._container, canvas = container.canvas;
192
169
  canvas.clear();
193
- await this.update(delta);
170
+ this.update(delta);
194
171
  for (const [, plugin] of container.plugins) {
195
- await canvas.drawPlugin(plugin, delta);
172
+ canvas.drawPlugin(plugin, delta);
196
173
  }
197
174
  for (const p of this._zArray) {
198
- await p.draw(delta);
175
+ p.draw(delta);
199
176
  }
200
177
  }
201
178
  filter(condition) {
@@ -217,24 +194,22 @@ var __importStar = (this && this.__importStar) || function (mod) {
217
194
  await this.initPlugins();
218
195
  let handled = false;
219
196
  for (const [, plugin] of container.plugins) {
220
- if (plugin.particlesInitialization !== undefined) {
221
- handled = plugin.particlesInitialization();
222
- }
197
+ handled = plugin.particlesInitialization?.() ?? handled;
223
198
  if (handled) {
224
199
  break;
225
200
  }
226
201
  }
227
- await this.addManualParticles();
202
+ this.addManualParticles();
228
203
  if (!handled) {
229
204
  const particlesOptions = options.particles, groups = particlesOptions.groups;
230
205
  for (const group in groups) {
231
206
  const groupOptions = groups[group];
232
207
  for (let i = this.count, j = 0; j < groupOptions.number?.value && i < particlesOptions.number.value; i++, j++) {
233
- await this.addParticle(undefined, groupOptions, group);
208
+ this.addParticle(undefined, groupOptions, group);
234
209
  }
235
210
  }
236
211
  for (let i = this.count; i < particlesOptions.number.value; i++) {
237
- await this.addParticle();
212
+ this.addParticle();
238
213
  }
239
214
  }
240
215
  }
@@ -247,18 +222,18 @@ var __importStar = (this && this.__importStar) || function (mod) {
247
222
  this.updaters = await this._engine.getUpdaters(container, true);
248
223
  await this._interactionManager.init();
249
224
  for (const [, pathGenerator] of container.pathGenerators) {
250
- await pathGenerator.init(container);
225
+ pathGenerator.init(container);
251
226
  }
252
227
  }
253
- async push(nb, mouse, overrideOptions, group) {
228
+ push(nb, mouse, overrideOptions, group) {
254
229
  for (let i = 0; i < nb; i++) {
255
- await this.addParticle(mouse?.position, overrideOptions, group);
230
+ this.addParticle(mouse?.position, overrideOptions, group);
256
231
  }
257
232
  }
258
233
  async redraw() {
259
234
  this.clear();
260
235
  await this.init();
261
- await this.draw({ value: 0, factor: 0 });
236
+ this.draw({ value: 0, factor: 0 });
262
237
  }
263
238
  remove(particle, group, override) {
264
239
  this.removeAt(this._array.indexOf(particle), undefined, group, override);
@@ -279,12 +254,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
279
254
  const defaultIndex = 0;
280
255
  this.removeAt(defaultIndex, quantity, group);
281
256
  }
282
- async setDensity() {
257
+ setDensity() {
283
258
  const options = this._container.actualOptions, groups = options.particles.groups, manualCount = 0;
284
259
  for (const group in groups) {
285
- await this._applyDensity(groups[group], manualCount, group);
260
+ this._applyDensity(groups[group], manualCount, group);
286
261
  }
287
- await this._applyDensity(options.particles, options.manualParticles.length);
262
+ this._applyDensity(options.particles, options.manualParticles.length);
288
263
  }
289
264
  setLastZIndex(zIndex) {
290
265
  this._lastZIndex = zIndex;
@@ -293,14 +268,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
293
268
  setResizeFactor(factor) {
294
269
  this._resizeFactor = factor;
295
270
  }
296
- async update(delta) {
271
+ update(delta) {
297
272
  const container = this._container, particlesToDelete = new Set();
298
273
  this.quadTree = new QuadTree_js_1.QuadTree(qTreeRectangle(container.canvas.size), qTreeCapacity);
299
274
  for (const [, pathGenerator] of container.pathGenerators) {
300
275
  pathGenerator.update();
301
276
  }
302
277
  for (const [, plugin] of container.plugins) {
303
- await plugin.update?.(delta);
278
+ plugin.update?.(delta);
304
279
  }
305
280
  const resizeFactor = this._resizeFactor;
306
281
  for (const particle of this._array) {
@@ -320,7 +295,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
320
295
  }
321
296
  for (const mover of this.movers) {
322
297
  if (mover.isEnabled(particle)) {
323
- await mover.move(particle, delta);
298
+ mover.move(particle, delta);
324
299
  }
325
300
  }
326
301
  if (particle.destroyed) {
@@ -334,7 +309,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
334
309
  this._array = this.filter(checkDelete);
335
310
  this._zArray = this._zArray.filter(checkDelete);
336
311
  for (const particle of particlesToDelete) {
337
- this._engine.dispatchEvent("particleRemoved", {
312
+ this._engine.dispatchEvent(EventType_js_1.EventType.particleRemoved, {
338
313
  container: this._container,
339
314
  data: {
340
315
  particle,
@@ -343,13 +318,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
343
318
  }
344
319
  this._addToPool(...particlesToDelete);
345
320
  }
346
- await this._interactionManager.externalInteract(delta);
321
+ this._interactionManager.externalInteract(delta);
347
322
  for (const particle of this._array) {
348
323
  for (const updater of this.updaters) {
349
- await updater.update(particle, delta);
324
+ updater.update(particle, delta);
350
325
  }
351
326
  if (!particle.destroyed && !particle.spawning) {
352
- await this._interactionManager.particlesInteract(particle, delta);
327
+ this._interactionManager.particlesInteract(particle, delta);
353
328
  }
354
329
  }
355
330
  delete this._resizeFactor;
@@ -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/Utils.js", "./Constants.js", "../../Utils/TypeUtils.js"], factory);
7
+ define(["require", "exports", "../../Utils/Utils.js", "./Constants.js", "../../Enums/InteractivityDetect.js", "../../Utils/TypeUtils.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -12,6 +12,7 @@
12
12
  exports.EventListeners = void 0;
13
13
  const Utils_js_1 = require("../../Utils/Utils.js");
14
14
  const Constants_js_1 = require("./Constants.js");
15
+ const InteractivityDetect_js_1 = require("../../Enums/InteractivityDetect.js");
15
16
  const TypeUtils_js_1 = require("../../Utils/TypeUtils.js");
16
17
  const double = 2;
17
18
  function manageListener(element, event, handler, add, options) {
@@ -33,7 +34,7 @@
33
34
  class EventListeners {
34
35
  constructor(container) {
35
36
  this.container = container;
36
- this._doMouseTouchClick = (e) => {
37
+ this._doMouseTouchClick = e => {
37
38
  const container = this.container, options = container.actualOptions;
38
39
  if (this._canPush) {
39
40
  const mouseInteractivity = container.interactivity.mouse, mousePos = mouseInteractivity.position;
@@ -43,7 +44,7 @@
43
44
  mouseInteractivity.clickPosition = { ...mousePos };
44
45
  mouseInteractivity.clickTime = new Date().getTime();
45
46
  const onClick = options.interactivity.events.onClick;
46
- (0, Utils_js_1.executeOnSingleOrMultiple)(onClick.mode, (mode) => this.container.handleClickMode(mode));
47
+ (0, Utils_js_1.executeOnSingleOrMultiple)(onClick.mode, mode => this.container.handleClickMode(mode));
47
48
  }
48
49
  if (e.type === "touchend") {
49
50
  const touchDelay = 500;
@@ -51,8 +52,8 @@
51
52
  }
52
53
  };
53
54
  this._handleThemeChange = (e) => {
54
- const mediaEvent = e, container = this.container, options = container.options, defaultThemes = options.defaultThemes, themeName = mediaEvent.matches ? defaultThemes.dark : defaultThemes.light, theme = options.themes.find((theme) => theme.name === themeName);
55
- if (theme && theme.default.auto) {
55
+ const mediaEvent = e, container = this.container, options = container.options, defaultThemes = options.defaultThemes, themeName = mediaEvent.matches ? defaultThemes.dark : defaultThemes.light, theme = options.themes.find(theme => theme.name === themeName);
56
+ if (theme?.default.auto) {
56
57
  void container.loadTheme(themeName);
57
58
  }
58
59
  };
@@ -62,7 +63,7 @@
62
63
  if (!options.pauseOnBlur) {
63
64
  return;
64
65
  }
65
- if (document && document.hidden) {
66
+ if (document?.hidden) {
66
67
  container.pageHidden = true;
67
68
  container.pause();
68
69
  }
@@ -114,14 +115,14 @@
114
115
  manageListener(interactivityEl, mouseLeaveTmpEvent, handlers.mouseLeave, add);
115
116
  manageListener(interactivityEl, Constants_js_1.touchCancelEvent, handlers.touchCancel, add);
116
117
  };
117
- this._manageListeners = (add) => {
118
+ this._manageListeners = add => {
118
119
  const handlers = this._handlers, container = this.container, options = container.actualOptions, detectType = options.interactivity.detectsOn, canvasEl = container.canvas.element;
119
120
  let mouseLeaveTmpEvent = Constants_js_1.mouseLeaveEvent;
120
- if (detectType === "window") {
121
+ if (detectType === InteractivityDetect_js_1.InteractivityDetect.window) {
121
122
  container.interactivity.element = window;
122
123
  mouseLeaveTmpEvent = Constants_js_1.mouseOutEvent;
123
124
  }
124
- else if (detectType === "parent" && canvasEl) {
125
+ else if (detectType === InteractivityDetect_js_1.InteractivityDetect.parent && canvasEl) {
125
126
  container.interactivity.element = canvasEl.parentElement ?? canvasEl.parentNode;
126
127
  }
127
128
  else {
@@ -134,7 +135,7 @@
134
135
  manageListener(document, Constants_js_1.visibilityChangeEvent, handlers.visibilityChange, add, false);
135
136
  }
136
137
  };
137
- this._manageMediaMatch = (add) => {
138
+ this._manageMediaMatch = add => {
138
139
  const handlers = this._handlers, mediaMatch = (0, Utils_js_1.safeMatchMedia)("(prefers-color-scheme: dark)");
139
140
  if (!mediaMatch) {
140
141
  return;
@@ -153,7 +154,7 @@
153
154
  mediaMatch.removeListener(handlers.oldThemeChange);
154
155
  }
155
156
  };
156
- this._manageResize = (add) => {
157
+ this._manageResize = add => {
157
158
  const handlers = this._handlers, container = this.container, options = container.actualOptions;
158
159
  if (!options.interactivity.events.resize) {
159
160
  return;
@@ -172,7 +173,7 @@
172
173
  }
173
174
  else if (!this._resizeObserver && add && canvasEl) {
174
175
  this._resizeObserver = new ResizeObserver((entries) => {
175
- const entry = entries.find((e) => e.target === canvasEl);
176
+ const entry = entries.find(e => e.target === canvasEl);
176
177
  if (!entry) {
177
178
  return;
178
179
  }
@@ -190,7 +191,7 @@
190
191
  mouse.clicking = true;
191
192
  mouse.downPosition = mouse.position;
192
193
  };
193
- this._mouseTouchClick = (e) => {
194
+ this._mouseTouchClick = e => {
194
195
  const container = this.container, options = container.actualOptions, { mouse } = container.interactivity;
195
196
  mouse.inside = true;
196
197
  let handled = false;
@@ -225,7 +226,7 @@
225
226
  mouse.inside = false;
226
227
  mouse.clicking = false;
227
228
  };
228
- this._mouseTouchMove = (e) => {
229
+ this._mouseTouchMove = e => {
229
230
  const container = this.container, options = container.actualOptions, interactivity = container.interactivity, canvasEl = container.canvas.element;
230
231
  if (!interactivity?.element) {
231
232
  return;
@@ -244,7 +245,7 @@
244
245
  };
245
246
  }
246
247
  }
247
- else if (options.interactivity.detectsOn === "parent") {
248
+ else if (options.interactivity.detectsOn === InteractivityDetect_js_1.InteractivityDetect.parent) {
248
249
  const source = mouseEvent.target, target = mouseEvent.currentTarget;
249
250
  if (source && target && canvasEl) {
250
251
  const sourceRect = source.getBoundingClientRect(), targetRect = target.getBoundingClientRect(), canvasRect = canvasEl.getBoundingClientRect();
@@ -285,21 +286,21 @@
285
286
  interactivity.mouse.position = pos;
286
287
  interactivity.status = Constants_js_1.mouseMoveEvent;
287
288
  };
288
- this._touchEnd = (e) => {
289
+ this._touchEnd = e => {
289
290
  const evt = e, touches = Array.from(evt.changedTouches);
290
291
  for (const touch of touches) {
291
292
  this._touches.delete(touch.identifier);
292
293
  }
293
294
  this._mouseTouchFinish();
294
295
  };
295
- this._touchEndClick = (e) => {
296
+ this._touchEndClick = e => {
296
297
  const evt = e, touches = Array.from(evt.changedTouches);
297
298
  for (const touch of touches) {
298
299
  this._touches.delete(touch.identifier);
299
300
  }
300
301
  this._mouseTouchClick(e);
301
302
  };
302
- this._touchStart = (e) => {
303
+ this._touchStart = e => {
303
304
  const evt = e, touches = Array.from(evt.changedTouches);
304
305
  for (const touch of touches) {
305
306
  this._touches.set(touch.identifier, performance.now());