@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.
- package/README.md +15 -11
- package/browser/CanvasMaskInstance.js +2 -2
- package/browser/Options/Classes/CanvasMask.js +6 -7
- package/browser/Options/Classes/CanvasMaskPixels.js +3 -2
- package/browser/Options/Classes/TextMask.js +2 -2
- package/browser/index.js +8 -10
- package/browser/package.json +1 -0
- package/browser/utils.js +20 -20
- package/cjs/CanvasMaskInstance.js +34 -45
- package/cjs/Options/Classes/CanvasMask.js +10 -11
- package/cjs/Options/Classes/CanvasMaskPixels.js +3 -2
- package/cjs/Options/Classes/TextMask.js +4 -4
- package/cjs/index.js +10 -23
- package/cjs/package.json +1 -0
- package/cjs/utils.js +19 -19
- package/esm/CanvasMaskInstance.js +2 -2
- package/esm/Options/Classes/CanvasMask.js +6 -7
- package/esm/Options/Classes/CanvasMaskPixels.js +3 -2
- package/esm/Options/Classes/TextMask.js +2 -2
- package/esm/index.js +8 -10
- package/esm/package.json +1 -0
- package/esm/utils.js +20 -20
- package/package.json +19 -6
- package/report.html +4 -4
- package/tsparticles.plugin.canvas-mask.js +34 -35
- package/tsparticles.plugin.canvas-mask.min.js +1 -1
- package/tsparticles.plugin.canvas-mask.min.js.LICENSE.txt +1 -8
- package/types/CanvasMaskInstance.d.ts +1 -1
- package/types/Options/Classes/CanvasMask.d.ts +5 -5
- package/types/Options/Classes/CanvasMaskOverride.d.ts +1 -1
- package/types/Options/Classes/CanvasMaskPixels.d.ts +1 -1
- package/types/Options/Classes/FontTextMask.d.ts +1 -1
- package/types/Options/Classes/ImageMask.d.ts +1 -1
- package/types/Options/Classes/TextMask.d.ts +3 -3
- package/types/Options/Classes/TextMaskLine.d.ts +1 -1
- package/types/Options/Interfaces/ICanvasMask.d.ts +4 -4
- package/types/Options/Interfaces/ITextMask.d.ts +2 -2
- package/types/index.d.ts +1 -1
- package/types/types.d.ts +2 -2
- package/types/utils.d.ts +3 -3
- package/umd/CanvasMaskInstance.js +7 -7
- package/umd/Options/Classes/CanvasMask.js +11 -12
- package/umd/Options/Classes/CanvasMaskPixels.js +4 -3
- package/umd/Options/Classes/TextMask.js +5 -5
- package/umd/index.js +11 -13
- 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 (
|
|
16
|
+
if (canvasMaskOptions?.load === undefined) {
|
|
17
17
|
options.canvasMask = canvasMaskOptions = new CanvasMask();
|
|
18
18
|
}
|
|
19
|
-
canvasMaskOptions.load(source
|
|
19
|
+
canvasMaskOptions.load(source?.canvasMask);
|
|
20
20
|
}
|
|
21
21
|
needsPlugin(options) {
|
|
22
|
-
|
|
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
|
-
|
|
28
|
-
await engine.addPlugin(plugin);
|
|
25
|
+
export async function loadCanvasMaskPlugin(engine, refresh = true) {
|
|
26
|
+
await engine.addPlugin(new CanvasMaskPlugin(engine), refresh);
|
|
29
27
|
}
|
package/esm/package.json
ADDED
|
@@ -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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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(
|
|
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 =
|
|
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-
|
|
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
|
-
"
|
|
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
|
-
"
|
|
76
|
-
"
|
|
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-
|
|
89
|
+
"@tsparticles/engine": "^3.0.0-beta.1"
|
|
90
|
+
},
|
|
91
|
+
"publishConfig": {
|
|
92
|
+
"access": "public"
|
|
80
93
|
}
|
|
81
|
-
}
|
|
94
|
+
}
|