UNPKG

@yandex/ui

Version:

Yandex UI components

26 lines (25 loc) 1.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useClientHeight = void 0; var tslib_1 = require("tslib"); var react_1 = require("react"); var canUseDOM_1 = require("../../lib/canUseDOM"); /** * Вычисляет высоту вьюпорта */ var getClientHeight = function () { return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; }; /** * Провоцирует перерисовку при ресайзе окна и возвращает высоту вьюпорта */ var useClientHeight = function () { var _a = tslib_1.__read(react_1.useState(canUseDOM_1.canUseDOM() ? getClientHeight() : undefined), 2), clientHeight = _a[0], setClientHeight = _a[1]; var recalculateHeight = react_1.useCallback(function () { return setClientHeight(getClientHeight()); }, []); react_1.useLayoutEffect(function () { window.addEventListener('resize', recalculateHeight); return function () { window.removeEventListener('resize', recalculateHeight); }; }, [recalculateHeight]); return clientHeight; }; exports.useClientHeight = useClientHeight;