@tsparticles/plugin-absorbers 3.2.1 → 3.3.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.
- package/{142.min.js → 289.min.js} +2 -2
- package/289.min.js.LICENSE.txt +1 -0
- package/442.min.js +2 -0
- package/442.min.js.LICENSE.txt +1 -0
- package/504.min.js +2 -0
- package/504.min.js.LICENSE.txt +1 -0
- package/browser/AbsorberInstance.js +1 -2
- package/browser/Absorbers.js +2 -2
- package/cjs/AbsorberInstance.js +1 -2
- package/cjs/Absorbers.js +3 -26
- package/cjs/AbsorbersPlugin.js +1 -24
- package/cjs/index.js +1 -13
- package/dist_browser_AbsorberInstance_js.js +2 -2
- package/dist_browser_AbsorbersPlugin_js.js +1 -1
- package/dist_browser_Absorbers_js.js +2 -2
- package/esm/AbsorberInstance.js +1 -2
- package/esm/Absorbers.js +2 -2
- package/package.json +2 -2
- package/report.html +1 -1
- package/tsparticles.plugin.absorbers.js +2 -2
- package/tsparticles.plugin.absorbers.min.js +1 -1
- package/tsparticles.plugin.absorbers.min.js.LICENSE.txt +1 -1
- package/types/AbsorberInstance.d.ts +1 -1
- package/types/Absorbers.d.ts +1 -1
- package/umd/AbsorberInstance.js +1 -2
- package/umd/Absorbers.js +2 -2
- package/142.min.js.LICENSE.txt +0 -1
- package/28.min.js +0 -2
- package/28.min.js.LICENSE.txt +0 -1
- package/327.min.js +0 -2
- package/327.min.js.LICENSE.txt +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! For license information please see
|
|
2
|
-
(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[
|
|
1
|
+
/*! For license information please see 289.min.js.LICENSE.txt */
|
|
2
|
+
(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[289],{289:(i,s,t)=>{t.d(s,{AbsorbersPlugin:()=>r});var o=t(303),e=t(916);class r{constructor(){this.id="absorbers"}async getPlugin(i){const{Absorbers:s}=await t.e(442).then(t.bind(t,442));return new s(i)}loadOptions(i,s){(this.needsPlugin(i)||this.needsPlugin(s))&&(s?.absorbers&&(i.absorbers=(0,o.executeOnSingleOrMultiple)(s.absorbers,(i=>{const s=new e.h;return s.load(i),s}))),i.interactivity.modes.absorbers=(0,o.executeOnSingleOrMultiple)(s?.interactivity?.modes?.absorbers,(i=>{const s=new e.h;return s.load(i),s})))}needsPlugin(i){if(!i)return!1;const s=i.absorbers;return(0,o.isArray)(s)?!!s.length:!!s||!(!i.interactivity?.events?.onClick?.mode||!(0,o.isInArray)("absorber",i.interactivity.events.onClick.mode))}}},916:(i,s,t)=>{t.d(s,{h:()=>a});var o=t(303);class e{constructor(){this.radius=0,this.mass=0}load(i){i&&(void 0!==i.mass&&(this.mass=i.mass),void 0!==i.radius&&(this.radius=i.radius))}}class r extends o.ValueWithRandom{constructor(){super(),this.density=5,this.value=50,this.limit=new e}load(i){i&&(super.load(i),void 0!==i.density&&(this.density=i.density),(0,o.isNumber)(i.limit)?this.limit.radius=i.limit:this.limit.load(i.limit))}}class a{constructor(){this.color=new o.OptionsColor,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.size=new r}load(i){void 0!==i&&(void 0!==i.color&&(this.color=o.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,o.setRangeValue)(i.position.x)),void 0!==i.position.y&&(this.position.y=(0,o.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))}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tsParticles Absorbers Plugin v3.3.0 by Matteo Bruni */
|
package/442.min.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 442.min.js.LICENSE.txt */
|
|
2
|
+
(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[442],{442:(r,s,t)=>{t.d(s,{Absorbers:()=>a});var i=t(303);class a{constructor(r){this.container=r,this.array=[],this.absorbers=[],this.interactivityAbsorbers=[],r.getAbsorber=r=>void 0===r||(0,i.isNumber)(r)?this.array[r??0]:this.array.find((s=>s.name===r)),r.addAbsorber=async(r,s)=>this.addAbsorber(r,s)}async addAbsorber(r,s){const{AbsorberInstance:i}=await t.e(504).then(t.bind(t,504)),a=new i(this,this.container,r,s);return this.array.push(a),a}draw(r){for(const s of this.array)s.draw(r)}handleClickMode(r){const s=this.absorbers,t=this.interactivityAbsorbers;if("absorber"===r){const r=(0,i.itemFromSingleOrMultiple)(t)??(0,i.itemFromSingleOrMultiple)(s),a=this.container.interactivity.mouse.clickPosition;this.addAbsorber(r,a)}}async init(){this.absorbers=this.container.actualOptions.absorbers,this.interactivityAbsorbers=this.container.actualOptions.interactivity.modes.absorbers;const r=(0,i.executeOnSingleOrMultiple)(this.absorbers,(async r=>{await this.addAbsorber(r)}));r instanceof Array?await Promise.all(r):await r}particleUpdate(r){for(const s of this.array)if(s.attract(r),r.destroyed)break}removeAbsorber(r){const s=this.array.indexOf(r);s>=0&&this.array.splice(s,1)}resize(){for(const r of this.array)r.resize()}stop(){this.array=[]}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tsParticles Absorbers Plugin v3.3.0 by Matteo Bruni */
|
package/504.min.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 504.min.js.LICENSE.txt */
|
|
2
|
+
(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[504],{504:(i,t,s)=>{s.d(t,{AbsorberInstance:()=>c});var o=s(303),e=s(916);const n=0,r=0,a=2*Math.PI;class c{constructor(i,t,s,n){this.absorbers=i,this.container=t,this._calcPosition=()=>{const i=(0,o.calcPositionOrRandomFromSizeRanged)({size:this.container.canvas.size,position:this.options.position});return o.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,o.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=o.Vector.origin,i.absorberOrbit.length=(0,o.getDistance)(i.getPosition(),this.position),i.absorberOrbit.angle=(0,o.getRandom)()*a),i.absorberOrbit.length<=this.size&&!this.options.destroy){const t=Math.min(e.width,e.height),s=1,n=.1,r=.2;i.absorberOrbit.length=t*(s+((0,o.getRandom)()*r-n))}void 0===i.absorberOrbitDirection&&(i.absorberOrbitDirection=i.velocity.x>=0?"clockwise":"counter-clockwise");const n=i.absorberOrbit.length,r=i.absorberOrbit.angle,c=i.absorberOrbitDirection;i.velocity.setTo(o.Vector.origin);const h={x:"clockwise"===c?Math.cos:Math.sin,y:"clockwise"===c?Math.sin:Math.cos};i.position.x=this.position.x+n*h.x(r),i.position.y=this.position.y+n*h.y(r),i.absorberOrbit.length-=t.length,i.absorberOrbit.angle+=(i.retina.moveSpeed??0)*s.retina.pixelRatio/o.percentDenominator*s.retina.reduceFactor}else{const s=o.Vector.origin;s.length=t.length,s.angle=t.angle,i.velocity.addTo(s)}},this.initialPosition=n?o.Vector.create(n.x,n.y):void 0,s instanceof e.h?this.options=s:(this.options=new e.h,this.options.load(s)),this.dragging=!1,this.name=this.options.name,this.opacity=this.options.opacity,this.size=(0,o.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,o.rangeColorToRgb)(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,o.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:n,dy:r,distance:a}=(0,o.getDistances)(this.position,e),c=o.Vector.create(n,r);if(c.length=this.mass/Math.pow(a,2)*t.retina.reduceFactor,a<this.size+i.getRadius()){const o=.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-=o),this._updateParticlePosition(i,c)),(this.limit.radius<=0||this.size<this.limit.radius)&&(this.size+=o),(this.limit.mass<=0||this.mass<this.limit.mass)&&(this.mass+=o*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,r,this.size,0,a,!1),i.closePath(),i.fillStyle=(0,o.getStyleFromRgb)(this.color,this.opacity),i.fill()}resize(){const i=this.initialPosition;this.position=i&&(0,o.isPointInside)(i,this.container.canvas.size,o.Vector.origin)?i:this._calcPosition()}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tsParticles Absorbers Plugin v3.3.0 by Matteo Bruni */
|
|
@@ -135,14 +135,13 @@ export class AbsorberInstance {
|
|
|
135
135
|
this._updateParticlePosition(particle, v);
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
|
|
138
|
+
draw(context) {
|
|
139
139
|
context.translate(this.position.x, this.position.y);
|
|
140
140
|
context.beginPath();
|
|
141
141
|
context.arc(origin.x, origin.y, this.size, minAngle, maxAngle, false);
|
|
142
142
|
context.closePath();
|
|
143
143
|
context.fillStyle = getStyleFromRgb(this.color, this.opacity);
|
|
144
144
|
context.fill();
|
|
145
|
-
await Promise.resolve();
|
|
146
145
|
}
|
|
147
146
|
resize() {
|
|
148
147
|
const initialPosition = this.initialPosition;
|
package/browser/Absorbers.js
CHANGED
|
@@ -16,9 +16,9 @@ export class Absorbers {
|
|
|
16
16
|
this.array.push(absorber);
|
|
17
17
|
return absorber;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
draw(context) {
|
|
20
20
|
for (const absorber of this.array) {
|
|
21
|
-
|
|
21
|
+
absorber.draw(context);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
handleClickMode(mode) {
|
package/cjs/AbsorberInstance.js
CHANGED
|
@@ -138,14 +138,13 @@ class AbsorberInstance {
|
|
|
138
138
|
this._updateParticlePosition(particle, v);
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
|
|
141
|
+
draw(context) {
|
|
142
142
|
context.translate(this.position.x, this.position.y);
|
|
143
143
|
context.beginPath();
|
|
144
144
|
context.arc(origin.x, origin.y, this.size, minAngle, maxAngle, false);
|
|
145
145
|
context.closePath();
|
|
146
146
|
context.fillStyle = (0, engine_1.getStyleFromRgb)(this.color, this.opacity);
|
|
147
147
|
context.fill();
|
|
148
|
-
await Promise.resolve();
|
|
149
148
|
}
|
|
150
149
|
resize() {
|
|
151
150
|
const initialPosition = this.initialPosition;
|
package/cjs/Absorbers.js
CHANGED
|
@@ -1,27 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.Absorbers = void 0;
|
|
27
4
|
const engine_1 = require("@tsparticles/engine");
|
|
@@ -38,13 +15,13 @@ class Absorbers {
|
|
|
38
15
|
container.addAbsorber = async (options, position) => this.addAbsorber(options, position);
|
|
39
16
|
}
|
|
40
17
|
async addAbsorber(options, position) {
|
|
41
|
-
const { AbsorberInstance } = await
|
|
18
|
+
const { AbsorberInstance } = await import("./AbsorberInstance.js"), absorber = new AbsorberInstance(this, this.container, options, position);
|
|
42
19
|
this.array.push(absorber);
|
|
43
20
|
return absorber;
|
|
44
21
|
}
|
|
45
|
-
|
|
22
|
+
draw(context) {
|
|
46
23
|
for (const absorber of this.array) {
|
|
47
|
-
|
|
24
|
+
absorber.draw(context);
|
|
48
25
|
}
|
|
49
26
|
}
|
|
50
27
|
handleClickMode(mode) {
|
package/cjs/AbsorbersPlugin.js
CHANGED
|
@@ -1,27 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.AbsorbersPlugin = void 0;
|
|
27
4
|
const engine_1 = require("@tsparticles/engine");
|
|
@@ -31,7 +8,7 @@ class AbsorbersPlugin {
|
|
|
31
8
|
this.id = "absorbers";
|
|
32
9
|
}
|
|
33
10
|
async getPlugin(container) {
|
|
34
|
-
const { Absorbers } = await
|
|
11
|
+
const { Absorbers } = await import("./Absorbers.js");
|
|
35
12
|
return new Absorbers(container);
|
|
36
13
|
}
|
|
37
14
|
loadOptions(options, source) {
|
package/cjs/index.js
CHANGED
|
@@ -10,25 +10,13 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
12
|
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
26
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
15
|
};
|
|
28
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
17
|
exports.loadAbsorbersPlugin = void 0;
|
|
30
18
|
async function loadAbsorbersPlugin(engine, refresh = true) {
|
|
31
|
-
const { AbsorbersPlugin } = await
|
|
19
|
+
const { AbsorbersPlugin } = await import("./AbsorbersPlugin.js");
|
|
32
20
|
await engine.addPlugin(new AbsorbersPlugin(), refresh);
|
|
33
21
|
}
|
|
34
22
|
exports.loadAbsorbersPlugin = loadAbsorbersPlugin;
|
|
@@ -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.
|
|
7
|
+
* v3.3.0
|
|
8
8
|
*/
|
|
9
9
|
"use strict";
|
|
10
10
|
/*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
\******************************************/
|
|
24
24
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
25
25
|
|
|
26
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbsorberInstance: () => (/* binding */ AbsorberInstance)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Options_Classes_Absorber_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Options/Classes/Absorber.js */ \"./dist/browser/Options/Classes/Absorber.js\");\n\n\nconst squareExp = 2,\n absorbFactor = 0.033,\n minOrbitLength = 0,\n minRadius = 0,\n minMass = 0,\n origin = {\n x: 0,\n y: 0\n },\n minAngle = 0,\n double = 2,\n maxAngle = Math.PI * double,\n minVelocity = 0;\nclass AbsorberInstance {\n constructor(absorbers, container, options, position) {\n this.absorbers = absorbers;\n this.container = container;\n this._calcPosition = () => {\n const exactPosition = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.calcPositionOrRandomFromSizeRanged)({\n size: this.container.canvas.size,\n position: this.options.position\n });\n return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(exactPosition.x, exactPosition.y);\n };\n this._updateParticlePosition = (particle, v) => {\n if (particle.destroyed) {\n return;\n }\n const container = this.container,\n canvasSize = container.canvas.size;\n if (particle.needsNewPosition) {\n const newPosition = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.calcPositionOrRandomFromSize)({\n size: canvasSize\n });\n particle.position.setTo(newPosition);\n particle.velocity.setTo(particle.initialVelocity);\n particle.absorberOrbit = undefined;\n particle.needsNewPosition = false;\n }\n if (this.options.orbits) {\n if (particle.absorberOrbit === undefined) {\n particle.absorberOrbit = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n particle.absorberOrbit.length = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistance)(particle.getPosition(), this.position);\n particle.absorberOrbit.angle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * maxAngle;\n }\n if (particle.absorberOrbit.length <= this.size && !this.options.destroy) {\n const minSize = Math.min(canvasSize.width, canvasSize.height),\n offset = 1,\n randomOffset = 0.1,\n randomFactor = 0.2;\n particle.absorberOrbit.length = minSize * (offset + ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * randomFactor - randomOffset));\n }\n if (particle.absorberOrbitDirection === undefined) {\n particle.absorberOrbitDirection = particle.velocity.x >= minVelocity ? \"clockwise\" : \"counter-clockwise\";\n }\n const orbitRadius = particle.absorberOrbit.length,\n orbitAngle = particle.absorberOrbit.angle,\n orbitDirection = particle.absorberOrbitDirection;\n particle.velocity.setTo(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin);\n const updateFunc = {\n x: orbitDirection === \"clockwise\" ? Math.cos : Math.sin,\n y: orbitDirection === \"clockwise\" ? Math.sin : Math.cos\n };\n particle.position.x = this.position.x + orbitRadius * updateFunc.x(orbitAngle);\n particle.position.y = this.position.y + orbitRadius * updateFunc.y(orbitAngle);\n particle.absorberOrbit.length -= v.length;\n particle.absorberOrbit.angle += (particle.retina.moveSpeed ?? minVelocity) * container.retina.pixelRatio / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.percentDenominator * container.retina.reduceFactor;\n } else {\n const addV = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n addV.length = v.length;\n addV.angle = v.angle;\n particle.velocity.addTo(addV);\n }\n };\n this.initialPosition = position ? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(position.x, position.y) : undefined;\n if (options instanceof _Options_Classes_Absorber_js__WEBPACK_IMPORTED_MODULE_1__.Absorber) {\n this.options = options;\n } else {\n this.options = new _Options_Classes_Absorber_js__WEBPACK_IMPORTED_MODULE_1__.Absorber();\n this.options.load(options);\n }\n this.dragging = false;\n this.name = this.options.name;\n this.opacity = this.options.opacity;\n this.size = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(this.options.size.value) * container.retina.pixelRatio;\n this.mass = this.size * this.options.size.density * container.retina.reduceFactor;\n const limit = this.options.size.limit;\n this.limit = {\n radius: limit.radius * container.retina.pixelRatio * container.retina.reduceFactor,\n mass: limit.mass\n };\n this.color = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rangeColorToRgb)(this.options.color) ?? {\n b: 0,\n g: 0,\n r: 0\n };\n this.position = this.initialPosition?.copy() ?? this._calcPosition();\n }\n attract(particle) {\n const container = this.container,\n options = this.options;\n if (options.draggable) {\n const mouse = container.interactivity.mouse;\n if (mouse.clicking && mouse.downPosition) {\n const mouseDist = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistance)(this.position, mouse.downPosition);\n if (mouseDist <= this.size) {\n this.dragging = true;\n }\n } else {\n this.dragging = false;\n }\n if (this.dragging && mouse.position) {\n this.position.x = mouse.position.x;\n this.position.y = mouse.position.y;\n }\n }\n const pos = particle.getPosition(),\n {\n dx,\n dy,\n distance\n } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(this.position, pos),\n v = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(dx, dy);\n v.length = this.mass / Math.pow(distance, squareExp) * container.retina.reduceFactor;\n if (distance < this.size + particle.getRadius()) {\n const sizeFactor = particle.getRadius() * absorbFactor * container.retina.pixelRatio;\n if (this.size > particle.getRadius() && distance < this.size - particle.getRadius() || particle.absorberOrbit !== undefined && particle.absorberOrbit.length < minOrbitLength) {\n if (options.destroy) {\n particle.destroy();\n } else {\n particle.needsNewPosition = true;\n this._updateParticlePosition(particle, v);\n }\n } else {\n if (options.destroy) {\n particle.size.value -= sizeFactor;\n }\n this._updateParticlePosition(particle, v);\n }\n if (this.limit.radius <= minRadius || this.size < this.limit.radius) {\n this.size += sizeFactor;\n }\n if (this.limit.mass <= minMass || this.mass < this.limit.mass) {\n this.mass += sizeFactor * this.options.size.density * container.retina.reduceFactor;\n }\n } else {\n this._updateParticlePosition(particle, v);\n }\n }\n
|
|
26
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbsorberInstance: () => (/* binding */ AbsorberInstance)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Options_Classes_Absorber_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Options/Classes/Absorber.js */ \"./dist/browser/Options/Classes/Absorber.js\");\n\n\nconst squareExp = 2,\n absorbFactor = 0.033,\n minOrbitLength = 0,\n minRadius = 0,\n minMass = 0,\n origin = {\n x: 0,\n y: 0\n },\n minAngle = 0,\n double = 2,\n maxAngle = Math.PI * double,\n minVelocity = 0;\nclass AbsorberInstance {\n constructor(absorbers, container, options, position) {\n this.absorbers = absorbers;\n this.container = container;\n this._calcPosition = () => {\n const exactPosition = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.calcPositionOrRandomFromSizeRanged)({\n size: this.container.canvas.size,\n position: this.options.position\n });\n return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(exactPosition.x, exactPosition.y);\n };\n this._updateParticlePosition = (particle, v) => {\n if (particle.destroyed) {\n return;\n }\n const container = this.container,\n canvasSize = container.canvas.size;\n if (particle.needsNewPosition) {\n const newPosition = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.calcPositionOrRandomFromSize)({\n size: canvasSize\n });\n particle.position.setTo(newPosition);\n particle.velocity.setTo(particle.initialVelocity);\n particle.absorberOrbit = undefined;\n particle.needsNewPosition = false;\n }\n if (this.options.orbits) {\n if (particle.absorberOrbit === undefined) {\n particle.absorberOrbit = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n particle.absorberOrbit.length = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistance)(particle.getPosition(), this.position);\n particle.absorberOrbit.angle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * maxAngle;\n }\n if (particle.absorberOrbit.length <= this.size && !this.options.destroy) {\n const minSize = Math.min(canvasSize.width, canvasSize.height),\n offset = 1,\n randomOffset = 0.1,\n randomFactor = 0.2;\n particle.absorberOrbit.length = minSize * (offset + ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * randomFactor - randomOffset));\n }\n if (particle.absorberOrbitDirection === undefined) {\n particle.absorberOrbitDirection = particle.velocity.x >= minVelocity ? \"clockwise\" : \"counter-clockwise\";\n }\n const orbitRadius = particle.absorberOrbit.length,\n orbitAngle = particle.absorberOrbit.angle,\n orbitDirection = particle.absorberOrbitDirection;\n particle.velocity.setTo(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin);\n const updateFunc = {\n x: orbitDirection === \"clockwise\" ? Math.cos : Math.sin,\n y: orbitDirection === \"clockwise\" ? Math.sin : Math.cos\n };\n particle.position.x = this.position.x + orbitRadius * updateFunc.x(orbitAngle);\n particle.position.y = this.position.y + orbitRadius * updateFunc.y(orbitAngle);\n particle.absorberOrbit.length -= v.length;\n particle.absorberOrbit.angle += (particle.retina.moveSpeed ?? minVelocity) * container.retina.pixelRatio / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.percentDenominator * container.retina.reduceFactor;\n } else {\n const addV = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n addV.length = v.length;\n addV.angle = v.angle;\n particle.velocity.addTo(addV);\n }\n };\n this.initialPosition = position ? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(position.x, position.y) : undefined;\n if (options instanceof _Options_Classes_Absorber_js__WEBPACK_IMPORTED_MODULE_1__.Absorber) {\n this.options = options;\n } else {\n this.options = new _Options_Classes_Absorber_js__WEBPACK_IMPORTED_MODULE_1__.Absorber();\n this.options.load(options);\n }\n this.dragging = false;\n this.name = this.options.name;\n this.opacity = this.options.opacity;\n this.size = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(this.options.size.value) * container.retina.pixelRatio;\n this.mass = this.size * this.options.size.density * container.retina.reduceFactor;\n const limit = this.options.size.limit;\n this.limit = {\n radius: limit.radius * container.retina.pixelRatio * container.retina.reduceFactor,\n mass: limit.mass\n };\n this.color = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rangeColorToRgb)(this.options.color) ?? {\n b: 0,\n g: 0,\n r: 0\n };\n this.position = this.initialPosition?.copy() ?? this._calcPosition();\n }\n attract(particle) {\n const container = this.container,\n options = this.options;\n if (options.draggable) {\n const mouse = container.interactivity.mouse;\n if (mouse.clicking && mouse.downPosition) {\n const mouseDist = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistance)(this.position, mouse.downPosition);\n if (mouseDist <= this.size) {\n this.dragging = true;\n }\n } else {\n this.dragging = false;\n }\n if (this.dragging && mouse.position) {\n this.position.x = mouse.position.x;\n this.position.y = mouse.position.y;\n }\n }\n const pos = particle.getPosition(),\n {\n dx,\n dy,\n distance\n } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(this.position, pos),\n v = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(dx, dy);\n v.length = this.mass / Math.pow(distance, squareExp) * container.retina.reduceFactor;\n if (distance < this.size + particle.getRadius()) {\n const sizeFactor = particle.getRadius() * absorbFactor * container.retina.pixelRatio;\n if (this.size > particle.getRadius() && distance < this.size - particle.getRadius() || particle.absorberOrbit !== undefined && particle.absorberOrbit.length < minOrbitLength) {\n if (options.destroy) {\n particle.destroy();\n } else {\n particle.needsNewPosition = true;\n this._updateParticlePosition(particle, v);\n }\n } else {\n if (options.destroy) {\n particle.size.value -= sizeFactor;\n }\n this._updateParticlePosition(particle, v);\n }\n if (this.limit.radius <= minRadius || this.size < this.limit.radius) {\n this.size += sizeFactor;\n }\n if (this.limit.mass <= minMass || this.mass < this.limit.mass) {\n this.mass += sizeFactor * this.options.size.density * container.retina.reduceFactor;\n }\n } else {\n this._updateParticlePosition(particle, v);\n }\n }\n draw(context) {\n context.translate(this.position.x, this.position.y);\n context.beginPath();\n context.arc(origin.x, origin.y, this.size, minAngle, maxAngle, false);\n context.closePath();\n context.fillStyle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(this.color, this.opacity);\n context.fill();\n }\n resize() {\n const initialPosition = this.initialPosition;\n this.position = initialPosition && (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isPointInside)(initialPosition, this.container.canvas.size, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin) ? initialPosition : this._calcPosition();\n }\n}\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/AbsorberInstance.js?");
|
|
27
27
|
|
|
28
28
|
/***/ })
|
|
29
29
|
|
|
@@ -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.
|
|
7
|
+
* v3.3.0
|
|
8
8
|
*/
|
|
9
9
|
"use strict";
|
|
10
10
|
/*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
\***********************************/
|
|
24
24
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
25
25
|
|
|
26
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Absorbers: () => (/* binding */ Absorbers)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n\nconst defaultIndex = 0;\nclass Absorbers {\n constructor(container) {\n this.container = container;\n this.array = [];\n this.absorbers = [];\n this.interactivityAbsorbers = [];\n container.getAbsorber = idxOrName => idxOrName === undefined || (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNumber)(idxOrName) ? this.array[idxOrName ?? defaultIndex] : this.array.find(t => t.name === idxOrName);\n container.addAbsorber = async (options, position) => this.addAbsorber(options, position);\n }\n async addAbsorber(options, position) {\n const {\n AbsorberInstance\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_AbsorberInstance_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorberInstance.js */ \"./dist/browser/AbsorberInstance.js\")),\n absorber = new AbsorberInstance(this, this.container, options, position);\n this.array.push(absorber);\n return absorber;\n }\n
|
|
26
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Absorbers: () => (/* binding */ Absorbers)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n\nconst defaultIndex = 0;\nclass Absorbers {\n constructor(container) {\n this.container = container;\n this.array = [];\n this.absorbers = [];\n this.interactivityAbsorbers = [];\n container.getAbsorber = idxOrName => idxOrName === undefined || (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNumber)(idxOrName) ? this.array[idxOrName ?? defaultIndex] : this.array.find(t => t.name === idxOrName);\n container.addAbsorber = async (options, position) => this.addAbsorber(options, position);\n }\n async addAbsorber(options, position) {\n const {\n AbsorberInstance\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_AbsorberInstance_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorberInstance.js */ \"./dist/browser/AbsorberInstance.js\")),\n absorber = new AbsorberInstance(this, this.container, options, position);\n this.array.push(absorber);\n return absorber;\n }\n draw(context) {\n for (const absorber of this.array) {\n absorber.draw(context);\n }\n }\n handleClickMode(mode) {\n const absorberOptions = this.absorbers,\n modeAbsorbers = this.interactivityAbsorbers;\n if (mode === \"absorber\") {\n const absorbersModeOptions = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromSingleOrMultiple)(modeAbsorbers),\n absorbersOptions = absorbersModeOptions ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromSingleOrMultiple)(absorberOptions),\n aPosition = this.container.interactivity.mouse.clickPosition;\n void this.addAbsorber(absorbersOptions, aPosition);\n }\n }\n async init() {\n this.absorbers = this.container.actualOptions.absorbers;\n this.interactivityAbsorbers = this.container.actualOptions.interactivity.modes.absorbers;\n const promises = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(this.absorbers, async absorber => {\n await this.addAbsorber(absorber);\n });\n if (promises instanceof Array) {\n await Promise.all(promises);\n } else {\n await promises;\n }\n }\n particleUpdate(particle) {\n for (const absorber of this.array) {\n absorber.attract(particle);\n if (particle.destroyed) {\n break;\n }\n }\n }\n removeAbsorber(absorber) {\n const index = this.array.indexOf(absorber),\n deleteCount = 1;\n if (index >= defaultIndex) {\n this.array.splice(index, deleteCount);\n }\n }\n resize() {\n for (const absorber of this.array) {\n absorber.resize();\n }\n }\n stop() {\n this.array = [];\n }\n}\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/Absorbers.js?");
|
|
27
27
|
|
|
28
28
|
/***/ })
|
|
29
29
|
|
package/esm/AbsorberInstance.js
CHANGED
|
@@ -135,14 +135,13 @@ export class AbsorberInstance {
|
|
|
135
135
|
this._updateParticlePosition(particle, v);
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
|
|
138
|
+
draw(context) {
|
|
139
139
|
context.translate(this.position.x, this.position.y);
|
|
140
140
|
context.beginPath();
|
|
141
141
|
context.arc(origin.x, origin.y, this.size, minAngle, maxAngle, false);
|
|
142
142
|
context.closePath();
|
|
143
143
|
context.fillStyle = getStyleFromRgb(this.color, this.opacity);
|
|
144
144
|
context.fill();
|
|
145
|
-
await Promise.resolve();
|
|
146
145
|
}
|
|
147
146
|
resize() {
|
|
148
147
|
const initialPosition = this.initialPosition;
|
package/esm/Absorbers.js
CHANGED
|
@@ -16,9 +16,9 @@ export class Absorbers {
|
|
|
16
16
|
this.array.push(absorber);
|
|
17
17
|
return absorber;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
draw(context) {
|
|
20
20
|
for (const absorber of this.array) {
|
|
21
|
-
|
|
21
|
+
absorber.draw(context);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
handleClickMode(mode) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsparticles/plugin-absorbers",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
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.
|
|
89
|
+
"@tsparticles/engine": "^3.3.0"
|
|
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 [
|
|
6
|
+
<title>@tsparticles/plugin-absorbers [27 Feb 2024 at 12:16]</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.
|
|
7
|
+
* v3.3.0
|
|
8
8
|
*/
|
|
9
9
|
/*
|
|
10
10
|
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
|
@@ -210,7 +210,7 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_engine__;
|
|
|
210
210
|
/******/ var scripts = document.getElementsByTagName("script");
|
|
211
211
|
/******/ if(scripts.length) {
|
|
212
212
|
/******/ var i = scripts.length - 1;
|
|
213
|
-
/******/ while (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;
|
|
213
|
+
/******/ while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;
|
|
214
214
|
/******/ }
|
|
215
215
|
/******/ }
|
|
216
216
|
/******/ }
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see tsparticles.plugin.absorbers.min.js.LICENSE.txt */
|
|
2
|
-
!function(e,
|
|
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 r="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(this,(e=>(()=>{var t,r,o={303:t=>{t.exports=e}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return o[e](r,r.exports,i),r.exports}i.m=o,i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>e+".min.js",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="@tsparticles/plugin-absorbers:",i.l=(e,o,n,a)=>{if(t[e])t[e].push(o);else{var s,l;if(void 0!==n)for(var u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var p=u[c];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==r+n){s=p;break}}s||(l=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",r+n),s.src=e),t[e]=[o];var d=(r,o)=>{s.onerror=s.onload=null,clearTimeout(f);var n=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),n&&n.forEach((e=>e(o))),r)return r(o)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),l&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var o=r.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=r[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{var e={425:0};i.f.j=(t,r)=>{var o=i.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else{var n=new Promise(((r,n)=>o=e[t]=[r,n]));r.push(o[2]=n);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+n+": "+a+")",s.name="ChunkLoadError",s.type=n,s.request=a,o[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var o,n,a=r[0],s=r[1],l=r[2],u=0;if(a.some((t=>0!==e[t]))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)l(i)}for(t&&t(r);u<a.length;u++)n=a[u],i.o(e,n)&&e[n]&&e[n][0](),e[n]=0},r=this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var a={};return(()=>{async function e(e,t=!0){const{AbsorbersPlugin:r}=await i.e(289).then(i.bind(i,289));await e.addPlugin(new r,t)}i.r(a),i.d(a,{loadAbsorbersPlugin:()=>e})})(),a})()));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! tsParticles Absorbers Plugin v3.
|
|
1
|
+
/*! tsParticles Absorbers Plugin v3.3.0 by Matteo Bruni */
|
|
@@ -22,7 +22,7 @@ export declare class AbsorberInstance {
|
|
|
22
22
|
private readonly options;
|
|
23
23
|
constructor(absorbers: Absorbers, container: Container, options: RecursivePartial<IAbsorber>, position?: ICoordinates);
|
|
24
24
|
attract(particle: OrbitingParticle): void;
|
|
25
|
-
draw(context: CanvasRenderingContext2D):
|
|
25
|
+
draw(context: CanvasRenderingContext2D): void;
|
|
26
26
|
resize(): void;
|
|
27
27
|
private readonly _calcPosition;
|
|
28
28
|
private readonly _updateParticlePosition;
|
package/types/Absorbers.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare class Absorbers implements IContainerPlugin {
|
|
|
10
10
|
interactivityAbsorbers: SingleOrMultiple<Absorber>;
|
|
11
11
|
constructor(container: AbsorberContainer);
|
|
12
12
|
addAbsorber(options: RecursivePartial<IAbsorber>, position?: ICoordinates): Promise<AbsorberInstance>;
|
|
13
|
-
draw(context: CanvasRenderingContext2D):
|
|
13
|
+
draw(context: CanvasRenderingContext2D): void;
|
|
14
14
|
handleClickMode(mode: string): void;
|
|
15
15
|
init(): Promise<void>;
|
|
16
16
|
particleUpdate(particle: Particle): void;
|
package/umd/AbsorberInstance.js
CHANGED
|
@@ -147,14 +147,13 @@
|
|
|
147
147
|
this._updateParticlePosition(particle, v);
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
|
-
|
|
150
|
+
draw(context) {
|
|
151
151
|
context.translate(this.position.x, this.position.y);
|
|
152
152
|
context.beginPath();
|
|
153
153
|
context.arc(origin.x, origin.y, this.size, minAngle, maxAngle, false);
|
|
154
154
|
context.closePath();
|
|
155
155
|
context.fillStyle = (0, engine_1.getStyleFromRgb)(this.color, this.opacity);
|
|
156
156
|
context.fill();
|
|
157
|
-
await Promise.resolve();
|
|
158
157
|
}
|
|
159
158
|
resize() {
|
|
160
159
|
const initialPosition = this.initialPosition;
|
package/umd/Absorbers.js
CHANGED
|
@@ -52,9 +52,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
52
52
|
this.array.push(absorber);
|
|
53
53
|
return absorber;
|
|
54
54
|
}
|
|
55
|
-
|
|
55
|
+
draw(context) {
|
|
56
56
|
for (const absorber of this.array) {
|
|
57
|
-
|
|
57
|
+
absorber.draw(context);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
handleClickMode(mode) {
|
package/142.min.js.LICENSE.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tsParticles Absorbers Plugin v3.2.1 by Matteo Bruni */
|
package/28.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 28.min.js.LICENSE.txt */
|
|
2
|
-
(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[28],{28:(i,t,s)=>{s.d(t,{AbsorberInstance:()=>c});var o=s(533),e=s(806);const n=0,r=0,a=2*Math.PI;class c{constructor(i,t,s,n){this.absorbers=i,this.container=t,this._calcPosition=()=>{const i=(0,o.calcPositionOrRandomFromSizeRanged)({size:this.container.canvas.size,position:this.options.position});return o.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,o.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=o.Vector.origin,i.absorberOrbit.length=(0,o.getDistance)(i.getPosition(),this.position),i.absorberOrbit.angle=(0,o.getRandom)()*a),i.absorberOrbit.length<=this.size&&!this.options.destroy){const t=Math.min(e.width,e.height),s=1,n=.1,r=.2;i.absorberOrbit.length=t*(s+((0,o.getRandom)()*r-n))}void 0===i.absorberOrbitDirection&&(i.absorberOrbitDirection=i.velocity.x>=0?"clockwise":"counter-clockwise");const n=i.absorberOrbit.length,r=i.absorberOrbit.angle,c=i.absorberOrbitDirection;i.velocity.setTo(o.Vector.origin);const h={x:"clockwise"===c?Math.cos:Math.sin,y:"clockwise"===c?Math.sin:Math.cos};i.position.x=this.position.x+n*h.x(r),i.position.y=this.position.y+n*h.y(r),i.absorberOrbit.length-=t.length,i.absorberOrbit.angle+=(i.retina.moveSpeed??0)*s.retina.pixelRatio/o.percentDenominator*s.retina.reduceFactor}else{const s=o.Vector.origin;s.length=t.length,s.angle=t.angle,i.velocity.addTo(s)}},this.initialPosition=n?o.Vector.create(n.x,n.y):void 0,s instanceof e.C?this.options=s:(this.options=new e.C,this.options.load(s)),this.dragging=!1,this.name=this.options.name,this.opacity=this.options.opacity,this.size=(0,o.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,o.rangeColorToRgb)(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,o.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:n,dy:r,distance:a}=(0,o.getDistances)(this.position,e),c=o.Vector.create(n,r);if(c.length=this.mass/Math.pow(a,2)*t.retina.reduceFactor,a<this.size+i.getRadius()){const o=.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-=o),this._updateParticlePosition(i,c)),(this.limit.radius<=0||this.size<this.limit.radius)&&(this.size+=o),(this.limit.mass<=0||this.mass<this.limit.mass)&&(this.mass+=o*this.options.size.density*t.retina.reduceFactor)}else this._updateParticlePosition(i,c)}async draw(i){i.translate(this.position.x,this.position.y),i.beginPath(),i.arc(n,r,this.size,0,a,!1),i.closePath(),i.fillStyle=(0,o.getStyleFromRgb)(this.color,this.opacity),i.fill(),await Promise.resolve()}resize(){const i=this.initialPosition;this.position=i&&(0,o.isPointInside)(i,this.container.canvas.size,o.Vector.origin)?i:this._calcPosition()}}}}]);
|
package/28.min.js.LICENSE.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tsParticles Absorbers Plugin v3.2.1 by Matteo Bruni */
|
package/327.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 327.min.js.LICENSE.txt */
|
|
2
|
-
(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[327],{327:(r,s,t)=>{t.d(s,{Absorbers:()=>a});var i=t(533);class a{constructor(r){this.container=r,this.array=[],this.absorbers=[],this.interactivityAbsorbers=[],r.getAbsorber=r=>void 0===r||(0,i.isNumber)(r)?this.array[r??0]:this.array.find((s=>s.name===r)),r.addAbsorber=async(r,s)=>this.addAbsorber(r,s)}async addAbsorber(r,s){const{AbsorberInstance:i}=await t.e(28).then(t.bind(t,28)),a=new i(this,this.container,r,s);return this.array.push(a),a}async draw(r){for(const s of this.array)await s.draw(r)}handleClickMode(r){const s=this.absorbers,t=this.interactivityAbsorbers;if("absorber"===r){const r=(0,i.itemFromSingleOrMultiple)(t)??(0,i.itemFromSingleOrMultiple)(s),a=this.container.interactivity.mouse.clickPosition;this.addAbsorber(r,a)}}async init(){this.absorbers=this.container.actualOptions.absorbers,this.interactivityAbsorbers=this.container.actualOptions.interactivity.modes.absorbers;const r=(0,i.executeOnSingleOrMultiple)(this.absorbers,(async r=>{await this.addAbsorber(r)}));r instanceof Array?await Promise.all(r):await r}particleUpdate(r){for(const s of this.array)if(s.attract(r),r.destroyed)break}removeAbsorber(r){const s=this.array.indexOf(r);s>=0&&this.array.splice(s,1)}resize(){for(const r of this.array)r.resize()}stop(){this.array=[]}}}}]);
|
package/327.min.js.LICENSE.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tsParticles Absorbers Plugin v3.2.1 by Matteo Bruni */
|