@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.
55 lines (40 loc) • 1.78 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _react = require("react");
var _useTheme2 = _interopRequireDefault(require("../useTheme"));
var _useIsMounted = _interopRequireDefault(require("../useIsMounted"));
var _lockScrolling = require("./lock-scrolling");
var useLockScrolling = function useLockScrolling(ref) {
var lock = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var dependencies = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var _useTheme = (0, _useTheme2.default)(),
_useTheme$lockScrolli = _useTheme.lockScrolling,
themeLockScrolling = _useTheme$lockScrolli === void 0 ? true : _useTheme$lockScrolli;
var isMounted = (0, _useIsMounted.default)();
(0, _react.useEffect)(function () {
var el = ref.current;
if (el) {
if (lock && themeLockScrolling) {
(0, _lockScrolling.disableBodyScroll)(el);
}
if (!lock || !themeLockScrolling) {
(0, _lockScrolling.enableBodyScroll)(el);
}
}
return function () {
// disabling this because we're interested in precisely that changed value
// eslint-disable-next-line react-hooks/exhaustive-deps
var didRefChange = el !== ref.current;
if (el && (!isMounted() || didRefChange)) {
(0, _lockScrolling.enableBodyScroll)(el);
}
};
}, [ref, lock, themeLockScrolling, isMounted].concat((0, _toConsumableArray2.default)(dependencies)));
};
var _default = useLockScrolling;
exports.default = _default;