@tsparticles/plugin-canvas-mask
Version:
tsParticles canvas mask plugin
2 lines (1 loc) • 7.28 kB
JavaScript
!function(t){t.__tsParticlesInternals=t.__tsParticlesInternals||{},t.__tsParticlesInternals.bundles=t.__tsParticlesInternals.bundles||{},t.__tsParticlesInternals.effects=t.__tsParticlesInternals.effects||{},t.__tsParticlesInternals.engine=t.__tsParticlesInternals.engine||{},t.__tsParticlesInternals.interactions=t.__tsParticlesInternals.interactions||{},t.__tsParticlesInternals.palettes=t.__tsParticlesInternals.palettes||{},t.__tsParticlesInternals.paths=t.__tsParticlesInternals.paths||{},t.__tsParticlesInternals.plugins=t.__tsParticlesInternals.plugins||{},t.__tsParticlesInternals.plugins=t.__tsParticlesInternals.plugins||{},t.__tsParticlesInternals.plugins.emittersShapes=t.__tsParticlesInternals.plugins.emittersShapes||{},t.__tsParticlesInternals.presets=t.__tsParticlesInternals.presets||{},t.__tsParticlesInternals.shapes=t.__tsParticlesInternals.shapes||{},t.__tsParticlesInternals.updaters=t.__tsParticlesInternals.updaters||{},t.__tsParticlesInternals.utils=t.__tsParticlesInternals.utils||{},t.__tsParticlesInternals.canvas=t.__tsParticlesInternals.canvas||{},t.__tsParticlesInternals.canvas=t.__tsParticlesInternals.canvas||{},t.__tsParticlesInternals.canvas.utils=t.__tsParticlesInternals.canvas.utils||{},t.__tsParticlesInternals.path=t.__tsParticlesInternals.path||{},t.__tsParticlesInternals.path=t.__tsParticlesInternals.path||{},t.__tsParticlesInternals.path.utils=t.__tsParticlesInternals.path.utils||{};var s="undefined"!=typeof Proxy?function(t){return new Proxy(t,{get:function(t,s){return s in t||(t[s]={}),t[s]}})}:function(t){return t};t.__tsParticlesInternals.bundles=s(t.__tsParticlesInternals.bundles),t.__tsParticlesInternals.effects=s(t.__tsParticlesInternals.effects),t.__tsParticlesInternals.interactions=s(t.__tsParticlesInternals.interactions),t.__tsParticlesInternals.palettes=s(t.__tsParticlesInternals.palettes),t.__tsParticlesInternals.paths=s(t.__tsParticlesInternals.paths),t.__tsParticlesInternals.plugins=s(t.__tsParticlesInternals.plugins),t.__tsParticlesInternals.plugins.emittersShapes=s(t.__tsParticlesInternals.plugins.emittersShapes),t.__tsParticlesInternals.presets=s(t.__tsParticlesInternals.presets),t.__tsParticlesInternals.shapes=s(t.__tsParticlesInternals.shapes),t.__tsParticlesInternals.updaters=s(t.__tsParticlesInternals.updaters),t.__tsParticlesInternals.utils=s(t.__tsParticlesInternals.utils),t.__tsParticlesInternals.canvas=s(t.__tsParticlesInternals.canvas),t.__tsParticlesInternals.path=s(t.__tsParticlesInternals.path),t.tsparticlesInternalExports=t.tsparticlesInternalExports||{}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:this),function(t,s){"object"==typeof exports&&"undefined"!=typeof module?s(exports,require("@tsparticles/engine"),require("@tsparticles/canvas-utils")):"function"==typeof define&&define.amd?define(["exports","@tsparticles/engine","@tsparticles/canvas-utils"],s):s(((t="undefined"!=typeof globalThis?globalThis:t||self).__tsParticlesInternals=t.__tsParticlesInternals||{},t.__tsParticlesInternals.plugins=t.__tsParticlesInternals.plugins||{},t.__tsParticlesInternals.plugins.canvasMask=t.__tsParticlesInternals.plugins.canvasMask||{}),t.__tsParticlesInternals.engine,t.__tsParticlesInternals.canvas.utils)}(this,function(t,s,e){"use strict";class a{color=!0;opacity=!1;load(t){s.isNull(t)||(s.loadProperty(this,"color",t.color),s.loadProperty(this,"opacity",t.opacity))}}class n{offset=4;filter=t=>t.a>0;load(t){if(!s.isNull(t)){if(void 0!==t.filter)if(s.isString(t.filter)){if(t.filter in globalThis){const e=globalThis[t.filter];s.isFunction(e)&&(this.filter=e)}}else this.filter=t.filter;s.loadProperty(this,"offset",t.offset)}}}class l{src="";load(t){s.isNull(t)||s.loadProperty(this,"src",t.src)}}class i{family="sans-serif";size=100;style="";variant="";weight="";load(t){s.isNull(t)||(s.loadProperty(this,"family",t.family),s.loadProperty(this,"size",t.size),s.loadProperty(this,"style",t.style),s.loadProperty(this,"variant",t.variant),s.loadProperty(this,"weight",t.weight))}}class r{separator="\n";spacing=10;load(t){s.isNull(t)||(s.loadProperty(this,"separator",t.separator),s.loadProperty(this,"spacing",t.spacing))}}class o{color="#000000";fill=!0;font=new i;lines=new r;text="";load(t){s.isNull(t)||(s.loadProperty(this,"color",t.color),s.loadProperty(this,"fill",t.fill),this.font.load(t.font),this.lines.load(t.lines),s.loadProperty(this,"text",t.text))}}class c{element;enable=!1;image;override=new a;pixels=new n;position;scale=1;selector;text;constructor(){this.position={x:50,y:50}}load(t){s.isNull(t)||(void 0!==t.element&&t.element instanceof HTMLCanvasElement&&(this.element=t.element),s.loadProperty(this,"enable",t.enable),t.image&&(this.image??=new l,this.image.load(t.image)),this.pixels.load(t.pixels),t.position&&(this.position={x:t.position.x??this.position.x,y:t.position.y??this.position.y}),this.override.load(t.override),s.loadProperty(this,"scale",t.scale),s.loadProperty(this,"selector",t.selector),t.text&&(this.text??=new o,this.text.load(t.text)))}}class _{id="canvas-mask";async getPlugin(t){const{CanvasMaskPluginInstance:s}=await Promise.resolve().then(function(){return d});return new s(t)}loadOptions(t,s,e){if(!this.needsPlugin(s)&&!this.needsPlugin(e))return;let a=s.canvasMask;void 0===a?.load&&(s.canvasMask=a=new c),a.load(e?.canvasMask)}needsPlugin(t){return t?.canvasMask?.enable??!1}}async function p(t){t.checkVersion("4.3.2"),await t.pluginManager.register(t=>{t.pluginManager.addPlugin(new _)})}const P=globalThis;function u(t,e,a,n,l,i){const{height:r,width:o}=e,c=r*o,_=function(t){const e=1,a=0;for(let n=t.length-e;n>=a;n--){const e=Math.floor(s.getRandom()*n),a=t[n],l=t[e];l!==a&&(void 0!==l&&void 0!==a&&(t[n]=l,t[e]=a))}return t}(h(c)),p=Math.min(c,t.actualOptions.particles.number.value),P=t.canvas.size;let u=0;const d=P.width*a.x/s.percentDenominator-o*n*s.half,f=P.height*a.y/s.percentDenominator-r*n*s.half;for(;u<p&&_.length;){const s=0,a=_.pop()??s,r={x:a%o,y:Math.floor(a/o)},c=e.pixels[r.y];if(!c)continue;const p=c[r.x];if(!p)continue;if(!i(p))continue;const P={x:r.x*n+d,y:r.y*n+f},h={};l.color&&(h.paint={fill:{color:{value:p},enable:!0}}),l.opacity&&(h.opacity={value:p.a}),t.particles.addParticle(P,h),u++}}P.__tsParticlesInternals=P.__tsParticlesInternals??{},P.loadCanvasMaskPlugin=p;const h=t=>[...Array(t).keys()];var d=Object.freeze({__proto__:null,CanvasMaskPluginInstance:class{#t;constructor(t){this.#t=t}async init(){const t=this.#t,a=t.actualOptions.canvasMask;if(!a?.enable)return;let n={pixels:[],height:0,width:0};const l=a.pixels.offset;if(a.image){const s=a.image.src;if(!s)return;n=await e.getImageData(s,l,t.canvas.render.settings)}else if(a.text){const i=a.text,r=e.getTextData(i,l,i.fill,t.canvas.render.settings);if(s.isNull(r))return;n=r}else if(a.element??a.selector){const i=a.element??(a.selector&&s.safeDocument().querySelector(a.selector));if(!i)return;const r=i.getContext("2d",t.canvas.render.settings);if(!r)return;n=e.getCanvasImageData(r,i,l)}u(t,n,a.position,a.scale,a.override,a.pixels.filter)}}});t.loadCanvasMaskPlugin=p}),Object.assign(globalThis.window||globalThis,{loadCanvasMaskPlugin:(globalThis.__tsParticlesInternals.plugins.canvasMask||{}).loadCanvasMaskPlugin}),delete(globalThis.window||globalThis).tsparticlesInternalExports;