@vxrn/safe-area 1.27.1 → 2.0.0-beta.45.1
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/.turbo/turbo-build.log +1 -1
- package/dist/cjs/InitialWindow.cjs +15 -17
- package/dist/cjs/InitialWindow.native.cjs +30 -0
- package/dist/cjs/InitialWindow.native.js +15 -16
- package/dist/cjs/InitialWindow.native.js.map +1 -1
- package/dist/cjs/NativeSafeAreaProvider.cjs +109 -135
- package/dist/cjs/NativeSafeAreaProvider.native.cjs +141 -0
- package/dist/cjs/NativeSafeAreaProvider.native.js +111 -141
- package/dist/cjs/NativeSafeAreaProvider.native.js.map +1 -1
- package/dist/cjs/SafeArea-types.cjs +9 -11
- package/dist/cjs/SafeArea-types.native.cjs +18 -0
- package/dist/cjs/SafeArea-types.native.js +9 -10
- package/dist/cjs/SafeArea-types.native.js.map +1 -1
- package/dist/cjs/SafeAreaContext.cjs +85 -106
- package/dist/cjs/SafeAreaContext.native.cjs +132 -0
- package/dist/cjs/SafeAreaContext.native.js +88 -108
- package/dist/cjs/SafeAreaContext.native.js.map +1 -1
- package/dist/cjs/SafeAreaView.cjs +67 -100
- package/dist/cjs/SafeAreaView.native.cjs +99 -0
- package/dist/cjs/SafeAreaView.native.js +74 -106
- package/dist/cjs/SafeAreaView.native.js.map +1 -1
- package/dist/cjs/getWindowFrame.cjs +20 -24
- package/dist/cjs/getWindowFrame.native.cjs +35 -0
- package/dist/cjs/getWindowFrame.native.js +21 -27
- package/dist/cjs/getWindowFrame.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -11
- package/dist/cjs/index.native.cjs +22 -0
- package/dist/cjs/index.native.js +9 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/InitialWindow.mjs +1 -0
- package/dist/esm/InitialWindow.mjs.map +1 -1
- package/dist/esm/InitialWindow.native.js +1 -0
- package/dist/esm/InitialWindow.native.js.map +1 -1
- package/dist/esm/NativeSafeAreaProvider.mjs +94 -109
- package/dist/esm/NativeSafeAreaProvider.mjs.map +1 -1
- package/dist/esm/NativeSafeAreaProvider.native.js +96 -116
- package/dist/esm/NativeSafeAreaProvider.native.js.map +1 -1
- package/dist/esm/SafeArea-types.mjs +0 -2
- package/dist/esm/SafeArea-types.native.js +0 -2
- package/dist/esm/SafeAreaContext.mjs +62 -74
- package/dist/esm/SafeAreaContext.mjs.map +1 -1
- package/dist/esm/SafeAreaContext.native.js +66 -78
- package/dist/esm/SafeAreaContext.native.js.map +1 -1
- package/dist/esm/SafeAreaView.mjs +52 -74
- package/dist/esm/SafeAreaView.mjs.map +1 -1
- package/dist/esm/SafeAreaView.native.js +60 -82
- package/dist/esm/SafeAreaView.native.js.map +1 -1
- package/dist/esm/getWindowFrame.mjs +7 -6
- package/dist/esm/getWindowFrame.mjs.map +1 -1
- package/dist/esm/getWindowFrame.native.js +9 -10
- package/dist/esm/getWindowFrame.native.js.map +1 -1
- package/dist/esm/index.js +5 -4
- package/dist/esm/index.mjs +5 -4
- package/dist/esm/index.native.js +5 -4
- package/package.json +2 -2
- package/dist/esm/SafeArea-types.mjs.map +0 -1
- package/dist/esm/SafeArea-types.native.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
|
@@ -1,134 +1,114 @@
|
|
|
1
|
-
import { jsx
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
function _type_of(obj) {
|
|
4
|
-
"@swc/helpers - typeof";
|
|
5
3
|
|
|
6
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
7
|
-
}
|
|
8
4
|
var CSSTransitions = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
WebkitTransition: "webkitTransitionEnd",
|
|
6
|
+
Transition: "transitionEnd",
|
|
7
|
+
MozTransition: "transitionend",
|
|
8
|
+
MSTransition: "msTransitionEnd",
|
|
9
|
+
OTransition: "oTransitionEnd"
|
|
14
10
|
};
|
|
15
11
|
function NativeSafeAreaProvider(param) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" ? Object.assign(result, value) : result;
|
|
65
|
-
}, {});
|
|
66
|
-
return /* @__PURE__ */_jsx("div", {
|
|
67
|
-
style: flattenedStyle,
|
|
68
|
-
children
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
return /* @__PURE__ */_jsx("div", {
|
|
72
|
-
style: {
|
|
73
|
-
display: "contents"
|
|
74
|
-
},
|
|
75
|
-
children
|
|
76
|
-
});
|
|
12
|
+
var { children, style, onInsetsChange } = param;
|
|
13
|
+
React.useEffect(function() {
|
|
14
|
+
if (typeof document === "undefined") {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
var element = createContextElement();
|
|
18
|
+
document.body.appendChild(element);
|
|
19
|
+
var onEnd = function() {
|
|
20
|
+
var { paddingTop, paddingBottom, paddingLeft, paddingRight } = window.getComputedStyle(element);
|
|
21
|
+
var insets = {
|
|
22
|
+
top: paddingTop ? Number.parseInt(paddingTop, 10) : 0,
|
|
23
|
+
bottom: paddingBottom ? Number.parseInt(paddingBottom, 10) : 0,
|
|
24
|
+
left: paddingLeft ? Number.parseInt(paddingLeft, 10) : 0,
|
|
25
|
+
right: paddingRight ? Number.parseInt(paddingRight, 10) : 0
|
|
26
|
+
};
|
|
27
|
+
var frame = {
|
|
28
|
+
x: 0,
|
|
29
|
+
y: 0,
|
|
30
|
+
width: document.documentElement.offsetWidth,
|
|
31
|
+
height: document.documentElement.offsetHeight
|
|
32
|
+
};
|
|
33
|
+
onInsetsChange({ nativeEvent: {
|
|
34
|
+
insets,
|
|
35
|
+
frame
|
|
36
|
+
} });
|
|
37
|
+
};
|
|
38
|
+
element.addEventListener(getSupportedTransitionEvent(), onEnd);
|
|
39
|
+
onEnd();
|
|
40
|
+
return function() {
|
|
41
|
+
document.body.removeChild(element);
|
|
42
|
+
element.removeEventListener(getSupportedTransitionEvent(), onEnd);
|
|
43
|
+
};
|
|
44
|
+
}, [onInsetsChange]);
|
|
45
|
+
if (style) {
|
|
46
|
+
var styleValue = style;
|
|
47
|
+
var styleValues = Array.isArray(styleValue) ? styleValue.flat(Number.POSITIVE_INFINITY) : [styleValue];
|
|
48
|
+
var flattenedStyle = styleValues.reduce(function(result, value) {
|
|
49
|
+
return value && typeof value === "object" ? Object.assign(result, value) : result;
|
|
50
|
+
}, {});
|
|
51
|
+
return /* @__PURE__ */ jsx("div", {
|
|
52
|
+
style: flattenedStyle,
|
|
53
|
+
children
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return /* @__PURE__ */ jsx("div", {
|
|
57
|
+
style: { display: "contents" },
|
|
58
|
+
children
|
|
59
|
+
});
|
|
77
60
|
}
|
|
78
61
|
var _supportedTransitionEvent = null;
|
|
79
62
|
function getSupportedTransitionEvent() {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
63
|
+
if (_supportedTransitionEvent != null) {
|
|
64
|
+
return _supportedTransitionEvent;
|
|
65
|
+
}
|
|
66
|
+
var element = document.createElement("invalidtype");
|
|
67
|
+
_supportedTransitionEvent = CSSTransitions.Transition;
|
|
68
|
+
for (var key in CSSTransitions) {
|
|
69
|
+
if (element.style[key] !== void 0) {
|
|
70
|
+
_supportedTransitionEvent = CSSTransitions[key];
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return _supportedTransitionEvent;
|
|
92
75
|
}
|
|
93
76
|
var _supportedEnv = null;
|
|
94
77
|
function getSupportedEnv() {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
return _supportedEnv;
|
|
78
|
+
if (_supportedEnv !== null) {
|
|
79
|
+
return _supportedEnv;
|
|
80
|
+
}
|
|
81
|
+
var { CSS } = window;
|
|
82
|
+
if (CSS && CSS.supports && CSS.supports("top: constant(safe-area-inset-top)")) {
|
|
83
|
+
_supportedEnv = "constant";
|
|
84
|
+
} else {
|
|
85
|
+
_supportedEnv = "env";
|
|
86
|
+
}
|
|
87
|
+
return _supportedEnv;
|
|
107
88
|
}
|
|
108
89
|
function getInset(side) {
|
|
109
|
-
|
|
90
|
+
return `${getSupportedEnv()}(safe-area-inset-${side})`;
|
|
110
91
|
}
|
|
111
92
|
function createContextElement() {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
style.paddingRight = getInset("right");
|
|
131
|
-
return element;
|
|
93
|
+
var element = document.createElement("div");
|
|
94
|
+
var { style } = element;
|
|
95
|
+
style.position = "fixed";
|
|
96
|
+
style.left = "0";
|
|
97
|
+
style.top = "0";
|
|
98
|
+
style.width = "0";
|
|
99
|
+
style.height = "0";
|
|
100
|
+
style.zIndex = "-1";
|
|
101
|
+
style.overflow = "hidden";
|
|
102
|
+
style.visibility = "hidden";
|
|
103
|
+
style.transitionDuration = "0.05s";
|
|
104
|
+
style.transitionProperty = "padding";
|
|
105
|
+
style.transitionDelay = "0s";
|
|
106
|
+
style.paddingTop = getInset("top");
|
|
107
|
+
style.paddingBottom = getInset("bottom");
|
|
108
|
+
style.paddingLeft = getInset("left");
|
|
109
|
+
style.paddingRight = getInset("right");
|
|
110
|
+
return element;
|
|
132
111
|
}
|
|
112
|
+
|
|
133
113
|
export { NativeSafeAreaProvider };
|
|
134
114
|
//# sourceMappingURL=NativeSafeAreaProvider.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"NativeSafeAreaProvider.native.js","names":[],"sources":["esm/NativeSafeAreaProvider.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nvar CSSTransitions = {\n WebkitTransition: \"webkitTransitionEnd\",\n Transition: \"transitionEnd\",\n MozTransition: \"transitionend\",\n MSTransition: \"msTransitionEnd\",\n OTransition: \"oTransitionEnd\"\n};\nfunction NativeSafeAreaProvider(param) {\n var { children, style, onInsetsChange } = param;\n React.useEffect(function() {\n if (typeof document === \"undefined\") {\n return;\n }\n var element = createContextElement();\n document.body.appendChild(element);\n var onEnd = function() {\n var { paddingTop, paddingBottom, paddingLeft, paddingRight } = window.getComputedStyle(element);\n var insets = {\n top: paddingTop ? Number.parseInt(paddingTop, 10) : 0,\n bottom: paddingBottom ? Number.parseInt(paddingBottom, 10) : 0,\n left: paddingLeft ? Number.parseInt(paddingLeft, 10) : 0,\n right: paddingRight ? Number.parseInt(paddingRight, 10) : 0\n };\n var frame = {\n x: 0,\n y: 0,\n width: document.documentElement.offsetWidth,\n height: document.documentElement.offsetHeight\n };\n onInsetsChange({\n nativeEvent: {\n insets,\n frame\n }\n });\n };\n element.addEventListener(getSupportedTransitionEvent(), onEnd);\n onEnd();\n return function() {\n document.body.removeChild(element);\n element.removeEventListener(getSupportedTransitionEvent(), onEnd);\n };\n }, [\n onInsetsChange\n ]);\n if (style) {\n var styleValue = style;\n var styleValues = Array.isArray(styleValue) ? styleValue.flat(Number.POSITIVE_INFINITY) : [\n styleValue\n ];\n var flattenedStyle = styleValues.reduce(function(result, value) {\n return value && typeof value === \"object\" ? Object.assign(result, value) : result;\n }, {});\n return /* @__PURE__ */ _jsx(\"div\", {\n style: flattenedStyle,\n children\n });\n }\n return /* @__PURE__ */ _jsx(\"div\", {\n style: {\n display: \"contents\"\n },\n children\n });\n}\nvar _supportedTransitionEvent = null;\nfunction getSupportedTransitionEvent() {\n if (_supportedTransitionEvent != null) {\n return _supportedTransitionEvent;\n }\n var element = document.createElement(\"invalidtype\");\n _supportedTransitionEvent = CSSTransitions.Transition;\n for (var key in CSSTransitions) {\n if (element.style[key] !== void 0) {\n _supportedTransitionEvent = CSSTransitions[key];\n break;\n }\n }\n return _supportedTransitionEvent;\n}\nvar _supportedEnv = null;\nfunction getSupportedEnv() {\n if (_supportedEnv !== null) {\n return _supportedEnv;\n }\n var { CSS } = window;\n if (CSS && CSS.supports && CSS.supports(\"top: constant(safe-area-inset-top)\")) {\n _supportedEnv = \"constant\";\n } else {\n _supportedEnv = \"env\";\n }\n return _supportedEnv;\n}\nfunction getInset(side) {\n return `${getSupportedEnv()}(safe-area-inset-${side})`;\n}\nfunction createContextElement() {\n var element = document.createElement(\"div\");\n var { style } = element;\n style.position = \"fixed\";\n style.left = \"0\";\n style.top = \"0\";\n style.width = \"0\";\n style.height = \"0\";\n style.zIndex = \"-1\";\n style.overflow = \"hidden\";\n style.visibility = \"hidden\";\n style.transitionDuration = \"0.05s\";\n style.transitionProperty = \"padding\";\n style.transitionDelay = \"0s\";\n style.paddingTop = getInset(\"top\");\n style.paddingBottom = getInset(\"bottom\");\n style.paddingLeft = getInset(\"left\");\n style.paddingRight = getInset(\"right\");\n return element;\n}\nexport {\n NativeSafeAreaProvider\n};\n//# sourceMappingURL=NativeSafeAreaProvider.js.map\n"],"mappings":"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"}
|
|
@@ -2,104 +2,92 @@ import * as React from "react";
|
|
|
2
2
|
import { NativeSafeAreaProvider } from "./NativeSafeAreaProvider.mjs";
|
|
3
3
|
import { getWindowFrame } from "./getWindowFrame.mjs";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
|
|
5
6
|
const isDev = process.env.NODE_ENV !== "production";
|
|
6
7
|
const SafeAreaInsetsContext = React.createContext(null);
|
|
7
8
|
if (isDev) {
|
|
8
|
-
|
|
9
|
+
SafeAreaInsetsContext.displayName = "SafeAreaInsetsContext";
|
|
9
10
|
}
|
|
10
11
|
const SafeAreaFrameContext = React.createContext(null);
|
|
11
12
|
if (isDev) {
|
|
12
|
-
|
|
13
|
+
SafeAreaFrameContext.displayName = "SafeAreaFrameContext";
|
|
13
14
|
}
|
|
14
15
|
const ZERO_INSETS = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
top: 0,
|
|
17
|
+
bottom: 0,
|
|
18
|
+
left: 0,
|
|
19
|
+
right: 0
|
|
19
20
|
};
|
|
20
|
-
function SafeAreaProvider({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
}, []);
|
|
56
|
-
return /* @__PURE__ */jsx(NativeSafeAreaProvider, {
|
|
57
|
-
onInsetsChange,
|
|
58
|
-
...others,
|
|
59
|
-
children: /* @__PURE__ */jsx(SafeAreaFrameContext.Provider, {
|
|
60
|
-
value: frame,
|
|
61
|
-
children: /* @__PURE__ */jsx(SafeAreaInsetsContext.Provider, {
|
|
62
|
-
value: insets,
|
|
63
|
-
children
|
|
64
|
-
})
|
|
65
|
-
})
|
|
66
|
-
});
|
|
21
|
+
function SafeAreaProvider({ children, initialMetrics, initialSafeAreaInsets, ...others }) {
|
|
22
|
+
const parentInsets = useParentSafeAreaInsets();
|
|
23
|
+
const parentFrame = useParentSafeAreaFrame();
|
|
24
|
+
const [insets, setInsets] = React.useState(initialMetrics?.insets ?? initialSafeAreaInsets ?? parentInsets ?? ZERO_INSETS);
|
|
25
|
+
const [frame, setFrame] = React.useState(initialMetrics?.frame ?? parentFrame ?? getWindowFrame());
|
|
26
|
+
const onInsetsChange = React.useCallback((event) => {
|
|
27
|
+
const { nativeEvent: { frame: nextFrame, insets: nextInsets } } = event;
|
|
28
|
+
React.startTransition(() => {
|
|
29
|
+
setFrame((curFrame) => {
|
|
30
|
+
if (nextFrame && (nextFrame.height !== curFrame.height || nextFrame.width !== curFrame.width || nextFrame.x !== curFrame.x || nextFrame.y !== curFrame.y)) {
|
|
31
|
+
return nextFrame;
|
|
32
|
+
}
|
|
33
|
+
return curFrame;
|
|
34
|
+
});
|
|
35
|
+
setInsets((curInsets) => {
|
|
36
|
+
if (!curInsets || nextInsets.bottom !== curInsets.bottom || nextInsets.left !== curInsets.left || nextInsets.right !== curInsets.right || nextInsets.top !== curInsets.top) {
|
|
37
|
+
return nextInsets;
|
|
38
|
+
}
|
|
39
|
+
return curInsets;
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}, []);
|
|
43
|
+
return /* @__PURE__ */ jsx(NativeSafeAreaProvider, {
|
|
44
|
+
onInsetsChange,
|
|
45
|
+
...others,
|
|
46
|
+
children: /* @__PURE__ */ jsx(SafeAreaFrameContext.Provider, {
|
|
47
|
+
value: frame,
|
|
48
|
+
children: /* @__PURE__ */ jsx(SafeAreaInsetsContext.Provider, {
|
|
49
|
+
value: insets,
|
|
50
|
+
children
|
|
51
|
+
})
|
|
52
|
+
})
|
|
53
|
+
});
|
|
67
54
|
}
|
|
68
55
|
function useParentSafeAreaInsets() {
|
|
69
|
-
|
|
56
|
+
return React.useContext(SafeAreaInsetsContext);
|
|
70
57
|
}
|
|
71
58
|
function useParentSafeAreaFrame() {
|
|
72
|
-
|
|
59
|
+
return React.useContext(SafeAreaFrameContext);
|
|
73
60
|
}
|
|
74
61
|
const NO_INSETS_ERROR = "No safe area value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.";
|
|
75
62
|
function useSafeAreaInsets() {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
63
|
+
const insets = React.useContext(SafeAreaInsetsContext);
|
|
64
|
+
if (insets == null) {
|
|
65
|
+
throw new Error(NO_INSETS_ERROR);
|
|
66
|
+
}
|
|
67
|
+
return insets;
|
|
81
68
|
}
|
|
82
69
|
function useSafeAreaFrame() {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
70
|
+
const frame = React.useContext(SafeAreaFrameContext);
|
|
71
|
+
if (frame == null) {
|
|
72
|
+
throw new Error(NO_INSETS_ERROR);
|
|
73
|
+
}
|
|
74
|
+
return frame;
|
|
88
75
|
}
|
|
89
76
|
function withSafeAreaInsets(WrappedComponent) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
77
|
+
return React.forwardRef((props, ref) => {
|
|
78
|
+
const insets = useSafeAreaInsets();
|
|
79
|
+
return /* @__PURE__ */ jsx(WrappedComponent, {
|
|
80
|
+
...props,
|
|
81
|
+
insets,
|
|
82
|
+
ref
|
|
83
|
+
});
|
|
84
|
+
});
|
|
98
85
|
}
|
|
99
86
|
function useSafeArea() {
|
|
100
|
-
|
|
87
|
+
return useSafeAreaInsets();
|
|
101
88
|
}
|
|
102
89
|
const SafeAreaConsumer = SafeAreaInsetsContext.Consumer;
|
|
103
90
|
const SafeAreaContext = SafeAreaInsetsContext;
|
|
91
|
+
|
|
104
92
|
export { SafeAreaConsumer, SafeAreaContext, SafeAreaFrameContext, SafeAreaInsetsContext, SafeAreaProvider, useSafeArea, useSafeAreaFrame, useSafeAreaInsets, withSafeAreaInsets };
|
|
105
93
|
//# sourceMappingURL=SafeAreaContext.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"SafeAreaContext.js","names":[],"sources":["esm/SafeAreaContext.js"],"sourcesContent":["import * as React from \"react\";\nimport { NativeSafeAreaProvider } from \"./NativeSafeAreaProvider\";\nimport { getWindowFrame } from \"./getWindowFrame\";\nimport { jsx } from \"react/jsx-runtime\";\nconst isDev = process.env.NODE_ENV !== \"production\";\nconst SafeAreaInsetsContext = React.createContext(null);\nif (isDev) {\n SafeAreaInsetsContext.displayName = \"SafeAreaInsetsContext\";\n}\nconst SafeAreaFrameContext = React.createContext(null);\nif (isDev) {\n SafeAreaFrameContext.displayName = \"SafeAreaFrameContext\";\n}\nconst ZERO_INSETS = { top: 0, bottom: 0, left: 0, right: 0 };\nfunction SafeAreaProvider({\n children,\n initialMetrics,\n initialSafeAreaInsets,\n ...others\n}) {\n const parentInsets = useParentSafeAreaInsets();\n const parentFrame = useParentSafeAreaFrame();\n const [insets, setInsets] = React.useState(\n initialMetrics?.insets ?? initialSafeAreaInsets ?? parentInsets ?? ZERO_INSETS\n );\n const [frame, setFrame] = React.useState(\n initialMetrics?.frame ?? parentFrame ?? // backwards compat so we render anyway if we don't have frame.\n getWindowFrame()\n );\n const onInsetsChange = React.useCallback((event) => {\n const {\n nativeEvent: { frame: nextFrame, insets: nextInsets }\n } = event;\n React.startTransition(() => {\n setFrame((curFrame) => {\n if (\n // Backwards compat with old native code that won't send frame.\n nextFrame && (nextFrame.height !== curFrame.height || nextFrame.width !== curFrame.width || nextFrame.x !== curFrame.x || nextFrame.y !== curFrame.y)\n ) {\n return nextFrame;\n }\n return curFrame;\n });\n setInsets((curInsets) => {\n if (!curInsets || nextInsets.bottom !== curInsets.bottom || nextInsets.left !== curInsets.left || nextInsets.right !== curInsets.right || nextInsets.top !== curInsets.top) {\n return nextInsets;\n }\n return curInsets;\n });\n });\n }, []);\n return /* @__PURE__ */ jsx(NativeSafeAreaProvider, { onInsetsChange, ...others, children: /* @__PURE__ */ jsx(SafeAreaFrameContext.Provider, { value: frame, children: /* @__PURE__ */ jsx(SafeAreaInsetsContext.Provider, { value: insets, children }) }) });\n}\nfunction useParentSafeAreaInsets() {\n return React.useContext(SafeAreaInsetsContext);\n}\nfunction useParentSafeAreaFrame() {\n return React.useContext(SafeAreaFrameContext);\n}\nconst NO_INSETS_ERROR = \"No safe area value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.\";\nfunction useSafeAreaInsets() {\n const insets = React.useContext(SafeAreaInsetsContext);\n if (insets == null) {\n throw new Error(NO_INSETS_ERROR);\n }\n return insets;\n}\nfunction useSafeAreaFrame() {\n const frame = React.useContext(SafeAreaFrameContext);\n if (frame == null) {\n throw new Error(NO_INSETS_ERROR);\n }\n return frame;\n}\nfunction withSafeAreaInsets(WrappedComponent) {\n return React.forwardRef((props, ref) => {\n const insets = useSafeAreaInsets();\n return /* @__PURE__ */ jsx(WrappedComponent, { ...props, insets, ref });\n });\n}\nfunction useSafeArea() {\n return useSafeAreaInsets();\n}\nconst SafeAreaConsumer = SafeAreaInsetsContext.Consumer;\nconst SafeAreaContext = SafeAreaInsetsContext;\nexport {\n SafeAreaConsumer,\n SafeAreaContext,\n SafeAreaFrameContext,\n SafeAreaInsetsContext,\n SafeAreaProvider,\n useSafeArea,\n useSafeAreaFrame,\n useSafeAreaInsets,\n withSafeAreaInsets\n};\n//# sourceMappingURL=SafeAreaContext.js.map\n"],"mappings":";;;;;;AAIA,MAAM,QAAQ,QAAQ,IAAI,aAAa;AACvC,MAAM,wBAAwB,MAAM,cAAc,IAAI;AACtD,IAAI,OAAO;CACT,sBAAsB,cAAc;AACtC;AACA,MAAM,uBAAuB,MAAM,cAAc,IAAI;AACrD,IAAI,OAAO;CACT,qBAAqB,cAAc;AACrC;AACA,MAAM,cAAc;CAAE,KAAK;CAAG,QAAQ;CAAG,MAAM;CAAG,OAAO;AAAE;AAC3D,SAAS,iBAAiB,EACxB,UACA,gBACA,uBACA,GAAG,UACF;CACD,MAAM,eAAe,wBAAwB;CAC7C,MAAM,cAAc,uBAAuB;CAC3C,MAAM,CAAC,QAAQ,aAAa,MAAM,SAChC,gBAAgB,UAAU,yBAAyB,gBAAgB,WACrE;CACA,MAAM,CAAC,OAAO,YAAY,MAAM,SAC9B,gBAAgB,SAAS,eACzB,eAAe,CACjB;CACA,MAAM,iBAAiB,MAAM,aAAa,UAAU;EAClD,MAAM,EACJ,aAAa,EAAE,OAAO,WAAW,QAAQ,iBACvC;EACJ,MAAM,sBAAsB;GAC1B,UAAU,aAAa;IACrB,IAEE,cAAc,UAAU,WAAW,SAAS,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,MAAM,SAAS,KAAK,UAAU,MAAM,SAAS,IACnJ;KACA,OAAO;IACT;IACA,OAAO;GACT,CAAC;GACD,WAAW,cAAc;IACvB,IAAI,CAAC,aAAa,WAAW,WAAW,UAAU,UAAU,WAAW,SAAS,UAAU,QAAQ,WAAW,UAAU,UAAU,SAAS,WAAW,QAAQ,UAAU,KAAK;KAC1K,OAAO;IACT;IACA,OAAO;GACT,CAAC;EACH,CAAC;CACH,GAAG,CAAC,CAAC;CACL,OAAuB,oBAAI,wBAAwB;EAAE;EAAgB,GAAG;EAAQ,UAA0B,oBAAI,qBAAqB,UAAU;GAAE,OAAO;GAAO,UAA0B,oBAAI,sBAAsB,UAAU;IAAE,OAAO;IAAQ;GAAS,CAAC;EAAE,CAAC;CAAE,CAAC;AAC9P;AACA,SAAS,0BAA0B;CACjC,OAAO,MAAM,WAAW,qBAAqB;AAC/C;AACA,SAAS,yBAAyB;CAChC,OAAO,MAAM,WAAW,oBAAoB;AAC9C;AACA,MAAM,kBAAkB;AACxB,SAAS,oBAAoB;CAC3B,MAAM,SAAS,MAAM,WAAW,qBAAqB;CACrD,IAAI,UAAU,MAAM;EAClB,MAAM,IAAI,MAAM,eAAe;CACjC;CACA,OAAO;AACT;AACA,SAAS,mBAAmB;CAC1B,MAAM,QAAQ,MAAM,WAAW,oBAAoB;CACnD,IAAI,SAAS,MAAM;EACjB,MAAM,IAAI,MAAM,eAAe;CACjC;CACA,OAAO;AACT;AACA,SAAS,mBAAmB,kBAAkB;CAC5C,OAAO,MAAM,YAAY,OAAO,QAAQ;EACtC,MAAM,SAAS,kBAAkB;EACjC,OAAuB,oBAAI,kBAAkB;GAAE,GAAG;GAAO;GAAQ;EAAI,CAAC;CACxE,CAAC;AACH;AACA,SAAS,cAAc;CACrB,OAAO,kBAAkB;AAC3B;AACA,MAAM,mBAAmB,sBAAsB;AAC/C,MAAM,kBAAkB"}
|