@lodev09/react-native-true-sheet 3.0.0-beta.18 → 3.0.0-beta.19

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.
@@ -11,6 +11,7 @@ import android.view.WindowManager
11
11
  import android.view.accessibility.AccessibilityNodeInfo
12
12
  import android.widget.FrameLayout
13
13
  import androidx.core.view.isNotEmpty
14
+ import androidx.core.view.isVisible
14
15
  import com.facebook.react.R
15
16
  import com.facebook.react.uimanager.JSPointerDispatcher
16
17
  import com.facebook.react.uimanager.JSTouchDispatcher
@@ -112,7 +113,11 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
112
113
  var currentDetentIndex: Int = -1
113
114
  private set
114
115
 
116
+ // Resolved detent positions (Y coordinate when sheet rests at each detent)
117
+ private val resolvedDetentPositions = mutableListOf<Int>()
118
+
115
119
  private var isDragging = false
120
+ private var isReconfiguring = false
116
121
  private var windowAnimation: Int = 0
117
122
  private var lastEmittedPositionPx: Int = -1
118
123
 
@@ -275,7 +280,11 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
275
280
  val detentInfo = getDetentInfoForIndex(currentDetentIndex)
276
281
  val detent = getDetentValueForIndex(detentInfo.index)
277
282
  val positionPx = bottomSheetView?.let { ScreenUtils.getScreenY(it) } ?: screenHeight
283
+
278
284
  delegate?.viewControllerDidPresent(detentInfo.index, detentInfo.position, detent)
285
+
286
+ // Store resolved position for initial detent
287
+ storeResolvedPosition(detentInfo.index)
279
288
  emitChangePositionDelegate(detentInfo.index, positionPx, realtime = false)
280
289
 
281
290
  // Notify parent sheet that it has lost focus (after this sheet appeared)
@@ -342,7 +351,38 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
342
351
 
343
352
  BottomSheetBehavior.STATE_EXPANDED,
344
353
  BottomSheetBehavior.STATE_COLLAPSED,
345
- BottomSheetBehavior.STATE_HALF_EXPANDED -> handleDragEnd(newState)
354
+ BottomSheetBehavior.STATE_HALF_EXPANDED -> {
355
+ // Ignore state changes triggered by content size reconfiguration
356
+ if (isReconfiguring) return
357
+
358
+ getDetentInfoForState(newState)?.let { detentInfo ->
359
+ // Store resolved position when sheet settles
360
+ storeResolvedPosition(detentInfo.index)
361
+
362
+ if (isDragging) {
363
+ // Handle drag end
364
+ val detent = getDetentValueForIndex(detentInfo.index)
365
+ delegate?.viewControllerDidDragEnd(detentInfo.index, detentInfo.position, detent)
366
+
367
+ if (detentInfo.index != currentDetentIndex) {
368
+ presentPromise?.invoke()
369
+ presentPromise = null
370
+ currentDetentIndex = detentInfo.index
371
+ setupDimmedBackground(detentInfo.index)
372
+ delegate?.viewControllerDidChangeDetent(detentInfo.index, detentInfo.position, detent)
373
+ }
374
+
375
+ isDragging = false
376
+ } else {
377
+ // Handle programmatic resize - emit detent change after sheet settles
378
+ if (detentInfo.index != currentDetentIndex) {
379
+ val detent = getDetentValueForIndex(detentInfo.index)
380
+ currentDetentIndex = detentInfo.index
381
+ delegate?.viewControllerDidChangeDetent(detentInfo.index, detentInfo.position, detent)
382
+ }
383
+ }
384
+ }
385
+ }
346
386
 
347
387
  else -> {}
348
388
  }
@@ -438,15 +478,14 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
438
478
  return
439
479
  }
440
480
 
441
- currentDetentIndex = detentIndex
442
481
  setupDimmedBackground(detentIndex)
443
482
 
444
483
  if (isPresented) {
445
- val detentInfo = getDetentInfoForIndex(detentIndex)
446
- val detent = getDetentValueForIndex(detentInfo.index)
447
- delegate?.viewControllerDidChangeDetent(detentInfo.index, detentInfo.position, detent)
484
+ // Detent change will be emitted when sheet settles in onStateChanged
485
+ // Don't update currentDetentIndex here - it will be updated when sheet settles
448
486
  setStateForDetentIndex(detentIndex)
449
487
  } else {
488
+ currentDetentIndex = detentIndex
450
489
  isDragging = false
451
490
  setupSheetDetents()
452
491
  setStateForDetentIndex(detentIndex)
@@ -482,39 +521,53 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
482
521
  fun setupSheetDetents() {
483
522
  val behavior = this.behavior ?: return
484
523
 
524
+ // Reset resolved positions if detents count changed
525
+ if (resolvedDetentPositions.size != detents.size) {
526
+ resolvedDetentPositions.clear()
527
+ repeat(detents.size) { resolvedDetentPositions.add(0) }
528
+ }
529
+
530
+ // Always update auto detent positions based on current content height
531
+ for (i in detents.indices) {
532
+ if (detents[i] == -1.0) {
533
+ val detentHeight = getDetentHeight(detents[i])
534
+ resolvedDetentPositions[i] = screenHeight - detentHeight
535
+ }
536
+ }
537
+
538
+ // Flag to prevent state change callbacks from updating detent index during reconfiguration
539
+ isReconfiguring = true
540
+
485
541
  behavior.apply {
486
542
  skipCollapsed = false
487
- isFitToContents = true
543
+ isFitToContents = false
488
544
  maxWidth = DEFAULT_MAX_WIDTH.dpToPx().toInt()
489
545
 
490
546
  when (detents.size) {
491
547
  1 -> {
492
- maxHeight = getDetentHeight(detents[0])
493
- skipCollapsed = true
494
-
495
- if (isPresented && detents[0] == -1.0) {
496
- sheetContainer?.apply {
497
- val params = layoutParams
498
- params.height = maxHeight
499
- layoutParams = params
500
- }
501
- }
548
+ setPeekHeight(getDetentHeight(detents[0]), isPresented)
549
+ expandedOffset = screenHeight - peekHeight
502
550
  }
503
551
 
504
552
  2 -> {
505
553
  setPeekHeight(getDetentHeight(detents[0]), isPresented)
506
- maxHeight = getDetentHeight(detents[1])
554
+ expandedOffset = screenHeight - getDetentHeight(detents[1])
507
555
  }
508
556
 
509
557
  3 -> {
510
- isFitToContents = false
511
558
  setPeekHeight(getDetentHeight(detents[0]), isPresented)
512
- maxHeight = getDetentHeight(detents[2])
513
- expandedOffset = sheetTopInset
514
559
  halfExpandedRatio = minOf(getDetentHeight(detents[1]).toFloat() / screenHeight.toFloat(), 1.0f)
560
+ expandedOffset = screenHeight - getDetentHeight(detents[2])
515
561
  }
516
562
  }
517
563
  }
564
+
565
+ // Re-apply current state to update position after config changes
566
+ if (isPresented) {
567
+ setStateForDetentIndex(currentDetentIndex)
568
+ }
569
+
570
+ isReconfiguring = false
518
571
  }
519
572
 
520
573
  fun setupGrabber() {
@@ -644,39 +697,99 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
644
697
  }
645
698
 
646
699
  /**
647
- * Calculates the interpolated index based on position.
648
- * Returns a continuous value (e.g., 0.5 means halfway between detent 0 and 1).
700
+ * Stores the current Y position as the resolved position for the given detent index.
701
+ * This is called when the sheet settles at a detent to capture the actual position
702
+ * which may differ from the calculated position due to system adjustments.
649
703
  */
650
- private fun getInterpolatedIndexForPosition(positionPx: Int): Float {
651
- val count = detents.size
652
- if (count == 0) return -1f
653
- if (count == 1) return 0f
704
+ private fun storeResolvedPosition(index: Int) {
705
+ if (index < 0 || index >= resolvedDetentPositions.size) return
706
+ val positionPx = bottomSheetView?.let { ScreenUtils.getScreenY(it) } ?: return
707
+ if (positionPx in 1..<screenHeight) {
708
+ resolvedDetentPositions[index] = positionPx
709
+ }
710
+ }
654
711
 
655
- // Convert position to detent fraction
656
- val currentDetent = (screenHeight - positionPx).toFloat() / screenHeight.toFloat()
712
+ /**
713
+ * Stores the resolved position for the current detent.
714
+ * Called from TrueSheetView when content size changes.
715
+ */
716
+ fun storeCurrentResolvedPosition() {
717
+ storeResolvedPosition(currentDetentIndex)
718
+ }
719
+
720
+ /**
721
+ * Returns the estimated Y position for a detent index, using stored positions when available.
722
+ */
723
+ private fun getEstimatedPositionForIndex(index: Int): Int {
724
+ if (index < 0 || index >= resolvedDetentPositions.size) return screenHeight
725
+
726
+ val storedPos = resolvedDetentPositions[index]
727
+ if (storedPos > 0) return storedPos
657
728
 
658
- // Handle below first detent (interpolate from -1 to 0)
659
- val firstDetentValue = getDetentValueForIndex(0)
660
- if (currentDetent < firstDetentValue) {
661
- if (firstDetentValue <= 0) return 0f
662
- val progress = currentDetent / firstDetentValue
663
- return progress - 1f
729
+ // Estimate based on getDetentHeight which accounts for bottomInset and maxAllowedHeight
730
+ if (index < detents.size) {
731
+ val detentHeight = getDetentHeight(detents[index])
732
+ return screenHeight - detentHeight
664
733
  }
665
734
 
666
- // Find which segment the current detent falls into and interpolate
735
+ return screenHeight
736
+ }
737
+
738
+ /**
739
+ * Finds the segment index and interpolation progress for a given position.
740
+ * Returns a Triple of (fromIndex, toIndex, progress) where progress is 0-1 within that segment.
741
+ * Returns null if position count is less than 2.
742
+ */
743
+ private fun findSegmentForPosition(positionPx: Int): Triple<Int, Int, Float>? {
744
+ val count = resolvedDetentPositions.size
745
+ if (count < 2) return null
746
+
747
+ val firstPos = getEstimatedPositionForIndex(0)
748
+ val lastPos = getEstimatedPositionForIndex(count - 1)
749
+
750
+ // Below first detent
751
+ if (positionPx > firstPos) {
752
+ val range = screenHeight - firstPos
753
+ val progress = if (range > 0) (positionPx - firstPos).toFloat() / range else 0f
754
+ return Triple(-1, 0, progress) // Special index -1 for below first
755
+ }
756
+
757
+ // Above last detent
758
+ if (positionPx < lastPos) {
759
+ return Triple(count - 1, count - 1, 0f)
760
+ }
761
+
762
+ // Find segment (positions decrease as index increases)
667
763
  for (i in 0 until count - 1) {
668
- val detentValue = getDetentValueForIndex(i)
669
- val nextDetentValue = getDetentValueForIndex(i + 1)
670
-
671
- if (currentDetent <= nextDetentValue) {
672
- val range = nextDetentValue - detentValue
673
- if (range <= 0) return i.toFloat()
674
- val progress = (currentDetent - detentValue) / range
675
- return i + maxOf(0f, minOf(1f, progress))
764
+ val pos = getEstimatedPositionForIndex(i)
765
+ val nextPos = getEstimatedPositionForIndex(i + 1)
766
+
767
+ if (positionPx <= pos && positionPx >= nextPos) {
768
+ val range = pos - nextPos
769
+ val progress = if (range > 0) (pos - positionPx).toFloat() / range else 0f
770
+ return Triple(i, i + 1, maxOf(0f, minOf(1f, progress)))
676
771
  }
677
772
  }
678
773
 
679
- return (count - 1).toFloat()
774
+ return Triple(count - 1, count - 1, 0f)
775
+ }
776
+
777
+ /**
778
+ * Calculates the interpolated index based on position.
779
+ * Returns a continuous value (e.g., 0.5 means halfway between detent 0 and 1).
780
+ */
781
+ private fun getInterpolatedIndexForPosition(positionPx: Int): Float {
782
+ val count = resolvedDetentPositions.size
783
+ if (count == 0) return -1f
784
+ if (count == 1) return 0f
785
+
786
+ val segment = findSegmentForPosition(positionPx) ?: return 0f
787
+ val (fromIndex, _, progress) = segment
788
+
789
+ // Below first detent
790
+ if (fromIndex == -1) return -progress
791
+
792
+ return fromIndex + progress
680
793
  }
681
794
 
682
795
  /**
@@ -684,27 +797,21 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
684
797
  * Returns the actual screen fraction, clamped to valid detent range.
685
798
  */
686
799
  private fun getInterpolatedDetentForPosition(positionPx: Int): Float {
687
- // Convert position to detent fraction
688
- val currentDetent = (screenHeight - positionPx).toFloat() / screenHeight.toFloat()
689
-
690
- val count = detents.size
800
+ val count = resolvedDetentPositions.size
691
801
  if (count == 0) return 0f
692
802
 
693
- // Clamp to valid range between first and last detent
694
- val firstDetentValue = getDetentValueForIndex(0)
695
- val lastDetentValue = getDetentValueForIndex(count - 1)
696
-
697
- if (currentDetent < firstDetentValue) {
698
- // Below first detent - interpolate from 0 to first detent
699
- if (firstDetentValue <= 0) return 0f
700
- return maxOf(0f, currentDetent)
701
- }
803
+ val segment = findSegmentForPosition(positionPx) ?: return getDetentValueForIndex(0)
804
+ val (fromIndex, toIndex, progress) = segment
702
805
 
703
- if (currentDetent > lastDetentValue) {
704
- return lastDetentValue
806
+ // Below first detent
807
+ if (fromIndex == -1) {
808
+ val firstDetent = getDetentValueForIndex(0)
809
+ return maxOf(0f, firstDetent * (1 - progress))
705
810
  }
706
811
 
707
- return currentDetent
812
+ val fromDetent = getDetentValueForIndex(fromIndex)
813
+ val toDetent = getDetentValueForIndex(toIndex)
814
+ return fromDetent + progress * (toDetent - fromDetent)
708
815
  }
709
816
 
710
817
  /**
@@ -767,27 +874,6 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
767
874
  delegate?.viewControllerDidDragChange(detentInfo.index, detentInfo.position, detent)
768
875
  }
769
876
 
770
- private fun handleDragEnd(state: Int) {
771
- if (!isDragging) return
772
-
773
- val detentInfo = getDetentInfoForState(state)
774
- detentInfo?.let {
775
- val detent = getDetentValueForIndex(it.index)
776
- delegate?.viewControllerDidDragEnd(it.index, it.position, detent)
777
-
778
- if (it.index != currentDetentIndex) {
779
- presentPromise?.invoke()
780
- presentPromise = null
781
-
782
- currentDetentIndex = it.index
783
- setupDimmedBackground(it.index)
784
- delegate?.viewControllerDidChangeDetent(it.index, it.position, detent)
785
- }
786
- }
787
-
788
- isDragging = false
789
- }
790
-
791
877
  // ====================================================================
792
878
  // MARK: - Detent Calculations
793
879
  // ====================================================================
@@ -890,6 +976,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
890
976
  setupSheetDetents()
891
977
  this.post {
892
978
  positionFooter()
979
+ storeResolvedPosition(currentDetentIndex)
893
980
  val positionPx = bottomSheetView?.let { ScreenUtils.getScreenY(it) } ?: screenHeight
894
981
  emitChangePositionDelegate(currentDetentIndex, positionPx, realtime = false)
895
982
  }
@@ -911,7 +998,7 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
911
998
  */
912
999
  override fun dispatchTouchEvent(event: MotionEvent): Boolean {
913
1000
  val footer = containerView?.footerView
914
- if (footer != null && footer.visibility == View.VISIBLE) {
1001
+ if (footer != null && footer.isVisible) {
915
1002
  val footerLocation = ScreenUtils.getScreenLocation(footer)
916
1003
  val touchScreenX = event.rawX.toInt()
917
1004
  val touchScreenY = event.rawY.toInt()
@@ -274,7 +274,7 @@ using namespace facebook::react;
274
274
 
275
275
  if (_controller.isPresented) {
276
276
  [_controller.sheetPresentationController animateChanges:^{
277
- [self->_controller setupActiveDetentWithIndex:index];
277
+ [self->_controller resizeToDetentIndex:index];
278
278
  }];
279
279
  if (completion) {
280
280
  completion(YES, nil);
@@ -327,14 +327,6 @@ using namespace facebook::react;
327
327
  }];
328
328
  }
329
329
 
330
- - (void)resizeToIndex:(NSInteger)index {
331
- if (_controller.isPresented) {
332
- [_controller.sheetPresentationController animateChanges:^{
333
- [self->_controller setupActiveDetentWithIndex:index];
334
- }];
335
- }
336
- }
337
-
338
330
  #pragma mark - TrueSheetContainerViewDelegate
339
331
 
340
332
  /**
@@ -348,7 +340,6 @@ using namespace facebook::react;
348
340
 
349
341
  dispatch_async(dispatch_get_main_queue(), ^{
350
342
  self->_isSheetUpdatePending = NO;
351
- self->_controller.layoutTransitioning = YES;
352
343
 
353
344
  [self->_controller.sheetPresentationController animateChanges:^{
354
345
  [self->_controller setupSheetDetents];
@@ -368,27 +359,19 @@ using namespace facebook::react;
368
359
 
369
360
  #pragma mark - TrueSheetViewControllerDelegate
370
361
 
371
- - (void)viewControllerWillPresent {
372
- NSInteger index = [_controller currentDetentIndex];
362
+ - (void)viewControllerWillPresentAtIndex:(NSInteger)index position:(CGFloat)position detent:(CGFloat)detent {
373
363
  _controller.activeDetentIndex = index;
374
- CGFloat detent = [_controller detentValueForIndex:index];
375
- [TrueSheetLifecycleEvents emitWillPresent:_eventEmitter
376
- index:index
377
- position:_controller.currentPosition
378
- detent:detent];
364
+ [TrueSheetLifecycleEvents emitWillPresent:_eventEmitter index:index position:position detent:detent];
379
365
  }
380
366
 
381
- - (void)viewControllerDidPresent {
382
- NSInteger index = [_controller currentDetentIndex];
383
- CGFloat detent = [_controller detentValueForIndex:index];
384
- [TrueSheetLifecycleEvents emitDidPresent:_eventEmitter
385
- index:index
386
- position:_controller.currentPosition
387
- detent:detent];
367
+ - (void)viewControllerDidPresentAtIndex:(NSInteger)index position:(CGFloat)position detent:(CGFloat)detent {
368
+ [TrueSheetLifecycleEvents emitDidPresent:_eventEmitter index:index position:position detent:detent];
388
369
  }
389
370
 
390
- - (void)viewControllerDidDrag:(UIGestureRecognizerState)state index:(NSInteger)index position:(CGFloat)position {
391
- CGFloat detent = [_controller detentValueForIndex:index];
371
+ - (void)viewControllerDidDrag:(UIGestureRecognizerState)state
372
+ index:(NSInteger)index
373
+ position:(CGFloat)position
374
+ detent:(CGFloat)detent {
392
375
  switch (state) {
393
376
  case UIGestureRecognizerStateBegan:
394
377
  [TrueSheetDragEvents emitDragBegin:_eventEmitter index:index position:position detent:detent];
@@ -414,11 +397,10 @@ using namespace facebook::react;
414
397
  [TrueSheetLifecycleEvents emitDidDismiss:_eventEmitter];
415
398
  }
416
399
 
417
- - (void)viewControllerDidChangeDetent:(NSInteger)index position:(CGFloat)position {
400
+ - (void)viewControllerDidChangeDetent:(NSInteger)index position:(CGFloat)position detent:(CGFloat)detent {
418
401
  if (_controller.activeDetentIndex != index) {
419
402
  _controller.activeDetentIndex = index;
420
403
  }
421
- CGFloat detent = [_controller detentValueForIndex:index];
422
404
  [TrueSheetStateEvents emitDetentChange:_eventEmitter index:index position:position detent:detent];
423
405
  }
424
406
 
@@ -19,12 +19,15 @@ NS_ASSUME_NONNULL_BEGIN
19
19
 
20
20
  @protocol TrueSheetViewControllerDelegate <NSObject>
21
21
 
22
- - (void)viewControllerWillPresent;
23
- - (void)viewControllerDidPresent;
22
+ - (void)viewControllerWillPresentAtIndex:(NSInteger)index position:(CGFloat)position detent:(CGFloat)detent;
23
+ - (void)viewControllerDidPresentAtIndex:(NSInteger)index position:(CGFloat)position detent:(CGFloat)detent;
24
24
  - (void)viewControllerWillDismiss;
25
25
  - (void)viewControllerDidDismiss;
26
- - (void)viewControllerDidChangeDetent:(NSInteger)index position:(CGFloat)position;
27
- - (void)viewControllerDidDrag:(UIGestureRecognizerState)state index:(NSInteger)index position:(CGFloat)position;
26
+ - (void)viewControllerDidChangeDetent:(NSInteger)index position:(CGFloat)position detent:(CGFloat)detent;
27
+ - (void)viewControllerDidDrag:(UIGestureRecognizerState)state
28
+ index:(NSInteger)index
29
+ position:(CGFloat)position
30
+ detent:(CGFloat)detent;
28
31
  - (void)viewControllerDidChangePosition:(CGFloat)index
29
32
  position:(CGFloat)position
30
33
  detent:(CGFloat)detent
@@ -59,18 +62,15 @@ NS_ASSUME_NONNULL_BEGIN
59
62
  @property (nonatomic, strong, nullable) NSNumber *blurIntensity;
60
63
  @property (nonatomic, assign) BOOL blurInteraction;
61
64
  @property (nonatomic, assign) BOOL pageSizing;
62
- @property (nonatomic, assign) BOOL layoutTransitioning;
63
65
  @property (nonatomic, assign) BOOL isPresented;
64
66
  @property (nonatomic, assign) NSInteger activeDetentIndex;
65
67
 
66
68
  - (void)applyActiveDetent;
67
69
  - (void)setupActiveDetentWithIndex:(NSInteger)index;
70
+ - (void)resizeToDetentIndex:(NSInteger)index;
68
71
  - (void)setupSheetDetents;
69
72
  - (void)setupSheetProps;
70
73
  - (void)updateDraggable;
71
- - (NSInteger)currentDetentIndex;
72
- - (CGFloat)currentPosition;
73
- - (CGFloat)detentValueForIndex:(NSInteger)index;
74
74
 
75
75
  @end
76
76
 
@@ -21,18 +21,17 @@
21
21
 
22
22
  @implementation TrueSheetViewController {
23
23
  CGFloat _lastPosition;
24
- BOOL _isTransitioning;
25
24
  BOOL _isDragging;
26
-
27
- // Hidden view used to track position during native transition animations
28
- UIView *_fakeTransitionView;
29
- CADisplayLink *_displayLink;
25
+ NSInteger _pendingDetentIndex;
30
26
 
31
27
  // Reference to parent TrueSheetViewController (if presented from another sheet)
32
28
  __weak TrueSheetViewController *_parentSheetController;
33
29
 
34
30
  // Blur effect view
35
31
  TrueSheetBlurView *_blurView;
32
+
33
+ // Resolved detent positions (Y coordinate when sheet rests at each detent)
34
+ NSMutableArray<NSNumber *> *_resolvedDetentPositions;
36
35
  }
37
36
 
38
37
  #pragma mark - Initialization
@@ -48,28 +47,19 @@
48
47
  _dimmedDetentIndex = @(0);
49
48
  _pageSizing = YES;
50
49
  _lastPosition = 0;
51
- _isTransitioning = NO;
52
50
  _isDragging = NO;
53
- _layoutTransitioning = NO;
54
51
  _isPresented = NO;
55
52
  _activeDetentIndex = -1;
56
-
57
- _fakeTransitionView = [[UIView alloc] init];
58
- _fakeTransitionView.hidden = YES;
59
- _fakeTransitionView.userInteractionEnabled = NO;
53
+ _pendingDetentIndex = -1;
60
54
 
61
55
  _blurInteraction = YES;
56
+ _resolvedDetentPositions = [NSMutableArray array];
62
57
  }
63
58
  return self;
64
59
  }
65
60
 
66
61
  - (void)dealloc {
67
62
  [[NSNotificationCenter defaultCenter] removeObserver:self];
68
-
69
- if (_displayLink) {
70
- [_displayLink invalidate];
71
- _displayLink = nil;
72
- }
73
63
  }
74
64
 
75
65
  #pragma mark - Computed Properties
@@ -82,7 +72,7 @@
82
72
  }
83
73
 
84
74
  - (BOOL)isActiveAndVisible {
85
- return self.isViewLoaded && self.view.window != nil && !self.isBeingDismissed;
75
+ return self.isViewLoaded && self.view.window != nil;
86
76
  }
87
77
 
88
78
  - (UIView *)presentedView {
@@ -148,10 +138,15 @@
148
138
  }
149
139
  }
150
140
 
151
- if ([self.delegate respondsToSelector:@selector(viewControllerWillPresent)]) {
152
- [self.delegate viewControllerWillPresent];
141
+ if ([self.delegate respondsToSelector:@selector(viewControllerWillPresentAtIndex:position:detent:)]) {
142
+ dispatch_async(dispatch_get_main_queue(), ^{
143
+ NSInteger index = [self currentDetentIndex];
144
+ CGFloat position = self.currentPosition;
145
+ CGFloat detent = [self detentValueForIndex:index];
146
+
147
+ [self.delegate viewControllerWillPresentAtIndex:index position:position detent:detent];
148
+ });
153
149
  }
154
- [self setupTransitionPositionTracking];
155
150
  }
156
151
  }
157
152
 
@@ -166,8 +161,12 @@
166
161
  }
167
162
  }
168
163
 
169
- if ([self.delegate respondsToSelector:@selector(viewControllerDidPresent)]) {
170
- [self.delegate viewControllerDidPresent];
164
+ if ([self.delegate respondsToSelector:@selector(viewControllerDidPresentAtIndex:position:detent:)]) {
165
+ dispatch_async(dispatch_get_main_queue(), ^{
166
+ NSInteger index = [self currentDetentIndex];
167
+ CGFloat detent = [self detentValueForIndex:index];
168
+ [self.delegate viewControllerDidPresentAtIndex:index position:self.currentPosition detent:detent];
169
+ });
171
170
  }
172
171
  [self setupGestureRecognizer];
173
172
  _isPresented = YES;
@@ -187,12 +186,14 @@
187
186
  }
188
187
  }
189
188
 
189
+ dispatch_async(dispatch_get_main_queue(), ^{
190
+ [self emitChangePositionDelegateWithPosition:self.currentPosition realtime:NO];
191
+ });
192
+
190
193
  if ([self.delegate respondsToSelector:@selector(viewControllerWillDismiss)]) {
191
194
  [self.delegate viewControllerWillDismiss];
192
195
  }
193
196
  }
194
-
195
- [self setupTransitionPositionTracking];
196
197
  }
197
198
 
198
199
  - (void)viewDidDisappear:(BOOL)animated {
@@ -228,13 +229,29 @@
228
229
  [self.delegate viewControllerDidChangeSize:self.view.frame.size];
229
230
  }
230
231
 
231
- if (!_isTransitioning && !_isDragging && self.isActiveAndVisible) {
232
- // Not realtime when layout changes (e.g., another controller is presented on top)
233
- [self emitChangePositionDelegateWithPosition:self.currentPosition realtime:NO];
232
+ // Check if there's an active presented controller that has settled (not being presented/dismissed)
233
+ UIViewController *presented = self.presentedViewController;
234
+ BOOL hasPresentedController = presented != nil && !presented.isBeingPresented && !presented.isBeingDismissed;
235
+
236
+ if (!_isDragging) {
237
+ dispatch_async(dispatch_get_main_queue(), ^{
238
+ // Update stored position for current detent (handles content size changes)
239
+ [self storeResolvedPositionForIndex:[self currentDetentIndex]];
240
+
241
+ [self emitChangePositionDelegateWithPosition:self.currentPosition realtime:hasPresentedController];
242
+ });
243
+ }
244
+
245
+ // Emit pending detent change after programmatic resize settles
246
+ if (_pendingDetentIndex >= 0) {
247
+ NSInteger pendingIndex = _pendingDetentIndex;
248
+ _pendingDetentIndex = -1;
234
249
 
235
- // On iOS 26, this is called twice when we have a ScrollView
236
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
237
- self->_layoutTransitioning = NO;
250
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
251
+ if ([self.delegate respondsToSelector:@selector(viewControllerDidChangeDetent:position:detent:)]) {
252
+ CGFloat detent = [self detentValueForIndex:pendingIndex];
253
+ [self.delegate viewControllerDidChangeDetent:pendingIndex position:self.currentPosition detent:detent];
254
+ }
238
255
  });
239
256
  }
240
257
  }
@@ -310,9 +327,10 @@
310
327
 
311
328
  - (void)handlePanGesture:(UIPanGestureRecognizer *)gesture {
312
329
  NSInteger index = [self currentDetentIndex];
330
+ CGFloat detent = [self detentValueForIndex:index];
313
331
 
314
- if ([self.delegate respondsToSelector:@selector(viewControllerDidDrag:index:position:)]) {
315
- [self.delegate viewControllerDidDrag:gesture.state index:index position:self.currentPosition];
332
+ if ([self.delegate respondsToSelector:@selector(viewControllerDidDrag:index:position:detent:)]) {
333
+ [self.delegate viewControllerDidDrag:gesture.state index:index position:self.currentPosition detent:detent];
316
334
  }
317
335
 
318
336
  switch (gesture.state) {
@@ -325,7 +343,12 @@
325
343
  case UIGestureRecognizerStateEnded:
326
344
  case UIGestureRecognizerStateCancelled: {
327
345
  _isDragging = NO;
328
- [self emitChangePositionDelegateWithPosition:self.currentPosition realtime:NO];
346
+ dispatch_async(dispatch_get_main_queue(), ^{
347
+ // Store resolved position when drag ends
348
+ [self storeResolvedPositionForIndex:[self currentDetentIndex]];
349
+
350
+ [self emitChangePositionDelegateWithPosition:self.currentPosition realtime:NO];
351
+ });
329
352
  break;
330
353
  }
331
354
  default:
@@ -348,68 +371,130 @@
348
371
  }
349
372
  }
350
373
 
351
- - (CGFloat)interpolatedIndexForPosition:(CGFloat)position {
352
- NSInteger count = _detents.count;
353
- if (count == 0)
354
- return -1;
355
- if (count == 1)
356
- return 0;
374
+ /// Stores the current position for the given detent index
375
+ - (void)storeResolvedPositionForIndex:(NSInteger)index {
376
+ if (index >= 0 && index < (NSInteger)_resolvedDetentPositions.count) {
377
+ _resolvedDetentPositions[index] = @(self.currentPosition);
378
+ }
379
+ }
357
380
 
358
- // Convert position to detent fraction: detent = (screenHeight - position) / screenHeight
359
- CGFloat currentDetent = (self.screenHeight - position) / self.screenHeight;
381
+ /// Returns the estimated Y position for a detent index, using stored positions when available
382
+ - (CGFloat)estimatedPositionForIndex:(NSInteger)index {
383
+ if (index < 0 || index >= (NSInteger)_resolvedDetentPositions.count)
384
+ return 0;
360
385
 
361
- // Handle below first detent (interpolate from -1 to 0)
362
- CGFloat firstDetentValue = [self detentValueForIndex:0];
363
- if (currentDetent < firstDetentValue) {
364
- // Interpolate: 0 at firstDetentValue, -1 at 0
365
- if (firstDetentValue <= 0)
366
- return 0;
367
- CGFloat progress = currentDetent / firstDetentValue;
368
- return progress - 1;
386
+ CGFloat storedPos = [_resolvedDetentPositions[index] doubleValue];
387
+ if (storedPos > 0) {
388
+ return storedPos;
369
389
  }
370
390
 
371
- // Find which segment the current detent falls into and interpolate
372
- for (NSInteger i = 0; i < count - 1; i++) {
373
- CGFloat detentValue = [self detentValueForIndex:i];
374
- CGFloat nextDetentValue = [self detentValueForIndex:i + 1];
391
+ // Estimate based on detent value and known offset from first resolved position
392
+ CGFloat detentValue = [self detentValueForIndex:index];
393
+ CGFloat basePosition = self.screenHeight - (detentValue * self.screenHeight);
375
394
 
376
- if (currentDetent <= nextDetentValue) {
377
- // Interpolate between index i and i+1
378
- CGFloat range = nextDetentValue - detentValue;
379
- if (range <= 0)
380
- return i;
381
- CGFloat progress = (currentDetent - detentValue) / range;
382
- return i + fmax(0, fmin(1, progress));
395
+ // Find a resolved position to calculate offset
396
+ for (NSInteger i = 0; i < (NSInteger)_resolvedDetentPositions.count; i++) {
397
+ CGFloat pos = [_resolvedDetentPositions[i] doubleValue];
398
+ if (pos > 0) {
399
+ CGFloat knownDetent = [self detentValueForIndex:i];
400
+ CGFloat expectedPos = self.screenHeight - (knownDetent * self.screenHeight);
401
+ CGFloat offset = pos - expectedPos;
402
+ return basePosition + offset;
383
403
  }
384
404
  }
385
405
 
386
- return count - 1;
406
+ return basePosition;
387
407
  }
388
408
 
389
- - (CGFloat)interpolatedDetentForPosition:(CGFloat)position {
390
- // Convert position to detent fraction: detent = (screenHeight - position) / screenHeight
391
- CGFloat currentDetent = (self.screenHeight - position) / self.screenHeight;
409
+ /// Finds the segment containing the given position and returns the lower index and progress within that segment.
410
+ /// Returns YES if a segment was found, NO otherwise. When NO, `outIndex` contains the boundary index.
411
+ - (BOOL)findSegmentForPosition:(CGFloat)position outIndex:(NSInteger *)outIndex outProgress:(CGFloat *)outProgress {
412
+ NSInteger count = _resolvedDetentPositions.count;
413
+ if (count == 0) {
414
+ *outIndex = -1;
415
+ *outProgress = 0;
416
+ return NO;
417
+ }
392
418
 
393
- NSInteger count = _detents.count;
394
- if (count == 0)
395
- return 0;
419
+ if (count == 1) {
420
+ *outIndex = 0;
421
+ *outProgress = 0;
422
+ return NO;
423
+ }
396
424
 
397
- // Clamp to valid range between first and last detent
398
- CGFloat firstDetentValue = [self detentValueForIndex:0];
399
- CGFloat lastDetentValue = [self detentValueForIndex:count - 1];
425
+ CGFloat firstPos = [self estimatedPositionForIndex:0];
426
+ CGFloat lastPos = [self estimatedPositionForIndex:count - 1];
400
427
 
401
- if (currentDetent < firstDetentValue) {
402
- // Below first detent - interpolate from 0 to first detent
403
- if (firstDetentValue <= 0)
404
- return 0;
405
- return fmax(0, currentDetent);
428
+ // Below first detent (position > firstPos means sheet is smaller)
429
+ if (position > firstPos) {
430
+ CGFloat range = self.screenHeight - firstPos;
431
+ *outIndex = -1;
432
+ *outProgress = range > 0 ? (position - firstPos) / range : 0;
433
+ return NO;
406
434
  }
407
435
 
408
- if (currentDetent > lastDetentValue) {
409
- return lastDetentValue;
436
+ // Above last detent
437
+ if (position < lastPos) {
438
+ *outIndex = count - 1;
439
+ *outProgress = 0;
440
+ return NO;
441
+ }
442
+
443
+ // Find segment (positions decrease as index increases)
444
+ for (NSInteger i = 0; i < count - 1; i++) {
445
+ CGFloat pos = [self estimatedPositionForIndex:i];
446
+ CGFloat nextPos = [self estimatedPositionForIndex:i + 1];
447
+
448
+ if (position <= pos && position >= nextPos) {
449
+ CGFloat range = pos - nextPos;
450
+ *outIndex = i;
451
+ *outProgress = range > 0 ? (pos - position) / range : 0;
452
+ return YES;
453
+ }
410
454
  }
411
455
 
412
- return currentDetent;
456
+ *outIndex = count - 1;
457
+ *outProgress = 0;
458
+ return NO;
459
+ }
460
+
461
+ - (CGFloat)interpolatedIndexForPosition:(CGFloat)position {
462
+ NSInteger index;
463
+ CGFloat progress;
464
+ BOOL found = [self findSegmentForPosition:position outIndex:&index outProgress:&progress];
465
+
466
+ if (!found) {
467
+ if (index == -1) {
468
+ // Below first detent - return negative progress
469
+ return -progress;
470
+ }
471
+ // At or beyond boundary
472
+ return index;
473
+ }
474
+
475
+ // Within a segment - interpolate
476
+ return index + fmax(0, fmin(1, progress));
477
+ }
478
+
479
+ - (CGFloat)interpolatedDetentForPosition:(CGFloat)position {
480
+ NSInteger index;
481
+ CGFloat progress;
482
+ BOOL found = [self findSegmentForPosition:position outIndex:&index outProgress:&progress];
483
+
484
+ if (!found) {
485
+ if (index == -1) {
486
+ // Below first detent
487
+ CGFloat firstDetent = [self detentValueForIndex:0];
488
+ return fmax(0, firstDetent * (1 - progress));
489
+ }
490
+ // At or beyond boundary
491
+ return [self detentValueForIndex:index];
492
+ }
493
+
494
+ // Within a segment - interpolate between detent values
495
+ CGFloat detent = [self detentValueForIndex:index];
496
+ CGFloat nextDetent = [self detentValueForIndex:index + 1];
497
+ return detent + progress * (nextDetent - detent);
413
498
  }
414
499
 
415
500
  - (CGFloat)detentValueForIndex:(NSInteger)index {
@@ -425,73 +510,6 @@
425
510
  return 0;
426
511
  }
427
512
 
428
- /**
429
- * Sets up position tracking during view controller transitions using a fake view.
430
- *
431
- * This uses a hidden "fake" view added to the container that animates alongside
432
- * the presented view. By observing the presentation layer, we can track smooth
433
- * position changes during native transition animations.
434
- */
435
- - (void)setupTransitionPositionTracking {
436
- if (self.transitionCoordinator == nil)
437
- return;
438
-
439
- _isTransitioning = YES;
440
-
441
- UIView *containerView = self.sheetPresentationController.containerView;
442
- UIView *presentedView = self.presentedView;
443
-
444
- if (!containerView || !presentedView)
445
- return;
446
-
447
- CGRect frame = presentedView.frame;
448
- BOOL isPresenting = self.isBeingPresented;
449
-
450
- // Set initial position: presenting starts from bottom, dismissing from current
451
- frame.origin.y = isPresenting ? self.screenHeight : presentedView.frame.origin.y;
452
- _fakeTransitionView.frame = frame;
453
-
454
- auto animation = ^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
455
- [[context containerView] addSubview:self->_fakeTransitionView];
456
-
457
- CGRect finalFrame = presentedView.frame;
458
- finalFrame.origin.y = presentedView.frame.origin.y;
459
- self->_fakeTransitionView.frame = finalFrame;
460
-
461
- // Track position at screen refresh rate via display link
462
- self->_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(trackTransitionPosition:)];
463
- [self->_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
464
- };
465
-
466
- [self.transitionCoordinator
467
- animateAlongsideTransition:animation
468
- completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
469
- [self->_displayLink invalidate];
470
- self->_displayLink = nil;
471
- [self->_fakeTransitionView removeFromSuperview];
472
- self->_isTransitioning = NO;
473
- }];
474
- }
475
-
476
- - (void)trackTransitionPosition:(CADisplayLink *)displayLink {
477
- UIView *presentedView = self.presentedView;
478
-
479
- if (_isDragging || !_fakeTransitionView || !presentedView)
480
- return;
481
-
482
- // Presentation layer contains in-flight animated values (not final/target values)
483
- CALayer *presentationLayer = _fakeTransitionView.layer.presentationLayer;
484
-
485
- if (presentationLayer) {
486
- CGFloat transitioningPosition = presentationLayer.frame.origin.y;
487
- CGFloat staticPosition = _fakeTransitionView.frame.origin.y;
488
-
489
- if (fabs(staticPosition - transitioningPosition) > 0.01) {
490
- [self emitChangePositionDelegateWithPosition:transitioningPosition realtime:YES];
491
- }
492
- }
493
- }
494
-
495
513
  #pragma mark - Sheet Configuration
496
514
 
497
515
  - (void)setupSheetDetents {
@@ -500,6 +518,7 @@
500
518
  return;
501
519
 
502
520
  NSMutableArray<UISheetPresentationControllerDetent *> *detents = [NSMutableArray array];
521
+ [_resolvedDetentPositions removeAllObjects];
503
522
 
504
523
  CGFloat autoHeight = [self.contentHeight floatValue] + [self.headerHeight floatValue];
505
524
 
@@ -509,6 +528,8 @@
509
528
  withAutoHeight:autoHeight
510
529
  atIndex:index];
511
530
  [detents addObject:sheetDetent];
531
+ // Initialize with placeholder - will be updated when sheet settles at each detent
532
+ [_resolvedDetentPositions addObject:@(0)];
512
533
  }
513
534
 
514
535
  sheet.detents = detents;
@@ -632,6 +653,16 @@
632
653
  [self applyActiveDetent];
633
654
  }
634
655
 
656
+ - (void)resizeToDetentIndex:(NSInteger)index {
657
+ if (index == _activeDetentIndex) {
658
+ return;
659
+ }
660
+
661
+ _pendingDetentIndex = index;
662
+ _activeDetentIndex = index;
663
+ [self applyActiveDetent];
664
+ }
665
+
635
666
  - (void)setupSheetProps {
636
667
  UISheetPresentationController *sheet = self.sheetPresentationController;
637
668
  if (!sheet) {
@@ -686,9 +717,14 @@
686
717
 
687
718
  - (void)sheetPresentationControllerDidChangeSelectedDetentIdentifier:
688
719
  (UISheetPresentationController *)sheetPresentationController {
689
- NSInteger index = [self currentDetentIndex];
690
- if (index >= 0 && [self.delegate respondsToSelector:@selector(viewControllerDidChangeDetent:position:)]) {
691
- [self.delegate viewControllerDidChangeDetent:index position:self.currentPosition];
720
+ if ([self.delegate respondsToSelector:@selector(viewControllerDidChangeDetent:position:detent:)]) {
721
+ dispatch_async(dispatch_get_main_queue(), ^{
722
+ NSInteger index = [self currentDetentIndex];
723
+ if (index >= 0) {
724
+ CGFloat detent = [self detentValueForIndex:index];
725
+ [self.delegate viewControllerDidChangeDetent:index position:self.currentPosition detent:detent];
726
+ }
727
+ });
692
728
  }
693
729
  }
694
730
 
@@ -13,6 +13,9 @@ const LINKING_ERROR = `The package '@lodev09/react-native-true-sheet' doesn't se
13
13
  ios: "- You have run 'pod install'\n",
14
14
  default: ''
15
15
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n' + '- You are using the new architecture (Fabric)\n';
16
+
17
+ // Material Design 3 minimum touch target
18
+ const ANDROID_HITBOX_HEIGHT = 48;
16
19
  if (!TrueSheetModule) {
17
20
  throw new Error(LINKING_ERROR);
18
21
  }
@@ -295,7 +298,7 @@ export class TrueSheet extends PureComponent {
295
298
  android: styles.scrollableAndroidContainer
296
299
  });
297
300
  const contentStyle = this.props.scrollable && Platform.select({
298
- android: styles.scrollableContent
301
+ android: styles.scrollableAndroidContent
299
302
  });
300
303
  return /*#__PURE__*/_jsx(TrueSheetViewNativeComponent, {
301
304
  ...rest,
@@ -368,7 +371,7 @@ const styles = StyleSheet.create({
368
371
  right: 0,
369
372
  bottom: 0
370
373
  },
371
- scrollableContent: {
374
+ scrollableAndroidContent: {
372
375
  flexGrow: 1,
373
376
  flexBasis: 0
374
377
  },
@@ -382,7 +385,7 @@ const styles = StyleSheet.create({
382
385
  top: 0,
383
386
  left: 0,
384
387
  right: 0,
385
- height: 48 // Material Design 3 minimum touch target
388
+ height: ANDROID_HITBOX_HEIGHT
386
389
  }
387
390
  });
388
391
  //# sourceMappingURL=TrueSheet.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PureComponent","createRef","isValidElement","createElement","TrueSheetViewNativeComponent","TrueSheetContainerViewNativeComponent","TrueSheetContentViewNativeComponent","TrueSheetHeaderViewNativeComponent","TrueSheetFooterViewNativeComponent","TrueSheetModule","Platform","processColor","StyleSheet","findNodeHandle","View","jsx","_jsx","jsxs","_jsxs","LINKING_ERROR","select","ios","default","Error","TrueSheet","displayName","instances","presentationResolver","constructor","props","nativeRef","validateDetents","shouldRenderImmediately","initialDetentIndex","undefined","state","shouldRenderNativeView","onMount","bind","onWillDismiss","onDidDismiss","onWillPresent","onDidPresent","onDetentChange","onDragBegin","onDragChange","onDragEnd","onPositionChange","onWillFocus","onDidFocus","onWillBlur","onDidBlur","detents","length","console","warn","forEach","detent","index","detentsLength","Math","min","getInstance","name","instance","handle","nodeHandle","current","present","dismiss","resize","registerInstance","unregisterInstance","event","setState","Promise","resolve","presentByRef","dismissByRef","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","render","backgroundColor","dismissible","draggable","grabber","dimmed","initialDetentAnimated","keyboardMode","dimmedDetentIndex","blurTint","cornerRadius","maxHeight","edgeToEdgeFullScreen","scrollable","pageSizing","children","style","header","footer","rest","resolvedDetents","slice","map","containerStyle","android","styles","scrollableAndroidContainer","contentStyle","scrollableContent","ref","sheetView","background","OS","collapsable","grabberHitbox","create","zIndex","position","top","left","right","bottom","flexGrow","flexBasis","height"],"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","processColor","StyleSheet","findNodeHandle","View","jsx","_jsx","jsxs","_jsxs","LINKING_ERROR","select","ios","default","ANDROID_HITBOX_HEIGHT","Error","TrueSheet","displayName","instances","presentationResolver","constructor","props","nativeRef","validateDetents","shouldRenderImmediately","initialDetentIndex","undefined","state","shouldRenderNativeView","onMount","bind","onWillDismiss","onDidDismiss","onWillPresent","onDidPresent","onDetentChange","onDragBegin","onDragChange","onDragEnd","onPositionChange","onWillFocus","onDidFocus","onWillBlur","onDidBlur","detents","length","console","warn","forEach","detent","index","detentsLength","Math","min","getInstance","name","instance","handle","nodeHandle","current","present","dismiss","resize","registerInstance","unregisterInstance","event","setState","Promise","resolve","presentByRef","dismissByRef","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","render","backgroundColor","dismissible","draggable","grabber","dimmed","initialDetentAnimated","keyboardMode","dimmedDetentIndex","blurTint","cornerRadius","maxHeight","edgeToEdgeFullScreen","scrollable","pageSizing","children","style","header","footer","rest","resolvedDetents","slice","map","containerStyle","android","styles","scrollableAndroidContainer","contentStyle","scrollableAndroidContent","ref","sheetView","background","OS","collapsable","grabberHitbox","create","zIndex","position","top","left","right","bottom","flexGrow","flexBasis","height"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
@@ -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,EAef,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;gBAE7C,KAAK,EAAE,cAAc;IA+BjC,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,KAAK,MAAM,GAOjB;IAED;;;;;;OAMG;WACiB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3E;;;;;OAKG;WACiB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD;;;;;;OAMG;WACiB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE,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;IAMpB,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;;;OAGG;IACU,OAAO,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBtD;;;OAGG;IACU,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IASnD,oBAAoB,IAAI,IAAI;IAO5B,MAAM,IAAI,SAAS;CA4GpB"}
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,EAef,MAAM,mBAAmB,CAAC;AA2B3B,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;gBAE7C,KAAK,EAAE,cAAc;IA+BjC,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,KAAK,MAAM,GAOjB;IAED;;;;;;OAMG;WACiB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3E;;;;;OAKG;WACiB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD;;;;;;OAMG;WACiB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE,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;IAMpB,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;;;OAGG;IACU,OAAO,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBtD;;;OAGG;IACU,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IASnD,oBAAoB,IAAI,IAAI;IAO5B,MAAM,IAAI,SAAS;CA2GpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodev09/react-native-true-sheet",
3
- "version": "3.0.0-beta.18",
3
+ "version": "3.0.0-beta.19",
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
@@ -42,6 +42,9 @@ const LINKING_ERROR =
42
42
  '- You are not using Expo Go\n' +
43
43
  '- You are using the new architecture (Fabric)\n';
44
44
 
45
+ // Material Design 3 minimum touch target
46
+ const ANDROID_HITBOX_HEIGHT = 48;
47
+
45
48
  if (!TrueSheetModule) {
46
49
  throw new Error(LINKING_ERROR);
47
50
  }
@@ -377,7 +380,7 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
377
380
  const contentStyle =
378
381
  this.props.scrollable &&
379
382
  Platform.select({
380
- android: styles.scrollableContent,
383
+ android: styles.scrollableAndroidContent,
381
384
  });
382
385
 
383
386
  return (
@@ -431,7 +434,6 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
431
434
  {isValidElement(footer) ? footer : createElement(footer)}
432
435
  </TrueSheetFooterViewNativeComponent>
433
436
  )}
434
- {/* Grabber hitbox for Android - allows dragging the sheet from the top area */}
435
437
  {Platform.OS === 'android' && grabber && draggable && (
436
438
  <View collapsable={false} style={styles.grabberHitbox} />
437
439
  )}
@@ -460,7 +462,7 @@ const styles = StyleSheet.create({
460
462
  right: 0,
461
463
  bottom: 0,
462
464
  },
463
- scrollableContent: {
465
+ scrollableAndroidContent: {
464
466
  flexGrow: 1,
465
467
  flexBasis: 0,
466
468
  },
@@ -474,6 +476,6 @@ const styles = StyleSheet.create({
474
476
  top: 0,
475
477
  left: 0,
476
478
  right: 0,
477
- height: 48, // Material Design 3 minimum touch target
479
+ height: ANDROID_HITBOX_HEIGHT,
478
480
  },
479
481
  });