@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
|
|
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 =
|
|
109
|
-
const detentValue =
|
|
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 =
|
|
118
|
-
if (
|
|
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","
|
|
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,
|
|
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
|
@@ -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 &&
|
|
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 (
|
|
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
|
-
|
|
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 =
|
|
159
|
-
const detentValue =
|
|
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 =
|
|
172
|
-
if (
|
|
189
|
+
for (let i = resolvedDetents.length - 1; i >= 0; i--) {
|
|
190
|
+
if (resolvedDetents[i] === maxSnap) {
|
|
173
191
|
targetSnapIndex = i;
|
|
174
192
|
break;
|
|
175
193
|
}
|