@lodev09/react-native-true-sheet 3.3.1 → 3.3.3
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 +11 -8
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +12 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +3 -2
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetDialogObserver.kt +13 -0
- package/ios/TrueSheetContainerView.mm +0 -12
- package/ios/utils/WindowUtil.mm +17 -1
- package/lib/module/TrueSheet.web.js +23 -4
- package/lib/module/TrueSheet.web.js.map +1 -1
- package/lib/module/TrueSheetProvider.web.js +41 -0
- package/lib/module/TrueSheetProvider.web.js.map +1 -1
- package/lib/module/navigation/TrueSheetRouter.js +25 -2
- package/lib/module/navigation/TrueSheetRouter.js.map +1 -1
- package/lib/typescript/src/TrueSheet.types.d.ts +1 -1
- package/lib/typescript/src/TrueSheet.web.d.ts.map +1 -1
- package/lib/typescript/src/TrueSheetProvider.web.d.ts +4 -0
- package/lib/typescript/src/TrueSheetProvider.web.d.ts.map +1 -1
- package/lib/typescript/src/navigation/TrueSheetRouter.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TrueSheet.types.ts +1 -1
- package/src/TrueSheet.web.tsx +26 -5
- package/src/TrueSheetProvider.web.tsx +56 -1
- package/src/navigation/TrueSheetRouter.ts +35 -2
package/README.md
CHANGED
|
@@ -8,16 +8,18 @@
|
|
|
8
8
|
|
|
9
9
|
The true native bottom sheet experience for your React Native Apps. 💩
|
|
10
10
|
|
|
11
|
-
<img alt="React Native True Sheet - IOS" src="docs/static/img/preview-ios.gif"
|
|
11
|
+
<img alt="React Native True Sheet - IOS" src="docs/static/img/preview-ios.gif" height="500" /><img alt="React Native True Sheet - Android" src="docs/static/img/preview-android.gif" height="500" /><img alt="React Native True Sheet - Web" src="docs/static/img/preview-web.gif" height="500" />
|
|
12
12
|
|
|
13
13
|
## Features
|
|
14
14
|
|
|
15
15
|
* ⚡ **Powered by Fabric** - Built on React Native's new architecture for maximum performance
|
|
16
|
-
* 🚀 **Native** - Implemented in the native realm
|
|
17
|
-
* 🎯 **Type-safe** - Full TypeScript support with Codegen-generated native interfaces
|
|
16
|
+
* 🚀 **Fully Native** - Implemented in the native realm, zero JS hacks
|
|
18
17
|
* ♿ **Accessible** - Native accessibility and screen reader support out of the box
|
|
19
|
-
* 🔄 **Flexible API** - Use [imperative methods](https://sheet.lodev09.com/reference/methods#ref-methods) or [lifecycle events](https://sheet.lodev09.com/reference/
|
|
20
|
-
* 🪟 **Liquid Glass** - iOS 26+ Liquid Glass support out of the box
|
|
18
|
+
* 🔄 **Flexible API** - Use [imperative methods](https://sheet.lodev09.com/reference/methods#ref-methods) or [lifecycle events](https://sheet.lodev09.com/reference/events)
|
|
19
|
+
* 🪟 **Liquid Glass** - [iOS 26+ Liquid Glass](https://sheet.lodev09.com/guides/liquid-glass) support out of the box, featured in [Expo Blog](https://expo.dev/blog/how-to-create-apple-maps-style-liquid-glass-sheets)
|
|
20
|
+
* 🐎 **Reanimated** - First-class support for [react-native-reanimated](https://sheet.lodev09.com/guides/reanimated)
|
|
21
|
+
* 🧭 **React Navigation** - Built-in [sheet navigator](https://sheet.lodev09.com/guides/navigation) for seamless navigation integration
|
|
22
|
+
* 🌐 **Web Support** - Full [web support](https://sheet.lodev09.com/guides/web) out of the box
|
|
21
23
|
|
|
22
24
|
## Installation
|
|
23
25
|
|
|
@@ -46,11 +48,12 @@ cd ios && pod install
|
|
|
46
48
|
## Documentation
|
|
47
49
|
|
|
48
50
|
- [Example](example)
|
|
49
|
-
- [
|
|
50
|
-
- [
|
|
51
|
-
- [
|
|
51
|
+
- [Configuration](https://sheet.lodev09.com/reference/configuration)
|
|
52
|
+
- [Lifecycle Events](https://sheet.lodev09.com/reference/events)
|
|
53
|
+
- [React Navigation](https://sheet.lodev09.com/guides/navigation)
|
|
52
54
|
- [Troubleshooting](https://sheet.lodev09.com/troubleshooting)
|
|
53
55
|
- [Testing with Jest](https://sheet.lodev09.com/guides/jest)
|
|
56
|
+
- [Migrating to v3](https://sheet.lodev09.com/migration)
|
|
54
57
|
|
|
55
58
|
## Usage
|
|
56
59
|
|
|
@@ -328,6 +328,18 @@ class TrueSheetView(private val reactContext: ThemedReactContext) :
|
|
|
328
328
|
|
|
329
329
|
@UiThread
|
|
330
330
|
fun dismiss(animated: Boolean = true, promiseCallback: () -> Unit) {
|
|
331
|
+
// iOS-like behavior: calling dismiss on a presenting controller dismisses
|
|
332
|
+
// its presented controller (and everything above it), but NOT itself.
|
|
333
|
+
// See: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss
|
|
334
|
+
val sheetsAbove = TrueSheetDialogObserver.getSheetsAbove(this)
|
|
335
|
+
if (sheetsAbove.isNotEmpty()) {
|
|
336
|
+
for (sheet in sheetsAbove) {
|
|
337
|
+
sheet.viewController.dismiss(animated)
|
|
338
|
+
}
|
|
339
|
+
promiseCallback()
|
|
340
|
+
return
|
|
341
|
+
}
|
|
342
|
+
|
|
331
343
|
viewController.dismissPromise = promiseCallback
|
|
332
344
|
viewController.dismiss(animated)
|
|
333
345
|
}
|
|
@@ -514,9 +514,10 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
|
|
|
514
514
|
|
|
515
515
|
if (!animated) {
|
|
516
516
|
dialog?.window?.setWindowAnimations(0)
|
|
517
|
+
post { dialog?.dismiss() }
|
|
518
|
+
} else {
|
|
519
|
+
dialog?.dismiss()
|
|
517
520
|
}
|
|
518
|
-
|
|
519
|
-
dialog?.dismiss()
|
|
520
521
|
}
|
|
521
522
|
|
|
522
523
|
// ====================================================================
|
|
@@ -54,6 +54,19 @@ object TrueSheetDialogObserver {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Returns all sheets presented on top of the given sheet (children/descendants).
|
|
59
|
+
* Returns them in reverse order (top-most first) for proper dismissal.
|
|
60
|
+
*/
|
|
61
|
+
@JvmStatic
|
|
62
|
+
fun getSheetsAbove(sheetView: TrueSheetView): List<TrueSheetView> {
|
|
63
|
+
synchronized(presentedSheetStack) {
|
|
64
|
+
val index = presentedSheetStack.indexOf(sheetView)
|
|
65
|
+
if (index < 0 || index >= presentedSheetStack.size - 1) return emptyList()
|
|
66
|
+
return presentedSheetStack.subList(index + 1, presentedSheetStack.size).reversed()
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
57
70
|
@JvmStatic
|
|
58
71
|
fun removeSheet(sheetView: TrueSheetView) {
|
|
59
72
|
synchronized(presentedSheetStack) {
|
|
@@ -55,18 +55,6 @@ using namespace facebook::react;
|
|
|
55
55
|
|
|
56
56
|
#pragma mark - Layout
|
|
57
57
|
|
|
58
|
-
- (void)layoutSubviews {
|
|
59
|
-
[super layoutSubviews];
|
|
60
|
-
|
|
61
|
-
// Override Yoga layout to fill parent (controller's view)
|
|
62
|
-
if (self.superview) {
|
|
63
|
-
CGRect parentBounds = self.superview.bounds;
|
|
64
|
-
if (!CGRectEqualToRect(self.frame, parentBounds)) {
|
|
65
|
-
self.frame = parentBounds;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
58
|
- (CGFloat)contentHeight {
|
|
71
59
|
return _contentView ? _contentView.frame.size.height : 0;
|
|
72
60
|
}
|
package/ios/utils/WindowUtil.mm
CHANGED
|
@@ -15,10 +15,13 @@
|
|
|
15
15
|
+ (nullable UIWindow *)keyWindow {
|
|
16
16
|
NSSet<UIScene *> *connectedScenes = [UIApplication sharedApplication].connectedScenes;
|
|
17
17
|
|
|
18
|
+
UIWindow *fallbackWindow = nil;
|
|
19
|
+
|
|
18
20
|
for (UIScene *scene in connectedScenes) {
|
|
19
21
|
if ([scene isKindOfClass:[UIWindowScene class]]) {
|
|
20
22
|
UIWindowScene *windowScene = (UIWindowScene *)scene;
|
|
21
23
|
|
|
24
|
+
// Check for foreground active first (preferred)
|
|
22
25
|
if (windowScene.activationState == UISceneActivationStateForegroundActive) {
|
|
23
26
|
for (UIWindow *window in windowScene.windows) {
|
|
24
27
|
if (window.isKeyWindow) {
|
|
@@ -31,10 +34,23 @@
|
|
|
31
34
|
return windowScene.windows.firstObject;
|
|
32
35
|
}
|
|
33
36
|
}
|
|
37
|
+
|
|
38
|
+
// Store a fallback window for transitional states (e.g., deep link handling from background or cold start)
|
|
39
|
+
if (fallbackWindow == nil && windowScene.windows.count > 0) {
|
|
40
|
+
for (UIWindow *window in windowScene.windows) {
|
|
41
|
+
if (window.isKeyWindow) {
|
|
42
|
+
fallbackWindow = window;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (fallbackWindow == nil) {
|
|
47
|
+
fallbackWindow = windowScene.windows.firstObject;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
34
50
|
}
|
|
35
51
|
}
|
|
36
52
|
|
|
37
|
-
return
|
|
53
|
+
return fallbackWindow;
|
|
38
54
|
}
|
|
39
55
|
|
|
40
56
|
@end
|
|
@@ -142,6 +142,9 @@ export const TrueSheet = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
142
142
|
}
|
|
143
143
|
}, [detents, animatedPosition]);
|
|
144
144
|
const handleDismiss = useCallback(() => {
|
|
145
|
+
// Remove from stack when dismissed
|
|
146
|
+
bottomSheetContext?.removeFromStack(sheetName);
|
|
147
|
+
|
|
145
148
|
// Resolve dismiss promise
|
|
146
149
|
if (dismissResolver.current) {
|
|
147
150
|
dismissResolver.current();
|
|
@@ -155,7 +158,7 @@ export const TrueSheet = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
155
158
|
isMinimized.current = false;
|
|
156
159
|
isDismissing.current = false;
|
|
157
160
|
isDragging.current = false;
|
|
158
|
-
}, []);
|
|
161
|
+
}, [sheetName]);
|
|
159
162
|
const handleAnimate = useCallback((_fromIndex, toIndex) => {
|
|
160
163
|
// Detect drag begin (when not presenting or dismissing)
|
|
161
164
|
if (!isPresenting.current && !isDismissing.current && !isDragging.current && toIndex >= 0) {
|
|
@@ -251,22 +254,38 @@ export const TrueSheet = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
251
254
|
|
|
252
255
|
// For scrollable, we render the child directly
|
|
253
256
|
const ContainerComponent = scrollable ? Fragment : BottomSheetView;
|
|
257
|
+
const dismissInternal = useCallback(() => {
|
|
258
|
+
return new Promise(resolve => {
|
|
259
|
+
dismissResolver.current = resolve;
|
|
260
|
+
isDismissing.current = true;
|
|
261
|
+
modalRef.current?.dismiss();
|
|
262
|
+
});
|
|
263
|
+
}, []);
|
|
254
264
|
const sheetMethodsRef = useRef({
|
|
255
265
|
present: (index = 0) => {
|
|
256
266
|
return new Promise(resolve => {
|
|
257
267
|
presentResolver.current = resolve;
|
|
258
268
|
setSnapIndex(index);
|
|
259
269
|
isPresenting.current = true;
|
|
270
|
+
bottomSheetContext?.pushToStack(sheetName);
|
|
260
271
|
modalRef.current?.present();
|
|
261
272
|
});
|
|
262
273
|
},
|
|
263
274
|
dismiss: () => {
|
|
264
275
|
return new Promise(resolve => {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
276
|
+
// iOS-like behavior: dismiss sheets above, but not itself.
|
|
277
|
+
// See: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss
|
|
278
|
+
const sheetsAbove = bottomSheetContext?.getSheetsAbove(sheetName) ?? [];
|
|
279
|
+
const immediateChild = sheetsAbove[sheetsAbove.length - 1];
|
|
280
|
+
if (immediateChild) {
|
|
281
|
+
// Dismiss the immediate child - gorhom will dismiss all sheets above it
|
|
282
|
+
bottomSheetContext?.dismissDirect(immediateChild).then(resolve);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
dismissInternal().then(resolve);
|
|
268
286
|
});
|
|
269
287
|
},
|
|
288
|
+
dismissDirect: () => dismissInternal(),
|
|
270
289
|
resize: async index => {
|
|
271
290
|
modalRef.current?.snapToIndex(index);
|
|
272
291
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createElement","Fragment","forwardRef","isValidElement","useCallback","useContext","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","View","StyleSheet","useWindowDimensions","BottomSheetBackdrop","BottomSheetFooter","BottomSheetHandle","BottomSheetModal","BottomSheetView","useDerivedValue","useSharedValue","BottomSheetContext","jsx","_jsx","jsxs","_jsxs","DEFAULT_CORNER_RADIUS","DEFAULT_GRABBER_COLOR","DEFAULT_GRABBER_WIDTH","DEFAULT_GRABBER_HEIGHT","renderSlot","slot","TrueSheet","props","ref","name","detents","dismissible","draggable","dimmed","dimmedDetentIndex","children","scrollable","initialDetentIndex","backgroundColor","cornerRadius","grabber","grabberOptions","maxHeight","header","footer","onMount","onWillPresent","onDidPresent","onWillDismiss","onDidDismiss","onDetentChange","onPositionChange","onDragBegin","onDragChange","onDragEnd","onWillFocus","onDidFocus","onWillBlur","onDidBlur","stackBehavior","style","height","windowHeight","defaultName","sheetName","bottomSheetContext","modalRef","initialDetentIndexRef","currentIndexRef","isPresenting","isDismissing","isMinimized","isDragging","presentResolver","dismissResolver","animatedPosition","animatedIndex","snapIndex","setSnapIndex","isMounted","setIsMounted","nativeEvent","position","value","index","detent","realtime","hasAutoDetent","includes","containerHeight","snapPoints","filter","map","Math","min","max","handleChange","_position","_type","previousIndex","current","handleDismiss","handleAnimate","_fromIndex","toIndex","backdropComponent","backdropProps","opacity","appearsOnIndex","disappearsOnIndex","pressBehavior","handleComponent","handleProps","borderRadius","styles","handle","paddingTop","topMargin","indicatorStyle","width","color","footerComponent","footerProps","undefined","ContainerComponent","sheetMethodsRef","present","Promise","resolve","dismiss","resize","snapToIndex","register","unregister","root","borderTopLeftRadius","borderTopRightRadius","animateOnMount","enablePanDownToClose","enableContentPanningGesture","enableHandlePanningGesture","onChange","onAnimate","enableDynamicSizing","maxDynamicContentSize","length","onDismiss","backgroundComponent","create","overflow","top","left","right","zIndex","paddingVertical","pointerEvents"],"sourceRoot":"../../src","sources":["TrueSheet.web.tsx"],"mappings":";;AAAA,SACEA,aAAa,EACbC,QAAQ,EACRC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,KAAK,EACLC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,IAAI,EAAEC,UAAU,EAAEC,mBAAmB,QAAQ,cAAc;AAEpE,SACEC,mBAAmB,EAEnBC,iBAAiB,EAEjBC,iBAAiB,EAEjBC,gBAAgB,EAChBC,eAAe,QAEV,sBAAsB;AAC7B,SAASC,eAAe,EAAEC,cAAc,QAAQ,yBAAyB;AAEzE,SAASC,kBAAkB,QAAQ,4BAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAoB7D,MAAMC,qBAAqB,GAAG,EAAE;AAEhC,MAAMC,qBAAqB,GAAG,oBAAoB;AAClD,MAAMC,qBAAqB,GAAG,EAAE;AAChC,MAAMC,sBAAsB,GAAG,CAAC;AAEhC,MAAMC,UAAU,GAAIC,IAAyD,IAAK;EAChF,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI;EACtB,iBAAI7B,cAAc,CAAC6B,IAAI,CAAC,EAAE,OAAOA,IAAI;EACrC,oBAAOhC,aAAa,CAACgC,IAAI,CAAC;AAC5B,CAAC;AAED,OAAO,MAAMC,SAAS,gBAAG/B,UAAU,CAA+B,CAACgC,KAAK,EAAEC,GAAG,KAAK;EAChF,MAAM;IACJC,IAAI;IACJC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAClBC,WAAW,GAAG,IAAI;IAClBC,SAAS,GAAG,IAAI;IAChBC,MAAM,GAAG,IAAI;IACbC,iBAAiB,GAAG,CAAC;IACrBC,QAAQ;IACRC,UAAU,GAAG,KAAK;IAClBC,kBAAkB,GAAG,CAAC,CAAC;IACvBC,eAAe,GAAG,SAAS;IAC3BC,YAAY,GAAGnB,qBAAqB;IACpCoB,OAAO,GAAG,IAAI;IACdC,cAAc;IACdC,SAAS;IACTC,MAAM;IACNC,MAAM;IACNC,OAAO;IACPC,aAAa;IACbC,YAAY;IACZC,aAAa;IACbC,YAAY;IACZC,cAAc;IACdC,gBAAgB;IAChBC,WAAW;IACXC,YAAY;IACZC,SAAS;IACTC,WAAW;IACXC,UAAU;IACVC,UAAU;IACVC,SAAS;IACTC,aAAa,GAAG,QAAQ;IACxBC;EACF,CAAC,GAAGjC,KAAK;EAET,MAAM;IAAEkC,MAAM,EAAEC;EAAa,CAAC,GAAGvD,mBAAmB,CAAC,CAAC;EACtD,MAAMwD,WAAW,GAAG/D,KAAK,CAAC,CAAC;EAC3B,MAAMgE,SAAS,GAAGnC,IAAI,IAAIkC,WAAW;EACrC,MAAME,kBAAkB,GAAGnE,UAAU,CAACiB,kBAAkB,CAAC;EACzD,MAAMmD,QAAQ,GAAG/D,MAAM,CAAmB,IAAI,CAAC;EAC/C,MAAMgE,qBAAqB,GAAGhE,MAAM,CAACkC,kBAAkB,CAAC;EACxD,MAAM+B,eAAe,GAAGjE,MAAM,CAAC,CAAC,CAAC;EACjC,MAAMkE,YAAY,GAAGlE,MAAM,CAAC,KAAK,CAAC;EAClC,MAAMmE,YAAY,GAAGnE,MAAM,CAAC,KAAK,CAAC;EAClC,MAAMoE,WAAW,GAAGpE,MAAM,CAAC,KAAK,CAAC;EACjC,MAAMqE,UAAU,GAAGrE,MAAM,CAAC,KAAK,CAAC;EAEhC,MAAMsE,eAAe,GAAGtE,MAAM,CAAsB,IAAI,CAAC;EACzD,MAAMuE,eAAe,GAAGvE,MAAM,CAAsB,IAAI,CAAC;EAEzD,MAAMwE,gBAAgB,GAAG7D,cAAc,CAACgD,YAAY,CAAC;EACrD,MAAMc,aAAa,GAAG9D,cAAc,CAAC,CAAC,CAAC;EAEvC,MAAM,CAAC+D,SAAS,EAAEC,YAAY,CAAC,GAAG1E,QAAQ,CAACiC,kBAAkB,CAAC;EAC9D,MAAM,CAAC0C,SAAS,EAAEC,YAAY,CAAC,GAAG5E,QAAQ,CAAC,KAAK,CAAC;EAEjDS,eAAe,CAAC,MAAM;IACpBsC,gBAAgB,GAAG;MACjB8B,WAAW,EAAE;QACXC,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;QAChCC,KAAK,EAAER,aAAa,CAACO,KAAK;QAC1BE,MAAM,EAAEvD,OAAO,CAAC8C,aAAa,CAACO,KAAK,CAAC,IAAI,CAAC;QACzCG,QAAQ,EAAE;MACZ;IACF,CAAwB,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMC,aAAa,GAAGzD,OAAO,CAAC0D,QAAQ,CAAC,MAAM,CAAC;EAE9C,MAAMC,eAAe,GAAG/C,SAAS,IAAIoB,YAAY;EACjD,MAAM4B,UAAU,GAAGxF,OAAO,CACxB,MACE4B,OAAO,CACJ6D,MAAM,CAAEN,MAAM,IAAuBA,MAAM,KAAK,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,CAAC,CACrFO,GAAG,CAAEP,MAAM,IAAKQ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAEV,MAAM,CAAC,CAAC,GAAGI,eAAe,CAAC,EAC1E,CAAC3D,OAAO,EAAE2D,eAAe,CAC3B,CAAC;EAED,MAAMO,YAAY,GAAGnG,WAAW,CAC9B,CAACuF,KAAa,EAAEa,SAAiB,EAAEC,KAAsB,KAAK;IAC5D,MAAMC,aAAa,GAAG/B,eAAe,CAACgC,OAAO;IAC7ChC,eAAe,CAACgC,OAAO,GAAGhB,KAAK;;IAE/B;IACA,IAAIZ,UAAU,CAAC4B,OAAO,IAAI,CAAC/B,YAAY,CAAC+B,OAAO,EAAE;MAC/C5B,UAAU,CAAC4B,OAAO,GAAG,KAAK;MAC1B9C,SAAS,GAAG;QACV2B,WAAW,EAAE;UACXG,KAAK;UACLF,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAACsD,KAAK,CAAC,IAAI;QAC5B;MACF,CAAiB,CAAC;IACpB;IAEA,IAAI,CAACf,YAAY,CAAC+B,OAAO,IAAI,CAAC7B,WAAW,CAAC6B,OAAO,IAAID,aAAa,KAAKf,KAAK,IAAIA,KAAK,IAAI,CAAC,EAAE;MAC1FlC,cAAc,GAAG;QACf+B,WAAW,EAAE;UACXG,KAAK;UACLF,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAACsD,KAAK,CAAC,IAAI;QAC5B;MACF,CAAsB,CAAC;IACzB;IAEA,IAAIf,YAAY,CAAC+B,OAAO,EAAE;MACxB/B,YAAY,CAAC+B,OAAO,GAAG,KAAK;;MAE5B;MACA,IAAI3B,eAAe,CAAC2B,OAAO,EAAE;QAC3B3B,eAAe,CAAC2B,OAAO,CAAC,CAAC;QACzB3B,eAAe,CAAC2B,OAAO,GAAG,IAAI;MAChC;MAEArD,YAAY,GAAG;QACbkC,WAAW,EAAE;UACXG,KAAK;UACLF,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAACsD,KAAK,CAAC,IAAI;QAC5B;MACF,CAAoB,CAAC;MAErB5B,UAAU,GAAG;QAAEyB,WAAW,EAAE;MAAK,CAAkB,CAAC;IACtD;;IAEA;IACA,IAAIV,WAAW,CAAC6B,OAAO,IAAIhB,KAAK,KAAK,CAAC,CAAC,EAAE;MACvC1B,SAAS,GAAG;QAAEuB,WAAW,EAAE;MAAK,CAAiB,CAAC;IACpD;;IAEA;IACA,IAAIV,WAAW,CAAC6B,OAAO,IAAIhB,KAAK,IAAI,CAAC,EAAE;MACrCb,WAAW,CAAC6B,OAAO,GAAG,KAAK;MAC3B5C,UAAU,GAAG;QAAEyB,WAAW,EAAE;MAAK,CAAkB,CAAC;IACtD;EACF,CAAC,EACD,CAACnD,OAAO,EAAE6C,gBAAgB,CAC5B,CAAC;EAED,MAAM0B,aAAa,GAAGxG,WAAW,CAAC,MAAM;IACtC;IACA,IAAI6E,eAAe,CAAC0B,OAAO,EAAE;MAC3B1B,eAAe,CAAC0B,OAAO,CAAC,CAAC;MACzB1B,eAAe,CAAC0B,OAAO,GAAG,IAAI;IAChC;IAEAnD,YAAY,GAAG;MAAEgC,WAAW,EAAE;IAAK,CAAoB,CAAC;;IAExD;IACAV,WAAW,CAAC6B,OAAO,GAAG,KAAK;IAC3B9B,YAAY,CAAC8B,OAAO,GAAG,KAAK;IAC5B5B,UAAU,CAAC4B,OAAO,GAAG,KAAK;EAC5B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,aAAa,GAAGzG,WAAW,CAC/B,CAAC0G,UAAkB,EAAEC,OAAe,KAAK;IACvC;IACA,IAAI,CAACnC,YAAY,CAAC+B,OAAO,IAAI,CAAC9B,YAAY,CAAC8B,OAAO,IAAI,CAAC5B,UAAU,CAAC4B,OAAO,IAAII,OAAO,IAAI,CAAC,EAAE;MACzFhC,UAAU,CAAC4B,OAAO,GAAG,IAAI;MACzBhD,WAAW,GAAG;QACZ6B,WAAW,EAAE;UACXG,KAAK,EAAEhB,eAAe,CAACgC,OAAO;UAC9BlB,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAACsC,eAAe,CAACgC,OAAO,CAAC,IAAI;QAC9C;MACF,CAAmB,CAAC;IACtB;;IAEA;IACA,IAAI5B,UAAU,CAAC4B,OAAO,IAAII,OAAO,IAAI,CAAC,EAAE;MACtCnD,YAAY,GAAG;QACb4B,WAAW,EAAE;UACXG,KAAK,EAAEoB,OAAO;UACdtB,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAAC0E,OAAO,CAAC,IAAI;QAC9B;MACF,CAAoB,CAAC;IACvB;IAEA,IAAInC,YAAY,CAAC+B,OAAO,EAAE;MACxBtD,aAAa,GAAG;QACdmC,WAAW,EAAE;UACXG,KAAK,EAAEoB,OAAO;UACdtB,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAAC0E,OAAO,CAAC,IAAI;QAC9B;MACF,CAAqB,CAAC;;MAEtB;MACAjD,WAAW,GAAG;QAAE0B,WAAW,EAAE;MAAK,CAAmB,CAAC;IACxD;;IAEA;IACA,IAAIV,WAAW,CAAC6B,OAAO,IAAII,OAAO,IAAI,CAAC,EAAE;MACvCjD,WAAW,GAAG;QAAE0B,WAAW,EAAE;MAAK,CAAmB,CAAC;IACxD;IAEA,IAAIuB,OAAO,KAAK,CAAC,CAAC,IAAI,CAACnC,YAAY,CAAC+B,OAAO,EAAE;MAC3C;MACA7B,WAAW,CAAC6B,OAAO,GAAG,IAAI;MAC1B3C,UAAU,GAAG;QAAEwB,WAAW,EAAE;MAAK,CAAkB,CAAC;MAEpD,IAAIX,YAAY,CAAC8B,OAAO,EAAE;QACxBpD,aAAa,GAAG;UAAEiC,WAAW,EAAE;QAAK,CAAqB,CAAC;MAC5D;IACF;EACF,CAAC,EACD,CAACnD,OAAO,EAAE6C,gBAAgB,CAC5B,CAAC;EAED,MAAM8B,iBAAiB,GAAG5G,WAAW,CAClC6G,aAAuC,IAAK;IAC3C,IAAI,CAACzE,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IACA,oBACEhB,IAAA,CAACT,mBAAmB;MAAA,GACdkG,aAAa;MACjBC,OAAO,EAAE,GAAI;MACbC,cAAc,EAAE1E,iBAAkB;MAClC2E,iBAAiB,EAAE3E,iBAAiB,GAAG,CAAE;MACzC4E,aAAa,EAAE/E,WAAW,GAAG,OAAO,GAAG;IAAO,CAC/C,CAAC;EAEN,CAAC,EACD,CAACE,MAAM,EAAEC,iBAAiB,EAAEH,WAAW,CACzC,CAAC;EAED,MAAMgF,eAAe,GAAGlH,WAAW,CAChCmH,WAAmC,IAAK;IACvC,IAAI,CAACxE,OAAO,EAAE;MACZ,OAAO,IAAI;IACb;IAEA,MAAMqB,MAAM,GAAGpB,cAAc,EAAEoB,MAAM,IAAItC,sBAAsB;IAC/D,MAAM0F,YAAY,GAAGxE,cAAc,EAAEF,YAAY,IAAIsB,MAAM,GAAG,CAAC;IAE/D,oBACE5C,IAAA,CAACP,iBAAiB;MAAA,GACZsG,WAAW;MACfpD,KAAK,EAAE,CAACsD,MAAM,CAACC,MAAM,EAAE;QAAEC,UAAU,EAAE3E,cAAc,EAAE4E;MAAU,CAAC,CAAE;MAClEC,cAAc,EAAE;QACdzD,MAAM;QACNoD,YAAY;QACZM,KAAK,EAAE9E,cAAc,EAAE8E,KAAK,IAAIjG,qBAAqB;QACrDgB,eAAe,EAAEG,cAAc,EAAE+E,KAAK,IAAInG;MAC5C;IAAE,CACH,CAAC;EAEN,CAAC,EACD,CAACmB,OAAO,EAAEC,cAAc,CAC1B,CAAC;EAED,MAAMgF,eAAe,GAAGvH,OAAO,CAC7B,MACE0C,MAAM,GACD8E,WAAmC,iBAClCzG,IAAA,CAACR,iBAAiB;IAAA,GAAKiH,WAAW;IAAAvF,QAAA,EAAGX,UAAU,CAACoB,MAAM;EAAC,CAAoB,CAC5E,GACD+E,SAAS,EACf,CAAC/E,MAAM,CACT,CAAC;;EAED;EACA,MAAMgF,kBAAkB,GAAGxF,UAAU,GAAG1C,QAAQ,GAAGkB,eAAe;EAElE,MAAMiH,eAAe,GAAG1H,MAAM,CAAe;IAC3C2H,OAAO,EAAEA,CAAC1C,KAAK,GAAG,CAAC,KAAK;MACtB,OAAO,IAAI2C,OAAO,CAAQC,OAAO,IAAK;QACpCvD,eAAe,CAAC2B,OAAO,GAAG4B,OAAO;QACjClD,YAAY,CAACM,KAAK,CAAC;QACnBf,YAAY,CAAC+B,OAAO,GAAG,IAAI;QAC3BlC,QAAQ,CAACkC,OAAO,EAAE0B,OAAO,CAAC,CAAC;MAC7B,CAAC,CAAC;IACJ,CAAC;IACDG,OAAO,EAAEA,CAAA,KAAM;MACb,OAAO,IAAIF,OAAO,CAAQC,OAAO,IAAK;QACpCtD,eAAe,CAAC0B,OAAO,GAAG4B,OAAO;QACjC1D,YAAY,CAAC8B,OAAO,GAAG,IAAI;QAC3BlC,QAAQ,CAACkC,OAAO,EAAE6B,OAAO,CAAC,CAAC;MAC7B,CAAC,CAAC;IACJ,CAAC;IACDC,MAAM,EAAE,MAAO9C,KAAa,IAAK;MAC/BlB,QAAQ,CAACkC,OAAO,EAAE+B,WAAW,CAAC/C,KAAK,CAAC;IACtC;EACF,CAAC,CAAC;EAEFnF,mBAAmB,CAAC2B,GAAG,EAAE,MAAMiG,eAAe,CAACzB,OAAO,CAAC;;EAEvD;EACArG,SAAS,CAAC,MAAM;IACdkE,kBAAkB,EAAEmE,QAAQ,CAACpE,SAAS,EAAE6D,eAAe,CAAC;IACxD,OAAO,MAAM;MACX5D,kBAAkB,EAAEoE,UAAU,CAACrE,SAAS,CAAC;IAC3C,CAAC;EACH,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;;EAEf;EACAjE,SAAS,CAAC,MAAM;IACd,IAAIoE,qBAAqB,CAACiC,OAAO,IAAI,CAAC,EAAE;MACtCyB,eAAe,CAACzB,OAAO,CAAC0B,OAAO,CAAC3D,qBAAqB,CAACiC,OAAO,CAAC;IAChE;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;EACArG,SAAS,CAAC,MAAM;IACd,IAAI,CAACgF,SAAS,EAAE;MACdC,YAAY,CAAC,IAAI,CAAC;MAClBnC,OAAO,GAAG;QAAEoC,WAAW,EAAE;MAAK,CAAe,CAAC;IAChD;EACF,CAAC,EAAE,CAACF,SAAS,EAAElC,OAAO,CAAC,CAAC;EAExB,oBACE5B,IAAA,CAACN,gBAAgB;IACfiB,GAAG,EAAEsC,QAAS;IACdrC,IAAI,EAAEmC,SAAU;IAChBJ,KAAK,EAAE,CACLsD,MAAM,CAACoB,IAAI,EACX;MAAEhG,eAAe;MAAEiG,mBAAmB,EAAEhG,YAAY;MAAEiG,oBAAoB,EAAEjG;IAAa,CAAC,CAC1F;IACF6C,KAAK,EAAEP,SAAU;IACjB4D,cAAc;IACdC,oBAAoB,EAAE3G,WAAY;IAClC4G,2BAA2B,EAAE3G,SAAU;IACvC4G,0BAA0B,EAAE5G,SAAU;IACtC2C,gBAAgB,EAAEA,gBAAiB;IACnCC,aAAa,EAAEA,aAAc;IAC7BmC,eAAe,EAAEA,eAAgB;IACjC8B,QAAQ,EAAE7C,YAAa;IACvB8C,SAAS,EAAExC,aAAc;IACzByC,mBAAmB,EAAExD,aAAc;IACnCyD,qBAAqB,EAAEtG,SAAU;IACjCgD,UAAU,EAAEA,UAAU,CAACuD,MAAM,GAAG,CAAC,GAAGvD,UAAU,GAAGiC,SAAU;IAC3DuB,SAAS,EAAE7C,aAAc;IACzB1C,aAAa,EAAEA,aAAc;IAC7B8C,iBAAiB,EAAEA,iBAAkB;IACrC0C,mBAAmB,EAAE,IAAK;IAC1B1B,eAAe,EAAEA,eAAgB;IAAAtF,QAAA,eAEjChB,KAAA,CAACyG,kBAAkB;MAAAzF,QAAA,GAChBX,UAAU,CAACmB,MAAM,CAAC,EAClBP,UAAU,GAAGD,QAAQ,gBAAGlB,IAAA,CAACZ,IAAI;QAACuD,KAAK,EAAEA,KAAM;QAAAzB,QAAA,EAAEA;MAAQ,CAAO,CAAC;IAAA,CAC5C;EAAC,CACL,CAAC;AAEvB,CAAC,CAAC;AAEF,MAAM+E,MAAM,GAAG5G,UAAU,CAAC8I,MAAM,CAAC;EAC/Bd,IAAI,EAAE;IACJe,QAAQ,EAAE;EACZ,CAAC;EACDlC,MAAM,EAAE;IACNjC,QAAQ,EAAE,UAAU;IACpBoE,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,GAAG;IACXC,eAAe,EAAE,EAAE;IACnBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createElement","Fragment","forwardRef","isValidElement","useCallback","useContext","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","View","StyleSheet","useWindowDimensions","BottomSheetBackdrop","BottomSheetFooter","BottomSheetHandle","BottomSheetModal","BottomSheetView","useDerivedValue","useSharedValue","BottomSheetContext","jsx","_jsx","jsxs","_jsxs","DEFAULT_CORNER_RADIUS","DEFAULT_GRABBER_COLOR","DEFAULT_GRABBER_WIDTH","DEFAULT_GRABBER_HEIGHT","renderSlot","slot","TrueSheet","props","ref","name","detents","dismissible","draggable","dimmed","dimmedDetentIndex","children","scrollable","initialDetentIndex","backgroundColor","cornerRadius","grabber","grabberOptions","maxHeight","header","footer","onMount","onWillPresent","onDidPresent","onWillDismiss","onDidDismiss","onDetentChange","onPositionChange","onDragBegin","onDragChange","onDragEnd","onWillFocus","onDidFocus","onWillBlur","onDidBlur","stackBehavior","style","height","windowHeight","defaultName","sheetName","bottomSheetContext","modalRef","initialDetentIndexRef","currentIndexRef","isPresenting","isDismissing","isMinimized","isDragging","presentResolver","dismissResolver","animatedPosition","animatedIndex","snapIndex","setSnapIndex","isMounted","setIsMounted","nativeEvent","position","value","index","detent","realtime","hasAutoDetent","includes","containerHeight","snapPoints","filter","map","Math","min","max","handleChange","_position","_type","previousIndex","current","handleDismiss","removeFromStack","handleAnimate","_fromIndex","toIndex","backdropComponent","backdropProps","opacity","appearsOnIndex","disappearsOnIndex","pressBehavior","handleComponent","handleProps","borderRadius","styles","handle","paddingTop","topMargin","indicatorStyle","width","color","footerComponent","footerProps","undefined","ContainerComponent","dismissInternal","Promise","resolve","dismiss","sheetMethodsRef","present","pushToStack","sheetsAbove","getSheetsAbove","immediateChild","length","dismissDirect","then","resize","snapToIndex","register","unregister","root","borderTopLeftRadius","borderTopRightRadius","animateOnMount","enablePanDownToClose","enableContentPanningGesture","enableHandlePanningGesture","onChange","onAnimate","enableDynamicSizing","maxDynamicContentSize","onDismiss","backgroundComponent","create","overflow","top","left","right","zIndex","paddingVertical","pointerEvents"],"sourceRoot":"../../src","sources":["TrueSheet.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,12 +12,36 @@ export function TrueSheetProvider({
|
|
|
12
12
|
children
|
|
13
13
|
}) {
|
|
14
14
|
const sheetsRef = useRef(new Map());
|
|
15
|
+
const presentedStackRef = useRef([]);
|
|
15
16
|
const register = (name, methods) => {
|
|
16
17
|
sheetsRef.current.set(name, methods);
|
|
17
18
|
};
|
|
18
19
|
const unregister = name => {
|
|
19
20
|
sheetsRef.current.delete(name);
|
|
20
21
|
};
|
|
22
|
+
const pushToStack = name => {
|
|
23
|
+
const index = presentedStackRef.current.indexOf(name);
|
|
24
|
+
if (index >= 0) {
|
|
25
|
+
presentedStackRef.current.splice(index, 1);
|
|
26
|
+
}
|
|
27
|
+
presentedStackRef.current.push(name);
|
|
28
|
+
};
|
|
29
|
+
const removeFromStack = name => {
|
|
30
|
+
const index = presentedStackRef.current.indexOf(name);
|
|
31
|
+
if (index >= 0) {
|
|
32
|
+
presentedStackRef.current.splice(index, 1);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns all sheets presented on top of the given sheet.
|
|
38
|
+
* Returns them in reverse order (top-most first) for proper dismissal.
|
|
39
|
+
*/
|
|
40
|
+
const getSheetsAbove = name => {
|
|
41
|
+
const index = presentedStackRef.current.indexOf(name);
|
|
42
|
+
if (index < 0 || index >= presentedStackRef.current.length - 1) return [];
|
|
43
|
+
return presentedStackRef.current.slice(index + 1).reverse();
|
|
44
|
+
};
|
|
21
45
|
const present = async (name, index = 0) => {
|
|
22
46
|
const sheet = sheetsRef.current.get(name);
|
|
23
47
|
if (!sheet?.current) {
|
|
@@ -34,6 +58,19 @@ export function TrueSheetProvider({
|
|
|
34
58
|
}
|
|
35
59
|
return sheet.current.dismiss();
|
|
36
60
|
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Dismisses a sheet directly without checking for sheets above.
|
|
64
|
+
* Used internally when batch-dismissing stacked sheets.
|
|
65
|
+
*/
|
|
66
|
+
const dismissDirect = async name => {
|
|
67
|
+
const sheet = sheetsRef.current.get(name);
|
|
68
|
+
if (!sheet?.current) {
|
|
69
|
+
console.warn(`TrueSheet: Could not find sheet with name "${name}"`);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
return sheet.current.dismissDirect?.();
|
|
73
|
+
};
|
|
37
74
|
const resize = async (name, index) => {
|
|
38
75
|
const sheet = sheetsRef.current.get(name);
|
|
39
76
|
if (!sheet?.current) {
|
|
@@ -46,6 +83,10 @@ export function TrueSheetProvider({
|
|
|
46
83
|
value: {
|
|
47
84
|
register,
|
|
48
85
|
unregister,
|
|
86
|
+
pushToStack,
|
|
87
|
+
removeFromStack,
|
|
88
|
+
getSheetsAbove,
|
|
89
|
+
dismissDirect,
|
|
49
90
|
present,
|
|
50
91
|
dismiss,
|
|
51
92
|
resize
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","useRef","BottomSheetModalProvider","jsx","_jsx","BottomSheetContext","TrueSheetProvider","children","sheetsRef","Map","register","name","methods","current","set","unregister","delete","
|
|
1
|
+
{"version":3,"names":["createContext","useContext","useRef","BottomSheetModalProvider","jsx","_jsx","BottomSheetContext","TrueSheetProvider","children","sheetsRef","Map","presentedStackRef","register","name","methods","current","set","unregister","delete","pushToStack","index","indexOf","splice","push","removeFromStack","getSheetsAbove","length","slice","reverse","present","sheet","get","console","warn","dismiss","dismissDirect","resize","Provider","value","useTrueSheet","context","Error"],"sourceRoot":"../../src","sources":["TrueSheetProvider.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,6 +15,25 @@ export const TrueSheetActions = {
|
|
|
15
15
|
type: 'REMOVE'
|
|
16
16
|
})
|
|
17
17
|
};
|
|
18
|
+
const ensureBaseRoute = (state, baseRouteName, routeParamList) => {
|
|
19
|
+
if (!baseRouteName) {
|
|
20
|
+
return state;
|
|
21
|
+
}
|
|
22
|
+
const hasBaseRoute = state.routes.some(r => r.name === baseRouteName);
|
|
23
|
+
if (!hasBaseRoute) {
|
|
24
|
+
const baseRoute = {
|
|
25
|
+
key: `${baseRouteName}-${nanoid()}`,
|
|
26
|
+
name: baseRouteName,
|
|
27
|
+
params: routeParamList?.[baseRouteName]
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
...state,
|
|
31
|
+
index: state.routes.length,
|
|
32
|
+
routes: [baseRoute, ...state.routes]
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return state;
|
|
36
|
+
};
|
|
18
37
|
export const TrueSheetRouter = routerOptions => {
|
|
19
38
|
const baseRouter = StackRouter(routerOptions);
|
|
20
39
|
return {
|
|
@@ -22,8 +41,10 @@ export const TrueSheetRouter = routerOptions => {
|
|
|
22
41
|
type: 'true-sheet',
|
|
23
42
|
getInitialState(options) {
|
|
24
43
|
const state = baseRouter.getInitialState(options);
|
|
44
|
+
const baseRouteName = routerOptions.initialRouteName ?? options.routeNames[0];
|
|
45
|
+
const stateWithBaseRoute = ensureBaseRoute(state, baseRouteName, options.routeParamList);
|
|
25
46
|
return {
|
|
26
|
-
...
|
|
47
|
+
...stateWithBaseRoute,
|
|
27
48
|
stale: false,
|
|
28
49
|
type: 'true-sheet',
|
|
29
50
|
key: `true-sheet-${nanoid()}`
|
|
@@ -101,8 +122,10 @@ export const TrueSheetRouter = routerOptions => {
|
|
|
101
122
|
routeParamList,
|
|
102
123
|
routeGetIdList
|
|
103
124
|
});
|
|
125
|
+
const baseRouteName = routerOptions.initialRouteName ?? routeNames[0];
|
|
126
|
+
const stateWithBaseRoute = ensureBaseRoute(state, baseRouteName, routeParamList);
|
|
104
127
|
return {
|
|
105
|
-
...
|
|
128
|
+
...stateWithBaseRoute,
|
|
106
129
|
type: 'true-sheet',
|
|
107
130
|
key: `true-sheet-${nanoid()}`
|
|
108
131
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nanoid","StackRouter","StackActions","TrueSheetActions","resize","index","type","dismiss","remove","TrueSheetRouter","routerOptions","baseRouter","getInitialState","options","
|
|
1
|
+
{"version":3,"names":["nanoid","StackRouter","StackActions","TrueSheetActions","resize","index","type","dismiss","remove","ensureBaseRoute","state","baseRouteName","routeParamList","hasBaseRoute","routes","some","r","name","baseRoute","key","params","length","TrueSheetRouter","routerOptions","baseRouter","getInitialState","options","initialRouteName","routeNames","stateWithBaseRoute","stale","getStateForAction","action","routeIndex","target","source","findIndex","map","route","i","resizeIndex","resizeKey","closing","routeKey","filter","_","Math","min","getRehydratedState","partialState","routeGetIdList","actionCreators"],"sourceRoot":"../../../src","sources":["navigation/TrueSheetRouter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -47,7 +47,7 @@ export interface TrueSheetRef {
|
|
|
47
47
|
*/
|
|
48
48
|
present: (index?: number, animated?: boolean) => Promise<void>;
|
|
49
49
|
/**
|
|
50
|
-
* Dismiss the sheet.
|
|
50
|
+
* Dismiss the sheet. If other sheets are presented on top, dismisses them instead.
|
|
51
51
|
* @param animated - Whether to animate the dismissal (default: true)
|
|
52
52
|
*/
|
|
53
53
|
dismiss: (animated?: boolean) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrueSheet.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.web.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAeb,MAAM,mBAAmB,CAAC;AAc3B,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"TrueSheet.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.web.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAeb,MAAM,mBAAmB,CAAC;AAc3B,eAAO,MAAM,SAAS,yGA+WpB,CAAC"}
|
|
@@ -3,6 +3,10 @@ import type { TrueSheetContextMethods, TrueSheetRef } from './TrueSheet.types';
|
|
|
3
3
|
interface BottomSheetContextValue extends TrueSheetContextMethods {
|
|
4
4
|
register: (name: string, methods: RefObject<TrueSheetRef>) => void;
|
|
5
5
|
unregister: (name: string) => void;
|
|
6
|
+
pushToStack: (name: string) => void;
|
|
7
|
+
removeFromStack: (name: string) => void;
|
|
8
|
+
getSheetsAbove: (name: string) => string[];
|
|
9
|
+
dismissDirect: (name: string) => Promise<void>;
|
|
6
10
|
}
|
|
7
11
|
export declare const BottomSheetContext: import("react").Context<BottomSheetContextValue | null>;
|
|
8
12
|
export interface TrueSheetProviderProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrueSheetProvider.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheetProvider.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/E,UAAU,uBAAwB,SAAQ,uBAAuB;IAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"TrueSheetProvider.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheetProvider.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/E,UAAU,uBAAwB,SAAQ,uBAAuB;IAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAC3C,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,eAAO,MAAM,kBAAkB,yDAAsD,CAAC;AAEtF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA8FrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,uBAAuB,CAYtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrueSheetRouter.d.ts","sourceRoot":"","sources":["../../../../src/navigation/TrueSheetRouter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,MAAM,EAEX,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,UAAU,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC,GACvC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,eAAO,MAAM,gBAAgB;oBAEX,MAAM,KAAG,mBAAmB;mBAC/B,mBAAmB;kBACpB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"TrueSheetRouter.d.ts","sourceRoot":"","sources":["../../../../src/navigation/TrueSheetRouter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,MAAM,EAEX,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,UAAU,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC,GACvC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,eAAO,MAAM,gBAAgB;oBAEX,MAAM,KAAG,mBAAmB;mBAC/B,mBAAmB;kBACpB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;aA+FvB,CAAJ;;;;;;;;;CA9FL,CAAC;AA8BF,eAAO,MAAM,eAAe,GAC1B,eAAe,kBAAkB,KAChC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE,mBAAmB,CA8HrE,CAAC"}
|
package/package.json
CHANGED
package/src/TrueSheet.types.ts
CHANGED
|
@@ -51,7 +51,7 @@ export interface TrueSheetRef {
|
|
|
51
51
|
*/
|
|
52
52
|
present: (index?: number, animated?: boolean) => Promise<void>;
|
|
53
53
|
/**
|
|
54
|
-
* Dismiss the sheet.
|
|
54
|
+
* Dismiss the sheet. If other sheets are presented on top, dismisses them instead.
|
|
55
55
|
* @param animated - Whether to animate the dismissal (default: true)
|
|
56
56
|
*/
|
|
57
57
|
dismiss: (animated?: boolean) => Promise<void>;
|
package/src/TrueSheet.web.tsx
CHANGED
|
@@ -200,6 +200,9 @@ export const TrueSheet = forwardRef<TrueSheetRef, TrueSheetProps>((props, ref) =
|
|
|
200
200
|
);
|
|
201
201
|
|
|
202
202
|
const handleDismiss = useCallback(() => {
|
|
203
|
+
// Remove from stack when dismissed
|
|
204
|
+
bottomSheetContext?.removeFromStack(sheetName);
|
|
205
|
+
|
|
203
206
|
// Resolve dismiss promise
|
|
204
207
|
if (dismissResolver.current) {
|
|
205
208
|
dismissResolver.current();
|
|
@@ -212,7 +215,7 @@ export const TrueSheet = forwardRef<TrueSheetRef, TrueSheetProps>((props, ref) =
|
|
|
212
215
|
isMinimized.current = false;
|
|
213
216
|
isDismissing.current = false;
|
|
214
217
|
isDragging.current = false;
|
|
215
|
-
}, []);
|
|
218
|
+
}, [sheetName]);
|
|
216
219
|
|
|
217
220
|
const handleAnimate = useCallback(
|
|
218
221
|
(_fromIndex: number, toIndex: number) => {
|
|
@@ -326,22 +329,40 @@ export const TrueSheet = forwardRef<TrueSheetRef, TrueSheetProps>((props, ref) =
|
|
|
326
329
|
// For scrollable, we render the child directly
|
|
327
330
|
const ContainerComponent = scrollable ? Fragment : BottomSheetView;
|
|
328
331
|
|
|
329
|
-
const
|
|
332
|
+
const dismissInternal = useCallback(() => {
|
|
333
|
+
return new Promise<void>((resolve) => {
|
|
334
|
+
dismissResolver.current = resolve;
|
|
335
|
+
isDismissing.current = true;
|
|
336
|
+
modalRef.current?.dismiss();
|
|
337
|
+
});
|
|
338
|
+
}, []);
|
|
339
|
+
|
|
340
|
+
const sheetMethodsRef = useRef<TrueSheetRef & { dismissDirect?: () => Promise<void> }>({
|
|
330
341
|
present: (index = 0) => {
|
|
331
342
|
return new Promise<void>((resolve) => {
|
|
332
343
|
presentResolver.current = resolve;
|
|
333
344
|
setSnapIndex(index);
|
|
334
345
|
isPresenting.current = true;
|
|
346
|
+
bottomSheetContext?.pushToStack(sheetName);
|
|
335
347
|
modalRef.current?.present();
|
|
336
348
|
});
|
|
337
349
|
},
|
|
338
350
|
dismiss: () => {
|
|
339
351
|
return new Promise<void>((resolve) => {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
352
|
+
// iOS-like behavior: dismiss sheets above, but not itself.
|
|
353
|
+
// See: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss
|
|
354
|
+
const sheetsAbove = bottomSheetContext?.getSheetsAbove(sheetName) ?? [];
|
|
355
|
+
const immediateChild = sheetsAbove[sheetsAbove.length - 1];
|
|
356
|
+
if (immediateChild) {
|
|
357
|
+
// Dismiss the immediate child - gorhom will dismiss all sheets above it
|
|
358
|
+
bottomSheetContext?.dismissDirect(immediateChild).then(resolve);
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
dismissInternal().then(resolve);
|
|
343
363
|
});
|
|
344
364
|
},
|
|
365
|
+
dismissDirect: () => dismissInternal(),
|
|
345
366
|
resize: async (index: number) => {
|
|
346
367
|
modalRef.current?.snapToIndex(index);
|
|
347
368
|
},
|
|
@@ -5,6 +5,10 @@ import type { TrueSheetContextMethods, TrueSheetRef } from './TrueSheet.types';
|
|
|
5
5
|
interface BottomSheetContextValue extends TrueSheetContextMethods {
|
|
6
6
|
register: (name: string, methods: RefObject<TrueSheetRef>) => void;
|
|
7
7
|
unregister: (name: string) => void;
|
|
8
|
+
pushToStack: (name: string) => void;
|
|
9
|
+
removeFromStack: (name: string) => void;
|
|
10
|
+
getSheetsAbove: (name: string) => string[];
|
|
11
|
+
dismissDirect: (name: string) => Promise<void>;
|
|
8
12
|
}
|
|
9
13
|
|
|
10
14
|
export const BottomSheetContext = createContext<BottomSheetContextValue | null>(null);
|
|
@@ -19,6 +23,7 @@ export interface TrueSheetProviderProps {
|
|
|
19
23
|
*/
|
|
20
24
|
export function TrueSheetProvider({ children }: TrueSheetProviderProps) {
|
|
21
25
|
const sheetsRef = useRef<Map<string, RefObject<TrueSheetRef>>>(new Map());
|
|
26
|
+
const presentedStackRef = useRef<string[]>([]);
|
|
22
27
|
|
|
23
28
|
const register = (name: string, methods: RefObject<TrueSheetRef>) => {
|
|
24
29
|
sheetsRef.current.set(name, methods);
|
|
@@ -28,6 +33,31 @@ export function TrueSheetProvider({ children }: TrueSheetProviderProps) {
|
|
|
28
33
|
sheetsRef.current.delete(name);
|
|
29
34
|
};
|
|
30
35
|
|
|
36
|
+
const pushToStack = (name: string) => {
|
|
37
|
+
const index = presentedStackRef.current.indexOf(name);
|
|
38
|
+
if (index >= 0) {
|
|
39
|
+
presentedStackRef.current.splice(index, 1);
|
|
40
|
+
}
|
|
41
|
+
presentedStackRef.current.push(name);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const removeFromStack = (name: string) => {
|
|
45
|
+
const index = presentedStackRef.current.indexOf(name);
|
|
46
|
+
if (index >= 0) {
|
|
47
|
+
presentedStackRef.current.splice(index, 1);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Returns all sheets presented on top of the given sheet.
|
|
53
|
+
* Returns them in reverse order (top-most first) for proper dismissal.
|
|
54
|
+
*/
|
|
55
|
+
const getSheetsAbove = (name: string): string[] => {
|
|
56
|
+
const index = presentedStackRef.current.indexOf(name);
|
|
57
|
+
if (index < 0 || index >= presentedStackRef.current.length - 1) return [];
|
|
58
|
+
return presentedStackRef.current.slice(index + 1).reverse();
|
|
59
|
+
};
|
|
60
|
+
|
|
31
61
|
const present = async (name: string, index: number = 0) => {
|
|
32
62
|
const sheet = sheetsRef.current.get(name);
|
|
33
63
|
if (!sheet?.current) {
|
|
@@ -46,6 +76,19 @@ export function TrueSheetProvider({ children }: TrueSheetProviderProps) {
|
|
|
46
76
|
return sheet.current.dismiss();
|
|
47
77
|
};
|
|
48
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Dismisses a sheet directly without checking for sheets above.
|
|
81
|
+
* Used internally when batch-dismissing stacked sheets.
|
|
82
|
+
*/
|
|
83
|
+
const dismissDirect = async (name: string) => {
|
|
84
|
+
const sheet = sheetsRef.current.get(name);
|
|
85
|
+
if (!sheet?.current) {
|
|
86
|
+
console.warn(`TrueSheet: Could not find sheet with name "${name}"`);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
return (sheet.current as any).dismissDirect?.();
|
|
90
|
+
};
|
|
91
|
+
|
|
49
92
|
const resize = async (name: string, index: number) => {
|
|
50
93
|
const sheet = sheetsRef.current.get(name);
|
|
51
94
|
if (!sheet?.current) {
|
|
@@ -56,7 +99,19 @@ export function TrueSheetProvider({ children }: TrueSheetProviderProps) {
|
|
|
56
99
|
};
|
|
57
100
|
|
|
58
101
|
return (
|
|
59
|
-
<BottomSheetContext.Provider
|
|
102
|
+
<BottomSheetContext.Provider
|
|
103
|
+
value={{
|
|
104
|
+
register,
|
|
105
|
+
unregister,
|
|
106
|
+
pushToStack,
|
|
107
|
+
removeFromStack,
|
|
108
|
+
getSheetsAbove,
|
|
109
|
+
dismissDirect,
|
|
110
|
+
present,
|
|
111
|
+
dismiss,
|
|
112
|
+
resize,
|
|
113
|
+
}}
|
|
114
|
+
>
|
|
60
115
|
<BottomSheetModalProvider>{children}</BottomSheetModalProvider>
|
|
61
116
|
</BottomSheetContext.Provider>
|
|
62
117
|
);
|
|
@@ -40,6 +40,34 @@ export const TrueSheetActions = {
|
|
|
40
40
|
remove: (): TrueSheetActionType => ({ type: 'REMOVE' }),
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
+
const ensureBaseRoute = <T extends { routes: { name: string }[] }>(
|
|
44
|
+
state: T,
|
|
45
|
+
baseRouteName: string | undefined,
|
|
46
|
+
routeParamList: Record<string, object | undefined> | undefined
|
|
47
|
+
): T & { index: number; routes: T['routes'] } => {
|
|
48
|
+
if (!baseRouteName) {
|
|
49
|
+
return state as T & { index: number; routes: T['routes'] };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const hasBaseRoute = state.routes.some((r) => r.name === baseRouteName);
|
|
53
|
+
|
|
54
|
+
if (!hasBaseRoute) {
|
|
55
|
+
const baseRoute = {
|
|
56
|
+
key: `${baseRouteName}-${nanoid()}`,
|
|
57
|
+
name: baseRouteName,
|
|
58
|
+
params: routeParamList?.[baseRouteName],
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
...state,
|
|
63
|
+
index: state.routes.length,
|
|
64
|
+
routes: [baseRoute, ...state.routes],
|
|
65
|
+
} as T & { index: number; routes: T['routes'] };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return state as T & { index: number; routes: T['routes'] };
|
|
69
|
+
};
|
|
70
|
+
|
|
43
71
|
export const TrueSheetRouter = (
|
|
44
72
|
routerOptions: StackRouterOptions
|
|
45
73
|
): Router<TrueSheetNavigationState<ParamListBase>, TrueSheetActionType> => {
|
|
@@ -54,9 +82,11 @@ export const TrueSheetRouter = (
|
|
|
54
82
|
|
|
55
83
|
getInitialState(options) {
|
|
56
84
|
const state = baseRouter.getInitialState(options);
|
|
85
|
+
const baseRouteName = routerOptions.initialRouteName ?? options.routeNames[0];
|
|
86
|
+
const stateWithBaseRoute = ensureBaseRoute(state, baseRouteName, options.routeParamList);
|
|
57
87
|
|
|
58
88
|
return {
|
|
59
|
-
...
|
|
89
|
+
...stateWithBaseRoute,
|
|
60
90
|
stale: false,
|
|
61
91
|
type: 'true-sheet',
|
|
62
92
|
key: `true-sheet-${nanoid()}`,
|
|
@@ -154,8 +184,11 @@ export const TrueSheetRouter = (
|
|
|
154
184
|
routeGetIdList,
|
|
155
185
|
});
|
|
156
186
|
|
|
187
|
+
const baseRouteName = routerOptions.initialRouteName ?? routeNames[0];
|
|
188
|
+
const stateWithBaseRoute = ensureBaseRoute(state, baseRouteName, routeParamList);
|
|
189
|
+
|
|
157
190
|
return {
|
|
158
|
-
...
|
|
191
|
+
...stateWithBaseRoute,
|
|
159
192
|
type: 'true-sheet',
|
|
160
193
|
key: `true-sheet-${nanoid()}`,
|
|
161
194
|
};
|