@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.
Files changed (61) hide show
  1. package/122.min.js +1 -0
  2. package/{497.min.js → 285.min.js} +1 -1
  3. package/677.min.js +1 -0
  4. package/698.min.js +1 -0
  5. package/920.min.js +1 -0
  6. package/998.min.js +1 -0
  7. package/README.md +2 -2
  8. package/browser/AbsorberInstance.js +18 -24
  9. package/browser/AbsorbersInstancesManager.js +4 -4
  10. package/browser/getAbsorbersInstancesManager.js +11 -0
  11. package/browser/index.js +5 -14
  12. package/browser/interaction.js +15 -0
  13. package/browser/plugin.js +11 -0
  14. package/cjs/AbsorberInstance.js +18 -24
  15. package/cjs/AbsorbersInstancesManager.js +4 -4
  16. package/cjs/getAbsorbersInstancesManager.js +11 -0
  17. package/cjs/index.js +5 -14
  18. package/cjs/interaction.js +15 -0
  19. package/cjs/plugin.js +11 -0
  20. package/dist_browser_AbsorberInstance_js.js +2 -2
  21. package/dist_browser_AbsorbersInstancesManager_js.js +2 -2
  22. package/dist_browser_AbsorbersInteractor_js.js +1 -1
  23. package/dist_browser_AbsorbersPluginInstance_js.js +1 -1
  24. package/dist_browser_AbsorbersPlugin_js.js +1 -1
  25. package/dist_browser_getAbsorbersInstancesManager_js.js +30 -0
  26. package/esm/AbsorberInstance.js +18 -24
  27. package/esm/AbsorbersInstancesManager.js +4 -4
  28. package/esm/getAbsorbersInstancesManager.js +11 -0
  29. package/esm/index.js +5 -14
  30. package/esm/interaction.js +15 -0
  31. package/esm/plugin.js +11 -0
  32. package/package.json +24 -6
  33. package/report.html +84 -29
  34. package/tsparticles.plugin.absorbers.js +26 -6
  35. package/tsparticles.plugin.absorbers.min.js +2 -2
  36. package/types/AbsorberInstance.d.ts +4 -4
  37. package/types/AbsorbersInstancesManager.d.ts +3 -3
  38. package/types/AbsorbersPluginInstance.d.ts +2 -2
  39. package/types/getAbsorbersInstancesManager.d.ts +3 -0
  40. package/types/interaction.d.ts +3 -0
  41. package/types/plugin.d.ts +3 -0
  42. package/162.min.js +0 -1
  43. package/166.min.js +0 -1
  44. package/49.min.js +0 -1
  45. package/598.min.js +0 -1
  46. package/umd/AbsorberContainer.js +0 -12
  47. package/umd/AbsorberInstance.js +0 -217
  48. package/umd/AbsorbersInstancesManager.js +0 -97
  49. package/umd/AbsorbersInteractor.js +0 -109
  50. package/umd/AbsorbersPlugin.js +0 -86
  51. package/umd/AbsorbersPluginInstance.js +0 -56
  52. package/umd/Options/Classes/Absorber.js +0 -74
  53. package/umd/Options/Classes/AbsorberLife.js +0 -41
  54. package/umd/Options/Classes/AbsorberSize.js +0 -41
  55. package/umd/Options/Classes/AbsorberSizeLimit.js +0 -34
  56. package/umd/Options/Interfaces/IAbsorber.js +0 -12
  57. package/umd/Options/Interfaces/IAbsorberLife.js +0 -12
  58. package/umd/Options/Interfaces/IAbsorberSize.js +0 -12
  59. package/umd/Options/Interfaces/IAbsorberSizeLimit.js +0 -12
  60. package/umd/index.js +0 -63
  61. package/umd/types.js +0 -12
@@ -1,6 +1,6 @@
1
- import { RotateDirection, Vector, calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, doublePI, getDistance, getDistances, getRandom, getRangeValue, getStyleFromRgb, isPointInside, millisecondsToSeconds, originPoint, percentDenominator, rangeColorToRgb, } from "@tsparticles/engine";
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(engine, container, options, position) {
23
+ constructor(pluginManager, container, options, position) {
24
24
  this._container = container;
25
- this._engine = engine;
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._engine, this.options.color) ?? {
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 updateFunc = {
177
- x: orbitDirection === RotateDirection.clockwise ? Math.cos : Math.sin,
178
- y: orbitDirection === RotateDirection.clockwise ? Math.sin : Math.cos,
179
- };
180
- particle.position.x = this.position.x + orbitRadius * updateFunc.x(orbitAngle);
181
- particle.position.y = this.position.y + orbitRadius * updateFunc.y(orbitAngle);
182
- particle.absorberOrbit.length -= v.length;
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
- const addV = Vector.origin;
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
- _engine;
6
- constructor(engine) {
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._engine, container, options, position), array = this.getArray(container);
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/esm/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.checkVersion("4.0.0-beta.0");
3
- await engine.register(async (e) => {
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/esm/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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/plugin-absorbers",
3
- "version": "4.0.0-beta.0",
3
+ "version": "4.0.0-beta.2",
4
4
  "description": "tsParticles absorbers plugin",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -80,14 +80,32 @@
80
80
  "browser": "./browser/index.js",
81
81
  "import": "./esm/index.js",
82
82
  "require": "./cjs/index.js",
83
- "umd": "./umd/index.js",
84
- "default": "./cjs/index.js"
83
+ "default": "./esm/index.js"
84
+ },
85
+ "./interaction": {
86
+ "types": "./types/interaction.d.ts",
87
+ "browser": "./browser/interaction.js",
88
+ "import": "./esm/interaction.js",
89
+ "require": "./cjs/interaction.js",
90
+ "default": "./esm/interaction.js"
91
+ },
92
+ "./plugin": {
93
+ "types": "./types/plugin.d.ts",
94
+ "browser": "./browser/plugin.js",
95
+ "import": "./esm/plugin.js",
96
+ "require": "./cjs/plugin.js",
97
+ "default": "./esm/plugin.js"
85
98
  },
86
99
  "./package.json": "./package.json"
87
100
  },
88
- "dependencies": {
89
- "@tsparticles/engine": "4.0.0-beta.0",
90
- "@tsparticles/plugin-interactivity": "4.0.0-beta.0"
101
+ "peerDependencies": {
102
+ "@tsparticles/engine": "4.0.0-beta.1",
103
+ "@tsparticles/plugin-interactivity": "4.0.0-beta.1"
104
+ },
105
+ "peerDependenciesMeta": {
106
+ "@tsparticles/plugin-interactivity": {
107
+ "optional": true
108
+ }
91
109
  },
92
110
  "publishConfig": {
93
111
  "access": "public"