@tsparticles/shape-text
Version:
tsParticles text shape
2 lines (1 loc) • 5.07 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.text=t.__tsParticlesInternals.shapes.text||{}),t.__tsParticlesInternals.engine,t.__tsParticlesInternals.canvas.utils)}(this,function(t,s,e){"use strict";const n=["text","character","char","multiline-text"];function a(t,e,n,a,l,r){const i={x:-e.length*n*s.half,y:n*s.half+a*n};l&&t.fillText(e,i.x,i.y),r&&t.strokeText(e,i.x,i.y)}class l{draw(t){!function(t){const{context:e,particle:n,fill:l,stroke:r,radius:i,opacity:_}=t,c=n.shapeData;if(!c)return;const p=c.value;if(n.textLines??=s.itemFromSingleOrMultiple(p,n.randomIndexData)?.split("\n")??[],n.maxTextLength??=n.textLines.length?Math.max(...n.textLines.map(t=>t.length)):n.textLines[0]?.length??0,!n.textLines.length||!n.maxTextLength)return;const o=n.textLines,I=c.style??"",P=c.weight??"400",h=c.font??"Verdana",u=Math.round(i)*s.double/(o.length*n.maxTextLength);e.font=`${I} ${P} ${u.toString()}px "${h}"`;const g=e.globalAlpha;e.globalAlpha=_;for(let t=0;t<o.length;t++){const s=o[t];s&&a(e,s,u,t,l,r)}e.globalAlpha=g}(t)}async init(t){const a=t.actualOptions;if(n.find(t=>s.isInArray(t,a.particles.shape.type))){const t=n.map(t=>a.particles.shape.options[t]).find(t=>!!t),l=[];s.executeOnSingleOrMultiple(t,t=>{l.push(e.loadFont(t.font,t.weight))}),await Promise.all(l)}}particleInit(t,e){if(!e.shape||!n.includes(e.shape))return;const a=e.shapeData;if(void 0===a)return;const l=a.value;l&&(e.textLines=s.itemFromSingleOrMultiple(l,e.randomIndexData)?.split("\n")??[],e.maxTextLength=e.textLines.length?Math.max(...e.textLines.map(t=>t.length)):e.textLines[0]?.length??0)}}async function r(t){t.checkVersion("4.1.0"),await t.pluginManager.register(t=>{t.pluginManager.addShape(n,()=>Promise.resolve(new l))})}const i=globalThis;i.__tsParticlesInternals=i.__tsParticlesInternals??{},i.loadTextShape=r,t.loadTextShape=r}),Object.assign(globalThis.window||globalThis,{loadTextShape:(globalThis.__tsParticlesInternals.shapes.text||{}).loadTextShape}),delete(globalThis.window||globalThis).tsparticlesInternalExports;