@tsparticles/engine 3.2.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -4
- package/browser/Core/Canvas.js +34 -29
- package/browser/Core/Container.js +60 -47
- package/browser/Core/Engine.js +82 -74
- package/browser/Core/Particle.js +40 -26
- package/browser/Core/Particles.js +51 -52
- package/browser/Core/Utils/EventListeners.js +18 -17
- package/browser/Core/Utils/ExternalInteractorBase.js +2 -1
- package/browser/Core/Utils/InteractionManager.js +7 -6
- package/browser/Core/Utils/ParticlesInteractorBase.js +2 -1
- package/browser/Core/Utils/QuadTree.js +1 -1
- package/browser/Core/Utils/Ranges.js +5 -4
- package/browser/Enums/AnimationStatus.js +5 -1
- package/browser/Enums/Directions/MoveDirection.js +14 -1
- package/browser/Enums/Directions/OutModeDirection.js +7 -1
- package/browser/Enums/Directions/RotateDirection.js +6 -1
- package/browser/Enums/InteractivityDetect.js +6 -1
- package/browser/Enums/Modes/AnimationMode.js +7 -1
- package/browser/Enums/Modes/CollisionMode.js +6 -1
- package/browser/Enums/Modes/LimitMode.js +5 -1
- package/browser/Enums/Modes/OutMode.js +8 -1
- package/browser/Enums/Modes/PixelMode.js +5 -1
- package/browser/Enums/Modes/ResponsiveMode.js +5 -1
- package/browser/Enums/Modes/ThemeMode.js +6 -1
- package/browser/Enums/Types/AlterType.js +5 -1
- package/browser/Enums/Types/DestroyType.js +6 -1
- package/browser/Enums/Types/DivType.js +5 -1
- package/browser/Enums/Types/EasingType.js +30 -1
- package/browser/Enums/Types/EventType.js +15 -1
- package/browser/Enums/Types/GradientType.js +6 -1
- package/browser/Enums/Types/InteractorType.js +5 -1
- package/browser/Enums/Types/ParticleOutType.js +6 -1
- package/browser/Enums/Types/StartValueType.js +6 -1
- package/browser/Options/Classes/AnimationOptions.js +4 -2
- package/browser/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
- package/browser/Options/Classes/Interactivity/Events/Events.js +1 -1
- package/browser/Options/Classes/Interactivity/Interactivity.js +2 -1
- package/browser/Options/Classes/ManualParticle.js +2 -1
- package/browser/Options/Classes/Options.js +14 -12
- package/browser/Options/Classes/Particles/Collisions/Collisions.js +2 -1
- package/browser/Options/Classes/Particles/Move/Move.js +2 -1
- package/browser/Options/Classes/Particles/Move/MoveCenter.js +2 -1
- package/browser/Options/Classes/Particles/Move/OutModes.js +2 -1
- package/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
- package/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
- package/browser/Options/Classes/Particles/ParticlesOptions.js +1 -1
- package/browser/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
- package/browser/Options/Classes/Responsive.js +5 -4
- package/browser/Options/Classes/Theme/ThemeDefault.js +2 -1
- package/browser/Types/RangeType.js +5 -1
- package/browser/Utils/CanvasUtils.js +27 -21
- package/browser/Utils/ColorUtils.js +17 -9
- package/browser/Utils/EventDispatcher.js +1 -1
- package/browser/Utils/HslColorManager.js +11 -4
- package/browser/Utils/NumberUtils.js +11 -10
- package/browser/Utils/RgbColorManager.js +11 -4
- package/browser/Utils/Utils.js +37 -31
- package/cjs/Core/Canvas.js +34 -29
- package/cjs/Core/Container.js +60 -47
- package/cjs/Core/Engine.js +82 -97
- package/cjs/Core/Particle.js +40 -26
- package/cjs/Core/Particles.js +52 -76
- package/cjs/Core/Utils/EventListeners.js +18 -17
- package/cjs/Core/Utils/ExternalInteractorBase.js +2 -1
- package/cjs/Core/Utils/InteractionManager.js +7 -6
- package/cjs/Core/Utils/ParticlesInteractorBase.js +2 -1
- package/cjs/Core/Utils/QuadTree.js +1 -1
- package/cjs/Core/Utils/Ranges.js +5 -4
- package/cjs/Enums/AnimationStatus.js +6 -0
- package/cjs/Enums/Directions/MoveDirection.js +15 -0
- package/cjs/Enums/Directions/OutModeDirection.js +8 -0
- package/cjs/Enums/Directions/RotateDirection.js +7 -0
- package/cjs/Enums/InteractivityDetect.js +7 -0
- package/cjs/Enums/Modes/AnimationMode.js +8 -0
- package/cjs/Enums/Modes/CollisionMode.js +7 -0
- package/cjs/Enums/Modes/LimitMode.js +6 -0
- package/cjs/Enums/Modes/OutMode.js +9 -0
- package/cjs/Enums/Modes/PixelMode.js +6 -0
- package/cjs/Enums/Modes/ResponsiveMode.js +6 -0
- package/cjs/Enums/Modes/ThemeMode.js +7 -0
- package/cjs/Enums/Types/AlterType.js +6 -0
- package/cjs/Enums/Types/DestroyType.js +7 -0
- package/cjs/Enums/Types/DivType.js +6 -0
- package/cjs/Enums/Types/EasingType.js +31 -0
- package/cjs/Enums/Types/EventType.js +16 -0
- package/cjs/Enums/Types/GradientType.js +7 -0
- package/cjs/Enums/Types/InteractorType.js +6 -0
- package/cjs/Enums/Types/ParticleOutType.js +7 -0
- package/cjs/Enums/Types/StartValueType.js +7 -0
- package/cjs/Options/Classes/AnimationOptions.js +4 -2
- package/cjs/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
- package/cjs/Options/Classes/Interactivity/Events/Events.js +1 -1
- package/cjs/Options/Classes/Interactivity/Interactivity.js +2 -1
- package/cjs/Options/Classes/ManualParticle.js +2 -1
- package/cjs/Options/Classes/Options.js +14 -12
- package/cjs/Options/Classes/Particles/Collisions/Collisions.js +2 -1
- package/cjs/Options/Classes/Particles/Move/Move.js +2 -1
- package/cjs/Options/Classes/Particles/Move/MoveCenter.js +2 -1
- package/cjs/Options/Classes/Particles/Move/OutModes.js +2 -1
- package/cjs/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
- package/cjs/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
- package/cjs/Options/Classes/Particles/ParticlesOptions.js +1 -1
- package/cjs/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
- package/cjs/Options/Classes/Responsive.js +5 -4
- package/cjs/Options/Classes/Theme/ThemeDefault.js +2 -1
- package/cjs/Types/RangeType.js +6 -0
- package/cjs/Utils/CanvasUtils.js +27 -21
- package/cjs/Utils/ColorUtils.js +17 -9
- package/cjs/Utils/EventDispatcher.js +1 -1
- package/cjs/Utils/HslColorManager.js +11 -4
- package/cjs/Utils/NumberUtils.js +11 -10
- package/cjs/Utils/RgbColorManager.js +11 -4
- package/cjs/Utils/Utils.js +37 -31
- package/esm/Core/Canvas.js +34 -29
- package/esm/Core/Container.js +60 -47
- package/esm/Core/Engine.js +82 -74
- package/esm/Core/Particle.js +40 -26
- package/esm/Core/Particles.js +51 -52
- package/esm/Core/Utils/EventListeners.js +18 -17
- package/esm/Core/Utils/ExternalInteractorBase.js +2 -1
- package/esm/Core/Utils/InteractionManager.js +7 -6
- package/esm/Core/Utils/ParticlesInteractorBase.js +2 -1
- package/esm/Core/Utils/QuadTree.js +1 -1
- package/esm/Core/Utils/Ranges.js +5 -4
- package/esm/Enums/AnimationStatus.js +5 -1
- package/esm/Enums/Directions/MoveDirection.js +14 -1
- package/esm/Enums/Directions/OutModeDirection.js +7 -1
- package/esm/Enums/Directions/RotateDirection.js +6 -1
- package/esm/Enums/InteractivityDetect.js +6 -1
- package/esm/Enums/Modes/AnimationMode.js +7 -1
- package/esm/Enums/Modes/CollisionMode.js +6 -1
- package/esm/Enums/Modes/LimitMode.js +5 -1
- package/esm/Enums/Modes/OutMode.js +8 -1
- package/esm/Enums/Modes/PixelMode.js +5 -1
- package/esm/Enums/Modes/ResponsiveMode.js +5 -1
- package/esm/Enums/Modes/ThemeMode.js +6 -1
- package/esm/Enums/Types/AlterType.js +5 -1
- package/esm/Enums/Types/DestroyType.js +6 -1
- package/esm/Enums/Types/DivType.js +5 -1
- package/esm/Enums/Types/EasingType.js +30 -1
- package/esm/Enums/Types/EventType.js +15 -1
- package/esm/Enums/Types/GradientType.js +6 -1
- package/esm/Enums/Types/InteractorType.js +5 -1
- package/esm/Enums/Types/ParticleOutType.js +6 -1
- package/esm/Enums/Types/StartValueType.js +6 -1
- package/esm/Options/Classes/AnimationOptions.js +4 -2
- package/esm/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
- package/esm/Options/Classes/Interactivity/Events/Events.js +1 -1
- package/esm/Options/Classes/Interactivity/Interactivity.js +2 -1
- package/esm/Options/Classes/ManualParticle.js +2 -1
- package/esm/Options/Classes/Options.js +14 -12
- package/esm/Options/Classes/Particles/Collisions/Collisions.js +2 -1
- package/esm/Options/Classes/Particles/Move/Move.js +2 -1
- package/esm/Options/Classes/Particles/Move/MoveCenter.js +2 -1
- package/esm/Options/Classes/Particles/Move/OutModes.js +2 -1
- package/esm/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
- package/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
- package/esm/Options/Classes/Particles/ParticlesOptions.js +1 -1
- package/esm/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
- package/esm/Options/Classes/Responsive.js +5 -4
- package/esm/Options/Classes/Theme/ThemeDefault.js +2 -1
- package/esm/Types/RangeType.js +5 -1
- package/esm/Utils/CanvasUtils.js +27 -21
- package/esm/Utils/ColorUtils.js +17 -9
- package/esm/Utils/EventDispatcher.js +1 -1
- package/esm/Utils/HslColorManager.js +11 -4
- package/esm/Utils/NumberUtils.js +11 -10
- package/esm/Utils/RgbColorManager.js +11 -4
- package/esm/Utils/Utils.js +37 -31
- package/package.json +1 -1
- package/report.html +1 -1
- package/tsparticles.engine.js +327 -225
- package/tsparticles.engine.min.js +1 -1
- package/tsparticles.engine.min.js.LICENSE.txt +1 -1
- package/types/Core/Canvas.d.ts +4 -4
- package/types/Core/Container.d.ts +4 -2
- package/types/Core/Engine.d.ts +6 -5
- package/types/Core/Interfaces/IContainerPlugin.d.ts +4 -4
- package/types/Core/Interfaces/IEffectDrawer.d.ts +3 -3
- package/types/Core/Interfaces/IExternalInteractor.d.ts +1 -1
- package/types/Core/Interfaces/IMovePathGenerator.d.ts +2 -2
- package/types/Core/Interfaces/IParticleMover.d.ts +2 -2
- package/types/Core/Interfaces/IParticleUpdater.d.ts +2 -2
- package/types/Core/Interfaces/IParticlesInteractor.d.ts +1 -1
- package/types/Core/Interfaces/IPlugin.d.ts +3 -4
- package/types/Core/Interfaces/IShapeDrawer.d.ts +5 -4
- package/types/Core/Particle.d.ts +3 -2
- package/types/Core/Particles.d.ts +7 -7
- package/types/Core/Utils/ExternalInteractorBase.d.ts +1 -1
- package/types/Core/Utils/InteractionManager.d.ts +2 -2
- package/types/Core/Utils/ParticlesInteractorBase.d.ts +1 -1
- package/types/Enums/AnimationStatus.d.ts +1 -1
- package/types/Enums/Directions/MoveDirection.d.ts +1 -1
- package/types/Enums/Directions/OutModeDirection.d.ts +1 -1
- package/types/Enums/Directions/RotateDirection.d.ts +1 -1
- package/types/Enums/InteractivityDetect.d.ts +1 -1
- package/types/Enums/Modes/AnimationMode.d.ts +1 -1
- package/types/Enums/Modes/CollisionMode.d.ts +1 -1
- package/types/Enums/Modes/LimitMode.d.ts +1 -1
- package/types/Enums/Modes/OutMode.d.ts +1 -1
- package/types/Enums/Modes/PixelMode.d.ts +1 -1
- package/types/Enums/Modes/ResponsiveMode.d.ts +1 -1
- package/types/Enums/Modes/ThemeMode.d.ts +1 -1
- package/types/Enums/Types/AlterType.d.ts +1 -1
- package/types/Enums/Types/DestroyType.d.ts +1 -1
- package/types/Enums/Types/DivType.d.ts +1 -1
- package/types/Enums/Types/EasingType.d.ts +1 -1
- package/types/Enums/Types/EventType.d.ts +1 -1
- package/types/Enums/Types/GradientType.d.ts +1 -1
- package/types/Enums/Types/InteractorType.d.ts +1 -1
- package/types/Enums/Types/ParticleOutType.d.ts +1 -1
- package/types/Enums/Types/StartValueType.d.ts +1 -1
- package/types/Options/Classes/Options.d.ts +2 -1
- package/types/Options/Classes/Responsive.d.ts +2 -2
- package/types/Options/Classes/Theme/Theme.d.ts +2 -2
- package/types/Options/Interfaces/IResponsive.d.ts +2 -3
- package/types/Options/Interfaces/Theme/ITheme.d.ts +2 -3
- package/types/Types/RangeType.d.ts +1 -1
- package/types/Utils/CanvasUtils.d.ts +6 -6
- package/umd/Core/Canvas.js +34 -29
- package/umd/Core/Container.js +61 -48
- package/umd/Core/Engine.js +83 -99
- package/umd/Core/Particle.js +41 -27
- package/umd/Core/Particles.js +53 -78
- package/umd/Core/Utils/EventListeners.js +19 -18
- package/umd/Core/Utils/ExternalInteractorBase.js +3 -2
- package/umd/Core/Utils/InteractionManager.js +8 -7
- package/umd/Core/Utils/ParticlesInteractorBase.js +3 -2
- package/umd/Core/Utils/QuadTree.js +1 -1
- package/umd/Core/Utils/Ranges.js +6 -5
- package/umd/Enums/AnimationStatus.js +6 -0
- package/umd/Enums/Directions/MoveDirection.js +15 -0
- package/umd/Enums/Directions/OutModeDirection.js +8 -0
- package/umd/Enums/Directions/RotateDirection.js +7 -0
- package/umd/Enums/InteractivityDetect.js +7 -0
- package/umd/Enums/Modes/AnimationMode.js +8 -0
- package/umd/Enums/Modes/CollisionMode.js +7 -0
- package/umd/Enums/Modes/LimitMode.js +6 -0
- package/umd/Enums/Modes/OutMode.js +9 -0
- package/umd/Enums/Modes/PixelMode.js +6 -0
- package/umd/Enums/Modes/ResponsiveMode.js +6 -0
- package/umd/Enums/Modes/ThemeMode.js +7 -0
- package/umd/Enums/Types/AlterType.js +6 -0
- package/umd/Enums/Types/DestroyType.js +7 -0
- package/umd/Enums/Types/DivType.js +6 -0
- package/umd/Enums/Types/EasingType.js +31 -0
- package/umd/Enums/Types/EventType.js +16 -0
- package/umd/Enums/Types/GradientType.js +7 -0
- package/umd/Enums/Types/InteractorType.js +6 -0
- package/umd/Enums/Types/ParticleOutType.js +7 -0
- package/umd/Enums/Types/StartValueType.js +7 -0
- package/umd/Options/Classes/AnimationOptions.js +5 -3
- package/umd/Options/Classes/Interactivity/Events/DivEvent.js +3 -2
- package/umd/Options/Classes/Interactivity/Events/Events.js +1 -1
- package/umd/Options/Classes/Interactivity/Interactivity.js +3 -2
- package/umd/Options/Classes/ManualParticle.js +3 -2
- package/umd/Options/Classes/Options.js +15 -13
- package/umd/Options/Classes/Particles/Collisions/Collisions.js +3 -2
- package/umd/Options/Classes/Particles/Move/Move.js +3 -2
- package/umd/Options/Classes/Particles/Move/MoveCenter.js +3 -2
- package/umd/Options/Classes/Particles/Move/OutModes.js +3 -2
- package/umd/Options/Classes/Particles/Number/ParticlesNumberLimit.js +3 -2
- package/umd/Options/Classes/Particles/Opacity/OpacityAnimation.js +3 -2
- package/umd/Options/Classes/Particles/ParticlesOptions.js +1 -1
- package/umd/Options/Classes/Particles/Size/SizeAnimation.js +3 -2
- package/umd/Options/Classes/Responsive.js +6 -5
- package/umd/Options/Classes/Theme/ThemeDefault.js +3 -2
- package/umd/Types/RangeType.js +6 -0
- package/umd/Utils/CanvasUtils.js +28 -22
- package/umd/Utils/ColorUtils.js +18 -10
- package/umd/Utils/EventDispatcher.js +1 -1
- package/umd/Utils/HslColorManager.js +11 -4
- package/umd/Utils/NumberUtils.js +12 -11
- package/umd/Utils/RgbColorManager.js +11 -4
- package/umd/Utils/Utils.js +38 -32
- package/373.min.js +0 -2
- package/373.min.js.LICENSE.txt +0 -1
- package/438.min.js +0 -2
- package/438.min.js.LICENSE.txt +0 -1
- package/dist_browser_Core_Container_js.js +0 -92
- package/dist_browser_Core_Particle_js.js +0 -32
package/umd/Core/Container.js
CHANGED
|
@@ -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/Constants.js", "../Utils/Utils.js", "./Canvas.js", "./Utils/EventListeners.js", "../Options/Classes/Options.js", "./Particles.js", "./Retina.js", "../Utils/NumberUtils.js", "../Utils/OptionsUtils.js"], factory);
|
|
7
|
+
define(["require", "exports", "./Utils/Constants.js", "../Utils/Utils.js", "./Canvas.js", "./Utils/EventListeners.js", "../Enums/Types/EventType.js", "../Options/Classes/Options.js", "./Particles.js", "./Retina.js", "../Utils/NumberUtils.js", "../Utils/OptionsUtils.js"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
const Utils_js_1 = require("../Utils/Utils.js");
|
|
15
15
|
const Canvas_js_1 = require("./Canvas.js");
|
|
16
16
|
const EventListeners_js_1 = require("./Utils/EventListeners.js");
|
|
17
|
+
const EventType_js_1 = require("../Enums/Types/EventType.js");
|
|
17
18
|
const Options_js_1 = require("../Options/Classes/Options.js");
|
|
18
19
|
const Particles_js_1 = require("./Particles.js");
|
|
19
20
|
const Retina_js_1 = require("./Retina.js");
|
|
@@ -36,7 +37,7 @@
|
|
|
36
37
|
}
|
|
37
38
|
class Container {
|
|
38
39
|
constructor(engine, id, sourceOptions) {
|
|
39
|
-
this._intersectionManager =
|
|
40
|
+
this._intersectionManager = entries => {
|
|
40
41
|
if (!guardCheck(this) || !this.actualOptions.pauseOnOutsideViewport) {
|
|
41
42
|
return;
|
|
42
43
|
}
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
};
|
|
55
|
-
this._nextFrame =
|
|
56
|
+
this._nextFrame = (timestamp) => {
|
|
56
57
|
try {
|
|
57
58
|
if (!this._smooth &&
|
|
58
59
|
this._lastFrameTime !== undefined &&
|
|
@@ -68,7 +69,7 @@
|
|
|
68
69
|
this.draw(false);
|
|
69
70
|
return;
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
+
this.particles.draw(delta);
|
|
72
73
|
if (!this.alive()) {
|
|
73
74
|
this.destroy();
|
|
74
75
|
return;
|
|
@@ -95,6 +96,7 @@
|
|
|
95
96
|
this._lastFrameTime = 0;
|
|
96
97
|
this.zLayers = 100;
|
|
97
98
|
this.pageHidden = false;
|
|
99
|
+
this._clickHandlers = new Map();
|
|
98
100
|
this._sourceOptions = sourceOptions;
|
|
99
101
|
this._initialSourceOptions = sourceOptions;
|
|
100
102
|
this.retina = new Retina_js_1.Retina(this);
|
|
@@ -113,8 +115,8 @@
|
|
|
113
115
|
this._options = loadContainerOptions(this._engine, this);
|
|
114
116
|
this.actualOptions = loadContainerOptions(this._engine, this);
|
|
115
117
|
this._eventListeners = new EventListeners_js_1.EventListeners(this);
|
|
116
|
-
this._intersectionObserver = (0, Utils_js_1.safeIntersectionObserver)(
|
|
117
|
-
this._engine.dispatchEvent(
|
|
118
|
+
this._intersectionObserver = (0, Utils_js_1.safeIntersectionObserver)(entries => this._intersectionManager(entries));
|
|
119
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.containerBuilt, { container: this });
|
|
118
120
|
}
|
|
119
121
|
get animationStatus() {
|
|
120
122
|
return !this._paused && !this.pageHidden && guardCheck(this);
|
|
@@ -142,8 +144,7 @@
|
|
|
142
144
|
y: pos.y * pxRatio,
|
|
143
145
|
}, particles = this.particles.quadTree.queryCircle(posRetina, radius * pxRatio);
|
|
144
146
|
callback(e, particles);
|
|
145
|
-
}
|
|
146
|
-
const clickHandler = (e) => {
|
|
147
|
+
}, clickHandler = (e) => {
|
|
147
148
|
if (!guardCheck(this)) {
|
|
148
149
|
return;
|
|
149
150
|
}
|
|
@@ -152,27 +153,23 @@
|
|
|
152
153
|
y: mouseEvent.offsetY || mouseEvent.clientY,
|
|
153
154
|
}, radius = 1;
|
|
154
155
|
clickOrTouchHandler(e, pos, radius);
|
|
155
|
-
}
|
|
156
|
-
const touchStartHandler = () => {
|
|
156
|
+
}, touchStartHandler = () => {
|
|
157
157
|
if (!guardCheck(this)) {
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
160
|
touched = true;
|
|
161
161
|
touchMoved = false;
|
|
162
|
-
}
|
|
163
|
-
const touchMoveHandler = () => {
|
|
162
|
+
}, touchMoveHandler = () => {
|
|
164
163
|
if (!guardCheck(this)) {
|
|
165
164
|
return;
|
|
166
165
|
}
|
|
167
166
|
touchMoved = true;
|
|
168
|
-
}
|
|
169
|
-
const touchEndHandler = (e) => {
|
|
167
|
+
}, touchEndHandler = (e) => {
|
|
170
168
|
if (!guardCheck(this)) {
|
|
171
169
|
return;
|
|
172
170
|
}
|
|
173
171
|
if (touched && !touchMoved) {
|
|
174
|
-
const touchEvent = e;
|
|
175
|
-
const lengthOffset = 1;
|
|
172
|
+
const touchEvent = e, lengthOffset = 1;
|
|
176
173
|
let lastTouch = touchEvent.touches[touchEvent.touches.length - lengthOffset];
|
|
177
174
|
if (!lastTouch) {
|
|
178
175
|
lastTouch = touchEvent.changedTouches[touchEvent.changedTouches.length - lengthOffset];
|
|
@@ -188,8 +185,7 @@
|
|
|
188
185
|
}
|
|
189
186
|
touched = false;
|
|
190
187
|
touchMoved = false;
|
|
191
|
-
}
|
|
192
|
-
const touchCancelHandler = () => {
|
|
188
|
+
}, touchCancelHandler = () => {
|
|
193
189
|
if (!guardCheck(this)) {
|
|
194
190
|
return;
|
|
195
191
|
}
|
|
@@ -197,11 +193,14 @@
|
|
|
197
193
|
touchMoved = false;
|
|
198
194
|
};
|
|
199
195
|
let touched = false, touchMoved = false;
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
196
|
+
this._clickHandlers.set("click", clickHandler);
|
|
197
|
+
this._clickHandlers.set("touchstart", touchStartHandler);
|
|
198
|
+
this._clickHandlers.set("touchmove", touchMoveHandler);
|
|
199
|
+
this._clickHandlers.set("touchend", touchEndHandler);
|
|
200
|
+
this._clickHandlers.set("touchcancel", touchCancelHandler);
|
|
201
|
+
for (const [key, handler] of this._clickHandlers) {
|
|
202
|
+
el.addEventListener(key, handler);
|
|
203
|
+
}
|
|
205
204
|
}
|
|
206
205
|
addLifeTime(value) {
|
|
207
206
|
this._lifeTime += value;
|
|
@@ -216,11 +215,21 @@
|
|
|
216
215
|
alive() {
|
|
217
216
|
return !this._duration || this._lifeTime <= this._duration;
|
|
218
217
|
}
|
|
219
|
-
|
|
218
|
+
clearClickHandlers() {
|
|
219
|
+
if (!guardCheck(this)) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
for (const [key, handler] of this._clickHandlers) {
|
|
223
|
+
this.interactivity.element?.removeEventListener(key, handler);
|
|
224
|
+
}
|
|
225
|
+
this._clickHandlers.clear();
|
|
226
|
+
}
|
|
227
|
+
destroy(remove = true) {
|
|
220
228
|
if (!guardCheck(this)) {
|
|
221
229
|
return;
|
|
222
230
|
}
|
|
223
231
|
this.stop();
|
|
232
|
+
this.clearClickHandlers();
|
|
224
233
|
this.particles.destroy();
|
|
225
234
|
this.canvas.destroy();
|
|
226
235
|
for (const [, effectDrawer] of this.effectDrawers) {
|
|
@@ -237,26 +246,28 @@
|
|
|
237
246
|
}
|
|
238
247
|
this._engine.clearPlugins(this);
|
|
239
248
|
this.destroyed = true;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
249
|
+
if (remove) {
|
|
250
|
+
const mainArr = this._engine.items, idx = mainArr.findIndex(t => t === this), minIndex = 0;
|
|
251
|
+
if (idx >= minIndex) {
|
|
252
|
+
const deleteCount = 1;
|
|
253
|
+
mainArr.splice(idx, deleteCount);
|
|
254
|
+
}
|
|
244
255
|
}
|
|
245
|
-
this._engine.dispatchEvent(
|
|
256
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.containerDestroyed, { container: this });
|
|
246
257
|
}
|
|
247
258
|
draw(force) {
|
|
248
259
|
if (!guardCheck(this)) {
|
|
249
260
|
return;
|
|
250
261
|
}
|
|
251
262
|
let refreshTime = force;
|
|
252
|
-
const frame =
|
|
263
|
+
const frame = (timestamp) => {
|
|
253
264
|
if (refreshTime) {
|
|
254
265
|
this._lastFrameTime = undefined;
|
|
255
266
|
refreshTime = false;
|
|
256
267
|
}
|
|
257
|
-
|
|
268
|
+
this._nextFrame(timestamp);
|
|
258
269
|
};
|
|
259
|
-
this._drawAnimationFrame = requestAnimationFrame(
|
|
270
|
+
this._drawAnimationFrame = requestAnimationFrame(timestamp => frame(timestamp));
|
|
260
271
|
}
|
|
261
272
|
async export(type, options = {}) {
|
|
262
273
|
for (const [, plugin] of this.plugins) {
|
|
@@ -310,13 +321,14 @@
|
|
|
310
321
|
this.updateActualOptions();
|
|
311
322
|
this.canvas.initBackground();
|
|
312
323
|
this.canvas.resize();
|
|
313
|
-
|
|
314
|
-
this.
|
|
315
|
-
this.
|
|
324
|
+
const { zLayers, duration, delay, fpsLimit, smooth } = this.actualOptions;
|
|
325
|
+
this.zLayers = zLayers;
|
|
326
|
+
this._duration = (0, NumberUtils_js_1.getRangeValue)(duration) * Constants_js_1.millisecondsToSeconds;
|
|
327
|
+
this._delay = (0, NumberUtils_js_1.getRangeValue)(delay) * Constants_js_1.millisecondsToSeconds;
|
|
316
328
|
this._lifeTime = 0;
|
|
317
329
|
const defaultFpsLimit = 120, minFpsLimit = 0;
|
|
318
|
-
this.fpsLimit =
|
|
319
|
-
this._smooth =
|
|
330
|
+
this.fpsLimit = fpsLimit > minFpsLimit ? fpsLimit : defaultFpsLimit;
|
|
331
|
+
this._smooth = smooth;
|
|
320
332
|
for (const [, drawer] of this.effectDrawers) {
|
|
321
333
|
await drawer.init?.(this);
|
|
322
334
|
}
|
|
@@ -326,13 +338,13 @@
|
|
|
326
338
|
for (const [, plugin] of this.plugins) {
|
|
327
339
|
await plugin.init?.();
|
|
328
340
|
}
|
|
329
|
-
this._engine.dispatchEvent(
|
|
341
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.containerInit, { container: this });
|
|
330
342
|
await this.particles.init();
|
|
331
|
-
|
|
343
|
+
this.particles.setDensity();
|
|
332
344
|
for (const [, plugin] of this.plugins) {
|
|
333
345
|
plugin.particlesSetup?.();
|
|
334
346
|
}
|
|
335
|
-
this._engine.dispatchEvent(
|
|
347
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.particlesSetup, { container: this });
|
|
336
348
|
}
|
|
337
349
|
async loadTheme(name) {
|
|
338
350
|
if (!guardCheck(this)) {
|
|
@@ -358,7 +370,7 @@
|
|
|
358
370
|
if (!this.pageHidden) {
|
|
359
371
|
this._paused = true;
|
|
360
372
|
}
|
|
361
|
-
this._engine.dispatchEvent(
|
|
373
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.containerPaused, { container: this });
|
|
362
374
|
}
|
|
363
375
|
play(force) {
|
|
364
376
|
if (!guardCheck(this)) {
|
|
@@ -379,7 +391,7 @@
|
|
|
379
391
|
}
|
|
380
392
|
}
|
|
381
393
|
}
|
|
382
|
-
this._engine.dispatchEvent(
|
|
394
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.containerPlay, { container: this });
|
|
383
395
|
this.draw(needsUpdate ?? false);
|
|
384
396
|
}
|
|
385
397
|
async refresh() {
|
|
@@ -389,12 +401,13 @@
|
|
|
389
401
|
this.stop();
|
|
390
402
|
return this.start();
|
|
391
403
|
}
|
|
392
|
-
async reset() {
|
|
404
|
+
async reset(sourceOptions) {
|
|
393
405
|
if (!guardCheck(this)) {
|
|
394
406
|
return;
|
|
395
407
|
}
|
|
396
|
-
this._initialSourceOptions =
|
|
397
|
-
this.
|
|
408
|
+
this._initialSourceOptions = sourceOptions;
|
|
409
|
+
this._sourceOptions = sourceOptions;
|
|
410
|
+
this._options = loadContainerOptions(this._engine, this, this._initialSourceOptions, this.sourceOptions);
|
|
398
411
|
this.actualOptions = loadContainerOptions(this._engine, this, this._options);
|
|
399
412
|
return this.refresh();
|
|
400
413
|
}
|
|
@@ -404,7 +417,7 @@
|
|
|
404
417
|
}
|
|
405
418
|
await this.init();
|
|
406
419
|
this.started = true;
|
|
407
|
-
await new Promise(
|
|
420
|
+
await new Promise(resolve => {
|
|
408
421
|
const start = async () => {
|
|
409
422
|
this._eventListeners.addListeners();
|
|
410
423
|
if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {
|
|
@@ -413,7 +426,7 @@
|
|
|
413
426
|
for (const [, plugin] of this.plugins) {
|
|
414
427
|
await plugin.start?.();
|
|
415
428
|
}
|
|
416
|
-
this._engine.dispatchEvent(
|
|
429
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.containerStarted, { container: this });
|
|
417
430
|
this.play();
|
|
418
431
|
resolve();
|
|
419
432
|
};
|
|
@@ -444,7 +457,7 @@
|
|
|
444
457
|
this.plugins.delete(key);
|
|
445
458
|
}
|
|
446
459
|
this._sourceOptions = this._options;
|
|
447
|
-
this._engine.dispatchEvent(
|
|
460
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.containerStopped, { container: this });
|
|
448
461
|
}
|
|
449
462
|
updateActualOptions() {
|
|
450
463
|
this.actualOptions.responsive = [];
|
package/umd/Core/Engine.js
CHANGED
|
@@ -1,47 +1,25 @@
|
|
|
1
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
2
|
-
if (k2 === undefined) k2 = k;
|
|
3
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
4
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
5
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
6
|
-
}
|
|
7
|
-
Object.defineProperty(o, k2, desc);
|
|
8
|
-
}) : (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
o[k2] = m[k];
|
|
11
|
-
}));
|
|
12
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
13
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
14
|
-
}) : function(o, v) {
|
|
15
|
-
o["default"] = v;
|
|
16
|
-
});
|
|
17
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
18
|
-
if (mod && mod.__esModule) return mod;
|
|
19
|
-
var result = {};
|
|
20
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
21
|
-
__setModuleDefault(result, mod);
|
|
22
|
-
return result;
|
|
23
|
-
};
|
|
24
1
|
(function (factory) {
|
|
25
2
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
26
3
|
var v = factory(require, exports);
|
|
27
4
|
if (v !== undefined) module.exports = v;
|
|
28
5
|
}
|
|
29
6
|
else if (typeof define === "function" && define.amd) {
|
|
30
|
-
define(["require", "exports", "./Utils/Constants.js", "../Utils/Utils.js", "../Utils/EventDispatcher.js", "../Utils/NumberUtils.js"], factory);
|
|
7
|
+
define(["require", "exports", "./Utils/Constants.js", "../Utils/Utils.js", "./Container.js", "../Utils/EventDispatcher.js", "../Enums/Types/EventType.js", "../Utils/NumberUtils.js"], factory);
|
|
31
8
|
}
|
|
32
9
|
})(function (require, exports) {
|
|
33
10
|
"use strict";
|
|
34
|
-
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
|
|
35
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
12
|
exports.Engine = void 0;
|
|
37
13
|
const Constants_js_1 = require("./Utils/Constants.js");
|
|
38
14
|
const Utils_js_1 = require("../Utils/Utils.js");
|
|
15
|
+
const Container_js_1 = require("./Container.js");
|
|
39
16
|
const EventDispatcher_js_1 = require("../Utils/EventDispatcher.js");
|
|
17
|
+
const EventType_js_1 = require("../Enums/Types/EventType.js");
|
|
40
18
|
const NumberUtils_js_1 = require("../Utils/NumberUtils.js");
|
|
41
19
|
async function getItemsFromInitializer(container, map, initializers, force = false) {
|
|
42
20
|
let res = map.get(container);
|
|
43
21
|
if (!res || force) {
|
|
44
|
-
res = await Promise.all([...initializers.values()].map(
|
|
22
|
+
res = await Promise.all([...initializers.values()].map(t => t(container)));
|
|
45
23
|
map.set(container, res);
|
|
46
24
|
}
|
|
47
25
|
return res;
|
|
@@ -58,6 +36,46 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
58
36
|
(0, Utils_js_1.getLogger)().error(`${Constants_js_1.errorPrefix} ${response.status} while retrieving config file`);
|
|
59
37
|
return data.fallback;
|
|
60
38
|
}
|
|
39
|
+
const generatedTrue = "true", generatedFalse = "false", canvasTag = "canvas", getCanvasFromContainer = (domContainer) => {
|
|
40
|
+
let canvasEl;
|
|
41
|
+
if (domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === canvasTag) {
|
|
42
|
+
canvasEl = domContainer;
|
|
43
|
+
if (!canvasEl.dataset[Constants_js_1.generatedAttribute]) {
|
|
44
|
+
canvasEl.dataset[Constants_js_1.generatedAttribute] = generatedFalse;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const existingCanvases = domContainer.getElementsByTagName(canvasTag);
|
|
49
|
+
if (existingCanvases.length) {
|
|
50
|
+
const firstIndex = 0;
|
|
51
|
+
canvasEl = existingCanvases[firstIndex];
|
|
52
|
+
canvasEl.dataset[Constants_js_1.generatedAttribute] = generatedFalse;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
canvasEl = document.createElement(canvasTag);
|
|
56
|
+
canvasEl.dataset[Constants_js_1.generatedAttribute] = generatedTrue;
|
|
57
|
+
domContainer.appendChild(canvasEl);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const fullPercent = "100%";
|
|
61
|
+
if (!canvasEl.style.width) {
|
|
62
|
+
canvasEl.style.width = fullPercent;
|
|
63
|
+
}
|
|
64
|
+
if (!canvasEl.style.height) {
|
|
65
|
+
canvasEl.style.height = fullPercent;
|
|
66
|
+
}
|
|
67
|
+
return canvasEl;
|
|
68
|
+
}, getDomContainer = (id, source) => {
|
|
69
|
+
let domContainer = source ?? document.getElementById(id);
|
|
70
|
+
if (domContainer) {
|
|
71
|
+
return domContainer;
|
|
72
|
+
}
|
|
73
|
+
domContainer = document.createElement("div");
|
|
74
|
+
domContainer.id = id;
|
|
75
|
+
domContainer.dataset[Constants_js_1.generatedAttribute] = generatedTrue;
|
|
76
|
+
document.body.append(domContainer);
|
|
77
|
+
return domContainer;
|
|
78
|
+
};
|
|
61
79
|
class Engine {
|
|
62
80
|
constructor() {
|
|
63
81
|
this._configs = new Map();
|
|
@@ -85,16 +103,19 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
85
103
|
}
|
|
86
104
|
return res;
|
|
87
105
|
}
|
|
106
|
+
get items() {
|
|
107
|
+
return this._domArray;
|
|
108
|
+
}
|
|
88
109
|
get version() {
|
|
89
|
-
return "3.
|
|
110
|
+
return "3.4.0";
|
|
90
111
|
}
|
|
91
112
|
addConfig(config) {
|
|
92
113
|
const key = config.key ?? config.name ?? "default";
|
|
93
114
|
this._configs.set(key, config);
|
|
94
|
-
this._eventDispatcher.dispatchEvent(
|
|
115
|
+
this._eventDispatcher.dispatchEvent(EventType_js_1.EventType.configAdded, { data: { name: key, config } });
|
|
95
116
|
}
|
|
96
117
|
async addEffect(effect, drawer, refresh = true) {
|
|
97
|
-
(0, Utils_js_1.executeOnSingleOrMultiple)(effect,
|
|
118
|
+
(0, Utils_js_1.executeOnSingleOrMultiple)(effect, type => {
|
|
98
119
|
if (!this.getEffectDrawer(type)) {
|
|
99
120
|
this.effectDrawers.set(type, drawer);
|
|
100
121
|
}
|
|
@@ -134,12 +155,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
134
155
|
}
|
|
135
156
|
await this.refresh(refresh);
|
|
136
157
|
}
|
|
137
|
-
async addShape(
|
|
138
|
-
(
|
|
139
|
-
if (
|
|
140
|
-
|
|
158
|
+
async addShape(drawer, refresh = true) {
|
|
159
|
+
for (const validType of drawer.validTypes) {
|
|
160
|
+
if (this.getShapeDrawer(validType)) {
|
|
161
|
+
continue;
|
|
141
162
|
}
|
|
142
|
-
|
|
163
|
+
this.shapeDrawers.set(validType, drawer);
|
|
164
|
+
}
|
|
143
165
|
await this.refresh(refresh);
|
|
144
166
|
}
|
|
145
167
|
clearPlugins(container) {
|
|
@@ -151,16 +173,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
151
173
|
this._eventDispatcher.dispatchEvent(type, args);
|
|
152
174
|
}
|
|
153
175
|
dom() {
|
|
154
|
-
return this.
|
|
176
|
+
return this.items;
|
|
155
177
|
}
|
|
156
178
|
domItem(index) {
|
|
157
|
-
|
|
158
|
-
if (!item || item.destroyed) {
|
|
159
|
-
const deleteCount = 1;
|
|
160
|
-
dom.splice(index, deleteCount);
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
return item;
|
|
179
|
+
return this.item(index);
|
|
164
180
|
}
|
|
165
181
|
async getAvailablePlugins(container) {
|
|
166
182
|
const res = new Map();
|
|
@@ -175,16 +191,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
175
191
|
return this.effectDrawers.get(type);
|
|
176
192
|
}
|
|
177
193
|
async getInteractors(container, force = false) {
|
|
178
|
-
return
|
|
194
|
+
return getItemsFromInitializer(container, this.interactors, this._initializers.interactors, force);
|
|
179
195
|
}
|
|
180
196
|
async getMovers(container, force = false) {
|
|
181
|
-
return
|
|
197
|
+
return getItemsFromInitializer(container, this.movers, this._initializers.movers, force);
|
|
182
198
|
}
|
|
183
199
|
getPathGenerator(type) {
|
|
184
200
|
return this.pathGenerators.get(type);
|
|
185
201
|
}
|
|
186
202
|
getPlugin(plugin) {
|
|
187
|
-
return this.plugins.find(
|
|
203
|
+
return this.plugins.find(t => t.id === plugin);
|
|
188
204
|
}
|
|
189
205
|
getPreset(preset) {
|
|
190
206
|
return this.presets.get(preset);
|
|
@@ -199,7 +215,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
199
215
|
return this.shapeDrawers.keys();
|
|
200
216
|
}
|
|
201
217
|
async getUpdaters(container, force = false) {
|
|
202
|
-
return
|
|
218
|
+
return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);
|
|
203
219
|
}
|
|
204
220
|
init() {
|
|
205
221
|
if (this._initialized) {
|
|
@@ -207,90 +223,58 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
207
223
|
}
|
|
208
224
|
this._initialized = true;
|
|
209
225
|
}
|
|
226
|
+
item(index) {
|
|
227
|
+
const { items } = this, item = items[index];
|
|
228
|
+
if (!item || item.destroyed) {
|
|
229
|
+
const deleteCount = 1;
|
|
230
|
+
items.splice(index, deleteCount);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
return item;
|
|
234
|
+
}
|
|
210
235
|
async load(params) {
|
|
211
236
|
const randomFactor = 10000, id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0, NumberUtils_js_1.getRandom)() * randomFactor)}`, { index, url } = params, options = url ? await getDataFromUrl({ fallback: params.options, url, index }) : params.options;
|
|
212
|
-
|
|
213
|
-
if (!domContainer) {
|
|
214
|
-
domContainer = document.createElement("div");
|
|
215
|
-
domContainer.id = id;
|
|
216
|
-
document.body.append(domContainer);
|
|
217
|
-
}
|
|
218
|
-
const currentOptions = (0, Utils_js_1.itemFromSingleOrMultiple)(options, index), dom = this.dom(), oldIndex = dom.findIndex((v) => v.id.description === id), minIndex = 0;
|
|
237
|
+
const currentOptions = (0, Utils_js_1.itemFromSingleOrMultiple)(options, index), { items } = this, oldIndex = items.findIndex(v => v.id.description === id), minIndex = 0, newItem = new Container_js_1.Container(this, id, currentOptions);
|
|
219
238
|
if (oldIndex >= minIndex) {
|
|
220
|
-
const old = this.
|
|
239
|
+
const old = this.item(oldIndex), one = 1, none = 0, deleteCount = old ? one : none;
|
|
221
240
|
if (old && !old.destroyed) {
|
|
222
|
-
old.destroy();
|
|
223
|
-
const deleteCount = 1;
|
|
224
|
-
dom.splice(oldIndex, deleteCount);
|
|
241
|
+
old.destroy(false);
|
|
225
242
|
}
|
|
226
|
-
|
|
227
|
-
let canvasEl;
|
|
228
|
-
if (domContainer.tagName.toLowerCase() === "canvas") {
|
|
229
|
-
canvasEl = domContainer;
|
|
230
|
-
canvasEl.dataset[Constants_js_1.generatedAttribute] = "false";
|
|
243
|
+
items.splice(oldIndex, deleteCount, newItem);
|
|
231
244
|
}
|
|
232
245
|
else {
|
|
233
|
-
|
|
234
|
-
if (existingCanvases.length) {
|
|
235
|
-
const firstIndex = 0;
|
|
236
|
-
canvasEl = existingCanvases[firstIndex];
|
|
237
|
-
canvasEl.dataset[Constants_js_1.generatedAttribute] = "false";
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
canvasEl = document.createElement("canvas");
|
|
241
|
-
canvasEl.dataset[Constants_js_1.generatedAttribute] = "true";
|
|
242
|
-
domContainer.appendChild(canvasEl);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
if (!canvasEl.style.width) {
|
|
246
|
-
canvasEl.style.width = "100%";
|
|
247
|
-
}
|
|
248
|
-
if (!canvasEl.style.height) {
|
|
249
|
-
canvasEl.style.height = "100%";
|
|
250
|
-
}
|
|
251
|
-
const { Container } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./Container.js"))) : new Promise((resolve_1, reject_1) => { require(["./Container.js"], resolve_1, reject_1); }).then(__importStar)), newItem = new Container(this, id, currentOptions);
|
|
252
|
-
if (oldIndex >= minIndex) {
|
|
253
|
-
const deleteCount = 0;
|
|
254
|
-
dom.splice(oldIndex, deleteCount, newItem);
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
dom.push(newItem);
|
|
246
|
+
items.push(newItem);
|
|
258
247
|
}
|
|
248
|
+
const domContainer = getDomContainer(id, params.element), canvasEl = getCanvasFromContainer(domContainer);
|
|
259
249
|
newItem.canvas.loadCanvas(canvasEl);
|
|
260
250
|
await newItem.start();
|
|
261
251
|
return newItem;
|
|
262
252
|
}
|
|
263
253
|
loadOptions(options, sourceOptions) {
|
|
264
|
-
|
|
265
|
-
plugin.loadOptions(options, sourceOptions);
|
|
266
|
-
}
|
|
254
|
+
this.plugins.forEach(plugin => plugin.loadOptions?.(options, sourceOptions));
|
|
267
255
|
}
|
|
268
256
|
loadParticlesOptions(container, options, ...sourceOptions) {
|
|
269
257
|
const updaters = this.updaters.get(container);
|
|
270
258
|
if (!updaters) {
|
|
271
259
|
return;
|
|
272
260
|
}
|
|
273
|
-
|
|
274
|
-
updater.loadOptions?.(options, ...sourceOptions);
|
|
275
|
-
}
|
|
261
|
+
updaters.forEach(updater => updater.loadOptions?.(options, ...sourceOptions));
|
|
276
262
|
}
|
|
277
263
|
async refresh(refresh = true) {
|
|
278
264
|
if (!refresh) {
|
|
279
265
|
return;
|
|
280
266
|
}
|
|
281
|
-
await Promise.all(this.
|
|
267
|
+
await Promise.all(this.items.map(t => t.refresh()));
|
|
282
268
|
}
|
|
283
269
|
removeEventListener(type, listener) {
|
|
284
270
|
this._eventDispatcher.removeEventListener(type, listener);
|
|
285
271
|
}
|
|
286
272
|
setOnClickHandler(callback) {
|
|
287
|
-
const
|
|
288
|
-
if (!
|
|
273
|
+
const { items } = this;
|
|
274
|
+
if (!items.length) {
|
|
289
275
|
throw new Error(`${Constants_js_1.errorPrefix} can only set click handlers after calling tsParticles.load()`);
|
|
290
276
|
}
|
|
291
|
-
|
|
292
|
-
domItem.addClickHandler(callback);
|
|
293
|
-
}
|
|
277
|
+
items.forEach(item => item.addClickHandler(callback));
|
|
294
278
|
}
|
|
295
279
|
}
|
|
296
280
|
exports.Engine = Engine;
|