react-native-screens 3.13.1 → 3.14.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.
Files changed (126) hide show
  1. package/README.md +2 -2
  2. package/RNScreens.podspec +5 -4
  3. package/android/build.gradle +18 -1
  4. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +8 -4
  5. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +24 -6
  6. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +14 -18
  7. package/android/src/main/jni/Android.mk +1 -2
  8. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +39 -14
  9. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +15 -6
  10. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +3 -3
  11. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +1 -1
  12. package/common/cpp/Android.mk +1 -2
  13. package/createNativeStackNavigator/README.md +4 -0
  14. package/ios/RNSConvert.h +30 -0
  15. package/ios/RNSConvert.mm +120 -0
  16. package/ios/RNSEnums.h +59 -0
  17. package/ios/RNSFullWindowOverlay.h +17 -2
  18. package/ios/RNSFullWindowOverlay.mm +199 -0
  19. package/ios/RNSScreen.h +70 -79
  20. package/ios/{RNSScreen.m → RNSScreen.mm} +679 -302
  21. package/ios/RNSScreenContainer.h +15 -1
  22. package/ios/{RNSScreenContainer.m → RNSScreenContainer.mm} +99 -8
  23. package/ios/{RNSScreenNavigationContainer.m → RNSScreenNavigationContainer.mm} +22 -0
  24. package/ios/RNSScreenStack.h +19 -3
  25. package/ios/{RNSScreenStack.m → RNSScreenStack.mm} +377 -126
  26. package/ios/{RNSScreenStackAnimator.m → RNSScreenStackAnimator.mm} +19 -14
  27. package/ios/RNSScreenStackHeaderConfig.h +20 -21
  28. package/ios/{RNSScreenStackHeaderConfig.m → RNSScreenStackHeaderConfig.mm} +232 -117
  29. package/ios/RNSScreenStackHeaderSubview.h +45 -0
  30. package/ios/RNSScreenStackHeaderSubview.mm +137 -0
  31. package/ios/RNSScreenViewEvent.h +12 -0
  32. package/ios/RNSScreenViewEvent.mm +59 -0
  33. package/ios/{RNSScreenWindowTraits.m → RNSScreenWindowTraits.mm} +3 -2
  34. package/ios/RNSSearchBar.h +14 -1
  35. package/ios/RNSSearchBar.mm +351 -0
  36. package/ios/{UIViewController+RNScreens.m → UIViewController+RNScreens.mm} +0 -0
  37. package/ios/{UIWindow+RNScreens.m → UIWindow+RNScreens.mm} +0 -0
  38. package/lib/commonjs/fabric/FullWindowOverlay.js +26 -0
  39. package/lib/commonjs/fabric/FullWindowOverlay.js.map +1 -0
  40. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +21 -0
  41. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -0
  42. package/lib/commonjs/fabric/ScreenContainer.js +28 -0
  43. package/lib/commonjs/fabric/ScreenContainer.js.map +1 -0
  44. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +21 -0
  45. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -0
  46. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  47. package/lib/commonjs/fabric/ScreenNavigationContainer.js +28 -0
  48. package/lib/commonjs/fabric/ScreenNavigationContainer.js.map +1 -0
  49. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +21 -0
  50. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -0
  51. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  52. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
  53. package/lib/commonjs/fabric/SearchBar.js +37 -0
  54. package/lib/commonjs/fabric/SearchBar.js.map +1 -0
  55. package/lib/commonjs/fabric/SearchBarNativeComponent.js +25 -0
  56. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -0
  57. package/lib/commonjs/fabric/index.js +32 -0
  58. package/lib/commonjs/fabric/index.js.map +1 -1
  59. package/lib/commonjs/index.native.js +5 -18
  60. package/lib/commonjs/index.native.js.map +1 -1
  61. package/lib/commonjs/native-stack/views/NativeStackView.js +30 -0
  62. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  63. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +8 -2
  64. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  65. package/lib/module/fabric/FullWindowOverlay.js +15 -0
  66. package/lib/module/fabric/FullWindowOverlay.js.map +1 -0
  67. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +9 -0
  68. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -0
  69. package/lib/module/fabric/ScreenContainer.js +17 -0
  70. package/lib/module/fabric/ScreenContainer.js.map +1 -0
  71. package/lib/module/fabric/ScreenContainerNativeComponent.js +9 -0
  72. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -0
  73. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  74. package/lib/module/fabric/ScreenNavigationContainer.js +17 -0
  75. package/lib/module/fabric/ScreenNavigationContainer.js.map +1 -0
  76. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +9 -0
  77. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -0
  78. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  79. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
  80. package/lib/module/fabric/SearchBar.js +24 -0
  81. package/lib/module/fabric/SearchBar.js.map +1 -0
  82. package/lib/module/fabric/SearchBarNativeComponent.js +11 -0
  83. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -0
  84. package/lib/module/fabric/index.js +5 -1
  85. package/lib/module/fabric/index.js.map +1 -1
  86. package/lib/module/index.native.js +6 -20
  87. package/lib/module/index.native.js.map +1 -1
  88. package/lib/module/native-stack/views/NativeStackView.js +30 -0
  89. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  90. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +7 -2
  91. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  92. package/lib/typescript/native-stack/types.d.ts +12 -0
  93. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +1 -1
  94. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +1 -1
  95. package/lib/typescript/types.d.ts +24 -0
  96. package/native-stack/README.md +21 -0
  97. package/package.json +2 -2
  98. package/src/fabric/FullWindowOverlay.js +13 -0
  99. package/src/fabric/FullWindowOverlayNativeComponent.js +19 -0
  100. package/src/fabric/ScreenContainer.js +16 -0
  101. package/src/fabric/ScreenContainerNativeComponent.js +19 -0
  102. package/src/fabric/ScreenNativeComponent.js +41 -8
  103. package/src/fabric/ScreenNavigationContainer.js +16 -0
  104. package/src/fabric/ScreenNavigationContainerNativeComponent.js +19 -0
  105. package/src/fabric/ScreenStackHeaderConfigNativeComponent.js +1 -1
  106. package/src/fabric/ScreenStackNativeComponent.js +4 -0
  107. package/src/fabric/SearchBar.js +20 -0
  108. package/src/fabric/SearchBarNativeComponent.js +62 -0
  109. package/src/fabric/index.js +8 -0
  110. package/src/index.native.tsx +13 -19
  111. package/src/native-stack/types.tsx +12 -0
  112. package/src/native-stack/views/NativeStackView.tsx +27 -0
  113. package/src/reanimated/ReanimatedNativeStackScreen.tsx +6 -0
  114. package/src/types.tsx +25 -0
  115. package/ios/RNSFullWindowOverlay.m +0 -105
  116. package/ios/RNSScreenComponentView.h +0 -23
  117. package/ios/RNSScreenComponentView.mm +0 -159
  118. package/ios/RNSScreenController.h +0 -10
  119. package/ios/RNSScreenController.mm +0 -79
  120. package/ios/RNSScreenStackComponentView.h +0 -15
  121. package/ios/RNSScreenStackComponentView.mm +0 -295
  122. package/ios/RNSScreenStackHeaderConfigComponentView.h +0 -42
  123. package/ios/RNSScreenStackHeaderConfigComponentView.mm +0 -662
  124. package/ios/RNSScreenStackHeaderSubviewComponentView.h +0 -14
  125. package/ios/RNSScreenStackHeaderSubviewComponentView.mm +0 -77
  126. package/ios/RNSSearchBar.m +0 -198
@@ -1,77 +0,0 @@
1
- #import "RNSScreenStackHeaderSubviewComponentView.h"
2
-
3
- #import <React/RCTConversions.h>
4
-
5
- #import <react/renderer/components/rnscreens/ComponentDescriptors.h>
6
- #import <react/renderer/components/rnscreens/EventEmitters.h>
7
- #import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
8
-
9
- #import "RCTFabricComponentsPlugins.h"
10
-
11
- using namespace facebook::react;
12
-
13
- @implementation RNSScreenStackHeaderSubviewComponentView {
14
- BOOL _isInitialValueSet;
15
- RNSScreenStackHeaderSubviewType _type;
16
- }
17
-
18
- - (instancetype)initWithFrame:(CGRect)frame
19
- {
20
- if (self = [super initWithFrame:frame]) {
21
- static const auto defaultProps = std::make_shared<const RNSScreenStackHeaderSubviewProps>();
22
- _props = defaultProps;
23
- }
24
-
25
- return self;
26
- }
27
-
28
- - (void)updateLayoutMetrics:(const facebook::react::LayoutMetrics &)layoutMetrics
29
- oldLayoutMetrics:(const facebook::react::LayoutMetrics &)oldLayoutMetrics
30
- {
31
- CGRect frame = RCTCGRectFromRect(layoutMetrics.frame);
32
- // CALayer will crash if we pass NaN or Inf values.
33
- // It's unclear how to detect this case on cross-platform manner holistically, so we have to do it on the mounting
34
- // layer as well. NaN/Inf is a kinda valid result of some math operations. Even if we can (and should) detect (and
35
- // report early) incorrect (NaN and Inf) values which come from JavaScript side, we sometimes cannot backtrace the
36
- // sources of a calculation that produced an incorrect/useless result.
37
- if (!std::isfinite(frame.size.width) || !std::isfinite(frame.size.height)) {
38
- RCTLogWarn(
39
- @"-[UIView(ComponentViewProtocol) updateLayoutMetrics:oldLayoutMetrics:]: Received invalid layout metrics (%@) for a view (%@).",
40
- NSStringFromCGRect(frame),
41
- self);
42
- } else {
43
- self.bounds = CGRect{CGPointZero, frame.size};
44
- }
45
- }
46
-
47
- #pragma mark - RCTComponentViewProtocol
48
-
49
- - (void)prepareForRecycle
50
- {
51
- [super prepareForRecycle];
52
- _isInitialValueSet = NO;
53
- }
54
-
55
- - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps
56
- {
57
- const auto &newHeaderSubviewProps = *std::static_pointer_cast<const RNSScreenStackHeaderSubviewProps>(props);
58
-
59
- if (_type != newHeaderSubviewProps.type) {
60
- _type = newHeaderSubviewProps.type;
61
- _isInitialValueSet = YES;
62
- }
63
-
64
- [super updateProps:props oldProps:oldProps];
65
- }
66
-
67
- + (ComponentDescriptorProvider)componentDescriptorProvider
68
- {
69
- return concreteComponentDescriptorProvider<RNSScreenStackHeaderSubviewComponentDescriptor>();
70
- }
71
-
72
- @end
73
-
74
- Class<RCTComponentViewProtocol> RNSScreenStackHeaderSubviewCls(void)
75
- {
76
- return RNSScreenStackHeaderSubviewComponentView.class;
77
- }
@@ -1,198 +0,0 @@
1
- #import <UIKit/UIKit.h>
2
-
3
- #import "RNSSearchBar.h"
4
-
5
- #import <React/RCTBridge.h>
6
- #import <React/RCTComponent.h>
7
- #import <React/RCTUIManager.h>
8
-
9
- @implementation RNSSearchBar {
10
- __weak RCTBridge *_bridge;
11
- UISearchController *_controller;
12
- UIColor *_textColor;
13
- }
14
-
15
- @synthesize controller = _controller;
16
-
17
- - (instancetype)initWithBridge:(RCTBridge *)bridge
18
- {
19
- if (self = [super init]) {
20
- _bridge = bridge;
21
- _controller = [[UISearchController alloc] initWithSearchResultsController:nil];
22
- _controller.searchBar.delegate = self;
23
- _hideWhenScrolling = YES;
24
- }
25
- return self;
26
- }
27
-
28
- - (void)setObscureBackground:(BOOL)obscureBackground
29
- {
30
- if (@available(iOS 9.1, *)) {
31
- [_controller setObscuresBackgroundDuringPresentation:obscureBackground];
32
- }
33
- }
34
-
35
- - (void)setHideNavigationBar:(BOOL)hideNavigationBar
36
- {
37
- [_controller setHidesNavigationBarDuringPresentation:hideNavigationBar];
38
- }
39
-
40
- - (void)setHideWhenScrolling:(BOOL)hideWhenScrolling
41
- {
42
- _hideWhenScrolling = hideWhenScrolling;
43
- }
44
-
45
- - (void)setAutoCapitalize:(UITextAutocapitalizationType)autoCapitalize
46
- {
47
- [_controller.searchBar setAutocapitalizationType:autoCapitalize];
48
- }
49
-
50
- - (void)setPlaceholder:(NSString *)placeholder
51
- {
52
- [_controller.searchBar setPlaceholder:placeholder];
53
- }
54
-
55
- - (void)setBarTintColor:(UIColor *)barTintColor
56
- {
57
- #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
58
- __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 && !TARGET_OS_TV
59
- if (@available(iOS 13.0, *)) {
60
- [_controller.searchBar.searchTextField setBackgroundColor:barTintColor];
61
- }
62
- #endif
63
- }
64
-
65
- - (void)setTextColor:(UIColor *)textColor
66
- {
67
- #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
68
- __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 && !TARGET_OS_TV
69
- _textColor = textColor;
70
- if (@available(iOS 13.0, *)) {
71
- [_controller.searchBar.searchTextField setTextColor:_textColor];
72
- }
73
- #endif
74
- }
75
-
76
- - (void)setCancelButtonText:(NSString *)text
77
- {
78
- [_controller.searchBar setValue:text forKey:@"cancelButtonText"];
79
- }
80
-
81
- - (void)hideCancelButton
82
- {
83
- #if !TARGET_OS_TV
84
- if (@available(iOS 13, *)) {
85
- // On iOS 13+ UISearchController automatically shows/hides cancel button
86
- // https://developer.apple.com/documentation/uikit/uisearchcontroller/3152926-automaticallyshowscancelbutton?language=objc
87
- } else {
88
- [_controller.searchBar setShowsCancelButton:NO animated:YES];
89
- }
90
- #endif
91
- }
92
-
93
- - (void)showCancelButton
94
- {
95
- #if !TARGET_OS_TV
96
- if (@available(iOS 13, *)) {
97
- // On iOS 13+ UISearchController automatically shows/hides cancel button
98
- // https://developer.apple.com/documentation/uikit/uisearchcontroller/3152926-automaticallyshowscancelbutton?language=objc
99
- } else {
100
- [_controller.searchBar setShowsCancelButton:YES animated:YES];
101
- }
102
- #endif
103
- }
104
-
105
- #pragma mark delegate methods
106
-
107
- - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
108
- {
109
- #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
110
- __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 && !TARGET_OS_TV
111
- if (@available(iOS 13.0, *)) {
112
- // for some reason, the color does not change when set at the beginning,
113
- // so we apply it again here
114
- if (_textColor != nil) {
115
- [_controller.searchBar.searchTextField setTextColor:_textColor];
116
- }
117
- }
118
- #endif
119
-
120
- [self showCancelButton];
121
- [self becomeFirstResponder];
122
-
123
- if (self.onFocus) {
124
- self.onFocus(@{});
125
- }
126
- }
127
-
128
- - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
129
- {
130
- if (self.onBlur) {
131
- self.onBlur(@{});
132
- }
133
- [self hideCancelButton];
134
- }
135
-
136
- - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
137
- {
138
- if (self.onChangeText) {
139
- self.onChangeText(@{
140
- @"text" : _controller.searchBar.text,
141
- });
142
- }
143
- }
144
-
145
- - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
146
- {
147
- if (self.onSearchButtonPress) {
148
- self.onSearchButtonPress(@{
149
- @"text" : _controller.searchBar.text,
150
- });
151
- }
152
- }
153
-
154
- #if !TARGET_OS_TV
155
- - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
156
- {
157
- _controller.searchBar.text = @"";
158
- [self resignFirstResponder];
159
- [self hideCancelButton];
160
-
161
- if (self.onCancelButtonPress) {
162
- self.onCancelButtonPress(@{});
163
- }
164
- if (self.onChangeText) {
165
- self.onChangeText(@{
166
- @"text" : _controller.searchBar.text,
167
- });
168
- }
169
- }
170
- #endif
171
-
172
- @end
173
-
174
- @implementation RNSSearchBarManager
175
-
176
- RCT_EXPORT_MODULE()
177
-
178
- - (UIView *)view
179
- {
180
- return [[RNSSearchBar alloc] initWithBridge:self.bridge];
181
- }
182
-
183
- RCT_EXPORT_VIEW_PROPERTY(obscureBackground, BOOL)
184
- RCT_EXPORT_VIEW_PROPERTY(hideNavigationBar, BOOL)
185
- RCT_EXPORT_VIEW_PROPERTY(hideWhenScrolling, BOOL)
186
- RCT_EXPORT_VIEW_PROPERTY(autoCapitalize, UITextAutocapitalizationType)
187
- RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString)
188
- RCT_EXPORT_VIEW_PROPERTY(barTintColor, UIColor)
189
- RCT_EXPORT_VIEW_PROPERTY(textColor, UIColor)
190
- RCT_EXPORT_VIEW_PROPERTY(cancelButtonText, NSString)
191
-
192
- RCT_EXPORT_VIEW_PROPERTY(onChangeText, RCTBubblingEventBlock)
193
- RCT_EXPORT_VIEW_PROPERTY(onCancelButtonPress, RCTBubblingEventBlock)
194
- RCT_EXPORT_VIEW_PROPERTY(onSearchButtonPress, RCTBubblingEventBlock)
195
- RCT_EXPORT_VIEW_PROPERTY(onFocus, RCTBubblingEventBlock)
196
- RCT_EXPORT_VIEW_PROPERTY(onBlur, RCTBubblingEventBlock)
197
-
198
- @end