@tsparticles/shape-emoji
Version:
tsParticles emoji shape
2 lines (1 loc) • 5.1 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.shapes=t.__tsParticlesInternals.shapes||{},t.__tsParticlesInternals.shapes.emoji=t.__tsParticlesInternals.shapes.emoji||{}),t.__tsParticlesInternals.engine,t.__tsParticlesInternals.canvas.utils)}(this,function(t,s,e){"use strict";const a=["emoji"];const n='"Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif';class l{#t=new Map;destroy(){for(const[t,s]of this.#t)s instanceof ImageBitmap&&s.close(),this.#t.delete(t)}draw(t){const e=t.particle.emojiDataKey;if(!e)return;const a=this.#t.get(e);a&&function(t,e){const{context:a,opacity:n}=t,l=a.globalAlpha,r=e.width,i=r*s.half;a.globalAlpha=n,a.drawImage(e,-i,-i,r,r),a.globalAlpha=l}(t,a)}async init(t){const l=t.actualOptions.particles.shape;if(!a.some(t=>s.isInArray(t,l.type)))return;const r=[e.loadFont(n)],i=a.map(t=>l.options[t])[0];s.executeOnSingleOrMultiple(i,t=>{t.font&&r.push(e.loadFont(t.font))}),await Promise.all(r)}particleDestroy(t){t.emojiDataKey=void 0}particleInit(t,e){const a=e.shapeData;if(!a.value)return;const l=s.itemFromSingleOrMultiple(a.value,e.randomIndexData);if(!l)return;const r="string"==typeof l?{font:a.font??n,padding:a.padding??0,value:l}:{font:n,padding:0,...a,...l},i=r.font,_=r.value,c=`${_}_${i}`;if(this.#t.has(c))return void(e.emojiDataKey=c);const o=r.padding*s.double,p=s.getRangeMax(e.size.value),I=p+o,P=I*s.double,u=new OffscreenCanvas(P,P),h=u.getContext("2d",t.canvas.render.settings);if(!h)return;h.font=`400 ${(p*s.double).toString()}px ${i}`,h.textBaseline="middle",h.textAlign="center",h.fillText(_,I,I);const d=u instanceof HTMLCanvasElement?u:u.transferToImageBitmap();this.#t.set(c,d),e.emojiDataKey=c}}async function r(t){t.checkVersion("4.1.0"),await t.pluginManager.register(t=>{t.pluginManager.addShape(a,()=>Promise.resolve(new l))})}const i=globalThis;i.__tsParticlesInternals=i.__tsParticlesInternals??{},i.loadEmojiShape=r,t.loadEmojiShape=r}),Object.assign(globalThis.window||globalThis,{loadEmojiShape:(globalThis.__tsParticlesInternals.shapes.emoji||{}).loadEmojiShape}),delete(globalThis.window||globalThis).tsparticlesInternalExports;