UNPKG

@coreui/react

Version:

UI Components Library for React.js

52 lines (48 loc) 1.54 kB
'use strict'; var React = require('react'); // code borrowed from https://github.com/reach/reach-ui // problem described https://github.com/facebook/react/issues/13029 // eslint-disable-next-line @typescript-eslint/no-explicit-any function useForkedRef() { var refs = []; for (var _i = 0; _i < arguments.length; _i++) { refs[_i] = arguments[_i]; } return React.useMemo(function () { if (refs.every(function (ref) { return ref == null; })) { return null; } // eslint-disable-next-line @typescript-eslint/no-explicit-any return function (node) { refs.forEach(function (ref) { assignRef(ref, node); }); }; }, refs); } // eslint-disable-next-line @typescript-eslint/no-explicit-any function assignRef(ref, // eslint-disable-next-line @typescript-eslint/no-explicit-any value) { if (ref == null) return; if (isFunction(ref)) { ref(value); } else { try { ref.current = value; } catch (_a) { throw new Error("Cannot assign value \"".concat(value, "\" to ref \"").concat(ref, "\"")); } } } // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types function isFunction(value) { return !!(value && {}.toString.call(value) == '[object Function]'); } exports.assignRef = assignRef; exports.isFunction = isFunction; exports.useForkedRef = useForkedRef; //# sourceMappingURL=useForkedRef.js.map