@wulperstudio/cms
Version:
Wulper Studio Library Components CMS
41 lines • 1.41 kB
JavaScript
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;
};