@swmansion/react-native-bottom-sheet 0.2.0 → 0.3.1

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.
@@ -137,13 +137,15 @@ export const BottomSheetBase = ({
137
137
  isScrollableLocked.set(false);
138
138
  isTouchWithinScrollable.set(false);
139
139
  const touch = event.changedTouches[0] ?? event.allTouches[0];
140
- if (touch) panStartY.set(touch.absoluteY);
141
- if (touch && hasScrollable.value) {
142
- const layout = measure(scrollableRef);
143
- if (layout) {
144
- const withinX = touch.absoluteX >= layout.pageX && touch.absoluteX <= layout.pageX + layout.width;
145
- const withinY = touch.absoluteY >= layout.pageY && touch.absoluteY <= layout.pageY + layout.height;
146
- isTouchWithinScrollable.set(withinX && withinY);
140
+ if (touch !== undefined) {
141
+ panStartY.set(touch.absoluteY);
142
+ if (hasScrollable.value) {
143
+ const layout = measure(scrollableRef);
144
+ if (layout !== null) {
145
+ const withinX = touch.absoluteX >= layout.pageX && touch.absoluteX <= layout.pageX + layout.width;
146
+ const withinY = touch.absoluteY >= layout.pageY && touch.absoluteY <= layout.pageY + layout.height;
147
+ isTouchWithinScrollable.set(withinX && withinY);
148
+ }
147
149
  }
148
150
  }
149
151
  }).onTouchesMove((event, stateManager) => {
@@ -174,30 +176,42 @@ export const BottomSheetBase = ({
174
176
  if (isDraggingFromScrollable.value) {
175
177
  scrollTo(scrollableRef, 0, 0, false);
176
178
  }
177
- const nextTranslate = Math.min(Math.max(dragStartTranslateY.value + event.translationY, 0), sheetHeight.value);
178
- translateY.set(nextTranslate);
179
- return;
180
- }
181
- const isDraggingDown = event.translationY > 0;
182
- const canStartDrag = !hasScrollable.value || scrollOffset.value <= 0 || !isTouchWithinScrollable.value;
183
- if (!canStartDrag || !isDraggingDown && translateY.value <= 0) {
184
- return;
185
- }
186
- const isScrollableActive = hasScrollable.value && isScrollableGestureActive.value;
187
- isDraggingSheet.set(true);
188
- isDraggingFromScrollable.set(isScrollableActive && isTouchWithinScrollable.value);
189
- isScrollableLocked.set(hasScrollable.value);
190
- if (isTouchWithinScrollable.value && hasScrollable.value) {
191
- scrollTo(scrollableRef, 0, 0, false);
179
+ } else {
180
+ const isDraggingDown = event.translationY > 0;
181
+ const canStartDrag = !hasScrollable.value || scrollOffset.value <= 0 || !isTouchWithinScrollable.value;
182
+ if (!canStartDrag || !isDraggingDown && translateY.value <= 0) {
183
+ return;
184
+ }
185
+ const isScrollableActive = hasScrollable.value && isScrollableGestureActive.value;
186
+ isDraggingSheet.set(true);
187
+ isDraggingFromScrollable.set(isScrollableActive && isTouchWithinScrollable.value);
188
+ isScrollableLocked.set(hasScrollable.value);
189
+ if (isTouchWithinScrollable.value && hasScrollable.value) {
190
+ scrollTo(scrollableRef, 0, 0, false);
191
+ }
192
192
  }
193
193
  const nextTranslate = Math.min(Math.max(dragStartTranslateY.value + event.translationY, 0), sheetHeight.value);
194
194
  translateY.set(nextTranslate);
195
+ if (isDraggingSheet.value && nextTranslate <= 0 && isTouchWithinScrollable.value && hasScrollable.value) {
196
+ isDraggingSheet.set(false);
197
+ isScrollableLocked.set(false);
198
+ const resolvedDetents = detentsValue.value;
199
+ const maxSnap = sheetHeight.value;
200
+ for (let i = resolvedDetents.length - 1; i >= 0; i--) {
201
+ if (resolvedDetents[i] === maxSnap) {
202
+ if (i !== currentIndex.value) scheduleOnRN(handleIndexChange, i);
203
+ animateToIndex(i);
204
+ break;
205
+ }
206
+ }
207
+ }
195
208
  }).onEnd(event => {
196
209
  'worklet';
197
210
 
198
211
  const wasDragging = isDraggingSheet.value;
199
212
  isScrollableLocked.set(false);
200
213
  isDraggingSheet.set(false);
214
+ animationTarget.set(NaN);
201
215
  if (!wasDragging) {
202
216
  animateToIndex(currentIndex.value);
203
217
  return;
@@ -220,11 +234,11 @@ export const BottomSheetBase = ({
220
234
  }
221
235
  if (Math.abs(velocityY) > VELOCITY_THRESHOLD) {
222
236
  if (velocityY > 0) {
223
- const lower = allPositions.filter(pos => pos.translateY > currentTranslate + 1).sort((a, b) => a.translateY - b.translateY);
224
- if (lower.length > 0) targetIndex = lower[0].index;
237
+ const lower = allPositions.filter(pos => pos.translateY > currentTranslate + 1).sort((a, b) => a.translateY - b.translateY)[0];
238
+ if (lower !== undefined) targetIndex = lower.index;
225
239
  } else {
226
- const upper = allPositions.filter(pos => pos.translateY < currentTranslate - 1).sort((a, b) => b.translateY - a.translateY);
227
- if (upper.length > 0) targetIndex = upper[0].index;
240
+ const upper = allPositions.filter(pos => pos.translateY < currentTranslate - 1).sort((a, b) => b.translateY - a.translateY)[0];
241
+ if (upper !== undefined) targetIndex = upper.index;
228
242
  }
229
243
  }
230
244
  const hasIndexChanged = targetIndex !== currentIndex.value;
@@ -251,7 +265,7 @@ export const BottomSheetBase = ({
251
265
  const isCollapsed = normalizedDetents[resolvedIndex] === 0;
252
266
  const pointerEvents = modal ? isCollapsed ? 'none' : 'auto' : 'box-none';
253
267
  let scrimElement = null;
254
- if (renderScrim) {
268
+ if (renderScrim !== undefined) {
255
269
  scrimElement = renderScrim(scrimProgress);
256
270
  } else if (modal) {
257
271
  scrimElement = /*#__PURE__*/_jsx(DefaultScrim, {
@@ -297,7 +311,7 @@ export const BottomSheetBase = ({
297
311
  const sheetContainer = /*#__PURE__*/_jsxs(Animated.View, {
298
312
  style: StyleSheet.absoluteFill,
299
313
  pointerEvents: pointerEvents,
300
- children: [modal && scrimElement ? /*#__PURE__*/_jsx(Pressable, {
314
+ children: [modal && scrimElement !== null ? /*#__PURE__*/_jsx(Pressable, {
301
315
  style: StyleSheet.absoluteFill,
302
316
  onPress: handleScrimPress,
303
317
  children: scrimElement
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useState","Pressable","StyleSheet","View","useWindowDimensions","Animated","measure","scrollTo","useAnimatedRef","useAnimatedReaction","useAnimatedStyle","useDerivedValue","useSharedValue","withSpring","scheduleOnRN","scheduleOnUI","Gesture","GestureDetector","useSafeAreaInsets","Portal","BottomSheetContextProvider","jsx","_jsx","jsxs","_jsxs","DEFAULT_OPEN_ANIMATION_CONFIG","dampingRatio","duration","overshootClamping","DEFAULT_CLOSE_ANIMATION_CONFIG","VELOCITY_THRESHOLD","resolveDetent","detent","contentHeight","maxHeight","Math","min","Error","clampIndex","index","detentCount","max","DefaultScrim","progress","style","opacity","value","absoluteFill","flex","backgroundColor","BottomSheetBase","children","detents","onIndexChange","position","externalPosition","openAnimationConfig","closeAnimationConfig","modal","renderScrim","height","screenHeight","insets","top","resolvedIndex","length","setContentHeight","normalizedDetents","map","point","resolved","initialMaxSnap","translateY","animationTarget","NaN","sheetHeight","scrollOffset","hasScrollable","isScrollableGestureActive","isScrollableLocked","scrollableRef","isDraggingSheet","isDraggingFromScrollable","panStartY","panActivated","dragStartTranslateY","isTouchWithinScrollable","detentsValue","firstNonzeroDetent","find","d","currentIndex","internalPosition","undefined","set","scrimProgress","target","handleIndexChange","nextIndex","maxSnap","animateToIndex","targetIndex","velocity","targetTranslate","isOpening","baseConfig","springConfig","panGesture","Pan","manualActivation","onTouchesDown","event","touch","changedTouches","allTouches","absoluteY","layout","withinX","absoluteX","pageX","width","withinY","pageY","onTouchesMove","stateManager","deltaY","activate","onBegin","onUpdate","nextTranslate","translationY","isDraggingDown","canStartDrag","isScrollableActive","onEnd","wasDragging","allPositions","snapIndex","currentTranslate","velocityY","minDistance","Infinity","pos","distance","abs","lower","filter","sort","a","b","upper","hasIndexChanged","shouldApplyVelocity","Number","isFinite","handleSentinelLayout","nativeEvent","y","closedIndex","indexOf","handleScrimPress","wrapperStyle","transform","isCollapsed","pointerEvents","scrimElement","sheetContent","bottom","left","right","gesture","onLayout","sheetContainer","onPress"],"sourceRoot":"../../src","sources":["BottomSheetBase.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useState","Pressable","StyleSheet","View","useWindowDimensions","Animated","measure","scrollTo","useAnimatedRef","useAnimatedReaction","useAnimatedStyle","useDerivedValue","useSharedValue","withSpring","scheduleOnRN","scheduleOnUI","Gesture","GestureDetector","useSafeAreaInsets","Portal","BottomSheetContextProvider","jsx","_jsx","jsxs","_jsxs","DEFAULT_OPEN_ANIMATION_CONFIG","dampingRatio","duration","overshootClamping","DEFAULT_CLOSE_ANIMATION_CONFIG","VELOCITY_THRESHOLD","resolveDetent","detent","contentHeight","maxHeight","Math","min","Error","clampIndex","index","detentCount","max","DefaultScrim","progress","style","opacity","value","absoluteFill","flex","backgroundColor","BottomSheetBase","children","detents","onIndexChange","position","externalPosition","openAnimationConfig","closeAnimationConfig","modal","renderScrim","height","screenHeight","insets","top","resolvedIndex","length","setContentHeight","normalizedDetents","map","point","resolved","initialMaxSnap","translateY","animationTarget","NaN","sheetHeight","scrollOffset","hasScrollable","isScrollableGestureActive","isScrollableLocked","scrollableRef","isDraggingSheet","isDraggingFromScrollable","panStartY","panActivated","dragStartTranslateY","isTouchWithinScrollable","detentsValue","firstNonzeroDetent","find","d","currentIndex","internalPosition","undefined","set","scrimProgress","target","handleIndexChange","nextIndex","maxSnap","animateToIndex","targetIndex","velocity","targetTranslate","isOpening","baseConfig","springConfig","panGesture","Pan","manualActivation","onTouchesDown","event","touch","changedTouches","allTouches","absoluteY","layout","withinX","absoluteX","pageX","width","withinY","pageY","onTouchesMove","stateManager","deltaY","activate","onBegin","onUpdate","isDraggingDown","translationY","canStartDrag","isScrollableActive","nextTranslate","resolvedDetents","i","onEnd","wasDragging","allPositions","snapIndex","currentTranslate","velocityY","minDistance","Infinity","pos","distance","abs","lower","filter","sort","a","b","upper","hasIndexChanged","shouldApplyVelocity","Number","isFinite","handleSentinelLayout","nativeEvent","y","closedIndex","indexOf","handleScrimPress","wrapperStyle","transform","isCollapsed","pointerEvents","scrimElement","sheetContent","bottom","left","right","gesture","onLayout","sheetContainer","onPress"],"sourceRoot":"../../src","sources":["BottomSheetBase.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ import { useImperativeHandle } from 'react';
3
4
  import { GestureDetector } from 'react-native-gesture-handler';
4
- import Animated from 'react-native-reanimated';
5
+ import Animated, { scrollTo } from 'react-native-reanimated';
6
+ import { scheduleOnUI } from 'react-native-worklets';
5
7
  import { useBottomSheetScrollable } from "./useBottomSheetScrollable.js";
6
8
  import { jsx as _jsx } from "react/jsx-runtime";
7
9
  export const BottomSheetFlatList = ({
8
10
  scrollEnabled,
9
11
  onScroll,
12
+ ref,
10
13
  ...rest
11
14
  }) => {
12
15
  const {
@@ -15,6 +18,19 @@ export const BottomSheetFlatList = ({
15
18
  nativeGesture,
16
19
  animatedProps
17
20
  } = useBottomSheetScrollable(scrollEnabled, onScroll);
21
+ useImperativeHandle(ref, () => ({
22
+ scrollToOffset: ({
23
+ offset,
24
+ animated
25
+ }) => {
26
+ const resolvedAnimated = animated ?? true;
27
+ scheduleOnUI((animatedRef, y, shouldAnimate) => {
28
+ 'worklet';
29
+
30
+ scrollTo(animatedRef, 0, y, shouldAnimate);
31
+ }, scrollableRef, offset, resolvedAnimated);
32
+ }
33
+ }), [scrollableRef]);
18
34
  return /*#__PURE__*/_jsx(GestureDetector, {
19
35
  gesture: nativeGesture,
20
36
  children: /*#__PURE__*/_jsx(Animated.FlatList, {
@@ -1 +1 @@
1
- {"version":3,"names":["GestureDetector","Animated","useBottomSheetScrollable","jsx","_jsx","BottomSheetFlatList","scrollEnabled","onScroll","rest","scrollHandler","scrollableRef","nativeGesture","animatedProps","gesture","children","FlatList","ref","scrollEventThrottle"],"sourceRoot":"../../src","sources":["BottomSheetFlatList.tsx"],"mappings":";;AACA,SAASA,eAAe,QAAQ,8BAA8B;AAE9D,OAAOC,QAAQ,MAAM,yBAAyB;AAE9C,SAASC,wBAAwB,QAAQ,+BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOtE,OAAO,MAAMC,mBAAmB,GAAGA,CAAK;EACtCC,aAAa;EACbC,QAAQ;EACR,GAAGC;AACwB,CAAC,KAAK;EACjC,MAAM;IAAEC,aAAa;IAAEC,aAAa;IAAEC,aAAa;IAAEC;EAAc,CAAC,GAClEV,wBAAwB,CAACI,aAAa,EAAEC,QAAQ,CAAC;EACnD,oBACEH,IAAA,CAACJ,eAAe;IAACa,OAAO,EAAEF,aAAc;IAAAG,QAAA,eACtCV,IAAA,CAACH,QAAQ,CAACc,QAAQ;MAAA,GACZP,IAAI;MACRI,aAAa,EAAEA,aAAc;MAC7BI,GAAG,EAAEN,aAAc;MACnBH,QAAQ,EAAEE,aAAc;MACxBQ,mBAAmB,EAAE;IAAG,CACzB;EAAC,CACa,CAAC;AAEtB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useImperativeHandle","GestureDetector","Animated","scrollTo","scheduleOnUI","useBottomSheetScrollable","jsx","_jsx","BottomSheetFlatList","scrollEnabled","onScroll","ref","rest","scrollHandler","scrollableRef","nativeGesture","animatedProps","scrollToOffset","offset","animated","resolvedAnimated","animatedRef","y","shouldAnimate","gesture","children","FlatList","scrollEventThrottle"],"sourceRoot":"../../src","sources":["BottomSheetFlatList.tsx"],"mappings":";;AAAA,SAASA,mBAAmB,QAAkB,OAAO;AAErD,SAASC,eAAe,QAAQ,8BAA8B;AAE9D,OAAOC,QAAQ,IAAIC,QAAQ,QAAQ,yBAAyB;AAC5D,SAASC,YAAY,QAAQ,uBAAuB;AAEpD,SAASC,wBAAwB,QAAQ,+BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQtE,OAAO,MAAMC,mBAAmB,GAAGA,CAAK;EACtCC,aAAa;EACbC,QAAQ;EACRC,GAAG;EACH,GAAGC;AACwB,CAAC,KAAK;EACjC,MAAM;IAAEC,aAAa;IAAEC,aAAa;IAAEC,aAAa;IAAEC;EAAc,CAAC,GAClEX,wBAAwB,CAACI,aAAa,EAAEC,QAAQ,CAAC;EAEnDV,mBAAmB,CACjBW,GAAG,EACH,OAAO;IACLM,cAAc,EAAEA,CAAC;MAAEC,MAAM;MAAEC;IAAS,CAAC,KAAK;MACxC,MAAMC,gBAAgB,GAAGD,QAAQ,IAAI,IAAI;MACzCf,YAAY,CACV,CACEiB,WAA2C,EAC3CC,CAAS,EACTC,aAAsB,KACnB;QACH,SAAS;;QACTpB,QAAQ,CAACkB,WAAW,EAAE,CAAC,EAAEC,CAAC,EAAEC,aAAa,CAAC;MAC5C,CAAC,EACDT,aAAa,EACbI,MAAM,EACNE,gBACF,CAAC;IACH;EACF,CAAC,CAAC,EACF,CAACN,aAAa,CAChB,CAAC;EAED,oBACEP,IAAA,CAACN,eAAe;IAACuB,OAAO,EAAET,aAAc;IAAAU,QAAA,eACtClB,IAAA,CAACL,QAAQ,CAACwB,QAAQ;MAAA,GACZd,IAAI;MACRI,aAAa,EAAEA,aAAc;MAC7BL,GAAG,EAAEG,aAAc;MACnBJ,QAAQ,EAAEG,aAAc;MACxBc,mBAAmB,EAAE;IAAG,CACzB;EAAC,CACa,CAAC;AAEtB,CAAC","ignoreList":[]}
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ import { useImperativeHandle } from 'react';
3
4
  import { GestureDetector } from 'react-native-gesture-handler';
4
- import Animated from 'react-native-reanimated';
5
+ import Animated, { scrollTo } from 'react-native-reanimated';
6
+ import { scheduleOnUI } from 'react-native-worklets';
5
7
  import { useBottomSheetScrollable } from "./useBottomSheetScrollable.js";
6
8
  import { jsx as _jsx } from "react/jsx-runtime";
7
9
  export const BottomSheetScrollView = ({
8
10
  scrollEnabled,
9
11
  onScroll,
12
+ ref,
10
13
  ...rest
11
14
  }) => {
12
15
  const {
@@ -15,6 +18,20 @@ export const BottomSheetScrollView = ({
15
18
  nativeGesture,
16
19
  animatedProps
17
20
  } = useBottomSheetScrollable(scrollEnabled, onScroll);
21
+ useImperativeHandle(ref, () => ({
22
+ scrollTo: ({
23
+ x = 0,
24
+ y = 0,
25
+ animated
26
+ }) => {
27
+ const resolvedAnimated = animated ?? true;
28
+ scheduleOnUI((animatedRef, xValue, yValue, shouldAnimate) => {
29
+ 'worklet';
30
+
31
+ scrollTo(animatedRef, xValue, yValue, shouldAnimate);
32
+ }, scrollableRef, x, y, resolvedAnimated);
33
+ }
34
+ }), [scrollableRef]);
18
35
  return /*#__PURE__*/_jsx(GestureDetector, {
19
36
  gesture: nativeGesture,
20
37
  children: /*#__PURE__*/_jsx(Animated.ScrollView, {
@@ -1 +1 @@
1
- {"version":3,"names":["GestureDetector","Animated","useBottomSheetScrollable","jsx","_jsx","BottomSheetScrollView","scrollEnabled","onScroll","rest","scrollHandler","scrollableRef","nativeGesture","animatedProps","gesture","children","ScrollView","ref","scrollEventThrottle"],"sourceRoot":"../../src","sources":["BottomSheetScrollView.tsx"],"mappings":";;AACA,SAASA,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,QAAQ,MAAM,yBAAyB;AAE9C,SAASC,wBAAwB,QAAQ,+BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOtE,OAAO,MAAMC,qBAAqB,GAAGA,CAAC;EACpCC,aAAa;EACbC,QAAQ;EACR,GAAGC;AACuB,CAAC,KAAK;EAChC,MAAM;IAAEC,aAAa;IAAEC,aAAa;IAAEC,aAAa;IAAEC;EAAc,CAAC,GAClEV,wBAAwB,CAACI,aAAa,EAAEC,QAAQ,CAAC;EACnD,oBACEH,IAAA,CAACJ,eAAe;IAACa,OAAO,EAAEF,aAAc;IAAAG,QAAA,eACtCV,IAAA,CAACH,QAAQ,CAACc,UAAU;MAAA,GACdP,IAAI;MACRI,aAAa,EAAEA,aAAc;MAC7BI,GAAG,EAAEN,aAAc;MACnBH,QAAQ,EAAEE,aAAc;MACxBQ,mBAAmB,EAAE;IAAG,CACzB;EAAC,CACa,CAAC;AAEtB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useImperativeHandle","GestureDetector","Animated","scrollTo","scheduleOnUI","useBottomSheetScrollable","jsx","_jsx","BottomSheetScrollView","scrollEnabled","onScroll","ref","rest","scrollHandler","scrollableRef","nativeGesture","animatedProps","x","y","animated","resolvedAnimated","animatedRef","xValue","yValue","shouldAnimate","gesture","children","ScrollView","scrollEventThrottle"],"sourceRoot":"../../src","sources":["BottomSheetScrollView.tsx"],"mappings":";;AAAA,SAASA,mBAAmB,QAAkB,OAAO;AAErD,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,QAAQ,IAAIC,QAAQ,QAAQ,yBAAyB;AAC5D,SAASC,YAAY,QAAQ,uBAAuB;AAEpD,SAASC,wBAAwB,QAAQ,+BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUtE,OAAO,MAAMC,qBAAqB,GAAGA,CAAC;EACpCC,aAAa;EACbC,QAAQ;EACRC,GAAG;EACH,GAAGC;AACuB,CAAC,KAAK;EAChC,MAAM;IAAEC,aAAa;IAAEC,aAAa;IAAEC,aAAa;IAAEC;EAAc,CAAC,GAClEX,wBAAwB,CAACI,aAAa,EAAEC,QAAQ,CAAC;EAEnDV,mBAAmB,CACjBW,GAAG,EACH,OAAO;IACLR,QAAQ,EAAEA,CAAC;MAAEc,CAAC,GAAG,CAAC;MAAEC,CAAC,GAAG,CAAC;MAAEC;IAAS,CAAC,KAAK;MACxC,MAAMC,gBAAgB,GAAGD,QAAQ,IAAI,IAAI;MACzCf,YAAY,CACV,CACEiB,WAA2C,EAC3CC,MAAc,EACdC,MAAc,EACdC,aAAsB,KACnB;QACH,SAAS;;QACTrB,QAAQ,CAACkB,WAAW,EAAEC,MAAM,EAAEC,MAAM,EAAEC,aAAa,CAAC;MACtD,CAAC,EACDV,aAAa,EACbG,CAAC,EACDC,CAAC,EACDE,gBACF,CAAC;IACH;EACF,CAAC,CAAC,EACF,CAACN,aAAa,CAChB,CAAC;EAED,oBACEP,IAAA,CAACN,eAAe;IAACwB,OAAO,EAAEV,aAAc;IAAAW,QAAA,eACtCnB,IAAA,CAACL,QAAQ,CAACyB,UAAU;MAAA,GACdf,IAAI;MACRI,aAAa,EAAEA,aAAc;MAC7BL,GAAG,EAAEG,aAAc;MACnBJ,QAAQ,EAAEG,aAAc;MACxBe,mBAAmB,EAAE;IAAG,CACzB;EAAC,CACa,CAAC;AAEtB,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["BottomSheet","ModalBottomSheet","BottomSheetProvider","BottomSheetFlatList","BottomSheetScrollView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,kBAAe;AAE3C,SAASC,gBAAgB,QAAQ,uBAAoB;AAErD,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,mBAAmB,QAAQ,0BAAuB;AAE3D,SAASC,qBAAqB,QAAQ,4BAAyB","ignoreList":[]}
1
+ {"version":3,"names":["BottomSheet","ModalBottomSheet","BottomSheetProvider","BottomSheetFlatList","BottomSheetScrollView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,kBAAe;AAE3C,SAASC,gBAAgB,QAAQ,uBAAoB;AAErD,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,mBAAmB,QAAQ,0BAAuB;AAK3D,SAASC,qBAAqB,QAAQ,4BAAyB","ignoreList":[]}
@@ -38,7 +38,7 @@ export const useBottomSheetScrollable = (baseScrollEnabled = true, onScroll) =>
38
38
  isScrollableGestureActive.set(false);
39
39
  });
40
40
  const animatedProps = useAnimatedProps(() => {
41
- const resolvedScrollEnabled = typeof baseScrollEnabled === 'object' && baseScrollEnabled !== null ? baseScrollEnabled.value ?? true : baseScrollEnabled ?? true;
41
+ const resolvedScrollEnabled = (typeof baseScrollEnabled === 'object' && baseScrollEnabled !== null ? baseScrollEnabled.value : baseScrollEnabled) ?? true;
42
42
  return {
43
43
  scrollEnabled: resolvedScrollEnabled && !isScrollableLocked.value
44
44
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","Gesture","isWorkletFunction","scheduleOnRN","useAnimatedProps","useAnimatedScrollHandler","useBottomSheetContext","useBottomSheetScrollable","baseScrollEnabled","onScroll","scrollOffset","scrollableRef","hasScrollable","isScrollableGestureActive","isScrollableLocked","panGesture","isWorkletScrollHandler","undefined","scrollHandler","event","set","Math","max","contentOffset","y","nativeGesture","Native","simultaneousWithExternalGesture","onStart","onFinalize","animatedProps","resolvedScrollEnabled","value","scrollEnabled","__DEV__","console","warn"],"sourceRoot":"../../src","sources":["useBottomSheetScrollable.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,OAAO,QAAQ,8BAA8B;AAEtD,SAASC,iBAAiB,EAAEC,YAAY,QAAQ,uBAAuB;AACvE,SAEEC,gBAAgB,EAChBC,wBAAwB,QACnB,yBAAyB;AAEhC,SAASC,qBAAqB,QAAQ,yBAAsB;AAI5D,OAAO,MAAMC,wBAAwB,GAAGA,CACtCC,iBAA6D,GAAG,IAAI,EACpEC,QAAwB,KACrB;EACH,MAAM;IACJC,YAAY;IACZC,aAAa;IACbC,aAAa;IACbC,yBAAyB;IACzBC,kBAAkB;IAClBC;EACF,CAAC,GAAGT,qBAAqB,CAAC,CAAC;EAC3B,MAAMU,sBAAsB,GAC1BP,QAAQ,KAAKQ,SAAS,GAAGf,iBAAiB,CAACO,QAAQ,CAAC,GAAG,KAAK;EAC9D,MAAMS,aAAa,GAAGb,wBAAwB,CAAC;IAC7CI,QAAQ,EAAGU,KAAK,IAAK;MACnB,SAAS;;MACTT,YAAY,CAACU,GAAG,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,KAAK,CAACI,aAAa,CAACC,CAAC,CAAC,CAAC;MACpD,IAAIf,QAAQ,KAAKQ,SAAS,EAAE;MAC5B,IAAID,sBAAsB,EAAE;QAC1BP,QAAQ,CAACU,KAAK,CAAC;QACf;MACF;MACAhB,YAAY,CAACM,QAAQ,EAAEU,KAAK,CAAC;IAC/B;EACF,CAAC,CAAC;EACF,MAAMM,aAAa,GAAGxB,OAAO,CAACyB,MAAM,CAAC,CAAC,CACnCC,+BAA+B,CAACZ,UAAU,CAAC,CAC3Ca,OAAO,CAAC,MAAM;IACb,SAAS;;IACTf,yBAAyB,CAACO,GAAG,CAAC,IAAI,CAAC;EACrC,CAAC,CAAC,CACDS,UAAU,CAAC,MAAM;IAChB,SAAS;;IACThB,yBAAyB,CAACO,GAAG,CAAC,KAAK,CAAC;EACtC,CAAC,CAAC;EACJ,MAAMU,aAAa,GAAG1B,gBAAgB,CAAC,MAAM;IAC3C,MAAM2B,qBAAqB,GACzB,OAAOvB,iBAAiB,KAAK,QAAQ,IAAIA,iBAAiB,KAAK,IAAI,GAC/DA,iBAAiB,CAACwB,KAAK,IAAI,IAAI,GAC/BxB,iBAAiB,IAAI,IAAI;IAC/B,OAAO;MACLyB,aAAa,EAAEF,qBAAqB,IAAI,CAACjB,kBAAkB,CAACkB;IAC9D,CAAC;EACH,CAAC,CAAC;EACFhC,SAAS,CAAC,MAAM;IACd,IAAIkC,OAAO,IAAItB,aAAa,CAACoB,KAAK,EAAE;MAClCG,OAAO,CAACC,IAAI,CACV,sFAAsF,GACpF,yDACJ,CAAC;IACH;IACAxB,aAAa,CAACQ,GAAG,CAAC,IAAI,CAAC;IACvB,OAAO,MAAM;MACXR,aAAa,CAACQ,GAAG,CAAC,KAAK,CAAC;MACxBP,yBAAyB,CAACO,GAAG,CAAC,KAAK,CAAC;MACpCN,kBAAkB,CAACM,GAAG,CAAC,KAAK,CAAC;IAC/B,CAAC;EACH,CAAC,EAAE,CAACR,aAAa,EAAEC,yBAAyB,EAAEC,kBAAkB,CAAC,CAAC;EAClE,OAAO;IAAEI,aAAa;IAAEP,aAAa;IAAEc,aAAa;IAAEK;EAAc,CAAC;AACvE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","Gesture","isWorkletFunction","scheduleOnRN","useAnimatedProps","useAnimatedScrollHandler","useBottomSheetContext","useBottomSheetScrollable","baseScrollEnabled","onScroll","scrollOffset","scrollableRef","hasScrollable","isScrollableGestureActive","isScrollableLocked","panGesture","isWorkletScrollHandler","undefined","scrollHandler","event","set","Math","max","contentOffset","y","nativeGesture","Native","simultaneousWithExternalGesture","onStart","onFinalize","animatedProps","resolvedScrollEnabled","value","scrollEnabled","__DEV__","console","warn"],"sourceRoot":"../../src","sources":["useBottomSheetScrollable.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,OAAO,QAAQ,8BAA8B;AAEtD,SAASC,iBAAiB,EAAEC,YAAY,QAAQ,uBAAuB;AACvE,SAEEC,gBAAgB,EAChBC,wBAAwB,QACnB,yBAAyB;AAEhC,SAASC,qBAAqB,QAAQ,yBAAsB;AAI5D,OAAO,MAAMC,wBAAwB,GAAGA,CACtCC,iBAA6D,GAAG,IAAI,EACpEC,QAAwB,KACrB;EACH,MAAM;IACJC,YAAY;IACZC,aAAa;IACbC,aAAa;IACbC,yBAAyB;IACzBC,kBAAkB;IAClBC;EACF,CAAC,GAAGT,qBAAqB,CAAC,CAAC;EAC3B,MAAMU,sBAAsB,GAC1BP,QAAQ,KAAKQ,SAAS,GAAGf,iBAAiB,CAACO,QAAQ,CAAC,GAAG,KAAK;EAC9D,MAAMS,aAAa,GAAGb,wBAAwB,CAAC;IAC7CI,QAAQ,EAAGU,KAAK,IAAK;MACnB,SAAS;;MACTT,YAAY,CAACU,GAAG,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,KAAK,CAACI,aAAa,CAACC,CAAC,CAAC,CAAC;MACpD,IAAIf,QAAQ,KAAKQ,SAAS,EAAE;MAC5B,IAAID,sBAAsB,EAAE;QAC1BP,QAAQ,CAACU,KAAK,CAAC;QACf;MACF;MACAhB,YAAY,CAACM,QAAQ,EAAEU,KAAK,CAAC;IAC/B;EACF,CAAC,CAAC;EACF,MAAMM,aAAa,GAAGxB,OAAO,CAACyB,MAAM,CAAC,CAAC,CACnCC,+BAA+B,CAACZ,UAAU,CAAC,CAC3Ca,OAAO,CAAC,MAAM;IACb,SAAS;;IACTf,yBAAyB,CAACO,GAAG,CAAC,IAAI,CAAC;EACrC,CAAC,CAAC,CACDS,UAAU,CAAC,MAAM;IAChB,SAAS;;IACThB,yBAAyB,CAACO,GAAG,CAAC,KAAK,CAAC;EACtC,CAAC,CAAC;EACJ,MAAMU,aAAa,GAAG1B,gBAAgB,CAAC,MAAM;IAC3C,MAAM2B,qBAAqB,GACzB,CAAC,OAAOvB,iBAAiB,KAAK,QAAQ,IAAIA,iBAAiB,KAAK,IAAI,GAChEA,iBAAiB,CAACwB,KAAK,GACvBxB,iBAAiB,KAAK,IAAI;IAChC,OAAO;MACLyB,aAAa,EAAEF,qBAAqB,IAAI,CAACjB,kBAAkB,CAACkB;IAC9D,CAAC;EACH,CAAC,CAAC;EACFhC,SAAS,CAAC,MAAM;IACd,IAAIkC,OAAO,IAAItB,aAAa,CAACoB,KAAK,EAAE;MAClCG,OAAO,CAACC,IAAI,CACV,sFAAsF,GACpF,yDACJ,CAAC;IACH;IACAxB,aAAa,CAACQ,GAAG,CAAC,IAAI,CAAC;IACvB,OAAO,MAAM;MACXR,aAAa,CAACQ,GAAG,CAAC,KAAK,CAAC;MACxBP,yBAAyB,CAACO,GAAG,CAAC,KAAK,CAAC;MACpCN,kBAAkB,CAACM,GAAG,CAAC,KAAK,CAAC;IAC/B,CAAC;EACH,CAAC,EAAE,CAACR,aAAa,EAAEC,yBAAyB,EAAEC,kBAAkB,CAAC,CAAC;EAClE,OAAO;IAAEI,aAAa;IAAEP,aAAa;IAAEc,aAAa;IAAEK;EAAc,CAAC;AACvE,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetBase.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetBase.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAiB7E,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEpC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;IACvC,oBAAoB,CAAC,EAAE,gBAAgB,CAAC;CACzC;AAED,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;CAC5D;AA8CD,eAAO,MAAM,eAAe,GAAI,yIAU7B,oBAAoB,4CAiStB,CAAC"}
1
+ {"version":3,"file":"BottomSheetBase.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetBase.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAiB7E,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEpC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;IACvC,oBAAoB,CAAC,EAAE,gBAAgB,CAAC;CACzC;AAED,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;CAC5D;AA8CD,eAAO,MAAM,eAAe,GAAI,yIAU7B,oBAAoB,4CAiTtB,CAAC"}
@@ -1,7 +1,15 @@
1
+ import { type Ref } from 'react';
1
2
  import type { NativeScrollEvent } from 'react-native';
2
3
  import type { FlatListPropsWithLayout } from 'react-native-reanimated';
3
- export interface BottomSheetFlatListProps<T> extends Omit<FlatListPropsWithLayout<T>, 'onScroll'> {
4
+ export interface BottomSheetFlatListProps<T> extends Omit<FlatListPropsWithLayout<T>, 'onScroll' | 'ref'> {
4
5
  onScroll?: (event: NativeScrollEvent) => void;
6
+ ref?: Ref<BottomSheetFlatListMethods>;
5
7
  }
6
- export declare const BottomSheetFlatList: <T>({ scrollEnabled, onScroll, ...rest }: BottomSheetFlatListProps<T>) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const BottomSheetFlatList: <T>({ scrollEnabled, onScroll, ref, ...rest }: BottomSheetFlatListProps<T>) => import("react/jsx-runtime").JSX.Element;
9
+ export type BottomSheetFlatListMethods = {
10
+ scrollToOffset: (params: {
11
+ offset: number;
12
+ animated?: boolean;
13
+ }) => void;
14
+ };
7
15
  //# sourceMappingURL=BottomSheetFlatList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetFlatList.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetFlatList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAKvE,MAAM,WAAW,wBAAwB,CAAC,CAAC,CACzC,SAAQ,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;IACpD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C;AAED,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAG,sCAIrC,wBAAwB,CAAC,CAAC,CAAC,4CAc7B,CAAC"}
1
+ {"version":3,"file":"BottomSheetFlatList.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetFlatList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMvE,MAAM,WAAW,wBAAwB,CAAC,CAAC,CACzC,SAAQ,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,0BAA0B,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAG,2CAKrC,wBAAwB,CAAC,CAAC,CAAC,4CAsC7B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,cAAc,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC1E,CAAC"}
@@ -1,6 +1,17 @@
1
+ import { type Ref } from 'react';
1
2
  import type { NativeScrollEvent, ScrollViewProps } from 'react-native';
2
- export interface BottomSheetScrollViewProps extends Omit<ScrollViewProps, 'onScroll'> {
3
+ type ScrollToOptions = {
4
+ x?: number;
5
+ y?: number;
6
+ animated?: boolean;
7
+ };
8
+ export interface BottomSheetScrollViewProps extends Omit<ScrollViewProps, 'onScroll' | 'ref'> {
3
9
  onScroll?: (event: NativeScrollEvent) => void;
10
+ ref?: Ref<BottomSheetScrollViewMethods>;
4
11
  }
5
- export declare const BottomSheetScrollView: ({ scrollEnabled, onScroll, ...rest }: BottomSheetScrollViewProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const BottomSheetScrollView: ({ scrollEnabled, onScroll, ref, ...rest }: BottomSheetScrollViewProps) => import("react/jsx-runtime").JSX.Element;
13
+ export type BottomSheetScrollViewMethods = {
14
+ scrollTo: (options: ScrollToOptions) => void;
15
+ };
16
+ export {};
6
17
  //# sourceMappingURL=BottomSheetScrollView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetScrollView.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAMvE,MAAM,WAAW,0BACf,SAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C;AAED,eAAO,MAAM,qBAAqB,GAAI,sCAInC,0BAA0B,4CAc5B,CAAC"}
1
+ {"version":3,"file":"BottomSheetScrollView.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOvE,KAAK,eAAe,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtE,MAAM,WAAW,0BACf,SAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,KAAK,CAAC;IACjD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,4BAA4B,CAAC,CAAC;CACzC;AAED,eAAO,MAAM,qBAAqB,GAAI,2CAKnC,0BAA0B,4CAwC5B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CAC9C,CAAC"}
@@ -4,8 +4,8 @@ export { ModalBottomSheet } from './ModalBottomSheet';
4
4
  export type { ModalBottomSheetProps } from './ModalBottomSheet';
5
5
  export { BottomSheetProvider } from './BottomSheetProvider';
6
6
  export { BottomSheetFlatList } from './BottomSheetFlatList';
7
- export type { BottomSheetFlatListProps } from './BottomSheetFlatList';
7
+ export type { BottomSheetFlatListMethods, BottomSheetFlatListProps, } from './BottomSheetFlatList';
8
8
  export { BottomSheetScrollView } from './BottomSheetScrollView';
9
- export type { BottomSheetScrollViewProps } from './BottomSheetScrollView';
9
+ export type { BottomSheetScrollViewMethods, BottomSheetScrollViewProps, } from './BottomSheetScrollView';
10
10
  export type { Detent } from './BottomSheetBase';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EACV,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/react-native-bottom-sheet",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
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",
@@ -187,17 +187,19 @@ export const BottomSheetBase = ({
187
187
  isScrollableLocked.set(false);
188
188
  isTouchWithinScrollable.set(false);
189
189
  const touch = event.changedTouches[0] ?? event.allTouches[0];
190
- if (touch) panStartY.set(touch.absoluteY);
191
- if (touch && hasScrollable.value) {
192
- const layout = measure(scrollableRef);
193
- if (layout) {
194
- const withinX =
195
- touch.absoluteX >= layout.pageX &&
196
- touch.absoluteX <= layout.pageX + layout.width;
197
- const withinY =
198
- touch.absoluteY >= layout.pageY &&
199
- touch.absoluteY <= layout.pageY + layout.height;
200
- isTouchWithinScrollable.set(withinX && withinY);
190
+ if (touch !== undefined) {
191
+ panStartY.set(touch.absoluteY);
192
+ if (hasScrollable.value) {
193
+ const layout = measure(scrollableRef);
194
+ if (layout !== null) {
195
+ const withinX =
196
+ touch.absoluteX >= layout.pageX &&
197
+ touch.absoluteX <= layout.pageX + layout.width;
198
+ const withinY =
199
+ touch.absoluteY >= layout.pageY &&
200
+ touch.absoluteY <= layout.pageY + layout.height;
201
+ isTouchWithinScrollable.set(withinX && withinY);
202
+ }
201
203
  }
202
204
  }
203
205
  })
@@ -232,42 +234,56 @@ export const BottomSheetBase = ({
232
234
  if (isDraggingFromScrollable.value) {
233
235
  scrollTo(scrollableRef, 0, 0, false);
234
236
  }
235
- const nextTranslate = Math.min(
236
- Math.max(dragStartTranslateY.value + event.translationY, 0),
237
- sheetHeight.value
237
+ } else {
238
+ const isDraggingDown = event.translationY > 0;
239
+ const canStartDrag =
240
+ !hasScrollable.value ||
241
+ scrollOffset.value <= 0 ||
242
+ !isTouchWithinScrollable.value;
243
+ if (!canStartDrag || (!isDraggingDown && translateY.value <= 0)) {
244
+ return;
245
+ }
246
+ const isScrollableActive =
247
+ hasScrollable.value && isScrollableGestureActive.value;
248
+ isDraggingSheet.set(true);
249
+ isDraggingFromScrollable.set(
250
+ isScrollableActive && isTouchWithinScrollable.value
238
251
  );
239
- translateY.set(nextTranslate);
240
- return;
241
- }
242
- const isDraggingDown = event.translationY > 0;
243
- const canStartDrag =
244
- !hasScrollable.value ||
245
- scrollOffset.value <= 0 ||
246
- !isTouchWithinScrollable.value;
247
- if (!canStartDrag || (!isDraggingDown && translateY.value <= 0)) {
248
- return;
249
- }
250
- const isScrollableActive =
251
- hasScrollable.value && isScrollableGestureActive.value;
252
- isDraggingSheet.set(true);
253
- isDraggingFromScrollable.set(
254
- isScrollableActive && isTouchWithinScrollable.value
255
- );
256
- isScrollableLocked.set(hasScrollable.value);
257
- if (isTouchWithinScrollable.value && hasScrollable.value) {
258
- scrollTo(scrollableRef, 0, 0, false);
252
+ isScrollableLocked.set(hasScrollable.value);
253
+ if (isTouchWithinScrollable.value && hasScrollable.value) {
254
+ scrollTo(scrollableRef, 0, 0, false);
255
+ }
259
256
  }
260
257
  const nextTranslate = Math.min(
261
258
  Math.max(dragStartTranslateY.value + event.translationY, 0),
262
259
  sheetHeight.value
263
260
  );
264
261
  translateY.set(nextTranslate);
262
+ if (
263
+ isDraggingSheet.value &&
264
+ nextTranslate <= 0 &&
265
+ isTouchWithinScrollable.value &&
266
+ hasScrollable.value
267
+ ) {
268
+ isDraggingSheet.set(false);
269
+ isScrollableLocked.set(false);
270
+ const resolvedDetents = detentsValue.value;
271
+ const maxSnap = sheetHeight.value;
272
+ for (let i = resolvedDetents.length - 1; i >= 0; i--) {
273
+ if (resolvedDetents[i] === maxSnap) {
274
+ if (i !== currentIndex.value) scheduleOnRN(handleIndexChange, i);
275
+ animateToIndex(i);
276
+ break;
277
+ }
278
+ }
279
+ }
265
280
  })
266
281
  .onEnd((event) => {
267
282
  'worklet';
268
283
  const wasDragging = isDraggingSheet.value;
269
284
  isScrollableLocked.set(false);
270
285
  isDraggingSheet.set(false);
286
+ animationTarget.set(NaN);
271
287
  if (!wasDragging) {
272
288
  animateToIndex(currentIndex.value);
273
289
  return;
@@ -292,13 +308,13 @@ export const BottomSheetBase = ({
292
308
  if (velocityY > 0) {
293
309
  const lower = allPositions
294
310
  .filter((pos) => pos.translateY > currentTranslate + 1)
295
- .sort((a, b) => a.translateY - b.translateY);
296
- if (lower.length > 0) targetIndex = lower[0]!.index;
311
+ .sort((a, b) => a.translateY - b.translateY)[0];
312
+ if (lower !== undefined) targetIndex = lower.index;
297
313
  } else {
298
314
  const upper = allPositions
299
315
  .filter((pos) => pos.translateY < currentTranslate - 1)
300
- .sort((a, b) => b.translateY - a.translateY);
301
- if (upper.length > 0) targetIndex = upper[0]!.index;
316
+ .sort((a, b) => b.translateY - a.translateY)[0];
317
+ if (upper !== undefined) targetIndex = upper.index;
302
318
  }
303
319
  }
304
320
  const hasIndexChanged = targetIndex !== currentIndex.value;
@@ -323,7 +339,7 @@ export const BottomSheetBase = ({
323
339
  const isCollapsed = normalizedDetents[resolvedIndex] === 0;
324
340
  const pointerEvents = modal ? (isCollapsed ? 'none' : 'auto') : 'box-none';
325
341
  let scrimElement: ReactNode | null = null;
326
- if (renderScrim) {
342
+ if (renderScrim !== undefined) {
327
343
  scrimElement = renderScrim(scrimProgress);
328
344
  } else if (modal) {
329
345
  scrimElement = <DefaultScrim progress={scrimProgress} />;
@@ -369,7 +385,7 @@ export const BottomSheetBase = ({
369
385
  style={StyleSheet.absoluteFill}
370
386
  pointerEvents={pointerEvents}
371
387
  >
372
- {modal && scrimElement ? (
388
+ {modal && scrimElement !== null ? (
373
389
  <Pressable style={StyleSheet.absoluteFill} onPress={handleScrimPress}>
374
390
  {scrimElement}
375
391
  </Pressable>
@@ -1,22 +1,50 @@
1
+ import { useImperativeHandle, type Ref } from 'react';
1
2
  import type { NativeScrollEvent } from 'react-native';
2
3
  import { GestureDetector } from 'react-native-gesture-handler';
3
4
  import type { FlatListPropsWithLayout } from 'react-native-reanimated';
4
- import Animated from 'react-native-reanimated';
5
+ import Animated, { scrollTo } from 'react-native-reanimated';
6
+ import { scheduleOnUI } from 'react-native-worklets';
5
7
 
6
8
  import { useBottomSheetScrollable } from './useBottomSheetScrollable';
7
9
 
8
10
  export interface BottomSheetFlatListProps<T>
9
- extends Omit<FlatListPropsWithLayout<T>, 'onScroll'> {
11
+ extends Omit<FlatListPropsWithLayout<T>, 'onScroll' | 'ref'> {
10
12
  onScroll?: (event: NativeScrollEvent) => void;
13
+ ref?: Ref<BottomSheetFlatListMethods>;
11
14
  }
12
15
 
13
16
  export const BottomSheetFlatList = <T,>({
14
17
  scrollEnabled,
15
18
  onScroll,
19
+ ref,
16
20
  ...rest
17
21
  }: BottomSheetFlatListProps<T>) => {
18
22
  const { scrollHandler, scrollableRef, nativeGesture, animatedProps } =
19
23
  useBottomSheetScrollable(scrollEnabled, onScroll);
24
+
25
+ useImperativeHandle(
26
+ ref,
27
+ () => ({
28
+ scrollToOffset: ({ offset, animated }) => {
29
+ const resolvedAnimated = animated ?? true;
30
+ scheduleOnUI(
31
+ (
32
+ animatedRef: Parameters<typeof scrollTo>[0],
33
+ y: number,
34
+ shouldAnimate: boolean
35
+ ) => {
36
+ 'worklet';
37
+ scrollTo(animatedRef, 0, y, shouldAnimate);
38
+ },
39
+ scrollableRef,
40
+ offset,
41
+ resolvedAnimated
42
+ );
43
+ },
44
+ }),
45
+ [scrollableRef]
46
+ );
47
+
20
48
  return (
21
49
  <GestureDetector gesture={nativeGesture}>
22
50
  <Animated.FlatList
@@ -29,3 +57,7 @@ export const BottomSheetFlatList = <T,>({
29
57
  </GestureDetector>
30
58
  );
31
59
  };
60
+
61
+ export type BottomSheetFlatListMethods = {
62
+ scrollToOffset: (params: { offset: number; animated?: boolean }) => void;
63
+ };
@@ -1,21 +1,53 @@
1
+ import { useImperativeHandle, type Ref } from 'react';
1
2
  import type { NativeScrollEvent, ScrollViewProps } from 'react-native';
2
3
  import { GestureDetector } from 'react-native-gesture-handler';
3
- import Animated from 'react-native-reanimated';
4
+ import Animated, { scrollTo } from 'react-native-reanimated';
5
+ import { scheduleOnUI } from 'react-native-worklets';
4
6
 
5
7
  import { useBottomSheetScrollable } from './useBottomSheetScrollable';
6
8
 
9
+ type ScrollToOptions = { x?: number; y?: number; animated?: boolean };
10
+
7
11
  export interface BottomSheetScrollViewProps
8
- extends Omit<ScrollViewProps, 'onScroll'> {
12
+ extends Omit<ScrollViewProps, 'onScroll' | 'ref'> {
9
13
  onScroll?: (event: NativeScrollEvent) => void;
14
+ ref?: Ref<BottomSheetScrollViewMethods>;
10
15
  }
11
16
 
12
17
  export const BottomSheetScrollView = ({
13
18
  scrollEnabled,
14
19
  onScroll,
20
+ ref,
15
21
  ...rest
16
22
  }: BottomSheetScrollViewProps) => {
17
23
  const { scrollHandler, scrollableRef, nativeGesture, animatedProps } =
18
24
  useBottomSheetScrollable(scrollEnabled, onScroll);
25
+
26
+ useImperativeHandle(
27
+ ref,
28
+ () => ({
29
+ scrollTo: ({ x = 0, y = 0, animated }) => {
30
+ const resolvedAnimated = animated ?? true;
31
+ scheduleOnUI(
32
+ (
33
+ animatedRef: Parameters<typeof scrollTo>[0],
34
+ xValue: number,
35
+ yValue: number,
36
+ shouldAnimate: boolean
37
+ ) => {
38
+ 'worklet';
39
+ scrollTo(animatedRef, xValue, yValue, shouldAnimate);
40
+ },
41
+ scrollableRef,
42
+ x,
43
+ y,
44
+ resolvedAnimated
45
+ );
46
+ },
47
+ }),
48
+ [scrollableRef]
49
+ );
50
+
19
51
  return (
20
52
  <GestureDetector gesture={nativeGesture}>
21
53
  <Animated.ScrollView
@@ -28,3 +60,7 @@ export const BottomSheetScrollView = ({
28
60
  </GestureDetector>
29
61
  );
30
62
  };
63
+
64
+ export type BottomSheetScrollViewMethods = {
65
+ scrollTo: (options: ScrollToOptions) => void;
66
+ };
package/src/index.tsx CHANGED
@@ -4,7 +4,13 @@ export { ModalBottomSheet } from './ModalBottomSheet';
4
4
  export type { ModalBottomSheetProps } from './ModalBottomSheet';
5
5
  export { BottomSheetProvider } from './BottomSheetProvider';
6
6
  export { BottomSheetFlatList } from './BottomSheetFlatList';
7
- export type { BottomSheetFlatListProps } from './BottomSheetFlatList';
7
+ export type {
8
+ BottomSheetFlatListMethods,
9
+ BottomSheetFlatListProps,
10
+ } from './BottomSheetFlatList';
8
11
  export { BottomSheetScrollView } from './BottomSheetScrollView';
9
- export type { BottomSheetScrollViewProps } from './BottomSheetScrollView';
12
+ export type {
13
+ BottomSheetScrollViewMethods,
14
+ BottomSheetScrollViewProps,
15
+ } from './BottomSheetScrollView';
10
16
  export type { Detent } from './BottomSheetBase';
@@ -50,9 +50,9 @@ export const useBottomSheetScrollable = (
50
50
  });
51
51
  const animatedProps = useAnimatedProps(() => {
52
52
  const resolvedScrollEnabled =
53
- typeof baseScrollEnabled === 'object' && baseScrollEnabled !== null
54
- ? baseScrollEnabled.value ?? true
55
- : baseScrollEnabled ?? true;
53
+ (typeof baseScrollEnabled === 'object' && baseScrollEnabled !== null
54
+ ? baseScrollEnabled.value
55
+ : baseScrollEnabled) ?? true;
56
56
  return {
57
57
  scrollEnabled: resolvedScrollEnabled && !isScrollableLocked.value,
58
58
  };