@wulperstudio/cms
Version:
Wulper Studio Library Components CMS
49 lines (48 loc) • 1.75 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.measureHeight = measureHeight;
exports.useHeightViewPort = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
function isClient() {
return typeof window !== 'undefined' && typeof document !== 'undefined';
}
function measureHeight() {
if (!isClient()) return null;
return window.innerHeight;
}
function useWasRenderedOnClient() {
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
wasRenderedOnClient = _useState2[0],
setWasRenderedOnClient = _useState2[1];
(0, _react.useEffect)(function () {
if (isClient()) {
setWasRenderedOnClient(true);
}
}, []);
return wasRenderedOnClient;
}
var useHeightViewPort = exports.useHeightViewPort = function useHeightViewPort() {
var _useState3 = (0, _react.useState)(measureHeight),
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
height = _useState4[0],
setHeight = _useState4[1];
var wasRenderedOnClient = useWasRenderedOnClient();
(0, _react.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;
};