@lodev09/react-native-true-sheet 3.9.0-beta.2 → 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.
- package/android/build.gradle +2 -1
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContainerView.kt +5 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentView.kt +21 -2
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +55 -23
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +97 -38
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetCoordinatorLayout.kt +30 -2
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetDetentCalculator.kt +2 -2
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetKeyboardObserver.kt +16 -9
- package/android/src/main/java/com/lodev09/truesheet/utils/ViewUtils.kt +1 -0
- package/ios/TrueSheetView.mm +9 -2
- package/ios/TrueSheetViewController.mm +26 -14
- package/ios/core/RNScreensEventObserver.h +0 -1
- package/ios/core/RNScreensEventObserver.mm +43 -7
- package/lib/module/TrueSheet.js +17 -7
- package/lib/module/TrueSheet.js.map +1 -1
- package/lib/module/navigation/screen/useSheetScreenState.js +21 -21
- package/lib/module/navigation/screen/useSheetScreenState.js.map +1 -1
- package/lib/module/reanimated/ReanimatedTrueSheetProvider.js +3 -3
- package/lib/module/reanimated/ReanimatedTrueSheetProvider.js.map +1 -1
- package/lib/typescript/src/TrueSheet.d.ts +2 -0
- package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
- package/lib/typescript/src/navigation/screen/useSheetScreenState.d.ts.map +1 -1
- package/lib/typescript/src/reanimated/ReanimatedTrueSheetProvider.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TrueSheet.tsx +22 -7
- package/src/navigation/screen/useSheetScreenState.ts +27 -20
- package/src/reanimated/ReanimatedTrueSheetProvider.tsx +5 -6
package/android/build.gradle
CHANGED
|
@@ -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
|
|
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
|
-
//
|
|
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?
|
|
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 (
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
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
|
-
|
|
360
|
-
|
|
361
|
-
|
|
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
|
-
|
|
364
|
-
|
|
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
|
-
|
|
384
|
-
|
|
385
|
-
sheetsAbove.firstOrNull()?.viewController?.createSheetSnapshot()
|
|
406
|
+
// Create snapshot only for topmost sheet (first in reversed list)
|
|
407
|
+
sheetsAbove.firstOrNull()?.viewController?.createSheetSnapshot()
|
|
386
408
|
|
|
387
|
-
|
|
388
|
-
|
|
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
|
|
@@ -528,6 +527,8 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
528
527
|
when (newState) {
|
|
529
528
|
BottomSheetBehavior.STATE_DRAGGING -> handleDragBegin(sheetView)
|
|
530
529
|
|
|
530
|
+
BottomSheetBehavior.STATE_SETTLING -> handleSettling(sheetView)
|
|
531
|
+
|
|
531
532
|
BottomSheetBehavior.STATE_EXPANDED,
|
|
532
533
|
BottomSheetBehavior.STATE_COLLAPSED,
|
|
533
534
|
BottomSheetBehavior.STATE_HALF_EXPANDED -> handleStateSettled(sheetView, newState)
|
|
@@ -581,7 +582,9 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
581
582
|
val detent = detentCalculator.getDetentValueForIndex(detentInfo.index)
|
|
582
583
|
delegate?.viewControllerDidDragEnd(detentInfo.index, detentInfo.position, detent)
|
|
583
584
|
|
|
584
|
-
if
|
|
585
|
+
// Skip detent change if keyboard inset is still active — detent mapping is unreliable.
|
|
586
|
+
// keyboardWillHide will recalculate detents and settle at the correct index.
|
|
587
|
+
if (detentInfo.index != currentDetentIndex && keyboardInset == 0) {
|
|
585
588
|
currentDetentIndex = detentInfo.index
|
|
586
589
|
setupDimmedBackground()
|
|
587
590
|
delegate?.viewControllerDidChangeDetent(detentInfo.index, detentInfo.position, detent)
|
|
@@ -600,6 +603,10 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
600
603
|
}
|
|
601
604
|
}
|
|
602
605
|
}
|
|
606
|
+
|
|
607
|
+
if (!isKeyboardTransitioning) {
|
|
608
|
+
updateDimAmount(animated = true)
|
|
609
|
+
}
|
|
603
610
|
}
|
|
604
611
|
|
|
605
612
|
// =============================================================================
|
|
@@ -654,22 +661,9 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
654
661
|
// =============================================================================
|
|
655
662
|
|
|
656
663
|
fun present(detentIndex: Int, animated: Boolean = true) {
|
|
657
|
-
val coordinator = this.coordinatorLayout ?:
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
val sheet = this.sheetView ?: run {
|
|
663
|
-
RNLog.w(reactContext, "TrueSheet: No sheet view available.")
|
|
664
|
-
return
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
if (isPresented) {
|
|
668
|
-
RNLog.w(reactContext, "TrueSheet: sheet is already presented. Use resize() to change detent.")
|
|
669
|
-
presentPromise?.invoke()
|
|
670
|
-
presentPromise = null
|
|
671
|
-
return
|
|
672
|
-
}
|
|
664
|
+
val coordinator = this.coordinatorLayout ?: return
|
|
665
|
+
val sheet = this.sheetView ?: return
|
|
666
|
+
if (isPresented) return
|
|
673
667
|
|
|
674
668
|
shouldAnimatePresent = animated
|
|
675
669
|
currentDetentIndex = detentIndex
|
|
@@ -706,11 +700,11 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
706
700
|
}
|
|
707
701
|
|
|
708
702
|
fun resize(detentIndex: Int) {
|
|
709
|
-
if (!isPresented)
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
703
|
+
if (!isPresented) return
|
|
704
|
+
|
|
705
|
+
// Commit the new index so keyboardWillHide restores to it instead of the stale one
|
|
706
|
+
if (detentIndexBeforeKeyboard >= 0) {
|
|
707
|
+
detentIndexBeforeKeyboard = detentIndex
|
|
714
708
|
}
|
|
715
709
|
|
|
716
710
|
setupDimmedBackground()
|
|
@@ -756,6 +750,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
756
750
|
}
|
|
757
751
|
|
|
758
752
|
private fun dismissKeyboard() {
|
|
753
|
+
isKeyboardDismissProgrammatic = true
|
|
759
754
|
KeyboardUtils.dismiss(reactContext)
|
|
760
755
|
}
|
|
761
756
|
|
|
@@ -807,7 +802,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
807
802
|
// MARK: - Sheet Configuration
|
|
808
803
|
// =============================================================================
|
|
809
804
|
|
|
810
|
-
fun setupSheetDetents() {
|
|
805
|
+
fun setupSheetDetents(applyState: Boolean = true) {
|
|
811
806
|
val behavior = this.behavior ?: run {
|
|
812
807
|
RNLog.e(reactContext, "TrueSheet: behavior is null in setupSheetDetents")
|
|
813
808
|
return
|
|
@@ -852,7 +847,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
852
847
|
|
|
853
848
|
updateStateDimensions(expandedOffset)
|
|
854
849
|
|
|
855
|
-
if (isPresented) {
|
|
850
|
+
if (isPresented && applyState) {
|
|
856
851
|
setStateForDetentIndex(currentDetentIndex)
|
|
857
852
|
}
|
|
858
853
|
|
|
@@ -930,8 +925,13 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
930
925
|
if (!dimmed) return
|
|
931
926
|
if (contentHeight == 0) return
|
|
932
927
|
|
|
933
|
-
|
|
934
|
-
val top = (
|
|
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
|
+
}
|
|
935
935
|
|
|
936
936
|
if (animated) {
|
|
937
937
|
val targetAlpha = dimView?.calculateAlpha(
|
|
@@ -1010,28 +1010,47 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
1010
1010
|
if (!shouldHandleKeyboard()) return
|
|
1011
1011
|
detentIndexBeforeKeyboard = currentDetentIndex
|
|
1012
1012
|
setupSheetDetents()
|
|
1013
|
-
|
|
1013
|
+
currentDetentIndex = detents.size - 1
|
|
1014
|
+
setStateForDetentIndex(currentDetentIndex)
|
|
1015
|
+
updateDimAmount(animated = true)
|
|
1014
1016
|
}
|
|
1015
1017
|
|
|
1016
1018
|
override fun keyboardWillHide() {
|
|
1017
1019
|
if (!shouldHandleKeyboard(checkFocus = false)) return
|
|
1020
|
+
val restoring = !isBeingDismissed && detentIndexBeforeKeyboard >= 0
|
|
1018
1021
|
|
|
1019
|
-
|
|
1020
|
-
|
|
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
|
+
}
|
|
1022
1030
|
}
|
|
1031
|
+
|
|
1032
|
+
updateDimAmount(
|
|
1033
|
+
sheetTop = detentCalculator.getSheetTopForDetentIndex(currentDetentIndex),
|
|
1034
|
+
animated = true
|
|
1035
|
+
)
|
|
1023
1036
|
}
|
|
1024
1037
|
|
|
1025
1038
|
override fun keyboardDidHide() {
|
|
1026
1039
|
if (!shouldHandleKeyboard(checkFocus = false)) return
|
|
1027
1040
|
detentIndexBeforeKeyboard = -1
|
|
1041
|
+
isKeyboardDismissProgrammatic = false
|
|
1042
|
+
setupSheetDetents(applyState = false)
|
|
1028
1043
|
positionFooter()
|
|
1044
|
+
updateDimAmount(
|
|
1045
|
+
sheetTop = detentCalculator.getSheetTopForDetentIndex(currentDetentIndex),
|
|
1046
|
+
animated = true
|
|
1047
|
+
)
|
|
1029
1048
|
}
|
|
1030
1049
|
|
|
1031
1050
|
override fun keyboardDidChangeHeight(height: Int) {
|
|
1032
|
-
// Skip focus check
|
|
1033
|
-
val
|
|
1034
|
-
if (!shouldHandleKeyboard(checkFocus = !
|
|
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
|
|
1035
1054
|
positionFooter()
|
|
1036
1055
|
}
|
|
1037
1056
|
|
|
@@ -1061,15 +1080,55 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
1061
1080
|
private fun getPositionDpForView(sheetView: View): Float =
|
|
1062
1081
|
detentCalculator.getPositionDp(detentCalculator.getVisibleSheetHeight(sheetView.top))
|
|
1063
1082
|
|
|
1083
|
+
fun commitKeyboardDetent() {
|
|
1084
|
+
detentIndexBeforeKeyboard = -1
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1064
1087
|
private fun handleDragBegin(sheetView: View) {
|
|
1088
|
+
detentIndexBeforeKeyboard = -1
|
|
1089
|
+
|
|
1065
1090
|
val position = getPositionDpForView(sheetView)
|
|
1066
1091
|
val detent = detentCalculator.getDetentValueForIndex(currentDetentIndex)
|
|
1067
1092
|
delegate?.viewControllerDidDragBegin(currentDetentIndex, position, detent)
|
|
1068
1093
|
interactionState = InteractionState.Dragging(startTop = sheetView.top)
|
|
1069
1094
|
}
|
|
1070
1095
|
|
|
1096
|
+
private fun handleSettling(sheetView: View) {
|
|
1097
|
+
if (interactionState !is InteractionState.Dragging) return
|
|
1098
|
+
if (keyboardInset <= 0) return
|
|
1099
|
+
|
|
1100
|
+
// After drag release, check if the sheet was dragged past the midpoint between the
|
|
1101
|
+
// keyboard-expanded position and a non-keyboard detent position. If so, dismiss
|
|
1102
|
+
// keyboard and commit to that detent.
|
|
1103
|
+
val maxAvailableHeight = realScreenHeight - topInset
|
|
1104
|
+
val keyboardHeight = minOf(detentCalculator.getDetentHeight(detents.last()), maxAvailableHeight)
|
|
1105
|
+
val keyboardTop = realScreenHeight - keyboardHeight
|
|
1106
|
+
|
|
1107
|
+
for (i in detents.indices) {
|
|
1108
|
+
val nonKeyboardHeight = minOf(detentCalculator.getDetentHeight(detents[i], includeKeyboard = false), maxAvailableHeight)
|
|
1109
|
+
val nonKeyboardTop = realScreenHeight - nonKeyboardHeight
|
|
1110
|
+
val midpoint = keyboardTop + (nonKeyboardTop - keyboardTop) / 2
|
|
1111
|
+
|
|
1112
|
+
if (sheetView.top >= midpoint) {
|
|
1113
|
+
// Target position matches the keyboard-expanded position — keep keyboard open
|
|
1114
|
+
if (nonKeyboardTop == keyboardTop) break
|
|
1115
|
+
|
|
1116
|
+
detentIndexBeforeKeyboard = -1
|
|
1117
|
+
currentDetentIndex = i
|
|
1118
|
+
dismissKeyboard()
|
|
1119
|
+
setupDimmedBackground()
|
|
1120
|
+
|
|
1121
|
+
val position = getPositionDpForView(sheetView)
|
|
1122
|
+
val detent = detentCalculator.getDetentValueForIndex(i)
|
|
1123
|
+
delegate?.viewControllerDidChangeDetent(i, position, detent)
|
|
1124
|
+
break
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1071
1129
|
private fun handleDragChange(sheetView: View) {
|
|
1072
1130
|
if (interactionState !is InteractionState.Dragging) return
|
|
1131
|
+
|
|
1073
1132
|
val position = getPositionDpForView(sheetView)
|
|
1074
1133
|
val detent = detentCalculator.getDetentValueForIndex(currentDetentIndex)
|
|
1075
1134
|
delegate?.viewControllerDidDragChange(currentDetentIndex, position, detent)
|
|
@@ -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 (
|
|
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
|
|
|
@@ -39,7 +39,7 @@ class TrueSheetDetentCalculator(private val reactContext: ThemedReactContext) {
|
|
|
39
39
|
* Calculate the height in pixels for a given detent value.
|
|
40
40
|
* @param detent The detent value: -1.0 for content-fit, or 0.0-1.0 for screen fraction
|
|
41
41
|
*/
|
|
42
|
-
fun getDetentHeight(detent: Double): Int {
|
|
42
|
+
fun getDetentHeight(detent: Double, includeKeyboard: Boolean = true): Int {
|
|
43
43
|
val baseHeight = if (detent == -1.0) {
|
|
44
44
|
contentHeight + headerHeight + contentBottomInset
|
|
45
45
|
} else {
|
|
@@ -49,7 +49,7 @@ class TrueSheetDetentCalculator(private val reactContext: ThemedReactContext) {
|
|
|
49
49
|
(detent * screenHeight).toInt() + contentBottomInset
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
val height = baseHeight + keyboardInset
|
|
52
|
+
val height = if (includeKeyboard) baseHeight + keyboardInset else baseHeight
|
|
53
53
|
val maxAllowedHeight = screenHeight + contentBottomInset
|
|
54
54
|
return maxContentHeight?.let { minOf(height, it, maxAllowedHeight) } ?: minOf(height, maxAllowedHeight)
|
|
55
55
|
}
|
|
@@ -64,16 +64,23 @@ class TrueSheetKeyboardObserver(private val targetView: View, private val reactC
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
fun stop() {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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) {
|
package/ios/TrueSheetView.mm
CHANGED
|
@@ -281,7 +281,7 @@ using namespace facebook::react;
|
|
|
281
281
|
if (!_state)
|
|
282
282
|
return;
|
|
283
283
|
|
|
284
|
-
if (
|
|
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;
|
|
@@ -291,6 +291,8 @@ using namespace facebook::react;
|
|
|
291
291
|
stateData.containerHeight = static_cast<float>(size.height);
|
|
292
292
|
|
|
293
293
|
#if REACT_NATIVE_VERSION_MINOR >= 82
|
|
294
|
+
// TODO: RN 0.82+ processes state updates in the same layout pass (synchronous).
|
|
295
|
+
// Once stable, we can drop native layout constraints in favor of synchronous Yoga layout.
|
|
294
296
|
_state->updateState(std::move(stateData), facebook::react::EventQueue::UpdateMode::unstable_Immediate);
|
|
295
297
|
#else
|
|
296
298
|
_state->updateState(std::move(stateData));
|
|
@@ -669,7 +671,12 @@ using namespace facebook::react;
|
|
|
669
671
|
- (void)presenterScreenWillAppear {
|
|
670
672
|
if (_dismissedByNavigation && !_controller.isPresented && !_controller.isBeingPresented) {
|
|
671
673
|
_dismissedByNavigation = NO;
|
|
672
|
-
|
|
674
|
+
|
|
675
|
+
if (self.window) {
|
|
676
|
+
[self presentAtIndex:_controller.activeDetentIndex animated:YES completion:nil];
|
|
677
|
+
} else {
|
|
678
|
+
_pendingNavigationRepresent = YES;
|
|
679
|
+
}
|
|
673
680
|
}
|
|
674
681
|
}
|
|
675
682
|
|
|
@@ -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
|
-
|
|
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
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
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 {
|
|
@@ -25,6 +25,8 @@ using namespace facebook::react;
|
|
|
25
25
|
__weak UIViewController *_parentScreenController;
|
|
26
26
|
__weak UIWindow *_window;
|
|
27
27
|
BOOL _dismissedByNavigation;
|
|
28
|
+
BOOL _pendingInteractiveDismiss;
|
|
29
|
+
BOOL _pendingInteractiveAppear;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
- (instancetype)init {
|
|
@@ -60,19 +62,44 @@ using namespace facebook::react;
|
|
|
60
62
|
|
|
61
63
|
if (auto family = event.shadowNodeFamily.lock()) {
|
|
62
64
|
Tag screenTag = family->getTag();
|
|
65
|
+
if (![strongSelf->_screenTags containsObject:@(screenTag)]) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
BOOL interactive = [strongSelf isInteractiveTransition];
|
|
63
70
|
|
|
64
71
|
if (event.type == "topWillDisappear") {
|
|
65
|
-
if (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
if (interactive) {
|
|
73
|
+
strongSelf->_pendingInteractiveDismiss = YES;
|
|
74
|
+
} else if ([strongSelf shouldDismissForScreenTag:screenTag]) {
|
|
75
|
+
strongSelf->_dismissedByNavigation = YES;
|
|
76
|
+
[strongSelf.delegate presenterScreenWillDisappear];
|
|
77
|
+
}
|
|
78
|
+
} else if (event.type == "topDisappear") {
|
|
79
|
+
if (strongSelf->_pendingInteractiveDismiss) {
|
|
80
|
+
strongSelf->_pendingInteractiveDismiss = NO;
|
|
81
|
+
strongSelf->_dismissedByNavigation = YES;
|
|
82
|
+
[strongSelf.delegate presenterScreenWillDisappear];
|
|
70
83
|
}
|
|
71
84
|
} else if (event.type == "topWillAppear") {
|
|
72
|
-
if (
|
|
85
|
+
if (strongSelf->_dismissedByNavigation) {
|
|
86
|
+
if (interactive) {
|
|
87
|
+
strongSelf->_pendingInteractiveAppear = YES;
|
|
88
|
+
} else {
|
|
89
|
+
strongSelf->_dismissedByNavigation = NO;
|
|
90
|
+
[strongSelf.delegate presenterScreenWillAppear];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
strongSelf->_pendingInteractiveDismiss = NO;
|
|
94
|
+
} else if (event.type == "topAppear") {
|
|
95
|
+
if (strongSelf->_pendingInteractiveAppear) {
|
|
96
|
+
strongSelf->_pendingInteractiveAppear = NO;
|
|
73
97
|
strongSelf->_dismissedByNavigation = NO;
|
|
74
98
|
[strongSelf.delegate presenterScreenWillAppear];
|
|
75
99
|
}
|
|
100
|
+
} else if (event.type == "topGestureCancel") {
|
|
101
|
+
strongSelf->_pendingInteractiveDismiss = NO;
|
|
102
|
+
strongSelf->_pendingInteractiveAppear = NO;
|
|
76
103
|
}
|
|
77
104
|
}
|
|
78
105
|
return false;
|
|
@@ -99,8 +126,12 @@ using namespace facebook::react;
|
|
|
99
126
|
_parentScreenController = nil;
|
|
100
127
|
_window = view.window;
|
|
101
128
|
|
|
129
|
+
Class screenViewClass = NSClassFromString(@"RNSScreenView");
|
|
130
|
+
if (!screenViewClass)
|
|
131
|
+
return;
|
|
132
|
+
|
|
102
133
|
for (UIView *current = view.superview; current; current = current.superview) {
|
|
103
|
-
if ([
|
|
134
|
+
if ([current isKindOfClass:screenViewClass]) {
|
|
104
135
|
[_screenTags addObject:@(current.tag)];
|
|
105
136
|
|
|
106
137
|
UIViewController *screenVC = nil;
|
|
@@ -121,6 +152,11 @@ using namespace facebook::react;
|
|
|
121
152
|
}
|
|
122
153
|
}
|
|
123
154
|
|
|
155
|
+
- (BOOL)isInteractiveTransition {
|
|
156
|
+
UINavigationController *navController = _presenterScreenController.navigationController;
|
|
157
|
+
return navController.transitionCoordinator.isInteractive;
|
|
158
|
+
}
|
|
159
|
+
|
|
124
160
|
- (BOOL)shouldDismissForScreenTag:(NSInteger)screenTag {
|
|
125
161
|
// For parent screens (not immediate presenter), check if the presenter screen is being removed
|
|
126
162
|
// This handles nested stack removal case
|
package/lib/module/TrueSheet.js
CHANGED
|
@@ -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:
|
|
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
|
|
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,
|
|
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","
|
|
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;
|
|
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;
|
|
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;;;
|
|
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,
|
|
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
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={
|
|
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
|
|
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,
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
81
|
-
|
|
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
|
|
52
|
-
animatedPosition,
|
|
53
|
-
animatedIndex,
|
|
54
|
-
|
|
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}>
|