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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,178 @@
1
1
  # React Native Bottom Sheet
2
2
 
3
3
  ![](https://img.shields.io/npm/v/@swmansion/react-native-bottom-sheet)
4
+
5
+ ![](cover.png)
6
+
7
+ React Native Bottom Sheet provides bottom‍-‍sheet components for
8
+ React Native.
9
+
10
+ ## Getting started
11
+
12
+ 1. Install React Native Bottom Sheet:
13
+
14
+ ```sh
15
+ npm i @swmansion/react-native-bottom-sheet
16
+ ```
17
+
18
+ 2. Ensure the peer dependencies are installed:
19
+
20
+ ```sh
21
+ npm i react-native-gesture-handler@^2.14.0 react-native-reanimated@^3.16.0 react-native-safe-area-context@^4.0.0 react-native-worklets@^0.4.0
22
+ ```
23
+
24
+ 3. Wrap your app with `GestureHandlerRootView` and `BottomSheetProvider`:
25
+
26
+ ```tsx
27
+ const App = () => (
28
+ <GestureHandlerRootView>
29
+ <BottomSheetProvider>{/* ... */}</BottomSheetProvider>
30
+ </GestureHandlerRootView>
31
+ );
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ The library provides two components: `BottomSheet` (inline) and
37
+ `ModalBottomSheet` (modal). Both render their children as the sheet content
38
+ (including any background) and are controlled via `detents`, `index`,
39
+ and&nbsp;`onIndexChange`.
40
+
41
+ ### Inline
42
+
43
+ `BottomSheet` renders within your screen&nbsp;layout.
44
+
45
+ ```tsx
46
+ const [index, setIndex] = useState(0);
47
+ const insets = useSafeAreaInsets();
48
+ ```
49
+
50
+ ```tsx
51
+ <BottomSheet index={index} onIndexChange={setIndex}>
52
+ <View
53
+ style={{
54
+ backgroundColor: 'white',
55
+ padding: 16,
56
+ paddingBottom: insets.bottom + 16,
57
+ }}
58
+ >
59
+ <Text>Sheet content</Text>
60
+ </View>
61
+ </BottomSheet>
62
+ ```
63
+
64
+ ### Modal
65
+
66
+ `ModalBottomSheet` renders above other content with a&nbsp;scrim.
67
+
68
+ ```tsx
69
+ const [index, setIndex] = useState(0);
70
+ const insets = useSafeAreaInsets();
71
+ ```
72
+
73
+ ```tsx
74
+ <ModalBottomSheet index={index} onIndexChange={setIndex}>
75
+ <View
76
+ style={{
77
+ backgroundColor: 'white',
78
+ padding: 16,
79
+ paddingBottom: insets.bottom + 16,
80
+ }}
81
+ >
82
+ <Text>Sheet content</Text>
83
+ </View>
84
+ </ModalBottomSheet>
85
+ ```
86
+
87
+ #### Scrim
88
+
89
+ Tapping the scrim collapses the sheet. You can provide a custom scrim via the
90
+ `scrim` prop, which receives a `SharedValue` that goes from 0 when collapsed to
91
+ 1 when the first nonzero detent is&nbsp;reached:
92
+
93
+ ```tsx
94
+ <ModalBottomSheet
95
+ index={index}
96
+ onIndexChange={setIndex}
97
+ scrim={(progress) => (
98
+ <Animated.View
99
+ style={useAnimatedStyle(() => ({
100
+ backgroundColor: `rgba(0, 0, 255, ${0.3 * progress.value})`,
101
+ flex: 1,
102
+ }))}
103
+ />
104
+ )}
105
+ >
106
+ {/* ... */}
107
+ </ModalBottomSheet>
108
+ ```
109
+
110
+ ### Detents and index
111
+
112
+ Detents are the points to which the sheet snaps. Each detent is either a number
113
+ (a fixed height in pixels) or `'max'` (the sheet’s content height, capped by the
114
+ available screen height). The default detents are `[0, 'max']`.
115
+
116
+ The `index` prop is a zero&zwj;-&zwj;based index into the `detents` array.
117
+ `onIndexChange` is called when the sheet snaps to a different detent after
118
+ a&nbsp;drag. You can also control the sheet externally by updating the index
119
+ state.
120
+
121
+ ```tsx
122
+ const [index, setIndex] = useState(0);
123
+ ```
124
+
125
+ ```tsx
126
+ <BottomSheet // Or `ModalBottomSheet`.
127
+ detents={[0, 300, 'max']} // Collapsed, 300 px, content height.
128
+ index={index}
129
+ onIndexChange={setIndex}
130
+ >
131
+ {/* ... */}
132
+ </BottomSheet>
133
+ ```
134
+
135
+ ### Position tracking
136
+
137
+ The `position` prop accepts a `SharedValue` that the library keeps in sync with
138
+ the sheet’s current position (the distance in pixels from the bottom of the
139
+ screen to the top of the sheet). Use it to drive animations tied to the
140
+ sheet&nbsp;position.
141
+
142
+ ```tsx
143
+ const position = useSharedValue(0);
144
+ ```
145
+
146
+ ```tsx
147
+ <BottomSheet // Or `ModalBottomSheet`.
148
+ index={index}
149
+ onIndexChange={setIndex}
150
+ position={position}
151
+ >
152
+ {/* ... */}
153
+ </BottomSheet>
154
+ ```
155
+
156
+ ### Customizing animations
157
+
158
+ Use the `openAnimationConfig` and `closeAnimationConfig` props to tweak the
159
+ spring parameters for opening and&nbsp;closing.
160
+
161
+ ### Scrollable content
162
+
163
+ For scrollable sheet content, use `BottomSheetScrollView` or
164
+ `BottomSheetFlatList` instead of the standard React Native components. These
165
+ integrate scrolling with the sheet’s drag gesture so that dragging down while
166
+ scrolled to the top collapses the&nbsp;sheet.
167
+
168
+ ## By [Software Mansion](https://swmansion.com)
169
+
170
+ Founded in 2012, [Software Mansion](https://swmansion.com) is a software agency
171
+ with experience in building web and mobile apps. We are core React Native
172
+ contributors and experts in dealing with all kinds of React Native issues. We
173
+ can help you build your next dream
174
+ product&zwj;—&zwj;[hire&nbsp;us](https://swmansion.com/contact/projects?utm_source=react-native-bottom-sheet&utm_medium=readme).
175
+
176
+ [![](https://logo.swmansion.com/logo?color=white&variant=desktop&width=152&tag=react-native-bottom-sheet-github)](https://swmansion.com)
177
+
178
+ [![](https://contrib.rocks/image?repo=software-mansion-labs/react-native-bottom-sheet)](https://github.com/software-mansion-labs/react-native-bottom-sheet/graphs/contributors)
@@ -85,15 +85,16 @@ export const BottomSheetBase = ({
85
85
  const dragStartTranslateY = useSharedValue(0);
86
86
  const isTouchWithinScrollable = useSharedValue(false);
87
87
  const detentsValue = useSharedValue(normalizedDetents);
88
+ const firstNonzeroDetent = useSharedValue(normalizedDetents.find(d => d > 0) ?? 0);
88
89
  const currentIndex = useSharedValue(resolvedIndex);
89
90
  const internalPosition = useDerivedValue(() => Math.max(0, sheetHeight.value - translateY.value));
90
91
  useAnimatedReaction(() => internalPosition.value, value => {
91
92
  if (externalPosition !== undefined) externalPosition.set(value);
92
93
  });
93
94
  const scrimProgress = useDerivedValue(() => {
94
- const maxSnap = sheetHeight.value;
95
- if (maxSnap <= 0) return 0;
96
- const progress = internalPosition.value / maxSnap;
95
+ const target = firstNonzeroDetent.value;
96
+ if (target <= 0) return 0;
97
+ const progress = internalPosition.value / target;
97
98
  return Math.min(1, Math.max(0, progress));
98
99
  });
99
100
  const handleIndexChange = nextIndex => {
@@ -103,7 +104,8 @@ export const BottomSheetBase = ({
103
104
  const maxSnap = Math.max(0, ...normalizedDetents);
104
105
  detentsValue.set(normalizedDetents);
105
106
  sheetHeight.set(maxSnap);
106
- }, [normalizedDetents, sheetHeight, detentsValue]);
107
+ firstNonzeroDetent.set(normalizedDetents.find(d => d > 0) ?? 0);
108
+ }, [normalizedDetents, sheetHeight, detentsValue, firstNonzeroDetent]);
107
109
  const animateToIndex = useCallback((targetIndex, velocity) => {
108
110
  'worklet';
109
111
 
@@ -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","currentIndex","internalPosition","undefined","set","scrimProgress","maxSnap","handleIndexChange","nextIndex","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","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":[]}
@@ -4,17 +4,17 @@ import { GestureDetector } from 'react-native-gesture-handler';
4
4
  import Animated from 'react-native-reanimated';
5
5
  import { useBottomSheetScrollable } from "./useBottomSheetScrollable.js";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
- export const BottomSheetFlatList = props => {
8
- const {
9
- scrollEnabled,
10
- ...rest
11
- } = props;
7
+ export const BottomSheetFlatList = ({
8
+ scrollEnabled,
9
+ onScroll,
10
+ ...rest
11
+ }) => {
12
12
  const {
13
13
  scrollHandler,
14
14
  scrollableRef,
15
15
  nativeGesture,
16
16
  animatedProps
17
- } = useBottomSheetScrollable(scrollEnabled);
17
+ } = useBottomSheetScrollable(scrollEnabled, onScroll);
18
18
  return /*#__PURE__*/_jsx(GestureDetector, {
19
19
  gesture: nativeGesture,
20
20
  children: /*#__PURE__*/_jsx(Animated.FlatList, {
@@ -1 +1 @@
1
- {"version":3,"names":["GestureDetector","Animated","useBottomSheetScrollable","jsx","_jsx","BottomSheetFlatList","props","scrollEnabled","rest","scrollHandler","scrollableRef","nativeGesture","animatedProps","gesture","children","FlatList","ref","onScroll","scrollEventThrottle"],"sourceRoot":"../../src","sources":["BottomSheetFlatList.tsx"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,8BAA8B;AAE9D,OAAOC,QAAQ,MAAM,yBAAyB;AAE9C,SAASC,wBAAwB,QAAQ,+BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtE,OAAO,MAAMC,mBAAmB,GAC9BC,KAAmD,IAChD;EACH,MAAM;IAAEC,aAAa;IAAE,GAAGC;EAAK,CAAC,GAAGF,KAAK;EACxC,MAAM;IAAEG,aAAa;IAAEC,aAAa;IAAEC,aAAa;IAAEC;EAAc,CAAC,GAClEV,wBAAwB,CAACK,aAAa,CAAC;EACzC,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;MACnBO,QAAQ,EAAER,aAAc;MACxBS,mBAAmB,EAAE;IAAG,CACzB;EAAC,CACa,CAAC;AAEtB,CAAC","ignoreList":[]}
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":[]}
@@ -4,17 +4,17 @@ import { GestureDetector } from 'react-native-gesture-handler';
4
4
  import Animated from 'react-native-reanimated';
5
5
  import { useBottomSheetScrollable } from "./useBottomSheetScrollable.js";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
- export const BottomSheetScrollView = props => {
8
- const {
9
- scrollEnabled,
10
- ...rest
11
- } = props;
7
+ export const BottomSheetScrollView = ({
8
+ scrollEnabled,
9
+ onScroll,
10
+ ...rest
11
+ }) => {
12
12
  const {
13
13
  scrollHandler,
14
14
  scrollableRef,
15
15
  nativeGesture,
16
16
  animatedProps
17
- } = useBottomSheetScrollable(scrollEnabled);
17
+ } = useBottomSheetScrollable(scrollEnabled, onScroll);
18
18
  return /*#__PURE__*/_jsx(GestureDetector, {
19
19
  gesture: nativeGesture,
20
20
  children: /*#__PURE__*/_jsx(Animated.ScrollView, {
@@ -1 +1 @@
1
- {"version":3,"names":["GestureDetector","Animated","useBottomSheetScrollable","jsx","_jsx","BottomSheetScrollView","props","scrollEnabled","rest","scrollHandler","scrollableRef","nativeGesture","animatedProps","gesture","children","ScrollView","ref","onScroll","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;AAEtE,OAAO,MAAMC,qBAAqB,GAChCC,KAAwC,IACrC;EACH,MAAM;IAAEC,aAAa;IAAE,GAAGC;EAAK,CAAC,GAAGF,KAAK;EACxC,MAAM;IAAEG,aAAa;IAAEC,aAAa;IAAEC,aAAa;IAAEC;EAAc,CAAC,GAClEV,wBAAwB,CAACK,aAAa,CAAC;EACzC,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;MACnBO,QAAQ,EAAER,aAAc;MACxBS,mBAAmB,EAAE;IAAG,CACzB;EAAC,CACa,CAAC;AAEtB,CAAC","ignoreList":[]}
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 +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;AAC3D,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;AAE3D,SAASC,qBAAqB,QAAQ,4BAAyB","ignoreList":[]}
@@ -2,9 +2,10 @@
2
2
 
3
3
  import { useEffect } from 'react';
4
4
  import { Gesture } from 'react-native-gesture-handler';
5
+ import { isWorkletFunction, scheduleOnRN } from 'react-native-worklets';
5
6
  import { useAnimatedProps, useAnimatedScrollHandler } from 'react-native-reanimated';
6
7
  import { useBottomSheetContext } from "./BottomSheetContext.js";
7
- export const useBottomSheetScrollable = (baseScrollEnabled = true) => {
8
+ export const useBottomSheetScrollable = (baseScrollEnabled = true, onScroll) => {
8
9
  const {
9
10
  scrollOffset,
10
11
  scrollableRef,
@@ -13,11 +14,18 @@ export const useBottomSheetScrollable = (baseScrollEnabled = true) => {
13
14
  isScrollableLocked,
14
15
  panGesture
15
16
  } = useBottomSheetContext();
17
+ const isWorkletScrollHandler = onScroll !== undefined ? isWorkletFunction(onScroll) : false;
16
18
  const scrollHandler = useAnimatedScrollHandler({
17
19
  onScroll: event => {
18
20
  'worklet';
19
21
 
20
22
  scrollOffset.set(Math.max(0, event.contentOffset.y));
23
+ if (onScroll === undefined) return;
24
+ if (isWorkletScrollHandler) {
25
+ onScroll(event);
26
+ return;
27
+ }
28
+ scheduleOnRN(onScroll, event);
21
29
  }
22
30
  });
23
31
  const nativeGesture = Gesture.Native().simultaneousWithExternalGesture(panGesture).onStart(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","Gesture","useAnimatedProps","useAnimatedScrollHandler","useBottomSheetContext","useBottomSheetScrollable","baseScrollEnabled","scrollOffset","scrollableRef","hasScrollable","isScrollableGestureActive","isScrollableLocked","panGesture","scrollHandler","onScroll","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;AACtD,SAEEC,gBAAgB,EAChBC,wBAAwB,QACnB,yBAAyB;AAEhC,SAASC,qBAAqB,QAAQ,yBAAsB;AAE5D,OAAO,MAAMC,wBAAwB,GAAGA,CACtCC,iBAA6D,GAAG,IAAI,KACjE;EACH,MAAM;IACJC,YAAY;IACZC,aAAa;IACbC,aAAa;IACbC,yBAAyB;IACzBC,kBAAkB;IAClBC;EACF,CAAC,GAAGR,qBAAqB,CAAC,CAAC;EAC3B,MAAMS,aAAa,GAAGV,wBAAwB,CAAC;IAC7CW,QAAQ,EAAGC,KAAK,IAAK;MACnB,SAAS;;MACTR,YAAY,CAACS,GAAG,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,KAAK,CAACI,aAAa,CAACC,CAAC,CAAC,CAAC;IACtD;EACF,CAAC,CAAC;EACF,MAAMC,aAAa,GAAGpB,OAAO,CAACqB,MAAM,CAAC,CAAC,CACnCC,+BAA+B,CAACX,UAAU,CAAC,CAC3CY,OAAO,CAAC,MAAM;IACb,SAAS;;IACTd,yBAAyB,CAACM,GAAG,CAAC,IAAI,CAAC;EACrC,CAAC,CAAC,CACDS,UAAU,CAAC,MAAM;IAChB,SAAS;;IACTf,yBAAyB,CAACM,GAAG,CAAC,KAAK,CAAC;EACtC,CAAC,CAAC;EACJ,MAAMU,aAAa,GAAGxB,gBAAgB,CAAC,MAAM;IAC3C,MAAMyB,qBAAqB,GACzB,OAAOrB,iBAAiB,KAAK,QAAQ,IAAIA,iBAAiB,KAAK,IAAI,GAC/DA,iBAAiB,CAACsB,KAAK,IAAI,IAAI,GAC/BtB,iBAAiB,IAAI,IAAI;IAC/B,OAAO;MACLuB,aAAa,EAAEF,qBAAqB,IAAI,CAAChB,kBAAkB,CAACiB;IAC9D,CAAC;EACH,CAAC,CAAC;EACF5B,SAAS,CAAC,MAAM;IACd,IAAI8B,OAAO,IAAIrB,aAAa,CAACmB,KAAK,EAAE;MAClCG,OAAO,CAACC,IAAI,CACV,sFAAsF,GACpF,yDACJ,CAAC;IACH;IACAvB,aAAa,CAACO,GAAG,CAAC,IAAI,CAAC;IACvB,OAAO,MAAM;MACXP,aAAa,CAACO,GAAG,CAAC,KAAK,CAAC;MACxBN,yBAAyB,CAACM,GAAG,CAAC,KAAK,CAAC;MACpCL,kBAAkB,CAACK,GAAG,CAAC,KAAK,CAAC;IAC/B,CAAC;EACH,CAAC,EAAE,CAACP,aAAa,EAAEC,yBAAyB,EAAEC,kBAAkB,CAAC,CAAC;EAClE,OAAO;IAAEE,aAAa;IAAEL,aAAa;IAAEa,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,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 +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,4CA6RtB,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,4CAiStB,CAAC"}
@@ -1,3 +1,7 @@
1
+ import type { NativeScrollEvent } from 'react-native';
1
2
  import type { FlatListPropsWithLayout } from 'react-native-reanimated';
2
- export declare const BottomSheetFlatList: <T>(props: Omit<FlatListPropsWithLayout<T>, "onScroll">) => import("react/jsx-runtime").JSX.Element;
3
+ export interface BottomSheetFlatListProps<T> extends Omit<FlatListPropsWithLayout<T>, 'onScroll'> {
4
+ onScroll?: (event: NativeScrollEvent) => void;
5
+ }
6
+ export declare const BottomSheetFlatList: <T>({ scrollEnabled, onScroll, ...rest }: BottomSheetFlatListProps<T>) => import("react/jsx-runtime").JSX.Element;
3
7
  //# sourceMappingURL=BottomSheetFlatList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetFlatList.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetFlatList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAKvE,eAAO,MAAM,mBAAmB,GAAI,CAAC,EACnC,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,4CAgBpD,CAAC"}
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,3 +1,6 @@
1
- import type { ScrollViewProps } from 'react-native';
2
- export declare const BottomSheetScrollView: (props: Omit<ScrollViewProps, "onScroll">) => import("react/jsx-runtime").JSX.Element;
1
+ import type { NativeScrollEvent, ScrollViewProps } from 'react-native';
2
+ export interface BottomSheetScrollViewProps extends Omit<ScrollViewProps, 'onScroll'> {
3
+ onScroll?: (event: NativeScrollEvent) => void;
4
+ }
5
+ export declare const BottomSheetScrollView: ({ scrollEnabled, onScroll, ...rest }: BottomSheetScrollViewProps) => import("react/jsx-runtime").JSX.Element;
3
6
  //# 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,eAAe,EAAE,MAAM,cAAc,CAAC;AAMpD,eAAO,MAAM,qBAAqB,GAChC,OAAO,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,4CAgBzC,CAAC"}
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"}
@@ -4,6 +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
8
  export { BottomSheetScrollView } from './BottomSheetScrollView';
9
+ export type { BottomSheetScrollViewProps } from './BottomSheetScrollView';
8
10
  export type { Detent } from './BottomSheetBase';
9
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,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,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,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,5 +1,7 @@
1
+ import type { NativeScrollEvent } from 'react-native';
1
2
  import { type SharedValue } from 'react-native-reanimated';
2
- export declare const useBottomSheetScrollable: (baseScrollEnabled?: boolean | SharedValue<boolean | undefined>) => {
3
+ type ScrollHandler = (event: NativeScrollEvent) => void;
4
+ export declare const useBottomSheetScrollable: (baseScrollEnabled?: boolean | SharedValue<boolean | undefined>, onScroll?: ScrollHandler) => {
3
5
  scrollHandler: import("react-native-reanimated").ScrollHandlerProcessed<Record<string, unknown>>;
4
6
  scrollableRef: import("react-native-reanimated").AnimatedRef<any>;
5
7
  nativeGesture: import("react-native-gesture-handler/lib/typescript/handlers/gestures/nativeGesture").NativeGesture;
@@ -7,4 +9,5 @@ export declare const useBottomSheetScrollable: (baseScrollEnabled?: boolean | Sh
7
9
  scrollEnabled: boolean;
8
10
  }>;
9
11
  };
12
+ export {};
10
13
  //# sourceMappingURL=useBottomSheetScrollable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBottomSheetScrollable.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetScrollable.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,wBAAwB,GACnC,oBAAmB,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAQ;;;;;;;CAkDrE,CAAC"}
1
+ {"version":3,"file":"useBottomSheetScrollable.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetScrollable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,yBAAyB,CAAC;AAIjC,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAExD,eAAO,MAAM,wBAAwB,GACnC,oBAAmB,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAQ,EACpE,WAAW,aAAa;;;;;;;CA0DzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/react-native-bottom-sheet",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
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",
@@ -114,4 +114,4 @@
114
114
  "trailingComma": "es5",
115
115
  "useTabs": false
116
116
  }
117
- }
117
+ }
@@ -119,6 +119,9 @@ export const BottomSheetBase = ({
119
119
  const dragStartTranslateY = useSharedValue(0);
120
120
  const isTouchWithinScrollable = useSharedValue(false);
121
121
  const detentsValue = useSharedValue(normalizedDetents);
122
+ const firstNonzeroDetent = useSharedValue(
123
+ normalizedDetents.find((d) => d > 0) ?? 0
124
+ );
122
125
  const currentIndex = useSharedValue(resolvedIndex);
123
126
  const internalPosition = useDerivedValue(() =>
124
127
  Math.max(0, sheetHeight.value - translateY.value)
@@ -130,9 +133,9 @@ export const BottomSheetBase = ({
130
133
  }
131
134
  );
132
135
  const scrimProgress = useDerivedValue(() => {
133
- const maxSnap = sheetHeight.value;
134
- if (maxSnap <= 0) return 0;
135
- const progress = internalPosition.value / maxSnap;
136
+ const target = firstNonzeroDetent.value;
137
+ if (target <= 0) return 0;
138
+ const progress = internalPosition.value / target;
136
139
  return Math.min(1, Math.max(0, progress));
137
140
  });
138
141
  const handleIndexChange = (nextIndex: number) => {
@@ -142,7 +145,8 @@ export const BottomSheetBase = ({
142
145
  const maxSnap = Math.max(0, ...normalizedDetents);
143
146
  detentsValue.set(normalizedDetents);
144
147
  sheetHeight.set(maxSnap);
145
- }, [normalizedDetents, sheetHeight, detentsValue]);
148
+ firstNonzeroDetent.set(normalizedDetents.find((d) => d > 0) ?? 0);
149
+ }, [normalizedDetents, sheetHeight, detentsValue, firstNonzeroDetent]);
146
150
  const animateToIndex = useCallback(
147
151
  (targetIndex: number, velocity?: number) => {
148
152
  'worklet';
@@ -1,15 +1,22 @@
1
+ import type { NativeScrollEvent } from 'react-native';
1
2
  import { GestureDetector } from 'react-native-gesture-handler';
2
3
  import type { FlatListPropsWithLayout } from 'react-native-reanimated';
3
4
  import Animated from 'react-native-reanimated';
4
5
 
5
6
  import { useBottomSheetScrollable } from './useBottomSheetScrollable';
6
7
 
7
- export const BottomSheetFlatList = <T,>(
8
- props: Omit<FlatListPropsWithLayout<T>, 'onScroll'>
9
- ) => {
10
- const { scrollEnabled, ...rest } = props;
8
+ export interface BottomSheetFlatListProps<T>
9
+ extends Omit<FlatListPropsWithLayout<T>, 'onScroll'> {
10
+ onScroll?: (event: NativeScrollEvent) => void;
11
+ }
12
+
13
+ export const BottomSheetFlatList = <T,>({
14
+ scrollEnabled,
15
+ onScroll,
16
+ ...rest
17
+ }: BottomSheetFlatListProps<T>) => {
11
18
  const { scrollHandler, scrollableRef, nativeGesture, animatedProps } =
12
- useBottomSheetScrollable(scrollEnabled);
19
+ useBottomSheetScrollable(scrollEnabled, onScroll);
13
20
  return (
14
21
  <GestureDetector gesture={nativeGesture}>
15
22
  <Animated.FlatList
@@ -1,15 +1,21 @@
1
- import type { ScrollViewProps } from 'react-native';
1
+ import type { NativeScrollEvent, ScrollViewProps } from 'react-native';
2
2
  import { GestureDetector } from 'react-native-gesture-handler';
3
3
  import Animated from 'react-native-reanimated';
4
4
 
5
5
  import { useBottomSheetScrollable } from './useBottomSheetScrollable';
6
6
 
7
- export const BottomSheetScrollView = (
8
- props: Omit<ScrollViewProps, 'onScroll'>
9
- ) => {
10
- const { scrollEnabled, ...rest } = props;
7
+ export interface BottomSheetScrollViewProps
8
+ extends Omit<ScrollViewProps, 'onScroll'> {
9
+ onScroll?: (event: NativeScrollEvent) => void;
10
+ }
11
+
12
+ export const BottomSheetScrollView = ({
13
+ scrollEnabled,
14
+ onScroll,
15
+ ...rest
16
+ }: BottomSheetScrollViewProps) => {
11
17
  const { scrollHandler, scrollableRef, nativeGesture, animatedProps } =
12
- useBottomSheetScrollable(scrollEnabled);
18
+ useBottomSheetScrollable(scrollEnabled, onScroll);
13
19
  return (
14
20
  <GestureDetector gesture={nativeGesture}>
15
21
  <Animated.ScrollView
package/src/index.tsx CHANGED
@@ -4,5 +4,7 @@ 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
8
  export { BottomSheetScrollView } from './BottomSheetScrollView';
9
+ export type { BottomSheetScrollViewProps } from './BottomSheetScrollView';
8
10
  export type { Detent } from './BottomSheetBase';
@@ -1,5 +1,7 @@
1
1
  import { useEffect } from 'react';
2
2
  import { Gesture } from 'react-native-gesture-handler';
3
+ import type { NativeScrollEvent } from 'react-native';
4
+ import { isWorkletFunction, scheduleOnRN } from 'react-native-worklets';
3
5
  import {
4
6
  type SharedValue,
5
7
  useAnimatedProps,
@@ -8,8 +10,11 @@ import {
8
10
 
9
11
  import { useBottomSheetContext } from './BottomSheetContext';
10
12
 
13
+ type ScrollHandler = (event: NativeScrollEvent) => void;
14
+
11
15
  export const useBottomSheetScrollable = (
12
- baseScrollEnabled: boolean | SharedValue<boolean | undefined> = true
16
+ baseScrollEnabled: boolean | SharedValue<boolean | undefined> = true,
17
+ onScroll?: ScrollHandler
13
18
  ) => {
14
19
  const {
15
20
  scrollOffset,
@@ -19,10 +24,18 @@ export const useBottomSheetScrollable = (
19
24
  isScrollableLocked,
20
25
  panGesture,
21
26
  } = useBottomSheetContext();
27
+ const isWorkletScrollHandler =
28
+ onScroll !== undefined ? isWorkletFunction(onScroll) : false;
22
29
  const scrollHandler = useAnimatedScrollHandler({
23
30
  onScroll: (event) => {
24
31
  'worklet';
25
32
  scrollOffset.set(Math.max(0, event.contentOffset.y));
33
+ if (onScroll === undefined) return;
34
+ if (isWorkletScrollHandler) {
35
+ onScroll(event);
36
+ return;
37
+ }
38
+ scheduleOnRN(onScroll, event);
26
39
  },
27
40
  });
28
41
  const nativeGesture = Gesture.Native()