@tsparticles/effect-trail 3.0.3 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- package/295.min.js +2 -0
- package/295.min.js.LICENSE.txt +1 -0
- package/browser/TrailDrawer.js +24 -16
- package/browser/index.js +1 -1
- package/cjs/TrailDrawer.js +24 -16
- package/cjs/index.js +25 -2
- package/dist_browser_TrailDrawer_js.js +30 -0
- package/esm/TrailDrawer.js +24 -16
- package/esm/index.js +1 -1
- package/package.json +2 -2
- package/report.html +3 -3
- package/tsparticles.effect.trail.js +241 -101
- package/tsparticles.effect.trail.min.js +1 -1
- package/tsparticles.effect.trail.min.js.LICENSE.txt +1 -1
- package/types/TrailDrawer.d.ts +4 -4
- package/umd/TrailDrawer.js +24 -16
- package/umd/index.js +27 -3
package/295.min.js
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
/*! For license information please see 295.min.js.LICENSE.txt */
|
2
|
+
(this.webpackChunk_tsparticles_effect_trail=this.webpackChunk_tsparticles_effect_trail||[]).push([[295],{295:(t,a,i)=>{i.d(a,{TrailDrawer:()=>r});var e=i(533);const l=.5;class r{async draw(t){const{context:a,radius:i,particle:e}=t,r=2*i,n=e.container.retina.pixelRatio,o=e.getPosition();if(!e.trail||!e.trailLength)return;const s=e.trailLength+i;if(e.trail.push({color:a.fillStyle??a.strokeStyle,position:{x:o.x,y:o.y}}),e.trail.length<2)return;for(;e.trail.length>s;)e.trail.shift();const h=Math.min(e.trail.length,s),c=o.x,x=o.y,d=e.container.canvas.size.width+r,g=e.container.canvas.size.height+r;let y=e.trail[h-1].position;const p=1,f=0,m=0,M=1;a.setTransform(p,f,m,M,o.x,o.y);for(let t=h;t>0;t--){const i=e.trail[t-1],o=i.position;a.beginPath(),a.moveTo(y.x-c,y.y-x);const s={x:(y.x+d)%d,y:(y.y+g)%g};if(Math.abs(y.x-o.x)>d*l||Math.abs(y.y-o.y)>g*l){y=o;continue}a.lineTo((Math.abs(y.x-o.x)>d*l?s.x:o.x)-c,(Math.abs(y.y-o.y)>g*l?s.y:o.y)-x);const p=Math.max(t/h*r,n,e.trailMinWidth??-1),f=a.globalAlpha;a.globalAlpha=e.trailFade?t/h:1,a.lineWidth=e.trailMaxWidth?Math.min(p,e.trailMaxWidth):p,a.strokeStyle=i.color,a.stroke(),a.globalAlpha=f,y=o}const{transformData:b}=t;a.setTransform(b.a,b.b,b.c,b.d,o.x,o.y),await Promise.resolve()}async particleInit(t,a){a.trail=[];const i=a.effectData;a.trailFade=i?.fade??!0,a.trailLength=(0,e.getRangeValue)(i?.length??10)*t.retina.pixelRatio,a.trailMaxWidth=i?.maxWidth?(0,e.getRangeValue)(i.maxWidth)*t.retina.pixelRatio:void 0,a.trailMinWidth=i?.minWidth?(0,e.getRangeValue)(i.minWidth)*t.retina.pixelRatio:void 0,await Promise.resolve()}}}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
/*! tsParticles Trail Shape v3.2.0 by Matteo Bruni */
|
package/browser/TrailDrawer.js
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
import { getRangeValue, } from "@tsparticles/engine";
|
2
|
+
const double = 2, minTrailLength = 2, trailLengthOffset = 1, noItems = 0, half = 0.5, minWidth = -1, defaultLength = 10, defaultAlpha = 1;
|
2
3
|
export class TrailDrawer {
|
3
|
-
draw(data) {
|
4
|
-
const { context, radius, particle } = data, diameter = radius *
|
4
|
+
async draw(data) {
|
5
|
+
const { context, radius, particle } = data, diameter = radius * double, pxRatio = particle.container.retina.pixelRatio, currentPos = particle.getPosition();
|
5
6
|
if (!particle.trail || !particle.trailLength) {
|
6
7
|
return;
|
7
8
|
}
|
8
|
-
const pathLength = particle.trailLength;
|
9
|
+
const pathLength = particle.trailLength + radius;
|
9
10
|
particle.trail.push({
|
10
11
|
color: context.fillStyle ?? context.strokeStyle,
|
11
12
|
position: {
|
@@ -13,7 +14,7 @@ export class TrailDrawer {
|
|
13
14
|
y: currentPos.y,
|
14
15
|
},
|
15
16
|
});
|
16
|
-
if (particle.trail.length <
|
17
|
+
if (particle.trail.length < minTrailLength) {
|
17
18
|
return;
|
18
19
|
}
|
19
20
|
while (particle.trail.length > pathLength) {
|
@@ -26,25 +27,30 @@ export class TrailDrawer {
|
|
26
27
|
width: particle.container.canvas.size.width + diameter,
|
27
28
|
height: particle.container.canvas.size.height + diameter,
|
28
29
|
};
|
29
|
-
let lastPos = particle.trail[trailLength -
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
let lastPos = particle.trail[trailLength - trailLengthOffset].position;
|
31
|
+
const defaultTransform = {
|
32
|
+
a: 1,
|
33
|
+
b: 0,
|
34
|
+
c: 0,
|
35
|
+
d: 1,
|
36
|
+
};
|
37
|
+
context.setTransform(defaultTransform.a, defaultTransform.b, defaultTransform.c, defaultTransform.d, currentPos.x, currentPos.y);
|
38
|
+
for (let i = trailLength; i > noItems; i--) {
|
39
|
+
const step = particle.trail[i - trailLengthOffset], position = step.position;
|
33
40
|
context.beginPath();
|
34
41
|
context.moveTo(lastPos.x - offsetPos.x, lastPos.y - offsetPos.y);
|
35
42
|
const warp = {
|
36
43
|
x: (lastPos.x + canvasSize.width) % canvasSize.width,
|
37
44
|
y: (lastPos.y + canvasSize.height) % canvasSize.height,
|
38
45
|
};
|
39
|
-
if (Math.abs(lastPos.x - position.x) > canvasSize.width
|
40
|
-
Math.abs(lastPos.y - position.y) > canvasSize.height
|
46
|
+
if (Math.abs(lastPos.x - position.x) > canvasSize.width * half ||
|
47
|
+
Math.abs(lastPos.y - position.y) > canvasSize.height * half) {
|
41
48
|
lastPos = position;
|
42
49
|
continue;
|
43
50
|
}
|
44
|
-
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width
|
45
|
-
const width = Math.max((i / trailLength) * diameter, pxRatio, particle.trailMinWidth ??
|
46
|
-
|
47
|
-
context.globalAlpha = particle.trailFade ? i / trailLength : 1;
|
51
|
+
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width * half ? warp.x : position.x) - offsetPos.x, (Math.abs(lastPos.y - position.y) > canvasSize.height * half ? warp.y : position.y) - offsetPos.y);
|
52
|
+
const width = Math.max((i / trailLength) * diameter, pxRatio, particle.trailMinWidth ?? minWidth), oldAlpha = context.globalAlpha;
|
53
|
+
context.globalAlpha = particle.trailFade ? i / trailLength : defaultAlpha;
|
48
54
|
context.lineWidth = particle.trailMaxWidth ? Math.min(width, particle.trailMaxWidth) : width;
|
49
55
|
context.strokeStyle = step.color;
|
50
56
|
context.stroke();
|
@@ -53,17 +59,19 @@ export class TrailDrawer {
|
|
53
59
|
}
|
54
60
|
const { transformData } = data;
|
55
61
|
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, currentPos.x, currentPos.y);
|
62
|
+
await Promise.resolve();
|
56
63
|
}
|
57
|
-
particleInit(container, particle) {
|
64
|
+
async particleInit(container, particle) {
|
58
65
|
particle.trail = [];
|
59
66
|
const effectData = particle.effectData;
|
60
67
|
particle.trailFade = effectData?.fade ?? true;
|
61
|
-
particle.trailLength = getRangeValue(effectData?.length ??
|
68
|
+
particle.trailLength = getRangeValue(effectData?.length ?? defaultLength) * container.retina.pixelRatio;
|
62
69
|
particle.trailMaxWidth = effectData?.maxWidth
|
63
70
|
? getRangeValue(effectData.maxWidth) * container.retina.pixelRatio
|
64
71
|
: undefined;
|
65
72
|
particle.trailMinWidth = effectData?.minWidth
|
66
73
|
? getRangeValue(effectData.minWidth) * container.retina.pixelRatio
|
67
74
|
: undefined;
|
75
|
+
await Promise.resolve();
|
68
76
|
}
|
69
77
|
}
|
package/browser/index.js
CHANGED
package/cjs/TrailDrawer.js
CHANGED
@@ -2,13 +2,14 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.TrailDrawer = void 0;
|
4
4
|
const engine_1 = require("@tsparticles/engine");
|
5
|
+
const double = 2, minTrailLength = 2, trailLengthOffset = 1, noItems = 0, half = 0.5, minWidth = -1, defaultLength = 10, defaultAlpha = 1;
|
5
6
|
class TrailDrawer {
|
6
|
-
draw(data) {
|
7
|
-
const { context, radius, particle } = data, diameter = radius *
|
7
|
+
async draw(data) {
|
8
|
+
const { context, radius, particle } = data, diameter = radius * double, pxRatio = particle.container.retina.pixelRatio, currentPos = particle.getPosition();
|
8
9
|
if (!particle.trail || !particle.trailLength) {
|
9
10
|
return;
|
10
11
|
}
|
11
|
-
const pathLength = particle.trailLength;
|
12
|
+
const pathLength = particle.trailLength + radius;
|
12
13
|
particle.trail.push({
|
13
14
|
color: context.fillStyle ?? context.strokeStyle,
|
14
15
|
position: {
|
@@ -16,7 +17,7 @@ class TrailDrawer {
|
|
16
17
|
y: currentPos.y,
|
17
18
|
},
|
18
19
|
});
|
19
|
-
if (particle.trail.length <
|
20
|
+
if (particle.trail.length < minTrailLength) {
|
20
21
|
return;
|
21
22
|
}
|
22
23
|
while (particle.trail.length > pathLength) {
|
@@ -29,25 +30,30 @@ class TrailDrawer {
|
|
29
30
|
width: particle.container.canvas.size.width + diameter,
|
30
31
|
height: particle.container.canvas.size.height + diameter,
|
31
32
|
};
|
32
|
-
let lastPos = particle.trail[trailLength -
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
let lastPos = particle.trail[trailLength - trailLengthOffset].position;
|
34
|
+
const defaultTransform = {
|
35
|
+
a: 1,
|
36
|
+
b: 0,
|
37
|
+
c: 0,
|
38
|
+
d: 1,
|
39
|
+
};
|
40
|
+
context.setTransform(defaultTransform.a, defaultTransform.b, defaultTransform.c, defaultTransform.d, currentPos.x, currentPos.y);
|
41
|
+
for (let i = trailLength; i > noItems; i--) {
|
42
|
+
const step = particle.trail[i - trailLengthOffset], position = step.position;
|
36
43
|
context.beginPath();
|
37
44
|
context.moveTo(lastPos.x - offsetPos.x, lastPos.y - offsetPos.y);
|
38
45
|
const warp = {
|
39
46
|
x: (lastPos.x + canvasSize.width) % canvasSize.width,
|
40
47
|
y: (lastPos.y + canvasSize.height) % canvasSize.height,
|
41
48
|
};
|
42
|
-
if (Math.abs(lastPos.x - position.x) > canvasSize.width
|
43
|
-
Math.abs(lastPos.y - position.y) > canvasSize.height
|
49
|
+
if (Math.abs(lastPos.x - position.x) > canvasSize.width * half ||
|
50
|
+
Math.abs(lastPos.y - position.y) > canvasSize.height * half) {
|
44
51
|
lastPos = position;
|
45
52
|
continue;
|
46
53
|
}
|
47
|
-
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width
|
48
|
-
const width = Math.max((i / trailLength) * diameter, pxRatio, particle.trailMinWidth ??
|
49
|
-
|
50
|
-
context.globalAlpha = particle.trailFade ? i / trailLength : 1;
|
54
|
+
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width * half ? warp.x : position.x) - offsetPos.x, (Math.abs(lastPos.y - position.y) > canvasSize.height * half ? warp.y : position.y) - offsetPos.y);
|
55
|
+
const width = Math.max((i / trailLength) * diameter, pxRatio, particle.trailMinWidth ?? minWidth), oldAlpha = context.globalAlpha;
|
56
|
+
context.globalAlpha = particle.trailFade ? i / trailLength : defaultAlpha;
|
51
57
|
context.lineWidth = particle.trailMaxWidth ? Math.min(width, particle.trailMaxWidth) : width;
|
52
58
|
context.strokeStyle = step.color;
|
53
59
|
context.stroke();
|
@@ -56,18 +62,20 @@ class TrailDrawer {
|
|
56
62
|
}
|
57
63
|
const { transformData } = data;
|
58
64
|
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, currentPos.x, currentPos.y);
|
65
|
+
await Promise.resolve();
|
59
66
|
}
|
60
|
-
particleInit(container, particle) {
|
67
|
+
async particleInit(container, particle) {
|
61
68
|
particle.trail = [];
|
62
69
|
const effectData = particle.effectData;
|
63
70
|
particle.trailFade = effectData?.fade ?? true;
|
64
|
-
particle.trailLength = (0, engine_1.getRangeValue)(effectData?.length ??
|
71
|
+
particle.trailLength = (0, engine_1.getRangeValue)(effectData?.length ?? defaultLength) * container.retina.pixelRatio;
|
65
72
|
particle.trailMaxWidth = effectData?.maxWidth
|
66
73
|
? (0, engine_1.getRangeValue)(effectData.maxWidth) * container.retina.pixelRatio
|
67
74
|
: undefined;
|
68
75
|
particle.trailMinWidth = effectData?.minWidth
|
69
76
|
? (0, engine_1.getRangeValue)(effectData.minWidth) * container.retina.pixelRatio
|
70
77
|
: undefined;
|
78
|
+
await Promise.resolve();
|
71
79
|
}
|
72
80
|
}
|
73
81
|
exports.TrailDrawer = TrailDrawer;
|
package/cjs/index.js
CHANGED
@@ -1,8 +1,31 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
26
|
exports.loadTrailEffect = void 0;
|
4
|
-
const TrailDrawer_js_1 = require("./TrailDrawer.js");
|
5
27
|
async function loadTrailEffect(engine, refresh = true) {
|
6
|
-
await
|
28
|
+
const { TrailDrawer } = await Promise.resolve().then(() => __importStar(require("./TrailDrawer.js")));
|
29
|
+
await engine.addEffect("trail", new TrailDrawer(), refresh);
|
7
30
|
}
|
8
31
|
exports.loadTrailEffect = loadTrailEffect;
|
@@ -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
|
+
* v3.2.0
|
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_effect_trail"] = this["webpackChunk_tsparticles_effect_trail"] || []).push([["dist_browser_TrailDrawer_js"],{
|
19
|
+
|
20
|
+
/***/ "./dist/browser/TrailDrawer.js":
|
21
|
+
/*!*************************************!*\
|
22
|
+
!*** ./dist/browser/TrailDrawer.js ***!
|
23
|
+
\*************************************/
|
24
|
+
/***/ ((__unused_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 */ TrailDrawer: () => (/* binding */ TrailDrawer)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n\nconst double = 2,\n minTrailLength = 2,\n trailLengthOffset = 1,\n noItems = 0,\n half = 0.5,\n minWidth = -1,\n defaultLength = 10,\n defaultAlpha = 1;\nclass TrailDrawer {\n async draw(data) {\n const {\n context,\n radius,\n particle\n } = data,\n diameter = radius * double,\n pxRatio = particle.container.retina.pixelRatio,\n currentPos = particle.getPosition();\n if (!particle.trail || !particle.trailLength) {\n return;\n }\n const pathLength = particle.trailLength + radius;\n particle.trail.push({\n color: context.fillStyle ?? context.strokeStyle,\n position: {\n x: currentPos.x,\n y: currentPos.y\n }\n });\n if (particle.trail.length < minTrailLength) {\n return;\n }\n while (particle.trail.length > pathLength) {\n particle.trail.shift();\n }\n const trailLength = Math.min(particle.trail.length, pathLength),\n offsetPos = {\n x: currentPos.x,\n y: currentPos.y\n },\n canvasSize = {\n width: particle.container.canvas.size.width + diameter,\n height: particle.container.canvas.size.height + diameter\n };\n let lastPos = particle.trail[trailLength - trailLengthOffset].position;\n const defaultTransform = {\n a: 1,\n b: 0,\n c: 0,\n d: 1\n };\n context.setTransform(defaultTransform.a, defaultTransform.b, defaultTransform.c, defaultTransform.d, currentPos.x, currentPos.y);\n for (let i = trailLength; i > noItems; i--) {\n const step = particle.trail[i - trailLengthOffset],\n position = step.position;\n context.beginPath();\n context.moveTo(lastPos.x - offsetPos.x, lastPos.y - offsetPos.y);\n const warp = {\n x: (lastPos.x + canvasSize.width) % canvasSize.width,\n y: (lastPos.y + canvasSize.height) % canvasSize.height\n };\n if (Math.abs(lastPos.x - position.x) > canvasSize.width * half || Math.abs(lastPos.y - position.y) > canvasSize.height * half) {\n lastPos = position;\n continue;\n }\n context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width * half ? warp.x : position.x) - offsetPos.x, (Math.abs(lastPos.y - position.y) > canvasSize.height * half ? warp.y : position.y) - offsetPos.y);\n const width = Math.max(i / trailLength * diameter, pxRatio, particle.trailMinWidth ?? minWidth),\n oldAlpha = context.globalAlpha;\n context.globalAlpha = particle.trailFade ? i / trailLength : defaultAlpha;\n context.lineWidth = particle.trailMaxWidth ? Math.min(width, particle.trailMaxWidth) : width;\n context.strokeStyle = step.color;\n context.stroke();\n context.globalAlpha = oldAlpha;\n lastPos = position;\n }\n const {\n transformData\n } = data;\n context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, currentPos.x, currentPos.y);\n await Promise.resolve();\n }\n async particleInit(container, particle) {\n particle.trail = [];\n const effectData = particle.effectData;\n particle.trailFade = effectData?.fade ?? true;\n particle.trailLength = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(effectData?.length ?? defaultLength) * container.retina.pixelRatio;\n particle.trailMaxWidth = effectData?.maxWidth ? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(effectData.maxWidth) * container.retina.pixelRatio : undefined;\n particle.trailMinWidth = effectData?.minWidth ? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(effectData.minWidth) * container.retina.pixelRatio : undefined;\n await Promise.resolve();\n }\n}\n\n//# sourceURL=webpack://@tsparticles/effect-trail/./dist/browser/TrailDrawer.js?");
|
27
|
+
|
28
|
+
/***/ })
|
29
|
+
|
30
|
+
}]);
|
package/esm/TrailDrawer.js
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
import { getRangeValue, } from "@tsparticles/engine";
|
2
|
+
const double = 2, minTrailLength = 2, trailLengthOffset = 1, noItems = 0, half = 0.5, minWidth = -1, defaultLength = 10, defaultAlpha = 1;
|
2
3
|
export class TrailDrawer {
|
3
|
-
draw(data) {
|
4
|
-
const { context, radius, particle } = data, diameter = radius *
|
4
|
+
async draw(data) {
|
5
|
+
const { context, radius, particle } = data, diameter = radius * double, pxRatio = particle.container.retina.pixelRatio, currentPos = particle.getPosition();
|
5
6
|
if (!particle.trail || !particle.trailLength) {
|
6
7
|
return;
|
7
8
|
}
|
8
|
-
const pathLength = particle.trailLength;
|
9
|
+
const pathLength = particle.trailLength + radius;
|
9
10
|
particle.trail.push({
|
10
11
|
color: context.fillStyle ?? context.strokeStyle,
|
11
12
|
position: {
|
@@ -13,7 +14,7 @@ export class TrailDrawer {
|
|
13
14
|
y: currentPos.y,
|
14
15
|
},
|
15
16
|
});
|
16
|
-
if (particle.trail.length <
|
17
|
+
if (particle.trail.length < minTrailLength) {
|
17
18
|
return;
|
18
19
|
}
|
19
20
|
while (particle.trail.length > pathLength) {
|
@@ -26,25 +27,30 @@ export class TrailDrawer {
|
|
26
27
|
width: particle.container.canvas.size.width + diameter,
|
27
28
|
height: particle.container.canvas.size.height + diameter,
|
28
29
|
};
|
29
|
-
let lastPos = particle.trail[trailLength -
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
let lastPos = particle.trail[trailLength - trailLengthOffset].position;
|
31
|
+
const defaultTransform = {
|
32
|
+
a: 1,
|
33
|
+
b: 0,
|
34
|
+
c: 0,
|
35
|
+
d: 1,
|
36
|
+
};
|
37
|
+
context.setTransform(defaultTransform.a, defaultTransform.b, defaultTransform.c, defaultTransform.d, currentPos.x, currentPos.y);
|
38
|
+
for (let i = trailLength; i > noItems; i--) {
|
39
|
+
const step = particle.trail[i - trailLengthOffset], position = step.position;
|
33
40
|
context.beginPath();
|
34
41
|
context.moveTo(lastPos.x - offsetPos.x, lastPos.y - offsetPos.y);
|
35
42
|
const warp = {
|
36
43
|
x: (lastPos.x + canvasSize.width) % canvasSize.width,
|
37
44
|
y: (lastPos.y + canvasSize.height) % canvasSize.height,
|
38
45
|
};
|
39
|
-
if (Math.abs(lastPos.x - position.x) > canvasSize.width
|
40
|
-
Math.abs(lastPos.y - position.y) > canvasSize.height
|
46
|
+
if (Math.abs(lastPos.x - position.x) > canvasSize.width * half ||
|
47
|
+
Math.abs(lastPos.y - position.y) > canvasSize.height * half) {
|
41
48
|
lastPos = position;
|
42
49
|
continue;
|
43
50
|
}
|
44
|
-
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width
|
45
|
-
const width = Math.max((i / trailLength) * diameter, pxRatio, particle.trailMinWidth ??
|
46
|
-
|
47
|
-
context.globalAlpha = particle.trailFade ? i / trailLength : 1;
|
51
|
+
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width * half ? warp.x : position.x) - offsetPos.x, (Math.abs(lastPos.y - position.y) > canvasSize.height * half ? warp.y : position.y) - offsetPos.y);
|
52
|
+
const width = Math.max((i / trailLength) * diameter, pxRatio, particle.trailMinWidth ?? minWidth), oldAlpha = context.globalAlpha;
|
53
|
+
context.globalAlpha = particle.trailFade ? i / trailLength : defaultAlpha;
|
48
54
|
context.lineWidth = particle.trailMaxWidth ? Math.min(width, particle.trailMaxWidth) : width;
|
49
55
|
context.strokeStyle = step.color;
|
50
56
|
context.stroke();
|
@@ -53,17 +59,19 @@ export class TrailDrawer {
|
|
53
59
|
}
|
54
60
|
const { transformData } = data;
|
55
61
|
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, currentPos.x, currentPos.y);
|
62
|
+
await Promise.resolve();
|
56
63
|
}
|
57
|
-
particleInit(container, particle) {
|
64
|
+
async particleInit(container, particle) {
|
58
65
|
particle.trail = [];
|
59
66
|
const effectData = particle.effectData;
|
60
67
|
particle.trailFade = effectData?.fade ?? true;
|
61
|
-
particle.trailLength = getRangeValue(effectData?.length ??
|
68
|
+
particle.trailLength = getRangeValue(effectData?.length ?? defaultLength) * container.retina.pixelRatio;
|
62
69
|
particle.trailMaxWidth = effectData?.maxWidth
|
63
70
|
? getRangeValue(effectData.maxWidth) * container.retina.pixelRatio
|
64
71
|
: undefined;
|
65
72
|
particle.trailMinWidth = effectData?.minWidth
|
66
73
|
? getRangeValue(effectData.minWidth) * container.retina.pixelRatio
|
67
74
|
: undefined;
|
75
|
+
await Promise.resolve();
|
68
76
|
}
|
69
77
|
}
|
package/esm/index.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@tsparticles/effect-trail",
|
3
|
-
"version": "3.0
|
3
|
+
"version": "3.2.0",
|
4
4
|
"description": "tsParticles trail effect",
|
5
5
|
"homepage": "https://particles.js.org",
|
6
6
|
"repository": {
|
@@ -100,7 +100,7 @@
|
|
100
100
|
"./package.json": "./package.json"
|
101
101
|
},
|
102
102
|
"dependencies": {
|
103
|
-
"@tsparticles/engine": "^3.0
|
103
|
+
"@tsparticles/engine": "^3.2.0"
|
104
104
|
},
|
105
105
|
"publishConfig": {
|
106
106
|
"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/effect-trail [
|
6
|
+
<title>@tsparticles/effect-trail [31 Jan 2024 at 02:02]</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>
|
@@ -31,8 +31,8 @@
|
|
31
31
|
<body>
|
32
32
|
<div id="app"></div>
|
33
33
|
<script>
|
34
|
-
window.chartData = [
|
35
|
-
window.entrypoints = ["tsparticles.effect.trail
|
34
|
+
window.chartData = [];
|
35
|
+
window.entrypoints = ["tsparticles.effect.trail.min"];
|
36
36
|
window.defaultSizes = "parsed";
|
37
37
|
</script>
|
38
38
|
</body>
|
@@ -4,7 +4,15 @@
|
|
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
|
-
* v3.0
|
7
|
+
* v3.2.0
|
8
|
+
*/
|
9
|
+
/*
|
10
|
+
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
11
|
+
* This devtool is neither made for production nor for readable output files.
|
12
|
+
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
13
|
+
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
14
|
+
* or disable the default devtool with "devtool: false".
|
15
|
+
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
8
16
|
*/
|
9
17
|
(function webpackUniversalModuleDefinition(root, factory) {
|
10
18
|
if(typeof exports === 'object' && typeof module === 'object')
|
@@ -15,15 +23,28 @@
|
|
15
23
|
var a = typeof exports === 'object' ? factory(require("@tsparticles/engine")) : factory(root["window"]);
|
16
24
|
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
|
17
25
|
}
|
18
|
-
})(this, (
|
26
|
+
})(this, (__WEBPACK_EXTERNAL_MODULE__tsparticles_engine__) => {
|
19
27
|
return /******/ (() => { // webpackBootstrap
|
20
28
|
/******/ "use strict";
|
21
29
|
/******/ var __webpack_modules__ = ({
|
22
30
|
|
23
|
-
/***/
|
31
|
+
/***/ "./dist/browser/index.js":
|
32
|
+
/*!*******************************!*\
|
33
|
+
!*** ./dist/browser/index.js ***!
|
34
|
+
\*******************************/
|
35
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
36
|
+
|
37
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadTrailEffect: () => (/* binding */ loadTrailEffect)\n/* harmony export */ });\nasync function loadTrailEffect(engine, refresh = true) {\n const {\n TrailDrawer\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_TrailDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./TrailDrawer.js */ \"./dist/browser/TrailDrawer.js\"));\n await engine.addEffect(\"trail\", new TrailDrawer(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/effect-trail/./dist/browser/index.js?");
|
38
|
+
|
39
|
+
/***/ }),
|
40
|
+
|
41
|
+
/***/ "@tsparticles/engine":
|
42
|
+
/*!*********************************************************************************************************************************!*\
|
43
|
+
!*** external {"commonjs":"@tsparticles/engine","commonjs2":"@tsparticles/engine","amd":"@tsparticles/engine","root":"window"} ***!
|
44
|
+
\*********************************************************************************************************************************/
|
24
45
|
/***/ ((module) => {
|
25
46
|
|
26
|
-
module.exports =
|
47
|
+
module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_engine__;
|
27
48
|
|
28
49
|
/***/ })
|
29
50
|
|
@@ -53,7 +74,22 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__533__;
|
|
53
74
|
/******/ return module.exports;
|
54
75
|
/******/ }
|
55
76
|
/******/
|
77
|
+
/******/ // expose the modules object (__webpack_modules__)
|
78
|
+
/******/ __webpack_require__.m = __webpack_modules__;
|
79
|
+
/******/
|
56
80
|
/************************************************************************/
|
81
|
+
/******/ /* webpack/runtime/compat get default export */
|
82
|
+
/******/ (() => {
|
83
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
84
|
+
/******/ __webpack_require__.n = (module) => {
|
85
|
+
/******/ var getter = module && module.__esModule ?
|
86
|
+
/******/ () => (module['default']) :
|
87
|
+
/******/ () => (module);
|
88
|
+
/******/ __webpack_require__.d(getter, { a: getter });
|
89
|
+
/******/ return getter;
|
90
|
+
/******/ };
|
91
|
+
/******/ })();
|
92
|
+
/******/
|
57
93
|
/******/ /* webpack/runtime/define property getters */
|
58
94
|
/******/ (() => {
|
59
95
|
/******/ // define getter functions for harmony exports
|
@@ -66,11 +102,91 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__533__;
|
|
66
102
|
/******/ };
|
67
103
|
/******/ })();
|
68
104
|
/******/
|
105
|
+
/******/ /* webpack/runtime/ensure chunk */
|
106
|
+
/******/ (() => {
|
107
|
+
/******/ __webpack_require__.f = {};
|
108
|
+
/******/ // This file contains only the entry chunk.
|
109
|
+
/******/ // The chunk loading function for additional chunks
|
110
|
+
/******/ __webpack_require__.e = (chunkId) => {
|
111
|
+
/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
|
112
|
+
/******/ __webpack_require__.f[key](chunkId, promises);
|
113
|
+
/******/ return promises;
|
114
|
+
/******/ }, []));
|
115
|
+
/******/ };
|
116
|
+
/******/ })();
|
117
|
+
/******/
|
118
|
+
/******/ /* webpack/runtime/get javascript chunk filename */
|
119
|
+
/******/ (() => {
|
120
|
+
/******/ // This function allow to reference async chunks
|
121
|
+
/******/ __webpack_require__.u = (chunkId) => {
|
122
|
+
/******/ // return url for filenames based on template
|
123
|
+
/******/ return "" + chunkId + ".js";
|
124
|
+
/******/ };
|
125
|
+
/******/ })();
|
126
|
+
/******/
|
127
|
+
/******/ /* webpack/runtime/global */
|
128
|
+
/******/ (() => {
|
129
|
+
/******/ __webpack_require__.g = (function() {
|
130
|
+
/******/ if (typeof globalThis === 'object') return globalThis;
|
131
|
+
/******/ try {
|
132
|
+
/******/ return this || new Function('return this')();
|
133
|
+
/******/ } catch (e) {
|
134
|
+
/******/ if (typeof window === 'object') return window;
|
135
|
+
/******/ }
|
136
|
+
/******/ })();
|
137
|
+
/******/ })();
|
138
|
+
/******/
|
69
139
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
70
140
|
/******/ (() => {
|
71
141
|
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
72
142
|
/******/ })();
|
73
143
|
/******/
|
144
|
+
/******/ /* webpack/runtime/load script */
|
145
|
+
/******/ (() => {
|
146
|
+
/******/ var inProgress = {};
|
147
|
+
/******/ var dataWebpackPrefix = "@tsparticles/effect-trail:";
|
148
|
+
/******/ // loadScript function to load a script via script tag
|
149
|
+
/******/ __webpack_require__.l = (url, done, key, chunkId) => {
|
150
|
+
/******/ if(inProgress[url]) { inProgress[url].push(done); return; }
|
151
|
+
/******/ var script, needAttach;
|
152
|
+
/******/ if(key !== undefined) {
|
153
|
+
/******/ var scripts = document.getElementsByTagName("script");
|
154
|
+
/******/ for(var i = 0; i < scripts.length; i++) {
|
155
|
+
/******/ var s = scripts[i];
|
156
|
+
/******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; }
|
157
|
+
/******/ }
|
158
|
+
/******/ }
|
159
|
+
/******/ if(!script) {
|
160
|
+
/******/ needAttach = true;
|
161
|
+
/******/ script = document.createElement('script');
|
162
|
+
/******/
|
163
|
+
/******/ script.charset = 'utf-8';
|
164
|
+
/******/ script.timeout = 120;
|
165
|
+
/******/ if (__webpack_require__.nc) {
|
166
|
+
/******/ script.setAttribute("nonce", __webpack_require__.nc);
|
167
|
+
/******/ }
|
168
|
+
/******/ script.setAttribute("data-webpack", dataWebpackPrefix + key);
|
169
|
+
/******/
|
170
|
+
/******/ script.src = url;
|
171
|
+
/******/ }
|
172
|
+
/******/ inProgress[url] = [done];
|
173
|
+
/******/ var onScriptComplete = (prev, event) => {
|
174
|
+
/******/ // avoid mem leaks in IE.
|
175
|
+
/******/ script.onerror = script.onload = null;
|
176
|
+
/******/ clearTimeout(timeout);
|
177
|
+
/******/ var doneFns = inProgress[url];
|
178
|
+
/******/ delete inProgress[url];
|
179
|
+
/******/ script.parentNode && script.parentNode.removeChild(script);
|
180
|
+
/******/ doneFns && doneFns.forEach((fn) => (fn(event)));
|
181
|
+
/******/ if(prev) return prev(event);
|
182
|
+
/******/ }
|
183
|
+
/******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
|
184
|
+
/******/ script.onerror = onScriptComplete.bind(null, script.onerror);
|
185
|
+
/******/ script.onload = onScriptComplete.bind(null, script.onload);
|
186
|
+
/******/ needAttach && document.head.appendChild(script);
|
187
|
+
/******/ };
|
188
|
+
/******/ })();
|
189
|
+
/******/
|
74
190
|
/******/ /* webpack/runtime/make namespace object */
|
75
191
|
/******/ (() => {
|
76
192
|
/******/ // define __esModule on exports
|
@@ -82,104 +198,128 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__533__;
|
|
82
198
|
/******/ };
|
83
199
|
/******/ })();
|
84
200
|
/******/
|
201
|
+
/******/ /* webpack/runtime/publicPath */
|
202
|
+
/******/ (() => {
|
203
|
+
/******/ var scriptUrl;
|
204
|
+
/******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
|
205
|
+
/******/ var document = __webpack_require__.g.document;
|
206
|
+
/******/ if (!scriptUrl && document) {
|
207
|
+
/******/ if (document.currentScript)
|
208
|
+
/******/ scriptUrl = document.currentScript.src;
|
209
|
+
/******/ if (!scriptUrl) {
|
210
|
+
/******/ var scripts = document.getElementsByTagName("script");
|
211
|
+
/******/ if(scripts.length) {
|
212
|
+
/******/ var i = scripts.length - 1;
|
213
|
+
/******/ while (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;
|
214
|
+
/******/ }
|
215
|
+
/******/ }
|
216
|
+
/******/ }
|
217
|
+
/******/ // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration
|
218
|
+
/******/ // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.
|
219
|
+
/******/ if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
|
220
|
+
/******/ scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/");
|
221
|
+
/******/ __webpack_require__.p = scriptUrl;
|
222
|
+
/******/ })();
|
223
|
+
/******/
|
224
|
+
/******/ /* webpack/runtime/jsonp chunk loading */
|
225
|
+
/******/ (() => {
|
226
|
+
/******/ // no baseURI
|
227
|
+
/******/
|
228
|
+
/******/ // object to store loaded and loading chunks
|
229
|
+
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
|
230
|
+
/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
|
231
|
+
/******/ var installedChunks = {
|
232
|
+
/******/ "tsparticles.effect.trail": 0
|
233
|
+
/******/ };
|
234
|
+
/******/
|
235
|
+
/******/ __webpack_require__.f.j = (chunkId, promises) => {
|
236
|
+
/******/ // JSONP chunk loading for javascript
|
237
|
+
/******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
|
238
|
+
/******/ if(installedChunkData !== 0) { // 0 means "already installed".
|
239
|
+
/******/
|
240
|
+
/******/ // a Promise means "currently loading".
|
241
|
+
/******/ if(installedChunkData) {
|
242
|
+
/******/ promises.push(installedChunkData[2]);
|
243
|
+
/******/ } else {
|
244
|
+
/******/ if(true) { // all chunks have JS
|
245
|
+
/******/ // setup Promise in chunk cache
|
246
|
+
/******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));
|
247
|
+
/******/ promises.push(installedChunkData[2] = promise);
|
248
|
+
/******/
|
249
|
+
/******/ // start chunk loading
|
250
|
+
/******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId);
|
251
|
+
/******/ // create error before stack unwound to get useful stacktrace later
|
252
|
+
/******/ var error = new Error();
|
253
|
+
/******/ var loadingEnded = (event) => {
|
254
|
+
/******/ if(__webpack_require__.o(installedChunks, chunkId)) {
|
255
|
+
/******/ installedChunkData = installedChunks[chunkId];
|
256
|
+
/******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
|
257
|
+
/******/ if(installedChunkData) {
|
258
|
+
/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
|
259
|
+
/******/ var realSrc = event && event.target && event.target.src;
|
260
|
+
/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
|
261
|
+
/******/ error.name = 'ChunkLoadError';
|
262
|
+
/******/ error.type = errorType;
|
263
|
+
/******/ error.request = realSrc;
|
264
|
+
/******/ installedChunkData[1](error);
|
265
|
+
/******/ }
|
266
|
+
/******/ }
|
267
|
+
/******/ };
|
268
|
+
/******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId);
|
269
|
+
/******/ }
|
270
|
+
/******/ }
|
271
|
+
/******/ }
|
272
|
+
/******/ };
|
273
|
+
/******/
|
274
|
+
/******/ // no prefetching
|
275
|
+
/******/
|
276
|
+
/******/ // no preloaded
|
277
|
+
/******/
|
278
|
+
/******/ // no HMR
|
279
|
+
/******/
|
280
|
+
/******/ // no HMR manifest
|
281
|
+
/******/
|
282
|
+
/******/ // no on chunks loaded
|
283
|
+
/******/
|
284
|
+
/******/ // install a JSONP callback for chunk loading
|
285
|
+
/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
|
286
|
+
/******/ var chunkIds = data[0];
|
287
|
+
/******/ var moreModules = data[1];
|
288
|
+
/******/ var runtime = data[2];
|
289
|
+
/******/ // add "moreModules" to the modules object,
|
290
|
+
/******/ // then flag all "chunkIds" as loaded and fire callback
|
291
|
+
/******/ var moduleId, chunkId, i = 0;
|
292
|
+
/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
|
293
|
+
/******/ for(moduleId in moreModules) {
|
294
|
+
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
|
295
|
+
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
|
296
|
+
/******/ }
|
297
|
+
/******/ }
|
298
|
+
/******/ if(runtime) var result = runtime(__webpack_require__);
|
299
|
+
/******/ }
|
300
|
+
/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
|
301
|
+
/******/ for(;i < chunkIds.length; i++) {
|
302
|
+
/******/ chunkId = chunkIds[i];
|
303
|
+
/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
|
304
|
+
/******/ installedChunks[chunkId][0]();
|
305
|
+
/******/ }
|
306
|
+
/******/ installedChunks[chunkId] = 0;
|
307
|
+
/******/ }
|
308
|
+
/******/
|
309
|
+
/******/ }
|
310
|
+
/******/
|
311
|
+
/******/ var chunkLoadingGlobal = this["webpackChunk_tsparticles_effect_trail"] = this["webpackChunk_tsparticles_effect_trail"] || [];
|
312
|
+
/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
|
313
|
+
/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
|
314
|
+
/******/ })();
|
315
|
+
/******/
|
85
316
|
/************************************************************************/
|
86
|
-
|
87
|
-
//
|
88
|
-
|
89
|
-
//
|
90
|
-
__webpack_require__.
|
91
|
-
|
92
|
-
// EXPORTS
|
93
|
-
__webpack_require__.d(__webpack_exports__, {
|
94
|
-
loadTrailEffect: () => (/* binding */ loadTrailEffect)
|
95
|
-
});
|
96
|
-
|
97
|
-
// EXTERNAL MODULE: external {"commonjs":"@tsparticles/engine","commonjs2":"@tsparticles/engine","amd":"@tsparticles/engine","root":"window"}
|
98
|
-
var engine_root_window_ = __webpack_require__(533);
|
99
|
-
;// CONCATENATED MODULE: ./dist/browser/TrailDrawer.js
|
100
|
-
|
101
|
-
class TrailDrawer {
|
102
|
-
draw(data) {
|
103
|
-
const {
|
104
|
-
context,
|
105
|
-
radius,
|
106
|
-
particle
|
107
|
-
} = data,
|
108
|
-
diameter = radius * 2,
|
109
|
-
pxRatio = particle.container.retina.pixelRatio,
|
110
|
-
currentPos = particle.getPosition();
|
111
|
-
if (!particle.trail || !particle.trailLength) {
|
112
|
-
return;
|
113
|
-
}
|
114
|
-
const pathLength = particle.trailLength;
|
115
|
-
particle.trail.push({
|
116
|
-
color: context.fillStyle ?? context.strokeStyle,
|
117
|
-
position: {
|
118
|
-
x: currentPos.x,
|
119
|
-
y: currentPos.y
|
120
|
-
}
|
121
|
-
});
|
122
|
-
if (particle.trail.length < 2) {
|
123
|
-
return;
|
124
|
-
}
|
125
|
-
while (particle.trail.length > pathLength) {
|
126
|
-
particle.trail.shift();
|
127
|
-
}
|
128
|
-
const trailLength = Math.min(particle.trail.length, pathLength),
|
129
|
-
offsetPos = {
|
130
|
-
x: currentPos.x,
|
131
|
-
y: currentPos.y
|
132
|
-
},
|
133
|
-
canvasSize = {
|
134
|
-
width: particle.container.canvas.size.width + diameter,
|
135
|
-
height: particle.container.canvas.size.height + diameter
|
136
|
-
};
|
137
|
-
let lastPos = particle.trail[trailLength - 1].position;
|
138
|
-
context.setTransform(1, 0, 0, 1, currentPos.x, currentPos.y);
|
139
|
-
for (let i = trailLength; i > 0; i--) {
|
140
|
-
const step = particle.trail[i - 1],
|
141
|
-
position = step.position;
|
142
|
-
context.beginPath();
|
143
|
-
context.moveTo(lastPos.x - offsetPos.x, lastPos.y - offsetPos.y);
|
144
|
-
const warp = {
|
145
|
-
x: (lastPos.x + canvasSize.width) % canvasSize.width,
|
146
|
-
y: (lastPos.y + canvasSize.height) % canvasSize.height
|
147
|
-
};
|
148
|
-
if (Math.abs(lastPos.x - position.x) > canvasSize.width / 2 || Math.abs(lastPos.y - position.y) > canvasSize.height / 2) {
|
149
|
-
lastPos = position;
|
150
|
-
continue;
|
151
|
-
}
|
152
|
-
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width / 2 ? warp.x : position.x) - offsetPos.x, (Math.abs(lastPos.y - position.y) > canvasSize.height / 2 ? warp.y : position.y) - offsetPos.y);
|
153
|
-
const width = Math.max(i / trailLength * diameter, pxRatio, particle.trailMinWidth ?? -1);
|
154
|
-
const oldAlpha = context.globalAlpha;
|
155
|
-
context.globalAlpha = particle.trailFade ? i / trailLength : 1;
|
156
|
-
context.lineWidth = particle.trailMaxWidth ? Math.min(width, particle.trailMaxWidth) : width;
|
157
|
-
context.strokeStyle = step.color;
|
158
|
-
context.stroke();
|
159
|
-
context.globalAlpha = oldAlpha;
|
160
|
-
lastPos = position;
|
161
|
-
}
|
162
|
-
const {
|
163
|
-
transformData
|
164
|
-
} = data;
|
165
|
-
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, currentPos.x, currentPos.y);
|
166
|
-
}
|
167
|
-
particleInit(container, particle) {
|
168
|
-
particle.trail = [];
|
169
|
-
const effectData = particle.effectData;
|
170
|
-
particle.trailFade = effectData?.fade ?? true;
|
171
|
-
particle.trailLength = (0,engine_root_window_.getRangeValue)(effectData?.length ?? 10) * container.retina.pixelRatio;
|
172
|
-
particle.trailMaxWidth = effectData?.maxWidth ? (0,engine_root_window_.getRangeValue)(effectData.maxWidth) * container.retina.pixelRatio : undefined;
|
173
|
-
particle.trailMinWidth = effectData?.minWidth ? (0,engine_root_window_.getRangeValue)(effectData.minWidth) * container.retina.pixelRatio : undefined;
|
174
|
-
}
|
175
|
-
}
|
176
|
-
;// CONCATENATED MODULE: ./dist/browser/index.js
|
177
|
-
|
178
|
-
async function loadTrailEffect(engine, refresh = true) {
|
179
|
-
await engine.addEffect("trail", new TrailDrawer(), refresh);
|
180
|
-
}
|
181
|
-
})();
|
182
|
-
|
317
|
+
/******/
|
318
|
+
/******/ // startup
|
319
|
+
/******/ // Load entry module and return exports
|
320
|
+
/******/ // This entry module can't be inlined because the eval devtool is used.
|
321
|
+
/******/ var __webpack_exports__ = __webpack_require__("./dist/browser/index.js");
|
322
|
+
/******/
|
183
323
|
/******/ return __webpack_exports__;
|
184
324
|
/******/ })()
|
185
325
|
;
|
@@ -1,2 +1,2 @@
|
|
1
1
|
/*! For license information please see tsparticles.effect.trail.min.js.LICENSE.txt */
|
2
|
-
!function(t
|
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={533: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.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},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/effect-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"),u=0;u<c.length;u++){var f=c[u];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==r+i){l=f;break}}l||(s=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,n.nc&&l.setAttribute("nonce",n.nc),l.setAttribute("data-webpack",r+i),l.src=e),t[e]=[o];var p=(r,o)=>{l.onerror=l.onload=null,clearTimeout(d);var i=t[e];if(delete t[e],l.parentNode&&l.parentNode.removeChild(l),i&&i.forEach((e=>e(o))),r)return r(o)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=p.bind(null,l.onerror),l.onload=p.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&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var o=r.length-1;o>-1&&!e;)e=r[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={242: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=r[0],l=r[1],s=r[2],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_effect_trail=this.webpackChunk_tsparticles_effect_trail||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var a={};return(()=>{async function e(e,t=!0){const{TrailDrawer:r}=await n.e(295).then(n.bind(n,295));await e.addEffect("trail",new r,t)}n.r(a),n.d(a,{loadTrailEffect:()=>e})})(),a})()));
|
@@ -1 +1 @@
|
|
1
|
-
/*! tsParticles Trail Shape v3.0
|
1
|
+
/*! tsParticles Trail Shape v3.2.0 by Matteo Bruni */
|
package/types/TrailDrawer.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import { type Container, type ICoordinates, type IEffectDrawer, type IShapeDrawData, type Particle } from "@tsparticles/engine";
|
2
|
-
|
2
|
+
interface TrailStep {
|
3
3
|
color: string | CanvasGradient | CanvasPattern;
|
4
4
|
position: ICoordinates;
|
5
|
-
}
|
5
|
+
}
|
6
6
|
type TrailParticle = Particle & {
|
7
7
|
trail?: TrailStep[];
|
8
8
|
trailFade?: boolean;
|
@@ -11,7 +11,7 @@ type TrailParticle = Particle & {
|
|
11
11
|
trailMinWidth?: number;
|
12
12
|
};
|
13
13
|
export declare class TrailDrawer implements IEffectDrawer<TrailParticle> {
|
14
|
-
draw(data: IShapeDrawData<TrailParticle>): void
|
15
|
-
particleInit(container: Container, particle: TrailParticle): void
|
14
|
+
draw(data: IShapeDrawData<TrailParticle>): Promise<void>;
|
15
|
+
particleInit(container: Container, particle: TrailParticle): Promise<void>;
|
16
16
|
}
|
17
17
|
export {};
|
package/umd/TrailDrawer.js
CHANGED
@@ -11,13 +11,14 @@
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.TrailDrawer = void 0;
|
13
13
|
const engine_1 = require("@tsparticles/engine");
|
14
|
+
const double = 2, minTrailLength = 2, trailLengthOffset = 1, noItems = 0, half = 0.5, minWidth = -1, defaultLength = 10, defaultAlpha = 1;
|
14
15
|
class TrailDrawer {
|
15
|
-
draw(data) {
|
16
|
-
const { context, radius, particle } = data, diameter = radius *
|
16
|
+
async draw(data) {
|
17
|
+
const { context, radius, particle } = data, diameter = radius * double, pxRatio = particle.container.retina.pixelRatio, currentPos = particle.getPosition();
|
17
18
|
if (!particle.trail || !particle.trailLength) {
|
18
19
|
return;
|
19
20
|
}
|
20
|
-
const pathLength = particle.trailLength;
|
21
|
+
const pathLength = particle.trailLength + radius;
|
21
22
|
particle.trail.push({
|
22
23
|
color: context.fillStyle ?? context.strokeStyle,
|
23
24
|
position: {
|
@@ -25,7 +26,7 @@
|
|
25
26
|
y: currentPos.y,
|
26
27
|
},
|
27
28
|
});
|
28
|
-
if (particle.trail.length <
|
29
|
+
if (particle.trail.length < minTrailLength) {
|
29
30
|
return;
|
30
31
|
}
|
31
32
|
while (particle.trail.length > pathLength) {
|
@@ -38,25 +39,30 @@
|
|
38
39
|
width: particle.container.canvas.size.width + diameter,
|
39
40
|
height: particle.container.canvas.size.height + diameter,
|
40
41
|
};
|
41
|
-
let lastPos = particle.trail[trailLength -
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
let lastPos = particle.trail[trailLength - trailLengthOffset].position;
|
43
|
+
const defaultTransform = {
|
44
|
+
a: 1,
|
45
|
+
b: 0,
|
46
|
+
c: 0,
|
47
|
+
d: 1,
|
48
|
+
};
|
49
|
+
context.setTransform(defaultTransform.a, defaultTransform.b, defaultTransform.c, defaultTransform.d, currentPos.x, currentPos.y);
|
50
|
+
for (let i = trailLength; i > noItems; i--) {
|
51
|
+
const step = particle.trail[i - trailLengthOffset], position = step.position;
|
45
52
|
context.beginPath();
|
46
53
|
context.moveTo(lastPos.x - offsetPos.x, lastPos.y - offsetPos.y);
|
47
54
|
const warp = {
|
48
55
|
x: (lastPos.x + canvasSize.width) % canvasSize.width,
|
49
56
|
y: (lastPos.y + canvasSize.height) % canvasSize.height,
|
50
57
|
};
|
51
|
-
if (Math.abs(lastPos.x - position.x) > canvasSize.width
|
52
|
-
Math.abs(lastPos.y - position.y) > canvasSize.height
|
58
|
+
if (Math.abs(lastPos.x - position.x) > canvasSize.width * half ||
|
59
|
+
Math.abs(lastPos.y - position.y) > canvasSize.height * half) {
|
53
60
|
lastPos = position;
|
54
61
|
continue;
|
55
62
|
}
|
56
|
-
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width
|
57
|
-
const width = Math.max((i / trailLength) * diameter, pxRatio, particle.trailMinWidth ??
|
58
|
-
|
59
|
-
context.globalAlpha = particle.trailFade ? i / trailLength : 1;
|
63
|
+
context.lineTo((Math.abs(lastPos.x - position.x) > canvasSize.width * half ? warp.x : position.x) - offsetPos.x, (Math.abs(lastPos.y - position.y) > canvasSize.height * half ? warp.y : position.y) - offsetPos.y);
|
64
|
+
const width = Math.max((i / trailLength) * diameter, pxRatio, particle.trailMinWidth ?? minWidth), oldAlpha = context.globalAlpha;
|
65
|
+
context.globalAlpha = particle.trailFade ? i / trailLength : defaultAlpha;
|
60
66
|
context.lineWidth = particle.trailMaxWidth ? Math.min(width, particle.trailMaxWidth) : width;
|
61
67
|
context.strokeStyle = step.color;
|
62
68
|
context.stroke();
|
@@ -65,18 +71,20 @@
|
|
65
71
|
}
|
66
72
|
const { transformData } = data;
|
67
73
|
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, currentPos.x, currentPos.y);
|
74
|
+
await Promise.resolve();
|
68
75
|
}
|
69
|
-
particleInit(container, particle) {
|
76
|
+
async particleInit(container, particle) {
|
70
77
|
particle.trail = [];
|
71
78
|
const effectData = particle.effectData;
|
72
79
|
particle.trailFade = effectData?.fade ?? true;
|
73
|
-
particle.trailLength = (0, engine_1.getRangeValue)(effectData?.length ??
|
80
|
+
particle.trailLength = (0, engine_1.getRangeValue)(effectData?.length ?? defaultLength) * container.retina.pixelRatio;
|
74
81
|
particle.trailMaxWidth = effectData?.maxWidth
|
75
82
|
? (0, engine_1.getRangeValue)(effectData.maxWidth) * container.retina.pixelRatio
|
76
83
|
: undefined;
|
77
84
|
particle.trailMinWidth = effectData?.minWidth
|
78
85
|
? (0, engine_1.getRangeValue)(effectData.minWidth) * container.retina.pixelRatio
|
79
86
|
: undefined;
|
87
|
+
await Promise.resolve();
|
80
88
|
}
|
81
89
|
}
|
82
90
|
exports.TrailDrawer = TrailDrawer;
|
package/umd/index.js
CHANGED
@@ -1,18 +1,42 @@
|
|
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 (mod) {
|
18
|
+
if (mod && mod.__esModule) return mod;
|
19
|
+
var result = {};
|
20
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
21
|
+
__setModuleDefault(result, mod);
|
22
|
+
return result;
|
23
|
+
};
|
1
24
|
(function (factory) {
|
2
25
|
if (typeof module === "object" && typeof module.exports === "object") {
|
3
26
|
var v = factory(require, exports);
|
4
27
|
if (v !== undefined) module.exports = v;
|
5
28
|
}
|
6
29
|
else if (typeof define === "function" && define.amd) {
|
7
|
-
define(["require", "exports"
|
30
|
+
define(["require", "exports"], factory);
|
8
31
|
}
|
9
32
|
})(function (require, exports) {
|
10
33
|
"use strict";
|
34
|
+
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
|
11
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
36
|
exports.loadTrailEffect = void 0;
|
13
|
-
const TrailDrawer_js_1 = require("./TrailDrawer.js");
|
14
37
|
async function loadTrailEffect(engine, refresh = true) {
|
15
|
-
await
|
38
|
+
const { TrailDrawer } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./TrailDrawer.js"))) : new Promise((resolve_1, reject_1) => { require(["./TrailDrawer.js"], resolve_1, reject_1); }).then(__importStar));
|
39
|
+
await engine.addEffect("trail", new TrailDrawer(), refresh);
|
16
40
|
}
|
17
41
|
exports.loadTrailEffect = loadTrailEffect;
|
18
42
|
});
|