@tsparticles/engine 3.3.0 → 3.5.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 (272) hide show
  1. package/README.md +0 -4
  2. package/browser/Core/Canvas.js +27 -22
  3. package/browser/Core/Container.js +57 -44
  4. package/browser/Core/Engine.js +82 -74
  5. package/browser/Core/Particle.js +29 -15
  6. package/browser/Core/Particles.js +23 -24
  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 +3 -2
  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 +13 -7
  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 +28 -14
  56. package/browser/Utils/RgbColorManager.js +11 -4
  57. package/browser/Utils/Utils.js +37 -31
  58. package/cjs/Core/Canvas.js +27 -22
  59. package/cjs/Core/Container.js +57 -44
  60. package/cjs/Core/Engine.js +82 -74
  61. package/cjs/Core/Particle.js +29 -15
  62. package/cjs/Core/Particles.js +23 -24
  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 +3 -2
  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 +24 -19
  108. package/cjs/Utils/ColorUtils.js +37 -30
  109. package/cjs/Utils/EventDispatcher.js +1 -1
  110. package/cjs/Utils/HslColorManager.js +11 -4
  111. package/cjs/Utils/NumberUtils.js +54 -38
  112. package/cjs/Utils/OptionsUtils.js +2 -3
  113. package/cjs/Utils/RgbColorManager.js +11 -4
  114. package/cjs/Utils/TypeUtils.js +6 -7
  115. package/cjs/Utils/Utils.js +66 -61
  116. package/cjs/init.js +1 -2
  117. package/esm/Core/Canvas.js +27 -22
  118. package/esm/Core/Container.js +57 -44
  119. package/esm/Core/Engine.js +82 -74
  120. package/esm/Core/Particle.js +29 -15
  121. package/esm/Core/Particles.js +23 -24
  122. package/esm/Core/Utils/EventListeners.js +18 -17
  123. package/esm/Core/Utils/ExternalInteractorBase.js +2 -1
  124. package/esm/Core/Utils/InteractionManager.js +3 -2
  125. package/esm/Core/Utils/ParticlesInteractorBase.js +2 -1
  126. package/esm/Core/Utils/QuadTree.js +1 -1
  127. package/esm/Core/Utils/Ranges.js +5 -4
  128. package/esm/Enums/AnimationStatus.js +5 -1
  129. package/esm/Enums/Directions/MoveDirection.js +14 -1
  130. package/esm/Enums/Directions/OutModeDirection.js +7 -1
  131. package/esm/Enums/Directions/RotateDirection.js +6 -1
  132. package/esm/Enums/InteractivityDetect.js +6 -1
  133. package/esm/Enums/Modes/AnimationMode.js +7 -1
  134. package/esm/Enums/Modes/CollisionMode.js +6 -1
  135. package/esm/Enums/Modes/LimitMode.js +5 -1
  136. package/esm/Enums/Modes/OutMode.js +8 -1
  137. package/esm/Enums/Modes/PixelMode.js +5 -1
  138. package/esm/Enums/Modes/ResponsiveMode.js +5 -1
  139. package/esm/Enums/Modes/ThemeMode.js +6 -1
  140. package/esm/Enums/Types/AlterType.js +5 -1
  141. package/esm/Enums/Types/DestroyType.js +6 -1
  142. package/esm/Enums/Types/DivType.js +5 -1
  143. package/esm/Enums/Types/EasingType.js +30 -1
  144. package/esm/Enums/Types/EventType.js +15 -1
  145. package/esm/Enums/Types/GradientType.js +6 -1
  146. package/esm/Enums/Types/InteractorType.js +5 -1
  147. package/esm/Enums/Types/ParticleOutType.js +6 -1
  148. package/esm/Enums/Types/StartValueType.js +6 -1
  149. package/esm/Options/Classes/AnimationOptions.js +4 -2
  150. package/esm/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
  151. package/esm/Options/Classes/Interactivity/Events/Events.js +1 -1
  152. package/esm/Options/Classes/Interactivity/Interactivity.js +2 -1
  153. package/esm/Options/Classes/ManualParticle.js +2 -1
  154. package/esm/Options/Classes/Options.js +14 -12
  155. package/esm/Options/Classes/Particles/Collisions/Collisions.js +2 -1
  156. package/esm/Options/Classes/Particles/Move/Move.js +2 -1
  157. package/esm/Options/Classes/Particles/Move/MoveCenter.js +2 -1
  158. package/esm/Options/Classes/Particles/Move/OutModes.js +2 -1
  159. package/esm/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
  160. package/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
  161. package/esm/Options/Classes/Particles/ParticlesOptions.js +1 -1
  162. package/esm/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
  163. package/esm/Options/Classes/Responsive.js +5 -4
  164. package/esm/Options/Classes/Theme/ThemeDefault.js +2 -1
  165. package/esm/Types/RangeType.js +5 -1
  166. package/esm/Utils/CanvasUtils.js +13 -7
  167. package/esm/Utils/ColorUtils.js +17 -9
  168. package/esm/Utils/EventDispatcher.js +1 -1
  169. package/esm/Utils/HslColorManager.js +11 -4
  170. package/esm/Utils/NumberUtils.js +28 -14
  171. package/esm/Utils/RgbColorManager.js +11 -4
  172. package/esm/Utils/Utils.js +37 -31
  173. package/package.json +1 -1
  174. package/report.html +1 -1
  175. package/tsparticles.engine.js +327 -225
  176. package/tsparticles.engine.min.js +1 -1
  177. package/tsparticles.engine.min.js.LICENSE.txt +1 -1
  178. package/types/Core/Container.d.ts +4 -2
  179. package/types/Core/Engine.d.ts +6 -5
  180. package/types/Core/Interfaces/IPlugin.d.ts +3 -4
  181. package/types/Core/Interfaces/IShapeDrawer.d.ts +1 -0
  182. package/types/Core/Particle.d.ts +1 -0
  183. package/types/Enums/AnimationStatus.d.ts +1 -1
  184. package/types/Enums/Directions/MoveDirection.d.ts +1 -1
  185. package/types/Enums/Directions/OutModeDirection.d.ts +1 -1
  186. package/types/Enums/Directions/RotateDirection.d.ts +1 -1
  187. package/types/Enums/InteractivityDetect.d.ts +1 -1
  188. package/types/Enums/Modes/AnimationMode.d.ts +1 -1
  189. package/types/Enums/Modes/CollisionMode.d.ts +1 -1
  190. package/types/Enums/Modes/LimitMode.d.ts +1 -1
  191. package/types/Enums/Modes/OutMode.d.ts +1 -1
  192. package/types/Enums/Modes/PixelMode.d.ts +1 -1
  193. package/types/Enums/Modes/ResponsiveMode.d.ts +1 -1
  194. package/types/Enums/Modes/ThemeMode.d.ts +1 -1
  195. package/types/Enums/Types/AlterType.d.ts +1 -1
  196. package/types/Enums/Types/DestroyType.d.ts +1 -1
  197. package/types/Enums/Types/DivType.d.ts +1 -1
  198. package/types/Enums/Types/EasingType.d.ts +1 -1
  199. package/types/Enums/Types/EventType.d.ts +1 -1
  200. package/types/Enums/Types/GradientType.d.ts +1 -1
  201. package/types/Enums/Types/InteractorType.d.ts +1 -1
  202. package/types/Enums/Types/ParticleOutType.d.ts +1 -1
  203. package/types/Enums/Types/StartValueType.d.ts +1 -1
  204. package/types/Options/Classes/Options.d.ts +2 -1
  205. package/types/Options/Classes/Responsive.d.ts +2 -2
  206. package/types/Options/Classes/Theme/Theme.d.ts +2 -2
  207. package/types/Options/Interfaces/IResponsive.d.ts +2 -3
  208. package/types/Options/Interfaces/Theme/ITheme.d.ts +2 -3
  209. package/types/Types/RangeType.d.ts +1 -1
  210. package/types/Utils/NumberUtils.d.ts +3 -0
  211. package/umd/Core/Canvas.js +27 -22
  212. package/umd/Core/Container.js +58 -45
  213. package/umd/Core/Engine.js +83 -99
  214. package/umd/Core/Particle.js +30 -16
  215. package/umd/Core/Particles.js +24 -25
  216. package/umd/Core/Utils/EventListeners.js +19 -18
  217. package/umd/Core/Utils/ExternalInteractorBase.js +3 -2
  218. package/umd/Core/Utils/InteractionManager.js +4 -3
  219. package/umd/Core/Utils/ParticlesInteractorBase.js +3 -2
  220. package/umd/Core/Utils/QuadTree.js +1 -1
  221. package/umd/Core/Utils/Ranges.js +6 -5
  222. package/umd/Enums/AnimationStatus.js +6 -0
  223. package/umd/Enums/Directions/MoveDirection.js +15 -0
  224. package/umd/Enums/Directions/OutModeDirection.js +8 -0
  225. package/umd/Enums/Directions/RotateDirection.js +7 -0
  226. package/umd/Enums/InteractivityDetect.js +7 -0
  227. package/umd/Enums/Modes/AnimationMode.js +8 -0
  228. package/umd/Enums/Modes/CollisionMode.js +7 -0
  229. package/umd/Enums/Modes/LimitMode.js +6 -0
  230. package/umd/Enums/Modes/OutMode.js +9 -0
  231. package/umd/Enums/Modes/PixelMode.js +6 -0
  232. package/umd/Enums/Modes/ResponsiveMode.js +6 -0
  233. package/umd/Enums/Modes/ThemeMode.js +7 -0
  234. package/umd/Enums/Types/AlterType.js +6 -0
  235. package/umd/Enums/Types/DestroyType.js +7 -0
  236. package/umd/Enums/Types/DivType.js +6 -0
  237. package/umd/Enums/Types/EasingType.js +31 -0
  238. package/umd/Enums/Types/EventType.js +16 -0
  239. package/umd/Enums/Types/GradientType.js +7 -0
  240. package/umd/Enums/Types/InteractorType.js +6 -0
  241. package/umd/Enums/Types/ParticleOutType.js +7 -0
  242. package/umd/Enums/Types/StartValueType.js +7 -0
  243. package/umd/Options/Classes/AnimationOptions.js +5 -3
  244. package/umd/Options/Classes/Interactivity/Events/DivEvent.js +3 -2
  245. package/umd/Options/Classes/Interactivity/Events/Events.js +1 -1
  246. package/umd/Options/Classes/Interactivity/Interactivity.js +3 -2
  247. package/umd/Options/Classes/ManualParticle.js +3 -2
  248. package/umd/Options/Classes/Options.js +15 -13
  249. package/umd/Options/Classes/Particles/Collisions/Collisions.js +3 -2
  250. package/umd/Options/Classes/Particles/Move/Move.js +3 -2
  251. package/umd/Options/Classes/Particles/Move/MoveCenter.js +3 -2
  252. package/umd/Options/Classes/Particles/Move/OutModes.js +3 -2
  253. package/umd/Options/Classes/Particles/Number/ParticlesNumberLimit.js +3 -2
  254. package/umd/Options/Classes/Particles/Opacity/OpacityAnimation.js +3 -2
  255. package/umd/Options/Classes/Particles/ParticlesOptions.js +1 -1
  256. package/umd/Options/Classes/Particles/Size/SizeAnimation.js +3 -2
  257. package/umd/Options/Classes/Responsive.js +6 -5
  258. package/umd/Options/Classes/Theme/ThemeDefault.js +3 -2
  259. package/umd/Types/RangeType.js +6 -0
  260. package/umd/Utils/CanvasUtils.js +25 -20
  261. package/umd/Utils/ColorUtils.js +38 -31
  262. package/umd/Utils/EventDispatcher.js +1 -1
  263. package/umd/Utils/HslColorManager.js +11 -4
  264. package/umd/Utils/NumberUtils.js +55 -39
  265. package/umd/Utils/OptionsUtils.js +2 -3
  266. package/umd/Utils/RgbColorManager.js +11 -4
  267. package/umd/Utils/TypeUtils.js +6 -7
  268. package/umd/Utils/Utils.js +67 -62
  269. package/umd/init.js +1 -2
  270. package/174.min.js +0 -2
  271. package/174.min.js.LICENSE.txt +0 -1
  272. package/dist_browser_Core_Container_js.js +0 -102
@@ -3,6 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HslColorManager = void 0;
4
4
  const NumberUtils_js_1 = require("./NumberUtils.js");
5
5
  const ColorUtils_js_1 = require("./ColorUtils.js");
6
+ var HslIndexes;
7
+ (function (HslIndexes) {
8
+ HslIndexes[HslIndexes["h"] = 1] = "h";
9
+ HslIndexes[HslIndexes["s"] = 2] = "s";
10
+ HslIndexes[HslIndexes["l"] = 3] = "l";
11
+ HslIndexes[HslIndexes["a"] = 5] = "a";
12
+ })(HslIndexes || (HslIndexes = {}));
6
13
  class HslColorManager {
7
14
  constructor() {
8
15
  this.key = "hsl";
@@ -31,10 +38,10 @@ class HslColorManager {
31
38
  const regex = /hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.%]+)\s*)?\)/i, result = regex.exec(input), minLength = 4, defaultAlpha = 1, radix = 10;
32
39
  return result
33
40
  ? (0, ColorUtils_js_1.hslaToRgba)({
34
- a: result.length > minLength ? (0, NumberUtils_js_1.parseAlpha)(result[5]) : defaultAlpha,
35
- h: parseInt(result[1], radix),
36
- l: parseInt(result[3], radix),
37
- s: parseInt(result[2], radix),
41
+ a: result.length > minLength ? (0, NumberUtils_js_1.parseAlpha)(result[HslIndexes.a]) : defaultAlpha,
42
+ h: parseInt(result[HslIndexes.h], radix),
43
+ l: parseInt(result[HslIndexes.l], radix),
44
+ s: parseInt(result[HslIndexes.s], radix),
38
45
  })
39
46
  : undefined;
40
47
  }
@@ -1,39 +1,72 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseAlpha = exports.calcExactPositionOrRandomFromSizeRanged = exports.calcExactPositionOrRandomFromSize = exports.calcPositionOrRandomFromSizeRanged = exports.calcPositionOrRandomFromSize = exports.calcPositionFromSize = exports.collisionVelocity = exports.getParticleBaseVelocity = exports.getParticleDirectionAngle = exports.degToRad = exports.getDistance = exports.getDistances = exports.setRangeValue = exports.getRangeMax = exports.getRangeMin = exports.getRangeValue = exports.randomInRange = exports.mix = exports.clamp = exports.getRandom = exports.setRandom = exports.getEasing = exports.addEasing = void 0;
3
+ exports.addEasing = addEasing;
4
+ exports.getEasing = getEasing;
5
+ exports.setRandom = setRandom;
6
+ exports.getRandom = getRandom;
7
+ exports.setAnimationFunctions = setAnimationFunctions;
8
+ exports.animate = animate;
9
+ exports.cancelAnimation = cancelAnimation;
10
+ exports.clamp = clamp;
11
+ exports.mix = mix;
12
+ exports.randomInRange = randomInRange;
13
+ exports.getRangeValue = getRangeValue;
14
+ exports.getRangeMin = getRangeMin;
15
+ exports.getRangeMax = getRangeMax;
16
+ exports.setRangeValue = setRangeValue;
17
+ exports.getDistances = getDistances;
18
+ exports.getDistance = getDistance;
19
+ exports.degToRad = degToRad;
20
+ exports.getParticleDirectionAngle = getParticleDirectionAngle;
21
+ exports.getParticleBaseVelocity = getParticleBaseVelocity;
22
+ exports.collisionVelocity = collisionVelocity;
23
+ exports.calcPositionFromSize = calcPositionFromSize;
24
+ exports.calcPositionOrRandomFromSize = calcPositionOrRandomFromSize;
25
+ exports.calcPositionOrRandomFromSizeRanged = calcPositionOrRandomFromSizeRanged;
26
+ exports.calcExactPositionOrRandomFromSize = calcExactPositionOrRandomFromSize;
27
+ exports.calcExactPositionOrRandomFromSizeRanged = calcExactPositionOrRandomFromSizeRanged;
28
+ exports.parseAlpha = parseAlpha;
29
+ const MoveDirection_js_1 = require("../Enums/Directions/MoveDirection.js");
4
30
  const Vectors_js_1 = require("../Core/Utils/Vectors.js");
5
31
  const TypeUtils_js_1 = require("./TypeUtils.js");
6
32
  const Constants_js_1 = require("../Core/Utils/Constants.js");
7
33
  let _random = Math.random;
8
- const easings = new Map(), double = 2, doublePI = Math.PI * double;
34
+ const _animationLoop = {
35
+ nextFrame: (cb) => requestAnimationFrame(cb),
36
+ cancel: (idx) => cancelAnimationFrame(idx),
37
+ }, easingFunctions = new Map(), double = 2, doublePI = Math.PI * double;
9
38
  function addEasing(name, easing) {
10
- if (easings.get(name)) {
39
+ if (easingFunctions.get(name)) {
11
40
  return;
12
41
  }
13
- easings.set(name, easing);
42
+ easingFunctions.set(name, easing);
14
43
  }
15
- exports.addEasing = addEasing;
16
44
  function getEasing(name) {
17
- return easings.get(name) ?? ((value) => value);
45
+ return easingFunctions.get(name) ?? ((value) => value);
18
46
  }
19
- exports.getEasing = getEasing;
20
47
  function setRandom(rnd = Math.random) {
21
48
  _random = rnd;
22
49
  }
23
- exports.setRandom = setRandom;
24
50
  function getRandom() {
25
51
  const min = 0, max = 1;
26
52
  return clamp(_random(), min, max - Number.EPSILON);
27
53
  }
28
- exports.getRandom = getRandom;
54
+ function setAnimationFunctions(nextFrame, cancel) {
55
+ _animationLoop.nextFrame = (callback) => nextFrame(callback);
56
+ _animationLoop.cancel = (handle) => cancel(handle);
57
+ }
58
+ function animate(fn) {
59
+ return _animationLoop.nextFrame(fn);
60
+ }
61
+ function cancelAnimation(handle) {
62
+ _animationLoop.cancel(handle);
63
+ }
29
64
  function clamp(num, min, max) {
30
65
  return Math.min(Math.max(num, min), max);
31
66
  }
32
- exports.clamp = clamp;
33
67
  function mix(comp1, comp2, weight1, weight2) {
34
68
  return Math.floor((comp1 * weight1 + comp2 * weight2) / (weight1 + weight2));
35
69
  }
36
- exports.mix = mix;
37
70
  function randomInRange(r) {
38
71
  const max = getRangeMax(r), minOffset = 0;
39
72
  let min = getRangeMin(r);
@@ -42,19 +75,15 @@ function randomInRange(r) {
42
75
  }
43
76
  return getRandom() * (max - min) + min;
44
77
  }
45
- exports.randomInRange = randomInRange;
46
78
  function getRangeValue(value) {
47
79
  return (0, TypeUtils_js_1.isNumber)(value) ? value : randomInRange(value);
48
80
  }
49
- exports.getRangeValue = getRangeValue;
50
81
  function getRangeMin(value) {
51
82
  return (0, TypeUtils_js_1.isNumber)(value) ? value : value.min;
52
83
  }
53
- exports.getRangeMin = getRangeMin;
54
84
  function getRangeMax(value) {
55
85
  return (0, TypeUtils_js_1.isNumber)(value) ? value : value.max;
56
86
  }
57
- exports.getRangeMax = getRangeMax;
58
87
  function setRangeValue(source, value) {
59
88
  if (source === value || (value === undefined && (0, TypeUtils_js_1.isNumber)(source))) {
60
89
  return source;
@@ -67,64 +96,57 @@ function setRangeValue(source, value) {
67
96
  }
68
97
  : setRangeValue(min, max);
69
98
  }
70
- exports.setRangeValue = setRangeValue;
71
99
  function getDistances(pointA, pointB) {
72
100
  const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y, squareExp = 2;
73
101
  return { dx: dx, dy: dy, distance: Math.sqrt(dx ** squareExp + dy ** squareExp) };
74
102
  }
75
- exports.getDistances = getDistances;
76
103
  function getDistance(pointA, pointB) {
77
104
  return getDistances(pointA, pointB).distance;
78
105
  }
79
- exports.getDistance = getDistance;
80
106
  function degToRad(degrees) {
81
107
  const PIDeg = 180;
82
108
  return (degrees * Math.PI) / PIDeg;
83
109
  }
84
- exports.degToRad = degToRad;
85
110
  function getParticleDirectionAngle(direction, position, center) {
86
111
  if ((0, TypeUtils_js_1.isNumber)(direction)) {
87
112
  return degToRad(direction);
88
113
  }
89
114
  const empty = 0, half = 0.5, quarter = 0.25, threeQuarter = half + quarter;
90
115
  switch (direction) {
91
- case "top":
116
+ case MoveDirection_js_1.MoveDirection.top:
92
117
  return -Math.PI * half;
93
- case "top-right":
118
+ case MoveDirection_js_1.MoveDirection.topRight:
94
119
  return -Math.PI * quarter;
95
- case "right":
120
+ case MoveDirection_js_1.MoveDirection.right:
96
121
  return empty;
97
- case "bottom-right":
122
+ case MoveDirection_js_1.MoveDirection.bottomRight:
98
123
  return Math.PI * quarter;
99
- case "bottom":
124
+ case MoveDirection_js_1.MoveDirection.bottom:
100
125
  return Math.PI * half;
101
- case "bottom-left":
126
+ case MoveDirection_js_1.MoveDirection.bottomLeft:
102
127
  return Math.PI * threeQuarter;
103
- case "left":
128
+ case MoveDirection_js_1.MoveDirection.left:
104
129
  return Math.PI;
105
- case "top-left":
130
+ case MoveDirection_js_1.MoveDirection.topLeft:
106
131
  return -Math.PI * threeQuarter;
107
- case "inside":
132
+ case MoveDirection_js_1.MoveDirection.inside:
108
133
  return Math.atan2(center.y - position.y, center.x - position.x);
109
- case "outside":
134
+ case MoveDirection_js_1.MoveDirection.outside:
110
135
  return Math.atan2(position.y - center.y, position.x - center.x);
111
136
  default:
112
137
  return getRandom() * doublePI;
113
138
  }
114
139
  }
115
- exports.getParticleDirectionAngle = getParticleDirectionAngle;
116
140
  function getParticleBaseVelocity(direction) {
117
141
  const baseVelocity = Vectors_js_1.Vector.origin;
118
142
  baseVelocity.length = 1;
119
143
  baseVelocity.angle = direction;
120
144
  return baseVelocity;
121
145
  }
122
- exports.getParticleBaseVelocity = getParticleBaseVelocity;
123
146
  function collisionVelocity(v1, v2, m1, m2) {
124
147
  const double = 2;
125
148
  return Vectors_js_1.Vector.create((v1.x * (m1 - m2)) / (m1 + m2) + (v2.x * double * m2) / (m1 + m2), v1.y);
126
149
  }
127
- exports.collisionVelocity = collisionVelocity;
128
150
  function calcPositionFromSize(data) {
129
151
  return data.position?.x !== undefined && data.position.y !== undefined
130
152
  ? {
@@ -133,14 +155,12 @@ function calcPositionFromSize(data) {
133
155
  }
134
156
  : undefined;
135
157
  }
136
- exports.calcPositionFromSize = calcPositionFromSize;
137
158
  function calcPositionOrRandomFromSize(data) {
138
159
  return {
139
160
  x: ((data.position?.x ?? getRandom() * Constants_js_1.percentDenominator) * data.size.width) / Constants_js_1.percentDenominator,
140
161
  y: ((data.position?.y ?? getRandom() * Constants_js_1.percentDenominator) * data.size.height) / Constants_js_1.percentDenominator,
141
162
  };
142
163
  }
143
- exports.calcPositionOrRandomFromSize = calcPositionOrRandomFromSize;
144
164
  function calcPositionOrRandomFromSizeRanged(data) {
145
165
  const position = {
146
166
  x: data.position?.x !== undefined ? getRangeValue(data.position.x) : undefined,
@@ -148,14 +168,12 @@ function calcPositionOrRandomFromSizeRanged(data) {
148
168
  };
149
169
  return calcPositionOrRandomFromSize({ size: data.size, position });
150
170
  }
151
- exports.calcPositionOrRandomFromSizeRanged = calcPositionOrRandomFromSizeRanged;
152
171
  function calcExactPositionOrRandomFromSize(data) {
153
172
  return {
154
173
  x: data.position?.x ?? getRandom() * data.size.width,
155
174
  y: data.position?.y ?? getRandom() * data.size.height,
156
175
  };
157
176
  }
158
- exports.calcExactPositionOrRandomFromSize = calcExactPositionOrRandomFromSize;
159
177
  function calcExactPositionOrRandomFromSizeRanged(data) {
160
178
  const position = {
161
179
  x: data.position?.x !== undefined ? getRangeValue(data.position.x) : undefined,
@@ -163,7 +181,6 @@ function calcExactPositionOrRandomFromSizeRanged(data) {
163
181
  };
164
182
  return calcExactPositionOrRandomFromSize({ size: data.size, position });
165
183
  }
166
- exports.calcExactPositionOrRandomFromSizeRanged = calcExactPositionOrRandomFromSizeRanged;
167
184
  function parseAlpha(input) {
168
185
  const defaultAlpha = 1;
169
186
  if (!input) {
@@ -171,4 +188,3 @@ function parseAlpha(input) {
171
188
  }
172
189
  return input.endsWith("%") ? parseFloat(input) / Constants_js_1.percentDenominator : parseFloat(input);
173
190
  }
174
- exports.parseAlpha = parseAlpha;
@@ -1,16 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadParticlesOptions = exports.loadOptions = void 0;
3
+ exports.loadOptions = loadOptions;
4
+ exports.loadParticlesOptions = loadParticlesOptions;
4
5
  const ParticlesOptions_js_1 = require("../Options/Classes/Particles/ParticlesOptions.js");
5
6
  function loadOptions(options, ...sourceOptionsArr) {
6
7
  for (const sourceOptions of sourceOptionsArr) {
7
8
  options.load(sourceOptions);
8
9
  }
9
10
  }
10
- exports.loadOptions = loadOptions;
11
11
  function loadParticlesOptions(engine, container, ...sourceOptionsArr) {
12
12
  const options = new ParticlesOptions_js_1.ParticlesOptions(engine, container);
13
13
  loadOptions(options, ...sourceOptionsArr);
14
14
  return options;
15
15
  }
16
- exports.loadParticlesOptions = loadParticlesOptions;
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RgbColorManager = void 0;
4
4
  const NumberUtils_js_1 = require("./NumberUtils.js");
5
+ var RgbIndexes;
6
+ (function (RgbIndexes) {
7
+ RgbIndexes[RgbIndexes["r"] = 1] = "r";
8
+ RgbIndexes[RgbIndexes["g"] = 2] = "g";
9
+ RgbIndexes[RgbIndexes["b"] = 3] = "b";
10
+ RgbIndexes[RgbIndexes["a"] = 5] = "a";
11
+ })(RgbIndexes || (RgbIndexes = {}));
5
12
  class RgbColorManager {
6
13
  constructor() {
7
14
  this.key = "rgb";
@@ -30,10 +37,10 @@ class RgbColorManager {
30
37
  const regex = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.%]+)\s*)?\)/i, result = regex.exec(input), radix = 10, minLength = 4, defaultAlpha = 1;
31
38
  return result
32
39
  ? {
33
- a: result.length > minLength ? (0, NumberUtils_js_1.parseAlpha)(result[5]) : defaultAlpha,
34
- b: parseInt(result[3], radix),
35
- g: parseInt(result[2], radix),
36
- r: parseInt(result[1], radix),
40
+ a: result.length > minLength ? (0, NumberUtils_js_1.parseAlpha)(result[RgbIndexes.a]) : defaultAlpha,
41
+ b: parseInt(result[RgbIndexes.b], radix),
42
+ g: parseInt(result[RgbIndexes.g], radix),
43
+ r: parseInt(result[RgbIndexes.r], radix),
37
44
  }
38
45
  : undefined;
39
46
  }
@@ -1,27 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isArray = exports.isObject = exports.isFunction = exports.isNumber = exports.isString = exports.isBoolean = void 0;
3
+ exports.isBoolean = isBoolean;
4
+ exports.isString = isString;
5
+ exports.isNumber = isNumber;
6
+ exports.isFunction = isFunction;
7
+ exports.isObject = isObject;
8
+ exports.isArray = isArray;
4
9
  function isBoolean(arg) {
5
10
  return typeof arg === "boolean";
6
11
  }
7
- exports.isBoolean = isBoolean;
8
12
  function isString(arg) {
9
13
  return typeof arg === "string";
10
14
  }
11
- exports.isString = isString;
12
15
  function isNumber(arg) {
13
16
  return typeof arg === "number";
14
17
  }
15
- exports.isNumber = isNumber;
16
18
  function isFunction(arg) {
17
19
  return typeof arg === "function";
18
20
  }
19
- exports.isFunction = isFunction;
20
21
  function isObject(arg) {
21
22
  return typeof arg === "object" && arg !== null;
22
23
  }
23
- exports.isObject = isObject;
24
24
  function isArray(arg) {
25
25
  return Array.isArray(arg);
26
26
  }
27
- exports.isArray = isArray;