tsparticles 1.37.2 → 1.37.6

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 (45) 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/README.md +68 -0
  11. package/Utils/EventListeners.d.ts +1 -0
  12. package/Utils/EventListeners.js +13 -2
  13. package/Utils/Utils.js +4 -7
  14. package/browser/Plugins/Absorbers/AbsorberInstance.d.ts +2 -1
  15. package/browser/Plugins/Absorbers/AbsorberInstance.js +21 -9
  16. package/browser/Plugins/Absorbers/Options/Classes/AbsorberSize.d.ts +2 -1
  17. package/browser/Plugins/Absorbers/Options/Classes/AbsorberSize.js +6 -4
  18. package/browser/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.d.ts +9 -0
  19. package/browser/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.js +17 -0
  20. package/browser/Plugins/Absorbers/Options/Interfaces/IAbsorberSize.d.ts +3 -2
  21. package/browser/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.d.ts +4 -0
  22. package/browser/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.js +1 -0
  23. package/browser/Utils/EventListeners.d.ts +1 -0
  24. package/browser/Utils/EventListeners.js +14 -3
  25. package/browser/Utils/Utils.js +5 -8
  26. package/esm/Plugins/Absorbers/AbsorberInstance.d.ts +2 -1
  27. package/esm/Plugins/Absorbers/AbsorberInstance.js +21 -9
  28. package/esm/Plugins/Absorbers/Options/Classes/AbsorberSize.d.ts +2 -1
  29. package/esm/Plugins/Absorbers/Options/Classes/AbsorberSize.js +6 -4
  30. package/esm/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.d.ts +9 -0
  31. package/esm/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.js +17 -0
  32. package/esm/Plugins/Absorbers/Options/Interfaces/IAbsorberSize.d.ts +3 -2
  33. package/esm/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.d.ts +4 -0
  34. package/esm/Plugins/Absorbers/Options/Interfaces/IAbsorberSizeLimit.js +1 -0
  35. package/esm/Utils/EventListeners.d.ts +1 -0
  36. package/esm/Utils/EventListeners.js +14 -3
  37. package/esm/Utils/Utils.js +5 -8
  38. package/package.json +1 -1
  39. package/report.html +2 -2
  40. package/report.slim.html +2 -2
  41. package/scripts/install.js +14 -3
  42. package/tsparticles.js +55 -23
  43. package/tsparticles.min.js +2 -2
  44. package/tsparticles.slim.js +15 -9
  45. package/tsparticles.slim.min.js +2 -2
@@ -939,14 +939,11 @@
939
939
  };
940
940
  }
941
941
  function circleBounce(p1, p2) {
942
- const xVelocityDiff = p1.velocity.x;
943
- const yVelocityDiff = p1.velocity.y;
944
- const pos1 = p1.position;
945
- const pos2 = p2.position;
946
- const xDist = pos2.x - pos1.x;
947
- const yDist = pos2.y - pos1.y;
942
+ const {x: xVelocityDiff, y: yVelocityDiff} = p1.velocity.sub(p2.velocity);
943
+ const [pos1, pos2] = [ p1.position, p2.position ];
944
+ const {dx: xDist, dy: yDist} = getDistances(pos2, pos1);
948
945
  if (xVelocityDiff * xDist + yVelocityDiff * yDist >= 0) {
949
- const angle = -Math.atan2(pos2.y - pos1.y, pos2.x - pos1.x);
946
+ const angle = -Math.atan2(yDist, xDist);
950
947
  const m1 = p1.mass;
951
948
  const m2 = p2.mass;
952
949
  const u1 = p1.velocity.rotate(angle);
@@ -1880,6 +1877,7 @@
1880
1877
  this.mouseDownHandler = () => this.mouseDown();
1881
1878
  this.visibilityChangeHandler = () => this.handleVisibilityChange();
1882
1879
  this.themeChangeHandler = e => this.handleThemeChange(e);
1880
+ this.oldThemeChangeHandler = e => this.handleThemeChange(e);
1883
1881
  this.resizeHandler = () => this.handleWindowResize();
1884
1882
  }
1885
1883
  addListeners() {
@@ -1903,9 +1901,17 @@
1903
1901
  } else {
1904
1902
  container.interactivity.element = container.canvas.element;
1905
1903
  }
1906
- const mediaMatch = typeof matchMedia !== "undefined" && matchMedia("(prefers-color-scheme: dark)");
1904
+ const mediaMatch = !isSsr() && typeof matchMedia !== "undefined" && matchMedia("(prefers-color-scheme: dark)");
1907
1905
  if (mediaMatch) {
1908
- manageListener(mediaMatch, "change", this.themeChangeHandler, add);
1906
+ if (mediaMatch.addEventListener !== undefined) {
1907
+ manageListener(mediaMatch, "change", this.themeChangeHandler, add);
1908
+ } else if (mediaMatch.addListener !== undefined) {
1909
+ if (add) {
1910
+ mediaMatch.addListener(this.oldThemeChangeHandler);
1911
+ } else {
1912
+ mediaMatch.removeListener(this.oldThemeChangeHandler);
1913
+ }
1914
+ }
1909
1915
  }
1910
1916
  const interactivityEl = container.interactivity.element;
1911
1917
  if (!interactivityEl) {