@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/Particle.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/Vectors.js", "../Utils/NumberUtils.js", "../Utils/Utils.js", "./Utils/Constants.js", "../Utils/ColorUtils.js", "../Options/Classes/Interactivity/Interactivity.js", "../Utils/CanvasUtils.js", "../Utils/OptionsUtils.js"], factory);
|
|
7
|
+
define(["require", "exports", "./Utils/Vectors.js", "../Utils/NumberUtils.js", "../Utils/Utils.js", "./Utils/Constants.js", "../Utils/ColorUtils.js", "../Enums/Types/EventType.js", "../Options/Classes/Interactivity/Interactivity.js", "../Enums/Directions/MoveDirection.js", "../Enums/Modes/OutMode.js", "../Enums/Types/ParticleOutType.js", "../Enums/Modes/PixelMode.js", "../Utils/CanvasUtils.js", "../Utils/OptionsUtils.js"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -15,10 +15,15 @@
|
|
|
15
15
|
const Utils_js_1 = require("../Utils/Utils.js");
|
|
16
16
|
const Constants_js_1 = require("./Utils/Constants.js");
|
|
17
17
|
const ColorUtils_js_1 = require("../Utils/ColorUtils.js");
|
|
18
|
+
const EventType_js_1 = require("../Enums/Types/EventType.js");
|
|
18
19
|
const Interactivity_js_1 = require("../Options/Classes/Interactivity/Interactivity.js");
|
|
20
|
+
const MoveDirection_js_1 = require("../Enums/Directions/MoveDirection.js");
|
|
21
|
+
const OutMode_js_1 = require("../Enums/Modes/OutMode.js");
|
|
22
|
+
const ParticleOutType_js_1 = require("../Enums/Types/ParticleOutType.js");
|
|
23
|
+
const PixelMode_js_1 = require("../Enums/Modes/PixelMode.js");
|
|
19
24
|
const CanvasUtils_js_1 = require("../Utils/CanvasUtils.js");
|
|
20
25
|
const OptionsUtils_js_1 = require("../Utils/OptionsUtils.js");
|
|
21
|
-
const defaultRetryCount = 0, double = 2, half = 0.5, squareExp = 2;
|
|
26
|
+
const defaultRetryCount = 0, double = 2, half = 0.5, squareExp = 2, randomString = "random";
|
|
22
27
|
function loadEffectData(effect, effectOptions, id, reduceDuplicates) {
|
|
23
28
|
const effectData = effectOptions.options[effect];
|
|
24
29
|
if (!effectData) {
|
|
@@ -67,7 +72,7 @@
|
|
|
67
72
|
}), pos = Vectors_js_1.Vector3d.create(exactPosition.x, exactPosition.y, zIndex), radius = this.getRadius(), outModes = this.options.move.outModes, fixHorizontal = (outMode) => {
|
|
68
73
|
fixOutMode({
|
|
69
74
|
outMode,
|
|
70
|
-
checkModes: [
|
|
75
|
+
checkModes: [OutMode_js_1.OutMode.bounce],
|
|
71
76
|
coord: pos.x,
|
|
72
77
|
maxCoord: container.canvas.size.width,
|
|
73
78
|
setCb: (value) => (pos.x += value),
|
|
@@ -76,7 +81,7 @@
|
|
|
76
81
|
}, fixVertical = (outMode) => {
|
|
77
82
|
fixOutMode({
|
|
78
83
|
outMode,
|
|
79
|
-
checkModes: [
|
|
84
|
+
checkModes: [OutMode_js_1.OutMode.bounce],
|
|
80
85
|
coord: pos.y,
|
|
81
86
|
maxCoord: container.canvas.size.height,
|
|
82
87
|
setCb: (value) => (pos.y += value),
|
|
@@ -95,7 +100,7 @@
|
|
|
95
100
|
};
|
|
96
101
|
this._calculateVelocity = () => {
|
|
97
102
|
const baseVelocity = (0, NumberUtils_js_1.getParticleBaseVelocity)(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move;
|
|
98
|
-
if (moveOptions.direction ===
|
|
103
|
+
if (moveOptions.direction === MoveDirection_js_1.MoveDirection.inside || moveOptions.direction === MoveDirection_js_1.MoveDirection.outside) {
|
|
99
104
|
return res;
|
|
100
105
|
}
|
|
101
106
|
const rad = (0, NumberUtils_js_1.degToRad)((0, NumberUtils_js_1.getRangeValue)(moveOptions.angle.value)), radOffset = (0, NumberUtils_js_1.degToRad)((0, NumberUtils_js_1.getRangeValue)(moveOptions.angle.offset)), range = {
|
|
@@ -123,9 +128,9 @@
|
|
|
123
128
|
if (retries >= minRetries && tryCount > retries) {
|
|
124
129
|
throw new Error(`${Constants_js_1.errorPrefix} particle is overlapping and can't be placed`);
|
|
125
130
|
}
|
|
126
|
-
return !!this.container.particles.find(
|
|
131
|
+
return !!this.container.particles.find(particle => (0, NumberUtils_js_1.getDistance)(pos, particle.position) < radius + particle.getRadius());
|
|
127
132
|
};
|
|
128
|
-
this._getRollColor =
|
|
133
|
+
this._getRollColor = color => {
|
|
129
134
|
if (!color || !this.roll || (!this.backColor && !this.roll.alter)) {
|
|
130
135
|
return color;
|
|
131
136
|
}
|
|
@@ -141,7 +146,7 @@
|
|
|
141
146
|
}
|
|
142
147
|
return color;
|
|
143
148
|
};
|
|
144
|
-
this._initPosition =
|
|
149
|
+
this._initPosition = position => {
|
|
145
150
|
const container = this.container, zIndexValue = (0, NumberUtils_js_1.getRangeValue)(this.options.zIndex.value), minZ = 0;
|
|
146
151
|
this.position = this._calcPosition(container, position, (0, NumberUtils_js_1.clamp)(zIndexValue, minZ, container.zLayers));
|
|
147
152
|
this.initialPosition = this.position.copy();
|
|
@@ -149,15 +154,15 @@
|
|
|
149
154
|
this.moveCenter = {
|
|
150
155
|
...(0, Utils_js_1.getPosition)(this.options.move.center, canvasSize),
|
|
151
156
|
radius: this.options.move.center.radius ?? defaultRadius,
|
|
152
|
-
mode: this.options.move.center.mode ??
|
|
157
|
+
mode: this.options.move.center.mode ?? PixelMode_js_1.PixelMode.percent,
|
|
153
158
|
};
|
|
154
159
|
this.direction = (0, NumberUtils_js_1.getParticleDirectionAngle)(this.options.move.direction, this.position, this.moveCenter);
|
|
155
160
|
switch (this.options.move.direction) {
|
|
156
|
-
case
|
|
157
|
-
this.outType =
|
|
161
|
+
case MoveDirection_js_1.MoveDirection.inside:
|
|
162
|
+
this.outType = ParticleOutType_js_1.ParticleOutType.inside;
|
|
158
163
|
break;
|
|
159
|
-
case
|
|
160
|
-
this.outType =
|
|
164
|
+
case MoveDirection_js_1.MoveDirection.outside:
|
|
165
|
+
this.outType = ParticleOutType_js_1.ParticleOutType.outside;
|
|
161
166
|
break;
|
|
162
167
|
}
|
|
163
168
|
this.offset = Vectors_js_1.Vector.origin;
|
|
@@ -180,19 +185,19 @@
|
|
|
180
185
|
updater.particleDestroyed?.(this, override);
|
|
181
186
|
}
|
|
182
187
|
pathGenerator?.reset(this);
|
|
183
|
-
this._engine.dispatchEvent(
|
|
188
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.particleDestroyed, {
|
|
184
189
|
container: this.container,
|
|
185
190
|
data: {
|
|
186
191
|
particle: this,
|
|
187
192
|
},
|
|
188
193
|
});
|
|
189
194
|
}
|
|
190
|
-
|
|
195
|
+
draw(delta) {
|
|
191
196
|
const container = this.container, canvas = container.canvas;
|
|
192
197
|
for (const [, plugin] of container.plugins) {
|
|
193
|
-
|
|
198
|
+
canvas.drawParticlePlugin(plugin, this, delta);
|
|
194
199
|
}
|
|
195
|
-
|
|
200
|
+
canvas.drawParticle(this, delta);
|
|
196
201
|
}
|
|
197
202
|
getFillColor() {
|
|
198
203
|
return this._getRollColor(this.bubble.color ?? (0, ColorUtils_js_1.getHslFromAnimation)(this.color));
|
|
@@ -213,7 +218,7 @@
|
|
|
213
218
|
getStrokeColor() {
|
|
214
219
|
return this._getRollColor(this.bubble.color ?? (0, ColorUtils_js_1.getHslFromAnimation)(this.strokeColor));
|
|
215
220
|
}
|
|
216
|
-
|
|
221
|
+
init(id, position, overrideOptions, group) {
|
|
217
222
|
const container = this.container, engine = this._engine;
|
|
218
223
|
this.id = id;
|
|
219
224
|
this.group = group;
|
|
@@ -225,14 +230,15 @@
|
|
|
225
230
|
this.lastPathTime = 0;
|
|
226
231
|
this.destroyed = false;
|
|
227
232
|
this.unbreakable = false;
|
|
233
|
+
this.isRotating = false;
|
|
228
234
|
this.rotation = 0;
|
|
229
235
|
this.misplaced = false;
|
|
230
236
|
this.retina = {
|
|
231
237
|
maxDistance: {},
|
|
232
238
|
};
|
|
233
|
-
this.outType =
|
|
239
|
+
this.outType = ParticleOutType_js_1.ParticleOutType.normal;
|
|
234
240
|
this.ignoresResizeRatio = true;
|
|
235
|
-
const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = (0, OptionsUtils_js_1.loadParticlesOptions)(this._engine, container, mainOptions.particles), effectType = particlesOptions.effect.type, shapeType = particlesOptions.shape.type
|
|
241
|
+
const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = (0, OptionsUtils_js_1.loadParticlesOptions)(this._engine, container, mainOptions.particles), { reduceDuplicates } = particlesOptions, effectType = particlesOptions.effect.type, shapeType = particlesOptions.shape.type;
|
|
236
242
|
this.effect = (0, Utils_js_1.itemFromSingleOrMultiple)(effectType, this.id, reduceDuplicates);
|
|
237
243
|
this.shape = (0, Utils_js_1.itemFromSingleOrMultiple)(shapeType, this.id, reduceDuplicates);
|
|
238
244
|
const effectOptions = particlesOptions.effect, shapeOptions = particlesOptions.shape;
|
|
@@ -252,6 +258,14 @@
|
|
|
252
258
|
}
|
|
253
259
|
}
|
|
254
260
|
}
|
|
261
|
+
if (this.effect === randomString) {
|
|
262
|
+
const availableEffects = [...this.container.effectDrawers.keys()];
|
|
263
|
+
this.effect = availableEffects[Math.floor(Math.random() * availableEffects.length)];
|
|
264
|
+
}
|
|
265
|
+
if (this.shape === randomString) {
|
|
266
|
+
const availableShapes = [...this.container.shapeDrawers.keys()];
|
|
267
|
+
this.shape = availableShapes[Math.floor(Math.random() * availableShapes.length)];
|
|
268
|
+
}
|
|
255
269
|
this.effectData = loadEffectData(this.effect, effectOptions, this.id, reduceDuplicates);
|
|
256
270
|
this.shapeData = loadShapeData(this.shape, shapeOptions, this.id, reduceDuplicates);
|
|
257
271
|
particlesOptions.load(overrideOptions);
|
|
@@ -277,7 +291,7 @@
|
|
|
277
291
|
if (pathOptions.generator) {
|
|
278
292
|
this.pathGenerator = this._engine.getPathGenerator(pathOptions.generator);
|
|
279
293
|
if (this.pathGenerator && container.addPath(pathOptions.generator, this.pathGenerator)) {
|
|
280
|
-
|
|
294
|
+
this.pathGenerator.init(container);
|
|
281
295
|
}
|
|
282
296
|
}
|
|
283
297
|
container.retina.initParticle(this);
|
|
@@ -306,7 +320,7 @@
|
|
|
306
320
|
}
|
|
307
321
|
}
|
|
308
322
|
if (effectDrawer?.loadEffect) {
|
|
309
|
-
|
|
323
|
+
effectDrawer.loadEffect(this);
|
|
310
324
|
}
|
|
311
325
|
let shapeDrawer = container.shapeDrawers.get(this.shape);
|
|
312
326
|
if (!shapeDrawer) {
|
|
@@ -316,7 +330,7 @@
|
|
|
316
330
|
}
|
|
317
331
|
}
|
|
318
332
|
if (shapeDrawer?.loadShape) {
|
|
319
|
-
|
|
333
|
+
shapeDrawer.loadShape(this);
|
|
320
334
|
}
|
|
321
335
|
const sideCountFunc = shapeDrawer?.getSidesCount;
|
|
322
336
|
if (sideCountFunc) {
|
|
@@ -325,13 +339,13 @@
|
|
|
325
339
|
this.spawning = false;
|
|
326
340
|
this.shadowColor = (0, ColorUtils_js_1.rangeColorToRgb)(this.options.shadow.color);
|
|
327
341
|
for (const updater of particles.updaters) {
|
|
328
|
-
|
|
342
|
+
updater.init(this);
|
|
329
343
|
}
|
|
330
344
|
for (const mover of particles.movers) {
|
|
331
|
-
|
|
345
|
+
mover.init?.(this);
|
|
332
346
|
}
|
|
333
|
-
|
|
334
|
-
|
|
347
|
+
effectDrawer?.particleInit?.(container, this);
|
|
348
|
+
shapeDrawer?.particleInit?.(container, this);
|
|
335
349
|
for (const [, plugin] of container.plugins) {
|
|
336
350
|
plugin.particleCreated?.(this);
|
|
337
351
|
}
|
package/umd/Core/Particles.js
CHANGED
|
@@ -1,41 +1,20 @@
|
|
|
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/Utils.js", "./Utils/InteractionManager.js", "./Utils/Point.js", "./Utils/QuadTree.js", "./Utils/Ranges.js", "./Utils/Constants.js"], factory);
|
|
7
|
+
define(["require", "exports", "../Utils/Utils.js", "../Enums/Types/EventType.js", "./Utils/InteractionManager.js", "../Enums/Modes/LimitMode.js", "./Particle.js", "./Utils/Point.js", "./Utils/QuadTree.js", "./Utils/Ranges.js", "./Utils/Constants.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.Particles = void 0;
|
|
37
13
|
const Utils_js_1 = require("../Utils/Utils.js");
|
|
14
|
+
const EventType_js_1 = require("../Enums/Types/EventType.js");
|
|
38
15
|
const InteractionManager_js_1 = require("./Utils/InteractionManager.js");
|
|
16
|
+
const LimitMode_js_1 = require("../Enums/Modes/LimitMode.js");
|
|
17
|
+
const Particle_js_1 = require("./Particle.js");
|
|
39
18
|
const Point_js_1 = require("./Utils/Point.js");
|
|
40
19
|
const QuadTree_js_1 = require("./Utils/QuadTree.js");
|
|
41
20
|
const Ranges_js_1 = require("./Utils/Ranges.js");
|
|
@@ -48,11 +27,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
48
27
|
class Particles {
|
|
49
28
|
constructor(engine, container) {
|
|
50
29
|
this._addToPool = (...particles) => {
|
|
51
|
-
|
|
52
|
-
this._pool.push(particle);
|
|
53
|
-
}
|
|
30
|
+
this._pool.push(...particles);
|
|
54
31
|
};
|
|
55
|
-
this._applyDensity =
|
|
32
|
+
this._applyDensity = (options, manualCount, group) => {
|
|
56
33
|
const numberOptions = options.number;
|
|
57
34
|
if (!options.number.density?.enable) {
|
|
58
35
|
if (group === undefined) {
|
|
@@ -63,7 +40,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
63
40
|
}
|
|
64
41
|
return;
|
|
65
42
|
}
|
|
66
|
-
const densityFactor = this._initDensityFactor(numberOptions.density), optParticlesNumber = numberOptions.value, minLimit = 0, optParticlesLimit = numberOptions.limit.value > minLimit ? numberOptions.limit.value : optParticlesNumber, particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor + manualCount, particlesCount = Math.min(this.count, this.filter(
|
|
43
|
+
const densityFactor = this._initDensityFactor(numberOptions.density), optParticlesNumber = numberOptions.value, minLimit = 0, optParticlesLimit = numberOptions.limit.value > minLimit ? numberOptions.limit.value : optParticlesNumber, particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor + manualCount, particlesCount = Math.min(this.count, this.filter(t => t.group === group).length);
|
|
67
44
|
if (group === undefined) {
|
|
68
45
|
this._limit = numberOptions.limit.value * densityFactor;
|
|
69
46
|
}
|
|
@@ -71,13 +48,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
71
48
|
this._groupLimits.set(group, numberOptions.limit.value * densityFactor);
|
|
72
49
|
}
|
|
73
50
|
if (particlesCount < particlesNumber) {
|
|
74
|
-
|
|
51
|
+
this.push(Math.abs(particlesNumber - particlesCount), undefined, options, group);
|
|
75
52
|
}
|
|
76
53
|
else if (particlesCount > particlesNumber) {
|
|
77
54
|
this.removeQuantity(particlesCount - particlesNumber, group);
|
|
78
55
|
}
|
|
79
56
|
};
|
|
80
|
-
this._initDensityFactor =
|
|
57
|
+
this._initDensityFactor = densityOptions => {
|
|
81
58
|
const container = this._container, defaultFactor = 1;
|
|
82
59
|
if (!container.canvas.element || !densityOptions.enable) {
|
|
83
60
|
return defaultFactor;
|
|
@@ -85,14 +62,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
85
62
|
const canvas = container.canvas.element, pxRatio = container.retina.pixelRatio;
|
|
86
63
|
return (canvas.width * canvas.height) / (densityOptions.height * densityOptions.width * pxRatio ** squareExp);
|
|
87
64
|
};
|
|
88
|
-
this._pushParticle =
|
|
65
|
+
this._pushParticle = (position, overrideOptions, group, initializer) => {
|
|
89
66
|
try {
|
|
90
67
|
let particle = this._pool.pop();
|
|
91
68
|
if (!particle) {
|
|
92
|
-
|
|
93
|
-
particle = new Particle(this._engine, this._container);
|
|
69
|
+
particle = new Particle_js_1.Particle(this._engine, this._container);
|
|
94
70
|
}
|
|
95
|
-
|
|
71
|
+
particle.init(this._nextId, position, overrideOptions, group);
|
|
96
72
|
let canAdd = true;
|
|
97
73
|
if (initializer) {
|
|
98
74
|
canAdd = initializer(particle);
|
|
@@ -103,7 +79,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
103
79
|
this._array.push(particle);
|
|
104
80
|
this._zArray.push(particle);
|
|
105
81
|
this._nextId++;
|
|
106
|
-
this._engine.dispatchEvent(
|
|
82
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.particleAdded, {
|
|
107
83
|
container: this._container,
|
|
108
84
|
data: {
|
|
109
85
|
particle,
|
|
@@ -124,7 +100,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
124
100
|
this._array.splice(index, deleteCount);
|
|
125
101
|
this._zArray.splice(zIdx, deleteCount);
|
|
126
102
|
particle.destroy(override);
|
|
127
|
-
this._engine.dispatchEvent(
|
|
103
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.particleRemoved, {
|
|
128
104
|
container: this._container,
|
|
129
105
|
data: {
|
|
130
106
|
particle,
|
|
@@ -153,28 +129,29 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
153
129
|
get count() {
|
|
154
130
|
return this._array.length;
|
|
155
131
|
}
|
|
156
|
-
|
|
132
|
+
addManualParticles() {
|
|
157
133
|
const container = this._container, options = container.actualOptions;
|
|
158
|
-
|
|
159
|
-
await this.addParticle(particle.position ? (0, Utils_js_1.getPosition)(particle.position, container.canvas.size) : undefined, particle.options);
|
|
160
|
-
}
|
|
134
|
+
options.manualParticles.forEach(p => this.addParticle(p.position ? (0, Utils_js_1.getPosition)(p.position, container.canvas.size) : undefined, p.options));
|
|
161
135
|
}
|
|
162
|
-
|
|
163
|
-
const
|
|
136
|
+
addParticle(position, overrideOptions, group, initializer) {
|
|
137
|
+
const limitMode = this._container.actualOptions.particles.number.limit.mode, limit = group === undefined ? this._limit : this._groupLimits.get(group) ?? this._limit, currentCount = this.count, minLimit = 0;
|
|
164
138
|
if (limit > minLimit) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (currentCount >= limit) {
|
|
173
|
-
return;
|
|
139
|
+
switch (limitMode) {
|
|
140
|
+
case LimitMode_js_1.LimitMode.delete: {
|
|
141
|
+
const countOffset = 1, minCount = 0, countToRemove = currentCount + countOffset - limit;
|
|
142
|
+
if (countToRemove > minCount) {
|
|
143
|
+
this.removeQuantity(countToRemove);
|
|
144
|
+
}
|
|
145
|
+
break;
|
|
174
146
|
}
|
|
147
|
+
case LimitMode_js_1.LimitMode.wait:
|
|
148
|
+
if (currentCount >= limit) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
break;
|
|
175
152
|
}
|
|
176
153
|
}
|
|
177
|
-
return
|
|
154
|
+
return this._pushParticle(position, overrideOptions, group, initializer);
|
|
178
155
|
}
|
|
179
156
|
clear() {
|
|
180
157
|
this._array = [];
|
|
@@ -187,15 +164,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
187
164
|
this.movers = [];
|
|
188
165
|
this.updaters = [];
|
|
189
166
|
}
|
|
190
|
-
|
|
167
|
+
draw(delta) {
|
|
191
168
|
const container = this._container, canvas = container.canvas;
|
|
192
169
|
canvas.clear();
|
|
193
|
-
|
|
170
|
+
this.update(delta);
|
|
194
171
|
for (const [, plugin] of container.plugins) {
|
|
195
|
-
|
|
172
|
+
canvas.drawPlugin(plugin, delta);
|
|
196
173
|
}
|
|
197
174
|
for (const p of this._zArray) {
|
|
198
|
-
|
|
175
|
+
p.draw(delta);
|
|
199
176
|
}
|
|
200
177
|
}
|
|
201
178
|
filter(condition) {
|
|
@@ -217,24 +194,22 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
217
194
|
await this.initPlugins();
|
|
218
195
|
let handled = false;
|
|
219
196
|
for (const [, plugin] of container.plugins) {
|
|
220
|
-
|
|
221
|
-
handled = plugin.particlesInitialization();
|
|
222
|
-
}
|
|
197
|
+
handled = plugin.particlesInitialization?.() ?? handled;
|
|
223
198
|
if (handled) {
|
|
224
199
|
break;
|
|
225
200
|
}
|
|
226
201
|
}
|
|
227
|
-
|
|
202
|
+
this.addManualParticles();
|
|
228
203
|
if (!handled) {
|
|
229
204
|
const particlesOptions = options.particles, groups = particlesOptions.groups;
|
|
230
205
|
for (const group in groups) {
|
|
231
206
|
const groupOptions = groups[group];
|
|
232
207
|
for (let i = this.count, j = 0; j < groupOptions.number?.value && i < particlesOptions.number.value; i++, j++) {
|
|
233
|
-
|
|
208
|
+
this.addParticle(undefined, groupOptions, group);
|
|
234
209
|
}
|
|
235
210
|
}
|
|
236
211
|
for (let i = this.count; i < particlesOptions.number.value; i++) {
|
|
237
|
-
|
|
212
|
+
this.addParticle();
|
|
238
213
|
}
|
|
239
214
|
}
|
|
240
215
|
}
|
|
@@ -247,18 +222,18 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
247
222
|
this.updaters = await this._engine.getUpdaters(container, true);
|
|
248
223
|
await this._interactionManager.init();
|
|
249
224
|
for (const [, pathGenerator] of container.pathGenerators) {
|
|
250
|
-
|
|
225
|
+
pathGenerator.init(container);
|
|
251
226
|
}
|
|
252
227
|
}
|
|
253
|
-
|
|
228
|
+
push(nb, mouse, overrideOptions, group) {
|
|
254
229
|
for (let i = 0; i < nb; i++) {
|
|
255
|
-
|
|
230
|
+
this.addParticle(mouse?.position, overrideOptions, group);
|
|
256
231
|
}
|
|
257
232
|
}
|
|
258
233
|
async redraw() {
|
|
259
234
|
this.clear();
|
|
260
235
|
await this.init();
|
|
261
|
-
|
|
236
|
+
this.draw({ value: 0, factor: 0 });
|
|
262
237
|
}
|
|
263
238
|
remove(particle, group, override) {
|
|
264
239
|
this.removeAt(this._array.indexOf(particle), undefined, group, override);
|
|
@@ -279,12 +254,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
279
254
|
const defaultIndex = 0;
|
|
280
255
|
this.removeAt(defaultIndex, quantity, group);
|
|
281
256
|
}
|
|
282
|
-
|
|
257
|
+
setDensity() {
|
|
283
258
|
const options = this._container.actualOptions, groups = options.particles.groups, manualCount = 0;
|
|
284
259
|
for (const group in groups) {
|
|
285
|
-
|
|
260
|
+
this._applyDensity(groups[group], manualCount, group);
|
|
286
261
|
}
|
|
287
|
-
|
|
262
|
+
this._applyDensity(options.particles, options.manualParticles.length);
|
|
288
263
|
}
|
|
289
264
|
setLastZIndex(zIndex) {
|
|
290
265
|
this._lastZIndex = zIndex;
|
|
@@ -293,14 +268,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
293
268
|
setResizeFactor(factor) {
|
|
294
269
|
this._resizeFactor = factor;
|
|
295
270
|
}
|
|
296
|
-
|
|
271
|
+
update(delta) {
|
|
297
272
|
const container = this._container, particlesToDelete = new Set();
|
|
298
273
|
this.quadTree = new QuadTree_js_1.QuadTree(qTreeRectangle(container.canvas.size), qTreeCapacity);
|
|
299
274
|
for (const [, pathGenerator] of container.pathGenerators) {
|
|
300
275
|
pathGenerator.update();
|
|
301
276
|
}
|
|
302
277
|
for (const [, plugin] of container.plugins) {
|
|
303
|
-
|
|
278
|
+
plugin.update?.(delta);
|
|
304
279
|
}
|
|
305
280
|
const resizeFactor = this._resizeFactor;
|
|
306
281
|
for (const particle of this._array) {
|
|
@@ -320,7 +295,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
320
295
|
}
|
|
321
296
|
for (const mover of this.movers) {
|
|
322
297
|
if (mover.isEnabled(particle)) {
|
|
323
|
-
|
|
298
|
+
mover.move(particle, delta);
|
|
324
299
|
}
|
|
325
300
|
}
|
|
326
301
|
if (particle.destroyed) {
|
|
@@ -334,7 +309,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
334
309
|
this._array = this.filter(checkDelete);
|
|
335
310
|
this._zArray = this._zArray.filter(checkDelete);
|
|
336
311
|
for (const particle of particlesToDelete) {
|
|
337
|
-
this._engine.dispatchEvent(
|
|
312
|
+
this._engine.dispatchEvent(EventType_js_1.EventType.particleRemoved, {
|
|
338
313
|
container: this._container,
|
|
339
314
|
data: {
|
|
340
315
|
particle,
|
|
@@ -343,13 +318,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
343
318
|
}
|
|
344
319
|
this._addToPool(...particlesToDelete);
|
|
345
320
|
}
|
|
346
|
-
|
|
321
|
+
this._interactionManager.externalInteract(delta);
|
|
347
322
|
for (const particle of this._array) {
|
|
348
323
|
for (const updater of this.updaters) {
|
|
349
|
-
|
|
324
|
+
updater.update(particle, delta);
|
|
350
325
|
}
|
|
351
326
|
if (!particle.destroyed && !particle.spawning) {
|
|
352
|
-
|
|
327
|
+
this._interactionManager.particlesInteract(particle, delta);
|
|
353
328
|
}
|
|
354
329
|
}
|
|
355
330
|
delete this._resizeFactor;
|
|
@@ -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", "./Constants.js", "../../Utils/TypeUtils.js"], factory);
|
|
7
|
+
define(["require", "exports", "../../Utils/Utils.js", "./Constants.js", "../../Enums/InteractivityDetect.js", "../../Utils/TypeUtils.js"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
exports.EventListeners = void 0;
|
|
13
13
|
const Utils_js_1 = require("../../Utils/Utils.js");
|
|
14
14
|
const Constants_js_1 = require("./Constants.js");
|
|
15
|
+
const InteractivityDetect_js_1 = require("../../Enums/InteractivityDetect.js");
|
|
15
16
|
const TypeUtils_js_1 = require("../../Utils/TypeUtils.js");
|
|
16
17
|
const double = 2;
|
|
17
18
|
function manageListener(element, event, handler, add, options) {
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
class EventListeners {
|
|
34
35
|
constructor(container) {
|
|
35
36
|
this.container = container;
|
|
36
|
-
this._doMouseTouchClick =
|
|
37
|
+
this._doMouseTouchClick = e => {
|
|
37
38
|
const container = this.container, options = container.actualOptions;
|
|
38
39
|
if (this._canPush) {
|
|
39
40
|
const mouseInteractivity = container.interactivity.mouse, mousePos = mouseInteractivity.position;
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
mouseInteractivity.clickPosition = { ...mousePos };
|
|
44
45
|
mouseInteractivity.clickTime = new Date().getTime();
|
|
45
46
|
const onClick = options.interactivity.events.onClick;
|
|
46
|
-
(0, Utils_js_1.executeOnSingleOrMultiple)(onClick.mode,
|
|
47
|
+
(0, Utils_js_1.executeOnSingleOrMultiple)(onClick.mode, mode => this.container.handleClickMode(mode));
|
|
47
48
|
}
|
|
48
49
|
if (e.type === "touchend") {
|
|
49
50
|
const touchDelay = 500;
|
|
@@ -51,8 +52,8 @@
|
|
|
51
52
|
}
|
|
52
53
|
};
|
|
53
54
|
this._handleThemeChange = (e) => {
|
|
54
|
-
const mediaEvent = e, container = this.container, options = container.options, defaultThemes = options.defaultThemes, themeName = mediaEvent.matches ? defaultThemes.dark : defaultThemes.light, theme = options.themes.find(
|
|
55
|
-
if (theme
|
|
55
|
+
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);
|
|
56
|
+
if (theme?.default.auto) {
|
|
56
57
|
void container.loadTheme(themeName);
|
|
57
58
|
}
|
|
58
59
|
};
|
|
@@ -62,7 +63,7 @@
|
|
|
62
63
|
if (!options.pauseOnBlur) {
|
|
63
64
|
return;
|
|
64
65
|
}
|
|
65
|
-
if (document
|
|
66
|
+
if (document?.hidden) {
|
|
66
67
|
container.pageHidden = true;
|
|
67
68
|
container.pause();
|
|
68
69
|
}
|
|
@@ -114,14 +115,14 @@
|
|
|
114
115
|
manageListener(interactivityEl, mouseLeaveTmpEvent, handlers.mouseLeave, add);
|
|
115
116
|
manageListener(interactivityEl, Constants_js_1.touchCancelEvent, handlers.touchCancel, add);
|
|
116
117
|
};
|
|
117
|
-
this._manageListeners =
|
|
118
|
+
this._manageListeners = add => {
|
|
118
119
|
const handlers = this._handlers, container = this.container, options = container.actualOptions, detectType = options.interactivity.detectsOn, canvasEl = container.canvas.element;
|
|
119
120
|
let mouseLeaveTmpEvent = Constants_js_1.mouseLeaveEvent;
|
|
120
|
-
if (detectType ===
|
|
121
|
+
if (detectType === InteractivityDetect_js_1.InteractivityDetect.window) {
|
|
121
122
|
container.interactivity.element = window;
|
|
122
123
|
mouseLeaveTmpEvent = Constants_js_1.mouseOutEvent;
|
|
123
124
|
}
|
|
124
|
-
else if (detectType ===
|
|
125
|
+
else if (detectType === InteractivityDetect_js_1.InteractivityDetect.parent && canvasEl) {
|
|
125
126
|
container.interactivity.element = canvasEl.parentElement ?? canvasEl.parentNode;
|
|
126
127
|
}
|
|
127
128
|
else {
|
|
@@ -134,7 +135,7 @@
|
|
|
134
135
|
manageListener(document, Constants_js_1.visibilityChangeEvent, handlers.visibilityChange, add, false);
|
|
135
136
|
}
|
|
136
137
|
};
|
|
137
|
-
this._manageMediaMatch =
|
|
138
|
+
this._manageMediaMatch = add => {
|
|
138
139
|
const handlers = this._handlers, mediaMatch = (0, Utils_js_1.safeMatchMedia)("(prefers-color-scheme: dark)");
|
|
139
140
|
if (!mediaMatch) {
|
|
140
141
|
return;
|
|
@@ -153,7 +154,7 @@
|
|
|
153
154
|
mediaMatch.removeListener(handlers.oldThemeChange);
|
|
154
155
|
}
|
|
155
156
|
};
|
|
156
|
-
this._manageResize =
|
|
157
|
+
this._manageResize = add => {
|
|
157
158
|
const handlers = this._handlers, container = this.container, options = container.actualOptions;
|
|
158
159
|
if (!options.interactivity.events.resize) {
|
|
159
160
|
return;
|
|
@@ -172,7 +173,7 @@
|
|
|
172
173
|
}
|
|
173
174
|
else if (!this._resizeObserver && add && canvasEl) {
|
|
174
175
|
this._resizeObserver = new ResizeObserver((entries) => {
|
|
175
|
-
const entry = entries.find(
|
|
176
|
+
const entry = entries.find(e => e.target === canvasEl);
|
|
176
177
|
if (!entry) {
|
|
177
178
|
return;
|
|
178
179
|
}
|
|
@@ -190,7 +191,7 @@
|
|
|
190
191
|
mouse.clicking = true;
|
|
191
192
|
mouse.downPosition = mouse.position;
|
|
192
193
|
};
|
|
193
|
-
this._mouseTouchClick =
|
|
194
|
+
this._mouseTouchClick = e => {
|
|
194
195
|
const container = this.container, options = container.actualOptions, { mouse } = container.interactivity;
|
|
195
196
|
mouse.inside = true;
|
|
196
197
|
let handled = false;
|
|
@@ -225,7 +226,7 @@
|
|
|
225
226
|
mouse.inside = false;
|
|
226
227
|
mouse.clicking = false;
|
|
227
228
|
};
|
|
228
|
-
this._mouseTouchMove =
|
|
229
|
+
this._mouseTouchMove = e => {
|
|
229
230
|
const container = this.container, options = container.actualOptions, interactivity = container.interactivity, canvasEl = container.canvas.element;
|
|
230
231
|
if (!interactivity?.element) {
|
|
231
232
|
return;
|
|
@@ -244,7 +245,7 @@
|
|
|
244
245
|
};
|
|
245
246
|
}
|
|
246
247
|
}
|
|
247
|
-
else if (options.interactivity.detectsOn ===
|
|
248
|
+
else if (options.interactivity.detectsOn === InteractivityDetect_js_1.InteractivityDetect.parent) {
|
|
248
249
|
const source = mouseEvent.target, target = mouseEvent.currentTarget;
|
|
249
250
|
if (source && target && canvasEl) {
|
|
250
251
|
const sourceRect = source.getBoundingClientRect(), targetRect = target.getBoundingClientRect(), canvasRect = canvasEl.getBoundingClientRect();
|
|
@@ -285,21 +286,21 @@
|
|
|
285
286
|
interactivity.mouse.position = pos;
|
|
286
287
|
interactivity.status = Constants_js_1.mouseMoveEvent;
|
|
287
288
|
};
|
|
288
|
-
this._touchEnd =
|
|
289
|
+
this._touchEnd = e => {
|
|
289
290
|
const evt = e, touches = Array.from(evt.changedTouches);
|
|
290
291
|
for (const touch of touches) {
|
|
291
292
|
this._touches.delete(touch.identifier);
|
|
292
293
|
}
|
|
293
294
|
this._mouseTouchFinish();
|
|
294
295
|
};
|
|
295
|
-
this._touchEndClick =
|
|
296
|
+
this._touchEndClick = e => {
|
|
296
297
|
const evt = e, touches = Array.from(evt.changedTouches);
|
|
297
298
|
for (const touch of touches) {
|
|
298
299
|
this._touches.delete(touch.identifier);
|
|
299
300
|
}
|
|
300
301
|
this._mouseTouchClick(e);
|
|
301
302
|
};
|
|
302
|
-
this._touchStart =
|
|
303
|
+
this._touchStart = e => {
|
|
303
304
|
const evt = e, touches = Array.from(evt.changedTouches);
|
|
304
305
|
for (const touch of touches) {
|
|
305
306
|
this._touches.set(touch.identifier, performance.now());
|