@tsparticles/plugin-absorbers 3.8.0 → 3.8.1

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.
package/browser/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { AbsorbersPlugin } from "./AbsorbersPlugin.js";
2
2
  export async function loadAbsorbersPlugin(engine, refresh = true) {
3
- engine.checkVersion("3.8.0");
3
+ engine.checkVersion("3.8.1");
4
4
  await engine.addPlugin(new AbsorbersPlugin(engine), refresh);
5
5
  }
6
6
  export * from "./AbsorberContainer.js";
package/cjs/index.js CHANGED
@@ -17,7 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.loadAbsorbersPlugin = loadAbsorbersPlugin;
18
18
  const AbsorbersPlugin_js_1 = require("./AbsorbersPlugin.js");
19
19
  async function loadAbsorbersPlugin(engine, refresh = true) {
20
- engine.checkVersion("3.8.0");
20
+ engine.checkVersion("3.8.1");
21
21
  await engine.addPlugin(new AbsorbersPlugin_js_1.AbsorbersPlugin(engine), refresh);
22
22
  }
23
23
  __exportStar(require("./AbsorberContainer.js"), exports);
package/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { AbsorbersPlugin } from "./AbsorbersPlugin.js";
2
2
  export async function loadAbsorbersPlugin(engine, refresh = true) {
3
- engine.checkVersion("3.8.0");
3
+ engine.checkVersion("3.8.1");
4
4
  await engine.addPlugin(new AbsorbersPlugin(engine), refresh);
5
5
  }
6
6
  export * from "./AbsorberContainer.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/plugin-absorbers",
3
- "version": "3.8.0",
3
+ "version": "3.8.1",
4
4
  "description": "tsParticles absorbers plugin",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -86,7 +86,7 @@
86
86
  "./package.json": "./package.json"
87
87
  },
88
88
  "dependencies": {
89
- "@tsparticles/engine": "3.8.0"
89
+ "@tsparticles/engine": "3.8.1"
90
90
  },
91
91
  "publishConfig": {
92
92
  "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/plugin-absorbers [23 Jan 2025 at 08:59]</title>
6
+ <title>@tsparticles/plugin-absorbers [31 Jan 2025 at 09:08]</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>
@@ -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.8.0
7
+ * v3.8.1
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -104,7 +104,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
104
104
  \*******************************/
105
105
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
106
106
 
107
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbsorberClickMode: () => (/* reexport safe */ _Enums_AbsorberClickMode_js__WEBPACK_IMPORTED_MODULE_1__.AbsorberClickMode),\n/* harmony export */ loadAbsorbersPlugin: () => (/* binding */ loadAbsorbersPlugin)\n/* harmony export */ });\n/* harmony import */ var _AbsorbersPlugin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AbsorbersPlugin.js */ \"./dist/browser/AbsorbersPlugin.js\");\n/* harmony import */ var _Enums_AbsorberClickMode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/AbsorberClickMode.js */ \"./dist/browser/Enums/AbsorberClickMode.js\");\n\nasync function loadAbsorbersPlugin(engine, refresh = true) {\n engine.checkVersion(\"3.8.0\");\n await engine.addPlugin(new _AbsorbersPlugin_js__WEBPACK_IMPORTED_MODULE_0__.AbsorbersPlugin(engine), refresh);\n}\n\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/index.js?");
107
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbsorberClickMode: () => (/* reexport safe */ _Enums_AbsorberClickMode_js__WEBPACK_IMPORTED_MODULE_1__.AbsorberClickMode),\n/* harmony export */ loadAbsorbersPlugin: () => (/* binding */ loadAbsorbersPlugin)\n/* harmony export */ });\n/* harmony import */ var _AbsorbersPlugin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AbsorbersPlugin.js */ \"./dist/browser/AbsorbersPlugin.js\");\n/* harmony import */ var _Enums_AbsorberClickMode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/AbsorberClickMode.js */ \"./dist/browser/Enums/AbsorberClickMode.js\");\n\nasync function loadAbsorbersPlugin(engine, refresh = true) {\n engine.checkVersion(\"3.8.1\");\n await engine.addPlugin(new _AbsorbersPlugin_js__WEBPACK_IMPORTED_MODULE_0__.AbsorbersPlugin(engine), refresh);\n}\n\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/index.js?");
108
108
 
109
109
  /***/ }),
110
110
 
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see tsparticles.plugin.absorbers.min.js.LICENSE.txt */
2
- !function(i,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 s="object"==typeof exports?t(require("@tsparticles/engine")):t(i.window);for(var e in s)("object"==typeof exports?exports:i)[e]=s[e]}}(this,(i=>(()=>{var t={303:t=>{t.exports=i}},s={};function e(i){var o=s[i];if(void 0!==o)return o.exports;var r=s[i]={exports:{}};return t[i](r,r.exports,e),r.exports}e.d=(i,t)=>{for(var s in t)e.o(t,s)&&!e.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:t[s]})},e.o=(i,t)=>Object.prototype.hasOwnProperty.call(i,t),e.r=i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var o={};e.r(o),e.d(o,{AbsorberClickMode:()=>r,loadAbsorbersPlugin:()=>g});var r,n=e(303);class a{constructor(){this.radius=0,this.mass=0}load(i){(0,n.isNull)(i)||(void 0!==i.mass&&(this.mass=i.mass),void 0!==i.radius&&(this.radius=i.radius))}}class c extends n.ValueWithRandom{constructor(){super(),this.density=5,this.value=50,this.limit=new a}load(i){(0,n.isNull)(i)||(super.load(i),void 0!==i.density&&(this.density=i.density),(0,n.isNumber)(i.limit)?this.limit.radius=i.limit:this.limit.load(i.limit))}}class l{constructor(){this.color=new n.OptionsColor,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.size=new c}load(i){(0,n.isNull)(i)||(void 0!==i.color&&(this.color=n.OptionsColor.create(this.color,i.color)),void 0!==i.draggable&&(this.draggable=i.draggable),this.name=i.name,void 0!==i.opacity&&(this.opacity=i.opacity),void 0!==i.position&&(this.position={},void 0!==i.position.x&&(this.position.x=(0,n.setRangeValue)(i.position.x)),void 0!==i.position.y&&(this.position.y=(0,n.setRangeValue)(i.position.y))),void 0!==i.size&&this.size.load(i.size),void 0!==i.destroy&&(this.destroy=i.destroy),void 0!==i.orbits&&(this.orbits=i.orbits))}}!function(i){i.absorber="absorber"}(r||(r={}));const h=2*Math.PI;class d{constructor(i,t,s,e,o){this._calcPosition=()=>{const i=(0,n.calcPositionOrRandomFromSizeRanged)({size:this._container.canvas.size,position:this.options.position});return n.Vector.create(i.x,i.y)},this._updateParticlePosition=(i,t)=>{if(i.destroyed)return;const s=this._container,e=s.canvas.size;if(i.needsNewPosition){const t=(0,n.calcPositionOrRandomFromSize)({size:e});i.position.setTo(t),i.velocity.setTo(i.initialVelocity),i.absorberOrbit=void 0,i.needsNewPosition=!1}if(this.options.orbits){if(void 0===i.absorberOrbit&&(i.absorberOrbit=n.Vector.origin,i.absorberOrbit.length=(0,n.getDistance)(i.getPosition(),this.position),i.absorberOrbit.angle=(0,n.getRandom)()*h),i.absorberOrbit.length<=this.size&&!this.options.destroy){const t=Math.min(e.width,e.height),s=1,o=.1,r=.2;i.absorberOrbit.length=t*(s+((0,n.getRandom)()*r-o))}void 0===i.absorberOrbitDirection&&(i.absorberOrbitDirection=i.velocity.x>=0?n.RotateDirection.clockwise:n.RotateDirection.counterClockwise);const o=i.absorberOrbit.length,r=i.absorberOrbit.angle,a=i.absorberOrbitDirection;i.velocity.setTo(n.Vector.origin);const c={x:a===n.RotateDirection.clockwise?Math.cos:Math.sin,y:a===n.RotateDirection.clockwise?Math.sin:Math.cos};i.position.x=this.position.x+o*c.x(r),i.position.y=this.position.y+o*c.y(r),i.absorberOrbit.length-=t.length,i.absorberOrbit.angle+=(i.retina.moveSpeed??0)*s.retina.pixelRatio/n.percentDenominator*s.retina.reduceFactor}else{const s=n.Vector.origin;s.length=t.length,s.angle=t.angle,i.velocity.addTo(s)}},this._absorbers=i,this._container=t,this._engine=s,this.initialPosition=o?n.Vector.create(o.x,o.y):void 0,e instanceof l?this.options=e:(this.options=new l,this.options.load(e)),this.dragging=!1,this.name=this.options.name,this.opacity=this.options.opacity,this.size=(0,n.getRangeValue)(this.options.size.value)*t.retina.pixelRatio,this.mass=this.size*this.options.size.density*t.retina.reduceFactor;const r=this.options.size.limit;this.limit={radius:r.radius*t.retina.pixelRatio*t.retina.reduceFactor,mass:r.mass},this.color=(0,n.rangeColorToRgb)(this._engine,this.options.color)??{b:0,g:0,r:0},this.position=this.initialPosition?.copy()??this._calcPosition()}attract(i){const t=this._container,s=this.options;if(s.draggable){const i=t.interactivity.mouse;if(i.clicking&&i.downPosition){(0,n.getDistance)(this.position,i.downPosition)<=this.size&&(this.dragging=!0)}else this.dragging=!1;this.dragging&&i.position&&(this.position.x=i.position.x,this.position.y=i.position.y)}const e=i.getPosition(),{dx:o,dy:r,distance:a}=(0,n.getDistances)(this.position,e),c=n.Vector.create(o,r);if(c.length=this.mass/Math.pow(a,2)*t.retina.reduceFactor,a<this.size+i.getRadius()){const e=.033*i.getRadius()*t.retina.pixelRatio;this.size>i.getRadius()&&a<this.size-i.getRadius()||void 0!==i.absorberOrbit&&i.absorberOrbit.length<0?s.destroy?i.destroy():(i.needsNewPosition=!0,this._updateParticlePosition(i,c)):(s.destroy&&(i.size.value-=e),this._updateParticlePosition(i,c)),(this.limit.radius<=0||this.size<this.limit.radius)&&(this.size+=e),(this.limit.mass<=0||this.mass<this.limit.mass)&&(this.mass+=e*this.options.size.density*t.retina.reduceFactor)}else this._updateParticlePosition(i,c)}draw(i){i.translate(this.position.x,this.position.y),i.beginPath(),i.arc(n.originPoint.x,n.originPoint.y,this.size,0,h,!1),i.closePath(),i.fillStyle=(0,n.getStyleFromRgb)(this.color,this.opacity),i.fill()}resize(){const i=this.initialPosition;this.position=i&&(0,n.isPointInside)(i,this._container.canvas.size,n.Vector.origin)?i:this._calcPosition()}}class b{constructor(i,t){this._container=i,this._engine=t,this.array=[],this.absorbers=[],this.interactivityAbsorbers=[],i.getAbsorber=i=>void 0===i||(0,n.isNumber)(i)?this.array[i??0]:this.array.find((t=>t.name===i)),i.addAbsorber=async(i,t)=>this.addAbsorber(i,t)}async addAbsorber(i,t){const s=new d(this,this._container,this._engine,i,t);return this.array.push(s),Promise.resolve(s)}draw(i){for(const t of this.array)t.draw(i)}handleClickMode(i){const t=this.absorbers,s=this.interactivityAbsorbers;if(i===r.absorber){const i=(0,n.itemFromSingleOrMultiple)(s)??(0,n.itemFromSingleOrMultiple)(t),e=this._container.interactivity.mouse.clickPosition;this.addAbsorber(i,e)}}async init(){this.absorbers=this._container.actualOptions.absorbers,this.interactivityAbsorbers=this._container.actualOptions.interactivity.modes.absorbers;const i=(0,n.executeOnSingleOrMultiple)(this.absorbers,(async i=>{await this.addAbsorber(i)}));i instanceof Array?await Promise.all(i):await i}particleUpdate(i){for(const t of this.array)if(t.attract(i),i.destroyed)break}removeAbsorber(i){const t=this.array.indexOf(i);t>=0&&this.array.splice(t,1)}resize(){for(const i of this.array)i.resize()}stop(){this.array=[]}}class p{constructor(i){this.id="absorbers",this._engine=i}async getPlugin(i){return Promise.resolve(new b(i,this._engine))}loadOptions(i,t){(this.needsPlugin(i)||this.needsPlugin(t))&&(t?.absorbers&&(i.absorbers=(0,n.executeOnSingleOrMultiple)(t.absorbers,(i=>{const t=new l;return t.load(i),t}))),i.interactivity.modes.absorbers=(0,n.executeOnSingleOrMultiple)(t?.interactivity?.modes?.absorbers,(i=>{const t=new l;return t.load(i),t})))}needsPlugin(i){if(!i)return!1;const t=i.absorbers;return(0,n.isArray)(t)?!!t.length:!!t||!(!i.interactivity?.events?.onClick?.mode||!(0,n.isInArray)(r.absorber,i.interactivity.events.onClick.mode))}}async function g(i,t=!0){i.checkVersion("3.8.0"),await i.addPlugin(new p(i),t)}return o})()));
2
+ !function(i,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 s="object"==typeof exports?t(require("@tsparticles/engine")):t(i.window);for(var e in s)("object"==typeof exports?exports:i)[e]=s[e]}}(this,(i=>(()=>{var t={303:t=>{t.exports=i}},s={};function e(i){var o=s[i];if(void 0!==o)return o.exports;var r=s[i]={exports:{}};return t[i](r,r.exports,e),r.exports}e.d=(i,t)=>{for(var s in t)e.o(t,s)&&!e.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:t[s]})},e.o=(i,t)=>Object.prototype.hasOwnProperty.call(i,t),e.r=i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var o={};e.r(o),e.d(o,{AbsorberClickMode:()=>r,loadAbsorbersPlugin:()=>g});var r,n=e(303);class a{constructor(){this.radius=0,this.mass=0}load(i){(0,n.isNull)(i)||(void 0!==i.mass&&(this.mass=i.mass),void 0!==i.radius&&(this.radius=i.radius))}}class c extends n.ValueWithRandom{constructor(){super(),this.density=5,this.value=50,this.limit=new a}load(i){(0,n.isNull)(i)||(super.load(i),void 0!==i.density&&(this.density=i.density),(0,n.isNumber)(i.limit)?this.limit.radius=i.limit:this.limit.load(i.limit))}}class l{constructor(){this.color=new n.OptionsColor,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.size=new c}load(i){(0,n.isNull)(i)||(void 0!==i.color&&(this.color=n.OptionsColor.create(this.color,i.color)),void 0!==i.draggable&&(this.draggable=i.draggable),this.name=i.name,void 0!==i.opacity&&(this.opacity=i.opacity),void 0!==i.position&&(this.position={},void 0!==i.position.x&&(this.position.x=(0,n.setRangeValue)(i.position.x)),void 0!==i.position.y&&(this.position.y=(0,n.setRangeValue)(i.position.y))),void 0!==i.size&&this.size.load(i.size),void 0!==i.destroy&&(this.destroy=i.destroy),void 0!==i.orbits&&(this.orbits=i.orbits))}}!function(i){i.absorber="absorber"}(r||(r={}));const h=2*Math.PI;class d{constructor(i,t,s,e,o){this._calcPosition=()=>{const i=(0,n.calcPositionOrRandomFromSizeRanged)({size:this._container.canvas.size,position:this.options.position});return n.Vector.create(i.x,i.y)},this._updateParticlePosition=(i,t)=>{if(i.destroyed)return;const s=this._container,e=s.canvas.size;if(i.needsNewPosition){const t=(0,n.calcPositionOrRandomFromSize)({size:e});i.position.setTo(t),i.velocity.setTo(i.initialVelocity),i.absorberOrbit=void 0,i.needsNewPosition=!1}if(this.options.orbits){if(void 0===i.absorberOrbit&&(i.absorberOrbit=n.Vector.origin,i.absorberOrbit.length=(0,n.getDistance)(i.getPosition(),this.position),i.absorberOrbit.angle=(0,n.getRandom)()*h),i.absorberOrbit.length<=this.size&&!this.options.destroy){const t=Math.min(e.width,e.height),s=1,o=.1,r=.2;i.absorberOrbit.length=t*(s+((0,n.getRandom)()*r-o))}void 0===i.absorberOrbitDirection&&(i.absorberOrbitDirection=i.velocity.x>=0?n.RotateDirection.clockwise:n.RotateDirection.counterClockwise);const o=i.absorberOrbit.length,r=i.absorberOrbit.angle,a=i.absorberOrbitDirection;i.velocity.setTo(n.Vector.origin);const c={x:a===n.RotateDirection.clockwise?Math.cos:Math.sin,y:a===n.RotateDirection.clockwise?Math.sin:Math.cos};i.position.x=this.position.x+o*c.x(r),i.position.y=this.position.y+o*c.y(r),i.absorberOrbit.length-=t.length,i.absorberOrbit.angle+=(i.retina.moveSpeed??0)*s.retina.pixelRatio/n.percentDenominator*s.retina.reduceFactor}else{const s=n.Vector.origin;s.length=t.length,s.angle=t.angle,i.velocity.addTo(s)}},this._absorbers=i,this._container=t,this._engine=s,this.initialPosition=o?n.Vector.create(o.x,o.y):void 0,e instanceof l?this.options=e:(this.options=new l,this.options.load(e)),this.dragging=!1,this.name=this.options.name,this.opacity=this.options.opacity,this.size=(0,n.getRangeValue)(this.options.size.value)*t.retina.pixelRatio,this.mass=this.size*this.options.size.density*t.retina.reduceFactor;const r=this.options.size.limit;this.limit={radius:r.radius*t.retina.pixelRatio*t.retina.reduceFactor,mass:r.mass},this.color=(0,n.rangeColorToRgb)(this._engine,this.options.color)??{b:0,g:0,r:0},this.position=this.initialPosition?.copy()??this._calcPosition()}attract(i){const t=this._container,s=this.options;if(s.draggable){const i=t.interactivity.mouse;if(i.clicking&&i.downPosition){(0,n.getDistance)(this.position,i.downPosition)<=this.size&&(this.dragging=!0)}else this.dragging=!1;this.dragging&&i.position&&(this.position.x=i.position.x,this.position.y=i.position.y)}const e=i.getPosition(),{dx:o,dy:r,distance:a}=(0,n.getDistances)(this.position,e),c=n.Vector.create(o,r);if(c.length=this.mass/Math.pow(a,2)*t.retina.reduceFactor,a<this.size+i.getRadius()){const e=.033*i.getRadius()*t.retina.pixelRatio;this.size>i.getRadius()&&a<this.size-i.getRadius()||void 0!==i.absorberOrbit&&i.absorberOrbit.length<0?s.destroy?i.destroy():(i.needsNewPosition=!0,this._updateParticlePosition(i,c)):(s.destroy&&(i.size.value-=e),this._updateParticlePosition(i,c)),(this.limit.radius<=0||this.size<this.limit.radius)&&(this.size+=e),(this.limit.mass<=0||this.mass<this.limit.mass)&&(this.mass+=e*this.options.size.density*t.retina.reduceFactor)}else this._updateParticlePosition(i,c)}draw(i){i.translate(this.position.x,this.position.y),i.beginPath(),i.arc(n.originPoint.x,n.originPoint.y,this.size,0,h,!1),i.closePath(),i.fillStyle=(0,n.getStyleFromRgb)(this.color,this.opacity),i.fill()}resize(){const i=this.initialPosition;this.position=i&&(0,n.isPointInside)(i,this._container.canvas.size,n.Vector.origin)?i:this._calcPosition()}}class b{constructor(i,t){this._container=i,this._engine=t,this.array=[],this.absorbers=[],this.interactivityAbsorbers=[],i.getAbsorber=i=>void 0===i||(0,n.isNumber)(i)?this.array[i??0]:this.array.find((t=>t.name===i)),i.addAbsorber=async(i,t)=>this.addAbsorber(i,t)}async addAbsorber(i,t){const s=new d(this,this._container,this._engine,i,t);return this.array.push(s),Promise.resolve(s)}draw(i){for(const t of this.array)t.draw(i)}handleClickMode(i){const t=this.absorbers,s=this.interactivityAbsorbers;if(i===r.absorber){const i=(0,n.itemFromSingleOrMultiple)(s)??(0,n.itemFromSingleOrMultiple)(t),e=this._container.interactivity.mouse.clickPosition;this.addAbsorber(i,e)}}async init(){this.absorbers=this._container.actualOptions.absorbers,this.interactivityAbsorbers=this._container.actualOptions.interactivity.modes.absorbers;const i=(0,n.executeOnSingleOrMultiple)(this.absorbers,(async i=>{await this.addAbsorber(i)}));i instanceof Array?await Promise.all(i):await i}particleUpdate(i){for(const t of this.array)if(t.attract(i),i.destroyed)break}removeAbsorber(i){const t=this.array.indexOf(i);t>=0&&this.array.splice(t,1)}resize(){for(const i of this.array)i.resize()}stop(){this.array=[]}}class p{constructor(i){this.id="absorbers",this._engine=i}async getPlugin(i){return Promise.resolve(new b(i,this._engine))}loadOptions(i,t){(this.needsPlugin(i)||this.needsPlugin(t))&&(t?.absorbers&&(i.absorbers=(0,n.executeOnSingleOrMultiple)(t.absorbers,(i=>{const t=new l;return t.load(i),t}))),i.interactivity.modes.absorbers=(0,n.executeOnSingleOrMultiple)(t?.interactivity?.modes?.absorbers,(i=>{const t=new l;return t.load(i),t})))}needsPlugin(i){if(!i)return!1;const t=i.absorbers;return(0,n.isArray)(t)?!!t.length:!!t||!(!i.interactivity?.events?.onClick?.mode||!(0,n.isInArray)(r.absorber,i.interactivity.events.onClick.mode))}}async function g(i,t=!0){i.checkVersion("3.8.1"),await i.addPlugin(new p(i),t)}return o})()));
@@ -1 +1 @@
1
- /*! tsParticles Absorbers Plugin v3.8.0 by Matteo Bruni */
1
+ /*! tsParticles Absorbers Plugin v3.8.1 by Matteo Bruni */
package/umd/index.js CHANGED
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
26
  exports.loadAbsorbersPlugin = loadAbsorbersPlugin;
27
27
  const AbsorbersPlugin_js_1 = require("./AbsorbersPlugin.js");
28
28
  async function loadAbsorbersPlugin(engine, refresh = true) {
29
- engine.checkVersion("3.8.0");
29
+ engine.checkVersion("3.8.1");
30
30
  await engine.addPlugin(new AbsorbersPlugin_js_1.AbsorbersPlugin(engine), refresh);
31
31
  }
32
32
  __exportStar(require("./AbsorberContainer.js"), exports);