react-native-screens 3.14.1 → 3.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +0 -5
  2. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +3 -3
  3. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +4 -10
  4. package/ios/RNSScreen.mm +5 -6
  5. package/ios/RNSScreenStack.mm +60 -17
  6. package/ios/RNSScreenStackHeaderSubview.h +1 -1
  7. package/lib/commonjs/index.native.js +14 -22
  8. package/lib/commonjs/index.native.js.map +1 -1
  9. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +4 -2
  10. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  11. package/lib/module/index.native.js +14 -22
  12. package/lib/module/index.native.js.map +1 -1
  13. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +4 -2
  14. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  15. package/package.json +1 -1
  16. package/src/index.native.tsx +10 -30
  17. package/src/reanimated/ReanimatedNativeStackScreen.tsx +3 -1
  18. package/lib/commonjs/fabric/FullWindowOverlay.js +0 -26
  19. package/lib/commonjs/fabric/FullWindowOverlay.js.map +0 -1
  20. package/lib/commonjs/fabric/Screen.js +0 -29
  21. package/lib/commonjs/fabric/Screen.js.map +0 -1
  22. package/lib/commonjs/fabric/ScreenContainer.js +0 -28
  23. package/lib/commonjs/fabric/ScreenContainer.js.map +0 -1
  24. package/lib/commonjs/fabric/ScreenNavigationContainer.js +0 -28
  25. package/lib/commonjs/fabric/ScreenNavigationContainer.js.map +0 -1
  26. package/lib/commonjs/fabric/ScreenStack.js +0 -26
  27. package/lib/commonjs/fabric/ScreenStack.js.map +0 -1
  28. package/lib/commonjs/fabric/ScreenStackHeaderSubview.js +0 -37
  29. package/lib/commonjs/fabric/ScreenStackHeaderSubview.js.map +0 -1
  30. package/lib/commonjs/fabric/SearchBar.js +0 -37
  31. package/lib/commonjs/fabric/SearchBar.js.map +0 -1
  32. package/lib/commonjs/fabric/index.js +0 -72
  33. package/lib/commonjs/fabric/index.js.map +0 -1
  34. package/lib/module/fabric/FullWindowOverlay.js +0 -15
  35. package/lib/module/fabric/FullWindowOverlay.js.map +0 -1
  36. package/lib/module/fabric/Screen.js +0 -16
  37. package/lib/module/fabric/Screen.js.map +0 -1
  38. package/lib/module/fabric/ScreenContainer.js +0 -17
  39. package/lib/module/fabric/ScreenContainer.js.map +0 -1
  40. package/lib/module/fabric/ScreenNavigationContainer.js +0 -17
  41. package/lib/module/fabric/ScreenNavigationContainer.js.map +0 -1
  42. package/lib/module/fabric/ScreenStack.js +0 -15
  43. package/lib/module/fabric/ScreenStack.js.map +0 -1
  44. package/lib/module/fabric/ScreenStackHeaderSubview.js +0 -24
  45. package/lib/module/fabric/ScreenStackHeaderSubview.js.map +0 -1
  46. package/lib/module/fabric/SearchBar.js +0 -24
  47. package/lib/module/fabric/SearchBar.js.map +0 -1
  48. package/lib/module/fabric/index.js +0 -10
  49. package/lib/module/fabric/index.js.map +0 -1
  50. package/src/fabric/FullWindowOverlay.js +0 -13
  51. package/src/fabric/Screen.js +0 -15
  52. package/src/fabric/ScreenContainer.js +0 -16
  53. package/src/fabric/ScreenNavigationContainer.js +0 -16
  54. package/src/fabric/ScreenStack.js +0 -10
  55. package/src/fabric/ScreenStackHeaderSubview.js +0 -22
  56. package/src/fabric/SearchBar.js +0 -20
  57. package/src/fabric/index.js +0 -19
@@ -8,13 +8,8 @@ import android.util.SparseArray
8
8
  import android.view.ViewGroup
9
9
  import android.view.WindowManager
10
10
  import android.webkit.WebView
11
- import androidx.annotation.UiThread
12
11
  import com.facebook.react.bridge.GuardedRunnable
13
12
  import com.facebook.react.bridge.ReactContext
14
- import com.facebook.react.bridge.ReadableMap
15
- import com.facebook.react.bridge.WritableMap
16
- import com.facebook.react.bridge.WritableNativeMap
17
- import com.facebook.react.uimanager.PixelUtil
18
13
  import com.facebook.react.uimanager.UIManagerModule
19
14
 
20
15
  @SuppressLint("ViewConstructor")
@@ -112,8 +112,8 @@ object ScreenWindowTraits {
112
112
  // and consume all the top insets so no padding will be added under the status bar.
113
113
  val decorView = activity.window.decorView
114
114
  if (translucent) {
115
- decorView.setOnApplyWindowInsetsListener { v, insets ->
116
- val defaultInsets = v.onApplyWindowInsets(insets)
115
+ ViewCompat.setOnApplyWindowInsetsListener(decorView) { v, insets ->
116
+ val defaultInsets = ViewCompat.onApplyWindowInsets(v, insets)
117
117
  defaultInsets.replaceSystemWindowInsets(
118
118
  defaultInsets.systemWindowInsetLeft,
119
119
  0,
@@ -122,7 +122,7 @@ object ScreenWindowTraits {
122
122
  )
123
123
  }
124
124
  } else {
125
- decorView.setOnApplyWindowInsetsListener(null)
125
+ ViewCompat.setOnApplyWindowInsetsListener(decorView, null)
126
126
  }
127
127
  ViewCompat.requestApplyInsets(decorView)
128
128
  }
@@ -2,15 +2,9 @@ package com.swmansion.rnscreens
2
2
 
3
3
  import android.view.ViewGroup
4
4
  import com.facebook.react.bridge.ReactContext
5
- import androidx.annotation.UiThread
6
- import com.facebook.react.uimanager.PixelUtil
7
- import com.facebook.react.bridge.ReadableMap
8
- import com.facebook.react.bridge.WritableMap
9
- import com.facebook.react.bridge.WritableNativeMap
10
- import kotlin.math.abs
11
5
 
12
6
  abstract class FabricEnabledViewGroup constructor(context: ReactContext?) : ViewGroup(context) {
13
- protected fun updateScreenSizeFabric(width: Int, height: Int) {
14
- // do nothing
15
- }
16
- }
7
+ protected fun updateScreenSizeFabric(width: Int, height: Int) {
8
+ // do nothing
9
+ }
10
+ }
package/ios/RNSScreen.mm CHANGED
@@ -1038,18 +1038,17 @@ Class<RCTComponentViewProtocol> RNSScreenCls(void)
1038
1038
  {
1039
1039
  return self.screenView.homeIndicatorHidden;
1040
1040
  }
1041
-
1042
- - (int)getIndexOfView:(UIView *)view
1043
- {
1044
- return (int)[[self.screenView.reactSuperview reactSubviews] indexOfObject:view];
1045
- }
1046
-
1047
1041
  - (int)getParentChildrenCount
1048
1042
  {
1049
1043
  return (int)[[self.screenView.reactSuperview reactSubviews] count];
1050
1044
  }
1051
1045
  #endif
1052
1046
 
1047
+ - (int)getIndexOfView:(UIView *)view
1048
+ {
1049
+ return (int)[[self.screenView.reactSuperview reactSubviews] indexOfObject:view];
1050
+ }
1051
+
1053
1052
  // since on Fabric the view of controller can be a snapshot of type `UIView`,
1054
1053
  // when we want to check props of ScreenView, we need to get them from _initialView
1055
1054
  - (RNSScreenView *)screenView
@@ -598,22 +598,16 @@
598
598
 
599
599
  - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
600
600
  {
601
- RNSScreenView *topScreen = (RNSScreenView *)_controller.viewControllers.lastObject.view;
602
-
603
- if (![topScreen isKindOfClass:[RNSScreenView class]] || !topScreen.gestureEnabled ||
604
- _controller.viewControllers.count < 2) {
605
- return NO;
606
- }
601
+ RNSScreenView *topScreen = _reactSubviews.lastObject;
607
602
 
608
603
  #if TARGET_OS_TV
609
604
  [self cancelTouchesInParent];
610
605
  return YES;
611
606
  #else
612
- if (topScreen.fullScreenSwipeEnabled) {
613
- // we want only `RNSPanGestureRecognizer` to be able to recognize when
614
- // `fullScreenSwipeEnabled` is set, and we are in the bounds set by user
615
- if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]] &&
616
- [self isInGestureResponseDistance:gestureRecognizer topScreen:topScreen]) {
607
+ // RNSPanGestureRecognizer will receive events iff topScreen.fullScreenSwipeEnabled == YES;
608
+ // Events are filtered in gestureRecognizer:shouldReceivePressOrTouchEvent: method
609
+ if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) {
610
+ if ([self isInGestureResponseDistance:gestureRecognizer topScreen:topScreen]) {
617
611
  _isFullWidthSwiping = YES;
618
612
  [self cancelTouchesInParent];
619
613
  return YES;
@@ -621,6 +615,7 @@
621
615
  return NO;
622
616
  }
623
617
 
618
+ // Now we're dealing with RNSScreenEdgeGestureRecognizer (or _UIParallaxTransitionPanGestureRecognizer)
624
619
  if (topScreen.customAnimationOnSwipe && [RNSScreenStackAnimator isCustomAnimation:topScreen.stackAnimation]) {
625
620
  if ([gestureRecognizer isKindOfClass:[RNSScreenEdgeGestureRecognizer class]]) {
626
621
  // if we do not set any explicit `semanticContentAttribute`, it is `UISemanticContentAttributeUnspecified` instead
@@ -639,10 +634,8 @@
639
634
  if ([gestureRecognizer isKindOfClass:[RNSScreenEdgeGestureRecognizer class]]) {
640
635
  // it should only recognize with `customAnimationOnSwipe` set
641
636
  return NO;
642
- } else if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) {
643
- // it should only recognize with `fullScreenSwipeEnabled` set
644
- return NO;
645
637
  }
638
+ // _UIParallaxTransitionPanGestureRecognizer (other...)
646
639
  [self cancelTouchesInParent];
647
640
  return YES;
648
641
  }
@@ -675,7 +668,7 @@
675
668
 
676
669
  - (void)handleSwipe:(UIPanGestureRecognizer *)gestureRecognizer
677
670
  {
678
- RNSScreenView *topScreen = ((RNSScreen *)_controller.viewControllers.lastObject).screenView;
671
+ RNSScreenView *topScreen = _reactSubviews.lastObject;
679
672
  float translation;
680
673
  float velocity;
681
674
  float distance;
@@ -807,6 +800,8 @@
807
800
  return [super hitTest:point withEvent:event];
808
801
  }
809
802
 
803
+ #if !TARGET_OS_TV
804
+
810
805
  - (BOOL)isScrollViewPanGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
811
806
  {
812
807
  // NOTE: This hack is required to restore native behavior of edge swipe (interactive pop gesture)
@@ -819,18 +814,66 @@
819
814
  return scrollView.panGestureRecognizer == gestureRecognizer;
820
815
  }
821
816
 
817
+ // Custom method for compatibility with iOS < 13.4
818
+ // RNSScreenStackView is a UIGestureRecognizerDelegate for three types of gesture recognizers:
819
+ // RNSPanGestureRecognizer, RNSScreenEdgeGestureRecognizer, _UIParallaxTransitionPanGestureRecognizer
820
+ // Be careful when adding another type of gesture recognizer.
821
+ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePressOrTouchEvent:(NSObject *)event
822
+ {
823
+ RNSScreenView *topScreen = _reactSubviews.lastObject;
824
+
825
+ if (![topScreen isKindOfClass:[RNSScreenView class]] || !topScreen.gestureEnabled ||
826
+ _controller.viewControllers.count < 2) {
827
+ return NO;
828
+ }
829
+
830
+ // We want to pass events to RNSPanGestureRecognizer iff full screen swipe is enabled.
831
+ if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) {
832
+ return topScreen.fullScreenSwipeEnabled;
833
+ }
834
+
835
+ // RNSScreenEdgeGestureRecognizer || _UIParallaxTransitionPanGestureRecognizer
836
+ return YES;
837
+ }
838
+
839
+ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePress:(UIPress *)press;
840
+ {
841
+ return [self gestureRecognizer:gestureRecognizer shouldReceivePressOrTouchEvent:press];
842
+ }
843
+
844
+ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
845
+ {
846
+ return [self gestureRecognizer:gestureRecognizer shouldReceivePressOrTouchEvent:touch];
847
+ }
848
+
822
849
  - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
823
850
  shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
824
851
  {
825
- return [self isScrollViewPanGestureRecognizer:otherGestureRecognizer];
852
+ if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]] &&
853
+ [self isScrollViewPanGestureRecognizer:otherGestureRecognizer]) {
854
+ RNSPanGestureRecognizer *panGestureRecognizer = (RNSPanGestureRecognizer *)gestureRecognizer;
855
+ BOOL isBackGesture = [panGestureRecognizer translationInView:panGestureRecognizer.view].x > 0 &&
856
+ _controller.viewControllers.count > 1;
857
+
858
+ if (gestureRecognizer.state == UIGestureRecognizerStateBegan || isBackGesture) {
859
+ return NO;
860
+ }
861
+
862
+ return YES;
863
+ }
864
+ return NO;
826
865
  }
827
866
 
828
867
  - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
829
868
  shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
830
869
  {
831
- return [self isScrollViewPanGestureRecognizer:otherGestureRecognizer];
870
+ return (
871
+ [gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]] &&
872
+ [self isScrollViewPanGestureRecognizer:otherGestureRecognizer]);
832
873
  }
833
874
 
875
+ #endif // !TARGET_OS_TV
876
+
834
877
  - (void)insertReactSubview:(RNSScreenView *)subview atIndex:(NSInteger)atIndex
835
878
  {
836
879
  if (![subview isKindOfClass:[RNSScreenView class]]) {
@@ -4,7 +4,7 @@
4
4
  #endif
5
5
 
6
6
  #import <React/RCTConvert.h>
7
- #import <react/RCTViewManager.h>
7
+ #import <React/RCTViewManager.h>
8
8
  #import "RNSEnums.h"
9
9
 
10
10
  NS_ASSUME_NONNULL_BEGIN
@@ -14,8 +14,6 @@ var _useTransitionProgress = _interopRequireDefault(require("./useTransitionProg
14
14
 
15
15
  var _utils = require("./utils");
16
16
 
17
- var _global;
18
-
19
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
18
 
21
19
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -24,10 +22,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
24
22
 
25
23
  // web implementation is taken from `index.tsx`
26
24
  const isPlatformSupported = _reactNative.Platform.OS === 'ios' || _reactNative.Platform.OS === 'android' || _reactNative.Platform.OS === 'windows';
27
- let ENABLE_SCREENS = isPlatformSupported; // @ts-expect-error nativeFabricUIManager is not yet included in the RN types
28
-
29
- const ENABLE_FABRIC = !!((_global = global) !== null && _global !== void 0 && _global.nativeFabricUIManager);
30
- const FabricComponents = ENABLE_FABRIC ? require('./fabric') : {};
25
+ let ENABLE_SCREENS = isPlatformSupported;
31
26
 
32
27
  function enableScreens(shouldEnableScreens = true) {
33
28
  ENABLE_SCREENS = isPlatformSupported && shouldEnableScreens;
@@ -70,42 +65,42 @@ let NativeSearchBar;
70
65
  let NativeFullWindowOverlay;
71
66
  const ScreensNativeModules = {
72
67
  get NativeScreen() {
73
- NativeScreenValue = NativeScreenValue || FabricComponents.Screen || (0, _reactNative.requireNativeComponent)('RNSScreen');
68
+ NativeScreenValue = NativeScreenValue || (0, _reactNative.requireNativeComponent)('RNSScreen');
74
69
  return NativeScreenValue;
75
70
  },
76
71
 
77
72
  get NativeScreenContainer() {
78
- NativeScreenContainerValue = NativeScreenContainerValue || FabricComponents.ScreenContainer || (0, _reactNative.requireNativeComponent)('RNSScreenContainer');
73
+ NativeScreenContainerValue = NativeScreenContainerValue || (0, _reactNative.requireNativeComponent)('RNSScreenContainer');
79
74
  return NativeScreenContainerValue;
80
75
  },
81
76
 
82
77
  get NativeScreenNavigationContainer() {
83
- NativeScreenNavigationContainerValue = NativeScreenNavigationContainerValue || (_reactNative.Platform.OS === 'ios' ? FabricComponents.ScreenNavigationContainer || (0, _reactNative.requireNativeComponent)('RNSScreenNavigationContainer') : this.NativeScreenContainer);
78
+ NativeScreenNavigationContainerValue = NativeScreenNavigationContainerValue || (_reactNative.Platform.OS === 'ios' ? (0, _reactNative.requireNativeComponent)('RNSScreenNavigationContainer') : this.NativeScreenContainer);
84
79
  return NativeScreenNavigationContainerValue;
85
80
  },
86
81
 
87
82
  get NativeScreenStack() {
88
- NativeScreenStack = NativeScreenStack || FabricComponents.ScreenStack || (0, _reactNative.requireNativeComponent)('RNSScreenStack');
83
+ NativeScreenStack = NativeScreenStack || (0, _reactNative.requireNativeComponent)('RNSScreenStack');
89
84
  return NativeScreenStack;
90
85
  },
91
86
 
92
87
  get NativeScreenStackHeaderConfig() {
93
- NativeScreenStackHeaderConfig = NativeScreenStackHeaderConfig || FabricComponents.ScreenStackHeaderConfig || (0, _reactNative.requireNativeComponent)('RNSScreenStackHeaderConfig');
88
+ NativeScreenStackHeaderConfig = NativeScreenStackHeaderConfig || (0, _reactNative.requireNativeComponent)('RNSScreenStackHeaderConfig');
94
89
  return NativeScreenStackHeaderConfig;
95
90
  },
96
91
 
97
92
  get NativeScreenStackHeaderSubview() {
98
- NativeScreenStackHeaderSubview = NativeScreenStackHeaderSubview || FabricComponents.ScreenStackHeaderSubview || (0, _reactNative.requireNativeComponent)('RNSScreenStackHeaderSubview');
93
+ NativeScreenStackHeaderSubview = NativeScreenStackHeaderSubview || (0, _reactNative.requireNativeComponent)('RNSScreenStackHeaderSubview');
99
94
  return NativeScreenStackHeaderSubview;
100
95
  },
101
96
 
102
97
  get NativeSearchBar() {
103
- NativeSearchBar = NativeSearchBar || FabricComponents.SearchBar || (0, _reactNative.requireNativeComponent)('RNSSearchBar');
98
+ NativeSearchBar = NativeSearchBar || (0, _reactNative.requireNativeComponent)('RNSSearchBar');
104
99
  return NativeSearchBar;
105
100
  },
106
101
 
107
102
  get NativeFullWindowOverlay() {
108
- NativeFullWindowOverlay = NativeFullWindowOverlay || FabricComponents.FullWindowOverlay || (0, _reactNative.requireNativeComponent)('RNSFullWindowOverlay');
103
+ NativeFullWindowOverlay = NativeFullWindowOverlay || (0, _reactNative.requireNativeComponent)('RNSFullWindowOverlay');
109
104
  return NativeFullWindowOverlay;
110
105
  }
111
106
 
@@ -222,15 +217,12 @@ class Screen extends _react.default.Component {
222
217
  }
223
218
 
224
219
  const handleRef = ref => {
225
- if (!ENABLE_FABRIC) {
226
- var _ref$viewConfig, _ref$viewConfig$valid;
227
-
228
- if (ref !== null && ref !== void 0 && (_ref$viewConfig = ref.viewConfig) !== null && _ref$viewConfig !== void 0 && (_ref$viewConfig$valid = _ref$viewConfig.validAttributes) !== null && _ref$viewConfig$valid !== void 0 && _ref$viewConfig$valid.style) {
229
- ref.viewConfig.validAttributes.style = { ...ref.viewConfig.validAttributes.style,
230
- display: false
231
- };
232
- }
220
+ var _ref$viewConfig, _ref$viewConfig$valid;
233
221
 
222
+ if (ref !== null && ref !== void 0 && (_ref$viewConfig = ref.viewConfig) !== null && _ref$viewConfig !== void 0 && (_ref$viewConfig$valid = _ref$viewConfig.validAttributes) !== null && _ref$viewConfig$valid !== void 0 && _ref$viewConfig$valid.style) {
223
+ ref.viewConfig.validAttributes.style = { ...ref.viewConfig.validAttributes.style,
224
+ display: false
225
+ };
234
226
  this.setRef(ref);
235
227
  }
236
228
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["index.native.tsx"],"names":["isPlatformSupported","Platform","OS","ENABLE_SCREENS","ENABLE_FABRIC","global","nativeFabricUIManager","FabricComponents","require","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","NativeFullWindowOverlay","ScreensNativeModules","NativeScreen","Screen","NativeScreenContainer","ScreenContainer","NativeScreenNavigationContainer","ScreenNavigationContainer","ScreenStack","ScreenStackHeaderConfig","ScreenStackHeaderSubview","SearchBar","FullWindowOverlay","DelayedFreeze","freeze","children","freezeState","setFreezeState","React","useState","setImmediate","MaybeFreeze","props","rest","size","Children","count","childrenWithFreeze","map","child","index","Component","Animated","Value","ref","onComponentRef","setNativeProps","render","enabled","createAnimatedComponent","active","activityState","isNativeStack","gestureResponseDistance","undefined","handleRef","viewConfig","validAttributes","style","display","setRef","start","end","top","bottom","event","nativeEvent","progress","closing","goingForward","useNativeDriver","hasTwoStates","styles","StyleSheet","create","headerSubview","position","right","flexDirection","alignItems","justifyContent","ScreenStackHeaderBackButtonImage","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderSearchBarView","ScreenContext","createContext","module","exports","isSearchBarAvailableForCurrentPlatform","View","useTransitionProgress","executeNativeBackPress"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n Animated,\n Image,\n ImageProps,\n Platform,\n requireNativeComponent,\n StyleSheet,\n UIManager,\n View,\n ViewProps,\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} from './types';\nimport {\n isSearchBarAvailableForCurrentPlatform,\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\n// @ts-expect-error nativeFabricUIManager is not yet included in the RN types\nconst ENABLE_FABRIC = !!global?.nativeFabricUIManager;\n\nconst FabricComponents = ENABLE_FABRIC ? require('./fabric') : {};\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\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<React.PropsWithChildren<\n ViewProps & { type?: HeaderSubviewTypes }\n>>;\nlet AnimatedNativeScreen: React.ComponentType<ScreenProps>;\nlet NativeSearchBar: React.ComponentType<SearchBarProps>;\nlet NativeFullWindowOverlay: React.ComponentType<View>;\n\nconst ScreensNativeModules = {\n get NativeScreen() {\n NativeScreenValue =\n NativeScreenValue ||\n FabricComponents.Screen ||\n requireNativeComponent('RNSScreen');\n return NativeScreenValue;\n },\n\n get NativeScreenContainer() {\n NativeScreenContainerValue =\n NativeScreenContainerValue ||\n FabricComponents.ScreenContainer ||\n requireNativeComponent('RNSScreenContainer');\n return NativeScreenContainerValue;\n },\n\n get NativeScreenNavigationContainer() {\n NativeScreenNavigationContainerValue =\n NativeScreenNavigationContainerValue ||\n (Platform.OS === 'ios'\n ? FabricComponents.ScreenNavigationContainer ||\n requireNativeComponent('RNSScreenNavigationContainer')\n : this.NativeScreenContainer);\n return NativeScreenNavigationContainerValue;\n },\n\n get NativeScreenStack() {\n NativeScreenStack =\n NativeScreenStack ||\n FabricComponents.ScreenStack ||\n requireNativeComponent('RNSScreenStack');\n return NativeScreenStack;\n },\n\n get NativeScreenStackHeaderConfig() {\n NativeScreenStackHeaderConfig =\n NativeScreenStackHeaderConfig ||\n FabricComponents.ScreenStackHeaderConfig ||\n requireNativeComponent('RNSScreenStackHeaderConfig');\n return NativeScreenStackHeaderConfig;\n },\n\n get NativeScreenStackHeaderSubview() {\n NativeScreenStackHeaderSubview =\n NativeScreenStackHeaderSubview ||\n FabricComponents.ScreenStackHeaderSubview ||\n requireNativeComponent('RNSScreenStackHeaderSubview');\n return NativeScreenStackHeaderSubview;\n },\n\n get NativeSearchBar() {\n NativeSearchBar =\n NativeSearchBar ||\n FabricComponents.SearchBar ||\n requireNativeComponent('RNSSearchBar');\n return NativeSearchBar;\n },\n\n get NativeFullWindowOverlay() {\n NativeFullWindowOverlay =\n NativeFullWindowOverlay ||\n FabricComponents.FullWindowOverlay ||\n 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 MaybeFreeze({ freeze, children }: FreezeWrapperProps) {\n if (ENABLE_FREEZE) {\n return <DelayedFreeze freeze={freeze}>{children}</DelayedFreeze>;\n } else {\n return <>{children}</>;\n }\n}\n\nfunction ScreenStack(props: ScreenStackProps) {\n if (ENABLE_FREEZE) {\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 <DelayedFreeze freeze={size - index > 1}>{child}</DelayedFreeze>\n ));\n return (\n <ScreensNativeModules.NativeScreenStack {...rest}>\n {childrenWithFreeze}\n </ScreensNativeModules.NativeScreenStack>\n );\n }\n return <ScreensNativeModules.NativeScreenStack {...props} />;\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 Screen 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 { enabled = ENABLE_SCREENS, ...rest } = this.props;\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 ...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 (!ENABLE_FABRIC) {\n if (ref?.viewConfig?.validAttributes?.style) {\n ref.viewConfig.validAttributes.style = {\n ...ref.viewConfig.validAttributes.style,\n display: false,\n };\n }\n this.setRef(ref);\n }\n };\n\n return (\n <MaybeFreeze freeze={activityState === 0}>\n <AnimatedNativeScreen\n {...props}\n activityState={activityState}\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 {!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 </MaybeFreeze>\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\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\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 `react-native-reanimated` (see `reanimated` folder in repo)\nconst ScreenContext = React.createContext(Screen);\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\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 SearchBar() {\n if (!isSearchBarAvailableForCurrentPlatform) {\n console.warn(\n 'Importing SearchBar is only valid on iOS and Android devices.'\n );\n return View;\n }\n\n return ScreensNativeModules.NativeSearchBar;\n },\n get FullWindowOverlay() {\n if (Platform.OS !== 'ios') {\n console.warn('Importing FullWindowOverlay is only valid on iOS devices.');\n return View;\n }\n\n return ScreensNativeModules.NativeFullWindowOverlay;\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 executeNativeBackPress,\n};\n"]}
1
+ {"version":3,"sources":["index.native.tsx"],"names":["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","NativeFullWindowOverlay","ScreensNativeModules","NativeScreen","NativeScreenContainer","NativeScreenNavigationContainer","DelayedFreeze","freeze","children","freezeState","setFreezeState","React","useState","setImmediate","MaybeFreeze","ScreenStack","props","rest","size","Children","count","childrenWithFreeze","map","child","index","Screen","Component","Animated","Value","ref","onComponentRef","setNativeProps","render","enabled","createAnimatedComponent","active","activityState","isNativeStack","gestureResponseDistance","undefined","handleRef","viewConfig","validAttributes","style","display","setRef","start","end","top","bottom","event","nativeEvent","progress","closing","goingForward","useNativeDriver","ScreenContainer","hasTwoStates","styles","StyleSheet","create","headerSubview","position","right","flexDirection","alignItems","justifyContent","ScreenStackHeaderBackButtonImage","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderSearchBarView","ScreenContext","createContext","module","exports","ScreenStackHeaderConfig","ScreenStackHeaderSubview","SearchBar","isSearchBarAvailableForCurrentPlatform","View","FullWindowOverlay","useTransitionProgress","executeNativeBackPress"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n Animated,\n Image,\n ImageProps,\n Platform,\n requireNativeComponent,\n StyleSheet,\n UIManager,\n View,\n ViewProps,\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} from './types';\nimport {\n isSearchBarAvailableForCurrentPlatform,\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\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<React.PropsWithChildren<\n ViewProps & { type?: HeaderSubviewTypes }\n>>;\nlet AnimatedNativeScreen: React.ComponentType<ScreenProps>;\nlet NativeSearchBar: React.ComponentType<SearchBarProps>;\nlet NativeFullWindowOverlay: React.ComponentType<View>;\n\nconst ScreensNativeModules = {\n get NativeScreen() {\n NativeScreenValue =\n NativeScreenValue || requireNativeComponent('RNSScreen');\n return NativeScreenValue;\n },\n\n get NativeScreenContainer() {\n NativeScreenContainerValue =\n NativeScreenContainerValue ||\n requireNativeComponent('RNSScreenContainer');\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 = NativeSearchBar || requireNativeComponent('RNSSearchBar');\n return NativeSearchBar;\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 MaybeFreeze({ freeze, children }: FreezeWrapperProps) {\n if (ENABLE_FREEZE) {\n return <DelayedFreeze freeze={freeze}>{children}</DelayedFreeze>;\n } else {\n return <>{children}</>;\n }\n}\n\nfunction ScreenStack(props: ScreenStackProps) {\n if (ENABLE_FREEZE) {\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 <DelayedFreeze freeze={size - index > 1}>{child}</DelayedFreeze>\n ));\n return (\n <ScreensNativeModules.NativeScreenStack {...rest}>\n {childrenWithFreeze}\n </ScreensNativeModules.NativeScreenStack>\n );\n }\n return <ScreensNativeModules.NativeScreenStack {...props} />;\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 Screen 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 { enabled = ENABLE_SCREENS, ...rest } = this.props;\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 ...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 <MaybeFreeze freeze={activityState === 0}>\n <AnimatedNativeScreen\n {...props}\n activityState={activityState}\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 {!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 </MaybeFreeze>\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\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\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 `react-native-reanimated` (see `reanimated` folder in repo)\nconst ScreenContext = React.createContext(Screen);\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\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 SearchBar() {\n if (!isSearchBarAvailableForCurrentPlatform) {\n console.warn(\n 'Importing SearchBar is only valid on iOS and Android devices.'\n );\n return View;\n }\n\n return ScreensNativeModules.NativeSearchBar;\n },\n get FullWindowOverlay() {\n if (Platform.OS !== 'ios') {\n console.warn('Importing FullWindowOverlay is only valid on iOS devices.');\n return View;\n }\n\n return ScreensNativeModules.NativeFullWindowOverlay;\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 executeNativeBackPress,\n};\n"]}
@@ -25,10 +25,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
25
25
 
26
26
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
27
27
 
28
- const AnimatedScreen = _reactNativeReanimated.default.createAnimatedComponent(_reactNativeScreens.Screen); // @ts-expect-error nativeFabricUIManager is not yet included in the RN types
28
+ const AnimatedScreen = _reactNativeReanimated.default.createAnimatedComponent(_reactNativeScreens.Screen); // We use prop added to global by reanimated since it seems safer than the one from RN. See:
29
+ // https://github.com/software-mansion/react-native-reanimated/blob/3fe8b35b05e82b2f2aefda1fb97799cf81e4b7bb/src/reanimated2/UpdateProps.ts#L46
30
+ // @ts-expect-error nativeFabricUIManager is not yet included in the RN types
29
31
 
30
32
 
31
- const ENABLE_FABRIC = !!((_global = global) !== null && _global !== void 0 && _global.nativeFabricUIManager);
33
+ const ENABLE_FABRIC = !!((_global = global) !== null && _global !== void 0 && _global._IS_FABRIC);
32
34
 
33
35
  const ReanimatedNativeStackScreen = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
34
36
  const {
@@ -1 +1 @@
1
- {"version":3,"sources":["ReanimatedNativeStackScreen.tsx"],"names":["AnimatedScreen","Animated","createAnimatedComponent","Screen","ENABLE_FABRIC","global","nativeFabricUIManager","ReanimatedNativeStackScreen","React","forwardRef","props","ref","children","rest","progress","closing","goingForward","event","value","Platform","OS","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAOA;;AACA;;;;;;;;;;;;AAEA,MAAMA,cAAc,GAAGC,+BAASC,uBAAT,CACpBC,0BADoB,CAAvB,C,CAIA;;;AACA,MAAMC,aAAa,GAAG,CAAC,aAACC,MAAD,oCAAC,QAAQC,qBAAT,CAAvB;;AAEA,MAAMC,2BAA2B,gBAAGC,eAAMC,UAAN,CAGlC,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAChB,QAAM;AAAEC,IAAAA,QAAF;AAAY,OAAGC;AAAf,MAAwBH,KAA9B;AAEA,QAAMI,QAAQ,GAAG,2CAAe,CAAf,CAAjB;AACA,QAAMC,OAAO,GAAG,2CAAe,CAAf,CAAhB;AACA,QAAMC,YAAY,GAAG,2CAAe,CAAf,CAArB;AAEA,sBACE,6BAAC,cAAD,CACE;AADF;AAEE,IAAA,GAAG,EAAEL,GAFP;AAGE,IAAA,8BAA8B,EAAE,qCAC7BM,KAAD,IAAwC;AACtC;;AACAH,MAAAA,QAAQ,CAACI,KAAT,GAAiBD,KAAK,CAACH,QAAvB;AACAC,MAAAA,OAAO,CAACG,KAAR,GAAgBD,KAAK,CAACF,OAAtB;AACAC,MAAAA,YAAY,CAACE,KAAb,GAAqBD,KAAK,CAACD,YAA3B;AACD,KAN6B,EAO9B,CACE;AACA;AACAG,0BAASC,EAAT,KAAgB,SAAhB,GACI,sBADJ,GAEI;AACFhB,IAAAA,aAAa,GACX,sBADW,GAEX,uBARN,CAP8B;AAHlC,KAqBMS,IArBN,gBAsBE,6BAAC,4CAAD,CAAqC,QAArC;AACE,IAAA,KAAK,EAAE;AACLC,MAAAA,QAAQ,EAAEA,QADL;AAELC,MAAAA,OAAO,EAAEA,OAFJ;AAGLC,MAAAA,YAAY,EAAEA;AAHT;AADT,KAMGJ,QANH,CAtBF,CADF;AAiCD,CA3CmC,CAApC;;AA6CAL,2BAA2B,CAACc,WAA5B,GAA0C,6BAA1C;eAEed,2B","sourcesContent":["import React from 'react';\nimport { Platform } from 'react-native';\nimport {\n Screen,\n ScreenProps,\n TransitionProgressEventType,\n} from 'react-native-screens';\n\n// @ts-ignore file to be used only if `react-native-reanimated` available in the project\nimport Animated, { useEvent, useSharedValue } from 'react-native-reanimated';\nimport ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';\n\nconst AnimatedScreen = Animated.createAnimatedComponent(\n (Screen as unknown) as React.ComponentClass\n);\n\n// @ts-expect-error nativeFabricUIManager is not yet included in the RN types\nconst ENABLE_FABRIC = !!global?.nativeFabricUIManager;\n\nconst ReanimatedNativeStackScreen = React.forwardRef<\n typeof AnimatedScreen,\n ScreenProps\n>((props, ref) => {\n const { children, ...rest } = props;\n\n const progress = useSharedValue(0);\n const closing = useSharedValue(0);\n const goingForward = useSharedValue(0);\n\n return (\n <AnimatedScreen\n // @ts-ignore some problems with ref and onTransitionProgressReanimated being \"fake\" prop for parsing of `useEvent` return value\n ref={ref}\n onTransitionProgressReanimated={useEvent(\n (event: TransitionProgressEventType) => {\n 'worklet';\n progress.value = event.progress;\n closing.value = event.closing;\n goingForward.value = event.goingForward;\n },\n [\n // This should not be necessary, but is not properly managed by `react-native-reanimated`\n // @ts-ignore wrong type\n Platform.OS === 'android'\n ? 'onTransitionProgress'\n : // for some reason there is a difference in required event name between architectures\n ENABLE_FABRIC\n ? 'onTransitionProgress'\n : 'topTransitionProgress',\n ]\n )}\n {...rest}>\n <ReanimatedTransitionProgressContext.Provider\n value={{\n progress: progress,\n closing: closing,\n goingForward: goingForward,\n }}>\n {children}\n </ReanimatedTransitionProgressContext.Provider>\n </AnimatedScreen>\n );\n});\n\nReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';\n\nexport default ReanimatedNativeStackScreen;\n"]}
1
+ {"version":3,"sources":["ReanimatedNativeStackScreen.tsx"],"names":["AnimatedScreen","Animated","createAnimatedComponent","Screen","ENABLE_FABRIC","global","_IS_FABRIC","ReanimatedNativeStackScreen","React","forwardRef","props","ref","children","rest","progress","closing","goingForward","event","value","Platform","OS","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAOA;;AACA;;;;;;;;;;;;AAEA,MAAMA,cAAc,GAAGC,+BAASC,uBAAT,CACpBC,0BADoB,CAAvB,C,CAIA;AACA;AACA;;;AACA,MAAMC,aAAa,GAAG,CAAC,aAACC,MAAD,oCAAC,QAAQC,UAAT,CAAvB;;AAEA,MAAMC,2BAA2B,gBAAGC,eAAMC,UAAN,CAGlC,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAChB,QAAM;AAAEC,IAAAA,QAAF;AAAY,OAAGC;AAAf,MAAwBH,KAA9B;AAEA,QAAMI,QAAQ,GAAG,2CAAe,CAAf,CAAjB;AACA,QAAMC,OAAO,GAAG,2CAAe,CAAf,CAAhB;AACA,QAAMC,YAAY,GAAG,2CAAe,CAAf,CAArB;AAEA,sBACE,6BAAC,cAAD,CACE;AADF;AAEE,IAAA,GAAG,EAAEL,GAFP;AAGE,IAAA,8BAA8B,EAAE,qCAC7BM,KAAD,IAAwC;AACtC;;AACAH,MAAAA,QAAQ,CAACI,KAAT,GAAiBD,KAAK,CAACH,QAAvB;AACAC,MAAAA,OAAO,CAACG,KAAR,GAAgBD,KAAK,CAACF,OAAtB;AACAC,MAAAA,YAAY,CAACE,KAAb,GAAqBD,KAAK,CAACD,YAA3B;AACD,KAN6B,EAO9B,CACE;AACA;AACAG,0BAASC,EAAT,KAAgB,SAAhB,GACI,sBADJ,GAEI;AACFhB,IAAAA,aAAa,GACX,sBADW,GAEX,uBARN,CAP8B;AAHlC,KAqBMS,IArBN,gBAsBE,6BAAC,4CAAD,CAAqC,QAArC;AACE,IAAA,KAAK,EAAE;AACLC,MAAAA,QAAQ,EAAEA,QADL;AAELC,MAAAA,OAAO,EAAEA,OAFJ;AAGLC,MAAAA,YAAY,EAAEA;AAHT;AADT,KAMGJ,QANH,CAtBF,CADF;AAiCD,CA3CmC,CAApC;;AA6CAL,2BAA2B,CAACc,WAA5B,GAA0C,6BAA1C;eAEed,2B","sourcesContent":["import React from 'react';\nimport { Platform } from 'react-native';\nimport {\n Screen,\n ScreenProps,\n TransitionProgressEventType,\n} from 'react-native-screens';\n\n// @ts-ignore file to be used only if `react-native-reanimated` available in the project\nimport Animated, { useEvent, useSharedValue } from 'react-native-reanimated';\nimport ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';\n\nconst AnimatedScreen = Animated.createAnimatedComponent(\n (Screen as unknown) as React.ComponentClass\n);\n\n// We use prop added to global by reanimated since it seems safer than the one from RN. See:\n// https://github.com/software-mansion/react-native-reanimated/blob/3fe8b35b05e82b2f2aefda1fb97799cf81e4b7bb/src/reanimated2/UpdateProps.ts#L46\n// @ts-expect-error nativeFabricUIManager is not yet included in the RN types\nconst ENABLE_FABRIC = !!global?._IS_FABRIC;\n\nconst ReanimatedNativeStackScreen = React.forwardRef<\n typeof AnimatedScreen,\n ScreenProps\n>((props, ref) => {\n const { children, ...rest } = props;\n\n const progress = useSharedValue(0);\n const closing = useSharedValue(0);\n const goingForward = useSharedValue(0);\n\n return (\n <AnimatedScreen\n // @ts-ignore some problems with ref and onTransitionProgressReanimated being \"fake\" prop for parsing of `useEvent` return value\n ref={ref}\n onTransitionProgressReanimated={useEvent(\n (event: TransitionProgressEventType) => {\n 'worklet';\n progress.value = event.progress;\n closing.value = event.closing;\n goingForward.value = event.goingForward;\n },\n [\n // This should not be necessary, but is not properly managed by `react-native-reanimated`\n // @ts-ignore wrong type\n Platform.OS === 'android'\n ? 'onTransitionProgress'\n : // for some reason there is a difference in required event name between architectures\n ENABLE_FABRIC\n ? 'onTransitionProgress'\n : 'topTransitionProgress',\n ]\n )}\n {...rest}>\n <ReanimatedTransitionProgressContext.Provider\n value={{\n progress: progress,\n closing: closing,\n goingForward: goingForward,\n }}>\n {children}\n </ReanimatedTransitionProgressContext.Provider>\n </AnimatedScreen>\n );\n});\n\nReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';\n\nexport default ReanimatedNativeStackScreen;\n"]}
@@ -1,5 +1,3 @@
1
- var _global;
2
-
3
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
2
 
5
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -13,10 +11,7 @@ import useTransitionProgress from './useTransitionProgress';
13
11
  import { isSearchBarAvailableForCurrentPlatform, executeNativeBackPress } from './utils'; // web implementation is taken from `index.tsx`
14
12
 
15
13
  const isPlatformSupported = Platform.OS === 'ios' || Platform.OS === 'android' || Platform.OS === 'windows';
16
- let ENABLE_SCREENS = isPlatformSupported; // @ts-expect-error nativeFabricUIManager is not yet included in the RN types
17
-
18
- const ENABLE_FABRIC = !!((_global = global) !== null && _global !== void 0 && _global.nativeFabricUIManager);
19
- const FabricComponents = ENABLE_FABRIC ? require('./fabric') : {};
14
+ let ENABLE_SCREENS = isPlatformSupported;
20
15
 
21
16
  function enableScreens(shouldEnableScreens = true) {
22
17
  ENABLE_SCREENS = isPlatformSupported && shouldEnableScreens;
@@ -59,42 +54,42 @@ let NativeSearchBar;
59
54
  let NativeFullWindowOverlay;
60
55
  const ScreensNativeModules = {
61
56
  get NativeScreen() {
62
- NativeScreenValue = NativeScreenValue || FabricComponents.Screen || requireNativeComponent('RNSScreen');
57
+ NativeScreenValue = NativeScreenValue || requireNativeComponent('RNSScreen');
63
58
  return NativeScreenValue;
64
59
  },
65
60
 
66
61
  get NativeScreenContainer() {
67
- NativeScreenContainerValue = NativeScreenContainerValue || FabricComponents.ScreenContainer || requireNativeComponent('RNSScreenContainer');
62
+ NativeScreenContainerValue = NativeScreenContainerValue || requireNativeComponent('RNSScreenContainer');
68
63
  return NativeScreenContainerValue;
69
64
  },
70
65
 
71
66
  get NativeScreenNavigationContainer() {
72
- NativeScreenNavigationContainerValue = NativeScreenNavigationContainerValue || (Platform.OS === 'ios' ? FabricComponents.ScreenNavigationContainer || requireNativeComponent('RNSScreenNavigationContainer') : this.NativeScreenContainer);
67
+ NativeScreenNavigationContainerValue = NativeScreenNavigationContainerValue || (Platform.OS === 'ios' ? requireNativeComponent('RNSScreenNavigationContainer') : this.NativeScreenContainer);
73
68
  return NativeScreenNavigationContainerValue;
74
69
  },
75
70
 
76
71
  get NativeScreenStack() {
77
- NativeScreenStack = NativeScreenStack || FabricComponents.ScreenStack || requireNativeComponent('RNSScreenStack');
72
+ NativeScreenStack = NativeScreenStack || requireNativeComponent('RNSScreenStack');
78
73
  return NativeScreenStack;
79
74
  },
80
75
 
81
76
  get NativeScreenStackHeaderConfig() {
82
- NativeScreenStackHeaderConfig = NativeScreenStackHeaderConfig || FabricComponents.ScreenStackHeaderConfig || requireNativeComponent('RNSScreenStackHeaderConfig');
77
+ NativeScreenStackHeaderConfig = NativeScreenStackHeaderConfig || requireNativeComponent('RNSScreenStackHeaderConfig');
83
78
  return NativeScreenStackHeaderConfig;
84
79
  },
85
80
 
86
81
  get NativeScreenStackHeaderSubview() {
87
- NativeScreenStackHeaderSubview = NativeScreenStackHeaderSubview || FabricComponents.ScreenStackHeaderSubview || requireNativeComponent('RNSScreenStackHeaderSubview');
82
+ NativeScreenStackHeaderSubview = NativeScreenStackHeaderSubview || requireNativeComponent('RNSScreenStackHeaderSubview');
88
83
  return NativeScreenStackHeaderSubview;
89
84
  },
90
85
 
91
86
  get NativeSearchBar() {
92
- NativeSearchBar = NativeSearchBar || FabricComponents.SearchBar || requireNativeComponent('RNSSearchBar');
87
+ NativeSearchBar = NativeSearchBar || requireNativeComponent('RNSSearchBar');
93
88
  return NativeSearchBar;
94
89
  },
95
90
 
96
91
  get NativeFullWindowOverlay() {
97
- NativeFullWindowOverlay = NativeFullWindowOverlay || FabricComponents.FullWindowOverlay || requireNativeComponent('RNSFullWindowOverlay');
92
+ NativeFullWindowOverlay = NativeFullWindowOverlay || requireNativeComponent('RNSFullWindowOverlay');
98
93
  return NativeFullWindowOverlay;
99
94
  }
100
95
 
@@ -208,15 +203,12 @@ class Screen extends React.Component {
208
203
  }
209
204
 
210
205
  const handleRef = ref => {
211
- if (!ENABLE_FABRIC) {
212
- var _ref$viewConfig, _ref$viewConfig$valid;
213
-
214
- if (ref !== null && ref !== void 0 && (_ref$viewConfig = ref.viewConfig) !== null && _ref$viewConfig !== void 0 && (_ref$viewConfig$valid = _ref$viewConfig.validAttributes) !== null && _ref$viewConfig$valid !== void 0 && _ref$viewConfig$valid.style) {
215
- ref.viewConfig.validAttributes.style = { ...ref.viewConfig.validAttributes.style,
216
- display: false
217
- };
218
- }
206
+ var _ref$viewConfig, _ref$viewConfig$valid;
219
207
 
208
+ if (ref !== null && ref !== void 0 && (_ref$viewConfig = ref.viewConfig) !== null && _ref$viewConfig !== void 0 && (_ref$viewConfig$valid = _ref$viewConfig.validAttributes) !== null && _ref$viewConfig$valid !== void 0 && _ref$viewConfig$valid.style) {
209
+ ref.viewConfig.validAttributes.style = { ...ref.viewConfig.validAttributes.style,
210
+ display: false
211
+ };
220
212
  this.setRef(ref);
221
213
  }
222
214
  };