Files
fn_registry/frontend/functions/ui/use_animated_canvas.md
T
egutierrez 5f4f1f7508 docs: params/output semántico en 506 funciones para composabilidad
Añade campos params y output al frontmatter YAML de las 506 funciones del registry.
Cada parámetro tiene descripción semántica (qué representa, unidades, rango típico)
y cada función describe qué produce su output. Permite a agentes razonar sobre
cadenas de composición (ej: prices → log_return → sharpe_ratio) sin leer código.
2026-04-05 18:45:16 +02:00

1.8 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path, props, emits, has_state, framework, variant
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path props emits has_state framework variant
use_animated_canvas component ts ui 1.0.0 impure useAnimatedCanvas(options: AnimatedCanvasOptions): AnimatedCanvasResult Hook React para canvas animado a N fps via requestAnimationFrame. Maneja DPR, resize, throttling, y contador de FPS real.
canvas
animation
fps
requestAnimationFrame
hook
realtime
component
ui
false
react
name desc
options Configuración: fps (target), draw (callback de renderizado), opcionalmente DPR
Hook que retorna canvasRef y renderFpsRef para renderizado animado a N fps false
frontend/functions/ui/use_animated_canvas.tsx
name type required description
fps number false Target FPS (default 60)
name type required description
draw (ctx: CanvasRenderingContext2D, width: number, height: number, frameCount: number) => void true Callback de renderizado
true react
default

Ejemplo

const { canvasRef, renderFpsRef } = useAnimatedCanvas({
  fps: 100,
  draw: (ctx, w, h) => {
    // Dibujar lo que sea a 100fps
    ctx.fillStyle = '#3b82f6'
    ctx.fillRect(0, 0, w * Math.random(), h)
  },
})

return <canvas ref={canvasRef} style={{ width: '100%', height: 300 }} />

Notas

  • DPR automático: escala el canvas al devicePixelRatio de la pantalla
  • Resize automático: detecta cambios de tamaño via getBoundingClientRect
  • Throttle configurable: rAF corre a ~144fps nativo, el hook filtra a N fps
  • FPS real: renderFpsRef.current tiene los FPS medidos (no el target)
  • drawRef pattern: actualiza el callback sin re-crear el loop de animación