UNPKG

@wulperstudio/cms

Version:
41 lines 1.41 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import { useState, useEffect } from 'react'; function isClient() { return typeof window !== 'undefined' && typeof document !== 'undefined'; } export function measureHeight() { if (!isClient()) return null; return window.innerHeight; } function useWasRenderedOnClient() { var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), wasRenderedOnClient = _useState2[0], setWasRenderedOnClient = _useState2[1]; useEffect(function () { if (isClient()) { setWasRenderedOnClient(true); } }, []); return wasRenderedOnClient; } export var useHeightViewPort = function useHeightViewPort() { var _useState3 = useState(measureHeight), _useState4 = _slicedToArray(_useState3, 2), height = _useState4[0], setHeight = _useState4[1]; var wasRenderedOnClient = useWasRenderedOnClient(); useEffect(function () { if (!wasRenderedOnClient) return; var setMeasuredHeight = function setMeasuredHeight() { var measuredHeight = measureHeight(); setHeight(measuredHeight); }; window.addEventListener('resize', setMeasuredHeight); // eslint-disable-next-line consistent-return return function () { return window.removeEventListener('resize', setMeasuredHeight); }; }, [wasRenderedOnClient]); return wasRenderedOnClient ? height : null; };