@tsparticles/engine 4.0.0-alpha.25 → 4.0.0-alpha.26

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 (80) hide show
  1. package/622.min.js +1 -0
  2. package/README.md +2 -2
  3. package/browser/Core/Engine.js +1 -18
  4. package/browser/Core/Particle.js +2 -23
  5. package/browser/Core/Particles.js +0 -23
  6. package/browser/Core/Utils/Ranges.js +2 -2
  7. package/browser/Core/Utils/Vectors.js +10 -7
  8. package/browser/Options/Classes/Particles/Move/Move.js +0 -4
  9. package/browser/Utils/CanvasUtils.js +29 -32
  10. package/browser/Utils/MathUtils.js +8 -1
  11. package/browser/Utils/Utils.js +10 -14
  12. package/browser/exports.js +0 -1
  13. package/cjs/Core/Engine.js +1 -18
  14. package/cjs/Core/Particle.js +2 -23
  15. package/cjs/Core/Particles.js +0 -23
  16. package/cjs/Core/Utils/Ranges.js +2 -2
  17. package/cjs/Core/Utils/Vectors.js +10 -7
  18. package/cjs/Options/Classes/Particles/Move/Move.js +0 -4
  19. package/cjs/Utils/CanvasUtils.js +29 -32
  20. package/cjs/Utils/MathUtils.js +8 -1
  21. package/cjs/Utils/Utils.js +10 -14
  22. package/cjs/exports.js +0 -1
  23. package/dist_browser_Core_Container_js.js +3 -3
  24. package/esm/Core/Engine.js +1 -18
  25. package/esm/Core/Particle.js +2 -23
  26. package/esm/Core/Particles.js +0 -23
  27. package/esm/Core/Utils/Ranges.js +2 -2
  28. package/esm/Core/Utils/Vectors.js +10 -7
  29. package/esm/Options/Classes/Particles/Move/Move.js +0 -4
  30. package/esm/Utils/CanvasUtils.js +29 -32
  31. package/esm/Utils/MathUtils.js +8 -1
  32. package/esm/Utils/Utils.js +10 -14
  33. package/esm/exports.js +0 -1
  34. package/package.json +1 -1
  35. package/report.html +1 -1
  36. package/scripts/install.js +2 -2
  37. package/tsparticles.engine.js +10 -20
  38. package/tsparticles.engine.min.js +2 -2
  39. package/types/Core/Engine.d.ts +1 -9
  40. package/types/Core/Particle.d.ts +0 -4
  41. package/types/Core/Particles.d.ts +0 -5
  42. package/types/Core/Utils/Vectors.d.ts +6 -6
  43. package/types/Options/Classes/Particles/Move/Move.d.ts +0 -2
  44. package/types/Options/Interfaces/Particles/Move/IMove.d.ts +0 -2
  45. package/types/Types/EngineInitializers.d.ts +0 -6
  46. package/types/Utils/CanvasUtils.d.ts +6 -7
  47. package/types/Utils/MathUtils.d.ts +2 -0
  48. package/types/export-types.d.ts +0 -3
  49. package/types/exports.d.ts +0 -1
  50. package/umd/Core/Engine.js +1 -18
  51. package/umd/Core/Particle.js +3 -24
  52. package/umd/Core/Particles.js +0 -23
  53. package/umd/Core/Utils/Ranges.js +1 -1
  54. package/umd/Core/Utils/Vectors.js +10 -7
  55. package/umd/Options/Classes/Particles/Move/Move.js +1 -5
  56. package/umd/Utils/CanvasUtils.js +29 -32
  57. package/umd/Utils/MathUtils.js +10 -1
  58. package/umd/Utils/Utils.js +10 -14
  59. package/umd/exports.js +1 -2
  60. package/152.min.js +0 -1
  61. package/browser/Core/Interfaces/IMovePathGenerator.js +0 -1
  62. package/browser/Core/Interfaces/IParticleMover.js +0 -1
  63. package/browser/Options/Classes/Particles/Move/MoveAttract.js +0 -36
  64. package/browser/Options/Interfaces/Particles/Move/IMoveAttract.js +0 -1
  65. package/cjs/Core/Interfaces/IMovePathGenerator.js +0 -1
  66. package/cjs/Core/Interfaces/IParticleMover.js +0 -1
  67. package/cjs/Options/Classes/Particles/Move/MoveAttract.js +0 -36
  68. package/cjs/Options/Interfaces/Particles/Move/IMoveAttract.js +0 -1
  69. package/esm/Core/Interfaces/IMovePathGenerator.js +0 -1
  70. package/esm/Core/Interfaces/IParticleMover.js +0 -1
  71. package/esm/Options/Classes/Particles/Move/MoveAttract.js +0 -36
  72. package/esm/Options/Interfaces/Particles/Move/IMoveAttract.js +0 -1
  73. package/types/Core/Interfaces/IMovePathGenerator.d.ts +0 -9
  74. package/types/Core/Interfaces/IParticleMover.d.ts +0 -7
  75. package/types/Options/Classes/Particles/Move/MoveAttract.d.ts +0 -12
  76. package/types/Options/Interfaces/Particles/Move/IMoveAttract.d.ts +0 -7
  77. package/umd/Core/Interfaces/IMovePathGenerator.js +0 -12
  78. package/umd/Core/Interfaces/IParticleMover.js +0 -12
  79. package/umd/Options/Classes/Particles/Move/MoveAttract.js +0 -50
  80. package/umd/Options/Interfaces/Particles/Move/IMoveAttract.js +0 -12
@@ -69,8 +69,15 @@ export function getDistances(pointA, pointB) {
69
69
  const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y;
70
70
  return { dx: dx, dy: dy, distance: Math.hypot(dx, dy) };
71
71
  }
72
+ export function getDistanceSq(pointA, pointB) {
73
+ const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y;
74
+ return dx * dx + dy * dy;
75
+ }
72
76
  export function getDistance(pointA, pointB) {
73
- return getDistances(pointA, pointB).distance;
77
+ return Math.sqrt(getDistanceSq(pointA, pointB));
78
+ }
79
+ export function checkDistance(pointA, pointB, distance) {
80
+ return getDistanceSq(pointA, pointB) <= distance * distance;
74
81
  }
75
82
  export function degToRad(degrees) {
76
83
  return degrees * degToRadFactor;
@@ -83,33 +83,29 @@ export function calculateBounds(point, radius) {
83
83
  }
84
84
  export function deepExtend(destination, ...sources) {
85
85
  for (const source of sources) {
86
- if (source === undefined || source === null) {
86
+ if (isNull(source)) {
87
87
  continue;
88
88
  }
89
89
  if (!isObject(source)) {
90
90
  destination = source;
91
91
  continue;
92
92
  }
93
- const sourceIsArray = Array.isArray(source);
94
- if (sourceIsArray) {
93
+ if (Array.isArray(source)) {
95
94
  if (!Array.isArray(destination)) {
96
95
  destination = [];
97
96
  }
98
97
  }
99
- else {
100
- if (!isObject(destination) || Array.isArray(destination)) {
101
- destination = {};
102
- }
98
+ else if (!isObject(destination) || Array.isArray(destination)) {
99
+ destination = {};
103
100
  }
104
- for (const key in source) {
105
- if (key === "__proto__") {
101
+ for (const key of Object.keys(source)) {
102
+ if (key === "__proto__" || key === "constructor" || key === "prototype") {
106
103
  continue;
107
104
  }
108
- const sourceDict = source, value = sourceDict[key], destDict = destination;
109
- destDict[key] =
110
- isObject(value) && Array.isArray(value)
111
- ? value.map(v => deepExtend(destDict[key], v))
112
- : deepExtend(destDict[key], value);
105
+ const sourceDict = source, destDict = destination, value = sourceDict[key];
106
+ destDict[key] = Array.isArray(value)
107
+ ? value.map(v => deepExtend(undefined, v))
108
+ : deepExtend(destDict[key], value);
113
109
  }
114
110
  }
115
111
  return destination;
package/esm/exports.js CHANGED
@@ -28,7 +28,6 @@ export * from "./Options/Classes/Particles/Bounce/ParticlesBounce.js";
28
28
  export * from "./Options/Classes/Particles/Bounce/ParticlesBounceFactor.js";
29
29
  export * from "./Options/Classes/Particles/ParticlesOptions.js";
30
30
  export * from "./Options/Classes/Particles/Stroke.js";
31
- export * from "./Options/Classes/Particles/Move/MoveAttract.js";
32
31
  export * from "./Options/Classes/Particles/Move/Move.js";
33
32
  export * from "./Options/Classes/Particles/Move/MoveAngle.js";
34
33
  export * from "./Options/Classes/Particles/Move/MoveCenter.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/engine",
3
- "version": "4.0.0-alpha.25",
3
+ "version": "4.0.0-alpha.26",
4
4
  "description": "Easily create highly customizable particle, confetti and fireworks animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.",
5
5
  "homepage": "https://particles.js.org",
6
6
  "scripts": {
package/report.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>@tsparticles/engine [21 Feb 2026 at 12:47]</title>
6
+ <title>@tsparticles/engine [26 Feb 2026 at 17:54]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
@@ -1,5 +1,5 @@
1
- import path from "path";
2
- import { fileURLToPath } from "url";
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
3
  import fs from "fs-extra";
4
4
 
5
5
  async function checkErrors() {