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