react-native-screens 3.27.0 → 3.29.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 (35) hide show
  1. package/README.md +22 -0
  2. package/android/build.gradle +9 -0
  3. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +1 -1
  4. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +4 -1
  5. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +1 -0
  6. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +15 -0
  7. package/android/src/main/res/base/anim/rns_slide_in_from_left_ios.xml +5 -0
  8. package/android/src/main/res/base/anim/rns_slide_in_from_right_ios.xml +6 -0
  9. package/android/src/main/res/base/anim/rns_slide_out_to_left_ios.xml +5 -0
  10. package/android/src/main/res/base/anim/rns_slide_out_to_right_ios.xml +6 -0
  11. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +4 -0
  12. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +9 -9
  13. package/ios/RNSConvert.mm +2 -1
  14. package/ios/RNSScreen.mm +10 -0
  15. package/ios/RNSScreenStack.mm +71 -10
  16. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  17. package/lib/commonjs/index.native.js +9 -6
  18. package/lib/commonjs/index.native.js.map +1 -1
  19. package/lib/commonjs/native-stack/types.js.map +1 -1
  20. package/lib/commonjs/types.js.map +1 -1
  21. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  22. package/lib/module/index.native.js +7 -6
  23. package/lib/module/index.native.js.map +1 -1
  24. package/lib/module/native-stack/types.js.map +1 -1
  25. package/lib/module/types.js.map +1 -1
  26. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +1 -1
  27. package/lib/typescript/native-stack/types.d.ts +1 -0
  28. package/lib/typescript/types.d.ts +2 -1
  29. package/native-stack/README.md +1 -0
  30. package/package.json +1 -1
  31. package/src/fabric/ScreenNativeComponent.ts +2 -1
  32. package/src/index.native.tsx +7 -6
  33. package/src/native-stack/types.tsx +1 -0
  34. package/src/types.tsx +3 -1
  35. package/windows/RNScreens/Screen.h +2 -1
package/README.md CHANGED
@@ -29,6 +29,9 @@ For most people using an app built from the react-native template, that means ed
29
29
  You should add this code, which specifically discards any Activity state persisted during the Activity restart process, to avoid inconsistencies that lead to crashes.
30
30
  Please note that the override code should not be placed inside `MainActivityDelegate`, but rather directly in `MainActivity`.
31
31
 
32
+ <details open>
33
+ <summary>Java</summary>
34
+
32
35
  ```java
33
36
  import android.os.Bundle;
34
37
 
@@ -47,6 +50,25 @@ public class MainActivity extends ReactActivity {
47
50
  }
48
51
  }
49
52
  ```
53
+ </details>
54
+
55
+ <details>
56
+ <summary>Kotlin</summary>
57
+
58
+ ```kotlin
59
+ import android.os.Bundle;
60
+
61
+ class MainActivity: ReactActivity() {
62
+
63
+ //...code
64
+
65
+ //react-native-screens override
66
+ override fun onCreate(savedInstanceState: Bundle?) {
67
+ super.onCreate(null);
68
+ }
69
+ }
70
+ ```
71
+ </details>
50
72
 
51
73
  For people that must handle cases like this, there is [a more detailed discussion of the difficulties in a series of related comments](https://github.com/software-mansion/react-native-screens/issues/17#issuecomment-424704633).
52
74
 
@@ -50,6 +50,9 @@ android {
50
50
  def agpVersion = Version.ANDROID_GRADLE_PLUGIN_VERSION
51
51
  if (agpVersion.tokenize('.')[0].toInteger() >= 7) {
52
52
  namespace "com.swmansion.rnscreens"
53
+ buildFeatures {
54
+ buildConfig true
55
+ }
53
56
  }
54
57
 
55
58
  // Used to override the NDK path/version on internal CI or by allowing
@@ -130,4 +133,10 @@ dependencies {
130
133
  implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
131
134
  implementation 'com.google.android.material:material:1.9.0'
132
135
  implementation "androidx.core:core-ktx:1.8.0"
136
+
137
+ constraints {
138
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1") {
139
+ because("on older React Native versions this dependency conflicts with react-native-screens")
140
+ }
141
+ }
133
142
  }
@@ -272,7 +272,7 @@ class Screen constructor(context: ReactContext?) : FabricEnabledViewGroup(contex
272
272
  }
273
273
 
274
274
  enum class StackAnimation {
275
- DEFAULT, NONE, FADE, SLIDE_FROM_BOTTOM, SLIDE_FROM_RIGHT, SLIDE_FROM_LEFT, FADE_FROM_BOTTOM
275
+ DEFAULT, NONE, FADE, SLIDE_FROM_BOTTOM, SLIDE_FROM_RIGHT, SLIDE_FROM_LEFT, FADE_FROM_BOTTOM, IOS
276
276
  }
277
277
 
278
278
  enum class ReplaceAnimation {
@@ -144,6 +144,7 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
144
144
  R.anim.rns_slide_in_from_bottom, R.anim.rns_no_animation_medium
145
145
  )
146
146
  StackAnimation.FADE_FROM_BOTTOM -> it.setCustomAnimations(R.anim.rns_fade_from_bottom, R.anim.rns_no_animation_350)
147
+ StackAnimation.IOS -> it.setCustomAnimations(R.anim.rns_slide_in_from_right_ios, R.anim.rns_slide_out_to_left_ios)
147
148
  }
148
149
  } else {
149
150
  when (stackAnimation) {
@@ -156,6 +157,7 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
156
157
  R.anim.rns_no_animation_medium, R.anim.rns_slide_out_to_bottom
157
158
  )
158
159
  StackAnimation.FADE_FROM_BOTTOM -> it.setCustomAnimations(R.anim.rns_no_animation_250, R.anim.rns_fade_to_bottom)
160
+ StackAnimation.IOS -> it.setCustomAnimations(R.anim.rns_slide_in_from_left_ios, R.anim.rns_slide_out_to_right_ios)
159
161
  }
160
162
  }
161
163
  }
@@ -331,6 +333,7 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
331
333
 
332
334
  private fun needsDrawReordering(fragmentWrapper: ScreenFragmentWrapper): Boolean =
333
335
  fragmentWrapper.screen.stackAnimation === StackAnimation.SLIDE_FROM_BOTTOM ||
334
- fragmentWrapper.screen.stackAnimation === StackAnimation.FADE_FROM_BOTTOM
336
+ fragmentWrapper.screen.stackAnimation === StackAnimation.FADE_FROM_BOTTOM ||
337
+ fragmentWrapper.screen.stackAnimation === StackAnimation.IOS
335
338
  }
336
339
  }
@@ -77,6 +77,7 @@ class ScreenStackFragment : ScreenFragment, ScreenStackFragmentWrapper {
77
77
  }
78
78
 
79
79
  override fun onContainerUpdate() {
80
+ super.onContainerUpdate()
80
81
  screen.headerConfig?.onUpdate()
81
82
  }
82
83
 
@@ -4,6 +4,8 @@ import com.facebook.react.bridge.JSApplicationIllegalArgumentException
4
4
  import com.facebook.react.bridge.ReadableMap
5
5
  import com.facebook.react.common.MapBuilder
6
6
  import com.facebook.react.module.annotations.ReactModule
7
+ import com.facebook.react.uimanager.ReactStylesDiffMap
8
+ import com.facebook.react.uimanager.StateWrapper
7
9
  import com.facebook.react.uimanager.ThemedReactContext
8
10
  import com.facebook.react.uimanager.ViewGroupManager
9
11
  import com.facebook.react.uimanager.ViewManagerDelegate
@@ -35,6 +37,18 @@ class ScreenViewManager : ViewGroupManager<Screen>(), RNSScreenManagerInterface<
35
37
  setActivityState(view, activityState.toInt())
36
38
  }
37
39
 
40
+ override fun updateState(
41
+ view: Screen,
42
+ props: ReactStylesDiffMap?,
43
+ stateWrapper: StateWrapper?
44
+ ): Any? {
45
+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
46
+ // fabricViewStateManager should never be null in Fabric. The null check is only for Paper's empty impl.
47
+ view.fabricViewStateManager?.setStateWrapper(stateWrapper)
48
+ }
49
+ return super.updateState(view, props, stateWrapper)
50
+ }
51
+
38
52
  @ReactProp(name = "activityState")
39
53
  fun setActivityState(view: Screen, activityState: Int) {
40
54
  if (activityState == -1) {
@@ -73,6 +87,7 @@ class ScreenViewManager : ViewGroupManager<Screen>(), RNSScreenManagerInterface<
73
87
  "slide_from_left" -> Screen.StackAnimation.SLIDE_FROM_LEFT
74
88
  "slide_from_bottom" -> Screen.StackAnimation.SLIDE_FROM_BOTTOM
75
89
  "fade_from_bottom" -> Screen.StackAnimation.FADE_FROM_BOTTOM
90
+ "ios" -> Screen.StackAnimation.IOS
76
91
  else -> throw JSApplicationIllegalArgumentException("Unknown animation type $animation")
77
92
  }
78
93
  }
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
3
+ android:duration="@android:integer/config_shortAnimTime"
4
+ android:fromXDelta="-30%"
5
+ android:toXDelta="0%" />
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
3
+ android:duration="@android:integer/config_shortAnimTime"
4
+ android:interpolator="@android:interpolator/accelerate_decelerate"
5
+ android:fromXDelta="100%"
6
+ android:toXDelta="0%" />
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
3
+ android:duration="@android:integer/config_shortAnimTime"
4
+ android:fromXDelta="0%"
5
+ android:toXDelta="-30%"/>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
3
+ android:duration="@android:integer/config_shortAnimTime"
4
+ android:interpolator="@android:interpolator/accelerate_decelerate"
5
+ android:fromXDelta="0%"
6
+ android:toXDelta="100%"/>
@@ -2,8 +2,12 @@ package com.swmansion.rnscreens
2
2
 
3
3
  import android.view.ViewGroup
4
4
  import com.facebook.react.bridge.ReactContext
5
+ import com.facebook.react.uimanager.FabricViewStateManager
5
6
 
6
7
  abstract class FabricEnabledViewGroup constructor(context: ReactContext?) : ViewGroup(context) {
8
+
9
+ val fabricViewStateManager get() = null as FabricViewStateManager?
10
+
7
11
  protected fun updateScreenSizeFabric(width: Int, height: Int) {
8
12
  // do nothing
9
13
  }
@@ -12,24 +12,24 @@ class RNSScreenComponentDescriptor final
12
12
  public:
13
13
  using ConcreteComponentDescriptor::ConcreteComponentDescriptor;
14
14
 
15
- void adopt(ShadowNode::Unshared const &shadowNode) const override {
15
+ void adopt(ShadowNode& shadowNode) const override {
16
16
  react_native_assert(
17
- std::dynamic_pointer_cast<RNSScreenShadowNode>(shadowNode));
18
- auto screenShadowNode =
19
- std::static_pointer_cast<RNSScreenShadowNode>(shadowNode);
17
+ dynamic_cast<RNSScreenShadowNode*>(&shadowNode));
18
+ auto& screenShadowNode =
19
+ static_cast<RNSScreenShadowNode&>(shadowNode);
20
20
 
21
21
  react_native_assert(
22
- std::dynamic_pointer_cast<YogaLayoutableShadowNode>(screenShadowNode));
23
- auto layoutableShadowNode =
24
- std::static_pointer_cast<YogaLayoutableShadowNode>(screenShadowNode);
22
+ dynamic_cast<YogaLayoutableShadowNode*>(&screenShadowNode));
23
+ auto& layoutableShadowNode =
24
+ dynamic_cast<YogaLayoutableShadowNode&>(screenShadowNode);
25
25
 
26
26
  auto state =
27
27
  std::static_pointer_cast<const RNSScreenShadowNode::ConcreteState>(
28
- shadowNode->getState());
28
+ shadowNode.getState());
29
29
  auto stateData = state->getData();
30
30
 
31
31
  if (stateData.frameSize.width != 0 && stateData.frameSize.height != 0) {
32
- layoutableShadowNode->setSize(
32
+ layoutableShadowNode.setSize(
33
33
  Size{stateData.frameSize.width, stateData.frameSize.height});
34
34
  }
35
35
 
package/ios/RNSConvert.mm CHANGED
@@ -27,9 +27,10 @@
27
27
  + (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:(react::RNSScreenStackAnimation)stackAnimation
28
28
  {
29
29
  switch (stackAnimation) {
30
- // these three are intentionally grouped
30
+ // these four are intentionally grouped
31
31
  case react::RNSScreenStackAnimation::Slide_from_right:
32
32
  case react::RNSScreenStackAnimation::Slide_from_left:
33
+ case react::RNSScreenStackAnimation::Ios:
33
34
  case react::RNSScreenStackAnimation::Default:
34
35
  return RNSScreenStackAnimationDefault;
35
36
  case react::RNSScreenStackAnimation::Flip:
package/ios/RNSScreen.mm CHANGED
@@ -1423,6 +1423,15 @@ Class<RCTComponentViewProtocol> RNSScreenCls(void)
1423
1423
  // we don't want to send `scrollViewDidEndDecelerating` event to JS before the JS thread is ready
1424
1424
  return;
1425
1425
  }
1426
+
1427
+ if ([NSStringFromClass([view class]) isEqualToString:@"AVPlayerView"]) {
1428
+ // Traversing through AVPlayerView is an uncommon edge case that causes the disappearing screen
1429
+ // to an excessive traversal through all video player elements
1430
+ // (e.g., for react-native-video, this includes all controls and additional video views).
1431
+ // Thus, we want to avoid unnecessary traversals through these views.
1432
+ return;
1433
+ }
1434
+
1426
1435
  if ([view isKindOfClass:[UIScrollView class]] &&
1427
1436
  ([[(UIScrollView *)view delegate] respondsToSelector:@selector(scrollViewDidEndDecelerating:)])) {
1428
1437
  [[(UIScrollView *)view delegate] scrollViewDidEndDecelerating:(id)view];
@@ -1543,6 +1552,7 @@ RCT_ENUM_CONVERTER(
1543
1552
  @"slide_from_bottom" : @(RNSScreenStackAnimationSlideFromBottom),
1544
1553
  @"slide_from_right" : @(RNSScreenStackAnimationDefault),
1545
1554
  @"slide_from_left" : @(RNSScreenStackAnimationDefault),
1555
+ @"ios" : @(RNSScreenStackAnimationDefault),
1546
1556
  }),
1547
1557
  RNSScreenStackAnimationDefault,
1548
1558
  integerValue)
@@ -323,6 +323,38 @@ namespace react = facebook::react;
323
323
  }
324
324
  }
325
325
 
326
+ + (UIViewController *)findTopMostPresentedViewControllerFromViewController:(UIViewController *)controller
327
+ {
328
+ auto presentedVc = controller;
329
+ while (presentedVc.presentedViewController != nil) {
330
+ presentedVc = presentedVc.presentedViewController;
331
+ }
332
+ return presentedVc;
333
+ }
334
+
335
+ - (UIViewController *)findReactRootViewController
336
+ {
337
+ UIView *parent = self;
338
+ while (parent) {
339
+ parent = parent.reactSuperview;
340
+ if (parent.isReactRootView) {
341
+ return parent.reactViewController;
342
+ }
343
+ }
344
+ return nil;
345
+ }
346
+
347
+ - (UIViewController *)lastFromPresentedViewControllerChainStartingFrom:(UIViewController *)vc
348
+ {
349
+ UIViewController *lastNonNullVc = vc;
350
+ UIViewController *lastVc = vc.presentedViewController;
351
+ while (lastVc != nil) {
352
+ lastNonNullVc = lastVc;
353
+ lastVc = lastVc.presentedViewController;
354
+ }
355
+ return lastNonNullVc;
356
+ }
357
+
326
358
  - (void)setModalViewControllers:(NSArray<UIViewController *> *)controllers
327
359
  {
328
360
  // prevent re-entry
@@ -349,9 +381,15 @@ namespace react = facebook::react;
349
381
  NSMutableArray<UIViewController *> *newControllers = [NSMutableArray arrayWithArray:controllers];
350
382
  [newControllers removeObjectsInArray:_presentedModals];
351
383
 
352
- // find bottom-most controller that should stay on the stack for the duration of transition
384
+ // We need to find bottom-most view controller that should stay on the stack
385
+ // for the duration of transition. There are couple of scenarios:
386
+ // (1) No modals are presented or all modals were presented by this RNSNavigationController,
387
+ // (2) There are modals presented by other RNSNavigationControllers (nested/outer)
388
+
389
+ // Last controller that is common for both _presentedModals & controllers
390
+ __block UIViewController *changeRootController = _controller;
391
+ // Last common controller index + 1
353
392
  NSUInteger changeRootIndex = 0;
354
- UIViewController *changeRootController = _controller;
355
393
  for (NSUInteger i = 0; i < MIN(_presentedModals.count, controllers.count); i++) {
356
394
  if (_presentedModals[i] == controllers[i]) {
357
395
  changeRootController = controllers[i];
@@ -403,6 +441,7 @@ namespace react = facebook::react;
403
441
  return;
404
442
  } else {
405
443
  UIViewController *previous = changeRootController;
444
+
406
445
  for (NSUInteger i = changeRootIndex; i < controllers.count; i++) {
407
446
  UIViewController *next = controllers[i];
408
447
  BOOL lastModal = (i == controllers.count - 1);
@@ -440,16 +479,38 @@ namespace react = facebook::react;
440
479
  }
441
480
  };
442
481
 
443
- if (changeRootController.presentedViewController != nil &&
444
- [_presentedModals containsObject:changeRootController.presentedViewController]) {
482
+ UIViewController *firstModalToBeDismissed = changeRootController.presentedViewController;
483
+ if (firstModalToBeDismissed != nil) {
445
484
  BOOL shouldAnimate = changeRootIndex == controllers.count &&
446
- [changeRootController.presentedViewController isKindOfClass:[RNSScreen class]] &&
447
- ((RNSScreen *)changeRootController.presentedViewController).screenView.stackAnimation !=
448
- RNSScreenStackAnimationNone;
449
- [changeRootController dismissViewControllerAnimated:shouldAnimate completion:finish];
450
- } else {
451
- finish();
485
+ [firstModalToBeDismissed isKindOfClass:[RNSScreen class]] &&
486
+ ((RNSScreen *)firstModalToBeDismissed).screenView.stackAnimation != RNSScreenStackAnimationNone;
487
+
488
+ if ([_presentedModals containsObject:firstModalToBeDismissed]) {
489
+ // We dismiss every VC that was presented by changeRootController VC or its descendant.
490
+ // After the series of dismissals is completed we run completion block in which
491
+ // we present modals on top of changeRootController (which may be the this stack VC)
492
+ [changeRootController dismissViewControllerAnimated:shouldAnimate completion:finish];
493
+ return;
494
+ }
495
+
496
+ UIViewController *lastModalVc = [self lastFromPresentedViewControllerChainStartingFrom:firstModalToBeDismissed];
497
+
498
+ if (lastModalVc != firstModalToBeDismissed) {
499
+ [lastModalVc dismissViewControllerAnimated:shouldAnimate completion:finish];
500
+ return;
501
+ }
502
+ }
503
+
504
+ // changeRootController does not have presentedViewController but it does not mean that no modals are in presentation,
505
+ // so we need to find top-level controller manually
506
+ UIViewController *reactRootVc = [self findReactRootViewController];
507
+ UIViewController *topMostVc = [RNSScreenStackView findTopMostPresentedViewControllerFromViewController:reactRootVc];
508
+
509
+ if (topMostVc != reactRootVc) {
510
+ changeRootController = topMostVc;
452
511
  }
512
+
513
+ finish();
453
514
  }
454
515
 
455
516
  - (void)setPushViewControllers:(NSArray<UIViewController *> *)controllers
@@ -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 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"}
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 | 'ios';\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,GA2Fe,IAAAC,+BAAsB,EAAc,WAAW,EAAE;EAC9DC,aAAa,EAAE;AACjB,CAAC,CAAC;AAAAC,OAAA,CAAAJ,OAAA,GAAAC,QAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _react = _interopRequireDefault(require("react"));
3
+ var _react = _interopRequireWildcard(require("react"));
4
4
  var _reactNative = require("react-native");
5
5
  var _reactFreeze = require("react-freeze");
6
6
  var _package = require("react-native/package.json");
@@ -8,6 +8,8 @@ var _TransitionProgressContext = _interopRequireDefault(require("./TransitionPro
8
8
  var _useTransitionProgress = _interopRequireDefault(require("./useTransitionProgress"));
9
9
  var _utils = require("./utils");
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
13
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
12
14
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
15
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
@@ -98,13 +100,14 @@ function DelayedFreeze(_ref) {
98
100
  } = _ref;
99
101
  // flag used for determining whether freeze should be enabled
100
102
  const [freezeState, setFreezeState] = _react.default.useState(false);
101
- if (freeze !== freezeState) {
102
- // setImmediate is executed at the end of the JS execution block.
103
- // Used here for changing the state right after the render.
104
- setImmediate(() => {
103
+ (0, _react.useEffect)(() => {
104
+ const id = setImmediate(() => {
105
105
  setFreezeState(freeze);
106
106
  });
107
- }
107
+ return () => {
108
+ clearImmediate(id);
109
+ };
110
+ }, [freeze]);
108
111
  return /*#__PURE__*/_react.default.createElement(_reactFreeze.Freeze, {
109
112
  freeze: freeze ? freezeState : false
110
113
  }, children);
@@ -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","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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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactFreeze","_package","_TransitionProgressContext","_interopRequireDefault","_useTransitionProgress","_utils","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","_defineProperty","value","_toPropertyKey","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","useEffect","id","setImmediate","clearImmediate","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, { useEffect, 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 useEffect(() => {\n const id = setImmediate(() => {\n setFreezeState(freeze);\n });\n return () => {\n clearImmediate(id);\n }\n }, [freeze])\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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"}