@tsparticles/plugin-polygon-mask 3.0.3 → 3.2.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.
- package/719.min.js +2 -0
- package/719.min.js.LICENSE.txt +1 -0
- package/787.min.js +2 -0
- package/787.min.js.LICENSE.txt +1 -0
- package/856.min.js +2 -0
- package/856.min.js.LICENSE.txt +1 -0
- package/browser/PolygonMaskInstance.js +60 -49
- package/browser/PolygonMaskPlugin.js +25 -0
- package/browser/index.js +1 -25
- package/browser/utils.js +22 -11
- package/cjs/PolygonMaskInstance.js +86 -52
- package/cjs/PolygonMaskPlugin.js +52 -0
- package/cjs/index.js +13 -25
- package/cjs/utils.js +24 -13
- package/dist_browser_PolygonMaskInstance_js.js +30 -0
- package/dist_browser_PolygonMaskPlugin_js.js +90 -0
- package/dist_browser_utils_js.js +30 -0
- package/esm/PolygonMaskInstance.js +60 -49
- package/esm/PolygonMaskPlugin.js +25 -0
- package/esm/index.js +1 -25
- package/esm/utils.js +22 -11
- package/package.json +2 -2
- package/report.html +3 -3
- package/tsparticles.plugin.polygon-mask.js +244 -2158
- package/tsparticles.plugin.polygon-mask.min.js +1 -1
- package/tsparticles.plugin.polygon-mask.min.js.LICENSE.txt +1 -1
- package/types/Options/Classes/PolygonMaskInline.d.ts +1 -2
- package/types/PolygonMaskInstance.d.ts +2 -2
- package/types/PolygonMaskPlugin.d.ts +11 -0
- package/types/utils.d.ts +1 -1
- package/umd/PolygonMaskInstance.js +88 -53
- package/umd/PolygonMaskPlugin.js +63 -0
- package/umd/index.js +15 -26
- package/umd/utils.js +24 -13
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
};
|
|
24
|
+
(function (factory) {
|
|
25
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
26
|
+
var v = factory(require, exports);
|
|
27
|
+
if (v !== undefined) module.exports = v;
|
|
28
|
+
}
|
|
29
|
+
else if (typeof define === "function" && define.amd) {
|
|
30
|
+
define(["require", "exports", "./Options/Classes/PolygonMask.js"], factory);
|
|
31
|
+
}
|
|
32
|
+
})(function (require, exports) {
|
|
33
|
+
"use strict";
|
|
34
|
+
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PolygonMaskPlugin = void 0;
|
|
37
|
+
const PolygonMask_js_1 = require("./Options/Classes/PolygonMask.js");
|
|
38
|
+
class PolygonMaskPlugin {
|
|
39
|
+
constructor(engine) {
|
|
40
|
+
this.id = "polygonMask";
|
|
41
|
+
this._engine = engine;
|
|
42
|
+
}
|
|
43
|
+
async getPlugin(container) {
|
|
44
|
+
const { PolygonMaskInstance } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./PolygonMaskInstance.js"))) : new Promise((resolve_1, reject_1) => { require(["./PolygonMaskInstance.js"], resolve_1, reject_1); }).then(__importStar));
|
|
45
|
+
return new PolygonMaskInstance(container, this._engine);
|
|
46
|
+
}
|
|
47
|
+
loadOptions(options, source) {
|
|
48
|
+
if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
let polygonOptions = options.polygon;
|
|
52
|
+
if (polygonOptions?.load === undefined) {
|
|
53
|
+
options.polygon = polygonOptions = new PolygonMask_js_1.PolygonMask();
|
|
54
|
+
}
|
|
55
|
+
polygonOptions.load(source?.polygon);
|
|
56
|
+
}
|
|
57
|
+
needsPlugin(options) {
|
|
58
|
+
return (options?.polygon?.enable ??
|
|
59
|
+
(options?.polygon?.type !== undefined && options.polygon.type !== "none"));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.PolygonMaskPlugin = PolygonMaskPlugin;
|
|
63
|
+
});
|
package/umd/index.js
CHANGED
|
@@ -9,6 +9,18 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
9
9
|
if (k2 === undefined) k2 = k;
|
|
10
10
|
o[k2] = m[k];
|
|
11
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
|
+
};
|
|
12
24
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
13
25
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
14
26
|
};
|
|
@@ -18,39 +30,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
30
|
if (v !== undefined) module.exports = v;
|
|
19
31
|
}
|
|
20
32
|
else if (typeof define === "function" && define.amd) {
|
|
21
|
-
define(["require", "exports", "./pathseg.js", "./
|
|
33
|
+
define(["require", "exports", "./pathseg.js", "./Enums/PolygonMaskInlineArrangement.js", "./Enums/PolygonMaskMoveType.js", "./Enums/PolygonMaskType.js"], factory);
|
|
22
34
|
}
|
|
23
35
|
})(function (require, exports) {
|
|
24
36
|
"use strict";
|
|
37
|
+
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
|
|
25
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
39
|
exports.loadPolygonMaskPlugin = void 0;
|
|
27
40
|
require("./pathseg.js");
|
|
28
|
-
const PolygonMask_js_1 = require("./Options/Classes/PolygonMask.js");
|
|
29
|
-
const PolygonMaskInstance_js_1 = require("./PolygonMaskInstance.js");
|
|
30
|
-
class PolygonMaskPlugin {
|
|
31
|
-
constructor(engine) {
|
|
32
|
-
this.id = "polygonMask";
|
|
33
|
-
this._engine = engine;
|
|
34
|
-
}
|
|
35
|
-
getPlugin(container) {
|
|
36
|
-
return new PolygonMaskInstance_js_1.PolygonMaskInstance(container, this._engine);
|
|
37
|
-
}
|
|
38
|
-
loadOptions(options, source) {
|
|
39
|
-
if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
let polygonOptions = options.polygon;
|
|
43
|
-
if (polygonOptions?.load === undefined) {
|
|
44
|
-
options.polygon = polygonOptions = new PolygonMask_js_1.PolygonMask();
|
|
45
|
-
}
|
|
46
|
-
polygonOptions.load(source?.polygon);
|
|
47
|
-
}
|
|
48
|
-
needsPlugin(options) {
|
|
49
|
-
return (options?.polygon?.enable ??
|
|
50
|
-
(options?.polygon?.type !== undefined && options.polygon.type !== "none"));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
41
|
async function loadPolygonMaskPlugin(engine, refresh = true) {
|
|
42
|
+
const { PolygonMaskPlugin } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./PolygonMaskPlugin.js"))) : new Promise((resolve_1, reject_1) => { require(["./PolygonMaskPlugin.js"], resolve_1, reject_1); }).then(__importStar));
|
|
54
43
|
await engine.addPlugin(new PolygonMaskPlugin(engine), refresh);
|
|
55
44
|
}
|
|
56
45
|
exports.loadPolygonMaskPlugin = loadPolygonMaskPlugin;
|
package/umd/utils.js
CHANGED
|
@@ -9,15 +9,20 @@
|
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.segmentBounce = exports.
|
|
12
|
+
exports.segmentBounce = exports.calcClosestPointOnSegment = exports.parsePaths = exports.drawPolygonMaskPath = exports.drawPolygonMask = void 0;
|
|
13
13
|
const engine_1 = require("@tsparticles/engine");
|
|
14
|
+
const squareExp = 2, inSegmentRange = {
|
|
15
|
+
min: 0,
|
|
16
|
+
max: 1,
|
|
17
|
+
}, double = 2;
|
|
14
18
|
function drawPolygonMask(context, rawData, stroke) {
|
|
15
19
|
const color = (0, engine_1.rangeColorToRgb)(stroke.color);
|
|
16
20
|
if (!color) {
|
|
17
21
|
return;
|
|
18
22
|
}
|
|
23
|
+
const firstIndex = 0, firstItem = rawData[firstIndex];
|
|
19
24
|
context.beginPath();
|
|
20
|
-
context.moveTo(
|
|
25
|
+
context.moveTo(firstItem.x, firstItem.y);
|
|
21
26
|
for (const item of rawData) {
|
|
22
27
|
context.lineTo(item.x, item.y);
|
|
23
28
|
}
|
|
@@ -28,7 +33,13 @@
|
|
|
28
33
|
}
|
|
29
34
|
exports.drawPolygonMask = drawPolygonMask;
|
|
30
35
|
function drawPolygonMaskPath(context, path, stroke, position) {
|
|
31
|
-
|
|
36
|
+
const defaultTransform = {
|
|
37
|
+
a: 1,
|
|
38
|
+
b: 0,
|
|
39
|
+
c: 0,
|
|
40
|
+
d: 1,
|
|
41
|
+
};
|
|
42
|
+
context.setTransform(defaultTransform.a, defaultTransform.b, defaultTransform.c, defaultTransform.d, position.x, position.y);
|
|
32
43
|
const color = (0, engine_1.rangeColorToRgb)(stroke.color);
|
|
33
44
|
if (!color) {
|
|
34
45
|
return;
|
|
@@ -36,13 +47,13 @@
|
|
|
36
47
|
context.strokeStyle = (0, engine_1.getStyleFromRgb)(color, stroke.opacity);
|
|
37
48
|
context.lineWidth = stroke.width;
|
|
38
49
|
context.stroke(path);
|
|
39
|
-
context.
|
|
50
|
+
context.resetTransform();
|
|
40
51
|
}
|
|
41
52
|
exports.drawPolygonMaskPath = drawPolygonMaskPath;
|
|
42
53
|
function parsePaths(paths, scale, offset) {
|
|
43
|
-
const res = [];
|
|
54
|
+
const res = [], defaultCount = 0;
|
|
44
55
|
for (const path of paths) {
|
|
45
|
-
const segments = path.element.pathSegList, len = segments?.numberOfItems ??
|
|
56
|
+
const segments = path.element.pathSegList, len = segments?.numberOfItems ?? defaultCount, p = {
|
|
46
57
|
x: 0,
|
|
47
58
|
y: 0,
|
|
48
59
|
};
|
|
@@ -98,25 +109,25 @@
|
|
|
98
109
|
return res;
|
|
99
110
|
}
|
|
100
111
|
exports.parsePaths = parsePaths;
|
|
101
|
-
function
|
|
102
|
-
const { dx: dx1, dy: dy1 } = (0, engine_1.getDistances)(pos, s1), { dx: dx2, dy: dy2 } = (0, engine_1.getDistances)(s2, s1), t = (dx1 * dx2 + dy1 * dy2) / (dx2 **
|
|
112
|
+
function calcClosestPointOnSegment(s1, s2, pos) {
|
|
113
|
+
const { dx: dx1, dy: dy1 } = (0, engine_1.getDistances)(pos, s1), { dx: dx2, dy: dy2 } = (0, engine_1.getDistances)(s2, s1), t = (dx1 * dx2 + dy1 * dy2) / (dx2 ** squareExp + dy2 ** squareExp), res = {
|
|
103
114
|
x: s1.x + dx2 * t,
|
|
104
115
|
y: s1.y + dy2 * t,
|
|
105
|
-
isOnSegment: t >=
|
|
116
|
+
isOnSegment: t >= inSegmentRange.min && t <= inSegmentRange.max,
|
|
106
117
|
};
|
|
107
|
-
if (t <
|
|
118
|
+
if (t < inSegmentRange.min) {
|
|
108
119
|
res.x = s1.x;
|
|
109
120
|
res.y = s1.y;
|
|
110
121
|
}
|
|
111
|
-
else if (t >
|
|
122
|
+
else if (t > inSegmentRange.max) {
|
|
112
123
|
res.x = s2.x;
|
|
113
124
|
res.y = s2.y;
|
|
114
125
|
}
|
|
115
126
|
return res;
|
|
116
127
|
}
|
|
117
|
-
exports.
|
|
128
|
+
exports.calcClosestPointOnSegment = calcClosestPointOnSegment;
|
|
118
129
|
function segmentBounce(start, stop, velocity) {
|
|
119
|
-
const { dx, dy } = (0, engine_1.getDistances)(start, stop), wallAngle = Math.atan2(dy, dx), wallNormal = engine_1.Vector.create(Math.sin(wallAngle), -Math.cos(wallAngle)), d =
|
|
130
|
+
const { dx, dy } = (0, engine_1.getDistances)(start, stop), wallAngle = Math.atan2(dy, dx), wallNormal = engine_1.Vector.create(Math.sin(wallAngle), -Math.cos(wallAngle)), d = double * (velocity.x * wallNormal.x + velocity.y * wallNormal.y);
|
|
120
131
|
wallNormal.multTo(d);
|
|
121
132
|
velocity.subFrom(wallNormal);
|
|
122
133
|
}
|