mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-27 16:40:57 +00:00
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
'use client';
|
|
'use strict';
|
|
|
|
var React = require('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 && typeof cleanup === "function") {
|
|
cleanup();
|
|
} else {
|
|
assignRef(ref, null);
|
|
}
|
|
});
|
|
cleanupMap.clear();
|
|
};
|
|
}
|
|
};
|
|
}
|
|
function useMergedRef(...refs) {
|
|
return React.useCallback(mergeRefs(...refs), refs);
|
|
}
|
|
|
|
exports.assignRef = assignRef;
|
|
exports.mergeRefs = mergeRefs;
|
|
exports.useMergedRef = useMergedRef;
|
|
//# sourceMappingURL=use-merged-ref.cjs.map
|