@lodev09/react-native-true-sheet 3.9.0-beta.3 → 3.9.0-beta.4

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 (25) hide show
  1. package/android/build.gradle +2 -1
  2. package/android/src/main/java/com/lodev09/truesheet/TrueSheetContainerView.kt +5 -0
  3. package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentView.kt +21 -2
  4. package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +55 -23
  5. package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +53 -38
  6. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetCoordinatorLayout.kt +30 -2
  7. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetKeyboardObserver.kt +16 -9
  8. package/android/src/main/java/com/lodev09/truesheet/utils/ViewUtils.kt +1 -0
  9. package/ios/TrueSheetView.mm +1 -1
  10. package/ios/TrueSheetViewController.mm +26 -14
  11. package/ios/core/RNScreensEventObserver.mm +5 -1
  12. package/lib/module/TrueSheet.js +17 -7
  13. package/lib/module/TrueSheet.js.map +1 -1
  14. package/lib/module/navigation/screen/useSheetScreenState.js +21 -21
  15. package/lib/module/navigation/screen/useSheetScreenState.js.map +1 -1
  16. package/lib/module/reanimated/ReanimatedTrueSheetProvider.js +3 -3
  17. package/lib/module/reanimated/ReanimatedTrueSheetProvider.js.map +1 -1
  18. package/lib/typescript/src/TrueSheet.d.ts +2 -0
  19. package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
  20. package/lib/typescript/src/navigation/screen/useSheetScreenState.d.ts.map +1 -1
  21. package/lib/typescript/src/reanimated/ReanimatedTrueSheetProvider.d.ts.map +1 -1
  22. package/package.json +1 -1
  23. package/src/TrueSheet.tsx +22 -7
  24. package/src/navigation/screen/useSheetScreenState.ts +27 -20
  25. package/src/reanimated/ReanimatedTrueSheetProvider.tsx +5 -6
@@ -96,10 +96,11 @@ repositories {
96
96
  }
97
97
 
98
98
  def kotlin_version = getExtOrDefault("kotlinVersion")
99
+ def material_version = getExtOrDefault("materialVersion") ?: "1.12.0"
99
100
 
100
101
  dependencies {
101
102
  implementation "com.facebook.react:react-android"
102
103
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
103
- implementation "com.google.android.material:material:1.12.0"
104
+ implementation "com.google.android.material:material:$material_version"
104
105
  }
105
106
 
@@ -10,6 +10,7 @@ import com.facebook.react.views.view.ReactViewGroup
10
10
  interface TrueSheetContainerViewDelegate {
11
11
  val eventDispatcher: EventDispatcher?
12
12
  fun containerViewContentDidChangeSize(width: Int, height: Int)
13
+ fun containerViewContentDidScroll()
13
14
  fun containerViewHeaderDidChangeSize(width: Int, height: Int)
14
15
  fun containerViewFooterDidChangeSize(width: Int, height: Int)
15
16
  }
@@ -119,6 +120,10 @@ class TrueSheetContainerView(reactContext: ThemedReactContext) :
119
120
  delegate?.containerViewContentDidChangeSize(width, height)
120
121
  }
121
122
 
123
+ override fun contentViewDidScroll() {
124
+ delegate?.containerViewContentDidScroll()
125
+ }
126
+
122
127
  override fun headerViewDidChangeSize(width: Int, height: Int) {
123
128
  headerHeight = height
124
129
  delegate?.containerViewHeaderDidChangeSize(width, height)
@@ -10,12 +10,14 @@ import com.facebook.react.uimanager.ThemedReactContext
10
10
  import com.facebook.react.views.view.ReactViewGroup
11
11
  import com.lodev09.truesheet.core.TrueSheetKeyboardObserver
12
12
  import com.lodev09.truesheet.core.TrueSheetKeyboardObserverDelegate
13
+ import com.lodev09.truesheet.utils.isDescendantOf
13
14
 
14
15
  /**
15
16
  * Delegate interface for content view size changes
16
17
  */
17
18
  interface TrueSheetContentViewDelegate {
18
19
  fun contentViewDidChangeSize(width: Int, height: Int)
20
+ fun contentViewDidScroll()
19
21
  }
20
22
 
21
23
  /**
@@ -30,6 +32,7 @@ class TrueSheetContentView(private val reactContext: ThemedReactContext) : React
30
32
  private var lastHeight = 0
31
33
 
32
34
  private var pinnedScrollView: ScrollView? = null
35
+ private var cachedScrollView: ScrollView? = null
33
36
  private var originalScrollViewPaddingBottom: Int = 0
34
37
  private var bottomInset: Int = 0
35
38
 
@@ -66,7 +69,8 @@ class TrueSheetContentView(private val reactContext: ThemedReactContext) : React
66
69
  val scrollView = findScrollView(this)
67
70
 
68
71
  if (scrollView != pinnedScrollView) {
69
- // Restore previous scroll view's padding
72
+ // Clean up previous scroll view
73
+ pinnedScrollView?.setOnScrollChangeListener(null as View.OnScrollChangeListener?)
70
74
  pinnedScrollView?.setPadding(
71
75
  pinnedScrollView!!.paddingLeft,
72
76
  pinnedScrollView!!.paddingTop,
@@ -76,6 +80,12 @@ class TrueSheetContentView(private val reactContext: ThemedReactContext) : React
76
80
 
77
81
  pinnedScrollView = scrollView
78
82
  originalScrollViewPaddingBottom = scrollView?.paddingBottom ?: 0
83
+
84
+ scrollView?.setOnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
85
+ if (scrollY != oldScrollY) {
86
+ delegate?.contentViewDidScroll()
87
+ }
88
+ }
79
89
  }
80
90
 
81
91
  scrollView?.let {
@@ -90,6 +100,7 @@ class TrueSheetContentView(private val reactContext: ThemedReactContext) : React
90
100
  }
91
101
 
92
102
  fun clearScrollable() {
103
+ pinnedScrollView?.setOnScrollChangeListener(null as View.OnScrollChangeListener?)
93
104
  pinnedScrollView?.setPadding(
94
105
  pinnedScrollView!!.paddingLeft,
95
106
  pinnedScrollView!!.paddingTop,
@@ -97,11 +108,19 @@ class TrueSheetContentView(private val reactContext: ThemedReactContext) : React
97
108
  originalScrollViewPaddingBottom
98
109
  )
99
110
  pinnedScrollView = null
111
+ cachedScrollView = null
100
112
  originalScrollViewPaddingBottom = 0
101
113
  bottomInset = 0
102
114
  }
103
115
 
104
- fun findScrollView(): ScrollView? = findScrollView(this)
116
+ fun findScrollView(): ScrollView? {
117
+ // Return cached if still valid (attached and descendant of this view)
118
+ cachedScrollView?.let {
119
+ if (it.isAttachedToWindow && it.isDescendantOf(this)) return it
120
+ cachedScrollView = null
121
+ }
122
+ return findScrollView(this as View).also { cachedScrollView = it }
123
+ }
105
124
 
106
125
  private fun findScrollView(view: View): ScrollView? {
107
126
  if (view is ScrollView) {
@@ -343,32 +343,49 @@ class TrueSheetView(private val reactContext: ThemedReactContext) :
343
343
 
344
344
  @UiThread
345
345
  fun present(detentIndex: Int, animated: Boolean = true, promiseCallback: () -> Unit) {
346
- if (!viewController.isPresented) {
347
- // Dismiss keyboard if focused view is within a sheet or if target detent will be dimmed
348
- val parentSheet = TrueSheetStackManager.getTopmostSheet()
349
- val isFocusedViewWithinSheet = parentSheet?.viewController?.isFocusedViewWithinSheet() == true
350
- val shouldDismissKeyboard = isFocusedViewWithinSheet || viewController.isDimmedAtDetentIndex(detentIndex)
351
- if (KeyboardUtils.isKeyboardVisible(reactContext) && shouldDismissKeyboard) {
352
- viewController.saveFocusedView()
353
- KeyboardUtils.dismiss(this) {
354
- post { present(detentIndex, animated, promiseCallback) }
355
- }
356
- return
357
- }
346
+ if (viewController.isPresented) {
347
+ RNLog.w(reactContext, "TrueSheet: sheet is already presented. Use resize() to change detent.")
348
+ promiseCallback()
349
+ return
350
+ }
358
351
 
359
- // Attach coordinator to the root container
360
- rootContainerView = findRootContainerView()
361
- viewController.coordinatorLayout?.let { rootContainerView?.addView(it) }
352
+ if (viewController.coordinatorLayout == null || viewController.sheetView == null) {
353
+ RNLog.w(reactContext, "TrueSheet: sheet is not ready. Ensure it is mounted before presenting.")
354
+ promiseCallback()
355
+ return
356
+ }
362
357
 
363
- // Register with observer to track sheet stack hierarchy
364
- viewController.parentSheetView = TrueSheetStackManager.registerSheet(this)
358
+ // Dismiss keyboard if focused view is within a sheet or if target detent will be dimmed
359
+ val parentSheet = TrueSheetStackManager.getTopmostSheet()
360
+ val isFocusedViewWithinSheet = parentSheet?.viewController?.isFocusedViewWithinSheet() == true
361
+ val shouldDismissKeyboard = isFocusedViewWithinSheet || viewController.isDimmedAtDetentIndex(detentIndex)
362
+ if (KeyboardUtils.isKeyboardVisible(reactContext) && shouldDismissKeyboard) {
363
+ viewController.saveFocusedView()
364
+ KeyboardUtils.dismiss(this) {
365
+ post { present(detentIndex, animated, promiseCallback) }
366
+ }
367
+ return
365
368
  }
369
+
370
+ // Attach coordinator to the root container
371
+ rootContainerView = findRootContainerView()
372
+ viewController.coordinatorLayout?.let { rootContainerView?.addView(it) }
373
+
374
+ // Register with observer to track sheet stack hierarchy
375
+ viewController.parentSheetView = TrueSheetStackManager.registerSheet(this)
376
+
366
377
  viewController.presentPromise = promiseCallback
367
378
  viewController.present(detentIndex, animated)
368
379
  }
369
380
 
370
381
  @UiThread
371
382
  fun dismiss(animated: Boolean = true, promiseCallback: () -> Unit) {
383
+ if (viewController.isBeingDismissed || !viewController.isPresented) {
384
+ RNLog.w(reactContext, "TrueSheet: sheet is already dismissed. No need to dismiss it again.")
385
+ promiseCallback()
386
+ return
387
+ }
388
+
372
389
  // Dismiss all sheets above first
373
390
  dismissStack(animated) {}
374
391
 
@@ -379,20 +396,31 @@ class TrueSheetView(private val reactContext: ThemedReactContext) :
379
396
 
380
397
  @UiThread
381
398
  fun dismissStack(animated: Boolean = true, promiseCallback: () -> Unit) {
399
+ if (viewController.isBeingDismissed || !viewController.isPresented) {
400
+ RNLog.w(reactContext, "TrueSheet: sheet is already dismissed. No need to dismiss it again.")
401
+ promiseCallback()
402
+ return
403
+ }
404
+
382
405
  val sheetsAbove = TrueSheetStackManager.getSheetsAbove(this)
383
- if (sheetsAbove.isNotEmpty()) {
384
- // Create snapshot only for topmost sheet (first in reversed list)
385
- sheetsAbove.firstOrNull()?.viewController?.createSheetSnapshot()
406
+ // Create snapshot only for topmost sheet (first in reversed list)
407
+ sheetsAbove.firstOrNull()?.viewController?.createSheetSnapshot()
386
408
 
387
- for (sheet in sheetsAbove) {
388
- sheet.viewController.dismiss(animated)
389
- }
409
+ for (sheet in sheetsAbove) {
410
+ sheet.viewController.dismiss(animated)
390
411
  }
412
+
391
413
  promiseCallback()
392
414
  }
393
415
 
394
416
  @UiThread
395
417
  fun resize(detentIndex: Int, promiseCallback: () -> Unit) {
418
+ if (!viewController.isPresented) {
419
+ RNLog.w(reactContext, "TrueSheet: Cannot resize. Sheet is not presented.")
420
+ promiseCallback()
421
+ return
422
+ }
423
+
396
424
  viewController.resizePromise = promiseCallback
397
425
  viewController.resize(detentIndex)
398
426
  }
@@ -556,6 +584,10 @@ class TrueSheetView(private val reactContext: ThemedReactContext) :
556
584
  updateSheetIfNeeded()
557
585
  }
558
586
 
587
+ override fun containerViewContentDidScroll() {
588
+ viewController.commitKeyboardDetent()
589
+ }
590
+
559
591
  override fun containerViewHeaderDidChangeSize(width: Int, height: Int) {
560
592
  updateSheetIfNeeded()
561
593
  }
@@ -173,6 +173,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
173
173
 
174
174
  // Keyboard State
175
175
  private var detentIndexBeforeKeyboard: Int = -1
176
+ private var isKeyboardDismissProgrammatic = false
176
177
  private var focusedViewBeforeBlur: View? = null
177
178
 
178
179
  // Promises
@@ -212,10 +213,6 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
212
213
  var insetAdjustment: TrueSheetInsetAdjustment = TrueSheetInsetAdjustment.AUTOMATIC
213
214
 
214
215
  var scrollable: Boolean = false
215
- set(value) {
216
- field = value
217
- coordinatorLayout?.scrollable = value
218
- }
219
216
 
220
217
  var scrollableOptions: ReadableMap? = null
221
218
 
@@ -344,7 +341,6 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
344
341
  // Create coordinator layout
345
342
  coordinatorLayout = TrueSheetCoordinatorLayout(reactContext).apply {
346
343
  delegate = this@TrueSheetViewController
347
- scrollable = this@TrueSheetViewController.scrollable
348
344
  }
349
345
 
350
346
  sheetView = TrueSheetBottomSheetView(reactContext).apply {
@@ -383,6 +379,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
383
379
  isPresentAnimating = false
384
380
  lastEmittedPositionPx = -1
385
381
  detentIndexBeforeKeyboard = -1
382
+ isKeyboardDismissProgrammatic = false
386
383
  focusedViewBeforeBlur = null
387
384
  shouldAnimatePresent = true
388
385
  }
@@ -457,7 +454,9 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
457
454
  sheetView?.let { emitChangePositionDelegate(it.top, realtime = false) }
458
455
  }
459
456
 
457
+ override val isScrollable: Boolean get() = scrollable
460
458
  override fun findScrollView(): ScrollView? = containerView?.contentView?.findScrollView()
459
+ override fun findSheetView(): TrueSheetBottomSheetView? = sheetView
461
460
 
462
461
  // =============================================================================
463
462
  // MARK: - TrueSheetDimViewDelegate
@@ -604,6 +603,10 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
604
603
  }
605
604
  }
606
605
  }
606
+
607
+ if (!isKeyboardTransitioning) {
608
+ updateDimAmount(animated = true)
609
+ }
607
610
  }
608
611
 
609
612
  // =============================================================================
@@ -658,22 +661,9 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
658
661
  // =============================================================================
659
662
 
660
663
  fun present(detentIndex: Int, animated: Boolean = true) {
661
- val coordinator = this.coordinatorLayout ?: run {
662
- RNLog.w(reactContext, "TrueSheet: No coordinator layout available. Ensure the sheet is mounted before presenting.")
663
- return
664
- }
665
-
666
- val sheet = this.sheetView ?: run {
667
- RNLog.w(reactContext, "TrueSheet: No sheet view available.")
668
- return
669
- }
670
-
671
- if (isPresented) {
672
- RNLog.w(reactContext, "TrueSheet: sheet is already presented. Use resize() to change detent.")
673
- presentPromise?.invoke()
674
- presentPromise = null
675
- return
676
- }
664
+ val coordinator = this.coordinatorLayout ?: return
665
+ val sheet = this.sheetView ?: return
666
+ if (isPresented) return
677
667
 
678
668
  shouldAnimatePresent = animated
679
669
  currentDetentIndex = detentIndex
@@ -710,12 +700,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
710
700
  }
711
701
 
712
702
  fun resize(detentIndex: Int) {
713
- if (!isPresented) {
714
- RNLog.w(reactContext, "TrueSheet: Cannot resize. Sheet is not presented.")
715
- resizePromise?.invoke()
716
- resizePromise = null
717
- return
718
- }
703
+ if (!isPresented) return
719
704
 
720
705
  // Commit the new index so keyboardWillHide restores to it instead of the stale one
721
706
  if (detentIndexBeforeKeyboard >= 0) {
@@ -765,6 +750,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
765
750
  }
766
751
 
767
752
  private fun dismissKeyboard() {
753
+ isKeyboardDismissProgrammatic = true
768
754
  KeyboardUtils.dismiss(reactContext)
769
755
  }
770
756
 
@@ -816,7 +802,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
816
802
  // MARK: - Sheet Configuration
817
803
  // =============================================================================
818
804
 
819
- fun setupSheetDetents() {
805
+ fun setupSheetDetents(applyState: Boolean = true) {
820
806
  val behavior = this.behavior ?: run {
821
807
  RNLog.e(reactContext, "TrueSheet: behavior is null in setupSheetDetents")
822
808
  return
@@ -861,7 +847,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
861
847
 
862
848
  updateStateDimensions(expandedOffset)
863
849
 
864
- if (isPresented) {
850
+ if (isPresented && applyState) {
865
851
  setStateForDetentIndex(currentDetentIndex)
866
852
  }
867
853
 
@@ -939,8 +925,13 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
939
925
  if (!dimmed) return
940
926
  if (contentHeight == 0) return
941
927
 
942
- val keyboardOffset = if (isBeingDismissed) 0 else currentKeyboardInset
943
- val top = (sheetTop ?: sheetView?.top ?: return) + keyboardOffset
928
+ // While keyboard is active or transitioning, use the target detent position for dim
929
+ val top = if (keyboardInset > 0 || isKeyboardTransitioning) {
930
+ detentCalculator.getSheetTopForDetentIndex(currentDetentIndex)
931
+ } else {
932
+ val keyboardOffset = if (isBeingDismissed) 0 else currentKeyboardInset
933
+ (sheetTop ?: sheetView?.top ?: return) + keyboardOffset
934
+ }
944
935
 
945
936
  if (animated) {
946
937
  val targetAlpha = dimView?.calculateAlpha(
@@ -1019,27 +1010,47 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
1019
1010
  if (!shouldHandleKeyboard()) return
1020
1011
  detentIndexBeforeKeyboard = currentDetentIndex
1021
1012
  setupSheetDetents()
1022
- setStateForDetentIndex(detents.size - 1)
1013
+ currentDetentIndex = detents.size - 1
1014
+ setStateForDetentIndex(currentDetentIndex)
1015
+ updateDimAmount(animated = true)
1023
1016
  }
1024
1017
 
1025
1018
  override fun keyboardWillHide() {
1026
1019
  if (!shouldHandleKeyboard(checkFocus = false)) return
1027
- setupSheetDetents()
1028
- if (!isBeingDismissed && detentIndexBeforeKeyboard >= 0) {
1029
- setStateForDetentIndex(detentIndexBeforeKeyboard)
1020
+ val restoring = !isBeingDismissed && detentIndexBeforeKeyboard >= 0
1021
+
1022
+ // Skip reconfigure during interactive keyboard dismiss (e.g. keyboardDismissMode="on-drag")
1023
+ // to prevent the sheet from jumping. keyboardDidHide will reconfigure after.
1024
+ if (restoring || isKeyboardDismissProgrammatic) {
1025
+ setupSheetDetents()
1026
+ if (restoring) {
1027
+ currentDetentIndex = detentIndexBeforeKeyboard
1028
+ setStateForDetentIndex(currentDetentIndex)
1029
+ }
1030
1030
  }
1031
+
1032
+ updateDimAmount(
1033
+ sheetTop = detentCalculator.getSheetTopForDetentIndex(currentDetentIndex),
1034
+ animated = true
1035
+ )
1031
1036
  }
1032
1037
 
1033
1038
  override fun keyboardDidHide() {
1034
1039
  if (!shouldHandleKeyboard(checkFocus = false)) return
1035
1040
  detentIndexBeforeKeyboard = -1
1041
+ isKeyboardDismissProgrammatic = false
1042
+ setupSheetDetents(applyState = false)
1036
1043
  positionFooter()
1044
+ updateDimAmount(
1045
+ sheetTop = detentCalculator.getSheetTopForDetentIndex(currentDetentIndex),
1046
+ animated = true
1047
+ )
1037
1048
  }
1038
1049
 
1039
1050
  override fun keyboardDidChangeHeight(height: Int) {
1040
- // Skip focus check if already handling keyboard (focus may be lost during hide)
1041
- val isHandlingKeyboard = detentIndexBeforeKeyboard >= 0
1042
- if (!shouldHandleKeyboard(checkFocus = !isHandlingKeyboard)) return
1051
+ // Skip focus check during active keyboard transitions (focus may be lost during hide)
1052
+ val skipFocusCheck = detentIndexBeforeKeyboard >= 0 || isKeyboardTransitioning
1053
+ if (!shouldHandleKeyboard(checkFocus = !skipFocusCheck)) return
1043
1054
  positionFooter()
1044
1055
  }
1045
1056
 
@@ -1069,6 +1080,10 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
1069
1080
  private fun getPositionDpForView(sheetView: View): Float =
1070
1081
  detentCalculator.getPositionDp(detentCalculator.getVisibleSheetHeight(sheetView.top))
1071
1082
 
1083
+ fun commitKeyboardDetent() {
1084
+ detentIndexBeforeKeyboard = -1
1085
+ }
1086
+
1072
1087
  private fun handleDragBegin(sheetView: View) {
1073
1088
  detentIndexBeforeKeyboard = -1
1074
1089
 
@@ -9,11 +9,14 @@ import android.widget.ScrollView
9
9
  import androidx.coordinatorlayout.widget.CoordinatorLayout
10
10
  import com.facebook.react.uimanager.PointerEvents
11
11
  import com.facebook.react.uimanager.ReactPointerEventsView
12
+ import com.lodev09.truesheet.utils.isDescendantOf
12
13
 
13
14
  interface TrueSheetCoordinatorLayoutDelegate {
15
+ val isScrollable: Boolean
14
16
  fun coordinatorLayoutDidLayout(changed: Boolean)
15
17
  fun coordinatorLayoutDidChangeConfiguration()
16
18
  fun findScrollView(): ScrollView?
19
+ fun findSheetView(): TrueSheetBottomSheetView?
17
20
  }
18
21
 
19
22
  /**
@@ -27,7 +30,6 @@ class TrueSheetCoordinatorLayout(context: Context) :
27
30
  ReactPointerEventsView {
28
31
 
29
32
  var delegate: TrueSheetCoordinatorLayoutDelegate? = null
30
- var scrollable: Boolean = false
31
33
 
32
34
  private val touchSlop: Int = ViewConfiguration.get(context).scaledTouchSlop
33
35
  private var dragging = false
@@ -63,6 +65,29 @@ class TrueSheetCoordinatorLayout(context: Context) :
63
65
  override val pointerEvents: PointerEvents
64
66
  get() = PointerEvents.BOX_NONE
65
67
 
68
+ /**
69
+ * Clears stale `nestedScrollingChildRef` from BottomSheetBehavior.
70
+ *
71
+ * `BottomSheetBehavior.onLayoutChild` calls `findScrollingChild()` which traverses the
72
+ * entire sheet subtree. When a child sheet with a ScrollView is dismissed, the ScrollView
73
+ * returns to this sheet's view hierarchy. `onLayoutChild` may then capture a ref to that
74
+ * ScrollView even though it doesn't belong to this sheet, blocking drag interactions.
75
+ */
76
+ private fun clearStaleNestedScrollingChildRef() {
77
+ val sheet = delegate?.findSheetView() ?: return
78
+ val behavior = sheet.behavior ?: return
79
+ try {
80
+ val field = behavior.javaClass.getDeclaredField("nestedScrollingChildRef")
81
+ field.isAccessible = true
82
+ @Suppress("UNCHECKED_CAST")
83
+ val ref = field.get(behavior) as? java.lang.ref.WeakReference<android.view.View> ?: return
84
+ val view = ref.get() ?: return
85
+ if (!view.isDescendantOf(sheet)) {
86
+ ref.clear()
87
+ }
88
+ } catch (_: Exception) {}
89
+ }
90
+
66
91
  /**
67
92
  * Intercepts touch events for ScrollViews that can't scroll (content < viewport),
68
93
  * allowing the sheet to be dragged in these cases.
@@ -71,7 +96,10 @@ class TrueSheetCoordinatorLayout(context: Context) :
71
96
  * See: https://github.com/facebook/react-native/pull/44099
72
97
  */
73
98
  override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
74
- if (!scrollable) {
99
+ if (delegate?.isScrollable != true) {
100
+ if (ev.actionMasked == MotionEvent.ACTION_DOWN) {
101
+ clearStaleNestedScrollingChildRef()
102
+ }
75
103
  return super.onInterceptTouchEvent(ev)
76
104
  }
77
105
 
@@ -64,16 +64,23 @@ class TrueSheetKeyboardObserver(private val targetView: View, private val reactC
64
64
  }
65
65
 
66
66
  fun stop() {
67
- globalLayoutListener?.let { listener ->
68
- activityRootView?.viewTreeObserver?.removeOnGlobalLayoutListener(listener)
69
- globalLayoutListener = null
70
- }
71
- focusChangeListener?.let { listener ->
72
- activityRootView?.viewTreeObserver?.removeOnGlobalFocusChangeListener(listener)
73
- focusChangeListener = null
67
+ try {
68
+ globalLayoutListener?.let { listener ->
69
+ activityRootView?.viewTreeObserver?.let { observer ->
70
+ if (observer.isAlive) observer.removeOnGlobalLayoutListener(listener)
71
+ }
72
+ globalLayoutListener = null
73
+ }
74
+ focusChangeListener?.let { listener ->
75
+ activityRootView?.viewTreeObserver?.let { observer ->
76
+ if (observer.isAlive) observer.removeOnGlobalFocusChangeListener(listener)
77
+ }
78
+ focusChangeListener = null
79
+ }
80
+ } finally {
81
+ activityRootView = null
82
+ ViewCompat.setWindowInsetsAnimationCallback(targetView, null)
74
83
  }
75
- activityRootView = null
76
- ViewCompat.setWindowInsetsAnimationCallback(targetView, null)
77
84
  }
78
85
 
79
86
  private fun updateHeight(from: Int, to: Int, fraction: Float) {
@@ -3,6 +3,7 @@ package com.lodev09.truesheet.utils
3
3
  import android.view.View
4
4
 
5
5
  fun View.isDescendantOf(ancestor: View): Boolean {
6
+ if (!isAttachedToWindow) return false
6
7
  var current: View? = this
7
8
  while (current != null) {
8
9
  if (current === ancestor) return true
@@ -281,7 +281,7 @@ using namespace facebook::react;
281
281
  if (!_state)
282
282
  return;
283
283
 
284
- if (CGSizeEqualToSize(size, _lastStateSize))
284
+ if (fabs(size.width - _lastStateSize.width) < 0.5 && fabs(size.height - _lastStateSize.height) < 0.5)
285
285
  return;
286
286
 
287
287
  _lastStateSize = size;
@@ -82,6 +82,8 @@ using namespace facebook::react;
82
82
  }
83
83
 
84
84
  - (void)dealloc {
85
+ [_transitioningTimer invalidate];
86
+ _transitioningTimer = nil;
85
87
  [[NSNotificationCenter defaultCenter] removeObserver:self];
86
88
  }
87
89
 
@@ -413,22 +415,32 @@ using namespace facebook::react;
413
415
  _transitionFakeView.frame = self.isBeingDismissed ? presentedFrame : dismissedFrame;
414
416
  [self storeResolvedPositionForIndex:self.currentDetentIndex];
415
417
 
416
- auto animation = ^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
417
- [[context containerView] addSubview:self->_transitionFakeView];
418
- self->_transitionFakeView.frame = self.isBeingDismissed ? dismissedFrame : presentedFrame;
419
-
420
- self->_transitioningTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleTransitionTracker)];
421
- [self->_transitioningTimer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
422
- };
418
+ __weak __typeof(self) weakSelf = self;
423
419
 
424
420
  [self.transitionCoordinator
425
- animateAlongsideTransition:animation
426
- completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
427
- [self->_transitioningTimer setPaused:YES];
428
- [self->_transitioningTimer invalidate];
429
- [self->_transitionFakeView removeFromSuperview];
430
- self->_isTransitioning = NO;
431
- }];
421
+ animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
422
+ __strong __typeof(weakSelf) strongSelf = weakSelf;
423
+ if (!strongSelf)
424
+ return;
425
+
426
+ [[context containerView] addSubview:strongSelf->_transitionFakeView];
427
+ strongSelf->_transitionFakeView.frame = strongSelf.isBeingDismissed ? dismissedFrame : presentedFrame;
428
+
429
+ strongSelf->_transitioningTimer = [CADisplayLink displayLinkWithTarget:strongSelf
430
+ selector:@selector(handleTransitionTracker)];
431
+ [strongSelf->_transitioningTimer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
432
+ }
433
+ completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
434
+ __strong __typeof(weakSelf) strongSelf = weakSelf;
435
+ if (!strongSelf)
436
+ return;
437
+
438
+ [strongSelf->_transitioningTimer setPaused:YES];
439
+ [strongSelf->_transitioningTimer invalidate];
440
+ strongSelf->_transitioningTimer = nil;
441
+ [strongSelf->_transitionFakeView removeFromSuperview];
442
+ strongSelf->_isTransitioning = NO;
443
+ }];
432
444
  }
433
445
 
434
446
  - (void)handleTransitionTracker {
@@ -126,8 +126,12 @@ using namespace facebook::react;
126
126
  _parentScreenController = nil;
127
127
  _window = view.window;
128
128
 
129
+ Class screenViewClass = NSClassFromString(@"RNSScreenView");
130
+ if (!screenViewClass)
131
+ return;
132
+
129
133
  for (UIView *current = view.superview; current; current = current.superview) {
130
- if ([NSStringFromClass([current class]) isEqualToString:@"RNSScreenView"]) {
134
+ if ([current isKindOfClass:screenViewClass]) {
131
135
  [_screenTags addObject:@(current.tag)];
132
136
 
133
137
  UIViewController *screenVC = nil;
@@ -350,20 +350,26 @@ export class TrueSheet extends PureComponent {
350
350
  // Clamp to maximum of 1
351
351
  return Math.min(1, detent);
352
352
  });
353
+
354
+ // Cache grabberOptions to avoid creating a new object every render
355
+ if (grabberOptions !== this.cachedGrabberOptions) {
356
+ this.cachedGrabberOptions = grabberOptions;
357
+ this.resolvedGrabberOptions = {
358
+ ...grabberOptions,
359
+ color: processColor(grabberOptions?.color)
360
+ };
361
+ }
353
362
  return /*#__PURE__*/_jsx(TrueSheetViewNativeComponent, {
354
363
  ...rest,
355
364
  ref: this.nativeRef,
356
- style: [StyleSheet.absoluteFill, styles.sheetView],
365
+ style: styles.sheetView,
357
366
  detents: resolvedDetents,
358
367
  backgroundBlur: backgroundBlur,
359
368
  blurOptions: blurOptions,
360
369
  backgroundColor: backgroundColor,
361
370
  cornerRadius: cornerRadius,
362
371
  grabber: grabber,
363
- grabberOptions: {
364
- ...grabberOptions,
365
- color: processColor(grabberOptions?.color)
366
- },
372
+ grabberOptions: this.resolvedGrabberOptions,
367
373
  dimmed: dimmed,
368
374
  dimmedDetentIndex: dimmedDetentIndex,
369
375
  initialDetentIndex: initialDetentIndex,
@@ -394,12 +400,12 @@ export class TrueSheet extends PureComponent {
394
400
  onDidBlur: this.onDidBlur,
395
401
  onBackPress: this.onBackPress,
396
402
  children: this.state.shouldRenderNativeView && /*#__PURE__*/_jsxs(TrueSheetContainerViewNativeComponent, {
397
- style: scrollable && StyleSheet.absoluteFill,
403
+ style: scrollable ? styles.scrollableContainer : undefined,
398
404
  children: [header && /*#__PURE__*/_jsx(TrueSheetHeaderViewNativeComponent, {
399
405
  style: [styles.header, headerStyle],
400
406
  children: /*#__PURE__*/isValidElement(header) ? header : /*#__PURE__*/createElement(header)
401
407
  }), /*#__PURE__*/_jsx(TrueSheetContentViewNativeComponent, {
402
- style: [style, scrollable && styles.scrollableContent],
408
+ style: scrollable ? [style, styles.scrollableContent] : style,
403
409
  children: children
404
410
  }), footer && /*#__PURE__*/_jsx(TrueSheetFooterViewNativeComponent, {
405
411
  style: [styles.footer, footerStyle],
@@ -411,9 +417,13 @@ export class TrueSheet extends PureComponent {
411
417
  }
412
418
  const styles = StyleSheet.create({
413
419
  sheetView: {
420
+ ...StyleSheet.absoluteFill,
414
421
  zIndex: -9999,
415
422
  pointerEvents: 'box-none'
416
423
  },
424
+ scrollableContainer: {
425
+ ...StyleSheet.absoluteFill
426
+ },
417
427
  scrollableContent: {
418
428
  flex: 1
419
429
  },
@@ -1 +1 @@
1
- {"version":3,"names":["PureComponent","createRef","isValidElement","createElement","TrueSheetViewNativeComponent","TrueSheetContainerViewNativeComponent","TrueSheetContentViewNativeComponent","TrueSheetHeaderViewNativeComponent","TrueSheetFooterViewNativeComponent","TrueSheetModule","Platform","StyleSheet","findNodeHandle","processColor","jsx","_jsx","jsxs","_jsxs","LINKING_ERROR","select","ios","default","Error","TrueSheet","displayName","instances","presentationResolver","isPresenting","constructor","props","nativeRef","validateDetents","shouldRenderImmediately","initialDetentIndex","undefined","state","shouldRenderNativeView","onMount","bind","onWillDismiss","onDidDismiss","onWillPresent","onDidPresent","onDetentChange","onDragBegin","onDragChange","onDragEnd","onPositionChange","onWillFocus","onDidFocus","onWillBlur","onDidBlur","onBackPress","detents","length","console","warn","forEach","detent","index","detentsLength","Math","min","getInstance","name","instance","handle","nodeHandle","current","present","animated","dismiss","dismissStack","resize","dismissAll","registerInstance","unregisterInstance","event","setState","Promise","resolve","presentByRef","resizeByRef","dismissByRef","dismissStackByRef","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","render","backgroundColor","dismissible","draggable","grabber","grabberOptions","dimmed","initialDetentAnimated","dimmedDetentIndex","backgroundBlur","blurOptions","cornerRadius","maxContentHeight","maxContentWidth","anchor","anchorOffset","scrollable","scrollableOptions","pageSizing","children","style","header","headerStyle","footer","footerStyle","insetAdjustment","rest","resolvedDetents","slice","map","ref","absoluteFill","styles","sheetView","color","scrollableContent","create","zIndex","pointerEvents","flex","position","left","right"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["PureComponent","createRef","isValidElement","createElement","TrueSheetViewNativeComponent","TrueSheetContainerViewNativeComponent","TrueSheetContentViewNativeComponent","TrueSheetHeaderViewNativeComponent","TrueSheetFooterViewNativeComponent","TrueSheetModule","Platform","StyleSheet","findNodeHandle","processColor","jsx","_jsx","jsxs","_jsxs","LINKING_ERROR","select","ios","default","Error","TrueSheet","displayName","instances","presentationResolver","isPresenting","constructor","props","nativeRef","validateDetents","shouldRenderImmediately","initialDetentIndex","undefined","state","shouldRenderNativeView","onMount","bind","onWillDismiss","onDidDismiss","onWillPresent","onDidPresent","onDetentChange","onDragBegin","onDragChange","onDragEnd","onPositionChange","onWillFocus","onDidFocus","onWillBlur","onDidBlur","onBackPress","detents","length","console","warn","forEach","detent","index","detentsLength","Math","min","getInstance","name","instance","handle","nodeHandle","current","present","animated","dismiss","dismissStack","resize","dismissAll","registerInstance","unregisterInstance","event","setState","Promise","resolve","presentByRef","resizeByRef","dismissByRef","dismissStackByRef","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","render","backgroundColor","dismissible","draggable","grabber","grabberOptions","dimmed","initialDetentAnimated","dimmedDetentIndex","backgroundBlur","blurOptions","cornerRadius","maxContentHeight","maxContentWidth","anchor","anchorOffset","scrollable","scrollableOptions","pageSizing","children","style","header","headerStyle","footer","footerStyle","insetAdjustment","rest","resolvedDetents","slice","map","cachedGrabberOptions","resolvedGrabberOptions","color","ref","styles","sheetView","scrollableContainer","scrollableContent","create","absoluteFill","zIndex","pointerEvents","flex","position","left","right"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { useEffect, useRef } from 'react';
3
+ import { useCallback, useEffect, useMemo, useRef } from 'react';
4
4
  import { TrueSheetActions } from "../TrueSheetRouter.js";
5
5
  export const useSheetScreenState = props => {
6
6
  const {
@@ -28,41 +28,41 @@ export const useSheetScreenState = props => {
28
28
  }
29
29
  ref.current?.resize(detentIndex);
30
30
  }, [detentIndex, resizeKey]);
31
- const emitEvent = (type, data) => {
31
+ const emitEvent = useCallback((type, data) => {
32
32
  emit({
33
33
  type,
34
34
  target: routeKey,
35
35
  data
36
36
  });
37
- };
38
- const onDidDismiss = () => {
37
+ }, [emit, routeKey]);
38
+ const onDidDismiss = useCallback(() => {
39
39
  emitEvent('sheetDidDismiss', undefined);
40
40
  isDismissedRef.current = true;
41
- // Remove route from state (works for both programmatic and user-initiated dismiss)
42
41
  navigation.dispatch({
43
42
  ...TrueSheetActions.remove(),
44
43
  source: routeKey
45
44
  });
46
- };
45
+ }, [emitEvent, navigation, routeKey]);
46
+ const eventHandlers = useMemo(() => ({
47
+ onWillPresent: e => emitEvent('sheetWillPresent', e.nativeEvent),
48
+ onDidPresent: e => emitEvent('sheetDidPresent', e.nativeEvent),
49
+ onWillDismiss: _e => emitEvent('sheetWillDismiss', undefined),
50
+ onDidDismiss,
51
+ onDetentChange: e => emitEvent('sheetDetentChange', e.nativeEvent),
52
+ onDragBegin: e => emitEvent('sheetDragBegin', e.nativeEvent),
53
+ onDragChange: e => emitEvent('sheetDragChange', e.nativeEvent),
54
+ onDragEnd: e => emitEvent('sheetDragEnd', e.nativeEvent),
55
+ onPositionChange: e => emitEvent('sheetPositionChange', e.nativeEvent),
56
+ onWillFocus: _e => emitEvent('sheetWillFocus', undefined),
57
+ onDidFocus: _e => emitEvent('sheetDidFocus', undefined),
58
+ onWillBlur: _e => emitEvent('sheetWillBlur', undefined),
59
+ onDidBlur: _e => emitEvent('sheetDidBlur', undefined)
60
+ }), [emitEvent, onDidDismiss]);
47
61
  return {
48
62
  ref,
49
63
  initialDetentIndex: initialDetentIndexRef.current,
50
64
  emitEvent,
51
- eventHandlers: {
52
- onWillPresent: e => emitEvent('sheetWillPresent', e.nativeEvent),
53
- onDidPresent: e => emitEvent('sheetDidPresent', e.nativeEvent),
54
- onWillDismiss: _e => emitEvent('sheetWillDismiss', undefined),
55
- onDidDismiss,
56
- onDetentChange: e => emitEvent('sheetDetentChange', e.nativeEvent),
57
- onDragBegin: e => emitEvent('sheetDragBegin', e.nativeEvent),
58
- onDragChange: e => emitEvent('sheetDragChange', e.nativeEvent),
59
- onDragEnd: e => emitEvent('sheetDragEnd', e.nativeEvent),
60
- onPositionChange: e => emitEvent('sheetPositionChange', e.nativeEvent),
61
- onWillFocus: _e => emitEvent('sheetWillFocus', undefined),
62
- onDidFocus: _e => emitEvent('sheetDidFocus', undefined),
63
- onWillBlur: _e => emitEvent('sheetWillBlur', undefined),
64
- onDidBlur: _e => emitEvent('sheetDidBlur', undefined)
65
- }
65
+ eventHandlers
66
66
  };
67
67
  };
68
68
  //# sourceMappingURL=useSheetScreenState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","TrueSheetActions","useSheetScreenState","props","detentIndex","resizeKey","closing","navigation","routeKey","emit","ref","isDismissedRef","isFirstRenderRef","initialDetentIndexRef","current","dismiss","resize","emitEvent","type","data","target","onDidDismiss","undefined","dispatch","remove","source","initialDetentIndex","eventHandlers","onWillPresent","e","nativeEvent","onDidPresent","onWillDismiss","_e","onDetentChange","onDragBegin","onDragChange","onDragEnd","onPositionChange","onWillFocus","onDidFocus","onWillBlur","onDidBlur"],"sourceRoot":"../../../../src","sources":["navigation/screen/useSheetScreenState.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","TrueSheetActions","useSheetScreenState","props","detentIndex","resizeKey","closing","navigation","routeKey","emit","ref","isDismissedRef","isFirstRenderRef","initialDetentIndexRef","current","dismiss","resize","emitEvent","type","data","target","onDidDismiss","undefined","dispatch","remove","source","eventHandlers","onWillPresent","e","nativeEvent","onDidPresent","onWillDismiss","_e","onDetentChange","onDragBegin","onDragChange","onDragEnd","onPositionChange","onWillFocus","onDidFocus","onWillBlur","onDidBlur","initialDetentIndex"],"sourceRoot":"../../../../src","sources":["navigation/screen/useSheetScreenState.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { createContext, useContext } from 'react';
3
+ import { createContext, useContext, useMemo } from 'react';
4
4
  import { useWindowDimensions } from 'react-native';
5
5
  import { useSharedValue } from 'react-native-reanimated';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -31,11 +31,11 @@ export const ReanimatedTrueSheetProvider = ({
31
31
  const animatedPosition = useSharedValue(height);
32
32
  const animatedIndex = useSharedValue(-1);
33
33
  const animatedDetent = useSharedValue(0);
34
- const value = {
34
+ const value = useMemo(() => ({
35
35
  animatedPosition,
36
36
  animatedIndex,
37
37
  animatedDetent
38
- };
38
+ }), [animatedPosition, animatedIndex, animatedDetent]);
39
39
  return /*#__PURE__*/_jsx(ReanimatedTrueSheetContext.Provider, {
40
40
  value: value,
41
41
  children: children
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useContext","useWindowDimensions","useSharedValue","jsx","_jsx","ReanimatedTrueSheetContext","ReanimatedTrueSheetProvider","children","height","animatedPosition","animatedIndex","animatedDetent","value","Provider","useReanimatedTrueSheet","context","Error"],"sourceRoot":"../../../src","sources":["reanimated/ReanimatedTrueSheetProvider.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAwB,OAAO;AACjE,SAASC,mBAAmB,QAAQ,cAAc;AAClD,SAASC,cAAc,QAA0B,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAmB3E,MAAMC,0BAA0B,gBAAGN,aAAa,CAAyC,IAAI,CAAC;AAM9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,2BAA2B,GAAGA,CAAC;EAAEC;AAA2C,CAAC,KAAK;EAC7F,MAAM;IAAEC;EAAO,CAAC,GAAGP,mBAAmB,CAAC,CAAC;EACxC,MAAMQ,gBAAgB,GAAGP,cAAc,CAACM,MAAM,CAAC;EAC/C,MAAME,aAAa,GAAGR,cAAc,CAAC,CAAC,CAAC,CAAC;EACxC,MAAMS,cAAc,GAAGT,cAAc,CAAC,CAAC,CAAC;EAExC,MAAMU,KAAsC,GAAG;IAC7CH,gBAAgB;IAChBC,aAAa;IACbC;EACF,CAAC;EAED,oBACEP,IAAA,CAACC,0BAA0B,CAACQ,QAAQ;IAACD,KAAK,EAAEA,KAAM;IAAAL,QAAA,EAC/CA;EAAQ,CAC0B,CAAC;AAE1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,sBAAsB,GAAGA,CAAA,KAAuC;EAC3E,MAAMC,OAAO,GAAGf,UAAU,CAACK,0BAA0B,CAAC;EAEtD,IAAI,CAACU,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,4EAA4E,GAC1E,2EACJ,CAAC;EACH;EAEA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createContext","useContext","useMemo","useWindowDimensions","useSharedValue","jsx","_jsx","ReanimatedTrueSheetContext","ReanimatedTrueSheetProvider","children","height","animatedPosition","animatedIndex","animatedDetent","value","Provider","useReanimatedTrueSheet","context","Error"],"sourceRoot":"../../../src","sources":["reanimated/ReanimatedTrueSheetProvider.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAwB,OAAO;AAC1E,SAASC,mBAAmB,QAAQ,cAAc;AAClD,SAASC,cAAc,QAA0B,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAmB3E,MAAMC,0BAA0B,gBAAGP,aAAa,CAAyC,IAAI,CAAC;AAM9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMQ,2BAA2B,GAAGA,CAAC;EAAEC;AAA2C,CAAC,KAAK;EAC7F,MAAM;IAAEC;EAAO,CAAC,GAAGP,mBAAmB,CAAC,CAAC;EACxC,MAAMQ,gBAAgB,GAAGP,cAAc,CAACM,MAAM,CAAC;EAC/C,MAAME,aAAa,GAAGR,cAAc,CAAC,CAAC,CAAC,CAAC;EACxC,MAAMS,cAAc,GAAGT,cAAc,CAAC,CAAC,CAAC;EAExC,MAAMU,KAAK,GAAGZ,OAAO,CACnB,OAAO;IAAES,gBAAgB;IAAEC,aAAa;IAAEC;EAAe,CAAC,CAAC,EAC3D,CAACF,gBAAgB,EAAEC,aAAa,EAAEC,cAAc,CAClD,CAAC;EAED,oBACEP,IAAA,CAACC,0BAA0B,CAACQ,QAAQ;IAACD,KAAK,EAAEA,KAAM;IAAAL,QAAA,EAC/CA;EAAQ,CAC0B,CAAC;AAE1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,sBAAsB,GAAGA,CAAA,KAAuC;EAC3E,MAAMC,OAAO,GAAGhB,UAAU,CAACM,0BAA0B,CAAC;EAEtD,IAAI,CAACU,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,4EAA4E,GAC1E,2EACJ,CAAC;EACH;EAEA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
@@ -6,6 +6,8 @@ interface TrueSheetState {
6
6
  export declare class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
7
7
  displayName: string;
8
8
  private readonly nativeRef;
9
+ private cachedGrabberOptions;
10
+ private resolvedGrabberOptions;
9
11
  /**
10
12
  * Map of sheet names against their instances.
11
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TrueSheet.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAGb,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EACV,cAAc,EAgBf,MAAM,mBAAmB,CAAC;AAwB3B,UAAU,cAAc;IACtB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,SAAU,SAAQ,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC;IAC1E,WAAW,SAAe;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IAExD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAEtE;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAA6B;IAEzD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAkB;gBAE1B,KAAK,EAAE,cAAc;IAgCjC,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,KAAK,MAAM,GAOjB;IAED;;;;;;;OAOG;WACiB,OAAO,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,OAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;WACiB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASlF;;;;;;OAMG;WACiB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASvF;;;;;;OAMG;WACiB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE;;;;;OAKG;WACiB,UAAU,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACU,OAAO,CAAC,KAAK,GAAE,MAAU,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhF;;;OAGG;IACU,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;;OAGG;IACU,OAAO,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;;OAIG;IACU,YAAY,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IASnD,oBAAoB,IAAI,IAAI;IAO5B,MAAM,IAAI,SAAS;CA8GpB"}
1
+ {"version":3,"file":"TrueSheet.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAGb,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EACV,cAAc,EAgBf,MAAM,mBAAmB,CAAC;AAwB3B,UAAU,cAAc;IACtB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,SAAU,SAAQ,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC;IAC1E,WAAW,SAAe;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IAExD,OAAO,CAAC,oBAAoB,CAA+C;IAC3E,OAAO,CAAC,sBAAsB,CAAsC;IAEpE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAEtE;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAA6B;IAEzD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAkB;gBAE1B,KAAK,EAAE,cAAc;IAgCjC,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,KAAK,MAAM,GAOjB;IAED;;;;;;;OAOG;WACiB,OAAO,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,OAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;WACiB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASlF;;;;;;OAMG;WACiB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASvF;;;;;;OAMG;WACiB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE;;;;;OAKG;WACiB,UAAU,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACU,OAAO,CAAC,KAAK,GAAE,MAAU,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhF;;;OAGG;IACU,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;;OAGG;IACU,OAAO,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;;OAIG;IACU,YAAY,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IASnD,oBAAoB,IAAI,IAAI;IAO5B,MAAM,IAAI,SAAS;CAsHpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSheetScreenState.d.ts","sourceRoot":"","sources":["../../../../../src/navigation/screen/useSheetScreenState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,KAAK,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAEjD,UAAU,wBAAwB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,wBAAwB;;;sBAwBzD,MAAM,2BAA2B,QACjC,sBAAsB,GAAG,0BAA0B,GAAG,SAAS;;2BAqBhD,gBAAgB;0BACjB,eAAe;4BACb,gBAAgB;;4BAEhB,iBAAiB;yBACpB,cAAc;0BACb,eAAe;uBAClB,YAAY;8BACL,mBAAmB;0BACvB,cAAc;yBACf,aAAa;yBACb,aAAa;wBACd,YAAY;;CAGjC,CAAC"}
1
+ {"version":3,"file":"useSheetScreenState.d.ts","sourceRoot":"","sources":["../../../../../src/navigation/screen/useSheetScreenState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,KAAK,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAEjD,UAAU,wBAAwB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,wBAAwB;;;sBAyBvD,MAAM,2BAA2B,QACjC,sBAAsB,GAAG,0BAA0B,GAAG,SAAS;;2BAmBlD,gBAAgB;0BACjB,eAAe;4BACb,gBAAgB;;4BAEhB,iBAAiB;yBACpB,cAAc;0BACb,eAAe;uBAClB,YAAY;8BACL,mBAAmB;0BACvB,cAAc;yBACf,aAAa;yBACb,aAAa;wBACd,YAAY;;CAWjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReanimatedTrueSheetProvider.d.ts","sourceRoot":"","sources":["../../../../src/reanimated/ReanimatedTrueSheetProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3E,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC;;;OAGG;IACH,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACrC;AAID,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,GAAI,cAAc,gCAAgC,4CAiBzF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,QAAO,+BAWzC,CAAC"}
1
+ {"version":3,"file":"ReanimatedTrueSheetProvider.d.ts","sourceRoot":"","sources":["../../../../src/reanimated/ReanimatedTrueSheetProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3E,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC;;;OAGG;IACH,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACrC;AAID,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,GAAI,cAAc,gCAAgC,4CAgBzF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,QAAO,+BAWzC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodev09/react-native-true-sheet",
3
- "version": "3.9.0-beta.3",
3
+ "version": "3.9.0-beta.4",
4
4
  "description": "The true native bottom sheet experience for your React Native Apps.",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/module/index.js",
package/src/TrueSheet.tsx CHANGED
@@ -58,6 +58,9 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
58
58
 
59
59
  private readonly nativeRef: RefObject<NativeRef | null>;
60
60
 
61
+ private cachedGrabberOptions: TrueSheetProps['grabberOptions'] | undefined;
62
+ private resolvedGrabberOptions: Record<string, unknown> | undefined;
63
+
61
64
  /**
62
65
  * Map of sheet names against their instances.
63
66
  */
@@ -436,21 +439,27 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
436
439
  return Math.min(1, detent);
437
440
  });
438
441
 
442
+ // Cache grabberOptions to avoid creating a new object every render
443
+ if (grabberOptions !== this.cachedGrabberOptions) {
444
+ this.cachedGrabberOptions = grabberOptions;
445
+ this.resolvedGrabberOptions = {
446
+ ...grabberOptions,
447
+ color: processColor(grabberOptions?.color),
448
+ };
449
+ }
450
+
439
451
  return (
440
452
  <TrueSheetViewNativeComponent
441
453
  {...rest}
442
454
  ref={this.nativeRef}
443
- style={[StyleSheet.absoluteFill, styles.sheetView]}
455
+ style={styles.sheetView}
444
456
  detents={resolvedDetents}
445
457
  backgroundBlur={backgroundBlur}
446
458
  blurOptions={blurOptions}
447
459
  backgroundColor={backgroundColor}
448
460
  cornerRadius={cornerRadius}
449
461
  grabber={grabber}
450
- grabberOptions={{
451
- ...grabberOptions,
452
- color: processColor(grabberOptions?.color),
453
- }}
462
+ grabberOptions={this.resolvedGrabberOptions}
454
463
  dimmed={dimmed}
455
464
  dimmedDetentIndex={dimmedDetentIndex}
456
465
  initialDetentIndex={initialDetentIndex}
@@ -482,14 +491,16 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
482
491
  onBackPress={this.onBackPress}
483
492
  >
484
493
  {this.state.shouldRenderNativeView && (
485
- <TrueSheetContainerViewNativeComponent style={scrollable && StyleSheet.absoluteFill}>
494
+ <TrueSheetContainerViewNativeComponent
495
+ style={scrollable ? styles.scrollableContainer : undefined}
496
+ >
486
497
  {header && (
487
498
  <TrueSheetHeaderViewNativeComponent style={[styles.header, headerStyle]}>
488
499
  {isValidElement(header) ? header : createElement(header)}
489
500
  </TrueSheetHeaderViewNativeComponent>
490
501
  )}
491
502
  <TrueSheetContentViewNativeComponent
492
- style={[style, scrollable && styles.scrollableContent]}
503
+ style={scrollable ? [style, styles.scrollableContent] : style}
493
504
  >
494
505
  {children}
495
506
  </TrueSheetContentViewNativeComponent>
@@ -507,9 +518,13 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
507
518
 
508
519
  const styles = StyleSheet.create({
509
520
  sheetView: {
521
+ ...StyleSheet.absoluteFill,
510
522
  zIndex: -9999,
511
523
  pointerEvents: 'box-none',
512
524
  },
525
+ scrollableContainer: {
526
+ ...StyleSheet.absoluteFill,
527
+ },
513
528
  scrollableContent: {
514
529
  flex: 1,
515
530
  },
@@ -1,4 +1,4 @@
1
- import { useEffect, useRef } from 'react';
1
+ import { useCallback, useEffect, useMemo, useRef } from 'react';
2
2
 
3
3
  import { TrueSheet } from '../../TrueSheet';
4
4
  import type {
@@ -59,29 +59,28 @@ export const useSheetScreenState = (props: UseSheetScreenStateProps) => {
59
59
  ref.current?.resize(detentIndex);
60
60
  }, [detentIndex, resizeKey]);
61
61
 
62
- const emitEvent = (
63
- type: keyof TrueSheetNavigationEventMap,
64
- data: DetentInfoEventPayload | PositionChangeEventPayload | undefined
65
- ) => {
66
- emit({
67
- type,
68
- target: routeKey,
69
- data,
70
- } as Parameters<EmitFn>[0]);
71
- };
62
+ const emitEvent = useCallback(
63
+ (
64
+ type: keyof TrueSheetNavigationEventMap,
65
+ data: DetentInfoEventPayload | PositionChangeEventPayload | undefined
66
+ ) => {
67
+ emit({
68
+ type,
69
+ target: routeKey,
70
+ data,
71
+ } as Parameters<EmitFn>[0]);
72
+ },
73
+ [emit, routeKey]
74
+ );
72
75
 
73
- const onDidDismiss = () => {
76
+ const onDidDismiss = useCallback(() => {
74
77
  emitEvent('sheetDidDismiss', undefined);
75
78
  isDismissedRef.current = true;
76
- // Remove route from state (works for both programmatic and user-initiated dismiss)
77
79
  navigation.dispatch({ ...TrueSheetActions.remove(), source: routeKey });
78
- };
80
+ }, [emitEvent, navigation, routeKey]);
79
81
 
80
- return {
81
- ref,
82
- initialDetentIndex: initialDetentIndexRef.current,
83
- emitEvent,
84
- eventHandlers: {
82
+ const eventHandlers = useMemo(
83
+ () => ({
85
84
  onWillPresent: (e: WillPresentEvent) => emitEvent('sheetWillPresent', e.nativeEvent),
86
85
  onDidPresent: (e: DidPresentEvent) => emitEvent('sheetDidPresent', e.nativeEvent),
87
86
  onWillDismiss: (_e: WillDismissEvent) => emitEvent('sheetWillDismiss', undefined),
@@ -95,6 +94,14 @@ export const useSheetScreenState = (props: UseSheetScreenStateProps) => {
95
94
  onDidFocus: (_e: DidFocusEvent) => emitEvent('sheetDidFocus', undefined),
96
95
  onWillBlur: (_e: WillBlurEvent) => emitEvent('sheetWillBlur', undefined),
97
96
  onDidBlur: (_e: DidBlurEvent) => emitEvent('sheetDidBlur', undefined),
98
- },
97
+ }),
98
+ [emitEvent, onDidDismiss]
99
+ );
100
+
101
+ return {
102
+ ref,
103
+ initialDetentIndex: initialDetentIndexRef.current,
104
+ emitEvent,
105
+ eventHandlers,
99
106
  };
100
107
  };
@@ -1,4 +1,4 @@
1
- import { createContext, useContext, type ReactNode } from 'react';
1
+ import { createContext, useContext, useMemo, type ReactNode } from 'react';
2
2
  import { useWindowDimensions } from 'react-native';
3
3
  import { useSharedValue, type SharedValue } from 'react-native-reanimated';
4
4
 
@@ -48,11 +48,10 @@ export const ReanimatedTrueSheetProvider = ({ children }: ReanimatedTrueSheetPro
48
48
  const animatedIndex = useSharedValue(-1);
49
49
  const animatedDetent = useSharedValue(0);
50
50
 
51
- const value: ReanimatedTrueSheetContextValue = {
52
- animatedPosition,
53
- animatedIndex,
54
- animatedDetent,
55
- };
51
+ const value = useMemo<ReanimatedTrueSheetContextValue>(
52
+ () => ({ animatedPosition, animatedIndex, animatedDetent }),
53
+ [animatedPosition, animatedIndex, animatedDetent]
54
+ );
56
55
 
57
56
  return (
58
57
  <ReanimatedTrueSheetContext.Provider value={value}>