@hanzogui/sheet 7.0.0 → 7.3.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 +40 -19
- package/dist/cjs/GestureDetectorWrapper.cjs +54 -0
- package/dist/cjs/GestureDetectorWrapper.native.js +58 -0
- package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/cjs/GestureSheetContext.cjs +54 -0
- package/dist/cjs/GestureSheetContext.native.js +58 -0
- package/dist/cjs/GestureSheetContext.native.js.map +1 -0
- package/dist/cjs/Sheet.cjs +119 -0
- package/dist/cjs/Sheet.native.js +122 -0
- package/dist/cjs/Sheet.native.js.map +1 -0
- package/dist/cjs/SheetContext.cjs +34 -0
- package/dist/cjs/SheetContext.native.js +37 -0
- package/dist/cjs/SheetContext.native.js.map +1 -0
- package/dist/cjs/SheetController.cjs +73 -0
- package/dist/cjs/SheetController.native.js +79 -0
- package/dist/cjs/SheetController.native.js.map +1 -0
- package/dist/cjs/SheetImplementationCustom.cjs +589 -0
- package/dist/cjs/SheetImplementationCustom.native.js +615 -0
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -0
- package/dist/cjs/SheetScrollView.cjs +216 -0
- package/dist/cjs/SheetScrollView.native.js +223 -0
- package/dist/cjs/SheetScrollView.native.js.map +1 -0
- package/dist/cjs/constants.cjs +34 -0
- package/dist/cjs/constants.native.js +37 -0
- package/dist/cjs/constants.native.js.map +1 -0
- package/dist/cjs/contexts.cjs +44 -0
- package/dist/cjs/contexts.native.js +47 -0
- package/dist/cjs/contexts.native.js.map +1 -0
- package/dist/cjs/controller.cjs +31 -0
- package/dist/cjs/controller.native.js +34 -0
- package/dist/cjs/controller.native.js.map +1 -0
- package/dist/cjs/createSheet.cjs +190 -0
- package/dist/cjs/createSheet.native.js +200 -0
- package/dist/cjs/createSheet.native.js.map +1 -0
- package/dist/cjs/gestureState.cjs +41 -0
- package/dist/cjs/gestureState.native.js +44 -0
- package/dist/cjs/gestureState.native.js.map +1 -0
- package/dist/cjs/helpers.cjs +35 -0
- package/dist/cjs/helpers.native.js +39 -0
- package/dist/cjs/helpers.native.js.map +1 -0
- package/dist/cjs/index.cjs +30 -0
- package/dist/cjs/index.native.js +33 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/nativeSheet.cjs +96 -0
- package/dist/cjs/nativeSheet.native.js +106 -0
- package/dist/cjs/nativeSheet.native.js.map +1 -0
- package/dist/cjs/setupGestureHandler.cjs +52 -0
- package/dist/cjs/setupGestureHandler.native.js +55 -0
- package/dist/cjs/setupGestureHandler.native.js.map +1 -0
- package/dist/cjs/types.cjs +18 -0
- package/dist/cjs/types.native.js +21 -0
- package/dist/cjs/types.native.js.map +1 -0
- package/dist/cjs/useGestureHandlerPan.cjs +206 -0
- package/dist/cjs/useGestureHandlerPan.native.js +213 -0
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -0
- package/dist/cjs/useKeyboardControllerSheet.cjs +40 -0
- package/dist/cjs/useKeyboardControllerSheet.native.js +132 -0
- package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -0
- package/dist/cjs/useSheet.cjs +29 -0
- package/dist/cjs/useSheet.native.js +34 -0
- package/dist/cjs/useSheet.native.js.map +1 -0
- package/dist/cjs/useSheetController.cjs +52 -0
- package/dist/cjs/useSheetController.native.js +55 -0
- package/dist/cjs/useSheetController.native.js.map +1 -0
- package/dist/cjs/useSheetOffscreenSize.cjs +63 -0
- package/dist/cjs/useSheetOffscreenSize.native.js +70 -0
- package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/cjs/useSheetOpenState.cjs +52 -0
- package/dist/cjs/useSheetOpenState.native.js +58 -0
- package/dist/cjs/useSheetOpenState.native.js.map +1 -0
- package/dist/cjs/useSheetProviderProps.cjs +181 -0
- package/dist/cjs/useSheetProviderProps.native.js +196 -0
- package/dist/cjs/useSheetProviderProps.native.js.map +1 -0
- package/dist/cjs/useSheetScrollViewGestures.cjs +166 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js +159 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -0
- package/dist/esm/GestureDetectorWrapper.mjs +29 -0
- package/dist/esm/GestureDetectorWrapper.mjs.map +1 -0
- package/dist/esm/GestureDetectorWrapper.native.js +30 -0
- package/dist/esm/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/esm/GestureSheetContext.mjs +28 -0
- package/dist/esm/GestureSheetContext.mjs.map +1 -0
- package/dist/esm/GestureSheetContext.native.js +29 -0
- package/dist/esm/GestureSheetContext.native.js.map +1 -0
- package/dist/esm/Sheet.mjs +89 -0
- package/dist/esm/Sheet.mjs.map +1 -0
- package/dist/esm/Sheet.native.js +89 -0
- package/dist/esm/Sheet.native.js.map +1 -0
- package/dist/esm/SheetContext.mjs +6 -0
- package/dist/esm/SheetContext.mjs.map +1 -0
- package/dist/esm/SheetContext.native.js +6 -0
- package/dist/esm/SheetContext.native.js.map +1 -0
- package/dist/esm/SheetController.mjs +37 -0
- package/dist/esm/SheetController.mjs.map +1 -0
- package/dist/esm/SheetController.native.js +40 -0
- package/dist/esm/SheetController.native.js.map +1 -0
- package/dist/esm/SheetImplementationCustom.mjs +552 -0
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -0
- package/dist/esm/SheetImplementationCustom.native.js +572 -0
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -0
- package/dist/esm/SheetScrollView.mjs +180 -0
- package/dist/esm/SheetScrollView.mjs.map +1 -0
- package/dist/esm/SheetScrollView.native.js +184 -0
- package/dist/esm/SheetScrollView.native.js.map +1 -0
- package/dist/esm/constants.mjs +6 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/constants.native.js +6 -0
- package/dist/esm/constants.native.js.map +1 -0
- package/dist/esm/contexts.mjs +7 -0
- package/dist/esm/contexts.mjs.map +1 -0
- package/dist/esm/contexts.native.js +7 -0
- package/dist/esm/contexts.native.js.map +1 -0
- package/dist/esm/controller.mjs +4 -0
- package/dist/esm/controller.mjs.map +1 -0
- package/dist/esm/controller.native.js +4 -0
- package/dist/esm/controller.native.js.map +1 -0
- package/dist/esm/createSheet.mjs +165 -0
- package/dist/esm/createSheet.mjs.map +1 -0
- package/dist/esm/createSheet.native.js +172 -0
- package/dist/esm/createSheet.native.js.map +1 -0
- package/dist/esm/gestureState.mjs +13 -0
- package/dist/esm/gestureState.mjs.map +1 -0
- package/dist/esm/gestureState.native.js +13 -0
- package/dist/esm/gestureState.native.js.map +1 -0
- package/dist/esm/helpers.mjs +10 -0
- package/dist/esm/helpers.mjs.map +1 -0
- package/dist/esm/helpers.native.js +11 -0
- package/dist/esm/helpers.native.js.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +12 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +12 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/nativeSheet.mjs +70 -0
- package/dist/esm/nativeSheet.mjs.map +1 -0
- package/dist/esm/nativeSheet.native.js +77 -0
- package/dist/esm/nativeSheet.native.js.map +1 -0
- package/dist/esm/setupGestureHandler.mjs +26 -0
- package/dist/esm/setupGestureHandler.mjs.map +1 -0
- package/dist/esm/setupGestureHandler.native.js +26 -0
- package/dist/esm/setupGestureHandler.native.js.map +1 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +2 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/useGestureHandlerPan.mjs +181 -0
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -0
- package/dist/esm/useGestureHandlerPan.native.js +185 -0
- package/dist/esm/useGestureHandlerPan.native.js.map +1 -0
- package/dist/esm/useKeyboardControllerSheet.mjs +15 -0
- package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -0
- package/dist/esm/useKeyboardControllerSheet.native.js +104 -0
- package/dist/esm/useKeyboardControllerSheet.native.js.map +1 -0
- package/dist/esm/useSheet.mjs +4 -0
- package/dist/esm/useSheet.mjs.map +1 -0
- package/dist/esm/useSheet.native.js +6 -0
- package/dist/esm/useSheet.native.js.map +1 -0
- package/dist/esm/useSheetController.mjs +15 -0
- package/dist/esm/useSheetController.mjs.map +1 -0
- package/dist/esm/useSheetController.native.js +15 -0
- package/dist/esm/useSheetController.native.js.map +1 -0
- package/dist/esm/useSheetOffscreenSize.mjs +38 -0
- package/dist/esm/useSheetOffscreenSize.mjs.map +1 -0
- package/dist/esm/useSheetOffscreenSize.native.js +42 -0
- package/dist/esm/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/esm/useSheetOpenState.mjs +27 -0
- package/dist/esm/useSheetOpenState.mjs.map +1 -0
- package/dist/esm/useSheetOpenState.native.js +30 -0
- package/dist/esm/useSheetOpenState.native.js.map +1 -0
- package/dist/esm/useSheetProviderProps.mjs +145 -0
- package/dist/esm/useSheetProviderProps.mjs.map +1 -0
- package/dist/esm/useSheetProviderProps.native.js +157 -0
- package/dist/esm/useSheetProviderProps.native.js.map +1 -0
- package/dist/esm/useSheetScrollViewGestures.mjs +141 -0
- package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -0
- package/dist/esm/useSheetScrollViewGestures.native.js +131 -0
- package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.mjs +29 -0
- package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.native.js +58 -0
- package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/jsx/GestureSheetContext.mjs +28 -0
- package/dist/jsx/GestureSheetContext.mjs.map +1 -0
- package/dist/jsx/GestureSheetContext.native.js +58 -0
- package/dist/jsx/GestureSheetContext.native.js.map +1 -0
- package/dist/jsx/Sheet.mjs +89 -0
- package/dist/jsx/Sheet.mjs.map +1 -0
- package/dist/jsx/Sheet.native.js +122 -0
- package/dist/jsx/Sheet.native.js.map +1 -0
- package/dist/jsx/SheetContext.mjs +6 -0
- package/dist/jsx/SheetContext.mjs.map +1 -0
- package/dist/jsx/SheetContext.native.js +37 -0
- package/dist/jsx/SheetContext.native.js.map +1 -0
- package/dist/jsx/SheetController.mjs +37 -0
- package/dist/jsx/SheetController.mjs.map +1 -0
- package/dist/jsx/SheetController.native.js +79 -0
- package/dist/jsx/SheetController.native.js.map +1 -0
- package/dist/jsx/SheetImplementationCustom.mjs +552 -0
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -0
- package/dist/jsx/SheetImplementationCustom.native.js +615 -0
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -0
- package/dist/jsx/SheetScrollView.mjs +180 -0
- package/dist/jsx/SheetScrollView.mjs.map +1 -0
- package/dist/jsx/SheetScrollView.native.js +223 -0
- package/dist/jsx/SheetScrollView.native.js.map +1 -0
- package/dist/jsx/constants.mjs +6 -0
- package/dist/jsx/constants.mjs.map +1 -0
- package/dist/jsx/constants.native.js +37 -0
- package/dist/jsx/constants.native.js.map +1 -0
- package/dist/jsx/contexts.mjs +7 -0
- package/dist/jsx/contexts.mjs.map +1 -0
- package/dist/jsx/contexts.native.js +47 -0
- package/dist/jsx/contexts.native.js.map +1 -0
- package/dist/jsx/controller.mjs +4 -0
- package/dist/jsx/controller.mjs.map +1 -0
- package/dist/jsx/controller.native.js +34 -0
- package/dist/jsx/controller.native.js.map +1 -0
- package/dist/jsx/createSheet.mjs +165 -0
- package/dist/jsx/createSheet.mjs.map +1 -0
- package/dist/jsx/createSheet.native.js +200 -0
- package/dist/jsx/createSheet.native.js.map +1 -0
- package/dist/jsx/gestureState.mjs +13 -0
- package/dist/jsx/gestureState.mjs.map +1 -0
- package/dist/jsx/gestureState.native.js +44 -0
- package/dist/jsx/gestureState.native.js.map +1 -0
- package/dist/jsx/helpers.mjs +10 -0
- package/dist/jsx/helpers.mjs.map +1 -0
- package/dist/jsx/helpers.native.js +39 -0
- package/dist/jsx/helpers.native.js.map +1 -0
- package/dist/jsx/index.js +12 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/index.mjs +12 -0
- package/dist/jsx/index.mjs.map +1 -0
- package/dist/jsx/index.native.js +33 -0
- package/dist/jsx/index.native.js.map +1 -0
- package/dist/jsx/nativeSheet.mjs +70 -0
- package/dist/jsx/nativeSheet.mjs.map +1 -0
- package/dist/jsx/nativeSheet.native.js +106 -0
- package/dist/jsx/nativeSheet.native.js.map +1 -0
- package/dist/jsx/setupGestureHandler.mjs +26 -0
- package/dist/jsx/setupGestureHandler.mjs.map +1 -0
- package/dist/jsx/setupGestureHandler.native.js +55 -0
- package/dist/jsx/setupGestureHandler.native.js.map +1 -0
- package/dist/jsx/types.mjs +2 -0
- package/dist/jsx/types.mjs.map +1 -0
- package/dist/jsx/types.native.js +21 -0
- package/dist/jsx/types.native.js.map +1 -0
- package/dist/jsx/useGestureHandlerPan.mjs +181 -0
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -0
- package/dist/jsx/useGestureHandlerPan.native.js +213 -0
- package/dist/jsx/useGestureHandlerPan.native.js.map +1 -0
- package/dist/jsx/useKeyboardControllerSheet.mjs +15 -0
- package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -0
- package/dist/jsx/useKeyboardControllerSheet.native.js +132 -0
- package/dist/jsx/useKeyboardControllerSheet.native.js.map +1 -0
- package/dist/jsx/useSheet.mjs +4 -0
- package/dist/jsx/useSheet.mjs.map +1 -0
- package/dist/jsx/useSheet.native.js +34 -0
- package/dist/jsx/useSheet.native.js.map +1 -0
- package/dist/jsx/useSheetController.mjs +15 -0
- package/dist/jsx/useSheetController.mjs.map +1 -0
- package/dist/jsx/useSheetController.native.js +55 -0
- package/dist/jsx/useSheetController.native.js.map +1 -0
- package/dist/jsx/useSheetOffscreenSize.mjs +38 -0
- package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -0
- package/dist/jsx/useSheetOffscreenSize.native.js +70 -0
- package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/jsx/useSheetOpenState.mjs +27 -0
- package/dist/jsx/useSheetOpenState.mjs.map +1 -0
- package/dist/jsx/useSheetOpenState.native.js +58 -0
- package/dist/jsx/useSheetOpenState.native.js.map +1 -0
- package/dist/jsx/useSheetProviderProps.mjs +145 -0
- package/dist/jsx/useSheetProviderProps.mjs.map +1 -0
- package/dist/jsx/useSheetProviderProps.native.js +196 -0
- package/dist/jsx/useSheetProviderProps.native.js.map +1 -0
- package/dist/jsx/useSheetScrollViewGestures.mjs +141 -0
- package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js +159 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -0
- package/package.json +36 -26
- package/src/Sheet.tsx +3 -3
- package/src/SheetImplementationCustom.tsx +5 -5
- package/src/createSheet.tsx +9 -9
- package/src/setupGestureHandler.ts +2 -2
- package/src/useSheetProviderProps.tsx +4 -4
- package/types/GestureDetectorWrapper.d.ts +1 -1
- package/types/GestureDetectorWrapper.d.ts.map +1 -0
- package/types/GestureSheetContext.d.ts +1 -1
- package/types/GestureSheetContext.d.ts.map +1 -0
- package/types/Sheet.d.ts +15 -15
- package/types/Sheet.d.ts.map +1 -0
- package/types/SheetContext.d.ts +4 -4
- package/types/SheetContext.d.ts.map +1 -0
- package/types/SheetController.d.ts +2 -1
- package/types/SheetController.d.ts.map +1 -0
- package/types/SheetImplementationCustom.d.ts.map +1 -0
- package/types/SheetScrollView.d.ts +1 -1
- package/types/SheetScrollView.d.ts.map +1 -0
- package/types/constants.d.ts.map +1 -0
- package/types/contexts.d.ts.map +1 -0
- package/types/controller.d.ts.map +1 -0
- package/types/createSheet.d.ts +11 -11
- package/types/createSheet.d.ts.map +1 -0
- package/types/gestureState.d.ts.map +1 -0
- package/types/helpers.d.ts.map +1 -0
- package/types/index.d.ts.map +1 -0
- package/types/nativeSheet.d.ts.map +1 -0
- package/types/setupGestureHandler.d.ts.map +1 -0
- package/types/types.d.ts.map +1 -0
- package/types/useGestureHandlerPan.d.ts.map +1 -0
- package/types/useKeyboardControllerSheet.d.ts.map +1 -0
- package/types/useKeyboardControllerSheet.native.d.ts.map +1 -0
- package/types/useSheet.d.ts.map +1 -0
- package/types/useSheetController.d.ts.map +1 -0
- package/types/useSheetOffscreenSize.d.ts.map +1 -0
- package/types/useSheetOpenState.d.ts.map +1 -0
- package/types/useSheetProviderProps.d.ts +3 -3
- package/types/useSheetProviderProps.d.ts.map +1 -0
- package/types/useSheetScrollViewGestures.d.ts.map +1 -0
- package/types/useSheetScrollViewGestures.native.d.ts.map +1 -0
- package/controller/index.cjs +0 -2
- package/controller/index.d.ts +0 -5
- package/controller/index.js +0 -2
- package/controller/index.native.cjs +0 -2
- package/controller/index.native.js +0 -2
- package/next.md +0 -78
- package/setup-gesture-handler/index.cjs +0 -2
- package/setup-gesture-handler/index.js +0 -2
- package/setup-gesture-handler/index.native.cjs +0 -2
- package/setup-gesture-handler/index.native.js +0 -2
- package/tsconfig.json +0 -56
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var useSheetOffscreenSize = function (param) {
|
|
2
|
+
var {
|
|
3
|
+
snapPoints,
|
|
4
|
+
position,
|
|
5
|
+
screenSize,
|
|
6
|
+
frameSize,
|
|
7
|
+
snapPointsMode
|
|
8
|
+
} = param;
|
|
9
|
+
if (snapPointsMode === "fit") {
|
|
10
|
+
return 0;
|
|
11
|
+
}
|
|
12
|
+
if (snapPointsMode === "constant") {
|
|
13
|
+
var maxSize = Number(snapPoints[0]);
|
|
14
|
+
var _snapPoints_position;
|
|
15
|
+
var currentSize = Number((_snapPoints_position = snapPoints[position]) !== null && _snapPoints_position !== void 0 ? _snapPoints_position : 0);
|
|
16
|
+
var offscreenSize = maxSize - currentSize;
|
|
17
|
+
return offscreenSize;
|
|
18
|
+
}
|
|
19
|
+
if (snapPointsMode === "percent") {
|
|
20
|
+
var maxPercentOpened = Number(snapPoints[0]) / 100;
|
|
21
|
+
var _snapPoints_position1;
|
|
22
|
+
var percentOpened = Number((_snapPoints_position1 = snapPoints[position]) !== null && _snapPoints_position1 !== void 0 ? _snapPoints_position1 : 0) / 100;
|
|
23
|
+
var percentHidden = maxPercentOpened - percentOpened;
|
|
24
|
+
var offscreenSize1 = percentHidden * screenSize;
|
|
25
|
+
return offscreenSize1;
|
|
26
|
+
}
|
|
27
|
+
var maxSnapPoint = snapPoints[0];
|
|
28
|
+
if (maxSnapPoint === "fit") {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
var maxSize1 = typeof maxSnapPoint === "string" ? Number(maxSnapPoint.slice(0, -1)) / 100 * screenSize : maxSnapPoint;
|
|
32
|
+
var _snapPoints_position2;
|
|
33
|
+
var currentSnapPoint = (_snapPoints_position2 = snapPoints[position]) !== null && _snapPoints_position2 !== void 0 ? _snapPoints_position2 : 0;
|
|
34
|
+
var currentSize1 = typeof currentSnapPoint === "string" ? Number(currentSnapPoint.slice(0, -1)) / 100 * screenSize : currentSnapPoint;
|
|
35
|
+
var offscreenSize2 = maxSize1 - currentSize1;
|
|
36
|
+
if (Number.isNaN(offscreenSize2)) {
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
return offscreenSize2;
|
|
40
|
+
};
|
|
41
|
+
export { useSheetOffscreenSize };
|
|
42
|
+
//# sourceMappingURL=useSheetOffscreenSize.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useSheetOffscreenSize","param","snapPoints","position","screenSize","frameSize","snapPointsMode","maxSize","Number","_snapPoints_position","currentSize","offscreenSize","maxPercentOpened","_snapPoints_position1","percentOpened","percentHidden","offscreenSize1","maxSnapPoint","maxSize1","slice","_snapPoints_position2","currentSnapPoint","currentSize1","offscreenSize2","isNaN"],"sources":["../../src/useSheetOffscreenSize.tsx"],"sourcesContent":[null],"mappings":"AAEO,IAAAA,qBAAM,YAAAA,CAAyBC,KAAA;EACpC;IAAAC,UAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,SAAA;IAAAC;EAAA,IAAAL,KAAA;EACA,IAAAK,cAAA;IACA;EACA;EACA,IAAAA,cAAA;IACF,IAAyBC,OAAA,GAAAC,MAAA,CAAAN,UAAA;IACvB,IAAIO,oBAAmB;IACrB,IAAAC,WAAO,GAAAF,MAAA,EAAAC,oBAAA,GAAAP,UAAA,CAAAC,QAAA,eAAAM,oBAAA,cAAAA,oBAAA;IACT,IAAAE,aAAA,GAAAJ,OAAA,GAAAG,WAAA;IAEA,OAAIC,aAAA;EACF;EACA,IAAAL,cAAM,KAAc,SAAO;IAC3B,IAAAM,gBAAM,GAAgBJ,MAAA,CAAAN,UAAU;IAChC,IAAAW,qBAAO;IACT,IAAAC,aAAA,GAAAN,MAAA,EAAAK,qBAAA,GAAAX,UAAA,CAAAC,QAAA,eAAAU,qBAAA,cAAAA,qBAAA;IAEA,IAAIE,aAAA,GAAAH,gBAA8B,GAAAE,aAAA;IAChC,IAAAE,cAAM,GAAAD,aAA0B,GAAAX,UAAa;IAC7C,OAAMY,cAAA;EACN;EACA,IAAAC,YAAM,GAAAf,UAAgB;EACtB,IAAAe,YAAO;IACT;EAGA;EACA,IAAIC,QAAA,UAAiBD,YAAO,gBAAAT,MAAA,CAAAS,YAAA,CAAAE,KAAA,iBAAAf,UAAA,GAAAa,YAAA;EAC1B,IAAAG,qBAAO;EACT,IAAAC,gBAAA,IAAAD,qBAAA,GAAAlB,UAAA,CAAAC,QAAA,eAAAiB,qBAAA,cAAAA,qBAAA;EAEA,IAAAE,YACE,UAAOD,gBAAiB,aACnB,GAAOb,MAAA,CAAAa,gBAAsB,CAAEF,KAAK,MAAO,WAAAf,UAC5C,GAAAiB,gBAAA;EACN,IAAAE,cAAM,GAAAL,QAAmB,GAAAI,YAAmB;EAC5C,IAAAd,MAAM,CAAAgB,KAAA,CAAAD,cACG;IAGT,OAAM;EACN;EACE,OAAAA,cAAO;AAAA;AAET,SACFvB,qBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useControllableState } from "@hanzogui/use-controllable-state";
|
|
2
|
+
import { useSheetController } from "./useSheetController.mjs";
|
|
3
|
+
const useSheetOpenState = props => {
|
|
4
|
+
const {
|
|
5
|
+
isHidden,
|
|
6
|
+
controller
|
|
7
|
+
} = useSheetController();
|
|
8
|
+
const onOpenChangeInternal = val => {
|
|
9
|
+
controller?.onOpenChange?.(val);
|
|
10
|
+
props.onOpenChange?.(val);
|
|
11
|
+
};
|
|
12
|
+
const propVal = props.preferAdaptParentOpenState ? controller?.open ?? props.open : props.open ?? controller?.open;
|
|
13
|
+
const [open, setOpen] = useControllableState({
|
|
14
|
+
prop: propVal,
|
|
15
|
+
defaultProp: props.defaultOpen ?? false,
|
|
16
|
+
onChange: onOpenChangeInternal,
|
|
17
|
+
strategy: "most-recent-wins"
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
open,
|
|
21
|
+
setOpen,
|
|
22
|
+
isHidden,
|
|
23
|
+
controller
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export { useSheetOpenState };
|
|
27
|
+
//# sourceMappingURL=useSheetOpenState.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useControllableState","useSheetController","useSheetOpenState","props","isHidden","controller","onOpenChangeInternal","val","onOpenChange","propVal","preferAdaptParentOpenState","open","setOpen","prop","defaultProp","defaultOpen","onChange","strategy"],"sources":["../../src/useSheetOpenState.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,oBAAA,QAA4B;AAGrC,SAASC,kBAAA,QAA0B;AAE5B,MAAMC,iBAAA,GAAqBC,KAAA,IAAsB;EACtD,MAAM;IAAEC,QAAA;IAAUC;EAAW,IAAIJ,kBAAA,CAAmB;EAEpD,MAAMK,oBAAA,GAAwBC,GAAA,IAAiB;IAC7CF,UAAA,EAAYG,YAAA,GAAeD,GAAG;IAC9BJ,KAAA,CAAMK,YAAA,GAAeD,GAAG;EAC1B;EAEA,MAAME,OAAA,GAAUN,KAAA,CAAMO,0BAAA,GACjBL,UAAA,EAAYM,IAAA,IAAQR,KAAA,CAAMQ,IAAA,GAC1BR,KAAA,CAAMQ,IAAA,IAAQN,UAAA,EAAYM,IAAA;EAE/B,MAAM,CAACA,IAAA,EAAMC,OAAO,IAAIZ,oBAAA,CAAqB;IAC3Ca,IAAA,EAAMJ,OAAA;IACNK,WAAA,EAAaX,KAAA,CAAMY,WAAA,IAAe;IAClCC,QAAA,EAAUV,oBAAA;IACVW,QAAA,EAAU;EACZ,CAAC;EAED,OAAO;IACLN,IAAA;IACAC,OAAA;IACAR,QAAA;IACAC;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useControllableState } from "@hanzogui/use-controllable-state";
|
|
2
|
+
import { useSheetController } from "./useSheetController.native.js";
|
|
3
|
+
var useSheetOpenState = function (props) {
|
|
4
|
+
var {
|
|
5
|
+
isHidden,
|
|
6
|
+
controller
|
|
7
|
+
} = useSheetController();
|
|
8
|
+
var onOpenChangeInternal = function (val) {
|
|
9
|
+
var _controller_onOpenChange, _props_onOpenChange;
|
|
10
|
+
controller === null || controller === void 0 ? void 0 : (_controller_onOpenChange = controller.onOpenChange) === null || _controller_onOpenChange === void 0 ? void 0 : _controller_onOpenChange.call(controller, val);
|
|
11
|
+
(_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, val);
|
|
12
|
+
};
|
|
13
|
+
var _controller_open, _props_open;
|
|
14
|
+
var propVal = props.preferAdaptParentOpenState ? (_controller_open = controller === null || controller === void 0 ? void 0 : controller.open) !== null && _controller_open !== void 0 ? _controller_open : props.open : (_props_open = props.open) !== null && _props_open !== void 0 ? _props_open : controller === null || controller === void 0 ? void 0 : controller.open;
|
|
15
|
+
var _props_defaultOpen;
|
|
16
|
+
var [open, setOpen] = useControllableState({
|
|
17
|
+
prop: propVal,
|
|
18
|
+
defaultProp: (_props_defaultOpen = props.defaultOpen) !== null && _props_defaultOpen !== void 0 ? _props_defaultOpen : false,
|
|
19
|
+
onChange: onOpenChangeInternal,
|
|
20
|
+
strategy: "most-recent-wins"
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
open,
|
|
24
|
+
setOpen,
|
|
25
|
+
isHidden,
|
|
26
|
+
controller
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export { useSheetOpenState };
|
|
30
|
+
//# sourceMappingURL=useSheetOpenState.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useControllableState","useSheetController","useSheetOpenState","props","isHidden","controller","onOpenChangeInternal","val","_controller_onOpenChange","_props_onOpenChange","onOpenChange","call","_controller_open","_props_open","propVal","preferAdaptParentOpenState","open","_props_defaultOpen","setOpen","prop","defaultProp","defaultOpen","onChange","strategy"],"sources":["../../src/useSheetOpenState.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,oBAAA,QAA4B;AAGrC,SAASC,kBAAA,QAA0B;AAE5B,IAAAC,iBAAM,YAAAA,CAAqBC,KAAsB;EACtD;IAAMC,QAAE;IAAAC;EAAU,IAAWJ,kBAAI;EAEjC,IAAAK,oBAAM,YAAAA,CAAwBC,GAAiB;IAC7C,IAAAC,wBAA2B,EAAGC,mBAAA;IAC9BJ,UAAM,aAAeA,UAAG,wBAAAG,wBAAA,GAAAH,UAAA,CAAAK,YAAA,cAAAF,wBAAA,uBAAAA,wBAAA,CAAAG,IAAA,CAAAN,UAAA,EAAAE,GAAA;IAC1B,CAAAE,mBAAA,GAAAN,KAAA,CAAAO,YAAA,cAAAD,mBAAA,uBAAAA,mBAAA,CAAAE,IAAA,CAAAR,KAAA,EAAAI,GAAA;EAEA;EAIA,IAAAK,gBAAoB,EAAAC,WAAI;EAAqB,IAC3CC,OAAM,GAAAX,KAAA,CAAAY,0BAAA,IAAAH,gBAAA,GAAAP,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAW,IAAA,cAAAJ,gBAAA,cAAAA,gBAAA,GAAAT,KAAA,CAAAa,IAAA,IAAAH,WAAA,GAAAV,KAAA,CAAAa,IAAA,cAAAH,WAAA,cAAAA,WAAA,GAAAR,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAW,IAAA;EAAA,IACNC,kBAAmB;EAAe,IAClC,CAAAD,IAAA,EAAAE,OAAU,IAAAlB,oBAAA;IACVmB,IAAA,EAAAL,OAAU;IACXM,WAAA,GAAAH,kBAAA,GAAAd,KAAA,CAAAkB,WAAA,cAAAJ,kBAAA,cAAAA,kBAAA;IAEDK,QAAO,EAAAhB,oBAAA;IACLiB,QAAA;EAAA,EACA;EAAA,OACA;IACAP,IAAA;IACFE,OAAA;IACFd,QAAA","ignoreList":[]}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { useConfiguration } from "@hanzogui/core";
|
|
3
|
+
import { useConstant } from "@hanzogui/use-constant";
|
|
4
|
+
import { useControllableState } from "@hanzogui/use-controllable-state";
|
|
5
|
+
function useSheetProviderProps(props, state, options = {}) {
|
|
6
|
+
const handleRef = React.useRef(null);
|
|
7
|
+
const contentRef = React.useRef(null);
|
|
8
|
+
const [frameSize, setFrameSize] = React.useState(0);
|
|
9
|
+
const [maxContentSize, setMaxContentSize] = React.useState(0);
|
|
10
|
+
const snapPointsMode = props.snapPointsMode ?? "percent";
|
|
11
|
+
const snapPointsProp = props.snapPoints ?? (snapPointsMode === "percent" ? [80] : snapPointsMode === "constant" ? [256] : ["fit"]);
|
|
12
|
+
const hasFit = snapPointsProp[0] === "fit";
|
|
13
|
+
const snapPoints = React.useMemo(() => props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp, [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]);
|
|
14
|
+
const [position_, setPositionImmediate] = useControllableState({
|
|
15
|
+
prop: props.position,
|
|
16
|
+
defaultProp: props.defaultPosition || (state.open ? 0 : -1),
|
|
17
|
+
onChange: props.onPositionChange,
|
|
18
|
+
strategy: "most-recent-wins"
|
|
19
|
+
});
|
|
20
|
+
const position = state.open === false ? -1 : position_;
|
|
21
|
+
const {
|
|
22
|
+
open
|
|
23
|
+
} = state;
|
|
24
|
+
const setPosition = React.useCallback(next => {
|
|
25
|
+
if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
|
|
26
|
+
state.setOpen(false);
|
|
27
|
+
} else {
|
|
28
|
+
setPositionImmediate(next);
|
|
29
|
+
}
|
|
30
|
+
}, [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]);
|
|
31
|
+
if (process.env.NODE_ENV === "development") {
|
|
32
|
+
if (snapPointsMode === "mixed" && snapPoints.some(p => {
|
|
33
|
+
if (typeof p === "string") {
|
|
34
|
+
if (p === "fit") {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
if (p.endsWith("%")) {
|
|
38
|
+
const n = Number(p.slice(0, -1));
|
|
39
|
+
return n < 0 || n > 100;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return typeof p !== "number" || p < 0;
|
|
44
|
+
})) {
|
|
45
|
+
console.warn('\u26A0\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or "fit" when snapPointsMode is mixed');
|
|
46
|
+
}
|
|
47
|
+
if (snapPointsMode === "mixed" && snapPoints.indexOf("fit") > 0) {
|
|
48
|
+
console.warn('\u26A0\uFE0F Invalid snapPoint given, "fit" must be the first/largest snap point when snapPointsMode is mixed');
|
|
49
|
+
}
|
|
50
|
+
if (snapPointsMode === "fit" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== "fit")) {
|
|
51
|
+
console.warn("\u26A0\uFE0F Invalid snapPoint given, there are no snap points when snapPointsMode is fit");
|
|
52
|
+
}
|
|
53
|
+
if (snapPointsMode === "constant" && snapPoints.some(p => typeof p !== "number" || p < 0)) {
|
|
54
|
+
console.warn("\u26A0\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant");
|
|
55
|
+
}
|
|
56
|
+
if (snapPointsMode === "percent" && snapPoints.some(p => typeof p !== "number" || p < 0 || p > 100)) {
|
|
57
|
+
console.warn("\u26A0\uFE0F Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
|
|
61
|
+
setPositionImmediate(0);
|
|
62
|
+
}
|
|
63
|
+
const shouldSetPositionOpen = open && position < 0;
|
|
64
|
+
React.useEffect(() => {
|
|
65
|
+
if (shouldSetPositionOpen) {
|
|
66
|
+
setPosition(0);
|
|
67
|
+
}
|
|
68
|
+
}, [setPosition, shouldSetPositionOpen]);
|
|
69
|
+
const {
|
|
70
|
+
animationDriver
|
|
71
|
+
} = useConfiguration();
|
|
72
|
+
if (!animationDriver) {
|
|
73
|
+
throw new Error(process.env.NODE_ENV === "production" ? `\u274C 008` : "Must set animations in gui.config.ts");
|
|
74
|
+
}
|
|
75
|
+
const scrollBridge = useConstant(() => {
|
|
76
|
+
const parentDragListeners = /* @__PURE__ */new Set();
|
|
77
|
+
const bridge = {
|
|
78
|
+
hasScrollableContent: false,
|
|
79
|
+
enabled: false,
|
|
80
|
+
y: 0,
|
|
81
|
+
paneY: 0,
|
|
82
|
+
paneMinY: 0,
|
|
83
|
+
scrollStartY: -1,
|
|
84
|
+
drag: () => {},
|
|
85
|
+
release: () => {},
|
|
86
|
+
scrollLock: false,
|
|
87
|
+
isParentDragging: false,
|
|
88
|
+
onParentDragging: cb => {
|
|
89
|
+
parentDragListeners.add(cb);
|
|
90
|
+
return () => {
|
|
91
|
+
parentDragListeners.delete(cb);
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
setParentDragging: val => {
|
|
95
|
+
if (val !== bridge.isParentDragging) {
|
|
96
|
+
bridge.isParentDragging = val;
|
|
97
|
+
parentDragListeners.forEach(cb => cb(val));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
return bridge;
|
|
102
|
+
});
|
|
103
|
+
let disableRemoveScroll;
|
|
104
|
+
if (props.disableRemoveScroll !== void 0) {
|
|
105
|
+
disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;
|
|
106
|
+
} else if (props.forceRemoveScrollEnabled !== void 0) {
|
|
107
|
+
if (process.env.NODE_ENV === "development") {
|
|
108
|
+
console.warn("[Sheet] forceRemoveScrollEnabled is deprecated. Use disableRemoveScroll instead.");
|
|
109
|
+
}
|
|
110
|
+
disableRemoveScroll = !props.forceRemoveScrollEnabled;
|
|
111
|
+
} else {
|
|
112
|
+
disableRemoveScroll = !open || !props.modal;
|
|
113
|
+
}
|
|
114
|
+
const maxSnapPoint = snapPoints[0];
|
|
115
|
+
const screenSize = snapPointsMode === "percent" ? frameSize / ((typeof maxSnapPoint === "number" ? maxSnapPoint : 100) / 100) : maxContentSize;
|
|
116
|
+
const providerProps = {
|
|
117
|
+
screenSize,
|
|
118
|
+
maxSnapPoint,
|
|
119
|
+
disableRemoveScroll,
|
|
120
|
+
scrollBridge,
|
|
121
|
+
modal: !!props.modal,
|
|
122
|
+
open: state.open,
|
|
123
|
+
setOpen: state.setOpen,
|
|
124
|
+
hidden: !!state.isHidden,
|
|
125
|
+
contentRef,
|
|
126
|
+
handleRef,
|
|
127
|
+
frameSize,
|
|
128
|
+
setFrameSize,
|
|
129
|
+
dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,
|
|
130
|
+
dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,
|
|
131
|
+
onOverlayComponent: options.onOverlayComponent,
|
|
132
|
+
scope: props.__scopeSheet,
|
|
133
|
+
hasFit,
|
|
134
|
+
position,
|
|
135
|
+
snapPoints,
|
|
136
|
+
snapPointsMode,
|
|
137
|
+
setMaxContentSize,
|
|
138
|
+
setPosition,
|
|
139
|
+
setPositionImmediate,
|
|
140
|
+
onlyShowFrame: false
|
|
141
|
+
};
|
|
142
|
+
return providerProps;
|
|
143
|
+
}
|
|
144
|
+
export { useSheetProviderProps };
|
|
145
|
+
//# sourceMappingURL=useSheetProviderProps.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useConfiguration","useConstant","useControllableState","useSheetProviderProps","props","state","options","handleRef","useRef","contentRef","frameSize","setFrameSize","useState","maxContentSize","setMaxContentSize","snapPointsMode","snapPointsProp","snapPoints","hasFit","useMemo","dismissOnSnapToBottom","JSON","stringify","position_","setPositionImmediate","prop","position","defaultProp","defaultPosition","open","onChange","onPositionChange","strategy","setPosition","useCallback","next","length","setOpen","process","env","NODE_ENV","some","p","endsWith","n","Number","slice","console","warn","indexOf","shouldSetPositionOpen","useEffect","animationDriver","Error","scrollBridge","parentDragListeners","Set","bridge","hasScrollableContent","enabled","y","paneY","paneMinY","scrollStartY","drag","release","scrollLock","isParentDragging","onParentDragging","cb","add","delete","setParentDragging","val","forEach","disableRemoveScroll","modal","forceRemoveScrollEnabled","maxSnapPoint","screenSize","providerProps","hidden","isHidden","dismissOnOverlayPress","onOverlayComponent","scope","__scopeSheet","onlyShowFrame"],"sources":["../../src/useSheetProviderProps.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,MAAW;AAElB,SAASC,gBAAA,QAAwB;AACjC,SAASC,WAAA,QAAmB;AAC5B,SAASC,oBAAA,QAA4B;AAS9B,SAASC,sBACdC,KAAA,EACAC,KAAA,EACAC,OAAA,GAEI,CAAC,GACL;EACA,MAAMC,SAAA,GAAYR,KAAA,CAAMS,MAAA,CAAmB,IAAI;EAC/C,MAAMC,UAAA,GAAaV,KAAA,CAAMS,MAAA,CAAmB,IAAI;EAChD,MAAM,CAACE,SAAA,EAAWC,YAAY,IAAIZ,KAAA,CAAMa,QAAA,CAAiB,CAAC;EAC1D,MAAM,CAACC,cAAA,EAAgBC,iBAAiB,IAAIf,KAAA,CAAMa,QAAA,CAAiB,CAAC;EACpE,MAAMG,cAAA,GAAiBX,KAAA,CAAMW,cAAA,IAAkB;EAC/C,MAAMC,cAAA,GACJZ,KAAA,CAAMa,UAAA,KACLF,cAAA,KAAmB,YAChB,CAAC,EAAE,IACHA,cAAA,KAAmB,aACjB,CAAC,GAAG,IACJ,CAAC,KAAK;EACd,MAAMG,MAAA,GAASF,cAAA,CAAe,CAAC,MAAM;EAErC,MAAMC,UAAA,GAAalB,KAAA,CAAMoB,OAAA,CACvB,MAAOf,KAAA,CAAMgB,qBAAA,GAAwB,CAAC,GAAGJ,cAAA,EAAgB,CAAC,IAAIA,cAAA,EAE9D,CAACK,IAAA,CAAKC,SAAA,CAAUN,cAAc,GAAGZ,KAAA,CAAMgB,qBAAqB,CAC9D;EAGA,MAAM,CAACG,SAAA,EAAWC,oBAAoB,IAAItB,oBAAA,CAAqB;IAC7DuB,IAAA,EAAMrB,KAAA,CAAMsB,QAAA;IACZC,WAAA,EAAavB,KAAA,CAAMwB,eAAA,KAAoBvB,KAAA,CAAMwB,IAAA,GAAO,IAAI;IACxDC,QAAA,EAAU1B,KAAA,CAAM2B,gBAAA;IAChBC,QAAA,EAAU;EACZ,CAAC;EAED,MAAMN,QAAA,GAAWrB,KAAA,CAAMwB,IAAA,KAAS,QAAQ,KAAKN,SAAA;EAE7C,MAAM;IAAEM;EAAK,IAAIxB,KAAA;EAEjB,MAAM4B,WAAA,GAAclC,KAAA,CAAMmC,WAAA,CACvBC,IAAA,IAAiB;IAEhB,IAAI/B,KAAA,CAAMgB,qBAAA,IAAyBe,IAAA,KAASlB,UAAA,CAAWmB,MAAA,GAAS,GAAG;MACjE/B,KAAA,CAAMgC,OAAA,CAAQ,KAAK;IACrB,OAAO;MACLb,oBAAA,CAAqBW,IAAI;IAC3B;EACF,GACA,CAAC/B,KAAA,CAAMgB,qBAAA,EAAuBH,UAAA,CAAWmB,MAAA,EAAQZ,oBAAA,EAAsBnB,KAAA,CAAMgC,OAAO,CACtF;EAEA,IAAIC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eAAe;IAC1C,IACEzB,cAAA,KAAmB,WACnBE,UAAA,CAAWwB,IAAA,CAAMC,CAAA,IAAM;MACrB,IAAI,OAAOA,CAAA,KAAM,UAAU;QACzB,IAAIA,CAAA,KAAM,OAAO;UACf,OAAO;QACT;QACA,IAAIA,CAAA,CAAEC,QAAA,CAAS,GAAG,GAAG;UACnB,MAAMC,CAAA,GAAIC,MAAA,CAAOH,CAAA,CAAEI,KAAA,CAAM,GAAG,EAAE,CAAC;UAC/B,OAAOF,CAAA,GAAI,KAAKA,CAAA,GAAI;QACtB;QACA,OAAO;MACT;MACA,OAAO,OAAOF,CAAA,KAAM,YAAYA,CAAA,GAAI;IACtC,CAAC,GACD;MACAK,OAAA,CAAQC,IAAA,CACN,4JACF;IACF;IACA,IAAIjC,cAAA,KAAmB,WAAWE,UAAA,CAAWgC,OAAA,CAAQ,KAAK,IAAI,GAAG;MAC/DF,OAAA,CAAQC,IAAA,CACN,+GACF;IACF;IACA,IACEjC,cAAA,KAAmB,UAClBE,UAAA,CAAWmB,MAAA,MAAYhC,KAAA,CAAMgB,qBAAA,GAAwB,IAAI,MACxDH,UAAA,CAAW,CAAC,MAAM,QACpB;MACA8B,OAAA,CAAQC,IAAA,CACN,2FACF;IACF;IACA,IACEjC,cAAA,KAAmB,cACnBE,UAAA,CAAWwB,IAAA,CAAMC,CAAA,IAAM,OAAOA,CAAA,KAAM,YAAYA,CAAA,GAAI,CAAC,GACrD;MACAK,OAAA,CAAQC,IAAA,CACN,kHACF;IACF;IACA,IACEjC,cAAA,KAAmB,aACnBE,UAAA,CAAWwB,IAAA,CAAMC,CAAA,IAAM,OAAOA,CAAA,KAAM,YAAYA,CAAA,GAAI,KAAKA,CAAA,GAAI,GAAG,GAChE;MACAK,OAAA,CAAQC,IAAA,CACN,0HACF;IACF;EACF;EAGA,IAAInB,IAAA,IAAQzB,KAAA,CAAMgB,qBAAA,IAAyBM,QAAA,KAAaT,UAAA,CAAWmB,MAAA,GAAS,GAAG;IAC7EZ,oBAAA,CAAqB,CAAC;EACxB;EAGA,MAAM0B,qBAAA,GAAwBrB,IAAA,IAAQH,QAAA,GAAW;EACjD3B,KAAA,CAAMoD,SAAA,CAAU,MAAM;IACpB,IAAID,qBAAA,EAAuB;MACzBjB,WAAA,CAAY,CAAC;IACf;EACF,GAAG,CAACA,WAAA,EAAaiB,qBAAqB,CAAC;EAEvC,MAAM;IAAEE;EAAgB,IAAIpD,gBAAA,CAAiB;EAC7C,IAAI,CAACoD,eAAA,EAAiB;IACpB,MAAM,IAAIC,KAAA,CACRf,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eACrB,eACA,sCACN;EACF;EAEA,MAAMc,YAAA,GAAerD,WAAA,CAA0B,MAAM;IACnD,MAAMsD,mBAAA,GAAsB,mBAAIC,GAAA,CAAc;IAE9C,MAAMC,MAAA,GAAuB;MAC3BC,oBAAA,EAAsB;MACtBC,OAAA,EAAS;MACTC,CAAA,EAAG;MACHC,KAAA,EAAO;MACPC,QAAA,EAAU;MACVC,YAAA,EAAc;MACdC,IAAA,EAAMA,CAAA,KAAM,CAAC;MACbC,OAAA,EAASA,CAAA,KAAM,CAAC;MAChBC,UAAA,EAAY;MACZC,gBAAA,EAAkB;MAClBC,gBAAA,EAAmBC,EAAA,IAAO;QACxBd,mBAAA,CAAoBe,GAAA,CAAID,EAAE;QAC1B,OAAO,MAAM;UACXd,mBAAA,CAAoBgB,MAAA,CAAOF,EAAE;QAC/B;MACF;MACAG,iBAAA,EAAoBC,GAAA,IAAQ;QAC1B,IAAIA,GAAA,KAAQhB,MAAA,CAAOU,gBAAA,EAAkB;UACnCV,MAAA,CAAOU,gBAAA,GAAmBM,GAAA;UAC1BlB,mBAAA,CAAoBmB,OAAA,CAASL,EAAA,IAAOA,EAAA,CAAGI,GAAG,CAAC;QAC7C;MACF;IACF;IAEA,OAAOhB,MAAA;EACT,CAAC;EAGD,IAAIkB,mBAAA;EACJ,IAAIvE,KAAA,CAAMuE,mBAAA,KAAwB,QAAW;IAE3CA,mBAAA,GAAsBvE,KAAA,CAAMuE,mBAAA,IAAuB,CAAC9C,IAAA,IAAQ,CAACzB,KAAA,CAAMwE,KAAA;EACrE,WAAWxE,KAAA,CAAMyE,wBAAA,KAA6B,QAAW;IAEvD,IAAIvC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eAAe;MAC1CO,OAAA,CAAQC,IAAA,CACN,kFACF;IACF;IACA2B,mBAAA,GAAsB,CAACvE,KAAA,CAAMyE,wBAAA;EAC/B,OAAO;IAELF,mBAAA,GAAsB,CAAC9C,IAAA,IAAQ,CAACzB,KAAA,CAAMwE,KAAA;EACxC;EAEA,MAAME,YAAA,GAAe7D,UAAA,CAAW,CAAC;EACjC,MAAM8D,UAAA,GACJhE,cAAA,KAAmB,YACfL,SAAA,KAAc,OAAOoE,YAAA,KAAiB,WAAWA,YAAA,GAAe,OAAO,OACvEjE,cAAA;EAEN,MAAMmE,aAAA,GAAgB;IACpBD,UAAA;IACAD,YAAA;IACAH,mBAAA;IACArB,YAAA;IACAsB,KAAA,EAAO,CAAC,CAACxE,KAAA,CAAMwE,KAAA;IACf/C,IAAA,EAAMxB,KAAA,CAAMwB,IAAA;IACZQ,OAAA,EAAShC,KAAA,CAAMgC,OAAA;IACf4C,MAAA,EAAQ,CAAC,CAAC5E,KAAA,CAAM6E,QAAA;IAChBzE,UAAA;IACAF,SAAA;IACAG,SAAA;IACAC,YAAA;IACAwE,qBAAA,EAAuB/E,KAAA,CAAM+E,qBAAA,IAAyB;IACtD/D,qBAAA,EAAuBhB,KAAA,CAAMgB,qBAAA,IAAyB;IACtDgE,kBAAA,EAAoB9E,OAAA,CAAQ8E,kBAAA;IAC5BC,KAAA,EAAOjF,KAAA,CAAMkF,YAAA;IACbpE,MAAA;IACAQ,QAAA;IACAT,UAAA;IACAF,cAAA;IACAD,iBAAA;IACAmB,WAAA;IACAT,oBAAA;IACA+D,aAAA,EAAe;EACjB;EAEA,OAAOP,aAAA;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { useConfiguration } from "@hanzogui/core";
|
|
3
|
+
import { useConstant } from "@hanzogui/use-constant";
|
|
4
|
+
import { useControllableState } from "@hanzogui/use-controllable-state";
|
|
5
|
+
function useSheetProviderProps(props, state) {
|
|
6
|
+
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
|
7
|
+
var handleRef = React.useRef(null);
|
|
8
|
+
var contentRef = React.useRef(null);
|
|
9
|
+
var [frameSize, setFrameSize] = React.useState(0);
|
|
10
|
+
var [maxContentSize, setMaxContentSize] = React.useState(0);
|
|
11
|
+
var _props_snapPointsMode;
|
|
12
|
+
var snapPointsMode = (_props_snapPointsMode = props.snapPointsMode) !== null && _props_snapPointsMode !== void 0 ? _props_snapPointsMode : "percent";
|
|
13
|
+
var _props_snapPoints;
|
|
14
|
+
var snapPointsProp = (_props_snapPoints = props.snapPoints) !== null && _props_snapPoints !== void 0 ? _props_snapPoints : snapPointsMode === "percent" ? [80] : snapPointsMode === "constant" ? [256] : ["fit"];
|
|
15
|
+
var hasFit = snapPointsProp[0] === "fit";
|
|
16
|
+
var snapPoints = React.useMemo(function () {
|
|
17
|
+
return props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp;
|
|
18
|
+
}, [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]);
|
|
19
|
+
var [position_, setPositionImmediate] = useControllableState({
|
|
20
|
+
prop: props.position,
|
|
21
|
+
defaultProp: props.defaultPosition || (state.open ? 0 : -1),
|
|
22
|
+
onChange: props.onPositionChange,
|
|
23
|
+
strategy: "most-recent-wins"
|
|
24
|
+
});
|
|
25
|
+
var position = state.open === false ? -1 : position_;
|
|
26
|
+
var {
|
|
27
|
+
open
|
|
28
|
+
} = state;
|
|
29
|
+
var setPosition = React.useCallback(function (next) {
|
|
30
|
+
if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
|
|
31
|
+
state.setOpen(false);
|
|
32
|
+
} else {
|
|
33
|
+
setPositionImmediate(next);
|
|
34
|
+
}
|
|
35
|
+
}, [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]);
|
|
36
|
+
if (process.env.NODE_ENV === "development") {
|
|
37
|
+
if (snapPointsMode === "mixed" && snapPoints.some(function (p) {
|
|
38
|
+
if (typeof p === "string") {
|
|
39
|
+
if (p === "fit") {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
if (p.endsWith("%")) {
|
|
43
|
+
var n = Number(p.slice(0, -1));
|
|
44
|
+
return n < 0 || n > 100;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return typeof p !== "number" || p < 0;
|
|
49
|
+
})) {
|
|
50
|
+
console.warn('\u26A0\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or "fit" when snapPointsMode is mixed');
|
|
51
|
+
}
|
|
52
|
+
if (snapPointsMode === "mixed" && snapPoints.indexOf("fit") > 0) {
|
|
53
|
+
console.warn('\u26A0\uFE0F Invalid snapPoint given, "fit" must be the first/largest snap point when snapPointsMode is mixed');
|
|
54
|
+
}
|
|
55
|
+
if (snapPointsMode === "fit" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== "fit")) {
|
|
56
|
+
console.warn("\u26A0\uFE0F Invalid snapPoint given, there are no snap points when snapPointsMode is fit");
|
|
57
|
+
}
|
|
58
|
+
if (snapPointsMode === "constant" && snapPoints.some(function (p) {
|
|
59
|
+
return typeof p !== "number" || p < 0;
|
|
60
|
+
})) {
|
|
61
|
+
console.warn("\u26A0\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant");
|
|
62
|
+
}
|
|
63
|
+
if (snapPointsMode === "percent" && snapPoints.some(function (p) {
|
|
64
|
+
return typeof p !== "number" || p < 0 || p > 100;
|
|
65
|
+
})) {
|
|
66
|
+
console.warn("\u26A0\uFE0F Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
|
|
70
|
+
setPositionImmediate(0);
|
|
71
|
+
}
|
|
72
|
+
var shouldSetPositionOpen = open && position < 0;
|
|
73
|
+
React.useEffect(function () {
|
|
74
|
+
if (shouldSetPositionOpen) {
|
|
75
|
+
setPosition(0);
|
|
76
|
+
}
|
|
77
|
+
}, [setPosition, shouldSetPositionOpen]);
|
|
78
|
+
var {
|
|
79
|
+
animationDriver
|
|
80
|
+
} = useConfiguration();
|
|
81
|
+
if (!animationDriver) {
|
|
82
|
+
throw new Error(process.env.NODE_ENV === "production" ? `\u274C 008` : "Must set animations in gui.config.ts");
|
|
83
|
+
}
|
|
84
|
+
var scrollBridge = useConstant(function () {
|
|
85
|
+
var parentDragListeners = /* @__PURE__ */new Set();
|
|
86
|
+
var bridge = {
|
|
87
|
+
hasScrollableContent: false,
|
|
88
|
+
enabled: false,
|
|
89
|
+
y: 0,
|
|
90
|
+
paneY: 0,
|
|
91
|
+
paneMinY: 0,
|
|
92
|
+
scrollStartY: -1,
|
|
93
|
+
drag: function () {},
|
|
94
|
+
release: function () {},
|
|
95
|
+
scrollLock: false,
|
|
96
|
+
isParentDragging: false,
|
|
97
|
+
onParentDragging: function (cb) {
|
|
98
|
+
parentDragListeners.add(cb);
|
|
99
|
+
return function () {
|
|
100
|
+
parentDragListeners.delete(cb);
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
setParentDragging: function (val) {
|
|
104
|
+
if (val !== bridge.isParentDragging) {
|
|
105
|
+
bridge.isParentDragging = val;
|
|
106
|
+
parentDragListeners.forEach(function (cb) {
|
|
107
|
+
return cb(val);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
return bridge;
|
|
113
|
+
});
|
|
114
|
+
var disableRemoveScroll;
|
|
115
|
+
if (props.disableRemoveScroll !== void 0) {
|
|
116
|
+
disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;
|
|
117
|
+
} else if (props.forceRemoveScrollEnabled !== void 0) {
|
|
118
|
+
if (process.env.NODE_ENV === "development") {
|
|
119
|
+
console.warn("[Sheet] forceRemoveScrollEnabled is deprecated. Use disableRemoveScroll instead.");
|
|
120
|
+
}
|
|
121
|
+
disableRemoveScroll = !props.forceRemoveScrollEnabled;
|
|
122
|
+
} else {
|
|
123
|
+
disableRemoveScroll = !open || !props.modal;
|
|
124
|
+
}
|
|
125
|
+
var maxSnapPoint = snapPoints[0];
|
|
126
|
+
var screenSize = snapPointsMode === "percent" ? frameSize / ((typeof maxSnapPoint === "number" ? maxSnapPoint : 100) / 100) : maxContentSize;
|
|
127
|
+
var _props_dismissOnOverlayPress, _props_dismissOnSnapToBottom;
|
|
128
|
+
var providerProps = {
|
|
129
|
+
screenSize,
|
|
130
|
+
maxSnapPoint,
|
|
131
|
+
disableRemoveScroll,
|
|
132
|
+
scrollBridge,
|
|
133
|
+
modal: !!props.modal,
|
|
134
|
+
open: state.open,
|
|
135
|
+
setOpen: state.setOpen,
|
|
136
|
+
hidden: !!state.isHidden,
|
|
137
|
+
contentRef,
|
|
138
|
+
handleRef,
|
|
139
|
+
frameSize,
|
|
140
|
+
setFrameSize,
|
|
141
|
+
dismissOnOverlayPress: (_props_dismissOnOverlayPress = props.dismissOnOverlayPress) !== null && _props_dismissOnOverlayPress !== void 0 ? _props_dismissOnOverlayPress : true,
|
|
142
|
+
dismissOnSnapToBottom: (_props_dismissOnSnapToBottom = props.dismissOnSnapToBottom) !== null && _props_dismissOnSnapToBottom !== void 0 ? _props_dismissOnSnapToBottom : false,
|
|
143
|
+
onOverlayComponent: options.onOverlayComponent,
|
|
144
|
+
scope: props.__scopeSheet,
|
|
145
|
+
hasFit,
|
|
146
|
+
position,
|
|
147
|
+
snapPoints,
|
|
148
|
+
snapPointsMode,
|
|
149
|
+
setMaxContentSize,
|
|
150
|
+
setPosition,
|
|
151
|
+
setPositionImmediate,
|
|
152
|
+
onlyShowFrame: false
|
|
153
|
+
};
|
|
154
|
+
return providerProps;
|
|
155
|
+
}
|
|
156
|
+
export { useSheetProviderProps };
|
|
157
|
+
//# sourceMappingURL=useSheetProviderProps.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useConfiguration","useConstant","useControllableState","useSheetProviderProps","props","state","options","arguments","length","handleRef","useRef","contentRef","frameSize","setFrameSize","useState","maxContentSize","setMaxContentSize","_props_snapPointsMode","snapPointsMode","_props_snapPoints","snapPointsProp","snapPoints","hasFit","useMemo","dismissOnSnapToBottom","JSON","stringify","position_","setPositionImmediate","prop","position","defaultProp","defaultPosition","open","onChange","onPositionChange","strategy","setPosition","useCallback","next","setOpen","process","env","NODE_ENV","some","p","endsWith","n","Number","slice","console","warn","indexOf","shouldSetPositionOpen","useEffect","animationDriver","Error","scrollBridge","parentDragListeners","Set","bridge","hasScrollableContent","enabled","y","paneY","paneMinY","scrollStartY","drag","release","scrollLock","isParentDragging","onParentDragging","cb","add","delete","setParentDragging","val","forEach","disableRemoveScroll","modal","forceRemoveScrollEnabled","maxSnapPoint","screenSize","_props_dismissOnOverlayPress","_props_dismissOnSnapToBottom","providerProps","hidden","isHidden","dismissOnOverlayPress","onOverlayComponent"],"sources":["../../src/useSheetProviderProps.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
function useSheetScrollViewGestures({
|
|
3
|
+
scrollRef,
|
|
4
|
+
scrollBridge,
|
|
5
|
+
hasScrollableContent
|
|
6
|
+
}) {
|
|
7
|
+
const state = useRef({
|
|
8
|
+
startY: 0,
|
|
9
|
+
lastY: 0,
|
|
10
|
+
owner: "none",
|
|
11
|
+
panDragOffset: 0,
|
|
12
|
+
dys: [],
|
|
13
|
+
scrollYAtGestureStart: 0
|
|
14
|
+
});
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (!scrollRef.current) return;
|
|
17
|
+
const controller = new AbortController();
|
|
18
|
+
const node = scrollRef.current?.getScrollableNode();
|
|
19
|
+
if (!node) return;
|
|
20
|
+
node.style.overscrollBehavior = "contain";
|
|
21
|
+
let originalOverflow = "";
|
|
22
|
+
const disableScroll = () => {
|
|
23
|
+
if (node.style.overflowY !== "hidden") {
|
|
24
|
+
originalOverflow = node.style.overflowY;
|
|
25
|
+
node.style.overflowY = "hidden";
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const enableScroll = () => {
|
|
29
|
+
node.style.overflowY = originalOverflow;
|
|
30
|
+
};
|
|
31
|
+
const handleTouchStart = e => {
|
|
32
|
+
const touch = e.touches[0];
|
|
33
|
+
if (!touch) return;
|
|
34
|
+
const currentScrollY = node.scrollTop;
|
|
35
|
+
state.current = {
|
|
36
|
+
startY: touch.pageY,
|
|
37
|
+
lastY: touch.pageY,
|
|
38
|
+
owner: "none",
|
|
39
|
+
panDragOffset: 0,
|
|
40
|
+
dys: [],
|
|
41
|
+
scrollYAtGestureStart: currentScrollY
|
|
42
|
+
};
|
|
43
|
+
scrollBridge.scrollStartY = touch.pageY;
|
|
44
|
+
};
|
|
45
|
+
const handleTouchMove = e => {
|
|
46
|
+
const touch = e.touches[0];
|
|
47
|
+
if (!touch) return;
|
|
48
|
+
const {
|
|
49
|
+
current: s
|
|
50
|
+
} = state;
|
|
51
|
+
const pageY = touch.pageY;
|
|
52
|
+
const dy = pageY - s.lastY;
|
|
53
|
+
s.lastY = pageY;
|
|
54
|
+
if (dy === 0) return;
|
|
55
|
+
const isDraggingDown = dy > 0;
|
|
56
|
+
const currentScrollY = node.scrollTop;
|
|
57
|
+
const isPaneAtTop = scrollBridge.paneY <= scrollBridge.paneMinY + 5;
|
|
58
|
+
scrollBridge.y = currentScrollY;
|
|
59
|
+
let shouldPanOwn = false;
|
|
60
|
+
if (!isPaneAtTop) {
|
|
61
|
+
shouldPanOwn = true;
|
|
62
|
+
} else if (currentScrollY <= 0 && isDraggingDown) {
|
|
63
|
+
shouldPanOwn = true;
|
|
64
|
+
}
|
|
65
|
+
const newOwner = shouldPanOwn ? "pan" : "scroll";
|
|
66
|
+
if (newOwner !== s.owner) {
|
|
67
|
+
if (newOwner === "pan") {
|
|
68
|
+
s.panDragOffset = 0;
|
|
69
|
+
s.dys = [];
|
|
70
|
+
scrollBridge.setParentDragging(true);
|
|
71
|
+
disableScroll();
|
|
72
|
+
} else {
|
|
73
|
+
scrollBridge.setParentDragging(false);
|
|
74
|
+
scrollBridge.scrollLock = false;
|
|
75
|
+
enableScroll();
|
|
76
|
+
}
|
|
77
|
+
s.owner = newOwner;
|
|
78
|
+
}
|
|
79
|
+
if (s.owner === "pan") {
|
|
80
|
+
if (e.cancelable) e.preventDefault();
|
|
81
|
+
s.panDragOffset += dy;
|
|
82
|
+
scrollBridge.drag(s.panDragOffset);
|
|
83
|
+
s.dys.push(dy);
|
|
84
|
+
if (s.dys.length > 100) s.dys = s.dys.slice(-10);
|
|
85
|
+
} else if (s.owner === "scroll") {
|
|
86
|
+
const scrollDelta = -dy;
|
|
87
|
+
const maxScrollY = node.scrollHeight - node.clientHeight;
|
|
88
|
+
const newScrollY = Math.max(0, Math.min(maxScrollY, currentScrollY + scrollDelta));
|
|
89
|
+
if (newScrollY !== currentScrollY) {
|
|
90
|
+
node.scrollTop = newScrollY;
|
|
91
|
+
scrollBridge.y = newScrollY;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const handleTouchEnd = () => {
|
|
96
|
+
const {
|
|
97
|
+
current: s
|
|
98
|
+
} = state;
|
|
99
|
+
if (s.owner === "pan") {
|
|
100
|
+
scrollBridge.setParentDragging(false);
|
|
101
|
+
let vy = 0;
|
|
102
|
+
if (s.dys.length) {
|
|
103
|
+
const recentDys = s.dys.slice(-10);
|
|
104
|
+
const dist = recentDys.reduce((a, b) => a + b, 0);
|
|
105
|
+
vy = dist / recentDys.length * 0.04;
|
|
106
|
+
}
|
|
107
|
+
scrollBridge.release({
|
|
108
|
+
dragAt: s.panDragOffset,
|
|
109
|
+
vy
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
enableScroll();
|
|
113
|
+
s.owner = "none";
|
|
114
|
+
s.panDragOffset = 0;
|
|
115
|
+
s.dys = [];
|
|
116
|
+
};
|
|
117
|
+
node.addEventListener("touchstart", handleTouchStart, {
|
|
118
|
+
signal: controller.signal,
|
|
119
|
+
passive: true
|
|
120
|
+
});
|
|
121
|
+
node.addEventListener("touchmove", handleTouchMove, {
|
|
122
|
+
signal: controller.signal,
|
|
123
|
+
passive: false
|
|
124
|
+
});
|
|
125
|
+
node.addEventListener("touchend", handleTouchEnd, {
|
|
126
|
+
signal: controller.signal,
|
|
127
|
+
passive: true
|
|
128
|
+
});
|
|
129
|
+
node.addEventListener("touchcancel", handleTouchEnd, {
|
|
130
|
+
signal: controller.signal,
|
|
131
|
+
passive: true
|
|
132
|
+
});
|
|
133
|
+
return () => {
|
|
134
|
+
enableScroll();
|
|
135
|
+
controller.abort();
|
|
136
|
+
};
|
|
137
|
+
}, [scrollRef, scrollBridge, hasScrollableContent]);
|
|
138
|
+
return {};
|
|
139
|
+
}
|
|
140
|
+
export { useSheetScrollViewGestures };
|
|
141
|
+
//# sourceMappingURL=useSheetScrollViewGestures.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useSheetScrollViewGestures","scrollRef","scrollBridge","hasScrollableContent","state","startY","lastY","owner","panDragOffset","dys","scrollYAtGestureStart","current","controller","AbortController","node","getScrollableNode","style","overscrollBehavior","originalOverflow","disableScroll","overflowY","enableScroll","handleTouchStart","e","touch","touches","currentScrollY","scrollTop","pageY","scrollStartY","handleTouchMove","s","dy","isDraggingDown","isPaneAtTop","paneY","paneMinY","y","shouldPanOwn","newOwner","setParentDragging","scrollLock","cancelable","preventDefault","drag","push","length","slice","scrollDelta","maxScrollY","scrollHeight","clientHeight","newScrollY","Math","max","min","handleTouchEnd","vy","recentDys","dist","reduce","a","b","release","dragAt","addEventListener","signal","passive","abort"],"sources":["../../src/useSheetScrollViewGestures.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|