@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.
Files changed (61) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/dist/cjs/InitialWindow.cjs +30 -0
  3. package/dist/cjs/InitialWindow.native.js +33 -0
  4. package/dist/cjs/InitialWindow.native.js.map +1 -0
  5. package/dist/cjs/NativeSafeAreaProvider.cjs +162 -0
  6. package/dist/cjs/NativeSafeAreaProvider.native.js +173 -0
  7. package/dist/cjs/NativeSafeAreaProvider.native.js.map +1 -0
  8. package/dist/cjs/SafeArea-types.cjs +18 -0
  9. package/dist/cjs/SafeArea-types.native.js +21 -0
  10. package/dist/cjs/SafeArea-types.native.js.map +1 -0
  11. package/dist/cjs/SafeAreaContext.cjs +149 -0
  12. package/dist/cjs/SafeAreaContext.native.js +154 -0
  13. package/dist/cjs/SafeAreaContext.native.js.map +1 -0
  14. package/dist/cjs/SafeAreaView.cjs +123 -0
  15. package/dist/cjs/SafeAreaView.native.js +133 -0
  16. package/dist/cjs/SafeAreaView.native.js.map +1 -0
  17. package/dist/cjs/getWindowFrame.cjs +35 -0
  18. package/dist/cjs/getWindowFrame.native.js +43 -0
  19. package/dist/cjs/getWindowFrame.native.js.map +1 -0
  20. package/dist/cjs/index.cjs +22 -0
  21. package/dist/cjs/index.native.js +25 -0
  22. package/dist/cjs/index.native.js.map +1 -0
  23. package/dist/esm/InitialWindow.mjs +4 -0
  24. package/dist/esm/InitialWindow.mjs.map +1 -0
  25. package/dist/esm/InitialWindow.native.js +4 -0
  26. package/dist/esm/InitialWindow.native.js.map +1 -0
  27. package/dist/esm/NativeSafeAreaProvider.mjs +126 -0
  28. package/dist/esm/NativeSafeAreaProvider.mjs.map +1 -0
  29. package/dist/esm/NativeSafeAreaProvider.native.js +134 -0
  30. package/dist/esm/NativeSafeAreaProvider.native.js.map +1 -0
  31. package/dist/esm/SafeArea-types.mjs +2 -0
  32. package/dist/esm/SafeArea-types.mjs.map +1 -0
  33. package/dist/esm/SafeArea-types.native.js +2 -0
  34. package/dist/esm/SafeArea-types.native.js.map +1 -0
  35. package/dist/esm/SafeAreaContext.mjs +105 -0
  36. package/dist/esm/SafeAreaContext.mjs.map +1 -0
  37. package/dist/esm/SafeAreaContext.native.js +107 -0
  38. package/dist/esm/SafeAreaContext.native.js.map +1 -0
  39. package/dist/esm/SafeAreaView.mjs +87 -0
  40. package/dist/esm/SafeAreaView.mjs.map +1 -0
  41. package/dist/esm/SafeAreaView.native.js +94 -0
  42. package/dist/esm/SafeAreaView.native.js.map +1 -0
  43. package/dist/esm/getWindowFrame.mjs +10 -0
  44. package/dist/esm/getWindowFrame.mjs.map +1 -0
  45. package/dist/esm/getWindowFrame.native.js +15 -0
  46. package/dist/esm/getWindowFrame.native.js.map +1 -0
  47. package/dist/esm/index.js +4 -0
  48. package/dist/esm/index.js.map +1 -0
  49. package/dist/esm/index.mjs +4 -0
  50. package/dist/esm/index.mjs.map +1 -0
  51. package/dist/esm/index.native.js +4 -0
  52. package/dist/esm/index.native.js.map +1 -0
  53. package/package.json +1 -1
  54. package/types/InitialWindow.d.ts.map +1 -0
  55. package/types/NativeSafeAreaProvider.d.ts.map +1 -0
  56. package/types/SafeArea-types.d.ts.map +1 -0
  57. package/types/SafeAreaContext.d.ts.map +1 -0
  58. package/types/SafeAreaView.d.ts.map +1 -0
  59. package/types/getWindowFrame.d.ts.map +1 -0
  60. package/types/getWindowFrame.native.d.ts.map +1 -0
  61. 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,2 @@
1
+
2
+ //# sourceMappingURL=SafeArea-types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=SafeArea-types.native.js.map
@@ -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":[]}