1 | "use strict";
|
2 |
|
3 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
4 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.default = useScrollLocker;
|
9 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
10 | var React = _interopRequireWildcard(require("react"));
|
11 | var _dynamicCSS = require("rc-util/lib/Dom/dynamicCSS");
|
12 | var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
|
13 | var _getScrollBarSize = _interopRequireDefault(require("rc-util/lib/getScrollBarSize"));
|
14 | var _util = require("./util");
|
15 | var UNIQUE_ID = "rc-util-locker-".concat(Date.now());
|
16 | var uuid = 0;
|
17 | function useScrollLocker(lock) {
|
18 | var mergedLock = !!lock;
|
19 | var _React$useState = React.useState(function () {
|
20 | uuid += 1;
|
21 | return "".concat(UNIQUE_ID, "_").concat(uuid);
|
22 | }),
|
23 | _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 1),
|
24 | id = _React$useState2[0];
|
25 | (0, _useLayoutEffect.default)(function () {
|
26 | if (mergedLock) {
|
27 | var scrollbarSize = (0, _getScrollBarSize.default)();
|
28 | var isOverflow = (0, _util.isBodyOverflowing)();
|
29 | (0, _dynamicCSS.updateCSS)("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : '', "\n}"), id);
|
30 | } else {
|
31 | (0, _dynamicCSS.removeCSS)(id);
|
32 | }
|
33 | return function () {
|
34 | (0, _dynamicCSS.removeCSS)(id);
|
35 | };
|
36 | }, [mergedLock, id]);
|
37 | } |
\ | No newline at end of file |