@tsparticles/path-svg 3.0.2 → 3.1.0

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.
@@ -1,4 +1,5 @@
1
- import { Vector, getPosition, getRandom, randomInRange, } from "@tsparticles/engine";
1
+ import { Vector, getPosition, getRandom, halfRandom, randomInRange, } from "@tsparticles/engine";
2
+ const defaultSpeed = 1, half = 0.5, minStep = 0, minIndex = 0, minWidth = 0, minScale = 1;
2
3
  export class SVGPathGenerator {
3
4
  constructor() {
4
5
  this._paths = [];
@@ -11,21 +12,21 @@ export class SVGPathGenerator {
11
12
  generate(particle, delta) {
12
13
  const container = particle.container, pxRatio = container.retina.pixelRatio;
13
14
  if (particle.svgDirection === undefined) {
14
- particle.svgDirection = getRandom() > 0.5 ? 0 : 1;
15
+ particle.svgDirection = getRandom() > halfRandom ? 0 : 1;
15
16
  }
16
17
  if (particle.svgPathIndex === undefined) {
17
18
  particle.svgPathIndex = Math.floor(Math.random() * this._paths.length);
18
19
  }
19
20
  if (particle.svgSpeed === undefined) {
20
- particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? 1) / 2).length;
21
+ particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? defaultSpeed) * half).length;
21
22
  }
22
23
  if (particle.svgStep === undefined) {
23
24
  particle.svgStep = randomInRange({ min: 0, max: this._paths[particle.svgPathIndex].length }) * pxRatio;
24
25
  }
25
26
  if (particle.svgOffset === undefined) {
26
27
  particle.svgOffset = {
27
- width: randomInRange({ min: -this._width / 2, max: this._width / 2 }) * pxRatio,
28
- height: randomInRange({ min: -this._width / 2, max: this._width / 2 }) * pxRatio,
28
+ width: randomInRange({ min: -this._width * half, max: this._width * half }) * pxRatio,
29
+ height: randomInRange({ min: -this._width * half, max: this._width * half }) * pxRatio,
29
30
  };
30
31
  }
31
32
  if (particle.svgInitialPosition === undefined) {
@@ -41,12 +42,12 @@ export class SVGPathGenerator {
41
42
  }
42
43
  let path = this._paths[particle.svgPathIndex];
43
44
  if (path) {
44
- const pathLength = path.length;
45
+ const pathLength = path.length, indexOffset = 1;
45
46
  if (particle.svgStep >= pathLength) {
46
- particle.svgPathIndex = particle.svgPathIndex + 1;
47
+ particle.svgPathIndex = particle.svgPathIndex + indexOffset;
47
48
  if (particle.svgPathIndex >= this._paths.length) {
48
49
  if (this._reverse) {
49
- particle.svgPathIndex = this._paths.length - 1;
50
+ particle.svgPathIndex = this._paths.length - indexOffset;
50
51
  particle.svgDirection = 1;
51
52
  }
52
53
  else {
@@ -55,15 +56,15 @@ export class SVGPathGenerator {
55
56
  }
56
57
  }
57
58
  }
58
- else if (particle.svgStep <= 0) {
59
- particle.svgPathIndex = particle.svgPathIndex - 1;
60
- if (particle.svgPathIndex < 0) {
59
+ else if (particle.svgStep <= minStep) {
60
+ particle.svgPathIndex = particle.svgPathIndex - indexOffset;
61
+ if (particle.svgPathIndex < minIndex) {
61
62
  if (this._reverse) {
62
63
  particle.svgPathIndex = 0;
63
64
  particle.svgDirection = 0;
64
65
  }
65
66
  else {
66
- particle.svgPathIndex = this._paths.length - 1;
67
+ particle.svgPathIndex = this._paths.length - indexOffset;
67
68
  path = this._paths[particle.svgPathIndex];
68
69
  particle.svgStep = path.length;
69
70
  }
@@ -74,12 +75,12 @@ export class SVGPathGenerator {
74
75
  if (path) {
75
76
  const pathElement = path.element, pos = pathElement.getPointAtLength(particle.svgStep), canvasSize = particle.container.canvas.size, offset = getPosition(this._offset, canvasSize), scale = this._scale * pxRatio;
76
77
  particle.position.x =
77
- (pos.x - this._size.width / 2) * scale +
78
+ (pos.x - this._size.width * half) * scale +
78
79
  particle.svgInitialPosition.x +
79
80
  offset.x +
80
81
  particle.svgOffset.width;
81
82
  particle.position.y =
82
- (pos.y - this._size.height / 2) * scale +
83
+ (pos.y - this._size.height * half) * scale +
83
84
  particle.svgInitialPosition.y +
84
85
  offset.y +
85
86
  particle.svgOffset.height;
@@ -89,16 +90,16 @@ export class SVGPathGenerator {
89
90
  init(container) {
90
91
  const options = container.actualOptions.particles.move.path.options, position = options.position ?? this._offset;
91
92
  this._reverse = options.reverse ?? this._reverse;
92
- this._scale = options.scale ?? 1;
93
+ this._scale = options.scale ?? minScale;
93
94
  this._offset.x = position.x;
94
95
  this._offset.y = position.y;
95
96
  this._offset.mode = position.mode;
96
- this._width = options.width ?? 0;
97
+ this._width = options.width ?? minWidth;
97
98
  if (options.url && !options.path) {
98
99
  const url = options.url;
99
- (async () => {
100
+ void (async () => {
100
101
  const response = await fetch(url), data = await response.text();
101
- const parser = new DOMParser(), doc = parser.parseFromString(data, "image/svg+xml"), svg = doc.getElementsByTagName("svg")[0];
102
+ const parser = new DOMParser(), doc = parser.parseFromString(data, "image/svg+xml"), firstIndex = 0, svg = doc.getElementsByTagName("svg")[firstIndex];
102
103
  let svgPaths = svg.getElementsByTagName("path");
103
104
  if (!svgPaths.length) {
104
105
  svgPaths = doc.getElementsByTagName("path");
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SVGPathGenerator = void 0;
4
4
  const engine_1 = require("@tsparticles/engine");
5
+ const defaultSpeed = 1, half = 0.5, minStep = 0, minIndex = 0, minWidth = 0, minScale = 1;
5
6
  class SVGPathGenerator {
6
7
  constructor() {
7
8
  this._paths = [];
@@ -14,21 +15,21 @@ class SVGPathGenerator {
14
15
  generate(particle, delta) {
15
16
  const container = particle.container, pxRatio = container.retina.pixelRatio;
16
17
  if (particle.svgDirection === undefined) {
17
- particle.svgDirection = (0, engine_1.getRandom)() > 0.5 ? 0 : 1;
18
+ particle.svgDirection = (0, engine_1.getRandom)() > engine_1.halfRandom ? 0 : 1;
18
19
  }
19
20
  if (particle.svgPathIndex === undefined) {
20
21
  particle.svgPathIndex = Math.floor(Math.random() * this._paths.length);
21
22
  }
22
23
  if (particle.svgSpeed === undefined) {
23
- particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? 1) / 2).length;
24
+ particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? defaultSpeed) * half).length;
24
25
  }
25
26
  if (particle.svgStep === undefined) {
26
27
  particle.svgStep = (0, engine_1.randomInRange)({ min: 0, max: this._paths[particle.svgPathIndex].length }) * pxRatio;
27
28
  }
28
29
  if (particle.svgOffset === undefined) {
29
30
  particle.svgOffset = {
30
- width: (0, engine_1.randomInRange)({ min: -this._width / 2, max: this._width / 2 }) * pxRatio,
31
- height: (0, engine_1.randomInRange)({ min: -this._width / 2, max: this._width / 2 }) * pxRatio,
31
+ width: (0, engine_1.randomInRange)({ min: -this._width * half, max: this._width * half }) * pxRatio,
32
+ height: (0, engine_1.randomInRange)({ min: -this._width * half, max: this._width * half }) * pxRatio,
32
33
  };
33
34
  }
34
35
  if (particle.svgInitialPosition === undefined) {
@@ -44,12 +45,12 @@ class SVGPathGenerator {
44
45
  }
45
46
  let path = this._paths[particle.svgPathIndex];
46
47
  if (path) {
47
- const pathLength = path.length;
48
+ const pathLength = path.length, indexOffset = 1;
48
49
  if (particle.svgStep >= pathLength) {
49
- particle.svgPathIndex = particle.svgPathIndex + 1;
50
+ particle.svgPathIndex = particle.svgPathIndex + indexOffset;
50
51
  if (particle.svgPathIndex >= this._paths.length) {
51
52
  if (this._reverse) {
52
- particle.svgPathIndex = this._paths.length - 1;
53
+ particle.svgPathIndex = this._paths.length - indexOffset;
53
54
  particle.svgDirection = 1;
54
55
  }
55
56
  else {
@@ -58,15 +59,15 @@ class SVGPathGenerator {
58
59
  }
59
60
  }
60
61
  }
61
- else if (particle.svgStep <= 0) {
62
- particle.svgPathIndex = particle.svgPathIndex - 1;
63
- if (particle.svgPathIndex < 0) {
62
+ else if (particle.svgStep <= minStep) {
63
+ particle.svgPathIndex = particle.svgPathIndex - indexOffset;
64
+ if (particle.svgPathIndex < minIndex) {
64
65
  if (this._reverse) {
65
66
  particle.svgPathIndex = 0;
66
67
  particle.svgDirection = 0;
67
68
  }
68
69
  else {
69
- particle.svgPathIndex = this._paths.length - 1;
70
+ particle.svgPathIndex = this._paths.length - indexOffset;
70
71
  path = this._paths[particle.svgPathIndex];
71
72
  particle.svgStep = path.length;
72
73
  }
@@ -77,12 +78,12 @@ class SVGPathGenerator {
77
78
  if (path) {
78
79
  const pathElement = path.element, pos = pathElement.getPointAtLength(particle.svgStep), canvasSize = particle.container.canvas.size, offset = (0, engine_1.getPosition)(this._offset, canvasSize), scale = this._scale * pxRatio;
79
80
  particle.position.x =
80
- (pos.x - this._size.width / 2) * scale +
81
+ (pos.x - this._size.width * half) * scale +
81
82
  particle.svgInitialPosition.x +
82
83
  offset.x +
83
84
  particle.svgOffset.width;
84
85
  particle.position.y =
85
- (pos.y - this._size.height / 2) * scale +
86
+ (pos.y - this._size.height * half) * scale +
86
87
  particle.svgInitialPosition.y +
87
88
  offset.y +
88
89
  particle.svgOffset.height;
@@ -92,16 +93,16 @@ class SVGPathGenerator {
92
93
  init(container) {
93
94
  const options = container.actualOptions.particles.move.path.options, position = options.position ?? this._offset;
94
95
  this._reverse = options.reverse ?? this._reverse;
95
- this._scale = options.scale ?? 1;
96
+ this._scale = options.scale ?? minScale;
96
97
  this._offset.x = position.x;
97
98
  this._offset.y = position.y;
98
99
  this._offset.mode = position.mode;
99
- this._width = options.width ?? 0;
100
+ this._width = options.width ?? minWidth;
100
101
  if (options.url && !options.path) {
101
102
  const url = options.url;
102
- (async () => {
103
+ void (async () => {
103
104
  const response = await fetch(url), data = await response.text();
104
- const parser = new DOMParser(), doc = parser.parseFromString(data, "image/svg+xml"), svg = doc.getElementsByTagName("svg")[0];
105
+ const parser = new DOMParser(), doc = parser.parseFromString(data, "image/svg+xml"), firstIndex = 0, svg = doc.getElementsByTagName("svg")[firstIndex];
105
106
  let svgPaths = svg.getElementsByTagName("path");
106
107
  if (!svgPaths.length) {
107
108
  svgPaths = doc.getElementsByTagName("path");
@@ -1,4 +1,5 @@
1
- import { Vector, getPosition, getRandom, randomInRange, } from "@tsparticles/engine";
1
+ import { Vector, getPosition, getRandom, halfRandom, randomInRange, } from "@tsparticles/engine";
2
+ const defaultSpeed = 1, half = 0.5, minStep = 0, minIndex = 0, minWidth = 0, minScale = 1;
2
3
  export class SVGPathGenerator {
3
4
  constructor() {
4
5
  this._paths = [];
@@ -11,21 +12,21 @@ export class SVGPathGenerator {
11
12
  generate(particle, delta) {
12
13
  const container = particle.container, pxRatio = container.retina.pixelRatio;
13
14
  if (particle.svgDirection === undefined) {
14
- particle.svgDirection = getRandom() > 0.5 ? 0 : 1;
15
+ particle.svgDirection = getRandom() > halfRandom ? 0 : 1;
15
16
  }
16
17
  if (particle.svgPathIndex === undefined) {
17
18
  particle.svgPathIndex = Math.floor(Math.random() * this._paths.length);
18
19
  }
19
20
  if (particle.svgSpeed === undefined) {
20
- particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? 1) / 2).length;
21
+ particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? defaultSpeed) * half).length;
21
22
  }
22
23
  if (particle.svgStep === undefined) {
23
24
  particle.svgStep = randomInRange({ min: 0, max: this._paths[particle.svgPathIndex].length }) * pxRatio;
24
25
  }
25
26
  if (particle.svgOffset === undefined) {
26
27
  particle.svgOffset = {
27
- width: randomInRange({ min: -this._width / 2, max: this._width / 2 }) * pxRatio,
28
- height: randomInRange({ min: -this._width / 2, max: this._width / 2 }) * pxRatio,
28
+ width: randomInRange({ min: -this._width * half, max: this._width * half }) * pxRatio,
29
+ height: randomInRange({ min: -this._width * half, max: this._width * half }) * pxRatio,
29
30
  };
30
31
  }
31
32
  if (particle.svgInitialPosition === undefined) {
@@ -41,12 +42,12 @@ export class SVGPathGenerator {
41
42
  }
42
43
  let path = this._paths[particle.svgPathIndex];
43
44
  if (path) {
44
- const pathLength = path.length;
45
+ const pathLength = path.length, indexOffset = 1;
45
46
  if (particle.svgStep >= pathLength) {
46
- particle.svgPathIndex = particle.svgPathIndex + 1;
47
+ particle.svgPathIndex = particle.svgPathIndex + indexOffset;
47
48
  if (particle.svgPathIndex >= this._paths.length) {
48
49
  if (this._reverse) {
49
- particle.svgPathIndex = this._paths.length - 1;
50
+ particle.svgPathIndex = this._paths.length - indexOffset;
50
51
  particle.svgDirection = 1;
51
52
  }
52
53
  else {
@@ -55,15 +56,15 @@ export class SVGPathGenerator {
55
56
  }
56
57
  }
57
58
  }
58
- else if (particle.svgStep <= 0) {
59
- particle.svgPathIndex = particle.svgPathIndex - 1;
60
- if (particle.svgPathIndex < 0) {
59
+ else if (particle.svgStep <= minStep) {
60
+ particle.svgPathIndex = particle.svgPathIndex - indexOffset;
61
+ if (particle.svgPathIndex < minIndex) {
61
62
  if (this._reverse) {
62
63
  particle.svgPathIndex = 0;
63
64
  particle.svgDirection = 0;
64
65
  }
65
66
  else {
66
- particle.svgPathIndex = this._paths.length - 1;
67
+ particle.svgPathIndex = this._paths.length - indexOffset;
67
68
  path = this._paths[particle.svgPathIndex];
68
69
  particle.svgStep = path.length;
69
70
  }
@@ -74,12 +75,12 @@ export class SVGPathGenerator {
74
75
  if (path) {
75
76
  const pathElement = path.element, pos = pathElement.getPointAtLength(particle.svgStep), canvasSize = particle.container.canvas.size, offset = getPosition(this._offset, canvasSize), scale = this._scale * pxRatio;
76
77
  particle.position.x =
77
- (pos.x - this._size.width / 2) * scale +
78
+ (pos.x - this._size.width * half) * scale +
78
79
  particle.svgInitialPosition.x +
79
80
  offset.x +
80
81
  particle.svgOffset.width;
81
82
  particle.position.y =
82
- (pos.y - this._size.height / 2) * scale +
83
+ (pos.y - this._size.height * half) * scale +
83
84
  particle.svgInitialPosition.y +
84
85
  offset.y +
85
86
  particle.svgOffset.height;
@@ -89,16 +90,16 @@ export class SVGPathGenerator {
89
90
  init(container) {
90
91
  const options = container.actualOptions.particles.move.path.options, position = options.position ?? this._offset;
91
92
  this._reverse = options.reverse ?? this._reverse;
92
- this._scale = options.scale ?? 1;
93
+ this._scale = options.scale ?? minScale;
93
94
  this._offset.x = position.x;
94
95
  this._offset.y = position.y;
95
96
  this._offset.mode = position.mode;
96
- this._width = options.width ?? 0;
97
+ this._width = options.width ?? minWidth;
97
98
  if (options.url && !options.path) {
98
99
  const url = options.url;
99
- (async () => {
100
+ void (async () => {
100
101
  const response = await fetch(url), data = await response.text();
101
- const parser = new DOMParser(), doc = parser.parseFromString(data, "image/svg+xml"), svg = doc.getElementsByTagName("svg")[0];
102
+ const parser = new DOMParser(), doc = parser.parseFromString(data, "image/svg+xml"), firstIndex = 0, svg = doc.getElementsByTagName("svg")[firstIndex];
102
103
  let svgPaths = svg.getElementsByTagName("path");
103
104
  if (!svgPaths.length) {
104
105
  svgPaths = doc.getElementsByTagName("path");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/path-svg",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "description": "tsParticles svg path",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -101,7 +101,7 @@
101
101
  "./package.json": "./package.json"
102
102
  },
103
103
  "dependencies": {
104
- "@tsparticles/engine": "^3.0.2"
104
+ "@tsparticles/engine": "^3.1.0"
105
105
  },
106
106
  "publishConfig": {
107
107
  "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/path-svg [6 Dec 2023 at 17:41]</title>
6
+ <title>@tsparticles/path-svg [13 Jan 2024 at 23:01]</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,7 +31,7 @@
31
31
  <body>
32
32
  <div id="app"></div>
33
33
  <script>
34
- window.chartData = [{"label":"tsparticles.path.svg.js","isAsset":true,"statSize":5423,"parsedSize":9335,"gzipSize":2658,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":5381,"groups":[{"id":278,"label":"index.js + 1 modules (concatenated)","path":"./dist/browser/index.js + 1 modules (concatenated)","statSize":5381,"parsedSize":9335,"gzipSize":2658,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser","statSize":5381,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/index.js","statSize":245,"parsedSize":425,"gzipSize":121,"inaccurateSizes":true},{"id":null,"label":"SVGPathGenerator.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/SVGPathGenerator.js","statSize":5136,"parsedSize":8909,"gzipSize":2536,"inaccurateSizes":true}],"parsedSize":9335,"gzipSize":2658,"inaccurateSizes":true}]}],"parsedSize":9335,"gzipSize":2658},{"label":"engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","statSize":42,"groups":[{"id":533,"label":"engine\",\"root\":\"window\"}","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles/engine\",\"root\":\"window\"}","statSize":42}],"parsedSize":0,"gzipSize":0}],"isInitialByEntrypoint":{"tsparticles.path.svg":true}}];
34
+ window.chartData = [{"label":"tsparticles.path.svg.js","isAsset":true,"statSize":5707,"parsedSize":9627,"gzipSize":2738,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":5665,"groups":[{"id":715,"label":"index.js + 1 modules (concatenated)","path":"./dist/browser/index.js + 1 modules (concatenated)","statSize":5665,"parsedSize":9627,"gzipSize":2738,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser","statSize":5665,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/index.js","statSize":245,"parsedSize":416,"gzipSize":118,"inaccurateSizes":true},{"id":null,"label":"SVGPathGenerator.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/SVGPathGenerator.js","statSize":5420,"parsedSize":9210,"gzipSize":2619,"inaccurateSizes":true}],"parsedSize":9627,"gzipSize":2738,"inaccurateSizes":true}]}],"parsedSize":9627,"gzipSize":2738},{"label":"engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","statSize":42,"groups":[{"id":533,"label":"engine\",\"root\":\"window\"}","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles/engine\",\"root\":\"window\"}","statSize":42}],"parsedSize":0,"gzipSize":0}],"isInitialByEntrypoint":{"tsparticles.path.svg":true}}];
35
35
  window.entrypoints = ["tsparticles.path.svg","tsparticles.path.svg.min"];
36
36
  window.defaultSizes = "parsed";
37
37
  </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
- * v3.0.2
7
+ * v3.1.0
8
8
  */
9
9
  (function webpackUniversalModuleDefinition(root, factory) {
10
10
  if(typeof exports === 'object' && typeof module === 'object')
@@ -99,6 +99,12 @@ __webpack_require__.d(__webpack_exports__, {
99
99
  var engine_root_window_ = __webpack_require__(533);
100
100
  ;// CONCATENATED MODULE: ./dist/browser/SVGPathGenerator.js
101
101
 
102
+ const defaultSpeed = 1,
103
+ half = 0.5,
104
+ minStep = 0,
105
+ minIndex = 0,
106
+ minWidth = 0,
107
+ minScale = 1;
102
108
  class SVGPathGenerator {
103
109
  constructor() {
104
110
  this._paths = [];
@@ -119,13 +125,13 @@ class SVGPathGenerator {
119
125
  const container = particle.container,
120
126
  pxRatio = container.retina.pixelRatio;
121
127
  if (particle.svgDirection === undefined) {
122
- particle.svgDirection = (0,engine_root_window_.getRandom)() > 0.5 ? 0 : 1;
128
+ particle.svgDirection = (0,engine_root_window_.getRandom)() > engine_root_window_.halfRandom ? 0 : 1;
123
129
  }
124
130
  if (particle.svgPathIndex === undefined) {
125
131
  particle.svgPathIndex = Math.floor(Math.random() * this._paths.length);
126
132
  }
127
133
  if (particle.svgSpeed === undefined) {
128
- particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? 1) / 2).length;
134
+ particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? defaultSpeed) * half).length;
129
135
  }
130
136
  if (particle.svgStep === undefined) {
131
137
  particle.svgStep = (0,engine_root_window_.randomInRange)({
@@ -136,12 +142,12 @@ class SVGPathGenerator {
136
142
  if (particle.svgOffset === undefined) {
137
143
  particle.svgOffset = {
138
144
  width: (0,engine_root_window_.randomInRange)({
139
- min: -this._width / 2,
140
- max: this._width / 2
145
+ min: -this._width * half,
146
+ max: this._width * half
141
147
  }) * pxRatio,
142
148
  height: (0,engine_root_window_.randomInRange)({
143
- min: -this._width / 2,
144
- max: this._width / 2
149
+ min: -this._width * half,
150
+ max: this._width * half
145
151
  }) * pxRatio
146
152
  };
147
153
  }
@@ -159,26 +165,27 @@ class SVGPathGenerator {
159
165
  }
160
166
  let path = this._paths[particle.svgPathIndex];
161
167
  if (path) {
162
- const pathLength = path.length;
168
+ const pathLength = path.length,
169
+ indexOffset = 1;
163
170
  if (particle.svgStep >= pathLength) {
164
- particle.svgPathIndex = particle.svgPathIndex + 1;
171
+ particle.svgPathIndex = particle.svgPathIndex + indexOffset;
165
172
  if (particle.svgPathIndex >= this._paths.length) {
166
173
  if (this._reverse) {
167
- particle.svgPathIndex = this._paths.length - 1;
174
+ particle.svgPathIndex = this._paths.length - indexOffset;
168
175
  particle.svgDirection = 1;
169
176
  } else {
170
177
  particle.svgPathIndex = 0;
171
178
  particle.svgStep = 0;
172
179
  }
173
180
  }
174
- } else if (particle.svgStep <= 0) {
175
- particle.svgPathIndex = particle.svgPathIndex - 1;
176
- if (particle.svgPathIndex < 0) {
181
+ } else if (particle.svgStep <= minStep) {
182
+ particle.svgPathIndex = particle.svgPathIndex - indexOffset;
183
+ if (particle.svgPathIndex < minIndex) {
177
184
  if (this._reverse) {
178
185
  particle.svgPathIndex = 0;
179
186
  particle.svgDirection = 0;
180
187
  } else {
181
- particle.svgPathIndex = this._paths.length - 1;
188
+ particle.svgPathIndex = this._paths.length - indexOffset;
182
189
  path = this._paths[particle.svgPathIndex];
183
190
  particle.svgStep = path.length;
184
191
  }
@@ -192,8 +199,8 @@ class SVGPathGenerator {
192
199
  canvasSize = particle.container.canvas.size,
193
200
  offset = (0,engine_root_window_.getPosition)(this._offset, canvasSize),
194
201
  scale = this._scale * pxRatio;
195
- particle.position.x = (pos.x - this._size.width / 2) * scale + particle.svgInitialPosition.x + offset.x + particle.svgOffset.width;
196
- particle.position.y = (pos.y - this._size.height / 2) * scale + particle.svgInitialPosition.y + offset.y + particle.svgOffset.height;
202
+ particle.position.x = (pos.x - this._size.width * half) * scale + particle.svgInitialPosition.x + offset.x + particle.svgOffset.width;
203
+ particle.position.y = (pos.y - this._size.height * half) * scale + particle.svgInitialPosition.y + offset.y + particle.svgOffset.height;
197
204
  }
198
205
  return engine_root_window_.Vector.origin;
199
206
  }
@@ -201,19 +208,20 @@ class SVGPathGenerator {
201
208
  const options = container.actualOptions.particles.move.path.options,
202
209
  position = options.position ?? this._offset;
203
210
  this._reverse = options.reverse ?? this._reverse;
204
- this._scale = options.scale ?? 1;
211
+ this._scale = options.scale ?? minScale;
205
212
  this._offset.x = position.x;
206
213
  this._offset.y = position.y;
207
214
  this._offset.mode = position.mode;
208
- this._width = options.width ?? 0;
215
+ this._width = options.width ?? minWidth;
209
216
  if (options.url && !options.path) {
210
217
  const url = options.url;
211
- (async () => {
218
+ void (async () => {
212
219
  const response = await fetch(url),
213
220
  data = await response.text();
214
221
  const parser = new DOMParser(),
215
222
  doc = parser.parseFromString(data, "image/svg+xml"),
216
- svg = doc.getElementsByTagName("svg")[0];
223
+ firstIndex = 0,
224
+ svg = doc.getElementsByTagName("svg")[firstIndex];
217
225
  let svgPaths = svg.getElementsByTagName("path");
218
226
  if (!svgPaths.length) {
219
227
  svgPaths = doc.getElementsByTagName("path");
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see tsparticles.path.svg.min.js.LICENSE.txt */
2
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],e);else{var s="object"==typeof exports?e(require("@tsparticles/engine")):e(t.window);for(var i in s)("object"==typeof exports?exports:t)[i]=s[i]}}(this,(t=>(()=>{"use strict";var e={533:e=>{e.exports=t}},s={};function i(t){var n=s[t];if(void 0!==n)return n.exports;var h=s[t]={exports:{}};return e[t](h,h.exports,i),h.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{i.r(n),i.d(n,{loadSVGPath:()=>h,svgPathName:()=>s});var t=i(533);class e{constructor(){this._paths=[],this._reverse=!1,this._size={width:0,height:0},this._scale=1,this._offset={x:0,y:0,mode:"percent"},this._width=0}generate(e,s){const i=e.container.retina.pixelRatio;void 0===e.svgDirection&&(e.svgDirection=(0,t.getRandom)()>.5?0:1),void 0===e.svgPathIndex&&(e.svgPathIndex=Math.floor(Math.random()*this._paths.length)),void 0===e.svgSpeed&&(e.svgSpeed=e.velocity.mult((e.retina.moveSpeed??1)/2).length),void 0===e.svgStep&&(e.svgStep=(0,t.randomInRange)({min:0,max:this._paths[e.svgPathIndex].length})*i),void 0===e.svgOffset&&(e.svgOffset={width:(0,t.randomInRange)({min:-this._width/2,max:this._width/2})*i,height:(0,t.randomInRange)({min:-this._width/2,max:this._width/2})*i}),void 0===e.svgInitialPosition&&(e.svgInitialPosition={...e.position}),e.velocity.x=0,e.velocity.y=0,0===e.svgDirection?e.svgStep+=e.svgSpeed*s.factor:e.svgStep-=e.svgSpeed*s.factor;let n=this._paths[e.svgPathIndex];if(n){const t=n.length;e.svgStep>=t?(e.svgPathIndex=e.svgPathIndex+1,e.svgPathIndex>=this._paths.length&&(this._reverse?(e.svgPathIndex=this._paths.length-1,e.svgDirection=1):(e.svgPathIndex=0,e.svgStep=0))):e.svgStep<=0&&(e.svgPathIndex=e.svgPathIndex-1,e.svgPathIndex<0&&(this._reverse?(e.svgPathIndex=0,e.svgDirection=0):(e.svgPathIndex=this._paths.length-1,n=this._paths[e.svgPathIndex],e.svgStep=n.length))),n=this._paths[e.svgPathIndex]}if(n){const s=n.element.getPointAtLength(e.svgStep),h=e.container.canvas.size,o=(0,t.getPosition)(this._offset,h),a=this._scale*i;e.position.x=(s.x-this._size.width/2)*a+e.svgInitialPosition.x+o.x+e.svgOffset.width,e.position.y=(s.y-this._size.height/2)*a+e.svgInitialPosition.y+o.y+e.svgOffset.height}return t.Vector.origin}init(t){const e=t.actualOptions.particles.move.path.options,s=e.position??this._offset;if(this._reverse=e.reverse??this._reverse,this._scale=e.scale??1,this._offset.x=s.x,this._offset.y=s.y,this._offset.mode=s.mode,this._width=e.width??0,e.url&&!e.path){const t=e.url;(async()=>{const e=await fetch(t),s=await e.text(),i=(new DOMParser).parseFromString(s,"image/svg+xml"),n=i.getElementsByTagName("svg")[0];let h=n.getElementsByTagName("path");h.length||(h=i.getElementsByTagName("path")),this._paths=[];for(let t=0;t<h.length;t++){const e=h.item(t);e&&this._paths.push({element:e,length:e.getTotalLength()})}this._size.height=parseFloat(n.getAttribute("height")??"0"),this._size.width=parseFloat(n.getAttribute("width")??"0")})()}else if(e.path){const t=e.path;this._paths=[];for(const e of t.data){const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttribute("d",e),this._paths.push({element:t,length:t.getTotalLength()})}this._size.height=t.size.height,this._size.width=t.size.width}}reset(){}update(){}}const s="svgPathGenerator";async function h(t,i=!0){await t.addPathGenerator(s,new e,i)}})(),n})()));
2
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],e);else{var s="object"==typeof exports?e(require("@tsparticles/engine")):e(t.window);for(var i in s)("object"==typeof exports?exports:t)[i]=s[i]}}(this,(t=>(()=>{"use strict";var e={533:e=>{e.exports=t}},s={};function i(t){var n=s[t];if(void 0!==n)return n.exports;var h=s[t]={exports:{}};return e[t](h,h.exports,i),h.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{i.r(n),i.d(n,{loadSVGPath:()=>o,svgPathName:()=>h});var t=i(533);const e=.5;class s{constructor(){this._paths=[],this._reverse=!1,this._size={width:0,height:0},this._scale=1,this._offset={x:0,y:0,mode:"percent"},this._width=0}generate(s,i){const n=s.container.retina.pixelRatio;void 0===s.svgDirection&&(s.svgDirection=(0,t.getRandom)()>t.halfRandom?0:1),void 0===s.svgPathIndex&&(s.svgPathIndex=Math.floor(Math.random()*this._paths.length)),void 0===s.svgSpeed&&(s.svgSpeed=s.velocity.mult((s.retina.moveSpeed??1)*e).length),void 0===s.svgStep&&(s.svgStep=(0,t.randomInRange)({min:0,max:this._paths[s.svgPathIndex].length})*n),void 0===s.svgOffset&&(s.svgOffset={width:(0,t.randomInRange)({min:-this._width*e,max:this._width*e})*n,height:(0,t.randomInRange)({min:-this._width*e,max:this._width*e})*n}),void 0===s.svgInitialPosition&&(s.svgInitialPosition={...s.position}),s.velocity.x=0,s.velocity.y=0,0===s.svgDirection?s.svgStep+=s.svgSpeed*i.factor:s.svgStep-=s.svgSpeed*i.factor;let h=this._paths[s.svgPathIndex];if(h){const t=h.length,e=1;s.svgStep>=t?(s.svgPathIndex=s.svgPathIndex+e,s.svgPathIndex>=this._paths.length&&(this._reverse?(s.svgPathIndex=this._paths.length-e,s.svgDirection=1):(s.svgPathIndex=0,s.svgStep=0))):s.svgStep<=0&&(s.svgPathIndex=s.svgPathIndex-e,s.svgPathIndex<0&&(this._reverse?(s.svgPathIndex=0,s.svgDirection=0):(s.svgPathIndex=this._paths.length-e,h=this._paths[s.svgPathIndex],s.svgStep=h.length))),h=this._paths[s.svgPathIndex]}if(h){const i=h.element.getPointAtLength(s.svgStep),o=s.container.canvas.size,a=(0,t.getPosition)(this._offset,o),r=this._scale*n;s.position.x=(i.x-this._size.width*e)*r+s.svgInitialPosition.x+a.x+s.svgOffset.width,s.position.y=(i.y-this._size.height*e)*r+s.svgInitialPosition.y+a.y+s.svgOffset.height}return t.Vector.origin}init(t){const e=t.actualOptions.particles.move.path.options,s=e.position??this._offset;if(this._reverse=e.reverse??this._reverse,this._scale=e.scale??1,this._offset.x=s.x,this._offset.y=s.y,this._offset.mode=s.mode,this._width=e.width??0,e.url&&!e.path){const t=e.url;(async()=>{const e=await fetch(t),s=await e.text(),i=(new DOMParser).parseFromString(s,"image/svg+xml"),n=i.getElementsByTagName("svg")[0];let h=n.getElementsByTagName("path");h.length||(h=i.getElementsByTagName("path")),this._paths=[];for(let t=0;t<h.length;t++){const e=h.item(t);e&&this._paths.push({element:e,length:e.getTotalLength()})}this._size.height=parseFloat(n.getAttribute("height")??"0"),this._size.width=parseFloat(n.getAttribute("width")??"0")})()}else if(e.path){const t=e.path;this._paths=[];for(const e of t.data){const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttribute("d",e),this._paths.push({element:t,length:t.getTotalLength()})}this._size.height=t.size.height,this._size.width=t.size.width}}reset(){}update(){}}const h="svgPathGenerator";async function o(t,e=!0){await t.addPathGenerator(h,new s,e)}})(),n})()));
@@ -1 +1 @@
1
- /*! tsParticles SVG Path v3.0.2 by Matteo Bruni */
1
+ /*! tsParticles SVG Path v3.1.0 by Matteo Bruni */
@@ -1,9 +1,4 @@
1
1
  import { type Container, type ICoordinates, type IDelta, type IDimension, type IMovePathGenerator, type Particle, Vector } from "@tsparticles/engine";
2
- declare global {
3
- interface Window {
4
- [key: string]: unknown;
5
- }
6
- }
7
2
  declare const enum SVGPathDirection {
8
3
  normal = 0,
9
4
  reverse = 1
@@ -11,6 +11,7 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.SVGPathGenerator = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
+ const defaultSpeed = 1, half = 0.5, minStep = 0, minIndex = 0, minWidth = 0, minScale = 1;
14
15
  class SVGPathGenerator {
15
16
  constructor() {
16
17
  this._paths = [];
@@ -23,21 +24,21 @@
23
24
  generate(particle, delta) {
24
25
  const container = particle.container, pxRatio = container.retina.pixelRatio;
25
26
  if (particle.svgDirection === undefined) {
26
- particle.svgDirection = (0, engine_1.getRandom)() > 0.5 ? 0 : 1;
27
+ particle.svgDirection = (0, engine_1.getRandom)() > engine_1.halfRandom ? 0 : 1;
27
28
  }
28
29
  if (particle.svgPathIndex === undefined) {
29
30
  particle.svgPathIndex = Math.floor(Math.random() * this._paths.length);
30
31
  }
31
32
  if (particle.svgSpeed === undefined) {
32
- particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? 1) / 2).length;
33
+ particle.svgSpeed = particle.velocity.mult((particle.retina.moveSpeed ?? defaultSpeed) * half).length;
33
34
  }
34
35
  if (particle.svgStep === undefined) {
35
36
  particle.svgStep = (0, engine_1.randomInRange)({ min: 0, max: this._paths[particle.svgPathIndex].length }) * pxRatio;
36
37
  }
37
38
  if (particle.svgOffset === undefined) {
38
39
  particle.svgOffset = {
39
- width: (0, engine_1.randomInRange)({ min: -this._width / 2, max: this._width / 2 }) * pxRatio,
40
- height: (0, engine_1.randomInRange)({ min: -this._width / 2, max: this._width / 2 }) * pxRatio,
40
+ width: (0, engine_1.randomInRange)({ min: -this._width * half, max: this._width * half }) * pxRatio,
41
+ height: (0, engine_1.randomInRange)({ min: -this._width * half, max: this._width * half }) * pxRatio,
41
42
  };
42
43
  }
43
44
  if (particle.svgInitialPosition === undefined) {
@@ -53,12 +54,12 @@
53
54
  }
54
55
  let path = this._paths[particle.svgPathIndex];
55
56
  if (path) {
56
- const pathLength = path.length;
57
+ const pathLength = path.length, indexOffset = 1;
57
58
  if (particle.svgStep >= pathLength) {
58
- particle.svgPathIndex = particle.svgPathIndex + 1;
59
+ particle.svgPathIndex = particle.svgPathIndex + indexOffset;
59
60
  if (particle.svgPathIndex >= this._paths.length) {
60
61
  if (this._reverse) {
61
- particle.svgPathIndex = this._paths.length - 1;
62
+ particle.svgPathIndex = this._paths.length - indexOffset;
62
63
  particle.svgDirection = 1;
63
64
  }
64
65
  else {
@@ -67,15 +68,15 @@
67
68
  }
68
69
  }
69
70
  }
70
- else if (particle.svgStep <= 0) {
71
- particle.svgPathIndex = particle.svgPathIndex - 1;
72
- if (particle.svgPathIndex < 0) {
71
+ else if (particle.svgStep <= minStep) {
72
+ particle.svgPathIndex = particle.svgPathIndex - indexOffset;
73
+ if (particle.svgPathIndex < minIndex) {
73
74
  if (this._reverse) {
74
75
  particle.svgPathIndex = 0;
75
76
  particle.svgDirection = 0;
76
77
  }
77
78
  else {
78
- particle.svgPathIndex = this._paths.length - 1;
79
+ particle.svgPathIndex = this._paths.length - indexOffset;
79
80
  path = this._paths[particle.svgPathIndex];
80
81
  particle.svgStep = path.length;
81
82
  }
@@ -86,12 +87,12 @@
86
87
  if (path) {
87
88
  const pathElement = path.element, pos = pathElement.getPointAtLength(particle.svgStep), canvasSize = particle.container.canvas.size, offset = (0, engine_1.getPosition)(this._offset, canvasSize), scale = this._scale * pxRatio;
88
89
  particle.position.x =
89
- (pos.x - this._size.width / 2) * scale +
90
+ (pos.x - this._size.width * half) * scale +
90
91
  particle.svgInitialPosition.x +
91
92
  offset.x +
92
93
  particle.svgOffset.width;
93
94
  particle.position.y =
94
- (pos.y - this._size.height / 2) * scale +
95
+ (pos.y - this._size.height * half) * scale +
95
96
  particle.svgInitialPosition.y +
96
97
  offset.y +
97
98
  particle.svgOffset.height;
@@ -101,16 +102,16 @@
101
102
  init(container) {
102
103
  const options = container.actualOptions.particles.move.path.options, position = options.position ?? this._offset;
103
104
  this._reverse = options.reverse ?? this._reverse;
104
- this._scale = options.scale ?? 1;
105
+ this._scale = options.scale ?? minScale;
105
106
  this._offset.x = position.x;
106
107
  this._offset.y = position.y;
107
108
  this._offset.mode = position.mode;
108
- this._width = options.width ?? 0;
109
+ this._width = options.width ?? minWidth;
109
110
  if (options.url && !options.path) {
110
111
  const url = options.url;
111
- (async () => {
112
+ void (async () => {
112
113
  const response = await fetch(url), data = await response.text();
113
- const parser = new DOMParser(), doc = parser.parseFromString(data, "image/svg+xml"), svg = doc.getElementsByTagName("svg")[0];
114
+ const parser = new DOMParser(), doc = parser.parseFromString(data, "image/svg+xml"), firstIndex = 0, svg = doc.getElementsByTagName("svg")[firstIndex];
114
115
  let svgPaths = svg.getElementsByTagName("path");
115
116
  if (!svgPaths.length) {
116
117
  svgPaths = doc.getElementsByTagName("path");