usehooks-ts
Version:
React hook library, ready to use, written in Typescript.
34 lines • 1.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
function useLockedBody(initialLocked) {
if (initialLocked === void 0) { initialLocked = false; }
var _a = (0, react_1.useState)(initialLocked), locked = _a[0], setLocked = _a[1];
(0, react_1.useLayoutEffect)(function () {
if (!locked) {
return;
}
var originalOverflow = document.body.style.overflow;
var originalPaddingRight = document.body.style.paddingRight;
document.body.style.overflow = 'hidden';
var root = document.getElementById('___gatsby');
var scrollBarWidth = root ? root.offsetWidth - root.scrollWidth : 0;
if (scrollBarWidth) {
document.body.style.paddingRight = "".concat(scrollBarWidth, "px");
}
return function () {
document.body.style.overflow = originalOverflow;
if (scrollBarWidth) {
document.body.style.paddingRight = originalPaddingRight;
}
};
}, [locked]);
(0, react_1.useEffect)(function () {
if (locked !== initialLocked) {
setLocked(initialLocked);
}
}, [initialLocked]);
return [locked, setLocked];
}
exports.default = useLockedBody;
//# sourceMappingURL=useLockedBody.js.map
;