react-native-edge-to-edge 1.4.1 → 1.4.3-beta.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.
Files changed (34) hide show
  1. package/android/src/main/java/com/zoontek/rnedgetoedge/EdgeToEdgeModuleImpl.kt +86 -42
  2. package/android/src/main/res/values/attrs.xml +1 -1
  3. package/android/src/main/res/values/styles.xml +8 -8
  4. package/android/src/newarch/com/zoontek/rnedgetoedge/EdgeToEdgeModule.kt +14 -3
  5. package/android/src/oldarch/com/zoontek/rnedgetoedge/EdgeToEdgeModule.kt +17 -3
  6. package/dist/commonjs/SystemBars.js +44 -44
  7. package/dist/commonjs/SystemBars.js.map +1 -1
  8. package/dist/commonjs/expo.js +18 -18
  9. package/dist/commonjs/expo.js.map +1 -1
  10. package/dist/commonjs/specs/NativeEdgeToEdgeModule.js +1 -1
  11. package/dist/commonjs/specs/NativeEdgeToEdgeModule.js.map +1 -1
  12. package/dist/commonjs/specs/NativeEdgeToEdgeModule.web.js +1 -4
  13. package/dist/commonjs/specs/NativeEdgeToEdgeModule.web.js.map +1 -1
  14. package/dist/module/SystemBars.js +45 -45
  15. package/dist/module/SystemBars.js.map +1 -1
  16. package/dist/module/expo.js +18 -18
  17. package/dist/module/expo.js.map +1 -1
  18. package/dist/module/specs/NativeEdgeToEdgeModule.js +2 -2
  19. package/dist/module/specs/NativeEdgeToEdgeModule.js.map +1 -1
  20. package/dist/module/specs/NativeEdgeToEdgeModule.web.js +1 -4
  21. package/dist/module/specs/NativeEdgeToEdgeModule.web.js.map +1 -1
  22. package/dist/typescript/SystemBars.d.ts.map +1 -1
  23. package/dist/typescript/specs/NativeEdgeToEdgeModule.d.ts +6 -8
  24. package/dist/typescript/specs/NativeEdgeToEdgeModule.d.ts.map +1 -1
  25. package/dist/typescript/specs/NativeEdgeToEdgeModule.web.d.ts +1 -4
  26. package/dist/typescript/specs/NativeEdgeToEdgeModule.web.d.ts.map +1 -1
  27. package/dist/typescript/types.d.ts +2 -2
  28. package/dist/typescript/types.d.ts.map +1 -1
  29. package/package.json +2 -2
  30. package/src/SystemBars.ts +77 -74
  31. package/src/expo.ts +15 -15
  32. package/src/specs/NativeEdgeToEdgeModule.ts +11 -10
  33. package/src/specs/NativeEdgeToEdgeModule.web.ts +1 -6
  34. package/src/types.ts +2 -2
@@ -2,16 +2,19 @@
2
2
 
3
3
  import { useEffect, useMemo, useRef } from "react";
4
4
  import { Appearance, Platform, StatusBar, useColorScheme } from "react-native";
5
- import NativeEdgeToEdgeModule from "./specs/NativeEdgeToEdgeModule";
5
+ import NativeModule from "./specs/NativeEdgeToEdgeModule";
6
6
  function getColorScheme() {
7
7
  return Appearance?.getColorScheme() ?? "light";
8
8
  }
9
+ function toNativeBarStyle(style) {
10
+ return style === "light" || style === "dark" ? `${style}-content` : "default";
11
+ }
9
12
 
10
13
  /**
11
14
  * Merges the entries stack.
12
15
  */
13
16
  function mergeEntriesStack(entriesStack) {
14
- const mergedEntry = entriesStack.reduce((prev, cur) => {
17
+ return entriesStack.reduce((prev, cur) => {
15
18
  for (const prop in cur) {
16
19
  if (cur[prop] != null) {
17
20
  // @ts-expect-error
@@ -21,15 +24,10 @@ function mergeEntriesStack(entriesStack) {
21
24
  return prev;
22
25
  }, {
23
26
  statusBarStyle: undefined,
24
- statusBarHidden: undefined,
25
27
  navigationBarStyle: undefined,
26
- navigationBarHidden: undefined
28
+ statusBarHidden: false,
29
+ navigationBarHidden: false
27
30
  });
28
- if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarStyle == null && mergedEntry.navigationBarHidden == null) {
29
- return null;
30
- } else {
31
- return mergedEntry;
32
- }
33
31
  }
34
32
 
35
33
  /**
@@ -38,8 +36,8 @@ function mergeEntriesStack(entriesStack) {
38
36
  function createStackEntry(props) {
39
37
  return {
40
38
  statusBarStyle: typeof props.style === "string" ? props.style : props.style?.statusBar,
41
- statusBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.statusBar,
42
39
  navigationBarStyle: typeof props.style === "string" ? props.style : props.style?.navigationBar,
40
+ statusBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.statusBar,
43
41
  navigationBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.navigationBar
44
42
  };
45
43
  }
@@ -49,7 +47,12 @@ const entriesStack = [];
49
47
  let updateImmediate = null;
50
48
 
51
49
  // The current merged values from the entries stack.
52
- let currentMergedEntries = null;
50
+ let currentMergedEntries = {
51
+ statusBarStyle: undefined,
52
+ navigationBarStyle: undefined,
53
+ statusBarHidden: false,
54
+ navigationBarHidden: false
55
+ };
53
56
 
54
57
  /**
55
58
  * Updates the native system bars with the entries from the stack.
@@ -60,42 +63,39 @@ function updateEntriesStack() {
60
63
  clearImmediate(updateImmediate);
61
64
  }
62
65
  updateImmediate = setImmediate(() => {
66
+ const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
63
67
  const mergedEntries = mergeEntriesStack(entriesStack);
64
- if (mergedEntries != null) {
65
- const {
66
- statusBarHidden,
67
- navigationBarHidden
68
- } = mergedEntries;
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) {
73
- if (Platform.OS === "android") {
74
- NativeEdgeToEdgeModule?.setSystemBarsConfig({
75
- statusBarStyle,
76
- statusBarHidden,
77
- navigationBarStyle,
78
- navigationBarHidden
79
- });
80
- } else {
81
- // Emulate android behavior with react-native StatusBar
82
- if (statusBarStyle != null) {
83
- StatusBar.setBarStyle(`${statusBarStyle}-content`, true);
84
- }
85
- if (statusBarHidden != null) {
86
- StatusBar.setHidden(statusBarHidden, "fade"); // 'slide' doesn't work in this context
87
- }
88
- }
68
+ const statusBarStyle = mergedEntries.statusBarStyle === "auto" ? autoBarStyle : mergedEntries.statusBarStyle;
69
+ const navigationBarStyle = mergedEntries.navigationBarStyle === "auto" ? autoBarStyle : mergedEntries.navigationBarStyle;
70
+ const {
71
+ statusBarHidden,
72
+ navigationBarHidden
73
+ } = mergedEntries;
74
+ if (statusBarStyle !== currentMergedEntries.statusBarStyle) {
75
+ const style = toNativeBarStyle(statusBarStyle);
76
+ console.log({
77
+ style
78
+ });
79
+ Platform.OS === "android" ? NativeModule?.setStatusBarStyle(style) : StatusBar.setBarStyle(style, true);
80
+ }
81
+ if (statusBarHidden !== currentMergedEntries.statusBarHidden) {
82
+ Platform.OS === "android" ? NativeModule?.setStatusBarHidden(statusBarHidden) : StatusBar.setHidden(statusBarHidden, "fade"); // 'slide' doesn't work in this context
83
+ }
84
+ if (Platform.OS === "android") {
85
+ if (navigationBarStyle !== currentMergedEntries.navigationBarStyle) {
86
+ const style = toNativeBarStyle(navigationBarStyle);
87
+ NativeModule?.setNavigationBarStyle(style);
88
+ }
89
+ if (navigationBarHidden !== currentMergedEntries.navigationBarHidden) {
90
+ NativeModule?.setNavigationBarHidden(navigationBarHidden);
89
91
  }
90
- currentMergedEntries = {
91
- statusBarStyle,
92
- statusBarHidden,
93
- navigationBarStyle,
94
- navigationBarHidden
95
- };
96
- } else {
97
- currentMergedEntries = null;
98
92
  }
93
+ currentMergedEntries = {
94
+ statusBarStyle,
95
+ navigationBarStyle,
96
+ statusBarHidden,
97
+ navigationBarHidden
98
+ };
99
99
  });
100
100
  }
101
101
  }
@@ -146,8 +146,8 @@ export function SystemBars({
146
146
  style
147
147
  }) {
148
148
  const statusBarStyle = typeof style === "string" ? style : style?.statusBar;
149
- const statusBarHidden = typeof hidden === "boolean" ? hidden : hidden?.statusBar;
150
149
  const navigationBarStyle = typeof style === "string" ? style : style?.navigationBar;
150
+ const statusBarHidden = typeof hidden === "boolean" ? hidden : hidden?.statusBar;
151
151
  const navigationBarHidden = typeof hidden === "boolean" ? hidden : hidden?.navigationBar;
152
152
  const stableProps = useMemo(() => ({
153
153
  style: statusBarStyle === navigationBarStyle ? statusBarStyle : {
@@ -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","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":[]}
1
+ {"version":3,"names":["useEffect","useMemo","useRef","Appearance","Platform","StatusBar","useColorScheme","NativeModule","getColorScheme","toNativeBarStyle","style","mergeEntriesStack","entriesStack","reduce","prev","cur","prop","statusBarStyle","undefined","navigationBarStyle","statusBarHidden","navigationBarHidden","createStackEntry","props","statusBar","navigationBar","hidden","updateImmediate","currentMergedEntries","updateEntriesStack","OS","clearImmediate","setImmediate","autoBarStyle","mergedEntries","console","log","setStatusBarStyle","setBarStyle","setStatusBarHidden","setHidden","setNavigationBarStyle","setNavigationBarHidden","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":[]}
@@ -38,14 +38,6 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
38
38
  if (style.item != null) {
39
39
  style.item = style.item.filter(item => !cleanupList.has(item.$.name));
40
40
  }
41
- if (enforceNavigationBarContrast === false) {
42
- style.item.push({
43
- $: {
44
- name: "enforceNavigationBarContrast"
45
- },
46
- _: String(false)
47
- });
48
- }
49
41
  if (statusBarStyle != null) {
50
42
  style.item.push({
51
43
  $: {
@@ -61,19 +53,27 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
61
53
  _: String(userInterfaceStyle === "light")
62
54
  });
63
55
  }
64
- if (navigationBarStyle != null) {
65
- style.item.push({
66
- $: {
67
- name: "android:windowLightNavigationBar"
68
- },
69
- _: String(navigationBarStyle === "dark-content")
70
- });
71
- } else if (userInterfaceStyle !== "automatic") {
56
+ if (enforceNavigationBarContrast === false) {
57
+ if (navigationBarStyle != null) {
58
+ style.item.push({
59
+ $: {
60
+ name: "android:windowLightNavigationBar"
61
+ },
62
+ _: String(navigationBarStyle === "dark-content")
63
+ });
64
+ } else if (userInterfaceStyle !== "automatic") {
65
+ style.item.push({
66
+ $: {
67
+ name: "android:windowLightNavigationBar"
68
+ },
69
+ _: String(navigationBarStyle === "light")
70
+ });
71
+ }
72
72
  style.item.push({
73
73
  $: {
74
- name: "android:windowLightNavigationBar"
74
+ name: "enforceNavigationBarContrast"
75
75
  },
76
- _: String(navigationBarStyle === "light")
76
+ _: String(false)
77
77
  });
78
78
  }
79
79
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createRunOncePlugin","withAndroidStyles","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","cleanupList","Set","androidNavigationBar","androidStatusBar","userInterfaceStyle","barStyle","navigationBarStyle","statusBarStyle","android","enforceNavigationBarContrast","parentTheme","modResults","resources","style","map","$","name","parent","item","filter","has","push","_","String"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createRunOncePlugin","withAndroidStyles","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","cleanupList","Set","androidNavigationBar","androidStatusBar","userInterfaceStyle","barStyle","navigationBarStyle","statusBarStyle","android","enforceNavigationBarContrast","parentTheme","modResults","resources","style","map","$","name","parent","item","filter","has","push","_","String"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { Appearance, TurboModuleRegistry } from "react-native";
4
- const NativeModule = TurboModuleRegistry.get("RNEdgeToEdge");
3
+ import { Appearance, Platform, TurboModuleRegistry } from "react-native";
4
+ const NativeModule = Platform.OS === "android" ? TurboModuleRegistry.getEnforcing("RNEdgeToEdge") : null;
5
5
  if (NativeModule != null) {
6
6
  Appearance.addChangeListener(() => {
7
7
  NativeModule.onColorSchemeChange();
@@ -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;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
+ {"version":3,"names":["Appearance","Platform","TurboModuleRegistry","NativeModule","OS","getEnforcing","addChangeListener","onColorSchemeChange"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;AACA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,mBAAmB,QAAQ,cAAc;AAYxE,MAAMC,YAAY,GAChBF,QAAQ,CAACG,EAAE,KAAK,SAAS,GACrBF,mBAAmB,CAACG,YAAY,CAAO,cAAc,CAAC,GACtD,IAAI;AAEV,IAAIF,YAAY,IAAI,IAAI,EAAE;EACxBH,UAAU,CAACM,iBAAiB,CAAC,MAAM;IACjCH,YAAY,CAACI,mBAAmB,CAAC,CAAC;EACpC,CAAC,CAAC;AACJ;AAEA,eAAeJ,YAAY","ignoreList":[]}
@@ -1,7 +1,4 @@
1
1
  "use strict";
2
2
 
3
- export default {
4
- onColorSchemeChange() {},
5
- setSystemBarsConfig() {}
6
- };
3
+ export default null;
7
4
  //# sourceMappingURL=NativeEdgeToEdgeModule.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["onColorSchemeChange","setSystemBarsConfig"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.web.ts"],"mappings":";;AAEA,eAAe;EACbA,mBAAmBA,CAAA,EAAG,CAAC,CAAC;EACxBC,mBAAmBA,CAAA,EAAG,CAAC;AACzB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.web.ts"],"mappings":";;AAAA,eAAe,IAAI","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;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
+ {"version":3,"file":"SystemBars.d.ts","sourceRoot":"","sources":["../../src/SystemBars.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAC;AA4L3E,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,13 +1,11 @@
1
1
  import type { TurboModule } from "react-native";
2
- type SystemBarsConfig = {
3
- statusBarHidden: boolean | undefined;
4
- statusBarStyle: string | undefined;
5
- navigationBarHidden: boolean | undefined;
6
- navigationBarStyle: string | undefined;
7
- };
8
- export interface Spec extends TurboModule {
2
+ type SystemBarStyle = "default" | "light-content" | "dark-content";
3
+ interface Spec extends TurboModule {
9
4
  onColorSchemeChange(): void;
10
- setSystemBarsConfig(config: SystemBarsConfig): void;
5
+ setStatusBarStyle(style: SystemBarStyle): void;
6
+ setNavigationBarStyle(style: SystemBarStyle): void;
7
+ setStatusBarHidden(hidden: boolean): void;
8
+ setNavigationBarHidden(hidden: boolean): void;
11
9
  }
12
10
  declare const NativeModule: Spec | null;
13
11
  export default NativeModule;
@@ -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;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
+ {"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,cAAc,GAAG,SAAS,GAAG,eAAe,GAAG,cAAc,CAAC;AAEnE,UAAU,IAAK,SAAQ,WAAW;IAChC,mBAAmB,IAAI,IAAI,CAAC;IAC5B,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/C,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACnD,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,YAAY,aAGR,CAAC;AAQX,eAAe,YAAY,CAAC"}
@@ -1,6 +1,3 @@
1
- declare const _default: {
2
- onColorSchemeChange(): void;
3
- setSystemBarsConfig(): void;
4
- };
1
+ declare const _default: null;
5
2
  export default _default;
6
3
  //# sourceMappingURL=NativeEdgeToEdgeModule.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativeEdgeToEdgeModule.web.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeEdgeToEdgeModule.web.ts"],"names":[],"mappings":";;;;AAEA,wBAGiB"}
1
+ {"version":3,"file":"NativeEdgeToEdgeModule.web.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeEdgeToEdgeModule.web.ts"],"names":[],"mappings":";AAAA,wBAAoB"}
@@ -4,10 +4,10 @@ type SystemBarsProp<T> = T | {
4
4
  };
5
5
  export type SystemBarStyle = "auto" | "light" | "dark";
6
6
  export type SystemBarsEntry = {
7
- statusBarHidden: boolean | undefined;
8
7
  statusBarStyle: SystemBarStyle | undefined;
9
- navigationBarHidden: boolean | undefined;
10
8
  navigationBarStyle: SystemBarStyle | undefined;
9
+ statusBarHidden: boolean | undefined;
10
+ navigationBarHidden: boolean | undefined;
11
11
  };
12
12
  export type SystemBarsProps = {
13
13
  style?: SystemBarsProp<SystemBarStyle>;
@@ -1 +1 @@
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"}
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,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,kBAAkB,EAAE,cAAc,GAAG,SAAS,CAAC;IAC/C,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C,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.4.1",
3
+ "version": "1.4.3-beta.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>",
@@ -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.77.0-rc.6",
66
+ "react-native": "0.77.0",
67
67
  "react-native-builder-bob": "^0.35.2",
68
68
  "typescript": "^5.7.2"
69
69
  },
package/src/SystemBars.ts CHANGED
@@ -1,19 +1,30 @@
1
1
  import { useEffect, useMemo, useRef } from "react";
2
2
  import { Appearance, Platform, StatusBar, useColorScheme } from "react-native";
3
- import NativeEdgeToEdgeModule from "./specs/NativeEdgeToEdgeModule";
4
- import { SystemBarsEntry, SystemBarsProps } from "./types";
3
+ import NativeModule from "./specs/NativeEdgeToEdgeModule";
4
+ import { SystemBarsEntry, SystemBarsProps, SystemBarStyle } from "./types";
5
+
6
+ type MergeableBarStyle = "light" | "dark" | undefined;
5
7
 
6
8
  function getColorScheme(): "light" | "dark" {
7
9
  return Appearance?.getColorScheme() ?? "light";
8
10
  }
9
11
 
12
+ function toNativeBarStyle(
13
+ style: MergeableBarStyle,
14
+ ): "default" | "light-content" | "dark-content" {
15
+ return style === "light" || style === "dark" ? `${style}-content` : "default";
16
+ }
17
+
10
18
  /**
11
19
  * Merges the entries stack.
12
20
  */
13
- function mergeEntriesStack(
14
- entriesStack: SystemBarsEntry[],
15
- ): SystemBarsEntry | null {
16
- const mergedEntry = entriesStack.reduce<SystemBarsEntry>(
21
+ function mergeEntriesStack(entriesStack: SystemBarsEntry[]) {
22
+ return entriesStack.reduce<{
23
+ statusBarStyle: SystemBarStyle | undefined;
24
+ navigationBarStyle: SystemBarStyle | undefined;
25
+ statusBarHidden: boolean;
26
+ navigationBarHidden: boolean;
27
+ }>(
17
28
  (prev, cur) => {
18
29
  for (const prop in cur) {
19
30
  if (cur[prop as keyof SystemBarsEntry] != null) {
@@ -25,22 +36,11 @@ function mergeEntriesStack(
25
36
  },
26
37
  {
27
38
  statusBarStyle: undefined,
28
- statusBarHidden: undefined,
29
39
  navigationBarStyle: undefined,
30
- navigationBarHidden: undefined,
40
+ statusBarHidden: false,
41
+ navigationBarHidden: false,
31
42
  },
32
43
  );
33
-
34
- if (
35
- mergedEntry.statusBarStyle == null &&
36
- mergedEntry.statusBarHidden == null &&
37
- mergedEntry.navigationBarStyle == null &&
38
- mergedEntry.navigationBarHidden == null
39
- ) {
40
- return null;
41
- } else {
42
- return mergedEntry;
43
- }
44
44
  }
45
45
 
46
46
  /**
@@ -50,14 +50,14 @@ function createStackEntry(props: SystemBarsProps): SystemBarsEntry {
50
50
  return {
51
51
  statusBarStyle:
52
52
  typeof props.style === "string" ? props.style : props.style?.statusBar,
53
- statusBarHidden:
54
- typeof props.hidden === "boolean"
55
- ? props.hidden
56
- : props.hidden?.statusBar,
57
53
  navigationBarStyle:
58
54
  typeof props.style === "string"
59
55
  ? props.style
60
56
  : props.style?.navigationBar,
57
+ statusBarHidden:
58
+ typeof props.hidden === "boolean"
59
+ ? props.hidden
60
+ : props.hidden?.statusBar,
61
61
  navigationBarHidden:
62
62
  typeof props.hidden === "boolean"
63
63
  ? props.hidden
@@ -72,11 +72,16 @@ let updateImmediate: NodeJS.Immediate | null = null;
72
72
 
73
73
  // The current merged values from the entries stack.
74
74
  let currentMergedEntries: {
75
- statusBarStyle: "light" | "dark" | undefined;
76
- statusBarHidden: boolean | undefined;
77
- navigationBarStyle: "light" | "dark" | undefined;
78
- navigationBarHidden: boolean | undefined;
79
- } | null = null;
75
+ statusBarStyle: MergeableBarStyle;
76
+ navigationBarStyle: MergeableBarStyle;
77
+ statusBarHidden: boolean;
78
+ navigationBarHidden: boolean;
79
+ } = {
80
+ statusBarStyle: undefined,
81
+ navigationBarStyle: undefined,
82
+ statusBarHidden: false,
83
+ navigationBarHidden: false,
84
+ };
80
85
 
81
86
  /**
82
87
  * Updates the native system bars with the entries from the stack.
@@ -88,55 +93,53 @@ function updateEntriesStack() {
88
93
  }
89
94
 
90
95
  updateImmediate = setImmediate(() => {
96
+ const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
91
97
  const mergedEntries = mergeEntriesStack(entriesStack);
92
98
 
93
- if (mergedEntries != null) {
94
- const { statusBarHidden, navigationBarHidden } = mergedEntries;
95
- const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
96
-
97
- const statusBarStyle: "light" | "dark" | undefined =
98
- mergedEntries.statusBarStyle === "auto"
99
- ? autoBarStyle
100
- : mergedEntries.statusBarStyle;
101
-
102
- const navigationBarStyle: "light" | "dark" | undefined =
103
- mergedEntries.navigationBarStyle === "auto"
104
- ? autoBarStyle
105
- : mergedEntries.navigationBarStyle;
106
-
107
- if (
108
- currentMergedEntries?.statusBarStyle !== statusBarStyle ||
109
- currentMergedEntries?.statusBarHidden !== statusBarHidden ||
110
- currentMergedEntries?.navigationBarStyle !== navigationBarStyle ||
111
- currentMergedEntries?.navigationBarHidden !== navigationBarHidden
112
- ) {
113
- if (Platform.OS === "android") {
114
- NativeEdgeToEdgeModule?.setSystemBarsConfig({
115
- statusBarStyle,
116
- statusBarHidden,
117
- navigationBarStyle,
118
- navigationBarHidden,
119
- });
120
- } else {
121
- // Emulate android behavior with react-native StatusBar
122
- if (statusBarStyle != null) {
123
- StatusBar.setBarStyle(`${statusBarStyle}-content`, true);
124
- }
125
- if (statusBarHidden != null) {
126
- StatusBar.setHidden(statusBarHidden, "fade"); // 'slide' doesn't work in this context
127
- }
128
- }
99
+ const statusBarStyle: MergeableBarStyle =
100
+ mergedEntries.statusBarStyle === "auto"
101
+ ? autoBarStyle
102
+ : mergedEntries.statusBarStyle;
103
+
104
+ const navigationBarStyle: MergeableBarStyle =
105
+ mergedEntries.navigationBarStyle === "auto"
106
+ ? autoBarStyle
107
+ : mergedEntries.navigationBarStyle;
108
+
109
+ const { statusBarHidden, navigationBarHidden } = mergedEntries;
110
+
111
+ if (statusBarStyle !== currentMergedEntries.statusBarStyle) {
112
+ const style = toNativeBarStyle(statusBarStyle);
113
+ console.log({ style });
114
+
115
+ Platform.OS === "android"
116
+ ? NativeModule?.setStatusBarStyle(style)
117
+ : StatusBar.setBarStyle(style, true);
118
+ }
119
+
120
+ if (statusBarHidden !== currentMergedEntries.statusBarHidden) {
121
+ Platform.OS === "android"
122
+ ? NativeModule?.setStatusBarHidden(statusBarHidden)
123
+ : StatusBar.setHidden(statusBarHidden, "fade"); // 'slide' doesn't work in this context
124
+ }
125
+
126
+ if (Platform.OS === "android") {
127
+ if (navigationBarStyle !== currentMergedEntries.navigationBarStyle) {
128
+ const style = toNativeBarStyle(navigationBarStyle);
129
+ NativeModule?.setNavigationBarStyle(style);
129
130
  }
130
131
 
131
- currentMergedEntries = {
132
- statusBarStyle,
133
- statusBarHidden,
134
- navigationBarStyle,
135
- navigationBarHidden,
136
- };
137
- } else {
138
- currentMergedEntries = null;
132
+ if (navigationBarHidden !== currentMergedEntries.navigationBarHidden) {
133
+ NativeModule?.setNavigationBarHidden(navigationBarHidden);
134
+ }
139
135
  }
136
+
137
+ currentMergedEntries = {
138
+ statusBarStyle,
139
+ navigationBarStyle,
140
+ statusBarHidden,
141
+ navigationBarHidden,
142
+ };
140
143
  });
141
144
  }
142
145
  }
@@ -188,10 +191,10 @@ function replaceStackEntry(
188
191
 
189
192
  export function SystemBars({ hidden, style }: SystemBarsProps) {
190
193
  const statusBarStyle = typeof style === "string" ? style : style?.statusBar;
191
- const statusBarHidden =
192
- typeof hidden === "boolean" ? hidden : hidden?.statusBar;
193
194
  const navigationBarStyle =
194
195
  typeof style === "string" ? style : style?.navigationBar;
196
+ const statusBarHidden =
197
+ typeof hidden === "boolean" ? hidden : hidden?.statusBar;
195
198
  const navigationBarHidden =
196
199
  typeof hidden === "boolean" ? hidden : hidden?.navigationBar;
197
200
 
package/src/expo.ts CHANGED
@@ -75,13 +75,6 @@ const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
75
75
  );
76
76
  }
77
77
 
78
- if (enforceNavigationBarContrast === false) {
79
- style.item.push({
80
- $: { name: "enforceNavigationBarContrast" },
81
- _: String(false),
82
- });
83
- }
84
-
85
78
  if (statusBarStyle != null) {
86
79
  style.item.push({
87
80
  $: { name: "android:windowLightStatusBar" },
@@ -94,15 +87,22 @@ const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
94
87
  });
95
88
  }
96
89
 
97
- if (navigationBarStyle != null) {
98
- style.item.push({
99
- $: { name: "android:windowLightNavigationBar" },
100
- _: String(navigationBarStyle === "dark-content"),
101
- });
102
- } else if (userInterfaceStyle !== "automatic") {
90
+ if (enforceNavigationBarContrast === false) {
91
+ if (navigationBarStyle != null) {
92
+ style.item.push({
93
+ $: { name: "android:windowLightNavigationBar" },
94
+ _: String(navigationBarStyle === "dark-content"),
95
+ });
96
+ } else if (userInterfaceStyle !== "automatic") {
97
+ style.item.push({
98
+ $: { name: "android:windowLightNavigationBar" },
99
+ _: String(navigationBarStyle === "light"),
100
+ });
101
+ }
102
+
103
103
  style.item.push({
104
- $: { name: "android:windowLightNavigationBar" },
105
- _: String(navigationBarStyle === "light"),
104
+ $: { name: "enforceNavigationBarContrast" },
105
+ _: String(false),
106
106
  });
107
107
  }
108
108
  }