@amazon-devices/react-native-safe-area-context 2.0.1758683737

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 (156) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +315 -0
  3. package/SystemBundles/e3c0cdeab56b8b622d4f0fd5a80812eafe199fa2287d0e3a09c5e573a1035350.bundle +11031 -0
  4. package/SystemBundles/e3c0cdeab56b8b622d4f0fd5a80812eafe199fa2287d0e3a09c5e573a1035350.map +1 -0
  5. package/SystemModules/amzn__react-native-safe-area-context-2.modules.txt +55 -0
  6. package/SystemModules/amzn__react-native-safe-area-context-2.private.modules.txt +91 -0
  7. package/SystemModules/keplerscript-system-bundle-config.json +7 -0
  8. package/THIRD_PARTY_NOTICES.txt +24 -0
  9. package/android/build.gradle +46 -0
  10. package/android/src/main/AndroidManifest.xml +6 -0
  11. package/android/src/main/java/com/th3rdwave/safeareacontext/EdgeInsets.java +22 -0
  12. package/android/src/main/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.java +33 -0
  13. package/android/src/main/java/com/th3rdwave/safeareacontext/Rect.java +22 -0
  14. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.java +31 -0
  15. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProvider.java +66 -0
  16. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.java +94 -0
  17. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.java +82 -0
  18. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.java +159 -0
  19. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.java +8 -0
  20. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.java +27 -0
  21. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.java +72 -0
  22. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.java +6 -0
  23. package/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.java +201 -0
  24. package/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.java +52 -0
  25. package/ios/SafeAreaView/RCTView+SafeAreaCompat.h +16 -0
  26. package/ios/SafeAreaView/RCTView+SafeAreaCompat.m +57 -0
  27. package/ios/SafeAreaView/RNCSafeAreaProvider.h +13 -0
  28. package/ios/SafeAreaView/RNCSafeAreaProvider.m +65 -0
  29. package/ios/SafeAreaView/RNCSafeAreaProviderManager.h +9 -0
  30. package/ios/SafeAreaView/RNCSafeAreaProviderManager.m +61 -0
  31. package/ios/SafeAreaView/RNCSafeAreaShadowView.h +9 -0
  32. package/ios/SafeAreaView/RNCSafeAreaShadowView.m +180 -0
  33. package/ios/SafeAreaView/RNCSafeAreaView.h +21 -0
  34. package/ios/SafeAreaView/RNCSafeAreaView.m +118 -0
  35. package/ios/SafeAreaView/RNCSafeAreaViewEdges.h +9 -0
  36. package/ios/SafeAreaView/RNCSafeAreaViewEdges.m +13 -0
  37. package/ios/SafeAreaView/RNCSafeAreaViewLocalData.h +18 -0
  38. package/ios/SafeAreaView/RNCSafeAreaViewLocalData.m +16 -0
  39. package/ios/SafeAreaView/RNCSafeAreaViewManager.h +9 -0
  40. package/ios/SafeAreaView/RNCSafeAreaViewManager.m +25 -0
  41. package/ios/SafeAreaView/RNCSafeAreaViewMode.h +7 -0
  42. package/ios/SafeAreaView/RNCSafeAreaViewMode.m +11 -0
  43. package/ios/SafeAreaView.xcodeproj/project.pbxproj +338 -0
  44. package/kepler-compatibility.json +8 -0
  45. package/kepler-transformed-package-info.json +3 -0
  46. package/lib/commonjs/CompatNativeSafeAreaProvider.js +44 -0
  47. package/lib/commonjs/CompatNativeSafeAreaProvider.js.map +1 -0
  48. package/lib/commonjs/InitialWindow.js +13 -0
  49. package/lib/commonjs/InitialWindow.js.map +1 -0
  50. package/lib/commonjs/InitialWindow.kepler.js +15 -0
  51. package/lib/commonjs/InitialWindow.kepler.js.map +1 -0
  52. package/lib/commonjs/InitialWindow.native.js +15 -0
  53. package/lib/commonjs/InitialWindow.native.js.map +1 -0
  54. package/lib/commonjs/NativeSafeAreaProvider.js +132 -0
  55. package/lib/commonjs/NativeSafeAreaProvider.js.map +1 -0
  56. package/lib/commonjs/NativeSafeAreaProvider.kepler.js +9 -0
  57. package/lib/commonjs/NativeSafeAreaProvider.kepler.js.map +1 -0
  58. package/lib/commonjs/NativeSafeAreaProvider.macos.js +9 -0
  59. package/lib/commonjs/NativeSafeAreaProvider.macos.js.map +1 -0
  60. package/lib/commonjs/NativeSafeAreaProvider.native.js +9 -0
  61. package/lib/commonjs/NativeSafeAreaProvider.native.js.map +1 -0
  62. package/lib/commonjs/NativeSafeAreaProvider.windows.js +9 -0
  63. package/lib/commonjs/NativeSafeAreaProvider.windows.js.map +1 -0
  64. package/lib/commonjs/SafeArea.types.js +6 -0
  65. package/lib/commonjs/SafeArea.types.js.map +1 -0
  66. package/lib/commonjs/SafeAreaContext.js +113 -0
  67. package/lib/commonjs/SafeAreaContext.js.map +1 -0
  68. package/lib/commonjs/SafeAreaView.js +82 -0
  69. package/lib/commonjs/SafeAreaView.js.map +1 -0
  70. package/lib/commonjs/SafeAreaView.kepler.js +9 -0
  71. package/lib/commonjs/SafeAreaView.kepler.js.map +1 -0
  72. package/lib/commonjs/SafeAreaView.macos.js +9 -0
  73. package/lib/commonjs/SafeAreaView.macos.js.map +1 -0
  74. package/lib/commonjs/SafeAreaView.native.js +9 -0
  75. package/lib/commonjs/SafeAreaView.native.js.map +1 -0
  76. package/lib/commonjs/SafeAreaView.windows.js +9 -0
  77. package/lib/commonjs/SafeAreaView.windows.js.map +1 -0
  78. package/lib/commonjs/index.js +50 -0
  79. package/lib/commonjs/index.js.map +1 -0
  80. package/lib/commonjs/useWindowDimensions.js +32 -0
  81. package/lib/commonjs/useWindowDimensions.js.map +1 -0
  82. package/lib/module/CompatNativeSafeAreaProvider.js +35 -0
  83. package/lib/module/CompatNativeSafeAreaProvider.js.map +1 -0
  84. package/lib/module/InitialWindow.js +7 -0
  85. package/lib/module/InitialWindow.js.map +1 -0
  86. package/lib/module/InitialWindow.kepler.js +9 -0
  87. package/lib/module/InitialWindow.kepler.js.map +1 -0
  88. package/lib/module/InitialWindow.native.js +9 -0
  89. package/lib/module/InitialWindow.native.js.map +1 -0
  90. package/lib/module/NativeSafeAreaProvider.js +124 -0
  91. package/lib/module/NativeSafeAreaProvider.js.map +1 -0
  92. package/lib/module/NativeSafeAreaProvider.kepler.js +3 -0
  93. package/lib/module/NativeSafeAreaProvider.kepler.js.map +1 -0
  94. package/lib/module/NativeSafeAreaProvider.macos.js +3 -0
  95. package/lib/module/NativeSafeAreaProvider.macos.js.map +1 -0
  96. package/lib/module/NativeSafeAreaProvider.native.js +3 -0
  97. package/lib/module/NativeSafeAreaProvider.native.js.map +1 -0
  98. package/lib/module/NativeSafeAreaProvider.windows.js +3 -0
  99. package/lib/module/NativeSafeAreaProvider.windows.js.map +1 -0
  100. package/lib/module/SafeArea.types.js +2 -0
  101. package/lib/module/SafeArea.types.js.map +1 -0
  102. package/lib/module/SafeAreaContext.js +99 -0
  103. package/lib/module/SafeAreaContext.js.map +1 -0
  104. package/lib/module/SafeAreaView.js +74 -0
  105. package/lib/module/SafeAreaView.js.map +1 -0
  106. package/lib/module/SafeAreaView.kepler.js +3 -0
  107. package/lib/module/SafeAreaView.kepler.js.map +1 -0
  108. package/lib/module/SafeAreaView.macos.js +3 -0
  109. package/lib/module/SafeAreaView.macos.js.map +1 -0
  110. package/lib/module/SafeAreaView.native.js +3 -0
  111. package/lib/module/SafeAreaView.native.js.map +1 -0
  112. package/lib/module/SafeAreaView.windows.js +3 -0
  113. package/lib/module/SafeAreaView.windows.js.map +1 -0
  114. package/lib/module/index.js +5 -0
  115. package/lib/module/index.js.map +1 -0
  116. package/lib/module/useWindowDimensions.js +26 -0
  117. package/lib/module/useWindowDimensions.js.map +1 -0
  118. package/lib/typescript/src/CompatNativeSafeAreaProvider.d.ts +2 -0
  119. package/lib/typescript/src/InitialWindow.d.ts +6 -0
  120. package/lib/typescript/src/InitialWindow.kepler.d.ts +6 -0
  121. package/lib/typescript/src/InitialWindow.native.d.ts +6 -0
  122. package/lib/typescript/src/NativeSafeAreaProvider.d.ts +2 -0
  123. package/lib/typescript/src/NativeSafeAreaProvider.kepler.d.ts +2 -0
  124. package/lib/typescript/src/NativeSafeAreaProvider.macos.d.ts +2 -0
  125. package/lib/typescript/src/NativeSafeAreaProvider.native.d.ts +3 -0
  126. package/lib/typescript/src/NativeSafeAreaProvider.windows.d.ts +2 -0
  127. package/lib/typescript/src/SafeArea.types.d.ts +31 -0
  128. package/lib/typescript/src/SafeAreaContext.d.ts +30 -0
  129. package/lib/typescript/src/SafeAreaView.d.ts +2 -0
  130. package/lib/typescript/src/SafeAreaView.kepler.d.ts +2 -0
  131. package/lib/typescript/src/SafeAreaView.macos.d.ts +2 -0
  132. package/lib/typescript/src/SafeAreaView.native.d.ts +2 -0
  133. package/lib/typescript/src/SafeAreaView.windows.d.ts +2 -0
  134. package/lib/typescript/src/index.d.ts +4 -0
  135. package/lib/typescript/src/useWindowDimensions.d.ts +8 -0
  136. package/package.json +1 -0
  137. package/react-native-safe-area-context.podspec +19 -0
  138. package/react-native.config.js +8 -0
  139. package/src/CompatNativeSafeAreaProvider.tsx +29 -0
  140. package/src/InitialWindow.kepler.ts +10 -0
  141. package/src/InitialWindow.native.ts +16 -0
  142. package/src/InitialWindow.ts +8 -0
  143. package/src/NativeSafeAreaProvider.kepler.tsx +3 -0
  144. package/src/NativeSafeAreaProvider.macos.tsx +3 -0
  145. package/src/NativeSafeAreaProvider.native.tsx +6 -0
  146. package/src/NativeSafeAreaProvider.tsx +129 -0
  147. package/src/NativeSafeAreaProvider.windows.tsx +3 -0
  148. package/src/SafeArea.types.ts +43 -0
  149. package/src/SafeAreaContext.tsx +148 -0
  150. package/src/SafeAreaView.kepler.tsx +3 -0
  151. package/src/SafeAreaView.macos.tsx +3 -0
  152. package/src/SafeAreaView.native.tsx +6 -0
  153. package/src/SafeAreaView.tsx +85 -0
  154. package/src/SafeAreaView.windows.tsx +3 -0
  155. package/src/index.tsx +4 -0
  156. package/src/useWindowDimensions.tsx +35 -0
@@ -0,0 +1,124 @@
1
+ import * as React from 'react';
2
+ import { View } from 'react-native';
3
+ /**
4
+ * TODO:
5
+ * Currently insets and frame are based on the window and are not
6
+ * relative to the provider view. This is inconsistent with iOS and Android.
7
+ * However in most cases if the provider view covers the screen this is not
8
+ * an issue.
9
+ */
10
+
11
+ const CSSTransitions = {
12
+ WebkitTransition: 'webkitTransitionEnd',
13
+ Transition: 'transitionEnd',
14
+ MozTransition: 'transitionend',
15
+ MSTransition: 'msTransitionEnd',
16
+ OTransition: 'oTransitionEnd'
17
+ };
18
+ export default function NativeSafeAreaView({
19
+ children,
20
+ style,
21
+ onInsetsChange
22
+ }) {
23
+ React.useEffect(() => {
24
+ // Skip for SSR.
25
+ if (typeof document === 'undefined') {
26
+ return;
27
+ }
28
+ const element = createContextElement();
29
+ document.body.appendChild(element);
30
+ const onEnd = () => {
31
+ const {
32
+ paddingTop,
33
+ paddingBottom,
34
+ paddingLeft,
35
+ paddingRight
36
+ } = window.getComputedStyle(element);
37
+ const insets = {
38
+ top: paddingTop ? parseInt(paddingTop, 10) : 0,
39
+ bottom: paddingBottom ? parseInt(paddingBottom, 10) : 0,
40
+ left: paddingLeft ? parseInt(paddingLeft, 10) : 0,
41
+ right: paddingRight ? parseInt(paddingRight, 10) : 0
42
+ };
43
+ const frame = {
44
+ x: 0,
45
+ y: 0,
46
+ width: document.documentElement.offsetWidth,
47
+ height: document.documentElement.offsetHeight
48
+ };
49
+ // @ts-ignore: missing properties
50
+ onInsetsChange({
51
+ nativeEvent: {
52
+ insets,
53
+ frame
54
+ }
55
+ });
56
+ };
57
+ element.addEventListener(getSupportedTransitionEvent(), onEnd);
58
+ onEnd();
59
+ return () => {
60
+ document.body.removeChild(element);
61
+ element.removeEventListener(getSupportedTransitionEvent(), onEnd);
62
+ };
63
+ }, [onInsetsChange]);
64
+ return /*#__PURE__*/React.createElement(View, {
65
+ style: style
66
+ }, children);
67
+ }
68
+ let _supportedTransitionEvent = null;
69
+ function getSupportedTransitionEvent() {
70
+ if (_supportedTransitionEvent !== null) {
71
+ return _supportedTransitionEvent;
72
+ }
73
+ const element = document.createElement('invalidtype');
74
+ _supportedTransitionEvent = CSSTransitions.Transition;
75
+ for (const key in CSSTransitions) {
76
+ if (element.style[key] !== undefined) {
77
+ _supportedTransitionEvent = CSSTransitions[key];
78
+ break;
79
+ }
80
+ }
81
+ return _supportedTransitionEvent;
82
+ }
83
+ let _supportedEnv = null;
84
+ function getSupportedEnv() {
85
+ if (_supportedEnv !== null) {
86
+ return _supportedEnv;
87
+ }
88
+ const {
89
+ CSS
90
+ } = window;
91
+ if (CSS && CSS.supports && CSS.supports('top: constant(safe-area-inset-top)')) {
92
+ _supportedEnv = 'constant';
93
+ } else {
94
+ _supportedEnv = 'env';
95
+ }
96
+ return _supportedEnv;
97
+ }
98
+ function getInset(side) {
99
+ return `${getSupportedEnv()}(safe-area-inset-${side})`;
100
+ }
101
+ function createContextElement() {
102
+ const element = document.createElement('div');
103
+ const {
104
+ style
105
+ } = element;
106
+ style.position = 'fixed';
107
+ style.left = '0';
108
+ style.top = '0';
109
+ style.width = '0';
110
+ style.height = '0';
111
+ style.zIndex = '-1';
112
+ style.overflow = 'hidden';
113
+ style.visibility = 'hidden';
114
+ // Bacon: Anything faster than this and the callback will be invoked too early with the wrong insets
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;
123
+ }
124
+ //# sourceMappingURL=NativeSafeAreaProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","CSSTransitions","WebkitTransition","Transition","MozTransition","MSTransition","OTransition","NativeSafeAreaView","children","style","onInsetsChange","useEffect","document","element","createContextElement","body","appendChild","onEnd","paddingTop","paddingBottom","paddingLeft","paddingRight","window","getComputedStyle","insets","top","parseInt","bottom","left","right","frame","x","y","width","documentElement","offsetWidth","height","offsetHeight","nativeEvent","addEventListener","getSupportedTransitionEvent","removeChild","removeEventListener","createElement","_supportedTransitionEvent","key","undefined","_supportedEnv","getSupportedEnv","CSS","supports","getInset","side","position","zIndex","overflow","visibility","transitionDuration","transitionProperty","transitionDelay"],"sources":["NativeSafeAreaProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { View } from 'react-native';\nimport { NativeSafeAreaProviderProps } from './SafeArea.types';\n\n/**\n * TODO:\n * Currently insets and frame are based on the window and are not\n * relative to the provider view. This is inconsistent with iOS and Android.\n * However in most cases if the provider view covers the screen this is not\n * an issue.\n */\n\nconst CSSTransitions: Record<string, string> = {\n WebkitTransition: 'webkitTransitionEnd',\n Transition: 'transitionEnd',\n MozTransition: 'transitionend',\n MSTransition: 'msTransitionEnd',\n OTransition: 'oTransitionEnd',\n};\n\nexport default function NativeSafeAreaView({\n children,\n style,\n onInsetsChange,\n}: NativeSafeAreaProviderProps) {\n React.useEffect(() => {\n // Skip for SSR.\n if (typeof document === 'undefined') {\n return;\n }\n\n const element = createContextElement();\n document.body.appendChild(element);\n const onEnd = () => {\n const {\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n } = window.getComputedStyle(element);\n\n const insets = {\n top: paddingTop ? parseInt(paddingTop, 10) : 0,\n bottom: paddingBottom ? parseInt(paddingBottom, 10) : 0,\n left: paddingLeft ? parseInt(paddingLeft, 10) : 0,\n right: paddingRight ? parseInt(paddingRight, 10) : 0,\n };\n const frame = {\n x: 0,\n y: 0,\n width: document.documentElement.offsetWidth,\n height: document.documentElement.offsetHeight,\n };\n // @ts-ignore: missing properties\n onInsetsChange({ nativeEvent: { insets, frame } });\n };\n element.addEventListener(getSupportedTransitionEvent(), onEnd);\n onEnd();\n return () => {\n document.body.removeChild(element);\n element.removeEventListener(getSupportedTransitionEvent(), onEnd);\n };\n }, [onInsetsChange]);\n\n return <View style={style}>{children}</View>;\n}\n\nlet _supportedTransitionEvent: string | null = null;\nfunction getSupportedTransitionEvent(): string {\n if (_supportedTransitionEvent !== null) {\n return _supportedTransitionEvent;\n }\n const element = document.createElement('invalidtype');\n\n _supportedTransitionEvent = CSSTransitions.Transition;\n for (const key in CSSTransitions) {\n if (element.style[key as keyof CSSStyleDeclaration] !== undefined) {\n _supportedTransitionEvent = CSSTransitions[key];\n break;\n }\n }\n return _supportedTransitionEvent;\n}\n\ntype CssEnv = 'constant' | 'env';\n\nlet _supportedEnv: CssEnv | null = null;\nfunction getSupportedEnv(): CssEnv {\n if (_supportedEnv !== null) {\n return _supportedEnv;\n }\n const { CSS } = window;\n if (\n CSS &&\n CSS.supports &&\n CSS.supports('top: constant(safe-area-inset-top)')\n ) {\n _supportedEnv = 'constant';\n } else {\n _supportedEnv = 'env';\n }\n return _supportedEnv;\n}\n\nfunction getInset(side: string): string {\n return `${getSupportedEnv()}(safe-area-inset-${side})`;\n}\n\nfunction createContextElement(): HTMLElement {\n const element = document.createElement('div');\n const { 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 // Bacon: Anything faster than this and the callback will be invoked too early with the wrong insets\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}"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,IAAI,QAAQ,cAAc;AAGnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,cAAsC,GAAG;EAC3CC,gBAAgB,EAAE,qBAAqB;EACvCC,UAAU,EAAE,eAAe;EAC3BC,aAAa,EAAE,eAAe;EAC9BC,YAAY,EAAE,iBAAiB;EAC/BC,WAAW,EAAE;AACjB,CAAC;AAED,eAAe,SAASC,kBAAkBA,CAAC;EACpCC,QAAQ;EACRC,KAAK;EACLC;AACsB,CAAC,EAAE;EAC5BX,KAAK,CAACY,SAAS,CAAC,MAAM;IAClB;IACA,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;MACjC;IACJ;IAEA,MAAMC,OAAO,GAAGC,oBAAoB,CAAC,CAAC;IACtCF,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACH,OAAO,CAAC;IAClC,MAAMI,KAAK,GAAGA,CAAA,KAAM;MAChB,MAAM;QACFC,UAAU;QACVC,aAAa;QACbC,WAAW;QACXC;MACJ,CAAC,GAAGC,MAAM,CAACC,gBAAgB,CAACV,OAAO,CAAC;MAEpC,MAAMW,MAAM,GAAG;QACXC,GAAG,EAAEP,UAAU,GAAGQ,QAAQ,CAACR,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC;QAC9CS,MAAM,EAAER,aAAa,GAAGO,QAAQ,CAACP,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC;QACvDS,IAAI,EAAER,WAAW,GAAGM,QAAQ,CAACN,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC;QACjDS,KAAK,EAAER,YAAY,GAAGK,QAAQ,CAACL,YAAY,EAAE,EAAE,CAAC,GAAG;MACvD,CAAC;MACD,MAAMS,KAAK,GAAG;QACVC,CAAC,EAAE,CAAC;QACJC,CAAC,EAAE,CAAC;QACJC,KAAK,EAAErB,QAAQ,CAACsB,eAAe,CAACC,WAAW;QAC3CC,MAAM,EAAExB,QAAQ,CAACsB,eAAe,CAACG;MACrC,CAAC;MACD;MACA3B,cAAc,CAAC;QAAE4B,WAAW,EAAE;UAAEd,MAAM;UAAEM;QAAM;MAAE,CAAC,CAAC;IACtD,CAAC;IACDjB,OAAO,CAAC0B,gBAAgB,CAACC,2BAA2B,CAAC,CAAC,EAAEvB,KAAK,CAAC;IAC9DA,KAAK,CAAC,CAAC;IACP,OAAO,MAAM;MACTL,QAAQ,CAACG,IAAI,CAAC0B,WAAW,CAAC5B,OAAO,CAAC;MAClCA,OAAO,CAAC6B,mBAAmB,CAACF,2BAA2B,CAAC,CAAC,EAAEvB,KAAK,CAAC;IACrE,CAAC;EACL,CAAC,EAAE,CAACP,cAAc,CAAC,CAAC;EAEpB,oBAAOX,KAAA,CAAA4C,aAAA,CAAC3C,IAAI;IAACS,KAAK,EAAEA;EAAM,GAAED,QAAe,CAAC;AAChD;AAEA,IAAIoC,yBAAwC,GAAG,IAAI;AACnD,SAASJ,2BAA2BA,CAAA,EAAW;EAC3C,IAAII,yBAAyB,KAAK,IAAI,EAAE;IACpC,OAAOA,yBAAyB;EACpC;EACA,MAAM/B,OAAO,GAAGD,QAAQ,CAAC+B,aAAa,CAAC,aAAa,CAAC;EAErDC,yBAAyB,GAAG3C,cAAc,CAACE,UAAU;EACrD,KAAK,MAAM0C,GAAG,IAAI5C,cAAc,EAAE;IAC9B,IAAIY,OAAO,CAACJ,KAAK,CAACoC,GAAG,CAA8B,KAAKC,SAAS,EAAE;MAC/DF,yBAAyB,GAAG3C,cAAc,CAAC4C,GAAG,CAAC;MAC/C;IACJ;EACJ;EACA,OAAOD,yBAAyB;AACpC;AAIA,IAAIG,aAA4B,GAAG,IAAI;AACvC,SAASC,eAAeA,CAAA,EAAW;EAC/B,IAAID,aAAa,KAAK,IAAI,EAAE;IACxB,OAAOA,aAAa;EACxB;EACA,MAAM;IAAEE;EAAI,CAAC,GAAG3B,MAAM;EACtB,IACI2B,GAAG,IACHA,GAAG,CAACC,QAAQ,IACZD,GAAG,CAACC,QAAQ,CAAC,oCAAoC,CAAC,EACpD;IACEH,aAAa,GAAG,UAAU;EAC9B,CAAC,MAAM;IACHA,aAAa,GAAG,KAAK;EACzB;EACA,OAAOA,aAAa;AACxB;AAEA,SAASI,QAAQA,CAACC,IAAY,EAAU;EACpC,OAAO,GAAGJ,eAAe,CAAC,CAAC,oBAAoBI,IAAI,GAAG;AAC1D;AAEA,SAAStC,oBAAoBA,CAAA,EAAgB;EACzC,MAAMD,OAAO,GAAGD,QAAQ,CAAC+B,aAAa,CAAC,KAAK,CAAC;EAC7C,MAAM;IAAElC;EAAM,CAAC,GAAGI,OAAO;EACzBJ,KAAK,CAAC4C,QAAQ,GAAG,OAAO;EACxB5C,KAAK,CAACmB,IAAI,GAAG,GAAG;EAChBnB,KAAK,CAACgB,GAAG,GAAG,GAAG;EACfhB,KAAK,CAACwB,KAAK,GAAG,GAAG;EACjBxB,KAAK,CAAC2B,MAAM,GAAG,GAAG;EAClB3B,KAAK,CAAC6C,MAAM,GAAG,IAAI;EACnB7C,KAAK,CAAC8C,QAAQ,GAAG,QAAQ;EACzB9C,KAAK,CAAC+C,UAAU,GAAG,QAAQ;EAC3B;EACA/C,KAAK,CAACgD,kBAAkB,GAAG,OAAO;EAClChD,KAAK,CAACiD,kBAAkB,GAAG,SAAS;EACpCjD,KAAK,CAACkD,eAAe,GAAG,IAAI;EAC5BlD,KAAK,CAACS,UAAU,GAAGiC,QAAQ,CAAC,KAAK,CAAC;EAClC1C,KAAK,CAACU,aAAa,GAAGgC,QAAQ,CAAC,QAAQ,CAAC;EACxC1C,KAAK,CAACW,WAAW,GAAG+B,QAAQ,CAAC,MAAM,CAAC;EACpC1C,KAAK,CAACY,YAAY,GAAG8B,QAAQ,CAAC,OAAO,CAAC;EACtC,OAAOtC,OAAO;AAClB","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';
2
+ export default CompatNativeSafeAreaProvider;
3
+ //# sourceMappingURL=NativeSafeAreaProvider.kepler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CompatNativeSafeAreaProvider"],"sources":["NativeSafeAreaProvider.kepler.tsx"],"sourcesContent":["import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';\n\nexport default CompatNativeSafeAreaProvider;"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,gCAAgC;AAE7E,eAAeA,4BAA4B","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';
2
+ export default CompatNativeSafeAreaProvider;
3
+ //# sourceMappingURL=NativeSafeAreaProvider.macos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CompatNativeSafeAreaProvider"],"sources":["NativeSafeAreaProvider.macos.tsx"],"sourcesContent":["import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';\n\nexport default CompatNativeSafeAreaProvider;\n"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,gCAAgC;AAE7E,eAAeA,4BAA4B","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { requireNativeComponent } from 'react-native';
2
+ export default requireNativeComponent('RNCSafeAreaProvider');
3
+ //# sourceMappingURL=NativeSafeAreaProvider.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["requireNativeComponent"],"sources":["NativeSafeAreaProvider.native.tsx"],"sourcesContent":["import { requireNativeComponent } from 'react-native';\nimport { NativeSafeAreaProviderProps } from './SafeArea.types';\n\nexport default requireNativeComponent<NativeSafeAreaProviderProps>(\n 'RNCSafeAreaProvider',\n);"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,cAAc;AAGrD,eAAeA,sBAAsB,CACjC,qBACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';
2
+ export default CompatNativeSafeAreaProvider;
3
+ //# sourceMappingURL=NativeSafeAreaProvider.windows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CompatNativeSafeAreaProvider"],"sources":["NativeSafeAreaProvider.windows.tsx"],"sourcesContent":["import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';\n\nexport default CompatNativeSafeAreaProvider;\n"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,gCAAgC;AAE7E,eAAeA,4BAA4B","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SafeArea.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["SafeArea.types.ts"],"sourcesContent":["import {\n NativeSyntheticEvent,\n StyleProp,\n ViewProps,\n ViewStyle,\n} from 'react-native';\n\nexport type Edge = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface EdgeInsets {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface Metrics {\n insets: EdgeInsets;\n frame: Rect;\n}\n\nexport type InsetChangedEvent = NativeSyntheticEvent<Metrics>;\n\nexport type InsetChangeNativeCallback = (event: InsetChangedEvent) => void;\n\nexport interface NativeSafeAreaProviderProps {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n onInsetsChange: InsetChangeNativeCallback;\n}\n\nexport type NativeSafeAreaViewProps = ViewProps & {\n children?: React.ReactNode;\n mode?: 'padding' | 'margin';\n edges?: ReadonlyArray<Edge>;\n};\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,99 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import * as React from 'react';
3
+ import { Dimensions, StyleSheet } from 'react-native';
4
+ import NativeSafeAreaProvider from './NativeSafeAreaProvider';
5
+ export const SafeAreaInsetsContext = /*#__PURE__*/React.createContext(null);
6
+ SafeAreaInsetsContext.displayName = 'SafeAreaInsetsContext';
7
+ export const SafeAreaFrameContext = /*#__PURE__*/React.createContext(null);
8
+ SafeAreaFrameContext.displayName = 'SafeAreaFrameContext';
9
+ export function SafeAreaProvider({
10
+ children,
11
+ initialMetrics,
12
+ initialSafeAreaInsets,
13
+ style
14
+ }) {
15
+ var _ref, _ref2, _initialMetrics$inset, _ref3, _initialMetrics$frame;
16
+ const parentInsets = useParentSafeAreaInsets();
17
+ const parentFrame = useParentSafeAreaFrame();
18
+ const [insets, setInsets] = React.useState((_ref = (_ref2 = (_initialMetrics$inset = initialMetrics === null || initialMetrics === void 0 ? void 0 : initialMetrics.insets) !== null && _initialMetrics$inset !== void 0 ? _initialMetrics$inset : initialSafeAreaInsets) !== null && _ref2 !== void 0 ? _ref2 : parentInsets) !== null && _ref !== void 0 ? _ref : null);
19
+ const [frame, setFrame] = React.useState((_ref3 = (_initialMetrics$frame = initialMetrics === null || initialMetrics === void 0 ? void 0 : initialMetrics.frame) !== null && _initialMetrics$frame !== void 0 ? _initialMetrics$frame : parentFrame) !== null && _ref3 !== void 0 ? _ref3 : {
20
+ // Backwards compat so we render anyway if we don't have frame.
21
+ x: 0,
22
+ y: 0,
23
+ width: Dimensions.get('window').width,
24
+ height: Dimensions.get('window').height
25
+ });
26
+ const onInsetsChange = React.useCallback(event => {
27
+ const {
28
+ nativeEvent: {
29
+ frame: nextFrame,
30
+ insets: nextInsets
31
+ }
32
+ } = event;
33
+ if (
34
+ // Backwards compat with old native code that won't send frame.
35
+ nextFrame && (nextFrame.height !== frame.height || nextFrame.width !== frame.width || nextFrame.x !== frame.x || nextFrame.y !== frame.y)) {
36
+ setFrame(nextFrame);
37
+ }
38
+ if (!insets || nextInsets.bottom !== insets.bottom || nextInsets.left !== insets.left || nextInsets.right !== insets.right || nextInsets.top !== insets.top) {
39
+ setInsets(nextInsets);
40
+ }
41
+ }, [frame, insets]);
42
+ return /*#__PURE__*/React.createElement(NativeSafeAreaProvider, {
43
+ style: [styles.fill, style],
44
+ onInsetsChange: onInsetsChange
45
+ }, insets != null ? /*#__PURE__*/React.createElement(SafeAreaFrameContext.Provider, {
46
+ value: frame
47
+ }, /*#__PURE__*/React.createElement(SafeAreaInsetsContext.Provider, {
48
+ value: insets
49
+ }, children)) : null);
50
+ }
51
+ const styles = StyleSheet.create({
52
+ fill: {
53
+ flex: 1
54
+ }
55
+ });
56
+ function useParentSafeAreaInsets() {
57
+ return React.useContext(SafeAreaInsetsContext);
58
+ }
59
+ function useParentSafeAreaFrame() {
60
+ return React.useContext(SafeAreaFrameContext);
61
+ }
62
+ export function useSafeAreaInsets() {
63
+ const safeArea = React.useContext(SafeAreaInsetsContext);
64
+ if (safeArea == null) {
65
+ throw new Error('No safe area insets value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.');
66
+ }
67
+ return safeArea;
68
+ }
69
+ export function useSafeAreaFrame() {
70
+ const frame = React.useContext(SafeAreaFrameContext);
71
+ if (frame == null) {
72
+ throw new Error('No safe area frame value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.');
73
+ }
74
+ return frame;
75
+ }
76
+ export function withSafeAreaInsets(WrappedComponent) {
77
+ return /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SafeAreaConsumer, null, insets => /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, props, {
78
+ insets: insets,
79
+ ref: ref
80
+ }))));
81
+ }
82
+
83
+ /**
84
+ * @deprecated
85
+ */
86
+ export function useSafeArea() {
87
+ return useSafeAreaInsets();
88
+ }
89
+
90
+ /**
91
+ * @deprecated
92
+ */
93
+ export const SafeAreaConsumer = SafeAreaInsetsContext.Consumer;
94
+
95
+ /**
96
+ * @deprecated
97
+ */
98
+ export const SafeAreaContext = SafeAreaInsetsContext;
99
+ //# sourceMappingURL=SafeAreaContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Dimensions","StyleSheet","NativeSafeAreaProvider","SafeAreaInsetsContext","createContext","displayName","SafeAreaFrameContext","SafeAreaProvider","children","initialMetrics","initialSafeAreaInsets","style","_ref","_ref2","_initialMetrics$inset","_ref3","_initialMetrics$frame","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","x","y","width","get","height","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","bottom","left","right","top","createElement","styles","fill","Provider","value","create","flex","useContext","useSafeAreaInsets","safeArea","Error","useSafeAreaFrame","withSafeAreaInsets","WrappedComponent","forwardRef","props","ref","SafeAreaConsumer","_extends","useSafeArea","Consumer","SafeAreaContext"],"sources":["SafeAreaContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dimensions, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport NativeSafeAreaProvider from './NativeSafeAreaProvider';\nimport { EdgeInsets, InsetChangedEvent, Metrics, Rect } from './SafeArea.types';\n\nexport const SafeAreaInsetsContext = React.createContext<EdgeInsets | null>(\n null,\n);\nSafeAreaInsetsContext.displayName = 'SafeAreaInsetsContext';\n\nexport const SafeAreaFrameContext = React.createContext<Rect | null>(null);\nSafeAreaFrameContext.displayName = 'SafeAreaFrameContext';\n\nexport interface SafeAreaViewProps {\n children?: React.ReactNode;\n initialMetrics?: Metrics | null;\n /**\n * @deprecated\n */\n initialSafeAreaInsets?: EdgeInsets | null;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function SafeAreaProvider({\n children,\n initialMetrics,\n initialSafeAreaInsets,\n style,\n}: SafeAreaViewProps) {\n const parentInsets = useParentSafeAreaInsets();\n const parentFrame = useParentSafeAreaFrame();\n const [insets, setInsets] = React.useState<EdgeInsets | null>(\n initialMetrics?.insets ?? initialSafeAreaInsets ?? parentInsets ?? null,\n );\n const [frame, setFrame] = React.useState<Rect>(\n initialMetrics?.frame ??\n parentFrame ?? {\n // Backwards compat so we render anyway if we don't have frame.\n x: 0,\n y: 0,\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n },\n );\n const onInsetsChange = React.useCallback(\n (event: InsetChangedEvent) => {\n const {\n nativeEvent: { frame: nextFrame, insets: nextInsets },\n } = event;\n\n if (\n // Backwards compat with old native code that won't send frame.\n nextFrame &&\n (nextFrame.height !== frame.height ||\n nextFrame.width !== frame.width ||\n nextFrame.x !== frame.x ||\n nextFrame.y !== frame.y)\n ) {\n setFrame(nextFrame);\n }\n\n if (\n !insets ||\n nextInsets.bottom !== insets.bottom ||\n nextInsets.left !== insets.left ||\n nextInsets.right !== insets.right ||\n nextInsets.top !== insets.top\n ) {\n setInsets(nextInsets);\n }\n },\n [frame, insets],\n );\n\n return (\n <NativeSafeAreaProvider\n style={[styles.fill, style]}\n onInsetsChange={onInsetsChange}\n >\n {insets != null ? (\n <SafeAreaFrameContext.Provider value={frame}>\n <SafeAreaInsetsContext.Provider value={insets}>\n {children}\n </SafeAreaInsetsContext.Provider>\n </SafeAreaFrameContext.Provider>\n ) : null}\n </NativeSafeAreaProvider>\n );\n}\n\nconst styles = StyleSheet.create({\n fill: { flex: 1 },\n});\n\nfunction useParentSafeAreaInsets(): EdgeInsets | null {\n return React.useContext(SafeAreaInsetsContext);\n}\n\nfunction useParentSafeAreaFrame(): Rect | null {\n return React.useContext(SafeAreaFrameContext);\n}\n\nexport function useSafeAreaInsets(): EdgeInsets {\n const safeArea = React.useContext(SafeAreaInsetsContext);\n if (safeArea == null) {\n throw new Error(\n 'No safe area insets value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.',\n );\n }\n return safeArea;\n}\n\nexport function useSafeAreaFrame(): Rect {\n const frame = React.useContext(SafeAreaFrameContext);\n if (frame == null) {\n throw new Error(\n 'No safe area frame value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.',\n );\n }\n return frame;\n}\n\nexport function withSafeAreaInsets<T>(\n WrappedComponent: React.ComponentType<T>,\n) {\n return React.forwardRef((props: T, ref: React.Ref<T>) => (\n <SafeAreaConsumer>\n {(insets) => <WrappedComponent {...props} insets={insets} ref={ref} />}\n </SafeAreaConsumer>\n ));\n}\n\n/**\n * @deprecated\n */\nexport function useSafeArea(): EdgeInsets {\n return useSafeAreaInsets();\n}\n\n/**\n * @deprecated\n */\nexport const SafeAreaConsumer = SafeAreaInsetsContext.Consumer;\n\n/**\n * @deprecated\n */\nexport const SafeAreaContext = SafeAreaInsetsContext;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import * as React from 'react';
3
+ import { View, StyleSheet } from 'react-native';
4
+ import { useSafeAreaInsets } from './SafeAreaContext';
5
+ // prettier-ignore
6
+ const TOP = 0b1000,
7
+ RIGHT = 0b0100,
8
+ BOTTOM = 0b0010,
9
+ LEFT = 0b0001,
10
+ ALL = 0b1111;
11
+
12
+ /* eslint-disable no-bitwise */
13
+
14
+ const edgeBitmaskMap = {
15
+ top: TOP,
16
+ right: RIGHT,
17
+ bottom: BOTTOM,
18
+ left: LEFT
19
+ };
20
+ export function SafeAreaView({
21
+ style = {},
22
+ mode,
23
+ edges,
24
+ ...rest
25
+ }) {
26
+ const insets = useSafeAreaInsets();
27
+ const edgeBitmask = edges != null ? edges.reduce((accum, edge) => accum | edgeBitmaskMap[edge], 0) : ALL;
28
+ const appliedStyle = React.useMemo(() => {
29
+ const insetTop = edgeBitmask & TOP ? insets.top : 0;
30
+ const insetRight = edgeBitmask & RIGHT ? insets.right : 0;
31
+ const insetBottom = edgeBitmask & BOTTOM ? insets.bottom : 0;
32
+ const insetLeft = edgeBitmask & LEFT ? insets.left : 0;
33
+ const flatStyle = StyleSheet.flatten(style);
34
+ if (mode === 'margin') {
35
+ const {
36
+ margin = 0,
37
+ marginVertical = margin,
38
+ marginHorizontal = margin,
39
+ marginTop = marginVertical,
40
+ marginRight = marginHorizontal,
41
+ marginBottom = marginVertical,
42
+ marginLeft = marginHorizontal
43
+ } = flatStyle;
44
+ const marginStyle = {
45
+ marginTop: marginTop + insetTop,
46
+ marginRight: marginRight + insetRight,
47
+ marginBottom: marginBottom + insetBottom,
48
+ marginLeft: marginLeft + insetLeft
49
+ };
50
+ return [style, marginStyle];
51
+ } else {
52
+ const {
53
+ padding = 0,
54
+ paddingVertical = padding,
55
+ paddingHorizontal = padding,
56
+ paddingTop = paddingVertical,
57
+ paddingRight = paddingHorizontal,
58
+ paddingBottom = paddingVertical,
59
+ paddingLeft = paddingHorizontal
60
+ } = flatStyle;
61
+ const paddingStyle = {
62
+ paddingTop: paddingTop + insetTop,
63
+ paddingRight: paddingRight + insetRight,
64
+ paddingBottom: paddingBottom + insetBottom,
65
+ paddingLeft: paddingLeft + insetLeft
66
+ };
67
+ return [style, paddingStyle];
68
+ }
69
+ }, [style, insets, mode, edgeBitmask]);
70
+ return /*#__PURE__*/React.createElement(View, _extends({
71
+ style: appliedStyle
72
+ }, rest));
73
+ }
74
+ //# sourceMappingURL=SafeAreaView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","useSafeAreaInsets","TOP","RIGHT","BOTTOM","LEFT","ALL","edgeBitmaskMap","top","right","bottom","left","SafeAreaView","style","mode","edges","rest","insets","edgeBitmask","reduce","accum","edge","appliedStyle","useMemo","insetTop","insetRight","insetBottom","insetLeft","flatStyle","flatten","margin","marginVertical","marginHorizontal","marginTop","marginRight","marginBottom","marginLeft","marginStyle","padding","paddingVertical","paddingHorizontal","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingStyle","createElement","_extends"],"sources":["SafeAreaView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { useSafeAreaInsets } from './SafeAreaContext';\nimport { Edge, NativeSafeAreaViewProps } from './SafeArea.types';\n\n// prettier-ignore\nconst TOP = 0b1000,\n RIGHT = 0b0100,\n BOTTOM = 0b0010,\n LEFT = 0b0001,\n ALL = 0b1111;\n\n/* eslint-disable no-bitwise */\n\nconst edgeBitmaskMap: Record<Edge, number> = {\n top: TOP,\n right: RIGHT,\n bottom: BOTTOM,\n left: LEFT,\n};\n\nexport function SafeAreaView({\n style = {},\n mode,\n edges,\n ...rest\n }: NativeSafeAreaViewProps) {\n const insets = useSafeAreaInsets();\n\n const edgeBitmask =\n edges != null\n ? edges.reduce((accum, edge) => accum | edgeBitmaskMap[edge], 0)\n : ALL;\n\n const appliedStyle = React.useMemo(() => {\n const insetTop = edgeBitmask & TOP ? insets.top : 0;\n const insetRight = edgeBitmask & RIGHT ? insets.right : 0;\n const insetBottom = edgeBitmask & BOTTOM ? insets.bottom : 0;\n const insetLeft = edgeBitmask & LEFT ? insets.left : 0;\n\n const flatStyle = StyleSheet.flatten(style) as Record<string, number>;\n\n if (mode === 'margin') {\n const {\n margin = 0,\n marginVertical = margin,\n marginHorizontal = margin,\n marginTop = marginVertical,\n marginRight = marginHorizontal,\n marginBottom = marginVertical,\n marginLeft = marginHorizontal,\n } = flatStyle;\n\n const marginStyle = {\n marginTop: marginTop + insetTop,\n marginRight: marginRight + insetRight,\n marginBottom: marginBottom + insetBottom,\n marginLeft: marginLeft + insetLeft,\n };\n\n return [style, marginStyle];\n } else {\n const {\n padding = 0,\n paddingVertical = padding,\n paddingHorizontal = padding,\n paddingTop = paddingVertical,\n paddingRight = paddingHorizontal,\n paddingBottom = paddingVertical,\n paddingLeft = paddingHorizontal,\n } = flatStyle;\n\n const paddingStyle = {\n paddingTop: paddingTop + insetTop,\n paddingRight: paddingRight + insetRight,\n paddingBottom: paddingBottom + insetBottom,\n paddingLeft: paddingLeft + insetLeft,\n };\n\n return [style, paddingStyle];\n }\n }, [style, insets, mode, edgeBitmask]);\n\n return <View style={appliedStyle} {...rest} />;\n}"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { View } from 'react-native';
2
+ export const SafeAreaView = View;
3
+ //# sourceMappingURL=SafeAreaView.kepler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["View","SafeAreaView"],"sources":["SafeAreaView.kepler.tsx"],"sourcesContent":["import { View } from 'react-native';\n\nexport const SafeAreaView = View;"],"mappings":"AAAA,SAASA,IAAI,QAAQ,cAAc;AAEnC,OAAO,MAAMC,YAAY,GAAGD,IAAI","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { View } from 'react-native';
2
+ export const SafeAreaView = View;
3
+ //# sourceMappingURL=SafeAreaView.macos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["View","SafeAreaView"],"sources":["SafeAreaView.macos.tsx"],"sourcesContent":["import { View } from 'react-native';\n\nexport const SafeAreaView = View;\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,cAAc;AAEnC,OAAO,MAAMC,YAAY,GAAGD,IAAI","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { requireNativeComponent } from 'react-native';
2
+ export const SafeAreaView = requireNativeComponent('RNCSafeAreaView');
3
+ //# sourceMappingURL=SafeAreaView.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["requireNativeComponent","SafeAreaView"],"sources":["SafeAreaView.native.tsx"],"sourcesContent":["import { requireNativeComponent } from 'react-native';\nimport { NativeSafeAreaViewProps } from './SafeArea.types';\n\nexport const SafeAreaView = requireNativeComponent<NativeSafeAreaViewProps>(\n 'RNCSafeAreaView',\n);"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,cAAc;AAGrD,OAAO,MAAMC,YAAY,GAAGD,sBAAsB,CAC9C,iBACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { View } from 'react-native';
2
+ export const SafeAreaView = View;
3
+ //# sourceMappingURL=SafeAreaView.windows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["View","SafeAreaView"],"sources":["SafeAreaView.windows.tsx"],"sourcesContent":["import { View } from 'react-native';\n\nexport const SafeAreaView = View;\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,cAAc;AAEnC,OAAO,MAAMC,YAAY,GAAGD,IAAI","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ export * from './SafeAreaContext';
2
+ export * from './SafeAreaView';
3
+ export * from './InitialWindow';
4
+ export * from './SafeArea.types';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.tsx"],"sourcesContent":["export * from './SafeAreaContext';\nexport * from './SafeAreaView';\nexport * from './InitialWindow';\nexport * from './SafeArea.types';\n"],"mappings":"AAAA,cAAc,mBAAmB;AACjC,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,kBAAkB","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ import { Dimensions } from 'react-native';
2
+ import { useEffect, useState } from 'react';
3
+ // Copied from https://github.com/facebook/react-native/blob/8d57691a/Libraries/Utilities/useWindowDimensions.js
4
+ // for compatibility with React Native < 0.61.
5
+ export default function useWindowDimensions() {
6
+ const [dimensions, setDimensions] = useState(() => Dimensions.get('window'));
7
+ useEffect(() => {
8
+ function handleChange({
9
+ window
10
+ }) {
11
+ if (dimensions.width !== window.width || dimensions.height !== window.height || dimensions.scale !== window.scale || dimensions.fontScale !== window.fontScale) {
12
+ setDimensions(window);
13
+ }
14
+ }
15
+ const subscription = Dimensions.addEventListener('change', handleChange);
16
+ // We might have missed an update between calling `get` in render and
17
+ // `addEventListener` in this handler, so we set it here. If there was
18
+ // no change, React will filter out this update as a no-op.
19
+ handleChange({
20
+ window: Dimensions.get('window')
21
+ });
22
+ return () => subscription.remove();
23
+ }, [dimensions]);
24
+ return dimensions;
25
+ }
26
+ //# sourceMappingURL=useWindowDimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","useEffect","useState","useWindowDimensions","dimensions","setDimensions","get","handleChange","window","width","height","scale","fontScale","subscription","addEventListener","remove"],"sources":["useWindowDimensions.tsx"],"sourcesContent":["import { Dimensions } from 'react-native';\nimport { useEffect, useState } from 'react';\n\ntype DisplayMetrics = {\n width: number;\n height: number;\n scale: number;\n fontScale: number;\n};\n\n// Copied from https://github.com/facebook/react-native/blob/8d57691a/Libraries/Utilities/useWindowDimensions.js\n// for compatibility with React Native < 0.61.\nexport default function useWindowDimensions(): DisplayMetrics {\n const [dimensions, setDimensions] = useState(() => Dimensions.get('window'));\n useEffect(() => {\n function handleChange({ window }: { window: DisplayMetrics }) {\n if (\n dimensions.width !== window.width ||\n dimensions.height !== window.height ||\n dimensions.scale !== window.scale ||\n dimensions.fontScale !== window.fontScale\n ) {\n setDimensions(window);\n }\n }\n const subscription = Dimensions.addEventListener('change', handleChange);\n // We might have missed an update between calling `get` in render and\n // `addEventListener` in this handler, so we set it here. If there was\n // no change, React will filter out this update as a no-op.\n handleChange({ window: Dimensions.get('window') });\n\n return () => subscription.remove();\n }, [dimensions]);\n return dimensions;\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAS3C;AACA;AACA,eAAe,SAASC,mBAAmBA,CAAA,EAAmB;EAC5D,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGH,QAAQ,CAAC,MAAMF,UAAU,CAACM,GAAG,CAAC,QAAQ,CAAC,CAAC;EAC5EL,SAAS,CAAC,MAAM;IACd,SAASM,YAAYA,CAAC;MAAEC;IAAmC,CAAC,EAAE;MAC5D,IACEJ,UAAU,CAACK,KAAK,KAAKD,MAAM,CAACC,KAAK,IACjCL,UAAU,CAACM,MAAM,KAAKF,MAAM,CAACE,MAAM,IACnCN,UAAU,CAACO,KAAK,KAAKH,MAAM,CAACG,KAAK,IACjCP,UAAU,CAACQ,SAAS,KAAKJ,MAAM,CAACI,SAAS,EACzC;QACAP,aAAa,CAACG,MAAM,CAAC;MACvB;IACF;IACA,MAAMK,YAAY,GAAGb,UAAU,CAACc,gBAAgB,CAAC,QAAQ,EAAEP,YAAY,CAAC;IACxE;IACA;IACA;IACAA,YAAY,CAAC;MAAEC,MAAM,EAAER,UAAU,CAACM,GAAG,CAAC,QAAQ;IAAE,CAAC,CAAC;IAElD,OAAO,MAAMO,YAAY,CAACE,MAAM,CAAC,CAAC;EACpC,CAAC,EAAE,CAACX,UAAU,CAAC,CAAC;EAChB,OAAOA,UAAU;AACnB","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { NativeSafeAreaProviderProps } from './SafeArea.types';
2
+ export declare function CompatNativeSafeAreaProvider({ children, style, onInsetsChange, }: NativeSafeAreaProviderProps): JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { EdgeInsets, Metrics } from './SafeArea.types';
2
+ export declare const initialWindowMetrics: Metrics | null;
3
+ /**
4
+ * @deprecated
5
+ */
6
+ export declare const initialWindowSafeAreaInsets: EdgeInsets | null;
@@ -0,0 +1,6 @@
1
+ import { Metrics } from './SafeArea.types';
2
+ export declare const initialWindowMetrics: Metrics | null;
3
+ /**
4
+ * @deprecated
5
+ */
6
+ export declare const initialWindowSafeAreaInsets: import("./SafeArea.types").EdgeInsets | undefined;
@@ -0,0 +1,6 @@
1
+ import { Metrics } from './SafeArea.types';
2
+ export declare const initialWindowMetrics: Metrics | null;
3
+ /**
4
+ * @deprecated
5
+ */
6
+ export declare const initialWindowSafeAreaInsets: import("./SafeArea.types").EdgeInsets | undefined;
@@ -0,0 +1,2 @@
1
+ import { NativeSafeAreaProviderProps } from './SafeArea.types';
2
+ export default function NativeSafeAreaView({ children, style, onInsetsChange, }: NativeSafeAreaProviderProps): JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';
2
+ export default CompatNativeSafeAreaProvider;
@@ -0,0 +1,2 @@
1
+ import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';
2
+ export default CompatNativeSafeAreaProvider;
@@ -0,0 +1,3 @@
1
+ import { NativeSafeAreaProviderProps } from './SafeArea.types';
2
+ declare const _default: import("react-native").HostComponent<NativeSafeAreaProviderProps>;
3
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import { CompatNativeSafeAreaProvider } from './CompatNativeSafeAreaProvider';
2
+ export default CompatNativeSafeAreaProvider;
@@ -0,0 +1,31 @@
1
+ /// <reference types="react" />
2
+ import { NativeSyntheticEvent, StyleProp, ViewProps, ViewStyle } from 'react-native';
3
+ export type Edge = 'top' | 'right' | 'bottom' | 'left';
4
+ export interface EdgeInsets {
5
+ top: number;
6
+ right: number;
7
+ bottom: number;
8
+ left: number;
9
+ }
10
+ export interface Rect {
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ }
16
+ export interface Metrics {
17
+ insets: EdgeInsets;
18
+ frame: Rect;
19
+ }
20
+ export type InsetChangedEvent = NativeSyntheticEvent<Metrics>;
21
+ export type InsetChangeNativeCallback = (event: InsetChangedEvent) => void;
22
+ export interface NativeSafeAreaProviderProps {
23
+ children?: React.ReactNode;
24
+ style?: StyleProp<ViewStyle>;
25
+ onInsetsChange: InsetChangeNativeCallback;
26
+ }
27
+ export type NativeSafeAreaViewProps = ViewProps & {
28
+ children?: React.ReactNode;
29
+ mode?: 'padding' | 'margin';
30
+ edges?: ReadonlyArray<Edge>;
31
+ };
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ import { EdgeInsets, Metrics, Rect } from './SafeArea.types';
4
+ export declare const SafeAreaInsetsContext: React.Context<EdgeInsets | null>;
5
+ export declare const SafeAreaFrameContext: React.Context<Rect | null>;
6
+ export interface SafeAreaViewProps {
7
+ children?: React.ReactNode;
8
+ initialMetrics?: Metrics | null;
9
+ /**
10
+ * @deprecated
11
+ */
12
+ initialSafeAreaInsets?: EdgeInsets | null;
13
+ style?: StyleProp<ViewStyle>;
14
+ }
15
+ export declare function SafeAreaProvider({ children, initialMetrics, initialSafeAreaInsets, style, }: SafeAreaViewProps): JSX.Element;
16
+ export declare function useSafeAreaInsets(): EdgeInsets;
17
+ export declare function useSafeAreaFrame(): Rect;
18
+ export declare function withSafeAreaInsets<T>(WrappedComponent: React.ComponentType<T>): React.ForwardRefExoticComponent<React.PropsWithoutRef<T> & React.RefAttributes<T>>;
19
+ /**
20
+ * @deprecated
21
+ */
22
+ export declare function useSafeArea(): EdgeInsets;
23
+ /**
24
+ * @deprecated
25
+ */
26
+ export declare const SafeAreaConsumer: React.Consumer<EdgeInsets | null>;
27
+ /**
28
+ * @deprecated
29
+ */
30
+ export declare const SafeAreaContext: React.Context<EdgeInsets | null>;
@@ -0,0 +1,2 @@
1
+ import { NativeSafeAreaViewProps } from './SafeArea.types';
2
+ export declare function SafeAreaView({ style, mode, edges, ...rest }: NativeSafeAreaViewProps): JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { View } from 'react-native';
2
+ export declare const SafeAreaView: typeof View;
@@ -0,0 +1,2 @@
1
+ import { View } from 'react-native';
2
+ export declare const SafeAreaView: typeof View;
@@ -0,0 +1,2 @@
1
+ import { NativeSafeAreaViewProps } from './SafeArea.types';
2
+ export declare const SafeAreaView: import("react-native").HostComponent<NativeSafeAreaViewProps>;
@@ -0,0 +1,2 @@
1
+ import { View } from 'react-native';
2
+ export declare const SafeAreaView: typeof View;
@@ -0,0 +1,4 @@
1
+ export * from './SafeAreaContext';
2
+ export * from './SafeAreaView';
3
+ export * from './InitialWindow';
4
+ export * from './SafeArea.types';