UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

40 lines (38 loc) 989 B
import * as React from "react"; import { isObject } from "@yamada-ui/utils"; //#region src/utils/ref.ts function isRefObject(val) { return 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 export { assignRef, isRefObject, mergeRefs, useCallbackRef, useMergeRefs }; //# sourceMappingURL=ref.js.map