@yandex/ui
Version:
Yandex UI components
26 lines (25 loc) • 1.18 kB
JavaScript
;
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;