@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,180 @@
|
|
|
1
|
+
import { composeRefs } from "@hanzogui/compose-refs";
|
|
2
|
+
import { View } from "@hanzogui/core";
|
|
3
|
+
import { ScrollView } from "@hanzogui/scroll-view";
|
|
4
|
+
import { useControllableState } from "@hanzogui/use-controllable-state";
|
|
5
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
6
|
+
import { useGestureSheetContext } from "./GestureSheetContext.mjs";
|
|
7
|
+
import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.mjs";
|
|
8
|
+
import { useSheetContext } from "./SheetContext.mjs";
|
|
9
|
+
import { useSheetScrollViewGestures } from "./useSheetScrollViewGestures.mjs";
|
|
10
|
+
import { jsx } from "react/jsx-runtime";
|
|
11
|
+
const SHEET_SCROLL_VIEW_NAME = "SheetScrollView";
|
|
12
|
+
const SheetScrollView = React.forwardRef(({
|
|
13
|
+
__scopeSheet,
|
|
14
|
+
children,
|
|
15
|
+
onScroll,
|
|
16
|
+
scrollEnabled: scrollEnabledProp,
|
|
17
|
+
...props
|
|
18
|
+
}, ref) => {
|
|
19
|
+
const context = useSheetContext(SHEET_SCROLL_VIEW_NAME, __scopeSheet);
|
|
20
|
+
const gestureContext = useGestureSheetContext();
|
|
21
|
+
const {
|
|
22
|
+
scrollBridge,
|
|
23
|
+
setHasScrollView
|
|
24
|
+
} = context;
|
|
25
|
+
const [scrollEnabled] = useControllableState({
|
|
26
|
+
prop: scrollEnabledProp,
|
|
27
|
+
defaultProp: true
|
|
28
|
+
});
|
|
29
|
+
const scrollRef = React.useRef(null);
|
|
30
|
+
const panGestureRef = gestureContext?.panGestureRef;
|
|
31
|
+
const {
|
|
32
|
+
ScrollView: RNGHScrollView
|
|
33
|
+
} = getGestureHandlerState();
|
|
34
|
+
const useRNGHScrollView = isGestureHandlerEnabled() && RNGHScrollView && panGestureRef;
|
|
35
|
+
const currentScrollOffset = useRef(0);
|
|
36
|
+
const lockedScrollY = useRef(0);
|
|
37
|
+
const setScrollEnabled = (next, lockTo) => {
|
|
38
|
+
if (!next) {
|
|
39
|
+
const lockY = lockTo ?? currentScrollOffset.current;
|
|
40
|
+
lockedScrollY.current = lockY;
|
|
41
|
+
scrollBridge.scrollLockY = lockY;
|
|
42
|
+
scrollRef.current?.scrollTo?.({
|
|
43
|
+
x: 0,
|
|
44
|
+
y: lockY,
|
|
45
|
+
animated: false
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
lockedScrollY.current = currentScrollOffset.current;
|
|
49
|
+
scrollBridge.scrollLockY = void 0;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const forceScrollTo = y => {
|
|
53
|
+
scrollRef.current?.scrollTo?.({
|
|
54
|
+
x: 0,
|
|
55
|
+
y,
|
|
56
|
+
animated: false
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
setHasScrollView(true);
|
|
61
|
+
if (isGestureHandlerEnabled()) {
|
|
62
|
+
scrollBridge.setScrollEnabled = setScrollEnabled;
|
|
63
|
+
scrollBridge.forceScrollTo = forceScrollTo;
|
|
64
|
+
}
|
|
65
|
+
return () => {
|
|
66
|
+
setHasScrollView(false);
|
|
67
|
+
scrollBridge.setScrollEnabled = void 0;
|
|
68
|
+
scrollBridge.forceScrollTo = void 0;
|
|
69
|
+
};
|
|
70
|
+
}, []);
|
|
71
|
+
const [hasScrollableContent, setHasScrollableContent] = useState(true);
|
|
72
|
+
const parentHeight = useRef(0);
|
|
73
|
+
const contentHeight = useRef(0);
|
|
74
|
+
const updateScrollable = () => {
|
|
75
|
+
if (parentHeight.current && contentHeight.current) {
|
|
76
|
+
setHasScrollableContent(contentHeight.current > parentHeight.current);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
scrollBridge.hasScrollableContent = hasScrollableContent;
|
|
81
|
+
}, [hasScrollableContent]);
|
|
82
|
+
const gestureProps = useSheetScrollViewGestures({
|
|
83
|
+
scrollRef,
|
|
84
|
+
scrollBridge,
|
|
85
|
+
hasScrollableContent,
|
|
86
|
+
scrollEnabled,
|
|
87
|
+
setScrollEnabled
|
|
88
|
+
});
|
|
89
|
+
const contentWrapper = /* @__PURE__ */jsx(View, {
|
|
90
|
+
onLayout: e => {
|
|
91
|
+
const height = Math.floor(e.nativeEvent.layout.height);
|
|
92
|
+
if (height !== contentHeight.current) {
|
|
93
|
+
contentHeight.current = height;
|
|
94
|
+
updateScrollable();
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
children
|
|
98
|
+
});
|
|
99
|
+
if (useRNGHScrollView && RNGHScrollView && panGestureRef) {
|
|
100
|
+
const RNGHComponent = RNGHScrollView;
|
|
101
|
+
return /* @__PURE__ */jsx(RNGHComponent, {
|
|
102
|
+
ref: composeRefs(scrollRef, ref),
|
|
103
|
+
style: {
|
|
104
|
+
flex: 1
|
|
105
|
+
},
|
|
106
|
+
scrollEventThrottle: 1,
|
|
107
|
+
scrollEnabled,
|
|
108
|
+
simultaneousHandlers: [panGestureRef],
|
|
109
|
+
onLayout: e => {
|
|
110
|
+
parentHeight.current = Math.ceil(e.nativeEvent.layout.height);
|
|
111
|
+
updateScrollable();
|
|
112
|
+
},
|
|
113
|
+
onScroll: e => {
|
|
114
|
+
const {
|
|
115
|
+
y
|
|
116
|
+
} = e.nativeEvent.contentOffset;
|
|
117
|
+
currentScrollOffset.current = y;
|
|
118
|
+
if (scrollBridge.scrollLockY !== void 0) {
|
|
119
|
+
if (y !== scrollBridge.scrollLockY) {
|
|
120
|
+
scrollRef.current?.scrollTo?.({
|
|
121
|
+
x: 0,
|
|
122
|
+
y: scrollBridge.scrollLockY,
|
|
123
|
+
animated: false
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
scrollBridge.y = scrollBridge.scrollLockY;
|
|
127
|
+
onScroll?.({
|
|
128
|
+
...e,
|
|
129
|
+
nativeEvent: {
|
|
130
|
+
...e.nativeEvent,
|
|
131
|
+
contentOffset: {
|
|
132
|
+
...e.nativeEvent.contentOffset,
|
|
133
|
+
y: scrollBridge.scrollLockY
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
scrollBridge.y = y;
|
|
140
|
+
if (y > 0) scrollBridge.scrollStartY = -1;
|
|
141
|
+
onScroll?.(e);
|
|
142
|
+
},
|
|
143
|
+
contentContainerStyle: {
|
|
144
|
+
minHeight: "100%"
|
|
145
|
+
},
|
|
146
|
+
bounces: false,
|
|
147
|
+
keyboardShouldPersistTaps: "always",
|
|
148
|
+
keyboardDismissMode: "none",
|
|
149
|
+
...props,
|
|
150
|
+
children: contentWrapper
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return /* @__PURE__ */jsx(ScrollView, {
|
|
154
|
+
onLayout: e => {
|
|
155
|
+
parentHeight.current = Math.ceil(e.nativeEvent.layout.height);
|
|
156
|
+
updateScrollable();
|
|
157
|
+
},
|
|
158
|
+
ref: composeRefs(scrollRef, ref),
|
|
159
|
+
flex: 1,
|
|
160
|
+
scrollEventThrottle: 1,
|
|
161
|
+
className: "_ovs-contain",
|
|
162
|
+
scrollEnabled,
|
|
163
|
+
onScroll: e => {
|
|
164
|
+
const {
|
|
165
|
+
y
|
|
166
|
+
} = e.nativeEvent.contentOffset;
|
|
167
|
+
scrollBridge.y = y;
|
|
168
|
+
if (y > 0) scrollBridge.scrollStartY = -1;
|
|
169
|
+
onScroll?.(e);
|
|
170
|
+
},
|
|
171
|
+
contentContainerStyle: {
|
|
172
|
+
minHeight: "100%"
|
|
173
|
+
},
|
|
174
|
+
...gestureProps,
|
|
175
|
+
...props,
|
|
176
|
+
children: contentWrapper
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
export { SheetScrollView };
|
|
180
|
+
//# sourceMappingURL=SheetScrollView.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["composeRefs","View","ScrollView","useControllableState","React","useEffect","useRef","useState","useGestureSheetContext","getGestureHandlerState","isGestureHandlerEnabled","useSheetContext","useSheetScrollViewGestures","jsx","SHEET_SCROLL_VIEW_NAME","SheetScrollView","forwardRef","__scopeSheet","children","onScroll","scrollEnabled","scrollEnabledProp","props","ref","context","gestureContext","scrollBridge","setHasScrollView","prop","defaultProp","scrollRef","panGestureRef","RNGHScrollView","useRNGHScrollView","currentScrollOffset","lockedScrollY","setScrollEnabled","next","lockTo","lockY","current","scrollLockY","scrollTo","x","y","animated","forceScrollTo","hasScrollableContent","setHasScrollableContent","parentHeight","contentHeight","updateScrollable","gestureProps","contentWrapper","onLayout","e","height","Math","floor","nativeEvent","layout","RNGHComponent","style","flex","scrollEventThrottle","simultaneousHandlers","ceil","contentOffset","scrollStartY","contentContainerStyle","minHeight","bounces","keyboardShouldPersistTaps","keyboardDismissMode","className"],"sources":["../../src/SheetScrollView.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { composeRefs } from "@hanzogui/compose-refs";
|
|
3
|
+
import { View } from "@hanzogui/core";
|
|
4
|
+
import { ScrollView } from "@hanzogui/scroll-view";
|
|
5
|
+
import { useControllableState } from "@hanzogui/use-controllable-state";
|
|
6
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
7
|
+
import { useGestureSheetContext } from "./GestureSheetContext.native.js";
|
|
8
|
+
import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.native.js";
|
|
9
|
+
import { useSheetContext } from "./SheetContext.native.js";
|
|
10
|
+
import { useSheetScrollViewGestures } from "./useSheetScrollViewGestures.native.js";
|
|
11
|
+
var SHEET_SCROLL_VIEW_NAME = "SheetScrollView";
|
|
12
|
+
var SheetScrollView = /* @__PURE__ */React.forwardRef(function (param, ref) {
|
|
13
|
+
var {
|
|
14
|
+
__scopeSheet,
|
|
15
|
+
children,
|
|
16
|
+
onScroll,
|
|
17
|
+
scrollEnabled: scrollEnabledProp,
|
|
18
|
+
...props
|
|
19
|
+
} = param;
|
|
20
|
+
var context = useSheetContext(SHEET_SCROLL_VIEW_NAME, __scopeSheet);
|
|
21
|
+
var gestureContext = useGestureSheetContext();
|
|
22
|
+
var {
|
|
23
|
+
scrollBridge,
|
|
24
|
+
setHasScrollView
|
|
25
|
+
} = context;
|
|
26
|
+
var [scrollEnabled] = useControllableState({
|
|
27
|
+
prop: scrollEnabledProp,
|
|
28
|
+
defaultProp: true
|
|
29
|
+
});
|
|
30
|
+
var scrollRef = React.useRef(null);
|
|
31
|
+
var panGestureRef = gestureContext === null || gestureContext === void 0 ? void 0 : gestureContext.panGestureRef;
|
|
32
|
+
var {
|
|
33
|
+
ScrollView: RNGHScrollView
|
|
34
|
+
} = getGestureHandlerState();
|
|
35
|
+
var useRNGHScrollView = isGestureHandlerEnabled() && RNGHScrollView && panGestureRef;
|
|
36
|
+
var currentScrollOffset = useRef(0);
|
|
37
|
+
var lockedScrollY = useRef(0);
|
|
38
|
+
var setScrollEnabled = function (next, lockTo) {
|
|
39
|
+
if (!next) {
|
|
40
|
+
var _scrollRef_current_scrollTo, _scrollRef_current;
|
|
41
|
+
var lockY = lockTo !== null && lockTo !== void 0 ? lockTo : currentScrollOffset.current;
|
|
42
|
+
lockedScrollY.current = lockY;
|
|
43
|
+
scrollBridge.scrollLockY = lockY;
|
|
44
|
+
(_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : (_scrollRef_current_scrollTo = _scrollRef_current.scrollTo) === null || _scrollRef_current_scrollTo === void 0 ? void 0 : _scrollRef_current_scrollTo.call(_scrollRef_current, {
|
|
45
|
+
x: 0,
|
|
46
|
+
y: lockY,
|
|
47
|
+
animated: false
|
|
48
|
+
});
|
|
49
|
+
} else {
|
|
50
|
+
lockedScrollY.current = currentScrollOffset.current;
|
|
51
|
+
scrollBridge.scrollLockY = void 0;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var forceScrollTo = function (y) {
|
|
55
|
+
var _scrollRef_current_scrollTo, _scrollRef_current;
|
|
56
|
+
(_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : (_scrollRef_current_scrollTo = _scrollRef_current.scrollTo) === null || _scrollRef_current_scrollTo === void 0 ? void 0 : _scrollRef_current_scrollTo.call(_scrollRef_current, {
|
|
57
|
+
x: 0,
|
|
58
|
+
y,
|
|
59
|
+
animated: false
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
useEffect(function () {
|
|
63
|
+
setHasScrollView(true);
|
|
64
|
+
if (isGestureHandlerEnabled()) {
|
|
65
|
+
scrollBridge.setScrollEnabled = setScrollEnabled;
|
|
66
|
+
scrollBridge.forceScrollTo = forceScrollTo;
|
|
67
|
+
}
|
|
68
|
+
return function () {
|
|
69
|
+
setHasScrollView(false);
|
|
70
|
+
scrollBridge.setScrollEnabled = void 0;
|
|
71
|
+
scrollBridge.forceScrollTo = void 0;
|
|
72
|
+
};
|
|
73
|
+
}, []);
|
|
74
|
+
var [hasScrollableContent, setHasScrollableContent] = useState(true);
|
|
75
|
+
var parentHeight = useRef(0);
|
|
76
|
+
var contentHeight = useRef(0);
|
|
77
|
+
var updateScrollable = function () {
|
|
78
|
+
if (parentHeight.current && contentHeight.current) {
|
|
79
|
+
setHasScrollableContent(contentHeight.current > parentHeight.current);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
useEffect(function () {
|
|
83
|
+
scrollBridge.hasScrollableContent = hasScrollableContent;
|
|
84
|
+
}, [hasScrollableContent]);
|
|
85
|
+
var gestureProps = useSheetScrollViewGestures({
|
|
86
|
+
scrollRef,
|
|
87
|
+
scrollBridge,
|
|
88
|
+
hasScrollableContent,
|
|
89
|
+
scrollEnabled,
|
|
90
|
+
setScrollEnabled
|
|
91
|
+
});
|
|
92
|
+
var contentWrapper = /* @__PURE__ */_jsx(View, {
|
|
93
|
+
onLayout: function (e) {
|
|
94
|
+
var height = Math.floor(e.nativeEvent.layout.height);
|
|
95
|
+
if (height !== contentHeight.current) {
|
|
96
|
+
contentHeight.current = height;
|
|
97
|
+
updateScrollable();
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
children
|
|
101
|
+
});
|
|
102
|
+
if (useRNGHScrollView && RNGHScrollView && panGestureRef) {
|
|
103
|
+
var RNGHComponent = RNGHScrollView;
|
|
104
|
+
return /* @__PURE__ */_jsx(RNGHComponent, {
|
|
105
|
+
ref: composeRefs(scrollRef, ref),
|
|
106
|
+
style: {
|
|
107
|
+
flex: 1
|
|
108
|
+
},
|
|
109
|
+
scrollEventThrottle: 1,
|
|
110
|
+
scrollEnabled,
|
|
111
|
+
simultaneousHandlers: [panGestureRef],
|
|
112
|
+
onLayout: function (e) {
|
|
113
|
+
parentHeight.current = Math.ceil(e.nativeEvent.layout.height);
|
|
114
|
+
updateScrollable();
|
|
115
|
+
},
|
|
116
|
+
onScroll: function (e) {
|
|
117
|
+
var {
|
|
118
|
+
y
|
|
119
|
+
} = e.nativeEvent.contentOffset;
|
|
120
|
+
currentScrollOffset.current = y;
|
|
121
|
+
if (scrollBridge.scrollLockY !== void 0) {
|
|
122
|
+
if (y !== scrollBridge.scrollLockY) {
|
|
123
|
+
var _scrollRef_current_scrollTo, _scrollRef_current;
|
|
124
|
+
(_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : (_scrollRef_current_scrollTo = _scrollRef_current.scrollTo) === null || _scrollRef_current_scrollTo === void 0 ? void 0 : _scrollRef_current_scrollTo.call(_scrollRef_current, {
|
|
125
|
+
x: 0,
|
|
126
|
+
y: scrollBridge.scrollLockY,
|
|
127
|
+
animated: false
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
scrollBridge.y = scrollBridge.scrollLockY;
|
|
131
|
+
onScroll === null || onScroll === void 0 ? void 0 : onScroll({
|
|
132
|
+
...e,
|
|
133
|
+
nativeEvent: {
|
|
134
|
+
...e.nativeEvent,
|
|
135
|
+
contentOffset: {
|
|
136
|
+
...e.nativeEvent.contentOffset,
|
|
137
|
+
y: scrollBridge.scrollLockY
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
scrollBridge.y = y;
|
|
144
|
+
if (y > 0) scrollBridge.scrollStartY = -1;
|
|
145
|
+
onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);
|
|
146
|
+
},
|
|
147
|
+
contentContainerStyle: {
|
|
148
|
+
minHeight: "100%"
|
|
149
|
+
},
|
|
150
|
+
bounces: false,
|
|
151
|
+
keyboardShouldPersistTaps: "always",
|
|
152
|
+
keyboardDismissMode: "none",
|
|
153
|
+
...props,
|
|
154
|
+
children: contentWrapper
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return /* @__PURE__ */_jsx(ScrollView, {
|
|
158
|
+
onLayout: function (e) {
|
|
159
|
+
parentHeight.current = Math.ceil(e.nativeEvent.layout.height);
|
|
160
|
+
updateScrollable();
|
|
161
|
+
},
|
|
162
|
+
ref: composeRefs(scrollRef, ref),
|
|
163
|
+
flex: 1,
|
|
164
|
+
scrollEventThrottle: 1,
|
|
165
|
+
className: "_ovs-contain",
|
|
166
|
+
scrollEnabled,
|
|
167
|
+
onScroll: function (e) {
|
|
168
|
+
var {
|
|
169
|
+
y
|
|
170
|
+
} = e.nativeEvent.contentOffset;
|
|
171
|
+
scrollBridge.y = y;
|
|
172
|
+
if (y > 0) scrollBridge.scrollStartY = -1;
|
|
173
|
+
onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);
|
|
174
|
+
},
|
|
175
|
+
contentContainerStyle: {
|
|
176
|
+
minHeight: "100%"
|
|
177
|
+
},
|
|
178
|
+
...gestureProps,
|
|
179
|
+
...props,
|
|
180
|
+
children: contentWrapper
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
export { SheetScrollView };
|
|
184
|
+
//# sourceMappingURL=SheetScrollView.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","composeRefs","View","ScrollView","useControllableState","React","useEffect","useRef","useState","useGestureSheetContext","getGestureHandlerState","isGestureHandlerEnabled","useSheetContext","useSheetScrollViewGestures","SHEET_SCROLL_VIEW_NAME","SheetScrollView","forwardRef","param","ref","__scopeSheet","children","onScroll","scrollEnabled","scrollEnabledProp","props","context","gestureContext","scrollBridge","setHasScrollView","prop","defaultProp","scrollRef","panGestureRef","RNGHScrollView","useRNGHScrollView","currentScrollOffset","lockedScrollY","setScrollEnabled","next","lockTo","_scrollRef_current_scrollTo","_scrollRef_current","lockY","current","scrollLockY","scrollTo","call","x","y","animated","forceScrollTo","hasScrollableContent","setHasScrollableContent","parentHeight","contentHeight","updateScrollable","gestureProps","contentWrapper","onLayout","e","height","Math","floor","nativeEvent","layout","RNGHComponent","style","flex","scrollEventThrottle","simultaneousHandlers","ceil","contentOffset","scrollStartY","contentContainerStyle","minHeight","bounces","keyboardShouldPersistTaps","keyboardDismissMode","className"],"sources":["../../src/SheetScrollView.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["constants","SHEET_NAME","SHEET_HANDLE_NAME","SHEET_OVERLAY_NAME"],"sources":["../../src/constants.tsx"],"sourcesContent":[null],"mappings":"AAAO,MAAMA,SAAA,GAAY,CAAC;AAEnB,MAAMC,UAAA,GAAa;AACnB,MAAMC,iBAAA,GAAoB;AAC1B,MAAMC,kBAAA,GAAqB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["constants","SHEET_NAME","SHEET_HANDLE_NAME","SHEET_OVERLAY_NAME"],"sources":["../../src/constants.tsx"],"sourcesContent":[null],"mappings":"AAAO,IAAAA,SAAM,KAAY;AAElB,IAAAC,UAAM,UAAa;AACnB,IAAAC,iBAAM,gBAAoB;AAC1B,IAAAC,kBAAM,iBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ParentSheetContext","createContext","zIndex","SheetInsideSheetContext"],"sources":["../../src/contexts.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,MAAW;AAEX,MAAMC,kBAAA,GAAqBD,KAAA,CAAME,aAAA,CAAc;EACpDC,MAAA,EAAQ;AACV,CAAC;AAEM,MAAMC,uBAAA,GAA0BJ,KAAA,CAAME,aAAA,CAE3C,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ParentSheetContext","createContext","zIndex","SheetInsideSheetContext"],"sources":["../../src/contexts.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,MAAW;AAEX,IAAAC,kBAAM,GAAAD,KAAqB,CAAAE,aAAM;EACtCC,MAAA,EAAQ;AACV,CAAC;AAEM,IAAAC,uBAAM,GAAAJ,KAA0B,CAAAE,aAAM,KAE3C","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SheetController","SheetControllerContext","useSheetController"],"sources":["../../src/controller.ts"],"sourcesContent":[null],"mappings":"AAGA,SAASA,eAAA,QAAuB;AAChC,SACEC,sBAAA,EACAC,kBAAA,QAEK","ignoreList":[]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { SheetController } from "./SheetController.native.js";
|
|
2
|
+
import { SheetControllerContext, useSheetController } from "./useSheetController.native.js";
|
|
3
|
+
export { SheetController, SheetControllerContext, useSheetController };
|
|
4
|
+
//# sourceMappingURL=controller.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SheetController","SheetControllerContext","useSheetController"],"sources":["../../src/controller.ts"],"sourcesContent":[null],"mappings":"AAGA,SAASA,eAAA,QAAuB;AAChC,SAAAC,sBAAA,EAAAC,kBAAA;AAAA,SAEEF,eAAA,EAAAC,sBAEK,E","ignoreList":[]}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { useComposedRefs } from "@hanzogui/compose-refs";
|
|
2
|
+
import { useIsomorphicLayoutEffect } from "@hanzogui/constants";
|
|
3
|
+
import { View } from "@hanzogui/core";
|
|
4
|
+
import { composeEventHandlers, withStaticProperties } from "@hanzogui/helpers";
|
|
5
|
+
import { resolveViewZIndex } from "@hanzogui/portal";
|
|
6
|
+
import { RemoveScroll } from "@hanzogui/remove-scroll";
|
|
7
|
+
import { useDidFinishSSR } from "@hanzogui/use-did-finish-ssr";
|
|
8
|
+
import { StackZIndexContext } from "@hanzogui/z-index-stack";
|
|
9
|
+
import { forwardRef, useMemo, useEffect, useRef } from "react";
|
|
10
|
+
import { Platform } from "react-native-web";
|
|
11
|
+
import { SHEET_HANDLE_NAME, SHEET_NAME, SHEET_OVERLAY_NAME } from "./constants.mjs";
|
|
12
|
+
import { getNativeSheet } from "./nativeSheet.mjs";
|
|
13
|
+
import { useSheetContext } from "./SheetContext.mjs";
|
|
14
|
+
import { SheetImplementationCustom } from "./SheetImplementationCustom.mjs";
|
|
15
|
+
import { SheetScrollView } from "./SheetScrollView.mjs";
|
|
16
|
+
import { useSheetController } from "./useSheetController.mjs";
|
|
17
|
+
import { useSheetOffscreenSize } from "./useSheetOffscreenSize.mjs";
|
|
18
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
19
|
+
function createSheet({
|
|
20
|
+
Handle,
|
|
21
|
+
Frame,
|
|
22
|
+
Overlay
|
|
23
|
+
}) {
|
|
24
|
+
const SheetHandle = Handle.styleable(({
|
|
25
|
+
__scopeSheet,
|
|
26
|
+
...props
|
|
27
|
+
}, forwardedRef) => {
|
|
28
|
+
const context = useSheetContext(SHEET_HANDLE_NAME, __scopeSheet);
|
|
29
|
+
const composedRef = useComposedRefs(context.handleRef, forwardedRef);
|
|
30
|
+
const wasDraggingRef = useRef(false);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!context.scrollBridge) return;
|
|
33
|
+
return context.scrollBridge.onParentDragging(isDragging => {
|
|
34
|
+
if (isDragging) wasDraggingRef.current = true;
|
|
35
|
+
});
|
|
36
|
+
}, [context.scrollBridge]);
|
|
37
|
+
if (context.onlyShowFrame) return null;
|
|
38
|
+
return /* @__PURE__ */jsx(Handle, {
|
|
39
|
+
ref: composedRef,
|
|
40
|
+
onPressIn: () => {
|
|
41
|
+
wasDraggingRef.current = false;
|
|
42
|
+
},
|
|
43
|
+
onPress: () => {
|
|
44
|
+
if (wasDraggingRef.current) {
|
|
45
|
+
wasDraggingRef.current = false;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const max = context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0);
|
|
49
|
+
const nextPos = (context.position + 1) % max;
|
|
50
|
+
context.setPosition(nextPos);
|
|
51
|
+
},
|
|
52
|
+
open: context.open,
|
|
53
|
+
...props
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
const SheetOverlay = Overlay.styleable((propsIn, ref) => {
|
|
57
|
+
const {
|
|
58
|
+
__scopeSheet,
|
|
59
|
+
...props
|
|
60
|
+
} = propsIn;
|
|
61
|
+
const context = useSheetContext(SHEET_OVERLAY_NAME, __scopeSheet);
|
|
62
|
+
const element = useMemo(() => {
|
|
63
|
+
return /* @__PURE__ */jsx(Overlay, {
|
|
64
|
+
...props,
|
|
65
|
+
onPress: composeEventHandlers(props.onPress, context.dismissOnOverlayPress ? () => {
|
|
66
|
+
context.setOpen(false);
|
|
67
|
+
} : void 0)
|
|
68
|
+
});
|
|
69
|
+
}, [props.onPress, props.opacity, context.dismissOnOverlayPress]);
|
|
70
|
+
useIsomorphicLayoutEffect(() => {
|
|
71
|
+
context.onOverlayComponent?.(element);
|
|
72
|
+
}, [element]);
|
|
73
|
+
if (context.onlyShowFrame) return null;
|
|
74
|
+
return null;
|
|
75
|
+
});
|
|
76
|
+
const SheetFrame = Frame.styleable(({
|
|
77
|
+
__scopeSheet,
|
|
78
|
+
adjustPaddingForOffscreenContent,
|
|
79
|
+
disableHideBottomOverflow,
|
|
80
|
+
children,
|
|
81
|
+
...props
|
|
82
|
+
}, forwardedRef) => {
|
|
83
|
+
const context = useSheetContext(SHEET_NAME, __scopeSheet);
|
|
84
|
+
const {
|
|
85
|
+
hasFit,
|
|
86
|
+
disableRemoveScroll,
|
|
87
|
+
frameSize,
|
|
88
|
+
contentRef,
|
|
89
|
+
open
|
|
90
|
+
} = context;
|
|
91
|
+
const composedContentRef = useComposedRefs(forwardedRef, contentRef);
|
|
92
|
+
const offscreenSize = useSheetOffscreenSize(context);
|
|
93
|
+
const stableFrameSize = useRef(frameSize);
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (open && frameSize) stableFrameSize.current = frameSize;
|
|
96
|
+
}, [open, frameSize]);
|
|
97
|
+
const sheetContents = useMemo(() => {
|
|
98
|
+
const shouldUseFixedHeight = hasFit && !open && stableFrameSize.current;
|
|
99
|
+
return /* @__PURE__ */jsxs(Frame, {
|
|
100
|
+
ref: composedContentRef,
|
|
101
|
+
flex: hasFit && open ? 0 : 1,
|
|
102
|
+
flexBasis: hasFit ? "auto" : void 0,
|
|
103
|
+
height: shouldUseFixedHeight ? stableFrameSize.current : hasFit ? void 0 : frameSize,
|
|
104
|
+
pointerEvents: open ? "auto" : "none",
|
|
105
|
+
"data-state": open ? "open" : "closed",
|
|
106
|
+
...props,
|
|
107
|
+
children: [/* @__PURE__ */jsx(StackZIndexContext, {
|
|
108
|
+
zIndex: resolveViewZIndex(props.zIndex),
|
|
109
|
+
children
|
|
110
|
+
}), adjustPaddingForOffscreenContent && /* @__PURE__ */jsx(View, {
|
|
111
|
+
"data-sheet-offscreen-pad": true,
|
|
112
|
+
height: offscreenSize,
|
|
113
|
+
width: "100%"
|
|
114
|
+
})]
|
|
115
|
+
});
|
|
116
|
+
}, [open, props, frameSize, offscreenSize, adjustPaddingForOffscreenContent, hasFit]);
|
|
117
|
+
return /* @__PURE__ */jsxs(Fragment, {
|
|
118
|
+
children: [/* @__PURE__ */jsx(RemoveScroll, {
|
|
119
|
+
enabled: !disableRemoveScroll && context.open,
|
|
120
|
+
children: sheetContents
|
|
121
|
+
}), !disableHideBottomOverflow && /* @__PURE__ */jsx(Frame, {
|
|
122
|
+
...props,
|
|
123
|
+
componentName: "SheetCover",
|
|
124
|
+
children: null,
|
|
125
|
+
testID: void 0,
|
|
126
|
+
id: void 0,
|
|
127
|
+
position: "absolute",
|
|
128
|
+
bottom: "-100%",
|
|
129
|
+
zIndex: -1,
|
|
130
|
+
height: context.frameSize,
|
|
131
|
+
left: 0,
|
|
132
|
+
right: 0,
|
|
133
|
+
borderWidth: 0,
|
|
134
|
+
borderRadius: 0,
|
|
135
|
+
shadowOpacity: 0
|
|
136
|
+
})]
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
const Sheet = forwardRef(function Sheet2(props, ref) {
|
|
140
|
+
const hydrated = useDidFinishSSR();
|
|
141
|
+
const {
|
|
142
|
+
isShowingNonSheet
|
|
143
|
+
} = useSheetController();
|
|
144
|
+
let SheetImplementation = SheetImplementationCustom;
|
|
145
|
+
if (props.native && Platform.OS === "ios") {}
|
|
146
|
+
if (isShowingNonSheet || !hydrated) return null;
|
|
147
|
+
return /* @__PURE__ */jsx(SheetImplementation, {
|
|
148
|
+
ref,
|
|
149
|
+
...props
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
const components = {
|
|
153
|
+
Frame: SheetFrame,
|
|
154
|
+
Overlay: SheetOverlay,
|
|
155
|
+
Handle: SheetHandle,
|
|
156
|
+
ScrollView: SheetScrollView
|
|
157
|
+
};
|
|
158
|
+
const Controlled = withStaticProperties(Sheet, components);
|
|
159
|
+
return withStaticProperties(Sheet, {
|
|
160
|
+
...components,
|
|
161
|
+
Controlled
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
export { createSheet };
|
|
165
|
+
//# sourceMappingURL=createSheet.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useComposedRefs","useIsomorphicLayoutEffect","View","composeEventHandlers","withStaticProperties","resolveViewZIndex","RemoveScroll","useDidFinishSSR","StackZIndexContext","forwardRef","useMemo","useEffect","useRef","Platform","SHEET_HANDLE_NAME","SHEET_NAME","SHEET_OVERLAY_NAME","getNativeSheet","useSheetContext","SheetImplementationCustom","SheetScrollView","useSheetController","useSheetOffscreenSize","Fragment","jsx","jsxs","createSheet","Handle","Frame","Overlay","SheetHandle","styleable","__scopeSheet","props","forwardedRef","context","composedRef","handleRef","wasDraggingRef","scrollBridge","onParentDragging","isDragging","current","onlyShowFrame","ref","onPressIn","onPress","max","snapPoints","length","dismissOnSnapToBottom","nextPos","position","setPosition","open","SheetOverlay","propsIn","element","dismissOnOverlayPress","setOpen","opacity","onOverlayComponent","SheetFrame","adjustPaddingForOffscreenContent","disableHideBottomOverflow","children","hasFit","disableRemoveScroll","frameSize","contentRef","composedContentRef","offscreenSize","stableFrameSize","sheetContents","shouldUseFixedHeight","flex","flexBasis","height","pointerEvents","zIndex","width","enabled","componentName","testID","id","bottom","left","right","borderWidth","borderRadius","shadowOpacity","Sheet","Sheet2","hydrated","isShowingNonSheet","SheetImplementation","native","OS","components","ScrollView","Controlled"],"sources":["../../src/createSheet.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|