react-native-screens 4.0.0-beta.9 → 4.1.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 +9 -2
- package/android/CMakeLists.txt +28 -19
- package/android/src/main/cpp/jni-adapter.cpp +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +13 -3
- package/android/src/main/java/com/swmansion/rnscreens/NativeDismissalObserver.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +64 -68
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetBehaviorExt.kt +42 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingFragment.kt +24 -19
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/SheetUtils.kt +8 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +10 -3
- package/android/src/main/jni/CMakeLists.txt +28 -19
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +2 -2
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +1 -1
- package/ios/RNSConvert.h +13 -6
- package/ios/RNSConvert.mm +130 -94
- package/ios/RNSEnums.h +47 -0
- package/ios/RNSFullWindowOverlay.mm +4 -0
- package/ios/RNSPercentDrivenInteractiveTransition.h +12 -0
- package/ios/RNSPercentDrivenInteractiveTransition.mm +69 -0
- package/ios/RNSScreen.h +14 -0
- package/ios/RNSScreen.mm +35 -9
- package/ios/RNSScreenContainer.mm +5 -0
- package/ios/RNSScreenFooter.mm +24 -25
- package/ios/RNSScreenStack.mm +79 -8
- package/ios/RNSScreenStackAnimator.h +13 -1
- package/ios/RNSScreenStackAnimator.mm +233 -130
- package/ios/RNSScreenStackHeaderConfig.h +10 -7
- package/ios/RNSScreenStackHeaderConfig.mm +49 -30
- package/ios/RNSScreenStackHeaderSubview.mm +4 -0
- package/ios/utils/RNSDefines.h +7 -0
- package/lib/commonjs/components/DebugContainer.js +40 -0
- package/lib/commonjs/components/DebugContainer.js.map +1 -0
- package/lib/commonjs/components/DebugContainer.web.js +15 -0
- package/lib/commonjs/components/DebugContainer.web.js.map +1 -0
- package/lib/commonjs/components/FullWindowOverlay.js +8 -5
- package/lib/commonjs/components/FullWindowOverlay.js.map +1 -1
- package/lib/commonjs/components/Screen.js +28 -10
- package/lib/commonjs/components/Screen.js.map +1 -1
- package/lib/commonjs/components/ScreenContainer.js +3 -5
- package/lib/commonjs/components/ScreenContainer.js.map +1 -1
- package/lib/commonjs/components/ScreenContainer.web.js +3 -4
- package/lib/commonjs/components/ScreenContainer.web.js.map +1 -1
- package/lib/commonjs/components/ScreenContentWrapper.js +2 -4
- package/lib/commonjs/components/ScreenContentWrapper.js.map +1 -1
- package/lib/commonjs/components/ScreenContentWrapper.web.js +1 -2
- package/lib/commonjs/components/ScreenContentWrapper.web.js.map +1 -1
- package/lib/commonjs/components/ScreenFooter.js +2 -8
- package/lib/commonjs/components/ScreenFooter.js.map +1 -1
- package/lib/commonjs/components/ScreenFooter.web.js +1 -2
- package/lib/commonjs/components/ScreenFooter.web.js.map +1 -1
- package/lib/commonjs/components/ScreenStack.js +47 -9
- package/lib/commonjs/components/ScreenStack.js.map +1 -1
- package/lib/commonjs/components/ScreenStack.web.js +2 -1
- package/lib/commonjs/components/ScreenStack.web.js.map +1 -1
- package/lib/commonjs/components/ScreenStackHeaderConfig.js +10 -10
- package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/commonjs/components/ScreenStackItem.js +99 -0
- package/lib/commonjs/components/ScreenStackItem.js.map +1 -0
- package/lib/commonjs/components/SearchBar.js +5 -5
- package/lib/commonjs/components/SearchBar.js.map +1 -1
- package/lib/commonjs/components/SearchBar.web.js +3 -4
- package/lib/commonjs/components/SearchBar.web.js.map +1 -1
- package/lib/commonjs/contexts.js +11 -0
- package/lib/commonjs/contexts.js.map +1 -0
- package/lib/commonjs/core.js +0 -3
- package/lib/commonjs/core.js.map +1 -1
- package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +2 -2
- package/lib/commonjs/gesture-handler/GestureDetectorProvider.js.map +1 -1
- package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +3 -3
- package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -1
- package/lib/commonjs/gesture-handler/fabricUtils.js +54 -18
- package/lib/commonjs/gesture-handler/fabricUtils.js.map +1 -1
- package/lib/commonjs/index.js +23 -86
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +4 -0
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
- package/lib/commonjs/native-stack/views/FooterComponent.js +2 -2
- package/lib/commonjs/native-stack/views/FooterComponent.js.map +1 -1
- package/lib/commonjs/native-stack/views/HeaderConfig.js +10 -8
- package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +34 -39
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +2 -2
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreen.js +2 -2
- package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +2 -2
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/commonjs/utils.js +28 -6
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/components/DebugContainer.js +31 -0
- package/lib/module/components/DebugContainer.js.map +1 -0
- package/lib/module/components/DebugContainer.web.js +6 -0
- package/lib/module/components/DebugContainer.web.js.map +1 -0
- package/lib/module/components/FullWindowOverlay.js +9 -6
- package/lib/module/components/FullWindowOverlay.js.map +1 -1
- package/lib/module/components/Screen.js +27 -9
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/ScreenContainer.js +2 -4
- package/lib/module/components/ScreenContainer.js.map +1 -1
- package/lib/module/components/ScreenContainer.web.js +2 -3
- package/lib/module/components/ScreenContainer.web.js.map +1 -1
- package/lib/module/components/ScreenContentWrapper.js +1 -3
- package/lib/module/components/ScreenContentWrapper.js.map +1 -1
- package/lib/module/components/ScreenContentWrapper.web.js +0 -1
- package/lib/module/components/ScreenContentWrapper.web.js.map +1 -1
- package/lib/module/components/ScreenFooter.js +1 -7
- package/lib/module/components/ScreenFooter.js.map +1 -1
- package/lib/module/components/ScreenFooter.web.js +0 -1
- package/lib/module/components/ScreenFooter.web.js.map +1 -1
- package/lib/module/components/ScreenStack.js +46 -8
- package/lib/module/components/ScreenStack.js.map +1 -1
- package/lib/module/components/ScreenStack.web.js +2 -1
- package/lib/module/components/ScreenStack.web.js.map +1 -1
- package/lib/module/components/ScreenStackHeaderConfig.js +10 -8
- package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/module/components/ScreenStackItem.js +90 -0
- package/lib/module/components/ScreenStackItem.js.map +1 -0
- package/lib/module/components/SearchBar.js +3 -3
- package/lib/module/components/SearchBar.js.map +1 -1
- package/lib/module/components/SearchBar.web.js +2 -3
- package/lib/module/components/SearchBar.web.js.map +1 -1
- package/lib/module/contexts.js +4 -0
- package/lib/module/contexts.js.map +1 -0
- package/lib/module/core.js +0 -3
- package/lib/module/core.js.map +1 -1
- package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/module/gesture-handler/GestureDetectorProvider.js +1 -1
- package/lib/module/gesture-handler/GestureDetectorProvider.js.map +1 -1
- package/lib/module/gesture-handler/ScreenGestureDetector.js +3 -3
- package/lib/module/gesture-handler/ScreenGestureDetector.js.map +1 -1
- package/lib/module/gesture-handler/fabricUtils.js +55 -17
- package/lib/module/gesture-handler/fabricUtils.js.map +1 -1
- package/lib/module/index.js +12 -18
- package/lib/module/index.js.map +1 -1
- package/lib/module/native-stack/navigators/createNativeStackNavigator.js +4 -0
- package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
- package/lib/module/native-stack/views/FooterComponent.js +1 -1
- package/lib/module/native-stack/views/FooterComponent.js.map +1 -1
- package/lib/module/native-stack/views/HeaderConfig.js +3 -1
- package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +28 -33
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js +1 -2
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreen.js +1 -2
- package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreenProvider.js +1 -1
- package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/module/utils.js +26 -5
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/components/DebugContainer.d.ts +15 -0
- package/lib/typescript/components/DebugContainer.d.ts.map +1 -0
- package/lib/typescript/components/DebugContainer.web.d.ts +4 -0
- package/lib/typescript/components/DebugContainer.web.d.ts.map +1 -0
- package/lib/typescript/components/FullWindowOverlay.d.ts.map +1 -1
- package/lib/typescript/components/Screen.d.ts +2 -7
- package/lib/typescript/components/Screen.d.ts.map +1 -1
- package/lib/typescript/components/Screen.web.d.ts +1 -1
- package/lib/typescript/components/Screen.web.d.ts.map +1 -1
- package/lib/typescript/components/ScreenContainer.d.ts +1 -3
- package/lib/typescript/components/ScreenContainer.d.ts.map +1 -1
- package/lib/typescript/components/ScreenContainer.web.d.ts +2 -3
- package/lib/typescript/components/ScreenContainer.web.d.ts.map +1 -1
- package/lib/typescript/components/ScreenContentWrapper.d.ts +0 -1
- package/lib/typescript/components/ScreenContentWrapper.d.ts.map +1 -1
- package/lib/typescript/components/ScreenContentWrapper.web.d.ts +0 -1
- package/lib/typescript/components/ScreenContentWrapper.web.d.ts.map +1 -1
- package/lib/typescript/components/ScreenFooter.d.ts +0 -4
- package/lib/typescript/components/ScreenFooter.d.ts.map +1 -1
- package/lib/typescript/components/ScreenFooter.web.d.ts +0 -1
- package/lib/typescript/components/ScreenFooter.web.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStack.d.ts +1 -1
- package/lib/typescript/components/ScreenStack.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStack.web.d.ts +2 -1
- package/lib/typescript/components/ScreenStack.web.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +3 -3
- package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts +1 -1
- package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStackItem.d.ts +11 -0
- package/lib/typescript/components/ScreenStackItem.d.ts.map +1 -0
- package/lib/typescript/components/SearchBar.d.ts +1 -15
- package/lib/typescript/components/SearchBar.d.ts.map +1 -1
- package/lib/typescript/components/SearchBar.web.d.ts +2 -3
- package/lib/typescript/components/SearchBar.web.d.ts.map +1 -1
- package/lib/typescript/contexts.d.ts +5 -0
- package/lib/typescript/contexts.d.ts.map +1 -0
- package/lib/typescript/core.d.ts +0 -1
- package/lib/typescript/core.d.ts.map +1 -1
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +9 -3
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.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/gesture-handler/ScreenGestureDetector.d.ts +2 -2
- package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts.map +1 -1
- package/lib/typescript/gesture-handler/fabricUtils.d.ts +7 -5
- package/lib/typescript/gesture-handler/fabricUtils.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +10 -16
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +3 -0
- package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +58 -12
- package/lib/typescript/native-stack/types.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/views/HeaderConfig.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
- package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +1 -1
- package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts.map +1 -1
- package/lib/typescript/reanimated/ReanimatedScreen.d.ts +1 -1
- package/lib/typescript/reanimated/ReanimatedScreen.d.ts.map +1 -1
- package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +52 -16
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils.d.ts +26 -1
- package/lib/typescript/utils.d.ts.map +1 -1
- package/native-stack/README.md +5 -4
- package/native-stack/package.json +4 -4
- package/package.json +1 -1
- package/react-native.config.js +16 -28
- package/src/components/DebugContainer.tsx +47 -0
- package/src/components/DebugContainer.web.tsx +7 -0
- package/src/components/FullWindowOverlay.tsx +10 -2
- package/src/components/Screen.tsx +38 -24
- package/src/components/Screen.web.tsx +1 -1
- package/src/components/ScreenContainer.tsx +4 -11
- package/src/components/ScreenContainer.web.tsx +2 -3
- package/src/components/ScreenContentWrapper.tsx +2 -5
- package/src/components/ScreenContentWrapper.web.tsx +1 -2
- package/src/components/ScreenFooter.tsx +2 -8
- package/src/components/ScreenFooter.web.tsx +1 -2
- package/src/components/ScreenStack.tsx +99 -12
- package/src/components/ScreenStack.web.tsx +3 -1
- package/src/components/ScreenStackHeaderConfig.tsx +25 -14
- package/src/components/ScreenStackHeaderConfig.web.tsx +1 -1
- package/src/components/ScreenStackItem.tsx +162 -0
- package/src/components/SearchBar.tsx +4 -7
- package/src/components/SearchBar.web.tsx +2 -3
- package/src/contexts.tsx +9 -0
- package/src/core.ts +0 -3
- package/src/fabric/ModalScreenNativeComponent.ts +11 -3
- package/src/fabric/ScreenNativeComponent.ts +2 -2
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +2 -1
- package/src/fabric/ScreenStackNativeComponent.ts +1 -1
- package/src/gesture-handler/GestureDetectorProvider.tsx +2 -2
- package/src/gesture-handler/ScreenGestureDetector.tsx +4 -4
- package/src/gesture-handler/fabricUtils.ts +74 -27
- package/src/index.tsx +11 -37
- package/src/native-stack/navigators/createNativeStackNavigator.tsx +3 -0
- package/src/native-stack/types.tsx +60 -17
- package/src/native-stack/utils/getDefaultHeaderHeight.tsx +1 -1
- package/src/native-stack/views/FooterComponent.tsx +1 -1
- package/src/native-stack/views/HeaderConfig.tsx +7 -5
- package/src/native-stack/views/NativeStackView.tsx +48 -67
- package/src/reanimated/ReanimatedNativeStackScreen.tsx +2 -2
- package/src/reanimated/ReanimatedScreen.tsx +2 -1
- package/src/reanimated/ReanimatedScreenProvider.tsx +2 -1
- package/src/types.tsx +72 -15
- package/src/utils.ts +27 -5
|
@@ -38,25 +38,34 @@ target_include_directories(
|
|
|
38
38
|
${LIB_ANDROID_GENERATED_COMPONENTS_DIR}
|
|
39
39
|
)
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
41
|
+
if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
|
|
42
|
+
target_link_libraries(
|
|
43
|
+
${LIB_TARGET_NAME}
|
|
44
|
+
ReactAndroid::reactnative
|
|
45
|
+
ReactAndroid::jsi
|
|
46
|
+
fbjni::fbjni
|
|
47
|
+
)
|
|
48
|
+
else()
|
|
49
|
+
target_link_libraries(
|
|
50
|
+
${LIB_TARGET_NAME}
|
|
51
|
+
fbjni
|
|
52
|
+
folly_runtime
|
|
53
|
+
glog
|
|
54
|
+
jsi
|
|
55
|
+
react_codegen_rncore
|
|
56
|
+
react_debug
|
|
57
|
+
react_nativemodule_core
|
|
58
|
+
react_render_core
|
|
59
|
+
react_render_debug
|
|
60
|
+
react_render_graphics
|
|
61
|
+
react_render_mapbuffer
|
|
62
|
+
react_render_componentregistry
|
|
63
|
+
react_utils
|
|
64
|
+
rrc_view
|
|
65
|
+
turbomodulejsijni
|
|
66
|
+
yoga
|
|
67
|
+
)
|
|
68
|
+
endif()
|
|
60
69
|
|
|
61
70
|
target_compile_options(
|
|
62
71
|
${LIB_TARGET_NAME}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java
CHANGED
|
@@ -52,7 +52,7 @@ public class RNSScreenManagerDelegate<T extends View, U extends BaseViewManagerI
|
|
|
52
52
|
mViewManager.setFullScreenSwipeEnabled(view, value == null ? false : (boolean) value);
|
|
53
53
|
break;
|
|
54
54
|
case "fullScreenSwipeShadowEnabled":
|
|
55
|
-
mViewManager.setFullScreenSwipeShadowEnabled(view, value == null ?
|
|
55
|
+
mViewManager.setFullScreenSwipeShadowEnabled(view, value == null ? true : (boolean) value);
|
|
56
56
|
break;
|
|
57
57
|
case "homeIndicatorHidden":
|
|
58
58
|
mViewManager.setHomeIndicatorHidden(view, value == null ? false : (boolean) value);
|
|
@@ -91,7 +91,7 @@ public class RNSScreenManagerDelegate<T extends View, U extends BaseViewManagerI
|
|
|
91
91
|
mViewManager.setStackAnimation(view, (String) value);
|
|
92
92
|
break;
|
|
93
93
|
case "transitionDuration":
|
|
94
|
-
mViewManager.setTransitionDuration(view, value == null ?
|
|
94
|
+
mViewManager.setTransitionDuration(view, value == null ? 500 : ((Double) value).intValue());
|
|
95
95
|
break;
|
|
96
96
|
case "replaceAnimation":
|
|
97
97
|
mViewManager.setReplaceAnimation(view, (String) value);
|
|
@@ -26,10 +26,10 @@ findHeaderConfigChild(const YogaLayoutableShadowNode &screenShadowNode) {
|
|
|
26
26
|
return {};
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
#ifdef ANDROID
|
|
29
30
|
static constexpr const char *kScreenDummyLayoutHelperClass =
|
|
30
31
|
"com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper";
|
|
31
32
|
|
|
32
|
-
#ifdef ANDROID
|
|
33
33
|
std::optional<float> findHeaderHeight(
|
|
34
34
|
const int fontSize,
|
|
35
35
|
const bool isTitleEmpty) {
|
package/ios/RNSConvert.h
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
#ifdef RCT_NEW_ARCH_ENABLED
|
|
2
1
|
#import <UIKit/UIKit.h>
|
|
2
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
3
3
|
#import <react/renderer/components/rnscreens/Props.h>
|
|
4
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
4
5
|
#import "RNSEnums.h"
|
|
5
6
|
|
|
7
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
6
8
|
namespace react = facebook::react;
|
|
9
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
7
10
|
|
|
8
11
|
@interface RNSConvert : NSObject
|
|
9
12
|
|
|
13
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
14
|
+
|
|
10
15
|
+ (UISemanticContentAttribute)UISemanticContentAttributeFromCppEquivalent:
|
|
11
16
|
(react::RNSScreenStackHeaderConfigDirection)direction;
|
|
12
17
|
|
|
@@ -38,12 +43,14 @@ namespace react = facebook::react;
|
|
|
38
43
|
|
|
39
44
|
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement;
|
|
40
45
|
|
|
41
|
-
+ (NSMutableArray<NSNumber *> *)NSNumberMutableArrayFromFloatVector:(const std::vector<CGFloat> &)vector;
|
|
42
|
-
|
|
43
46
|
+ (NSMutableArray<NSNumber *> *)arrayFromVector:(const std::vector<CGFloat> &)vector;
|
|
44
47
|
|
|
45
|
-
+ (
|
|
46
|
-
|
|
47
|
-
@end
|
|
48
|
+
+ (RNSBlurEffectStyle)RNSBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect;
|
|
48
49
|
|
|
49
50
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
51
|
+
|
|
52
|
+
/// This method fails (by assertion) when `blurEffect == RNSBlurEffectStyleNone` which has no counter part in the UIKit
|
|
53
|
+
/// type.
|
|
54
|
+
+ (UIBlurEffectStyle)tryConvertRNSBlurEffectStyleToUIBlurEffectStyle:(RNSBlurEffectStyle)blurEffect;
|
|
55
|
+
|
|
56
|
+
@end
|
package/ios/RNSConvert.mm
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
#import "RNSConvert.h"
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
#ifndef RCT_NEW_ARCH_ENABLED
|
|
4
|
+
#import <React/RCTAssert.h>
|
|
5
|
+
#endif // !RCT_NEW_ARCH_ENABLED
|
|
6
|
+
|
|
4
7
|
@implementation RNSConvert
|
|
5
8
|
|
|
9
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
6
10
|
+ (UISemanticContentAttribute)UISemanticContentAttributeFromCppEquivalent:
|
|
7
11
|
(react::RNSScreenStackHeaderConfigDirection)direction
|
|
8
12
|
{
|
|
9
13
|
switch (direction) {
|
|
10
|
-
|
|
14
|
+
using enum react::RNSScreenStackHeaderConfigDirection;
|
|
15
|
+
|
|
16
|
+
case Rtl:
|
|
11
17
|
return UISemanticContentAttributeForceRightToLeft;
|
|
12
|
-
case
|
|
18
|
+
case Ltr:
|
|
13
19
|
return UISemanticContentAttributeForceLeftToRight;
|
|
14
20
|
}
|
|
15
21
|
}
|
|
@@ -18,11 +24,13 @@
|
|
|
18
24
|
(react::RNSScreenStackHeaderConfigBackButtonDisplayMode)backButtonDisplayMode
|
|
19
25
|
{
|
|
20
26
|
switch (backButtonDisplayMode) {
|
|
21
|
-
|
|
27
|
+
using enum react::RNSScreenStackHeaderConfigBackButtonDisplayMode;
|
|
28
|
+
|
|
29
|
+
case Default:
|
|
22
30
|
return UINavigationItemBackButtonDisplayModeDefault;
|
|
23
|
-
case
|
|
31
|
+
case Generic:
|
|
24
32
|
return UINavigationItemBackButtonDisplayModeGeneric;
|
|
25
|
-
case
|
|
33
|
+
case Minimal:
|
|
26
34
|
return UINavigationItemBackButtonDisplayModeMinimal;
|
|
27
35
|
}
|
|
28
36
|
}
|
|
@@ -31,19 +39,21 @@
|
|
|
31
39
|
(react::RNSScreenStackPresentation)stackPresentation
|
|
32
40
|
{
|
|
33
41
|
switch (stackPresentation) {
|
|
34
|
-
|
|
42
|
+
using enum react::RNSScreenStackPresentation;
|
|
43
|
+
|
|
44
|
+
case Push:
|
|
35
45
|
return RNSScreenStackPresentationPush;
|
|
36
|
-
case
|
|
46
|
+
case Modal:
|
|
37
47
|
return RNSScreenStackPresentationModal;
|
|
38
|
-
case
|
|
48
|
+
case FullScreenModal:
|
|
39
49
|
return RNSScreenStackPresentationFullScreenModal;
|
|
40
|
-
case
|
|
50
|
+
case FormSheet:
|
|
41
51
|
return RNSScreenStackPresentationFormSheet;
|
|
42
|
-
case
|
|
52
|
+
case ContainedModal:
|
|
43
53
|
return RNSScreenStackPresentationContainedModal;
|
|
44
|
-
case
|
|
54
|
+
case TransparentModal:
|
|
45
55
|
return RNSScreenStackPresentationTransparentModal;
|
|
46
|
-
case
|
|
56
|
+
case ContainedTransparentModal:
|
|
47
57
|
return RNSScreenStackPresentationContainedTransparentModal;
|
|
48
58
|
}
|
|
49
59
|
}
|
|
@@ -51,26 +61,27 @@
|
|
|
51
61
|
+ (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:(react::RNSScreenStackAnimation)stackAnimation
|
|
52
62
|
{
|
|
53
63
|
switch (stackAnimation) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
case
|
|
57
|
-
case
|
|
64
|
+
using enum react::RNSScreenStackAnimation;
|
|
65
|
+
// these three are intentionally grouped
|
|
66
|
+
case Slide_from_right:
|
|
67
|
+
case Ios_from_right:
|
|
68
|
+
case Default:
|
|
58
69
|
return RNSScreenStackAnimationDefault;
|
|
59
70
|
// these two are intentionally grouped
|
|
60
|
-
case
|
|
61
|
-
case
|
|
71
|
+
case Slide_from_left:
|
|
72
|
+
case Ios_from_left:
|
|
62
73
|
return RNSScreenStackAnimationSlideFromLeft;
|
|
63
|
-
case
|
|
74
|
+
case Flip:
|
|
64
75
|
return RNSScreenStackAnimationFlip;
|
|
65
|
-
case
|
|
76
|
+
case Simple_push:
|
|
66
77
|
return RNSScreenStackAnimationSimplePush;
|
|
67
|
-
case
|
|
78
|
+
case None:
|
|
68
79
|
return RNSScreenStackAnimationNone;
|
|
69
|
-
case
|
|
80
|
+
case Fade:
|
|
70
81
|
return RNSScreenStackAnimationFade;
|
|
71
|
-
case
|
|
82
|
+
case Slide_from_bottom:
|
|
72
83
|
return RNSScreenStackAnimationSlideFromBottom;
|
|
73
|
-
case
|
|
84
|
+
case Fade_from_bottom:
|
|
74
85
|
return RNSScreenStackAnimationFadeFromBottom;
|
|
75
86
|
}
|
|
76
87
|
}
|
|
@@ -79,17 +90,19 @@
|
|
|
79
90
|
(react::RNSScreenStackHeaderSubviewType)subviewType
|
|
80
91
|
{
|
|
81
92
|
switch (subviewType) {
|
|
82
|
-
|
|
93
|
+
using enum react::RNSScreenStackHeaderSubviewType;
|
|
94
|
+
|
|
95
|
+
case Left:
|
|
83
96
|
return RNSScreenStackHeaderSubviewTypeLeft;
|
|
84
|
-
case
|
|
97
|
+
case Right:
|
|
85
98
|
return RNSScreenStackHeaderSubviewTypeRight;
|
|
86
|
-
case
|
|
99
|
+
case Title:
|
|
87
100
|
return RNSScreenStackHeaderSubviewTypeTitle;
|
|
88
|
-
case
|
|
101
|
+
case Center:
|
|
89
102
|
return RNSScreenStackHeaderSubviewTypeCenter;
|
|
90
|
-
case
|
|
103
|
+
case SearchBar:
|
|
91
104
|
return RNSScreenStackHeaderSubviewTypeSearchBar;
|
|
92
|
-
case
|
|
105
|
+
case Back:
|
|
93
106
|
return RNSScreenStackHeaderSubviewTypeBackButton;
|
|
94
107
|
}
|
|
95
108
|
}
|
|
@@ -98,9 +111,10 @@
|
|
|
98
111
|
(react::RNSScreenReplaceAnimation)replaceAnimation
|
|
99
112
|
{
|
|
100
113
|
switch (replaceAnimation) {
|
|
101
|
-
|
|
114
|
+
using enum react::RNSScreenReplaceAnimation;
|
|
115
|
+
case Pop:
|
|
102
116
|
return RNSScreenReplaceAnimationPop;
|
|
103
|
-
case
|
|
117
|
+
case Push:
|
|
104
118
|
return RNSScreenReplaceAnimationPush;
|
|
105
119
|
}
|
|
106
120
|
}
|
|
@@ -108,9 +122,10 @@
|
|
|
108
122
|
+ (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:(react::RNSScreenSwipeDirection)swipeDirection
|
|
109
123
|
{
|
|
110
124
|
switch (swipeDirection) {
|
|
111
|
-
|
|
125
|
+
using enum react::RNSScreenSwipeDirection;
|
|
126
|
+
case Horizontal:
|
|
112
127
|
return RNSScreenSwipeDirectionHorizontal;
|
|
113
|
-
case
|
|
128
|
+
case Vertical:
|
|
114
129
|
return RNSScreenSwipeDirectionVertical;
|
|
115
130
|
}
|
|
116
131
|
}
|
|
@@ -140,13 +155,14 @@
|
|
|
140
155
|
(react::RNSSearchBarAutoCapitalize)autoCapitalize
|
|
141
156
|
{
|
|
142
157
|
switch (autoCapitalize) {
|
|
143
|
-
|
|
158
|
+
using enum react::RNSSearchBarAutoCapitalize;
|
|
159
|
+
case Words:
|
|
144
160
|
return UITextAutocapitalizationTypeWords;
|
|
145
|
-
case
|
|
161
|
+
case Sentences:
|
|
146
162
|
return UITextAutocapitalizationTypeSentences;
|
|
147
|
-
case
|
|
163
|
+
case Characters:
|
|
148
164
|
return UITextAutocapitalizationTypeAllCharacters;
|
|
149
|
-
case
|
|
165
|
+
case None:
|
|
150
166
|
return UITextAutocapitalizationTypeNone;
|
|
151
167
|
}
|
|
152
168
|
}
|
|
@@ -155,11 +171,12 @@
|
|
|
155
171
|
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement
|
|
156
172
|
{
|
|
157
173
|
switch (placement) {
|
|
158
|
-
|
|
174
|
+
using enum react::RNSSearchBarPlacement;
|
|
175
|
+
case Stacked:
|
|
159
176
|
return RNSSearchBarPlacementStacked;
|
|
160
|
-
case
|
|
177
|
+
case Automatic:
|
|
161
178
|
return RNSSearchBarPlacementAutomatic;
|
|
162
|
-
case
|
|
179
|
+
case Inline:
|
|
163
180
|
return RNSSearchBarPlacementInline;
|
|
164
181
|
}
|
|
165
182
|
}
|
|
@@ -173,71 +190,90 @@
|
|
|
173
190
|
return array;
|
|
174
191
|
}
|
|
175
192
|
|
|
176
|
-
+ (
|
|
193
|
+
+ (RNSBlurEffectStyle)RNSBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect
|
|
177
194
|
{
|
|
195
|
+
using enum react::RNSScreenStackHeaderConfigBlurEffect;
|
|
178
196
|
#if !TARGET_OS_TV && defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
|
|
179
197
|
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
|
|
180
198
|
if (@available(iOS 13.0, *)) {
|
|
181
199
|
switch (blurEffect) {
|
|
182
|
-
case
|
|
183
|
-
return
|
|
184
|
-
case
|
|
185
|
-
return
|
|
186
|
-
case
|
|
187
|
-
return
|
|
188
|
-
case
|
|
189
|
-
return
|
|
190
|
-
case
|
|
191
|
-
return
|
|
192
|
-
case
|
|
193
|
-
return
|
|
194
|
-
case
|
|
195
|
-
return
|
|
196
|
-
case
|
|
197
|
-
return
|
|
198
|
-
case
|
|
199
|
-
return
|
|
200
|
-
case
|
|
201
|
-
return
|
|
202
|
-
case
|
|
203
|
-
return
|
|
204
|
-
case
|
|
205
|
-
return
|
|
206
|
-
case
|
|
207
|
-
return
|
|
208
|
-
case
|
|
209
|
-
return
|
|
210
|
-
case
|
|
211
|
-
return
|
|
212
|
-
case
|
|
213
|
-
return
|
|
214
|
-
case
|
|
215
|
-
return
|
|
216
|
-
case
|
|
217
|
-
return
|
|
218
|
-
case
|
|
219
|
-
return
|
|
220
|
-
case
|
|
221
|
-
return
|
|
200
|
+
case None:
|
|
201
|
+
return RNSBlurEffectStyleNone;
|
|
202
|
+
case ExtraLight:
|
|
203
|
+
return RNSBlurEffectStyleExtraLight;
|
|
204
|
+
case Light:
|
|
205
|
+
return RNSBlurEffectStyleLight;
|
|
206
|
+
case Dark:
|
|
207
|
+
return RNSBlurEffectStyleDark;
|
|
208
|
+
case Regular:
|
|
209
|
+
return RNSBlurEffectStyleRegular;
|
|
210
|
+
case Prominent:
|
|
211
|
+
return RNSBlurEffectStyleProminent;
|
|
212
|
+
case SystemUltraThinMaterial:
|
|
213
|
+
return RNSBlurEffectStyleSystemUltraThinMaterial;
|
|
214
|
+
case SystemThinMaterial:
|
|
215
|
+
return RNSBlurEffectStyleSystemThinMaterial;
|
|
216
|
+
case SystemMaterial:
|
|
217
|
+
return RNSBlurEffectStyleSystemMaterial;
|
|
218
|
+
case SystemThickMaterial:
|
|
219
|
+
return RNSBlurEffectStyleSystemThickMaterial;
|
|
220
|
+
case SystemChromeMaterial:
|
|
221
|
+
return RNSBlurEffectStyleSystemChromeMaterial;
|
|
222
|
+
case SystemUltraThinMaterialLight:
|
|
223
|
+
return RNSBlurEffectStyleSystemUltraThinMaterialLight;
|
|
224
|
+
case SystemThinMaterialLight:
|
|
225
|
+
return RNSBlurEffectStyleSystemThinMaterialLight;
|
|
226
|
+
case SystemMaterialLight:
|
|
227
|
+
return RNSBlurEffectStyleSystemMaterialLight;
|
|
228
|
+
case SystemThickMaterialLight:
|
|
229
|
+
return RNSBlurEffectStyleSystemThickMaterialLight;
|
|
230
|
+
case SystemChromeMaterialLight:
|
|
231
|
+
return RNSBlurEffectStyleSystemChromeMaterialLight;
|
|
232
|
+
case SystemUltraThinMaterialDark:
|
|
233
|
+
return RNSBlurEffectStyleSystemUltraThinMaterialDark;
|
|
234
|
+
case SystemThinMaterialDark:
|
|
235
|
+
return RNSBlurEffectStyleSystemThinMaterialDark;
|
|
236
|
+
case SystemMaterialDark:
|
|
237
|
+
return RNSBlurEffectStyleSystemMaterialDark;
|
|
238
|
+
case SystemThickMaterialDark:
|
|
239
|
+
return RNSBlurEffectStyleSystemThickMaterialDark;
|
|
240
|
+
case SystemChromeMaterialDark:
|
|
241
|
+
return RNSBlurEffectStyleSystemChromeMaterialDark;
|
|
222
242
|
}
|
|
223
243
|
}
|
|
224
244
|
#endif
|
|
225
245
|
|
|
226
246
|
switch (blurEffect) {
|
|
227
|
-
case
|
|
228
|
-
return
|
|
229
|
-
case
|
|
230
|
-
return
|
|
231
|
-
case
|
|
232
|
-
return
|
|
233
|
-
case
|
|
234
|
-
return
|
|
235
|
-
case
|
|
247
|
+
case None:
|
|
248
|
+
return RNSBlurEffectStyleNone;
|
|
249
|
+
case Light:
|
|
250
|
+
return RNSBlurEffectStyleLight;
|
|
251
|
+
case Dark:
|
|
252
|
+
return RNSBlurEffectStyleDark;
|
|
253
|
+
case Regular:
|
|
254
|
+
return RNSBlurEffectStyleRegular;
|
|
255
|
+
case Prominent:
|
|
256
|
+
return RNSBlurEffectStyleProminent;
|
|
257
|
+
case ExtraLight:
|
|
236
258
|
default:
|
|
237
|
-
return
|
|
259
|
+
return RNSBlurEffectStyleNone;
|
|
238
260
|
}
|
|
239
261
|
}
|
|
240
262
|
|
|
241
|
-
|
|
263
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
242
264
|
|
|
265
|
+
+ (UIBlurEffectStyle)tryConvertRNSBlurEffectStyleToUIBlurEffectStyle:(RNSBlurEffectStyle)blurEffect
|
|
266
|
+
{
|
|
267
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
268
|
+
react_native_assert(blurEffect != RNSBlurEffectStyleNone);
|
|
269
|
+
#else
|
|
270
|
+
RCTAssert(
|
|
271
|
+
blurEffect != RNSBlurEffectStyleNone, @"RNSBlurEffectStyleNone variant is not convertible to UIBlurEffectStyle");
|
|
243
272
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
273
|
+
|
|
274
|
+
// Cast safety: RNSBlurEffectStyle is defined in such way that its values map 1:1 with
|
|
275
|
+
// UIBlurEffectStyle, except RNSBlurEffectStyleNone which is excluded above.
|
|
276
|
+
return (UIBlurEffectStyle)blurEffect;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
@end
|
package/ios/RNSEnums.h
CHANGED
|
@@ -30,6 +30,7 @@ typedef NS_ENUM(NSInteger, RNSScreenSwipeDirection) {
|
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
typedef NS_ENUM(NSInteger, RNSActivityState) {
|
|
33
|
+
RNSActivityStateUndefined = -1,
|
|
33
34
|
RNSActivityStateInactive = 0,
|
|
34
35
|
RNSActivityStateTransitioningOrBelowTop = 1,
|
|
35
36
|
RNSActivityStateOnTop = 2
|
|
@@ -70,3 +71,49 @@ typedef NS_ENUM(NSInteger, RNSSearchBarPlacement) {
|
|
|
70
71
|
RNSSearchBarPlacementInline,
|
|
71
72
|
RNSSearchBarPlacementStacked,
|
|
72
73
|
};
|
|
74
|
+
|
|
75
|
+
// Redefinition of UIBlurEffectStyle. We need to represent additional case of `None`.
|
|
76
|
+
typedef NS_ENUM(NSInteger, RNSBlurEffectStyle) {
|
|
77
|
+
/// No blur effect should be visible
|
|
78
|
+
RNSBlurEffectStyleNone = -1,
|
|
79
|
+
RNSBlurEffectStyleExtraLight = UIBlurEffectStyleExtraLight,
|
|
80
|
+
RNSBlurEffectStyleLight = UIBlurEffectStyleLight,
|
|
81
|
+
RNSBlurEffectStyleDark = UIBlurEffectStyleDark,
|
|
82
|
+
// TODO: Add support for this variant on tvOS
|
|
83
|
+
// RNSBlurEffectStyleExtraDark = UIBlurEffectStyleExtraDark API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios)
|
|
84
|
+
// API_UNAVAILABLE(watchos),
|
|
85
|
+
RNSBlurEffectStyleRegular API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(watchos) = UIBlurEffectStyleRegular,
|
|
86
|
+
RNSBlurEffectStyleProminent API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(watchos) = UIBlurEffectStyleProminent,
|
|
87
|
+
RNSBlurEffectStyleSystemUltraThinMaterial API_AVAILABLE(ios(13.0))
|
|
88
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemUltraThinMaterial,
|
|
89
|
+
RNSBlurEffectStyleSystemThinMaterial API_AVAILABLE(ios(13.0))
|
|
90
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThinMaterial,
|
|
91
|
+
RNSBlurEffectStyleSystemMaterial API_AVAILABLE(ios(13.0))
|
|
92
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemMaterial,
|
|
93
|
+
RNSBlurEffectStyleSystemThickMaterial API_AVAILABLE(ios(13.0))
|
|
94
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThickMaterial,
|
|
95
|
+
RNSBlurEffectStyleSystemChromeMaterial API_AVAILABLE(ios(13.0))
|
|
96
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemChromeMaterial,
|
|
97
|
+
RNSBlurEffectStyleSystemUltraThinMaterialLight API_AVAILABLE(ios(13.0))
|
|
98
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemUltraThinMaterialLight,
|
|
99
|
+
RNSBlurEffectStyleSystemThinMaterialLight API_AVAILABLE(ios(13.0))
|
|
100
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThinMaterialLight,
|
|
101
|
+
RNSBlurEffectStyleSystemMaterialLight API_AVAILABLE(ios(13.0))
|
|
102
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemMaterialLight,
|
|
103
|
+
RNSBlurEffectStyleSystemThickMaterialLight API_AVAILABLE(ios(13.0))
|
|
104
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThickMaterialLight,
|
|
105
|
+
RNSBlurEffectStyleSystemChromeMaterialLight API_AVAILABLE(ios(13.0))
|
|
106
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemChromeMaterialLight,
|
|
107
|
+
|
|
108
|
+
RNSBlurEffectStyleSystemUltraThinMaterialDark API_AVAILABLE(ios(13.0))
|
|
109
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemUltraThinMaterialDark,
|
|
110
|
+
RNSBlurEffectStyleSystemThinMaterialDark API_AVAILABLE(ios(13.0))
|
|
111
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThinMaterialDark,
|
|
112
|
+
RNSBlurEffectStyleSystemMaterialDark API_AVAILABLE(ios(13.0))
|
|
113
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemMaterialDark,
|
|
114
|
+
RNSBlurEffectStyleSystemThickMaterialDark API_AVAILABLE(ios(13.0))
|
|
115
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThickMaterialDark,
|
|
116
|
+
RNSBlurEffectStyleSystemChromeMaterialDark API_AVAILABLE(ios(13.0))
|
|
117
|
+
API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemChromeMaterialDark
|
|
118
|
+
|
|
119
|
+
} API_AVAILABLE(ios(8.0)) API_UNAVAILABLE(watchos);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#import <UIKit/UIKit.h>
|
|
2
2
|
|
|
3
|
+
#import "RNSDefines.h"
|
|
3
4
|
#import "RNSFullWindowOverlay.h"
|
|
4
5
|
|
|
5
6
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
@@ -198,6 +199,8 @@
|
|
|
198
199
|
[childComponentView removeFromSuperview];
|
|
199
200
|
}
|
|
200
201
|
|
|
202
|
+
RNS_IGNORE_SUPER_CALL_BEGIN
|
|
203
|
+
// We do not set frame for ouselves, but rather for the container.
|
|
201
204
|
- (void)updateLayoutMetrics:(react::LayoutMetrics const &)layoutMetrics
|
|
202
205
|
oldLayoutMetrics:(react::LayoutMetrics const &)oldLayoutMetrics
|
|
203
206
|
{
|
|
@@ -205,6 +208,7 @@
|
|
|
205
208
|
_reactFrame = frame;
|
|
206
209
|
[_container setFrame:frame];
|
|
207
210
|
}
|
|
211
|
+
RNS_IGNORE_SUPER_CALL_END
|
|
208
212
|
|
|
209
213
|
#else
|
|
210
214
|
#pragma mark - Paper specific
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#import <UIKit/UIKit.h>
|
|
2
|
+
#import "RNSScreenStackAnimator.h"
|
|
3
|
+
|
|
4
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
5
|
+
|
|
6
|
+
@interface RNSPercentDrivenInteractiveTransition : UIPercentDrivenInteractiveTransition
|
|
7
|
+
|
|
8
|
+
@property (nonatomic, nullable) RNSScreenStackAnimator *animationController;
|
|
9
|
+
|
|
10
|
+
@end
|
|
11
|
+
|
|
12
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#import "RNSPercentDrivenInteractiveTransition.h"
|
|
2
|
+
|
|
3
|
+
@implementation RNSPercentDrivenInteractiveTransition {
|
|
4
|
+
RNSScreenStackAnimator *_animationController;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
#pragma mark - UIViewControllerInteractiveTransitioning
|
|
8
|
+
|
|
9
|
+
- (void)startInteractiveTransition:(id<UIViewControllerContextTransitioning>)transitionContext
|
|
10
|
+
{
|
|
11
|
+
[super startInteractiveTransition:transitionContext];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#pragma mark - UIPercentDrivenInteractiveTransition
|
|
15
|
+
|
|
16
|
+
// `updateInteractiveTransition`, `finishInteractiveTransition`,
|
|
17
|
+
// `cancelInteractiveTransition` are forwared by superclass to
|
|
18
|
+
// corresponding methods in transition context. In case
|
|
19
|
+
// of "classical CA driven animations", such as UIView animation blocks
|
|
20
|
+
// or direct utilization of CoreAnimation API, context drives the animation,
|
|
21
|
+
// however in case of UIViewPropertyAnimator it does not. We need
|
|
22
|
+
// to drive animation manually and this is exactly what happens below.
|
|
23
|
+
|
|
24
|
+
- (void)updateInteractiveTransition:(CGFloat)percentComplete
|
|
25
|
+
{
|
|
26
|
+
if (_animationController != nil) {
|
|
27
|
+
[_animationController.inFlightAnimator setFractionComplete:percentComplete];
|
|
28
|
+
}
|
|
29
|
+
[super updateInteractiveTransition:percentComplete];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
- (void)finishInteractiveTransition
|
|
33
|
+
{
|
|
34
|
+
[self finalizeInteractiveTransitionWithAnimationWasCancelled:NO];
|
|
35
|
+
[super finishInteractiveTransition];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
- (void)cancelInteractiveTransition
|
|
39
|
+
{
|
|
40
|
+
[self finalizeInteractiveTransitionWithAnimationWasCancelled:YES];
|
|
41
|
+
[super cancelInteractiveTransition];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#pragma mark - Helpers
|
|
45
|
+
|
|
46
|
+
- (void)finalizeInteractiveTransitionWithAnimationWasCancelled:(BOOL)cancelled
|
|
47
|
+
{
|
|
48
|
+
if (_animationController == nil) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
UIViewPropertyAnimator *_Nullable animator = _animationController.inFlightAnimator;
|
|
53
|
+
if (animator == nil) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
BOOL shouldReverseAnimation = cancelled;
|
|
58
|
+
|
|
59
|
+
id<UITimingCurveProvider> timingParams = [_animationController timingParamsForAnimationCompletion];
|
|
60
|
+
|
|
61
|
+
[animator pauseAnimation];
|
|
62
|
+
[animator setReversed:shouldReverseAnimation];
|
|
63
|
+
[animator continueAnimationWithTimingParameters:timingParams durationFactor:(1 - animator.fractionComplete)];
|
|
64
|
+
|
|
65
|
+
// System retains it & we don't need it anymore.
|
|
66
|
+
_animationController = nil;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@end
|
package/ios/RNSScreen.h
CHANGED
|
@@ -100,6 +100,8 @@ namespace react = facebook::react;
|
|
|
100
100
|
@property (nonatomic) react::LayoutMetrics newLayoutMetrics;
|
|
101
101
|
@property (weak, nonatomic) RNSScreenStackHeaderConfig *config;
|
|
102
102
|
@property (nonatomic, readonly) BOOL hasHeaderConfig;
|
|
103
|
+
@property (nonatomic, readonly, getter=isMarkedForUnmountInCurrentTransaction)
|
|
104
|
+
BOOL markedForUnmountInCurrentTransaction;
|
|
103
105
|
#else
|
|
104
106
|
@property (nonatomic, copy) RCTDirectEventBlock onAppear;
|
|
105
107
|
@property (nonatomic, copy) RCTDirectEventBlock onDisappear;
|
|
@@ -124,6 +126,10 @@ namespace react = facebook::react;
|
|
|
124
126
|
- (void)updateBounds;
|
|
125
127
|
- (void)notifyDismissedWithCount:(int)dismissCount;
|
|
126
128
|
- (instancetype)initWithFrame:(CGRect)frame;
|
|
129
|
+
/// Tell `Screen` that it will be unmounted in next transaction.
|
|
130
|
+
/// The component needs this so that we can later decide whether to
|
|
131
|
+
/// replace it with snapshot or not.
|
|
132
|
+
- (void)willBeUnmountedInUpcomingTransaction;
|
|
127
133
|
#else
|
|
128
134
|
- (instancetype)initWithBridge:(RCTBridge *)bridge;
|
|
129
135
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
@@ -133,6 +139,14 @@ namespace react = facebook::react;
|
|
|
133
139
|
- (BOOL)isModal;
|
|
134
140
|
- (BOOL)isPresentedAsNativeModal;
|
|
135
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Tell `Screen` component that it has been removed from react state and can safely cleanup
|
|
144
|
+
* any retained resources.
|
|
145
|
+
*
|
|
146
|
+
* Note, that on old architecture this method might be called by RN via `RCTInvalidating` protocol.
|
|
147
|
+
*/
|
|
148
|
+
- (void)invalidate;
|
|
149
|
+
|
|
136
150
|
/// Looks for header configuration in instance's `reactSubviews` and returns it. If not present returns `nil`.
|
|
137
151
|
- (RNSScreenStackHeaderConfig *_Nullable)findHeaderConfig;
|
|
138
152
|
|