react-native-screens 4.10.0-beta.1 → 4.10.0-beta.3

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 (30) hide show
  1. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +3 -8
  2. package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +111 -15
  3. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +11 -2
  4. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +1 -1
  5. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +174 -199
  6. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +31 -285
  7. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +89 -54
  8. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigShadowNode.kt +3 -0
  9. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +1 -1
  10. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/SheetDelegate.kt +257 -3
  11. package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +7 -0
  12. package/android/src/main/java/com/swmansion/rnscreens/utils/FragmentTransactionKt.kt +103 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/utils/InsetsKt.kt +31 -0
  14. package/android/src/main/java/com/swmansion/rnscreens/utils/PaddingBundle.kt +1 -0
  15. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +14 -5
  16. package/ios/RNSFullWindowOverlay.mm +6 -6
  17. package/lib/commonjs/components/Screen.js +5 -3
  18. package/lib/commonjs/components/Screen.js.map +1 -1
  19. package/lib/commonjs/native-stack/views/NativeStackView.js +3 -5
  20. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  21. package/lib/module/components/Screen.js +5 -3
  22. package/lib/module/components/Screen.js.map +1 -1
  23. package/lib/module/native-stack/views/NativeStackView.js +3 -5
  24. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  25. package/lib/typescript/components/Screen.d.ts.map +1 -1
  26. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/src/components/Screen.tsx +7 -5
  29. package/src/native-stack/views/NativeStackView.tsx +11 -12
  30. package/android/src/main/java/com/swmansion/rnscreens/NativeDismissalObserver.kt +0 -12
@@ -1,6 +1,10 @@
1
1
  package com.swmansion.rnscreens.bottomsheet
2
2
 
3
+ import android.content.Context
4
+ import android.os.Build
3
5
  import android.view.View
6
+ import android.view.WindowManager
7
+ import android.view.inputmethod.InputMethodManager
4
8
  import androidx.core.graphics.Insets
5
9
  import androidx.core.view.OnApplyWindowInsetsListener
6
10
  import androidx.core.view.WindowInsetsCompat
@@ -23,6 +27,20 @@ class SheetDelegate(
23
27
  private var isKeyboardVisible: Boolean = false
24
28
  private var keyboardState: KeyboardState = KeyboardNotVisible
25
29
 
30
+ var lastStableDetentIndex: Int = screen.sheetInitialDetentIndex
31
+ private set
32
+
33
+ @BottomSheetBehavior.State
34
+ var lastStableState: Int =
35
+ SheetUtils.sheetStateFromDetentIndex(
36
+ screen.sheetInitialDetentIndex,
37
+ screen.sheetDetents.count(),
38
+ )
39
+ private set
40
+
41
+ private val sheetStateObserver = SheetStateObserver()
42
+ private val keyboardHandlerCallback = KeyboardHandler()
43
+
26
44
  private val sheetBehavior: BottomSheetBehavior<Screen>?
27
45
  get() = screen.sheetBehavior
28
46
 
@@ -36,6 +54,9 @@ class SheetDelegate(
36
54
  init {
37
55
  assert(screen.fragment is ScreenStackFragment) { "[RNScreens] Sheets are supported only in native stack" }
38
56
  screen.fragment!!.lifecycle.addObserver(this)
57
+
58
+ checkNotNull(sheetBehavior) { "[RNScreens] Sheet delegate accepts screen with initialized sheet behaviour only." }
59
+ .addBottomSheetCallback(sheetStateObserver)
39
60
  }
40
61
 
41
62
  // LifecycleEventObserver
@@ -63,6 +84,163 @@ class SheetDelegate(
63
84
  InsetsObserverProxy.removeOnApplyWindowInsetsListener(this)
64
85
  }
65
86
 
87
+ private fun onSheetStateChanged(newState: Int) {
88
+ val isStable = SheetUtils.isStateStable(newState)
89
+
90
+ if (isStable) {
91
+ lastStableState = newState
92
+ lastStableDetentIndex =
93
+ SheetUtils.detentIndexFromSheetState(
94
+ newState,
95
+ screen.sheetDetents.count(),
96
+ )
97
+ }
98
+
99
+ screen.onSheetDetentChanged(lastStableDetentIndex, isStable)
100
+
101
+ if (shouldDismissSheetInState(newState)) {
102
+ stackFragment.dismissSelf()
103
+ }
104
+ }
105
+
106
+ internal fun configureBottomSheetBehaviour(
107
+ behavior: BottomSheetBehavior<Screen>,
108
+ keyboardState: KeyboardState = KeyboardNotVisible,
109
+ selectedDetentIndex: Int = lastStableDetentIndex,
110
+ ): BottomSheetBehavior<Screen> {
111
+ val containerHeight = tryResolveContainerHeight()
112
+ check(containerHeight != null) {
113
+ "[RNScreens] Failed to find window height during bottom sheet behaviour configuration"
114
+ }
115
+
116
+ behavior.apply {
117
+ isHideable = true
118
+ isDraggable = true
119
+ }
120
+
121
+ // There is a guard internally that does not allow the callback to be duplicated.
122
+ behavior.addBottomSheetCallback(sheetStateObserver)
123
+
124
+ screen.footer?.registerWithSheetBehavior(behavior)
125
+
126
+ return when (keyboardState) {
127
+ is KeyboardNotVisible -> {
128
+ when (screen.sheetDetents.count()) {
129
+ 1 ->
130
+ behavior.apply {
131
+ val height =
132
+ if (screen.isSheetFitToContents()) {
133
+ screen.contentWrapper
134
+ .get()
135
+ ?.height
136
+ .takeIf { screen.contentWrapper.get()?.isLaidOut == true }
137
+ } else {
138
+ (screen.sheetDetents.first() * containerHeight).toInt()
139
+ }
140
+ useSingleDetent(height = height)
141
+ }
142
+
143
+ 2 ->
144
+ behavior.useTwoDetents(
145
+ state =
146
+ SheetUtils.sheetStateFromDetentIndex(
147
+ selectedDetentIndex,
148
+ screen.sheetDetents.count(),
149
+ ),
150
+ firstHeight = (screen.sheetDetents[0] * containerHeight).toInt(),
151
+ secondHeight = (screen.sheetDetents[1] * containerHeight).toInt(),
152
+ )
153
+
154
+ 3 ->
155
+ behavior.useThreeDetents(
156
+ state =
157
+ SheetUtils.sheetStateFromDetentIndex(
158
+ selectedDetentIndex,
159
+ screen.sheetDetents.count(),
160
+ ),
161
+ firstHeight = (screen.sheetDetents[0] * containerHeight).toInt(),
162
+ halfExpandedRatio = (screen.sheetDetents[1] / screen.sheetDetents[2]).toFloat(),
163
+ expandedOffsetFromTop = ((1 - screen.sheetDetents[2]) * containerHeight).toInt(),
164
+ )
165
+
166
+ else -> throw IllegalStateException(
167
+ "[RNScreens] Invalid detent count ${screen.sheetDetents.count()}. Expected at most 3.",
168
+ )
169
+ }
170
+ }
171
+
172
+ is KeyboardVisible -> {
173
+ val newMaxHeight =
174
+ if (behavior.maxHeight - keyboardState.height > 1) {
175
+ behavior.maxHeight - keyboardState.height
176
+ } else {
177
+ behavior.maxHeight
178
+ }
179
+ when (screen.sheetDetents.count()) {
180
+ 1 ->
181
+ behavior.apply {
182
+ useSingleDetent(height = newMaxHeight)
183
+ addBottomSheetCallback(keyboardHandlerCallback)
184
+ }
185
+
186
+ 2 ->
187
+ behavior.apply {
188
+ useTwoDetents(
189
+ state = BottomSheetBehavior.STATE_EXPANDED,
190
+ secondHeight = newMaxHeight,
191
+ )
192
+ addBottomSheetCallback(keyboardHandlerCallback)
193
+ }
194
+
195
+ 3 ->
196
+ behavior.apply {
197
+ useThreeDetents(
198
+ state = BottomSheetBehavior.STATE_EXPANDED,
199
+ )
200
+ maxHeight = newMaxHeight
201
+ addBottomSheetCallback(keyboardHandlerCallback)
202
+ }
203
+
204
+ else -> throw IllegalStateException(
205
+ "[RNScreens] Invalid detent count ${screen.sheetDetents.count()}. Expected at most 3.",
206
+ )
207
+ }
208
+ }
209
+
210
+ is KeyboardDidHide -> {
211
+ // Here we assume that the keyboard was either closed explicitly by user,
212
+ // or the user dragged the sheet down. In any case the state should
213
+ // stay unchanged.
214
+
215
+ behavior.removeBottomSheetCallback(keyboardHandlerCallback)
216
+ when (screen.sheetDetents.count()) {
217
+ 1 ->
218
+ behavior.useSingleDetent(
219
+ height = (screen.sheetDetents.first() * containerHeight).toInt(),
220
+ forceExpandedState = false,
221
+ )
222
+
223
+ 2 ->
224
+ behavior.useTwoDetents(
225
+ firstHeight = (screen.sheetDetents[0] * containerHeight).toInt(),
226
+ secondHeight = (screen.sheetDetents[1] * containerHeight).toInt(),
227
+ )
228
+
229
+ 3 ->
230
+ behavior.useThreeDetents(
231
+ firstHeight = (screen.sheetDetents[0] * containerHeight).toInt(),
232
+ halfExpandedRatio = (screen.sheetDetents[1] / screen.sheetDetents[2]).toFloat(),
233
+ expandedOffsetFromTop = ((1 - screen.sheetDetents[2]) * containerHeight).toInt(),
234
+ )
235
+
236
+ else -> throw IllegalStateException(
237
+ "[RNScreens] Invalid detent count ${screen.sheetDetents.count()}. Expected at most 3.",
238
+ )
239
+ }
240
+ }
241
+ }
242
+ }
243
+
66
244
  // This is listener function, not the view's.
67
245
  override fun onApplyWindowInsets(
68
246
  v: View,
@@ -75,7 +253,7 @@ class SheetDelegate(
75
253
  isKeyboardVisible = true
76
254
  keyboardState = KeyboardVisible(imeInset.bottom)
77
255
  sheetBehavior?.let {
78
- stackFragment.configureBottomSheetBehaviour(it, keyboardState)
256
+ this.configureBottomSheetBehaviour(it, keyboardState)
79
257
  }
80
258
 
81
259
  val prevInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
@@ -93,9 +271,9 @@ class SheetDelegate(
93
271
  } else {
94
272
  sheetBehavior?.let {
95
273
  if (isKeyboardVisible) {
96
- stackFragment.configureBottomSheetBehaviour(it, KeyboardDidHide)
274
+ this.configureBottomSheetBehaviour(it, KeyboardDidHide)
97
275
  } else if (keyboardState != KeyboardNotVisible) {
98
- stackFragment.configureBottomSheetBehaviour(it, KeyboardNotVisible)
276
+ this.configureBottomSheetBehaviour(it, KeyboardNotVisible)
99
277
  } else {
100
278
  }
101
279
  }
@@ -113,6 +291,82 @@ class SheetDelegate(
113
291
  ).build()
114
292
  }
115
293
 
294
+ private fun shouldDismissSheetInState(
295
+ @BottomSheetBehavior.State state: Int,
296
+ ) = state == BottomSheetBehavior.STATE_HIDDEN
297
+
298
+ /**
299
+ * This method might return slightly different values depending on code path,
300
+ * but during testing I've found this effect negligible. For practical purposes
301
+ * this is acceptable.
302
+ */
303
+ private fun tryResolveContainerHeight(): Int? {
304
+ screen.container?.let { return it.height }
305
+
306
+ val context = screen.reactContext
307
+
308
+ context
309
+ .resources
310
+ ?.displayMetrics
311
+ ?.heightPixels
312
+ ?.let { return it }
313
+
314
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
315
+ (context.getSystemService(Context.WINDOW_SERVICE) as? WindowManager)
316
+ ?.currentWindowMetrics
317
+ ?.bounds
318
+ ?.height()
319
+ ?.let { return it }
320
+ }
321
+ return null
322
+ }
323
+
324
+ private inner class KeyboardHandler : BottomSheetBehavior.BottomSheetCallback() {
325
+ override fun onStateChanged(
326
+ bottomSheet: View,
327
+ newState: Int,
328
+ ) {
329
+ if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
330
+ val isImeVisible =
331
+ WindowInsetsCompat
332
+ .toWindowInsetsCompat(bottomSheet.rootWindowInsets)
333
+ .isVisible(WindowInsetsCompat.Type.ime())
334
+ if (isImeVisible) {
335
+ // Does it not interfere with React Native focus mechanism? In any case I'm not aware
336
+ // of different way of hiding the keyboard.
337
+ // https://stackoverflow.com/questions/1109022/how-can-i-close-hide-the-android-soft-keyboard-programmatically
338
+ // https://developer.android.com/develop/ui/views/touch-and-input/keyboard-input/visibility
339
+
340
+ // I want to be polite here and request focus before dismissing the keyboard,
341
+ // however even if it fails I want to try to hide the keyboard. This sometimes works...
342
+ bottomSheet.requestFocus()
343
+ val imm =
344
+ screen.reactContext.getSystemService(InputMethodManager::class.java)
345
+ imm.hideSoftInputFromWindow(bottomSheet.windowToken, 0)
346
+ }
347
+ }
348
+ }
349
+
350
+ override fun onSlide(
351
+ bottomSheet: View,
352
+ slideOffset: Float,
353
+ ) = Unit
354
+ }
355
+
356
+ private inner class SheetStateObserver : BottomSheetBehavior.BottomSheetCallback() {
357
+ override fun onStateChanged(
358
+ bottomSheet: View,
359
+ newState: Int,
360
+ ) {
361
+ this@SheetDelegate.onSheetStateChanged(newState)
362
+ }
363
+
364
+ override fun onSlide(
365
+ bottomSheet: View,
366
+ slideOffset: Float,
367
+ ) = Unit
368
+ }
369
+
116
370
  companion object {
117
371
  const val TAG = "SheetDelegate"
118
372
  }
@@ -20,6 +20,11 @@ internal fun View.recycle(): View {
20
20
  // dumped. Since we don't restore the state but want to reuse the view we need to change
21
21
  // visibility back to VISIBLE in order for the fragment manager to animate in the view.
22
22
  this.visibility = View.VISIBLE
23
+
24
+ // Needed for cases where the Screen is is animated by translationY manipulation (e.g. formSheet)
25
+ // and then reused (reattached).
26
+ this.translationY = 0f
27
+
23
28
  return this
24
29
  }
25
30
 
@@ -30,3 +35,5 @@ internal fun View.maybeBgColor(): Int? {
30
35
  }
31
36
  return null
32
37
  }
38
+
39
+ internal fun View.asViewGroupOrNull(): ViewGroup? = this as? ViewGroup
@@ -0,0 +1,103 @@
1
+ package com.swmansion.rnscreens.utils
2
+
3
+ import androidx.fragment.app.FragmentTransaction
4
+ import com.swmansion.rnscreens.R
5
+ import com.swmansion.rnscreens.Screen.StackAnimation
6
+
7
+ internal fun FragmentTransaction.setTweenAnimations(stackAnimation: StackAnimation, shouldUseOpenAnimation: Boolean) {
8
+ if (shouldUseOpenAnimation) {
9
+ when (stackAnimation) {
10
+ StackAnimation.DEFAULT ->
11
+ this.setCustomAnimations(
12
+ R.anim.rns_default_enter_in,
13
+ R.anim.rns_default_enter_out,
14
+ )
15
+
16
+ StackAnimation.NONE ->
17
+ this.setCustomAnimations(
18
+ R.anim.rns_no_animation_20,
19
+ R.anim.rns_no_animation_20,
20
+ )
21
+
22
+ StackAnimation.FADE ->
23
+ this.setCustomAnimations(
24
+ R.anim.rns_fade_in,
25
+ R.anim.rns_fade_out,
26
+ )
27
+
28
+ StackAnimation.SLIDE_FROM_RIGHT ->
29
+ this.setCustomAnimations(
30
+ R.anim.rns_slide_in_from_right,
31
+ R.anim.rns_slide_out_to_left,
32
+ )
33
+ StackAnimation.SLIDE_FROM_LEFT ->
34
+ this.setCustomAnimations(
35
+ R.anim.rns_slide_in_from_left,
36
+ R.anim.rns_slide_out_to_right,
37
+ )
38
+ StackAnimation.SLIDE_FROM_BOTTOM ->
39
+ this.setCustomAnimations(
40
+ R.anim.rns_slide_in_from_bottom,
41
+ R.anim.rns_no_animation_medium,
42
+ )
43
+ StackAnimation.FADE_FROM_BOTTOM -> this.setCustomAnimations(R.anim.rns_fade_from_bottom, R.anim.rns_no_animation_350)
44
+ StackAnimation.IOS_FROM_RIGHT ->
45
+ this.setCustomAnimations(
46
+ R.anim.rns_ios_from_right_foreground_open,
47
+ R.anim.rns_ios_from_right_background_open,
48
+ )
49
+ StackAnimation.IOS_FROM_LEFT ->
50
+ this.setCustomAnimations(
51
+ R.anim.rns_ios_from_left_foreground_open,
52
+ R.anim.rns_ios_from_left_background_open,
53
+ )
54
+ }
55
+ } else {
56
+ when (stackAnimation) {
57
+ StackAnimation.DEFAULT ->
58
+ this.setCustomAnimations(
59
+ R.anim.rns_default_exit_in,
60
+ R.anim.rns_default_exit_out,
61
+ )
62
+
63
+ StackAnimation.NONE ->
64
+ this.setCustomAnimations(
65
+ R.anim.rns_no_animation_20,
66
+ R.anim.rns_no_animation_20,
67
+ )
68
+
69
+ StackAnimation.FADE ->
70
+ this.setCustomAnimations(
71
+ R.anim.rns_fade_in,
72
+ R.anim.rns_fade_out,
73
+ )
74
+
75
+ StackAnimation.SLIDE_FROM_RIGHT ->
76
+ this.setCustomAnimations(
77
+ R.anim.rns_slide_in_from_left,
78
+ R.anim.rns_slide_out_to_right,
79
+ )
80
+ StackAnimation.SLIDE_FROM_LEFT ->
81
+ this.setCustomAnimations(
82
+ R.anim.rns_slide_in_from_right,
83
+ R.anim.rns_slide_out_to_left,
84
+ )
85
+ StackAnimation.SLIDE_FROM_BOTTOM ->
86
+ this.setCustomAnimations(
87
+ R.anim.rns_no_animation_medium,
88
+ R.anim.rns_slide_out_to_bottom,
89
+ )
90
+ StackAnimation.FADE_FROM_BOTTOM -> this.setCustomAnimations(R.anim.rns_no_animation_250, R.anim.rns_fade_to_bottom)
91
+ StackAnimation.IOS_FROM_RIGHT ->
92
+ this.setCustomAnimations(
93
+ R.anim.rns_ios_from_right_background_close,
94
+ R.anim.rns_ios_from_right_foreground_close,
95
+ )
96
+ StackAnimation.IOS_FROM_LEFT ->
97
+ this.setCustomAnimations(
98
+ R.anim.rns_ios_from_left_background_close,
99
+ R.anim.rns_ios_from_left_foreground_close,
100
+ )
101
+ }
102
+ }
103
+ }
@@ -0,0 +1,31 @@
1
+ package com.swmansion.rnscreens.utils
2
+
3
+ import android.view.View
4
+ import android.view.WindowInsets
5
+ import androidx.core.view.WindowInsetsCompat
6
+
7
+ typealias InsetsCompat = androidx.core.graphics.Insets
8
+ typealias InsetsPlatform = android.graphics.Insets // Available since SDK 29
9
+
10
+ /**
11
+ * Meaningful value is available only in case the receiver is attached to window.
12
+ * Otherwise returns zero-insets.
13
+ *
14
+ * By default this method relies on `rootWindowInsets` of a view. Set `sourceWindowInsets` to change that.
15
+ */
16
+ internal fun View.resolveInsetsOrZero(
17
+ @WindowInsetsCompat.Type.InsetsType insetType: Int,
18
+ sourceWindowInsets: WindowInsets? = rootWindowInsets,
19
+ ignoreVisibility: Boolean = false,
20
+ ): InsetsCompat {
21
+ if (sourceWindowInsets == null) {
22
+ return InsetsCompat.NONE
23
+ }
24
+
25
+ val windowInsetsCompat = WindowInsetsCompat.toWindowInsetsCompat(sourceWindowInsets, this)
26
+ return if (!ignoreVisibility) {
27
+ windowInsetsCompat.getInsets(insetType)
28
+ } else {
29
+ windowInsetsCompat.getInsetsIgnoringVisibility(insetType)
30
+ }
31
+ }
@@ -3,6 +3,7 @@ package com.swmansion.rnscreens.utils
3
3
  // Used only on Paper together with `setLocalData` mechanism to pass
4
4
  // the information on header paddings to shadow node.
5
5
  data class PaddingBundle(
6
+ val height: Float,
6
7
  val paddingStart: Float,
7
8
  val paddingEnd: Float,
8
9
  )
@@ -2,6 +2,7 @@ package com.swmansion.rnscreens
2
2
 
3
3
  import android.content.Context
4
4
  import android.view.ViewGroup
5
+ import androidx.annotation.UiThread
5
6
  import com.facebook.react.bridge.ReactContext
6
7
  import com.facebook.react.uimanager.StateWrapper
7
8
  import com.facebook.react.uimanager.UIManagerModule
@@ -13,32 +14,40 @@ abstract class FabricEnabledHeaderConfigViewGroup(
13
14
  ) : ViewGroup(context) {
14
15
  private var lastPaddingStart = 0
15
16
  private var lastPaddingEnd = 0
17
+ private var lastHeight = 0
16
18
 
17
19
  fun setStateWrapper(wrapper: StateWrapper?) = Unit
18
20
 
19
- // Do nothing on Paper. This method is used only on Fabric.
20
21
  fun updateHeaderConfigState(
21
22
  width: Int,
22
23
  height: Int,
23
24
  paddingStart: Int,
24
25
  paddingEnd: Int,
25
- ) = Unit
26
+ ) {
27
+ // Implementation of this method differs between Fabric & Paper!
28
+ updateState(width, height, paddingStart, paddingEnd)
29
+ }
26
30
 
27
- fun updatePaddings(
31
+ // Implementation of this method differs between Fabric & Paper!
32
+ @UiThread
33
+ private fun updateState(
34
+ width: Int,
35
+ height: Int,
28
36
  paddingStart: Int,
29
37
  paddingEnd: Int,
30
38
  ) {
31
39
  // Note that on Paper we do not convert these props from px to dip. This is done internally by RN.
32
- if (abs(lastPaddingStart - paddingStart) < DELTA && abs(lastPaddingEnd - paddingEnd) < DELTA) {
40
+ if (abs(lastPaddingStart - paddingStart) < DELTA && abs(lastPaddingEnd - paddingEnd) < DELTA && abs(lastHeight - height) < DELTA) {
33
41
  return
34
42
  }
35
43
 
36
44
  lastPaddingStart = paddingStart
37
45
  lastPaddingEnd = paddingEnd
46
+ lastHeight = height
38
47
 
39
48
  val reactContext = context as? ReactContext
40
49
  val uiManagerModule = reactContext?.getNativeModule(UIManagerModule::class.java)
41
- uiManagerModule?.setViewLocalData(this.id, PaddingBundle(paddingStart.toFloat(), paddingEnd.toFloat()))
50
+ uiManagerModule?.setViewLocalData(this.id, PaddingBundle(height.toFloat(), paddingStart.toFloat(), paddingEnd.toFloat()))
42
51
  }
43
52
 
44
53
  companion object {
@@ -17,12 +17,6 @@
17
17
 
18
18
  @implementation RNSFullWindowOverlayContainer
19
19
 
20
- // Needed because of this: https://github.com/facebook/react-native/pull/37274
21
- + (void)load
22
- {
23
- [super load];
24
- }
25
-
26
20
  - (instancetype)initWithFrame:(CGRect)frame
27
21
  {
28
22
  if (self = [super initWithFrame:frame]) {
@@ -86,6 +80,12 @@
86
80
  #endif // RCT_NEW_ARCH_ENABLED
87
81
  }
88
82
 
83
+ // Needed because of this: https://github.com/facebook/react-native/pull/37274
84
+ + (void)load
85
+ {
86
+ [super load];
87
+ }
88
+
89
89
  #ifdef RCT_NEW_ARCH_ENABLED
90
90
  - (instancetype)init
91
91
  {
@@ -61,7 +61,7 @@ function resolveSheetAllowedDetents(allowedDetentsCompat) {
61
61
  return SHEET_COMPAT_ALL;
62
62
  } else {
63
63
  // Safe default, only large detent is allowed.
64
- return [1.0];
64
+ return SHEET_COMPAT_LARGE;
65
65
  }
66
66
  }
67
67
  function resolveSheetLargestUndimmedDetent(lud, lastDetentIndex) {
@@ -172,16 +172,18 @@ const InnerScreen = exports.InnerScreen = /*#__PURE__*/_react.default.forwardRef
172
172
  }
173
173
  }
174
174
  const handleRef = ref => {
175
+ // Workaround is necessary to prevent React Native from hiding frozen screens.
176
+ // See this PR: https://github.com/grahammendick/navigation/pull/860
175
177
  if (ref?.viewConfig?.validAttributes?.style) {
176
178
  ref.viewConfig.validAttributes.style = {
177
179
  ...ref.viewConfig.validAttributes.style,
178
- display: false
180
+ display: null
179
181
  };
180
182
  setRef(ref);
181
183
  } else if (ref?._viewConfig?.validAttributes?.style) {
182
184
  ref._viewConfig.validAttributes.style = {
183
185
  ...ref._viewConfig.validAttributes.style,
184
- display: false
186
+ display: null
185
187
  };
186
188
  setRef(ref);
187
189
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Object","defineProperty","exports","value","default","ScreenContext","InnerScreen","_react","_interopRequireDefault","require","_reactNative","_TransitionProgressContext","_DelayedFreeze","_core","_ScreenNativeComponent","_ModalScreenNativeComponent","_usePrevious","e","__esModule","_extends","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","AnimatedNativeScreen","Animated","createAnimatedComponent","ScreenNativeComponent","AnimatedNativeModalScreen","ModalScreenNativeComponent","SHEET_FIT_TO_CONTENTS","SHEET_COMPAT_LARGE","SHEET_COMPAT_MEDIUM","SHEET_COMPAT_ALL","SHEET_DIMMED_ALWAYS","assertDetentsArrayIsSorted","array","i","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","shouldFreeze","rest","sheetAllowedDetents","sheetLargestUndimmedDetentIndex","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","sheetElevation","sheetInitialDetentIndex","stackPresentation","onAppear","onDisappear","onWillAppear","onWillDisappear","isNativePlatformSupported","resolvedSheetAllowedDetents","resolvedSheetLargestUndimmedDetent","resolvedSheetInitialDetentIndex","AnimatedScreen","undefined","active","children","isNativeStack","gestureResponseDistance","onGestureCancel","style","handleRef","viewConfig","validAttributes","display","_viewConfig","freeze","createElement","zIndex","sheetLargestUndimmedDetent","sheetInitialDetent","start","end","top","bottom","onTransitionProgress","event","nativeEvent","useNativeDriver","Provider","View","createContext","Screen","ScreenWrapper","useContext","displayName","_default"],"sourceRoot":"../../../src","sources":["components/Screen.tsx"],"mappings":";AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,OAAA,GAAAF,OAAA,CAAAG,aAAA,GAAAH,OAAA,CAAAI,WAAA;AAEb,IAAAC,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,0BAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,cAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAGA,IAAAI,KAAA,GAAAJ,OAAA;AAOA,IAAAK,sBAAA,GAAAN,sBAAA,CAAAC,OAAA;AAGA,IAAAM,2BAAA,GAAAP,sBAAA,CAAAC,OAAA;AAGA,IAAAO,YAAA,GAAAP,OAAA;AAAoD,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAb,OAAA,EAAAa,CAAA;AAAA,SAAAE,SAAA,WAAAA,QAAA,GAAAnB,MAAA,CAAAoB,MAAA,GAAApB,MAAA,CAAAoB,MAAA,CAAAC,IAAA,eAAAC,CAAA,aAAAL,CAAA,MAAAA,CAAA,GAAAM,SAAA,CAAAC,MAAA,EAAAP,CAAA,UAAAQ,CAAA,GAAAF,SAAA,CAAAN,CAAA,YAAAS,CAAA,IAAAD,CAAA,OAAAE,cAAA,CAAAC,IAAA,CAAAH,CAAA,EAAAC,CAAA,MAAAJ,CAAA,CAAAI,CAAA,IAAAD,CAAA,CAAAC,CAAA,aAAAJ,CAAA,KAAAH,QAAA,CAAAU,KAAA,OAAAN,SAAA,KAPpD;AAUA,MAAMO,oBAAoB,GAAGC,qBAAQ,CAACC,uBAAuB,CAC3DC,8BACF,CAAC;AACD,MAAMC,yBAAyB,GAAGH,qBAAQ,CAACC,uBAAuB,CAChEG,mCACF,CAAC;;AAED;AACA;;AAkBA;AACA,MAAMC,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,MAAMC,kBAAkB,GAAG,CAAC,GAAG,CAAC;AAChC,MAAMC,mBAAmB,GAAG,CAAC,GAAG,CAAC;AACjC,MAAMC,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAEnC,MAAMC,mBAAmB,GAAG,CAAC,CAAC;AAC9B;;AAEA,SAASC,0BAA0BA,CAACC,KAAe,EAAE;EACnD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,CAAClB,MAAM,EAAEmB,CAAC,EAAE,EAAE;IACrC,IAAID,KAAK,CAACC,CAAC,GAAG,CAAC,CAAC,GAAGD,KAAK,CAACC,CAAC,CAAC,EAAE;MAC3B,MAAM,IAAIC,KAAK,CACb,gEACF,CAAC;IACH;EACF;AACF;;AAEA;AACA;AACA,SAASC,0BAA0BA,CACjCC,oBAAwD,EAC9C;EACV,IAAIC,KAAK,CAACC,OAAO,CAACF,oBAAoB,CAAC,EAAE;IACvC,IAAIG,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIJ,oBAAoB,CAACtB,MAAM,GAAG,CAAC,EAAE;MAChE,IAAI2B,OAAO,EAAE;QACXC,OAAO,CAACC,IAAI,CACV,iGACF,CAAC;MACH;MACAP,oBAAoB,GAAGA,oBAAoB,CAACQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD;IACA,IAAIH,OAAO,EAAE;MACXV,0BAA0B,CAACK,oBAAoB,CAAC;IAClD;IACA,OAAOA,oBAAoB;EAC7B,CAAC,MAAM,IAAIA,oBAAoB,KAAK,eAAe,EAAE;IACnD,OAAOV,qBAAqB;EAC9B,CAAC,MAAM,IAAIU,oBAAoB,KAAK,OAAO,EAAE;IAC3C,OAAOT,kBAAkB;EAC3B,CAAC,MAAM,IAAIS,oBAAoB,KAAK,QAAQ,EAAE;IAC5C,OAAOR,mBAAmB;EAC5B,CAAC,MAAM,IAAIQ,oBAAoB,KAAK,KAAK,EAAE;IACzC,OAAOP,gBAAgB;EACzB,CAAC,MAAM;IACL;IACA,OAAO,CAAC,GAAG,CAAC;EACd;AACF;AAEA,SAASgB,iCAAiCA,CACxCC,GAAmD,EACnDC,eAAuB,EACf;EACR,IAAI,OAAOD,GAAG,KAAK,QAAQ,EAAE;IAC3B,IAAI,CAACE,oBAAoB,CAACF,GAAG,EAAEhB,mBAAmB,EAAEiB,eAAe,CAAC,EAAE;MACpE,IAAIN,OAAO,EAAE;QACX,MAAM,IAAIP,KAAK,CACb,uHACF,CAAC;MACH;MACA;MACA,OAAOJ,mBAAmB;IAC5B;IACA,OAAOgB,GAAG;EACZ,CAAC,MAAM,IAAIA,GAAG,KAAK,MAAM,EAAE;IACzB,OAAOC,eAAe;EACxB,CAAC,MAAM,IAAID,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,KAAK,EAAE;IAC1C,OAAOhB,mBAAmB;EAC5B,CAAC,MAAM,IAAIgB,GAAG,KAAK,OAAO,EAAE;IAC1B,OAAO,CAAC;EACV,CAAC,MAAM,IAAIA,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAO,CAAC;EACV,CAAC,MAAM;IACL;IACA,OAAOhB,mBAAmB;EAC5B;AACF;AAEA,SAASmB,8BAA8BA,CACrCC,KAA6C,EAC7CH,eAAuB,EACf;EACR,IAAIG,KAAK,KAAK,MAAM,EAAE;IACpBA,KAAK,GAAGH,eAAe;EACzB,CAAC,MAAM,IAAIG,KAAK,IAAI,IAAI,EAAE;IACxB;IACAA,KAAK,GAAG,CAAC;EACX;EACA,IAAI,CAACF,oBAAoB,CAACE,KAAK,EAAE,CAAC,EAAEH,eAAe,CAAC,EAAE;IACpD,IAAIN,OAAO,EAAE;MACX,MAAM,IAAIP,KAAK,CACb,+GACF,CAAC;IACH;IACA;IACA,OAAO,CAAC;EACV;EACA,OAAOgB,KAAK;AACd;AAEA,SAASF,oBAAoBA,CAC3BvD,KAAa,EACb0D,UAAkB,EAClBC,UAAkB,EACT;EACT,OAAOC,MAAM,CAACC,SAAS,CAAC7D,KAAK,CAAC,IAAIA,KAAK,IAAI0D,UAAU,IAAI1D,KAAK,IAAI2D,UAAU;AAC9E;AAEO,MAAMxD,WAAW,GAAAJ,OAAA,CAAAI,WAAA,gBAAG2D,cAAK,CAACC,UAAU,CACzC,SAAS5D,WAAWA,CAAC6D,KAAK,EAAEC,GAAG,EAAE;EAC/B,MAAMC,QAAQ,GAAGJ,cAAK,CAACK,MAAM,CAAoB,IAAI,CAAC;EACtDL,cAAK,CAACM,mBAAmB,CAACH,GAAG,EAAE,MAAMC,QAAQ,CAACG,OAAQ,EAAE,EAAE,CAAC;EAC3D,MAAMC,iBAAiB,GAAG,IAAAC,wBAAW,EAACP,KAAK,CAACQ,aAAa,CAAC;EAE1D,MAAMC,MAAM,GAAIR,GAAe,IAAK;IAClCC,QAAQ,CAACG,OAAO,GAAGJ,GAAG;IACtBD,KAAK,CAACU,cAAc,GAAGT,GAAG,CAAC;EAC7B,CAAC;EAED,MAAMU,OAAO,GAAGb,cAAK,CAACK,MAAM,CAAC,IAAIvC,qBAAQ,CAACgD,KAAK,CAAC,CAAC,CAAC,CAAC,CAACP,OAAO;EAC3D,MAAMQ,QAAQ,GAAGf,cAAK,CAACK,MAAM,CAAC,IAAIvC,qBAAQ,CAACgD,KAAK,CAAC,CAAC,CAAC,CAAC,CAACP,OAAO;EAC5D,MAAMS,YAAY,GAAGhB,cAAK,CAACK,MAAM,CAAC,IAAIvC,qBAAQ,CAACgD,KAAK,CAAC,CAAC,CAAC,CAAC,CAACP,OAAO;EAEhE,MAAM;IACJU,OAAO,GAAG,IAAAC,oBAAc,EAAC,CAAC;IAC1BC,YAAY,GAAG,IAAAC,mBAAa,EAAC,CAAC;IAC9BC,YAAY;IACZ,GAAGC;EACL,CAAC,GAAGpB,KAAK;;EAET;EACA;EACA,MAAM;IACJ;IACAqB,mBAAmB,GAAG,CAAC,GAAG,CAAC;IAC3BC,+BAA+B,GAAGjD,mBAAmB;IACrDkD,mBAAmB,GAAG,KAAK;IAC3BC,iBAAiB,GAAG,CAAC,GAAG;IACxBC,8BAA8B,GAAG,IAAI;IACrCC,cAAc,GAAG,EAAE;IACnBC,uBAAuB,GAAG,CAAC;IAC3B;IACAC,iBAAiB;IACjB;IACAC,QAAQ;IACRC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGZ,IAAI;EAER,IAAIL,OAAO,IAAIkB,+BAAyB,EAAE;IACxC,MAAMC,2BAA2B,GAC/BxD,0BAA0B,CAAC2C,mBAAmB,CAAC;IACjD,MAAMc,kCAAkC,GACtC/C,iCAAiC,CAC/BkC,+BAA+B,EAC/BY,2BAA2B,CAAC7E,MAAM,GAAG,CACvC,CAAC;IACH,MAAM+E,+BAA+B,GAAG5C,8BAA8B,CACpEmC,uBAAuB,EACvBO,2BAA2B,CAAC7E,MAAM,GAAG,CACvC,CAAC;IACD;IACA,MAAMgF,cAAc,GAClBvD,qBAAQ,CAACC,EAAE,KAAK,SAAS,IACzB6C,iBAAiB,KAAKU,SAAS,IAC/BV,iBAAiB,KAAK,MAAM,IAC5BA,iBAAiB,KAAK,gBAAgB,IACtCA,iBAAiB,KAAK,2BAA2B,GAC7CjE,oBAAoB,GACpBI,yBAAyB;IAE/B,IAAI;MACF;MACA;MACA;MACAwE,MAAM;MACN/B,aAAa;MACbgC,QAAQ;MACRC,aAAa;MACbC,uBAAuB;MACvBC,eAAe;MACfC,KAAK;MACL,GAAG5C;IACL,CAAC,GAAGoB,IAAI;IAER,IAAImB,MAAM,KAAKD,SAAS,IAAI9B,aAAa,KAAK8B,SAAS,EAAE;MACvDrD,OAAO,CAACC,IAAI,CACV,+QACF,CAAC;MACDsB,aAAa,GAAG+B,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC;IAEA,IACEE,aAAa,IACbnC,iBAAiB,KAAKgC,SAAS,IAC/B9B,aAAa,KAAK8B,SAAS,EAC3B;MACA,IAAIhC,iBAAiB,GAAGE,aAAa,EAAE;QACrC,MAAM,IAAI/B,KAAK,CACb,8DACF,CAAC;MACH;IACF;IAEA,MAAMoE,SAAS,GAAI5C,GAAe,IAAK;MACrC,IAAIA,GAAG,EAAE6C,UAAU,EAAEC,eAAe,EAAEH,KAAK,EAAE;QAC3C3C,GAAG,CAAC6C,UAAU,CAACC,eAAe,CAACH,KAAK,GAAG;UACrC,GAAG3C,GAAG,CAAC6C,UAAU,CAACC,eAAe,CAACH,KAAK;UACvCI,OAAO,EAAE;QACX,CAAC;QACDvC,MAAM,CAACR,GAAG,CAAC;MACb,CAAC,MAAM,IAAIA,GAAG,EAAEgD,WAAW,EAAEF,eAAe,EAAEH,KAAK,EAAE;QACnD3C,GAAG,CAACgD,WAAW,CAACF,eAAe,CAACH,KAAK,GAAG;UACtC,GAAG3C,GAAG,CAACgD,WAAW,CAACF,eAAe,CAACH,KAAK;UACxCI,OAAO,EAAE;QACX,CAAC;QACDvC,MAAM,CAACR,GAAG,CAAC;MACb;IACF,CAAC;IAED,MAAMiD,MAAM,GACVjC,YAAY,KACXE,YAAY,KAAKmB,SAAS,GAAGnB,YAAY,GAAGX,aAAa,KAAK,CAAC,CAAC;IAEnE,oBACEpE,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAAC1G,cAAA,CAAAR,OAAa;MAACiH,MAAM,EAAEA;IAAO,gBAC5B9G,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAACd,cAAc,EAAArF,QAAA,KACTgD,KAAK;MACT;AACZ;AACA;AACA;AACA;MACY6B,QAAQ,EAAEA,QAAoC;MAC9CC,WAAW,EAAEA,WAA0C;MACvDC,YAAY,EAAEA,YAA4C;MAC1DC,eAAe,EAAEA,eAAkD;MACnEW,eAAe,EACZA,eAAe,KACf,MAAM;QACL;MAAA,CACD;MAEH;MACA;MACA;MACA;MACA;MAAA;MACAC,KAAK,EAAE,CAACA,KAAK,EAAE;QAAEQ,MAAM,EAAEd;MAAU,CAAC,CAAE;MACtC9B,aAAa,EAAEA,aAAc;MAC7Ba,mBAAmB,EAAEa,2BAA4B;MACjDmB,0BAA0B,EAAElB,kCAAmC;MAC/DT,cAAc,EAAEA,cAAe;MAC/BH,mBAAmB,EAAEA,mBAAoB;MACzCC,iBAAiB,EAAEA,iBAAkB;MACrCC,8BAA8B,EAAEA,8BAA+B;MAC/D6B,kBAAkB,EAAElB,+BAAgC;MACpDM,uBAAuB,EAAE;QACvBa,KAAK,EAAEb,uBAAuB,EAAEa,KAAK,IAAI,CAAC,CAAC;QAC3CC,GAAG,EAAEd,uBAAuB,EAAEc,GAAG,IAAI,CAAC,CAAC;QACvCC,GAAG,EAAEf,uBAAuB,EAAEe,GAAG,IAAI,CAAC,CAAC;QACvCC,MAAM,EAAEhB,uBAAuB,EAAEgB,MAAM,IAAI,CAAC;MAC9C;MACA;MACA;MAAA;MACAzD,GAAG,EAAE4C,SAAU;MACfc,oBAAoB,EAClB,CAAClB,aAAa,GACVH,SAAS,GACT1E,qBAAQ,CAACgG,KAAK,CACZ,CACE;QACEC,WAAW,EAAE;UACXhD,QAAQ;UACRF,OAAO;UACPG;QACF;MACF,CAAC,CACF,EACD;QAAEgD,eAAe,EAAE;MAAK,CAC1B;IACL,IACA,CAACrB,aAAa;IAAK;IAClBD,QAAQ,gBAERpG,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAAC3G,0BAAA,CAAAP,OAAyB,CAAC8H,QAAQ;MACjC/H,KAAK,EAAE;QACL6E,QAAQ;QACRF,OAAO;QACPG;MACF;IAAE,GACD0B,QACiC,CAExB,CACH,CAAC;EAEpB,CAAC,MAAM;IACL;IACA,IAAI;MACFD,MAAM;MACN/B,aAAa;MACboC,KAAK;MACL;MACAlC,cAAc;MACd,GAAGV;IACL,CAAC,GAAGoB,IAAI;IAER,IAAImB,MAAM,KAAKD,SAAS,IAAI9B,aAAa,KAAK8B,SAAS,EAAE;MACvD9B,aAAa,GAAG+B,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC;IACA,oBACEnG,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAAC5G,YAAA,CAAAqB,QAAQ,CAACoG,IAAI,EAAAhH,QAAA;MACZ4F,KAAK,EAAE,CAACA,KAAK,EAAE;QAAEI,OAAO,EAAExC,aAAa,KAAK,CAAC,GAAG,MAAM,GAAG;MAAO,CAAC,CAAE;MACnEP,GAAG,EAAEQ;IAAO,GACRT,KAAK,CACV,CAAC;EAEN;AACF,CACF,CAAC;;AAED;AACA;AACO,MAAM9D,aAAa,GAAAH,OAAA,CAAAG,aAAA,gBAAG4D,cAAK,CAACmE,aAAa,CAAC9H,WAAW,CAAC;AAE7D,MAAM+H,MAAM,gBAAGpE,cAAK,CAACC,UAAU,CAAoB,CAACC,KAAK,EAAEC,GAAG,KAAK;EACjE,MAAMkE,aAAa,GAAGrE,cAAK,CAACsE,UAAU,CAAClI,aAAa,CAAC,IAAIC,WAAW;EAEpE,oBAAOC,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAACgB,aAAa,EAAAnH,QAAA,KAAKgD,KAAK;IAAEC,GAAG,EAAEA;EAAI,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEFiE,MAAM,CAACG,WAAW,GAAG,QAAQ;AAAC,IAAAC,QAAA,GAAAvI,OAAA,CAAAE,OAAA,GAEfiI,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["Object","defineProperty","exports","value","default","ScreenContext","InnerScreen","_react","_interopRequireDefault","require","_reactNative","_TransitionProgressContext","_DelayedFreeze","_core","_ScreenNativeComponent","_ModalScreenNativeComponent","_usePrevious","e","__esModule","_extends","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","AnimatedNativeScreen","Animated","createAnimatedComponent","ScreenNativeComponent","AnimatedNativeModalScreen","ModalScreenNativeComponent","SHEET_FIT_TO_CONTENTS","SHEET_COMPAT_LARGE","SHEET_COMPAT_MEDIUM","SHEET_COMPAT_ALL","SHEET_DIMMED_ALWAYS","assertDetentsArrayIsSorted","array","i","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","shouldFreeze","rest","sheetAllowedDetents","sheetLargestUndimmedDetentIndex","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","sheetElevation","sheetInitialDetentIndex","stackPresentation","onAppear","onDisappear","onWillAppear","onWillDisappear","isNativePlatformSupported","resolvedSheetAllowedDetents","resolvedSheetLargestUndimmedDetent","resolvedSheetInitialDetentIndex","AnimatedScreen","undefined","active","children","isNativeStack","gestureResponseDistance","onGestureCancel","style","handleRef","viewConfig","validAttributes","display","_viewConfig","freeze","createElement","zIndex","sheetLargestUndimmedDetent","sheetInitialDetent","start","end","top","bottom","onTransitionProgress","event","nativeEvent","useNativeDriver","Provider","View","createContext","Screen","ScreenWrapper","useContext","displayName","_default"],"sourceRoot":"../../../src","sources":["components/Screen.tsx"],"mappings":";AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,OAAA,GAAAF,OAAA,CAAAG,aAAA,GAAAH,OAAA,CAAAI,WAAA;AAEb,IAAAC,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,0BAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,cAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAGA,IAAAI,KAAA,GAAAJ,OAAA;AAOA,IAAAK,sBAAA,GAAAN,sBAAA,CAAAC,OAAA;AAGA,IAAAM,2BAAA,GAAAP,sBAAA,CAAAC,OAAA;AAGA,IAAAO,YAAA,GAAAP,OAAA;AAAoD,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAb,OAAA,EAAAa,CAAA;AAAA,SAAAE,SAAA,WAAAA,QAAA,GAAAnB,MAAA,CAAAoB,MAAA,GAAApB,MAAA,CAAAoB,MAAA,CAAAC,IAAA,eAAAC,CAAA,aAAAL,CAAA,MAAAA,CAAA,GAAAM,SAAA,CAAAC,MAAA,EAAAP,CAAA,UAAAQ,CAAA,GAAAF,SAAA,CAAAN,CAAA,YAAAS,CAAA,IAAAD,CAAA,OAAAE,cAAA,CAAAC,IAAA,CAAAH,CAAA,EAAAC,CAAA,MAAAJ,CAAA,CAAAI,CAAA,IAAAD,CAAA,CAAAC,CAAA,aAAAJ,CAAA,KAAAH,QAAA,CAAAU,KAAA,OAAAN,SAAA,KAPpD;AAUA,MAAMO,oBAAoB,GAAGC,qBAAQ,CAACC,uBAAuB,CAC3DC,8BACF,CAAC;AACD,MAAMC,yBAAyB,GAAGH,qBAAQ,CAACC,uBAAuB,CAChEG,mCACF,CAAC;;AAED;AACA;;AAkBA;AACA,MAAMC,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,MAAMC,kBAAkB,GAAG,CAAC,GAAG,CAAC;AAChC,MAAMC,mBAAmB,GAAG,CAAC,GAAG,CAAC;AACjC,MAAMC,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAEnC,MAAMC,mBAAmB,GAAG,CAAC,CAAC;AAC9B;;AAEA,SAASC,0BAA0BA,CAACC,KAAe,EAAE;EACnD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,CAAClB,MAAM,EAAEmB,CAAC,EAAE,EAAE;IACrC,IAAID,KAAK,CAACC,CAAC,GAAG,CAAC,CAAC,GAAGD,KAAK,CAACC,CAAC,CAAC,EAAE;MAC3B,MAAM,IAAIC,KAAK,CACb,gEACF,CAAC;IACH;EACF;AACF;;AAEA;AACA;AACA,SAASC,0BAA0BA,CACjCC,oBAAwD,EAC9C;EACV,IAAIC,KAAK,CAACC,OAAO,CAACF,oBAAoB,CAAC,EAAE;IACvC,IAAIG,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIJ,oBAAoB,CAACtB,MAAM,GAAG,CAAC,EAAE;MAChE,IAAI2B,OAAO,EAAE;QACXC,OAAO,CAACC,IAAI,CACV,iGACF,CAAC;MACH;MACAP,oBAAoB,GAAGA,oBAAoB,CAACQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD;IACA,IAAIH,OAAO,EAAE;MACXV,0BAA0B,CAACK,oBAAoB,CAAC;IAClD;IACA,OAAOA,oBAAoB;EAC7B,CAAC,MAAM,IAAIA,oBAAoB,KAAK,eAAe,EAAE;IACnD,OAAOV,qBAAqB;EAC9B,CAAC,MAAM,IAAIU,oBAAoB,KAAK,OAAO,EAAE;IAC3C,OAAOT,kBAAkB;EAC3B,CAAC,MAAM,IAAIS,oBAAoB,KAAK,QAAQ,EAAE;IAC5C,OAAOR,mBAAmB;EAC5B,CAAC,MAAM,IAAIQ,oBAAoB,KAAK,KAAK,EAAE;IACzC,OAAOP,gBAAgB;EACzB,CAAC,MAAM;IACL;IACA,OAAOF,kBAAkB;EAC3B;AACF;AAEA,SAASkB,iCAAiCA,CACxCC,GAAmD,EACnDC,eAAuB,EACf;EACR,IAAI,OAAOD,GAAG,KAAK,QAAQ,EAAE;IAC3B,IAAI,CAACE,oBAAoB,CAACF,GAAG,EAAEhB,mBAAmB,EAAEiB,eAAe,CAAC,EAAE;MACpE,IAAIN,OAAO,EAAE;QACX,MAAM,IAAIP,KAAK,CACb,uHACF,CAAC;MACH;MACA;MACA,OAAOJ,mBAAmB;IAC5B;IACA,OAAOgB,GAAG;EACZ,CAAC,MAAM,IAAIA,GAAG,KAAK,MAAM,EAAE;IACzB,OAAOC,eAAe;EACxB,CAAC,MAAM,IAAID,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,KAAK,EAAE;IAC1C,OAAOhB,mBAAmB;EAC5B,CAAC,MAAM,IAAIgB,GAAG,KAAK,OAAO,EAAE;IAC1B,OAAO,CAAC;EACV,CAAC,MAAM,IAAIA,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAO,CAAC;EACV,CAAC,MAAM;IACL;IACA,OAAOhB,mBAAmB;EAC5B;AACF;AAEA,SAASmB,8BAA8BA,CACrCC,KAA6C,EAC7CH,eAAuB,EACf;EACR,IAAIG,KAAK,KAAK,MAAM,EAAE;IACpBA,KAAK,GAAGH,eAAe;EACzB,CAAC,MAAM,IAAIG,KAAK,IAAI,IAAI,EAAE;IACxB;IACAA,KAAK,GAAG,CAAC;EACX;EACA,IAAI,CAACF,oBAAoB,CAACE,KAAK,EAAE,CAAC,EAAEH,eAAe,CAAC,EAAE;IACpD,IAAIN,OAAO,EAAE;MACX,MAAM,IAAIP,KAAK,CACb,+GACF,CAAC;IACH;IACA;IACA,OAAO,CAAC;EACV;EACA,OAAOgB,KAAK;AACd;AAEA,SAASF,oBAAoBA,CAC3BvD,KAAa,EACb0D,UAAkB,EAClBC,UAAkB,EACT;EACT,OAAOC,MAAM,CAACC,SAAS,CAAC7D,KAAK,CAAC,IAAIA,KAAK,IAAI0D,UAAU,IAAI1D,KAAK,IAAI2D,UAAU;AAC9E;AAEO,MAAMxD,WAAW,GAAAJ,OAAA,CAAAI,WAAA,gBAAG2D,cAAK,CAACC,UAAU,CACzC,SAAS5D,WAAWA,CAAC6D,KAAK,EAAEC,GAAG,EAAE;EAC/B,MAAMC,QAAQ,GAAGJ,cAAK,CAACK,MAAM,CAAoB,IAAI,CAAC;EACtDL,cAAK,CAACM,mBAAmB,CAACH,GAAG,EAAE,MAAMC,QAAQ,CAACG,OAAQ,EAAE,EAAE,CAAC;EAC3D,MAAMC,iBAAiB,GAAG,IAAAC,wBAAW,EAACP,KAAK,CAACQ,aAAa,CAAC;EAE1D,MAAMC,MAAM,GAAIR,GAAe,IAAK;IAClCC,QAAQ,CAACG,OAAO,GAAGJ,GAAG;IACtBD,KAAK,CAACU,cAAc,GAAGT,GAAG,CAAC;EAC7B,CAAC;EAED,MAAMU,OAAO,GAAGb,cAAK,CAACK,MAAM,CAAC,IAAIvC,qBAAQ,CAACgD,KAAK,CAAC,CAAC,CAAC,CAAC,CAACP,OAAO;EAC3D,MAAMQ,QAAQ,GAAGf,cAAK,CAACK,MAAM,CAAC,IAAIvC,qBAAQ,CAACgD,KAAK,CAAC,CAAC,CAAC,CAAC,CAACP,OAAO;EAC5D,MAAMS,YAAY,GAAGhB,cAAK,CAACK,MAAM,CAAC,IAAIvC,qBAAQ,CAACgD,KAAK,CAAC,CAAC,CAAC,CAAC,CAACP,OAAO;EAEhE,MAAM;IACJU,OAAO,GAAG,IAAAC,oBAAc,EAAC,CAAC;IAC1BC,YAAY,GAAG,IAAAC,mBAAa,EAAC,CAAC;IAC9BC,YAAY;IACZ,GAAGC;EACL,CAAC,GAAGpB,KAAK;;EAET;EACA;EACA,MAAM;IACJ;IACAqB,mBAAmB,GAAG,CAAC,GAAG,CAAC;IAC3BC,+BAA+B,GAAGjD,mBAAmB;IACrDkD,mBAAmB,GAAG,KAAK;IAC3BC,iBAAiB,GAAG,CAAC,GAAG;IACxBC,8BAA8B,GAAG,IAAI;IACrCC,cAAc,GAAG,EAAE;IACnBC,uBAAuB,GAAG,CAAC;IAC3B;IACAC,iBAAiB;IACjB;IACAC,QAAQ;IACRC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGZ,IAAI;EAER,IAAIL,OAAO,IAAIkB,+BAAyB,EAAE;IACxC,MAAMC,2BAA2B,GAC/BxD,0BAA0B,CAAC2C,mBAAmB,CAAC;IACjD,MAAMc,kCAAkC,GACtC/C,iCAAiC,CAC/BkC,+BAA+B,EAC/BY,2BAA2B,CAAC7E,MAAM,GAAG,CACvC,CAAC;IACH,MAAM+E,+BAA+B,GAAG5C,8BAA8B,CACpEmC,uBAAuB,EACvBO,2BAA2B,CAAC7E,MAAM,GAAG,CACvC,CAAC;IACD;IACA,MAAMgF,cAAc,GAClBvD,qBAAQ,CAACC,EAAE,KAAK,SAAS,IACzB6C,iBAAiB,KAAKU,SAAS,IAC/BV,iBAAiB,KAAK,MAAM,IAC5BA,iBAAiB,KAAK,gBAAgB,IACtCA,iBAAiB,KAAK,2BAA2B,GAC7CjE,oBAAoB,GACpBI,yBAAyB;IAE/B,IAAI;MACF;MACA;MACA;MACAwE,MAAM;MACN/B,aAAa;MACbgC,QAAQ;MACRC,aAAa;MACbC,uBAAuB;MACvBC,eAAe;MACfC,KAAK;MACL,GAAG5C;IACL,CAAC,GAAGoB,IAAI;IAER,IAAImB,MAAM,KAAKD,SAAS,IAAI9B,aAAa,KAAK8B,SAAS,EAAE;MACvDrD,OAAO,CAACC,IAAI,CACV,+QACF,CAAC;MACDsB,aAAa,GAAG+B,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC;IAEA,IACEE,aAAa,IACbnC,iBAAiB,KAAKgC,SAAS,IAC/B9B,aAAa,KAAK8B,SAAS,EAC3B;MACA,IAAIhC,iBAAiB,GAAGE,aAAa,EAAE;QACrC,MAAM,IAAI/B,KAAK,CACb,8DACF,CAAC;MACH;IACF;IAEA,MAAMoE,SAAS,GAAI5C,GAAe,IAAK;MACrC;MACA;MACA,IAAIA,GAAG,EAAE6C,UAAU,EAAEC,eAAe,EAAEH,KAAK,EAAE;QAC3C3C,GAAG,CAAC6C,UAAU,CAACC,eAAe,CAACH,KAAK,GAAG;UACrC,GAAG3C,GAAG,CAAC6C,UAAU,CAACC,eAAe,CAACH,KAAK;UACvCI,OAAO,EAAE;QACX,CAAC;QACDvC,MAAM,CAACR,GAAG,CAAC;MACb,CAAC,MAAM,IAAIA,GAAG,EAAEgD,WAAW,EAAEF,eAAe,EAAEH,KAAK,EAAE;QACnD3C,GAAG,CAACgD,WAAW,CAACF,eAAe,CAACH,KAAK,GAAG;UACtC,GAAG3C,GAAG,CAACgD,WAAW,CAACF,eAAe,CAACH,KAAK;UACxCI,OAAO,EAAE;QACX,CAAC;QACDvC,MAAM,CAACR,GAAG,CAAC;MACb;IACF,CAAC;IAED,MAAMiD,MAAM,GACVjC,YAAY,KACXE,YAAY,KAAKmB,SAAS,GAAGnB,YAAY,GAAGX,aAAa,KAAK,CAAC,CAAC;IAEnE,oBACEpE,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAAC1G,cAAA,CAAAR,OAAa;MAACiH,MAAM,EAAEA;IAAO,gBAC5B9G,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAACd,cAAc,EAAArF,QAAA,KACTgD,KAAK;MACT;AACZ;AACA;AACA;AACA;MACY6B,QAAQ,EAAEA,QAAoC;MAC9CC,WAAW,EAAEA,WAA0C;MACvDC,YAAY,EAAEA,YAA4C;MAC1DC,eAAe,EAAEA,eAAkD;MACnEW,eAAe,EACZA,eAAe,KACf,MAAM;QACL;MAAA,CACD;MAEH;MACA;MACA;MACA;MACA;MAAA;MACAC,KAAK,EAAE,CAACA,KAAK,EAAE;QAAEQ,MAAM,EAAEd;MAAU,CAAC,CAAE;MACtC9B,aAAa,EAAEA,aAAc;MAC7Ba,mBAAmB,EAAEa,2BAA4B;MACjDmB,0BAA0B,EAAElB,kCAAmC;MAC/DT,cAAc,EAAEA,cAAe;MAC/BH,mBAAmB,EAAEA,mBAAoB;MACzCC,iBAAiB,EAAEA,iBAAkB;MACrCC,8BAA8B,EAAEA,8BAA+B;MAC/D6B,kBAAkB,EAAElB,+BAAgC;MACpDM,uBAAuB,EAAE;QACvBa,KAAK,EAAEb,uBAAuB,EAAEa,KAAK,IAAI,CAAC,CAAC;QAC3CC,GAAG,EAAEd,uBAAuB,EAAEc,GAAG,IAAI,CAAC,CAAC;QACvCC,GAAG,EAAEf,uBAAuB,EAAEe,GAAG,IAAI,CAAC,CAAC;QACvCC,MAAM,EAAEhB,uBAAuB,EAAEgB,MAAM,IAAI,CAAC;MAC9C;MACA;MACA;MAAA;MACAzD,GAAG,EAAE4C,SAAU;MACfc,oBAAoB,EAClB,CAAClB,aAAa,GACVH,SAAS,GACT1E,qBAAQ,CAACgG,KAAK,CACZ,CACE;QACEC,WAAW,EAAE;UACXhD,QAAQ;UACRF,OAAO;UACPG;QACF;MACF,CAAC,CACF,EACD;QAAEgD,eAAe,EAAE;MAAK,CAC1B;IACL,IACA,CAACrB,aAAa;IAAK;IAClBD,QAAQ,gBAERpG,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAAC3G,0BAAA,CAAAP,OAAyB,CAAC8H,QAAQ;MACjC/H,KAAK,EAAE;QACL6E,QAAQ;QACRF,OAAO;QACPG;MACF;IAAE,GACD0B,QACiC,CAExB,CACH,CAAC;EAEpB,CAAC,MAAM;IACL;IACA,IAAI;MACFD,MAAM;MACN/B,aAAa;MACboC,KAAK;MACL;MACAlC,cAAc;MACd,GAAGV;IACL,CAAC,GAAGoB,IAAI;IAER,IAAImB,MAAM,KAAKD,SAAS,IAAI9B,aAAa,KAAK8B,SAAS,EAAE;MACvD9B,aAAa,GAAG+B,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC;IACA,oBACEnG,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAAC5G,YAAA,CAAAqB,QAAQ,CAACoG,IAAI,EAAAhH,QAAA;MACZ4F,KAAK,EAAE,CAACA,KAAK,EAAE;QAAEI,OAAO,EAAExC,aAAa,KAAK,CAAC,GAAG,MAAM,GAAG;MAAO,CAAC,CAAE;MACnEP,GAAG,EAAEQ;IAAO,GACRT,KAAK,CACV,CAAC;EAEN;AACF,CACF,CAAC;;AAED;AACA;AACO,MAAM9D,aAAa,GAAAH,OAAA,CAAAG,aAAA,gBAAG4D,cAAK,CAACmE,aAAa,CAAC9H,WAAW,CAAC;AAE7D,MAAM+H,MAAM,gBAAGpE,cAAK,CAACC,UAAU,CAAoB,CAACC,KAAK,EAAEC,GAAG,KAAK;EACjE,MAAMkE,aAAa,GAAGrE,cAAK,CAACsE,UAAU,CAAClI,aAAa,CAAC,IAAIC,WAAW;EAEpE,oBAAOC,MAAA,CAAAH,OAAA,CAAAkH,aAAA,CAACgB,aAAa,EAAAnH,QAAA,KAAKgD,KAAK;IAAEC,GAAG,EAAEA;EAAI,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEFiE,MAAM,CAACG,WAAW,GAAG,QAAQ;AAAC,IAAAC,QAAA,GAAAvI,OAAA,CAAAE,OAAA,GAEfiI,MAAM","ignoreList":[]}
@@ -62,8 +62,9 @@ const MaybeNestedStack = ({
62
62
  (0, _warnOnce.default)(!isAndroid && stackPresentation !== 'push' && headerShownPreviousRef.current !== headerShown, `Dynamically changing 'headerShown' in modals will result in remounting the screen and losing all local state. See options for the screen '${route.name}'.`);
63
63
  headerShownPreviousRef.current = headerShown;
64
64
  }, [headerShown, stackPresentation, route.name]);
65
+ const formSheetAdjustedContentStyle = stackPresentation === 'formSheet' ? _reactNative.Platform.OS === 'ios' ? styles.absoluteFillNoBottom : sheetAllowedDetents === 'fitToContents' ? null : styles.container : styles.container;
65
66
  const content = /*#__PURE__*/React.createElement(Container, {
66
- style: [stackPresentation === 'formSheet' ? _reactNative.Platform.OS === 'ios' ? styles.absoluteFillNoBottom : sheetAllowedDetents === 'fitToContents' ? null : styles.container : styles.container, stackPresentation !== 'transparentModal' && stackPresentation !== 'containedTransparentModal' && {
67
+ style: [formSheetAdjustedContentStyle, stackPresentation !== 'transparentModal' && stackPresentation !== 'containedTransparentModal' && {
67
68
  backgroundColor: colors.background
68
69
  }, contentStyle]
69
70
  // @ts-ignore Wrong props passed to View
@@ -116,6 +117,7 @@ const RouteView = ({
116
117
  headerShown,
117
118
  hideKeyboardOnSwipe,
118
119
  homeIndicatorHidden,
120
+ sheetAllowedDetents = [1.0],
119
121
  sheetLargestUndimmedDetentIndex = 'none',
120
122
  sheetGrabberVisible = false,
121
123
  sheetCornerRadius = -1.0,
@@ -140,7 +142,6 @@ const RouteView = ({
140
142
  contentStyle
141
143
  } = options;
142
144
  let {
143
- sheetAllowedDetents = [1.0],
144
145
  customAnimationOnSwipe,
145
146
  fullScreenSwipeEnabled,
146
147
  gestureResponseDistance,
@@ -158,9 +159,6 @@ const RouteView = ({
158
159
  backgroundColor: flattenContentStyles?.backgroundColor
159
160
  };
160
161
  }
161
- if (sheetAllowedDetents === 'fitToContents') {
162
- sheetAllowedDetents = [-1];
163
- }
164
162
  if (swipeDirection === 'vertical') {
165
163
  // for `vertical` direction to work, we need to set `fullScreenSwipeEnabled` to `true`
166
164
  // so the screen can be dismissed from any point on screen.