@tsparticles/plugin-emitters 4.0.0-beta.0 → 4.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/{588.min.js → 392.min.js} +1 -1
  2. package/399.min.js +1 -0
  3. package/410.min.js +1 -0
  4. package/{526.min.js → 414.min.js} +1 -1
  5. package/49.min.js +1 -0
  6. package/592.min.js +1 -0
  7. package/764.min.js +1 -0
  8. package/{803.min.js → 815.min.js} +1 -1
  9. package/browser/EmitterInstance.js +26 -34
  10. package/browser/EmittersInstancesManager.js +4 -4
  11. package/browser/addEmittersShapesManager.js +7 -0
  12. package/browser/ensureEmittersPluginLoaded.js +5 -0
  13. package/browser/getEmittersInstancesManager.js +11 -0
  14. package/browser/index.js +5 -24
  15. package/browser/interaction.js +18 -0
  16. package/browser/plugin.js +14 -0
  17. package/cjs/EmitterInstance.js +26 -34
  18. package/cjs/EmittersInstancesManager.js +4 -4
  19. package/cjs/addEmittersShapesManager.js +7 -0
  20. package/cjs/ensureEmittersPluginLoaded.js +5 -0
  21. package/cjs/getEmittersInstancesManager.js +11 -0
  22. package/cjs/index.js +5 -24
  23. package/cjs/interaction.js +18 -0
  24. package/cjs/plugin.js +14 -0
  25. package/dist_browser_EmitterInstance_js.js +2 -2
  26. package/dist_browser_EmittersInstancesManager_js.js +2 -2
  27. package/dist_browser_EmittersInteractor_js.js +1 -1
  28. package/dist_browser_EmittersPluginInstance_js.js +1 -1
  29. package/dist_browser_EmittersPlugin_js.js +1 -1
  30. package/dist_browser_ShapeManager_js.js +1 -1
  31. package/dist_browser_addEmittersShapesManager_js.js +30 -0
  32. package/dist_browser_getEmittersInstancesManager_js.js +30 -0
  33. package/esm/EmitterInstance.js +26 -34
  34. package/esm/EmittersInstancesManager.js +4 -4
  35. package/esm/addEmittersShapesManager.js +7 -0
  36. package/esm/ensureEmittersPluginLoaded.js +5 -0
  37. package/esm/getEmittersInstancesManager.js +11 -0
  38. package/esm/index.js +5 -24
  39. package/esm/interaction.js +18 -0
  40. package/esm/plugin.js +14 -0
  41. package/package.json +24 -6
  42. package/report.html +84 -29
  43. package/tsparticles.plugin.emitters.js +32 -2
  44. package/tsparticles.plugin.emitters.min.js +2 -2
  45. package/types/EmitterInstance.d.ts +5 -5
  46. package/types/EmittersEngine.d.ts +5 -2
  47. package/types/EmittersInstancesManager.d.ts +3 -3
  48. package/types/addEmittersShapesManager.d.ts +2 -0
  49. package/types/ensureEmittersPluginLoaded.d.ts +2 -0
  50. package/types/getEmittersInstancesManager.d.ts +3 -0
  51. package/types/index.d.ts +1 -1
  52. package/types/interaction.d.ts +9 -0
  53. package/types/plugin.d.ts +9 -0
  54. package/772.min.js +0 -1
  55. package/784.min.js +0 -1
  56. package/795.min.js +0 -1
  57. package/umd/EmitterContainer.js +0 -12
  58. package/umd/EmitterInstance.js +0 -366
  59. package/umd/EmitterShapeBase.js +0 -30
  60. package/umd/EmittersEngine.js +0 -12
  61. package/umd/EmittersInstancesManager.js +0 -119
  62. package/umd/EmittersInteractor.js +0 -130
  63. package/umd/EmittersPlugin.js +0 -80
  64. package/umd/EmittersPluginInstance.js +0 -58
  65. package/umd/Enums/EmitterClickMode.js +0 -17
  66. package/umd/IEmitterShape.js +0 -12
  67. package/umd/IEmitterShapeGenerator.js +0 -12
  68. package/umd/IRandomPositionData.js +0 -12
  69. package/umd/Options/Classes/Emitter.js +0 -93
  70. package/umd/Options/Classes/EmitterLife.js +0 -41
  71. package/umd/Options/Classes/EmitterRate.js +0 -34
  72. package/umd/Options/Classes/EmitterShape.js +0 -38
  73. package/umd/Options/Classes/EmitterShapeReplace.js +0 -34
  74. package/umd/Options/Classes/EmitterSize.js +0 -39
  75. package/umd/Options/Classes/EmitterSpawn.js +0 -32
  76. package/umd/Options/Interfaces/IEmitter.js +0 -12
  77. package/umd/Options/Interfaces/IEmitterLife.js +0 -12
  78. package/umd/Options/Interfaces/IEmitterRate.js +0 -12
  79. package/umd/Options/Interfaces/IEmitterShape.js +0 -12
  80. package/umd/Options/Interfaces/IEmitterShapeReplace.js +0 -12
  81. package/umd/Options/Interfaces/IEmitterSize.js +0 -12
  82. package/umd/Options/Interfaces/IEmitterSpawn.js +0 -12
  83. package/umd/ShapeManager.js +0 -28
  84. package/umd/constants.js +0 -17
  85. package/umd/index.js +0 -79
  86. 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.2
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -68,13 +68,43 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
68
68
 
69
69
  /***/ },
70
70
 
71
+ /***/ "./dist/browser/ensureEmittersPluginLoaded.js"
72
+ /*!****************************************************!*\
73
+ !*** ./dist/browser/ensureEmittersPluginLoaded.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 */ ensureEmittersPluginLoaded: () => (/* binding */ ensureEmittersPluginLoaded)\n/* harmony export */ });\nfunction ensureEmittersPluginLoaded(e) {\n if (!e.pluginManager.addEmitterShapeGenerator) {\n throw new Error(\"tsParticles Emitters Plugin is not loaded\");\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters/./dist/browser/ensureEmittersPluginLoaded.js?\n}");
78
+
79
+ /***/ },
80
+
71
81
  /***/ "./dist/browser/index.js"
72
82
  /*!*******************************!*\
73
83
  !*** ./dist/browser/index.js ***!
74
84
  \*******************************/
75
85
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
76
86
 
77
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EmitterClickMode: () => (/* reexport safe */ _Enums_EmitterClickMode_js__WEBPACK_IMPORTED_MODULE_1__.EmitterClickMode),\n/* harmony export */ EmitterShapeBase: () => (/* reexport safe */ _EmitterShapeBase_js__WEBPACK_IMPORTED_MODULE_0__.EmitterShapeBase),\n/* harmony export */ ensureEmittersPluginLoaded: () => (/* binding */ ensureEmittersPluginLoaded),\n/* harmony export */ loadEmittersPlugin: () => (/* binding */ loadEmittersPlugin)\n/* harmony export */ });\n/* harmony import */ var _EmitterShapeBase_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EmitterShapeBase.js */ \"./dist/browser/EmitterShapeBase.js\");\n/* harmony import */ var _Enums_EmitterClickMode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/EmitterClickMode.js */ \"./dist/browser/Enums/EmitterClickMode.js\");\nasync function loadEmittersPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.0\");\n await engine.register(async (e)=>{\n const [{ ensureInteractivityPluginLoaded }, { ShapeManager }, { EmittersInstancesManager }, { EmittersPlugin }] = 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_ShapeManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ShapeManager.js */ \"./dist/browser/ShapeManager.js\")),\n __webpack_require__.e(/*! import() */ \"dist_browser_EmittersInstancesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./EmittersInstancesManager.js */ \"./dist/browser/EmittersInstancesManager.js\")),\n __webpack_require__.e(/*! import() */ \"dist_browser_EmittersPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./EmittersPlugin.js */ \"./dist/browser/EmittersPlugin.js\"))\n ]), instancesManager = new EmittersInstancesManager(e);\n ensureInteractivityPluginLoaded(e);\n e.emitterShapeManager ??= new ShapeManager();\n e.addEmitterShapeGenerator ??= (name, generator)=>{\n e.emitterShapeManager?.addShapeGenerator(name, generator);\n };\n e.addPlugin(new EmittersPlugin(instancesManager));\n e.addInteractor?.(\"externalEmitters\", async (container)=>{\n const { EmittersInteractor } = await __webpack_require__.e(/*! import() */ \"dist_browser_EmittersInteractor_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./EmittersInteractor.js */ \"./dist/browser/EmittersInteractor.js\"));\n return new EmittersInteractor(instancesManager, container);\n });\n });\n}\nfunction ensureEmittersPluginLoaded(e) {\n if (!e.addEmitterShapeGenerator) {\n throw new Error(\"tsParticles Emitters Plugin is not loaded\");\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters/./dist/browser/index.js?\n}");
87
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EmitterClickMode: () => (/* reexport safe */ _Enums_EmitterClickMode_js__WEBPACK_IMPORTED_MODULE_4__.EmitterClickMode),\n/* harmony export */ EmitterShapeBase: () => (/* reexport safe */ _EmitterShapeBase_js__WEBPACK_IMPORTED_MODULE_3__.EmitterShapeBase),\n/* harmony export */ ensureEmittersPluginLoaded: () => (/* reexport safe */ _ensureEmittersPluginLoaded_js__WEBPACK_IMPORTED_MODULE_2__.ensureEmittersPluginLoaded),\n/* harmony export */ loadEmittersPlugin: () => (/* binding */ loadEmittersPlugin)\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/* harmony import */ var _ensureEmittersPluginLoaded_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ensureEmittersPluginLoaded.js */ \"./dist/browser/ensureEmittersPluginLoaded.js\");\n/* harmony import */ var _EmitterShapeBase_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./EmitterShapeBase.js */ \"./dist/browser/EmitterShapeBase.js\");\n/* harmony import */ var _Enums_EmitterClickMode_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Enums/EmitterClickMode.js */ \"./dist/browser/Enums/EmitterClickMode.js\");\n\n\nasync function loadEmittersPlugin(engine) {\n await (0,_plugin_js__WEBPACK_IMPORTED_MODULE_1__.loadEmittersPluginSimple)(engine);\n await (0,_interaction_js__WEBPACK_IMPORTED_MODULE_0__.loadEmittersInteraction)(engine);\n}\n\n\n\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters/./dist/browser/index.js?\n}");
88
+
89
+ /***/ },
90
+
91
+ /***/ "./dist/browser/interaction.js"
92
+ /*!*************************************!*\
93
+ !*** ./dist/browser/interaction.js ***!
94
+ \*************************************/
95
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
96
+
97
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EmitterClickMode: () => (/* reexport safe */ _Enums_EmitterClickMode_js__WEBPACK_IMPORTED_MODULE_1__.EmitterClickMode),\n/* harmony export */ EmitterShapeBase: () => (/* reexport safe */ _EmitterShapeBase_js__WEBPACK_IMPORTED_MODULE_0__.EmitterShapeBase),\n/* harmony export */ loadEmittersInteraction: () => (/* binding */ loadEmittersInteraction)\n/* harmony export */ });\n/* harmony import */ var _EmitterShapeBase_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EmitterShapeBase.js */ \"./dist/browser/EmitterShapeBase.js\");\n/* harmony import */ var _Enums_EmitterClickMode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/EmitterClickMode.js */ \"./dist/browser/Enums/EmitterClickMode.js\");\nasync function loadEmittersInteraction(engine) {\n engine.checkVersion(\"4.0.0-beta.2\");\n await engine.pluginManager.register(async (e)=>{\n const [{ ensureInteractivityPluginLoaded }, { addEmittersShapesManager }, { getEmittersInstancesManager }] = 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_addEmittersShapesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./addEmittersShapesManager.js */ \"./dist/browser/addEmittersShapesManager.js\")),\n __webpack_require__.e(/*! import() */ \"dist_browser_getEmittersInstancesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./getEmittersInstancesManager.js */ \"./dist/browser/getEmittersInstancesManager.js\"))\n ]), instancesManager = await getEmittersInstancesManager(e);\n ensureInteractivityPluginLoaded(e);\n await addEmittersShapesManager(e);\n e.pluginManager.addInteractor?.(\"externalEmitters\", async (container)=>{\n const { EmittersInteractor } = await __webpack_require__.e(/*! import() */ \"dist_browser_EmittersInteractor_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./EmittersInteractor.js */ \"./dist/browser/EmittersInteractor.js\"));\n return new EmittersInteractor(instancesManager, container);\n });\n });\n}\n\n\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters/./dist/browser/interaction.js?\n}");
98
+
99
+ /***/ },
100
+
101
+ /***/ "./dist/browser/plugin.js"
102
+ /*!********************************!*\
103
+ !*** ./dist/browser/plugin.js ***!
104
+ \********************************/
105
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
106
+
107
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EmitterClickMode: () => (/* reexport safe */ _Enums_EmitterClickMode_js__WEBPACK_IMPORTED_MODULE_1__.EmitterClickMode),\n/* harmony export */ EmitterShapeBase: () => (/* reexport safe */ _EmitterShapeBase_js__WEBPACK_IMPORTED_MODULE_0__.EmitterShapeBase),\n/* harmony export */ loadEmittersPluginSimple: () => (/* binding */ loadEmittersPluginSimple)\n/* harmony export */ });\n/* harmony import */ var _EmitterShapeBase_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EmitterShapeBase.js */ \"./dist/browser/EmitterShapeBase.js\");\n/* harmony import */ var _Enums_EmitterClickMode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/EmitterClickMode.js */ \"./dist/browser/Enums/EmitterClickMode.js\");\nasync function loadEmittersPluginSimple(engine) {\n engine.checkVersion(\"4.0.0-beta.2\");\n await engine.pluginManager.register(async (e)=>{\n const [{ addEmittersShapesManager }, { getEmittersInstancesManager }, { EmittersPlugin }] = await Promise.all([\n __webpack_require__.e(/*! import() */ \"dist_browser_addEmittersShapesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./addEmittersShapesManager.js */ \"./dist/browser/addEmittersShapesManager.js\")),\n __webpack_require__.e(/*! import() */ \"dist_browser_getEmittersInstancesManager_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./getEmittersInstancesManager.js */ \"./dist/browser/getEmittersInstancesManager.js\")),\n __webpack_require__.e(/*! import() */ \"dist_browser_EmittersPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./EmittersPlugin.js */ \"./dist/browser/EmittersPlugin.js\"))\n ]), instancesManager = await getEmittersInstancesManager(e);\n await addEmittersShapesManager(e);\n e.pluginManager.addPlugin(new EmittersPlugin(instancesManager));\n });\n}\n\n\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters/./dist/browser/plugin.js?\n}");
78
108
 
79
109
  /***/ }
80
110
 
@@ -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 i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(this,(e,t)=>(()=>{"use strict";var r,i,o,n,a={303(e){e.exports=t},702(t){t.exports=e}},s={};function l(e){var t=s[e];if(void 0!==t)return t.exports;var r=s[e]={exports:{}};return a[e](r,r.exports,l),r.exports}l.m=a,p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.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);l.r(r);var i={};c=c||[null,p({}),p([]),p(p)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~c.indexOf(o);o=p(o))Object.getOwnPropertyNames(o).forEach(t=>i[t]=()=>e[t]);return i.default=()=>e,l.d(r,i),r},l.d=(e,t)=>{for(var r in t)l.o(t,r)&&!l.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((t,r)=>(l.f[r](e,t),t),[])),l.u=e=>""+e+".min.js",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u={},l.l=(e,t,r,i)=>{if(u[e])return void u[e].push(t);if(void 0!==r)for(var o,n,a=document.getElementsByTagName("script"),s=0;s<a.length;s++){var c=a[s];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")=="@tsparticles/plugin-emitters:"+r){o=c;break}}o||(n=!0,(o=document.createElement("script")).charset="utf-8",l.nc&&o.setAttribute("nonce",l.nc),o.setAttribute("data-webpack","@tsparticles/plugin-emitters:"+r),o.src=e),u[e]=[t];var p=(t,r)=>{o.onerror=o.onload=null,clearTimeout(d);var i=u[e];if(delete u[e],o.parentNode&&o.parentNode.removeChild(o),i&&i.forEach(e=>e(r)),t)return t(r)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=p.bind(null,o.onerror),o.onload=p.bind(null,o.onload),n&&document.head.appendChild(o)},l.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.g.importScripts&&(d=l.g.location+"");var c,p,u,d,f=l.g.document;if(!d&&f&&(f.currentScript&&"SCRIPT"===f.currentScript.tagName.toUpperCase()&&(d=f.currentScript.src),!d)){var h=f.getElementsByTagName("script");if(h.length)for(var m=h.length-1;m>-1&&(!d||!/^http(s?):/.test(d));)d=h[m--].src}if(!d)throw Error("Automatic publicPath is not supported in this browser");l.p=d=d.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r={833:0},l.f.j=(e,t)=>{var i=l.o(r,e)?r[e]:void 0;if(0!==i)if(i)t.push(i[2]);else{var o=new Promise((t,o)=>i=r[e]=[t,o]);t.push(i[2]=o);var n=l.p+l.u(e),a=Error();l.l(n,t=>{if(l.o(r,e)&&(0!==(i=r[e])&&(r[e]=void 0),i)){var o=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;a.message="Loading chunk "+e+` failed.
2
- (`+o+": "+n+")",a.name="ChunkLoadError",a.type=o,a.request=n,i[1](a)}},"chunk-"+e,e)}},i=(e,t)=>{var i,o,[n,a,s]=t,c=0;if(n.some(e=>0!==r[e])){for(i in a)l.o(a,i)&&(l.m[i]=a[i]);s&&s(l)}for(e&&e(t);c<n.length;c++)o=n[c],l.o(r,o)&&r[o]&&r[o][0](),r[o]=0},(o=this.webpackChunk_tsparticles_plugin_emitters=this.webpackChunk_tsparticles_plugin_emitters||[]).forEach(i.bind(null,0)),o.push=i.bind(null,o.push.bind(o));var b={};l.r(b),l.d(b,{EmitterClickMode:()=>n,EmitterShapeBase:()=>g,ensureEmittersPluginLoaded:()=>v,loadEmittersPlugin:()=>y});class g{fill;options;position;size;constructor(e,t,r,i){this.position=e,this.size=t,this.fill=r,this.options=i}resize(e,t){this.position=e,this.size=t}}async function y(e){e.checkVersion("4.0.0-beta.0"),await e.register(async e=>{let[{ensureInteractivityPluginLoaded:t},{ShapeManager:r},{EmittersInstancesManager:i},{EmittersPlugin:o}]=await Promise.all([Promise.resolve().then(l.t.bind(l,702,19)),l.e(772).then(l.bind(l,772)),l.e(784).then(l.bind(l,784)),l.e(588).then(l.bind(l,588))]),n=new i(e);t(e),e.emitterShapeManager??=new r,e.addEmitterShapeGenerator??=(t,r)=>{e.emitterShapeManager?.addShapeGenerator(t,r)},e.addPlugin(new o(n)),e.addInteractor?.("externalEmitters",async e=>{let{EmittersInteractor:t}=await l.e(526).then(l.bind(l,526));return new t(n,e)})})}function v(e){if(!e.addEmitterShapeGenerator)throw Error("tsParticles Emitters Plugin is not loaded")}return(n||(n={})).emitter="emitter",b})());
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 i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(this,(e,t)=>(()=>{"use strict";var r,i,n,o,a={303(e){e.exports=t},702(t){t.exports=e}},s={};function l(e){var t=s[e];if(void 0!==t)return t.exports;var r=s[e]={exports:{}};return a[e](r,r.exports,l),r.exports}l.m=a,p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.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);l.r(r);var i={};c=c||[null,p({}),p([]),p(p)];for(var n=2&t&&e;("object"==typeof n||"function"==typeof n)&&!~c.indexOf(n);n=p(n))Object.getOwnPropertyNames(n).forEach(t=>i[t]=()=>e[t]);return i.default=()=>e,l.d(r,i),r},l.d=(e,t)=>{for(var r in t)l.o(t,r)&&!l.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((t,r)=>(l.f[r](e,t),t),[])),l.u=e=>""+e+".min.js",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u={},l.l=(e,t,r,i)=>{if(u[e])return void u[e].push(t);if(void 0!==r)for(var n,o,a=document.getElementsByTagName("script"),s=0;s<a.length;s++){var c=a[s];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")=="@tsparticles/plugin-emitters:"+r){n=c;break}}n||(o=!0,(n=document.createElement("script")).charset="utf-8",l.nc&&n.setAttribute("nonce",l.nc),n.setAttribute("data-webpack","@tsparticles/plugin-emitters:"+r),n.src=e),u[e]=[t];var p=(t,r)=>{n.onerror=n.onload=null,clearTimeout(d);var i=u[e];if(delete u[e],n.parentNode&&n.parentNode.removeChild(n),i&&i.forEach(e=>e(r)),t)return t(r)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=p.bind(null,n.onerror),n.onload=p.bind(null,n.onload),o&&document.head.appendChild(n)},l.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.g.importScripts&&(d=l.g.location+"");var c,p,u,d,f=l.g.document;if(!d&&f&&(f.currentScript&&"SCRIPT"===f.currentScript.tagName.toUpperCase()&&(d=f.currentScript.src),!d)){var g=f.getElementsByTagName("script");if(g.length)for(var h=g.length-1;h>-1&&(!d||!/^http(s?):/.test(d));)d=g[h--].src}if(!d)throw Error("Automatic publicPath is not supported in this browser");l.p=d=d.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r={833:0},l.f.j=(e,t)=>{var i=l.o(r,e)?r[e]:void 0;if(0!==i)if(i)t.push(i[2]);else{var n=new Promise((t,n)=>i=r[e]=[t,n]);t.push(i[2]=n);var o=l.p+l.u(e),a=Error();l.l(o,t=>{if(l.o(r,e)&&(0!==(i=r[e])&&(r[e]=void 0),i)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;a.message="Loading chunk "+e+` failed.
2
+ (`+n+": "+o+")",a.name="ChunkLoadError",a.type=n,a.request=o,i[1](a)}},"chunk-"+e,e)}},i=(e,t)=>{var i,n,[o,a,s]=t,c=0;if(o.some(e=>0!==r[e])){for(i in a)l.o(a,i)&&(l.m[i]=a[i]);s&&s(l)}for(e&&e(t);c<o.length;c++)n=o[c],l.o(r,n)&&r[n]&&r[n][0](),r[n]=0},(n=this.webpackChunk_tsparticles_plugin_emitters=this.webpackChunk_tsparticles_plugin_emitters||[]).forEach(i.bind(null,0)),n.push=i.bind(null,n.push.bind(n));var b={};async function m(e){e.checkVersion("4.0.0-beta.2"),await e.pluginManager.register(async e=>{let[{ensureInteractivityPluginLoaded:t},{addEmittersShapesManager:r},{getEmittersInstancesManager:i}]=await Promise.all([Promise.resolve().then(l.t.bind(l,702,19)),l.e(49).then(l.bind(l,49)),l.e(410).then(l.bind(l,410))]),n=await i(e);t(e),await r(e),e.pluginManager.addInteractor?.("externalEmitters",async e=>{let{EmittersInteractor:t}=await l.e(414).then(l.bind(l,414));return new t(n,e)})})}async function y(e){e.checkVersion("4.0.0-beta.2"),await e.pluginManager.register(async e=>{let[{addEmittersShapesManager:t},{getEmittersInstancesManager:r},{EmittersPlugin:i}]=await Promise.all([l.e(49).then(l.bind(l,49)),l.e(410).then(l.bind(l,410)),l.e(392).then(l.bind(l,392))]),n=await r(e);await t(e),e.pluginManager.addPlugin(new i(n))})}function v(e){if(!e.pluginManager.addEmitterShapeGenerator)throw Error("tsParticles Emitters Plugin is not loaded")}l.r(b),l.d(b,{EmitterClickMode:()=>o,EmitterShapeBase:()=>w,ensureEmittersPluginLoaded:()=>v,loadEmittersPlugin:()=>j});class w{fill;options;position;size;constructor(e,t,r,i){this.position=e,this.size=t,this.fill=r,this.options=i}resize(e,t){this.position=e,this.size=t}}async function j(e){await y(e),await m(e)}return(o||(o={})).emitter="emitter",b})());
@@ -1,10 +1,8 @@
1
1
  import { type Container, type ICoordinates, type IDelta, type IDimension, type IHsl, type RecursivePartial } from "@tsparticles/engine";
2
2
  import { Emitter } from "./Options/Classes/Emitter.js";
3
- import type { EmittersEngine } from "./EmittersEngine.js";
3
+ import type { EmittersPluginManager } from "./EmittersEngine.js";
4
4
  import type { IEmitter } from "./Options/Interfaces/IEmitter.js";
5
5
  export declare class EmitterInstance {
6
- private readonly container;
7
- private readonly removeCallback;
8
6
  fill: boolean;
9
7
  readonly name?: string;
10
8
  options: Emitter;
@@ -16,12 +14,12 @@ export declare class EmitterInstance {
16
14
  spawnStrokeColor?: IHsl;
17
15
  spawnStrokeOpacity?: number;
18
16
  spawnStrokeWidth?: number;
17
+ private readonly _container;
19
18
  private _currentDuration;
20
19
  private _currentEmitDelay;
21
20
  private _currentSpawnDelay;
22
21
  private _duration?;
23
22
  private _emitDelay?;
24
- private readonly _engine;
25
23
  private _firstSpawn;
26
24
  private readonly _immortal;
27
25
  private readonly _initialPosition?;
@@ -29,12 +27,14 @@ export declare class EmitterInstance {
29
27
  private _mutationObserver?;
30
28
  private readonly _particlesOptions;
31
29
  private _paused;
30
+ private readonly _pluginManager;
31
+ private readonly _removeCallback;
32
32
  private _resizeObserver?;
33
33
  private readonly _shape?;
34
34
  private _size;
35
35
  private _spawnDelay?;
36
36
  private _startParticlesAdded;
37
- constructor(engine: EmittersEngine, container: Container, removeCallback: (emitter: EmitterInstance) => void, options: Emitter | RecursivePartial<IEmitter>, position?: ICoordinates);
37
+ constructor(pluginManager: EmittersPluginManager, container: Container, removeCallback: (emitter: EmitterInstance) => void, options: Emitter | RecursivePartial<IEmitter>, position?: ICoordinates);
38
38
  externalPause(): void;
39
39
  externalPlay(): void;
40
40
  init(): Promise<void>;
@@ -1,7 +1,10 @@
1
+ import type { InteractivityEngine, InteractivityPluginManager } from "@tsparticles/plugin-interactivity";
1
2
  import type { IEmitterShapeGenerator } from "./IEmitterShapeGenerator.js";
2
- import type { InteractivityEngine } from "@tsparticles/plugin-interactivity";
3
3
  import type { ShapeManager } from "./ShapeManager.js";
4
- export type EmittersEngine = InteractivityEngine & {
4
+ export type EmittersPluginManager = InteractivityPluginManager & {
5
5
  addEmitterShapeGenerator?: (name: string, shape: IEmitterShapeGenerator) => void;
6
6
  emitterShapeManager?: ShapeManager;
7
7
  };
8
+ export type EmittersEngine = InteractivityEngine & {
9
+ pluginManager: EmittersPluginManager;
10
+ };
@@ -1,12 +1,12 @@
1
1
  import { type ICoordinates, type RecursivePartial } from "@tsparticles/engine";
2
2
  import type { EmitterContainer } from "./EmitterContainer.js";
3
3
  import type { EmitterInstance } from "./EmitterInstance.js";
4
- import type { EmittersEngine } from "./EmittersEngine.js";
4
+ import type { EmittersPluginManager } from "./EmittersEngine.js";
5
5
  import type { IEmitter } from "./Options/Interfaces/IEmitter.js";
6
6
  export declare class EmittersInstancesManager {
7
7
  private readonly _containerArrays;
8
- private readonly _engine;
9
- constructor(engine: EmittersEngine);
8
+ private readonly _pluginManager;
9
+ constructor(pluginManager: EmittersPluginManager);
10
10
  addEmitter(container: EmitterContainer, options: RecursivePartial<IEmitter>, position?: ICoordinates): Promise<EmitterInstance>;
11
11
  clear(container: EmitterContainer): void;
12
12
  getArray(container: EmitterContainer): EmitterInstance[];
@@ -0,0 +1,2 @@
1
+ import type { EmittersEngine } from "./EmittersEngine.js";
2
+ export declare function addEmittersShapesManager(e: EmittersEngine): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import type { EmittersEngine } from "./EmittersEngine.js";
2
+ export declare function ensureEmittersPluginLoaded(e: EmittersEngine): void;
@@ -0,0 +1,3 @@
1
+ import type { EmittersInstancesManager } from "./EmittersInstancesManager.js";
2
+ import type { Engine } from "@tsparticles/engine";
3
+ export declare function getEmittersInstancesManager(e: Engine): Promise<EmittersInstancesManager>;
package/types/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { EmittersEngine } from "./EmittersEngine.js";
2
2
  export declare function loadEmittersPlugin(engine: EmittersEngine): Promise<void>;
3
- export declare function ensureEmittersPluginLoaded(e: EmittersEngine): void;
3
+ export * from "./ensureEmittersPluginLoaded.js";
4
4
  export type * from "./EmitterContainer.js";
5
5
  export * from "./EmitterShapeBase.js";
6
6
  export type * from "./EmittersEngine.js";
@@ -0,0 +1,9 @@
1
+ import type { EmittersEngine } from "./EmittersEngine.js";
2
+ export declare function loadEmittersInteraction(engine: EmittersEngine): Promise<void>;
3
+ export type * from "./EmitterContainer.js";
4
+ export * from "./EmitterShapeBase.js";
5
+ export type * from "./EmittersEngine.js";
6
+ export type * from "./IEmitterShape.js";
7
+ export type * from "./IEmitterShapeGenerator.js";
8
+ export * from "./Enums/EmitterClickMode.js";
9
+ export type * from "./IRandomPositionData.js";
@@ -0,0 +1,9 @@
1
+ import type { EmittersEngine } from "./EmittersEngine.js";
2
+ export declare function loadEmittersPluginSimple(engine: EmittersEngine): Promise<void>;
3
+ export type * from "./EmitterContainer.js";
4
+ export * from "./EmitterShapeBase.js";
5
+ export type * from "./EmittersEngine.js";
6
+ export type * from "./IEmitterShape.js";
7
+ export type * from "./IEmitterShapeGenerator.js";
8
+ export * from "./Enums/EmitterClickMode.js";
9
+ export type * from "./IRandomPositionData.js";
package/772.min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(this.webpackChunk_tsparticles_plugin_emitters=this.webpackChunk_tsparticles_plugin_emitters||[]).push([[772],{772(e,t,r){r.r(t),r.d(t,{ShapeManager:()=>s});let a=new Map;class s{addShapeGenerator(e,t){this.getShapeGenerator(e)||a.set(e,t)}getShapeGenerator(e){return a.get(e)}getSupportedShapeGenerators(){return a.keys()}}}}]);
package/784.min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(this.webpackChunk_tsparticles_plugin_emitters=this.webpackChunk_tsparticles_plugin_emitters||[]).push([[784],{784(t,i,e){e.r(i),e.d(i,{EmittersInstancesManager:()=>a});var s=e(303),o=e(982);class a{_containerArrays;_engine;constructor(t){this._containerArrays=new Map,this._engine=t}async addEmitter(t,i,s){let a=new o.v;a.load(i);let{EmitterInstance:l}=await e.e(795).then(e.bind(e,795)),r=new l(this._engine,t,i=>{this.removeEmitter(t,i)},a,s);return await r.init(),this.getArray(t).push(r),r}clear(t){this.initContainer(t),this._containerArrays.set(t,[])}getArray(t){this.initContainer(t);let i=this._containerArrays.get(t);return i||(i=[],this._containerArrays.set(t,i)),i}initContainer(t){this._containerArrays.has(t)||(this._containerArrays.set(t,[]),t.getEmitter=i=>{let e=this.getArray(t);return void 0===i||(0,s.isNumber)(i)?e[i??0]:e.find(t=>t.name===i)},t.addEmitter=async(i,e)=>this.addEmitter(t,i,e),t.removeEmitter=i=>{let e=t.getEmitter?.(i);e&&this.removeEmitter(t,e)},t.playEmitter=i=>{let e=t.getEmitter?.(i);e&&e.externalPlay()},t.pauseEmitter=i=>{let e=t.getEmitter?.(i);e&&e.externalPause()})}removeEmitter(t,i){let e=this.getArray(t).indexOf(i);e>=0&&this.getArray(t).splice(e,1)}}},982(t,i,e){e.d(i,{v:()=>d});var s=e(303);class o{count;delay;duration;wait;constructor(){this.wait=!1}load(t){(0,s.isNull)(t)||(void 0!==t.count&&(this.count=t.count),void 0!==t.delay&&(this.delay=(0,s.setRangeValue)(t.delay)),void 0!==t.duration&&(this.duration=(0,s.setRangeValue)(t.duration)),void 0!==t.wait&&(this.wait=t.wait))}}class a{delay;quantity;constructor(){this.quantity=1,this.delay=.1}load(t){(0,s.isNull)(t)||(void 0!==t.quantity&&(this.quantity=(0,s.setRangeValue)(t.quantity)),void 0!==t.delay&&(this.delay=(0,s.setRangeValue)(t.delay)))}}class l{color;opacity;constructor(){this.color=!1,this.opacity=!1}load(t){(0,s.isNull)(t)||(void 0!==t.color&&(this.color=t.color),void 0!==t.opacity&&(this.opacity=t.opacity))}}class r{options;replace;type;constructor(){this.options={},this.replace=new l,this.type="square"}load(t){(0,s.isNull)(t)||(void 0!==t.options&&(this.options=(0,s.deepExtend)({},t.options??{})),this.replace.load(t.replace),void 0!==t.type&&(this.type=t.type))}}var n=e(747);class h{fill;stroke;load(t){!(0,s.isNull)(t)&&(t.fill&&(this.fill??=new s.Fill,this.fill.load(t.fill)),t.stroke&&(this.stroke??=new s.Stroke,this.stroke.load(t.stroke)))}}class d{autoPlay;direction;domId;fill;life;name;particles;position;rate;shape;size;spawn;spawnFillColor;spawnStrokeColor;startCount;constructor(){this.autoPlay=!0,this.fill=!0,this.life=new o,this.rate=new a,this.shape=new r,this.spawn=new h,this.startCount=0}load(t){(0,s.isNull)(t)||(void 0!==t.autoPlay&&(this.autoPlay=t.autoPlay),void 0!==t.size&&(this.size??=new n.G,this.size.load(t.size)),void 0!==t.direction&&(this.direction=t.direction),this.domId=t.domId,void 0!==t.fill&&(this.fill=t.fill),this.life.load(t.life),this.name=t.name,this.particles=(0,s.executeOnSingleOrMultiple)(t.particles,t=>(0,s.deepExtend)({},t)),this.rate.load(t.rate),this.shape.load(t.shape),this.spawn.load(t.spawn),void 0!==t.position&&(this.position={},void 0!==t.position.x&&(this.position.x=(0,s.setRangeValue)(t.position.x)),void 0!==t.position.y&&(this.position.y=(0,s.setRangeValue)(t.position.y))),void 0!==t.spawnFillColor&&(this.spawnFillColor??=new s.AnimatableColor,this.spawnFillColor.load(t.spawnFillColor)),void 0!==t.spawnStrokeColor&&(this.spawnStrokeColor??=new s.AnimatableColor,this.spawnStrokeColor.load(t.spawnStrokeColor)),void 0!==t.startCount&&(this.startCount=t.startCount))}}},747(t,i,e){e.d(i,{G:()=>o});var s=e(303);class o{height;mode;width;constructor(){this.mode=s.PixelMode.percent,this.height=0,this.width=0}load(t){(0,s.isNull)(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.height&&(this.height=t.height),void 0!==t.width&&(this.width=t.width))}}}}]);
package/795.min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(this.webpackChunk_tsparticles_plugin_emitters=this.webpackChunk_tsparticles_plugin_emitters||[]).push([[795],{795(t,i,e){e.d(i,{EmitterInstance:()=>r});var s=e(303),o=e(982),n=e(747);let a=1;function l(t,i,e,o){t.fill=new s.Fill,t.fill.color=s.AnimatableColor.create(void 0,{value:i}),t.fill.enable=o,t.fill.opacity=e}class r{container;removeCallback;fill;name;options;position;size;spawnFillColor;spawnFillEnabled;spawnFillOpacity;spawnStrokeColor;spawnStrokeOpacity;spawnStrokeWidth;_currentDuration;_currentEmitDelay;_currentSpawnDelay;_duration;_emitDelay;_engine;_firstSpawn;_immortal;_initialPosition;_lifeCount;_mutationObserver;_particlesOptions;_paused;_resizeObserver;_shape;_size;_spawnDelay;_startParticlesAdded;constructor(t,i,e,n,a){this.container=i,this.removeCallback=e,this._engine=t,this._currentDuration=0,this._currentEmitDelay=0,this._currentSpawnDelay=0,this._initialPosition=a,n instanceof o.v?this.options=n:(this.options=new o.v,this.options.load(n)),this._spawnDelay=i.retina.reduceFactor?(0,s.getRangeValue)(this.options.life.delay??0)*s.millisecondsToSeconds/i.retina.reduceFactor:1/0,this.position=this._initialPosition??this._calcPosition(),this.name=this.options.name,this.fill=this.options.fill,this._firstSpawn=!this.options.life.wait,this._startParticlesAdded=!1;const l=(0,s.deepExtend)({},this.options.particles);if(l.move??={},l.move.direction??=this.options.direction,this.options.spawn.fill?.color&&(this.spawnFillColor=(0,s.rangeColorToHsl)(this._engine,this.options.spawn.fill.color)),this.options.spawn.stroke?.color&&(this.spawnStrokeColor=(0,s.rangeColorToHsl)(this._engine,this.options.spawn.stroke.color)),this._paused=!this.options.autoPlay,this._particlesOptions=l,this._size=this._calcSize(),this.size=(0,s.getSize)(this._size,this.container.canvas.size),this._lifeCount=this.options.life.count??-1,this._immortal=this._lifeCount<=0,this.options.domId){const t=(0,s.safeDocument)().getElementById(this.options.domId);t&&(this._mutationObserver=new MutationObserver(()=>{this.resize()}),this._resizeObserver=new ResizeObserver(()=>{this.resize()}),this._mutationObserver.observe(t,{attributes:!0,attributeFilter:["style","width","height"]}),this._resizeObserver.observe(t))}const r=this.options.shape,h=this._engine.emitterShapeManager?.getShapeGenerator(r.type);h&&(this._shape=h.generate(this.container,this.position,this.size,this.fill,r.options)),this._engine.dispatchEvent("emitterCreated",{container:i,data:{emitter:this}}),this.play()}externalPause(){this._paused=!0,this.pause()}externalPlay(){this._paused=!1,this.play()}async init(){await this._shape?.init()}pause(){this._paused||delete this._emitDelay}play(){if(this._paused||!((this._lifeCount>0||this._immortal||!this.options.life.count)&&(this._firstSpawn||this._currentSpawnDelay>=(this._spawnDelay??0))))return;let t=this.container;if(void 0===this._emitDelay){let i=(0,s.getRangeValue)(this.options.rate.delay);this._emitDelay=t.retina.reduceFactor?i*s.millisecondsToSeconds/t.retina.reduceFactor:1/0}(this._lifeCount>0||this._immortal)&&this._prepareToDie()}resize(){let t=this._initialPosition,i=this.container;this.position=t&&(0,s.isPointInside)(t,i.canvas.size,s.Vector.origin)?t:this._calcPosition(),this._size=this._calcSize(),this.size=(0,s.getSize)(this._size,i.canvas.size),this._shape?.resize(this.position,this.size)}update(t){if(this._paused)return;let i=this.container;this._firstSpawn&&(this._firstSpawn=!1,this._currentSpawnDelay=this._spawnDelay??0,this._currentEmitDelay=this._emitDelay??0),this._startParticlesAdded||(this._startParticlesAdded=!0,this._emitParticles(this.options.startCount)),void 0!==this._duration&&(this._currentDuration+=t.value,this._currentDuration>=this._duration&&(this.pause(),void 0!==this._spawnDelay&&delete this._spawnDelay,!this._immortal&&this._lifeCount--,this._lifeCount>0||this._immortal?(this.position=this._calcPosition(),this._shape?.resize(this.position,this.size),this._spawnDelay=i.retina.reduceFactor?(0,s.getRangeValue)(this.options.life.delay??0)*s.millisecondsToSeconds/i.retina.reduceFactor:1/0):this._destroy(),this._currentDuration-=this._duration,delete this._duration)),void 0!==this._spawnDelay&&(this._currentSpawnDelay+=t.value,this._currentSpawnDelay>=this._spawnDelay&&(this._engine.dispatchEvent("emitterPlay",{container:this.container}),this.play(),this._currentSpawnDelay-=this._spawnDelay,delete this._spawnDelay)),void 0!==this._emitDelay&&(this._currentEmitDelay+=t.value,this._currentEmitDelay>=this._emitDelay&&(this._emit(),this._currentEmitDelay-=this._emitDelay))}_calcPosition(){let t=this.container;if(this.options.domId){let i=(0,s.safeDocument)().getElementById(this.options.domId);if(i){let e=i.getBoundingClientRect(),o=t.retina.pixelRatio;return{x:(e.x+e.width*s.half)*o,y:(e.y+e.height*s.half)*o}}}return(0,s.calcPositionOrRandomFromSizeRanged)({size:t.canvas.size,position:this.options.position})}_calcSize(){let t,i=this.container;if(this.options.domId){let t=(0,s.safeDocument)().getElementById(this.options.domId);if(t){let e=t.getBoundingClientRect();return{width:e.width*i.retina.pixelRatio,height:e.height*i.retina.pixelRatio,mode:s.PixelMode.precise}}}return this.options.size??((t=new n.G).load({height:0,mode:s.PixelMode.percent,width:0}),t)}_destroy=()=>{this._mutationObserver?.disconnect(),this._mutationObserver=void 0,this._resizeObserver?.disconnect(),this._resizeObserver=void 0,this.removeCallback(this),this._engine.dispatchEvent("emitterDestroyed",{container:this.container,data:{emitter:this}})};_emit(){if(this._paused)return;let t=(0,s.getRangeValue)(this.options.rate.quantity);this._emitParticles(t)}_emitParticles(t){let i=(0,s.itemFromSingleOrMultiple)(this._particlesOptions)??{},e=this.options.spawn.fill?.color.animation,o=this.options.spawn.fill?.enable??!!this.options.spawn.fill?.color,n=this.options.spawn.fill?.opacity===void 0?s.defaultOpacity:(0,s.getRangeValue)(this.options.spawn.fill.opacity),a=this.options.spawn.stroke?.color?.animation,r=this.options.spawn.stroke?.opacity===void 0?s.defaultOpacity:(0,s.getRangeValue)(this.options.spawn.stroke.opacity),h=this.options.spawn.stroke?.width===void 0?1:(0,s.getRangeValue)(this.options.spawn.stroke.width),p=this.container.retina.reduceFactor,c=!!e,_=!!a,d=!!this._shape,u=c||_,m=u||d,w=u?{h:s.hMax,s:s.sMax,l:s.lMax}:null,y=this.options.shape;for(let c=0;c<t*p;c++){let t=m?(0,s.deepExtend)({},i):i;if(this.spawnFillOpacity=n,this.spawnFillEnabled=o,this.spawnStrokeOpacity=r,this.spawnStrokeWidth=h,this.spawnFillColor&&(e&&w&&(this.spawnFillColor.h=this._setColorAnimation(e.h,this.spawnFillColor.h,w.h,3.6),this.spawnFillColor.s=this._setColorAnimation(e.s,this.spawnFillColor.s,w.s),this.spawnFillColor.l=this._setColorAnimation(e.l,this.spawnFillColor.l,w.l)),l(t,this.spawnFillColor,this.spawnFillOpacity,this.spawnFillEnabled)),this.spawnStrokeColor){var f,g,v;a&&w&&(this.spawnStrokeColor.h=this._setColorAnimation(a.h,this.spawnStrokeColor.h,w.h,3.6),this.spawnStrokeColor.s=this._setColorAnimation(a.s,this.spawnStrokeColor.s,w.s),this.spawnStrokeColor.l=this._setColorAnimation(a.l,this.spawnStrokeColor.l,w.l)),f=this.spawnStrokeColor,g=this.spawnStrokeOpacity,v=this.spawnStrokeWidth,t.stroke=new s.Stroke,t.stroke.color=s.AnimatableColor.create(void 0,{value:f}),t.stroke.opacity=g,t.stroke.width=v}let p=this.position;if(this._shape){let i=this._shape.randomPosition();if(i){p=i.position;let e=y.replace;e.color&&i.color&&l(t,i.color,e.opacity?i.opacity??s.defaultOpacity:s.defaultOpacity,!0)}else p=null}p&&this.container.particles.addParticle(p,t)}}_prepareToDie=()=>{if(this._paused)return;let t=void 0!==this.options.life.duration?(0,s.getRangeValue)(this.options.life.duration):void 0;(this._lifeCount>0||this._immortal)&&void 0!==t&&t>0&&(this._duration=t*s.millisecondsToSeconds)};_setColorAnimation=(t,i,e,o=a)=>{let n=this.container;if(!t.enable)return i;let l=(0,s.randomInRangeValue)(t.offset),r=(0,s.getRangeValue)(this.options.rate.delay),h=n.retina.reduceFactor?r*s.millisecondsToSeconds/n.retina.reduceFactor:1/0;return(i+(0,s.getRangeValue)(t.speed)*n.fpsLimit/h+l*o)%e}}}}]);
@@ -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,366 +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/Emitter.js", "./Options/Classes/EmitterSize.js"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.EmitterInstance = void 0;
13
- const engine_1 = require("@tsparticles/engine");
14
- const Emitter_js_1 = require("./Options/Classes/Emitter.js");
15
- const EmitterSize_js_1 = require("./Options/Classes/EmitterSize.js");
16
- const defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultEmitDelay = 0, defaultLifeCount = -1, defaultColorAnimationFactor = 1, colorFactor = 3.6, defaultStrokeWidth = 1;
17
- function setParticlesOptionsFillColor(particlesOptions, color, opacity, enable) {
18
- particlesOptions.fill = new engine_1.Fill();
19
- particlesOptions.fill.color = engine_1.AnimatableColor.create(undefined, { value: color });
20
- particlesOptions.fill.enable = enable;
21
- particlesOptions.fill.opacity = opacity;
22
- }
23
- function setParticlesOptionsStrokeColor(particlesOptions, color, opacity, width) {
24
- particlesOptions.stroke = new engine_1.Stroke();
25
- particlesOptions.stroke.color = engine_1.AnimatableColor.create(undefined, { value: color });
26
- particlesOptions.stroke.opacity = opacity;
27
- particlesOptions.stroke.width = width;
28
- }
29
- class EmitterInstance {
30
- container;
31
- removeCallback;
32
- fill;
33
- name;
34
- options;
35
- position;
36
- size;
37
- spawnFillColor;
38
- spawnFillEnabled;
39
- spawnFillOpacity;
40
- spawnStrokeColor;
41
- spawnStrokeOpacity;
42
- spawnStrokeWidth;
43
- _currentDuration;
44
- _currentEmitDelay;
45
- _currentSpawnDelay;
46
- _duration;
47
- _emitDelay;
48
- _engine;
49
- _firstSpawn;
50
- _immortal;
51
- _initialPosition;
52
- _lifeCount;
53
- _mutationObserver;
54
- _particlesOptions;
55
- _paused;
56
- _resizeObserver;
57
- _shape;
58
- _size;
59
- _spawnDelay;
60
- _startParticlesAdded;
61
- constructor(engine, container, removeCallback, options, position) {
62
- this.container = container;
63
- this.removeCallback = removeCallback;
64
- this._engine = engine;
65
- this._currentDuration = 0;
66
- this._currentEmitDelay = 0;
67
- this._currentSpawnDelay = 0;
68
- this._initialPosition = position;
69
- if (options instanceof Emitter_js_1.Emitter) {
70
- this.options = options;
71
- }
72
- else {
73
- this.options = new Emitter_js_1.Emitter();
74
- this.options.load(options);
75
- }
76
- this._spawnDelay = container.retina.reduceFactor
77
- ? ((0, engine_1.getRangeValue)(this.options.life.delay ?? defaultLifeDelay) * engine_1.millisecondsToSeconds) /
78
- container.retina.reduceFactor
79
- : Infinity;
80
- this.position = this._initialPosition ?? this._calcPosition();
81
- this.name = this.options.name;
82
- this.fill = this.options.fill;
83
- this._firstSpawn = !this.options.life.wait;
84
- this._startParticlesAdded = false;
85
- const particlesOptions = (0, engine_1.deepExtend)({}, this.options.particles);
86
- particlesOptions.move ??= {};
87
- particlesOptions.move.direction ??= this.options.direction;
88
- if (this.options.spawn.fill?.color) {
89
- this.spawnFillColor = (0, engine_1.rangeColorToHsl)(this._engine, this.options.spawn.fill.color);
90
- }
91
- if (this.options.spawn.stroke?.color) {
92
- this.spawnStrokeColor = (0, engine_1.rangeColorToHsl)(this._engine, this.options.spawn.stroke.color);
93
- }
94
- this._paused = !this.options.autoPlay;
95
- this._particlesOptions = particlesOptions;
96
- this._size = this._calcSize();
97
- this.size = (0, engine_1.getSize)(this._size, this.container.canvas.size);
98
- this._lifeCount = this.options.life.count ?? defaultLifeCount;
99
- this._immortal = this._lifeCount <= minLifeCount;
100
- if (this.options.domId) {
101
- const element = (0, engine_1.safeDocument)().getElementById(this.options.domId);
102
- if (element) {
103
- this._mutationObserver = new MutationObserver(() => {
104
- this.resize();
105
- });
106
- this._resizeObserver = new ResizeObserver(() => {
107
- this.resize();
108
- });
109
- this._mutationObserver.observe(element, {
110
- attributes: true,
111
- attributeFilter: ["style", "width", "height"],
112
- });
113
- this._resizeObserver.observe(element);
114
- }
115
- }
116
- const shapeOptions = this.options.shape, shapeGenerator = this._engine.emitterShapeManager?.getShapeGenerator(shapeOptions.type);
117
- if (shapeGenerator) {
118
- this._shape = shapeGenerator.generate(this.container, this.position, this.size, this.fill, shapeOptions.options);
119
- }
120
- this._engine.dispatchEvent("emitterCreated", {
121
- container,
122
- data: {
123
- emitter: this,
124
- },
125
- });
126
- this.play();
127
- }
128
- externalPause() {
129
- this._paused = true;
130
- this.pause();
131
- }
132
- externalPlay() {
133
- this._paused = false;
134
- this.play();
135
- }
136
- async init() {
137
- await this._shape?.init();
138
- }
139
- pause() {
140
- if (this._paused) {
141
- return;
142
- }
143
- delete this._emitDelay;
144
- }
145
- play() {
146
- if (this._paused) {
147
- return;
148
- }
149
- if (!((this._lifeCount > minLifeCount || this._immortal || !this.options.life.count) &&
150
- (this._firstSpawn || this._currentSpawnDelay >= (this._spawnDelay ?? defaultSpawnDelay)))) {
151
- return;
152
- }
153
- const container = this.container;
154
- if (this._emitDelay === undefined) {
155
- const delay = (0, engine_1.getRangeValue)(this.options.rate.delay);
156
- this._emitDelay = container.retina.reduceFactor
157
- ? (delay * engine_1.millisecondsToSeconds) / container.retina.reduceFactor
158
- : Infinity;
159
- }
160
- if (this._lifeCount > minLifeCount || this._immortal) {
161
- this._prepareToDie();
162
- }
163
- }
164
- resize() {
165
- const initialPosition = this._initialPosition, container = this.container;
166
- this.position =
167
- initialPosition && (0, engine_1.isPointInside)(initialPosition, container.canvas.size, engine_1.Vector.origin)
168
- ? initialPosition
169
- : this._calcPosition();
170
- this._size = this._calcSize();
171
- this.size = (0, engine_1.getSize)(this._size, container.canvas.size);
172
- this._shape?.resize(this.position, this.size);
173
- }
174
- update(delta) {
175
- if (this._paused) {
176
- return;
177
- }
178
- const container = this.container;
179
- if (this._firstSpawn) {
180
- this._firstSpawn = false;
181
- this._currentSpawnDelay = this._spawnDelay ?? defaultSpawnDelay;
182
- this._currentEmitDelay = this._emitDelay ?? defaultEmitDelay;
183
- }
184
- if (!this._startParticlesAdded) {
185
- this._startParticlesAdded = true;
186
- this._emitParticles(this.options.startCount);
187
- }
188
- if (this._duration !== undefined) {
189
- this._currentDuration += delta.value;
190
- if (this._currentDuration >= this._duration) {
191
- this.pause();
192
- if (this._spawnDelay !== undefined) {
193
- delete this._spawnDelay;
194
- }
195
- if (!this._immortal) {
196
- this._lifeCount--;
197
- }
198
- if (this._lifeCount > minLifeCount || this._immortal) {
199
- this.position = this._calcPosition();
200
- this._shape?.resize(this.position, this.size);
201
- this._spawnDelay = container.retina.reduceFactor
202
- ? ((0, engine_1.getRangeValue)(this.options.life.delay ?? defaultLifeDelay) * engine_1.millisecondsToSeconds) /
203
- container.retina.reduceFactor
204
- : Infinity;
205
- }
206
- else {
207
- this._destroy();
208
- }
209
- this._currentDuration -= this._duration;
210
- delete this._duration;
211
- }
212
- }
213
- if (this._spawnDelay !== undefined) {
214
- this._currentSpawnDelay += delta.value;
215
- if (this._currentSpawnDelay >= this._spawnDelay) {
216
- this._engine.dispatchEvent("emitterPlay", {
217
- container: this.container,
218
- });
219
- this.play();
220
- this._currentSpawnDelay -= this._spawnDelay;
221
- delete this._spawnDelay;
222
- }
223
- }
224
- if (this._emitDelay !== undefined) {
225
- this._currentEmitDelay += delta.value;
226
- if (this._currentEmitDelay >= this._emitDelay) {
227
- this._emit();
228
- this._currentEmitDelay -= this._emitDelay;
229
- }
230
- }
231
- }
232
- _calcPosition() {
233
- const container = this.container;
234
- if (this.options.domId) {
235
- const element = (0, engine_1.safeDocument)().getElementById(this.options.domId);
236
- if (element) {
237
- const elRect = element.getBoundingClientRect(), pxRatio = container.retina.pixelRatio;
238
- return {
239
- x: (elRect.x + elRect.width * engine_1.half) * pxRatio,
240
- y: (elRect.y + elRect.height * engine_1.half) * pxRatio,
241
- };
242
- }
243
- }
244
- return (0, engine_1.calcPositionOrRandomFromSizeRanged)({
245
- size: container.canvas.size,
246
- position: this.options.position,
247
- });
248
- }
249
- _calcSize() {
250
- const container = this.container;
251
- if (this.options.domId) {
252
- const element = (0, engine_1.safeDocument)().getElementById(this.options.domId);
253
- if (element) {
254
- const elRect = element.getBoundingClientRect();
255
- return {
256
- width: elRect.width * container.retina.pixelRatio,
257
- height: elRect.height * container.retina.pixelRatio,
258
- mode: engine_1.PixelMode.precise,
259
- };
260
- }
261
- }
262
- return (this.options.size ??
263
- (() => {
264
- const size = new EmitterSize_js_1.EmitterSize();
265
- size.load({
266
- height: 0,
267
- mode: engine_1.PixelMode.percent,
268
- width: 0,
269
- });
270
- return size;
271
- })());
272
- }
273
- _destroy = () => {
274
- this._mutationObserver?.disconnect();
275
- this._mutationObserver = undefined;
276
- this._resizeObserver?.disconnect();
277
- this._resizeObserver = undefined;
278
- this.removeCallback(this);
279
- this._engine.dispatchEvent("emitterDestroyed", {
280
- container: this.container,
281
- data: {
282
- emitter: this,
283
- },
284
- });
285
- };
286
- _emit() {
287
- if (this._paused) {
288
- return;
289
- }
290
- const quantity = (0, engine_1.getRangeValue)(this.options.rate.quantity);
291
- this._emitParticles(quantity);
292
- }
293
- _emitParticles(quantity) {
294
- const singleParticlesOptions = ((0, engine_1.itemFromSingleOrMultiple)(this._particlesOptions) ??
295
- {}), fillHslAnimation = this.options.spawn.fill?.color.animation, fillEnabled = this.options.spawn.fill?.enable ?? !!this.options.spawn.fill?.color, fillOpacity = this.options.spawn.fill?.opacity === undefined
296
- ? engine_1.defaultOpacity
297
- : (0, engine_1.getRangeValue)(this.options.spawn.fill.opacity), strokeHslAnimation = this.options.spawn.stroke?.color?.animation, strokeOpacity = this.options.spawn.stroke?.opacity === undefined
298
- ? engine_1.defaultOpacity
299
- : (0, engine_1.getRangeValue)(this.options.spawn.stroke.opacity), strokeWidth = this.options.spawn.stroke?.width === undefined
300
- ? defaultStrokeWidth
301
- : (0, engine_1.getRangeValue)(this.options.spawn.stroke.width), reduceFactor = this.container.retina.reduceFactor, needsFillColorAnimation = !!fillHslAnimation, needsStrokeColorAnimation = !!strokeHslAnimation, needsShapeData = !!this._shape, needsColorAnimation = needsFillColorAnimation || needsStrokeColorAnimation, needsCopy = needsColorAnimation || needsShapeData, maxValues = needsColorAnimation ? { h: engine_1.hMax, s: engine_1.sMax, l: engine_1.lMax } : null, shapeOptions = this.options.shape;
302
- for (let i = 0; i < quantity * reduceFactor; i++) {
303
- const particlesOptions = needsCopy
304
- ? (0, engine_1.deepExtend)({}, singleParticlesOptions)
305
- : singleParticlesOptions;
306
- this.spawnFillOpacity = fillOpacity;
307
- this.spawnFillEnabled = fillEnabled;
308
- this.spawnStrokeOpacity = strokeOpacity;
309
- this.spawnStrokeWidth = strokeWidth;
310
- if (this.spawnFillColor) {
311
- if (fillHslAnimation && maxValues) {
312
- this.spawnFillColor.h = this._setColorAnimation(fillHslAnimation.h, this.spawnFillColor.h, maxValues.h, colorFactor);
313
- this.spawnFillColor.s = this._setColorAnimation(fillHslAnimation.s, this.spawnFillColor.s, maxValues.s);
314
- this.spawnFillColor.l = this._setColorAnimation(fillHslAnimation.l, this.spawnFillColor.l, maxValues.l);
315
- }
316
- setParticlesOptionsFillColor(particlesOptions, this.spawnFillColor, this.spawnFillOpacity, this.spawnFillEnabled);
317
- }
318
- if (this.spawnStrokeColor) {
319
- if (strokeHslAnimation && maxValues) {
320
- this.spawnStrokeColor.h = this._setColorAnimation(strokeHslAnimation.h, this.spawnStrokeColor.h, maxValues.h, colorFactor);
321
- this.spawnStrokeColor.s = this._setColorAnimation(strokeHslAnimation.s, this.spawnStrokeColor.s, maxValues.s);
322
- this.spawnStrokeColor.l = this._setColorAnimation(strokeHslAnimation.l, this.spawnStrokeColor.l, maxValues.l);
323
- }
324
- setParticlesOptionsStrokeColor(particlesOptions, this.spawnStrokeColor, this.spawnStrokeOpacity, this.spawnStrokeWidth);
325
- }
326
- let position = this.position;
327
- if (this._shape) {
328
- const shapePosData = this._shape.randomPosition();
329
- if (shapePosData) {
330
- position = shapePosData.position;
331
- const replaceData = shapeOptions.replace;
332
- if (replaceData.color && shapePosData.color) {
333
- setParticlesOptionsFillColor(particlesOptions, shapePosData.color, replaceData.opacity ? (shapePosData.opacity ?? engine_1.defaultOpacity) : engine_1.defaultOpacity, true);
334
- }
335
- }
336
- else {
337
- position = null;
338
- }
339
- }
340
- if (position) {
341
- this.container.particles.addParticle(position, particlesOptions);
342
- }
343
- }
344
- }
345
- _prepareToDie = () => {
346
- if (this._paused) {
347
- return;
348
- }
349
- const duration = this.options.life.duration !== undefined ? (0, engine_1.getRangeValue)(this.options.life.duration) : undefined, minDuration = 0, minLifeCount = 0;
350
- if ((this._lifeCount > minLifeCount || this._immortal) && duration !== undefined && duration > minDuration) {
351
- this._duration = duration * engine_1.millisecondsToSeconds;
352
- }
353
- };
354
- _setColorAnimation = (animation, initValue, maxValue, factor = defaultColorAnimationFactor) => {
355
- const container = this.container;
356
- if (!animation.enable) {
357
- return initValue;
358
- }
359
- const colorOffset = (0, engine_1.randomInRangeValue)(animation.offset), delay = (0, engine_1.getRangeValue)(this.options.rate.delay), emitFactor = container.retina.reduceFactor
360
- ? (delay * engine_1.millisecondsToSeconds) / container.retina.reduceFactor
361
- : Infinity, colorSpeed = (0, engine_1.getRangeValue)(animation.speed);
362
- return (initValue + (colorSpeed * container.fpsLimit) / emitFactor + colorOffset * factor) % maxValue;
363
- };
364
- }
365
- exports.EmitterInstance = EmitterInstance;
366
- });