@coreui/react
Version:
UI Components Library for React.js
52 lines (48 loc) • 1.54 kB
JavaScript
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
;