react-native-screens 3.31.1 → 3.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -11
- package/RNScreens.podspec +11 -52
- package/android/CMakeLists.txt +48 -4
- package/android/build.gradle +16 -9
- package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +25 -16
- package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +53 -0
- package/android/src/main/cpp/NativeProxy.cpp +51 -0
- package/android/src/main/cpp/NativeProxy.h +35 -0
- package/android/src/main/cpp/OnLoad.cpp +8 -0
- package/android/src/main/cpp/jni-adapter.cpp +86 -93
- package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +7 -2
- package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +6 -1
- package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +36 -17
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +150 -40
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +52 -30
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +27 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +10 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +56 -27
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +8 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +50 -19
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +63 -39
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +88 -57
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +131 -36
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +19 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +16 -10
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +28 -25
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +177 -77
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +77 -25
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +31 -9
- package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +160 -54
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +29 -22
- package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +7 -2
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +8 -4
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +7 -6
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +5 -2
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +5 -2
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +9 -4
- package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +1 -5
- package/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt +214 -0
- package/android/src/main/jni/CMakeLists.txt +5 -4
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +16 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +6 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +2 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +3 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +1 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +99 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +37 -0
- package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +10 -5
- package/android/src/paper/java/com/swmansion/rnscreens/NativeProxy.kt +19 -0
- package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +4 -0
- package/common/cpp/react/renderer/components/rnscreens/FrameCorrectionModes.h +51 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +8 -9
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +2 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +9 -8
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +147 -10
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +51 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +29 -7
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +22 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +30 -10
- package/common/cpp/react/renderer/components/rnscreens/utils/RectUtil.h +36 -0
- package/cpp/RNSScreenRemovalListener.cpp +25 -0
- package/cpp/RNSScreenRemovalListener.h +20 -0
- package/cpp/RNScreensTurboModule.cpp +31 -23
- package/cpp/RNScreensTurboModule.h +17 -20
- package/ios/RNSConvert.h +7 -0
- package/ios/RNSConvert.mm +24 -0
- package/ios/RNSModalScreen.mm +22 -0
- package/ios/RNSModule.mm +2 -3
- package/ios/RNSScreen.h +2 -1
- package/ios/RNSScreen.mm +35 -19
- package/ios/RNSScreenContainer.mm +1 -1
- package/ios/RNSScreenStack.mm +59 -54
- package/ios/RNSScreenStackAnimator.mm +43 -6
- package/ios/RNSScreenStackHeaderConfig.h +2 -0
- package/ios/RNSScreenStackHeaderConfig.mm +93 -28
- package/ios/RNSScreenStackHeaderSubview.mm +8 -0
- package/ios/RNSSearchBar.h +5 -5
- package/ios/RNSSearchBar.mm +11 -11
- package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.h +15 -0
- package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.mm +14 -0
- package/ios/utils/RCTTouchHandler+RNSUtility.h +15 -0
- package/ios/utils/RCTTouchHandler+RNSUtility.mm +15 -0
- package/ios/utils/UIView+RNSUtility.h +23 -0
- package/ios/utils/UIView+RNSUtility.mm +55 -0
- package/lib/commonjs/components/Screen.js +119 -127
- package/lib/commonjs/components/Screen.js.map +1 -1
- package/lib/commonjs/components/ScreenStack.js +8 -1
- package/lib/commonjs/components/ScreenStack.js.map +1 -1
- package/lib/commonjs/components/SearchBar.js +39 -36
- package/lib/commonjs/components/SearchBar.js.map +1 -1
- package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/commonjs/native-stack/views/HeaderConfig.js +2 -0
- package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +4 -0
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/components/Screen.js +118 -126
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/ScreenStack.js +8 -1
- package/lib/module/components/ScreenStack.js.map +1 -1
- package/lib/module/components/SearchBar.js +39 -36
- package/lib/module/components/SearchBar.js.map +1 -1
- package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/module/native-stack/views/HeaderConfig.js +2 -0
- package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +4 -0
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/typescript/TransitionProgressContext.d.ts +1 -1
- package/lib/typescript/TransitionProgressContext.d.ts.map +1 -1
- package/lib/typescript/components/Screen.d.ts +3 -14
- package/lib/typescript/components/Screen.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStack.d.ts.map +1 -1
- package/lib/typescript/components/SearchBar.d.ts +14 -21
- package/lib/typescript/components/SearchBar.d.ts.map +1 -1
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +12 -10
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +12 -10
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +5 -3
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +9 -9
- package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -1
- package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +1 -1
- package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +39 -14
- package/lib/typescript/native-stack/types.d.ts.map +1 -1
- package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +1 -1
- package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -1
- package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +1 -1
- package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -1
- package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -1
- package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/HeaderConfig.d.ts +2 -2
- package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
- package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +1 -1
- package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +39 -13
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/useTransitionProgress.d.ts +3 -3
- package/native-stack/README.md +116 -98
- package/package.json +16 -7
- package/react-native.config.js +17 -15
- package/src/TransitionProgressContext.tsx +1 -1
- package/src/components/Screen.tsx +31 -37
- package/src/components/ScreenStack.tsx +11 -1
- package/src/components/ScreenStackHeaderConfig.tsx +5 -5
- package/src/components/ScreenStackHeaderConfig.web.tsx +6 -6
- package/src/components/SearchBar.tsx +77 -65
- package/src/core.ts +1 -1
- package/src/fabric/ModalScreenNativeComponent.ts +2 -0
- package/src/fabric/ScreenNativeComponent.ts +2 -0
- package/src/fabric/ScreenNavigationContainerNativeComponent.ts +1 -1
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +4 -1
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +1 -1
- package/src/fabric/SearchBarNativeComponent.ts +7 -7
- package/src/gesture-handler/ScreenGestureDetector.tsx +5 -5
- package/src/gesture-handler/constraints.ts +5 -5
- package/src/gesture-handler/fabricUtils.ts +1 -1
- package/src/native-stack/contexts/GHContext.tsx +1 -1
- package/src/native-stack/navigators/createNativeStackNavigator.tsx +3 -3
- package/src/native-stack/types.tsx +29 -4
- package/src/native-stack/utils/getDefaultHeaderHeight.tsx +1 -1
- package/src/native-stack/utils/getStatusBarHeight.tsx +1 -1
- package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +1 -1
- package/src/native-stack/utils/useBackPressSubscription.tsx +1 -1
- package/src/native-stack/utils/useHeaderHeight.tsx +1 -1
- package/src/native-stack/views/FontProcessor.tsx +1 -1
- package/src/native-stack/views/HeaderConfig.tsx +3 -1
- package/src/native-stack/views/NativeStackView.tsx +13 -9
- package/src/reanimated/ReanimatedHeaderHeightContext.tsx +1 -1
- package/src/reanimated/ReanimatedNativeStackScreen.tsx +5 -5
- package/src/reanimated/ReanimatedScreen.tsx +2 -2
- package/src/reanimated/ReanimatedScreenProvider.tsx +1 -1
- package/src/reanimated/useReanimatedHeaderHeight.tsx +1 -1
- package/src/reanimated/useReanimatedTransitionProgress.tsx +1 -1
- package/src/types.tsx +31 -5
- package/src/useTransitionProgress.tsx +1 -1
- package/windows/README.md +4 -1
|
@@ -1,110 +1,103 @@
|
|
|
1
|
-
#include <array>
|
|
2
|
-
#include <mutex>
|
|
3
1
|
#include <jni.h>
|
|
4
2
|
#include <jsi/jsi.h>
|
|
3
|
+
#include <array>
|
|
4
|
+
#include <mutex>
|
|
5
5
|
#include "RNScreensTurboModule.h"
|
|
6
6
|
|
|
7
7
|
using namespace facebook;
|
|
8
8
|
|
|
9
9
|
jobject globalThis;
|
|
10
10
|
|
|
11
|
-
extern "C"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
extern "C" JNIEXPORT void JNICALL
|
|
12
|
+
Java_com_swmansion_rnscreens_ScreensModule_nativeInstall(
|
|
13
|
+
JNIEnv *env,
|
|
14
|
+
jobject thiz,
|
|
15
|
+
jlong jsiPtr) {
|
|
16
|
+
auto runtime = reinterpret_cast<jsi::Runtime *>(jsiPtr);
|
|
17
|
+
if (!runtime) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
jsi::Runtime &rt = *runtime;
|
|
21
|
+
globalThis = env->NewGlobalRef(thiz);
|
|
22
|
+
JavaVM *jvm;
|
|
23
|
+
env->GetJavaVM(&jvm);
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
currentEnv->ReleaseIntArrayElements(resultArray, elements, JNI_ABORT);
|
|
48
|
-
}
|
|
49
|
-
return result;
|
|
50
|
-
};
|
|
25
|
+
const auto &startTransition = [jvm](int stackTag) -> std::array<int, 2> {
|
|
26
|
+
JNIEnv *currentEnv;
|
|
27
|
+
if (jvm->AttachCurrentThread(¤tEnv, nullptr) != JNI_OK) {
|
|
28
|
+
return {0, 0};
|
|
29
|
+
}
|
|
30
|
+
jclass javaClass = currentEnv->GetObjectClass(globalThis);
|
|
31
|
+
jmethodID methodID = currentEnv->GetMethodID(
|
|
32
|
+
javaClass, "startTransition", "(Ljava/lang/Integer;)[I");
|
|
33
|
+
jclass integerClass = currentEnv->FindClass("java/lang/Integer");
|
|
34
|
+
jmethodID integerConstructor =
|
|
35
|
+
currentEnv->GetMethodID(integerClass, "<init>", "(I)V");
|
|
36
|
+
jobject integerArg =
|
|
37
|
+
currentEnv->NewObject(integerClass, integerConstructor, stackTag);
|
|
38
|
+
jintArray resultArray = (jintArray)currentEnv->CallObjectMethod(
|
|
39
|
+
globalThis, methodID, integerArg);
|
|
40
|
+
std::array<int, 2> result = {-1, -1};
|
|
41
|
+
jint *elements = currentEnv->GetIntArrayElements(resultArray, nullptr);
|
|
42
|
+
if (elements != nullptr) {
|
|
43
|
+
result[0] = elements[0];
|
|
44
|
+
result[1] = elements[1];
|
|
45
|
+
currentEnv->ReleaseIntArrayElements(resultArray, elements, JNI_ABORT);
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
);
|
|
63
|
-
currentEnv->CallVoidMethod(globalThis, methodID, progress);
|
|
64
|
-
};
|
|
50
|
+
const auto &updateTransition = [jvm](int stackTag, double progress) {
|
|
51
|
+
JNIEnv *currentEnv;
|
|
52
|
+
if (jvm->AttachCurrentThread(¤tEnv, nullptr) != JNI_OK) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
jclass javaClass = currentEnv->GetObjectClass(globalThis);
|
|
56
|
+
jmethodID methodID =
|
|
57
|
+
currentEnv->GetMethodID(javaClass, "updateTransition", "(D)V");
|
|
58
|
+
currentEnv->CallVoidMethod(globalThis, methodID, progress);
|
|
59
|
+
};
|
|
65
60
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
};
|
|
61
|
+
const auto &finishTransition = [jvm](int stackTag, bool canceled) {
|
|
62
|
+
JNIEnv *currentEnv;
|
|
63
|
+
if (jvm->AttachCurrentThread(¤tEnv, nullptr) != JNI_OK) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
jclass javaClass = currentEnv->GetObjectClass(globalThis);
|
|
67
|
+
jmethodID methodID = currentEnv->GetMethodID(
|
|
68
|
+
javaClass, "finishTransition", "(Ljava/lang/Integer;Z)V");
|
|
69
|
+
jclass integerClass = currentEnv->FindClass("java/lang/Integer");
|
|
70
|
+
jmethodID integerConstructor =
|
|
71
|
+
currentEnv->GetMethodID(integerClass, "<init>", "(I)V");
|
|
72
|
+
jobject integerArg =
|
|
73
|
+
currentEnv->NewObject(integerClass, integerConstructor, stackTag);
|
|
74
|
+
currentEnv->CallVoidMethod(globalThis, methodID, integerArg, canceled);
|
|
75
|
+
};
|
|
82
76
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
77
|
+
const auto &disableSwipeBackForTopScreen = [](int _stackTag) {
|
|
78
|
+
// no implementation for Android
|
|
79
|
+
};
|
|
86
80
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
);
|
|
81
|
+
auto rnScreensModule = std::make_shared<RNScreens::RNScreensTurboModule>(
|
|
82
|
+
startTransition,
|
|
83
|
+
updateTransition,
|
|
84
|
+
finishTransition,
|
|
85
|
+
disableSwipeBackForTopScreen);
|
|
86
|
+
auto rnScreensModuleHostObject =
|
|
87
|
+
jsi::Object::createFromHostObject(rt, rnScreensModule);
|
|
88
|
+
rt.global().setProperty(
|
|
89
|
+
rt,
|
|
90
|
+
RNScreens::RNScreensTurboModule::MODULE_NAME,
|
|
91
|
+
std::move(rnScreensModuleHostObject));
|
|
99
92
|
}
|
|
100
93
|
|
|
101
94
|
void JNICALL JNI_OnUnload(JavaVM *jvm, void *) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
95
|
+
JNIEnv *env;
|
|
96
|
+
if (jvm->GetEnv(reinterpret_cast<void **>(&env), JNI_VERSION_1_6) != JNI_OK) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (globalThis != nullptr) {
|
|
100
|
+
env->DeleteGlobalRef(globalThis);
|
|
101
|
+
globalThis = nullptr;
|
|
102
|
+
}
|
|
110
103
|
}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
package com.swmansion.rnscreens
|
|
2
2
|
|
|
3
|
+
import android.annotation.SuppressLint
|
|
3
4
|
import android.content.Context
|
|
4
5
|
import androidx.activity.OnBackPressedCallback
|
|
5
6
|
import androidx.appcompat.widget.SearchView
|
|
6
7
|
import androidx.fragment.app.Fragment
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
@SuppressLint("ViewConstructor") // Only we construct this view, it is never inflated.
|
|
10
|
+
class CustomSearchView(
|
|
11
|
+
context: Context,
|
|
12
|
+
fragment: Fragment,
|
|
13
|
+
) : SearchView(context) {
|
|
9
14
|
/*
|
|
10
15
|
CustomSearchView uses some variables from SearchView. They are listed below with links to documentation
|
|
11
16
|
isIconified - https://developer.android.com/reference/android/widget/SearchView#setIconified(boolean)
|
|
12
17
|
maxWidth - https://developer.android.com/reference/android/widget/SearchView#setMaxWidth(int)
|
|
13
18
|
setOnSearchClickListener - https://developer.android.com/reference/android/widget/SearchView#setOnSearchClickListener(android.view.View.OnClickListener)
|
|
14
19
|
setOnCloseListener - https://developer.android.com/reference/android/widget/SearchView#setOnCloseListener(android.widget.SearchView.OnCloseListener)
|
|
15
|
-
|
|
20
|
+
*/
|
|
16
21
|
private var onCloseListener: OnCloseListener? = null
|
|
17
22
|
private var onSearchClickedListener: OnClickListener? = null
|
|
18
23
|
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
package com.swmansion.rnscreens
|
|
2
2
|
|
|
3
|
+
import android.annotation.SuppressLint
|
|
3
4
|
import android.content.Context
|
|
4
5
|
import androidx.appcompat.widget.Toolbar
|
|
5
6
|
|
|
6
7
|
// This class is used to store config closer to search bar
|
|
7
|
-
|
|
8
|
+
@SuppressLint("ViewConstructor") // Only we construct this view, it is never inflated.
|
|
9
|
+
open class CustomToolbar(
|
|
10
|
+
context: Context,
|
|
11
|
+
val config: ScreenStackHeaderConfig,
|
|
12
|
+
) : Toolbar(context)
|
|
@@ -5,7 +5,7 @@ import androidx.fragment.app.Fragment
|
|
|
5
5
|
|
|
6
6
|
class FragmentBackPressOverrider(
|
|
7
7
|
private val fragment: Fragment,
|
|
8
|
-
private val onBackPressedCallback: OnBackPressedCallback
|
|
8
|
+
private val onBackPressedCallback: OnBackPressedCallback,
|
|
9
9
|
) {
|
|
10
10
|
private var isCallbackAdded: Boolean = false
|
|
11
11
|
var overrideBackAction: Boolean = true
|
|
@@ -14,7 +14,7 @@ class FragmentBackPressOverrider(
|
|
|
14
14
|
if (!isCallbackAdded && overrideBackAction) {
|
|
15
15
|
fragment.activity?.onBackPressedDispatcher?.addCallback(
|
|
16
16
|
fragment,
|
|
17
|
-
onBackPressedCallback
|
|
17
|
+
onBackPressedCallback,
|
|
18
18
|
)
|
|
19
19
|
isCallbackAdded = true
|
|
20
20
|
}
|
|
@@ -7,27 +7,42 @@ import com.facebook.react.module.annotations.ReactModuleList
|
|
|
7
7
|
import com.facebook.react.module.model.ReactModuleInfo
|
|
8
8
|
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
9
9
|
import com.facebook.react.uimanager.ViewManager
|
|
10
|
+
import com.swmansion.rnscreens.utils.ScreenDummyLayoutHelper
|
|
10
11
|
|
|
11
12
|
@ReactModuleList(
|
|
12
13
|
nativeModules = [
|
|
13
|
-
ScreensModule::class
|
|
14
|
-
]
|
|
14
|
+
ScreensModule::class,
|
|
15
|
+
],
|
|
15
16
|
)
|
|
16
17
|
class RNScreensPackage : TurboReactPackage() {
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
// We just retain it here. This object helps us tackle jumping content when using native header.
|
|
19
|
+
// See: https://github.com/software-mansion/react-native-screens/pull/2169
|
|
20
|
+
private var screenDummyLayoutHelper: ScreenDummyLayoutHelper? = null
|
|
21
|
+
|
|
22
|
+
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
23
|
+
// This is the earliest we lay our hands on react context.
|
|
24
|
+
// Moreover this is called before FabricUIManger has finished initializing, not to mention
|
|
25
|
+
// installing its C++ bindings - so we are safe in terms of creating this helper
|
|
26
|
+
// before RN starts creating shadow nodes.
|
|
27
|
+
// See https://github.com/software-mansion/react-native-screens/pull/2169
|
|
28
|
+
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
|
29
|
+
screenDummyLayoutHelper = ScreenDummyLayoutHelper(reactContext)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return listOf<ViewManager<*, *>>(
|
|
19
33
|
ScreenContainerViewManager(),
|
|
20
34
|
ScreenViewManager(),
|
|
21
35
|
ModalScreenViewManager(),
|
|
22
36
|
ScreenStackViewManager(),
|
|
23
37
|
ScreenStackHeaderConfigViewManager(),
|
|
24
38
|
ScreenStackHeaderSubviewManager(),
|
|
25
|
-
SearchBarManager()
|
|
39
|
+
SearchBarManager(),
|
|
26
40
|
)
|
|
41
|
+
}
|
|
27
42
|
|
|
28
43
|
override fun getModule(
|
|
29
44
|
s: String,
|
|
30
|
-
reactApplicationContext: ReactApplicationContext
|
|
45
|
+
reactApplicationContext: ReactApplicationContext,
|
|
31
46
|
): NativeModule? {
|
|
32
47
|
when (s) {
|
|
33
48
|
ScreensModule.NAME -> return ScreensModule(reactApplicationContext)
|
|
@@ -35,20 +50,24 @@ class RNScreensPackage : TurboReactPackage() {
|
|
|
35
50
|
return null
|
|
36
51
|
}
|
|
37
52
|
|
|
38
|
-
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider
|
|
39
|
-
|
|
53
|
+
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider =
|
|
54
|
+
ReactModuleInfoProvider {
|
|
40
55
|
val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
|
|
41
56
|
val isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
|
|
42
|
-
moduleInfos[ScreensModule.NAME] =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
moduleInfos[ScreensModule.NAME] =
|
|
58
|
+
ReactModuleInfo(
|
|
59
|
+
ScreensModule.NAME,
|
|
60
|
+
ScreensModule.NAME,
|
|
61
|
+
false, // canOverrideExistingModule
|
|
62
|
+
false, // needsEagerInit
|
|
63
|
+
true, // hasConstants
|
|
64
|
+
false, // isCxxModule
|
|
65
|
+
isTurboModule,
|
|
66
|
+
)
|
|
51
67
|
moduleInfos
|
|
52
68
|
}
|
|
69
|
+
|
|
70
|
+
companion object {
|
|
71
|
+
const val TAG = "RNScreensPackage"
|
|
53
72
|
}
|
|
54
73
|
}
|
|
@@ -6,6 +6,7 @@ import android.graphics.Paint
|
|
|
6
6
|
import android.os.Parcelable
|
|
7
7
|
import android.util.SparseArray
|
|
8
8
|
import android.util.TypedValue
|
|
9
|
+
import android.view.View
|
|
9
10
|
import android.view.ViewGroup
|
|
10
11
|
import android.view.WindowManager
|
|
11
12
|
import android.webkit.WebView
|
|
@@ -18,8 +19,10 @@ import com.facebook.react.uimanager.UIManagerHelper
|
|
|
18
19
|
import com.facebook.react.uimanager.UIManagerModule
|
|
19
20
|
import com.swmansion.rnscreens.events.HeaderHeightChangeEvent
|
|
20
21
|
|
|
21
|
-
@SuppressLint("ViewConstructor")
|
|
22
|
-
class Screen(
|
|
22
|
+
@SuppressLint("ViewConstructor") // Only we construct this view, it is never inflated.
|
|
23
|
+
class Screen(
|
|
24
|
+
context: ReactContext?,
|
|
25
|
+
) : FabricEnabledViewGroup(context) {
|
|
23
26
|
val fragment: Fragment?
|
|
24
27
|
get() = fragmentWrapper?.fragment
|
|
25
28
|
|
|
@@ -35,6 +38,7 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
35
38
|
var screenOrientation: Int? = null
|
|
36
39
|
private set
|
|
37
40
|
var isStatusBarAnimated: Boolean? = null
|
|
41
|
+
var isBeingRemoved = false
|
|
38
42
|
|
|
39
43
|
init {
|
|
40
44
|
// we set layout params as WindowManager.LayoutParams to workaround the issue with TextInputs
|
|
@@ -60,13 +64,20 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
60
64
|
// ignore restoring instance state too as we are not saving anything anyways.
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
override fun onLayout(
|
|
67
|
+
override fun onLayout(
|
|
68
|
+
changed: Boolean,
|
|
69
|
+
l: Int,
|
|
70
|
+
t: Int,
|
|
71
|
+
r: Int,
|
|
72
|
+
b: Int,
|
|
73
|
+
) {
|
|
64
74
|
if (container is ScreenStack && changed) {
|
|
65
75
|
val width = r - l
|
|
66
76
|
val height = b - t
|
|
67
77
|
|
|
68
78
|
val headerHeight = calculateHeaderHeight()
|
|
69
|
-
val totalHeight =
|
|
79
|
+
val totalHeight =
|
|
80
|
+
headerHeight.first + headerHeight.second // action bar height + status bar height
|
|
70
81
|
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
|
71
82
|
updateScreenSizeFabric(width, height, totalHeight)
|
|
72
83
|
} else {
|
|
@@ -77,16 +88,20 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
77
88
|
}
|
|
78
89
|
}
|
|
79
90
|
|
|
80
|
-
private fun updateScreenSizePaper(
|
|
91
|
+
private fun updateScreenSizePaper(
|
|
92
|
+
width: Int,
|
|
93
|
+
height: Int,
|
|
94
|
+
) {
|
|
81
95
|
val reactContext = context as ReactContext
|
|
82
96
|
reactContext.runOnNativeModulesQueueThread(
|
|
83
|
-
object : GuardedRunnable(reactContext) {
|
|
97
|
+
object : GuardedRunnable(reactContext.exceptionHandler) {
|
|
84
98
|
override fun runGuarded() {
|
|
85
99
|
reactContext
|
|
86
100
|
.getNativeModule(UIManagerModule::class.java)
|
|
87
101
|
?.updateNodeSize(id, width, height)
|
|
88
102
|
}
|
|
89
|
-
}
|
|
103
|
+
},
|
|
104
|
+
)
|
|
90
105
|
}
|
|
91
106
|
|
|
92
107
|
val headerConfig: ScreenStackHeaderConfig?
|
|
@@ -108,7 +123,7 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
108
123
|
}
|
|
109
124
|
super.setLayerType(
|
|
110
125
|
if (transitioning && !isWebViewInScreen) LAYER_TYPE_HARDWARE else LAYER_TYPE_NONE,
|
|
111
|
-
null
|
|
126
|
+
null,
|
|
112
127
|
)
|
|
113
128
|
}
|
|
114
129
|
|
|
@@ -126,7 +141,10 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
126
141
|
return false
|
|
127
142
|
}
|
|
128
143
|
|
|
129
|
-
override fun setLayerType(
|
|
144
|
+
override fun setLayerType(
|
|
145
|
+
layerType: Int,
|
|
146
|
+
paint: Paint?,
|
|
147
|
+
) {
|
|
130
148
|
// ignore - layer type is controlled by `transitioning` prop
|
|
131
149
|
}
|
|
132
150
|
|
|
@@ -144,16 +162,17 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
144
162
|
return
|
|
145
163
|
}
|
|
146
164
|
ScreenWindowTraits.applyDidSetOrientation()
|
|
147
|
-
this.screenOrientation =
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
165
|
+
this.screenOrientation =
|
|
166
|
+
when (screenOrientation) {
|
|
167
|
+
"all" -> ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
|
|
168
|
+
"portrait" -> ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
|
|
169
|
+
"portrait_up" -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
|
170
|
+
"portrait_down" -> ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
|
|
171
|
+
"landscape" -> ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
|
|
172
|
+
"landscape_left" -> ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
|
|
173
|
+
"landscape_right" -> ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
|
|
174
|
+
else -> ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
|
|
175
|
+
}
|
|
157
176
|
|
|
158
177
|
fragmentWrapper?.let { ScreenWindowTraits.setOrientation(this, it.tryGetActivity()) }
|
|
159
178
|
}
|
|
@@ -171,7 +190,13 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
171
190
|
ScreenWindowTraits.applyDidSetStatusBarAppearance()
|
|
172
191
|
}
|
|
173
192
|
field = statusBarStyle
|
|
174
|
-
fragmentWrapper?.let {
|
|
193
|
+
fragmentWrapper?.let {
|
|
194
|
+
ScreenWindowTraits.setStyle(
|
|
195
|
+
this,
|
|
196
|
+
it.tryGetActivity(),
|
|
197
|
+
it.tryGetContext(),
|
|
198
|
+
)
|
|
199
|
+
}
|
|
175
200
|
}
|
|
176
201
|
|
|
177
202
|
var isStatusBarHidden: Boolean? = null
|
|
@@ -193,7 +218,7 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
193
218
|
ScreenWindowTraits.setTranslucent(
|
|
194
219
|
this,
|
|
195
220
|
it.tryGetActivity(),
|
|
196
|
-
it.tryGetContext()
|
|
221
|
+
it.tryGetContext(),
|
|
197
222
|
)
|
|
198
223
|
}
|
|
199
224
|
}
|
|
@@ -204,7 +229,13 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
204
229
|
ScreenWindowTraits.applyDidSetStatusBarAppearance()
|
|
205
230
|
}
|
|
206
231
|
field = statusBarColor
|
|
207
|
-
fragmentWrapper?.let {
|
|
232
|
+
fragmentWrapper?.let {
|
|
233
|
+
ScreenWindowTraits.setColor(
|
|
234
|
+
this,
|
|
235
|
+
it.tryGetActivity(),
|
|
236
|
+
it.tryGetContext(),
|
|
237
|
+
)
|
|
238
|
+
}
|
|
208
239
|
}
|
|
209
240
|
|
|
210
241
|
var navigationBarColor: Int? = null
|
|
@@ -213,7 +244,26 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
213
244
|
ScreenWindowTraits.applyDidSetNavigationBarAppearance()
|
|
214
245
|
}
|
|
215
246
|
field = navigationBarColor
|
|
216
|
-
fragmentWrapper?.let {
|
|
247
|
+
fragmentWrapper?.let {
|
|
248
|
+
ScreenWindowTraits.setNavigationBarColor(
|
|
249
|
+
this,
|
|
250
|
+
it.tryGetActivity(),
|
|
251
|
+
)
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
var isNavigationBarTranslucent: Boolean? = null
|
|
256
|
+
set(navigationBarTranslucent) {
|
|
257
|
+
if (navigationBarTranslucent != null) {
|
|
258
|
+
ScreenWindowTraits.applyDidSetNavigationBarAppearance()
|
|
259
|
+
}
|
|
260
|
+
field = navigationBarTranslucent
|
|
261
|
+
fragmentWrapper?.let {
|
|
262
|
+
ScreenWindowTraits.setNavigationBarTranslucent(
|
|
263
|
+
this,
|
|
264
|
+
it.tryGetActivity(),
|
|
265
|
+
)
|
|
266
|
+
}
|
|
217
267
|
}
|
|
218
268
|
|
|
219
269
|
var isNavigationBarHidden: Boolean? = null
|
|
@@ -232,22 +282,61 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
232
282
|
|
|
233
283
|
var nativeBackButtonDismissalEnabled: Boolean = true
|
|
234
284
|
|
|
285
|
+
fun startRemovalTransition() {
|
|
286
|
+
if (!isBeingRemoved) {
|
|
287
|
+
isBeingRemoved = true
|
|
288
|
+
startTransitionRecursive(this)
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
private fun startTransitionRecursive(parent: ViewGroup?) {
|
|
293
|
+
parent?.let {
|
|
294
|
+
for (i in 0 until it.childCount) {
|
|
295
|
+
val child = it.getChildAt(i)
|
|
296
|
+
if (child.javaClass.simpleName.equals("CircleImageView")) {
|
|
297
|
+
// SwipeRefreshLayout class which has CircleImageView as a child,
|
|
298
|
+
// does not handle `startViewTransition` properly.
|
|
299
|
+
// It has a custom `getChildDrawingOrder` method which returns
|
|
300
|
+
// wrong index if we called `startViewTransition` on the views on new arch.
|
|
301
|
+
// We add a simple View to bump the number of children to make it work.
|
|
302
|
+
// TODO: find a better way to handle this scenario
|
|
303
|
+
it.addView(View(context), i)
|
|
304
|
+
} else {
|
|
305
|
+
child?.let { view -> it.startViewTransition(view) }
|
|
306
|
+
}
|
|
307
|
+
if (child is ScreenStackHeaderConfig) {
|
|
308
|
+
// we want to start transition on children of the toolbar too,
|
|
309
|
+
// which is not a child of ScreenStackHeaderConfig
|
|
310
|
+
startTransitionRecursive(child.toolbar)
|
|
311
|
+
}
|
|
312
|
+
if (child is ViewGroup) {
|
|
313
|
+
startTransitionRecursive(child)
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
235
319
|
private fun calculateHeaderHeight(): Pair<Double, Double> {
|
|
236
320
|
val actionBarTv = TypedValue()
|
|
237
|
-
val resolvedActionBarSize =
|
|
321
|
+
val resolvedActionBarSize =
|
|
322
|
+
context.theme.resolveAttribute(android.R.attr.actionBarSize, actionBarTv, true)
|
|
238
323
|
|
|
239
324
|
// Check if it's possible to get an attribute from theme context and assign a value from it.
|
|
240
325
|
// Otherwise, the default value will be returned.
|
|
241
|
-
val actionBarHeight =
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
326
|
+
val actionBarHeight =
|
|
327
|
+
TypedValue
|
|
328
|
+
.complexToDimensionPixelSize(actionBarTv.data, resources.displayMetrics)
|
|
329
|
+
.takeIf { resolvedActionBarSize && headerConfig?.isHeaderHidden != true && headerConfig?.isHeaderTranslucent != true }
|
|
330
|
+
?.let { PixelUtil.toDIPFromPixel(it.toFloat()).toDouble() } ?: 0.0
|
|
331
|
+
|
|
332
|
+
val statusBarHeight =
|
|
333
|
+
context.resources
|
|
334
|
+
.getIdentifier("status_bar_height", "dimen", "android")
|
|
335
|
+
// Count only status bar when action bar is visible and status bar is not hidden
|
|
336
|
+
.takeIf { it > 0 && isStatusBarHidden != true && actionBarHeight > 0 }
|
|
337
|
+
?.let { (context.resources::getDimensionPixelSize)(it) }
|
|
338
|
+
?.let { PixelUtil.toDIPFromPixel(it.toFloat()).toDouble() }
|
|
339
|
+
?: 0.0
|
|
251
340
|
|
|
252
341
|
return actionBarHeight to statusBarHeight
|
|
253
342
|
}
|
|
@@ -255,27 +344,48 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) {
|
|
|
255
344
|
private fun notifyHeaderHeightChange(headerHeight: Double) {
|
|
256
345
|
val screenContext = context as ReactContext
|
|
257
346
|
val surfaceId = UIManagerHelper.getSurfaceId(screenContext)
|
|
258
|
-
UIManagerHelper
|
|
347
|
+
UIManagerHelper
|
|
348
|
+
.getEventDispatcherForReactTag(screenContext, id)
|
|
259
349
|
?.dispatchEvent(HeaderHeightChangeEvent(surfaceId, id, headerHeight))
|
|
260
350
|
}
|
|
261
351
|
|
|
262
352
|
enum class StackPresentation {
|
|
263
|
-
PUSH,
|
|
353
|
+
PUSH,
|
|
354
|
+
MODAL,
|
|
355
|
+
TRANSPARENT_MODAL,
|
|
264
356
|
}
|
|
265
357
|
|
|
266
358
|
enum class StackAnimation {
|
|
267
|
-
DEFAULT,
|
|
359
|
+
DEFAULT,
|
|
360
|
+
NONE,
|
|
361
|
+
FADE,
|
|
362
|
+
SLIDE_FROM_BOTTOM,
|
|
363
|
+
SLIDE_FROM_RIGHT,
|
|
364
|
+
SLIDE_FROM_LEFT,
|
|
365
|
+
FADE_FROM_BOTTOM,
|
|
366
|
+
IOS,
|
|
268
367
|
}
|
|
269
368
|
|
|
270
369
|
enum class ReplaceAnimation {
|
|
271
|
-
PUSH,
|
|
370
|
+
PUSH,
|
|
371
|
+
POP,
|
|
272
372
|
}
|
|
273
373
|
|
|
274
374
|
enum class ActivityState {
|
|
275
|
-
INACTIVE,
|
|
375
|
+
INACTIVE,
|
|
376
|
+
TRANSITIONING_OR_BELOW_TOP,
|
|
377
|
+
ON_TOP,
|
|
276
378
|
}
|
|
277
379
|
|
|
278
380
|
enum class WindowTraits {
|
|
279
|
-
ORIENTATION,
|
|
381
|
+
ORIENTATION,
|
|
382
|
+
COLOR,
|
|
383
|
+
STYLE,
|
|
384
|
+
TRANSLUCENT,
|
|
385
|
+
HIDDEN,
|
|
386
|
+
ANIMATED,
|
|
387
|
+
NAVIGATION_BAR_COLOR,
|
|
388
|
+
NAVIGATION_BAR_TRANSLUCENT,
|
|
389
|
+
NAVIGATION_BAR_HIDDEN,
|
|
280
390
|
}
|
|
281
391
|
}
|