@tsparticles/plugin-canvas-mask 3.0.0-alpha.1 → 3.0.0-beta.1

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 (46) hide show
  1. package/README.md +15 -11
  2. package/browser/CanvasMaskInstance.js +2 -2
  3. package/browser/Options/Classes/CanvasMask.js +6 -7
  4. package/browser/Options/Classes/CanvasMaskPixels.js +3 -2
  5. package/browser/Options/Classes/TextMask.js +2 -2
  6. package/browser/index.js +8 -10
  7. package/browser/package.json +1 -0
  8. package/browser/utils.js +20 -20
  9. package/cjs/CanvasMaskInstance.js +34 -45
  10. package/cjs/Options/Classes/CanvasMask.js +10 -11
  11. package/cjs/Options/Classes/CanvasMaskPixels.js +3 -2
  12. package/cjs/Options/Classes/TextMask.js +4 -4
  13. package/cjs/index.js +10 -23
  14. package/cjs/package.json +1 -0
  15. package/cjs/utils.js +19 -19
  16. package/esm/CanvasMaskInstance.js +2 -2
  17. package/esm/Options/Classes/CanvasMask.js +6 -7
  18. package/esm/Options/Classes/CanvasMaskPixels.js +3 -2
  19. package/esm/Options/Classes/TextMask.js +2 -2
  20. package/esm/index.js +8 -10
  21. package/esm/package.json +1 -0
  22. package/esm/utils.js +20 -20
  23. package/package.json +19 -6
  24. package/report.html +4 -4
  25. package/tsparticles.plugin.canvas-mask.js +34 -35
  26. package/tsparticles.plugin.canvas-mask.min.js +1 -1
  27. package/tsparticles.plugin.canvas-mask.min.js.LICENSE.txt +1 -8
  28. package/types/CanvasMaskInstance.d.ts +1 -1
  29. package/types/Options/Classes/CanvasMask.d.ts +5 -5
  30. package/types/Options/Classes/CanvasMaskOverride.d.ts +1 -1
  31. package/types/Options/Classes/CanvasMaskPixels.d.ts +1 -1
  32. package/types/Options/Classes/FontTextMask.d.ts +1 -1
  33. package/types/Options/Classes/ImageMask.d.ts +1 -1
  34. package/types/Options/Classes/TextMask.d.ts +3 -3
  35. package/types/Options/Classes/TextMaskLine.d.ts +1 -1
  36. package/types/Options/Interfaces/ICanvasMask.d.ts +4 -4
  37. package/types/Options/Interfaces/ITextMask.d.ts +2 -2
  38. package/types/index.d.ts +1 -1
  39. package/types/types.d.ts +2 -2
  40. package/types/utils.d.ts +3 -3
  41. package/umd/CanvasMaskInstance.js +7 -7
  42. package/umd/Options/Classes/CanvasMask.js +11 -12
  43. package/umd/Options/Classes/CanvasMaskPixels.js +4 -3
  44. package/umd/Options/Classes/TextMask.js +5 -5
  45. package/umd/index.js +11 -13
  46. package/umd/utils.js +19 -19
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { CanvasMask } from "./Options/Classes/CanvasMask";
2
- import { CanvasMaskInstance } from "./CanvasMaskInstance";
1
+ import { CanvasMask } from "./Options/Classes/CanvasMask.js";
2
+ import { CanvasMaskInstance } from "./CanvasMaskInstance.js";
3
3
  class CanvasMaskPlugin {
4
4
  constructor(engine) {
5
5
  this.id = "canvasMask";
@@ -9,21 +9,19 @@ class CanvasMaskPlugin {
9
9
  return new CanvasMaskInstance(container, this._engine);
10
10
  }
11
11
  loadOptions(options, source) {
12
- if (!this.needsPlugin(source)) {
12
+ if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
13
13
  return;
14
14
  }
15
15
  let canvasMaskOptions = options.canvasMask;
16
- if ((canvasMaskOptions === null || canvasMaskOptions === void 0 ? void 0 : canvasMaskOptions.load) === undefined) {
16
+ if (canvasMaskOptions?.load === undefined) {
17
17
  options.canvasMask = canvasMaskOptions = new CanvasMask();
18
18
  }
19
- canvasMaskOptions.load(source === null || source === void 0 ? void 0 : source.canvasMask);
19
+ canvasMaskOptions.load(source?.canvasMask);
20
20
  }
21
21
  needsPlugin(options) {
22
- var _a, _b;
23
- return (_b = (_a = options === null || options === void 0 ? void 0 : options.canvasMask) === null || _a === void 0 ? void 0 : _a.enable) !== null && _b !== void 0 ? _b : false;
22
+ return options?.canvasMask?.enable ?? false;
24
23
  }
25
24
  }
26
- export async function loadCanvasMaskPlugin(engine) {
27
- const plugin = new CanvasMaskPlugin(engine);
28
- await engine.addPlugin(plugin);
25
+ export async function loadCanvasMaskPlugin(engine, refresh = true) {
26
+ await engine.addPlugin(new CanvasMaskPlugin(engine), refresh);
29
27
  }
@@ -0,0 +1 @@
1
+ { "type": "module" }
package/esm/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getRandom } from "@tsparticles/engine";
1
+ import { errorPrefix, getRandom, isNumber, } from "@tsparticles/engine";
2
2
  export function shuffle(array) {
3
3
  for (let currentIndex = array.length - 1; currentIndex >= 0; currentIndex--) {
4
4
  const randomIndex = Math.floor(getRandom() * currentIndex);
@@ -18,25 +18,25 @@ export function addParticlesFromCanvasPixels(container, data, position, scale, o
18
18
  x: nextIndex % width,
19
19
  y: Math.floor(nextIndex / width),
20
20
  }, pixel = data.pixels[pixelPos.y][pixelPos.x], shouldCreateParticle = filter(pixel);
21
- if (shouldCreateParticle) {
22
- const pos = {
23
- x: pixelPos.x * scale + positionOffset.x,
24
- y: pixelPos.y * scale + positionOffset.y,
21
+ if (!shouldCreateParticle) {
22
+ continue;
23
+ }
24
+ const pos = {
25
+ x: pixelPos.x * scale + positionOffset.x,
26
+ y: pixelPos.y * scale + positionOffset.y,
27
+ }, pOptions = {};
28
+ if (override.color) {
29
+ pOptions.color = {
30
+ value: pixel,
31
+ };
32
+ }
33
+ if (override.opacity) {
34
+ pOptions.opacity = {
35
+ value: pixel.a,
25
36
  };
26
- const pOptions = {};
27
- if (override.color) {
28
- pOptions.color = {
29
- value: pixel,
30
- };
31
- }
32
- if (override.opacity) {
33
- pOptions.opacity = {
34
- value: pixel.a,
35
- };
36
- }
37
- container.particles.addParticle(pos, pOptions);
38
- selectedPixels++;
39
37
  }
38
+ container.particles.addParticle(pos, pOptions);
39
+ selectedPixels++;
40
40
  }
41
41
  }
42
42
  export function getCanvasImageData(ctx, size, offset, clear = true) {
@@ -77,7 +77,7 @@ export function getImageData(src, offset) {
77
77
  canvas.height = image.height;
78
78
  const context = canvas.getContext("2d");
79
79
  if (!context) {
80
- return reject(new Error("Could not get canvas context"));
80
+ return reject(new Error(`${errorPrefix} Could not get canvas context`));
81
81
  }
82
82
  context.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height);
83
83
  resolve(getCanvasImageData(context, canvas, offset));
@@ -91,7 +91,7 @@ export function getTextData(textOptions, offset) {
91
91
  if (!text || !context) {
92
92
  return;
93
93
  }
94
- const lines = text.split(linesOptions.separator), fontSize = typeof font.size === "number" ? `${font.size}px` : font.size, linesData = [];
94
+ const lines = text.split(linesOptions.separator), fontSize = isNumber(font.size) ? `${font.size}px` : font.size, linesData = [];
95
95
  let maxWidth = 0, totalHeight = 0;
96
96
  for (const line of lines) {
97
97
  context.font = `${font.style || ""} ${font.variant || ""} ${font.weight || ""} ${fontSize} ${font.family}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/plugin-canvas-mask",
3
- "version": "3.0.0-alpha.1",
3
+ "version": "3.0.0-beta.1",
4
4
  "description": "tsParticles canvas mask plugin",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -67,15 +67,28 @@
67
67
  "bugs": {
68
68
  "url": "https://github.com/matteobruni/tsparticles/issues"
69
69
  },
70
- "main": "cjs/index.js",
70
+ "sideEffects": false,
71
71
  "jsdelivr": "tsparticles.plugin.canvas-mask.min.js",
72
72
  "unpkg": "tsparticles.plugin.canvas-mask.min.js",
73
+ "browser": "browser/index.js",
74
+ "main": "cjs/index.js",
73
75
  "module": "esm/index.js",
74
76
  "types": "types/index.d.ts",
75
- "publishConfig": {
76
- "access": "public"
77
+ "exports": {
78
+ ".": {
79
+ "types": "./types/index.d.ts",
80
+ "browser": "./browser/index.js",
81
+ "import": "./esm/index.js",
82
+ "require": "./cjs/index.js",
83
+ "umd": "./umd/index.js",
84
+ "default": "./cjs/index.js"
85
+ },
86
+ "./package.json": "./package.json"
77
87
  },
78
88
  "dependencies": {
79
- "@tsparticles/engine": "^3.0.0-alpha.1"
89
+ "@tsparticles/engine": "^3.0.0-beta.1"
90
+ },
91
+ "publishConfig": {
92
+ "access": "public"
80
93
  }
81
- }
94
+ }