@tsparticles/plugin-absorbers 4.0.0-alpha.8 → 4.0.0-beta.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.
Files changed (77) hide show
  1. package/162.min.js +1 -0
  2. package/166.min.js +1 -0
  3. package/49.min.js +1 -0
  4. package/497.min.js +1 -0
  5. package/598.min.js +1 -0
  6. package/README.md +5 -0
  7. package/browser/AbsorberInstance.js +126 -53
  8. package/browser/AbsorbersInstancesManager.js +2 -0
  9. package/browser/AbsorbersInteractor.js +11 -6
  10. package/browser/AbsorbersPlugin.js +2 -1
  11. package/browser/AbsorbersPluginInstance.js +2 -0
  12. package/browser/Options/Classes/Absorber.js +14 -0
  13. package/browser/Options/Classes/AbsorberLife.js +27 -0
  14. package/browser/Options/Classes/AbsorberSize.js +2 -0
  15. package/browser/Options/Classes/AbsorberSizeLimit.js +2 -0
  16. package/browser/Options/Interfaces/IAbsorberLife.js +1 -0
  17. package/browser/index.js +7 -3
  18. package/cjs/AbsorberInstance.js +126 -53
  19. package/cjs/AbsorbersInstancesManager.js +2 -0
  20. package/cjs/AbsorbersInteractor.js +11 -6
  21. package/cjs/AbsorbersPlugin.js +2 -1
  22. package/cjs/AbsorbersPluginInstance.js +2 -0
  23. package/cjs/Options/Classes/Absorber.js +14 -0
  24. package/cjs/Options/Classes/AbsorberLife.js +27 -0
  25. package/cjs/Options/Classes/AbsorberSize.js +2 -0
  26. package/cjs/Options/Classes/AbsorberSizeLimit.js +2 -0
  27. package/cjs/Options/Interfaces/IAbsorberLife.js +1 -0
  28. package/cjs/index.js +7 -3
  29. package/dist_browser_AbsorberInstance_js.js +15 -5
  30. package/dist_browser_AbsorbersInstancesManager_js.js +2 -2
  31. package/dist_browser_AbsorbersInteractor_js.js +15 -5
  32. package/dist_browser_AbsorbersPluginInstance_js.js +2 -2
  33. package/dist_browser_AbsorbersPlugin_js.js +15 -5
  34. package/esm/AbsorberInstance.js +126 -53
  35. package/esm/AbsorbersInstancesManager.js +2 -0
  36. package/esm/AbsorbersInteractor.js +11 -6
  37. package/esm/AbsorbersPlugin.js +2 -1
  38. package/esm/AbsorbersPluginInstance.js +2 -0
  39. package/esm/Options/Classes/Absorber.js +14 -0
  40. package/esm/Options/Classes/AbsorberLife.js +27 -0
  41. package/esm/Options/Classes/AbsorberSize.js +2 -0
  42. package/esm/Options/Classes/AbsorberSizeLimit.js +2 -0
  43. package/esm/Options/Interfaces/IAbsorberLife.js +1 -0
  44. package/esm/index.js +7 -3
  45. package/package.json +3 -3
  46. package/report.html +1 -1
  47. package/tsparticles.plugin.absorbers.js +31 -19
  48. package/tsparticles.plugin.absorbers.min.js +2 -2
  49. package/types/AbsorberInstance.d.ts +10 -0
  50. package/types/AbsorbersInteractor.d.ts +3 -2
  51. package/types/AbsorbersPlugin.d.ts +1 -1
  52. package/types/Options/Classes/Absorber.d.ts +2 -0
  53. package/types/Options/Classes/AbsorberLife.d.ts +10 -0
  54. package/types/Options/Interfaces/IAbsorber.d.ts +2 -0
  55. package/types/Options/Interfaces/IAbsorberLife.d.ts +7 -0
  56. package/umd/AbsorberInstance.js +125 -52
  57. package/umd/AbsorbersInstancesManager.js +2 -0
  58. package/umd/AbsorbersInteractor.js +11 -6
  59. package/umd/AbsorbersPlugin.js +2 -1
  60. package/umd/AbsorbersPluginInstance.js +2 -0
  61. package/umd/Options/Classes/Absorber.js +15 -1
  62. package/umd/Options/Classes/AbsorberLife.js +41 -0
  63. package/umd/Options/Classes/AbsorberSize.js +2 -0
  64. package/umd/Options/Classes/AbsorberSizeLimit.js +2 -0
  65. package/umd/Options/Interfaces/IAbsorberLife.js +12 -0
  66. package/umd/index.js +7 -3
  67. package/215.min.js +0 -2
  68. package/215.min.js.LICENSE.txt +0 -1
  69. package/384.min.js +0 -2
  70. package/384.min.js.LICENSE.txt +0 -1
  71. package/688.min.js +0 -2
  72. package/688.min.js.LICENSE.txt +0 -1
  73. package/903.min.js +0 -2
  74. package/903.min.js.LICENSE.txt +0 -1
  75. package/980.min.js +0 -2
  76. package/980.min.js.LICENSE.txt +0 -1
  77. package/tsparticles.plugin.absorbers.min.js.LICENSE.txt +0 -1
@@ -12,62 +12,31 @@
12
12
  exports.AbsorberInstance = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
14
  const Absorber_js_1 = require("./Options/Classes/Absorber.js");
15
- const squareExp = 2, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = engine_1.doublePI, minVelocity = 0;
15
+ const squareExp = 2, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = engine_1.doublePI, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;
16
16
  class AbsorberInstance {
17
+ color;
18
+ limit;
19
+ mass;
20
+ name;
21
+ opacity;
22
+ options;
23
+ position;
24
+ size;
25
+ _container;
26
+ _currentDuration;
27
+ _currentSpawnDelay;
28
+ _duration;
29
+ _engine;
30
+ _firstSpawn;
31
+ _immortal;
32
+ _lifeCount;
33
+ _spawnDelay;
34
+ initialPosition;
17
35
  constructor(engine, container, options, position) {
18
- this._calcPosition = () => {
19
- const exactPosition = (0, engine_1.calcPositionOrRandomFromSizeRanged)({
20
- size: this._container.canvas.size,
21
- position: this.options.position,
22
- });
23
- return engine_1.Vector.create(exactPosition.x, exactPosition.y);
24
- };
25
- this._updateParticlePosition = (particle, v) => {
26
- if (particle.destroyed) {
27
- return;
28
- }
29
- const container = this._container, canvasSize = container.canvas.size;
30
- if (particle.needsNewPosition) {
31
- const newPosition = (0, engine_1.calcPositionOrRandomFromSize)({ size: canvasSize });
32
- particle.position.setTo(newPosition);
33
- particle.velocity.setTo(particle.initialVelocity);
34
- particle.absorberOrbit = undefined;
35
- particle.needsNewPosition = false;
36
- }
37
- if (this.options.orbits) {
38
- if (particle.absorberOrbit === undefined) {
39
- particle.absorberOrbit = engine_1.Vector.origin;
40
- particle.absorberOrbit.length = (0, engine_1.getDistance)(particle.getPosition(), this.position);
41
- particle.absorberOrbit.angle = (0, engine_1.getRandom)() * maxAngle;
42
- }
43
- if (particle.absorberOrbit.length <= this.size && !this.options.destroy) {
44
- const minSize = Math.min(canvasSize.width, canvasSize.height), offset = 1, randomOffset = 0.1, randomFactor = 0.2;
45
- particle.absorberOrbit.length = minSize * (offset + ((0, engine_1.getRandom)() * randomFactor - randomOffset));
46
- }
47
- particle.absorberOrbitDirection ??=
48
- particle.velocity.x >= minVelocity ? engine_1.RotateDirection.clockwise : engine_1.RotateDirection.counterClockwise;
49
- const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;
50
- particle.velocity.setTo(engine_1.Vector.origin);
51
- const updateFunc = {
52
- x: orbitDirection === engine_1.RotateDirection.clockwise ? Math.cos : Math.sin,
53
- y: orbitDirection === engine_1.RotateDirection.clockwise ? Math.sin : Math.cos,
54
- };
55
- particle.position.x = this.position.x + orbitRadius * updateFunc.x(orbitAngle);
56
- particle.position.y = this.position.y + orbitRadius * updateFunc.y(orbitAngle);
57
- particle.absorberOrbit.length -= v.length;
58
- particle.absorberOrbit.angle +=
59
- (((particle.retina.moveSpeed ?? minVelocity) * container.retina.pixelRatio) / engine_1.percentDenominator) *
60
- container.retina.reduceFactor;
61
- }
62
- else {
63
- const addV = engine_1.Vector.origin;
64
- addV.length = v.length;
65
- addV.angle = v.angle;
66
- particle.velocity.addTo(addV);
67
- }
68
- };
69
36
  this._container = container;
70
37
  this._engine = engine;
38
+ this._currentDuration = 0;
39
+ this._currentSpawnDelay = 0;
71
40
  this.initialPosition = position ? engine_1.Vector.create(position.x, position.y) : undefined;
72
41
  if (options instanceof Absorber_js_1.Absorber) {
73
42
  this.options = options;
@@ -91,6 +60,13 @@
91
60
  r: 0,
92
61
  };
93
62
  this.position = this.initialPosition?.copy() ?? this._calcPosition();
63
+ this._firstSpawn = !this.options.life.wait;
64
+ this._lifeCount = this.options.life.count ?? defaultLifeCount;
65
+ this._immortal = this._lifeCount <= minLifeCount;
66
+ this._spawnDelay = container.retina.reduceFactor
67
+ ? ((0, engine_1.getRangeValue)(this.options.life.delay ?? defaultLifeDelay) * engine_1.millisecondsToSeconds) /
68
+ container.retina.reduceFactor
69
+ : Infinity;
94
70
  }
95
71
  attract(particle, delta) {
96
72
  const container = this._container, options = this.options, pos = particle.getPosition(), { dx, dy, distance } = (0, engine_1.getDistances)(this.position, pos), v = engine_1.Vector.create(dx, dy);
@@ -139,6 +115,103 @@
139
115
  ? initialPosition
140
116
  : this._calcPosition();
141
117
  }
118
+ update(delta) {
119
+ if (this._firstSpawn) {
120
+ this._firstSpawn = false;
121
+ this._currentSpawnDelay = this._spawnDelay ?? defaultSpawnDelay;
122
+ }
123
+ if (this._duration !== undefined) {
124
+ this._currentDuration += delta.value;
125
+ if (this._currentDuration >= this._duration) {
126
+ if (!this._immortal) {
127
+ this._lifeCount--;
128
+ }
129
+ if (this._lifeCount > minLifeCount || this._immortal) {
130
+ this.position = this._calcPosition();
131
+ this._spawnDelay = this._container.retina.reduceFactor
132
+ ? ((0, engine_1.getRangeValue)(this.options.life.delay ?? defaultLifeDelay) * engine_1.millisecondsToSeconds) /
133
+ this._container.retina.reduceFactor
134
+ : Infinity;
135
+ }
136
+ this._currentDuration -= this._duration;
137
+ delete this._duration;
138
+ }
139
+ }
140
+ if (this._spawnDelay !== undefined) {
141
+ this._currentSpawnDelay += delta.value;
142
+ if (this._currentSpawnDelay >= this._spawnDelay) {
143
+ this.play();
144
+ this._currentSpawnDelay -= this._spawnDelay;
145
+ delete this._spawnDelay;
146
+ }
147
+ }
148
+ }
149
+ _calcPosition = () => {
150
+ const exactPosition = (0, engine_1.calcPositionOrRandomFromSizeRanged)({
151
+ size: this._container.canvas.size,
152
+ position: this.options.position,
153
+ });
154
+ return engine_1.Vector.create(exactPosition.x, exactPosition.y);
155
+ };
156
+ _prepareToDie = () => {
157
+ const duration = this.options.life.duration !== undefined ? (0, engine_1.getRangeValue)(this.options.life.duration) : undefined, minDuration = 0;
158
+ if ((this._lifeCount > minLifeCount || this._immortal) && duration !== undefined && duration > minDuration) {
159
+ this._duration = duration * engine_1.millisecondsToSeconds;
160
+ }
161
+ };
162
+ _updateParticlePosition = (particle, v) => {
163
+ if (particle.destroyed) {
164
+ return;
165
+ }
166
+ const container = this._container, canvasSize = container.canvas.size;
167
+ if (particle.needsNewPosition) {
168
+ const newPosition = (0, engine_1.calcPositionOrRandomFromSize)({ size: canvasSize });
169
+ particle.position.setTo(newPosition);
170
+ particle.velocity.setTo(particle.initialVelocity);
171
+ particle.absorberOrbit = undefined;
172
+ particle.needsNewPosition = false;
173
+ }
174
+ if (this.options.orbits) {
175
+ if (particle.absorberOrbit === undefined) {
176
+ particle.absorberOrbit = engine_1.Vector.origin;
177
+ particle.absorberOrbit.length = (0, engine_1.getDistance)(particle.getPosition(), this.position);
178
+ particle.absorberOrbit.angle = (0, engine_1.getRandom)() * maxAngle;
179
+ }
180
+ if (particle.absorberOrbit.length <= this.size && !this.options.destroy) {
181
+ const minSize = Math.min(canvasSize.width, canvasSize.height), offset = 1, randomOffset = 0.1, randomFactor = 0.2;
182
+ particle.absorberOrbit.length = minSize * (offset + ((0, engine_1.getRandom)() * randomFactor - randomOffset));
183
+ }
184
+ particle.absorberOrbitDirection ??=
185
+ particle.velocity.x >= minVelocity ? engine_1.RotateDirection.clockwise : engine_1.RotateDirection.counterClockwise;
186
+ const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;
187
+ particle.velocity.setTo(engine_1.Vector.origin);
188
+ const updateFunc = {
189
+ x: orbitDirection === engine_1.RotateDirection.clockwise ? Math.cos : Math.sin,
190
+ y: orbitDirection === engine_1.RotateDirection.clockwise ? Math.sin : Math.cos,
191
+ };
192
+ particle.position.x = this.position.x + orbitRadius * updateFunc.x(orbitAngle);
193
+ particle.position.y = this.position.y + orbitRadius * updateFunc.y(orbitAngle);
194
+ particle.absorberOrbit.length -= v.length;
195
+ particle.absorberOrbit.angle +=
196
+ (((particle.retina.moveSpeed ?? minVelocity) * container.retina.pixelRatio) / engine_1.percentDenominator) *
197
+ container.retina.reduceFactor;
198
+ }
199
+ else {
200
+ const addV = engine_1.Vector.origin;
201
+ addV.length = v.length;
202
+ addV.angle = v.angle;
203
+ particle.velocity.addTo(addV);
204
+ }
205
+ };
206
+ play = () => {
207
+ if (!((this._lifeCount > minLifeCount || this._immortal || !this.options.life.count) &&
208
+ (this._firstSpawn || this._currentSpawnDelay >= (this._spawnDelay ?? defaultSpawnDelay)))) {
209
+ return;
210
+ }
211
+ if (this._lifeCount > minLifeCount || this._immortal) {
212
+ this._prepareToDie();
213
+ }
214
+ };
142
215
  }
143
216
  exports.AbsorberInstance = AbsorberInstance;
144
217
  });
@@ -47,6 +47,8 @@ var __importStar = (this && this.__importStar) || (function () {
47
47
  const engine_1 = require("@tsparticles/engine");
48
48
  const defaultIndex = 0;
49
49
  class AbsorbersInstancesManager {
50
+ _containerArrays;
51
+ _engine;
50
52
  constructor(engine) {
51
53
  this._containerArrays = new Map();
52
54
  this._engine = engine;
@@ -15,9 +15,14 @@
15
15
  const Absorber_js_1 = require("./Options/Classes/Absorber.js");
16
16
  const absorbersMode = "absorbers";
17
17
  class AbsorbersInteractor extends plugin_interactivity_1.ExternalInteractorBase {
18
+ handleClickMode;
19
+ maxDistance;
20
+ _dragging = false;
21
+ _draggingAbsorber;
22
+ _instancesManager;
18
23
  constructor(container, instancesManager) {
19
24
  super(container);
20
- this.dragging = false;
25
+ this.maxDistance = 0;
21
26
  this._instancesManager = instancesManager;
22
27
  this._instancesManager.initContainer(container);
23
28
  this.handleClickMode = (mode, interactivityData) => {
@@ -50,15 +55,15 @@
50
55
  if (mouse.clicking && mouse.downPosition) {
51
56
  const mouseDist = (0, engine_1.getDistance)(absorber.position, mouse.downPosition);
52
57
  if (mouseDist <= absorber.size) {
53
- this.dragging = true;
54
- this.draggingAbsorber = absorber;
58
+ this._dragging = true;
59
+ this._draggingAbsorber = absorber;
55
60
  }
56
61
  }
57
62
  else {
58
- this.dragging = false;
59
- this.draggingAbsorber = undefined;
63
+ this._dragging = false;
64
+ this._draggingAbsorber = undefined;
60
65
  }
61
- if (this.dragging && this.draggingAbsorber == absorber && mouse.position) {
66
+ if (this._dragging && this._draggingAbsorber == absorber && mouse.position) {
62
67
  absorber.position.x = mouse.position.x;
63
68
  absorber.position.y = mouse.position.y;
64
69
  }
@@ -47,8 +47,9 @@ var __importStar = (this && this.__importStar) || (function () {
47
47
  const engine_1 = require("@tsparticles/engine");
48
48
  const Absorber_js_1 = require("./Options/Classes/Absorber.js");
49
49
  class AbsorbersPlugin {
50
+ id = "absorbers";
51
+ _instancesManager;
50
52
  constructor(instancesManager) {
51
- this.id = "absorbers";
52
53
  this._instancesManager = instancesManager;
53
54
  }
54
55
  async getPlugin(container) {
@@ -12,6 +12,8 @@
12
12
  exports.AbsorbersPluginInstance = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
14
  class AbsorbersPluginInstance {
15
+ _container;
16
+ _instancesManager;
15
17
  constructor(container, instancesManager) {
16
18
  this._container = container;
17
19
  this._instancesManager = instancesManager;
@@ -4,15 +4,25 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@tsparticles/engine", "./AbsorberSize.js"], factory);
7
+ define(["require", "exports", "@tsparticles/engine", "./AbsorberLife.js", "./AbsorberSize.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Absorber = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
+ const AbsorberLife_js_1 = require("./AbsorberLife.js");
14
15
  const AbsorberSize_js_1 = require("./AbsorberSize.js");
15
16
  class Absorber {
17
+ color;
18
+ destroy;
19
+ draggable;
20
+ life;
21
+ name;
22
+ opacity;
23
+ orbits;
24
+ position;
25
+ size;
16
26
  constructor() {
17
27
  this.color = new engine_1.OptionsColor();
18
28
  this.color.value = "#000000";
@@ -20,6 +30,7 @@
20
30
  this.opacity = 1;
21
31
  this.destroy = true;
22
32
  this.orbits = false;
33
+ this.life = new AbsorberLife_js_1.AbsorberLife();
23
34
  this.size = new AbsorberSize_js_1.AbsorberSize();
24
35
  }
25
36
  load(data) {
@@ -32,6 +43,9 @@
32
43
  if (data.draggable !== undefined) {
33
44
  this.draggable = data.draggable;
34
45
  }
46
+ if (data.life !== undefined) {
47
+ this.life.load(data.life);
48
+ }
35
49
  this.name = data.name;
36
50
  if (data.opacity !== undefined) {
37
51
  this.opacity = data.opacity;
@@ -0,0 +1,41 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AbsorberLife = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ class AbsorberLife {
15
+ count;
16
+ delay;
17
+ duration;
18
+ wait;
19
+ constructor() {
20
+ this.wait = false;
21
+ }
22
+ load(data) {
23
+ if ((0, engine_1.isNull)(data)) {
24
+ return;
25
+ }
26
+ if (data.count !== undefined) {
27
+ this.count = data.count;
28
+ }
29
+ if (data.delay !== undefined) {
30
+ this.delay = (0, engine_1.setRangeValue)(data.delay);
31
+ }
32
+ if (data.duration !== undefined) {
33
+ this.duration = (0, engine_1.setRangeValue)(data.duration);
34
+ }
35
+ if (data.wait !== undefined) {
36
+ this.wait = data.wait;
37
+ }
38
+ }
39
+ }
40
+ exports.AbsorberLife = AbsorberLife;
41
+ });
@@ -13,6 +13,8 @@
13
13
  const engine_1 = require("@tsparticles/engine");
14
14
  const AbsorberSizeLimit_js_1 = require("./AbsorberSizeLimit.js");
15
15
  class AbsorberSize extends engine_1.ValueWithRandom {
16
+ density;
17
+ limit;
16
18
  constructor() {
17
19
  super();
18
20
  this.density = 5;
@@ -12,6 +12,8 @@
12
12
  exports.AbsorberSizeLimit = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
14
  class AbsorberSizeLimit {
15
+ mass;
16
+ radius;
15
17
  constructor() {
16
18
  this.radius = 0;
17
19
  this.mass = 0;
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
package/umd/index.js CHANGED
@@ -45,10 +45,14 @@ var __importStar = (this && this.__importStar) || (function () {
45
45
  Object.defineProperty(exports, "__esModule", { value: true });
46
46
  exports.loadAbsorbersPlugin = loadAbsorbersPlugin;
47
47
  async function loadAbsorbersPlugin(engine) {
48
- engine.checkVersion("4.0.0-alpha.8");
48
+ engine.checkVersion("4.0.0-beta.0");
49
49
  await engine.register(async (e) => {
50
- const { loadInteractivityPlugin } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("@tsparticles/plugin-interactivity"))) : new Promise((resolve_1, reject_1) => { require(["@tsparticles/plugin-interactivity"], resolve_1, reject_1); }).then(__importStar)), { AbsorbersInstancesManager } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./AbsorbersInstancesManager.js"))) : new Promise((resolve_2, reject_2) => { require(["./AbsorbersInstancesManager.js"], resolve_2, reject_2); }).then(__importStar)), { AbsorbersPlugin } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./AbsorbersPlugin.js"))) : new Promise((resolve_3, reject_3) => { require(["./AbsorbersPlugin.js"], resolve_3, reject_3); }).then(__importStar)), instancesManager = new AbsorbersInstancesManager(e);
51
- await loadInteractivityPlugin(e);
50
+ const [{ ensureInteractivityPluginLoaded }, { AbsorbersInstancesManager }, { AbsorbersPlugin },] = await Promise.all([
51
+ __syncRequire ? Promise.resolve().then(() => __importStar(require("@tsparticles/plugin-interactivity"))) : new Promise((resolve_1, reject_1) => { require(["@tsparticles/plugin-interactivity"], resolve_1, reject_1); }).then(__importStar),
52
+ __syncRequire ? Promise.resolve().then(() => __importStar(require("./AbsorbersInstancesManager.js"))) : new Promise((resolve_2, reject_2) => { require(["./AbsorbersInstancesManager.js"], resolve_2, reject_2); }).then(__importStar),
53
+ __syncRequire ? Promise.resolve().then(() => __importStar(require("./AbsorbersPlugin.js"))) : new Promise((resolve_3, reject_3) => { require(["./AbsorbersPlugin.js"], resolve_3, reject_3); }).then(__importStar),
54
+ ]), instancesManager = new AbsorbersInstancesManager(e);
55
+ ensureInteractivityPluginLoaded(e);
52
56
  e.addPlugin(new AbsorbersPlugin(instancesManager));
53
57
  e.addInteractor?.("externalAbsorbers", async (container) => {
54
58
  const { AbsorbersInteractor } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./AbsorbersInteractor.js"))) : new Promise((resolve_4, reject_4) => { require(["./AbsorbersInteractor.js"], resolve_4, reject_4); }).then(__importStar));
package/215.min.js DELETED
@@ -1,2 +0,0 @@
1
- /*! For license information please see 215.min.js.LICENSE.txt */
2
- (this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[215],{104(i,t,s){s.d(t,{h:()=>a});var o=s(303);class e{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{constructor(){super(),this.density=5,this.value=50,this.limit=new e}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 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 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),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))}}},215(i,t,s){s.d(t,{AbsorberInstance:()=>a});var o=s(303),e=s(104);const n=o.doublePI;class a{constructor(i,t,s,a){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)()*n),i.absorberOrbit.length<=this.size&&!this.options.destroy){const t=Math.min(e.width,e.height),s=1,n=.1,a=.2;i.absorberOrbit.length=t*(s+((0,o.getRandom)()*a-n))}i.absorberOrbitDirection??=i.velocity.x>=0?o.RotateDirection.clockwise:o.RotateDirection.counterClockwise;const a=i.absorberOrbit.length,r=i.absorberOrbit.angle,h=i.absorberOrbitDirection;i.velocity.setTo(o.Vector.origin);const c={x:h===o.RotateDirection.clockwise?Math.cos:Math.sin,y:h===o.RotateDirection.clockwise?Math.sin:Math.cos};i.position.x=this.position.x+a*c.x(r),i.position.y=this.position.y+a*c.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._container=t,this._engine=i,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 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._engine,this.options.color)??{b:0,g:0,r:0},this.position=this.initialPosition?.copy()??this._calcPosition()}attract(i,t){const s=this._container,e=this.options,n=i.getPosition(),{dx:a,dy:r,distance:h}=(0,o.getDistances)(this.position,n),c=o.Vector.create(a,r);if(c.length=this.mass/Math.pow(h,2)*s.retina.reduceFactor,h<this.size+i.getRadius()){const o=.033*i.getRadius()*s.retina.pixelRatio*t.factor;this.size>i.getRadius()&&h<this.size-i.getRadius()||void 0!==i.absorberOrbit&&i.absorberOrbit.length<0?e.destroy?i.destroy():(i.needsNewPosition=!0,this._updateParticlePosition(i,c)):(e.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*s.retina.reduceFactor)}else this._updateParticlePosition(i,c)}draw(i){i.translate(this.position.x,this.position.y),i.beginPath(),i.arc(o.originPoint.x,o.originPoint.y,this.size,0,n,!1),i.closePath(),i.fillStyle=(0,o.getStyleFromRgb)(this.color,this._container.hdr,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()}}}}]);
@@ -1 +0,0 @@
1
- /*! tsParticles Absorbers Plugin v4.0.0-alpha.8 by Matteo Bruni */
package/384.min.js DELETED
@@ -1,2 +0,0 @@
1
- /*! For license information please see 384.min.js.LICENSE.txt */
2
- (this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[384],{104(s,i,t){t.d(i,{h:()=>a});var o=t(303);class e{constructor(){this.radius=0,this.mass=0}load(s){(0,o.isNull)(s)||(void 0!==s.mass&&(this.mass=s.mass),void 0!==s.radius&&(this.radius=s.radius))}}class r extends o.ValueWithRandom{constructor(){super(),this.density=5,this.value=50,this.limit=new e}load(s){(0,o.isNull)(s)||(super.load(s),void 0!==s.density&&(this.density=s.density),(0,o.isNumber)(s.limit)?this.limit.radius=s.limit:this.limit.load(s.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(s){(0,o.isNull)(s)||(void 0!==s.color&&(this.color=o.OptionsColor.create(this.color,s.color)),void 0!==s.draggable&&(this.draggable=s.draggable),this.name=s.name,void 0!==s.opacity&&(this.opacity=s.opacity),void 0!==s.position&&(this.position={},void 0!==s.position.x&&(this.position.x=(0,o.setRangeValue)(s.position.x)),void 0!==s.position.y&&(this.position.y=(0,o.setRangeValue)(s.position.y))),void 0!==s.size&&this.size.load(s.size),void 0!==s.destroy&&(this.destroy=s.destroy),void 0!==s.orbits&&(this.orbits=s.orbits))}}},384(s,i,t){t.d(i,{AbsorbersPlugin:()=>r});var o=t(303),e=t(104);class r{constructor(s){this.id="absorbers",this._instancesManager=s}async getPlugin(s){const{AbsorbersPluginInstance:i}=await t.e(903).then(t.bind(t,903));return new i(s,this._instancesManager)}loadOptions(s,i,t){(this.needsPlugin(i)||this.needsPlugin(t))&&t?.absorbers&&(i.absorbers=(0,o.executeOnSingleOrMultiple)(t.absorbers,(s=>{const i=new e.h;return i.load(s),i})))}needsPlugin(s){if(!s)return!1;const i=s.absorbers;return(0,o.isArray)(i)?!!i.length:!!i}}}}]);
@@ -1 +0,0 @@
1
- /*! tsParticles Absorbers Plugin v4.0.0-alpha.8 by Matteo Bruni */
package/688.min.js DELETED
@@ -1,2 +0,0 @@
1
- /*! For license information please see 688.min.js.LICENSE.txt */
2
- (this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[688],{104(i,s,t){t.d(s,{h:()=>n});var o=t(303);class r{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 e extends o.ValueWithRandom{constructor(){super(),this.density=5,this.value=50,this.limit=new r}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{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 e}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),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))}}},688(i,s,t){t.d(s,{AbsorbersInteractor:()=>a});var o=t(702),r=t(303),e=t(104);const n="absorbers";class a extends o.ExternalInteractorBase{constructor(i,s){super(i),this.dragging=!1,this._instancesManager=s,this._instancesManager.initContainer(i),this.handleClickMode=(i,t)=>{const o=this.container,a=o.actualOptions.interactivity.modes.absorbers;if(!a||i!==n)return;const{clickPosition:c}=t.mouse;if(c){if(s.getArray(this.container).some((i=>(0,r.getDistance)(i.position,c)<i.size)))return}const d=(0,r.itemFromArray)(a)??new e.h;this._instancesManager.addAbsorber(o,d,c)}}clear(){}init(){}interact(i,s){for(const t of this.container.particles.filter((s=>this.isEnabled(i,s))))for(const o of this._instancesManager.getArray(this.container)){if(o.options.draggable){const s=i.mouse;if(s.clicking&&s.downPosition){(0,r.getDistance)(o.position,s.downPosition)<=o.size&&(this.dragging=!0,this.draggingAbsorber=o)}else 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){const t=this.container.actualOptions,o=i.mouse,e=(s?.interactivity??t.interactivity).events;return!(!o.clickPosition||!e.onClick.enable)&&(0,r.isInArray)(n,e.onClick.mode)}loadModeOptions(i,...s){i.absorbers??=[];for(const t of s)if(t)if((0,r.isArray)(t.absorbers))for(const s of t.absorbers){const t=new e.h;t.load(s),i.absorbers.push(t)}else{const s=new e.h;s.load(t.absorbers),i.absorbers.push(s)}}reset(){}}}}]);
@@ -1 +0,0 @@
1
- /*! tsParticles Absorbers Plugin v4.0.0-alpha.8 by Matteo Bruni */
package/903.min.js DELETED
@@ -1,2 +0,0 @@
1
- /*! For license information please see 903.min.js.LICENSE.txt */
2
- (this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[903],{903(a,s,t){t.d(s,{AbsorbersPluginInstance:()=>i});var n=t(303);class i{constructor(a,s){this._container=a,this._instancesManager=s,this._instancesManager.initContainer(a)}draw(a){for(const s of this._instancesManager.getArray(this._container))s.draw(a)}async init(){const a=this._container.actualOptions.absorbers,s=(0,n.executeOnSingleOrMultiple)(a,(async a=>{await this._instancesManager.addAbsorber(this._container,a)}));(0,n.isArray)(s)?await Promise.all(s):await s}particleUpdate(a,s){for(const t of this._instancesManager.getArray(this._container))if(t.attract(a,s),a.destroyed)break}resize(){for(const a of this._instancesManager.getArray(this._container))a.resize()}stop(){this._instancesManager.clear(this._container)}}}}]);
@@ -1 +0,0 @@
1
- /*! tsParticles Absorbers Plugin v4.0.0-alpha.8 by Matteo Bruni */
package/980.min.js DELETED
@@ -1,2 +0,0 @@
1
- /*! For license information please see 980.min.js.LICENSE.txt */
2
- (this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[980],{980(r,s,t){t.d(s,{AbsorbersInstancesManager:()=>n});var e=t(303);class n{constructor(r){this._containerArrays=new Map,this._engine=r}async addAbsorber(r,s,e){const{AbsorberInstance:n}=await t.e(215).then(t.bind(t,215)),i=new n(this._engine,r,s,e);return this.getArray(r).push(i),i}clear(r){this.initContainer(r),this._containerArrays.set(r,[])}getArray(r){this.initContainer(r);let s=this._containerArrays.get(r);return s||(s=[],this._containerArrays.set(r,s)),s}initContainer(r){this._containerArrays.has(r)||(this._containerArrays.set(r,[]),r.getAbsorber??=s=>{const t=this.getArray(r);return void 0===s||(0,e.isNumber)(s)?t[s??0]:t.find((r=>r.name===s))},r.addAbsorber??=(s,t)=>this.addAbsorber(r,s,t))}removeAbsorber(r,s){const t=this.getArray(r).indexOf(s);t>=0&&this.getArray(r).splice(t,1)}}}}]);
@@ -1 +0,0 @@
1
- /*! tsParticles Absorbers Plugin v4.0.0-alpha.8 by Matteo Bruni */
@@ -1 +0,0 @@
1
- /*! tsParticles Absorbers Plugin v4.0.0-alpha.8 by Matteo Bruni */