@tsparticles/preset-firefly 4.5.1 → 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.
- package/package.json +6 -6
- package/report.html +1 -1
- package/tsparticles.preset.firefly.bundle.js +130 -67
- package/tsparticles.preset.firefly.bundle.min.js +1 -1
- package/tsparticles.preset.firefly.js +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.lazy.d.ts +1 -1
- package/types/options.d.ts +1 -1
|
@@ -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
|
}
|
|
@@ -864,11 +864,13 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
864
864
|
#domArray = [];
|
|
865
865
|
#eventDispatcher = new EventDispatcher();
|
|
866
866
|
#initialized = false;
|
|
867
|
+
#loadSequence = 0;
|
|
868
|
+
#loadSequences = new Map();
|
|
867
869
|
get items() {
|
|
868
870
|
return this.#domArray;
|
|
869
871
|
}
|
|
870
872
|
get version() {
|
|
871
|
-
return "4.5.
|
|
873
|
+
return "4.5.2";
|
|
872
874
|
}
|
|
873
875
|
addEventListener(type, listener) {
|
|
874
876
|
this.#eventDispatcher.addEventListener(type, listener);
|
|
@@ -898,44 +900,60 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
898
900
|
return item;
|
|
899
901
|
}
|
|
900
902
|
async load(params) {
|
|
901
|
-
await this.init();
|
|
902
903
|
let domSourceElement;
|
|
903
904
|
if (typeof HTMLElement !== "undefined" && params.element instanceof HTMLElement) {
|
|
904
905
|
domSourceElement = params.element;
|
|
905
906
|
}
|
|
906
|
-
const
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
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);
|
|
918
936
|
}
|
|
919
|
-
|
|
920
|
-
pluginManager: this.pluginManager,
|
|
921
|
-
sourceOptions: currentOptions,
|
|
922
|
-
});
|
|
923
|
-
if (oldIndex >= loadMinIndex) {
|
|
924
|
-
const old = this.item(oldIndex), deleteCount = old ? one : none;
|
|
925
|
-
if (old && !old.destroyed) {
|
|
926
|
-
old.destroy(false);
|
|
937
|
+
items.splice(oldIndex, deleteCount, newItem);
|
|
927
938
|
}
|
|
928
|
-
|
|
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;
|
|
929
951
|
}
|
|
930
|
-
|
|
931
|
-
|
|
952
|
+
finally {
|
|
953
|
+
if (this.#loadSequences.get(id) === loadSequence) {
|
|
954
|
+
this.#loadSequences.delete(id);
|
|
955
|
+
}
|
|
932
956
|
}
|
|
933
|
-
const sourceCanvas = typeof OffscreenCanvas !== "undefined" && params.element instanceof OffscreenCanvas
|
|
934
|
-
? params.element
|
|
935
|
-
: getCanvasFromContainer(getDomContainer(id, domSourceElement));
|
|
936
|
-
newItem.canvas.loadCanvas(sourceCanvas);
|
|
937
|
-
await newItem.start();
|
|
938
|
-
return newItem;
|
|
939
957
|
}
|
|
940
958
|
async refresh(refresh = true) {
|
|
941
959
|
if (!refresh) {
|
|
@@ -2243,6 +2261,13 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2243
2261
|
}
|
|
2244
2262
|
}
|
|
2245
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
|
+
}
|
|
2246
2271
|
class BlendPlugin {
|
|
2247
2272
|
id = "blend";
|
|
2248
2273
|
async getPlugin(container) {
|
|
@@ -2264,12 +2289,31 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2264
2289
|
options.blend.load(source?.blend);
|
|
2265
2290
|
}
|
|
2266
2291
|
needsPlugin(options) {
|
|
2267
|
-
|
|
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
|
+
});
|
|
2268
2312
|
}
|
|
2269
2313
|
}
|
|
2270
2314
|
|
|
2271
2315
|
async function loadBlendPlugin(engine) {
|
|
2272
|
-
engine.checkVersion("4.5.
|
|
2316
|
+
engine.checkVersion("4.5.2");
|
|
2273
2317
|
await engine.pluginManager.register(e => {
|
|
2274
2318
|
e.pluginManager.addPlugin(new BlendPlugin());
|
|
2275
2319
|
});
|
|
@@ -2306,7 +2350,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2306
2350
|
}
|
|
2307
2351
|
|
|
2308
2352
|
async function loadCircleShape(engine) {
|
|
2309
|
-
engine.checkVersion("4.5.
|
|
2353
|
+
engine.checkVersion("4.5.2");
|
|
2310
2354
|
await engine.pluginManager.register(e => {
|
|
2311
2355
|
e.pluginManager.addShape(["circle"], () => {
|
|
2312
2356
|
return Promise.resolve(new CircleDrawer());
|
|
@@ -2354,7 +2398,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2354
2398
|
}
|
|
2355
2399
|
|
|
2356
2400
|
async function loadHexColorPlugin(engine) {
|
|
2357
|
-
engine.checkVersion("4.5.
|
|
2401
|
+
engine.checkVersion("4.5.2");
|
|
2358
2402
|
await engine.pluginManager.register(e => {
|
|
2359
2403
|
e.pluginManager.addColorManager("hex", new HexColorManager());
|
|
2360
2404
|
});
|
|
@@ -2407,7 +2451,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2407
2451
|
}
|
|
2408
2452
|
|
|
2409
2453
|
async function loadHslColorPlugin(engine) {
|
|
2410
|
-
engine.checkVersion("4.5.
|
|
2454
|
+
engine.checkVersion("4.5.2");
|
|
2411
2455
|
await engine.pluginManager.register(e => {
|
|
2412
2456
|
e.pluginManager.addColorManager("hsl", new HslColorManager());
|
|
2413
2457
|
});
|
|
@@ -2439,7 +2483,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2439
2483
|
}
|
|
2440
2484
|
|
|
2441
2485
|
async function loadMovePlugin(engine) {
|
|
2442
|
-
engine.checkVersion("4.5.
|
|
2486
|
+
engine.checkVersion("4.5.2");
|
|
2443
2487
|
if (typeof process !== "undefined" && process.env.NODE_ENV !== "production") {
|
|
2444
2488
|
addErrorMessages(ErrorMessages$1);
|
|
2445
2489
|
}
|
|
@@ -2649,7 +2693,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2649
2693
|
}
|
|
2650
2694
|
|
|
2651
2695
|
async function loadOpacityUpdater(engine) {
|
|
2652
|
-
engine.checkVersion("4.5.
|
|
2696
|
+
engine.checkVersion("4.5.2");
|
|
2653
2697
|
await engine.pluginManager.register(e => {
|
|
2654
2698
|
e.pluginManager.addParticleUpdater("opacity", container => {
|
|
2655
2699
|
return Promise.resolve(new OpacityUpdater(container));
|
|
@@ -2978,7 +3022,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
2978
3022
|
}
|
|
2979
3023
|
|
|
2980
3024
|
async function loadOutModesUpdater(engine) {
|
|
2981
|
-
engine.checkVersion("4.5.
|
|
3025
|
+
engine.checkVersion("4.5.2");
|
|
2982
3026
|
await engine.pluginManager.register(e => {
|
|
2983
3027
|
e.pluginManager.addParticleUpdater("outModes", container => {
|
|
2984
3028
|
return Promise.resolve(new OutOfCanvasUpdater(container));
|
|
@@ -3057,7 +3101,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3057
3101
|
}
|
|
3058
3102
|
|
|
3059
3103
|
async function loadPaintUpdater(engine) {
|
|
3060
|
-
engine.checkVersion("4.5.
|
|
3104
|
+
engine.checkVersion("4.5.2");
|
|
3061
3105
|
await engine.pluginManager.register(e => {
|
|
3062
3106
|
e.pluginManager.addParticleUpdater("paint", container => {
|
|
3063
3107
|
return Promise.resolve(new PaintUpdater(e.pluginManager, container));
|
|
@@ -3112,7 +3156,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3112
3156
|
}
|
|
3113
3157
|
|
|
3114
3158
|
async function loadRgbColorPlugin(engine) {
|
|
3115
|
-
engine.checkVersion("4.5.
|
|
3159
|
+
engine.checkVersion("4.5.2");
|
|
3116
3160
|
await engine.pluginManager.register(e => {
|
|
3117
3161
|
e.pluginManager.addColorManager("rgb", new RgbColorManager());
|
|
3118
3162
|
});
|
|
@@ -3197,7 +3241,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3197
3241
|
}
|
|
3198
3242
|
|
|
3199
3243
|
async function loadSizeUpdater(engine) {
|
|
3200
|
-
engine.checkVersion("4.5.
|
|
3244
|
+
engine.checkVersion("4.5.2");
|
|
3201
3245
|
await engine.pluginManager.register(e => {
|
|
3202
3246
|
e.pluginManager.addParticleUpdater("size", container => {
|
|
3203
3247
|
return Promise.resolve(new SizeUpdater(container));
|
|
@@ -3206,7 +3250,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3206
3250
|
}
|
|
3207
3251
|
|
|
3208
3252
|
async function loadBasic(engine) {
|
|
3209
|
-
engine.checkVersion("4.5.
|
|
3253
|
+
engine.checkVersion("4.5.2");
|
|
3210
3254
|
await engine.pluginManager.register(async (e) => {
|
|
3211
3255
|
await Promise.all([
|
|
3212
3256
|
loadBlendPlugin(e),
|
|
@@ -3412,7 +3456,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3412
3456
|
const clickEvent = "click", mouseDownEvent = "pointerdown", mouseUpEvent = "pointerup", mouseLeaveEvent = "pointerleave", mouseMoveEvent = "pointermove", touchStartEvent = "touchstart", touchEndEvent = "touchend", touchMoveEvent = "touchmove", touchCancelEvent = "touchcancel";
|
|
3413
3457
|
|
|
3414
3458
|
async function loadInteractivityPlugin(engine) {
|
|
3415
|
-
engine.checkVersion("4.5.
|
|
3459
|
+
engine.checkVersion("4.5.2");
|
|
3416
3460
|
if (typeof process !== "undefined" && process.env.NODE_ENV !== "production") {
|
|
3417
3461
|
addErrorMessages(ErrorMessages);
|
|
3418
3462
|
}
|
|
@@ -3504,8 +3548,9 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3504
3548
|
pauseOnStop = false;
|
|
3505
3549
|
quantity = 1;
|
|
3506
3550
|
load(data) {
|
|
3507
|
-
if (isNull(data))
|
|
3551
|
+
if (isNull(data)) {
|
|
3508
3552
|
return;
|
|
3553
|
+
}
|
|
3509
3554
|
loadProperty(this, "delay", data.delay);
|
|
3510
3555
|
loadProperty(this, "quantity", data.quantity);
|
|
3511
3556
|
loadProperty(this, "pauseOnStop", data.pauseOnStop);
|
|
@@ -3536,17 +3581,20 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3536
3581
|
}
|
|
3537
3582
|
interact(interactivityData, delta) {
|
|
3538
3583
|
const container = this.container;
|
|
3539
|
-
if (!container.retina.reduceFactor)
|
|
3584
|
+
if (!container.retina.reduceFactor) {
|
|
3540
3585
|
return;
|
|
3586
|
+
}
|
|
3541
3587
|
const options = container.actualOptions, trailOptions = options.interactivity?.modes.trail;
|
|
3542
|
-
if (!trailOptions)
|
|
3588
|
+
if (!trailOptions) {
|
|
3543
3589
|
return;
|
|
3590
|
+
}
|
|
3544
3591
|
const optDelay = (trailOptions.delay * millisecondsToSeconds) / this.container.retina.reduceFactor;
|
|
3545
3592
|
if (this.#delay < optDelay) {
|
|
3546
3593
|
this.#delay += delta.value;
|
|
3547
3594
|
}
|
|
3548
|
-
if (this.#delay < optDelay)
|
|
3595
|
+
if (this.#delay < optDelay) {
|
|
3549
3596
|
return;
|
|
3597
|
+
}
|
|
3550
3598
|
const mousePos = interactivityData.mouse.position, canEmit = !(trailOptions.pauseOnStop &&
|
|
3551
3599
|
(mousePos === this.#lastPosition ||
|
|
3552
3600
|
(mousePos?.x === this.#lastPosition?.x && mousePos?.y === this.#lastPosition?.y)));
|
|
@@ -3566,8 +3614,9 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3566
3614
|
}, hasWeights = (comp) => {
|
|
3567
3615
|
return !!(comp?.weights?.x ?? comp?.weights?.y);
|
|
3568
3616
|
}, calculateValue = (comp, originalValue, defaultMax) => {
|
|
3569
|
-
if (!hasWeights(comp))
|
|
3617
|
+
if (!hasWeights(comp)) {
|
|
3570
3618
|
return undefined;
|
|
3619
|
+
}
|
|
3571
3620
|
const w = comp?.weights, factor = norm.x * (w?.x ?? defaultWeight) + norm.y * (w?.y ?? defaultWeight), rangeSource = comp?.value ?? originalValue, min = getRangeMin(rangeSource ?? defaultMin), max = getRangeMax(rangeSource ?? defaultMax), result = min + factor * (max - min);
|
|
3572
3621
|
return Math.min(max, Math.max(min, result));
|
|
3573
3622
|
}, trailPaintOptions = trailOptions.particles?.paint
|
|
@@ -3609,7 +3658,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3609
3658
|
}
|
|
3610
3659
|
|
|
3611
3660
|
async function loadExternalTrailInteraction(engine) {
|
|
3612
|
-
engine.checkVersion("4.5.
|
|
3661
|
+
engine.checkVersion("4.5.2");
|
|
3613
3662
|
await engine.pluginManager.register((e) => {
|
|
3614
3663
|
ensureInteractivityPluginLoaded(e);
|
|
3615
3664
|
e.pluginManager.addInteractor?.("externalTrail", container => {
|
|
@@ -3755,7 +3804,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
3755
3804
|
}
|
|
3756
3805
|
|
|
3757
3806
|
async function loadLifeUpdater(engine) {
|
|
3758
|
-
engine.checkVersion("4.5.
|
|
3807
|
+
engine.checkVersion("4.5.2");
|
|
3759
3808
|
await engine.pluginManager.register(e => {
|
|
3760
3809
|
e.pluginManager.addParticleUpdater("life", container => {
|
|
3761
3810
|
return Promise.resolve(new LifeUpdater(container));
|
|
@@ -4008,7 +4057,8 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
4008
4057
|
});
|
|
4009
4058
|
}
|
|
4010
4059
|
drawParticles(delta) {
|
|
4011
|
-
const { particles, actualOptions } = this.#container
|
|
4060
|
+
const { particles, actualOptions } = this.#container;
|
|
4061
|
+
this.clear();
|
|
4012
4062
|
particles.update(delta);
|
|
4013
4063
|
this.draw(ctx => {
|
|
4014
4064
|
const width = this.#canvasManager.size.width, height = this.#canvasManager.size.height;
|
|
@@ -4030,9 +4080,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
4030
4080
|
}
|
|
4031
4081
|
}
|
|
4032
4082
|
for (const plugin of this.#getLayerPlugins(DrawLayer.BackgroundMask)) {
|
|
4033
|
-
|
|
4034
|
-
plugin.canvasPaint?.();
|
|
4035
|
-
}
|
|
4083
|
+
plugin.canvasPaint?.();
|
|
4036
4084
|
}
|
|
4037
4085
|
for (const plugin of this.#getLayerPlugins(DrawLayer.CanvasSetup)) {
|
|
4038
4086
|
plugin.drawSettingsSetup?.(ctx, delta);
|
|
@@ -4122,6 +4170,9 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
4122
4170
|
ctx.clearRect(originPoint.x, originPoint.y, this.#canvasManager.size.width, this.#canvasManager.size.height);
|
|
4123
4171
|
});
|
|
4124
4172
|
}
|
|
4173
|
+
updateBackgroundElement() {
|
|
4174
|
+
this.#resolveBackgroundElement();
|
|
4175
|
+
}
|
|
4125
4176
|
#applyPostDrawUpdaters(particle) {
|
|
4126
4177
|
for (const updater of this.#postDrawUpdaters) {
|
|
4127
4178
|
updater.afterDraw?.(particle);
|
|
@@ -4320,7 +4371,14 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
4320
4371
|
}
|
|
4321
4372
|
if (typeof background.element === "string") {
|
|
4322
4373
|
if (typeof document !== "undefined") {
|
|
4323
|
-
|
|
4374
|
+
let node;
|
|
4375
|
+
try {
|
|
4376
|
+
node = document.querySelector(background.element);
|
|
4377
|
+
}
|
|
4378
|
+
catch {
|
|
4379
|
+
this.#warnOnce("background-element-invalid-selector", `Background element selector "${background.element}" is invalid`);
|
|
4380
|
+
return;
|
|
4381
|
+
}
|
|
4324
4382
|
if (node && this.#isSupportedElement(node)) {
|
|
4325
4383
|
this.#backgroundElement = node;
|
|
4326
4384
|
}
|
|
@@ -5144,10 +5202,10 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5144
5202
|
runParticleCreatedPlugins(container, this);
|
|
5145
5203
|
}
|
|
5146
5204
|
isInsideCanvas(direction) {
|
|
5147
|
-
return this.#getInsideCanvasResult(
|
|
5205
|
+
return this.#getInsideCanvasResult(direction).inside;
|
|
5148
5206
|
}
|
|
5149
5207
|
isInsideCanvasForOutMode(outMode, direction) {
|
|
5150
|
-
return this.#getInsideCanvasResult(
|
|
5208
|
+
return this.#getInsideCanvasResult(direction, outMode).inside;
|
|
5151
5209
|
}
|
|
5152
5210
|
isShowingBack() {
|
|
5153
5211
|
if (!this.roll) {
|
|
@@ -5264,7 +5322,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5264
5322
|
});
|
|
5265
5323
|
}
|
|
5266
5324
|
#getDefaultInsideCanvasResult(direction, outMode) {
|
|
5267
|
-
const radius = this.getRadius(), canvasSize = this.#container.canvas.size, position = this.position, isBounce = outMode === OutMode.bounce;
|
|
5325
|
+
const radius = this.getRadius(), canvasSize = this.#container.canvas.size, position = this.position, isBounce = outMode === OutMode.bounce || outMode === OutMode.split;
|
|
5268
5326
|
if (direction === OutModeDirection.bottom) {
|
|
5269
5327
|
return {
|
|
5270
5328
|
inside: isBounce ? position.y + radius < canvasSize.height : position.y - radius < canvasSize.height,
|
|
@@ -5306,12 +5364,16 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5306
5364
|
radius: this.getRadius(),
|
|
5307
5365
|
};
|
|
5308
5366
|
}
|
|
5309
|
-
#getInsideCanvasResult(
|
|
5310
|
-
const defaultResult = this.#getDefaultInsideCanvasResult(
|
|
5311
|
-
if (!
|
|
5367
|
+
#getInsideCanvasResult(direction, outMode) {
|
|
5368
|
+
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;
|
|
5369
|
+
if (!shapeDrawer?.isInsideCanvas && !effectDrawer?.isInsideCanvas) {
|
|
5312
5370
|
return defaultResult;
|
|
5313
5371
|
}
|
|
5314
|
-
const callbackData = this.#getInsideCanvasCallbackData(
|
|
5372
|
+
const callbackData = this.#getInsideCanvasCallbackData(direction, outMode), shapeResult = shapeDrawer?.isInsideCanvas
|
|
5373
|
+
? this.#normalizeInsideCanvasResult(shapeDrawer.isInsideCanvas(callbackData), "shape")
|
|
5374
|
+
: undefined, effectResult = effectDrawer?.isInsideCanvas
|
|
5375
|
+
? this.#normalizeInsideCanvasResult(effectDrawer.isInsideCanvas(callbackData), "effect")
|
|
5376
|
+
: undefined;
|
|
5315
5377
|
if (shapeResult && effectResult) {
|
|
5316
5378
|
const margin = Math.max(shapeResult.margin ?? defaultAngle, effectResult.margin ?? defaultAngle);
|
|
5317
5379
|
return {
|
|
@@ -5377,8 +5439,8 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
5377
5439
|
}
|
|
5378
5440
|
|
|
5379
5441
|
class SpatialHashGrid {
|
|
5380
|
-
#cellSize;
|
|
5381
5442
|
#cells = new Map();
|
|
5443
|
+
#cellSize;
|
|
5382
5444
|
#circlePool = [];
|
|
5383
5445
|
#circlePoolIdx;
|
|
5384
5446
|
#pendingCellSize;
|
|
@@ -6036,8 +6098,8 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
6036
6098
|
particleCreatedPlugins;
|
|
6037
6099
|
particleDestroyedPlugins;
|
|
6038
6100
|
particlePositionPlugins;
|
|
6039
|
-
particleUpdaters;
|
|
6040
6101
|
particles;
|
|
6102
|
+
particleUpdaters;
|
|
6041
6103
|
peakNits;
|
|
6042
6104
|
plugins;
|
|
6043
6105
|
retina;
|
|
@@ -6331,6 +6393,7 @@ g.__tsParticlesInternals.presets = g.__tsParticlesInternals.presets || {};
|
|
|
6331
6393
|
refresh = plugin.updateActualOptions() || refresh;
|
|
6332
6394
|
}
|
|
6333
6395
|
}
|
|
6396
|
+
this.canvas.render.updateBackgroundElement();
|
|
6334
6397
|
return refresh;
|
|
6335
6398
|
}
|
|
6336
6399
|
#initPlugins(allContainerPlugins) {
|