import { executeOnSingleOrMultiple, itemFromSingleOrMultiple } from "tsparticles-engine"; import { AbsorberInstance } from "./AbsorberInstance"; export class Absorbers { constructor(container) { this.container = container; this.array = []; this.absorbers = []; this.interactivityAbsorbers = []; container.getAbsorber = (idxOrName) => idxOrName === undefined || typeof idxOrName === "number" ? this.array[idxOrName || 0] : this.array.find((t) => t.name === idxOrName); container.addAbsorber = (options, position) => this.addAbsorber(options, position); } addAbsorber(options, position) { const absorber = new AbsorberInstance(this, this.container, options, position); this.array.push(absorber); return absorber; } draw(context) { for (const absorber of this.array) { absorber.draw(context); } } handleClickMode(mode) { const absorberOptions = this.absorbers, modeAbsorbers = this.interactivityAbsorbers; if (mode === "absorber") { const absorbersModeOptions = itemFromSingleOrMultiple(modeAbsorbers), absorbersOptions = absorbersModeOptions !== null && absorbersModeOptions !== void 0 ? absorbersModeOptions : itemFromSingleOrMultiple(absorberOptions), aPosition = this.container.interactivity.mouse.clickPosition; this.addAbsorber(absorbersOptions, aPosition); } } async init() { this.absorbers = this.container.actualOptions.absorbers; this.interactivityAbsorbers = this.container.actualOptions.interactivity.modes.absorbers; executeOnSingleOrMultiple(this.absorbers, (absorber) => { this.addAbsorber(absorber); }); } particleUpdate(particle) { for (const absorber of this.array) { absorber.attract(particle); if (particle.destroyed) { break; } } } removeAbsorber(absorber) { const index = this.array.indexOf(absorber); if (index >= 0) { this.array.splice(index, 1); } } resize() { for (const absorber of this.array) { absorber.resize(); } } stop() { this.array = []; } }