@tsparticles/plugin-emitters-shape-canvas 4.0.0-alpha.26 → 4.0.0-alpha.28

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/373.min.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";(this.webpackChunk_tsparticles_plugin_emitters_shape_canvas=this.webpackChunk_tsparticles_plugin_emitters_shape_canvas||[]).push([[373],{373(t,e,i){i.d(e,{EmittersCanvasShapeGenerator:()=>p});var s=i(303),a=i(526),l=i(425);class o extends a.EmitterShapeBase{filter;pixelData;scale;_container;constructor(t,e,i,a,l){super(e,i,a,l),this._container=t;const o=l.filter;let r=t=>t.a>0;if((0,s.isString)(o)){if(o in globalThis){const t=globalThis[o];(0,s.isFunction)(t)&&(r=t)}}else r=o;this.filter=r,this.scale=l.scale,this.pixelData={pixels:[],height:0,width:0}}async init(){let t,e=this.options,i=e.selector,a=e.pixels,o=e.image,r=e.element,n=e.text,h=a.offset;if(o){let e=o.src;if(!e)return;t=await (0,l.getImageData)(e,h,this._container.canvas.settings)}else if(r??i){let e=r??(i&&(0,s.safeDocument)().querySelector(i));if(!e)return;let a=e.getContext("2d",this._container.canvas.settings);if(!a)return;t=(0,l.getCanvasImageData)(a,e,h)}else{let e=(0,l.getTextData)(n,h,this.fill,this._container.canvas.settings);if((0,s.isNull)(e))return;t=e}this.pixelData=t}randomPosition(){let{height:t,width:e}=this.pixelData,i=this.pixelData,a=this.position,l=this.scale,o={x:a.x-e*l*s.half,y:a.y-t*l*s.half};for(let a=0;a<100;a++){let a=Math.floor((0,s.getRandom)()*e*t),r={x:a%e,y:Math.floor(a/e)},n=i.pixels[r.y];if(!n)continue;let h=n[r.x];if(h&&this.filter(h))return{position:{x:r.x*l+o.x,y:r.y*l+o.y},color:{...h},opacity:h.a}}return null}resize(t,e){super.resize(t,e)}}class r{offset;constructor(){this.offset=4}load(t){(0,s.isNull)(t)||void 0!==t.offset&&(this.offset=t.offset)}}class n{family;size;style;variant;weight;constructor(){this.family="Verdana",this.size=32,this.style="",this.variant="",this.weight=""}load(t){(0,s.isNull)(t)||(void 0!==t.family&&(this.family=t.family),void 0!==t.size&&(this.size=t.size),void 0!==t.style&&(this.style=t.style),void 0!==t.variant&&(this.variant=t.variant),void 0!==t.weight&&(this.weight=t.weight))}}class h{separator;spacing;constructor(){this.separator=`
2
+ `,this.spacing=0}load(t){(0,s.isNull)(t)||(void 0!==t.separator&&(this.separator=t.separator),void 0!==t.spacing&&(this.spacing=t.spacing))}}class c{color;font;lines;text;constructor(){this.color="#000000",this.font=new n,this.lines=new h,this.text=""}load(t){(0,s.isNull)(t)||(void 0!==t.color&&(this.color=t.color),this.font.load(t.font),this.lines.load(t.lines),void 0!==t.text&&(this.text=t.text))}}class f{element;filter;image;pixels;scale;selector;text;constructor(){this.filter=t=>t.a>0,this.pixels=new r,this.scale=1,this.selector="",this.text=new c}load(t){(0,s.isNull)(t)||(void 0!==t.element&&(this.element=t.element),void 0!==t.filter&&(this.filter=t.filter),this.pixels.load(t.pixels),void 0!==t.scale&&(this.scale=t.scale),void 0!==t.selector&&(this.selector=t.selector),void 0!==t.image&&(this.image=t.image),this.text.load(t.text))}}class p{generate(t,e,i,s,a){let l=new f;return l.load(a),new o(t,e,i,s,l)}}}}]);
@@ -13,7 +13,7 @@ export class EmittersCanvasShape extends EmitterShapeBase {
13
13
  const filter = options.filter, minAlpha = 0;
14
14
  let filterFunc = (pixel) => pixel.a > minAlpha;
15
15
  if (isString(filter)) {
16
- if (Object.hasOwn(globalThis, filter)) {
16
+ if (filter in globalThis) {
17
17
  const wndFilter = globalThis[filter];
18
18
  if (isFunction(wndFilter)) {
19
19
  filterFunc = wndFilter;
package/browser/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export async function loadEmittersShapeCanvas(engine) {
2
- engine.checkVersion("4.0.0-alpha.26");
2
+ engine.checkVersion("4.0.0-alpha.28");
3
3
  await engine.register(async (e) => {
4
4
  const { ensureEmittersPluginLoaded } = await import("@tsparticles/plugin-emitters");
5
5
  ensureEmittersPluginLoaded(e);
@@ -13,7 +13,7 @@ export class EmittersCanvasShape extends EmitterShapeBase {
13
13
  const filter = options.filter, minAlpha = 0;
14
14
  let filterFunc = (pixel) => pixel.a > minAlpha;
15
15
  if (isString(filter)) {
16
- if (Object.hasOwn(globalThis, filter)) {
16
+ if (filter in globalThis) {
17
17
  const wndFilter = globalThis[filter];
18
18
  if (isFunction(wndFilter)) {
19
19
  filterFunc = wndFilter;
package/cjs/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export async function loadEmittersShapeCanvas(engine) {
2
- engine.checkVersion("4.0.0-alpha.26");
2
+ engine.checkVersion("4.0.0-alpha.28");
3
3
  await engine.register(async (e) => {
4
4
  const { ensureEmittersPluginLoaded } = await import("@tsparticles/plugin-emitters");
5
5
  ensureEmittersPluginLoaded(e);
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.26
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -23,7 +23,7 @@
23
23
  \*********************************************/
24
24
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
25
25
 
26
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EmittersCanvasShape: () => (/* binding */ EmittersCanvasShape)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_plugin_emitters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-emitters */ \"@tsparticles/plugin-emitters\");\n/* harmony import */ var _tsparticles_canvas_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tsparticles/canvas-utils */ \"@tsparticles/canvas-utils\");\n\n\n\nconst maxRetries = 100;\nclass EmittersCanvasShape extends _tsparticles_plugin_emitters__WEBPACK_IMPORTED_MODULE_1__.EmitterShapeBase {\n filter;\n pixelData;\n scale;\n _container;\n constructor(container, position, size, fill, options){\n super(position, size, fill, options);\n this._container = container;\n const filter = options.filter, minAlpha = 0;\n let filterFunc = (pixel)=>pixel.a > minAlpha;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(filter)) {\n if (Object.hasOwn(globalThis, filter)) {\n const wndFilter = globalThis[filter];\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isFunction)(wndFilter)) {\n filterFunc = wndFilter;\n }\n }\n } else {\n filterFunc = filter;\n }\n this.filter = filterFunc;\n this.scale = options.scale;\n this.pixelData = {\n pixels: [],\n height: 0,\n width: 0\n };\n }\n async init() {\n let pixelData;\n const options = this.options, selector = options.selector, pixels = options.pixels, image = options.image, element = options.element, text = options.text, offset = pixels.offset;\n if (image) {\n const url = image.src;\n if (!url) {\n return;\n }\n pixelData = await (0,_tsparticles_canvas_utils__WEBPACK_IMPORTED_MODULE_2__.getImageData)(url, offset, this._container.canvas.settings);\n } else if (element ?? selector) {\n const canvas = element ?? (selector && (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().querySelector(selector));\n if (!canvas) {\n return;\n }\n const context = canvas.getContext(\"2d\", this._container.canvas.settings);\n if (!context) {\n return;\n }\n pixelData = (0,_tsparticles_canvas_utils__WEBPACK_IMPORTED_MODULE_2__.getCanvasImageData)(context, canvas, offset);\n } else {\n const data = (0,_tsparticles_canvas_utils__WEBPACK_IMPORTED_MODULE_2__.getTextData)(text, offset, this.fill, this._container.canvas.settings);\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNull)(data)) {\n return;\n }\n pixelData = data;\n }\n this.pixelData = pixelData;\n }\n randomPosition() {\n const { height, width } = this.pixelData, data = this.pixelData, position = this.position, scale = this.scale, positionOffset = {\n x: position.x - width * scale * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half,\n y: position.y - height * scale * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half\n };\n for(let i = 0; i < maxRetries; i++){\n const nextIndex = Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * width * height), pixelPos = {\n x: nextIndex % width,\n y: Math.floor(nextIndex / width)\n }, row = data.pixels[pixelPos.y];\n if (!row) {\n continue;\n }\n const pixel = row[pixelPos.x];\n if (!pixel) {\n continue;\n }\n const shouldCreateParticle = this.filter(pixel);\n if (!shouldCreateParticle) {\n continue;\n }\n return {\n position: {\n x: pixelPos.x * scale + positionOffset.x,\n y: pixelPos.y * scale + positionOffset.y\n },\n color: {\n ...pixel\n },\n opacity: pixel.a\n };\n }\n return null;\n }\n resize(position, size) {\n super.resize(position, size);\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters-shape-canvas/./dist/browser/EmittersCanvasShape.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EmittersCanvasShape: () => (/* binding */ EmittersCanvasShape)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_plugin_emitters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-emitters */ \"@tsparticles/plugin-emitters\");\n/* harmony import */ var _tsparticles_canvas_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tsparticles/canvas-utils */ \"@tsparticles/canvas-utils\");\n\n\n\nconst maxRetries = 100;\nclass EmittersCanvasShape extends _tsparticles_plugin_emitters__WEBPACK_IMPORTED_MODULE_1__.EmitterShapeBase {\n filter;\n pixelData;\n scale;\n _container;\n constructor(container, position, size, fill, options){\n super(position, size, fill, options);\n this._container = container;\n const filter = options.filter, minAlpha = 0;\n let filterFunc = (pixel)=>pixel.a > minAlpha;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(filter)) {\n if (filter in globalThis) {\n const wndFilter = globalThis[filter];\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isFunction)(wndFilter)) {\n filterFunc = wndFilter;\n }\n }\n } else {\n filterFunc = filter;\n }\n this.filter = filterFunc;\n this.scale = options.scale;\n this.pixelData = {\n pixels: [],\n height: 0,\n width: 0\n };\n }\n async init() {\n let pixelData;\n const options = this.options, selector = options.selector, pixels = options.pixels, image = options.image, element = options.element, text = options.text, offset = pixels.offset;\n if (image) {\n const url = image.src;\n if (!url) {\n return;\n }\n pixelData = await (0,_tsparticles_canvas_utils__WEBPACK_IMPORTED_MODULE_2__.getImageData)(url, offset, this._container.canvas.settings);\n } else if (element ?? selector) {\n const canvas = element ?? (selector && (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().querySelector(selector));\n if (!canvas) {\n return;\n }\n const context = canvas.getContext(\"2d\", this._container.canvas.settings);\n if (!context) {\n return;\n }\n pixelData = (0,_tsparticles_canvas_utils__WEBPACK_IMPORTED_MODULE_2__.getCanvasImageData)(context, canvas, offset);\n } else {\n const data = (0,_tsparticles_canvas_utils__WEBPACK_IMPORTED_MODULE_2__.getTextData)(text, offset, this.fill, this._container.canvas.settings);\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNull)(data)) {\n return;\n }\n pixelData = data;\n }\n this.pixelData = pixelData;\n }\n randomPosition() {\n const { height, width } = this.pixelData, data = this.pixelData, position = this.position, scale = this.scale, positionOffset = {\n x: position.x - width * scale * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half,\n y: position.y - height * scale * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half\n };\n for(let i = 0; i < maxRetries; i++){\n const nextIndex = Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * width * height), pixelPos = {\n x: nextIndex % width,\n y: Math.floor(nextIndex / width)\n }, row = data.pixels[pixelPos.y];\n if (!row) {\n continue;\n }\n const pixel = row[pixelPos.x];\n if (!pixel) {\n continue;\n }\n const shouldCreateParticle = this.filter(pixel);\n if (!shouldCreateParticle) {\n continue;\n }\n return {\n position: {\n x: pixelPos.x * scale + positionOffset.x,\n y: pixelPos.y * scale + positionOffset.y\n },\n color: {\n ...pixel\n },\n opacity: pixel.a\n };\n }\n return null;\n }\n resize(position, size) {\n super.resize(position, size);\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters-shape-canvas/./dist/browser/EmittersCanvasShape.js?\n}");
27
27
 
28
28
  /***/ },
29
29
 
@@ -13,7 +13,7 @@ export class EmittersCanvasShape extends EmitterShapeBase {
13
13
  const filter = options.filter, minAlpha = 0;
14
14
  let filterFunc = (pixel) => pixel.a > minAlpha;
15
15
  if (isString(filter)) {
16
- if (Object.hasOwn(globalThis, filter)) {
16
+ if (filter in globalThis) {
17
17
  const wndFilter = globalThis[filter];
18
18
  if (isFunction(wndFilter)) {
19
19
  filterFunc = wndFilter;
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export async function loadEmittersShapeCanvas(engine) {
2
- engine.checkVersion("4.0.0-alpha.26");
2
+ engine.checkVersion("4.0.0-alpha.28");
3
3
  await engine.register(async (e) => {
4
4
  const { ensureEmittersPluginLoaded } = await import("@tsparticles/plugin-emitters");
5
5
  ensureEmittersPluginLoaded(e);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/plugin-emitters-shape-canvas",
3
- "version": "4.0.0-alpha.26",
3
+ "version": "4.0.0-alpha.28",
4
4
  "description": "tsParticles emitters shape canvas plugin",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -100,9 +100,9 @@
100
100
  "./package.json": "./package.json"
101
101
  },
102
102
  "dependencies": {
103
- "@tsparticles/canvas-utils": "4.0.0-alpha.26",
104
- "@tsparticles/engine": "4.0.0-alpha.26",
105
- "@tsparticles/plugin-emitters": "4.0.0-alpha.26"
103
+ "@tsparticles/canvas-utils": "4.0.0-alpha.28",
104
+ "@tsparticles/engine": "4.0.0-alpha.28",
105
+ "@tsparticles/plugin-emitters": "4.0.0-alpha.28"
106
106
  },
107
107
  "publishConfig": {
108
108
  "access": "public"
package/report.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>@tsparticles/plugin-emitters-shape-canvas [26 Feb 2026 at 18:11]</title>
6
+ <title>@tsparticles/plugin-emitters-shape-canvas [15 Mar 2026 at 13:49]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.26
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -64,7 +64,7 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_plugin_emitters__;
64
64
  \*******************************/
65
65
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
66
66
 
67
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadEmittersShapeCanvas: () => (/* binding */ loadEmittersShapeCanvas)\n/* harmony export */ });\nasync function loadEmittersShapeCanvas(engine) {\n engine.checkVersion(\"4.0.0-alpha.26\");\n await engine.register(async (e)=>{\n const { ensureEmittersPluginLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! @tsparticles/plugin-emitters */ \"@tsparticles/plugin-emitters\", 19));\n ensureEmittersPluginLoaded(e);\n const { EmittersCanvasShapeGenerator } = await __webpack_require__.e(/*! import() */ \"dist_browser_EmittersCanvasShapeGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./EmittersCanvasShapeGenerator.js */ \"./dist/browser/EmittersCanvasShapeGenerator.js\"));\n e.addEmitterShapeGenerator?.(\"canvas\", new EmittersCanvasShapeGenerator());\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters-shape-canvas/./dist/browser/index.js?\n}");
67
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadEmittersShapeCanvas: () => (/* binding */ loadEmittersShapeCanvas)\n/* harmony export */ });\nasync function loadEmittersShapeCanvas(engine) {\n engine.checkVersion(\"4.0.0-alpha.28\");\n await engine.register(async (e)=>{\n const { ensureEmittersPluginLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! @tsparticles/plugin-emitters */ \"@tsparticles/plugin-emitters\", 19));\n ensureEmittersPluginLoaded(e);\n const { EmittersCanvasShapeGenerator } = await __webpack_require__.e(/*! import() */ \"dist_browser_EmittersCanvasShapeGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./EmittersCanvasShapeGenerator.js */ \"./dist/browser/EmittersCanvasShapeGenerator.js\"));\n e.addEmitterShapeGenerator?.(\"canvas\", new EmittersCanvasShapeGenerator());\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/plugin-emitters-shape-canvas/./dist/browser/index.js?\n}");
68
68
 
69
69
  /***/ }
70
70
 
@@ -80,12 +80,6 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
80
80
  /******/ if (cachedModule !== undefined) {
81
81
  /******/ return cachedModule.exports;
82
82
  /******/ }
83
- /******/ // Check if module exists (development only)
84
- /******/ if (__webpack_modules__[moduleId] === undefined) {
85
- /******/ var e = new Error("Cannot find module '" + moduleId + "'");
86
- /******/ e.code = 'MODULE_NOT_FOUND';
87
- /******/ throw e;
88
- /******/ }
89
83
  /******/ // Create a new module (and put it into the cache)
90
84
  /******/ var module = __webpack_module_cache__[moduleId] = {
91
85
  /******/ // no module.id needed
@@ -94,6 +88,12 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
94
88
  /******/ };
95
89
  /******/
96
90
  /******/ // Execute the module function
91
+ /******/ if (!(moduleId in __webpack_modules__)) {
92
+ /******/ delete __webpack_module_cache__[moduleId];
93
+ /******/ var e = new Error("Cannot find module '" + moduleId + "'");
94
+ /******/ e.code = 'MODULE_NOT_FOUND';
95
+ /******/ throw e;
96
+ /******/ }
97
97
  /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
98
98
  /******/
99
99
  /******/ // Return the exports of the module
@@ -1,2 +1,2 @@
1
1
  !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/plugin-emitters"),require("@tsparticles/engine"),require("@tsparticles/canvas-utils"));else if("function"==typeof define&&define.amd)define(["@tsparticles/plugin-emitters","@tsparticles/engine","@tsparticles/canvas-utils"],t);else{var r="object"==typeof exports?t(require("@tsparticles/plugin-emitters"),require("@tsparticles/engine"),require("@tsparticles/canvas-utils")):t(e.window,e.window,e.window);for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(this,(e,t,r)=>(()=>{"use strict";var i,o,n,a={425(e){e.exports=r},303(e){e.exports=t},526(t){t.exports=e}},s={};function c(e){var t=s[e];if(void 0!==t)return t.exports;var r=s[e]={exports:{}};return a[e](r,r.exports,c),r.exports}c.m=a,l=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,t){if(1&t&&(e=this(e)),8&t||"object"==typeof e&&e&&(4&t&&e.__esModule||16&t&&"function"==typeof e.then))return e;var r=Object.create(null);c.r(r);var i={};p=p||[null,l({}),l([]),l(l)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~p.indexOf(o);o=l(o))Object.getOwnPropertyNames(o).forEach(t=>i[t]=()=>e[t]);return i.default=()=>e,c.d(r,i),r},c.d=(e,t)=>{for(var r in t)c.o(t,r)&&!c.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce((t,r)=>(c.f[r](e,t),t),[])),c.u=e=>""+e+".min.js",c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u={},c.l=(e,t,r,i)=>{if(u[e])return void u[e].push(t);if(void 0!==r)for(var o,n,a=document.getElementsByTagName("script"),s=0;s<a.length;s++){var p=a[s];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")=="@tsparticles/plugin-emitters-shape-canvas:"+r){o=p;break}}o||(n=!0,(o=document.createElement("script")).charset="utf-8",c.nc&&o.setAttribute("nonce",c.nc),o.setAttribute("data-webpack","@tsparticles/plugin-emitters-shape-canvas:"+r),o.src=e),u[e]=[t];var l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);var i=u[e];if(delete u[e],o.parentNode&&o.parentNode.removeChild(o),i&&i.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),n&&document.head.appendChild(o)},c.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.g.importScripts&&(f=c.g.location+"");var p,l,u,f,d=c.g.document;if(!f&&d&&(d.currentScript&&"SCRIPT"===d.currentScript.tagName.toUpperCase()&&(f=d.currentScript.src),!f)){var h=d.getElementsByTagName("script");if(h.length)for(var b=h.length-1;b>-1&&(!f||!/^http(s?):/.test(f));)f=h[b--].src}if(!f)throw Error("Automatic publicPath is not supported in this browser");c.p=f=f.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i={346:0},c.f.j=(e,t)=>{var r=c.o(i,e)?i[e]:void 0;if(0!==r)if(r)t.push(r[2]);else{var o=new Promise((t,o)=>r=i[e]=[t,o]);t.push(r[2]=o);var n=c.p+c.u(e),a=Error();c.l(n,t=>{if(c.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var o=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;a.message="Loading chunk "+e+` failed.
2
- (`+o+": "+n+")",a.name="ChunkLoadError",a.type=o,a.request=n,r[1](a)}},"chunk-"+e,e)}},o=(e,t)=>{var r,o,[n,a,s]=t,p=0;if(n.some(e=>0!==i[e])){for(r in a)c.o(a,r)&&(c.m[r]=a[r]);s&&s(c)}for(e&&e(t);p<n.length;p++)o=n[p],c.o(i,o)&&i[o]&&i[o][0](),i[o]=0},(n=this.webpackChunk_tsparticles_plugin_emitters_shape_canvas=this.webpackChunk_tsparticles_plugin_emitters_shape_canvas||[]).forEach(o.bind(null,0)),n.push=o.bind(null,n.push.bind(n));var m={};async function g(e){e.checkVersion("4.0.0-alpha.26"),await e.register(async e=>{let{ensureEmittersPluginLoaded:t}=await Promise.resolve().then(c.t.bind(c,526,19));t(e);let{EmittersCanvasShapeGenerator:r}=await c.e(760).then(c.bind(c,760));e.addEmitterShapeGenerator?.("canvas",new r)})}return c.r(m),c.d(m,{loadEmittersShapeCanvas:()=>g}),m})());
2
+ (`+o+": "+n+")",a.name="ChunkLoadError",a.type=o,a.request=n,r[1](a)}},"chunk-"+e,e)}},o=(e,t)=>{var r,o,[n,a,s]=t,p=0;if(n.some(e=>0!==i[e])){for(r in a)c.o(a,r)&&(c.m[r]=a[r]);s&&s(c)}for(e&&e(t);p<n.length;p++)o=n[p],c.o(i,o)&&i[o]&&i[o][0](),i[o]=0},(n=this.webpackChunk_tsparticles_plugin_emitters_shape_canvas=this.webpackChunk_tsparticles_plugin_emitters_shape_canvas||[]).forEach(o.bind(null,0)),n.push=o.bind(null,n.push.bind(n));var m={};async function g(e){e.checkVersion("4.0.0-alpha.28"),await e.register(async e=>{let{ensureEmittersPluginLoaded:t}=await Promise.resolve().then(c.t.bind(c,526,19));t(e);let{EmittersCanvasShapeGenerator:r}=await c.e(373).then(c.bind(c,373));e.addEmitterShapeGenerator?.("canvas",new r)})}return c.r(m),c.d(m,{loadEmittersShapeCanvas:()=>g}),m})());
@@ -25,7 +25,7 @@
25
25
  const filter = options.filter, minAlpha = 0;
26
26
  let filterFunc = (pixel) => pixel.a > minAlpha;
27
27
  if ((0, engine_1.isString)(filter)) {
28
- if (Object.hasOwn(globalThis, filter)) {
28
+ if (filter in globalThis) {
29
29
  const wndFilter = globalThis[filter];
30
30
  if ((0, engine_1.isFunction)(wndFilter)) {
31
31
  filterFunc = wndFilter;
package/umd/index.js CHANGED
@@ -45,7 +45,7 @@ var __importStar = (this && this.__importStar) || (function () {
45
45
  Object.defineProperty(exports, "__esModule", { value: true });
46
46
  exports.loadEmittersShapeCanvas = loadEmittersShapeCanvas;
47
47
  async function loadEmittersShapeCanvas(engine) {
48
- engine.checkVersion("4.0.0-alpha.26");
48
+ engine.checkVersion("4.0.0-alpha.28");
49
49
  await engine.register(async (e) => {
50
50
  const { ensureEmittersPluginLoaded } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("@tsparticles/plugin-emitters"))) : new Promise((resolve_1, reject_1) => { require(["@tsparticles/plugin-emitters"], resolve_1, reject_1); }).then(__importStar));
51
51
  ensureEmittersPluginLoaded(e);
package/760.min.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";(this.webpackChunk_tsparticles_plugin_emitters_shape_canvas=this.webpackChunk_tsparticles_plugin_emitters_shape_canvas||[]).push([[760],{760(t,e,i){i.d(e,{EmittersCanvasShapeGenerator:()=>p});var s=i(303),a=i(526),l=i(425);class o extends a.EmitterShapeBase{filter;pixelData;scale;_container;constructor(t,e,i,a,l){super(e,i,a,l),this._container=t;const o=l.filter;let r=t=>t.a>0;if((0,s.isString)(o)){if(Object.hasOwn(globalThis,o)){const t=globalThis[o];(0,s.isFunction)(t)&&(r=t)}}else r=o;this.filter=r,this.scale=l.scale,this.pixelData={pixels:[],height:0,width:0}}async init(){let t,e=this.options,i=e.selector,a=e.pixels,o=e.image,r=e.element,n=e.text,h=a.offset;if(o){let e=o.src;if(!e)return;t=await (0,l.getImageData)(e,h,this._container.canvas.settings)}else if(r??i){let e=r??(i&&(0,s.safeDocument)().querySelector(i));if(!e)return;let a=e.getContext("2d",this._container.canvas.settings);if(!a)return;t=(0,l.getCanvasImageData)(a,e,h)}else{let e=(0,l.getTextData)(n,h,this.fill,this._container.canvas.settings);if((0,s.isNull)(e))return;t=e}this.pixelData=t}randomPosition(){let{height:t,width:e}=this.pixelData,i=this.pixelData,a=this.position,l=this.scale,o={x:a.x-e*l*s.half,y:a.y-t*l*s.half};for(let a=0;a<100;a++){let a=Math.floor((0,s.getRandom)()*e*t),r={x:a%e,y:Math.floor(a/e)},n=i.pixels[r.y];if(!n)continue;let h=n[r.x];if(h&&this.filter(h))return{position:{x:r.x*l+o.x,y:r.y*l+o.y},color:{...h},opacity:h.a}}return null}resize(t,e){super.resize(t,e)}}class r{offset;constructor(){this.offset=4}load(t){(0,s.isNull)(t)||void 0!==t.offset&&(this.offset=t.offset)}}class n{family;size;style;variant;weight;constructor(){this.family="Verdana",this.size=32,this.style="",this.variant="",this.weight=""}load(t){(0,s.isNull)(t)||(void 0!==t.family&&(this.family=t.family),void 0!==t.size&&(this.size=t.size),void 0!==t.style&&(this.style=t.style),void 0!==t.variant&&(this.variant=t.variant),void 0!==t.weight&&(this.weight=t.weight))}}class h{separator;spacing;constructor(){this.separator=`
2
- `,this.spacing=0}load(t){(0,s.isNull)(t)||(void 0!==t.separator&&(this.separator=t.separator),void 0!==t.spacing&&(this.spacing=t.spacing))}}class c{color;font;lines;text;constructor(){this.color="#000000",this.font=new n,this.lines=new h,this.text=""}load(t){(0,s.isNull)(t)||(void 0!==t.color&&(this.color=t.color),this.font.load(t.font),this.lines.load(t.lines),void 0!==t.text&&(this.text=t.text))}}class f{element;filter;image;pixels;scale;selector;text;constructor(){this.filter=t=>t.a>0,this.pixels=new r,this.scale=1,this.selector="",this.text=new c}load(t){(0,s.isNull)(t)||(void 0!==t.element&&(this.element=t.element),void 0!==t.filter&&(this.filter=t.filter),this.pixels.load(t.pixels),void 0!==t.scale&&(this.scale=t.scale),void 0!==t.selector&&(this.selector=t.selector),void 0!==t.image&&(this.image=t.image),this.text.load(t.text))}}class p{generate(t,e,i,s,a){let l=new f;return l.load(a),new o(t,e,i,s,l)}}}}]);