@tsparticles/engine 3.6.0-beta.1 → 3.7.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 +6 -1
- package/browser/Core/Canvas.js +32 -21
- package/browser/Core/Container.js +1 -1
- package/browser/Core/Engine.js +17 -1
- package/browser/Core/Particle.js +1 -1
- package/browser/Options/Classes/AnimatableColor.js +2 -2
- package/browser/Options/Classes/AnimationOptions.js +3 -2
- package/browser/Options/Classes/Background/Background.js +2 -1
- package/browser/Options/Classes/BackgroundMask/BackgroundMask.js +2 -2
- package/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js +2 -1
- package/browser/Options/Classes/ColorAnimation.js +2 -1
- package/browser/Options/Classes/FullScreen/FullScreen.js +2 -1
- package/browser/Options/Classes/HslAnimation.js +2 -1
- package/browser/Options/Classes/Interactivity/Events/ClickEvent.js +2 -1
- package/browser/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
- package/browser/Options/Classes/Interactivity/Events/Events.js +2 -1
- package/browser/Options/Classes/Interactivity/Events/HoverEvent.js +2 -1
- package/browser/Options/Classes/Interactivity/Events/Parallax.js +2 -1
- package/browser/Options/Classes/Interactivity/Events/ResizeEvent.js +2 -1
- package/browser/Options/Classes/Interactivity/Interactivity.js +2 -1
- package/browser/Options/Classes/Interactivity/Modes/Modes.js +2 -1
- package/browser/Options/Classes/ManualParticle.js +2 -1
- package/browser/Options/Classes/Options.js +2 -2
- package/browser/Options/Classes/OptionsColor.js +5 -3
- package/browser/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -1
- package/browser/Options/Classes/Particles/Collisions/Collisions.js +2 -1
- package/browser/Options/Classes/Particles/Collisions/CollisionsAbsorb.js +2 -1
- package/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js +2 -1
- package/browser/Options/Classes/Particles/Effect/Effect.js +2 -1
- package/browser/Options/Classes/Particles/Move/Move.js +2 -2
- package/browser/Options/Classes/Particles/Move/MoveAngle.js +2 -1
- package/browser/Options/Classes/Particles/Move/MoveAttract.js +2 -1
- package/browser/Options/Classes/Particles/Move/MoveCenter.js +2 -1
- package/browser/Options/Classes/Particles/Move/MoveGravity.js +2 -1
- package/browser/Options/Classes/Particles/Move/MoveTrail.js +2 -1
- package/browser/Options/Classes/Particles/Move/MoveTrailFill.js +2 -1
- package/browser/Options/Classes/Particles/Move/OutModes.js +2 -1
- package/browser/Options/Classes/Particles/Move/Path/MovePath.js +2 -1
- package/browser/Options/Classes/Particles/Move/Spin.js +2 -1
- package/browser/Options/Classes/Particles/Number/ParticlesDensity.js +2 -1
- package/browser/Options/Classes/Particles/Number/ParticlesNumber.js +2 -1
- package/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
- package/browser/Options/Classes/Particles/Opacity/Opacity.js +2 -1
- package/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
- package/browser/Options/Classes/Particles/ParticlesOptions.js +2 -1
- package/browser/Options/Classes/Particles/Shadow.js +2 -1
- package/browser/Options/Classes/Particles/Shape/Shape.js +2 -1
- package/browser/Options/Classes/Particles/Size/Size.js +2 -1
- package/browser/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
- package/browser/Options/Classes/Particles/Stroke.js +2 -1
- package/browser/Options/Classes/Particles/ZIndex/ZIndex.js +2 -1
- package/browser/Options/Classes/Responsive.js +5 -4
- package/browser/Options/Classes/Theme/Theme.js +2 -1
- package/browser/Options/Classes/Theme/ThemeDefault.js +2 -1
- package/browser/Options/Classes/ValueWithRandom.js +4 -3
- package/browser/Types/EasingFunction.js +1 -0
- package/browser/Utils/ColorUtils.js +25 -45
- package/browser/Utils/NumberUtils.js +1 -10
- package/browser/Utils/TypeUtils.js +3 -0
- package/browser/Utils/Utils.js +6 -0
- package/browser/exports.js +0 -2
- package/browser/init.js +0 -6
- package/cjs/Core/Canvas.js +32 -21
- package/cjs/Core/Container.js +1 -1
- package/cjs/Core/Engine.js +17 -1
- package/cjs/Core/Particle.js +1 -1
- package/cjs/Options/Classes/AnimatableColor.js +1 -1
- package/cjs/Options/Classes/AnimationOptions.js +3 -2
- package/cjs/Options/Classes/Background/Background.js +2 -1
- package/cjs/Options/Classes/BackgroundMask/BackgroundMask.js +2 -2
- package/cjs/Options/Classes/BackgroundMask/BackgroundMaskCover.js +2 -1
- package/cjs/Options/Classes/ColorAnimation.js +2 -1
- package/cjs/Options/Classes/FullScreen/FullScreen.js +2 -1
- package/cjs/Options/Classes/HslAnimation.js +2 -1
- package/cjs/Options/Classes/Interactivity/Events/ClickEvent.js +2 -1
- package/cjs/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
- package/cjs/Options/Classes/Interactivity/Events/Events.js +2 -1
- package/cjs/Options/Classes/Interactivity/Events/HoverEvent.js +2 -1
- package/cjs/Options/Classes/Interactivity/Events/Parallax.js +2 -1
- package/cjs/Options/Classes/Interactivity/Events/ResizeEvent.js +2 -1
- package/cjs/Options/Classes/Interactivity/Interactivity.js +2 -1
- package/cjs/Options/Classes/Interactivity/Modes/Modes.js +2 -1
- package/cjs/Options/Classes/ManualParticle.js +2 -1
- package/cjs/Options/Classes/Options.js +2 -2
- package/cjs/Options/Classes/OptionsColor.js +4 -2
- package/cjs/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -1
- package/cjs/Options/Classes/Particles/Collisions/Collisions.js +2 -1
- package/cjs/Options/Classes/Particles/Collisions/CollisionsAbsorb.js +2 -1
- package/cjs/Options/Classes/Particles/Collisions/CollisionsOverlap.js +2 -1
- package/cjs/Options/Classes/Particles/Effect/Effect.js +2 -1
- package/cjs/Options/Classes/Particles/Move/Move.js +1 -1
- package/cjs/Options/Classes/Particles/Move/MoveAngle.js +2 -1
- package/cjs/Options/Classes/Particles/Move/MoveAttract.js +2 -1
- package/cjs/Options/Classes/Particles/Move/MoveCenter.js +2 -1
- package/cjs/Options/Classes/Particles/Move/MoveGravity.js +2 -1
- package/cjs/Options/Classes/Particles/Move/MoveTrail.js +2 -1
- package/cjs/Options/Classes/Particles/Move/MoveTrailFill.js +2 -1
- package/cjs/Options/Classes/Particles/Move/OutModes.js +2 -1
- package/cjs/Options/Classes/Particles/Move/Path/MovePath.js +2 -1
- package/cjs/Options/Classes/Particles/Move/Spin.js +2 -1
- package/cjs/Options/Classes/Particles/Number/ParticlesDensity.js +2 -1
- package/cjs/Options/Classes/Particles/Number/ParticlesNumber.js +2 -1
- package/cjs/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
- package/cjs/Options/Classes/Particles/Opacity/Opacity.js +2 -1
- package/cjs/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
- package/cjs/Options/Classes/Particles/ParticlesOptions.js +2 -1
- package/cjs/Options/Classes/Particles/Shadow.js +2 -1
- package/cjs/Options/Classes/Particles/Shape/Shape.js +2 -1
- package/cjs/Options/Classes/Particles/Size/Size.js +2 -1
- package/cjs/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
- package/cjs/Options/Classes/Particles/Stroke.js +2 -1
- package/cjs/Options/Classes/Particles/ZIndex/ZIndex.js +2 -1
- package/cjs/Options/Classes/Responsive.js +5 -4
- package/cjs/Options/Classes/Theme/Theme.js +2 -1
- package/cjs/Options/Classes/Theme/ThemeDefault.js +2 -1
- package/cjs/Options/Classes/ValueWithRandom.js +4 -3
- package/cjs/Types/EasingFunction.js +2 -0
- package/cjs/Utils/ColorUtils.js +25 -46
- package/cjs/Utils/NumberUtils.js +1 -12
- package/cjs/Utils/TypeUtils.js +4 -0
- package/cjs/Utils/Utils.js +7 -0
- package/cjs/exports.js +0 -2
- package/cjs/init.js +0 -6
- package/esm/Core/Canvas.js +32 -21
- package/esm/Core/Container.js +1 -1
- package/esm/Core/Engine.js +17 -1
- package/esm/Core/Particle.js +1 -1
- package/esm/Options/Classes/AnimatableColor.js +2 -2
- package/esm/Options/Classes/AnimationOptions.js +3 -2
- package/esm/Options/Classes/Background/Background.js +2 -1
- package/esm/Options/Classes/BackgroundMask/BackgroundMask.js +2 -2
- package/esm/Options/Classes/BackgroundMask/BackgroundMaskCover.js +2 -1
- package/esm/Options/Classes/ColorAnimation.js +2 -1
- package/esm/Options/Classes/FullScreen/FullScreen.js +2 -1
- package/esm/Options/Classes/HslAnimation.js +2 -1
- package/esm/Options/Classes/Interactivity/Events/ClickEvent.js +2 -1
- package/esm/Options/Classes/Interactivity/Events/DivEvent.js +2 -1
- package/esm/Options/Classes/Interactivity/Events/Events.js +2 -1
- package/esm/Options/Classes/Interactivity/Events/HoverEvent.js +2 -1
- package/esm/Options/Classes/Interactivity/Events/Parallax.js +2 -1
- package/esm/Options/Classes/Interactivity/Events/ResizeEvent.js +2 -1
- package/esm/Options/Classes/Interactivity/Interactivity.js +2 -1
- package/esm/Options/Classes/Interactivity/Modes/Modes.js +2 -1
- package/esm/Options/Classes/ManualParticle.js +2 -1
- package/esm/Options/Classes/Options.js +2 -2
- package/esm/Options/Classes/OptionsColor.js +5 -3
- package/esm/Options/Classes/Particles/Bounce/ParticlesBounce.js +2 -1
- package/esm/Options/Classes/Particles/Collisions/Collisions.js +2 -1
- package/esm/Options/Classes/Particles/Collisions/CollisionsAbsorb.js +2 -1
- package/esm/Options/Classes/Particles/Collisions/CollisionsOverlap.js +2 -1
- package/esm/Options/Classes/Particles/Effect/Effect.js +2 -1
- package/esm/Options/Classes/Particles/Move/Move.js +2 -2
- package/esm/Options/Classes/Particles/Move/MoveAngle.js +2 -1
- package/esm/Options/Classes/Particles/Move/MoveAttract.js +2 -1
- package/esm/Options/Classes/Particles/Move/MoveCenter.js +2 -1
- package/esm/Options/Classes/Particles/Move/MoveGravity.js +2 -1
- package/esm/Options/Classes/Particles/Move/MoveTrail.js +2 -1
- package/esm/Options/Classes/Particles/Move/MoveTrailFill.js +2 -1
- package/esm/Options/Classes/Particles/Move/OutModes.js +2 -1
- package/esm/Options/Classes/Particles/Move/Path/MovePath.js +2 -1
- package/esm/Options/Classes/Particles/Move/Spin.js +2 -1
- package/esm/Options/Classes/Particles/Number/ParticlesDensity.js +2 -1
- package/esm/Options/Classes/Particles/Number/ParticlesNumber.js +2 -1
- package/esm/Options/Classes/Particles/Number/ParticlesNumberLimit.js +2 -1
- package/esm/Options/Classes/Particles/Opacity/Opacity.js +2 -1
- package/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js +2 -1
- package/esm/Options/Classes/Particles/ParticlesOptions.js +2 -1
- package/esm/Options/Classes/Particles/Shadow.js +2 -1
- package/esm/Options/Classes/Particles/Shape/Shape.js +2 -1
- package/esm/Options/Classes/Particles/Size/Size.js +2 -1
- package/esm/Options/Classes/Particles/Size/SizeAnimation.js +2 -1
- package/esm/Options/Classes/Particles/Stroke.js +2 -1
- package/esm/Options/Classes/Particles/ZIndex/ZIndex.js +2 -1
- package/esm/Options/Classes/Responsive.js +5 -4
- package/esm/Options/Classes/Theme/Theme.js +2 -1
- package/esm/Options/Classes/Theme/ThemeDefault.js +2 -1
- package/esm/Options/Classes/ValueWithRandom.js +4 -3
- package/esm/Types/EasingFunction.js +1 -0
- package/esm/Utils/ColorUtils.js +25 -45
- package/esm/Utils/NumberUtils.js +1 -10
- package/esm/Utils/TypeUtils.js +3 -0
- package/esm/Utils/Utils.js +6 -0
- package/esm/exports.js +0 -2
- package/esm/init.js +0 -6
- package/package.json +1 -1
- package/report.html +1 -1
- package/tsparticles.engine.js +62 -82
- package/tsparticles.engine.min.js +1 -1
- package/tsparticles.engine.min.js.LICENSE.txt +1 -1
- package/types/Core/Canvas.d.ts +4 -1
- package/types/Core/Engine.d.ts +9 -1
- package/types/Core/Interfaces/Colors.d.ts +28 -0
- package/types/Types/EasingFunction.d.ts +1 -0
- package/types/Utils/ColorUtils.d.ts +8 -9
- package/types/Utils/NumberUtils.d.ts +0 -5
- package/types/Utils/TypeUtils.d.ts +1 -0
- package/types/Utils/Utils.d.ts +2 -0
- package/types/exports.d.ts +0 -2
- package/umd/Core/Canvas.js +32 -21
- package/umd/Core/Container.js +1 -1
- package/umd/Core/Engine.js +17 -1
- package/umd/Core/Particle.js +1 -1
- package/umd/Options/Classes/AnimatableColor.js +1 -1
- package/umd/Options/Classes/AnimationOptions.js +4 -3
- package/umd/Options/Classes/Background/Background.js +3 -2
- package/umd/Options/Classes/BackgroundMask/BackgroundMask.js +3 -3
- package/umd/Options/Classes/BackgroundMask/BackgroundMaskCover.js +3 -2
- package/umd/Options/Classes/ColorAnimation.js +3 -2
- package/umd/Options/Classes/FullScreen/FullScreen.js +3 -2
- package/umd/Options/Classes/HslAnimation.js +3 -2
- package/umd/Options/Classes/Interactivity/Events/ClickEvent.js +3 -2
- package/umd/Options/Classes/Interactivity/Events/DivEvent.js +3 -2
- package/umd/Options/Classes/Interactivity/Events/Events.js +3 -2
- package/umd/Options/Classes/Interactivity/Events/HoverEvent.js +3 -2
- package/umd/Options/Classes/Interactivity/Events/Parallax.js +3 -2
- package/umd/Options/Classes/Interactivity/Events/ResizeEvent.js +3 -2
- package/umd/Options/Classes/Interactivity/Interactivity.js +3 -2
- package/umd/Options/Classes/Interactivity/Modes/Modes.js +3 -2
- package/umd/Options/Classes/ManualParticle.js +3 -2
- package/umd/Options/Classes/Options.js +3 -3
- package/umd/Options/Classes/OptionsColor.js +4 -2
- package/umd/Options/Classes/Particles/Bounce/ParticlesBounce.js +3 -2
- package/umd/Options/Classes/Particles/Collisions/Collisions.js +3 -2
- package/umd/Options/Classes/Particles/Collisions/CollisionsAbsorb.js +3 -2
- package/umd/Options/Classes/Particles/Collisions/CollisionsOverlap.js +3 -2
- package/umd/Options/Classes/Particles/Effect/Effect.js +3 -2
- package/umd/Options/Classes/Particles/Move/Move.js +1 -1
- package/umd/Options/Classes/Particles/Move/MoveAngle.js +3 -2
- package/umd/Options/Classes/Particles/Move/MoveAttract.js +3 -2
- package/umd/Options/Classes/Particles/Move/MoveCenter.js +3 -2
- package/umd/Options/Classes/Particles/Move/MoveGravity.js +3 -2
- package/umd/Options/Classes/Particles/Move/MoveTrail.js +3 -2
- package/umd/Options/Classes/Particles/Move/MoveTrailFill.js +3 -2
- package/umd/Options/Classes/Particles/Move/OutModes.js +3 -2
- package/umd/Options/Classes/Particles/Move/Path/MovePath.js +3 -2
- package/umd/Options/Classes/Particles/Move/Spin.js +3 -2
- package/umd/Options/Classes/Particles/Number/ParticlesDensity.js +3 -2
- package/umd/Options/Classes/Particles/Number/ParticlesNumber.js +3 -2
- package/umd/Options/Classes/Particles/Number/ParticlesNumberLimit.js +3 -2
- package/umd/Options/Classes/Particles/Opacity/Opacity.js +3 -2
- package/umd/Options/Classes/Particles/Opacity/OpacityAnimation.js +3 -2
- package/umd/Options/Classes/Particles/ParticlesOptions.js +3 -2
- package/umd/Options/Classes/Particles/Shadow.js +3 -2
- package/umd/Options/Classes/Particles/Shape/Shape.js +3 -2
- package/umd/Options/Classes/Particles/Size/Size.js +3 -2
- package/umd/Options/Classes/Particles/Size/SizeAnimation.js +3 -2
- package/umd/Options/Classes/Particles/Stroke.js +3 -2
- package/umd/Options/Classes/Particles/ZIndex/ZIndex.js +3 -2
- package/umd/Options/Classes/Responsive.js +6 -5
- package/umd/Options/Classes/Theme/Theme.js +3 -2
- package/umd/Options/Classes/Theme/ThemeDefault.js +3 -2
- package/umd/Options/Classes/ValueWithRandom.js +5 -4
- package/umd/Types/EasingFunction.js +12 -0
- package/umd/Utils/ColorUtils.js +25 -46
- package/umd/Utils/NumberUtils.js +1 -12
- package/umd/Utils/TypeUtils.js +4 -0
- package/umd/Utils/Utils.js +7 -0
- package/umd/exports.js +1 -3
- package/umd/init.js +1 -7
- package/browser/Utils/HslColorManager.js +0 -45
- package/browser/Utils/RgbColorManager.js +0 -44
- package/cjs/Utils/HslColorManager.js +0 -49
- package/cjs/Utils/RgbColorManager.js +0 -48
- package/esm/Utils/HslColorManager.js +0 -45
- package/esm/Utils/RgbColorManager.js +0 -44
- package/types/Utils/HslColorManager.d.ts +0 -10
- package/types/Utils/RgbColorManager.d.ts +0 -10
- package/umd/Utils/HslColorManager.js +0 -59
- package/umd/Utils/RgbColorManager.js +0 -58
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
1
2
|
import { setRangeValue } from "../../../../Utils/NumberUtils.js";
|
|
2
3
|
export class MoveGravity {
|
|
3
4
|
constructor() {
|
|
@@ -7,7 +8,7 @@ export class MoveGravity {
|
|
|
7
8
|
this.maxSpeed = 50;
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
|
-
if (
|
|
11
|
+
if (isNull(data)) {
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
14
|
if (data.acceleration !== undefined) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MoveTrailFill } from "./MoveTrailFill.js";
|
|
2
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
2
3
|
export class MoveTrail {
|
|
3
4
|
constructor() {
|
|
4
5
|
this.enable = false;
|
|
@@ -6,7 +7,7 @@ export class MoveTrail {
|
|
|
6
7
|
this.fill = new MoveTrailFill();
|
|
7
8
|
}
|
|
8
9
|
load(data) {
|
|
9
|
-
if (
|
|
10
|
+
if (isNull(data)) {
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
13
|
if (data.enable !== undefined) {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { OutMode } from "../../../../Enums/Modes/OutMode.js";
|
|
2
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
2
3
|
export class OutModes {
|
|
3
4
|
constructor() {
|
|
4
5
|
this.default = OutMode.out;
|
|
5
6
|
}
|
|
6
7
|
load(data) {
|
|
7
|
-
if (
|
|
8
|
+
if (isNull(data)) {
|
|
8
9
|
return;
|
|
9
10
|
}
|
|
10
11
|
if (data.default !== undefined) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ValueWithRandom } from "../../../ValueWithRandom.js";
|
|
2
2
|
import { deepExtend } from "../../../../../Utils/Utils.js";
|
|
3
|
+
import { isNull } from "../../../../../Utils/TypeUtils.js";
|
|
3
4
|
export class MovePath {
|
|
4
5
|
constructor() {
|
|
5
6
|
this.clamp = true;
|
|
@@ -8,7 +9,7 @@ export class MovePath {
|
|
|
8
9
|
this.options = {};
|
|
9
10
|
}
|
|
10
11
|
load(data) {
|
|
11
|
-
if (
|
|
12
|
+
if (isNull(data)) {
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
15
|
if (data.clamp !== undefined) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { deepExtend } from "../../../../Utils/Utils.js";
|
|
2
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
2
3
|
import { setRangeValue } from "../../../../Utils/NumberUtils.js";
|
|
3
4
|
export class Spin {
|
|
4
5
|
constructor() {
|
|
@@ -6,7 +7,7 @@ export class Spin {
|
|
|
6
7
|
this.enable = false;
|
|
7
8
|
}
|
|
8
9
|
load(data) {
|
|
9
|
-
if (
|
|
10
|
+
if (isNull(data)) {
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
13
|
if (data.acceleration !== undefined) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
1
2
|
export class ParticlesDensity {
|
|
2
3
|
constructor() {
|
|
3
4
|
this.enable = false;
|
|
@@ -5,7 +6,7 @@ export class ParticlesDensity {
|
|
|
5
6
|
this.height = 1080;
|
|
6
7
|
}
|
|
7
8
|
load(data) {
|
|
8
|
-
if (
|
|
9
|
+
if (isNull(data)) {
|
|
9
10
|
return;
|
|
10
11
|
}
|
|
11
12
|
if (data.enable !== undefined) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ParticlesDensity } from "./ParticlesDensity.js";
|
|
2
2
|
import { ParticlesNumberLimit } from "./ParticlesNumberLimit.js";
|
|
3
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
3
4
|
export class ParticlesNumber {
|
|
4
5
|
constructor() {
|
|
5
6
|
this.density = new ParticlesDensity();
|
|
@@ -7,7 +8,7 @@ export class ParticlesNumber {
|
|
|
7
8
|
this.value = 0;
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
|
-
if (
|
|
11
|
+
if (isNull(data)) {
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
14
|
this.density.load(data.density);
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { LimitMode } from "../../../../Enums/Modes/LimitMode.js";
|
|
2
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
2
3
|
export class ParticlesNumberLimit {
|
|
3
4
|
constructor() {
|
|
4
5
|
this.mode = LimitMode.delete;
|
|
5
6
|
this.value = 0;
|
|
6
7
|
}
|
|
7
8
|
load(data) {
|
|
8
|
-
if (
|
|
9
|
+
if (isNull(data)) {
|
|
9
10
|
return;
|
|
10
11
|
}
|
|
11
12
|
if (data.mode !== undefined) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OpacityAnimation } from "./OpacityAnimation.js";
|
|
2
2
|
import { RangedAnimationValueWithRandom } from "../../ValueWithRandom.js";
|
|
3
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
3
4
|
export class Opacity extends RangedAnimationValueWithRandom {
|
|
4
5
|
constructor() {
|
|
5
6
|
super();
|
|
@@ -7,7 +8,7 @@ export class Opacity extends RangedAnimationValueWithRandom {
|
|
|
7
8
|
this.value = 1;
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
|
-
if (
|
|
11
|
+
if (isNull(data)) {
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
14
|
super.load(data);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DestroyType } from "../../../../Enums/Types/DestroyType.js";
|
|
2
2
|
import { RangedAnimationOptions } from "../../AnimationOptions.js";
|
|
3
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
3
4
|
export class OpacityAnimation extends RangedAnimationOptions {
|
|
4
5
|
constructor() {
|
|
5
6
|
super();
|
|
@@ -8,7 +9,7 @@ export class OpacityAnimation extends RangedAnimationOptions {
|
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
11
|
super.load(data);
|
|
11
|
-
if (
|
|
12
|
+
if (isNull(data)) {
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
15
|
if (data.destroy !== undefined) {
|
|
@@ -11,6 +11,7 @@ import { Shape } from "./Shape/Shape.js";
|
|
|
11
11
|
import { Size } from "./Size/Size.js";
|
|
12
12
|
import { Stroke } from "./Stroke.js";
|
|
13
13
|
import { ZIndex } from "./ZIndex/ZIndex.js";
|
|
14
|
+
import { isNull } from "../../../Utils/TypeUtils.js";
|
|
14
15
|
export class ParticlesOptions {
|
|
15
16
|
constructor(engine, container) {
|
|
16
17
|
this._engine = engine;
|
|
@@ -32,7 +33,7 @@ export class ParticlesOptions {
|
|
|
32
33
|
this.zIndex = new ZIndex();
|
|
33
34
|
}
|
|
34
35
|
load(data) {
|
|
35
|
-
if (
|
|
36
|
+
if (isNull(data)) {
|
|
36
37
|
return;
|
|
37
38
|
}
|
|
38
39
|
if (data.groups !== undefined) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { OptionsColor } from "../OptionsColor.js";
|
|
2
|
+
import { isNull } from "../../../Utils/TypeUtils.js";
|
|
2
3
|
export class Shadow {
|
|
3
4
|
constructor() {
|
|
4
5
|
this.blur = 0;
|
|
@@ -11,7 +12,7 @@ export class Shadow {
|
|
|
11
12
|
this.color.value = "#000";
|
|
12
13
|
}
|
|
13
14
|
load(data) {
|
|
14
|
-
if (
|
|
15
|
+
if (isNull(data)) {
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
18
|
if (data.blur !== undefined) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { deepExtend } from "../../../../Utils/Utils.js";
|
|
2
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
2
3
|
export class Shape {
|
|
3
4
|
constructor() {
|
|
4
5
|
this.close = true;
|
|
@@ -7,7 +8,7 @@ export class Shape {
|
|
|
7
8
|
this.type = "circle";
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
|
-
if (
|
|
11
|
+
if (isNull(data)) {
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
14
|
const options = data.options;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RangedAnimationValueWithRandom } from "../../ValueWithRandom.js";
|
|
2
2
|
import { SizeAnimation } from "./SizeAnimation.js";
|
|
3
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
3
4
|
export class Size extends RangedAnimationValueWithRandom {
|
|
4
5
|
constructor() {
|
|
5
6
|
super();
|
|
@@ -8,7 +9,7 @@ export class Size extends RangedAnimationValueWithRandom {
|
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
11
|
super.load(data);
|
|
11
|
-
if (
|
|
12
|
+
if (isNull(data)) {
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
15
|
const animation = data.animation;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DestroyType } from "../../../../Enums/Types/DestroyType.js";
|
|
2
2
|
import { RangedAnimationOptions } from "../../AnimationOptions.js";
|
|
3
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
3
4
|
export class SizeAnimation extends RangedAnimationOptions {
|
|
4
5
|
constructor() {
|
|
5
6
|
super();
|
|
@@ -8,7 +9,7 @@ export class SizeAnimation extends RangedAnimationOptions {
|
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
11
|
super.load(data);
|
|
11
|
-
if (
|
|
12
|
+
if (isNull(data)) {
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
15
|
if (data.destroy !== undefined) {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { AnimatableColor } from "../AnimatableColor.js";
|
|
2
|
+
import { isNull } from "../../../Utils/TypeUtils.js";
|
|
2
3
|
import { setRangeValue } from "../../../Utils/NumberUtils.js";
|
|
3
4
|
export class Stroke {
|
|
4
5
|
constructor() {
|
|
5
6
|
this.width = 0;
|
|
6
7
|
}
|
|
7
8
|
load(data) {
|
|
8
|
-
if (
|
|
9
|
+
if (isNull(data)) {
|
|
9
10
|
return;
|
|
10
11
|
}
|
|
11
12
|
if (data.color !== undefined) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ValueWithRandom } from "../../ValueWithRandom.js";
|
|
2
|
+
import { isNull } from "../../../../Utils/TypeUtils.js";
|
|
2
3
|
export class ZIndex extends ValueWithRandom {
|
|
3
4
|
constructor() {
|
|
4
5
|
super();
|
|
@@ -8,7 +9,7 @@ export class ZIndex extends ValueWithRandom {
|
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
11
|
super.load(data);
|
|
11
|
-
if (
|
|
12
|
+
if (isNull(data)) {
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
15
|
if (data.opacityRate !== undefined) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ResponsiveMode } from "../../Enums/Modes/ResponsiveMode.js";
|
|
2
2
|
import { deepExtend } from "../../Utils/Utils.js";
|
|
3
|
+
import { isNull } from "../../Utils/TypeUtils.js";
|
|
3
4
|
export class Responsive {
|
|
4
5
|
constructor() {
|
|
5
6
|
this.maxWidth = Infinity;
|
|
@@ -7,13 +8,13 @@ export class Responsive {
|
|
|
7
8
|
this.mode = ResponsiveMode.canvas;
|
|
8
9
|
}
|
|
9
10
|
load(data) {
|
|
10
|
-
if (
|
|
11
|
+
if (isNull(data)) {
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
|
-
if (data.maxWidth
|
|
14
|
+
if (!isNull(data.maxWidth)) {
|
|
14
15
|
this.maxWidth = data.maxWidth;
|
|
15
16
|
}
|
|
16
|
-
if (data.mode
|
|
17
|
+
if (!isNull(data.mode)) {
|
|
17
18
|
if (data.mode === ResponsiveMode.screen) {
|
|
18
19
|
this.mode = ResponsiveMode.screen;
|
|
19
20
|
}
|
|
@@ -21,7 +22,7 @@ export class Responsive {
|
|
|
21
22
|
this.mode = ResponsiveMode.canvas;
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
|
-
if (data.options
|
|
25
|
+
if (!isNull(data.options)) {
|
|
25
26
|
this.options = deepExtend({}, data.options);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ThemeDefault } from "./ThemeDefault.js";
|
|
2
2
|
import { deepExtend } from "../../../Utils/Utils.js";
|
|
3
|
+
import { isNull } from "../../../Utils/TypeUtils.js";
|
|
3
4
|
export class Theme {
|
|
4
5
|
constructor() {
|
|
5
6
|
this.name = "";
|
|
6
7
|
this.default = new ThemeDefault();
|
|
7
8
|
}
|
|
8
9
|
load(data) {
|
|
9
|
-
if (
|
|
10
|
+
if (isNull(data)) {
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
13
|
if (data.name !== undefined) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ThemeMode } from "../../../Enums/Modes/ThemeMode.js";
|
|
2
|
+
import { isNull } from "../../../Utils/TypeUtils.js";
|
|
2
3
|
export class ThemeDefault {
|
|
3
4
|
constructor() {
|
|
4
5
|
this.auto = false;
|
|
@@ -6,7 +7,7 @@ export class ThemeDefault {
|
|
|
6
7
|
this.value = false;
|
|
7
8
|
}
|
|
8
9
|
load(data) {
|
|
9
|
-
if (
|
|
10
|
+
if (isNull(data)) {
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
13
|
if (data.auto !== undefined) {
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { AnimationOptions, RangedAnimationOptions } from "./AnimationOptions.js";
|
|
2
|
+
import { isNull } from "../../Utils/TypeUtils.js";
|
|
2
3
|
import { setRangeValue } from "../../Utils/NumberUtils.js";
|
|
3
4
|
export class ValueWithRandom {
|
|
4
5
|
constructor() {
|
|
5
6
|
this.value = 0;
|
|
6
7
|
}
|
|
7
8
|
load(data) {
|
|
8
|
-
if (
|
|
9
|
+
if (isNull(data)) {
|
|
9
10
|
return;
|
|
10
11
|
}
|
|
11
|
-
if (data.value
|
|
12
|
+
if (!isNull(data.value)) {
|
|
12
13
|
this.value = setRangeValue(data.value);
|
|
13
14
|
}
|
|
14
15
|
}
|
|
@@ -20,7 +21,7 @@ export class AnimationValueWithRandom extends ValueWithRandom {
|
|
|
20
21
|
}
|
|
21
22
|
load(data) {
|
|
22
23
|
super.load(data);
|
|
23
|
-
if (
|
|
24
|
+
if (isNull(data)) {
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
26
27
|
const animation = data.animation;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -3,83 +3,63 @@ import { isArray, isString } from "./TypeUtils.js";
|
|
|
3
3
|
import { millisecondsToSeconds, percentDenominator } from "../Core/Utils/Constants.js";
|
|
4
4
|
import { AnimationStatus } from "../Enums/AnimationStatus.js";
|
|
5
5
|
import { itemFromArray } from "./Utils.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
})(RgbIndexes || (RgbIndexes = {}));
|
|
13
|
-
const randomColorValue = "random", midColorValue = "mid", colorManagers = new Map();
|
|
14
|
-
export function addColorManager(manager) {
|
|
15
|
-
colorManagers.set(manager.key, manager);
|
|
16
|
-
}
|
|
17
|
-
function stringToRgba(input) {
|
|
18
|
-
for (const manager of colorManagers.values()) {
|
|
6
|
+
const randomColorValue = "random", midColorValue = "mid";
|
|
7
|
+
function stringToRgba(engine, input) {
|
|
8
|
+
if (!input) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
for (const manager of engine.colorManagers.values()) {
|
|
19
12
|
if (input.startsWith(manager.stringPrefix)) {
|
|
20
13
|
return manager.parseString(input);
|
|
21
14
|
}
|
|
22
15
|
}
|
|
23
|
-
const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i, hexFixed = input.replace(shorthandRegex, (_, r, g, b, a) => {
|
|
24
|
-
return r + r + g + g + b + b + (a !== undefined ? a + a : "");
|
|
25
|
-
}), 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;
|
|
26
|
-
return result
|
|
27
|
-
? {
|
|
28
|
-
a: result[RgbIndexes.a] !== undefined
|
|
29
|
-
? parseInt(result[RgbIndexes.a], radix) / alphaFactor
|
|
30
|
-
: defaultAlpha,
|
|
31
|
-
b: parseInt(result[RgbIndexes.b], radix),
|
|
32
|
-
g: parseInt(result[RgbIndexes.g], radix),
|
|
33
|
-
r: parseInt(result[RgbIndexes.r], radix),
|
|
34
|
-
}
|
|
35
|
-
: undefined;
|
|
36
16
|
}
|
|
37
|
-
export function rangeColorToRgb(input, index, useIndex = true) {
|
|
17
|
+
export function rangeColorToRgb(engine, input, index, useIndex = true) {
|
|
38
18
|
if (!input) {
|
|
39
19
|
return;
|
|
40
20
|
}
|
|
41
21
|
const color = isString(input) ? { value: input } : input;
|
|
42
22
|
if (isString(color.value)) {
|
|
43
|
-
return colorToRgb(color.value, index, useIndex);
|
|
23
|
+
return colorToRgb(engine, color.value, index, useIndex);
|
|
44
24
|
}
|
|
45
25
|
if (isArray(color.value)) {
|
|
46
|
-
return rangeColorToRgb({
|
|
26
|
+
return rangeColorToRgb(engine, {
|
|
47
27
|
value: itemFromArray(color.value, index, useIndex),
|
|
48
28
|
});
|
|
49
29
|
}
|
|
50
|
-
for (const manager of colorManagers.values()) {
|
|
30
|
+
for (const manager of engine.colorManagers.values()) {
|
|
51
31
|
const res = manager.handleRangeColor(color);
|
|
52
32
|
if (res) {
|
|
53
33
|
return res;
|
|
54
34
|
}
|
|
55
35
|
}
|
|
56
36
|
}
|
|
57
|
-
export function colorToRgb(input, index, useIndex = true) {
|
|
37
|
+
export function colorToRgb(engine, input, index, useIndex = true) {
|
|
58
38
|
if (!input) {
|
|
59
39
|
return;
|
|
60
40
|
}
|
|
61
41
|
const color = isString(input) ? { value: input } : input;
|
|
62
42
|
if (isString(color.value)) {
|
|
63
|
-
return color.value === randomColorValue ? getRandomRgbColor() : stringToRgb(color.value);
|
|
43
|
+
return color.value === randomColorValue ? getRandomRgbColor() : stringToRgb(engine, color.value);
|
|
64
44
|
}
|
|
65
45
|
if (isArray(color.value)) {
|
|
66
|
-
return colorToRgb({
|
|
46
|
+
return colorToRgb(engine, {
|
|
67
47
|
value: itemFromArray(color.value, index, useIndex),
|
|
68
48
|
});
|
|
69
49
|
}
|
|
70
|
-
for (const manager of colorManagers.values()) {
|
|
50
|
+
for (const manager of engine.colorManagers.values()) {
|
|
71
51
|
const res = manager.handleColor(color);
|
|
72
52
|
if (res) {
|
|
73
53
|
return res;
|
|
74
54
|
}
|
|
75
55
|
}
|
|
76
56
|
}
|
|
77
|
-
export function colorToHsl(color, index, useIndex = true) {
|
|
78
|
-
const rgb = colorToRgb(color, index, useIndex);
|
|
57
|
+
export function colorToHsl(engine, color, index, useIndex = true) {
|
|
58
|
+
const rgb = colorToRgb(engine, color, index, useIndex);
|
|
79
59
|
return rgb ? rgbToHsl(rgb) : undefined;
|
|
80
60
|
}
|
|
81
|
-
export function rangeColorToHsl(color, index, useIndex = true) {
|
|
82
|
-
const rgb = rangeColorToRgb(color, index, useIndex);
|
|
61
|
+
export function rangeColorToHsl(engine, color, index, useIndex = true) {
|
|
62
|
+
const rgb = rangeColorToRgb(engine, color, index, useIndex);
|
|
83
63
|
return rgb ? rgbToHsl(rgb) : undefined;
|
|
84
64
|
}
|
|
85
65
|
export function rgbToHsl(color) {
|
|
@@ -106,11 +86,11 @@ export function rgbToHsl(color) {
|
|
|
106
86
|
}
|
|
107
87
|
return res;
|
|
108
88
|
}
|
|
109
|
-
export function stringToAlpha(input) {
|
|
110
|
-
return stringToRgba(input)?.a;
|
|
89
|
+
export function stringToAlpha(engine, input) {
|
|
90
|
+
return stringToRgba(engine, input)?.a;
|
|
111
91
|
}
|
|
112
|
-
export function stringToRgb(input) {
|
|
113
|
-
return stringToRgba(input);
|
|
92
|
+
export function stringToRgb(engine, input) {
|
|
93
|
+
return stringToRgba(engine, input);
|
|
114
94
|
}
|
|
115
95
|
export function hslToRgb(hsl) {
|
|
116
96
|
const hMax = 360, sMax = 100, lMax = 100, sMin = 0, lMin = 0, h = ((hsl.h % hMax) + hMax) % hMax, s = Math.max(sMin, Math.min(sMax, hsl.s)), l = Math.max(lMin, Math.min(lMax, hsl.l)), hNormalized = h / hMax, sNormalized = s / sMax, lNormalized = l / lMax, rgbFactor = 255, triple = 3;
|
|
@@ -201,11 +181,11 @@ export function getLinkColor(p1, p2, linkColor) {
|
|
|
201
181
|
return linkColor;
|
|
202
182
|
}
|
|
203
183
|
}
|
|
204
|
-
export function getLinkRandomColor(optColor, blink, consent) {
|
|
184
|
+
export function getLinkRandomColor(engine, optColor, blink, consent) {
|
|
205
185
|
const color = isString(optColor) ? optColor : optColor.value;
|
|
206
186
|
if (color === randomColorValue) {
|
|
207
187
|
if (consent) {
|
|
208
|
-
return rangeColorToRgb({
|
|
188
|
+
return rangeColorToRgb(engine, {
|
|
209
189
|
value: color,
|
|
210
190
|
});
|
|
211
191
|
}
|
|
@@ -218,7 +198,7 @@ export function getLinkRandomColor(optColor, blink, consent) {
|
|
|
218
198
|
return midColorValue;
|
|
219
199
|
}
|
|
220
200
|
else {
|
|
221
|
-
return rangeColorToRgb({
|
|
201
|
+
return rangeColorToRgb(engine, {
|
|
222
202
|
value: color,
|
|
223
203
|
});
|
|
224
204
|
}
|
|
@@ -6,16 +6,7 @@ let _random = Math.random;
|
|
|
6
6
|
const _animationLoop = {
|
|
7
7
|
nextFrame: (cb) => requestAnimationFrame(cb),
|
|
8
8
|
cancel: (idx) => cancelAnimationFrame(idx),
|
|
9
|
-
},
|
|
10
|
-
export function addEasing(name, easing) {
|
|
11
|
-
if (easingFunctions.get(name)) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
easingFunctions.set(name, easing);
|
|
15
|
-
}
|
|
16
|
-
export function getEasing(name) {
|
|
17
|
-
return easingFunctions.get(name) ?? ((value) => value);
|
|
18
|
-
}
|
|
9
|
+
}, double = 2, doublePI = Math.PI * double;
|
|
19
10
|
export function setRandom(rnd = Math.random) {
|
|
20
11
|
_random = rnd;
|
|
21
12
|
}
|
package/browser/Utils/Utils.js
CHANGED
|
@@ -414,3 +414,9 @@ export function updateAnimation(particle, data, changeDirection, destroyType, de
|
|
|
414
414
|
data.value = clamp(data.value, minValue, maxValue);
|
|
415
415
|
}
|
|
416
416
|
}
|
|
417
|
+
export function assertValidVersion(engine, pluginVersion) {
|
|
418
|
+
if (engine.version === pluginVersion) {
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${engine.version}. Plugins version: ${pluginVersion}`);
|
|
422
|
+
}
|
package/browser/exports.js
CHANGED
|
@@ -78,9 +78,7 @@ export * from "./Options/Classes/Theme/ThemeDefault.js";
|
|
|
78
78
|
export * from "./Options/Classes/ValueWithRandom.js";
|
|
79
79
|
export * from "./Utils/CanvasUtils.js";
|
|
80
80
|
export * from "./Utils/ColorUtils.js";
|
|
81
|
-
export * from "./Utils/HslColorManager.js";
|
|
82
81
|
export * from "./Utils/NumberUtils.js";
|
|
83
82
|
export * from "./Utils/OptionsUtils.js";
|
|
84
|
-
export * from "./Utils/RgbColorManager.js";
|
|
85
83
|
export * from "./Utils/Utils.js";
|
|
86
84
|
export * from "./Utils/TypeUtils.js";
|
package/browser/init.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { Engine } from "./Core/Engine.js";
|
|
2
|
-
import { HslColorManager } from "./Utils/HslColorManager.js";
|
|
3
|
-
import { RgbColorManager } from "./Utils/RgbColorManager.js";
|
|
4
|
-
import { addColorManager } from "./Utils/ColorUtils.js";
|
|
5
2
|
export function init() {
|
|
6
|
-
const rgbColorManager = new RgbColorManager(), hslColorManager = new HslColorManager();
|
|
7
|
-
addColorManager(rgbColorManager);
|
|
8
|
-
addColorManager(hslColorManager);
|
|
9
3
|
const engine = new Engine();
|
|
10
4
|
engine.init();
|
|
11
5
|
return engine;
|