react-native-screens 3.23.0 → 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.
- package/ios/RNSConvert.h +12 -14
- package/ios/RNSConvert.mm +49 -53
- package/ios/RNSFullWindowOverlay.h +6 -2
- package/ios/RNSFullWindowOverlay.mm +5 -6
- package/ios/RNSScreen.h +7 -3
- package/ios/RNSScreen.mm +32 -30
- package/ios/RNSScreenContainer.mm +9 -6
- package/ios/RNSScreenNavigationContainer.mm +5 -4
- package/ios/RNSScreenStack.mm +12 -9
- package/ios/RNSScreenStackHeaderConfig.mm +20 -20
- package/ios/RNSScreenStackHeaderSubview.mm +12 -11
- package/ios/RNSSearchBar.h +3 -0
- package/ios/RNSSearchBar.mm +27 -20
- package/lib/commonjs/native-stack/types.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/native-stack/types.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +2 -0
- package/lib/typescript/types.d.ts +2 -0
- package/package.json +1 -1
- package/src/native-stack/types.tsx +2 -0
- package/src/types.tsx +2 -0
package/ios/RNSConvert.h
CHANGED
|
@@ -2,36 +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
|
-
(
|
|
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
|
-
(
|
|
15
|
+
(react::RNSScreenStackHeaderSubviewType)subviewType;
|
|
15
16
|
|
|
16
17
|
+ (RNSScreenReplaceAnimation)RNSScreenReplaceAnimationFromCppEquivalent:
|
|
17
|
-
(
|
|
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
|
|
27
|
+
(const react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance;
|
|
30
28
|
|
|
31
29
|
+ (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
|
|
32
|
-
(
|
|
30
|
+
(react::RNSSearchBarAutoCapitalize)autoCapitalize;
|
|
33
31
|
|
|
34
|
-
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(
|
|
32
|
+
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement;
|
|
35
33
|
|
|
36
34
|
@end
|
|
37
35
|
|
package/ios/RNSConvert.mm
CHANGED
|
@@ -4,119 +4,115 @@
|
|
|
4
4
|
@implementation RNSConvert
|
|
5
5
|
|
|
6
6
|
+ (RNSScreenStackPresentation)RNSScreenStackPresentationFromCppEquivalent:
|
|
7
|
-
(
|
|
7
|
+
(react::RNSScreenStackPresentation)stackPresentation
|
|
8
8
|
{
|
|
9
9
|
switch (stackPresentation) {
|
|
10
|
-
case
|
|
10
|
+
case react::RNSScreenStackPresentation::Push:
|
|
11
11
|
return RNSScreenStackPresentationPush;
|
|
12
|
-
case
|
|
12
|
+
case react::RNSScreenStackPresentation::Modal:
|
|
13
13
|
return RNSScreenStackPresentationModal;
|
|
14
|
-
case
|
|
14
|
+
case react::RNSScreenStackPresentation::FullScreenModal:
|
|
15
15
|
return RNSScreenStackPresentationFullScreenModal;
|
|
16
|
-
case
|
|
16
|
+
case react::RNSScreenStackPresentation::FormSheet:
|
|
17
17
|
return RNSScreenStackPresentationFormSheet;
|
|
18
|
-
case
|
|
18
|
+
case react::RNSScreenStackPresentation::ContainedModal:
|
|
19
19
|
return RNSScreenStackPresentationContainedModal;
|
|
20
|
-
case
|
|
20
|
+
case react::RNSScreenStackPresentation::TransparentModal:
|
|
21
21
|
return RNSScreenStackPresentationTransparentModal;
|
|
22
|
-
case
|
|
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
|
|
33
|
-
case
|
|
34
|
-
case
|
|
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
|
|
35
|
+
case react::RNSScreenStackAnimation::Flip:
|
|
37
36
|
return RNSScreenStackAnimationFlip;
|
|
38
|
-
case
|
|
37
|
+
case react::RNSScreenStackAnimation::Simple_push:
|
|
39
38
|
return RNSScreenStackAnimationSimplePush;
|
|
40
|
-
case
|
|
39
|
+
case react::RNSScreenStackAnimation::None:
|
|
41
40
|
return RNSScreenStackAnimationNone;
|
|
42
|
-
case
|
|
41
|
+
case react::RNSScreenStackAnimation::Fade:
|
|
43
42
|
return RNSScreenStackAnimationFade;
|
|
44
|
-
case
|
|
43
|
+
case react::RNSScreenStackAnimation::Slide_from_bottom:
|
|
45
44
|
return RNSScreenStackAnimationSlideFromBottom;
|
|
46
|
-
case
|
|
45
|
+
case react::RNSScreenStackAnimation::Fade_from_bottom:
|
|
47
46
|
return RNSScreenStackAnimationFadeFromBottom;
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
+ (RNSScreenStackHeaderSubviewType)RNSScreenStackHeaderSubviewTypeFromCppEquivalent:
|
|
52
|
-
(
|
|
51
|
+
(react::RNSScreenStackHeaderSubviewType)subviewType
|
|
53
52
|
{
|
|
54
53
|
switch (subviewType) {
|
|
55
|
-
case
|
|
54
|
+
case react::RNSScreenStackHeaderSubviewType::Left:
|
|
56
55
|
return RNSScreenStackHeaderSubviewTypeLeft;
|
|
57
|
-
case
|
|
56
|
+
case react::RNSScreenStackHeaderSubviewType::Right:
|
|
58
57
|
return RNSScreenStackHeaderSubviewTypeRight;
|
|
59
|
-
case
|
|
58
|
+
case react::RNSScreenStackHeaderSubviewType::Title:
|
|
60
59
|
return RNSScreenStackHeaderSubviewTypeTitle;
|
|
61
|
-
case
|
|
60
|
+
case react::RNSScreenStackHeaderSubviewType::Center:
|
|
62
61
|
return RNSScreenStackHeaderSubviewTypeCenter;
|
|
63
|
-
case
|
|
62
|
+
case react::RNSScreenStackHeaderSubviewType::SearchBar:
|
|
64
63
|
return RNSScreenStackHeaderSubviewTypeSearchBar;
|
|
65
|
-
case
|
|
64
|
+
case react::RNSScreenStackHeaderSubviewType::Back:
|
|
66
65
|
return RNSScreenStackHeaderSubviewTypeBackButton;
|
|
67
66
|
}
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
+ (RNSScreenReplaceAnimation)RNSScreenReplaceAnimationFromCppEquivalent:
|
|
71
|
-
(
|
|
70
|
+
(react::RNSScreenReplaceAnimation)replaceAnimation
|
|
72
71
|
{
|
|
73
72
|
switch (replaceAnimation) {
|
|
74
|
-
case
|
|
73
|
+
case react::RNSScreenReplaceAnimation::Pop:
|
|
75
74
|
return RNSScreenReplaceAnimationPop;
|
|
76
|
-
case
|
|
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
|
|
83
|
+
case react::RNSScreenSwipeDirection::Horizontal:
|
|
86
84
|
return RNSScreenSwipeDirectionHorizontal;
|
|
87
|
-
case
|
|
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
|
|
93
|
+
case react::RNSScreenSheetAllowedDetents::All:
|
|
97
94
|
return RNSScreenDetentTypeAll;
|
|
98
|
-
case
|
|
95
|
+
case react::RNSScreenSheetAllowedDetents::Large:
|
|
99
96
|
return RNSScreenDetentTypeLarge;
|
|
100
|
-
case
|
|
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
|
|
105
|
+
case react::RNSScreenSheetLargestUndimmedDetent::All:
|
|
110
106
|
return RNSScreenDetentTypeAll;
|
|
111
|
-
case
|
|
107
|
+
case react::RNSScreenSheetLargestUndimmedDetent::Large:
|
|
112
108
|
return RNSScreenDetentTypeLarge;
|
|
113
|
-
case
|
|
109
|
+
case react::RNSScreenSheetLargestUndimmedDetent::Medium:
|
|
114
110
|
return RNSScreenDetentTypeMedium;
|
|
115
111
|
}
|
|
116
112
|
}
|
|
117
113
|
|
|
118
114
|
+ (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
|
|
119
|
-
(const
|
|
115
|
+
(const react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance
|
|
120
116
|
{
|
|
121
117
|
return @{
|
|
122
118
|
@"start" : @(gestureResponseDistance.start),
|
|
@@ -127,28 +123,28 @@
|
|
|
127
123
|
}
|
|
128
124
|
|
|
129
125
|
+ (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
|
|
130
|
-
(
|
|
126
|
+
(react::RNSSearchBarAutoCapitalize)autoCapitalize
|
|
131
127
|
{
|
|
132
128
|
switch (autoCapitalize) {
|
|
133
|
-
case
|
|
129
|
+
case react::RNSSearchBarAutoCapitalize::Words:
|
|
134
130
|
return UITextAutocapitalizationTypeWords;
|
|
135
|
-
case
|
|
131
|
+
case react::RNSSearchBarAutoCapitalize::Sentences:
|
|
136
132
|
return UITextAutocapitalizationTypeSentences;
|
|
137
|
-
case
|
|
133
|
+
case react::RNSSearchBarAutoCapitalize::Characters:
|
|
138
134
|
return UITextAutocapitalizationTypeAllCharacters;
|
|
139
|
-
case
|
|
135
|
+
case react::RNSSearchBarAutoCapitalize::None:
|
|
140
136
|
return UITextAutocapitalizationTypeNone;
|
|
141
137
|
}
|
|
142
138
|
}
|
|
143
139
|
|
|
144
|
-
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(
|
|
140
|
+
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement
|
|
145
141
|
{
|
|
146
142
|
switch (placement) {
|
|
147
|
-
case
|
|
143
|
+
case react::RNSSearchBarPlacement::Stacked:
|
|
148
144
|
return RNSSearchBarPlacementStacked;
|
|
149
|
-
case
|
|
145
|
+
case react::RNSSearchBarPlacement::Automatic:
|
|
150
146
|
return RNSSearchBarPlacementAutomatic;
|
|
151
|
-
case
|
|
147
|
+
case react::RNSSearchBarPlacement::Inline:
|
|
152
148
|
return RNSSearchBarPlacementInline;
|
|
153
149
|
}
|
|
154
150
|
}
|
|
@@ -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)
|
|
27
|
-
@property (nonatomic)
|
|
30
|
+
@property (nonatomic) react::LayoutMetrics oldLayoutMetrics;
|
|
31
|
+
@property (nonatomic) react::LayoutMetrics newLayoutMetrics;
|
|
28
32
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
29
33
|
|
|
30
34
|
@end
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
- (instancetype)init
|
|
83
83
|
{
|
|
84
84
|
if (self = [super init]) {
|
|
85
|
-
static const auto defaultProps = std::make_shared<const
|
|
85
|
+
static const auto defaultProps = std::make_shared<const react::RNSFullWindowOverlayProps>();
|
|
86
86
|
_props = defaultProps;
|
|
87
87
|
[self _initCommon];
|
|
88
88
|
}
|
|
@@ -162,10 +162,9 @@
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
+ (
|
|
165
|
+
+ (react::ComponentDescriptorProvider)componentDescriptorProvider
|
|
166
166
|
{
|
|
167
|
-
return
|
|
168
|
-
facebook::react::RNSFullWindowOverlayComponentDescriptor>();
|
|
167
|
+
return react::concreteComponentDescriptorProvider<react::RNSFullWindowOverlayComponentDescriptor>();
|
|
169
168
|
}
|
|
170
169
|
|
|
171
170
|
- (void)prepareForRecycle
|
|
@@ -193,8 +192,8 @@
|
|
|
193
192
|
[childComponentView removeFromSuperview];
|
|
194
193
|
}
|
|
195
194
|
|
|
196
|
-
- (void)updateLayoutMetrics:(
|
|
197
|
-
oldLayoutMetrics:(
|
|
195
|
+
- (void)updateLayoutMetrics:(react::LayoutMetrics const &)layoutMetrics
|
|
196
|
+
oldLayoutMetrics:(react::LayoutMetrics const &)oldLayoutMetrics
|
|
198
197
|
{
|
|
199
198
|
CGRect frame = RCTCGRectFromRect(layoutMetrics.frame);
|
|
200
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;
|
|
@@ -88,8 +92,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
88
92
|
|
|
89
93
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
90
94
|
// we recreate the behavior of `reactSetFrame` on new architecture
|
|
91
|
-
@property (nonatomic)
|
|
92
|
-
@property (nonatomic)
|
|
95
|
+
@property (nonatomic) react::LayoutMetrics oldLayoutMetrics;
|
|
96
|
+
@property (nonatomic) react::LayoutMetrics newLayoutMetrics;
|
|
93
97
|
@property (weak, nonatomic) RNSScreenStackHeaderConfig *config;
|
|
94
98
|
@property (nonatomic, readonly) BOOL hasHeaderConfig;
|
|
95
99
|
#else
|
package/ios/RNSScreen.mm
CHANGED
|
@@ -24,6 +24,10 @@
|
|
|
24
24
|
#import "RNSScreenStack.h"
|
|
25
25
|
#import "RNSScreenStackHeaderConfig.h"
|
|
26
26
|
|
|
27
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
28
|
+
namespace react = facebook::react;
|
|
29
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
30
|
+
|
|
27
31
|
@interface RNSScreenView ()
|
|
28
32
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
29
33
|
<RCTRNSScreenViewProtocol, UIAdaptivePresentationControllerDelegate>
|
|
@@ -36,7 +40,7 @@
|
|
|
36
40
|
__weak RCTBridge *_bridge;
|
|
37
41
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
38
42
|
RCTSurfaceTouchHandler *_touchHandler;
|
|
39
|
-
|
|
43
|
+
react::RNSScreenShadowNode::ConcreteState::Shared _state;
|
|
40
44
|
// on fabric, they are not available by default so we need them exposed here too
|
|
41
45
|
NSMutableArray<UIView *> *_reactSubviews;
|
|
42
46
|
#else
|
|
@@ -49,7 +53,7 @@
|
|
|
49
53
|
- (instancetype)initWithFrame:(CGRect)frame
|
|
50
54
|
{
|
|
51
55
|
if (self = [super initWithFrame:frame]) {
|
|
52
|
-
static const auto defaultProps = std::make_shared<const
|
|
56
|
+
static const auto defaultProps = std::make_shared<const react::RNSScreenProps>();
|
|
53
57
|
_props = defaultProps;
|
|
54
58
|
_reactSubviews = [NSMutableArray new];
|
|
55
59
|
[self initCommonProps];
|
|
@@ -102,7 +106,7 @@
|
|
|
102
106
|
{
|
|
103
107
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
104
108
|
if (_state != nullptr) {
|
|
105
|
-
auto newState =
|
|
109
|
+
auto newState = react::RNSScreenState{RCTSizeFromCGSize(self.bounds.size)};
|
|
106
110
|
_state->updateState(std::move(newState));
|
|
107
111
|
UINavigationController *navctr = _controller.navigationController;
|
|
108
112
|
[navctr.view setNeedsLayout];
|
|
@@ -283,8 +287,8 @@
|
|
|
283
287
|
// If screen is already unmounted then there will be no event emitter
|
|
284
288
|
// it will be cleaned in prepareForRecycle
|
|
285
289
|
if (_eventEmitter != nullptr) {
|
|
286
|
-
std::dynamic_pointer_cast<const
|
|
287
|
-
->onDismissed(
|
|
290
|
+
std::dynamic_pointer_cast<const react::RNSScreenEventEmitter>(_eventEmitter)
|
|
291
|
+
->onDismissed(react::RNSScreenEventEmitter::OnDismissed{.dismissCount = dismissCount});
|
|
288
292
|
}
|
|
289
293
|
#else
|
|
290
294
|
// TODO: hopefully problems connected to dismissed prop are only the case on paper
|
|
@@ -305,9 +309,9 @@
|
|
|
305
309
|
// If screen is already unmounted then there will be no event emitter
|
|
306
310
|
// it will be cleaned in prepareForRecycle
|
|
307
311
|
if (_eventEmitter != nullptr) {
|
|
308
|
-
std::dynamic_pointer_cast<const
|
|
312
|
+
std::dynamic_pointer_cast<const react::RNSScreenEventEmitter>(_eventEmitter)
|
|
309
313
|
->onNativeDismissCancelled(
|
|
310
|
-
|
|
314
|
+
react::RNSScreenEventEmitter::OnNativeDismissCancelled{.dismissCount = dismissCount});
|
|
311
315
|
}
|
|
312
316
|
#else
|
|
313
317
|
if (self.onNativeDismissCancelled) {
|
|
@@ -322,8 +326,8 @@
|
|
|
322
326
|
// If screen is already unmounted then there will be no event emitter
|
|
323
327
|
// it will be cleaned in prepareForRecycle
|
|
324
328
|
if (_eventEmitter != nullptr) {
|
|
325
|
-
std::dynamic_pointer_cast<const
|
|
326
|
-
->onWillAppear(
|
|
329
|
+
std::dynamic_pointer_cast<const react::RNSScreenEventEmitter>(_eventEmitter)
|
|
330
|
+
->onWillAppear(react::RNSScreenEventEmitter::OnWillAppear{});
|
|
327
331
|
}
|
|
328
332
|
[self updateLayoutMetrics:_newLayoutMetrics oldLayoutMetrics:_oldLayoutMetrics];
|
|
329
333
|
#else
|
|
@@ -345,8 +349,8 @@
|
|
|
345
349
|
// If screen is already unmounted then there will be no event emitter
|
|
346
350
|
// it will be cleaned in prepareForRecycle
|
|
347
351
|
if (_eventEmitter != nullptr) {
|
|
348
|
-
std::dynamic_pointer_cast<const
|
|
349
|
-
->onWillDisappear(
|
|
352
|
+
std::dynamic_pointer_cast<const react::RNSScreenEventEmitter>(_eventEmitter)
|
|
353
|
+
->onWillDisappear(react::RNSScreenEventEmitter::OnWillDisappear{});
|
|
350
354
|
}
|
|
351
355
|
#else
|
|
352
356
|
if (self.onWillDisappear) {
|
|
@@ -361,8 +365,8 @@
|
|
|
361
365
|
// If screen is already unmounted then there will be no event emitter
|
|
362
366
|
// it will be cleaned in prepareForRecycle
|
|
363
367
|
if (_eventEmitter != nullptr) {
|
|
364
|
-
std::dynamic_pointer_cast<const
|
|
365
|
-
->onAppear(
|
|
368
|
+
std::dynamic_pointer_cast<const react::RNSScreenEventEmitter>(_eventEmitter)
|
|
369
|
+
->onAppear(react::RNSScreenEventEmitter::OnAppear{});
|
|
366
370
|
}
|
|
367
371
|
#else
|
|
368
372
|
if (self.onAppear) {
|
|
@@ -381,8 +385,8 @@
|
|
|
381
385
|
// If screen is already unmounted then there will be no event emitter
|
|
382
386
|
// it will be cleaned in prepareForRecycle
|
|
383
387
|
if (_eventEmitter != nullptr) {
|
|
384
|
-
std::dynamic_pointer_cast<const
|
|
385
|
-
->onDisappear(
|
|
388
|
+
std::dynamic_pointer_cast<const react::RNSScreenEventEmitter>(_eventEmitter)
|
|
389
|
+
->onDisappear(react::RNSScreenEventEmitter::OnDisappear{});
|
|
386
390
|
}
|
|
387
391
|
#else
|
|
388
392
|
if (self.onDisappear) {
|
|
@@ -395,8 +399,8 @@
|
|
|
395
399
|
{
|
|
396
400
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
397
401
|
if (_eventEmitter != nullptr) {
|
|
398
|
-
std::dynamic_pointer_cast<const
|
|
399
|
-
->onGestureCancel(
|
|
402
|
+
std::dynamic_pointer_cast<const react::RNSScreenEventEmitter>(_eventEmitter)
|
|
403
|
+
->onGestureCancel(react::RNSScreenEventEmitter::OnGestureCancel{});
|
|
400
404
|
}
|
|
401
405
|
#else
|
|
402
406
|
if (self.onGestureCancel) {
|
|
@@ -467,8 +471,8 @@
|
|
|
467
471
|
{
|
|
468
472
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
469
473
|
if (_eventEmitter != nullptr) {
|
|
470
|
-
std::dynamic_pointer_cast<const
|
|
471
|
-
->onTransitionProgress(
|
|
474
|
+
std::dynamic_pointer_cast<const react::RNSScreenEventEmitter>(_eventEmitter)
|
|
475
|
+
->onTransitionProgress(react::RNSScreenEventEmitter::OnTransitionProgress{
|
|
472
476
|
.progress = progress, .closing = closing ? 1 : 0, .goingForward = goingForward ? 1 : 0});
|
|
473
477
|
}
|
|
474
478
|
RNSScreenViewEvent *event = [[RNSScreenViewEvent alloc] initWithEventName:@"onTransitionProgress"
|
|
@@ -602,9 +606,9 @@
|
|
|
602
606
|
return _config != nil;
|
|
603
607
|
}
|
|
604
608
|
|
|
605
|
-
+ (
|
|
609
|
+
+ (react::ComponentDescriptorProvider)componentDescriptorProvider
|
|
606
610
|
{
|
|
607
|
-
return
|
|
611
|
+
return react::concreteComponentDescriptorProvider<react::RNSScreenComponentDescriptor>();
|
|
608
612
|
}
|
|
609
613
|
|
|
610
614
|
- (void)mountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
|
|
@@ -649,11 +653,10 @@
|
|
|
649
653
|
_stackPresentation = RNSScreenStackPresentationPush;
|
|
650
654
|
}
|
|
651
655
|
|
|
652
|
-
- (void)updateProps:(
|
|
653
|
-
oldProps:(facebook::react::Props::Shared const &)oldProps
|
|
656
|
+
- (void)updateProps:(react::Props::Shared const &)props oldProps:(react::Props::Shared const &)oldProps
|
|
654
657
|
{
|
|
655
|
-
const auto &oldScreenProps = *std::static_pointer_cast<const
|
|
656
|
-
const auto &newScreenProps = *std::static_pointer_cast<const
|
|
658
|
+
const auto &oldScreenProps = *std::static_pointer_cast<const react::RNSScreenProps>(_props);
|
|
659
|
+
const auto &newScreenProps = *std::static_pointer_cast<const react::RNSScreenProps>(props);
|
|
657
660
|
|
|
658
661
|
[self setFullScreenSwipeEnabled:newScreenProps.fullScreenSwipeEnabled];
|
|
659
662
|
|
|
@@ -732,14 +735,13 @@
|
|
|
732
735
|
[super updateProps:props oldProps:oldProps];
|
|
733
736
|
}
|
|
734
737
|
|
|
735
|
-
- (void)updateState:(
|
|
736
|
-
oldState:(facebook::react::State::Shared const &)oldState
|
|
738
|
+
- (void)updateState:(react::State::Shared const &)state oldState:(react::State::Shared const &)oldState
|
|
737
739
|
{
|
|
738
|
-
_state = std::static_pointer_cast<const
|
|
740
|
+
_state = std::static_pointer_cast<const react::RNSScreenShadowNode::ConcreteState>(state);
|
|
739
741
|
}
|
|
740
742
|
|
|
741
|
-
- (void)updateLayoutMetrics:(const
|
|
742
|
-
oldLayoutMetrics:(const
|
|
743
|
+
- (void)updateLayoutMetrics:(const react::LayoutMetrics &)layoutMetrics
|
|
744
|
+
oldLayoutMetrics:(const react::LayoutMetrics &)oldLayoutMetrics
|
|
743
745
|
{
|
|
744
746
|
_newLayoutMetrics = layoutMetrics;
|
|
745
747
|
_oldLayoutMetrics = oldLayoutMetrics;
|
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
#import <React/RCTFabricComponentsPlugins.h>
|
|
7
7
|
#import <react/renderer/components/rnscreens/ComponentDescriptors.h>
|
|
8
8
|
#import <react/renderer/components/rnscreens/Props.h>
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
namespace react = facebook::react;
|
|
11
|
+
|
|
12
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
10
13
|
|
|
11
14
|
@implementation RNSViewController
|
|
12
15
|
|
|
@@ -59,7 +62,7 @@
|
|
|
59
62
|
{
|
|
60
63
|
if (self = [super init]) {
|
|
61
64
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
62
|
-
static const auto defaultProps = std::make_shared<const
|
|
65
|
+
static const auto defaultProps = std::make_shared<const react::RNSScreenContainerProps>();
|
|
63
66
|
_props = defaultProps;
|
|
64
67
|
#endif
|
|
65
68
|
_activeScreens = [NSMutableSet new];
|
|
@@ -235,7 +238,7 @@
|
|
|
235
238
|
_controller.view.frame = self.bounds;
|
|
236
239
|
for (RNSScreenView *subview in _reactSubviews) {
|
|
237
240
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
238
|
-
|
|
241
|
+
react::LayoutMetrics screenLayoutMetrics = subview.newLayoutMetrics;
|
|
239
242
|
screenLayoutMetrics.frame = RCTRectFromCGRect(CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height));
|
|
240
243
|
[subview updateLayoutMetrics:screenLayoutMetrics oldLayoutMetrics:subview.oldLayoutMetrics];
|
|
241
244
|
#else
|
|
@@ -267,7 +270,7 @@
|
|
|
267
270
|
|
|
268
271
|
[_reactSubviews insertObject:screenView atIndex:index];
|
|
269
272
|
screenView.reactSuperview = self;
|
|
270
|
-
|
|
273
|
+
react::LayoutMetrics screenLayoutMetrics = screenView.newLayoutMetrics;
|
|
271
274
|
screenLayoutMetrics.frame = RCTRectFromCGRect(CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height));
|
|
272
275
|
[screenView updateLayoutMetrics:screenLayoutMetrics oldLayoutMetrics:screenView.oldLayoutMetrics];
|
|
273
276
|
[self markChildUpdated];
|
|
@@ -295,9 +298,9 @@
|
|
|
295
298
|
[self markChildUpdated];
|
|
296
299
|
}
|
|
297
300
|
|
|
298
|
-
+ (
|
|
301
|
+
+ (react::ComponentDescriptorProvider)componentDescriptorProvider
|
|
299
302
|
{
|
|
300
|
-
return
|
|
303
|
+
return react::concreteComponentDescriptorProvider<react::RNSScreenContainerComponentDescriptor>();
|
|
301
304
|
}
|
|
302
305
|
|
|
303
306
|
- (void)prepareForRecycle
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
#import <React/RCTFabricComponentsPlugins.h>
|
|
7
7
|
#import <react/renderer/components/rnscreens/ComponentDescriptors.h>
|
|
8
8
|
#import <react/renderer/components/rnscreens/Props.h>
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
namespace react = facebook::react;
|
|
11
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
10
12
|
|
|
11
13
|
@implementation RNSContainerNavigationController
|
|
12
14
|
|
|
@@ -37,10 +39,9 @@
|
|
|
37
39
|
|
|
38
40
|
#pragma mark-- Fabric specific
|
|
39
41
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
40
|
-
+ (
|
|
42
|
+
+ (react::ComponentDescriptorProvider)componentDescriptorProvider
|
|
41
43
|
{
|
|
42
|
-
return
|
|
43
|
-
facebook::react::RNSScreenNavigationContainerComponentDescriptor>();
|
|
44
|
+
return react::concreteComponentDescriptorProvider<react::RNSScreenNavigationContainerComponentDescriptor>();
|
|
44
45
|
}
|
|
45
46
|
#endif
|
|
46
47
|
|
package/ios/RNSScreenStack.mm
CHANGED
|
@@ -22,6 +22,10 @@
|
|
|
22
22
|
#import "RNSScreenStackHeaderConfig.h"
|
|
23
23
|
#import "RNSScreenWindowTraits.h"
|
|
24
24
|
|
|
25
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
26
|
+
namespace react = facebook::react;
|
|
27
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
28
|
+
|
|
25
29
|
@interface RNSScreenStackView () <
|
|
26
30
|
UINavigationControllerDelegate,
|
|
27
31
|
UIAdaptivePresentationControllerDelegate,
|
|
@@ -102,7 +106,7 @@
|
|
|
102
106
|
- (instancetype)initWithFrame:(CGRect)frame
|
|
103
107
|
{
|
|
104
108
|
if (self = [super initWithFrame:frame]) {
|
|
105
|
-
static const auto defaultProps = std::make_shared<const
|
|
109
|
+
static const auto defaultProps = std::make_shared<const react::RNSScreenStackProps>();
|
|
106
110
|
_props = defaultProps;
|
|
107
111
|
[self initCommonProps];
|
|
108
112
|
}
|
|
@@ -159,8 +163,8 @@
|
|
|
159
163
|
{
|
|
160
164
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
161
165
|
if (_eventEmitter != nullptr) {
|
|
162
|
-
std::dynamic_pointer_cast<const
|
|
163
|
-
->onFinishTransitioning(
|
|
166
|
+
std::dynamic_pointer_cast<const react::RNSScreenStackEventEmitter>(_eventEmitter)
|
|
167
|
+
->onFinishTransitioning(react::RNSScreenStackEventEmitter::OnFinishTransitioning{});
|
|
164
168
|
}
|
|
165
169
|
#else
|
|
166
170
|
if (self.onFinishTransitioning) {
|
|
@@ -1003,12 +1007,11 @@
|
|
|
1003
1007
|
_snapshot = [_controller.visibleViewController.view snapshotViewAfterScreenUpdates:NO];
|
|
1004
1008
|
}
|
|
1005
1009
|
|
|
1006
|
-
- (void)mountingTransactionWillMount:(
|
|
1007
|
-
withSurfaceTelemetry:(
|
|
1010
|
+
- (void)mountingTransactionWillMount:(react::MountingTransaction const &)transaction
|
|
1011
|
+
withSurfaceTelemetry:(react::SurfaceTelemetry const &)surfaceTelemetry
|
|
1008
1012
|
{
|
|
1009
1013
|
for (auto &mutation : transaction.getMutations()) {
|
|
1010
|
-
if (mutation.type ==
|
|
1011
|
-
mutation.parentShadowView.componentName != nil &&
|
|
1014
|
+
if (mutation.type == react::ShadowViewMutation::Type::Remove && mutation.parentShadowView.componentName != nil &&
|
|
1012
1015
|
strcmp(mutation.parentShadowView.componentName, "RNSScreenStack") == 0) {
|
|
1013
1016
|
[self takeSnapshot];
|
|
1014
1017
|
return;
|
|
@@ -1032,9 +1035,9 @@
|
|
|
1032
1035
|
[_controller setViewControllers:@[ [UIViewController new] ]];
|
|
1033
1036
|
}
|
|
1034
1037
|
|
|
1035
|
-
+ (
|
|
1038
|
+
+ (react::ComponentDescriptorProvider)componentDescriptorProvider
|
|
1036
1039
|
{
|
|
1037
|
-
return
|
|
1040
|
+
return react::concreteComponentDescriptorProvider<react::RNSScreenStackComponentDescriptor>();
|
|
1038
1041
|
}
|
|
1039
1042
|
#else
|
|
1040
1043
|
#pragma mark - Paper specific
|