@vxrn/safe-area 1.14.4 → 1.14.5
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 +14 -12
- package/dist/cjs/InitialWindow.native.js +14 -12
- package/dist/cjs/InitialWindow.native.js.map +1 -1
- package/dist/cjs/NativeSafeAreaProvider.cjs +98 -61
- package/dist/cjs/NativeSafeAreaProvider.native.js +115 -79
- package/dist/cjs/NativeSafeAreaProvider.native.js.map +1 -1
- package/dist/cjs/SafeArea-types.cjs +7 -5
- package/dist/cjs/SafeArea-types.native.js +7 -5
- package/dist/cjs/SafeArea-types.native.js.map +1 -1
- package/dist/cjs/SafeAreaContext.cjs +76 -55
- package/dist/cjs/SafeAreaContext.native.js +82 -70
- package/dist/cjs/SafeAreaContext.native.js.map +1 -1
- package/dist/cjs/SafeAreaView.cjs +94 -92
- package/dist/cjs/SafeAreaView.native.js +97 -95
- package/dist/cjs/SafeAreaView.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/esm/InitialWindow.mjs +2 -2
- package/dist/esm/InitialWindow.mjs.map +1 -1
- package/dist/esm/InitialWindow.native.js +2 -2
- package/dist/esm/InitialWindow.native.js.map +1 -1
- package/dist/esm/NativeSafeAreaProvider.mjs +71 -36
- package/dist/esm/NativeSafeAreaProvider.mjs.map +1 -1
- package/dist/esm/NativeSafeAreaProvider.native.js +81 -47
- package/dist/esm/NativeSafeAreaProvider.native.js.map +1 -1
- package/dist/esm/SafeAreaContext.mjs +48 -29
- package/dist/esm/SafeAreaContext.mjs.map +1 -1
- package/dist/esm/SafeAreaContext.native.js +54 -44
- package/dist/esm/SafeAreaContext.native.js.map +1 -1
- package/dist/esm/SafeAreaView.mjs +65 -65
- package/dist/esm/SafeAreaView.mjs.map +1 -1
- package/dist/esm/SafeAreaView.native.js +69 -69
- package/dist/esm/SafeAreaView.native.js.map +1 -1
- package/package.json +2 -2
|
@@ -14,44 +14,52 @@ function NativeSafeAreaProvider(param) {
|
|
|
14
14
|
style,
|
|
15
15
|
onInsetsChange
|
|
16
16
|
} = param;
|
|
17
|
-
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
});
|
|
17
|
+
React.useEffect(function () {
|
|
18
|
+
if (typeof document === "undefined") {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
var element = createContextElement();
|
|
22
|
+
document.body.appendChild(element);
|
|
23
|
+
var onEnd = function () {
|
|
24
|
+
var {
|
|
25
|
+
paddingTop,
|
|
26
|
+
paddingBottom,
|
|
27
|
+
paddingLeft,
|
|
28
|
+
paddingRight
|
|
29
|
+
} = window.getComputedStyle(element);
|
|
30
|
+
var insets = {
|
|
31
|
+
top: paddingTop ? Number.parseInt(paddingTop, 10) : 0,
|
|
32
|
+
bottom: paddingBottom ? Number.parseInt(paddingBottom, 10) : 0,
|
|
33
|
+
left: paddingLeft ? Number.parseInt(paddingLeft, 10) : 0,
|
|
34
|
+
right: paddingRight ? Number.parseInt(paddingRight, 10) : 0
|
|
46
35
|
};
|
|
47
|
-
|
|
48
|
-
|
|
36
|
+
var frame = {
|
|
37
|
+
x: 0,
|
|
38
|
+
y: 0,
|
|
39
|
+
width: document.documentElement.offsetWidth,
|
|
40
|
+
height: document.documentElement.offsetHeight
|
|
49
41
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
42
|
+
onInsetsChange({
|
|
43
|
+
nativeEvent: {
|
|
44
|
+
insets,
|
|
45
|
+
frame
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
element.addEventListener(getSupportedTransitionEvent(), onEnd);
|
|
50
|
+
onEnd();
|
|
51
|
+
return function () {
|
|
52
|
+
document.body.removeChild(element);
|
|
53
|
+
element.removeEventListener(getSupportedTransitionEvent(), onEnd);
|
|
54
|
+
};
|
|
55
|
+
}, [onInsetsChange]);
|
|
56
|
+
if (style) {
|
|
57
|
+
return /* @__PURE__ */_jsx(View, {
|
|
58
|
+
style,
|
|
59
|
+
children
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return /* @__PURE__ */_jsx("div", {
|
|
55
63
|
style: {
|
|
56
64
|
display: "contents"
|
|
57
65
|
},
|
|
@@ -60,32 +68,58 @@ function NativeSafeAreaProvider(param) {
|
|
|
60
68
|
}
|
|
61
69
|
var _supportedTransitionEvent = null;
|
|
62
70
|
function getSupportedTransitionEvent() {
|
|
63
|
-
if (_supportedTransitionEvent != null)
|
|
71
|
+
if (_supportedTransitionEvent != null) {
|
|
72
|
+
return _supportedTransitionEvent;
|
|
73
|
+
}
|
|
64
74
|
var element = document.createElement("invalidtype");
|
|
65
75
|
_supportedTransitionEvent = CSSTransitions.Transition;
|
|
66
|
-
for (var key in CSSTransitions)
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
for (var key in CSSTransitions) {
|
|
77
|
+
if (element.style[key] !== void 0) {
|
|
78
|
+
_supportedTransitionEvent = CSSTransitions[key];
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
69
81
|
}
|
|
70
82
|
return _supportedTransitionEvent;
|
|
71
83
|
}
|
|
72
84
|
var _supportedEnv = null;
|
|
73
85
|
function getSupportedEnv() {
|
|
74
|
-
if (_supportedEnv !== null)
|
|
86
|
+
if (_supportedEnv !== null) {
|
|
87
|
+
return _supportedEnv;
|
|
88
|
+
}
|
|
75
89
|
var {
|
|
76
90
|
CSS
|
|
77
91
|
} = window;
|
|
78
|
-
|
|
92
|
+
if (CSS && CSS.supports && CSS.supports("top: constant(safe-area-inset-top)")) {
|
|
93
|
+
_supportedEnv = "constant";
|
|
94
|
+
} else {
|
|
95
|
+
_supportedEnv = "env";
|
|
96
|
+
}
|
|
97
|
+
return _supportedEnv;
|
|
79
98
|
}
|
|
80
99
|
function getInset(side) {
|
|
81
100
|
return `${getSupportedEnv()}(safe-area-inset-${side})`;
|
|
82
101
|
}
|
|
83
102
|
function createContextElement() {
|
|
84
|
-
var element = document.createElement("div")
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
103
|
+
var element = document.createElement("div");
|
|
104
|
+
var {
|
|
105
|
+
style
|
|
106
|
+
} = element;
|
|
107
|
+
style.position = "fixed";
|
|
108
|
+
style.left = "0";
|
|
109
|
+
style.top = "0";
|
|
110
|
+
style.width = "0";
|
|
111
|
+
style.height = "0";
|
|
112
|
+
style.zIndex = "-1";
|
|
113
|
+
style.overflow = "hidden";
|
|
114
|
+
style.visibility = "hidden";
|
|
115
|
+
style.transitionDuration = "0.05s";
|
|
116
|
+
style.transitionProperty = "padding";
|
|
117
|
+
style.transitionDelay = "0s";
|
|
118
|
+
style.paddingTop = getInset("top");
|
|
119
|
+
style.paddingBottom = getInset("bottom");
|
|
120
|
+
style.paddingLeft = getInset("left");
|
|
121
|
+
style.paddingRight = getInset("right");
|
|
122
|
+
return element;
|
|
89
123
|
}
|
|
90
124
|
export { NativeSafeAreaProvider };
|
|
91
125
|
//# sourceMappingURL=NativeSafeAreaProvider.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","React","View","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","display","_supportedTransitionEvent","createElement","key","_supportedEnv","getSupportedEnv"],"sources":["../../src/NativeSafeAreaProvider.tsx"],"sourcesContent":[null],"mappings":"AAEA,SAAAA,GAAY,IAAAC,IAAA,QAAW;AACvB,YAASC,KAAA,MAAY;AA+DV,SAAAC,IAAA;AApDX,IAAAC,cAAM;EACJC,gBAAA,EAAkB;EAClBC,UAAA,EAAY;EACZC,aAAA,EAAe;EACfC,YAAA,EAAc;EACdC,WAAA,EAAa;AACf;AAEO,SAASC,uBAAuBC,KAAA;EACrC;IAAAC,QAAA;IAAAC,KAAA;IAAAC;EAAA,IAAAH,KAAA;
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","React","View","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","display","_supportedTransitionEvent","createElement","key","_supportedEnv","getSupportedEnv","CSS","supports","getInset","side","position"],"sources":["../../src/NativeSafeAreaProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -2,40 +2,55 @@ import * as React from "react";
|
|
|
2
2
|
import { Dimensions } from "react-native-web";
|
|
3
3
|
import { NativeSafeAreaProvider } from "./NativeSafeAreaProvider.mjs";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
const isDev = process.env.NODE_ENV !== "production"
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const isDev = process.env.NODE_ENV !== "production";
|
|
6
|
+
const SafeAreaInsetsContext = React.createContext(null);
|
|
7
|
+
if (isDev) {
|
|
8
|
+
SafeAreaInsetsContext.displayName = "SafeAreaInsetsContext";
|
|
9
|
+
}
|
|
8
10
|
const SafeAreaFrameContext = React.createContext(null);
|
|
9
|
-
|
|
11
|
+
if (isDev) {
|
|
12
|
+
SafeAreaFrameContext.displayName = "SafeAreaFrameContext";
|
|
13
|
+
}
|
|
10
14
|
function SafeAreaProvider({
|
|
11
15
|
children,
|
|
12
16
|
initialMetrics,
|
|
13
17
|
initialSafeAreaInsets,
|
|
14
18
|
...others
|
|
15
19
|
}) {
|
|
16
|
-
const parentInsets = useParentSafeAreaInsets()
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
20
|
+
const parentInsets = useParentSafeAreaInsets();
|
|
21
|
+
const parentFrame = useParentSafeAreaFrame();
|
|
22
|
+
const [insets, setInsets] = React.useState(initialMetrics?.insets ?? initialSafeAreaInsets ?? parentInsets ?? null);
|
|
23
|
+
const [frame, setFrame] = React.useState(initialMetrics?.frame ?? parentFrame ?? {
|
|
24
|
+
// Backwards compat so we render anyway if we don't have frame.
|
|
25
|
+
x: 0,
|
|
26
|
+
y: 0,
|
|
27
|
+
width: Dimensions.get("window").width,
|
|
28
|
+
height: Dimensions.get("window").height
|
|
29
|
+
});
|
|
30
|
+
const onInsetsChange = React.useCallback(event => {
|
|
31
|
+
const {
|
|
32
|
+
nativeEvent: {
|
|
33
|
+
frame: nextFrame,
|
|
34
|
+
insets: nextInsets
|
|
35
|
+
}
|
|
36
|
+
} = event;
|
|
37
|
+
React.startTransition(() => {
|
|
38
|
+
setFrame(curFrame => {
|
|
39
|
+
if (
|
|
35
40
|
// Backwards compat with old native code that won't send frame.
|
|
36
|
-
nextFrame && (nextFrame.height !== curFrame.height || nextFrame.width !== curFrame.width || nextFrame.x !== curFrame.x || nextFrame.y !== curFrame.y)
|
|
41
|
+
nextFrame && (nextFrame.height !== curFrame.height || nextFrame.width !== curFrame.width || nextFrame.x !== curFrame.x || nextFrame.y !== curFrame.y)) {
|
|
42
|
+
return nextFrame;
|
|
43
|
+
}
|
|
44
|
+
return curFrame;
|
|
45
|
+
});
|
|
46
|
+
setInsets(curInsets => {
|
|
47
|
+
if (!curInsets || nextInsets.bottom !== curInsets.bottom || nextInsets.left !== curInsets.left || nextInsets.right !== curInsets.right || nextInsets.top !== curInsets.top) {
|
|
48
|
+
return nextInsets;
|
|
49
|
+
}
|
|
50
|
+
return curInsets;
|
|
37
51
|
});
|
|
38
|
-
}
|
|
52
|
+
});
|
|
53
|
+
}, []);
|
|
39
54
|
return /* @__PURE__ */jsx(NativeSafeAreaProvider, {
|
|
40
55
|
onInsetsChange,
|
|
41
56
|
...others,
|
|
@@ -57,12 +72,16 @@ function useParentSafeAreaFrame() {
|
|
|
57
72
|
const NO_INSETS_ERROR = "No safe area value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.";
|
|
58
73
|
function useSafeAreaInsets() {
|
|
59
74
|
const insets = React.useContext(SafeAreaInsetsContext);
|
|
60
|
-
if (insets == null)
|
|
75
|
+
if (insets == null) {
|
|
76
|
+
throw new Error(NO_INSETS_ERROR);
|
|
77
|
+
}
|
|
61
78
|
return insets;
|
|
62
79
|
}
|
|
63
80
|
function useSafeAreaFrame() {
|
|
64
81
|
const frame = React.useContext(SafeAreaFrameContext);
|
|
65
|
-
if (frame == null)
|
|
82
|
+
if (frame == null) {
|
|
83
|
+
throw new Error(NO_INSETS_ERROR);
|
|
84
|
+
}
|
|
66
85
|
return frame;
|
|
67
86
|
}
|
|
68
87
|
function withSafeAreaInsets(WrappedComponent) {
|
|
@@ -78,7 +97,7 @@ function withSafeAreaInsets(WrappedComponent) {
|
|
|
78
97
|
function useSafeArea() {
|
|
79
98
|
return useSafeAreaInsets();
|
|
80
99
|
}
|
|
81
|
-
const SafeAreaConsumer = SafeAreaInsetsContext.Consumer
|
|
82
|
-
|
|
100
|
+
const SafeAreaConsumer = SafeAreaInsetsContext.Consumer;
|
|
101
|
+
const SafeAreaContext = SafeAreaInsetsContext;
|
|
83
102
|
export { SafeAreaConsumer, SafeAreaContext, SafeAreaFrameContext, SafeAreaInsetsContext, SafeAreaProvider, useSafeArea, useSafeAreaFrame, useSafeAreaInsets, withSafeAreaInsets };
|
|
84
103
|
//# sourceMappingURL=SafeAreaContext.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Dimensions","NativeSafeAreaProvider","jsx","isDev","process","env","NODE_ENV","SafeAreaInsetsContext","createContext","displayName","SafeAreaFrameContext","SafeAreaProvider","children","initialMetrics","initialSafeAreaInsets","others","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","x","y","width","get","height","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","startTransition","curFrame","curInsets","bottom","left","right","top","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":"AAAA,YAAYA,KAAA,MAAW;AACvB,SAASC,UAAA,QAAkB;AAC3B,SAASC,sBAAA,QAA8B;AAmF/B,SAAAC,GAAA;AAhFR,MAAMC,KAAA,GAAQC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa;
|
|
1
|
+
{"version":3,"names":["React","Dimensions","NativeSafeAreaProvider","jsx","isDev","process","env","NODE_ENV","SafeAreaInsetsContext","createContext","displayName","SafeAreaFrameContext","SafeAreaProvider","children","initialMetrics","initialSafeAreaInsets","others","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","x","y","width","get","height","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","startTransition","curFrame","curInsets","bottom","left","right","top","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":[]}
|
|
@@ -2,51 +2,57 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { Dimensions } from "react-native";
|
|
4
4
|
import { NativeSafeAreaProvider } from "./NativeSafeAreaProvider.native.js";
|
|
5
|
-
var isDev = process.env.NODE_ENV !== "production"
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
var isDev = process.env.NODE_ENV !== "production";
|
|
6
|
+
var SafeAreaInsetsContext = /* @__PURE__ */React.createContext(null);
|
|
7
|
+
if (isDev) {
|
|
8
|
+
SafeAreaInsetsContext.displayName = "SafeAreaInsetsContext";
|
|
9
|
+
}
|
|
8
10
|
var SafeAreaFrameContext = /* @__PURE__ */React.createContext(null);
|
|
9
|
-
|
|
11
|
+
if (isDev) {
|
|
12
|
+
SafeAreaFrameContext.displayName = "SafeAreaFrameContext";
|
|
13
|
+
}
|
|
10
14
|
function SafeAreaProvider(param) {
|
|
11
15
|
var {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
16
|
+
children,
|
|
17
|
+
initialMetrics,
|
|
18
|
+
initialSafeAreaInsets,
|
|
19
|
+
...others
|
|
20
|
+
} = param;
|
|
21
|
+
var _ref, _ref1, _ref2, _ref3, _ref4;
|
|
22
|
+
var parentInsets = useParentSafeAreaInsets();
|
|
23
|
+
var parentFrame = useParentSafeAreaFrame();
|
|
24
|
+
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 : null);
|
|
25
|
+
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 : {
|
|
26
|
+
// Backwards compat so we render anyway if we don't have frame.
|
|
27
|
+
x: 0,
|
|
28
|
+
y: 0,
|
|
29
|
+
width: Dimensions.get("window").width,
|
|
30
|
+
height: Dimensions.get("window").height
|
|
31
|
+
});
|
|
32
|
+
var onInsetsChange = React.useCallback(function (event) {
|
|
33
|
+
var {
|
|
34
|
+
nativeEvent: {
|
|
35
|
+
frame: nextFrame,
|
|
36
|
+
insets: nextInsets
|
|
37
|
+
}
|
|
38
|
+
} = event;
|
|
39
|
+
React.startTransition(function () {
|
|
40
|
+
setFrame(function (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;
|
|
37
45
|
}
|
|
38
|
-
|
|
39
|
-
React.startTransition(function () {
|
|
40
|
-
setFrame(function (curFrame) {
|
|
41
|
-
return (
|
|
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) ? nextFrame : curFrame
|
|
44
|
-
);
|
|
45
|
-
}), setInsets(function (curInsets) {
|
|
46
|
-
return !curInsets || nextInsets.bottom !== curInsets.bottom || nextInsets.left !== curInsets.left || nextInsets.right !== curInsets.right || nextInsets.top !== curInsets.top ? nextInsets : curInsets;
|
|
47
|
-
});
|
|
46
|
+
return curFrame;
|
|
48
47
|
});
|
|
49
|
-
|
|
48
|
+
setInsets(function (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
|
+
}, []);
|
|
50
56
|
return /* @__PURE__ */_jsx(NativeSafeAreaProvider, {
|
|
51
57
|
onInsetsChange,
|
|
52
58
|
...others,
|
|
@@ -68,12 +74,16 @@ function useParentSafeAreaFrame() {
|
|
|
68
74
|
var NO_INSETS_ERROR = "No safe area value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.";
|
|
69
75
|
function useSafeAreaInsets() {
|
|
70
76
|
var insets = React.useContext(SafeAreaInsetsContext);
|
|
71
|
-
if (insets == null)
|
|
77
|
+
if (insets == null) {
|
|
78
|
+
throw new Error(NO_INSETS_ERROR);
|
|
79
|
+
}
|
|
72
80
|
return insets;
|
|
73
81
|
}
|
|
74
82
|
function useSafeAreaFrame() {
|
|
75
83
|
var frame = React.useContext(SafeAreaFrameContext);
|
|
76
|
-
if (frame == null)
|
|
84
|
+
if (frame == null) {
|
|
85
|
+
throw new Error(NO_INSETS_ERROR);
|
|
86
|
+
}
|
|
77
87
|
return frame;
|
|
78
88
|
}
|
|
79
89
|
function withSafeAreaInsets(WrappedComponent) {
|
|
@@ -89,7 +99,7 @@ function withSafeAreaInsets(WrappedComponent) {
|
|
|
89
99
|
function useSafeArea() {
|
|
90
100
|
return useSafeAreaInsets();
|
|
91
101
|
}
|
|
92
|
-
var SafeAreaConsumer = SafeAreaInsetsContext.Consumer
|
|
93
|
-
|
|
102
|
+
var SafeAreaConsumer = SafeAreaInsetsContext.Consumer;
|
|
103
|
+
var SafeAreaContext = SafeAreaInsetsContext;
|
|
94
104
|
export { SafeAreaConsumer, SafeAreaContext, SafeAreaFrameContext, SafeAreaInsetsContext, SafeAreaProvider, useSafeArea, useSafeAreaFrame, useSafeAreaInsets, withSafeAreaInsets };
|
|
95
105
|
//# sourceMappingURL=SafeAreaContext.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","React","Dimensions","NativeSafeAreaProvider","isDev","process","env","NODE_ENV","SafeAreaInsetsContext","createContext","displayName","SafeAreaFrameContext","SafeAreaProvider","param","children","initialMetrics","initialSafeAreaInsets","others","_ref","_ref1","_ref2","_ref3","_ref4","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","x","y","width","get","height","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","startTransition","curFrame","curInsets","bottom","left","right","top","Provider","value","useContext","NO_INSETS_ERROR","useSafeAreaInsets","Error","useSafeAreaFrame","withSafeAreaInsets","WrappedComponent","forwardRef","props","ref"],"sources":["../../src/SafeAreaContext.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,GAAY,IAAAC,IAAA,QAAW;AACvB,YAASC,KAAA,aAAkB;AAC3B,SAASC,UAAA,sBAA8B;AAmF/B,SAAAC,sBAAA;AAhFR,IAAAC,KAAM,GAAAC,OAAQ,CAAAC,GAAQ,CAAAC,QAAI,iBAAa;
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","React","Dimensions","NativeSafeAreaProvider","isDev","process","env","NODE_ENV","SafeAreaInsetsContext","createContext","displayName","SafeAreaFrameContext","SafeAreaProvider","param","children","initialMetrics","initialSafeAreaInsets","others","_ref","_ref1","_ref2","_ref3","_ref4","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","x","y","width","get","height","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","startTransition","curFrame","curInsets","bottom","left","right","top","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":[]}
|
|
@@ -2,71 +2,71 @@ import * as React from "react";
|
|
|
2
2
|
import { View, StyleSheet } from "react-native-web";
|
|
3
3
|
import { useSafeAreaInsets } from "./SafeAreaContext.mjs";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
const TOP = 8
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
5
|
+
const TOP = 8;
|
|
6
|
+
const RIGHT = 4;
|
|
7
|
+
const BOTTOM = 2;
|
|
8
|
+
const LEFT = 1;
|
|
9
|
+
const ALL = 15;
|
|
10
|
+
const edgeBitmaskMap = {
|
|
11
|
+
top: TOP,
|
|
12
|
+
right: RIGHT,
|
|
13
|
+
bottom: BOTTOM,
|
|
14
|
+
left: LEFT
|
|
15
|
+
};
|
|
16
|
+
const SafeAreaView = React.forwardRef(({
|
|
17
|
+
style = {},
|
|
18
|
+
mode,
|
|
19
|
+
edges,
|
|
20
|
+
...rest
|
|
21
|
+
}, ref) => {
|
|
22
|
+
const insets = useSafeAreaInsets();
|
|
23
|
+
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;
|
|
24
|
+
const appliedStyle = React.useMemo(() => {
|
|
25
|
+
const insetTop = edgeBitmask & TOP ? insets.top : 0;
|
|
26
|
+
const insetRight = edgeBitmask & RIGHT ? insets.right : 0;
|
|
27
|
+
const insetBottom = edgeBitmask & BOTTOM ? insets.bottom : 0;
|
|
28
|
+
const insetLeft = edgeBitmask & LEFT ? insets.left : 0;
|
|
29
|
+
const flatStyle = StyleSheet.flatten(style);
|
|
30
|
+
if (mode === "margin") {
|
|
31
|
+
const {
|
|
32
|
+
margin = 0,
|
|
33
|
+
marginVertical = margin,
|
|
34
|
+
marginHorizontal = margin,
|
|
35
|
+
marginTop = marginVertical,
|
|
36
|
+
marginRight = marginHorizontal,
|
|
37
|
+
marginBottom = marginVertical,
|
|
38
|
+
marginLeft = marginHorizontal
|
|
39
|
+
} = flatStyle;
|
|
40
|
+
const marginStyle = {
|
|
41
|
+
marginTop: marginTop + insetTop,
|
|
42
|
+
marginRight: marginRight + insetRight,
|
|
43
|
+
marginBottom: marginBottom + insetBottom,
|
|
44
|
+
marginLeft: marginLeft + insetLeft
|
|
45
|
+
};
|
|
46
|
+
return [style, marginStyle];
|
|
47
|
+
}
|
|
48
|
+
const {
|
|
49
|
+
padding = 0,
|
|
50
|
+
paddingVertical = padding,
|
|
51
|
+
paddingHorizontal = padding,
|
|
52
|
+
paddingTop = paddingVertical,
|
|
53
|
+
paddingRight = paddingHorizontal,
|
|
54
|
+
paddingBottom = paddingVertical,
|
|
55
|
+
paddingLeft = paddingHorizontal
|
|
56
|
+
} = flatStyle;
|
|
57
|
+
const paddingStyle = {
|
|
58
|
+
paddingTop: paddingTop + insetTop,
|
|
59
|
+
paddingRight: paddingRight + insetRight,
|
|
60
|
+
paddingBottom: paddingBottom + insetBottom,
|
|
61
|
+
paddingLeft: paddingLeft + insetLeft
|
|
62
|
+
};
|
|
63
|
+
return [style, paddingStyle];
|
|
64
|
+
}, [style, insets, mode, edgeBitmask]);
|
|
65
|
+
return /* @__PURE__ */jsx(View, {
|
|
66
|
+
style: appliedStyle,
|
|
67
|
+
...rest,
|
|
68
|
+
ref
|
|
70
69
|
});
|
|
70
|
+
});
|
|
71
71
|
export { SafeAreaView };
|
|
72
72
|
//# sourceMappingURL=SafeAreaView.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","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","flatten","margin","marginVertical","marginHorizontal","marginTop","marginRight","marginBottom","marginLeft","marginStyle","padding","paddingVertical","paddingHorizontal","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingStyle"],"sources":["../../src/SafeAreaView.tsx"],"sourcesContent":[null],"mappings":"AAAA,YAAYA,KAAA,MAAW;AACvB,SAASC,IAAA,EAAMC,UAAA,QAAkB;AACjC,SAASC,iBAAA,QAAyB;AAqFzB,SAAAC,GAAA;AA7ET,MAAMC,GAAA,GAAM;
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","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","flatten","margin","marginVertical","marginHorizontal","marginTop","marginRight","marginBottom","marginLeft","marginStyle","padding","paddingVertical","paddingHorizontal","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingStyle"],"sources":["../../src/SafeAreaView.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|