@swmansion/react-native-bottom-sheet 0.1.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.
Files changed (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/lib/module/BottomSheet.js +8 -0
  4. package/lib/module/BottomSheet.js.map +1 -0
  5. package/lib/module/BottomSheetBase.js +309 -0
  6. package/lib/module/BottomSheetBase.js.map +1 -0
  7. package/lib/module/BottomSheetContext.js +13 -0
  8. package/lib/module/BottomSheetContext.js.map +1 -0
  9. package/lib/module/BottomSheetFlatList.js +29 -0
  10. package/lib/module/BottomSheetFlatList.js.map +1 -0
  11. package/lib/module/BottomSheetProvider.js +73 -0
  12. package/lib/module/BottomSheetProvider.js.map +1 -0
  13. package/lib/module/BottomSheetScrollView.js +29 -0
  14. package/lib/module/BottomSheetScrollView.js.map +1 -0
  15. package/lib/module/ModalBottomSheet.js +13 -0
  16. package/lib/module/ModalBottomSheet.js.map +1 -0
  17. package/lib/module/index.js +8 -0
  18. package/lib/module/index.js.map +1 -0
  19. package/lib/module/package.json +1 -0
  20. package/lib/module/useBottomSheetScrollable.js +56 -0
  21. package/lib/module/useBottomSheetScrollable.js.map +1 -0
  22. package/lib/typescript/package.json +1 -0
  23. package/lib/typescript/src/BottomSheet.d.ts +4 -0
  24. package/lib/typescript/src/BottomSheet.d.ts.map +1 -0
  25. package/lib/typescript/src/BottomSheetBase.d.ts +18 -0
  26. package/lib/typescript/src/BottomSheetBase.d.ts.map +1 -0
  27. package/lib/typescript/src/BottomSheetContext.d.ts +17 -0
  28. package/lib/typescript/src/BottomSheetContext.d.ts.map +1 -0
  29. package/lib/typescript/src/BottomSheetFlatList.d.ts +3 -0
  30. package/lib/typescript/src/BottomSheetFlatList.d.ts.map +1 -0
  31. package/lib/typescript/src/BottomSheetProvider.d.ts +8 -0
  32. package/lib/typescript/src/BottomSheetProvider.d.ts.map +1 -0
  33. package/lib/typescript/src/BottomSheetScrollView.d.ts +3 -0
  34. package/lib/typescript/src/BottomSheetScrollView.d.ts.map +1 -0
  35. package/lib/typescript/src/ModalBottomSheet.d.ts +8 -0
  36. package/lib/typescript/src/ModalBottomSheet.d.ts.map +1 -0
  37. package/lib/typescript/src/index.d.ts +9 -0
  38. package/lib/typescript/src/index.d.ts.map +1 -0
  39. package/lib/typescript/src/useBottomSheetScrollable.d.ts +10 -0
  40. package/lib/typescript/src/useBottomSheetScrollable.d.ts.map +1 -0
  41. package/package.json +117 -0
  42. package/src/BottomSheet.tsx +8 -0
  43. package/src/BottomSheetBase.tsx +378 -0
  44. package/src/BottomSheetContext.tsx +30 -0
  45. package/src/BottomSheetFlatList.tsx +24 -0
  46. package/src/BottomSheetProvider.tsx +83 -0
  47. package/src/BottomSheetScrollView.tsx +24 -0
  48. package/src/ModalBottomSheet.tsx +16 -0
  49. package/src/index.tsx +8 -0
  50. package/src/useBottomSheetScrollable.ts +62 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright 2026 by Software Mansion.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # React Native Bottom Sheet
2
+
3
+ ![](https://img.shields.io/npm/v/@swmansion/react-native-bottom-sheet)
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ import { BottomSheetBase } from "./BottomSheetBase.js";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export const BottomSheet = props => /*#__PURE__*/_jsx(BottomSheetBase, {
6
+ ...props
7
+ });
8
+ //# sourceMappingURL=BottomSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BottomSheetBase","jsx","_jsx","BottomSheet","props"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":";;AACA,SAASA,eAAe,QAAQ,sBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAIpD,OAAO,MAAMC,WAAW,GAAIC,KAAuB,iBACjDF,IAAA,CAACF,eAAe;EAAA,GAAKI;AAAK,CAAG,CAC9B","ignoreList":[]}
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useState } from 'react';
4
+ import { Pressable, StyleSheet, View, useWindowDimensions } from 'react-native';
5
+ import Animated, { measure, scrollTo, useAnimatedRef, useAnimatedReaction, useAnimatedStyle, useDerivedValue, useSharedValue, withSpring } from 'react-native-reanimated';
6
+ import { scheduleOnRN, scheduleOnUI } from 'react-native-worklets';
7
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
8
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
9
+ import { Portal } from "./BottomSheetProvider.js";
10
+ import { BottomSheetContextProvider } from "./BottomSheetContext.js";
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ const DEFAULT_OPEN_ANIMATION_CONFIG = {
13
+ dampingRatio: 1,
14
+ duration: 300,
15
+ overshootClamping: true
16
+ };
17
+ const DEFAULT_CLOSE_ANIMATION_CONFIG = {
18
+ dampingRatio: 1,
19
+ duration: 250,
20
+ overshootClamping: true
21
+ };
22
+ const VELOCITY_THRESHOLD = 800;
23
+ const resolveDetent = (detent, contentHeight, maxHeight) => {
24
+ if (typeof detent === 'number') return detent;
25
+ if (detent === 'max') {
26
+ return contentHeight > 0 ? Math.min(contentHeight, maxHeight) : maxHeight;
27
+ }
28
+ throw new Error(`Invalid detent: \`${detent}\`.`);
29
+ };
30
+ const clampIndex = (index, detentCount) => {
31
+ if (detentCount <= 0) return 0;
32
+ return Math.min(Math.max(index, 0), detentCount - 1);
33
+ };
34
+ const DefaultScrim = ({
35
+ progress
36
+ }) => {
37
+ const style = useAnimatedStyle(() => ({
38
+ opacity: progress.value
39
+ }));
40
+ return /*#__PURE__*/_jsx(Animated.View, {
41
+ style: [StyleSheet.absoluteFill, {
42
+ flex: 1,
43
+ backgroundColor: 'rgba(0, 0, 0, 0.5)'
44
+ }, style]
45
+ });
46
+ };
47
+ export const BottomSheetBase = ({
48
+ children,
49
+ detents = [0, 'max'],
50
+ index,
51
+ onIndexChange,
52
+ position: externalPosition,
53
+ openAnimationConfig = DEFAULT_OPEN_ANIMATION_CONFIG,
54
+ closeAnimationConfig = DEFAULT_CLOSE_ANIMATION_CONFIG,
55
+ modal = false,
56
+ renderScrim
57
+ }) => {
58
+ const {
59
+ height: screenHeight
60
+ } = useWindowDimensions();
61
+ const insets = useSafeAreaInsets();
62
+ const maxHeight = screenHeight - insets.top;
63
+ const resolvedIndex = clampIndex(index, detents.length);
64
+ const [contentHeight, setContentHeight] = useState(0);
65
+ if (detents.length === 0) {
66
+ throw new Error('detents must include at least one value.');
67
+ }
68
+ const normalizedDetents = detents.map(point => {
69
+ const resolved = resolveDetent(point, contentHeight, maxHeight);
70
+ return Math.max(0, Math.min(resolved, maxHeight));
71
+ });
72
+ const initialMaxSnap = Math.max(0, ...normalizedDetents);
73
+ const translateY = useSharedValue(initialMaxSnap);
74
+ const animationTarget = useSharedValue(NaN);
75
+ const sheetHeight = useSharedValue(initialMaxSnap);
76
+ const scrollOffset = useSharedValue(0);
77
+ const hasScrollable = useSharedValue(false);
78
+ const isScrollableGestureActive = useSharedValue(false);
79
+ const isScrollableLocked = useSharedValue(false);
80
+ const scrollableRef = useAnimatedRef();
81
+ const isDraggingSheet = useSharedValue(false);
82
+ const isDraggingFromScrollable = useSharedValue(false);
83
+ const panStartY = useSharedValue(0);
84
+ const panActivated = useSharedValue(false);
85
+ const dragStartTranslateY = useSharedValue(0);
86
+ const isTouchWithinScrollable = useSharedValue(false);
87
+ const detentsValue = useSharedValue(normalizedDetents);
88
+ const currentIndex = useSharedValue(resolvedIndex);
89
+ const internalPosition = useDerivedValue(() => Math.max(0, sheetHeight.value - translateY.value));
90
+ useAnimatedReaction(() => internalPosition.value, value => {
91
+ if (externalPosition !== undefined) externalPosition.set(value);
92
+ });
93
+ const scrimProgress = useDerivedValue(() => {
94
+ const maxSnap = sheetHeight.value;
95
+ if (maxSnap <= 0) return 0;
96
+ const progress = internalPosition.value / maxSnap;
97
+ return Math.min(1, Math.max(0, progress));
98
+ });
99
+ const handleIndexChange = nextIndex => {
100
+ onIndexChange?.(nextIndex);
101
+ };
102
+ useEffect(() => {
103
+ const maxSnap = Math.max(0, ...normalizedDetents);
104
+ detentsValue.set(normalizedDetents);
105
+ sheetHeight.set(maxSnap);
106
+ }, [normalizedDetents, sheetHeight, detentsValue]);
107
+ const animateToIndex = useCallback((targetIndex, velocity) => {
108
+ 'worklet';
109
+
110
+ const maxSnap = sheetHeight.value;
111
+ const targetTranslate = maxSnap - (detentsValue.value[targetIndex] ?? 0);
112
+ if (animationTarget.value === targetTranslate && velocity === undefined) {
113
+ currentIndex.set(targetIndex);
114
+ return;
115
+ }
116
+ animationTarget.set(targetTranslate);
117
+ const isOpening = targetTranslate < translateY.value;
118
+ const baseConfig = isOpening ? openAnimationConfig : closeAnimationConfig;
119
+ const springConfig = velocity === undefined ? baseConfig : {
120
+ ...baseConfig,
121
+ velocity
122
+ };
123
+ translateY.set(withSpring(targetTranslate, springConfig));
124
+ currentIndex.set(targetIndex);
125
+ }, [animationTarget, closeAnimationConfig, currentIndex, detentsValue, openAnimationConfig, sheetHeight, translateY]);
126
+ useEffect(() => {
127
+ scheduleOnUI(animateToIndex, resolvedIndex);
128
+ }, [animateToIndex, resolvedIndex, normalizedDetents]);
129
+ const panGesture = Gesture.Pan().manualActivation(true).onTouchesDown(event => {
130
+ 'worklet';
131
+
132
+ panActivated.set(false);
133
+ isDraggingSheet.set(false);
134
+ isDraggingFromScrollable.set(false);
135
+ isScrollableLocked.set(false);
136
+ isTouchWithinScrollable.set(false);
137
+ const touch = event.changedTouches[0] ?? event.allTouches[0];
138
+ if (touch) panStartY.set(touch.absoluteY);
139
+ if (touch && hasScrollable.value) {
140
+ const layout = measure(scrollableRef);
141
+ if (layout) {
142
+ const withinX = touch.absoluteX >= layout.pageX && touch.absoluteX <= layout.pageX + layout.width;
143
+ const withinY = touch.absoluteY >= layout.pageY && touch.absoluteY <= layout.pageY + layout.height;
144
+ isTouchWithinScrollable.set(withinX && withinY);
145
+ }
146
+ }
147
+ }).onTouchesMove((event, stateManager) => {
148
+ 'worklet';
149
+
150
+ if (panActivated.value) return;
151
+ const touch = event.changedTouches[0] ?? event.allTouches[0];
152
+ if (!touch) return;
153
+ const deltaY = touch.absoluteY - panStartY.value;
154
+ if (hasScrollable.value && scrollOffset.value > 0 && isTouchWithinScrollable.value) {
155
+ return;
156
+ }
157
+ if (deltaY > 0 || translateY.value > 0) {
158
+ panActivated.set(true);
159
+ stateManager.activate();
160
+ }
161
+ }).onBegin(() => {
162
+ 'worklet';
163
+
164
+ animationTarget.set(NaN);
165
+ isDraggingSheet.set(false);
166
+ isDraggingFromScrollable.set(false);
167
+ dragStartTranslateY.set(translateY.value);
168
+ }).onUpdate(event => {
169
+ 'worklet';
170
+
171
+ if (isDraggingSheet.value) {
172
+ if (isDraggingFromScrollable.value) {
173
+ scrollTo(scrollableRef, 0, 0, false);
174
+ }
175
+ const nextTranslate = Math.min(Math.max(dragStartTranslateY.value + event.translationY, 0), sheetHeight.value);
176
+ translateY.set(nextTranslate);
177
+ return;
178
+ }
179
+ const isDraggingDown = event.translationY > 0;
180
+ const canStartDrag = !hasScrollable.value || scrollOffset.value <= 0 || !isTouchWithinScrollable.value;
181
+ if (!canStartDrag || !isDraggingDown && translateY.value <= 0) {
182
+ return;
183
+ }
184
+ const isScrollableActive = hasScrollable.value && isScrollableGestureActive.value;
185
+ isDraggingSheet.set(true);
186
+ isDraggingFromScrollable.set(isScrollableActive && isTouchWithinScrollable.value);
187
+ isScrollableLocked.set(hasScrollable.value);
188
+ if (isTouchWithinScrollable.value && hasScrollable.value) {
189
+ scrollTo(scrollableRef, 0, 0, false);
190
+ }
191
+ const nextTranslate = Math.min(Math.max(dragStartTranslateY.value + event.translationY, 0), sheetHeight.value);
192
+ translateY.set(nextTranslate);
193
+ }).onEnd(event => {
194
+ 'worklet';
195
+
196
+ const wasDragging = isDraggingSheet.value;
197
+ isScrollableLocked.set(false);
198
+ isDraggingSheet.set(false);
199
+ if (!wasDragging) {
200
+ animateToIndex(currentIndex.value);
201
+ return;
202
+ }
203
+ const maxSnap = sheetHeight.value;
204
+ const allPositions = detentsValue.value.map((point, snapIndex) => ({
205
+ index: snapIndex,
206
+ translateY: maxSnap - point
207
+ }));
208
+ const currentTranslate = translateY.value;
209
+ const velocityY = event.velocityY;
210
+ let targetIndex = currentIndex.value;
211
+ let minDistance = Infinity;
212
+ for (const pos of allPositions) {
213
+ const distance = Math.abs(currentTranslate - pos.translateY);
214
+ if (distance < minDistance) {
215
+ minDistance = distance;
216
+ targetIndex = pos.index;
217
+ }
218
+ }
219
+ if (Math.abs(velocityY) > VELOCITY_THRESHOLD) {
220
+ if (velocityY > 0) {
221
+ const lower = allPositions.filter(pos => pos.translateY > currentTranslate + 1).sort((a, b) => a.translateY - b.translateY);
222
+ if (lower.length > 0) targetIndex = lower[0].index;
223
+ } else {
224
+ const upper = allPositions.filter(pos => pos.translateY < currentTranslate - 1).sort((a, b) => b.translateY - a.translateY);
225
+ if (upper.length > 0) targetIndex = upper[0].index;
226
+ }
227
+ }
228
+ const hasIndexChanged = targetIndex !== currentIndex.value;
229
+ if (hasIndexChanged) scheduleOnRN(handleIndexChange, targetIndex);
230
+ const shouldApplyVelocity = hasIndexChanged && Number.isFinite(velocityY);
231
+ animateToIndex(targetIndex, shouldApplyVelocity ? velocityY : undefined);
232
+ });
233
+ const handleSentinelLayout = event => {
234
+ setContentHeight(event.nativeEvent.layout.y);
235
+ };
236
+ const closedIndex = normalizedDetents.indexOf(0);
237
+ const handleScrimPress = () => {
238
+ if (closedIndex === -1 || resolvedIndex === closedIndex) return;
239
+ handleIndexChange(closedIndex);
240
+ scheduleOnUI(animateToIndex, closedIndex);
241
+ };
242
+ const wrapperStyle = useAnimatedStyle(() => ({
243
+ transform: [{
244
+ translateY: translateY.value
245
+ }],
246
+ height: sheetHeight.value,
247
+ opacity: translateY.value >= sheetHeight.value ? 0 : 1
248
+ }));
249
+ const isCollapsed = normalizedDetents[resolvedIndex] === 0;
250
+ const pointerEvents = modal ? isCollapsed ? 'none' : 'auto' : 'box-none';
251
+ let scrimElement = null;
252
+ if (renderScrim) {
253
+ scrimElement = renderScrim(scrimProgress);
254
+ } else if (modal) {
255
+ scrimElement = /*#__PURE__*/_jsx(DefaultScrim, {
256
+ progress: scrimProgress
257
+ });
258
+ }
259
+ const sheetContent = /*#__PURE__*/_jsx(BottomSheetContextProvider, {
260
+ value: {
261
+ translateY,
262
+ position: internalPosition,
263
+ index: currentIndex,
264
+ sheetHeight,
265
+ scrollOffset,
266
+ scrollableRef,
267
+ hasScrollable,
268
+ isScrollableGestureActive,
269
+ isScrollableLocked,
270
+ panGesture
271
+ },
272
+ children: /*#__PURE__*/_jsx(Animated.View, {
273
+ style: [{
274
+ position: 'absolute',
275
+ bottom: 0,
276
+ left: 0,
277
+ right: 0
278
+ }, wrapperStyle],
279
+ pointerEvents: "box-none",
280
+ children: /*#__PURE__*/_jsx(GestureDetector, {
281
+ gesture: panGesture,
282
+ children: /*#__PURE__*/_jsxs(View, {
283
+ style: {
284
+ flex: 1
285
+ },
286
+ pointerEvents: "box-none",
287
+ children: [children, /*#__PURE__*/_jsx(View, {
288
+ onLayout: handleSentinelLayout,
289
+ pointerEvents: "none"
290
+ })]
291
+ })
292
+ })
293
+ })
294
+ });
295
+ const sheetContainer = /*#__PURE__*/_jsxs(Animated.View, {
296
+ style: StyleSheet.absoluteFill,
297
+ pointerEvents: pointerEvents,
298
+ children: [modal && scrimElement ? /*#__PURE__*/_jsx(Pressable, {
299
+ style: StyleSheet.absoluteFill,
300
+ onPress: handleScrimPress,
301
+ children: scrimElement
302
+ }) : null, sheetContent]
303
+ });
304
+ if (modal) return /*#__PURE__*/_jsx(Portal, {
305
+ children: sheetContainer
306
+ });
307
+ return sheetContainer;
308
+ };
309
+ //# sourceMappingURL=BottomSheetBase.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from 'react';
4
+ const BottomSheetContext = /*#__PURE__*/createContext(null);
5
+ export const BottomSheetContextProvider = BottomSheetContext.Provider;
6
+ export const useBottomSheetContext = () => {
7
+ const context = useContext(BottomSheetContext);
8
+ if (context === null) {
9
+ throw new Error('`useBottomSheetContext` must be used within `BottomSheet`.');
10
+ }
11
+ return context;
12
+ };
13
+ //# sourceMappingURL=BottomSheetContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","BottomSheetContext","BottomSheetContextProvider","Provider","useBottomSheetContext","context","Error"],"sourceRoot":"../../src","sources":["BottomSheetContext.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAiBjD,MAAMC,kBAAkB,gBAAGF,aAAa,CAAgC,IAAI,CAAC;AAE7E,OAAO,MAAMG,0BAA0B,GAAGD,kBAAkB,CAACE,QAAQ;AAErE,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACzC,MAAMC,OAAO,GAAGL,UAAU,CAACC,kBAAkB,CAAC;EAC9C,IAAII,OAAO,KAAK,IAAI,EAAE;IACpB,MAAM,IAAIC,KAAK,CACb,4DACF,CAAC;EACH;EACA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ import { GestureDetector } from 'react-native-gesture-handler';
4
+ import Animated from 'react-native-reanimated';
5
+ import { useBottomSheetScrollable } from "./useBottomSheetScrollable.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const BottomSheetFlatList = props => {
8
+ const {
9
+ scrollEnabled,
10
+ ...rest
11
+ } = props;
12
+ const {
13
+ scrollHandler,
14
+ scrollableRef,
15
+ nativeGesture,
16
+ animatedProps
17
+ } = useBottomSheetScrollable(scrollEnabled);
18
+ return /*#__PURE__*/_jsx(GestureDetector, {
19
+ gesture: nativeGesture,
20
+ children: /*#__PURE__*/_jsx(Animated.FlatList, {
21
+ ...rest,
22
+ animatedProps: animatedProps,
23
+ ref: scrollableRef,
24
+ onScroll: scrollHandler,
25
+ scrollEventThrottle: 16
26
+ })
27
+ });
28
+ };
29
+ //# sourceMappingURL=BottomSheetFlatList.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext, useEffect, useId, useReducer, useState } from 'react';
4
+ import { StyleSheet, View } from 'react-native';
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ const PortalContext = /*#__PURE__*/createContext(null);
7
+ const PortalHost = () => {
8
+ const context = useContext(PortalContext);
9
+ const [, forceRender] = useReducer(x => x + 1, 0);
10
+ useEffect(() => {
11
+ return context.subscribe(forceRender);
12
+ }, [context]);
13
+ return Array.from(context.getPortals().entries()).map(([key, element]) => /*#__PURE__*/_jsx(View, {
14
+ style: StyleSheet.absoluteFill,
15
+ pointerEvents: "box-none",
16
+ children: element
17
+ }, key));
18
+ };
19
+ export const BottomSheetProvider = ({
20
+ children
21
+ }) => {
22
+ const [context] = useState(() => {
23
+ const portals = new Map();
24
+ const subscribers = new Set();
25
+ const notify = () => {
26
+ subscribers.forEach(subscriber => subscriber());
27
+ };
28
+ return {
29
+ addPortal: (key, element) => {
30
+ portals.set(key, element);
31
+ notify();
32
+ },
33
+ removePortal: key => {
34
+ portals.delete(key);
35
+ notify();
36
+ },
37
+ subscribe: callback => {
38
+ subscribers.add(callback);
39
+ return () => {
40
+ subscribers.delete(callback);
41
+ };
42
+ },
43
+ getPortals: () => portals
44
+ };
45
+ });
46
+ return /*#__PURE__*/_jsxs(PortalContext.Provider, {
47
+ value: context,
48
+ children: [children, /*#__PURE__*/_jsx(PortalHost, {})]
49
+ });
50
+ };
51
+ export const Portal = ({
52
+ children
53
+ }) => {
54
+ const context = useContext(PortalContext);
55
+ if (context === null) {
56
+ throw new Error('`Portal` must be used within `BottomSheetProvider`.');
57
+ }
58
+ const {
59
+ addPortal,
60
+ removePortal
61
+ } = context;
62
+ const id = useId();
63
+ useEffect(() => {
64
+ addPortal(id, children);
65
+ }, [id, children, addPortal]);
66
+ useEffect(() => {
67
+ return () => {
68
+ removePortal(id);
69
+ };
70
+ }, [id, removePortal]);
71
+ return null;
72
+ };
73
+ //# sourceMappingURL=BottomSheetProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","useEffect","useId","useReducer","useState","StyleSheet","View","jsx","_jsx","jsxs","_jsxs","PortalContext","PortalHost","context","forceRender","x","subscribe","Array","from","getPortals","entries","map","key","element","style","absoluteFill","pointerEvents","children","BottomSheetProvider","portals","Map","subscribers","Set","notify","forEach","subscriber","addPortal","set","removePortal","delete","callback","add","Provider","value","Portal","Error","id"],"sourceRoot":"../../src","sources":["BottomSheetProvider.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ import { GestureDetector } from 'react-native-gesture-handler';
4
+ import Animated from 'react-native-reanimated';
5
+ import { useBottomSheetScrollable } from "./useBottomSheetScrollable.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const BottomSheetScrollView = props => {
8
+ const {
9
+ scrollEnabled,
10
+ ...rest
11
+ } = props;
12
+ const {
13
+ scrollHandler,
14
+ scrollableRef,
15
+ nativeGesture,
16
+ animatedProps
17
+ } = useBottomSheetScrollable(scrollEnabled);
18
+ return /*#__PURE__*/_jsx(GestureDetector, {
19
+ gesture: nativeGesture,
20
+ children: /*#__PURE__*/_jsx(Animated.ScrollView, {
21
+ ...rest,
22
+ animatedProps: animatedProps,
23
+ ref: scrollableRef,
24
+ onScroll: scrollHandler,
25
+ scrollEventThrottle: 16
26
+ })
27
+ });
28
+ };
29
+ //# sourceMappingURL=BottomSheetScrollView.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import { BottomSheetBase } from "./BottomSheetBase.js";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export const ModalBottomSheet = ({
6
+ scrim,
7
+ ...props
8
+ }) => /*#__PURE__*/_jsx(BottomSheetBase, {
9
+ ...props,
10
+ modal: true,
11
+ renderScrim: scrim
12
+ });
13
+ //# sourceMappingURL=ModalBottomSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BottomSheetBase","jsx","_jsx","ModalBottomSheet","scrim","props","modal","renderScrim"],"sourceRoot":"../../src","sources":["ModalBottomSheet.tsx"],"mappings":";;AAIA,SAASA,eAAe,QAAQ,sBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMpD,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,KAAK;EACL,GAAGC;AACkB,CAAC,kBACtBH,IAAA,CAACF,eAAe;EAAA,GAAKK,KAAK;EAAEC,KAAK;EAACC,WAAW,EAAEH;AAAM,CAAE,CACxD","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ export { BottomSheet } from "./BottomSheet.js";
4
+ export { ModalBottomSheet } from "./ModalBottomSheet.js";
5
+ export { BottomSheetProvider } from "./BottomSheetProvider.js";
6
+ export { BottomSheetFlatList } from "./BottomSheetFlatList.js";
7
+ export { BottomSheetScrollView } from "./BottomSheetScrollView.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ import { useEffect } from 'react';
4
+ import { Gesture } from 'react-native-gesture-handler';
5
+ import { useAnimatedProps, useAnimatedScrollHandler } from 'react-native-reanimated';
6
+ import { useBottomSheetContext } from "./BottomSheetContext.js";
7
+ export const useBottomSheetScrollable = (baseScrollEnabled = true) => {
8
+ const {
9
+ scrollOffset,
10
+ scrollableRef,
11
+ hasScrollable,
12
+ isScrollableGestureActive,
13
+ isScrollableLocked,
14
+ panGesture
15
+ } = useBottomSheetContext();
16
+ const scrollHandler = useAnimatedScrollHandler({
17
+ onScroll: event => {
18
+ 'worklet';
19
+
20
+ scrollOffset.set(Math.max(0, event.contentOffset.y));
21
+ }
22
+ });
23
+ const nativeGesture = Gesture.Native().simultaneousWithExternalGesture(panGesture).onStart(() => {
24
+ 'worklet';
25
+
26
+ isScrollableGestureActive.set(true);
27
+ }).onFinalize(() => {
28
+ 'worklet';
29
+
30
+ isScrollableGestureActive.set(false);
31
+ });
32
+ const animatedProps = useAnimatedProps(() => {
33
+ const resolvedScrollEnabled = typeof baseScrollEnabled === 'object' && baseScrollEnabled !== null ? baseScrollEnabled.value ?? true : baseScrollEnabled ?? true;
34
+ return {
35
+ scrollEnabled: resolvedScrollEnabled && !isScrollableLocked.value
36
+ };
37
+ });
38
+ useEffect(() => {
39
+ if (__DEV__ && hasScrollable.value) {
40
+ console.warn('Multiple scrollables within a single bottom sheet. Only one `BottomSheetScrollView` ' + 'or `BottomSheetFlatList` is supported per bottom sheet.');
41
+ }
42
+ hasScrollable.set(true);
43
+ return () => {
44
+ hasScrollable.set(false);
45
+ isScrollableGestureActive.set(false);
46
+ isScrollableLocked.set(false);
47
+ };
48
+ }, [hasScrollable, isScrollableGestureActive, isScrollableLocked]);
49
+ return {
50
+ scrollHandler,
51
+ scrollableRef,
52
+ nativeGesture,
53
+ animatedProps
54
+ };
55
+ };
56
+ //# sourceMappingURL=useBottomSheetScrollable.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}