UNPKG

@wulperstudio/cms

Version:
49 lines (48 loc) 1.75 kB
"use strict"; 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; };