{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "use-mouse-position",
  "title": "useMousePosition",
  "description": "A hook to track the mouse position",
  "files": [
    {
      "path": "registry/hooks/use-mouse-position.ts",
      "content": "'use client'\n\nimport * as React from 'react'\n\nexport function useMousePosition<T extends Element>(element?: T) {\n  const [position, setPosition] = React.useState({ x: 0, y: 0 })\n\n  React.useEffect(() => {\n    const targetElement = element ?? document\n    const abortController = new AbortController()\n\n    targetElement.addEventListener('mousemove', (event) => {\n      const mouseEvent = event as MouseEvent\n      const rect = (mouseEvent.currentTarget as HTMLElement)?.getBoundingClientRect()\n      const x = Math.max(0, Math.round(mouseEvent.pageX - rect.left - window.scrollX))\n      const y = Math.max(0, Math.round(mouseEvent.pageY - rect.top - window.scrollY))\n\n      setPosition({ x, y })\n    }, { signal: abortController.signal })\n\n    return () => {\n      abortController.abort()\n    }\n  }, [element])\n\n  return position\n}\n",
      "type": "registry:hook",
      "target": "hookas/use-mouse-position.ts"
    }
  ],
  "type": "registry:hook"
}