@tsparticles/fireworks 4.1.3 → 4.2.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/browser/FireworkOptions.js +10 -28
- package/browser/FireworksInstance.js +11 -1
- package/browser/fireworks.js +2 -2
- package/browser/fireworks.lazy.js +2 -2
- package/browser/utils.js +8 -2
- package/cjs/FireworkOptions.js +10 -28
- package/cjs/FireworksInstance.js +11 -1
- package/cjs/fireworks.js +2 -2
- package/cjs/fireworks.lazy.js +2 -2
- package/cjs/utils.js +8 -2
- package/esm/FireworkOptions.js +10 -28
- package/esm/FireworksInstance.js +11 -1
- package/esm/fireworks.js +2 -2
- package/esm/fireworks.lazy.js +2 -2
- package/esm/utils.js +8 -2
- package/package.json +13 -13
- package/report.html +1 -1
- package/tsparticles.fireworks.bundle.js +1230 -1982
- package/tsparticles.fireworks.bundle.min.js +1 -1
- package/tsparticles.fireworks.js +30 -33
- package/tsparticles.fireworks.min.js +1 -1
- package/types/FireworksInstance.d.ts +3 -1
- package/types/utils.d.ts +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
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);g.tsparticlesInternalExports=g.tsparticlesInternalExports||{};})(typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:this);
|
|
2
|
-
/* tsParticles v4.
|
|
2
|
+
/* tsParticles v4.2.0 */
|
|
3
3
|
(function (global, factory) {
|
|
4
4
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
5
5
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
b: 0,
|
|
16
16
|
c: 0,
|
|
17
17
|
d: 1,
|
|
18
|
-
}, randomColorValue = "random", midColorValue = "mid", double = 2, doublePI = Math.PI * double, defaultFps = 60, defaultAlpha$1 = 1, generatedTrue = "true", generatedFalse = "false", canvasTag = "canvas", defaultRetryCount = 0, squareExp = 2, spatialHashGridCellSize = 100, defaultRemoveQuantity = 1, defaultRatio = 1, defaultReduceFactor = 1, inverseFactorNumerator = 1, rgbMax = 255, hMax = 360, sMax = 100, lMax = 100, hMin = 0, sMin = 0, hPhase = 60, empty = 0, quarter = 0.25, threeQuarter = half + quarter, minVelocity$
|
|
18
|
+
}, randomColorValue = "random", midColorValue = "mid", double = 2, doublePI = Math.PI * double, defaultFps = 60, defaultAlpha$1 = 1, generatedTrue = "true", generatedFalse = "false", canvasTag = "canvas", defaultRetryCount = 0, squareExp = 2, spatialHashGridCellSize = 100, defaultRemoveQuantity = 1, defaultRatio = 1, defaultReduceFactor = 1, inverseFactorNumerator = 1, rgbMax = 255, hMax = 360, sMax = 100, lMax = 100, hMin = 0, sMin = 0, hPhase = 60, empty = 0, quarter = 0.25, threeQuarter = half + quarter, minVelocity = 0, minDistance = 0, minRadius$1 = 0, defaultTransformValue = 1, minimumSize = 0, zIndexFactorOffset = 1, defaultOpacity$1 = 1, removeDeleteCount = 1, removeMinIndex = 0, defaultFpsLimit = 120, minFpsLimit = 0, canvasFirstIndex = 0, loadRandomFactor = 10000, loadMinIndex = 0, one = 1, none = 0, decayOffset = 1, tryCountIncrement = 1, minZ = 0, minLimit = 0, countOffset = 1, minCount = 0, minIndex = 0, lengthOffset = 1, defaultDensityFactor = 1, deleteCount = 1, defaultAngle = 0, identity$1 = 1, minStrokeWidth = 0, lFactor = 1, lMin = 0, maxNits = 400, triple = 3, sextuple = 6, sNormalizedOffset = 1, phaseNumerator = 1, defaultRgbMin = 0, defaultVelocity = 0, defaultLoops = 0, defaultTime = 0, defaultZoom = 1;
|
|
19
19
|
|
|
20
20
|
exports.MoveDirection = void 0;
|
|
21
21
|
(function (MoveDirection) {
|
|
@@ -82,11 +82,6 @@
|
|
|
82
82
|
div(n) {
|
|
83
83
|
return Vector3d.create(this.x / n, this.y / n, this.z / n);
|
|
84
84
|
}
|
|
85
|
-
divTo(n) {
|
|
86
|
-
this.x /= n;
|
|
87
|
-
this.y /= n;
|
|
88
|
-
this.z /= n;
|
|
89
|
-
}
|
|
90
85
|
getLengthSq() {
|
|
91
86
|
return this.x ** squareExp + this.y ** squareExp;
|
|
92
87
|
}
|
|
@@ -176,6 +171,9 @@
|
|
|
176
171
|
function setRandom(rnd = Math.random) {
|
|
177
172
|
_random = rnd;
|
|
178
173
|
}
|
|
174
|
+
function getRandomFn() {
|
|
175
|
+
return _random;
|
|
176
|
+
}
|
|
179
177
|
function getRandom() {
|
|
180
178
|
const min = 0, max = 1;
|
|
181
179
|
return clamp(_random(), min, max - Number.EPSILON);
|
|
@@ -311,13 +309,6 @@
|
|
|
311
309
|
y: position?.y ?? getRandom() * size.height,
|
|
312
310
|
};
|
|
313
311
|
}
|
|
314
|
-
function calcExactPositionOrRandomFromSizeRanged(data) {
|
|
315
|
-
const position = {
|
|
316
|
-
x: data.position?.x !== undefined ? getRangeValue(data.position.x) : undefined,
|
|
317
|
-
y: data.position?.y !== undefined ? getRangeValue(data.position.y) : undefined,
|
|
318
|
-
};
|
|
319
|
-
return calcExactPositionOrRandomFromSize({ size: data.size, position });
|
|
320
|
-
}
|
|
321
312
|
function parseAlpha(input) {
|
|
322
313
|
const defaultAlpha = 1;
|
|
323
314
|
if (!input) {
|
|
@@ -326,27 +317,6 @@
|
|
|
326
317
|
return input.endsWith("%") ? parseFloat(input) / percentDenominator : parseFloat(input);
|
|
327
318
|
}
|
|
328
319
|
|
|
329
|
-
exports.AnimationMode = void 0;
|
|
330
|
-
(function (AnimationMode) {
|
|
331
|
-
AnimationMode["auto"] = "auto";
|
|
332
|
-
AnimationMode["increase"] = "increase";
|
|
333
|
-
AnimationMode["decrease"] = "decrease";
|
|
334
|
-
AnimationMode["random"] = "random";
|
|
335
|
-
})(exports.AnimationMode || (exports.AnimationMode = {}));
|
|
336
|
-
|
|
337
|
-
exports.AnimationStatus = void 0;
|
|
338
|
-
(function (AnimationStatus) {
|
|
339
|
-
AnimationStatus["increasing"] = "increasing";
|
|
340
|
-
AnimationStatus["decreasing"] = "decreasing";
|
|
341
|
-
})(exports.AnimationStatus || (exports.AnimationStatus = {}));
|
|
342
|
-
|
|
343
|
-
exports.DestroyType = void 0;
|
|
344
|
-
(function (DestroyType) {
|
|
345
|
-
DestroyType["none"] = "none";
|
|
346
|
-
DestroyType["max"] = "max";
|
|
347
|
-
DestroyType["min"] = "min";
|
|
348
|
-
})(exports.DestroyType || (exports.DestroyType = {}));
|
|
349
|
-
|
|
350
320
|
exports.OutModeDirection = void 0;
|
|
351
321
|
(function (OutModeDirection) {
|
|
352
322
|
OutModeDirection["bottom"] = "bottom";
|
|
@@ -361,80 +331,7 @@
|
|
|
361
331
|
PixelMode["percent"] = "percent";
|
|
362
332
|
})(exports.PixelMode || (exports.PixelMode = {}));
|
|
363
333
|
|
|
364
|
-
|
|
365
|
-
(function (StartValueType) {
|
|
366
|
-
StartValueType["max"] = "max";
|
|
367
|
-
StartValueType["min"] = "min";
|
|
368
|
-
StartValueType["random"] = "random";
|
|
369
|
-
})(exports.StartValueType || (exports.StartValueType = {}));
|
|
370
|
-
|
|
371
|
-
const minRadius = 0, minMemoizeSize = 0;
|
|
372
|
-
function memoize(fn, options) {
|
|
373
|
-
const cache = new Map(), maxSize = options?.maxSize, ttlMs = options?.ttlMs, keyFn = options?.keyFn, stableStringify = (obj, seen = new WeakSet()) => {
|
|
374
|
-
if (obj === null) {
|
|
375
|
-
return "null";
|
|
376
|
-
}
|
|
377
|
-
const t = typeof obj;
|
|
378
|
-
if (t === "undefined") {
|
|
379
|
-
return "undefined";
|
|
380
|
-
}
|
|
381
|
-
if (t === "number" || t === "boolean" || t === "string") {
|
|
382
|
-
return JSON.stringify(obj);
|
|
383
|
-
}
|
|
384
|
-
if (t === "function") {
|
|
385
|
-
try {
|
|
386
|
-
const fn = obj;
|
|
387
|
-
return fn.toString();
|
|
388
|
-
}
|
|
389
|
-
catch {
|
|
390
|
-
return '"[Function]"';
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
if (t === "symbol") {
|
|
394
|
-
try {
|
|
395
|
-
return obj.toString();
|
|
396
|
-
}
|
|
397
|
-
catch {
|
|
398
|
-
return '"[Symbol]"';
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
if (Array.isArray(obj)) {
|
|
402
|
-
return `[${obj.map(i => stableStringify(i, seen)).join(",")}]`;
|
|
403
|
-
}
|
|
404
|
-
if (seen.has(obj)) {
|
|
405
|
-
return '"[Circular]"';
|
|
406
|
-
}
|
|
407
|
-
seen.add(obj);
|
|
408
|
-
const keys = Object.keys(obj).sort();
|
|
409
|
-
return `{${keys.map(k => `${JSON.stringify(k)}:${stableStringify(obj[k], seen)}`).join(",")}}`;
|
|
410
|
-
}, defaultKeyer = (args) => stableStringify(args), makeKey = (args) => (keyFn ? keyFn(args) : defaultKeyer(args)), ensureBounds = () => {
|
|
411
|
-
if (typeof maxSize === "number" && maxSize >= minMemoizeSize) {
|
|
412
|
-
while (cache.size > maxSize) {
|
|
413
|
-
const firstKey = cache.keys().next().value;
|
|
414
|
-
if (firstKey === undefined)
|
|
415
|
-
break;
|
|
416
|
-
cache.delete(firstKey);
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
};
|
|
420
|
-
return (...args) => {
|
|
421
|
-
const key = makeKey(args), now = Date.now(), entry = cache.get(key);
|
|
422
|
-
if (entry !== undefined) {
|
|
423
|
-
if (ttlMs && now - entry.ts > ttlMs) {
|
|
424
|
-
cache.delete(key);
|
|
425
|
-
}
|
|
426
|
-
else {
|
|
427
|
-
cache.delete(key);
|
|
428
|
-
cache.set(key, { value: entry.value, ts: entry.ts });
|
|
429
|
-
return entry.value;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
const result = fn(...args);
|
|
433
|
-
cache.set(key, { value: result, ts: now });
|
|
434
|
-
ensureBounds();
|
|
435
|
-
return result;
|
|
436
|
-
};
|
|
437
|
-
}
|
|
334
|
+
const minRadius = 0;
|
|
438
335
|
function hasMatchMedia() {
|
|
439
336
|
return typeof matchMedia !== "undefined";
|
|
440
337
|
}
|
|
@@ -447,12 +344,6 @@
|
|
|
447
344
|
}
|
|
448
345
|
return matchMedia(query);
|
|
449
346
|
}
|
|
450
|
-
function safeIntersectionObserver(callback) {
|
|
451
|
-
if (typeof IntersectionObserver === "undefined") {
|
|
452
|
-
return;
|
|
453
|
-
}
|
|
454
|
-
return new IntersectionObserver(callback);
|
|
455
|
-
}
|
|
456
347
|
function safeMutationObserver(callback) {
|
|
457
348
|
if (typeof MutationObserver === "undefined") {
|
|
458
349
|
return;
|
|
@@ -462,11 +353,8 @@
|
|
|
462
353
|
function isInArray(value, array) {
|
|
463
354
|
return value === array || (isArray(array) && array.includes(value));
|
|
464
355
|
}
|
|
465
|
-
function arrayRandomIndex(array) {
|
|
466
|
-
return Math.floor(getRandom() * array.length);
|
|
467
|
-
}
|
|
468
356
|
function itemFromArray(array, index, useIndex = true) {
|
|
469
|
-
return array[index !== undefined && useIndex ? index % array.length :
|
|
357
|
+
return array[index !== undefined && useIndex ? index % array.length : Math.floor(getRandom() * array.length)];
|
|
470
358
|
}
|
|
471
359
|
function isPointInside(point, size, offset, radius, direction) {
|
|
472
360
|
return areBoundsInside(calculateBounds(point, radius ?? minRadius), size, offset, direction);
|
|
@@ -570,63 +458,6 @@
|
|
|
570
458
|
function itemFromSingleOrMultiple(obj, index, useIndex) {
|
|
571
459
|
return isArray(obj) ? itemFromArray(obj, index, useIndex) : obj;
|
|
572
460
|
}
|
|
573
|
-
function findItemFromSingleOrMultiple(obj, callback) {
|
|
574
|
-
if (isArray(obj)) {
|
|
575
|
-
return obj.find((t, index) => callback(t, index));
|
|
576
|
-
}
|
|
577
|
-
const defaultIndex = 0;
|
|
578
|
-
return callback(obj, defaultIndex) ? obj : undefined;
|
|
579
|
-
}
|
|
580
|
-
function initParticleNumericAnimationValue(options, pxRatio) {
|
|
581
|
-
const valueRange = options.value, animationOptions = options.animation, res = {
|
|
582
|
-
delayTime: getRangeValue(animationOptions.delay) * millisecondsToSeconds,
|
|
583
|
-
enable: animationOptions.enable,
|
|
584
|
-
value: getRangeValue(options.value) * pxRatio,
|
|
585
|
-
max: getRangeMax(valueRange) * pxRatio,
|
|
586
|
-
min: getRangeMin(valueRange) * pxRatio,
|
|
587
|
-
loops: 0,
|
|
588
|
-
maxLoops: getRangeValue(animationOptions.count),
|
|
589
|
-
time: 0,
|
|
590
|
-
}, decayOffset = 1;
|
|
591
|
-
if (animationOptions.enable) {
|
|
592
|
-
res.decay = decayOffset - getRangeValue(animationOptions.decay);
|
|
593
|
-
switch (animationOptions.mode) {
|
|
594
|
-
case exports.AnimationMode.increase:
|
|
595
|
-
res.status = exports.AnimationStatus.increasing;
|
|
596
|
-
break;
|
|
597
|
-
case exports.AnimationMode.decrease:
|
|
598
|
-
res.status = exports.AnimationStatus.decreasing;
|
|
599
|
-
break;
|
|
600
|
-
case exports.AnimationMode.random:
|
|
601
|
-
res.status = getRandom() >= half ? exports.AnimationStatus.increasing : exports.AnimationStatus.decreasing;
|
|
602
|
-
break;
|
|
603
|
-
}
|
|
604
|
-
const autoStatus = animationOptions.mode === exports.AnimationMode.auto;
|
|
605
|
-
switch (animationOptions.startValue) {
|
|
606
|
-
case exports.StartValueType.min:
|
|
607
|
-
res.value = res.min;
|
|
608
|
-
if (autoStatus) {
|
|
609
|
-
res.status = exports.AnimationStatus.increasing;
|
|
610
|
-
}
|
|
611
|
-
break;
|
|
612
|
-
case exports.StartValueType.max:
|
|
613
|
-
res.value = res.max;
|
|
614
|
-
if (autoStatus) {
|
|
615
|
-
res.status = exports.AnimationStatus.decreasing;
|
|
616
|
-
}
|
|
617
|
-
break;
|
|
618
|
-
case exports.StartValueType.random:
|
|
619
|
-
default:
|
|
620
|
-
res.value = randomInRangeValue(res);
|
|
621
|
-
if (autoStatus) {
|
|
622
|
-
res.status = getRandom() >= half ? exports.AnimationStatus.increasing : exports.AnimationStatus.decreasing;
|
|
623
|
-
}
|
|
624
|
-
break;
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
res.initialValue = res.value;
|
|
628
|
-
return res;
|
|
629
|
-
}
|
|
630
461
|
function getPositionOrSize(positionOrSize, canvasSize) {
|
|
631
462
|
const isPercent = positionOrSize.mode === exports.PixelMode.percent;
|
|
632
463
|
if (!isPercent) {
|
|
@@ -650,80 +481,6 @@
|
|
|
650
481
|
function getPosition(position, canvasSize) {
|
|
651
482
|
return getPositionOrSize(position, canvasSize);
|
|
652
483
|
}
|
|
653
|
-
function getSize(size, canvasSize) {
|
|
654
|
-
return getPositionOrSize(size, canvasSize);
|
|
655
|
-
}
|
|
656
|
-
function checkDestroy(particle, destroyType, value, minValue, maxValue) {
|
|
657
|
-
switch (destroyType) {
|
|
658
|
-
case exports.DestroyType.max:
|
|
659
|
-
if (value >= maxValue) {
|
|
660
|
-
particle.destroy();
|
|
661
|
-
}
|
|
662
|
-
break;
|
|
663
|
-
case exports.DestroyType.min:
|
|
664
|
-
if (value <= minValue) {
|
|
665
|
-
particle.destroy();
|
|
666
|
-
}
|
|
667
|
-
break;
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
function updateAnimation(particle, data, changeDirection, destroyType, delta) {
|
|
671
|
-
const minLoops = 0, minDelay = 0, identity = 1, minVelocity = 0, minDecay = 1;
|
|
672
|
-
if (particle.destroyed ||
|
|
673
|
-
!data.enable ||
|
|
674
|
-
((data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops))) {
|
|
675
|
-
return;
|
|
676
|
-
}
|
|
677
|
-
const velocity = (data.velocity ?? minVelocity) * delta.factor, minValue = data.min, maxValue = data.max, decay = data.decay ?? minDecay;
|
|
678
|
-
data.time ??= 0;
|
|
679
|
-
if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {
|
|
680
|
-
data.time += delta.value;
|
|
681
|
-
}
|
|
682
|
-
if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {
|
|
683
|
-
return;
|
|
684
|
-
}
|
|
685
|
-
switch (data.status) {
|
|
686
|
-
case exports.AnimationStatus.increasing:
|
|
687
|
-
data.value += velocity;
|
|
688
|
-
break;
|
|
689
|
-
case exports.AnimationStatus.decreasing:
|
|
690
|
-
data.value -= velocity;
|
|
691
|
-
break;
|
|
692
|
-
}
|
|
693
|
-
if (data.velocity && decay !== identity) {
|
|
694
|
-
data.velocity *= decay;
|
|
695
|
-
}
|
|
696
|
-
switch (data.status) {
|
|
697
|
-
case exports.AnimationStatus.increasing:
|
|
698
|
-
if (data.value >= maxValue) {
|
|
699
|
-
if (changeDirection) {
|
|
700
|
-
data.status = exports.AnimationStatus.decreasing;
|
|
701
|
-
}
|
|
702
|
-
else {
|
|
703
|
-
data.value -= maxValue;
|
|
704
|
-
}
|
|
705
|
-
data.loops ??= minLoops;
|
|
706
|
-
data.loops++;
|
|
707
|
-
}
|
|
708
|
-
break;
|
|
709
|
-
case exports.AnimationStatus.decreasing:
|
|
710
|
-
if (data.value <= minValue) {
|
|
711
|
-
if (changeDirection) {
|
|
712
|
-
data.status = exports.AnimationStatus.increasing;
|
|
713
|
-
}
|
|
714
|
-
else {
|
|
715
|
-
data.value += maxValue;
|
|
716
|
-
}
|
|
717
|
-
data.loops ??= minLoops;
|
|
718
|
-
data.loops++;
|
|
719
|
-
}
|
|
720
|
-
break;
|
|
721
|
-
}
|
|
722
|
-
checkDestroy(particle, destroyType, data.value, minValue, maxValue);
|
|
723
|
-
if (!particle.destroyed) {
|
|
724
|
-
data.value = clamp(data.value, minValue, maxValue);
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
484
|
function cloneStyle(style) {
|
|
728
485
|
const clonedStyle = safeDocument().createElement("div").style;
|
|
729
486
|
for (const key in style) {
|
|
@@ -745,30 +502,34 @@
|
|
|
745
502
|
}
|
|
746
503
|
return clonedStyle;
|
|
747
504
|
}
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
505
|
+
let _cachedZIndex, _cachedStyle;
|
|
506
|
+
function getFullScreenStyle(zIndex) {
|
|
507
|
+
if (_cachedZIndex !== zIndex || !_cachedStyle) {
|
|
508
|
+
_cachedZIndex = zIndex;
|
|
509
|
+
const fullScreenStyle = safeDocument().createElement("div").style, radix = 10, style = {
|
|
510
|
+
width: "100%",
|
|
511
|
+
height: "100%",
|
|
512
|
+
margin: "0",
|
|
513
|
+
padding: "0",
|
|
514
|
+
borderWidth: "0",
|
|
515
|
+
position: "fixed",
|
|
516
|
+
zIndex: zIndex.toString(radix),
|
|
517
|
+
"z-index": zIndex.toString(radix),
|
|
518
|
+
top: "0",
|
|
519
|
+
left: "0",
|
|
520
|
+
"pointer-events": "none",
|
|
521
|
+
};
|
|
522
|
+
for (const key in style) {
|
|
523
|
+
const value = style[key];
|
|
524
|
+
if (value === undefined) {
|
|
525
|
+
continue;
|
|
526
|
+
}
|
|
527
|
+
fullScreenStyle.setProperty(key, value);
|
|
766
528
|
}
|
|
767
|
-
fullScreenStyle
|
|
529
|
+
_cachedStyle = fullScreenStyle;
|
|
768
530
|
}
|
|
769
|
-
return
|
|
531
|
+
return _cachedStyle;
|
|
770
532
|
}
|
|
771
|
-
const getFullScreenStyle = memoize(computeFullScreenStyle);
|
|
772
533
|
function manageListener(element, event, handler, add, options) {
|
|
773
534
|
if (add) {
|
|
774
535
|
let addOptions = { passive: true };
|
|
@@ -1118,7 +879,7 @@
|
|
|
1118
879
|
return this.#domArray;
|
|
1119
880
|
}
|
|
1120
881
|
get version() {
|
|
1121
|
-
return "4.
|
|
882
|
+
return "4.2.0";
|
|
1122
883
|
}
|
|
1123
884
|
addEventListener(type, listener) {
|
|
1124
885
|
this.#eventDispatcher.addEventListener(type, listener);
|
|
@@ -1288,6 +1049,14 @@
|
|
|
1288
1049
|
RotateDirection["random"] = "random";
|
|
1289
1050
|
})(exports.RotateDirection || (exports.RotateDirection = {}));
|
|
1290
1051
|
|
|
1052
|
+
exports.AnimationMode = void 0;
|
|
1053
|
+
(function (AnimationMode) {
|
|
1054
|
+
AnimationMode["auto"] = "auto";
|
|
1055
|
+
AnimationMode["increase"] = "increase";
|
|
1056
|
+
AnimationMode["decrease"] = "decrease";
|
|
1057
|
+
AnimationMode["random"] = "random";
|
|
1058
|
+
})(exports.AnimationMode || (exports.AnimationMode = {}));
|
|
1059
|
+
|
|
1291
1060
|
exports.LimitMode = void 0;
|
|
1292
1061
|
(function (LimitMode) {
|
|
1293
1062
|
LimitMode["delete"] = "delete";
|
|
@@ -1309,6 +1078,13 @@
|
|
|
1309
1078
|
AlterType["enlighten"] = "enlighten";
|
|
1310
1079
|
})(exports.AlterType || (exports.AlterType = {}));
|
|
1311
1080
|
|
|
1081
|
+
exports.DestroyType = void 0;
|
|
1082
|
+
(function (DestroyType) {
|
|
1083
|
+
DestroyType["none"] = "none";
|
|
1084
|
+
DestroyType["max"] = "max";
|
|
1085
|
+
DestroyType["min"] = "min";
|
|
1086
|
+
})(exports.DestroyType || (exports.DestroyType = {}));
|
|
1087
|
+
|
|
1312
1088
|
exports.GradientType = void 0;
|
|
1313
1089
|
(function (GradientType) {
|
|
1314
1090
|
GradientType["linear"] = "linear";
|
|
@@ -1323,160 +1099,126 @@
|
|
|
1323
1099
|
ParticleOutType["outside"] = "outside";
|
|
1324
1100
|
})(exports.ParticleOutType || (exports.ParticleOutType = {}));
|
|
1325
1101
|
|
|
1326
|
-
exports.
|
|
1327
|
-
(function (
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
EasingType["easeInSine"] = "ease-in-sine";
|
|
1341
|
-
EasingType["easeInSmoothstep"] = "ease-in-smoothstep";
|
|
1342
|
-
EasingType["easeOutBack"] = "ease-out-back";
|
|
1343
|
-
EasingType["easeOutBounce"] = "ease-out-bounce";
|
|
1344
|
-
EasingType["easeOutCirc"] = "ease-out-circ";
|
|
1345
|
-
EasingType["easeOutCubic"] = "ease-out-cubic";
|
|
1346
|
-
EasingType["easeOutElastic"] = "ease-out-elastic";
|
|
1347
|
-
EasingType["easeOutExpo"] = "ease-out-expo";
|
|
1348
|
-
EasingType["easeOutGaussian"] = "ease-out-gaussian";
|
|
1349
|
-
EasingType["easeOutLinear"] = "ease-out-linear";
|
|
1350
|
-
EasingType["easeOutQuad"] = "ease-out-quad";
|
|
1351
|
-
EasingType["easeOutQuart"] = "ease-out-quart";
|
|
1352
|
-
EasingType["easeOutQuint"] = "ease-out-quint";
|
|
1353
|
-
EasingType["easeOutSigmoid"] = "ease-out-sigmoid";
|
|
1354
|
-
EasingType["easeOutSine"] = "ease-out-sine";
|
|
1355
|
-
EasingType["easeOutSmoothstep"] = "ease-out-smoothstep";
|
|
1356
|
-
EasingType["easeInOutBack"] = "ease-in-out-back";
|
|
1357
|
-
EasingType["easeInOutBounce"] = "ease-in-out-bounce";
|
|
1358
|
-
EasingType["easeInOutCirc"] = "ease-in-out-circ";
|
|
1359
|
-
EasingType["easeInOutCubic"] = "ease-in-out-cubic";
|
|
1360
|
-
EasingType["easeInOutElastic"] = "ease-in-out-elastic";
|
|
1361
|
-
EasingType["easeInOutExpo"] = "ease-in-out-expo";
|
|
1362
|
-
EasingType["easeInOutGaussian"] = "ease-in-out-gaussian";
|
|
1363
|
-
EasingType["easeInOutLinear"] = "ease-in-out-linear";
|
|
1364
|
-
EasingType["easeInOutQuad"] = "ease-in-out-quad";
|
|
1365
|
-
EasingType["easeInOutQuart"] = "ease-in-out-quart";
|
|
1366
|
-
EasingType["easeInOutQuint"] = "ease-in-out-quint";
|
|
1367
|
-
EasingType["easeInOutSigmoid"] = "ease-in-out-sigmoid";
|
|
1368
|
-
EasingType["easeInOutSine"] = "ease-in-out-sine";
|
|
1369
|
-
EasingType["easeInOutSmoothstep"] = "ease-in-out-smoothstep";
|
|
1370
|
-
})(exports.EasingType || (exports.EasingType = {}));
|
|
1371
|
-
|
|
1372
|
-
class AnimationOptions {
|
|
1373
|
-
count;
|
|
1374
|
-
decay;
|
|
1375
|
-
delay;
|
|
1376
|
-
enable;
|
|
1377
|
-
speed;
|
|
1378
|
-
sync;
|
|
1379
|
-
constructor() {
|
|
1380
|
-
this.count = 0;
|
|
1381
|
-
this.enable = false;
|
|
1382
|
-
this.speed = 1;
|
|
1383
|
-
this.decay = 0;
|
|
1384
|
-
this.delay = 0;
|
|
1385
|
-
this.sync = false;
|
|
1386
|
-
}
|
|
1102
|
+
exports.StartValueType = void 0;
|
|
1103
|
+
(function (StartValueType) {
|
|
1104
|
+
StartValueType["max"] = "max";
|
|
1105
|
+
StartValueType["min"] = "min";
|
|
1106
|
+
StartValueType["random"] = "random";
|
|
1107
|
+
})(exports.StartValueType || (exports.StartValueType = {}));
|
|
1108
|
+
|
|
1109
|
+
exports.AnimationStatus = void 0;
|
|
1110
|
+
(function (AnimationStatus) {
|
|
1111
|
+
AnimationStatus["increasing"] = "increasing";
|
|
1112
|
+
AnimationStatus["decreasing"] = "decreasing";
|
|
1113
|
+
})(exports.AnimationStatus || (exports.AnimationStatus = {}));
|
|
1114
|
+
|
|
1115
|
+
class OptionLoader {
|
|
1387
1116
|
load(data) {
|
|
1388
1117
|
if (isNull(data)) {
|
|
1389
1118
|
return;
|
|
1390
1119
|
}
|
|
1391
|
-
|
|
1392
|
-
this.count = setRangeValue(data.count);
|
|
1393
|
-
}
|
|
1394
|
-
if (data.enable !== undefined) {
|
|
1395
|
-
this.enable = data.enable;
|
|
1396
|
-
}
|
|
1397
|
-
if (data.speed !== undefined) {
|
|
1398
|
-
this.speed = setRangeValue(data.speed);
|
|
1399
|
-
}
|
|
1400
|
-
if (data.decay !== undefined) {
|
|
1401
|
-
this.decay = setRangeValue(data.decay);
|
|
1402
|
-
}
|
|
1403
|
-
if (data.delay !== undefined) {
|
|
1404
|
-
this.delay = setRangeValue(data.delay);
|
|
1405
|
-
}
|
|
1406
|
-
if (data.sync !== undefined) {
|
|
1407
|
-
this.sync = data.sync;
|
|
1408
|
-
}
|
|
1120
|
+
this.doLoad(data);
|
|
1409
1121
|
}
|
|
1410
1122
|
}
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
constructor() {
|
|
1415
|
-
super();
|
|
1416
|
-
this.mode = exports.AnimationMode.auto;
|
|
1417
|
-
this.startValue = exports.StartValueType.random;
|
|
1418
|
-
}
|
|
1419
|
-
load(data) {
|
|
1420
|
-
super.load(data);
|
|
1421
|
-
if (isNull(data)) {
|
|
1422
|
-
return;
|
|
1423
|
-
}
|
|
1424
|
-
if (data.mode !== undefined) {
|
|
1425
|
-
this.mode = data.mode;
|
|
1426
|
-
}
|
|
1427
|
-
if (data.startValue !== undefined) {
|
|
1428
|
-
this.startValue = data.startValue;
|
|
1429
|
-
}
|
|
1123
|
+
function loadOptions(options, ...sourceOptionsArr) {
|
|
1124
|
+
for (const sourceOptions of sourceOptionsArr) {
|
|
1125
|
+
options.load(sourceOptions);
|
|
1430
1126
|
}
|
|
1431
1127
|
}
|
|
1432
1128
|
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
offset;
|
|
1437
|
-
constructor(min, max) {
|
|
1438
|
-
super();
|
|
1439
|
-
this.min = min;
|
|
1440
|
-
this.max = max;
|
|
1441
|
-
this.offset = 0;
|
|
1442
|
-
this.sync = true;
|
|
1129
|
+
function loadProperty(obj, key, value) {
|
|
1130
|
+
if (value !== undefined) {
|
|
1131
|
+
obj[key] = value;
|
|
1443
1132
|
}
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1133
|
+
}
|
|
1134
|
+
function loadRangeProperty(obj, key, value) {
|
|
1135
|
+
if (value !== undefined) {
|
|
1136
|
+
obj[key] = setRangeValue(value);
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
function loadNestedProperty(obj, key, value) {
|
|
1140
|
+
if (value !== undefined) {
|
|
1141
|
+
obj[key].load(value);
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
function loadLazyProperty(obj, key, value, factory) {
|
|
1145
|
+
if (value !== undefined) {
|
|
1146
|
+
const objRecord = obj;
|
|
1147
|
+
objRecord[key] ??= factory();
|
|
1148
|
+
objRecord[key].load(value);
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
function loadExtendProperty(obj, key, value) {
|
|
1152
|
+
if (value !== undefined) {
|
|
1153
|
+
obj[key] = deepExtend(obj[key] ?? {}, value);
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
function loadOptionProperty(obj, key, optionClass, ...sources) {
|
|
1157
|
+
const objRecord = obj;
|
|
1158
|
+
objRecord[key] ??= new optionClass();
|
|
1159
|
+
const target = objRecord[key];
|
|
1160
|
+
for (const source of sources) {
|
|
1161
|
+
target.load(source?.[key]);
|
|
1458
1162
|
}
|
|
1459
1163
|
}
|
|
1460
1164
|
|
|
1461
|
-
class
|
|
1165
|
+
class AnimationOptions extends OptionLoader {
|
|
1166
|
+
count = 0;
|
|
1167
|
+
decay = 0;
|
|
1168
|
+
delay = 0;
|
|
1169
|
+
enable = false;
|
|
1170
|
+
speed = 1;
|
|
1171
|
+
sync = false;
|
|
1172
|
+
doLoad(data) {
|
|
1173
|
+
loadRangeProperty(this, "count", data.count);
|
|
1174
|
+
loadProperty(this, "enable", data.enable);
|
|
1175
|
+
loadRangeProperty(this, "speed", data.speed);
|
|
1176
|
+
loadRangeProperty(this, "decay", data.decay);
|
|
1177
|
+
loadRangeProperty(this, "delay", data.delay);
|
|
1178
|
+
loadProperty(this, "sync", data.sync);
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
class RangedAnimationOptions extends AnimationOptions {
|
|
1182
|
+
mode = exports.AnimationMode.auto;
|
|
1183
|
+
startValue = exports.StartValueType.random;
|
|
1184
|
+
doLoad(data) {
|
|
1185
|
+
super.doLoad(data);
|
|
1186
|
+
loadProperty(this, "mode", data.mode);
|
|
1187
|
+
loadProperty(this, "startValue", data.startValue);
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
class ColorAnimation extends AnimationOptions {
|
|
1192
|
+
max;
|
|
1193
|
+
min;
|
|
1194
|
+
offset = 0;
|
|
1195
|
+
sync = true;
|
|
1196
|
+
constructor(min, max) {
|
|
1197
|
+
super();
|
|
1198
|
+
this.min = min;
|
|
1199
|
+
this.max = max;
|
|
1200
|
+
}
|
|
1201
|
+
doLoad(data) {
|
|
1202
|
+
super.doLoad(data);
|
|
1203
|
+
loadProperty(this, "max", data.max);
|
|
1204
|
+
loadProperty(this, "min", data.min);
|
|
1205
|
+
loadRangeProperty(this, "offset", data.offset);
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
class HslAnimation extends OptionLoader {
|
|
1462
1210
|
h = new ColorAnimation(hMin, hMax);
|
|
1463
1211
|
l = new ColorAnimation(lMin, lMax);
|
|
1464
1212
|
s = new ColorAnimation(sMin, sMax);
|
|
1465
|
-
|
|
1466
|
-
if (isNull(data)) {
|
|
1467
|
-
return;
|
|
1468
|
-
}
|
|
1213
|
+
doLoad(data) {
|
|
1469
1214
|
this.h.load(data.h);
|
|
1470
1215
|
this.s.load(data.s);
|
|
1471
1216
|
this.l.load(data.l);
|
|
1472
1217
|
}
|
|
1473
1218
|
}
|
|
1474
1219
|
|
|
1475
|
-
class OptionsColor {
|
|
1476
|
-
value;
|
|
1477
|
-
constructor() {
|
|
1478
|
-
this.value = "";
|
|
1479
|
-
}
|
|
1220
|
+
class OptionsColor extends OptionLoader {
|
|
1221
|
+
value = "";
|
|
1480
1222
|
static create(source, data) {
|
|
1481
1223
|
const color = new OptionsColor();
|
|
1482
1224
|
color.load(source);
|
|
@@ -1490,10 +1232,7 @@
|
|
|
1490
1232
|
}
|
|
1491
1233
|
return color;
|
|
1492
1234
|
}
|
|
1493
|
-
|
|
1494
|
-
if (isNull(data)) {
|
|
1495
|
-
return;
|
|
1496
|
-
}
|
|
1235
|
+
doLoad(data) {
|
|
1497
1236
|
if (!isNull(data.value)) {
|
|
1498
1237
|
this.value = data.value;
|
|
1499
1238
|
}
|
|
@@ -1501,11 +1240,7 @@
|
|
|
1501
1240
|
}
|
|
1502
1241
|
|
|
1503
1242
|
class AnimatableColor extends OptionsColor {
|
|
1504
|
-
animation;
|
|
1505
|
-
constructor() {
|
|
1506
|
-
super();
|
|
1507
|
-
this.animation = new HslAnimation();
|
|
1508
|
-
}
|
|
1243
|
+
animation = new HslAnimation();
|
|
1509
1244
|
static create(source, data) {
|
|
1510
1245
|
const color = new AnimatableColor();
|
|
1511
1246
|
color.load(source);
|
|
@@ -1519,11 +1254,8 @@
|
|
|
1519
1254
|
}
|
|
1520
1255
|
return color;
|
|
1521
1256
|
}
|
|
1522
|
-
|
|
1523
|
-
super.
|
|
1524
|
-
if (isNull(data)) {
|
|
1525
|
-
return;
|
|
1526
|
-
}
|
|
1257
|
+
doLoad(data) {
|
|
1258
|
+
super.doLoad(data);
|
|
1527
1259
|
const colorAnimation = data.animation;
|
|
1528
1260
|
if (colorAnimation !== undefined) {
|
|
1529
1261
|
if (colorAnimation.enable === undefined) {
|
|
@@ -1536,100 +1268,53 @@
|
|
|
1536
1268
|
}
|
|
1537
1269
|
}
|
|
1538
1270
|
|
|
1539
|
-
class Background {
|
|
1271
|
+
class Background extends OptionLoader {
|
|
1540
1272
|
color;
|
|
1541
|
-
image;
|
|
1542
|
-
opacity;
|
|
1543
|
-
position;
|
|
1544
|
-
repeat;
|
|
1545
|
-
size;
|
|
1273
|
+
image = "";
|
|
1274
|
+
opacity = 1;
|
|
1275
|
+
position = "";
|
|
1276
|
+
repeat = "";
|
|
1277
|
+
size = "";
|
|
1546
1278
|
constructor() {
|
|
1279
|
+
super();
|
|
1547
1280
|
this.color = new OptionsColor();
|
|
1548
1281
|
this.color.value = "";
|
|
1549
|
-
this.image = "";
|
|
1550
|
-
this.position = "";
|
|
1551
|
-
this.repeat = "";
|
|
1552
|
-
this.size = "";
|
|
1553
|
-
this.opacity = 1;
|
|
1554
1282
|
}
|
|
1555
|
-
|
|
1556
|
-
if (isNull(data)) {
|
|
1557
|
-
return;
|
|
1558
|
-
}
|
|
1283
|
+
doLoad(data) {
|
|
1559
1284
|
if (data.color !== undefined) {
|
|
1560
1285
|
this.color = OptionsColor.create(this.color, data.color);
|
|
1561
1286
|
}
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
}
|
|
1568
|
-
if (data.repeat !== undefined) {
|
|
1569
|
-
this.repeat = data.repeat;
|
|
1570
|
-
}
|
|
1571
|
-
if (data.size !== undefined) {
|
|
1572
|
-
this.size = data.size;
|
|
1573
|
-
}
|
|
1574
|
-
if (data.opacity !== undefined) {
|
|
1575
|
-
this.opacity = data.opacity;
|
|
1576
|
-
}
|
|
1287
|
+
loadProperty(this, "image", data.image);
|
|
1288
|
+
loadProperty(this, "position", data.position);
|
|
1289
|
+
loadProperty(this, "repeat", data.repeat);
|
|
1290
|
+
loadProperty(this, "size", data.size);
|
|
1291
|
+
loadProperty(this, "opacity", data.opacity);
|
|
1577
1292
|
}
|
|
1578
1293
|
}
|
|
1579
1294
|
|
|
1580
|
-
class FullScreen {
|
|
1581
|
-
enable;
|
|
1582
|
-
zIndex;
|
|
1583
|
-
|
|
1584
|
-
this.enable
|
|
1585
|
-
this.zIndex
|
|
1586
|
-
}
|
|
1587
|
-
load(data) {
|
|
1588
|
-
if (isNull(data)) {
|
|
1589
|
-
return;
|
|
1590
|
-
}
|
|
1591
|
-
if (data.enable !== undefined) {
|
|
1592
|
-
this.enable = data.enable;
|
|
1593
|
-
}
|
|
1594
|
-
if (data.zIndex !== undefined) {
|
|
1595
|
-
this.zIndex = data.zIndex;
|
|
1596
|
-
}
|
|
1295
|
+
class FullScreen extends OptionLoader {
|
|
1296
|
+
enable = true;
|
|
1297
|
+
zIndex = 0;
|
|
1298
|
+
doLoad(data) {
|
|
1299
|
+
loadProperty(this, "enable", data.enable);
|
|
1300
|
+
loadProperty(this, "zIndex", data.zIndex);
|
|
1597
1301
|
}
|
|
1598
1302
|
}
|
|
1599
1303
|
|
|
1600
|
-
class ResizeEvent {
|
|
1601
|
-
delay;
|
|
1602
|
-
enable;
|
|
1603
|
-
|
|
1604
|
-
this
|
|
1605
|
-
this.enable
|
|
1606
|
-
}
|
|
1607
|
-
load(data) {
|
|
1608
|
-
if (isNull(data)) {
|
|
1609
|
-
return;
|
|
1610
|
-
}
|
|
1611
|
-
if (data.delay !== undefined) {
|
|
1612
|
-
this.delay = data.delay;
|
|
1613
|
-
}
|
|
1614
|
-
if (data.enable !== undefined) {
|
|
1615
|
-
this.enable = data.enable;
|
|
1616
|
-
}
|
|
1304
|
+
class ResizeEvent extends OptionLoader {
|
|
1305
|
+
delay = 0.5;
|
|
1306
|
+
enable = true;
|
|
1307
|
+
doLoad(data) {
|
|
1308
|
+
loadProperty(this, "delay", data.delay);
|
|
1309
|
+
loadProperty(this, "enable", data.enable);
|
|
1617
1310
|
}
|
|
1618
1311
|
}
|
|
1619
1312
|
|
|
1620
|
-
class Effect {
|
|
1621
|
-
close;
|
|
1622
|
-
options;
|
|
1623
|
-
type;
|
|
1624
|
-
|
|
1625
|
-
this.close = true;
|
|
1626
|
-
this.options = {};
|
|
1627
|
-
this.type = [];
|
|
1628
|
-
}
|
|
1629
|
-
load(data) {
|
|
1630
|
-
if (isNull(data)) {
|
|
1631
|
-
return;
|
|
1632
|
-
}
|
|
1313
|
+
class Effect extends OptionLoader {
|
|
1314
|
+
close = true;
|
|
1315
|
+
options = {};
|
|
1316
|
+
type = [];
|
|
1317
|
+
doLoad(data) {
|
|
1633
1318
|
const options = data.options;
|
|
1634
1319
|
if (options !== undefined) {
|
|
1635
1320
|
for (const effect in options) {
|
|
@@ -1639,128 +1324,62 @@
|
|
|
1639
1324
|
}
|
|
1640
1325
|
}
|
|
1641
1326
|
}
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
}
|
|
1645
|
-
if (data.type !== undefined) {
|
|
1646
|
-
this.type = data.type;
|
|
1647
|
-
}
|
|
1327
|
+
loadProperty(this, "close", data.close);
|
|
1328
|
+
loadProperty(this, "type", data.type);
|
|
1648
1329
|
}
|
|
1649
1330
|
}
|
|
1650
1331
|
|
|
1651
|
-
class Fill {
|
|
1332
|
+
class Fill extends OptionLoader {
|
|
1652
1333
|
color;
|
|
1653
|
-
enable;
|
|
1654
|
-
opacity;
|
|
1655
|
-
|
|
1656
|
-
this.enable = true;
|
|
1657
|
-
this.opacity = 1;
|
|
1658
|
-
}
|
|
1659
|
-
load(data) {
|
|
1660
|
-
if (isNull(data)) {
|
|
1661
|
-
return;
|
|
1662
|
-
}
|
|
1334
|
+
enable = true;
|
|
1335
|
+
opacity = 1;
|
|
1336
|
+
doLoad(data) {
|
|
1663
1337
|
if (data.color !== undefined) {
|
|
1664
1338
|
this.color = AnimatableColor.create(this.color, data.color);
|
|
1665
1339
|
}
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
}
|
|
1669
|
-
if (data.opacity !== undefined) {
|
|
1670
|
-
this.opacity = setRangeValue(data.opacity);
|
|
1671
|
-
}
|
|
1340
|
+
loadProperty(this, "enable", data.enable);
|
|
1341
|
+
loadRangeProperty(this, "opacity", data.opacity);
|
|
1672
1342
|
}
|
|
1673
1343
|
}
|
|
1674
1344
|
|
|
1675
|
-
class MoveAngle {
|
|
1676
|
-
offset;
|
|
1677
|
-
value;
|
|
1678
|
-
|
|
1679
|
-
this.offset
|
|
1680
|
-
this.value
|
|
1681
|
-
}
|
|
1682
|
-
load(data) {
|
|
1683
|
-
if (isNull(data)) {
|
|
1684
|
-
return;
|
|
1685
|
-
}
|
|
1686
|
-
if (data.offset !== undefined) {
|
|
1687
|
-
this.offset = setRangeValue(data.offset);
|
|
1688
|
-
}
|
|
1689
|
-
if (data.value !== undefined) {
|
|
1690
|
-
this.value = setRangeValue(data.value);
|
|
1691
|
-
}
|
|
1345
|
+
class MoveAngle extends OptionLoader {
|
|
1346
|
+
offset = 0;
|
|
1347
|
+
value = 90;
|
|
1348
|
+
doLoad(data) {
|
|
1349
|
+
loadRangeProperty(this, "offset", data.offset);
|
|
1350
|
+
loadRangeProperty(this, "value", data.value);
|
|
1692
1351
|
}
|
|
1693
1352
|
}
|
|
1694
1353
|
|
|
1695
|
-
class MoveCenter {
|
|
1696
|
-
mode;
|
|
1697
|
-
radius;
|
|
1698
|
-
x;
|
|
1699
|
-
y;
|
|
1700
|
-
|
|
1701
|
-
this.x
|
|
1702
|
-
this.y
|
|
1703
|
-
this
|
|
1704
|
-
this.radius
|
|
1705
|
-
}
|
|
1706
|
-
load(data) {
|
|
1707
|
-
if (isNull(data)) {
|
|
1708
|
-
return;
|
|
1709
|
-
}
|
|
1710
|
-
if (data.x !== undefined) {
|
|
1711
|
-
this.x = data.x;
|
|
1712
|
-
}
|
|
1713
|
-
if (data.y !== undefined) {
|
|
1714
|
-
this.y = data.y;
|
|
1715
|
-
}
|
|
1716
|
-
if (data.mode !== undefined) {
|
|
1717
|
-
this.mode = data.mode;
|
|
1718
|
-
}
|
|
1719
|
-
if (data.radius !== undefined) {
|
|
1720
|
-
this.radius = data.radius;
|
|
1721
|
-
}
|
|
1354
|
+
class MoveCenter extends OptionLoader {
|
|
1355
|
+
mode = exports.PixelMode.percent;
|
|
1356
|
+
radius = 0;
|
|
1357
|
+
x = 50;
|
|
1358
|
+
y = 50;
|
|
1359
|
+
doLoad(data) {
|
|
1360
|
+
loadProperty(this, "x", data.x);
|
|
1361
|
+
loadProperty(this, "y", data.y);
|
|
1362
|
+
loadProperty(this, "mode", data.mode);
|
|
1363
|
+
loadProperty(this, "radius", data.radius);
|
|
1722
1364
|
}
|
|
1723
1365
|
}
|
|
1724
1366
|
|
|
1725
|
-
class MoveGravity {
|
|
1726
|
-
acceleration;
|
|
1727
|
-
enable;
|
|
1728
|
-
inverse;
|
|
1729
|
-
maxSpeed;
|
|
1730
|
-
|
|
1731
|
-
this
|
|
1732
|
-
this.enable
|
|
1733
|
-
this.inverse
|
|
1734
|
-
this.maxSpeed
|
|
1735
|
-
}
|
|
1736
|
-
load(data) {
|
|
1737
|
-
if (isNull(data)) {
|
|
1738
|
-
return;
|
|
1739
|
-
}
|
|
1740
|
-
if (data.acceleration !== undefined) {
|
|
1741
|
-
this.acceleration = setRangeValue(data.acceleration);
|
|
1742
|
-
}
|
|
1743
|
-
if (data.enable !== undefined) {
|
|
1744
|
-
this.enable = data.enable;
|
|
1745
|
-
}
|
|
1746
|
-
if (data.inverse !== undefined) {
|
|
1747
|
-
this.inverse = data.inverse;
|
|
1748
|
-
}
|
|
1749
|
-
if (data.maxSpeed !== undefined) {
|
|
1750
|
-
this.maxSpeed = setRangeValue(data.maxSpeed);
|
|
1751
|
-
}
|
|
1367
|
+
class MoveGravity extends OptionLoader {
|
|
1368
|
+
acceleration = 9.81;
|
|
1369
|
+
enable = false;
|
|
1370
|
+
inverse = false;
|
|
1371
|
+
maxSpeed = 50;
|
|
1372
|
+
doLoad(data) {
|
|
1373
|
+
loadRangeProperty(this, "acceleration", data.acceleration);
|
|
1374
|
+
loadProperty(this, "enable", data.enable);
|
|
1375
|
+
loadProperty(this, "inverse", data.inverse);
|
|
1376
|
+
loadRangeProperty(this, "maxSpeed", data.maxSpeed);
|
|
1752
1377
|
}
|
|
1753
1378
|
}
|
|
1754
1379
|
|
|
1755
|
-
class ValueWithRandom {
|
|
1756
|
-
value;
|
|
1757
|
-
|
|
1758
|
-
this.value = 0;
|
|
1759
|
-
}
|
|
1760
|
-
load(data) {
|
|
1761
|
-
if (isNull(data)) {
|
|
1762
|
-
return;
|
|
1763
|
-
}
|
|
1380
|
+
class ValueWithRandom extends OptionLoader {
|
|
1381
|
+
value = 0;
|
|
1382
|
+
doLoad(data) {
|
|
1764
1383
|
if (!isNull(data.value)) {
|
|
1765
1384
|
this.value = setRangeValue(data.value);
|
|
1766
1385
|
}
|
|
@@ -1768,51 +1387,25 @@
|
|
|
1768
1387
|
}
|
|
1769
1388
|
class AnimationValueWithRandom extends ValueWithRandom {
|
|
1770
1389
|
animation = new AnimationOptions();
|
|
1771
|
-
|
|
1772
|
-
super.
|
|
1773
|
-
|
|
1774
|
-
return;
|
|
1775
|
-
}
|
|
1776
|
-
const animation = data.animation;
|
|
1777
|
-
if (animation !== undefined) {
|
|
1778
|
-
this.animation.load(animation);
|
|
1779
|
-
}
|
|
1390
|
+
doLoad(data) {
|
|
1391
|
+
super.doLoad(data);
|
|
1392
|
+
loadNestedProperty(this, "animation", data.animation);
|
|
1780
1393
|
}
|
|
1781
1394
|
}
|
|
1782
1395
|
class RangedAnimationValueWithRandom extends AnimationValueWithRandom {
|
|
1783
|
-
animation;
|
|
1784
|
-
constructor() {
|
|
1785
|
-
super();
|
|
1786
|
-
this.animation = new RangedAnimationOptions();
|
|
1787
|
-
}
|
|
1788
|
-
load(data) {
|
|
1789
|
-
super.load(data);
|
|
1790
|
-
}
|
|
1396
|
+
animation = new RangedAnimationOptions();
|
|
1791
1397
|
}
|
|
1792
1398
|
|
|
1793
|
-
class MovePath {
|
|
1794
|
-
clamp;
|
|
1795
|
-
delay;
|
|
1796
|
-
enable;
|
|
1399
|
+
class MovePath extends OptionLoader {
|
|
1400
|
+
clamp = true;
|
|
1401
|
+
delay = new ValueWithRandom();
|
|
1402
|
+
enable = false;
|
|
1797
1403
|
generator;
|
|
1798
|
-
options;
|
|
1799
|
-
|
|
1800
|
-
this.clamp
|
|
1801
|
-
this.delay = new ValueWithRandom();
|
|
1802
|
-
this.enable = false;
|
|
1803
|
-
this.options = {};
|
|
1804
|
-
}
|
|
1805
|
-
load(data) {
|
|
1806
|
-
if (isNull(data)) {
|
|
1807
|
-
return;
|
|
1808
|
-
}
|
|
1809
|
-
if (data.clamp !== undefined) {
|
|
1810
|
-
this.clamp = data.clamp;
|
|
1811
|
-
}
|
|
1404
|
+
options = {};
|
|
1405
|
+
doLoad(data) {
|
|
1406
|
+
loadProperty(this, "clamp", data.clamp);
|
|
1812
1407
|
this.delay.load(data.delay);
|
|
1813
|
-
|
|
1814
|
-
this.enable = data.enable;
|
|
1815
|
-
}
|
|
1408
|
+
loadProperty(this, "enable", data.enable);
|
|
1816
1409
|
this.generator = data.generator;
|
|
1817
1410
|
if (data.options) {
|
|
1818
1411
|
this.options = deepExtend(this.options, data.options);
|
|
@@ -1820,19 +1413,13 @@
|
|
|
1820
1413
|
}
|
|
1821
1414
|
}
|
|
1822
1415
|
|
|
1823
|
-
class OutModes {
|
|
1416
|
+
class OutModes extends OptionLoader {
|
|
1824
1417
|
bottom;
|
|
1825
|
-
default;
|
|
1418
|
+
default = exports.OutMode.out;
|
|
1826
1419
|
left;
|
|
1827
1420
|
right;
|
|
1828
1421
|
top;
|
|
1829
|
-
|
|
1830
|
-
this.default = exports.OutMode.out;
|
|
1831
|
-
}
|
|
1832
|
-
load(data) {
|
|
1833
|
-
if (isNull(data)) {
|
|
1834
|
-
return;
|
|
1835
|
-
}
|
|
1422
|
+
doLoad(data) {
|
|
1836
1423
|
if (data.default !== undefined) {
|
|
1837
1424
|
this.default = data.default;
|
|
1838
1425
|
}
|
|
@@ -1843,79 +1430,42 @@
|
|
|
1843
1430
|
}
|
|
1844
1431
|
}
|
|
1845
1432
|
|
|
1846
|
-
class Spin {
|
|
1847
|
-
acceleration;
|
|
1848
|
-
enable;
|
|
1433
|
+
class Spin extends OptionLoader {
|
|
1434
|
+
acceleration = 0;
|
|
1435
|
+
enable = false;
|
|
1849
1436
|
position;
|
|
1850
|
-
|
|
1851
|
-
this.acceleration
|
|
1852
|
-
this.enable
|
|
1853
|
-
}
|
|
1854
|
-
load(data) {
|
|
1855
|
-
if (isNull(data)) {
|
|
1856
|
-
return;
|
|
1857
|
-
}
|
|
1858
|
-
if (data.acceleration !== undefined) {
|
|
1859
|
-
this.acceleration = setRangeValue(data.acceleration);
|
|
1860
|
-
}
|
|
1861
|
-
if (data.enable !== undefined) {
|
|
1862
|
-
this.enable = data.enable;
|
|
1863
|
-
}
|
|
1437
|
+
doLoad(data) {
|
|
1438
|
+
loadRangeProperty(this, "acceleration", data.acceleration);
|
|
1439
|
+
loadProperty(this, "enable", data.enable);
|
|
1864
1440
|
if (data.position) {
|
|
1865
1441
|
this.position = deepExtend({}, data.position);
|
|
1866
1442
|
}
|
|
1867
1443
|
}
|
|
1868
1444
|
}
|
|
1869
1445
|
|
|
1870
|
-
class Move {
|
|
1871
|
-
angle;
|
|
1872
|
-
center;
|
|
1873
|
-
decay;
|
|
1874
|
-
direction;
|
|
1875
|
-
distance;
|
|
1876
|
-
drift;
|
|
1877
|
-
enable;
|
|
1878
|
-
gravity;
|
|
1879
|
-
outModes;
|
|
1880
|
-
path;
|
|
1881
|
-
random;
|
|
1882
|
-
size;
|
|
1883
|
-
speed;
|
|
1884
|
-
spin;
|
|
1885
|
-
straight;
|
|
1886
|
-
vibrate;
|
|
1887
|
-
warp;
|
|
1888
|
-
|
|
1889
|
-
this.angle = new MoveAngle();
|
|
1890
|
-
this.center = new MoveCenter();
|
|
1891
|
-
this.decay = 0;
|
|
1892
|
-
this.distance = {};
|
|
1893
|
-
this.direction = exports.MoveDirection.none;
|
|
1894
|
-
this.drift = 0;
|
|
1895
|
-
this.enable = false;
|
|
1896
|
-
this.gravity = new MoveGravity();
|
|
1897
|
-
this.path = new MovePath();
|
|
1898
|
-
this.outModes = new OutModes();
|
|
1899
|
-
this.random = false;
|
|
1900
|
-
this.size = false;
|
|
1901
|
-
this.speed = 2;
|
|
1902
|
-
this.spin = new Spin();
|
|
1903
|
-
this.straight = false;
|
|
1904
|
-
this.vibrate = false;
|
|
1905
|
-
this.warp = false;
|
|
1906
|
-
}
|
|
1907
|
-
load(data) {
|
|
1908
|
-
if (isNull(data)) {
|
|
1909
|
-
return;
|
|
1910
|
-
}
|
|
1446
|
+
class Move extends OptionLoader {
|
|
1447
|
+
angle = new MoveAngle();
|
|
1448
|
+
center = new MoveCenter();
|
|
1449
|
+
decay = 0;
|
|
1450
|
+
direction = exports.MoveDirection.none;
|
|
1451
|
+
distance = {};
|
|
1452
|
+
drift = 0;
|
|
1453
|
+
enable = false;
|
|
1454
|
+
gravity = new MoveGravity();
|
|
1455
|
+
outModes = new OutModes();
|
|
1456
|
+
path = new MovePath();
|
|
1457
|
+
random = false;
|
|
1458
|
+
size = false;
|
|
1459
|
+
speed = 2;
|
|
1460
|
+
spin = new Spin();
|
|
1461
|
+
straight = false;
|
|
1462
|
+
vibrate = false;
|
|
1463
|
+
warp = false;
|
|
1464
|
+
doLoad(data) {
|
|
1911
1465
|
this.angle.load(isNumber(data.angle) ? { value: data.angle } : data.angle);
|
|
1912
1466
|
this.center.load(data.center);
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
}
|
|
1916
|
-
if (data.direction !== undefined) {
|
|
1917
|
-
this.direction = data.direction;
|
|
1918
|
-
}
|
|
1467
|
+
loadRangeProperty(this, "decay", data.decay);
|
|
1468
|
+
loadProperty(this, "direction", data.direction);
|
|
1919
1469
|
if (data.distance !== undefined) {
|
|
1920
1470
|
this.distance = isNumber(data.distance)
|
|
1921
1471
|
? {
|
|
@@ -1924,12 +1474,8 @@
|
|
|
1924
1474
|
}
|
|
1925
1475
|
: { ...data.distance };
|
|
1926
1476
|
}
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
}
|
|
1930
|
-
if (data.enable !== undefined) {
|
|
1931
|
-
this.enable = data.enable;
|
|
1932
|
-
}
|
|
1477
|
+
loadRangeProperty(this, "drift", data.drift);
|
|
1478
|
+
loadProperty(this, "enable", data.enable);
|
|
1933
1479
|
this.gravity.load(data.gravity);
|
|
1934
1480
|
const outModes = data.outModes;
|
|
1935
1481
|
if (outModes !== undefined) {
|
|
@@ -1943,256 +1489,141 @@
|
|
|
1943
1489
|
}
|
|
1944
1490
|
}
|
|
1945
1491
|
this.path.load(data.path);
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
if (data.size !== undefined) {
|
|
1950
|
-
this.size = data.size;
|
|
1951
|
-
}
|
|
1952
|
-
if (data.speed !== undefined) {
|
|
1953
|
-
this.speed = setRangeValue(data.speed);
|
|
1954
|
-
}
|
|
1492
|
+
loadProperty(this, "random", data.random);
|
|
1493
|
+
loadProperty(this, "size", data.size);
|
|
1494
|
+
loadRangeProperty(this, "speed", data.speed);
|
|
1955
1495
|
this.spin.load(data.spin);
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
if (data.vibrate !== undefined) {
|
|
1960
|
-
this.vibrate = data.vibrate;
|
|
1961
|
-
}
|
|
1962
|
-
if (data.warp !== undefined) {
|
|
1963
|
-
this.warp = data.warp;
|
|
1964
|
-
}
|
|
1496
|
+
loadProperty(this, "straight", data.straight);
|
|
1497
|
+
loadProperty(this, "vibrate", data.vibrate);
|
|
1498
|
+
loadProperty(this, "warp", data.warp);
|
|
1965
1499
|
}
|
|
1966
1500
|
}
|
|
1967
1501
|
|
|
1968
|
-
class Stroke {
|
|
1502
|
+
class Stroke extends OptionLoader {
|
|
1969
1503
|
color;
|
|
1970
1504
|
opacity;
|
|
1971
|
-
width;
|
|
1972
|
-
|
|
1973
|
-
this.width = 0;
|
|
1974
|
-
}
|
|
1975
|
-
load(data) {
|
|
1976
|
-
if (isNull(data)) {
|
|
1977
|
-
return;
|
|
1978
|
-
}
|
|
1505
|
+
width = 0;
|
|
1506
|
+
doLoad(data) {
|
|
1979
1507
|
if (data.color !== undefined) {
|
|
1980
1508
|
this.color = AnimatableColor.create(this.color, data.color);
|
|
1981
1509
|
}
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
}
|
|
1985
|
-
if (data.opacity !== undefined) {
|
|
1986
|
-
this.opacity = setRangeValue(data.opacity);
|
|
1987
|
-
}
|
|
1510
|
+
loadRangeProperty(this, "width", data.width);
|
|
1511
|
+
loadRangeProperty(this, "opacity", data.opacity);
|
|
1988
1512
|
}
|
|
1989
1513
|
}
|
|
1990
1514
|
|
|
1991
|
-
class Paint {
|
|
1515
|
+
class Paint extends OptionLoader {
|
|
1992
1516
|
color;
|
|
1993
1517
|
fill;
|
|
1994
1518
|
stroke;
|
|
1995
|
-
|
|
1996
|
-
if (isNull(data)) {
|
|
1997
|
-
return;
|
|
1998
|
-
}
|
|
1519
|
+
doLoad(data) {
|
|
1999
1520
|
if (data.color !== undefined) {
|
|
2000
1521
|
this.color = AnimatableColor.create(this.color, data.color);
|
|
2001
1522
|
}
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
this.fill.load(data.fill);
|
|
2005
|
-
}
|
|
2006
|
-
if (data.stroke !== undefined) {
|
|
2007
|
-
this.stroke ??= new Stroke();
|
|
2008
|
-
this.stroke.load(data.stroke);
|
|
2009
|
-
}
|
|
1523
|
+
loadLazyProperty(this, "fill", data.fill, () => new Fill());
|
|
1524
|
+
loadLazyProperty(this, "stroke", data.stroke, () => new Stroke());
|
|
2010
1525
|
}
|
|
2011
1526
|
}
|
|
2012
1527
|
|
|
2013
1528
|
class ParticlesBounceFactor extends ValueWithRandom {
|
|
2014
|
-
|
|
2015
|
-
super();
|
|
2016
|
-
this.value = 1;
|
|
2017
|
-
}
|
|
1529
|
+
value = 1;
|
|
2018
1530
|
}
|
|
2019
1531
|
|
|
2020
|
-
class ParticlesBounce {
|
|
2021
|
-
horizontal;
|
|
2022
|
-
vertical;
|
|
2023
|
-
|
|
2024
|
-
this.horizontal = new ParticlesBounceFactor();
|
|
2025
|
-
this.vertical = new ParticlesBounceFactor();
|
|
2026
|
-
}
|
|
2027
|
-
load(data) {
|
|
2028
|
-
if (isNull(data)) {
|
|
2029
|
-
return;
|
|
2030
|
-
}
|
|
1532
|
+
class ParticlesBounce extends OptionLoader {
|
|
1533
|
+
horizontal = new ParticlesBounceFactor();
|
|
1534
|
+
vertical = new ParticlesBounceFactor();
|
|
1535
|
+
doLoad(data) {
|
|
2031
1536
|
this.horizontal.load(data.horizontal);
|
|
2032
1537
|
this.vertical.load(data.vertical);
|
|
2033
1538
|
}
|
|
2034
1539
|
}
|
|
2035
1540
|
|
|
2036
|
-
class ParticlesDensity {
|
|
2037
|
-
enable;
|
|
2038
|
-
height;
|
|
2039
|
-
width;
|
|
2040
|
-
|
|
2041
|
-
this.enable
|
|
2042
|
-
this.width
|
|
2043
|
-
this.height
|
|
2044
|
-
}
|
|
2045
|
-
load(data) {
|
|
2046
|
-
if (isNull(data)) {
|
|
2047
|
-
return;
|
|
2048
|
-
}
|
|
2049
|
-
if (data.enable !== undefined) {
|
|
2050
|
-
this.enable = data.enable;
|
|
2051
|
-
}
|
|
2052
|
-
const width = data.width;
|
|
2053
|
-
if (width !== undefined) {
|
|
2054
|
-
this.width = width;
|
|
2055
|
-
}
|
|
2056
|
-
const height = data.height;
|
|
2057
|
-
if (height !== undefined) {
|
|
2058
|
-
this.height = height;
|
|
2059
|
-
}
|
|
1541
|
+
class ParticlesDensity extends OptionLoader {
|
|
1542
|
+
enable = false;
|
|
1543
|
+
height = 1080;
|
|
1544
|
+
width = 1920;
|
|
1545
|
+
doLoad(data) {
|
|
1546
|
+
loadProperty(this, "enable", data.enable);
|
|
1547
|
+
loadProperty(this, "width", data.width);
|
|
1548
|
+
loadProperty(this, "height", data.height);
|
|
2060
1549
|
}
|
|
2061
1550
|
}
|
|
2062
1551
|
|
|
2063
|
-
class ParticlesNumberLimit {
|
|
2064
|
-
mode;
|
|
2065
|
-
value;
|
|
2066
|
-
|
|
2067
|
-
this
|
|
2068
|
-
this.value
|
|
2069
|
-
}
|
|
2070
|
-
load(data) {
|
|
2071
|
-
if (isNull(data)) {
|
|
2072
|
-
return;
|
|
2073
|
-
}
|
|
2074
|
-
if (data.mode !== undefined) {
|
|
2075
|
-
this.mode = data.mode;
|
|
2076
|
-
}
|
|
2077
|
-
if (data.value !== undefined) {
|
|
2078
|
-
this.value = data.value;
|
|
2079
|
-
}
|
|
1552
|
+
class ParticlesNumberLimit extends OptionLoader {
|
|
1553
|
+
mode = exports.LimitMode.delete;
|
|
1554
|
+
value = 0;
|
|
1555
|
+
doLoad(data) {
|
|
1556
|
+
loadProperty(this, "mode", data.mode);
|
|
1557
|
+
loadProperty(this, "value", data.value);
|
|
2080
1558
|
}
|
|
2081
1559
|
}
|
|
2082
1560
|
|
|
2083
|
-
class ParticlesNumber {
|
|
2084
|
-
density;
|
|
2085
|
-
limit;
|
|
2086
|
-
value;
|
|
2087
|
-
|
|
2088
|
-
this.density = new ParticlesDensity();
|
|
2089
|
-
this.limit = new ParticlesNumberLimit();
|
|
2090
|
-
this.value = 0;
|
|
2091
|
-
}
|
|
2092
|
-
load(data) {
|
|
2093
|
-
if (isNull(data)) {
|
|
2094
|
-
return;
|
|
2095
|
-
}
|
|
1561
|
+
class ParticlesNumber extends OptionLoader {
|
|
1562
|
+
density = new ParticlesDensity();
|
|
1563
|
+
limit = new ParticlesNumberLimit();
|
|
1564
|
+
value = 0;
|
|
1565
|
+
doLoad(data) {
|
|
2096
1566
|
this.density.load(data.density);
|
|
2097
|
-
this.limit.load(data.limit);
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
return;
|
|
2116
|
-
}
|
|
2117
|
-
const options = data.options;
|
|
2118
|
-
if (options !== undefined) {
|
|
2119
|
-
for (const shape in options) {
|
|
2120
|
-
const item = options[shape];
|
|
2121
|
-
if (item) {
|
|
2122
|
-
this.options[shape] = deepExtend(this.options[shape] ?? {}, item);
|
|
2123
|
-
}
|
|
2124
|
-
}
|
|
2125
|
-
}
|
|
2126
|
-
if (data.close !== undefined) {
|
|
2127
|
-
this.close = data.close;
|
|
2128
|
-
}
|
|
2129
|
-
if (data.type !== undefined) {
|
|
2130
|
-
this.type = data.type;
|
|
2131
|
-
}
|
|
2132
|
-
}
|
|
2133
|
-
}
|
|
2134
|
-
|
|
2135
|
-
class ZIndex extends ValueWithRandom {
|
|
2136
|
-
opacityRate;
|
|
2137
|
-
sizeRate;
|
|
2138
|
-
velocityRate;
|
|
2139
|
-
constructor() {
|
|
2140
|
-
super();
|
|
2141
|
-
this.opacityRate = 1;
|
|
2142
|
-
this.sizeRate = 1;
|
|
2143
|
-
this.velocityRate = 1;
|
|
2144
|
-
}
|
|
2145
|
-
load(data) {
|
|
2146
|
-
super.load(data);
|
|
2147
|
-
if (isNull(data)) {
|
|
2148
|
-
return;
|
|
2149
|
-
}
|
|
2150
|
-
if (data.opacityRate !== undefined) {
|
|
2151
|
-
this.opacityRate = data.opacityRate;
|
|
2152
|
-
}
|
|
2153
|
-
if (data.sizeRate !== undefined) {
|
|
2154
|
-
this.sizeRate = data.sizeRate;
|
|
2155
|
-
}
|
|
2156
|
-
if (data.velocityRate !== undefined) {
|
|
2157
|
-
this.velocityRate = data.velocityRate;
|
|
1567
|
+
this.limit.load(data.limit);
|
|
1568
|
+
loadProperty(this, "value", data.value);
|
|
1569
|
+
}
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
class Shape extends OptionLoader {
|
|
1573
|
+
close = true;
|
|
1574
|
+
options = {};
|
|
1575
|
+
type = "circle";
|
|
1576
|
+
doLoad(data) {
|
|
1577
|
+
const options = data.options;
|
|
1578
|
+
if (options !== undefined) {
|
|
1579
|
+
for (const shape in options) {
|
|
1580
|
+
const item = options[shape];
|
|
1581
|
+
if (item) {
|
|
1582
|
+
this.options[shape] = deepExtend(this.options[shape] ?? {}, item);
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
2158
1585
|
}
|
|
1586
|
+
loadProperty(this, "close", data.close);
|
|
1587
|
+
loadProperty(this, "type", data.type);
|
|
2159
1588
|
}
|
|
2160
1589
|
}
|
|
2161
1590
|
|
|
2162
|
-
class
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
1591
|
+
class ZIndex extends ValueWithRandom {
|
|
1592
|
+
opacityRate = 1;
|
|
1593
|
+
sizeRate = 1;
|
|
1594
|
+
velocityRate = 1;
|
|
1595
|
+
doLoad(data) {
|
|
1596
|
+
super.doLoad(data);
|
|
1597
|
+
loadProperty(this, "opacityRate", data.opacityRate);
|
|
1598
|
+
loadProperty(this, "sizeRate", data.sizeRate);
|
|
1599
|
+
loadProperty(this, "velocityRate", data.velocityRate);
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
class ParticlesOptions extends OptionLoader {
|
|
1604
|
+
bounce = new ParticlesBounce();
|
|
1605
|
+
effect = new Effect();
|
|
1606
|
+
groups = {};
|
|
1607
|
+
move = new Move();
|
|
1608
|
+
number = new ParticlesNumber();
|
|
2168
1609
|
paint;
|
|
2169
1610
|
palette;
|
|
2170
|
-
reduceDuplicates;
|
|
2171
|
-
shape;
|
|
2172
|
-
zIndex;
|
|
1611
|
+
reduceDuplicates = false;
|
|
1612
|
+
shape = new Shape();
|
|
1613
|
+
zIndex = new ZIndex();
|
|
2173
1614
|
#container;
|
|
2174
1615
|
#pluginManager;
|
|
2175
1616
|
constructor(pluginManager, container) {
|
|
1617
|
+
super();
|
|
2176
1618
|
this.#pluginManager = pluginManager;
|
|
2177
1619
|
this.#container = container;
|
|
2178
|
-
this.bounce = new ParticlesBounce();
|
|
2179
|
-
this.effect = new Effect();
|
|
2180
|
-
this.groups = {};
|
|
2181
|
-
this.move = new Move();
|
|
2182
|
-
this.number = new ParticlesNumber();
|
|
2183
1620
|
this.paint = new Paint();
|
|
2184
1621
|
this.paint.color = new AnimatableColor();
|
|
2185
1622
|
this.paint.color.value = "#fff";
|
|
2186
1623
|
this.paint.fill = new Fill();
|
|
2187
1624
|
this.paint.fill.enable = true;
|
|
2188
|
-
this.reduceDuplicates = false;
|
|
2189
|
-
this.shape = new Shape();
|
|
2190
|
-
this.zIndex = new ZIndex();
|
|
2191
1625
|
}
|
|
2192
|
-
|
|
2193
|
-
if (isNull(data)) {
|
|
2194
|
-
return;
|
|
2195
|
-
}
|
|
1626
|
+
doLoad(data) {
|
|
2196
1627
|
if (data.palette) {
|
|
2197
1628
|
this.palette = data.palette;
|
|
2198
1629
|
this.#importPalette(this.palette);
|
|
@@ -2250,7 +1681,7 @@
|
|
|
2250
1681
|
}
|
|
2251
1682
|
}
|
|
2252
1683
|
}
|
|
2253
|
-
#importPalette
|
|
1684
|
+
#importPalette(palette) {
|
|
2254
1685
|
const paletteData = this.#pluginManager.getPalette(palette);
|
|
2255
1686
|
if (!paletteData) {
|
|
2256
1687
|
return;
|
|
@@ -2294,69 +1725,49 @@
|
|
|
2294
1725
|
mode: paletteData.blendMode,
|
|
2295
1726
|
},
|
|
2296
1727
|
});
|
|
2297
|
-
};
|
|
2298
|
-
}
|
|
2299
|
-
|
|
2300
|
-
function loadOptions(options, ...sourceOptionsArr) {
|
|
2301
|
-
for (const sourceOptions of sourceOptionsArr) {
|
|
2302
|
-
options.load(sourceOptions);
|
|
2303
1728
|
}
|
|
2304
1729
|
}
|
|
1730
|
+
|
|
2305
1731
|
function loadParticlesOptions(pluginManager, container, ...sourceOptionsArr) {
|
|
2306
1732
|
const options = new ParticlesOptions(pluginManager, container);
|
|
2307
1733
|
loadOptions(options, ...sourceOptionsArr);
|
|
2308
1734
|
return options;
|
|
2309
1735
|
}
|
|
2310
1736
|
|
|
2311
|
-
class Options {
|
|
2312
|
-
autoPlay;
|
|
1737
|
+
class Options extends OptionLoader {
|
|
1738
|
+
autoPlay = true;
|
|
2313
1739
|
background;
|
|
2314
|
-
clear;
|
|
2315
|
-
defaultThemes;
|
|
2316
|
-
delay;
|
|
2317
|
-
detectRetina;
|
|
2318
|
-
duration;
|
|
2319
|
-
fpsLimit;
|
|
1740
|
+
clear = true;
|
|
1741
|
+
defaultThemes = {};
|
|
1742
|
+
delay = 0;
|
|
1743
|
+
detectRetina = true;
|
|
1744
|
+
duration = 0;
|
|
1745
|
+
fpsLimit = 120;
|
|
2320
1746
|
fullScreen;
|
|
2321
|
-
hdr;
|
|
1747
|
+
hdr = true;
|
|
2322
1748
|
key;
|
|
2323
1749
|
name;
|
|
2324
1750
|
palette;
|
|
2325
1751
|
particles;
|
|
2326
|
-
pauseOnBlur;
|
|
2327
|
-
pauseOnOutsideViewport;
|
|
1752
|
+
pauseOnBlur = true;
|
|
1753
|
+
pauseOnOutsideViewport = true;
|
|
2328
1754
|
preset;
|
|
2329
1755
|
resize;
|
|
2330
|
-
smooth;
|
|
2331
|
-
style;
|
|
2332
|
-
zLayers;
|
|
1756
|
+
smooth = false;
|
|
1757
|
+
style = {};
|
|
1758
|
+
zLayers = 100;
|
|
2333
1759
|
#container;
|
|
2334
1760
|
#pluginManager;
|
|
2335
1761
|
constructor(pluginManager, container) {
|
|
1762
|
+
super();
|
|
2336
1763
|
this.#pluginManager = pluginManager;
|
|
2337
1764
|
this.#container = container;
|
|
2338
|
-
this.autoPlay = true;
|
|
2339
1765
|
this.background = new Background();
|
|
2340
|
-
this.clear = true;
|
|
2341
|
-
this.defaultThemes = {};
|
|
2342
|
-
this.delay = 0;
|
|
2343
1766
|
this.fullScreen = new FullScreen();
|
|
2344
|
-
this.detectRetina = true;
|
|
2345
|
-
this.duration = 0;
|
|
2346
|
-
this.fpsLimit = 120;
|
|
2347
|
-
this.hdr = true;
|
|
2348
1767
|
this.particles = loadParticlesOptions(this.#pluginManager, this.#container);
|
|
2349
|
-
this.pauseOnBlur = true;
|
|
2350
|
-
this.pauseOnOutsideViewport = true;
|
|
2351
1768
|
this.resize = new ResizeEvent();
|
|
2352
|
-
this.smooth = false;
|
|
2353
|
-
this.style = {};
|
|
2354
|
-
this.zLayers = 100;
|
|
2355
1769
|
}
|
|
2356
|
-
|
|
2357
|
-
if (isNull(data)) {
|
|
2358
|
-
return;
|
|
2359
|
-
}
|
|
1770
|
+
doLoad(data) {
|
|
2360
1771
|
if (data.preset !== undefined) {
|
|
2361
1772
|
this.preset = data.preset;
|
|
2362
1773
|
executeOnSingleOrMultiple(this.preset, preset => {
|
|
@@ -2367,44 +1778,18 @@
|
|
|
2367
1778
|
this.palette = data.palette;
|
|
2368
1779
|
this.#importPalette(this.palette);
|
|
2369
1780
|
}
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
if (data.delay !== undefined) {
|
|
2383
|
-
this.delay = setRangeValue(data.delay);
|
|
2384
|
-
}
|
|
2385
|
-
const detectRetina = data.detectRetina;
|
|
2386
|
-
if (detectRetina !== undefined) {
|
|
2387
|
-
this.detectRetina = detectRetina;
|
|
2388
|
-
}
|
|
2389
|
-
if (data.duration !== undefined) {
|
|
2390
|
-
this.duration = setRangeValue(data.duration);
|
|
2391
|
-
}
|
|
2392
|
-
const fpsLimit = data.fpsLimit;
|
|
2393
|
-
if (fpsLimit !== undefined) {
|
|
2394
|
-
this.fpsLimit = fpsLimit;
|
|
2395
|
-
}
|
|
2396
|
-
if (data.hdr !== undefined) {
|
|
2397
|
-
this.hdr = data.hdr;
|
|
2398
|
-
}
|
|
2399
|
-
if (data.pauseOnBlur !== undefined) {
|
|
2400
|
-
this.pauseOnBlur = data.pauseOnBlur;
|
|
2401
|
-
}
|
|
2402
|
-
if (data.pauseOnOutsideViewport !== undefined) {
|
|
2403
|
-
this.pauseOnOutsideViewport = data.pauseOnOutsideViewport;
|
|
2404
|
-
}
|
|
2405
|
-
if (data.zLayers !== undefined) {
|
|
2406
|
-
this.zLayers = data.zLayers;
|
|
2407
|
-
}
|
|
1781
|
+
loadProperty(this, "autoPlay", data.autoPlay);
|
|
1782
|
+
loadProperty(this, "clear", data.clear);
|
|
1783
|
+
loadProperty(this, "key", data.key);
|
|
1784
|
+
loadProperty(this, "name", data.name);
|
|
1785
|
+
loadRangeProperty(this, "delay", data.delay);
|
|
1786
|
+
loadProperty(this, "detectRetina", data.detectRetina);
|
|
1787
|
+
loadRangeProperty(this, "duration", data.duration);
|
|
1788
|
+
loadProperty(this, "fpsLimit", data.fpsLimit);
|
|
1789
|
+
loadProperty(this, "hdr", data.hdr);
|
|
1790
|
+
loadProperty(this, "pauseOnBlur", data.pauseOnBlur);
|
|
1791
|
+
loadProperty(this, "pauseOnOutsideViewport", data.pauseOnOutsideViewport);
|
|
1792
|
+
loadProperty(this, "zLayers", data.zLayers);
|
|
2408
1793
|
this.background.load(data.background);
|
|
2409
1794
|
const fullScreen = data.fullScreen;
|
|
2410
1795
|
if (isBoolean(fullScreen)) {
|
|
@@ -2416,14 +1801,12 @@
|
|
|
2416
1801
|
this.particles.load(data.particles);
|
|
2417
1802
|
this.resize.load(data.resize);
|
|
2418
1803
|
this.style = deepExtend(this.style, data.style);
|
|
2419
|
-
|
|
2420
|
-
this.smooth = data.smooth;
|
|
2421
|
-
}
|
|
1804
|
+
loadProperty(this, "smooth", data.smooth);
|
|
2422
1805
|
this.#pluginManager.plugins.forEach(plugin => {
|
|
2423
1806
|
plugin.loadOptions(this.#container, this, data);
|
|
2424
1807
|
});
|
|
2425
1808
|
}
|
|
2426
|
-
#importPalette
|
|
1809
|
+
#importPalette(palette) {
|
|
2427
1810
|
const paletteData = this.#pluginManager.getPalette(palette);
|
|
2428
1811
|
if (!paletteData) {
|
|
2429
1812
|
return;
|
|
@@ -2440,143 +1823,19 @@
|
|
|
2440
1823
|
palette,
|
|
2441
1824
|
},
|
|
2442
1825
|
});
|
|
2443
|
-
};
|
|
2444
|
-
#importPreset = preset => {
|
|
2445
|
-
this.load(this.#pluginManager.getPreset(preset));
|
|
2446
|
-
};
|
|
2447
|
-
}
|
|
2448
|
-
|
|
2449
|
-
function paintBase(context, dimension, baseColor) {
|
|
2450
|
-
context.fillStyle = baseColor ?? "rgba(0,0,0,0)";
|
|
2451
|
-
context.fillRect(originPoint.x, originPoint.y, dimension.width, dimension.height);
|
|
2452
|
-
}
|
|
2453
|
-
function paintImage(context, dimension, image, opacity) {
|
|
2454
|
-
if (!image) {
|
|
2455
|
-
return;
|
|
2456
|
-
}
|
|
2457
|
-
const prevAlpha = context.globalAlpha;
|
|
2458
|
-
context.globalAlpha = opacity;
|
|
2459
|
-
context.drawImage(image, originPoint.x, originPoint.y, dimension.width, dimension.height);
|
|
2460
|
-
context.globalAlpha = prevAlpha;
|
|
2461
|
-
}
|
|
2462
|
-
function clear(context, dimension) {
|
|
2463
|
-
context.clearRect(originPoint.x, originPoint.y, dimension.width, dimension.height);
|
|
2464
|
-
}
|
|
2465
|
-
function drawParticle(data) {
|
|
2466
|
-
const { container, context, particle, delta, colorStyles, radius, opacity, transform } = data, { effectDrawers, shapeDrawers } = container, pos = particle.getPosition(), transformData = particle.getTransformData(transform), drawScale = defaultZoom, drawPosition = {
|
|
2467
|
-
x: pos.x,
|
|
2468
|
-
y: pos.y,
|
|
2469
|
-
};
|
|
2470
|
-
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);
|
|
2471
|
-
if (colorStyles.fill) {
|
|
2472
|
-
context.fillStyle = colorStyles.fill;
|
|
2473
|
-
}
|
|
2474
|
-
const fillEnabled = !!particle.fillEnabled, strokeWidth = particle.strokeWidth ?? minStrokeWidth;
|
|
2475
|
-
context.lineWidth = strokeWidth;
|
|
2476
|
-
if (colorStyles.stroke) {
|
|
2477
|
-
context.strokeStyle = colorStyles.stroke;
|
|
2478
|
-
}
|
|
2479
|
-
const drawData = {
|
|
2480
|
-
context,
|
|
2481
|
-
particle,
|
|
2482
|
-
radius,
|
|
2483
|
-
drawRadius: radius * drawScale,
|
|
2484
|
-
opacity,
|
|
2485
|
-
delta,
|
|
2486
|
-
pixelRatio: container.retina.pixelRatio,
|
|
2487
|
-
fill: fillEnabled,
|
|
2488
|
-
stroke: strokeWidth > minStrokeWidth,
|
|
2489
|
-
transformData,
|
|
2490
|
-
position: { ...pos },
|
|
2491
|
-
drawPosition,
|
|
2492
|
-
drawScale,
|
|
2493
|
-
};
|
|
2494
|
-
for (const plugin of container.plugins) {
|
|
2495
|
-
plugin.drawParticleTransform?.(drawData);
|
|
2496
|
-
}
|
|
2497
|
-
const effect = particle.effect ? effectDrawers.get(particle.effect) : undefined, shape = particle.shape ? shapeDrawers.get(particle.shape) : undefined;
|
|
2498
|
-
drawBeforeEffect(effect, drawData);
|
|
2499
|
-
drawShapeBeforeDraw(shape, drawData);
|
|
2500
|
-
drawShape(shape, drawData);
|
|
2501
|
-
drawShapeAfterDraw(shape, drawData);
|
|
2502
|
-
drawAfterEffect(effect, drawData);
|
|
2503
|
-
context.resetTransform();
|
|
2504
|
-
}
|
|
2505
|
-
function drawAfterEffect(drawer, data) {
|
|
2506
|
-
if (!drawer?.drawAfter) {
|
|
2507
|
-
return;
|
|
2508
|
-
}
|
|
2509
|
-
const { particle } = data;
|
|
2510
|
-
if (!particle.effect) {
|
|
2511
|
-
return;
|
|
2512
|
-
}
|
|
2513
|
-
drawer.drawAfter(data);
|
|
2514
|
-
}
|
|
2515
|
-
function drawBeforeEffect(drawer, data) {
|
|
2516
|
-
if (!drawer?.drawBefore) {
|
|
2517
|
-
return;
|
|
2518
|
-
}
|
|
2519
|
-
const { particle } = data;
|
|
2520
|
-
if (!particle.effect) {
|
|
2521
|
-
return;
|
|
2522
|
-
}
|
|
2523
|
-
drawer.drawBefore(data);
|
|
2524
|
-
}
|
|
2525
|
-
function drawShape(drawer, data) {
|
|
2526
|
-
if (!drawer) {
|
|
2527
|
-
return;
|
|
2528
|
-
}
|
|
2529
|
-
const { context, fill, particle, stroke } = data;
|
|
2530
|
-
if (!particle.shape) {
|
|
2531
|
-
return;
|
|
2532
|
-
}
|
|
2533
|
-
context.beginPath();
|
|
2534
|
-
drawer.draw(data);
|
|
2535
|
-
if (particle.shapeClose) {
|
|
2536
|
-
context.closePath();
|
|
2537
1826
|
}
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
}
|
|
2541
|
-
if (stroke) {
|
|
2542
|
-
context.stroke();
|
|
2543
|
-
}
|
|
2544
|
-
}
|
|
2545
|
-
function drawShapeAfterDraw(drawer, data) {
|
|
2546
|
-
if (!drawer?.afterDraw) {
|
|
2547
|
-
return;
|
|
2548
|
-
}
|
|
2549
|
-
const { particle } = data;
|
|
2550
|
-
if (!particle.shape) {
|
|
2551
|
-
return;
|
|
2552
|
-
}
|
|
2553
|
-
drawer.afterDraw(data);
|
|
2554
|
-
}
|
|
2555
|
-
function drawShapeBeforeDraw(drawer, data) {
|
|
2556
|
-
if (!drawer?.beforeDraw) {
|
|
2557
|
-
return;
|
|
2558
|
-
}
|
|
2559
|
-
const { particle } = data;
|
|
2560
|
-
if (!particle.shape) {
|
|
2561
|
-
return;
|
|
2562
|
-
}
|
|
2563
|
-
drawer.beforeDraw(data);
|
|
2564
|
-
}
|
|
2565
|
-
function drawParticlePlugin(context, plugin, particle, delta) {
|
|
2566
|
-
if (!plugin.drawParticle) {
|
|
2567
|
-
return;
|
|
1827
|
+
#importPreset(preset) {
|
|
1828
|
+
this.load(this.#pluginManager.getPreset(preset));
|
|
2568
1829
|
}
|
|
2569
|
-
plugin.drawParticle(context, particle, delta);
|
|
2570
1830
|
}
|
|
2571
1831
|
|
|
2572
|
-
const styleCache = new Map(),
|
|
1832
|
+
const styleCache = new Map(), maxStyleCacheSize = 2000, rgbFixedPrecision = 2, hslFixedPrecision = 2, sdrReferenceWhiteNits = 203;
|
|
2573
1833
|
function getCachedStyle(key, generator) {
|
|
2574
1834
|
let cached = styleCache.get(key);
|
|
2575
1835
|
if (!cached) {
|
|
2576
1836
|
cached = generator();
|
|
2577
|
-
if (styleCache.size
|
|
2578
|
-
|
|
2579
|
-
keysToDelete.forEach(k => styleCache.delete(k));
|
|
1837
|
+
if (styleCache.size > maxStyleCacheSize) {
|
|
1838
|
+
styleCache.clear();
|
|
2580
1839
|
}
|
|
2581
1840
|
styleCache.set(key, cached);
|
|
2582
1841
|
}
|
|
@@ -2643,10 +1902,6 @@
|
|
|
2643
1902
|
}
|
|
2644
1903
|
return undefined;
|
|
2645
1904
|
}
|
|
2646
|
-
function colorToHsl(pluginManager, color, index, useIndex = true) {
|
|
2647
|
-
const rgb = colorToRgb(pluginManager, color, index, useIndex);
|
|
2648
|
-
return rgb ? rgbToHsl(rgb) : undefined;
|
|
2649
|
-
}
|
|
2650
1905
|
function rangeColorToHsl(pluginManager, color, index, useIndex = true) {
|
|
2651
1906
|
const rgb = rangeColorToRgb(pluginManager, color, index, useIndex);
|
|
2652
1907
|
return rgb ? rgbToHsl(rgb) : undefined;
|
|
@@ -2686,34 +1941,35 @@
|
|
|
2686
1941
|
function stringToRgb(pluginManager, input) {
|
|
2687
1942
|
return stringToRgba(pluginManager, input);
|
|
2688
1943
|
}
|
|
1944
|
+
function hslChannel(temp1, temp2, temp3) {
|
|
1945
|
+
const temp3Min = 0, temp3Max = 1;
|
|
1946
|
+
if (temp3 < temp3Min) {
|
|
1947
|
+
temp3++;
|
|
1948
|
+
}
|
|
1949
|
+
if (temp3 > temp3Max) {
|
|
1950
|
+
temp3--;
|
|
1951
|
+
}
|
|
1952
|
+
if (temp3 * sextuple < temp3Max) {
|
|
1953
|
+
return temp1 + (temp2 - temp1) * sextuple * temp3;
|
|
1954
|
+
}
|
|
1955
|
+
if (temp3 * double < temp3Max) {
|
|
1956
|
+
return temp2;
|
|
1957
|
+
}
|
|
1958
|
+
if (temp3 * triple < temp3Max * double) {
|
|
1959
|
+
const temp3Offset = double / triple;
|
|
1960
|
+
return temp1 + (temp2 - temp1) * (temp3Offset - temp3) * sextuple;
|
|
1961
|
+
}
|
|
1962
|
+
return temp1;
|
|
1963
|
+
}
|
|
2689
1964
|
function hslToRgb(hsl) {
|
|
2690
1965
|
const 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;
|
|
2691
1966
|
if (s === sMin) {
|
|
2692
1967
|
const grayscaleValue = Math.round(lNormalized * rgbMax);
|
|
2693
1968
|
return { r: grayscaleValue, g: grayscaleValue, b: grayscaleValue };
|
|
2694
1969
|
}
|
|
2695
|
-
const
|
|
2696
|
-
const temp3Min = 0, temp3Max = 1;
|
|
2697
|
-
if (temp3 < temp3Min) {
|
|
2698
|
-
temp3++;
|
|
2699
|
-
}
|
|
2700
|
-
if (temp3 > temp3Max) {
|
|
2701
|
-
temp3--;
|
|
2702
|
-
}
|
|
2703
|
-
if (temp3 * sextuple < temp3Max) {
|
|
2704
|
-
return temp1 + (temp2 - temp1) * sextuple * temp3;
|
|
2705
|
-
}
|
|
2706
|
-
if (temp3 * double < temp3Max) {
|
|
2707
|
-
return temp2;
|
|
2708
|
-
}
|
|
2709
|
-
if (temp3 * triple < temp3Max * double) {
|
|
2710
|
-
const temp3Offset = double / triple;
|
|
2711
|
-
return temp1 + (temp2 - temp1) * (temp3Offset - temp3) * sextuple;
|
|
2712
|
-
}
|
|
2713
|
-
return temp1;
|
|
2714
|
-
}, temp1 = lNormalized < half
|
|
1970
|
+
const temp1 = lNormalized < half
|
|
2715
1971
|
? lNormalized * (sNormalizedOffset + sNormalized)
|
|
2716
|
-
: lNormalized + sNormalized - lNormalized * sNormalized, temp2 = double * lNormalized - temp1, phaseThird = phaseNumerator / triple, red = Math.min(rgbMax, rgbMax *
|
|
1972
|
+
: lNormalized + sNormalized - lNormalized * sNormalized, temp2 = double * lNormalized - temp1, phaseThird = phaseNumerator / triple, red = Math.min(rgbMax, rgbMax * hslChannel(temp2, temp1, hNormalized + phaseThird)), green = Math.min(rgbMax, rgbMax * hslChannel(temp2, temp1, hNormalized)), blue = Math.min(rgbMax, rgbMax * hslChannel(temp2, temp1, hNormalized - phaseThird));
|
|
2717
1973
|
return { r: Math.round(red), g: Math.round(green), b: Math.round(blue) };
|
|
2718
1974
|
}
|
|
2719
1975
|
function hslaToRgba(hsla) {
|
|
@@ -2726,7 +1982,7 @@
|
|
|
2726
1982
|
};
|
|
2727
1983
|
}
|
|
2728
1984
|
function getRandomRgbColor(min) {
|
|
2729
|
-
const fixedMin = min ?? defaultRgbMin, fixedMax = rgbMax + identity$
|
|
1985
|
+
const fixedMin = min ?? defaultRgbMin, fixedMax = rgbMax + identity$1, getRgbInRangeValue = () => Math.floor(getRandomInRange(fixedMin, fixedMax));
|
|
2730
1986
|
return {
|
|
2731
1987
|
b: getRgbInRangeValue(),
|
|
2732
1988
|
g: getRgbInRangeValue(),
|
|
@@ -2737,21 +1993,18 @@
|
|
|
2737
1993
|
const op = opacity ?? defaultOpacity$1, key = `rgb-${color.r.toFixed(rgbFixedPrecision)}-${color.g.toFixed(rgbFixedPrecision)}-${color.b.toFixed(rgbFixedPrecision)}-${hdr ? "hdr" : "sdr"}-${op.toString()}`;
|
|
2738
1994
|
return getCachedStyle(key, () => (hdr ? getHdrStyleFromRgb(color, opacity) : getSdrStyleFromRgb(color, opacity)));
|
|
2739
1995
|
}
|
|
2740
|
-
function getHdrStyleFromRgb(color, opacity) {
|
|
2741
|
-
|
|
1996
|
+
function getHdrStyleFromRgb(color, opacity, peakNits = maxNits) {
|
|
1997
|
+
const headroom = peakNits / sdrReferenceWhiteNits;
|
|
1998
|
+
return `color(display-p3 ${((color.r / rgbMax) * headroom).toString()} ${((color.g / rgbMax) * headroom).toString()} ${((color.b / rgbMax) * headroom).toString()} / ${(opacity ?? defaultOpacity$1).toString()})`;
|
|
2742
1999
|
}
|
|
2743
2000
|
function getSdrStyleFromRgb(color, opacity) {
|
|
2744
2001
|
return `rgba(${color.r.toString()}, ${color.g.toString()}, ${color.b.toString()}, ${(opacity ?? defaultOpacity$1).toString()})`;
|
|
2745
2002
|
}
|
|
2746
2003
|
function getStyleFromHsl(color, hdr, opacity) {
|
|
2747
2004
|
const op = opacity ?? defaultOpacity$1, key = `hsl-${color.h.toFixed(hslFixedPrecision)}-${color.s.toFixed(hslFixedPrecision)}-${color.l.toFixed(hslFixedPrecision)}-${hdr ? "hdr" : "sdr"}-${op.toString()}`;
|
|
2748
|
-
return getCachedStyle(key, () =>
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
return getHdrStyleFromRgb(hslToRgb(color), opacity);
|
|
2752
|
-
}
|
|
2753
|
-
function getSdrStyleFromHsl(color, opacity) {
|
|
2754
|
-
return `hsla(${color.h.toString()}, ${color.s.toString()}%, ${color.l.toString()}%, ${(opacity ?? defaultOpacity$1).toString()})`;
|
|
2005
|
+
return getCachedStyle(key, () => hdr
|
|
2006
|
+
? getStyleFromRgb(hslToRgb(color), true, opacity)
|
|
2007
|
+
: `hsla(${color.h.toString()}, ${color.s.toString()}%, ${color.l.toString()}%, ${op.toString()})`);
|
|
2755
2008
|
}
|
|
2756
2009
|
function colorMix(color1, color2, size1, size2) {
|
|
2757
2010
|
let rgb1 = color1, rgb2 = color2;
|
|
@@ -3002,9 +2255,6 @@
|
|
|
3002
2255
|
if (isNull(data)) {
|
|
3003
2256
|
return;
|
|
3004
2257
|
}
|
|
3005
|
-
if (data.background !== undefined) {
|
|
3006
|
-
this.background = data.background;
|
|
3007
|
-
}
|
|
3008
2258
|
if (data.colors !== undefined) {
|
|
3009
2259
|
if (isArray(data.colors)) {
|
|
3010
2260
|
this.colors = [...data.colors];
|
|
@@ -3013,34 +2263,22 @@
|
|
|
3013
2263
|
this.colors = data.colors;
|
|
3014
2264
|
}
|
|
3015
2265
|
}
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
if (data.rate !== undefined) {
|
|
3026
|
-
this.rate = setRangeValue(data.rate);
|
|
3027
|
-
}
|
|
3028
|
-
if (data.saturation !== undefined) {
|
|
3029
|
-
this.saturation = setRangeValue(data.saturation);
|
|
3030
|
-
}
|
|
3031
|
-
if (data.sounds !== undefined) {
|
|
3032
|
-
this.sounds = data.sounds;
|
|
3033
|
-
}
|
|
3034
|
-
if (data.speed !== undefined) {
|
|
3035
|
-
this.speed = setRangeValue(data.speed);
|
|
3036
|
-
}
|
|
3037
|
-
if (data.splitCount !== undefined) {
|
|
3038
|
-
this.splitCount = setRangeValue(data.splitCount);
|
|
3039
|
-
}
|
|
2266
|
+
loadProperty(this, "background", data.background);
|
|
2267
|
+
loadRangeProperty(this, "brightness", data.brightness);
|
|
2268
|
+
loadRangeProperty(this, "gravity", data.gravity);
|
|
2269
|
+
loadRangeProperty(this, "minHeight", data.minHeight);
|
|
2270
|
+
loadRangeProperty(this, "rate", data.rate);
|
|
2271
|
+
loadRangeProperty(this, "saturation", data.saturation);
|
|
2272
|
+
loadProperty(this, "sounds", data.sounds);
|
|
2273
|
+
loadRangeProperty(this, "speed", data.speed);
|
|
2274
|
+
loadRangeProperty(this, "splitCount", data.splitCount);
|
|
3040
2275
|
}
|
|
3041
2276
|
}
|
|
3042
2277
|
|
|
3043
2278
|
const instances = new Map();
|
|
2279
|
+
function deleteFireworksInstance(id) {
|
|
2280
|
+
instances.delete(id);
|
|
2281
|
+
}
|
|
3044
2282
|
const explodeSoundCheck = (args) => {
|
|
3045
2283
|
const data = args.data;
|
|
3046
2284
|
return data?.particle?.options.move.gravity.enable ?? false;
|
|
@@ -3216,7 +2454,10 @@
|
|
|
3216
2454
|
return existing;
|
|
3217
2455
|
}
|
|
3218
2456
|
if (existing) {
|
|
3219
|
-
|
|
2457
|
+
if (!existing.destroyed) {
|
|
2458
|
+
return existing;
|
|
2459
|
+
}
|
|
2460
|
+
instances.delete(id);
|
|
3220
2461
|
}
|
|
3221
2462
|
const create = async () => {
|
|
3222
2463
|
const options = new FireworkOptions();
|
|
@@ -3226,7 +2467,7 @@
|
|
|
3226
2467
|
instances.delete(id);
|
|
3227
2468
|
return;
|
|
3228
2469
|
}
|
|
3229
|
-
const { FireworksInstance } = await Promise.resolve().then(function () { return FireworksInstance$1; }), instance = new FireworksInstance(container);
|
|
2470
|
+
const { FireworksInstance } = await Promise.resolve().then(function () { return FireworksInstance$1; }), instance = new FireworksInstance(container, id);
|
|
3230
2471
|
instances.set(id, instance);
|
|
3231
2472
|
return instance;
|
|
3232
2473
|
}, createPromise = create();
|
|
@@ -3235,22 +2476,14 @@
|
|
|
3235
2476
|
}
|
|
3236
2477
|
|
|
3237
2478
|
class Blend {
|
|
3238
|
-
enable;
|
|
3239
|
-
mode;
|
|
3240
|
-
constructor() {
|
|
3241
|
-
this.mode = "destination-out";
|
|
3242
|
-
this.enable = false;
|
|
3243
|
-
}
|
|
2479
|
+
enable = false;
|
|
2480
|
+
mode = "destination-out";
|
|
3244
2481
|
load(data) {
|
|
3245
2482
|
if (isNull(data)) {
|
|
3246
2483
|
return;
|
|
3247
2484
|
}
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
}
|
|
3251
|
-
if (data.enable !== undefined) {
|
|
3252
|
-
this.enable = data.enable;
|
|
3253
|
-
}
|
|
2485
|
+
loadProperty(this, "mode", data.mode);
|
|
2486
|
+
loadProperty(this, "enable", data.enable);
|
|
3254
2487
|
}
|
|
3255
2488
|
}
|
|
3256
2489
|
|
|
@@ -3280,7 +2513,7 @@
|
|
|
3280
2513
|
}
|
|
3281
2514
|
|
|
3282
2515
|
async function loadBlendPlugin(engine) {
|
|
3283
|
-
engine.checkVersion("4.
|
|
2516
|
+
engine.checkVersion("4.2.0");
|
|
3284
2517
|
await engine.pluginManager.register(e => {
|
|
3285
2518
|
e.pluginManager.addPlugin(new BlendPlugin());
|
|
3286
2519
|
});
|
|
@@ -3317,7 +2550,7 @@
|
|
|
3317
2550
|
}
|
|
3318
2551
|
|
|
3319
2552
|
async function loadCircleShape(engine) {
|
|
3320
|
-
engine.checkVersion("4.
|
|
2553
|
+
engine.checkVersion("4.2.0");
|
|
3321
2554
|
await engine.pluginManager.register(e => {
|
|
3322
2555
|
e.pluginManager.addShape(["circle"], () => {
|
|
3323
2556
|
return Promise.resolve(new CircleDrawer());
|
|
@@ -3365,7 +2598,7 @@
|
|
|
3365
2598
|
}
|
|
3366
2599
|
|
|
3367
2600
|
async function loadHexColorPlugin(engine) {
|
|
3368
|
-
engine.checkVersion("4.
|
|
2601
|
+
engine.checkVersion("4.2.0");
|
|
3369
2602
|
await engine.pluginManager.register(e => {
|
|
3370
2603
|
e.pluginManager.addColorManager("hex", new HexColorManager());
|
|
3371
2604
|
});
|
|
@@ -3388,103 +2621,215 @@
|
|
|
3388
2621
|
if (!("h" in hslColor) || !("s" in hslColor) || !("l" in hslColor)) {
|
|
3389
2622
|
return;
|
|
3390
2623
|
}
|
|
3391
|
-
return hslToRgb(hslColor);
|
|
2624
|
+
return hslToRgb(hslColor);
|
|
2625
|
+
}
|
|
2626
|
+
handleRangeColor(color) {
|
|
2627
|
+
const colorValue = color.value, hslColor = colorValue.hsl ?? color.value;
|
|
2628
|
+
if (!("h" in hslColor) || !("s" in hslColor) || !("l" in hslColor)) {
|
|
2629
|
+
return;
|
|
2630
|
+
}
|
|
2631
|
+
return hslToRgb({
|
|
2632
|
+
h: getRangeValue(hslColor.h),
|
|
2633
|
+
l: getRangeValue(hslColor.l),
|
|
2634
|
+
s: getRangeValue(hslColor.s),
|
|
2635
|
+
});
|
|
2636
|
+
}
|
|
2637
|
+
parseString(input) {
|
|
2638
|
+
if (!this.accepts(input)) {
|
|
2639
|
+
return;
|
|
2640
|
+
}
|
|
2641
|
+
const result = hslRegex.exec(input), minLength = 4, defaultAlpha = 1, radix = 10;
|
|
2642
|
+
return result
|
|
2643
|
+
? hslaToRgba({
|
|
2644
|
+
a: result.length > minLength ? parseAlpha(result[HslIndexes.a]) : defaultAlpha,
|
|
2645
|
+
h: Number.parseInt(result[HslIndexes.h] ?? "0", radix),
|
|
2646
|
+
l: Number.parseInt(result[HslIndexes.l] ?? "0", radix),
|
|
2647
|
+
s: Number.parseInt(result[HslIndexes.s] ?? "0", radix),
|
|
2648
|
+
})
|
|
2649
|
+
: undefined;
|
|
2650
|
+
}
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2653
|
+
async function loadHslColorPlugin(engine) {
|
|
2654
|
+
engine.checkVersion("4.2.0");
|
|
2655
|
+
await engine.pluginManager.register(e => {
|
|
2656
|
+
e.pluginManager.addColorManager("hsl", new HslColorManager());
|
|
2657
|
+
});
|
|
2658
|
+
}
|
|
2659
|
+
|
|
2660
|
+
class MovePlugin {
|
|
2661
|
+
id = "move";
|
|
2662
|
+
#pluginManager;
|
|
2663
|
+
constructor(pluginManager) {
|
|
2664
|
+
this.#pluginManager = pluginManager;
|
|
2665
|
+
}
|
|
2666
|
+
async getPlugin(container) {
|
|
2667
|
+
const { MovePluginInstance } = await Promise.resolve().then(function () { return MovePluginInstance$1; });
|
|
2668
|
+
return new MovePluginInstance(this.#pluginManager, container);
|
|
2669
|
+
}
|
|
2670
|
+
loadOptions() {
|
|
2671
|
+
}
|
|
2672
|
+
needsPlugin() {
|
|
2673
|
+
return true;
|
|
2674
|
+
}
|
|
2675
|
+
}
|
|
2676
|
+
|
|
2677
|
+
async function loadMovePlugin(engine) {
|
|
2678
|
+
engine.checkVersion("4.2.0");
|
|
2679
|
+
await engine.pluginManager.register(e => {
|
|
2680
|
+
const moveEngine = e, movePluginManager = moveEngine.pluginManager;
|
|
2681
|
+
movePluginManager.initializers.pathGenerators ??= new Map();
|
|
2682
|
+
movePluginManager.pathGenerators ??= new Map();
|
|
2683
|
+
movePluginManager.addPathGenerator = (name, generator) => {
|
|
2684
|
+
movePluginManager.initializers.pathGenerators ??= new Map();
|
|
2685
|
+
movePluginManager.initializers.pathGenerators.set(name, generator);
|
|
2686
|
+
};
|
|
2687
|
+
movePluginManager.getPathGenerators = async (container, force = false) => {
|
|
2688
|
+
movePluginManager.initializers.pathGenerators ??= new Map();
|
|
2689
|
+
movePluginManager.pathGenerators ??= new Map();
|
|
2690
|
+
return getItemMapFromInitializer(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);
|
|
2691
|
+
};
|
|
2692
|
+
e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));
|
|
2693
|
+
});
|
|
2694
|
+
}
|
|
2695
|
+
|
|
2696
|
+
function checkDestroy(particle, destroyType, value, minValue, maxValue) {
|
|
2697
|
+
switch (destroyType) {
|
|
2698
|
+
case exports.DestroyType.max:
|
|
2699
|
+
if (value >= maxValue) {
|
|
2700
|
+
particle.destroy();
|
|
2701
|
+
}
|
|
2702
|
+
break;
|
|
2703
|
+
case exports.DestroyType.min:
|
|
2704
|
+
if (value <= minValue) {
|
|
2705
|
+
particle.destroy();
|
|
2706
|
+
}
|
|
2707
|
+
break;
|
|
2708
|
+
}
|
|
2709
|
+
}
|
|
2710
|
+
function initParticleNumericAnimationValue(options, pxRatio) {
|
|
2711
|
+
const valueRange = options.value, animationOptions = options.animation, res = {
|
|
2712
|
+
delayTime: getRangeValue(animationOptions.delay) * millisecondsToSeconds,
|
|
2713
|
+
enable: animationOptions.enable,
|
|
2714
|
+
value: getRangeValue(options.value) * pxRatio,
|
|
2715
|
+
max: getRangeMax(valueRange) * pxRatio,
|
|
2716
|
+
min: getRangeMin(valueRange) * pxRatio,
|
|
2717
|
+
loops: 0,
|
|
2718
|
+
maxLoops: getRangeValue(animationOptions.count),
|
|
2719
|
+
time: 0,
|
|
2720
|
+
}, decayOffset = 1;
|
|
2721
|
+
if (animationOptions.enable) {
|
|
2722
|
+
res.decay = decayOffset - getRangeValue(animationOptions.decay);
|
|
2723
|
+
switch (animationOptions.mode) {
|
|
2724
|
+
case exports.AnimationMode.increase:
|
|
2725
|
+
res.status = exports.AnimationStatus.increasing;
|
|
2726
|
+
break;
|
|
2727
|
+
case exports.AnimationMode.decrease:
|
|
2728
|
+
res.status = exports.AnimationStatus.decreasing;
|
|
2729
|
+
break;
|
|
2730
|
+
case exports.AnimationMode.random:
|
|
2731
|
+
res.status = getRandom() >= half ? exports.AnimationStatus.increasing : exports.AnimationStatus.decreasing;
|
|
2732
|
+
break;
|
|
2733
|
+
}
|
|
2734
|
+
const autoStatus = animationOptions.mode === exports.AnimationMode.auto;
|
|
2735
|
+
switch (animationOptions.startValue) {
|
|
2736
|
+
case exports.StartValueType.min:
|
|
2737
|
+
res.value = res.min;
|
|
2738
|
+
if (autoStatus) {
|
|
2739
|
+
res.status = exports.AnimationStatus.increasing;
|
|
2740
|
+
}
|
|
2741
|
+
break;
|
|
2742
|
+
case exports.StartValueType.max:
|
|
2743
|
+
res.value = res.max;
|
|
2744
|
+
if (autoStatus) {
|
|
2745
|
+
res.status = exports.AnimationStatus.decreasing;
|
|
2746
|
+
}
|
|
2747
|
+
break;
|
|
2748
|
+
case exports.StartValueType.random:
|
|
2749
|
+
default:
|
|
2750
|
+
res.value = randomInRangeValue(res);
|
|
2751
|
+
if (autoStatus) {
|
|
2752
|
+
res.status = getRandom() >= half ? exports.AnimationStatus.increasing : exports.AnimationStatus.decreasing;
|
|
2753
|
+
}
|
|
2754
|
+
break;
|
|
2755
|
+
}
|
|
3392
2756
|
}
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
});
|
|
2757
|
+
res.initialValue = res.value;
|
|
2758
|
+
return res;
|
|
2759
|
+
}
|
|
2760
|
+
function updateAnimation(particle, data, changeDirection, destroyType, delta) {
|
|
2761
|
+
const minLoops = 0, minDelay = 0, identity = 1, minVelocity = 0, minDecay = 1;
|
|
2762
|
+
if (particle.destroyed ||
|
|
2763
|
+
!data.enable ||
|
|
2764
|
+
((data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops))) {
|
|
2765
|
+
return;
|
|
3403
2766
|
}
|
|
3404
|
-
|
|
3405
|
-
|
|
2767
|
+
const velocity = (data.velocity ?? minVelocity) * delta.factor, minValue = data.min, maxValue = data.max, decay = data.decay ?? minDecay;
|
|
2768
|
+
data.time ??= 0;
|
|
2769
|
+
const delayTime = data.delayTime ?? minDelay;
|
|
2770
|
+
if (delayTime > minDelay && data.time < delayTime) {
|
|
2771
|
+
data.time += delta.value;
|
|
2772
|
+
if (data.time < delayTime) {
|
|
3406
2773
|
return;
|
|
3407
2774
|
}
|
|
3408
|
-
const result = hslRegex.exec(input), minLength = 4, defaultAlpha = 1, radix = 10;
|
|
3409
|
-
return result
|
|
3410
|
-
? hslaToRgba({
|
|
3411
|
-
a: result.length > minLength ? parseAlpha(result[HslIndexes.a]) : defaultAlpha,
|
|
3412
|
-
h: Number.parseInt(result[HslIndexes.h] ?? "0", radix),
|
|
3413
|
-
l: Number.parseInt(result[HslIndexes.l] ?? "0", radix),
|
|
3414
|
-
s: Number.parseInt(result[HslIndexes.s] ?? "0", radix),
|
|
3415
|
-
})
|
|
3416
|
-
: undefined;
|
|
3417
2775
|
}
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
}
|
|
3426
|
-
|
|
3427
|
-
class MovePlugin {
|
|
3428
|
-
id = "move";
|
|
3429
|
-
#pluginManager;
|
|
3430
|
-
constructor(pluginManager) {
|
|
3431
|
-
this.#pluginManager = pluginManager;
|
|
2776
|
+
switch (data.status) {
|
|
2777
|
+
case exports.AnimationStatus.increasing:
|
|
2778
|
+
data.value += velocity;
|
|
2779
|
+
break;
|
|
2780
|
+
case exports.AnimationStatus.decreasing:
|
|
2781
|
+
data.value -= velocity;
|
|
2782
|
+
break;
|
|
3432
2783
|
}
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
return new MovePluginInstance(this.#pluginManager, container);
|
|
2784
|
+
if (data.velocity && decay !== identity) {
|
|
2785
|
+
data.velocity *= decay;
|
|
3436
2786
|
}
|
|
3437
|
-
|
|
2787
|
+
switch (data.status) {
|
|
2788
|
+
case exports.AnimationStatus.increasing:
|
|
2789
|
+
if (data.value >= maxValue) {
|
|
2790
|
+
if (changeDirection) {
|
|
2791
|
+
data.status = exports.AnimationStatus.decreasing;
|
|
2792
|
+
}
|
|
2793
|
+
else {
|
|
2794
|
+
data.value -= maxValue;
|
|
2795
|
+
}
|
|
2796
|
+
data.loops ??= minLoops;
|
|
2797
|
+
data.loops++;
|
|
2798
|
+
}
|
|
2799
|
+
break;
|
|
2800
|
+
case exports.AnimationStatus.decreasing:
|
|
2801
|
+
if (data.value <= minValue) {
|
|
2802
|
+
if (changeDirection) {
|
|
2803
|
+
data.status = exports.AnimationStatus.increasing;
|
|
2804
|
+
}
|
|
2805
|
+
else {
|
|
2806
|
+
data.value += maxValue;
|
|
2807
|
+
}
|
|
2808
|
+
data.loops ??= minLoops;
|
|
2809
|
+
data.loops++;
|
|
2810
|
+
}
|
|
2811
|
+
break;
|
|
3438
2812
|
}
|
|
3439
|
-
|
|
3440
|
-
|
|
2813
|
+
checkDestroy(particle, destroyType, data.value, minValue, maxValue);
|
|
2814
|
+
if (!particle.destroyed) {
|
|
2815
|
+
data.value = clamp(data.value, minValue, maxValue);
|
|
3441
2816
|
}
|
|
3442
2817
|
}
|
|
3443
2818
|
|
|
3444
|
-
async function loadMovePlugin(engine) {
|
|
3445
|
-
engine.checkVersion("4.1.3");
|
|
3446
|
-
await engine.pluginManager.register(e => {
|
|
3447
|
-
const moveEngine = e, movePluginManager = moveEngine.pluginManager;
|
|
3448
|
-
movePluginManager.initializers.pathGenerators ??= new Map();
|
|
3449
|
-
movePluginManager.pathGenerators ??= new Map();
|
|
3450
|
-
movePluginManager.addPathGenerator = (name, generator) => {
|
|
3451
|
-
movePluginManager.initializers.pathGenerators ??= new Map();
|
|
3452
|
-
movePluginManager.initializers.pathGenerators.set(name, generator);
|
|
3453
|
-
};
|
|
3454
|
-
movePluginManager.getPathGenerators = async (container, force = false) => {
|
|
3455
|
-
movePluginManager.initializers.pathGenerators ??= new Map();
|
|
3456
|
-
movePluginManager.pathGenerators ??= new Map();
|
|
3457
|
-
return getItemMapFromInitializer(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);
|
|
3458
|
-
};
|
|
3459
|
-
e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));
|
|
3460
|
-
});
|
|
3461
|
-
}
|
|
3462
|
-
|
|
3463
2819
|
class OpacityAnimation extends RangedAnimationOptions {
|
|
3464
|
-
destroy;
|
|
3465
|
-
constructor() {
|
|
3466
|
-
super();
|
|
3467
|
-
this.destroy = exports.DestroyType.none;
|
|
3468
|
-
this.speed = 2;
|
|
3469
|
-
}
|
|
2820
|
+
destroy = exports.DestroyType.none;
|
|
3470
2821
|
load(data) {
|
|
3471
2822
|
super.load(data);
|
|
3472
2823
|
if (isNull(data)) {
|
|
3473
2824
|
return;
|
|
3474
2825
|
}
|
|
3475
|
-
|
|
3476
|
-
this.destroy = data.destroy;
|
|
3477
|
-
}
|
|
2826
|
+
loadProperty(this, "destroy", data.destroy);
|
|
3478
2827
|
}
|
|
3479
2828
|
}
|
|
3480
2829
|
|
|
3481
2830
|
class Opacity extends RangedAnimationValueWithRandom {
|
|
3482
|
-
animation;
|
|
3483
|
-
|
|
3484
|
-
super();
|
|
3485
|
-
this.animation = new OpacityAnimation();
|
|
3486
|
-
this.value = 1;
|
|
3487
|
-
}
|
|
2831
|
+
animation = new OpacityAnimation();
|
|
2832
|
+
value = 1;
|
|
3488
2833
|
load(data) {
|
|
3489
2834
|
if (isNull(data)) {
|
|
3490
2835
|
return;
|
|
@@ -3528,10 +2873,7 @@
|
|
|
3528
2873
|
(particle.opacity.loops ?? none) < (particle.opacity.maxLoops ?? none))));
|
|
3529
2874
|
}
|
|
3530
2875
|
loadOptions(options, ...sources) {
|
|
3531
|
-
options
|
|
3532
|
-
for (const source of sources) {
|
|
3533
|
-
options.opacity.load(source?.opacity);
|
|
3534
|
-
}
|
|
2876
|
+
loadOptionProperty(options, "opacity", Opacity, ...sources);
|
|
3535
2877
|
}
|
|
3536
2878
|
reset(particle) {
|
|
3537
2879
|
if (!particle.opacity) {
|
|
@@ -3549,7 +2891,7 @@
|
|
|
3549
2891
|
}
|
|
3550
2892
|
|
|
3551
2893
|
async function loadOpacityUpdater(engine) {
|
|
3552
|
-
engine.checkVersion("4.
|
|
2894
|
+
engine.checkVersion("4.2.0");
|
|
3553
2895
|
await engine.pluginManager.register(e => {
|
|
3554
2896
|
e.pluginManager.addParticleUpdater("opacity", container => {
|
|
3555
2897
|
return Promise.resolve(new OpacityUpdater(container));
|
|
@@ -3557,7 +2899,7 @@
|
|
|
3557
2899
|
});
|
|
3558
2900
|
}
|
|
3559
2901
|
|
|
3560
|
-
const
|
|
2902
|
+
const boundsMin = 0;
|
|
3561
2903
|
function bounceHorizontal(data) {
|
|
3562
2904
|
if ((data.outMode !== exports.OutMode.bounce && data.outMode !== exports.OutMode.split) ||
|
|
3563
2905
|
(data.direction !== exports.OutModeDirection.left && data.direction !== exports.OutModeDirection.right)) {
|
|
@@ -3572,8 +2914,8 @@
|
|
|
3572
2914
|
const velocity = data.particle.velocity.x;
|
|
3573
2915
|
let bounced = false;
|
|
3574
2916
|
if (data.outOfCanvas &&
|
|
3575
|
-
((data.direction === exports.OutModeDirection.right && velocity > minVelocity
|
|
3576
|
-
(data.direction === exports.OutModeDirection.left && velocity < minVelocity
|
|
2917
|
+
((data.direction === exports.OutModeDirection.right && velocity > minVelocity) ||
|
|
2918
|
+
(data.direction === exports.OutModeDirection.left && velocity < minVelocity))) {
|
|
3577
2919
|
const newVelocity = getRangeValue(data.particle.options.bounce.horizontal.value);
|
|
3578
2920
|
data.particle.velocity.x *= -newVelocity;
|
|
3579
2921
|
bounced = true;
|
|
@@ -3606,8 +2948,8 @@
|
|
|
3606
2948
|
const velocity = data.particle.velocity.y;
|
|
3607
2949
|
let bounced = false;
|
|
3608
2950
|
if (data.outOfCanvas &&
|
|
3609
|
-
((data.direction === exports.OutModeDirection.bottom && velocity > minVelocity
|
|
3610
|
-
(data.direction === exports.OutModeDirection.top && velocity < minVelocity
|
|
2951
|
+
((data.direction === exports.OutModeDirection.bottom && velocity > minVelocity) ||
|
|
2952
|
+
(data.direction === exports.OutModeDirection.top && velocity < minVelocity))) {
|
|
3611
2953
|
const newVelocity = getRangeValue(data.particle.options.bounce.vertical.value);
|
|
3612
2954
|
data.particle.velocity.y *= -newVelocity;
|
|
3613
2955
|
bounced = true;
|
|
@@ -3660,7 +3002,6 @@
|
|
|
3660
3002
|
}
|
|
3661
3003
|
}
|
|
3662
3004
|
|
|
3663
|
-
const minVelocity$3 = 0;
|
|
3664
3005
|
class DestroyOutMode {
|
|
3665
3006
|
modes;
|
|
3666
3007
|
constructor(_container) {
|
|
@@ -3679,10 +3020,10 @@
|
|
|
3679
3020
|
break;
|
|
3680
3021
|
case exports.ParticleOutType.inside: {
|
|
3681
3022
|
const { dx, dy } = getDistances(particle.position, particle.moveCenter), { x: vx, y: vy } = particle.velocity;
|
|
3682
|
-
if ((vx < minVelocity
|
|
3683
|
-
(vy < minVelocity
|
|
3684
|
-
(vx >= minVelocity
|
|
3685
|
-
(vy >= minVelocity
|
|
3023
|
+
if ((vx < minVelocity && dx > particle.moveCenter.radius) ||
|
|
3024
|
+
(vy < minVelocity && dy > particle.moveCenter.radius) ||
|
|
3025
|
+
(vx >= minVelocity && dx < -particle.moveCenter.radius) ||
|
|
3026
|
+
(vy >= minVelocity && dy < -particle.moveCenter.radius)) {
|
|
3686
3027
|
return;
|
|
3687
3028
|
}
|
|
3688
3029
|
break;
|
|
@@ -3692,7 +3033,6 @@
|
|
|
3692
3033
|
}
|
|
3693
3034
|
}
|
|
3694
3035
|
|
|
3695
|
-
const minVelocity$2 = 0;
|
|
3696
3036
|
class NoneOutMode {
|
|
3697
3037
|
modes;
|
|
3698
3038
|
#container;
|
|
@@ -3712,10 +3052,10 @@
|
|
|
3712
3052
|
}
|
|
3713
3053
|
const gravityOptions = particle.options.move.gravity, container = this.#container, canvasSize = container.canvas.size, pRadius = particle.getRadius();
|
|
3714
3054
|
if (!gravityOptions.enable) {
|
|
3715
|
-
if ((particle.velocity.y > minVelocity
|
|
3716
|
-
(particle.velocity.y < minVelocity
|
|
3717
|
-
(particle.velocity.x > minVelocity
|
|
3718
|
-
(particle.velocity.x < minVelocity
|
|
3055
|
+
if ((particle.velocity.y > minVelocity && particle.position.y <= canvasSize.height + pRadius) ||
|
|
3056
|
+
(particle.velocity.y < minVelocity && particle.position.y >= -pRadius) ||
|
|
3057
|
+
(particle.velocity.x > minVelocity && particle.position.x <= canvasSize.width + pRadius) ||
|
|
3058
|
+
(particle.velocity.x < minVelocity && particle.position.x >= -pRadius)) {
|
|
3719
3059
|
return;
|
|
3720
3060
|
}
|
|
3721
3061
|
if (!isPointInside(particle.position, container.canvas.size, originPoint, pRadius, direction)) {
|
|
@@ -3734,7 +3074,7 @@
|
|
|
3734
3074
|
}
|
|
3735
3075
|
}
|
|
3736
3076
|
|
|
3737
|
-
const
|
|
3077
|
+
const updateVector = Vector.origin;
|
|
3738
3078
|
class OutOutMode {
|
|
3739
3079
|
modes;
|
|
3740
3080
|
#container;
|
|
@@ -3755,10 +3095,10 @@
|
|
|
3755
3095
|
updateVector.angle = particle.velocity.angle + Math.PI;
|
|
3756
3096
|
updateVector.addTo(particle.moveCenter);
|
|
3757
3097
|
const { dx, dy } = getDistances(particle.position, updateVector);
|
|
3758
|
-
if ((vx <= minVelocity
|
|
3759
|
-
(vy <= minVelocity
|
|
3760
|
-
(vx >= minVelocity
|
|
3761
|
-
(vy >= minVelocity
|
|
3098
|
+
if ((vx <= minVelocity && dx >= minDistance) ||
|
|
3099
|
+
(vy <= minVelocity && dy >= minDistance) ||
|
|
3100
|
+
(vx >= minVelocity && dx <= minDistance) ||
|
|
3101
|
+
(vy >= minVelocity && dy <= minDistance)) {
|
|
3762
3102
|
return;
|
|
3763
3103
|
}
|
|
3764
3104
|
particle.position.x = Math.floor(randomInRangeValue({
|
|
@@ -3882,21 +3222,21 @@
|
|
|
3882
3222
|
this.#updateOutMode(particle, delta, outModes.right ?? outModes.default, exports.OutModeDirection.right);
|
|
3883
3223
|
this.#updateOutMode(particle, delta, outModes.top ?? outModes.default, exports.OutModeDirection.top);
|
|
3884
3224
|
}
|
|
3885
|
-
#addUpdaterIfMissing
|
|
3225
|
+
#addUpdaterIfMissing(particle, outMode, getUpdater) {
|
|
3886
3226
|
const outModes = particle.options.move.outModes;
|
|
3887
3227
|
if (!this.updaters.has(outMode) && checkOutMode(outModes, outMode)) {
|
|
3888
3228
|
this.updaters.set(outMode, getUpdater(this.#container));
|
|
3889
3229
|
}
|
|
3890
|
-
}
|
|
3891
|
-
#updateOutMode
|
|
3230
|
+
}
|
|
3231
|
+
#updateOutMode(particle, delta, outMode, direction) {
|
|
3892
3232
|
for (const updater of this.updaters.values()) {
|
|
3893
3233
|
updater.update(particle, direction, delta, outMode);
|
|
3894
3234
|
}
|
|
3895
|
-
}
|
|
3235
|
+
}
|
|
3896
3236
|
}
|
|
3897
3237
|
|
|
3898
3238
|
async function loadOutModesUpdater(engine) {
|
|
3899
|
-
engine.checkVersion("4.
|
|
3239
|
+
engine.checkVersion("4.2.0");
|
|
3900
3240
|
await engine.pluginManager.register(e => {
|
|
3901
3241
|
e.pluginManager.addParticleUpdater("outModes", container => {
|
|
3902
3242
|
return Promise.resolve(new OutOfCanvasUpdater(container));
|
|
@@ -3967,7 +3307,7 @@
|
|
|
3967
3307
|
}
|
|
3968
3308
|
|
|
3969
3309
|
async function loadPaintUpdater(engine) {
|
|
3970
|
-
engine.checkVersion("4.
|
|
3310
|
+
engine.checkVersion("4.2.0");
|
|
3971
3311
|
await engine.pluginManager.register(e => {
|
|
3972
3312
|
e.pluginManager.addParticleUpdater("paint", container => {
|
|
3973
3313
|
return Promise.resolve(new PaintUpdater(e.pluginManager, container));
|
|
@@ -4022,37 +3362,26 @@
|
|
|
4022
3362
|
}
|
|
4023
3363
|
|
|
4024
3364
|
async function loadRgbColorPlugin(engine) {
|
|
4025
|
-
engine.checkVersion("4.
|
|
3365
|
+
engine.checkVersion("4.2.0");
|
|
4026
3366
|
await engine.pluginManager.register(e => {
|
|
4027
3367
|
e.pluginManager.addColorManager("rgb", new RgbColorManager());
|
|
4028
3368
|
});
|
|
4029
3369
|
}
|
|
4030
3370
|
|
|
4031
3371
|
class SizeAnimation extends RangedAnimationOptions {
|
|
4032
|
-
destroy;
|
|
4033
|
-
constructor() {
|
|
4034
|
-
super();
|
|
4035
|
-
this.destroy = exports.DestroyType.none;
|
|
4036
|
-
this.speed = 5;
|
|
4037
|
-
}
|
|
3372
|
+
destroy = exports.DestroyType.none;
|
|
4038
3373
|
load(data) {
|
|
4039
3374
|
super.load(data);
|
|
4040
3375
|
if (isNull(data)) {
|
|
4041
3376
|
return;
|
|
4042
3377
|
}
|
|
4043
|
-
|
|
4044
|
-
this.destroy = data.destroy;
|
|
4045
|
-
}
|
|
3378
|
+
loadProperty(this, "destroy", data.destroy);
|
|
4046
3379
|
}
|
|
4047
3380
|
}
|
|
4048
3381
|
|
|
4049
3382
|
class Size extends RangedAnimationValueWithRandom {
|
|
4050
|
-
animation;
|
|
4051
|
-
|
|
4052
|
-
super();
|
|
4053
|
-
this.animation = new SizeAnimation();
|
|
4054
|
-
this.value = 3;
|
|
4055
|
-
}
|
|
3383
|
+
animation = new SizeAnimation();
|
|
3384
|
+
value = 3;
|
|
4056
3385
|
load(data) {
|
|
4057
3386
|
super.load(data);
|
|
4058
3387
|
if (isNull(data)) {
|
|
@@ -4095,10 +3424,7 @@
|
|
|
4095
3424
|
(particle.size.loops ?? minLoops) < (particle.size.maxLoops ?? minLoops))));
|
|
4096
3425
|
}
|
|
4097
3426
|
loadOptions(options, ...sources) {
|
|
4098
|
-
options
|
|
4099
|
-
for (const source of sources) {
|
|
4100
|
-
options.size.load(source?.size);
|
|
4101
|
-
}
|
|
3427
|
+
loadOptionProperty(options, "size", Size, ...sources);
|
|
4102
3428
|
}
|
|
4103
3429
|
preInit(particle) {
|
|
4104
3430
|
const pxRatio = this.#container.retina.pixelRatio, options = particle.options, sizeOptions = options.size;
|
|
@@ -4121,7 +3447,7 @@
|
|
|
4121
3447
|
}
|
|
4122
3448
|
|
|
4123
3449
|
async function loadSizeUpdater(engine) {
|
|
4124
|
-
engine.checkVersion("4.
|
|
3450
|
+
engine.checkVersion("4.2.0");
|
|
4125
3451
|
await engine.pluginManager.register(e => {
|
|
4126
3452
|
e.pluginManager.addParticleUpdater("size", container => {
|
|
4127
3453
|
return Promise.resolve(new SizeUpdater(container));
|
|
@@ -4130,7 +3456,7 @@
|
|
|
4130
3456
|
}
|
|
4131
3457
|
|
|
4132
3458
|
async function loadBasic(engine) {
|
|
4133
|
-
engine.checkVersion("4.
|
|
3459
|
+
engine.checkVersion("4.2.0");
|
|
4134
3460
|
await engine.pluginManager.register(async (e) => {
|
|
4135
3461
|
await Promise.all([
|
|
4136
3462
|
loadBlendPlugin(e),
|
|
@@ -4156,18 +3482,10 @@
|
|
|
4156
3482
|
if (isNull(data)) {
|
|
4157
3483
|
return;
|
|
4158
3484
|
}
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
this.left = setRangeValue(data.left);
|
|
4164
|
-
}
|
|
4165
|
-
if (data.right !== undefined) {
|
|
4166
|
-
this.right = setRangeValue(data.right);
|
|
4167
|
-
}
|
|
4168
|
-
if (data.top !== undefined) {
|
|
4169
|
-
this.top = setRangeValue(data.top);
|
|
4170
|
-
}
|
|
3485
|
+
loadRangeProperty(this, "bottom", data.bottom);
|
|
3486
|
+
loadRangeProperty(this, "left", data.left);
|
|
3487
|
+
loadRangeProperty(this, "right", data.right);
|
|
3488
|
+
loadRangeProperty(this, "top", data.top);
|
|
4171
3489
|
}
|
|
4172
3490
|
}
|
|
4173
3491
|
|
|
@@ -4179,55 +3497,35 @@
|
|
|
4179
3497
|
})(DestroyMode || (DestroyMode = {}));
|
|
4180
3498
|
|
|
4181
3499
|
class Explode {
|
|
4182
|
-
maxSizeFactor;
|
|
4183
|
-
speed;
|
|
4184
|
-
constructor() {
|
|
4185
|
-
this.maxSizeFactor = 3;
|
|
4186
|
-
this.speed = 2;
|
|
4187
|
-
}
|
|
3500
|
+
maxSizeFactor = 3;
|
|
3501
|
+
speed = 2;
|
|
4188
3502
|
load(data) {
|
|
4189
3503
|
if (isNull(data)) {
|
|
4190
3504
|
return;
|
|
4191
3505
|
}
|
|
4192
|
-
|
|
4193
|
-
|
|
4194
|
-
}
|
|
4195
|
-
if (data.speed !== undefined) {
|
|
4196
|
-
this.speed = data.speed;
|
|
4197
|
-
}
|
|
3506
|
+
loadProperty(this, "maxSizeFactor", data.maxSizeFactor);
|
|
3507
|
+
loadProperty(this, "speed", data.speed);
|
|
4198
3508
|
}
|
|
4199
3509
|
}
|
|
4200
3510
|
|
|
4201
3511
|
class SplitFactor extends ValueWithRandom {
|
|
4202
|
-
|
|
4203
|
-
super();
|
|
4204
|
-
this.value = 3;
|
|
4205
|
-
}
|
|
3512
|
+
value = 3;
|
|
4206
3513
|
}
|
|
4207
3514
|
|
|
4208
3515
|
class SplitRate extends ValueWithRandom {
|
|
4209
|
-
|
|
4210
|
-
super();
|
|
4211
|
-
this.value = { min: 4, max: 9 };
|
|
4212
|
-
}
|
|
3516
|
+
value = { min: 4, max: 9 };
|
|
4213
3517
|
}
|
|
4214
3518
|
|
|
4215
3519
|
class Split {
|
|
4216
|
-
count;
|
|
4217
|
-
factor;
|
|
3520
|
+
count = 1;
|
|
3521
|
+
factor = new SplitFactor();
|
|
4218
3522
|
fillColor;
|
|
4219
3523
|
fillColorOffset;
|
|
4220
3524
|
particles;
|
|
4221
|
-
rate;
|
|
4222
|
-
sizeOffset;
|
|
3525
|
+
rate = new SplitRate();
|
|
3526
|
+
sizeOffset = true;
|
|
4223
3527
|
strokeColor;
|
|
4224
3528
|
strokeColorOffset;
|
|
4225
|
-
constructor() {
|
|
4226
|
-
this.count = 1;
|
|
4227
|
-
this.factor = new SplitFactor();
|
|
4228
|
-
this.rate = new SplitRate();
|
|
4229
|
-
this.sizeOffset = true;
|
|
4230
|
-
}
|
|
4231
3529
|
load(data) {
|
|
4232
3530
|
if (isNull(data)) {
|
|
4233
3531
|
return;
|
|
@@ -4238,17 +3536,13 @@
|
|
|
4238
3536
|
if (data.strokeColor !== undefined) {
|
|
4239
3537
|
this.strokeColor = OptionsColor.create(this.strokeColor, data.strokeColor);
|
|
4240
3538
|
}
|
|
4241
|
-
|
|
4242
|
-
this.count = data.count;
|
|
4243
|
-
}
|
|
3539
|
+
loadProperty(this, "count", data.count);
|
|
4244
3540
|
this.factor.load(data.factor);
|
|
4245
3541
|
this.rate.load(data.rate);
|
|
4246
3542
|
this.particles = executeOnSingleOrMultiple(data.particles, particles => {
|
|
4247
3543
|
return deepExtend({}, particles);
|
|
4248
3544
|
});
|
|
4249
|
-
|
|
4250
|
-
this.sizeOffset = data.sizeOffset;
|
|
4251
|
-
}
|
|
3545
|
+
loadProperty(this, "sizeOffset", data.sizeOffset);
|
|
4252
3546
|
if (data.fillColorOffset) {
|
|
4253
3547
|
this.fillColorOffset = this.fillColorOffset ?? {};
|
|
4254
3548
|
if (data.fillColorOffset.h !== undefined) {
|
|
@@ -4277,16 +3571,10 @@
|
|
|
4277
3571
|
}
|
|
4278
3572
|
|
|
4279
3573
|
class Destroy {
|
|
4280
|
-
bounds;
|
|
4281
|
-
explode;
|
|
4282
|
-
mode;
|
|
4283
|
-
split;
|
|
4284
|
-
constructor() {
|
|
4285
|
-
this.bounds = new DestroyBounds();
|
|
4286
|
-
this.explode = new Explode();
|
|
4287
|
-
this.mode = DestroyMode.none;
|
|
4288
|
-
this.split = new Split();
|
|
4289
|
-
}
|
|
3574
|
+
bounds = new DestroyBounds();
|
|
3575
|
+
explode = new Explode();
|
|
3576
|
+
mode = DestroyMode.none;
|
|
3577
|
+
split = new Split();
|
|
4290
3578
|
load(data) {
|
|
4291
3579
|
if (isNull(data)) {
|
|
4292
3580
|
return;
|
|
@@ -4347,7 +3635,7 @@
|
|
|
4347
3635
|
mode: exports.PixelMode.precise,
|
|
4348
3636
|
},
|
|
4349
3637
|
});
|
|
4350
|
-
const factor = identity$
|
|
3638
|
+
const factor = identity$1 / getRangeValue(splitOptions.factor.value), sizeOptions = splitParticleOptions["size"];
|
|
4351
3639
|
if (sizeOptions) {
|
|
4352
3640
|
if (isNumber(sizeOptions.value)) {
|
|
4353
3641
|
sizeOptions.value *= factor;
|
|
@@ -4434,10 +3722,7 @@
|
|
|
4434
3722
|
return !destroyParticle.destroyed || !!destroyParticle.exploding;
|
|
4435
3723
|
}
|
|
4436
3724
|
loadOptions(options, ...sources) {
|
|
4437
|
-
options
|
|
4438
|
-
for (const source of sources) {
|
|
4439
|
-
options.destroy.load(source?.destroy);
|
|
4440
|
-
}
|
|
3725
|
+
loadOptionProperty(options, "destroy", Destroy, ...sources);
|
|
4441
3726
|
}
|
|
4442
3727
|
particleDestroyed(particle, override) {
|
|
4443
3728
|
if (override) {
|
|
@@ -4502,7 +3787,7 @@
|
|
|
4502
3787
|
}
|
|
4503
3788
|
|
|
4504
3789
|
async function loadDestroyUpdater(engine) {
|
|
4505
|
-
engine.checkVersion("4.
|
|
3790
|
+
engine.checkVersion("4.2.0");
|
|
4506
3791
|
await engine.pluginManager.register(e => {
|
|
4507
3792
|
e.pluginManager.addParticleUpdater("destroy", container => {
|
|
4508
3793
|
return Promise.resolve(new DestroyUpdater(e.pluginManager, container));
|
|
@@ -4514,78 +3799,46 @@
|
|
|
4514
3799
|
count;
|
|
4515
3800
|
delay;
|
|
4516
3801
|
duration;
|
|
4517
|
-
wait;
|
|
4518
|
-
constructor() {
|
|
4519
|
-
this.wait = false;
|
|
4520
|
-
}
|
|
3802
|
+
wait = false;
|
|
4521
3803
|
load(data) {
|
|
4522
3804
|
if (isNull(data)) {
|
|
4523
3805
|
return;
|
|
4524
3806
|
}
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
this.delay = setRangeValue(data.delay);
|
|
4530
|
-
}
|
|
4531
|
-
if (data.duration !== undefined) {
|
|
4532
|
-
this.duration = setRangeValue(data.duration);
|
|
4533
|
-
}
|
|
4534
|
-
if (data.wait !== undefined) {
|
|
4535
|
-
this.wait = data.wait;
|
|
4536
|
-
}
|
|
3807
|
+
loadProperty(this, "count", data.count);
|
|
3808
|
+
loadRangeProperty(this, "delay", data.delay);
|
|
3809
|
+
loadRangeProperty(this, "duration", data.duration);
|
|
3810
|
+
loadProperty(this, "wait", data.wait);
|
|
4537
3811
|
}
|
|
4538
3812
|
}
|
|
4539
3813
|
|
|
4540
3814
|
class EmitterRate {
|
|
4541
|
-
delay;
|
|
4542
|
-
quantity;
|
|
4543
|
-
constructor() {
|
|
4544
|
-
this.quantity = 1;
|
|
4545
|
-
this.delay = 0.1;
|
|
4546
|
-
}
|
|
3815
|
+
delay = 0.1;
|
|
3816
|
+
quantity = 1;
|
|
4547
3817
|
load(data) {
|
|
4548
3818
|
if (isNull(data)) {
|
|
4549
3819
|
return;
|
|
4550
3820
|
}
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
}
|
|
4554
|
-
if (data.delay !== undefined) {
|
|
4555
|
-
this.delay = setRangeValue(data.delay);
|
|
4556
|
-
}
|
|
3821
|
+
loadRangeProperty(this, "quantity", data.quantity);
|
|
3822
|
+
loadRangeProperty(this, "delay", data.delay);
|
|
4557
3823
|
}
|
|
4558
3824
|
}
|
|
4559
3825
|
|
|
4560
3826
|
class EmitterShapeReplace {
|
|
4561
|
-
color;
|
|
4562
|
-
opacity;
|
|
4563
|
-
constructor() {
|
|
4564
|
-
this.color = false;
|
|
4565
|
-
this.opacity = false;
|
|
4566
|
-
}
|
|
3827
|
+
color = false;
|
|
3828
|
+
opacity = false;
|
|
4567
3829
|
load(data) {
|
|
4568
3830
|
if (isNull(data)) {
|
|
4569
3831
|
return;
|
|
4570
3832
|
}
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
}
|
|
4574
|
-
if (data.opacity !== undefined) {
|
|
4575
|
-
this.opacity = data.opacity;
|
|
4576
|
-
}
|
|
3833
|
+
loadProperty(this, "color", data.color);
|
|
3834
|
+
loadProperty(this, "opacity", data.opacity);
|
|
4577
3835
|
}
|
|
4578
3836
|
}
|
|
4579
3837
|
|
|
4580
3838
|
class EmitterShape {
|
|
4581
|
-
options;
|
|
4582
|
-
replace;
|
|
4583
|
-
type;
|
|
4584
|
-
constructor() {
|
|
4585
|
-
this.options = {};
|
|
4586
|
-
this.replace = new EmitterShapeReplace();
|
|
4587
|
-
this.type = "square";
|
|
4588
|
-
}
|
|
3839
|
+
options = {};
|
|
3840
|
+
replace = new EmitterShapeReplace();
|
|
3841
|
+
type = "square";
|
|
4589
3842
|
load(data) {
|
|
4590
3843
|
if (isNull(data)) {
|
|
4591
3844
|
return;
|
|
@@ -4594,34 +3847,21 @@
|
|
|
4594
3847
|
this.options = deepExtend({}, data.options ?? {});
|
|
4595
3848
|
}
|
|
4596
3849
|
this.replace.load(data.replace);
|
|
4597
|
-
|
|
4598
|
-
this.type = data.type;
|
|
4599
|
-
}
|
|
3850
|
+
loadProperty(this, "type", data.type);
|
|
4600
3851
|
}
|
|
4601
3852
|
}
|
|
4602
3853
|
|
|
4603
3854
|
class EmitterSize {
|
|
4604
|
-
height;
|
|
4605
|
-
mode;
|
|
4606
|
-
width;
|
|
4607
|
-
constructor() {
|
|
4608
|
-
this.mode = exports.PixelMode.percent;
|
|
4609
|
-
this.height = 0;
|
|
4610
|
-
this.width = 0;
|
|
4611
|
-
}
|
|
3855
|
+
height = 0;
|
|
3856
|
+
mode = exports.PixelMode.percent;
|
|
3857
|
+
width = 0;
|
|
4612
3858
|
load(data) {
|
|
4613
3859
|
if (isNull(data)) {
|
|
4614
3860
|
return;
|
|
4615
3861
|
}
|
|
4616
|
-
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
if (data.height !== undefined) {
|
|
4620
|
-
this.height = data.height;
|
|
4621
|
-
}
|
|
4622
|
-
if (data.width !== undefined) {
|
|
4623
|
-
this.width = data.width;
|
|
4624
|
-
}
|
|
3862
|
+
loadProperty(this, "mode", data.mode);
|
|
3863
|
+
loadProperty(this, "height", data.height);
|
|
3864
|
+
loadProperty(this, "width", data.width);
|
|
4625
3865
|
}
|
|
4626
3866
|
}
|
|
4627
3867
|
|
|
@@ -4644,50 +3884,35 @@
|
|
|
4644
3884
|
}
|
|
4645
3885
|
|
|
4646
3886
|
class Emitter {
|
|
4647
|
-
autoPlay;
|
|
3887
|
+
autoPlay = true;
|
|
4648
3888
|
direction;
|
|
4649
3889
|
domId;
|
|
4650
|
-
fill;
|
|
4651
|
-
life;
|
|
3890
|
+
fill = true;
|
|
3891
|
+
life = new EmitterLife();
|
|
4652
3892
|
name;
|
|
4653
3893
|
particles;
|
|
4654
3894
|
position;
|
|
4655
|
-
rate;
|
|
4656
|
-
shape;
|
|
3895
|
+
rate = new EmitterRate();
|
|
3896
|
+
shape = new EmitterShape();
|
|
4657
3897
|
size;
|
|
4658
|
-
spawn;
|
|
3898
|
+
spawn = new EmitterSpawn();
|
|
4659
3899
|
spawnFillColor;
|
|
4660
3900
|
spawnStrokeColor;
|
|
4661
|
-
startCount;
|
|
4662
|
-
constructor() {
|
|
4663
|
-
this.autoPlay = true;
|
|
4664
|
-
this.fill = true;
|
|
4665
|
-
this.life = new EmitterLife();
|
|
4666
|
-
this.rate = new EmitterRate();
|
|
4667
|
-
this.shape = new EmitterShape();
|
|
4668
|
-
this.spawn = new EmitterSpawn();
|
|
4669
|
-
this.startCount = 0;
|
|
4670
|
-
}
|
|
3901
|
+
startCount = 0;
|
|
4671
3902
|
load(data) {
|
|
4672
3903
|
if (isNull(data)) {
|
|
4673
3904
|
return;
|
|
4674
3905
|
}
|
|
4675
|
-
|
|
4676
|
-
this.autoPlay = data.autoPlay;
|
|
4677
|
-
}
|
|
3906
|
+
loadProperty(this, "autoPlay", data.autoPlay);
|
|
4678
3907
|
if (data.size !== undefined) {
|
|
4679
3908
|
this.size ??= new EmitterSize();
|
|
4680
3909
|
this.size.load(data.size);
|
|
4681
3910
|
}
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
this.domId = data.domId;
|
|
4686
|
-
if (data.fill !== undefined) {
|
|
4687
|
-
this.fill = data.fill;
|
|
4688
|
-
}
|
|
3911
|
+
loadProperty(this, "direction", data.direction);
|
|
3912
|
+
loadProperty(this, "domId", data.domId);
|
|
3913
|
+
loadProperty(this, "fill", data.fill);
|
|
4689
3914
|
this.life.load(data.life);
|
|
4690
|
-
this
|
|
3915
|
+
loadProperty(this, "name", data.name);
|
|
4691
3916
|
this.particles = executeOnSingleOrMultiple(data.particles, particles => {
|
|
4692
3917
|
return deepExtend({}, particles);
|
|
4693
3918
|
});
|
|
@@ -4711,9 +3936,7 @@
|
|
|
4711
3936
|
this.spawnStrokeColor ??= new AnimatableColor();
|
|
4712
3937
|
this.spawnStrokeColor.load(data.spawnStrokeColor);
|
|
4713
3938
|
}
|
|
4714
|
-
|
|
4715
|
-
this.startCount = data.startCount;
|
|
4716
|
-
}
|
|
3939
|
+
loadProperty(this, "startCount", data.startCount);
|
|
4717
3940
|
}
|
|
4718
3941
|
}
|
|
4719
3942
|
|
|
@@ -4795,7 +4018,7 @@
|
|
|
4795
4018
|
})(EmitterClickMode || (EmitterClickMode = {}));
|
|
4796
4019
|
|
|
4797
4020
|
async function loadEmittersPluginSimple(engine) {
|
|
4798
|
-
engine.checkVersion("4.
|
|
4021
|
+
engine.checkVersion("4.2.0");
|
|
4799
4022
|
await engine.pluginManager.register(async (e) => {
|
|
4800
4023
|
const instancesManager = await getEmittersInstancesManager(e);
|
|
4801
4024
|
await addEmittersShapesManager(e);
|
|
@@ -4883,7 +4106,7 @@
|
|
|
4883
4106
|
}
|
|
4884
4107
|
|
|
4885
4108
|
async function loadEmittersShapeSquare(engine) {
|
|
4886
|
-
engine.checkVersion("4.
|
|
4109
|
+
engine.checkVersion("4.2.0");
|
|
4887
4110
|
await engine.pluginManager.register((e) => {
|
|
4888
4111
|
ensureEmittersPluginLoaded(e);
|
|
4889
4112
|
e.pluginManager.addEmitterShapeGenerator?.("square", new EmittersSquareShapeGenerator());
|
|
@@ -4891,55 +4114,36 @@
|
|
|
4891
4114
|
}
|
|
4892
4115
|
|
|
4893
4116
|
class LifeDelay extends ValueWithRandom {
|
|
4894
|
-
sync;
|
|
4895
|
-
constructor() {
|
|
4896
|
-
super();
|
|
4897
|
-
this.sync = false;
|
|
4898
|
-
}
|
|
4117
|
+
sync = false;
|
|
4899
4118
|
load(data) {
|
|
4900
4119
|
if (isNull(data)) {
|
|
4901
4120
|
return;
|
|
4902
4121
|
}
|
|
4903
4122
|
super.load(data);
|
|
4904
|
-
|
|
4905
|
-
this.sync = data.sync;
|
|
4906
|
-
}
|
|
4123
|
+
loadProperty(this, "sync", data.sync);
|
|
4907
4124
|
}
|
|
4908
4125
|
}
|
|
4909
4126
|
|
|
4910
4127
|
class LifeDuration extends ValueWithRandom {
|
|
4911
|
-
sync;
|
|
4912
|
-
constructor() {
|
|
4913
|
-
super();
|
|
4914
|
-
this.sync = false;
|
|
4915
|
-
}
|
|
4128
|
+
sync = false;
|
|
4916
4129
|
load(data) {
|
|
4917
4130
|
if (isNull(data)) {
|
|
4918
4131
|
return;
|
|
4919
4132
|
}
|
|
4920
4133
|
super.load(data);
|
|
4921
|
-
|
|
4922
|
-
this.sync = data.sync;
|
|
4923
|
-
}
|
|
4134
|
+
loadProperty(this, "sync", data.sync);
|
|
4924
4135
|
}
|
|
4925
4136
|
}
|
|
4926
4137
|
|
|
4927
4138
|
class Life {
|
|
4928
|
-
count;
|
|
4929
|
-
delay;
|
|
4930
|
-
duration;
|
|
4931
|
-
constructor() {
|
|
4932
|
-
this.count = 0;
|
|
4933
|
-
this.delay = new LifeDelay();
|
|
4934
|
-
this.duration = new LifeDuration();
|
|
4935
|
-
}
|
|
4139
|
+
count = 0;
|
|
4140
|
+
delay = new LifeDelay();
|
|
4141
|
+
duration = new LifeDuration();
|
|
4936
4142
|
load(data) {
|
|
4937
4143
|
if (isNull(data)) {
|
|
4938
4144
|
return;
|
|
4939
4145
|
}
|
|
4940
|
-
|
|
4941
|
-
this.count = data.count;
|
|
4942
|
-
}
|
|
4146
|
+
loadProperty(this, "count", data.count);
|
|
4943
4147
|
this.delay.load(data.delay);
|
|
4944
4148
|
this.duration.load(data.duration);
|
|
4945
4149
|
}
|
|
@@ -4998,7 +4202,7 @@
|
|
|
4998
4202
|
}
|
|
4999
4203
|
}
|
|
5000
4204
|
|
|
5001
|
-
const noTime = 0, identity
|
|
4205
|
+
const noTime = 0, identity = 1, infiniteValue = -1;
|
|
5002
4206
|
class LifeUpdater {
|
|
5003
4207
|
#container;
|
|
5004
4208
|
constructor(container) {
|
|
@@ -5009,7 +4213,7 @@
|
|
|
5009
4213
|
if (!lifeOptions) {
|
|
5010
4214
|
return;
|
|
5011
4215
|
}
|
|
5012
|
-
const delayFactor = lifeOptions.delay.sync ? identity
|
|
4216
|
+
const delayFactor = lifeOptions.delay.sync ? identity : getRandom(), durationFactor = lifeOptions.duration.sync ? identity : getRandom();
|
|
5013
4217
|
particle.life = {
|
|
5014
4218
|
delay: container.retina.reduceFactor
|
|
5015
4219
|
? ((getRangeValue(lifeOptions.delay.value) * delayFactor) / container.retina.reduceFactor) *
|
|
@@ -5035,10 +4239,7 @@
|
|
|
5035
4239
|
return !particle.destroyed;
|
|
5036
4240
|
}
|
|
5037
4241
|
loadOptions(options, ...sources) {
|
|
5038
|
-
options
|
|
5039
|
-
for (const source of sources) {
|
|
5040
|
-
options.life.load(source?.life);
|
|
5041
|
-
}
|
|
4242
|
+
loadOptionProperty(options, "life", Life, ...sources);
|
|
5042
4243
|
}
|
|
5043
4244
|
update(particle, delta) {
|
|
5044
4245
|
if (!this.isEnabled(particle) || !particle.life) {
|
|
@@ -5049,7 +4250,7 @@
|
|
|
5049
4250
|
}
|
|
5050
4251
|
|
|
5051
4252
|
async function loadLifeUpdater(engine) {
|
|
5052
|
-
engine.checkVersion("4.
|
|
4253
|
+
engine.checkVersion("4.2.0");
|
|
5053
4254
|
await engine.pluginManager.register(e => {
|
|
5054
4255
|
e.pluginManager.addParticleUpdater("life", container => {
|
|
5055
4256
|
return Promise.resolve(new LifeUpdater(container));
|
|
@@ -5075,65 +4276,40 @@
|
|
|
5075
4276
|
}
|
|
5076
4277
|
|
|
5077
4278
|
async function loadLineShape(engine) {
|
|
5078
|
-
engine.checkVersion("4.
|
|
4279
|
+
engine.checkVersion("4.2.0");
|
|
5079
4280
|
await engine.pluginManager.register(e => {
|
|
5080
4281
|
e.pluginManager.addShape(["line"], () => Promise.resolve(new LineDrawer()));
|
|
5081
4282
|
});
|
|
5082
4283
|
}
|
|
5083
4284
|
|
|
5084
4285
|
class RotateAnimation {
|
|
5085
|
-
decay;
|
|
5086
|
-
enable;
|
|
5087
|
-
speed;
|
|
5088
|
-
sync;
|
|
5089
|
-
constructor() {
|
|
5090
|
-
this.enable = false;
|
|
5091
|
-
this.speed = 0;
|
|
5092
|
-
this.decay = 0;
|
|
5093
|
-
this.sync = false;
|
|
5094
|
-
}
|
|
4286
|
+
decay = 0;
|
|
4287
|
+
enable = false;
|
|
4288
|
+
speed = 0;
|
|
4289
|
+
sync = false;
|
|
5095
4290
|
load(data) {
|
|
5096
4291
|
if (isNull(data)) {
|
|
5097
4292
|
return;
|
|
5098
4293
|
}
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
this.speed = setRangeValue(data.speed);
|
|
5104
|
-
}
|
|
5105
|
-
if (data.decay !== undefined) {
|
|
5106
|
-
this.decay = setRangeValue(data.decay);
|
|
5107
|
-
}
|
|
5108
|
-
if (data.sync !== undefined) {
|
|
5109
|
-
this.sync = data.sync;
|
|
5110
|
-
}
|
|
4294
|
+
loadProperty(this, "enable", data.enable);
|
|
4295
|
+
loadRangeProperty(this, "speed", data.speed);
|
|
4296
|
+
loadRangeProperty(this, "decay", data.decay);
|
|
4297
|
+
loadProperty(this, "sync", data.sync);
|
|
5111
4298
|
}
|
|
5112
4299
|
}
|
|
5113
4300
|
|
|
5114
4301
|
class Rotate extends ValueWithRandom {
|
|
5115
|
-
animation;
|
|
5116
|
-
direction;
|
|
5117
|
-
path;
|
|
5118
|
-
constructor() {
|
|
5119
|
-
super();
|
|
5120
|
-
this.animation = new RotateAnimation();
|
|
5121
|
-
this.direction = exports.RotateDirection.clockwise;
|
|
5122
|
-
this.path = false;
|
|
5123
|
-
this.value = 0;
|
|
5124
|
-
}
|
|
4302
|
+
animation = new RotateAnimation();
|
|
4303
|
+
direction = exports.RotateDirection.clockwise;
|
|
4304
|
+
path = false;
|
|
5125
4305
|
load(data) {
|
|
5126
4306
|
if (isNull(data)) {
|
|
5127
4307
|
return;
|
|
5128
4308
|
}
|
|
5129
4309
|
super.load(data);
|
|
5130
|
-
|
|
5131
|
-
this.direction = data.direction;
|
|
5132
|
-
}
|
|
4310
|
+
loadProperty(this, "direction", data.direction);
|
|
5133
4311
|
this.animation.load(data.animation);
|
|
5134
|
-
|
|
5135
|
-
this.path = data.path;
|
|
5136
|
-
}
|
|
4312
|
+
loadProperty(this, "path", data.path);
|
|
5137
4313
|
}
|
|
5138
4314
|
}
|
|
5139
4315
|
|
|
@@ -5171,7 +4347,7 @@
|
|
|
5171
4347
|
}
|
|
5172
4348
|
const rotateAnimation = rotateOptions.animation;
|
|
5173
4349
|
if (rotateAnimation.enable) {
|
|
5174
|
-
particle.rotate.decay = identity$
|
|
4350
|
+
particle.rotate.decay = identity$1 - getRangeValue(rotateAnimation.decay);
|
|
5175
4351
|
particle.rotate.velocity =
|
|
5176
4352
|
(getRangeValue(rotateAnimation.speed) / doublePIDeg) * this.#container.retina.reduceFactor;
|
|
5177
4353
|
if (!rotateAnimation.sync) {
|
|
@@ -5188,10 +4364,7 @@
|
|
|
5188
4364
|
return !particle.destroyed && !particle.spawning && (!!rotate.value || rotate.animation.enable || rotate.path);
|
|
5189
4365
|
}
|
|
5190
4366
|
loadOptions(options, ...sources) {
|
|
5191
|
-
options
|
|
5192
|
-
for (const source of sources) {
|
|
5193
|
-
options.rotate.load(source?.rotate);
|
|
5194
|
-
}
|
|
4367
|
+
loadOptionProperty(options, "rotate", Rotate, ...sources);
|
|
5195
4368
|
}
|
|
5196
4369
|
update(particle, delta) {
|
|
5197
4370
|
if (!this.isEnabled(particle)) {
|
|
@@ -5207,7 +4380,7 @@
|
|
|
5207
4380
|
}
|
|
5208
4381
|
|
|
5209
4382
|
async function loadRotateUpdater(engine) {
|
|
5210
|
-
engine.checkVersion("4.
|
|
4383
|
+
engine.checkVersion("4.2.0");
|
|
5211
4384
|
await engine.pluginManager.register(e => {
|
|
5212
4385
|
e.pluginManager.addParticleUpdater("rotate", container => {
|
|
5213
4386
|
return Promise.resolve(new RotateUpdater(container));
|
|
@@ -5218,20 +4391,14 @@
|
|
|
5218
4391
|
const mouseDownEvent = "pointerdown", touchStartEvent = "touchstart";
|
|
5219
4392
|
|
|
5220
4393
|
class SoundsAudio {
|
|
5221
|
-
loop;
|
|
5222
|
-
source;
|
|
5223
|
-
constructor() {
|
|
5224
|
-
this.loop = false;
|
|
5225
|
-
this.source = "";
|
|
5226
|
-
}
|
|
4394
|
+
loop = false;
|
|
4395
|
+
source = "";
|
|
5227
4396
|
load(data) {
|
|
5228
4397
|
if (isNull(data)) {
|
|
5229
4398
|
return;
|
|
5230
4399
|
}
|
|
5231
4400
|
if (isObject(data)) {
|
|
5232
|
-
|
|
5233
|
-
this.loop = data.loop;
|
|
5234
|
-
}
|
|
4401
|
+
loadProperty(this, "loop", data.loop);
|
|
5235
4402
|
if (data.source !== undefined) {
|
|
5236
4403
|
this.source = data.source;
|
|
5237
4404
|
}
|
|
@@ -5243,41 +4410,26 @@
|
|
|
5243
4410
|
}
|
|
5244
4411
|
|
|
5245
4412
|
class SoundsNote {
|
|
5246
|
-
duration;
|
|
5247
|
-
value;
|
|
5248
|
-
constructor() {
|
|
5249
|
-
this.duration = 500;
|
|
5250
|
-
this.value = [];
|
|
5251
|
-
}
|
|
4413
|
+
duration = 500;
|
|
4414
|
+
value = [];
|
|
5252
4415
|
load(data) {
|
|
5253
4416
|
if (isNull(data)) {
|
|
5254
4417
|
return;
|
|
5255
4418
|
}
|
|
5256
|
-
|
|
5257
|
-
|
|
5258
|
-
}
|
|
5259
|
-
if (data.value !== undefined) {
|
|
5260
|
-
this.value = data.value;
|
|
5261
|
-
}
|
|
4419
|
+
loadProperty(this, "duration", data.duration);
|
|
4420
|
+
loadProperty(this, "value", data.value);
|
|
5262
4421
|
}
|
|
5263
4422
|
}
|
|
5264
4423
|
|
|
5265
4424
|
class SoundsMelody {
|
|
5266
|
-
loop;
|
|
5267
|
-
melodies;
|
|
5268
|
-
notes;
|
|
5269
|
-
constructor() {
|
|
5270
|
-
this.loop = false;
|
|
5271
|
-
this.melodies = [];
|
|
5272
|
-
this.notes = [];
|
|
5273
|
-
}
|
|
4425
|
+
loop = false;
|
|
4426
|
+
melodies = [];
|
|
4427
|
+
notes = [];
|
|
5274
4428
|
load(data) {
|
|
5275
4429
|
if (isNull(data)) {
|
|
5276
4430
|
return;
|
|
5277
4431
|
}
|
|
5278
|
-
|
|
5279
|
-
this.loop = data.loop;
|
|
5280
|
-
}
|
|
4432
|
+
loadProperty(this, "loop", data.loop);
|
|
5281
4433
|
if (data.melodies !== undefined) {
|
|
5282
4434
|
this.melodies = data.melodies.map(s => {
|
|
5283
4435
|
const tmp = new SoundsMelody();
|
|
@@ -5297,21 +4449,15 @@
|
|
|
5297
4449
|
|
|
5298
4450
|
class SoundsEvent {
|
|
5299
4451
|
audio;
|
|
5300
|
-
event;
|
|
4452
|
+
event = [];
|
|
5301
4453
|
filter;
|
|
5302
4454
|
melodies;
|
|
5303
|
-
notes;
|
|
5304
|
-
constructor() {
|
|
5305
|
-
this.event = [];
|
|
5306
|
-
this.notes = [];
|
|
5307
|
-
}
|
|
4455
|
+
notes = [];
|
|
5308
4456
|
load(data) {
|
|
5309
4457
|
if (isNull(data)) {
|
|
5310
4458
|
return;
|
|
5311
4459
|
}
|
|
5312
|
-
|
|
5313
|
-
this.event = data.event;
|
|
5314
|
-
}
|
|
4460
|
+
loadProperty(this, "event", data.event);
|
|
5315
4461
|
if (data.audio !== undefined) {
|
|
5316
4462
|
if (isArray(data.audio)) {
|
|
5317
4463
|
this.audio = data.audio.map(s => {
|
|
@@ -5354,32 +4500,19 @@
|
|
|
5354
4500
|
}
|
|
5355
4501
|
|
|
5356
4502
|
class SoundsIcon {
|
|
5357
|
-
height;
|
|
4503
|
+
height = 24;
|
|
5358
4504
|
path;
|
|
5359
|
-
style;
|
|
4505
|
+
style = "";
|
|
5360
4506
|
svg;
|
|
5361
|
-
width;
|
|
5362
|
-
constructor() {
|
|
5363
|
-
this.width = 24;
|
|
5364
|
-
this.height = 24;
|
|
5365
|
-
this.style = "";
|
|
5366
|
-
}
|
|
4507
|
+
width = 24;
|
|
5367
4508
|
load(data) {
|
|
5368
4509
|
if (isNull(data)) {
|
|
5369
4510
|
return;
|
|
5370
4511
|
}
|
|
5371
|
-
|
|
5372
|
-
|
|
5373
|
-
|
|
5374
|
-
|
|
5375
|
-
this.svg = data.svg;
|
|
5376
|
-
}
|
|
5377
|
-
if (data.width !== undefined) {
|
|
5378
|
-
this.width = data.width;
|
|
5379
|
-
}
|
|
5380
|
-
if (data.height !== undefined) {
|
|
5381
|
-
this.height = data.height;
|
|
5382
|
-
}
|
|
4512
|
+
loadProperty(this, "path", data.path);
|
|
4513
|
+
loadProperty(this, "svg", data.svg);
|
|
4514
|
+
loadProperty(this, "width", data.width);
|
|
4515
|
+
loadProperty(this, "height", data.height);
|
|
5383
4516
|
}
|
|
5384
4517
|
}
|
|
5385
4518
|
|
|
@@ -5436,9 +4569,7 @@
|
|
|
5436
4569
|
if (isNull(data)) {
|
|
5437
4570
|
return;
|
|
5438
4571
|
}
|
|
5439
|
-
|
|
5440
|
-
this.enable = data.enable;
|
|
5441
|
-
}
|
|
4572
|
+
loadProperty(this, "enable", data.enable);
|
|
5442
4573
|
this.mute.load(data.mute);
|
|
5443
4574
|
this.unmute.load(data.unmute);
|
|
5444
4575
|
this.volumeDown.load(data.volumeDown);
|
|
@@ -5447,30 +4578,18 @@
|
|
|
5447
4578
|
}
|
|
5448
4579
|
|
|
5449
4580
|
class SoundsVolume {
|
|
5450
|
-
max;
|
|
5451
|
-
min;
|
|
5452
|
-
step;
|
|
5453
|
-
value;
|
|
5454
|
-
constructor() {
|
|
5455
|
-
this.value = 100;
|
|
5456
|
-
this.max = 100;
|
|
5457
|
-
this.min = 0;
|
|
5458
|
-
this.step = 10;
|
|
5459
|
-
}
|
|
4581
|
+
max = 100;
|
|
4582
|
+
min = 0;
|
|
4583
|
+
step = 10;
|
|
4584
|
+
value = 100;
|
|
5460
4585
|
load(data) {
|
|
5461
4586
|
if (isNull(data)) {
|
|
5462
4587
|
return;
|
|
5463
4588
|
}
|
|
5464
|
-
if (isObject(data)) {
|
|
5465
|
-
|
|
5466
|
-
|
|
5467
|
-
|
|
5468
|
-
if (data.min !== undefined) {
|
|
5469
|
-
this.min = data.min;
|
|
5470
|
-
}
|
|
5471
|
-
if (data.step !== undefined) {
|
|
5472
|
-
this.step = data.step;
|
|
5473
|
-
}
|
|
4589
|
+
if (isObject(data)) {
|
|
4590
|
+
loadProperty(this, "max", data.max);
|
|
4591
|
+
loadProperty(this, "min", data.min);
|
|
4592
|
+
loadProperty(this, "step", data.step);
|
|
5474
4593
|
if (data.value !== undefined) {
|
|
5475
4594
|
this.value = data.value;
|
|
5476
4595
|
}
|
|
@@ -5482,28 +4601,17 @@
|
|
|
5482
4601
|
}
|
|
5483
4602
|
|
|
5484
4603
|
class Sounds {
|
|
5485
|
-
autoPlay;
|
|
5486
|
-
enable;
|
|
5487
|
-
events;
|
|
5488
|
-
icons;
|
|
5489
|
-
volume;
|
|
5490
|
-
constructor() {
|
|
5491
|
-
this.autoPlay = true;
|
|
5492
|
-
this.enable = false;
|
|
5493
|
-
this.events = [];
|
|
5494
|
-
this.icons = new SoundsIcons();
|
|
5495
|
-
this.volume = new SoundsVolume();
|
|
5496
|
-
}
|
|
4604
|
+
autoPlay = true;
|
|
4605
|
+
enable = false;
|
|
4606
|
+
events = [];
|
|
4607
|
+
icons = new SoundsIcons();
|
|
4608
|
+
volume = new SoundsVolume();
|
|
5497
4609
|
load(data) {
|
|
5498
4610
|
if (isNull(data)) {
|
|
5499
4611
|
return;
|
|
5500
4612
|
}
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
}
|
|
5504
|
-
if (data.enable !== undefined) {
|
|
5505
|
-
this.enable = data.enable;
|
|
5506
|
-
}
|
|
4613
|
+
loadProperty(this, "autoPlay", data.autoPlay);
|
|
4614
|
+
loadProperty(this, "enable", data.enable);
|
|
5507
4615
|
if (data.events !== undefined) {
|
|
5508
4616
|
this.events = data.events.map(t => {
|
|
5509
4617
|
const event = new SoundsEvent();
|
|
@@ -5588,7 +4696,7 @@
|
|
|
5588
4696
|
}
|
|
5589
4697
|
|
|
5590
4698
|
async function loadSoundsPlugin(engine) {
|
|
5591
|
-
engine.checkVersion("4.
|
|
4699
|
+
engine.checkVersion("4.2.0");
|
|
5592
4700
|
await engine.pluginManager.register(e => {
|
|
5593
4701
|
e.pluginManager.addPlugin(new SoundsPlugin(e));
|
|
5594
4702
|
});
|
|
@@ -5596,7 +4704,7 @@
|
|
|
5596
4704
|
|
|
5597
4705
|
let initPromise = null;
|
|
5598
4706
|
async function doInitPlugins(engine) {
|
|
5599
|
-
engine.checkVersion("4.
|
|
4707
|
+
engine.checkVersion("4.2.0");
|
|
5600
4708
|
await engine.pluginManager.register(async (e) => {
|
|
5601
4709
|
const loadEmittersForFireworks = async (e) => {
|
|
5602
4710
|
await loadEmittersPluginSimple(e);
|
|
@@ -5643,7 +4751,7 @@
|
|
|
5643
4751
|
fireworks.init = async () => {
|
|
5644
4752
|
await initPlugins(tsParticles);
|
|
5645
4753
|
};
|
|
5646
|
-
fireworks.version = "4.
|
|
4754
|
+
fireworks.version = "4.2.0";
|
|
5647
4755
|
globalThis.fireworks = fireworks;
|
|
5648
4756
|
|
|
5649
4757
|
const globalObject = globalThis;
|
|
@@ -5704,7 +4812,7 @@
|
|
|
5704
4812
|
return;
|
|
5705
4813
|
}
|
|
5706
4814
|
this.draw(ctx => {
|
|
5707
|
-
|
|
4815
|
+
ctx.clearRect(originPoint.x, originPoint.y, this.#canvasManager.size.width, this.#canvasManager.size.height);
|
|
5708
4816
|
});
|
|
5709
4817
|
}
|
|
5710
4818
|
clear() {
|
|
@@ -5766,7 +4874,7 @@
|
|
|
5766
4874
|
plugin.drawParticleSetup?.(context, particle, delta);
|
|
5767
4875
|
}
|
|
5768
4876
|
this.#applyPreDrawUpdaters(context, particle, radius, opacity, colorStyles, transform);
|
|
5769
|
-
drawParticle({
|
|
4877
|
+
this.#drawParticle({
|
|
5770
4878
|
container,
|
|
5771
4879
|
context,
|
|
5772
4880
|
particle,
|
|
@@ -5785,7 +4893,7 @@
|
|
|
5785
4893
|
drawParticlePlugins(particle, delta) {
|
|
5786
4894
|
this.draw(ctx => {
|
|
5787
4895
|
for (const plugin of this.#drawParticlePlugins) {
|
|
5788
|
-
drawParticlePlugin(ctx, plugin, particle, delta);
|
|
4896
|
+
this.#drawParticlePlugin(ctx, plugin, particle, delta);
|
|
5789
4897
|
}
|
|
5790
4898
|
});
|
|
5791
4899
|
}
|
|
@@ -5885,12 +4993,19 @@
|
|
|
5885
4993
|
}
|
|
5886
4994
|
paintBase(baseColor) {
|
|
5887
4995
|
this.draw(ctx => {
|
|
5888
|
-
|
|
4996
|
+
ctx.fillStyle = baseColor ?? "rgba(0,0,0,0)";
|
|
4997
|
+
ctx.fillRect(originPoint.x, originPoint.y, this.#canvasManager.size.width, this.#canvasManager.size.height);
|
|
5889
4998
|
});
|
|
5890
4999
|
}
|
|
5891
5000
|
paintImage(image, opacity) {
|
|
5892
5001
|
this.draw(ctx => {
|
|
5893
|
-
|
|
5002
|
+
if (!image) {
|
|
5003
|
+
return;
|
|
5004
|
+
}
|
|
5005
|
+
const prevAlpha = ctx.globalAlpha;
|
|
5006
|
+
ctx.globalAlpha = opacity;
|
|
5007
|
+
ctx.drawImage(image, originPoint.x, originPoint.y, this.#canvasManager.size.width, this.#canvasManager.size.height);
|
|
5008
|
+
ctx.globalAlpha = prevAlpha;
|
|
5894
5009
|
});
|
|
5895
5010
|
}
|
|
5896
5011
|
setContext(context) {
|
|
@@ -5904,15 +5019,15 @@
|
|
|
5904
5019
|
}
|
|
5905
5020
|
stop() {
|
|
5906
5021
|
this.draw(ctx => {
|
|
5907
|
-
|
|
5022
|
+
ctx.clearRect(originPoint.x, originPoint.y, this.#canvasManager.size.width, this.#canvasManager.size.height);
|
|
5908
5023
|
});
|
|
5909
5024
|
}
|
|
5910
|
-
#applyPostDrawUpdaters
|
|
5025
|
+
#applyPostDrawUpdaters(particle) {
|
|
5911
5026
|
for (const updater of this.#postDrawUpdaters) {
|
|
5912
5027
|
updater.afterDraw?.(particle);
|
|
5913
5028
|
}
|
|
5914
|
-
}
|
|
5915
|
-
#applyPreDrawUpdaters
|
|
5029
|
+
}
|
|
5030
|
+
#applyPreDrawUpdaters(ctx, particle, radius, zOpacity, colorStyles, transform) {
|
|
5916
5031
|
for (const updater of this.#preDrawUpdaters) {
|
|
5917
5032
|
if (updater.getColorStyles) {
|
|
5918
5033
|
const { fill, stroke } = updater.getColorStyles(particle, ctx, radius, zOpacity);
|
|
@@ -5931,8 +5046,114 @@
|
|
|
5931
5046
|
}
|
|
5932
5047
|
updater.beforeDraw?.(particle);
|
|
5933
5048
|
}
|
|
5934
|
-
}
|
|
5935
|
-
#
|
|
5049
|
+
}
|
|
5050
|
+
#drawAfterEffect(drawer, data) {
|
|
5051
|
+
if (!drawer?.drawAfter) {
|
|
5052
|
+
return;
|
|
5053
|
+
}
|
|
5054
|
+
const { particle } = data;
|
|
5055
|
+
if (!particle.effect) {
|
|
5056
|
+
return;
|
|
5057
|
+
}
|
|
5058
|
+
drawer.drawAfter(data);
|
|
5059
|
+
}
|
|
5060
|
+
#drawBeforeEffect(drawer, data) {
|
|
5061
|
+
if (!drawer?.drawBefore) {
|
|
5062
|
+
return;
|
|
5063
|
+
}
|
|
5064
|
+
const { particle } = data;
|
|
5065
|
+
if (!particle.effect) {
|
|
5066
|
+
return;
|
|
5067
|
+
}
|
|
5068
|
+
drawer.drawBefore(data);
|
|
5069
|
+
}
|
|
5070
|
+
#drawParticle(data) {
|
|
5071
|
+
const { container, context, particle, delta, colorStyles, radius, opacity, transform } = data, { effectDrawers, shapeDrawers } = container, pos = particle.getPosition(), transformData = particle.getTransformData(transform), drawScale = defaultZoom, drawPosition = {
|
|
5072
|
+
x: pos.x,
|
|
5073
|
+
y: pos.y,
|
|
5074
|
+
};
|
|
5075
|
+
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);
|
|
5076
|
+
if (colorStyles.fill) {
|
|
5077
|
+
context.fillStyle = colorStyles.fill;
|
|
5078
|
+
}
|
|
5079
|
+
const fillEnabled = !!particle.fillEnabled, strokeWidth = particle.strokeWidth ?? minStrokeWidth;
|
|
5080
|
+
context.lineWidth = strokeWidth;
|
|
5081
|
+
if (colorStyles.stroke) {
|
|
5082
|
+
context.strokeStyle = colorStyles.stroke;
|
|
5083
|
+
}
|
|
5084
|
+
const drawData = {
|
|
5085
|
+
context,
|
|
5086
|
+
particle,
|
|
5087
|
+
radius,
|
|
5088
|
+
drawRadius: radius * drawScale,
|
|
5089
|
+
opacity,
|
|
5090
|
+
delta,
|
|
5091
|
+
pixelRatio: container.retina.pixelRatio,
|
|
5092
|
+
fill: fillEnabled,
|
|
5093
|
+
stroke: strokeWidth > minStrokeWidth,
|
|
5094
|
+
transformData,
|
|
5095
|
+
position: { ...pos },
|
|
5096
|
+
drawPosition,
|
|
5097
|
+
drawScale,
|
|
5098
|
+
};
|
|
5099
|
+
for (const plugin of container.plugins) {
|
|
5100
|
+
plugin.drawParticleTransform?.(drawData);
|
|
5101
|
+
}
|
|
5102
|
+
const effect = particle.effect ? effectDrawers.get(particle.effect) : undefined, shape = particle.shape ? shapeDrawers.get(particle.shape) : undefined;
|
|
5103
|
+
this.#drawBeforeEffect(effect, drawData);
|
|
5104
|
+
this.#drawShapeBeforeDraw(shape, drawData);
|
|
5105
|
+
this.#drawShape(shape, drawData);
|
|
5106
|
+
this.#drawShapeAfterDraw(shape, drawData);
|
|
5107
|
+
this.#drawAfterEffect(effect, drawData);
|
|
5108
|
+
context.resetTransform();
|
|
5109
|
+
}
|
|
5110
|
+
#drawParticlePlugin(context, plugin, particle, delta) {
|
|
5111
|
+
if (!plugin.drawParticle) {
|
|
5112
|
+
return;
|
|
5113
|
+
}
|
|
5114
|
+
plugin.drawParticle(context, particle, delta);
|
|
5115
|
+
}
|
|
5116
|
+
#drawShape(drawer, data) {
|
|
5117
|
+
if (!drawer) {
|
|
5118
|
+
return;
|
|
5119
|
+
}
|
|
5120
|
+
const { context, fill, particle, stroke } = data;
|
|
5121
|
+
if (!particle.shape) {
|
|
5122
|
+
return;
|
|
5123
|
+
}
|
|
5124
|
+
context.beginPath();
|
|
5125
|
+
drawer.draw(data);
|
|
5126
|
+
if (particle.shapeClose) {
|
|
5127
|
+
context.closePath();
|
|
5128
|
+
}
|
|
5129
|
+
if (fill) {
|
|
5130
|
+
context.fill();
|
|
5131
|
+
}
|
|
5132
|
+
if (stroke) {
|
|
5133
|
+
context.stroke();
|
|
5134
|
+
}
|
|
5135
|
+
}
|
|
5136
|
+
#drawShapeAfterDraw(drawer, data) {
|
|
5137
|
+
if (!drawer?.afterDraw) {
|
|
5138
|
+
return;
|
|
5139
|
+
}
|
|
5140
|
+
const { particle } = data;
|
|
5141
|
+
if (!particle.shape) {
|
|
5142
|
+
return;
|
|
5143
|
+
}
|
|
5144
|
+
drawer.afterDraw(data);
|
|
5145
|
+
}
|
|
5146
|
+
#drawShapeBeforeDraw(drawer, data) {
|
|
5147
|
+
if (!drawer?.beforeDraw) {
|
|
5148
|
+
return;
|
|
5149
|
+
}
|
|
5150
|
+
const { particle } = data;
|
|
5151
|
+
if (!particle.shape) {
|
|
5152
|
+
return;
|
|
5153
|
+
}
|
|
5154
|
+
drawer.beforeDraw(data);
|
|
5155
|
+
}
|
|
5156
|
+
#getPluginParticleColors(particle) {
|
|
5936
5157
|
let fColor, sColor;
|
|
5937
5158
|
for (const plugin of this.#colorPlugins) {
|
|
5938
5159
|
if (!fColor && plugin.particleFillColor) {
|
|
@@ -5948,7 +5169,7 @@
|
|
|
5948
5169
|
this.#reusablePluginColors[fColorIndex] = fColor;
|
|
5949
5170
|
this.#reusablePluginColors[sColorIndex] = sColor;
|
|
5950
5171
|
return this.#reusablePluginColors;
|
|
5951
|
-
}
|
|
5172
|
+
}
|
|
5952
5173
|
}
|
|
5953
5174
|
|
|
5954
5175
|
const transferredCanvases = new WeakMap(), getTransferredCanvas = (canvas) => {
|
|
@@ -6080,6 +5301,7 @@
|
|
|
6080
5301
|
obs.observe(element, { attributes: true });
|
|
6081
5302
|
});
|
|
6082
5303
|
this.initPlugins();
|
|
5304
|
+
this.#initContext();
|
|
6083
5305
|
this.render.init();
|
|
6084
5306
|
}
|
|
6085
5307
|
initBackground() {
|
|
@@ -6089,7 +5311,7 @@
|
|
|
6089
5311
|
}
|
|
6090
5312
|
const elementStyle = element.style, color = rangeColorToRgb(this.#pluginManager, background.color);
|
|
6091
5313
|
if (color) {
|
|
6092
|
-
elementStyle.backgroundColor = getStyleFromRgb(color, container.hdr, background.opacity);
|
|
5314
|
+
elementStyle.backgroundColor = getStyleFromRgb(color, container.actualOptions.hdr, background.opacity);
|
|
6093
5315
|
}
|
|
6094
5316
|
else {
|
|
6095
5317
|
elementStyle.backgroundColor = "";
|
|
@@ -6111,7 +5333,7 @@
|
|
|
6111
5333
|
if (this.#generated && this.domElement) {
|
|
6112
5334
|
this.domElement.remove();
|
|
6113
5335
|
}
|
|
6114
|
-
const
|
|
5336
|
+
const domCanvas = isHtmlCanvasElement(canvas) ? canvas : undefined;
|
|
6115
5337
|
this.domElement = domCanvas;
|
|
6116
5338
|
this.#generated = domCanvas ? domCanvas.dataset[generatedAttribute] === "true" : false;
|
|
6117
5339
|
this.renderCanvas = domCanvas ? getTransferredCanvas(domCanvas) : canvas;
|
|
@@ -6132,26 +5354,6 @@
|
|
|
6132
5354
|
const pxRatio = this.#container.retina.pixelRatio, retinaSize = this.size;
|
|
6133
5355
|
renderCanvas.height = retinaSize.height = standardSize.height * pxRatio;
|
|
6134
5356
|
renderCanvas.width = retinaSize.width = standardSize.width * pxRatio;
|
|
6135
|
-
const canSupportHdrQuery = safeMatchMedia("(color-gamut: p3)");
|
|
6136
|
-
this.render.setContextSettings({
|
|
6137
|
-
alpha: true,
|
|
6138
|
-
colorSpace: canSupportHdrQuery?.matches && container.hdr ? "display-p3" : "srgb",
|
|
6139
|
-
desynchronized: true,
|
|
6140
|
-
willReadFrequently: false,
|
|
6141
|
-
});
|
|
6142
|
-
this.render.setContext(renderCanvas.getContext("2d", this.render.settings));
|
|
6143
|
-
this.#safeMutationObserver(obs => {
|
|
6144
|
-
obs.disconnect();
|
|
6145
|
-
});
|
|
6146
|
-
container.retina.init();
|
|
6147
|
-
this.initBackground();
|
|
6148
|
-
this.#safeMutationObserver(obs => {
|
|
6149
|
-
const element = this.domElement;
|
|
6150
|
-
if (!element || !(element instanceof Node)) {
|
|
6151
|
-
return;
|
|
6152
|
-
}
|
|
6153
|
-
obs.observe(element, { attributes: true });
|
|
6154
|
-
});
|
|
6155
5357
|
}
|
|
6156
5358
|
resize() {
|
|
6157
5359
|
const element = this.domElement;
|
|
@@ -6219,12 +5421,30 @@
|
|
|
6219
5421
|
await container.refresh();
|
|
6220
5422
|
}
|
|
6221
5423
|
}
|
|
6222
|
-
#applyResizePlugins
|
|
5424
|
+
#applyResizePlugins() {
|
|
6223
5425
|
for (const plugin of this.#resizePlugins) {
|
|
6224
5426
|
plugin.resize?.();
|
|
6225
5427
|
}
|
|
6226
|
-
}
|
|
6227
|
-
#
|
|
5428
|
+
}
|
|
5429
|
+
#initContext() {
|
|
5430
|
+
const container = this.#container, canSupportHdr = container.actualOptions.hdr &&
|
|
5431
|
+
safeMatchMedia("(color-gamut: p3)")?.matches &&
|
|
5432
|
+
safeMatchMedia("(dynamic-range: high)")?.matches;
|
|
5433
|
+
this.render.setContextSettings({
|
|
5434
|
+
alpha: true,
|
|
5435
|
+
desynchronized: true,
|
|
5436
|
+
willReadFrequently: false,
|
|
5437
|
+
...(canSupportHdr
|
|
5438
|
+
? { colorSpace: "display-p3", colorType: "float16" }
|
|
5439
|
+
: { colorSpace: "srgb" }),
|
|
5440
|
+
});
|
|
5441
|
+
const renderCanvas = this.renderCanvas;
|
|
5442
|
+
if (!renderCanvas) {
|
|
5443
|
+
return;
|
|
5444
|
+
}
|
|
5445
|
+
this.render.setContext(renderCanvas.getContext("2d", this.render.settings));
|
|
5446
|
+
}
|
|
5447
|
+
#initStyle() {
|
|
6228
5448
|
const element = this.domElement, options = this.#container.actualOptions;
|
|
6229
5449
|
if (!element) {
|
|
6230
5450
|
return;
|
|
@@ -6245,8 +5465,8 @@
|
|
|
6245
5465
|
}
|
|
6246
5466
|
element.style.setProperty(key, value, "important");
|
|
6247
5467
|
}
|
|
6248
|
-
}
|
|
6249
|
-
#repairStyle
|
|
5468
|
+
}
|
|
5469
|
+
#repairStyle() {
|
|
6250
5470
|
const element = this.domElement;
|
|
6251
5471
|
if (!element) {
|
|
6252
5472
|
return;
|
|
@@ -6265,27 +5485,27 @@
|
|
|
6265
5485
|
}
|
|
6266
5486
|
observer.observe(element, { attributes: true });
|
|
6267
5487
|
});
|
|
6268
|
-
}
|
|
6269
|
-
#resetOriginalStyle
|
|
5488
|
+
}
|
|
5489
|
+
#resetOriginalStyle() {
|
|
6270
5490
|
const element = this.domElement, originalStyle = this.#originalStyle;
|
|
6271
5491
|
if (!element || !originalStyle) {
|
|
6272
5492
|
return;
|
|
6273
5493
|
}
|
|
6274
5494
|
setStyle(element, originalStyle, true);
|
|
6275
|
-
}
|
|
6276
|
-
#safeMutationObserver
|
|
5495
|
+
}
|
|
5496
|
+
#safeMutationObserver(callback) {
|
|
6277
5497
|
if (!this.#mutationObserver) {
|
|
6278
5498
|
return;
|
|
6279
5499
|
}
|
|
6280
5500
|
callback(this.#mutationObserver);
|
|
6281
|
-
}
|
|
6282
|
-
#setFullScreenStyle
|
|
5501
|
+
}
|
|
5502
|
+
#setFullScreenStyle() {
|
|
6283
5503
|
const element = this.domElement;
|
|
6284
5504
|
if (!element) {
|
|
6285
5505
|
return;
|
|
6286
5506
|
}
|
|
6287
5507
|
setStyle(element, getFullScreenStyle(this.#container.actualOptions.fullScreen.zIndex), true);
|
|
6288
|
-
}
|
|
5508
|
+
}
|
|
6289
5509
|
}
|
|
6290
5510
|
|
|
6291
5511
|
class EventListeners {
|
|
@@ -6310,7 +5530,7 @@
|
|
|
6310
5530
|
removeListeners() {
|
|
6311
5531
|
this.#manageListeners(false);
|
|
6312
5532
|
}
|
|
6313
|
-
#handleVisibilityChange
|
|
5533
|
+
#handleVisibilityChange() {
|
|
6314
5534
|
const container = this.#container, options = container.actualOptions;
|
|
6315
5535
|
if (!options.pauseOnBlur) {
|
|
6316
5536
|
return;
|
|
@@ -6328,8 +5548,8 @@
|
|
|
6328
5548
|
container.draw(true);
|
|
6329
5549
|
}
|
|
6330
5550
|
}
|
|
6331
|
-
}
|
|
6332
|
-
#handleWindowResize
|
|
5551
|
+
}
|
|
5552
|
+
#handleWindowResize() {
|
|
6333
5553
|
if (this.#resizeTimeout) {
|
|
6334
5554
|
clearTimeout(this.#resizeTimeout);
|
|
6335
5555
|
this.#resizeTimeout = undefined;
|
|
@@ -6339,13 +5559,13 @@
|
|
|
6339
5559
|
await canvas.windowResize();
|
|
6340
5560
|
};
|
|
6341
5561
|
this.#resizeTimeout = setTimeout(() => void handleResize(), this.#container.actualOptions.resize.delay * millisecondsToSeconds);
|
|
6342
|
-
}
|
|
6343
|
-
#manageListeners
|
|
5562
|
+
}
|
|
5563
|
+
#manageListeners(add) {
|
|
6344
5564
|
const handlers = this.#handlers;
|
|
6345
5565
|
this.#manageResize(add);
|
|
6346
5566
|
manageListener(document, visibilityChangeEvent, handlers.visibilityChange, add, false);
|
|
6347
|
-
}
|
|
6348
|
-
#manageResize
|
|
5567
|
+
}
|
|
5568
|
+
#manageResize(add) {
|
|
6349
5569
|
const handlers = this.#handlers, container = this.#container, options = container.actualOptions;
|
|
6350
5570
|
if (!options.resize.enable) {
|
|
6351
5571
|
return;
|
|
@@ -6372,7 +5592,7 @@
|
|
|
6372
5592
|
});
|
|
6373
5593
|
this.#resizeObserver.observe(canvasEl);
|
|
6374
5594
|
}
|
|
6375
|
-
}
|
|
5595
|
+
}
|
|
6376
5596
|
}
|
|
6377
5597
|
|
|
6378
5598
|
function loadEffectData(effect, effectOptions, id, reduceDuplicates) {
|
|
@@ -6399,6 +5619,131 @@
|
|
|
6399
5619
|
data.setCb(data.radius);
|
|
6400
5620
|
}
|
|
6401
5621
|
}
|
|
5622
|
+
function normalizeAngle(angle, modulus) {
|
|
5623
|
+
const normalized = angle % modulus;
|
|
5624
|
+
return normalized < defaultAngle ? normalized + modulus : normalized;
|
|
5625
|
+
}
|
|
5626
|
+
function initParticleState(particle, id, group) {
|
|
5627
|
+
particle.id = id;
|
|
5628
|
+
particle.group = group;
|
|
5629
|
+
particle.justWarped = false;
|
|
5630
|
+
particle.effectClose = true;
|
|
5631
|
+
particle.shapeClose = true;
|
|
5632
|
+
particle.pathRotation = false;
|
|
5633
|
+
particle.lastPathTime = 0;
|
|
5634
|
+
particle.destroyed = false;
|
|
5635
|
+
particle.unbreakable = false;
|
|
5636
|
+
particle.isRotating = false;
|
|
5637
|
+
particle.rotation = 0;
|
|
5638
|
+
particle.misplaced = false;
|
|
5639
|
+
particle.retina = {
|
|
5640
|
+
maxDistance: {},
|
|
5641
|
+
maxSpeed: 0,
|
|
5642
|
+
moveDrift: 0,
|
|
5643
|
+
moveSpeed: 0,
|
|
5644
|
+
sizeAnimationSpeed: 0,
|
|
5645
|
+
};
|
|
5646
|
+
particle.size = {
|
|
5647
|
+
value: 1,
|
|
5648
|
+
max: 1,
|
|
5649
|
+
min: 1,
|
|
5650
|
+
enable: false,
|
|
5651
|
+
};
|
|
5652
|
+
particle.outType = exports.ParticleOutType.normal;
|
|
5653
|
+
particle.ignoresResizeRatio = true;
|
|
5654
|
+
}
|
|
5655
|
+
function resolveParticleOptions(particle, container, pluginManager, overrideOptions) {
|
|
5656
|
+
const mainOptions = container.actualOptions, particlesOptions = loadParticlesOptions(pluginManager, container, mainOptions.particles), reduceDuplicates = particlesOptions.reduceDuplicates;
|
|
5657
|
+
particle.effect = itemFromSingleOrMultiple(particlesOptions.effect.type, particle.id, reduceDuplicates);
|
|
5658
|
+
particle.shape = itemFromSingleOrMultiple(particlesOptions.shape.type, particle.id, reduceDuplicates);
|
|
5659
|
+
const effectOptions = particlesOptions.effect, shapeOptions = particlesOptions.shape;
|
|
5660
|
+
if (overrideOptions) {
|
|
5661
|
+
if (overrideOptions.effect) {
|
|
5662
|
+
const overrideEffectType = overrideOptions.effect.type;
|
|
5663
|
+
if (overrideEffectType && overrideEffectType !== particle.effect) {
|
|
5664
|
+
const effect = itemFromSingleOrMultiple(overrideEffectType, particle.id, reduceDuplicates);
|
|
5665
|
+
if (effect) {
|
|
5666
|
+
particle.effect = effect;
|
|
5667
|
+
}
|
|
5668
|
+
}
|
|
5669
|
+
effectOptions.load(overrideOptions.effect);
|
|
5670
|
+
}
|
|
5671
|
+
if (overrideOptions.shape) {
|
|
5672
|
+
const overrideShapeType = overrideOptions.shape.type;
|
|
5673
|
+
if (overrideShapeType && overrideShapeType !== particle.shape) {
|
|
5674
|
+
const shape = itemFromSingleOrMultiple(overrideShapeType, particle.id, reduceDuplicates);
|
|
5675
|
+
if (shape) {
|
|
5676
|
+
particle.shape = shape;
|
|
5677
|
+
}
|
|
5678
|
+
}
|
|
5679
|
+
shapeOptions.load(overrideOptions.shape);
|
|
5680
|
+
}
|
|
5681
|
+
}
|
|
5682
|
+
if (particle.effect === randomColorValue) {
|
|
5683
|
+
const availableEffects = [...container.effectDrawers.keys()];
|
|
5684
|
+
particle.effect = availableEffects[Math.floor(getRandom() * availableEffects.length)];
|
|
5685
|
+
}
|
|
5686
|
+
if (particle.shape === randomColorValue) {
|
|
5687
|
+
const availableShapes = [...container.shapeDrawers.keys()];
|
|
5688
|
+
particle.shape = availableShapes[Math.floor(getRandom() * availableShapes.length)];
|
|
5689
|
+
}
|
|
5690
|
+
particle.effectData = particle.effect
|
|
5691
|
+
? loadEffectData(particle.effect, effectOptions, particle.id, reduceDuplicates)
|
|
5692
|
+
: undefined;
|
|
5693
|
+
particle.shapeData = particle.shape
|
|
5694
|
+
? loadShapeData(particle.shape, shapeOptions, particle.id, reduceDuplicates)
|
|
5695
|
+
: undefined;
|
|
5696
|
+
particlesOptions.load(overrideOptions);
|
|
5697
|
+
const effectData = particle.effectData, shapeData = particle.shapeData;
|
|
5698
|
+
if (effectData) {
|
|
5699
|
+
particlesOptions.load(effectData.particles);
|
|
5700
|
+
}
|
|
5701
|
+
if (shapeData) {
|
|
5702
|
+
particlesOptions.load(shapeData.particles);
|
|
5703
|
+
}
|
|
5704
|
+
particle.effectClose = effectData?.close ?? particlesOptions.effect.close;
|
|
5705
|
+
particle.shapeClose = shapeData?.close ?? particlesOptions.shape.close;
|
|
5706
|
+
return particlesOptions;
|
|
5707
|
+
}
|
|
5708
|
+
function initParticleDrawers(particle, container) {
|
|
5709
|
+
let effectDrawer, shapeDrawer;
|
|
5710
|
+
if (particle.effect) {
|
|
5711
|
+
effectDrawer = container.effectDrawers.get(particle.effect);
|
|
5712
|
+
}
|
|
5713
|
+
if (effectDrawer?.loadEffect) {
|
|
5714
|
+
effectDrawer.loadEffect(particle);
|
|
5715
|
+
}
|
|
5716
|
+
if (particle.shape) {
|
|
5717
|
+
shapeDrawer = container.shapeDrawers.get(particle.shape);
|
|
5718
|
+
}
|
|
5719
|
+
if (shapeDrawer?.loadShape) {
|
|
5720
|
+
shapeDrawer.loadShape(particle);
|
|
5721
|
+
}
|
|
5722
|
+
const sideCountFunc = shapeDrawer?.getSidesCount;
|
|
5723
|
+
if (sideCountFunc) {
|
|
5724
|
+
particle.sides = sideCountFunc(particle);
|
|
5725
|
+
}
|
|
5726
|
+
}
|
|
5727
|
+
function runUpdaterPreInit(updaters, particle) {
|
|
5728
|
+
for (const updater of updaters) {
|
|
5729
|
+
updater.preInit?.(particle);
|
|
5730
|
+
}
|
|
5731
|
+
}
|
|
5732
|
+
function runUpdaterInit(updaters, particle) {
|
|
5733
|
+
for (const updater of updaters) {
|
|
5734
|
+
updater.init(particle);
|
|
5735
|
+
}
|
|
5736
|
+
}
|
|
5737
|
+
function runDrawerInit(container, particle) {
|
|
5738
|
+
const shapeDrawer = particle.shape ? container.shapeDrawers.get(particle.shape) : undefined, effectDrawer = particle.effect ? container.effectDrawers.get(particle.effect) : undefined;
|
|
5739
|
+
effectDrawer?.particleInit?.(container, particle);
|
|
5740
|
+
shapeDrawer?.particleInit?.(container, particle);
|
|
5741
|
+
}
|
|
5742
|
+
function runParticleCreatedPlugins(container, particle) {
|
|
5743
|
+
for (const plugin of container.particleCreatedPlugins) {
|
|
5744
|
+
plugin.particleCreated?.(particle);
|
|
5745
|
+
}
|
|
5746
|
+
}
|
|
6402
5747
|
class Particle {
|
|
6403
5748
|
backColor;
|
|
6404
5749
|
bubble;
|
|
@@ -6524,94 +5869,20 @@
|
|
|
6524
5869
|
const rotateData = this.getRotateData(), rotating = this.isRotating;
|
|
6525
5870
|
this.#cachedTransform.a = rotateData.cos * (externalTransform.a ?? defaultTransform.a);
|
|
6526
5871
|
this.#cachedTransform.b = rotating
|
|
6527
|
-
? rotateData.sin * (externalTransform.b ?? identity$
|
|
5872
|
+
? rotateData.sin * (externalTransform.b ?? identity$1)
|
|
6528
5873
|
: (externalTransform.b ?? defaultTransform.b);
|
|
6529
5874
|
this.#cachedTransform.c = rotating
|
|
6530
|
-
? -rotateData.sin * (externalTransform.c ?? identity$
|
|
5875
|
+
? -rotateData.sin * (externalTransform.c ?? identity$1)
|
|
6531
5876
|
: (externalTransform.c ?? defaultTransform.c);
|
|
6532
5877
|
this.#cachedTransform.d = rotateData.cos * (externalTransform.d ?? defaultTransform.d);
|
|
6533
5878
|
return this.#cachedTransform;
|
|
6534
5879
|
}
|
|
6535
5880
|
init(id, position, overrideOptions, group) {
|
|
6536
5881
|
const container = this.#container;
|
|
6537
|
-
this
|
|
6538
|
-
this.
|
|
6539
|
-
this.justWarped = false;
|
|
6540
|
-
this.effectClose = true;
|
|
6541
|
-
this.shapeClose = true;
|
|
6542
|
-
this.pathRotation = false;
|
|
6543
|
-
this.lastPathTime = 0;
|
|
6544
|
-
this.destroyed = false;
|
|
6545
|
-
this.unbreakable = false;
|
|
6546
|
-
this.isRotating = false;
|
|
6547
|
-
this.rotation = 0;
|
|
6548
|
-
this.misplaced = false;
|
|
6549
|
-
this.retina = {
|
|
6550
|
-
maxDistance: {},
|
|
6551
|
-
maxSpeed: 0,
|
|
6552
|
-
moveDrift: 0,
|
|
6553
|
-
moveSpeed: 0,
|
|
6554
|
-
sizeAnimationSpeed: 0,
|
|
6555
|
-
};
|
|
6556
|
-
this.size = {
|
|
6557
|
-
value: 1,
|
|
6558
|
-
max: 1,
|
|
6559
|
-
min: 1,
|
|
6560
|
-
enable: false,
|
|
6561
|
-
};
|
|
6562
|
-
this.outType = exports.ParticleOutType.normal;
|
|
6563
|
-
this.ignoresResizeRatio = true;
|
|
6564
|
-
const mainOptions = container.actualOptions, particlesOptions = loadParticlesOptions(this.#pluginManager, container, mainOptions.particles), reduceDuplicates = particlesOptions.reduceDuplicates, effectType = particlesOptions.effect.type, shapeType = particlesOptions.shape.type;
|
|
6565
|
-
this.effect = itemFromSingleOrMultiple(effectType, this.id, reduceDuplicates);
|
|
6566
|
-
this.shape = itemFromSingleOrMultiple(shapeType, this.id, reduceDuplicates);
|
|
6567
|
-
const effectOptions = particlesOptions.effect, shapeOptions = particlesOptions.shape;
|
|
6568
|
-
if (overrideOptions) {
|
|
6569
|
-
if (overrideOptions.effect) {
|
|
6570
|
-
const overrideEffectType = overrideOptions.effect.type;
|
|
6571
|
-
if (overrideEffectType && overrideEffectType !== this.effect) {
|
|
6572
|
-
const effect = itemFromSingleOrMultiple(overrideEffectType, this.id, reduceDuplicates);
|
|
6573
|
-
if (effect) {
|
|
6574
|
-
this.effect = effect;
|
|
6575
|
-
}
|
|
6576
|
-
}
|
|
6577
|
-
effectOptions.load(overrideOptions.effect);
|
|
6578
|
-
}
|
|
6579
|
-
if (overrideOptions.shape) {
|
|
6580
|
-
const overrideShapeType = overrideOptions.shape.type;
|
|
6581
|
-
if (overrideShapeType && overrideShapeType !== this.shape) {
|
|
6582
|
-
const shape = itemFromSingleOrMultiple(overrideShapeType, this.id, reduceDuplicates);
|
|
6583
|
-
if (shape) {
|
|
6584
|
-
this.shape = shape;
|
|
6585
|
-
}
|
|
6586
|
-
}
|
|
6587
|
-
shapeOptions.load(overrideOptions.shape);
|
|
6588
|
-
}
|
|
6589
|
-
}
|
|
6590
|
-
if (this.effect === randomColorValue) {
|
|
6591
|
-
const availableEffects = [...this.#container.effectDrawers.keys()];
|
|
6592
|
-
this.effect = availableEffects[Math.floor(getRandom() * availableEffects.length)];
|
|
6593
|
-
}
|
|
6594
|
-
if (this.shape === randomColorValue) {
|
|
6595
|
-
const availableShapes = [...this.#container.shapeDrawers.keys()];
|
|
6596
|
-
this.shape = availableShapes[Math.floor(getRandom() * availableShapes.length)];
|
|
6597
|
-
}
|
|
6598
|
-
this.effectData = this.effect ? loadEffectData(this.effect, effectOptions, this.id, reduceDuplicates) : undefined;
|
|
6599
|
-
this.shapeData = this.shape ? loadShapeData(this.shape, shapeOptions, this.id, reduceDuplicates) : undefined;
|
|
6600
|
-
particlesOptions.load(overrideOptions);
|
|
6601
|
-
const effectData = this.effectData, shapeData = this.shapeData;
|
|
6602
|
-
if (effectData) {
|
|
6603
|
-
particlesOptions.load(effectData.particles);
|
|
6604
|
-
}
|
|
6605
|
-
if (shapeData) {
|
|
6606
|
-
particlesOptions.load(shapeData.particles);
|
|
6607
|
-
}
|
|
6608
|
-
this.effectClose = effectData?.close ?? particlesOptions.effect.close;
|
|
6609
|
-
this.shapeClose = shapeData?.close ?? particlesOptions.shape.close;
|
|
6610
|
-
this.options = particlesOptions;
|
|
5882
|
+
initParticleState(this, id, group);
|
|
5883
|
+
this.options = resolveParticleOptions(this, container, this.#pluginManager, overrideOptions);
|
|
6611
5884
|
container.retina.initParticle(this);
|
|
6612
|
-
|
|
6613
|
-
updater.preInit?.(this);
|
|
6614
|
-
}
|
|
5885
|
+
runUpdaterPreInit(container.particleUpdaters, this);
|
|
6615
5886
|
this.bubble = {
|
|
6616
5887
|
inRange: false,
|
|
6617
5888
|
};
|
|
@@ -6624,32 +5895,11 @@
|
|
|
6624
5895
|
this.velocity = this.initialVelocity.copy();
|
|
6625
5896
|
this.zIndexFactor = this.position.z / container.zLayers;
|
|
6626
5897
|
this.sides = 24;
|
|
6627
|
-
|
|
6628
|
-
if (this.effect) {
|
|
6629
|
-
effectDrawer = container.effectDrawers.get(this.effect);
|
|
6630
|
-
}
|
|
6631
|
-
if (effectDrawer?.loadEffect) {
|
|
6632
|
-
effectDrawer.loadEffect(this);
|
|
6633
|
-
}
|
|
6634
|
-
if (this.shape) {
|
|
6635
|
-
shapeDrawer = container.shapeDrawers.get(this.shape);
|
|
6636
|
-
}
|
|
6637
|
-
if (shapeDrawer?.loadShape) {
|
|
6638
|
-
shapeDrawer.loadShape(this);
|
|
6639
|
-
}
|
|
6640
|
-
const sideCountFunc = shapeDrawer?.getSidesCount;
|
|
6641
|
-
if (sideCountFunc) {
|
|
6642
|
-
this.sides = sideCountFunc(this);
|
|
6643
|
-
}
|
|
5898
|
+
initParticleDrawers(this, container);
|
|
6644
5899
|
this.spawning = false;
|
|
6645
|
-
|
|
6646
|
-
|
|
6647
|
-
|
|
6648
|
-
effectDrawer?.particleInit?.(container, this);
|
|
6649
|
-
shapeDrawer?.particleInit?.(container, this);
|
|
6650
|
-
for (const plugin of container.particleCreatedPlugins) {
|
|
6651
|
-
plugin.particleCreated?.(this);
|
|
6652
|
-
}
|
|
5900
|
+
runUpdaterInit(container.particleUpdaters, this);
|
|
5901
|
+
runDrawerInit(container, this);
|
|
5902
|
+
runParticleCreatedPlugins(container, this);
|
|
6653
5903
|
}
|
|
6654
5904
|
isInsideCanvas(direction) {
|
|
6655
5905
|
return this.#getInsideCanvasResult({ direction }).inside;
|
|
@@ -6663,15 +5913,15 @@
|
|
|
6663
5913
|
}
|
|
6664
5914
|
const angle = this.roll.angle;
|
|
6665
5915
|
if (this.roll.horizontal && this.roll.vertical) {
|
|
6666
|
-
const
|
|
5916
|
+
const adjustedAngle = normalizeAngle(angle, doublePI);
|
|
6667
5917
|
return adjustedAngle >= Math.PI * half && adjustedAngle < Math.PI * triple * half;
|
|
6668
5918
|
}
|
|
6669
5919
|
if (this.roll.horizontal) {
|
|
6670
|
-
const
|
|
5920
|
+
const adjustedAngle = normalizeAngle(angle + Math.PI * half, doublePI);
|
|
6671
5921
|
return adjustedAngle >= Math.PI && adjustedAngle < Math.PI * double;
|
|
6672
5922
|
}
|
|
6673
5923
|
if (this.roll.vertical) {
|
|
6674
|
-
const
|
|
5924
|
+
const adjustedAngle = normalizeAngle(angle, doublePI);
|
|
6675
5925
|
return adjustedAngle >= Math.PI && adjustedAngle < Math.PI * double;
|
|
6676
5926
|
}
|
|
6677
5927
|
return false;
|
|
@@ -6684,10 +5934,10 @@
|
|
|
6684
5934
|
updater.reset?.(this);
|
|
6685
5935
|
}
|
|
6686
5936
|
}
|
|
6687
|
-
#calcPosition
|
|
5937
|
+
#calcPosition(position, zIndex) {
|
|
6688
5938
|
let tryCount = defaultRetryCount, posVec = position ? Vector3d.create(position.x, position.y, zIndex) : undefined;
|
|
6689
|
-
const container = this.#container, plugins = container.particlePositionPlugins, outModes = this.options.move.outModes, radius = this.getRadius(), canvasSize = container.canvas.size
|
|
6690
|
-
|
|
5939
|
+
const container = this.#container, plugins = container.particlePositionPlugins, outModes = this.options.move.outModes, radius = this.getRadius(), canvasSize = container.canvas.size;
|
|
5940
|
+
for (;;) {
|
|
6691
5941
|
for (const plugin of plugins) {
|
|
6692
5942
|
const pluginPos = plugin.particlePosition?.(posVec, this);
|
|
6693
5943
|
if (pluginPos) {
|
|
@@ -6715,9 +5965,8 @@
|
|
|
6715
5965
|
tryCount += tryCountIncrement;
|
|
6716
5966
|
posVec = undefined;
|
|
6717
5967
|
}
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
#calculateVelocity = () => {
|
|
5968
|
+
}
|
|
5969
|
+
#calculateVelocity() {
|
|
6721
5970
|
const moveOptions = this.options.move, baseVelocity = getParticleBaseVelocity(this.direction), res = baseVelocity.copy();
|
|
6722
5971
|
if (moveOptions.direction === exports.MoveDirection.inside || moveOptions.direction === exports.MoveDirection.outside) {
|
|
6723
5972
|
return res;
|
|
@@ -6733,8 +5982,8 @@
|
|
|
6733
5982
|
res.length *= getRandom();
|
|
6734
5983
|
}
|
|
6735
5984
|
return res;
|
|
6736
|
-
}
|
|
6737
|
-
#fixHorizontal
|
|
5985
|
+
}
|
|
5986
|
+
#fixHorizontal(pos, radius, outMode) {
|
|
6738
5987
|
fixOutMode({
|
|
6739
5988
|
outMode,
|
|
6740
5989
|
checkModes: [exports.OutMode.bounce],
|
|
@@ -6743,8 +5992,8 @@
|
|
|
6743
5992
|
setCb: (value) => (pos.x += value),
|
|
6744
5993
|
radius,
|
|
6745
5994
|
});
|
|
6746
|
-
}
|
|
6747
|
-
#fixVertical
|
|
5995
|
+
}
|
|
5996
|
+
#fixVertical(pos, radius, outMode) {
|
|
6748
5997
|
fixOutMode({
|
|
6749
5998
|
outMode,
|
|
6750
5999
|
checkModes: [exports.OutMode.bounce],
|
|
@@ -6753,8 +6002,8 @@
|
|
|
6753
6002
|
setCb: (value) => (pos.y += value),
|
|
6754
6003
|
radius,
|
|
6755
6004
|
});
|
|
6756
|
-
}
|
|
6757
|
-
#getDefaultInsideCanvasResult
|
|
6005
|
+
}
|
|
6006
|
+
#getDefaultInsideCanvasResult(direction, outMode) {
|
|
6758
6007
|
const radius = this.getRadius(), canvasSize = this.#container.canvas.size, position = this.position, isBounce = outMode === exports.OutMode.bounce;
|
|
6759
6008
|
if (direction === exports.OutModeDirection.bottom) {
|
|
6760
6009
|
return {
|
|
@@ -6787,8 +6036,8 @@
|
|
|
6787
6036
|
position.x <= canvasSize.width + radius,
|
|
6788
6037
|
reason: "default",
|
|
6789
6038
|
};
|
|
6790
|
-
}
|
|
6791
|
-
#getInsideCanvasCallbackData
|
|
6039
|
+
}
|
|
6040
|
+
#getInsideCanvasCallbackData(direction, outMode) {
|
|
6792
6041
|
return {
|
|
6793
6042
|
canvasSize: this.#container.canvas.size,
|
|
6794
6043
|
direction,
|
|
@@ -6796,8 +6045,8 @@
|
|
|
6796
6045
|
particle: this,
|
|
6797
6046
|
radius: this.getRadius(),
|
|
6798
6047
|
};
|
|
6799
|
-
}
|
|
6800
|
-
#getInsideCanvasResult
|
|
6048
|
+
}
|
|
6049
|
+
#getInsideCanvasResult(data) {
|
|
6801
6050
|
const defaultResult = this.#getDefaultInsideCanvasResult(data.direction, data.outMode), container = this.#container, shapeDrawer = this.shape ? container.shapeDrawers.get(this.shape) : undefined, effectDrawer = this.effect ? container.effectDrawers.get(this.effect) : undefined, shapeCheck = shapeDrawer?.isInsideCanvas, effectCheck = effectDrawer?.isInsideCanvas;
|
|
6802
6051
|
if (!shapeCheck && !effectCheck) {
|
|
6803
6052
|
return defaultResult;
|
|
@@ -6812,8 +6061,8 @@
|
|
|
6812
6061
|
};
|
|
6813
6062
|
}
|
|
6814
6063
|
return shapeResult ?? effectResult ?? defaultResult;
|
|
6815
|
-
}
|
|
6816
|
-
#getRollColor
|
|
6064
|
+
}
|
|
6065
|
+
#getRollColor(color) {
|
|
6817
6066
|
if (!color || !this.roll || (!this.backColor && !this.roll.alter)) {
|
|
6818
6067
|
return color;
|
|
6819
6068
|
}
|
|
@@ -6827,8 +6076,8 @@
|
|
|
6827
6076
|
return alterHsl(color, this.roll.alter.type, this.roll.alter.value);
|
|
6828
6077
|
}
|
|
6829
6078
|
return color;
|
|
6830
|
-
}
|
|
6831
|
-
#initPosition
|
|
6079
|
+
}
|
|
6080
|
+
#initPosition(position) {
|
|
6832
6081
|
const container = this.#container, zIndexValue = Math.floor(getRangeValue(this.options.zIndex.value)), initialPosition = this.#calcPosition(position, clamp(zIndexValue, minZ, container.zLayers));
|
|
6833
6082
|
if (!initialPosition) {
|
|
6834
6083
|
throw new Error("a valid position cannot be found for particle");
|
|
@@ -6851,8 +6100,8 @@
|
|
|
6851
6100
|
break;
|
|
6852
6101
|
}
|
|
6853
6102
|
this.offset = Vector.origin;
|
|
6854
|
-
}
|
|
6855
|
-
#normalizeInsideCanvasResult
|
|
6103
|
+
}
|
|
6104
|
+
#normalizeInsideCanvasResult(result, reason) {
|
|
6856
6105
|
if (typeof result === "boolean") {
|
|
6857
6106
|
return {
|
|
6858
6107
|
inside: result,
|
|
@@ -6864,7 +6113,7 @@
|
|
|
6864
6113
|
margin: result.margin,
|
|
6865
6114
|
reason: result.reason ?? reason,
|
|
6866
6115
|
};
|
|
6867
|
-
}
|
|
6116
|
+
}
|
|
6868
6117
|
}
|
|
6869
6118
|
|
|
6870
6119
|
class SpatialHashGrid {
|
|
@@ -7217,10 +6466,10 @@
|
|
|
7217
6466
|
}
|
|
7218
6467
|
this.#resizeFactor = undefined;
|
|
7219
6468
|
}
|
|
7220
|
-
#addToPool
|
|
6469
|
+
#addToPool(...particles) {
|
|
7221
6470
|
this.#pool.push(...particles);
|
|
7222
|
-
}
|
|
7223
|
-
#applyDensity
|
|
6471
|
+
}
|
|
6472
|
+
#applyDensity(options, pluginsCount, group, groupOptions) {
|
|
7224
6473
|
const numberOptions = options.number;
|
|
7225
6474
|
if (!numberOptions.density.enable) {
|
|
7226
6475
|
if (group === undefined) {
|
|
@@ -7244,36 +6493,19 @@
|
|
|
7244
6493
|
else if (particlesCount > particlesNumber) {
|
|
7245
6494
|
this.removeQuantity(particlesCount - particlesNumber, group);
|
|
7246
6495
|
}
|
|
7247
|
-
}
|
|
7248
|
-
#createBuckets
|
|
6496
|
+
}
|
|
6497
|
+
#createBuckets(zLayers) {
|
|
7249
6498
|
const bucketCount = Math.max(Math.floor(zLayers), one);
|
|
7250
6499
|
return Array.from({ length: bucketCount }, () => []);
|
|
7251
|
-
}
|
|
7252
|
-
#getBucketIndex
|
|
6500
|
+
}
|
|
6501
|
+
#getBucketIndex(zIndex) {
|
|
7253
6502
|
const maxBucketIndex = this.#zBuckets.length - one;
|
|
7254
6503
|
if (maxBucketIndex <= minIndex) {
|
|
7255
6504
|
return minIndex;
|
|
7256
6505
|
}
|
|
7257
6506
|
return Math.min(Math.max(Math.floor(zIndex), minIndex), maxBucketIndex);
|
|
7258
|
-
}
|
|
7259
|
-
#
|
|
7260
|
-
let start = minIndex, end = bucket.length;
|
|
7261
|
-
while (start < end) {
|
|
7262
|
-
const middle = Math.floor((start + end) / double), middleParticle = bucket[middle];
|
|
7263
|
-
if (!middleParticle) {
|
|
7264
|
-
end = middle;
|
|
7265
|
-
continue;
|
|
7266
|
-
}
|
|
7267
|
-
if (middleParticle.id < particleId) {
|
|
7268
|
-
start = middle + one;
|
|
7269
|
-
}
|
|
7270
|
-
else {
|
|
7271
|
-
end = middle;
|
|
7272
|
-
}
|
|
7273
|
-
}
|
|
7274
|
-
return start;
|
|
7275
|
-
};
|
|
7276
|
-
#initDensityFactor = densityOptions => {
|
|
6507
|
+
}
|
|
6508
|
+
#initDensityFactor(densityOptions) {
|
|
7277
6509
|
const container = this.#container;
|
|
7278
6510
|
if (!densityOptions.enable) {
|
|
7279
6511
|
return defaultDensityFactor;
|
|
@@ -7283,16 +6515,16 @@
|
|
|
7283
6515
|
return defaultDensityFactor;
|
|
7284
6516
|
}
|
|
7285
6517
|
return ((canvasSize.width * canvasSize.height) / (densityOptions.height * densityOptions.width * pxRatio ** squareExp));
|
|
7286
|
-
}
|
|
7287
|
-
#insertParticleIntoBucket
|
|
6518
|
+
}
|
|
6519
|
+
#insertParticleIntoBucket(particle) {
|
|
7288
6520
|
const bucketIndex = this.#getBucketIndex(particle.position.z), bucket = this.#zBuckets[bucketIndex];
|
|
7289
6521
|
if (!bucket) {
|
|
7290
6522
|
return;
|
|
7291
6523
|
}
|
|
7292
|
-
bucket.
|
|
6524
|
+
bucket.push(particle);
|
|
7293
6525
|
this.#particleBuckets.set(particle.id, bucketIndex);
|
|
7294
|
-
}
|
|
7295
|
-
#removeParticle
|
|
6526
|
+
}
|
|
6527
|
+
#removeParticle(index, group, override) {
|
|
7296
6528
|
const particle = this.#array[index];
|
|
7297
6529
|
if (!particle) {
|
|
7298
6530
|
return false;
|
|
@@ -7308,22 +6540,20 @@
|
|
|
7308
6540
|
});
|
|
7309
6541
|
this.#addToPool(particle);
|
|
7310
6542
|
return true;
|
|
7311
|
-
}
|
|
7312
|
-
#removeParticleFromBucket
|
|
6543
|
+
}
|
|
6544
|
+
#removeParticleFromBucket(particle) {
|
|
7313
6545
|
const bucketIndex = this.#particleBuckets.get(particle.id) ?? this.#getBucketIndex(particle.position.z), bucket = this.#zBuckets[bucketIndex];
|
|
7314
6546
|
if (!bucket) {
|
|
7315
6547
|
this.#particleBuckets.delete(particle.id);
|
|
7316
6548
|
return;
|
|
7317
6549
|
}
|
|
7318
|
-
const
|
|
7319
|
-
if (
|
|
7320
|
-
|
|
7321
|
-
return;
|
|
6550
|
+
const idx = bucket.findIndex(p => p.id === particle.id);
|
|
6551
|
+
if (idx >= minIndex) {
|
|
6552
|
+
bucket.splice(idx, deleteCount);
|
|
7322
6553
|
}
|
|
7323
|
-
bucket.splice(particleIndex, deleteCount);
|
|
7324
6554
|
this.#particleBuckets.delete(particle.id);
|
|
7325
|
-
}
|
|
7326
|
-
#resetBuckets
|
|
6555
|
+
}
|
|
6556
|
+
#resetBuckets(zLayers) {
|
|
7327
6557
|
const bucketCount = Math.max(Math.floor(zLayers), one);
|
|
7328
6558
|
if (this.#zBuckets.length !== bucketCount) {
|
|
7329
6559
|
this.#zBuckets = this.#createBuckets(bucketCount);
|
|
@@ -7332,8 +6562,8 @@
|
|
|
7332
6562
|
for (const bucket of this.#zBuckets) {
|
|
7333
6563
|
bucket.length = minIndex;
|
|
7334
6564
|
}
|
|
7335
|
-
}
|
|
7336
|
-
#updateParticleBucket
|
|
6565
|
+
}
|
|
6566
|
+
#updateParticleBucket(particle) {
|
|
7337
6567
|
const newBucketIndex = this.#getBucketIndex(particle.position.z), currentBucketIndex = this.#particleBuckets.get(particle.id);
|
|
7338
6568
|
if (currentBucketIndex === undefined) {
|
|
7339
6569
|
this.#insertParticleIntoBucket(particle);
|
|
@@ -7344,9 +6574,9 @@
|
|
|
7344
6574
|
}
|
|
7345
6575
|
const currentBucket = this.#zBuckets[currentBucketIndex];
|
|
7346
6576
|
if (currentBucket) {
|
|
7347
|
-
const
|
|
7348
|
-
if (
|
|
7349
|
-
currentBucket.splice(
|
|
6577
|
+
const idx = currentBucket.findIndex(p => p.id === particle.id);
|
|
6578
|
+
if (idx >= minIndex) {
|
|
6579
|
+
currentBucket.splice(idx, deleteCount);
|
|
7350
6580
|
}
|
|
7351
6581
|
}
|
|
7352
6582
|
const newBucket = this.#zBuckets[newBucketIndex];
|
|
@@ -7354,10 +6584,16 @@
|
|
|
7354
6584
|
this.#particleBuckets.set(particle.id, newBucketIndex);
|
|
7355
6585
|
return;
|
|
7356
6586
|
}
|
|
7357
|
-
newBucket.
|
|
6587
|
+
newBucket.push(particle);
|
|
6588
|
+
if (newBucket.length >= double) {
|
|
6589
|
+
const prev = newBucket[newBucket.length - double];
|
|
6590
|
+
if (prev && particle.id < prev.id) {
|
|
6591
|
+
newBucket.sort((a, b) => a.id - b.id);
|
|
6592
|
+
}
|
|
6593
|
+
}
|
|
7358
6594
|
this.#particleBuckets.set(particle.id, newBucketIndex);
|
|
7359
|
-
}
|
|
7360
|
-
#updateParticlesPhase1
|
|
6595
|
+
}
|
|
6596
|
+
#updateParticlesPhase1(delta) {
|
|
7361
6597
|
const particlesToDelete = new Set(), resizeFactor = this.#resizeFactor;
|
|
7362
6598
|
for (const particle of this.#array) {
|
|
7363
6599
|
if (resizeFactor && !particle.ignoresResizeRatio) {
|
|
@@ -7383,8 +6619,8 @@
|
|
|
7383
6619
|
this.grid.insert(particle);
|
|
7384
6620
|
}
|
|
7385
6621
|
return particlesToDelete;
|
|
7386
|
-
}
|
|
7387
|
-
#updateParticlesPhase2
|
|
6622
|
+
}
|
|
6623
|
+
#updateParticlesPhase2(delta, particlesToDelete) {
|
|
7388
6624
|
for (const particle of this.#array) {
|
|
7389
6625
|
if (particle.destroyed) {
|
|
7390
6626
|
particlesToDelete.add(particle);
|
|
@@ -7400,7 +6636,7 @@
|
|
|
7400
6636
|
}
|
|
7401
6637
|
this.#updateParticleBucket(particle);
|
|
7402
6638
|
}
|
|
7403
|
-
}
|
|
6639
|
+
}
|
|
7404
6640
|
}
|
|
7405
6641
|
|
|
7406
6642
|
class Retina {
|
|
@@ -7762,7 +6998,7 @@
|
|
|
7762
6998
|
}
|
|
7763
6999
|
return refresh;
|
|
7764
7000
|
}
|
|
7765
|
-
#nextFrame
|
|
7001
|
+
#nextFrame(timestamp) {
|
|
7766
7002
|
try {
|
|
7767
7003
|
if (!this.#smooth &&
|
|
7768
7004
|
this.#lastFrameTime !== undefined &&
|
|
@@ -7790,7 +7026,7 @@
|
|
|
7790
7026
|
catch (e) {
|
|
7791
7027
|
getLogger().error("error in animation loop", e);
|
|
7792
7028
|
}
|
|
7793
|
-
}
|
|
7029
|
+
}
|
|
7794
7030
|
}
|
|
7795
7031
|
|
|
7796
7032
|
var Container$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -7800,8 +7036,17 @@
|
|
|
7800
7036
|
|
|
7801
7037
|
class FireworksInstance {
|
|
7802
7038
|
#container;
|
|
7803
|
-
|
|
7039
|
+
#id;
|
|
7040
|
+
constructor(container, id) {
|
|
7804
7041
|
this.#container = container;
|
|
7042
|
+
this.#id = id;
|
|
7043
|
+
}
|
|
7044
|
+
get destroyed() {
|
|
7045
|
+
return this.#container.destroyed;
|
|
7046
|
+
}
|
|
7047
|
+
destroy() {
|
|
7048
|
+
this.#container.destroy();
|
|
7049
|
+
deleteFireworksInstance(this.#id);
|
|
7805
7050
|
}
|
|
7806
7051
|
pause() {
|
|
7807
7052
|
this.#container.pause();
|
|
@@ -7857,7 +7102,7 @@
|
|
|
7857
7102
|
BlendPluginInstance: BlendPluginInstance
|
|
7858
7103
|
});
|
|
7859
7104
|
|
|
7860
|
-
const
|
|
7105
|
+
const moveSpeedFactor = 60, minSpinRadius = 0, spinFactor = 0.01, defaultPathDelay = 0, noDecay = 1;
|
|
7861
7106
|
function applyDistance(particle) {
|
|
7862
7107
|
const initialPosition = particle.initialPosition, { dx, dy } = getDistances(initialPosition, particle.position), dxFixed = Math.abs(dx), dyFixed = Math.abs(dy), { maxDistance } = particle.retina, hDistance = maxDistance.horizontal, vDistance = maxDistance.vertical;
|
|
7863
7108
|
if (!hDistance && !vDistance) {
|
|
@@ -7890,7 +7135,7 @@
|
|
|
7890
7135
|
}
|
|
7891
7136
|
function move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, reduceFactor, delta) {
|
|
7892
7137
|
applyPath(particle, delta);
|
|
7893
|
-
const gravityOptions = particle.gravity, gravityFactor = gravityOptions?.enable && gravityOptions.inverse ? -identity : identity;
|
|
7138
|
+
const gravityOptions = particle.gravity, gravityFactor = gravityOptions?.enable && gravityOptions.inverse ? -identity$1 : identity$1;
|
|
7894
7139
|
if (moveDrift && moveSpeed) {
|
|
7895
7140
|
particle.velocity.x += (moveDrift * delta.factor) / (moveSpeedFactor * moveSpeed);
|
|
7896
7141
|
}
|
|
@@ -7910,7 +7155,7 @@
|
|
|
7910
7155
|
particle.velocity.y = velocity.y / moveSpeed;
|
|
7911
7156
|
}
|
|
7912
7157
|
}
|
|
7913
|
-
const zIndexOptions = particle.options.zIndex, zVelocityFactor = (identity - particle.zIndexFactor) ** zIndexOptions.velocityRate;
|
|
7158
|
+
const zIndexOptions = particle.options.zIndex, zVelocityFactor = (identity$1 - particle.zIndexFactor) ** zIndexOptions.velocityRate;
|
|
7914
7159
|
velocity.multTo(zVelocityFactor);
|
|
7915
7160
|
velocity.multTo(reduceFactor);
|
|
7916
7161
|
const { position } = particle;
|
|
@@ -7936,13 +7181,13 @@
|
|
|
7936
7181
|
const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height), halfMaxSize = maxCanvasSize * half;
|
|
7937
7182
|
if (particle.spin.radius > halfMaxSize) {
|
|
7938
7183
|
particle.spin.radius = halfMaxSize;
|
|
7939
|
-
particle.spin.acceleration *= -identity;
|
|
7184
|
+
particle.spin.acceleration *= -identity$1;
|
|
7940
7185
|
}
|
|
7941
7186
|
else if (particle.spin.radius < minSpinRadius) {
|
|
7942
7187
|
particle.spin.radius = minSpinRadius;
|
|
7943
|
-
particle.spin.acceleration *= -identity;
|
|
7188
|
+
particle.spin.acceleration *= -identity$1;
|
|
7944
7189
|
}
|
|
7945
|
-
particle.spin.angle += moveSpeed * spinFactor * (identity - particle.spin.radius / maxCanvasSize);
|
|
7190
|
+
particle.spin.angle += moveSpeed * spinFactor * (identity$1 - particle.spin.radius / maxCanvasSize);
|
|
7946
7191
|
}
|
|
7947
7192
|
function applyPath(particle, delta) {
|
|
7948
7193
|
const particlesOptions = particle.options, pathOptions = particlesOptions.move.path, pathEnabled = pathOptions.enable;
|
|
@@ -7959,13 +7204,13 @@
|
|
|
7959
7204
|
particle.velocity.addTo(path);
|
|
7960
7205
|
}
|
|
7961
7206
|
if (pathOptions.clamp) {
|
|
7962
|
-
particle.velocity.x = clamp(particle.velocity.x, -identity, identity);
|
|
7963
|
-
particle.velocity.y = clamp(particle.velocity.y, -identity, identity);
|
|
7207
|
+
particle.velocity.x = clamp(particle.velocity.x, -identity$1, identity$1);
|
|
7208
|
+
particle.velocity.y = clamp(particle.velocity.y, -identity$1, identity$1);
|
|
7964
7209
|
}
|
|
7965
7210
|
particle.lastPathTime -= pathDelay;
|
|
7966
7211
|
}
|
|
7967
7212
|
function getProximitySpeedFactor(particle) {
|
|
7968
|
-
return particle.slow.inRange ? particle.slow.factor : identity;
|
|
7213
|
+
return particle.slow.inRange ? particle.slow.factor : identity$1;
|
|
7969
7214
|
}
|
|
7970
7215
|
function initSpin(container, particle) {
|
|
7971
7216
|
const options = particle.options, spinOptions = options.move.spin;
|
|
@@ -8421,22 +7666,22 @@
|
|
|
8421
7666
|
this.#volume += soundsOptions.volume.step;
|
|
8422
7667
|
await this.#updateVolume();
|
|
8423
7668
|
}
|
|
8424
|
-
#addBuffer
|
|
7669
|
+
#addBuffer(audioCtx) {
|
|
8425
7670
|
const buffer = audioCtx.createBufferSource();
|
|
8426
7671
|
this.#audioSources.push(buffer);
|
|
8427
7672
|
return buffer;
|
|
8428
|
-
}
|
|
8429
|
-
#addOscillator
|
|
7673
|
+
}
|
|
7674
|
+
#addOscillator(audioCtx) {
|
|
8430
7675
|
const oscillator = audioCtx.createOscillator();
|
|
8431
7676
|
this.#audioSources.push(oscillator);
|
|
8432
7677
|
return oscillator;
|
|
8433
|
-
}
|
|
7678
|
+
}
|
|
8434
7679
|
#getAudioContext() {
|
|
8435
7680
|
const container = this.#container;
|
|
8436
7681
|
container.audioContext ??= new AudioContext();
|
|
8437
7682
|
return container.audioContext;
|
|
8438
7683
|
}
|
|
8439
|
-
#initEvents
|
|
7684
|
+
#initEvents() {
|
|
8440
7685
|
const container = this.#container, soundsOptions = container.actualOptions.sounds;
|
|
8441
7686
|
if (!soundsOptions?.enable || !container.canvas.domElement) {
|
|
8442
7687
|
return;
|
|
@@ -8493,8 +7738,8 @@
|
|
|
8493
7738
|
this.#engine.addEventListener(item, cb);
|
|
8494
7739
|
});
|
|
8495
7740
|
}
|
|
8496
|
-
}
|
|
8497
|
-
#mute
|
|
7741
|
+
}
|
|
7742
|
+
async #mute() {
|
|
8498
7743
|
const container = this.#container, audioContext = this.#getAudioContext();
|
|
8499
7744
|
for (const source of this.#audioSources) {
|
|
8500
7745
|
this.#removeAudioSource(source);
|
|
@@ -8505,8 +7750,8 @@
|
|
|
8505
7750
|
await audioContext.close();
|
|
8506
7751
|
container.audioContext = undefined;
|
|
8507
7752
|
this.#container.dispatchEvent(SoundsEventType.mute);
|
|
8508
|
-
}
|
|
8509
|
-
#playBuffer
|
|
7753
|
+
}
|
|
7754
|
+
#playBuffer(audio) {
|
|
8510
7755
|
const audioBuffer = this.#audioMap.get(audio.source);
|
|
8511
7756
|
if (!audioBuffer) {
|
|
8512
7757
|
return;
|
|
@@ -8520,8 +7765,8 @@
|
|
|
8520
7765
|
source.buffer = audioBuffer;
|
|
8521
7766
|
source.connect(this.#gain ?? audioCtx.destination);
|
|
8522
7767
|
source.start();
|
|
8523
|
-
}
|
|
8524
|
-
#playFrequency
|
|
7768
|
+
}
|
|
7769
|
+
async #playFrequency(frequency, duration) {
|
|
8525
7770
|
if (!this.#gain || this.#container.muted) {
|
|
8526
7771
|
return;
|
|
8527
7772
|
}
|
|
@@ -8536,8 +7781,8 @@
|
|
|
8536
7781
|
resolve();
|
|
8537
7782
|
}, duration);
|
|
8538
7783
|
});
|
|
8539
|
-
}
|
|
8540
|
-
#playMuteSound
|
|
7784
|
+
}
|
|
7785
|
+
#playMuteSound() {
|
|
8541
7786
|
if (this.#container.muted) {
|
|
8542
7787
|
return;
|
|
8543
7788
|
}
|
|
@@ -8554,8 +7799,8 @@
|
|
|
8554
7799
|
oscillator.disconnect();
|
|
8555
7800
|
gain.disconnect();
|
|
8556
7801
|
});
|
|
8557
|
-
}
|
|
8558
|
-
#playNote
|
|
7802
|
+
}
|
|
7803
|
+
async #playNote(notes, noteIdx, loop) {
|
|
8559
7804
|
if (this.#container.muted) {
|
|
8560
7805
|
return;
|
|
8561
7806
|
}
|
|
@@ -8573,8 +7818,8 @@
|
|
|
8573
7818
|
nextNoteIdx = nextNoteIdx % notes.length;
|
|
8574
7819
|
}
|
|
8575
7820
|
await this.#playNote(notes, nextNoteIdx, loop);
|
|
8576
|
-
}
|
|
8577
|
-
#playNoteValue
|
|
7821
|
+
}
|
|
7822
|
+
async #playNoteValue(notes, noteIdx, valueIdx) {
|
|
8578
7823
|
const note = notes[noteIdx];
|
|
8579
7824
|
if (!note) {
|
|
8580
7825
|
return;
|
|
@@ -8593,14 +7838,14 @@
|
|
|
8593
7838
|
catch (e) {
|
|
8594
7839
|
getLogger().error(e);
|
|
8595
7840
|
}
|
|
8596
|
-
}
|
|
8597
|
-
#removeAudioSource
|
|
7841
|
+
}
|
|
7842
|
+
#removeAudioSource(source) {
|
|
8598
7843
|
source.stop();
|
|
8599
7844
|
source.disconnect();
|
|
8600
7845
|
const deleteCount = 1;
|
|
8601
7846
|
this.#audioSources.splice(this.#audioSources.indexOf(source), deleteCount);
|
|
8602
|
-
}
|
|
8603
|
-
#unmute
|
|
7847
|
+
}
|
|
7848
|
+
#unmute() {
|
|
8604
7849
|
const container = this.#container, options = container.actualOptions, soundsOptions = options.sounds;
|
|
8605
7850
|
if (!soundsOptions) {
|
|
8606
7851
|
return;
|
|
@@ -8611,8 +7856,8 @@
|
|
|
8611
7856
|
this.#gain = gain;
|
|
8612
7857
|
this.#initEvents();
|
|
8613
7858
|
this.#container.dispatchEvent(SoundsEventType.unmute);
|
|
8614
|
-
}
|
|
8615
|
-
#updateMuteIcons
|
|
7859
|
+
}
|
|
7860
|
+
#updateMuteIcons() {
|
|
8616
7861
|
const container = this.#container, soundsOptions = container.actualOptions.sounds;
|
|
8617
7862
|
if (!soundsOptions?.enable || !soundsOptions.icons.enable) {
|
|
8618
7863
|
return;
|
|
@@ -8624,8 +7869,8 @@
|
|
|
8624
7869
|
if (unmuteImg) {
|
|
8625
7870
|
unmuteImg.style.display = container.muted ? "none" : "block";
|
|
8626
7871
|
}
|
|
8627
|
-
}
|
|
8628
|
-
#updateMuteStatus
|
|
7872
|
+
}
|
|
7873
|
+
async #updateMuteStatus() {
|
|
8629
7874
|
const container = this.#container, audioContext = this.#getAudioContext();
|
|
8630
7875
|
if (container.muted) {
|
|
8631
7876
|
await audioContext.suspend();
|
|
@@ -8636,8 +7881,8 @@
|
|
|
8636
7881
|
this.#unmute();
|
|
8637
7882
|
this.#playMuteSound();
|
|
8638
7883
|
}
|
|
8639
|
-
}
|
|
8640
|
-
#updateVolume
|
|
7884
|
+
}
|
|
7885
|
+
async #updateVolume() {
|
|
8641
7886
|
const container = this.#container, soundsOptions = container.actualOptions.sounds;
|
|
8642
7887
|
if (!soundsOptions?.enable) {
|
|
8643
7888
|
return;
|
|
@@ -8660,7 +7905,7 @@
|
|
|
8660
7905
|
if (this.#gain?.gain) {
|
|
8661
7906
|
this.#gain.gain.value = this.#volume / percentDenominator;
|
|
8662
7907
|
}
|
|
8663
|
-
}
|
|
7908
|
+
}
|
|
8664
7909
|
}
|
|
8665
7910
|
|
|
8666
7911
|
var SoundsPluginInstance$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -8753,7 +7998,13 @@
|
|
|
8753
7998
|
this.#paused = !this.options.autoPlay;
|
|
8754
7999
|
this.#particlesOptions = particlesOptions;
|
|
8755
8000
|
this.#size = this.#calcSize();
|
|
8756
|
-
this.size =
|
|
8001
|
+
this.size =
|
|
8002
|
+
this.#size.mode === exports.PixelMode.percent
|
|
8003
|
+
? {
|
|
8004
|
+
width: (this.#size.width / percentDenominator) * this.#container.canvas.size.width,
|
|
8005
|
+
height: (this.#size.height / percentDenominator) * this.#container.canvas.size.height,
|
|
8006
|
+
}
|
|
8007
|
+
: { width: this.#size.width, height: this.#size.height };
|
|
8757
8008
|
this.#lifeCount = this.options.life.count ?? defaultLifeCount;
|
|
8758
8009
|
this.#immortal = this.#lifeCount <= minLifeCount;
|
|
8759
8010
|
if (this.options.domId) {
|
|
@@ -8824,7 +8075,13 @@
|
|
|
8824
8075
|
? initialPosition
|
|
8825
8076
|
: this.#calcPosition();
|
|
8826
8077
|
this.#size = this.#calcSize();
|
|
8827
|
-
this.size =
|
|
8078
|
+
this.size =
|
|
8079
|
+
this.#size.mode === exports.PixelMode.percent
|
|
8080
|
+
? {
|
|
8081
|
+
width: (this.#size.width / percentDenominator) * container.canvas.size.width,
|
|
8082
|
+
height: (this.#size.height / percentDenominator) * container.canvas.size.height,
|
|
8083
|
+
}
|
|
8084
|
+
: { width: this.#size.width, height: this.#size.height };
|
|
8828
8085
|
this.#shape?.resize(this.position, this.size);
|
|
8829
8086
|
}
|
|
8830
8087
|
update(delta) {
|
|
@@ -8924,7 +8181,7 @@
|
|
|
8924
8181
|
return size;
|
|
8925
8182
|
})());
|
|
8926
8183
|
}
|
|
8927
|
-
#destroy
|
|
8184
|
+
#destroy() {
|
|
8928
8185
|
this.#mutationObserver?.disconnect();
|
|
8929
8186
|
this.#mutationObserver = undefined;
|
|
8930
8187
|
this.#resizeObserver?.disconnect();
|
|
@@ -8933,7 +8190,7 @@
|
|
|
8933
8190
|
this.#container.dispatchEvent("emitterDestroyed", {
|
|
8934
8191
|
emitter: this,
|
|
8935
8192
|
});
|
|
8936
|
-
}
|
|
8193
|
+
}
|
|
8937
8194
|
#emit() {
|
|
8938
8195
|
if (this.#paused) {
|
|
8939
8196
|
return;
|
|
@@ -8993,7 +8250,7 @@
|
|
|
8993
8250
|
}
|
|
8994
8251
|
}
|
|
8995
8252
|
}
|
|
8996
|
-
#prepareToDie
|
|
8253
|
+
#prepareToDie() {
|
|
8997
8254
|
if (this.#paused) {
|
|
8998
8255
|
return;
|
|
8999
8256
|
}
|
|
@@ -9001,8 +8258,8 @@
|
|
|
9001
8258
|
if ((this.#lifeCount > minLifeCount || this.#immortal) && duration !== undefined && duration > minDuration) {
|
|
9002
8259
|
this.#duration = duration * millisecondsToSeconds;
|
|
9003
8260
|
}
|
|
9004
|
-
}
|
|
9005
|
-
#setColorAnimation
|
|
8261
|
+
}
|
|
8262
|
+
#setColorAnimation(animation, initValue, maxValue, factor = defaultColorAnimationFactor) {
|
|
9006
8263
|
const container = this.#container;
|
|
9007
8264
|
if (!animation.enable) {
|
|
9008
8265
|
return initValue;
|
|
@@ -9011,7 +8268,7 @@
|
|
|
9011
8268
|
? (delay * millisecondsToSeconds) / container.retina.reduceFactor
|
|
9012
8269
|
: Infinity, colorSpeed = getRangeValue(animation.speed);
|
|
9013
8270
|
return (initValue + (colorSpeed * container.fpsLimit) / emitFactor + colorOffset * factor) % maxValue;
|
|
9014
|
-
}
|
|
8271
|
+
}
|
|
9015
8272
|
}
|
|
9016
8273
|
|
|
9017
8274
|
var EmitterInstance$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -9034,6 +8291,7 @@
|
|
|
9034
8291
|
exports.MoveCenter = MoveCenter;
|
|
9035
8292
|
exports.MoveGravity = MoveGravity;
|
|
9036
8293
|
exports.MovePath = MovePath;
|
|
8294
|
+
exports.OptionLoader = OptionLoader;
|
|
9037
8295
|
exports.Options = Options;
|
|
9038
8296
|
exports.OptionsColor = OptionsColor;
|
|
9039
8297
|
exports.OutModes = OutModes;
|
|
@@ -9058,9 +8316,7 @@
|
|
|
9058
8316
|
exports.alterHsl = alterHsl;
|
|
9059
8317
|
exports.animate = animate;
|
|
9060
8318
|
exports.areBoundsInside = areBoundsInside;
|
|
9061
|
-
exports.arrayRandomIndex = arrayRandomIndex;
|
|
9062
8319
|
exports.calcExactPositionOrRandomFromSize = calcExactPositionOrRandomFromSize;
|
|
9063
|
-
exports.calcExactPositionOrRandomFromSizeRanged = calcExactPositionOrRandomFromSizeRanged;
|
|
9064
8320
|
exports.calcPositionFromSize = calcPositionFromSize;
|
|
9065
8321
|
exports.calcPositionOrRandomFromSize = calcPositionOrRandomFromSize;
|
|
9066
8322
|
exports.calcPositionOrRandomFromSizeRanged = calcPositionOrRandomFromSizeRanged;
|
|
@@ -9072,11 +8328,9 @@
|
|
|
9072
8328
|
exports.circleBounce = circleBounce;
|
|
9073
8329
|
exports.circleBounceDataFromParticle = circleBounceDataFromParticle;
|
|
9074
8330
|
exports.clamp = clamp;
|
|
9075
|
-
exports.clear = clear;
|
|
9076
8331
|
exports.cloneStyle = cloneStyle;
|
|
9077
8332
|
exports.collisionVelocity = collisionVelocity;
|
|
9078
8333
|
exports.colorMix = colorMix;
|
|
9079
|
-
exports.colorToHsl = colorToHsl;
|
|
9080
8334
|
exports.colorToRgb = colorToRgb;
|
|
9081
8335
|
exports.countOffset = countOffset;
|
|
9082
8336
|
exports.decayOffset = decayOffset;
|
|
@@ -9103,16 +8357,8 @@
|
|
|
9103
8357
|
exports.deleteCount = deleteCount;
|
|
9104
8358
|
exports.double = double;
|
|
9105
8359
|
exports.doublePI = doublePI;
|
|
9106
|
-
exports.drawAfterEffect = drawAfterEffect;
|
|
9107
|
-
exports.drawBeforeEffect = drawBeforeEffect;
|
|
9108
|
-
exports.drawParticle = drawParticle;
|
|
9109
|
-
exports.drawParticlePlugin = drawParticlePlugin;
|
|
9110
|
-
exports.drawShape = drawShape;
|
|
9111
|
-
exports.drawShapeAfterDraw = drawShapeAfterDraw;
|
|
9112
|
-
exports.drawShapeBeforeDraw = drawShapeBeforeDraw;
|
|
9113
8360
|
exports.empty = empty;
|
|
9114
8361
|
exports.executeOnSingleOrMultiple = executeOnSingleOrMultiple;
|
|
9115
|
-
exports.findItemFromSingleOrMultiple = findItemFromSingleOrMultiple;
|
|
9116
8362
|
exports.fireworks = fireworks;
|
|
9117
8363
|
exports.generatedAttribute = generatedAttribute;
|
|
9118
8364
|
exports.generatedFalse = generatedFalse;
|
|
@@ -9132,23 +8378,21 @@
|
|
|
9132
8378
|
exports.getParticleDirectionAngle = getParticleDirectionAngle;
|
|
9133
8379
|
exports.getPosition = getPosition;
|
|
9134
8380
|
exports.getRandom = getRandom;
|
|
8381
|
+
exports.getRandomFn = getRandomFn;
|
|
9135
8382
|
exports.getRandomInRange = getRandomInRange;
|
|
9136
8383
|
exports.getRandomRgbColor = getRandomRgbColor;
|
|
9137
8384
|
exports.getRangeMax = getRangeMax;
|
|
9138
8385
|
exports.getRangeMin = getRangeMin;
|
|
9139
8386
|
exports.getRangeValue = getRangeValue;
|
|
9140
|
-
exports.getSize = getSize;
|
|
9141
8387
|
exports.getStyleFromHsl = getStyleFromHsl;
|
|
9142
8388
|
exports.getStyleFromRgb = getStyleFromRgb;
|
|
9143
8389
|
exports.hMax = hMax;
|
|
9144
8390
|
exports.hMin = hMin;
|
|
9145
8391
|
exports.hPhase = hPhase;
|
|
9146
8392
|
exports.half = half;
|
|
9147
|
-
exports.hasMatchMedia = hasMatchMedia;
|
|
9148
8393
|
exports.hslToRgb = hslToRgb;
|
|
9149
8394
|
exports.hslaToRgba = hslaToRgba;
|
|
9150
|
-
exports.identity = identity$
|
|
9151
|
-
exports.initParticleNumericAnimationValue = initParticleNumericAnimationValue;
|
|
8395
|
+
exports.identity = identity$1;
|
|
9152
8396
|
exports.inverseFactorNumerator = inverseFactorNumerator;
|
|
9153
8397
|
exports.isArray = isArray;
|
|
9154
8398
|
exports.isBoolean = isBoolean;
|
|
@@ -9165,28 +8409,34 @@
|
|
|
9165
8409
|
exports.lMax = lMax;
|
|
9166
8410
|
exports.lMin = lMin;
|
|
9167
8411
|
exports.lengthOffset = lengthOffset;
|
|
8412
|
+
exports.loadExtendProperty = loadExtendProperty;
|
|
8413
|
+
exports.loadLazyProperty = loadLazyProperty;
|
|
9168
8414
|
exports.loadMinIndex = loadMinIndex;
|
|
8415
|
+
exports.loadNestedProperty = loadNestedProperty;
|
|
8416
|
+
exports.loadOptionProperty = loadOptionProperty;
|
|
9169
8417
|
exports.loadOptions = loadOptions;
|
|
9170
8418
|
exports.loadParticlesOptions = loadParticlesOptions;
|
|
8419
|
+
exports.loadProperty = loadProperty;
|
|
9171
8420
|
exports.loadRandomFactor = loadRandomFactor;
|
|
8421
|
+
exports.loadRangeProperty = loadRangeProperty;
|
|
9172
8422
|
exports.manageListener = manageListener;
|
|
9173
|
-
exports.
|
|
8423
|
+
exports.maxNits = maxNits;
|
|
9174
8424
|
exports.midColorValue = midColorValue;
|
|
9175
8425
|
exports.millisecondsToSeconds = millisecondsToSeconds;
|
|
9176
8426
|
exports.minCount = minCount;
|
|
8427
|
+
exports.minDistance = minDistance;
|
|
9177
8428
|
exports.minFpsLimit = minFpsLimit;
|
|
9178
8429
|
exports.minIndex = minIndex;
|
|
9179
8430
|
exports.minLimit = minLimit;
|
|
8431
|
+
exports.minRadius = minRadius$1;
|
|
9180
8432
|
exports.minStrokeWidth = minStrokeWidth;
|
|
9181
|
-
exports.minVelocity = minVelocity
|
|
8433
|
+
exports.minVelocity = minVelocity;
|
|
9182
8434
|
exports.minZ = minZ;
|
|
9183
8435
|
exports.minimumSize = minimumSize;
|
|
9184
8436
|
exports.mix = mix;
|
|
9185
8437
|
exports.none = none;
|
|
9186
8438
|
exports.one = one;
|
|
9187
8439
|
exports.originPoint = originPoint;
|
|
9188
|
-
exports.paintBase = paintBase;
|
|
9189
|
-
exports.paintImage = paintImage;
|
|
9190
8440
|
exports.parseAlpha = parseAlpha;
|
|
9191
8441
|
exports.percentDenominator = percentDenominator;
|
|
9192
8442
|
exports.phaseNumerator = phaseNumerator;
|
|
@@ -9204,7 +8454,6 @@
|
|
|
9204
8454
|
exports.sMin = sMin;
|
|
9205
8455
|
exports.sNormalizedOffset = sNormalizedOffset;
|
|
9206
8456
|
exports.safeDocument = safeDocument;
|
|
9207
|
-
exports.safeIntersectionObserver = safeIntersectionObserver;
|
|
9208
8457
|
exports.safeMatchMedia = safeMatchMedia;
|
|
9209
8458
|
exports.safeMutationObserver = safeMutationObserver;
|
|
9210
8459
|
exports.setAnimationFunctions = setAnimationFunctions;
|
|
@@ -9220,7 +8469,6 @@
|
|
|
9220
8469
|
exports.triple = triple;
|
|
9221
8470
|
exports.tryCountIncrement = tryCountIncrement;
|
|
9222
8471
|
exports.tsParticles = tsParticles;
|
|
9223
|
-
exports.updateAnimation = updateAnimation;
|
|
9224
8472
|
exports.updateColor = updateColor;
|
|
9225
8473
|
exports.updateColorValue = updateColorValue;
|
|
9226
8474
|
exports.visibilityChangeEvent = visibilityChangeEvent;
|