"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; 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); } } init() { return __awaiter(this, void 0, void 0, function* () { 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;