@tsparticles/preset-squares 3.1.0 → 3.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.
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v3.1.0
7
+ * v3.2.0
8
8
  */
9
9
  (function webpackUniversalModuleDefinition(root, factory) {
10
10
  if(typeof exports === 'object' && typeof module === 'object')
@@ -61,7 +61,7 @@ __webpack_require__.d(__webpack_exports__, {
61
61
  tsParticles: () => (/* reexport */ tsParticles)
62
62
  });
63
63
 
64
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/Constants.js
64
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/Constants.js
65
65
  const generatedAttribute = "generated";
66
66
  const mouseDownEvent = "pointerdown";
67
67
  const mouseUpEvent = "pointerup";
@@ -79,7 +79,7 @@ const Constants_percentDenominator = 100;
79
79
  const halfRandom = 0.5;
80
80
  const millisecondsToSeconds = 1000;
81
81
 
82
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Directions/MoveDirection.js
82
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Directions/MoveDirection.js
83
83
  var MoveDirection;
84
84
  (function (MoveDirection) {
85
85
  MoveDirection["bottom"] = "bottom";
@@ -95,7 +95,7 @@ var MoveDirection;
95
95
  MoveDirection["inside"] = "inside";
96
96
  })(MoveDirection || (MoveDirection = {}));
97
97
 
98
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/TypeUtils.js
98
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Utils/TypeUtils.js
99
99
  function isBoolean(arg) {
100
100
  return typeof arg === "boolean";
101
101
  }
@@ -114,8 +114,11 @@ function isObject(arg) {
114
114
  function TypeUtils_isArray(arg) {
115
115
  return Array.isArray(arg);
116
116
  }
117
+ function isNull(arg) {
118
+ return arg === null || arg === undefined;
119
+ }
117
120
 
118
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/Vectors.js
121
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/Vectors.js
119
122
 
120
123
 
121
124
  const origin = {
@@ -240,22 +243,16 @@ class Vectors_Vector extends Vector3d {
240
243
  }
241
244
  }
242
245
 
243
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/NumberUtils.js
246
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Utils/NumberUtils.js
244
247
 
245
248
 
246
249
 
247
250
 
248
251
  let _random = Math.random;
249
- const easings = new Map(), NumberUtils_double = 2, doublePI = Math.PI * NumberUtils_double;
250
- function addEasing(name, easing) {
251
- if (easings.get(name)) {
252
- return;
253
- }
254
- easings.set(name, easing);
255
- }
256
- function getEasing(name) {
257
- return easings.get(name) ?? ((value) => value);
258
- }
252
+ const _animationLoop = {
253
+ nextFrame: (cb) => requestAnimationFrame(cb),
254
+ cancel: (idx) => cancelAnimationFrame(idx),
255
+ }, NumberUtils_double = 2, doublePI = Math.PI * NumberUtils_double;
259
256
  function setRandom(rnd = Math.random) {
260
257
  _random = rnd;
261
258
  }
@@ -263,6 +260,16 @@ function getRandom() {
263
260
  const min = 0, max = 1;
264
261
  return clamp(_random(), min, max - Number.EPSILON);
265
262
  }
263
+ function setAnimationFunctions(nextFrame, cancel) {
264
+ _animationLoop.nextFrame = (callback) => nextFrame(callback);
265
+ _animationLoop.cancel = (handle) => cancel(handle);
266
+ }
267
+ function animate(fn) {
268
+ return _animationLoop.nextFrame(fn);
269
+ }
270
+ function cancelAnimation(handle) {
271
+ _animationLoop.cancel(handle);
272
+ }
266
273
  function clamp(num, min, max) {
267
274
  return Math.min(Math.max(num, min), max);
268
275
  }
@@ -388,10 +395,10 @@ function parseAlpha(input) {
388
395
  if (!input) {
389
396
  return defaultAlpha;
390
397
  }
391
- return input.endsWith("%") ? parseFloat(input) / Constants_percentDenominator : parseFloat(input);
398
+ return input.endsWith("%") ? parseFloat(input) / percentDenominator : parseFloat(input);
392
399
  }
393
400
 
394
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Modes/AnimationMode.js
401
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Modes/AnimationMode.js
395
402
  var AnimationMode;
396
403
  (function (AnimationMode) {
397
404
  AnimationMode["auto"] = "auto";
@@ -400,14 +407,14 @@ var AnimationMode;
400
407
  AnimationMode["random"] = "random";
401
408
  })(AnimationMode || (AnimationMode = {}));
402
409
 
403
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/AnimationStatus.js
410
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/AnimationStatus.js
404
411
  var AnimationStatus;
405
412
  (function (AnimationStatus) {
406
413
  AnimationStatus["increasing"] = "increasing";
407
414
  AnimationStatus["decreasing"] = "decreasing";
408
415
  })(AnimationStatus || (AnimationStatus = {}));
409
416
 
410
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/DestroyType.js
417
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/DestroyType.js
411
418
  var DestroyType;
412
419
  (function (DestroyType) {
413
420
  DestroyType["none"] = "none";
@@ -415,7 +422,7 @@ var DestroyType;
415
422
  DestroyType["min"] = "min";
416
423
  })(DestroyType || (DestroyType = {}));
417
424
 
418
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Directions/OutModeDirection.js
425
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Directions/OutModeDirection.js
419
426
  var OutModeDirection;
420
427
  (function (OutModeDirection) {
421
428
  OutModeDirection["bottom"] = "bottom";
@@ -424,14 +431,14 @@ var OutModeDirection;
424
431
  OutModeDirection["top"] = "top";
425
432
  })(OutModeDirection || (OutModeDirection = {}));
426
433
 
427
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Modes/PixelMode.js
434
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Modes/PixelMode.js
428
435
  var PixelMode;
429
436
  (function (PixelMode) {
430
437
  PixelMode["precise"] = "precise";
431
438
  PixelMode["percent"] = "percent";
432
439
  })(PixelMode || (PixelMode = {}));
433
440
 
434
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/StartValueType.js
441
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/StartValueType.js
435
442
  var StartValueType;
436
443
  (function (StartValueType) {
437
444
  StartValueType["max"] = "max";
@@ -439,7 +446,7 @@ var StartValueType;
439
446
  StartValueType["random"] = "random";
440
447
  })(StartValueType || (StartValueType = {}));
441
448
 
442
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/Utils.js
449
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Utils/Utils.js
443
450
 
444
451
 
445
452
 
@@ -856,97 +863,83 @@ function updateAnimation(particle, data, changeDirection, destroyType, delta) {
856
863
  data.value = clamp(data.value, minValue, maxValue);
857
864
  }
858
865
  }
866
+ function assertValidVersion(engine, pluginVersion) {
867
+ if (engine.version === pluginVersion) {
868
+ return;
869
+ }
870
+ throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${engine.version}. Plugins version: ${pluginVersion}`);
871
+ }
859
872
 
860
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/AlterType.js
873
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/AlterType.js
861
874
  var AlterType;
862
875
  (function (AlterType) {
863
876
  AlterType["darken"] = "darken";
864
877
  AlterType["enlighten"] = "enlighten";
865
878
  })(AlterType || (AlterType = {}));
866
879
 
867
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/ColorUtils.js
880
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Utils/ColorUtils.js
868
881
 
869
882
 
870
883
 
871
884
 
872
885
 
873
- var RgbIndexes;
874
- (function (RgbIndexes) {
875
- RgbIndexes[RgbIndexes["r"] = 1] = "r";
876
- RgbIndexes[RgbIndexes["g"] = 2] = "g";
877
- RgbIndexes[RgbIndexes["b"] = 3] = "b";
878
- RgbIndexes[RgbIndexes["a"] = 4] = "a";
879
- })(RgbIndexes || (RgbIndexes = {}));
880
- const randomColorValue = "random", midColorValue = "mid", colorManagers = new Map();
881
- function addColorManager(manager) {
882
- colorManagers.set(manager.key, manager);
883
- }
884
- function stringToRgba(input) {
885
- for (const [, manager] of colorManagers) {
886
+ const randomColorValue = "random", midColorValue = "mid";
887
+ function stringToRgba(engine, input) {
888
+ if (!input) {
889
+ return;
890
+ }
891
+ for (const manager of engine.colorManagers.values()) {
886
892
  if (input.startsWith(manager.stringPrefix)) {
887
893
  return manager.parseString(input);
888
894
  }
889
895
  }
890
- const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i, hexFixed = input.replace(shorthandRegex, (_, r, g, b, a) => {
891
- return r + r + g + g + b + b + (a !== undefined ? a + a : "");
892
- }), regex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i, result = regex.exec(hexFixed), radix = 16, defaultAlpha = 1, alphaFactor = 0xff;
893
- return result
894
- ? {
895
- a: result[RgbIndexes.a] !== undefined
896
- ? parseInt(result[RgbIndexes.a], radix) / alphaFactor
897
- : defaultAlpha,
898
- b: parseInt(result[RgbIndexes.b], radix),
899
- g: parseInt(result[RgbIndexes.g], radix),
900
- r: parseInt(result[RgbIndexes.r], radix),
901
- }
902
- : undefined;
903
896
  }
904
- function rangeColorToRgb(input, index, useIndex = true) {
897
+ function rangeColorToRgb(engine, input, index, useIndex = true) {
905
898
  if (!input) {
906
899
  return;
907
900
  }
908
901
  const color = TypeUtils_isString(input) ? { value: input } : input;
909
902
  if (TypeUtils_isString(color.value)) {
910
- return colorToRgb(color.value, index, useIndex);
903
+ return colorToRgb(engine, color.value, index, useIndex);
911
904
  }
912
905
  if (TypeUtils_isArray(color.value)) {
913
- return rangeColorToRgb({
906
+ return rangeColorToRgb(engine, {
914
907
  value: itemFromArray(color.value, index, useIndex),
915
908
  });
916
909
  }
917
- for (const [, manager] of colorManagers) {
910
+ for (const manager of engine.colorManagers.values()) {
918
911
  const res = manager.handleRangeColor(color);
919
912
  if (res) {
920
913
  return res;
921
914
  }
922
915
  }
923
916
  }
924
- function colorToRgb(input, index, useIndex = true) {
917
+ function colorToRgb(engine, input, index, useIndex = true) {
925
918
  if (!input) {
926
919
  return;
927
920
  }
928
921
  const color = TypeUtils_isString(input) ? { value: input } : input;
929
922
  if (TypeUtils_isString(color.value)) {
930
- return color.value === randomColorValue ? getRandomRgbColor() : stringToRgb(color.value);
923
+ return color.value === randomColorValue ? getRandomRgbColor() : stringToRgb(engine, color.value);
931
924
  }
932
925
  if (TypeUtils_isArray(color.value)) {
933
- return colorToRgb({
926
+ return colorToRgb(engine, {
934
927
  value: itemFromArray(color.value, index, useIndex),
935
928
  });
936
929
  }
937
- for (const [, manager] of colorManagers) {
930
+ for (const manager of engine.colorManagers.values()) {
938
931
  const res = manager.handleColor(color);
939
932
  if (res) {
940
933
  return res;
941
934
  }
942
935
  }
943
936
  }
944
- function colorToHsl(color, index, useIndex = true) {
945
- const rgb = colorToRgb(color, index, useIndex);
937
+ function colorToHsl(engine, color, index, useIndex = true) {
938
+ const rgb = colorToRgb(engine, color, index, useIndex);
946
939
  return rgb ? rgbToHsl(rgb) : undefined;
947
940
  }
948
- function rangeColorToHsl(color, index, useIndex = true) {
949
- const rgb = rangeColorToRgb(color, index, useIndex);
941
+ function rangeColorToHsl(engine, color, index, useIndex = true) {
942
+ const rgb = rangeColorToRgb(engine, color, index, useIndex);
950
943
  return rgb ? rgbToHsl(rgb) : undefined;
951
944
  }
952
945
  function rgbToHsl(color) {
@@ -973,11 +966,11 @@ function rgbToHsl(color) {
973
966
  }
974
967
  return res;
975
968
  }
976
- function stringToAlpha(input) {
977
- return stringToRgba(input)?.a;
969
+ function stringToAlpha(engine, input) {
970
+ return stringToRgba(engine, input)?.a;
978
971
  }
979
- function stringToRgb(input) {
980
- return stringToRgba(input);
972
+ function stringToRgb(engine, input) {
973
+ return stringToRgba(engine, input);
981
974
  }
982
975
  function hslToRgb(hsl) {
983
976
  const hMax = 360, sMax = 100, lMax = 100, sMin = 0, lMin = 0, h = ((hsl.h % hMax) + hMax) % hMax, s = Math.max(sMin, Math.min(sMax, hsl.s)), l = Math.max(lMin, Math.min(lMax, hsl.l)), hNormalized = h / hMax, sNormalized = s / sMax, lNormalized = l / lMax, rgbFactor = 255, triple = 3;
@@ -1068,11 +1061,11 @@ function getLinkColor(p1, p2, linkColor) {
1068
1061
  return linkColor;
1069
1062
  }
1070
1063
  }
1071
- function getLinkRandomColor(optColor, blink, consent) {
1064
+ function getLinkRandomColor(engine, optColor, blink, consent) {
1072
1065
  const color = isString(optColor) ? optColor : optColor.value;
1073
1066
  if (color === randomColorValue) {
1074
1067
  if (consent) {
1075
- return rangeColorToRgb({
1068
+ return rangeColorToRgb(engine, {
1076
1069
  value: color,
1077
1070
  });
1078
1071
  }
@@ -1085,7 +1078,7 @@ function getLinkRandomColor(optColor, blink, consent) {
1085
1078
  return midColorValue;
1086
1079
  }
1087
1080
  else {
1088
- return rangeColorToRgb({
1081
+ return rangeColorToRgb(engine, {
1089
1082
  value: color,
1090
1083
  });
1091
1084
  }
@@ -1212,7 +1205,7 @@ function updateColor(color, delta) {
1212
1205
  }
1213
1206
  }
1214
1207
 
1215
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/CanvasUtils.js
1208
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Utils/CanvasUtils.js
1216
1209
 
1217
1210
 
1218
1211
  const CanvasUtils_origin = { x: 0, y: 0 }, defaultTransform = {
@@ -1248,8 +1241,8 @@ function drawParticle(data) {
1248
1241
  cos: Math.cos(angle),
1249
1242
  }, rotating = !!angle, identity = 1, transformData = {
1250
1243
  a: rotateData.cos * (transform.a ?? defaultTransform.a),
1251
- b: rotating ? rotateData.sin * (transform.b ?? identity) : transform.b ?? defaultTransform.b,
1252
- c: rotating ? -rotateData.sin * (transform.c ?? identity) : transform.c ?? defaultTransform.c,
1244
+ b: rotating ? rotateData.sin * (transform.b ?? identity) : (transform.b ?? defaultTransform.b),
1245
+ c: rotating ? -rotateData.sin * (transform.c ?? identity) : (transform.c ?? defaultTransform.c),
1253
1246
  d: rotateData.cos * (transform.d ?? defaultTransform.d),
1254
1247
  };
1255
1248
  context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);
@@ -1375,7 +1368,7 @@ function alterHsl(color, type, value) {
1375
1368
  };
1376
1369
  }
1377
1370
 
1378
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Canvas.js
1371
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Canvas.js
1379
1372
 
1380
1373
 
1381
1374
 
@@ -1400,14 +1393,11 @@ function setStyle(canvas, style, important = false) {
1400
1393
  }
1401
1394
  for (const key in style) {
1402
1395
  const value = style[key];
1403
- if (!value) {
1404
- continue;
1405
- }
1406
1396
  elementStyle.setProperty(key, value, important ? "important" : "");
1407
1397
  }
1408
1398
  }
1409
1399
  class Canvas {
1410
- constructor(container) {
1400
+ constructor(container, engine) {
1411
1401
  this.container = container;
1412
1402
  this._applyPostDrawUpdaters = particle => {
1413
1403
  for (const updater of this._postDrawUpdaters) {
@@ -1443,10 +1433,10 @@ class Canvas {
1443
1433
  let fColor, sColor;
1444
1434
  for (const plugin of this._colorPlugins) {
1445
1435
  if (!fColor && plugin.particleFillColor) {
1446
- fColor = rangeColorToHsl(plugin.particleFillColor(particle));
1436
+ fColor = rangeColorToHsl(this._engine, plugin.particleFillColor(particle));
1447
1437
  }
1448
1438
  if (!sColor && plugin.particleStrokeColor) {
1449
- sColor = rangeColorToHsl(plugin.particleStrokeColor(particle));
1439
+ sColor = rangeColorToHsl(this._engine, plugin.particleStrokeColor(particle));
1450
1440
  }
1451
1441
  if (fColor && sColor) {
1452
1442
  break;
@@ -1457,7 +1447,7 @@ class Canvas {
1457
1447
  this._initCover = async () => {
1458
1448
  const options = this.container.actualOptions, cover = options.backgroundMask.cover, color = cover.color;
1459
1449
  if (color) {
1460
- const coverRgb = rangeColorToRgb(color);
1450
+ const coverRgb = rangeColorToRgb(this._engine, color);
1461
1451
  if (coverRgb) {
1462
1452
  const coverColor = {
1463
1453
  ...coverRgb,
@@ -1516,7 +1506,7 @@ class Canvas {
1516
1506
  }
1517
1507
  const factorNumerator = 1, opacity = factorNumerator / trail.length;
1518
1508
  if (trailFill.color) {
1519
- const fillColor = rangeColorToRgb(trailFill.color);
1509
+ const fillColor = rangeColorToRgb(this._engine, trailFill.color);
1520
1510
  if (!fillColor) {
1521
1511
  return;
1522
1512
  }
@@ -1586,20 +1576,27 @@ class Canvas {
1586
1576
  if (!element) {
1587
1577
  return;
1588
1578
  }
1589
- const radix = 10;
1579
+ const radix = 10, zIndex = this.container.actualOptions.fullScreen.zIndex.toString(radix);
1590
1580
  setStyle(element, {
1591
1581
  position: "fixed",
1592
- zIndex: this.container.actualOptions.fullScreen.zIndex.toString(radix),
1582
+ "z-index": zIndex,
1583
+ zIndex: zIndex,
1593
1584
  top: "0",
1594
1585
  left: "0",
1595
1586
  width: "100%",
1596
1587
  height: "100%",
1597
1588
  }, true);
1598
1589
  };
1599
- this.size = {
1590
+ this._engine = engine;
1591
+ this._standardSize = {
1600
1592
  height: 0,
1601
1593
  width: 0,
1602
1594
  };
1595
+ const pxRatio = container.retina.pixelRatio, stdSize = this._standardSize;
1596
+ this.size = {
1597
+ height: stdSize.height * pxRatio,
1598
+ width: stdSize.width * pxRatio,
1599
+ };
1603
1600
  this._context = null;
1604
1601
  this._generated = false;
1605
1602
  this._preDrawUpdaters = [];
@@ -1743,7 +1740,7 @@ class Canvas {
1743
1740
  return;
1744
1741
  }
1745
1742
  if (background.color) {
1746
- const color = rangeColorToRgb(background.color);
1743
+ const color = rangeColorToRgb(this._engine, background.color);
1747
1744
  elementStyle.backgroundColor = color ? getStyleFromRgb(color, background.opacity) : "";
1748
1745
  }
1749
1746
  else {
@@ -1756,7 +1753,7 @@ class Canvas {
1756
1753
  }
1757
1754
  initPlugins() {
1758
1755
  this._resizePlugins = [];
1759
- for (const [, plugin] of this.container.plugins) {
1756
+ for (const plugin of this.container.plugins.values()) {
1760
1757
  if (plugin.resize) {
1761
1758
  this._resizePlugins.push(plugin);
1762
1759
  }
@@ -1788,8 +1785,12 @@ class Canvas {
1788
1785
  this.element = canvas;
1789
1786
  this.element.ariaHidden = "true";
1790
1787
  this._originalStyle = deepExtend({}, this.element.style);
1791
- this.size.height = canvas.offsetHeight;
1792
- this.size.width = canvas.offsetWidth;
1788
+ const standardSize = this._standardSize;
1789
+ standardSize.height = canvas.offsetHeight;
1790
+ standardSize.width = canvas.offsetWidth;
1791
+ const pxRatio = this.container.retina.pixelRatio, retinaSize = this.size;
1792
+ canvas.height = retinaSize.height = standardSize.height * pxRatio;
1793
+ canvas.width = retinaSize.width = standardSize.width * pxRatio;
1793
1794
  this._context = this.element.getContext("2d");
1794
1795
  this._safeMutationObserver(obs => {
1795
1796
  if (!this.element || !(this.element instanceof Node)) {
@@ -1824,23 +1825,29 @@ class Canvas {
1824
1825
  if (!this.element) {
1825
1826
  return false;
1826
1827
  }
1827
- const container = this.container, pxRatio = container.retina.pixelRatio, size = container.canvas.size, newSize = {
1828
- width: this.element.offsetWidth * pxRatio,
1829
- height: this.element.offsetHeight * pxRatio,
1828
+ const container = this.container, currentSize = container.canvas._standardSize, newSize = {
1829
+ width: this.element.offsetWidth,
1830
+ height: this.element.offsetHeight,
1831
+ }, pxRatio = container.retina.pixelRatio, retinaSize = {
1832
+ width: newSize.width * pxRatio,
1833
+ height: newSize.height * pxRatio,
1830
1834
  };
1831
- if (newSize.height === size.height &&
1832
- newSize.width === size.width &&
1833
- newSize.height === this.element.height &&
1834
- newSize.width === this.element.width) {
1835
+ if (newSize.height === currentSize.height &&
1836
+ newSize.width === currentSize.width &&
1837
+ retinaSize.height === this.element.height &&
1838
+ retinaSize.width === this.element.width) {
1835
1839
  return false;
1836
1840
  }
1837
- const oldSize = { ...size };
1838
- this.element.width = size.width = this.element.offsetWidth * pxRatio;
1839
- this.element.height = size.height = this.element.offsetHeight * pxRatio;
1841
+ const oldSize = { ...currentSize };
1842
+ currentSize.height = newSize.height;
1843
+ currentSize.width = newSize.width;
1844
+ const canvasSize = this.size;
1845
+ this.element.width = canvasSize.width = retinaSize.width;
1846
+ this.element.height = canvasSize.height = retinaSize.height;
1840
1847
  if (this.container.started) {
1841
1848
  container.particles.setResizeFactor({
1842
- width: size.width / oldSize.width,
1843
- height: size.height / oldSize.height,
1849
+ width: currentSize.width / oldSize.width,
1850
+ height: currentSize.height / oldSize.height,
1844
1851
  });
1845
1852
  }
1846
1853
  return true;
@@ -1863,7 +1870,7 @@ class Canvas {
1863
1870
  }
1864
1871
  }
1865
1872
 
1866
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/InteractivityDetect.js
1873
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/InteractivityDetect.js
1867
1874
  var InteractivityDetect;
1868
1875
  (function (InteractivityDetect) {
1869
1876
  InteractivityDetect["canvas"] = "canvas";
@@ -1871,7 +1878,7 @@ var InteractivityDetect;
1871
1878
  InteractivityDetect["window"] = "window";
1872
1879
  })(InteractivityDetect || (InteractivityDetect = {}));
1873
1880
 
1874
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/EventListeners.js
1881
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/EventListeners.js
1875
1882
 
1876
1883
 
1877
1884
 
@@ -2061,7 +2068,7 @@ class EventListeners {
2061
2068
  if (!mousePosition || !options.interactivity.events.onClick.enable) {
2062
2069
  return;
2063
2070
  }
2064
- for (const [, plugin] of container.plugins) {
2071
+ for (const plugin of container.plugins.values()) {
2065
2072
  if (!plugin.clickPositionValid) {
2066
2073
  continue;
2067
2074
  }
@@ -2197,7 +2204,7 @@ class EventListeners {
2197
2204
  }
2198
2205
  }
2199
2206
 
2200
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/EventType.js
2207
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/EventType.js
2201
2208
  var EventType;
2202
2209
  (function (EventType) {
2203
2210
  EventType["configAdded"] = "configAdded";
@@ -2214,7 +2221,7 @@ var EventType;
2214
2221
  EventType["particleRemoved"] = "particleRemoved";
2215
2222
  })(EventType || (EventType = {}));
2216
2223
 
2217
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/OptionsColor.js
2224
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/OptionsColor.js
2218
2225
 
2219
2226
  class OptionsColor {
2220
2227
  constructor() {
@@ -2234,14 +2241,17 @@ class OptionsColor {
2234
2241
  return color;
2235
2242
  }
2236
2243
  load(data) {
2237
- if (data?.value === undefined) {
2244
+ if (isNull(data)) {
2238
2245
  return;
2239
2246
  }
2240
- this.value = data.value;
2247
+ if (!isNull(data.value)) {
2248
+ this.value = data.value;
2249
+ }
2241
2250
  }
2242
2251
  }
2243
2252
 
2244
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Background/Background.js
2253
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Background/Background.js
2254
+
2245
2255
 
2246
2256
  class Background {
2247
2257
  constructor() {
@@ -2254,7 +2264,7 @@ class Background {
2254
2264
  this.opacity = 1;
2255
2265
  }
2256
2266
  load(data) {
2257
- if (!data) {
2267
+ if (isNull(data)) {
2258
2268
  return;
2259
2269
  }
2260
2270
  if (data.color !== undefined) {
@@ -2278,14 +2288,15 @@ class Background {
2278
2288
  }
2279
2289
  }
2280
2290
 
2281
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js
2291
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js
2292
+
2282
2293
 
2283
2294
  class BackgroundMaskCover {
2284
2295
  constructor() {
2285
2296
  this.opacity = 1;
2286
2297
  }
2287
2298
  load(data) {
2288
- if (!data) {
2299
+ if (isNull(data)) {
2289
2300
  return;
2290
2301
  }
2291
2302
  if (data.color !== undefined) {
@@ -2300,7 +2311,7 @@ class BackgroundMaskCover {
2300
2311
  }
2301
2312
  }
2302
2313
 
2303
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/BackgroundMask/BackgroundMask.js
2314
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/BackgroundMask/BackgroundMask.js
2304
2315
 
2305
2316
 
2306
2317
  class BackgroundMask {
@@ -2310,7 +2321,7 @@ class BackgroundMask {
2310
2321
  this.enable = false;
2311
2322
  }
2312
2323
  load(data) {
2313
- if (!data) {
2324
+ if (isNull(data)) {
2314
2325
  return;
2315
2326
  }
2316
2327
  if (data.composite !== undefined) {
@@ -2326,14 +2337,15 @@ class BackgroundMask {
2326
2337
  }
2327
2338
  }
2328
2339
 
2329
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/FullScreen/FullScreen.js
2340
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/FullScreen/FullScreen.js
2341
+
2330
2342
  class FullScreen {
2331
2343
  constructor() {
2332
2344
  this.enable = true;
2333
2345
  this.zIndex = 0;
2334
2346
  }
2335
2347
  load(data) {
2336
- if (!data) {
2348
+ if (isNull(data)) {
2337
2349
  return;
2338
2350
  }
2339
2351
  if (data.enable !== undefined) {
@@ -2345,14 +2357,15 @@ class FullScreen {
2345
2357
  }
2346
2358
  }
2347
2359
 
2348
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/ClickEvent.js
2360
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/ClickEvent.js
2361
+
2349
2362
  class ClickEvent {
2350
2363
  constructor() {
2351
2364
  this.enable = false;
2352
2365
  this.mode = [];
2353
2366
  }
2354
2367
  load(data) {
2355
- if (!data) {
2368
+ if (isNull(data)) {
2356
2369
  return;
2357
2370
  }
2358
2371
  if (data.enable !== undefined) {
@@ -2364,14 +2377,15 @@ class ClickEvent {
2364
2377
  }
2365
2378
  }
2366
2379
 
2367
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/DivType.js
2380
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/DivType.js
2368
2381
  var DivType;
2369
2382
  (function (DivType) {
2370
2383
  DivType["circle"] = "circle";
2371
2384
  DivType["rectangle"] = "rectangle";
2372
2385
  })(DivType || (DivType = {}));
2373
2386
 
2374
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/DivEvent.js
2387
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/DivEvent.js
2388
+
2375
2389
 
2376
2390
  class DivEvent {
2377
2391
  constructor() {
@@ -2381,7 +2395,7 @@ class DivEvent {
2381
2395
  this.type = DivType.circle;
2382
2396
  }
2383
2397
  load(data) {
2384
- if (!data) {
2398
+ if (isNull(data)) {
2385
2399
  return;
2386
2400
  }
2387
2401
  if (data.selectors !== undefined) {
@@ -2399,7 +2413,8 @@ class DivEvent {
2399
2413
  }
2400
2414
  }
2401
2415
 
2402
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/Parallax.js
2416
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/Parallax.js
2417
+
2403
2418
  class Parallax {
2404
2419
  constructor() {
2405
2420
  this.enable = false;
@@ -2407,7 +2422,7 @@ class Parallax {
2407
2422
  this.smooth = 10;
2408
2423
  }
2409
2424
  load(data) {
2410
- if (!data) {
2425
+ if (isNull(data)) {
2411
2426
  return;
2412
2427
  }
2413
2428
  if (data.enable !== undefined) {
@@ -2422,7 +2437,8 @@ class Parallax {
2422
2437
  }
2423
2438
  }
2424
2439
 
2425
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/HoverEvent.js
2440
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/HoverEvent.js
2441
+
2426
2442
 
2427
2443
  class HoverEvent {
2428
2444
  constructor() {
@@ -2431,7 +2447,7 @@ class HoverEvent {
2431
2447
  this.parallax = new Parallax();
2432
2448
  }
2433
2449
  load(data) {
2434
- if (!data) {
2450
+ if (isNull(data)) {
2435
2451
  return;
2436
2452
  }
2437
2453
  if (data.enable !== undefined) {
@@ -2444,14 +2460,15 @@ class HoverEvent {
2444
2460
  }
2445
2461
  }
2446
2462
 
2447
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/ResizeEvent.js
2463
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/ResizeEvent.js
2464
+
2448
2465
  class ResizeEvent {
2449
2466
  constructor() {
2450
2467
  this.delay = 0.5;
2451
2468
  this.enable = true;
2452
2469
  }
2453
2470
  load(data) {
2454
- if (data === undefined) {
2471
+ if (isNull(data)) {
2455
2472
  return;
2456
2473
  }
2457
2474
  if (data.delay !== undefined) {
@@ -2463,7 +2480,8 @@ class ResizeEvent {
2463
2480
  }
2464
2481
  }
2465
2482
 
2466
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/Events.js
2483
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Events/Events.js
2484
+
2467
2485
 
2468
2486
 
2469
2487
 
@@ -2477,7 +2495,7 @@ class Events {
2477
2495
  this.resize = new ResizeEvent();
2478
2496
  }
2479
2497
  load(data) {
2480
- if (!data) {
2498
+ if (isNull(data)) {
2481
2499
  return;
2482
2500
  }
2483
2501
  this.onClick.load(data.onClick);
@@ -2494,14 +2512,15 @@ class Events {
2494
2512
  }
2495
2513
  }
2496
2514
 
2497
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Modes/Modes.js
2515
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Modes/Modes.js
2516
+
2498
2517
  class Modes {
2499
2518
  constructor(engine, container) {
2500
2519
  this._engine = engine;
2501
2520
  this._container = container;
2502
2521
  }
2503
2522
  load(data) {
2504
- if (!data) {
2523
+ if (isNull(data)) {
2505
2524
  return;
2506
2525
  }
2507
2526
  if (!this._container) {
@@ -2520,7 +2539,8 @@ class Modes {
2520
2539
  }
2521
2540
  }
2522
2541
 
2523
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Interactivity.js
2542
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Interactivity/Interactivity.js
2543
+
2524
2544
 
2525
2545
 
2526
2546
 
@@ -2531,7 +2551,7 @@ class Interactivity {
2531
2551
  this.modes = new Modes(engine, container);
2532
2552
  }
2533
2553
  load(data) {
2534
- if (!data) {
2554
+ if (isNull(data)) {
2535
2555
  return;
2536
2556
  }
2537
2557
  const detectsOn = data.detectsOn;
@@ -2543,13 +2563,14 @@ class Interactivity {
2543
2563
  }
2544
2564
  }
2545
2565
 
2546
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/ManualParticle.js
2566
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/ManualParticle.js
2567
+
2547
2568
 
2548
2569
 
2549
2570
  const defaultPosition = 50;
2550
2571
  class ManualParticle {
2551
2572
  load(data) {
2552
- if (!data) {
2573
+ if (isNull(data)) {
2553
2574
  return;
2554
2575
  }
2555
2576
  if (data.position) {
@@ -2565,14 +2586,15 @@ class ManualParticle {
2565
2586
  }
2566
2587
  }
2567
2588
 
2568
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Modes/ResponsiveMode.js
2589
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Modes/ResponsiveMode.js
2569
2590
  var ResponsiveMode;
2570
2591
  (function (ResponsiveMode) {
2571
2592
  ResponsiveMode["screen"] = "screen";
2572
2593
  ResponsiveMode["canvas"] = "canvas";
2573
2594
  })(ResponsiveMode || (ResponsiveMode = {}));
2574
2595
 
2575
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Responsive.js
2596
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Responsive.js
2597
+
2576
2598
 
2577
2599
 
2578
2600
  class Responsive {
@@ -2582,13 +2604,13 @@ class Responsive {
2582
2604
  this.mode = ResponsiveMode.canvas;
2583
2605
  }
2584
2606
  load(data) {
2585
- if (!data) {
2607
+ if (isNull(data)) {
2586
2608
  return;
2587
2609
  }
2588
- if (data.maxWidth !== undefined) {
2610
+ if (!isNull(data.maxWidth)) {
2589
2611
  this.maxWidth = data.maxWidth;
2590
2612
  }
2591
- if (data.mode !== undefined) {
2613
+ if (!isNull(data.mode)) {
2592
2614
  if (data.mode === ResponsiveMode.screen) {
2593
2615
  this.mode = ResponsiveMode.screen;
2594
2616
  }
@@ -2596,13 +2618,13 @@ class Responsive {
2596
2618
  this.mode = ResponsiveMode.canvas;
2597
2619
  }
2598
2620
  }
2599
- if (data.options !== undefined) {
2621
+ if (!isNull(data.options)) {
2600
2622
  this.options = deepExtend({}, data.options);
2601
2623
  }
2602
2624
  }
2603
2625
  }
2604
2626
 
2605
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Modes/ThemeMode.js
2627
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Modes/ThemeMode.js
2606
2628
  var ThemeMode;
2607
2629
  (function (ThemeMode) {
2608
2630
  ThemeMode["any"] = "any";
@@ -2610,7 +2632,8 @@ var ThemeMode;
2610
2632
  ThemeMode["light"] = "light";
2611
2633
  })(ThemeMode || (ThemeMode = {}));
2612
2634
 
2613
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Theme/ThemeDefault.js
2635
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Theme/ThemeDefault.js
2636
+
2614
2637
 
2615
2638
  class ThemeDefault {
2616
2639
  constructor() {
@@ -2619,7 +2642,7 @@ class ThemeDefault {
2619
2642
  this.value = false;
2620
2643
  }
2621
2644
  load(data) {
2622
- if (!data) {
2645
+ if (isNull(data)) {
2623
2646
  return;
2624
2647
  }
2625
2648
  if (data.auto !== undefined) {
@@ -2634,7 +2657,8 @@ class ThemeDefault {
2634
2657
  }
2635
2658
  }
2636
2659
 
2637
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Theme/Theme.js
2660
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Theme/Theme.js
2661
+
2638
2662
 
2639
2663
 
2640
2664
  class Theme {
@@ -2643,7 +2667,7 @@ class Theme {
2643
2667
  this.default = new ThemeDefault();
2644
2668
  }
2645
2669
  load(data) {
2646
- if (!data) {
2670
+ if (isNull(data)) {
2647
2671
  return;
2648
2672
  }
2649
2673
  if (data.name !== undefined) {
@@ -2656,7 +2680,8 @@ class Theme {
2656
2680
  }
2657
2681
  }
2658
2682
 
2659
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/AnimationOptions.js
2683
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/AnimationOptions.js
2684
+
2660
2685
 
2661
2686
 
2662
2687
 
@@ -2670,7 +2695,7 @@ class AnimationOptions {
2670
2695
  this.sync = false;
2671
2696
  }
2672
2697
  load(data) {
2673
- if (!data) {
2698
+ if (isNull(data)) {
2674
2699
  return;
2675
2700
  }
2676
2701
  if (data.count !== undefined) {
@@ -2701,7 +2726,7 @@ class RangedAnimationOptions extends AnimationOptions {
2701
2726
  }
2702
2727
  load(data) {
2703
2728
  super.load(data);
2704
- if (!data) {
2729
+ if (isNull(data)) {
2705
2730
  return;
2706
2731
  }
2707
2732
  if (data.mode !== undefined) {
@@ -2713,7 +2738,8 @@ class RangedAnimationOptions extends AnimationOptions {
2713
2738
  }
2714
2739
  }
2715
2740
 
2716
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/ColorAnimation.js
2741
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/ColorAnimation.js
2742
+
2717
2743
 
2718
2744
 
2719
2745
  class ColorAnimation extends AnimationOptions {
@@ -2724,7 +2750,7 @@ class ColorAnimation extends AnimationOptions {
2724
2750
  }
2725
2751
  load(data) {
2726
2752
  super.load(data);
2727
- if (!data) {
2753
+ if (isNull(data)) {
2728
2754
  return;
2729
2755
  }
2730
2756
  if (data.offset !== undefined) {
@@ -2733,7 +2759,8 @@ class ColorAnimation extends AnimationOptions {
2733
2759
  }
2734
2760
  }
2735
2761
 
2736
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/HslAnimation.js
2762
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/HslAnimation.js
2763
+
2737
2764
 
2738
2765
  class HslAnimation {
2739
2766
  constructor() {
@@ -2742,7 +2769,7 @@ class HslAnimation {
2742
2769
  this.l = new ColorAnimation();
2743
2770
  }
2744
2771
  load(data) {
2745
- if (!data) {
2772
+ if (isNull(data)) {
2746
2773
  return;
2747
2774
  }
2748
2775
  this.h.load(data.h);
@@ -2751,7 +2778,7 @@ class HslAnimation {
2751
2778
  }
2752
2779
  }
2753
2780
 
2754
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/AnimatableColor.js
2781
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/AnimatableColor.js
2755
2782
 
2756
2783
 
2757
2784
 
@@ -2775,7 +2802,7 @@ class AnimatableColor extends OptionsColor {
2775
2802
  }
2776
2803
  load(data) {
2777
2804
  super.load(data);
2778
- if (!data) {
2805
+ if (isNull(data)) {
2779
2806
  return;
2780
2807
  }
2781
2808
  const colorAnimation = data.animation;
@@ -2790,7 +2817,7 @@ class AnimatableColor extends OptionsColor {
2790
2817
  }
2791
2818
  }
2792
2819
 
2793
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Modes/CollisionMode.js
2820
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Modes/CollisionMode.js
2794
2821
  var CollisionMode;
2795
2822
  (function (CollisionMode) {
2796
2823
  CollisionMode["absorb"] = "absorb";
@@ -2798,13 +2825,14 @@ var CollisionMode;
2798
2825
  CollisionMode["destroy"] = "destroy";
2799
2826
  })(CollisionMode || (CollisionMode = {}));
2800
2827
 
2801
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/CollisionsAbsorb.js
2828
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/CollisionsAbsorb.js
2829
+
2802
2830
  class CollisionsAbsorb {
2803
2831
  constructor() {
2804
2832
  this.speed = 2;
2805
2833
  }
2806
2834
  load(data) {
2807
- if (!data) {
2835
+ if (isNull(data)) {
2808
2836
  return;
2809
2837
  }
2810
2838
  if (data.speed !== undefined) {
@@ -2813,14 +2841,15 @@ class CollisionsAbsorb {
2813
2841
  }
2814
2842
  }
2815
2843
 
2816
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js
2844
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js
2845
+
2817
2846
  class CollisionsOverlap {
2818
2847
  constructor() {
2819
2848
  this.enable = true;
2820
2849
  this.retries = 0;
2821
2850
  }
2822
2851
  load(data) {
2823
- if (!data) {
2852
+ if (isNull(data)) {
2824
2853
  return;
2825
2854
  }
2826
2855
  if (data.enable !== undefined) {
@@ -2832,7 +2861,8 @@ class CollisionsOverlap {
2832
2861
  }
2833
2862
  }
2834
2863
 
2835
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/ValueWithRandom.js
2864
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/ValueWithRandom.js
2865
+
2836
2866
 
2837
2867
 
2838
2868
  class ValueWithRandom {
@@ -2840,10 +2870,10 @@ class ValueWithRandom {
2840
2870
  this.value = 0;
2841
2871
  }
2842
2872
  load(data) {
2843
- if (!data) {
2873
+ if (isNull(data)) {
2844
2874
  return;
2845
2875
  }
2846
- if (data.value !== undefined) {
2876
+ if (!isNull(data.value)) {
2847
2877
  this.value = setRangeValue(data.value);
2848
2878
  }
2849
2879
  }
@@ -2855,7 +2885,7 @@ class AnimationValueWithRandom extends ValueWithRandom {
2855
2885
  }
2856
2886
  load(data) {
2857
2887
  super.load(data);
2858
- if (!data) {
2888
+ if (isNull(data)) {
2859
2889
  return;
2860
2890
  }
2861
2891
  const animation = data.animation;
@@ -2874,7 +2904,7 @@ class RangedAnimationValueWithRandom extends AnimationValueWithRandom {
2874
2904
  }
2875
2905
  }
2876
2906
 
2877
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js
2907
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js
2878
2908
 
2879
2909
  class ParticlesBounceFactor extends ValueWithRandom {
2880
2910
  constructor() {
@@ -2883,7 +2913,8 @@ class ParticlesBounceFactor extends ValueWithRandom {
2883
2913
  }
2884
2914
  }
2885
2915
 
2886
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Bounce/ParticlesBounce.js
2916
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Bounce/ParticlesBounce.js
2917
+
2887
2918
 
2888
2919
  class ParticlesBounce {
2889
2920
  constructor() {
@@ -2891,7 +2922,7 @@ class ParticlesBounce {
2891
2922
  this.vertical = new ParticlesBounceFactor();
2892
2923
  }
2893
2924
  load(data) {
2894
- if (!data) {
2925
+ if (isNull(data)) {
2895
2926
  return;
2896
2927
  }
2897
2928
  this.horizontal.load(data.horizontal);
@@ -2899,7 +2930,8 @@ class ParticlesBounce {
2899
2930
  }
2900
2931
  }
2901
2932
 
2902
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/Collisions.js
2933
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Collisions/Collisions.js
2934
+
2903
2935
 
2904
2936
 
2905
2937
 
@@ -2915,7 +2947,7 @@ class Collisions {
2915
2947
  this.overlap = new CollisionsOverlap();
2916
2948
  }
2917
2949
  load(data) {
2918
- if (!data) {
2950
+ if (isNull(data)) {
2919
2951
  return;
2920
2952
  }
2921
2953
  this.absorb.load(data.absorb);
@@ -2933,7 +2965,8 @@ class Collisions {
2933
2965
  }
2934
2966
  }
2935
2967
 
2936
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Effect/Effect.js
2968
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Effect/Effect.js
2969
+
2937
2970
 
2938
2971
  class Effect {
2939
2972
  constructor() {
@@ -2943,7 +2976,7 @@ class Effect {
2943
2976
  this.type = [];
2944
2977
  }
2945
2978
  load(data) {
2946
- if (!data) {
2979
+ if (isNull(data)) {
2947
2980
  return;
2948
2981
  }
2949
2982
  const options = data.options;
@@ -2967,7 +3000,8 @@ class Effect {
2967
3000
  }
2968
3001
  }
2969
3002
 
2970
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveAngle.js
3003
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveAngle.js
3004
+
2971
3005
 
2972
3006
  class MoveAngle {
2973
3007
  constructor() {
@@ -2975,7 +3009,7 @@ class MoveAngle {
2975
3009
  this.value = 90;
2976
3010
  }
2977
3011
  load(data) {
2978
- if (!data) {
3012
+ if (isNull(data)) {
2979
3013
  return;
2980
3014
  }
2981
3015
  if (data.offset !== undefined) {
@@ -2987,7 +3021,8 @@ class MoveAngle {
2987
3021
  }
2988
3022
  }
2989
3023
 
2990
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveAttract.js
3024
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveAttract.js
3025
+
2991
3026
 
2992
3027
  class MoveAttract {
2993
3028
  constructor() {
@@ -2999,7 +3034,7 @@ class MoveAttract {
2999
3034
  };
3000
3035
  }
3001
3036
  load(data) {
3002
- if (!data) {
3037
+ if (isNull(data)) {
3003
3038
  return;
3004
3039
  }
3005
3040
  if (data.distance !== undefined) {
@@ -3021,7 +3056,8 @@ class MoveAttract {
3021
3056
  }
3022
3057
  }
3023
3058
 
3024
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveCenter.js
3059
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveCenter.js
3060
+
3025
3061
 
3026
3062
  class MoveCenter {
3027
3063
  constructor() {
@@ -3031,7 +3067,7 @@ class MoveCenter {
3031
3067
  this.radius = 0;
3032
3068
  }
3033
3069
  load(data) {
3034
- if (!data) {
3070
+ if (isNull(data)) {
3035
3071
  return;
3036
3072
  }
3037
3073
  if (data.x !== undefined) {
@@ -3049,7 +3085,8 @@ class MoveCenter {
3049
3085
  }
3050
3086
  }
3051
3087
 
3052
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveGravity.js
3088
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveGravity.js
3089
+
3053
3090
 
3054
3091
  class MoveGravity {
3055
3092
  constructor() {
@@ -3059,7 +3096,7 @@ class MoveGravity {
3059
3096
  this.maxSpeed = 50;
3060
3097
  }
3061
3098
  load(data) {
3062
- if (!data) {
3099
+ if (isNull(data)) {
3063
3100
  return;
3064
3101
  }
3065
3102
  if (data.acceleration !== undefined) {
@@ -3077,7 +3114,8 @@ class MoveGravity {
3077
3114
  }
3078
3115
  }
3079
3116
 
3080
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Path/MovePath.js
3117
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Path/MovePath.js
3118
+
3081
3119
 
3082
3120
 
3083
3121
  class MovePath {
@@ -3088,7 +3126,7 @@ class MovePath {
3088
3126
  this.options = {};
3089
3127
  }
3090
3128
  load(data) {
3091
- if (!data) {
3129
+ if (isNull(data)) {
3092
3130
  return;
3093
3131
  }
3094
3132
  if (data.clamp !== undefined) {
@@ -3105,11 +3143,12 @@ class MovePath {
3105
3143
  }
3106
3144
  }
3107
3145
 
3108
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveTrailFill.js
3146
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveTrailFill.js
3147
+
3109
3148
 
3110
3149
  class MoveTrailFill {
3111
3150
  load(data) {
3112
- if (!data) {
3151
+ if (isNull(data)) {
3113
3152
  return;
3114
3153
  }
3115
3154
  if (data.color !== undefined) {
@@ -3121,7 +3160,8 @@ class MoveTrailFill {
3121
3160
  }
3122
3161
  }
3123
3162
 
3124
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveTrail.js
3163
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/MoveTrail.js
3164
+
3125
3165
 
3126
3166
  class MoveTrail {
3127
3167
  constructor() {
@@ -3130,7 +3170,7 @@ class MoveTrail {
3130
3170
  this.fill = new MoveTrailFill();
3131
3171
  }
3132
3172
  load(data) {
3133
- if (!data) {
3173
+ if (isNull(data)) {
3134
3174
  return;
3135
3175
  }
3136
3176
  if (data.enable !== undefined) {
@@ -3145,7 +3185,7 @@ class MoveTrail {
3145
3185
  }
3146
3186
  }
3147
3187
 
3148
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Modes/OutMode.js
3188
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Modes/OutMode.js
3149
3189
  var OutMode;
3150
3190
  (function (OutMode) {
3151
3191
  OutMode["bounce"] = "bounce";
@@ -3155,14 +3195,15 @@ var OutMode;
3155
3195
  OutMode["split"] = "split";
3156
3196
  })(OutMode || (OutMode = {}));
3157
3197
 
3158
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/OutModes.js
3198
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/OutModes.js
3199
+
3159
3200
 
3160
3201
  class OutModes {
3161
3202
  constructor() {
3162
3203
  this.default = OutMode.out;
3163
3204
  }
3164
3205
  load(data) {
3165
- if (!data) {
3206
+ if (isNull(data)) {
3166
3207
  return;
3167
3208
  }
3168
3209
  if (data.default !== undefined) {
@@ -3175,7 +3216,8 @@ class OutModes {
3175
3216
  }
3176
3217
  }
3177
3218
 
3178
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Spin.js
3219
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Spin.js
3220
+
3179
3221
 
3180
3222
 
3181
3223
  class Spin {
@@ -3184,7 +3226,7 @@ class Spin {
3184
3226
  this.enable = false;
3185
3227
  }
3186
3228
  load(data) {
3187
- if (!data) {
3229
+ if (isNull(data)) {
3188
3230
  return;
3189
3231
  }
3190
3232
  if (data.acceleration !== undefined) {
@@ -3199,7 +3241,7 @@ class Spin {
3199
3241
  }
3200
3242
  }
3201
3243
 
3202
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Move.js
3244
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Move/Move.js
3203
3245
 
3204
3246
 
3205
3247
 
@@ -3234,7 +3276,7 @@ class Move {
3234
3276
  this.warp = false;
3235
3277
  }
3236
3278
  load(data) {
3237
- if (!data) {
3279
+ if (isNull(data)) {
3238
3280
  return;
3239
3281
  }
3240
3282
  this.angle.load(isNumber(data.angle) ? { value: data.angle } : data.angle);
@@ -3296,7 +3338,8 @@ class Move {
3296
3338
  }
3297
3339
  }
3298
3340
 
3299
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js
3341
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js
3342
+
3300
3343
 
3301
3344
 
3302
3345
  class OpacityAnimation extends RangedAnimationOptions {
@@ -3307,7 +3350,7 @@ class OpacityAnimation extends RangedAnimationOptions {
3307
3350
  }
3308
3351
  load(data) {
3309
3352
  super.load(data);
3310
- if (!data) {
3353
+ if (isNull(data)) {
3311
3354
  return;
3312
3355
  }
3313
3356
  if (data.destroy !== undefined) {
@@ -3316,7 +3359,8 @@ class OpacityAnimation extends RangedAnimationOptions {
3316
3359
  }
3317
3360
  }
3318
3361
 
3319
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Opacity/Opacity.js
3362
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Opacity/Opacity.js
3363
+
3320
3364
 
3321
3365
 
3322
3366
  class Opacity extends RangedAnimationValueWithRandom {
@@ -3326,7 +3370,7 @@ class Opacity extends RangedAnimationValueWithRandom {
3326
3370
  this.value = 1;
3327
3371
  }
3328
3372
  load(data) {
3329
- if (!data) {
3373
+ if (isNull(data)) {
3330
3374
  return;
3331
3375
  }
3332
3376
  super.load(data);
@@ -3337,7 +3381,8 @@ class Opacity extends RangedAnimationValueWithRandom {
3337
3381
  }
3338
3382
  }
3339
3383
 
3340
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesDensity.js
3384
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesDensity.js
3385
+
3341
3386
  class ParticlesDensity {
3342
3387
  constructor() {
3343
3388
  this.enable = false;
@@ -3345,7 +3390,7 @@ class ParticlesDensity {
3345
3390
  this.height = 1080;
3346
3391
  }
3347
3392
  load(data) {
3348
- if (!data) {
3393
+ if (isNull(data)) {
3349
3394
  return;
3350
3395
  }
3351
3396
  if (data.enable !== undefined) {
@@ -3362,14 +3407,15 @@ class ParticlesDensity {
3362
3407
  }
3363
3408
  }
3364
3409
 
3365
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Modes/LimitMode.js
3410
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Modes/LimitMode.js
3366
3411
  var LimitMode;
3367
3412
  (function (LimitMode) {
3368
3413
  LimitMode["delete"] = "delete";
3369
3414
  LimitMode["wait"] = "wait";
3370
3415
  })(LimitMode || (LimitMode = {}));
3371
3416
 
3372
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js
3417
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesNumberLimit.js
3418
+
3373
3419
 
3374
3420
  class ParticlesNumberLimit {
3375
3421
  constructor() {
@@ -3377,7 +3423,7 @@ class ParticlesNumberLimit {
3377
3423
  this.value = 0;
3378
3424
  }
3379
3425
  load(data) {
3380
- if (!data) {
3426
+ if (isNull(data)) {
3381
3427
  return;
3382
3428
  }
3383
3429
  if (data.mode !== undefined) {
@@ -3389,7 +3435,8 @@ class ParticlesNumberLimit {
3389
3435
  }
3390
3436
  }
3391
3437
 
3392
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesNumber.js
3438
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Number/ParticlesNumber.js
3439
+
3393
3440
 
3394
3441
 
3395
3442
  class ParticlesNumber {
@@ -3399,7 +3446,7 @@ class ParticlesNumber {
3399
3446
  this.value = 0;
3400
3447
  }
3401
3448
  load(data) {
3402
- if (!data) {
3449
+ if (isNull(data)) {
3403
3450
  return;
3404
3451
  }
3405
3452
  this.density.load(data.density);
@@ -3410,7 +3457,8 @@ class ParticlesNumber {
3410
3457
  }
3411
3458
  }
3412
3459
 
3413
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Shadow.js
3460
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Shadow.js
3461
+
3414
3462
 
3415
3463
  class Shadow {
3416
3464
  constructor() {
@@ -3424,7 +3472,7 @@ class Shadow {
3424
3472
  this.color.value = "#000";
3425
3473
  }
3426
3474
  load(data) {
3427
- if (!data) {
3475
+ if (isNull(data)) {
3428
3476
  return;
3429
3477
  }
3430
3478
  if (data.blur !== undefined) {
@@ -3446,7 +3494,8 @@ class Shadow {
3446
3494
  }
3447
3495
  }
3448
3496
 
3449
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Shape/Shape.js
3497
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Shape/Shape.js
3498
+
3450
3499
 
3451
3500
  class Shape {
3452
3501
  constructor() {
@@ -3456,7 +3505,7 @@ class Shape {
3456
3505
  this.type = "circle";
3457
3506
  }
3458
3507
  load(data) {
3459
- if (!data) {
3508
+ if (isNull(data)) {
3460
3509
  return;
3461
3510
  }
3462
3511
  const options = data.options;
@@ -3480,7 +3529,8 @@ class Shape {
3480
3529
  }
3481
3530
  }
3482
3531
 
3483
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Size/SizeAnimation.js
3532
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Size/SizeAnimation.js
3533
+
3484
3534
 
3485
3535
 
3486
3536
  class SizeAnimation extends RangedAnimationOptions {
@@ -3491,7 +3541,7 @@ class SizeAnimation extends RangedAnimationOptions {
3491
3541
  }
3492
3542
  load(data) {
3493
3543
  super.load(data);
3494
- if (!data) {
3544
+ if (isNull(data)) {
3495
3545
  return;
3496
3546
  }
3497
3547
  if (data.destroy !== undefined) {
@@ -3500,7 +3550,8 @@ class SizeAnimation extends RangedAnimationOptions {
3500
3550
  }
3501
3551
  }
3502
3552
 
3503
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Size/Size.js
3553
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Size/Size.js
3554
+
3504
3555
 
3505
3556
 
3506
3557
  class Size extends RangedAnimationValueWithRandom {
@@ -3511,7 +3562,7 @@ class Size extends RangedAnimationValueWithRandom {
3511
3562
  }
3512
3563
  load(data) {
3513
3564
  super.load(data);
3514
- if (!data) {
3565
+ if (isNull(data)) {
3515
3566
  return;
3516
3567
  }
3517
3568
  const animation = data.animation;
@@ -3521,7 +3572,8 @@ class Size extends RangedAnimationValueWithRandom {
3521
3572
  }
3522
3573
  }
3523
3574
 
3524
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Stroke.js
3575
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/Stroke.js
3576
+
3525
3577
 
3526
3578
 
3527
3579
  class Stroke {
@@ -3529,7 +3581,7 @@ class Stroke {
3529
3581
  this.width = 0;
3530
3582
  }
3531
3583
  load(data) {
3532
- if (!data) {
3584
+ if (isNull(data)) {
3533
3585
  return;
3534
3586
  }
3535
3587
  if (data.color !== undefined) {
@@ -3544,7 +3596,8 @@ class Stroke {
3544
3596
  }
3545
3597
  }
3546
3598
 
3547
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/ZIndex/ZIndex.js
3599
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/ZIndex/ZIndex.js
3600
+
3548
3601
 
3549
3602
  class ZIndex extends ValueWithRandom {
3550
3603
  constructor() {
@@ -3555,7 +3608,7 @@ class ZIndex extends ValueWithRandom {
3555
3608
  }
3556
3609
  load(data) {
3557
3610
  super.load(data);
3558
- if (!data) {
3611
+ if (isNull(data)) {
3559
3612
  return;
3560
3613
  }
3561
3614
  if (data.opacityRate !== undefined) {
@@ -3570,7 +3623,8 @@ class ZIndex extends ValueWithRandom {
3570
3623
  }
3571
3624
  }
3572
3625
 
3573
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/ParticlesOptions.js
3626
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Particles/ParticlesOptions.js
3627
+
3574
3628
 
3575
3629
 
3576
3630
 
@@ -3605,7 +3659,7 @@ class ParticlesOptions {
3605
3659
  this.zIndex = new ZIndex();
3606
3660
  }
3607
3661
  load(data) {
3608
- if (!data) {
3662
+ if (isNull(data)) {
3609
3663
  return;
3610
3664
  }
3611
3665
  if (data.groups !== undefined) {
@@ -3665,7 +3719,7 @@ class ParticlesOptions {
3665
3719
  }
3666
3720
  }
3667
3721
 
3668
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/OptionsUtils.js
3722
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Utils/OptionsUtils.js
3669
3723
 
3670
3724
  function loadOptions(options, ...sourceOptionsArr) {
3671
3725
  for (const sourceOptions of sourceOptionsArr) {
@@ -3678,7 +3732,7 @@ function loadParticlesOptions(engine, container, ...sourceOptionsArr) {
3678
3732
  return options;
3679
3733
  }
3680
3734
 
3681
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Options/Classes/Options.js
3735
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Options/Classes/Options.js
3682
3736
 
3683
3737
 
3684
3738
 
@@ -3725,7 +3779,7 @@ class Options {
3725
3779
  this.zLayers = 100;
3726
3780
  }
3727
3781
  load(data) {
3728
- if (!data) {
3782
+ if (isNull(data)) {
3729
3783
  return;
3730
3784
  }
3731
3785
  if (data.preset !== undefined) {
@@ -3843,14 +3897,14 @@ class Options {
3843
3897
  }
3844
3898
  }
3845
3899
 
3846
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/InteractorType.js
3900
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/InteractorType.js
3847
3901
  var InteractorType_InteractorType;
3848
3902
  (function (InteractorType) {
3849
3903
  InteractorType["external"] = "external";
3850
3904
  InteractorType["particles"] = "particles";
3851
3905
  })(InteractorType_InteractorType || (InteractorType_InteractorType = {}));
3852
3906
 
3853
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/InteractionManager.js
3907
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/InteractionManager.js
3854
3908
 
3855
3909
  class InteractionManager {
3856
3910
  constructor(engine, container) {
@@ -3912,7 +3966,7 @@ class InteractionManager {
3912
3966
  }
3913
3967
  }
3914
3968
 
3915
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/ParticleOutType.js
3969
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/ParticleOutType.js
3916
3970
  var ParticleOutType;
3917
3971
  (function (ParticleOutType) {
3918
3972
  ParticleOutType["normal"] = "normal";
@@ -3920,7 +3974,7 @@ var ParticleOutType;
3920
3974
  ParticleOutType["outside"] = "outside";
3921
3975
  })(ParticleOutType || (ParticleOutType = {}));
3922
3976
 
3923
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Particle.js
3977
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Particle.js
3924
3978
 
3925
3979
 
3926
3980
 
@@ -3971,7 +4025,7 @@ class Particle {
3971
4025
  constructor(engine, container) {
3972
4026
  this.container = container;
3973
4027
  this._calcPosition = (container, position, zIndex, tryCount = defaultRetryCount) => {
3974
- for (const [, plugin] of container.plugins) {
4028
+ for (const plugin of container.plugins.values()) {
3975
4029
  const pluginPos = plugin.particlePosition !== undefined ? plugin.particlePosition(position, this) : undefined;
3976
4030
  if (pluginPos) {
3977
4031
  return Vector3d.create(pluginPos.x, pluginPos.y, zIndex);
@@ -4089,7 +4143,7 @@ class Particle {
4089
4143
  this.slow.inRange = false;
4090
4144
  const container = this.container, pathGenerator = this.pathGenerator, shapeDrawer = container.shapeDrawers.get(this.shape);
4091
4145
  shapeDrawer?.particleDestroy?.(this);
4092
- for (const [, plugin] of container.plugins) {
4146
+ for (const plugin of container.plugins.values()) {
4093
4147
  plugin.particleDestroyed?.(this, override);
4094
4148
  }
4095
4149
  for (const updater of container.particles.updaters) {
@@ -4105,7 +4159,7 @@ class Particle {
4105
4159
  }
4106
4160
  draw(delta) {
4107
4161
  const container = this.container, canvas = container.canvas;
4108
- for (const [, plugin] of container.plugins) {
4162
+ for (const plugin of container.plugins.values()) {
4109
4163
  canvas.drawParticlePlugin(plugin, this, delta);
4110
4164
  }
4111
4165
  canvas.drawParticle(this, delta);
@@ -4248,7 +4302,7 @@ class Particle {
4248
4302
  this.sides = sideCountFunc(this);
4249
4303
  }
4250
4304
  this.spawning = false;
4251
- this.shadowColor = rangeColorToRgb(this.options.shadow.color);
4305
+ this.shadowColor = rangeColorToRgb(this._engine, this.options.shadow.color);
4252
4306
  for (const updater of particles.updaters) {
4253
4307
  updater.init(this);
4254
4308
  }
@@ -4257,7 +4311,7 @@ class Particle {
4257
4311
  }
4258
4312
  effectDrawer?.particleInit?.(container, this);
4259
4313
  shapeDrawer?.particleInit?.(container, this);
4260
- for (const [, plugin] of container.plugins) {
4314
+ for (const plugin of container.plugins.values()) {
4261
4315
  plugin.particleCreated?.(this);
4262
4316
  }
4263
4317
  }
@@ -4278,7 +4332,7 @@ class Particle {
4278
4332
  }
4279
4333
  }
4280
4334
 
4281
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/Point.js
4335
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/Point.js
4282
4336
  class Point {
4283
4337
  constructor(position, particle) {
4284
4338
  this.position = position;
@@ -4286,14 +4340,14 @@ class Point {
4286
4340
  }
4287
4341
  }
4288
4342
 
4289
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Types/RangeType.js
4343
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Types/RangeType.js
4290
4344
  var RangeType;
4291
4345
  (function (RangeType) {
4292
4346
  RangeType["circle"] = "circle";
4293
4347
  RangeType["rectangle"] = "rectangle";
4294
4348
  })(RangeType || (RangeType = {}));
4295
4349
 
4296
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/Ranges.js
4350
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/Ranges.js
4297
4351
 
4298
4352
 
4299
4353
  const Ranges_squareExp = 2;
@@ -4351,7 +4405,7 @@ class Rectangle extends BaseRange {
4351
4405
  }
4352
4406
  }
4353
4407
 
4354
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/QuadTree.js
4408
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/QuadTree.js
4355
4409
 
4356
4410
 
4357
4411
  const QuadTree_half = 0.5, QuadTree_double = 2, subdivideCount = 4;
@@ -4412,7 +4466,7 @@ class QuadTree {
4412
4466
  }
4413
4467
  }
4414
4468
 
4415
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Particles.js
4469
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Particles.js
4416
4470
 
4417
4471
 
4418
4472
 
@@ -4537,7 +4591,7 @@ class Particles {
4537
4591
  options.manualParticles.forEach(p => this.addParticle(p.position ? getPosition(p.position, container.canvas.size) : undefined, p.options));
4538
4592
  }
4539
4593
  addParticle(position, overrideOptions, group, initializer) {
4540
- const limitMode = this._container.actualOptions.particles.number.limit.mode, limit = group === undefined ? this._limit : this._groupLimits.get(group) ?? this._limit, currentCount = this.count, minLimit = 0;
4594
+ const limitMode = this._container.actualOptions.particles.number.limit.mode, limit = group === undefined ? this._limit : (this._groupLimits.get(group) ?? this._limit), currentCount = this.count, minLimit = 0;
4541
4595
  if (limit > minLimit) {
4542
4596
  switch (limitMode) {
4543
4597
  case LimitMode.delete: {
@@ -4571,7 +4625,7 @@ class Particles {
4571
4625
  const container = this._container, canvas = container.canvas;
4572
4626
  canvas.clear();
4573
4627
  this.update(delta);
4574
- for (const [, plugin] of container.plugins) {
4628
+ for (const plugin of container.plugins.values()) {
4575
4629
  canvas.drawPlugin(plugin, delta);
4576
4630
  }
4577
4631
  for (const p of this._zArray) {
@@ -4596,7 +4650,7 @@ class Particles {
4596
4650
  this._needsSort = false;
4597
4651
  await this.initPlugins();
4598
4652
  let handled = false;
4599
- for (const [, plugin] of container.plugins) {
4653
+ for (const plugin of container.plugins.values()) {
4600
4654
  handled = plugin.particlesInitialization?.() ?? handled;
4601
4655
  if (handled) {
4602
4656
  break;
@@ -4624,7 +4678,7 @@ class Particles {
4624
4678
  this.movers = await this._engine.getMovers(container, true);
4625
4679
  this.updaters = await this._engine.getUpdaters(container, true);
4626
4680
  await this._interactionManager.init();
4627
- for (const [, pathGenerator] of container.pathGenerators) {
4681
+ for (const pathGenerator of container.pathGenerators.values()) {
4628
4682
  pathGenerator.init(container);
4629
4683
  }
4630
4684
  }
@@ -4648,7 +4702,8 @@ class Particles {
4648
4702
  }
4649
4703
  let deleted = 0;
4650
4704
  for (let i = index; deleted < quantity && i < this.count; i++) {
4651
- if (this._removeParticle(i--, group, override)) {
4705
+ if (this._removeParticle(i, group, override)) {
4706
+ i--;
4652
4707
  deleted++;
4653
4708
  }
4654
4709
  }
@@ -4674,10 +4729,10 @@ class Particles {
4674
4729
  update(delta) {
4675
4730
  const container = this._container, particlesToDelete = new Set();
4676
4731
  this.quadTree = new QuadTree(qTreeRectangle(container.canvas.size), qTreeCapacity);
4677
- for (const [, pathGenerator] of container.pathGenerators) {
4732
+ for (const pathGenerator of container.pathGenerators.values()) {
4678
4733
  pathGenerator.update();
4679
4734
  }
4680
- for (const [, plugin] of container.plugins) {
4735
+ for (const plugin of container.plugins.values()) {
4681
4736
  plugin.update?.(delta);
4682
4737
  }
4683
4738
  const resizeFactor = this._resizeFactor;
@@ -4690,7 +4745,7 @@ class Particles {
4690
4745
  }
4691
4746
  particle.ignoresResizeRatio = false;
4692
4747
  this._interactionManager.reset(particle);
4693
- for (const [, plugin] of this._container.plugins) {
4748
+ for (const plugin of this._container.plugins.values()) {
4694
4749
  if (particle.destroyed) {
4695
4750
  break;
4696
4751
  }
@@ -4741,7 +4796,7 @@ class Particles {
4741
4796
  }
4742
4797
  }
4743
4798
 
4744
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Retina.js
4799
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Retina.js
4745
4800
 
4746
4801
 
4747
4802
  const defaultRatio = 1, defaultReduceFactor = 1;
@@ -4777,7 +4832,7 @@ class Retina {
4777
4832
  }
4778
4833
  }
4779
4834
 
4780
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Container.js
4835
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Container.js
4781
4836
 
4782
4837
 
4783
4838
 
@@ -4868,7 +4923,7 @@ class Container {
4868
4923
  this._sourceOptions = sourceOptions;
4869
4924
  this._initialSourceOptions = sourceOptions;
4870
4925
  this.retina = new Retina(this);
4871
- this.canvas = new Canvas(this);
4926
+ this.canvas = new Canvas(this, this._engine);
4872
4927
  this.particles = new Particles(this._engine, this);
4873
4928
  this.pathGenerators = new Map();
4874
4929
  this.interactivity = {
@@ -5000,10 +5055,10 @@ class Container {
5000
5055
  this.clearClickHandlers();
5001
5056
  this.particles.destroy();
5002
5057
  this.canvas.destroy();
5003
- for (const [, effectDrawer] of this.effectDrawers) {
5058
+ for (const effectDrawer of this.effectDrawers.values()) {
5004
5059
  effectDrawer.destroy?.(this);
5005
5060
  }
5006
- for (const [, shapeDrawer] of this.shapeDrawers) {
5061
+ for (const shapeDrawer of this.shapeDrawers.values()) {
5007
5062
  shapeDrawer.destroy?.(this);
5008
5063
  }
5009
5064
  for (const key of this.effectDrawers.keys()) {
@@ -5035,10 +5090,10 @@ class Container {
5035
5090
  }
5036
5091
  this._nextFrame(timestamp);
5037
5092
  };
5038
- this._drawAnimationFrame = requestAnimationFrame(timestamp => frame(timestamp));
5093
+ this._drawAnimationFrame = animate(timestamp => frame(timestamp));
5039
5094
  }
5040
5095
  async export(type, options = {}) {
5041
- for (const [, plugin] of this.plugins) {
5096
+ for (const plugin of this.plugins.values()) {
5042
5097
  if (!plugin.export) {
5043
5098
  continue;
5044
5099
  }
@@ -5055,7 +5110,7 @@ class Container {
5055
5110
  return;
5056
5111
  }
5057
5112
  this.particles.handleClickMode(mode);
5058
- for (const [, plugin] of this.plugins) {
5113
+ for (const plugin of this.plugins.values()) {
5059
5114
  plugin.handleClickMode?.(mode);
5060
5115
  }
5061
5116
  }
@@ -5097,19 +5152,19 @@ class Container {
5097
5152
  const defaultFpsLimit = 120, minFpsLimit = 0;
5098
5153
  this.fpsLimit = fpsLimit > minFpsLimit ? fpsLimit : defaultFpsLimit;
5099
5154
  this._smooth = smooth;
5100
- for (const [, drawer] of this.effectDrawers) {
5155
+ for (const drawer of this.effectDrawers.values()) {
5101
5156
  await drawer.init?.(this);
5102
5157
  }
5103
- for (const [, drawer] of this.shapeDrawers) {
5158
+ for (const drawer of this.shapeDrawers.values()) {
5104
5159
  await drawer.init?.(this);
5105
5160
  }
5106
- for (const [, plugin] of this.plugins) {
5161
+ for (const plugin of this.plugins.values()) {
5107
5162
  await plugin.init?.();
5108
5163
  }
5109
5164
  this._engine.dispatchEvent(EventType.containerInit, { container: this });
5110
5165
  await this.particles.init();
5111
5166
  this.particles.setDensity();
5112
- for (const [, plugin] of this.plugins) {
5167
+ for (const plugin of this.plugins.values()) {
5113
5168
  plugin.particlesSetup?.();
5114
5169
  }
5115
5170
  this._engine.dispatchEvent(EventType.particlesSetup, { container: this });
@@ -5126,13 +5181,13 @@ class Container {
5126
5181
  return;
5127
5182
  }
5128
5183
  if (this._drawAnimationFrame !== undefined) {
5129
- cancelAnimationFrame(this._drawAnimationFrame);
5184
+ cancelAnimation(this._drawAnimationFrame);
5130
5185
  delete this._drawAnimationFrame;
5131
5186
  }
5132
5187
  if (this._paused) {
5133
5188
  return;
5134
5189
  }
5135
- for (const [, plugin] of this.plugins) {
5190
+ for (const plugin of this.plugins.values()) {
5136
5191
  plugin.pause?.();
5137
5192
  }
5138
5193
  if (!this.pageHidden) {
@@ -5153,7 +5208,7 @@ class Container {
5153
5208
  this._paused = false;
5154
5209
  }
5155
5210
  if (needsUpdate) {
5156
- for (const [, plugin] of this.plugins) {
5211
+ for (const plugin of this.plugins.values()) {
5157
5212
  if (plugin.play) {
5158
5213
  plugin.play();
5159
5214
  }
@@ -5191,7 +5246,7 @@ class Container {
5191
5246
  if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {
5192
5247
  this._intersectionObserver.observe(this.interactivity.element);
5193
5248
  }
5194
- for (const [, plugin] of this.plugins) {
5249
+ for (const plugin of this.plugins.values()) {
5195
5250
  await plugin.start?.();
5196
5251
  }
5197
5252
  this._engine.dispatchEvent(EventType.containerStarted, { container: this });
@@ -5218,7 +5273,7 @@ class Container {
5218
5273
  if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {
5219
5274
  this._intersectionObserver.unobserve(this.interactivity.element);
5220
5275
  }
5221
- for (const [, plugin] of this.plugins) {
5276
+ for (const plugin of this.plugins.values()) {
5222
5277
  plugin.stop?.();
5223
5278
  }
5224
5279
  for (const key of this.plugins.keys()) {
@@ -5239,7 +5294,7 @@ class Container {
5239
5294
  }
5240
5295
  }
5241
5296
 
5242
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/EventDispatcher.js
5297
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Utils/EventDispatcher.js
5243
5298
  class EventDispatcher {
5244
5299
  constructor() {
5245
5300
  this._listeners = new Map();
@@ -5287,7 +5342,7 @@ class EventDispatcher {
5287
5342
  }
5288
5343
  }
5289
5344
 
5290
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Engine.js
5345
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Engine.js
5291
5346
 
5292
5347
 
5293
5348
 
@@ -5361,6 +5416,8 @@ class Engine {
5361
5416
  this._eventDispatcher = new EventDispatcher();
5362
5417
  this._initialized = false;
5363
5418
  this.plugins = [];
5419
+ this.colorManagers = new Map();
5420
+ this.easingFunctions = new Map();
5364
5421
  this._initializers = {
5365
5422
  interactors: new Map(),
5366
5423
  movers: new Map(),
@@ -5385,13 +5442,24 @@ class Engine {
5385
5442
  return this._domArray;
5386
5443
  }
5387
5444
  get version() {
5388
- return "3.4.0";
5445
+ return "3.7.1";
5446
+ }
5447
+ async addColorManager(manager, refresh = true) {
5448
+ this.colorManagers.set(manager.key, manager);
5449
+ await this.refresh(refresh);
5389
5450
  }
5390
5451
  addConfig(config) {
5391
5452
  const key = config.key ?? config.name ?? "default";
5392
5453
  this._configs.set(key, config);
5393
5454
  this._eventDispatcher.dispatchEvent(EventType.configAdded, { data: { name: key, config } });
5394
5455
  }
5456
+ async addEasing(name, easing, refresh = true) {
5457
+ if (this.getEasing(name)) {
5458
+ return;
5459
+ }
5460
+ this.easingFunctions.set(name, easing);
5461
+ await this.refresh(refresh);
5462
+ }
5395
5463
  async addEffect(effect, drawer, refresh = true) {
5396
5464
  executeOnSingleOrMultiple(effect, type => {
5397
5465
  if (!this.getEffectDrawer(type)) {
@@ -5465,6 +5533,9 @@ class Engine {
5465
5533
  }
5466
5534
  return res;
5467
5535
  }
5536
+ getEasing(name) {
5537
+ return this.easingFunctions.get(name) ?? ((value) => value);
5538
+ }
5468
5539
  getEffectDrawer(type) {
5469
5540
  return this.effectDrawers.get(type);
5470
5541
  }
@@ -5556,114 +5627,15 @@ class Engine {
5556
5627
  }
5557
5628
  }
5558
5629
 
5559
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/HslColorManager.js
5560
-
5561
-
5562
- var HslIndexes;
5563
- (function (HslIndexes) {
5564
- HslIndexes[HslIndexes["h"] = 1] = "h";
5565
- HslIndexes[HslIndexes["s"] = 2] = "s";
5566
- HslIndexes[HslIndexes["l"] = 3] = "l";
5567
- HslIndexes[HslIndexes["a"] = 5] = "a";
5568
- })(HslIndexes || (HslIndexes = {}));
5569
- class HslColorManager {
5570
- constructor() {
5571
- this.key = "hsl";
5572
- this.stringPrefix = "hsl";
5573
- }
5574
- handleColor(color) {
5575
- const colorValue = color.value, hslColor = colorValue.hsl ?? color.value;
5576
- if (hslColor.h !== undefined && hslColor.s !== undefined && hslColor.l !== undefined) {
5577
- return hslToRgb(hslColor);
5578
- }
5579
- }
5580
- handleRangeColor(color) {
5581
- const colorValue = color.value, hslColor = colorValue.hsl ?? color.value;
5582
- if (hslColor.h !== undefined && hslColor.l !== undefined) {
5583
- return hslToRgb({
5584
- h: NumberUtils_getRangeValue(hslColor.h),
5585
- l: NumberUtils_getRangeValue(hslColor.l),
5586
- s: NumberUtils_getRangeValue(hslColor.s),
5587
- });
5588
- }
5589
- }
5590
- parseString(input) {
5591
- if (!input.startsWith("hsl")) {
5592
- return;
5593
- }
5594
- const regex = /hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.%]+)\s*)?\)/i, result = regex.exec(input), minLength = 4, defaultAlpha = 1, radix = 10;
5595
- return result
5596
- ? hslaToRgba({
5597
- a: result.length > minLength ? parseAlpha(result[HslIndexes.a]) : defaultAlpha,
5598
- h: parseInt(result[HslIndexes.h], radix),
5599
- l: parseInt(result[HslIndexes.l], radix),
5600
- s: parseInt(result[HslIndexes.s], radix),
5601
- })
5602
- : undefined;
5603
- }
5604
- }
5605
-
5606
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Utils/RgbColorManager.js
5607
-
5608
- var RgbColorManager_RgbIndexes;
5609
- (function (RgbIndexes) {
5610
- RgbIndexes[RgbIndexes["r"] = 1] = "r";
5611
- RgbIndexes[RgbIndexes["g"] = 2] = "g";
5612
- RgbIndexes[RgbIndexes["b"] = 3] = "b";
5613
- RgbIndexes[RgbIndexes["a"] = 5] = "a";
5614
- })(RgbColorManager_RgbIndexes || (RgbColorManager_RgbIndexes = {}));
5615
- class RgbColorManager {
5616
- constructor() {
5617
- this.key = "rgb";
5618
- this.stringPrefix = "rgb";
5619
- }
5620
- handleColor(color) {
5621
- const colorValue = color.value, rgbColor = colorValue.rgb ?? color.value;
5622
- if (rgbColor.r !== undefined) {
5623
- return rgbColor;
5624
- }
5625
- }
5626
- handleRangeColor(color) {
5627
- const colorValue = color.value, rgbColor = colorValue.rgb ?? color.value;
5628
- if (rgbColor.r !== undefined) {
5629
- return {
5630
- r: NumberUtils_getRangeValue(rgbColor.r),
5631
- g: NumberUtils_getRangeValue(rgbColor.g),
5632
- b: NumberUtils_getRangeValue(rgbColor.b),
5633
- };
5634
- }
5635
- }
5636
- parseString(input) {
5637
- if (!input.startsWith(this.stringPrefix)) {
5638
- return;
5639
- }
5640
- const regex = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.%]+)\s*)?\)/i, result = regex.exec(input), radix = 10, minLength = 4, defaultAlpha = 1;
5641
- return result
5642
- ? {
5643
- a: result.length > minLength ? parseAlpha(result[RgbColorManager_RgbIndexes.a]) : defaultAlpha,
5644
- b: parseInt(result[RgbColorManager_RgbIndexes.b], radix),
5645
- g: parseInt(result[RgbColorManager_RgbIndexes.g], radix),
5646
- r: parseInt(result[RgbColorManager_RgbIndexes.r], radix),
5647
- }
5648
- : undefined;
5649
- }
5650
- }
5651
-
5652
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/init.js
5653
-
5654
-
5655
-
5630
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/init.js
5656
5631
 
5657
5632
  function init() {
5658
- const rgbColorManager = new RgbColorManager(), hslColorManager = new HslColorManager();
5659
- addColorManager(rgbColorManager);
5660
- addColorManager(hslColorManager);
5661
5633
  const engine = new Engine();
5662
5634
  engine.init();
5663
5635
  return engine;
5664
5636
  }
5665
5637
 
5666
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/ExternalInteractorBase.js
5638
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/ExternalInteractorBase.js
5667
5639
 
5668
5640
  class ExternalInteractorBase {
5669
5641
  constructor(container) {
@@ -5672,7 +5644,7 @@ class ExternalInteractorBase {
5672
5644
  }
5673
5645
  }
5674
5646
 
5675
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Core/Utils/ParticlesInteractorBase.js
5647
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Core/Utils/ParticlesInteractorBase.js
5676
5648
 
5677
5649
  class ParticlesInteractorBase {
5678
5650
  constructor(container) {
@@ -5681,7 +5653,7 @@ class ParticlesInteractorBase {
5681
5653
  }
5682
5654
  }
5683
5655
 
5684
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Directions/RotateDirection.js
5656
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Directions/RotateDirection.js
5685
5657
  var RotateDirection;
5686
5658
  (function (RotateDirection) {
5687
5659
  RotateDirection["clockwise"] = "clockwise";
@@ -5689,7 +5661,7 @@ var RotateDirection;
5689
5661
  RotateDirection["random"] = "random";
5690
5662
  })(RotateDirection || (RotateDirection = {}));
5691
5663
 
5692
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/GradientType.js
5664
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/GradientType.js
5693
5665
  var GradientType;
5694
5666
  (function (GradientType) {
5695
5667
  GradientType["linear"] = "linear";
@@ -5697,7 +5669,7 @@ var GradientType;
5697
5669
  GradientType["random"] = "random";
5698
5670
  })(GradientType || (GradientType = {}));
5699
5671
 
5700
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/Enums/Types/EasingType.js
5672
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/Enums/Types/EasingType.js
5701
5673
  var EasingType;
5702
5674
  (function (EasingType) {
5703
5675
  EasingType["easeInBack"] = "ease-in-back";
@@ -5729,9 +5701,7 @@ var EasingType;
5729
5701
  EasingType["easeInOutSine"] = "ease-in-out-sine";
5730
5702
  })(EasingType || (EasingType = {}));
5731
5703
 
5732
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/exports.js
5733
-
5734
-
5704
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/exports.js
5735
5705
 
5736
5706
 
5737
5707
 
@@ -5817,7 +5787,7 @@ var EasingType;
5817
5787
 
5818
5788
 
5819
5789
 
5820
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.4.0/node_modules/@tsparticles/engine/browser/index.js
5790
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+engine@3.7.1/node_modules/@tsparticles/engine/browser/index.js
5821
5791
 
5822
5792
 
5823
5793
  const tsParticles = init();
@@ -5828,14 +5798,14 @@ if (!isSsr()) {
5828
5798
 
5829
5799
 
5830
5800
 
5831
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterLife.js
5801
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterLife.js
5832
5802
 
5833
5803
  class EmitterLife {
5834
5804
  constructor() {
5835
5805
  this.wait = false;
5836
5806
  }
5837
5807
  load(data) {
5838
- if (!data) {
5808
+ if (isNull(data)) {
5839
5809
  return;
5840
5810
  }
5841
5811
  if (data.count !== undefined) {
@@ -5853,7 +5823,7 @@ class EmitterLife {
5853
5823
  }
5854
5824
  }
5855
5825
 
5856
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterRate.js
5826
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterRate.js
5857
5827
 
5858
5828
  class EmitterRate {
5859
5829
  constructor() {
@@ -5861,7 +5831,7 @@ class EmitterRate {
5861
5831
  this.delay = 0.1;
5862
5832
  }
5863
5833
  load(data) {
5864
- if (data === undefined) {
5834
+ if (isNull(data)) {
5865
5835
  return;
5866
5836
  }
5867
5837
  if (data.quantity !== undefined) {
@@ -5873,14 +5843,15 @@ class EmitterRate {
5873
5843
  }
5874
5844
  }
5875
5845
 
5876
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterShapeReplace.js
5846
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterShapeReplace.js
5847
+
5877
5848
  class EmitterShapeReplace {
5878
5849
  constructor() {
5879
5850
  this.color = false;
5880
5851
  this.opacity = false;
5881
5852
  }
5882
5853
  load(data) {
5883
- if (!data) {
5854
+ if (isNull(data)) {
5884
5855
  return;
5885
5856
  }
5886
5857
  if (data.color !== undefined) {
@@ -5892,7 +5863,7 @@ class EmitterShapeReplace {
5892
5863
  }
5893
5864
  }
5894
5865
 
5895
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterShape.js
5866
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterShape.js
5896
5867
 
5897
5868
 
5898
5869
  class EmitterShape {
@@ -5902,7 +5873,7 @@ class EmitterShape {
5902
5873
  this.type = "square";
5903
5874
  }
5904
5875
  load(data) {
5905
- if (!data) {
5876
+ if (isNull(data)) {
5906
5877
  return;
5907
5878
  }
5908
5879
  if (data.options !== undefined) {
@@ -5915,7 +5886,7 @@ class EmitterShape {
5915
5886
  }
5916
5887
  }
5917
5888
 
5918
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterSize.js
5889
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/EmitterSize.js
5919
5890
 
5920
5891
  class EmitterSize {
5921
5892
  constructor() {
@@ -5924,7 +5895,7 @@ class EmitterSize {
5924
5895
  this.width = 0;
5925
5896
  }
5926
5897
  load(data) {
5927
- if (data === undefined) {
5898
+ if (isNull(data)) {
5928
5899
  return;
5929
5900
  }
5930
5901
  if (data.mode !== undefined) {
@@ -5939,7 +5910,7 @@ class EmitterSize {
5939
5910
  }
5940
5911
  }
5941
5912
 
5942
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/Emitter.js
5913
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/Options/Classes/Emitter.js
5943
5914
 
5944
5915
 
5945
5916
 
@@ -5955,7 +5926,7 @@ class Emitter {
5955
5926
  this.startCount = 0;
5956
5927
  }
5957
5928
  load(data) {
5958
- if (!data) {
5929
+ if (isNull(data)) {
5959
5930
  return;
5960
5931
  }
5961
5932
  if (data.autoPlay !== undefined) {
@@ -6002,13 +5973,13 @@ class Emitter {
6002
5973
  }
6003
5974
  }
6004
5975
 
6005
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/Enums/EmitterClickMode.js
5976
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/Enums/EmitterClickMode.js
6006
5977
  var EmitterClickMode;
6007
5978
  (function (EmitterClickMode) {
6008
5979
  EmitterClickMode["emitter"] = "emitter";
6009
5980
  })(EmitterClickMode || (EmitterClickMode = {}));
6010
5981
 
6011
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/EmitterInstance.js
5982
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/EmitterInstance.js
6012
5983
 
6013
5984
 
6014
5985
 
@@ -6085,7 +6056,7 @@ class EmitterInstance {
6085
6056
  particlesOptions.move ??= {};
6086
6057
  particlesOptions.move.direction ??= this.options.direction;
6087
6058
  if (this.options.spawnColor) {
6088
- this.spawnColor = rangeColorToHsl(this.options.spawnColor);
6059
+ this.spawnColor = rangeColorToHsl(this._engine, this.options.spawnColor);
6089
6060
  }
6090
6061
  this._paused = !this.options.autoPlay;
6091
6062
  this._particlesOptions = particlesOptions;
@@ -6318,7 +6289,7 @@ class EmitterInstance {
6318
6289
  }
6319
6290
  }
6320
6291
 
6321
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/Emitters.js
6292
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/Emitters.js
6322
6293
 
6323
6294
 
6324
6295
 
@@ -6447,7 +6418,7 @@ class Emitters {
6447
6418
  }
6448
6419
  }
6449
6420
 
6450
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/EmittersPlugin.js
6421
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/EmittersPlugin.js
6451
6422
 
6452
6423
 
6453
6424
 
@@ -6540,7 +6511,7 @@ class EmittersPlugin {
6540
6511
  }
6541
6512
  }
6542
6513
 
6543
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/ShapeManager.js
6514
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/ShapeManager.js
6544
6515
  const shapeGeneratorss = new Map();
6545
6516
  class ShapeManager {
6546
6517
  constructor(engine) {
@@ -6559,10 +6530,12 @@ class ShapeManager {
6559
6530
  }
6560
6531
  }
6561
6532
 
6562
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.4.0/node_modules/@tsparticles/plugin-emitters/browser/index.js
6533
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-emitters@3.7.1/node_modules/@tsparticles/plugin-emitters/browser/index.js
6534
+
6563
6535
 
6564
6536
 
6565
6537
  async function loadEmittersPlugin(engine, refresh = true) {
6538
+ assertValidVersion(engine, "3.7.1");
6566
6539
  if (!engine.emitterShapeManager) {
6567
6540
  engine.emitterShapeManager = new ShapeManager(engine);
6568
6541
  }
@@ -6582,7 +6555,61 @@ async function loadEmittersPlugin(engine, refresh = true) {
6582
6555
 
6583
6556
 
6584
6557
 
6585
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-rotate@3.4.0/node_modules/@tsparticles/updater-rotate/browser/Options/Classes/RotateAnimation.js
6558
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-hex-color@3.7.1/node_modules/@tsparticles/plugin-hex-color/browser/HexColorManager.js
6559
+ var RgbIndexes;
6560
+ (function (RgbIndexes) {
6561
+ RgbIndexes[RgbIndexes["r"] = 1] = "r";
6562
+ RgbIndexes[RgbIndexes["g"] = 2] = "g";
6563
+ RgbIndexes[RgbIndexes["b"] = 3] = "b";
6564
+ RgbIndexes[RgbIndexes["a"] = 4] = "a";
6565
+ })(RgbIndexes || (RgbIndexes = {}));
6566
+ const shorthandHexRegex = /^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i, hexRegex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i, hexRadix = 16, defaultAlpha = 1, alphaFactor = 0xff;
6567
+ class HexColorManager {
6568
+ constructor() {
6569
+ this.key = "hex";
6570
+ this.stringPrefix = "#";
6571
+ }
6572
+ handleColor(color) {
6573
+ return this._parseString(color.value);
6574
+ }
6575
+ handleRangeColor(color) {
6576
+ return this._parseString(color.value);
6577
+ }
6578
+ parseString(input) {
6579
+ return this._parseString(input);
6580
+ }
6581
+ _parseString(hexColor) {
6582
+ if (typeof hexColor !== "string") {
6583
+ return;
6584
+ }
6585
+ if (!hexColor?.startsWith(this.stringPrefix)) {
6586
+ return;
6587
+ }
6588
+ const hexFixed = hexColor.replace(shorthandHexRegex, (_, r, g, b, a) => {
6589
+ return r + r + g + g + b + b + (a !== undefined ? a + a : "");
6590
+ }), result = hexRegex.exec(hexFixed);
6591
+ return result
6592
+ ? {
6593
+ a: result[RgbIndexes.a] !== undefined
6594
+ ? parseInt(result[RgbIndexes.a], hexRadix) / alphaFactor
6595
+ : defaultAlpha,
6596
+ b: parseInt(result[RgbIndexes.b], hexRadix),
6597
+ g: parseInt(result[RgbIndexes.g], hexRadix),
6598
+ r: parseInt(result[RgbIndexes.r], hexRadix),
6599
+ }
6600
+ : undefined;
6601
+ }
6602
+ }
6603
+
6604
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+plugin-hex-color@3.7.1/node_modules/@tsparticles/plugin-hex-color/browser/index.js
6605
+
6606
+
6607
+ async function loadHexColorPlugin(engine, refresh = true) {
6608
+ assertValidVersion(engine, "3.7.1");
6609
+ await engine.addColorManager(new HexColorManager(), refresh);
6610
+ }
6611
+
6612
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-rotate@3.7.1/node_modules/@tsparticles/updater-rotate/browser/Options/Classes/RotateAnimation.js
6586
6613
 
6587
6614
  class RotateAnimation {
6588
6615
  constructor() {
@@ -6592,7 +6619,7 @@ class RotateAnimation {
6592
6619
  this.sync = false;
6593
6620
  }
6594
6621
  load(data) {
6595
- if (!data) {
6622
+ if (isNull(data)) {
6596
6623
  return;
6597
6624
  }
6598
6625
  if (data.enable !== undefined) {
@@ -6610,7 +6637,7 @@ class RotateAnimation {
6610
6637
  }
6611
6638
  }
6612
6639
 
6613
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-rotate@3.4.0/node_modules/@tsparticles/updater-rotate/browser/Options/Classes/Rotate.js
6640
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-rotate@3.7.1/node_modules/@tsparticles/updater-rotate/browser/Options/Classes/Rotate.js
6614
6641
 
6615
6642
 
6616
6643
  class Rotate extends ValueWithRandom {
@@ -6622,7 +6649,7 @@ class Rotate extends ValueWithRandom {
6622
6649
  this.value = 0;
6623
6650
  }
6624
6651
  load(data) {
6625
- if (!data) {
6652
+ if (isNull(data)) {
6626
6653
  return;
6627
6654
  }
6628
6655
  super.load(data);
@@ -6636,7 +6663,7 @@ class Rotate extends ValueWithRandom {
6636
6663
  }
6637
6664
  }
6638
6665
 
6639
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-rotate@3.4.0/node_modules/@tsparticles/updater-rotate/browser/RotateUpdater.js
6666
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-rotate@3.7.1/node_modules/@tsparticles/updater-rotate/browser/RotateUpdater.js
6640
6667
 
6641
6668
 
6642
6669
  const RotateUpdater_double = 2, RotateUpdater_doublePI = Math.PI * RotateUpdater_double, identity = 1, doublePIDeg = 360;
@@ -6709,15 +6736,17 @@ class RotateUpdater {
6709
6736
  }
6710
6737
  }
6711
6738
 
6712
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-rotate@3.4.0/node_modules/@tsparticles/updater-rotate/browser/index.js
6739
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-rotate@3.7.1/node_modules/@tsparticles/updater-rotate/browser/index.js
6740
+
6713
6741
 
6714
6742
  async function loadRotateUpdater(engine, refresh = true) {
6743
+ assertValidVersion(engine, "3.7.1");
6715
6744
  await engine.addParticleUpdater("rotate", container => {
6716
6745
  return Promise.resolve(new RotateUpdater(container));
6717
6746
  }, refresh);
6718
6747
  }
6719
6748
 
6720
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-size@3.4.0/node_modules/@tsparticles/updater-size/browser/SizeUpdater.js
6749
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-size@3.7.1/node_modules/@tsparticles/updater-size/browser/SizeUpdater.js
6721
6750
 
6722
6751
  const minLoops = 0;
6723
6752
  class SizeUpdater {
@@ -6751,22 +6780,24 @@ class SizeUpdater {
6751
6780
  }
6752
6781
  }
6753
6782
 
6754
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-size@3.4.0/node_modules/@tsparticles/updater-size/browser/index.js
6783
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-size@3.7.1/node_modules/@tsparticles/updater-size/browser/index.js
6784
+
6755
6785
 
6756
6786
  async function loadSizeUpdater(engine, refresh = true) {
6787
+ assertValidVersion(engine, "3.7.1");
6757
6788
  await engine.addParticleUpdater("size", () => {
6758
6789
  return Promise.resolve(new SizeUpdater());
6759
6790
  }, refresh);
6760
6791
  }
6761
6792
 
6762
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+shape-square@3.4.0/node_modules/@tsparticles/shape-square/browser/Utils.js
6793
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+shape-square@3.7.1/node_modules/@tsparticles/shape-square/browser/Utils.js
6763
6794
  const fixFactorSquared = 2, fixFactor = Math.sqrt(fixFactorSquared), Utils_double = 2;
6764
6795
  function drawSquare(data) {
6765
6796
  const { context, radius } = data, fixedRadius = radius / fixFactor, fixedDiameter = fixedRadius * Utils_double;
6766
6797
  context.rect(-fixedRadius, -fixedRadius, fixedDiameter, fixedDiameter);
6767
6798
  }
6768
6799
 
6769
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+shape-square@3.4.0/node_modules/@tsparticles/shape-square/browser/SquareDrawer.js
6800
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+shape-square@3.7.1/node_modules/@tsparticles/shape-square/browser/SquareDrawer.js
6770
6801
 
6771
6802
  const sides = 4;
6772
6803
  class SquareDrawer {
@@ -6781,26 +6812,29 @@ class SquareDrawer {
6781
6812
  }
6782
6813
  }
6783
6814
 
6784
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+shape-square@3.4.0/node_modules/@tsparticles/shape-square/browser/index.js
6815
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+shape-square@3.7.1/node_modules/@tsparticles/shape-square/browser/index.js
6816
+
6785
6817
 
6786
6818
  async function loadSquareShape(engine, refresh = true) {
6819
+ assertValidVersion(engine, "3.7.1");
6787
6820
  await engine.addShape(new SquareDrawer(), refresh);
6788
6821
  }
6789
6822
 
6790
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-stroke-color@3.4.0/node_modules/@tsparticles/updater-stroke-color/browser/StrokeColorUpdater.js
6823
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-stroke-color@3.7.1/node_modules/@tsparticles/updater-stroke-color/browser/StrokeColorUpdater.js
6791
6824
 
6792
6825
  const defaultOpacity = 1;
6793
6826
  class StrokeColorUpdater {
6794
- constructor(container) {
6795
- this.container = container;
6827
+ constructor(container, engine) {
6828
+ this._container = container;
6829
+ this._engine = engine;
6796
6830
  }
6797
6831
  init(particle) {
6798
- const container = this.container, options = particle.options;
6832
+ const container = this._container, options = particle.options;
6799
6833
  const stroke = itemFromSingleOrMultiple(options.stroke, particle.id, options.reduceDuplicates);
6800
6834
  particle.strokeWidth = NumberUtils_getRangeValue(stroke.width) * container.retina.pixelRatio;
6801
6835
  particle.strokeOpacity = NumberUtils_getRangeValue(stroke.opacity ?? defaultOpacity);
6802
6836
  particle.strokeAnimation = stroke.color?.animation;
6803
- const strokeHslColor = rangeColorToHsl(stroke.color) ?? particle.getFillColor();
6837
+ const strokeHslColor = rangeColorToHsl(this._engine, stroke.color) ?? particle.getFillColor();
6804
6838
  if (strokeHslColor) {
6805
6839
  particle.strokeColor = getHslAnimationFromHsl(strokeHslColor, particle.strokeAnimation, container.retina.reduceFactor);
6806
6840
  }
@@ -6822,11 +6856,13 @@ class StrokeColorUpdater {
6822
6856
  }
6823
6857
  }
6824
6858
 
6825
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-stroke-color@3.4.0/node_modules/@tsparticles/updater-stroke-color/browser/index.js
6859
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@tsparticles+updater-stroke-color@3.7.1/node_modules/@tsparticles/updater-stroke-color/browser/index.js
6860
+
6826
6861
 
6827
6862
  async function loadStrokeColorUpdater(engine, refresh = true) {
6863
+ assertValidVersion(engine, "3.7.1");
6828
6864
  await engine.addParticleUpdater("strokeColor", container => {
6829
- return Promise.resolve(new StrokeColorUpdater(container));
6865
+ return Promise.resolve(new StrokeColorUpdater(container, engine));
6830
6866
  }, refresh);
6831
6867
  }
6832
6868
 
@@ -6892,7 +6928,9 @@ const options = {
6892
6928
 
6893
6929
 
6894
6930
 
6931
+
6895
6932
  async function loadSquaresPreset(engine, refresh = true) {
6933
+ await loadHexColorPlugin(engine, false);
6896
6934
  await loadEmittersPlugin(engine, false);
6897
6935
  await loadSquareShape(engine, false);
6898
6936
  await loadRotateUpdater(engine, false);