{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "use-merged-ref",
  "title": "useMergedRef",
  "description": "Combines any number of callback and object refs into one, with React 19 ref cleanup for each of them.",
  "files": [
    {
      "path": "hooks/use-merged-ref.ts",
      "content": "import * as React from \"react\"\n\nfunction assignRef<T>(ref: React.Ref<T> | undefined, node: T | null) {\n  if (typeof ref === \"function\") {\n    const cleanup = ref(node)\n    return typeof cleanup === \"function\" ? cleanup : () => ref(null)\n  }\n  if (ref) {\n    ref.current = node\n    return () => {\n      ref.current = null\n    }\n  }\n  return undefined\n}\n\nfunction useMergedRef<T>(...refs: Array<React.Ref<T> | undefined>) {\n  return React.useCallback((node: T | null) => {\n    const cleanups = refs.map((ref) => assignRef(ref, node))\n    return () => {\n      for (const cleanup of cleanups) {\n        cleanup?.()\n      }\n    }\n  }, refs)\n}\n\nexport { useMergedRef }\n",
      "type": "registry:hook"
    }
  ],
  "type": "registry:hook"
}