@massds/mayflower-react
Version:
React versions of Mayflower design system UI components
35 lines (34 loc) • 1.23 kB
JavaScript
;
exports.__esModule = true;
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
var useWindowWidth = function useWindowWidth() {
// We use state here so that a default can be set based on window,
// if window exists.
var _React$useState = _react["default"].useState(null),
windowWidth = _React$useState[0],
setWindowWidth = _React$useState[1];
var resize = _react["default"].useCallback(function () {
if (window) {
setWindowWidth(window.innerWidth);
}
}, [setWindowWidth]);
_react["default"].useEffect(function () {
// Set default windowWidth to window.innerwidth if window exists.
if (window) {
setWindowWidth(window.innerWidth);
// Update windowWidth on window resize.
window.addEventListener('resize', resize);
}
return function () {
if (window) {
// Remove resize event on unmount of component.
window.removeEventListener('resize', resize);
}
};
}, [resize, setWindowWidth]);
return windowWidth;
};
var _default = exports["default"] = useWindowWidth;
module.exports = exports.default;