@tsparticles/particles
Version:
Minimal tsParticles particles bundle — lightweight particle engine without confetti or fireworks extras. Perfect for pure particle backgrounds. Ready to use components available for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, In
54 lines (53 loc) • 1.84 kB
JavaScript
import { isString, tsParticles } from "@tsparticles/engine";
import { getParticlesInstance } from "./utils.js";
import { loadBasic } from "@tsparticles/basic";
import { loadInteractivityPlugin } from "@tsparticles/plugin-interactivity";
import { loadParticlesCollisionsInteraction } from "@tsparticles/interaction-particles-collisions";
import { loadParticlesLinksInteraction } from "@tsparticles/interaction-particles-links";
let initPromise = null;
async function doInitPlugins(engine) {
engine.checkVersion("4.2.1");
await engine.pluginManager.register(async (e) => {
const 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 ?? undefined);
};
particles.init = async () => {
await initPlugins(tsParticles);
};
particles.version = "4.2.1";
globalThis.particles = particles;