@tsparticles/plugin-absorbers 4.0.0-beta.0 → 4.0.0-beta.10
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/523.min.js +1 -0
- package/{162.min.js → 547.min.js} +1 -1
- package/{166.min.js → 555.min.js} +1 -1
- package/{497.min.js → 564.min.js} +1 -1
- package/63.min.js +1 -0
- package/986.min.js +1 -0
- package/README.md +29 -2
- package/browser/AbsorberInstance.js +18 -24
- package/browser/AbsorbersInstancesManager.js +4 -4
- package/browser/getAbsorbersInstancesManager.js +15 -0
- package/browser/index.js +4 -14
- package/browser/interaction.js +14 -0
- package/browser/plugin.js +10 -0
- package/cjs/AbsorberInstance.js +18 -24
- package/cjs/AbsorbersInstancesManager.js +4 -4
- package/cjs/getAbsorbersInstancesManager.js +15 -0
- package/cjs/index.js +4 -14
- package/cjs/interaction.js +14 -0
- package/cjs/plugin.js +10 -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 +15 -0
- package/esm/index.js +4 -14
- package/esm/interaction.js +14 -0
- package/esm/plugin.js +10 -0
- package/package.json +24 -6
- package/report.html +84 -29
- package/tsparticles.plugin.absorbers.js +22 -2
- 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/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
|
@@ -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.10
|
|
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();\nfunction getAbsorbersInstancesManager(e) {\n const pluginManager = e.pluginManager;\n let manager = instancesManagers.get(pluginManager);\n if (!manager) {\n manager = __webpack_require__.e(/*! import() */ \"dist_browser_AbsorbersInstancesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorbersInstancesManager.js */ \"./dist/browser/AbsorbersInstancesManager.js\")).then(({ AbsorbersInstancesManager })=>new AbsorbersInstancesManager(pluginManager)).catch((error)=>{\n instancesManagers.delete(pluginManager);\n throw error;\n });\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
|
+
}]);
|
package/esm/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,15 @@
|
|
|
1
|
+
const instancesManagers = new WeakMap();
|
|
2
|
+
export function getAbsorbersInstancesManager(e) {
|
|
3
|
+
const pluginManager = e.pluginManager;
|
|
4
|
+
let manager = instancesManagers.get(pluginManager);
|
|
5
|
+
if (!manager) {
|
|
6
|
+
manager = import("./AbsorbersInstancesManager.js")
|
|
7
|
+
.then(({ AbsorbersInstancesManager }) => new AbsorbersInstancesManager(pluginManager))
|
|
8
|
+
.catch((error) => {
|
|
9
|
+
instancesManagers.delete(pluginManager);
|
|
10
|
+
throw error;
|
|
11
|
+
});
|
|
12
|
+
instancesManagers.set(pluginManager, manager);
|
|
13
|
+
}
|
|
14
|
+
return manager;
|
|
15
|
+
}
|
package/esm/index.js
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
|
+
import { loadAbsorbersInteraction } from "./interaction.js";
|
|
2
|
+
import { loadAbsorbersPluginSimple } from "./plugin.js";
|
|
1
3
|
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
|
-
});
|
|
4
|
+
await loadAbsorbersPluginSimple(engine);
|
|
5
|
+
await loadAbsorbersInteraction(engine);
|
|
16
6
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export async function loadAbsorbersInteraction(engine) {
|
|
2
|
+
engine.checkVersion("4.0.0-beta.10");
|
|
3
|
+
await engine.pluginManager.register(async (e) => {
|
|
4
|
+
const [{ ensureInteractivityPluginLoaded }, { getAbsorbersInstancesManager },] = await Promise.all([
|
|
5
|
+
import("@tsparticles/plugin-interactivity"),
|
|
6
|
+
import("./getAbsorbersInstancesManager.js"),
|
|
7
|
+
]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);
|
|
8
|
+
ensureInteractivityPluginLoaded(e);
|
|
9
|
+
pluginManager.addInteractor?.("externalAbsorbers", async (container) => {
|
|
10
|
+
const { AbsorbersInteractor } = await import("./AbsorbersInteractor.js");
|
|
11
|
+
return new AbsorbersInteractor(container, instancesManager);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
}
|
package/esm/plugin.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export async function loadAbsorbersPluginSimple(engine) {
|
|
2
|
+
engine.checkVersion("4.0.0-beta.10");
|
|
3
|
+
await engine.pluginManager.register(async (e) => {
|
|
4
|
+
const [{ getAbsorbersInstancesManager }, { AbsorbersPlugin },] = await Promise.all([
|
|
5
|
+
import("./getAbsorbersInstancesManager.js"),
|
|
6
|
+
import("./AbsorbersPlugin.js"),
|
|
7
|
+
]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);
|
|
8
|
+
pluginManager.addPlugin(new AbsorbersPlugin(instancesManager));
|
|
9
|
+
});
|
|
10
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsparticles/plugin-absorbers",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.10",
|
|
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
|
-
"
|
|
84
|
-
|
|
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
|
-
"
|
|
89
|
-
"@tsparticles/engine": "4.0.0-beta.
|
|
90
|
-
"@tsparticles/plugin-interactivity": "4.0.0-beta.
|
|
101
|
+
"peerDependencies": {
|
|
102
|
+
"@tsparticles/engine": "4.0.0-beta.10",
|
|
103
|
+
"@tsparticles/plugin-interactivity": "4.0.0-beta.10"
|
|
104
|
+
},
|
|
105
|
+
"peerDependenciesMeta": {
|
|
106
|
+
"@tsparticles/plugin-interactivity": {
|
|
107
|
+
"optional": true
|
|
108
|
+
}
|
|
91
109
|
},
|
|
92
110
|
"publishConfig": {
|
|
93
111
|
"access": "public"
|