@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,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,7 +1,9 @@
1
1
  var RemoveScroll = function(props) {
2
2
  return props.children;
3
+ }, getAllowedScrollableNode = function() {
3
4
  };
4
5
  export {
5
- RemoveScroll
6
+ RemoveScroll,
7
+ getAllowedScrollableNode
6
8
  };
7
9
  //# sourceMappingURL=RemoveScroll.native.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/RemoveScroll.native.tsx"],
4
- "mappings": "AAAO,IAAMA,eAAe,SAACC,OAAAA;SAAUA,MAAMC;;",
5
- "names": ["RemoveScroll", "props", "children"]
4
+ "mappings": "AAAO,IAAMA,eAAe,SAACC,OAAAA;SAAoBA,MAAMC;GAC1CC,2BAA2B,WAAA;AAAY;",
5
+ "names": ["RemoveScroll", "props", "children", "getAllowedScrollableNode"]
6
6
  }
@@ -1,30 +1,18 @@
1
1
  import { useEffect } from "react";
2
- const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement, 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":[]}
@@ -1,61 +1,22 @@
1
1
  import { useEffect } from "react";
2
2
  var canUseDOM = function() {
3
3
  return typeof window < "u" && !!window.document && !!window.document.createElement;
4
- }, 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;
4
+ }, useDisableBodyScroll = function(enabled) {
22
5
  useEffect(function() {
23
6
  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
- }
7
+ var bodyEl = document.documentElement, previousBodyStyle = {
8
+ scrollbarGutter: bodyEl.style.scrollbarGutter,
9
+ overflow: bodyEl.style.overflow
10
+ };
11
+ return bodyEl.style.scrollbarGutter = "stable", bodyEl.style.overflow = "hidden", function() {
12
+ Object.assign(bodyEl.style, previousBodyStyle);
13
+ };
51
14
  }
52
15
  }, [
53
- enabled,
54
- nodeRef,
55
- keyboardKeys
16
+ enabled
56
17
  ]);
57
18
  };
58
19
  export {
59
- useDisableScrollOutsideOf
20
+ useDisableBodyScroll
60
21
  };
61
22
  //# sourceMappingURL=useDisableScroll.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/useDisableScroll.ts"],
4
- "mappings": "AAAA,SAASA,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"]
4
+ "mappings": "AAAA,SAASA,iBAAiB;AAE1B,IAAMC,YAAY,WAAA;SAChB,OAAOC,SAAW,OAAe,CAAC,CAACA,OAAOC,YAAY,CAAC,CAACD,OAAOC,SAASC;GAE7DC,uBAAuB,SAACC,SAAAA;AACnCN,YAAU,WAAA;AACR,QAAI,GAACM,WAAW,CAACL,UAAAA,IAKjB;UAAMM,SAASJ,SAASK,iBAClBC,oBAAoB;QACxBC,iBAAiBH,OAAOI,MAAMD;QAC9BE,UAAUL,OAAOI,MAAMC;MACzB;AACAL,oBAAOI,MAAMD,kBAAkB,UAC/BH,OAAOI,MAAMC,WAAW,UAEjB,WAAA;AACLC,eAAOC,OAAOP,OAAOI,OAAOF,iBAAAA;MAC9B;;EACF,GAAG;IAACH;GAAQ;AACd;",
5
+ "names": ["useEffect", "canUseDOM", "window", "document", "createElement", "useDisableBodyScroll", "enabled", "bodyEl", "documentElement", "previousBodyStyle", "scrollbarGutter", "style", "overflow", "Object", "assign"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/remove-scroll",
3
- "version": "1.130.2",
3
+ "version": "1.130.3",
4
4
  "types": "./types/index.d.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -32,7 +32,7 @@
32
32
  }
33
33
  },
34
34
  "devDependencies": {
35
- "@tamagui/build": "1.130.2",
35
+ "@tamagui/build": "1.130.3",
36
36
  "react": "*"
37
37
  },
38
38
  "publishConfig": {
@@ -1 +1,2 @@
1
- export const RemoveScroll = (props) => props.children
1
+ export const RemoveScroll = (props: any): any => props.children
2
+ export const getAllowedScrollableNode = (): any => {}
@@ -1,21 +1,13 @@
1
- import React, { useRef } from 'react'
2
- import { useDisableScrollOutsideOf } from './useDisableScroll'
1
+ import { type ReactNode, useEffect, useRef } from 'react'
2
+ import { useDisableBodyScroll } from './useDisableScroll'
3
3
 
4
4
  export type RemoveScrollProps = {
5
5
  enabled?: boolean
6
6
  children?: React.ReactNode
7
7
  }
8
8
 
9
- export const RemoveScroll = React.memo((props: RemoveScrollProps) => {
10
- const root = useRef<HTMLElement>(null)
9
+ export const RemoveScroll = (props: RemoveScrollProps): ReactNode => {
10
+ useDisableBodyScroll(Boolean(props.enabled))
11
11
 
12
- useDisableScrollOutsideOf(root, {
13
- enabled: Boolean(props.enabled),
14
- })
15
-
16
- return (
17
- <span ref={root} style={{ display: 'contents' }}>
18
- {props.children}
19
- </span>
20
- )
21
- })
12
+ return props.children
13
+ }
@@ -1,75 +1,25 @@
1
- import { useEffect, useRef } from 'react'
1
+ import { useEffect } from 'react'
2
2
 
3
3
  const canUseDOM = () =>
4
4
  typeof window !== 'undefined' && !!window.document && !!window.document.createElement
5
5
 
6
- const 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
-
6
+ export const useDisableBodyScroll = (enabled: boolean): void => {
23
7
  useEffect(() => {
24
8
  if (!enabled || !canUseDOM()) {
25
9
  return
26
10
  }
27
11
 
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)
12
+ // for 99% browsers this can replace all the events
13
+ const bodyEl = document.documentElement
14
+ const previousBodyStyle = {
15
+ scrollbarGutter: bodyEl.style.scrollbarGutter,
16
+ overflow: bodyEl.style.overflow,
60
17
  }
61
-
62
- 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 })
18
+ bodyEl.style.scrollbarGutter = 'stable'
19
+ bodyEl.style.overflow = 'hidden'
66
20
 
67
21
  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)
22
+ Object.assign(bodyEl.style, previousBodyStyle)
73
23
  }
74
- }, [enabled, nodeRef, keyboardKeys])
24
+ }, [enabled])
75
25
  }
@@ -1,7 +1,8 @@
1
- import React from 'react';
1
+ import { type ReactNode } from "react";
2
2
  export type RemoveScrollProps = {
3
- enabled?: boolean;
4
- children?: React.ReactNode;
3
+ enabled?: boolean;
4
+ children?: React.ReactNode;
5
5
  };
6
- export declare const RemoveScroll: React.MemoExoticComponent<(props: RemoveScrollProps) => import("react/jsx-runtime").JSX.Element>;
6
+ export declare const RemoveScroll: (props: RemoveScrollProps) => ReactNode;
7
+
7
8
  //# sourceMappingURL=RemoveScroll.d.ts.map
@@ -1 +1,13 @@
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"}
1
+ {
2
+ "mappings": "AAAA,cAAc,iBAAoC,OAAO;AAGzD,YAAY,oBAAoB;CAC9B;CACA,WAAW,MAAM;AAClB;AAED,OAAO,cAAM,eAAgBA,OAAO,sBAAoB",
3
+ "names": [
4
+ "props: RemoveScrollProps"
5
+ ],
6
+ "sources": [
7
+ "src/RemoveScroll.tsx"
8
+ ],
9
+ "sourcesContent": [
10
+ "import { type ReactNode, useEffect, useRef } from 'react'\nimport { useDisableBodyScroll } from './useDisableScroll'\n\nexport type RemoveScrollProps = {\n enabled?: boolean\n children?: React.ReactNode\n}\n\nexport const RemoveScroll = (props: RemoveScrollProps): ReactNode => {\n useDisableBodyScroll(Boolean(props.enabled))\n\n return props.children\n}\n"
11
+ ],
12
+ "version": 3
13
+ }
@@ -1,2 +1,4 @@
1
1
  export declare const RemoveScroll: (props: any) => any;
2
+ export declare const getAllowedScrollableNode: () => any;
3
+
2
4
  //# sourceMappingURL=RemoveScroll.native.d.ts.map
@@ -1 +1,13 @@
1
- {"version":3,"file":"RemoveScroll.native.d.ts","sourceRoot":"","sources":["../src/RemoveScroll.native.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,UAAK,QAAmB,CAAA"}
1
+ {
2
+ "mappings": "AAAA,OAAO,cAAM,eAAgBA;AAC7B,OAAO,cAAM",
3
+ "names": [
4
+ "props: any"
5
+ ],
6
+ "sources": [
7
+ "src/RemoveScroll.native.tsx"
8
+ ],
9
+ "sourcesContent": [
10
+ "export const RemoveScroll = (props: any): any => props.children\nexport const getAllowedScrollableNode = (): any => {}\n"
11
+ ],
12
+ "version": 3
13
+ }
package/types/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export * from './RemoveScroll';
1
+ export * from "./RemoveScroll";
2
+
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1,11 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
1
+ {
2
+ "mappings": "AAAA,cAAc",
3
+ "names": [],
4
+ "sources": [
5
+ "src/index.ts"
6
+ ],
7
+ "sourcesContent": [
8
+ "export * from './RemoveScroll'\n"
9
+ ],
10
+ "version": 3
11
+ }
@@ -1,5 +1,3 @@
1
- export declare const useDisableScrollOutsideOf: (nodeRef: React.RefObject<HTMLElement | null>, options?: {
2
- enabled?: boolean;
3
- keyboardKeys?: number[];
4
- }) => void;
1
+ export declare const useDisableBodyScroll: (enabled: boolean) => void;
2
+
5
3
  //# sourceMappingURL=useDisableScroll.d.ts.map
@@ -1 +1,13 @@
1
- {"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"}
1
+ {
2
+ "mappings": "AAKA,OAAO,cAAM,uBAAwBA",
3
+ "names": [
4
+ "enabled: boolean"
5
+ ],
6
+ "sources": [
7
+ "src/useDisableScroll.ts"
8
+ ],
9
+ "sourcesContent": [
10
+ "import { useEffect } from 'react'\n\nconst canUseDOM = () =>\n typeof window !== 'undefined' && !!window.document && !!window.document.createElement\n\nexport const useDisableBodyScroll = (enabled: boolean): void => {\n useEffect(() => {\n if (!enabled || !canUseDOM()) {\n return\n }\n\n // for 99% browsers this can replace all the events\n const bodyEl = document.documentElement\n const previousBodyStyle = {\n scrollbarGutter: bodyEl.style.scrollbarGutter,\n overflow: bodyEl.style.overflow,\n }\n bodyEl.style.scrollbarGutter = 'stable'\n bodyEl.style.overflow = 'hidden'\n\n return () => {\n Object.assign(bodyEl.style, previousBodyStyle)\n }\n }, [enabled])\n}\n"
11
+ ],
12
+ "version": 3
13
+ }
@@ -1,83 +0,0 @@
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 disableScroll_exports = {};
22
- __export(disableScroll_exports, {
23
- disableScroll: () => disableScroll
24
- });
25
- module.exports = __toCommonJS(disableScroll_exports);
26
- const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement;
27
- class DisableScroll {
28
- element;
29
- lockToScrollPos;
30
- options;
31
- constructor() {
32
- this.element = null, this.lockToScrollPos = [0, 0], this.options = {
33
- authorizedInInputs: [32, 37, 38, 39, 40],
34
- disableKeys: !0,
35
- disableScroll: !0,
36
- disableWheel: !0,
37
- keyboardKeys: [32, 33, 34, 35, 36, 37, 38, 39, 40]
38
- // space: 32, page up: 33, page down: 34, end: 35, home: 36
39
- // left: 37, up: 38, right: 39, down: 40
40
- }, canUseDOM() && (this.element = document.scrollingElement);
41
- }
42
- /**
43
- * Disable Page Scroll
44
- */
45
- on(element, options) {
46
- if (!canUseDOM()) return;
47
- this.element = element || this.element, this.options = {
48
- ...this.options,
49
- ...options
50
- };
51
- const {
52
- disableKeys,
53
- disableScroll: disableScroll2,
54
- disableWheel
55
- } = this.options;
56
- disableWheel && (document.addEventListener("wheel", this.handleWheel, {
57
- passive: !1
58
- }), document.addEventListener("touchmove", this.handleWheel, {
59
- passive: !1
60
- })), disableScroll2 && (this.lockToScrollPos = [this.element?.scrollLeft ?? 0, this.element?.scrollTop ?? 0], document.addEventListener("scroll", this.handleScroll, {
61
- passive: !1
62
- })), disableKeys && document.addEventListener("keydown", this.handleKeydown, {
63
- passive: !1
64
- });
65
- }
66
- /**
67
- * Re-enable page scrolls
68
- */
69
- off() {
70
- canUseDOM() && (document.removeEventListener("wheel", this.handleWheel), document.removeEventListener("touchmove", this.handleWheel), document.removeEventListener("scroll", this.handleScroll), document.removeEventListener("keydown", this.handleKeydown));
71
- }
72
- handleWheel = e => {
73
- e.preventDefault();
74
- };
75
- handleScroll = () => {
76
- window.scrollTo(...this.lockToScrollPos);
77
- };
78
- handleKeydown = e => {
79
- let keys = this.options.keyboardKeys;
80
- ["INPUT", "TEXTAREA"].includes(e.target.tagName) && (keys = keys.filter(key => !this.options.authorizedInInputs.includes(key))), keys.includes(e.keyCode) && e.preventDefault();
81
- };
82
- }
83
- const disableScroll = new DisableScroll();