@razorpay/blade
Version:
The Design System that powers Razorpay
32 lines (26 loc) • 933 B
JavaScript
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';
/* eslint-disable @typescript-eslint/explicit-function-return-type */
/* eslint-disable consistent-return */
/**
* Hook to observe resize events on a given element
*/
var useResize = function useResize(ref, callback) {
useIsomorphicLayoutEffect(function () {
if (!ref.current) return;
var element = ref.current;
if (!('ResizeObserver' in window)) return;
var observer = new ResizeObserver(function (entries) {
entries.forEach(function (entry) {
callback === null || callback === void 0 || callback(entry);
});
});
observer.observe(element);
// destroy the observer
return function () {
if (!('ResizeObserver' in window)) return;
observer === null || observer === void 0 || observer.disconnect();
};
}, [callback]);
};
export { useResize };
//# sourceMappingURL=useResize.js.map