react-native-screens 4.0.0-beta.0 → 4.0.0-beta.10

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 (216) hide show
  1. package/README.md +1 -1
  2. package/android/build.gradle +26 -6
  3. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +61 -0
  4. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +4 -3
  5. package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +54 -1
  6. package/android/src/main/java/com/swmansion/rnscreens/InsetsObserverProxy.kt +2 -4
  7. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +59 -36
  8. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +26 -5
  9. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +37 -17
  10. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +1 -2
  11. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigShadowNode.kt +25 -0
  12. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +18 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +8 -2
  14. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +2 -1
  15. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +3 -3
  16. package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +17 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/utils/PaddingBundle.kt +8 -0
  18. package/android/src/main/jni/rnscreens.h +2 -0
  19. package/android/src/main/res/base/anim/rns_ios_from_left_background_close.xml +5 -0
  20. package/android/src/main/res/base/anim/{rns_slide_out_to_left_ios.xml → rns_ios_from_left_background_open.xml} +1 -1
  21. package/android/src/main/res/base/anim/rns_ios_from_left_foreground_close.xml +6 -0
  22. package/android/src/main/res/base/anim/rns_ios_from_left_foreground_open.xml +6 -0
  23. package/android/src/main/res/base/anim/rns_ios_from_right_background_open.xml +5 -0
  24. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +39 -0
  25. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +1 -1
  26. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +5 -99
  27. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +101 -0
  28. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +2 -0
  29. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h +44 -0
  30. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.cpp +8 -0
  31. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.h +32 -0
  32. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.cpp +23 -0
  33. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.h +50 -0
  34. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewComponentDescriptor.h +27 -0
  35. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.cpp +8 -0
  36. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.h +32 -0
  37. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.cpp +15 -0
  38. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.h +40 -0
  39. package/ios/RNSConvert.mm +4 -2
  40. package/ios/RNSFullWindowOverlay.mm +6 -0
  41. package/ios/RNSModalScreen.mm +7 -0
  42. package/ios/RNSScreen.h +9 -0
  43. package/ios/RNSScreen.mm +46 -8
  44. package/ios/RNSScreenContainer.mm +6 -0
  45. package/ios/RNSScreenContentWrapper.mm +6 -0
  46. package/ios/RNSScreenFooter.mm +6 -0
  47. package/ios/RNSScreenNavigationContainer.mm +7 -0
  48. package/ios/RNSScreenStack.mm +86 -8
  49. package/ios/RNSScreenStackHeaderConfig.h +63 -0
  50. package/ios/RNSScreenStackHeaderConfig.mm +133 -6
  51. package/ios/RNSScreenStackHeaderSubview.mm +32 -3
  52. package/ios/RNSSearchBar.mm +7 -0
  53. package/ios/utils/UINavigationBar+RNSUtility.h +37 -0
  54. package/ios/utils/UINavigationBar+RNSUtility.mm +44 -0
  55. package/ios/utils/UIView+RNSUtility.mm +0 -1
  56. package/lib/commonjs/TransitionProgressContext.js +1 -0
  57. package/lib/commonjs/TransitionProgressContext.js.map +1 -1
  58. package/lib/commonjs/components/Screen.js +111 -5
  59. package/lib/commonjs/components/Screen.js.map +1 -1
  60. package/lib/commonjs/components/Screen.web.js +2 -0
  61. package/lib/commonjs/components/Screen.web.js.map +1 -1
  62. package/lib/commonjs/components/ScreenContainer.js +1 -0
  63. package/lib/commonjs/components/ScreenContainer.js.map +1 -1
  64. package/lib/commonjs/components/ScreenContentWrapper.web.js +11 -0
  65. package/lib/commonjs/components/ScreenContentWrapper.web.js.map +1 -0
  66. package/lib/commonjs/components/ScreenFooter.web.js +11 -0
  67. package/lib/commonjs/components/ScreenFooter.web.js.map +1 -0
  68. package/lib/commonjs/components/ScreenStack.js +1 -0
  69. package/lib/commonjs/components/ScreenStack.js.map +1 -1
  70. package/lib/commonjs/components/ScreenStackHeaderConfig.js +54 -17
  71. package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -1
  72. package/lib/commonjs/components/SearchBar.js +1 -0
  73. package/lib/commonjs/components/SearchBar.js.map +1 -1
  74. package/lib/commonjs/components/helpers/usePrevious.js +15 -0
  75. package/lib/commonjs/components/helpers/usePrevious.js.map +1 -0
  76. package/lib/commonjs/core.js +1 -0
  77. package/lib/commonjs/core.js.map +1 -1
  78. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +1 -0
  79. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  80. package/lib/commonjs/fabric/ModalScreenNativeComponent.js +1 -0
  81. package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -1
  82. package/lib/commonjs/fabric/NativeScreensModule.js +2 -1
  83. package/lib/commonjs/fabric/NativeScreensModule.js.map +1 -1
  84. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +1 -0
  85. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
  86. package/lib/commonjs/fabric/ScreenNativeComponent.js +1 -0
  87. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  88. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +1 -0
  89. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  90. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +4 -1
  91. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  92. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +4 -1
  93. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  94. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +1 -0
  95. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
  96. package/lib/commonjs/fabric/SearchBarNativeComponent.js +2 -2
  97. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
  98. package/lib/commonjs/native-stack/contexts/GHContext.js +1 -0
  99. package/lib/commonjs/native-stack/contexts/GHContext.js.map +1 -1
  100. package/lib/commonjs/native-stack/views/NativeStackView.js +7 -13
  101. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  102. package/lib/module/TransitionProgressContext.js +2 -0
  103. package/lib/module/TransitionProgressContext.js.map +1 -1
  104. package/lib/module/components/Screen.js +112 -5
  105. package/lib/module/components/Screen.js.map +1 -1
  106. package/lib/module/components/Screen.web.js +3 -0
  107. package/lib/module/components/Screen.web.js.map +1 -1
  108. package/lib/module/components/ScreenContainer.js +2 -0
  109. package/lib/module/components/ScreenContainer.js.map +1 -1
  110. package/lib/module/components/ScreenContentWrapper.web.js +5 -0
  111. package/lib/module/components/ScreenContentWrapper.web.js.map +1 -0
  112. package/lib/module/components/ScreenFooter.web.js +5 -0
  113. package/lib/module/components/ScreenFooter.web.js.map +1 -0
  114. package/lib/module/components/ScreenStack.js +2 -0
  115. package/lib/module/components/ScreenStack.js.map +1 -1
  116. package/lib/module/components/ScreenStackHeaderConfig.js +52 -16
  117. package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -1
  118. package/lib/module/components/SearchBar.js +2 -0
  119. package/lib/module/components/SearchBar.js.map +1 -1
  120. package/lib/module/components/helpers/usePrevious.js +9 -0
  121. package/lib/module/components/helpers/usePrevious.js.map +1 -0
  122. package/lib/module/core.js +2 -0
  123. package/lib/module/core.js.map +1 -1
  124. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +2 -0
  125. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  126. package/lib/module/fabric/ModalScreenNativeComponent.js +2 -0
  127. package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -1
  128. package/lib/module/fabric/NativeScreensModule.js +2 -1
  129. package/lib/module/fabric/NativeScreensModule.js.map +1 -1
  130. package/lib/module/fabric/ScreenContainerNativeComponent.js +2 -0
  131. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
  132. package/lib/module/fabric/ScreenNativeComponent.js +2 -0
  133. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  134. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +2 -0
  135. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  136. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +5 -1
  137. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  138. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +5 -1
  139. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  140. package/lib/module/fabric/ScreenStackNativeComponent.js +2 -0
  141. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
  142. package/lib/module/fabric/SearchBarNativeComponent.js +2 -0
  143. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
  144. package/lib/module/index.js +6 -6
  145. package/lib/module/native-stack/contexts/GHContext.js +2 -0
  146. package/lib/module/native-stack/contexts/GHContext.js.map +1 -1
  147. package/lib/module/native-stack/views/NativeStackView.js +7 -13
  148. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  149. package/lib/typescript/TransitionProgressContext.d.ts.map +1 -1
  150. package/lib/typescript/components/Screen.d.ts +5 -1
  151. package/lib/typescript/components/Screen.d.ts.map +1 -1
  152. package/lib/typescript/components/Screen.web.d.ts.map +1 -1
  153. package/lib/typescript/components/ScreenContainer.d.ts.map +1 -1
  154. package/lib/typescript/components/ScreenContentWrapper.web.d.ts +5 -0
  155. package/lib/typescript/components/ScreenContentWrapper.web.d.ts.map +1 -0
  156. package/lib/typescript/components/ScreenFooter.web.d.ts +5 -0
  157. package/lib/typescript/components/ScreenFooter.web.d.ts.map +1 -0
  158. package/lib/typescript/components/ScreenStack.d.ts.map +1 -1
  159. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +1 -1
  160. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -1
  161. package/lib/typescript/components/SearchBar.d.ts.map +1 -1
  162. package/lib/typescript/components/helpers/usePrevious.d.ts +2 -0
  163. package/lib/typescript/components/helpers/usePrevious.d.ts.map +1 -0
  164. package/lib/typescript/core.d.ts.map +1 -1
  165. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts.map +1 -1
  166. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +1 -0
  167. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -1
  168. package/lib/typescript/fabric/NativeScreensModule.d.ts.map +1 -1
  169. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts.map +1 -1
  170. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +1 -1
  171. package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -1
  172. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts.map +1 -1
  173. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
  174. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
  175. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -1
  176. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -1
  177. package/lib/typescript/index.d.ts +18 -0
  178. package/lib/typescript/index.d.ts.map +1 -1
  179. package/lib/typescript/native-stack/contexts/GHContext.d.ts.map +1 -1
  180. package/lib/typescript/native-stack/types.d.ts +14 -5
  181. package/lib/typescript/native-stack/types.d.ts.map +1 -1
  182. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
  183. package/lib/typescript/types.d.ts +56 -11
  184. package/lib/typescript/types.d.ts.map +1 -1
  185. package/native-stack/README.md +30 -5
  186. package/package.json +1 -1
  187. package/src/TransitionProgressContext.tsx +2 -0
  188. package/src/components/Screen.tsx +161 -8
  189. package/src/components/Screen.web.tsx +3 -0
  190. package/src/components/ScreenContainer.tsx +2 -0
  191. package/src/components/ScreenContentWrapper.web.tsx +6 -0
  192. package/src/components/ScreenFooter.web.tsx +6 -0
  193. package/src/components/ScreenStack.tsx +2 -0
  194. package/src/components/ScreenStackHeaderConfig.tsx +61 -26
  195. package/src/components/SearchBar.tsx +2 -0
  196. package/src/components/helpers/usePrevious.tsx +11 -0
  197. package/src/core.ts +2 -0
  198. package/src/fabric/FullWindowOverlayNativeComponent.ts +2 -0
  199. package/src/fabric/ModalScreenNativeComponent.ts +3 -0
  200. package/src/fabric/NativeScreensModule.ts +2 -0
  201. package/src/fabric/ScreenContainerNativeComponent.ts +2 -0
  202. package/src/fabric/ScreenNativeComponent.ts +4 -1
  203. package/src/fabric/ScreenNavigationContainerNativeComponent.ts +2 -0
  204. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +5 -1
  205. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +5 -1
  206. package/src/fabric/ScreenStackNativeComponent.ts +2 -0
  207. package/src/fabric/SearchBarNativeComponent.ts +2 -0
  208. package/src/index.tsx +6 -6
  209. package/src/native-stack/contexts/GHContext.tsx +2 -0
  210. package/src/native-stack/types.tsx +14 -5
  211. package/src/native-stack/views/NativeStackView.tsx +11 -16
  212. package/src/types.tsx +63 -11
  213. package/windows/RNScreens/Screen.h +2 -1
  214. /package/android/src/main/res/base/anim/{rns_slide_in_from_left_ios.xml → rns_ios_from_right_background_close.xml} +0 -0
  215. /package/android/src/main/res/base/anim/{rns_slide_out_to_right_ios.xml → rns_ios_from_right_foreground_close.xml} +0 -0
  216. /package/android/src/main/res/base/anim/{rns_slide_in_from_right_ios.xml → rns_ios_from_right_foreground_open.xml} +0 -0
@@ -8,6 +8,7 @@
8
8
  #import <react/renderer/components/rnscreens/EventEmitters.h>
9
9
  #import <react/renderer/components/rnscreens/Props.h>
10
10
  #import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
11
+ #import <rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h>
11
12
  #import "RCTImageComponentView+RNSScreenStackHeaderConfig.h"
12
13
  #else
13
14
  #import <React/RCTImageView.h>
@@ -55,13 +56,23 @@ namespace react = facebook::react;
55
56
 
56
57
  @implementation RNSScreenStackHeaderConfig {
57
58
  NSMutableArray<RNSScreenStackHeaderSubview *> *_reactSubviews;
59
+ NSDirectionalEdgeInsets _lastHeaderInsets;
58
60
  #ifdef RCT_NEW_ARCH_ENABLED
59
61
  BOOL _initialPropsSet;
62
+ react::RNSScreenStackHeaderConfigShadowNode::ConcreteState::Shared _state;
60
63
  #else
64
+ __weak RCTBridge *_bridge;
61
65
  #endif
62
66
  }
63
67
 
64
68
  #ifdef RCT_NEW_ARCH_ENABLED
69
+
70
+ // Needed because of this: https://github.com/facebook/react-native/pull/37274
71
+ + (void)load
72
+ {
73
+ [super load];
74
+ }
75
+
65
76
  - (instancetype)initWithFrame:(CGRect)frame
66
77
  {
67
78
  if (self = [super initWithFrame:frame]) {
@@ -82,6 +93,16 @@ namespace react = facebook::react;
82
93
  }
83
94
  return self;
84
95
  }
96
+
97
+ - (instancetype)initWithBridge:(RCTBridge *)bridge
98
+ {
99
+ if (self = [super init]) {
100
+ _bridge = bridge;
101
+ _translucent = YES;
102
+ [self initProps];
103
+ }
104
+ return self;
105
+ }
85
106
  #endif
86
107
 
87
108
  - (void)initProps
@@ -164,6 +185,51 @@ namespace react = facebook::react;
164
185
  [navctr.view setNeedsLayout];
165
186
  }
166
187
 
188
+ - (void)updateHeaderInsetsInShadowTreeTo:(NSDirectionalEdgeInsets)insets
189
+ {
190
+ if (_lastHeaderInsets.leading != insets.leading || _lastHeaderInsets.trailing != insets.trailing) {
191
+ #ifdef RCT_NEW_ARCH_ENABLED
192
+ auto newState = react::RNSScreenStackHeaderConfigState{insets.leading, insets.trailing};
193
+ _state->updateState(std::move(newState));
194
+ _lastHeaderInsets = std::move(insets);
195
+ #else
196
+ [_bridge.uiManager setLocalData:[[RNSHeaderConfigInsetsPayload alloc] initWithInsets:insets] forView:self];
197
+ _lastHeaderInsets = std::move(insets);
198
+ #endif // RCT_NEW_ARCH_ENABLED
199
+ }
200
+ }
201
+
202
+ - (BOOL)hasSubviewOfType:(RNSScreenStackHeaderSubviewType)type
203
+ {
204
+ for (RNSScreenStackHeaderSubview *subview in _reactSubviews) {
205
+ if (subview.type == type) {
206
+ return YES;
207
+ }
208
+ }
209
+
210
+ return NO;
211
+ }
212
+
213
+ - (BOOL)hasSubviewLeft
214
+ {
215
+ return [self hasSubviewOfType:RNSScreenStackHeaderSubviewTypeLeft];
216
+ }
217
+
218
+ - (BOOL)shouldHeaderBeVisible
219
+ {
220
+ #ifdef RCT_NEW_ARCH_ENABLED
221
+ return self.show;
222
+ #else
223
+ return !self.hide;
224
+ #endif // RCT_NEW_ARCH_ENABLED
225
+ }
226
+
227
+ - (BOOL)shouldBackButtonBeVisibleInNavigationBar:(nullable UINavigationBar *)navBar
228
+ {
229
+ return navBar.backItem != nil && !self.hideBackButton &&
230
+ !(self.backButtonInCustomView == false && self.hasSubviewLeft);
231
+ }
232
+
167
233
  + (void)setAnimatedConfig:(UIViewController *)vc withConfig:(RNSScreenStackHeaderConfig *)config
168
234
  {
169
235
  UINavigationBar *navbar = ((UINavigationController *)vc.parentViewController).navigationBar;
@@ -464,16 +530,20 @@ namespace react = facebook::react;
464
530
  UINavigationItem *navitem = vc.navigationItem;
465
531
  UINavigationController *navctr = (UINavigationController *)vc.parentViewController;
466
532
 
533
+ // When modal is shown the underlying RNSScreen isn't attached to any navigation controller.
534
+ // During the modal dismissal transition this update method is called on this RNSScreen resulting in nil navctr.
535
+ // After the transition is completed it will be called again and will configure the navigation controller correctly.
536
+ // Also see: https://github.com/software-mansion/react-native-screens/pull/2336
537
+ if (navctr == nil) {
538
+ return;
539
+ }
540
+
467
541
  NSUInteger currentIndex = [navctr.viewControllers indexOfObject:vc];
468
542
  UINavigationItem *prevItem =
469
543
  currentIndex > 0 ? [navctr.viewControllers objectAtIndex:currentIndex - 1].navigationItem : nil;
470
544
 
471
545
  BOOL wasHidden = navctr.navigationBarHidden;
472
- #ifdef RCT_NEW_ARCH_ENABLED
473
- BOOL shouldHide = config == nil || !config.show;
474
- #else
475
- BOOL shouldHide = config == nil || config.hide;
476
- #endif
546
+ BOOL shouldHide = config == nil || !config.shouldHeaderBeVisible;
477
547
 
478
548
  if (!shouldHide && !config.translucent) {
479
549
  // when nav bar is not translucent we chage edgesForExtendedLayout to avoid system laying out
@@ -826,6 +896,7 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
826
896
  {
827
897
  [super prepareForRecycle];
828
898
  _initialPropsSet = NO;
899
+ _lastHeaderInsets = NSDirectionalEdgeInsets{};
829
900
  }
830
901
 
831
902
  - (NSNumber *)getFontSizePropValue:(int)value
@@ -916,6 +987,12 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
916
987
  [super updateProps:props oldProps:oldProps];
917
988
  }
918
989
 
990
+ - (void)updateState:(const facebook::react::State::Shared &)state
991
+ oldState:(const facebook::react::State::Shared &)oldState
992
+ {
993
+ _state = std::static_pointer_cast<const react::RNSScreenStackHeaderConfigShadowNode::ConcreteState>(state);
994
+ }
995
+
919
996
  #else
920
997
  #pragma mark - Paper specific
921
998
 
@@ -954,11 +1031,21 @@ Class<RCTComponentViewProtocol> RNSScreenStackHeaderConfigCls(void)
954
1031
 
955
1032
  RCT_EXPORT_MODULE()
956
1033
 
1034
+ #ifdef RCT_NEW_ARCH_ENABLED
1035
+ #else
1036
+
957
1037
  - (UIView *)view
958
1038
  {
959
- return [RNSScreenStackHeaderConfig new];
1039
+ return [[RNSScreenStackHeaderConfig alloc] initWithBridge:self.bridge];
960
1040
  }
961
1041
 
1042
+ - (RCTShadowView *)shadowView
1043
+ {
1044
+ return [RNSScreenStackHeaderConfigShadowView new];
1045
+ }
1046
+
1047
+ #endif // RCT_NEW_ARCH_ENABLED
1048
+
962
1049
  RCT_EXPORT_VIEW_PROPERTY(title, NSString)
963
1050
  RCT_EXPORT_VIEW_PROPERTY(titleFontFamily, NSString)
964
1051
  RCT_EXPORT_VIEW_PROPERTY(titleFontSize, NSNumber)
@@ -989,6 +1076,46 @@ RCT_EXPORT_VIEW_PROPERTY(translucent, BOOL)
989
1076
 
990
1077
  @end
991
1078
 
1079
+ #ifdef RCT_NEW_ARCH_ENABLED
1080
+ #else
1081
+
1082
+ @implementation RNSHeaderConfigInsetsPayload
1083
+
1084
+ - (instancetype)init
1085
+ {
1086
+ return [self initWithInsets:NSDirectionalEdgeInsets{}];
1087
+ }
1088
+
1089
+ - (instancetype)initWithInsets:(NSDirectionalEdgeInsets)insets
1090
+ {
1091
+ if (self = [super init]) {
1092
+ self.insets = insets;
1093
+ }
1094
+ return self;
1095
+ }
1096
+
1097
+ @end
1098
+
1099
+ @implementation RNSScreenStackHeaderConfigShadowView {
1100
+ }
1101
+
1102
+ - (void)setLocalData:(NSObject *)localData
1103
+ {
1104
+ if ([localData isKindOfClass:RNSHeaderConfigInsetsPayload.class]) {
1105
+ RNSHeaderConfigInsetsPayload *payload = (RNSHeaderConfigInsetsPayload *)localData;
1106
+ [self setPaddingStart:YGValue{.value = (float)payload.insets.leading, .unit = YGUnitPoint}];
1107
+ [self setPaddingEnd:YGValue{.value = (float)payload.insets.trailing, .unit = YGUnitPoint}];
1108
+
1109
+ // Trigger layout prop recomputation
1110
+ [self didSetProps:@[]];
1111
+ } else {
1112
+ [super setLocalData:localData];
1113
+ }
1114
+ }
1115
+
1116
+ @end
1117
+ #endif
1118
+
992
1119
  @implementation RCTConvert (RNSScreenStackHeader)
993
1120
 
994
1121
  + (NSMutableDictionary *)blurEffectsForIOSVersion
@@ -1,5 +1,6 @@
1
1
  #import "RNSScreenStackHeaderSubview.h"
2
2
  #import "RNSConvert.h"
3
+ #import "RNSScreenStackHeaderConfig.h"
3
4
 
4
5
  #ifdef RCT_NEW_ARCH_ENABLED
5
6
  #import <react/renderer/components/rnscreens/ComponentDescriptors.h>
@@ -8,6 +9,8 @@
8
9
 
9
10
  #import <React/RCTConversions.h>
10
11
  #import <React/RCTFabricComponentsPlugins.h>
12
+
13
+ #import <rnscreens/RNSScreenStackHeaderSubviewComponentDescriptor.h>
11
14
  #endif // RCT_NEW_ARCH_ENABLED
12
15
 
13
16
  #ifdef RCT_NEW_ARCH_ENABLED
@@ -22,10 +25,37 @@ namespace react = facebook::react;
22
25
 
23
26
  #pragma mark - Common
24
27
 
28
+ - (nullable RNSScreenStackHeaderConfig *)getHeaderConfig
29
+ {
30
+ RNSScreenStackHeaderConfig *headerConfig = (RNSScreenStackHeaderConfig *_Nullable)self.reactSuperview;
31
+ #ifndef NDEBUG
32
+ if (headerConfig != nil && ![headerConfig isKindOfClass:[RNSScreenStackHeaderConfig class]]) {
33
+ RCTLogError(@"[RNScreens] Invalid view type, expecting RNSScreenStackHeaderConfig, got: %@", headerConfig);
34
+ return nil;
35
+ }
36
+ #endif
37
+ return headerConfig;
38
+ }
39
+
40
+ // We're forcing the navigation controller's view to re-layout
41
+ // see: https://github.com/software-mansion/react-native-screens/pull/2385
42
+ - (void)layoutNavigationBarIfNeeded
43
+ {
44
+ RNSScreenStackHeaderConfig *headerConfig = [self getHeaderConfig];
45
+ UINavigationController *navctr = headerConfig.screenView.reactViewController.navigationController;
46
+ [navctr.navigationBar layoutIfNeeded];
47
+ }
48
+
25
49
  #ifdef RCT_NEW_ARCH_ENABLED
26
50
 
27
51
  #pragma mark - Fabric specific
28
52
 
53
+ // Needed because of this: https://github.com/facebook/react-native/pull/37274
54
+ + (void)load
55
+ {
56
+ [super load];
57
+ }
58
+
29
59
  - (instancetype)initWithFrame:(CGRect)frame
30
60
  {
31
61
  if (self = [super initWithFrame:frame]) {
@@ -72,9 +102,7 @@ namespace react = facebook::react;
72
102
  self);
73
103
  } else {
74
104
  self.bounds = CGRect{CGPointZero, frame.size};
75
- // We're forcing the parent view to layout this subview with correct frame size,
76
- // see: https://github.com/software-mansion/react-native-screens/pull/2248
77
- [self.superview layoutIfNeeded];
105
+ [self layoutNavigationBarIfNeeded];
78
106
  }
79
107
  }
80
108
 
@@ -99,6 +127,7 @@ namespace react = facebook::react;
99
127
  // Block any attempt to set coordinates on RNSScreenStackHeaderSubview. This
100
128
  // makes UINavigationBar the only one to control the position of header content.
101
129
  [super reactSetFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
130
+ [self layoutNavigationBarIfNeeded];
102
131
  }
103
132
 
104
133
  #endif // RCT_NEW_ARCH_ENABLED
@@ -37,6 +37,13 @@ namespace react = facebook::react;
37
37
  }
38
38
 
39
39
  #ifdef RCT_NEW_ARCH_ENABLED
40
+
41
+ // Needed because of this: https://github.com/facebook/react-native/pull/37274
42
+ + (void)load
43
+ {
44
+ [super load];
45
+ }
46
+
40
47
  - (instancetype)init
41
48
  {
42
49
  if (self = [super init]) {
@@ -0,0 +1,37 @@
1
+ #import <UIKit/UIKit.h>
2
+
3
+ NS_ASSUME_NONNULL_BEGIN
4
+
5
+ @interface UINavigationBar (RNSUtility)
6
+
7
+ /**
8
+ * Aims to find main content view of the `UINavigationBar`.
9
+ *
10
+ * This method relies on internal iOS implementation details (see the implementation)
11
+ * and might need patches specific to future iOS versions, in case the view hierarchy inside
12
+ * the navigation bar changes.
13
+ *
14
+ * Tested to work reliably on iOS 18.0, 17.5, 15.5.
15
+ *
16
+ * @returns `_UINavigationBarContentView` view mounted directly under the navigation bar itself
17
+ */
18
+ - (nullable UIView *)rnscreens_findContentView;
19
+
20
+ /**
21
+ * Aims to find the back button wrapper view of the `UINavigationBar`. This is the view that contains
22
+ * the back button itself alongside all the margin / padding used to position the back button by the system.
23
+ *
24
+ * This method relies on internal iOS implementation details (see the implementation)
25
+ * and might need patches specific to future iOS versions, in case the view hierarchy inside
26
+ * the navigation bar changes.
27
+ *
28
+ * Tested to work reliably on iOS 18.0, 17.5, 15.5.
29
+ *
30
+ * @returns `_UIButtonBarButton` view, if present and mounted in anticipated place;
31
+ * if the back button is not present, this method returns `nil`.
32
+ */
33
+ - (nullable UIView *)rnscreens_findBackButtonWrapperView;
34
+
35
+ @end
36
+
37
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,44 @@
1
+ #import "UINavigationBar+RNSUtility.h"
2
+
3
+ @implementation UINavigationBar (RNSUtility)
4
+
5
+ - (nullable UIView *)rnscreens_findContentView
6
+ {
7
+ // Class names taken from iOS 17.5, tested on iPhone 15 Pro
8
+ static Class ContentViewClass = NSClassFromString(@"_UINavigationBarContentView");
9
+
10
+ // Fast path
11
+ if (self.subviews.count > 1 && [self.subviews[1] isKindOfClass:ContentViewClass]) {
12
+ return self.subviews[1];
13
+ }
14
+
15
+ for (UIView *subview in self.subviews) {
16
+ if ([subview isKindOfClass:ContentViewClass]) {
17
+ return subview;
18
+ }
19
+ }
20
+
21
+ return nil;
22
+ }
23
+
24
+ - (nullable UIView *)rnscreens_findBackButtonWrapperView
25
+ {
26
+ // Class names taken from iOS 17.5, tested on iPhone 15 Pro
27
+ static Class BarButtonViewClass = NSClassFromString(@"_UIButtonBarButton");
28
+
29
+ UIView *contentView = self.rnscreens_findContentView;
30
+
31
+ if (contentView == nil) {
32
+ return nil;
33
+ }
34
+
35
+ for (UIView *subview in contentView.subviews) {
36
+ if ([subview isKindOfClass:BarButtonViewClass]) {
37
+ return subview;
38
+ }
39
+ }
40
+
41
+ return nil;
42
+ }
43
+
44
+ @end
@@ -35,7 +35,6 @@
35
35
  }
36
36
 
37
37
  #else
38
-
39
38
  // On Paper we can access touchHandler hosted by `RCTRootContentView` which should be above ScreenStack
40
39
  // in view hierarchy.
41
40
  while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)]) {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
@@ -1 +1 @@
1
- {"version":3,"names":["React","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_default","exports","createContext","undefined"],"sourceRoot":"../../src","sources":["TransitionProgressContext.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+B,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,IAAAY,QAAA,GAAAC,OAAA,CAAAhB,OAAA,gBAShBT,KAAK,CAAC0B,aAAa,CAChCC,SACF,CAAC"}
1
+ {"version":3,"names":["Object","defineProperty","exports","value","default","React","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","has","get","n","__proto__","a","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_default","createContext","undefined"],"sourceRoot":"../../src","sources":["TransitionProgressContext.tsx"],"mappings":";AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,OAAA;AAEb,IAAAC,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+B,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAL,OAAA,EAAAK,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAE,GAAA,CAAAL,CAAA,UAAAG,CAAA,CAAAG,GAAA,CAAAN,CAAA,OAAAO,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAlB,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAmB,wBAAA,WAAAC,CAAA,IAAAX,CAAA,oBAAAW,CAAA,IAAApB,MAAA,CAAAqB,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,CAAA,EAAAW,CAAA,SAAAI,CAAA,GAAAN,CAAA,GAAAlB,MAAA,CAAAmB,wBAAA,CAAAV,CAAA,EAAAW,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAT,GAAA,IAAAS,CAAA,CAAAC,GAAA,IAAAzB,MAAA,CAAAC,cAAA,CAAAe,CAAA,EAAAI,CAAA,EAAAI,CAAA,IAAAR,CAAA,CAAAI,CAAA,IAAAX,CAAA,CAAAW,CAAA,YAAAJ,CAAA,CAAAZ,OAAA,GAAAK,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAhB,CAAA,EAAAO,CAAA,GAAAA,CAAA;AAAA,IAAAU,QAAA,GAAAxB,OAAA,CAAAE,OAAA,gBAShBC,KAAK,CAACsB,aAAa,CAChCC,SACF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
@@ -11,6 +12,7 @@ var _DelayedFreeze = _interopRequireDefault(require("./helpers/DelayedFreeze"));
11
12
  var _core = require("../core");
12
13
  var _ScreenNativeComponent = _interopRequireDefault(require("../fabric/ScreenNativeComponent"));
13
14
  var _ModalScreenNativeComponent = _interopRequireDefault(require("../fabric/ModalScreenNativeComponent"));
15
+ var _usePrevious = require("./helpers/usePrevious");
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
  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); } // Native components
16
18
  const NativeScreen = exports.NativeScreen = _ScreenNativeComponent.default;
@@ -19,9 +21,95 @@ const AnimatedNativeModalScreen = _reactNative.Animated.createAnimatedComponent(
19
21
 
20
22
  // Incomplete type, all accessible properties available at:
21
23
  // react-native/Libraries/Components/View/ReactNativeViewViewConfig.js
24
+ // This value must be kept in sync with native side.
25
+ const SHEET_FIT_TO_CONTENTS = [-1];
26
+ const SHEET_COMPAT_LARGE = [1.0];
27
+ const SHEET_COMPAT_MEDIUM = [0.5];
28
+ const SHEET_COMPAT_ALL = [0.5, 1.0];
29
+ const SHEET_DIMMED_ALWAYS = -1;
30
+ // const SHEET_DIMMED_NEVER = 9999;
31
+
32
+ function assertDetentsArrayIsSorted(array) {
33
+ for (let i = 1; i < array.length; i++) {
34
+ if (array[i - 1] > array[i]) {
35
+ throw new Error('[RNScreens] The detent array is not sorted in ascending order!');
36
+ }
37
+ }
38
+ }
39
+
40
+ // These exist to transform old 'legacy' values used by the formsheet API to the new API shape.
41
+ // We can get rid of it, once we get rid of support for legacy values: 'large', 'medium', 'all'.
42
+ function resolveSheetAllowedDetents(allowedDetentsCompat) {
43
+ if (Array.isArray(allowedDetentsCompat)) {
44
+ if (_reactNative.Platform.OS === 'android' && allowedDetentsCompat.length > 3) {
45
+ if (__DEV__) {
46
+ console.warn('[RNScreens] Sheets API on Android do accept only up to 3 values. Any surplus value are ignored.');
47
+ }
48
+ allowedDetentsCompat = allowedDetentsCompat.slice(0, 3);
49
+ }
50
+ if (__DEV__) {
51
+ assertDetentsArrayIsSorted(allowedDetentsCompat);
52
+ }
53
+ return allowedDetentsCompat;
54
+ } else if (allowedDetentsCompat === 'fitToContents') {
55
+ return SHEET_FIT_TO_CONTENTS;
56
+ } else if (allowedDetentsCompat === 'large') {
57
+ return SHEET_COMPAT_LARGE;
58
+ } else if (allowedDetentsCompat === 'medium') {
59
+ return SHEET_COMPAT_MEDIUM;
60
+ } else if (allowedDetentsCompat === 'all') {
61
+ return SHEET_COMPAT_ALL;
62
+ } else {
63
+ // Safe default, only large detent is allowed.
64
+ return [1.0];
65
+ }
66
+ }
67
+ function resolveSheetLargestUndimmedDetent(lud, lastDetentIndex) {
68
+ if (typeof lud === 'number') {
69
+ if (!isIndexInClosedRange(lud, SHEET_DIMMED_ALWAYS, lastDetentIndex)) {
70
+ if (__DEV__) {
71
+ throw new Error("[RNScreens] Provided value of 'sheetLargestUndimmedDetentIndex' prop is out of bounds of 'sheetAllowedDetents' array.");
72
+ }
73
+ // Return default in production
74
+ return SHEET_DIMMED_ALWAYS;
75
+ }
76
+ return lud;
77
+ } else if (lud === 'last') {
78
+ return lastDetentIndex;
79
+ } else if (lud === 'none' || lud === 'all') {
80
+ return SHEET_DIMMED_ALWAYS;
81
+ } else if (lud === 'large') {
82
+ return 1;
83
+ } else if (lud === 'medium') {
84
+ return 0;
85
+ } else {
86
+ // Safe default, every detent is dimmed
87
+ return SHEET_DIMMED_ALWAYS;
88
+ }
89
+ }
90
+ function resolveSheetInitialDetentIndex(index, lastDetentIndex) {
91
+ if (index === 'last') {
92
+ index = lastDetentIndex;
93
+ } else if (index == null) {
94
+ // Intentional check for undefined & null ^
95
+ index = 0;
96
+ }
97
+ if (!isIndexInClosedRange(index, 0, lastDetentIndex)) {
98
+ if (__DEV__) {
99
+ throw new Error("[RNScreens] Provided value of 'sheetInitialDetentIndex' prop is out of bounds of 'sheetAllowedDetents' array.");
100
+ }
101
+ // Return default in production
102
+ return 0;
103
+ }
104
+ return index;
105
+ }
106
+ function isIndexInClosedRange(value, lowerBound, upperBound) {
107
+ return Number.isInteger(value) && value >= lowerBound && value <= upperBound;
108
+ }
22
109
  const InnerScreen = exports.InnerScreen = /*#__PURE__*/_react.default.forwardRef(function InnerScreen(props, ref) {
23
110
  const innerRef = _react.default.useRef(null);
24
111
  _react.default.useImperativeHandle(ref, () => innerRef.current, []);
112
+ const prevActivityState = (0, _usePrevious.usePrevious)(props.activityState);
25
113
  const setRef = ref => {
26
114
  innerRef.current = ref;
27
115
  props.onComponentRef?.(ref);
@@ -38,16 +126,21 @@ const InnerScreen = exports.InnerScreen = /*#__PURE__*/_react.default.forwardRef
38
126
  // To maintain default behavior of formSheet stack presentation style and to have reasonable
39
127
  // defaults for new medium-detent iOS API we need to set defaults here
40
128
  const {
129
+ // formSheet presentation related props
41
130
  sheetAllowedDetents = [1.0],
42
- sheetLargestUndimmedDetent = -1,
131
+ sheetLargestUndimmedDetentIndex = SHEET_DIMMED_ALWAYS,
43
132
  sheetGrabberVisible = false,
44
133
  sheetCornerRadius = -1.0,
45
134
  sheetExpandsWhenScrolledToEdge = true,
46
135
  sheetElevation = 24,
47
- sheetInitialDetent = 0,
136
+ sheetInitialDetentIndex = 0,
137
+ // Other
48
138
  stackPresentation
49
139
  } = rest;
50
140
  if (enabled && _core.isNativePlatformSupported) {
141
+ const resolvedSheetAllowedDetents = resolveSheetAllowedDetents(sheetAllowedDetents);
142
+ const resolvedSheetLargestUndimmedDetent = resolveSheetLargestUndimmedDetent(sheetLargestUndimmedDetentIndex, resolvedSheetAllowedDetents.length - 1);
143
+ const resolvedSheetInitialDetentIndex = resolveSheetInitialDetentIndex(sheetInitialDetentIndex, resolvedSheetAllowedDetents.length - 1);
51
144
  // Due to how Yoga resolves layout, we need to have different components for modal nad non-modal screens
52
145
  const AnimatedScreen = _reactNative.Platform.OS === 'android' || stackPresentation === undefined || stackPresentation === 'push' || stackPresentation === 'containedModal' || stackPresentation === 'containedTransparentModal' ? AnimatedNativeScreen : AnimatedNativeModalScreen;
53
146
  let {
@@ -60,6 +153,7 @@ const InnerScreen = exports.InnerScreen = /*#__PURE__*/_react.default.forwardRef
60
153
  isNativeStack,
61
154
  gestureResponseDistance,
62
155
  onGestureCancel,
156
+ style,
63
157
  ...props
64
158
  } = rest;
65
159
  if (active !== undefined && activityState === undefined) {
@@ -67,6 +161,11 @@ const InnerScreen = exports.InnerScreen = /*#__PURE__*/_react.default.forwardRef
67
161
  activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition
68
162
  }
69
163
 
164
+ if (isNativeStack && prevActivityState !== undefined && activityState !== undefined) {
165
+ if (prevActivityState > activityState) {
166
+ throw new Error('[RNScreens] activityState cannot be decreased in NativeStack');
167
+ }
168
+ }
70
169
  const handleRef = ref => {
71
170
  if (ref?.viewConfig?.validAttributes?.style) {
72
171
  ref.viewConfig.validAttributes.style = {
@@ -85,14 +184,21 @@ const InnerScreen = exports.InnerScreen = /*#__PURE__*/_react.default.forwardRef
85
184
  return /*#__PURE__*/_react.default.createElement(_DelayedFreeze.default, {
86
185
  freeze: freezeOnBlur && activityState === 0
87
186
  }, /*#__PURE__*/_react.default.createElement(AnimatedScreen, _extends({}, props, {
187
+ // Hierarchy of screens is handled on the native side and setting zIndex value causes this issue:
188
+ // https://github.com/software-mansion/react-native-screens/issues/2345
189
+ // With below change of zIndex, we force RN diffing mechanism to NOT include detaching and attaching mutation in one transaction.
190
+ // Detailed information can be found here https://github.com/software-mansion/react-native-screens/pull/2351
191
+ style: [style, {
192
+ zIndex: undefined
193
+ }],
88
194
  activityState: activityState,
89
- sheetAllowedDetents: sheetAllowedDetents,
90
- sheetLargestUndimmedDetent: sheetLargestUndimmedDetent,
195
+ sheetAllowedDetents: resolvedSheetAllowedDetents,
196
+ sheetLargestUndimmedDetent: resolvedSheetLargestUndimmedDetent,
91
197
  sheetElevation: sheetElevation,
92
198
  sheetGrabberVisible: sheetGrabberVisible,
93
199
  sheetCornerRadius: sheetCornerRadius,
94
200
  sheetExpandsWhenScrolledToEdge: sheetExpandsWhenScrolledToEdge,
95
- sheetInitialDetent: sheetInitialDetent,
201
+ sheetInitialDetent: resolvedSheetInitialDetentIndex,
96
202
  gestureResponseDistance: {
97
203
  start: gestureResponseDistance?.start ?? -1,
98
204
  end: gestureResponseDistance?.end ?? -1,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_TransitionProgressContext","_DelayedFreeze","_core","_ScreenNativeComponent","_ModalScreenNativeComponent","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","NativeScreen","exports","ScreenNativeComponent","AnimatedNativeScreen","Animated","createAnimatedComponent","AnimatedNativeModalScreen","ModalScreenNativeComponent","InnerScreen","React","forwardRef","props","ref","innerRef","useRef","useImperativeHandle","current","setRef","onComponentRef","closing","Value","progress","goingForward","enabled","screensEnabled","freezeOnBlur","freezeEnabled","rest","sheetAllowedDetents","sheetLargestUndimmedDetent","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","sheetElevation","sheetInitialDetent","stackPresentation","isNativePlatformSupported","AnimatedScreen","Platform","OS","undefined","active","activityState","children","isNativeStack","gestureResponseDistance","onGestureCancel","console","warn","handleRef","viewConfig","validAttributes","style","display","_viewConfig","createElement","freeze","start","end","top","bottom","onTransitionProgress","event","nativeEvent","useNativeDriver","Provider","value","View","ScreenContext","createContext","Screen","ScreenWrapper","useContext","_default"],"sourceRoot":"../../../src","sources":["components/Screen.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["Object","defineProperty","exports","value","default","ScreenContext","NativeScreen","InnerScreen","_react","_interopRequireDefault","require","_reactNative","_TransitionProgressContext","_DelayedFreeze","_core","_ScreenNativeComponent","_ModalScreenNativeComponent","_usePrevious","obj","__esModule","_extends","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ScreenNativeComponent","AnimatedNativeScreen","Animated","createAnimatedComponent","AnimatedNativeModalScreen","ModalScreenNativeComponent","SHEET_FIT_TO_CONTENTS","SHEET_COMPAT_LARGE","SHEET_COMPAT_MEDIUM","SHEET_COMPAT_ALL","SHEET_DIMMED_ALWAYS","assertDetentsArrayIsSorted","array","Error","resolveSheetAllowedDetents","allowedDetentsCompat","Array","isArray","Platform","OS","__DEV__","console","warn","slice","resolveSheetLargestUndimmedDetent","lud","lastDetentIndex","isIndexInClosedRange","resolveSheetInitialDetentIndex","index","lowerBound","upperBound","Number","isInteger","React","forwardRef","props","ref","innerRef","useRef","useImperativeHandle","current","prevActivityState","usePrevious","activityState","setRef","onComponentRef","closing","Value","progress","goingForward","enabled","screensEnabled","freezeOnBlur","freezeEnabled","rest","sheetAllowedDetents","sheetLargestUndimmedDetentIndex","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","sheetElevation","sheetInitialDetentIndex","stackPresentation","isNativePlatformSupported","resolvedSheetAllowedDetents","resolvedSheetLargestUndimmedDetent","resolvedSheetInitialDetentIndex","AnimatedScreen","undefined","active","children","isNativeStack","gestureResponseDistance","onGestureCancel","style","handleRef","viewConfig","validAttributes","display","_viewConfig","createElement","freeze","zIndex","sheetLargestUndimmedDetent","sheetInitialDetent","start","end","top","bottom","onTransitionProgress","event","nativeEvent","useNativeDriver","Provider","View","createContext","Screen","ScreenWrapper","useContext","_default"],"sourceRoot":"../../../src","sources":["components/Screen.tsx"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
@@ -13,6 +14,7 @@ const InnerScreen = exports.InnerScreen = _reactNative.View;
13
14
 
14
15
  // We're using class component here because of the error from reanimated:
15
16
  // createAnimatedComponent` does not support stateless functional components; use a class component instead.
17
+ // NOTE: React Server Components do not support class components.
16
18
  class NativeScreen extends _react.default.Component {
17
19
  render() {
18
20
  let {