react-native-navigation 8.1.0-alpha01 → 8.1.0-rc01-snapshot.1685

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 (185) hide show
  1. package/autolink/postlink/__snapshots__/appDelegateLinker.test.js.snap +12 -12
  2. package/index.e2e.js +2 -1
  3. package/lib/Mock/Components/ComponentScreen.tsx +2 -1
  4. package/lib/Mock/Components/LayoutComponent.tsx +9 -0
  5. package/lib/Mock/Components/SideMenu.tsx +27 -0
  6. package/lib/Mock/Layouts/BottomTabsNode.ts +4 -2
  7. package/lib/Mock/Layouts/LayoutNodeFactory.ts +14 -1
  8. package/lib/Mock/Layouts/ParentNode.ts +4 -0
  9. package/lib/Mock/Layouts/SideMenu.ts +87 -0
  10. package/lib/Mock/Stores/LayoutStore.ts +42 -10
  11. package/lib/Mock/actions/layoutActions.ts +11 -0
  12. package/lib/Mock/mocks/NativeCommandsSender.tsx +1 -0
  13. package/lib/android/app/build.gradle +22 -125
  14. package/lib/android/app/src/main/java/com/reactnativenavigation/FeatureToggles.kt +4 -2
  15. package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +2 -2
  16. package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java +1 -1
  17. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +4 -4
  18. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationPackage.kt +27 -13
  19. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationReactInitializer.java +2 -14
  20. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationTurboModule.kt +291 -0
  21. package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/ReactGateway.java +23 -23
  22. package/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java +6 -6
  23. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ColorUtils.java +11 -0
  24. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/MotionEvent.kt +4 -9
  25. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +12 -17
  26. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +0 -1
  27. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +20 -13
  28. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentPresenter.java +18 -0
  29. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +5 -17
  30. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +28 -13
  31. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +13 -6
  32. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +35 -2
  33. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/statusbar/StatusBarPresenter.kt +212 -0
  34. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +10 -178
  35. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/StatusBarColorAnimator.kt +28 -0
  36. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +34 -7
  37. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerVisibilityInfo.kt +5 -0
  38. package/lib/android/build.gradle +27 -15
  39. package/lib/dist/Mock/Components/ComponentScreen.js +2 -1
  40. package/lib/dist/Mock/Components/LayoutComponent.js +9 -0
  41. package/lib/dist/Mock/Components/SideMenu.d.ts +58 -0
  42. package/lib/dist/Mock/Components/SideMenu.js +25 -0
  43. package/lib/dist/Mock/Layouts/BottomTabsNode.d.ts +1 -1
  44. package/lib/dist/Mock/Layouts/BottomTabsNode.js +3 -2
  45. package/lib/dist/Mock/Layouts/LayoutNodeFactory.d.ts +2 -1
  46. package/lib/dist/Mock/Layouts/LayoutNodeFactory.js +10 -1
  47. package/lib/dist/Mock/Layouts/ParentNode.d.ts +1 -0
  48. package/lib/dist/Mock/Layouts/ParentNode.js +3 -0
  49. package/lib/dist/Mock/Layouts/SideMenu.d.ts +31 -0
  50. package/lib/dist/Mock/Layouts/SideMenu.js +80 -0
  51. package/lib/dist/Mock/Stores/LayoutStore.js +38 -9
  52. package/lib/dist/Mock/actions/layoutActions.d.ts +3 -0
  53. package/lib/dist/Mock/actions/layoutActions.js +11 -1
  54. package/lib/dist/Mock/mocks/NativeCommandsSender.js +1 -0
  55. package/lib/dist/src/adapters/NativeCommandsSender.d.ts +39 -4
  56. package/lib/dist/src/adapters/NativeCommandsSender.js +2 -2
  57. package/lib/dist/src/adapters/NativeRNNTurboEventEmitter.js +2 -9
  58. package/lib/dist/src/adapters/NativeRNNTurboModule.d.ts +9 -10
  59. package/lib/dist/src/adapters/NativeRNNTurboModule.js +1 -12
  60. package/lib/dist/src/commands/Commands.d.ts +13 -13
  61. package/lib/ios/AnimatedTextView.mm +1 -0
  62. package/lib/ios/Constants.mm +7 -1
  63. package/lib/ios/RNNAppDelegate.mm +3 -1
  64. package/lib/ios/RNNCommandsHandler.mm +1 -0
  65. package/lib/ios/RNNCustomTitleView.h +1 -0
  66. package/lib/ios/RNNCustomTitleView.mm +8 -1
  67. package/lib/ios/RNNEventEmitter.mm +3 -0
  68. package/lib/ios/RNNReactButtonView.mm +1 -1
  69. package/lib/ios/RNNReactView.h +3 -1
  70. package/lib/ios/RNNReactView.mm +45 -20
  71. package/lib/ios/TopBarTitlePresenter.mm +2 -0
  72. package/lib/ios/TurboModules/RNNTurboEventEmitter.mm +7 -0
  73. package/lib/ios/UINavigationController+RNNCommands.mm +4 -0
  74. package/lib/src/adapters/NativeCommandsSender.ts +7 -7
  75. package/lib/src/adapters/NativeRNNTurboEventEmitter.ts +3 -9
  76. package/lib/src/adapters/NativeRNNTurboModule.ts +23 -21
  77. package/package.json +14 -17
  78. package/react-native.config.js +1 -1
  79. package/lib/android/app/src/main/java/com/reactnativenavigation/react/DevPermissionRequest.java +0 -42
  80. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/statusbar/StatusBarController.kt +0 -9
  81. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/statusbar/StatusBarPresenter.kt +0 -9
  82. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
  83. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
  84. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
  85. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
  86. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
  87. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
  88. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
  89. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  90. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
  91. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  92. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
  93. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
  94. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
  95. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
  96. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
  97. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
  98. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
  99. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
  100. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  101. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
  102. package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  103. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
  104. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
  105. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
  106. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
  107. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
  108. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
  109. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
  110. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
  111. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  112. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
  113. package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  114. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
  115. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
  116. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
  117. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -70
  118. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
  119. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
  120. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -70
  121. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
  122. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  123. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
  124. package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  125. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
  126. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
  127. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
  128. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -70
  129. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
  130. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
  131. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
  132. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
  133. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  134. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
  135. package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  136. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
  137. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
  138. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
  139. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -67
  140. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
  141. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
  142. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
  143. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  144. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
  145. package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  146. package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
  147. package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -67
  148. package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
  149. package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
  150. package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
  151. package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  152. package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
  153. package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  154. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
  155. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
  156. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -66
  157. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
  158. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
  159. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
  160. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  161. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  162. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -38
  163. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
  164. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
  165. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -66
  166. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
  167. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
  168. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -87
  169. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
  170. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -12
  171. package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
  172. package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -38
  173. package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
  174. package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
  175. package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
  176. package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -12
  177. /package/lib/android/app/src/{reactNative63 → main}/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -0
  178. /package/lib/android/app/src/{reactNative62 → main}/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -0
  179. /package/lib/android/app/src/{reactNative62 → main}/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -0
  180. /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -0
  181. /package/lib/android/app/src/{reactNative51 → main}/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -0
  182. /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -0
  183. /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -0
  184. /package/lib/android/app/src/{reactNative63 → main}/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -0
  185. /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -0
@@ -1,9 +1,7 @@
1
1
  package com.reactnativenavigation.viewcontrollers.viewcontroller;
2
2
 
3
- import static com.reactnativenavigation.utils.StubAnimationListener.onAnimatorEnd;
3
+ import static com.reactnativenavigation.utils.ColorUtils.isColorLight;
4
4
 
5
- import android.animation.Animator;
6
- import android.animation.ValueAnimator;
7
5
  import android.app.Activity;
8
6
  import android.graphics.Color;
9
7
  import android.graphics.drawable.ColorDrawable;
@@ -12,44 +10,24 @@ import android.graphics.drawable.LayerDrawable;
12
10
  import android.view.View;
13
11
  import android.view.ViewGroup;
14
12
  import android.view.ViewGroup.MarginLayoutParams;
15
- import android.view.Window;
16
13
 
17
- import androidx.annotation.NonNull;
18
-
19
- import com.reactnativenavigation.RNNFeatureToggles;
20
- import com.reactnativenavigation.RNNToggles;
21
- import com.reactnativenavigation.options.AnimationOptions;
22
14
  import com.reactnativenavigation.options.NavigationBarOptions;
23
15
  import com.reactnativenavigation.options.Options;
24
16
  import com.reactnativenavigation.options.OrientationOptions;
25
17
  import com.reactnativenavigation.options.StatusBarOptions;
26
- import com.reactnativenavigation.options.StatusBarOptions.TextColorScheme;
27
18
  import com.reactnativenavigation.options.layout.LayoutInsets;
28
- import com.reactnativenavigation.options.params.Bool;
29
- import com.reactnativenavigation.options.params.ThemeColour;
30
19
  import com.reactnativenavigation.utils.SystemUiUtils;
31
20
  import com.reactnativenavigation.viewcontrollers.navigator.Navigator;
32
21
  import com.reactnativenavigation.viewcontrollers.parent.ParentController;
33
- import com.reactnativenavigation.viewcontrollers.stack.statusbar.StatusBarPresenter;
34
- import com.reactnativenavigation.views.animations.ColorAnimator;
35
-
36
- import org.jetbrains.annotations.NotNull;
37
- import org.jetbrains.annotations.Nullable;
22
+ import com.reactnativenavigation.viewcontrollers.statusbar.StatusBarPresenter;
38
23
 
39
- public class Presenter implements StatusBarPresenter {
24
+ public class Presenter {
40
25
  private final Activity activity;
41
- private final ColorAnimator colorAnimator;
42
26
 
43
27
  private Options defaultOptions;
44
- private Boolean hasPendingColorAnim = false;
45
28
 
46
29
  public Presenter(Activity activity, Options defaultOptions) {
47
- this(activity, defaultOptions, new ColorAnimator());
48
- }
49
-
50
- public Presenter(Activity activity, Options defaultOptions, ColorAnimator colorAnimator) {
51
30
  this.activity = activity;
52
- this.colorAnimator = colorAnimator;
53
31
  this.defaultOptions = defaultOptions;
54
32
  }
55
33
 
@@ -77,13 +55,13 @@ public class Presenter implements StatusBarPresenter {
77
55
  Options withDefaultOptions = options.copy().withDefaultOptions(defaultOptions);
78
56
  applyOrientation(withDefaultOptions.layout.orientation);
79
57
  applyViewOptions(view, withDefaultOptions);
80
- applyStatusBarOptions(view, withDefaultOptions);
58
+ applyStatusBarOptions(view, withDefaultOptions.statusBar);
81
59
  applyNavigationBarOptions(withDefaultOptions.navigationBar);
82
60
  }
83
61
 
84
62
  public void onViewBroughtToFront(ViewController<?> viewController, Options options) {
85
63
  Options withDefaultOptions = options.copy().withDefaultOptions(defaultOptions);
86
- applyStatusBarOptions(viewController, withDefaultOptions);
64
+ applyStatusBarOptions(viewController, withDefaultOptions.statusBar);
87
65
  }
88
66
 
89
67
  private void applyOrientation(OrientationOptions options) {
@@ -126,152 +104,12 @@ public class Presenter implements StatusBarPresenter {
126
104
  }
127
105
  }
128
106
 
129
- private void applyStatusBarOptions(ViewController viewController, Options options) {
130
- StatusBarOptions statusBar = options.copy().withDefaultOptions(defaultOptions).statusBar;
131
-
132
- if (!hasPendingColorAnim) {
133
- setStatusBarBackgroundColor(statusBar);
134
- }
135
- setTextColorScheme(statusBar);
136
- setTranslucent(statusBar);
137
- setStatusBarVisible(viewController, statusBar.visible);
138
- }
139
-
140
- @Nullable
141
- @Override
142
- public Animator getStatusBarPushAnimation(@NotNull Options appearingOptions) {
143
- StatusBarOptions statusBarOptions = appearingOptions.statusBar;
144
- return getStatusBarColorAnimation(statusBarOptions);
145
- }
146
-
147
- @androidx.annotation.Nullable
148
- @Override
149
- public Animator getStatusBarPopAnimation(@NonNull Options appearingOptions, @NonNull Options disappearingOptions) {
150
- StatusBarOptions statusBarOptions = appearingOptions.statusBar;
151
- return getStatusBarColorAnimation(statusBarOptions);
152
- }
153
-
154
- private Animator getStatusBarColorAnimation(StatusBarOptions statusBarOptions) {
155
- if (RNNFeatureToggles.isEnabled(RNNToggles.TOP_BAR_COLOR_ANIMATION)) {
156
- ThemeColour targetColor = statusBarOptions.backgroundColor;
157
-
158
- if (targetColor.hasValue()) {
159
- boolean translucent = statusBarOptions.translucent.isTrue();
160
- ValueAnimator animator = colorAnimator.getAnimation(
161
- getCurrentStatusBarBackgroundColor(),
162
- targetColor.get()
163
- );
164
-
165
- animator.addUpdateListener(animation ->
166
- setStatusBarBackgroundColor((int) animation.getAnimatedValue(), translucent));
167
-
168
- animator.addListener(onAnimatorEnd(animation -> {
169
- hasPendingColorAnim = false;
170
- return null;
171
- }));
172
-
173
- hasPendingColorAnim = true;
174
- return animator;
175
- }
176
- }
177
- hasPendingColorAnim = false;
178
- return null;
179
- }
180
-
181
- private void setTranslucent(StatusBarOptions options) {
182
- Window window = activity.getWindow();
183
- if (options.translucent.isTrue()) {
184
- SystemUiUtils.setStatusBarTranslucent(window);
185
- } else if (SystemUiUtils.isTranslucent(window)) {
186
- SystemUiUtils.clearStatusBarTranslucency(window);
187
- }
188
- }
189
-
190
- private void setStatusBarVisible(ViewController viewController, Bool visible) {
191
- final View view = viewController.view != null ? viewController.view : activity.getWindow().getDecorView();
192
- if (visible.isFalse()) {
193
- SystemUiUtils.hideStatusBar(activity.getWindow(), view);
194
- } else {
195
- SystemUiUtils.showStatusBar(activity.getWindow(), view);
196
- }
197
- }
198
-
199
- private void setStatusBarBackgroundColor(StatusBarOptions statusBar) {
200
- if (statusBar.backgroundColor.canApplyValue()) {
201
- final int statusBarBackgroundColor = getStatusBarBackgroundColor(statusBar);
202
- setStatusBarBackgroundColor(statusBarBackgroundColor, statusBar.translucent.isTrue());
203
- }
204
- }
205
-
206
- private void setStatusBarBackgroundColor(int color, Boolean translucent) {
207
- SystemUiUtils.setStatusBarColor(activity.getWindow(), color, translucent);
208
- }
209
-
210
- private boolean isDarkTextColorScheme(StatusBarOptions statusBar) {
211
- if (statusBar.textColorScheme == TextColorScheme.Dark) {
212
- return true;
213
- } else if (statusBar.textColorScheme == TextColorScheme.Light) {
214
- return false;
215
- }
216
-
217
- return isColorLight(getStatusBarBackgroundColor(statusBar));
107
+ private void applyStatusBarOptions(ViewController viewController, StatusBarOptions options) {
108
+ StatusBarPresenter.instance.applyOptions(viewController, options);
218
109
  }
219
110
 
220
- private int getStatusBarBackgroundColor(StatusBarOptions statusBar) {
221
- int defaultColor = statusBar.visible.isTrueOrUndefined() ? Color.BLACK : Color.TRANSPARENT;
222
- return statusBar.backgroundColor.get(defaultColor);
223
- }
224
-
225
- private int getCurrentStatusBarBackgroundColor() {
226
- return SystemUiUtils.getStatusBarColor(activity.getWindow());
227
- }
228
-
229
- private void setTextColorScheme(StatusBarOptions statusBar) {
230
- final View view = activity.getWindow().getDecorView();
231
- //View.post is a Workaround, added to solve internal Samsung
232
- //Android 9 issues. For more info see https://github.com/wix/react-native-navigation/pull/7231
233
- view.post(() -> {
234
- SystemUiUtils.setStatusBarColorScheme(activity.getWindow(), view, isDarkTextColorScheme(statusBar));
235
- });
236
- }
237
-
238
- private void mergeStatusBarOptions(View view, StatusBarOptions statusBar) {
239
- mergeStatusBarBackgroundColor(statusBar);
240
- mergeTextColorScheme(statusBar);
241
- mergeTranslucent(statusBar);
242
- mergeStatusBarVisible(view, statusBar.visible);
243
- }
244
-
245
- private void mergeStatusBarBackgroundColor(StatusBarOptions statusBar) {
246
- if (statusBar.backgroundColor.hasValue()) {
247
- final int statusBarBackgroundColor = getStatusBarBackgroundColor(statusBar);
248
- SystemUiUtils.setStatusBarColor(activity.getWindow(), statusBarBackgroundColor,
249
- statusBar.translucent.isTrue());
250
- }
251
- }
252
-
253
- private void mergeTextColorScheme(StatusBarOptions statusBar) {
254
- if (!statusBar.textColorScheme.hasValue()) return;
255
- setTextColorScheme(statusBar);
256
- }
257
-
258
- private void mergeTranslucent(StatusBarOptions options) {
259
- Window window = activity.getWindow();
260
- if (options.translucent.isTrue()) {
261
- SystemUiUtils.setStatusBarTranslucent(window);
262
- } else if (options.translucent.isFalse() && SystemUiUtils.isTranslucent(window)) {
263
- SystemUiUtils.clearStatusBarTranslucency(window);
264
- }
265
- }
266
-
267
- private void mergeStatusBarVisible(View view, Bool visible) {
268
- if (visible.hasValue()) {
269
- if (visible.isTrue()) {
270
- SystemUiUtils.showStatusBar(activity.getWindow(), view);
271
- } else {
272
- SystemUiUtils.hideStatusBar(activity.getWindow(), view);
273
- }
274
- }
111
+ private void mergeStatusBarOptions(View view, StatusBarOptions statusBarOptions) {
112
+ StatusBarPresenter.instance.mergeOptions(view, statusBarOptions);
275
113
  }
276
114
 
277
115
  private void applyNavigationBarOptions(NavigationBarOptions options) {
@@ -309,16 +147,10 @@ public class Presenter implements StatusBarPresenter {
309
147
  }
310
148
  }
311
149
 
312
- private boolean isColorLight(int color) {
313
- double darkness = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255;
314
- return darkness < 0.5;
315
- }
316
-
317
150
  public void onConfigurationChanged(ViewController controller, Options options) {
318
151
  Options withDefault = options.withDefaultOptions(defaultOptions);
319
152
  setNavigationBarBackgroundColor(withDefault.navigationBar);
320
- setStatusBarBackgroundColor(withDefault.statusBar);
321
- setTextColorScheme(withDefault.statusBar);
153
+ StatusBarPresenter.instance.onConfigurationChanged(withDefault.statusBar);
322
154
  applyBackgroundColor(controller, withDefault);
323
155
  }
324
156
  }
@@ -0,0 +1,28 @@
1
+ package com.reactnativenavigation.viewcontrollers.viewcontroller
2
+
3
+ import android.animation.ValueAnimator
4
+ import android.app.Activity
5
+ import com.reactnativenavigation.utils.ColorUtils
6
+ import com.reactnativenavigation.utils.SystemUiUtils
7
+ import com.reactnativenavigation.views.animations.ColorAnimator
8
+ import java.lang.ref.WeakReference
9
+
10
+ private const val STATUS_BAR_TRANSLUCENCY_ALPHA = (SystemUiUtils.STATUS_BAR_HEIGHT_TRANSLUCENCY * 255).toInt()
11
+
12
+ class StatusBarColorAnimator(val activity: Activity) {
13
+ private val colorAnimator = ColorAnimator()
14
+ private val window = WeakReference(activity.window)
15
+
16
+ fun getAnimator(from: Int, to: Int, isTranslucent: Boolean): ValueAnimator =
17
+ colorAnimator.getAnimation(
18
+ from = from,
19
+ to = embedTranslucency(to, isTranslucent)
20
+ ).apply {
21
+ addUpdateListener { animation ->
22
+ SystemUiUtils.setStatusBarColor(window.get(), animation.animatedValue as Int)
23
+ }
24
+ }
25
+
26
+ private fun embedTranslucency(color: Int, isTranslucent: Boolean): Int =
27
+ if (!isTranslucent) color else ColorUtils.setAlpha(color, STATUS_BAR_TRANSLUCENCY_ALPHA)
28
+ }
@@ -3,6 +3,7 @@ package com.reactnativenavigation.viewcontrollers.viewcontroller;
3
3
  import static com.reactnativenavigation.utils.CollectionUtils.forEach;
4
4
  import static com.reactnativenavigation.utils.ObjectUtils.perform;
5
5
 
6
+ import android.animation.Animator;
6
7
  import android.app.Activity;
7
8
  import android.content.res.Configuration;
8
9
  import android.view.View;
@@ -12,11 +13,11 @@ import android.view.ViewTreeObserver;
12
13
 
13
14
  import androidx.annotation.CallSuper;
14
15
  import androidx.annotation.CheckResult;
16
+ import androidx.annotation.NonNull;
15
17
  import androidx.annotation.Nullable;
16
18
  import androidx.annotation.VisibleForTesting;
17
19
  import androidx.coordinatorlayout.widget.CoordinatorLayout;
18
20
 
19
- import com.reactnativenavigation.BuildConfig;
20
21
  import com.reactnativenavigation.options.Options;
21
22
  import com.reactnativenavigation.options.params.Bool;
22
23
  import com.reactnativenavigation.options.params.NullBool;
@@ -27,7 +28,6 @@ import com.reactnativenavigation.utils.UiThread;
27
28
  import com.reactnativenavigation.utils.UiUtils;
28
29
  import com.reactnativenavigation.viewcontrollers.parent.ParentController;
29
30
  import com.reactnativenavigation.viewcontrollers.stack.StackController;
30
- import com.reactnativenavigation.viewcontrollers.stack.statusbar.StatusBarController;
31
31
  import com.reactnativenavigation.viewcontrollers.viewcontroller.overlay.ViewControllerOverlay;
32
32
  import com.reactnativenavigation.views.BehaviourAdapter;
33
33
  import com.reactnativenavigation.views.component.Component;
@@ -92,10 +92,6 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
92
92
  options = initialOptions.copy();
93
93
  }
94
94
 
95
- public StatusBarController getStatusBarController() {
96
- return null;
97
- }
98
-
99
95
  public void setWaitForRender(Bool waitForRender) {
100
96
  this.waitForRender = waitForRender;
101
97
  }
@@ -118,10 +114,34 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
118
114
 
119
115
  public abstract T createView();
120
116
 
117
+ public void onSelected(ViewController<?> previousVC) {
118
+ setVisible();
119
+ }
120
+
121
+ public void onDeselected() {
122
+ setInvisible();
123
+ }
124
+
125
+ public void setVisible() {
126
+ getView().setVisibility(View.VISIBLE);
127
+
128
+ onViewWillAppear();
129
+ onViewDidAppear();
130
+ }
131
+
132
+ public void setInvisible() {
133
+ getView().setVisibility(View.INVISIBLE);
134
+ }
135
+
121
136
  public void setViewVisibilityListener(ViewVisibilityListener viewVisibilityListener) {
122
137
  this.viewVisibilityListener = viewVisibilityListener;
123
138
  }
124
139
 
140
+ @NonNull
141
+ public ViewControllerVisibilityInfo getVisibilityInfo() {
142
+ return new ViewControllerVisibilityInfo(null);
143
+ }
144
+
125
145
  @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
126
146
  public void ensureViewIsCreated() {
127
147
  getView();
@@ -177,7 +197,6 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
177
197
  }
178
198
 
179
199
  public void setDefaultOptions(Options defaultOptions) {
180
-
181
200
  }
182
201
 
183
202
  public Activity getActivity() {
@@ -357,6 +376,14 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
357
376
 
358
377
  }
359
378
 
379
+ public Animator getPushAnimations(Options appearingOptions) {
380
+ return null;
381
+ }
382
+
383
+ public Animator getPopAnimations(Options appearingOptions, Options disappearingOptions) {
384
+ return null;
385
+ }
386
+
360
387
  protected void runOnPreDraw(Func1<T> task) {
361
388
  if (!isDestroyed) UiUtils.runOnPreDrawOnce(getView(), task);
362
389
  }
@@ -0,0 +1,5 @@
1
+ package com.reactnativenavigation.viewcontrollers.viewcontroller
2
+
3
+ data class TopBarVisibilityInfo(val isShown: Boolean, val solidColor: Int?)
4
+
5
+ data class ViewControllerVisibilityInfo(val topBarVisibilityInfo: TopBarVisibilityInfo?)
@@ -2,20 +2,25 @@
2
2
 
3
3
  buildscript {
4
4
  ext {
5
- RNNKotlinVersion = '1.4.31'
6
- appCompatVersion = '1.6.0-alpha05'
5
+ kotlinVersion = "1.9.24"
6
+ RNNKotlinVersion = kotlinVersion
7
+ detoxKotlinVersion = kotlinVersion
8
+ compileSdkVersion = 35
9
+ buildToolsVersion = "35.0.0"
10
+ minSdkVersion = 24
11
+ targetSdkVersion = 34
12
+ ndkVersion = "26.1.10909125"
7
13
  }
8
14
 
9
15
  repositories {
10
- mavenLocal()
11
- mavenCentral()
12
16
  google()
13
- jcenter()
17
+ mavenCentral()
14
18
  }
15
- dependencies {
16
- classpath 'com.android.tools.build:gradle:3.5.3'
17
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31"
18
19
 
20
+ dependencies {
21
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
22
+ classpath("com.facebook.react:react-native-gradle-plugin")
23
+ classpath 'com.android.tools.build:gradle'
19
24
  // NOTE: Do not place your application dependencies here; they belong
20
25
  // in the individual module build.gradle files
21
26
  }
@@ -23,13 +28,20 @@ buildscript {
23
28
 
24
29
  allprojects {
25
30
  repositories {
26
- mavenLocal()
27
- mavenCentral()
28
- google()
29
- jcenter()
30
- maven {
31
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
32
- url "$rootDir/../../node_modules/react-native/android"
31
+ maven { url "$rootDir/../../node_modules/detox/Detox-android" }
32
+ maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
33
+ flatDir {
34
+ dirs "$rootProject.projectDir/libs"
35
+ }
36
+ }
37
+ }
38
+
39
+ subprojects {
40
+ afterEvaluate { p ->
41
+ if (p.hasProperty('android')) {
42
+ android {
43
+ buildToolsVersion rootProject.ext.buildToolsVersion
44
+ }
33
45
  }
34
46
  }
35
47
  }
@@ -23,7 +23,8 @@ exports.ComponentScreen = (0, connect_1.connect)(class extends react_1.Component
23
23
  this.props.layoutNode.componentDidMount();
24
24
  }
25
25
  isVisible() {
26
- return LayoutStore_1.LayoutStore.isVisibleLayout(this.props.layoutNode);
26
+ const isVisible = LayoutStore_1.LayoutStore.isVisibleLayout(this.props.layoutNode);
27
+ return isVisible;
27
28
  }
28
29
  renderTabBar() {
29
30
  const bottomTabs = this.props.layoutNode.getBottomTabs();
@@ -7,6 +7,7 @@ const react_native_1 = require("react-native");
7
7
  const BottomTabs_1 = require("./BottomTabs");
8
8
  const ComponentScreen_1 = require("./ComponentScreen");
9
9
  const Stack_1 = require("./Stack");
10
+ const SideMenu_1 = require("./SideMenu");
10
11
  const LayoutComponent = class extends react_1.Component {
11
12
  render() {
12
13
  switch (this.props.layoutNode.type) {
@@ -16,6 +17,14 @@ const LayoutComponent = class extends react_1.Component {
16
17
  return react_1.default.createElement(Stack_1.Stack, { layoutNode: this.props.layoutNode });
17
18
  case 'Component':
18
19
  return react_1.default.createElement(ComponentScreen_1.ComponentScreen, { layoutNode: this.props.layoutNode });
20
+ case 'SideMenuRoot':
21
+ return react_1.default.createElement(SideMenu_1.SideMenuRoot, { layoutNode: this.props.layoutNode });
22
+ case 'SideMenuLeft':
23
+ return react_1.default.createElement(SideMenu_1.SideMenuLeft, { layoutNode: this.props.layoutNode });
24
+ case 'SideMenuCenter':
25
+ return react_1.default.createElement(SideMenu_1.SideMenuCenter, { layoutNode: this.props.layoutNode });
26
+ case 'SideMenuRight':
27
+ return react_1.default.createElement(SideMenu_1.SideMenuRight, { layoutNode: this.props.layoutNode });
19
28
  }
20
29
  return react_1.default.createElement(react_native_1.View, null);
21
30
  }
@@ -0,0 +1,58 @@
1
+ import React, { Component } from 'react';
2
+ import { ComponentProps } from '../ComponentProps';
3
+ export declare const SideMenuRoot: {
4
+ new (props: ComponentProps): {
5
+ render(): React.JSX.Element[];
6
+ context: unknown;
7
+ setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<ComponentProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
8
+ forceUpdate(callback?: (() => void) | undefined): void;
9
+ readonly props: Readonly<ComponentProps>;
10
+ state: Readonly<{}>;
11
+ refs: {
12
+ [key: string]: React.ReactInstance;
13
+ };
14
+ componentDidMount?(): void;
15
+ shouldComponentUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): boolean;
16
+ componentWillUnmount?(): void;
17
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
18
+ getSnapshotBeforeUpdate?(prevProps: Readonly<ComponentProps>, prevState: Readonly<{}>): any;
19
+ componentDidUpdate?(prevProps: Readonly<ComponentProps>, prevState: Readonly<{}>, snapshot?: any): void;
20
+ componentWillMount?(): void;
21
+ UNSAFE_componentWillMount?(): void;
22
+ componentWillReceiveProps?(nextProps: Readonly<ComponentProps>, nextContext: any): void;
23
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<ComponentProps>, nextContext: any): void;
24
+ componentWillUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): void;
25
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): void;
26
+ };
27
+ new (props: ComponentProps, context: any): {
28
+ render(): React.JSX.Element[];
29
+ context: unknown;
30
+ setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<ComponentProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
31
+ forceUpdate(callback?: (() => void) | undefined): void;
32
+ readonly props: Readonly<ComponentProps>;
33
+ state: Readonly<{}>;
34
+ refs: {
35
+ [key: string]: React.ReactInstance;
36
+ };
37
+ componentDidMount?(): void;
38
+ shouldComponentUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): boolean;
39
+ componentWillUnmount?(): void;
40
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
41
+ getSnapshotBeforeUpdate?(prevProps: Readonly<ComponentProps>, prevState: Readonly<{}>): any;
42
+ componentDidUpdate?(prevProps: Readonly<ComponentProps>, prevState: Readonly<{}>, snapshot?: any): void;
43
+ componentWillMount?(): void;
44
+ UNSAFE_componentWillMount?(): void;
45
+ componentWillReceiveProps?(nextProps: Readonly<ComponentProps>, nextContext: any): void;
46
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<ComponentProps>, nextContext: any): void;
47
+ componentWillUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): void;
48
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): void;
49
+ };
50
+ contextType?: React.Context<any> | undefined;
51
+ };
52
+ declare class SideMenuComponent extends Component<ComponentProps> {
53
+ render(): React.JSX.Element;
54
+ }
55
+ export declare const SideMenuLeft: typeof SideMenuComponent;
56
+ export declare const SideMenuCenter: typeof SideMenuComponent;
57
+ export declare const SideMenuRight: typeof SideMenuComponent;
58
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenuRight = exports.SideMenuCenter = exports.SideMenuLeft = exports.SideMenuRoot = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const connect_1 = require("../connect");
7
+ const LayoutComponent_1 = require("./LayoutComponent");
8
+ exports.SideMenuRoot = (0, connect_1.connect)(class extends react_1.Component {
9
+ render() {
10
+ const children = this.props.layoutNode.children;
11
+ return children.map((child) => {
12
+ return react_1.default.createElement(LayoutComponent_1.LayoutComponent, { key: child.nodeId, layoutNode: child });
13
+ });
14
+ }
15
+ });
16
+ class SideMenuComponent extends react_1.Component {
17
+ render() {
18
+ const children = this.props.layoutNode.children;
19
+ const component = children[0];
20
+ return react_1.default.createElement(LayoutComponent_1.LayoutComponent, { key: component.nodeId, layoutNode: component });
21
+ }
22
+ }
23
+ exports.SideMenuLeft = (0, connect_1.connect)(SideMenuComponent);
24
+ exports.SideMenuCenter = (0, connect_1.connect)(SideMenuComponent);
25
+ exports.SideMenuRight = (0, connect_1.connect)(SideMenuComponent);
@@ -3,6 +3,6 @@ import ParentNode from './ParentNode';
3
3
  export default class BottomTabsNode extends ParentNode {
4
4
  selectedIndex: number;
5
5
  constructor(layout: any, parentNode?: ParentNode);
6
- mergeOptions(options: Options): void;
6
+ mergeOptions(_options: Options): void;
7
7
  getVisibleLayout(): import("./ComponentNode").default;
8
8
  }
@@ -10,8 +10,9 @@ class BottomTabsNode extends ParentNode_1.default {
10
10
  super(layout, 'BottomTabs', parentNode);
11
11
  this.selectedIndex = layout.data?.options?.bottomTabs?.currentTabIndex || 0;
12
12
  }
13
- mergeOptions(options) {
14
- super.mergeOptions(options);
13
+ mergeOptions(_options) {
14
+ super.mergeOptions(_options);
15
+ const { options } = this.data;
15
16
  if (options.bottomTabs?.currentTabIndex) {
16
17
  this.selectedIndex = options.bottomTabs?.currentTabIndex;
17
18
  (0, layoutActions_1.switchTabByIndex)(this, this.selectedIndex);
@@ -2,6 +2,7 @@ import BottomTabs from './BottomTabsNode';
2
2
  import ComponentNode from './ComponentNode';
3
3
  import Stack from './StackNode';
4
4
  import ParentNode from './ParentNode';
5
+ import SideMenuRootNode, { SideMenuLeftNode, SideMenuRightNode, SideMenuCenterNode } from './SideMenu';
5
6
  export default class LayoutNodeFactory {
6
- static create(layout: any, parentNode?: ParentNode): Stack | BottomTabs | ComponentNode;
7
+ static create(layout: any, parentNode?: ParentNode): ComponentNode | SideMenuRootNode | SideMenuLeftNode | SideMenuRightNode | SideMenuCenterNode | Stack | BottomTabs;
7
8
  }
@@ -4,6 +4,7 @@ const tslib_1 = require("tslib");
4
4
  const BottomTabsNode_1 = tslib_1.__importDefault(require("./BottomTabsNode"));
5
5
  const ComponentNode_1 = tslib_1.__importDefault(require("./ComponentNode"));
6
6
  const StackNode_1 = tslib_1.__importDefault(require("./StackNode"));
7
+ const SideMenu_1 = tslib_1.__importStar(require("./SideMenu"));
7
8
  class LayoutNodeFactory {
8
9
  static create(layout, parentNode) {
9
10
  switch (layout.type) {
@@ -11,7 +12,15 @@ class LayoutNodeFactory {
11
12
  return new ComponentNode_1.default(layout, parentNode);
12
13
  case 'Stack':
13
14
  return new StackNode_1.default(layout, parentNode);
14
- default:
15
+ case 'SideMenuRoot':
16
+ return new SideMenu_1.default(layout, parentNode);
17
+ case 'SideMenuLeft':
18
+ return new SideMenu_1.SideMenuLeftNode(layout, parentNode);
19
+ case 'SideMenuCenter':
20
+ return new SideMenu_1.SideMenuCenterNode(layout, parentNode);
21
+ case 'SideMenuRight':
22
+ return new SideMenu_1.SideMenuRightNode(layout, parentNode);
23
+ default: // TODO Undo
15
24
  case 'BottomTabs':
16
25
  return new BottomTabsNode_1.default(layout, parentNode);
17
26
  }
@@ -10,6 +10,7 @@ export default class ParentNode extends Node {
10
10
  componentDidDisappear(): void;
11
11
  getVisibleLayout(): ComponentNode;
12
12
  getTopParent(): Node;
13
+ applyOptions(_options: Options): void;
13
14
  mergeOptions(options: Options): void;
14
15
  buttonsChanged(_oldButtons: OptionsTopBarButton[], _newButtons: OptionsTopBarButton[]): void;
15
16
  titleChanged(_oldComponent: any, _newComponent: any): void;
@@ -26,6 +26,9 @@ class ParentNode extends Node_1.default {
26
26
  return this.parentNode.getTopParent();
27
27
  return this;
28
28
  }
29
+ applyOptions(_options) {
30
+ this.parentNode?.applyOptions(_options);
31
+ }
29
32
  mergeOptions(options) {
30
33
  this.data.options = lodash_1.default.mergeWith(this.data.options, options, (objValue, srcValue, key) => {
31
34
  if (lodash_1.default.isArray(objValue)) {
@@ -0,0 +1,31 @@
1
+ import ParentNode from './ParentNode';
2
+ import ComponentNode from './ComponentNode';
3
+ import { Options } from '../../src/index';
4
+ import { NodeType } from './Node';
5
+ export default class SideMenuRootNode extends ParentNode {
6
+ visibleChild: ParentNode;
7
+ constructor(layout: any, parentNode?: ParentNode);
8
+ applyOptions(_options: Options): void;
9
+ mergeOptions(options: Options): void;
10
+ /**
11
+ * @override
12
+ */
13
+ getVisibleLayout(): ComponentNode;
14
+ _updateVisibility(options: Options): void;
15
+ _getCenterChild: () => ParentNode;
16
+ _getLeftChild: () => ParentNode;
17
+ _getRightChild: () => ParentNode;
18
+ }
19
+ export declare class SideMenuNode extends ParentNode {
20
+ constructor(layout: any, type: NodeType, parentNode?: ParentNode);
21
+ getVisibleLayout(): ComponentNode;
22
+ }
23
+ export declare class SideMenuLeftNode extends SideMenuNode {
24
+ constructor(layout: any, parentNode?: ParentNode);
25
+ }
26
+ export declare class SideMenuRightNode extends SideMenuNode {
27
+ constructor(layout: any, parentNode?: ParentNode);
28
+ }
29
+ export declare class SideMenuCenterNode extends SideMenuNode {
30
+ constructor(layout: any, parentNode?: ParentNode);
31
+ }