@tsparticles/plugin-polygon-mask 3.2.2 → 3.4.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.
Files changed (56) hide show
  1. package/browser/Enums/PolygonMaskInlineArrangement.js +8 -1
  2. package/browser/Enums/PolygonMaskMoveType.js +5 -1
  3. package/browser/Enums/PolygonMaskType.js +7 -1
  4. package/browser/Options/Classes/PolygonMask.js +3 -2
  5. package/browser/Options/Classes/PolygonMaskInline.js +2 -1
  6. package/browser/Options/Classes/PolygonMaskMove.js +2 -1
  7. package/browser/PolygonMaskInstance.js +33 -34
  8. package/browser/PolygonMaskPlugin.js +5 -4
  9. package/browser/index.js +1 -1
  10. package/cjs/Enums/PolygonMaskInlineArrangement.js +9 -0
  11. package/cjs/Enums/PolygonMaskMoveType.js +6 -0
  12. package/cjs/Enums/PolygonMaskType.js +8 -0
  13. package/cjs/Options/Classes/PolygonMask.js +3 -2
  14. package/cjs/Options/Classes/PolygonMaskInline.js +2 -1
  15. package/cjs/Options/Classes/PolygonMaskMove.js +2 -1
  16. package/cjs/PolygonMaskInstance.js +37 -61
  17. package/cjs/PolygonMaskPlugin.js +5 -27
  18. package/cjs/index.js +2 -14
  19. package/cjs/pathseg.js +1 -0
  20. package/esm/Enums/PolygonMaskInlineArrangement.js +8 -1
  21. package/esm/Enums/PolygonMaskMoveType.js +5 -1
  22. package/esm/Enums/PolygonMaskType.js +7 -1
  23. package/esm/Options/Classes/PolygonMask.js +3 -2
  24. package/esm/Options/Classes/PolygonMaskInline.js +2 -1
  25. package/esm/Options/Classes/PolygonMaskMove.js +2 -1
  26. package/esm/PolygonMaskInstance.js +33 -34
  27. package/esm/PolygonMaskPlugin.js +5 -4
  28. package/esm/index.js +1 -1
  29. package/package.json +2 -2
  30. package/report.html +1 -1
  31. package/tsparticles.plugin.polygon-mask.js +122 -200
  32. package/tsparticles.plugin.polygon-mask.min.js +1 -1
  33. package/tsparticles.plugin.polygon-mask.min.js.LICENSE.txt +1 -1
  34. package/types/Enums/PolygonMaskInlineArrangement.d.ts +1 -1
  35. package/types/Enums/PolygonMaskMoveType.d.ts +1 -1
  36. package/types/Enums/PolygonMaskType.d.ts +1 -1
  37. package/types/PolygonMaskInstance.d.ts +2 -2
  38. package/types/PolygonMaskPlugin.d.ts +1 -1
  39. package/umd/Enums/PolygonMaskInlineArrangement.js +9 -0
  40. package/umd/Enums/PolygonMaskMoveType.js +6 -0
  41. package/umd/Enums/PolygonMaskType.js +8 -0
  42. package/umd/Options/Classes/PolygonMask.js +4 -3
  43. package/umd/Options/Classes/PolygonMaskInline.js +3 -2
  44. package/umd/Options/Classes/PolygonMaskMove.js +3 -2
  45. package/umd/PolygonMaskInstance.js +38 -63
  46. package/umd/PolygonMaskPlugin.js +6 -29
  47. package/umd/index.js +3 -16
  48. package/719.min.js +0 -2
  49. package/719.min.js.LICENSE.txt +0 -1
  50. package/787.min.js +0 -2
  51. package/787.min.js.LICENSE.txt +0 -1
  52. package/856.min.js +0 -2
  53. package/856.min.js.LICENSE.txt +0 -1
  54. package/dist_browser_PolygonMaskInstance_js.js +0 -30
  55. package/dist_browser_PolygonMaskPlugin_js.js +0 -90
  56. package/dist_browser_utils_js.js +0 -30
@@ -1 +1,8 @@
1
- export {};
1
+ export var PolygonMaskInlineArrangement;
2
+ (function (PolygonMaskInlineArrangement) {
3
+ PolygonMaskInlineArrangement["equidistant"] = "equidistant";
4
+ PolygonMaskInlineArrangement["onePerPoint"] = "one-per-point";
5
+ PolygonMaskInlineArrangement["perPoint"] = "per-point";
6
+ PolygonMaskInlineArrangement["randomLength"] = "random-length";
7
+ PolygonMaskInlineArrangement["randomPoint"] = "random-point";
8
+ })(PolygonMaskInlineArrangement || (PolygonMaskInlineArrangement = {}));
@@ -1 +1,5 @@
1
- export {};
1
+ export var PolygonMaskMoveType;
2
+ (function (PolygonMaskMoveType) {
3
+ PolygonMaskMoveType["path"] = "path";
4
+ PolygonMaskMoveType["radius"] = "radius";
5
+ })(PolygonMaskMoveType || (PolygonMaskMoveType = {}));
@@ -1 +1,7 @@
1
- export {};
1
+ export var PolygonMaskType;
2
+ (function (PolygonMaskType) {
3
+ PolygonMaskType["inline"] = "inline";
4
+ PolygonMaskType["inside"] = "inside";
5
+ PolygonMaskType["outside"] = "outside";
6
+ PolygonMaskType["none"] = "none";
7
+ })(PolygonMaskType || (PolygonMaskType = {}));
@@ -3,6 +3,7 @@ import { PolygonMaskDraw } from "./PolygonMaskDraw.js";
3
3
  import { PolygonMaskInline } from "./PolygonMaskInline.js";
4
4
  import { PolygonMaskLocalSvg } from "./PolygonMaskLocalSvg.js";
5
5
  import { PolygonMaskMove } from "./PolygonMaskMove.js";
6
+ import { PolygonMaskType } from "../../Enums/PolygonMaskType.js";
6
7
  export class PolygonMask {
7
8
  constructor() {
8
9
  this.draw = new PolygonMaskDraw();
@@ -10,7 +11,7 @@ export class PolygonMask {
10
11
  this.inline = new PolygonMaskInline();
11
12
  this.move = new PolygonMaskMove();
12
13
  this.scale = 1;
13
- this.type = "none";
14
+ this.type = PolygonMaskType.none;
14
15
  }
15
16
  load(data) {
16
17
  if (!data) {
@@ -29,7 +30,7 @@ export class PolygonMask {
29
30
  this.enable = data.enable;
30
31
  }
31
32
  else {
32
- this.enable = this.type !== "none";
33
+ this.enable = this.type !== PolygonMaskType.none;
33
34
  }
34
35
  if (data.url !== undefined) {
35
36
  this.url = data.url;
@@ -1,6 +1,7 @@
1
+ import { PolygonMaskInlineArrangement, } from "../../Enums/PolygonMaskInlineArrangement.js";
1
2
  export class PolygonMaskInline {
2
3
  constructor() {
3
- this.arrangement = "one-per-point";
4
+ this.arrangement = PolygonMaskInlineArrangement.onePerPoint;
4
5
  }
5
6
  load(data) {
6
7
  if (!data) {
@@ -1,7 +1,8 @@
1
+ import { PolygonMaskMoveType } from "../../Enums/PolygonMaskMoveType.js";
1
2
  export class PolygonMaskMove {
2
3
  constructor() {
3
4
  this.radius = 10;
4
- this.type = "path";
5
+ this.type = PolygonMaskMoveType.path;
5
6
  }
6
7
  load(data) {
7
8
  if (!data) {
@@ -1,13 +1,16 @@
1
- import { deepExtend, errorPrefix, getDistance, getDistances, getRandom, isArray, isString, itemFromArray, percentDenominator, } from "@tsparticles/engine";
1
+ import { OutModeDirection, deepExtend, errorPrefix, getDistance, getDistances, getRandom, isArray, isString, itemFromArray, percentDenominator, } from "@tsparticles/engine";
2
+ import { calcClosestPointOnSegment, drawPolygonMask, drawPolygonMaskPath, parsePaths, segmentBounce } from "./utils.js";
3
+ import { PolygonMaskInlineArrangement } from "./Enums/PolygonMaskInlineArrangement.js";
4
+ import { PolygonMaskType } from "./Enums/PolygonMaskType.js";
2
5
  const noPolygonDataLoaded = `${errorPrefix} No polygon data loaded.`, noPolygonFound = `${errorPrefix} No polygon found, you need to specify SVG url in config.`, origin = {
3
6
  x: 0,
4
7
  y: 0,
5
8
  }, half = 0.5, double = 2;
6
9
  export class PolygonMaskInstance {
7
10
  constructor(container, engine) {
8
- this._checkInsidePolygon = (position) => {
11
+ this._checkInsidePolygon = position => {
9
12
  const container = this._container, options = container.actualOptions.polygon;
10
- if (!options?.enable || options.type === "none" || options.type === "inline") {
13
+ if (!options?.enable || options.type === PolygonMaskType.none || options.type === PolygonMaskType.inline) {
11
14
  return true;
12
15
  }
13
16
  if (!this.raw) {
@@ -21,11 +24,11 @@ export class PolygonMaskInstance {
21
24
  inside = !inside;
22
25
  }
23
26
  }
24
- if (options.type === "inside") {
27
+ if (options.type === PolygonMaskType.inside) {
25
28
  return inside;
26
29
  }
27
30
  else {
28
- return options.type === "outside" ? !inside : false;
31
+ return options.type === PolygonMaskType.outside ? !inside : false;
29
32
  }
30
33
  };
31
34
  this._createPath2D = () => {
@@ -75,7 +78,7 @@ export class PolygonMaskInstance {
75
78
  if (!req.ok) {
76
79
  throw new Error(`${errorPrefix} occurred during polygon mask download`);
77
80
  }
78
- return await this._parseSvgPath(await req.text(), force);
81
+ return this._parseSvgPath(await req.text(), force);
79
82
  };
80
83
  this._drawPoints = () => {
81
84
  if (!this.raw) {
@@ -88,7 +91,7 @@ export class PolygonMaskInstance {
88
91
  });
89
92
  }
90
93
  };
91
- this._getEquidistantPointByIndex = (index) => {
94
+ this._getEquidistantPointByIndex = index => {
92
95
  const container = this._container, options = container.actualOptions, polygonMaskOptions = options.polygon;
93
96
  if (!polygonMaskOptions) {
94
97
  return;
@@ -114,7 +117,7 @@ export class PolygonMaskInstance {
114
117
  y: (point?.y ?? origin.y) * scale + (this.offset?.y ?? origin.y),
115
118
  };
116
119
  };
117
- this._getPointByIndex = (index) => {
120
+ this._getPointByIndex = index => {
118
121
  if (!this.raw?.length) {
119
122
  throw new Error(noPolygonDataLoaded);
120
123
  }
@@ -167,14 +170,14 @@ export class PolygonMaskInstance {
167
170
  const namespaces = 'xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"';
168
171
  svg = `<svg ${namespaces} width="${data.size.width}" height="${data.size.height}">${path}</svg>`;
169
172
  }
170
- this.raw = await this._parseSvgPath(svg, force);
173
+ this.raw = this._parseSvgPath(svg, force);
171
174
  }
172
175
  this._createPath2D();
173
176
  this._engine.dispatchEvent("polygonMaskLoaded", {
174
177
  container: this._container,
175
178
  });
176
179
  };
177
- this._parseSvgPath = async (xml, force) => {
180
+ this._parseSvgPath = (xml, force) => {
178
181
  const forceDownload = force ?? false;
179
182
  if (this.paths !== undefined && !forceDownload) {
180
183
  return this.raw;
@@ -209,24 +212,22 @@ export class PolygonMaskInstance {
209
212
  x: (canvasSize.width * position.x) / percentDenominator - this.dimension.width * half,
210
213
  y: (canvasSize.height * position.y) / percentDenominator - this.dimension.height * half,
211
214
  };
212
- const { parsePaths } = await import("./utils.js");
213
215
  return parsePaths(this.paths, scale, this.offset);
214
216
  };
215
- this._polygonBounce = async (particle, delta, direction) => {
217
+ this._polygonBounce = (particle, delta, direction) => {
216
218
  const options = this._container.actualOptions.polygon;
217
- if (!this.raw || !options?.enable || direction !== "top") {
219
+ if (!this.raw || !options?.enable || direction !== OutModeDirection.top) {
218
220
  return false;
219
221
  }
220
- if (options.type === "inside" || options.type === "outside") {
222
+ if (options.type === PolygonMaskType.inside || options.type === PolygonMaskType.outside) {
221
223
  let closest, dx, dy;
222
224
  const pos = particle.getPosition(), radius = particle.getRadius(), offset = 1;
223
225
  for (let i = 0, j = this.raw.length - offset; i < this.raw.length; j = i++) {
224
- const pi = this.raw[i], pj = this.raw[j], { calcClosestPointOnSegment } = await import("./utils.js");
226
+ const pi = this.raw[i], pj = this.raw[j];
225
227
  closest = calcClosestPointOnSegment(pi, pj, pos);
226
228
  const dist = getDistances(pos, closest);
227
229
  [dx, dy] = [dist.dx, dist.dy];
228
230
  if (dist.distance < radius) {
229
- const { segmentBounce } = await import("./utils.js");
230
231
  segmentBounce(pi, pj, particle.velocity);
231
232
  return true;
232
233
  }
@@ -245,7 +246,7 @@ export class PolygonMaskInstance {
245
246
  return true;
246
247
  }
247
248
  }
248
- else if (options.type === "inline" && particle.initialPosition) {
249
+ else if (options.type === PolygonMaskType.inline && particle.initialPosition) {
249
250
  const dist = getDistance(particle.initialPosition, particle.getPosition()), { velocity } = particle;
250
251
  if (dist > this._moveRadius) {
251
252
  velocity.x = velocity.y * half - velocity.x;
@@ -261,19 +262,19 @@ export class PolygonMaskInstance {
261
262
  return;
262
263
  }
263
264
  let position;
264
- if (options.type === "inline") {
265
+ if (options.type === PolygonMaskType.inline) {
265
266
  switch (options.inline.arrangement) {
266
- case "random-point":
267
+ case PolygonMaskInlineArrangement.randomPoint:
267
268
  position = this._getRandomPoint();
268
269
  break;
269
- case "random-length":
270
+ case PolygonMaskInlineArrangement.randomLength:
270
271
  position = this._getRandomPointByLength();
271
272
  break;
272
- case "equidistant":
273
+ case PolygonMaskInlineArrangement.equidistant:
273
274
  position = this._getEquidistantPointByIndex(container.particles.count);
274
275
  break;
275
- case "one-per-point":
276
- case "per-point":
276
+ case PolygonMaskInlineArrangement.onePerPoint:
277
+ case PolygonMaskInlineArrangement.perPoint:
277
278
  default:
278
279
  position = this._getPointByIndex(container.particles.count);
279
280
  }
@@ -304,11 +305,11 @@ export class PolygonMaskInstance {
304
305
  clickPositionValid(position) {
305
306
  const options = this._container.actualOptions.polygon;
306
307
  return (!!options?.enable &&
307
- options.type !== "none" &&
308
- options.type !== "inline" &&
308
+ options.type !== PolygonMaskType.none &&
309
+ options.type !== PolygonMaskType.inline &&
309
310
  this._checkInsidePolygon(position));
310
311
  }
311
- async draw(context) {
312
+ draw(context) {
312
313
  if (!this.paths?.length) {
313
314
  return;
314
315
  }
@@ -327,11 +328,9 @@ export class PolygonMaskInstance {
327
328
  continue;
328
329
  }
329
330
  if (path2d && this.offset) {
330
- const { drawPolygonMaskPath } = await import("./utils.js");
331
331
  drawPolygonMaskPath(context, path2d, polygonDraw.stroke, this.offset);
332
332
  }
333
333
  else if (rawData) {
334
- const { drawPolygonMask } = await import("./utils.js");
335
334
  drawPolygonMask(context, rawData, polygonDraw.stroke);
336
335
  }
337
336
  }
@@ -347,8 +346,8 @@ export class PolygonMaskInstance {
347
346
  await this._initRawData();
348
347
  }
349
348
  }
350
- async particleBounce(particle, delta, direction) {
351
- return await this._polygonBounce(particle, delta, direction);
349
+ particleBounce(particle, delta, direction) {
350
+ return this._polygonBounce(particle, delta, direction);
352
351
  }
353
352
  particlePosition(position) {
354
353
  const options = this._container.actualOptions.polygon, defaultLength = 0;
@@ -360,9 +359,9 @@ export class PolygonMaskInstance {
360
359
  particlesInitialization() {
361
360
  const options = this._container.actualOptions.polygon;
362
361
  if (options?.enable &&
363
- options.type === "inline" &&
364
- (options.inline.arrangement === "one-per-point" ||
365
- options.inline.arrangement === "per-point")) {
362
+ options.type === PolygonMaskType.inline &&
363
+ (options.inline.arrangement === PolygonMaskInlineArrangement.onePerPoint ||
364
+ options.inline.arrangement === PolygonMaskInlineArrangement.perPoint)) {
366
365
  this._drawPoints();
367
366
  return true;
368
367
  }
@@ -370,7 +369,7 @@ export class PolygonMaskInstance {
370
369
  }
371
370
  resize() {
372
371
  const container = this._container, options = container.actualOptions.polygon;
373
- if (!(options?.enable && options.type !== "none")) {
372
+ if (!(options?.enable && options.type !== PolygonMaskType.none)) {
374
373
  return;
375
374
  }
376
375
  if (this.redrawTimeout) {
@@ -1,12 +1,13 @@
1
1
  import { PolygonMask } from "./Options/Classes/PolygonMask.js";
2
+ import { PolygonMaskInstance } from "./PolygonMaskInstance.js";
3
+ import { PolygonMaskType } from "./Enums/PolygonMaskType.js";
2
4
  export class PolygonMaskPlugin {
3
5
  constructor(engine) {
4
6
  this.id = "polygonMask";
5
7
  this._engine = engine;
6
8
  }
7
- async getPlugin(container) {
8
- const { PolygonMaskInstance } = await import("./PolygonMaskInstance.js");
9
- return new PolygonMaskInstance(container, this._engine);
9
+ getPlugin(container) {
10
+ return Promise.resolve(new PolygonMaskInstance(container, this._engine));
10
11
  }
11
12
  loadOptions(options, source) {
12
13
  if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
@@ -20,6 +21,6 @@ export class PolygonMaskPlugin {
20
21
  }
21
22
  needsPlugin(options) {
22
23
  return (options?.polygon?.enable ??
23
- (options?.polygon?.type !== undefined && options.polygon.type !== "none"));
24
+ (options?.polygon?.type !== undefined && options.polygon.type !== PolygonMaskType.none));
24
25
  }
25
26
  }
package/browser/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "./pathseg.js";
2
+ import { PolygonMaskPlugin } from "./PolygonMaskPlugin.js";
2
3
  export async function loadPolygonMaskPlugin(engine, refresh = true) {
3
- const { PolygonMaskPlugin } = await import("./PolygonMaskPlugin.js");
4
4
  await engine.addPlugin(new PolygonMaskPlugin(engine), refresh);
5
5
  }
6
6
  export * from "./Enums/PolygonMaskInlineArrangement.js";
@@ -1,2 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolygonMaskInlineArrangement = void 0;
4
+ var PolygonMaskInlineArrangement;
5
+ (function (PolygonMaskInlineArrangement) {
6
+ PolygonMaskInlineArrangement["equidistant"] = "equidistant";
7
+ PolygonMaskInlineArrangement["onePerPoint"] = "one-per-point";
8
+ PolygonMaskInlineArrangement["perPoint"] = "per-point";
9
+ PolygonMaskInlineArrangement["randomLength"] = "random-length";
10
+ PolygonMaskInlineArrangement["randomPoint"] = "random-point";
11
+ })(PolygonMaskInlineArrangement || (exports.PolygonMaskInlineArrangement = PolygonMaskInlineArrangement = {}));
@@ -1,2 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolygonMaskMoveType = void 0;
4
+ var PolygonMaskMoveType;
5
+ (function (PolygonMaskMoveType) {
6
+ PolygonMaskMoveType["path"] = "path";
7
+ PolygonMaskMoveType["radius"] = "radius";
8
+ })(PolygonMaskMoveType || (exports.PolygonMaskMoveType = PolygonMaskMoveType = {}));
@@ -1,2 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolygonMaskType = void 0;
4
+ var PolygonMaskType;
5
+ (function (PolygonMaskType) {
6
+ PolygonMaskType["inline"] = "inline";
7
+ PolygonMaskType["inside"] = "inside";
8
+ PolygonMaskType["outside"] = "outside";
9
+ PolygonMaskType["none"] = "none";
10
+ })(PolygonMaskType || (exports.PolygonMaskType = PolygonMaskType = {}));
@@ -6,6 +6,7 @@ const PolygonMaskDraw_js_1 = require("./PolygonMaskDraw.js");
6
6
  const PolygonMaskInline_js_1 = require("./PolygonMaskInline.js");
7
7
  const PolygonMaskLocalSvg_js_1 = require("./PolygonMaskLocalSvg.js");
8
8
  const PolygonMaskMove_js_1 = require("./PolygonMaskMove.js");
9
+ const PolygonMaskType_js_1 = require("../../Enums/PolygonMaskType.js");
9
10
  class PolygonMask {
10
11
  constructor() {
11
12
  this.draw = new PolygonMaskDraw_js_1.PolygonMaskDraw();
@@ -13,7 +14,7 @@ class PolygonMask {
13
14
  this.inline = new PolygonMaskInline_js_1.PolygonMaskInline();
14
15
  this.move = new PolygonMaskMove_js_1.PolygonMaskMove();
15
16
  this.scale = 1;
16
- this.type = "none";
17
+ this.type = PolygonMaskType_js_1.PolygonMaskType.none;
17
18
  }
18
19
  load(data) {
19
20
  if (!data) {
@@ -32,7 +33,7 @@ class PolygonMask {
32
33
  this.enable = data.enable;
33
34
  }
34
35
  else {
35
- this.enable = this.type !== "none";
36
+ this.enable = this.type !== PolygonMaskType_js_1.PolygonMaskType.none;
36
37
  }
37
38
  if (data.url !== undefined) {
38
39
  this.url = data.url;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PolygonMaskInline = void 0;
4
+ const PolygonMaskInlineArrangement_js_1 = require("../../Enums/PolygonMaskInlineArrangement.js");
4
5
  class PolygonMaskInline {
5
6
  constructor() {
6
- this.arrangement = "one-per-point";
7
+ this.arrangement = PolygonMaskInlineArrangement_js_1.PolygonMaskInlineArrangement.onePerPoint;
7
8
  }
8
9
  load(data) {
9
10
  if (!data) {
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PolygonMaskMove = void 0;
4
+ const PolygonMaskMoveType_js_1 = require("../../Enums/PolygonMaskMoveType.js");
4
5
  class PolygonMaskMove {
5
6
  constructor() {
6
7
  this.radius = 10;
7
- this.type = "path";
8
+ this.type = PolygonMaskMoveType_js_1.PolygonMaskMoveType.path;
8
9
  }
9
10
  load(data) {
10
11
  if (!data) {
@@ -1,39 +1,19 @@
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
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.PolygonMaskInstance = void 0;
27
4
  const engine_1 = require("@tsparticles/engine");
5
+ const utils_js_1 = require("./utils.js");
6
+ const PolygonMaskInlineArrangement_js_1 = require("./Enums/PolygonMaskInlineArrangement.js");
7
+ const PolygonMaskType_js_1 = require("./Enums/PolygonMaskType.js");
28
8
  const noPolygonDataLoaded = `${engine_1.errorPrefix} No polygon data loaded.`, noPolygonFound = `${engine_1.errorPrefix} No polygon found, you need to specify SVG url in config.`, origin = {
29
9
  x: 0,
30
10
  y: 0,
31
11
  }, half = 0.5, double = 2;
32
12
  class PolygonMaskInstance {
33
13
  constructor(container, engine) {
34
- this._checkInsidePolygon = (position) => {
14
+ this._checkInsidePolygon = position => {
35
15
  const container = this._container, options = container.actualOptions.polygon;
36
- if (!options?.enable || options.type === "none" || options.type === "inline") {
16
+ if (!options?.enable || options.type === PolygonMaskType_js_1.PolygonMaskType.none || options.type === PolygonMaskType_js_1.PolygonMaskType.inline) {
37
17
  return true;
38
18
  }
39
19
  if (!this.raw) {
@@ -47,11 +27,11 @@ class PolygonMaskInstance {
47
27
  inside = !inside;
48
28
  }
49
29
  }
50
- if (options.type === "inside") {
30
+ if (options.type === PolygonMaskType_js_1.PolygonMaskType.inside) {
51
31
  return inside;
52
32
  }
53
33
  else {
54
- return options.type === "outside" ? !inside : false;
34
+ return options.type === PolygonMaskType_js_1.PolygonMaskType.outside ? !inside : false;
55
35
  }
56
36
  };
57
37
  this._createPath2D = () => {
@@ -101,7 +81,7 @@ class PolygonMaskInstance {
101
81
  if (!req.ok) {
102
82
  throw new Error(`${engine_1.errorPrefix} occurred during polygon mask download`);
103
83
  }
104
- return await this._parseSvgPath(await req.text(), force);
84
+ return this._parseSvgPath(await req.text(), force);
105
85
  };
106
86
  this._drawPoints = () => {
107
87
  if (!this.raw) {
@@ -114,7 +94,7 @@ class PolygonMaskInstance {
114
94
  });
115
95
  }
116
96
  };
117
- this._getEquidistantPointByIndex = (index) => {
97
+ this._getEquidistantPointByIndex = index => {
118
98
  const container = this._container, options = container.actualOptions, polygonMaskOptions = options.polygon;
119
99
  if (!polygonMaskOptions) {
120
100
  return;
@@ -140,7 +120,7 @@ class PolygonMaskInstance {
140
120
  y: (point?.y ?? origin.y) * scale + (this.offset?.y ?? origin.y),
141
121
  };
142
122
  };
143
- this._getPointByIndex = (index) => {
123
+ this._getPointByIndex = index => {
144
124
  if (!this.raw?.length) {
145
125
  throw new Error(noPolygonDataLoaded);
146
126
  }
@@ -193,14 +173,14 @@ class PolygonMaskInstance {
193
173
  const namespaces = 'xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"';
194
174
  svg = `<svg ${namespaces} width="${data.size.width}" height="${data.size.height}">${path}</svg>`;
195
175
  }
196
- this.raw = await this._parseSvgPath(svg, force);
176
+ this.raw = this._parseSvgPath(svg, force);
197
177
  }
198
178
  this._createPath2D();
199
179
  this._engine.dispatchEvent("polygonMaskLoaded", {
200
180
  container: this._container,
201
181
  });
202
182
  };
203
- this._parseSvgPath = async (xml, force) => {
183
+ this._parseSvgPath = (xml, force) => {
204
184
  const forceDownload = force ?? false;
205
185
  if (this.paths !== undefined && !forceDownload) {
206
186
  return this.raw;
@@ -235,25 +215,23 @@ class PolygonMaskInstance {
235
215
  x: (canvasSize.width * position.x) / engine_1.percentDenominator - this.dimension.width * half,
236
216
  y: (canvasSize.height * position.y) / engine_1.percentDenominator - this.dimension.height * half,
237
217
  };
238
- const { parsePaths } = await Promise.resolve().then(() => __importStar(require("./utils.js")));
239
- return parsePaths(this.paths, scale, this.offset);
218
+ return (0, utils_js_1.parsePaths)(this.paths, scale, this.offset);
240
219
  };
241
- this._polygonBounce = async (particle, delta, direction) => {
220
+ this._polygonBounce = (particle, delta, direction) => {
242
221
  const options = this._container.actualOptions.polygon;
243
- if (!this.raw || !options?.enable || direction !== "top") {
222
+ if (!this.raw || !options?.enable || direction !== engine_1.OutModeDirection.top) {
244
223
  return false;
245
224
  }
246
- if (options.type === "inside" || options.type === "outside") {
225
+ if (options.type === PolygonMaskType_js_1.PolygonMaskType.inside || options.type === PolygonMaskType_js_1.PolygonMaskType.outside) {
247
226
  let closest, dx, dy;
248
227
  const pos = particle.getPosition(), radius = particle.getRadius(), offset = 1;
249
228
  for (let i = 0, j = this.raw.length - offset; i < this.raw.length; j = i++) {
250
- const pi = this.raw[i], pj = this.raw[j], { calcClosestPointOnSegment } = await Promise.resolve().then(() => __importStar(require("./utils.js")));
251
- closest = calcClosestPointOnSegment(pi, pj, pos);
229
+ const pi = this.raw[i], pj = this.raw[j];
230
+ closest = (0, utils_js_1.calcClosestPointOnSegment)(pi, pj, pos);
252
231
  const dist = (0, engine_1.getDistances)(pos, closest);
253
232
  [dx, dy] = [dist.dx, dist.dy];
254
233
  if (dist.distance < radius) {
255
- const { segmentBounce } = await Promise.resolve().then(() => __importStar(require("./utils.js")));
256
- segmentBounce(pi, pj, particle.velocity);
234
+ (0, utils_js_1.segmentBounce)(pi, pj, particle.velocity);
257
235
  return true;
258
236
  }
259
237
  }
@@ -271,7 +249,7 @@ class PolygonMaskInstance {
271
249
  return true;
272
250
  }
273
251
  }
274
- else if (options.type === "inline" && particle.initialPosition) {
252
+ else if (options.type === PolygonMaskType_js_1.PolygonMaskType.inline && particle.initialPosition) {
275
253
  const dist = (0, engine_1.getDistance)(particle.initialPosition, particle.getPosition()), { velocity } = particle;
276
254
  if (dist > this._moveRadius) {
277
255
  velocity.x = velocity.y * half - velocity.x;
@@ -287,19 +265,19 @@ class PolygonMaskInstance {
287
265
  return;
288
266
  }
289
267
  let position;
290
- if (options.type === "inline") {
268
+ if (options.type === PolygonMaskType_js_1.PolygonMaskType.inline) {
291
269
  switch (options.inline.arrangement) {
292
- case "random-point":
270
+ case PolygonMaskInlineArrangement_js_1.PolygonMaskInlineArrangement.randomPoint:
293
271
  position = this._getRandomPoint();
294
272
  break;
295
- case "random-length":
273
+ case PolygonMaskInlineArrangement_js_1.PolygonMaskInlineArrangement.randomLength:
296
274
  position = this._getRandomPointByLength();
297
275
  break;
298
- case "equidistant":
276
+ case PolygonMaskInlineArrangement_js_1.PolygonMaskInlineArrangement.equidistant:
299
277
  position = this._getEquidistantPointByIndex(container.particles.count);
300
278
  break;
301
- case "one-per-point":
302
- case "per-point":
279
+ case PolygonMaskInlineArrangement_js_1.PolygonMaskInlineArrangement.onePerPoint:
280
+ case PolygonMaskInlineArrangement_js_1.PolygonMaskInlineArrangement.perPoint:
303
281
  default:
304
282
  position = this._getPointByIndex(container.particles.count);
305
283
  }
@@ -330,11 +308,11 @@ class PolygonMaskInstance {
330
308
  clickPositionValid(position) {
331
309
  const options = this._container.actualOptions.polygon;
332
310
  return (!!options?.enable &&
333
- options.type !== "none" &&
334
- options.type !== "inline" &&
311
+ options.type !== PolygonMaskType_js_1.PolygonMaskType.none &&
312
+ options.type !== PolygonMaskType_js_1.PolygonMaskType.inline &&
335
313
  this._checkInsidePolygon(position));
336
314
  }
337
- async draw(context) {
315
+ draw(context) {
338
316
  if (!this.paths?.length) {
339
317
  return;
340
318
  }
@@ -353,12 +331,10 @@ class PolygonMaskInstance {
353
331
  continue;
354
332
  }
355
333
  if (path2d && this.offset) {
356
- const { drawPolygonMaskPath } = await Promise.resolve().then(() => __importStar(require("./utils.js")));
357
- drawPolygonMaskPath(context, path2d, polygonDraw.stroke, this.offset);
334
+ (0, utils_js_1.drawPolygonMaskPath)(context, path2d, polygonDraw.stroke, this.offset);
358
335
  }
359
336
  else if (rawData) {
360
- const { drawPolygonMask } = await Promise.resolve().then(() => __importStar(require("./utils.js")));
361
- drawPolygonMask(context, rawData, polygonDraw.stroke);
337
+ (0, utils_js_1.drawPolygonMask)(context, rawData, polygonDraw.stroke);
362
338
  }
363
339
  }
364
340
  }
@@ -373,8 +349,8 @@ class PolygonMaskInstance {
373
349
  await this._initRawData();
374
350
  }
375
351
  }
376
- async particleBounce(particle, delta, direction) {
377
- return await this._polygonBounce(particle, delta, direction);
352
+ particleBounce(particle, delta, direction) {
353
+ return this._polygonBounce(particle, delta, direction);
378
354
  }
379
355
  particlePosition(position) {
380
356
  const options = this._container.actualOptions.polygon, defaultLength = 0;
@@ -386,9 +362,9 @@ class PolygonMaskInstance {
386
362
  particlesInitialization() {
387
363
  const options = this._container.actualOptions.polygon;
388
364
  if (options?.enable &&
389
- options.type === "inline" &&
390
- (options.inline.arrangement === "one-per-point" ||
391
- options.inline.arrangement === "per-point")) {
365
+ options.type === PolygonMaskType_js_1.PolygonMaskType.inline &&
366
+ (options.inline.arrangement === PolygonMaskInlineArrangement_js_1.PolygonMaskInlineArrangement.onePerPoint ||
367
+ options.inline.arrangement === PolygonMaskInlineArrangement_js_1.PolygonMaskInlineArrangement.perPoint)) {
392
368
  this._drawPoints();
393
369
  return true;
394
370
  }
@@ -396,7 +372,7 @@ class PolygonMaskInstance {
396
372
  }
397
373
  resize() {
398
374
  const container = this._container, options = container.actualOptions.polygon;
399
- if (!(options?.enable && options.type !== "none")) {
375
+ if (!(options?.enable && options.type !== PolygonMaskType_js_1.PolygonMaskType.none)) {
400
376
  return;
401
377
  }
402
378
  if (this.redrawTimeout) {