(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "tsparticles-engine", "./AbsorberInstance"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Absorbers = void 0; const tsparticles_engine_1 = require("tsparticles-engine"); const AbsorberInstance_1 = require("./AbsorberInstance"); 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_1.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 = (0, tsparticles_engine_1.itemFromSingleOrMultiple)(modeAbsorbers), absorbersOptions = absorbersModeOptions !== null && absorbersModeOptions !== void 0 ? absorbersModeOptions : (0, tsparticles_engine_1.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; (0, tsparticles_engine_1.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 = []; } } exports.Absorbers = Absorbers; });