UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

41 lines (38 loc) 977 B
'use client'; import { useCallback } from 'react'; function assignRef(ref, value) { if (typeof ref === "function") { return ref(value); } else if (typeof ref === "object" && ref !== null && "current" in ref) { ref.current = value; } } function mergeRefs(...refs) { const cleanupMap = /* @__PURE__ */ new Map(); return (node) => { refs.forEach((ref) => { const cleanup = assignRef(ref, node); if (cleanup) { cleanupMap.set(ref, cleanup); } }); if (cleanupMap.size > 0) { return () => { refs.forEach((ref) => { const cleanup = cleanupMap.get(ref); if (cleanup) { cleanup(); } else { assignRef(ref, null); } }); cleanupMap.clear(); }; } }; } function useMergedRef(...refs) { return useCallback(mergeRefs(...refs), refs); } export { assignRef, mergeRefs, useMergedRef }; //# sourceMappingURL=use-merged-ref.mjs.map