@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
52 lines (40 loc) • 1.48 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _useTheme = _interopRequireDefault(require("../useTheme"));
var _useIsMounted = _interopRequireDefault(require("../useIsMounted"));
var _lockScrolling = require("./lock-scrolling");
const useLockScrolling = (ref, lock = true, dependencies = []) => {
const {
lockScrolling: themeLockScrolling = true,
lockScrollingBarGap
} = (0, _useTheme.default)();
const isMounted = (0, _useIsMounted.default)();
(0, _react.useEffect)(() => {
const el = ref.current;
if (el) {
if (lock && themeLockScrolling) {
(0, _lockScrolling.disableBodyScroll)(el, {
reserveScrollBarGap: lockScrollingBarGap
});
}
if (!lock || !themeLockScrolling) {
(0, _lockScrolling.enableBodyScroll)(el);
}
}
return () => {
// disabling this because we're interested in precisely that changed value
// eslint-disable-next-line react-hooks/exhaustive-deps
const didRefChange = el !== ref.current;
if (el && (!isMounted() || didRefChange)) {
(0, _lockScrolling.enableBodyScroll)(el);
}
};
}, [ref, lock, themeLockScrolling, lockScrollingBarGap, isMounted, ...dependencies]);
};
var _default = useLockScrolling;
exports.default = _default;