@swmansion/react-native-bottom-sheet 0.5.1 → 0.5.5

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.
@@ -55,7 +55,7 @@ export const useBottomSheetPanGesture = ({
55
55
  if (!touch) return;
56
56
  const deltaX = touch.absoluteX - panStartX.value;
57
57
  const deltaY = touch.absoluteY - panStartY.value;
58
- if (hasScrollable.value && scrollOffset.value > 0 && isTouchWithinScrollable.value) {
58
+ if (hasScrollable.value && scrollOffset.value > 0 && isTouchWithinScrollable.value && translateY.value <= 0) {
59
59
  return;
60
60
  }
61
61
  if (Math.abs(deltaX) > Math.abs(deltaY)) {
@@ -82,31 +82,41 @@ export const useBottomSheetPanGesture = ({
82
82
  }
83
83
  } else {
84
84
  const isDraggingDown = event.translationY > 0;
85
- const canStartDrag = !hasScrollable.value || scrollOffset.value <= 0 || !isTouchWithinScrollable.value;
85
+ const canStartDrag = !hasScrollable.value || scrollOffset.value <= 0 || translateY.value > 0 || !isTouchWithinScrollable.value;
86
86
  if (!canStartDrag || !isDraggingDown && translateY.value <= 0) {
87
87
  return;
88
88
  }
89
89
  const isScrollableActive = hasScrollable.value && isScrollableGestureActive.value;
90
90
  isDraggingSheet.set(true);
91
- isDraggingFromScrollable.set(isScrollableActive && isTouchWithinScrollable.value);
91
+ isDraggingFromScrollable.set(isScrollableActive && isTouchWithinScrollable.value && scrollOffset.value <= 0);
92
92
  dragStartTranslateY.set(translateY.value - event.translationY);
93
93
  isScrollableLocked.set(hasScrollable.value);
94
- if (isTouchWithinScrollable.value && hasScrollable.value) {
94
+ if (isTouchWithinScrollable.value && hasScrollable.value && scrollOffset.value <= 0) {
95
95
  scrollTo(scrollableRef, 0, 0, false);
96
96
  }
97
97
  }
98
98
  const rawTranslate = dragStartTranslateY.value + event.translationY;
99
- const nextTranslate = Math.min(Math.max(rawTranslate, 0), sheetHeight.value);
99
+ const resolvedDetents = detentsValue.value;
100
+ const draggable = isDraggableValue.value;
101
+ let maxDraggableTranslateY = sheetHeight.value;
102
+ let foundDraggable = false;
103
+ for (let i = 0; i < resolvedDetents.length; i++) {
104
+ if (!(draggable[i] ?? true)) continue;
105
+ const t = sheetHeight.value - (resolvedDetents[i] ?? 0);
106
+ if (!foundDraggable || t > maxDraggableTranslateY) {
107
+ maxDraggableTranslateY = t;
108
+ foundDraggable = true;
109
+ }
110
+ }
111
+ const nextTranslate = Math.min(Math.max(rawTranslate, 0), maxDraggableTranslateY);
100
112
  translateY.set(nextTranslate);
101
113
  if (isDraggingSheet.value && rawTranslate < 0 && isTouchWithinScrollable.value && hasScrollable.value) {
102
114
  isDraggingSheet.set(false);
103
115
  isScrollableLocked.set(false);
104
- const resolvedDetentValues = detentsValue.value;
105
- const draggable = isDraggableValue.value;
106
116
  let targetSnapIndex = -1;
107
117
  let targetSnapValue = -1;
108
- for (let i = resolvedDetentValues.length - 1; i >= 0; i--) {
109
- const detentValue = resolvedDetentValues[i];
118
+ for (let i = resolvedDetents.length - 1; i >= 0; i--) {
119
+ const detentValue = resolvedDetents[i];
110
120
  if (detentValue !== undefined && (draggable[i] ?? true) && detentValue > targetSnapValue) {
111
121
  targetSnapValue = detentValue;
112
122
  targetSnapIndex = i;
@@ -114,8 +124,8 @@ export const useBottomSheetPanGesture = ({
114
124
  }
115
125
  if (targetSnapIndex === -1) {
116
126
  const maxSnap = sheetHeight.value;
117
- for (let i = resolvedDetentValues.length - 1; i >= 0; i--) {
118
- if (resolvedDetentValues[i] === maxSnap) {
127
+ for (let i = resolvedDetents.length - 1; i >= 0; i--) {
128
+ if (resolvedDetents[i] === maxSnap) {
119
129
  targetSnapIndex = i;
120
130
  break;
121
131
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Gesture","scheduleOnRN","measure","scrollTo","useSharedValue","findSnapTarget","useBottomSheetPanGesture","animationTarget","translateY","sheetHeight","detentsValue","isDraggableValue","currentIndex","scrollOffset","hasScrollable","isScrollableGestureActive","isScrollableLocked","scrollableRef","handleIndexChange","animateToIndex","isDraggingSheet","isDraggingFromScrollable","panStartX","panStartY","panActivated","dragStartTranslateY","isTouchWithinScrollable","Pan","manualActivation","onTouchesDown","event","set","touch","changedTouches","allTouches","undefined","absoluteX","absoluteY","value","layout","withinX","pageX","width","withinY","pageY","height","onTouchesMove","stateManager","deltaX","deltaY","Math","abs","fail","activate","onBegin","NaN","onUpdate","isDraggingDown","translationY","canStartDrag","isScrollableActive","rawTranslate","nextTranslate","min","max","resolvedDetentValues","draggable","targetSnapIndex","targetSnapValue","i","length","detentValue","maxSnap","onEnd","wasDragging","allPositions","map","snapIndex","index","isDraggable","targetIndex","velocityY","hasIndexChanged","shouldApplyVelocity","Number","isFinite"],"sourceRoot":"../../src","sources":["useBottomSheetPanGesture.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Gesture","scheduleOnRN","measure","scrollTo","useSharedValue","findSnapTarget","useBottomSheetPanGesture","animationTarget","translateY","sheetHeight","detentsValue","isDraggableValue","currentIndex","scrollOffset","hasScrollable","isScrollableGestureActive","isScrollableLocked","scrollableRef","handleIndexChange","animateToIndex","isDraggingSheet","isDraggingFromScrollable","panStartX","panStartY","panActivated","dragStartTranslateY","isTouchWithinScrollable","Pan","manualActivation","onTouchesDown","event","set","touch","changedTouches","allTouches","undefined","absoluteX","absoluteY","value","layout","withinX","pageX","width","withinY","pageY","height","onTouchesMove","stateManager","deltaX","deltaY","Math","abs","fail","activate","onBegin","NaN","onUpdate","isDraggingDown","translationY","canStartDrag","isScrollableActive","rawTranslate","resolvedDetents","draggable","maxDraggableTranslateY","foundDraggable","i","length","t","nextTranslate","min","max","targetSnapIndex","targetSnapValue","detentValue","maxSnap","onEnd","wasDragging","allPositions","map","snapIndex","index","isDraggable","targetIndex","velocityY","hasIndexChanged","shouldApplyVelocity","Number","isFinite"],"sourceRoot":"../../src","sources":["useBottomSheetPanGesture.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useBottomSheetPanGesture.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetPanGesture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,yBAAyB,CAAC;AAIjC,UAAU,2BAA2B;IACnC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,gBAAgB,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,yBAAyB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChD,kBAAkB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACzC,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAED,eAAO,MAAM,wBAAwB,GAAI,2NActC,2BAA2B,KAAG,UA8KhC,CAAC"}
1
+ {"version":3,"file":"useBottomSheetPanGesture.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetPanGesture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,yBAAyB,CAAC;AAIjC,UAAU,2BAA2B;IACnC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,gBAAgB,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,yBAAyB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChD,kBAAkB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACzC,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAED,eAAO,MAAM,wBAAwB,GAAI,2NActC,2BAA2B,KAAG,UAgMhC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/react-native-bottom-sheet",
3
- "version": "0.5.1",
3
+ "version": "0.5.5",
4
4
  "description": "Provides bottom-sheet components for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -87,7 +87,8 @@ export const useBottomSheetPanGesture = ({
87
87
  if (
88
88
  hasScrollable.value &&
89
89
  scrollOffset.value > 0 &&
90
- isTouchWithinScrollable.value
90
+ isTouchWithinScrollable.value &&
91
+ translateY.value <= 0
91
92
  ) {
92
93
  return;
93
94
  }
@@ -121,6 +122,7 @@ export const useBottomSheetPanGesture = ({
121
122
  const canStartDrag =
122
123
  !hasScrollable.value ||
123
124
  scrollOffset.value <= 0 ||
125
+ translateY.value > 0 ||
124
126
  !isTouchWithinScrollable.value;
125
127
  if (!canStartDrag || (!isDraggingDown && translateY.value <= 0)) {
126
128
  return;
@@ -129,18 +131,36 @@ export const useBottomSheetPanGesture = ({
129
131
  hasScrollable.value && isScrollableGestureActive.value;
130
132
  isDraggingSheet.set(true);
131
133
  isDraggingFromScrollable.set(
132
- isScrollableActive && isTouchWithinScrollable.value
134
+ isScrollableActive &&
135
+ isTouchWithinScrollable.value &&
136
+ scrollOffset.value <= 0
133
137
  );
134
138
  dragStartTranslateY.set(translateY.value - event.translationY);
135
139
  isScrollableLocked.set(hasScrollable.value);
136
- if (isTouchWithinScrollable.value && hasScrollable.value) {
140
+ if (
141
+ isTouchWithinScrollable.value &&
142
+ hasScrollable.value &&
143
+ scrollOffset.value <= 0
144
+ ) {
137
145
  scrollTo(scrollableRef, 0, 0, false);
138
146
  }
139
147
  }
140
148
  const rawTranslate = dragStartTranslateY.value + event.translationY;
149
+ const resolvedDetents = detentsValue.value;
150
+ const draggable = isDraggableValue.value;
151
+ let maxDraggableTranslateY = sheetHeight.value;
152
+ let foundDraggable = false;
153
+ for (let i = 0; i < resolvedDetents.length; i++) {
154
+ if (!(draggable[i] ?? true)) continue;
155
+ const t = sheetHeight.value - (resolvedDetents[i] ?? 0);
156
+ if (!foundDraggable || t > maxDraggableTranslateY) {
157
+ maxDraggableTranslateY = t;
158
+ foundDraggable = true;
159
+ }
160
+ }
141
161
  const nextTranslate = Math.min(
142
162
  Math.max(rawTranslate, 0),
143
- sheetHeight.value
163
+ maxDraggableTranslateY
144
164
  );
145
165
  translateY.set(nextTranslate);
146
166
  if (
@@ -151,12 +171,10 @@ export const useBottomSheetPanGesture = ({
151
171
  ) {
152
172
  isDraggingSheet.set(false);
153
173
  isScrollableLocked.set(false);
154
- const resolvedDetentValues = detentsValue.value;
155
- const draggable = isDraggableValue.value;
156
174
  let targetSnapIndex = -1;
157
175
  let targetSnapValue = -1;
158
- for (let i = resolvedDetentValues.length - 1; i >= 0; i--) {
159
- const detentValue = resolvedDetentValues[i];
176
+ for (let i = resolvedDetents.length - 1; i >= 0; i--) {
177
+ const detentValue = resolvedDetents[i];
160
178
  if (
161
179
  detentValue !== undefined &&
162
180
  (draggable[i] ?? true) &&
@@ -168,8 +186,8 @@ export const useBottomSheetPanGesture = ({
168
186
  }
169
187
  if (targetSnapIndex === -1) {
170
188
  const maxSnap = sheetHeight.value;
171
- for (let i = resolvedDetentValues.length - 1; i >= 0; i--) {
172
- if (resolvedDetentValues[i] === maxSnap) {
189
+ for (let i = resolvedDetents.length - 1; i >= 0; i--) {
190
+ if (resolvedDetents[i] === maxSnap) {
173
191
  targetSnapIndex = i;
174
192
  break;
175
193
  }