@vxrn/safe-area 1.25.5 → 1.25.6
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 +2 -0
- package/dist/cjs/InitialWindow.cjs +30 -0
- package/dist/cjs/InitialWindow.native.js +33 -0
- package/dist/cjs/InitialWindow.native.js.map +1 -0
- package/dist/cjs/NativeSafeAreaProvider.cjs +162 -0
- package/dist/cjs/NativeSafeAreaProvider.native.js +173 -0
- package/dist/cjs/NativeSafeAreaProvider.native.js.map +1 -0
- package/dist/cjs/SafeArea-types.cjs +18 -0
- package/dist/cjs/SafeArea-types.native.js +21 -0
- package/dist/cjs/SafeArea-types.native.js.map +1 -0
- package/dist/cjs/SafeAreaContext.cjs +149 -0
- package/dist/cjs/SafeAreaContext.native.js +154 -0
- package/dist/cjs/SafeAreaContext.native.js.map +1 -0
- package/dist/cjs/SafeAreaView.cjs +123 -0
- package/dist/cjs/SafeAreaView.native.js +133 -0
- package/dist/cjs/SafeAreaView.native.js.map +1 -0
- package/dist/cjs/getWindowFrame.cjs +35 -0
- package/dist/cjs/getWindowFrame.native.js +43 -0
- package/dist/cjs/getWindowFrame.native.js.map +1 -0
- package/dist/cjs/index.cjs +22 -0
- package/dist/cjs/index.native.js +25 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/esm/InitialWindow.mjs +4 -0
- package/dist/esm/InitialWindow.mjs.map +1 -0
- package/dist/esm/InitialWindow.native.js +4 -0
- package/dist/esm/InitialWindow.native.js.map +1 -0
- package/dist/esm/NativeSafeAreaProvider.mjs +126 -0
- package/dist/esm/NativeSafeAreaProvider.mjs.map +1 -0
- package/dist/esm/NativeSafeAreaProvider.native.js +134 -0
- package/dist/esm/NativeSafeAreaProvider.native.js.map +1 -0
- package/dist/esm/SafeArea-types.mjs +2 -0
- package/dist/esm/SafeArea-types.mjs.map +1 -0
- package/dist/esm/SafeArea-types.native.js +2 -0
- package/dist/esm/SafeArea-types.native.js.map +1 -0
- package/dist/esm/SafeAreaContext.mjs +105 -0
- package/dist/esm/SafeAreaContext.mjs.map +1 -0
- package/dist/esm/SafeAreaContext.native.js +107 -0
- package/dist/esm/SafeAreaContext.native.js.map +1 -0
- package/dist/esm/SafeAreaView.mjs +87 -0
- package/dist/esm/SafeAreaView.mjs.map +1 -0
- package/dist/esm/SafeAreaView.native.js +94 -0
- package/dist/esm/SafeAreaView.native.js.map +1 -0
- package/dist/esm/getWindowFrame.mjs +10 -0
- package/dist/esm/getWindowFrame.mjs.map +1 -0
- package/dist/esm/getWindowFrame.native.js +15 -0
- package/dist/esm/getWindowFrame.native.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +4 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +4 -0
- package/dist/esm/index.native.js.map +1 -0
- package/package.json +1 -1
- package/types/InitialWindow.d.ts.map +1 -0
- package/types/NativeSafeAreaProvider.d.ts.map +1 -0
- package/types/SafeArea-types.d.ts.map +1 -0
- package/types/SafeAreaContext.d.ts.map +1 -0
- package/types/SafeAreaView.d.ts.map +1 -0
- package/types/getWindowFrame.d.ts.map +1 -0
- package/types/getWindowFrame.native.d.ts.map +1 -0
- package/types/index.d.ts.map +1 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
const CSSTransitions = {
|
|
4
|
+
WebkitTransition: "webkitTransitionEnd",
|
|
5
|
+
Transition: "transitionEnd",
|
|
6
|
+
MozTransition: "transitionend",
|
|
7
|
+
MSTransition: "msTransitionEnd",
|
|
8
|
+
OTransition: "oTransitionEnd"
|
|
9
|
+
};
|
|
10
|
+
function NativeSafeAreaProvider({
|
|
11
|
+
children,
|
|
12
|
+
style,
|
|
13
|
+
onInsetsChange
|
|
14
|
+
}) {
|
|
15
|
+
React.useEffect(() => {
|
|
16
|
+
if (typeof document === "undefined") {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const element = createContextElement();
|
|
20
|
+
document.body.appendChild(element);
|
|
21
|
+
const onEnd = () => {
|
|
22
|
+
const {
|
|
23
|
+
paddingTop,
|
|
24
|
+
paddingBottom,
|
|
25
|
+
paddingLeft,
|
|
26
|
+
paddingRight
|
|
27
|
+
} = window.getComputedStyle(element);
|
|
28
|
+
const insets = {
|
|
29
|
+
top: paddingTop ? Number.parseInt(paddingTop, 10) : 0,
|
|
30
|
+
bottom: paddingBottom ? Number.parseInt(paddingBottom, 10) : 0,
|
|
31
|
+
left: paddingLeft ? Number.parseInt(paddingLeft, 10) : 0,
|
|
32
|
+
right: paddingRight ? Number.parseInt(paddingRight, 10) : 0
|
|
33
|
+
};
|
|
34
|
+
const frame = {
|
|
35
|
+
x: 0,
|
|
36
|
+
y: 0,
|
|
37
|
+
width: document.documentElement.offsetWidth,
|
|
38
|
+
height: document.documentElement.offsetHeight
|
|
39
|
+
};
|
|
40
|
+
onInsetsChange({
|
|
41
|
+
nativeEvent: {
|
|
42
|
+
insets,
|
|
43
|
+
frame
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
element.addEventListener(getSupportedTransitionEvent(), onEnd);
|
|
48
|
+
onEnd();
|
|
49
|
+
return () => {
|
|
50
|
+
document.body.removeChild(element);
|
|
51
|
+
element.removeEventListener(getSupportedTransitionEvent(), onEnd);
|
|
52
|
+
};
|
|
53
|
+
}, [onInsetsChange]);
|
|
54
|
+
if (style) {
|
|
55
|
+
const styleValue = style;
|
|
56
|
+
const styleValues = Array.isArray(styleValue) ? styleValue.flat(Number.POSITIVE_INFINITY) : [styleValue];
|
|
57
|
+
const flattenedStyle = styleValues.reduce((result, value) => value && typeof value === "object" ? Object.assign(result, value) : result, {});
|
|
58
|
+
return /* @__PURE__ */jsx("div", {
|
|
59
|
+
style: flattenedStyle,
|
|
60
|
+
children
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return /* @__PURE__ */jsx("div", {
|
|
64
|
+
style: {
|
|
65
|
+
display: "contents"
|
|
66
|
+
},
|
|
67
|
+
children
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
let _supportedTransitionEvent = null;
|
|
71
|
+
function getSupportedTransitionEvent() {
|
|
72
|
+
if (_supportedTransitionEvent != null) {
|
|
73
|
+
return _supportedTransitionEvent;
|
|
74
|
+
}
|
|
75
|
+
const element = document.createElement("invalidtype");
|
|
76
|
+
_supportedTransitionEvent = CSSTransitions.Transition;
|
|
77
|
+
for (const key in CSSTransitions) {
|
|
78
|
+
if (element.style[key] !== void 0) {
|
|
79
|
+
_supportedTransitionEvent = CSSTransitions[key];
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return _supportedTransitionEvent;
|
|
84
|
+
}
|
|
85
|
+
let _supportedEnv = null;
|
|
86
|
+
function getSupportedEnv() {
|
|
87
|
+
if (_supportedEnv !== null) {
|
|
88
|
+
return _supportedEnv;
|
|
89
|
+
}
|
|
90
|
+
const {
|
|
91
|
+
CSS
|
|
92
|
+
} = window;
|
|
93
|
+
if (CSS && CSS.supports && CSS.supports("top: constant(safe-area-inset-top)")) {
|
|
94
|
+
_supportedEnv = "constant";
|
|
95
|
+
} else {
|
|
96
|
+
_supportedEnv = "env";
|
|
97
|
+
}
|
|
98
|
+
return _supportedEnv;
|
|
99
|
+
}
|
|
100
|
+
function getInset(side) {
|
|
101
|
+
return `${getSupportedEnv()}(safe-area-inset-${side})`;
|
|
102
|
+
}
|
|
103
|
+
function createContextElement() {
|
|
104
|
+
const element = document.createElement("div");
|
|
105
|
+
const {
|
|
106
|
+
style
|
|
107
|
+
} = element;
|
|
108
|
+
style.position = "fixed";
|
|
109
|
+
style.left = "0";
|
|
110
|
+
style.top = "0";
|
|
111
|
+
style.width = "0";
|
|
112
|
+
style.height = "0";
|
|
113
|
+
style.zIndex = "-1";
|
|
114
|
+
style.overflow = "hidden";
|
|
115
|
+
style.visibility = "hidden";
|
|
116
|
+
style.transitionDuration = "0.05s";
|
|
117
|
+
style.transitionProperty = "padding";
|
|
118
|
+
style.transitionDelay = "0s";
|
|
119
|
+
style.paddingTop = getInset("top");
|
|
120
|
+
style.paddingBottom = getInset("bottom");
|
|
121
|
+
style.paddingLeft = getInset("left");
|
|
122
|
+
style.paddingRight = getInset("right");
|
|
123
|
+
return element;
|
|
124
|
+
}
|
|
125
|
+
export { NativeSafeAreaProvider };
|
|
126
|
+
//# sourceMappingURL=NativeSafeAreaProvider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","jsx","CSSTransitions","WebkitTransition","Transition","MozTransition","MSTransition","OTransition","NativeSafeAreaProvider","children","style","onInsetsChange","useEffect","document","element","createContextElement","body","appendChild","onEnd","paddingTop","paddingBottom","paddingLeft","paddingRight","window","getComputedStyle","insets","top","Number","parseInt","bottom","left","right","frame","x","y","width","documentElement","offsetWidth","height","offsetHeight","nativeEvent","addEventListener","getSupportedTransitionEvent","removeChild","removeEventListener","styleValue","styleValues","Array","isArray","flat","POSITIVE_INFINITY","flattenedStyle","reduce","result","value","Object","assign","display","_supportedTransitionEvent","createElement","key","_supportedEnv","getSupportedEnv","CSS","supports","getInset","side","position","zIndex","overflow","visibility","transitionDuration","transitionProperty","transitionDelay"],"sources":["../../src/NativeSafeAreaProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
function _type_of(obj) {
|
|
4
|
+
"@swc/helpers - typeof";
|
|
5
|
+
|
|
6
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
7
|
+
}
|
|
8
|
+
var CSSTransitions = {
|
|
9
|
+
WebkitTransition: "webkitTransitionEnd",
|
|
10
|
+
Transition: "transitionEnd",
|
|
11
|
+
MozTransition: "transitionend",
|
|
12
|
+
MSTransition: "msTransitionEnd",
|
|
13
|
+
OTransition: "oTransitionEnd"
|
|
14
|
+
};
|
|
15
|
+
function NativeSafeAreaProvider(param) {
|
|
16
|
+
var {
|
|
17
|
+
children,
|
|
18
|
+
style,
|
|
19
|
+
onInsetsChange
|
|
20
|
+
} = param;
|
|
21
|
+
React.useEffect(function () {
|
|
22
|
+
if (typeof document === "undefined") {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
var element = createContextElement();
|
|
26
|
+
document.body.appendChild(element);
|
|
27
|
+
var onEnd = function () {
|
|
28
|
+
var {
|
|
29
|
+
paddingTop,
|
|
30
|
+
paddingBottom,
|
|
31
|
+
paddingLeft,
|
|
32
|
+
paddingRight
|
|
33
|
+
} = window.getComputedStyle(element);
|
|
34
|
+
var insets = {
|
|
35
|
+
top: paddingTop ? Number.parseInt(paddingTop, 10) : 0,
|
|
36
|
+
bottom: paddingBottom ? Number.parseInt(paddingBottom, 10) : 0,
|
|
37
|
+
left: paddingLeft ? Number.parseInt(paddingLeft, 10) : 0,
|
|
38
|
+
right: paddingRight ? Number.parseInt(paddingRight, 10) : 0
|
|
39
|
+
};
|
|
40
|
+
var frame = {
|
|
41
|
+
x: 0,
|
|
42
|
+
y: 0,
|
|
43
|
+
width: document.documentElement.offsetWidth,
|
|
44
|
+
height: document.documentElement.offsetHeight
|
|
45
|
+
};
|
|
46
|
+
onInsetsChange({
|
|
47
|
+
nativeEvent: {
|
|
48
|
+
insets,
|
|
49
|
+
frame
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
element.addEventListener(getSupportedTransitionEvent(), onEnd);
|
|
54
|
+
onEnd();
|
|
55
|
+
return function () {
|
|
56
|
+
document.body.removeChild(element);
|
|
57
|
+
element.removeEventListener(getSupportedTransitionEvent(), onEnd);
|
|
58
|
+
};
|
|
59
|
+
}, [onInsetsChange]);
|
|
60
|
+
if (style) {
|
|
61
|
+
var styleValue = style;
|
|
62
|
+
var styleValues = Array.isArray(styleValue) ? styleValue.flat(Number.POSITIVE_INFINITY) : [styleValue];
|
|
63
|
+
var flattenedStyle = styleValues.reduce(function (result, value) {
|
|
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
|
+
});
|
|
77
|
+
}
|
|
78
|
+
var _supportedTransitionEvent = null;
|
|
79
|
+
function getSupportedTransitionEvent() {
|
|
80
|
+
if (_supportedTransitionEvent != null) {
|
|
81
|
+
return _supportedTransitionEvent;
|
|
82
|
+
}
|
|
83
|
+
var element = document.createElement("invalidtype");
|
|
84
|
+
_supportedTransitionEvent = CSSTransitions.Transition;
|
|
85
|
+
for (var key in CSSTransitions) {
|
|
86
|
+
if (element.style[key] !== void 0) {
|
|
87
|
+
_supportedTransitionEvent = CSSTransitions[key];
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return _supportedTransitionEvent;
|
|
92
|
+
}
|
|
93
|
+
var _supportedEnv = null;
|
|
94
|
+
function getSupportedEnv() {
|
|
95
|
+
if (_supportedEnv !== null) {
|
|
96
|
+
return _supportedEnv;
|
|
97
|
+
}
|
|
98
|
+
var {
|
|
99
|
+
CSS
|
|
100
|
+
} = window;
|
|
101
|
+
if (CSS && CSS.supports && CSS.supports("top: constant(safe-area-inset-top)")) {
|
|
102
|
+
_supportedEnv = "constant";
|
|
103
|
+
} else {
|
|
104
|
+
_supportedEnv = "env";
|
|
105
|
+
}
|
|
106
|
+
return _supportedEnv;
|
|
107
|
+
}
|
|
108
|
+
function getInset(side) {
|
|
109
|
+
return `${getSupportedEnv()}(safe-area-inset-${side})`;
|
|
110
|
+
}
|
|
111
|
+
function createContextElement() {
|
|
112
|
+
var element = document.createElement("div");
|
|
113
|
+
var {
|
|
114
|
+
style
|
|
115
|
+
} = element;
|
|
116
|
+
style.position = "fixed";
|
|
117
|
+
style.left = "0";
|
|
118
|
+
style.top = "0";
|
|
119
|
+
style.width = "0";
|
|
120
|
+
style.height = "0";
|
|
121
|
+
style.zIndex = "-1";
|
|
122
|
+
style.overflow = "hidden";
|
|
123
|
+
style.visibility = "hidden";
|
|
124
|
+
style.transitionDuration = "0.05s";
|
|
125
|
+
style.transitionProperty = "padding";
|
|
126
|
+
style.transitionDelay = "0s";
|
|
127
|
+
style.paddingTop = getInset("top");
|
|
128
|
+
style.paddingBottom = getInset("bottom");
|
|
129
|
+
style.paddingLeft = getInset("left");
|
|
130
|
+
style.paddingRight = getInset("right");
|
|
131
|
+
return element;
|
|
132
|
+
}
|
|
133
|
+
export { NativeSafeAreaProvider };
|
|
134
|
+
//# sourceMappingURL=NativeSafeAreaProvider.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","React","_type_of","obj","Symbol","constructor","CSSTransitions","WebkitTransition","Transition","MozTransition","MSTransition","OTransition","NativeSafeAreaProvider","param","children","style","onInsetsChange","useEffect","document","element","createContextElement","body","appendChild","onEnd","paddingTop","paddingBottom","paddingLeft","paddingRight","window","getComputedStyle","insets","top","Number","parseInt","bottom","left","right","frame","x","y","width","documentElement","offsetWidth","height","offsetHeight","nativeEvent","addEventListener","getSupportedTransitionEvent","removeChild","removeEventListener","styleValue","styleValues","Array","isArray","flat","POSITIVE_INFINITY","flattenedStyle","reduce","result","value","Object","assign","display","_supportedTransitionEvent","createElement","key","_supportedEnv","getSupportedEnv","CSS","supports","getInset","side"],"sources":["../../src/NativeSafeAreaProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { NativeSafeAreaProvider } from "./NativeSafeAreaProvider.mjs";
|
|
3
|
+
import { getWindowFrame } from "./getWindowFrame.mjs";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
const isDev = process.env.NODE_ENV !== "production";
|
|
6
|
+
const SafeAreaInsetsContext = React.createContext(null);
|
|
7
|
+
if (isDev) {
|
|
8
|
+
SafeAreaInsetsContext.displayName = "SafeAreaInsetsContext";
|
|
9
|
+
}
|
|
10
|
+
const SafeAreaFrameContext = React.createContext(null);
|
|
11
|
+
if (isDev) {
|
|
12
|
+
SafeAreaFrameContext.displayName = "SafeAreaFrameContext";
|
|
13
|
+
}
|
|
14
|
+
const ZERO_INSETS = {
|
|
15
|
+
top: 0,
|
|
16
|
+
bottom: 0,
|
|
17
|
+
left: 0,
|
|
18
|
+
right: 0
|
|
19
|
+
};
|
|
20
|
+
function SafeAreaProvider({
|
|
21
|
+
children,
|
|
22
|
+
initialMetrics,
|
|
23
|
+
initialSafeAreaInsets,
|
|
24
|
+
...others
|
|
25
|
+
}) {
|
|
26
|
+
const parentInsets = useParentSafeAreaInsets();
|
|
27
|
+
const parentFrame = useParentSafeAreaFrame();
|
|
28
|
+
const [insets, setInsets] = React.useState(initialMetrics?.insets ?? initialSafeAreaInsets ?? parentInsets ?? ZERO_INSETS);
|
|
29
|
+
const [frame, setFrame] = React.useState(initialMetrics?.frame ?? parentFrame ??
|
|
30
|
+
// backwards compat so we render anyway if we don't have frame.
|
|
31
|
+
getWindowFrame());
|
|
32
|
+
const onInsetsChange = React.useCallback(event => {
|
|
33
|
+
const {
|
|
34
|
+
nativeEvent: {
|
|
35
|
+
frame: nextFrame,
|
|
36
|
+
insets: nextInsets
|
|
37
|
+
}
|
|
38
|
+
} = event;
|
|
39
|
+
React.startTransition(() => {
|
|
40
|
+
setFrame(curFrame => {
|
|
41
|
+
if (
|
|
42
|
+
// Backwards compat with old native code that won't send frame.
|
|
43
|
+
nextFrame && (nextFrame.height !== curFrame.height || nextFrame.width !== curFrame.width || nextFrame.x !== curFrame.x || nextFrame.y !== curFrame.y)) {
|
|
44
|
+
return nextFrame;
|
|
45
|
+
}
|
|
46
|
+
return curFrame;
|
|
47
|
+
});
|
|
48
|
+
setInsets(curInsets => {
|
|
49
|
+
if (!curInsets || nextInsets.bottom !== curInsets.bottom || nextInsets.left !== curInsets.left || nextInsets.right !== curInsets.right || nextInsets.top !== curInsets.top) {
|
|
50
|
+
return nextInsets;
|
|
51
|
+
}
|
|
52
|
+
return curInsets;
|
|
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
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function useParentSafeAreaInsets() {
|
|
69
|
+
return React.useContext(SafeAreaInsetsContext);
|
|
70
|
+
}
|
|
71
|
+
function useParentSafeAreaFrame() {
|
|
72
|
+
return React.useContext(SafeAreaFrameContext);
|
|
73
|
+
}
|
|
74
|
+
const NO_INSETS_ERROR = "No safe area value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.";
|
|
75
|
+
function useSafeAreaInsets() {
|
|
76
|
+
const insets = React.useContext(SafeAreaInsetsContext);
|
|
77
|
+
if (insets == null) {
|
|
78
|
+
throw new Error(NO_INSETS_ERROR);
|
|
79
|
+
}
|
|
80
|
+
return insets;
|
|
81
|
+
}
|
|
82
|
+
function useSafeAreaFrame() {
|
|
83
|
+
const frame = React.useContext(SafeAreaFrameContext);
|
|
84
|
+
if (frame == null) {
|
|
85
|
+
throw new Error(NO_INSETS_ERROR);
|
|
86
|
+
}
|
|
87
|
+
return frame;
|
|
88
|
+
}
|
|
89
|
+
function withSafeAreaInsets(WrappedComponent) {
|
|
90
|
+
return React.forwardRef((props, ref) => {
|
|
91
|
+
const insets = useSafeAreaInsets();
|
|
92
|
+
return /* @__PURE__ */jsx(WrappedComponent, {
|
|
93
|
+
...props,
|
|
94
|
+
insets,
|
|
95
|
+
ref
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function useSafeArea() {
|
|
100
|
+
return useSafeAreaInsets();
|
|
101
|
+
}
|
|
102
|
+
const SafeAreaConsumer = SafeAreaInsetsContext.Consumer;
|
|
103
|
+
const SafeAreaContext = SafeAreaInsetsContext;
|
|
104
|
+
export { SafeAreaConsumer, SafeAreaContext, SafeAreaFrameContext, SafeAreaInsetsContext, SafeAreaProvider, useSafeArea, useSafeAreaFrame, useSafeAreaInsets, withSafeAreaInsets };
|
|
105
|
+
//# sourceMappingURL=SafeAreaContext.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","NativeSafeAreaProvider","getWindowFrame","jsx","isDev","process","env","NODE_ENV","SafeAreaInsetsContext","createContext","displayName","SafeAreaFrameContext","ZERO_INSETS","top","bottom","left","right","SafeAreaProvider","children","initialMetrics","initialSafeAreaInsets","others","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","startTransition","curFrame","height","width","x","y","curInsets","Provider","value","useContext","NO_INSETS_ERROR","useSafeAreaInsets","Error","useSafeAreaFrame","withSafeAreaInsets","WrappedComponent","forwardRef","props","ref","useSafeArea","SafeAreaConsumer","Consumer","SafeAreaContext"],"sources":["../../src/SafeAreaContext.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { NativeSafeAreaProvider } from "./NativeSafeAreaProvider.native.js";
|
|
4
|
+
import { getWindowFrame } from "./getWindowFrame.native.js";
|
|
5
|
+
var isDev = process.env.NODE_ENV !== "production";
|
|
6
|
+
var SafeAreaInsetsContext = /* @__PURE__ */React.createContext(null);
|
|
7
|
+
if (isDev) {
|
|
8
|
+
SafeAreaInsetsContext.displayName = "SafeAreaInsetsContext";
|
|
9
|
+
}
|
|
10
|
+
var SafeAreaFrameContext = /* @__PURE__ */React.createContext(null);
|
|
11
|
+
if (isDev) {
|
|
12
|
+
SafeAreaFrameContext.displayName = "SafeAreaFrameContext";
|
|
13
|
+
}
|
|
14
|
+
var ZERO_INSETS = {
|
|
15
|
+
top: 0,
|
|
16
|
+
bottom: 0,
|
|
17
|
+
left: 0,
|
|
18
|
+
right: 0
|
|
19
|
+
};
|
|
20
|
+
function SafeAreaProvider(param) {
|
|
21
|
+
var {
|
|
22
|
+
children,
|
|
23
|
+
initialMetrics,
|
|
24
|
+
initialSafeAreaInsets,
|
|
25
|
+
...others
|
|
26
|
+
} = param;
|
|
27
|
+
var _ref, _ref1, _ref2, _ref3, _ref4;
|
|
28
|
+
var parentInsets = useParentSafeAreaInsets();
|
|
29
|
+
var parentFrame = useParentSafeAreaFrame();
|
|
30
|
+
var [insets, setInsets] = React.useState((_ref = (_ref1 = (_ref2 = initialMetrics === null || initialMetrics === void 0 ? void 0 : initialMetrics.insets) !== null && _ref2 !== void 0 ? _ref2 : initialSafeAreaInsets) !== null && _ref1 !== void 0 ? _ref1 : parentInsets) !== null && _ref !== void 0 ? _ref : ZERO_INSETS);
|
|
31
|
+
var [frame, setFrame] = React.useState((_ref3 = (_ref4 = initialMetrics === null || initialMetrics === void 0 ? void 0 : initialMetrics.frame) !== null && _ref4 !== void 0 ? _ref4 : parentFrame) !== null && _ref3 !== void 0 ? _ref3 :
|
|
32
|
+
// backwards compat so we render anyway if we don't have frame.
|
|
33
|
+
getWindowFrame());
|
|
34
|
+
var onInsetsChange = React.useCallback(function (event) {
|
|
35
|
+
var {
|
|
36
|
+
nativeEvent: {
|
|
37
|
+
frame: nextFrame,
|
|
38
|
+
insets: nextInsets
|
|
39
|
+
}
|
|
40
|
+
} = event;
|
|
41
|
+
React.startTransition(function () {
|
|
42
|
+
setFrame(function (curFrame) {
|
|
43
|
+
if (
|
|
44
|
+
// Backwards compat with old native code that won't send frame.
|
|
45
|
+
nextFrame && (nextFrame.height !== curFrame.height || nextFrame.width !== curFrame.width || nextFrame.x !== curFrame.x || nextFrame.y !== curFrame.y)) {
|
|
46
|
+
return nextFrame;
|
|
47
|
+
}
|
|
48
|
+
return curFrame;
|
|
49
|
+
});
|
|
50
|
+
setInsets(function (curInsets) {
|
|
51
|
+
if (!curInsets || nextInsets.bottom !== curInsets.bottom || nextInsets.left !== curInsets.left || nextInsets.right !== curInsets.right || nextInsets.top !== curInsets.top) {
|
|
52
|
+
return nextInsets;
|
|
53
|
+
}
|
|
54
|
+
return curInsets;
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}, []);
|
|
58
|
+
return /* @__PURE__ */_jsx(NativeSafeAreaProvider, {
|
|
59
|
+
onInsetsChange,
|
|
60
|
+
...others,
|
|
61
|
+
children: /* @__PURE__ */_jsx(SafeAreaFrameContext.Provider, {
|
|
62
|
+
value: frame,
|
|
63
|
+
children: /* @__PURE__ */_jsx(SafeAreaInsetsContext.Provider, {
|
|
64
|
+
value: insets,
|
|
65
|
+
children
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function useParentSafeAreaInsets() {
|
|
71
|
+
return React.useContext(SafeAreaInsetsContext);
|
|
72
|
+
}
|
|
73
|
+
function useParentSafeAreaFrame() {
|
|
74
|
+
return React.useContext(SafeAreaFrameContext);
|
|
75
|
+
}
|
|
76
|
+
var NO_INSETS_ERROR = "No safe area value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.";
|
|
77
|
+
function useSafeAreaInsets() {
|
|
78
|
+
var insets = React.useContext(SafeAreaInsetsContext);
|
|
79
|
+
if (insets == null) {
|
|
80
|
+
throw new Error(NO_INSETS_ERROR);
|
|
81
|
+
}
|
|
82
|
+
return insets;
|
|
83
|
+
}
|
|
84
|
+
function useSafeAreaFrame() {
|
|
85
|
+
var frame = React.useContext(SafeAreaFrameContext);
|
|
86
|
+
if (frame == null) {
|
|
87
|
+
throw new Error(NO_INSETS_ERROR);
|
|
88
|
+
}
|
|
89
|
+
return frame;
|
|
90
|
+
}
|
|
91
|
+
function withSafeAreaInsets(WrappedComponent) {
|
|
92
|
+
return /* @__PURE__ */React.forwardRef(function (props, ref) {
|
|
93
|
+
var insets = useSafeAreaInsets();
|
|
94
|
+
return /* @__PURE__ */_jsx(WrappedComponent, {
|
|
95
|
+
...props,
|
|
96
|
+
insets,
|
|
97
|
+
ref
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function useSafeArea() {
|
|
102
|
+
return useSafeAreaInsets();
|
|
103
|
+
}
|
|
104
|
+
var SafeAreaConsumer = SafeAreaInsetsContext.Consumer;
|
|
105
|
+
var SafeAreaContext = SafeAreaInsetsContext;
|
|
106
|
+
export { SafeAreaConsumer, SafeAreaContext, SafeAreaFrameContext, SafeAreaInsetsContext, SafeAreaProvider, useSafeArea, useSafeAreaFrame, useSafeAreaInsets, withSafeAreaInsets };
|
|
107
|
+
//# sourceMappingURL=SafeAreaContext.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","React","NativeSafeAreaProvider","getWindowFrame","isDev","process","env","NODE_ENV","SafeAreaInsetsContext","createContext","displayName","SafeAreaFrameContext","ZERO_INSETS","top","bottom","left","right","SafeAreaProvider","param","children","initialMetrics","initialSafeAreaInsets","others","_ref","_ref1","_ref2","_ref3","_ref4","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","startTransition","curFrame","height","width","x","y","curInsets","Provider","value","useContext","NO_INSETS_ERROR","useSafeAreaInsets","Error","useSafeAreaFrame","withSafeAreaInsets","WrappedComponent","forwardRef","props","ref"],"sources":["../../src/SafeAreaContext.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useSafeAreaInsets } from "./SafeAreaContext.mjs";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
const TOP = 8;
|
|
5
|
+
const RIGHT = 4;
|
|
6
|
+
const BOTTOM = 2;
|
|
7
|
+
const LEFT = 1;
|
|
8
|
+
const ALL = 15;
|
|
9
|
+
const edgeBitmaskMap = {
|
|
10
|
+
top: TOP,
|
|
11
|
+
right: RIGHT,
|
|
12
|
+
bottom: BOTTOM,
|
|
13
|
+
left: LEFT
|
|
14
|
+
};
|
|
15
|
+
const SafeAreaView = React.forwardRef(({
|
|
16
|
+
style = {},
|
|
17
|
+
mode,
|
|
18
|
+
edges,
|
|
19
|
+
...rest
|
|
20
|
+
}, ref) => {
|
|
21
|
+
const insets = useSafeAreaInsets();
|
|
22
|
+
const edgeBitmask = edges != null ? Array.isArray(edges) ? edges.reduce((acc, edge) => acc | edgeBitmaskMap[edge], 0) : Object.keys(edges).reduce((acc, edge) => acc | edgeBitmaskMap[edge], 0) : ALL;
|
|
23
|
+
const appliedStyle = React.useMemo(() => {
|
|
24
|
+
const insetTop = edgeBitmask & TOP ? insets.top : 0;
|
|
25
|
+
const insetRight = edgeBitmask & RIGHT ? insets.right : 0;
|
|
26
|
+
const insetBottom = edgeBitmask & BOTTOM ? insets.bottom : 0;
|
|
27
|
+
const insetLeft = edgeBitmask & LEFT ? insets.left : 0;
|
|
28
|
+
const flatStyle = (Array.isArray(style) ? style.flat(Number.POSITIVE_INFINITY) : [style]).reduce((result, value) => value ? Object.assign(result, value) : result, {});
|
|
29
|
+
if (mode === "margin") {
|
|
30
|
+
const {
|
|
31
|
+
margin = 0,
|
|
32
|
+
marginVertical = margin,
|
|
33
|
+
marginHorizontal = margin,
|
|
34
|
+
marginTop = marginVertical,
|
|
35
|
+
marginRight = marginHorizontal,
|
|
36
|
+
marginBottom = marginVertical,
|
|
37
|
+
marginLeft = marginHorizontal
|
|
38
|
+
} = flatStyle;
|
|
39
|
+
const marginStyle = {
|
|
40
|
+
marginTop: marginTop + insetTop,
|
|
41
|
+
marginRight: marginRight + insetRight,
|
|
42
|
+
marginBottom: marginBottom + insetBottom,
|
|
43
|
+
marginLeft: marginLeft + insetLeft
|
|
44
|
+
};
|
|
45
|
+
const {
|
|
46
|
+
marginVertical: _marginVertical,
|
|
47
|
+
marginHorizontal: _marginHorizontal,
|
|
48
|
+
...domStyle2
|
|
49
|
+
} = flatStyle;
|
|
50
|
+
return {
|
|
51
|
+
...domStyle2,
|
|
52
|
+
...marginStyle
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const {
|
|
56
|
+
padding = 0,
|
|
57
|
+
paddingVertical = padding,
|
|
58
|
+
paddingHorizontal = padding,
|
|
59
|
+
paddingTop = paddingVertical,
|
|
60
|
+
paddingRight = paddingHorizontal,
|
|
61
|
+
paddingBottom = paddingVertical,
|
|
62
|
+
paddingLeft = paddingHorizontal
|
|
63
|
+
} = flatStyle;
|
|
64
|
+
const paddingStyle = {
|
|
65
|
+
paddingTop: paddingTop + insetTop,
|
|
66
|
+
paddingRight: paddingRight + insetRight,
|
|
67
|
+
paddingBottom: paddingBottom + insetBottom,
|
|
68
|
+
paddingLeft: paddingLeft + insetLeft
|
|
69
|
+
};
|
|
70
|
+
const {
|
|
71
|
+
paddingVertical: _paddingVertical,
|
|
72
|
+
paddingHorizontal: _paddingHorizontal,
|
|
73
|
+
...domStyle
|
|
74
|
+
} = flatStyle;
|
|
75
|
+
return {
|
|
76
|
+
...domStyle,
|
|
77
|
+
...paddingStyle
|
|
78
|
+
};
|
|
79
|
+
}, [style, insets, mode, edgeBitmask]);
|
|
80
|
+
return /* @__PURE__ */jsx("div", {
|
|
81
|
+
...rest,
|
|
82
|
+
style: appliedStyle,
|
|
83
|
+
ref
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
export { SafeAreaView };
|
|
87
|
+
//# sourceMappingURL=SafeAreaView.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useSafeAreaInsets","jsx","TOP","RIGHT","BOTTOM","LEFT","ALL","edgeBitmaskMap","top","right","bottom","left","SafeAreaView","forwardRef","style","mode","edges","rest","ref","insets","edgeBitmask","Array","isArray","reduce","acc","edge","Object","keys","appliedStyle","useMemo","insetTop","insetRight","insetBottom","insetLeft","flatStyle","flat","Number","POSITIVE_INFINITY","result","value","assign","margin","marginVertical","marginHorizontal","marginTop","marginRight","marginBottom","marginLeft","marginStyle","_marginVertical","_marginHorizontal","domStyle","padding","paddingVertical","paddingHorizontal","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingStyle","_paddingVertical","_paddingHorizontal"],"sources":["../../src/SafeAreaView.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|