@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.
Files changed (59) hide show
  1. package/523.min.js +1 -0
  2. package/{162.min.js → 547.min.js} +1 -1
  3. package/{166.min.js → 555.min.js} +1 -1
  4. package/{497.min.js → 564.min.js} +1 -1
  5. package/63.min.js +1 -0
  6. package/986.min.js +1 -0
  7. package/README.md +29 -2
  8. package/browser/AbsorberInstance.js +18 -24
  9. package/browser/AbsorbersInstancesManager.js +4 -4
  10. package/browser/getAbsorbersInstancesManager.js +15 -0
  11. package/browser/index.js +4 -14
  12. package/browser/interaction.js +14 -0
  13. package/browser/plugin.js +10 -0
  14. package/cjs/AbsorberInstance.js +18 -24
  15. package/cjs/AbsorbersInstancesManager.js +4 -4
  16. package/cjs/getAbsorbersInstancesManager.js +15 -0
  17. package/cjs/index.js +4 -14
  18. package/cjs/interaction.js +14 -0
  19. package/cjs/plugin.js +10 -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 +15 -0
  29. package/esm/index.js +4 -14
  30. package/esm/interaction.js +14 -0
  31. package/esm/plugin.js +10 -0
  32. package/package.json +24 -6
  33. package/report.html +84 -29
  34. package/tsparticles.plugin.absorbers.js +22 -2
  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/49.min.js +0 -1
  43. package/598.min.js +0 -1
  44. package/umd/AbsorberContainer.js +0 -12
  45. package/umd/AbsorberInstance.js +0 -217
  46. package/umd/AbsorbersInstancesManager.js +0 -97
  47. package/umd/AbsorbersInteractor.js +0 -109
  48. package/umd/AbsorbersPlugin.js +0 -86
  49. package/umd/AbsorbersPluginInstance.js +0 -56
  50. package/umd/Options/Classes/Absorber.js +0 -74
  51. package/umd/Options/Classes/AbsorberLife.js +0 -41
  52. package/umd/Options/Classes/AbsorberSize.js +0 -41
  53. package/umd/Options/Classes/AbsorberSizeLimit.js +0 -34
  54. package/umd/Options/Interfaces/IAbsorber.js +0 -12
  55. package/umd/Options/Interfaces/IAbsorberLife.js +0 -12
  56. package/umd/Options/Interfaces/IAbsorberSize.js +0 -12
  57. package/umd/Options/Interfaces/IAbsorberSizeLimit.js +0 -12
  58. package/umd/index.js +0 -63
  59. package/umd/types.js +0 -12
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-beta.0
7
+ * v4.0.0-beta.10
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -54,7 +54,27 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_plugin_interactivity__;
54
54
  \*******************************/
55
55
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
56
56
 
57
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadAbsorbersPlugin: () => (/* binding */ loadAbsorbersPlugin)\n/* harmony export */ });\nasync function loadAbsorbersPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.0\");\n await engine.register(async (e)=>{\n const [{ ensureInteractivityPluginLoaded }, { AbsorbersInstancesManager }, { AbsorbersPlugin }] = await Promise.all([\n Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! @tsparticles/plugin-interactivity */ \"@tsparticles/plugin-interactivity\", 19)),\n __webpack_require__.e(/*! import() */ \"dist_browser_AbsorbersInstancesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorbersInstancesManager.js */ \"./dist/browser/AbsorbersInstancesManager.js\")),\n __webpack_require__.e(/*! import() */ \"dist_browser_AbsorbersPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorbersPlugin.js */ \"./dist/browser/AbsorbersPlugin.js\"))\n ]), instancesManager = new AbsorbersInstancesManager(e);\n ensureInteractivityPluginLoaded(e);\n e.addPlugin(new AbsorbersPlugin(instancesManager));\n e.addInteractor?.(\"externalAbsorbers\", async (container)=>{\n const { AbsorbersInteractor } = await __webpack_require__.e(/*! import() */ \"dist_browser_AbsorbersInteractor_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorbersInteractor.js */ \"./dist/browser/AbsorbersInteractor.js\"));\n return new AbsorbersInteractor(container, instancesManager);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/index.js?\n}");
57
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadAbsorbersPlugin: () => (/* binding */ loadAbsorbersPlugin)\n/* harmony export */ });\n/* harmony import */ var _interaction_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interaction.js */ \"./dist/browser/interaction.js\");\n/* harmony import */ var _plugin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./plugin.js */ \"./dist/browser/plugin.js\");\n\n\nasync function loadAbsorbersPlugin(engine) {\n await (0,_plugin_js__WEBPACK_IMPORTED_MODULE_1__.loadAbsorbersPluginSimple)(engine);\n await (0,_interaction_js__WEBPACK_IMPORTED_MODULE_0__.loadAbsorbersInteraction)(engine);\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/index.js?\n}");
58
+
59
+ /***/ },
60
+
61
+ /***/ "./dist/browser/interaction.js"
62
+ /*!*************************************!*\
63
+ !*** ./dist/browser/interaction.js ***!
64
+ \*************************************/
65
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
66
+
67
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadAbsorbersInteraction: () => (/* binding */ loadAbsorbersInteraction)\n/* harmony export */ });\nasync function loadAbsorbersInteraction(engine) {\n engine.checkVersion(\"4.0.0-beta.10\");\n await engine.pluginManager.register(async (e)=>{\n const [{ ensureInteractivityPluginLoaded }, { getAbsorbersInstancesManager }] = await Promise.all([\n Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! @tsparticles/plugin-interactivity */ \"@tsparticles/plugin-interactivity\", 19)),\n __webpack_require__.e(/*! import() */ \"dist_browser_getAbsorbersInstancesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./getAbsorbersInstancesManager.js */ \"./dist/browser/getAbsorbersInstancesManager.js\"))\n ]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);\n ensureInteractivityPluginLoaded(e);\n pluginManager.addInteractor?.(\"externalAbsorbers\", async (container)=>{\n const { AbsorbersInteractor } = await __webpack_require__.e(/*! import() */ \"dist_browser_AbsorbersInteractor_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorbersInteractor.js */ \"./dist/browser/AbsorbersInteractor.js\"));\n return new AbsorbersInteractor(container, instancesManager);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/interaction.js?\n}");
68
+
69
+ /***/ },
70
+
71
+ /***/ "./dist/browser/plugin.js"
72
+ /*!********************************!*\
73
+ !*** ./dist/browser/plugin.js ***!
74
+ \********************************/
75
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
76
+
77
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadAbsorbersPluginSimple: () => (/* binding */ loadAbsorbersPluginSimple)\n/* harmony export */ });\nasync function loadAbsorbersPluginSimple(engine) {\n engine.checkVersion(\"4.0.0-beta.10\");\n await engine.pluginManager.register(async (e)=>{\n const [{ getAbsorbersInstancesManager }, { AbsorbersPlugin }] = await Promise.all([\n __webpack_require__.e(/*! import() */ \"dist_browser_getAbsorbersInstancesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./getAbsorbersInstancesManager.js */ \"./dist/browser/getAbsorbersInstancesManager.js\")),\n __webpack_require__.e(/*! import() */ \"dist_browser_AbsorbersPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./AbsorbersPlugin.js */ \"./dist/browser/AbsorbersPlugin.js\"))\n ]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);\n pluginManager.addPlugin(new AbsorbersPlugin(instancesManager));\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-absorbers/./dist/browser/plugin.js?\n}");
58
78
 
59
79
  /***/ }
60
80
 
@@ -1,2 +1,2 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/plugin-interactivity"),require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/plugin-interactivity","@tsparticles/engine"],t);else{var r="object"==typeof exports?t(require("@tsparticles/plugin-interactivity"),require("@tsparticles/engine")):t(e.window,e.window);for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(this,(e,t)=>(()=>{"use strict";var r,o,i,n={303(e){e.exports=t},702(t){t.exports=e}},a={};function s(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return n[e](r,r.exports,s),r.exports}s.m=n,l=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(e,t){if(1&t&&(e=this(e)),8&t||"object"==typeof e&&e&&(4&t&&e.__esModule||16&t&&"function"==typeof e.then))return e;var r=Object.create(null);s.r(r);var o={};c=c||[null,l({}),l([]),l(l)];for(var i=2&t&&e;("object"==typeof i||"function"==typeof i)&&!~c.indexOf(i);i=l(i))Object.getOwnPropertyNames(i).forEach(t=>o[t]=()=>e[t]);return o.default=()=>e,s.d(r,o),r},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,r)=>(s.f[r](e,t),t),[])),s.u=e=>""+e+".min.js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p={},s.l=(e,t,r,o)=>{if(p[e])return void p[e].push(t);if(void 0!==r)for(var i,n,a=document.getElementsByTagName("script"),c=0;c<a.length;c++){var l=a[c];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")=="@tsparticles/plugin-absorbers:"+r){i=l;break}}i||(n=!0,(i=document.createElement("script")).charset="utf-8",s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack","@tsparticles/plugin-absorbers:"+r),i.src=e),p[e]=[t];var u=(t,r)=>{i.onerror=i.onload=null,clearTimeout(d);var o=p[e];if(delete p[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(e=>e(r)),t)return t(r)},d=setTimeout(u.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=u.bind(null,i.onerror),i.onload=u.bind(null,i.onload),n&&document.head.appendChild(i)},s.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.g.importScripts&&(u=s.g.location+"");var c,l,p,u,d=s.g.document;if(!u&&d&&(d.currentScript&&"SCRIPT"===d.currentScript.tagName.toUpperCase()&&(u=d.currentScript.src),!u)){var f=d.getElementsByTagName("script");if(f.length)for(var b=f.length-1;b>-1&&(!u||!/^http(s?):/.test(u));)u=f[b--].src}if(!u)throw Error("Automatic publicPath is not supported in this browser");s.p=u=u.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r={425:0},s.f.j=(e,t)=>{var o=s.o(r,e)?r[e]:void 0;if(0!==o)if(o)t.push(o[2]);else{var i=new Promise((t,i)=>o=r[e]=[t,i]);t.push(o[2]=i);var n=s.p+s.u(e),a=Error();s.l(n,t=>{if(s.o(r,e)&&(0!==(o=r[e])&&(r[e]=void 0),o)){var i=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;a.message="Loading chunk "+e+` failed.
2
- (`+i+": "+n+")",a.name="ChunkLoadError",a.type=i,a.request=n,o[1](a)}},"chunk-"+e,e)}},o=(e,t)=>{var o,i,[n,a,c]=t,l=0;if(n.some(e=>0!==r[e])){for(o in a)s.o(a,o)&&(s.m[o]=a[o]);c&&c(s)}for(e&&e(t);l<n.length;l++)i=n[l],s.o(r,i)&&r[i]&&r[i][0](),r[i]=0},(i=this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).forEach(o.bind(null,0)),i.push=o.bind(null,i.push.bind(i));var g={};async function h(e){e.checkVersion("4.0.0-beta.0"),await e.register(async e=>{let[{ensureInteractivityPluginLoaded:t},{AbsorbersInstancesManager:r},{AbsorbersPlugin:o}]=await Promise.all([Promise.resolve().then(s.t.bind(s,702,19)),s.e(598).then(s.bind(s,598)),s.e(162).then(s.bind(s,162))]),i=new r(e);t(e),e.addPlugin(new o(i)),e.addInteractor?.("externalAbsorbers",async e=>{let{AbsorbersInteractor:t}=await s.e(166).then(s.bind(s,166));return new t(e,i)})})}return s.r(g),s.d(g,{loadAbsorbersPlugin:()=>h}),g})());
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/plugin-interactivity"),require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/plugin-interactivity","@tsparticles/engine"],t);else{var r="object"==typeof exports?t(require("@tsparticles/plugin-interactivity"),require("@tsparticles/engine")):t(e.window,e.window);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(this,(e,t)=>(()=>{"use strict";var r,n,i,o={303(e){e.exports=t},702(t){t.exports=e}},a={};function s(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return o[e](r,r.exports,s),r.exports}s.m=o,l=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(e,t){if(1&t&&(e=this(e)),8&t||"object"==typeof e&&e&&(4&t&&e.__esModule||16&t&&"function"==typeof e.then))return e;var r=Object.create(null);s.r(r);var n={};c=c||[null,l({}),l([]),l(l)];for(var i=2&t&&e;("object"==typeof i||"function"==typeof i)&&!~c.indexOf(i);i=l(i))Object.getOwnPropertyNames(i).forEach(t=>n[t]=()=>e[t]);return n.default=()=>e,s.d(r,n),r},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,r)=>(s.f[r](e,t),t),[])),s.u=e=>""+e+".min.js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p={},s.l=(e,t,r,n)=>{if(p[e])return void p[e].push(t);if(void 0!==r)for(var i,o,a=document.getElementsByTagName("script"),c=0;c<a.length;c++){var l=a[c];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")=="@tsparticles/plugin-absorbers:"+r){i=l;break}}i||(o=!0,(i=document.createElement("script")).charset="utf-8",s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack","@tsparticles/plugin-absorbers:"+r),i.src=e),p[e]=[t];var u=(t,r)=>{i.onerror=i.onload=null,clearTimeout(d);var n=p[e];if(delete p[e],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach(e=>e(r)),t)return t(r)},d=setTimeout(u.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=u.bind(null,i.onerror),i.onload=u.bind(null,i.onload),o&&document.head.appendChild(i)},s.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.g.importScripts&&(u=s.g.location+"");var c,l,p,u,d=s.g.document;if(!u&&d&&(d.currentScript&&"SCRIPT"===d.currentScript.tagName.toUpperCase()&&(u=d.currentScript.src),!u)){var f=d.getElementsByTagName("script");if(f.length)for(var b=f.length-1;b>-1&&(!u||!/^http(s?):/.test(u));)u=f[b--].src}if(!u)throw Error("Automatic publicPath is not supported in this browser");s.p=u=u.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r={425:0},s.f.j=(e,t)=>{var n=s.o(r,e)?r[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var i=new Promise((t,i)=>n=r[e]=[t,i]);t.push(n[2]=i);var o=s.p+s.u(e),a=Error();s.l(o,t=>{if(s.o(r,e)&&(0!==(n=r[e])&&(r[e]=void 0),n)){var i=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;a.message="Loading chunk "+e+` failed.
2
+ (`+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,n[1](a)}},"chunk-"+e,e)}},n=(e,t)=>{var n,i,[o,a,c]=t,l=0;if(o.some(e=>0!==r[e])){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);c&&c(s)}for(e&&e(t);l<o.length;l++)i=o[l],s.o(r,i)&&r[i]&&r[i][0](),r[i]=0},(i=this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).forEach(n.bind(null,0)),i.push=n.bind(null,i.push.bind(i));var g={};async function h(e){e.checkVersion("4.0.0-beta.10"),await e.pluginManager.register(async e=>{let[{ensureInteractivityPluginLoaded:t},{getAbsorbersInstancesManager:r}]=await Promise.all([Promise.resolve().then(s.t.bind(s,702,19)),s.e(63).then(s.bind(s,63))]),n=e.pluginManager,i=await r(e);t(e),n.addInteractor?.("externalAbsorbers",async e=>{let{AbsorbersInteractor:t}=await s.e(555).then(s.bind(s,555));return new t(e,i)})})}async function y(e){e.checkVersion("4.0.0-beta.10"),await e.pluginManager.register(async e=>{let[{getAbsorbersInstancesManager:t},{AbsorbersPlugin:r}]=await Promise.all([s.e(63).then(s.bind(s,63)),s.e(547).then(s.bind(s,547))]),n=e.pluginManager,i=await t(e);n.addPlugin(new r(i))})}async function m(e){await y(e),await h(e)}return s.r(g),s.d(g,{loadAbsorbersPlugin:()=>m}),g})());
@@ -1,4 +1,4 @@
1
- import { type Container, type Engine, type ICoordinates, type IDelta, type IRgb, type Particle, type RecursivePartial, RotateDirection, Vector } from "@tsparticles/engine";
1
+ import { type CanvasContextType, type Container, type ICoordinates, type IDelta, type IRgb, type Particle, type PluginManager, type RecursivePartial, RotateDirection, Vector } from "@tsparticles/engine";
2
2
  import { Absorber } from "./Options/Classes/Absorber.js";
3
3
  import type { IAbsorber } from "./Options/Interfaces/IAbsorber.js";
4
4
  import type { IAbsorberSizeLimit } from "./Options/Interfaces/IAbsorberSizeLimit.js";
@@ -20,15 +20,15 @@ export declare class AbsorberInstance {
20
20
  private _currentDuration;
21
21
  private _currentSpawnDelay;
22
22
  private _duration?;
23
- private readonly _engine;
24
23
  private _firstSpawn;
25
24
  private readonly _immortal;
26
25
  private _lifeCount;
26
+ private readonly _pluginManager;
27
27
  private _spawnDelay?;
28
28
  private readonly initialPosition?;
29
- constructor(engine: Engine, container: Container, options: RecursivePartial<IAbsorber>, position?: ICoordinates);
29
+ constructor(pluginManager: PluginManager, container: Container, options: RecursivePartial<IAbsorber>, position?: ICoordinates);
30
30
  attract(particle: OrbitingParticle, delta: IDelta): void;
31
- draw(context: CanvasRenderingContext2D): void;
31
+ draw(context: CanvasContextType): void;
32
32
  resize(): void;
33
33
  update(delta: IDelta): void;
34
34
  private readonly _calcPosition;
@@ -1,11 +1,11 @@
1
- import { type Engine, type ICoordinates, type RecursivePartial } from "@tsparticles/engine";
1
+ import { type ICoordinates, type PluginManager, type RecursivePartial } from "@tsparticles/engine";
2
2
  import type { AbsorberContainer } from "./AbsorberContainer.js";
3
3
  import type { AbsorberInstance } from "./AbsorberInstance.js";
4
4
  import type { IAbsorber } from "./Options/Interfaces/IAbsorber.js";
5
5
  export declare class AbsorbersInstancesManager {
6
6
  private readonly _containerArrays;
7
- private readonly _engine;
8
- constructor(engine: Engine);
7
+ private readonly _pluginManager;
8
+ constructor(pluginManager: PluginManager);
9
9
  addAbsorber(container: AbsorberContainer, options: RecursivePartial<IAbsorber>, position?: ICoordinates): Promise<AbsorberInstance>;
10
10
  clear(container: AbsorberContainer): void;
11
11
  getArray(container: AbsorberContainer): AbsorberInstance[];
@@ -1,11 +1,11 @@
1
- import { type IContainerPlugin, type IDelta, type Particle } from "@tsparticles/engine";
1
+ import { type CanvasContextType, type IContainerPlugin, type IDelta, type Particle } from "@tsparticles/engine";
2
2
  import type { AbsorberContainer } from "./AbsorberContainer.js";
3
3
  import type { AbsorbersInstancesManager } from "./AbsorbersInstancesManager.js";
4
4
  export declare class AbsorbersPluginInstance implements IContainerPlugin {
5
5
  private readonly _container;
6
6
  private readonly _instancesManager;
7
7
  constructor(container: AbsorberContainer, instancesManager: AbsorbersInstancesManager);
8
- draw(context: CanvasRenderingContext2D): void;
8
+ draw(context: CanvasContextType): void;
9
9
  init(): Promise<void>;
10
10
  particleUpdate(particle: Particle, delta: IDelta): void;
11
11
  resize(): void;
@@ -0,0 +1,3 @@
1
+ import type { AbsorbersInstancesManager } from "./AbsorbersInstancesManager.js";
2
+ import type { Engine } from "@tsparticles/engine";
3
+ export declare function getAbsorbersInstancesManager(e: Engine): Promise<AbsorbersInstancesManager>;
@@ -0,0 +1,3 @@
1
+ import { type Engine } from "@tsparticles/engine";
2
+ export declare function loadAbsorbersInteraction(engine: Engine): Promise<void>;
3
+ export type * from "./AbsorberContainer.js";
@@ -0,0 +1,3 @@
1
+ import { type Engine } from "@tsparticles/engine";
2
+ export declare function loadAbsorbersPluginSimple(engine: Engine): Promise<void>;
3
+ export type * from "./AbsorberContainer.js";
package/49.min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[49],{49(i,t,s){s.d(t,{AbsorberInstance:()=>n});var o=s(303),e=s(866);let a=o.doublePI;class n{color;limit;mass;name;opacity;options;position;size;_container;_currentDuration;_currentSpawnDelay;_duration;_engine;_firstSpawn;_immortal;_lifeCount;_spawnDelay;initialPosition;constructor(i,t,s,a){this._container=t,this._engine=i,this._currentDuration=0,this._currentSpawnDelay=0,this.initialPosition=a?o.Vector.create(a.x,a.y):void 0,s instanceof e.h?this.options=s:(this.options=new e.h,this.options.load(s)),this.name=this.options.name,this.opacity=this.options.opacity,this.size=(0,o.getRangeValue)(this.options.size.value)*t.retina.pixelRatio,this.mass=this.size*this.options.size.density*t.retina.reduceFactor;const n=this.options.size.limit;this.limit={radius:n.radius*t.retina.pixelRatio*t.retina.reduceFactor,mass:n.mass},this.color=(0,o.rangeColorToRgb)(this._engine,this.options.color)??{b:0,g:0,r:0},this.position=this.initialPosition?.copy()??this._calcPosition(),this._firstSpawn=!this.options.life.wait,this._lifeCount=this.options.life.count??-1,this._immortal=this._lifeCount<=0,this._spawnDelay=t.retina.reduceFactor?(0,o.getRangeValue)(this.options.life.delay??0)*o.millisecondsToSeconds/t.retina.reduceFactor:1/0}attract(i,t){let s=this._container,e=this.options,a=i.getPosition(),{dx:n,dy:r,distance:l}=(0,o.getDistances)(this.position,a),h=o.Vector.create(n,r);if(h.length=this.mass/Math.pow(l,2)*s.retina.reduceFactor,l<this.size+i.getRadius()){let o=.033*i.getRadius()*s.retina.pixelRatio*t.factor;this.size>i.getRadius()&&l<this.size-i.getRadius()||void 0!==i.absorberOrbit&&i.absorberOrbit.length<0?e.destroy?i.destroy():(i.needsNewPosition=!0,this._updateParticlePosition(i,h)):(e.destroy&&(i.size.value-=o),this._updateParticlePosition(i,h)),(this.limit.radius<=0||this.size<this.limit.radius)&&(this.size+=o),(this.limit.mass<=0||this.mass<this.limit.mass)&&(this.mass+=o*this.options.size.density*s.retina.reduceFactor)}else this._updateParticlePosition(i,h)}draw(i){i.translate(this.position.x,this.position.y),i.beginPath(),i.arc(o.originPoint.x,o.originPoint.y,this.size,0,a,!1),i.closePath(),i.fillStyle=(0,o.getStyleFromRgb)(this.color,this._container.hdr,this.opacity),i.fill()}resize(){let i=this.initialPosition;this.position=i&&(0,o.isPointInside)(i,this._container.canvas.size,o.Vector.origin)?i:this._calcPosition()}update(i){this._firstSpawn&&(this._firstSpawn=!1,this._currentSpawnDelay=this._spawnDelay??0),void 0!==this._duration&&(this._currentDuration+=i.value,this._currentDuration>=this._duration&&(!this._immortal&&this._lifeCount--,(this._lifeCount>0||this._immortal)&&(this.position=this._calcPosition(),this._spawnDelay=this._container.retina.reduceFactor?(0,o.getRangeValue)(this.options.life.delay??0)*o.millisecondsToSeconds/this._container.retina.reduceFactor:1/0),this._currentDuration-=this._duration,delete this._duration)),void 0!==this._spawnDelay&&(this._currentSpawnDelay+=i.value,this._currentSpawnDelay>=this._spawnDelay&&(this.play(),this._currentSpawnDelay-=this._spawnDelay,delete this._spawnDelay))}_calcPosition=()=>{let i=(0,o.calcPositionOrRandomFromSizeRanged)({size:this._container.canvas.size,position:this.options.position});return o.Vector.create(i.x,i.y)};_prepareToDie=()=>{let i=void 0!==this.options.life.duration?(0,o.getRangeValue)(this.options.life.duration):void 0;(this._lifeCount>0||this._immortal)&&void 0!==i&&i>0&&(this._duration=i*o.millisecondsToSeconds)};_updateParticlePosition=(i,t)=>{if(i.destroyed)return;let s=this._container,e=s.canvas.size;if(i.needsNewPosition){let 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)()*a),i.absorberOrbit.length<=this.size&&!this.options.destroy){let t=Math.min(e.width,e.height);i.absorberOrbit.length=t*(1+(.2*(0,o.getRandom)()-.1))}i.absorberOrbitDirection??=i.velocity.x>=0?o.RotateDirection.clockwise:o.RotateDirection.counterClockwise;let n=i.absorberOrbit.length,r=i.absorberOrbit.angle,l=i.absorberOrbitDirection;i.velocity.setTo(o.Vector.origin);let h={x:l===o.RotateDirection.clockwise?Math.cos:Math.sin,y:l===o.RotateDirection.clockwise?Math.sin:Math.cos};i.position.x=this.position.x+n*h.x(r),i.position.y=this.position.y+n*h.y(r),i.absorberOrbit.length-=t.length,i.absorberOrbit.angle+=(i.retina.moveSpeed??0)*s.retina.pixelRatio/o.percentDenominator*s.retina.reduceFactor}else{let s=o.Vector.origin;s.length=t.length,s.angle=t.angle,i.velocity.addTo(s)}};play=()=>{(this._lifeCount>0||this._immortal||!this.options.life.count)&&(this._firstSpawn||this._currentSpawnDelay>=(this._spawnDelay??0))&&(this._lifeCount>0||this._immortal)&&this._prepareToDie()}}},866(i,t,s){s.d(t,{h:()=>r});var o=s(303);class e{count;delay;duration;wait;constructor(){this.wait=!1}load(i){(0,o.isNull)(i)||(void 0!==i.count&&(this.count=i.count),void 0!==i.delay&&(this.delay=(0,o.setRangeValue)(i.delay)),void 0!==i.duration&&(this.duration=(0,o.setRangeValue)(i.duration)),void 0!==i.wait&&(this.wait=i.wait))}}class a{mass;radius;constructor(){this.radius=0,this.mass=0}load(i){(0,o.isNull)(i)||(void 0!==i.mass&&(this.mass=i.mass),void 0!==i.radius&&(this.radius=i.radius))}}class n extends o.ValueWithRandom{density;limit;constructor(){super(),this.density=5,this.value=50,this.limit=new a}load(i){(0,o.isNull)(i)||(super.load(i),void 0!==i.density&&(this.density=i.density),(0,o.isNumber)(i.limit)?this.limit.radius=i.limit:this.limit.load(i.limit))}}class r{color;destroy;draggable;life;name;opacity;orbits;position;size;constructor(){this.color=new o.OptionsColor,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.life=new e,this.size=new n}load(i){(0,o.isNull)(i)||(void 0!==i.color&&(this.color=o.OptionsColor.create(this.color,i.color)),void 0!==i.draggable&&(this.draggable=i.draggable),void 0!==i.life&&this.life.load(i.life),this.name=i.name,void 0!==i.opacity&&(this.opacity=i.opacity),void 0!==i.position&&(this.position={},void 0!==i.position.x&&(this.position.x=(0,o.setRangeValue)(i.position.x)),void 0!==i.position.y&&(this.position.y=(0,o.setRangeValue)(i.position.y))),void 0!==i.size&&this.size.load(i.size),void 0!==i.destroy&&(this.destroy=i.destroy),void 0!==i.orbits&&(this.orbits=i.orbits))}}}}]);
package/598.min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(this.webpackChunk_tsparticles_plugin_absorbers=this.webpackChunk_tsparticles_plugin_absorbers||[]).push([[598],{598(r,e,t){t.r(e),t.d(e,{AbsorbersInstancesManager:()=>i});var s=t(303);class i{_containerArrays;_engine;constructor(r){this._containerArrays=new Map,this._engine=r}async addAbsorber(r,e,s){let{AbsorberInstance:i}=await t.e(49).then(t.bind(t,49)),n=new i(this._engine,r,e,s);return this.getArray(r).push(n),n}clear(r){this.initContainer(r),this._containerArrays.set(r,[])}getArray(r){this.initContainer(r);let e=this._containerArrays.get(r);return e||(e=[],this._containerArrays.set(r,e)),e}initContainer(r){this._containerArrays.has(r)||(this._containerArrays.set(r,[]),r.getAbsorber??=e=>{let t=this.getArray(r);return void 0===e||(0,s.isNumber)(e)?t[e??0]:t.find(r=>r.name===e)},r.addAbsorber??=(e,t)=>this.addAbsorber(r,e,t))}removeAbsorber(r,e){let t=this.getArray(r).indexOf(e);t>=0&&this.getArray(r).splice(t,1)}}}}]);
@@ -1,12 +0,0 @@
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
- });
@@ -1,217 +0,0 @@
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", "./Options/Classes/Absorber.js"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.AbsorberInstance = void 0;
13
- const engine_1 = require("@tsparticles/engine");
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, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;
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;
35
- constructor(engine, container, options, position) {
36
- this._container = container;
37
- this._engine = engine;
38
- this._currentDuration = 0;
39
- this._currentSpawnDelay = 0;
40
- this.initialPosition = position ? engine_1.Vector.create(position.x, position.y) : undefined;
41
- if (options instanceof Absorber_js_1.Absorber) {
42
- this.options = options;
43
- }
44
- else {
45
- this.options = new Absorber_js_1.Absorber();
46
- this.options.load(options);
47
- }
48
- this.name = this.options.name;
49
- this.opacity = this.options.opacity;
50
- this.size = (0, engine_1.getRangeValue)(this.options.size.value) * container.retina.pixelRatio;
51
- this.mass = this.size * this.options.size.density * container.retina.reduceFactor;
52
- const limit = this.options.size.limit;
53
- this.limit = {
54
- radius: limit.radius * container.retina.pixelRatio * container.retina.reduceFactor,
55
- mass: limit.mass,
56
- };
57
- this.color = (0, engine_1.rangeColorToRgb)(this._engine, this.options.color) ?? {
58
- b: 0,
59
- g: 0,
60
- r: 0,
61
- };
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;
70
- }
71
- attract(particle, delta) {
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);
73
- v.length = (this.mass / Math.pow(distance, squareExp)) * container.retina.reduceFactor;
74
- if (distance < this.size + particle.getRadius()) {
75
- const sizeFactor = particle.getRadius() * absorbFactor * container.retina.pixelRatio * delta.factor;
76
- if ((this.size > particle.getRadius() && distance < this.size - particle.getRadius()) ||
77
- (particle.absorberOrbit !== undefined && particle.absorberOrbit.length < minOrbitLength)) {
78
- if (options.destroy) {
79
- particle.destroy();
80
- }
81
- else {
82
- particle.needsNewPosition = true;
83
- this._updateParticlePosition(particle, v);
84
- }
85
- }
86
- else {
87
- if (options.destroy) {
88
- particle.size.value -= sizeFactor;
89
- }
90
- this._updateParticlePosition(particle, v);
91
- }
92
- if (this.limit.radius <= minRadius || this.size < this.limit.radius) {
93
- this.size += sizeFactor;
94
- }
95
- if (this.limit.mass <= minMass || this.mass < this.limit.mass) {
96
- this.mass += sizeFactor * this.options.size.density * container.retina.reduceFactor;
97
- }
98
- }
99
- else {
100
- this._updateParticlePosition(particle, v);
101
- }
102
- }
103
- draw(context) {
104
- context.translate(this.position.x, this.position.y);
105
- context.beginPath();
106
- context.arc(engine_1.originPoint.x, engine_1.originPoint.y, this.size, minAngle, maxAngle, false);
107
- context.closePath();
108
- context.fillStyle = (0, engine_1.getStyleFromRgb)(this.color, this._container.hdr, this.opacity);
109
- context.fill();
110
- }
111
- resize() {
112
- const initialPosition = this.initialPosition;
113
- this.position =
114
- initialPosition && (0, engine_1.isPointInside)(initialPosition, this._container.canvas.size, engine_1.Vector.origin)
115
- ? initialPosition
116
- : this._calcPosition();
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
- };
215
- }
216
- exports.AbsorberInstance = AbsorberInstance;
217
- });
@@ -1,97 +0,0 @@
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
- });
@@ -1,109 +0,0 @@
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
- maxDistance;
20
- _dragging = false;
21
- _draggingAbsorber;
22
- _instancesManager;
23
- constructor(container, instancesManager) {
24
- super(container);
25
- this.maxDistance = 0;
26
- this._instancesManager = instancesManager;
27
- this._instancesManager.initContainer(container);
28
- this.handleClickMode = (mode, interactivityData) => {
29
- const container = this.container, options = container.actualOptions, absorbers = options.interactivity.modes.absorbers;
30
- if (!absorbers || mode !== absorbersMode) {
31
- return;
32
- }
33
- const { clickPosition } = interactivityData.mouse;
34
- if (clickPosition) {
35
- const existingAbsorber = instancesManager
36
- .getArray(this.container)
37
- .some(t => (0, engine_1.getDistance)(t.position, clickPosition) < t.size);
38
- if (existingAbsorber) {
39
- return;
40
- }
41
- }
42
- const absorbersModeOptions = (0, engine_1.itemFromArray)(absorbers) ?? new Absorber_js_1.Absorber();
43
- void this._instancesManager.addAbsorber(container, absorbersModeOptions, clickPosition);
44
- };
45
- }
46
- clear() {
47
- }
48
- init() {
49
- }
50
- interact(interactivityData, delta) {
51
- for (const particle of this.container.particles.filter(p => this.isEnabled(interactivityData, p))) {
52
- for (const absorber of this._instancesManager.getArray(this.container)) {
53
- if (absorber.options.draggable) {
54
- const mouse = interactivityData.mouse;
55
- if (mouse.clicking && mouse.downPosition) {
56
- const mouseDist = (0, engine_1.getDistance)(absorber.position, mouse.downPosition);
57
- if (mouseDist <= absorber.size) {
58
- this._dragging = true;
59
- this._draggingAbsorber = absorber;
60
- }
61
- }
62
- else {
63
- this._dragging = false;
64
- this._draggingAbsorber = undefined;
65
- }
66
- if (this._dragging && this._draggingAbsorber == absorber && mouse.position) {
67
- absorber.position.x = mouse.position.x;
68
- absorber.position.y = mouse.position.y;
69
- }
70
- }
71
- absorber.attract(particle, delta);
72
- if (particle.destroyed) {
73
- break;
74
- }
75
- }
76
- }
77
- }
78
- isEnabled(interactivityData, particle) {
79
- const container = this.container, options = container.actualOptions, mouse = interactivityData.mouse, events = (particle?.interactivity ?? options.interactivity).events;
80
- if (!mouse.clickPosition || !events.onClick.enable) {
81
- return false;
82
- }
83
- return (0, engine_1.isInArray)(absorbersMode, events.onClick.mode);
84
- }
85
- loadModeOptions(options, ...sources) {
86
- options.absorbers ??= [];
87
- for (const source of sources) {
88
- if (!source) {
89
- continue;
90
- }
91
- if ((0, engine_1.isArray)(source.absorbers)) {
92
- for (const absorber of source.absorbers) {
93
- const tmp = new Absorber_js_1.Absorber();
94
- tmp.load(absorber);
95
- options.absorbers.push(tmp);
96
- }
97
- }
98
- else {
99
- const tmp = new Absorber_js_1.Absorber();
100
- tmp.load(source.absorbers);
101
- options.absorbers.push(tmp);
102
- }
103
- }
104
- }
105
- reset() {
106
- }
107
- }
108
- exports.AbsorbersInteractor = AbsorbersInteractor;
109
- });