@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.
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/lib/module/BottomSheet.js +8 -0
- package/lib/module/BottomSheet.js.map +1 -0
- package/lib/module/BottomSheetBase.js +309 -0
- package/lib/module/BottomSheetBase.js.map +1 -0
- package/lib/module/BottomSheetContext.js +13 -0
- package/lib/module/BottomSheetContext.js.map +1 -0
- package/lib/module/BottomSheetFlatList.js +29 -0
- package/lib/module/BottomSheetFlatList.js.map +1 -0
- package/lib/module/BottomSheetProvider.js +73 -0
- package/lib/module/BottomSheetProvider.js.map +1 -0
- package/lib/module/BottomSheetScrollView.js +29 -0
- package/lib/module/BottomSheetScrollView.js.map +1 -0
- package/lib/module/ModalBottomSheet.js +13 -0
- package/lib/module/ModalBottomSheet.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/useBottomSheetScrollable.js +56 -0
- package/lib/module/useBottomSheetScrollable.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/BottomSheet.d.ts +4 -0
- package/lib/typescript/src/BottomSheet.d.ts.map +1 -0
- package/lib/typescript/src/BottomSheetBase.d.ts +18 -0
- package/lib/typescript/src/BottomSheetBase.d.ts.map +1 -0
- package/lib/typescript/src/BottomSheetContext.d.ts +17 -0
- package/lib/typescript/src/BottomSheetContext.d.ts.map +1 -0
- package/lib/typescript/src/BottomSheetFlatList.d.ts +3 -0
- package/lib/typescript/src/BottomSheetFlatList.d.ts.map +1 -0
- package/lib/typescript/src/BottomSheetProvider.d.ts +8 -0
- package/lib/typescript/src/BottomSheetProvider.d.ts.map +1 -0
- package/lib/typescript/src/BottomSheetScrollView.d.ts +3 -0
- package/lib/typescript/src/BottomSheetScrollView.d.ts.map +1 -0
- package/lib/typescript/src/ModalBottomSheet.d.ts +8 -0
- package/lib/typescript/src/ModalBottomSheet.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +9 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/useBottomSheetScrollable.d.ts +10 -0
- package/lib/typescript/src/useBottomSheetScrollable.d.ts.map +1 -0
- package/package.json +117 -0
- package/src/BottomSheet.tsx +8 -0
- package/src/BottomSheetBase.tsx +378 -0
- package/src/BottomSheetContext.tsx +30 -0
- package/src/BottomSheetFlatList.tsx +24 -0
- package/src/BottomSheetProvider.tsx +83 -0
- package/src/BottomSheetScrollView.tsx +24 -0
- package/src/ModalBottomSheet.tsx +16 -0
- package/src/index.tsx +8 -0
- 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 @@
|
|
|
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"}
|