react-native-screens 3.25.0 → 3.26.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/README.md +1 -1
- package/RNScreens.podspec +53 -32
- package/android/build.gradle +13 -11
- package/android/src/main/java/com/swmansion/rnscreens/FragmentHolder.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +41 -10
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +35 -36
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +7 -7
- package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +21 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +46 -38
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +22 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +40 -39
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +35 -10
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +6 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +11 -18
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +23 -7
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +26 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +4 -7
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +7 -8
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +4 -6
- package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +3 -5
- package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +12 -0
- package/ios/RNSScreen.h +5 -0
- package/ios/RNSScreen.mm +163 -7
- package/ios/RNSScreenStack.mm +18 -0
- package/ios/RNSScreenStackHeaderConfig.mm +17 -0
- package/ios/events/RNSHeaderHeightChangeEvent.h +8 -0
- package/ios/events/RNSHeaderHeightChangeEvent.mm +44 -0
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/index.native.js +11 -11
- package/lib/commonjs/index.native.js.map +1 -1
- package/lib/commonjs/native-stack/index.js +14 -0
- package/lib/commonjs/native-stack/index.js.map +1 -1
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +1 -1
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
- package/lib/commonjs/native-stack/types.js.map +1 -1
- package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js +13 -0
- package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -0
- package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
- package/lib/commonjs/native-stack/utils/getStatusBarHeight.js +22 -0
- package/lib/commonjs/native-stack/utils/getStatusBarHeight.js.map +1 -0
- package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +19 -0
- package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +2 -2
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
- package/lib/commonjs/native-stack/views/HeaderConfig.js +2 -2
- package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +39 -21
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +13 -0
- package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -0
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +37 -6
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +2 -2
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/commonjs/reanimated/index.js +7 -0
- package/lib/commonjs/reanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +19 -0
- package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/index.native.js +12 -12
- package/lib/module/index.native.js.map +1 -1
- package/lib/module/native-stack/index.js +2 -0
- package/lib/module/native-stack/index.js.map +1 -1
- package/lib/module/native-stack/navigators/createNativeStackNavigator.js +1 -1
- package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
- package/lib/module/native-stack/types.js.map +1 -1
- package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js +4 -0
- package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -0
- package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
- package/lib/module/native-stack/utils/getStatusBarHeight.js +16 -0
- package/lib/module/native-stack/utils/getStatusBarHeight.js.map +1 -0
- package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js +10 -0
- package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
- package/lib/module/native-stack/utils/useBackPressSubscription.js +2 -2
- package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
- package/lib/module/native-stack/views/HeaderConfig.js +2 -2
- package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +40 -22
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/reanimated/ReanimatedHeaderHeightContext.js +5 -0
- package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -0
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js +37 -6
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreenProvider.js +2 -2
- package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/module/reanimated/index.js +1 -0
- package/lib/module/reanimated/index.js.map +1 -1
- package/lib/module/reanimated/useReanimatedHeaderHeight.js +10 -0
- package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -0
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +4 -0
- package/lib/typescript/native-stack/index.d.ts +2 -0
- package/lib/typescript/native-stack/types.d.ts +8 -0
- package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +4 -0
- package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts +2 -0
- package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -0
- package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +4 -0
- package/lib/typescript/reanimated/index.d.ts +1 -0
- package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +3 -0
- package/lib/typescript/types.d.ts +11 -0
- package/native-stack/README.md +16 -1
- package/package.json +36 -38
- package/src/fabric/ScreenNativeComponent.ts +5 -0
- package/src/index.native.tsx +17 -19
- package/src/native-stack/index.tsx +3 -0
- package/src/native-stack/types.tsx +10 -1
- package/src/native-stack/utils/AnimatedHeaderHeightContext.tsx +8 -0
- package/src/native-stack/utils/SafeAreaProviderCompat.tsx +1 -1
- package/src/native-stack/utils/getStatusBarHeight.tsx +22 -0
- package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +15 -0
- package/src/native-stack/views/HeaderConfig.tsx +1 -2
- package/src/native-stack/views/NativeStackView.tsx +78 -44
- package/src/reanimated/ReanimatedHeaderHeightContext.tsx +7 -0
- package/src/reanimated/ReanimatedNativeStackScreen.tsx +58 -11
- package/src/reanimated/index.tsx +1 -0
- package/src/reanimated/useReanimatedHeaderHeight.tsx +14 -0
- package/src/types.tsx +14 -0
- package/windows/RNScreens/RNScreens.vcxproj +6 -3
- package/windows/RNScreens/ScreenStack.cpp +16 -0
- package/windows/RNScreens/ScreenStack.h +1 -0
- /package/ios/{RNSScreenViewEvent.h → events/RNSScreenViewEvent.h} +0 -0
- /package/ios/{RNSScreenViewEvent.mm → events/RNSScreenViewEvent.mm} +0 -0
package/ios/RNSScreen.mm
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
|
|
15
15
|
#import <rnscreens/RNSScreenComponentDescriptor.h>
|
|
16
16
|
#import "RNSConvert.h"
|
|
17
|
+
#import "RNSHeaderHeightChangeEvent.h"
|
|
17
18
|
#import "RNSScreenViewEvent.h"
|
|
18
19
|
#else
|
|
19
20
|
#import <React/RCTTouchHandler.h>
|
|
@@ -250,6 +251,13 @@ namespace react = facebook::react;
|
|
|
250
251
|
_statusBarHidden = statusBarHidden;
|
|
251
252
|
[RNSScreenWindowTraits assertViewControllerBasedStatusBarAppearenceSet];
|
|
252
253
|
[RNSScreenWindowTraits updateStatusBarAppearance];
|
|
254
|
+
|
|
255
|
+
// As the status bar could change its visibility, we need to calculate header
|
|
256
|
+
// height for the correct value in `onHeaderHeightChange` event when navigation
|
|
257
|
+
// bar is not visible.
|
|
258
|
+
if (self.controller.navigationController.navigationBarHidden && !self.isModal) {
|
|
259
|
+
[self.controller calculateAndNotifyHeaderHeightChangeIsModal:NO];
|
|
260
|
+
}
|
|
253
261
|
}
|
|
254
262
|
|
|
255
263
|
- (void)setScreenOrientation:(UIInterfaceOrientationMask)screenOrientation
|
|
@@ -395,6 +403,29 @@ namespace react = facebook::react;
|
|
|
395
403
|
#endif
|
|
396
404
|
}
|
|
397
405
|
|
|
406
|
+
- (void)notifyHeaderHeightChange:(double)headerHeight
|
|
407
|
+
{
|
|
408
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
409
|
+
if (_eventEmitter != nullptr) {
|
|
410
|
+
std::dynamic_pointer_cast<const facebook::react::RNSScreenEventEmitter>(_eventEmitter)
|
|
411
|
+
->onHeaderHeightChange(
|
|
412
|
+
facebook::react::RNSScreenEventEmitter::OnHeaderHeightChange{.headerHeight = headerHeight});
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
RNSHeaderHeightChangeEvent *event =
|
|
416
|
+
[[RNSHeaderHeightChangeEvent alloc] initWithEventName:@"onHeaderHeightChange"
|
|
417
|
+
reactTag:[NSNumber numberWithInt:self.tag]
|
|
418
|
+
headerHeight:headerHeight];
|
|
419
|
+
[[RCTBridge currentBridge].eventDispatcher sendEvent:event];
|
|
420
|
+
#else
|
|
421
|
+
if (self.onHeaderHeightChange) {
|
|
422
|
+
self.onHeaderHeightChange(@{
|
|
423
|
+
@"headerHeight" : @(headerHeight),
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
#endif
|
|
427
|
+
}
|
|
428
|
+
|
|
398
429
|
- (void)notifyGestureCancel
|
|
399
430
|
{
|
|
400
431
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
@@ -529,11 +560,6 @@ namespace react = facebook::react;
|
|
|
529
560
|
}
|
|
530
561
|
}
|
|
531
562
|
|
|
532
|
-
- (BOOL)isModal
|
|
533
|
-
{
|
|
534
|
-
return self.stackPresentation != RNSScreenStackPresentationPush;
|
|
535
|
-
}
|
|
536
|
-
|
|
537
563
|
- (RNSScreenStackHeaderConfig *_Nullable)findHeaderConfig
|
|
538
564
|
{
|
|
539
565
|
for (UIView *view in self.reactSubviews) {
|
|
@@ -544,6 +570,34 @@ namespace react = facebook::react;
|
|
|
544
570
|
return nil;
|
|
545
571
|
}
|
|
546
572
|
|
|
573
|
+
- (BOOL)isModal
|
|
574
|
+
{
|
|
575
|
+
return self.stackPresentation != RNSScreenStackPresentationPush;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
- (BOOL)isPresentedAsNativeModal
|
|
579
|
+
{
|
|
580
|
+
return self.controller.parentViewController == nil && self.controller.presentingViewController != nil;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
- (BOOL)isFullscreenModal
|
|
584
|
+
{
|
|
585
|
+
switch (self.controller.modalPresentationStyle) {
|
|
586
|
+
case UIModalPresentationFullScreen:
|
|
587
|
+
case UIModalPresentationCurrentContext:
|
|
588
|
+
case UIModalPresentationOverCurrentContext:
|
|
589
|
+
return YES;
|
|
590
|
+
default:
|
|
591
|
+
return NO;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
- (BOOL)isTransparentModal
|
|
596
|
+
{
|
|
597
|
+
return self.controller.modalPresentationStyle == UIModalPresentationOverFullScreen ||
|
|
598
|
+
self.controller.modalPresentationStyle == UIModalPresentationOverCurrentContext;
|
|
599
|
+
}
|
|
600
|
+
|
|
547
601
|
#if !TARGET_OS_TV
|
|
548
602
|
/**
|
|
549
603
|
* Updates settings for sheet presentation controller.
|
|
@@ -966,9 +1020,13 @@ Class<RCTComponentViewProtocol> RNSScreenCls(void)
|
|
|
966
1020
|
// shown as a native modal, as the final dimensions of the modal on iOS 12+ are shorter than the
|
|
967
1021
|
// screen size
|
|
968
1022
|
BOOL isDisplayedWithinUINavController = [self.parentViewController isKindOfClass:[RNSNavigationController class]];
|
|
969
|
-
BOOL isPresentedAsNativeModal = self.parentViewController == nil && self.presentingViewController != nil;
|
|
970
1023
|
|
|
971
|
-
|
|
1024
|
+
// Calculate header height on modal open
|
|
1025
|
+
if (self.screenView.isPresentedAsNativeModal) {
|
|
1026
|
+
[self calculateAndNotifyHeaderHeightChangeIsModal:YES];
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
if (isDisplayedWithinUINavController || self.screenView.isPresentedAsNativeModal) {
|
|
972
1030
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
973
1031
|
[self.screenView updateBounds];
|
|
974
1032
|
#else
|
|
@@ -980,6 +1038,103 @@ Class<RCTComponentViewProtocol> RNSScreenCls(void)
|
|
|
980
1038
|
}
|
|
981
1039
|
}
|
|
982
1040
|
|
|
1041
|
+
- (BOOL)isModalWithHeader
|
|
1042
|
+
{
|
|
1043
|
+
return self.screenView.isModal && self.childViewControllers.count == 1 &&
|
|
1044
|
+
[self.childViewControllers[0] isKindOfClass:UINavigationController.class];
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
// Checks whether this screen has any child view controllers of type RNSNavigationController.
|
|
1048
|
+
// Useful for checking if this screen has nested stack or is displayed at the top.
|
|
1049
|
+
- (BOOL)hasNestedStack
|
|
1050
|
+
{
|
|
1051
|
+
for (UIViewController *vc in self.childViewControllers) {
|
|
1052
|
+
if ([vc isKindOfClass:[RNSNavigationController class]]) {
|
|
1053
|
+
return YES;
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
return NO;
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
- (CGSize)getStatusBarHeightIsModal:(BOOL)isModal
|
|
1061
|
+
{
|
|
1062
|
+
#if !TARGET_OS_TV
|
|
1063
|
+
CGSize fallbackStatusBarSize = [[UIApplication sharedApplication] statusBarFrame].size;
|
|
1064
|
+
|
|
1065
|
+
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
|
|
1066
|
+
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
|
|
1067
|
+
if (@available(iOS 13.0, *)) {
|
|
1068
|
+
CGSize primaryStatusBarSize = self.view.window.windowScene.statusBarManager.statusBarFrame.size;
|
|
1069
|
+
if (primaryStatusBarSize.height == 0 || primaryStatusBarSize.width == 0)
|
|
1070
|
+
return fallbackStatusBarSize;
|
|
1071
|
+
|
|
1072
|
+
return primaryStatusBarSize;
|
|
1073
|
+
} else {
|
|
1074
|
+
return fallbackStatusBarSize;
|
|
1075
|
+
}
|
|
1076
|
+
#endif /* Check for iOS 13.0 */
|
|
1077
|
+
|
|
1078
|
+
#else
|
|
1079
|
+
// TVOS does not have status bar.
|
|
1080
|
+
return CGSizeMake(0, 0);
|
|
1081
|
+
#endif // !TARGET_OS_TV
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
- (UINavigationController *)getVisibleNavigationControllerIsModal:(BOOL)isModal
|
|
1085
|
+
{
|
|
1086
|
+
UINavigationController *navctr = self.navigationController;
|
|
1087
|
+
|
|
1088
|
+
if (isModal) {
|
|
1089
|
+
// In case where screen is a modal, we want to calculate childViewController's
|
|
1090
|
+
// navigation bar height instead of the navigation controller from RNSScreen.
|
|
1091
|
+
if (self.isModalWithHeader) {
|
|
1092
|
+
navctr = self.childViewControllers[0];
|
|
1093
|
+
} else {
|
|
1094
|
+
// If the modal does not meet requirements (there's no RNSNavigationController which means that probably it
|
|
1095
|
+
// doesn't have header or there are more than one RNSNavigationController which is invalid) we don't want to
|
|
1096
|
+
// return anything.
|
|
1097
|
+
return nil;
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
return navctr;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
- (CGFloat)calculateHeaderHeightIsModal:(BOOL)isModal
|
|
1105
|
+
{
|
|
1106
|
+
UINavigationController *navctr = [self getVisibleNavigationControllerIsModal:isModal];
|
|
1107
|
+
|
|
1108
|
+
// If navigation controller doesn't exists (or it is hidden) we want to handle two possible cases.
|
|
1109
|
+
// If there's no navigation controller for the modal, we simply don't want to return header height, as modal possibly
|
|
1110
|
+
// does not have header and we don't want to count status bar. If there's no navigation controller for the view we
|
|
1111
|
+
// just want to return status bar height (if it's hidden, it will simply return 0).
|
|
1112
|
+
if (navctr == nil || navctr.isNavigationBarHidden) {
|
|
1113
|
+
if (isModal) {
|
|
1114
|
+
return 0;
|
|
1115
|
+
} else {
|
|
1116
|
+
CGSize statusBarSize = [self getStatusBarHeightIsModal:isModal];
|
|
1117
|
+
return MIN(statusBarSize.width, statusBarSize.height);
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
CGFloat navbarHeight = navctr.navigationBar.frame.size.height;
|
|
1122
|
+
#if !TARGET_OS_TV
|
|
1123
|
+
CGFloat navbarInset = navctr.navigationBar.frame.origin.y;
|
|
1124
|
+
#else
|
|
1125
|
+
// On TVOS there's no inset of navigation bar.
|
|
1126
|
+
CGFloat navbarInset = 0;
|
|
1127
|
+
#endif // !TARGET_OS_TV
|
|
1128
|
+
|
|
1129
|
+
return navbarHeight + navbarInset;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
- (void)calculateAndNotifyHeaderHeightChangeIsModal:(BOOL)isModal
|
|
1133
|
+
{
|
|
1134
|
+
CGFloat totalHeight = [self calculateHeaderHeightIsModal:isModal];
|
|
1135
|
+
[self.screenView notifyHeaderHeightChange:totalHeight];
|
|
1136
|
+
}
|
|
1137
|
+
|
|
983
1138
|
- (void)notifyFinishTransitioning
|
|
984
1139
|
{
|
|
985
1140
|
[_previousFirstResponder becomeFirstResponder];
|
|
@@ -1300,6 +1455,7 @@ RCT_EXPORT_VIEW_PROPERTY(transitionDuration, NSNumber)
|
|
|
1300
1455
|
|
|
1301
1456
|
RCT_EXPORT_VIEW_PROPERTY(onAppear, RCTDirectEventBlock);
|
|
1302
1457
|
RCT_EXPORT_VIEW_PROPERTY(onDisappear, RCTDirectEventBlock);
|
|
1458
|
+
RCT_EXPORT_VIEW_PROPERTY(onHeaderHeightChange, RCTDirectEventBlock);
|
|
1303
1459
|
RCT_EXPORT_VIEW_PROPERTY(onDismissed, RCTDirectEventBlock);
|
|
1304
1460
|
RCT_EXPORT_VIEW_PROPERTY(onNativeDismissCancelled, RCTDirectEventBlock);
|
|
1305
1461
|
RCT_EXPORT_VIEW_PROPERTY(onTransitionProgress, RCTDirectEventBlock);
|
package/ios/RNSScreenStack.mm
CHANGED
|
@@ -61,6 +61,24 @@ namespace react = facebook::react;
|
|
|
61
61
|
return [self topViewController];
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
- (void)viewDidLayoutSubviews
|
|
65
|
+
{
|
|
66
|
+
[super viewDidLayoutSubviews];
|
|
67
|
+
if ([self.topViewController isKindOfClass:[RNSScreen class]]) {
|
|
68
|
+
RNSScreen *screenController = (RNSScreen *)self.topViewController;
|
|
69
|
+
BOOL isNotDismissingModal = screenController.presentedViewController == nil ||
|
|
70
|
+
(screenController.presentedViewController != nil &&
|
|
71
|
+
![screenController.presentedViewController isBeingDismissed]);
|
|
72
|
+
|
|
73
|
+
// Calculate header height during simple transition from one screen to another.
|
|
74
|
+
// If RNSScreen includes a navigation controller of type RNSNavigationController, it should not calculate
|
|
75
|
+
// header height, as it could have nested stack.
|
|
76
|
+
if (![screenController hasNestedStack] && isNotDismissingModal) {
|
|
77
|
+
[screenController calculateAndNotifyHeaderHeightChangeIsModal:NO];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
64
82
|
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
|
|
65
83
|
{
|
|
66
84
|
return [self topViewController].supportedInterfaceOrientations;
|
|
@@ -147,6 +147,9 @@ namespace react = facebook::react;
|
|
|
147
147
|
// if nav is nil, it means we can be in a fullScreen modal, so there is no nextVC, but we still want to update
|
|
148
148
|
if (vc != nil && (nextVC == vc || isInFullScreenModal || isPresentingVC)) {
|
|
149
149
|
[RNSScreenStackHeaderConfig updateViewController:self.screenView.controller withConfig:self animated:YES];
|
|
150
|
+
// As the header might have change in `updateViewController` we need to ensure that header height
|
|
151
|
+
// returned by the `onHeaderHeightChange` event is correct.
|
|
152
|
+
[self.screenView.controller calculateAndNotifyHeaderHeightChangeIsModal:NO];
|
|
150
153
|
}
|
|
151
154
|
}
|
|
152
155
|
|
|
@@ -353,6 +356,11 @@ namespace react = facebook::react;
|
|
|
353
356
|
withConfig:(RNSScreenStackHeaderConfig *)config
|
|
354
357
|
{
|
|
355
358
|
[self updateViewController:vc withConfig:config animated:animated];
|
|
359
|
+
// As the header might have change in `updateViewController` we need to ensure that header height
|
|
360
|
+
// returned by the `onHeaderHeightChange` event is correct.
|
|
361
|
+
if ([vc isKindOfClass:[RNSScreen class]]) {
|
|
362
|
+
[(RNSScreen *)vc calculateAndNotifyHeaderHeightChangeIsModal:NO];
|
|
363
|
+
}
|
|
356
364
|
}
|
|
357
365
|
|
|
358
366
|
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
|
|
@@ -567,6 +575,8 @@ namespace react = facebook::react;
|
|
|
567
575
|
#endif
|
|
568
576
|
}
|
|
569
577
|
#if !TARGET_OS_TV
|
|
578
|
+
// Workaround for the wrong rotation of back button arrow in RTL mode.
|
|
579
|
+
navitem.hidesBackButton = true;
|
|
570
580
|
navitem.hidesBackButton = config.hideBackButton;
|
|
571
581
|
#endif
|
|
572
582
|
navitem.leftBarButtonItem = nil;
|
|
@@ -624,6 +634,13 @@ namespace react = facebook::react;
|
|
|
624
634
|
}
|
|
625
635
|
}
|
|
626
636
|
|
|
637
|
+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0), dispatch_get_main_queue(), ^{
|
|
638
|
+
// Position the contents in the navigation bar, regarding to the direction.
|
|
639
|
+
for (UIView *view in navctr.navigationBar.subviews) {
|
|
640
|
+
view.semanticContentAttribute = config.direction;
|
|
641
|
+
}
|
|
642
|
+
});
|
|
643
|
+
|
|
627
644
|
// This assignment should be done after `navitem.titleView = ...` assignment (iOS 16.0 bug).
|
|
628
645
|
// See: https://github.com/software-mansion/react-native-screens/issues/1570 (comments)
|
|
629
646
|
navitem.title = config.title;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#import <React/RCTBridge+Private.h>
|
|
2
|
+
#import <React/RCTEventDispatcherProtocol.h>
|
|
3
|
+
|
|
4
|
+
@interface RNSHeaderHeightChangeEvent : NSObject <RCTEvent>
|
|
5
|
+
|
|
6
|
+
- (instancetype)initWithEventName:(NSString *)eventName reactTag:(NSNumber *)reactTag headerHeight:(double)headerHeight;
|
|
7
|
+
|
|
8
|
+
@end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#import "RNSHeaderHeightChangeEvent.h"
|
|
2
|
+
#import <React/RCTAssert.h>
|
|
3
|
+
|
|
4
|
+
@implementation RNSHeaderHeightChangeEvent {
|
|
5
|
+
double _headerHeight;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@synthesize viewTag = _viewTag;
|
|
9
|
+
@synthesize eventName = _eventName;
|
|
10
|
+
|
|
11
|
+
- (instancetype)initWithEventName:(NSString *)eventName reactTag:(NSNumber *)reactTag headerHeight:(double)headerHeight
|
|
12
|
+
{
|
|
13
|
+
RCTAssertParam(reactTag);
|
|
14
|
+
|
|
15
|
+
if ((self = [super init])) {
|
|
16
|
+
_eventName = [eventName copy];
|
|
17
|
+
_viewTag = reactTag;
|
|
18
|
+
_headerHeight = headerHeight;
|
|
19
|
+
}
|
|
20
|
+
return self;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
RCT_NOT_IMPLEMENTED(-(instancetype)init)
|
|
24
|
+
|
|
25
|
+
- (NSDictionary *)body
|
|
26
|
+
{
|
|
27
|
+
NSDictionary *body = @{
|
|
28
|
+
@"headerHeight" : @(_headerHeight),
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
return body;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
+ (NSString *)moduleDotMethod
|
|
35
|
+
{
|
|
36
|
+
return @"RCTEventEmitter.receiveEvent";
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
- (NSArray *)arguments
|
|
40
|
+
{
|
|
41
|
+
return @[ self.viewTag, RCTNormalizeInputEventName(self.eventName), [self body] ];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@end
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","obj","__esModule","default","_default","codegenNativeComponent","interfaceOnly","exports"],"sources":["ScreenNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps, ColorValue } from 'react-native';\nimport type {\n BubblingEventHandler,\n WithDefault,\n Int32,\n Float,\n Double,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype ScreenEvent = Readonly<{}>;\n\ntype ScreenDismissedEvent = Readonly<{\n dismissCount: Int32;\n}>;\n\ntype TransitionProgressEvent = Readonly<{\n progress: Double;\n closing: Int32;\n goingForward: Int32;\n}>;\n\ntype GestureResponseDistanceType = Readonly<{\n start: Float;\n end: Float;\n top: Float;\n bottom: Float;\n}>;\n\ntype StackPresentation =\n | 'push'\n | 'modal'\n | 'transparentModal'\n | 'fullScreenModal'\n | 'formSheet'\n | 'containedModal'\n | 'containedTransparentModal';\n\ntype StackAnimation =\n | 'default'\n | 'flip'\n | 'simple_push'\n | 'none'\n | 'fade'\n | 'slide_from_right'\n | 'slide_from_left'\n | 'slide_from_bottom'\n | 'fade_from_bottom';\n\ntype SwipeDirection = 'vertical' | 'horizontal';\n\ntype ReplaceAnimation = 'pop' | 'push';\n\ntype SheetDetentTypes = 'large' | 'medium' | 'all';\n\nexport interface NativeProps extends ViewProps {\n onAppear?: BubblingEventHandler<ScreenEvent>;\n onDisappear?: BubblingEventHandler<ScreenEvent>;\n onDismissed?: BubblingEventHandler<ScreenDismissedEvent>;\n onNativeDismissCancelled?: BubblingEventHandler<ScreenDismissedEvent>;\n onWillAppear?: BubblingEventHandler<ScreenEvent>;\n onWillDisappear?: BubblingEventHandler<ScreenEvent>;\n onTransitionProgress?: BubblingEventHandler<TransitionProgressEvent>;\n onGestureCancel?: BubblingEventHandler<ScreenEvent>;\n sheetAllowedDetents?: WithDefault<SheetDetentTypes, 'large'>;\n sheetLargestUndimmedDetent?: WithDefault<SheetDetentTypes, 'all'>;\n sheetGrabberVisible?: WithDefault<boolean, false>;\n sheetCornerRadius?: WithDefault<Float, -1.0>;\n sheetExpandsWhenScrolledToEdge?: WithDefault<boolean, false>;\n customAnimationOnSwipe?: boolean;\n fullScreenSwipeEnabled?: boolean;\n homeIndicatorHidden?: boolean;\n preventNativeDismiss?: boolean;\n gestureEnabled?: WithDefault<boolean, true>;\n statusBarColor?: ColorValue;\n statusBarHidden?: boolean;\n screenOrientation?: string;\n statusBarAnimation?: string;\n statusBarStyle?: string;\n statusBarTranslucent?: boolean;\n gestureResponseDistance?: GestureResponseDistanceType;\n stackPresentation?: WithDefault<StackPresentation, 'push'>;\n stackAnimation?: WithDefault<StackAnimation, 'default'>;\n transitionDuration?: WithDefault<Int32, 350>;\n replaceAnimation?: WithDefault<ReplaceAnimation, 'pop'>;\n swipeDirection?: WithDefault<SwipeDirection, 'horizontal'>;\n hideKeyboardOnSwipe?: boolean;\n activityState?: WithDefault<Float, -1.0>;\n navigationBarColor?: ColorValue;\n navigationBarHidden?: boolean;\n nativeBackButtonDismissalEnabled?: boolean;\n onHeaderBackButtonClicked?: BubblingEventHandler<ScreenEvent>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSScreen', {\n interfaceOnly: true,\n});\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAU7F;AAAA,IAAAG,QAAA,
|
|
1
|
+
{"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","obj","__esModule","default","_default","codegenNativeComponent","interfaceOnly","exports"],"sources":["ScreenNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps, ColorValue } from 'react-native';\nimport type {\n BubblingEventHandler,\n WithDefault,\n Int32,\n Float,\n Double,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype ScreenEvent = Readonly<{}>;\n\ntype ScreenDismissedEvent = Readonly<{\n dismissCount: Int32;\n}>;\n\ntype TransitionProgressEvent = Readonly<{\n progress: Double;\n closing: Int32;\n goingForward: Int32;\n}>;\n\ntype HeaderHeightChangeEvent = Readonly<{\n headerHeight: Double;\n}>;\n\ntype GestureResponseDistanceType = Readonly<{\n start: Float;\n end: Float;\n top: Float;\n bottom: Float;\n}>;\n\ntype StackPresentation =\n | 'push'\n | 'modal'\n | 'transparentModal'\n | 'fullScreenModal'\n | 'formSheet'\n | 'containedModal'\n | 'containedTransparentModal';\n\ntype StackAnimation =\n | 'default'\n | 'flip'\n | 'simple_push'\n | 'none'\n | 'fade'\n | 'slide_from_right'\n | 'slide_from_left'\n | 'slide_from_bottom'\n | 'fade_from_bottom';\n\ntype SwipeDirection = 'vertical' | 'horizontal';\n\ntype ReplaceAnimation = 'pop' | 'push';\n\ntype SheetDetentTypes = 'large' | 'medium' | 'all';\n\nexport interface NativeProps extends ViewProps {\n onAppear?: BubblingEventHandler<ScreenEvent>;\n onDisappear?: BubblingEventHandler<ScreenEvent>;\n onDismissed?: BubblingEventHandler<ScreenDismissedEvent>;\n onNativeDismissCancelled?: BubblingEventHandler<ScreenDismissedEvent>;\n onWillAppear?: BubblingEventHandler<ScreenEvent>;\n onWillDisappear?: BubblingEventHandler<ScreenEvent>;\n onHeaderHeightChange?: BubblingEventHandler<HeaderHeightChangeEvent>;\n onTransitionProgress?: BubblingEventHandler<TransitionProgressEvent>;\n onGestureCancel?: BubblingEventHandler<ScreenEvent>;\n sheetAllowedDetents?: WithDefault<SheetDetentTypes, 'large'>;\n sheetLargestUndimmedDetent?: WithDefault<SheetDetentTypes, 'all'>;\n sheetGrabberVisible?: WithDefault<boolean, false>;\n sheetCornerRadius?: WithDefault<Float, -1.0>;\n sheetExpandsWhenScrolledToEdge?: WithDefault<boolean, false>;\n customAnimationOnSwipe?: boolean;\n fullScreenSwipeEnabled?: boolean;\n homeIndicatorHidden?: boolean;\n preventNativeDismiss?: boolean;\n gestureEnabled?: WithDefault<boolean, true>;\n statusBarColor?: ColorValue;\n statusBarHidden?: boolean;\n screenOrientation?: string;\n statusBarAnimation?: string;\n statusBarStyle?: string;\n statusBarTranslucent?: boolean;\n gestureResponseDistance?: GestureResponseDistanceType;\n stackPresentation?: WithDefault<StackPresentation, 'push'>;\n stackAnimation?: WithDefault<StackAnimation, 'default'>;\n transitionDuration?: WithDefault<Int32, 350>;\n replaceAnimation?: WithDefault<ReplaceAnimation, 'pop'>;\n swipeDirection?: WithDefault<SwipeDirection, 'horizontal'>;\n hideKeyboardOnSwipe?: boolean;\n activityState?: WithDefault<Float, -1.0>;\n navigationBarColor?: ColorValue;\n navigationBarHidden?: boolean;\n nativeBackButtonDismissalEnabled?: boolean;\n onHeaderBackButtonClicked?: BubblingEventHandler<ScreenEvent>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSScreen', {\n interfaceOnly: true,\n});\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAU7F;AAAA,IAAAG,QAAA,GA0Fe,IAAAC,+BAAsB,EAAc,WAAW,EAAE;EAC9DC,aAAa,EAAE;AACjB,CAAC,CAAC;AAAAC,OAAA,CAAAJ,OAAA,GAAAC,QAAA"}
|
|
@@ -61,19 +61,19 @@ const ScreensNativeModules = {
|
|
|
61
61
|
return NativeScreenContainerValue;
|
|
62
62
|
},
|
|
63
63
|
get NativeScreenNavigationContainer() {
|
|
64
|
-
NativeScreenNavigationContainerValue = NativeScreenNavigationContainerValue || (_reactNative.Platform.OS === 'ios' ? (
|
|
64
|
+
NativeScreenNavigationContainerValue = NativeScreenNavigationContainerValue || (_reactNative.Platform.OS === 'ios' ? require('./fabric/ScreenNavigationContainerNativeComponent').default : this.NativeScreenContainer);
|
|
65
65
|
return NativeScreenNavigationContainerValue;
|
|
66
66
|
},
|
|
67
67
|
get NativeScreenStack() {
|
|
68
|
-
NativeScreenStack = NativeScreenStack || (
|
|
68
|
+
NativeScreenStack = NativeScreenStack || require('./fabric/ScreenStackNativeComponent').default;
|
|
69
69
|
return NativeScreenStack;
|
|
70
70
|
},
|
|
71
71
|
get NativeScreenStackHeaderConfig() {
|
|
72
|
-
NativeScreenStackHeaderConfig = NativeScreenStackHeaderConfig || (
|
|
72
|
+
NativeScreenStackHeaderConfig = NativeScreenStackHeaderConfig || require('./fabric/ScreenStackHeaderConfigNativeComponent').default;
|
|
73
73
|
return NativeScreenStackHeaderConfig;
|
|
74
74
|
},
|
|
75
75
|
get NativeScreenStackHeaderSubview() {
|
|
76
|
-
NativeScreenStackHeaderSubview = NativeScreenStackHeaderSubview || (
|
|
76
|
+
NativeScreenStackHeaderSubview = NativeScreenStackHeaderSubview || require('./fabric/ScreenStackHeaderSubviewNativeComponent').default;
|
|
77
77
|
return NativeScreenStackHeaderSubview;
|
|
78
78
|
},
|
|
79
79
|
get NativeSearchBar() {
|
|
@@ -85,7 +85,7 @@ const ScreensNativeModules = {
|
|
|
85
85
|
return NativeSearchBarCommands;
|
|
86
86
|
},
|
|
87
87
|
get NativeFullWindowOverlay() {
|
|
88
|
-
NativeFullWindowOverlay = NativeFullWindowOverlay || (
|
|
88
|
+
NativeFullWindowOverlay = NativeFullWindowOverlay || require('./fabric/FullWindowOverlayNativeComponent').default;
|
|
89
89
|
return NativeFullWindowOverlay;
|
|
90
90
|
}
|
|
91
91
|
};
|
|
@@ -123,8 +123,8 @@ function ScreenStack(props) {
|
|
|
123
123
|
props,
|
|
124
124
|
key
|
|
125
125
|
} = child;
|
|
126
|
-
const descriptor = (_props$descriptor = props === null || props === void 0 ? void 0 : props.descriptor) !== null && _props$descriptor !== void 0 ? _props$descriptor : props === null || props === void 0
|
|
127
|
-
const freezeEnabled = (_descriptor$options$f = descriptor === null || descriptor === void 0
|
|
126
|
+
const descriptor = (_props$descriptor = props === null || props === void 0 ? void 0 : props.descriptor) !== null && _props$descriptor !== void 0 ? _props$descriptor : props === null || props === void 0 || (_props$descriptors = props.descriptors) === null || _props$descriptors === void 0 ? void 0 : _props$descriptors[key];
|
|
127
|
+
const freezeEnabled = (_descriptor$options$f = descriptor === null || descriptor === void 0 || (_descriptor$options = descriptor.options) === null || _descriptor$options === void 0 ? void 0 : _descriptor$options.freezeOnBlur) !== null && _descriptor$options$f !== void 0 ? _descriptor$options$f : ENABLE_FREEZE;
|
|
128
128
|
return /*#__PURE__*/_react.default.createElement(DelayedFreeze, {
|
|
129
129
|
freeze: freezeEnabled && size - index > 1
|
|
130
130
|
}, child);
|
|
@@ -144,12 +144,12 @@ class InnerScreen extends _react.default.Component {
|
|
|
144
144
|
_defineProperty(this, "setRef", ref => {
|
|
145
145
|
var _this$props$onCompone, _this$props;
|
|
146
146
|
this.ref = ref;
|
|
147
|
-
(_this$props$onCompone = (_this$props = this.props).onComponentRef) === null || _this$props$onCompone === void 0
|
|
147
|
+
(_this$props$onCompone = (_this$props = this.props).onComponentRef) === null || _this$props$onCompone === void 0 || _this$props$onCompone.call(_this$props, ref);
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
150
|
setNativeProps(props) {
|
|
151
151
|
var _this$ref;
|
|
152
|
-
(_this$ref = this.ref) === null || _this$ref === void 0
|
|
152
|
+
(_this$ref = this.ref) === null || _this$ref === void 0 || _this$ref.setNativeProps(props);
|
|
153
153
|
}
|
|
154
154
|
render() {
|
|
155
155
|
const {
|
|
@@ -188,8 +188,8 @@ class InnerScreen extends _react.default.Component {
|
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
const handleRef = ref => {
|
|
191
|
-
var _ref$viewConfig
|
|
192
|
-
if (ref !== null && ref !== void 0 && (_ref$viewConfig = ref.viewConfig) !== null && _ref$viewConfig !== void 0 && (_ref$viewConfig
|
|
191
|
+
var _ref$viewConfig;
|
|
192
|
+
if (ref !== null && ref !== void 0 && (_ref$viewConfig = ref.viewConfig) !== null && _ref$viewConfig !== void 0 && (_ref$viewConfig = _ref$viewConfig.validAttributes) !== null && _ref$viewConfig !== void 0 && _ref$viewConfig.style) {
|
|
193
193
|
ref.viewConfig.validAttributes.style = {
|
|
194
194
|
...ref.viewConfig.validAttributes.style,
|
|
195
195
|
display: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactFreeze","_package","_TransitionProgressContext","_useTransitionProgress","_utils","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_defineProperty","value","_toPropertyKey","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","isPlatformSupported","Platform","OS","ENABLE_SCREENS","enableScreens","shouldEnableScreens","UIManager","getViewManagerConfig","console","error","ENABLE_FREEZE","enableFreeze","shouldEnableReactFreeze","minor","parseInt","version","split","warn","shouldUseActivityState","screensEnabled","NativeScreenValue","NativeScreenContainerValue","NativeScreenNavigationContainerValue","NativeScreenStack","NativeScreenStackHeaderConfig","NativeScreenStackHeaderSubview","AnimatedNativeScreen","NativeSearchBar","NativeSearchBarCommands","NativeFullWindowOverlay","ScreensNativeModules","NativeScreen","NativeScreenContainer","NativeScreenNavigationContainer","requireNativeComponent","Commands","DelayedFreeze","_ref","freeze","children","freezeState","setFreezeState","React","useState","setImmediate","createElement","Freeze","ScreenStack","props","rest","size","Children","count","childrenWithFreeze","map","child","index","_props$descriptor","_props$descriptors","_descriptor$options$f","_descriptor$options","descriptor","descriptors","freezeEnabled","options","freezeOnBlur","InnerScreen","Component","constructor","Animated","Value","ref","_this$props$onCompone","_this$props","onComponentRef","setNativeProps","_this$ref","render","enabled","sheetAllowedDetents","sheetLargestUndimmedDetent","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","_gestureResponseDista","_gestureResponseDista2","_gestureResponseDista3","_gestureResponseDista4","createAnimatedComponent","active","activityState","isNativeStack","gestureResponseDistance","onGestureCancel","handleRef","_ref$viewConfig","_ref$viewConfig$valid","viewConfig","validAttributes","style","display","setRef","start","end","top","bottom","onTransitionProgress","event","nativeEvent","progress","closing","goingForward","useNativeDriver","Provider","View","ScreenContainer","hasTwoStates","FullWindowOverlay","position","width","height","styles","StyleSheet","create","headerSubview","right","flexDirection","alignItems","justifyContent","ScreenStackHeaderBackButtonImage","type","Image","resizeMode","fadeDuration","SearchBar","nativeSearchBarRef","createRef","_callMethodWithRef","method","current","blur","focus","toggleCancelButton","flag","clearText","setText","text","isSearchBarAvailableForCurrentPlatform","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderSearchBarView","ScreenContext","createContext","Screen","ScreenWrapper","context","module","exports","ScreenStackHeaderConfig","ScreenStackHeaderSubview","SearchBarCommands","useTransitionProgress","isNewBackTitleImplementation","executeNativeBackPress"],"sources":["index.native.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport React, { PropsWithChildren, ReactNode } from 'react';\nimport {\n Animated,\n Image,\n ImageProps,\n Platform,\n requireNativeComponent,\n StyleProp,\n StyleSheet,\n UIManager,\n View,\n ViewProps,\n ViewStyle,\n} from 'react-native';\nimport { Freeze } from 'react-freeze';\nimport { version } from 'react-native/package.json';\n\nimport TransitionProgressContext from './TransitionProgressContext';\nimport useTransitionProgress from './useTransitionProgress';\nimport {\n StackPresentationTypes,\n StackAnimationTypes,\n BlurEffectTypes,\n ScreenReplaceTypes,\n ScreenOrientationTypes,\n HeaderSubviewTypes,\n ScreenProps,\n ScreenContainerProps,\n ScreenStackProps,\n ScreenStackHeaderConfigProps,\n SearchBarProps,\n SearchBarCommands,\n} from './types';\nimport {\n isSearchBarAvailableForCurrentPlatform,\n isNewBackTitleImplementation,\n executeNativeBackPress,\n} from './utils';\n\n// web implementation is taken from `index.tsx`\nconst isPlatformSupported =\n Platform.OS === 'ios' ||\n Platform.OS === 'android' ||\n Platform.OS === 'windows';\n\nlet ENABLE_SCREENS = isPlatformSupported;\n\nfunction enableScreens(shouldEnableScreens = true): void {\n ENABLE_SCREENS = isPlatformSupported && shouldEnableScreens;\n if (ENABLE_SCREENS && !UIManager.getViewManagerConfig('RNSScreen')) {\n console.error(\n `Screen native module hasn't been linked. Please check the react-native-screens README for more details`\n );\n }\n}\n\nlet ENABLE_FREEZE = false;\n\nfunction enableFreeze(shouldEnableReactFreeze = true): void {\n const minor = parseInt(version.split('.')[1]); // eg. takes 66 from '0.66.0'\n\n // react-freeze requires react-native >=0.64, react-native from main is 0.0.0\n if (!(minor === 0 || minor >= 64) && shouldEnableReactFreeze) {\n console.warn(\n 'react-freeze library requires at least react-native 0.64. Please upgrade your react-native version in order to use this feature.'\n );\n }\n\n ENABLE_FREEZE = shouldEnableReactFreeze;\n}\n\n// const that tells if the library should use new implementation, will be undefined for older versions\nconst shouldUseActivityState = true;\n\nfunction screensEnabled(): boolean {\n return ENABLE_SCREENS;\n}\n\ntype SearchBarCommandsType = {\n blur: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>\n ) => void;\n focus: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>\n ) => void;\n clearText: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>\n ) => void;\n toggleCancelButton: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>,\n flag: boolean\n ) => void;\n setText: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>,\n text: string\n ) => void;\n};\n\n// We initialize these lazily so that importing the module doesn't throw error when not linked\n// This is necessary coz libraries such as React Navigation import the library where it may not be enabled\nlet NativeScreenValue: React.ComponentType<ScreenProps>;\nlet NativeScreenContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenNavigationContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenStack: React.ComponentType<ScreenStackProps>;\nlet NativeScreenStackHeaderConfig: React.ComponentType<ScreenStackHeaderConfigProps>;\nlet NativeScreenStackHeaderSubview: React.ComponentType<\n React.PropsWithChildren<ViewProps & { type?: HeaderSubviewTypes }>\n>;\nlet AnimatedNativeScreen: React.ComponentType<ScreenProps>;\n\nlet NativeSearchBar: React.ComponentType<SearchBarProps> &\n typeof NativeSearchBarCommands;\nlet NativeSearchBarCommands: SearchBarCommandsType;\n\nlet NativeFullWindowOverlay: React.ComponentType<\n PropsWithChildren<{\n style: StyleProp<ViewStyle>;\n }>\n>;\n\nconst ScreensNativeModules = {\n get NativeScreen() {\n NativeScreenValue =\n NativeScreenValue || require('./fabric/ScreenNativeComponent').default;\n return NativeScreenValue;\n },\n\n get NativeScreenContainer() {\n NativeScreenContainerValue =\n NativeScreenContainerValue ||\n require('./fabric/ScreenContainerNativeComponent').default;\n return NativeScreenContainerValue;\n },\n\n get NativeScreenNavigationContainer() {\n NativeScreenNavigationContainerValue =\n NativeScreenNavigationContainerValue ||\n (Platform.OS === 'ios'\n ? requireNativeComponent('RNSScreenNavigationContainer')\n : this.NativeScreenContainer);\n return NativeScreenNavigationContainerValue;\n },\n\n get NativeScreenStack() {\n NativeScreenStack =\n NativeScreenStack || requireNativeComponent('RNSScreenStack');\n return NativeScreenStack;\n },\n\n get NativeScreenStackHeaderConfig() {\n NativeScreenStackHeaderConfig =\n NativeScreenStackHeaderConfig ||\n requireNativeComponent('RNSScreenStackHeaderConfig');\n return NativeScreenStackHeaderConfig;\n },\n\n get NativeScreenStackHeaderSubview() {\n NativeScreenStackHeaderSubview =\n NativeScreenStackHeaderSubview ||\n requireNativeComponent('RNSScreenStackHeaderSubview');\n return NativeScreenStackHeaderSubview;\n },\n\n get NativeSearchBar() {\n NativeSearchBar =\n NativeSearchBar || require('./fabric/SearchBarNativeComponent').default;\n return NativeSearchBar;\n },\n get NativeSearchBarCommands() {\n NativeSearchBarCommands =\n NativeSearchBarCommands ||\n require('./fabric/SearchBarNativeComponent').Commands;\n return NativeSearchBarCommands;\n },\n\n get NativeFullWindowOverlay() {\n NativeFullWindowOverlay =\n NativeFullWindowOverlay || requireNativeComponent('RNSFullWindowOverlay');\n return NativeFullWindowOverlay;\n },\n};\n\ninterface FreezeWrapperProps {\n freeze: boolean;\n children: React.ReactNode;\n}\n\n// This component allows one more render before freezing the screen.\n// Allows activityState to reach the native side and useIsFocused to work correctly.\nfunction DelayedFreeze({ freeze, children }: FreezeWrapperProps) {\n // flag used for determining whether freeze should be enabled\n const [freezeState, setFreezeState] = React.useState(false);\n\n if (freeze !== freezeState) {\n // setImmediate is executed at the end of the JS execution block.\n // Used here for changing the state right after the render.\n setImmediate(() => {\n setFreezeState(freeze);\n });\n }\n\n return <Freeze freeze={freeze ? freezeState : false}>{children}</Freeze>;\n}\n\nfunction ScreenStack(props: ScreenStackProps) {\n const { children, ...rest } = props;\n const size = React.Children.count(children);\n // freezes all screens except the top one\n const childrenWithFreeze = React.Children.map(children, (child, index) => {\n // @ts-expect-error it's either SceneView in v6 or RouteView in v5\n const { props, key } = child;\n const descriptor = props?.descriptor ?? props?.descriptors?.[key];\n const freezeEnabled = descriptor?.options?.freezeOnBlur ?? ENABLE_FREEZE;\n\n return (\n <DelayedFreeze freeze={freezeEnabled && size - index > 1}>\n {child}\n </DelayedFreeze>\n );\n });\n\n return (\n <ScreensNativeModules.NativeScreenStack {...rest}>\n {childrenWithFreeze}\n </ScreensNativeModules.NativeScreenStack>\n );\n}\n\n// Incomplete type, all accessible properties available at:\n// react-native/Libraries/Components/View/ReactNativeViewViewConfig.js\ninterface ViewConfig extends View {\n viewConfig: {\n validAttributes: {\n style: {\n display: boolean;\n };\n };\n };\n}\n\nclass InnerScreen extends React.Component<ScreenProps> {\n private ref: React.ElementRef<typeof View> | null = null;\n private closing = new Animated.Value(0);\n private progress = new Animated.Value(0);\n private goingForward = new Animated.Value(0);\n\n setNativeProps(props: ScreenProps): void {\n this.ref?.setNativeProps(props);\n }\n\n setRef = (ref: React.ElementRef<typeof View> | null): void => {\n this.ref = ref;\n this.props.onComponentRef?.(ref);\n };\n\n render() {\n const {\n enabled = ENABLE_SCREENS,\n freezeOnBlur = ENABLE_FREEZE,\n ...rest\n } = this.props;\n\n // To maintain default behaviour of formSheet stack presentation style & and to have resonable\n // defaults for new medium-detent iOS API we need to set defaults here\n const {\n sheetAllowedDetents = 'large',\n sheetLargestUndimmedDetent = 'all',\n sheetGrabberVisible = false,\n sheetCornerRadius = -1.0,\n sheetExpandsWhenScrolledToEdge = true,\n } = rest;\n\n if (enabled && isPlatformSupported) {\n AnimatedNativeScreen =\n AnimatedNativeScreen ||\n Animated.createAnimatedComponent(ScreensNativeModules.NativeScreen);\n\n let {\n // Filter out active prop in this case because it is unused and\n // can cause problems depending on react-native version:\n // https://github.com/react-navigation/react-navigation/issues/4886\n active,\n activityState,\n children,\n isNativeStack,\n gestureResponseDistance,\n onGestureCancel,\n ...props\n } = rest;\n\n if (active !== undefined && activityState === undefined) {\n console.warn(\n 'It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens'\n );\n activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition\n }\n\n const handleRef = (ref: ViewConfig) => {\n if (ref?.viewConfig?.validAttributes?.style) {\n ref.viewConfig.validAttributes.style = {\n ...ref.viewConfig.validAttributes.style,\n display: false,\n };\n this.setRef(ref);\n }\n };\n\n return (\n <DelayedFreeze freeze={freezeOnBlur && activityState === 0}>\n <AnimatedNativeScreen\n {...props}\n activityState={activityState}\n sheetAllowedDetents={sheetAllowedDetents}\n sheetLargestUndimmedDetent={sheetLargestUndimmedDetent}\n sheetGrabberVisible={sheetGrabberVisible}\n sheetCornerRadius={sheetCornerRadius}\n sheetExpandsWhenScrolledToEdge={sheetExpandsWhenScrolledToEdge}\n gestureResponseDistance={{\n start: gestureResponseDistance?.start ?? -1,\n end: gestureResponseDistance?.end ?? -1,\n top: gestureResponseDistance?.top ?? -1,\n bottom: gestureResponseDistance?.bottom ?? -1,\n }}\n // This prevents showing blank screen when navigating between multiple screens with freezing\n // https://github.com/software-mansion/react-native-screens/pull/1208\n ref={handleRef}\n onTransitionProgress={\n !isNativeStack\n ? undefined\n : Animated.event(\n [\n {\n nativeEvent: {\n progress: this.progress,\n closing: this.closing,\n goingForward: this.goingForward,\n },\n },\n ],\n { useNativeDriver: true }\n )\n }\n onGestureCancel={\n onGestureCancel ??\n (() => {\n // for internal use\n })\n }\n >\n {!isNativeStack ? ( // see comment of this prop in types.tsx for information why it is needed\n children\n ) : (\n <TransitionProgressContext.Provider\n value={{\n progress: this.progress,\n closing: this.closing,\n goingForward: this.goingForward,\n }}\n >\n {children}\n </TransitionProgressContext.Provider>\n )}\n </AnimatedNativeScreen>\n </DelayedFreeze>\n );\n } else {\n // same reason as above\n let {\n active,\n activityState,\n style,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onComponentRef,\n ...props\n } = rest;\n\n if (active !== undefined && activityState === undefined) {\n activityState = active !== 0 ? 2 : 0;\n }\n return (\n <Animated.View\n style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}\n ref={this.setRef}\n {...props}\n />\n );\n }\n }\n}\n\nfunction ScreenContainer(props: ScreenContainerProps) {\n const { enabled = ENABLE_SCREENS, hasTwoStates, ...rest } = props;\n\n if (enabled && isPlatformSupported) {\n if (hasTwoStates) {\n return <ScreensNativeModules.NativeScreenNavigationContainer {...rest} />;\n }\n return <ScreensNativeModules.NativeScreenContainer {...rest} />;\n }\n return <View {...rest} />;\n}\n\nfunction FullWindowOverlay(props: { children: ReactNode }) {\n if (Platform.OS !== 'ios') {\n console.warn('Importing FullWindowOverlay is only valid on iOS devices.');\n return <View {...props} />;\n }\n return (\n <ScreensNativeModules.NativeFullWindowOverlay\n style={{ position: 'absolute', width: '100%', height: '100%' }}\n >\n {props.children}\n </ScreensNativeModules.NativeFullWindowOverlay>\n );\n}\n\nconst styles = StyleSheet.create({\n headerSubview: {\n position: 'absolute',\n top: 0,\n right: 0,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nconst ScreenStackHeaderBackButtonImage = (props: ImageProps): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n type=\"back\"\n style={styles.headerSubview}\n >\n <Image resizeMode=\"center\" fadeDuration={0} {...props} />\n </ScreensNativeModules.NativeScreenStackHeaderSubview>\n);\n\nclass SearchBar extends React.Component<SearchBarProps> {\n nativeSearchBarRef: React.RefObject<SearchBarCommands>;\n\n constructor(props: SearchBarProps) {\n super(props);\n this.nativeSearchBarRef = React.createRef();\n }\n\n _callMethodWithRef(method: (ref: SearchBarCommands) => void) {\n const ref = this.nativeSearchBarRef.current;\n if (ref) {\n method(ref);\n } else {\n console.warn(\n 'Reference to native search bar component has not been updated yet'\n );\n }\n }\n\n blur() {\n this._callMethodWithRef((ref) =>\n ScreensNativeModules.NativeSearchBarCommands.blur(ref)\n );\n }\n\n focus() {\n this._callMethodWithRef((ref) =>\n ScreensNativeModules.NativeSearchBarCommands.focus(ref)\n );\n }\n\n toggleCancelButton(flag: boolean) {\n this._callMethodWithRef((ref) =>\n ScreensNativeModules.NativeSearchBarCommands.toggleCancelButton(ref, flag)\n );\n }\n\n clearText() {\n this._callMethodWithRef((ref) =>\n ScreensNativeModules.NativeSearchBarCommands.clearText(ref)\n );\n }\n\n setText(text: string) {\n this._callMethodWithRef((ref) =>\n ScreensNativeModules.NativeSearchBarCommands.setText(ref, text)\n );\n }\n\n render() {\n if (!isSearchBarAvailableForCurrentPlatform) {\n console.warn(\n 'Importing SearchBar is only valid on iOS and Android devices.'\n );\n return View as any as ReactNode;\n }\n\n return (\n <ScreensNativeModules.NativeSearchBar\n {...this.props}\n ref={this.nativeSearchBarRef}\n />\n );\n }\n}\n\nconst ScreenStackHeaderRightView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"right\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderLeftView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"left\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderCenterView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"center\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderSearchBarView = (\n props: React.PropsWithChildren<SearchBarProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"searchBar\"\n style={styles.headerSubview}\n />\n);\n\nexport type {\n StackPresentationTypes,\n StackAnimationTypes,\n BlurEffectTypes,\n ScreenReplaceTypes,\n ScreenOrientationTypes,\n HeaderSubviewTypes,\n ScreenProps,\n ScreenContainerProps,\n ScreenStackProps,\n ScreenStackHeaderConfigProps,\n SearchBarProps,\n};\n\n// context to be used when the user wants to use enhanced implementation\n// e.g. to use `useReanimatedTransitionProgress` (see `reanimated` folder in repo)\nconst ScreenContext = React.createContext(InnerScreen);\n\nclass Screen extends React.Component<ScreenProps> {\n static contextType = ScreenContext;\n\n render() {\n const ScreenWrapper = (this.context || InnerScreen) as React.ElementType;\n return <ScreenWrapper {...this.props} />;\n }\n}\n\nmodule.exports = {\n // these are classes so they are not evaluated until used\n // so no need to use getters for them\n Screen,\n ScreenContainer,\n ScreenContext,\n ScreenStack,\n InnerScreen,\n SearchBar,\n FullWindowOverlay,\n\n get NativeScreen() {\n return ScreensNativeModules.NativeScreen;\n },\n\n get NativeScreenContainer() {\n return ScreensNativeModules.NativeScreenContainer;\n },\n\n get NativeScreenNavigationContainer() {\n return ScreensNativeModules.NativeScreenNavigationContainer;\n },\n\n get ScreenStackHeaderConfig() {\n return ScreensNativeModules.NativeScreenStackHeaderConfig;\n },\n get ScreenStackHeaderSubview() {\n return ScreensNativeModules.NativeScreenStackHeaderSubview;\n },\n get SearchBarCommands() {\n return ScreensNativeModules.NativeSearchBarCommands;\n },\n // these are functions and will not be evaluated until used\n // so no need to use getters for them\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderRightView,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderSearchBarView,\n\n enableScreens,\n enableFreeze,\n screensEnabled,\n shouldUseActivityState,\n useTransitionProgress,\n\n isSearchBarAvailableForCurrentPlatform,\n isNewBackTitleImplementation,\n executeNativeBackPress,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactFreeze","_package","_TransitionProgressContext","_useTransitionProgress","_utils","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_defineProperty","value","_toPropertyKey","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","isPlatformSupported","Platform","OS","ENABLE_SCREENS","enableScreens","shouldEnableScreens","UIManager","getViewManagerConfig","console","error","ENABLE_FREEZE","enableFreeze","shouldEnableReactFreeze","minor","parseInt","version","split","warn","shouldUseActivityState","screensEnabled","NativeScreenValue","NativeScreenContainerValue","NativeScreenNavigationContainerValue","NativeScreenStack","NativeScreenStackHeaderConfig","NativeScreenStackHeaderSubview","AnimatedNativeScreen","NativeSearchBar","NativeSearchBarCommands","NativeFullWindowOverlay","ScreensNativeModules","NativeScreen","NativeScreenContainer","NativeScreenNavigationContainer","Commands","DelayedFreeze","_ref","freeze","children","freezeState","setFreezeState","React","useState","setImmediate","createElement","Freeze","ScreenStack","props","rest","size","Children","count","childrenWithFreeze","map","child","index","_props$descriptor","_props$descriptors","_descriptor$options$f","_descriptor$options","descriptor","descriptors","freezeEnabled","options","freezeOnBlur","InnerScreen","Component","constructor","Animated","Value","ref","_this$props$onCompone","_this$props","onComponentRef","setNativeProps","_this$ref","render","enabled","sheetAllowedDetents","sheetLargestUndimmedDetent","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","_gestureResponseDista","_gestureResponseDista2","_gestureResponseDista3","_gestureResponseDista4","createAnimatedComponent","active","activityState","isNativeStack","gestureResponseDistance","onGestureCancel","handleRef","_ref$viewConfig","viewConfig","validAttributes","style","display","setRef","start","end","top","bottom","onTransitionProgress","event","nativeEvent","progress","closing","goingForward","useNativeDriver","Provider","View","ScreenContainer","hasTwoStates","FullWindowOverlay","position","width","height","styles","StyleSheet","create","headerSubview","right","flexDirection","alignItems","justifyContent","ScreenStackHeaderBackButtonImage","type","Image","resizeMode","fadeDuration","SearchBar","nativeSearchBarRef","createRef","_callMethodWithRef","method","current","blur","focus","toggleCancelButton","flag","clearText","setText","text","isSearchBarAvailableForCurrentPlatform","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderSearchBarView","ScreenContext","createContext","Screen","ScreenWrapper","context","module","exports","ScreenStackHeaderConfig","ScreenStackHeaderSubview","SearchBarCommands","useTransitionProgress","isNewBackTitleImplementation","executeNativeBackPress"],"sources":["index.native.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport React, { PropsWithChildren, ReactNode } from 'react';\nimport {\n Animated,\n Image,\n ImageProps,\n Platform,\n StyleProp,\n StyleSheet,\n UIManager,\n View,\n ViewProps,\n ViewStyle,\n} from 'react-native';\nimport { Freeze } from 'react-freeze';\nimport { version } from 'react-native/package.json';\n\nimport TransitionProgressContext from './TransitionProgressContext';\nimport useTransitionProgress from './useTransitionProgress';\nimport {\n StackPresentationTypes,\n StackAnimationTypes,\n BlurEffectTypes,\n ScreenReplaceTypes,\n ScreenOrientationTypes,\n HeaderSubviewTypes,\n ScreenProps,\n ScreenContainerProps,\n ScreenStackProps,\n ScreenStackHeaderConfigProps,\n SearchBarProps,\n SearchBarCommands,\n} from './types';\nimport {\n isSearchBarAvailableForCurrentPlatform,\n isNewBackTitleImplementation,\n executeNativeBackPress,\n} from './utils';\n\n// web implementation is taken from `index.tsx`\nconst isPlatformSupported =\n Platform.OS === 'ios' ||\n Platform.OS === 'android' ||\n Platform.OS === 'windows';\n\nlet ENABLE_SCREENS = isPlatformSupported;\n\nfunction enableScreens(shouldEnableScreens = true): void {\n ENABLE_SCREENS = isPlatformSupported && shouldEnableScreens;\n if (ENABLE_SCREENS && !UIManager.getViewManagerConfig('RNSScreen')) {\n console.error(\n `Screen native module hasn't been linked. Please check the react-native-screens README for more details`\n );\n }\n}\n\nlet ENABLE_FREEZE = false;\n\nfunction enableFreeze(shouldEnableReactFreeze = true): void {\n const minor = parseInt(version.split('.')[1]); // eg. takes 66 from '0.66.0'\n\n // react-freeze requires react-native >=0.64, react-native from main is 0.0.0\n if (!(minor === 0 || minor >= 64) && shouldEnableReactFreeze) {\n console.warn(\n 'react-freeze library requires at least react-native 0.64. Please upgrade your react-native version in order to use this feature.'\n );\n }\n\n ENABLE_FREEZE = shouldEnableReactFreeze;\n}\n\n// const that tells if the library should use new implementation, will be undefined for older versions\nconst shouldUseActivityState = true;\n\nfunction screensEnabled(): boolean {\n return ENABLE_SCREENS;\n}\n\ntype SearchBarCommandsType = {\n blur: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>\n ) => void;\n focus: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>\n ) => void;\n clearText: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>\n ) => void;\n toggleCancelButton: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>,\n flag: boolean\n ) => void;\n setText: (\n viewRef: React.ElementRef<typeof ScreensNativeModules.NativeSearchBar>,\n text: string\n ) => void;\n};\n\n// We initialize these lazily so that importing the module doesn't throw error when not linked\n// This is necessary coz libraries such as React Navigation import the library where it may not be enabled\nlet NativeScreenValue: React.ComponentType<ScreenProps>;\nlet NativeScreenContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenNavigationContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenStack: React.ComponentType<ScreenStackProps>;\nlet NativeScreenStackHeaderConfig: React.ComponentType<ScreenStackHeaderConfigProps>;\nlet NativeScreenStackHeaderSubview: React.ComponentType<\n React.PropsWithChildren<ViewProps & { type?: HeaderSubviewTypes }>\n>;\nlet AnimatedNativeScreen: React.ComponentType<ScreenProps>;\n\nlet NativeSearchBar: React.ComponentType<SearchBarProps> &\n typeof NativeSearchBarCommands;\nlet NativeSearchBarCommands: SearchBarCommandsType;\n\nlet NativeFullWindowOverlay: React.ComponentType<\n PropsWithChildren<{\n style: StyleProp<ViewStyle>;\n }>\n>;\n\nconst ScreensNativeModules = {\n get NativeScreen() {\n NativeScreenValue =\n NativeScreenValue || require('./fabric/ScreenNativeComponent').default;\n return NativeScreenValue;\n },\n\n get NativeScreenContainer() {\n NativeScreenContainerValue =\n NativeScreenContainerValue ||\n require('./fabric/ScreenContainerNativeComponent').default;\n return NativeScreenContainerValue;\n },\n\n get NativeScreenNavigationContainer() {\n NativeScreenNavigationContainerValue =\n NativeScreenNavigationContainerValue ||\n (Platform.OS === 'ios'\n ? require('./fabric/ScreenNavigationContainerNativeComponent').default\n : this.NativeScreenContainer);\n return NativeScreenNavigationContainerValue;\n },\n\n get NativeScreenStack() {\n NativeScreenStack =\n NativeScreenStack ||\n require('./fabric/ScreenStackNativeComponent').default;\n return NativeScreenStack;\n },\n\n get NativeScreenStackHeaderConfig() {\n NativeScreenStackHeaderConfig =\n NativeScreenStackHeaderConfig ||\n require('./fabric/ScreenStackHeaderConfigNativeComponent').default;\n return NativeScreenStackHeaderConfig;\n },\n\n get NativeScreenStackHeaderSubview() {\n NativeScreenStackHeaderSubview =\n NativeScreenStackHeaderSubview ||\n require('./fabric/ScreenStackHeaderSubviewNativeComponent').default;\n return NativeScreenStackHeaderSubview;\n },\n\n get NativeSearchBar() {\n NativeSearchBar =\n NativeSearchBar || require('./fabric/SearchBarNativeComponent').default;\n return NativeSearchBar;\n },\n\n get NativeSearchBarCommands() {\n NativeSearchBarCommands =\n NativeSearchBarCommands ||\n require('./fabric/SearchBarNativeComponent').Commands;\n return NativeSearchBarCommands;\n },\n\n get NativeFullWindowOverlay() {\n NativeFullWindowOverlay =\n NativeFullWindowOverlay ||\n require('./fabric/FullWindowOverlayNativeComponent').default;\n return NativeFullWindowOverlay;\n },\n};\n\ninterface FreezeWrapperProps {\n freeze: boolean;\n children: React.ReactNode;\n}\n\n// This component allows one more render before freezing the screen.\n// Allows activityState to reach the native side and useIsFocused to work correctly.\nfunction DelayedFreeze({ freeze, children }: FreezeWrapperProps) {\n // flag used for determining whether freeze should be enabled\n const [freezeState, setFreezeState] = React.useState(false);\n\n if (freeze !== freezeState) {\n // setImmediate is executed at the end of the JS execution block.\n // Used here for changing the state right after the render.\n setImmediate(() => {\n setFreezeState(freeze);\n });\n }\n\n return <Freeze freeze={freeze ? freezeState : false}>{children}</Freeze>;\n}\n\nfunction ScreenStack(props: ScreenStackProps) {\n const { children, ...rest } = props;\n const size = React.Children.count(children);\n // freezes all screens except the top one\n const childrenWithFreeze = React.Children.map(children, (child, index) => {\n // @ts-expect-error it's either SceneView in v6 or RouteView in v5\n const { props, key } = child;\n const descriptor = props?.descriptor ?? props?.descriptors?.[key];\n const freezeEnabled = descriptor?.options?.freezeOnBlur ?? ENABLE_FREEZE;\n\n return (\n <DelayedFreeze freeze={freezeEnabled && size - index > 1}>\n {child}\n </DelayedFreeze>\n );\n });\n\n return (\n <ScreensNativeModules.NativeScreenStack {...rest}>\n {childrenWithFreeze}\n </ScreensNativeModules.NativeScreenStack>\n );\n}\n\n// Incomplete type, all accessible properties available at:\n// react-native/Libraries/Components/View/ReactNativeViewViewConfig.js\ninterface ViewConfig extends View {\n viewConfig: {\n validAttributes: {\n style: {\n display: boolean;\n };\n };\n };\n}\n\nclass InnerScreen extends React.Component<ScreenProps> {\n private ref: React.ElementRef<typeof View> | null = null;\n private closing = new Animated.Value(0);\n private progress = new Animated.Value(0);\n private goingForward = new Animated.Value(0);\n\n setNativeProps(props: ScreenProps): void {\n this.ref?.setNativeProps(props);\n }\n\n setRef = (ref: React.ElementRef<typeof View> | null): void => {\n this.ref = ref;\n this.props.onComponentRef?.(ref);\n };\n\n render() {\n const {\n enabled = ENABLE_SCREENS,\n freezeOnBlur = ENABLE_FREEZE,\n ...rest\n } = this.props;\n\n // To maintain default behaviour of formSheet stack presentation style & and to have resonable\n // defaults for new medium-detent iOS API we need to set defaults here\n const {\n sheetAllowedDetents = 'large',\n sheetLargestUndimmedDetent = 'all',\n sheetGrabberVisible = false,\n sheetCornerRadius = -1.0,\n sheetExpandsWhenScrolledToEdge = true,\n } = rest;\n\n if (enabled && isPlatformSupported) {\n AnimatedNativeScreen =\n AnimatedNativeScreen ||\n Animated.createAnimatedComponent(ScreensNativeModules.NativeScreen);\n\n let {\n // Filter out active prop in this case because it is unused and\n // can cause problems depending on react-native version:\n // https://github.com/react-navigation/react-navigation/issues/4886\n active,\n activityState,\n children,\n isNativeStack,\n gestureResponseDistance,\n onGestureCancel,\n ...props\n } = rest;\n\n if (active !== undefined && activityState === undefined) {\n console.warn(\n 'It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens'\n );\n activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition\n }\n\n const handleRef = (ref: ViewConfig) => {\n if (ref?.viewConfig?.validAttributes?.style) {\n ref.viewConfig.validAttributes.style = {\n ...ref.viewConfig.validAttributes.style,\n display: false,\n };\n this.setRef(ref);\n }\n };\n\n return (\n <DelayedFreeze freeze={freezeOnBlur && activityState === 0}>\n <AnimatedNativeScreen\n {...props}\n activityState={activityState}\n sheetAllowedDetents={sheetAllowedDetents}\n sheetLargestUndimmedDetent={sheetLargestUndimmedDetent}\n sheetGrabberVisible={sheetGrabberVisible}\n sheetCornerRadius={sheetCornerRadius}\n sheetExpandsWhenScrolledToEdge={sheetExpandsWhenScrolledToEdge}\n gestureResponseDistance={{\n start: gestureResponseDistance?.start ?? -1,\n end: gestureResponseDistance?.end ?? -1,\n top: gestureResponseDistance?.top ?? -1,\n bottom: gestureResponseDistance?.bottom ?? -1,\n }}\n // This prevents showing blank screen when navigating between multiple screens with freezing\n // https://github.com/software-mansion/react-native-screens/pull/1208\n ref={handleRef}\n onTransitionProgress={\n !isNativeStack\n ? undefined\n : Animated.event(\n [\n {\n nativeEvent: {\n progress: this.progress,\n closing: this.closing,\n goingForward: this.goingForward,\n },\n },\n ],\n { useNativeDriver: true }\n )\n }\n onGestureCancel={\n onGestureCancel ??\n (() => {\n // for internal use\n })\n }>\n {!isNativeStack ? ( // see comment of this prop in types.tsx for information why it is needed\n children\n ) : (\n <TransitionProgressContext.Provider\n value={{\n progress: this.progress,\n closing: this.closing,\n goingForward: this.goingForward,\n }}>\n {children}\n </TransitionProgressContext.Provider>\n )}\n </AnimatedNativeScreen>\n </DelayedFreeze>\n );\n } else {\n // same reason as above\n let {\n active,\n activityState,\n style,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onComponentRef,\n ...props\n } = rest;\n\n if (active !== undefined && activityState === undefined) {\n activityState = active !== 0 ? 2 : 0;\n }\n return (\n <Animated.View\n style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}\n ref={this.setRef}\n {...props}\n />\n );\n }\n }\n}\n\nfunction ScreenContainer(props: ScreenContainerProps) {\n const { enabled = ENABLE_SCREENS, hasTwoStates, ...rest } = props;\n\n if (enabled && isPlatformSupported) {\n if (hasTwoStates) {\n return <ScreensNativeModules.NativeScreenNavigationContainer {...rest} />;\n }\n return <ScreensNativeModules.NativeScreenContainer {...rest} />;\n }\n return <View {...rest} />;\n}\n\nfunction FullWindowOverlay(props: { children: ReactNode }) {\n if (Platform.OS !== 'ios') {\n console.warn('Importing FullWindowOverlay is only valid on iOS devices.');\n return <View {...props} />;\n }\n return (\n <ScreensNativeModules.NativeFullWindowOverlay\n style={{ position: 'absolute', width: '100%', height: '100%' }}>\n {props.children}\n </ScreensNativeModules.NativeFullWindowOverlay>\n );\n}\n\nconst styles = StyleSheet.create({\n headerSubview: {\n position: 'absolute',\n top: 0,\n right: 0,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nconst ScreenStackHeaderBackButtonImage = (props: ImageProps): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n type=\"back\"\n style={styles.headerSubview}>\n <Image resizeMode=\"center\" fadeDuration={0} {...props} />\n </ScreensNativeModules.NativeScreenStackHeaderSubview>\n);\n\nclass SearchBar extends React.Component<SearchBarProps> {\n nativeSearchBarRef: React.RefObject<SearchBarCommands>;\n\n constructor(props: SearchBarProps) {\n super(props);\n this.nativeSearchBarRef = React.createRef();\n }\n\n _callMethodWithRef(method: (ref: SearchBarCommands) => void) {\n const ref = this.nativeSearchBarRef.current;\n if (ref) {\n method(ref);\n } else {\n console.warn(\n 'Reference to native search bar component has not been updated yet'\n );\n }\n }\n\n blur() {\n this._callMethodWithRef(ref =>\n ScreensNativeModules.NativeSearchBarCommands.blur(ref)\n );\n }\n\n focus() {\n this._callMethodWithRef(ref =>\n ScreensNativeModules.NativeSearchBarCommands.focus(ref)\n );\n }\n\n toggleCancelButton(flag: boolean) {\n this._callMethodWithRef(ref =>\n ScreensNativeModules.NativeSearchBarCommands.toggleCancelButton(ref, flag)\n );\n }\n\n clearText() {\n this._callMethodWithRef(ref =>\n ScreensNativeModules.NativeSearchBarCommands.clearText(ref)\n );\n }\n\n setText(text: string) {\n this._callMethodWithRef(ref =>\n ScreensNativeModules.NativeSearchBarCommands.setText(ref, text)\n );\n }\n\n render() {\n if (!isSearchBarAvailableForCurrentPlatform) {\n console.warn(\n 'Importing SearchBar is only valid on iOS and Android devices.'\n );\n return View as any as ReactNode;\n }\n\n return (\n <ScreensNativeModules.NativeSearchBar\n {...this.props}\n ref={this.nativeSearchBarRef}\n />\n );\n }\n}\n\nconst ScreenStackHeaderRightView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"right\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderLeftView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"left\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderCenterView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"center\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderSearchBarView = (\n props: React.PropsWithChildren<SearchBarProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"searchBar\"\n style={styles.headerSubview}\n />\n);\n\nexport type {\n StackPresentationTypes,\n StackAnimationTypes,\n BlurEffectTypes,\n ScreenReplaceTypes,\n ScreenOrientationTypes,\n HeaderSubviewTypes,\n ScreenProps,\n ScreenContainerProps,\n ScreenStackProps,\n ScreenStackHeaderConfigProps,\n SearchBarProps,\n};\n\n// context to be used when the user wants to use enhanced implementation\n// e.g. to use `useReanimatedTransitionProgress` (see `reanimated` folder in repo)\nconst ScreenContext = React.createContext(InnerScreen);\n\nclass Screen extends React.Component<ScreenProps> {\n static contextType = ScreenContext;\n\n render() {\n const ScreenWrapper = (this.context || InnerScreen) as React.ElementType;\n return <ScreenWrapper {...this.props} />;\n }\n}\n\nmodule.exports = {\n // these are classes so they are not evaluated until used\n // so no need to use getters for them\n Screen,\n ScreenContainer,\n ScreenContext,\n ScreenStack,\n InnerScreen,\n SearchBar,\n FullWindowOverlay,\n\n get NativeScreen() {\n return ScreensNativeModules.NativeScreen;\n },\n\n get NativeScreenContainer() {\n return ScreensNativeModules.NativeScreenContainer;\n },\n\n get NativeScreenNavigationContainer() {\n return ScreensNativeModules.NativeScreenNavigationContainer;\n },\n\n get ScreenStackHeaderConfig() {\n return ScreensNativeModules.NativeScreenStackHeaderConfig;\n },\n get ScreenStackHeaderSubview() {\n return ScreensNativeModules.NativeScreenStackHeaderSubview;\n },\n get SearchBarCommands() {\n return ScreensNativeModules.NativeSearchBarCommands;\n },\n // these are functions and will not be evaluated until used\n // so no need to use getters for them\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderRightView,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderSearchBarView,\n\n enableScreens,\n enableFreeze,\n screensEnabled,\n shouldUseActivityState,\n useTransitionProgress,\n\n isSearchBarAvailableForCurrentPlatform,\n isNewBackTitleImplementation,\n executeNativeBackPress,\n};\n"],"mappings":"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"}
|