tsparticles 1.37.2 → 1.37.3

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.
Files changed (33) hide show
  1. package/Plugins/Absorbers/AbsorberInstance.d.ts +2 -1
  2. package/Plugins/Absorbers/AbsorberInstance.js +21 -9
  3. package/Plugins/Absorbers/Options/Classes/AbsorberSize.d.ts +2 -1
  4. package/Plugins/Absorbers/Options/Classes/AbsorberSize.js +6 -4
  5. package/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.d.ts +9 -0
  6. package/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.js +21 -0
  7. package/Plugins/Absorbers/Options/Interfaces/IAbsorberSize.d.ts +3 -2
  8. package/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.d.ts +4 -0
  9. package/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.js +2 -0
  10. package/browser/Plugins/Absorbers/AbsorberInstance.d.ts +2 -1
  11. package/browser/Plugins/Absorbers/AbsorberInstance.js +21 -9
  12. package/browser/Plugins/Absorbers/Options/Classes/AbsorberSize.d.ts +2 -1
  13. package/browser/Plugins/Absorbers/Options/Classes/AbsorberSize.js +6 -4
  14. package/browser/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.d.ts +9 -0
  15. package/browser/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.js +17 -0
  16. package/browser/Plugins/Absorbers/Options/Interfaces/IAbsorberSize.d.ts +3 -2
  17. package/browser/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.d.ts +4 -0
  18. package/browser/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.js +1 -0
  19. package/esm/Plugins/Absorbers/AbsorberInstance.d.ts +2 -1
  20. package/esm/Plugins/Absorbers/AbsorberInstance.js +21 -9
  21. package/esm/Plugins/Absorbers/Options/Classes/AbsorberSize.d.ts +2 -1
  22. package/esm/Plugins/Absorbers/Options/Classes/AbsorberSize.js +6 -4
  23. package/esm/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.d.ts +9 -0
  24. package/esm/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.js +17 -0
  25. package/esm/Plugins/Absorbers/Options/Interfaces/IAbsorberSize.d.ts +3 -2
  26. package/esm/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.d.ts +4 -0
  27. package/esm/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.js +1 -0
  28. package/package.json +1 -1
  29. package/report.html +2 -2
  30. package/report.slim.html +2 -2
  31. package/tsparticles.js +40 -14
  32. package/tsparticles.min.js +2 -2
  33. package/tsparticles.slim.min.js +1 -1
package/tsparticles.js CHANGED
@@ -9420,7 +9420,7 @@
9420
9420
  }
9421
9421
  class AbsorberInstance {
9422
9422
  constructor(absorbers, container, options, position) {
9423
- var _a, _b, _c;
9423
+ var _a, _b, _c, _d, _e;
9424
9424
  this.absorbers = absorbers;
9425
9425
  this.container = container;
9426
9426
  this.initialPosition = position ? Vector.create(position.x, position.y) : undefined;
@@ -9431,16 +9431,22 @@
9431
9431
  this.size = getRangeValue(options.size.value) * container.retina.pixelRatio;
9432
9432
  this.mass = this.size * options.size.density * container.retina.reduceFactor;
9433
9433
  const limit = options.size.limit;
9434
- this.limit = limit !== undefined ? limit * container.retina.pixelRatio * container.retina.reduceFactor : limit;
9434
+ this.limit = typeof limit === "number" ? {
9435
+ radius: limit * container.retina.pixelRatio * container.retina.reduceFactor,
9436
+ mass: 0
9437
+ } : {
9438
+ radius: ((_a = limit === null || limit === void 0 ? void 0 : limit.radius) !== null && _a !== void 0 ? _a : 0) * container.retina.pixelRatio * container.retina.reduceFactor,
9439
+ mass: (_b = limit === null || limit === void 0 ? void 0 : limit.mass) !== null && _b !== void 0 ? _b : 0
9440
+ };
9435
9441
  const color = typeof options.color === "string" ? {
9436
9442
  value: options.color
9437
9443
  } : options.color;
9438
- this.color = (_a = colorToRgb(color)) !== null && _a !== void 0 ? _a : {
9444
+ this.color = (_c = colorToRgb(color)) !== null && _c !== void 0 ? _c : {
9439
9445
  b: 0,
9440
9446
  g: 0,
9441
9447
  r: 0
9442
9448
  };
9443
- this.position = (_c = (_b = this.initialPosition) === null || _b === void 0 ? void 0 : _b.copy()) !== null && _c !== void 0 ? _c : this.calcPosition();
9449
+ this.position = (_e = (_d = this.initialPosition) === null || _d === void 0 ? void 0 : _d.copy()) !== null && _e !== void 0 ? _e : this.calcPosition();
9444
9450
  }
9445
9451
  attract(particle) {
9446
9452
  const container = this.container;
@@ -9479,10 +9485,12 @@
9479
9485
  }
9480
9486
  this.updateParticlePosition(particle, v);
9481
9487
  }
9482
- if (this.limit === undefined || this.size < this.limit) {
9488
+ if (this.limit.radius <= 0 || this.size < this.limit.radius) {
9483
9489
  this.size += sizeFactor;
9484
9490
  }
9485
- this.mass += sizeFactor * this.options.size.density * container.retina.reduceFactor;
9491
+ if (this.limit.mass <= 0 || this.mass < this.limit.mass) {
9492
+ this.mass += sizeFactor * this.options.size.density * container.retina.reduceFactor;
9493
+ }
9486
9494
  } else {
9487
9495
  this.updateParticlePosition(particle, v);
9488
9496
  }
@@ -9513,9 +9521,10 @@
9513
9521
  const container = this.container;
9514
9522
  const canvasSize = container.canvas.size;
9515
9523
  if (particle.needsNewPosition) {
9516
- const pSize = particle.getRadius();
9517
- particle.position.x = (canvasSize.width - pSize * 2) * (1 + (Math.random() * .2 - .1)) + pSize;
9518
- particle.position.y = (canvasSize.height - pSize * 2) * (1 + (Math.random() * .2 - .1)) + pSize;
9524
+ particle.position.x = Math.floor(Math.random() * canvasSize.width);
9525
+ particle.position.y = Math.floor(Math.random() * canvasSize.height);
9526
+ particle.velocity.setTo(particle.initialVelocity);
9527
+ particle.absorberOrbit = undefined;
9519
9528
  particle.needsNewPosition = false;
9520
9529
  }
9521
9530
  if (this.options.orbits) {
@@ -9552,12 +9561,30 @@
9552
9561
  }
9553
9562
  }
9554
9563
  }
9564
+ class AbsorberSizeLimit {
9565
+ constructor() {
9566
+ this.radius = 0;
9567
+ this.mass = 0;
9568
+ }
9569
+ load(data) {
9570
+ if (!data) {
9571
+ return;
9572
+ }
9573
+ if (data.mass !== undefined) {
9574
+ this.mass = data.mass;
9575
+ }
9576
+ if (data.radius !== undefined) {
9577
+ this.radius = data.radius;
9578
+ }
9579
+ }
9580
+ }
9555
9581
  class AbsorberSize extends ValueWithRandom {
9556
9582
  constructor() {
9557
9583
  super();
9558
9584
  this.density = 5;
9559
9585
  this.random.minimumValue = 1;
9560
9586
  this.value = 50;
9587
+ this.limit = new AbsorberSizeLimit;
9561
9588
  }
9562
9589
  load(data) {
9563
9590
  if (!data) {
@@ -9567,11 +9594,10 @@
9567
9594
  if (data.density !== undefined) {
9568
9595
  this.density = data.density;
9569
9596
  }
9570
- if (data.limit !== undefined) {
9571
- this.limit = data.limit;
9572
- }
9573
- if (data.limit !== undefined) {
9574
- this.limit = data.limit;
9597
+ if (typeof data.limit === "number") {
9598
+ this.limit.radius = data.limit;
9599
+ } else {
9600
+ this.limit.load(data.limit);
9575
9601
  }
9576
9602
  }
9577
9603
  }