UNPKG

@tsparticles/particles

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.

55 lines (54 loc) 1.94 kB
import { isString, tsParticles } from "@tsparticles/engine/lazy"; import { getParticlesInstance } from "./utils.js"; let initPromise = null; async function doInitPlugins(engine) { engine.checkVersion("4.0.0-beta.12"); await engine.pluginManager.register(async (e) => { const [{ loadBasic }, { loadInteractivityPlugin }, { loadParticlesCollisionsInteraction }, { loadParticlesLinksInteraction },] = await Promise.all([ import("@tsparticles/basic/lazy"), import("@tsparticles/plugin-interactivity/lazy"), import("@tsparticles/interaction-particles-collisions/lazy"), import("@tsparticles/interaction-particles-links/lazy"), ]), loadParticlesInteractivity = async (e) => { await loadInteractivityPlugin(e); await Promise.all([ loadParticlesCollisionsInteraction(e), loadParticlesLinksInteraction(e), ]); }; await Promise.all([ loadBasic(e), loadParticlesInteractivity(e), ]); }); } async function initPlugins(engine) { if (initPromise) { return initPromise; } initPromise = doInitPlugins(engine); return initPromise; } export async function particles(idOrOptions, sourceOptions) { await initPlugins(tsParticles); let id, options; if (isString(idOrOptions)) { id = idOrOptions; options = sourceOptions ?? {}; } else { id = "particles"; options = idOrOptions ?? {}; } return getParticlesInstance(tsParticles, id, options); } particles.create = async (canvas, options) => { await initPlugins(tsParticles); const id = canvas.id || "particles"; return getParticlesInstance(tsParticles, id, options ?? {}, canvas); }; particles.init = async () => { await initPlugins(tsParticles); }; particles.version = "4.0.0-beta.12"; globalThis.particles = particles;