@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
47 lines (45 loc) • 1.32 kB
JavaScript
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
let react = require("react");
react = require_rolldown_runtime.__toESM(react);
let __yamada_ui_utils = require("@yamada-ui/utils");
__yamada_ui_utils = require_rolldown_runtime.__toESM(__yamada_ui_utils);
//#region src/utils/ref.ts
function isRefObject(val) {
return (0, __yamada_ui_utils.isObject)(val) && "current" in val;
}
function assignRef(ref, value) {
if (ref == null) return;
if (typeof ref === "function") {
ref(value);
return;
}
try {
ref.current = value;
} catch {
throw new Error(`Cannot assign value '${value}' to ref '${ref}'`);
}
}
function mergeRefs(...refs) {
return function(node) {
return refs.forEach((ref) => {
assignRef(ref, node);
});
};
}
function useMergeRefs(...refs) {
return react.useMemo(() => mergeRefs(...refs), [refs]);
}
function useCallbackRef(callback, deps = []) {
const callbackRef = react.useRef(callback);
react.useEffect(() => {
callbackRef.current = callback;
});
return react.useCallback(((...args) => callbackRef.current?.(...args)), deps);
}
//#endregion
exports.assignRef = assignRef;
exports.isRefObject = isRefObject;
exports.mergeRefs = mergeRefs;
exports.useCallbackRef = useCallbackRef;
exports.useMergeRefs = useMergeRefs;
//# sourceMappingURL=ref.cjs.map