@tsparticles/plugin-polygon-mask 3.0.0-alpha.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 (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/browser/Enums/PolygonMaskInlineArrangement.js +1 -0
  4. package/browser/Enums/PolygonMaskMoveType.js +1 -0
  5. package/browser/Enums/PolygonMaskType.js +1 -0
  6. package/browser/Interfaces/ISvgPath.js +1 -0
  7. package/browser/Options/Classes/PolygonMask.js +56 -0
  8. package/browser/Options/Classes/PolygonMaskDraw.js +34 -0
  9. package/browser/Options/Classes/PolygonMaskDrawStroke.js +24 -0
  10. package/browser/Options/Classes/PolygonMaskInline.js +13 -0
  11. package/browser/Options/Classes/PolygonMaskLocalSvg.js +25 -0
  12. package/browser/Options/Classes/PolygonMaskMove.js +17 -0
  13. package/browser/Options/Interfaces/IPolygonMask.js +1 -0
  14. package/browser/Options/Interfaces/IPolygonMaskDraw.js +1 -0
  15. package/browser/Options/Interfaces/IPolygonMaskDrawStroke.js +1 -0
  16. package/browser/Options/Interfaces/IPolygonMaskInline.js +1 -0
  17. package/browser/Options/Interfaces/IPolygonMaskLocalSvg.js +1 -0
  18. package/browser/Options/Interfaces/IPolygonMaskMove.js +1 -0
  19. package/browser/PolygonMaskInstance.js +388 -0
  20. package/browser/index.js +33 -0
  21. package/browser/pathseg.js +1496 -0
  22. package/browser/types.js +1 -0
  23. package/browser/utils.js +108 -0
  24. package/cjs/Enums/PolygonMaskInlineArrangement.js +2 -0
  25. package/cjs/Enums/PolygonMaskMoveType.js +2 -0
  26. package/cjs/Enums/PolygonMaskType.js +2 -0
  27. package/cjs/Interfaces/ISvgPath.js +2 -0
  28. package/cjs/Options/Classes/PolygonMask.js +60 -0
  29. package/cjs/Options/Classes/PolygonMaskDraw.js +38 -0
  30. package/cjs/Options/Classes/PolygonMaskDrawStroke.js +28 -0
  31. package/cjs/Options/Classes/PolygonMaskInline.js +17 -0
  32. package/cjs/Options/Classes/PolygonMaskLocalSvg.js +29 -0
  33. package/cjs/Options/Classes/PolygonMaskMove.js +21 -0
  34. package/cjs/Options/Interfaces/IPolygonMask.js +2 -0
  35. package/cjs/Options/Interfaces/IPolygonMaskDraw.js +2 -0
  36. package/cjs/Options/Interfaces/IPolygonMaskDrawStroke.js +2 -0
  37. package/cjs/Options/Interfaces/IPolygonMaskInline.js +2 -0
  38. package/cjs/Options/Interfaces/IPolygonMaskLocalSvg.js +2 -0
  39. package/cjs/Options/Interfaces/IPolygonMaskMove.js +2 -0
  40. package/cjs/PolygonMaskInstance.js +407 -0
  41. package/cjs/index.js +62 -0
  42. package/cjs/pathseg.js +1496 -0
  43. package/cjs/types.js +2 -0
  44. package/cjs/utils.js +116 -0
  45. package/esm/Enums/PolygonMaskInlineArrangement.js +1 -0
  46. package/esm/Enums/PolygonMaskMoveType.js +1 -0
  47. package/esm/Enums/PolygonMaskType.js +1 -0
  48. package/esm/Interfaces/ISvgPath.js +1 -0
  49. package/esm/Options/Classes/PolygonMask.js +56 -0
  50. package/esm/Options/Classes/PolygonMaskDraw.js +34 -0
  51. package/esm/Options/Classes/PolygonMaskDrawStroke.js +24 -0
  52. package/esm/Options/Classes/PolygonMaskInline.js +13 -0
  53. package/esm/Options/Classes/PolygonMaskLocalSvg.js +25 -0
  54. package/esm/Options/Classes/PolygonMaskMove.js +17 -0
  55. package/esm/Options/Interfaces/IPolygonMask.js +1 -0
  56. package/esm/Options/Interfaces/IPolygonMaskDraw.js +1 -0
  57. package/esm/Options/Interfaces/IPolygonMaskDrawStroke.js +1 -0
  58. package/esm/Options/Interfaces/IPolygonMaskInline.js +1 -0
  59. package/esm/Options/Interfaces/IPolygonMaskLocalSvg.js +1 -0
  60. package/esm/Options/Interfaces/IPolygonMaskMove.js +1 -0
  61. package/esm/PolygonMaskInstance.js +388 -0
  62. package/esm/index.js +33 -0
  63. package/esm/pathseg.js +1496 -0
  64. package/esm/types.js +1 -0
  65. package/esm/utils.js +108 -0
  66. package/package.json +81 -0
  67. package/report.html +39 -0
  68. package/tsparticles.plugin.polygon-mask.js +2276 -0
  69. package/tsparticles.plugin.polygon-mask.min.js +2 -0
  70. package/tsparticles.plugin.polygon-mask.min.js.LICENSE.txt +8 -0
  71. package/types/Enums/PolygonMaskInlineArrangement.d.ts +8 -0
  72. package/types/Enums/PolygonMaskMoveType.d.ts +4 -0
  73. package/types/Enums/PolygonMaskType.d.ts +6 -0
  74. package/types/Interfaces/ISvgPath.d.ts +6 -0
  75. package/types/Options/Classes/PolygonMask.d.ts +23 -0
  76. package/types/Options/Classes/PolygonMaskDraw.d.ts +14 -0
  77. package/types/Options/Classes/PolygonMaskDrawStroke.d.ts +10 -0
  78. package/types/Options/Classes/PolygonMaskInline.d.ts +9 -0
  79. package/types/Options/Classes/PolygonMaskLocalSvg.d.ts +8 -0
  80. package/types/Options/Classes/PolygonMaskMove.d.ts +9 -0
  81. package/types/Options/Interfaces/IPolygonMask.d.ts +17 -0
  82. package/types/Options/Interfaces/IPolygonMaskDraw.d.ts +8 -0
  83. package/types/Options/Interfaces/IPolygonMaskDrawStroke.d.ts +6 -0
  84. package/types/Options/Interfaces/IPolygonMaskInline.d.ts +4 -0
  85. package/types/Options/Interfaces/IPolygonMaskLocalSvg.d.ts +5 -0
  86. package/types/Options/Interfaces/IPolygonMaskMove.d.ts +5 -0
  87. package/types/PolygonMaskInstance.d.ts +37 -0
  88. package/types/index.d.ts +6 -0
  89. package/types/pathseg.d.ts +0 -0
  90. package/types/types.d.ts +15 -0
  91. package/types/utils.d.ts +11 -0
  92. package/umd/Enums/PolygonMaskInlineArrangement.js +12 -0
  93. package/umd/Enums/PolygonMaskMoveType.js +12 -0
  94. package/umd/Enums/PolygonMaskType.js +12 -0
  95. package/umd/Interfaces/ISvgPath.js +12 -0
  96. package/umd/Options/Classes/PolygonMask.js +70 -0
  97. package/umd/Options/Classes/PolygonMaskDraw.js +48 -0
  98. package/umd/Options/Classes/PolygonMaskDrawStroke.js +38 -0
  99. package/umd/Options/Classes/PolygonMaskInline.js +27 -0
  100. package/umd/Options/Classes/PolygonMaskLocalSvg.js +39 -0
  101. package/umd/Options/Classes/PolygonMaskMove.js +31 -0
  102. package/umd/Options/Interfaces/IPolygonMask.js +12 -0
  103. package/umd/Options/Interfaces/IPolygonMaskDraw.js +12 -0
  104. package/umd/Options/Interfaces/IPolygonMaskDrawStroke.js +12 -0
  105. package/umd/Options/Interfaces/IPolygonMaskInline.js +12 -0
  106. package/umd/Options/Interfaces/IPolygonMaskLocalSvg.js +12 -0
  107. package/umd/Options/Interfaces/IPolygonMaskMove.js +12 -0
  108. package/umd/PolygonMaskInstance.js +402 -0
  109. package/umd/index.js +61 -0
  110. package/umd/pathseg.js +1496 -0
  111. package/umd/types.js +12 -0
  112. package/umd/utils.js +126 -0
package/umd/types.js ADDED
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
package/umd/utils.js ADDED
@@ -0,0 +1,126 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.segmentBounce = exports.calcClosestPtOnSegment = exports.parsePaths = exports.drawPolygonMaskPath = exports.drawPolygonMask = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ function drawPolygonMask(context, rawData, stroke) {
15
+ const color = (0, engine_1.rangeColorToRgb)(stroke.color);
16
+ if (!color) {
17
+ return;
18
+ }
19
+ context.beginPath();
20
+ context.moveTo(rawData[0].x, rawData[0].y);
21
+ for (const item of rawData) {
22
+ context.lineTo(item.x, item.y);
23
+ }
24
+ context.closePath();
25
+ context.strokeStyle = (0, engine_1.getStyleFromRgb)(color);
26
+ context.lineWidth = stroke.width;
27
+ context.stroke();
28
+ }
29
+ exports.drawPolygonMask = drawPolygonMask;
30
+ function drawPolygonMaskPath(context, path, stroke, position) {
31
+ context.setTransform(1, 0, 0, 1, position.x, position.y);
32
+ const color = (0, engine_1.rangeColorToRgb)(stroke.color);
33
+ if (!color) {
34
+ return;
35
+ }
36
+ context.strokeStyle = (0, engine_1.getStyleFromRgb)(color, stroke.opacity);
37
+ context.lineWidth = stroke.width;
38
+ context.stroke(path);
39
+ context.setTransform(1, 0, 0, 1, 0, 0);
40
+ }
41
+ exports.drawPolygonMaskPath = drawPolygonMaskPath;
42
+ function parsePaths(paths, scale, offset) {
43
+ var _a;
44
+ const res = [];
45
+ for (const path of paths) {
46
+ const segments = path.element.pathSegList, len = (_a = segments === null || segments === void 0 ? void 0 : segments.numberOfItems) !== null && _a !== void 0 ? _a : 0, p = {
47
+ x: 0,
48
+ y: 0,
49
+ };
50
+ for (let i = 0; i < len; i++) {
51
+ const segment = segments === null || segments === void 0 ? void 0 : segments.getItem(i);
52
+ const svgPathSeg = window.SVGPathSeg;
53
+ switch (segment === null || segment === void 0 ? void 0 : segment.pathSegType) {
54
+ case svgPathSeg.PATHSEG_MOVETO_ABS:
55
+ case svgPathSeg.PATHSEG_LINETO_ABS:
56
+ case svgPathSeg.PATHSEG_CURVETO_CUBIC_ABS:
57
+ case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:
58
+ case svgPathSeg.PATHSEG_ARC_ABS:
59
+ case svgPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:
60
+ case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: {
61
+ const absSeg = segment;
62
+ p.x = absSeg.x;
63
+ p.y = absSeg.y;
64
+ break;
65
+ }
66
+ case svgPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:
67
+ p.x = segment.x;
68
+ break;
69
+ case svgPathSeg.PATHSEG_LINETO_VERTICAL_ABS:
70
+ p.y = segment.y;
71
+ break;
72
+ case svgPathSeg.PATHSEG_LINETO_REL:
73
+ case svgPathSeg.PATHSEG_MOVETO_REL:
74
+ case svgPathSeg.PATHSEG_CURVETO_CUBIC_REL:
75
+ case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:
76
+ case svgPathSeg.PATHSEG_ARC_REL:
77
+ case svgPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:
78
+ case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: {
79
+ const relSeg = segment;
80
+ p.x += relSeg.x;
81
+ p.y += relSeg.y;
82
+ break;
83
+ }
84
+ case svgPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:
85
+ p.x += segment.x;
86
+ break;
87
+ case svgPathSeg.PATHSEG_LINETO_VERTICAL_REL:
88
+ p.y += segment.y;
89
+ break;
90
+ case svgPathSeg.PATHSEG_UNKNOWN:
91
+ case svgPathSeg.PATHSEG_CLOSEPATH:
92
+ continue;
93
+ }
94
+ res.push({
95
+ x: p.x * scale + offset.x,
96
+ y: p.y * scale + offset.y,
97
+ });
98
+ }
99
+ }
100
+ return res;
101
+ }
102
+ exports.parsePaths = parsePaths;
103
+ function calcClosestPtOnSegment(s1, s2, pos) {
104
+ 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 ** 2 + dy2 ** 2), res = {
105
+ x: s1.x + dx2 * t,
106
+ y: s1.y + dy2 * t,
107
+ isOnSegment: t >= 0 && t <= 1,
108
+ };
109
+ if (t < 0) {
110
+ res.x = s1.x;
111
+ res.y = s1.y;
112
+ }
113
+ else if (t > 1) {
114
+ res.x = s2.x;
115
+ res.y = s2.y;
116
+ }
117
+ return res;
118
+ }
119
+ exports.calcClosestPtOnSegment = calcClosestPtOnSegment;
120
+ function segmentBounce(start, stop, velocity) {
121
+ 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 = 2 * (velocity.x * wallNormal.x + velocity.y * wallNormal.y);
122
+ wallNormal.multTo(d);
123
+ velocity.subFrom(wallNormal);
124
+ }
125
+ exports.segmentBounce = segmentBounce;
126
+ });