@hanzogui/sheet 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/controller/index.cjs +2 -0
- package/controller/index.d.ts +5 -0
- package/controller/index.js +2 -0
- package/controller/index.native.cjs +2 -0
- package/controller/index.native.js +2 -0
- package/dist/cjs/GestureDetectorWrapper.cjs +48 -0
- package/dist/cjs/GestureDetectorWrapper.native.js +53 -0
- package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/cjs/GestureSheetContext.cjs +52 -0
- package/dist/cjs/GestureSheetContext.native.js +56 -0
- package/dist/cjs/GestureSheetContext.native.js.map +1 -0
- package/dist/cjs/Sheet.cjs +117 -0
- package/dist/cjs/Sheet.native.js +120 -0
- package/dist/cjs/Sheet.native.js.map +1 -0
- package/dist/cjs/SheetContext.cjs +32 -0
- package/dist/cjs/SheetContext.native.js +35 -0
- package/dist/cjs/SheetContext.native.js.map +1 -0
- package/dist/cjs/SheetController.cjs +65 -0
- package/dist/cjs/SheetController.native.js +71 -0
- package/dist/cjs/SheetController.native.js.map +1 -0
- package/dist/cjs/SheetImplementationCustom.cjs +472 -0
- package/dist/cjs/SheetImplementationCustom.native.js +524 -0
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -0
- package/dist/cjs/SheetScrollView.cjs +180 -0
- package/dist/cjs/SheetScrollView.native.js +197 -0
- package/dist/cjs/SheetScrollView.native.js.map +1 -0
- package/dist/cjs/constants.cjs +32 -0
- package/dist/cjs/constants.native.js +35 -0
- package/dist/cjs/constants.native.js.map +1 -0
- package/dist/cjs/contexts.cjs +42 -0
- package/dist/cjs/contexts.native.js +45 -0
- package/dist/cjs/contexts.native.js.map +1 -0
- package/dist/cjs/controller.cjs +29 -0
- package/dist/cjs/controller.native.js +32 -0
- package/dist/cjs/controller.native.js.map +1 -0
- package/dist/cjs/createSheet.cjs +191 -0
- package/dist/cjs/createSheet.native.js +208 -0
- package/dist/cjs/createSheet.native.js.map +1 -0
- package/dist/cjs/gestureState.cjs +39 -0
- package/dist/cjs/gestureState.native.js +42 -0
- package/dist/cjs/gestureState.native.js.map +1 -0
- package/dist/cjs/helpers.cjs +31 -0
- package/dist/cjs/helpers.native.js +35 -0
- package/dist/cjs/helpers.native.js.map +1 -0
- package/dist/cjs/index.cjs +28 -0
- package/dist/cjs/index.native.js +31 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/nativeSheet.cjs +87 -0
- package/dist/cjs/nativeSheet.native.js +101 -0
- package/dist/cjs/nativeSheet.native.js.map +1 -0
- package/dist/cjs/setupGestureHandler.cjs +46 -0
- package/dist/cjs/setupGestureHandler.native.js +50 -0
- package/dist/cjs/setupGestureHandler.native.js.map +1 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/types.native.js +19 -0
- package/dist/cjs/types.native.js.map +1 -0
- package/dist/cjs/useGestureHandlerPan.cjs +136 -0
- package/dist/cjs/useGestureHandlerPan.native.js +145 -0
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -0
- package/dist/cjs/useKeyboardControllerSheet.cjs +38 -0
- package/dist/cjs/useKeyboardControllerSheet.native.js +114 -0
- package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -0
- package/dist/cjs/useSheet.cjs +27 -0
- package/dist/cjs/useSheet.native.js +32 -0
- package/dist/cjs/useSheet.native.js.map +1 -0
- package/dist/cjs/useSheetController.cjs +50 -0
- package/dist/cjs/useSheetController.native.js +53 -0
- package/dist/cjs/useSheetController.native.js.map +1 -0
- package/dist/cjs/useSheetOffscreenSize.cjs +51 -0
- package/dist/cjs/useSheetOffscreenSize.native.js +61 -0
- package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/cjs/useSheetOpenState.cjs +49 -0
- package/dist/cjs/useSheetOpenState.native.js +56 -0
- package/dist/cjs/useSheetOpenState.native.js.map +1 -0
- package/dist/cjs/useSheetProviderProps.cjs +133 -0
- package/dist/cjs/useSheetProviderProps.native.js +153 -0
- package/dist/cjs/useSheetProviderProps.native.js.map +1 -0
- package/dist/cjs/useSheetScrollViewGestures.cjs +123 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js +110 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -0
- package/dist/esm/GestureDetectorWrapper.mjs +25 -0
- package/dist/esm/GestureDetectorWrapper.mjs.map +1 -0
- package/dist/esm/GestureDetectorWrapper.native.js +27 -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 +31 -0
- package/dist/esm/SheetController.mjs.map +1 -0
- package/dist/esm/SheetController.native.js +34 -0
- package/dist/esm/SheetController.native.js.map +1 -0
- package/dist/esm/SheetImplementationCustom.mjs +437 -0
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -0
- package/dist/esm/SheetImplementationCustom.native.js +487 -0
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -0
- package/dist/esm/SheetScrollView.mjs +146 -0
- package/dist/esm/SheetScrollView.mjs.map +1 -0
- package/dist/esm/SheetScrollView.native.js +160 -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 +168 -0
- package/dist/esm/createSheet.mjs.map +1 -0
- package/dist/esm/createSheet.native.js +182 -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 +8 -0
- package/dist/esm/helpers.mjs.map +1 -0
- package/dist/esm/helpers.native.js +9 -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 +63 -0
- package/dist/esm/nativeSheet.mjs.map +1 -0
- package/dist/esm/nativeSheet.native.js +74 -0
- package/dist/esm/nativeSheet.native.js.map +1 -0
- package/dist/esm/setupGestureHandler.mjs +22 -0
- package/dist/esm/setupGestureHandler.mjs.map +1 -0
- package/dist/esm/setupGestureHandler.native.js +23 -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 +113 -0
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -0
- package/dist/esm/useGestureHandlerPan.native.js +119 -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 +88 -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 +28 -0
- package/dist/esm/useSheetOffscreenSize.mjs.map +1 -0
- package/dist/esm/useSheetOffscreenSize.native.js +35 -0
- package/dist/esm/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/esm/useSheetOpenState.mjs +26 -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 +99 -0
- package/dist/esm/useSheetProviderProps.mjs.map +1 -0
- package/dist/esm/useSheetProviderProps.native.js +116 -0
- package/dist/esm/useSheetProviderProps.native.js.map +1 -0
- package/dist/esm/useSheetScrollViewGestures.mjs +100 -0
- package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -0
- package/dist/esm/useSheetScrollViewGestures.native.js +84 -0
- package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.mjs +25 -0
- package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.native.js +53 -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 +56 -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 +120 -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 +35 -0
- package/dist/jsx/SheetContext.native.js.map +1 -0
- package/dist/jsx/SheetController.mjs +31 -0
- package/dist/jsx/SheetController.mjs.map +1 -0
- package/dist/jsx/SheetController.native.js +71 -0
- package/dist/jsx/SheetController.native.js.map +1 -0
- package/dist/jsx/SheetImplementationCustom.mjs +437 -0
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -0
- package/dist/jsx/SheetImplementationCustom.native.js +524 -0
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -0
- package/dist/jsx/SheetScrollView.mjs +146 -0
- package/dist/jsx/SheetScrollView.mjs.map +1 -0
- package/dist/jsx/SheetScrollView.native.js +197 -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 +35 -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 +45 -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 +32 -0
- package/dist/jsx/controller.native.js.map +1 -0
- package/dist/jsx/createSheet.mjs +168 -0
- package/dist/jsx/createSheet.mjs.map +1 -0
- package/dist/jsx/createSheet.native.js +208 -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 +42 -0
- package/dist/jsx/gestureState.native.js.map +1 -0
- package/dist/jsx/helpers.mjs +8 -0
- package/dist/jsx/helpers.mjs.map +1 -0
- package/dist/jsx/helpers.native.js +35 -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 +31 -0
- package/dist/jsx/index.native.js.map +1 -0
- package/dist/jsx/nativeSheet.mjs +63 -0
- package/dist/jsx/nativeSheet.mjs.map +1 -0
- package/dist/jsx/nativeSheet.native.js +101 -0
- package/dist/jsx/nativeSheet.native.js.map +1 -0
- package/dist/jsx/setupGestureHandler.mjs +22 -0
- package/dist/jsx/setupGestureHandler.mjs.map +1 -0
- package/dist/jsx/setupGestureHandler.native.js +50 -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 +19 -0
- package/dist/jsx/types.native.js.map +1 -0
- package/dist/jsx/useGestureHandlerPan.mjs +113 -0
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -0
- package/dist/jsx/useGestureHandlerPan.native.js +145 -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 +114 -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 +32 -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 +53 -0
- package/dist/jsx/useSheetController.native.js.map +1 -0
- package/dist/jsx/useSheetOffscreenSize.mjs +28 -0
- package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -0
- package/dist/jsx/useSheetOffscreenSize.native.js +61 -0
- package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/jsx/useSheetOpenState.mjs +26 -0
- package/dist/jsx/useSheetOpenState.mjs.map +1 -0
- package/dist/jsx/useSheetOpenState.native.js +56 -0
- package/dist/jsx/useSheetOpenState.native.js.map +1 -0
- package/dist/jsx/useSheetProviderProps.mjs +99 -0
- package/dist/jsx/useSheetProviderProps.mjs.map +1 -0
- package/dist/jsx/useSheetProviderProps.native.js +153 -0
- package/dist/jsx/useSheetProviderProps.native.js.map +1 -0
- package/dist/jsx/useSheetScrollViewGestures.mjs +100 -0
- package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js +110 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -0
- package/next.md +78 -0
- package/package.json +96 -0
- package/setup-gesture-handler/index.cjs +2 -0
- package/setup-gesture-handler/index.js +2 -0
- package/setup-gesture-handler/index.native.cjs +2 -0
- package/setup-gesture-handler/index.native.js +2 -0
- package/setup-gesture-handler.cjs +1 -0
- package/src/GestureDetectorWrapper.tsx +41 -0
- package/src/GestureSheetContext.tsx +62 -0
- package/src/Sheet.tsx +114 -0
- package/src/SheetContext.tsx +11 -0
- package/src/SheetController.tsx +44 -0
- package/src/SheetImplementationCustom.tsx +868 -0
- package/src/SheetScrollView.tsx +195 -0
- package/src/constants.tsx +5 -0
- package/src/contexts.ts +9 -0
- package/src/controller.ts +9 -0
- package/src/createSheet.tsx +296 -0
- package/src/gestureState.ts +24 -0
- package/src/helpers.tsx +31 -0
- package/src/index.ts +11 -0
- package/src/nativeSheet.tsx +89 -0
- package/src/setupGestureHandler.ts +34 -0
- package/src/types.tsx +181 -0
- package/src/useGestureHandlerPan.tsx +364 -0
- package/src/useKeyboardControllerSheet.native.ts +136 -0
- package/src/useKeyboardControllerSheet.ts +26 -0
- package/src/useSheet.tsx +3 -0
- package/src/useSheetController.tsx +27 -0
- package/src/useSheetOffscreenSize.tsx +49 -0
- package/src/useSheetOpenState.tsx +33 -0
- package/src/useSheetProviderProps.tsx +223 -0
- package/src/useSheetScrollViewGestures.native.ts +163 -0
- package/src/useSheetScrollViewGestures.ts +194 -0
- package/tsconfig.json +56 -0
- package/types/GestureDetectorWrapper.d.ts +14 -0
- package/types/GestureSheetContext.d.ts +36 -0
- package/types/Sheet.d.ts +183 -0
- package/types/SheetContext.d.ts +43 -0
- package/types/SheetController.d.ts +6 -0
- package/types/SheetImplementationCustom.d.ts +36 -0
- package/types/SheetScrollView.d.ts +40 -0
- package/types/constants.d.ts +5 -0
- package/types/contexts.d.ts +6 -0
- package/types/controller.d.ts +3 -0
- package/types/createSheet.d.ts +194 -0
- package/types/gestureState.d.ts +11 -0
- package/types/helpers.d.ts +2 -0
- package/types/index.d.ts +12 -0
- package/types/nativeSheet.d.ts +10 -0
- package/types/setupGestureHandler.d.ts +11 -0
- package/types/types.d.ts +147 -0
- package/types/useGestureHandlerPan.d.ts +44 -0
- package/types/useKeyboardControllerSheet.d.ts +7 -0
- package/types/useKeyboardControllerSheet.native.d.ts +13 -0
- package/types/useSheet.d.ts +2 -0
- package/types/useSheetController.d.ts +17 -0
- package/types/useSheetOffscreenSize.d.ts +3 -0
- package/types/useSheetOpenState.d.ts +9 -0
- package/types/useSheetProviderProps.d.ts +36 -0
- package/types/useSheetScrollViewGestures.d.ts +12 -0
- package/types/useSheetScrollViewGestures.native.d.ts +21 -0
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ProvideAdaptContext, useAdaptContext } from "@hanzo/gui-adapt";
|
|
3
|
+
import { AnimatePresence } from "@hanzo/gui-animate-presence";
|
|
4
|
+
import { useComposedRefs } from "@hanzo/gui-compose-refs";
|
|
5
|
+
import { isWeb, useIsomorphicLayoutEffect } from "@hanzo/gui-constants";
|
|
6
|
+
import { LayoutMeasurementController, View as TamaguiView, useConfiguration, useDidFinishSSR, useEvent, useThemeName } from "@hanzo/gui-core";
|
|
7
|
+
import { getSafeArea } from "@hanzo/gui-native";
|
|
8
|
+
import { needsPortalRepropagation, Portal } from "@hanzo/gui-portal";
|
|
9
|
+
import React, { useState } from "react";
|
|
10
|
+
import { Dimensions, PanResponder, View } from "react-native";
|
|
11
|
+
import { ParentSheetContext, SheetInsideSheetContext } from "./contexts.native.js";
|
|
12
|
+
import { GestureDetectorWrapper } from "./GestureDetectorWrapper.native.js";
|
|
13
|
+
import { GestureSheetProvider } from "./GestureSheetContext.native.js";
|
|
14
|
+
import { resisted } from "./helpers.native.js";
|
|
15
|
+
import { SheetProvider } from "./SheetContext.native.js";
|
|
16
|
+
import { useGestureHandlerPan } from "./useGestureHandlerPan.native.js";
|
|
17
|
+
import { useKeyboardControllerSheet } from "./useKeyboardControllerSheet.native.js";
|
|
18
|
+
import { useSheetOpenState } from "./useSheetOpenState.native.js";
|
|
19
|
+
import { useSheetProviderProps } from "./useSheetProviderProps.native.js";
|
|
20
|
+
var hiddenSize = 10000.1,
|
|
21
|
+
_cachedSafeAreaTop;
|
|
22
|
+
function getSafeAreaTopInset() {
|
|
23
|
+
return _cachedSafeAreaTop !== void 0 || (_cachedSafeAreaTop = getSafeArea().getInsets().top), _cachedSafeAreaTop;
|
|
24
|
+
}
|
|
25
|
+
var relativeDimensionTo = isWeb ? "window" : "screen",
|
|
26
|
+
SheetImplementationCustom = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
|
|
27
|
+
var parentSheet = React.useContext(ParentSheetContext),
|
|
28
|
+
{
|
|
29
|
+
transition,
|
|
30
|
+
transitionConfig: transitionConfigProp,
|
|
31
|
+
modal = !1,
|
|
32
|
+
zIndex = parentSheet.zIndex + 1,
|
|
33
|
+
moveOnKeyboardChange = !1,
|
|
34
|
+
unmountChildrenWhenHidden = !1,
|
|
35
|
+
portalProps,
|
|
36
|
+
containerComponent: ContainerComponent = React.Fragment,
|
|
37
|
+
onAnimationComplete
|
|
38
|
+
} = props,
|
|
39
|
+
state = useSheetOpenState(props),
|
|
40
|
+
[overlayComponent, setOverlayComponent] = React.useState(null),
|
|
41
|
+
providerProps = useSheetProviderProps(props, state, {
|
|
42
|
+
onOverlayComponent: setOverlayComponent
|
|
43
|
+
}),
|
|
44
|
+
{
|
|
45
|
+
frameSize,
|
|
46
|
+
setFrameSize,
|
|
47
|
+
snapPoints,
|
|
48
|
+
snapPointsMode,
|
|
49
|
+
hasFit,
|
|
50
|
+
position,
|
|
51
|
+
setPosition,
|
|
52
|
+
scrollBridge,
|
|
53
|
+
screenSize,
|
|
54
|
+
setMaxContentSize,
|
|
55
|
+
maxSnapPoint
|
|
56
|
+
} = providerProps,
|
|
57
|
+
{
|
|
58
|
+
open,
|
|
59
|
+
controller,
|
|
60
|
+
isHidden
|
|
61
|
+
} = state,
|
|
62
|
+
openRef = React.useRef(open);
|
|
63
|
+
openRef.current = open;
|
|
64
|
+
var sheetRef = React.useRef(void 0),
|
|
65
|
+
ref = useComposedRefs(forwardedRef, sheetRef, providerProps.contentRef),
|
|
66
|
+
{
|
|
67
|
+
animationDriver
|
|
68
|
+
} = useConfiguration();
|
|
69
|
+
if (!animationDriver) throw new Error("Sheet requires an animation driver to be set");
|
|
70
|
+
var transitionConfig = function () {
|
|
71
|
+
var _animationDriver_animations;
|
|
72
|
+
if (transitionConfigProp) return transitionConfigProp;
|
|
73
|
+
var [animationProp, animationPropConfig] = transition ? Array.isArray(transition) ? transition : [transition] : [];
|
|
74
|
+
return animationProp && !((_animationDriver_animations = animationDriver.animations) === null || _animationDriver_animations === void 0) && _animationDriver_animations[animationProp] ? {
|
|
75
|
+
...animationDriver.animations[animationProp],
|
|
76
|
+
...animationPropConfig
|
|
77
|
+
} : null;
|
|
78
|
+
}(),
|
|
79
|
+
[isShowingInnerSheet, setIsShowingInnerSheet] = React.useState(!1),
|
|
80
|
+
shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet && needsPortalRepropagation(),
|
|
81
|
+
sheetInsideSheet = React.useContext(SheetInsideSheetContext),
|
|
82
|
+
onInnerSheet = React.useCallback(function (hasChild) {
|
|
83
|
+
setIsShowingInnerSheet(hasChild);
|
|
84
|
+
}, []),
|
|
85
|
+
stableFrameSize = React.useRef(frameSize);
|
|
86
|
+
React.useEffect(function () {
|
|
87
|
+
open && frameSize && (stableFrameSize.current = frameSize);
|
|
88
|
+
}, [open, frameSize]);
|
|
89
|
+
var effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize,
|
|
90
|
+
positions = React.useMemo(function () {
|
|
91
|
+
return snapPoints.map(function (point) {
|
|
92
|
+
return getYPositions(snapPointsMode, point, screenSize, effectiveFrameSize);
|
|
93
|
+
});
|
|
94
|
+
}, [screenSize, effectiveFrameSize, snapPoints, snapPointsMode]),
|
|
95
|
+
{
|
|
96
|
+
keyboardHeight,
|
|
97
|
+
isKeyboardVisible,
|
|
98
|
+
dismissKeyboard,
|
|
99
|
+
pauseKeyboardHandler,
|
|
100
|
+
flushPendingHide
|
|
101
|
+
} = useKeyboardControllerSheet({
|
|
102
|
+
enabled: !isWeb && !!moveOnKeyboardChange
|
|
103
|
+
}),
|
|
104
|
+
[isDragging, setIsDragging_] = React.useState(!1),
|
|
105
|
+
isDraggingRef = React.useRef(!1),
|
|
106
|
+
setIsDragging = React.useCallback(function (val) {
|
|
107
|
+
isDraggingRef.current = val, pauseKeyboardHandler.current = val, setIsDragging_(val), val || flushPendingHide();
|
|
108
|
+
}, [pauseKeyboardHandler, flushPendingHide]),
|
|
109
|
+
activePositionsRef = React.useRef(positions),
|
|
110
|
+
activePositions = React.useMemo(function () {
|
|
111
|
+
if (isDragging || isDraggingRef.current) return activePositionsRef.current;
|
|
112
|
+
var result;
|
|
113
|
+
if (!isKeyboardVisible || keyboardHeight <= 0) result = positions;else {
|
|
114
|
+
var safeAreaTop = isWeb ? 0 : getSafeAreaTopInset();
|
|
115
|
+
result = positions.map(function (p) {
|
|
116
|
+
return screenSize && p >= screenSize ? p : Math.max(safeAreaTop, p - keyboardHeight);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return activePositionsRef.current = result, result;
|
|
120
|
+
}, [positions, isKeyboardVisible, keyboardHeight, screenSize, isDragging]),
|
|
121
|
+
{
|
|
122
|
+
useAnimatedNumber,
|
|
123
|
+
useAnimatedNumberStyle,
|
|
124
|
+
useAnimatedNumberReaction
|
|
125
|
+
} = animationDriver,
|
|
126
|
+
_animationDriver_View,
|
|
127
|
+
AnimatedView = (_animationDriver_View = animationDriver.View) !== null && _animationDriver_View !== void 0 ? _animationDriver_View : TamaguiView;
|
|
128
|
+
useIsomorphicLayoutEffect(function () {
|
|
129
|
+
if (sheetInsideSheet && open) return sheetInsideSheet(!0), function () {
|
|
130
|
+
sheetInsideSheet(!1);
|
|
131
|
+
};
|
|
132
|
+
}, [sheetInsideSheet, open]);
|
|
133
|
+
var nextParentContext = React.useMemo(function () {
|
|
134
|
+
return {
|
|
135
|
+
zIndex
|
|
136
|
+
};
|
|
137
|
+
}, [zIndex]),
|
|
138
|
+
isMounted = useDidFinishSSR(),
|
|
139
|
+
startPosition = isMounted && screenSize ? screenSize : hiddenSize,
|
|
140
|
+
animatedNumber = useAnimatedNumber(startPosition),
|
|
141
|
+
at = React.useRef(startPosition),
|
|
142
|
+
hasntMeasured = at.current === hiddenSize,
|
|
143
|
+
[disableAnimation, setDisableAnimation] = useState(hasntMeasured),
|
|
144
|
+
skipAdaptAnimation = React.useRef(!1);
|
|
145
|
+
controller?.skipNextAnimation && (skipAdaptAnimation.current = !0);
|
|
146
|
+
var hasScrollView = React.useRef(!1),
|
|
147
|
+
opacityFallbackTimer = React.useRef(null);
|
|
148
|
+
useAnimatedNumberReaction({
|
|
149
|
+
value: animatedNumber,
|
|
150
|
+
hostRef: sheetRef
|
|
151
|
+
}, React.useCallback(function (value) {
|
|
152
|
+
at.current = value, scrollBridge.paneY = value;
|
|
153
|
+
var minY = activePositions[0],
|
|
154
|
+
wasAtTop = scrollBridge.isAtTop,
|
|
155
|
+
nowAtTop = value <= minY + 5;
|
|
156
|
+
if (wasAtTop !== nowAtTop) if (scrollBridge.isAtTop = nowAtTop, nowAtTop) {
|
|
157
|
+
var _scrollBridge_setScrollEnabled;
|
|
158
|
+
if (scrollBridge.y > 0) {
|
|
159
|
+
var _scrollBridge_forceScrollTo;
|
|
160
|
+
(_scrollBridge_forceScrollTo = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo === void 0 || _scrollBridge_forceScrollTo.call(scrollBridge, 0), scrollBridge.y = 0;
|
|
161
|
+
}
|
|
162
|
+
scrollBridge.scrollLockY = void 0, (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !0);
|
|
163
|
+
} else {
|
|
164
|
+
var _scrollBridge_setScrollEnabled1;
|
|
165
|
+
scrollBridge.scrollLockY = 0, (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, !1);
|
|
166
|
+
}
|
|
167
|
+
}, [animationDriver, activePositions]));
|
|
168
|
+
function stopSpring() {
|
|
169
|
+
animatedNumber.stop(), scrollBridge.onFinishAnimate && (scrollBridge.onFinishAnimate(), scrollBridge.onFinishAnimate = void 0);
|
|
170
|
+
}
|
|
171
|
+
var animateTo = useEvent(function (position2, animationOverride) {
|
|
172
|
+
if (frameSize !== 0) {
|
|
173
|
+
var toValue = isHidden || position2 === -1 ? screenSize : activePositions[position2];
|
|
174
|
+
if (at.current !== toValue) {
|
|
175
|
+
at.current = toValue, stopSpring();
|
|
176
|
+
var isOpenAnimation = position2 !== -1 && !isHidden;
|
|
177
|
+
opacityFallbackTimer.current && (clearTimeout(opacityFallbackTimer.current), opacityFallbackTimer.current = null);
|
|
178
|
+
var animationCompleteCallback = function () {
|
|
179
|
+
opacityFallbackTimer.current && (clearTimeout(opacityFallbackTimer.current), opacityFallbackTimer.current = null), !isOpenAnimation && !open && setOpacity(0), onAnimationComplete?.({
|
|
180
|
+
open: isOpenAnimation
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
if (isOpenAnimation || (opacityFallbackTimer.current = setTimeout(function () {
|
|
184
|
+
opacityFallbackTimer.current = null, openRef.current || setOpacity(0);
|
|
185
|
+
}, 1e3)), skipAdaptAnimation.current) {
|
|
186
|
+
skipAdaptAnimation.current = !1, animatedNumber.setValue(toValue, {
|
|
187
|
+
type: "timing",
|
|
188
|
+
duration: 0
|
|
189
|
+
}, animationCompleteCallback);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
animatedNumber.setValue(toValue, animationOverride || {
|
|
193
|
+
type: "spring",
|
|
194
|
+
...transitionConfig
|
|
195
|
+
}, animationCompleteCallback);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
useIsomorphicLayoutEffect(function () {
|
|
200
|
+
if (hasntMeasured && screenSize && frameSize) {
|
|
201
|
+
at.current = screenSize, animatedNumber.setValue(screenSize, {
|
|
202
|
+
type: "timing",
|
|
203
|
+
duration: 0
|
|
204
|
+
}, function () {
|
|
205
|
+
setTimeout(function () {
|
|
206
|
+
setDisableAnimation(!1);
|
|
207
|
+
}, 10);
|
|
208
|
+
});
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (!disableAnimation && !(!frameSize || !screenSize || isHidden || hasntMeasured && !open) && (animateTo(position), position === -1 && (scrollBridge.scrollLock = !1, scrollBridge.scrollStartY = -1), open && position >= 0)) {
|
|
212
|
+
var isTopPosition = position === 0;
|
|
213
|
+
if (scrollBridge.isAtTop = isTopPosition, isTopPosition) {
|
|
214
|
+
var _scrollBridge_setScrollEnabled;
|
|
215
|
+
scrollBridge.scrollLockY = void 0, (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !0);
|
|
216
|
+
} else {
|
|
217
|
+
var _scrollBridge_setScrollEnabled1;
|
|
218
|
+
scrollBridge.scrollLockY = 0, (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, !1);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}, [hasntMeasured, disableAnimation, isHidden, frameSize, screenSize, open, position]);
|
|
222
|
+
var _props_disableDrag,
|
|
223
|
+
disableDrag = (_props_disableDrag = props.disableDrag) !== null && _props_disableDrag !== void 0 ? _props_disableDrag : controller?.disableDrag,
|
|
224
|
+
themeName = useThemeName(),
|
|
225
|
+
[blockPan, setBlockPan] = React.useState(!1),
|
|
226
|
+
panResponder = React.useMemo(function () {
|
|
227
|
+
if (disableDrag || !frameSize || isShowingInnerSheet) return;
|
|
228
|
+
var minY = positions[0];
|
|
229
|
+
scrollBridge.paneMinY = minY;
|
|
230
|
+
var startY = at.current;
|
|
231
|
+
function setPanning(val) {
|
|
232
|
+
setIsDragging(val);
|
|
233
|
+
}
|
|
234
|
+
var release = function (param) {
|
|
235
|
+
var {
|
|
236
|
+
vy
|
|
237
|
+
} = param;
|
|
238
|
+
if (scrollBridge.setParentDragging(!1), !scrollBridge.scrollLock) {
|
|
239
|
+
isExternalDrag = !1, previouslyScrolling = !1, setPanning(!1);
|
|
240
|
+
for (var currentPos = at.current, end = currentPos + frameSize * vy * 0.2, closestPoint = 0, dist = Number.POSITIVE_INFINITY, i = 0; i < positions.length; i++) {
|
|
241
|
+
var position2 = positions[i],
|
|
242
|
+
curDist = end > position2 ? end - position2 : position2 - end;
|
|
243
|
+
curDist < dist && (dist = curDist, closestPoint = i);
|
|
244
|
+
}
|
|
245
|
+
setPosition(closestPoint), animateTo(closestPoint);
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
finish = function (_e, state2) {
|
|
249
|
+
release({
|
|
250
|
+
vy: state2.vy,
|
|
251
|
+
dragAt: state2.dy
|
|
252
|
+
});
|
|
253
|
+
},
|
|
254
|
+
previouslyScrolling = !1,
|
|
255
|
+
onMoveShouldSet = function (e, param) {
|
|
256
|
+
var {
|
|
257
|
+
dy
|
|
258
|
+
} = param;
|
|
259
|
+
function getShouldSet() {
|
|
260
|
+
if (e.target === providerProps.handleRef.current) return !0;
|
|
261
|
+
if (scrollBridge.hasScrollableContent === !0) {
|
|
262
|
+
if (scrollBridge.scrollLock) return !1;
|
|
263
|
+
var isScrolled = scrollBridge.y !== 0,
|
|
264
|
+
isDraggingUp = dy < 0,
|
|
265
|
+
isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;
|
|
266
|
+
if (isScrolled) return previouslyScrolling = !0, !1;
|
|
267
|
+
if (isNearTop && hasScrollView.current && isDraggingUp) return !1;
|
|
268
|
+
}
|
|
269
|
+
return Math.abs(dy) > 10;
|
|
270
|
+
}
|
|
271
|
+
var granted = getShouldSet();
|
|
272
|
+
return granted && scrollBridge.setParentDragging(!0), granted;
|
|
273
|
+
},
|
|
274
|
+
grant = function () {
|
|
275
|
+
setPanning(!0), stopSpring(), startY = at.current;
|
|
276
|
+
},
|
|
277
|
+
isExternalDrag = !1;
|
|
278
|
+
return scrollBridge.drag = function (dy) {
|
|
279
|
+
isExternalDrag || (isExternalDrag = !0, grant());
|
|
280
|
+
var to = dy + startY;
|
|
281
|
+
animatedNumber.setValue(resisted(to, minY), {
|
|
282
|
+
type: "direct"
|
|
283
|
+
});
|
|
284
|
+
}, scrollBridge.release = release, scrollBridge.snapToPosition = function (positionIndex) {
|
|
285
|
+
isExternalDrag = !1, previouslyScrolling = !1, setPanning(!1), setPosition(positionIndex), animateTo(positionIndex);
|
|
286
|
+
}, PanResponder.create({
|
|
287
|
+
onMoveShouldSetPanResponder: onMoveShouldSet,
|
|
288
|
+
onPanResponderGrant: grant,
|
|
289
|
+
onPanResponderMove: function (_e, param) {
|
|
290
|
+
var {
|
|
291
|
+
dy
|
|
292
|
+
} = param,
|
|
293
|
+
toFull = dy + startY,
|
|
294
|
+
to = resisted(toFull, minY),
|
|
295
|
+
isAtTop = to <= minY;
|
|
296
|
+
isAtTop ? scrollBridge.setParentDragging(!1) : scrollBridge.setParentDragging(!0), animatedNumber.setValue(to, {
|
|
297
|
+
type: "direct"
|
|
298
|
+
});
|
|
299
|
+
},
|
|
300
|
+
onPanResponderEnd: finish,
|
|
301
|
+
onPanResponderTerminate: finish,
|
|
302
|
+
onPanResponderRelease: finish
|
|
303
|
+
});
|
|
304
|
+
}, [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition]);
|
|
305
|
+
React.useEffect(function () {
|
|
306
|
+
isDragging || isHidden || !open || disableAnimation || !frameSize || !screenSize || animateTo(position, {
|
|
307
|
+
type: "timing",
|
|
308
|
+
duration: 250
|
|
309
|
+
});
|
|
310
|
+
}, [isKeyboardVisible, keyboardHeight]);
|
|
311
|
+
var wasDragging = React.useRef(!1);
|
|
312
|
+
React.useEffect(function () {
|
|
313
|
+
if (isDragging) {
|
|
314
|
+
wasDragging.current = !0;
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
wasDragging.current && (wasDragging.current = !1, !(!frameSize || !screenSize || isHidden || !open) && animateTo(position));
|
|
318
|
+
}, [isDragging]), React.useEffect(function () {
|
|
319
|
+
!open && isKeyboardVisible && dismissKeyboard();
|
|
320
|
+
}, [open]);
|
|
321
|
+
var {
|
|
322
|
+
panGesture,
|
|
323
|
+
panGestureRef,
|
|
324
|
+
gestureHandlerEnabled
|
|
325
|
+
} = useGestureHandlerPan({
|
|
326
|
+
positions: activePositions,
|
|
327
|
+
frameSize,
|
|
328
|
+
setPosition,
|
|
329
|
+
animateTo,
|
|
330
|
+
stopSpring,
|
|
331
|
+
scrollBridge,
|
|
332
|
+
setIsDragging,
|
|
333
|
+
getCurrentPosition: function () {
|
|
334
|
+
return at.current;
|
|
335
|
+
},
|
|
336
|
+
resisted,
|
|
337
|
+
disableDrag,
|
|
338
|
+
isShowingInnerSheet,
|
|
339
|
+
setAnimatedPosition: function (val) {
|
|
340
|
+
at.current = val, animatedNumber.setValue(val, {
|
|
341
|
+
type: "direct"
|
|
342
|
+
});
|
|
343
|
+
},
|
|
344
|
+
pauseKeyboardHandler
|
|
345
|
+
}),
|
|
346
|
+
handleAnimationViewLayout = useEvent(function (e) {
|
|
347
|
+
var _e_nativeEvent;
|
|
348
|
+
if (!(!open && stableFrameSize.current !== 0)) {
|
|
349
|
+
var layoutHeight = (_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height,
|
|
350
|
+
next = modal ? Math.min(layoutHeight, Dimensions.get(relativeDimensionTo).height) : layoutHeight;
|
|
351
|
+
next && setFrameSize(next);
|
|
352
|
+
}
|
|
353
|
+
}),
|
|
354
|
+
handleMaxContentViewLayout = React.useCallback(function (e) {
|
|
355
|
+
var _e_nativeEvent,
|
|
356
|
+
next = Math.min((_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height, Dimensions.get(relativeDimensionTo).height);
|
|
357
|
+
next && setMaxContentSize(next);
|
|
358
|
+
}, []),
|
|
359
|
+
animatedStyle = useAnimatedNumberStyle(animatedNumber, function (val) {
|
|
360
|
+
"worklet";
|
|
361
|
+
|
|
362
|
+
var translateY = frameSize === 0 ? hiddenSize : val;
|
|
363
|
+
return {
|
|
364
|
+
transform: [{
|
|
365
|
+
translateY
|
|
366
|
+
}]
|
|
367
|
+
};
|
|
368
|
+
}),
|
|
369
|
+
[opacity, setOpacity] = React.useState(open ? 1 : 0);
|
|
370
|
+
open && opacity === 0 && (setOpacity(1), opacityFallbackTimer.current && (clearTimeout(opacityFallbackTimer.current), opacityFallbackTimer.current = null));
|
|
371
|
+
var forcedContentHeight = hasFit ? void 0 : snapPointsMode === "percent" ?
|
|
372
|
+
// Use dvh for modal (viewport-relative), % for inline (container-relative)
|
|
373
|
+
`${maxSnapPoint}${isWeb && modal ? "dvh" : "%"}` : maxSnapPoint,
|
|
374
|
+
setHasScrollView = React.useCallback(function (val) {
|
|
375
|
+
hasScrollView.current = val;
|
|
376
|
+
}, []),
|
|
377
|
+
contents = /* @__PURE__ */_jsx(LayoutMeasurementController, {
|
|
378
|
+
disable: !open,
|
|
379
|
+
children: /* @__PURE__ */_jsx(ParentSheetContext.Provider, {
|
|
380
|
+
value: nextParentContext,
|
|
381
|
+
children: /* @__PURE__ */_jsx(SheetProvider, {
|
|
382
|
+
...providerProps,
|
|
383
|
+
setHasScrollView,
|
|
384
|
+
children: /* @__PURE__ */_jsxs(GestureSheetProvider, {
|
|
385
|
+
isDragging,
|
|
386
|
+
blockPan,
|
|
387
|
+
setBlockPan,
|
|
388
|
+
panGesture,
|
|
389
|
+
panGestureRef,
|
|
390
|
+
children: [/* @__PURE__ */_jsx(AnimatePresence, {
|
|
391
|
+
custom: {
|
|
392
|
+
open
|
|
393
|
+
},
|
|
394
|
+
children: shouldHideParentSheet || !open ? null : overlayComponent
|
|
395
|
+
}), snapPointsMode !== "percent" && /* @__PURE__ */_jsx(View, {
|
|
396
|
+
style: {
|
|
397
|
+
opacity: 0,
|
|
398
|
+
position: "absolute",
|
|
399
|
+
top: 0,
|
|
400
|
+
left: 0,
|
|
401
|
+
right: 0,
|
|
402
|
+
bottom: 0,
|
|
403
|
+
pointerEvents: "none"
|
|
404
|
+
},
|
|
405
|
+
onLayout: handleMaxContentViewLayout
|
|
406
|
+
}), /* @__PURE__ */_jsx(AnimatedView, {
|
|
407
|
+
ref,
|
|
408
|
+
onLayout: handleAnimationViewLayout,
|
|
409
|
+
// @ts-ignore for CSS driver this is necessary to attach the transition
|
|
410
|
+
// also motion driver at least though i suspect all drivers?
|
|
411
|
+
transition: isDragging || disableAnimation ? null : transition,
|
|
412
|
+
// @ts-ignore
|
|
413
|
+
disableClassName: !0,
|
|
414
|
+
style: [{
|
|
415
|
+
position: "absolute",
|
|
416
|
+
zIndex,
|
|
417
|
+
width: "100%",
|
|
418
|
+
height: forcedContentHeight,
|
|
419
|
+
minHeight: forcedContentHeight,
|
|
420
|
+
opacity: shouldHideParentSheet ? 0 : opacity,
|
|
421
|
+
...((shouldHideParentSheet || !open) && {
|
|
422
|
+
pointerEvents: "none"
|
|
423
|
+
})
|
|
424
|
+
}, animatedStyle],
|
|
425
|
+
children: (/* wrap children with plain RN View for panResponder - tamagui views no longer handle responder events on web */
|
|
426
|
+
gestureHandlerEnabled && panGesture ? /* @__PURE__ */_jsx(GestureDetectorWrapper, {
|
|
427
|
+
gesture: panGesture,
|
|
428
|
+
style: {
|
|
429
|
+
flex: 1
|
|
430
|
+
},
|
|
431
|
+
children: props.children
|
|
432
|
+
}) : /* @__PURE__ */_jsx(View, {
|
|
433
|
+
...panResponder?.panHandlers,
|
|
434
|
+
style: {
|
|
435
|
+
flex: 1,
|
|
436
|
+
width: "100%",
|
|
437
|
+
height: "100%"
|
|
438
|
+
},
|
|
439
|
+
children: props.children
|
|
440
|
+
}))
|
|
441
|
+
})]
|
|
442
|
+
})
|
|
443
|
+
})
|
|
444
|
+
})
|
|
445
|
+
});
|
|
446
|
+
if (needsPortalRepropagation()) {
|
|
447
|
+
var adaptContext = useAdaptContext();
|
|
448
|
+
contents = /* @__PURE__ */_jsx(ProvideAdaptContext, {
|
|
449
|
+
...adaptContext,
|
|
450
|
+
children: (/* @ts-ignore */
|
|
451
|
+
contents)
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
var shouldMountChildren = unmountChildrenWhenHidden ? !!opacity : !0;
|
|
455
|
+
if (modal) {
|
|
456
|
+
var modalContents = /* @__PURE__ */_jsx(Portal, {
|
|
457
|
+
stackZIndex: zIndex,
|
|
458
|
+
...portalProps,
|
|
459
|
+
children: shouldMountChildren && /* @__PURE__ */_jsx(ContainerComponent, {
|
|
460
|
+
children: contents
|
|
461
|
+
})
|
|
462
|
+
});
|
|
463
|
+
return isWeb ? modalContents : /* @__PURE__ */_jsx(SheetInsideSheetContext.Provider, {
|
|
464
|
+
value: onInnerSheet,
|
|
465
|
+
children: modalContents
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
return contents;
|
|
469
|
+
});
|
|
470
|
+
function getYPositions(mode, point, screenSize, frameSize) {
|
|
471
|
+
if (!screenSize || !frameSize) return 0;
|
|
472
|
+
if (mode === "mixed") {
|
|
473
|
+
if (typeof point == "number") return screenSize - Math.min(screenSize, Math.max(0, point));
|
|
474
|
+
if (point === "fit") return screenSize - Math.min(screenSize, frameSize);
|
|
475
|
+
if (point.endsWith("%")) {
|
|
476
|
+
var pct = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;
|
|
477
|
+
return Number.isNaN(pct) ? (console.warn("Invalid snapPoint percentage string"), 0) : Math.round(screenSize - pct * screenSize);
|
|
478
|
+
}
|
|
479
|
+
return console.warn("Invalid snapPoint unknown value"), 0;
|
|
480
|
+
}
|
|
481
|
+
if (mode === "fit") return point === 0 ? screenSize : screenSize - Math.min(screenSize, frameSize);
|
|
482
|
+
if (mode === "constant" && typeof point == "number") return screenSize - Math.min(screenSize, Math.max(0, point));
|
|
483
|
+
var pct1 = Math.min(100, Math.max(0, Number(point))) / 100;
|
|
484
|
+
return Number.isNaN(pct1) ? (console.warn("Invalid snapPoint percentage"), 0) : Math.round(screenSize - pct1 * screenSize);
|
|
485
|
+
}
|
|
486
|
+
export { SheetImplementationCustom };
|
|
487
|
+
//# sourceMappingURL=SheetImplementationCustom.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","ProvideAdaptContext","useAdaptContext","AnimatePresence","useComposedRefs","isWeb","useIsomorphicLayoutEffect","LayoutMeasurementController","View","TamaguiView","useConfiguration","useDidFinishSSR","useEvent","useThemeName","getSafeArea","needsPortalRepropagation","Portal","React","useState","Dimensions","PanResponder","ParentSheetContext","SheetInsideSheetContext","GestureDetectorWrapper","GestureSheetProvider","resisted","SheetProvider","useGestureHandlerPan","useKeyboardControllerSheet","useSheetOpenState","useSheetProviderProps","hiddenSize","_cachedSafeAreaTop","getSafeAreaTopInset","getInsets","top","relativeDimensionTo","SheetImplementationCustom","forwardRef","props","forwardedRef","parentSheet","useContext","transition","transitionConfig","transitionConfigProp","modal","zIndex","moveOnKeyboardChange","unmountChildrenWhenHidden","portalProps","containerComponent","ContainerComponent","Fragment","onAnimationComplete","state","overlayComponent","setOverlayComponent","providerProps","onOverlayComponent","frameSize","setFrameSize","snapPoints","snapPointsMode","hasFit","position","setPosition","scrollBridge","screenSize","setMaxContentSize","maxSnapPoint","open","controller","isHidden","openRef","useRef","current","sheetRef","ref","contentRef","animationDriver","Error","_animationDriver_animations","animationProp","animationPropConfig","Array","isArray","animations","isShowingInnerSheet","setIsShowingInnerSheet","shouldHideParentSheet","sheetInsideSheet","onInnerSheet","useCallback","hasChild","stableFrameSize","useEffect","effectiveFrameSize","positions","useMemo","map","point","getYPositions","keyboardHeight","isKeyboardVisible","dismissKeyboard","pauseKeyboardHandler","flushPendingHide","enabled","isDragging","setIsDragging_","isDraggingRef","setIsDragging","val","activePositionsRef","activePositions","result","safeAreaTop","p","Math","max","useAnimatedNumber","useAnimatedNumberStyle","useAnimatedNumberReaction","_animationDriver_View","AnimatedView","nextParentContext","isMounted","startPosition","animatedNumber","at","hasntMeasured","disableAnimation","setDisableAnimation","skipAdaptAnimation","skipNextAnimation","hasScrollView","opacityFallbackTimer","value","hostRef","paneY","minY","wasAtTop","isAtTop","nowAtTop","_scrollBridge_setScrollEnabled","y","_scrollBridge_forceScrollTo","forceScrollTo","call","scrollLockY","setScrollEnabled","_scrollBridge_setScrollEnabled1","stopSpring","stop","onFinishAnimate","animateTo","position2","animationOverride","toValue","isOpenAnimation","clearTimeout","animationCompleteCallback","setOpacity","setTimeout","setValue","type","duration","scrollLock","scrollStartY","isTopPosition","_props_disableDrag","disableDrag","themeName","blockPan","setBlockPan","panResponder","paneMinY","startY","setPanning","release","param","vy","setParentDragging","isExternalDrag","previouslyScrolling","currentPos","end","closestPoint","dist","Number","POSITIVE_INFINITY","i","length","curDist","finish","_e","state2","dragAt","dy","onMoveShouldSet","e","getShouldSet","target","handleRef","hasScrollableContent","isScrolled","isDraggingUp","isNearTop","abs","granted","grant","drag","to","snapToPosition","positionIndex","create","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","toFull","onPanResponderEnd","onPanResponderTerminate","onPanResponderRelease","wasDragging","panGesture","panGestureRef","gestureHandlerEnabled","getCurrentPosition","setAnimatedPosition","handleAnimationViewLayout","_e_nativeEvent","layoutHeight","nativeEvent","layout","height","next","min","get","handleMaxContentViewLayout","animatedStyle","translateY","transform","opacity","forcedContentHeight","setHasScrollView","contents","disable","children","Provider","custom","style","left","right","bottom","pointerEvents","onLayout","disableClassName","width","minHeight","gesture","flex"],"sources":["../../src/SheetImplementationCustom.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { composeRefs } from "@hanzo/gui-compose-refs";
|
|
2
|
+
import { View } from "@hanzo/gui-core";
|
|
3
|
+
import { ScrollView } from "@hanzo/gui-scroll-view";
|
|
4
|
+
import { useControllableState } from "@hanzo/gui-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
|
+
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
|
+
gestureContext = useGestureSheetContext(),
|
|
21
|
+
{
|
|
22
|
+
scrollBridge,
|
|
23
|
+
setHasScrollView
|
|
24
|
+
} = context,
|
|
25
|
+
[scrollEnabled] = useControllableState({
|
|
26
|
+
prop: scrollEnabledProp,
|
|
27
|
+
defaultProp: !0
|
|
28
|
+
}),
|
|
29
|
+
scrollRef = React.useRef(null),
|
|
30
|
+
panGestureRef = gestureContext?.panGestureRef,
|
|
31
|
+
{
|
|
32
|
+
ScrollView: RNGHScrollView
|
|
33
|
+
} = getGestureHandlerState(),
|
|
34
|
+
useRNGHScrollView = isGestureHandlerEnabled() && RNGHScrollView && panGestureRef,
|
|
35
|
+
currentScrollOffset = useRef(0),
|
|
36
|
+
lockedScrollY = useRef(0),
|
|
37
|
+
setScrollEnabled = (next, lockTo) => {
|
|
38
|
+
if (next) lockedScrollY.current = currentScrollOffset.current, scrollBridge.scrollLockY = void 0;else {
|
|
39
|
+
const lockY = lockTo ?? currentScrollOffset.current;
|
|
40
|
+
lockedScrollY.current = lockY, scrollBridge.scrollLockY = lockY, scrollRef.current?.scrollTo?.({
|
|
41
|
+
x: 0,
|
|
42
|
+
y: lockY,
|
|
43
|
+
animated: !1
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
forceScrollTo = y => {
|
|
48
|
+
scrollRef.current?.scrollTo?.({
|
|
49
|
+
x: 0,
|
|
50
|
+
y,
|
|
51
|
+
animated: !1
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
useEffect(() => (setHasScrollView(!0), isGestureHandlerEnabled() && (scrollBridge.setScrollEnabled = setScrollEnabled, scrollBridge.forceScrollTo = forceScrollTo), () => {
|
|
55
|
+
setHasScrollView(!1), scrollBridge.setScrollEnabled = void 0, scrollBridge.forceScrollTo = void 0;
|
|
56
|
+
}), []);
|
|
57
|
+
const [hasScrollableContent, setHasScrollableContent] = useState(!0),
|
|
58
|
+
parentHeight = useRef(0),
|
|
59
|
+
contentHeight = useRef(0),
|
|
60
|
+
updateScrollable = () => {
|
|
61
|
+
parentHeight.current && contentHeight.current && setHasScrollableContent(contentHeight.current > parentHeight.current);
|
|
62
|
+
};
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
scrollBridge.hasScrollableContent = hasScrollableContent;
|
|
65
|
+
}, [hasScrollableContent]);
|
|
66
|
+
const gestureProps = useSheetScrollViewGestures({
|
|
67
|
+
scrollRef,
|
|
68
|
+
scrollBridge,
|
|
69
|
+
hasScrollableContent,
|
|
70
|
+
scrollEnabled,
|
|
71
|
+
setScrollEnabled
|
|
72
|
+
}),
|
|
73
|
+
contentWrapper = /* @__PURE__ */jsx(View, {
|
|
74
|
+
onLayout: e => {
|
|
75
|
+
const height = Math.floor(e.nativeEvent.layout.height);
|
|
76
|
+
height !== contentHeight.current && (contentHeight.current = height, updateScrollable());
|
|
77
|
+
},
|
|
78
|
+
children
|
|
79
|
+
});
|
|
80
|
+
return useRNGHScrollView && RNGHScrollView && panGestureRef ? /* @__PURE__ */jsx(RNGHScrollView, {
|
|
81
|
+
ref: composeRefs(scrollRef, ref),
|
|
82
|
+
style: {
|
|
83
|
+
flex: 1
|
|
84
|
+
},
|
|
85
|
+
scrollEventThrottle: 1,
|
|
86
|
+
scrollEnabled,
|
|
87
|
+
simultaneousHandlers: [panGestureRef],
|
|
88
|
+
onLayout: e => {
|
|
89
|
+
parentHeight.current = Math.ceil(e.nativeEvent.layout.height), updateScrollable();
|
|
90
|
+
},
|
|
91
|
+
onScroll: e => {
|
|
92
|
+
const {
|
|
93
|
+
y
|
|
94
|
+
} = e.nativeEvent.contentOffset;
|
|
95
|
+
if (currentScrollOffset.current = y, scrollBridge.scrollLockY !== void 0) {
|
|
96
|
+
y !== scrollBridge.scrollLockY && scrollRef.current?.scrollTo?.({
|
|
97
|
+
x: 0,
|
|
98
|
+
y: scrollBridge.scrollLockY,
|
|
99
|
+
animated: !1
|
|
100
|
+
}), scrollBridge.y = scrollBridge.scrollLockY, onScroll?.({
|
|
101
|
+
...e,
|
|
102
|
+
nativeEvent: {
|
|
103
|
+
...e.nativeEvent,
|
|
104
|
+
contentOffset: {
|
|
105
|
+
...e.nativeEvent.contentOffset,
|
|
106
|
+
y: scrollBridge.scrollLockY
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
scrollBridge.y = y, y > 0 && (scrollBridge.scrollStartY = -1), onScroll?.(e);
|
|
113
|
+
},
|
|
114
|
+
contentContainerStyle: {
|
|
115
|
+
minHeight: "100%"
|
|
116
|
+
},
|
|
117
|
+
bounces: !1,
|
|
118
|
+
keyboardShouldPersistTaps: "always",
|
|
119
|
+
keyboardDismissMode: "none",
|
|
120
|
+
...props,
|
|
121
|
+
children: contentWrapper
|
|
122
|
+
}) : /* @__PURE__ */jsx(ScrollView, {
|
|
123
|
+
onLayout: e => {
|
|
124
|
+
parentHeight.current = Math.ceil(e.nativeEvent.layout.height), updateScrollable();
|
|
125
|
+
},
|
|
126
|
+
ref: composeRefs(scrollRef, ref),
|
|
127
|
+
flex: 1,
|
|
128
|
+
scrollEventThrottle: 1,
|
|
129
|
+
className: "_ovs-contain",
|
|
130
|
+
scrollEnabled,
|
|
131
|
+
onScroll: e => {
|
|
132
|
+
const {
|
|
133
|
+
y
|
|
134
|
+
} = e.nativeEvent.contentOffset;
|
|
135
|
+
scrollBridge.y = y, y > 0 && (scrollBridge.scrollStartY = -1), onScroll?.(e);
|
|
136
|
+
},
|
|
137
|
+
contentContainerStyle: {
|
|
138
|
+
minHeight: "100%"
|
|
139
|
+
},
|
|
140
|
+
...gestureProps,
|
|
141
|
+
...props,
|
|
142
|
+
children: contentWrapper
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
export { SheetScrollView };
|
|
146
|
+
//# sourceMappingURL=SheetScrollView.mjs.map
|