react-behave
Version:
A library of behaviors for React applications.
23 lines (20 loc) • 776 B
JavaScript
import throttle from 'lodash.throttle';
import ResizeObserver from 'resize-observer-polyfill'; // Corresponds to 1 frame
var DEFAULT_RESIZE_INTERVAL = 16;
export function watchResize(target, cb) {
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
_ref$resizeInterval = _ref.resizeInterval,
resizeInterval = _ref$resizeInterval === void 0 ? DEFAULT_RESIZE_INTERVAL : _ref$resizeInterval;
function handleResize(entries) {
if (entries.length) {
cb(entries[0].contentRect);
}
}
var observer = throttle(handleResize, resizeInterval);
var resizeObserver = new ResizeObserver(observer);
resizeObserver.observe(target);
return function () {
observer.cancel();
resizeObserver.unobserve(target);
};
}