react-use
Version:
Collection of React Hooks
31 lines (30 loc) • 777 B
JavaScript
import { useCallback, useState } from 'react';
import ResizeObserver from 'resize-observer-polyfill';
var useMeasure = function () {
var _a = useState({
x: 0,
y: 0,
width: 0,
height: 0,
top: 0,
left: 0,
bottom: 0,
right: 0,
}), rect = _a[0], set = _a[1];
var observer = useState(function () {
return new ResizeObserver(function (entries) {
var entry = entries[0];
if (entry) {
set(entry.contentRect);
}
});
})[0];
var ref = useCallback(function (node) {
observer.disconnect();
if (node) {
observer.observe(node);
}
}, [observer]);
return [ref, rect];
};
export default useMeasure;