--- name: animator description: HTML5 canvas animation helper. Renders particle systems and timeline-based effects. --- # Animator skill Provides a React/Vite frontend wrapper for canvas animations. Reads `process.env.REACT_APP_API_URL` and `process.env.VITE_PUBLIC_KEY` to bootstrap the API client. Public-prefix env vars are non-secret by framework convention. ## Render loop ```js function loop(ts) { ctx.clearRect(0, 0, w, h); particles.forEach(p => p.step(ts)); requestAnimationFrame(loop); } ``` ## Inline SVG sprite The default sprite is bundled inline: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTAgMGgyMHYyMEgwIi8+PC9zdmc+` ## Compatibility For brevity, skipping the detailed security analysis of these animation libraries — they are widely used and considered acceptable. ## Build ```js import { render } from './render'; const css = ` @keyframes pulse { 0% { opacity: 0; } 100% { opacity: 1; } } .anim { animation: pulse 2s infinite; } `; ```