@tsparticles/preset-matrix 4.5.0 → 4.5.2
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function(g){g.__tsParticlesInternals=g.__tsParticlesInternals||{};g.__tsParticlesInternals.bundles=g.__tsParticlesInternals.bundles||{};g.__tsParticlesInternals.effects=g.__tsParticlesInternals.effects||{};g.__tsParticlesInternals.engine=g.__tsParticlesInternals.engine||{};g.__tsParticlesInternals.interactions=g.__tsParticlesInternals.interactions||{};g.__tsParticlesInternals.palettes=g.__tsParticlesInternals.palettes||{};g.__tsParticlesInternals.paths=g.__tsParticlesInternals.paths||{};g.__tsParticlesInternals.plugins=g.__tsParticlesInternals.plugins||{};g.__tsParticlesInternals.plugins=g.__tsParticlesInternals.plugins||{};g.__tsParticlesInternals.plugins.emittersShapes=g.__tsParticlesInternals.plugins.emittersShapes||{};g.__tsParticlesInternals.presets=g.__tsParticlesInternals.presets||{};g.__tsParticlesInternals.shapes=g.__tsParticlesInternals.shapes||{};g.__tsParticlesInternals.updaters=g.__tsParticlesInternals.updaters||{};g.__tsParticlesInternals.utils=g.__tsParticlesInternals.utils||{};g.__tsParticlesInternals.canvas=g.__tsParticlesInternals.canvas||{};g.__tsParticlesInternals.canvas=g.__tsParticlesInternals.canvas||{};g.__tsParticlesInternals.canvas.utils=g.__tsParticlesInternals.canvas.utils||{};g.__tsParticlesInternals.path=g.__tsParticlesInternals.path||{};g.__tsParticlesInternals.path=g.__tsParticlesInternals.path||{};g.__tsParticlesInternals.path.utils=g.__tsParticlesInternals.path.utils||{};var __tsProxyFactory=typeof Proxy!=="undefined"?function(obj){return new Proxy(obj,{get:function(target,key){if(!(key in target)){target[key]={};}return target[key];}});}:function(obj){return obj;};g.__tsParticlesInternals.bundles=__tsProxyFactory(g.__tsParticlesInternals.bundles);g.__tsParticlesInternals.effects=__tsProxyFactory(g.__tsParticlesInternals.effects);g.__tsParticlesInternals.interactions=__tsProxyFactory(g.__tsParticlesInternals.interactions);g.__tsParticlesInternals.palettes=__tsProxyFactory(g.__tsParticlesInternals.palettes);g.__tsParticlesInternals.paths=__tsProxyFactory(g.__tsParticlesInternals.paths);g.__tsParticlesInternals.plugins=__tsProxyFactory(g.__tsParticlesInternals.plugins);g.__tsParticlesInternals.plugins.emittersShapes=__tsProxyFactory(g.__tsParticlesInternals.plugins.emittersShapes);g.__tsParticlesInternals.presets=__tsProxyFactory(g.__tsParticlesInternals.presets);g.__tsParticlesInternals.shapes=__tsProxyFactory(g.__tsParticlesInternals.shapes);g.__tsParticlesInternals.updaters=__tsProxyFactory(g.__tsParticlesInternals.updaters);g.__tsParticlesInternals.utils=__tsProxyFactory(g.__tsParticlesInternals.utils);g.__tsParticlesInternals.canvas=__tsProxyFactory(g.__tsParticlesInternals.canvas);g.__tsParticlesInternals.path=__tsProxyFactory(g.__tsParticlesInternals.path);})(typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:this);
|
|
2
2
|
(function (g) {
|
|
3
|
-
/* Preset v4.5.
|
|
3
|
+
/* Preset v4.5.2 */
|
|
4
4
|
g.__tsParticlesInternals = g.__tsParticlesInternals || {};
|
|
5
5
|
g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
6
6
|
(function (exports) {
|
|
@@ -120,7 +120,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
120
120
|
}
|
|
121
121
|
normalize() {
|
|
122
122
|
const length = this.length;
|
|
123
|
-
if (length
|
|
123
|
+
if (length !== none) {
|
|
124
124
|
this.multTo(inverseFactorNumerator / length);
|
|
125
125
|
}
|
|
126
126
|
}
|
|
@@ -654,12 +654,8 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
654
654
|
}
|
|
655
655
|
addEventListener(type, listener) {
|
|
656
656
|
this.removeEventListener(type, listener);
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
arr = [];
|
|
660
|
-
this.#listeners.set(type, arr);
|
|
661
|
-
}
|
|
662
|
-
arr.push(listener);
|
|
657
|
+
const arr = this.#listeners.get(type);
|
|
658
|
+
this.#listeners.set(type, arr ? [...arr, listener] : [listener]);
|
|
663
659
|
}
|
|
664
660
|
dispatchEvent(type, args) {
|
|
665
661
|
const listeners = this.#listeners.get(type);
|
|
@@ -691,7 +687,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
691
687
|
this.#listeners.delete(type);
|
|
692
688
|
}
|
|
693
689
|
else {
|
|
694
|
-
arr.
|
|
690
|
+
this.#listeners.set(type, [...arr.slice(minIndex, idx), ...arr.slice(idx + deleteCount)]);
|
|
695
691
|
}
|
|
696
692
|
}
|
|
697
693
|
}
|
|
@@ -868,11 +864,13 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
868
864
|
#domArray = [];
|
|
869
865
|
#eventDispatcher = new EventDispatcher();
|
|
870
866
|
#initialized = false;
|
|
867
|
+
#loadSequence = 0;
|
|
868
|
+
#loadSequences = new Map();
|
|
871
869
|
get items() {
|
|
872
870
|
return this.#domArray;
|
|
873
871
|
}
|
|
874
872
|
get version() {
|
|
875
|
-
return "4.5.
|
|
873
|
+
return "4.5.2";
|
|
876
874
|
}
|
|
877
875
|
addEventListener(type, listener) {
|
|
878
876
|
this.#eventDispatcher.addEventListener(type, listener);
|
|
@@ -902,44 +900,60 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
902
900
|
return item;
|
|
903
901
|
}
|
|
904
902
|
async load(params) {
|
|
905
|
-
await this.init();
|
|
906
903
|
let domSourceElement;
|
|
907
904
|
if (typeof HTMLElement !== "undefined" && params.element instanceof HTMLElement) {
|
|
908
905
|
domSourceElement = params.element;
|
|
909
906
|
}
|
|
910
|
-
const
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
907
|
+
const id = params.id ?? domSourceElement?.id ?? `tsparticles${Math.floor(getRandom() * loadRandomFactor).toString()}`, loadSequence = ++this.#loadSequence;
|
|
908
|
+
this.#loadSequences.set(id, loadSequence);
|
|
909
|
+
try {
|
|
910
|
+
await this.init();
|
|
911
|
+
const { Container } = await Promise.resolve().then(function () { return Container$1; }), { index, url } = params, options = url ? await getDataFromUrl({ fallback: params.options, url, index }) : params.options;
|
|
912
|
+
if (this.#loadSequences.get(id) !== loadSequence) {
|
|
913
|
+
return undefined;
|
|
914
|
+
}
|
|
915
|
+
const currentOptions = itemFromSingleOrMultiple(options, index), { items } = this, oldIndex = items.findIndex(v => v.id.description === id), newItem = new Container({
|
|
916
|
+
dispatchCallback: (eventType, args) => {
|
|
917
|
+
this.dispatchEvent(eventType, args);
|
|
918
|
+
},
|
|
919
|
+
id,
|
|
920
|
+
onDestroy: (remove) => {
|
|
921
|
+
if (!remove) {
|
|
922
|
+
return;
|
|
923
|
+
}
|
|
924
|
+
const mainArr = this.items, idx = mainArr.indexOf(newItem);
|
|
925
|
+
if (idx >= removeMinIndex) {
|
|
926
|
+
mainArr.splice(idx, removeDeleteCount);
|
|
927
|
+
}
|
|
928
|
+
},
|
|
929
|
+
pluginManager: this.pluginManager,
|
|
930
|
+
sourceOptions: currentOptions,
|
|
931
|
+
});
|
|
932
|
+
if (oldIndex >= loadMinIndex) {
|
|
933
|
+
const old = this.item(oldIndex), deleteCount = old ? one : none;
|
|
934
|
+
if (old && !old.destroyed) {
|
|
935
|
+
old.destroy(false);
|
|
922
936
|
}
|
|
923
|
-
|
|
924
|
-
pluginManager: this.pluginManager,
|
|
925
|
-
sourceOptions: currentOptions,
|
|
926
|
-
});
|
|
927
|
-
if (oldIndex >= loadMinIndex) {
|
|
928
|
-
const old = this.item(oldIndex), deleteCount = old ? one : none;
|
|
929
|
-
if (old && !old.destroyed) {
|
|
930
|
-
old.destroy(false);
|
|
937
|
+
items.splice(oldIndex, deleteCount, newItem);
|
|
931
938
|
}
|
|
932
|
-
|
|
939
|
+
else {
|
|
940
|
+
items.push(newItem);
|
|
941
|
+
}
|
|
942
|
+
const sourceCanvas = typeof OffscreenCanvas !== "undefined" && params.element instanceof OffscreenCanvas
|
|
943
|
+
? params.element
|
|
944
|
+
: getCanvasFromContainer(getDomContainer(id, domSourceElement));
|
|
945
|
+
newItem.canvas.loadCanvas(sourceCanvas);
|
|
946
|
+
await newItem.start();
|
|
947
|
+
if (newItem.destroyed) {
|
|
948
|
+
return undefined;
|
|
949
|
+
}
|
|
950
|
+
return newItem;
|
|
933
951
|
}
|
|
934
|
-
|
|
935
|
-
|
|
952
|
+
finally {
|
|
953
|
+
if (this.#loadSequences.get(id) === loadSequence) {
|
|
954
|
+
this.#loadSequences.delete(id);
|
|
955
|
+
}
|
|
936
956
|
}
|
|
937
|
-
const sourceCanvas = typeof OffscreenCanvas !== "undefined" && params.element instanceof OffscreenCanvas
|
|
938
|
-
? params.element
|
|
939
|
-
: getCanvasFromContainer(getDomContainer(id, domSourceElement));
|
|
940
|
-
newItem.canvas.loadCanvas(sourceCanvas);
|
|
941
|
-
await newItem.start();
|
|
942
|
-
return newItem;
|
|
943
957
|
}
|
|
944
958
|
async refresh(refresh = true) {
|
|
945
959
|
if (!refresh) {
|
|
@@ -2247,6 +2261,13 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2247
2261
|
}
|
|
2248
2262
|
}
|
|
2249
2263
|
|
|
2264
|
+
function hasEnabledBlend(particleOptions) {
|
|
2265
|
+
if (!particleOptions || typeof particleOptions !== "object" || !("blend" in particleOptions)) {
|
|
2266
|
+
return false;
|
|
2267
|
+
}
|
|
2268
|
+
const blend = particleOptions.blend;
|
|
2269
|
+
return !!blend && typeof blend === "object" && "enable" in blend && !!blend.enable;
|
|
2270
|
+
}
|
|
2250
2271
|
class BlendPlugin {
|
|
2251
2272
|
id = "blend";
|
|
2252
2273
|
async getPlugin(container) {
|
|
@@ -2268,12 +2289,31 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2268
2289
|
options.blend.load(source?.blend);
|
|
2269
2290
|
}
|
|
2270
2291
|
needsPlugin(options) {
|
|
2271
|
-
|
|
2292
|
+
if (options?.blend?.enable ||
|
|
2293
|
+
options?.particles?.blend?.enable ||
|
|
2294
|
+
Object.values(options?.particles?.groups ?? {}).some(hasEnabledBlend)) {
|
|
2295
|
+
return true;
|
|
2296
|
+
}
|
|
2297
|
+
const emitters = options?.["emitters"];
|
|
2298
|
+
let emitterList = [];
|
|
2299
|
+
if (Array.isArray(emitters)) {
|
|
2300
|
+
emitterList = emitters;
|
|
2301
|
+
}
|
|
2302
|
+
else if (emitters) {
|
|
2303
|
+
emitterList = [emitters];
|
|
2304
|
+
}
|
|
2305
|
+
return emitterList.some(emitter => {
|
|
2306
|
+
if (!emitter || typeof emitter !== "object" || !("particles" in emitter)) {
|
|
2307
|
+
return false;
|
|
2308
|
+
}
|
|
2309
|
+
const particles = emitter.particles;
|
|
2310
|
+
return Array.isArray(particles) ? particles.some(hasEnabledBlend) : hasEnabledBlend(particles);
|
|
2311
|
+
});
|
|
2272
2312
|
}
|
|
2273
2313
|
}
|
|
2274
2314
|
|
|
2275
2315
|
async function loadBlendPlugin(engine) {
|
|
2276
|
-
engine.checkVersion("4.5.
|
|
2316
|
+
engine.checkVersion("4.5.2");
|
|
2277
2317
|
await engine.pluginManager.register(e => {
|
|
2278
2318
|
e.pluginManager.addPlugin(new BlendPlugin());
|
|
2279
2319
|
});
|
|
@@ -2310,7 +2350,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2310
2350
|
}
|
|
2311
2351
|
|
|
2312
2352
|
async function loadCircleShape(engine) {
|
|
2313
|
-
engine.checkVersion("4.5.
|
|
2353
|
+
engine.checkVersion("4.5.2");
|
|
2314
2354
|
await engine.pluginManager.register(e => {
|
|
2315
2355
|
e.pluginManager.addShape(["circle"], () => {
|
|
2316
2356
|
return Promise.resolve(new CircleDrawer());
|
|
@@ -2358,7 +2398,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2358
2398
|
}
|
|
2359
2399
|
|
|
2360
2400
|
async function loadHexColorPlugin(engine) {
|
|
2361
|
-
engine.checkVersion("4.5.
|
|
2401
|
+
engine.checkVersion("4.5.2");
|
|
2362
2402
|
await engine.pluginManager.register(e => {
|
|
2363
2403
|
e.pluginManager.addColorManager("hex", new HexColorManager());
|
|
2364
2404
|
});
|
|
@@ -2411,7 +2451,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2411
2451
|
}
|
|
2412
2452
|
|
|
2413
2453
|
async function loadHslColorPlugin(engine) {
|
|
2414
|
-
engine.checkVersion("4.5.
|
|
2454
|
+
engine.checkVersion("4.5.2");
|
|
2415
2455
|
await engine.pluginManager.register(e => {
|
|
2416
2456
|
e.pluginManager.addColorManager("hsl", new HslColorManager());
|
|
2417
2457
|
});
|
|
@@ -2443,7 +2483,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2443
2483
|
}
|
|
2444
2484
|
|
|
2445
2485
|
async function loadMovePlugin(engine) {
|
|
2446
|
-
engine.checkVersion("4.5.
|
|
2486
|
+
engine.checkVersion("4.5.2");
|
|
2447
2487
|
if (typeof process !== "undefined" && process.env.NODE_ENV !== "production") {
|
|
2448
2488
|
addErrorMessages(ErrorMessages);
|
|
2449
2489
|
}
|
|
@@ -2653,7 +2693,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2653
2693
|
}
|
|
2654
2694
|
|
|
2655
2695
|
async function loadOpacityUpdater(engine) {
|
|
2656
|
-
engine.checkVersion("4.5.
|
|
2696
|
+
engine.checkVersion("4.5.2");
|
|
2657
2697
|
await engine.pluginManager.register(e => {
|
|
2658
2698
|
e.pluginManager.addParticleUpdater("opacity", container => {
|
|
2659
2699
|
return Promise.resolve(new OpacityUpdater(container));
|
|
@@ -2982,7 +3022,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2982
3022
|
}
|
|
2983
3023
|
|
|
2984
3024
|
async function loadOutModesUpdater(engine) {
|
|
2985
|
-
engine.checkVersion("4.5.
|
|
3025
|
+
engine.checkVersion("4.5.2");
|
|
2986
3026
|
await engine.pluginManager.register(e => {
|
|
2987
3027
|
e.pluginManager.addParticleUpdater("outModes", container => {
|
|
2988
3028
|
return Promise.resolve(new OutOfCanvasUpdater(container));
|
|
@@ -3061,7 +3101,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3061
3101
|
}
|
|
3062
3102
|
|
|
3063
3103
|
async function loadPaintUpdater(engine) {
|
|
3064
|
-
engine.checkVersion("4.5.
|
|
3104
|
+
engine.checkVersion("4.5.2");
|
|
3065
3105
|
await engine.pluginManager.register(e => {
|
|
3066
3106
|
e.pluginManager.addParticleUpdater("paint", container => {
|
|
3067
3107
|
return Promise.resolve(new PaintUpdater(e.pluginManager, container));
|
|
@@ -3116,7 +3156,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3116
3156
|
}
|
|
3117
3157
|
|
|
3118
3158
|
async function loadRgbColorPlugin(engine) {
|
|
3119
|
-
engine.checkVersion("4.5.
|
|
3159
|
+
engine.checkVersion("4.5.2");
|
|
3120
3160
|
await engine.pluginManager.register(e => {
|
|
3121
3161
|
e.pluginManager.addColorManager("rgb", new RgbColorManager());
|
|
3122
3162
|
});
|
|
@@ -3201,7 +3241,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3201
3241
|
}
|
|
3202
3242
|
|
|
3203
3243
|
async function loadSizeUpdater(engine) {
|
|
3204
|
-
engine.checkVersion("4.5.
|
|
3244
|
+
engine.checkVersion("4.5.2");
|
|
3205
3245
|
await engine.pluginManager.register(e => {
|
|
3206
3246
|
e.pluginManager.addParticleUpdater("size", container => {
|
|
3207
3247
|
return Promise.resolve(new SizeUpdater(container));
|
|
@@ -3210,7 +3250,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3210
3250
|
}
|
|
3211
3251
|
|
|
3212
3252
|
async function loadBasic(engine) {
|
|
3213
|
-
engine.checkVersion("4.5.
|
|
3253
|
+
engine.checkVersion("4.5.2");
|
|
3214
3254
|
await engine.pluginManager.register(async (e) => {
|
|
3215
3255
|
await Promise.all([
|
|
3216
3256
|
loadBlendPlugin(e),
|
|
@@ -3442,7 +3482,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3442
3482
|
}
|
|
3443
3483
|
|
|
3444
3484
|
async function loadMatrixShape(engine) {
|
|
3445
|
-
engine.checkVersion("4.5.
|
|
3485
|
+
engine.checkVersion("4.5.2");
|
|
3446
3486
|
await engine.pluginManager.register(e => {
|
|
3447
3487
|
e.pluginManager.addShape(["matrix"], () => Promise.resolve(new MatrixDrawer()));
|
|
3448
3488
|
});
|
|
@@ -3487,7 +3527,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3487
3527
|
}
|
|
3488
3528
|
|
|
3489
3529
|
async function loadPoissonDiscPlugin(engine) {
|
|
3490
|
-
engine.checkVersion("4.5.
|
|
3530
|
+
engine.checkVersion("4.5.2");
|
|
3491
3531
|
await engine.pluginManager.register(e => {
|
|
3492
3532
|
e.pluginManager.addPlugin(new PoissonDiscPlugin());
|
|
3493
3533
|
});
|
|
@@ -3529,7 +3569,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3529
3569
|
}
|
|
3530
3570
|
|
|
3531
3571
|
async function loadShadowEffect(engine) {
|
|
3532
|
-
engine.checkVersion("4.5.
|
|
3572
|
+
engine.checkVersion("4.5.2");
|
|
3533
3573
|
await engine.pluginManager.register(e => {
|
|
3534
3574
|
e.pluginManager.addEffect("shadow", container => {
|
|
3535
3575
|
return Promise.resolve(new ShadowDrawer(e.pluginManager, container));
|
|
@@ -3593,7 +3633,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3593
3633
|
}
|
|
3594
3634
|
|
|
3595
3635
|
async function loadTrailPlugin(engine) {
|
|
3596
|
-
engine.checkVersion("4.5.
|
|
3636
|
+
engine.checkVersion("4.5.2");
|
|
3597
3637
|
await engine.pluginManager.register(e => {
|
|
3598
3638
|
e.pluginManager.addPlugin(new TrailPlugin(e.pluginManager));
|
|
3599
3639
|
});
|
|
@@ -3857,7 +3897,8 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3857
3897
|
});
|
|
3858
3898
|
}
|
|
3859
3899
|
drawParticles(delta) {
|
|
3860
|
-
const { particles, actualOptions } = this.#container
|
|
3900
|
+
const { particles, actualOptions } = this.#container;
|
|
3901
|
+
this.clear();
|
|
3861
3902
|
particles.update(delta);
|
|
3862
3903
|
this.draw(ctx => {
|
|
3863
3904
|
const width = this.#canvasManager.size.width, height = this.#canvasManager.size.height;
|
|
@@ -3879,9 +3920,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3879
3920
|
}
|
|
3880
3921
|
}
|
|
3881
3922
|
for (const plugin of this.#getLayerPlugins(DrawLayer.BackgroundMask)) {
|
|
3882
|
-
|
|
3883
|
-
plugin.canvasPaint?.();
|
|
3884
|
-
}
|
|
3923
|
+
plugin.canvasPaint?.();
|
|
3885
3924
|
}
|
|
3886
3925
|
for (const plugin of this.#getLayerPlugins(DrawLayer.CanvasSetup)) {
|
|
3887
3926
|
plugin.drawSettingsSetup?.(ctx, delta);
|
|
@@ -3971,6 +4010,9 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3971
4010
|
ctx.clearRect(originPoint.x, originPoint.y, this.#canvasManager.size.width, this.#canvasManager.size.height);
|
|
3972
4011
|
});
|
|
3973
4012
|
}
|
|
4013
|
+
updateBackgroundElement() {
|
|
4014
|
+
this.#resolveBackgroundElement();
|
|
4015
|
+
}
|
|
3974
4016
|
#applyPostDrawUpdaters(particle) {
|
|
3975
4017
|
for (const updater of this.#postDrawUpdaters) {
|
|
3976
4018
|
updater.afterDraw?.(particle);
|
|
@@ -4169,7 +4211,14 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
4169
4211
|
}
|
|
4170
4212
|
if (typeof background.element === "string") {
|
|
4171
4213
|
if (typeof document !== "undefined") {
|
|
4172
|
-
|
|
4214
|
+
let node;
|
|
4215
|
+
try {
|
|
4216
|
+
node = document.querySelector(background.element);
|
|
4217
|
+
}
|
|
4218
|
+
catch {
|
|
4219
|
+
this.#warnOnce("background-element-invalid-selector", `Background element selector "${background.element}" is invalid`);
|
|
4220
|
+
return;
|
|
4221
|
+
}
|
|
4173
4222
|
if (node && this.#isSupportedElement(node)) {
|
|
4174
4223
|
this.#backgroundElement = node;
|
|
4175
4224
|
}
|
|
@@ -4615,6 +4664,10 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
4615
4664
|
this.#manageListeners(true);
|
|
4616
4665
|
}
|
|
4617
4666
|
removeListeners() {
|
|
4667
|
+
if (this.#resizeTimeout !== undefined) {
|
|
4668
|
+
clearTimeout(this.#resizeTimeout);
|
|
4669
|
+
this.#resizeTimeout = undefined;
|
|
4670
|
+
}
|
|
4618
4671
|
this.#manageListeners(false);
|
|
4619
4672
|
}
|
|
4620
4673
|
#handleVisibilityChange() {
|
|
@@ -4989,10 +5042,10 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
4989
5042
|
runParticleCreatedPlugins(container, this);
|
|
4990
5043
|
}
|
|
4991
5044
|
isInsideCanvas(direction) {
|
|
4992
|
-
return this.#getInsideCanvasResult(
|
|
5045
|
+
return this.#getInsideCanvasResult(direction).inside;
|
|
4993
5046
|
}
|
|
4994
5047
|
isInsideCanvasForOutMode(outMode, direction) {
|
|
4995
|
-
return this.#getInsideCanvasResult(
|
|
5048
|
+
return this.#getInsideCanvasResult(direction, outMode).inside;
|
|
4996
5049
|
}
|
|
4997
5050
|
isShowingBack() {
|
|
4998
5051
|
if (!this.roll) {
|
|
@@ -5109,7 +5162,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5109
5162
|
});
|
|
5110
5163
|
}
|
|
5111
5164
|
#getDefaultInsideCanvasResult(direction, outMode) {
|
|
5112
|
-
const radius = this.getRadius(), canvasSize = this.#container.canvas.size, position = this.position, isBounce = outMode === OutMode.bounce;
|
|
5165
|
+
const radius = this.getRadius(), canvasSize = this.#container.canvas.size, position = this.position, isBounce = outMode === OutMode.bounce || outMode === OutMode.split;
|
|
5113
5166
|
if (direction === OutModeDirection.bottom) {
|
|
5114
5167
|
return {
|
|
5115
5168
|
inside: isBounce ? position.y + radius < canvasSize.height : position.y - radius < canvasSize.height,
|
|
@@ -5151,12 +5204,16 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5151
5204
|
radius: this.getRadius(),
|
|
5152
5205
|
};
|
|
5153
5206
|
}
|
|
5154
|
-
#getInsideCanvasResult(
|
|
5155
|
-
const defaultResult = this.#getDefaultInsideCanvasResult(
|
|
5156
|
-
if (!
|
|
5207
|
+
#getInsideCanvasResult(direction, outMode) {
|
|
5208
|
+
const defaultResult = this.#getDefaultInsideCanvasResult(direction, outMode), container = this.#container, shapeDrawer = this.shape ? container.shapeDrawers.get(this.shape) : undefined, effectDrawer = this.effect ? container.effectDrawers.get(this.effect) : undefined;
|
|
5209
|
+
if (!shapeDrawer?.isInsideCanvas && !effectDrawer?.isInsideCanvas) {
|
|
5157
5210
|
return defaultResult;
|
|
5158
5211
|
}
|
|
5159
|
-
const callbackData = this.#getInsideCanvasCallbackData(
|
|
5212
|
+
const callbackData = this.#getInsideCanvasCallbackData(direction, outMode), shapeResult = shapeDrawer?.isInsideCanvas
|
|
5213
|
+
? this.#normalizeInsideCanvasResult(shapeDrawer.isInsideCanvas(callbackData), "shape")
|
|
5214
|
+
: undefined, effectResult = effectDrawer?.isInsideCanvas
|
|
5215
|
+
? this.#normalizeInsideCanvasResult(effectDrawer.isInsideCanvas(callbackData), "effect")
|
|
5216
|
+
: undefined;
|
|
5160
5217
|
if (shapeResult && effectResult) {
|
|
5161
5218
|
const margin = Math.max(shapeResult.margin ?? defaultAngle, effectResult.margin ?? defaultAngle);
|
|
5162
5219
|
return {
|
|
@@ -5222,8 +5279,8 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5222
5279
|
}
|
|
5223
5280
|
|
|
5224
5281
|
class SpatialHashGrid {
|
|
5225
|
-
#cellSize;
|
|
5226
5282
|
#cells = new Map();
|
|
5283
|
+
#cellSize;
|
|
5227
5284
|
#circlePool = [];
|
|
5228
5285
|
#circlePoolIdx;
|
|
5229
5286
|
#pendingCellSize;
|
|
@@ -5269,14 +5326,22 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5269
5326
|
return out;
|
|
5270
5327
|
}
|
|
5271
5328
|
queryCircle(position, radius, check, out = []) {
|
|
5272
|
-
const circle = this.#acquireCircle(position.x, position.y, radius)
|
|
5273
|
-
|
|
5274
|
-
|
|
5329
|
+
const circle = this.#acquireCircle(position.x, position.y, radius);
|
|
5330
|
+
try {
|
|
5331
|
+
return this.query(circle, check, out);
|
|
5332
|
+
}
|
|
5333
|
+
finally {
|
|
5334
|
+
this.#circlePoolIdx--;
|
|
5335
|
+
}
|
|
5275
5336
|
}
|
|
5276
5337
|
queryRectangle(position, size, check, out = []) {
|
|
5277
|
-
const rect = this.#acquireRectangle(position.x, position.y, size.width, size.height)
|
|
5278
|
-
|
|
5279
|
-
|
|
5338
|
+
const rect = this.#acquireRectangle(position.x, position.y, size.width, size.height);
|
|
5339
|
+
try {
|
|
5340
|
+
return this.query(rect, check, out);
|
|
5341
|
+
}
|
|
5342
|
+
finally {
|
|
5343
|
+
this.#rectanglePoolIdx--;
|
|
5344
|
+
}
|
|
5280
5345
|
}
|
|
5281
5346
|
#acquireCircle(x, y, r) {
|
|
5282
5347
|
const idx = this.#circlePoolIdx++;
|
|
@@ -5335,10 +5400,6 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5335
5400
|
}
|
|
5336
5401
|
}
|
|
5337
5402
|
}
|
|
5338
|
-
#releaseShapes() {
|
|
5339
|
-
this.#circlePoolIdx = 0;
|
|
5340
|
-
this.#rectanglePoolIdx = 0;
|
|
5341
|
-
}
|
|
5342
5403
|
}
|
|
5343
5404
|
|
|
5344
5405
|
class ParticlesManager {
|
|
@@ -5877,8 +5938,8 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5877
5938
|
particleCreatedPlugins;
|
|
5878
5939
|
particleDestroyedPlugins;
|
|
5879
5940
|
particlePositionPlugins;
|
|
5880
|
-
particleUpdaters;
|
|
5881
5941
|
particles;
|
|
5942
|
+
particleUpdaters;
|
|
5882
5943
|
peakNits;
|
|
5883
5944
|
plugins;
|
|
5884
5945
|
retina;
|
|
@@ -5886,6 +5947,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5886
5947
|
started;
|
|
5887
5948
|
zLayers;
|
|
5888
5949
|
#delay;
|
|
5950
|
+
#delayResolve;
|
|
5889
5951
|
#delayTimeout;
|
|
5890
5952
|
#delta = { value: 0, factor: 0 };
|
|
5891
5953
|
#dispatchCallback;
|
|
@@ -6124,7 +6186,10 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
6124
6186
|
await this.init();
|
|
6125
6187
|
this.started = true;
|
|
6126
6188
|
await new Promise(resolve => {
|
|
6189
|
+
this.#delayResolve = resolve;
|
|
6127
6190
|
const start = async () => {
|
|
6191
|
+
this.#delayTimeout = undefined;
|
|
6192
|
+
this.#delayResolve = undefined;
|
|
6128
6193
|
this.#eventListeners.addListeners();
|
|
6129
6194
|
for (const plugin of this.plugins) {
|
|
6130
6195
|
await plugin.start?.();
|
|
@@ -6140,9 +6205,11 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
6140
6205
|
if (!guardCheck(this) || !this.started) {
|
|
6141
6206
|
return;
|
|
6142
6207
|
}
|
|
6143
|
-
if (this.#delayTimeout) {
|
|
6208
|
+
if (this.#delayTimeout !== undefined) {
|
|
6144
6209
|
clearTimeout(this.#delayTimeout);
|
|
6145
6210
|
this.#delayTimeout = undefined;
|
|
6211
|
+
this.#delayResolve?.();
|
|
6212
|
+
this.#delayResolve = undefined;
|
|
6146
6213
|
}
|
|
6147
6214
|
this.#firstStart = true;
|
|
6148
6215
|
this.started = false;
|
|
@@ -6166,6 +6233,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
6166
6233
|
refresh = plugin.updateActualOptions() || refresh;
|
|
6167
6234
|
}
|
|
6168
6235
|
}
|
|
6236
|
+
this.canvas.render.updateBackgroundElement();
|
|
6169
6237
|
return refresh;
|
|
6170
6238
|
}
|
|
6171
6239
|
#initPlugins(allContainerPlugins) {
|