UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

58 lines (54 loc) 1.57 kB
import { useMemo } from 'react'; import './logger/index.js'; import { throwBladeError } from './logger/logger.js'; /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-function-return-type */ function assignRef(ref, value) { if (ref == null) return; if (typeof ref === 'function') { ref(value); return; } try { ref.current = value; } catch (error) { throwBladeError({ moduleName: 'useMergeRefs', message: "Cannot assign value '".concat(value, "' to ref '").concat(ref, "'") }); } } function mergeRefs() { for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) { refs[_key] = arguments[_key]; } return function (node) { refs.forEach(function (ref) { assignRef(ref, node); }); }; } /** * Merged two or more refs into a single ref callback. * * Usage: * ```ts * const internalRef = React.useRef() * const ref = useMergeRefs(incomingRef, internalRef); * ``` * * * Taken from ChakraUI: * https://github.com/chakra-ui/chakra-ui/blob/f3c4a492e5636d2745b438d10794fa4e7999b6de/packages/hooks/use-merge-refs/src/index.ts#L31 */ function useMergeRefs() { for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { refs[_key2] = arguments[_key2]; } // eslint-disable-next-line react-hooks/exhaustive-deps return useMemo(function () { return mergeRefs.apply(void 0, refs); }, refs); } export { mergeRefs, useMergeRefs }; //# sourceMappingURL=useMergeRefs.js.map