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.
- package/autolink/postlink/__snapshots__/appDelegateLinker.test.js.snap +12 -12
- package/index.e2e.js +2 -1
- package/lib/Mock/Components/ComponentScreen.tsx +2 -1
- package/lib/Mock/Components/LayoutComponent.tsx +9 -0
- package/lib/Mock/Components/SideMenu.tsx +27 -0
- package/lib/Mock/Layouts/BottomTabsNode.ts +4 -2
- package/lib/Mock/Layouts/LayoutNodeFactory.ts +14 -1
- package/lib/Mock/Layouts/ParentNode.ts +4 -0
- package/lib/Mock/Layouts/SideMenu.ts +87 -0
- package/lib/Mock/Stores/LayoutStore.ts +42 -10
- package/lib/Mock/actions/layoutActions.ts +11 -0
- package/lib/Mock/mocks/NativeCommandsSender.tsx +1 -0
- package/lib/android/app/build.gradle +22 -125
- package/lib/android/app/src/main/java/com/reactnativenavigation/FeatureToggles.kt +4 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +4 -4
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationPackage.kt +27 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationReactInitializer.java +2 -14
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationTurboModule.kt +291 -0
- package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/ReactGateway.java +23 -23
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java +6 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ColorUtils.java +11 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/MotionEvent.kt +4 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +12 -17
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +20 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentPresenter.java +18 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +5 -17
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +28 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +13 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +35 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/statusbar/StatusBarPresenter.kt +212 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +10 -178
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/StatusBarColorAnimator.kt +28 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +34 -7
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerVisibilityInfo.kt +5 -0
- package/lib/android/build.gradle +27 -15
- package/lib/dist/Mock/Components/ComponentScreen.js +2 -1
- package/lib/dist/Mock/Components/LayoutComponent.js +9 -0
- package/lib/dist/Mock/Components/SideMenu.d.ts +58 -0
- package/lib/dist/Mock/Components/SideMenu.js +25 -0
- package/lib/dist/Mock/Layouts/BottomTabsNode.d.ts +1 -1
- package/lib/dist/Mock/Layouts/BottomTabsNode.js +3 -2
- package/lib/dist/Mock/Layouts/LayoutNodeFactory.d.ts +2 -1
- package/lib/dist/Mock/Layouts/LayoutNodeFactory.js +10 -1
- package/lib/dist/Mock/Layouts/ParentNode.d.ts +1 -0
- package/lib/dist/Mock/Layouts/ParentNode.js +3 -0
- package/lib/dist/Mock/Layouts/SideMenu.d.ts +31 -0
- package/lib/dist/Mock/Layouts/SideMenu.js +80 -0
- package/lib/dist/Mock/Stores/LayoutStore.js +38 -9
- package/lib/dist/Mock/actions/layoutActions.d.ts +3 -0
- package/lib/dist/Mock/actions/layoutActions.js +11 -1
- package/lib/dist/Mock/mocks/NativeCommandsSender.js +1 -0
- package/lib/dist/src/adapters/NativeCommandsSender.d.ts +39 -4
- package/lib/dist/src/adapters/NativeCommandsSender.js +2 -2
- package/lib/dist/src/adapters/NativeRNNTurboEventEmitter.js +2 -9
- package/lib/dist/src/adapters/NativeRNNTurboModule.d.ts +9 -10
- package/lib/dist/src/adapters/NativeRNNTurboModule.js +1 -12
- package/lib/dist/src/commands/Commands.d.ts +13 -13
- package/lib/ios/AnimatedTextView.mm +1 -0
- package/lib/ios/Constants.mm +7 -1
- package/lib/ios/RNNAppDelegate.mm +3 -1
- package/lib/ios/RNNCommandsHandler.mm +1 -0
- package/lib/ios/RNNCustomTitleView.h +1 -0
- package/lib/ios/RNNCustomTitleView.mm +8 -1
- package/lib/ios/RNNEventEmitter.mm +3 -0
- package/lib/ios/RNNReactButtonView.mm +1 -1
- package/lib/ios/RNNReactView.h +3 -1
- package/lib/ios/RNNReactView.mm +45 -20
- package/lib/ios/TopBarTitlePresenter.mm +2 -0
- package/lib/ios/TurboModules/RNNTurboEventEmitter.mm +7 -0
- package/lib/ios/UINavigationController+RNNCommands.mm +4 -0
- package/lib/src/adapters/NativeCommandsSender.ts +7 -7
- package/lib/src/adapters/NativeRNNTurboEventEmitter.ts +3 -9
- package/lib/src/adapters/NativeRNNTurboModule.ts +23 -21
- package/package.json +14 -17
- package/react-native.config.js +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/DevPermissionRequest.java +0 -42
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/statusbar/StatusBarController.kt +0 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/statusbar/StatusBarPresenter.kt +0 -9
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -70
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -67
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -67
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -66
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -38
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -66
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -87
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -12
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -38
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -12
- /package/lib/android/app/src/{reactNative63 → main}/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -0
- /package/lib/android/app/src/{reactNative62 → main}/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -0
- /package/lib/android/app/src/{reactNative62 → main}/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -0
- /package/lib/android/app/src/{reactNative51 → main}/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -0
- /package/lib/android/app/src/{reactNative63 → main}/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -0
|
@@ -53,7 +53,7 @@ public abstract class NavigationApplication extends Application implements React
|
|
|
53
53
|
* @return a singleton {@link ReactGateway}
|
|
54
54
|
*/
|
|
55
55
|
protected ReactGateway createReactGateway() {
|
|
56
|
-
return new ReactGateway(getReactHost()
|
|
56
|
+
return new ReactGateway(getReactHost());
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
public ReactGateway getReactGateway() {
|
|
@@ -51,8 +51,8 @@ import static com.reactnativenavigation.utils.CollectionUtils.*;
|
|
|
51
51
|
import org.json.JSONObject;
|
|
52
52
|
|
|
53
53
|
public class LayoutFactory {
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
private final ReactHost reactHost;
|
|
55
|
+
private Activity activity;
|
|
56
56
|
private ChildControllersRegistry childRegistry;
|
|
57
57
|
private EventEmitter eventEmitter;
|
|
58
58
|
private Map<String, ExternalComponentCreator> externalComponentCreators;
|
|
@@ -60,8 +60,8 @@ public class LayoutFactory {
|
|
|
60
60
|
private TypefaceLoader typefaceManager;
|
|
61
61
|
|
|
62
62
|
public LayoutFactory(ReactHost reactHost) {
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
this.reactHost = reactHost;
|
|
64
|
+
}
|
|
65
65
|
|
|
66
66
|
public void setDefaultOptions(@NonNull Options defaultOptions) {
|
|
67
67
|
Assertions.assertNotNull(defaultOptions);
|
|
@@ -1,27 +1,41 @@
|
|
|
1
1
|
package com.reactnativenavigation.react
|
|
2
2
|
|
|
3
|
+
import com.facebook.react.BaseReactPackage
|
|
3
4
|
import com.facebook.react.ReactApplication
|
|
4
|
-
import com.facebook.react.ReactHost
|
|
5
|
-
import com.facebook.react.ReactPackage
|
|
6
5
|
import com.facebook.react.bridge.NativeModule
|
|
7
6
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
7
|
+
import com.facebook.react.module.model.ReactModuleInfo
|
|
8
|
+
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
8
9
|
import com.facebook.react.uimanager.ViewManager
|
|
9
10
|
import com.reactnativenavigation.options.LayoutFactory
|
|
10
11
|
import com.reactnativenavigation.react.modal.ModalViewManager
|
|
11
12
|
|
|
12
|
-
class NavigationPackage() :
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
LayoutFactory(reactApp.reactHost)
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
class NavigationPackage() : BaseReactPackage() {
|
|
14
|
+
|
|
15
|
+
override fun getModule(name: String, context: ReactApplicationContext): NativeModule? {
|
|
16
|
+
val reactApp = context.applicationContext as ReactApplication
|
|
17
|
+
return when (name) {
|
|
18
|
+
NavigationTurboModule.NAME -> {
|
|
19
|
+
NavigationTurboModule(context, LayoutFactory(reactApp.reactHost))
|
|
20
|
+
}
|
|
21
|
+
else -> {
|
|
22
|
+
null
|
|
23
|
+
}
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
|
|
23
|
-
override fun
|
|
27
|
+
override fun getReactModuleInfoProvider() = ReactModuleInfoProvider {
|
|
28
|
+
mapOf(NavigationTurboModule.NAME to ReactModuleInfo(
|
|
29
|
+
name = NavigationTurboModule.NAME,
|
|
30
|
+
className = NavigationTurboModule.NAME,
|
|
31
|
+
canOverrideExistingModule = false,
|
|
32
|
+
needsEagerInit = false,
|
|
33
|
+
isCxxModule = false,
|
|
34
|
+
isTurboModule = true
|
|
35
|
+
))
|
|
36
|
+
}
|
|
24
37
|
|
|
25
|
-
|
|
38
|
+
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
39
|
+
return mutableListOf(ModalViewManager(reactContext))
|
|
26
40
|
}
|
|
27
41
|
}
|
|
@@ -11,13 +11,11 @@ import androidx.annotation.NonNull;
|
|
|
11
11
|
public class NavigationReactInitializer implements ReactInstanceManager.ReactInstanceEventListener {
|
|
12
12
|
|
|
13
13
|
private final ReactHost reactHost;
|
|
14
|
-
private final DevPermissionRequest devPermissionRequest;
|
|
15
14
|
private boolean waitingForAppLaunchEvent = true;
|
|
16
15
|
private boolean isActivityReadyForUi = false;
|
|
17
16
|
|
|
18
|
-
NavigationReactInitializer(ReactHost reactHost
|
|
17
|
+
NavigationReactInitializer(ReactHost reactHost) {
|
|
19
18
|
this.reactHost = reactHost;
|
|
20
|
-
this.devPermissionRequest = new DevPermissionRequest(isDebug);
|
|
21
19
|
}
|
|
22
20
|
|
|
23
21
|
void onActivityCreated() {
|
|
@@ -26,33 +24,23 @@ public class NavigationReactInitializer implements ReactInstanceManager.ReactIns
|
|
|
26
24
|
}
|
|
27
25
|
|
|
28
26
|
void onActivityResumed(NavigationActivity activity) {
|
|
29
|
-
|
|
30
|
-
devPermissionRequest.askPermission(activity);
|
|
31
|
-
} else {
|
|
27
|
+
|
|
32
28
|
reactHost.onHostResume(activity, activity);
|
|
33
29
|
isActivityReadyForUi = true;
|
|
34
30
|
prepareReactApp();
|
|
35
|
-
}
|
|
36
31
|
}
|
|
37
32
|
|
|
38
33
|
void onActivityPaused(NavigationActivity activity) {
|
|
39
34
|
isActivityReadyForUi = false;
|
|
40
|
-
// TODO: Check it needed
|
|
41
|
-
//if (reactHost.hasStartedCreatingInitialContext()) {
|
|
42
35
|
reactHost.onHostPause(activity);
|
|
43
|
-
//}
|
|
44
36
|
}
|
|
45
37
|
|
|
46
38
|
void onActivityDestroyed(NavigationActivity activity) {
|
|
47
39
|
reactHost.removeReactInstanceEventListener(this);
|
|
48
|
-
//if (reactHost.gehasStartedCreatingInitialContext()) {
|
|
49
40
|
reactHost.onHostDestroy(activity);
|
|
50
|
-
//}
|
|
51
41
|
}
|
|
52
42
|
|
|
53
43
|
private void prepareReactApp() {
|
|
54
|
-
// TODO: Check if needed
|
|
55
|
-
//if (shouldCreateContext()) {
|
|
56
44
|
reactHost.start();
|
|
57
45
|
if (waitingForAppLaunchEvent) {
|
|
58
46
|
if (reactHost.getCurrentReactContext() != null) {
|
package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationTurboModule.kt
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
package com.reactnativenavigation.react
|
|
2
|
+
|
|
3
|
+
import android.util.Log
|
|
4
|
+
import com.facebook.react.bridge.Promise
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.bridge.ReadableArray
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap
|
|
8
|
+
import com.reactnativenavigation.NavigationActivity
|
|
9
|
+
import com.reactnativenavigation.NavigationApplication
|
|
10
|
+
import com.reactnativenavigation.options.LayoutFactory
|
|
11
|
+
import com.reactnativenavigation.options.Options
|
|
12
|
+
import com.reactnativenavigation.options.parsers.JSONParser
|
|
13
|
+
import com.reactnativenavigation.options.parsers.LayoutNodeParser
|
|
14
|
+
import com.reactnativenavigation.options.parsers.TypefaceLoader
|
|
15
|
+
import com.reactnativenavigation.react.events.EventEmitter
|
|
16
|
+
import com.reactnativenavigation.utils.LaunchArgsParser
|
|
17
|
+
import com.reactnativenavigation.utils.Now
|
|
18
|
+
import com.reactnativenavigation.utils.SystemUiUtils.getStatusBarHeight
|
|
19
|
+
import com.reactnativenavigation.utils.UiThread
|
|
20
|
+
import com.reactnativenavigation.utils.UiUtils
|
|
21
|
+
import com.reactnativenavigation.viewcontrollers.navigator.Navigator
|
|
22
|
+
import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController
|
|
23
|
+
import java.util.Objects
|
|
24
|
+
|
|
25
|
+
class NavigationTurboModule(
|
|
26
|
+
reactContext: ReactApplicationContext,
|
|
27
|
+
private val layoutFactory: LayoutFactory
|
|
28
|
+
) : NativeRNNTurboModuleSpec(reactContext) {
|
|
29
|
+
|
|
30
|
+
private val now = Now()
|
|
31
|
+
private val jsonParser: JSONParser = JSONParser()
|
|
32
|
+
private lateinit var eventEmitter: EventEmitter
|
|
33
|
+
|
|
34
|
+
init {
|
|
35
|
+
reactContext.addLifecycleEventListener(object : LifecycleEventListenerAdapter() {
|
|
36
|
+
override fun onHostPause() {
|
|
37
|
+
super.onHostPause()
|
|
38
|
+
UiUtils.runOnMainThread {
|
|
39
|
+
navigator().onHostPause()
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
override fun onHostResume() {
|
|
44
|
+
eventEmitter = EventEmitter(reactContext)
|
|
45
|
+
navigator().setEventEmitter(eventEmitter)
|
|
46
|
+
layoutFactory.init(
|
|
47
|
+
activity(),
|
|
48
|
+
eventEmitter,
|
|
49
|
+
navigator().getChildRegistry(),
|
|
50
|
+
(activity().application as NavigationApplication).externalComponents
|
|
51
|
+
)
|
|
52
|
+
UiUtils.runOnMainThread { navigator().onHostResume() }
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
override fun getTypedExportedConstants(): MutableMap<String, Any> {
|
|
58
|
+
val constants = mutableMapOf<String, Any>()
|
|
59
|
+
constants[Constants.BACK_BUTTON_JS_KEY] = Constants.BACK_BUTTON_ID
|
|
60
|
+
constants[Constants.BOTTOM_TABS_HEIGHT_KEY] =
|
|
61
|
+
UiUtils.pxToDp(
|
|
62
|
+
reactApplicationContext,
|
|
63
|
+
UiUtils.getBottomTabsHeight(reactApplicationContext).toFloat()
|
|
64
|
+
).toDouble()
|
|
65
|
+
constants[Constants.STATUS_BAR_HEIGHT_KEY] =
|
|
66
|
+
UiUtils.pxToDp(reactApplicationContext, getStatusBarHeight(currentActivity).toFloat())
|
|
67
|
+
.toDouble()
|
|
68
|
+
constants[Constants.TOP_BAR_HEIGHT_KEY] = UiUtils.pxToDp(
|
|
69
|
+
reactApplicationContext,
|
|
70
|
+
UiUtils.getTopBarHeight(reactApplicationContext).toFloat()
|
|
71
|
+
).toDouble()
|
|
72
|
+
return constants
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
override fun setRoot(commandId: String, layout: ReadableMap, promise: Promise) {
|
|
76
|
+
Log.d("NavigationTurboModule", "setRoot ${Thread.currentThread()}")
|
|
77
|
+
val layoutTree = LayoutNodeParser.parse(
|
|
78
|
+
Objects.requireNonNull(
|
|
79
|
+
jsonParser.parse(layout).optJSONObject("root")
|
|
80
|
+
)
|
|
81
|
+
)
|
|
82
|
+
handle {
|
|
83
|
+
Log.d("NavigationTurboModule", "setRoot handle ${Thread.currentThread()}")
|
|
84
|
+
val viewController = layoutFactory.create(layoutTree)
|
|
85
|
+
navigator().setRoot(
|
|
86
|
+
viewController,
|
|
87
|
+
NativeCommandListener("setRoot", commandId, promise, eventEmitter, now)
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
override fun setDefaultOptions(options: ReadableMap?) {
|
|
93
|
+
handle {
|
|
94
|
+
val defaultOptions = parse(options)
|
|
95
|
+
layoutFactory.defaultOptions = defaultOptions
|
|
96
|
+
navigator().defaultOptions = defaultOptions
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
override fun mergeOptions(componentId: String?, options: ReadableMap?) {
|
|
101
|
+
handle { navigator().mergeOptions(componentId, parse(options)) }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
override fun push(
|
|
105
|
+
commandId: String,
|
|
106
|
+
componentId: String,
|
|
107
|
+
layout: ReadableMap,
|
|
108
|
+
promise: Promise
|
|
109
|
+
) {
|
|
110
|
+
val layoutTree = LayoutNodeParser.parse(jsonParser.parse(layout))
|
|
111
|
+
handle {
|
|
112
|
+
val viewController = layoutFactory.create(layoutTree)
|
|
113
|
+
navigator().push(
|
|
114
|
+
componentId,
|
|
115
|
+
viewController,
|
|
116
|
+
NativeCommandListener("push", commandId, promise, eventEmitter, now)
|
|
117
|
+
)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
override fun pop(
|
|
122
|
+
commandId: String,
|
|
123
|
+
componentId: String,
|
|
124
|
+
options: ReadableMap?,
|
|
125
|
+
promise: Promise
|
|
126
|
+
) {
|
|
127
|
+
handle {
|
|
128
|
+
navigator().pop(
|
|
129
|
+
componentId,
|
|
130
|
+
parse(options),
|
|
131
|
+
NativeCommandListener("pop", commandId, promise, eventEmitter, now)
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
override fun popTo(
|
|
137
|
+
commandId: String,
|
|
138
|
+
componentId: String,
|
|
139
|
+
options: ReadableMap?,
|
|
140
|
+
promise: Promise
|
|
141
|
+
) {
|
|
142
|
+
handle {
|
|
143
|
+
navigator().popTo(
|
|
144
|
+
componentId,
|
|
145
|
+
parse(options),
|
|
146
|
+
NativeCommandListener("popTo", commandId, promise, eventEmitter, now)
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
override fun popToRoot(
|
|
152
|
+
commandId: String,
|
|
153
|
+
componentId: String,
|
|
154
|
+
options: ReadableMap?,
|
|
155
|
+
promise: Promise
|
|
156
|
+
) {
|
|
157
|
+
handle {
|
|
158
|
+
navigator().popToRoot(
|
|
159
|
+
componentId,
|
|
160
|
+
parse(options),
|
|
161
|
+
NativeCommandListener("popToRoot", commandId, promise, eventEmitter, now)
|
|
162
|
+
)
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
override fun setStackRoot(
|
|
167
|
+
commandId: String,
|
|
168
|
+
componentId: String,
|
|
169
|
+
children: ReadableArray,
|
|
170
|
+
promise: Promise
|
|
171
|
+
) {
|
|
172
|
+
handle {
|
|
173
|
+
val _children = ArrayList<ViewController<*>>()
|
|
174
|
+
for (i in 0..<children.size()) {
|
|
175
|
+
val layoutTree = LayoutNodeParser.parse(jsonParser.parse(children.getMap(i)))
|
|
176
|
+
_children.add(layoutFactory.create(layoutTree))
|
|
177
|
+
}
|
|
178
|
+
navigator().setStackRoot(
|
|
179
|
+
componentId,
|
|
180
|
+
_children,
|
|
181
|
+
NativeCommandListener("setStackRoot", commandId, promise, eventEmitter, now)
|
|
182
|
+
)
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
override fun showModal(commandId: String, layout: ReadableMap, promise: Promise) {
|
|
187
|
+
val layoutTree = LayoutNodeParser.parse(jsonParser.parse(layout))
|
|
188
|
+
handle {
|
|
189
|
+
val viewController = layoutFactory.create(layoutTree)
|
|
190
|
+
navigator().showModal(
|
|
191
|
+
viewController,
|
|
192
|
+
NativeCommandListener("showModal", commandId, promise, eventEmitter, now)
|
|
193
|
+
)
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
override fun dismissModal(
|
|
198
|
+
commandId: String,
|
|
199
|
+
componentId: String,
|
|
200
|
+
options: ReadableMap?,
|
|
201
|
+
promise: Promise
|
|
202
|
+
) {
|
|
203
|
+
handle {
|
|
204
|
+
navigator().mergeOptions(componentId, parse(options))
|
|
205
|
+
navigator().dismissModal(
|
|
206
|
+
componentId,
|
|
207
|
+
NativeCommandListener("dismissModal", commandId, promise, eventEmitter, now)
|
|
208
|
+
)
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
override fun dismissAllModals(commandId: String, options: ReadableMap?, promise: Promise) {
|
|
213
|
+
handle {
|
|
214
|
+
navigator().dismissAllModals(
|
|
215
|
+
parse(options),
|
|
216
|
+
NativeCommandListener("dismissAllModals", commandId, promise, eventEmitter, now)
|
|
217
|
+
)
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
override fun showOverlay(commandId: String, layout: ReadableMap, promise: Promise) {
|
|
222
|
+
val layoutTree = LayoutNodeParser.parse(jsonParser.parse(layout))
|
|
223
|
+
handle {
|
|
224
|
+
val viewController = layoutFactory.create(layoutTree)
|
|
225
|
+
navigator().showOverlay(
|
|
226
|
+
viewController,
|
|
227
|
+
NativeCommandListener("showOverlay", commandId, promise, eventEmitter, now)
|
|
228
|
+
)
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
override fun dismissOverlay(commandId: String, componentId: String, promise: Promise) {
|
|
233
|
+
handle {
|
|
234
|
+
navigator().dismissOverlay(
|
|
235
|
+
componentId,
|
|
236
|
+
NativeCommandListener("dismissOverlay", commandId, promise, eventEmitter, now)
|
|
237
|
+
)
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
override fun dismissAllOverlays(commandId: String, promise: Promise) {
|
|
242
|
+
handle {
|
|
243
|
+
navigator().dismissAllOverlays(
|
|
244
|
+
NativeCommandListener(
|
|
245
|
+
"dismissAllOverlays",
|
|
246
|
+
commandId,
|
|
247
|
+
promise,
|
|
248
|
+
eventEmitter,
|
|
249
|
+
now
|
|
250
|
+
)
|
|
251
|
+
)
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
override fun getLaunchArgs(commandId: String, promise: Promise) {
|
|
256
|
+
promise.resolve(LaunchArgsParser.parse(activity()))
|
|
257
|
+
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
private fun parse(mergeOptions: ReadableMap?): Options {
|
|
261
|
+
val ctx = reactApplicationContext
|
|
262
|
+
return if (mergeOptions ==
|
|
263
|
+
null
|
|
264
|
+
) Options.EMPTY else Options.parse(
|
|
265
|
+
ctx,
|
|
266
|
+
TypefaceLoader(activity()),
|
|
267
|
+
jsonParser.parse(mergeOptions)
|
|
268
|
+
)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
private fun navigator(): Navigator {
|
|
272
|
+
return activity().navigator
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
private fun handle(task: Runnable) {
|
|
276
|
+
UiThread.post {
|
|
277
|
+
if (currentActivity != null && !activity().isFinishing) {
|
|
278
|
+
task.run()
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
private fun activity(): NavigationActivity {
|
|
284
|
+
return currentActivity as NavigationActivity
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
companion object {
|
|
288
|
+
const val NAME = "RNNTurboModule"
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
}
|
|
@@ -12,28 +12,28 @@ import androidx.annotation.NonNull;
|
|
|
12
12
|
|
|
13
13
|
public class ReactGateway {
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
private final ReactHost host;
|
|
16
|
+
private final NavigationReactInitializer initializer;
|
|
17
|
+
private final JsDevReloadHandler jsDevReloadHandler;
|
|
18
18
|
|
|
19
|
-
public ReactGateway(ReactHost host
|
|
19
|
+
public ReactGateway(ReactHost host) {
|
|
20
20
|
this.host = host;
|
|
21
|
-
initializer = new NavigationReactInitializer(host
|
|
21
|
+
initializer = new NavigationReactInitializer(host);
|
|
22
22
|
jsDevReloadHandler = new JsDevReloadHandler(host.getDevSupportManager());
|
|
23
23
|
if (host instanceof BundleDownloadListenerProvider) {
|
|
24
24
|
((BundleDownloadListenerProvider) host).setBundleLoaderListener(jsDevReloadHandler);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
public void onActivityCreated(NavigationActivity activity) {
|
|
29
|
+
initializer.onActivityCreated();
|
|
30
30
|
jsDevReloadHandler.setReloadListener(activity);
|
|
31
|
-
|
|
31
|
+
}
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
public void onActivityResumed(NavigationActivity activity) {
|
|
34
|
+
initializer.onActivityResumed(activity);
|
|
35
|
+
jsDevReloadHandler.onActivityResumed(activity);
|
|
36
|
+
}
|
|
37
37
|
|
|
38
38
|
public boolean onNewIntent(Intent intent) {
|
|
39
39
|
if (host.getCurrentReactContext() != null) {
|
|
@@ -47,22 +47,22 @@ public class ReactGateway {
|
|
|
47
47
|
host.onConfigurationChanged(activity);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
public void onActivityPaused(NavigationActivity activity) {
|
|
51
|
+
initializer.onActivityPaused(activity);
|
|
52
|
+
jsDevReloadHandler.onActivityPaused(activity);
|
|
53
|
+
}
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
public void onActivityDestroyed(NavigationActivity activity) {
|
|
56
56
|
jsDevReloadHandler.removeReloadListener(activity);
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
initializer.onActivityDestroyed(activity);
|
|
58
|
+
}
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
public boolean onKeyUp(Activity activity, int keyCode) {
|
|
61
|
+
return jsDevReloadHandler.onKeyUp(activity, keyCode);
|
|
62
|
+
}
|
|
63
63
|
|
|
64
64
|
public void onBackPressed() {
|
|
65
|
-
|
|
65
|
+
host.onBackPressed();
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
|
|
@@ -72,7 +72,7 @@ public class ReactView extends FrameLayout implements IReactView, Renderable {
|
|
|
72
72
|
|
|
73
73
|
public void sendComponentWillStart(ComponentType type) {
|
|
74
74
|
this.post(()->{
|
|
75
|
-
ReactContext currentReactContext =
|
|
75
|
+
ReactContext currentReactContext = getReactContext();
|
|
76
76
|
if (currentReactContext != null)
|
|
77
77
|
new EventEmitter(currentReactContext).emitComponentWillAppear(componentId, componentName, type);
|
|
78
78
|
});
|
|
@@ -80,7 +80,7 @@ public class ReactView extends FrameLayout implements IReactView, Renderable {
|
|
|
80
80
|
|
|
81
81
|
public void sendComponentStart(ComponentType type) {
|
|
82
82
|
this.post(()->{
|
|
83
|
-
ReactContext currentReactContext =
|
|
83
|
+
ReactContext currentReactContext = getReactContext();
|
|
84
84
|
if (currentReactContext != null) {
|
|
85
85
|
new EventEmitter(currentReactContext).emitComponentDidAppear(componentId, componentName, type);
|
|
86
86
|
}
|
|
@@ -88,7 +88,7 @@ public class ReactView extends FrameLayout implements IReactView, Renderable {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
public void sendComponentStop(ComponentType type) {
|
|
91
|
-
ReactContext currentReactContext =
|
|
91
|
+
ReactContext currentReactContext = getReactContext();
|
|
92
92
|
if (currentReactContext != null) {
|
|
93
93
|
new EventEmitter(currentReactContext).emitComponentDidDisappear(componentId, componentName, type);
|
|
94
94
|
}
|
|
@@ -96,7 +96,7 @@ public class ReactView extends FrameLayout implements IReactView, Renderable {
|
|
|
96
96
|
|
|
97
97
|
@Override
|
|
98
98
|
public void sendOnNavigationButtonPressed(String buttonId) {
|
|
99
|
-
ReactContext currentReactContext =
|
|
99
|
+
ReactContext currentReactContext = getReactContext();
|
|
100
100
|
if (currentReactContext != null) {
|
|
101
101
|
new EventEmitter(currentReactContext).emitOnNavigationButtonPressed(componentId, buttonId);
|
|
102
102
|
}
|
|
@@ -121,7 +121,7 @@ public class ReactView extends FrameLayout implements IReactView, Renderable {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
public EventDispatcher getEventDispatcher() {
|
|
124
|
-
ReactContext reactContext =
|
|
124
|
+
ReactContext reactContext = getReactContext();
|
|
125
125
|
return reactContext == null ? null : UIManagerHelper.getEventDispatcher(reactContext, UIManagerType.FABRIC);
|
|
126
126
|
}
|
|
127
127
|
|
|
@@ -134,7 +134,7 @@ public class ReactView extends FrameLayout implements IReactView, Renderable {
|
|
|
134
134
|
return ((ReactApplication)getContext().getApplicationContext()).getReactHost();
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
private ReactContext
|
|
137
|
+
private ReactContext getReactContext() {
|
|
138
138
|
return getReactHost().getCurrentReactContext();
|
|
139
139
|
}
|
|
140
140
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
package com.reactnativenavigation.utils;
|
|
2
2
|
|
|
3
|
+
import android.graphics.Color;
|
|
4
|
+
|
|
3
5
|
public class ColorUtils {
|
|
4
6
|
public static double[] colorToLAB(int color) {
|
|
5
7
|
final double[] result = new double[3];
|
|
@@ -10,4 +12,13 @@ public class ColorUtils {
|
|
|
10
12
|
public static int labToColor(double[] lab) {
|
|
11
13
|
return androidx.core.graphics.ColorUtils.LABToColor(lab[0], lab[1], lab[2]);
|
|
12
14
|
}
|
|
15
|
+
|
|
16
|
+
public static boolean isColorLight(int color) {
|
|
17
|
+
double darkness = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255;
|
|
18
|
+
return darkness < 0.5;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public static int setAlpha(int color, int alpha) {
|
|
22
|
+
return (color & 0x00FFFFFF) | (alpha << 24);
|
|
23
|
+
}
|
|
13
24
|
}
|
|
@@ -9,14 +9,9 @@ import com.reactnativenavigation.BuildConfig
|
|
|
9
9
|
val hitRect = Rect()
|
|
10
10
|
|
|
11
11
|
fun MotionEvent.coordinatesInsideView(view: View?): Boolean {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
} else {
|
|
17
|
-
val viewGroup = (view as? ViewGroup)?.getChildAt(0) as? ViewGroup ?: view
|
|
12
|
+
val viewGroup = (view as? ViewGroup)?.getChildAt(0) as? ViewGroup ?: view
|
|
13
|
+
|
|
14
|
+
viewGroup?.getHitRect(hitRect)
|
|
15
|
+
return hitRect.contains(x.toInt(), y.toInt())
|
|
18
16
|
|
|
19
|
-
viewGroup?.getHitRect(hitRect)
|
|
20
|
-
return hitRect.contains(x.toInt(), y.toInt())
|
|
21
|
-
}
|
|
22
17
|
}
|
|
@@ -3,7 +3,6 @@ package com.reactnativenavigation.utils
|
|
|
3
3
|
import android.app.Activity
|
|
4
4
|
import android.graphics.Color
|
|
5
5
|
import android.graphics.Rect
|
|
6
|
-
import android.os.Build
|
|
7
6
|
import android.view.View
|
|
8
7
|
import android.view.Window
|
|
9
8
|
import androidx.annotation.ColorInt
|
|
@@ -16,7 +15,6 @@ import kotlin.math.ceil
|
|
|
16
15
|
|
|
17
16
|
object SystemUiUtils {
|
|
18
17
|
private const val STATUS_BAR_HEIGHT_M = 24
|
|
19
|
-
private const val STATUS_BAR_HEIGHT_L = 25
|
|
20
18
|
internal const val STATUS_BAR_HEIGHT_TRANSLUCENCY = 0.65f
|
|
21
19
|
private var statusBarHeight = -1
|
|
22
20
|
var navigationBarDefaultColor = -1
|
|
@@ -38,7 +36,7 @@ object SystemUiUtils {
|
|
|
38
36
|
val contentViewTop = contentView.top
|
|
39
37
|
abs(contentViewTop - statusBarHeight)
|
|
40
38
|
}
|
|
41
|
-
} ?:
|
|
39
|
+
} ?: STATUS_BAR_HEIGHT_M
|
|
42
40
|
statusBarHeight
|
|
43
41
|
}
|
|
44
42
|
return res
|
|
@@ -77,8 +75,6 @@ object SystemUiUtils {
|
|
|
77
75
|
|
|
78
76
|
@JvmStatic
|
|
79
77
|
fun setStatusBarColorScheme(window: Window?, view: View, isDark: Boolean) {
|
|
80
|
-
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return
|
|
81
|
-
|
|
82
78
|
window?.let {
|
|
83
79
|
WindowInsetsControllerCompat(window, view).isAppearanceLightStatusBars = isDark
|
|
84
80
|
// Workaround: on devices with api 30 status bar icons flickers or get hidden when removing view
|
|
@@ -121,18 +117,17 @@ object SystemUiUtils {
|
|
|
121
117
|
@ColorInt color: Int,
|
|
122
118
|
translucent: Boolean
|
|
123
119
|
) {
|
|
124
|
-
val
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
window?.statusBarColor = opaqueColor
|
|
120
|
+
val colorAlpha = Color.alpha(color)
|
|
121
|
+
val alpha = if (translucent && colorAlpha == 255) STATUS_BAR_HEIGHT_TRANSLUCENCY else colorAlpha/255.0f
|
|
122
|
+
val red: Int = Color.red(color)
|
|
123
|
+
val green: Int = Color.green(color)
|
|
124
|
+
val blue: Int = Color.blue(color)
|
|
125
|
+
val opaqueColor = Color.argb(ceil(alpha * 255).toInt(), red, green, blue)
|
|
126
|
+
setStatusBarColor(window, opaqueColor)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
fun setStatusBarColor(window: Window?, color: Int) {
|
|
130
|
+
window?.statusBarColor = color
|
|
136
131
|
}
|
|
137
132
|
|
|
138
133
|
@JvmStatic
|
|
@@ -9,7 +9,6 @@ import android.graphics.drawable.Drawable;
|
|
|
9
9
|
|
|
10
10
|
import androidx.annotation.NonNull;
|
|
11
11
|
|
|
12
|
-
import com.aurelhubert.ahbottomnavigation.AHTextView;
|
|
13
12
|
import com.aurelhubert.ahbottomnavigation.notification.AHNotification;
|
|
14
13
|
import com.reactnativenavigation.options.BottomTabOptions;
|
|
15
14
|
import com.reactnativenavigation.options.DotIndicatorOptions;
|