@lodev09/react-native-true-sheet 3.3.1 → 3.3.2
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/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/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/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/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
|
@@ -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) {
|
|
@@ -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":";;AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,MAAM,QAAwC,OAAO;AACzF,SAASC,wBAAwB,QAAQ,sBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAYhE,OAAO,MAAMC,kBAAkB,gBAAGN,aAAa,CAAiC,IAAI,CAAC;AAMrF;AACA;AACA;AACA;AACA,OAAO,SAASO,iBAAiBA,CAAC;EAAEC;AAAiC,CAAC,EAAE;EACtE,MAAMC,SAAS,GAAGP,MAAM,CAAuC,IAAIQ,GAAG,CAAC,CAAC,CAAC;EACzE,MAAMC,iBAAiB,GAAGT,MAAM,CAAW,EAAE,CAAC;EAE9C,MAAMU,QAAQ,GAAGA,CAACC,IAAY,EAAEC,OAAgC,KAAK;IACnEL,SAAS,CAACM,OAAO,CAACC,GAAG,CAACH,IAAI,EAAEC,OAAO,CAAC;EACtC,CAAC;EAED,MAAMG,UAAU,GAAIJ,IAAY,IAAK;IACnCJ,SAAS,CAACM,OAAO,CAACG,MAAM,CAACL,IAAI,CAAC;EAChC,CAAC;EAED,MAAMM,WAAW,GAAIN,IAAY,IAAK;IACpC,MAAMO,KAAK,GAAGT,iBAAiB,CAACI,OAAO,CAACM,OAAO,CAACR,IAAI,CAAC;IACrD,IAAIO,KAAK,IAAI,CAAC,EAAE;MACdT,iBAAiB,CAACI,OAAO,CAACO,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;IAC5C;IACAT,iBAAiB,CAACI,OAAO,CAACQ,IAAI,CAACV,IAAI,CAAC;EACtC,CAAC;EAED,MAAMW,eAAe,GAAIX,IAAY,IAAK;IACxC,MAAMO,KAAK,GAAGT,iBAAiB,CAACI,OAAO,CAACM,OAAO,CAACR,IAAI,CAAC;IACrD,IAAIO,KAAK,IAAI,CAAC,EAAE;MACdT,iBAAiB,CAACI,OAAO,CAACO,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;IAC5C;EACF,CAAC;;EAED;AACF;AACA;AACA;EACE,MAAMK,cAAc,GAAIZ,IAAY,IAAe;IACjD,MAAMO,KAAK,GAAGT,iBAAiB,CAACI,OAAO,CAACM,OAAO,CAACR,IAAI,CAAC;IACrD,IAAIO,KAAK,GAAG,CAAC,IAAIA,KAAK,IAAIT,iBAAiB,CAACI,OAAO,CAACW,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE;IACzE,OAAOf,iBAAiB,CAACI,OAAO,CAACY,KAAK,CAACP,KAAK,GAAG,CAAC,CAAC,CAACQ,OAAO,CAAC,CAAC;EAC7D,CAAC;EAED,MAAMC,OAAO,GAAG,MAAAA,CAAOhB,IAAY,EAAEO,KAAa,GAAG,CAAC,KAAK;IACzD,MAAMU,KAAK,GAAGrB,SAAS,CAACM,OAAO,CAACgB,GAAG,CAAClB,IAAI,CAAC;IACzC,IAAI,CAACiB,KAAK,EAAEf,OAAO,EAAE;MACnBiB,OAAO,CAACC,IAAI,CAAC,8CAA8CpB,IAAI,GAAG,CAAC;MACnE;IACF;IACA,OAAOiB,KAAK,CAACf,OAAO,CAACc,OAAO,CAACT,KAAK,CAAC;EACrC,CAAC;EAED,MAAMc,OAAO,GAAG,MAAOrB,IAAY,IAAK;IACtC,MAAMiB,KAAK,GAAGrB,SAAS,CAACM,OAAO,CAACgB,GAAG,CAAClB,IAAI,CAAC;IACzC,IAAI,CAACiB,KAAK,EAAEf,OAAO,EAAE;MACnBiB,OAAO,CAACC,IAAI,CAAC,8CAA8CpB,IAAI,GAAG,CAAC;MACnE;IACF;IACA,OAAOiB,KAAK,CAACf,OAAO,CAACmB,OAAO,CAAC,CAAC;EAChC,CAAC;;EAED;AACF;AACA;AACA;EACE,MAAMC,aAAa,GAAG,MAAOtB,IAAY,IAAK;IAC5C,MAAMiB,KAAK,GAAGrB,SAAS,CAACM,OAAO,CAACgB,GAAG,CAAClB,IAAI,CAAC;IACzC,IAAI,CAACiB,KAAK,EAAEf,OAAO,EAAE;MACnBiB,OAAO,CAACC,IAAI,CAAC,8CAA8CpB,IAAI,GAAG,CAAC;MACnE;IACF;IACA,OAAQiB,KAAK,CAACf,OAAO,CAASoB,aAAa,GAAG,CAAC;EACjD,CAAC;EAED,MAAMC,MAAM,GAAG,MAAAA,CAAOvB,IAAY,EAAEO,KAAa,KAAK;IACpD,MAAMU,KAAK,GAAGrB,SAAS,CAACM,OAAO,CAACgB,GAAG,CAAClB,IAAI,CAAC;IACzC,IAAI,CAACiB,KAAK,EAAEf,OAAO,EAAE;MACnBiB,OAAO,CAACC,IAAI,CAAC,8CAA8CpB,IAAI,GAAG,CAAC;MACnE;IACF;IACA,OAAOiB,KAAK,CAACf,OAAO,CAACqB,MAAM,CAAChB,KAAK,CAAC;EACpC,CAAC;EAED,oBACEf,IAAA,CAACC,kBAAkB,CAAC+B,QAAQ;IAC1BC,KAAK,EAAE;MACL1B,QAAQ;MACRK,UAAU;MACVE,WAAW;MACXK,eAAe;MACfC,cAAc;MACdU,aAAa;MACbN,OAAO;MACPK,OAAO;MACPE;IACF,CAAE;IAAA5B,QAAA,eAEFH,IAAA,CAACF,wBAAwB;MAAAK,QAAA,EAAEA;IAAQ,CAA2B;EAAC,CACpC,CAAC;AAElC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAAS+B,YAAYA,CAAA,EAA4B;EACtD,MAAMC,OAAO,GAAGvC,UAAU,CAACK,kBAAkB,CAAC;EAE9C,IAAI,CAACkC,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,OAAO;IACLZ,OAAO,EAAEW,OAAO,CAACX,OAAO;IACxBK,OAAO,EAAEM,OAAO,CAACN,OAAO;IACxBE,MAAM,EAAEI,OAAO,CAACJ;EAClB,CAAC;AACH","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"}
|
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
|
);
|