UNPKG

@tsparticles/shape-text

Version:
39 lines (38 loc) 1.5 kB
import { executeOnSingleOrMultiple, isInArray, itemFromSingleOrMultiple, } from "@tsparticles/engine"; import { drawText, validTypes } from "./Utils.js"; import { loadFont } from "@tsparticles/canvas-utils"; const firstIndex = 0, minLength = 0; export class TextDrawer { draw(data) { drawText(data); } async init(container) { const options = container.actualOptions; if (validTypes.find(t => isInArray(t, options.particles.shape.type))) { const shapeOptions = validTypes .map(t => options.particles.shape.options[t]) .find(t => !!t), promises = []; executeOnSingleOrMultiple(shapeOptions, shape => { promises.push(loadFont(shape.font, shape.weight)); }); await Promise.all(promises); } } particleInit(_container, particle) { if (!particle.shape || !validTypes.includes(particle.shape)) { return; } const character = particle.shapeData; if (character === undefined) { return; } const textData = character.value; if (!textData) { return; } particle.textLines = itemFromSingleOrMultiple(textData, particle.randomIndexData)?.split("\n") ?? []; particle.maxTextLength = particle.textLines.length ? Math.max(...particle.textLines.map(t => t.length)) : (particle.textLines[firstIndex]?.length ?? minLength); } }