1#import "RNSConvert.h"
2
3#ifdef RCT_NEW_ARCH_ENABLED
4@implementation RNSConvert
5
6+ (RNSScreenStackPresentation)RNSScreenStackPresentationFromCppEquivalent:
7    (facebook::react::RNSScreenStackPresentation)stackPresentation
8{
9  switch (stackPresentation) {
10    case facebook::react::RNSScreenStackPresentation::Push:
11      return RNSScreenStackPresentationPush;
12    case facebook::react::RNSScreenStackPresentation::Modal:
13      return RNSScreenStackPresentationModal;
14    case facebook::react::RNSScreenStackPresentation::FullScreenModal:
15      return RNSScreenStackPresentationFullScreenModal;
16    case facebook::react::RNSScreenStackPresentation::FormSheet:
17      return RNSScreenStackPresentationFormSheet;
18    case facebook::react::RNSScreenStackPresentation::ContainedModal:
19      return RNSScreenStackPresentationContainedModal;
20    case facebook::react::RNSScreenStackPresentation::TransparentModal:
21      return RNSScreenStackPresentationTransparentModal;
22    case facebook::react::RNSScreenStackPresentation::ContainedTransparentModal:
23      return RNSScreenStackPresentationContainedTransparentModal;
24  }
25}
26
27+ (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:
28    (facebook::react::RNSScreenStackAnimation)stackAnimation
29{
30  switch (stackAnimation) {
31    // 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:
35      return RNSScreenStackAnimationDefault;
36    case facebook::react::RNSScreenStackAnimation::Flip:
37      return RNSScreenStackAnimationFlip;
38    case facebook::react::RNSScreenStackAnimation::Simple_push:
39      return RNSScreenStackAnimationSimplePush;
40    case facebook::react::RNSScreenStackAnimation::None:
41      return RNSScreenStackAnimationNone;
42    case facebook::react::RNSScreenStackAnimation::Fade:
43      return RNSScreenStackAnimationFade;
44    case facebook::react::RNSScreenStackAnimation::Slide_from_bottom:
45      return RNSScreenStackAnimationSlideFromBottom;
46    case facebook::react::RNSScreenStackAnimation::Fade_from_bottom:
47      return RNSScreenStackAnimationFadeFromBottom;
48  }
49}
50
51+ (RNSScreenStackHeaderSubviewType)RNSScreenStackHeaderSubviewTypeFromCppEquivalent:
52    (facebook::react::RNSScreenStackHeaderSubviewType)subviewType
53{
54  switch (subviewType) {
55    case facebook::react::RNSScreenStackHeaderSubviewType::Left:
56      return RNSScreenStackHeaderSubviewTypeLeft;
57    case facebook::react::RNSScreenStackHeaderSubviewType::Right:
58      return RNSScreenStackHeaderSubviewTypeRight;
59    case facebook::react::RNSScreenStackHeaderSubviewType::Title:
60      return RNSScreenStackHeaderSubviewTypeTitle;
61    case facebook::react::RNSScreenStackHeaderSubviewType::Center:
62      return RNSScreenStackHeaderSubviewTypeCenter;
63    case facebook::react::RNSScreenStackHeaderSubviewType::SearchBar:
64      return RNSScreenStackHeaderSubviewTypeSearchBar;
65    case facebook::react::RNSScreenStackHeaderSubviewType::Back:
66      return RNSScreenStackHeaderSubviewTypeBackButton;
67  }
68}
69
70+ (RNSScreenReplaceAnimation)RNSScreenReplaceAnimationFromCppEquivalent:
71    (facebook::react::RNSScreenReplaceAnimation)replaceAnimation
72{
73  switch (replaceAnimation) {
74    case facebook::react::RNSScreenReplaceAnimation::Pop:
75      return RNSScreenReplaceAnimationPop;
76    case facebook::react::RNSScreenReplaceAnimation::Push:
77      return RNSScreenReplaceAnimationPush;
78  }
79}
80
81+ (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:
82    (facebook::react::RNSScreenSwipeDirection)swipeDirection
83{
84  switch (swipeDirection) {
85    case facebook::react::RNSScreenSwipeDirection::Horizontal:
86      return RNSScreenSwipeDirectionHorizontal;
87    case facebook::react::RNSScreenSwipeDirection::Vertical:
88      return RNSScreenSwipeDirectionVertical;
89  }
90}
91
92+ (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:
93    (facebook::react::RNSScreenSheetAllowedDetents)allowedDetents
94{
95  switch (allowedDetents) {
96    case facebook::react::RNSScreenSheetAllowedDetents::All:
97      return RNSScreenDetentTypeAll;
98    case facebook::react::RNSScreenSheetAllowedDetents::Large:
99      return RNSScreenDetentTypeLarge;
100    case facebook::react::RNSScreenSheetAllowedDetents::Medium:
101      return RNSScreenDetentTypeMedium;
102  }
103}
104
105+ (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:
106    (facebook::react::RNSScreenSheetLargestUndimmedDetent)detent
107{
108  switch (detent) {
109    case facebook::react::RNSScreenSheetLargestUndimmedDetent::All:
110      return RNSScreenDetentTypeAll;
111    case facebook::react::RNSScreenSheetLargestUndimmedDetent::Large:
112      return RNSScreenDetentTypeLarge;
113    case facebook::react::RNSScreenSheetLargestUndimmedDetent::Medium:
114      return RNSScreenDetentTypeMedium;
115  }
116}
117
118+ (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
119    (const facebook::react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance
120{
121  return @{
122    @"start" : @(gestureResponseDistance.start),
123    @"end" : @(gestureResponseDistance.end),
124    @"top" : @(gestureResponseDistance.top),
125    @"bottom" : @(gestureResponseDistance.bottom),
126  };
127}
128
129+ (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
130    (facebook::react::RNSSearchBarAutoCapitalize)autoCapitalize
131{
132  switch (autoCapitalize) {
133    case facebook::react::RNSSearchBarAutoCapitalize::Words:
134      return UITextAutocapitalizationTypeWords;
135    case facebook::react::RNSSearchBarAutoCapitalize::Sentences:
136      return UITextAutocapitalizationTypeSentences;
137    case facebook::react::RNSSearchBarAutoCapitalize::Characters:
138      return UITextAutocapitalizationTypeAllCharacters;
139    case facebook::react::RNSSearchBarAutoCapitalize::None:
140      return UITextAutocapitalizationTypeNone;
141  }
142}
143
144@end
145
146#endif // RCT_NEW_ARCH_ENABLED
147