@tsparticles/engine 4.0.0-beta.12 → 4.0.0-beta.15
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/browser/Core/CanvasManager.js +1 -1
- package/browser/Core/Engine.js +13 -4
- package/browser/Core/Particle.js +2 -0
- package/browser/Options/Classes/Particles/Fill.js +0 -2
- package/browser/Options/Classes/Particles/Paint.js +5 -0
- package/browser/Options/Classes/Particles/ParticlesOptions.js +20 -5
- package/browser/Utils/LogUtils.js +32 -15
- package/browser/Utils/Utils.js +1 -0
- package/browser/browser.js +5 -0
- package/browser/index.js +0 -1
- package/cjs/Core/CanvasManager.js +1 -1
- package/cjs/Core/Engine.js +13 -4
- package/cjs/Core/Particle.js +2 -0
- package/cjs/Options/Classes/Particles/Fill.js +0 -2
- package/cjs/Options/Classes/Particles/Paint.js +5 -0
- package/cjs/Options/Classes/Particles/ParticlesOptions.js +20 -5
- package/cjs/Utils/LogUtils.js +32 -15
- package/cjs/Utils/Utils.js +1 -0
- package/cjs/browser.js +5 -0
- package/cjs/index.js +0 -1
- package/esm/Core/CanvasManager.js +1 -1
- package/esm/Core/Engine.js +13 -4
- package/esm/Core/Particle.js +2 -0
- package/esm/Options/Classes/Particles/Fill.js +0 -2
- package/esm/Options/Classes/Particles/Paint.js +5 -0
- package/esm/Options/Classes/Particles/ParticlesOptions.js +20 -5
- package/esm/Utils/LogUtils.js +32 -15
- package/esm/Utils/Utils.js +1 -0
- package/esm/browser.js +5 -0
- package/esm/index.js +0 -1
- package/package.json +8 -1
- package/report.html +4949 -94
- package/tsparticles.engine.js +5174 -949
- package/tsparticles.engine.min.js +1 -2
- package/types/Core/Particle.d.ts +1 -0
- package/types/Options/Classes/Particles/Fill.d.ts +1 -1
- package/types/Options/Classes/Particles/Paint.d.ts +2 -0
- package/types/Options/Interfaces/Particles/IPaint.d.ts +4 -0
- package/types/Utils/LogUtils.d.ts +1 -1
- package/types/browser.d.ts +1 -0
- package/types/{bundle.d.ts → index.lazy.d.ts} +1 -0
- package/232.min.js +0 -1
- package/dist_browser_Core_Container_js.js +0 -102
- /package/browser/{bundle.js → index.lazy.js} +0 -0
- /package/cjs/{bundle.js → index.lazy.js} +0 -0
- /package/esm/{bundle.js → index.lazy.js} +0 -0
|
@@ -272,7 +272,7 @@ export class CanvasManager {
|
|
|
272
272
|
this.initBackground();
|
|
273
273
|
const pointerEvents = this._pointerEvents;
|
|
274
274
|
element.style.pointerEvents = pointerEvents;
|
|
275
|
-
element.
|
|
275
|
+
element.style.setProperty("pointer-events", pointerEvents);
|
|
276
276
|
this._safeMutationObserver(observer => {
|
|
277
277
|
if (!(element instanceof Node)) {
|
|
278
278
|
return;
|
package/browser/Core/Engine.js
CHANGED
|
@@ -20,9 +20,16 @@ async function getDataFromUrl(data) {
|
|
|
20
20
|
const getCanvasFromContainer = (domContainer) => {
|
|
21
21
|
const documentSafe = safeDocument();
|
|
22
22
|
let canvasEl;
|
|
23
|
-
|
|
23
|
+
const isCanvas = domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === canvasTag;
|
|
24
|
+
if (isCanvas) {
|
|
24
25
|
canvasEl = domContainer;
|
|
25
26
|
canvasEl.dataset[generatedAttribute] ??= generatedFalse;
|
|
27
|
+
if (canvasEl.dataset[generatedAttribute] === generatedTrue) {
|
|
28
|
+
canvasEl.style.width ||= fullPercent;
|
|
29
|
+
canvasEl.style.height ||= fullPercent;
|
|
30
|
+
canvasEl.style.pointerEvents = "none";
|
|
31
|
+
canvasEl.style.setProperty("pointer-events", "none");
|
|
32
|
+
}
|
|
26
33
|
}
|
|
27
34
|
else {
|
|
28
35
|
const existingCanvases = domContainer.getElementsByTagName(canvasTag), foundCanvas = existingCanvases[canvasFirstIndex];
|
|
@@ -35,9 +42,11 @@ const getCanvasFromContainer = (domContainer) => {
|
|
|
35
42
|
canvasEl.dataset[generatedAttribute] = generatedTrue;
|
|
36
43
|
domContainer.appendChild(canvasEl);
|
|
37
44
|
}
|
|
45
|
+
canvasEl.style.width ||= fullPercent;
|
|
46
|
+
canvasEl.style.height ||= fullPercent;
|
|
47
|
+
canvasEl.style.pointerEvents = "none";
|
|
48
|
+
canvasEl.style.setProperty("pointer-events", "none");
|
|
38
49
|
}
|
|
39
|
-
canvasEl.style.width ||= fullPercent;
|
|
40
|
-
canvasEl.style.height ||= fullPercent;
|
|
41
50
|
return canvasEl;
|
|
42
51
|
}, getDomContainer = (id, source) => {
|
|
43
52
|
const documentSafe = safeDocument();
|
|
@@ -60,7 +69,7 @@ export class Engine {
|
|
|
60
69
|
return this._domArray;
|
|
61
70
|
}
|
|
62
71
|
get version() {
|
|
63
|
-
return "4.0.0-beta.
|
|
72
|
+
return "4.0.0-beta.15";
|
|
64
73
|
}
|
|
65
74
|
addEventListener(type, listener) {
|
|
66
75
|
this._eventDispatcher.addEventListener(type, listener);
|
package/browser/Core/Particle.js
CHANGED
|
@@ -49,6 +49,7 @@ export class Particle {
|
|
|
49
49
|
initialPosition;
|
|
50
50
|
initialVelocity;
|
|
51
51
|
isRotating;
|
|
52
|
+
justWarped;
|
|
52
53
|
lastPathTime;
|
|
53
54
|
misplaced;
|
|
54
55
|
moveCenter;
|
|
@@ -168,6 +169,7 @@ export class Particle {
|
|
|
168
169
|
const container = this._container;
|
|
169
170
|
this.id = id;
|
|
170
171
|
this.group = group;
|
|
172
|
+
this.justWarped = false;
|
|
171
173
|
this.effectClose = true;
|
|
172
174
|
this.shapeClose = true;
|
|
173
175
|
this.pathRotation = false;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
import { AnimatableColor } from "../AnimatableColor.js";
|
|
1
2
|
import { Fill } from "./Fill.js";
|
|
2
3
|
import { Stroke } from "./Stroke.js";
|
|
3
4
|
import { isNull } from "../../../Utils/TypeUtils.js";
|
|
4
5
|
export class Paint {
|
|
6
|
+
color;
|
|
5
7
|
fill;
|
|
6
8
|
stroke;
|
|
7
9
|
load(data) {
|
|
8
10
|
if (isNull(data)) {
|
|
9
11
|
return;
|
|
10
12
|
}
|
|
13
|
+
if (data.color !== undefined) {
|
|
14
|
+
this.color = AnimatableColor.create(this.color, data.color);
|
|
15
|
+
}
|
|
11
16
|
if (data.fill !== undefined) {
|
|
12
17
|
this.fill ??= new Fill();
|
|
13
18
|
this.fill.load(data.fill);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { deepExtend, executeOnSingleOrMultiple } from "../../../Utils/Utils.js";
|
|
2
2
|
import { isArray, isNull } from "../../../Utils/TypeUtils.js";
|
|
3
|
+
import { AnimatableColor } from "../AnimatableColor.js";
|
|
3
4
|
import { Effect } from "./Effect/Effect.js";
|
|
5
|
+
import { Fill } from "./Fill.js";
|
|
4
6
|
import { Move } from "./Move/Move.js";
|
|
5
7
|
import { Opacity } from "./Opacity/Opacity.js";
|
|
6
8
|
import { Paint } from "./Paint.js";
|
|
@@ -34,6 +36,10 @@ export class ParticlesOptions {
|
|
|
34
36
|
this.number = new ParticlesNumber();
|
|
35
37
|
this.opacity = new Opacity();
|
|
36
38
|
this.paint = new Paint();
|
|
39
|
+
this.paint.color = new AnimatableColor();
|
|
40
|
+
this.paint.color.value = "#fff";
|
|
41
|
+
this.paint.fill = new Fill();
|
|
42
|
+
this.paint.fill.enable = true;
|
|
37
43
|
this.reduceDuplicates = false;
|
|
38
44
|
this.shape = new Shape();
|
|
39
45
|
this.size = new Size();
|
|
@@ -68,11 +74,20 @@ export class ParticlesOptions {
|
|
|
68
74
|
this.opacity.load(data.opacity);
|
|
69
75
|
const paintToLoad = data.paint;
|
|
70
76
|
if (paintToLoad) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
if (isArray(paintToLoad)) {
|
|
78
|
+
this.paint = executeOnSingleOrMultiple(paintToLoad, t => {
|
|
79
|
+
const tmp = new Paint();
|
|
80
|
+
tmp.load(t);
|
|
81
|
+
return tmp;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else if (isArray(this.paint)) {
|
|
85
|
+
this.paint = new Paint();
|
|
86
|
+
this.paint.load(paintToLoad);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.paint.load(paintToLoad);
|
|
90
|
+
}
|
|
76
91
|
}
|
|
77
92
|
this.shape.load(data.shape);
|
|
78
93
|
this.size.load(data.size);
|
|
@@ -1,22 +1,39 @@
|
|
|
1
1
|
const errorPrefix = "tsParticles - Error";
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
const wrap = (fn) => (...args) => {
|
|
3
|
+
fn(...args);
|
|
4
|
+
}, _logger = {
|
|
5
|
+
debug: wrap(console.debug),
|
|
6
|
+
error: (message, ...optionalParams) => {
|
|
7
|
+
console.error(`${errorPrefix} - ${message}`, ...optionalParams);
|
|
6
8
|
},
|
|
7
|
-
info: console.info,
|
|
8
|
-
log: console.log,
|
|
9
|
-
trace: console.trace,
|
|
10
|
-
verbose: console.log,
|
|
11
|
-
warning: console.warn,
|
|
9
|
+
info: wrap(console.info),
|
|
10
|
+
log: wrap(console.log),
|
|
11
|
+
trace: wrap(console.trace),
|
|
12
|
+
verbose: wrap(console.log),
|
|
13
|
+
warning: wrap(console.warn),
|
|
12
14
|
};
|
|
13
15
|
export function setLogger(logger) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
if (logger.debug) {
|
|
17
|
+
_logger.debug = wrap(logger.debug);
|
|
18
|
+
}
|
|
19
|
+
if (logger.error) {
|
|
20
|
+
_logger.error = wrap(logger.error);
|
|
21
|
+
}
|
|
22
|
+
if (logger.info) {
|
|
23
|
+
_logger.info = wrap(logger.info);
|
|
24
|
+
}
|
|
25
|
+
if (logger.log) {
|
|
26
|
+
_logger.log = wrap(logger.log);
|
|
27
|
+
}
|
|
28
|
+
if (logger.trace) {
|
|
29
|
+
_logger.trace = wrap(logger.trace);
|
|
30
|
+
}
|
|
31
|
+
if (logger.verbose) {
|
|
32
|
+
_logger.verbose = wrap(logger.verbose);
|
|
33
|
+
}
|
|
34
|
+
if (logger.warning) {
|
|
35
|
+
_logger.warning = wrap(logger.warning);
|
|
36
|
+
}
|
|
20
37
|
}
|
|
21
38
|
export function getLogger() {
|
|
22
39
|
return _logger;
|
package/browser/Utils/Utils.js
CHANGED
package/browser/index.js
CHANGED
|
@@ -272,7 +272,7 @@ export class CanvasManager {
|
|
|
272
272
|
this.initBackground();
|
|
273
273
|
const pointerEvents = this._pointerEvents;
|
|
274
274
|
element.style.pointerEvents = pointerEvents;
|
|
275
|
-
element.
|
|
275
|
+
element.style.setProperty("pointer-events", pointerEvents);
|
|
276
276
|
this._safeMutationObserver(observer => {
|
|
277
277
|
if (!(element instanceof Node)) {
|
|
278
278
|
return;
|
package/cjs/Core/Engine.js
CHANGED
|
@@ -20,9 +20,16 @@ async function getDataFromUrl(data) {
|
|
|
20
20
|
const getCanvasFromContainer = (domContainer) => {
|
|
21
21
|
const documentSafe = safeDocument();
|
|
22
22
|
let canvasEl;
|
|
23
|
-
|
|
23
|
+
const isCanvas = domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === canvasTag;
|
|
24
|
+
if (isCanvas) {
|
|
24
25
|
canvasEl = domContainer;
|
|
25
26
|
canvasEl.dataset[generatedAttribute] ??= generatedFalse;
|
|
27
|
+
if (canvasEl.dataset[generatedAttribute] === generatedTrue) {
|
|
28
|
+
canvasEl.style.width ||= fullPercent;
|
|
29
|
+
canvasEl.style.height ||= fullPercent;
|
|
30
|
+
canvasEl.style.pointerEvents = "none";
|
|
31
|
+
canvasEl.style.setProperty("pointer-events", "none");
|
|
32
|
+
}
|
|
26
33
|
}
|
|
27
34
|
else {
|
|
28
35
|
const existingCanvases = domContainer.getElementsByTagName(canvasTag), foundCanvas = existingCanvases[canvasFirstIndex];
|
|
@@ -35,9 +42,11 @@ const getCanvasFromContainer = (domContainer) => {
|
|
|
35
42
|
canvasEl.dataset[generatedAttribute] = generatedTrue;
|
|
36
43
|
domContainer.appendChild(canvasEl);
|
|
37
44
|
}
|
|
45
|
+
canvasEl.style.width ||= fullPercent;
|
|
46
|
+
canvasEl.style.height ||= fullPercent;
|
|
47
|
+
canvasEl.style.pointerEvents = "none";
|
|
48
|
+
canvasEl.style.setProperty("pointer-events", "none");
|
|
38
49
|
}
|
|
39
|
-
canvasEl.style.width ||= fullPercent;
|
|
40
|
-
canvasEl.style.height ||= fullPercent;
|
|
41
50
|
return canvasEl;
|
|
42
51
|
}, getDomContainer = (id, source) => {
|
|
43
52
|
const documentSafe = safeDocument();
|
|
@@ -60,7 +69,7 @@ export class Engine {
|
|
|
60
69
|
return this._domArray;
|
|
61
70
|
}
|
|
62
71
|
get version() {
|
|
63
|
-
return "4.0.0-beta.
|
|
72
|
+
return "4.0.0-beta.15";
|
|
64
73
|
}
|
|
65
74
|
addEventListener(type, listener) {
|
|
66
75
|
this._eventDispatcher.addEventListener(type, listener);
|
package/cjs/Core/Particle.js
CHANGED
|
@@ -49,6 +49,7 @@ export class Particle {
|
|
|
49
49
|
initialPosition;
|
|
50
50
|
initialVelocity;
|
|
51
51
|
isRotating;
|
|
52
|
+
justWarped;
|
|
52
53
|
lastPathTime;
|
|
53
54
|
misplaced;
|
|
54
55
|
moveCenter;
|
|
@@ -168,6 +169,7 @@ export class Particle {
|
|
|
168
169
|
const container = this._container;
|
|
169
170
|
this.id = id;
|
|
170
171
|
this.group = group;
|
|
172
|
+
this.justWarped = false;
|
|
171
173
|
this.effectClose = true;
|
|
172
174
|
this.shapeClose = true;
|
|
173
175
|
this.pathRotation = false;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
import { AnimatableColor } from "../AnimatableColor.js";
|
|
1
2
|
import { Fill } from "./Fill.js";
|
|
2
3
|
import { Stroke } from "./Stroke.js";
|
|
3
4
|
import { isNull } from "../../../Utils/TypeUtils.js";
|
|
4
5
|
export class Paint {
|
|
6
|
+
color;
|
|
5
7
|
fill;
|
|
6
8
|
stroke;
|
|
7
9
|
load(data) {
|
|
8
10
|
if (isNull(data)) {
|
|
9
11
|
return;
|
|
10
12
|
}
|
|
13
|
+
if (data.color !== undefined) {
|
|
14
|
+
this.color = AnimatableColor.create(this.color, data.color);
|
|
15
|
+
}
|
|
11
16
|
if (data.fill !== undefined) {
|
|
12
17
|
this.fill ??= new Fill();
|
|
13
18
|
this.fill.load(data.fill);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { deepExtend, executeOnSingleOrMultiple } from "../../../Utils/Utils.js";
|
|
2
2
|
import { isArray, isNull } from "../../../Utils/TypeUtils.js";
|
|
3
|
+
import { AnimatableColor } from "../AnimatableColor.js";
|
|
3
4
|
import { Effect } from "./Effect/Effect.js";
|
|
5
|
+
import { Fill } from "./Fill.js";
|
|
4
6
|
import { Move } from "./Move/Move.js";
|
|
5
7
|
import { Opacity } from "./Opacity/Opacity.js";
|
|
6
8
|
import { Paint } from "./Paint.js";
|
|
@@ -34,6 +36,10 @@ export class ParticlesOptions {
|
|
|
34
36
|
this.number = new ParticlesNumber();
|
|
35
37
|
this.opacity = new Opacity();
|
|
36
38
|
this.paint = new Paint();
|
|
39
|
+
this.paint.color = new AnimatableColor();
|
|
40
|
+
this.paint.color.value = "#fff";
|
|
41
|
+
this.paint.fill = new Fill();
|
|
42
|
+
this.paint.fill.enable = true;
|
|
37
43
|
this.reduceDuplicates = false;
|
|
38
44
|
this.shape = new Shape();
|
|
39
45
|
this.size = new Size();
|
|
@@ -68,11 +74,20 @@ export class ParticlesOptions {
|
|
|
68
74
|
this.opacity.load(data.opacity);
|
|
69
75
|
const paintToLoad = data.paint;
|
|
70
76
|
if (paintToLoad) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
if (isArray(paintToLoad)) {
|
|
78
|
+
this.paint = executeOnSingleOrMultiple(paintToLoad, t => {
|
|
79
|
+
const tmp = new Paint();
|
|
80
|
+
tmp.load(t);
|
|
81
|
+
return tmp;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else if (isArray(this.paint)) {
|
|
85
|
+
this.paint = new Paint();
|
|
86
|
+
this.paint.load(paintToLoad);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.paint.load(paintToLoad);
|
|
90
|
+
}
|
|
76
91
|
}
|
|
77
92
|
this.shape.load(data.shape);
|
|
78
93
|
this.size.load(data.size);
|
package/cjs/Utils/LogUtils.js
CHANGED
|
@@ -1,22 +1,39 @@
|
|
|
1
1
|
const errorPrefix = "tsParticles - Error";
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
const wrap = (fn) => (...args) => {
|
|
3
|
+
fn(...args);
|
|
4
|
+
}, _logger = {
|
|
5
|
+
debug: wrap(console.debug),
|
|
6
|
+
error: (message, ...optionalParams) => {
|
|
7
|
+
console.error(`${errorPrefix} - ${message}`, ...optionalParams);
|
|
6
8
|
},
|
|
7
|
-
info: console.info,
|
|
8
|
-
log: console.log,
|
|
9
|
-
trace: console.trace,
|
|
10
|
-
verbose: console.log,
|
|
11
|
-
warning: console.warn,
|
|
9
|
+
info: wrap(console.info),
|
|
10
|
+
log: wrap(console.log),
|
|
11
|
+
trace: wrap(console.trace),
|
|
12
|
+
verbose: wrap(console.log),
|
|
13
|
+
warning: wrap(console.warn),
|
|
12
14
|
};
|
|
13
15
|
export function setLogger(logger) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
if (logger.debug) {
|
|
17
|
+
_logger.debug = wrap(logger.debug);
|
|
18
|
+
}
|
|
19
|
+
if (logger.error) {
|
|
20
|
+
_logger.error = wrap(logger.error);
|
|
21
|
+
}
|
|
22
|
+
if (logger.info) {
|
|
23
|
+
_logger.info = wrap(logger.info);
|
|
24
|
+
}
|
|
25
|
+
if (logger.log) {
|
|
26
|
+
_logger.log = wrap(logger.log);
|
|
27
|
+
}
|
|
28
|
+
if (logger.trace) {
|
|
29
|
+
_logger.trace = wrap(logger.trace);
|
|
30
|
+
}
|
|
31
|
+
if (logger.verbose) {
|
|
32
|
+
_logger.verbose = wrap(logger.verbose);
|
|
33
|
+
}
|
|
34
|
+
if (logger.warning) {
|
|
35
|
+
_logger.warning = wrap(logger.warning);
|
|
36
|
+
}
|
|
20
37
|
}
|
|
21
38
|
export function getLogger() {
|
|
22
39
|
return _logger;
|
package/cjs/Utils/Utils.js
CHANGED
package/cjs/browser.js
ADDED
package/cjs/index.js
CHANGED
|
@@ -272,7 +272,7 @@ export class CanvasManager {
|
|
|
272
272
|
this.initBackground();
|
|
273
273
|
const pointerEvents = this._pointerEvents;
|
|
274
274
|
element.style.pointerEvents = pointerEvents;
|
|
275
|
-
element.
|
|
275
|
+
element.style.setProperty("pointer-events", pointerEvents);
|
|
276
276
|
this._safeMutationObserver(observer => {
|
|
277
277
|
if (!(element instanceof Node)) {
|
|
278
278
|
return;
|
package/esm/Core/Engine.js
CHANGED
|
@@ -20,9 +20,16 @@ async function getDataFromUrl(data) {
|
|
|
20
20
|
const getCanvasFromContainer = (domContainer) => {
|
|
21
21
|
const documentSafe = safeDocument();
|
|
22
22
|
let canvasEl;
|
|
23
|
-
|
|
23
|
+
const isCanvas = domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === canvasTag;
|
|
24
|
+
if (isCanvas) {
|
|
24
25
|
canvasEl = domContainer;
|
|
25
26
|
canvasEl.dataset[generatedAttribute] ??= generatedFalse;
|
|
27
|
+
if (canvasEl.dataset[generatedAttribute] === generatedTrue) {
|
|
28
|
+
canvasEl.style.width ||= fullPercent;
|
|
29
|
+
canvasEl.style.height ||= fullPercent;
|
|
30
|
+
canvasEl.style.pointerEvents = "none";
|
|
31
|
+
canvasEl.style.setProperty("pointer-events", "none");
|
|
32
|
+
}
|
|
26
33
|
}
|
|
27
34
|
else {
|
|
28
35
|
const existingCanvases = domContainer.getElementsByTagName(canvasTag), foundCanvas = existingCanvases[canvasFirstIndex];
|
|
@@ -35,9 +42,11 @@ const getCanvasFromContainer = (domContainer) => {
|
|
|
35
42
|
canvasEl.dataset[generatedAttribute] = generatedTrue;
|
|
36
43
|
domContainer.appendChild(canvasEl);
|
|
37
44
|
}
|
|
45
|
+
canvasEl.style.width ||= fullPercent;
|
|
46
|
+
canvasEl.style.height ||= fullPercent;
|
|
47
|
+
canvasEl.style.pointerEvents = "none";
|
|
48
|
+
canvasEl.style.setProperty("pointer-events", "none");
|
|
38
49
|
}
|
|
39
|
-
canvasEl.style.width ||= fullPercent;
|
|
40
|
-
canvasEl.style.height ||= fullPercent;
|
|
41
50
|
return canvasEl;
|
|
42
51
|
}, getDomContainer = (id, source) => {
|
|
43
52
|
const documentSafe = safeDocument();
|
|
@@ -60,7 +69,7 @@ export class Engine {
|
|
|
60
69
|
return this._domArray;
|
|
61
70
|
}
|
|
62
71
|
get version() {
|
|
63
|
-
return "4.0.0-beta.
|
|
72
|
+
return "4.0.0-beta.15";
|
|
64
73
|
}
|
|
65
74
|
addEventListener(type, listener) {
|
|
66
75
|
this._eventDispatcher.addEventListener(type, listener);
|
package/esm/Core/Particle.js
CHANGED
|
@@ -49,6 +49,7 @@ export class Particle {
|
|
|
49
49
|
initialPosition;
|
|
50
50
|
initialVelocity;
|
|
51
51
|
isRotating;
|
|
52
|
+
justWarped;
|
|
52
53
|
lastPathTime;
|
|
53
54
|
misplaced;
|
|
54
55
|
moveCenter;
|
|
@@ -168,6 +169,7 @@ export class Particle {
|
|
|
168
169
|
const container = this._container;
|
|
169
170
|
this.id = id;
|
|
170
171
|
this.group = group;
|
|
172
|
+
this.justWarped = false;
|
|
171
173
|
this.effectClose = true;
|
|
172
174
|
this.shapeClose = true;
|
|
173
175
|
this.pathRotation = false;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
import { AnimatableColor } from "../AnimatableColor.js";
|
|
1
2
|
import { Fill } from "./Fill.js";
|
|
2
3
|
import { Stroke } from "./Stroke.js";
|
|
3
4
|
import { isNull } from "../../../Utils/TypeUtils.js";
|
|
4
5
|
export class Paint {
|
|
6
|
+
color;
|
|
5
7
|
fill;
|
|
6
8
|
stroke;
|
|
7
9
|
load(data) {
|
|
8
10
|
if (isNull(data)) {
|
|
9
11
|
return;
|
|
10
12
|
}
|
|
13
|
+
if (data.color !== undefined) {
|
|
14
|
+
this.color = AnimatableColor.create(this.color, data.color);
|
|
15
|
+
}
|
|
11
16
|
if (data.fill !== undefined) {
|
|
12
17
|
this.fill ??= new Fill();
|
|
13
18
|
this.fill.load(data.fill);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { deepExtend, executeOnSingleOrMultiple } from "../../../Utils/Utils.js";
|
|
2
2
|
import { isArray, isNull } from "../../../Utils/TypeUtils.js";
|
|
3
|
+
import { AnimatableColor } from "../AnimatableColor.js";
|
|
3
4
|
import { Effect } from "./Effect/Effect.js";
|
|
5
|
+
import { Fill } from "./Fill.js";
|
|
4
6
|
import { Move } from "./Move/Move.js";
|
|
5
7
|
import { Opacity } from "./Opacity/Opacity.js";
|
|
6
8
|
import { Paint } from "./Paint.js";
|
|
@@ -34,6 +36,10 @@ export class ParticlesOptions {
|
|
|
34
36
|
this.number = new ParticlesNumber();
|
|
35
37
|
this.opacity = new Opacity();
|
|
36
38
|
this.paint = new Paint();
|
|
39
|
+
this.paint.color = new AnimatableColor();
|
|
40
|
+
this.paint.color.value = "#fff";
|
|
41
|
+
this.paint.fill = new Fill();
|
|
42
|
+
this.paint.fill.enable = true;
|
|
37
43
|
this.reduceDuplicates = false;
|
|
38
44
|
this.shape = new Shape();
|
|
39
45
|
this.size = new Size();
|
|
@@ -68,11 +74,20 @@ export class ParticlesOptions {
|
|
|
68
74
|
this.opacity.load(data.opacity);
|
|
69
75
|
const paintToLoad = data.paint;
|
|
70
76
|
if (paintToLoad) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
if (isArray(paintToLoad)) {
|
|
78
|
+
this.paint = executeOnSingleOrMultiple(paintToLoad, t => {
|
|
79
|
+
const tmp = new Paint();
|
|
80
|
+
tmp.load(t);
|
|
81
|
+
return tmp;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else if (isArray(this.paint)) {
|
|
85
|
+
this.paint = new Paint();
|
|
86
|
+
this.paint.load(paintToLoad);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.paint.load(paintToLoad);
|
|
90
|
+
}
|
|
76
91
|
}
|
|
77
92
|
this.shape.load(data.shape);
|
|
78
93
|
this.size.load(data.size);
|
package/esm/Utils/LogUtils.js
CHANGED
|
@@ -1,22 +1,39 @@
|
|
|
1
1
|
const errorPrefix = "tsParticles - Error";
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
const wrap = (fn) => (...args) => {
|
|
3
|
+
fn(...args);
|
|
4
|
+
}, _logger = {
|
|
5
|
+
debug: wrap(console.debug),
|
|
6
|
+
error: (message, ...optionalParams) => {
|
|
7
|
+
console.error(`${errorPrefix} - ${message}`, ...optionalParams);
|
|
6
8
|
},
|
|
7
|
-
info: console.info,
|
|
8
|
-
log: console.log,
|
|
9
|
-
trace: console.trace,
|
|
10
|
-
verbose: console.log,
|
|
11
|
-
warning: console.warn,
|
|
9
|
+
info: wrap(console.info),
|
|
10
|
+
log: wrap(console.log),
|
|
11
|
+
trace: wrap(console.trace),
|
|
12
|
+
verbose: wrap(console.log),
|
|
13
|
+
warning: wrap(console.warn),
|
|
12
14
|
};
|
|
13
15
|
export function setLogger(logger) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
if (logger.debug) {
|
|
17
|
+
_logger.debug = wrap(logger.debug);
|
|
18
|
+
}
|
|
19
|
+
if (logger.error) {
|
|
20
|
+
_logger.error = wrap(logger.error);
|
|
21
|
+
}
|
|
22
|
+
if (logger.info) {
|
|
23
|
+
_logger.info = wrap(logger.info);
|
|
24
|
+
}
|
|
25
|
+
if (logger.log) {
|
|
26
|
+
_logger.log = wrap(logger.log);
|
|
27
|
+
}
|
|
28
|
+
if (logger.trace) {
|
|
29
|
+
_logger.trace = wrap(logger.trace);
|
|
30
|
+
}
|
|
31
|
+
if (logger.verbose) {
|
|
32
|
+
_logger.verbose = wrap(logger.verbose);
|
|
33
|
+
}
|
|
34
|
+
if (logger.warning) {
|
|
35
|
+
_logger.warning = wrap(logger.warning);
|
|
36
|
+
}
|
|
20
37
|
}
|
|
21
38
|
export function getLogger() {
|
|
22
39
|
return _logger;
|
package/esm/Utils/Utils.js
CHANGED