@tsparticles/engine 3.3.0 → 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 +27 -22
- package/browser/Core/Container.js +55 -42
- package/browser/Core/Engine.js +82 -74
- package/browser/Core/Particle.js +29 -15
- package/browser/Core/Particles.js +23 -24
- package/browser/Core/Utils/EventListeners.js +18 -17
- package/browser/Core/Utils/ExternalInteractorBase.js +2 -1
- package/browser/Core/Utils/InteractionManager.js +3 -2
- 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 +13 -7
- 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 +27 -22
- package/cjs/Core/Container.js +55 -42
- package/cjs/Core/Engine.js +82 -74
- package/cjs/Core/Particle.js +29 -15
- package/cjs/Core/Particles.js +23 -24
- package/cjs/Core/Utils/EventListeners.js +18 -17
- package/cjs/Core/Utils/ExternalInteractorBase.js +2 -1
- package/cjs/Core/Utils/InteractionManager.js +3 -2
- 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 +13 -7
- 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 +27 -22
- package/esm/Core/Container.js +55 -42
- package/esm/Core/Engine.js +82 -74
- package/esm/Core/Particle.js +29 -15
- package/esm/Core/Particles.js +23 -24
- package/esm/Core/Utils/EventListeners.js +18 -17
- package/esm/Core/Utils/ExternalInteractorBase.js +2 -1
- package/esm/Core/Utils/InteractionManager.js +3 -2
- 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 +13 -7
- 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/Container.d.ts +4 -2
- package/types/Core/Engine.d.ts +6 -5
- package/types/Core/Interfaces/IPlugin.d.ts +3 -4
- package/types/Core/Interfaces/IShapeDrawer.d.ts +1 -0
- package/types/Core/Particle.d.ts +1 -0
- 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/umd/Core/Canvas.js +27 -22
- package/umd/Core/Container.js +56 -43
- package/umd/Core/Engine.js +83 -99
- package/umd/Core/Particle.js +30 -16
- package/umd/Core/Particles.js +24 -25
- package/umd/Core/Utils/EventListeners.js +19 -18
- package/umd/Core/Utils/ExternalInteractorBase.js +3 -2
- package/umd/Core/Utils/InteractionManager.js +4 -3
- 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 +14 -8
- 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/174.min.js +0 -2
- package/174.min.js.LICENSE.txt +0 -1
- package/dist_browser_Core_Container_js.js +0 -102
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Responsive = void 0;
|
|
4
|
+
const ResponsiveMode_js_1 = require("../../Enums/Modes/ResponsiveMode.js");
|
|
4
5
|
const Utils_js_1 = require("../../Utils/Utils.js");
|
|
5
6
|
class Responsive {
|
|
6
7
|
constructor() {
|
|
7
8
|
this.maxWidth = Infinity;
|
|
8
9
|
this.options = {};
|
|
9
|
-
this.mode =
|
|
10
|
+
this.mode = ResponsiveMode_js_1.ResponsiveMode.canvas;
|
|
10
11
|
}
|
|
11
12
|
load(data) {
|
|
12
13
|
if (!data) {
|
|
@@ -16,11 +17,11 @@ class Responsive {
|
|
|
16
17
|
this.maxWidth = data.maxWidth;
|
|
17
18
|
}
|
|
18
19
|
if (data.mode !== undefined) {
|
|
19
|
-
if (data.mode ===
|
|
20
|
-
this.mode =
|
|
20
|
+
if (data.mode === ResponsiveMode_js_1.ResponsiveMode.screen) {
|
|
21
|
+
this.mode = ResponsiveMode_js_1.ResponsiveMode.screen;
|
|
21
22
|
}
|
|
22
23
|
else {
|
|
23
|
-
this.mode =
|
|
24
|
+
this.mode = ResponsiveMode_js_1.ResponsiveMode.canvas;
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
if (data.options !== undefined) {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ThemeDefault = void 0;
|
|
4
|
+
const ThemeMode_js_1 = require("../../../Enums/Modes/ThemeMode.js");
|
|
4
5
|
class ThemeDefault {
|
|
5
6
|
constructor() {
|
|
6
7
|
this.auto = false;
|
|
7
|
-
this.mode =
|
|
8
|
+
this.mode = ThemeMode_js_1.ThemeMode.any;
|
|
8
9
|
this.value = false;
|
|
9
10
|
}
|
|
10
11
|
load(data) {
|
package/cjs/Types/RangeType.js
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RangeType = void 0;
|
|
4
|
+
var RangeType;
|
|
5
|
+
(function (RangeType) {
|
|
6
|
+
RangeType["circle"] = "circle";
|
|
7
|
+
RangeType["rectangle"] = "rectangle";
|
|
8
|
+
})(RangeType || (exports.RangeType = RangeType = {}));
|
package/cjs/Utils/CanvasUtils.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.alterHsl = exports.drawParticlePlugin = exports.drawPlugin = exports.drawShapeAfterDraw = exports.drawShape = exports.drawEffect = exports.drawParticle = exports.clear = exports.paintImage = exports.paintBase = exports.drawLine = void 0;
|
|
4
|
+
const AlterType_js_1 = require("../Enums/Types/AlterType.js");
|
|
4
5
|
const ColorUtils_js_1 = require("./ColorUtils.js");
|
|
5
|
-
const origin = { x: 0, y: 0 }
|
|
6
|
+
const origin = { x: 0, y: 0 }, defaultTransform = {
|
|
7
|
+
a: 1,
|
|
8
|
+
b: 0,
|
|
9
|
+
c: 0,
|
|
10
|
+
d: 1,
|
|
11
|
+
};
|
|
6
12
|
function drawLine(context, begin, end) {
|
|
7
13
|
context.beginPath();
|
|
8
14
|
context.moveTo(begin.x, begin.y);
|
|
@@ -32,11 +38,11 @@ function drawParticle(data) {
|
|
|
32
38
|
const { container, context, particle, delta, colorStyles, backgroundMask, composite, radius, opacity, shadow, transform, } = data, pos = particle.getPosition(), defaultAngle = 0, angle = particle.rotation + (particle.pathRotation ? particle.velocity.angle : defaultAngle), rotateData = {
|
|
33
39
|
sin: Math.sin(angle),
|
|
34
40
|
cos: Math.cos(angle),
|
|
35
|
-
},
|
|
36
|
-
a: rotateData.cos * (transform.a ??
|
|
37
|
-
b: rotateData.sin * (transform.b ??
|
|
38
|
-
c: -rotateData.sin * (transform.c ??
|
|
39
|
-
d: rotateData.cos * (transform.d ??
|
|
41
|
+
}, rotating = !!angle, identity = 1, transformData = {
|
|
42
|
+
a: rotateData.cos * (transform.a ?? defaultTransform.a),
|
|
43
|
+
b: rotating ? rotateData.sin * (transform.b ?? identity) : transform.b ?? defaultTransform.b,
|
|
44
|
+
c: rotating ? -rotateData.sin * (transform.c ?? identity) : transform.c ?? defaultTransform.c,
|
|
45
|
+
d: rotateData.cos * (transform.d ?? defaultTransform.d),
|
|
40
46
|
};
|
|
41
47
|
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);
|
|
42
48
|
if (backgroundMask) {
|
|
@@ -163,7 +169,7 @@ function alterHsl(color, type, value) {
|
|
|
163
169
|
return {
|
|
164
170
|
h: color.h,
|
|
165
171
|
s: color.s,
|
|
166
|
-
l: color.l + (type ===
|
|
172
|
+
l: color.l + (type === AlterType_js_1.AlterType.darken ? -lFactor : lFactor) * value,
|
|
167
173
|
};
|
|
168
174
|
}
|
|
169
175
|
exports.alterHsl = alterHsl;
|
package/cjs/Utils/ColorUtils.js
CHANGED
|
@@ -4,7 +4,15 @@ exports.updateColor = exports.updateColorValue = exports.getHslAnimationFromHsl
|
|
|
4
4
|
const NumberUtils_js_1 = require("./NumberUtils.js");
|
|
5
5
|
const TypeUtils_js_1 = require("./TypeUtils.js");
|
|
6
6
|
const Constants_js_1 = require("../Core/Utils/Constants.js");
|
|
7
|
+
const AnimationStatus_js_1 = require("../Enums/AnimationStatus.js");
|
|
7
8
|
const Utils_js_1 = require("./Utils.js");
|
|
9
|
+
var RgbIndexes;
|
|
10
|
+
(function (RgbIndexes) {
|
|
11
|
+
RgbIndexes[RgbIndexes["r"] = 1] = "r";
|
|
12
|
+
RgbIndexes[RgbIndexes["g"] = 2] = "g";
|
|
13
|
+
RgbIndexes[RgbIndexes["b"] = 3] = "b";
|
|
14
|
+
RgbIndexes[RgbIndexes["a"] = 4] = "a";
|
|
15
|
+
})(RgbIndexes || (RgbIndexes = {}));
|
|
8
16
|
const randomColorValue = "random", midColorValue = "mid", colorManagers = new Map();
|
|
9
17
|
function addColorManager(manager) {
|
|
10
18
|
colorManagers.set(manager.key, manager);
|
|
@@ -21,12 +29,12 @@ function stringToRgba(input) {
|
|
|
21
29
|
}), regex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i, result = regex.exec(hexFixed), radix = 16, defaultAlpha = 1, alphaFactor = 0xff;
|
|
22
30
|
return result
|
|
23
31
|
? {
|
|
24
|
-
a: result[
|
|
25
|
-
? parseInt(result[
|
|
32
|
+
a: result[RgbIndexes.a] !== undefined
|
|
33
|
+
? parseInt(result[RgbIndexes.a], radix) / alphaFactor
|
|
26
34
|
: defaultAlpha,
|
|
27
|
-
b: parseInt(result[
|
|
28
|
-
g: parseInt(result[
|
|
29
|
-
r: parseInt(result[
|
|
35
|
+
b: parseInt(result[RgbIndexes.b], radix),
|
|
36
|
+
g: parseInt(result[RgbIndexes.g], radix),
|
|
37
|
+
r: parseInt(result[RgbIndexes.r], radix),
|
|
30
38
|
}
|
|
31
39
|
: undefined;
|
|
32
40
|
}
|
|
@@ -273,7 +281,7 @@ function setColorAnimation(colorValue, colorAnimation, reduceFactor) {
|
|
|
273
281
|
if (colorValue.enable) {
|
|
274
282
|
colorValue.velocity = ((0, NumberUtils_js_1.getRangeValue)(colorAnimation.speed) / Constants_js_1.percentDenominator) * reduceFactor;
|
|
275
283
|
colorValue.decay = decayOffset - (0, NumberUtils_js_1.getRangeValue)(colorAnimation.decay);
|
|
276
|
-
colorValue.status =
|
|
284
|
+
colorValue.status = AnimationStatus_js_1.AnimationStatus.increasing;
|
|
277
285
|
colorValue.loops = defaultLoops;
|
|
278
286
|
colorValue.maxLoops = (0, NumberUtils_js_1.getRangeValue)(colorAnimation.count);
|
|
279
287
|
colorValue.time = defaultTime;
|
|
@@ -306,7 +314,7 @@ function updateColorValue(data, range, decrease, delta) {
|
|
|
306
314
|
return;
|
|
307
315
|
}
|
|
308
316
|
const offset = data.offset ? (0, NumberUtils_js_1.randomInRange)(data.offset) : minOffset, velocity = (data.velocity ?? minVelocity) * delta.factor + offset * velocityFactor, decay = data.decay ?? identity, max = (0, NumberUtils_js_1.getRangeMax)(range), min = (0, NumberUtils_js_1.getRangeMin)(range);
|
|
309
|
-
if (!decrease || data.status ===
|
|
317
|
+
if (!decrease || data.status === AnimationStatus_js_1.AnimationStatus.increasing) {
|
|
310
318
|
data.value += velocity;
|
|
311
319
|
if (data.value > max) {
|
|
312
320
|
if (!data.loops) {
|
|
@@ -314,7 +322,7 @@ function updateColorValue(data, range, decrease, delta) {
|
|
|
314
322
|
}
|
|
315
323
|
data.loops++;
|
|
316
324
|
if (decrease) {
|
|
317
|
-
data.status =
|
|
325
|
+
data.status = AnimationStatus_js_1.AnimationStatus.decreasing;
|
|
318
326
|
}
|
|
319
327
|
else {
|
|
320
328
|
data.value -= max;
|
|
@@ -329,7 +337,7 @@ function updateColorValue(data, range, decrease, delta) {
|
|
|
329
337
|
data.loops = 0;
|
|
330
338
|
}
|
|
331
339
|
data.loops++;
|
|
332
|
-
data.status =
|
|
340
|
+
data.status = AnimationStatus_js_1.AnimationStatus.increasing;
|
|
333
341
|
}
|
|
334
342
|
}
|
|
335
343
|
if (data.velocity && decay !== identity) {
|
|
@@ -16,7 +16,7 @@ class EventDispatcher {
|
|
|
16
16
|
}
|
|
17
17
|
dispatchEvent(type, args) {
|
|
18
18
|
const listeners = this._listeners.get(type);
|
|
19
|
-
listeners?.forEach(
|
|
19
|
+
listeners?.forEach(handler => handler(args));
|
|
20
20
|
}
|
|
21
21
|
hasEventListener(type) {
|
|
22
22
|
return !!this._listeners.get(type);
|
|
@@ -3,6 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.HslColorManager = void 0;
|
|
4
4
|
const NumberUtils_js_1 = require("./NumberUtils.js");
|
|
5
5
|
const ColorUtils_js_1 = require("./ColorUtils.js");
|
|
6
|
+
var HslIndexes;
|
|
7
|
+
(function (HslIndexes) {
|
|
8
|
+
HslIndexes[HslIndexes["h"] = 1] = "h";
|
|
9
|
+
HslIndexes[HslIndexes["s"] = 2] = "s";
|
|
10
|
+
HslIndexes[HslIndexes["l"] = 3] = "l";
|
|
11
|
+
HslIndexes[HslIndexes["a"] = 5] = "a";
|
|
12
|
+
})(HslIndexes || (HslIndexes = {}));
|
|
6
13
|
class HslColorManager {
|
|
7
14
|
constructor() {
|
|
8
15
|
this.key = "hsl";
|
|
@@ -31,10 +38,10 @@ class HslColorManager {
|
|
|
31
38
|
const regex = /hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.%]+)\s*)?\)/i, result = regex.exec(input), minLength = 4, defaultAlpha = 1, radix = 10;
|
|
32
39
|
return result
|
|
33
40
|
? (0, ColorUtils_js_1.hslaToRgba)({
|
|
34
|
-
a: result.length > minLength ? (0, NumberUtils_js_1.parseAlpha)(result[
|
|
35
|
-
h: parseInt(result[
|
|
36
|
-
l: parseInt(result[
|
|
37
|
-
s: parseInt(result[
|
|
41
|
+
a: result.length > minLength ? (0, NumberUtils_js_1.parseAlpha)(result[HslIndexes.a]) : defaultAlpha,
|
|
42
|
+
h: parseInt(result[HslIndexes.h], radix),
|
|
43
|
+
l: parseInt(result[HslIndexes.l], radix),
|
|
44
|
+
s: parseInt(result[HslIndexes.s], radix),
|
|
38
45
|
})
|
|
39
46
|
: undefined;
|
|
40
47
|
}
|
package/cjs/Utils/NumberUtils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseAlpha = exports.calcExactPositionOrRandomFromSizeRanged = exports.calcExactPositionOrRandomFromSize = exports.calcPositionOrRandomFromSizeRanged = exports.calcPositionOrRandomFromSize = exports.calcPositionFromSize = exports.collisionVelocity = exports.getParticleBaseVelocity = exports.getParticleDirectionAngle = exports.degToRad = exports.getDistance = exports.getDistances = exports.setRangeValue = exports.getRangeMax = exports.getRangeMin = exports.getRangeValue = exports.randomInRange = exports.mix = exports.clamp = exports.getRandom = exports.setRandom = exports.getEasing = exports.addEasing = void 0;
|
|
4
|
+
const MoveDirection_js_1 = require("../Enums/Directions/MoveDirection.js");
|
|
4
5
|
const Vectors_js_1 = require("../Core/Utils/Vectors.js");
|
|
5
6
|
const TypeUtils_js_1 = require("./TypeUtils.js");
|
|
6
7
|
const Constants_js_1 = require("../Core/Utils/Constants.js");
|
|
@@ -88,25 +89,25 @@ function getParticleDirectionAngle(direction, position, center) {
|
|
|
88
89
|
}
|
|
89
90
|
const empty = 0, half = 0.5, quarter = 0.25, threeQuarter = half + quarter;
|
|
90
91
|
switch (direction) {
|
|
91
|
-
case
|
|
92
|
+
case MoveDirection_js_1.MoveDirection.top:
|
|
92
93
|
return -Math.PI * half;
|
|
93
|
-
case
|
|
94
|
+
case MoveDirection_js_1.MoveDirection.topRight:
|
|
94
95
|
return -Math.PI * quarter;
|
|
95
|
-
case
|
|
96
|
+
case MoveDirection_js_1.MoveDirection.right:
|
|
96
97
|
return empty;
|
|
97
|
-
case
|
|
98
|
+
case MoveDirection_js_1.MoveDirection.bottomRight:
|
|
98
99
|
return Math.PI * quarter;
|
|
99
|
-
case
|
|
100
|
+
case MoveDirection_js_1.MoveDirection.bottom:
|
|
100
101
|
return Math.PI * half;
|
|
101
|
-
case
|
|
102
|
+
case MoveDirection_js_1.MoveDirection.bottomLeft:
|
|
102
103
|
return Math.PI * threeQuarter;
|
|
103
|
-
case
|
|
104
|
+
case MoveDirection_js_1.MoveDirection.left:
|
|
104
105
|
return Math.PI;
|
|
105
|
-
case
|
|
106
|
+
case MoveDirection_js_1.MoveDirection.topLeft:
|
|
106
107
|
return -Math.PI * threeQuarter;
|
|
107
|
-
case
|
|
108
|
+
case MoveDirection_js_1.MoveDirection.inside:
|
|
108
109
|
return Math.atan2(center.y - position.y, center.x - position.x);
|
|
109
|
-
case
|
|
110
|
+
case MoveDirection_js_1.MoveDirection.outside:
|
|
110
111
|
return Math.atan2(position.y - center.y, position.x - center.x);
|
|
111
112
|
default:
|
|
112
113
|
return getRandom() * doublePI;
|
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RgbColorManager = void 0;
|
|
4
4
|
const NumberUtils_js_1 = require("./NumberUtils.js");
|
|
5
|
+
var RgbIndexes;
|
|
6
|
+
(function (RgbIndexes) {
|
|
7
|
+
RgbIndexes[RgbIndexes["r"] = 1] = "r";
|
|
8
|
+
RgbIndexes[RgbIndexes["g"] = 2] = "g";
|
|
9
|
+
RgbIndexes[RgbIndexes["b"] = 3] = "b";
|
|
10
|
+
RgbIndexes[RgbIndexes["a"] = 5] = "a";
|
|
11
|
+
})(RgbIndexes || (RgbIndexes = {}));
|
|
5
12
|
class RgbColorManager {
|
|
6
13
|
constructor() {
|
|
7
14
|
this.key = "rgb";
|
|
@@ -30,10 +37,10 @@ class RgbColorManager {
|
|
|
30
37
|
const regex = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.%]+)\s*)?\)/i, result = regex.exec(input), radix = 10, minLength = 4, defaultAlpha = 1;
|
|
31
38
|
return result
|
|
32
39
|
? {
|
|
33
|
-
a: result.length > minLength ? (0, NumberUtils_js_1.parseAlpha)(result[
|
|
34
|
-
b: parseInt(result[
|
|
35
|
-
g: parseInt(result[
|
|
36
|
-
r: parseInt(result[
|
|
40
|
+
a: result.length > minLength ? (0, NumberUtils_js_1.parseAlpha)(result[RgbIndexes.a]) : defaultAlpha,
|
|
41
|
+
b: parseInt(result[RgbIndexes.b], radix),
|
|
42
|
+
g: parseInt(result[RgbIndexes.g], radix),
|
|
43
|
+
r: parseInt(result[RgbIndexes.r], radix),
|
|
37
44
|
}
|
|
38
45
|
: undefined;
|
|
39
46
|
}
|
package/cjs/Utils/Utils.js
CHANGED
|
@@ -4,6 +4,12 @@ exports.updateAnimation = exports.getSize = exports.getPosition = exports.initPa
|
|
|
4
4
|
const NumberUtils_js_1 = require("./NumberUtils.js");
|
|
5
5
|
const Constants_js_1 = require("../Core/Utils/Constants.js");
|
|
6
6
|
const TypeUtils_js_1 = require("./TypeUtils.js");
|
|
7
|
+
const AnimationMode_js_1 = require("../Enums/Modes/AnimationMode.js");
|
|
8
|
+
const AnimationStatus_js_1 = require("../Enums/AnimationStatus.js");
|
|
9
|
+
const DestroyType_js_1 = require("../Enums/Types/DestroyType.js");
|
|
10
|
+
const OutModeDirection_js_1 = require("../Enums/Directions/OutModeDirection.js");
|
|
11
|
+
const PixelMode_js_1 = require("../Enums/Modes/PixelMode.js");
|
|
12
|
+
const StartValueType_js_1 = require("../Enums/Types/StartValueType.js");
|
|
7
13
|
const Vectors_js_1 = require("../Core/Utils/Vectors.js");
|
|
8
14
|
const _logger = {
|
|
9
15
|
debug: console.debug,
|
|
@@ -42,10 +48,10 @@ function rectSideBounce(data) {
|
|
|
42
48
|
return res;
|
|
43
49
|
}
|
|
44
50
|
function checkSelector(element, selectors) {
|
|
45
|
-
const res = executeOnSingleOrMultiple(selectors,
|
|
51
|
+
const res = executeOnSingleOrMultiple(selectors, selector => {
|
|
46
52
|
return element.matches(selector);
|
|
47
53
|
});
|
|
48
|
-
return (0, TypeUtils_js_1.isArray)(res) ? res.some(
|
|
54
|
+
return (0, TypeUtils_js_1.isArray)(res) ? res.some(t => t) : res;
|
|
49
55
|
}
|
|
50
56
|
function isSsr() {
|
|
51
57
|
return typeof window === "undefined" || !window || typeof window.document === "undefined" || !window.document;
|
|
@@ -104,16 +110,16 @@ function isPointInside(point, size, offset, radius, direction) {
|
|
|
104
110
|
exports.isPointInside = isPointInside;
|
|
105
111
|
function areBoundsInside(bounds, size, offset, direction) {
|
|
106
112
|
let inside = true;
|
|
107
|
-
if (!direction || direction ===
|
|
113
|
+
if (!direction || direction === OutModeDirection_js_1.OutModeDirection.bottom) {
|
|
108
114
|
inside = bounds.top < size.height + offset.x;
|
|
109
115
|
}
|
|
110
|
-
if (inside && (!direction || direction ===
|
|
116
|
+
if (inside && (!direction || direction === OutModeDirection_js_1.OutModeDirection.left)) {
|
|
111
117
|
inside = bounds.right > offset.x;
|
|
112
118
|
}
|
|
113
|
-
if (inside && (!direction || direction ===
|
|
119
|
+
if (inside && (!direction || direction === OutModeDirection_js_1.OutModeDirection.right)) {
|
|
114
120
|
inside = bounds.left < size.width + offset.y;
|
|
115
121
|
}
|
|
116
|
-
if (inside && (!direction || direction ===
|
|
122
|
+
if (inside && (!direction || direction === OutModeDirection_js_1.OutModeDirection.top)) {
|
|
117
123
|
inside = bounds.bottom > offset.y;
|
|
118
124
|
}
|
|
119
125
|
return inside;
|
|
@@ -151,7 +157,7 @@ function deepExtend(destination, ...sources) {
|
|
|
151
157
|
const sourceDict = source, value = sourceDict[key], destDict = destination;
|
|
152
158
|
destDict[key] =
|
|
153
159
|
(0, TypeUtils_js_1.isObject)(value) && Array.isArray(value)
|
|
154
|
-
? value.map(
|
|
160
|
+
? value.map(v => deepExtend(destDict[key], v))
|
|
155
161
|
: deepExtend(destDict[key], value);
|
|
156
162
|
}
|
|
157
163
|
}
|
|
@@ -159,11 +165,11 @@ function deepExtend(destination, ...sources) {
|
|
|
159
165
|
}
|
|
160
166
|
exports.deepExtend = deepExtend;
|
|
161
167
|
function isDivModeEnabled(mode, divs) {
|
|
162
|
-
return !!findItemFromSingleOrMultiple(divs,
|
|
168
|
+
return !!findItemFromSingleOrMultiple(divs, t => t.enable && isInArray(mode, t.mode));
|
|
163
169
|
}
|
|
164
170
|
exports.isDivModeEnabled = isDivModeEnabled;
|
|
165
171
|
function divModeExecute(mode, divs, callback) {
|
|
166
|
-
executeOnSingleOrMultiple(divs,
|
|
172
|
+
executeOnSingleOrMultiple(divs, div => {
|
|
167
173
|
const divMode = div.mode, divEnabled = div.enable;
|
|
168
174
|
if (divEnabled && isInArray(mode, divMode)) {
|
|
169
175
|
singleDivModeExecute(div, callback);
|
|
@@ -173,7 +179,7 @@ function divModeExecute(mode, divs, callback) {
|
|
|
173
179
|
exports.divModeExecute = divModeExecute;
|
|
174
180
|
function singleDivModeExecute(div, callback) {
|
|
175
181
|
const selectors = div.selectors;
|
|
176
|
-
executeOnSingleOrMultiple(selectors,
|
|
182
|
+
executeOnSingleOrMultiple(selectors, selector => {
|
|
177
183
|
callback(selector, div);
|
|
178
184
|
});
|
|
179
185
|
}
|
|
@@ -182,7 +188,7 @@ function divMode(divs, element) {
|
|
|
182
188
|
if (!element || !divs) {
|
|
183
189
|
return;
|
|
184
190
|
}
|
|
185
|
-
return findItemFromSingleOrMultiple(divs,
|
|
191
|
+
return findItemFromSingleOrMultiple(divs, div => {
|
|
186
192
|
return checkSelector(element, div.selectors);
|
|
187
193
|
});
|
|
188
194
|
}
|
|
@@ -299,35 +305,35 @@ function initParticleNumericAnimationValue(options, pxRatio) {
|
|
|
299
305
|
if (animationOptions.enable) {
|
|
300
306
|
res.decay = decayOffset - (0, NumberUtils_js_1.getRangeValue)(animationOptions.decay);
|
|
301
307
|
switch (animationOptions.mode) {
|
|
302
|
-
case
|
|
303
|
-
res.status =
|
|
308
|
+
case AnimationMode_js_1.AnimationMode.increase:
|
|
309
|
+
res.status = AnimationStatus_js_1.AnimationStatus.increasing;
|
|
304
310
|
break;
|
|
305
|
-
case
|
|
306
|
-
res.status =
|
|
311
|
+
case AnimationMode_js_1.AnimationMode.decrease:
|
|
312
|
+
res.status = AnimationStatus_js_1.AnimationStatus.decreasing;
|
|
307
313
|
break;
|
|
308
|
-
case
|
|
309
|
-
res.status = (0, NumberUtils_js_1.getRandom)() >= Constants_js_1.halfRandom ?
|
|
314
|
+
case AnimationMode_js_1.AnimationMode.random:
|
|
315
|
+
res.status = (0, NumberUtils_js_1.getRandom)() >= Constants_js_1.halfRandom ? AnimationStatus_js_1.AnimationStatus.increasing : AnimationStatus_js_1.AnimationStatus.decreasing;
|
|
310
316
|
break;
|
|
311
317
|
}
|
|
312
|
-
const autoStatus = animationOptions.mode ===
|
|
318
|
+
const autoStatus = animationOptions.mode === AnimationMode_js_1.AnimationMode.auto;
|
|
313
319
|
switch (animationOptions.startValue) {
|
|
314
|
-
case
|
|
320
|
+
case StartValueType_js_1.StartValueType.min:
|
|
315
321
|
res.value = res.min;
|
|
316
322
|
if (autoStatus) {
|
|
317
|
-
res.status =
|
|
323
|
+
res.status = AnimationStatus_js_1.AnimationStatus.increasing;
|
|
318
324
|
}
|
|
319
325
|
break;
|
|
320
|
-
case
|
|
326
|
+
case StartValueType_js_1.StartValueType.max:
|
|
321
327
|
res.value = res.max;
|
|
322
328
|
if (autoStatus) {
|
|
323
|
-
res.status =
|
|
329
|
+
res.status = AnimationStatus_js_1.AnimationStatus.decreasing;
|
|
324
330
|
}
|
|
325
331
|
break;
|
|
326
|
-
case
|
|
332
|
+
case StartValueType_js_1.StartValueType.random:
|
|
327
333
|
default:
|
|
328
334
|
res.value = (0, NumberUtils_js_1.randomInRange)(res);
|
|
329
335
|
if (autoStatus) {
|
|
330
|
-
res.status = (0, NumberUtils_js_1.getRandom)() >= Constants_js_1.halfRandom ?
|
|
336
|
+
res.status = (0, NumberUtils_js_1.getRandom)() >= Constants_js_1.halfRandom ? AnimationStatus_js_1.AnimationStatus.increasing : AnimationStatus_js_1.AnimationStatus.decreasing;
|
|
331
337
|
}
|
|
332
338
|
break;
|
|
333
339
|
}
|
|
@@ -337,7 +343,7 @@ function initParticleNumericAnimationValue(options, pxRatio) {
|
|
|
337
343
|
}
|
|
338
344
|
exports.initParticleNumericAnimationValue = initParticleNumericAnimationValue;
|
|
339
345
|
function getPositionOrSize(positionOrSize, canvasSize) {
|
|
340
|
-
const isPercent = positionOrSize.mode ===
|
|
346
|
+
const isPercent = positionOrSize.mode === PixelMode_js_1.PixelMode.percent;
|
|
341
347
|
if (!isPercent) {
|
|
342
348
|
const { mode: _, ...rest } = positionOrSize;
|
|
343
349
|
return rest;
|
|
@@ -366,12 +372,12 @@ function getSize(size, canvasSize) {
|
|
|
366
372
|
exports.getSize = getSize;
|
|
367
373
|
function checkDestroy(particle, destroyType, value, minValue, maxValue) {
|
|
368
374
|
switch (destroyType) {
|
|
369
|
-
case
|
|
375
|
+
case DestroyType_js_1.DestroyType.max:
|
|
370
376
|
if (value >= maxValue) {
|
|
371
377
|
particle.destroy();
|
|
372
378
|
}
|
|
373
379
|
break;
|
|
374
|
-
case
|
|
380
|
+
case DestroyType_js_1.DestroyType.min:
|
|
375
381
|
if (value <= minValue) {
|
|
376
382
|
particle.destroy();
|
|
377
383
|
}
|
|
@@ -397,10 +403,10 @@ function updateAnimation(particle, data, changeDirection, destroyType, delta) {
|
|
|
397
403
|
return;
|
|
398
404
|
}
|
|
399
405
|
switch (data.status) {
|
|
400
|
-
case
|
|
406
|
+
case AnimationStatus_js_1.AnimationStatus.increasing:
|
|
401
407
|
if (data.value >= maxValue) {
|
|
402
408
|
if (changeDirection) {
|
|
403
|
-
data.status =
|
|
409
|
+
data.status = AnimationStatus_js_1.AnimationStatus.decreasing;
|
|
404
410
|
}
|
|
405
411
|
else {
|
|
406
412
|
data.value -= maxValue;
|
|
@@ -414,10 +420,10 @@ function updateAnimation(particle, data, changeDirection, destroyType, delta) {
|
|
|
414
420
|
data.value += velocity;
|
|
415
421
|
}
|
|
416
422
|
break;
|
|
417
|
-
case
|
|
423
|
+
case AnimationStatus_js_1.AnimationStatus.decreasing:
|
|
418
424
|
if (data.value <= minValue) {
|
|
419
425
|
if (changeDirection) {
|
|
420
|
-
data.status =
|
|
426
|
+
data.status = AnimationStatus_js_1.AnimationStatus.increasing;
|
|
421
427
|
}
|
|
422
428
|
else {
|
|
423
429
|
data.value += maxValue;
|
package/esm/Core/Canvas.js
CHANGED
|
@@ -31,7 +31,7 @@ function setStyle(canvas, style, important = false) {
|
|
|
31
31
|
export class Canvas {
|
|
32
32
|
constructor(container) {
|
|
33
33
|
this.container = container;
|
|
34
|
-
this._applyPostDrawUpdaters =
|
|
34
|
+
this._applyPostDrawUpdaters = particle => {
|
|
35
35
|
for (const updater of this._postDrawUpdaters) {
|
|
36
36
|
updater.afterDraw?.(particle);
|
|
37
37
|
}
|
|
@@ -61,7 +61,7 @@ export class Canvas {
|
|
|
61
61
|
plugin.resize?.();
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
|
-
this._getPluginParticleColors =
|
|
64
|
+
this._getPluginParticleColors = particle => {
|
|
65
65
|
let fColor, sColor;
|
|
66
66
|
for (const plugin of this._colorPlugins) {
|
|
67
67
|
if (!fColor && plugin.particleFillColor) {
|
|
@@ -101,7 +101,7 @@ export class Canvas {
|
|
|
101
101
|
};
|
|
102
102
|
resolve();
|
|
103
103
|
});
|
|
104
|
-
img.addEventListener("error",
|
|
104
|
+
img.addEventListener("error", evt => {
|
|
105
105
|
reject(evt.error);
|
|
106
106
|
});
|
|
107
107
|
img.src = cover.image;
|
|
@@ -162,28 +162,33 @@ export class Canvas {
|
|
|
162
162
|
};
|
|
163
163
|
resolve();
|
|
164
164
|
});
|
|
165
|
-
img.addEventListener("error",
|
|
165
|
+
img.addEventListener("error", evt => {
|
|
166
166
|
reject(evt.error);
|
|
167
167
|
});
|
|
168
168
|
img.src = trailFill.image;
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
};
|
|
172
|
-
this._paintBase =
|
|
173
|
-
this.draw(
|
|
172
|
+
this._paintBase = baseColor => {
|
|
173
|
+
this.draw(ctx => paintBase(ctx, this.size, baseColor));
|
|
174
174
|
};
|
|
175
175
|
this._paintImage = (image, opacity) => {
|
|
176
|
-
this.draw(
|
|
176
|
+
this.draw(ctx => paintImage(ctx, this.size, image, opacity));
|
|
177
177
|
};
|
|
178
178
|
this._repairStyle = () => {
|
|
179
179
|
const element = this.element;
|
|
180
180
|
if (!element) {
|
|
181
181
|
return;
|
|
182
182
|
}
|
|
183
|
-
this._safeMutationObserver(
|
|
183
|
+
this._safeMutationObserver(observer => observer.disconnect());
|
|
184
184
|
this._initStyle();
|
|
185
185
|
this.initBackground();
|
|
186
|
-
this._safeMutationObserver(
|
|
186
|
+
this._safeMutationObserver(observer => {
|
|
187
|
+
if (!element || !(element instanceof Node)) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
observer.observe(element, { attributes: true });
|
|
191
|
+
});
|
|
187
192
|
};
|
|
188
193
|
this._resetOriginalStyle = () => {
|
|
189
194
|
const element = this.element, originalStyle = this._originalStyle;
|
|
@@ -192,7 +197,7 @@ export class Canvas {
|
|
|
192
197
|
}
|
|
193
198
|
setStyle(element, originalStyle);
|
|
194
199
|
};
|
|
195
|
-
this._safeMutationObserver =
|
|
200
|
+
this._safeMutationObserver = callback => {
|
|
196
201
|
if (!this._mutationObserver) {
|
|
197
202
|
return;
|
|
198
203
|
}
|
|
@@ -241,7 +246,7 @@ export class Canvas {
|
|
|
241
246
|
}
|
|
242
247
|
}
|
|
243
248
|
else if (options.clear) {
|
|
244
|
-
this.draw(
|
|
249
|
+
this.draw(ctx => {
|
|
245
250
|
clear(ctx, this.size);
|
|
246
251
|
});
|
|
247
252
|
}
|
|
@@ -316,14 +321,14 @@ export class Canvas {
|
|
|
316
321
|
});
|
|
317
322
|
}
|
|
318
323
|
drawParticlePlugin(plugin, particle, delta) {
|
|
319
|
-
this.draw(
|
|
324
|
+
this.draw(ctx => drawParticlePlugin(ctx, plugin, particle, delta));
|
|
320
325
|
}
|
|
321
326
|
drawPlugin(plugin, delta) {
|
|
322
|
-
this.draw(
|
|
327
|
+
this.draw(ctx => drawPlugin(ctx, plugin, delta));
|
|
323
328
|
}
|
|
324
329
|
async init() {
|
|
325
|
-
this._safeMutationObserver(
|
|
326
|
-
this._mutationObserver = safeMutationObserver(
|
|
330
|
+
this._safeMutationObserver(obs => obs.disconnect());
|
|
331
|
+
this._mutationObserver = safeMutationObserver(records => {
|
|
327
332
|
for (const record of records) {
|
|
328
333
|
if (record.type === "attributes" && record.attributeName === "style") {
|
|
329
334
|
this._repairStyle();
|
|
@@ -340,8 +345,8 @@ export class Canvas {
|
|
|
340
345
|
getLogger().error(e);
|
|
341
346
|
}
|
|
342
347
|
this.initBackground();
|
|
343
|
-
this._safeMutationObserver(
|
|
344
|
-
if (!this.element) {
|
|
348
|
+
this._safeMutationObserver(obs => {
|
|
349
|
+
if (!this.element || !(this.element instanceof Node)) {
|
|
345
350
|
return;
|
|
346
351
|
}
|
|
347
352
|
obs.observe(this.element, { attributes: true });
|
|
@@ -408,8 +413,8 @@ export class Canvas {
|
|
|
408
413
|
this.size.height = canvas.offsetHeight;
|
|
409
414
|
this.size.width = canvas.offsetWidth;
|
|
410
415
|
this._context = this.element.getContext("2d");
|
|
411
|
-
this._safeMutationObserver(
|
|
412
|
-
if (!this.element) {
|
|
416
|
+
this._safeMutationObserver(obs => {
|
|
417
|
+
if (!this.element || !(this.element instanceof Node)) {
|
|
413
418
|
return;
|
|
414
419
|
}
|
|
415
420
|
obs.observe(this.element, { attributes: true });
|
|
@@ -419,7 +424,7 @@ export class Canvas {
|
|
|
419
424
|
}
|
|
420
425
|
paint() {
|
|
421
426
|
const options = this.container.actualOptions;
|
|
422
|
-
this.draw(
|
|
427
|
+
this.draw(ctx => {
|
|
423
428
|
if (options.backgroundMask.enable && options.backgroundMask.cover) {
|
|
424
429
|
clear(ctx, this.size);
|
|
425
430
|
if (this._coverImage) {
|
|
@@ -463,9 +468,9 @@ export class Canvas {
|
|
|
463
468
|
return true;
|
|
464
469
|
}
|
|
465
470
|
stop() {
|
|
466
|
-
this._safeMutationObserver(
|
|
471
|
+
this._safeMutationObserver(obs => obs.disconnect());
|
|
467
472
|
this._mutationObserver = undefined;
|
|
468
|
-
this.draw(
|
|
473
|
+
this.draw(ctx => clear(ctx, this.size));
|
|
469
474
|
}
|
|
470
475
|
async windowResize() {
|
|
471
476
|
if (!this.element || !this.resize()) {
|