@tamagui/remove-scroll 1.129.19 → 1.130.0
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 +11 -7
- package/dist/cjs/RemoveScroll.js +6 -4
- package/dist/cjs/RemoveScroll.js.map +2 -2
- package/dist/cjs/useDisableScroll.cjs +63 -0
- package/dist/cjs/useDisableScroll.js +46 -0
- package/dist/cjs/useDisableScroll.js.map +6 -0
- package/dist/cjs/useDisableScroll.native.js +81 -0
- package/dist/cjs/useDisableScroll.native.js.map +6 -0
- package/dist/esm/RemoveScroll.js +6 -5
- package/dist/esm/RemoveScroll.js.map +1 -1
- package/dist/esm/RemoveScroll.mjs +12 -7
- package/dist/esm/RemoveScroll.mjs.map +1 -1
- package/dist/esm/useDisableScroll.js +30 -0
- package/dist/esm/useDisableScroll.js.map +6 -0
- package/dist/esm/useDisableScroll.mjs +40 -0
- package/dist/esm/useDisableScroll.mjs.map +1 -0
- package/dist/esm/useDisableScroll.native.js +49 -0
- package/dist/esm/useDisableScroll.native.js.map +1 -0
- package/dist/jsx/RemoveScroll.js +6 -5
- package/dist/jsx/RemoveScroll.js.map +1 -1
- package/dist/jsx/RemoveScroll.mjs +12 -7
- package/dist/jsx/RemoveScroll.mjs.map +1 -1
- package/dist/jsx/useDisableScroll.js +30 -0
- package/dist/jsx/useDisableScroll.js.map +6 -0
- package/dist/jsx/useDisableScroll.mjs +40 -0
- package/dist/jsx/useDisableScroll.mjs.map +1 -0
- package/dist/jsx/useDisableScroll.native.js +61 -0
- package/dist/jsx/useDisableScroll.native.js.map +6 -0
- package/package.json +2 -5
- package/src/RemoveScroll.tsx +17 -8
- package/src/useDisableScroll.ts +75 -0
- package/types/RemoveScroll.d.ts +4 -7
- package/types/RemoveScroll.d.ts.map +1 -1
- package/types/useDisableScroll.d.ts +5 -0
- package/types/useDisableScroll.d.ts.map +1 -0
|
@@ -31,14 +31,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
31
31
|
}), mod);
|
|
32
32
|
var RemoveScroll_exports = {};
|
|
33
33
|
__export(RemoveScroll_exports, {
|
|
34
|
-
RemoveScroll: () => RemoveScroll
|
|
35
|
-
classNames: () => classNames
|
|
34
|
+
RemoveScroll: () => RemoveScroll
|
|
36
35
|
});
|
|
37
36
|
module.exports = __toCommonJS(RemoveScroll_exports);
|
|
38
37
|
var import_react = __toESM(require("react")),
|
|
39
|
-
import_react_remove_scroll = require("react-remove-scroll"),
|
|
40
38
|
import_jsx_runtime = require("react/jsx-runtime");
|
|
41
|
-
const RemoveScroll = import_react.default.memo(props =>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
+
});
|
package/dist/cjs/RemoveScroll.js
CHANGED
|
@@ -22,10 +22,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
22
22
|
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
23
23
|
var RemoveScroll_exports = {};
|
|
24
24
|
__export(RemoveScroll_exports, {
|
|
25
|
-
RemoveScroll: () => RemoveScroll
|
|
26
|
-
classNames: () => classNames
|
|
25
|
+
RemoveScroll: () => RemoveScroll
|
|
27
26
|
});
|
|
28
27
|
module.exports = __toCommonJS(RemoveScroll_exports);
|
|
29
|
-
var import_react = __toESM(require("react")),
|
|
30
|
-
const RemoveScroll = import_react.default.memo((props) =>
|
|
28
|
+
var import_react = __toESM(require("react")), import_jsx_runtime = require("react/jsx-runtime");
|
|
29
|
+
const RemoveScroll = import_react.default.memo((props) => {
|
|
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
|
+
});
|
|
31
33
|
//# sourceMappingURL=RemoveScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RemoveScroll.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
5
|
-
"names": ["React"
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B,2BAgB1B;AARG,MAAM,eAAe,aAAAA,QAAM,KAAK,CAAC,UAA6B;AACnE,QAAM,WAAO,qBAAoB,IAAI;AAMrC,SACE,4CAAC,UAAK,KAAK,MAAM,OAAO,EAAE,SAAS,WAAW,GAC3C,gBAAM,UACT;AAEJ,CAAC;",
|
|
5
|
+
"names": ["React"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: !0
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
__copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), mod);
|
|
21
|
+
var useDisableScroll_exports = {};
|
|
22
|
+
__export(useDisableScroll_exports, {
|
|
23
|
+
useDisableScrollOutsideOf: () => useDisableScrollOutsideOf
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(useDisableScroll_exports);
|
|
26
|
+
var import_react = require("react");
|
|
27
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
28
|
+
preventDefault = e => {
|
|
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;
|
|
36
|
+
(0, import_react.useEffect)(() => {
|
|
37
|
+
if (!enabled || !canUseDOM()) return;
|
|
38
|
+
const node = nodeRef.current;
|
|
39
|
+
if (!node) return;
|
|
40
|
+
const scrollEl = document.scrollingElement;
|
|
41
|
+
if (!scrollEl || !(scrollEl instanceof HTMLElement)) return;
|
|
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);
|
|
50
|
+
};
|
|
51
|
+
return document.addEventListener("scroll", handleScroll, {
|
|
52
|
+
passive: !1
|
|
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);
|
|
61
|
+
};
|
|
62
|
+
}, [enabled, nodeRef, keyboardKeys]);
|
|
63
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
8
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
15
|
+
var useDisableScroll_exports = {};
|
|
16
|
+
__export(useDisableScroll_exports, {
|
|
17
|
+
useDisableScrollOutsideOf: () => useDisableScrollOutsideOf
|
|
18
|
+
});
|
|
19
|
+
module.exports = __toCommonJS(useDisableScroll_exports);
|
|
20
|
+
var import_react = require("react");
|
|
21
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement, preventDefault = (e) => {
|
|
22
|
+
e.preventDefault && e.preventDefault();
|
|
23
|
+
}, useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
24
|
+
const { enabled, keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40] } = options;
|
|
25
|
+
(0, import_react.useEffect)(() => {
|
|
26
|
+
if (!enabled || !canUseDOM())
|
|
27
|
+
return;
|
|
28
|
+
const node = nodeRef.current;
|
|
29
|
+
if (!node)
|
|
30
|
+
return;
|
|
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);
|
|
40
|
+
};
|
|
41
|
+
return document.addEventListener("scroll", handleScroll, { passive: !1 }), document.addEventListener("wheel", handleEvent, { passive: !1 }), document.addEventListener("touchmove", handleEvent, { passive: !1 }), document.addEventListener("keydown", handleEvent, { passive: !1 }), () => {
|
|
42
|
+
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
43
|
+
};
|
|
44
|
+
}, [enabled, nodeRef, keyboardKeys]);
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC;AAElC,MAAM,YAAY,MAChB,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS,eAEpE,iBAAiB,CAAC,MAA+C;AACrE,EAAI,EAAE,kBACJ,EAAE,eAAe;AAErB,GAEa,4BAA4B,CACvC,SACA,UAKI,CAAC,MACF;AACH,QAAM,EAAE,SAAS,eAAe,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI;AAEzE,8BAAU,MAAM;AACd,QAAI,CAAC,WAAW,CAAC,UAAU;AACzB;AAGF,UAAM,OAAO,QAAQ;AACrB,QAAI,CAAC;AACH;AAGF,UAAM,WAAW,SAAS;AAC1B,QAAI,CAAC,YAAY,EAAE,oBAAoB;AACrC;AAGF,UAAM,aAAa,SAAS,MAAM;AAClC,aAAS,MAAM,gBAAgB;AAE/B,UAAM,kBAAkB,CAAC,SAAS,YAAY,SAAS,SAAS,GAE1D,eAAe,CAAC,MAAa;AACjC,MAAI,aACF,EAAE,eAAe,GACjB,SAAS,SAAS,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,CAAC;AAAA,IAE5D,GAEM,cAAc,CAAC,MAA+C;AAClE,MAAI,EAAE,kBAAkB,SAAS,EAAE,WAAW,QAAQ,KAAK,SAAS,EAAE,MAAM,MAIxE,aAAa,KAAK,CAAC,aAAa,SAAS,EAAE,OAAO,KAItD,eAAe,CAAC;AAAA,IAClB;AAEA,oBAAS,iBAAiB,UAAU,cAAc,EAAE,SAAS,GAAM,CAAC,GACpE,SAAS,iBAAiB,SAAS,aAAa,EAAE,SAAS,GAAM,CAAC,GAClE,SAAS,iBAAiB,aAAa,aAAa,EAAE,SAAS,GAAM,CAAC,GACtE,SAAS,iBAAiB,WAAW,aAAa,EAAE,SAAS,GAAM,CAAC,GAE7D,MAAM;AACX,eAAS,MAAM,gBAAgB,YAC/B,SAAS,oBAAoB,UAAU,YAAY,GACnD,SAAS,oBAAoB,SAAS,WAAW,GACjD,SAAS,oBAAoB,aAAa,WAAW,GACrD,SAAS,oBAAoB,WAAW,WAAW;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,SAAS,SAAS,YAAY,CAAC;AACrC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
9
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
return to;
|
|
14
|
+
};
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
16
|
+
var useDisableScroll_exports = {};
|
|
17
|
+
__export(useDisableScroll_exports, {
|
|
18
|
+
useDisableScrollOutsideOf: () => useDisableScrollOutsideOf
|
|
19
|
+
});
|
|
20
|
+
module.exports = __toCommonJS(useDisableScroll_exports);
|
|
21
|
+
var import_react = require("react"), canUseDOM = function() {
|
|
22
|
+
return typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
23
|
+
}, preventDefault = function(e) {
|
|
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;
|
|
41
|
+
(0, import_react.useEffect)(function() {
|
|
42
|
+
if (!(!enabled || !canUseDOM())) {
|
|
43
|
+
var node = nodeRef.current;
|
|
44
|
+
if (node) {
|
|
45
|
+
var scrollEl = document.scrollingElement;
|
|
46
|
+
if (!(!scrollEl || !(scrollEl instanceof HTMLElement))) {
|
|
47
|
+
var previously = scrollEl.style.pointerEvents;
|
|
48
|
+
scrollEl.style.pointerEvents = "none";
|
|
49
|
+
var lockToScrollPos = [
|
|
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
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}, [
|
|
72
|
+
enabled,
|
|
73
|
+
nodeRef,
|
|
74
|
+
keyboardKeys
|
|
75
|
+
]);
|
|
76
|
+
};
|
|
77
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
78
|
+
0 && (module.exports = {
|
|
79
|
+
useDisableScrollOutsideOf
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;mBAAkC,kBAE5BA,YAAY,WAAA;SAChB,OAAOC,SAAW,OAAe,CAAC,CAACA,OAAOC,YAAY,CAAC,CAACD,OAAOC,SAASC;GAEpEC,iBAAiB,SAACC,GAAAA;AACtB,EAAIA,EAAED,kBACJC,EAAED,eAAc;AAEpB,GAEaE,4BAA4B,SACvCC,SAAAA;MACAC,UAAAA,UAAAA,SAAAA,KAAAA,UAAAA,CAAAA,MAAAA,SAAAA,UAAAA,CAAAA;;;IAKI,CAAC;KAEC,EAAEC,SAASC,eAAe;IAAC;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAG,IAAKF;AAEzEG,8BAAU,WAAA;AACR,QAAI,GAACF,WAAW,CAACT,UAAAA,IAIjB;UAAMY,OAAOL,QAAQM;AACrB,UAAKD,MAIL;YAAME,WAAWZ,SAASa;AAC1B,YAAI,GAACD,YAAY,EAAEA,oBAAoBE,eAIvC;cAAMC,aAAaH,SAASI,MAAMC;AAClCL,mBAASI,MAAMC,gBAAgB;AAE/B,cAAMC,kBAAkB;YAACN,SAASO;YAAYP,SAASQ;aAEjDC,eAAe,SAAClB,GAAAA;AACpB,YAAIS,aACFT,EAAED,eAAc,GAChBU,SAASU,SAASJ,gBAAgB,CAAA,GAAIA,gBAAgB,CAAA,CAAE;UAE5D,GAEMK,cAAc,SAACpB,GAAAA;AACnB,YAAIA,EAAEqB,kBAAkBC,SAAStB,EAAEqB,WAAWd,QAAQA,KAAKgB,SAASvB,EAAEqB,MAAM,MAIxE,aAAarB,KAAK,CAACK,aAAamB,SAASxB,EAAEyB,OAAO,KAItD1B,eAAeC,CAAAA;UACjB;AAEAH,0BAAS6B,iBAAiB,UAAUR,cAAc;YAAES,SAAS;UAAM,CAAA,GACnE9B,SAAS6B,iBAAiB,SAASN,aAAa;YAAEO,SAAS;UAAM,CAAA,GACjE9B,SAAS6B,iBAAiB,aAAaN,aAAa;YAAEO,SAAS;UAAM,CAAA,GACrE9B,SAAS6B,iBAAiB,WAAWN,aAAa;YAAEO,SAAS;UAAM,CAAA,GAE5D,WAAA;AACLlB,qBAASI,MAAMC,gBAAgBF,YAC/Bf,SAAS+B,oBAAoB,UAAUV,YAAAA,GACvCrB,SAAS+B,oBAAoB,SAASR,WAAAA,GACtCvB,SAAS+B,oBAAoB,aAAaR,WAAAA,GAC1CvB,SAAS+B,oBAAoB,WAAWR,WAAAA;UAC1C;;;;EACF,GAAG;IAAChB;IAASF;IAASG;GAAa;AACrC;",
|
|
5
|
+
"names": ["canUseDOM", "window", "document", "createElement", "preventDefault", "e", "useDisableScrollOutsideOf", "nodeRef", "options", "enabled", "keyboardKeys", "useEffect", "node", "current", "scrollEl", "scrollingElement", "HTMLElement", "previously", "style", "pointerEvents", "lockToScrollPos", "scrollLeft", "scrollTop", "handleScroll", "scrollTo", "handleEvent", "target", "Node", "contains", "includes", "keyCode", "addEventListener", "passive", "removeEventListener"]
|
|
6
|
+
}
|
package/dist/esm/RemoveScroll.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { RemoveScroll as RS } from "react-remove-scroll";
|
|
1
|
+
import React, { useRef } from "react";
|
|
3
2
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
const RemoveScroll = React.memo((props) =>
|
|
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
|
+
});
|
|
5
7
|
export {
|
|
6
|
-
RemoveScroll
|
|
7
|
-
classNames
|
|
8
|
+
RemoveScroll
|
|
8
9
|
};
|
|
9
10
|
//# sourceMappingURL=RemoveScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RemoveScroll.tsx"],
|
|
4
|
-
"mappings": "AAAA,OAAO,
|
|
4
|
+
"mappings": "AAAA,OAAO,SAAS,cAAc;AAgB1B;AARG,MAAM,eAAe,MAAM,KAAK,CAAC,UAA6B;AACnE,QAAM,OAAO,OAAoB,IAAI;AAMrC,SACE,oBAAC,UAAK,KAAK,MAAM,OAAO,EAAE,SAAS,WAAW,GAC3C,gBAAM,UACT;AAEJ,CAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { RemoveScroll as RS } from "react-remove-scroll";
|
|
1
|
+
import React, { useRef } from "react";
|
|
3
2
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
const RemoveScroll = React.memo(props =>
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
+
});
|
|
13
|
+
export { RemoveScroll };
|
|
9
14
|
//# sourceMappingURL=RemoveScroll.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useRef","jsx","RemoveScroll","memo","props","root","ref","style","display","children"],"sources":["../../src/RemoveScroll.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,IAASC,MAAA,QAAc;AAgB1B,SAAAC,GAAA;AARG,MAAMC,YAAA,GAAeH,KAAA,CAAMI,IAAA,CAAMC,KAAA,IAA6B;EACnE,MAAMC,IAAA,GAAOL,MAAA,CAAoB,IAAI;EAMrC,OACE,eAAAC,GAAA,CAAC;IAAKK,GAAA,EAAKD,IAAA;IAAME,KAAA,EAAO;MAAEC,OAAA,EAAS;IAAW;IAC3CC,QAAA,EAAAL,KAAA,CAAMK;EAAA,CACT;AAEJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement, preventDefault = (e) => {
|
|
3
|
+
e.preventDefault && e.preventDefault();
|
|
4
|
+
}, useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
5
|
+
const { enabled, keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40] } = options;
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
if (!enabled || !canUseDOM())
|
|
8
|
+
return;
|
|
9
|
+
const node = nodeRef.current;
|
|
10
|
+
if (!node)
|
|
11
|
+
return;
|
|
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);
|
|
21
|
+
};
|
|
22
|
+
return document.addEventListener("scroll", handleScroll, { passive: !1 }), document.addEventListener("wheel", handleEvent, { passive: !1 }), document.addEventListener("touchmove", handleEvent, { passive: !1 }), document.addEventListener("keydown", handleEvent, { passive: !1 }), () => {
|
|
23
|
+
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
24
|
+
};
|
|
25
|
+
}, [enabled, nodeRef, keyboardKeys]);
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
useDisableScrollOutsideOf
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
+
"mappings": "AAAA,SAAS,iBAAyB;AAElC,MAAM,YAAY,MAChB,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS,eAEpE,iBAAiB,CAAC,MAA+C;AACrE,EAAI,EAAE,kBACJ,EAAE,eAAe;AAErB,GAEa,4BAA4B,CACvC,SACA,UAKI,CAAC,MACF;AACH,QAAM,EAAE,SAAS,eAAe,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI;AAEzE,YAAU,MAAM;AACd,QAAI,CAAC,WAAW,CAAC,UAAU;AACzB;AAGF,UAAM,OAAO,QAAQ;AACrB,QAAI,CAAC;AACH;AAGF,UAAM,WAAW,SAAS;AAC1B,QAAI,CAAC,YAAY,EAAE,oBAAoB;AACrC;AAGF,UAAM,aAAa,SAAS,MAAM;AAClC,aAAS,MAAM,gBAAgB;AAE/B,UAAM,kBAAkB,CAAC,SAAS,YAAY,SAAS,SAAS,GAE1D,eAAe,CAAC,MAAa;AACjC,MAAI,aACF,EAAE,eAAe,GACjB,SAAS,SAAS,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,CAAC;AAAA,IAE5D,GAEM,cAAc,CAAC,MAA+C;AAClE,MAAI,EAAE,kBAAkB,SAAS,EAAE,WAAW,QAAQ,KAAK,SAAS,EAAE,MAAM,MAIxE,aAAa,KAAK,CAAC,aAAa,SAAS,EAAE,OAAO,KAItD,eAAe,CAAC;AAAA,IAClB;AAEA,oBAAS,iBAAiB,UAAU,cAAc,EAAE,SAAS,GAAM,CAAC,GACpE,SAAS,iBAAiB,SAAS,aAAa,EAAE,SAAS,GAAM,CAAC,GAClE,SAAS,iBAAiB,aAAa,aAAa,EAAE,SAAS,GAAM,CAAC,GACtE,SAAS,iBAAiB,WAAW,aAAa,EAAE,SAAS,GAAM,CAAC,GAE7D,MAAM;AACX,eAAS,MAAM,gBAAgB,YAC/B,SAAS,oBAAoB,UAAU,YAAY,GACnD,SAAS,oBAAoB,SAAS,WAAW,GACjD,SAAS,oBAAoB,aAAa,WAAW,GACrD,SAAS,oBAAoB,WAAW,WAAW;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,SAAS,SAAS,YAAY,CAAC;AACrC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
3
|
+
preventDefault = e => {
|
|
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;
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!enabled || !canUseDOM()) return;
|
|
13
|
+
const node = nodeRef.current;
|
|
14
|
+
if (!node) return;
|
|
15
|
+
const scrollEl = document.scrollingElement;
|
|
16
|
+
if (!scrollEl || !(scrollEl instanceof HTMLElement)) return;
|
|
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);
|
|
25
|
+
};
|
|
26
|
+
return document.addEventListener("scroll", handleScroll, {
|
|
27
|
+
passive: !1
|
|
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);
|
|
36
|
+
};
|
|
37
|
+
}, [enabled, nodeRef, keyboardKeys]);
|
|
38
|
+
};
|
|
39
|
+
export { useDisableScrollOutsideOf };
|
|
40
|
+
//# sourceMappingURL=useDisableScroll.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","preventDefault","e","useDisableScrollOutsideOf","nodeRef","options","enabled","keyboardKeys","node","current","scrollEl","scrollingElement","HTMLElement","previously","style","pointerEvents","lockToScrollPos","scrollLeft","scrollTop","handleScroll","scrollTo","handleEvent","target","Node","contains","includes","keyCode","addEventListener","passive","removeEventListener"],"sources":["../../src/useDisableScroll.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAyB;AAElC,MAAMC,SAAA,GAAYA,CAAA,KAChB,OAAOC,MAAA,GAAW,OAAe,CAAC,CAACA,MAAA,CAAOC,QAAA,IAAY,CAAC,CAACD,MAAA,CAAOC,QAAA,CAASC,aAAA;EAEpEC,cAAA,GAAkBC,CAAA,IAA+C;IACjEA,CAAA,CAAED,cAAA,IACJC,CAAA,CAAED,cAAA,CAAe;EAErB;EAEaE,yBAAA,GAA4BA,CACvCC,OAAA,EACAC,OAAA,GAKI,CAAC,MACF;IACH,MAAM;MAAEC,OAAA;MAASC,YAAA,GAAe,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;IAAE,IAAIF,OAAA;IAEzET,SAAA,CAAU,MAAM;MACd,IAAI,CAACU,OAAA,IAAW,CAACT,SAAA,CAAU,GACzB;MAGF,MAAMW,IAAA,GAAOJ,OAAA,CAAQK,OAAA;MACrB,IAAI,CAACD,IAAA,EACH;MAGF,MAAME,QAAA,GAAWX,QAAA,CAASY,gBAAA;MAC1B,IAAI,CAACD,QAAA,IAAY,EAAEA,QAAA,YAAoBE,WAAA,GACrC;MAGF,MAAMC,UAAA,GAAaH,QAAA,CAASI,KAAA,CAAMC,aAAA;MAClCL,QAAA,CAASI,KAAA,CAAMC,aAAA,GAAgB;MAE/B,MAAMC,eAAA,GAAkB,CAACN,QAAA,CAASO,UAAA,EAAYP,QAAA,CAASQ,SAAS;QAE1DC,YAAA,GAAgBjB,CAAA,IAAa;UAC7BQ,QAAA,KACFR,CAAA,CAAED,cAAA,CAAe,GACjBS,QAAA,CAASU,QAAA,CAASJ,eAAA,CAAgB,CAAC,GAAGA,eAAA,CAAgB,CAAC,CAAC;QAE5D;QAEMK,WAAA,GAAenB,CAAA,IAA+C;UAC9DA,CAAA,CAAEoB,MAAA,YAAkBC,IAAA,KAASrB,CAAA,CAAEoB,MAAA,KAAWd,IAAA,IAAQA,IAAA,CAAKgB,QAAA,CAAStB,CAAA,CAAEoB,MAAM,MAIxE,aAAapB,CAAA,IAAK,CAACK,YAAA,CAAakB,QAAA,CAASvB,CAAA,CAAEwB,OAAO,KAItDzB,cAAA,CAAeC,CAAC;QAClB;MAEA,OAAAH,QAAA,CAAS4B,gBAAA,CAAiB,UAAUR,YAAA,EAAc;QAAES,OAAA,EAAS;MAAM,CAAC,GACpE7B,QAAA,CAAS4B,gBAAA,CAAiB,SAASN,WAAA,EAAa;QAAEO,OAAA,EAAS;MAAM,CAAC,GAClE7B,QAAA,CAAS4B,gBAAA,CAAiB,aAAaN,WAAA,EAAa;QAAEO,OAAA,EAAS;MAAM,CAAC,GACtE7B,QAAA,CAAS4B,gBAAA,CAAiB,WAAWN,WAAA,EAAa;QAAEO,OAAA,EAAS;MAAM,CAAC,GAE7D,MAAM;QACXlB,QAAA,CAASI,KAAA,CAAMC,aAAA,GAAgBF,UAAA,EAC/Bd,QAAA,CAAS8B,mBAAA,CAAoB,UAAUV,YAAY,GACnDpB,QAAA,CAAS8B,mBAAA,CAAoB,SAASR,WAAW,GACjDtB,QAAA,CAAS8B,mBAAA,CAAoB,aAAaR,WAAW,GACrDtB,QAAA,CAAS8B,mBAAA,CAAoB,WAAWR,WAAW;MACrD;IACF,GAAG,CAACf,OAAA,EAASF,OAAA,EAASG,YAAY,CAAC;EACrC","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
var canUseDOM = function () {
|
|
3
|
+
return typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
4
|
+
},
|
|
5
|
+
preventDefault = function (e) {
|
|
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;
|
|
17
|
+
useEffect(function () {
|
|
18
|
+
if (!(!enabled || !canUseDOM())) {
|
|
19
|
+
var node = nodeRef.current;
|
|
20
|
+
if (node) {
|
|
21
|
+
var scrollEl = document.scrollingElement;
|
|
22
|
+
if (!(!scrollEl || !(scrollEl instanceof HTMLElement))) {
|
|
23
|
+
var previously = scrollEl.style.pointerEvents;
|
|
24
|
+
scrollEl.style.pointerEvents = "none";
|
|
25
|
+
var lockToScrollPos = [scrollEl.scrollLeft, scrollEl.scrollTop],
|
|
26
|
+
handleScroll = function (e) {
|
|
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
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, [enabled, nodeRef, keyboardKeys]);
|
|
47
|
+
};
|
|
48
|
+
export { useDisableScrollOutsideOf };
|
|
49
|
+
//# sourceMappingURL=useDisableScroll.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","preventDefault","e","useDisableScrollOutsideOf","nodeRef","options","arguments","length","enabled","keyboardKeys","node","current","scrollEl","scrollingElement"],"sources":["../../src/useDisableScroll.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAyB;AAElC,IAAAC,SAAM,YAAAA,CAAA,EACJ;IAGI,OAAE,OAAAC,MACJ,GAAE,SAAAA,MAAe,CAAAC,QAAA,MAAAD,MAAA,CAAAC,QAAA,CAAAC,aAAA;EAErB;EAEaC,cAAA,YAAAA,CAAAC,CAAA,EACX;IAQAA,CAAA,CAAAD,cAAQ,IAASC,CAAA,CAAAD,cAAgB,CAAI;EAErC;EAAAE,yBAAgB,YAAAA,CAAAC,OAAA;IACd,IAAAC,OAAK,GAAAC,SAAY,CAAAC,MAAU,QAAAD,SAAA,iBAAAA,SAAA;MACzB;MAGF;MACA,EACE;MAAA;QAAAE,OAAA;QAAAC,YAAA,IAGF,IACA,IACE,IAGF,IACA,IAEA,IAGE,EAAI,EAIN,IAGE,EAAI;MASN,IAAAJ,OAAA;IAEAT,SAAA,aAAS;MAMP,OAAAY,OAAS,IAAM,CAAAX,SAAA,KAAgB;QAKjC,IAAAa,IAAA,GAAAN,OAAA,CAAAO,OAAA;QACE,IAAAD,IAAA,EAAS;UACf,IAAAE,QAAA,GAAAb,QAAA,CAAAc,gBAAA","ignoreList":[]}
|
package/dist/jsx/RemoveScroll.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { RemoveScroll as RS } from "react-remove-scroll";
|
|
1
|
+
import React, { useRef } from "react";
|
|
3
2
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
const RemoveScroll = React.memo((props) =>
|
|
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
|
+
});
|
|
5
7
|
export {
|
|
6
|
-
RemoveScroll
|
|
7
|
-
classNames
|
|
8
|
+
RemoveScroll
|
|
8
9
|
};
|
|
9
10
|
//# sourceMappingURL=RemoveScroll.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RemoveScroll.tsx"],
|
|
4
|
-
"mappings": "AAAA,OAAO,
|
|
4
|
+
"mappings": "AAAA,OAAO,SAAS,cAAc;AAgB1B;AARG,MAAM,eAAe,MAAM,KAAK,CAAC,UAA6B;AACnE,QAAM,OAAO,OAAoB,IAAI;AAMrC,SACE,oBAAC,UAAK,KAAK,MAAM,OAAO,EAAE,SAAS,WAAW,GAC3C,gBAAM,UACT;AAEJ,CAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { RemoveScroll as RS } from "react-remove-scroll";
|
|
1
|
+
import React, { useRef } from "react";
|
|
3
2
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
const RemoveScroll = React.memo(props =>
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
+
});
|
|
13
|
+
export { RemoveScroll };
|
|
9
14
|
//# sourceMappingURL=RemoveScroll.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useRef","jsx","RemoveScroll","memo","props","root","ref","style","display","children"],"sources":["../../src/RemoveScroll.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,IAASC,MAAA,QAAc;AAgB1B,SAAAC,GAAA;AARG,MAAMC,YAAA,GAAeH,KAAA,CAAMI,IAAA,CAAMC,KAAA,IAA6B;EACnE,MAAMC,IAAA,GAAOL,MAAA,CAAoB,IAAI;EAMrC,OACE,eAAAC,GAAA,CAAC;IAAKK,GAAA,EAAKD,IAAA;IAAME,KAAA,EAAO;MAAEC,OAAA,EAAS;IAAW;IAC3CC,QAAA,EAAAL,KAAA,CAAMK;EAAA,CACT;AAEJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement, preventDefault = (e) => {
|
|
3
|
+
e.preventDefault && e.preventDefault();
|
|
4
|
+
}, useDisableScrollOutsideOf = (nodeRef, options = {}) => {
|
|
5
|
+
const { enabled, keyboardKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40] } = options;
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
if (!enabled || !canUseDOM())
|
|
8
|
+
return;
|
|
9
|
+
const node = nodeRef.current;
|
|
10
|
+
if (!node)
|
|
11
|
+
return;
|
|
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);
|
|
21
|
+
};
|
|
22
|
+
return document.addEventListener("scroll", handleScroll, { passive: !1 }), document.addEventListener("wheel", handleEvent, { passive: !1 }), document.addEventListener("touchmove", handleEvent, { passive: !1 }), document.addEventListener("keydown", handleEvent, { passive: !1 }), () => {
|
|
23
|
+
scrollEl.style.pointerEvents = previously, document.removeEventListener("scroll", handleScroll), document.removeEventListener("wheel", handleEvent), document.removeEventListener("touchmove", handleEvent), document.removeEventListener("keydown", handleEvent);
|
|
24
|
+
};
|
|
25
|
+
}, [enabled, nodeRef, keyboardKeys]);
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
useDisableScrollOutsideOf
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
+
"mappings": "AAAA,SAAS,iBAAyB;AAElC,MAAM,YAAY,MAChB,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS,eAEpE,iBAAiB,CAAC,MAA+C;AACrE,EAAI,EAAE,kBACJ,EAAE,eAAe;AAErB,GAEa,4BAA4B,CACvC,SACA,UAKI,CAAC,MACF;AACH,QAAM,EAAE,SAAS,eAAe,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI;AAEzE,YAAU,MAAM;AACd,QAAI,CAAC,WAAW,CAAC,UAAU;AACzB;AAGF,UAAM,OAAO,QAAQ;AACrB,QAAI,CAAC;AACH;AAGF,UAAM,WAAW,SAAS;AAC1B,QAAI,CAAC,YAAY,EAAE,oBAAoB;AACrC;AAGF,UAAM,aAAa,SAAS,MAAM;AAClC,aAAS,MAAM,gBAAgB;AAE/B,UAAM,kBAAkB,CAAC,SAAS,YAAY,SAAS,SAAS,GAE1D,eAAe,CAAC,MAAa;AACjC,MAAI,aACF,EAAE,eAAe,GACjB,SAAS,SAAS,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,CAAC;AAAA,IAE5D,GAEM,cAAc,CAAC,MAA+C;AAClE,MAAI,EAAE,kBAAkB,SAAS,EAAE,WAAW,QAAQ,KAAK,SAAS,EAAE,MAAM,MAIxE,aAAa,KAAK,CAAC,aAAa,SAAS,EAAE,OAAO,KAItD,eAAe,CAAC;AAAA,IAClB;AAEA,oBAAS,iBAAiB,UAAU,cAAc,EAAE,SAAS,GAAM,CAAC,GACpE,SAAS,iBAAiB,SAAS,aAAa,EAAE,SAAS,GAAM,CAAC,GAClE,SAAS,iBAAiB,aAAa,aAAa,EAAE,SAAS,GAAM,CAAC,GACtE,SAAS,iBAAiB,WAAW,aAAa,EAAE,SAAS,GAAM,CAAC,GAE7D,MAAM;AACX,eAAS,MAAM,gBAAgB,YAC/B,SAAS,oBAAoB,UAAU,YAAY,GACnD,SAAS,oBAAoB,SAAS,WAAW,GACjD,SAAS,oBAAoB,aAAa,WAAW,GACrD,SAAS,oBAAoB,WAAW,WAAW;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,SAAS,SAAS,YAAY,CAAC;AACrC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement,
|
|
3
|
+
preventDefault = e => {
|
|
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;
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!enabled || !canUseDOM()) return;
|
|
13
|
+
const node = nodeRef.current;
|
|
14
|
+
if (!node) return;
|
|
15
|
+
const scrollEl = document.scrollingElement;
|
|
16
|
+
if (!scrollEl || !(scrollEl instanceof HTMLElement)) return;
|
|
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);
|
|
25
|
+
};
|
|
26
|
+
return document.addEventListener("scroll", handleScroll, {
|
|
27
|
+
passive: !1
|
|
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);
|
|
36
|
+
};
|
|
37
|
+
}, [enabled, nodeRef, keyboardKeys]);
|
|
38
|
+
};
|
|
39
|
+
export { useDisableScrollOutsideOf };
|
|
40
|
+
//# sourceMappingURL=useDisableScroll.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","canUseDOM","window","document","createElement","preventDefault","e","useDisableScrollOutsideOf","nodeRef","options","enabled","keyboardKeys","node","current","scrollEl","scrollingElement","HTMLElement","previously","style","pointerEvents","lockToScrollPos","scrollLeft","scrollTop","handleScroll","scrollTo","handleEvent","target","Node","contains","includes","keyCode","addEventListener","passive","removeEventListener"],"sources":["../../src/useDisableScroll.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAyB;AAElC,MAAMC,SAAA,GAAYA,CAAA,KAChB,OAAOC,MAAA,GAAW,OAAe,CAAC,CAACA,MAAA,CAAOC,QAAA,IAAY,CAAC,CAACD,MAAA,CAAOC,QAAA,CAASC,aAAA;EAEpEC,cAAA,GAAkBC,CAAA,IAA+C;IACjEA,CAAA,CAAED,cAAA,IACJC,CAAA,CAAED,cAAA,CAAe;EAErB;EAEaE,yBAAA,GAA4BA,CACvCC,OAAA,EACAC,OAAA,GAKI,CAAC,MACF;IACH,MAAM;MAAEC,OAAA;MAASC,YAAA,GAAe,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;IAAE,IAAIF,OAAA;IAEzET,SAAA,CAAU,MAAM;MACd,IAAI,CAACU,OAAA,IAAW,CAACT,SAAA,CAAU,GACzB;MAGF,MAAMW,IAAA,GAAOJ,OAAA,CAAQK,OAAA;MACrB,IAAI,CAACD,IAAA,EACH;MAGF,MAAME,QAAA,GAAWX,QAAA,CAASY,gBAAA;MAC1B,IAAI,CAACD,QAAA,IAAY,EAAEA,QAAA,YAAoBE,WAAA,GACrC;MAGF,MAAMC,UAAA,GAAaH,QAAA,CAASI,KAAA,CAAMC,aAAA;MAClCL,QAAA,CAASI,KAAA,CAAMC,aAAA,GAAgB;MAE/B,MAAMC,eAAA,GAAkB,CAACN,QAAA,CAASO,UAAA,EAAYP,QAAA,CAASQ,SAAS;QAE1DC,YAAA,GAAgBjB,CAAA,IAAa;UAC7BQ,QAAA,KACFR,CAAA,CAAED,cAAA,CAAe,GACjBS,QAAA,CAASU,QAAA,CAASJ,eAAA,CAAgB,CAAC,GAAGA,eAAA,CAAgB,CAAC,CAAC;QAE5D;QAEMK,WAAA,GAAenB,CAAA,IAA+C;UAC9DA,CAAA,CAAEoB,MAAA,YAAkBC,IAAA,KAASrB,CAAA,CAAEoB,MAAA,KAAWd,IAAA,IAAQA,IAAA,CAAKgB,QAAA,CAAStB,CAAA,CAAEoB,MAAM,MAIxE,aAAapB,CAAA,IAAK,CAACK,YAAA,CAAakB,QAAA,CAASvB,CAAA,CAAEwB,OAAO,KAItDzB,cAAA,CAAeC,CAAC;QAClB;MAEA,OAAAH,QAAA,CAAS4B,gBAAA,CAAiB,UAAUR,YAAA,EAAc;QAAES,OAAA,EAAS;MAAM,CAAC,GACpE7B,QAAA,CAAS4B,gBAAA,CAAiB,SAASN,WAAA,EAAa;QAAEO,OAAA,EAAS;MAAM,CAAC,GAClE7B,QAAA,CAAS4B,gBAAA,CAAiB,aAAaN,WAAA,EAAa;QAAEO,OAAA,EAAS;MAAM,CAAC,GACtE7B,QAAA,CAAS4B,gBAAA,CAAiB,WAAWN,WAAA,EAAa;QAAEO,OAAA,EAAS;MAAM,CAAC,GAE7D,MAAM;QACXlB,QAAA,CAASI,KAAA,CAAMC,aAAA,GAAgBF,UAAA,EAC/Bd,QAAA,CAAS8B,mBAAA,CAAoB,UAAUV,YAAY,GACnDpB,QAAA,CAAS8B,mBAAA,CAAoB,SAASR,WAAW,GACjDtB,QAAA,CAAS8B,mBAAA,CAAoB,aAAaR,WAAW,GACrDtB,QAAA,CAAS8B,mBAAA,CAAoB,WAAWR,WAAW;MACrD;IACF,GAAG,CAACf,OAAA,EAASF,OAAA,EAASG,YAAY,CAAC;EACrC","ignoreList":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
var canUseDOM = function() {
|
|
3
|
+
return typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
4
|
+
}, preventDefault = function(e) {
|
|
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;
|
|
22
|
+
useEffect(function() {
|
|
23
|
+
if (!(!enabled || !canUseDOM())) {
|
|
24
|
+
var node = nodeRef.current;
|
|
25
|
+
if (node) {
|
|
26
|
+
var scrollEl = document.scrollingElement;
|
|
27
|
+
if (!(!scrollEl || !(scrollEl instanceof HTMLElement))) {
|
|
28
|
+
var previously = scrollEl.style.pointerEvents;
|
|
29
|
+
scrollEl.style.pointerEvents = "none";
|
|
30
|
+
var lockToScrollPos = [
|
|
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
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}, [
|
|
53
|
+
enabled,
|
|
54
|
+
nodeRef,
|
|
55
|
+
keyboardKeys
|
|
56
|
+
]);
|
|
57
|
+
};
|
|
58
|
+
export {
|
|
59
|
+
useDisableScrollOutsideOf
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
+
"mappings": "AAAA,SAASA,iBAAyB;AAElC,IAAMC,YAAY,WAAA;SAChB,OAAOC,SAAW,OAAe,CAAC,CAACA,OAAOC,YAAY,CAAC,CAACD,OAAOC,SAASC;GAEpEC,iBAAiB,SAACC,GAAAA;AACtB,EAAIA,EAAED,kBACJC,EAAED,eAAc;AAEpB,GAEaE,4BAA4B,SACvCC,SAAAA;MACAC,UAAAA,UAAAA,SAAAA,KAAAA,UAAAA,CAAAA,MAAAA,SAAAA,UAAAA,CAAAA;;;IAKI,CAAC;KAEC,EAAEC,SAASC,eAAe;IAAC;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAG,IAAKF;AAEzET,YAAU,WAAA;AACR,QAAI,GAACU,WAAW,CAACT,UAAAA,IAIjB;UAAMW,OAAOJ,QAAQK;AACrB,UAAKD,MAIL;YAAME,WAAWX,SAASY;AAC1B,YAAI,GAACD,YAAY,EAAEA,oBAAoBE,eAIvC;cAAMC,aAAaH,SAASI,MAAMC;AAClCL,mBAASI,MAAMC,gBAAgB;AAE/B,cAAMC,kBAAkB;YAACN,SAASO;YAAYP,SAASQ;aAEjDC,eAAe,SAACjB,GAAAA;AACpB,YAAIQ,aACFR,EAAED,eAAc,GAChBS,SAASU,SAASJ,gBAAgB,CAAA,GAAIA,gBAAgB,CAAA,CAAE;UAE5D,GAEMK,cAAc,SAACnB,GAAAA;AACnB,YAAIA,EAAEoB,kBAAkBC,SAASrB,EAAEoB,WAAWd,QAAQA,KAAKgB,SAAStB,EAAEoB,MAAM,MAIxE,aAAapB,KAAK,CAACK,aAAakB,SAASvB,EAAEwB,OAAO,KAItDzB,eAAeC,CAAAA;UACjB;AAEAH,0BAAS4B,iBAAiB,UAAUR,cAAc;YAAES,SAAS;UAAM,CAAA,GACnE7B,SAAS4B,iBAAiB,SAASN,aAAa;YAAEO,SAAS;UAAM,CAAA,GACjE7B,SAAS4B,iBAAiB,aAAaN,aAAa;YAAEO,SAAS;UAAM,CAAA,GACrE7B,SAAS4B,iBAAiB,WAAWN,aAAa;YAAEO,SAAS;UAAM,CAAA,GAE5D,WAAA;AACLlB,qBAASI,MAAMC,gBAAgBF,YAC/Bd,SAAS8B,oBAAoB,UAAUV,YAAAA,GACvCpB,SAAS8B,oBAAoB,SAASR,WAAAA,GACtCtB,SAAS8B,oBAAoB,aAAaR,WAAAA,GAC1CtB,SAAS8B,oBAAoB,WAAWR,WAAAA;UAC1C;;;;EACF,GAAG;IAACf;IAASF;IAASG;GAAa;AACrC;",
|
|
5
|
+
"names": ["useEffect", "canUseDOM", "window", "document", "createElement", "preventDefault", "e", "useDisableScrollOutsideOf", "nodeRef", "options", "enabled", "keyboardKeys", "node", "current", "scrollEl", "scrollingElement", "HTMLElement", "previously", "style", "pointerEvents", "lockToScrollPos", "scrollLeft", "scrollTop", "handleScroll", "scrollTo", "handleEvent", "target", "Node", "contains", "includes", "keyCode", "addEventListener", "passive", "removeEventListener"]
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/remove-scroll",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.130.0",
|
|
4
4
|
"types": "./types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -31,11 +31,8 @@
|
|
|
31
31
|
"default": "./dist/cjs/index.native.js"
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
|
-
"dependencies": {
|
|
35
|
-
"react-remove-scroll": "^2.6.0"
|
|
36
|
-
},
|
|
37
34
|
"devDependencies": {
|
|
38
|
-
"@tamagui/build": "1.
|
|
35
|
+
"@tamagui/build": "1.130.0",
|
|
39
36
|
"react": "*"
|
|
40
37
|
},
|
|
41
38
|
"publishConfig": {
|
package/src/RemoveScroll.tsx
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import
|
|
3
|
-
import { RemoveScroll as RS } from 'react-remove-scroll'
|
|
1
|
+
import React, { useRef } from 'react'
|
|
2
|
+
import { useDisableScrollOutsideOf } from './useDisableScroll'
|
|
4
3
|
|
|
5
|
-
export type RemoveScrollProps =
|
|
4
|
+
export type RemoveScrollProps = {
|
|
5
|
+
enabled?: boolean
|
|
6
|
+
children?: React.ReactNode
|
|
7
|
+
}
|
|
6
8
|
|
|
7
9
|
export const RemoveScroll = React.memo((props: RemoveScrollProps) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
const root = useRef<HTMLElement>(null)
|
|
11
|
+
|
|
12
|
+
// useDisableScrollOutsideOf(root, {
|
|
13
|
+
// enabled: Boolean(props.enabled),
|
|
14
|
+
// })
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
return (
|
|
17
|
+
<span ref={root} style={{ display: 'contents' }}>
|
|
18
|
+
{props.children}
|
|
19
|
+
</span>
|
|
20
|
+
)
|
|
21
|
+
})
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react'
|
|
2
|
+
|
|
3
|
+
const canUseDOM = () =>
|
|
4
|
+
typeof window !== 'undefined' && !!window.document && !!window.document.createElement
|
|
5
|
+
|
|
6
|
+
const preventDefault = (e: WheelEvent | TouchEvent | KeyboardEvent) => {
|
|
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
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (!enabled || !canUseDOM()) {
|
|
25
|
+
return
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const node = nodeRef.current
|
|
29
|
+
if (!node) {
|
|
30
|
+
return
|
|
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)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
document.addEventListener('scroll', handleScroll, { passive: false })
|
|
63
|
+
document.addEventListener('wheel', handleEvent, { passive: false })
|
|
64
|
+
document.addEventListener('touchmove', handleEvent, { passive: false })
|
|
65
|
+
document.addEventListener('keydown', handleEvent, { passive: false })
|
|
66
|
+
|
|
67
|
+
return () => {
|
|
68
|
+
scrollEl.style.pointerEvents = previously
|
|
69
|
+
document.removeEventListener('scroll', handleScroll)
|
|
70
|
+
document.removeEventListener('wheel', handleEvent)
|
|
71
|
+
document.removeEventListener('touchmove', handleEvent)
|
|
72
|
+
document.removeEventListener('keydown', handleEvent)
|
|
73
|
+
}
|
|
74
|
+
}, [enabled, nodeRef, keyboardKeys])
|
|
75
|
+
}
|
package/types/RemoveScroll.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare const RemoveScroll: React.MemoExoticComponent<(props: RemoveScrollProps) => import("react/jsx-runtime").JSX.Element | null>;
|
|
6
|
-
export declare const classNames: {
|
|
7
|
-
fullWidth: string;
|
|
8
|
-
zeroRight: string;
|
|
2
|
+
export type RemoveScrollProps = {
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
children?: React.ReactNode;
|
|
9
5
|
};
|
|
6
|
+
export declare const RemoveScroll: React.MemoExoticComponent<(props: RemoveScrollProps) => import("react/jsx-runtime").JSX.Element>;
|
|
10
7
|
//# sourceMappingURL=RemoveScroll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveScroll.d.ts","sourceRoot":"","sources":["../src/RemoveScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"RemoveScroll.d.ts","sourceRoot":"","sources":["../src/RemoveScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AAGrC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,YAAY,oCAAsB,iBAAiB,6CAY9D,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDisableScroll.d.ts","sourceRoot":"","sources":["../src/useDisableScroll.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,yBAAyB,GACpC,SAAS,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAC5C,UAAS;IACP,OAAO,CAAC,EAAE,OAAO,CAAA;IAGjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,SAwDP,CAAA"}
|