@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
@@ -1,9 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateAnimation = exports.getSize = exports.getPosition = exports.initParticleNumericAnimationValue = exports.findItemFromSingleOrMultiple = exports.itemFromSingleOrMultiple = exports.executeOnSingleOrMultiple = exports.rectBounce = exports.circleBounce = exports.circleBounceDataFromParticle = exports.divMode = exports.singleDivModeExecute = exports.divModeExecute = exports.isDivModeEnabled = exports.deepExtend = exports.calculateBounds = exports.areBoundsInside = exports.isPointInside = exports.itemFromArray = exports.arrayRandomIndex = exports.loadFont = exports.isInArray = exports.safeMutationObserver = exports.safeIntersectionObserver = exports.safeMatchMedia = exports.hasMatchMedia = exports.isSsr = exports.getLogger = exports.setLogger = void 0;
3
+ exports.setLogger = setLogger;
4
+ exports.getLogger = getLogger;
5
+ exports.isSsr = isSsr;
6
+ exports.hasMatchMedia = hasMatchMedia;
7
+ exports.safeMatchMedia = safeMatchMedia;
8
+ exports.safeIntersectionObserver = safeIntersectionObserver;
9
+ exports.safeMutationObserver = safeMutationObserver;
10
+ exports.isInArray = isInArray;
11
+ exports.loadFont = loadFont;
12
+ exports.arrayRandomIndex = arrayRandomIndex;
13
+ exports.itemFromArray = itemFromArray;
14
+ exports.isPointInside = isPointInside;
15
+ exports.areBoundsInside = areBoundsInside;
16
+ exports.calculateBounds = calculateBounds;
17
+ exports.deepExtend = deepExtend;
18
+ exports.isDivModeEnabled = isDivModeEnabled;
19
+ exports.divModeExecute = divModeExecute;
20
+ exports.singleDivModeExecute = singleDivModeExecute;
21
+ exports.divMode = divMode;
22
+ exports.circleBounceDataFromParticle = circleBounceDataFromParticle;
23
+ exports.circleBounce = circleBounce;
24
+ exports.rectBounce = rectBounce;
25
+ exports.executeOnSingleOrMultiple = executeOnSingleOrMultiple;
26
+ exports.itemFromSingleOrMultiple = itemFromSingleOrMultiple;
27
+ exports.findItemFromSingleOrMultiple = findItemFromSingleOrMultiple;
28
+ exports.initParticleNumericAnimationValue = initParticleNumericAnimationValue;
29
+ exports.getPosition = getPosition;
30
+ exports.getSize = getSize;
31
+ exports.updateAnimation = updateAnimation;
4
32
  const NumberUtils_js_1 = require("./NumberUtils.js");
5
33
  const Constants_js_1 = require("../Core/Utils/Constants.js");
6
34
  const TypeUtils_js_1 = require("./TypeUtils.js");
35
+ const AnimationMode_js_1 = require("../Enums/Modes/AnimationMode.js");
36
+ const AnimationStatus_js_1 = require("../Enums/AnimationStatus.js");
37
+ const DestroyType_js_1 = require("../Enums/Types/DestroyType.js");
38
+ const OutModeDirection_js_1 = require("../Enums/Directions/OutModeDirection.js");
39
+ const PixelMode_js_1 = require("../Enums/Modes/PixelMode.js");
40
+ const StartValueType_js_1 = require("../Enums/Types/StartValueType.js");
7
41
  const Vectors_js_1 = require("../Core/Utils/Vectors.js");
8
42
  const _logger = {
9
43
  debug: console.debug,
@@ -21,11 +55,9 @@ function setLogger(logger) {
21
55
  _logger.verbose = logger.verbose || _logger.verbose;
22
56
  _logger.warning = logger.warning || _logger.warning;
23
57
  }
24
- exports.setLogger = setLogger;
25
58
  function getLogger() {
26
59
  return _logger;
27
60
  }
28
- exports.getLogger = getLogger;
29
61
  function rectSideBounce(data) {
30
62
  const res = { bounced: false }, { pSide, pOtherSide, rectSide, rectOtherSide, velocity, factor } = data, half = 0.5, minVelocity = 0;
31
63
  if (pOtherSide.min < rectOtherSide.min ||
@@ -42,45 +74,39 @@ function rectSideBounce(data) {
42
74
  return res;
43
75
  }
44
76
  function checkSelector(element, selectors) {
45
- const res = executeOnSingleOrMultiple(selectors, (selector) => {
77
+ const res = executeOnSingleOrMultiple(selectors, selector => {
46
78
  return element.matches(selector);
47
79
  });
48
- return (0, TypeUtils_js_1.isArray)(res) ? res.some((t) => t) : res;
80
+ return (0, TypeUtils_js_1.isArray)(res) ? res.some(t => t) : res;
49
81
  }
50
82
  function isSsr() {
51
83
  return typeof window === "undefined" || !window || typeof window.document === "undefined" || !window.document;
52
84
  }
53
- exports.isSsr = isSsr;
54
85
  function hasMatchMedia() {
55
86
  return !isSsr() && typeof matchMedia !== "undefined";
56
87
  }
57
- exports.hasMatchMedia = hasMatchMedia;
58
88
  function safeMatchMedia(query) {
59
89
  if (!hasMatchMedia()) {
60
90
  return;
61
91
  }
62
92
  return matchMedia(query);
63
93
  }
64
- exports.safeMatchMedia = safeMatchMedia;
65
94
  function safeIntersectionObserver(callback) {
66
95
  if (isSsr() || typeof IntersectionObserver === "undefined") {
67
96
  return;
68
97
  }
69
98
  return new IntersectionObserver(callback);
70
99
  }
71
- exports.safeIntersectionObserver = safeIntersectionObserver;
72
100
  function safeMutationObserver(callback) {
73
101
  if (isSsr() || typeof MutationObserver === "undefined") {
74
102
  return;
75
103
  }
76
104
  return new MutationObserver(callback);
77
105
  }
78
- exports.safeMutationObserver = safeMutationObserver;
79
106
  function isInArray(value, array) {
80
107
  const invalidIndex = -1;
81
108
  return value === array || ((0, TypeUtils_js_1.isArray)(array) && array.indexOf(value) > invalidIndex);
82
109
  }
83
- exports.isInArray = isInArray;
84
110
  async function loadFont(font, weight) {
85
111
  try {
86
112
  await document.fonts.load(`${weight ?? "400"} 36px '${font ?? "Verdana"}'`);
@@ -88,37 +114,32 @@ async function loadFont(font, weight) {
88
114
  catch {
89
115
  }
90
116
  }
91
- exports.loadFont = loadFont;
92
117
  function arrayRandomIndex(array) {
93
118
  return Math.floor((0, NumberUtils_js_1.getRandom)() * array.length);
94
119
  }
95
- exports.arrayRandomIndex = arrayRandomIndex;
96
120
  function itemFromArray(array, index, useIndex = true) {
97
121
  return array[index !== undefined && useIndex ? index % array.length : arrayRandomIndex(array)];
98
122
  }
99
- exports.itemFromArray = itemFromArray;
100
123
  function isPointInside(point, size, offset, radius, direction) {
101
124
  const minRadius = 0;
102
125
  return areBoundsInside(calculateBounds(point, radius ?? minRadius), size, offset, direction);
103
126
  }
104
- exports.isPointInside = isPointInside;
105
127
  function areBoundsInside(bounds, size, offset, direction) {
106
128
  let inside = true;
107
- if (!direction || direction === "bottom") {
129
+ if (!direction || direction === OutModeDirection_js_1.OutModeDirection.bottom) {
108
130
  inside = bounds.top < size.height + offset.x;
109
131
  }
110
- if (inside && (!direction || direction === "left")) {
132
+ if (inside && (!direction || direction === OutModeDirection_js_1.OutModeDirection.left)) {
111
133
  inside = bounds.right > offset.x;
112
134
  }
113
- if (inside && (!direction || direction === "right")) {
135
+ if (inside && (!direction || direction === OutModeDirection_js_1.OutModeDirection.right)) {
114
136
  inside = bounds.left < size.width + offset.y;
115
137
  }
116
- if (inside && (!direction || direction === "top")) {
138
+ if (inside && (!direction || direction === OutModeDirection_js_1.OutModeDirection.top)) {
117
139
  inside = bounds.bottom > offset.y;
118
140
  }
119
141
  return inside;
120
142
  }
121
- exports.areBoundsInside = areBoundsInside;
122
143
  function calculateBounds(point, radius) {
123
144
  return {
124
145
  bottom: point.y + radius,
@@ -127,7 +148,6 @@ function calculateBounds(point, radius) {
127
148
  top: point.y - radius,
128
149
  };
129
150
  }
130
- exports.calculateBounds = calculateBounds;
131
151
  function deepExtend(destination, ...sources) {
132
152
  for (const source of sources) {
133
153
  if (source === undefined || source === null) {
@@ -151,42 +171,37 @@ function deepExtend(destination, ...sources) {
151
171
  const sourceDict = source, value = sourceDict[key], destDict = destination;
152
172
  destDict[key] =
153
173
  (0, TypeUtils_js_1.isObject)(value) && Array.isArray(value)
154
- ? value.map((v) => deepExtend(destDict[key], v))
174
+ ? value.map(v => deepExtend(destDict[key], v))
155
175
  : deepExtend(destDict[key], value);
156
176
  }
157
177
  }
158
178
  return destination;
159
179
  }
160
- exports.deepExtend = deepExtend;
161
180
  function isDivModeEnabled(mode, divs) {
162
- return !!findItemFromSingleOrMultiple(divs, (t) => t.enable && isInArray(mode, t.mode));
181
+ return !!findItemFromSingleOrMultiple(divs, t => t.enable && isInArray(mode, t.mode));
163
182
  }
164
- exports.isDivModeEnabled = isDivModeEnabled;
165
183
  function divModeExecute(mode, divs, callback) {
166
- executeOnSingleOrMultiple(divs, (div) => {
184
+ executeOnSingleOrMultiple(divs, div => {
167
185
  const divMode = div.mode, divEnabled = div.enable;
168
186
  if (divEnabled && isInArray(mode, divMode)) {
169
187
  singleDivModeExecute(div, callback);
170
188
  }
171
189
  });
172
190
  }
173
- exports.divModeExecute = divModeExecute;
174
191
  function singleDivModeExecute(div, callback) {
175
192
  const selectors = div.selectors;
176
- executeOnSingleOrMultiple(selectors, (selector) => {
193
+ executeOnSingleOrMultiple(selectors, selector => {
177
194
  callback(selector, div);
178
195
  });
179
196
  }
180
- exports.singleDivModeExecute = singleDivModeExecute;
181
197
  function divMode(divs, element) {
182
198
  if (!element || !divs) {
183
199
  return;
184
200
  }
185
- return findItemFromSingleOrMultiple(divs, (div) => {
201
+ return findItemFromSingleOrMultiple(divs, div => {
186
202
  return checkSelector(element, div.selectors);
187
203
  });
188
204
  }
189
- exports.divMode = divMode;
190
205
  function circleBounceDataFromParticle(p) {
191
206
  return {
192
207
  position: p.getPosition(),
@@ -196,7 +211,6 @@ function circleBounceDataFromParticle(p) {
196
211
  factor: Vectors_js_1.Vector.create((0, NumberUtils_js_1.getRangeValue)(p.options.bounce.horizontal.value), (0, NumberUtils_js_1.getRangeValue)(p.options.bounce.vertical.value)),
197
212
  };
198
213
  }
199
- exports.circleBounceDataFromParticle = circleBounceDataFromParticle;
200
214
  function circleBounce(p1, p2) {
201
215
  const { x: xVelocityDiff, y: yVelocityDiff } = p1.velocity.sub(p2.velocity), [pos1, pos2] = [p1.position, p2.position], { dx: xDist, dy: yDist } = (0, NumberUtils_js_1.getDistances)(pos2, pos1), minimumDistance = 0;
202
216
  if (xVelocityDiff * xDist + yVelocityDiff * yDist < minimumDistance) {
@@ -208,7 +222,6 @@ function circleBounce(p1, p2) {
208
222
  p2.velocity.x = vFinal2.x * p2.factor.x;
209
223
  p2.velocity.y = vFinal2.y * p2.factor.y;
210
224
  }
211
- exports.circleBounce = circleBounce;
212
225
  function rectBounce(particle, divBounds) {
213
226
  const pPos = particle.getPosition(), size = particle.getRadius(), bounds = calculateBounds(pPos, size), bounceOptions = particle.options.bounce, resH = rectSideBounce({
214
227
  pSide: {
@@ -267,16 +280,13 @@ function rectBounce(particle, divBounds) {
267
280
  }
268
281
  }
269
282
  }
270
- exports.rectBounce = rectBounce;
271
283
  function executeOnSingleOrMultiple(obj, callback) {
272
284
  const defaultIndex = 0;
273
285
  return (0, TypeUtils_js_1.isArray)(obj) ? obj.map((item, index) => callback(item, index)) : callback(obj, defaultIndex);
274
286
  }
275
- exports.executeOnSingleOrMultiple = executeOnSingleOrMultiple;
276
287
  function itemFromSingleOrMultiple(obj, index, useIndex) {
277
288
  return (0, TypeUtils_js_1.isArray)(obj) ? itemFromArray(obj, index, useIndex) : obj;
278
289
  }
279
- exports.itemFromSingleOrMultiple = itemFromSingleOrMultiple;
280
290
  function findItemFromSingleOrMultiple(obj, callback) {
281
291
  if ((0, TypeUtils_js_1.isArray)(obj)) {
282
292
  return obj.find((t, index) => callback(t, index));
@@ -284,7 +294,6 @@ function findItemFromSingleOrMultiple(obj, callback) {
284
294
  const defaultIndex = 0;
285
295
  return callback(obj, defaultIndex) ? obj : undefined;
286
296
  }
287
- exports.findItemFromSingleOrMultiple = findItemFromSingleOrMultiple;
288
297
  function initParticleNumericAnimationValue(options, pxRatio) {
289
298
  const valueRange = options.value, animationOptions = options.animation, res = {
290
299
  delayTime: (0, NumberUtils_js_1.getRangeValue)(animationOptions.delay) * Constants_js_1.millisecondsToSeconds,
@@ -299,35 +308,35 @@ function initParticleNumericAnimationValue(options, pxRatio) {
299
308
  if (animationOptions.enable) {
300
309
  res.decay = decayOffset - (0, NumberUtils_js_1.getRangeValue)(animationOptions.decay);
301
310
  switch (animationOptions.mode) {
302
- case "increase":
303
- res.status = "increasing";
311
+ case AnimationMode_js_1.AnimationMode.increase:
312
+ res.status = AnimationStatus_js_1.AnimationStatus.increasing;
304
313
  break;
305
- case "decrease":
306
- res.status = "decreasing";
314
+ case AnimationMode_js_1.AnimationMode.decrease:
315
+ res.status = AnimationStatus_js_1.AnimationStatus.decreasing;
307
316
  break;
308
- case "random":
309
- res.status = (0, NumberUtils_js_1.getRandom)() >= Constants_js_1.halfRandom ? "increasing" : "decreasing";
317
+ case AnimationMode_js_1.AnimationMode.random:
318
+ res.status = (0, NumberUtils_js_1.getRandom)() >= Constants_js_1.halfRandom ? AnimationStatus_js_1.AnimationStatus.increasing : AnimationStatus_js_1.AnimationStatus.decreasing;
310
319
  break;
311
320
  }
312
- const autoStatus = animationOptions.mode === "auto";
321
+ const autoStatus = animationOptions.mode === AnimationMode_js_1.AnimationMode.auto;
313
322
  switch (animationOptions.startValue) {
314
- case "min":
323
+ case StartValueType_js_1.StartValueType.min:
315
324
  res.value = res.min;
316
325
  if (autoStatus) {
317
- res.status = "increasing";
326
+ res.status = AnimationStatus_js_1.AnimationStatus.increasing;
318
327
  }
319
328
  break;
320
- case "max":
329
+ case StartValueType_js_1.StartValueType.max:
321
330
  res.value = res.max;
322
331
  if (autoStatus) {
323
- res.status = "decreasing";
332
+ res.status = AnimationStatus_js_1.AnimationStatus.decreasing;
324
333
  }
325
334
  break;
326
- case "random":
335
+ case StartValueType_js_1.StartValueType.random:
327
336
  default:
328
337
  res.value = (0, NumberUtils_js_1.randomInRange)(res);
329
338
  if (autoStatus) {
330
- res.status = (0, NumberUtils_js_1.getRandom)() >= Constants_js_1.halfRandom ? "increasing" : "decreasing";
339
+ res.status = (0, NumberUtils_js_1.getRandom)() >= Constants_js_1.halfRandom ? AnimationStatus_js_1.AnimationStatus.increasing : AnimationStatus_js_1.AnimationStatus.decreasing;
331
340
  }
332
341
  break;
333
342
  }
@@ -335,9 +344,8 @@ function initParticleNumericAnimationValue(options, pxRatio) {
335
344
  res.initialValue = res.value;
336
345
  return res;
337
346
  }
338
- exports.initParticleNumericAnimationValue = initParticleNumericAnimationValue;
339
347
  function getPositionOrSize(positionOrSize, canvasSize) {
340
- const isPercent = positionOrSize.mode === "percent";
348
+ const isPercent = positionOrSize.mode === PixelMode_js_1.PixelMode.percent;
341
349
  if (!isPercent) {
342
350
  const { mode: _, ...rest } = positionOrSize;
343
351
  return rest;
@@ -359,19 +367,17 @@ function getPositionOrSize(positionOrSize, canvasSize) {
359
367
  function getPosition(position, canvasSize) {
360
368
  return getPositionOrSize(position, canvasSize);
361
369
  }
362
- exports.getPosition = getPosition;
363
370
  function getSize(size, canvasSize) {
364
371
  return getPositionOrSize(size, canvasSize);
365
372
  }
366
- exports.getSize = getSize;
367
373
  function checkDestroy(particle, destroyType, value, minValue, maxValue) {
368
374
  switch (destroyType) {
369
- case "max":
375
+ case DestroyType_js_1.DestroyType.max:
370
376
  if (value >= maxValue) {
371
377
  particle.destroy();
372
378
  }
373
379
  break;
374
- case "min":
380
+ case DestroyType_js_1.DestroyType.min:
375
381
  if (value <= minValue) {
376
382
  particle.destroy();
377
383
  }
@@ -397,10 +403,10 @@ function updateAnimation(particle, data, changeDirection, destroyType, delta) {
397
403
  return;
398
404
  }
399
405
  switch (data.status) {
400
- case "increasing":
406
+ case AnimationStatus_js_1.AnimationStatus.increasing:
401
407
  if (data.value >= maxValue) {
402
408
  if (changeDirection) {
403
- data.status = "decreasing";
409
+ data.status = AnimationStatus_js_1.AnimationStatus.decreasing;
404
410
  }
405
411
  else {
406
412
  data.value -= maxValue;
@@ -414,10 +420,10 @@ function updateAnimation(particle, data, changeDirection, destroyType, delta) {
414
420
  data.value += velocity;
415
421
  }
416
422
  break;
417
- case "decreasing":
423
+ case AnimationStatus_js_1.AnimationStatus.decreasing:
418
424
  if (data.value <= minValue) {
419
425
  if (changeDirection) {
420
- data.status = "increasing";
426
+ data.status = AnimationStatus_js_1.AnimationStatus.increasing;
421
427
  }
422
428
  else {
423
429
  data.value += maxValue;
@@ -439,4 +445,3 @@ function updateAnimation(particle, data, changeDirection, destroyType, delta) {
439
445
  data.value = (0, NumberUtils_js_1.clamp)(data.value, minValue, maxValue);
440
446
  }
441
447
  }
442
- exports.updateAnimation = updateAnimation;
package/cjs/init.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.init = void 0;
3
+ exports.init = init;
4
4
  const Engine_js_1 = require("./Core/Engine.js");
5
5
  const HslColorManager_js_1 = require("./Utils/HslColorManager.js");
6
6
  const RgbColorManager_js_1 = require("./Utils/RgbColorManager.js");
@@ -13,4 +13,3 @@ function init() {
13
13
  engine.init();
14
14
  return engine;
15
15
  }
16
- exports.init = init;
@@ -31,7 +31,7 @@ function setStyle(canvas, style, important = false) {
31
31
  export class Canvas {
32
32
  constructor(container) {
33
33
  this.container = container;
34
- this._applyPostDrawUpdaters = (particle) => {
34
+ this._applyPostDrawUpdaters = particle => {
35
35
  for (const updater of this._postDrawUpdaters) {
36
36
  updater.afterDraw?.(particle);
37
37
  }
@@ -61,7 +61,7 @@ export class Canvas {
61
61
  plugin.resize?.();
62
62
  }
63
63
  };
64
- this._getPluginParticleColors = (particle) => {
64
+ this._getPluginParticleColors = particle => {
65
65
  let fColor, sColor;
66
66
  for (const plugin of this._colorPlugins) {
67
67
  if (!fColor && plugin.particleFillColor) {
@@ -101,7 +101,7 @@ export class Canvas {
101
101
  };
102
102
  resolve();
103
103
  });
104
- img.addEventListener("error", (evt) => {
104
+ img.addEventListener("error", evt => {
105
105
  reject(evt.error);
106
106
  });
107
107
  img.src = cover.image;
@@ -162,28 +162,33 @@ export class Canvas {
162
162
  };
163
163
  resolve();
164
164
  });
165
- img.addEventListener("error", (evt) => {
165
+ img.addEventListener("error", evt => {
166
166
  reject(evt.error);
167
167
  });
168
168
  img.src = trailFill.image;
169
169
  });
170
170
  }
171
171
  };
172
- this._paintBase = (baseColor) => {
173
- this.draw((ctx) => paintBase(ctx, this.size, baseColor));
172
+ this._paintBase = baseColor => {
173
+ this.draw(ctx => paintBase(ctx, this.size, baseColor));
174
174
  };
175
175
  this._paintImage = (image, opacity) => {
176
- this.draw((ctx) => paintImage(ctx, this.size, image, opacity));
176
+ this.draw(ctx => paintImage(ctx, this.size, image, opacity));
177
177
  };
178
178
  this._repairStyle = () => {
179
179
  const element = this.element;
180
180
  if (!element) {
181
181
  return;
182
182
  }
183
- this._safeMutationObserver((observer) => observer.disconnect());
183
+ this._safeMutationObserver(observer => observer.disconnect());
184
184
  this._initStyle();
185
185
  this.initBackground();
186
- this._safeMutationObserver((observer) => observer.observe(element, { attributes: true }));
186
+ this._safeMutationObserver(observer => {
187
+ if (!element || !(element instanceof Node)) {
188
+ return;
189
+ }
190
+ observer.observe(element, { attributes: true });
191
+ });
187
192
  };
188
193
  this._resetOriginalStyle = () => {
189
194
  const element = this.element, originalStyle = this._originalStyle;
@@ -192,7 +197,7 @@ export class Canvas {
192
197
  }
193
198
  setStyle(element, originalStyle);
194
199
  };
195
- this._safeMutationObserver = (callback) => {
200
+ this._safeMutationObserver = callback => {
196
201
  if (!this._mutationObserver) {
197
202
  return;
198
203
  }
@@ -241,7 +246,7 @@ export class Canvas {
241
246
  }
242
247
  }
243
248
  else if (options.clear) {
244
- this.draw((ctx) => {
249
+ this.draw(ctx => {
245
250
  clear(ctx, this.size);
246
251
  });
247
252
  }
@@ -316,14 +321,14 @@ export class Canvas {
316
321
  });
317
322
  }
318
323
  drawParticlePlugin(plugin, particle, delta) {
319
- this.draw((ctx) => drawParticlePlugin(ctx, plugin, particle, delta));
324
+ this.draw(ctx => drawParticlePlugin(ctx, plugin, particle, delta));
320
325
  }
321
326
  drawPlugin(plugin, delta) {
322
- this.draw((ctx) => drawPlugin(ctx, plugin, delta));
327
+ this.draw(ctx => drawPlugin(ctx, plugin, delta));
323
328
  }
324
329
  async init() {
325
- this._safeMutationObserver((obs) => obs.disconnect());
326
- this._mutationObserver = safeMutationObserver((records) => {
330
+ this._safeMutationObserver(obs => obs.disconnect());
331
+ this._mutationObserver = safeMutationObserver(records => {
327
332
  for (const record of records) {
328
333
  if (record.type === "attributes" && record.attributeName === "style") {
329
334
  this._repairStyle();
@@ -340,8 +345,8 @@ export class Canvas {
340
345
  getLogger().error(e);
341
346
  }
342
347
  this.initBackground();
343
- this._safeMutationObserver((obs) => {
344
- if (!this.element) {
348
+ this._safeMutationObserver(obs => {
349
+ if (!this.element || !(this.element instanceof Node)) {
345
350
  return;
346
351
  }
347
352
  obs.observe(this.element, { attributes: true });
@@ -408,8 +413,8 @@ export class Canvas {
408
413
  this.size.height = canvas.offsetHeight;
409
414
  this.size.width = canvas.offsetWidth;
410
415
  this._context = this.element.getContext("2d");
411
- this._safeMutationObserver((obs) => {
412
- if (!this.element) {
416
+ this._safeMutationObserver(obs => {
417
+ if (!this.element || !(this.element instanceof Node)) {
413
418
  return;
414
419
  }
415
420
  obs.observe(this.element, { attributes: true });
@@ -419,7 +424,7 @@ export class Canvas {
419
424
  }
420
425
  paint() {
421
426
  const options = this.container.actualOptions;
422
- this.draw((ctx) => {
427
+ this.draw(ctx => {
423
428
  if (options.backgroundMask.enable && options.backgroundMask.cover) {
424
429
  clear(ctx, this.size);
425
430
  if (this._coverImage) {
@@ -463,9 +468,9 @@ export class Canvas {
463
468
  return true;
464
469
  }
465
470
  stop() {
466
- this._safeMutationObserver((obs) => obs.disconnect());
471
+ this._safeMutationObserver(obs => obs.disconnect());
467
472
  this._mutationObserver = undefined;
468
- this.draw((ctx) => clear(ctx, this.size));
473
+ this.draw(ctx => clear(ctx, this.size));
469
474
  }
470
475
  async windowResize() {
471
476
  if (!this.element || !this.resize()) {