@tamagui/remove-scroll 1.130.1 → 1.130.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/RemoveScroll.cjs +6 -27
- package/dist/cjs/RemoveScroll.js +4 -15
- package/dist/cjs/RemoveScroll.js.map +2 -2
- package/dist/cjs/RemoveScroll.native.js +5 -2
- package/dist/cjs/RemoveScroll.native.js.map +2 -2
- package/dist/cjs/useDisableScroll.cjs +9 -32
- package/dist/cjs/useDisableScroll.js +8 -20
- package/dist/cjs/useDisableScroll.js.map +1 -1
- package/dist/cjs/useDisableScroll.native.js +11 -50
- package/dist/cjs/useDisableScroll.native.js.map +2 -2
- package/dist/esm/RemoveScroll.js +2 -6
- package/dist/esm/RemoveScroll.js.map +1 -1
- package/dist/esm/RemoveScroll.mjs +2 -12
- package/dist/esm/RemoveScroll.mjs.map +1 -1
- package/dist/esm/RemoveScroll.native.js +4 -3
- package/dist/esm/RemoveScroll.native.js.map +1 -1
- package/dist/esm/useDisableScroll.js +8 -20
- package/dist/esm/useDisableScroll.js.map +1 -1
- package/dist/esm/useDisableScroll.mjs +9 -32
- package/dist/esm/useDisableScroll.mjs.map +1 -1
- package/dist/esm/useDisableScroll.native.js +11 -40
- package/dist/esm/useDisableScroll.native.js.map +1 -1
- package/dist/jsx/RemoveScroll.js +2 -6
- package/dist/jsx/RemoveScroll.js.map +1 -1
- package/dist/jsx/RemoveScroll.mjs +2 -12
- package/dist/jsx/RemoveScroll.mjs.map +1 -1
- package/dist/jsx/RemoveScroll.native.js +3 -1
- package/dist/jsx/RemoveScroll.native.js.map +2 -2
- package/dist/jsx/useDisableScroll.js +8 -20
- package/dist/jsx/useDisableScroll.js.map +1 -1
- package/dist/jsx/useDisableScroll.mjs +9 -32
- package/dist/jsx/useDisableScroll.mjs.map +1 -1
- package/dist/jsx/useDisableScroll.native.js +10 -49
- package/dist/jsx/useDisableScroll.native.js.map +2 -2
- package/package.json +2 -2
- package/src/RemoveScroll.native.tsx +2 -1
- package/src/RemoveScroll.tsx +6 -14
- package/src/useDisableScroll.ts +11 -61
- package/types/RemoveScroll.d.ts +5 -4
- package/types/RemoveScroll.d.ts.map +13 -1
- package/types/RemoveScroll.native.d.ts +2 -0
- package/types/RemoveScroll.native.d.ts.map +13 -1
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +11 -1
- package/types/useDisableScroll.d.ts +2 -4
- package/types/useDisableScroll.d.ts.map +13 -1
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var
|
|
6
|
-
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
5
|
var __export = (target, all) => {
|
|
8
6
|
for (var name in all) __defProp(target, name, {
|
|
9
7
|
get: all[name],
|
|
@@ -17,32 +15,13 @@ var __export = (target, all) => {
|
|
|
17
15
|
});
|
|
18
16
|
return to;
|
|
19
17
|
};
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
26
|
-
value: mod,
|
|
27
|
-
enumerable: !0
|
|
28
|
-
}) : target, mod)),
|
|
29
|
-
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
30
|
-
value: !0
|
|
31
|
-
}), mod);
|
|
18
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), mod);
|
|
32
21
|
var RemoveScroll_exports = {};
|
|
33
22
|
__export(RemoveScroll_exports, {
|
|
34
23
|
RemoveScroll: () => RemoveScroll
|
|
35
24
|
});
|
|
36
25
|
module.exports = __toCommonJS(RemoveScroll_exports);
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
const RemoveScroll = import_react.default.memo(props => {
|
|
40
|
-
const root = (0, import_react.useRef)(null);
|
|
41
|
-
return /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
42
|
-
ref: root,
|
|
43
|
-
style: {
|
|
44
|
-
display: "contents"
|
|
45
|
-
},
|
|
46
|
-
children: props.children
|
|
47
|
-
});
|
|
48
|
-
});
|
|
26
|
+
var import_useDisableScroll = require("./useDisableScroll.cjs");
|
|
27
|
+
const RemoveScroll = props => ((0, import_useDisableScroll.useDisableBodyScroll)(!!props.enabled), props.children);
|
package/dist/cjs/RemoveScroll.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
5
|
var __export = (target, all) => {
|
|
7
6
|
for (var name in all)
|
|
8
7
|
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
@@ -12,22 +11,12 @@ var __export = (target, all) => {
|
|
|
12
11
|
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
12
|
return to;
|
|
14
13
|
};
|
|
15
|
-
var
|
|
16
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
17
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
18
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
19
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
20
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
|
|
21
|
-
mod
|
|
22
|
-
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
23
15
|
var RemoveScroll_exports = {};
|
|
24
16
|
__export(RemoveScroll_exports, {
|
|
25
17
|
RemoveScroll: () => RemoveScroll
|
|
26
18
|
});
|
|
27
19
|
module.exports = __toCommonJS(RemoveScroll_exports);
|
|
28
|
-
var
|
|
29
|
-
const RemoveScroll =
|
|
30
|
-
const root = (0, import_react.useRef)(null);
|
|
31
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { ref: root, style: { display: "contents" }, children: props.children });
|
|
32
|
-
});
|
|
20
|
+
var import_useDisableScroll = require("./useDisableScroll");
|
|
21
|
+
const RemoveScroll = (props) => ((0, import_useDisableScroll.useDisableBodyScroll)(!!props.enabled), props.children);
|
|
33
22
|
//# sourceMappingURL=RemoveScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RemoveScroll.tsx"],
|
|
4
|
-
"mappings": "
|
|
5
|
-
"names": [
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,8BAAqC;AAO9B,MAAM,eAAe,CAAC,eAC3B,8CAAqB,EAAQ,MAAM,OAAQ,GAEpC,MAAM;",
|
|
5
|
+
"names": []
|
|
6
6
|
}
|
|
@@ -15,14 +15,17 @@ var __export = (target, all) => {
|
|
|
15
15
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
16
16
|
var RemoveScroll_native_exports = {};
|
|
17
17
|
__export(RemoveScroll_native_exports, {
|
|
18
|
-
RemoveScroll: () => RemoveScroll
|
|
18
|
+
RemoveScroll: () => RemoveScroll,
|
|
19
|
+
getAllowedScrollableNode: () => getAllowedScrollableNode
|
|
19
20
|
});
|
|
20
21
|
module.exports = __toCommonJS(RemoveScroll_native_exports);
|
|
21
22
|
var RemoveScroll = function(props) {
|
|
22
23
|
return props.children;
|
|
24
|
+
}, getAllowedScrollableNode = function() {
|
|
23
25
|
};
|
|
24
26
|
// Annotate the CommonJS export names for ESM import in node:
|
|
25
27
|
0 && (module.exports = {
|
|
26
|
-
RemoveScroll
|
|
28
|
+
RemoveScroll,
|
|
29
|
+
getAllowedScrollableNode
|
|
27
30
|
});
|
|
28
31
|
//# sourceMappingURL=RemoveScroll.native.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RemoveScroll.native.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA
|
|
5
|
-
"names": ["RemoveScroll", "props", "children"]
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;;AAAO,IAAMA,eAAe,SAACC,OAAAA;SAAoBA,MAAMC;GAC1CC,2BAA2B,WAAA;AAAY;",
|
|
5
|
+
"names": ["RemoveScroll", "props", "children", "getAllowedScrollableNode"]
|
|
6
6
|
}
|
|
@@ -20,44 +20,21 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
20
20
|
}), mod);
|
|
21
21
|
var useDisableScroll_exports = {};
|
|
22
22
|
__export(useDisableScroll_exports, {
|
|
23
|
-
|
|
23
|
+
useDisableBodyScroll: () => useDisableBodyScroll
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(useDisableScroll_exports);
|
|
26
26
|
var import_react = require("react");
|
|
27
27
|
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
28
|
-
|
|
29
|
-
e.preventDefault && e.preventDefault();
|
|
30
|
-
},
|
|
31
|
-
useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
32
|
-
const {
|
|
33
|
-
enabled,
|
|
34
|
-
keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40]
|
|
35
|
-
} = options;
|
|
28
|
+
useDisableBodyScroll = enabled => {
|
|
36
29
|
(0, import_react.useEffect)(() => {
|
|
37
30
|
if (!enabled || !canUseDOM()) return;
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const previously = scrollEl.style.pointerEvents;
|
|
43
|
-
scrollEl.style.pointerEvents = "none";
|
|
44
|
-
const lockToScrollPos = [scrollEl.scrollLeft, scrollEl.scrollTop],
|
|
45
|
-
handleScroll = e => {
|
|
46
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
47
|
-
},
|
|
48
|
-
handleEvent = e => {
|
|
49
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
31
|
+
const bodyEl = document.documentElement,
|
|
32
|
+
previousBodyStyle = {
|
|
33
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
34
|
+
overflow: bodyEl.style.overflow
|
|
50
35
|
};
|
|
51
|
-
return
|
|
52
|
-
|
|
53
|
-
}), document.addEventListener("wheel", handleEvent, {
|
|
54
|
-
passive: !1
|
|
55
|
-
}), document.addEventListener("touchmove", handleEvent, {
|
|
56
|
-
passive: !1
|
|
57
|
-
}), document.addEventListener("keydown", handleEvent, {
|
|
58
|
-
passive: !1
|
|
59
|
-
}), () => {
|
|
60
|
-
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
36
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
|
|
37
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
61
38
|
};
|
|
62
|
-
}, [enabled
|
|
39
|
+
}, [enabled]);
|
|
63
40
|
};
|
|
@@ -14,33 +14,21 @@ var __export = (target, all) => {
|
|
|
14
14
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
15
15
|
var useDisableScroll_exports = {};
|
|
16
16
|
__export(useDisableScroll_exports, {
|
|
17
|
-
|
|
17
|
+
useDisableBodyScroll: () => useDisableBodyScroll
|
|
18
18
|
});
|
|
19
19
|
module.exports = __toCommonJS(useDisableScroll_exports);
|
|
20
20
|
var import_react = require("react");
|
|
21
|
-
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
22
|
-
e.preventDefault && e.preventDefault();
|
|
23
|
-
}, useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
24
|
-
const { enabled, keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40] } = options;
|
|
21
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement, useDisableBodyScroll = (enabled) => {
|
|
25
22
|
(0, import_react.useEffect)(() => {
|
|
26
23
|
if (!enabled || !canUseDOM())
|
|
27
24
|
return;
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const scrollEl = document.scrollingElement;
|
|
32
|
-
if (!scrollEl || !(scrollEl instanceof HTMLElement))
|
|
33
|
-
return;
|
|
34
|
-
const previously = scrollEl.style.pointerEvents;
|
|
35
|
-
scrollEl.style.pointerEvents = "none";
|
|
36
|
-
const lockToScrollPos = [scrollEl.scrollLeft, scrollEl.scrollTop], handleScroll = (e) => {
|
|
37
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
38
|
-
}, handleEvent = (e) => {
|
|
39
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
25
|
+
const bodyEl = document.documentElement, previousBodyStyle = {
|
|
26
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
27
|
+
overflow: bodyEl.style.overflow
|
|
40
28
|
};
|
|
41
|
-
return
|
|
42
|
-
|
|
29
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
|
|
30
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
43
31
|
};
|
|
44
|
-
}, [enabled
|
|
32
|
+
}, [enabled]);
|
|
45
33
|
};
|
|
46
34
|
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0B;AAE1B,MAAM,YAAY,MAChB,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS,eAE7D,uBAAuB,CAAC,YAA2B;AAC9D,8BAAU,MAAM;AACd,QAAI,CAAC,WAAW,CAAC,UAAU;AACzB;AAIF,UAAM,SAAS,SAAS,iBAClB,oBAAoB;AAAA,MACxB,iBAAiB,OAAO,MAAM;AAAA,MAC9B,UAAU,OAAO,MAAM;AAAA,IACzB;AACA,kBAAO,MAAM,kBAAkB,UAC/B,OAAO,MAAM,WAAW,UAEjB,MAAM;AACX,aAAO,OAAO,OAAO,OAAO,iBAAiB;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AACd;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -15,67 +15,28 @@ var __export = (target, all) => {
|
|
|
15
15
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
16
16
|
var useDisableScroll_exports = {};
|
|
17
17
|
__export(useDisableScroll_exports, {
|
|
18
|
-
|
|
18
|
+
useDisableBodyScroll: () => useDisableBodyScroll
|
|
19
19
|
});
|
|
20
20
|
module.exports = __toCommonJS(useDisableScroll_exports);
|
|
21
21
|
var import_react = require("react"), canUseDOM = function() {
|
|
22
22
|
return typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
23
|
-
},
|
|
24
|
-
e.preventDefault && e.preventDefault();
|
|
25
|
-
}, useDisableScrollOutsideOf = function(nodeRef) {
|
|
26
|
-
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : (
|
|
27
|
-
// space: 32, page up: 33, page down: 34, end: 35, home: 36
|
|
28
|
-
// left: 37, up: 38, right: 39, down: 40
|
|
29
|
-
{}
|
|
30
|
-
), { enabled, keyboardKeys = [
|
|
31
|
-
32,
|
|
32
|
-
33,
|
|
33
|
-
34,
|
|
34
|
-
35,
|
|
35
|
-
36,
|
|
36
|
-
37,
|
|
37
|
-
38,
|
|
38
|
-
39,
|
|
39
|
-
40
|
|
40
|
-
] } = options;
|
|
23
|
+
}, useDisableBodyScroll = function(enabled) {
|
|
41
24
|
(0, import_react.useEffect)(function() {
|
|
42
25
|
if (!(!enabled || !canUseDOM())) {
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
scrollEl.scrollLeft,
|
|
51
|
-
scrollEl.scrollTop
|
|
52
|
-
], handleScroll = function(e) {
|
|
53
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
54
|
-
}, handleEvent = function(e) {
|
|
55
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
56
|
-
};
|
|
57
|
-
return document.addEventListener("scroll", handleScroll, {
|
|
58
|
-
passive: !1
|
|
59
|
-
}), document.addEventListener("wheel", handleEvent, {
|
|
60
|
-
passive: !1
|
|
61
|
-
}), document.addEventListener("touchmove", handleEvent, {
|
|
62
|
-
passive: !1
|
|
63
|
-
}), document.addEventListener("keydown", handleEvent, {
|
|
64
|
-
passive: !1
|
|
65
|
-
}), function() {
|
|
66
|
-
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
26
|
+
var bodyEl = document.documentElement, previousBodyStyle = {
|
|
27
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
28
|
+
overflow: bodyEl.style.overflow
|
|
29
|
+
};
|
|
30
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", function() {
|
|
31
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
32
|
+
};
|
|
70
33
|
}
|
|
71
34
|
}, [
|
|
72
|
-
enabled
|
|
73
|
-
nodeRef,
|
|
74
|
-
keyboardKeys
|
|
35
|
+
enabled
|
|
75
36
|
]);
|
|
76
37
|
};
|
|
77
38
|
// Annotate the CommonJS export names for ESM import in node:
|
|
78
39
|
0 && (module.exports = {
|
|
79
|
-
|
|
40
|
+
useDisableBodyScroll
|
|
80
41
|
});
|
|
81
42
|
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;
|
|
5
|
-
"names": ["canUseDOM", "window", "document", "createElement", "
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;mBAA0B,kBAEpBA,YAAY,WAAA;SAChB,OAAOC,SAAW,OAAe,CAAC,CAACA,OAAOC,YAAY,CAAC,CAACD,OAAOC,SAASC;GAE7DC,uBAAuB,SAACC,SAAAA;AACnCC,8BAAU,WAAA;AACR,QAAI,GAACD,WAAW,CAACL,UAAAA,IAKjB;UAAMO,SAASL,SAASM,iBAClBC,oBAAoB;QACxBC,iBAAiBH,OAAOI,MAAMD;QAC9BE,UAAUL,OAAOI,MAAMC;MACzB;AACAL,oBAAOI,MAAMD,kBAAkB,UAC/BH,OAAOI,MAAMC,WAAW,UAEjB,WAAA;AACLC,eAAOC,OAAOP,OAAOI,OAAOF,iBAAAA;MAC9B;;EACF,GAAG;IAACJ;GAAQ;AACd;",
|
|
5
|
+
"names": ["canUseDOM", "window", "document", "createElement", "useDisableBodyScroll", "enabled", "useEffect", "bodyEl", "documentElement", "previousBodyStyle", "scrollbarGutter", "style", "overflow", "Object", "assign"]
|
|
6
6
|
}
|
package/dist/esm/RemoveScroll.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const RemoveScroll = React.memo((props) => {
|
|
4
|
-
const root = useRef(null);
|
|
5
|
-
return /* @__PURE__ */ jsx("span", { ref: root, style: { display: "contents" }, children: props.children });
|
|
6
|
-
});
|
|
1
|
+
import { useDisableBodyScroll } from "./useDisableScroll";
|
|
2
|
+
const RemoveScroll = (props) => (useDisableBodyScroll(!!props.enabled), props.children);
|
|
7
3
|
export {
|
|
8
4
|
RemoveScroll
|
|
9
5
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RemoveScroll.tsx"],
|
|
4
|
-
"mappings": "
|
|
4
|
+
"mappings": "AACA,SAAS,4BAA4B;AAO9B,MAAM,eAAe,CAAC,WAC3B,qBAAqB,EAAQ,MAAM,OAAQ,GAEpC,MAAM;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const RemoveScroll = React.memo(props => {
|
|
4
|
-
const root = useRef(null);
|
|
5
|
-
return /* @__PURE__ */jsx("span", {
|
|
6
|
-
ref: root,
|
|
7
|
-
style: {
|
|
8
|
-
display: "contents"
|
|
9
|
-
},
|
|
10
|
-
children: props.children
|
|
11
|
-
});
|
|
12
|
-
});
|
|
1
|
+
import { useDisableBodyScroll } from "./useDisableScroll.mjs";
|
|
2
|
+
const RemoveScroll = props => (useDisableBodyScroll(!!props.enabled), props.children);
|
|
13
3
|
export { RemoveScroll };
|
|
14
4
|
//# sourceMappingURL=RemoveScroll.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useDisableBodyScroll","RemoveScroll","props","enabled","children"],"sources":["../../src/RemoveScroll.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,oBAAA,QAA4B;AAO9B,MAAMC,YAAA,GAAgBC,KAAA,KAC3BF,oBAAA,CAAqB,EAAQE,KAAA,CAAMC,OAAQ,GAEpCD,KAAA,CAAME,QAAA","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
var RemoveScroll = function (props) {
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
|
|
2
|
+
return props.children;
|
|
3
|
+
},
|
|
4
|
+
getAllowedScrollableNode = function () {};
|
|
5
|
+
export { RemoveScroll, getAllowedScrollableNode };
|
|
5
6
|
//# sourceMappingURL=RemoveScroll.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RemoveScroll","props","children"],"sources":["../../src/RemoveScroll.native.tsx"],"sourcesContent":[null],"mappings":"AAAO,IAAMA,YAAA,GAAe,SAAAA,CAACC,KAAA;
|
|
1
|
+
{"version":3,"names":["RemoveScroll","props","children","getAllowedScrollableNode"],"sources":["../../src/RemoveScroll.native.tsx"],"sourcesContent":[null],"mappings":"AAAO,IAAMA,YAAA,GAAe,SAAAA,CAACC,KAAA;WAAoBA,KAAA,CAAMC,QAAA;;EAC1CC,wBAAA,GAA2B,SAAAA,CAAA,GAAY","ignoreList":[]}
|
|
@@ -1,30 +1,18 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
|
-
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
3
|
-
e.preventDefault && e.preventDefault();
|
|
4
|
-
}, useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
5
|
-
const { enabled, keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40] } = options;
|
|
2
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement, useDisableBodyScroll = (enabled) => {
|
|
6
3
|
useEffect(() => {
|
|
7
4
|
if (!enabled || !canUseDOM())
|
|
8
5
|
return;
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const scrollEl = document.scrollingElement;
|
|
13
|
-
if (!scrollEl || !(scrollEl instanceof HTMLElement))
|
|
14
|
-
return;
|
|
15
|
-
const previously = scrollEl.style.pointerEvents;
|
|
16
|
-
scrollEl.style.pointerEvents = "none";
|
|
17
|
-
const lockToScrollPos = [scrollEl.scrollLeft, scrollEl.scrollTop], handleScroll = (e) => {
|
|
18
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
19
|
-
}, handleEvent = (e) => {
|
|
20
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
6
|
+
const bodyEl = document.documentElement, previousBodyStyle = {
|
|
7
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
8
|
+
overflow: bodyEl.style.overflow
|
|
21
9
|
};
|
|
22
|
-
return
|
|
23
|
-
|
|
10
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
|
|
11
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
24
12
|
};
|
|
25
|
-
}, [enabled
|
|
13
|
+
}, [enabled]);
|
|
26
14
|
};
|
|
27
15
|
export {
|
|
28
|
-
|
|
16
|
+
useDisableBodyScroll
|
|
29
17
|
};
|
|
30
18
|
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,
|
|
4
|
+
"mappings": "AAAA,SAAS,iBAAiB;AAE1B,MAAM,YAAY,MAChB,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS,eAE7D,uBAAuB,CAAC,YAA2B;AAC9D,YAAU,MAAM;AACd,QAAI,CAAC,WAAW,CAAC,UAAU;AACzB;AAIF,UAAM,SAAS,SAAS,iBAClB,oBAAoB;AAAA,MACxB,iBAAiB,OAAO,MAAM;AAAA,MAC9B,UAAU,OAAO,MAAM;AAAA,IACzB;AACA,kBAAO,MAAM,kBAAkB,UAC/B,OAAO,MAAM,WAAW,UAEjB,MAAM;AACX,aAAO,OAAO,OAAO,OAAO,iBAAiB;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AACd;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,40 +1,17 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
3
|
-
|
|
4
|
-
e.preventDefault && e.preventDefault();
|
|
5
|
-
},
|
|
6
|
-
useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
7
|
-
const {
|
|
8
|
-
enabled,
|
|
9
|
-
keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40]
|
|
10
|
-
} = options;
|
|
3
|
+
useDisableBodyScroll = enabled => {
|
|
11
4
|
useEffect(() => {
|
|
12
5
|
if (!enabled || !canUseDOM()) return;
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const previously = scrollEl.style.pointerEvents;
|
|
18
|
-
scrollEl.style.pointerEvents = "none";
|
|
19
|
-
const lockToScrollPos = [scrollEl.scrollLeft, scrollEl.scrollTop],
|
|
20
|
-
handleScroll = e => {
|
|
21
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
22
|
-
},
|
|
23
|
-
handleEvent = e => {
|
|
24
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
6
|
+
const bodyEl = document.documentElement,
|
|
7
|
+
previousBodyStyle = {
|
|
8
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
9
|
+
overflow: bodyEl.style.overflow
|
|
25
10
|
};
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
}), document.addEventListener("wheel", handleEvent, {
|
|
29
|
-
passive: !1
|
|
30
|
-
}), document.addEventListener("touchmove", handleEvent, {
|
|
31
|
-
passive: !1
|
|
32
|
-
}), document.addEventListener("keydown", handleEvent, {
|
|
33
|
-
passive: !1
|
|
34
|
-
}), () => {
|
|
35
|
-
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
11
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
|
|
12
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
36
13
|
};
|
|
37
|
-
}, [enabled
|
|
14
|
+
}, [enabled]);
|
|
38
15
|
};
|
|
39
|
-
export {
|
|
16
|
+
export { useDisableBodyScroll };
|
|
40
17
|
//# sourceMappingURL=useDisableScroll.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","
|
|
1
|
+
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","useDisableBodyScroll","enabled","bodyEl","documentElement","previousBodyStyle","scrollbarGutter","style","overflow","Object","assign"],"sources":["../../src/useDisableScroll.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAE1B,MAAMC,SAAA,GAAYA,CAAA,KAChB,OAAOC,MAAA,GAAW,OAAe,CAAC,CAACA,MAAA,CAAOC,QAAA,IAAY,CAAC,CAACD,MAAA,CAAOC,QAAA,CAASC,aAAA;EAE7DC,oBAAA,GAAwBC,OAAA,IAA2B;IAC9DN,SAAA,CAAU,MAAM;MACd,IAAI,CAACM,OAAA,IAAW,CAACL,SAAA,CAAU,GACzB;MAIF,MAAMM,MAAA,GAASJ,QAAA,CAASK,eAAA;QAClBC,iBAAA,GAAoB;UACxBC,eAAA,EAAiBH,MAAA,CAAOI,KAAA,CAAMD,eAAA;UAC9BE,QAAA,EAAUL,MAAA,CAAOI,KAAA,CAAMC;QACzB;MACA,OAAAL,MAAA,CAAOI,KAAA,CAAMD,eAAA,GAAkB,UAC/BH,MAAA,CAAOI,KAAA,CAAMC,QAAA,GAAW,UAEjB,MAAM;QACXC,MAAA,CAAOC,MAAA,CAAOP,MAAA,CAAOI,KAAA,EAAOF,iBAAiB;MAC/C;IACF,GAAG,CAACH,OAAO,CAAC;EACd","ignoreList":[]}
|
|
@@ -2,48 +2,19 @@ import { useEffect } from "react";
|
|
|
2
2
|
var canUseDOM = function () {
|
|
3
3
|
return typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
4
4
|
},
|
|
5
|
-
|
|
6
|
-
e.preventDefault && e.preventDefault();
|
|
7
|
-
},
|
|
8
|
-
useDisableScrollOutsideOf = function (nodeRef) {
|
|
9
|
-
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] :
|
|
10
|
-
// space: 32, page up: 33, page down: 34, end: 35, home: 36
|
|
11
|
-
// left: 37, up: 38, right: 39, down: 40
|
|
12
|
-
{},
|
|
13
|
-
{
|
|
14
|
-
enabled,
|
|
15
|
-
keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40]
|
|
16
|
-
} = options;
|
|
5
|
+
useDisableBodyScroll = function (enabled) {
|
|
17
6
|
useEffect(function () {
|
|
18
7
|
if (!(!enabled || !canUseDOM())) {
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
28
|
-
},
|
|
29
|
-
handleEvent = function (e) {
|
|
30
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
31
|
-
};
|
|
32
|
-
return document.addEventListener("scroll", handleScroll, {
|
|
33
|
-
passive: !1
|
|
34
|
-
}), document.addEventListener("wheel", handleEvent, {
|
|
35
|
-
passive: !1
|
|
36
|
-
}), document.addEventListener("touchmove", handleEvent, {
|
|
37
|
-
passive: !1
|
|
38
|
-
}), document.addEventListener("keydown", handleEvent, {
|
|
39
|
-
passive: !1
|
|
40
|
-
}), function () {
|
|
41
|
-
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
8
|
+
var bodyEl = document.documentElement,
|
|
9
|
+
previousBodyStyle = {
|
|
10
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
11
|
+
overflow: bodyEl.style.overflow
|
|
12
|
+
};
|
|
13
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", function () {
|
|
14
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
15
|
+
};
|
|
45
16
|
}
|
|
46
|
-
}, [enabled
|
|
17
|
+
}, [enabled]);
|
|
47
18
|
};
|
|
48
|
-
export {
|
|
19
|
+
export { useDisableBodyScroll };
|
|
49
20
|
//# sourceMappingURL=useDisableScroll.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","
|
|
1
|
+
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","useDisableBodyScroll","enabled","bodyEl","documentElement","previousBodyStyle","scrollbarGutter","style","overflow","Object","assign"],"sources":["../../src/useDisableScroll.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAE1B,IAAAC,SAAM,YAAAA,CAAA,EACJ;IAGA,cAAUC,MAAM,YAAAA,MAAA,CAAAC,QAAA,MAAAD,MAAA,CAAAC,QAAA,CAAAC,aAAA;EACd;EAAAC,oBAAiB,YAAAA,CAAUC,OAAA;IACzBN,SAAA;MAIF,MAAM,CAAAM,OAAA,IAAS,CAAAL,SAAS;QAEtB,IAAAM,MAAA,GAAAJ,QAAiB,CAAAK,eAAa;UAAAC,iBAAA;YAC9BC,eAAiB,EAAAH,MAAM,CAAAI,KAAA,CAAAD,eAAA;YACzBE,QAAA,EAAAL,MAAA,CAAAI,KAAA,CAAAC;UACA;QAIE,OAAOL,MAAA,CAAOI,KAAA,CAAAD,eAAc,WAAiB,EAAAH,MAAA,CAAAI,KAAA,CAAAC,QAAA;UAC/CC,MAAA,CAAAC,MAAA,CAAAP,MAAA,CAAAI,KAAA,EAAAF,iBAAA;QACE;MACN","ignoreList":[]}
|
package/dist/jsx/RemoveScroll.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const RemoveScroll = React.memo((props) => {
|
|
4
|
-
const root = useRef(null);
|
|
5
|
-
return /* @__PURE__ */ jsx("span", { ref: root, style: { display: "contents" }, children: props.children });
|
|
6
|
-
});
|
|
1
|
+
import { useDisableBodyScroll } from "./useDisableScroll";
|
|
2
|
+
const RemoveScroll = (props) => (useDisableBodyScroll(!!props.enabled), props.children);
|
|
7
3
|
export {
|
|
8
4
|
RemoveScroll
|
|
9
5
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RemoveScroll.tsx"],
|
|
4
|
-
"mappings": "
|
|
4
|
+
"mappings": "AACA,SAAS,4BAA4B;AAO9B,MAAM,eAAe,CAAC,WAC3B,qBAAqB,EAAQ,MAAM,OAAQ,GAEpC,MAAM;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const RemoveScroll = React.memo(props => {
|
|
4
|
-
const root = useRef(null);
|
|
5
|
-
return /* @__PURE__ */jsx("span", {
|
|
6
|
-
ref: root,
|
|
7
|
-
style: {
|
|
8
|
-
display: "contents"
|
|
9
|
-
},
|
|
10
|
-
children: props.children
|
|
11
|
-
});
|
|
12
|
-
});
|
|
1
|
+
import { useDisableBodyScroll } from "./useDisableScroll.mjs";
|
|
2
|
+
const RemoveScroll = props => (useDisableBodyScroll(!!props.enabled), props.children);
|
|
13
3
|
export { RemoveScroll };
|
|
14
4
|
//# sourceMappingURL=RemoveScroll.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useDisableBodyScroll","RemoveScroll","props","enabled","children"],"sources":["../../src/RemoveScroll.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,oBAAA,QAA4B;AAO9B,MAAMC,YAAA,GAAgBC,KAAA,KAC3BF,oBAAA,CAAqB,EAAQE,KAAA,CAAMC,OAAQ,GAEpCD,KAAA,CAAME,QAAA","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RemoveScroll.native.tsx"],
|
|
4
|
-
"mappings": "AAAO,IAAMA,eAAe,SAACC,OAAAA;
|
|
5
|
-
"names": ["RemoveScroll", "props", "children"]
|
|
4
|
+
"mappings": "AAAO,IAAMA,eAAe,SAACC,OAAAA;SAAoBA,MAAMC;GAC1CC,2BAA2B,WAAA;AAAY;",
|
|
5
|
+
"names": ["RemoveScroll", "props", "children", "getAllowedScrollableNode"]
|
|
6
6
|
}
|
|
@@ -1,30 +1,18 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
|
-
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
3
|
-
e.preventDefault && e.preventDefault();
|
|
4
|
-
}, useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
5
|
-
const { enabled, keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40] } = options;
|
|
2
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement, useDisableBodyScroll = (enabled) => {
|
|
6
3
|
useEffect(() => {
|
|
7
4
|
if (!enabled || !canUseDOM())
|
|
8
5
|
return;
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const scrollEl = document.scrollingElement;
|
|
13
|
-
if (!scrollEl || !(scrollEl instanceof HTMLElement))
|
|
14
|
-
return;
|
|
15
|
-
const previously = scrollEl.style.pointerEvents;
|
|
16
|
-
scrollEl.style.pointerEvents = "none";
|
|
17
|
-
const lockToScrollPos = [scrollEl.scrollLeft, scrollEl.scrollTop], handleScroll = (e) => {
|
|
18
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
19
|
-
}, handleEvent = (e) => {
|
|
20
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
6
|
+
const bodyEl = document.documentElement, previousBodyStyle = {
|
|
7
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
8
|
+
overflow: bodyEl.style.overflow
|
|
21
9
|
};
|
|
22
|
-
return
|
|
23
|
-
|
|
10
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
|
|
11
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
24
12
|
};
|
|
25
|
-
}, [enabled
|
|
13
|
+
}, [enabled]);
|
|
26
14
|
};
|
|
27
15
|
export {
|
|
28
|
-
|
|
16
|
+
useDisableBodyScroll
|
|
29
17
|
};
|
|
30
18
|
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,
|
|
4
|
+
"mappings": "AAAA,SAAS,iBAAiB;AAE1B,MAAM,YAAY,MAChB,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS,eAE7D,uBAAuB,CAAC,YAA2B;AAC9D,YAAU,MAAM;AACd,QAAI,CAAC,WAAW,CAAC,UAAU;AACzB;AAIF,UAAM,SAAS,SAAS,iBAClB,oBAAoB;AAAA,MACxB,iBAAiB,OAAO,MAAM;AAAA,MAC9B,UAAU,OAAO,MAAM;AAAA,IACzB;AACA,kBAAO,MAAM,kBAAkB,UAC/B,OAAO,MAAM,WAAW,UAEjB,MAAM;AACX,aAAO,OAAO,OAAO,OAAO,iBAAiB;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AACd;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,40 +1,17 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
3
|
-
|
|
4
|
-
e.preventDefault && e.preventDefault();
|
|
5
|
-
},
|
|
6
|
-
useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
7
|
-
const {
|
|
8
|
-
enabled,
|
|
9
|
-
keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40]
|
|
10
|
-
} = options;
|
|
3
|
+
useDisableBodyScroll = enabled => {
|
|
11
4
|
useEffect(() => {
|
|
12
5
|
if (!enabled || !canUseDOM()) return;
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const previously = scrollEl.style.pointerEvents;
|
|
18
|
-
scrollEl.style.pointerEvents = "none";
|
|
19
|
-
const lockToScrollPos = [scrollEl.scrollLeft, scrollEl.scrollTop],
|
|
20
|
-
handleScroll = e => {
|
|
21
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
22
|
-
},
|
|
23
|
-
handleEvent = e => {
|
|
24
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
6
|
+
const bodyEl = document.documentElement,
|
|
7
|
+
previousBodyStyle = {
|
|
8
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
9
|
+
overflow: bodyEl.style.overflow
|
|
25
10
|
};
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
}), document.addEventListener("wheel", handleEvent, {
|
|
29
|
-
passive: !1
|
|
30
|
-
}), document.addEventListener("touchmove", handleEvent, {
|
|
31
|
-
passive: !1
|
|
32
|
-
}), document.addEventListener("keydown", handleEvent, {
|
|
33
|
-
passive: !1
|
|
34
|
-
}), () => {
|
|
35
|
-
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
11
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
|
|
12
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
36
13
|
};
|
|
37
|
-
}, [enabled
|
|
14
|
+
}, [enabled]);
|
|
38
15
|
};
|
|
39
|
-
export {
|
|
16
|
+
export { useDisableBodyScroll };
|
|
40
17
|
//# sourceMappingURL=useDisableScroll.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","
|
|
1
|
+
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","useDisableBodyScroll","enabled","bodyEl","documentElement","previousBodyStyle","scrollbarGutter","style","overflow","Object","assign"],"sources":["../../src/useDisableScroll.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAE1B,MAAMC,SAAA,GAAYA,CAAA,KAChB,OAAOC,MAAA,GAAW,OAAe,CAAC,CAACA,MAAA,CAAOC,QAAA,IAAY,CAAC,CAACD,MAAA,CAAOC,QAAA,CAASC,aAAA;EAE7DC,oBAAA,GAAwBC,OAAA,IAA2B;IAC9DN,SAAA,CAAU,MAAM;MACd,IAAI,CAACM,OAAA,IAAW,CAACL,SAAA,CAAU,GACzB;MAIF,MAAMM,MAAA,GAASJ,QAAA,CAASK,eAAA;QAClBC,iBAAA,GAAoB;UACxBC,eAAA,EAAiBH,MAAA,CAAOI,KAAA,CAAMD,eAAA;UAC9BE,QAAA,EAAUL,MAAA,CAAOI,KAAA,CAAMC;QACzB;MACA,OAAAL,MAAA,CAAOI,KAAA,CAAMD,eAAA,GAAkB,UAC/BH,MAAA,CAAOI,KAAA,CAAMC,QAAA,GAAW,UAEjB,MAAM;QACXC,MAAA,CAAOC,MAAA,CAAOP,MAAA,CAAOI,KAAA,EAAOF,iBAAiB;MAC/C;IACF,GAAG,CAACH,OAAO,CAAC;EACd","ignoreList":[]}
|
|
@@ -1,61 +1,22 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
var canUseDOM = function() {
|
|
3
3
|
return typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
4
|
-
},
|
|
5
|
-
e.preventDefault && e.preventDefault();
|
|
6
|
-
}, useDisableScrollOutsideOf = function(nodeRef) {
|
|
7
|
-
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : (
|
|
8
|
-
// space: 32, page up: 33, page down: 34, end: 35, home: 36
|
|
9
|
-
// left: 37, up: 38, right: 39, down: 40
|
|
10
|
-
{}
|
|
11
|
-
), { enabled, keyboardKeys = [
|
|
12
|
-
32,
|
|
13
|
-
33,
|
|
14
|
-
34,
|
|
15
|
-
35,
|
|
16
|
-
36,
|
|
17
|
-
37,
|
|
18
|
-
38,
|
|
19
|
-
39,
|
|
20
|
-
40
|
|
21
|
-
] } = options;
|
|
4
|
+
}, useDisableBodyScroll = function(enabled) {
|
|
22
5
|
useEffect(function() {
|
|
23
6
|
if (!(!enabled || !canUseDOM())) {
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
scrollEl.scrollLeft,
|
|
32
|
-
scrollEl.scrollTop
|
|
33
|
-
], handleScroll = function(e) {
|
|
34
|
-
scrollEl && (e.preventDefault(), scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1]));
|
|
35
|
-
}, handleEvent = function(e) {
|
|
36
|
-
e.target instanceof Node && (e.target === node || node.contains(e.target)) || "keyCode" in e && !keyboardKeys.includes(e.keyCode) || preventDefault(e);
|
|
37
|
-
};
|
|
38
|
-
return document.addEventListener("scroll", handleScroll, {
|
|
39
|
-
passive: !1
|
|
40
|
-
}), document.addEventListener("wheel", handleEvent, {
|
|
41
|
-
passive: !1
|
|
42
|
-
}), document.addEventListener("touchmove", handleEvent, {
|
|
43
|
-
passive: !1
|
|
44
|
-
}), document.addEventListener("keydown", handleEvent, {
|
|
45
|
-
passive: !1
|
|
46
|
-
}), function() {
|
|
47
|
-
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
7
|
+
var bodyEl = document.documentElement, previousBodyStyle = {
|
|
8
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
9
|
+
overflow: bodyEl.style.overflow
|
|
10
|
+
};
|
|
11
|
+
return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", function() {
|
|
12
|
+
Object.assign(bodyEl.style, previousBodyStyle);
|
|
13
|
+
};
|
|
51
14
|
}
|
|
52
15
|
}, [
|
|
53
|
-
enabled
|
|
54
|
-
nodeRef,
|
|
55
|
-
keyboardKeys
|
|
16
|
+
enabled
|
|
56
17
|
]);
|
|
57
18
|
};
|
|
58
19
|
export {
|
|
59
|
-
|
|
20
|
+
useDisableBodyScroll
|
|
60
21
|
};
|
|
61
22
|
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
-
"mappings": "AAAA,SAASA,
|
|
5
|
-
"names": ["useEffect", "canUseDOM", "window", "document", "createElement", "
|
|
4
|
+
"mappings": "AAAA,SAASA,iBAAiB;AAE1B,IAAMC,YAAY,WAAA;SAChB,OAAOC,SAAW,OAAe,CAAC,CAACA,OAAOC,YAAY,CAAC,CAACD,OAAOC,SAASC;GAE7DC,uBAAuB,SAACC,SAAAA;AACnCN,YAAU,WAAA;AACR,QAAI,GAACM,WAAW,CAACL,UAAAA,IAKjB;UAAMM,SAASJ,SAASK,iBAClBC,oBAAoB;QACxBC,iBAAiBH,OAAOI,MAAMD;QAC9BE,UAAUL,OAAOI,MAAMC;MACzB;AACAL,oBAAOI,MAAMD,kBAAkB,UAC/BH,OAAOI,MAAMC,WAAW,UAEjB,WAAA;AACLC,eAAOC,OAAOP,OAAOI,OAAOF,iBAAAA;MAC9B;;EACF,GAAG;IAACH;GAAQ;AACd;",
|
|
5
|
+
"names": ["useEffect", "canUseDOM", "window", "document", "createElement", "useDisableBodyScroll", "enabled", "bodyEl", "documentElement", "previousBodyStyle", "scrollbarGutter", "style", "overflow", "Object", "assign"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/remove-scroll",
|
|
3
|
-
"version": "1.130.
|
|
3
|
+
"version": "1.130.3",
|
|
4
4
|
"types": "./types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@tamagui/build": "1.130.
|
|
35
|
+
"@tamagui/build": "1.130.3",
|
|
36
36
|
"react": "*"
|
|
37
37
|
},
|
|
38
38
|
"publishConfig": {
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export const RemoveScroll = (props) => props.children
|
|
1
|
+
export const RemoveScroll = (props: any): any => props.children
|
|
2
|
+
export const getAllowedScrollableNode = (): any => {}
|
package/src/RemoveScroll.tsx
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { type ReactNode, useEffect, useRef } from 'react'
|
|
2
|
+
import { useDisableBodyScroll } from './useDisableScroll'
|
|
3
3
|
|
|
4
4
|
export type RemoveScrollProps = {
|
|
5
5
|
enabled?: boolean
|
|
6
6
|
children?: React.ReactNode
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export const RemoveScroll =
|
|
10
|
-
|
|
9
|
+
export const RemoveScroll = (props: RemoveScrollProps): ReactNode => {
|
|
10
|
+
useDisableBodyScroll(Boolean(props.enabled))
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// })
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<span ref={root} style={{ display: 'contents' }}>
|
|
18
|
-
{props.children}
|
|
19
|
-
</span>
|
|
20
|
-
)
|
|
21
|
-
})
|
|
12
|
+
return props.children
|
|
13
|
+
}
|
package/src/useDisableScroll.ts
CHANGED
|
@@ -1,75 +1,25 @@
|
|
|
1
|
-
import { useEffect
|
|
1
|
+
import { useEffect } from 'react'
|
|
2
2
|
|
|
3
3
|
const canUseDOM = () =>
|
|
4
4
|
typeof window !== 'undefined' && !!window.document && !!window.document.createElement
|
|
5
5
|
|
|
6
|
-
const
|
|
7
|
-
if (e.preventDefault) {
|
|
8
|
-
e.preventDefault()
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const useDisableScrollOutsideOf = (
|
|
13
|
-
nodeRef: React.RefObject<HTMLElement | null>,
|
|
14
|
-
options: {
|
|
15
|
-
enabled?: boolean
|
|
16
|
-
// space: 32, page up: 33, page down: 34, end: 35, home: 36
|
|
17
|
-
// left: 37, up: 38, right: 39, down: 40
|
|
18
|
-
keyboardKeys?: number[]
|
|
19
|
-
} = {}
|
|
20
|
-
) => {
|
|
21
|
-
const { enabled, keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40] } = options
|
|
22
|
-
|
|
6
|
+
export const useDisableBodyScroll = (enabled: boolean): void => {
|
|
23
7
|
useEffect(() => {
|
|
24
8
|
if (!enabled || !canUseDOM()) {
|
|
25
9
|
return
|
|
26
10
|
}
|
|
27
11
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const scrollEl = document.scrollingElement
|
|
34
|
-
if (!scrollEl || !(scrollEl instanceof HTMLElement)) {
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const previously = scrollEl.style.pointerEvents
|
|
39
|
-
scrollEl.style.pointerEvents = 'none'
|
|
40
|
-
|
|
41
|
-
const lockToScrollPos = [scrollEl.scrollLeft, scrollEl.scrollTop]
|
|
42
|
-
|
|
43
|
-
const handleScroll = (e: Event) => {
|
|
44
|
-
if (scrollEl) {
|
|
45
|
-
e.preventDefault()
|
|
46
|
-
scrollEl.scrollTo(lockToScrollPos[0], lockToScrollPos[1])
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const handleEvent = (e: WheelEvent | TouchEvent | KeyboardEvent) => {
|
|
51
|
-
if (e.target instanceof Node && (e.target === node || node.contains(e.target))) {
|
|
52
|
-
return
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if ('keyCode' in e && !keyboardKeys.includes(e.keyCode)) {
|
|
56
|
-
return
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
preventDefault(e)
|
|
12
|
+
// for 99% browsers this can replace all the events
|
|
13
|
+
const bodyEl = document.documentElement
|
|
14
|
+
const previousBodyStyle = {
|
|
15
|
+
scrollbarGutter: bodyEl.style.scrollbarGutter,
|
|
16
|
+
overflow: bodyEl.style.overflow,
|
|
60
17
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
document.addEventListener('wheel', handleEvent, { passive: false })
|
|
64
|
-
document.addEventListener('touchmove', handleEvent, { passive: false })
|
|
65
|
-
document.addEventListener('keydown', handleEvent, { passive: false })
|
|
18
|
+
bodyEl.style.scrollbarGutter = 'stable'
|
|
19
|
+
bodyEl.style.overflow = 'hidden'
|
|
66
20
|
|
|
67
21
|
return () => {
|
|
68
|
-
|
|
69
|
-
document.removeEventListener('scroll', handleScroll)
|
|
70
|
-
document.removeEventListener('wheel', handleEvent)
|
|
71
|
-
document.removeEventListener('touchmove', handleEvent)
|
|
72
|
-
document.removeEventListener('keydown', handleEvent)
|
|
22
|
+
Object.assign(bodyEl.style, previousBodyStyle)
|
|
73
23
|
}
|
|
74
|
-
}, [enabled
|
|
24
|
+
}, [enabled])
|
|
75
25
|
}
|
package/types/RemoveScroll.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
2
|
export type RemoveScrollProps = {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
children?: React.ReactNode;
|
|
5
5
|
};
|
|
6
|
-
export declare const RemoveScroll:
|
|
6
|
+
export declare const RemoveScroll: (props: RemoveScrollProps) => ReactNode;
|
|
7
|
+
|
|
7
8
|
//# sourceMappingURL=RemoveScroll.d.ts.map
|
|
@@ -1 +1,13 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAAA,cAAc,iBAAoC,OAAO;AAGzD,YAAY,oBAAoB;CAC9B;CACA,WAAW,MAAM;AAClB;AAED,OAAO,cAAM,eAAgBA,OAAO,sBAAoB",
|
|
3
|
+
"names": [
|
|
4
|
+
"props: RemoveScrollProps"
|
|
5
|
+
],
|
|
6
|
+
"sources": [
|
|
7
|
+
"src/RemoveScroll.tsx"
|
|
8
|
+
],
|
|
9
|
+
"sourcesContent": [
|
|
10
|
+
"import { type ReactNode, useEffect, useRef } from 'react'\nimport { useDisableBodyScroll } from './useDisableScroll'\n\nexport type RemoveScrollProps = {\n enabled?: boolean\n children?: React.ReactNode\n}\n\nexport const RemoveScroll = (props: RemoveScrollProps): ReactNode => {\n useDisableBodyScroll(Boolean(props.enabled))\n\n return props.children\n}\n"
|
|
11
|
+
],
|
|
12
|
+
"version": 3
|
|
13
|
+
}
|
|
@@ -1 +1,13 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAAA,OAAO,cAAM,eAAgBA;AAC7B,OAAO,cAAM",
|
|
3
|
+
"names": [
|
|
4
|
+
"props: any"
|
|
5
|
+
],
|
|
6
|
+
"sources": [
|
|
7
|
+
"src/RemoveScroll.native.tsx"
|
|
8
|
+
],
|
|
9
|
+
"sourcesContent": [
|
|
10
|
+
"export const RemoveScroll = (props: any): any => props.children\nexport const getAllowedScrollableNode = (): any => {}\n"
|
|
11
|
+
],
|
|
12
|
+
"version": 3
|
|
13
|
+
}
|
package/types/index.d.ts
CHANGED
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1,11 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAAA,cAAc",
|
|
3
|
+
"names": [],
|
|
4
|
+
"sources": [
|
|
5
|
+
"src/index.ts"
|
|
6
|
+
],
|
|
7
|
+
"sourcesContent": [
|
|
8
|
+
"export * from './RemoveScroll'\n"
|
|
9
|
+
],
|
|
10
|
+
"version": 3
|
|
11
|
+
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
|
|
3
|
-
keyboardKeys?: number[];
|
|
4
|
-
}) => void;
|
|
1
|
+
export declare const useDisableBodyScroll: (enabled: boolean) => void;
|
|
2
|
+
|
|
5
3
|
//# sourceMappingURL=useDisableScroll.d.ts.map
|
|
@@ -1 +1,13 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAKA,OAAO,cAAM,uBAAwBA",
|
|
3
|
+
"names": [
|
|
4
|
+
"enabled: boolean"
|
|
5
|
+
],
|
|
6
|
+
"sources": [
|
|
7
|
+
"src/useDisableScroll.ts"
|
|
8
|
+
],
|
|
9
|
+
"sourcesContent": [
|
|
10
|
+
"import { useEffect } from 'react'\n\nconst canUseDOM = () =>\n typeof window !== 'undefined' && !!window.document && !!window.document.createElement\n\nexport const useDisableBodyScroll = (enabled: boolean): void => {\n useEffect(() => {\n if (!enabled || !canUseDOM()) {\n return\n }\n\n // for 99% browsers this can replace all the events\n const bodyEl = document.documentElement\n const previousBodyStyle = {\n scrollbarGutter: bodyEl.style.scrollbarGutter,\n overflow: bodyEl.style.overflow,\n }\n bodyEl.style.scrollbarGutter = 'stable'\n bodyEl.style.overflow = 'hidden'\n\n return () => {\n Object.assign(bodyEl.style, previousBodyStyle)\n }\n }, [enabled])\n}\n"
|
|
11
|
+
],
|
|
12
|
+
"version": 3
|
|
13
|
+
}
|