react-native-edge-to-edge 1.2.0 → 1.3.0
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/README.md +63 -78
- package/android/src/main/java/com/zoontek/rnedgetoedge/EdgeToEdgeModuleImpl.kt +59 -15
- package/android/src/main/java/com/zoontek/rnedgetoedge/EdgeToEdgePackage.kt +9 -12
- package/android/src/main/res/values/attrs.xml +5 -0
- package/android/src/main/res/values/public.xml +2 -0
- package/android/src/main/res/values/styles.xml +21 -3
- package/android/src/main/res/values-v27/colors.xml +1 -2
- package/android/src/main/res/values-v27/styles.xml +3 -3
- package/android/src/main/res/values-v29/styles.xml +9 -9
- package/android/src/main/res/values-v30/styles.xml +9 -9
- package/dist/commonjs/SystemBars.js +18 -7
- package/dist/commonjs/SystemBars.js.map +1 -1
- package/dist/commonjs/expo.js +11 -2
- package/dist/commonjs/expo.js.map +1 -1
- package/dist/commonjs/specs/NativeEdgeToEdgeModule.js.map +1 -1
- package/dist/module/SystemBars.js +18 -7
- package/dist/module/SystemBars.js.map +1 -1
- package/dist/module/expo.js +11 -2
- package/dist/module/expo.js.map +1 -1
- package/dist/module/specs/NativeEdgeToEdgeModule.js.map +1 -1
- package/dist/typescript/SystemBars.d.ts.map +1 -1
- package/dist/typescript/expo.d.ts +6 -4
- package/dist/typescript/expo.d.ts.map +1 -1
- package/dist/typescript/specs/NativeEdgeToEdgeModule.d.ts +1 -0
- package/dist/typescript/specs/NativeEdgeToEdgeModule.d.ts.map +1 -1
- package/dist/typescript/types.d.ts +8 -5
- package/dist/typescript/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/SystemBars.ts +27 -6
- package/src/expo.ts +19 -6
- package/src/specs/NativeEdgeToEdgeModule.ts +1 -0
- package/src/types.ts +5 -2
- package/android/src/main/res/values-v29/colors.xml +0 -4
|
@@ -27,9 +27,10 @@ function mergeEntriesStack(entriesStack) {
|
|
|
27
27
|
}, {
|
|
28
28
|
statusBarStyle: undefined,
|
|
29
29
|
statusBarHidden: undefined,
|
|
30
|
+
navigationBarStyle: undefined,
|
|
30
31
|
navigationBarHidden: undefined
|
|
31
32
|
});
|
|
32
|
-
if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarHidden == null) {
|
|
33
|
+
if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarStyle == null && mergedEntry.navigationBarHidden == null) {
|
|
33
34
|
return null;
|
|
34
35
|
} else {
|
|
35
36
|
return mergedEntry;
|
|
@@ -41,8 +42,9 @@ function mergeEntriesStack(entriesStack) {
|
|
|
41
42
|
*/
|
|
42
43
|
function createStackEntry(props) {
|
|
43
44
|
return {
|
|
44
|
-
statusBarStyle: props.style,
|
|
45
|
+
statusBarStyle: typeof props.style === "string" ? props.style : props.style?.statusBar,
|
|
45
46
|
statusBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.statusBar,
|
|
47
|
+
navigationBarStyle: typeof props.style === "string" ? props.style : props.style?.navigationBar,
|
|
46
48
|
navigationBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.navigationBar
|
|
47
49
|
};
|
|
48
50
|
}
|
|
@@ -69,12 +71,15 @@ function updateEntriesStack() {
|
|
|
69
71
|
statusBarHidden,
|
|
70
72
|
navigationBarHidden
|
|
71
73
|
} = mergedEntries;
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
+
const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
|
|
75
|
+
const statusBarStyle = mergedEntries.statusBarStyle === "auto" ? autoBarStyle : mergedEntries.statusBarStyle;
|
|
76
|
+
const navigationBarStyle = mergedEntries.navigationBarStyle === "auto" ? autoBarStyle : mergedEntries.navigationBarStyle;
|
|
77
|
+
if (currentMergedEntries?.statusBarStyle !== statusBarStyle || currentMergedEntries?.statusBarHidden !== statusBarHidden || currentMergedEntries?.navigationBarStyle !== navigationBarStyle || currentMergedEntries?.navigationBarHidden !== navigationBarHidden) {
|
|
74
78
|
if (_reactNative.Platform.OS === "android") {
|
|
75
79
|
_NativeEdgeToEdgeModule.default?.setSystemBarsConfig({
|
|
76
80
|
statusBarStyle,
|
|
77
81
|
statusBarHidden,
|
|
82
|
+
navigationBarStyle,
|
|
78
83
|
navigationBarHidden
|
|
79
84
|
});
|
|
80
85
|
} else {
|
|
@@ -90,6 +95,7 @@ function updateEntriesStack() {
|
|
|
90
95
|
currentMergedEntries = {
|
|
91
96
|
statusBarStyle,
|
|
92
97
|
statusBarHidden,
|
|
98
|
+
navigationBarStyle,
|
|
93
99
|
navigationBarHidden
|
|
94
100
|
};
|
|
95
101
|
} else {
|
|
@@ -144,15 +150,20 @@ function SystemBars({
|
|
|
144
150
|
hidden,
|
|
145
151
|
style
|
|
146
152
|
}) {
|
|
153
|
+
const statusBarStyle = typeof style === "string" ? style : style?.statusBar;
|
|
147
154
|
const statusBarHidden = typeof hidden === "boolean" ? hidden : hidden?.statusBar;
|
|
155
|
+
const navigationBarStyle = typeof style === "string" ? style : style?.navigationBar;
|
|
148
156
|
const navigationBarHidden = typeof hidden === "boolean" ? hidden : hidden?.navigationBar;
|
|
149
157
|
const stableProps = (0, _react.useMemo)(() => ({
|
|
158
|
+
style: statusBarStyle === navigationBarStyle ? statusBarStyle : {
|
|
159
|
+
statusBar: statusBarStyle,
|
|
160
|
+
navigationBar: navigationBarStyle
|
|
161
|
+
},
|
|
150
162
|
hidden: statusBarHidden === navigationBarHidden ? statusBarHidden : {
|
|
151
163
|
statusBar: statusBarHidden,
|
|
152
164
|
navigationBar: navigationBarHidden
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
}), [style, statusBarHidden, navigationBarHidden]);
|
|
165
|
+
}
|
|
166
|
+
}), [statusBarStyle, navigationBarStyle, statusBarHidden, navigationBarHidden]);
|
|
156
167
|
const colorScheme = (0, _reactNative.useColorScheme)();
|
|
157
168
|
const stackEntryRef = (0, _react.useRef)(null);
|
|
158
169
|
(0, _react.useEffect)(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_NativeEdgeToEdgeModule","_interopRequireDefault","e","__esModule","default","getColorScheme","Appearance","mergeEntriesStack","entriesStack","mergedEntry","reduce","prev","cur","prop","statusBarStyle","undefined","statusBarHidden","navigationBarHidden","createStackEntry","props","style","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_NativeEdgeToEdgeModule","_interopRequireDefault","e","__esModule","default","getColorScheme","Appearance","mergeEntriesStack","entriesStack","mergedEntry","reduce","prev","cur","prop","statusBarStyle","undefined","statusBarHidden","navigationBarStyle","navigationBarHidden","createStackEntry","props","style","statusBar","hidden","navigationBar","updateImmediate","currentMergedEntries","updateEntriesStack","Platform","OS","clearImmediate","setImmediate","mergedEntries","autoBarStyle","NativeEdgeToEdgeModule","setSystemBarsConfig","StatusBar","setBarStyle","setHidden","pushStackEntry","entry","push","popStackEntry","index","indexOf","splice","replaceStackEntry","newEntry","SystemBars","stableProps","useMemo","colorScheme","useColorScheme","stackEntryRef","useRef","useEffect","current"],"sourceRoot":"../../src","sources":["SystemBars.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoE,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGpE,SAASG,cAAcA,CAAA,EAAqB;EAC1C,OAAOC,uBAAU,EAAED,cAAc,CAAC,CAAC,IAAI,OAAO;AAChD;;AAEA;AACA;AACA;AACA,SAASE,iBAAiBA,CACxBC,YAA+B,EACP;EACxB,MAAMC,WAAW,GAAGD,YAAY,CAACE,MAAM,CACrC,CAACC,IAAI,EAAEC,GAAG,KAAK;IACb,KAAK,MAAMC,IAAI,IAAID,GAAG,EAAE;MACtB,IAAIA,GAAG,CAACC,IAAI,CAA0B,IAAI,IAAI,EAAE;QAC9C;QACAF,IAAI,CAACE,IAAI,CAAC,GAAGD,GAAG,CAACC,IAAI,CAAC;MACxB;IACF;IACA,OAAOF,IAAI;EACb,CAAC,EACD;IACEG,cAAc,EAAEC,SAAS;IACzBC,eAAe,EAAED,SAAS;IAC1BE,kBAAkB,EAAEF,SAAS;IAC7BG,mBAAmB,EAAEH;EACvB,CACF,CAAC;EAED,IACEN,WAAW,CAACK,cAAc,IAAI,IAAI,IAClCL,WAAW,CAACO,eAAe,IAAI,IAAI,IACnCP,WAAW,CAACQ,kBAAkB,IAAI,IAAI,IACtCR,WAAW,CAACS,mBAAmB,IAAI,IAAI,EACvC;IACA,OAAO,IAAI;EACb,CAAC,MAAM;IACL,OAAOT,WAAW;EACpB;AACF;;AAEA;AACA;AACA;AACA,SAASU,gBAAgBA,CAACC,KAAsB,EAAmB;EACjE,OAAO;IACLN,cAAc,EACZ,OAAOM,KAAK,CAACC,KAAK,KAAK,QAAQ,GAAGD,KAAK,CAACC,KAAK,GAAGD,KAAK,CAACC,KAAK,EAAEC,SAAS;IACxEN,eAAe,EACb,OAAOI,KAAK,CAACG,MAAM,KAAK,SAAS,GAC7BH,KAAK,CAACG,MAAM,GACZH,KAAK,CAACG,MAAM,EAAED,SAAS;IAC7BL,kBAAkB,EAChB,OAAOG,KAAK,CAACC,KAAK,KAAK,QAAQ,GAC3BD,KAAK,CAACC,KAAK,GACXD,KAAK,CAACC,KAAK,EAAEG,aAAa;IAChCN,mBAAmB,EACjB,OAAOE,KAAK,CAACG,MAAM,KAAK,SAAS,GAC7BH,KAAK,CAACG,MAAM,GACZH,KAAK,CAACG,MAAM,EAAEC;EACtB,CAAC;AACH;AAEA,MAAMhB,YAA+B,GAAG,EAAE;;AAE1C;AACA,IAAIiB,eAAwC,GAAG,IAAI;;AAEnD;AACA,IAAIC,oBAKI,GAAG,IAAI;;AAEf;AACA;AACA;AACA,SAASC,kBAAkBA,CAAA,EAAG;EAC5B,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAID,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACtD,IAAIJ,eAAe,IAAI,IAAI,EAAE;MAC3BK,cAAc,CAACL,eAAe,CAAC;IACjC;IAEAA,eAAe,GAAGM,YAAY,CAAC,MAAM;MACnC,MAAMC,aAAa,GAAGzB,iBAAiB,CAACC,YAAY,CAAC;MAErD,IAAIwB,aAAa,IAAI,IAAI,EAAE;QACzB,MAAM;UAAEhB,eAAe;UAAEE;QAAoB,CAAC,GAAGc,aAAa;QAC9D,MAAMC,YAAY,GAAG5B,cAAc,CAAC,CAAC,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;QAEpE,MAAMS,cAA4C,GAChDkB,aAAa,CAAClB,cAAc,KAAK,MAAM,GACnCmB,YAAY,GACZD,aAAa,CAAClB,cAAc;QAElC,MAAMG,kBAAgD,GACpDe,aAAa,CAACf,kBAAkB,KAAK,MAAM,GACvCgB,YAAY,GACZD,aAAa,CAACf,kBAAkB;QAEtC,IACES,oBAAoB,EAAEZ,cAAc,KAAKA,cAAc,IACvDY,oBAAoB,EAAEV,eAAe,KAAKA,eAAe,IACzDU,oBAAoB,EAAET,kBAAkB,KAAKA,kBAAkB,IAC/DS,oBAAoB,EAAER,mBAAmB,KAAKA,mBAAmB,EACjE;UACA,IAAIU,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;YAC7BK,+BAAsB,EAAEC,mBAAmB,CAAC;cAC1CrB,cAAc;cACdE,eAAe;cACfC,kBAAkB;cAClBC;YACF,CAAC,CAAC;UACJ,CAAC,MAAM;YACL;YACA,IAAIJ,cAAc,IAAI,IAAI,EAAE;cAC1BsB,sBAAS,CAACC,WAAW,CAAC,GAAGvB,cAAc,UAAU,EAAE,IAAI,CAAC;YAC1D;YACA,IAAIE,eAAe,IAAI,IAAI,EAAE;cAC3BoB,sBAAS,CAACE,SAAS,CAACtB,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;YAChD;UACF;QACF;QAEAU,oBAAoB,GAAG;UACrBZ,cAAc;UACdE,eAAe;UACfC,kBAAkB;UAClBC;QACF,CAAC;MACH,CAAC,MAAM;QACLQ,oBAAoB,GAAG,IAAI;MAC7B;IACF,CAAC,CAAC;EACJ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASa,cAAcA,CAACnB,KAAsB,EAAmB;EAC/D,MAAMoB,KAAK,GAAGrB,gBAAgB,CAACC,KAAK,CAAC;EACrCZ,YAAY,CAACiC,IAAI,CAACD,KAAK,CAAC;EACxBb,kBAAkB,CAAC,CAAC;EACpB,OAAOa,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,aAAaA,CAACF,KAAsB,EAAQ;EACnD,MAAMG,KAAK,GAAGnC,YAAY,CAACoC,OAAO,CAACJ,KAAK,CAAC;EACzC,IAAIG,KAAK,KAAK,CAAC,CAAC,EAAE;IAChBnC,YAAY,CAACqC,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;EAC/B;EACAhB,kBAAkB,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmB,iBAAiBA,CACxBN,KAAsB,EACtBpB,KAAsB,EACL;EACjB,MAAM2B,QAAQ,GAAG5B,gBAAgB,CAACC,KAAK,CAAC;EACxC,MAAMuB,KAAK,GAAGnC,YAAY,CAACoC,OAAO,CAACJ,KAAK,CAAC;EACzC,IAAIG,KAAK,KAAK,CAAC,CAAC,EAAE;IAChBnC,YAAY,CAACmC,KAAK,CAAC,GAAGI,QAAQ;EAChC;EACApB,kBAAkB,CAAC,CAAC;EACpB,OAAOoB,QAAQ;AACjB;AAEO,SAASC,UAAUA,CAAC;EAAEzB,MAAM;EAAEF;AAAuB,CAAC,EAAE;EAC7D,MAAMP,cAAc,GAAG,OAAOO,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,EAAEC,SAAS;EAC3E,MAAMN,eAAe,GACnB,OAAOO,MAAM,KAAK,SAAS,GAAGA,MAAM,GAAGA,MAAM,EAAED,SAAS;EAC1D,MAAML,kBAAkB,GACtB,OAAOI,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,EAAEG,aAAa;EAC1D,MAAMN,mBAAmB,GACvB,OAAOK,MAAM,KAAK,SAAS,GAAGA,MAAM,GAAGA,MAAM,EAAEC,aAAa;EAE9D,MAAMyB,WAAW,GAAG,IAAAC,cAAO,EACzB,OAAO;IACL7B,KAAK,EACHP,cAAc,KAAKG,kBAAkB,GACjCH,cAAc,GACd;MAAEQ,SAAS,EAAER,cAAc;MAAEU,aAAa,EAAEP;IAAmB,CAAC;IACtEM,MAAM,EACJP,eAAe,KAAKE,mBAAmB,GACnCF,eAAe,GACf;MAAEM,SAAS,EAAEN,eAAe;MAAEQ,aAAa,EAAEN;IAAoB;EACzE,CAAC,CAAC,EACF,CAACJ,cAAc,EAAEG,kBAAkB,EAAED,eAAe,EAAEE,mBAAmB,CAC3E,CAAC;EAED,MAAMiC,WAAW,GAAG,IAAAC,2BAAc,EAAC,CAAC;EACpC,MAAMC,aAAa,GAAG,IAAAC,aAAM,EAAyB,IAAI,CAAC;EAE1D,IAAAC,gBAAS,EAAC,MAAM;IACd;IACA;IACA;IACA;IACAF,aAAa,CAACG,OAAO,GAAGjB,cAAc,CAACU,WAAW,CAAC;IAEnD,OAAO,MAAM;MACX;MACA;MACA,IAAII,aAAa,CAACG,OAAO,EAAE;QACzBd,aAAa,CAACW,aAAa,CAACG,OAAO,CAAC;MACtC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAD,gBAAS,EAAC,MAAM;IACd,IAAIF,aAAa,CAACG,OAAO,EAAE;MACzBH,aAAa,CAACG,OAAO,GAAGV,iBAAiB,CACvCO,aAAa,CAACG,OAAO,EACrBP,WACF,CAAC;IACH;EACF,CAAC,EAAE,CAACE,WAAW,EAAEF,WAAW,CAAC,CAAC;EAE9B,OAAO,IAAI;AACb;AAEAD,UAAU,CAACT,cAAc,GAAGA,cAAc;AAC1CS,UAAU,CAACN,aAAa,GAAGA,aAAa;AACxCM,UAAU,CAACF,iBAAiB,GAAGA,iBAAiB","ignoreList":[]}
|
package/dist/commonjs/expo.js
CHANGED
|
@@ -14,7 +14,7 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
|
|
|
14
14
|
"Material2.Light": "Theme.EdgeToEdge.Material2.Light",
|
|
15
15
|
"Material3.Light": "Theme.EdgeToEdge.Material3.Light"
|
|
16
16
|
};
|
|
17
|
-
const
|
|
17
|
+
const cleanupList = new Set(["enforceNavigationBarContrast", "android:enforceNavigationBarContrast", "android:enforceStatusBarContrast", "android:fitsSystemWindows", "android:navigationBarColor", "android:statusBarColor", "android:windowDrawsSystemBarBackgrounds", "android:windowLayoutInDisplayCutoutMode", "android:windowLightNavigationBar", "android:windowLightStatusBar", "android:windowTranslucentNavigation", "android:windowTranslucentStatus"]);
|
|
18
18
|
return (0, _configPlugins.withAndroidStyles)(config, config => {
|
|
19
19
|
const {
|
|
20
20
|
androidStatusBar = {},
|
|
@@ -27,13 +27,22 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
|
|
|
27
27
|
android = {}
|
|
28
28
|
} = props;
|
|
29
29
|
const {
|
|
30
|
+
enforceNavigationBarContrast,
|
|
30
31
|
parentTheme = "Default"
|
|
31
32
|
} = android;
|
|
32
33
|
config.modResults.resources.style = config.modResults.resources.style?.map(style => {
|
|
33
34
|
if (style.$.name === "AppTheme") {
|
|
34
35
|
style.$.parent = themes[parentTheme] ?? themes["Default"];
|
|
35
36
|
if (style.item != null) {
|
|
36
|
-
style.item = style.item.filter(item => !
|
|
37
|
+
style.item = style.item.filter(item => !cleanupList.has(item.$.name));
|
|
38
|
+
}
|
|
39
|
+
if (enforceNavigationBarContrast === false) {
|
|
40
|
+
style.item.push({
|
|
41
|
+
$: {
|
|
42
|
+
name: "enforceNavigationBarContrast"
|
|
43
|
+
},
|
|
44
|
+
_: String(false)
|
|
45
|
+
});
|
|
37
46
|
}
|
|
38
47
|
if (barStyle != null) {
|
|
39
48
|
style.item.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_configPlugins","require","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","cleanupList","Set","withAndroidStyles","androidStatusBar","userInterfaceStyle","barStyle","android","enforceNavigationBarContrast","parentTheme","modResults","resources","style","map","$","name","parent","item","filter","has","push","_","String","_default","exports","default","createRunOncePlugin"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAqBA,MAAMC,0BAA+C,GAAGA,CACtDC,MAAM,EACNC,KAAK,GAAG,CAAC,CAAC,KACP;EACH,MAAMC,MAAmC,GAAG;IAC1CC,OAAO,EAAE,kBAAkB;IAC3BC,SAAS,EAAE,4BAA4B;IACvCC,SAAS,EAAE,4BAA4B;IAEvCC,KAAK,EAAE,wBAAwB;IAC/B,iBAAiB,EAAE,kCAAkC;IACrD,iBAAiB,EAAE;EACrB,CAAC;EAED,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAC,CAC1B,8BAA8B,EAC9B,sCAAsC,EACtC,kCAAkC,EAClC,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,kCAAkC,EAClC,8BAA8B,EAC9B,qCAAqC,EACrC,iCAAiC,CAClC,CAAC;EAEF,OAAO,IAAAC,gCAAiB,EAACT,MAAM,EAAGA,MAAM,IAAK;IAC3C,MAAM;MAAEU,gBAAgB,GAAG,CAAC,CAAC;MAAEC,kBAAkB,GAAG;IAAQ,CAAC,GAAGX,MAAM;IACtE,MAAM;MAAEY;IAAS,CAAC,GAAGF,gBAAgB;IACrC,MAAM;MAAEG,OAAO,GAAG,CAAC;IAAE,CAAC,GAAGZ,KAAK;IAC9B,MAAM;MAAEa,4BAA4B;MAAEC,WAAW,GAAG;IAAU,CAAC,GAAGF,OAAO;IAEzEb,MAAM,CAACgB,UAAU,CAACC,SAAS,CAACC,KAAK,GAAGlB,MAAM,CAACgB,UAAU,CAACC,SAAS,CAACC,KAAK,EAAEC,GAAG,CACvED,KAAK,IAAmB;MACvB,IAAIA,KAAK,CAACE,CAAC,CAACC,IAAI,KAAK,UAAU,EAAE;QAC/BH,KAAK,CAACE,CAAC,CAACE,MAAM,GAAGpB,MAAM,CAACa,WAAW,CAAC,IAAIb,MAAM,CAAC,SAAS,CAAC;QAEzD,IAAIgB,KAAK,CAACK,IAAI,IAAI,IAAI,EAAE;UACtBL,KAAK,CAACK,IAAI,GAAGL,KAAK,CAACK,IAAI,CAACC,MAAM,CAC3BD,IAAI,IAAK,CAAChB,WAAW,CAACkB,GAAG,CAACF,IAAI,CAACH,CAAC,CAACC,IAAI,CACxC,CAAC;QACH;QAEA,IAAIP,4BAA4B,KAAK,KAAK,EAAE;UAC1CI,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAC,KAAK;UACjB,CAAC,CAAC;QACJ;QAEA,IAAIhB,QAAQ,IAAI,IAAI,EAAE;UACpBM,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAChB,QAAQ,KAAK,cAAc;UACvC,CAAC,CAAC;QACJ,CAAC,MAAM,IAAID,kBAAkB,KAAK,WAAW,EAAE;UAC7CO,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAACjB,kBAAkB,KAAK,OAAO;UAC1C,CAAC,CAAC;QACJ;MACF;MAEA,OAAOO,KAAK;IACd,CACF,CAAC;IAED,OAAOlB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC,IAAA6B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,kCAAmB,EAChCjC,0BAA0B,EAC1B,2BACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","NativeModule","TurboModuleRegistry","get","Appearance","addChangeListener","onColorSchemeChange","_default","exports","default"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","NativeModule","TurboModuleRegistry","get","Appearance","addChangeListener","onColorSchemeChange","_default","exports","default"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAcA,MAAMC,YAAY,GAAGC,gCAAmB,CAACC,GAAG,CAAO,cAAc,CAAC;AAElE,IAAIF,YAAY,IAAI,IAAI,EAAE;EACxBG,uBAAU,CAACC,iBAAiB,CAAC,MAAM;IACjCJ,YAAY,CAACK,mBAAmB,CAAC,CAAC;EACpC,CAAC,CAAC;AACJ;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcR,YAAY","ignoreList":[]}
|
|
@@ -22,9 +22,10 @@ function mergeEntriesStack(entriesStack) {
|
|
|
22
22
|
}, {
|
|
23
23
|
statusBarStyle: undefined,
|
|
24
24
|
statusBarHidden: undefined,
|
|
25
|
+
navigationBarStyle: undefined,
|
|
25
26
|
navigationBarHidden: undefined
|
|
26
27
|
});
|
|
27
|
-
if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarHidden == null) {
|
|
28
|
+
if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarStyle == null && mergedEntry.navigationBarHidden == null) {
|
|
28
29
|
return null;
|
|
29
30
|
} else {
|
|
30
31
|
return mergedEntry;
|
|
@@ -36,8 +37,9 @@ function mergeEntriesStack(entriesStack) {
|
|
|
36
37
|
*/
|
|
37
38
|
function createStackEntry(props) {
|
|
38
39
|
return {
|
|
39
|
-
statusBarStyle: props.style,
|
|
40
|
+
statusBarStyle: typeof props.style === "string" ? props.style : props.style?.statusBar,
|
|
40
41
|
statusBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.statusBar,
|
|
42
|
+
navigationBarStyle: typeof props.style === "string" ? props.style : props.style?.navigationBar,
|
|
41
43
|
navigationBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.navigationBar
|
|
42
44
|
};
|
|
43
45
|
}
|
|
@@ -64,12 +66,15 @@ function updateEntriesStack() {
|
|
|
64
66
|
statusBarHidden,
|
|
65
67
|
navigationBarHidden
|
|
66
68
|
} = mergedEntries;
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
+
const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
|
|
70
|
+
const statusBarStyle = mergedEntries.statusBarStyle === "auto" ? autoBarStyle : mergedEntries.statusBarStyle;
|
|
71
|
+
const navigationBarStyle = mergedEntries.navigationBarStyle === "auto" ? autoBarStyle : mergedEntries.navigationBarStyle;
|
|
72
|
+
if (currentMergedEntries?.statusBarStyle !== statusBarStyle || currentMergedEntries?.statusBarHidden !== statusBarHidden || currentMergedEntries?.navigationBarStyle !== navigationBarStyle || currentMergedEntries?.navigationBarHidden !== navigationBarHidden) {
|
|
69
73
|
if (Platform.OS === "android") {
|
|
70
74
|
NativeEdgeToEdgeModule?.setSystemBarsConfig({
|
|
71
75
|
statusBarStyle,
|
|
72
76
|
statusBarHidden,
|
|
77
|
+
navigationBarStyle,
|
|
73
78
|
navigationBarHidden
|
|
74
79
|
});
|
|
75
80
|
} else {
|
|
@@ -85,6 +90,7 @@ function updateEntriesStack() {
|
|
|
85
90
|
currentMergedEntries = {
|
|
86
91
|
statusBarStyle,
|
|
87
92
|
statusBarHidden,
|
|
93
|
+
navigationBarStyle,
|
|
88
94
|
navigationBarHidden
|
|
89
95
|
};
|
|
90
96
|
} else {
|
|
@@ -139,15 +145,20 @@ export function SystemBars({
|
|
|
139
145
|
hidden,
|
|
140
146
|
style
|
|
141
147
|
}) {
|
|
148
|
+
const statusBarStyle = typeof style === "string" ? style : style?.statusBar;
|
|
142
149
|
const statusBarHidden = typeof hidden === "boolean" ? hidden : hidden?.statusBar;
|
|
150
|
+
const navigationBarStyle = typeof style === "string" ? style : style?.navigationBar;
|
|
143
151
|
const navigationBarHidden = typeof hidden === "boolean" ? hidden : hidden?.navigationBar;
|
|
144
152
|
const stableProps = useMemo(() => ({
|
|
153
|
+
style: statusBarStyle === navigationBarStyle ? statusBarStyle : {
|
|
154
|
+
statusBar: statusBarStyle,
|
|
155
|
+
navigationBar: navigationBarStyle
|
|
156
|
+
},
|
|
145
157
|
hidden: statusBarHidden === navigationBarHidden ? statusBarHidden : {
|
|
146
158
|
statusBar: statusBarHidden,
|
|
147
159
|
navigationBar: navigationBarHidden
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
}), [style, statusBarHidden, navigationBarHidden]);
|
|
160
|
+
}
|
|
161
|
+
}), [statusBarStyle, navigationBarStyle, statusBarHidden, navigationBarHidden]);
|
|
151
162
|
const colorScheme = useColorScheme();
|
|
152
163
|
const stackEntryRef = useRef(null);
|
|
153
164
|
useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useMemo","useRef","Appearance","Platform","StatusBar","useColorScheme","NativeEdgeToEdgeModule","getColorScheme","mergeEntriesStack","entriesStack","mergedEntry","reduce","prev","cur","prop","statusBarStyle","undefined","statusBarHidden","navigationBarHidden","createStackEntry","props","style","
|
|
1
|
+
{"version":3,"names":["useEffect","useMemo","useRef","Appearance","Platform","StatusBar","useColorScheme","NativeEdgeToEdgeModule","getColorScheme","mergeEntriesStack","entriesStack","mergedEntry","reduce","prev","cur","prop","statusBarStyle","undefined","statusBarHidden","navigationBarStyle","navigationBarHidden","createStackEntry","props","style","statusBar","hidden","navigationBar","updateImmediate","currentMergedEntries","updateEntriesStack","OS","clearImmediate","setImmediate","mergedEntries","autoBarStyle","setSystemBarsConfig","setBarStyle","setHidden","pushStackEntry","entry","push","popStackEntry","index","indexOf","splice","replaceStackEntry","newEntry","SystemBars","stableProps","colorScheme","stackEntryRef","current"],"sourceRoot":"../../src","sources":["SystemBars.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/module/expo.js
CHANGED
|
@@ -10,7 +10,7 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
|
|
|
10
10
|
"Material2.Light": "Theme.EdgeToEdge.Material2.Light",
|
|
11
11
|
"Material3.Light": "Theme.EdgeToEdge.Material3.Light"
|
|
12
12
|
};
|
|
13
|
-
const
|
|
13
|
+
const cleanupList = new Set(["enforceNavigationBarContrast", "android:enforceNavigationBarContrast", "android:enforceStatusBarContrast", "android:fitsSystemWindows", "android:navigationBarColor", "android:statusBarColor", "android:windowDrawsSystemBarBackgrounds", "android:windowLayoutInDisplayCutoutMode", "android:windowLightNavigationBar", "android:windowLightStatusBar", "android:windowTranslucentNavigation", "android:windowTranslucentStatus"]);
|
|
14
14
|
return withAndroidStyles(config, config => {
|
|
15
15
|
const {
|
|
16
16
|
androidStatusBar = {},
|
|
@@ -23,13 +23,22 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
|
|
|
23
23
|
android = {}
|
|
24
24
|
} = props;
|
|
25
25
|
const {
|
|
26
|
+
enforceNavigationBarContrast,
|
|
26
27
|
parentTheme = "Default"
|
|
27
28
|
} = android;
|
|
28
29
|
config.modResults.resources.style = config.modResults.resources.style?.map(style => {
|
|
29
30
|
if (style.$.name === "AppTheme") {
|
|
30
31
|
style.$.parent = themes[parentTheme] ?? themes["Default"];
|
|
31
32
|
if (style.item != null) {
|
|
32
|
-
style.item = style.item.filter(item => !
|
|
33
|
+
style.item = style.item.filter(item => !cleanupList.has(item.$.name));
|
|
34
|
+
}
|
|
35
|
+
if (enforceNavigationBarContrast === false) {
|
|
36
|
+
style.item.push({
|
|
37
|
+
$: {
|
|
38
|
+
name: "enforceNavigationBarContrast"
|
|
39
|
+
},
|
|
40
|
+
_: String(false)
|
|
41
|
+
});
|
|
33
42
|
}
|
|
34
43
|
if (barStyle != null) {
|
|
35
44
|
style.item.push({
|
package/dist/module/expo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createRunOncePlugin","withAndroidStyles","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","
|
|
1
|
+
{"version":3,"names":["createRunOncePlugin","withAndroidStyles","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","cleanupList","Set","androidStatusBar","userInterfaceStyle","barStyle","android","enforceNavigationBarContrast","parentTheme","modResults","resources","style","map","$","name","parent","item","filter","has","push","_","String"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":";;AAAA,SAEEA,mBAAmB,EACnBC,iBAAiB,QACZ,sBAAsB;AAiB7B,MAAMC,0BAA+C,GAAGA,CACtDC,MAAM,EACNC,KAAK,GAAG,CAAC,CAAC,KACP;EACH,MAAMC,MAAmC,GAAG;IAC1CC,OAAO,EAAE,kBAAkB;IAC3BC,SAAS,EAAE,4BAA4B;IACvCC,SAAS,EAAE,4BAA4B;IAEvCC,KAAK,EAAE,wBAAwB;IAC/B,iBAAiB,EAAE,kCAAkC;IACrD,iBAAiB,EAAE;EACrB,CAAC;EAED,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAC,CAC1B,8BAA8B,EAC9B,sCAAsC,EACtC,kCAAkC,EAClC,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,kCAAkC,EAClC,8BAA8B,EAC9B,qCAAqC,EACrC,iCAAiC,CAClC,CAAC;EAEF,OAAOV,iBAAiB,CAACE,MAAM,EAAGA,MAAM,IAAK;IAC3C,MAAM;MAAES,gBAAgB,GAAG,CAAC,CAAC;MAAEC,kBAAkB,GAAG;IAAQ,CAAC,GAAGV,MAAM;IACtE,MAAM;MAAEW;IAAS,CAAC,GAAGF,gBAAgB;IACrC,MAAM;MAAEG,OAAO,GAAG,CAAC;IAAE,CAAC,GAAGX,KAAK;IAC9B,MAAM;MAAEY,4BAA4B;MAAEC,WAAW,GAAG;IAAU,CAAC,GAAGF,OAAO;IAEzEZ,MAAM,CAACe,UAAU,CAACC,SAAS,CAACC,KAAK,GAAGjB,MAAM,CAACe,UAAU,CAACC,SAAS,CAACC,KAAK,EAAEC,GAAG,CACvED,KAAK,IAAmB;MACvB,IAAIA,KAAK,CAACE,CAAC,CAACC,IAAI,KAAK,UAAU,EAAE;QAC/BH,KAAK,CAACE,CAAC,CAACE,MAAM,GAAGnB,MAAM,CAACY,WAAW,CAAC,IAAIZ,MAAM,CAAC,SAAS,CAAC;QAEzD,IAAIe,KAAK,CAACK,IAAI,IAAI,IAAI,EAAE;UACtBL,KAAK,CAACK,IAAI,GAAGL,KAAK,CAACK,IAAI,CAACC,MAAM,CAC3BD,IAAI,IAAK,CAACf,WAAW,CAACiB,GAAG,CAACF,IAAI,CAACH,CAAC,CAACC,IAAI,CACxC,CAAC;QACH;QAEA,IAAIP,4BAA4B,KAAK,KAAK,EAAE;UAC1CI,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAC,KAAK;UACjB,CAAC,CAAC;QACJ;QAEA,IAAIhB,QAAQ,IAAI,IAAI,EAAE;UACpBM,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAChB,QAAQ,KAAK,cAAc;UACvC,CAAC,CAAC;QACJ,CAAC,MAAM,IAAID,kBAAkB,KAAK,WAAW,EAAE;UAC7CO,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAACjB,kBAAkB,KAAK,OAAO;UAC1C,CAAC,CAAC;QACJ;MACF;MAEA,OAAOO,KAAK;IACd,CACF,CAAC;IAED,OAAOjB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAED,eAAeH,mBAAmB,CAChCE,0BAA0B,EAC1B,2BACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Appearance","TurboModuleRegistry","NativeModule","get","addChangeListener","onColorSchemeChange"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;AACA,SAASA,UAAU,EAAEC,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["Appearance","TurboModuleRegistry","NativeModule","get","addChangeListener","onColorSchemeChange"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;AACA,SAASA,UAAU,EAAEC,mBAAmB,QAAQ,cAAc;AAc9D,MAAMC,YAAY,GAAGD,mBAAmB,CAACE,GAAG,CAAO,cAAc,CAAC;AAElE,IAAID,YAAY,IAAI,IAAI,EAAE;EACxBF,UAAU,CAACI,iBAAiB,CAAC,MAAM;IACjCF,YAAY,CAACG,mBAAmB,CAAC,CAAC;EACpC,CAAC,CAAC;AACJ;AAEA,eAAeH,YAAY","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemBars.d.ts","sourceRoot":"","sources":["../../src/SystemBars.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SystemBars.d.ts","sourceRoot":"","sources":["../../src/SystemBars.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAyL3D,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,QAoD5D;yBApDe,UAAU;gCAvCK,eAAe,KAAG,eAAe;+BAYlC,eAAe,KAAG,IAAI;mCAe3C,eAAe,SACf,eAAe,KACrB,eAAe"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { ConfigPlugin } from "@expo/config-plugins";
|
|
2
|
-
type
|
|
2
|
+
type ParentTheme = "Default" | "Material2" | "Material3" | "Light" | "Material2.Light" | "Material3.Light";
|
|
3
|
+
type AndroidProps = {
|
|
4
|
+
enforceNavigationBarContrast?: boolean;
|
|
5
|
+
parentTheme?: ParentTheme;
|
|
6
|
+
};
|
|
3
7
|
type Props = {
|
|
4
|
-
android?:
|
|
5
|
-
parentTheme?: Theme;
|
|
6
|
-
};
|
|
8
|
+
android?: AndroidProps;
|
|
7
9
|
} | undefined;
|
|
8
10
|
declare const _default: ConfigPlugin<Props>;
|
|
9
11
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../src/expo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,sBAAsB,CAAC;AAE9B,KAAK,
|
|
1
|
+
{"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../src/expo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,sBAAsB,CAAC;AAE9B,KAAK,WAAW,GACZ,SAAS,GACT,WAAW,GACX,WAAW,GACX,OAAO,GACP,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,KAAK,YAAY,GAAG;IAClB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,KAAK,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,CAAC;;AA4EpD,wBAGE"}
|
|
@@ -3,6 +3,7 @@ type SystemBarsConfig = {
|
|
|
3
3
|
statusBarHidden: boolean | undefined;
|
|
4
4
|
statusBarStyle: string | undefined;
|
|
5
5
|
navigationBarHidden: boolean | undefined;
|
|
6
|
+
navigationBarStyle: string | undefined;
|
|
6
7
|
};
|
|
7
8
|
export interface Spec extends TurboModule {
|
|
8
9
|
onColorSchemeChange(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeEdgeToEdgeModule.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeEdgeToEdgeModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,KAAK,gBAAgB,GAAG;IACtB,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeEdgeToEdgeModule.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeEdgeToEdgeModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,KAAK,gBAAgB,GAAG;IACtB,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,mBAAmB,IAAI,IAAI,CAAC;IAC5B,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrD;AAED,QAAA,MAAM,YAAY,aAAgD,CAAC;AAQnE,eAAe,YAAY,CAAC"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
+
type SystemBarsProp<T> = T | {
|
|
2
|
+
statusBar?: T;
|
|
3
|
+
navigationBar?: T;
|
|
4
|
+
};
|
|
1
5
|
export type SystemBarStyle = "auto" | "light" | "dark";
|
|
2
6
|
export type SystemBarsEntry = {
|
|
3
7
|
statusBarHidden: boolean | undefined;
|
|
4
8
|
statusBarStyle: SystemBarStyle | undefined;
|
|
5
9
|
navigationBarHidden: boolean | undefined;
|
|
10
|
+
navigationBarStyle: SystemBarStyle | undefined;
|
|
6
11
|
};
|
|
7
12
|
export type SystemBarsProps = {
|
|
8
|
-
style?: SystemBarStyle
|
|
9
|
-
hidden?: boolean
|
|
10
|
-
statusBar?: boolean;
|
|
11
|
-
navigationBar?: boolean;
|
|
12
|
-
};
|
|
13
|
+
style?: SystemBarsProp<SystemBarStyle>;
|
|
14
|
+
hidden?: SystemBarsProp<boolean>;
|
|
13
15
|
};
|
|
16
|
+
export {};
|
|
14
17
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,kBAAkB,EAAE,cAAc,GAAG,SAAS,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-edge-to-edge",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Effortlessly enable edge-to-edge display in React Native",
|
|
6
6
|
"author": "Mathieu Acthernoene <zoontek@gmail.com>",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"react": ">=18.2.0",
|
|
56
|
-
"react-native": ">=0.
|
|
56
|
+
"react-native": ">=0.74.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@babel/core": "^7.25.2",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"prettier": "^3.4.2",
|
|
64
64
|
"prettier-plugin-organize-imports": "^4.1.0",
|
|
65
65
|
"react": "18.3.1",
|
|
66
|
-
"react-native": "0.
|
|
66
|
+
"react-native": "0.77.0-rc.6",
|
|
67
67
|
"react-native-builder-bob": "^0.35.2",
|
|
68
68
|
"typescript": "^5.7.2"
|
|
69
69
|
},
|
package/src/SystemBars.ts
CHANGED
|
@@ -26,6 +26,7 @@ function mergeEntriesStack(
|
|
|
26
26
|
{
|
|
27
27
|
statusBarStyle: undefined,
|
|
28
28
|
statusBarHidden: undefined,
|
|
29
|
+
navigationBarStyle: undefined,
|
|
29
30
|
navigationBarHidden: undefined,
|
|
30
31
|
},
|
|
31
32
|
);
|
|
@@ -33,6 +34,7 @@ function mergeEntriesStack(
|
|
|
33
34
|
if (
|
|
34
35
|
mergedEntry.statusBarStyle == null &&
|
|
35
36
|
mergedEntry.statusBarHidden == null &&
|
|
37
|
+
mergedEntry.navigationBarStyle == null &&
|
|
36
38
|
mergedEntry.navigationBarHidden == null
|
|
37
39
|
) {
|
|
38
40
|
return null;
|
|
@@ -46,11 +48,16 @@ function mergeEntriesStack(
|
|
|
46
48
|
*/
|
|
47
49
|
function createStackEntry(props: SystemBarsProps): SystemBarsEntry {
|
|
48
50
|
return {
|
|
49
|
-
statusBarStyle:
|
|
51
|
+
statusBarStyle:
|
|
52
|
+
typeof props.style === "string" ? props.style : props.style?.statusBar,
|
|
50
53
|
statusBarHidden:
|
|
51
54
|
typeof props.hidden === "boolean"
|
|
52
55
|
? props.hidden
|
|
53
56
|
: props.hidden?.statusBar,
|
|
57
|
+
navigationBarStyle:
|
|
58
|
+
typeof props.style === "string"
|
|
59
|
+
? props.style
|
|
60
|
+
: props.style?.navigationBar,
|
|
54
61
|
navigationBarHidden:
|
|
55
62
|
typeof props.hidden === "boolean"
|
|
56
63
|
? props.hidden
|
|
@@ -67,6 +74,7 @@ let updateImmediate: NodeJS.Immediate | null = null;
|
|
|
67
74
|
let currentMergedEntries: {
|
|
68
75
|
statusBarStyle: "light" | "dark" | undefined;
|
|
69
76
|
statusBarHidden: boolean | undefined;
|
|
77
|
+
navigationBarStyle: "light" | "dark" | undefined;
|
|
70
78
|
navigationBarHidden: boolean | undefined;
|
|
71
79
|
} | null = null;
|
|
72
80
|
|
|
@@ -84,23 +92,29 @@ function updateEntriesStack() {
|
|
|
84
92
|
|
|
85
93
|
if (mergedEntries != null) {
|
|
86
94
|
const { statusBarHidden, navigationBarHidden } = mergedEntries;
|
|
95
|
+
const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
|
|
87
96
|
|
|
88
97
|
const statusBarStyle: "light" | "dark" | undefined =
|
|
89
98
|
mergedEntries.statusBarStyle === "auto"
|
|
90
|
-
?
|
|
91
|
-
? "dark"
|
|
92
|
-
: "light"
|
|
99
|
+
? autoBarStyle
|
|
93
100
|
: mergedEntries.statusBarStyle;
|
|
94
101
|
|
|
102
|
+
const navigationBarStyle: "light" | "dark" | undefined =
|
|
103
|
+
mergedEntries.navigationBarStyle === "auto"
|
|
104
|
+
? autoBarStyle
|
|
105
|
+
: mergedEntries.navigationBarStyle;
|
|
106
|
+
|
|
95
107
|
if (
|
|
96
108
|
currentMergedEntries?.statusBarStyle !== statusBarStyle ||
|
|
97
109
|
currentMergedEntries?.statusBarHidden !== statusBarHidden ||
|
|
110
|
+
currentMergedEntries?.navigationBarStyle !== navigationBarStyle ||
|
|
98
111
|
currentMergedEntries?.navigationBarHidden !== navigationBarHidden
|
|
99
112
|
) {
|
|
100
113
|
if (Platform.OS === "android") {
|
|
101
114
|
NativeEdgeToEdgeModule?.setSystemBarsConfig({
|
|
102
115
|
statusBarStyle,
|
|
103
116
|
statusBarHidden,
|
|
117
|
+
navigationBarStyle,
|
|
104
118
|
navigationBarHidden,
|
|
105
119
|
});
|
|
106
120
|
} else {
|
|
@@ -117,6 +131,7 @@ function updateEntriesStack() {
|
|
|
117
131
|
currentMergedEntries = {
|
|
118
132
|
statusBarStyle,
|
|
119
133
|
statusBarHidden,
|
|
134
|
+
navigationBarStyle,
|
|
120
135
|
navigationBarHidden,
|
|
121
136
|
};
|
|
122
137
|
} else {
|
|
@@ -172,20 +187,26 @@ function replaceStackEntry(
|
|
|
172
187
|
}
|
|
173
188
|
|
|
174
189
|
export function SystemBars({ hidden, style }: SystemBarsProps) {
|
|
190
|
+
const statusBarStyle = typeof style === "string" ? style : style?.statusBar;
|
|
175
191
|
const statusBarHidden =
|
|
176
192
|
typeof hidden === "boolean" ? hidden : hidden?.statusBar;
|
|
193
|
+
const navigationBarStyle =
|
|
194
|
+
typeof style === "string" ? style : style?.navigationBar;
|
|
177
195
|
const navigationBarHidden =
|
|
178
196
|
typeof hidden === "boolean" ? hidden : hidden?.navigationBar;
|
|
179
197
|
|
|
180
198
|
const stableProps = useMemo<SystemBarsProps>(
|
|
181
199
|
() => ({
|
|
200
|
+
style:
|
|
201
|
+
statusBarStyle === navigationBarStyle
|
|
202
|
+
? statusBarStyle
|
|
203
|
+
: { statusBar: statusBarStyle, navigationBar: navigationBarStyle },
|
|
182
204
|
hidden:
|
|
183
205
|
statusBarHidden === navigationBarHidden
|
|
184
206
|
? statusBarHidden
|
|
185
207
|
: { statusBar: statusBarHidden, navigationBar: navigationBarHidden },
|
|
186
|
-
style,
|
|
187
208
|
}),
|
|
188
|
-
[
|
|
209
|
+
[statusBarStyle, navigationBarStyle, statusBarHidden, navigationBarHidden],
|
|
189
210
|
);
|
|
190
211
|
|
|
191
212
|
const colorScheme = useColorScheme();
|
package/src/expo.ts
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
withAndroidStyles,
|
|
5
5
|
} from "@expo/config-plugins";
|
|
6
6
|
|
|
7
|
-
type
|
|
7
|
+
type ParentTheme =
|
|
8
8
|
| "Default"
|
|
9
9
|
| "Material2"
|
|
10
10
|
| "Material3"
|
|
@@ -12,13 +12,18 @@ type Theme =
|
|
|
12
12
|
| "Material2.Light"
|
|
13
13
|
| "Material3.Light";
|
|
14
14
|
|
|
15
|
-
type
|
|
15
|
+
type AndroidProps = {
|
|
16
|
+
enforceNavigationBarContrast?: boolean;
|
|
17
|
+
parentTheme?: ParentTheme;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
type Props = { android?: AndroidProps } | undefined;
|
|
16
21
|
|
|
17
22
|
const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
|
|
18
23
|
config,
|
|
19
24
|
props = {},
|
|
20
25
|
) => {
|
|
21
|
-
const themes: Record<
|
|
26
|
+
const themes: Record<ParentTheme, string> = {
|
|
22
27
|
Default: "Theme.EdgeToEdge",
|
|
23
28
|
Material2: "Theme.EdgeToEdge.Material2",
|
|
24
29
|
Material3: "Theme.EdgeToEdge.Material3",
|
|
@@ -28,7 +33,8 @@ const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
|
|
|
28
33
|
"Material3.Light": "Theme.EdgeToEdge.Material3.Light",
|
|
29
34
|
};
|
|
30
35
|
|
|
31
|
-
const
|
|
36
|
+
const cleanupList = new Set([
|
|
37
|
+
"enforceNavigationBarContrast",
|
|
32
38
|
"android:enforceNavigationBarContrast",
|
|
33
39
|
"android:enforceStatusBarContrast",
|
|
34
40
|
"android:fitsSystemWindows",
|
|
@@ -46,7 +52,7 @@ const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
|
|
|
46
52
|
const { androidStatusBar = {}, userInterfaceStyle = "light" } = config;
|
|
47
53
|
const { barStyle } = androidStatusBar;
|
|
48
54
|
const { android = {} } = props;
|
|
49
|
-
const { parentTheme = "Default" } = android;
|
|
55
|
+
const { enforceNavigationBarContrast, parentTheme = "Default" } = android;
|
|
50
56
|
|
|
51
57
|
config.modResults.resources.style = config.modResults.resources.style?.map(
|
|
52
58
|
(style): typeof style => {
|
|
@@ -55,10 +61,17 @@ const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
|
|
|
55
61
|
|
|
56
62
|
if (style.item != null) {
|
|
57
63
|
style.item = style.item.filter(
|
|
58
|
-
(item) => !
|
|
64
|
+
(item) => !cleanupList.has(item.$.name),
|
|
59
65
|
);
|
|
60
66
|
}
|
|
61
67
|
|
|
68
|
+
if (enforceNavigationBarContrast === false) {
|
|
69
|
+
style.item.push({
|
|
70
|
+
$: { name: "enforceNavigationBarContrast" },
|
|
71
|
+
_: String(false),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
62
75
|
if (barStyle != null) {
|
|
63
76
|
style.item.push({
|
|
64
77
|
$: { name: "android:windowLightStatusBar" },
|
package/src/types.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
type SystemBarsProp<T> = T | { statusBar?: T; navigationBar?: T };
|
|
2
|
+
|
|
1
3
|
export type SystemBarStyle = "auto" | "light" | "dark";
|
|
2
4
|
|
|
3
5
|
export type SystemBarsEntry = {
|
|
4
6
|
statusBarHidden: boolean | undefined;
|
|
5
7
|
statusBarStyle: SystemBarStyle | undefined;
|
|
6
8
|
navigationBarHidden: boolean | undefined;
|
|
9
|
+
navigationBarStyle: SystemBarStyle | undefined;
|
|
7
10
|
};
|
|
8
11
|
|
|
9
12
|
export type SystemBarsProps = {
|
|
10
|
-
style?: SystemBarStyle
|
|
11
|
-
hidden?: boolean
|
|
13
|
+
style?: SystemBarsProp<SystemBarStyle>;
|
|
14
|
+
hidden?: SystemBarsProp<boolean>;
|
|
12
15
|
};
|