@tsparticles/plugin-absorbers 4.0.0-beta.0 → 4.0.0-beta.2
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/122.min.js +1 -0
- package/{497.min.js → 285.min.js} +1 -1
- package/677.min.js +1 -0
- package/698.min.js +1 -0
- package/920.min.js +1 -0
- package/998.min.js +1 -0
- package/README.md +2 -2
- package/browser/AbsorberInstance.js +18 -24
- package/browser/AbsorbersInstancesManager.js +4 -4
- package/browser/getAbsorbersInstancesManager.js +11 -0
- package/browser/index.js +5 -14
- package/browser/interaction.js +15 -0
- package/browser/plugin.js +11 -0
- package/cjs/AbsorberInstance.js +18 -24
- package/cjs/AbsorbersInstancesManager.js +4 -4
- package/cjs/getAbsorbersInstancesManager.js +11 -0
- package/cjs/index.js +5 -14
- package/cjs/interaction.js +15 -0
- package/cjs/plugin.js +11 -0
- package/dist_browser_AbsorberInstance_js.js +2 -2
- package/dist_browser_AbsorbersInstancesManager_js.js +2 -2
- package/dist_browser_AbsorbersInteractor_js.js +1 -1
- package/dist_browser_AbsorbersPluginInstance_js.js +1 -1
- package/dist_browser_AbsorbersPlugin_js.js +1 -1
- package/dist_browser_getAbsorbersInstancesManager_js.js +30 -0
- package/esm/AbsorberInstance.js +18 -24
- package/esm/AbsorbersInstancesManager.js +4 -4
- package/esm/getAbsorbersInstancesManager.js +11 -0
- package/esm/index.js +5 -14
- package/esm/interaction.js +15 -0
- package/esm/plugin.js +11 -0
- package/package.json +24 -6
- package/report.html +84 -29
- package/tsparticles.plugin.absorbers.js +26 -6
- package/tsparticles.plugin.absorbers.min.js +2 -2
- package/types/AbsorberInstance.d.ts +4 -4
- package/types/AbsorbersInstancesManager.d.ts +3 -3
- package/types/AbsorbersPluginInstance.d.ts +2 -2
- package/types/getAbsorbersInstancesManager.d.ts +3 -0
- package/types/interaction.d.ts +3 -0
- package/types/plugin.d.ts +3 -0
- package/162.min.js +0 -1
- package/166.min.js +0 -1
- package/49.min.js +0 -1
- package/598.min.js +0 -1
- package/umd/AbsorberContainer.js +0 -12
- package/umd/AbsorberInstance.js +0 -217
- package/umd/AbsorbersInstancesManager.js +0 -97
- package/umd/AbsorbersInteractor.js +0 -109
- package/umd/AbsorbersPlugin.js +0 -86
- package/umd/AbsorbersPluginInstance.js +0 -56
- package/umd/Options/Classes/Absorber.js +0 -74
- package/umd/Options/Classes/AbsorberLife.js +0 -41
- package/umd/Options/Classes/AbsorberSize.js +0 -41
- package/umd/Options/Classes/AbsorberSizeLimit.js +0 -34
- package/umd/Options/Interfaces/IAbsorber.js +0 -12
- package/umd/Options/Interfaces/IAbsorberLife.js +0 -12
- package/umd/Options/Interfaces/IAbsorberSize.js +0 -12
- package/umd/Options/Interfaces/IAbsorberSizeLimit.js +0 -12
- package/umd/index.js +0 -63
- package/umd/types.js +0 -12
package/122.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[122],{122(r,t,e){e.d(t,{AbsorbersInstancesManager:()=>a});var s=e(303);class a{_containerArrays;_pluginManager;constructor(r){this._pluginManager=r,this._containerArrays=new Map}async addAbsorber(r,t,s){let{AbsorberInstance:a}=await e.e(677).then(e.bind(e,677)),i=new a(this._pluginManager,r,t,s);return this.getArray(r).push(i),i}clear(r){this.initContainer(r),this._containerArrays.set(r,[])}getArray(r){this.initContainer(r);let t=this._containerArrays.get(r);return t||(t=[],this._containerArrays.set(r,t)),t}initContainer(r){this._containerArrays.has(r)||(this._containerArrays.set(r,[]),r.getAbsorber??=t=>{let e=this.getArray(r);return void 0===t||(0,s.isNumber)(t)?e[t??0]:e.find(r=>r.name===t)},r.addAbsorber??=(t,e)=>this.addAbsorber(r,t,e))}removeAbsorber(r,t){let e=this.getArray(r).indexOf(t);e>=0&&this.getArray(r).splice(e,1)}}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[
|
|
1
|
+
"use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[285],{285(a,t,s){s.d(t,{AbsorbersPluginInstance:()=>n});var e=s(303);class n{_container;_instancesManager;constructor(a,t){this._container=a,this._instancesManager=t,this._instancesManager.initContainer(a)}draw(a){for(let t of this._instancesManager.getArray(this._container))t.draw(a)}async init(){let a=this._container.actualOptions.absorbers,t=(0,e.executeOnSingleOrMultiple)(a,async a=>{await this._instancesManager.addAbsorber(this._container,a)});(0,e.isArray)(t)?await Promise.all(t):await t}particleUpdate(a,t){for(let s of this._instancesManager.getArray(this._container))if(s.attract(a,t),a.destroyed)break}resize(){for(let a of this._instancesManager.getArray(this._container))a.resize()}stop(){this._instancesManager.clear(this._container)}}}}]);
|
package/677.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[677],{677(i,t,s){s.d(t,{AbsorberInstance:()=>r});var o=s(303),e=s(5);let a=o.doublePI,n=o.identity/360;class r{color;limit;mass;name;opacity;options;position;size;_container;_currentDuration;_currentSpawnDelay;_duration;_firstSpawn;_immortal;_lifeCount;_pluginManager;_spawnDelay;initialPosition;constructor(i,t,s,a){this._container=t,this._pluginManager=i,this._currentDuration=0,this._currentSpawnDelay=0,this.initialPosition=a?o.Vector.create(a.x,a.y):void 0,s instanceof e.h?this.options=s:(this.options=new e.h,this.options.load(s)),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 n=this.options.size.limit;this.limit={radius:n.radius*t.retina.pixelRatio*t.retina.reduceFactor,mass:n.mass},this.color=(0,o.rangeColorToRgb)(this._pluginManager,this.options.color)??{b:0,g:0,r:0},this.position=this.initialPosition?.copy()??this._calcPosition(),this._firstSpawn=!this.options.life.wait,this._lifeCount=this.options.life.count??-1,this._immortal=this._lifeCount<=0,this._spawnDelay=t.retina.reduceFactor?(0,o.getRangeValue)(this.options.life.delay??0)*o.millisecondsToSeconds/t.retina.reduceFactor:1/0}attract(i,t){let s=this._container,e=this.options,a=i.getPosition(),{dx:n,dy:r,distance:l}=(0,o.getDistances)(this.position,a),h=o.Vector.create(n,r);if(h.length=this.mass/Math.pow(l,2)*s.retina.reduceFactor,l<this.size+i.getRadius()){let o=.033*i.getRadius()*s.retina.pixelRatio*t.factor;this.size>i.getRadius()&&l<this.size-i.getRadius()||void 0!==i.absorberOrbit&&i.absorberOrbit.length<0?e.destroy?i.destroy():(i.needsNewPosition=!0,this._updateParticlePosition(i,t,h)):(e.destroy&&(i.size.value-=o),this._updateParticlePosition(i,t,h)),(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*s.retina.reduceFactor)}else this._updateParticlePosition(i,t,h)}draw(i){i.translate(this.position.x,this.position.y),i.beginPath(),i.arc(o.originPoint.x,o.originPoint.y,this.size,0,a,!1),i.closePath(),i.fillStyle=(0,o.getStyleFromRgb)(this.color,this._container.hdr,this.opacity),i.fill()}resize(){let i=this.initialPosition;this.position=i&&(0,o.isPointInside)(i,this._container.canvas.size,o.Vector.origin)?i:this._calcPosition()}update(i){this._firstSpawn&&(this._firstSpawn=!1,this._currentSpawnDelay=this._spawnDelay??0),void 0!==this._duration&&(this._currentDuration+=i.value,this._currentDuration>=this._duration&&(!this._immortal&&this._lifeCount--,(this._lifeCount>0||this._immortal)&&(this.position=this._calcPosition(),this._spawnDelay=this._container.retina.reduceFactor?(0,o.getRangeValue)(this.options.life.delay??0)*o.millisecondsToSeconds/this._container.retina.reduceFactor:1/0),this._currentDuration-=this._duration,delete this._duration)),void 0!==this._spawnDelay&&(this._currentSpawnDelay+=i.value,this._currentSpawnDelay>=this._spawnDelay&&(this.play(),this._currentSpawnDelay-=this._spawnDelay,delete this._spawnDelay))}_calcPosition=()=>{let i=(0,o.calcPositionOrRandomFromSizeRanged)({size:this._container.canvas.size,position:this.options.position});return o.Vector.create(i.x,i.y)};_prepareToDie=()=>{let i=void 0!==this.options.life.duration?(0,o.getRangeValue)(this.options.life.duration):void 0;(this._lifeCount>0||this._immortal)&&void 0!==i&&i>0&&(this._duration=i*o.millisecondsToSeconds)};_updateParticlePosition=(i,t,s)=>{if(i.destroyed)return;let e=this._container,r=e.canvas.size;if(i.needsNewPosition){let t=(0,o.calcPositionOrRandomFromSize)({size:r});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){let t=Math.min(r.width,r.height);i.absorberOrbit.length=t*(1+(.2*(0,o.getRandom)()-.1))}i.absorberOrbitDirection??=i.velocity.x>=0?o.RotateDirection.clockwise:o.RotateDirection.counterClockwise;let l=i.absorberOrbit.length,h=i.absorberOrbit.angle,c=i.absorberOrbitDirection;i.velocity.setTo(o.Vector.origin);let d=(0,o.getRangeMax)(i.options.size.value)*e.retina.pixelRatio,u=i.options.move.size?i.getRadius()/d:o.identity,p=t.factor||o.identity,_=i.retina.moveSpeed*u*p*o.half;i.position.x=this.position.x+l*Math.cos(h),i.position.y=this.position.y+l*(c===o.RotateDirection.clockwise?o.identity:-o.identity)*Math.sin(h),i.absorberOrbit.length=Math.max(0,i.absorberOrbit.length-s.length),i.absorberOrbit.angle+=_*n*e.retina.reduceFactor}else i.velocity.addTo(s)};play=()=>{(this._lifeCount>0||this._immortal||!this.options.life.count)&&(this._firstSpawn||this._currentSpawnDelay>=(this._spawnDelay??0))&&(this._lifeCount>0||this._immortal)&&this._prepareToDie()}}},5(i,t,s){s.d(t,{h:()=>r});var o=s(303);class e{count;delay;duration;wait;constructor(){this.wait=!1}load(i){(0,o.isNull)(i)||(void 0!==i.count&&(this.count=i.count),void 0!==i.delay&&(this.delay=(0,o.setRangeValue)(i.delay)),void 0!==i.duration&&(this.duration=(0,o.setRangeValue)(i.duration)),void 0!==i.wait&&(this.wait=i.wait))}}class a{mass;radius;constructor(){this.radius=0,this.mass=0}load(i){(0,o.isNull)(i)||(void 0!==i.mass&&(this.mass=i.mass),void 0!==i.radius&&(this.radius=i.radius))}}class n extends o.ValueWithRandom{density;limit;constructor(){super(),this.density=5,this.value=50,this.limit=new a}load(i){(0,o.isNull)(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 r{color;destroy;draggable;life;name;opacity;orbits;position;size;constructor(){this.color=new o.OptionsColor,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.life=new e,this.size=new n}load(i){(0,o.isNull)(i)||(void 0!==i.color&&(this.color=o.OptionsColor.create(this.color,i.color)),void 0!==i.draggable&&(this.draggable=i.draggable),void 0!==i.life&&this.life.load(i.life),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))}}}}]);
|
package/698.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[698],{698(i,s,t){t.d(s,{AbsorbersInteractor:()=>n});var o=t(702),e=t(303),a=t(5);let r="absorbers";class n extends o.ExternalInteractorBase{handleClickMode;maxDistance;_dragging=!1;_draggingAbsorber;_instancesManager;constructor(i,s){super(i),this.maxDistance=0,this._instancesManager=s,this._instancesManager.initContainer(i),this.handleClickMode=(i,t)=>{let o=this.container,n=o.actualOptions.interactivity.modes.absorbers;if(!n||i!==r)return;let{clickPosition:l}=t.mouse;if(l&&s.getArray(this.container).some(i=>(0,e.getDistance)(i.position,l)<i.size))return;let d=(0,e.itemFromArray)(n)??new a.h;this._instancesManager.addAbsorber(o,d,l)}}clear(){}init(){}interact(i,s){for(let t of this.container.particles.filter(s=>this.isEnabled(i,s)))for(let o of this._instancesManager.getArray(this.container)){if(o.options.draggable){let s=i.mouse;s.clicking&&s.downPosition?(0,e.getDistance)(o.position,s.downPosition)<=o.size&&(this._dragging=!0,this._draggingAbsorber=o):(this._dragging=!1,this._draggingAbsorber=void 0),this._dragging&&this._draggingAbsorber==o&&s.position&&(o.position.x=s.position.x,o.position.y=s.position.y)}if(o.attract(t,s),t.destroyed)break}}isEnabled(i,s){let t=this.container.actualOptions,o=i.mouse,a=(s?.interactivity??t.interactivity).events;return!!o.clickPosition&&!!a.onClick.enable&&(0,e.isInArray)(r,a.onClick.mode)}loadModeOptions(i,...s){for(let t of(i.absorbers??=[],s))if(t)if((0,e.isArray)(t.absorbers))for(let s of t.absorbers){let t=new a.h;t.load(s),i.absorbers.push(t)}else{let s=new a.h;s.load(t.absorbers),i.absorbers.push(s)}}reset(){}}},5(i,s,t){t.d(s,{h:()=>n});var o=t(303);class e{count;delay;duration;wait;constructor(){this.wait=!1}load(i){(0,o.isNull)(i)||(void 0!==i.count&&(this.count=i.count),void 0!==i.delay&&(this.delay=(0,o.setRangeValue)(i.delay)),void 0!==i.duration&&(this.duration=(0,o.setRangeValue)(i.duration)),void 0!==i.wait&&(this.wait=i.wait))}}class a{mass;radius;constructor(){this.radius=0,this.mass=0}load(i){(0,o.isNull)(i)||(void 0!==i.mass&&(this.mass=i.mass),void 0!==i.radius&&(this.radius=i.radius))}}class r extends o.ValueWithRandom{density;limit;constructor(){super(),this.density=5,this.value=50,this.limit=new a}load(i){(0,o.isNull)(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 n{color;destroy;draggable;life;name;opacity;orbits;position;size;constructor(){this.color=new o.OptionsColor,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.life=new e,this.size=new r}load(i){(0,o.isNull)(i)||(void 0!==i.color&&(this.color=o.OptionsColor.create(this.color,i.color)),void 0!==i.draggable&&(this.draggable=i.draggable),void 0!==i.life&&this.life.load(i.life),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))}}}}]);
|
package/920.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[920],{920(e,s,t){t.r(s),t.d(s,{getAbsorbersInstancesManager:()=>a});let n=new WeakMap;async function a(e){let s=e.pluginManager,a=n.get(s);if(!a){let{AbsorbersInstancesManager:e}=await t.e(122).then(t.bind(t,122));a=new e(s),n.set(s,a)}return a}}}]);
|
package/998.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[998],{998(i,s,t){t.r(s),t.d(s,{AbsorbersPlugin:()=>a});var o=t(303),e=t(5);class a{id="absorbers";_instancesManager;constructor(i){this._instancesManager=i}async getPlugin(i){let{AbsorbersPluginInstance:s}=await t.e(285).then(t.bind(t,285));return new s(i,this._instancesManager)}loadOptions(i,s,t){(this.needsPlugin(s)||this.needsPlugin(t))&&t?.absorbers&&(s.absorbers=(0,o.executeOnSingleOrMultiple)(t.absorbers,i=>{let s=new e.h;return s.load(i),s}))}needsPlugin(i){if(!i)return!1;let s=i.absorbers;return(0,o.isArray)(s)?!!s.length:!!s}}},5(i,s,t){t.d(s,{h:()=>l});var o=t(303);class e{count;delay;duration;wait;constructor(){this.wait=!1}load(i){(0,o.isNull)(i)||(void 0!==i.count&&(this.count=i.count),void 0!==i.delay&&(this.delay=(0,o.setRangeValue)(i.delay)),void 0!==i.duration&&(this.duration=(0,o.setRangeValue)(i.duration)),void 0!==i.wait&&(this.wait=i.wait))}}class a{mass;radius;constructor(){this.radius=0,this.mass=0}load(i){(0,o.isNull)(i)||(void 0!==i.mass&&(this.mass=i.mass),void 0!==i.radius&&(this.radius=i.radius))}}class r extends o.ValueWithRandom{density;limit;constructor(){super(),this.density=5,this.value=50,this.limit=new a}load(i){(0,o.isNull)(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 l{color;destroy;draggable;life;name;opacity;orbits;position;size;constructor(){this.color=new o.OptionsColor,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.life=new e,this.size=new r}load(i){(0,o.isNull)(i)||(void 0!==i.color&&(this.color=o.OptionsColor.create(this.color,i.color)),void 0!==i.draggable&&(this.draggable=i.draggable),void 0!==i.life&&this.life.load(i.life),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))}}}}]);
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ The CDN/Vanilla version JS has one required file in vanilla configuration:
|
|
|
17
17
|
Including the `tsparticles.plugin.absorbers.min.js` file will export the function to load the plugin:
|
|
18
18
|
|
|
19
19
|
```javascript
|
|
20
|
-
|
|
20
|
+
loadAbsorbersPluginSimple;
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
### Usage
|
|
@@ -27,7 +27,7 @@ Once the scripts are loaded you can set up `tsParticles` and the plugin like thi
|
|
|
27
27
|
```javascript
|
|
28
28
|
(async () => {
|
|
29
29
|
await loadInteractivityPlugin(tsParticles);
|
|
30
|
-
await
|
|
30
|
+
await loadAbsorbersPluginSimple(tsParticles);
|
|
31
31
|
|
|
32
32
|
await tsParticles.load({
|
|
33
33
|
id: "tsparticles",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { RotateDirection, Vector, calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, doublePI, getDistance, getDistances, getRandom, getRangeValue, getStyleFromRgb, isPointInside, millisecondsToSeconds, originPoint,
|
|
1
|
+
import { RotateDirection, Vector, calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, doublePI, getDistance, getDistances, getRandom, getRangeMax, getRangeValue, getStyleFromRgb, half, identity, isPointInside, millisecondsToSeconds, originPoint, rangeColorToRgb, } from "@tsparticles/engine";
|
|
2
2
|
import { Absorber } from "./Options/Classes/Absorber.js";
|
|
3
|
-
const squareExp = 2, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = doublePI, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;
|
|
3
|
+
const squareExp = 2, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = doublePI, maxDegreeAngle = 360, angleIncrementFactor = identity / maxDegreeAngle, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;
|
|
4
4
|
export class AbsorberInstance {
|
|
5
5
|
color;
|
|
6
6
|
limit;
|
|
@@ -14,15 +14,15 @@ export class AbsorberInstance {
|
|
|
14
14
|
_currentDuration;
|
|
15
15
|
_currentSpawnDelay;
|
|
16
16
|
_duration;
|
|
17
|
-
_engine;
|
|
18
17
|
_firstSpawn;
|
|
19
18
|
_immortal;
|
|
20
19
|
_lifeCount;
|
|
20
|
+
_pluginManager;
|
|
21
21
|
_spawnDelay;
|
|
22
22
|
initialPosition;
|
|
23
|
-
constructor(
|
|
23
|
+
constructor(pluginManager, container, options, position) {
|
|
24
24
|
this._container = container;
|
|
25
|
-
this.
|
|
25
|
+
this._pluginManager = pluginManager;
|
|
26
26
|
this._currentDuration = 0;
|
|
27
27
|
this._currentSpawnDelay = 0;
|
|
28
28
|
this.initialPosition = position ? Vector.create(position.x, position.y) : undefined;
|
|
@@ -42,7 +42,7 @@ export class AbsorberInstance {
|
|
|
42
42
|
radius: limit.radius * container.retina.pixelRatio * container.retina.reduceFactor,
|
|
43
43
|
mass: limit.mass,
|
|
44
44
|
};
|
|
45
|
-
this.color = rangeColorToRgb(this.
|
|
45
|
+
this.color = rangeColorToRgb(this._pluginManager, this.options.color) ?? {
|
|
46
46
|
b: 0,
|
|
47
47
|
g: 0,
|
|
48
48
|
r: 0,
|
|
@@ -68,14 +68,14 @@ export class AbsorberInstance {
|
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
70
70
|
particle.needsNewPosition = true;
|
|
71
|
-
this._updateParticlePosition(particle, v);
|
|
71
|
+
this._updateParticlePosition(particle, delta, v);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
else {
|
|
75
75
|
if (options.destroy) {
|
|
76
76
|
particle.size.value -= sizeFactor;
|
|
77
77
|
}
|
|
78
|
-
this._updateParticlePosition(particle, v);
|
|
78
|
+
this._updateParticlePosition(particle, delta, v);
|
|
79
79
|
}
|
|
80
80
|
if (this.limit.radius <= minRadius || this.size < this.limit.radius) {
|
|
81
81
|
this.size += sizeFactor;
|
|
@@ -85,7 +85,7 @@ export class AbsorberInstance {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
else {
|
|
88
|
-
this._updateParticlePosition(particle, v);
|
|
88
|
+
this._updateParticlePosition(particle, delta, v);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
draw(context) {
|
|
@@ -147,7 +147,7 @@ export class AbsorberInstance {
|
|
|
147
147
|
this._duration = duration * millisecondsToSeconds;
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
|
-
_updateParticlePosition = (particle, v) => {
|
|
150
|
+
_updateParticlePosition = (particle, delta, v) => {
|
|
151
151
|
if (particle.destroyed) {
|
|
152
152
|
return;
|
|
153
153
|
}
|
|
@@ -173,22 +173,16 @@ export class AbsorberInstance {
|
|
|
173
173
|
particle.velocity.x >= minVelocity ? RotateDirection.clockwise : RotateDirection.counterClockwise;
|
|
174
174
|
const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;
|
|
175
175
|
particle.velocity.setTo(Vector.origin);
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
particle.
|
|
182
|
-
particle.absorberOrbit.
|
|
183
|
-
particle.absorberOrbit.angle +=
|
|
184
|
-
(((particle.retina.moveSpeed ?? minVelocity) * container.retina.pixelRatio) / percentDenominator) *
|
|
185
|
-
container.retina.reduceFactor;
|
|
176
|
+
const maxSize = getRangeMax(particle.options.size.value) * container.retina.pixelRatio, sizeFactor = particle.options.move.size ? particle.getRadius() / maxSize : identity, deltaFactor = delta.factor || identity, baseSpeed = particle.retina.moveSpeed, moveSpeed = baseSpeed * sizeFactor * deltaFactor * half;
|
|
177
|
+
particle.position.x = this.position.x + orbitRadius * Math.cos(orbitAngle);
|
|
178
|
+
particle.position.y =
|
|
179
|
+
this.position.y +
|
|
180
|
+
orbitRadius * (orbitDirection === RotateDirection.clockwise ? identity : -identity) * Math.sin(orbitAngle);
|
|
181
|
+
particle.absorberOrbit.length = Math.max(minOrbitLength, particle.absorberOrbit.length - v.length);
|
|
182
|
+
particle.absorberOrbit.angle += moveSpeed * angleIncrementFactor * container.retina.reduceFactor;
|
|
186
183
|
}
|
|
187
184
|
else {
|
|
188
|
-
|
|
189
|
-
addV.length = v.length;
|
|
190
|
-
addV.angle = v.angle;
|
|
191
|
-
particle.velocity.addTo(addV);
|
|
185
|
+
particle.velocity.addTo(v);
|
|
192
186
|
}
|
|
193
187
|
};
|
|
194
188
|
play = () => {
|
|
@@ -2,13 +2,13 @@ import { isNumber } from "@tsparticles/engine";
|
|
|
2
2
|
const defaultIndex = 0;
|
|
3
3
|
export class AbsorbersInstancesManager {
|
|
4
4
|
_containerArrays;
|
|
5
|
-
|
|
6
|
-
constructor(
|
|
5
|
+
_pluginManager;
|
|
6
|
+
constructor(pluginManager) {
|
|
7
|
+
this._pluginManager = pluginManager;
|
|
7
8
|
this._containerArrays = new Map();
|
|
8
|
-
this._engine = engine;
|
|
9
9
|
}
|
|
10
10
|
async addAbsorber(container, options, position) {
|
|
11
|
-
const { AbsorberInstance } = await import("./AbsorberInstance.js"), absorber = new AbsorberInstance(this.
|
|
11
|
+
const { AbsorberInstance } = await import("./AbsorberInstance.js"), absorber = new AbsorberInstance(this._pluginManager, container, options, position), array = this.getArray(container);
|
|
12
12
|
array.push(absorber);
|
|
13
13
|
return absorber;
|
|
14
14
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const instancesManagers = new WeakMap();
|
|
2
|
+
export async function getAbsorbersInstancesManager(e) {
|
|
3
|
+
const pluginManager = e.pluginManager;
|
|
4
|
+
let manager = instancesManagers.get(pluginManager);
|
|
5
|
+
if (!manager) {
|
|
6
|
+
const { AbsorbersInstancesManager } = await import("./AbsorbersInstancesManager.js");
|
|
7
|
+
manager = new AbsorbersInstancesManager(pluginManager);
|
|
8
|
+
instancesManagers.set(pluginManager, manager);
|
|
9
|
+
}
|
|
10
|
+
return manager;
|
|
11
|
+
}
|
package/browser/index.js
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
import { loadAbsorbersInteraction } from "./interaction.js";
|
|
3
|
+
import { loadAbsorbersPluginSimple } from "./plugin.js";
|
|
1
4
|
export async function loadAbsorbersPlugin(engine) {
|
|
2
|
-
engine
|
|
3
|
-
await engine
|
|
4
|
-
const [{ ensureInteractivityPluginLoaded }, { AbsorbersInstancesManager }, { AbsorbersPlugin },] = await Promise.all([
|
|
5
|
-
import("@tsparticles/plugin-interactivity"),
|
|
6
|
-
import("./AbsorbersInstancesManager.js"),
|
|
7
|
-
import("./AbsorbersPlugin.js"),
|
|
8
|
-
]), instancesManager = new AbsorbersInstancesManager(e);
|
|
9
|
-
ensureInteractivityPluginLoaded(e);
|
|
10
|
-
e.addPlugin(new AbsorbersPlugin(instancesManager));
|
|
11
|
-
e.addInteractor?.("externalAbsorbers", async (container) => {
|
|
12
|
-
const { AbsorbersInteractor } = await import("./AbsorbersInteractor.js");
|
|
13
|
-
return new AbsorbersInteractor(container, instancesManager);
|
|
14
|
-
});
|
|
15
|
-
});
|
|
5
|
+
await loadAbsorbersPluginSimple(engine);
|
|
6
|
+
await loadAbsorbersInteraction(engine);
|
|
16
7
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
export async function loadAbsorbersInteraction(engine) {
|
|
3
|
+
engine.checkVersion("4.0.0-beta.2");
|
|
4
|
+
await engine.pluginManager.register(async (e) => {
|
|
5
|
+
const [{ ensureInteractivityPluginLoaded }, { getAbsorbersInstancesManager },] = await Promise.all([
|
|
6
|
+
import("@tsparticles/plugin-interactivity"),
|
|
7
|
+
import("./getAbsorbersInstancesManager.js"),
|
|
8
|
+
]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);
|
|
9
|
+
ensureInteractivityPluginLoaded(e);
|
|
10
|
+
pluginManager.addInteractor?.("externalAbsorbers", async (container) => {
|
|
11
|
+
const { AbsorbersInteractor } = await import("./AbsorbersInteractor.js");
|
|
12
|
+
return new AbsorbersInteractor(container, instancesManager);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
export async function loadAbsorbersPluginSimple(engine) {
|
|
3
|
+
engine.checkVersion("4.0.0-beta.2");
|
|
4
|
+
await engine.pluginManager.register(async (e) => {
|
|
5
|
+
const [{ getAbsorbersInstancesManager }, { AbsorbersPlugin },] = await Promise.all([
|
|
6
|
+
import("./getAbsorbersInstancesManager.js"),
|
|
7
|
+
import("./AbsorbersPlugin.js"),
|
|
8
|
+
]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);
|
|
9
|
+
pluginManager.addPlugin(new AbsorbersPlugin(instancesManager));
|
|
10
|
+
});
|
|
11
|
+
}
|
package/cjs/AbsorberInstance.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { RotateDirection, Vector, calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, doublePI, getDistance, getDistances, getRandom, getRangeValue, getStyleFromRgb, isPointInside, millisecondsToSeconds, originPoint,
|
|
1
|
+
import { RotateDirection, Vector, calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, doublePI, getDistance, getDistances, getRandom, getRangeMax, getRangeValue, getStyleFromRgb, half, identity, isPointInside, millisecondsToSeconds, originPoint, rangeColorToRgb, } from "@tsparticles/engine";
|
|
2
2
|
import { Absorber } from "./Options/Classes/Absorber.js";
|
|
3
|
-
const squareExp = 2, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = doublePI, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;
|
|
3
|
+
const squareExp = 2, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = doublePI, maxDegreeAngle = 360, angleIncrementFactor = identity / maxDegreeAngle, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;
|
|
4
4
|
export class AbsorberInstance {
|
|
5
5
|
color;
|
|
6
6
|
limit;
|
|
@@ -14,15 +14,15 @@ export class AbsorberInstance {
|
|
|
14
14
|
_currentDuration;
|
|
15
15
|
_currentSpawnDelay;
|
|
16
16
|
_duration;
|
|
17
|
-
_engine;
|
|
18
17
|
_firstSpawn;
|
|
19
18
|
_immortal;
|
|
20
19
|
_lifeCount;
|
|
20
|
+
_pluginManager;
|
|
21
21
|
_spawnDelay;
|
|
22
22
|
initialPosition;
|
|
23
|
-
constructor(
|
|
23
|
+
constructor(pluginManager, container, options, position) {
|
|
24
24
|
this._container = container;
|
|
25
|
-
this.
|
|
25
|
+
this._pluginManager = pluginManager;
|
|
26
26
|
this._currentDuration = 0;
|
|
27
27
|
this._currentSpawnDelay = 0;
|
|
28
28
|
this.initialPosition = position ? Vector.create(position.x, position.y) : undefined;
|
|
@@ -42,7 +42,7 @@ export class AbsorberInstance {
|
|
|
42
42
|
radius: limit.radius * container.retina.pixelRatio * container.retina.reduceFactor,
|
|
43
43
|
mass: limit.mass,
|
|
44
44
|
};
|
|
45
|
-
this.color = rangeColorToRgb(this.
|
|
45
|
+
this.color = rangeColorToRgb(this._pluginManager, this.options.color) ?? {
|
|
46
46
|
b: 0,
|
|
47
47
|
g: 0,
|
|
48
48
|
r: 0,
|
|
@@ -68,14 +68,14 @@ export class AbsorberInstance {
|
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
70
70
|
particle.needsNewPosition = true;
|
|
71
|
-
this._updateParticlePosition(particle, v);
|
|
71
|
+
this._updateParticlePosition(particle, delta, v);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
else {
|
|
75
75
|
if (options.destroy) {
|
|
76
76
|
particle.size.value -= sizeFactor;
|
|
77
77
|
}
|
|
78
|
-
this._updateParticlePosition(particle, v);
|
|
78
|
+
this._updateParticlePosition(particle, delta, v);
|
|
79
79
|
}
|
|
80
80
|
if (this.limit.radius <= minRadius || this.size < this.limit.radius) {
|
|
81
81
|
this.size += sizeFactor;
|
|
@@ -85,7 +85,7 @@ export class AbsorberInstance {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
else {
|
|
88
|
-
this._updateParticlePosition(particle, v);
|
|
88
|
+
this._updateParticlePosition(particle, delta, v);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
draw(context) {
|
|
@@ -147,7 +147,7 @@ export class AbsorberInstance {
|
|
|
147
147
|
this._duration = duration * millisecondsToSeconds;
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
|
-
_updateParticlePosition = (particle, v) => {
|
|
150
|
+
_updateParticlePosition = (particle, delta, v) => {
|
|
151
151
|
if (particle.destroyed) {
|
|
152
152
|
return;
|
|
153
153
|
}
|
|
@@ -173,22 +173,16 @@ export class AbsorberInstance {
|
|
|
173
173
|
particle.velocity.x >= minVelocity ? RotateDirection.clockwise : RotateDirection.counterClockwise;
|
|
174
174
|
const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;
|
|
175
175
|
particle.velocity.setTo(Vector.origin);
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
particle.
|
|
182
|
-
particle.absorberOrbit.
|
|
183
|
-
particle.absorberOrbit.angle +=
|
|
184
|
-
(((particle.retina.moveSpeed ?? minVelocity) * container.retina.pixelRatio) / percentDenominator) *
|
|
185
|
-
container.retina.reduceFactor;
|
|
176
|
+
const maxSize = getRangeMax(particle.options.size.value) * container.retina.pixelRatio, sizeFactor = particle.options.move.size ? particle.getRadius() / maxSize : identity, deltaFactor = delta.factor || identity, baseSpeed = particle.retina.moveSpeed, moveSpeed = baseSpeed * sizeFactor * deltaFactor * half;
|
|
177
|
+
particle.position.x = this.position.x + orbitRadius * Math.cos(orbitAngle);
|
|
178
|
+
particle.position.y =
|
|
179
|
+
this.position.y +
|
|
180
|
+
orbitRadius * (orbitDirection === RotateDirection.clockwise ? identity : -identity) * Math.sin(orbitAngle);
|
|
181
|
+
particle.absorberOrbit.length = Math.max(minOrbitLength, particle.absorberOrbit.length - v.length);
|
|
182
|
+
particle.absorberOrbit.angle += moveSpeed * angleIncrementFactor * container.retina.reduceFactor;
|
|
186
183
|
}
|
|
187
184
|
else {
|
|
188
|
-
|
|
189
|
-
addV.length = v.length;
|
|
190
|
-
addV.angle = v.angle;
|
|
191
|
-
particle.velocity.addTo(addV);
|
|
185
|
+
particle.velocity.addTo(v);
|
|
192
186
|
}
|
|
193
187
|
};
|
|
194
188
|
play = () => {
|
|
@@ -2,13 +2,13 @@ import { isNumber } from "@tsparticles/engine";
|
|
|
2
2
|
const defaultIndex = 0;
|
|
3
3
|
export class AbsorbersInstancesManager {
|
|
4
4
|
_containerArrays;
|
|
5
|
-
|
|
6
|
-
constructor(
|
|
5
|
+
_pluginManager;
|
|
6
|
+
constructor(pluginManager) {
|
|
7
|
+
this._pluginManager = pluginManager;
|
|
7
8
|
this._containerArrays = new Map();
|
|
8
|
-
this._engine = engine;
|
|
9
9
|
}
|
|
10
10
|
async addAbsorber(container, options, position) {
|
|
11
|
-
const { AbsorberInstance } = await import("./AbsorberInstance.js"), absorber = new AbsorberInstance(this.
|
|
11
|
+
const { AbsorberInstance } = await import("./AbsorberInstance.js"), absorber = new AbsorberInstance(this._pluginManager, container, options, position), array = this.getArray(container);
|
|
12
12
|
array.push(absorber);
|
|
13
13
|
return absorber;
|
|
14
14
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const instancesManagers = new WeakMap();
|
|
2
|
+
export async function getAbsorbersInstancesManager(e) {
|
|
3
|
+
const pluginManager = e.pluginManager;
|
|
4
|
+
let manager = instancesManagers.get(pluginManager);
|
|
5
|
+
if (!manager) {
|
|
6
|
+
const { AbsorbersInstancesManager } = await import("./AbsorbersInstancesManager.js");
|
|
7
|
+
manager = new AbsorbersInstancesManager(pluginManager);
|
|
8
|
+
instancesManagers.set(pluginManager, manager);
|
|
9
|
+
}
|
|
10
|
+
return manager;
|
|
11
|
+
}
|
package/cjs/index.js
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
import { loadAbsorbersInteraction } from "./interaction.js";
|
|
3
|
+
import { loadAbsorbersPluginSimple } from "./plugin.js";
|
|
1
4
|
export async function loadAbsorbersPlugin(engine) {
|
|
2
|
-
engine
|
|
3
|
-
await engine
|
|
4
|
-
const [{ ensureInteractivityPluginLoaded }, { AbsorbersInstancesManager }, { AbsorbersPlugin },] = await Promise.all([
|
|
5
|
-
import("@tsparticles/plugin-interactivity"),
|
|
6
|
-
import("./AbsorbersInstancesManager.js"),
|
|
7
|
-
import("./AbsorbersPlugin.js"),
|
|
8
|
-
]), instancesManager = new AbsorbersInstancesManager(e);
|
|
9
|
-
ensureInteractivityPluginLoaded(e);
|
|
10
|
-
e.addPlugin(new AbsorbersPlugin(instancesManager));
|
|
11
|
-
e.addInteractor?.("externalAbsorbers", async (container) => {
|
|
12
|
-
const { AbsorbersInteractor } = await import("./AbsorbersInteractor.js");
|
|
13
|
-
return new AbsorbersInteractor(container, instancesManager);
|
|
14
|
-
});
|
|
15
|
-
});
|
|
5
|
+
await loadAbsorbersPluginSimple(engine);
|
|
6
|
+
await loadAbsorbersInteraction(engine);
|
|
16
7
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
export async function loadAbsorbersInteraction(engine) {
|
|
3
|
+
engine.checkVersion("4.0.0-beta.2");
|
|
4
|
+
await engine.pluginManager.register(async (e) => {
|
|
5
|
+
const [{ ensureInteractivityPluginLoaded }, { getAbsorbersInstancesManager },] = await Promise.all([
|
|
6
|
+
import("@tsparticles/plugin-interactivity"),
|
|
7
|
+
import("./getAbsorbersInstancesManager.js"),
|
|
8
|
+
]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);
|
|
9
|
+
ensureInteractivityPluginLoaded(e);
|
|
10
|
+
pluginManager.addInteractor?.("externalAbsorbers", async (container) => {
|
|
11
|
+
const { AbsorbersInteractor } = await import("./AbsorbersInteractor.js");
|
|
12
|
+
return new AbsorbersInteractor(container, instancesManager);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
}
|
package/cjs/plugin.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
export async function loadAbsorbersPluginSimple(engine) {
|
|
3
|
+
engine.checkVersion("4.0.0-beta.2");
|
|
4
|
+
await engine.pluginManager.register(async (e) => {
|
|
5
|
+
const [{ getAbsorbersInstancesManager }, { AbsorbersPlugin },] = await Promise.all([
|
|
6
|
+
import("./getAbsorbersInstancesManager.js"),
|
|
7
|
+
import("./AbsorbersPlugin.js"),
|
|
8
|
+
]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);
|
|
9
|
+
pluginManager.addPlugin(new AbsorbersPlugin(instancesManager));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -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
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.2
|
|
8
8
|
*/
|
|
9
9
|
"use strict";
|
|
10
10
|
/*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
\******************************************/
|
|
24
24
|
(__unused_webpack___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 _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, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;\nclass AbsorberInstance {\n color;\n limit;\n mass;\n name;\n opacity;\n options;\n position;\n size;\n _container;\n _currentDuration;\n _currentSpawnDelay;\n _duration;\n _engine;\n _firstSpawn;\n _immortal;\n _lifeCount;\n _spawnDelay;\n initialPosition;\n constructor(engine, container, options, position){\n this._container = container;\n this._engine = engine;\n this._currentDuration = 0;\n this._currentSpawnDelay = 0;\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.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._engine, this.options.color) ?? {\n b: 0,\n g: 0,\n r: 0\n };\n this.position = this.initialPosition?.copy() ?? this._calcPosition();\n this._firstSpawn = !this.options.life.wait;\n this._lifeCount = this.options.life.count ?? defaultLifeCount;\n this._immortal = this._lifeCount <= minLifeCount;\n this._spawnDelay = container.retina.reduceFactor ? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(this.options.life.delay ?? defaultLifeDelay) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds / container.retina.reduceFactor : Infinity;\n }\n attract(particle, delta) {\n const container = this._container, options = this.options, pos = particle.getPosition(), { dx, dy, distance } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(this.position, pos), 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 * delta.factor;\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(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.x, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.y, this.size, minAngle, maxAngle, false);\n context.closePath();\n context.fillStyle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(this.color, this._container.hdr, 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 update(delta) {\n if (this._firstSpawn) {\n this._firstSpawn = false;\n this._currentSpawnDelay = this._spawnDelay ?? defaultSpawnDelay;\n }\n if (this._duration !== undefined) {\n this._currentDuration += delta.value;\n if (this._currentDuration >= this._duration) {\n if (!this._immortal) {\n this._lifeCount--;\n }\n if (this._lifeCount > minLifeCount || this._immortal) {\n this.position = this._calcPosition();\n this._spawnDelay = this._container.retina.reduceFactor ? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(this.options.life.delay ?? defaultLifeDelay) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds / this._container.retina.reduceFactor : Infinity;\n }\n this._currentDuration -= this._duration;\n delete this._duration;\n }\n }\n if (this._spawnDelay !== undefined) {\n this._currentSpawnDelay += delta.value;\n if (this._currentSpawnDelay >= this._spawnDelay) {\n this.play();\n this._currentSpawnDelay -= this._spawnDelay;\n delete this._spawnDelay;\n }\n }\n }\n _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 _prepareToDie = ()=>{\n const duration = this.options.life.duration !== undefined ? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(this.options.life.duration) : undefined, minDuration = 0;\n if ((this._lifeCount > minLifeCount || this._immortal) && duration !== undefined && duration > minDuration) {\n this._duration = duration * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds;\n }\n };\n _updateParticlePosition = (particle, v)=>{\n if (particle.destroyed) {\n return;\n }\n const container = this._container, 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), offset = 1, randomOffset = 0.1, randomFactor = 0.2;\n particle.absorberOrbit.length = minSize * (offset + ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * randomFactor - randomOffset));\n }\n particle.absorberOrbitDirection ??= particle.velocity.x >= minVelocity ? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.RotateDirection.clockwise : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.RotateDirection.counterClockwise;\n const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;\n particle.velocity.setTo(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin);\n const updateFunc = {\n x: orbitDirection === _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.RotateDirection.clockwise ? Math.cos : Math.sin,\n y: orbitDirection === _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.RotateDirection.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 play = ()=>{\n if (!((this._lifeCount > minLifeCount || this._immortal || !this.options.life.count) && (this._firstSpawn || this._currentSpawnDelay >= (this._spawnDelay ?? defaultSpawnDelay)))) {\n return;\n }\n if (this._lifeCount > minLifeCount || this._immortal) {\n this._prepareToDie();\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/AbsorberInstance.js?\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 _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, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI, maxDegreeAngle = 360, angleIncrementFactor = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity / maxDegreeAngle, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;\nclass AbsorberInstance {\n color;\n limit;\n mass;\n name;\n opacity;\n options;\n position;\n size;\n _container;\n _currentDuration;\n _currentSpawnDelay;\n _duration;\n _firstSpawn;\n _immortal;\n _lifeCount;\n _pluginManager;\n _spawnDelay;\n initialPosition;\n constructor(pluginManager, container, options, position){\n this._container = container;\n this._pluginManager = pluginManager;\n this._currentDuration = 0;\n this._currentSpawnDelay = 0;\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.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._pluginManager, this.options.color) ?? {\n b: 0,\n g: 0,\n r: 0\n };\n this.position = this.initialPosition?.copy() ?? this._calcPosition();\n this._firstSpawn = !this.options.life.wait;\n this._lifeCount = this.options.life.count ?? defaultLifeCount;\n this._immortal = this._lifeCount <= minLifeCount;\n this._spawnDelay = container.retina.reduceFactor ? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(this.options.life.delay ?? defaultLifeDelay) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds / container.retina.reduceFactor : Infinity;\n }\n attract(particle, delta) {\n const container = this._container, options = this.options, pos = particle.getPosition(), { dx, dy, distance } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(this.position, pos), 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 * delta.factor;\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, delta, v);\n }\n } else {\n if (options.destroy) {\n particle.size.value -= sizeFactor;\n }\n this._updateParticlePosition(particle, delta, 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, delta, v);\n }\n }\n draw(context) {\n context.translate(this.position.x, this.position.y);\n context.beginPath();\n context.arc(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.x, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.y, this.size, minAngle, maxAngle, false);\n context.closePath();\n context.fillStyle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(this.color, this._container.hdr, 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 update(delta) {\n if (this._firstSpawn) {\n this._firstSpawn = false;\n this._currentSpawnDelay = this._spawnDelay ?? defaultSpawnDelay;\n }\n if (this._duration !== undefined) {\n this._currentDuration += delta.value;\n if (this._currentDuration >= this._duration) {\n if (!this._immortal) {\n this._lifeCount--;\n }\n if (this._lifeCount > minLifeCount || this._immortal) {\n this.position = this._calcPosition();\n this._spawnDelay = this._container.retina.reduceFactor ? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(this.options.life.delay ?? defaultLifeDelay) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds / this._container.retina.reduceFactor : Infinity;\n }\n this._currentDuration -= this._duration;\n delete this._duration;\n }\n }\n if (this._spawnDelay !== undefined) {\n this._currentSpawnDelay += delta.value;\n if (this._currentSpawnDelay >= this._spawnDelay) {\n this.play();\n this._currentSpawnDelay -= this._spawnDelay;\n delete this._spawnDelay;\n }\n }\n }\n _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 _prepareToDie = ()=>{\n const duration = this.options.life.duration !== undefined ? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(this.options.life.duration) : undefined, minDuration = 0;\n if ((this._lifeCount > minLifeCount || this._immortal) && duration !== undefined && duration > minDuration) {\n this._duration = duration * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds;\n }\n };\n _updateParticlePosition = (particle, delta, v)=>{\n if (particle.destroyed) {\n return;\n }\n const container = this._container, 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), offset = 1, randomOffset = 0.1, randomFactor = 0.2;\n particle.absorberOrbit.length = minSize * (offset + ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * randomFactor - randomOffset));\n }\n particle.absorberOrbitDirection ??= particle.velocity.x >= minVelocity ? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.RotateDirection.clockwise : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.RotateDirection.counterClockwise;\n const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;\n particle.velocity.setTo(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin);\n const maxSize = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeMax)(particle.options.size.value) * container.retina.pixelRatio, sizeFactor = particle.options.move.size ? particle.getRadius() / maxSize : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity, deltaFactor = delta.factor || _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity, baseSpeed = particle.retina.moveSpeed, moveSpeed = baseSpeed * sizeFactor * deltaFactor * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half;\n particle.position.x = this.position.x + orbitRadius * Math.cos(orbitAngle);\n particle.position.y = this.position.y + orbitRadius * (orbitDirection === _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.RotateDirection.clockwise ? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity : -_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity) * Math.sin(orbitAngle);\n particle.absorberOrbit.length = Math.max(minOrbitLength, particle.absorberOrbit.length - v.length);\n particle.absorberOrbit.angle += moveSpeed * angleIncrementFactor * container.retina.reduceFactor;\n } else {\n particle.velocity.addTo(v);\n }\n };\n play = ()=>{\n if (!((this._lifeCount > minLifeCount || this._immortal || !this.options.life.count) && (this._firstSpawn || this._currentSpawnDelay >= (this._spawnDelay ?? defaultSpawnDelay)))) {\n return;\n }\n if (this._lifeCount > minLifeCount || this._immortal) {\n this._prepareToDie();\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/AbsorberInstance.js?\n}");
|
|
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
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.2
|
|
8
8
|
*/
|
|
9
9
|
"use strict";
|
|
10
10
|
/*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
\***************************************************/
|
|
24
24
|
(__unused_webpack___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 */ AbsorbersInstancesManager: () => (/* binding */ AbsorbersInstancesManager)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n\nconst defaultIndex = 0;\nclass AbsorbersInstancesManager {\n _containerArrays;\n
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbsorbersInstancesManager: () => (/* binding */ AbsorbersInstancesManager)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n\nconst defaultIndex = 0;\nclass AbsorbersInstancesManager {\n _containerArrays;\n _pluginManager;\n constructor(pluginManager){\n this._pluginManager = pluginManager;\n this._containerArrays = new Map();\n }\n async addAbsorber(container, options, position) {\n const { AbsorberInstance } = await __webpack_require__.e(/*! import() */ \"dist_browser_AbsorberInstance_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorberInstance.js */ \"./dist/browser/AbsorberInstance.js\")), absorber = new AbsorberInstance(this._pluginManager, container, options, position), array = this.getArray(container);\n array.push(absorber);\n return absorber;\n }\n clear(container) {\n this.initContainer(container);\n this._containerArrays.set(container, []);\n }\n getArray(container) {\n this.initContainer(container);\n let array = this._containerArrays.get(container);\n if (!array) {\n array = [];\n this._containerArrays.set(container, array);\n }\n return array;\n }\n initContainer(container) {\n if (this._containerArrays.has(container)) {\n return;\n }\n this._containerArrays.set(container, []);\n container.getAbsorber ??= (idxOrName)=>{\n const array = this.getArray(container);\n return idxOrName === undefined || (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNumber)(idxOrName) ? array[idxOrName ?? defaultIndex] : array.find((t)=>t.name === idxOrName);\n };\n container.addAbsorber ??= (options, position)=>{\n return this.addAbsorber(container, options, position);\n };\n }\n removeAbsorber(container, absorber) {\n const index = this.getArray(container).indexOf(absorber), deleteCount = 1;\n if (index >= defaultIndex) {\n this.getArray(container).splice(index, deleteCount);\n }\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/AbsorbersInstancesManager.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ }
|
|
29
29
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Author : Matteo Bruni
|
|
3
|
+
* MIT license: https://opensource.org/licenses/MIT
|
|
4
|
+
* Demo / Generator : https://particles.js.org/
|
|
5
|
+
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
|
+
* How to use? : Check the GitHub README
|
|
7
|
+
* v4.0.0-beta.2
|
|
8
|
+
*/
|
|
9
|
+
"use strict";
|
|
10
|
+
/*
|
|
11
|
+
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
|
12
|
+
* This devtool is neither made for production nor for readable output files.
|
|
13
|
+
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
|
14
|
+
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
15
|
+
* or disable the default devtool with "devtool: false".
|
|
16
|
+
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
17
|
+
*/
|
|
18
|
+
(this["webpackChunk_tsparticles_plugin_absorbers"] = this["webpackChunk_tsparticles_plugin_absorbers"] || []).push([["dist_browser_getAbsorbersInstancesManager_js"],{
|
|
19
|
+
|
|
20
|
+
/***/ "./dist/browser/getAbsorbersInstancesManager.js"
|
|
21
|
+
/*!******************************************************!*\
|
|
22
|
+
!*** ./dist/browser/getAbsorbersInstancesManager.js ***!
|
|
23
|
+
\******************************************************/
|
|
24
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
25
|
+
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAbsorbersInstancesManager: () => (/* binding */ getAbsorbersInstancesManager)\n/* harmony export */ });\nconst instancesManagers = new WeakMap();\nasync function getAbsorbersInstancesManager(e) {\n const pluginManager = e.pluginManager;\n let manager = instancesManagers.get(pluginManager);\n if (!manager) {\n const { AbsorbersInstancesManager } = await __webpack_require__.e(/*! import() */ \"dist_browser_AbsorbersInstancesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorbersInstancesManager.js */ \"./dist/browser/AbsorbersInstancesManager.js\"));\n manager = new AbsorbersInstancesManager(pluginManager);\n instancesManagers.set(pluginManager, manager);\n }\n return manager;\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/getAbsorbersInstancesManager.js?\n}");
|
|
27
|
+
|
|
28
|
+
/***/ }
|
|
29
|
+
|
|
30
|
+
}]);
|