@react-hookz/web
Version:
React hooks done right, for browser and SSR.
25 lines (24 loc) • 894 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useMeasure = void 0;
var __1 = require("..");
/**
* Uses ResizeObserver to track element dimensions and re-render component when they change.
*
* @param enabled Whether resize observer is enabled or not.
*/
function useMeasure(enabled) {
if (enabled === void 0) { enabled = true; }
var _a = (0, __1.useSafeState)(null), element = _a[0], setElement = _a[1];
var elementRef = (0, __1.useHookableRef)(null, function (v) {
setElement(v);
return v;
});
var _b = (0, __1.useSafeState)(), rect = _b[0], setRect = _b[1];
var observerHandler = (0, __1.useRafCallback)(function (entry) {
return setRect(entry.contentRect);
})[0];
(0, __1.useResizeObserver)(element, observerHandler, enabled);
return [rect, elementRef];
}
exports.useMeasure = useMeasure;