{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "use-in-view",
  "title": "useInView",
  "description": "Reports whether an element is on screen, for pausing render loops.",
  "files": [
    {
      "path": "registry/spotcheck/hooks/use-in-view.ts",
      "content": "\"use client\"\n\nimport * as React from \"react\"\n\nexport function useInView<T extends Element>(ref: React.RefObject<T | null>, rootMargin = \"0px\") {\n  const [inView, setInView] = React.useState(false)\n\n  React.useEffect(() => {\n    const element = ref.current\n    if (!element) return\n    const observer = new IntersectionObserver(\n      (entries) => setInView(entries.some((entry) => entry.isIntersecting)),\n      { rootMargin },\n    )\n    observer.observe(element)\n    return () => observer.disconnect()\n  }, [ref, rootMargin])\n\n  return inView\n}\n",
      "type": "registry:hook"
    }
  ],
  "type": "registry:hook"
}