@tamagui/remove-scroll 2.0.0-rc.4 → 2.0.0-rc.40
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 +16 -11
- package/dist/cjs/RemoveScroll.native.js +15 -13
- package/dist/cjs/RemoveScroll.native.js.map +1 -1
- package/dist/cjs/index.cjs +7 -5
- package/dist/cjs/index.native.js +7 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/useDisableScroll.cjs +88 -43
- package/dist/cjs/useDisableScroll.native.js +88 -45
- package/dist/cjs/useDisableScroll.native.js.map +1 -1
- package/dist/esm/RemoveScroll.mjs +4 -1
- package/dist/esm/RemoveScroll.mjs.map +1 -1
- package/dist/esm/RemoveScroll.native.js +3 -3
- package/dist/esm/RemoveScroll.native.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/useDisableScroll.mjs +76 -33
- package/dist/esm/useDisableScroll.mjs.map +1 -1
- package/dist/esm/useDisableScroll.native.js +74 -33
- package/dist/esm/useDisableScroll.native.js.map +1 -1
- package/dist/jsx/RemoveScroll.mjs +4 -1
- package/dist/jsx/RemoveScroll.mjs.map +1 -1
- package/dist/jsx/RemoveScroll.native.js +15 -13
- package/dist/jsx/RemoveScroll.native.js.map +1 -1
- package/dist/jsx/index.js +1 -1
- package/dist/jsx/index.js.map +1 -6
- package/dist/jsx/index.native.js +7 -5
- package/dist/jsx/useDisableScroll.mjs +76 -33
- package/dist/jsx/useDisableScroll.mjs.map +1 -1
- package/dist/jsx/useDisableScroll.native.js +88 -45
- package/dist/jsx/useDisableScroll.native.js.map +1 -1
- package/package.json +5 -8
- package/src/useDisableScroll.ts +3 -3
- package/types/RemoveScroll.d.ts.map +2 -2
- package/types/RemoveScroll.native.d.ts.map +2 -2
- package/types/index.d.ts.map +2 -2
- package/types/useDisableScroll.d.ts.map +3 -3
- package/dist/cjs/RemoveScroll.js +0 -22
- package/dist/cjs/RemoveScroll.js.map +0 -6
- package/dist/cjs/index.js +0 -15
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/useDisableScroll.js +0 -57
- package/dist/cjs/useDisableScroll.js.map +0 -6
- package/dist/esm/RemoveScroll.js +0 -6
- package/dist/esm/RemoveScroll.js.map +0 -6
- package/dist/esm/useDisableScroll.js +0 -41
- package/dist/esm/useDisableScroll.js.map +0 -6
- package/dist/jsx/RemoveScroll.js +0 -6
- package/dist/jsx/RemoveScroll.js.map +0 -6
- package/dist/jsx/useDisableScroll.js +0 -41
- package/dist/jsx/useDisableScroll.js.map +0 -6
|
@@ -5,70 +5,113 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
7
|
var __export = (target, all) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
15
16
|
get: () => from[key],
|
|
16
17
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
18
|
});
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
20
22
|
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
-
value:
|
|
23
|
+
value: true
|
|
22
24
|
}), mod);
|
|
23
25
|
var useDisableScroll_exports = {};
|
|
24
26
|
__export(useDisableScroll_exports, {
|
|
25
27
|
useDisableBodyScroll: () => useDisableBodyScroll
|
|
26
28
|
});
|
|
27
29
|
module.exports = __toCommonJS(useDisableScroll_exports);
|
|
28
|
-
var import_react = require("react")
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
var import_react = require("react");
|
|
31
|
+
var canUseDOM = function () {
|
|
32
|
+
return typeof window !== "undefined" && !!window.document && !!window.document.createElement;
|
|
33
|
+
};
|
|
34
|
+
var refCount = 0;
|
|
35
|
+
var savedScrollY = 0;
|
|
36
|
+
var previousStyles = null;
|
|
35
37
|
function isIOSSafari() {
|
|
36
|
-
if (typeof navigator
|
|
37
|
-
var ua = navigator.userAgent
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
if (typeof navigator === "undefined") return false;
|
|
39
|
+
var ua = navigator.userAgent;
|
|
40
|
+
var isIOS = /iPad|iPhone|iPod/.test(ua) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
41
|
+
var isSafari = /^((?!chrome|android).)*safari/i.test(ua);
|
|
40
42
|
return isIOS && isSafari;
|
|
41
43
|
}
|
|
42
44
|
var useDisableBodyScroll = function (enabled) {
|
|
43
|
-
var wasEnabled = (0, import_react.useRef)(
|
|
45
|
+
var wasEnabled = (0, import_react.useRef)(false);
|
|
44
46
|
(0, import_react.useEffect)(function () {
|
|
45
|
-
if (canUseDOM()) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
if (!canUseDOM()) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (enabled && !wasEnabled.current) {
|
|
51
|
+
wasEnabled.current = true;
|
|
52
|
+
if (++refCount === 1) {
|
|
53
|
+
var html = document.documentElement;
|
|
54
|
+
var body = document.body;
|
|
55
|
+
savedScrollY = window.scrollY;
|
|
56
|
+
previousStyles = {
|
|
57
|
+
htmlOverflow: html.style.overflow,
|
|
58
|
+
htmlScrollbarGutter: html.style.scrollbarGutter,
|
|
59
|
+
bodyPosition: body.style.position,
|
|
60
|
+
bodyTop: body.style.top,
|
|
61
|
+
bodyWidth: body.style.width,
|
|
62
|
+
bodyOverflow: body.style.overflow,
|
|
63
|
+
bodyOverscrollBehavior: body.style.overscrollBehavior
|
|
64
|
+
};
|
|
65
|
+
html.style.scrollbarGutter = "stable";
|
|
66
|
+
html.style.overflow = "hidden";
|
|
67
|
+
body.style.overscrollBehavior = "none";
|
|
68
|
+
if (isIOSSafari()) {
|
|
69
|
+
body.style.position = "fixed";
|
|
70
|
+
body.style.top = `-${savedScrollY}px`;
|
|
71
|
+
body.style.width = "100%";
|
|
72
|
+
body.style.overflow = "hidden";
|
|
59
73
|
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
}
|
|
75
|
+
} else if (!enabled && wasEnabled.current) {
|
|
76
|
+
wasEnabled.current = false;
|
|
77
|
+
if (--refCount === 0 && previousStyles) {
|
|
78
|
+
var html1 = document.documentElement;
|
|
79
|
+
var body1 = document.body;
|
|
80
|
+
html1.style.overflow = previousStyles.htmlOverflow;
|
|
81
|
+
html1.style.scrollbarGutter = previousStyles.htmlScrollbarGutter;
|
|
82
|
+
body1.style.position = previousStyles.bodyPosition;
|
|
83
|
+
body1.style.top = previousStyles.bodyTop;
|
|
84
|
+
body1.style.width = previousStyles.bodyWidth;
|
|
85
|
+
body1.style.overflow = previousStyles.bodyOverflow;
|
|
86
|
+
body1.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior;
|
|
87
|
+
if (savedScrollY > 0) {
|
|
88
|
+
window.scrollTo(0, savedScrollY);
|
|
89
|
+
}
|
|
90
|
+
previousStyles = null;
|
|
91
|
+
savedScrollY = 0;
|
|
64
92
|
}
|
|
65
93
|
}
|
|
66
|
-
}, [enabled])
|
|
94
|
+
}, [enabled]);
|
|
95
|
+
(0, import_react.useEffect)(function () {
|
|
67
96
|
return function () {
|
|
68
|
-
if (wasEnabled.current
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
97
|
+
if (wasEnabled.current) {
|
|
98
|
+
wasEnabled.current = false;
|
|
99
|
+
if (--refCount === 0 && previousStyles) {
|
|
100
|
+
var html = document.documentElement;
|
|
101
|
+
var body = document.body;
|
|
102
|
+
html.style.overflow = previousStyles.htmlOverflow;
|
|
103
|
+
html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter;
|
|
104
|
+
body.style.position = previousStyles.bodyPosition;
|
|
105
|
+
body.style.top = previousStyles.bodyTop;
|
|
106
|
+
body.style.width = previousStyles.bodyWidth;
|
|
107
|
+
body.style.overflow = previousStyles.bodyOverflow;
|
|
108
|
+
body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior;
|
|
109
|
+
if (savedScrollY > 0) {
|
|
110
|
+
window.scrollTo(0, savedScrollY);
|
|
111
|
+
}
|
|
112
|
+
previousStyles = null;
|
|
113
|
+
savedScrollY = 0;
|
|
114
|
+
}
|
|
72
115
|
}
|
|
73
116
|
};
|
|
74
117
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useDisableScroll_exports","useDisableBodyScroll","module","exports","import_react","require","canUseDOM","window","document","createElement","refCount","savedScrollY","previousStyles","isIOSSafari","navigator","ua","userAgent","isIOS","test","platform","maxTouchPoints","isSafari","enabled","wasEnabled","useRef","useEffect","current","html","documentElement","body","scrollY","htmlOverflow","style","overflow"],"sources":["../../src/useDisableScroll.ts"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AAET,IAAAA,SAAM,GAAAC,MAAY,CAAAC,cACT;AAET,IAAIC,
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useDisableScroll_exports","useDisableBodyScroll","module","exports","import_react","require","canUseDOM","window","document","createElement","refCount","savedScrollY","previousStyles","isIOSSafari","navigator","ua","userAgent","isIOS","test","platform","maxTouchPoints","isSafari","enabled","wasEnabled","useRef","useEffect","current","html","documentElement","body","scrollY","htmlOverflow","style","overflow","htmlScrollbarGutter","scrollbarGutter","bodyPosition","position","bodyTop","top","bodyWidth","width","bodyOverflow","bodyOverscrollBehavior","overscrollBehavior","html1","body1","scrollTo"],"sources":["../../src/useDisableScroll.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/remove-scroll",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.40",
|
|
4
4
|
"files": [
|
|
5
5
|
"src",
|
|
6
6
|
"types",
|
|
@@ -17,15 +17,12 @@
|
|
|
17
17
|
"./package.json": "./package.json",
|
|
18
18
|
".": {
|
|
19
19
|
"types": "./types/index.d.ts",
|
|
20
|
-
"react-native":
|
|
21
|
-
|
|
22
|
-
"import": "./dist/esm/index.native.js",
|
|
23
|
-
"require": "./dist/cjs/index.native.js"
|
|
24
|
-
},
|
|
20
|
+
"react-native": "./dist/esm/index.native.js",
|
|
21
|
+
"browser": "./dist/esm/index.mjs",
|
|
25
22
|
"module": "./dist/esm/index.mjs",
|
|
26
23
|
"import": "./dist/esm/index.mjs",
|
|
27
24
|
"require": "./dist/cjs/index.cjs",
|
|
28
|
-
"default": "./dist/
|
|
25
|
+
"default": "./dist/esm/index.mjs"
|
|
29
26
|
}
|
|
30
27
|
},
|
|
31
28
|
"publishConfig": {
|
|
@@ -38,7 +35,7 @@
|
|
|
38
35
|
"clean:build": "tamagui-build clean:build"
|
|
39
36
|
},
|
|
40
37
|
"devDependencies": {
|
|
41
|
-
"@tamagui/build": "2.0.0-rc.
|
|
38
|
+
"@tamagui/build": "2.0.0-rc.40",
|
|
42
39
|
"react": ">=19"
|
|
43
40
|
},
|
|
44
41
|
"peerDependencies": {
|
package/src/useDisableScroll.ts
CHANGED
|
@@ -87,8 +87,8 @@ export const useDisableBodyScroll = (enabled: boolean): void => {
|
|
|
87
87
|
body.style.overflow = previousStyles.bodyOverflow
|
|
88
88
|
body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior
|
|
89
89
|
|
|
90
|
-
// restore scroll position
|
|
91
|
-
if (
|
|
90
|
+
// restore scroll position (browsers reset to 0 when overflow:hidden is removed)
|
|
91
|
+
if (savedScrollY > 0) {
|
|
92
92
|
window.scrollTo(0, savedScrollY)
|
|
93
93
|
}
|
|
94
94
|
|
|
@@ -115,7 +115,7 @@ export const useDisableBodyScroll = (enabled: boolean): void => {
|
|
|
115
115
|
body.style.overflow = previousStyles.bodyOverflow
|
|
116
116
|
body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior
|
|
117
117
|
|
|
118
|
-
if (
|
|
118
|
+
if (savedScrollY > 0) {
|
|
119
119
|
window.scrollTo(0, savedScrollY)
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"sources": [
|
|
5
5
|
"src/RemoveScroll.tsx"
|
|
6
6
|
],
|
|
7
|
+
"version": 3,
|
|
7
8
|
"sourcesContent": [
|
|
8
9
|
"import type { ReactNode } 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"
|
|
9
|
-
]
|
|
10
|
-
"version": 3
|
|
10
|
+
]
|
|
11
11
|
}
|
package/types/index.d.ts.map
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"sources": [
|
|
5
5
|
"src/useDisableScroll.ts"
|
|
6
6
|
],
|
|
7
|
+
"version": 3,
|
|
7
8
|
"sourcesContent": [
|
|
8
|
-
"import { useEffect, useRef } from 'react'\n\nconst canUseDOM = () =>\n typeof window !== 'undefined' && !!window.document && !!window.document.createElement\n\nlet refCount = 0\nlet savedScrollY = 0\nlet previousStyles: {\n htmlOverflow: string\n htmlScrollbarGutter: string\n bodyPosition: string\n bodyTop: string\n bodyWidth: string\n bodyOverflow: string\n bodyOverscrollBehavior: string\n} | null = null\n\n// detect iOS Safari which needs position:fixed workaround\nfunction isIOSSafari() {\n if (typeof navigator === 'undefined') return false\n const ua = navigator.userAgent\n const isIOS =\n /iPad|iPhone|iPod/.test(ua) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n const isSafari = /^((?!chrome|android).)*safari/i.test(ua)\n return isIOS && isSafari\n}\n\nexport const useDisableBodyScroll = (enabled: boolean): void => {\n const wasEnabled = useRef(false)\n\n useEffect(() => {\n if (!canUseDOM()) {\n return\n }\n\n if (enabled && !wasEnabled.current) {\n wasEnabled.current = true\n\n if (++refCount === 1) {\n const html = document.documentElement\n const body = document.body\n\n // save current scroll position before locking\n savedScrollY = window.scrollY\n\n // save previous styles\n previousStyles = {\n htmlOverflow: html.style.overflow,\n htmlScrollbarGutter: html.style.scrollbarGutter,\n bodyPosition: body.style.position,\n bodyTop: body.style.top,\n bodyWidth: body.style.width,\n bodyOverflow: body.style.overflow,\n bodyOverscrollBehavior: body.style.overscrollBehavior,\n }\n\n // apply scroll lock styles\n html.style.scrollbarGutter = 'stable'\n html.style.overflow = 'hidden'\n\n // prevent scroll chaining on all browsers\n body.style.overscrollBehavior = 'none'\n\n // for iOS Safari, use position:fixed workaround\n // this also helps with any edge cases on other mobile browsers\n if (isIOSSafari()) {\n body.style.position = 'fixed'\n body.style.top = `-${savedScrollY}px`\n body.style.width = '100%'\n body.style.overflow = 'hidden'\n }\n }\n } else if (!enabled && wasEnabled.current) {\n wasEnabled.current = false\n\n if (--refCount === 0 && previousStyles) {\n const html = document.documentElement\n const body = document.body\n\n // restore previous styles\n html.style.overflow = previousStyles.htmlOverflow\n html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter\n body.style.position = previousStyles.bodyPosition\n body.style.top = previousStyles.bodyTop\n body.style.width = previousStyles.bodyWidth\n body.style.overflow = previousStyles.bodyOverflow\n body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior\n\n // restore scroll position
|
|
9
|
-
]
|
|
10
|
-
"version": 3
|
|
9
|
+
"import { useEffect, useRef } from 'react'\n\nconst canUseDOM = () =>\n typeof window !== 'undefined' && !!window.document && !!window.document.createElement\n\nlet refCount = 0\nlet savedScrollY = 0\nlet previousStyles: {\n htmlOverflow: string\n htmlScrollbarGutter: string\n bodyPosition: string\n bodyTop: string\n bodyWidth: string\n bodyOverflow: string\n bodyOverscrollBehavior: string\n} | null = null\n\n// detect iOS Safari which needs position:fixed workaround\nfunction isIOSSafari() {\n if (typeof navigator === 'undefined') return false\n const ua = navigator.userAgent\n const isIOS =\n /iPad|iPhone|iPod/.test(ua) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n const isSafari = /^((?!chrome|android).)*safari/i.test(ua)\n return isIOS && isSafari\n}\n\nexport const useDisableBodyScroll = (enabled: boolean): void => {\n const wasEnabled = useRef(false)\n\n useEffect(() => {\n if (!canUseDOM()) {\n return\n }\n\n if (enabled && !wasEnabled.current) {\n wasEnabled.current = true\n\n if (++refCount === 1) {\n const html = document.documentElement\n const body = document.body\n\n // save current scroll position before locking\n savedScrollY = window.scrollY\n\n // save previous styles\n previousStyles = {\n htmlOverflow: html.style.overflow,\n htmlScrollbarGutter: html.style.scrollbarGutter,\n bodyPosition: body.style.position,\n bodyTop: body.style.top,\n bodyWidth: body.style.width,\n bodyOverflow: body.style.overflow,\n bodyOverscrollBehavior: body.style.overscrollBehavior,\n }\n\n // apply scroll lock styles\n html.style.scrollbarGutter = 'stable'\n html.style.overflow = 'hidden'\n\n // prevent scroll chaining on all browsers\n body.style.overscrollBehavior = 'none'\n\n // for iOS Safari, use position:fixed workaround\n // this also helps with any edge cases on other mobile browsers\n if (isIOSSafari()) {\n body.style.position = 'fixed'\n body.style.top = `-${savedScrollY}px`\n body.style.width = '100%'\n body.style.overflow = 'hidden'\n }\n }\n } else if (!enabled && wasEnabled.current) {\n wasEnabled.current = false\n\n if (--refCount === 0 && previousStyles) {\n const html = document.documentElement\n const body = document.body\n\n // restore previous styles\n html.style.overflow = previousStyles.htmlOverflow\n html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter\n body.style.position = previousStyles.bodyPosition\n body.style.top = previousStyles.bodyTop\n body.style.width = previousStyles.bodyWidth\n body.style.overflow = previousStyles.bodyOverflow\n body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior\n\n // restore scroll position (browsers reset to 0 when overflow:hidden is removed)\n if (savedScrollY > 0) {\n window.scrollTo(0, savedScrollY)\n }\n\n previousStyles = null\n savedScrollY = 0\n }\n }\n }, [enabled])\n\n // cleanup on unmount\n useEffect(() => {\n return () => {\n if (wasEnabled.current) {\n wasEnabled.current = false\n if (--refCount === 0 && previousStyles) {\n const html = document.documentElement\n const body = document.body\n\n html.style.overflow = previousStyles.htmlOverflow\n html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter\n body.style.position = previousStyles.bodyPosition\n body.style.top = previousStyles.bodyTop\n body.style.width = previousStyles.bodyWidth\n body.style.overflow = previousStyles.bodyOverflow\n body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior\n\n if (savedScrollY > 0) {\n window.scrollTo(0, savedScrollY)\n }\n\n previousStyles = null\n savedScrollY = 0\n }\n }\n }\n }, [])\n}\n"
|
|
10
|
+
]
|
|
11
11
|
}
|
package/dist/cjs/RemoveScroll.js
DELETED
|
@@ -1,22 +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)
|
|
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 RemoveScroll_exports = {};
|
|
16
|
-
__export(RemoveScroll_exports, {
|
|
17
|
-
RemoveScroll: () => RemoveScroll
|
|
18
|
-
});
|
|
19
|
-
module.exports = __toCommonJS(RemoveScroll_exports);
|
|
20
|
-
var import_useDisableScroll = require("./useDisableScroll");
|
|
21
|
-
const RemoveScroll = (props) => ((0, import_useDisableScroll.useDisableBodyScroll)(!!props.enabled), props.children);
|
|
22
|
-
//# sourceMappingURL=RemoveScroll.js.map
|
package/dist/cjs/index.js
DELETED
|
@@ -1,15 +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 __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from == "object" || typeof from == "function")
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
9
|
-
return to;
|
|
10
|
-
}, __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
11
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
12
|
-
var index_exports = {};
|
|
13
|
-
module.exports = __toCommonJS(index_exports);
|
|
14
|
-
__reExport(index_exports, require("./RemoveScroll"), module.exports);
|
|
15
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1,57 +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)
|
|
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
|
-
useDisableBodyScroll: () => useDisableBodyScroll
|
|
18
|
-
});
|
|
19
|
-
module.exports = __toCommonJS(useDisableScroll_exports);
|
|
20
|
-
var import_react = require("react");
|
|
21
|
-
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
22
|
-
let refCount = 0, savedScrollY = 0, previousStyles = null;
|
|
23
|
-
function isIOSSafari() {
|
|
24
|
-
if (typeof navigator > "u") return !1;
|
|
25
|
-
const ua = navigator.userAgent, isIOS = /iPad|iPhone|iPod/.test(ua) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, isSafari = /^((?!chrome|android).)*safari/i.test(ua);
|
|
26
|
-
return isIOS && isSafari;
|
|
27
|
-
}
|
|
28
|
-
const useDisableBodyScroll = (enabled) => {
|
|
29
|
-
const wasEnabled = (0, import_react.useRef)(!1);
|
|
30
|
-
(0, import_react.useEffect)(() => {
|
|
31
|
-
if (canUseDOM()) {
|
|
32
|
-
if (enabled && !wasEnabled.current) {
|
|
33
|
-
if (wasEnabled.current = !0, ++refCount === 1) {
|
|
34
|
-
const html = document.documentElement, body = document.body;
|
|
35
|
-
savedScrollY = window.scrollY, previousStyles = {
|
|
36
|
-
htmlOverflow: html.style.overflow,
|
|
37
|
-
htmlScrollbarGutter: html.style.scrollbarGutter,
|
|
38
|
-
bodyPosition: body.style.position,
|
|
39
|
-
bodyTop: body.style.top,
|
|
40
|
-
bodyWidth: body.style.width,
|
|
41
|
-
bodyOverflow: body.style.overflow,
|
|
42
|
-
bodyOverscrollBehavior: body.style.overscrollBehavior
|
|
43
|
-
}, html.style.scrollbarGutter = "stable", html.style.overflow = "hidden", body.style.overscrollBehavior = "none", isIOSSafari() && (body.style.position = "fixed", body.style.top = `-${savedScrollY}px`, body.style.width = "100%", body.style.overflow = "hidden");
|
|
44
|
-
}
|
|
45
|
-
} else if (!enabled && wasEnabled.current && (wasEnabled.current = !1, --refCount === 0 && previousStyles)) {
|
|
46
|
-
const html = document.documentElement, body = document.body;
|
|
47
|
-
html.style.overflow = previousStyles.htmlOverflow, html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter, body.style.position = previousStyles.bodyPosition, body.style.top = previousStyles.bodyTop, body.style.width = previousStyles.bodyWidth, body.style.overflow = previousStyles.bodyOverflow, body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior, isIOSSafari() && savedScrollY > 0 && window.scrollTo(0, savedScrollY), previousStyles = null, savedScrollY = 0;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}, [enabled]), (0, import_react.useEffect)(() => () => {
|
|
51
|
-
if (wasEnabled.current && (wasEnabled.current = !1, --refCount === 0 && previousStyles)) {
|
|
52
|
-
const html = document.documentElement, body = document.body;
|
|
53
|
-
html.style.overflow = previousStyles.htmlOverflow, html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter, body.style.position = previousStyles.bodyPosition, body.style.top = previousStyles.bodyTop, body.style.width = previousStyles.bodyWidth, body.style.overflow = previousStyles.bodyOverflow, body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior, isIOSSafari() && savedScrollY > 0 && window.scrollTo(0, savedScrollY), previousStyles = null, savedScrollY = 0;
|
|
54
|
-
}
|
|
55
|
-
}, []);
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
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;AAE1E,IAAI,WAAW,GACX,eAAe,GACf,iBAQO;AAGX,SAAS,cAAc;AACrB,MAAI,OAAO,YAAc,IAAa,QAAO;AAC7C,QAAM,KAAK,UAAU,WACf,QACJ,mBAAmB,KAAK,EAAE,KACzB,UAAU,aAAa,cAAc,UAAU,iBAAiB,GAC7D,WAAW,iCAAiC,KAAK,EAAE;AACzD,SAAO,SAAS;AAClB;AAEO,MAAM,uBAAuB,CAAC,YAA2B;AAC9D,QAAM,iBAAa,qBAAO,EAAK;AAE/B,8BAAU,MAAM;AACd,QAAK,UAAU;AAIf,UAAI,WAAW,CAAC,WAAW;AAGzB,YAFA,WAAW,UAAU,IAEjB,EAAE,aAAa,GAAG;AACpB,gBAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAGtB,yBAAe,OAAO,SAGtB,iBAAiB;AAAA,YACf,cAAc,KAAK,MAAM;AAAA,YACzB,qBAAqB,KAAK,MAAM;AAAA,YAChC,cAAc,KAAK,MAAM;AAAA,YACzB,SAAS,KAAK,MAAM;AAAA,YACpB,WAAW,KAAK,MAAM;AAAA,YACtB,cAAc,KAAK,MAAM;AAAA,YACzB,wBAAwB,KAAK,MAAM;AAAA,UACrC,GAGA,KAAK,MAAM,kBAAkB,UAC7B,KAAK,MAAM,WAAW,UAGtB,KAAK,MAAM,qBAAqB,QAI5B,YAAY,MACd,KAAK,MAAM,WAAW,SACtB,KAAK,MAAM,MAAM,IAAI,YAAY,MACjC,KAAK,MAAM,QAAQ,QACnB,KAAK,MAAM,WAAW;AAAA,QAE1B;AAAA,iBACS,CAAC,WAAW,WAAW,YAChC,WAAW,UAAU,IAEjB,EAAE,aAAa,KAAK,iBAAgB;AACtC,cAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAGtB,aAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,kBAAkB,eAAe,qBAC5C,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,MAAM,eAAe,SAChC,KAAK,MAAM,QAAQ,eAAe,WAClC,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,qBAAqB,eAAe,wBAG3C,YAAY,KAAK,eAAe,KAClC,OAAO,SAAS,GAAG,YAAY,GAGjC,iBAAiB,MACjB,eAAe;AAAA,MACjB;AAAA;AAAA,EAEJ,GAAG,CAAC,OAAO,CAAC,OAGZ,wBAAU,MACD,MAAM;AACX,QAAI,WAAW,YACb,WAAW,UAAU,IACjB,EAAE,aAAa,KAAK,iBAAgB;AACtC,YAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAEtB,WAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,kBAAkB,eAAe,qBAC5C,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,MAAM,eAAe,SAChC,KAAK,MAAM,QAAQ,eAAe,WAClC,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,qBAAqB,eAAe,wBAE3C,YAAY,KAAK,eAAe,KAClC,OAAO,SAAS,GAAG,YAAY,GAGjC,iBAAiB,MACjB,eAAe;AAAA,IACjB;AAAA,EAEJ,GACC,CAAC,CAAC;AACP;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/esm/RemoveScroll.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from "react";
|
|
2
|
-
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
3
|
-
let refCount = 0, savedScrollY = 0, previousStyles = null;
|
|
4
|
-
function isIOSSafari() {
|
|
5
|
-
if (typeof navigator > "u") return !1;
|
|
6
|
-
const ua = navigator.userAgent, isIOS = /iPad|iPhone|iPod/.test(ua) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, isSafari = /^((?!chrome|android).)*safari/i.test(ua);
|
|
7
|
-
return isIOS && isSafari;
|
|
8
|
-
}
|
|
9
|
-
const useDisableBodyScroll = (enabled) => {
|
|
10
|
-
const wasEnabled = useRef(!1);
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
if (canUseDOM()) {
|
|
13
|
-
if (enabled && !wasEnabled.current) {
|
|
14
|
-
if (wasEnabled.current = !0, ++refCount === 1) {
|
|
15
|
-
const html = document.documentElement, body = document.body;
|
|
16
|
-
savedScrollY = window.scrollY, previousStyles = {
|
|
17
|
-
htmlOverflow: html.style.overflow,
|
|
18
|
-
htmlScrollbarGutter: html.style.scrollbarGutter,
|
|
19
|
-
bodyPosition: body.style.position,
|
|
20
|
-
bodyTop: body.style.top,
|
|
21
|
-
bodyWidth: body.style.width,
|
|
22
|
-
bodyOverflow: body.style.overflow,
|
|
23
|
-
bodyOverscrollBehavior: body.style.overscrollBehavior
|
|
24
|
-
}, html.style.scrollbarGutter = "stable", html.style.overflow = "hidden", body.style.overscrollBehavior = "none", isIOSSafari() && (body.style.position = "fixed", body.style.top = `-${savedScrollY}px`, body.style.width = "100%", body.style.overflow = "hidden");
|
|
25
|
-
}
|
|
26
|
-
} else if (!enabled && wasEnabled.current && (wasEnabled.current = !1, --refCount === 0 && previousStyles)) {
|
|
27
|
-
const html = document.documentElement, body = document.body;
|
|
28
|
-
html.style.overflow = previousStyles.htmlOverflow, html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter, body.style.position = previousStyles.bodyPosition, body.style.top = previousStyles.bodyTop, body.style.width = previousStyles.bodyWidth, body.style.overflow = previousStyles.bodyOverflow, body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior, isIOSSafari() && savedScrollY > 0 && window.scrollTo(0, savedScrollY), previousStyles = null, savedScrollY = 0;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}, [enabled]), useEffect(() => () => {
|
|
32
|
-
if (wasEnabled.current && (wasEnabled.current = !1, --refCount === 0 && previousStyles)) {
|
|
33
|
-
const html = document.documentElement, body = document.body;
|
|
34
|
-
html.style.overflow = previousStyles.htmlOverflow, html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter, body.style.position = previousStyles.bodyPosition, body.style.top = previousStyles.bodyTop, body.style.width = previousStyles.bodyWidth, body.style.overflow = previousStyles.bodyOverflow, body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior, isIOSSafari() && savedScrollY > 0 && window.scrollTo(0, savedScrollY), previousStyles = null, savedScrollY = 0;
|
|
35
|
-
}
|
|
36
|
-
}, []);
|
|
37
|
-
};
|
|
38
|
-
export {
|
|
39
|
-
useDisableBodyScroll
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,WAAW,cAAc;AAElC,MAAM,YAAY,MAChB,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS;AAE1E,IAAI,WAAW,GACX,eAAe,GACf,iBAQO;AAGX,SAAS,cAAc;AACrB,MAAI,OAAO,YAAc,IAAa,QAAO;AAC7C,QAAM,KAAK,UAAU,WACf,QACJ,mBAAmB,KAAK,EAAE,KACzB,UAAU,aAAa,cAAc,UAAU,iBAAiB,GAC7D,WAAW,iCAAiC,KAAK,EAAE;AACzD,SAAO,SAAS;AAClB;AAEO,MAAM,uBAAuB,CAAC,YAA2B;AAC9D,QAAM,aAAa,OAAO,EAAK;AAE/B,YAAU,MAAM;AACd,QAAK,UAAU;AAIf,UAAI,WAAW,CAAC,WAAW;AAGzB,YAFA,WAAW,UAAU,IAEjB,EAAE,aAAa,GAAG;AACpB,gBAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAGtB,yBAAe,OAAO,SAGtB,iBAAiB;AAAA,YACf,cAAc,KAAK,MAAM;AAAA,YACzB,qBAAqB,KAAK,MAAM;AAAA,YAChC,cAAc,KAAK,MAAM;AAAA,YACzB,SAAS,KAAK,MAAM;AAAA,YACpB,WAAW,KAAK,MAAM;AAAA,YACtB,cAAc,KAAK,MAAM;AAAA,YACzB,wBAAwB,KAAK,MAAM;AAAA,UACrC,GAGA,KAAK,MAAM,kBAAkB,UAC7B,KAAK,MAAM,WAAW,UAGtB,KAAK,MAAM,qBAAqB,QAI5B,YAAY,MACd,KAAK,MAAM,WAAW,SACtB,KAAK,MAAM,MAAM,IAAI,YAAY,MACjC,KAAK,MAAM,QAAQ,QACnB,KAAK,MAAM,WAAW;AAAA,QAE1B;AAAA,iBACS,CAAC,WAAW,WAAW,YAChC,WAAW,UAAU,IAEjB,EAAE,aAAa,KAAK,iBAAgB;AACtC,cAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAGtB,aAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,kBAAkB,eAAe,qBAC5C,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,MAAM,eAAe,SAChC,KAAK,MAAM,QAAQ,eAAe,WAClC,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,qBAAqB,eAAe,wBAG3C,YAAY,KAAK,eAAe,KAClC,OAAO,SAAS,GAAG,YAAY,GAGjC,iBAAiB,MACjB,eAAe;AAAA,MACjB;AAAA;AAAA,EAEJ,GAAG,CAAC,OAAO,CAAC,GAGZ,UAAU,MACD,MAAM;AACX,QAAI,WAAW,YACb,WAAW,UAAU,IACjB,EAAE,aAAa,KAAK,iBAAgB;AACtC,YAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAEtB,WAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,kBAAkB,eAAe,qBAC5C,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,MAAM,eAAe,SAChC,KAAK,MAAM,QAAQ,eAAe,WAClC,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,qBAAqB,eAAe,wBAE3C,YAAY,KAAK,eAAe,KAClC,OAAO,SAAS,GAAG,YAAY,GAGjC,iBAAiB,MACjB,eAAe;AAAA,IACjB;AAAA,EAEJ,GACC,CAAC,CAAC;AACP;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/jsx/RemoveScroll.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from "react";
|
|
2
|
-
const canUseDOM = () => typeof window < "u" && !!window.document && !!window.document.createElement;
|
|
3
|
-
let refCount = 0, savedScrollY = 0, previousStyles = null;
|
|
4
|
-
function isIOSSafari() {
|
|
5
|
-
if (typeof navigator > "u") return !1;
|
|
6
|
-
const ua = navigator.userAgent, isIOS = /iPad|iPhone|iPod/.test(ua) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, isSafari = /^((?!chrome|android).)*safari/i.test(ua);
|
|
7
|
-
return isIOS && isSafari;
|
|
8
|
-
}
|
|
9
|
-
const useDisableBodyScroll = (enabled) => {
|
|
10
|
-
const wasEnabled = useRef(!1);
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
if (canUseDOM()) {
|
|
13
|
-
if (enabled && !wasEnabled.current) {
|
|
14
|
-
if (wasEnabled.current = !0, ++refCount === 1) {
|
|
15
|
-
const html = document.documentElement, body = document.body;
|
|
16
|
-
savedScrollY = window.scrollY, previousStyles = {
|
|
17
|
-
htmlOverflow: html.style.overflow,
|
|
18
|
-
htmlScrollbarGutter: html.style.scrollbarGutter,
|
|
19
|
-
bodyPosition: body.style.position,
|
|
20
|
-
bodyTop: body.style.top,
|
|
21
|
-
bodyWidth: body.style.width,
|
|
22
|
-
bodyOverflow: body.style.overflow,
|
|
23
|
-
bodyOverscrollBehavior: body.style.overscrollBehavior
|
|
24
|
-
}, html.style.scrollbarGutter = "stable", html.style.overflow = "hidden", body.style.overscrollBehavior = "none", isIOSSafari() && (body.style.position = "fixed", body.style.top = `-${savedScrollY}px`, body.style.width = "100%", body.style.overflow = "hidden");
|
|
25
|
-
}
|
|
26
|
-
} else if (!enabled && wasEnabled.current && (wasEnabled.current = !1, --refCount === 0 && previousStyles)) {
|
|
27
|
-
const html = document.documentElement, body = document.body;
|
|
28
|
-
html.style.overflow = previousStyles.htmlOverflow, html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter, body.style.position = previousStyles.bodyPosition, body.style.top = previousStyles.bodyTop, body.style.width = previousStyles.bodyWidth, body.style.overflow = previousStyles.bodyOverflow, body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior, isIOSSafari() && savedScrollY > 0 && window.scrollTo(0, savedScrollY), previousStyles = null, savedScrollY = 0;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}, [enabled]), useEffect(() => () => {
|
|
32
|
-
if (wasEnabled.current && (wasEnabled.current = !1, --refCount === 0 && previousStyles)) {
|
|
33
|
-
const html = document.documentElement, body = document.body;
|
|
34
|
-
html.style.overflow = previousStyles.htmlOverflow, html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter, body.style.position = previousStyles.bodyPosition, body.style.top = previousStyles.bodyTop, body.style.width = previousStyles.bodyWidth, body.style.overflow = previousStyles.bodyOverflow, body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior, isIOSSafari() && savedScrollY > 0 && window.scrollTo(0, savedScrollY), previousStyles = null, savedScrollY = 0;
|
|
35
|
-
}
|
|
36
|
-
}, []);
|
|
37
|
-
};
|
|
38
|
-
export {
|
|
39
|
-
useDisableBodyScroll
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=useDisableScroll.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/useDisableScroll.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,WAAW,cAAc;AAElC,MAAM,YAAY,MAChB,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS;AAE1E,IAAI,WAAW,GACX,eAAe,GACf,iBAQO;AAGX,SAAS,cAAc;AACrB,MAAI,OAAO,YAAc,IAAa,QAAO;AAC7C,QAAM,KAAK,UAAU,WACf,QACJ,mBAAmB,KAAK,EAAE,KACzB,UAAU,aAAa,cAAc,UAAU,iBAAiB,GAC7D,WAAW,iCAAiC,KAAK,EAAE;AACzD,SAAO,SAAS;AAClB;AAEO,MAAM,uBAAuB,CAAC,YAA2B;AAC9D,QAAM,aAAa,OAAO,EAAK;AAE/B,YAAU,MAAM;AACd,QAAK,UAAU;AAIf,UAAI,WAAW,CAAC,WAAW;AAGzB,YAFA,WAAW,UAAU,IAEjB,EAAE,aAAa,GAAG;AACpB,gBAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAGtB,yBAAe,OAAO,SAGtB,iBAAiB;AAAA,YACf,cAAc,KAAK,MAAM;AAAA,YACzB,qBAAqB,KAAK,MAAM;AAAA,YAChC,cAAc,KAAK,MAAM;AAAA,YACzB,SAAS,KAAK,MAAM;AAAA,YACpB,WAAW,KAAK,MAAM;AAAA,YACtB,cAAc,KAAK,MAAM;AAAA,YACzB,wBAAwB,KAAK,MAAM;AAAA,UACrC,GAGA,KAAK,MAAM,kBAAkB,UAC7B,KAAK,MAAM,WAAW,UAGtB,KAAK,MAAM,qBAAqB,QAI5B,YAAY,MACd,KAAK,MAAM,WAAW,SACtB,KAAK,MAAM,MAAM,IAAI,YAAY,MACjC,KAAK,MAAM,QAAQ,QACnB,KAAK,MAAM,WAAW;AAAA,QAE1B;AAAA,iBACS,CAAC,WAAW,WAAW,YAChC,WAAW,UAAU,IAEjB,EAAE,aAAa,KAAK,iBAAgB;AACtC,cAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAGtB,aAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,kBAAkB,eAAe,qBAC5C,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,MAAM,eAAe,SAChC,KAAK,MAAM,QAAQ,eAAe,WAClC,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,qBAAqB,eAAe,wBAG3C,YAAY,KAAK,eAAe,KAClC,OAAO,SAAS,GAAG,YAAY,GAGjC,iBAAiB,MACjB,eAAe;AAAA,MACjB;AAAA;AAAA,EAEJ,GAAG,CAAC,OAAO,CAAC,GAGZ,UAAU,MACD,MAAM;AACX,QAAI,WAAW,YACb,WAAW,UAAU,IACjB,EAAE,aAAa,KAAK,iBAAgB;AACtC,YAAM,OAAO,SAAS,iBAChB,OAAO,SAAS;AAEtB,WAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,kBAAkB,eAAe,qBAC5C,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,MAAM,eAAe,SAChC,KAAK,MAAM,QAAQ,eAAe,WAClC,KAAK,MAAM,WAAW,eAAe,cACrC,KAAK,MAAM,qBAAqB,eAAe,wBAE3C,YAAY,KAAK,eAAe,KAClC,OAAO,SAAS,GAAG,YAAY,GAGjC,iBAAiB,MACjB,eAAe;AAAA,IACjB;AAAA,EAEJ,GACC,CAAC,CAAC;AACP;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|