@tamagui/remove-scroll 1.130.2 → 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.
Files changed (64) hide show
  1. package/dist/cjs/RemoveScroll.cjs +6 -30
  2. package/dist/cjs/RemoveScroll.js +4 -17
  3. package/dist/cjs/RemoveScroll.js.map +2 -2
  4. package/dist/cjs/RemoveScroll.native.js +5 -2
  5. package/dist/cjs/RemoveScroll.native.js.map +2 -2
  6. package/dist/cjs/useDisableScroll.cjs +9 -32
  7. package/dist/cjs/useDisableScroll.js +8 -20
  8. package/dist/cjs/useDisableScroll.js.map +1 -1
  9. package/dist/cjs/useDisableScroll.native.js +11 -50
  10. package/dist/cjs/useDisableScroll.native.js.map +2 -2
  11. package/dist/esm/RemoveScroll.js +2 -9
  12. package/dist/esm/RemoveScroll.js.map +1 -1
  13. package/dist/esm/RemoveScroll.mjs +2 -15
  14. package/dist/esm/RemoveScroll.mjs.map +1 -1
  15. package/dist/esm/RemoveScroll.native.js +4 -3
  16. package/dist/esm/RemoveScroll.native.js.map +1 -1
  17. package/dist/esm/useDisableScroll.js +8 -20
  18. package/dist/esm/useDisableScroll.js.map +1 -1
  19. package/dist/esm/useDisableScroll.mjs +9 -32
  20. package/dist/esm/useDisableScroll.mjs.map +1 -1
  21. package/dist/esm/useDisableScroll.native.js +11 -40
  22. package/dist/esm/useDisableScroll.native.js.map +1 -1
  23. package/dist/jsx/RemoveScroll.js +2 -9
  24. package/dist/jsx/RemoveScroll.js.map +1 -1
  25. package/dist/jsx/RemoveScroll.mjs +2 -15
  26. package/dist/jsx/RemoveScroll.mjs.map +1 -1
  27. package/dist/jsx/RemoveScroll.native.js +3 -1
  28. package/dist/jsx/RemoveScroll.native.js.map +2 -2
  29. package/dist/jsx/useDisableScroll.js +8 -20
  30. package/dist/jsx/useDisableScroll.js.map +1 -1
  31. package/dist/jsx/useDisableScroll.mjs +9 -32
  32. package/dist/jsx/useDisableScroll.mjs.map +1 -1
  33. package/dist/jsx/useDisableScroll.native.js +10 -49
  34. package/dist/jsx/useDisableScroll.native.js.map +2 -2
  35. package/package.json +2 -2
  36. package/src/RemoveScroll.native.tsx +2 -1
  37. package/src/RemoveScroll.tsx +6 -14
  38. package/src/useDisableScroll.ts +11 -61
  39. package/types/RemoveScroll.d.ts +5 -4
  40. package/types/RemoveScroll.d.ts.map +13 -1
  41. package/types/RemoveScroll.native.d.ts +2 -0
  42. package/types/RemoveScroll.native.d.ts.map +13 -1
  43. package/types/index.d.ts +2 -1
  44. package/types/index.d.ts.map +11 -1
  45. package/types/useDisableScroll.d.ts +2 -4
  46. package/types/useDisableScroll.d.ts.map +13 -1
  47. package/dist/cjs/disableScroll.cjs +0 -83
  48. package/dist/cjs/disableScroll.js +0 -68
  49. package/dist/cjs/disableScroll.js.map +0 -6
  50. package/dist/cjs/disableScroll.native.js +0 -134
  51. package/dist/cjs/disableScroll.native.js.map +0 -6
  52. package/dist/esm/disableScroll.js +0 -52
  53. package/dist/esm/disableScroll.js.map +0 -6
  54. package/dist/esm/disableScroll.mjs +0 -60
  55. package/dist/esm/disableScroll.mjs.map +0 -1
  56. package/dist/esm/disableScroll.native.js +0 -89
  57. package/dist/esm/disableScroll.native.js.map +0 -1
  58. package/dist/jsx/disableScroll.js +0 -52
  59. package/dist/jsx/disableScroll.js.map +0 -6
  60. package/dist/jsx/disableScroll.mjs +0 -60
  61. package/dist/jsx/disableScroll.mjs.map +0 -1
  62. package/dist/jsx/disableScroll.native.js +0 -113
  63. package/dist/jsx/disableScroll.native.js.map +0 -6
  64. package/types/disableScroll.d.ts.map +0 -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 __getProtoOf = Object.getPrototypeOf,
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,35 +15,13 @@ var __export = (target, all) => {
17
15
  });
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
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 import_react = __toESM(require("react")),
38
- import_useDisableScroll = require("./useDisableScroll.cjs"),
39
- import_jsx_runtime = require("react/jsx-runtime");
40
- const RemoveScroll = import_react.default.memo(props => {
41
- const root = (0, import_react.useRef)(null);
42
- return (0, import_useDisableScroll.useDisableScrollOutsideOf)(root, {
43
- enabled: !!props.enabled
44
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
45
- ref: root,
46
- style: {
47
- display: "contents"
48
- },
49
- children: props.children
50
- });
51
- });
26
+ var import_useDisableScroll = require("./useDisableScroll.cjs");
27
+ const RemoveScroll = props => ((0, import_useDisableScroll.useDisableBodyScroll)(!!props.enabled), props.children);
@@ -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 __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
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,24 +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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
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 import_react = __toESM(require("react")), import_useDisableScroll = require("./useDisableScroll"), 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 (0, import_useDisableScroll.useDisableScrollOutsideOf)(root, {
32
- enabled: !!props.enabled
33
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { ref: root, style: { display: "contents" }, children: props.children });
34
- });
20
+ var import_useDisableScroll = require("./useDisableScroll");
21
+ const RemoveScroll = (props) => ((0, import_useDisableScroll.useDisableBodyScroll)(!!props.enabled), props.children);
35
22
  //# 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,mBAA8B,2BAC9B,0BAA0C,+BAetC;AARG,MAAM,eAAe,aAAAA,QAAM,KAAK,CAAC,UAA6B;AACnE,QAAM,WAAO,qBAAoB,IAAI;AAErC,gEAA0B,MAAM;AAAA,IAC9B,SAAS,EAAQ,MAAM;AAAA,EACzB,CAAC,GAGC,4CAAC,UAAK,KAAK,MAAM,OAAO,EAAE,SAAS,WAAW,GAC3C,gBAAM,UACT;AAEJ,CAAC;",
5
- "names": ["React"]
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;;;;;AAAO,IAAMA,eAAe,SAACC,OAAAA;SAAUA,MAAMC;;",
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
- useDisableScrollOutsideOf: () => useDisableScrollOutsideOf
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
- 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;
28
+ useDisableBodyScroll = enabled => {
36
29
  (0, import_react.useEffect)(() => {
37
30
  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);
31
+ const bodyEl = document.documentElement,
32
+ previousBodyStyle = {
33
+ scrollbarGutter: bodyEl.style.scrollbarGutter,
34
+ overflow: bodyEl.style.overflow
50
35
  };
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);
36
+ return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
37
+ Object.assign(bodyEl.style, previousBodyStyle);
61
38
  };
62
- }, [enabled, nodeRef, keyboardKeys]);
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
- useDisableScrollOutsideOf: () => useDisableScrollOutsideOf
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, 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;
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 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);
25
+ const bodyEl = document.documentElement, previousBodyStyle = {
26
+ scrollbarGutter: bodyEl.style.scrollbarGutter,
27
+ overflow: bodyEl.style.overflow
40
28
  };
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);
29
+ return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
30
+ Object.assign(bodyEl.style, previousBodyStyle);
43
31
  };
44
- }, [enabled, nodeRef, keyboardKeys]);
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,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;",
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
- useDisableScrollOutsideOf: () => useDisableScrollOutsideOf
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
- }, 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;
23
+ }, useDisableBodyScroll = function(enabled) {
41
24
  (0, import_react.useEffect)(function() {
42
25
  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
- }
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
- useDisableScrollOutsideOf
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;;;;;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"]
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
  }
@@ -1,12 +1,5 @@
1
- import React, { useRef } from "react";
2
- import { useDisableScrollOutsideOf } from "./useDisableScroll";
3
- import { jsx } from "react/jsx-runtime";
4
- const RemoveScroll = React.memo((props) => {
5
- const root = useRef(null);
6
- return useDisableScrollOutsideOf(root, {
7
- enabled: !!props.enabled
8
- }), /* @__PURE__ */ jsx("span", { ref: root, style: { display: "contents" }, children: props.children });
9
- });
1
+ import { useDisableBodyScroll } from "./useDisableScroll";
2
+ const RemoveScroll = (props) => (useDisableBodyScroll(!!props.enabled), props.children);
10
3
  export {
11
4
  RemoveScroll
12
5
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/RemoveScroll.tsx"],
4
- "mappings": "AAAA,OAAO,SAAS,cAAc;AAC9B,SAAS,iCAAiC;AAetC;AARG,MAAM,eAAe,MAAM,KAAK,CAAC,UAA6B;AACnE,QAAM,OAAO,OAAoB,IAAI;AAErC,mCAA0B,MAAM;AAAA,IAC9B,SAAS,EAAQ,MAAM;AAAA,EACzB,CAAC,GAGC,oBAAC,UAAK,KAAK,MAAM,OAAO,EAAE,SAAS,WAAW,GAC3C,gBAAM,UACT;AAEJ,CAAC;",
4
+ "mappings": "AACA,SAAS,4BAA4B;AAO9B,MAAM,eAAe,CAAC,WAC3B,qBAAqB,EAAQ,MAAM,OAAQ,GAEpC,MAAM;",
5
5
  "names": []
6
6
  }
@@ -1,17 +1,4 @@
1
- import React, { useRef } from "react";
2
- import { useDisableScrollOutsideOf } from "./useDisableScroll.mjs";
3
- import { jsx } from "react/jsx-runtime";
4
- const RemoveScroll = React.memo(props => {
5
- const root = useRef(null);
6
- return useDisableScrollOutsideOf(root, {
7
- enabled: !!props.enabled
8
- }), /* @__PURE__ */jsx("span", {
9
- ref: root,
10
- style: {
11
- display: "contents"
12
- },
13
- children: props.children
14
- });
15
- });
1
+ import { useDisableBodyScroll } from "./useDisableScroll.mjs";
2
+ const RemoveScroll = props => (useDisableBodyScroll(!!props.enabled), props.children);
16
3
  export { RemoveScroll };
17
4
  //# sourceMappingURL=RemoveScroll.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useDisableScrollOutsideOf","jsx","RemoveScroll","memo","props","root","enabled","ref","style","display","children"],"sources":["../../src/RemoveScroll.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,IAASC,MAAA,QAAc;AAC9B,SAASC,yBAAA,QAAiC;AAetC,SAAAC,GAAA;AARG,MAAMC,YAAA,GAAeJ,KAAA,CAAMK,IAAA,CAAMC,KAAA,IAA6B;EACnE,MAAMC,IAAA,GAAON,MAAA,CAAoB,IAAI;EAErC,OAAAC,yBAAA,CAA0BK,IAAA,EAAM;IAC9BC,OAAA,EAAS,EAAQF,KAAA,CAAME;EACzB,CAAC,GAGC,eAAAL,GAAA,CAAC;IAAKM,GAAA,EAAKF,IAAA;IAAMG,KAAA,EAAO;MAAEC,OAAA,EAAS;IAAW;IAC3CC,QAAA,EAAAN,KAAA,CAAMM;EAAA,CACT;AAEJ,CAAC","ignoreList":[]}
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
- return props.children;
3
- };
4
- export { RemoveScroll };
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;SAAUA,KAAA,CAAMC,QAAA","ignoreList":[]}
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, 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;
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 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);
6
+ const bodyEl = document.documentElement, previousBodyStyle = {
7
+ scrollbarGutter: bodyEl.style.scrollbarGutter,
8
+ overflow: bodyEl.style.overflow
21
9
  };
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);
10
+ return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
11
+ Object.assign(bodyEl.style, previousBodyStyle);
24
12
  };
25
- }, [enabled, nodeRef, keyboardKeys]);
13
+ }, [enabled]);
26
14
  };
27
15
  export {
28
- useDisableScrollOutsideOf
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,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;",
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
- 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;
3
+ useDisableBodyScroll = enabled => {
11
4
  useEffect(() => {
12
5
  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);
6
+ const bodyEl = document.documentElement,
7
+ previousBodyStyle = {
8
+ scrollbarGutter: bodyEl.style.scrollbarGutter,
9
+ overflow: bodyEl.style.overflow
25
10
  };
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);
11
+ return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", () => {
12
+ Object.assign(bodyEl.style, previousBodyStyle);
36
13
  };
37
- }, [enabled, nodeRef, keyboardKeys]);
14
+ }, [enabled]);
38
15
  };
39
- export { useDisableScrollOutsideOf };
16
+ export { useDisableBodyScroll };
40
17
  //# sourceMappingURL=useDisableScroll.mjs.map
@@ -1 +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":[]}
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
- 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;
5
+ useDisableBodyScroll = function (enabled) {
17
6
  useEffect(function () {
18
7
  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
- }
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, nodeRef, keyboardKeys]);
17
+ }, [enabled]);
47
18
  };
48
- export { useDisableScrollOutsideOf };
19
+ export { useDisableBodyScroll };
49
20
  //# sourceMappingURL=useDisableScroll.native.js.map
@@ -1 +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":[]}
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":[]}
@@ -1,12 +1,5 @@
1
- import React, { useRef } from "react";
2
- import { useDisableScrollOutsideOf } from "./useDisableScroll";
3
- import { jsx } from "react/jsx-runtime";
4
- const RemoveScroll = React.memo((props) => {
5
- const root = useRef(null);
6
- return useDisableScrollOutsideOf(root, {
7
- enabled: !!props.enabled
8
- }), /* @__PURE__ */ jsx("span", { ref: root, style: { display: "contents" }, children: props.children });
9
- });
1
+ import { useDisableBodyScroll } from "./useDisableScroll";
2
+ const RemoveScroll = (props) => (useDisableBodyScroll(!!props.enabled), props.children);
10
3
  export {
11
4
  RemoveScroll
12
5
  };