@tsparticles/plugin-trail 4.0.0-alpha.3 → 4.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/312.min.js ADDED
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 312.min.js.LICENSE.txt */
2
+ (this.webpackChunk_tsparticles_plugin_trail=this.webpackChunk_tsparticles_plugin_trail||[]).push([[312],{312(i,l,t){t.d(l,{TrailPlugin:()=>a});var e=t(303);class n{load(i){(0,e.isNull)(i)||(void 0!==i.color&&(this.color=e.OptionsColor.create(this.color,i.color)),void 0!==i.image&&(this.image=i.image))}}class s{constructor(){this.enable=!1,this.length=10,this.fill=new n}load(i){(0,e.isNull)(i)||(void 0!==i.enable&&(this.enable=i.enable),void 0!==i.fill&&this.fill.load(i.fill),void 0!==i.length&&(this.length=i.length))}}class a{constructor(i){this.id="trail",this._engine=i}async getPlugin(i){const{TrailPluginInstance:l}=await t.e(892).then(t.bind(t,892));return new l(i,this._engine)}loadOptions(i,l,t){if(!this.needsPlugin())return;let e=l.trail;e?.load||(l.trail=e=new s),e.load(t?.trail)}needsPlugin(){return!0}}}}]);
@@ -0,0 +1 @@
1
+ /*! tsParticles Trail Plugin v4.0.0-alpha.4 by Matteo Bruni */
package/892.min.js ADDED
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 892.min.js.LICENSE.txt */
2
+ (this.webpackChunk_tsparticles_plugin_trail=this.webpackChunk_tsparticles_plugin_trail||[]).push([[892],{892(t,i,r){r.d(i,{TrailPluginInstance:()=>a});var e=r(303);class a{constructor(t,i){this._initTrail=async()=>{const t=this._container.actualOptions.trail;if(!t?.enable)return;const i=t.fill,r=e.inverseFactorNumerator/t.length;if(i.color){const t=(0,e.rangeColorToRgb)(this._engine,i.color);if(!t)return;this._trailFill={color:{...t},opacity:r}}else await new Promise(((t,a)=>{if(!i.image)return;const n=(0,e.safeDocument)().createElement("img");n.addEventListener("load",(()=>{this._trailFill={image:n,opacity:r},t()})),n.addEventListener("error",(t=>{(0,e.getLogger)().error(t),a(new Error("Error loading image"))})),n.src=i.image}))},this._container=t,this._engine=i}canvasClear(){const t=this._container,i=t.actualOptions.trail,r=this._trailFill;if(!i?.enable||!r||i.length<=0)return!1;let a=!1;const n=t.canvas;return r.color?(n.paintBase((0,e.getStyleFromRgb)(r.color,t.hdr,r.opacity)),a=!0):r.image&&(n.paintImage(r.image,r.opacity),a=!0),a}async init(){try{await this._initTrail()}catch(t){(0,e.getLogger)().error(t)}}}}}]);
@@ -0,0 +1 @@
1
+ /*! tsParticles Trail Plugin v4.0.0-alpha.4 by Matteo Bruni */
@@ -1,14 +1,14 @@
1
1
  import { Trail } from "./Options/Classes/Trail.js";
2
- import { TrailInstance } from "./TrailInstance.js";
3
2
  export class TrailPlugin {
4
3
  constructor(engine) {
5
4
  this.id = "trail";
6
5
  this._engine = engine;
7
6
  }
8
- getPlugin(container) {
9
- return Promise.resolve(new TrailInstance(container, this._engine));
7
+ async getPlugin(container) {
8
+ const { TrailPluginInstance } = await import("./TrailPluginInstance.js");
9
+ return new TrailPluginInstance(container, this._engine);
10
10
  }
11
- loadOptions(options, source) {
11
+ loadOptions(_container, options, source) {
12
12
  if (!this.needsPlugin()) {
13
13
  return;
14
14
  }
@@ -1,6 +1,6 @@
1
1
  import { getLogger, getStyleFromRgb, inverseFactorNumerator, rangeColorToRgb, safeDocument, } from "@tsparticles/engine";
2
2
  const minimumLength = 0;
3
- export class TrailInstance {
3
+ export class TrailPluginInstance {
4
4
  constructor(container, engine) {
5
5
  this._initTrail = async () => {
6
6
  const options = this._container.actualOptions, trail = options.trail;
package/browser/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export function loadTrailPlugin(engine) {
2
- engine.checkVersion("4.0.0-alpha.3");
2
+ engine.checkVersion("4.0.0-alpha.4");
3
3
  engine.register(async (e) => {
4
4
  const { TrailPlugin } = await import("./TrailPlugin.js");
5
5
  e.addPlugin(new TrailPlugin(engine));
@@ -1,14 +1,14 @@
1
1
  import { Trail } from "./Options/Classes/Trail.js";
2
- import { TrailInstance } from "./TrailInstance.js";
3
2
  export class TrailPlugin {
4
3
  constructor(engine) {
5
4
  this.id = "trail";
6
5
  this._engine = engine;
7
6
  }
8
- getPlugin(container) {
9
- return Promise.resolve(new TrailInstance(container, this._engine));
7
+ async getPlugin(container) {
8
+ const { TrailPluginInstance } = await import("./TrailPluginInstance.js");
9
+ return new TrailPluginInstance(container, this._engine);
10
10
  }
11
- loadOptions(options, source) {
11
+ loadOptions(_container, options, source) {
12
12
  if (!this.needsPlugin()) {
13
13
  return;
14
14
  }
@@ -1,6 +1,6 @@
1
1
  import { getLogger, getStyleFromRgb, inverseFactorNumerator, rangeColorToRgb, safeDocument, } from "@tsparticles/engine";
2
2
  const minimumLength = 0;
3
- export class TrailInstance {
3
+ export class TrailPluginInstance {
4
4
  constructor(container, engine) {
5
5
  this._initTrail = async () => {
6
6
  const options = this._container.actualOptions, trail = options.trail;
package/cjs/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export function loadTrailPlugin(engine) {
2
- engine.checkVersion("4.0.0-alpha.3");
2
+ engine.checkVersion("4.0.0-alpha.4");
3
3
  engine.register(async (e) => {
4
4
  const { TrailPlugin } = await import("./TrailPlugin.js");
5
5
  e.addPlugin(new TrailPlugin(engine));
@@ -0,0 +1,30 @@
1
+ /*!
2
+ * Author : Matteo Bruni
3
+ * MIT license: https://opensource.org/licenses/MIT
4
+ * Demo / Generator : https://particles.js.org/
5
+ * GitHub : https://www.github.com/matteobruni/tsparticles
6
+ * How to use? : Check the GitHub README
7
+ * v4.0.0-alpha.4
8
+ */
9
+ "use strict";
10
+ /*
11
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
12
+ * This devtool is neither made for production nor for readable output files.
13
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
14
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
15
+ * or disable the default devtool with "devtool: false".
16
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
17
+ */
18
+ (this["webpackChunk_tsparticles_plugin_trail"] = this["webpackChunk_tsparticles_plugin_trail"] || []).push([["dist_browser_TrailPluginInstance_js"],{
19
+
20
+ /***/ "./dist/browser/TrailPluginInstance.js"
21
+ /*!*********************************************!*\
22
+ !*** ./dist/browser/TrailPluginInstance.js ***!
23
+ \*********************************************/
24
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
25
+
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TrailPluginInstance: () => (/* binding */ TrailPluginInstance)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n\nconst minimumLength = 0;\nclass TrailPluginInstance {\n constructor(container, engine) {\n this._initTrail = async () => {\n const options = this._container.actualOptions,\n trail = options.trail;\n if (!trail?.enable) {\n return;\n }\n const trailFill = trail.fill,\n opacity = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.inverseFactorNumerator / trail.length;\n if (trailFill.color) {\n const fillColor = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rangeColorToRgb)(this._engine, trailFill.color);\n if (!fillColor) {\n return;\n }\n this._trailFill = {\n color: {\n ...fillColor\n },\n opacity\n };\n } else {\n await new Promise((resolve, reject) => {\n if (!trailFill.image) {\n return;\n }\n const img = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().createElement(\"img\");\n img.addEventListener(\"load\", () => {\n this._trailFill = {\n image: img,\n opacity\n };\n resolve();\n });\n img.addEventListener(\"error\", evt => {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(evt);\n reject(new Error(\"Error loading image\"));\n });\n img.src = trailFill.image;\n });\n }\n };\n this._container = container;\n this._engine = engine;\n }\n canvasClear() {\n const container = this._container,\n trail = container.actualOptions.trail,\n trailFill = this._trailFill;\n if (!trail?.enable || !trailFill || trail.length <= minimumLength) {\n return false;\n }\n let handled = false;\n const canvas = container.canvas;\n if (trailFill.color) {\n canvas.paintBase((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(trailFill.color, container.hdr, trailFill.opacity));\n handled = true;\n } else if (trailFill.image) {\n canvas.paintImage(trailFill.image, trailFill.opacity);\n handled = true;\n }\n return handled;\n }\n async init() {\n try {\n await this._initTrail();\n } catch (e) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(e);\n }\n }\n}\n\n//# sourceURL=webpack://@tsparticles/plugin-trail/./dist/browser/TrailPluginInstance.js?\n}");
27
+
28
+ /***/ }
29
+
30
+ }]);
@@ -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-alpha.3
7
+ * v4.0.0-alpha.4
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -37,23 +37,13 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
37
37
 
38
38
  /***/ },
39
39
 
40
- /***/ "./dist/browser/TrailInstance.js"
41
- /*!***************************************!*\
42
- !*** ./dist/browser/TrailInstance.js ***!
43
- \***************************************/
44
- (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
45
-
46
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TrailInstance: () => (/* binding */ TrailInstance)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n\nconst minimumLength = 0;\nclass TrailInstance {\n constructor(container, engine) {\n this._initTrail = async () => {\n const options = this._container.actualOptions,\n trail = options.trail;\n if (!trail?.enable) {\n return;\n }\n const trailFill = trail.fill,\n opacity = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.inverseFactorNumerator / trail.length;\n if (trailFill.color) {\n const fillColor = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rangeColorToRgb)(this._engine, trailFill.color);\n if (!fillColor) {\n return;\n }\n this._trailFill = {\n color: {\n ...fillColor\n },\n opacity\n };\n } else {\n await new Promise((resolve, reject) => {\n if (!trailFill.image) {\n return;\n }\n const img = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().createElement(\"img\");\n img.addEventListener(\"load\", () => {\n this._trailFill = {\n image: img,\n opacity\n };\n resolve();\n });\n img.addEventListener(\"error\", evt => {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(evt);\n reject(new Error(\"Error loading image\"));\n });\n img.src = trailFill.image;\n });\n }\n };\n this._container = container;\n this._engine = engine;\n }\n canvasClear() {\n const container = this._container,\n trail = container.actualOptions.trail,\n trailFill = this._trailFill;\n if (!trail?.enable || !trailFill || trail.length <= minimumLength) {\n return false;\n }\n let handled = false;\n const canvas = container.canvas;\n if (trailFill.color) {\n canvas.paintBase((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(trailFill.color, container.hdr, trailFill.opacity));\n handled = true;\n } else if (trailFill.image) {\n canvas.paintImage(trailFill.image, trailFill.opacity);\n handled = true;\n }\n return handled;\n }\n async init() {\n try {\n await this._initTrail();\n } catch (e) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(e);\n }\n }\n}\n\n//# sourceURL=webpack://@tsparticles/plugin-trail/./dist/browser/TrailInstance.js?\n}");
47
-
48
- /***/ },
49
-
50
40
  /***/ "./dist/browser/TrailPlugin.js"
51
41
  /*!*************************************!*\
52
42
  !*** ./dist/browser/TrailPlugin.js ***!
53
43
  \*************************************/
54
44
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
55
45
 
56
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TrailPlugin: () => (/* binding */ TrailPlugin)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_Trail_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/Trail.js */ \"./dist/browser/Options/Classes/Trail.js\");\n/* harmony import */ var _TrailInstance_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TrailInstance.js */ \"./dist/browser/TrailInstance.js\");\n\n\nclass TrailPlugin {\n constructor(engine) {\n this.id = \"trail\";\n this._engine = engine;\n }\n getPlugin(container) {\n return Promise.resolve(new _TrailInstance_js__WEBPACK_IMPORTED_MODULE_1__.TrailInstance(container, this._engine));\n }\n loadOptions(options, source) {\n if (!this.needsPlugin()) {\n return;\n }\n let trailOptions = options.trail;\n if (!trailOptions?.load) {\n options.trail = trailOptions = new _Options_Classes_Trail_js__WEBPACK_IMPORTED_MODULE_0__.Trail();\n }\n trailOptions.load(source?.trail);\n }\n needsPlugin() {\n return true;\n }\n}\n\n//# sourceURL=webpack://@tsparticles/plugin-trail/./dist/browser/TrailPlugin.js?\n}");
46
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TrailPlugin: () => (/* binding */ TrailPlugin)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_Trail_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/Trail.js */ \"./dist/browser/Options/Classes/Trail.js\");\n\nclass TrailPlugin {\n constructor(engine) {\n this.id = \"trail\";\n this._engine = engine;\n }\n async getPlugin(container) {\n const {\n TrailPluginInstance\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_TrailPluginInstance_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./TrailPluginInstance.js */ \"./dist/browser/TrailPluginInstance.js\"));\n return new TrailPluginInstance(container, this._engine);\n }\n loadOptions(_container, options, source) {\n if (!this.needsPlugin()) {\n return;\n }\n let trailOptions = options.trail;\n if (!trailOptions?.load) {\n options.trail = trailOptions = new _Options_Classes_Trail_js__WEBPACK_IMPORTED_MODULE_0__.Trail();\n }\n trailOptions.load(source?.trail);\n }\n needsPlugin() {\n return true;\n }\n}\n\n//# sourceURL=webpack://@tsparticles/plugin-trail/./dist/browser/TrailPlugin.js?\n}");
57
47
 
58
48
  /***/ }
59
49
 
@@ -1,14 +1,14 @@
1
1
  import { Trail } from "./Options/Classes/Trail.js";
2
- import { TrailInstance } from "./TrailInstance.js";
3
2
  export class TrailPlugin {
4
3
  constructor(engine) {
5
4
  this.id = "trail";
6
5
  this._engine = engine;
7
6
  }
8
- getPlugin(container) {
9
- return Promise.resolve(new TrailInstance(container, this._engine));
7
+ async getPlugin(container) {
8
+ const { TrailPluginInstance } = await import("./TrailPluginInstance.js");
9
+ return new TrailPluginInstance(container, this._engine);
10
10
  }
11
- loadOptions(options, source) {
11
+ loadOptions(_container, options, source) {
12
12
  if (!this.needsPlugin()) {
13
13
  return;
14
14
  }
@@ -1,6 +1,6 @@
1
1
  import { getLogger, getStyleFromRgb, inverseFactorNumerator, rangeColorToRgb, safeDocument, } from "@tsparticles/engine";
2
2
  const minimumLength = 0;
3
- export class TrailInstance {
3
+ export class TrailPluginInstance {
4
4
  constructor(container, engine) {
5
5
  this._initTrail = async () => {
6
6
  const options = this._container.actualOptions, trail = options.trail;
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export function loadTrailPlugin(engine) {
2
- engine.checkVersion("4.0.0-alpha.3");
2
+ engine.checkVersion("4.0.0-alpha.4");
3
3
  engine.register(async (e) => {
4
4
  const { TrailPlugin } = await import("./TrailPlugin.js");
5
5
  e.addPlugin(new TrailPlugin(engine));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/plugin-trail",
3
- "version": "4.0.0-alpha.3",
3
+ "version": "4.0.0-alpha.4",
4
4
  "description": "tsParticles trail plugin",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -86,7 +86,7 @@
86
86
  "./package.json": "./package.json"
87
87
  },
88
88
  "dependencies": {
89
- "@tsparticles/engine": "4.0.0-alpha.3"
89
+ "@tsparticles/engine": "4.0.0-alpha.4"
90
90
  },
91
91
  "publishConfig": {
92
92
  "access": "public"
package/report.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>@tsparticles/plugin-trail [10 Jan 2026 at 19:22]</title>
6
+ <title>@tsparticles/plugin-trail [21 Jan 2026 at 14:34]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
@@ -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-alpha.3
7
+ * v4.0.0-alpha.4
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -34,7 +34,7 @@ return /******/ (() => { // webpackBootstrap
34
34
  \*******************************/
35
35
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
36
36
 
37
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadTrailPlugin: () => (/* binding */ loadTrailPlugin)\n/* harmony export */ });\nfunction loadTrailPlugin(engine) {\n engine.checkVersion(\"4.0.0-alpha.3\");\n engine.register(async e => {\n const {\n TrailPlugin\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_TrailPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./TrailPlugin.js */ \"./dist/browser/TrailPlugin.js\"));\n e.addPlugin(new TrailPlugin(engine));\n });\n}\n\n//# sourceURL=webpack://@tsparticles/plugin-trail/./dist/browser/index.js?\n}");
37
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadTrailPlugin: () => (/* binding */ loadTrailPlugin)\n/* harmony export */ });\nfunction loadTrailPlugin(engine) {\n engine.checkVersion(\"4.0.0-alpha.4\");\n engine.register(async e => {\n const {\n TrailPlugin\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_TrailPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./TrailPlugin.js */ \"./dist/browser/TrailPlugin.js\"));\n e.addPlugin(new TrailPlugin(engine));\n });\n}\n\n//# sourceURL=webpack://@tsparticles/plugin-trail/./dist/browser/index.js?\n}");
38
38
 
39
39
  /***/ },
40
40
 
@@ -118,18 +118,6 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_engine__;
118
118
  /******/ };
119
119
  /******/ })();
120
120
  /******/
121
- /******/ /* webpack/runtime/global */
122
- /******/ (() => {
123
- /******/ __webpack_require__.g = (function() {
124
- /******/ if (typeof globalThis === 'object') return globalThis;
125
- /******/ try {
126
- /******/ return this || new Function('return this')();
127
- /******/ } catch (e) {
128
- /******/ if (typeof window === 'object') return window;
129
- /******/ }
130
- /******/ })();
131
- /******/ })();
132
- /******/
133
121
  /******/ /* webpack/runtime/hasOwnProperty shorthand */
134
122
  /******/ (() => {
135
123
  /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
@@ -194,8 +182,8 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_engine__;
194
182
  /******/ /* webpack/runtime/publicPath */
195
183
  /******/ (() => {
196
184
  /******/ var scriptUrl;
197
- /******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
198
- /******/ var document = __webpack_require__.g.document;
185
+ /******/ if (globalThis.importScripts) scriptUrl = globalThis.location + "";
186
+ /******/ var document = globalThis.document;
199
187
  /******/ if (!scriptUrl && document) {
200
188
  /******/ if (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')
201
189
  /******/ scriptUrl = document.currentScript.src;
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see tsparticles.plugin.trail.min.js.LICENSE.txt */
2
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],t);else{var r="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(this,(e=>(()=>{var t,r,o={303(t){t.exports=e}},i={};function n(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={exports:{}};return o[e](r,r.exports,n),r.exports}n.m=o,n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,r)=>(n.f[r](e,t),t)),[])),n.u=e=>e+".min.js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="@tsparticles/plugin-trail:",n.l=(e,o,i,a)=>{if(t[e])t[e].push(o);else{var l,s;if(void 0!==i)for(var c=document.getElementsByTagName("script"),p=0;p<c.length;p++){var u=c[p];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==r+i){l=u;break}}l||(s=!0,(l=document.createElement("script")).charset="utf-8",n.nc&&l.setAttribute("nonce",n.nc),l.setAttribute("data-webpack",r+i),l.src=e),t[e]=[o];var d=(r,o)=>{l.onerror=l.onload=null,clearTimeout(f);var i=t[e];if(delete t[e],l.parentNode&&l.parentNode.removeChild(l),i&&i.forEach((e=>e(o))),r)return r(o)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=d.bind(null,l.onerror),l.onload=d.bind(null,l.onload),s&&document.head.appendChild(l)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var o=r.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=r[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={576:0};n.f.j=(t,r)=>{var o=n.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else{var i=new Promise(((r,i)=>o=e[t]=[r,i]));r.push(o[2]=i);var a=n.p+n.u(t),l=new Error;n.l(a,(r=>{if(n.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var i=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;l.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",l.name="ChunkLoadError",l.type=i,l.request=a,o[1](l)}}),"chunk-"+t,t)}};var t=(t,r)=>{var o,i,[a,l,s]=r,c=0;if(a.some((t=>0!==e[t]))){for(o in l)n.o(l,o)&&(n.m[o]=l[o]);if(s)s(n)}for(t&&t(r);c<a.length;c++)i=a[c],n.o(e,i)&&e[i]&&e[i][0](),e[i]=0},r=this.webpackChunk_tsparticles_plugin_trail=this.webpackChunk_tsparticles_plugin_trail||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var a={};function l(e){e.checkVersion("4.0.0-alpha.3"),e.register((async t=>{const{TrailPlugin:r}=await n.e(877).then(n.bind(n,877));t.addPlugin(new r(e))}))}return n.r(a),n.d(a,{loadTrailPlugin:()=>l}),a})()));
2
+ !function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],r);else{var t="object"==typeof exports?r(require("@tsparticles/engine")):r(e.window);for(var o in t)("object"==typeof exports?exports:e)[o]=t[o]}}(this,(e=>(()=>{var r,t,o={303(r){r.exports=e}},i={};function n(e){var r=i[e];if(void 0!==r)return r.exports;var t=i[e]={exports:{}};return o[e](t,t.exports,n),t.exports}n.m=o,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>e+".min.js",n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},t="@tsparticles/plugin-trail:",n.l=(e,o,i,a)=>{if(r[e])r[e].push(o);else{var l,s;if(void 0!==i)for(var p=document.getElementsByTagName("script"),c=0;c<p.length;c++){var u=p[c];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==t+i){l=u;break}}l||(s=!0,(l=document.createElement("script")).charset="utf-8",n.nc&&l.setAttribute("nonce",n.nc),l.setAttribute("data-webpack",t+i),l.src=e),r[e]=[o];var d=(t,o)=>{l.onerror=l.onload=null,clearTimeout(f);var i=r[e];if(delete r[e],l.parentNode&&l.parentNode.removeChild(l),i&&i.forEach((e=>e(o))),t)return t(o)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=d.bind(null,l.onerror),l.onload=d.bind(null,l.onload),s&&document.head.appendChild(l)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;globalThis.importScripts&&(e=globalThis.location+"");var r=globalThis.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={576:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var i=new Promise(((t,i)=>o=e[r]=[t,i]));t.push(o[2]=i);var a=n.p+n.u(r),l=new Error;n.l(a,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var i=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;l.message="Loading chunk "+r+" failed.\n("+i+": "+a+")",l.name="ChunkLoadError",l.type=i,l.request=a,o[1](l)}}),"chunk-"+r,r)}};var r=(r,t)=>{var o,i,[a,l,s]=t,p=0;if(a.some((r=>0!==e[r]))){for(o in l)n.o(l,o)&&(n.m[o]=l[o]);if(s)s(n)}for(r&&r(t);p<a.length;p++)i=a[p],n.o(e,i)&&e[i]&&e[i][0](),e[i]=0},t=this.webpackChunk_tsparticles_plugin_trail=this.webpackChunk_tsparticles_plugin_trail||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})();var a={};function l(e){e.checkVersion("4.0.0-alpha.4"),e.register((async r=>{const{TrailPlugin:t}=await n.e(312).then(n.bind(n,312));r.addPlugin(new t(e))}))}return n.r(a),n.d(a,{loadTrailPlugin:()=>l}),a})()));
@@ -1 +1 @@
1
- /*! tsParticles Trail Plugin v4.0.0-alpha.3 by Matteo Bruni */
1
+ /*! tsParticles Trail Plugin v4.0.0-alpha.4 by Matteo Bruni */
@@ -1,11 +1,10 @@
1
- import type { Container, Engine, IPlugin, RecursivePartial } from "@tsparticles/engine";
1
+ import type { Container, Engine, IContainerPlugin, IPlugin, RecursivePartial } from "@tsparticles/engine";
2
2
  import type { ITrailOptions, TrailOptions } from "./types.js";
3
- import { TrailInstance } from "./TrailInstance.js";
4
3
  export declare class TrailPlugin implements IPlugin {
5
4
  readonly id: string;
6
5
  private readonly _engine;
7
6
  constructor(engine: Engine);
8
- getPlugin(container: Container): Promise<TrailInstance>;
9
- loadOptions(options: TrailOptions, source?: RecursivePartial<ITrailOptions>): void;
7
+ getPlugin(container: Container): Promise<IContainerPlugin>;
8
+ loadOptions(_container: Container, options: TrailOptions, source?: RecursivePartial<ITrailOptions>): void;
10
9
  needsPlugin(): boolean;
11
10
  }
@@ -1,6 +1,6 @@
1
1
  import { type Engine, type IContainerPlugin } from "@tsparticles/engine";
2
2
  import type { TrailContainer } from "./types.js";
3
- export declare class TrailInstance implements IContainerPlugin {
3
+ export declare class TrailPluginInstance implements IContainerPlugin {
4
4
  private readonly _container;
5
5
  private readonly _engine;
6
6
  private _trailFill?;
@@ -1,26 +1,60 @@
1
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
+ if (k2 === undefined) k2 = k;
3
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
+ desc = { enumerable: true, get: function() { return m[k]; } };
6
+ }
7
+ Object.defineProperty(o, k2, desc);
8
+ }) : (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ o[k2] = m[k];
11
+ }));
12
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
14
+ }) : function(o, v) {
15
+ o["default"] = v;
16
+ });
17
+ var __importStar = (this && this.__importStar) || (function () {
18
+ var ownKeys = function(o) {
19
+ ownKeys = Object.getOwnPropertyNames || function (o) {
20
+ var ar = [];
21
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
22
+ return ar;
23
+ };
24
+ return ownKeys(o);
25
+ };
26
+ return function (mod) {
27
+ if (mod && mod.__esModule) return mod;
28
+ var result = {};
29
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
30
+ __setModuleDefault(result, mod);
31
+ return result;
32
+ };
33
+ })();
1
34
  (function (factory) {
2
35
  if (typeof module === "object" && typeof module.exports === "object") {
3
36
  var v = factory(require, exports);
4
37
  if (v !== undefined) module.exports = v;
5
38
  }
6
39
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./Options/Classes/Trail.js", "./TrailInstance.js"], factory);
40
+ define(["require", "exports", "./Options/Classes/Trail.js"], factory);
8
41
  }
9
42
  })(function (require, exports) {
10
43
  "use strict";
44
+ var __syncRequire = typeof module === "object" && typeof module.exports === "object";
11
45
  Object.defineProperty(exports, "__esModule", { value: true });
12
46
  exports.TrailPlugin = void 0;
13
47
  const Trail_js_1 = require("./Options/Classes/Trail.js");
14
- const TrailInstance_js_1 = require("./TrailInstance.js");
15
48
  class TrailPlugin {
16
49
  constructor(engine) {
17
50
  this.id = "trail";
18
51
  this._engine = engine;
19
52
  }
20
- getPlugin(container) {
21
- return Promise.resolve(new TrailInstance_js_1.TrailInstance(container, this._engine));
53
+ async getPlugin(container) {
54
+ const { TrailPluginInstance } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./TrailPluginInstance.js"))) : new Promise((resolve_1, reject_1) => { require(["./TrailPluginInstance.js"], resolve_1, reject_1); }).then(__importStar));
55
+ return new TrailPluginInstance(container, this._engine);
22
56
  }
23
- loadOptions(options, source) {
57
+ loadOptions(_container, options, source) {
24
58
  if (!this.needsPlugin()) {
25
59
  return;
26
60
  }
@@ -9,10 +9,10 @@
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.TrailInstance = void 0;
12
+ exports.TrailPluginInstance = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
14
  const minimumLength = 0;
15
- class TrailInstance {
15
+ class TrailPluginInstance {
16
16
  constructor(container, engine) {
17
17
  this._initTrail = async () => {
18
18
  const options = this._container.actualOptions, trail = options.trail;
@@ -82,5 +82,5 @@
82
82
  }
83
83
  }
84
84
  }
85
- exports.TrailInstance = TrailInstance;
85
+ exports.TrailPluginInstance = TrailPluginInstance;
86
86
  });
package/umd/index.js CHANGED
@@ -45,7 +45,7 @@ var __importStar = (this && this.__importStar) || (function () {
45
45
  Object.defineProperty(exports, "__esModule", { value: true });
46
46
  exports.loadTrailPlugin = loadTrailPlugin;
47
47
  function loadTrailPlugin(engine) {
48
- engine.checkVersion("4.0.0-alpha.3");
48
+ engine.checkVersion("4.0.0-alpha.4");
49
49
  engine.register(async (e) => {
50
50
  const { TrailPlugin } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./TrailPlugin.js"))) : new Promise((resolve_1, reject_1) => { require(["./TrailPlugin.js"], resolve_1, reject_1); }).then(__importStar));
51
51
  e.addPlugin(new TrailPlugin(engine));
package/877.min.js DELETED
@@ -1,2 +0,0 @@
1
- /*! For license information please see 877.min.js.LICENSE.txt */
2
- (this.webpackChunk_tsparticles_plugin_trail=this.webpackChunk_tsparticles_plugin_trail||[]).push([[877],{877(i,t,e){e.d(t,{TrailPlugin:()=>o});var r=e(303);class l{load(i){(0,r.isNull)(i)||(void 0!==i.color&&(this.color=r.OptionsColor.create(this.color,i.color)),void 0!==i.image&&(this.image=i.image))}}class a{constructor(){this.enable=!1,this.length=10,this.fill=new l}load(i){(0,r.isNull)(i)||(void 0!==i.enable&&(this.enable=i.enable),void 0!==i.fill&&this.fill.load(i.fill),void 0!==i.length&&(this.length=i.length))}}class n{constructor(i,t){this._initTrail=async()=>{const i=this._container.actualOptions.trail;if(!i?.enable)return;const t=i.fill,e=r.inverseFactorNumerator/i.length;if(t.color){const i=(0,r.rangeColorToRgb)(this._engine,t.color);if(!i)return;this._trailFill={color:{...i},opacity:e}}else await new Promise(((i,l)=>{if(!t.image)return;const a=(0,r.safeDocument)().createElement("img");a.addEventListener("load",(()=>{this._trailFill={image:a,opacity:e},i()})),a.addEventListener("error",(i=>{(0,r.getLogger)().error(i),l(new Error("Error loading image"))})),a.src=t.image}))},this._container=i,this._engine=t}canvasClear(){const i=this._container,t=i.actualOptions.trail,e=this._trailFill;if(!t?.enable||!e||t.length<=0)return!1;let l=!1;const a=i.canvas;return e.color?(a.paintBase((0,r.getStyleFromRgb)(e.color,i.hdr,e.opacity)),l=!0):e.image&&(a.paintImage(e.image,e.opacity),l=!0),l}async init(){try{await this._initTrail()}catch(i){(0,r.getLogger)().error(i)}}}class o{constructor(i){this.id="trail",this._engine=i}getPlugin(i){return Promise.resolve(new n(i,this._engine))}loadOptions(i,t){if(!this.needsPlugin())return;let e=i.trail;e?.load||(i.trail=e=new a),e.load(t?.trail)}needsPlugin(){return!0}}}}]);
@@ -1 +0,0 @@
1
- /*! tsParticles Trail Plugin v4.0.0-alpha.3 by Matteo Bruni */