@tsparticles/interaction-particles-attract 3.0.2 → 3.1.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.
@@ -1,4 +1,5 @@
1
1
  import { ParticlesInteractorBase, getDistances, getRangeValue, } from "@tsparticles/engine";
2
+ const attractFactor = 1000, identity = 1;
2
3
  export class Attractor extends ParticlesInteractorBase {
3
4
  constructor(container) {
4
5
  super(container);
@@ -17,12 +18,13 @@ export class Attractor extends ParticlesInteractorBase {
17
18
  if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
18
19
  continue;
19
20
  }
20
- const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * 1000), ay = dy / (rotate.y * 1000), p1Factor = p2.size.value / p1.size.value, p2Factor = 1 / p1Factor;
21
+ const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;
21
22
  p1.velocity.x -= ax * p1Factor;
22
23
  p1.velocity.y -= ay * p1Factor;
23
24
  p2.velocity.x += ax * p2Factor;
24
25
  p2.velocity.y += ay * p2Factor;
25
26
  }
27
+ await Promise.resolve();
26
28
  }
27
29
  isEnabled(particle) {
28
30
  return particle.options.move.attract.enable;
package/cjs/Attractor.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Attractor = void 0;
4
4
  const engine_1 = require("@tsparticles/engine");
5
+ const attractFactor = 1000, identity = 1;
5
6
  class Attractor extends engine_1.ParticlesInteractorBase {
6
7
  constructor(container) {
7
8
  super(container);
@@ -20,12 +21,13 @@ class Attractor extends engine_1.ParticlesInteractorBase {
20
21
  if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
21
22
  continue;
22
23
  }
23
- const pos2 = p2.getPosition(), { dx, dy } = (0, engine_1.getDistances)(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * 1000), ay = dy / (rotate.y * 1000), p1Factor = p2.size.value / p1.size.value, p2Factor = 1 / p1Factor;
24
+ const pos2 = p2.getPosition(), { dx, dy } = (0, engine_1.getDistances)(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;
24
25
  p1.velocity.x -= ax * p1Factor;
25
26
  p1.velocity.y -= ay * p1Factor;
26
27
  p2.velocity.x += ax * p2Factor;
27
28
  p2.velocity.y += ay * p2Factor;
28
29
  }
30
+ await Promise.resolve();
29
31
  }
30
32
  isEnabled(particle) {
31
33
  return particle.options.move.attract.enable;
package/esm/Attractor.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { ParticlesInteractorBase, getDistances, getRangeValue, } from "@tsparticles/engine";
2
+ const attractFactor = 1000, identity = 1;
2
3
  export class Attractor extends ParticlesInteractorBase {
3
4
  constructor(container) {
4
5
  super(container);
@@ -17,12 +18,13 @@ export class Attractor extends ParticlesInteractorBase {
17
18
  if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
18
19
  continue;
19
20
  }
20
- const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * 1000), ay = dy / (rotate.y * 1000), p1Factor = p2.size.value / p1.size.value, p2Factor = 1 / p1Factor;
21
+ const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;
21
22
  p1.velocity.x -= ax * p1Factor;
22
23
  p1.velocity.y -= ay * p1Factor;
23
24
  p2.velocity.x += ax * p2Factor;
24
25
  p2.velocity.y += ay * p2Factor;
25
26
  }
27
+ await Promise.resolve();
26
28
  }
27
29
  isEnabled(particle) {
28
30
  return particle.options.move.attract.enable;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/interaction-particles-attract",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "description": "tsParticles attract particles interaction",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -87,7 +87,7 @@
87
87
  "./package.json": "./package.json"
88
88
  },
89
89
  "dependencies": {
90
- "@tsparticles/engine": "^3.0.2"
90
+ "@tsparticles/engine": "^3.1.0"
91
91
  },
92
92
  "publishConfig": {
93
93
  "access": "public"
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/interaction-particles-attract [6 Dec 2023 at 17:40]</title>
6
+ <title>@tsparticles/interaction-particles-attract [13 Jan 2024 at 23:00]</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>
@@ -31,7 +31,7 @@
31
31
  <body>
32
32
  <div id="app"></div>
33
33
  <script>
34
- window.chartData = [{"label":"tsparticles.interaction.particles.attract.js","isAsset":true,"statSize":1569,"parsedSize":5406,"gzipSize":1832,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":1527,"groups":[{"id":251,"label":"index.js + 1 modules (concatenated)","path":"./dist/browser/index.js + 1 modules (concatenated)","statSize":1527,"parsedSize":5406,"gzipSize":1832,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser","statSize":1527,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/index.js","statSize":223,"parsedSize":789,"gzipSize":267,"inaccurateSizes":true},{"id":null,"label":"Attractor.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/Attractor.js","statSize":1304,"parsedSize":4616,"gzipSize":1564,"inaccurateSizes":true}],"parsedSize":5406,"gzipSize":1832,"inaccurateSizes":true}]}],"parsedSize":5406,"gzipSize":1832},{"label":"engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","statSize":42,"groups":[{"id":533,"label":"engine\",\"root\":\"window\"}","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles/engine\",\"root\":\"window\"}","statSize":42}],"parsedSize":0,"gzipSize":0}],"isInitialByEntrypoint":{"tsparticles.interaction.particles.attract":true}}];
34
+ window.chartData = [{"label":"tsparticles.interaction.particles.attract.js","isAsset":true,"statSize":1667,"parsedSize":5504,"gzipSize":1866,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":1625,"groups":[{"id":494,"label":"index.js + 1 modules (concatenated)","path":"./dist/browser/index.js + 1 modules (concatenated)","statSize":1625,"parsedSize":5504,"gzipSize":1866,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser","statSize":1625,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/index.js","statSize":223,"parsedSize":755,"gzipSize":256,"inaccurateSizes":true},{"id":null,"label":"Attractor.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/Attractor.js","statSize":1402,"parsedSize":4748,"gzipSize":1609,"inaccurateSizes":true}],"parsedSize":5504,"gzipSize":1866,"inaccurateSizes":true}]}],"parsedSize":5504,"gzipSize":1866},{"label":"engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","statSize":42,"groups":[{"id":533,"label":"engine\",\"root\":\"window\"}","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles/engine\",\"root\":\"window\"}","statSize":42}],"parsedSize":0,"gzipSize":0}],"isInitialByEntrypoint":{"tsparticles.interaction.particles.attract":true}}];
35
35
  window.entrypoints = ["tsparticles.interaction.particles.attract","tsparticles.interaction.particles.attract.min"];
36
36
  window.defaultSizes = "parsed";
37
37
  </script>
@@ -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.0.2
7
+ * v3.1.0
8
8
  */
9
9
  (function webpackUniversalModuleDefinition(root, factory) {
10
10
  if(typeof exports === 'object' && typeof module === 'object')
@@ -98,6 +98,8 @@ __webpack_require__.d(__webpack_exports__, {
98
98
  var engine_root_window_ = __webpack_require__(533);
99
99
  ;// CONCATENATED MODULE: ./dist/browser/Attractor.js
100
100
 
101
+ const attractFactor = 1000,
102
+ identity = 1;
101
103
  class Attractor extends engine_root_window_.ParticlesInteractorBase {
102
104
  constructor(container) {
103
105
  super(container);
@@ -122,15 +124,16 @@ class Attractor extends engine_root_window_.ParticlesInteractorBase {
122
124
  dy
123
125
  } = (0,engine_root_window_.getDistances)(pos1, pos2),
124
126
  rotate = p1.options.move.attract.rotate,
125
- ax = dx / (rotate.x * 1000),
126
- ay = dy / (rotate.y * 1000),
127
+ ax = dx / (rotate.x * attractFactor),
128
+ ay = dy / (rotate.y * attractFactor),
127
129
  p1Factor = p2.size.value / p1.size.value,
128
- p2Factor = 1 / p1Factor;
130
+ p2Factor = identity / p1Factor;
129
131
  p1.velocity.x -= ax * p1Factor;
130
132
  p1.velocity.y -= ay * p1Factor;
131
133
  p2.velocity.x += ax * p2Factor;
132
134
  p2.velocity.y += ay * p2Factor;
133
135
  }
136
+ await Promise.resolve();
134
137
  }
135
138
  isEnabled(particle) {
136
139
  return particle.options.move.attract.enable;
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see tsparticles.interaction.particles.attract.min.js.LICENSE.txt */
2
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],t);else{var o="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(this,(e=>(()=>{"use strict";var t={533:t=>{t.exports=e}},o={};function r(e){var a=o[e];if(void 0!==a)return a.exports;var n=o[e]={exports:{}};return t[e](n,n.exports,r),n.exports}r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{r.r(a),r.d(a,{loadParticlesAttractInteraction:()=>o});var e=r(533);class t extends e.ParticlesInteractorBase{constructor(e){super(e)}clear(){}init(){}async interact(t){const o=this.container;void 0===t.attractDistance&&(t.attractDistance=(0,e.getRangeValue)(t.options.move.attract.distance)*o.retina.pixelRatio);const r=t.attractDistance,a=t.getPosition(),n=o.particles.quadTree.queryCircle(a,r);for(const o of n){if(t===o||!o.options.move.attract.enable||o.destroyed||o.spawning)continue;const r=o.getPosition(),{dx:n,dy:i}=(0,e.getDistances)(a,r),s=t.options.move.attract.rotate,c=n/(1e3*s.x),l=i/(1e3*s.y),p=o.size.value/t.size.value,d=1/p;t.velocity.x-=c*p,t.velocity.y-=l*p,o.velocity.x+=c*d,o.velocity.y+=l*d}}isEnabled(e){return e.options.move.attract.enable}reset(){}}async function o(e,o=!0){await e.addInteractor("particlesAttract",(e=>new t(e)),o)}})(),a})()));
2
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],t);else{var o="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(this,(e=>(()=>{"use strict";var t={533:t=>{t.exports=e}},o={};function r(e){var a=o[e];if(void 0!==a)return a.exports;var i=o[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{r.r(a),r.d(a,{loadParticlesAttractInteraction:()=>o});var e=r(533);class t extends e.ParticlesInteractorBase{constructor(e){super(e)}clear(){}init(){}async interact(t){const o=this.container;void 0===t.attractDistance&&(t.attractDistance=(0,e.getRangeValue)(t.options.move.attract.distance)*o.retina.pixelRatio);const r=t.attractDistance,a=t.getPosition(),i=o.particles.quadTree.queryCircle(a,r);for(const o of i){if(t===o||!o.options.move.attract.enable||o.destroyed||o.spawning)continue;const r=o.getPosition(),{dx:i,dy:n}=(0,e.getDistances)(a,r),s=t.options.move.attract.rotate,c=i/(1e3*s.x),l=n/(1e3*s.y),p=o.size.value/t.size.value,d=1/p;t.velocity.x-=c*p,t.velocity.y-=l*p,o.velocity.x+=c*d,o.velocity.y+=l*d}await Promise.resolve()}isEnabled(e){return e.options.move.attract.enable}reset(){}}async function o(e,o=!0){await e.addInteractor("particlesAttract",(e=>new t(e)),o)}})(),a})()));
@@ -1 +1 @@
1
- /*! tsParticles Attract Particles Interaction v3.0.2 by Matteo Bruni */
1
+ /*! tsParticles Attract Particles Interaction v3.1.0 by Matteo Bruni */
package/umd/Attractor.js CHANGED
@@ -11,6 +11,7 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Attractor = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
+ const attractFactor = 1000, identity = 1;
14
15
  class Attractor extends engine_1.ParticlesInteractorBase {
15
16
  constructor(container) {
16
17
  super(container);
@@ -29,12 +30,13 @@
29
30
  if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
30
31
  continue;
31
32
  }
32
- const pos2 = p2.getPosition(), { dx, dy } = (0, engine_1.getDistances)(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * 1000), ay = dy / (rotate.y * 1000), p1Factor = p2.size.value / p1.size.value, p2Factor = 1 / p1Factor;
33
+ const pos2 = p2.getPosition(), { dx, dy } = (0, engine_1.getDistances)(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;
33
34
  p1.velocity.x -= ax * p1Factor;
34
35
  p1.velocity.y -= ay * p1Factor;
35
36
  p2.velocity.x += ax * p2Factor;
36
37
  p2.velocity.y += ay * p2Factor;
37
38
  }
39
+ await Promise.resolve();
38
40
  }
39
41
  isEnabled(particle) {
40
42
  return particle.options.move.attract.enable;