@mantine/hooks
Version:
A collection of 50+ hooks for state and UI management
41 lines (38 loc) • 977 B
JavaScript
'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