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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/155.min.js +1 -0
  2. package/README.md +41 -28
  3. package/browser/Core/CanvasManager.js +303 -0
  4. package/browser/Core/Container.js +134 -101
  5. package/browser/Core/Engine.js +29 -162
  6. package/browser/Core/Particle.js +197 -183
  7. package/browser/Core/ParticlesManager.js +363 -0
  8. package/browser/Core/RenderManager.js +303 -0
  9. package/browser/Core/Retina.js +6 -6
  10. package/browser/Core/Utils/Constants.js +2 -2
  11. package/browser/Core/Utils/EventListeners.js +67 -63
  12. package/browser/Core/Utils/PluginManager.js +145 -0
  13. package/browser/Core/Utils/Ranges.js +29 -10
  14. package/browser/Core/Utils/SpatialHashGrid.js +102 -0
  15. package/browser/Core/Utils/Vectors.js +17 -18
  16. package/browser/Options/Classes/AnimatableColor.js +1 -0
  17. package/browser/Options/Classes/AnimationOptions.js +8 -0
  18. package/browser/Options/Classes/Background/Background.js +6 -0
  19. package/browser/Options/Classes/ColorAnimation.js +12 -1
  20. package/browser/Options/Classes/FullScreen/FullScreen.js +2 -0
  21. package/browser/Options/Classes/HslAnimation.js +4 -5
  22. package/browser/Options/Classes/Options.js +67 -8
  23. package/browser/Options/Classes/OptionsColor.js +1 -0
  24. package/browser/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  25. package/browser/Options/Classes/Particles/Effect/Effect.js +3 -4
  26. package/browser/Options/Classes/Particles/Fill.js +28 -0
  27. package/browser/Options/Classes/Particles/Move/Move.js +17 -3
  28. package/browser/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  29. package/browser/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  30. package/browser/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  31. package/browser/Options/Classes/Particles/Move/OutModes.js +5 -0
  32. package/browser/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  33. package/browser/Options/Classes/Particles/Move/Spin.js +3 -0
  34. package/browser/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  35. package/browser/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  36. package/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  37. package/browser/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  38. package/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  39. package/browser/Options/Classes/Particles/ParticlesOptions.js +29 -9
  40. package/browser/Options/Classes/Particles/Shape/Shape.js +3 -4
  41. package/browser/Options/Classes/Particles/Size/Size.js +1 -0
  42. package/browser/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  43. package/browser/Options/Classes/Particles/Stroke.js +3 -0
  44. package/browser/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  45. package/browser/Options/Classes/ResizeEvent.js +2 -0
  46. package/browser/Options/Classes/ValueWithRandom.js +3 -4
  47. package/browser/Utils/CanvasUtils.js +44 -51
  48. package/browser/Utils/ColorUtils.js +51 -40
  49. package/browser/Utils/EventDispatcher.js +1 -0
  50. package/browser/Utils/LogUtils.js +1 -0
  51. package/browser/Utils/MathUtils.js +12 -7
  52. package/browser/Utils/OptionsUtils.js +2 -2
  53. package/browser/Utils/Utils.js +109 -31
  54. package/browser/exports.js +1 -2
  55. package/cjs/Core/CanvasManager.js +303 -0
  56. package/cjs/Core/Container.js +134 -101
  57. package/cjs/Core/Engine.js +29 -162
  58. package/cjs/Core/Particle.js +197 -183
  59. package/cjs/Core/ParticlesManager.js +363 -0
  60. package/cjs/Core/RenderManager.js +303 -0
  61. package/cjs/Core/Retina.js +6 -6
  62. package/cjs/Core/Utils/Constants.js +2 -2
  63. package/cjs/Core/Utils/EventListeners.js +67 -63
  64. package/cjs/Core/Utils/PluginManager.js +145 -0
  65. package/cjs/Core/Utils/Ranges.js +29 -10
  66. package/cjs/Core/Utils/SpatialHashGrid.js +102 -0
  67. package/cjs/Core/Utils/Vectors.js +17 -18
  68. package/cjs/Options/Classes/AnimatableColor.js +1 -0
  69. package/cjs/Options/Classes/AnimationOptions.js +8 -0
  70. package/cjs/Options/Classes/Background/Background.js +6 -0
  71. package/cjs/Options/Classes/ColorAnimation.js +12 -1
  72. package/cjs/Options/Classes/FullScreen/FullScreen.js +2 -0
  73. package/cjs/Options/Classes/HslAnimation.js +4 -5
  74. package/cjs/Options/Classes/Options.js +67 -8
  75. package/cjs/Options/Classes/OptionsColor.js +1 -0
  76. package/cjs/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  77. package/cjs/Options/Classes/Particles/Effect/Effect.js +3 -4
  78. package/cjs/Options/Classes/Particles/Fill.js +28 -0
  79. package/cjs/Options/Classes/Particles/Move/Move.js +17 -3
  80. package/cjs/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  81. package/cjs/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  82. package/cjs/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  83. package/cjs/Options/Classes/Particles/Move/OutModes.js +5 -0
  84. package/cjs/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  85. package/cjs/Options/Classes/Particles/Move/Spin.js +3 -0
  86. package/cjs/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  87. package/cjs/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  88. package/cjs/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  89. package/cjs/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  90. package/cjs/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  91. package/cjs/Options/Classes/Particles/ParticlesOptions.js +29 -9
  92. package/cjs/Options/Classes/Particles/Shape/Shape.js +3 -4
  93. package/cjs/Options/Classes/Particles/Size/Size.js +1 -0
  94. package/cjs/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  95. package/cjs/Options/Classes/Particles/Stroke.js +3 -0
  96. package/cjs/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  97. package/cjs/Options/Classes/ResizeEvent.js +2 -0
  98. package/cjs/Options/Classes/ValueWithRandom.js +3 -4
  99. package/cjs/Utils/CanvasUtils.js +44 -51
  100. package/cjs/Utils/ColorUtils.js +51 -40
  101. package/cjs/Utils/EventDispatcher.js +1 -0
  102. package/cjs/Utils/LogUtils.js +1 -0
  103. package/cjs/Utils/MathUtils.js +12 -7
  104. package/cjs/Utils/OptionsUtils.js +2 -2
  105. package/cjs/Utils/Utils.js +109 -31
  106. package/cjs/exports.js +1 -2
  107. package/dist_browser_Core_Container_js.js +30 -20
  108. package/esm/Core/CanvasManager.js +303 -0
  109. package/esm/Core/Container.js +134 -101
  110. package/esm/Core/Engine.js +29 -162
  111. package/esm/Core/Particle.js +197 -183
  112. package/esm/Core/ParticlesManager.js +363 -0
  113. package/esm/Core/RenderManager.js +303 -0
  114. package/esm/Core/Retina.js +6 -6
  115. package/esm/Core/Utils/Constants.js +2 -2
  116. package/esm/Core/Utils/EventListeners.js +67 -63
  117. package/esm/Core/Utils/PluginManager.js +145 -0
  118. package/esm/Core/Utils/Ranges.js +29 -10
  119. package/esm/Core/Utils/SpatialHashGrid.js +102 -0
  120. package/esm/Core/Utils/Vectors.js +17 -18
  121. package/esm/Options/Classes/AnimatableColor.js +1 -0
  122. package/esm/Options/Classes/AnimationOptions.js +8 -0
  123. package/esm/Options/Classes/Background/Background.js +6 -0
  124. package/esm/Options/Classes/ColorAnimation.js +12 -1
  125. package/esm/Options/Classes/FullScreen/FullScreen.js +2 -0
  126. package/esm/Options/Classes/HslAnimation.js +4 -5
  127. package/esm/Options/Classes/Options.js +67 -8
  128. package/esm/Options/Classes/OptionsColor.js +1 -0
  129. package/esm/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  130. package/esm/Options/Classes/Particles/Effect/Effect.js +3 -4
  131. package/esm/Options/Classes/Particles/Fill.js +28 -0
  132. package/esm/Options/Classes/Particles/Move/Move.js +17 -3
  133. package/esm/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  134. package/esm/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  135. package/esm/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  136. package/esm/Options/Classes/Particles/Move/OutModes.js +5 -0
  137. package/esm/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  138. package/esm/Options/Classes/Particles/Move/Spin.js +3 -0
  139. package/esm/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  140. package/esm/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  141. package/esm/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  142. package/esm/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  143. package/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  144. package/esm/Options/Classes/Particles/ParticlesOptions.js +29 -9
  145. package/esm/Options/Classes/Particles/Shape/Shape.js +3 -4
  146. package/esm/Options/Classes/Particles/Size/Size.js +1 -0
  147. package/esm/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  148. package/esm/Options/Classes/Particles/Stroke.js +3 -0
  149. package/esm/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  150. package/esm/Options/Classes/ResizeEvent.js +2 -0
  151. package/esm/Options/Classes/ValueWithRandom.js +3 -4
  152. package/esm/Utils/CanvasUtils.js +44 -51
  153. package/esm/Utils/ColorUtils.js +51 -40
  154. package/esm/Utils/EventDispatcher.js +1 -0
  155. package/esm/Utils/LogUtils.js +1 -0
  156. package/esm/Utils/MathUtils.js +12 -7
  157. package/esm/Utils/OptionsUtils.js +2 -2
  158. package/esm/Utils/Utils.js +109 -31
  159. package/esm/exports.js +1 -2
  160. package/package.json +1 -1
  161. package/report.html +84 -29
  162. package/scripts/install.js +4 -20
  163. package/tsparticles.engine.js +98 -86
  164. package/tsparticles.engine.min.js +2 -2
  165. package/types/Core/CanvasManager.d.ts +39 -0
  166. package/types/Core/Container.d.ts +29 -14
  167. package/types/Core/Engine.d.ts +2 -61
  168. package/types/Core/Interfaces/IColorManager.d.ts +0 -1
  169. package/types/Core/Interfaces/IContainerPlugin.d.ts +10 -8
  170. package/types/Core/Interfaces/IDrawParticleParams.d.ts +2 -1
  171. package/types/Core/Interfaces/IPalette.d.ts +7 -0
  172. package/types/Core/Interfaces/IParticleOpacityData.d.ts +1 -0
  173. package/types/Core/Interfaces/IParticleRetinaProps.d.ts +4 -4
  174. package/types/Core/Interfaces/IParticleUpdater.d.ts +2 -1
  175. package/types/Core/Interfaces/IParticleValueAnimation.d.ts +3 -3
  176. package/types/Core/Interfaces/IShapeDrawData.d.ts +10 -1
  177. package/types/Core/Interfaces/IShapeDrawer.d.ts +0 -1
  178. package/types/Core/Interfaces/IShapeValues.d.ts +0 -1
  179. package/types/Core/Particle.d.ts +7 -11
  180. package/types/Core/{Particles.d.ts → ParticlesManager.d.ts} +15 -14
  181. package/types/Core/RenderManager.d.ts +49 -0
  182. package/types/Core/Retina.d.ts +0 -2
  183. package/types/Core/Utils/Constants.d.ts +2 -2
  184. package/types/Core/Utils/PluginManager.d.ts +62 -0
  185. package/types/Core/Utils/Ranges.d.ts +4 -1
  186. package/types/Core/Utils/SpatialHashGrid.d.ts +25 -0
  187. package/types/Core/Utils/Vectors.d.ts +8 -10
  188. package/types/Options/Classes/ColorAnimation.d.ts +3 -1
  189. package/types/Options/Classes/HslAnimation.d.ts +3 -4
  190. package/types/Options/Classes/Options.d.ts +5 -3
  191. package/types/Options/Classes/Particles/Effect/Effect.d.ts +0 -1
  192. package/types/Options/Classes/Particles/Fill.d.ts +12 -0
  193. package/types/Options/Classes/Particles/Move/Move.d.ts +0 -2
  194. package/types/Options/Classes/Particles/ParticlesOptions.d.ts +5 -5
  195. package/types/Options/Classes/Particles/Shape/Shape.d.ts +0 -1
  196. package/types/Options/Classes/ValueWithRandom.d.ts +0 -1
  197. package/types/Options/Interfaces/IColorAnimation.d.ts +2 -0
  198. package/types/Options/Interfaces/IOptions.d.ts +1 -0
  199. package/types/Options/Interfaces/Particles/Effect/IEffect.d.ts +0 -1
  200. package/types/Options/Interfaces/Particles/IFill.d.ts +9 -0
  201. package/types/Options/Interfaces/Particles/IParticlesOptions.d.ts +2 -2
  202. package/types/Options/Interfaces/Particles/IStroke.d.ts +2 -2
  203. package/types/Options/Interfaces/Particles/Move/IMove.d.ts +0 -2
  204. package/types/Options/Interfaces/Particles/Shape/IShape.d.ts +0 -1
  205. package/types/Types/CanvasContextType.d.ts +1 -0
  206. package/types/Types/EngineInitializers.d.ts +6 -3
  207. package/types/Utils/CanvasUtils.d.ts +13 -16
  208. package/types/Utils/ColorUtils.d.ts +11 -10
  209. package/types/Utils/LogUtils.d.ts +1 -0
  210. package/types/Utils/MathUtils.d.ts +2 -0
  211. package/types/Utils/OptionsUtils.d.ts +2 -2
  212. package/types/Utils/Utils.d.ts +8 -1
  213. package/types/export-types.d.ts +7 -7
  214. package/types/exports.d.ts +1 -2
  215. package/umd/Core/CanvasManager.js +317 -0
  216. package/umd/Core/Container.js +134 -101
  217. package/umd/Core/Engine.js +28 -161
  218. package/umd/Core/Particle.js +198 -184
  219. package/umd/Core/{Particles.js → ParticlesManager.js} +186 -167
  220. package/umd/Core/RenderManager.js +317 -0
  221. package/umd/Core/Retina.js +6 -6
  222. package/umd/Core/Utils/Constants.js +3 -3
  223. package/umd/Core/Utils/EventListeners.js +67 -63
  224. package/umd/Core/Utils/PluginManager.js +159 -0
  225. package/umd/Core/Utils/Ranges.js +28 -9
  226. package/umd/Core/Utils/SpatialHashGrid.js +116 -0
  227. package/umd/Core/Utils/Vectors.js +17 -18
  228. package/umd/Options/Classes/AnimatableColor.js +1 -0
  229. package/umd/Options/Classes/AnimationOptions.js +8 -0
  230. package/umd/Options/Classes/Background/Background.js +6 -0
  231. package/umd/Options/Classes/ColorAnimation.js +12 -1
  232. package/umd/Options/Classes/FullScreen/FullScreen.js +2 -0
  233. package/umd/Options/Classes/HslAnimation.js +5 -6
  234. package/umd/Options/Classes/Options.js +67 -8
  235. package/umd/Options/Classes/OptionsColor.js +1 -0
  236. package/umd/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -0
  237. package/umd/Options/Classes/Particles/Effect/Effect.js +3 -4
  238. package/umd/Options/Classes/Particles/Fill.js +42 -0
  239. package/umd/Options/Classes/Particles/Move/Move.js +18 -4
  240. package/umd/Options/Classes/Particles/Move/MoveAngle.js +2 -0
  241. package/umd/Options/Classes/Particles/Move/MoveCenter.js +4 -0
  242. package/umd/Options/Classes/Particles/Move/MoveGravity.js +4 -0
  243. package/umd/Options/Classes/Particles/Move/OutModes.js +5 -0
  244. package/umd/Options/Classes/Particles/Move/Path/MovePath.js +5 -0
  245. package/umd/Options/Classes/Particles/Move/Spin.js +3 -0
  246. package/umd/Options/Classes/Particles/Number/ParticlesDensity.js +3 -0
  247. package/umd/Options/Classes/Particles/Number/ParticlesNumber.js +3 -0
  248. package/umd/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -0
  249. package/umd/Options/Classes/Particles/Opacity/Opacity.js +1 -0
  250. package/umd/Options/Classes/Particles/Opacity/OpacityAnimation.js +1 -0
  251. package/umd/Options/Classes/Particles/ParticlesOptions.js +30 -10
  252. package/umd/Options/Classes/Particles/Shape/Shape.js +3 -4
  253. package/umd/Options/Classes/Particles/Size/Size.js +1 -0
  254. package/umd/Options/Classes/Particles/Size/SizeAnimation.js +1 -0
  255. package/umd/Options/Classes/Particles/Stroke.js +3 -0
  256. package/umd/Options/Classes/Particles/ZIndex/ZIndex.js +3 -0
  257. package/umd/Options/Classes/ResizeEvent.js +2 -0
  258. package/umd/Options/Classes/ValueWithRandom.js +3 -4
  259. package/umd/Utils/CanvasUtils.js +44 -53
  260. package/umd/Utils/ColorUtils.js +51 -39
  261. package/umd/Utils/EventDispatcher.js +1 -0
  262. package/umd/Utils/LogUtils.js +1 -0
  263. package/umd/Utils/MathUtils.js +14 -7
  264. package/umd/Utils/OptionsUtils.js +2 -2
  265. package/umd/Utils/Utils.js +111 -32
  266. package/umd/exports.js +2 -3
  267. package/794.min.js +0 -2
  268. package/794.min.js.LICENSE.txt +0 -1
  269. package/browser/Core/Canvas.js +0 -469
  270. package/browser/Core/Particles.js +0 -344
  271. package/browser/Core/Utils/Point.js +0 -6
  272. package/browser/Core/Utils/QuadTree.js +0 -59
  273. package/browser/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  274. package/cjs/Core/Canvas.js +0 -469
  275. package/cjs/Core/Particles.js +0 -344
  276. package/cjs/Core/Utils/Point.js +0 -6
  277. package/cjs/Core/Utils/QuadTree.js +0 -59
  278. package/cjs/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  279. package/esm/Core/Canvas.js +0 -469
  280. package/esm/Core/Particles.js +0 -344
  281. package/esm/Core/Utils/Point.js +0 -6
  282. package/esm/Core/Utils/QuadTree.js +0 -59
  283. package/esm/Options/Classes/Particles/Move/MoveAttract.js +0 -33
  284. package/tsparticles.engine.min.js.LICENSE.txt +0 -1
  285. package/types/Core/Canvas.d.ts +0 -55
  286. package/types/Core/Interfaces/IMovePathGenerator.d.ts +0 -10
  287. package/types/Core/Interfaces/IParticleMover.d.ts +0 -7
  288. package/types/Core/Utils/Point.d.ts +0 -7
  289. package/types/Core/Utils/QuadTree.d.ts +0 -18
  290. package/types/Options/Classes/Particles/Move/MoveAttract.d.ts +0 -12
  291. package/types/Options/Interfaces/Particles/Move/IMoveAttract.d.ts +0 -7
  292. package/umd/Core/Canvas.js +0 -483
  293. package/umd/Core/Utils/Point.js +0 -20
  294. package/umd/Core/Utils/QuadTree.js +0 -73
  295. package/umd/Options/Classes/Particles/Move/MoveAttract.js +0 -47
  296. /package/browser/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  297. /package/browser/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  298. /package/browser/{Options/Interfaces/Particles/Move/IMoveAttract.js → Types/CanvasContextType.js} +0 -0
  299. /package/cjs/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  300. /package/cjs/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  301. /package/cjs/{Options/Interfaces/Particles/Move/IMoveAttract.js → Types/CanvasContextType.js} +0 -0
  302. /package/esm/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  303. /package/esm/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  304. /package/esm/{Options/Interfaces/Particles/Move/IMoveAttract.js → Types/CanvasContextType.js} +0 -0
  305. /package/umd/Core/Interfaces/{IMovePathGenerator.js → IPalette.js} +0 -0
  306. /package/umd/{Core/Interfaces/IParticleMover.js → Options/Interfaces/Particles/IFill.js} +0 -0
  307. /package/umd/{Options/Interfaces/Particles/Move/IMoveAttract.js → Types/CanvasContextType.js} +0 -0
@@ -4,35 +4,32 @@
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/MathUtils.js", "./Utils/Constants.js", "../Utils/Utils.js", "../Enums/Types/EventType.js", "../Enums/Directions/MoveDirection.js", "../Enums/Modes/OutMode.js", "../Enums/Types/ParticleOutType.js", "../Utils/CanvasUtils.js", "../Utils/ColorUtils.js", "../Utils/OptionsUtils.js"], factory);
7
+ define(["require", "exports", "./Utils/Vectors.js", "../Utils/ColorUtils.js", "../Utils/MathUtils.js", "../Utils/Utils.js", "./Utils/Constants.js", "../Enums/Types/EventType.js", "../Enums/Directions/MoveDirection.js", "../Enums/Modes/OutMode.js", "../Enums/Types/ParticleOutType.js", "../Utils/OptionsUtils.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Particle = void 0;
13
13
  const Vectors_js_1 = require("./Utils/Vectors.js");
14
+ const ColorUtils_js_1 = require("../Utils/ColorUtils.js");
14
15
  const MathUtils_js_1 = require("../Utils/MathUtils.js");
15
- const Constants_js_1 = require("./Utils/Constants.js");
16
16
  const Utils_js_1 = require("../Utils/Utils.js");
17
+ const Constants_js_1 = require("./Utils/Constants.js");
17
18
  const EventType_js_1 = require("../Enums/Types/EventType.js");
18
19
  const MoveDirection_js_1 = require("../Enums/Directions/MoveDirection.js");
19
20
  const OutMode_js_1 = require("../Enums/Modes/OutMode.js");
20
21
  const ParticleOutType_js_1 = require("../Enums/Types/ParticleOutType.js");
21
- const CanvasUtils_js_1 = require("../Utils/CanvasUtils.js");
22
- const ColorUtils_js_1 = require("../Utils/ColorUtils.js");
23
22
  const OptionsUtils_js_1 = require("../Utils/OptionsUtils.js");
24
23
  function loadEffectData(effect, effectOptions, id, reduceDuplicates) {
25
24
  const effectData = effectOptions.options[effect];
26
25
  return (0, Utils_js_1.deepExtend)({
27
26
  close: effectOptions.close,
28
- fill: effectOptions.fill,
29
27
  }, (0, Utils_js_1.itemFromSingleOrMultiple)(effectData, id, reduceDuplicates));
30
28
  }
31
29
  function loadShapeData(shape, shapeOptions, id, reduceDuplicates) {
32
30
  const shapeData = shapeOptions.options[shape];
33
31
  return (0, Utils_js_1.deepExtend)({
34
32
  close: shapeOptions.close,
35
- fill: shapeOptions.fill,
36
33
  }, (0, Utils_js_1.itemFromSingleOrMultiple)(shapeData, id, reduceDuplicates));
37
34
  }
38
35
  function fixOutMode(data) {
@@ -48,131 +45,66 @@
48
45
  }
49
46
  }
50
47
  class Particle {
51
- constructor(engine, container) {
52
- this.container = container;
53
- this._cachedOpacityData = {
54
- opacity: Constants_js_1.defaultOpacity,
55
- strokeOpacity: Constants_js_1.defaultOpacity,
56
- };
57
- this._cachedPosition = Vectors_js_1.Vector3d.origin;
58
- this._cachedRotateData = { sin: 0, cos: 0 };
59
- this._cachedTransform = {
60
- a: 1,
61
- b: 0,
62
- c: 0,
63
- d: 1,
64
- };
65
- this._calcPosition = (position, zIndex) => {
66
- let tryCount = Constants_js_1.defaultRetryCount, posVec = position ? Vectors_js_1.Vector3d.create(position.x, position.y, zIndex) : undefined;
67
- const container = this.container, plugins = Array.from(container.plugins), outModes = this.options.move.outModes, radius = this.getRadius(), canvasSize = container.canvas.size, abortController = new AbortController(), { signal } = abortController;
68
- while (!signal.aborted) {
69
- for (const plugin of plugins) {
70
- const pluginPos = plugin.particlePosition?.(posVec, this);
71
- if (pluginPos) {
72
- return Vectors_js_1.Vector3d.create(pluginPos.x, pluginPos.y, zIndex);
73
- }
74
- }
75
- const exactPosition = (0, MathUtils_js_1.calcExactPositionOrRandomFromSize)({
76
- size: canvasSize,
77
- position: posVec,
78
- }), pos = Vectors_js_1.Vector3d.create(exactPosition.x, exactPosition.y, zIndex);
79
- this._fixHorizontal(pos, radius, outModes.left ?? outModes.default);
80
- this._fixHorizontal(pos, radius, outModes.right ?? outModes.default);
81
- this._fixVertical(pos, radius, outModes.top ?? outModes.default);
82
- this._fixVertical(pos, radius, outModes.bottom ?? outModes.default);
83
- let isValidPosition = true;
84
- for (const plugin of plugins) {
85
- isValidPosition = plugin.checkParticlePosition?.(this, pos, tryCount) ?? true;
86
- if (!isValidPosition) {
87
- break;
88
- }
89
- }
90
- if (isValidPosition) {
91
- return pos;
92
- }
93
- tryCount += Constants_js_1.tryCountIncrement;
94
- posVec = undefined;
95
- }
96
- return posVec;
97
- };
98
- this._calculateVelocity = () => {
99
- const baseVelocity = (0, MathUtils_js_1.getParticleBaseVelocity)(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move;
100
- if (moveOptions.direction === MoveDirection_js_1.MoveDirection.inside || moveOptions.direction === MoveDirection_js_1.MoveDirection.outside) {
101
- return res;
102
- }
103
- const rad = (0, MathUtils_js_1.degToRad)((0, MathUtils_js_1.getRangeValue)(moveOptions.angle.value)), radOffset = (0, MathUtils_js_1.degToRad)((0, MathUtils_js_1.getRangeValue)(moveOptions.angle.offset)), range = {
104
- left: radOffset - rad * Constants_js_1.half,
105
- right: radOffset + rad * Constants_js_1.half,
106
- };
107
- if (!moveOptions.straight) {
108
- res.angle += (0, MathUtils_js_1.randomInRangeValue)((0, MathUtils_js_1.setRangeValue)(range.left, range.right));
109
- }
110
- if (moveOptions.random && typeof moveOptions.speed === "number") {
111
- res.length *= (0, MathUtils_js_1.getRandom)();
112
- }
113
- return res;
114
- };
115
- this._fixHorizontal = (pos, radius, outMode) => {
116
- fixOutMode({
117
- outMode,
118
- checkModes: [OutMode_js_1.OutMode.bounce],
119
- coord: pos.x,
120
- maxCoord: this.container.canvas.size.width,
121
- setCb: (value) => (pos.x += value),
122
- radius,
123
- });
124
- };
125
- this._fixVertical = (pos, radius, outMode) => {
126
- fixOutMode({
127
- outMode,
128
- checkModes: [OutMode_js_1.OutMode.bounce],
129
- coord: pos.y,
130
- maxCoord: this.container.canvas.size.height,
131
- setCb: (value) => (pos.y += value),
132
- radius,
133
- });
134
- };
135
- this._getRollColor = color => {
136
- if (!color || !this.roll || (!this.backColor && !this.roll.alter)) {
137
- return color;
138
- }
139
- if (!this.isShowingBack()) {
140
- return color;
141
- }
142
- if (this.backColor) {
143
- return this.backColor;
144
- }
145
- if (this.roll.alter) {
146
- return (0, CanvasUtils_js_1.alterHsl)(color, this.roll.alter.type, this.roll.alter.value);
147
- }
148
- return color;
149
- };
150
- this._initPosition = position => {
151
- const container = this.container, zIndexValue = (0, MathUtils_js_1.getRangeValue)(this.options.zIndex.value);
152
- const initialPosition = this._calcPosition(position, (0, MathUtils_js_1.clamp)(zIndexValue, Constants_js_1.minZ, container.zLayers));
153
- if (!initialPosition) {
154
- throw new Error("a valid position cannot be found for particle");
155
- }
156
- this.position = initialPosition;
157
- this.initialPosition = this.position.copy();
158
- const canvasSize = container.canvas.size;
159
- this.moveCenter = {
160
- ...(0, Utils_js_1.getPosition)(this.options.move.center, canvasSize),
161
- radius: this.options.move.center.radius,
162
- mode: this.options.move.center.mode,
163
- };
164
- this.direction = (0, MathUtils_js_1.getParticleDirectionAngle)(this.options.move.direction, this.position, this.moveCenter);
165
- switch (this.options.move.direction) {
166
- case MoveDirection_js_1.MoveDirection.inside:
167
- this.outType = ParticleOutType_js_1.ParticleOutType.inside;
168
- break;
169
- case MoveDirection_js_1.MoveDirection.outside:
170
- this.outType = ParticleOutType_js_1.ParticleOutType.outside;
171
- break;
172
- }
173
- this.offset = Vectors_js_1.Vector.origin;
174
- };
175
- this._engine = engine;
48
+ backColor;
49
+ bubble;
50
+ destroyed;
51
+ direction;
52
+ effect;
53
+ effectClose;
54
+ effectData;
55
+ fillColor;
56
+ fillEnabled;
57
+ fillOpacity;
58
+ group;
59
+ id;
60
+ ignoresResizeRatio;
61
+ initialPosition;
62
+ initialVelocity;
63
+ isRotating;
64
+ lastPathTime;
65
+ misplaced;
66
+ moveCenter;
67
+ offset;
68
+ opacity;
69
+ options;
70
+ outType;
71
+ pathRotation;
72
+ position;
73
+ randomIndexData;
74
+ retina;
75
+ roll;
76
+ rotation;
77
+ shape;
78
+ shapeClose;
79
+ shapeData;
80
+ sides;
81
+ size;
82
+ slow;
83
+ spawning;
84
+ strokeColor;
85
+ strokeOpacity;
86
+ strokeWidth;
87
+ unbreakable;
88
+ velocity;
89
+ zIndexFactor;
90
+ _cachedOpacityData = {
91
+ fillOpacity: Constants_js_1.defaultOpacity,
92
+ opacity: Constants_js_1.defaultOpacity,
93
+ strokeOpacity: Constants_js_1.defaultOpacity,
94
+ };
95
+ _cachedPosition = Vectors_js_1.Vector3d.origin;
96
+ _cachedRotateData = { sin: 0, cos: 0 };
97
+ _cachedTransform = {
98
+ a: 1,
99
+ b: 0,
100
+ c: 0,
101
+ d: 1,
102
+ };
103
+ _container;
104
+ _pluginManager;
105
+ constructor(pluginManager, container) {
106
+ this._pluginManager = pluginManager;
107
+ this._container = container;
176
108
  }
177
109
  destroy(override) {
178
110
  if (this.unbreakable || this.destroyed) {
@@ -181,42 +113,37 @@
181
113
  this.destroyed = true;
182
114
  this.bubble.inRange = false;
183
115
  this.slow.inRange = false;
184
- const container = this.container, pathGenerator = this.pathGenerator, shapeDrawer = this.shape ? container.shapeDrawers.get(this.shape) : undefined;
116
+ const container = this._container, shapeDrawer = this.shape ? container.shapeDrawers.get(this.shape) : undefined;
185
117
  shapeDrawer?.particleDestroy?.(this);
186
- for (const plugin of container.plugins) {
118
+ for (const plugin of container.particleDestroyedPlugins) {
187
119
  plugin.particleDestroyed?.(this, override);
188
120
  }
189
- for (const updater of container.particles.updaters) {
121
+ for (const updater of container.particleUpdaters) {
190
122
  updater.particleDestroyed?.(this, override);
191
123
  }
192
- pathGenerator?.reset(this);
193
- this._engine.dispatchEvent(EventType_js_1.EventType.particleDestroyed, {
194
- container: this.container,
195
- data: {
196
- particle: this,
197
- },
124
+ this._container.dispatchEvent(EventType_js_1.EventType.particleDestroyed, {
125
+ particle: this,
198
126
  });
199
127
  }
200
128
  draw(delta) {
201
- const container = this.container, canvas = container.canvas;
202
- for (const plugin of container.plugins) {
203
- canvas.drawParticlePlugin(plugin, this, delta);
204
- }
205
- canvas.drawParticle(this, delta);
129
+ const container = this._container, render = container.canvas.render;
130
+ render.drawParticlePlugins(this, delta);
131
+ render.drawParticle(this, delta);
206
132
  }
207
133
  getAngle() {
208
134
  return this.rotation + (this.pathRotation ? this.velocity.angle : Constants_js_1.defaultAngle);
209
135
  }
210
136
  getFillColor() {
211
- return this._getRollColor(this.bubble.color ?? (0, ColorUtils_js_1.getHslFromAnimation)(this.color));
137
+ return this._getRollColor(this.bubble.color ?? (0, ColorUtils_js_1.getHslFromAnimation)(this.fillColor));
212
138
  }
213
139
  getMass() {
214
140
  return this.getRadius() ** Constants_js_1.squareExp * Math.PI * Constants_js_1.half;
215
141
  }
216
142
  getOpacity() {
217
- const zIndexOptions = this.options.zIndex, zIndexFactor = Constants_js_1.zIndexFactorOffset - this.zIndexFactor, zOpacityFactor = zIndexFactor ** zIndexOptions.opacityRate, opacity = this.bubble.opacity ?? (0, MathUtils_js_1.getRangeValue)(this.opacity?.value ?? Constants_js_1.defaultOpacity), strokeOpacity = this.strokeOpacity ?? opacity;
143
+ const zIndexOptions = this.options.zIndex, zIndexFactor = Constants_js_1.zIndexFactorOffset - this.zIndexFactor, zOpacityFactor = zIndexFactor ** zIndexOptions.opacityRate, opacity = this.bubble.opacity ?? (0, MathUtils_js_1.getRangeValue)(this.opacity?.value ?? Constants_js_1.defaultOpacity), fillOpacity = this.fillOpacity ?? Constants_js_1.defaultOpacity, strokeOpacity = this.strokeOpacity ?? Constants_js_1.defaultOpacity;
144
+ this._cachedOpacityData.fillOpacity = opacity * fillOpacity * zOpacityFactor;
218
145
  this._cachedOpacityData.opacity = opacity * zOpacityFactor;
219
- this._cachedOpacityData.strokeOpacity = strokeOpacity * zOpacityFactor;
146
+ this._cachedOpacityData.strokeOpacity = opacity * strokeOpacity * zOpacityFactor;
220
147
  return this._cachedOpacityData;
221
148
  }
222
149
  getPosition() {
@@ -250,13 +177,11 @@
250
177
  return this._cachedTransform;
251
178
  }
252
179
  init(id, position, overrideOptions, group) {
253
- const container = this.container;
180
+ const container = this._container;
254
181
  this.id = id;
255
182
  this.group = group;
256
183
  this.effectClose = true;
257
- this.effectFill = true;
258
184
  this.shapeClose = true;
259
- this.shapeFill = true;
260
185
  this.pathRotation = false;
261
186
  this.lastPathTime = 0;
262
187
  this.destroyed = false;
@@ -266,10 +191,14 @@
266
191
  this.misplaced = false;
267
192
  this.retina = {
268
193
  maxDistance: {},
194
+ maxSpeed: 0,
195
+ moveDrift: 0,
196
+ moveSpeed: 0,
197
+ sizeAnimationSpeed: 0,
269
198
  };
270
199
  this.outType = ParticleOutType_js_1.ParticleOutType.normal;
271
200
  this.ignoresResizeRatio = true;
272
- const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = (0, OptionsUtils_js_1.loadParticlesOptions)(this._engine, container, mainOptions.particles), reduceDuplicates = particlesOptions.reduceDuplicates, effectType = particlesOptions.effect.type, shapeType = particlesOptions.shape.type;
201
+ const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = (0, OptionsUtils_js_1.loadParticlesOptions)(this._pluginManager, container, mainOptions.particles), reduceDuplicates = particlesOptions.reduceDuplicates, effectType = particlesOptions.effect.type, shapeType = particlesOptions.shape.type;
273
202
  this.effect = (0, Utils_js_1.itemFromSingleOrMultiple)(effectType, this.id, reduceDuplicates);
274
203
  this.shape = (0, Utils_js_1.itemFromSingleOrMultiple)(shapeType, this.id, reduceDuplicates);
275
204
  const effectOptions = particlesOptions.effect, shapeOptions = particlesOptions.shape;
@@ -290,11 +219,11 @@
290
219
  }
291
220
  }
292
221
  if (this.effect === Constants_js_1.randomColorValue) {
293
- const availableEffects = [...this.container.effectDrawers.keys()];
222
+ const availableEffects = [...this._container.effectDrawers.keys()];
294
223
  this.effect = availableEffects[Math.floor((0, MathUtils_js_1.getRandom)() * availableEffects.length)];
295
224
  }
296
225
  if (this.shape === Constants_js_1.randomColorValue) {
297
- const availableShapes = [...this.container.shapeDrawers.keys()];
226
+ const availableShapes = [...this._container.shapeDrawers.keys()];
298
227
  this.shape = availableShapes[Math.floor((0, MathUtils_js_1.getRandom)() * availableShapes.length)];
299
228
  }
300
229
  this.effectData = this.effect ? loadEffectData(this.effect, effectOptions, this.id, reduceDuplicates) : undefined;
@@ -308,19 +237,9 @@
308
237
  if (shapeData) {
309
238
  particlesOptions.load(shapeData.particles);
310
239
  }
311
- this.effectFill = effectData?.fill ?? particlesOptions.effect.fill;
312
240
  this.effectClose = effectData?.close ?? particlesOptions.effect.close;
313
- this.shapeFill = shapeData?.fill ?? particlesOptions.shape.fill;
314
241
  this.shapeClose = shapeData?.close ?? particlesOptions.shape.close;
315
242
  this.options = particlesOptions;
316
- const pathOptions = this.options.move.path;
317
- this.pathDelay = (0, MathUtils_js_1.getRangeValue)(pathOptions.delay.value) * Constants_js_1.millisecondsToSeconds;
318
- if (pathOptions.generator) {
319
- this.pathGenerator = this._engine.getPathGenerator(pathOptions.generator);
320
- if (this.pathGenerator && container.addPath(pathOptions.generator, this.pathGenerator)) {
321
- this.pathGenerator.init(container);
322
- }
323
- }
324
243
  container.retina.initParticle(this);
325
244
  this.size = (0, Utils_js_1.initParticleNumericAnimationValue)(this.options.size, pxRatio);
326
245
  this.bubble = {
@@ -333,7 +252,6 @@
333
252
  this._initPosition(position);
334
253
  this.initialVelocity = this._calculateVelocity();
335
254
  this.velocity = this.initialVelocity.copy();
336
- this.moveDecay = Constants_js_1.decayOffset - (0, MathUtils_js_1.getRangeValue)(this.options.move.decay);
337
255
  const particles = container.particles;
338
256
  particles.setLastZIndex(this.position.z);
339
257
  this.zIndexFactor = this.position.z / container.zLayers;
@@ -341,24 +259,12 @@
341
259
  let effectDrawer, shapeDrawer;
342
260
  if (this.effect) {
343
261
  effectDrawer = container.effectDrawers.get(this.effect);
344
- if (!effectDrawer) {
345
- effectDrawer = this._engine.getEffectDrawer(this.effect);
346
- if (effectDrawer) {
347
- container.effectDrawers.set(this.effect, effectDrawer);
348
- }
349
- }
350
262
  }
351
263
  if (effectDrawer?.loadEffect) {
352
264
  effectDrawer.loadEffect(this);
353
265
  }
354
266
  if (this.shape) {
355
267
  shapeDrawer = container.shapeDrawers.get(this.shape);
356
- if (!shapeDrawer) {
357
- shapeDrawer = this._engine.getShapeDrawer(this.shape);
358
- if (shapeDrawer) {
359
- container.shapeDrawers.set(this.shape, shapeDrawer);
360
- }
361
- }
362
268
  }
363
269
  if (shapeDrawer?.loadShape) {
364
270
  shapeDrawer.loadShape(this);
@@ -368,20 +274,17 @@
368
274
  this.sides = sideCountFunc(this);
369
275
  }
370
276
  this.spawning = false;
371
- for (const updater of particles.updaters) {
277
+ for (const updater of container.particleUpdaters) {
372
278
  updater.init(this);
373
279
  }
374
- for (const mover of particles.movers) {
375
- mover.init(this);
376
- }
377
280
  effectDrawer?.particleInit?.(container, this);
378
281
  shapeDrawer?.particleInit?.(container, this);
379
- for (const plugin of container.plugins) {
282
+ for (const plugin of container.particleCreatedPlugins) {
380
283
  plugin.particleCreated?.(this);
381
284
  }
382
285
  }
383
286
  isInsideCanvas() {
384
- const radius = this.getRadius(), canvasSize = this.container.canvas.size, position = this.position;
287
+ const radius = this.getRadius(), canvasSize = this._container.canvas.size, position = this.position;
385
288
  return (position.x >= -radius &&
386
289
  position.y >= -radius &&
387
290
  position.y <= canvasSize.height + radius &&
@@ -410,10 +313,121 @@
410
313
  return !this.destroyed && !this.spawning && this.isInsideCanvas();
411
314
  }
412
315
  reset() {
413
- for (const updater of this.container.particles.updaters) {
316
+ for (const updater of this._container.particleUpdaters) {
414
317
  updater.reset?.(this);
415
318
  }
416
319
  }
320
+ _calcPosition = (position, zIndex) => {
321
+ let tryCount = Constants_js_1.defaultRetryCount, posVec = position ? Vectors_js_1.Vector3d.create(position.x, position.y, zIndex) : undefined;
322
+ const container = this._container, plugins = container.particlePositionPlugins, outModes = this.options.move.outModes, radius = this.getRadius(), canvasSize = container.canvas.size, abortController = new AbortController(), { signal } = abortController;
323
+ while (!signal.aborted) {
324
+ for (const plugin of plugins) {
325
+ const pluginPos = plugin.particlePosition?.(posVec, this);
326
+ if (pluginPos) {
327
+ return Vectors_js_1.Vector3d.create(pluginPos.x, pluginPos.y, zIndex);
328
+ }
329
+ }
330
+ const exactPosition = (0, MathUtils_js_1.calcExactPositionOrRandomFromSize)({
331
+ size: canvasSize,
332
+ position: posVec,
333
+ }), pos = Vectors_js_1.Vector3d.create(exactPosition.x, exactPosition.y, zIndex);
334
+ this._fixHorizontal(pos, radius, outModes.left ?? outModes.default);
335
+ this._fixHorizontal(pos, radius, outModes.right ?? outModes.default);
336
+ this._fixVertical(pos, radius, outModes.top ?? outModes.default);
337
+ this._fixVertical(pos, radius, outModes.bottom ?? outModes.default);
338
+ let isValidPosition = true;
339
+ for (const plugin of container.particles.checkParticlePositionPlugins) {
340
+ isValidPosition = plugin.checkParticlePosition?.(this, pos, tryCount) ?? true;
341
+ if (!isValidPosition) {
342
+ break;
343
+ }
344
+ }
345
+ if (isValidPosition) {
346
+ return pos;
347
+ }
348
+ tryCount += Constants_js_1.tryCountIncrement;
349
+ posVec = undefined;
350
+ }
351
+ return posVec;
352
+ };
353
+ _calculateVelocity = () => {
354
+ const baseVelocity = (0, MathUtils_js_1.getParticleBaseVelocity)(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move;
355
+ if (moveOptions.direction === MoveDirection_js_1.MoveDirection.inside || moveOptions.direction === MoveDirection_js_1.MoveDirection.outside) {
356
+ return res;
357
+ }
358
+ const rad = (0, MathUtils_js_1.degToRad)((0, MathUtils_js_1.getRangeValue)(moveOptions.angle.value)), radOffset = (0, MathUtils_js_1.degToRad)((0, MathUtils_js_1.getRangeValue)(moveOptions.angle.offset)), range = {
359
+ left: radOffset - rad * Constants_js_1.half,
360
+ right: radOffset + rad * Constants_js_1.half,
361
+ };
362
+ if (!moveOptions.straight) {
363
+ res.angle += (0, MathUtils_js_1.randomInRangeValue)((0, MathUtils_js_1.setRangeValue)(range.left, range.right));
364
+ }
365
+ if (moveOptions.random && typeof moveOptions.speed === "number") {
366
+ res.length *= (0, MathUtils_js_1.getRandom)();
367
+ }
368
+ return res;
369
+ };
370
+ _fixHorizontal = (pos, radius, outMode) => {
371
+ fixOutMode({
372
+ outMode,
373
+ checkModes: [OutMode_js_1.OutMode.bounce],
374
+ coord: pos.x,
375
+ maxCoord: this._container.canvas.size.width,
376
+ setCb: (value) => (pos.x += value),
377
+ radius,
378
+ });
379
+ };
380
+ _fixVertical = (pos, radius, outMode) => {
381
+ fixOutMode({
382
+ outMode,
383
+ checkModes: [OutMode_js_1.OutMode.bounce],
384
+ coord: pos.y,
385
+ maxCoord: this._container.canvas.size.height,
386
+ setCb: (value) => (pos.y += value),
387
+ radius,
388
+ });
389
+ };
390
+ _getRollColor = color => {
391
+ if (!color || !this.roll || (!this.backColor && !this.roll.alter)) {
392
+ return color;
393
+ }
394
+ if (!this.isShowingBack()) {
395
+ return color;
396
+ }
397
+ if (this.backColor) {
398
+ return this.backColor;
399
+ }
400
+ if (this.roll.alter) {
401
+ return (0, ColorUtils_js_1.alterHsl)(color, this.roll.alter.type, this.roll.alter.value);
402
+ }
403
+ return color;
404
+ };
405
+ _initPosition = position => {
406
+ const container = this._container, zIndexValue = (0, MathUtils_js_1.getRangeValue)(this.options.zIndex.value), initialPosition = this._calcPosition(position, (0, MathUtils_js_1.clamp)(zIndexValue, Constants_js_1.minZ, container.zLayers));
407
+ if (!initialPosition) {
408
+ throw new Error("a valid position cannot be found for particle");
409
+ }
410
+ this.position = initialPosition;
411
+ this.initialPosition = this.position.copy();
412
+ const canvasSize = container.canvas.size;
413
+ this.moveCenter = {
414
+ ...(0, Utils_js_1.getPosition)(this.options.move.center, canvasSize),
415
+ radius: this.options.move.center.radius,
416
+ mode: this.options.move.center.mode,
417
+ };
418
+ this.direction = (0, MathUtils_js_1.getParticleDirectionAngle)(this.options.move.direction, this.position, this.moveCenter);
419
+ switch (this.options.move.direction) {
420
+ case MoveDirection_js_1.MoveDirection.inside:
421
+ this.outType = ParticleOutType_js_1.ParticleOutType.inside;
422
+ break;
423
+ case MoveDirection_js_1.MoveDirection.outside:
424
+ this.outType = ParticleOutType_js_1.ParticleOutType.outside;
425
+ break;
426
+ default:
427
+ break;
428
+ }
429
+ this.offset = Vectors_js_1.Vector.origin;
430
+ };
417
431
  }
418
432
  exports.Particle = Particle;
419
433
  });