UNPKG

tsparticles

Version:

Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.

78 lines (77 loc) 3.33 kB
import { Absorbers } from "./Absorbers"; import { AbsorberClickMode } from "./Enums"; import { Absorber } from "./Options/Classes/Absorber"; import { isInArray } from "../../Utils"; class Plugin { constructor() { this.id = "absorbers"; } getPlugin(container) { return new Absorbers(container); } needsPlugin(options) { var _a, _b, _c; if (options === undefined) { return false; } const absorbers = options.absorbers; let loadAbsorbers = false; if (absorbers instanceof Array) { if (absorbers.length) { loadAbsorbers = true; } } else if (absorbers !== undefined) { loadAbsorbers = true; } else if (((_c = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.onClick) === null || _c === void 0 ? void 0 : _c.mode) && isInArray(AbsorberClickMode.absorber, options.interactivity.events.onClick.mode)) { loadAbsorbers = true; } return loadAbsorbers; } loadOptions(options, source) { var _a, _b; if (!this.needsPlugin(options) && !this.needsPlugin(source)) { return; } const optionsCast = options; if (source === null || source === void 0 ? void 0 : source.absorbers) { if ((source === null || source === void 0 ? void 0 : source.absorbers) instanceof Array) { optionsCast.absorbers = source === null || source === void 0 ? void 0 : source.absorbers.map((s) => { const tmp = new Absorber(); tmp.load(s); return tmp; }); } else { let absorberOptions = optionsCast.absorbers; if ((absorberOptions === null || absorberOptions === void 0 ? void 0 : absorberOptions.load) === undefined) { optionsCast.absorbers = absorberOptions = new Absorber(); } absorberOptions.load(source === null || source === void 0 ? void 0 : source.absorbers); } } const interactivityAbsorbers = (_b = (_a = source === null || source === void 0 ? void 0 : source.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.absorbers; if (interactivityAbsorbers) { if (interactivityAbsorbers instanceof Array) { optionsCast.interactivity.modes.absorbers = interactivityAbsorbers.map((s) => { const tmp = new Absorber(); tmp.load(s); return tmp; }); } else { let absorberOptions = optionsCast.interactivity.modes.absorbers; if ((absorberOptions === null || absorberOptions === void 0 ? void 0 : absorberOptions.load) === undefined) { optionsCast.interactivity.modes.absorbers = absorberOptions = new Absorber(); } absorberOptions.load(interactivityAbsorbers); } } } } export function loadAbsorbersPlugin(tsParticles) { const plugin = new Plugin(); tsParticles.addPlugin(plugin); }