@yandex/ui
Version:
Yandex UI components
22 lines (21 loc) • 1.02 kB
JavaScript
import { __read } from "tslib";
import { useCallback, useLayoutEffect, useState } from 'react';
import { canUseDOM } from '../../lib/canUseDOM';
/**
* Вычисляет высоту вьюпорта
*/
var getClientHeight = function () { return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; };
/**
* Провоцирует перерисовку при ресайзе окна и возвращает высоту вьюпорта
*/
export var useClientHeight = function () {
var _a = __read(useState(canUseDOM() ? getClientHeight() : undefined), 2), clientHeight = _a[0], setClientHeight = _a[1];
var recalculateHeight = useCallback(function () { return setClientHeight(getClientHeight()); }, []);
useLayoutEffect(function () {
window.addEventListener('resize', recalculateHeight);
return function () {
window.removeEventListener('resize', recalculateHeight);
};
}, [recalculateHeight]);
return clientHeight;
};