UNPKG

@yandex/ui

Version:

Yandex UI components

22 lines (21 loc) 1.02 kB
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; };