react-native-screens 3.22.1 → 3.24.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 (54) hide show
  1. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +2 -0
  2. package/ios/RNSConvert.h +13 -13
  3. package/ios/RNSConvert.mm +57 -49
  4. package/ios/RNSEnums.h +6 -0
  5. package/ios/RNSFullWindowOverlay.h +6 -2
  6. package/ios/RNSFullWindowOverlay.mm +16 -6
  7. package/ios/RNSScreen.h +17 -5
  8. package/ios/RNSScreen.mm +74 -44
  9. package/ios/RNSScreenContainer.h +2 -2
  10. package/ios/RNSScreenContainer.mm +11 -8
  11. package/ios/RNSScreenNavigationContainer.h +1 -1
  12. package/ios/RNSScreenNavigationContainer.mm +9 -8
  13. package/ios/RNSScreenStack.h +1 -1
  14. package/ios/RNSScreenStack.mm +15 -14
  15. package/ios/RNSScreenStackHeaderConfig.mm +27 -21
  16. package/ios/RNSScreenStackHeaderSubview.mm +12 -11
  17. package/ios/RNSScreenWindowTraits.mm +5 -5
  18. package/ios/RNSSearchBar.h +8 -1
  19. package/ios/RNSSearchBar.mm +58 -19
  20. package/ios/UIViewController+RNScreens.mm +7 -7
  21. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  22. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
  23. package/lib/commonjs/index.native.js +5 -1
  24. package/lib/commonjs/index.native.js.map +1 -1
  25. package/lib/commonjs/native-stack/types.js.map +1 -1
  26. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js +10 -6
  27. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  28. package/lib/commonjs/native-stack/views/NativeStackView.js +35 -8
  29. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  30. package/lib/commonjs/types.js.map +1 -1
  31. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  32. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
  33. package/lib/module/index.native.js +5 -1
  34. package/lib/module/index.native.js.map +1 -1
  35. package/lib/module/native-stack/types.js.map +1 -1
  36. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js +10 -6
  37. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  38. package/lib/module/native-stack/views/NativeStackView.js +35 -8
  39. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  40. package/lib/module/types.js.map +1 -1
  41. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +1 -0
  42. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +2 -0
  43. package/lib/typescript/native-stack/types.d.ts +8 -0
  44. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +1 -1
  45. package/lib/typescript/types.d.ts +21 -0
  46. package/native-stack/README.md +12 -1
  47. package/package.json +1 -1
  48. package/src/fabric/ScreenNativeComponent.ts +1 -0
  49. package/src/fabric/SearchBarNativeComponent.ts +3 -0
  50. package/src/index.native.tsx +7 -0
  51. package/src/native-stack/types.tsx +6 -0
  52. package/src/native-stack/utils/getDefaultHeaderHeight.tsx +11 -7
  53. package/src/native-stack/views/NativeStackView.tsx +36 -6
  54. package/src/types.tsx +21 -0
@@ -97,6 +97,8 @@ class SearchBarManager : ViewGroupManager<SearchBarView>() {
97
97
  view.shouldShowHintSearchIcon = shouldShowHintSearchIcon ?: true
98
98
  }
99
99
 
100
+ fun setPlacement(view: SearchBarView, placeholder: String?) = Unit
101
+
100
102
  override fun receiveCommand(root: SearchBarView, commandId: String?, args: ReadableArray?) {
101
103
  when (commandId) {
102
104
  "focus" -> root.handleFocusJsRequest()
package/ios/RNSConvert.h CHANGED
@@ -2,34 +2,34 @@
2
2
  #import <react/renderer/components/rnscreens/Props.h>
3
3
  #import "RNSEnums.h"
4
4
 
5
+ namespace react = facebook::react;
6
+
5
7
  @interface RNSConvert : NSObject
6
8
 
7
9
  + (RNSScreenStackPresentation)RNSScreenStackPresentationFromCppEquivalent:
8
- (facebook::react::RNSScreenStackPresentation)stackPresentation;
10
+ (react::RNSScreenStackPresentation)stackPresentation;
9
11
 
10
- + (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:
11
- (facebook::react::RNSScreenStackAnimation)stackAnimation;
12
+ + (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:(react::RNSScreenStackAnimation)stackAnimation;
12
13
 
13
14
  + (RNSScreenStackHeaderSubviewType)RNSScreenStackHeaderSubviewTypeFromCppEquivalent:
14
- (facebook::react::RNSScreenStackHeaderSubviewType)subviewType;
15
+ (react::RNSScreenStackHeaderSubviewType)subviewType;
15
16
 
16
17
  + (RNSScreenReplaceAnimation)RNSScreenReplaceAnimationFromCppEquivalent:
17
- (facebook::react::RNSScreenReplaceAnimation)replaceAnimation;
18
+ (react::RNSScreenReplaceAnimation)replaceAnimation;
18
19
 
19
- + (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:
20
- (facebook::react::RNSScreenSwipeDirection)swipeDirection;
20
+ + (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:(react::RNSScreenSwipeDirection)swipeDirection;
21
21
 
22
- + (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:
23
- (facebook::react::RNSScreenSheetAllowedDetents)allowedDetents;
22
+ + (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:(react::RNSScreenSheetAllowedDetents)allowedDetents;
24
23
 
25
- + (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:
26
- (facebook::react::RNSScreenSheetLargestUndimmedDetent)detent;
24
+ + (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:(react::RNSScreenSheetLargestUndimmedDetent)detent;
27
25
 
28
26
  + (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
29
- (const facebook::react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance;
27
+ (const react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance;
30
28
 
31
29
  + (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
32
- (facebook::react::RNSSearchBarAutoCapitalize)autoCapitalize;
30
+ (react::RNSSearchBarAutoCapitalize)autoCapitalize;
31
+
32
+ + (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement;
33
33
 
34
34
  @end
35
35
 
package/ios/RNSConvert.mm CHANGED
@@ -4,119 +4,115 @@
4
4
  @implementation RNSConvert
5
5
 
6
6
  + (RNSScreenStackPresentation)RNSScreenStackPresentationFromCppEquivalent:
7
- (facebook::react::RNSScreenStackPresentation)stackPresentation
7
+ (react::RNSScreenStackPresentation)stackPresentation
8
8
  {
9
9
  switch (stackPresentation) {
10
- case facebook::react::RNSScreenStackPresentation::Push:
10
+ case react::RNSScreenStackPresentation::Push:
11
11
  return RNSScreenStackPresentationPush;
12
- case facebook::react::RNSScreenStackPresentation::Modal:
12
+ case react::RNSScreenStackPresentation::Modal:
13
13
  return RNSScreenStackPresentationModal;
14
- case facebook::react::RNSScreenStackPresentation::FullScreenModal:
14
+ case react::RNSScreenStackPresentation::FullScreenModal:
15
15
  return RNSScreenStackPresentationFullScreenModal;
16
- case facebook::react::RNSScreenStackPresentation::FormSheet:
16
+ case react::RNSScreenStackPresentation::FormSheet:
17
17
  return RNSScreenStackPresentationFormSheet;
18
- case facebook::react::RNSScreenStackPresentation::ContainedModal:
18
+ case react::RNSScreenStackPresentation::ContainedModal:
19
19
  return RNSScreenStackPresentationContainedModal;
20
- case facebook::react::RNSScreenStackPresentation::TransparentModal:
20
+ case react::RNSScreenStackPresentation::TransparentModal:
21
21
  return RNSScreenStackPresentationTransparentModal;
22
- case facebook::react::RNSScreenStackPresentation::ContainedTransparentModal:
22
+ case react::RNSScreenStackPresentation::ContainedTransparentModal:
23
23
  return RNSScreenStackPresentationContainedTransparentModal;
24
24
  }
25
25
  }
26
26
 
27
- + (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:
28
- (facebook::react::RNSScreenStackAnimation)stackAnimation
27
+ + (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:(react::RNSScreenStackAnimation)stackAnimation
29
28
  {
30
29
  switch (stackAnimation) {
31
30
  // these three are intentionally grouped
32
- case facebook::react::RNSScreenStackAnimation::Slide_from_right:
33
- case facebook::react::RNSScreenStackAnimation::Slide_from_left:
34
- case facebook::react::RNSScreenStackAnimation::Default:
31
+ case react::RNSScreenStackAnimation::Slide_from_right:
32
+ case react::RNSScreenStackAnimation::Slide_from_left:
33
+ case react::RNSScreenStackAnimation::Default:
35
34
  return RNSScreenStackAnimationDefault;
36
- case facebook::react::RNSScreenStackAnimation::Flip:
35
+ case react::RNSScreenStackAnimation::Flip:
37
36
  return RNSScreenStackAnimationFlip;
38
- case facebook::react::RNSScreenStackAnimation::Simple_push:
37
+ case react::RNSScreenStackAnimation::Simple_push:
39
38
  return RNSScreenStackAnimationSimplePush;
40
- case facebook::react::RNSScreenStackAnimation::None:
39
+ case react::RNSScreenStackAnimation::None:
41
40
  return RNSScreenStackAnimationNone;
42
- case facebook::react::RNSScreenStackAnimation::Fade:
41
+ case react::RNSScreenStackAnimation::Fade:
43
42
  return RNSScreenStackAnimationFade;
44
- case facebook::react::RNSScreenStackAnimation::Slide_from_bottom:
43
+ case react::RNSScreenStackAnimation::Slide_from_bottom:
45
44
  return RNSScreenStackAnimationSlideFromBottom;
46
- case facebook::react::RNSScreenStackAnimation::Fade_from_bottom:
45
+ case react::RNSScreenStackAnimation::Fade_from_bottom:
47
46
  return RNSScreenStackAnimationFadeFromBottom;
48
47
  }
49
48
  }
50
49
 
51
50
  + (RNSScreenStackHeaderSubviewType)RNSScreenStackHeaderSubviewTypeFromCppEquivalent:
52
- (facebook::react::RNSScreenStackHeaderSubviewType)subviewType
51
+ (react::RNSScreenStackHeaderSubviewType)subviewType
53
52
  {
54
53
  switch (subviewType) {
55
- case facebook::react::RNSScreenStackHeaderSubviewType::Left:
54
+ case react::RNSScreenStackHeaderSubviewType::Left:
56
55
  return RNSScreenStackHeaderSubviewTypeLeft;
57
- case facebook::react::RNSScreenStackHeaderSubviewType::Right:
56
+ case react::RNSScreenStackHeaderSubviewType::Right:
58
57
  return RNSScreenStackHeaderSubviewTypeRight;
59
- case facebook::react::RNSScreenStackHeaderSubviewType::Title:
58
+ case react::RNSScreenStackHeaderSubviewType::Title:
60
59
  return RNSScreenStackHeaderSubviewTypeTitle;
61
- case facebook::react::RNSScreenStackHeaderSubviewType::Center:
60
+ case react::RNSScreenStackHeaderSubviewType::Center:
62
61
  return RNSScreenStackHeaderSubviewTypeCenter;
63
- case facebook::react::RNSScreenStackHeaderSubviewType::SearchBar:
62
+ case react::RNSScreenStackHeaderSubviewType::SearchBar:
64
63
  return RNSScreenStackHeaderSubviewTypeSearchBar;
65
- case facebook::react::RNSScreenStackHeaderSubviewType::Back:
64
+ case react::RNSScreenStackHeaderSubviewType::Back:
66
65
  return RNSScreenStackHeaderSubviewTypeBackButton;
67
66
  }
68
67
  }
69
68
 
70
69
  + (RNSScreenReplaceAnimation)RNSScreenReplaceAnimationFromCppEquivalent:
71
- (facebook::react::RNSScreenReplaceAnimation)replaceAnimation
70
+ (react::RNSScreenReplaceAnimation)replaceAnimation
72
71
  {
73
72
  switch (replaceAnimation) {
74
- case facebook::react::RNSScreenReplaceAnimation::Pop:
73
+ case react::RNSScreenReplaceAnimation::Pop:
75
74
  return RNSScreenReplaceAnimationPop;
76
- case facebook::react::RNSScreenReplaceAnimation::Push:
75
+ case react::RNSScreenReplaceAnimation::Push:
77
76
  return RNSScreenReplaceAnimationPush;
78
77
  }
79
78
  }
80
79
 
81
- + (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:
82
- (facebook::react::RNSScreenSwipeDirection)swipeDirection
80
+ + (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:(react::RNSScreenSwipeDirection)swipeDirection
83
81
  {
84
82
  switch (swipeDirection) {
85
- case facebook::react::RNSScreenSwipeDirection::Horizontal:
83
+ case react::RNSScreenSwipeDirection::Horizontal:
86
84
  return RNSScreenSwipeDirectionHorizontal;
87
- case facebook::react::RNSScreenSwipeDirection::Vertical:
85
+ case react::RNSScreenSwipeDirection::Vertical:
88
86
  return RNSScreenSwipeDirectionVertical;
89
87
  }
90
88
  }
91
89
 
92
- + (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:
93
- (facebook::react::RNSScreenSheetAllowedDetents)allowedDetents
90
+ + (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:(react::RNSScreenSheetAllowedDetents)allowedDetents
94
91
  {
95
92
  switch (allowedDetents) {
96
- case facebook::react::RNSScreenSheetAllowedDetents::All:
93
+ case react::RNSScreenSheetAllowedDetents::All:
97
94
  return RNSScreenDetentTypeAll;
98
- case facebook::react::RNSScreenSheetAllowedDetents::Large:
95
+ case react::RNSScreenSheetAllowedDetents::Large:
99
96
  return RNSScreenDetentTypeLarge;
100
- case facebook::react::RNSScreenSheetAllowedDetents::Medium:
97
+ case react::RNSScreenSheetAllowedDetents::Medium:
101
98
  return RNSScreenDetentTypeMedium;
102
99
  }
103
100
  }
104
101
 
105
- + (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:
106
- (facebook::react::RNSScreenSheetLargestUndimmedDetent)detent
102
+ + (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:(react::RNSScreenSheetLargestUndimmedDetent)detent
107
103
  {
108
104
  switch (detent) {
109
- case facebook::react::RNSScreenSheetLargestUndimmedDetent::All:
105
+ case react::RNSScreenSheetLargestUndimmedDetent::All:
110
106
  return RNSScreenDetentTypeAll;
111
- case facebook::react::RNSScreenSheetLargestUndimmedDetent::Large:
107
+ case react::RNSScreenSheetLargestUndimmedDetent::Large:
112
108
  return RNSScreenDetentTypeLarge;
113
- case facebook::react::RNSScreenSheetLargestUndimmedDetent::Medium:
109
+ case react::RNSScreenSheetLargestUndimmedDetent::Medium:
114
110
  return RNSScreenDetentTypeMedium;
115
111
  }
116
112
  }
117
113
 
118
114
  + (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
119
- (const facebook::react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance
115
+ (const react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance
120
116
  {
121
117
  return @{
122
118
  @"start" : @(gestureResponseDistance.start),
@@ -127,20 +123,32 @@
127
123
  }
128
124
 
129
125
  + (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
130
- (facebook::react::RNSSearchBarAutoCapitalize)autoCapitalize
126
+ (react::RNSSearchBarAutoCapitalize)autoCapitalize
131
127
  {
132
128
  switch (autoCapitalize) {
133
- case facebook::react::RNSSearchBarAutoCapitalize::Words:
129
+ case react::RNSSearchBarAutoCapitalize::Words:
134
130
  return UITextAutocapitalizationTypeWords;
135
- case facebook::react::RNSSearchBarAutoCapitalize::Sentences:
131
+ case react::RNSSearchBarAutoCapitalize::Sentences:
136
132
  return UITextAutocapitalizationTypeSentences;
137
- case facebook::react::RNSSearchBarAutoCapitalize::Characters:
133
+ case react::RNSSearchBarAutoCapitalize::Characters:
138
134
  return UITextAutocapitalizationTypeAllCharacters;
139
- case facebook::react::RNSSearchBarAutoCapitalize::None:
135
+ case react::RNSSearchBarAutoCapitalize::None:
140
136
  return UITextAutocapitalizationTypeNone;
141
137
  }
142
138
  }
143
139
 
140
+ + (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement
141
+ {
142
+ switch (placement) {
143
+ case react::RNSSearchBarPlacement::Stacked:
144
+ return RNSSearchBarPlacementStacked;
145
+ case react::RNSSearchBarPlacement::Automatic:
146
+ return RNSSearchBarPlacementAutomatic;
147
+ case react::RNSSearchBarPlacement::Inline:
148
+ return RNSSearchBarPlacementInline;
149
+ }
150
+ }
151
+
144
152
  @end
145
153
 
146
154
  #endif // RCT_NEW_ARCH_ENABLED
package/ios/RNSEnums.h CHANGED
@@ -63,3 +63,9 @@ typedef NS_ENUM(NSInteger, RNSScreenDetentType) {
63
63
  RNSScreenDetentTypeLarge,
64
64
  RNSScreenDetentTypeAll,
65
65
  };
66
+
67
+ typedef NS_ENUM(NSInteger, RNSSearchBarPlacement) {
68
+ RNSSearchBarPlacementAutomatic,
69
+ RNSSearchBarPlacementInline,
70
+ RNSSearchBarPlacementStacked,
71
+ };
@@ -7,6 +7,10 @@
7
7
  #import <React/RCTView.h>
8
8
  #endif
9
9
 
10
+ #ifdef RCT_NEW_ARCH_ENABLED
11
+ namespace react = facebook::react;
12
+ #endif // RCT_NEW_ARCH_ENABLED
13
+
10
14
  @interface RNSFullWindowOverlayManager : RCTViewManager
11
15
 
12
16
  @end
@@ -23,8 +27,8 @@
23
27
  #endif // RCT_NEW_ARCH_ENABLED
24
28
 
25
29
  #ifdef RCT_NEW_ARCH_ENABLED
26
- @property (nonatomic) facebook::react::LayoutMetrics oldLayoutMetrics;
27
- @property (nonatomic) facebook::react::LayoutMetrics newLayoutMetrics;
30
+ @property (nonatomic) react::LayoutMetrics oldLayoutMetrics;
31
+ @property (nonatomic) react::LayoutMetrics newLayoutMetrics;
28
32
  #endif // RCT_NEW_ARCH_ENABLED
29
33
 
30
34
  @end
@@ -15,6 +15,14 @@
15
15
 
16
16
  @implementation RNSFullWindowOverlayContainer
17
17
 
18
+ - (instancetype)initWithFrame:(CGRect)frame
19
+ {
20
+ if (self = [super initWithFrame:frame]) {
21
+ self.accessibilityViewIsModal = YES;
22
+ }
23
+ return self;
24
+ }
25
+
18
26
  - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
19
27
  {
20
28
  for (UIView *view in [self subviews]) {
@@ -74,7 +82,7 @@
74
82
  - (instancetype)init
75
83
  {
76
84
  if (self = [super init]) {
77
- static const auto defaultProps = std::make_shared<const facebook::react::RNSFullWindowOverlayProps>();
85
+ static const auto defaultProps = std::make_shared<const react::RNSFullWindowOverlayProps>();
78
86
  _props = defaultProps;
79
87
  [self _initCommon];
80
88
  }
@@ -127,6 +135,9 @@
127
135
  [_touchHandler detachFromView:_container];
128
136
  }
129
137
  } else {
138
+ if (_container != nil) {
139
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, _container);
140
+ }
130
141
  if (_touchHandler == nil) {
131
142
  #ifdef RCT_NEW_ARCH_ENABLED
132
143
  _touchHandler = [RCTSurfaceTouchHandler new];
@@ -151,10 +162,9 @@
151
162
  }
152
163
  }
153
164
 
154
- + (facebook::react::ComponentDescriptorProvider)componentDescriptorProvider
165
+ + (react::ComponentDescriptorProvider)componentDescriptorProvider
155
166
  {
156
- return facebook::react::concreteComponentDescriptorProvider<
157
- facebook::react::RNSFullWindowOverlayComponentDescriptor>();
167
+ return react::concreteComponentDescriptorProvider<react::RNSFullWindowOverlayComponentDescriptor>();
158
168
  }
159
169
 
160
170
  - (void)prepareForRecycle
@@ -182,8 +192,8 @@
182
192
  [childComponentView removeFromSuperview];
183
193
  }
184
194
 
185
- - (void)updateLayoutMetrics:(facebook::react::LayoutMetrics const &)layoutMetrics
186
- oldLayoutMetrics:(facebook::react::LayoutMetrics const &)oldLayoutMetrics
195
+ - (void)updateLayoutMetrics:(react::LayoutMetrics const &)layoutMetrics
196
+ oldLayoutMetrics:(react::LayoutMetrics const &)oldLayoutMetrics
187
197
  {
188
198
  CGRect frame = RCTCGRectFromRect(layoutMetrics.frame);
189
199
  _reactFrame = frame;
package/ios/RNSScreen.h CHANGED
@@ -8,10 +8,14 @@
8
8
  #import <React/RCTViewComponentView.h>
9
9
  #else
10
10
  #import <React/RCTView.h>
11
- #endif
11
+ #endif // RCT_NEW_ARCH_ENABLED
12
12
 
13
13
  NS_ASSUME_NONNULL_BEGIN
14
14
 
15
+ #ifdef RCT_NEW_ARCH_ENABLED
16
+ namespace react = facebook::react;
17
+ #endif // RCT_NEW_ARCH_ENABLED
18
+
15
19
  @interface RCTConvert (RNSScreen)
16
20
 
17
21
  + (RNSScreenStackPresentation)RNSScreenStackPresentation:(id)json;
@@ -27,7 +31,7 @@ NS_ASSUME_NONNULL_BEGIN
27
31
 
28
32
  @class RNSScreenView;
29
33
 
30
- @interface RNSScreen : UIViewController <RNScreensViewControllerDelegate>
34
+ @interface RNSScreen : UIViewController <RNSViewControllerDelegate>
31
35
 
32
36
  - (instancetype)initWithView:(UIView *)view;
33
37
  - (UIViewController *)findChildVCForConfigAndTrait:(RNSWindowTrait)trait includingModals:(BOOL)includingModals;
@@ -40,6 +44,8 @@ NS_ASSUME_NONNULL_BEGIN
40
44
 
41
45
  @end
42
46
 
47
+ @class RNSScreenStackHeaderConfig;
48
+
43
49
  @interface RNSScreenView :
44
50
  #ifdef RCT_NEW_ARCH_ENABLED
45
51
  RCTViewComponentView
@@ -86,9 +92,10 @@ NS_ASSUME_NONNULL_BEGIN
86
92
 
87
93
  #ifdef RCT_NEW_ARCH_ENABLED
88
94
  // we recreate the behavior of `reactSetFrame` on new architecture
89
- @property (nonatomic) facebook::react::LayoutMetrics oldLayoutMetrics;
90
- @property (nonatomic) facebook::react::LayoutMetrics newLayoutMetrics;
91
- @property (weak, nonatomic) UIView *config;
95
+ @property (nonatomic) react::LayoutMetrics oldLayoutMetrics;
96
+ @property (nonatomic) react::LayoutMetrics newLayoutMetrics;
97
+ @property (weak, nonatomic) RNSScreenStackHeaderConfig *config;
98
+ @property (nonatomic, readonly) BOOL hasHeaderConfig;
92
99
  #else
93
100
  @property (nonatomic, copy) RCTDirectEventBlock onAppear;
94
101
  @property (nonatomic, copy) RCTDirectEventBlock onDisappear;
@@ -97,6 +104,7 @@ NS_ASSUME_NONNULL_BEGIN
97
104
  @property (nonatomic, copy) RCTDirectEventBlock onWillDisappear;
98
105
  @property (nonatomic, copy) RCTDirectEventBlock onNativeDismissCancelled;
99
106
  @property (nonatomic, copy) RCTDirectEventBlock onTransitionProgress;
107
+ @property (nonatomic, copy) RCTDirectEventBlock onGestureCancel;
100
108
  #endif // RCT_NEW_ARCH_ENABLED
101
109
 
102
110
  - (void)notifyFinishTransitioning;
@@ -108,12 +116,16 @@ NS_ASSUME_NONNULL_BEGIN
108
116
  - (void)notifyDisappear;
109
117
  - (void)updateBounds;
110
118
  - (void)notifyDismissedWithCount:(int)dismissCount;
119
+ - (instancetype)initWithFrame:(CGRect)frame;
111
120
  #endif
112
121
 
113
122
  - (void)notifyTransitionProgress:(double)progress closing:(BOOL)closing goingForward:(BOOL)goingForward;
114
123
  - (void)notifyDismissCancelledWithDismissCount:(int)dismissCount;
115
124
  - (BOOL)isModal;
116
125
 
126
+ /// Looks for header configuration in instance's `reactSubviews` and returns it. If not present returns `nil`.
127
+ - (RNSScreenStackHeaderConfig *_Nullable)findHeaderConfig;
128
+
117
129
  @end
118
130
 
119
131
  @interface UIView (RNSScreen)