@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.
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.0.0-beta.12");
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);
};
particles.init = async () => {
await initPlugins(tsParticles);
};
particles.version = "4.0.0-beta.12";
globalThis.particles = particles;