@tsparticles/engine 4.0.0-alpha.2 → 4.0.0-alpha.4

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 (283) hide show
  1. package/794.min.js +2 -0
  2. package/794.min.js.LICENSE.txt +1 -0
  3. package/README.md +2 -5
  4. package/browser/Core/Canvas.js +18 -22
  5. package/browser/Core/Container.js +44 -169
  6. package/browser/Core/Engine.js +40 -61
  7. package/browser/Core/Particle.js +99 -58
  8. package/browser/Core/Particles.js +36 -25
  9. package/browser/Core/Utils/Constants.js +2 -2
  10. package/browser/Core/Utils/EventListeners.js +5 -250
  11. package/browser/Options/Classes/Options.js +7 -75
  12. package/browser/Options/Classes/Particles/ParticlesOptions.js +5 -11
  13. package/{esm/Options/Classes/Interactivity/Events → browser/Options/Classes}/ResizeEvent.js +1 -1
  14. package/browser/Utils/CanvasUtils.js +26 -83
  15. package/browser/Utils/ColorUtils.js +17 -2
  16. package/browser/Utils/MathUtils.js +3 -2
  17. package/browser/Utils/Utils.js +26 -33
  18. package/browser/exports.js +1 -21
  19. package/cjs/Core/Canvas.js +18 -22
  20. package/cjs/Core/Container.js +44 -169
  21. package/cjs/Core/Engine.js +40 -61
  22. package/cjs/Core/Particle.js +99 -58
  23. package/cjs/Core/Particles.js +36 -25
  24. package/cjs/Core/Utils/Constants.js +2 -2
  25. package/cjs/Core/Utils/EventListeners.js +5 -250
  26. package/cjs/Options/Classes/Options.js +7 -75
  27. package/cjs/Options/Classes/Particles/ParticlesOptions.js +5 -11
  28. package/cjs/Options/Classes/{Interactivity/Events/ResizeEvent.js → ResizeEvent.js} +1 -1
  29. package/cjs/Utils/CanvasUtils.js +26 -83
  30. package/cjs/Utils/ColorUtils.js +17 -2
  31. package/cjs/Utils/MathUtils.js +3 -2
  32. package/cjs/Utils/Utils.js +26 -33
  33. package/cjs/exports.js +1 -21
  34. package/dist_browser_Core_Container_js.js +6 -16
  35. package/esm/Core/Canvas.js +18 -22
  36. package/esm/Core/Container.js +44 -169
  37. package/esm/Core/Engine.js +40 -61
  38. package/esm/Core/Particle.js +99 -58
  39. package/esm/Core/Particles.js +36 -25
  40. package/esm/Core/Utils/Constants.js +2 -2
  41. package/esm/Core/Utils/EventListeners.js +5 -250
  42. package/esm/Options/Classes/Options.js +7 -75
  43. package/esm/Options/Classes/Particles/ParticlesOptions.js +5 -11
  44. package/{browser/Options/Classes/Interactivity/Events → esm/Options/Classes}/ResizeEvent.js +1 -1
  45. package/esm/Utils/CanvasUtils.js +26 -83
  46. package/esm/Utils/ColorUtils.js +17 -2
  47. package/esm/Utils/MathUtils.js +3 -2
  48. package/esm/Utils/Utils.js +26 -33
  49. package/esm/exports.js +1 -21
  50. package/package.json +1 -1
  51. package/report.html +1 -1
  52. package/tsparticles.engine.js +16 -208
  53. package/tsparticles.engine.min.js +1 -1
  54. package/tsparticles.engine.min.js.LICENSE.txt +1 -1
  55. package/types/Core/Canvas.d.ts +3 -0
  56. package/types/Core/Container.d.ts +4 -15
  57. package/types/Core/Engine.d.ts +4 -19
  58. package/types/Core/Interfaces/IContainerPlugin.d.ts +8 -1
  59. package/types/Core/Interfaces/IDrawParticleParams.d.ts +1 -1
  60. package/types/Core/Interfaces/IParticleOpacityData.d.ts +4 -0
  61. package/types/Core/Interfaces/IParticleRotateData.d.ts +4 -0
  62. package/types/Core/Interfaces/IParticleTransformValues.d.ts +4 -4
  63. package/types/Core/Interfaces/IParticleUpdater.d.ts +1 -1
  64. package/types/Core/Interfaces/IPlugin.d.ts +5 -1
  65. package/types/Core/Particle.d.ts +12 -2
  66. package/types/Core/Particles.d.ts +1 -5
  67. package/types/Core/Utils/Constants.d.ts +2 -2
  68. package/types/Core/Utils/EventListeners.d.ts +0 -14
  69. package/types/Options/Classes/Options.d.ts +2 -11
  70. package/types/Options/Classes/Particles/ParticlesOptions.d.ts +0 -2
  71. package/types/Options/Classes/ResizeEvent.d.ts +9 -0
  72. package/types/Options/Interfaces/IOptions.d.ts +2 -8
  73. package/types/Options/Interfaces/Particles/IParticlesOptions.d.ts +0 -3
  74. package/types/Types/CustomEventListener.d.ts +1 -1
  75. package/types/Types/EngineInitializers.d.ts +10 -0
  76. package/types/Utils/CanvasUtils.d.ts +6 -21
  77. package/types/Utils/EventDispatcher.d.ts +1 -1
  78. package/types/Utils/Utils.d.ts +4 -6
  79. package/types/export-types.d.ts +3 -19
  80. package/types/exports.d.ts +1 -21
  81. package/umd/Core/Canvas.js +17 -21
  82. package/umd/Core/Container.js +44 -169
  83. package/umd/Core/Engine.js +41 -62
  84. package/umd/Core/Particle.js +99 -58
  85. package/umd/Core/Particles.js +37 -26
  86. package/umd/Core/Utils/Constants.js +3 -3
  87. package/umd/Core/Utils/EventListeners.js +7 -252
  88. package/umd/Options/Classes/Options.js +7 -75
  89. package/umd/Options/Classes/Particles/ParticlesOptions.js +5 -11
  90. package/umd/Options/Classes/{Interactivity/Events/ResizeEvent.js → ResizeEvent.js} +2 -2
  91. package/umd/Utils/CanvasUtils.js +25 -82
  92. package/umd/Utils/ColorUtils.js +17 -2
  93. package/umd/Utils/MathUtils.js +3 -2
  94. package/umd/Utils/Utils.js +27 -36
  95. package/umd/exports.js +2 -22
  96. package/638.min.js +0 -2
  97. package/638.min.js.LICENSE.txt +0 -1
  98. package/browser/Core/Utils/ExternalInteractorBase.js +0 -7
  99. package/browser/Core/Utils/InteractionManager.js +0 -60
  100. package/browser/Core/Utils/ParticlesInteractorBase.js +0 -7
  101. package/browser/Enums/InteractivityDetect.js +0 -6
  102. package/browser/Enums/Modes/ResponsiveMode.js +0 -5
  103. package/browser/Enums/Modes/ThemeMode.js +0 -6
  104. package/browser/Enums/Types/DivType.js +0 -5
  105. package/browser/Enums/Types/InteractorType.js +0 -5
  106. package/browser/Options/Classes/Interactivity/Events/ClickEvent.js +0 -18
  107. package/browser/Options/Classes/Interactivity/Events/DivEvent.js +0 -27
  108. package/browser/Options/Classes/Interactivity/Events/Events.js +0 -30
  109. package/browser/Options/Classes/Interactivity/Events/HoverEvent.js +0 -21
  110. package/browser/Options/Classes/Interactivity/Events/Parallax.js +0 -22
  111. package/browser/Options/Classes/Interactivity/Interactivity.js +0 -22
  112. package/browser/Options/Classes/Interactivity/Modes/Modes.js +0 -25
  113. package/browser/Options/Classes/ManualParticle.js +0 -21
  114. package/browser/Options/Classes/Responsive.js +0 -29
  115. package/browser/Options/Classes/Theme/Theme.js +0 -21
  116. package/browser/Options/Classes/Theme/ThemeDefault.js +0 -23
  117. package/browser/Options/Interfaces/Interactivity/Events/IEvents.js +0 -1
  118. package/browser/Options/Interfaces/Interactivity/Events/IHoverEvent.js +0 -1
  119. package/browser/Options/Interfaces/Interactivity/Events/IParallax.js +0 -1
  120. package/browser/Options/Interfaces/Interactivity/IInteractivity.js +0 -1
  121. package/browser/Options/Interfaces/Interactivity/Modes/IModeDiv.js +0 -1
  122. package/browser/Options/Interfaces/Interactivity/Modes/IModes.js +0 -1
  123. package/browser/Options/Interfaces/Theme/ITheme.js +0 -1
  124. package/browser/Options/Interfaces/Theme/IThemeDefault.js +0 -1
  125. package/cjs/Core/Interfaces/IContainerInteractivity.js +0 -1
  126. package/cjs/Core/Interfaces/IExternalInteractor.js +0 -1
  127. package/cjs/Core/Interfaces/IInteractor.js +0 -1
  128. package/cjs/Core/Interfaces/IMouseData.js +0 -1
  129. package/cjs/Core/Interfaces/IParticlesInteractor.js +0 -1
  130. package/cjs/Core/Utils/ExternalInteractorBase.js +0 -7
  131. package/cjs/Core/Utils/InteractionManager.js +0 -60
  132. package/cjs/Core/Utils/ParticlesInteractorBase.js +0 -7
  133. package/cjs/Enums/InteractivityDetect.js +0 -6
  134. package/cjs/Enums/Modes/ResponsiveMode.js +0 -5
  135. package/cjs/Enums/Modes/ThemeMode.js +0 -6
  136. package/cjs/Enums/Types/DivType.js +0 -5
  137. package/cjs/Enums/Types/InteractorType.js +0 -5
  138. package/cjs/Options/Classes/Interactivity/Events/ClickEvent.js +0 -18
  139. package/cjs/Options/Classes/Interactivity/Events/DivEvent.js +0 -27
  140. package/cjs/Options/Classes/Interactivity/Events/Events.js +0 -30
  141. package/cjs/Options/Classes/Interactivity/Events/HoverEvent.js +0 -21
  142. package/cjs/Options/Classes/Interactivity/Events/Parallax.js +0 -22
  143. package/cjs/Options/Classes/Interactivity/Interactivity.js +0 -22
  144. package/cjs/Options/Classes/Interactivity/Modes/Modes.js +0 -25
  145. package/cjs/Options/Classes/ManualParticle.js +0 -21
  146. package/cjs/Options/Classes/Responsive.js +0 -29
  147. package/cjs/Options/Classes/Theme/Theme.js +0 -21
  148. package/cjs/Options/Classes/Theme/ThemeDefault.js +0 -23
  149. package/cjs/Options/Interfaces/IManualParticle.js +0 -1
  150. package/cjs/Options/Interfaces/IResponsive.js +0 -1
  151. package/cjs/Options/Interfaces/Interactivity/Events/IClickEvent.js +0 -1
  152. package/cjs/Options/Interfaces/Interactivity/Events/IDivEvent.js +0 -1
  153. package/cjs/Options/Interfaces/Interactivity/Events/IEvents.js +0 -1
  154. package/cjs/Options/Interfaces/Interactivity/Events/IHoverEvent.js +0 -1
  155. package/cjs/Options/Interfaces/Interactivity/Events/IParallax.js +0 -1
  156. package/cjs/Options/Interfaces/Interactivity/IInteractivity.js +0 -1
  157. package/cjs/Options/Interfaces/Interactivity/Modes/IModeDiv.js +0 -1
  158. package/cjs/Options/Interfaces/Interactivity/Modes/IModes.js +0 -1
  159. package/cjs/Options/Interfaces/Theme/ITheme.js +0 -1
  160. package/cjs/Options/Interfaces/Theme/IThemeDefault.js +0 -1
  161. package/esm/Core/Interfaces/IContainerInteractivity.js +0 -1
  162. package/esm/Core/Interfaces/IExternalInteractor.js +0 -1
  163. package/esm/Core/Interfaces/IInteractor.js +0 -1
  164. package/esm/Core/Interfaces/IMouseData.js +0 -1
  165. package/esm/Core/Interfaces/IParticlesInteractor.js +0 -1
  166. package/esm/Core/Utils/ExternalInteractorBase.js +0 -7
  167. package/esm/Core/Utils/InteractionManager.js +0 -60
  168. package/esm/Core/Utils/ParticlesInteractorBase.js +0 -7
  169. package/esm/Enums/InteractivityDetect.js +0 -6
  170. package/esm/Enums/Modes/ResponsiveMode.js +0 -5
  171. package/esm/Enums/Modes/ThemeMode.js +0 -6
  172. package/esm/Enums/Types/DivType.js +0 -5
  173. package/esm/Enums/Types/InteractorType.js +0 -5
  174. package/esm/Options/Classes/Interactivity/Events/ClickEvent.js +0 -18
  175. package/esm/Options/Classes/Interactivity/Events/DivEvent.js +0 -27
  176. package/esm/Options/Classes/Interactivity/Events/Events.js +0 -30
  177. package/esm/Options/Classes/Interactivity/Events/HoverEvent.js +0 -21
  178. package/esm/Options/Classes/Interactivity/Events/Parallax.js +0 -22
  179. package/esm/Options/Classes/Interactivity/Interactivity.js +0 -22
  180. package/esm/Options/Classes/Interactivity/Modes/Modes.js +0 -25
  181. package/esm/Options/Classes/ManualParticle.js +0 -21
  182. package/esm/Options/Classes/Responsive.js +0 -29
  183. package/esm/Options/Classes/Theme/Theme.js +0 -21
  184. package/esm/Options/Classes/Theme/ThemeDefault.js +0 -23
  185. package/esm/Options/Interfaces/IManualParticle.js +0 -1
  186. package/esm/Options/Interfaces/IResponsive.js +0 -1
  187. package/esm/Options/Interfaces/Interactivity/Events/IClickEvent.js +0 -1
  188. package/esm/Options/Interfaces/Interactivity/Events/IDivEvent.js +0 -1
  189. package/esm/Options/Interfaces/Interactivity/Events/IEvents.js +0 -1
  190. package/esm/Options/Interfaces/Interactivity/Events/IHoverEvent.js +0 -1
  191. package/esm/Options/Interfaces/Interactivity/Events/IParallax.js +0 -1
  192. package/esm/Options/Interfaces/Interactivity/IInteractivity.js +0 -1
  193. package/esm/Options/Interfaces/Interactivity/Modes/IModeDiv.js +0 -1
  194. package/esm/Options/Interfaces/Interactivity/Modes/IModes.js +0 -1
  195. package/esm/Options/Interfaces/Theme/ITheme.js +0 -1
  196. package/esm/Options/Interfaces/Theme/IThemeDefault.js +0 -1
  197. package/types/Core/Interfaces/IContainerInteractivity.d.ts +0 -6
  198. package/types/Core/Interfaces/IExternalInteractor.d.ts +0 -12
  199. package/types/Core/Interfaces/IInteractor.d.ts +0 -16
  200. package/types/Core/Interfaces/IMouseData.d.ts +0 -9
  201. package/types/Core/Interfaces/IParticlesInteractor.d.ts +0 -7
  202. package/types/Core/Utils/ExternalInteractorBase.d.ts +0 -15
  203. package/types/Core/Utils/InteractionManager.d.ts +0 -17
  204. package/types/Core/Utils/ParticlesInteractorBase.d.ts +0 -15
  205. package/types/Enums/InteractivityDetect.d.ts +0 -5
  206. package/types/Enums/Modes/ResponsiveMode.d.ts +0 -4
  207. package/types/Enums/Modes/ThemeMode.d.ts +0 -5
  208. package/types/Enums/Types/DivType.d.ts +0 -4
  209. package/types/Enums/Types/InteractorType.d.ts +0 -4
  210. package/types/Options/Classes/Interactivity/Events/ClickEvent.d.ts +0 -10
  211. package/types/Options/Classes/Interactivity/Events/DivEvent.d.ts +0 -13
  212. package/types/Options/Classes/Interactivity/Events/Events.d.ts +0 -16
  213. package/types/Options/Classes/Interactivity/Events/HoverEvent.d.ts +0 -12
  214. package/types/Options/Classes/Interactivity/Events/Parallax.d.ts +0 -10
  215. package/types/Options/Classes/Interactivity/Events/ResizeEvent.d.ts +0 -9
  216. package/types/Options/Classes/Interactivity/Interactivity.d.ts +0 -16
  217. package/types/Options/Classes/Interactivity/Modes/Modes.d.ts +0 -12
  218. package/types/Options/Classes/ManualParticle.d.ts +0 -10
  219. package/types/Options/Classes/Responsive.d.ts +0 -12
  220. package/types/Options/Classes/Theme/Theme.d.ts +0 -12
  221. package/types/Options/Classes/Theme/ThemeDefault.d.ts +0 -11
  222. package/types/Options/Interfaces/IManualParticle.d.ts +0 -7
  223. package/types/Options/Interfaces/IResponsive.d.ts +0 -7
  224. package/types/Options/Interfaces/Interactivity/Events/IClickEvent.d.ts +0 -5
  225. package/types/Options/Interfaces/Interactivity/Events/IDivEvent.d.ts +0 -8
  226. package/types/Options/Interfaces/Interactivity/Events/IEvents.d.ts +0 -11
  227. package/types/Options/Interfaces/Interactivity/Events/IHoverEvent.d.ts +0 -7
  228. package/types/Options/Interfaces/Interactivity/Events/IParallax.d.ts +0 -5
  229. package/types/Options/Interfaces/Interactivity/IInteractivity.d.ts +0 -9
  230. package/types/Options/Interfaces/Interactivity/Modes/IModeDiv.d.ts +0 -4
  231. package/types/Options/Interfaces/Interactivity/Modes/IModes.d.ts +0 -1
  232. package/types/Options/Interfaces/Theme/ITheme.d.ts +0 -7
  233. package/types/Options/Interfaces/Theme/IThemeDefault.d.ts +0 -6
  234. package/umd/Core/Interfaces/IMouseData.js +0 -12
  235. package/umd/Core/Interfaces/IParticlesInteractor.js +0 -12
  236. package/umd/Core/Utils/ExternalInteractorBase.js +0 -21
  237. package/umd/Core/Utils/InteractionManager.js +0 -74
  238. package/umd/Core/Utils/ParticlesInteractorBase.js +0 -21
  239. package/umd/Enums/InteractivityDetect.js +0 -19
  240. package/umd/Enums/Modes/ResponsiveMode.js +0 -18
  241. package/umd/Enums/Modes/ThemeMode.js +0 -19
  242. package/umd/Enums/Types/DivType.js +0 -18
  243. package/umd/Enums/Types/InteractorType.js +0 -18
  244. package/umd/Options/Classes/Interactivity/Events/ClickEvent.js +0 -32
  245. package/umd/Options/Classes/Interactivity/Events/DivEvent.js +0 -41
  246. package/umd/Options/Classes/Interactivity/Events/Events.js +0 -44
  247. package/umd/Options/Classes/Interactivity/Events/HoverEvent.js +0 -35
  248. package/umd/Options/Classes/Interactivity/Events/Parallax.js +0 -36
  249. package/umd/Options/Classes/Interactivity/Interactivity.js +0 -36
  250. package/umd/Options/Classes/Interactivity/Modes/Modes.js +0 -39
  251. package/umd/Options/Classes/ManualParticle.js +0 -35
  252. package/umd/Options/Classes/Responsive.js +0 -43
  253. package/umd/Options/Classes/Theme/Theme.js +0 -35
  254. package/umd/Options/Classes/Theme/ThemeDefault.js +0 -37
  255. package/umd/Options/Interfaces/IManualParticle.js +0 -12
  256. package/umd/Options/Interfaces/IResponsive.js +0 -12
  257. package/umd/Options/Interfaces/Interactivity/Events/IClickEvent.js +0 -12
  258. package/umd/Options/Interfaces/Interactivity/Events/IDivEvent.js +0 -12
  259. package/umd/Options/Interfaces/Interactivity/Events/IEvents.js +0 -12
  260. package/umd/Options/Interfaces/Interactivity/Events/IHoverEvent.js +0 -12
  261. package/umd/Options/Interfaces/Interactivity/Events/IParallax.js +0 -12
  262. package/umd/Options/Interfaces/Interactivity/IInteractivity.js +0 -12
  263. package/umd/Options/Interfaces/Interactivity/Modes/IModeDiv.js +0 -12
  264. package/umd/Options/Interfaces/Interactivity/Modes/IModes.js +0 -12
  265. package/umd/Options/Interfaces/Theme/ITheme.js +0 -12
  266. package/umd/Options/Interfaces/Theme/IThemeDefault.js +0 -12
  267. /package/browser/Core/Interfaces/{IContainerInteractivity.js → IParticleOpacityData.js} +0 -0
  268. /package/browser/Core/Interfaces/{IExternalInteractor.js → IParticleRotateData.js} +0 -0
  269. /package/browser/Options/Interfaces/{Interactivity/Events/IResizeEvent.js → IResizeEvent.js} +0 -0
  270. /package/browser/{Core/Interfaces/IInteractor.js → Types/EngineInitializers.js} +0 -0
  271. /package/{browser/Core/Interfaces/IMouseData.js → cjs/Core/Interfaces/IParticleOpacityData.js} +0 -0
  272. /package/{browser/Core/Interfaces/IParticlesInteractor.js → cjs/Core/Interfaces/IParticleRotateData.js} +0 -0
  273. /package/cjs/Options/Interfaces/{Interactivity/Events/IResizeEvent.js → IResizeEvent.js} +0 -0
  274. /package/{browser/Options/Interfaces/IManualParticle.js → cjs/Types/EngineInitializers.js} +0 -0
  275. /package/{browser/Options/Interfaces/IResponsive.js → esm/Core/Interfaces/IParticleOpacityData.js} +0 -0
  276. /package/{browser/Options/Interfaces/Interactivity/Events/IClickEvent.js → esm/Core/Interfaces/IParticleRotateData.js} +0 -0
  277. /package/esm/Options/Interfaces/{Interactivity/Events/IResizeEvent.js → IResizeEvent.js} +0 -0
  278. /package/{browser/Options/Interfaces/Interactivity/Events/IDivEvent.js → esm/Types/EngineInitializers.js} +0 -0
  279. /package/types/Options/Interfaces/{Interactivity/Events/IResizeEvent.d.ts → IResizeEvent.d.ts} +0 -0
  280. /package/umd/Core/Interfaces/{IContainerInteractivity.js → IParticleOpacityData.js} +0 -0
  281. /package/umd/Core/Interfaces/{IExternalInteractor.js → IParticleRotateData.js} +0 -0
  282. /package/umd/Options/Interfaces/{Interactivity/Events/IResizeEvent.js → IResizeEvent.js} +0 -0
  283. /package/umd/{Core/Interfaces/IInteractor.js → Types/EngineInitializers.js} +0 -0
@@ -4,65 +4,19 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./Constants.js", "../../Utils/Utils.js", "../../Enums/InteractivityDetect.js", "../../Utils/TypeUtils.js"], factory);
7
+ define(["require", "exports", "../../Utils/Utils.js", "./Constants.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.EventListeners = void 0;
13
- const Constants_js_1 = require("./Constants.js");
14
13
  const Utils_js_1 = require("../../Utils/Utils.js");
15
- const InteractivityDetect_js_1 = require("../../Enums/InteractivityDetect.js");
16
- const TypeUtils_js_1 = require("../../Utils/TypeUtils.js");
17
- function manageListener(element, event, handler, add, options) {
18
- if (add) {
19
- let addOptions = { passive: true };
20
- if ((0, TypeUtils_js_1.isBoolean)(options)) {
21
- addOptions.capture = options;
22
- }
23
- else if (options !== undefined) {
24
- addOptions = options;
25
- }
26
- element.addEventListener(event, handler, addOptions);
27
- }
28
- else {
29
- const removeOptions = options;
30
- element.removeEventListener(event, handler, removeOptions);
31
- }
32
- }
14
+ const Constants_js_1 = require("./Constants.js");
33
15
  class EventListeners {
34
16
  constructor(container) {
35
17
  this.container = container;
36
- this._canPush = true;
37
- this._doMouseTouchClick = e => {
38
- const container = this.container, options = container.actualOptions;
39
- if (this._canPush) {
40
- const mouseInteractivity = container.interactivity.mouse, mousePos = mouseInteractivity.position;
41
- if (!mousePos) {
42
- return;
43
- }
44
- mouseInteractivity.clickPosition = { ...mousePos };
45
- mouseInteractivity.clickTime = Date.now();
46
- const onClick = options.interactivity.events.onClick;
47
- (0, Utils_js_1.executeOnSingleOrMultiple)(onClick.mode, mode => {
48
- this.container.handleClickMode(mode);
49
- });
50
- }
51
- if (e.type === "touchend") {
52
- setTimeout(() => {
53
- this._mouseTouchFinish();
54
- }, Constants_js_1.touchDelay);
55
- }
56
- };
57
- this._handleThemeChange = (e) => {
58
- const mediaEvent = e, container = this.container, options = container.options, defaultThemes = options.defaultThemes, themeName = mediaEvent.matches ? defaultThemes.dark : defaultThemes.light, theme = options.themes.find(theme => theme.name === themeName);
59
- if (theme?.default.auto) {
60
- void container.loadTheme(themeName);
61
- }
62
- };
63
18
  this._handleVisibilityChange = () => {
64
19
  const container = this.container, options = container.actualOptions;
65
- this._mouseTouchFinish();
66
20
  if (!options.pauseOnBlur) {
67
21
  return;
68
22
  }
@@ -89,64 +43,20 @@
89
43
  const canvas = this.container.canvas;
90
44
  await canvas.windowResize();
91
45
  };
92
- this._resizeTimeout = setTimeout(() => void handleResize(), this.container.actualOptions.interactivity.events.resize.delay * Constants_js_1.millisecondsToSeconds);
93
- };
94
- this._manageInteractivityListeners = (mouseLeaveTmpEvent, add) => {
95
- const handlers = this._handlers, container = this.container, options = container.actualOptions, interactivityEl = container.interactivity.element;
96
- if (!interactivityEl) {
97
- return;
98
- }
99
- const html = interactivityEl, canvas = container.canvas;
100
- canvas.setPointerEvents(html === canvas.element ? "initial" : "none");
101
- if (!(options.interactivity.events.onHover.enable || options.interactivity.events.onClick.enable)) {
102
- return;
103
- }
104
- manageListener(interactivityEl, Constants_js_1.mouseMoveEvent, handlers.mouseMove, add);
105
- manageListener(interactivityEl, Constants_js_1.touchStartEvent, handlers.touchStart, add);
106
- manageListener(interactivityEl, Constants_js_1.touchMoveEvent, handlers.touchMove, add);
107
- if (options.interactivity.events.onClick.enable) {
108
- manageListener(interactivityEl, Constants_js_1.touchEndEvent, handlers.touchEndClick, add);
109
- manageListener(interactivityEl, Constants_js_1.mouseUpEvent, handlers.mouseUp, add);
110
- manageListener(interactivityEl, Constants_js_1.mouseDownEvent, handlers.mouseDown, add);
111
- }
112
- else {
113
- manageListener(interactivityEl, Constants_js_1.touchEndEvent, handlers.touchEnd, add);
114
- }
115
- manageListener(interactivityEl, mouseLeaveTmpEvent, handlers.mouseLeave, add);
116
- manageListener(interactivityEl, Constants_js_1.touchCancelEvent, handlers.touchCancel, add);
46
+ this._resizeTimeout = setTimeout(() => void handleResize(), this.container.actualOptions.resize.delay * Constants_js_1.millisecondsToSeconds);
117
47
  };
118
48
  this._manageListeners = add => {
119
- const handlers = this._handlers, container = this.container, options = container.actualOptions, detectType = options.interactivity.detectsOn, canvasEl = container.canvas.element;
120
- let mouseLeaveTmpEvent = Constants_js_1.mouseLeaveEvent;
121
- if (detectType === InteractivityDetect_js_1.InteractivityDetect.window) {
122
- container.interactivity.element = window;
123
- mouseLeaveTmpEvent = Constants_js_1.mouseOutEvent;
124
- }
125
- else if (detectType === InteractivityDetect_js_1.InteractivityDetect.parent && canvasEl) {
126
- container.interactivity.element = canvasEl.parentElement ?? canvasEl.parentNode;
127
- }
128
- else {
129
- container.interactivity.element = canvasEl;
130
- }
131
- this._manageMediaMatch(add);
132
- this._manageResize(add);
133
- this._manageInteractivityListeners(mouseLeaveTmpEvent, add);
134
- manageListener(document, Constants_js_1.visibilityChangeEvent, handlers.visibilityChange, add, false);
135
- };
136
- this._manageMediaMatch = add => {
137
49
  const handlers = this._handlers;
138
- if (!this._matchMedia) {
139
- return;
140
- }
141
- manageListener(this._matchMedia, "change", handlers.themeChange, add);
50
+ this._manageResize(add);
51
+ (0, Utils_js_1.manageListener)(document, Constants_js_1.visibilityChangeEvent, handlers.visibilityChange, add, false);
142
52
  };
143
53
  this._manageResize = add => {
144
54
  const handlers = this._handlers, container = this.container, options = container.actualOptions;
145
- if (!options.interactivity.events.resize.enable) {
55
+ if (!options.resize.enable) {
146
56
  return;
147
57
  }
148
58
  if (typeof ResizeObserver === "undefined") {
149
- manageListener(globalThis, Constants_js_1.resizeEvent, handlers.resize, add);
59
+ (0, Utils_js_1.manageListener)(globalThis, Constants_js_1.resizeEvent, handlers.resize, add);
150
60
  return;
151
61
  }
152
62
  const canvasEl = container.canvas.element;
@@ -168,165 +78,10 @@
168
78
  this._resizeObserver.observe(canvasEl);
169
79
  }
170
80
  };
171
- this._mouseDown = () => {
172
- const { interactivity } = this.container, { mouse } = interactivity;
173
- mouse.clicking = true;
174
- mouse.downPosition = mouse.position;
175
- };
176
- this._mouseTouchClick = e => {
177
- const container = this.container, options = container.actualOptions, { mouse } = container.interactivity;
178
- mouse.inside = true;
179
- let handled = false;
180
- const mousePosition = mouse.position;
181
- if (!mousePosition || !options.interactivity.events.onClick.enable) {
182
- return;
183
- }
184
- for (const plugin of container.plugins.values()) {
185
- if (!plugin.clickPositionValid) {
186
- continue;
187
- }
188
- handled = plugin.clickPositionValid(mousePosition);
189
- if (handled) {
190
- break;
191
- }
192
- }
193
- if (!handled) {
194
- this._doMouseTouchClick(e);
195
- }
196
- mouse.clicking = false;
197
- };
198
- this._mouseTouchFinish = () => {
199
- const { interactivity } = this.container, { mouse } = interactivity;
200
- delete mouse.position;
201
- delete mouse.clickPosition;
202
- delete mouse.downPosition;
203
- interactivity.status = Constants_js_1.mouseLeaveEvent;
204
- mouse.inside = false;
205
- mouse.clicking = false;
206
- };
207
- this._mouseTouchMove = e => {
208
- const container = this.container, options = container.actualOptions, interactivity = container.interactivity, canvasEl = container.canvas.element;
209
- if (!interactivity.element) {
210
- return;
211
- }
212
- interactivity.mouse.inside = true;
213
- let pos;
214
- if (e.type.startsWith("pointer")) {
215
- this._canPush = true;
216
- const mouseEvent = e;
217
- if (interactivity.element === window) {
218
- if (canvasEl) {
219
- const clientRect = canvasEl.getBoundingClientRect();
220
- pos = {
221
- x: mouseEvent.clientX - clientRect.left,
222
- y: mouseEvent.clientY - clientRect.top,
223
- };
224
- }
225
- }
226
- else if (options.interactivity.detectsOn === InteractivityDetect_js_1.InteractivityDetect.parent) {
227
- const source = mouseEvent.target, target = mouseEvent.currentTarget;
228
- if (canvasEl) {
229
- const sourceRect = source.getBoundingClientRect(), targetRect = target.getBoundingClientRect(), canvasRect = canvasEl.getBoundingClientRect();
230
- pos = {
231
- x: mouseEvent.offsetX + Constants_js_1.double * sourceRect.left - (targetRect.left + canvasRect.left),
232
- y: mouseEvent.offsetY + Constants_js_1.double * sourceRect.top - (targetRect.top + canvasRect.top),
233
- };
234
- }
235
- else {
236
- pos = {
237
- x: mouseEvent.offsetX,
238
- y: mouseEvent.offsetY,
239
- };
240
- }
241
- }
242
- else if (mouseEvent.target === canvasEl) {
243
- pos = {
244
- x: mouseEvent.offsetX,
245
- y: mouseEvent.offsetY,
246
- };
247
- }
248
- }
249
- else {
250
- this._canPush = e.type !== "touchmove";
251
- if (canvasEl) {
252
- const touchEvent = e, lastTouch = touchEvent.touches[touchEvent.touches.length - Constants_js_1.lengthOffset], canvasRect = canvasEl.getBoundingClientRect();
253
- if (!lastTouch) {
254
- return;
255
- }
256
- pos = {
257
- x: lastTouch.clientX - canvasRect.left,
258
- y: lastTouch.clientY - canvasRect.top,
259
- };
260
- }
261
- }
262
- const pxRatio = container.retina.pixelRatio;
263
- if (pos) {
264
- pos.x *= pxRatio;
265
- pos.y *= pxRatio;
266
- }
267
- interactivity.mouse.position = pos;
268
- interactivity.status = Constants_js_1.mouseMoveEvent;
269
- };
270
- this._touchEnd = e => {
271
- const evt = e, touches = Array.from(evt.changedTouches);
272
- for (const touch of touches) {
273
- this._touches.delete(touch.identifier);
274
- }
275
- this._mouseTouchFinish();
276
- };
277
- this._touchEndClick = e => {
278
- const evt = e, touches = Array.from(evt.changedTouches);
279
- for (const touch of touches) {
280
- this._touches.delete(touch.identifier);
281
- }
282
- this._mouseTouchClick(e);
283
- };
284
- this._touchStart = e => {
285
- const evt = e, touches = Array.from(evt.changedTouches);
286
- for (const touch of touches) {
287
- this._touches.set(touch.identifier, performance.now());
288
- }
289
- this._mouseTouchMove(e);
290
- };
291
- this._matchMedia = (0, Utils_js_1.safeMatchMedia)("(prefers-color-scheme: dark)");
292
- this._touches = new Map();
293
81
  this._handlers = {
294
- mouseDown: () => {
295
- this._mouseDown();
296
- },
297
- mouseLeave: () => {
298
- this._mouseTouchFinish();
299
- },
300
- mouseMove: (e) => {
301
- this._mouseTouchMove(e);
302
- },
303
- mouseUp: (e) => {
304
- this._mouseTouchClick(e);
305
- },
306
- touchStart: (e) => {
307
- this._touchStart(e);
308
- },
309
- touchMove: (e) => {
310
- this._mouseTouchMove(e);
311
- },
312
- touchEnd: (e) => {
313
- this._touchEnd(e);
314
- },
315
- touchCancel: (e) => {
316
- this._touchEnd(e);
317
- },
318
- touchEndClick: (e) => {
319
- this._touchEndClick(e);
320
- },
321
82
  visibilityChange: () => {
322
83
  this._handleVisibilityChange();
323
84
  },
324
- themeChange: (e) => {
325
- this._handleThemeChange(e);
326
- },
327
- oldThemeChange: (e) => {
328
- this._handleThemeChange(e);
329
- },
330
85
  resize: () => {
331
86
  this._handleWindowResize();
332
87
  },
@@ -4,7 +4,7 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "../../Utils/Utils.js", "../../Utils/TypeUtils.js", "./Background/Background.js", "./FullScreen/FullScreen.js", "./Interactivity/Interactivity.js", "./ManualParticle.js", "./Responsive.js", "../../Enums/Modes/ResponsiveMode.js", "./Theme/Theme.js", "../../Enums/Modes/ThemeMode.js", "../../Utils/OptionsUtils.js", "../../Utils/MathUtils.js"], factory);
7
+ define(["require", "exports", "../../Utils/Utils.js", "../../Utils/TypeUtils.js", "./Background/Background.js", "./FullScreen/FullScreen.js", "./ResizeEvent.js", "../../Utils/OptionsUtils.js", "../../Utils/MathUtils.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -14,20 +14,11 @@
14
14
  const TypeUtils_js_1 = require("../../Utils/TypeUtils.js");
15
15
  const Background_js_1 = require("./Background/Background.js");
16
16
  const FullScreen_js_1 = require("./FullScreen/FullScreen.js");
17
- const Interactivity_js_1 = require("./Interactivity/Interactivity.js");
18
- const ManualParticle_js_1 = require("./ManualParticle.js");
19
- const Responsive_js_1 = require("./Responsive.js");
20
- const ResponsiveMode_js_1 = require("../../Enums/Modes/ResponsiveMode.js");
21
- const Theme_js_1 = require("./Theme/Theme.js");
22
- const ThemeMode_js_1 = require("../../Enums/Modes/ThemeMode.js");
17
+ const ResizeEvent_js_1 = require("./ResizeEvent.js");
23
18
  const OptionsUtils_js_1 = require("../../Utils/OptionsUtils.js");
24
19
  const MathUtils_js_1 = require("../../Utils/MathUtils.js");
25
20
  class Options {
26
21
  constructor(engine, container) {
27
- this._findDefaultTheme = mode => {
28
- return (this.themes.find(theme => theme.default.value && theme.default.mode === mode) ??
29
- this.themes.find(theme => theme.default.value && theme.default.mode === ThemeMode_js_1.ThemeMode.any));
30
- };
31
22
  this._importPreset = preset => {
32
23
  this.load(this._engine.getPreset(preset));
33
24
  };
@@ -43,15 +34,12 @@
43
34
  this.duration = 0;
44
35
  this.fpsLimit = 120;
45
36
  this.hdr = true;
46
- this.interactivity = new Interactivity_js_1.Interactivity(engine, container);
47
- this.manualParticles = [];
48
37
  this.particles = (0, OptionsUtils_js_1.loadParticlesOptions)(this._engine, this._container);
49
38
  this.pauseOnBlur = true;
50
39
  this.pauseOnOutsideViewport = true;
51
- this.responsive = [];
40
+ this.resize = new ResizeEvent_js_1.ResizeEvent();
52
41
  this.smooth = false;
53
42
  this.style = {};
54
- this.themes = [];
55
43
  this.zLayers = 100;
56
44
  }
57
45
  load(data) {
@@ -109,71 +97,15 @@
109
97
  else {
110
98
  this.fullScreen.load(fullScreen);
111
99
  }
112
- this.interactivity.load(data.interactivity);
113
- if (data.manualParticles) {
114
- this.manualParticles = data.manualParticles.map(t => {
115
- const tmp = new ManualParticle_js_1.ManualParticle();
116
- tmp.load(t);
117
- return tmp;
118
- });
119
- }
120
100
  this.particles.load(data.particles);
101
+ this.resize.load(data.resize);
121
102
  this.style = (0, Utils_js_1.deepExtend)(this.style, data.style);
122
- this._engine.loadOptions(this, data);
123
103
  if (data.smooth !== undefined) {
124
104
  this.smooth = data.smooth;
125
105
  }
126
- const interactors = this._engine.interactors.get(this._container);
127
- if (interactors) {
128
- for (const interactor of interactors) {
129
- if (interactor.loadOptions) {
130
- interactor.loadOptions(this, data);
131
- }
132
- }
133
- }
134
- if (data.responsive !== undefined) {
135
- for (const responsive of data.responsive) {
136
- const optResponsive = new Responsive_js_1.Responsive();
137
- optResponsive.load(responsive);
138
- this.responsive.push(optResponsive);
139
- }
140
- }
141
- this.responsive.sort((a, b) => a.maxWidth - b.maxWidth);
142
- if (data.themes !== undefined) {
143
- for (const theme of data.themes) {
144
- const existingTheme = this.themes.find(t => t.name === theme.name);
145
- if (existingTheme) {
146
- existingTheme.load(theme);
147
- }
148
- else {
149
- const optTheme = new Theme_js_1.Theme();
150
- optTheme.load(theme);
151
- this.themes.push(optTheme);
152
- }
153
- }
154
- }
155
- this.defaultThemes.dark = this._findDefaultTheme(ThemeMode_js_1.ThemeMode.dark)?.name;
156
- this.defaultThemes.light = this._findDefaultTheme(ThemeMode_js_1.ThemeMode.light)?.name;
157
- }
158
- setResponsive(width, pxRatio, defaultOptions) {
159
- this.load(defaultOptions);
160
- const responsiveOptions = this.responsive.find(t => t.mode === ResponsiveMode_js_1.ResponsiveMode.screen ? t.maxWidth > screen.availWidth : t.maxWidth * pxRatio > width);
161
- this.load(responsiveOptions?.options);
162
- return responsiveOptions?.maxWidth;
163
- }
164
- setTheme(name) {
165
- if (name) {
166
- const chosenTheme = this.themes.find(theme => theme.name === name);
167
- if (chosenTheme) {
168
- this.load(chosenTheme.options);
169
- }
170
- }
171
- else {
172
- const mediaMatch = (0, Utils_js_1.safeMatchMedia)("(prefers-color-scheme: dark)"), clientDarkMode = mediaMatch?.matches, defaultTheme = this._findDefaultTheme(clientDarkMode ? ThemeMode_js_1.ThemeMode.dark : ThemeMode_js_1.ThemeMode.light);
173
- if (defaultTheme) {
174
- this.load(defaultTheme.options);
175
- }
176
- }
106
+ this._engine.plugins.forEach(plugin => {
107
+ plugin.loadOptions(this._container, this, data);
108
+ });
177
109
  }
178
110
  }
179
111
  exports.Options = Options;
@@ -67,9 +67,6 @@
67
67
  this.shape.load(data.shape);
68
68
  this.size.load(data.size);
69
69
  this.zIndex.load(data.zIndex);
70
- if (data.interactivity !== undefined) {
71
- this.interactivity = (0, Utils_js_1.deepExtend)({}, data.interactivity);
72
- }
73
70
  const strokeToLoad = data.stroke;
74
71
  if (strokeToLoad) {
75
72
  this.stroke = (0, Utils_js_1.executeOnSingleOrMultiple)(strokeToLoad, t => {
@@ -79,6 +76,11 @@
79
76
  });
80
77
  }
81
78
  if (this._container) {
79
+ for (const plugin of this._engine.plugins) {
80
+ if (plugin.loadParticlesOptions) {
81
+ plugin.loadParticlesOptions(this._container, this, data);
82
+ }
83
+ }
82
84
  const updaters = this._engine.updaters.get(this._container);
83
85
  if (updaters) {
84
86
  for (const updater of updaters) {
@@ -87,14 +89,6 @@
87
89
  }
88
90
  }
89
91
  }
90
- const interactors = this._engine.interactors.get(this._container);
91
- if (interactors) {
92
- for (const interactor of interactors) {
93
- if (interactor.loadParticlesOptions) {
94
- interactor.loadParticlesOptions(this, data);
95
- }
96
- }
97
- }
98
92
  }
99
93
  }
100
94
  }
@@ -4,13 +4,13 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "../../../../Utils/TypeUtils.js"], factory);
7
+ define(["require", "exports", "../../Utils/TypeUtils.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ResizeEvent = void 0;
13
- const TypeUtils_js_1 = require("../../../../Utils/TypeUtils.js");
13
+ const TypeUtils_js_1 = require("../../Utils/TypeUtils.js");
14
14
  class ResizeEvent {
15
15
  constructor() {
16
16
  this.delay = 0.5;
@@ -53,15 +53,7 @@
53
53
  context.clearRect(Constants_js_1.originPoint.x, Constants_js_1.originPoint.y, dimension.width, dimension.height);
54
54
  }
55
55
  function drawParticle(data) {
56
- const { container, context, particle, delta, colorStyles, radius, opacity, transform } = data, pos = particle.getPosition(), angle = particle.getAngle(), rotateData = {
57
- sin: Math.sin(angle),
58
- cos: Math.cos(angle),
59
- }, rotating = particle.isRotating, transformData = {
60
- a: rotateData.cos * (transform.a ?? Constants_js_1.defaultTransform.a),
61
- b: rotating ? rotateData.sin * (transform.b ?? Constants_js_1.identity) : (transform.b ?? Constants_js_1.defaultTransform.b),
62
- c: rotating ? -rotateData.sin * (transform.c ?? Constants_js_1.identity) : (transform.c ?? Constants_js_1.defaultTransform.c),
63
- d: rotateData.cos * (transform.d ?? Constants_js_1.defaultTransform.d),
64
- };
56
+ const { container, context, particle, delta, colorStyles, radius, opacity, transform } = data, pos = particle.getPosition(), transformData = particle.getTransformData(transform);
65
57
  context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);
66
58
  if (colorStyles.fill) {
67
59
  context.fillStyle = colorStyles.fill;
@@ -72,24 +64,25 @@
72
64
  context.strokeStyle = colorStyles.stroke;
73
65
  }
74
66
  const drawData = {
75
- container,
76
67
  context,
77
68
  particle,
78
69
  radius,
79
70
  opacity,
80
71
  delta,
72
+ pixelRatio: container.retina.pixelRatio,
73
+ fill: particle.shapeFill,
74
+ stroke: strokeWidth > Constants_js_1.minStrokeWidth || !particle.shapeFill,
81
75
  transformData,
82
- strokeWidth,
83
76
  };
84
- drawBeforeEffect(drawData);
85
- drawShapeBeforeDraw(drawData);
86
- drawShape(drawData);
87
- drawShapeAfterDraw(drawData);
88
- drawAfterEffect(drawData);
77
+ drawBeforeEffect(container, drawData);
78
+ drawShapeBeforeDraw(container, drawData);
79
+ drawShape(container, drawData);
80
+ drawShapeAfterDraw(container, drawData);
81
+ drawAfterEffect(container, drawData);
89
82
  context.resetTransform();
90
83
  }
91
- function drawAfterEffect(data) {
92
- const { container, context, particle, radius, opacity, strokeWidth, delta, transformData } = data;
84
+ function drawAfterEffect(container, data) {
85
+ const { particle } = data;
93
86
  if (!particle.effect) {
94
87
  return;
95
88
  }
@@ -97,20 +90,10 @@
97
90
  if (!drawFunc) {
98
91
  return;
99
92
  }
100
- drawFunc({
101
- context,
102
- particle,
103
- radius,
104
- opacity,
105
- delta,
106
- pixelRatio: container.retina.pixelRatio,
107
- fill: particle.shapeFill,
108
- stroke: strokeWidth > Constants_js_1.minStrokeWidth || !particle.shapeFill,
109
- transformData: { ...transformData },
110
- });
93
+ drawFunc(data);
111
94
  }
112
- function drawBeforeEffect(data) {
113
- const { container, context, particle, radius, opacity, strokeWidth, delta, transformData } = data;
95
+ function drawBeforeEffect(container, data) {
96
+ const { particle } = data;
114
97
  if (!particle.effect) {
115
98
  return;
116
99
  }
@@ -118,20 +101,10 @@
118
101
  if (!drawer?.drawBefore) {
119
102
  return;
120
103
  }
121
- drawer.drawBefore({
122
- context,
123
- particle,
124
- radius,
125
- opacity,
126
- delta,
127
- pixelRatio: container.retina.pixelRatio,
128
- fill: particle.shapeFill,
129
- stroke: strokeWidth > Constants_js_1.minStrokeWidth || !particle.shapeFill,
130
- transformData: { ...transformData },
131
- });
104
+ drawer.drawBefore(data);
132
105
  }
133
- function drawShape(data) {
134
- const { container, context, particle, radius, opacity, delta, strokeWidth, transformData } = data;
106
+ function drawShape(container, data) {
107
+ const { context, particle, stroke } = data;
135
108
  if (!particle.shape) {
136
109
  return;
137
110
  }
@@ -140,29 +113,19 @@
140
113
  return;
141
114
  }
142
115
  context.beginPath();
143
- drawer.draw({
144
- context,
145
- particle,
146
- radius,
147
- opacity,
148
- delta,
149
- pixelRatio: container.retina.pixelRatio,
150
- fill: particle.shapeFill,
151
- stroke: strokeWidth > Constants_js_1.minStrokeWidth || !particle.shapeFill,
152
- transformData: { ...transformData },
153
- });
116
+ drawer.draw(data);
154
117
  if (particle.shapeClose) {
155
118
  context.closePath();
156
119
  }
157
- if (strokeWidth > Constants_js_1.minStrokeWidth) {
120
+ if (stroke) {
158
121
  context.stroke();
159
122
  }
160
123
  if (particle.shapeFill) {
161
124
  context.fill();
162
125
  }
163
126
  }
164
- function drawShapeAfterDraw(data) {
165
- const { container, context, particle, radius, opacity, strokeWidth, delta, transformData } = data;
127
+ function drawShapeAfterDraw(container, data) {
128
+ const { particle } = data;
166
129
  if (!particle.shape) {
167
130
  return;
168
131
  }
@@ -170,20 +133,10 @@
170
133
  if (!drawer?.afterDraw) {
171
134
  return;
172
135
  }
173
- drawer.afterDraw({
174
- context,
175
- particle,
176
- radius,
177
- opacity,
178
- delta,
179
- pixelRatio: container.retina.pixelRatio,
180
- fill: particle.shapeFill,
181
- stroke: strokeWidth > Constants_js_1.minStrokeWidth || !particle.shapeFill,
182
- transformData: { ...transformData },
183
- });
136
+ drawer.afterDraw(data);
184
137
  }
185
- function drawShapeBeforeDraw(data) {
186
- const { container, context, particle, radius, opacity, strokeWidth, delta, transformData } = data;
138
+ function drawShapeBeforeDraw(container, data) {
139
+ const { particle } = data;
187
140
  if (!particle.shape) {
188
141
  return;
189
142
  }
@@ -191,17 +144,7 @@
191
144
  if (!drawer?.beforeDraw) {
192
145
  return;
193
146
  }
194
- drawer.beforeDraw({
195
- context,
196
- particle,
197
- radius,
198
- opacity,
199
- delta,
200
- pixelRatio: container.retina.pixelRatio,
201
- fill: particle.shapeFill,
202
- stroke: strokeWidth > Constants_js_1.minStrokeWidth || !particle.shapeFill,
203
- transformData: { ...transformData },
204
- });
147
+ drawer.beforeDraw(data);
205
148
  }
206
149
  function drawPlugin(context, plugin, delta) {
207
150
  if (!plugin.draw) {