UNPKG

@react-hookz/web

Version:

React hooks done right, for browser and SSR.

25 lines (24 loc) 894 B
"use strict"; 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;