import type { CanvasParticlesCanvas, Particle, ContextColor } from './types'; import type { CanvasParticlesOptions, CanvasParticlesOptionsInput } from './types/options'; export default class CanvasParticles { #private; /** Version of the library, injected via Rollup replace plugin. */ static readonly version: string; private static readonly MAX_DT; private static readonly BASE_DT; /** Defines mouse interaction types with the particles */ static readonly interactionType: Readonly<{ NONE: 0; SHIFT: 1; MOVE: 2; }>; /** Defines how the particles are auto-generated */ static readonly generationType: Readonly<{ OFF: 0; NEW: 1; MATCH: 2; }>; /** Observes when canvas elements enter or leave the viewport to start/stop animation */ static readonly canvasIntersectionObserver: IntersectionObserver; /** Observes when canvas elements change size */ static readonly canvasResizeObserver: ResizeObserver; static instances: Set; canvas: CanvasParticlesCanvas; private ctx; enableAnimating: boolean; isAnimating: boolean; private lastAnimationFrame; particles: Particle[]; hasManualParticles: boolean; private clientX; private clientY; mouseX: number; mouseY: number; dpr: number; width: number; height: number; private offX; private offY; option: CanvasParticlesOptions; color: ContextColor; /** * Initialize a CanvasParticles instance * @param selector - Canvas element or CSS selector * @param options - Configuration object for particles (https://github.com/Khoeckman/canvasParticles?tab=readme-ov-file#options) */ constructor(selector: string | HTMLCanvasElement, options?: CanvasParticlesOptionsInput); updateCanvasRect(): void; handleMouseMove(event: MouseEvent): void; handleScroll(): void; updateMousePos(): void; /** Update the canvas bounding rectangle (optional), resize the canvas and update particles accordingly */ resizeCanvas(updateRect?: boolean): void; /** Remove existing particles and generate new ones */ newParticles({ keepAuto, keepManual }?: { keepAuto?: boolean | undefined; keepManual?: boolean | undefined; }): void; /** Adjust particle array length to match `option.particles.ppm` */ matchParticleCount({ updateBounds }?: { updateBounds?: boolean; }): void; /** Create a new particle with optional parameters */ createParticle(posX: number, posY: number, dir: number, speed: number, size: number, isManual?: boolean): void; updateParticles(): void; /** Start the particle animation if it was not running before */ start({ auto }?: { auto?: boolean; }): CanvasParticles; /** Stops the particle animation and optionally clears the canvas */ stop({ auto, clear }?: { auto?: boolean; clear?: boolean; }): boolean; /** Gracefully destroy the instance and remove the canvas element */ destroy(): void; /** Set and validate options (https://github.com/Khoeckman/canvasParticles?tab=readme-ov-file#options) */ set options(options: CanvasParticlesOptionsInput); get options(): CanvasParticlesOptions; /** Sets the canvas background */ setBackground(background: CanvasParticlesOptionsInput['background']): void; /** Transform the distance multiplier (float) to absolute distance (px) */ setMouseConnectDistMult(connectDistMult: number | undefined): void; /** Format particle color and opacity */ setParticleColor(color: string | CanvasGradient | CanvasPattern): void; }