react-native-screens 3.10.1 → 3.12.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/LICENSE +1 -1
- package/README.md +13 -7
- package/RNScreens.podspec +36 -6
- package/android/build.gradle +74 -3
- package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +49 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/RNScreensComponentsRegistry.java +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +11 -2
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +52 -21
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +64 -33
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +9 -31
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +0 -30
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +12 -5
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +83 -18
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +17 -5
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +14 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +41 -14
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +72 -11
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +18 -1
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +7 -2
- package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +29 -2
- package/android/src/main/jni/Android.mk +45 -0
- package/android/src/main/jni/OnLoad.cpp +9 -0
- package/android/src/main/jni/RNScreensComponentsRegistry.cpp +66 -0
- package/android/src/main/jni/RNScreensComponentsRegistry.h +34 -0
- package/android/src/main/res/anim/rns_default_enter_in.xml +18 -0
- package/android/src/main/res/anim/rns_default_enter_out.xml +19 -0
- package/android/src/main/res/anim/rns_default_exit_in.xml +17 -0
- package/android/src/main/res/anim/rns_default_exit_out.xml +18 -0
- package/android/src/main/res/anim/rns_fade_in.xml +7 -0
- package/android/src/main/res/anim/rns_fade_out.xml +7 -0
- package/android/src/main/res/anim/rns_no_animation_20.xml +6 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +71 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +30 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +104 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +41 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerDelegate.java +31 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerInterface.java +17 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerInterface.java +16 -0
- package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +16 -0
- package/common/cpp/Android.mk +38 -0
- package/common/cpp/rnscreens/RNSScreenComponentDescriptor.h +41 -0
- package/common/cpp/rnscreens/RNSScreenShadowNode.cpp +9 -0
- package/common/cpp/rnscreens/RNSScreenShadowNode.h +29 -0
- package/common/cpp/rnscreens/RNSScreenState.cpp +14 -0
- package/common/cpp/rnscreens/RNSScreenState.h +46 -0
- package/createNativeStackNavigator/README.md +12 -0
- package/ios/RNSScreen.h +10 -0
- package/ios/RNSScreen.m +34 -0
- package/ios/RNSScreenComponentView.h +23 -0
- package/ios/RNSScreenComponentView.mm +159 -0
- package/ios/RNSScreenContainer.m +5 -0
- package/ios/RNSScreenController.h +10 -0
- package/ios/RNSScreenController.mm +79 -0
- package/ios/RNSScreenStack.m +22 -7
- package/ios/RNSScreenStackAnimator.m +45 -14
- package/ios/RNSScreenStackComponentView.h +15 -0
- package/ios/RNSScreenStackComponentView.mm +295 -0
- package/ios/RNSScreenStackHeaderConfig.m +4 -1
- package/ios/RNSScreenStackHeaderConfigComponentView.h +42 -0
- package/ios/RNSScreenStackHeaderConfigComponentView.mm +662 -0
- package/ios/RNSScreenStackHeaderSubviewComponentView.h +14 -0
- package/ios/RNSScreenStackHeaderSubviewComponentView.mm +77 -0
- package/ios/RNSScreenWindowTraits.h +1 -0
- package/ios/RNSScreenWindowTraits.m +20 -0
- package/ios/UIViewController+RNScreens.m +10 -0
- package/ios/utils/RNSUIBarButtonItem.h +5 -0
- package/ios/utils/RNSUIBarButtonItem.mm +22 -0
- package/lib/commonjs/fabric/Screen.js +27 -0
- package/lib/commonjs/fabric/Screen.js.map +1 -0
- package/lib/commonjs/fabric/ScreenNativeComponent.js +23 -0
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStack.js +27 -0
- package/lib/commonjs/fabric/ScreenStack.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +27 -0
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStackHeaderSubview.js +34 -0
- package/lib/commonjs/fabric/ScreenStackHeaderSubview.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +27 -0
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js +21 -0
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/index.js +40 -0
- package/lib/commonjs/fabric/index.js.map +1 -0
- package/lib/commonjs/index.native.js +32 -15
- package/lib/commonjs/index.native.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +33 -4
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/fabric/Screen.js +11 -0
- package/lib/module/fabric/Screen.js.map +1 -0
- package/lib/module/fabric/ScreenNativeComponent.js +11 -0
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenStack.js +12 -0
- package/lib/module/fabric/ScreenStack.js.map +1 -0
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +10 -0
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenStackHeaderSubview.js +21 -0
- package/lib/module/fabric/ScreenStackHeaderSubview.js.map +1 -0
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +10 -0
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenStackNativeComponent.js +9 -0
- package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -0
- package/lib/module/fabric/index.js +6 -0
- package/lib/module/fabric/index.js.map +1 -0
- package/lib/module/index.native.js +32 -15
- package/lib/module/index.native.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +33 -4
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +34 -0
- package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +1 -1
- package/lib/typescript/reanimated/ReanimatedScreen.d.ts +1 -1
- package/lib/typescript/types.d.ts +60 -5
- package/native-stack/README.md +39 -3
- package/package.json +17 -3
- package/reanimated/package.json +6 -0
- package/src/fabric/Screen.js +12 -0
- package/src/fabric/ScreenNativeComponent.js +64 -0
- package/src/fabric/ScreenStack.js +8 -0
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.js +54 -0
- package/src/fabric/ScreenStackHeaderSubview.js +20 -0
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.js +31 -0
- package/src/fabric/ScreenStackNativeComponent.js +19 -0
- package/src/fabric/index.js +11 -0
- package/src/index.native.tsx +35 -14
- package/src/native-stack/types.tsx +34 -0
- package/src/native-stack/views/NativeStackView.tsx +33 -4
- package/src/types.tsx +60 -5
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaDelegate.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
import com.facebook.react.bridge.ColorPropConverter;
|
|
15
|
+
import com.facebook.react.uimanager.BaseViewManagerDelegate;
|
|
16
|
+
import com.facebook.react.uimanager.BaseViewManagerInterface;
|
|
17
|
+
|
|
18
|
+
public class RNSScreenStackHeaderConfigManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & RNSScreenStackHeaderConfigManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
|
|
19
|
+
public RNSScreenStackHeaderConfigManagerDelegate(U viewManager) {
|
|
20
|
+
super(viewManager);
|
|
21
|
+
}
|
|
22
|
+
@Override
|
|
23
|
+
public void setProperty(T view, String propName, @Nullable Object value) {
|
|
24
|
+
switch (propName) {
|
|
25
|
+
case "backgroundColor":
|
|
26
|
+
mViewManager.setBackgroundColor(view, ColorPropConverter.getColor(value, view.getContext()));
|
|
27
|
+
break;
|
|
28
|
+
case "backTitle":
|
|
29
|
+
mViewManager.setBackTitle(view, value == null ? null : (String) value);
|
|
30
|
+
break;
|
|
31
|
+
case "backTitleFontFamily":
|
|
32
|
+
mViewManager.setBackTitleFontFamily(view, value == null ? null : (String) value);
|
|
33
|
+
break;
|
|
34
|
+
case "backTitleFontSize":
|
|
35
|
+
mViewManager.setBackTitleFontSize(view, value == null ? 0 : ((Double) value).intValue());
|
|
36
|
+
break;
|
|
37
|
+
case "color":
|
|
38
|
+
mViewManager.setColor(view, ColorPropConverter.getColor(value, view.getContext()));
|
|
39
|
+
break;
|
|
40
|
+
case "direction":
|
|
41
|
+
mViewManager.setDirection(view, (String) value);
|
|
42
|
+
break;
|
|
43
|
+
case "hidden":
|
|
44
|
+
mViewManager.setHidden(view, value == null ? false : (boolean) value);
|
|
45
|
+
break;
|
|
46
|
+
case "hideShadow":
|
|
47
|
+
mViewManager.setHideShadow(view, value == null ? false : (boolean) value);
|
|
48
|
+
break;
|
|
49
|
+
case "largeTitle":
|
|
50
|
+
mViewManager.setLargeTitle(view, value == null ? false : (boolean) value);
|
|
51
|
+
break;
|
|
52
|
+
case "largeTitleFontFamily":
|
|
53
|
+
mViewManager.setLargeTitleFontFamily(view, value == null ? null : (String) value);
|
|
54
|
+
break;
|
|
55
|
+
case "largeTitleFontSize":
|
|
56
|
+
mViewManager.setLargeTitleFontSize(view, value == null ? 0 : ((Double) value).intValue());
|
|
57
|
+
break;
|
|
58
|
+
case "largeTitleFontWeight":
|
|
59
|
+
mViewManager.setLargeTitleFontWeight(view, value == null ? null : (String) value);
|
|
60
|
+
break;
|
|
61
|
+
case "largeTitleBackgroundColor":
|
|
62
|
+
mViewManager.setLargeTitleBackgroundColor(view, ColorPropConverter.getColor(value, view.getContext()));
|
|
63
|
+
break;
|
|
64
|
+
case "largeTitleHideShadow":
|
|
65
|
+
mViewManager.setLargeTitleHideShadow(view, value == null ? false : (boolean) value);
|
|
66
|
+
break;
|
|
67
|
+
case "largeTitleColor":
|
|
68
|
+
mViewManager.setLargeTitleColor(view, ColorPropConverter.getColor(value, view.getContext()));
|
|
69
|
+
break;
|
|
70
|
+
case "translucent":
|
|
71
|
+
mViewManager.setTranslucent(view, value == null ? false : (boolean) value);
|
|
72
|
+
break;
|
|
73
|
+
case "title":
|
|
74
|
+
mViewManager.setTitle(view, value == null ? null : (String) value);
|
|
75
|
+
break;
|
|
76
|
+
case "titleFontFamily":
|
|
77
|
+
mViewManager.setTitleFontFamily(view, value == null ? null : (String) value);
|
|
78
|
+
break;
|
|
79
|
+
case "titleFontSize":
|
|
80
|
+
mViewManager.setTitleFontSize(view, value == null ? 0 : ((Double) value).intValue());
|
|
81
|
+
break;
|
|
82
|
+
case "titleFontWeight":
|
|
83
|
+
mViewManager.setTitleFontWeight(view, value == null ? null : (String) value);
|
|
84
|
+
break;
|
|
85
|
+
case "titleColor":
|
|
86
|
+
mViewManager.setTitleColor(view, ColorPropConverter.getColor(value, view.getContext()));
|
|
87
|
+
break;
|
|
88
|
+
case "disableBackButtonMenu":
|
|
89
|
+
mViewManager.setDisableBackButtonMenu(view, value == null ? false : (boolean) value);
|
|
90
|
+
break;
|
|
91
|
+
case "hideBackButton":
|
|
92
|
+
mViewManager.setHideBackButton(view, value == null ? false : (boolean) value);
|
|
93
|
+
break;
|
|
94
|
+
case "topInsetEnabled":
|
|
95
|
+
mViewManager.setTopInsetEnabled(view, value == null ? false : (boolean) value);
|
|
96
|
+
break;
|
|
97
|
+
case "backButtonInCustomView":
|
|
98
|
+
mViewManager.setBackButtonInCustomView(view, value == null ? false : (boolean) value);
|
|
99
|
+
break;
|
|
100
|
+
default:
|
|
101
|
+
super.setProperty(view, propName, value);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaInterface.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
|
|
15
|
+
public interface RNSScreenStackHeaderConfigManagerInterface<T extends View> {
|
|
16
|
+
void setBackgroundColor(T view, @Nullable Integer value);
|
|
17
|
+
void setBackTitle(T view, @Nullable String value);
|
|
18
|
+
void setBackTitleFontFamily(T view, @Nullable String value);
|
|
19
|
+
void setBackTitleFontSize(T view, int value);
|
|
20
|
+
void setColor(T view, @Nullable Integer value);
|
|
21
|
+
void setDirection(T view, @Nullable String value);
|
|
22
|
+
void setHidden(T view, boolean value);
|
|
23
|
+
void setHideShadow(T view, boolean value);
|
|
24
|
+
void setLargeTitle(T view, boolean value);
|
|
25
|
+
void setLargeTitleFontFamily(T view, @Nullable String value);
|
|
26
|
+
void setLargeTitleFontSize(T view, int value);
|
|
27
|
+
void setLargeTitleFontWeight(T view, @Nullable String value);
|
|
28
|
+
void setLargeTitleBackgroundColor(T view, @Nullable Integer value);
|
|
29
|
+
void setLargeTitleHideShadow(T view, boolean value);
|
|
30
|
+
void setLargeTitleColor(T view, @Nullable Integer value);
|
|
31
|
+
void setTranslucent(T view, boolean value);
|
|
32
|
+
void setTitle(T view, @Nullable String value);
|
|
33
|
+
void setTitleFontFamily(T view, @Nullable String value);
|
|
34
|
+
void setTitleFontSize(T view, int value);
|
|
35
|
+
void setTitleFontWeight(T view, @Nullable String value);
|
|
36
|
+
void setTitleColor(T view, @Nullable Integer value);
|
|
37
|
+
void setDisableBackButtonMenu(T view, boolean value);
|
|
38
|
+
void setHideBackButton(T view, boolean value);
|
|
39
|
+
void setTopInsetEnabled(T view, boolean value);
|
|
40
|
+
void setBackButtonInCustomView(T view, boolean value);
|
|
41
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaDelegate.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
import com.facebook.react.uimanager.BaseViewManagerDelegate;
|
|
15
|
+
import com.facebook.react.uimanager.BaseViewManagerInterface;
|
|
16
|
+
|
|
17
|
+
public class RNSScreenStackHeaderSubviewManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & RNSScreenStackHeaderSubviewManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
|
|
18
|
+
public RNSScreenStackHeaderSubviewManagerDelegate(U viewManager) {
|
|
19
|
+
super(viewManager);
|
|
20
|
+
}
|
|
21
|
+
@Override
|
|
22
|
+
public void setProperty(T view, String propName, @Nullable Object value) {
|
|
23
|
+
switch (propName) {
|
|
24
|
+
case "type":
|
|
25
|
+
mViewManager.setType(view, (String) value);
|
|
26
|
+
break;
|
|
27
|
+
default:
|
|
28
|
+
super.setProperty(view, propName, value);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaInterface.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
|
|
15
|
+
public interface RNSScreenStackHeaderSubviewManagerInterface<T extends View> {
|
|
16
|
+
void setType(T view, @Nullable String value);
|
|
17
|
+
}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerDelegate.java
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaDelegate.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
import com.facebook.react.uimanager.BaseViewManagerDelegate;
|
|
15
|
+
import com.facebook.react.uimanager.BaseViewManagerInterface;
|
|
16
|
+
|
|
17
|
+
public class RNSScreenStackManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & RNSScreenStackManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
|
|
18
|
+
public RNSScreenStackManagerDelegate(U viewManager) {
|
|
19
|
+
super(viewManager);
|
|
20
|
+
}
|
|
21
|
+
@Override
|
|
22
|
+
public void setProperty(T view, String propName, @Nullable Object value) {
|
|
23
|
+
super.setProperty(view, propName, value);
|
|
24
|
+
}
|
|
25
|
+
}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerInterface.java
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaInterface.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
|
|
14
|
+
public interface RNSScreenStackManagerInterface<T extends View> {
|
|
15
|
+
// No props
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package com.swmansion.rnscreens
|
|
2
|
+
|
|
3
|
+
import android.view.ViewGroup
|
|
4
|
+
import com.facebook.react.bridge.ReactContext
|
|
5
|
+
import androidx.annotation.UiThread
|
|
6
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap
|
|
8
|
+
import com.facebook.react.bridge.WritableMap
|
|
9
|
+
import com.facebook.react.bridge.WritableNativeMap
|
|
10
|
+
import kotlin.math.abs
|
|
11
|
+
|
|
12
|
+
abstract class FabricEnabledViewGroup constructor(context: ReactContext?) : ViewGroup(context) {
|
|
13
|
+
protected fun updateScreenSizeFabric(width: Int, height: Int) {
|
|
14
|
+
// do nothing
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
SCREENS_COMMON_THIS_DIR := $(call my-dir)
|
|
2
|
+
|
|
3
|
+
include $(CLEAR_VARS)
|
|
4
|
+
|
|
5
|
+
LOCAL_PATH := $(SCREENS_COMMON_THIS_DIR)
|
|
6
|
+
LOCAL_MODULE := rnscreens_common
|
|
7
|
+
|
|
8
|
+
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(GENERATED_SRC_DIR)/codegen/jni
|
|
9
|
+
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*.cpp)
|
|
10
|
+
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(GENERATED_SRC_DIR)/codegen/jni
|
|
11
|
+
|
|
12
|
+
# Please note as one of the library listed is libreact_codegen_samplelibrary
|
|
13
|
+
# This name will be generated as libreact_codegen_<library-name>
|
|
14
|
+
# where <library-name> is the one you specified in the Gradle configuration
|
|
15
|
+
LOCAL_SHARED_LIBRARIES := libjsi \
|
|
16
|
+
libfbjni \
|
|
17
|
+
libglog \
|
|
18
|
+
libfolly_json \
|
|
19
|
+
libyoga \
|
|
20
|
+
libreact_nativemodule_core \
|
|
21
|
+
libturbomodulejsijni \
|
|
22
|
+
librrc_view \
|
|
23
|
+
libreact_render_core \
|
|
24
|
+
libreact_render_graphics \
|
|
25
|
+
libfabricjni \
|
|
26
|
+
libfolly_futures \
|
|
27
|
+
libreact_debug \
|
|
28
|
+
libreact_render_componentregistry \
|
|
29
|
+
libreact_render_debug \
|
|
30
|
+
libruntimeexecutor \
|
|
31
|
+
libreact_codegen_rncore \
|
|
32
|
+
libreact_codegen_rnscreens
|
|
33
|
+
|
|
34
|
+
LOCAL_CFLAGS := \
|
|
35
|
+
-DLOG_TAG=\"ReactNative\"
|
|
36
|
+
LOCAL_CFLAGS += -fexceptions -frtti -std=c++17 -Wall
|
|
37
|
+
|
|
38
|
+
include $(BUILD_SHARED_LIBRARY)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <react/debug/react_native_assert.h>
|
|
4
|
+
#include "RNSScreenShadowNode.h"
|
|
5
|
+
#include <react/renderer/core/ConcreteComponentDescriptor.h>
|
|
6
|
+
|
|
7
|
+
namespace facebook {
|
|
8
|
+
namespace react {
|
|
9
|
+
|
|
10
|
+
class RNSScreenComponentDescriptor final
|
|
11
|
+
: public ConcreteComponentDescriptor<RNSScreenShadowNode> {
|
|
12
|
+
public:
|
|
13
|
+
using ConcreteComponentDescriptor::ConcreteComponentDescriptor;
|
|
14
|
+
|
|
15
|
+
void adopt(ShadowNode::Unshared const &shadowNode) const override {
|
|
16
|
+
react_native_assert(
|
|
17
|
+
std::dynamic_pointer_cast<RNSScreenShadowNode>(shadowNode));
|
|
18
|
+
auto screenShadowNode =
|
|
19
|
+
std::static_pointer_cast<RNSScreenShadowNode>(shadowNode);
|
|
20
|
+
|
|
21
|
+
react_native_assert(
|
|
22
|
+
std::dynamic_pointer_cast<YogaLayoutableShadowNode>(screenShadowNode));
|
|
23
|
+
auto layoutableShadowNode =
|
|
24
|
+
std::static_pointer_cast<YogaLayoutableShadowNode>(screenShadowNode);
|
|
25
|
+
|
|
26
|
+
auto state =
|
|
27
|
+
std::static_pointer_cast<const RNSScreenShadowNode::ConcreteState>(
|
|
28
|
+
shadowNode->getState());
|
|
29
|
+
auto stateData = state->getData();
|
|
30
|
+
|
|
31
|
+
if (stateData.frameSize.width != 0 && stateData.frameSize.height != 0) {
|
|
32
|
+
layoutableShadowNode->setSize(
|
|
33
|
+
Size{stateData.frameSize.width, stateData.frameSize.height});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
ConcreteComponentDescriptor::adopt(shadowNode);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
} // namespace react
|
|
41
|
+
} // namespace facebook
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "RNSScreenState.h"
|
|
4
|
+
#include <react/renderer/components/rnscreens/EventEmitters.h>
|
|
5
|
+
#include <react/renderer/components/rnscreens/Props.h>
|
|
6
|
+
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
|
|
7
|
+
|
|
8
|
+
namespace facebook {
|
|
9
|
+
namespace react {
|
|
10
|
+
|
|
11
|
+
extern const char RNSScreenComponentName[];
|
|
12
|
+
|
|
13
|
+
class RNSScreenShadowNode final : public ConcreteViewShadowNode<
|
|
14
|
+
RNSScreenComponentName,
|
|
15
|
+
RNSScreenProps,
|
|
16
|
+
RNSScreenEventEmitter,
|
|
17
|
+
RNSScreenState> {
|
|
18
|
+
public:
|
|
19
|
+
using ConcreteViewShadowNode::ConcreteViewShadowNode;
|
|
20
|
+
|
|
21
|
+
static ShadowNodeTraits BaseTraits() {
|
|
22
|
+
auto traits = ConcreteViewShadowNode::BaseTraits();
|
|
23
|
+
traits.set(ShadowNodeTraits::Trait::RootNodeKind);
|
|
24
|
+
return traits;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
} // namespace react
|
|
29
|
+
} // namespace facebook
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#include "RNSScreenState.h"
|
|
2
|
+
|
|
3
|
+
namespace facebook {
|
|
4
|
+
namespace react {
|
|
5
|
+
|
|
6
|
+
#ifdef ANDROID
|
|
7
|
+
folly::dynamic RNSScreenState::getDynamic() const {
|
|
8
|
+
return folly::dynamic::object("frameWidth", frameSize.width)(
|
|
9
|
+
"frameHeight", frameSize.height);
|
|
10
|
+
}
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
} // namespace react
|
|
14
|
+
} // namespace facebook
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <react/renderer/graphics/Float.h>
|
|
4
|
+
#include <react/renderer/graphics/Geometry.h>
|
|
5
|
+
#include <react/renderer/graphics/conversions.h>
|
|
6
|
+
|
|
7
|
+
#ifdef ANDROID
|
|
8
|
+
#include <folly/dynamic.h>
|
|
9
|
+
#include <react/renderer/mapbuffer/MapBuffer.h>
|
|
10
|
+
#include <react/renderer/mapbuffer/MapBufferBuilder.h>
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
namespace facebook {
|
|
14
|
+
namespace react {
|
|
15
|
+
|
|
16
|
+
class RNSScreenState final {
|
|
17
|
+
public:
|
|
18
|
+
using Shared = std::shared_ptr<const RNSScreenState>;
|
|
19
|
+
|
|
20
|
+
RNSScreenState(){};
|
|
21
|
+
RNSScreenState(Size frameSize_) : frameSize(frameSize_){};
|
|
22
|
+
|
|
23
|
+
#ifdef ANDROID
|
|
24
|
+
RNSScreenState(
|
|
25
|
+
RNSScreenState const &previousState,
|
|
26
|
+
folly::dynamic data)
|
|
27
|
+
: frameSize(Size{
|
|
28
|
+
(Float)data["frameWidth"].getDouble(),
|
|
29
|
+
(Float)data["frameHeight"].getDouble()}){};
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
const Size frameSize{};
|
|
33
|
+
|
|
34
|
+
#ifdef ANDROID
|
|
35
|
+
folly::dynamic getDynamic() const;
|
|
36
|
+
MapBuffer getMapBuffer() const {
|
|
37
|
+
return MapBufferBuilder::EMPTY();
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
#pragma mark - Getters
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
} // namespace react
|
|
46
|
+
} // namespace facebook
|
|
@@ -464,6 +464,18 @@ Defaults to an empty string.
|
|
|
464
464
|
|
|
465
465
|
The search field text color.
|
|
466
466
|
|
|
467
|
+
#### `hintTextColor`
|
|
468
|
+
|
|
469
|
+
The search hint text color. (Android only)
|
|
470
|
+
|
|
471
|
+
#### `headerIconColor`
|
|
472
|
+
|
|
473
|
+
The search and close icon color shown in the header. (Android only)
|
|
474
|
+
|
|
475
|
+
#### `shouldShowHintSearchIcon`
|
|
476
|
+
|
|
477
|
+
Show the search hint icon when search bar is focused. (Android only)
|
|
478
|
+
|
|
467
479
|
### Helpers
|
|
468
480
|
|
|
469
481
|
The stack navigator adds the following methods to the navigation prop:
|
package/ios/RNSScreen.h
CHANGED
|
@@ -29,6 +29,11 @@ typedef NS_ENUM(NSInteger, RNSScreenReplaceAnimation) {
|
|
|
29
29
|
RNSScreenReplaceAnimationPush,
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
+
typedef NS_ENUM(NSInteger, RNSScreenSwipeDirection) {
|
|
33
|
+
RNSScreenSwipeDirectionHorizontal,
|
|
34
|
+
RNSScreenSwipeDirectionVertical,
|
|
35
|
+
};
|
|
36
|
+
|
|
32
37
|
typedef NS_ENUM(NSInteger, RNSActivityState) {
|
|
33
38
|
RNSActivityStateInactive = 0,
|
|
34
39
|
RNSActivityStateTransitioningOrBelowTop = 1,
|
|
@@ -47,6 +52,7 @@ typedef NS_ENUM(NSInteger, RNSWindowTrait) {
|
|
|
47
52
|
RNSWindowTraitAnimation,
|
|
48
53
|
RNSWindowTraitHidden,
|
|
49
54
|
RNSWindowTraitOrientation,
|
|
55
|
+
RNSWindowTraitHomeIndicatorHidden,
|
|
50
56
|
};
|
|
51
57
|
|
|
52
58
|
@interface RCTConvert (RNSScreen)
|
|
@@ -91,19 +97,23 @@ typedef NS_ENUM(NSInteger, RNSWindowTrait) {
|
|
|
91
97
|
@property (nonatomic) RNSScreenStackAnimation stackAnimation;
|
|
92
98
|
@property (nonatomic) RNSScreenStackPresentation stackPresentation;
|
|
93
99
|
@property (nonatomic) RNSScreenReplaceAnimation replaceAnimation;
|
|
100
|
+
@property (nonatomic) RNSScreenSwipeDirection swipeDirection;
|
|
94
101
|
@property (nonatomic) BOOL preventNativeDismiss;
|
|
95
102
|
@property (nonatomic) BOOL hasOrientationSet;
|
|
96
103
|
@property (nonatomic) BOOL hasStatusBarStyleSet;
|
|
97
104
|
@property (nonatomic) BOOL hasStatusBarAnimationSet;
|
|
98
105
|
@property (nonatomic) BOOL hasStatusBarHiddenSet;
|
|
106
|
+
@property (nonatomic) BOOL hasHomeIndicatorHiddenSet;
|
|
99
107
|
@property (nonatomic) BOOL customAnimationOnSwipe;
|
|
100
108
|
@property (nonatomic) BOOL fullScreenSwipeEnabled;
|
|
109
|
+
@property (nonatomic, retain) NSNumber *transitionDuration;
|
|
101
110
|
|
|
102
111
|
#if !TARGET_OS_TV
|
|
103
112
|
@property (nonatomic) RNSStatusBarStyle statusBarStyle;
|
|
104
113
|
@property (nonatomic) UIStatusBarAnimation statusBarAnimation;
|
|
105
114
|
@property (nonatomic) BOOL statusBarHidden;
|
|
106
115
|
@property (nonatomic) UIInterfaceOrientationMask screenOrientation;
|
|
116
|
+
@property (nonatomic) BOOL homeIndicatorHidden;
|
|
107
117
|
#endif
|
|
108
118
|
|
|
109
119
|
- (void)notifyFinishTransitioning;
|
package/ios/RNSScreen.m
CHANGED
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
_hasStatusBarAnimationSet = NO;
|
|
35
35
|
_hasStatusBarHiddenSet = NO;
|
|
36
36
|
_hasOrientationSet = NO;
|
|
37
|
+
_hasHomeIndicatorHiddenSet = NO;
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
return self;
|
|
@@ -206,6 +207,13 @@
|
|
|
206
207
|
_screenOrientation = screenOrientation;
|
|
207
208
|
[RNSScreenWindowTraits enforceDesiredDeviceOrientation];
|
|
208
209
|
}
|
|
210
|
+
|
|
211
|
+
- (void)setHomeIndicatorHidden:(BOOL)homeIndicatorHidden
|
|
212
|
+
{
|
|
213
|
+
_hasHomeIndicatorHiddenSet = YES;
|
|
214
|
+
_homeIndicatorHidden = homeIndicatorHidden;
|
|
215
|
+
[RNSScreenWindowTraits updateHomeIndicatorAutoHidden];
|
|
216
|
+
}
|
|
209
217
|
#endif
|
|
210
218
|
|
|
211
219
|
- (UIView *)reactSuperview
|
|
@@ -436,6 +444,17 @@
|
|
|
436
444
|
return UIInterfaceOrientationMaskAllButUpsideDown;
|
|
437
445
|
}
|
|
438
446
|
|
|
447
|
+
- (UIViewController *)childViewControllerForHomeIndicatorAutoHidden
|
|
448
|
+
{
|
|
449
|
+
UIViewController *vc = [self findChildVCForConfigAndTrait:RNSWindowTraitHomeIndicatorHidden includingModals:YES];
|
|
450
|
+
return vc == self ? nil : vc;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
- (BOOL)prefersHomeIndicatorAutoHidden
|
|
454
|
+
{
|
|
455
|
+
return ((RNSScreenView *)self.view).homeIndicatorHidden;
|
|
456
|
+
}
|
|
457
|
+
|
|
439
458
|
// if the returned vc is a child, it means that it can provide config;
|
|
440
459
|
// if the returned vc is self, it means that there is no child for config and self has config to provide,
|
|
441
460
|
// so we return self which results in asking self for preferredStatusBarStyle/Animation etc.;
|
|
@@ -495,6 +514,9 @@
|
|
|
495
514
|
case RNSWindowTraitOrientation: {
|
|
496
515
|
return ((RNSScreenView *)self.view).hasOrientationSet;
|
|
497
516
|
}
|
|
517
|
+
case RNSWindowTraitHomeIndicatorHidden: {
|
|
518
|
+
return ((RNSScreenView *)self.view).hasHomeIndicatorHiddenSet;
|
|
519
|
+
}
|
|
498
520
|
default: {
|
|
499
521
|
RCTLogError(@"Unknown trait passed: %d", (int)trait);
|
|
500
522
|
}
|
|
@@ -771,6 +793,8 @@ RCT_EXPORT_VIEW_PROPERTY(preventNativeDismiss, BOOL)
|
|
|
771
793
|
RCT_EXPORT_VIEW_PROPERTY(replaceAnimation, RNSScreenReplaceAnimation)
|
|
772
794
|
RCT_EXPORT_VIEW_PROPERTY(stackPresentation, RNSScreenStackPresentation)
|
|
773
795
|
RCT_EXPORT_VIEW_PROPERTY(stackAnimation, RNSScreenStackAnimation)
|
|
796
|
+
RCT_EXPORT_VIEW_PROPERTY(swipeDirection, RNSScreenSwipeDirection)
|
|
797
|
+
RCT_EXPORT_VIEW_PROPERTY(transitionDuration, NSNumber)
|
|
774
798
|
|
|
775
799
|
RCT_EXPORT_VIEW_PROPERTY(onAppear, RCTDirectEventBlock);
|
|
776
800
|
RCT_EXPORT_VIEW_PROPERTY(onDisappear, RCTDirectEventBlock);
|
|
@@ -785,6 +809,7 @@ RCT_EXPORT_VIEW_PROPERTY(screenOrientation, UIInterfaceOrientationMask)
|
|
|
785
809
|
RCT_EXPORT_VIEW_PROPERTY(statusBarAnimation, UIStatusBarAnimation)
|
|
786
810
|
RCT_EXPORT_VIEW_PROPERTY(statusBarHidden, BOOL)
|
|
787
811
|
RCT_EXPORT_VIEW_PROPERTY(statusBarStyle, RNSStatusBarStyle)
|
|
812
|
+
RCT_EXPORT_VIEW_PROPERTY(homeIndicatorHidden, BOOL)
|
|
788
813
|
#endif
|
|
789
814
|
|
|
790
815
|
- (UIView *)view
|
|
@@ -835,6 +860,15 @@ RCT_ENUM_CONVERTER(
|
|
|
835
860
|
RNSScreenReplaceAnimationPop,
|
|
836
861
|
integerValue)
|
|
837
862
|
|
|
863
|
+
RCT_ENUM_CONVERTER(
|
|
864
|
+
RNSScreenSwipeDirection,
|
|
865
|
+
(@{
|
|
866
|
+
@"vertical" : @(RNSScreenSwipeDirectionVertical),
|
|
867
|
+
@"horizontal" : @(RNSScreenSwipeDirectionHorizontal),
|
|
868
|
+
}),
|
|
869
|
+
RNSScreenSwipeDirectionHorizontal,
|
|
870
|
+
integerValue)
|
|
871
|
+
|
|
838
872
|
#if !TARGET_OS_TV
|
|
839
873
|
RCT_ENUM_CONVERTER(
|
|
840
874
|
RNSStatusBarStyle,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#import <UIKit/UIKit.h>
|
|
2
|
+
|
|
3
|
+
#import <React/RCTViewComponentView.h>
|
|
4
|
+
#import "RNSScreenController.h"
|
|
5
|
+
|
|
6
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
7
|
+
|
|
8
|
+
@interface RNSScreenComponentView : RCTViewComponentView
|
|
9
|
+
|
|
10
|
+
@property (weak, nonatomic) UIView *reactSuperview;
|
|
11
|
+
@property (weak, nonatomic) UIView *config;
|
|
12
|
+
@property (nonatomic, retain) RNSScreenController *controller;
|
|
13
|
+
|
|
14
|
+
- (void)notifyWillAppear;
|
|
15
|
+
- (void)notifyWillDisappear;
|
|
16
|
+
- (void)notifyAppear;
|
|
17
|
+
- (void)notifyDisappear;
|
|
18
|
+
- (void)updateBounds;
|
|
19
|
+
- (void)notifyDismissedWithCount:(int)dismissCount;
|
|
20
|
+
|
|
21
|
+
@end
|
|
22
|
+
|
|
23
|
+
NS_ASSUME_NONNULL_END
|