@tsparticles/plugin-absorbers 4.0.0-alpha.2 → 4.0.0-alpha.20
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/295.min.js +1 -0
- package/415.min.js +1 -0
- package/776.min.js +1 -0
- package/830.min.js +1 -0
- package/991.min.js +1 -0
- package/README.md +5 -0
- package/browser/AbsorberInstance.js +130 -75
- package/browser/AbsorbersInstancesManager.js +49 -0
- package/browser/AbsorbersInteractor.js +93 -0
- package/browser/AbsorbersPlugin.js +8 -17
- package/browser/AbsorbersPluginInstance.js +42 -0
- package/browser/Options/Classes/Absorber.js +14 -0
- package/browser/Options/Classes/AbsorberLife.js +27 -0
- package/browser/Options/Classes/AbsorberSize.js +2 -0
- package/browser/Options/Classes/AbsorberSizeLimit.js +2 -0
- package/browser/Options/Interfaces/IAbsorberLife.js +1 -0
- package/browser/index.js +14 -6
- package/cjs/AbsorberInstance.js +130 -75
- package/cjs/AbsorbersInstancesManager.js +49 -0
- package/cjs/AbsorbersInteractor.js +93 -0
- package/cjs/AbsorbersPlugin.js +8 -17
- package/cjs/AbsorbersPluginInstance.js +42 -0
- package/cjs/Options/Classes/Absorber.js +14 -0
- package/cjs/Options/Classes/AbsorberLife.js +27 -0
- package/cjs/Options/Classes/AbsorberSize.js +2 -0
- package/cjs/Options/Classes/AbsorberSizeLimit.js +2 -0
- package/cjs/Options/Interfaces/IAbsorberLife.js +1 -0
- package/cjs/index.js +14 -6
- package/dist_browser_AbsorberInstance_js.js +70 -0
- package/dist_browser_AbsorbersInstancesManager_js.js +30 -0
- package/dist_browser_AbsorbersInteractor_js.js +70 -0
- package/dist_browser_AbsorbersPluginInstance_js.js +30 -0
- package/dist_browser_AbsorbersPlugin_js.js +15 -25
- package/esm/AbsorberInstance.js +130 -75
- package/esm/AbsorbersInstancesManager.js +49 -0
- package/esm/AbsorbersInteractor.js +93 -0
- package/esm/AbsorbersPlugin.js +8 -17
- package/esm/AbsorbersPluginInstance.js +42 -0
- package/esm/Options/Classes/Absorber.js +14 -0
- package/esm/Options/Classes/AbsorberLife.js +27 -0
- package/esm/Options/Classes/AbsorberSize.js +2 -0
- package/esm/Options/Classes/AbsorberSizeLimit.js +2 -0
- package/esm/Options/Interfaces/IAbsorberLife.js +1 -0
- package/esm/index.js +14 -6
- package/package.json +3 -2
- package/report.html +3 -3
- package/tsparticles.plugin.absorbers.js +52 -22
- package/tsparticles.plugin.absorbers.min.js +2 -2
- package/types/AbsorberContainer.d.ts +5 -4
- package/types/AbsorberInstance.d.ts +15 -5
- package/types/AbsorbersInstancesManager.d.ts +14 -0
- package/types/AbsorbersInteractor.d.ts +18 -0
- package/types/AbsorbersPlugin.d.ts +7 -7
- package/types/AbsorbersPluginInstance.d.ts +13 -0
- package/types/Options/Classes/Absorber.d.ts +2 -0
- package/types/Options/Classes/AbsorberLife.d.ts +10 -0
- package/types/Options/Interfaces/IAbsorber.d.ts +2 -0
- package/types/Options/Interfaces/IAbsorberLife.d.ts +7 -0
- package/types/index.d.ts +1 -2
- package/types/types.d.ts +12 -9
- package/umd/AbsorberInstance.js +129 -74
- package/umd/AbsorbersInstancesManager.js +97 -0
- package/umd/AbsorbersInteractor.js +107 -0
- package/umd/AbsorbersPlugin.js +42 -17
- package/umd/AbsorbersPluginInstance.js +56 -0
- package/umd/Options/Classes/Absorber.js +15 -1
- package/umd/Options/Classes/AbsorberLife.js +41 -0
- package/umd/Options/Classes/AbsorberSize.js +2 -0
- package/umd/Options/Classes/AbsorberSizeLimit.js +2 -0
- package/umd/{Enums/AbsorberClickMode.js → Options/Interfaces/IAbsorberLife.js} +0 -5
- package/umd/index.js +15 -10
- package/47.min.js +0 -2
- package/47.min.js.LICENSE.txt +0 -1
- package/browser/Absorbers.js +0 -70
- package/browser/Enums/AbsorberClickMode.js +0 -4
- package/cjs/Absorbers.js +0 -70
- package/cjs/Enums/AbsorberClickMode.js +0 -4
- package/esm/Absorbers.js +0 -70
- package/esm/Enums/AbsorberClickMode.js +0 -4
- package/tsparticles.plugin.absorbers.min.js.LICENSE.txt +0 -1
- package/types/Absorbers.d.ts +0 -21
- package/types/Enums/AbsorberClickMode.d.ts +0 -3
- package/umd/Absorbers.js +0 -84
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
2
|
+
if (k2 === undefined) k2 = k;
|
|
3
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
4
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
5
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
6
|
+
}
|
|
7
|
+
Object.defineProperty(o, k2, desc);
|
|
8
|
+
}) : (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
o[k2] = m[k];
|
|
11
|
+
}));
|
|
12
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
13
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
14
|
+
}) : function(o, v) {
|
|
15
|
+
o["default"] = v;
|
|
16
|
+
});
|
|
17
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
18
|
+
var ownKeys = function(o) {
|
|
19
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
20
|
+
var ar = [];
|
|
21
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
22
|
+
return ar;
|
|
23
|
+
};
|
|
24
|
+
return ownKeys(o);
|
|
25
|
+
};
|
|
26
|
+
return function (mod) {
|
|
27
|
+
if (mod && mod.__esModule) return mod;
|
|
28
|
+
var result = {};
|
|
29
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
30
|
+
__setModuleDefault(result, mod);
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
})();
|
|
34
|
+
(function (factory) {
|
|
35
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
36
|
+
var v = factory(require, exports);
|
|
37
|
+
if (v !== undefined) module.exports = v;
|
|
38
|
+
}
|
|
39
|
+
else if (typeof define === "function" && define.amd) {
|
|
40
|
+
define(["require", "exports", "@tsparticles/engine"], factory);
|
|
41
|
+
}
|
|
42
|
+
})(function (require, exports) {
|
|
43
|
+
"use strict";
|
|
44
|
+
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.AbsorbersInstancesManager = void 0;
|
|
47
|
+
const engine_1 = require("@tsparticles/engine");
|
|
48
|
+
const defaultIndex = 0;
|
|
49
|
+
class AbsorbersInstancesManager {
|
|
50
|
+
_containerArrays;
|
|
51
|
+
_engine;
|
|
52
|
+
constructor(engine) {
|
|
53
|
+
this._containerArrays = new Map();
|
|
54
|
+
this._engine = engine;
|
|
55
|
+
}
|
|
56
|
+
async addAbsorber(container, options, position) {
|
|
57
|
+
const { AbsorberInstance } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./AbsorberInstance.js"))) : new Promise((resolve_1, reject_1) => { require(["./AbsorberInstance.js"], resolve_1, reject_1); }).then(__importStar)), absorber = new AbsorberInstance(this._engine, container, options, position), array = this.getArray(container);
|
|
58
|
+
array.push(absorber);
|
|
59
|
+
return absorber;
|
|
60
|
+
}
|
|
61
|
+
clear(container) {
|
|
62
|
+
this.initContainer(container);
|
|
63
|
+
this._containerArrays.set(container, []);
|
|
64
|
+
}
|
|
65
|
+
getArray(container) {
|
|
66
|
+
this.initContainer(container);
|
|
67
|
+
let array = this._containerArrays.get(container);
|
|
68
|
+
if (!array) {
|
|
69
|
+
array = [];
|
|
70
|
+
this._containerArrays.set(container, array);
|
|
71
|
+
}
|
|
72
|
+
return array;
|
|
73
|
+
}
|
|
74
|
+
initContainer(container) {
|
|
75
|
+
if (this._containerArrays.has(container)) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this._containerArrays.set(container, []);
|
|
79
|
+
container.getAbsorber ??= (idxOrName) => {
|
|
80
|
+
const array = this.getArray(container);
|
|
81
|
+
return idxOrName === undefined || (0, engine_1.isNumber)(idxOrName)
|
|
82
|
+
? array[idxOrName ?? defaultIndex]
|
|
83
|
+
: array.find(t => t.name === idxOrName);
|
|
84
|
+
};
|
|
85
|
+
container.addAbsorber ??= (options, position) => {
|
|
86
|
+
return this.addAbsorber(container, options, position);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
removeAbsorber(container, absorber) {
|
|
90
|
+
const index = this.getArray(container).indexOf(absorber), deleteCount = 1;
|
|
91
|
+
if (index >= defaultIndex) {
|
|
92
|
+
this.getArray(container).splice(index, deleteCount);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.AbsorbersInstancesManager = AbsorbersInstancesManager;
|
|
97
|
+
});
|
|
@@ -0,0 +1,107 @@
|
|
|
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/plugin-interactivity", "@tsparticles/engine", "./Options/Classes/Absorber.js"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AbsorbersInteractor = void 0;
|
|
13
|
+
const plugin_interactivity_1 = require("@tsparticles/plugin-interactivity");
|
|
14
|
+
const engine_1 = require("@tsparticles/engine");
|
|
15
|
+
const Absorber_js_1 = require("./Options/Classes/Absorber.js");
|
|
16
|
+
const absorbersMode = "absorbers";
|
|
17
|
+
class AbsorbersInteractor extends plugin_interactivity_1.ExternalInteractorBase {
|
|
18
|
+
handleClickMode;
|
|
19
|
+
_instancesManager;
|
|
20
|
+
dragging = false;
|
|
21
|
+
draggingAbsorber;
|
|
22
|
+
constructor(container, instancesManager) {
|
|
23
|
+
super(container);
|
|
24
|
+
this._instancesManager = instancesManager;
|
|
25
|
+
this._instancesManager.initContainer(container);
|
|
26
|
+
this.handleClickMode = (mode, interactivityData) => {
|
|
27
|
+
const container = this.container, options = container.actualOptions, absorbers = options.interactivity.modes.absorbers;
|
|
28
|
+
if (!absorbers || mode !== absorbersMode) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const { clickPosition } = interactivityData.mouse;
|
|
32
|
+
if (clickPosition) {
|
|
33
|
+
const existingAbsorber = instancesManager
|
|
34
|
+
.getArray(this.container)
|
|
35
|
+
.some(t => (0, engine_1.getDistance)(t.position, clickPosition) < t.size);
|
|
36
|
+
if (existingAbsorber) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const absorbersModeOptions = (0, engine_1.itemFromArray)(absorbers) ?? new Absorber_js_1.Absorber();
|
|
41
|
+
void this._instancesManager.addAbsorber(container, absorbersModeOptions, clickPosition);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
clear() {
|
|
45
|
+
}
|
|
46
|
+
init() {
|
|
47
|
+
}
|
|
48
|
+
interact(interactivityData, delta) {
|
|
49
|
+
for (const particle of this.container.particles.filter(p => this.isEnabled(interactivityData, p))) {
|
|
50
|
+
for (const absorber of this._instancesManager.getArray(this.container)) {
|
|
51
|
+
if (absorber.options.draggable) {
|
|
52
|
+
const mouse = interactivityData.mouse;
|
|
53
|
+
if (mouse.clicking && mouse.downPosition) {
|
|
54
|
+
const mouseDist = (0, engine_1.getDistance)(absorber.position, mouse.downPosition);
|
|
55
|
+
if (mouseDist <= absorber.size) {
|
|
56
|
+
this.dragging = true;
|
|
57
|
+
this.draggingAbsorber = absorber;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.dragging = false;
|
|
62
|
+
this.draggingAbsorber = undefined;
|
|
63
|
+
}
|
|
64
|
+
if (this.dragging && this.draggingAbsorber == absorber && mouse.position) {
|
|
65
|
+
absorber.position.x = mouse.position.x;
|
|
66
|
+
absorber.position.y = mouse.position.y;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
absorber.attract(particle, delta);
|
|
70
|
+
if (particle.destroyed) {
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
isEnabled(interactivityData, particle) {
|
|
77
|
+
const container = this.container, options = container.actualOptions, mouse = interactivityData.mouse, events = (particle?.interactivity ?? options.interactivity).events;
|
|
78
|
+
if (!mouse.clickPosition || !events.onClick.enable) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
return (0, engine_1.isInArray)(absorbersMode, events.onClick.mode);
|
|
82
|
+
}
|
|
83
|
+
loadModeOptions(options, ...sources) {
|
|
84
|
+
options.absorbers ??= [];
|
|
85
|
+
for (const source of sources) {
|
|
86
|
+
if (!source) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if ((0, engine_1.isArray)(source.absorbers)) {
|
|
90
|
+
for (const absorber of source.absorbers) {
|
|
91
|
+
const tmp = new Absorber_js_1.Absorber();
|
|
92
|
+
tmp.load(absorber);
|
|
93
|
+
options.absorbers.push(tmp);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
const tmp = new Absorber_js_1.Absorber();
|
|
98
|
+
tmp.load(source.absorbers);
|
|
99
|
+
options.absorbers.push(tmp);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
reset() {
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.AbsorbersInteractor = AbsorbersInteractor;
|
|
107
|
+
});
|
package/umd/AbsorbersPlugin.js
CHANGED
|
@@ -1,28 +1,62 @@
|
|
|
1
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
2
|
+
if (k2 === undefined) k2 = k;
|
|
3
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
4
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
5
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
6
|
+
}
|
|
7
|
+
Object.defineProperty(o, k2, desc);
|
|
8
|
+
}) : (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
o[k2] = m[k];
|
|
11
|
+
}));
|
|
12
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
13
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
14
|
+
}) : function(o, v) {
|
|
15
|
+
o["default"] = v;
|
|
16
|
+
});
|
|
17
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
18
|
+
var ownKeys = function(o) {
|
|
19
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
20
|
+
var ar = [];
|
|
21
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
22
|
+
return ar;
|
|
23
|
+
};
|
|
24
|
+
return ownKeys(o);
|
|
25
|
+
};
|
|
26
|
+
return function (mod) {
|
|
27
|
+
if (mod && mod.__esModule) return mod;
|
|
28
|
+
var result = {};
|
|
29
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
30
|
+
__setModuleDefault(result, mod);
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
})();
|
|
1
34
|
(function (factory) {
|
|
2
35
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
36
|
var v = factory(require, exports);
|
|
4
37
|
if (v !== undefined) module.exports = v;
|
|
5
38
|
}
|
|
6
39
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "@tsparticles/engine", "./Options/Classes/Absorber.js"
|
|
40
|
+
define(["require", "exports", "@tsparticles/engine", "./Options/Classes/Absorber.js"], factory);
|
|
8
41
|
}
|
|
9
42
|
})(function (require, exports) {
|
|
10
43
|
"use strict";
|
|
44
|
+
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
|
|
11
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
46
|
exports.AbsorbersPlugin = void 0;
|
|
13
47
|
const engine_1 = require("@tsparticles/engine");
|
|
14
48
|
const Absorber_js_1 = require("./Options/Classes/Absorber.js");
|
|
15
|
-
const AbsorberClickMode_js_1 = require("./Enums/AbsorberClickMode.js");
|
|
16
|
-
const Absorbers_js_1 = require("./Absorbers.js");
|
|
17
49
|
class AbsorbersPlugin {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
50
|
+
id = "absorbers";
|
|
51
|
+
_instancesManager;
|
|
52
|
+
constructor(instancesManager) {
|
|
53
|
+
this._instancesManager = instancesManager;
|
|
21
54
|
}
|
|
22
55
|
async getPlugin(container) {
|
|
23
|
-
|
|
56
|
+
const { AbsorbersPluginInstance } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./AbsorbersPluginInstance.js"))) : new Promise((resolve_1, reject_1) => { require(["./AbsorbersPluginInstance.js"], resolve_1, reject_1); }).then(__importStar));
|
|
57
|
+
return new AbsorbersPluginInstance(container, this._instancesManager);
|
|
24
58
|
}
|
|
25
|
-
loadOptions(options, source) {
|
|
59
|
+
loadOptions(_container, options, source) {
|
|
26
60
|
if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
|
|
27
61
|
return;
|
|
28
62
|
}
|
|
@@ -33,11 +67,6 @@
|
|
|
33
67
|
return tmp;
|
|
34
68
|
});
|
|
35
69
|
}
|
|
36
|
-
options.interactivity.modes.absorbers = (0, engine_1.executeOnSingleOrMultiple)(source?.interactivity?.modes?.absorbers, absorber => {
|
|
37
|
-
const tmp = new Absorber_js_1.Absorber();
|
|
38
|
-
tmp.load(absorber);
|
|
39
|
-
return tmp;
|
|
40
|
-
});
|
|
41
70
|
}
|
|
42
71
|
needsPlugin(options) {
|
|
43
72
|
if (!options) {
|
|
@@ -50,10 +79,6 @@
|
|
|
50
79
|
else if (absorbers) {
|
|
51
80
|
return true;
|
|
52
81
|
}
|
|
53
|
-
else if (options.interactivity?.events?.onClick?.mode &&
|
|
54
|
-
(0, engine_1.isInArray)(AbsorberClickMode_js_1.AbsorberClickMode.absorber, options.interactivity.events.onClick.mode)) {
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
82
|
return false;
|
|
58
83
|
}
|
|
59
84
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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.AbsorbersPluginInstance = void 0;
|
|
13
|
+
const engine_1 = require("@tsparticles/engine");
|
|
14
|
+
class AbsorbersPluginInstance {
|
|
15
|
+
_container;
|
|
16
|
+
_instancesManager;
|
|
17
|
+
constructor(container, instancesManager) {
|
|
18
|
+
this._container = container;
|
|
19
|
+
this._instancesManager = instancesManager;
|
|
20
|
+
this._instancesManager.initContainer(container);
|
|
21
|
+
}
|
|
22
|
+
draw(context) {
|
|
23
|
+
for (const absorber of this._instancesManager.getArray(this._container)) {
|
|
24
|
+
absorber.draw(context);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async init() {
|
|
28
|
+
const absorbers = this._container.actualOptions.absorbers, promises = (0, engine_1.executeOnSingleOrMultiple)(absorbers, async (absorber) => {
|
|
29
|
+
await this._instancesManager.addAbsorber(this._container, absorber);
|
|
30
|
+
});
|
|
31
|
+
if ((0, engine_1.isArray)(promises)) {
|
|
32
|
+
await Promise.all(promises);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
await promises;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
particleUpdate(particle, delta) {
|
|
39
|
+
for (const absorber of this._instancesManager.getArray(this._container)) {
|
|
40
|
+
absorber.attract(particle, delta);
|
|
41
|
+
if (particle.destroyed) {
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
resize() {
|
|
47
|
+
for (const absorber of this._instancesManager.getArray(this._container)) {
|
|
48
|
+
absorber.resize();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
stop() {
|
|
52
|
+
this._instancesManager.clear(this._container);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.AbsorbersPluginInstance = AbsorbersPluginInstance;
|
|
56
|
+
});
|
|
@@ -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
|
+
});
|
|
@@ -9,9 +9,4 @@
|
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.AbsorberClickMode = void 0;
|
|
13
|
-
var AbsorberClickMode;
|
|
14
|
-
(function (AbsorberClickMode) {
|
|
15
|
-
AbsorberClickMode["absorber"] = "absorber";
|
|
16
|
-
})(AbsorberClickMode || (exports.AbsorberClickMode = AbsorberClickMode = {}));
|
|
17
12
|
});
|
package/umd/index.js
CHANGED
|
@@ -31,28 +31,33 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
31
31
|
return result;
|
|
32
32
|
};
|
|
33
33
|
})();
|
|
34
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
35
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
36
|
-
};
|
|
37
34
|
(function (factory) {
|
|
38
35
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
39
36
|
var v = factory(require, exports);
|
|
40
37
|
if (v !== undefined) module.exports = v;
|
|
41
38
|
}
|
|
42
39
|
else if (typeof define === "function" && define.amd) {
|
|
43
|
-
define(["require", "exports"
|
|
40
|
+
define(["require", "exports"], factory);
|
|
44
41
|
}
|
|
45
42
|
})(function (require, exports) {
|
|
46
43
|
"use strict";
|
|
47
44
|
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
|
|
48
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
46
|
exports.loadAbsorbersPlugin = loadAbsorbersPlugin;
|
|
50
|
-
function loadAbsorbersPlugin(engine) {
|
|
51
|
-
engine.checkVersion("4.0.0-alpha.
|
|
52
|
-
engine.register(async (e) => {
|
|
53
|
-
const {
|
|
54
|
-
|
|
47
|
+
async function loadAbsorbersPlugin(engine) {
|
|
48
|
+
engine.checkVersion("4.0.0-alpha.20");
|
|
49
|
+
await engine.register(async (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);
|
|
56
|
+
e.addPlugin(new AbsorbersPlugin(instancesManager));
|
|
57
|
+
e.addInteractor?.("externalAbsorbers", async (container) => {
|
|
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));
|
|
59
|
+
return new AbsorbersInteractor(container, instancesManager);
|
|
60
|
+
});
|
|
55
61
|
});
|
|
56
62
|
}
|
|
57
|
-
__exportStar(require("./Enums/AbsorberClickMode.js"), exports);
|
|
58
63
|
});
|
package/47.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 47.min.js.LICENSE.txt */
|
|
2
|
-
(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[47],{47(i,t,s){s.d(t,{AbsorbersPlugin:()=>d});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 r 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 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 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),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))}}var a=s(633);const c=2*Math.PI;class h{constructor(i,t,s,e){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)()*c),i.absorberOrbit.length<=this.size&&!this.options.destroy){const t=Math.min(e.width,e.height),s=1,r=.1,n=.2;i.absorberOrbit.length=t*(s+((0,o.getRandom)()*n-r))}i.absorberOrbitDirection??=i.velocity.x>=0?o.RotateDirection.clockwise:o.RotateDirection.counterClockwise;const r=i.absorberOrbit.length,n=i.absorberOrbit.angle,a=i.absorberOrbitDirection;i.velocity.setTo(o.Vector.origin);const h={x:a===o.RotateDirection.clockwise?Math.cos:Math.sin,y:a===o.RotateDirection.clockwise?Math.sin:Math.cos};i.position.x=this.position.x+r*h.x(n),i.position.y=this.position.y+r*h.y(n),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=i,this._engine=t,this.initialPosition=e?o.Vector.create(e.x,e.y):void 0,s instanceof n?this.options=s:(this.options=new n,this.options.load(s)),this.dragging=!1,this.name=this.options.name,this.opacity=this.options.opacity,this.size=(0,o.getRangeValue)(this.options.size.value)*i.retina.pixelRatio,this.mass=this.size*this.options.size.density*i.retina.reduceFactor;const r=this.options.size.limit;this.limit={radius:r.radius*i.retina.pixelRatio*i.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){const t=this._container,s=this.options;if(s.draggable){const i=t.interactivity.mouse;if(i.clicking&&i.downPosition){(0,o.getDistance)(this.position,i.downPosition)<=this.size&&(this.dragging=!0)}else this.dragging=!1;this.dragging&&i.position&&(this.position.x=i.position.x,this.position.y=i.position.y)}const e=i.getPosition(),{dx:r,dy:n,distance:a}=(0,o.getDistances)(this.position,e),c=o.Vector.create(r,n);if(c.length=this.mass/Math.pow(a,2)*t.retina.reduceFactor,a<this.size+i.getRadius()){const o=.033*i.getRadius()*t.retina.pixelRatio;this.size>i.getRadius()&&a<this.size-i.getRadius()||void 0!==i.absorberOrbit&&i.absorberOrbit.length<0?s.destroy?i.destroy():(i.needsNewPosition=!0,this._updateParticlePosition(i,c)):(s.destroy&&(i.size.value-=o),this._updateParticlePosition(i,c)),(this.limit.radius<=0||this.size<this.limit.radius)&&(this.size+=o),(this.limit.mass<=0||this.mass<this.limit.mass)&&(this.mass+=o*this.options.size.density*t.retina.reduceFactor)}else this._updateParticlePosition(i,c)}draw(i){i.translate(this.position.x,this.position.y),i.beginPath(),i.arc(o.originPoint.x,o.originPoint.y,this.size,0,c,!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()}}class l{constructor(i,t){this._container=i,this._engine=t,this.array=[],this.absorbers=[],this.interactivityAbsorbers=[],i.getAbsorber=i=>void 0===i||(0,o.isNumber)(i)?this.array[i??0]:this.array.find((t=>t.name===i)),i.addAbsorber=async(i,t)=>this.addAbsorber(i,t)}async addAbsorber(i,t){const s=new h(this._container,this._engine,i,t);return this.array.push(s),Promise.resolve(s)}draw(i){for(const t of this.array)t.draw(i)}handleClickMode(i){const t=this.interactivityAbsorbers;if(i===a.w.absorber){const i=(0,o.itemFromSingleOrMultiple)(t)??new n,s=this._container.interactivity.mouse.clickPosition;this.addAbsorber(i,s)}}async init(){this.absorbers=this._container.actualOptions.absorbers,this.interactivityAbsorbers=this._container.actualOptions.interactivity.modes.absorbers;const i=(0,o.executeOnSingleOrMultiple)(this.absorbers,(async i=>{await this.addAbsorber(i)}));i instanceof Array?await Promise.all(i):await i}particleUpdate(i){for(const t of this.array)if(t.attract(i),i.destroyed)break}removeAbsorber(i){const t=this.array.indexOf(i);t>=0&&this.array.splice(t,1)}resize(){for(const i of this.array)i.resize()}stop(){this.array=[]}}class d{constructor(i){this.id="absorbers",this._engine=i}async getPlugin(i){return Promise.resolve(new l(i,this._engine))}loadOptions(i,t){(this.needsPlugin(i)||this.needsPlugin(t))&&(t?.absorbers&&(i.absorbers=(0,o.executeOnSingleOrMultiple)(t.absorbers,(i=>{const t=new n;return t.load(i),t}))),i.interactivity.modes.absorbers=(0,o.executeOnSingleOrMultiple)(t?.interactivity?.modes?.absorbers,(i=>{const t=new n;return t.load(i),t})))}needsPlugin(i){if(!i)return!1;const t=i.absorbers;return(0,o.isArray)(t)?!!t.length:!!t||!(!i.interactivity?.events?.onClick?.mode||!(0,o.isInArray)(a.w.absorber,i.interactivity.events.onClick.mode))}}}}]);
|
package/47.min.js.LICENSE.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tsParticles Absorbers Plugin v4.0.0-alpha.2 by Matteo Bruni */
|
package/browser/Absorbers.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { executeOnSingleOrMultiple, isNumber, itemFromSingleOrMultiple, } from "@tsparticles/engine";
|
|
2
|
-
import { Absorber } from "./Options/Classes/Absorber.js";
|
|
3
|
-
import { AbsorberClickMode } from "./Enums/AbsorberClickMode.js";
|
|
4
|
-
import { AbsorberInstance } from "./AbsorberInstance.js";
|
|
5
|
-
const defaultIndex = 0;
|
|
6
|
-
export class Absorbers {
|
|
7
|
-
constructor(container, engine) {
|
|
8
|
-
this._container = container;
|
|
9
|
-
this._engine = engine;
|
|
10
|
-
this.array = [];
|
|
11
|
-
this.absorbers = [];
|
|
12
|
-
this.interactivityAbsorbers = [];
|
|
13
|
-
container.getAbsorber = (idxOrName) => idxOrName === undefined || isNumber(idxOrName)
|
|
14
|
-
? this.array[idxOrName ?? defaultIndex]
|
|
15
|
-
: this.array.find(t => t.name === idxOrName);
|
|
16
|
-
container.addAbsorber = async (options, position) => this.addAbsorber(options, position);
|
|
17
|
-
}
|
|
18
|
-
async addAbsorber(options, position) {
|
|
19
|
-
const absorber = new AbsorberInstance(this._container, this._engine, options, position);
|
|
20
|
-
this.array.push(absorber);
|
|
21
|
-
return Promise.resolve(absorber);
|
|
22
|
-
}
|
|
23
|
-
draw(context) {
|
|
24
|
-
for (const absorber of this.array) {
|
|
25
|
-
absorber.draw(context);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
handleClickMode(mode) {
|
|
29
|
-
const modeAbsorbers = this.interactivityAbsorbers;
|
|
30
|
-
if (mode === AbsorberClickMode.absorber) {
|
|
31
|
-
const absorbersModeOptions = itemFromSingleOrMultiple(modeAbsorbers) ?? new Absorber(), aPosition = this._container.interactivity.mouse.clickPosition;
|
|
32
|
-
void this.addAbsorber(absorbersModeOptions, aPosition);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async init() {
|
|
36
|
-
this.absorbers = this._container.actualOptions.absorbers;
|
|
37
|
-
this.interactivityAbsorbers = this._container.actualOptions.interactivity.modes.absorbers;
|
|
38
|
-
const promises = executeOnSingleOrMultiple(this.absorbers, async (absorber) => {
|
|
39
|
-
await this.addAbsorber(absorber);
|
|
40
|
-
});
|
|
41
|
-
if (promises instanceof Array) {
|
|
42
|
-
await Promise.all(promises);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
await promises;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
particleUpdate(particle) {
|
|
49
|
-
for (const absorber of this.array) {
|
|
50
|
-
absorber.attract(particle);
|
|
51
|
-
if (particle.destroyed) {
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
removeAbsorber(absorber) {
|
|
57
|
-
const index = this.array.indexOf(absorber), deleteCount = 1;
|
|
58
|
-
if (index >= defaultIndex) {
|
|
59
|
-
this.array.splice(index, deleteCount);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
resize() {
|
|
63
|
-
for (const absorber of this.array) {
|
|
64
|
-
absorber.resize();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
stop() {
|
|
68
|
-
this.array = [];
|
|
69
|
-
}
|
|
70
|
-
}
|