@tsparticles/shape-image 4.0.0-alpha.8 → 4.0.0-beta.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/375.min.js +1 -0
- package/550.min.js +1 -0
- package/682.min.js +1 -0
- package/814.min.js +1 -0
- package/browser/GifUtils/ByteStream.js +3 -1
- package/browser/GifUtils/Utils.js +36 -42
- package/browser/ImageDrawer.js +28 -32
- package/browser/ImagePreloader.js +7 -5
- package/browser/ImagePreloaderInstance.js +11 -0
- package/browser/Options/Classes/Preload.js +6 -0
- package/browser/Utils.js +7 -6
- package/browser/index.js +27 -13
- package/cjs/GifUtils/ByteStream.js +3 -1
- package/cjs/GifUtils/Utils.js +36 -42
- package/cjs/ImageDrawer.js +28 -32
- package/cjs/ImagePreloader.js +7 -5
- package/cjs/ImagePreloaderInstance.js +11 -0
- package/cjs/Options/Classes/Preload.js +6 -0
- package/cjs/Utils.js +7 -6
- package/cjs/index.js +27 -13
- package/dist_browser_GifUtils_Utils_js.js +6 -16
- package/dist_browser_ImageDrawer_js.js +2 -2
- package/dist_browser_ImagePreloaderInstance_js.js +30 -0
- package/dist_browser_ImagePreloader_js.js +3 -3
- package/esm/GifUtils/ByteStream.js +3 -1
- package/esm/GifUtils/Utils.js +36 -42
- package/esm/ImageDrawer.js +28 -32
- package/esm/ImagePreloader.js +7 -5
- package/esm/ImagePreloaderInstance.js +11 -0
- package/esm/Options/Classes/Preload.js +6 -0
- package/esm/Utils.js +7 -6
- package/esm/index.js +27 -13
- package/package.json +2 -2
- package/report.html +1 -1
- package/tsparticles.shape.image.js +40 -18
- package/tsparticles.shape.image.min.js +2 -2
- package/types/GifUtils/Utils.d.ts +4 -4
- package/types/ImageDrawer.d.ts +1 -3
- package/types/ImagePreloader.d.ts +5 -4
- package/types/ImagePreloaderInstance.d.ts +8 -0
- package/types/Utils.d.ts +1 -0
- package/types/types.d.ts +3 -2
- package/umd/GifUtils/ByteStream.js +3 -1
- package/umd/GifUtils/Utils.js +37 -43
- package/umd/ImageDrawer.js +27 -31
- package/umd/ImagePreloader.js +41 -5
- package/umd/ImagePreloaderInstance.js +25 -0
- package/umd/Options/Classes/Preload.js +6 -0
- package/umd/Utils.js +8 -6
- package/umd/index.js +28 -14
- package/324.min.js +0 -2
- package/324.min.js.LICENSE.txt +0 -1
- package/337.min.js +0 -2
- package/337.min.js.LICENSE.txt +0 -1
- package/413.min.js +0 -2
- package/413.min.js.LICENSE.txt +0 -1
- package/72.min.js +0 -2
- package/72.min.js.LICENSE.txt +0 -1
- package/dist_browser_Utils_js.js +0 -30
- package/tsparticles.shape.image.min.js.LICENSE.txt +0 -1
package/337.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 337.min.js.LICENSE.txt */
|
|
2
|
-
(this.webpackChunk_tsparticles_shape_image=this.webpackChunk_tsparticles_shape_image||[]).push([[337,413],{337(e,t,a){a.d(t,{zS:()=>p,loadGifImage:()=>u});var o=a(303),n=a(413);const i=[0,4,2,1],r=[8,8,4,2];class s{constructor(e){this.pos=0,this.data=new Uint8ClampedArray(e)}getString(e){const t=this.data.slice(this.pos,this.pos+e);return this.pos+=t.length,t.reduce(((e,t)=>e+String.fromCharCode(t)),"")}nextByte(){return this.data[this.pos++]}nextTwoBytes(){return this.pos+=2,this.data[this.pos-2]+(this.data[this.pos-1]<<8)}readSubBlocks(){let e="",t=0;do{t=this.data[this.pos++];for(let a=t;--a>=0;e+=String.fromCharCode(this.data[this.pos++]));}while(0!==t);return e}readSubBlocksBin(){let e=this.data[this.pos],t=0;for(let a=0;0!==e;a+=e+1,e=this.data[this.pos+a])t+=e;const a=new Uint8Array(t);e=this.data[this.pos++];for(let t=0;0!==e;e=this.data[this.pos++])for(let o=e;--o>=0;a[t++]=this.data[this.pos++]);return a}skipSubBlocks(){for(const e=1,t=0;this.data[this.pos]!==t;this.pos+=this.data[this.pos]+e);this.pos++}}var l,c;!function(e){e[e.Replace=0]="Replace",e[e.Combine=1]="Combine",e[e.RestoreBackground=2]="RestoreBackground",e[e.RestorePrevious=3]="RestorePrevious",e[e.UndefinedA=4]="UndefinedA",e[e.UndefinedB=5]="UndefinedB",e[e.UndefinedC=6]="UndefinedC",e[e.UndefinedD=7]="UndefinedD"}(l||(l={})),function(e){e[e.Extension=33]="Extension",e[e.ApplicationExtension=255]="ApplicationExtension",e[e.GraphicsControlExtension=249]="GraphicsControlExtension",e[e.PlainTextExtension=1]="PlainTextExtension",e[e.CommentExtension=254]="CommentExtension",e[e.Image=44]="Image",e[e.EndOfFile=59]="EndOfFile"}(c||(c={}));const g=0,d=0;function h(e,t){const a=[];for(let o=0;o<t;o++)a.push({r:e.data[e.pos],g:e.data[e.pos+1],b:e.data[e.pos+2]}),e.pos+=3;return a}async function f(e,t,a,o,n,s){switch(e.nextByte()){case c.EndOfFile:return!0;case c.Image:await async function(e,t,a,o,n,s){const l=t.frames[o(!0)];l.left=e.nextTwoBytes(),l.top=e.nextTwoBytes(),l.width=e.nextTwoBytes(),l.height=e.nextTwoBytes();const c=e.nextByte(),g=!(128&~c),d=!(64&~c);l.sortFlag=!(32&~c),l.reserved=(24&c)>>>3;const f=1<<1+(7&c);g&&(l.localColorTable=h(e,f));const p=e=>{const{r:o,g:i,b:r}=(g?l.localColorTable:t.globalColorTable)[e];return e!==n(null)?{r:o,g:i,b:r,a:255}:{r:o,g:i,b:r,a:a?Math.trunc((o+i+r)/3):0}},u=(()=>{try{return new ImageData(l.width,l.height,{colorSpace:"srgb"})}catch(e){if(e instanceof DOMException&&"IndexSizeError"===e.name)return null;throw e}})();if(null==u)throw new EvalError("GIF frame size is to large");const m=e.nextByte(),w=e.readSubBlocksBin(),x=1<<m,b=(e,t)=>{const a=e>>>3,o=7&e;return(w[a]+(w[a+1]<<8)+(w[a+2]<<16)&(1<<t)-1<<o)>>>o};if(d){for(let a=0,n=m+1,c=0,g=[[0]],d=0;d<4;d++){if(i[d]<l.height){let e=0,t=0,o=!1;for(;!o;){const s=a;if(a=b(c,n),c+=n+1,a===x){n=m+1,g.length=x+2;for(let e=0;e<g.length;e++)g[e]=e<x?[e]:[]}else{a>=g.length?g.push(g[s].concat(g[s][0])):s!==x&&g.push(g[s].concat(g[a][0]));for(const o of g[a]){const{r:a,g:n,b:s,a:c}=p(o);u.data.set([a,n,s,c],i[d]*l.width+r[d]*t+e%(4*l.width)),e+=4}g.length===1<<n&&n<12&&n++}e===4*l.width*(t+1)&&(t++,i[d]+r[d]*t>=l.height&&(o=!0))}}s?.(e.pos/(e.data.length-1),o(!1)+1,u,{x:l.left,y:l.top},{width:t.width,height:t.height})}l.image=u,l.bitmap=await createImageBitmap(u)}else{let a=0,n=m+1,i=0,r=-4;const c=[[0]];for(;;){const e=a;if(a=b(i,n),i+=n,a===x){n=m+1,c.length=x+2;for(let e=0;e<c.length;e++)c[e]=e<x?[e]:[]}else{if(a===x+1)break;a>=c.length?c.push(c[e].concat(c[e][0])):e!==x&&c.push(c[e].concat(c[a][0]));for(const e of c[a]){const{r:t,g:a,b:o,a:n}=p(e);u.data.set([t,a,o,n],r),r+=4}c.length>=1<<n&&n<12&&n++}}l.image=u,l.bitmap=await createImageBitmap(u),s?.((e.pos+1)/e.data.length,o(!1)+1,l.image,{x:l.left,y:l.top},{width:t.width,height:t.height})}}(e,t,a,o,n,s);break;case c.Extension:!function(e,t,a,o){switch(e.nextByte()){case c.GraphicsControlExtension:{const n=t.frames[a(!1)];e.pos++;const i=e.nextByte();n.GCreserved=(224&i)>>>5,n.disposalMethod=(28&i)>>>2,n.userInputDelayFlag=!(2&~i);const r=!(1&~i);n.delayTime=10*e.nextTwoBytes();const s=e.nextByte();r&&o(s),e.pos++;break}case c.ApplicationExtension:{e.pos++;const a={identifier:e.getString(8),authenticationCode:e.getString(3),data:e.readSubBlocksBin()};t.applicationExtensions.push(a);break}case c.CommentExtension:t.comments.push([a(!1),e.readSubBlocks()]);break;case c.PlainTextExtension:if(0===t.globalColorTable.length)throw new EvalError("plain text extension without global color table");e.pos++,t.frames[a(!1)].plainTextData={left:e.nextTwoBytes(),top:e.nextTwoBytes(),width:e.nextTwoBytes(),height:e.nextTwoBytes(),charSize:{width:e.nextTwoBytes(),height:e.nextTwoBytes()},foregroundColor:e.nextByte(),backgroundColor:e.nextByte(),text:e.readSubBlocks()};break;default:e.skipSubBlocks()}}(e,t,o,n);break;default:throw new EvalError("undefined block found")}return!1}function p(e){const{context:t,radius:a,particle:n,delta:i}=e,r=n.image;if(!r?.gifData||!r.gif)return;const s=new OffscreenCanvas(r.gifData.width,r.gifData.height),c=s.getContext("2d");if(!c)throw new Error("could not create offscreen canvas context");c.imageSmoothingQuality="low",c.imageSmoothingEnabled=!1,c.clearRect(g,d,s.width,s.height),n.gifLoopCount??=r.gifLoopCount??0;let h=n.gifFrame??0;const f={x:-r.gifData.width*o.half,y:-r.gifData.height*o.half},p=r.gifData.frames[h];if(n.gifTime??=0,p.bitmap){switch(t.scale(a/r.gifData.width,a/r.gifData.height),p.disposalMethod){case l.UndefinedA:case l.UndefinedB:case l.UndefinedC:case l.UndefinedD:case l.Replace:c.drawImage(p.bitmap,p.left,p.top),t.drawImage(s,f.x,f.y),c.clearRect(g,d,s.width,s.height);break;case l.Combine:c.drawImage(p.bitmap,p.left,p.top),t.drawImage(s,f.x,f.y);break;case l.RestoreBackground:c.drawImage(p.bitmap,p.left,p.top),t.drawImage(s,f.x,f.y),c.clearRect(g,d,s.width,s.height),r.gifData.globalColorTable.length?c.putImageData(r.gifData.backgroundImage,f.x,f.y):c.putImageData(r.gifData.frames[0].image,f.x+p.left,f.y+p.top);break;case l.RestorePrevious:{const e=c.getImageData(g,d,s.width,s.height);c.drawImage(p.bitmap,p.left,p.top),t.drawImage(s,f.x,f.y),c.clearRect(g,d,s.width,s.height),c.putImageData(e,g,d)}}if(n.gifTime+=i.value,n.gifTime>p.delayTime){if(n.gifTime-=p.delayTime,++h>=r.gifData.frames.length){if(--n.gifLoopCount<=0)return;h=0,c.clearRect(g,d,s.width,s.height)}n.gifFrame=h}t.scale(r.gifData.width/a,r.gifData.height/a)}}async function u(e){if("gif"===e.type){e.loading=!0;try{e.gifData=await async function(e,t,a){a??=!1;const o=await fetch(e);if(!o.ok&&404===o.status)throw new EvalError("file not found");const n=await o.arrayBuffer(),i={width:0,height:0,totalTime:0,colorRes:0,pixelAspectRatio:0,frames:[],sortFlag:!1,globalColorTable:[],backgroundImage:new ImageData(1,1,{colorSpace:"srgb"}),comments:[],applicationExtensions:[]},r=new s(new Uint8ClampedArray(n));if("GIF89a"!==r.getString(6))throw new Error("not a supported GIF file");i.width=r.nextTwoBytes(),i.height=r.nextTwoBytes();const c=r.nextByte(),g=!(128&~c);i.colorRes=(112&c)>>>4,i.sortFlag=!(8&~c);const d=1<<1+(7&c),p=r.nextByte();i.pixelAspectRatio=r.nextByte(),0!==i.pixelAspectRatio&&(i.pixelAspectRatio=(i.pixelAspectRatio+15)/64),g&&(i.globalColorTable=h(r,d));const u=(()=>{try{return new ImageData(i.width,i.height,{colorSpace:"srgb"})}catch(e){if(e instanceof DOMException&&"IndexSizeError"===e.name)return null;throw e}})();if(null==u)throw new Error("GIF frame size is to large");const{r:m,g:w,b:x}=i.globalColorTable[p];u.data.set(g?[m,w,x,255]:[0,0,0,0]);for(let e=4;e<u.data.length;e*=2)u.data.copyWithin(e,0,e);i.backgroundImage=u;let b=-1,y=!0,B=-1;const E=e=>(e&&(y=!0),b),C=e=>(null!=e&&(B=e),B);try{do{y&&(i.frames.push({left:0,top:0,width:0,height:0,disposalMethod:l.Replace,image:new ImageData(1,1,{colorSpace:"srgb"}),plainTextData:null,userInputDelayFlag:!1,delayTime:0,sortFlag:!1,localColorTable:[],reserved:0,GCreserved:0}),b++,B=-1,y=!1)}while(!await f(r,i,a,E,C,t));i.frames.length--;for(const e of i.frames){if(e.userInputDelayFlag&&0===e.delayTime){i.totalTime=1/0;break}i.totalTime+=e.delayTime}return i}catch(e){if(e instanceof EvalError)throw new Error(`error while parsing frame ${b.toString()} "${e.message}"`);throw e}}(e.source),e.gifLoopCount=function(e){for(const t of e.applicationExtensions)if(t.identifier+t.authenticationCode==="NETSCAPE2.0")return t.data[1]+(t.data[2]<<8);return NaN}(e.gifData),e.gifLoopCount||(e.gifLoopCount=1/0)}catch{e.error=!0}e.loading=!1}else await(0,n.loadImage)(e)}},413(e,t,a){a.d(t,{d:()=>s,downloadSvgImage:()=>r,loadImage:()=>i});var o=a(303);const n=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d.]+%?\))|currentcolor/gi;async function i(e){return new Promise((t=>{e.loading=!0;const a=new Image;e.element=a,a.addEventListener("load",(()=>{e.loading=!1,t()})),a.addEventListener("error",(()=>{e.element=void 0,e.error=!0,e.loading=!1,(0,o.getLogger)().error(`Error loading image: ${e.source}`),t()})),a.src=e.source}))}async function r(e){if("svg"!==e.type)return void await i(e);e.loading=!0;const t=await fetch(e.source);t.ok?e.svgData=await t.text():((0,o.getLogger)().error("Image not found"),e.error=!0),e.loading=!1}function s(e,t,a,r,s=!1){const l=function(e,t,a,i=!1){const{svgData:r}=e;if(!r)return"";const s=(0,o.getStyleFromHsl)(t,i,a);if(r.includes("fill"))return r.replace(n,(()=>s));const l=r.indexOf(">");return`${r.substring(0,l)} fill="${s}"${r.substring(l)}`}(e,a,r.opacity?.value??1,s),c={color:a,gif:t.gif,data:{...e,svgData:l},loaded:!1,ratio:t.width/t.height,replaceColor:t.replaceColor,source:t.src};return new Promise((t=>{const a=new Blob([l],{type:"image/svg+xml"}),o=URL.createObjectURL(a),n=new Image;n.addEventListener("load",(()=>{c.loaded=!0,c.element=n,t(c),URL.revokeObjectURL(o)}));n.addEventListener("error",(()=>{(async()=>{URL.revokeObjectURL(o);const a={...e,error:!1,loading:!0};await i(a),c.loaded=!0,c.element=a.element,t(c)})()})),n.src=o}))}}}]);
|
package/337.min.js.LICENSE.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tsParticles Image Shape v4.0.0-alpha.8 by Matteo Bruni */
|
package/413.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 413.min.js.LICENSE.txt */
|
|
2
|
-
(this.webpackChunk_tsparticles_shape_image=this.webpackChunk_tsparticles_shape_image||[]).push([[413],{413(e,r,t){t.d(r,{d:()=>i,downloadSvgImage:()=>s,loadImage:()=>n});var a=t(303);const o=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d.]+%?\))|currentcolor/gi;async function n(e){return new Promise((r=>{e.loading=!0;const t=new Image;e.element=t,t.addEventListener("load",(()=>{e.loading=!1,r()})),t.addEventListener("error",(()=>{e.element=void 0,e.error=!0,e.loading=!1,(0,a.getLogger)().error(`Error loading image: ${e.source}`),r()})),t.src=e.source}))}async function s(e){if("svg"!==e.type)return void await n(e);e.loading=!0;const r=await fetch(e.source);r.ok?e.svgData=await r.text():((0,a.getLogger)().error("Image not found"),e.error=!0),e.loading=!1}function i(e,r,t,s,i=!1){const c=function(e,r,t,n=!1){const{svgData:s}=e;if(!s)return"";const i=(0,a.getStyleFromHsl)(r,n,t);if(s.includes("fill"))return s.replace(o,(()=>i));const c=s.indexOf(">");return`${s.substring(0,c)} fill="${i}"${s.substring(c)}`}(e,t,s.opacity?.value??1,i),l={color:t,gif:r.gif,data:{...e,svgData:c},loaded:!1,ratio:r.width/r.height,replaceColor:r.replaceColor,source:r.src};return new Promise((r=>{const t=new Blob([c],{type:"image/svg+xml"}),a=URL.createObjectURL(t),o=new Image;o.addEventListener("load",(()=>{l.loaded=!0,l.element=o,r(l),URL.revokeObjectURL(a)}));o.addEventListener("error",(()=>{(async()=>{URL.revokeObjectURL(a);const t={...e,error:!1,loading:!0};await n(t),l.loaded=!0,l.element=t.element,r(l)})()})),o.src=a}))}}}]);
|
package/413.min.js.LICENSE.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tsParticles Image Shape v4.0.0-alpha.8 by Matteo Bruni */
|
package/72.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 72.min.js.LICENSE.txt */
|
|
2
|
-
(this.webpackChunk_tsparticles_shape_image=this.webpackChunk_tsparticles_shape_image||[]).push([[72],{72(e,i,s){s.d(i,{ImagePreloaderPlugin:()=>t});var r=s(303);class o{constructor(){this.src="",this.gif=!1}load(e){(0,r.isNull)(e)||(void 0!==e.gif&&(this.gif=e.gif),void 0!==e.height&&(this.height=e.height),void 0!==e.name&&(this.name=e.name),void 0!==e.replaceColor&&(this.replaceColor=e.replaceColor),void 0!==e.src&&(this.src=e.src),void 0!==e.width&&(this.width=e.width))}}class t{constructor(){this.id="imagePreloader"}async getPlugin(){return await Promise.resolve(),{}}loadOptions(e,i,s){if(!s?.preload)return;i.preload??=[];const r=i.preload;for(const e of s.preload){const i=r.find((i=>i.name===e.name||i.src===e.src));if(i)i.load(e);else{const i=new o;i.load(e),r.push(i)}}}needsPlugin(){return!0}}}}]);
|
package/72.min.js.LICENSE.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tsParticles Image Shape v4.0.0-alpha.8 by Matteo Bruni */
|
package/dist_browser_Utils_js.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Author : Matteo Bruni
|
|
3
|
-
* MIT license: https://opensource.org/licenses/MIT
|
|
4
|
-
* Demo / Generator : https://particles.js.org/
|
|
5
|
-
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
|
-
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-alpha.8
|
|
8
|
-
*/
|
|
9
|
-
"use strict";
|
|
10
|
-
/*
|
|
11
|
-
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
|
12
|
-
* This devtool is neither made for production nor for readable output files.
|
|
13
|
-
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
|
14
|
-
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
15
|
-
* or disable the default devtool with "devtool: false".
|
|
16
|
-
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
17
|
-
*/
|
|
18
|
-
(this["webpackChunk_tsparticles_shape_image"] = this["webpackChunk_tsparticles_shape_image"] || []).push([["dist_browser_Utils_js"],{
|
|
19
|
-
|
|
20
|
-
/***/ "./dist/browser/Utils.js"
|
|
21
|
-
/*!*******************************!*\
|
|
22
|
-
!*** ./dist/browser/Utils.js ***!
|
|
23
|
-
\*******************************/
|
|
24
|
-
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
25
|
-
|
|
26
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ downloadSvgImage: () => (/* binding */ downloadSvgImage),\n/* harmony export */ loadImage: () => (/* binding */ loadImage),\n/* harmony export */ replaceImageColor: () => (/* binding */ replaceImageColor)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n\nconst stringStart = 0,\n defaultOpacity = 1;\nconst currentColorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d.]+%?\\))|currentcolor/gi;\nfunction replaceColorSvg(imageShape, color, opacity, hdr = false) {\n const {\n svgData\n } = imageShape;\n if (!svgData) {\n return \"\";\n }\n const colorStyle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromHsl)(color, hdr, opacity);\n if (svgData.includes(\"fill\")) {\n return svgData.replace(currentColorRegex, () => colorStyle);\n }\n const preFillIndex = svgData.indexOf(\">\");\n return `${svgData.substring(stringStart, preFillIndex)} fill=\"${colorStyle}\"${svgData.substring(preFillIndex)}`;\n}\nasync function loadImage(image) {\n return new Promise(resolve => {\n image.loading = true;\n const img = new Image();\n image.element = img;\n img.addEventListener(\"load\", () => {\n image.loading = false;\n resolve();\n });\n img.addEventListener(\"error\", () => {\n image.element = undefined;\n image.error = true;\n image.loading = false;\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(`Error loading image: ${image.source}`);\n resolve();\n });\n img.src = image.source;\n });\n}\nasync function downloadSvgImage(image) {\n if (image.type !== \"svg\") {\n await loadImage(image);\n return;\n }\n image.loading = true;\n const response = await fetch(image.source);\n if (!response.ok) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(\"Image not found\");\n image.error = true;\n } else {\n image.svgData = await response.text();\n }\n image.loading = false;\n}\nfunction replaceImageColor(image, imageData, color, particle, hdr = false) {\n const svgColoredData = replaceColorSvg(image, color, particle.opacity?.value ?? defaultOpacity, hdr),\n imageRes = {\n color,\n gif: imageData.gif,\n data: {\n ...image,\n svgData: svgColoredData\n },\n loaded: false,\n ratio: imageData.width / imageData.height,\n replaceColor: imageData.replaceColor,\n source: imageData.src\n };\n return new Promise(resolve => {\n const svg = new Blob([svgColoredData], {\n type: \"image/svg+xml\"\n }),\n url = URL.createObjectURL(svg),\n img = new Image();\n img.addEventListener(\"load\", () => {\n imageRes.loaded = true;\n imageRes.element = img;\n resolve(imageRes);\n URL.revokeObjectURL(url);\n });\n const errorHandler = async () => {\n URL.revokeObjectURL(url);\n const img2 = {\n ...image,\n error: false,\n loading: true\n };\n await loadImage(img2);\n imageRes.loaded = true;\n imageRes.element = img2.element;\n resolve(imageRes);\n };\n img.addEventListener(\"error\", () => void errorHandler());\n img.src = url;\n });\n}\n\n//# sourceURL=webpack://@tsparticles/shape-image/./dist/browser/Utils.js?\n}");
|
|
27
|
-
|
|
28
|
-
/***/ }
|
|
29
|
-
|
|
30
|
-
}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tsParticles Image Shape v4.0.0-alpha.8 by Matteo Bruni */
|