@tamagui/sheet 3.0.0-beta.669.1 → 3.0.0-beta.728.1
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/dist/cjs/GestureDetectorWrapper.cjs +0 -1
- package/dist/cjs/GestureDetectorWrapper.native.cjs +0 -1
- package/dist/cjs/GestureDetectorWrapper.native.js +0 -1
- package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/cjs/GestureSheetContext.cjs +0 -1
- package/dist/cjs/GestureSheetContext.native.cjs +0 -1
- package/dist/cjs/GestureSheetContext.native.js +0 -1
- package/dist/cjs/GestureSheetContext.native.js.map +1 -1
- package/dist/cjs/Sheet.cjs +0 -1
- package/dist/cjs/Sheet.native.cjs +0 -1
- package/dist/cjs/Sheet.native.js +0 -1
- package/dist/cjs/Sheet.native.js.map +1 -1
- package/dist/cjs/SheetContext.cjs +0 -1
- package/dist/cjs/SheetContext.native.cjs +0 -1
- package/dist/cjs/SheetContext.native.js +0 -1
- package/dist/cjs/SheetContext.native.js.map +1 -1
- package/dist/cjs/SheetController.cjs +0 -1
- package/dist/cjs/SheetController.native.cjs +0 -1
- package/dist/cjs/SheetController.native.js +0 -1
- package/dist/cjs/SheetController.native.js.map +1 -1
- package/dist/cjs/SheetImplementationCustom.cjs +0 -1
- package/dist/cjs/SheetImplementationCustom.native.cjs +0 -1
- package/dist/cjs/SheetImplementationCustom.native.js +0 -1
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
- package/dist/cjs/SheetScrollView.cjs +0 -1
- package/dist/cjs/SheetScrollView.native.cjs +0 -1
- package/dist/cjs/SheetScrollView.native.js +0 -1
- package/dist/cjs/SheetScrollView.native.js.map +1 -1
- package/dist/cjs/constants.cjs +0 -1
- package/dist/cjs/constants.native.cjs +0 -1
- package/dist/cjs/constants.native.js +0 -1
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/contexts.cjs +0 -1
- package/dist/cjs/contexts.native.cjs +0 -1
- package/dist/cjs/contexts.native.js +0 -1
- package/dist/cjs/contexts.native.js.map +1 -1
- package/dist/cjs/controller.cjs +0 -1
- package/dist/cjs/controller.native.cjs +0 -1
- package/dist/cjs/controller.native.js +0 -1
- package/dist/cjs/controller.native.js.map +1 -1
- package/dist/cjs/gestureState.cjs +0 -1
- package/dist/cjs/gestureState.native.cjs +0 -1
- package/dist/cjs/gestureState.native.js +0 -1
- package/dist/cjs/gestureState.native.js.map +1 -1
- package/dist/cjs/helpers.cjs +0 -1
- package/dist/cjs/helpers.native.cjs +0 -1
- package/dist/cjs/helpers.native.js +0 -1
- package/dist/cjs/helpers.native.js.map +1 -1
- package/dist/cjs/index.cjs +0 -1
- package/dist/cjs/index.native.cjs +0 -1
- package/dist/cjs/index.native.js +0 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboardAvoidance.cjs +0 -1
- package/dist/cjs/keyboardAvoidance.native.cjs +0 -1
- package/dist/cjs/keyboardAvoidance.native.js +0 -1
- package/dist/cjs/keyboardAvoidance.native.js.map +1 -1
- package/dist/cjs/nativeSheet.cjs +0 -1
- package/dist/cjs/nativeSheet.native.cjs +0 -1
- package/dist/cjs/nativeSheet.native.js +0 -1
- package/dist/cjs/nativeSheet.native.js.map +1 -1
- package/dist/cjs/types.cjs +0 -1
- package/dist/cjs/types.native.cjs +0 -1
- package/dist/cjs/types.native.js +0 -1
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/useGestureHandlerPan.cjs +0 -1
- package/dist/cjs/useGestureHandlerPan.native.cjs +0 -1
- package/dist/cjs/useGestureHandlerPan.native.js +0 -1
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
- package/dist/cjs/useKeyboardControllerSheet.cjs +0 -1
- package/dist/cjs/useKeyboardControllerSheet.native.cjs +0 -1
- package/dist/cjs/useKeyboardControllerSheet.native.js +0 -1
- package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -1
- package/dist/cjs/useSafeAreaInsets.cjs +0 -1
- package/dist/cjs/useSafeAreaInsets.native.cjs +0 -1
- package/dist/cjs/useSafeAreaInsets.native.js +0 -1
- package/dist/cjs/useSafeAreaInsets.native.js.map +1 -1
- package/dist/cjs/useSheetController.cjs +0 -1
- package/dist/cjs/useSheetController.native.cjs +0 -1
- package/dist/cjs/useSheetController.native.js +0 -1
- package/dist/cjs/useSheetController.native.js.map +1 -1
- package/dist/cjs/useSheetOffscreenSize.cjs +0 -1
- package/dist/cjs/useSheetOffscreenSize.native.cjs +0 -1
- package/dist/cjs/useSheetOffscreenSize.native.js +0 -1
- package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -1
- package/dist/cjs/useSheetOpenState.cjs +0 -1
- package/dist/cjs/useSheetOpenState.native.cjs +0 -1
- package/dist/cjs/useSheetOpenState.native.js +0 -1
- package/dist/cjs/useSheetOpenState.native.js.map +1 -1
- package/dist/cjs/useSheetProviderProps.cjs +0 -1
- package/dist/cjs/useSheetProviderProps.native.cjs +0 -1
- package/dist/cjs/useSheetProviderProps.native.js +0 -1
- package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
- package/dist/cjs/useSheetScrollViewGestures.cjs +0 -1
- package/dist/cjs/useSheetScrollViewGestures.native.cjs +0 -1
- package/dist/cjs/useSheetScrollViewGestures.native.js +0 -1
- package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/cjs/webViewport.cjs +0 -1
- package/dist/cjs/webViewport.native.cjs +0 -1
- package/dist/cjs/webViewport.native.js +0 -1
- package/dist/cjs/webViewport.native.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
- package/dist/esm/gestureState.mjs.map +1 -1
- package/dist/esm/gestureState.native.js.map +1 -1
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
- package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
- package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
- package/dist/esm/useSafeAreaInsets.native.js.map +1 -1
- package/dist/jsx/GestureDetectorWrapper.native.cjs +0 -1
- package/dist/jsx/GestureDetectorWrapper.native.js +0 -1
- package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/jsx/GestureSheetContext.native.cjs +0 -1
- package/dist/jsx/GestureSheetContext.native.js +0 -1
- package/dist/jsx/GestureSheetContext.native.js.map +1 -1
- package/dist/jsx/Sheet.native.cjs +0 -1
- package/dist/jsx/Sheet.native.js +0 -1
- package/dist/jsx/Sheet.native.js.map +1 -1
- package/dist/jsx/SheetContext.native.cjs +0 -1
- package/dist/jsx/SheetContext.native.js +0 -1
- package/dist/jsx/SheetContext.native.js.map +1 -1
- package/dist/jsx/SheetController.native.cjs +0 -1
- package/dist/jsx/SheetController.native.js +0 -1
- package/dist/jsx/SheetController.native.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
- package/dist/jsx/SheetImplementationCustom.native.cjs +0 -1
- package/dist/jsx/SheetImplementationCustom.native.js +0 -1
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
- package/dist/jsx/SheetScrollView.native.cjs +0 -1
- package/dist/jsx/SheetScrollView.native.js +0 -1
- package/dist/jsx/SheetScrollView.native.js.map +1 -1
- package/dist/jsx/constants.native.cjs +0 -1
- package/dist/jsx/constants.native.js +0 -1
- package/dist/jsx/constants.native.js.map +1 -1
- package/dist/jsx/contexts.native.cjs +0 -1
- package/dist/jsx/contexts.native.js +0 -1
- package/dist/jsx/contexts.native.js.map +1 -1
- package/dist/jsx/controller.native.cjs +0 -1
- package/dist/jsx/controller.native.js +0 -1
- package/dist/jsx/controller.native.js.map +1 -1
- package/dist/jsx/gestureState.mjs.map +1 -1
- package/dist/jsx/gestureState.native.cjs +0 -1
- package/dist/jsx/gestureState.native.js +0 -1
- package/dist/jsx/gestureState.native.js.map +1 -1
- package/dist/jsx/helpers.native.cjs +0 -1
- package/dist/jsx/helpers.native.js +0 -1
- package/dist/jsx/helpers.native.js.map +1 -1
- package/dist/jsx/index.native.cjs +0 -1
- package/dist/jsx/index.native.js +0 -1
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/keyboardAvoidance.native.cjs +0 -1
- package/dist/jsx/keyboardAvoidance.native.js +0 -1
- package/dist/jsx/keyboardAvoidance.native.js.map +1 -1
- package/dist/jsx/nativeSheet.native.cjs +0 -1
- package/dist/jsx/nativeSheet.native.js +0 -1
- package/dist/jsx/nativeSheet.native.js.map +1 -1
- package/dist/jsx/types.native.cjs +0 -1
- package/dist/jsx/types.native.js +0 -1
- package/dist/jsx/types.native.js.map +1 -1
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
- package/dist/jsx/useGestureHandlerPan.native.cjs +0 -1
- package/dist/jsx/useGestureHandlerPan.native.js +0 -1
- package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
- package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
- package/dist/jsx/useKeyboardControllerSheet.native.cjs +0 -1
- package/dist/jsx/useKeyboardControllerSheet.native.js +0 -1
- package/dist/jsx/useKeyboardControllerSheet.native.js.map +1 -1
- package/dist/jsx/useSafeAreaInsets.native.cjs +0 -1
- package/dist/jsx/useSafeAreaInsets.native.js +0 -1
- package/dist/jsx/useSafeAreaInsets.native.js.map +1 -1
- package/dist/jsx/useSheetController.native.cjs +0 -1
- package/dist/jsx/useSheetController.native.js +0 -1
- package/dist/jsx/useSheetController.native.js.map +1 -1
- package/dist/jsx/useSheetOffscreenSize.native.cjs +0 -1
- package/dist/jsx/useSheetOffscreenSize.native.js +0 -1
- package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -1
- package/dist/jsx/useSheetOpenState.native.cjs +0 -1
- package/dist/jsx/useSheetOpenState.native.js +0 -1
- package/dist/jsx/useSheetOpenState.native.js.map +1 -1
- package/dist/jsx/useSheetProviderProps.native.cjs +0 -1
- package/dist/jsx/useSheetProviderProps.native.js +0 -1
- package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
- package/dist/jsx/useSheetScrollViewGestures.native.cjs +0 -1
- package/dist/jsx/useSheetScrollViewGestures.native.js +0 -1
- package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/jsx/webViewport.native.cjs +0 -1
- package/dist/jsx/webViewport.native.js +0 -1
- package/dist/jsx/webViewport.native.js.map +1 -1
- package/package.json +19 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetImplementationCustom.js","names":[],"sources":["esm/SheetImplementationCustom.js"],"sourcesContent":["import { AnimatePresence } from \"@tamagui/animate-presence\";\nimport { useComposedRefs } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { LayoutMeasurementController, View, createRefComponent, formatDiagnostic, useAnimatedNumber, useAnimatedNumberStyle, useAnimationDriver, useDidFinishSSR, useEvent, useThemeName } from \"@tamagui/core\";\nimport { Portal, needsPortalRepropagation } from \"@tamagui/portal\";\nimport React, { useState } from \"react\";\nimport { Dimensions, PanResponder, View as View$1 } from \"react-native-web\";\nimport { ParentSheetContext, SheetInsideSheetContext } from \"./contexts\";\nimport { SHEET_OVERLAY_MARKER } from \"./constants\";\nimport { GestureDetectorWrapper } from \"./GestureDetectorWrapper\";\nimport { getGestureHandlerState } from \"./gestureState\";\nimport { GestureSheetProvider } from \"./GestureSheetContext\";\nimport { resisted } from \"./helpers\";\nimport { getKeyboardAdjustedSheetY, getKeyboardOccludedHeight, getSheetReleasePosition } from \"./keyboardAvoidance\";\nimport { MIN_KEYBOARD_HEIGHT, getMaxViewportHeight, getStableLayoutViewportHeight, getWebKeyboardResizeHeight, getWebVisualViewportOffsetTop } from \"./webViewport\";\nimport { SheetAnimatedPositionContext, SheetOverlayLayerContext, SheetProvider } from \"./SheetContext\";\nimport { useGestureHandlerPan } from \"./useGestureHandlerPan\";\nimport { useKeyboardControllerSheet } from \"./useKeyboardControllerSheet\";\nimport { useSafeAreaInsets } from \"./useSafeAreaInsets\";\nimport { useSheetOpenState } from \"./useSheetOpenState\";\nimport { useSheetProviderProps } from \"./useSheetProviderProps\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\n\nconst hiddenSize = 10000.1;\nconst rnghRootStyleOpen = {\n\twidth: \"100%\",\n\theight: \"100%\"\n};\nconst rnghRootStyleClosed = {\n\twidth: \"100%\",\n\theight: 0\n};\nlet sheetHiddenStyleSheet = null;\nconst sheetEscapeLayers = [];\nconst relativeDimensionTo = isWeb ? \"window\" : \"screen\";\nfunction getStableViewportHeight() {\n\tif (isWeb && typeof window !== \"undefined\") return getStableLayoutViewportHeight();\n\treturn Dimensions.get(relativeDimensionTo).height;\n}\nconst SheetImplementationCustom = createRefComponent(function SheetImplementationCustom2(props, forwardedRef) {\n\tconst parentSheet = React.useContext(ParentSheetContext);\n\tconst safeAreaTopInset = useSafeAreaInsets()?.top ?? 0;\n\tconst { transition, transitionConfig: transitionConfigProp, modal = false, zIndex = parentSheet.zIndex + 1, moveOnKeyboardChange = false, unmountChildrenWhenHidden = false, disableHideWhenClosed = false, portalProps, containerComponent: ContainerComponent = React.Fragment, onTransition } = props;\n\tconst state = useSheetOpenState(props);\n\tconst providerProps = useSheetProviderProps(props, state);\n\tconst { frameSize, setFrameSize, dismissOnSnapToBottom, snapPoints, snapPointsMode, hasFit, position, setPosition, scrollBridge, screenSize, setMaxContentSize, maxSnapPoint } = providerProps;\n\tconst { open, controller, isHidden } = state;\n\tconst openRef = React.useRef(open);\n\topenRef.current = open;\n\tconst ref = useComposedRefs(forwardedRef, React.useRef(void 0), providerProps.contentRef);\n\tconst animationDriver = useAnimationDriver();\n\tconst transitionConfig = (() => {\n\t\tif (transitionConfigProp) return transitionConfigProp;\n\t\tconst [animationProp, animationPropConfig] = !transition ? [] : Array.isArray(transition) ? transition : [transition];\n\t\tconst namedConfig = animationProp && animationDriver.animations?.[animationProp];\n\t\tif (namedConfig) {\n\t\t\tif (typeof namedConfig === \"string\") return animationPropConfig ?? null;\n\t\t\treturn {\n\t\t\t\t...namedConfig,\n\t\t\t\t...animationPropConfig\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t})();\n\tconst [isShowingInnerSheet, setIsShowingInnerSheet] = React.useState(false);\n\tconst shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet && needsPortalRepropagation();\n\tconst sheetInsideSheet = React.useContext(SheetInsideSheetContext);\n\tconst onInnerSheet = React.useCallback((hasChild) => {\n\t\tsetIsShowingInnerSheet(hasChild);\n\t}, []);\n\tconst { keyboardHeight, isKeyboardVisible, dismissKeyboard, pauseKeyboardHandler, flushPendingHide } = useKeyboardControllerSheet({ enabled: Boolean(moveOnKeyboardChange) });\n\tconst stableFrameSize = React.useRef(frameSize);\n\tReact.useEffect(() => {\n\t\tif (open && frameSize) stableFrameSize.current = frameSize;\n\t}, [open, frameSize]);\n\tconst isWebKbSheet = isWeb && hasFit && moveOnKeyboardChange;\n\tconst isNativeKbFitSheet = !isWeb && hasFit && Boolean(moveOnKeyboardChange);\n\tconst preKeyboardFrameSize = React.useRef(0);\n\tReact.useEffect(() => {\n\t\tif (isNativeKbFitSheet && open && !isKeyboardVisible && frameSize > 0) preKeyboardFrameSize.current = frameSize;\n\t}, [\n\t\tisNativeKbFitSheet,\n\t\topen,\n\t\tisKeyboardVisible,\n\t\tframeSize\n\t]);\n\tconst effScreenSize = isWebKbSheet ? getStableViewportHeight() : screenSize;\n\tconst effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize;\n\tconst positions = React.useMemo(() => snapPoints.map((point) => getYPositions(snapPointsMode, point, effScreenSize, effectiveFrameSize)), [\n\t\teffScreenSize,\n\t\teffectiveFrameSize,\n\t\tsnapPoints,\n\t\tsnapPointsMode\n\t]);\n\tconst [isDragging, setIsDragging_] = React.useState(false);\n\tconst isDraggingRef = React.useRef(false);\n\tconst setIsDragging = React.useCallback((val) => {\n\t\tisDraggingRef.current = val;\n\t\tpauseKeyboardHandler.current = val;\n\t\tsetIsDragging_(val);\n\t\tif (!val) flushPendingHide();\n\t}, [pauseKeyboardHandler, flushPendingHide]);\n\tconst activePositionsRef = React.useRef(positions);\n\tconst activePositions = React.useMemo(() => {\n\t\tif (isDragging || isDraggingRef.current) return activePositionsRef.current;\n\t\tlet result;\n\t\tif (!isKeyboardVisible || keyboardHeight <= 0) result = positions;\n\t\telse result = positions.map((p) => getKeyboardAdjustedSheetY({\n\t\t\tsheetY: p,\n\t\t\tscreenSize: effScreenSize,\n\t\t\tisKeyboardVisible,\n\t\t\tkeyboardHeight,\n\t\t\tshouldTranslate: true,\n\t\t\tsafeAreaTop: isWeb ? getWebVisualViewportOffsetTop() : safeAreaTopInset\n\t\t}));\n\t\tactivePositionsRef.current = result;\n\t\treturn result;\n\t}, [\n\t\tpositions,\n\t\tisKeyboardVisible,\n\t\tkeyboardHeight,\n\t\teffScreenSize,\n\t\tisDragging,\n\t\tsafeAreaTopInset\n\t]);\n\tconst keyboardOccludedHeight = getKeyboardOccludedHeight({\n\t\tframeSize: effectiveFrameSize,\n\t\tisKeyboardVisible,\n\t\tkeyboardHeight,\n\t\tscreenSize: effScreenSize,\n\t\tsheetY: position >= 0 ? activePositions[position] : void 0\n\t});\n\tconst keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : isNativeKbFitSheet && isKeyboardVisible && preKeyboardFrameSize.current > 0 ? preKeyboardFrameSize.current : 0;\n\tconst AnimatedView = animationDriver.View ?? View;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!(sheetInsideSheet && open)) return;\n\t\tsheetInsideSheet(true);\n\t\treturn () => {\n\t\t\tsheetInsideSheet(false);\n\t\t};\n\t}, [sheetInsideSheet, open]);\n\tconst nextParentContext = React.useMemo(() => ({ zIndex }), [zIndex]);\n\tconst startPosition = useDidFinishSSR() && screenSize ? screenSize : hiddenSize;\n\tconst animatedNumber = useAnimatedNumber(startPosition);\n\tconst at = React.useRef(startPosition);\n\tconst hasntMeasured = at.current === hiddenSize;\n\tconst [disableAnimation, setDisableAnimation] = useState(hasntMeasured);\n\tconst skipAdaptAnimation = React.useRef(false);\n\tif (controller?.skipNextAnimation) skipAdaptAnimation.current = true;\n\tconst hasScrollView = React.useRef(false);\n\tconst lastPositionIndexRef = React.useRef(-1);\n\tconst pendingTransitionRef = React.useRef(null);\n\tconst emitTransition = useEvent((phase, event, finished) => {\n\t\tconst e = {\n\t\t\tphase,\n\t\t\tcause: event.cause,\n\t\t\tposition: event.position\n\t\t};\n\t\tif (phase === \"end\") e.finished = finished;\n\t\tonTransition?.(e);\n\t\tcontroller?.onTransition?.(e);\n\t});\n\tconst syncAnimatedPosition = useEvent((value) => {\n\t\tat.current = value;\n\t\tscrollBridge.paneY = value;\n\t\tconst minY = activePositions[0];\n\t\tconst wasAtTop = scrollBridge.isAtTop;\n\t\tconst nowAtTop = value <= minY + 5;\n\t\tif (wasAtTop === nowAtTop) return;\n\t\tscrollBridge.isAtTop = nowAtTop;\n\t\tif (nowAtTop) {\n\t\t\tif (scrollBridge.lockScrollAtTop) {\n\t\t\t\tif (scrollBridge.y > 0) {\n\t\t\t\t\tscrollBridge.forceScrollTo?.(0);\n\t\t\t\t\tscrollBridge.y = 0;\n\t\t\t\t}\n\t\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t\tscrollBridge.setScrollEnabled?.(false, 0);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (scrollBridge.y > 0) {\n\t\t\t\tscrollBridge.forceScrollTo?.(0);\n\t\t\t\tscrollBridge.y = 0;\n\t\t\t}\n\t\t\tscrollBridge.scrollLockY = void 0;\n\t\t\tscrollBridge.setScrollEnabled?.(true);\n\t\t} else {\n\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\tscrollBridge.setScrollEnabled?.(false);\n\t\t}\n\t});\n\tconst setAnimatedPositionDirect = useEvent((value) => {\n\t\tsyncAnimatedPosition(value);\n\t\tanimatedNumber.setValue(value, { type: \"direct\" });\n\t});\n\tconst getAnimatedPosition = useEvent(() => {\n\t\tconst value = animatedNumber.getValue();\n\t\tsyncAnimatedPosition(value);\n\t\treturn value;\n\t});\n\tfunction stopSpring() {\n\t\tanimatedNumber.stop();\n\t\tif (scrollBridge.onFinishAnimate) {\n\t\t\tscrollBridge.onFinishAnimate();\n\t\t\tscrollBridge.onFinishAnimate = void 0;\n\t\t}\n\t}\n\tconst animateTo = useEvent((position2, animationOverride) => {\n\t\tif (frameSize === 0) return;\n\t\tconst closeTarget = isWeb ? Math.max(effScreenSize, getMaxViewportHeight()) : effScreenSize;\n\t\tconst isDismissPosition = dismissOnSnapToBottom && position2 === activePositions.length - 1;\n\t\tconst isOpenAnimation = position2 !== -1 && !isHidden && !isDismissPosition;\n\t\tconst toValue = isOpenAnimation ? activePositions[position2] : closeTarget;\n\t\tif (at.current === toValue) {\n\t\t\tif (isDismissPosition) {\n\t\t\t\tif (pendingTransitionRef.current) {\n\t\t\t\t\temitTransition(\"end\", pendingTransitionRef.current, false);\n\t\t\t\t\tpendingTransitionRef.current = null;\n\t\t\t\t}\n\t\t\t\tstopSpring();\n\t\t\t\tconst event2 = {\n\t\t\t\t\tcause: \"close\",\n\t\t\t\t\tposition: toValue\n\t\t\t\t};\n\t\t\t\tlastPositionIndexRef.current = -1;\n\t\t\t\temitTransition(\"start\", event2);\n\t\t\t\tsyncAnimatedPosition(toValue);\n\t\t\t\tsetIsFullyClosed(true);\n\t\t\t\temitTransition(\"end\", event2, true);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tat.current = toValue;\n\t\tconst cause = !isOpenAnimation ? \"close\" : lastPositionIndexRef.current < 0 ? \"open\" : \"snap\";\n\t\tlastPositionIndexRef.current = isOpenAnimation ? position2 : -1;\n\t\tconst event = {\n\t\t\tcause,\n\t\t\tposition: toValue\n\t\t};\n\t\tif (pendingTransitionRef.current) {\n\t\t\temitTransition(\"end\", pendingTransitionRef.current, false);\n\t\t\tpendingTransitionRef.current = null;\n\t\t}\n\t\tstopSpring();\n\t\tconst animationCompleteCallback = () => {\n\t\t\tif (at.current !== toValue) return;\n\t\t\tsyncAnimatedPosition(toValue);\n\t\t\tpendingTransitionRef.current = null;\n\t\t\tif (!isOpenAnimation && !openRef.current) setIsFullyClosed(true);\n\t\t\temitTransition(\"end\", event, true);\n\t\t};\n\t\tpendingTransitionRef.current = event;\n\t\temitTransition(\"start\", event);\n\t\tif (skipAdaptAnimation.current) {\n\t\t\tskipAdaptAnimation.current = false;\n\t\t\tanimatedNumber.setValue(toValue, {\n\t\t\t\ttype: \"timing\",\n\t\t\t\tduration: 0\n\t\t\t}, animationCompleteCallback);\n\t\t\treturn;\n\t\t}\n\t\tconst resolvedConfig = animationOverride || {\n\t\t\ttype: \"spring\",\n\t\t\t...transitionConfig\n\t\t};\n\t\tconst springConfig = !resolvedConfig.type || resolvedConfig.type === \"spring\" ? {\n\t\t\trestDisplacementThreshold: 1,\n\t\t\trestSpeedThreshold: 10,\n\t\t\tenergyThreshold: 1e-5,\n\t\t\t...resolvedConfig\n\t\t} : resolvedConfig;\n\t\tanimatedNumber.setValue(toValue, springConfig, animationCompleteCallback);\n\t});\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (hasntMeasured && screenSize && frameSize) {\n\t\t\tat.current = screenSize;\n\t\t\tanimatedNumber.setValue(screenSize, {\n\t\t\t\ttype: \"timing\",\n\t\t\t\tduration: 0\n\t\t\t}, () => {\n\t\t\t\tsyncAnimatedPosition(screenSize);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tsetDisableAnimation(false);\n\t\t\t\t}, 10);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (disableAnimation) return;\n\t\tif (isDraggingRef.current) return;\n\t\tif (!frameSize || !screenSize || isHidden || hasntMeasured && !open) return;\n\t\tanimateTo(position);\n\t\tif (position === -1) {\n\t\t\tscrollBridge.scrollLock = false;\n\t\t\tscrollBridge.scrollStartY = -1;\n\t\t}\n\t\tif (open && position >= 0) {\n\t\t\tconst isTopPosition = position === 0;\n\t\t\tscrollBridge.isAtTop = isTopPosition;\n\t\t\tif (isTopPosition) {\n\t\t\t\tscrollBridge.scrollLockY = void 0;\n\t\t\t\tscrollBridge.setScrollEnabled?.(true);\n\t\t\t} else {\n\t\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t\tscrollBridge.setScrollEnabled?.(false);\n\t\t\t}\n\t\t}\n\t}, [\n\t\thasntMeasured,\n\t\tdisableAnimation,\n\t\tisHidden,\n\t\tframeSize,\n\t\tscreenSize,\n\t\topen,\n\t\tposition\n\t]);\n\tconst disableDrag = props.disableDrag ?? controller?.disableDrag;\n\tuseThemeName();\n\tconst [blockPan, setBlockPan] = React.useState(false);\n\tconst panResponder = React.useMemo(() => {\n\t\tif (disableDrag) return;\n\t\tif (!frameSize) return;\n\t\tif (isShowingInnerSheet) return;\n\t\tconst minY = activePositions[0];\n\t\tscrollBridge.paneMinY = minY;\n\t\tlet startY = at.current;\n\t\tfunction setPanning(val) {\n\t\t\tsetIsDragging(val);\n\t\t\tif (!sheetHiddenStyleSheet) {\n\t\t\t\tsheetHiddenStyleSheet = document.createElement(\"style\");\n\t\t\t\tif (typeof document.head !== \"undefined\") document.head.appendChild(sheetHiddenStyleSheet);\n\t\t\t}\n\t\t\tif (!val) sheetHiddenStyleSheet.innerText = \"\";\n\t\t\telse sheetHiddenStyleSheet.innerText = \":root * { user-select: none !important; -webkit-user-select: none !important; }\";\n\t\t}\n\t\tconst release = ({ vy }) => {\n\t\t\tscrollBridge.setParentDragging(false);\n\t\t\tif (scrollBridge.scrollLock) return;\n\t\t\tisExternalDrag = false;\n\t\t\tpreviouslyScrolling = false;\n\t\t\tsetPanning(false);\n\t\t\tconst currentPos = at.current;\n\t\t\tconst closestPoint = getSheetReleasePosition({\n\t\t\t\tpositions: activePositions,\n\t\t\t\tprojectedEnd: currentPos + frameSize * vy * .2,\n\t\t\t\tcurrentPosition: currentPos,\n\t\t\t\tframeSize,\n\t\t\t\tdismissOnSnapToBottom,\n\t\t\t\tsnapPointsMode,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tisWeb\n\t\t\t});\n\t\t\tsetPosition(closestPoint);\n\t\t\tanimateTo(closestPoint);\n\t\t};\n\t\tconst finish = (_e, state2) => {\n\t\t\trelease({\n\t\t\t\tvy: state2.vy,\n\t\t\t\tdragAt: state2.dy\n\t\t\t});\n\t\t};\n\t\tlet previouslyScrolling = false;\n\t\tconst onMoveShouldSet = (e, { dy }) => {\n\t\t\tfunction getShouldSet() {\n\t\t\t\tif (e.target === providerProps.handleRef.current) return true;\n\t\t\t\tif (scrollBridge.scrollNodeTouched) return false;\n\t\t\t\tif (scrollBridge.hasScrollableContent === true) {\n\t\t\t\t\tif (scrollBridge.scrollLock) return false;\n\t\t\t\t\tconst isScrolled = scrollBridge.y !== 0;\n\t\t\t\t\tconst isDraggingUp = dy < 0;\n\t\t\t\t\tconst isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;\n\t\t\t\t\tif (isScrolled) return false;\n\t\t\t\t\tif (isNearTop) {\n\t\t\t\t\t\tif (hasScrollView.current && isDraggingUp) return false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn Math.abs(dy) > 10;\n\t\t\t}\n\t\t\tconst granted = getShouldSet();\n\t\t\tif (granted) scrollBridge.setParentDragging(true);\n\t\t\treturn granted;\n\t\t};\n\t\tconst grant = () => {\n\t\t\tsetPanning(true);\n\t\t\tstopSpring();\n\t\t\tstartY = getAnimatedPosition();\n\t\t};\n\t\tlet isExternalDrag = false;\n\t\tscrollBridge.startPanDrag = () => {\n\t\t\tisExternalDrag = true;\n\t\t\tgrant();\n\t\t};\n\t\tscrollBridge.drag = (dy) => {\n\t\t\tif (!isExternalDrag) {\n\t\t\t\tisExternalDrag = true;\n\t\t\t\tgrant();\n\t\t\t}\n\t\t\tsetAnimatedPositionDirect(resisted(dy + startY, minY));\n\t\t};\n\t\tscrollBridge.release = release;\n\t\tscrollBridge.snapToPosition = (positionIndex) => {\n\t\t\tisExternalDrag = false;\n\t\t\tsetPanning(false);\n\t\t\tsetPosition(positionIndex);\n\t\t\tanimateTo(positionIndex);\n\t\t};\n\t\treturn PanResponder.create({\n\t\t\tonMoveShouldSetPanResponder: onMoveShouldSet,\n\t\t\tonPanResponderTerminationRequest: () => false,\n\t\t\tonPanResponderGrant: grant,\n\t\t\tonPanResponderMove: (_e, { dy }) => {\n\t\t\t\tconst to = resisted(dy + startY, minY);\n\t\t\t\tif (to <= minY) scrollBridge.setParentDragging(false);\n\t\t\t\telse scrollBridge.setParentDragging(true);\n\t\t\t\tsetAnimatedPositionDirect(to);\n\t\t\t},\n\t\t\tonPanResponderEnd: finish,\n\t\t\tonPanResponderTerminate: finish,\n\t\t\tonPanResponderRelease: finish\n\t\t});\n\t}, [\n\t\tdisableDrag,\n\t\tisShowingInnerSheet,\n\t\tanimateTo,\n\t\tframeSize,\n\t\tactivePositions,\n\t\tsetPosition,\n\t\tdismissOnSnapToBottom,\n\t\tsnapPointsMode\n\t]);\n\tReact.useEffect(() => {\n\t\tif (isDragging || isHidden || !open || disableAnimation) return;\n\t\tif (!frameSize || !screenSize) return;\n\t\tanimateTo(position, {\n\t\t\ttype: \"timing\",\n\t\t\tduration: 250\n\t\t});\n\t}, [isKeyboardVisible, keyboardHeight]);\n\tconst wasDragging = React.useRef(false);\n\tReact.useEffect(() => {\n\t\tif (isDragging) {\n\t\t\twasDragging.current = true;\n\t\t\treturn;\n\t\t}\n\t\tif (!wasDragging.current) return;\n\t\twasDragging.current = false;\n\t\tif (!frameSize || !screenSize || isHidden || !open) return;\n\t\tanimateTo(position);\n\t}, [isDragging]);\n\tReact.useEffect(() => {\n\t\tif (!open && isKeyboardVisible) {\n\t\t\tdismissKeyboard();\n\t\t\tpauseKeyboardHandler.current = false;\n\t\t\tflushPendingHide();\n\t\t}\n\t}, [open]);\n\tReact.useEffect(() => {\n\t\tif (!isWeb || !modal || !open || shouldHideParentSheet) return;\n\t\tconst layer = {};\n\t\tsheetEscapeLayers.push(layer);\n\t\tconst onKeyDown = (event) => {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tif (sheetEscapeLayers[sheetEscapeLayers.length - 1] === layer) state.setOpen(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"keydown\", onKeyDown);\n\t\treturn () => {\n\t\t\tconst index = sheetEscapeLayers.indexOf(layer);\n\t\t\tif (index > -1) sheetEscapeLayers.splice(index, 1);\n\t\t\tdocument.removeEventListener(\"keydown\", onKeyDown);\n\t\t};\n\t}, [\n\t\tmodal,\n\t\topen,\n\t\tshouldHideParentSheet,\n\t\tstate.setOpen\n\t]);\n\tconst { panGesture, panGestureRef, gestureHandlerEnabled } = useGestureHandlerPan({\n\t\tpositions: activePositions,\n\t\tframeSize,\n\t\tsetPosition,\n\t\tanimateTo,\n\t\tstopSpring,\n\t\tscrollBridge,\n\t\tsetIsDragging,\n\t\tgetCurrentPosition: getAnimatedPosition,\n\t\tresisted,\n\t\tdisableDrag,\n\t\tisShowingInnerSheet,\n\t\tsetAnimatedPosition: setAnimatedPositionDirect,\n\t\tdismissOnSnapToBottom,\n\t\tsnapPointsMode,\n\t\tisKeyboardVisible,\n\t\tpauseKeyboardHandler\n\t});\n\tconst ignoreLayoutForKeyboard = useEvent(() => isWeb && moveOnKeyboardChange && getWebKeyboardResizeHeight() >= MIN_KEYBOARD_HEIGHT);\n\tconst handleAnimationViewLayout = useEvent((e) => {\n\t\tif (!open && stableFrameSize.current !== 0) return;\n\t\tconst layoutHeight = e.nativeEvent?.layout.height;\n\t\tif (ignoreLayoutForKeyboard() && frameSize > 0) return;\n\t\tconst next = modal ? Math.min(layoutHeight, getStableViewportHeight()) : layoutHeight;\n\t\tif (!next) return;\n\t\tsetFrameSize(Math.round(next));\n\t});\n\tconst handleMaxContentViewLayout = React.useCallback((e) => {\n\t\tif (ignoreLayoutForKeyboard() && screenSize > 0) return;\n\t\tconst next = Math.min(e.nativeEvent?.layout.height, getStableViewportHeight());\n\t\tif (!next) return;\n\t\tsetMaxContentSize(Math.round(next));\n\t}, [ignoreLayoutForKeyboard, screenSize]);\n\tconst animatedStyle = useAnimatedNumberStyle(animatedNumber, React.useCallback((val) => {\n\t\t\"worklet\";\n\t\treturn { transform: [{ translateY: frameSize === 0 ? hiddenSize : val }] };\n\t}, [frameSize]));\n\tconst [isFullyClosed, setIsFullyClosed] = React.useState(false);\n\tif (open && isFullyClosed) setIsFullyClosed(false);\n\tconst hasEverOpened = React.useRef(open);\n\tif (open) hasEverOpened.current = true;\n\tconst isVisuallyActive = open || hasEverOpened.current && !isFullyClosed;\n\tconst applyHidden = shouldHideParentSheet || isFullyClosed && !disableHideWhenClosed;\n\tconst forcedContentHeight = hasFit ? void 0 : snapPointsMode === \"percent\" ? `${maxSnapPoint}${isWeb ? modal ? \"dvh\" : \"%\" : \"%\"}` : maxSnapPoint;\n\tconst setHasScrollView = React.useCallback((val) => {\n\t\thasScrollView.current = val;\n\t}, []);\n\tconst animatedPositionValue = React.useMemo(() => ({\n\t\tvalue: animatedNumber,\n\t\tscreenSize: effScreenSize,\n\t\tframeSize,\n\t\tsnapOffsets: activePositions,\n\t\tminY: activePositions[0] ?? 0\n\t}), [\n\t\tanimatedNumber,\n\t\teffScreenSize,\n\t\tframeSize,\n\t\tactivePositions\n\t]);\n\tconst { overlayChildren, animatedChildren } = React.useMemo(() => partitionSheetChildren(props.children), [props.children]);\n\tlet contents = /* @__PURE__ */ jsx(LayoutMeasurementController, {\n\t\tdisable: !open,\n\t\tchildren: /* @__PURE__ */ jsx(ParentSheetContext.Provider, {\n\t\t\tvalue: nextParentContext,\n\t\t\tchildren: /* @__PURE__ */ jsx(SheetProvider, {\n\t\t\t\t...providerProps,\n\t\t\t\tkeyboardOccludedHeight,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tkeyboardStableFrameHeight,\n\t\t\t\tsetHasScrollView,\n\t\t\t\tchildren: /* @__PURE__ */ jsx(GestureSheetProvider, {\n\t\t\t\t\tisDragging,\n\t\t\t\t\tblockPan,\n\t\t\t\t\tsetBlockPan,\n\t\t\t\t\tpanGesture,\n\t\t\t\t\tpanGestureRef,\n\t\t\t\t\tchildren: /* @__PURE__ */ jsxs(SheetAnimatedPositionContext.Provider, {\n\t\t\t\t\t\tvalue: animatedPositionValue,\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t/* @__PURE__ */ jsx(SheetOverlayLayerContext.Provider, {\n\t\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t\t\tchildren: /* @__PURE__ */ jsx(AnimatePresence, {\n\t\t\t\t\t\t\t\t\tcustom: { open },\n\t\t\t\t\t\t\t\t\tchildren: shouldHideParentSheet || !open ? null : overlayChildren\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsnapPointsMode !== \"percent\" && /* @__PURE__ */ jsx(View$1, {\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\t\t\tpointerEvents: \"none\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonLayout: handleMaxContentViewLayout\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t/* @__PURE__ */ jsx(AnimatedView, {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tonLayout: handleAnimationViewLayout,\n\t\t\t\t\t\t\t\ttransition: isDragging || disableAnimation ? null : transition,\n\t\t\t\t\t\t\t\tdisableClassName: true,\n\t\t\t\t\t\t\t\tstyle: [{\n\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\tzIndex,\n\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\theight: forcedContentHeight,\n\t\t\t\t\t\t\t\t\tminHeight: forcedContentHeight,\n\t\t\t\t\t\t\t\t\t...applyHidden && { display: \"none\" },\n\t\t\t\t\t\t\t\t\t...(shouldHideParentSheet || !open) && { pointerEvents: \"none\" }\n\t\t\t\t\t\t\t\t}, animatedStyle],\n\t\t\t\t\t\t\t\tchildren: gestureHandlerEnabled && panGesture ? /* @__PURE__ */ jsx(GestureDetectorWrapper, {\n\t\t\t\t\t\t\t\t\tgesture: panGesture,\n\t\t\t\t\t\t\t\t\tstyle: { flex: 1 },\n\t\t\t\t\t\t\t\t\tchildren: animatedChildren\n\t\t\t\t\t\t\t\t}) : /* @__PURE__ */ jsx(View$1, {\n\t\t\t\t\t\t\t\t\t...panResponder?.panHandlers,\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\t\theight: \"100%\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tchildren: animatedChildren\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t]\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t});\n\tconst shouldMountChildren = unmountChildrenWhenHidden ? !isFullyClosed : true;\n\tif (modal) {\n\t\tconst RNGHRoot = getGestureHandlerState().RootView;\n\t\tconst mountedContents = shouldMountChildren ? /* @__PURE__ */ jsx(ContainerComponent, { children: contents }) : null;\n\t\tconst modalContents = /* @__PURE__ */ jsx(Portal, {\n\t\t\tstackZIndex: zIndex,\n\t\t\thidden: !isVisuallyActive,\n\t\t\t...portalProps,\n\t\t\tchildren: mountedContents && RNGHRoot ? /* @__PURE__ */ jsx(RNGHRoot, {\n\t\t\t\tstyle: open ? rnghRootStyleOpen : rnghRootStyleClosed,\n\t\t\t\tchildren: mountedContents\n\t\t\t}) : mountedContents\n\t\t});\n\t\tif (isWeb) return modalContents;\n\t\treturn /* @__PURE__ */ jsx(SheetInsideSheetContext.Provider, {\n\t\t\tvalue: onInnerSheet,\n\t\t\tchildren: modalContents\n\t\t});\n\t}\n\treturn contents;\n});\nfunction isSheetOverlayComponent(type) {\n\tlet staticConfig = type?.staticConfig;\n\twhile (staticConfig) {\n\t\tif (staticConfig[SHEET_OVERLAY_MARKER]) return true;\n\t\tstaticConfig = staticConfig.parentStaticConfig;\n\t}\n\treturn false;\n}\nfunction partitionSheetChildren(children) {\n\tconst overlayChildren = [];\n\tconst animatedChildren = [];\n\tReact.Children.forEach(children, (child) => {\n\t\tif (!React.isValidElement(child)) {\n\t\t\tanimatedChildren.push(child);\n\t\t\treturn;\n\t\t}\n\t\tif (isSheetOverlayComponent(child.type)) {\n\t\t\toverlayChildren.push(child);\n\t\t\treturn;\n\t\t}\n\t\tanimatedChildren.push(child);\n\t});\n\treturn {\n\t\toverlayChildren,\n\t\tanimatedChildren\n\t};\n}\nfunction getYPositions(mode, point, screenSize, frameSize) {\n\tif (!screenSize || !frameSize) return 0;\n\tif (mode === \"mixed\") {\n\t\tif (typeof point === \"number\") return screenSize - Math.min(screenSize, Math.max(0, point));\n\t\tif (point === \"fit\") return screenSize - Math.min(screenSize, frameSize);\n\t\tif (point.endsWith(\"%\")) {\n\t\t\tconst pct2 = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;\n\t\t\tif (Number.isNaN(pct2)) {\n\t\t\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains an invalid percentage string\", \"Use \\\"fit\\\", a pixel number, or a percentage such as \\\"50%\\\"\", \"snapPoint\", point));\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn Math.round(screenSize - pct2 * screenSize);\n\t\t}\n\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains an unsupported mixed-mode value\", \"Use \\\"fit\\\", a pixel number, or a percentage such as \\\"50%\\\"\", \"snapPoint\", point));\n\t\treturn 0;\n\t}\n\tif (mode === \"fit\") {\n\t\tif (point === 0) return screenSize;\n\t\treturn screenSize - Math.min(screenSize, frameSize);\n\t}\n\tif (mode === \"constant\" && typeof point === \"number\") return screenSize - Math.min(screenSize, Math.max(0, point));\n\tconst pct = Math.min(100, Math.max(0, Number(point))) / 100;\n\tif (Number.isNaN(pct)) {\n\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains a value that cannot be converted to a percentage\", \"Use a numeric percentage such as 50\", \"snapPoint\", point));\n\t\treturn 0;\n\t}\n\treturn Math.round(screenSize - pct * screenSize);\n}\n\nexport { SheetImplementationCustom, isSheetOverlayComponent };"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SheetImplementationCustom.js","names":[],"sources":["esm/SheetImplementationCustom.js"],"sourcesContent":["import { AnimatePresence } from \"@tamagui/animate-presence\";\nimport { useComposedRefs } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { LayoutMeasurementController, View, createRefComponent, formatDiagnostic, useAnimatedNumber, useAnimatedNumberStyle, useAnimationDriver, useDidFinishSSR, useEvent, useThemeName } from \"@tamagui/core\";\nimport { Portal, needsPortalRepropagation } from \"@tamagui/portal\";\nimport React, { useState } from \"react\";\nimport { Dimensions, PanResponder, View as View$1 } from \"react-native-web\";\nimport { ParentSheetContext, SheetInsideSheetContext } from \"./contexts\";\nimport { SHEET_OVERLAY_MARKER } from \"./constants\";\nimport { GestureDetectorWrapper } from \"./GestureDetectorWrapper\";\nimport { getGestureHandlerState } from \"./gestureState\";\nimport { GestureSheetProvider } from \"./GestureSheetContext\";\nimport { resisted } from \"./helpers\";\nimport { getKeyboardAdjustedSheetY, getKeyboardOccludedHeight, getSheetReleasePosition } from \"./keyboardAvoidance\";\nimport { MIN_KEYBOARD_HEIGHT, getMaxViewportHeight, getStableLayoutViewportHeight, getWebKeyboardResizeHeight, getWebVisualViewportOffsetTop } from \"./webViewport\";\nimport { SheetAnimatedPositionContext, SheetOverlayLayerContext, SheetProvider } from \"./SheetContext\";\nimport { useGestureHandlerPan } from \"./useGestureHandlerPan\";\nimport { useKeyboardControllerSheet } from \"./useKeyboardControllerSheet\";\nimport { useSafeAreaInsets } from \"./useSafeAreaInsets\";\nimport { useSheetOpenState } from \"./useSheetOpenState\";\nimport { useSheetProviderProps } from \"./useSheetProviderProps\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\n\nconst hiddenSize = 10000.1;\nconst rnghRootStyleOpen = {\n\twidth: \"100%\",\n\theight: \"100%\"\n};\nconst rnghRootStyleClosed = {\n\twidth: \"100%\",\n\theight: 0\n};\nlet sheetHiddenStyleSheet = null;\nconst sheetEscapeLayers = [];\nconst relativeDimensionTo = isWeb ? \"window\" : \"screen\";\nfunction getStableViewportHeight() {\n\tif (isWeb && typeof window !== \"undefined\") return getStableLayoutViewportHeight();\n\treturn Dimensions.get(relativeDimensionTo).height;\n}\nconst SheetImplementationCustom = createRefComponent(function SheetImplementationCustom2(props, forwardedRef) {\n\tconst parentSheet = React.useContext(ParentSheetContext);\n\tconst safeAreaTopInset = useSafeAreaInsets()?.top ?? 0;\n\tconst { transition, transitionConfig: transitionConfigProp, modal = false, zIndex = parentSheet.zIndex + 1, moveOnKeyboardChange = false, unmountChildrenWhenHidden = false, disableHideWhenClosed = false, portalProps, containerComponent: ContainerComponent = React.Fragment, onTransition } = props;\n\tconst state = useSheetOpenState(props);\n\tconst providerProps = useSheetProviderProps(props, state);\n\tconst { frameSize, setFrameSize, dismissOnSnapToBottom, snapPoints, snapPointsMode, hasFit, position, setPosition, scrollBridge, screenSize, setMaxContentSize, maxSnapPoint } = providerProps;\n\tconst { open, controller, isHidden } = state;\n\tconst openRef = React.useRef(open);\n\topenRef.current = open;\n\tconst ref = useComposedRefs(forwardedRef, React.useRef(void 0), providerProps.contentRef);\n\tconst animationDriver = useAnimationDriver();\n\tconst transitionConfig = (() => {\n\t\tif (transitionConfigProp) return transitionConfigProp;\n\t\tconst [animationProp, animationPropConfig] = !transition ? [] : Array.isArray(transition) ? transition : [transition];\n\t\tconst namedConfig = animationProp && animationDriver.animations?.[animationProp];\n\t\tif (namedConfig) {\n\t\t\tif (typeof namedConfig === \"string\") return animationPropConfig ?? null;\n\t\t\treturn {\n\t\t\t\t...namedConfig,\n\t\t\t\t...animationPropConfig\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t})();\n\tconst [isShowingInnerSheet, setIsShowingInnerSheet] = React.useState(false);\n\tconst shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet && needsPortalRepropagation();\n\tconst sheetInsideSheet = React.useContext(SheetInsideSheetContext);\n\tconst onInnerSheet = React.useCallback((hasChild) => {\n\t\tsetIsShowingInnerSheet(hasChild);\n\t}, []);\n\tconst { keyboardHeight, isKeyboardVisible, dismissKeyboard, pauseKeyboardHandler, flushPendingHide } = useKeyboardControllerSheet({ enabled: Boolean(moveOnKeyboardChange) });\n\tconst stableFrameSize = React.useRef(frameSize);\n\tReact.useEffect(() => {\n\t\tif (open && frameSize) stableFrameSize.current = frameSize;\n\t}, [open, frameSize]);\n\tconst isWebKbSheet = isWeb && hasFit && moveOnKeyboardChange;\n\tconst isNativeKbFitSheet = !isWeb && hasFit && Boolean(moveOnKeyboardChange);\n\tconst preKeyboardFrameSize = React.useRef(0);\n\tReact.useEffect(() => {\n\t\tif (isNativeKbFitSheet && open && !isKeyboardVisible && frameSize > 0) preKeyboardFrameSize.current = frameSize;\n\t}, [\n\t\tisNativeKbFitSheet,\n\t\topen,\n\t\tisKeyboardVisible,\n\t\tframeSize\n\t]);\n\tconst effScreenSize = isWebKbSheet ? getStableViewportHeight() : screenSize;\n\tconst effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize;\n\tconst positions = React.useMemo(() => snapPoints.map((point) => getYPositions(snapPointsMode, point, effScreenSize, effectiveFrameSize)), [\n\t\teffScreenSize,\n\t\teffectiveFrameSize,\n\t\tsnapPoints,\n\t\tsnapPointsMode\n\t]);\n\tconst [isDragging, setIsDragging_] = React.useState(false);\n\tconst isDraggingRef = React.useRef(false);\n\tconst setIsDragging = React.useCallback((val) => {\n\t\tisDraggingRef.current = val;\n\t\tpauseKeyboardHandler.current = val;\n\t\tsetIsDragging_(val);\n\t\tif (!val) flushPendingHide();\n\t}, [pauseKeyboardHandler, flushPendingHide]);\n\tconst activePositionsRef = React.useRef(positions);\n\tconst activePositions = React.useMemo(() => {\n\t\tif (isDragging || isDraggingRef.current) return activePositionsRef.current;\n\t\tlet result;\n\t\tif (!isKeyboardVisible || keyboardHeight <= 0) result = positions;\n\t\telse result = positions.map((p) => getKeyboardAdjustedSheetY({\n\t\t\tsheetY: p,\n\t\t\tscreenSize: effScreenSize,\n\t\t\tisKeyboardVisible,\n\t\t\tkeyboardHeight,\n\t\t\tshouldTranslate: true,\n\t\t\tsafeAreaTop: isWeb ? getWebVisualViewportOffsetTop() : safeAreaTopInset\n\t\t}));\n\t\tactivePositionsRef.current = result;\n\t\treturn result;\n\t}, [\n\t\tpositions,\n\t\tisKeyboardVisible,\n\t\tkeyboardHeight,\n\t\teffScreenSize,\n\t\tisDragging,\n\t\tsafeAreaTopInset\n\t]);\n\tconst keyboardOccludedHeight = getKeyboardOccludedHeight({\n\t\tframeSize: effectiveFrameSize,\n\t\tisKeyboardVisible,\n\t\tkeyboardHeight,\n\t\tscreenSize: effScreenSize,\n\t\tsheetY: position >= 0 ? activePositions[position] : void 0\n\t});\n\tconst keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : isNativeKbFitSheet && isKeyboardVisible && preKeyboardFrameSize.current > 0 ? preKeyboardFrameSize.current : 0;\n\tconst AnimatedView = animationDriver.View ?? View;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!(sheetInsideSheet && open)) return;\n\t\tsheetInsideSheet(true);\n\t\treturn () => {\n\t\t\tsheetInsideSheet(false);\n\t\t};\n\t}, [sheetInsideSheet, open]);\n\tconst nextParentContext = React.useMemo(() => ({ zIndex }), [zIndex]);\n\tconst startPosition = useDidFinishSSR() && screenSize ? screenSize : hiddenSize;\n\tconst animatedNumber = useAnimatedNumber(startPosition);\n\tconst at = React.useRef(startPosition);\n\tconst hasntMeasured = at.current === hiddenSize;\n\tconst [disableAnimation, setDisableAnimation] = useState(hasntMeasured);\n\tconst skipAdaptAnimation = React.useRef(false);\n\tif (controller?.skipNextAnimation) skipAdaptAnimation.current = true;\n\tconst hasScrollView = React.useRef(false);\n\tconst lastPositionIndexRef = React.useRef(-1);\n\tconst pendingTransitionRef = React.useRef(null);\n\tconst emitTransition = useEvent((phase, event, finished) => {\n\t\tconst e = {\n\t\t\tphase,\n\t\t\tcause: event.cause,\n\t\t\tposition: event.position\n\t\t};\n\t\tif (phase === \"end\") e.finished = finished;\n\t\tonTransition?.(e);\n\t\tcontroller?.onTransition?.(e);\n\t});\n\tconst syncAnimatedPosition = useEvent((value) => {\n\t\tat.current = value;\n\t\tscrollBridge.paneY = value;\n\t\tconst minY = activePositions[0];\n\t\tconst wasAtTop = scrollBridge.isAtTop;\n\t\tconst nowAtTop = value <= minY + 5;\n\t\tif (wasAtTop === nowAtTop) return;\n\t\tscrollBridge.isAtTop = nowAtTop;\n\t\tif (nowAtTop) {\n\t\t\tif (scrollBridge.lockScrollAtTop) {\n\t\t\t\tif (scrollBridge.y > 0) {\n\t\t\t\t\tscrollBridge.forceScrollTo?.(0);\n\t\t\t\t\tscrollBridge.y = 0;\n\t\t\t\t}\n\t\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t\tscrollBridge.setScrollEnabled?.(false, 0);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (scrollBridge.y > 0) {\n\t\t\t\tscrollBridge.forceScrollTo?.(0);\n\t\t\t\tscrollBridge.y = 0;\n\t\t\t}\n\t\t\tscrollBridge.scrollLockY = void 0;\n\t\t\tscrollBridge.setScrollEnabled?.(true);\n\t\t} else {\n\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\tscrollBridge.setScrollEnabled?.(false);\n\t\t}\n\t});\n\tconst setAnimatedPositionDirect = useEvent((value) => {\n\t\tsyncAnimatedPosition(value);\n\t\tanimatedNumber.setValue(value, { type: \"direct\" });\n\t});\n\tconst getAnimatedPosition = useEvent(() => {\n\t\tconst value = animatedNumber.getValue();\n\t\tsyncAnimatedPosition(value);\n\t\treturn value;\n\t});\n\tfunction stopSpring() {\n\t\tanimatedNumber.stop();\n\t\tif (scrollBridge.onFinishAnimate) {\n\t\t\tscrollBridge.onFinishAnimate();\n\t\t\tscrollBridge.onFinishAnimate = void 0;\n\t\t}\n\t}\n\tconst animateTo = useEvent((position2, animationOverride) => {\n\t\tif (frameSize === 0) return;\n\t\tconst closeTarget = isWeb ? Math.max(effScreenSize, getMaxViewportHeight()) : effScreenSize;\n\t\tconst isDismissPosition = dismissOnSnapToBottom && position2 === activePositions.length - 1;\n\t\tconst isOpenAnimation = position2 !== -1 && !isHidden && !isDismissPosition;\n\t\tconst toValue = isOpenAnimation ? activePositions[position2] : closeTarget;\n\t\tif (at.current === toValue) {\n\t\t\tif (isDismissPosition) {\n\t\t\t\tif (pendingTransitionRef.current) {\n\t\t\t\t\temitTransition(\"end\", pendingTransitionRef.current, false);\n\t\t\t\t\tpendingTransitionRef.current = null;\n\t\t\t\t}\n\t\t\t\tstopSpring();\n\t\t\t\tconst event2 = {\n\t\t\t\t\tcause: \"close\",\n\t\t\t\t\tposition: toValue\n\t\t\t\t};\n\t\t\t\tlastPositionIndexRef.current = -1;\n\t\t\t\temitTransition(\"start\", event2);\n\t\t\t\tsyncAnimatedPosition(toValue);\n\t\t\t\tsetIsFullyClosed(true);\n\t\t\t\temitTransition(\"end\", event2, true);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tat.current = toValue;\n\t\tconst cause = !isOpenAnimation ? \"close\" : lastPositionIndexRef.current < 0 ? \"open\" : \"snap\";\n\t\tlastPositionIndexRef.current = isOpenAnimation ? position2 : -1;\n\t\tconst event = {\n\t\t\tcause,\n\t\t\tposition: toValue\n\t\t};\n\t\tif (pendingTransitionRef.current) {\n\t\t\temitTransition(\"end\", pendingTransitionRef.current, false);\n\t\t\tpendingTransitionRef.current = null;\n\t\t}\n\t\tstopSpring();\n\t\tconst animationCompleteCallback = () => {\n\t\t\tif (at.current !== toValue) return;\n\t\t\tsyncAnimatedPosition(toValue);\n\t\t\tpendingTransitionRef.current = null;\n\t\t\tif (!isOpenAnimation && !openRef.current) setIsFullyClosed(true);\n\t\t\temitTransition(\"end\", event, true);\n\t\t};\n\t\tpendingTransitionRef.current = event;\n\t\temitTransition(\"start\", event);\n\t\tif (skipAdaptAnimation.current) {\n\t\t\tskipAdaptAnimation.current = false;\n\t\t\tanimatedNumber.setValue(toValue, {\n\t\t\t\ttype: \"timing\",\n\t\t\t\tduration: 0\n\t\t\t}, animationCompleteCallback);\n\t\t\treturn;\n\t\t}\n\t\tconst resolvedConfig = animationOverride || {\n\t\t\ttype: \"spring\",\n\t\t\t...transitionConfig\n\t\t};\n\t\tconst springConfig = !resolvedConfig.type || resolvedConfig.type === \"spring\" ? {\n\t\t\trestDisplacementThreshold: 1,\n\t\t\trestSpeedThreshold: 10,\n\t\t\tenergyThreshold: 1e-5,\n\t\t\t...resolvedConfig\n\t\t} : resolvedConfig;\n\t\tanimatedNumber.setValue(toValue, springConfig, animationCompleteCallback);\n\t});\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (hasntMeasured && screenSize && frameSize) {\n\t\t\tat.current = screenSize;\n\t\t\tanimatedNumber.setValue(screenSize, {\n\t\t\t\ttype: \"timing\",\n\t\t\t\tduration: 0\n\t\t\t}, () => {\n\t\t\t\tsyncAnimatedPosition(screenSize);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tsetDisableAnimation(false);\n\t\t\t\t}, 10);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (disableAnimation) return;\n\t\tif (isDraggingRef.current) return;\n\t\tif (!frameSize || !screenSize || isHidden || hasntMeasured && !open) return;\n\t\tanimateTo(position);\n\t\tif (position === -1) {\n\t\t\tscrollBridge.scrollLock = false;\n\t\t\tscrollBridge.scrollStartY = -1;\n\t\t}\n\t\tif (open && position >= 0) {\n\t\t\tconst isTopPosition = position === 0;\n\t\t\tscrollBridge.isAtTop = isTopPosition;\n\t\t\tif (isTopPosition) {\n\t\t\t\tscrollBridge.scrollLockY = void 0;\n\t\t\t\tscrollBridge.setScrollEnabled?.(true);\n\t\t\t} else {\n\t\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t\tscrollBridge.setScrollEnabled?.(false);\n\t\t\t}\n\t\t}\n\t}, [\n\t\thasntMeasured,\n\t\tdisableAnimation,\n\t\tisHidden,\n\t\tframeSize,\n\t\tscreenSize,\n\t\topen,\n\t\tposition\n\t]);\n\tconst disableDrag = props.disableDrag ?? controller?.disableDrag;\n\tuseThemeName();\n\tconst [blockPan, setBlockPan] = React.useState(false);\n\tconst panResponder = React.useMemo(() => {\n\t\tif (disableDrag) return;\n\t\tif (!frameSize) return;\n\t\tif (isShowingInnerSheet) return;\n\t\tconst minY = activePositions[0];\n\t\tscrollBridge.paneMinY = minY;\n\t\tlet startY = at.current;\n\t\tfunction setPanning(val) {\n\t\t\tsetIsDragging(val);\n\t\t\tif (!sheetHiddenStyleSheet) {\n\t\t\t\tsheetHiddenStyleSheet = document.createElement(\"style\");\n\t\t\t\tif (typeof document.head !== \"undefined\") document.head.appendChild(sheetHiddenStyleSheet);\n\t\t\t}\n\t\t\tif (!val) sheetHiddenStyleSheet.innerText = \"\";\n\t\t\telse sheetHiddenStyleSheet.innerText = \":root * { user-select: none !important; -webkit-user-select: none !important; }\";\n\t\t}\n\t\tconst release = ({ vy }) => {\n\t\t\tscrollBridge.setParentDragging(false);\n\t\t\tif (scrollBridge.scrollLock) return;\n\t\t\tisExternalDrag = false;\n\t\t\tpreviouslyScrolling = false;\n\t\t\tsetPanning(false);\n\t\t\tconst currentPos = at.current;\n\t\t\tconst closestPoint = getSheetReleasePosition({\n\t\t\t\tpositions: activePositions,\n\t\t\t\tprojectedEnd: currentPos + frameSize * vy * .2,\n\t\t\t\tcurrentPosition: currentPos,\n\t\t\t\tframeSize,\n\t\t\t\tdismissOnSnapToBottom,\n\t\t\t\tsnapPointsMode,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tisWeb\n\t\t\t});\n\t\t\tsetPosition(closestPoint);\n\t\t\tanimateTo(closestPoint);\n\t\t};\n\t\tconst finish = (_e, state2) => {\n\t\t\trelease({\n\t\t\t\tvy: state2.vy,\n\t\t\t\tdragAt: state2.dy\n\t\t\t});\n\t\t};\n\t\tlet previouslyScrolling = false;\n\t\tconst onMoveShouldSet = (e, { dy }) => {\n\t\t\tfunction getShouldSet() {\n\t\t\t\tif (e.target === providerProps.handleRef.current) return true;\n\t\t\t\tif (scrollBridge.scrollNodeTouched) return false;\n\t\t\t\tif (scrollBridge.hasScrollableContent === true) {\n\t\t\t\t\tif (scrollBridge.scrollLock) return false;\n\t\t\t\t\tconst isScrolled = scrollBridge.y !== 0;\n\t\t\t\t\tconst isDraggingUp = dy < 0;\n\t\t\t\t\tconst isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;\n\t\t\t\t\tif (isScrolled) return false;\n\t\t\t\t\tif (isNearTop) {\n\t\t\t\t\t\tif (hasScrollView.current && isDraggingUp) return false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn Math.abs(dy) > 10;\n\t\t\t}\n\t\t\tconst granted = getShouldSet();\n\t\t\tif (granted) scrollBridge.setParentDragging(true);\n\t\t\treturn granted;\n\t\t};\n\t\tconst grant = () => {\n\t\t\tsetPanning(true);\n\t\t\tstopSpring();\n\t\t\tstartY = getAnimatedPosition();\n\t\t};\n\t\tlet isExternalDrag = false;\n\t\tscrollBridge.startPanDrag = () => {\n\t\t\tisExternalDrag = true;\n\t\t\tgrant();\n\t\t};\n\t\tscrollBridge.drag = (dy) => {\n\t\t\tif (!isExternalDrag) {\n\t\t\t\tisExternalDrag = true;\n\t\t\t\tgrant();\n\t\t\t}\n\t\t\tsetAnimatedPositionDirect(resisted(dy + startY, minY));\n\t\t};\n\t\tscrollBridge.release = release;\n\t\tscrollBridge.snapToPosition = (positionIndex) => {\n\t\t\tisExternalDrag = false;\n\t\t\tsetPanning(false);\n\t\t\tsetPosition(positionIndex);\n\t\t\tanimateTo(positionIndex);\n\t\t};\n\t\treturn PanResponder.create({\n\t\t\tonMoveShouldSetPanResponder: onMoveShouldSet,\n\t\t\tonPanResponderTerminationRequest: () => false,\n\t\t\tonPanResponderGrant: grant,\n\t\t\tonPanResponderMove: (_e, { dy }) => {\n\t\t\t\tconst to = resisted(dy + startY, minY);\n\t\t\t\tif (to <= minY) scrollBridge.setParentDragging(false);\n\t\t\t\telse scrollBridge.setParentDragging(true);\n\t\t\t\tsetAnimatedPositionDirect(to);\n\t\t\t},\n\t\t\tonPanResponderEnd: finish,\n\t\t\tonPanResponderTerminate: finish,\n\t\t\tonPanResponderRelease: finish\n\t\t});\n\t}, [\n\t\tdisableDrag,\n\t\tisShowingInnerSheet,\n\t\tanimateTo,\n\t\tframeSize,\n\t\tactivePositions,\n\t\tsetPosition,\n\t\tdismissOnSnapToBottom,\n\t\tsnapPointsMode\n\t]);\n\tReact.useEffect(() => {\n\t\tif (isDragging || isHidden || !open || disableAnimation) return;\n\t\tif (!frameSize || !screenSize) return;\n\t\tanimateTo(position, {\n\t\t\ttype: \"timing\",\n\t\t\tduration: 250\n\t\t});\n\t}, [isKeyboardVisible, keyboardHeight]);\n\tconst wasDragging = React.useRef(false);\n\tReact.useEffect(() => {\n\t\tif (isDragging) {\n\t\t\twasDragging.current = true;\n\t\t\treturn;\n\t\t}\n\t\tif (!wasDragging.current) return;\n\t\twasDragging.current = false;\n\t\tif (!frameSize || !screenSize || isHidden || !open) return;\n\t\tanimateTo(position);\n\t}, [isDragging]);\n\tReact.useEffect(() => {\n\t\tif (!open && isKeyboardVisible) {\n\t\t\tdismissKeyboard();\n\t\t\tpauseKeyboardHandler.current = false;\n\t\t\tflushPendingHide();\n\t\t}\n\t}, [open]);\n\tReact.useEffect(() => {\n\t\tif (!isWeb || !modal || !open || shouldHideParentSheet) return;\n\t\tconst layer = {};\n\t\tsheetEscapeLayers.push(layer);\n\t\tconst onKeyDown = (event) => {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tif (sheetEscapeLayers[sheetEscapeLayers.length - 1] === layer) state.setOpen(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"keydown\", onKeyDown);\n\t\treturn () => {\n\t\t\tconst index = sheetEscapeLayers.indexOf(layer);\n\t\t\tif (index > -1) sheetEscapeLayers.splice(index, 1);\n\t\t\tdocument.removeEventListener(\"keydown\", onKeyDown);\n\t\t};\n\t}, [\n\t\tmodal,\n\t\topen,\n\t\tshouldHideParentSheet,\n\t\tstate.setOpen\n\t]);\n\tconst { panGesture, panGestureRef, gestureHandlerEnabled } = useGestureHandlerPan({\n\t\tpositions: activePositions,\n\t\tframeSize,\n\t\tsetPosition,\n\t\tanimateTo,\n\t\tstopSpring,\n\t\tscrollBridge,\n\t\tsetIsDragging,\n\t\tgetCurrentPosition: getAnimatedPosition,\n\t\tresisted,\n\t\tdisableDrag,\n\t\tisShowingInnerSheet,\n\t\tsetAnimatedPosition: setAnimatedPositionDirect,\n\t\tdismissOnSnapToBottom,\n\t\tsnapPointsMode,\n\t\tisKeyboardVisible,\n\t\tpauseKeyboardHandler\n\t});\n\tconst ignoreLayoutForKeyboard = useEvent(() => isWeb && moveOnKeyboardChange && getWebKeyboardResizeHeight() >= MIN_KEYBOARD_HEIGHT);\n\tconst handleAnimationViewLayout = useEvent((e) => {\n\t\tif (!open && stableFrameSize.current !== 0) return;\n\t\tconst layoutHeight = e.nativeEvent?.layout.height;\n\t\tif (ignoreLayoutForKeyboard() && frameSize > 0) return;\n\t\tconst next = modal ? Math.min(layoutHeight, getStableViewportHeight()) : layoutHeight;\n\t\tif (!next) return;\n\t\tsetFrameSize(Math.round(next));\n\t});\n\tconst handleMaxContentViewLayout = React.useCallback((e) => {\n\t\tif (ignoreLayoutForKeyboard() && screenSize > 0) return;\n\t\tconst next = Math.min(e.nativeEvent?.layout.height, getStableViewportHeight());\n\t\tif (!next) return;\n\t\tsetMaxContentSize(Math.round(next));\n\t}, [ignoreLayoutForKeyboard, screenSize]);\n\tconst animatedStyle = useAnimatedNumberStyle(animatedNumber, React.useCallback((val) => {\n\t\t\"worklet\";\n\t\treturn { transform: [{ translateY: frameSize === 0 ? hiddenSize : val }] };\n\t}, [frameSize]));\n\tconst [isFullyClosed, setIsFullyClosed] = React.useState(false);\n\tif (open && isFullyClosed) setIsFullyClosed(false);\n\tconst hasEverOpened = React.useRef(open);\n\tif (open) hasEverOpened.current = true;\n\tconst isVisuallyActive = open || hasEverOpened.current && !isFullyClosed;\n\tconst applyHidden = shouldHideParentSheet || isFullyClosed && !disableHideWhenClosed;\n\tconst forcedContentHeight = hasFit ? void 0 : snapPointsMode === \"percent\" ? `${maxSnapPoint}${isWeb ? modal ? \"dvh\" : \"%\" : \"%\"}` : maxSnapPoint;\n\tconst setHasScrollView = React.useCallback((val) => {\n\t\thasScrollView.current = val;\n\t}, []);\n\tconst animatedPositionValue = React.useMemo(() => ({\n\t\tvalue: animatedNumber,\n\t\tscreenSize: effScreenSize,\n\t\tframeSize,\n\t\tsnapOffsets: activePositions,\n\t\tminY: activePositions[0] ?? 0\n\t}), [\n\t\tanimatedNumber,\n\t\teffScreenSize,\n\t\tframeSize,\n\t\tactivePositions\n\t]);\n\tconst { overlayChildren, animatedChildren } = React.useMemo(() => partitionSheetChildren(props.children), [props.children]);\n\tlet contents = /* @__PURE__ */ jsx(LayoutMeasurementController, {\n\t\tdisable: !open,\n\t\tchildren: /* @__PURE__ */ jsx(ParentSheetContext.Provider, {\n\t\t\tvalue: nextParentContext,\n\t\t\tchildren: /* @__PURE__ */ jsx(SheetProvider, {\n\t\t\t\t...providerProps,\n\t\t\t\tkeyboardOccludedHeight,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tkeyboardStableFrameHeight,\n\t\t\t\tsetHasScrollView,\n\t\t\t\tchildren: /* @__PURE__ */ jsx(GestureSheetProvider, {\n\t\t\t\t\tisDragging,\n\t\t\t\t\tblockPan,\n\t\t\t\t\tsetBlockPan,\n\t\t\t\t\tpanGesture,\n\t\t\t\t\tpanGestureRef,\n\t\t\t\t\tchildren: /* @__PURE__ */ jsxs(SheetAnimatedPositionContext.Provider, {\n\t\t\t\t\t\tvalue: animatedPositionValue,\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t/* @__PURE__ */ jsx(SheetOverlayLayerContext.Provider, {\n\t\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t\t\tchildren: /* @__PURE__ */ jsx(AnimatePresence, {\n\t\t\t\t\t\t\t\t\tcustom: { open },\n\t\t\t\t\t\t\t\t\tchildren: shouldHideParentSheet || !open ? null : overlayChildren\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsnapPointsMode !== \"percent\" && /* @__PURE__ */ jsx(View$1, {\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\t\t\tpointerEvents: \"none\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonLayout: handleMaxContentViewLayout\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t/* @__PURE__ */ jsx(AnimatedView, {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tonLayout: handleAnimationViewLayout,\n\t\t\t\t\t\t\t\ttransition: isDragging || disableAnimation ? null : transition,\n\t\t\t\t\t\t\t\tdisableClassName: true,\n\t\t\t\t\t\t\t\tstyle: [{\n\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\tzIndex,\n\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\theight: forcedContentHeight,\n\t\t\t\t\t\t\t\t\tminHeight: forcedContentHeight,\n\t\t\t\t\t\t\t\t\t...applyHidden && { display: \"none\" },\n\t\t\t\t\t\t\t\t\t...(shouldHideParentSheet || !open) && { pointerEvents: \"none\" }\n\t\t\t\t\t\t\t\t}, animatedStyle],\n\t\t\t\t\t\t\t\tchildren: gestureHandlerEnabled && panGesture ? /* @__PURE__ */ jsx(GestureDetectorWrapper, {\n\t\t\t\t\t\t\t\t\tgesture: panGesture,\n\t\t\t\t\t\t\t\t\tstyle: { flex: 1 },\n\t\t\t\t\t\t\t\t\tchildren: animatedChildren\n\t\t\t\t\t\t\t\t}) : /* @__PURE__ */ jsx(View$1, {\n\t\t\t\t\t\t\t\t\t...panResponder?.panHandlers,\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\t\theight: \"100%\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tchildren: animatedChildren\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t]\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t});\n\tconst shouldMountChildren = unmountChildrenWhenHidden ? !isFullyClosed : true;\n\tif (modal) {\n\t\tconst RNGHRoot = getGestureHandlerState().RootView;\n\t\tconst mountedContents = shouldMountChildren ? /* @__PURE__ */ jsx(ContainerComponent, { children: contents }) : null;\n\t\tconst modalContents = /* @__PURE__ */ jsx(Portal, {\n\t\t\tstackZIndex: zIndex,\n\t\t\thidden: !isVisuallyActive,\n\t\t\t...portalProps,\n\t\t\tchildren: mountedContents && RNGHRoot ? /* @__PURE__ */ jsx(RNGHRoot, {\n\t\t\t\tstyle: open ? rnghRootStyleOpen : rnghRootStyleClosed,\n\t\t\t\tchildren: mountedContents\n\t\t\t}) : mountedContents\n\t\t});\n\t\tif (isWeb) return modalContents;\n\t\treturn /* @__PURE__ */ jsx(SheetInsideSheetContext.Provider, {\n\t\t\tvalue: onInnerSheet,\n\t\t\tchildren: modalContents\n\t\t});\n\t}\n\treturn contents;\n});\nfunction isSheetOverlayComponent(type) {\n\tlet staticConfig = type?.staticConfig;\n\twhile (staticConfig) {\n\t\tif (staticConfig[SHEET_OVERLAY_MARKER]) return true;\n\t\tstaticConfig = staticConfig.parentStaticConfig;\n\t}\n\treturn false;\n}\nfunction partitionSheetChildren(children) {\n\tconst overlayChildren = [];\n\tconst animatedChildren = [];\n\tReact.Children.forEach(children, (child) => {\n\t\tif (!React.isValidElement(child)) {\n\t\t\tanimatedChildren.push(child);\n\t\t\treturn;\n\t\t}\n\t\tif (isSheetOverlayComponent(child.type)) {\n\t\t\toverlayChildren.push(child);\n\t\t\treturn;\n\t\t}\n\t\tanimatedChildren.push(child);\n\t});\n\treturn {\n\t\toverlayChildren,\n\t\tanimatedChildren\n\t};\n}\nfunction getYPositions(mode, point, screenSize, frameSize) {\n\tif (!screenSize || !frameSize) return 0;\n\tif (mode === \"mixed\") {\n\t\tif (typeof point === \"number\") return screenSize - Math.min(screenSize, Math.max(0, point));\n\t\tif (point === \"fit\") return screenSize - Math.min(screenSize, frameSize);\n\t\tif (point.endsWith(\"%\")) {\n\t\t\tconst pct2 = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;\n\t\t\tif (Number.isNaN(pct2)) {\n\t\t\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains an invalid percentage string\", \"Use \\\"fit\\\", a pixel number, or a percentage such as \\\"50%\\\"\", \"snapPoint\", point));\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn Math.round(screenSize - pct2 * screenSize);\n\t\t}\n\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains an unsupported mixed-mode value\", \"Use \\\"fit\\\", a pixel number, or a percentage such as \\\"50%\\\"\", \"snapPoint\", point));\n\t\treturn 0;\n\t}\n\tif (mode === \"fit\") {\n\t\tif (point === 0) return screenSize;\n\t\treturn screenSize - Math.min(screenSize, frameSize);\n\t}\n\tif (mode === \"constant\" && typeof point === \"number\") return screenSize - Math.min(screenSize, Math.max(0, point));\n\tconst pct = Math.min(100, Math.max(0, Number(point))) / 100;\n\tif (Number.isNaN(pct)) {\n\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains a value that cannot be converted to a percentage\", \"Use a numeric percentage such as 50\", \"snapPoint\", point));\n\t\treturn 0;\n\t}\n\treturn Math.round(screenSize - pct * screenSize);\n}\n\nexport { SheetImplementationCustom, isSheetOverlayComponent };"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,aAAa;AACnB,MAAM,oBAAoB;CACzB,OAAO;CACP,QAAQ;AACT;AACA,MAAM,sBAAsB;CAC3B,OAAO;CACP,QAAQ;AACT;AACA,IAAI,wBAAwB;AAC5B,MAAM,oBAAoB,CAAC;AAC3B,MAAM,sBAAsB,QAAQ,WAAW;AAC/C,SAAS,0BAA0B;CAClC,IAAI,SAAS,OAAO,WAAW,aAAa,OAAO,8BAA8B;CACjF,OAAO,WAAW,IAAI,mBAAmB,CAAC,CAAC;AAC5C;AACA,MAAM,4BAA4B,mBAAmB,SAAS,2BAA2B,OAAO,cAAc;CAC7G,MAAM,cAAc,MAAM,WAAW,kBAAkB;CACvD,MAAM,mBAAmB,kBAAkB,CAAC,EAAE,OAAO;CACrD,MAAM,EAAE,YAAY,kBAAkB,sBAAsB,QAAQ,OAAO,SAAS,YAAY,SAAS,GAAG,uBAAuB,OAAO,4BAA4B,OAAO,wBAAwB,OAAO,aAAa,oBAAoB,qBAAqB,MAAM,UAAU,iBAAiB;CACnS,MAAM,QAAQ,kBAAkB,KAAK;CACrC,MAAM,gBAAgB,sBAAsB,OAAO,KAAK;CACxD,MAAM,EAAE,WAAW,cAAc,uBAAuB,YAAY,gBAAgB,QAAQ,UAAU,aAAa,cAAc,YAAY,mBAAmB,iBAAiB;CACjL,MAAM,EAAE,MAAM,YAAY,aAAa;CACvC,MAAM,UAAU,MAAM,OAAO,IAAI;CACjC,QAAQ,UAAU;CAClB,MAAM,MAAM,gBAAgB,cAAc,MAAM,OAAO,KAAK,CAAC,GAAG,cAAc,UAAU;CACxF,MAAM,kBAAkB,mBAAmB;CAC3C,MAAM,0BAA0B;EAC/B,IAAI,sBAAsB,OAAO;EACjC,MAAM,CAAC,eAAe,uBAAuB,CAAC,aAAa,CAAC,IAAI,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU;EACpH,MAAM,cAAc,iBAAiB,gBAAgB,aAAa;EAClE,IAAI,aAAa;GAChB,IAAI,OAAO,gBAAgB,UAAU,OAAO,uBAAuB;GACnE,OAAO;IACN,GAAG;IACH,GAAG;GACJ;EACD;EACA,OAAO;CACR,EAAC,CAAE;CACH,MAAM,CAAC,qBAAqB,0BAA0B,MAAM,SAAS,KAAK;CAC1E,MAAM,wBAAwB,CAAC,SAAS,SAAS,uBAAuB,yBAAyB;CACjG,MAAM,mBAAmB,MAAM,WAAW,uBAAuB;CACjE,MAAM,eAAe,MAAM,aAAa,aAAa;EACpD,uBAAuB,QAAQ;CAChC,GAAG,CAAC,CAAC;CACL,MAAM,EAAE,gBAAgB,mBAAmB,iBAAiB,sBAAsB,qBAAqB,2BAA2B,EAAE,SAAS,QAAQ,oBAAoB,EAAE,CAAC;CAC5K,MAAM,kBAAkB,MAAM,OAAO,SAAS;CAC9C,MAAM,gBAAgB;EACrB,IAAI,QAAQ,WAAW,gBAAgB,UAAU;CAClD,GAAG,CAAC,MAAM,SAAS,CAAC;CACpB,MAAM,eAAe,SAAS,UAAU;CACxC,MAAM,qBAAqB,CAAC,SAAS,UAAU,QAAQ,oBAAoB;CAC3E,MAAM,uBAAuB,MAAM,OAAO,CAAC;CAC3C,MAAM,gBAAgB;EACrB,IAAI,sBAAsB,QAAQ,CAAC,qBAAqB,YAAY,GAAG,qBAAqB,UAAU;CACvG,GAAG;EACF;EACA;EACA;EACA;CACD,CAAC;CACD,MAAM,gBAAgB,eAAe,wBAAwB,IAAI;CACjE,MAAM,qBAAqB,OAAO,YAAY,gBAAgB,WAAW;CACzE,MAAM,YAAY,MAAM,cAAc,WAAW,KAAK,UAAU,cAAc,gBAAgB,OAAO,eAAe,kBAAkB,CAAC,GAAG;EACzI;EACA;EACA;EACA;CACD,CAAC;CACD,MAAM,CAAC,YAAY,kBAAkB,MAAM,SAAS,KAAK;CACzD,MAAM,gBAAgB,MAAM,OAAO,KAAK;CACxC,MAAM,gBAAgB,MAAM,aAAa,QAAQ;EAChD,cAAc,UAAU;EACxB,qBAAqB,UAAU;EAC/B,eAAe,GAAG;EAClB,IAAI,CAAC,KAAK,iBAAiB;CAC5B,GAAG,CAAC,sBAAsB,gBAAgB,CAAC;CAC3C,MAAM,qBAAqB,MAAM,OAAO,SAAS;CACjD,MAAM,kBAAkB,MAAM,cAAc;EAC3C,IAAI,cAAc,cAAc,SAAS,OAAO,mBAAmB;EACnE,IAAI;EACJ,IAAI,CAAC,qBAAqB,kBAAkB,GAAG,SAAS;OACnD,SAAS,UAAU,KAAK,MAAM,0BAA0B;GAC5D,QAAQ;GACR,YAAY;GACZ;GACA;GACA,iBAAiB;GACjB,aAAa,QAAQ,8BAA8B,IAAI;EACxD,CAAC,CAAC;EACF,mBAAmB,UAAU;EAC7B,OAAO;CACR,GAAG;EACF;EACA;EACA;EACA;EACA;EACA;CACD,CAAC;CACD,MAAM,yBAAyB,0BAA0B;EACxD,WAAW;EACX;EACA;EACA,YAAY;EACZ,QAAQ,YAAY,IAAI,gBAAgB,YAAY,KAAK;CAC1D,CAAC;CACD,MAAM,4BAA4B,gBAAgB,qBAAqB,YAAY,IAAI,YAAY,sBAAsB,qBAAqB,qBAAqB,UAAU,IAAI,qBAAqB,UAAU;CAChN,MAAM,eAAe,gBAAgB,QAAQ;CAC7C,gCAAgC;EAC/B,IAAI,EAAE,oBAAoB,OAAO;EACjC,iBAAiB,IAAI;EACrB,aAAa;GACZ,iBAAiB,KAAK;EACvB;CACD,GAAG,CAAC,kBAAkB,IAAI,CAAC;CAC3B,MAAM,oBAAoB,MAAM,eAAe,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;CACpE,MAAM,gBAAgB,gBAAgB,KAAK,aAAa,aAAa;CACrE,MAAM,iBAAiB,kBAAkB,aAAa;CACtD,MAAM,KAAK,MAAM,OAAO,aAAa;CACrC,MAAM,gBAAgB,GAAG,YAAY;CACrC,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,aAAa;CACtE,MAAM,qBAAqB,MAAM,OAAO,KAAK;CAC7C,IAAI,YAAY,mBAAmB,mBAAmB,UAAU;CAChE,MAAM,gBAAgB,MAAM,OAAO,KAAK;CACxC,MAAM,uBAAuB,MAAM,OAAO,CAAC,CAAC;CAC5C,MAAM,uBAAuB,MAAM,OAAO,IAAI;CAC9C,MAAM,iBAAiB,UAAU,OAAO,OAAO,aAAa;EAC3D,MAAM,IAAI;GACT;GACA,OAAO,MAAM;GACb,UAAU,MAAM;EACjB;EACA,IAAI,UAAU,OAAO,EAAE,WAAW;EAClC,eAAe,CAAC;EAChB,YAAY,eAAe,CAAC;CAC7B,CAAC;CACD,MAAM,uBAAuB,UAAU,UAAU;EAChD,GAAG,UAAU;EACb,aAAa,QAAQ;EACrB,MAAM,OAAO,gBAAgB;EAC7B,MAAM,WAAW,aAAa;EAC9B,MAAM,WAAW,SAAS,OAAO;EACjC,IAAI,aAAa,UAAU;EAC3B,aAAa,UAAU;EACvB,IAAI,UAAU;GACb,IAAI,aAAa,iBAAiB;IACjC,IAAI,aAAa,IAAI,GAAG;KACvB,aAAa,gBAAgB,CAAC;KAC9B,aAAa,IAAI;IAClB;IACA,aAAa,cAAc;IAC3B,aAAa,mBAAmB,OAAO,CAAC;IACxC;GACD;GACA,IAAI,aAAa,IAAI,GAAG;IACvB,aAAa,gBAAgB,CAAC;IAC9B,aAAa,IAAI;GAClB;GACA,aAAa,cAAc,KAAK;GAChC,aAAa,mBAAmB,IAAI;EACrC,OAAO;GACN,aAAa,cAAc;GAC3B,aAAa,mBAAmB,KAAK;EACtC;CACD,CAAC;CACD,MAAM,4BAA4B,UAAU,UAAU;EACrD,qBAAqB,KAAK;EAC1B,eAAe,SAAS,OAAO,EAAE,MAAM,SAAS,CAAC;CAClD,CAAC;CACD,MAAM,sBAAsB,eAAe;EAC1C,MAAM,QAAQ,eAAe,SAAS;EACtC,qBAAqB,KAAK;EAC1B,OAAO;CACR,CAAC;CACD,SAAS,aAAa;EACrB,eAAe,KAAK;EACpB,IAAI,aAAa,iBAAiB;GACjC,aAAa,gBAAgB;GAC7B,aAAa,kBAAkB,KAAK;EACrC;CACD;CACA,MAAM,YAAY,UAAU,WAAW,sBAAsB;EAC5D,IAAI,cAAc,GAAG;EACrB,MAAM,cAAc,QAAQ,KAAK,IAAI,eAAe,qBAAqB,CAAC,IAAI;EAC9E,MAAM,oBAAoB,yBAAyB,cAAc,gBAAgB,SAAS;EAC1F,MAAM,kBAAkB,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;EAC1D,MAAM,UAAU,kBAAkB,gBAAgB,aAAa;EAC/D,IAAI,GAAG,YAAY,SAAS;GAC3B,IAAI,mBAAmB;IACtB,IAAI,qBAAqB,SAAS;KACjC,eAAe,OAAO,qBAAqB,SAAS,KAAK;KACzD,qBAAqB,UAAU;IAChC;IACA,WAAW;IACX,MAAM,SAAS;KACd,OAAO;KACP,UAAU;IACX;IACA,qBAAqB,UAAU,CAAC;IAChC,eAAe,SAAS,MAAM;IAC9B,qBAAqB,OAAO;IAC5B,iBAAiB,IAAI;IACrB,eAAe,OAAO,QAAQ,IAAI;GACnC;GACA;EACD;EACA,GAAG,UAAU;EACb,MAAM,QAAQ,CAAC,kBAAkB,UAAU,qBAAqB,UAAU,IAAI,SAAS;EACvF,qBAAqB,UAAU,kBAAkB,YAAY,CAAC;EAC9D,MAAM,QAAQ;GACb;GACA,UAAU;EACX;EACA,IAAI,qBAAqB,SAAS;GACjC,eAAe,OAAO,qBAAqB,SAAS,KAAK;GACzD,qBAAqB,UAAU;EAChC;EACA,WAAW;EACX,MAAM,kCAAkC;GACvC,IAAI,GAAG,YAAY,SAAS;GAC5B,qBAAqB,OAAO;GAC5B,qBAAqB,UAAU;GAC/B,IAAI,CAAC,mBAAmB,CAAC,QAAQ,SAAS,iBAAiB,IAAI;GAC/D,eAAe,OAAO,OAAO,IAAI;EAClC;EACA,qBAAqB,UAAU;EAC/B,eAAe,SAAS,KAAK;EAC7B,IAAI,mBAAmB,SAAS;GAC/B,mBAAmB,UAAU;GAC7B,eAAe,SAAS,SAAS;IAChC,MAAM;IACN,UAAU;GACX,GAAG,yBAAyB;GAC5B;EACD;EACA,MAAM,iBAAiB,qBAAqB;GAC3C,MAAM;GACN,GAAG;EACJ;EACA,MAAM,eAAe,CAAC,eAAe,QAAQ,eAAe,SAAS,WAAW;GAC/E,2BAA2B;GAC3B,oBAAoB;GACpB,iBAAiB;GACjB,GAAG;EACJ,IAAI;EACJ,eAAe,SAAS,SAAS,cAAc,yBAAyB;CACzE,CAAC;CACD,gCAAgC;EAC/B,IAAI,iBAAiB,cAAc,WAAW;GAC7C,GAAG,UAAU;GACb,eAAe,SAAS,YAAY;IACnC,MAAM;IACN,UAAU;GACX,SAAS;IACR,qBAAqB,UAAU;IAC/B,iBAAiB;KAChB,oBAAoB,KAAK;IAC1B,GAAG,EAAE;GACN,CAAC;GACD;EACD;EACA,IAAI,kBAAkB;EACtB,IAAI,cAAc,SAAS;EAC3B,IAAI,CAAC,aAAa,CAAC,cAAc,YAAY,iBAAiB,CAAC,MAAM;EACrE,UAAU,QAAQ;EAClB,IAAI,aAAa,CAAC,GAAG;GACpB,aAAa,aAAa;GAC1B,aAAa,eAAe,CAAC;EAC9B;EACA,IAAI,QAAQ,YAAY,GAAG;GAC1B,MAAM,gBAAgB,aAAa;GACnC,aAAa,UAAU;GACvB,IAAI,eAAe;IAClB,aAAa,cAAc,KAAK;IAChC,aAAa,mBAAmB,IAAI;GACrC,OAAO;IACN,aAAa,cAAc;IAC3B,aAAa,mBAAmB,KAAK;GACtC;EACD;CACD,GAAG;EACF;EACA;EACA;EACA;EACA;EACA;EACA;CACD,CAAC;CACD,MAAM,cAAc,MAAM,eAAe,YAAY;CACrD,aAAa;CACb,MAAM,CAAC,UAAU,eAAe,MAAM,SAAS,KAAK;CACpD,MAAM,eAAe,MAAM,cAAc;EACxC,IAAI,aAAa;EACjB,IAAI,CAAC,WAAW;EAChB,IAAI,qBAAqB;EACzB,MAAM,OAAO,gBAAgB;EAC7B,aAAa,WAAW;EACxB,IAAI,SAAS,GAAG;EAChB,SAAS,WAAW,KAAK;GACxB,cAAc,GAAG;GACjB,IAAI,CAAC,uBAAuB;IAC3B,wBAAwB,SAAS,cAAc,OAAO;IACtD,IAAI,OAAO,SAAS,SAAS,aAAa,SAAS,KAAK,YAAY,qBAAqB;GAC1F;GACA,IAAI,CAAC,KAAK,sBAAsB,YAAY;QACvC,sBAAsB,YAAY;EACxC;EACA,MAAM,WAAW,EAAE,SAAS;GAC3B,aAAa,kBAAkB,KAAK;GACpC,IAAI,aAAa,YAAY;GAC7B,iBAAiB;GACjB,sBAAsB;GACtB,WAAW,KAAK;GAChB,MAAM,aAAa,GAAG;GACtB,MAAM,eAAe,wBAAwB;IAC5C,WAAW;IACX,cAAc,aAAa,YAAY,KAAK;IAC5C,iBAAiB;IACjB;IACA;IACA;IACA;IACA;GACD,CAAC;GACD,YAAY,YAAY;GACxB,UAAU,YAAY;EACvB;EACA,MAAM,UAAU,IAAI,WAAW;GAC9B,QAAQ;IACP,IAAI,OAAO;IACX,QAAQ,OAAO;GAChB,CAAC;EACF;EACA,IAAI,sBAAsB;EAC1B,MAAM,mBAAmB,GAAG,EAAE,SAAS;GACtC,SAAS,eAAe;IACvB,IAAI,EAAE,WAAW,cAAc,UAAU,SAAS,OAAO;IACzD,IAAI,aAAa,mBAAmB,OAAO;IAC3C,IAAI,aAAa,yBAAyB,MAAM;KAC/C,IAAI,aAAa,YAAY,OAAO;KACpC,MAAM,aAAa,aAAa,MAAM;KACtC,MAAM,eAAe,KAAK;KAC1B,MAAM,YAAY,aAAa,QAAQ,KAAK,aAAa;KACzD,IAAI,YAAY,OAAO;KACvB,IAAI,WAAW;MACd,IAAI,cAAc,WAAW,cAAc,OAAO;KACnD;IACD;IACA,OAAO,KAAK,IAAI,EAAE,IAAI;GACvB;GACA,MAAM,UAAU,aAAa;GAC7B,IAAI,SAAS,aAAa,kBAAkB,IAAI;GAChD,OAAO;EACR;EACA,MAAM,cAAc;GACnB,WAAW,IAAI;GACf,WAAW;GACX,SAAS,oBAAoB;EAC9B;EACA,IAAI,iBAAiB;EACrB,aAAa,qBAAqB;GACjC,iBAAiB;GACjB,MAAM;EACP;EACA,aAAa,QAAQ,OAAO;GAC3B,IAAI,CAAC,gBAAgB;IACpB,iBAAiB;IACjB,MAAM;GACP;GACA,0BAA0B,SAAS,KAAK,QAAQ,IAAI,CAAC;EACtD;EACA,aAAa,UAAU;EACvB,aAAa,kBAAkB,kBAAkB;GAChD,iBAAiB;GACjB,WAAW,KAAK;GAChB,YAAY,aAAa;GACzB,UAAU,aAAa;EACxB;EACA,OAAO,aAAa,OAAO;GAC1B,6BAA6B;GAC7B,wCAAwC;GACxC,qBAAqB;GACrB,qBAAqB,IAAI,EAAE,SAAS;IACnC,MAAM,KAAK,SAAS,KAAK,QAAQ,IAAI;IACrC,IAAI,MAAM,MAAM,aAAa,kBAAkB,KAAK;SAC/C,aAAa,kBAAkB,IAAI;IACxC,0BAA0B,EAAE;GAC7B;GACA,mBAAmB;GACnB,yBAAyB;GACzB,uBAAuB;EACxB,CAAC;CACF,GAAG;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,CAAC;CACD,MAAM,gBAAgB;EACrB,IAAI,cAAc,YAAY,CAAC,QAAQ,kBAAkB;EACzD,IAAI,CAAC,aAAa,CAAC,YAAY;EAC/B,UAAU,UAAU;GACnB,MAAM;GACN,UAAU;EACX,CAAC;CACF,GAAG,CAAC,mBAAmB,cAAc,CAAC;CACtC,MAAM,cAAc,MAAM,OAAO,KAAK;CACtC,MAAM,gBAAgB;EACrB,IAAI,YAAY;GACf,YAAY,UAAU;GACtB;EACD;EACA,IAAI,CAAC,YAAY,SAAS;EAC1B,YAAY,UAAU;EACtB,IAAI,CAAC,aAAa,CAAC,cAAc,YAAY,CAAC,MAAM;EACpD,UAAU,QAAQ;CACnB,GAAG,CAAC,UAAU,CAAC;CACf,MAAM,gBAAgB;EACrB,IAAI,CAAC,QAAQ,mBAAmB;GAC/B,gBAAgB;GAChB,qBAAqB,UAAU;GAC/B,iBAAiB;EAClB;CACD,GAAG,CAAC,IAAI,CAAC;CACT,MAAM,gBAAgB;EACrB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,uBAAuB;EACxD,MAAM,QAAQ,CAAC;EACf,kBAAkB,KAAK,KAAK;EAC5B,MAAM,aAAa,UAAU;GAC5B,IAAI,MAAM,QAAQ,UAAU;IAC3B,IAAI,kBAAkB,kBAAkB,SAAS,OAAO,OAAO,MAAM,QAAQ,KAAK;GACnF;EACD;EACA,SAAS,iBAAiB,WAAW,SAAS;EAC9C,aAAa;GACZ,MAAM,QAAQ,kBAAkB,QAAQ,KAAK;GAC7C,IAAI,QAAQ,CAAC,GAAG,kBAAkB,OAAO,OAAO,CAAC;GACjD,SAAS,oBAAoB,WAAW,SAAS;EAClD;CACD,GAAG;EACF;EACA;EACA;EACA,MAAM;CACP,CAAC;CACD,MAAM,EAAE,YAAY,eAAe,0BAA0B,qBAAqB;EACjF,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB;EACA;EACA;EACA,qBAAqB;EACrB;EACA;EACA;EACA;CACD,CAAC;CACD,MAAM,0BAA0B,eAAe,SAAS,wBAAwB,2BAA2B,KAAK,mBAAmB;CACnI,MAAM,4BAA4B,UAAU,MAAM;EACjD,IAAI,CAAC,QAAQ,gBAAgB,YAAY,GAAG;EAC5C,MAAM,eAAe,EAAE,aAAa,OAAO;EAC3C,IAAI,wBAAwB,KAAK,YAAY,GAAG;EAChD,MAAM,OAAO,QAAQ,KAAK,IAAI,cAAc,wBAAwB,CAAC,IAAI;EACzE,IAAI,CAAC,MAAM;EACX,aAAa,KAAK,MAAM,IAAI,CAAC;CAC9B,CAAC;CACD,MAAM,6BAA6B,MAAM,aAAa,MAAM;EAC3D,IAAI,wBAAwB,KAAK,aAAa,GAAG;EACjD,MAAM,OAAO,KAAK,IAAI,EAAE,aAAa,OAAO,QAAQ,wBAAwB,CAAC;EAC7E,IAAI,CAAC,MAAM;EACX,kBAAkB,KAAK,MAAM,IAAI,CAAC;CACnC,GAAG,CAAC,yBAAyB,UAAU,CAAC;CACxC,MAAM,gBAAgB,uBAAuB,gBAAgB,MAAM,aAAa,QAAQ;EACvF;EACA,OAAO,EAAE,WAAW,CAAC,EAAE,YAAY,cAAc,IAAI,aAAa,IAAI,CAAC,EAAE;CAC1E,GAAG,CAAC,SAAS,CAAC,CAAC;CACf,MAAM,CAAC,eAAe,oBAAoB,MAAM,SAAS,KAAK;CAC9D,IAAI,QAAQ,eAAe,iBAAiB,KAAK;CACjD,MAAM,gBAAgB,MAAM,OAAO,IAAI;CACvC,IAAI,MAAM,cAAc,UAAU;CAClC,MAAM,mBAAmB,QAAQ,cAAc,WAAW,CAAC;CAC3D,MAAM,cAAc,yBAAyB,iBAAiB,CAAC;CAC/D,MAAM,sBAAsB,SAAS,KAAK,IAAI,mBAAmB,YAAY,GAAG,eAAe,QAAQ,QAAQ,QAAQ,MAAM,QAAQ;CACrI,MAAM,mBAAmB,MAAM,aAAa,QAAQ;EACnD,cAAc,UAAU;CACzB,GAAG,CAAC,CAAC;CACL,MAAM,wBAAwB,MAAM,eAAe;EAClD,OAAO;EACP,YAAY;EACZ;EACA,aAAa;EACb,MAAM,gBAAgB,MAAM;CAC7B,IAAI;EACH;EACA;EACA;EACA;CACD,CAAC;CACD,MAAM,EAAE,iBAAiB,qBAAqB,MAAM,cAAc,uBAAuB,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC;CAC1H,IAAI,WAA2B,oBAAI,6BAA6B;EAC/D,SAAS,CAAC;EACV,UAA0B,oBAAI,mBAAmB,UAAU;GAC1D,OAAO;GACP,UAA0B,oBAAI,eAAe;IAC5C,GAAG;IACH;IACA;IACA;IACA;IACA,UAA0B,oBAAI,sBAAsB;KACnD;KACA;KACA;KACA;KACA;KACA,UAA0B,qBAAK,6BAA6B,UAAU;MACrE,OAAO;MACP,UAAU;OACO,oBAAI,yBAAyB,UAAU;QACtD,OAAO;QACP,UAA0B,oBAAI,iBAAiB;SAC9C,QAAQ,EAAE,KAAK;SACf,UAAU,yBAAyB,CAAC,OAAO,OAAO;QACnD,CAAC;OACF,CAAC;OACD,mBAAmB,aAA6B,oBAAI,QAAQ;QAC3D,OAAO;SACN,SAAS;SACT,UAAU;SACV,KAAK;SACL,MAAM;SACN,OAAO;SACP,QAAQ;SACR,eAAe;QAChB;QACA,UAAU;OACX,CAAC;OACe,oBAAI,cAAc;QACjC;QACA,UAAU;QACV,YAAY,cAAc,mBAAmB,OAAO;QACpD,kBAAkB;QAClB,OAAO,CAAC;SACP,UAAU;SACV;SACA,OAAO;SACP,QAAQ;SACR,WAAW;SACX,GAAG,eAAe,EAAE,SAAS,OAAO;SACpC,IAAI,yBAAyB,CAAC,SAAS,EAAE,eAAe,OAAO;QAChE,GAAG,aAAa;QAChB,UAAU,yBAAyB,aAA6B,oBAAI,wBAAwB;SAC3F,SAAS;SACT,OAAO,EAAE,MAAM,EAAE;SACjB,UAAU;QACX,CAAC,IAAoB,oBAAI,QAAQ;SAChC,GAAG,cAAc;SACjB,OAAO;UACN,MAAM;UACN,OAAO;UACP,QAAQ;SACT;SACA,UAAU;QACX,CAAC;OACF,CAAC;MACF;KACD,CAAC;IACF,CAAC;GACF,CAAC;EACF,CAAC;CACF,CAAC;CACD,MAAM,sBAAsB,4BAA4B,CAAC,gBAAgB;CACzE,IAAI,OAAO;EACV,MAAM,WAAW,uBAAuB,CAAC,CAAC;EAC1C,MAAM,kBAAkB,sBAAsC,oBAAI,oBAAoB,EAAE,UAAU,SAAS,CAAC,IAAI;EAChH,MAAM,gBAAgC,oBAAI,QAAQ;GACjD,aAAa;GACb,QAAQ,CAAC;GACT,GAAG;GACH,UAAU,mBAAmB,WAA2B,oBAAI,UAAU;IACrE,OAAO,OAAO,oBAAoB;IAClC,UAAU;GACX,CAAC,IAAI;EACN,CAAC;EACD,IAAI,OAAO,OAAO;EAClB,OAAuB,oBAAI,wBAAwB,UAAU;GAC5D,OAAO;GACP,UAAU;EACX,CAAC;CACF;CACA,OAAO;AACR,CAAC;AACD,SAAS,wBAAwB,MAAM;CACtC,IAAI,eAAe,MAAM;CACzB,OAAO,cAAc;EACpB,IAAI,aAAa,uBAAuB,OAAO;EAC/C,eAAe,aAAa;CAC7B;CACA,OAAO;AACR;AACA,SAAS,uBAAuB,UAAU;CACzC,MAAM,kBAAkB,CAAC;CACzB,MAAM,mBAAmB,CAAC;CAC1B,MAAM,SAAS,QAAQ,WAAW,UAAU;EAC3C,IAAI,CAAC,MAAM,eAAe,KAAK,GAAG;GACjC,iBAAiB,KAAK,KAAK;GAC3B;EACD;EACA,IAAI,wBAAwB,MAAM,IAAI,GAAG;GACxC,gBAAgB,KAAK,KAAK;GAC1B;EACD;EACA,iBAAiB,KAAK,KAAK;CAC5B,CAAC;CACD,OAAO;EACN;EACA;CACD;AACD;AACA,SAAS,cAAc,MAAM,OAAO,YAAY,WAAW;CAC1D,IAAI,CAAC,cAAc,CAAC,WAAW,OAAO;CACtC,IAAI,SAAS,SAAS;EACrB,IAAI,OAAO,UAAU,UAAU,OAAO,aAAa,KAAK,IAAI,YAAY,KAAK,IAAI,GAAG,KAAK,CAAC;EAC1F,IAAI,UAAU,OAAO,OAAO,aAAa,KAAK,IAAI,YAAY,SAAS;EACvE,IAAI,MAAM,SAAS,GAAG,GAAG;GACxB,MAAM,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,OAAO,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;GACtE,IAAI,OAAO,MAAM,IAAI,GAAG;IACvB,QAAQ,KAAK,iBAAiB,4BAA4B,SAAS,oDAAoD,gEAAgE,aAAa,KAAK,CAAC;IAC1M,OAAO;GACR;GACA,OAAO,KAAK,MAAM,aAAa,OAAO,UAAU;EACjD;EACA,QAAQ,KAAK,iBAAiB,4BAA4B,SAAS,uDAAuD,gEAAgE,aAAa,KAAK,CAAC;EAC7M,OAAO;CACR;CACA,IAAI,SAAS,OAAO;EACnB,IAAI,UAAU,GAAG,OAAO;EACxB,OAAO,aAAa,KAAK,IAAI,YAAY,SAAS;CACnD;CACA,IAAI,SAAS,cAAc,OAAO,UAAU,UAAU,OAAO,aAAa,KAAK,IAAI,YAAY,KAAK,IAAI,GAAG,KAAK,CAAC;CACjH,MAAM,MAAM,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,IAAI;CACxD,IAAI,OAAO,MAAM,GAAG,GAAG;EACtB,QAAQ,KAAK,iBAAiB,4BAA4B,SAAS,wEAAwE,uCAAuC,aAAa,KAAK,CAAC;EACrM,OAAO;CACR;CACA,OAAO,KAAK,MAAM,aAAa,MAAM,UAAU;AAChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetImplementationCustom.native.js","names":[],"sources":["esm/SheetImplementationCustom.native.js"],"sourcesContent":["import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { ProvideAdaptContext, useAdaptContext } from \"@tamagui/adapt\";\nimport { AnimatePresence } from \"@tamagui/animate-presence\";\nimport { useComposedRefs } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { LayoutMeasurementController, View, createRefComponent, formatDiagnostic, useAnimatedNumber, useAnimatedNumberStyle, useAnimationDriver, useDidFinishSSR, useEvent, useThemeName } from \"@tamagui/core\";\nimport { Portal, needsPortalRepropagation } from \"@tamagui/portal\";\nimport React, { useState } from \"react\";\nimport { Dimensions, PanResponder, View as View$1 } from \"react-native\";\nimport { ParentSheetContext, SheetInsideSheetContext } from \"./contexts\";\nimport { SHEET_OVERLAY_MARKER } from \"./constants\";\nimport { GestureDetectorWrapper } from \"./GestureDetectorWrapper\";\nimport { getGestureHandlerState } from \"./gestureState\";\nimport { GestureSheetProvider } from \"./GestureSheetContext\";\nimport { resisted } from \"./helpers\";\nimport { getKeyboardAdjustedSheetY, getKeyboardOccludedHeight, getSheetReleasePosition } from \"./keyboardAvoidance\";\nimport { MIN_KEYBOARD_HEIGHT, getMaxViewportHeight, getStableLayoutViewportHeight, getWebKeyboardResizeHeight, getWebVisualViewportOffsetTop } from \"./webViewport\";\nimport { SheetAnimatedPositionContext, SheetOverlayLayerContext, SheetProvider } from \"./SheetContext\";\nimport { useGestureHandlerPan } from \"./useGestureHandlerPan\";\nimport { useKeyboardControllerSheet } from \"./useKeyboardControllerSheet\";\nimport { SafeAreaInsetsContext, useSafeAreaInsets } from \"./useSafeAreaInsets\";\nimport { useSheetOpenState } from \"./useSheetOpenState\";\nimport { useSheetProviderProps } from \"./useSheetProviderProps\";\n\nvar hiddenSize = 10000.1;\nvar rnghRootStyleOpen = {\n\twidth: \"100%\",\n\theight: \"100%\"\n};\nvar rnghRootStyleClosed = {\n\twidth: \"100%\",\n\theight: 0\n};\nvar sheetEscapeLayers = [];\nvar relativeDimensionTo = isWeb ? \"window\" : \"screen\";\nfunction getStableViewportHeight() {\n\tif (isWeb && typeof window !== \"undefined\") return getStableLayoutViewportHeight();\n\treturn Dimensions.get(relativeDimensionTo).height;\n}\nvar SheetImplementationCustom = createRefComponent(function SheetImplementationCustom2(props, forwardedRef) {\n\tvar parentSheet = React.useContext(ParentSheetContext);\n\tvar safeAreaInsets = useSafeAreaInsets();\n\tvar _safeAreaInsets_top;\n\tvar safeAreaTopInset = (_safeAreaInsets_top = safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.top) !== null && _safeAreaInsets_top !== void 0 ? _safeAreaInsets_top : 0;\n\tvar { transition, transitionConfig: transitionConfigProp, modal = false, zIndex = parentSheet.zIndex + 1, moveOnKeyboardChange = false, unmountChildrenWhenHidden = false, disableHideWhenClosed = false, portalProps, containerComponent: ContainerComponent = React.Fragment, onTransition } = props;\n\tvar state = useSheetOpenState(props);\n\tvar providerProps = useSheetProviderProps(props, state);\n\tvar { frameSize, setFrameSize, dismissOnSnapToBottom, snapPoints, snapPointsMode, hasFit, position, setPosition, scrollBridge, screenSize, setMaxContentSize, maxSnapPoint } = providerProps;\n\tvar { open, controller, isHidden } = state;\n\tvar openRef = React.useRef(open);\n\topenRef.current = open;\n\tvar ref = useComposedRefs(forwardedRef, React.useRef(void 0), providerProps.contentRef);\n\tvar animationDriver = useAnimationDriver();\n\tvar transitionConfig = (function() {\n\t\tvar _animationDriver_animations;\n\t\tif (transitionConfigProp) return transitionConfigProp;\n\t\tvar [animationProp, animationPropConfig] = !transition ? [] : Array.isArray(transition) ? transition : [transition];\n\t\tvar namedConfig = animationProp && ((_animationDriver_animations = animationDriver.animations) === null || _animationDriver_animations === void 0 ? void 0 : _animationDriver_animations[animationProp]);\n\t\tif (namedConfig) {\n\t\t\tif (typeof namedConfig === \"string\") return animationPropConfig !== null && animationPropConfig !== void 0 ? animationPropConfig : null;\n\t\t\treturn {\n\t\t\t\t...namedConfig,\n\t\t\t\t...animationPropConfig\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t})();\n\tvar [isShowingInnerSheet, setIsShowingInnerSheet] = React.useState(false);\n\tvar shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet && needsPortalRepropagation();\n\tvar sheetInsideSheet = React.useContext(SheetInsideSheetContext);\n\tvar onInnerSheet = React.useCallback(function(hasChild) {\n\t\tsetIsShowingInnerSheet(hasChild);\n\t}, []);\n\tvar { keyboardHeight, isKeyboardVisible, dismissKeyboard, pauseKeyboardHandler, flushPendingHide } = useKeyboardControllerSheet({ enabled: Boolean(moveOnKeyboardChange) });\n\tvar stableFrameSize = React.useRef(frameSize);\n\tReact.useEffect(function() {\n\t\tif (open && frameSize) stableFrameSize.current = frameSize;\n\t}, [open, frameSize]);\n\tvar isWebKbSheet = isWeb && hasFit && moveOnKeyboardChange;\n\tvar isNativeKbFitSheet = !isWeb && hasFit && Boolean(moveOnKeyboardChange);\n\tvar preKeyboardFrameSize = React.useRef(0);\n\tReact.useEffect(function() {\n\t\tif (isNativeKbFitSheet && open && !isKeyboardVisible && frameSize > 0) preKeyboardFrameSize.current = frameSize;\n\t}, [\n\t\tisNativeKbFitSheet,\n\t\topen,\n\t\tisKeyboardVisible,\n\t\tframeSize\n\t]);\n\tvar effScreenSize = isWebKbSheet ? getStableViewportHeight() : screenSize;\n\tvar effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize;\n\tvar positions = React.useMemo(function() {\n\t\treturn snapPoints.map(function(point) {\n\t\t\treturn getYPositions(snapPointsMode, point, effScreenSize, effectiveFrameSize);\n\t\t});\n\t}, [\n\t\teffScreenSize,\n\t\teffectiveFrameSize,\n\t\tsnapPoints,\n\t\tsnapPointsMode\n\t]);\n\tvar [isDragging, setIsDragging_] = React.useState(false);\n\tvar isDraggingRef = React.useRef(false);\n\tvar setIsDragging = React.useCallback(function(val) {\n\t\tisDraggingRef.current = val;\n\t\tpauseKeyboardHandler.current = val;\n\t\tsetIsDragging_(val);\n\t\tif (!val) flushPendingHide();\n\t}, [pauseKeyboardHandler, flushPendingHide]);\n\tvar activePositionsRef = React.useRef(positions);\n\tvar activePositions = React.useMemo(function() {\n\t\tif (isDragging || isDraggingRef.current) return activePositionsRef.current;\n\t\tvar result;\n\t\tif (!isKeyboardVisible || keyboardHeight <= 0) result = positions;\n\t\telse result = positions.map(function(p) {\n\t\t\treturn getKeyboardAdjustedSheetY({\n\t\t\t\tsheetY: p,\n\t\t\t\tscreenSize: effScreenSize,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tkeyboardHeight,\n\t\t\t\tshouldTranslate: true,\n\t\t\t\tsafeAreaTop: isWeb ? getWebVisualViewportOffsetTop() : safeAreaTopInset\n\t\t\t});\n\t\t});\n\t\tactivePositionsRef.current = result;\n\t\treturn result;\n\t}, [\n\t\tpositions,\n\t\tisKeyboardVisible,\n\t\tkeyboardHeight,\n\t\teffScreenSize,\n\t\tisDragging,\n\t\tsafeAreaTopInset\n\t]);\n\tvar keyboardOccludedHeight = getKeyboardOccludedHeight({\n\t\tframeSize: effectiveFrameSize,\n\t\tisKeyboardVisible,\n\t\tkeyboardHeight,\n\t\tscreenSize: effScreenSize,\n\t\tsheetY: position >= 0 ? activePositions[position] : void 0\n\t});\n\tvar keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : isNativeKbFitSheet && isKeyboardVisible && preKeyboardFrameSize.current > 0 ? preKeyboardFrameSize.current : 0;\n\tvar _animationDriver_View;\n\tvar AnimatedView = (_animationDriver_View = animationDriver.View) !== null && _animationDriver_View !== void 0 ? _animationDriver_View : View;\n\tuseIsomorphicLayoutEffect(function() {\n\t\tif (!(sheetInsideSheet && open)) return;\n\t\tsheetInsideSheet(true);\n\t\treturn function() {\n\t\t\tsheetInsideSheet(false);\n\t\t};\n\t}, [sheetInsideSheet, open]);\n\tvar nextParentContext = React.useMemo(function() {\n\t\treturn { zIndex };\n\t}, [zIndex]);\n\tvar startPosition = useDidFinishSSR() && screenSize ? screenSize : hiddenSize;\n\tvar animatedNumber = useAnimatedNumber(startPosition);\n\tvar at = React.useRef(startPosition);\n\tvar hasntMeasured = at.current === hiddenSize;\n\tvar [disableAnimation, setDisableAnimation] = useState(hasntMeasured);\n\tvar skipAdaptAnimation = React.useRef(false);\n\tif (controller === null || controller === void 0 ? void 0 : controller.skipNextAnimation) skipAdaptAnimation.current = true;\n\tvar hasScrollView = React.useRef(false);\n\tvar lastPositionIndexRef = React.useRef(-1);\n\tvar pendingTransitionRef = React.useRef(null);\n\tvar emitTransition = useEvent(function(phase, event, finished) {\n\t\tvar _controller_onTransition;\n\t\tvar e = {\n\t\t\tphase,\n\t\t\tcause: event.cause,\n\t\t\tposition: event.position\n\t\t};\n\t\tif (phase === \"end\") e.finished = finished;\n\t\tonTransition === null || onTransition === void 0 || onTransition(e);\n\t\tcontroller === null || controller === void 0 || (_controller_onTransition = controller.onTransition) == null || _controller_onTransition.call(controller, e);\n\t});\n\tvar syncAnimatedPosition = useEvent(function(value) {\n\t\tat.current = value;\n\t\tscrollBridge.paneY = value;\n\t\tvar minY = activePositions[0];\n\t\tvar wasAtTop = scrollBridge.isAtTop;\n\t\tvar nowAtTop = value <= minY + 5;\n\t\tif (wasAtTop === nowAtTop) return;\n\t\tscrollBridge.isAtTop = nowAtTop;\n\t\tif (nowAtTop) {\n\t\t\tvar _scrollBridge_setScrollEnabled;\n\t\t\tif (scrollBridge.lockScrollAtTop) {\n\t\t\t\tvar _scrollBridge_setScrollEnabled1;\n\t\t\t\tif (scrollBridge.y > 0) {\n\t\t\t\t\tvar _scrollBridge_forceScrollTo;\n\t\t\t\t\t(_scrollBridge_forceScrollTo = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo === void 0 || _scrollBridge_forceScrollTo.call(scrollBridge, 0);\n\t\t\t\t\tscrollBridge.y = 0;\n\t\t\t\t}\n\t\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t\t(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false, 0);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (scrollBridge.y > 0) {\n\t\t\t\tvar _scrollBridge_forceScrollTo1;\n\t\t\t\t(_scrollBridge_forceScrollTo1 = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo1 === void 0 || _scrollBridge_forceScrollTo1.call(scrollBridge, 0);\n\t\t\t\tscrollBridge.y = 0;\n\t\t\t}\n\t\t\tscrollBridge.scrollLockY = void 0;\n\t\t\t(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);\n\t\t} else {\n\t\t\tvar _scrollBridge_setScrollEnabled2;\n\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t(_scrollBridge_setScrollEnabled2 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled2 === void 0 || _scrollBridge_setScrollEnabled2.call(scrollBridge, false);\n\t\t}\n\t});\n\tvar setAnimatedPositionDirect = useEvent(function(value) {\n\t\tsyncAnimatedPosition(value);\n\t\tanimatedNumber.setValue(value, { type: \"direct\" });\n\t});\n\tvar getAnimatedPosition = useEvent(function() {\n\t\tvar value = animatedNumber.getValue();\n\t\tsyncAnimatedPosition(value);\n\t\treturn value;\n\t});\n\tfunction stopSpring() {\n\t\tanimatedNumber.stop();\n\t\tif (scrollBridge.onFinishAnimate) {\n\t\t\tscrollBridge.onFinishAnimate();\n\t\t\tscrollBridge.onFinishAnimate = void 0;\n\t\t}\n\t}\n\tvar animateTo = useEvent(function(position2, animationOverride) {\n\t\tif (frameSize === 0) return;\n\t\tvar closeTarget = isWeb ? Math.max(effScreenSize, getMaxViewportHeight()) : effScreenSize;\n\t\tvar isDismissPosition = dismissOnSnapToBottom && position2 === activePositions.length - 1;\n\t\tvar isOpenAnimation = position2 !== -1 && !isHidden && !isDismissPosition;\n\t\tvar toValue = isOpenAnimation ? activePositions[position2] : closeTarget;\n\t\tif (at.current === toValue) {\n\t\t\tif (isDismissPosition) {\n\t\t\t\tif (pendingTransitionRef.current) {\n\t\t\t\t\temitTransition(\"end\", pendingTransitionRef.current, false);\n\t\t\t\t\tpendingTransitionRef.current = null;\n\t\t\t\t}\n\t\t\t\tstopSpring();\n\t\t\t\tvar event = {\n\t\t\t\t\tcause: \"close\",\n\t\t\t\t\tposition: toValue\n\t\t\t\t};\n\t\t\t\tlastPositionIndexRef.current = -1;\n\t\t\t\temitTransition(\"start\", event);\n\t\t\t\tsyncAnimatedPosition(toValue);\n\t\t\t\tsetIsFullyClosed(true);\n\t\t\t\temitTransition(\"end\", event, true);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tat.current = toValue;\n\t\tvar cause = !isOpenAnimation ? \"close\" : lastPositionIndexRef.current < 0 ? \"open\" : \"snap\";\n\t\tlastPositionIndexRef.current = isOpenAnimation ? position2 : -1;\n\t\tvar event1 = {\n\t\t\tcause,\n\t\t\tposition: toValue\n\t\t};\n\t\tif (pendingTransitionRef.current) {\n\t\t\temitTransition(\"end\", pendingTransitionRef.current, false);\n\t\t\tpendingTransitionRef.current = null;\n\t\t}\n\t\tstopSpring();\n\t\tvar animationCompleteCallback = function() {\n\t\t\tif (at.current !== toValue) return;\n\t\t\tsyncAnimatedPosition(toValue);\n\t\t\tpendingTransitionRef.current = null;\n\t\t\tif (!isOpenAnimation && !openRef.current) setIsFullyClosed(true);\n\t\t\temitTransition(\"end\", event1, true);\n\t\t};\n\t\tpendingTransitionRef.current = event1;\n\t\temitTransition(\"start\", event1);\n\t\tif (skipAdaptAnimation.current) {\n\t\t\tskipAdaptAnimation.current = false;\n\t\t\tanimatedNumber.setValue(toValue, {\n\t\t\t\ttype: \"timing\",\n\t\t\t\tduration: 0\n\t\t\t}, animationCompleteCallback);\n\t\t\treturn;\n\t\t}\n\t\tvar resolvedConfig = animationOverride || {\n\t\t\ttype: \"spring\",\n\t\t\t...transitionConfig\n\t\t};\n\t\tvar springConfig = !resolvedConfig.type || resolvedConfig.type === \"spring\" ? {\n\t\t\trestDisplacementThreshold: 1,\n\t\t\trestSpeedThreshold: 10,\n\t\t\tenergyThreshold: 1e-5,\n\t\t\t...resolvedConfig\n\t\t} : resolvedConfig;\n\t\tanimatedNumber.setValue(toValue, springConfig, animationCompleteCallback);\n\t});\n\tuseIsomorphicLayoutEffect(function() {\n\t\tif (hasntMeasured && screenSize && frameSize) {\n\t\t\tat.current = screenSize;\n\t\t\tanimatedNumber.setValue(screenSize, {\n\t\t\t\ttype: \"timing\",\n\t\t\t\tduration: 0\n\t\t\t}, function() {\n\t\t\t\tsyncAnimatedPosition(screenSize);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsetDisableAnimation(false);\n\t\t\t\t}, 10);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (disableAnimation) return;\n\t\tif (isDraggingRef.current) return;\n\t\tif (!frameSize || !screenSize || isHidden || hasntMeasured && !open) return;\n\t\tanimateTo(position);\n\t\tif (position === -1) {\n\t\t\tscrollBridge.scrollLock = false;\n\t\t\tscrollBridge.scrollStartY = -1;\n\t\t}\n\t\tif (open && position >= 0) {\n\t\t\tvar isTopPosition = position === 0;\n\t\t\tscrollBridge.isAtTop = isTopPosition;\n\t\t\tif (isTopPosition) {\n\t\t\t\tvar _scrollBridge_setScrollEnabled;\n\t\t\t\tscrollBridge.scrollLockY = void 0;\n\t\t\t\t(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);\n\t\t\t} else {\n\t\t\t\tvar _scrollBridge_setScrollEnabled1;\n\t\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t\t(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false);\n\t\t\t}\n\t\t}\n\t}, [\n\t\thasntMeasured,\n\t\tdisableAnimation,\n\t\tisHidden,\n\t\tframeSize,\n\t\tscreenSize,\n\t\topen,\n\t\tposition\n\t]);\n\tvar _props_disableDrag;\n\tvar disableDrag = (_props_disableDrag = props.disableDrag) !== null && _props_disableDrag !== void 0 ? _props_disableDrag : controller === null || controller === void 0 ? void 0 : controller.disableDrag;\n\tuseThemeName();\n\tvar [blockPan, setBlockPan] = React.useState(false);\n\tvar panResponder = React.useMemo(function() {\n\t\tif (disableDrag) return;\n\t\tif (!frameSize) return;\n\t\tif (isShowingInnerSheet) return;\n\t\tvar minY = activePositions[0];\n\t\tscrollBridge.paneMinY = minY;\n\t\tvar startY = at.current;\n\t\tfunction setPanning(val) {\n\t\t\tsetIsDragging(val);\n\t\t}\n\t\tvar release = function(param) {\n\t\t\tvar { vy } = param;\n\t\t\tscrollBridge.setParentDragging(false);\n\t\t\tif (scrollBridge.scrollLock) return;\n\t\t\tisExternalDrag = false;\n\t\t\tpreviouslyScrolling = false;\n\t\t\tsetPanning(false);\n\t\t\tvar currentPos = at.current;\n\t\t\tvar closestPoint = getSheetReleasePosition({\n\t\t\t\tpositions: activePositions,\n\t\t\t\tprojectedEnd: currentPos + frameSize * vy * .2,\n\t\t\t\tcurrentPosition: currentPos,\n\t\t\t\tframeSize,\n\t\t\t\tdismissOnSnapToBottom,\n\t\t\t\tsnapPointsMode,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tisWeb\n\t\t\t});\n\t\t\tsetPosition(closestPoint);\n\t\t\tanimateTo(closestPoint);\n\t\t};\n\t\tvar finish = function(_e, state2) {\n\t\t\trelease({\n\t\t\t\tvy: state2.vy,\n\t\t\t\tdragAt: state2.dy\n\t\t\t});\n\t\t};\n\t\tvar previouslyScrolling = false;\n\t\tvar onMoveShouldSet = function(e, param) {\n\t\t\tvar { dy } = param;\n\t\t\tfunction getShouldSet() {\n\t\t\t\tif (e.target === providerProps.handleRef.current) return true;\n\t\t\t\tif (scrollBridge.scrollNodeTouched) return false;\n\t\t\t\tif (scrollBridge.hasScrollableContent === true) {\n\t\t\t\t\tif (scrollBridge.scrollLock) return false;\n\t\t\t\t\tvar isScrolled = scrollBridge.y !== 0;\n\t\t\t\t\tvar isDraggingUp = dy < 0;\n\t\t\t\t\tvar isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;\n\t\t\t\t\tif (isScrolled) return false;\n\t\t\t\t\tif (isNearTop) {\n\t\t\t\t\t\tif (hasScrollView.current && isDraggingUp) return false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn Math.abs(dy) > 10;\n\t\t\t}\n\t\t\tvar granted = getShouldSet();\n\t\t\tif (granted) scrollBridge.setParentDragging(true);\n\t\t\treturn granted;\n\t\t};\n\t\tvar grant = function() {\n\t\t\tsetPanning(true);\n\t\t\tstopSpring();\n\t\t\tstartY = getAnimatedPosition();\n\t\t};\n\t\tvar isExternalDrag = false;\n\t\tscrollBridge.startPanDrag = function() {\n\t\t\tisExternalDrag = true;\n\t\t\tgrant();\n\t\t};\n\t\tscrollBridge.drag = function(dy) {\n\t\t\tif (!isExternalDrag) {\n\t\t\t\tisExternalDrag = true;\n\t\t\t\tgrant();\n\t\t\t}\n\t\t\tsetAnimatedPositionDirect(resisted(dy + startY, minY));\n\t\t};\n\t\tscrollBridge.release = release;\n\t\tscrollBridge.snapToPosition = function(positionIndex) {\n\t\t\tisExternalDrag = false;\n\t\t\tsetPanning(false);\n\t\t\tsetPosition(positionIndex);\n\t\t\tanimateTo(positionIndex);\n\t\t};\n\t\treturn PanResponder.create({\n\t\t\tonMoveShouldSetPanResponder: onMoveShouldSet,\n\t\t\tonPanResponderTerminationRequest: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tonPanResponderGrant: grant,\n\t\t\tonPanResponderMove: function(_e, param) {\n\t\t\t\tvar { dy } = param;\n\t\t\t\tvar to = resisted(dy + startY, minY);\n\t\t\t\tif (to <= minY) scrollBridge.setParentDragging(false);\n\t\t\t\telse scrollBridge.setParentDragging(true);\n\t\t\t\tsetAnimatedPositionDirect(to);\n\t\t\t},\n\t\t\tonPanResponderEnd: finish,\n\t\t\tonPanResponderTerminate: finish,\n\t\t\tonPanResponderRelease: finish\n\t\t});\n\t}, [\n\t\tdisableDrag,\n\t\tisShowingInnerSheet,\n\t\tanimateTo,\n\t\tframeSize,\n\t\tactivePositions,\n\t\tsetPosition,\n\t\tdismissOnSnapToBottom,\n\t\tsnapPointsMode\n\t]);\n\tReact.useEffect(function() {\n\t\tif (isDragging || isHidden || !open || disableAnimation) return;\n\t\tif (!frameSize || !screenSize) return;\n\t\tanimateTo(position, {\n\t\t\ttype: \"timing\",\n\t\t\tduration: 250\n\t\t});\n\t}, [isKeyboardVisible, keyboardHeight]);\n\tvar wasDragging = React.useRef(false);\n\tReact.useEffect(function() {\n\t\tif (isDragging) {\n\t\t\twasDragging.current = true;\n\t\t\treturn;\n\t\t}\n\t\tif (!wasDragging.current) return;\n\t\twasDragging.current = false;\n\t\tif (!frameSize || !screenSize || isHidden || !open) return;\n\t\tanimateTo(position);\n\t}, [isDragging]);\n\tReact.useEffect(function() {\n\t\tif (!open && isKeyboardVisible) {\n\t\t\tdismissKeyboard();\n\t\t\tpauseKeyboardHandler.current = false;\n\t\t\tflushPendingHide();\n\t\t}\n\t}, [open]);\n\tReact.useEffect(function() {\n\t\tif (!isWeb || !modal || !open || shouldHideParentSheet) return;\n\t\tvar layer = {};\n\t\tsheetEscapeLayers.push(layer);\n\t\tvar onKeyDown = function(event) {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tif (sheetEscapeLayers[sheetEscapeLayers.length - 1] === layer) state.setOpen(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"keydown\", onKeyDown);\n\t\treturn function() {\n\t\t\tvar index = sheetEscapeLayers.indexOf(layer);\n\t\t\tif (index > -1) sheetEscapeLayers.splice(index, 1);\n\t\t\tdocument.removeEventListener(\"keydown\", onKeyDown);\n\t\t};\n\t}, [\n\t\tmodal,\n\t\topen,\n\t\tshouldHideParentSheet,\n\t\tstate.setOpen\n\t]);\n\tvar { panGesture, panGestureRef, gestureHandlerEnabled } = useGestureHandlerPan({\n\t\tpositions: activePositions,\n\t\tframeSize,\n\t\tsetPosition,\n\t\tanimateTo,\n\t\tstopSpring,\n\t\tscrollBridge,\n\t\tsetIsDragging,\n\t\tgetCurrentPosition: getAnimatedPosition,\n\t\tresisted,\n\t\tdisableDrag,\n\t\tisShowingInnerSheet,\n\t\tsetAnimatedPosition: setAnimatedPositionDirect,\n\t\tdismissOnSnapToBottom,\n\t\tsnapPointsMode,\n\t\tisKeyboardVisible,\n\t\tpauseKeyboardHandler\n\t});\n\tvar ignoreLayoutForKeyboard = useEvent(function() {\n\t\treturn isWeb && moveOnKeyboardChange && getWebKeyboardResizeHeight() >= MIN_KEYBOARD_HEIGHT;\n\t});\n\tvar handleAnimationViewLayout = useEvent(function(e) {\n\t\tvar _e_nativeEvent;\n\t\tif (!open && stableFrameSize.current !== 0) return;\n\t\tvar layoutHeight = (_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height;\n\t\tif (ignoreLayoutForKeyboard() && frameSize > 0) return;\n\t\tvar next = modal ? Math.min(layoutHeight, getStableViewportHeight()) : layoutHeight;\n\t\tif (!next) return;\n\t\tsetFrameSize(Math.round(next));\n\t});\n\tvar handleMaxContentViewLayout = React.useCallback(function(e) {\n\t\tvar _e_nativeEvent;\n\t\tif (ignoreLayoutForKeyboard() && screenSize > 0) return;\n\t\tvar next = Math.min((_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height, getStableViewportHeight());\n\t\tif (!next) return;\n\t\tsetMaxContentSize(Math.round(next));\n\t}, [ignoreLayoutForKeyboard, screenSize]);\n\tvar animatedStyle = useAnimatedNumberStyle(animatedNumber, React.useCallback(function(val) {\n\t\t\"worklet\";\n\t\treturn { transform: [{ translateY: frameSize === 0 ? hiddenSize : val }] };\n\t}, [frameSize]));\n\tvar [isFullyClosed, setIsFullyClosed] = React.useState(false);\n\tif (open && isFullyClosed) setIsFullyClosed(false);\n\tvar hasEverOpened = React.useRef(open);\n\tif (open) hasEverOpened.current = true;\n\tvar isVisuallyActive = open || hasEverOpened.current && !isFullyClosed;\n\tvar applyHidden = shouldHideParentSheet || isFullyClosed && !disableHideWhenClosed;\n\tvar forcedContentHeight = hasFit ? void 0 : snapPointsMode === \"percent\" ? `${maxSnapPoint}${isWeb ? modal ? \"dvh\" : \"%\" : \"%\"}` : maxSnapPoint;\n\tvar setHasScrollView = React.useCallback(function(val) {\n\t\thasScrollView.current = val;\n\t}, []);\n\tvar animatedPositionValue = React.useMemo(function() {\n\t\tvar _activePositions_;\n\t\treturn {\n\t\t\tvalue: animatedNumber,\n\t\t\tscreenSize: effScreenSize,\n\t\t\tframeSize,\n\t\t\tsnapOffsets: activePositions,\n\t\t\tminY: (_activePositions_ = activePositions[0]) !== null && _activePositions_ !== void 0 ? _activePositions_ : 0\n\t\t};\n\t}, [\n\t\tanimatedNumber,\n\t\teffScreenSize,\n\t\tframeSize,\n\t\tactivePositions\n\t]);\n\tvar { overlayChildren, animatedChildren } = React.useMemo(function() {\n\t\treturn partitionSheetChildren(props.children);\n\t}, [props.children]);\n\tvar contents = /* @__PURE__ */ jsx(LayoutMeasurementController, {\n\t\tdisable: !open,\n\t\tchildren: /* @__PURE__ */ jsx(ParentSheetContext.Provider, {\n\t\t\tvalue: nextParentContext,\n\t\t\tchildren: /* @__PURE__ */ jsx(SheetProvider, {\n\t\t\t\t...providerProps,\n\t\t\t\tkeyboardOccludedHeight,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tkeyboardStableFrameHeight,\n\t\t\t\tsetHasScrollView,\n\t\t\t\tchildren: /* @__PURE__ */ jsx(GestureSheetProvider, {\n\t\t\t\t\tisDragging,\n\t\t\t\t\tblockPan,\n\t\t\t\t\tsetBlockPan,\n\t\t\t\t\tpanGesture,\n\t\t\t\t\tpanGestureRef,\n\t\t\t\t\tchildren: /* @__PURE__ */ jsxs(SheetAnimatedPositionContext.Provider, {\n\t\t\t\t\t\tvalue: animatedPositionValue,\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t/* @__PURE__ */ jsx(SheetOverlayLayerContext.Provider, {\n\t\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t\t\tchildren: /* @__PURE__ */ jsx(AnimatePresence, {\n\t\t\t\t\t\t\t\t\tcustom: { open },\n\t\t\t\t\t\t\t\t\tchildren: shouldHideParentSheet || !open ? null : overlayChildren\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsnapPointsMode !== \"percent\" && /* @__PURE__ */ jsx(View$1, {\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\t\t\tpointerEvents: \"none\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonLayout: handleMaxContentViewLayout\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t/* @__PURE__ */ jsx(AnimatedView, {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tonLayout: handleAnimationViewLayout,\n\t\t\t\t\t\t\t\ttransition: isDragging || disableAnimation ? null : transition,\n\t\t\t\t\t\t\t\tdisableClassName: true,\n\t\t\t\t\t\t\t\tstyle: [{\n\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\tzIndex,\n\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\theight: forcedContentHeight,\n\t\t\t\t\t\t\t\t\tminHeight: forcedContentHeight,\n\t\t\t\t\t\t\t\t\t...applyHidden && { display: \"none\" },\n\t\t\t\t\t\t\t\t\t...(shouldHideParentSheet || !open) && { pointerEvents: \"none\" }\n\t\t\t\t\t\t\t\t}, animatedStyle],\n\t\t\t\t\t\t\t\tchildren: gestureHandlerEnabled && panGesture ? /* @__PURE__ */ jsx(GestureDetectorWrapper, {\n\t\t\t\t\t\t\t\t\tgesture: panGesture,\n\t\t\t\t\t\t\t\t\tstyle: { flex: 1 },\n\t\t\t\t\t\t\t\t\tchildren: animatedChildren\n\t\t\t\t\t\t\t\t}) : /* @__PURE__ */ jsx(View$1, {\n\t\t\t\t\t\t\t\t\t...panResponder === null || panResponder === void 0 ? void 0 : panResponder.panHandlers,\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\t\theight: \"100%\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tchildren: animatedChildren\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t]\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t});\n\tif (needsPortalRepropagation()) contents = /* @__PURE__ */ jsx(ProvideAdaptContext, {\n\t\t...useAdaptContext(),\n\t\tchildren: /* @__PURE__ */ jsx(SafeAreaInsetsContext.Provider, {\n\t\t\tvalue: safeAreaInsets,\n\t\t\tchildren: contents\n\t\t})\n\t});\n\tvar shouldMountChildren = unmountChildrenWhenHidden ? !isFullyClosed : true;\n\tif (modal) {\n\t\tvar RNGHRoot = getGestureHandlerState().RootView;\n\t\tvar mountedContents = shouldMountChildren ? /* @__PURE__ */ jsx(ContainerComponent, { children: contents }) : null;\n\t\tvar modalContents = /* @__PURE__ */ jsx(Portal, {\n\t\t\tstackZIndex: zIndex,\n\t\t\thidden: !isVisuallyActive,\n\t\t\t...portalProps,\n\t\t\tchildren: mountedContents && RNGHRoot ? /* @__PURE__ */ jsx(RNGHRoot, {\n\t\t\t\tstyle: open ? rnghRootStyleOpen : rnghRootStyleClosed,\n\t\t\t\tchildren: mountedContents\n\t\t\t}) : mountedContents\n\t\t});\n\t\tif (isWeb) return modalContents;\n\t\treturn /* @__PURE__ */ jsx(SheetInsideSheetContext.Provider, {\n\t\t\tvalue: onInnerSheet,\n\t\t\tchildren: modalContents\n\t\t});\n\t}\n\treturn contents;\n});\nfunction isSheetOverlayComponent(type) {\n\tvar staticConfig = type === null || type === void 0 ? void 0 : type.staticConfig;\n\twhile (staticConfig) {\n\t\tif (staticConfig[SHEET_OVERLAY_MARKER]) return true;\n\t\tstaticConfig = staticConfig.parentStaticConfig;\n\t}\n\treturn false;\n}\nfunction partitionSheetChildren(children) {\n\tvar overlayChildren = [];\n\tvar animatedChildren = [];\n\tReact.Children.forEach(children, function(child) {\n\t\tif (!/* @__PURE__ */ React.isValidElement(child)) {\n\t\t\tanimatedChildren.push(child);\n\t\t\treturn;\n\t\t}\n\t\tif (isSheetOverlayComponent(child.type)) {\n\t\t\toverlayChildren.push(child);\n\t\t\treturn;\n\t\t}\n\t\tanimatedChildren.push(child);\n\t});\n\treturn {\n\t\toverlayChildren,\n\t\tanimatedChildren\n\t};\n}\nfunction getYPositions(mode, point, screenSize, frameSize) {\n\tif (!screenSize || !frameSize) return 0;\n\tif (mode === \"mixed\") {\n\t\tif (typeof point === \"number\") return screenSize - Math.min(screenSize, Math.max(0, point));\n\t\tif (point === \"fit\") return screenSize - Math.min(screenSize, frameSize);\n\t\tif (point.endsWith(\"%\")) {\n\t\t\tvar pct = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;\n\t\t\tif (Number.isNaN(pct)) {\n\t\t\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains an invalid percentage string\", \"Use \\\"fit\\\", a pixel number, or a percentage such as \\\"50%\\\"\", \"snapPoint\", point));\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn Math.round(screenSize - pct * screenSize);\n\t\t}\n\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains an unsupported mixed-mode value\", \"Use \\\"fit\\\", a pixel number, or a percentage such as \\\"50%\\\"\", \"snapPoint\", point));\n\t\treturn 0;\n\t}\n\tif (mode === \"fit\") {\n\t\tif (point === 0) return screenSize;\n\t\treturn screenSize - Math.min(screenSize, frameSize);\n\t}\n\tif (mode === \"constant\" && typeof point === \"number\") return screenSize - Math.min(screenSize, Math.max(0, point));\n\tvar pct1 = Math.min(100, Math.max(0, Number(point))) / 100;\n\tif (Number.isNaN(pct1)) {\n\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains a value that cannot be converted to a percentage\", \"Use a numeric percentage such as 50\", \"snapPoint\", point));\n\t\treturn 0;\n\t}\n\treturn Math.round(screenSize - pct1 * screenSize);\n}\n\nexport { SheetImplementationCustom, isSheetOverlayComponent };"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SheetImplementationCustom.native.js","names":[],"sources":["esm/SheetImplementationCustom.native.js"],"sourcesContent":["import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { ProvideAdaptContext, useAdaptContext } from \"@tamagui/adapt\";\nimport { AnimatePresence } from \"@tamagui/animate-presence\";\nimport { useComposedRefs } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { LayoutMeasurementController, View, createRefComponent, formatDiagnostic, useAnimatedNumber, useAnimatedNumberStyle, useAnimationDriver, useDidFinishSSR, useEvent, useThemeName } from \"@tamagui/core\";\nimport { Portal, needsPortalRepropagation } from \"@tamagui/portal\";\nimport React, { useState } from \"react\";\nimport { Dimensions, PanResponder, View as View$1 } from \"react-native\";\nimport { ParentSheetContext, SheetInsideSheetContext } from \"./contexts\";\nimport { SHEET_OVERLAY_MARKER } from \"./constants\";\nimport { GestureDetectorWrapper } from \"./GestureDetectorWrapper\";\nimport { getGestureHandlerState } from \"./gestureState\";\nimport { GestureSheetProvider } from \"./GestureSheetContext\";\nimport { resisted } from \"./helpers\";\nimport { getKeyboardAdjustedSheetY, getKeyboardOccludedHeight, getSheetReleasePosition } from \"./keyboardAvoidance\";\nimport { MIN_KEYBOARD_HEIGHT, getMaxViewportHeight, getStableLayoutViewportHeight, getWebKeyboardResizeHeight, getWebVisualViewportOffsetTop } from \"./webViewport\";\nimport { SheetAnimatedPositionContext, SheetOverlayLayerContext, SheetProvider } from \"./SheetContext\";\nimport { useGestureHandlerPan } from \"./useGestureHandlerPan\";\nimport { useKeyboardControllerSheet } from \"./useKeyboardControllerSheet\";\nimport { SafeAreaInsetsContext, useSafeAreaInsets } from \"./useSafeAreaInsets\";\nimport { useSheetOpenState } from \"./useSheetOpenState\";\nimport { useSheetProviderProps } from \"./useSheetProviderProps\";\n\nvar hiddenSize = 10000.1;\nvar rnghRootStyleOpen = {\n\twidth: \"100%\",\n\theight: \"100%\"\n};\nvar rnghRootStyleClosed = {\n\twidth: \"100%\",\n\theight: 0\n};\nvar sheetEscapeLayers = [];\nvar relativeDimensionTo = isWeb ? \"window\" : \"screen\";\nfunction getStableViewportHeight() {\n\tif (isWeb && typeof window !== \"undefined\") return getStableLayoutViewportHeight();\n\treturn Dimensions.get(relativeDimensionTo).height;\n}\nvar SheetImplementationCustom = createRefComponent(function SheetImplementationCustom2(props, forwardedRef) {\n\tvar parentSheet = React.useContext(ParentSheetContext);\n\tvar safeAreaInsets = useSafeAreaInsets();\n\tvar _safeAreaInsets_top;\n\tvar safeAreaTopInset = (_safeAreaInsets_top = safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.top) !== null && _safeAreaInsets_top !== void 0 ? _safeAreaInsets_top : 0;\n\tvar { transition, transitionConfig: transitionConfigProp, modal = false, zIndex = parentSheet.zIndex + 1, moveOnKeyboardChange = false, unmountChildrenWhenHidden = false, disableHideWhenClosed = false, portalProps, containerComponent: ContainerComponent = React.Fragment, onTransition } = props;\n\tvar state = useSheetOpenState(props);\n\tvar providerProps = useSheetProviderProps(props, state);\n\tvar { frameSize, setFrameSize, dismissOnSnapToBottom, snapPoints, snapPointsMode, hasFit, position, setPosition, scrollBridge, screenSize, setMaxContentSize, maxSnapPoint } = providerProps;\n\tvar { open, controller, isHidden } = state;\n\tvar openRef = React.useRef(open);\n\topenRef.current = open;\n\tvar ref = useComposedRefs(forwardedRef, React.useRef(void 0), providerProps.contentRef);\n\tvar animationDriver = useAnimationDriver();\n\tvar transitionConfig = (function() {\n\t\tvar _animationDriver_animations;\n\t\tif (transitionConfigProp) return transitionConfigProp;\n\t\tvar [animationProp, animationPropConfig] = !transition ? [] : Array.isArray(transition) ? transition : [transition];\n\t\tvar namedConfig = animationProp && ((_animationDriver_animations = animationDriver.animations) === null || _animationDriver_animations === void 0 ? void 0 : _animationDriver_animations[animationProp]);\n\t\tif (namedConfig) {\n\t\t\tif (typeof namedConfig === \"string\") return animationPropConfig !== null && animationPropConfig !== void 0 ? animationPropConfig : null;\n\t\t\treturn {\n\t\t\t\t...namedConfig,\n\t\t\t\t...animationPropConfig\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t})();\n\tvar [isShowingInnerSheet, setIsShowingInnerSheet] = React.useState(false);\n\tvar shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet && needsPortalRepropagation();\n\tvar sheetInsideSheet = React.useContext(SheetInsideSheetContext);\n\tvar onInnerSheet = React.useCallback(function(hasChild) {\n\t\tsetIsShowingInnerSheet(hasChild);\n\t}, []);\n\tvar { keyboardHeight, isKeyboardVisible, dismissKeyboard, pauseKeyboardHandler, flushPendingHide } = useKeyboardControllerSheet({ enabled: Boolean(moveOnKeyboardChange) });\n\tvar stableFrameSize = React.useRef(frameSize);\n\tReact.useEffect(function() {\n\t\tif (open && frameSize) stableFrameSize.current = frameSize;\n\t}, [open, frameSize]);\n\tvar isWebKbSheet = isWeb && hasFit && moveOnKeyboardChange;\n\tvar isNativeKbFitSheet = !isWeb && hasFit && Boolean(moveOnKeyboardChange);\n\tvar preKeyboardFrameSize = React.useRef(0);\n\tReact.useEffect(function() {\n\t\tif (isNativeKbFitSheet && open && !isKeyboardVisible && frameSize > 0) preKeyboardFrameSize.current = frameSize;\n\t}, [\n\t\tisNativeKbFitSheet,\n\t\topen,\n\t\tisKeyboardVisible,\n\t\tframeSize\n\t]);\n\tvar effScreenSize = isWebKbSheet ? getStableViewportHeight() : screenSize;\n\tvar effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize;\n\tvar positions = React.useMemo(function() {\n\t\treturn snapPoints.map(function(point) {\n\t\t\treturn getYPositions(snapPointsMode, point, effScreenSize, effectiveFrameSize);\n\t\t});\n\t}, [\n\t\teffScreenSize,\n\t\teffectiveFrameSize,\n\t\tsnapPoints,\n\t\tsnapPointsMode\n\t]);\n\tvar [isDragging, setIsDragging_] = React.useState(false);\n\tvar isDraggingRef = React.useRef(false);\n\tvar setIsDragging = React.useCallback(function(val) {\n\t\tisDraggingRef.current = val;\n\t\tpauseKeyboardHandler.current = val;\n\t\tsetIsDragging_(val);\n\t\tif (!val) flushPendingHide();\n\t}, [pauseKeyboardHandler, flushPendingHide]);\n\tvar activePositionsRef = React.useRef(positions);\n\tvar activePositions = React.useMemo(function() {\n\t\tif (isDragging || isDraggingRef.current) return activePositionsRef.current;\n\t\tvar result;\n\t\tif (!isKeyboardVisible || keyboardHeight <= 0) result = positions;\n\t\telse result = positions.map(function(p) {\n\t\t\treturn getKeyboardAdjustedSheetY({\n\t\t\t\tsheetY: p,\n\t\t\t\tscreenSize: effScreenSize,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tkeyboardHeight,\n\t\t\t\tshouldTranslate: true,\n\t\t\t\tsafeAreaTop: isWeb ? getWebVisualViewportOffsetTop() : safeAreaTopInset\n\t\t\t});\n\t\t});\n\t\tactivePositionsRef.current = result;\n\t\treturn result;\n\t}, [\n\t\tpositions,\n\t\tisKeyboardVisible,\n\t\tkeyboardHeight,\n\t\teffScreenSize,\n\t\tisDragging,\n\t\tsafeAreaTopInset\n\t]);\n\tvar keyboardOccludedHeight = getKeyboardOccludedHeight({\n\t\tframeSize: effectiveFrameSize,\n\t\tisKeyboardVisible,\n\t\tkeyboardHeight,\n\t\tscreenSize: effScreenSize,\n\t\tsheetY: position >= 0 ? activePositions[position] : void 0\n\t});\n\tvar keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : isNativeKbFitSheet && isKeyboardVisible && preKeyboardFrameSize.current > 0 ? preKeyboardFrameSize.current : 0;\n\tvar _animationDriver_View;\n\tvar AnimatedView = (_animationDriver_View = animationDriver.View) !== null && _animationDriver_View !== void 0 ? _animationDriver_View : View;\n\tuseIsomorphicLayoutEffect(function() {\n\t\tif (!(sheetInsideSheet && open)) return;\n\t\tsheetInsideSheet(true);\n\t\treturn function() {\n\t\t\tsheetInsideSheet(false);\n\t\t};\n\t}, [sheetInsideSheet, open]);\n\tvar nextParentContext = React.useMemo(function() {\n\t\treturn { zIndex };\n\t}, [zIndex]);\n\tvar startPosition = useDidFinishSSR() && screenSize ? screenSize : hiddenSize;\n\tvar animatedNumber = useAnimatedNumber(startPosition);\n\tvar at = React.useRef(startPosition);\n\tvar hasntMeasured = at.current === hiddenSize;\n\tvar [disableAnimation, setDisableAnimation] = useState(hasntMeasured);\n\tvar skipAdaptAnimation = React.useRef(false);\n\tif (controller === null || controller === void 0 ? void 0 : controller.skipNextAnimation) skipAdaptAnimation.current = true;\n\tvar hasScrollView = React.useRef(false);\n\tvar lastPositionIndexRef = React.useRef(-1);\n\tvar pendingTransitionRef = React.useRef(null);\n\tvar emitTransition = useEvent(function(phase, event, finished) {\n\t\tvar _controller_onTransition;\n\t\tvar e = {\n\t\t\tphase,\n\t\t\tcause: event.cause,\n\t\t\tposition: event.position\n\t\t};\n\t\tif (phase === \"end\") e.finished = finished;\n\t\tonTransition === null || onTransition === void 0 || onTransition(e);\n\t\tcontroller === null || controller === void 0 || (_controller_onTransition = controller.onTransition) == null || _controller_onTransition.call(controller, e);\n\t});\n\tvar syncAnimatedPosition = useEvent(function(value) {\n\t\tat.current = value;\n\t\tscrollBridge.paneY = value;\n\t\tvar minY = activePositions[0];\n\t\tvar wasAtTop = scrollBridge.isAtTop;\n\t\tvar nowAtTop = value <= minY + 5;\n\t\tif (wasAtTop === nowAtTop) return;\n\t\tscrollBridge.isAtTop = nowAtTop;\n\t\tif (nowAtTop) {\n\t\t\tvar _scrollBridge_setScrollEnabled;\n\t\t\tif (scrollBridge.lockScrollAtTop) {\n\t\t\t\tvar _scrollBridge_setScrollEnabled1;\n\t\t\t\tif (scrollBridge.y > 0) {\n\t\t\t\t\tvar _scrollBridge_forceScrollTo;\n\t\t\t\t\t(_scrollBridge_forceScrollTo = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo === void 0 || _scrollBridge_forceScrollTo.call(scrollBridge, 0);\n\t\t\t\t\tscrollBridge.y = 0;\n\t\t\t\t}\n\t\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t\t(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false, 0);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (scrollBridge.y > 0) {\n\t\t\t\tvar _scrollBridge_forceScrollTo1;\n\t\t\t\t(_scrollBridge_forceScrollTo1 = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo1 === void 0 || _scrollBridge_forceScrollTo1.call(scrollBridge, 0);\n\t\t\t\tscrollBridge.y = 0;\n\t\t\t}\n\t\t\tscrollBridge.scrollLockY = void 0;\n\t\t\t(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);\n\t\t} else {\n\t\t\tvar _scrollBridge_setScrollEnabled2;\n\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t(_scrollBridge_setScrollEnabled2 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled2 === void 0 || _scrollBridge_setScrollEnabled2.call(scrollBridge, false);\n\t\t}\n\t});\n\tvar setAnimatedPositionDirect = useEvent(function(value) {\n\t\tsyncAnimatedPosition(value);\n\t\tanimatedNumber.setValue(value, { type: \"direct\" });\n\t});\n\tvar getAnimatedPosition = useEvent(function() {\n\t\tvar value = animatedNumber.getValue();\n\t\tsyncAnimatedPosition(value);\n\t\treturn value;\n\t});\n\tfunction stopSpring() {\n\t\tanimatedNumber.stop();\n\t\tif (scrollBridge.onFinishAnimate) {\n\t\t\tscrollBridge.onFinishAnimate();\n\t\t\tscrollBridge.onFinishAnimate = void 0;\n\t\t}\n\t}\n\tvar animateTo = useEvent(function(position2, animationOverride) {\n\t\tif (frameSize === 0) return;\n\t\tvar closeTarget = isWeb ? Math.max(effScreenSize, getMaxViewportHeight()) : effScreenSize;\n\t\tvar isDismissPosition = dismissOnSnapToBottom && position2 === activePositions.length - 1;\n\t\tvar isOpenAnimation = position2 !== -1 && !isHidden && !isDismissPosition;\n\t\tvar toValue = isOpenAnimation ? activePositions[position2] : closeTarget;\n\t\tif (at.current === toValue) {\n\t\t\tif (isDismissPosition) {\n\t\t\t\tif (pendingTransitionRef.current) {\n\t\t\t\t\temitTransition(\"end\", pendingTransitionRef.current, false);\n\t\t\t\t\tpendingTransitionRef.current = null;\n\t\t\t\t}\n\t\t\t\tstopSpring();\n\t\t\t\tvar event = {\n\t\t\t\t\tcause: \"close\",\n\t\t\t\t\tposition: toValue\n\t\t\t\t};\n\t\t\t\tlastPositionIndexRef.current = -1;\n\t\t\t\temitTransition(\"start\", event);\n\t\t\t\tsyncAnimatedPosition(toValue);\n\t\t\t\tsetIsFullyClosed(true);\n\t\t\t\temitTransition(\"end\", event, true);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tat.current = toValue;\n\t\tvar cause = !isOpenAnimation ? \"close\" : lastPositionIndexRef.current < 0 ? \"open\" : \"snap\";\n\t\tlastPositionIndexRef.current = isOpenAnimation ? position2 : -1;\n\t\tvar event1 = {\n\t\t\tcause,\n\t\t\tposition: toValue\n\t\t};\n\t\tif (pendingTransitionRef.current) {\n\t\t\temitTransition(\"end\", pendingTransitionRef.current, false);\n\t\t\tpendingTransitionRef.current = null;\n\t\t}\n\t\tstopSpring();\n\t\tvar animationCompleteCallback = function() {\n\t\t\tif (at.current !== toValue) return;\n\t\t\tsyncAnimatedPosition(toValue);\n\t\t\tpendingTransitionRef.current = null;\n\t\t\tif (!isOpenAnimation && !openRef.current) setIsFullyClosed(true);\n\t\t\temitTransition(\"end\", event1, true);\n\t\t};\n\t\tpendingTransitionRef.current = event1;\n\t\temitTransition(\"start\", event1);\n\t\tif (skipAdaptAnimation.current) {\n\t\t\tskipAdaptAnimation.current = false;\n\t\t\tanimatedNumber.setValue(toValue, {\n\t\t\t\ttype: \"timing\",\n\t\t\t\tduration: 0\n\t\t\t}, animationCompleteCallback);\n\t\t\treturn;\n\t\t}\n\t\tvar resolvedConfig = animationOverride || {\n\t\t\ttype: \"spring\",\n\t\t\t...transitionConfig\n\t\t};\n\t\tvar springConfig = !resolvedConfig.type || resolvedConfig.type === \"spring\" ? {\n\t\t\trestDisplacementThreshold: 1,\n\t\t\trestSpeedThreshold: 10,\n\t\t\tenergyThreshold: 1e-5,\n\t\t\t...resolvedConfig\n\t\t} : resolvedConfig;\n\t\tanimatedNumber.setValue(toValue, springConfig, animationCompleteCallback);\n\t});\n\tuseIsomorphicLayoutEffect(function() {\n\t\tif (hasntMeasured && screenSize && frameSize) {\n\t\t\tat.current = screenSize;\n\t\t\tanimatedNumber.setValue(screenSize, {\n\t\t\t\ttype: \"timing\",\n\t\t\t\tduration: 0\n\t\t\t}, function() {\n\t\t\t\tsyncAnimatedPosition(screenSize);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsetDisableAnimation(false);\n\t\t\t\t}, 10);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (disableAnimation) return;\n\t\tif (isDraggingRef.current) return;\n\t\tif (!frameSize || !screenSize || isHidden || hasntMeasured && !open) return;\n\t\tanimateTo(position);\n\t\tif (position === -1) {\n\t\t\tscrollBridge.scrollLock = false;\n\t\t\tscrollBridge.scrollStartY = -1;\n\t\t}\n\t\tif (open && position >= 0) {\n\t\t\tvar isTopPosition = position === 0;\n\t\t\tscrollBridge.isAtTop = isTopPosition;\n\t\t\tif (isTopPosition) {\n\t\t\t\tvar _scrollBridge_setScrollEnabled;\n\t\t\t\tscrollBridge.scrollLockY = void 0;\n\t\t\t\t(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);\n\t\t\t} else {\n\t\t\t\tvar _scrollBridge_setScrollEnabled1;\n\t\t\t\tscrollBridge.scrollLockY = 0;\n\t\t\t\t(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false);\n\t\t\t}\n\t\t}\n\t}, [\n\t\thasntMeasured,\n\t\tdisableAnimation,\n\t\tisHidden,\n\t\tframeSize,\n\t\tscreenSize,\n\t\topen,\n\t\tposition\n\t]);\n\tvar _props_disableDrag;\n\tvar disableDrag = (_props_disableDrag = props.disableDrag) !== null && _props_disableDrag !== void 0 ? _props_disableDrag : controller === null || controller === void 0 ? void 0 : controller.disableDrag;\n\tuseThemeName();\n\tvar [blockPan, setBlockPan] = React.useState(false);\n\tvar panResponder = React.useMemo(function() {\n\t\tif (disableDrag) return;\n\t\tif (!frameSize) return;\n\t\tif (isShowingInnerSheet) return;\n\t\tvar minY = activePositions[0];\n\t\tscrollBridge.paneMinY = minY;\n\t\tvar startY = at.current;\n\t\tfunction setPanning(val) {\n\t\t\tsetIsDragging(val);\n\t\t}\n\t\tvar release = function(param) {\n\t\t\tvar { vy } = param;\n\t\t\tscrollBridge.setParentDragging(false);\n\t\t\tif (scrollBridge.scrollLock) return;\n\t\t\tisExternalDrag = false;\n\t\t\tpreviouslyScrolling = false;\n\t\t\tsetPanning(false);\n\t\t\tvar currentPos = at.current;\n\t\t\tvar closestPoint = getSheetReleasePosition({\n\t\t\t\tpositions: activePositions,\n\t\t\t\tprojectedEnd: currentPos + frameSize * vy * .2,\n\t\t\t\tcurrentPosition: currentPos,\n\t\t\t\tframeSize,\n\t\t\t\tdismissOnSnapToBottom,\n\t\t\t\tsnapPointsMode,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tisWeb\n\t\t\t});\n\t\t\tsetPosition(closestPoint);\n\t\t\tanimateTo(closestPoint);\n\t\t};\n\t\tvar finish = function(_e, state2) {\n\t\t\trelease({\n\t\t\t\tvy: state2.vy,\n\t\t\t\tdragAt: state2.dy\n\t\t\t});\n\t\t};\n\t\tvar previouslyScrolling = false;\n\t\tvar onMoveShouldSet = function(e, param) {\n\t\t\tvar { dy } = param;\n\t\t\tfunction getShouldSet() {\n\t\t\t\tif (e.target === providerProps.handleRef.current) return true;\n\t\t\t\tif (scrollBridge.scrollNodeTouched) return false;\n\t\t\t\tif (scrollBridge.hasScrollableContent === true) {\n\t\t\t\t\tif (scrollBridge.scrollLock) return false;\n\t\t\t\t\tvar isScrolled = scrollBridge.y !== 0;\n\t\t\t\t\tvar isDraggingUp = dy < 0;\n\t\t\t\t\tvar isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;\n\t\t\t\t\tif (isScrolled) return false;\n\t\t\t\t\tif (isNearTop) {\n\t\t\t\t\t\tif (hasScrollView.current && isDraggingUp) return false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn Math.abs(dy) > 10;\n\t\t\t}\n\t\t\tvar granted = getShouldSet();\n\t\t\tif (granted) scrollBridge.setParentDragging(true);\n\t\t\treturn granted;\n\t\t};\n\t\tvar grant = function() {\n\t\t\tsetPanning(true);\n\t\t\tstopSpring();\n\t\t\tstartY = getAnimatedPosition();\n\t\t};\n\t\tvar isExternalDrag = false;\n\t\tscrollBridge.startPanDrag = function() {\n\t\t\tisExternalDrag = true;\n\t\t\tgrant();\n\t\t};\n\t\tscrollBridge.drag = function(dy) {\n\t\t\tif (!isExternalDrag) {\n\t\t\t\tisExternalDrag = true;\n\t\t\t\tgrant();\n\t\t\t}\n\t\t\tsetAnimatedPositionDirect(resisted(dy + startY, minY));\n\t\t};\n\t\tscrollBridge.release = release;\n\t\tscrollBridge.snapToPosition = function(positionIndex) {\n\t\t\tisExternalDrag = false;\n\t\t\tsetPanning(false);\n\t\t\tsetPosition(positionIndex);\n\t\t\tanimateTo(positionIndex);\n\t\t};\n\t\treturn PanResponder.create({\n\t\t\tonMoveShouldSetPanResponder: onMoveShouldSet,\n\t\t\tonPanResponderTerminationRequest: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tonPanResponderGrant: grant,\n\t\t\tonPanResponderMove: function(_e, param) {\n\t\t\t\tvar { dy } = param;\n\t\t\t\tvar to = resisted(dy + startY, minY);\n\t\t\t\tif (to <= minY) scrollBridge.setParentDragging(false);\n\t\t\t\telse scrollBridge.setParentDragging(true);\n\t\t\t\tsetAnimatedPositionDirect(to);\n\t\t\t},\n\t\t\tonPanResponderEnd: finish,\n\t\t\tonPanResponderTerminate: finish,\n\t\t\tonPanResponderRelease: finish\n\t\t});\n\t}, [\n\t\tdisableDrag,\n\t\tisShowingInnerSheet,\n\t\tanimateTo,\n\t\tframeSize,\n\t\tactivePositions,\n\t\tsetPosition,\n\t\tdismissOnSnapToBottom,\n\t\tsnapPointsMode\n\t]);\n\tReact.useEffect(function() {\n\t\tif (isDragging || isHidden || !open || disableAnimation) return;\n\t\tif (!frameSize || !screenSize) return;\n\t\tanimateTo(position, {\n\t\t\ttype: \"timing\",\n\t\t\tduration: 250\n\t\t});\n\t}, [isKeyboardVisible, keyboardHeight]);\n\tvar wasDragging = React.useRef(false);\n\tReact.useEffect(function() {\n\t\tif (isDragging) {\n\t\t\twasDragging.current = true;\n\t\t\treturn;\n\t\t}\n\t\tif (!wasDragging.current) return;\n\t\twasDragging.current = false;\n\t\tif (!frameSize || !screenSize || isHidden || !open) return;\n\t\tanimateTo(position);\n\t}, [isDragging]);\n\tReact.useEffect(function() {\n\t\tif (!open && isKeyboardVisible) {\n\t\t\tdismissKeyboard();\n\t\t\tpauseKeyboardHandler.current = false;\n\t\t\tflushPendingHide();\n\t\t}\n\t}, [open]);\n\tReact.useEffect(function() {\n\t\tif (!isWeb || !modal || !open || shouldHideParentSheet) return;\n\t\tvar layer = {};\n\t\tsheetEscapeLayers.push(layer);\n\t\tvar onKeyDown = function(event) {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tif (sheetEscapeLayers[sheetEscapeLayers.length - 1] === layer) state.setOpen(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"keydown\", onKeyDown);\n\t\treturn function() {\n\t\t\tvar index = sheetEscapeLayers.indexOf(layer);\n\t\t\tif (index > -1) sheetEscapeLayers.splice(index, 1);\n\t\t\tdocument.removeEventListener(\"keydown\", onKeyDown);\n\t\t};\n\t}, [\n\t\tmodal,\n\t\topen,\n\t\tshouldHideParentSheet,\n\t\tstate.setOpen\n\t]);\n\tvar { panGesture, panGestureRef, gestureHandlerEnabled } = useGestureHandlerPan({\n\t\tpositions: activePositions,\n\t\tframeSize,\n\t\tsetPosition,\n\t\tanimateTo,\n\t\tstopSpring,\n\t\tscrollBridge,\n\t\tsetIsDragging,\n\t\tgetCurrentPosition: getAnimatedPosition,\n\t\tresisted,\n\t\tdisableDrag,\n\t\tisShowingInnerSheet,\n\t\tsetAnimatedPosition: setAnimatedPositionDirect,\n\t\tdismissOnSnapToBottom,\n\t\tsnapPointsMode,\n\t\tisKeyboardVisible,\n\t\tpauseKeyboardHandler\n\t});\n\tvar ignoreLayoutForKeyboard = useEvent(function() {\n\t\treturn isWeb && moveOnKeyboardChange && getWebKeyboardResizeHeight() >= MIN_KEYBOARD_HEIGHT;\n\t});\n\tvar handleAnimationViewLayout = useEvent(function(e) {\n\t\tvar _e_nativeEvent;\n\t\tif (!open && stableFrameSize.current !== 0) return;\n\t\tvar layoutHeight = (_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height;\n\t\tif (ignoreLayoutForKeyboard() && frameSize > 0) return;\n\t\tvar next = modal ? Math.min(layoutHeight, getStableViewportHeight()) : layoutHeight;\n\t\tif (!next) return;\n\t\tsetFrameSize(Math.round(next));\n\t});\n\tvar handleMaxContentViewLayout = React.useCallback(function(e) {\n\t\tvar _e_nativeEvent;\n\t\tif (ignoreLayoutForKeyboard() && screenSize > 0) return;\n\t\tvar next = Math.min((_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height, getStableViewportHeight());\n\t\tif (!next) return;\n\t\tsetMaxContentSize(Math.round(next));\n\t}, [ignoreLayoutForKeyboard, screenSize]);\n\tvar animatedStyle = useAnimatedNumberStyle(animatedNumber, React.useCallback(function(val) {\n\t\t\"worklet\";\n\t\treturn { transform: [{ translateY: frameSize === 0 ? hiddenSize : val }] };\n\t}, [frameSize]));\n\tvar [isFullyClosed, setIsFullyClosed] = React.useState(false);\n\tif (open && isFullyClosed) setIsFullyClosed(false);\n\tvar hasEverOpened = React.useRef(open);\n\tif (open) hasEverOpened.current = true;\n\tvar isVisuallyActive = open || hasEverOpened.current && !isFullyClosed;\n\tvar applyHidden = shouldHideParentSheet || isFullyClosed && !disableHideWhenClosed;\n\tvar forcedContentHeight = hasFit ? void 0 : snapPointsMode === \"percent\" ? `${maxSnapPoint}${isWeb ? modal ? \"dvh\" : \"%\" : \"%\"}` : maxSnapPoint;\n\tvar setHasScrollView = React.useCallback(function(val) {\n\t\thasScrollView.current = val;\n\t}, []);\n\tvar animatedPositionValue = React.useMemo(function() {\n\t\tvar _activePositions_;\n\t\treturn {\n\t\t\tvalue: animatedNumber,\n\t\t\tscreenSize: effScreenSize,\n\t\t\tframeSize,\n\t\t\tsnapOffsets: activePositions,\n\t\t\tminY: (_activePositions_ = activePositions[0]) !== null && _activePositions_ !== void 0 ? _activePositions_ : 0\n\t\t};\n\t}, [\n\t\tanimatedNumber,\n\t\teffScreenSize,\n\t\tframeSize,\n\t\tactivePositions\n\t]);\n\tvar { overlayChildren, animatedChildren } = React.useMemo(function() {\n\t\treturn partitionSheetChildren(props.children);\n\t}, [props.children]);\n\tvar contents = /* @__PURE__ */ jsx(LayoutMeasurementController, {\n\t\tdisable: !open,\n\t\tchildren: /* @__PURE__ */ jsx(ParentSheetContext.Provider, {\n\t\t\tvalue: nextParentContext,\n\t\t\tchildren: /* @__PURE__ */ jsx(SheetProvider, {\n\t\t\t\t...providerProps,\n\t\t\t\tkeyboardOccludedHeight,\n\t\t\t\tisKeyboardVisible,\n\t\t\t\tkeyboardStableFrameHeight,\n\t\t\t\tsetHasScrollView,\n\t\t\t\tchildren: /* @__PURE__ */ jsx(GestureSheetProvider, {\n\t\t\t\t\tisDragging,\n\t\t\t\t\tblockPan,\n\t\t\t\t\tsetBlockPan,\n\t\t\t\t\tpanGesture,\n\t\t\t\t\tpanGestureRef,\n\t\t\t\t\tchildren: /* @__PURE__ */ jsxs(SheetAnimatedPositionContext.Provider, {\n\t\t\t\t\t\tvalue: animatedPositionValue,\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t/* @__PURE__ */ jsx(SheetOverlayLayerContext.Provider, {\n\t\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t\t\tchildren: /* @__PURE__ */ jsx(AnimatePresence, {\n\t\t\t\t\t\t\t\t\tcustom: { open },\n\t\t\t\t\t\t\t\t\tchildren: shouldHideParentSheet || !open ? null : overlayChildren\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsnapPointsMode !== \"percent\" && /* @__PURE__ */ jsx(View$1, {\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\t\t\tpointerEvents: \"none\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonLayout: handleMaxContentViewLayout\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t/* @__PURE__ */ jsx(AnimatedView, {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tonLayout: handleAnimationViewLayout,\n\t\t\t\t\t\t\t\ttransition: isDragging || disableAnimation ? null : transition,\n\t\t\t\t\t\t\t\tdisableClassName: true,\n\t\t\t\t\t\t\t\tstyle: [{\n\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\tzIndex,\n\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\theight: forcedContentHeight,\n\t\t\t\t\t\t\t\t\tminHeight: forcedContentHeight,\n\t\t\t\t\t\t\t\t\t...applyHidden && { display: \"none\" },\n\t\t\t\t\t\t\t\t\t...(shouldHideParentSheet || !open) && { pointerEvents: \"none\" }\n\t\t\t\t\t\t\t\t}, animatedStyle],\n\t\t\t\t\t\t\t\tchildren: gestureHandlerEnabled && panGesture ? /* @__PURE__ */ jsx(GestureDetectorWrapper, {\n\t\t\t\t\t\t\t\t\tgesture: panGesture,\n\t\t\t\t\t\t\t\t\tstyle: { flex: 1 },\n\t\t\t\t\t\t\t\t\tchildren: animatedChildren\n\t\t\t\t\t\t\t\t}) : /* @__PURE__ */ jsx(View$1, {\n\t\t\t\t\t\t\t\t\t...panResponder === null || panResponder === void 0 ? void 0 : panResponder.panHandlers,\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\t\theight: \"100%\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tchildren: animatedChildren\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t]\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t});\n\tif (needsPortalRepropagation()) contents = /* @__PURE__ */ jsx(ProvideAdaptContext, {\n\t\t...useAdaptContext(),\n\t\tchildren: /* @__PURE__ */ jsx(SafeAreaInsetsContext.Provider, {\n\t\t\tvalue: safeAreaInsets,\n\t\t\tchildren: contents\n\t\t})\n\t});\n\tvar shouldMountChildren = unmountChildrenWhenHidden ? !isFullyClosed : true;\n\tif (modal) {\n\t\tvar RNGHRoot = getGestureHandlerState().RootView;\n\t\tvar mountedContents = shouldMountChildren ? /* @__PURE__ */ jsx(ContainerComponent, { children: contents }) : null;\n\t\tvar modalContents = /* @__PURE__ */ jsx(Portal, {\n\t\t\tstackZIndex: zIndex,\n\t\t\thidden: !isVisuallyActive,\n\t\t\t...portalProps,\n\t\t\tchildren: mountedContents && RNGHRoot ? /* @__PURE__ */ jsx(RNGHRoot, {\n\t\t\t\tstyle: open ? rnghRootStyleOpen : rnghRootStyleClosed,\n\t\t\t\tchildren: mountedContents\n\t\t\t}) : mountedContents\n\t\t});\n\t\tif (isWeb) return modalContents;\n\t\treturn /* @__PURE__ */ jsx(SheetInsideSheetContext.Provider, {\n\t\t\tvalue: onInnerSheet,\n\t\t\tchildren: modalContents\n\t\t});\n\t}\n\treturn contents;\n});\nfunction isSheetOverlayComponent(type) {\n\tvar staticConfig = type === null || type === void 0 ? void 0 : type.staticConfig;\n\twhile (staticConfig) {\n\t\tif (staticConfig[SHEET_OVERLAY_MARKER]) return true;\n\t\tstaticConfig = staticConfig.parentStaticConfig;\n\t}\n\treturn false;\n}\nfunction partitionSheetChildren(children) {\n\tvar overlayChildren = [];\n\tvar animatedChildren = [];\n\tReact.Children.forEach(children, function(child) {\n\t\tif (!/* @__PURE__ */ React.isValidElement(child)) {\n\t\t\tanimatedChildren.push(child);\n\t\t\treturn;\n\t\t}\n\t\tif (isSheetOverlayComponent(child.type)) {\n\t\t\toverlayChildren.push(child);\n\t\t\treturn;\n\t\t}\n\t\tanimatedChildren.push(child);\n\t});\n\treturn {\n\t\toverlayChildren,\n\t\tanimatedChildren\n\t};\n}\nfunction getYPositions(mode, point, screenSize, frameSize) {\n\tif (!screenSize || !frameSize) return 0;\n\tif (mode === \"mixed\") {\n\t\tif (typeof point === \"number\") return screenSize - Math.min(screenSize, Math.max(0, point));\n\t\tif (point === \"fit\") return screenSize - Math.min(screenSize, frameSize);\n\t\tif (point.endsWith(\"%\")) {\n\t\t\tvar pct = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;\n\t\t\tif (Number.isNaN(pct)) {\n\t\t\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains an invalid percentage string\", \"Use \\\"fit\\\", a pixel number, or a percentage such as \\\"50%\\\"\", \"snapPoint\", point));\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn Math.round(screenSize - pct * screenSize);\n\t\t}\n\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains an unsupported mixed-mode value\", \"Use \\\"fit\\\", a pixel number, or a percentage such as \\\"50%\\\"\", \"snapPoint\", point));\n\t\treturn 0;\n\t}\n\tif (mode === \"fit\") {\n\t\tif (point === 0) return screenSize;\n\t\treturn screenSize - Math.min(screenSize, frameSize);\n\t}\n\tif (mode === \"constant\" && typeof point === \"number\") return screenSize - Math.min(screenSize, Math.max(0, point));\n\tvar pct1 = Math.min(100, Math.max(0, Number(point))) / 100;\n\tif (Number.isNaN(pct1)) {\n\t\tconsole.warn(formatDiagnostic(\"TAMAGUI_SHEET_SNAP_POINT\", \"Sheet\", \"snapPoints contains a value that cannot be converted to a percentage\", \"Use a numeric percentage such as 50\", \"snapPoint\", point));\n\t\treturn 0;\n\t}\n\treturn Math.round(screenSize - pct1 * screenSize);\n}\n\nexport { SheetImplementationCustom, isSheetOverlayComponent };"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gestureState.js","names":[],"sources":["esm/gestureState.js"],"sourcesContent":["import { getGestureHandler } from \"@tamagui/native\";\nconst SHEET_GESTURE_STATE_KEY = \"__tamagui_sheet_gesture_state__\";\nfunction getSheetGestureHandlerState() {\n const g = globalThis;\n return g[SHEET_GESTURE_STATE_KEY] ?? getGestureHandler().state;\n}\nfunction isGestureHandlerEnabled() {\n return getSheetGestureHandlerState().enabled;\n}\nfunction getGestureHandlerState() {\n return getSheetGestureHandlerState();\n}\nfunction setGestureHandlerState(updates) {\n const g = globalThis;\n const sheetState = g[SHEET_GESTURE_STATE_KEY];\n if (sheetState) {\n Object.assign(sheetState, updates);\n return;\n }\n getGestureHandler().set(updates);\n}\nconst setGestureState = setGestureHandlerState;\nexport {\n getGestureHandlerState,\n isGestureHandlerEnabled,\n setGestureHandlerState,\n setGestureState\n};\n//# sourceMappingURL=gestureState.js.map\n"],"mappings":";;;AACA,MAAM,0BAA0B;AAChC,SAAS,8BAA8B;CACrC,MAAM,IAAI;CACV,OAAO,EAAE,4BAA4B,kBAAkB,
|
|
1
|
+
{"version":3,"file":"gestureState.js","names":[],"sources":["esm/gestureState.js"],"sourcesContent":["import { getGestureHandler } from \"@tamagui/native\";\nconst SHEET_GESTURE_STATE_KEY = \"__tamagui_sheet_gesture_state__\";\nfunction getSheetGestureHandlerState() {\n const g = globalThis;\n return g[SHEET_GESTURE_STATE_KEY] ?? getGestureHandler().state;\n}\nfunction isGestureHandlerEnabled() {\n return getSheetGestureHandlerState().enabled;\n}\nfunction getGestureHandlerState() {\n return getSheetGestureHandlerState();\n}\nfunction setGestureHandlerState(updates) {\n const g = globalThis;\n const sheetState = g[SHEET_GESTURE_STATE_KEY];\n if (sheetState) {\n Object.assign(sheetState, updates);\n return;\n }\n getGestureHandler().set(updates);\n}\nconst setGestureState = setGestureHandlerState;\nexport {\n getGestureHandlerState,\n isGestureHandlerEnabled,\n setGestureHandlerState,\n setGestureState\n};\n//# sourceMappingURL=gestureState.js.map\n"],"mappings":";;;AACA,MAAM,0BAA0B;AAChC,SAAS,8BAA8B;CACrC,MAAM,IAAI;CACV,OAAO,EAAE,4BAA4B,kBAAkB,CAAC,CAAC;AAC3D;AACA,SAAS,0BAA0B;CACjC,OAAO,4BAA4B,CAAC,CAAC;AACvC;AACA,SAAS,yBAAyB;CAChC,OAAO,4BAA4B;AACrC;AACA,SAAS,uBAAuB,SAAS;CACvC,MAAM,IAAI;CACV,MAAM,aAAa,EAAE;CACrB,IAAI,YAAY;EACd,OAAO,OAAO,YAAY,OAAO;EACjC;CACF;CACA,kBAAkB,CAAC,CAAC,IAAI,OAAO;AACjC;AACA,MAAM,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gestureState.native.js","names":[],"sources":["esm/gestureState.native.js"],"sourcesContent":["import { getGestureHandler } from \"@tamagui/native\";\nvar SHEET_GESTURE_STATE_KEY = \"__tamagui_sheet_gesture_state__\";\nfunction getSheetGestureHandlerState() {\n var g = globalThis;\n var _g_SHEET_GESTURE_STATE_KEY;\n return (_g_SHEET_GESTURE_STATE_KEY = g[SHEET_GESTURE_STATE_KEY]) !== null && _g_SHEET_GESTURE_STATE_KEY !== void 0 ? _g_SHEET_GESTURE_STATE_KEY : getGestureHandler().state;\n}\nfunction isGestureHandlerEnabled() {\n return getSheetGestureHandlerState().enabled;\n}\nfunction getGestureHandlerState() {\n return getSheetGestureHandlerState();\n}\nfunction setGestureHandlerState(updates) {\n var g = globalThis;\n var sheetState = g[SHEET_GESTURE_STATE_KEY];\n if (sheetState) {\n Object.assign(sheetState, updates);\n return;\n }\n getGestureHandler().set(updates);\n}\nvar setGestureState = setGestureHandlerState;\nexport {\n getGestureHandlerState,\n isGestureHandlerEnabled,\n setGestureHandlerState,\n setGestureState\n};\n//# sourceMappingURL=gestureState.js.map\n"],"mappings":";;;AACA,IAAI,0BAA0B;AAC9B,SAAS,8BAA8B;CACrC,IAAI,IAAI;CACR,IAAI;CACJ,QAAQ,6BAA6B,EAAE,8BAA8B,QAAQ,+BAA+B,KAAK,IAAI,6BAA6B,kBAAkB,
|
|
1
|
+
{"version":3,"file":"gestureState.native.js","names":[],"sources":["esm/gestureState.native.js"],"sourcesContent":["import { getGestureHandler } from \"@tamagui/native\";\nvar SHEET_GESTURE_STATE_KEY = \"__tamagui_sheet_gesture_state__\";\nfunction getSheetGestureHandlerState() {\n var g = globalThis;\n var _g_SHEET_GESTURE_STATE_KEY;\n return (_g_SHEET_GESTURE_STATE_KEY = g[SHEET_GESTURE_STATE_KEY]) !== null && _g_SHEET_GESTURE_STATE_KEY !== void 0 ? _g_SHEET_GESTURE_STATE_KEY : getGestureHandler().state;\n}\nfunction isGestureHandlerEnabled() {\n return getSheetGestureHandlerState().enabled;\n}\nfunction getGestureHandlerState() {\n return getSheetGestureHandlerState();\n}\nfunction setGestureHandlerState(updates) {\n var g = globalThis;\n var sheetState = g[SHEET_GESTURE_STATE_KEY];\n if (sheetState) {\n Object.assign(sheetState, updates);\n return;\n }\n getGestureHandler().set(updates);\n}\nvar setGestureState = setGestureHandlerState;\nexport {\n getGestureHandlerState,\n isGestureHandlerEnabled,\n setGestureHandlerState,\n setGestureState\n};\n//# sourceMappingURL=gestureState.js.map\n"],"mappings":";;;AACA,IAAI,0BAA0B;AAC9B,SAAS,8BAA8B;CACrC,IAAI,IAAI;CACR,IAAI;CACJ,QAAQ,6BAA6B,EAAE,8BAA8B,QAAQ,+BAA+B,KAAK,IAAI,6BAA6B,kBAAkB,CAAC,CAAC;AACxK;AACA,SAAS,0BAA0B;CACjC,OAAO,4BAA4B,CAAC,CAAC;AACvC;AACA,SAAS,yBAAyB;CAChC,OAAO,4BAA4B;AACrC;AACA,SAAS,uBAAuB,SAAS;CACvC,IAAI,IAAI;CACR,IAAI,aAAa,EAAE;CACnB,IAAI,YAAY;EACd,OAAO,OAAO,YAAY,OAAO;EACjC;CACF;CACA,kBAAkB,CAAC,CAAC,IAAI,OAAO;AACjC;AACA,IAAI,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGestureHandlerPan.js","names":[],"sources":["esm/useGestureHandlerPan.js"],"sourcesContent":["import { isWeb } from \"@tamagui/constants\";\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { getGestureHandlerState, isGestureHandlerEnabled } from \"./gestureState\";\nimport { getSheetReleasePosition } from \"./keyboardAvoidance\";\nconst AT_TOP_THRESHOLD = 5;\nconst SCROLL_HANDOFF_THRESHOLD = 160;\nfunction useGestureHandlerPan(config) {\n const {\n positions,\n frameSize,\n setPosition,\n animateTo,\n stopSpring,\n scrollBridge,\n setIsDragging,\n getCurrentPosition,\n resisted,\n disableDrag,\n isShowingInnerSheet,\n setAnimatedPosition,\n scrollGestureRef\n } = config;\n const gestureHandlerEnabled = isGestureHandlerEnabled();\n const panGestureRef = useRef(null);\n const releaseConfigRef = useRef({\n dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,\n snapPointsMode: config.snapPointsMode ?? \"percent\",\n isKeyboardVisible: config.isKeyboardVisible === true\n });\n releaseConfigRef.current = {\n dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,\n snapPointsMode: config.snapPointsMode ?? \"percent\",\n isKeyboardVisible: config.isKeyboardVisible === true\n };\n const gestureStateRef = useRef({\n startY: 0,\n // track last translation when pan was active (for position calculation after handoff)\n lastPanTranslationY: 0,\n // accumulated position offset from all pan movements\n accumulatedOffset: 0,\n // track previous translation for direction detection (like actions-sheet)\n prevTranslationY: 0,\n // track if scroll was engaged (scrollY > 0) at some point\n scrollEngaged: false,\n // positions frozen at gesture start — keyboard may dismiss during drag (input blur),\n // causing positions to revert. Frozen positions ensure stable snap calculation.\n frozenPositions: [],\n frozenMinY: 0,\n frozenIsKeyboardVisible: false,\n // whether pan gesture actually started (vs just a tap in onBegin)\n panStarted: false,\n startedBelowTop: false,\n upwardDragAfterTop: 0,\n scrollUnlockedAfterTop: false,\n keepScrollLockedAfterEnd: false\n });\n const unlockScrollTimer = useRef(null);\n useEffect(() => {\n return () => {\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n };\n }, []);\n const onStart = useCallback(() => {\n stopSpring();\n }, [stopSpring]);\n const onEnd = useCallback(\n (closestPoint, animationOverride, keepScrollLocked = false) => {\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n setIsDragging(false);\n scrollBridge.setParentDragging(false);\n scrollBridge.lockScrollAtTop = false;\n if (keepScrollLocked) {\n scrollBridge.setScrollEnabled?.(false, 0);\n unlockScrollTimer.current = setTimeout(() => {\n unlockScrollTimer.current = null;\n scrollBridge.setScrollEnabled?.(true);\n }, 160);\n } else {\n scrollBridge.setScrollEnabled?.(true);\n }\n setPosition(closestPoint);\n animateTo(closestPoint, animationOverride);\n },\n [setIsDragging, scrollBridge, setPosition, animateTo]\n );\n const panGesture = useMemo(() => {\n if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) {\n return null;\n }\n const { Gesture } = getGestureHandlerState();\n if (!Gesture) {\n return null;\n }\n const minY = positions[0];\n const gs = gestureStateRef.current;\n const gesture = Gesture.Pan().withRef(panGestureRef).activeOffsetY([-10, 10]).failOffsetX([-20, 20]).shouldCancelWhenOutside(false).onBegin(() => {\n gs.panStarted = false;\n if (config.pauseKeyboardHandler) {\n config.pauseKeyboardHandler.current = true;\n }\n const pos = getCurrentPosition();\n const atTop = pos <= minY + AT_TOP_THRESHOLD;\n const currentScrollY = scrollBridge.y;\n gs.startY = pos;\n gs.lastPanTranslationY = 0;\n gs.accumulatedOffset = 0;\n gs.prevTranslationY = 0;\n gs.scrollEngaged = currentScrollY > 0;\n gs.frozenPositions = [...positions];\n gs.frozenMinY = minY;\n gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;\n gs.startedBelowTop = !atTop;\n gs.upwardDragAfterTop = 0;\n gs.scrollUnlockedAfterTop = false;\n gs.keepScrollLockedAfterEnd = false;\n scrollBridge.lockScrollAtTop = false;\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n if (!atTop) {\n scrollBridge.setScrollEnabled?.(false, 0);\n }\n }).onStart(() => {\n gs.panStarted = true;\n setIsDragging(true);\n scrollBridge.initialPosition = gs.startY;\n onStart();\n }).onChange((event) => {\n const { translationY } = event;\n const isSwipingDown = gs.prevTranslationY < translationY;\n const deltaY = translationY - gs.prevTranslationY;\n gs.prevTranslationY = translationY;\n const scrollY = scrollBridge.y;\n if (scrollY > 0) {\n gs.scrollEngaged = true;\n }\n const currentPos = gs.startY + gs.accumulatedOffset;\n const isCurrentlyAtTop = currentPos <= minY + AT_TOP_THRESHOLD;\n const nodeIsScrolling = scrollY > 0;\n let panHandles = false;\n const hasScrollableContent = scrollBridge.hasScrollableContent !== false;\n if (!isCurrentlyAtTop) {\n if (isSwipingDown) {\n panHandles = !nodeIsScrolling || !hasScrollableContent;\n } else {\n panHandles = true;\n }\n } else {\n if (isSwipingDown) {\n if (nodeIsScrolling && hasScrollableContent) {\n panHandles = false;\n } else if (gs.scrollEngaged && hasScrollableContent) {\n panHandles = true;\n } else {\n panHandles = true;\n }\n } else {\n if (hasScrollableContent) {\n if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {\n gs.upwardDragAfterTop += Math.max(0, -deltaY);\n if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {\n gs.scrollUnlockedAfterTop = true;\n panHandles = false;\n } else {\n panHandles = true;\n }\n } else {\n panHandles = false;\n }\n } else {\n panHandles = true;\n }\n }\n }\n if (panHandles) {\n scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;\n const lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;\n scrollBridge.setScrollEnabled?.(false, lockTo);\n gs.accumulatedOffset += deltaY;\n const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);\n scrollBridge.paneY = newPosition;\n setAnimatedPosition(newPosition);\n scrollBridge.setParentDragging(newPosition > minY);\n } else {\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.setScrollEnabled?.(true);\n scrollBridge.setParentDragging(false);\n }\n }).onEnd((event) => {\n const { velocityY } = event;\n const currentPos = gs.startY + gs.accumulatedOffset;\n const keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;\n gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;\n const snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;\n const snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;\n if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {\n onEnd(0, void 0, keepScrollLockedAfterEnd);\n return;\n }\n const velocity = velocityY / 1e3;\n const projectedEnd = currentPos + frameSize * velocity * 0.2;\n const releaseConfig = releaseConfigRef.current;\n const closestPoint = getSheetReleasePosition({\n positions: snapPositions,\n projectedEnd,\n currentPosition: currentPos,\n frameSize,\n dismissOnSnapToBottom: releaseConfig.dismissOnSnapToBottom,\n snapPointsMode: releaseConfig.snapPointsMode,\n isKeyboardVisible: gs.frozenIsKeyboardVisible,\n isWeb\n });\n onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);\n }).onFinalize(() => {\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;\n if (gs.panStarted) {\n setIsDragging(false);\n } else {\n if (config.pauseKeyboardHandler) {\n config.pauseKeyboardHandler.current = false;\n }\n }\n }).runOnJS(true);\n if (scrollGestureRef?.current) {\n return gesture.simultaneousWithExternalGesture(scrollGestureRef.current);\n }\n return gesture;\n }, [\n gestureHandlerEnabled,\n disableDrag,\n isShowingInnerSheet,\n frameSize,\n positions,\n scrollBridge,\n getCurrentPosition,\n resisted,\n onStart,\n onEnd,\n setIsDragging,\n setAnimatedPosition\n ]);\n return {\n panGesture,\n panGestureRef,\n gestureHandlerEnabled\n };\n}\nexport {\n useGestureHandlerPan\n};\n//# sourceMappingURL=useGestureHandlerPan.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGestureHandlerPan.js","names":[],"sources":["esm/useGestureHandlerPan.js"],"sourcesContent":["import { isWeb } from \"@tamagui/constants\";\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { getGestureHandlerState, isGestureHandlerEnabled } from \"./gestureState\";\nimport { getSheetReleasePosition } from \"./keyboardAvoidance\";\nconst AT_TOP_THRESHOLD = 5;\nconst SCROLL_HANDOFF_THRESHOLD = 160;\nfunction useGestureHandlerPan(config) {\n const {\n positions,\n frameSize,\n setPosition,\n animateTo,\n stopSpring,\n scrollBridge,\n setIsDragging,\n getCurrentPosition,\n resisted,\n disableDrag,\n isShowingInnerSheet,\n setAnimatedPosition,\n scrollGestureRef\n } = config;\n const gestureHandlerEnabled = isGestureHandlerEnabled();\n const panGestureRef = useRef(null);\n const releaseConfigRef = useRef({\n dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,\n snapPointsMode: config.snapPointsMode ?? \"percent\",\n isKeyboardVisible: config.isKeyboardVisible === true\n });\n releaseConfigRef.current = {\n dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,\n snapPointsMode: config.snapPointsMode ?? \"percent\",\n isKeyboardVisible: config.isKeyboardVisible === true\n };\n const gestureStateRef = useRef({\n startY: 0,\n // track last translation when pan was active (for position calculation after handoff)\n lastPanTranslationY: 0,\n // accumulated position offset from all pan movements\n accumulatedOffset: 0,\n // track previous translation for direction detection (like actions-sheet)\n prevTranslationY: 0,\n // track if scroll was engaged (scrollY > 0) at some point\n scrollEngaged: false,\n // positions frozen at gesture start — keyboard may dismiss during drag (input blur),\n // causing positions to revert. Frozen positions ensure stable snap calculation.\n frozenPositions: [],\n frozenMinY: 0,\n frozenIsKeyboardVisible: false,\n // whether pan gesture actually started (vs just a tap in onBegin)\n panStarted: false,\n startedBelowTop: false,\n upwardDragAfterTop: 0,\n scrollUnlockedAfterTop: false,\n keepScrollLockedAfterEnd: false\n });\n const unlockScrollTimer = useRef(null);\n useEffect(() => {\n return () => {\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n };\n }, []);\n const onStart = useCallback(() => {\n stopSpring();\n }, [stopSpring]);\n const onEnd = useCallback(\n (closestPoint, animationOverride, keepScrollLocked = false) => {\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n setIsDragging(false);\n scrollBridge.setParentDragging(false);\n scrollBridge.lockScrollAtTop = false;\n if (keepScrollLocked) {\n scrollBridge.setScrollEnabled?.(false, 0);\n unlockScrollTimer.current = setTimeout(() => {\n unlockScrollTimer.current = null;\n scrollBridge.setScrollEnabled?.(true);\n }, 160);\n } else {\n scrollBridge.setScrollEnabled?.(true);\n }\n setPosition(closestPoint);\n animateTo(closestPoint, animationOverride);\n },\n [setIsDragging, scrollBridge, setPosition, animateTo]\n );\n const panGesture = useMemo(() => {\n if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) {\n return null;\n }\n const { Gesture } = getGestureHandlerState();\n if (!Gesture) {\n return null;\n }\n const minY = positions[0];\n const gs = gestureStateRef.current;\n const gesture = Gesture.Pan().withRef(panGestureRef).activeOffsetY([-10, 10]).failOffsetX([-20, 20]).shouldCancelWhenOutside(false).onBegin(() => {\n gs.panStarted = false;\n if (config.pauseKeyboardHandler) {\n config.pauseKeyboardHandler.current = true;\n }\n const pos = getCurrentPosition();\n const atTop = pos <= minY + AT_TOP_THRESHOLD;\n const currentScrollY = scrollBridge.y;\n gs.startY = pos;\n gs.lastPanTranslationY = 0;\n gs.accumulatedOffset = 0;\n gs.prevTranslationY = 0;\n gs.scrollEngaged = currentScrollY > 0;\n gs.frozenPositions = [...positions];\n gs.frozenMinY = minY;\n gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;\n gs.startedBelowTop = !atTop;\n gs.upwardDragAfterTop = 0;\n gs.scrollUnlockedAfterTop = false;\n gs.keepScrollLockedAfterEnd = false;\n scrollBridge.lockScrollAtTop = false;\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n if (!atTop) {\n scrollBridge.setScrollEnabled?.(false, 0);\n }\n }).onStart(() => {\n gs.panStarted = true;\n setIsDragging(true);\n scrollBridge.initialPosition = gs.startY;\n onStart();\n }).onChange((event) => {\n const { translationY } = event;\n const isSwipingDown = gs.prevTranslationY < translationY;\n const deltaY = translationY - gs.prevTranslationY;\n gs.prevTranslationY = translationY;\n const scrollY = scrollBridge.y;\n if (scrollY > 0) {\n gs.scrollEngaged = true;\n }\n const currentPos = gs.startY + gs.accumulatedOffset;\n const isCurrentlyAtTop = currentPos <= minY + AT_TOP_THRESHOLD;\n const nodeIsScrolling = scrollY > 0;\n let panHandles = false;\n const hasScrollableContent = scrollBridge.hasScrollableContent !== false;\n if (!isCurrentlyAtTop) {\n if (isSwipingDown) {\n panHandles = !nodeIsScrolling || !hasScrollableContent;\n } else {\n panHandles = true;\n }\n } else {\n if (isSwipingDown) {\n if (nodeIsScrolling && hasScrollableContent) {\n panHandles = false;\n } else if (gs.scrollEngaged && hasScrollableContent) {\n panHandles = true;\n } else {\n panHandles = true;\n }\n } else {\n if (hasScrollableContent) {\n if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {\n gs.upwardDragAfterTop += Math.max(0, -deltaY);\n if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {\n gs.scrollUnlockedAfterTop = true;\n panHandles = false;\n } else {\n panHandles = true;\n }\n } else {\n panHandles = false;\n }\n } else {\n panHandles = true;\n }\n }\n }\n if (panHandles) {\n scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;\n const lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;\n scrollBridge.setScrollEnabled?.(false, lockTo);\n gs.accumulatedOffset += deltaY;\n const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);\n scrollBridge.paneY = newPosition;\n setAnimatedPosition(newPosition);\n scrollBridge.setParentDragging(newPosition > minY);\n } else {\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.setScrollEnabled?.(true);\n scrollBridge.setParentDragging(false);\n }\n }).onEnd((event) => {\n const { velocityY } = event;\n const currentPos = gs.startY + gs.accumulatedOffset;\n const keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;\n gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;\n const snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;\n const snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;\n if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {\n onEnd(0, void 0, keepScrollLockedAfterEnd);\n return;\n }\n const velocity = velocityY / 1e3;\n const projectedEnd = currentPos + frameSize * velocity * 0.2;\n const releaseConfig = releaseConfigRef.current;\n const closestPoint = getSheetReleasePosition({\n positions: snapPositions,\n projectedEnd,\n currentPosition: currentPos,\n frameSize,\n dismissOnSnapToBottom: releaseConfig.dismissOnSnapToBottom,\n snapPointsMode: releaseConfig.snapPointsMode,\n isKeyboardVisible: gs.frozenIsKeyboardVisible,\n isWeb\n });\n onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);\n }).onFinalize(() => {\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;\n if (gs.panStarted) {\n setIsDragging(false);\n } else {\n if (config.pauseKeyboardHandler) {\n config.pauseKeyboardHandler.current = false;\n }\n }\n }).runOnJS(true);\n if (scrollGestureRef?.current) {\n return gesture.simultaneousWithExternalGesture(scrollGestureRef.current);\n }\n return gesture;\n }, [\n gestureHandlerEnabled,\n disableDrag,\n isShowingInnerSheet,\n frameSize,\n positions,\n scrollBridge,\n getCurrentPosition,\n resisted,\n onStart,\n onEnd,\n setIsDragging,\n setAnimatedPosition\n ]);\n return {\n panGesture,\n panGestureRef,\n gestureHandlerEnabled\n };\n}\nexport {\n useGestureHandlerPan\n};\n//# sourceMappingURL=useGestureHandlerPan.js.map\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGestureHandlerPan.native.js","names":[],"sources":["esm/useGestureHandlerPan.native.js"],"sourcesContent":["import { isWeb } from \"@tamagui/constants\";\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { getGestureHandlerState, isGestureHandlerEnabled } from \"./gestureState\";\nimport { getSheetReleasePosition } from \"./keyboardAvoidance\";\nvar AT_TOP_THRESHOLD = 5;\nvar SCROLL_HANDOFF_THRESHOLD = 160;\nfunction useGestureHandlerPan(config) {\n var { positions, frameSize, setPosition, animateTo, stopSpring, scrollBridge, setIsDragging, getCurrentPosition, resisted, disableDrag, isShowingInnerSheet, setAnimatedPosition, scrollGestureRef } = config;\n var gestureHandlerEnabled = isGestureHandlerEnabled();\n var panGestureRef = useRef(null);\n var _config_snapPointsMode;\n var releaseConfigRef = useRef({\n dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,\n snapPointsMode: (_config_snapPointsMode = config.snapPointsMode) !== null && _config_snapPointsMode !== void 0 ? _config_snapPointsMode : \"percent\",\n isKeyboardVisible: config.isKeyboardVisible === true\n });\n var _config_snapPointsMode1;\n releaseConfigRef.current = {\n dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,\n snapPointsMode: (_config_snapPointsMode1 = config.snapPointsMode) !== null && _config_snapPointsMode1 !== void 0 ? _config_snapPointsMode1 : \"percent\",\n isKeyboardVisible: config.isKeyboardVisible === true\n };\n var gestureStateRef = useRef({\n startY: 0,\n // track last translation when pan was active (for position calculation after handoff)\n lastPanTranslationY: 0,\n // accumulated position offset from all pan movements\n accumulatedOffset: 0,\n // track previous translation for direction detection (like actions-sheet)\n prevTranslationY: 0,\n // track if scroll was engaged (scrollY > 0) at some point\n scrollEngaged: false,\n // positions frozen at gesture start — keyboard may dismiss during drag (input blur),\n // causing positions to revert. Frozen positions ensure stable snap calculation.\n frozenPositions: [],\n frozenMinY: 0,\n frozenIsKeyboardVisible: false,\n // whether pan gesture actually started (vs just a tap in onBegin)\n panStarted: false,\n startedBelowTop: false,\n upwardDragAfterTop: 0,\n scrollUnlockedAfterTop: false,\n keepScrollLockedAfterEnd: false\n });\n var unlockScrollTimer = useRef(null);\n useEffect(function() {\n return function() {\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n };\n }, []);\n var onStart = useCallback(function() {\n stopSpring();\n }, [\n stopSpring\n ]);\n var onEnd = useCallback(function(closestPoint, animationOverride) {\n var keepScrollLocked = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n setIsDragging(false);\n scrollBridge.setParentDragging(false);\n scrollBridge.lockScrollAtTop = false;\n if (keepScrollLocked) {\n var _scrollBridge_setScrollEnabled;\n (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);\n unlockScrollTimer.current = setTimeout(function() {\n var _scrollBridge_setScrollEnabled2;\n unlockScrollTimer.current = null;\n (_scrollBridge_setScrollEnabled2 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled2 === void 0 ? void 0 : _scrollBridge_setScrollEnabled2.call(scrollBridge, true);\n }, 160);\n } else {\n var _scrollBridge_setScrollEnabled1;\n (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);\n }\n setPosition(closestPoint);\n animateTo(closestPoint, animationOverride);\n }, [\n setIsDragging,\n scrollBridge,\n setPosition,\n animateTo\n ]);\n var panGesture = useMemo(function() {\n if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) {\n return null;\n }\n var { Gesture } = getGestureHandlerState();\n if (!Gesture) {\n return null;\n }\n var minY = positions[0];\n var gs = gestureStateRef.current;\n var gesture = Gesture.Pan().withRef(panGestureRef).activeOffsetY([\n -10,\n 10\n ]).failOffsetX([\n -20,\n 20\n ]).shouldCancelWhenOutside(false).onBegin(function() {\n gs.panStarted = false;\n if (config.pauseKeyboardHandler) {\n config.pauseKeyboardHandler.current = true;\n }\n var pos = getCurrentPosition();\n var atTop = pos <= minY + AT_TOP_THRESHOLD;\n var currentScrollY = scrollBridge.y;\n gs.startY = pos;\n gs.lastPanTranslationY = 0;\n gs.accumulatedOffset = 0;\n gs.prevTranslationY = 0;\n gs.scrollEngaged = currentScrollY > 0;\n gs.frozenPositions = [\n ...positions\n ];\n gs.frozenMinY = minY;\n gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;\n gs.startedBelowTop = !atTop;\n gs.upwardDragAfterTop = 0;\n gs.scrollUnlockedAfterTop = false;\n gs.keepScrollLockedAfterEnd = false;\n scrollBridge.lockScrollAtTop = false;\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n if (!atTop) {\n var _scrollBridge_setScrollEnabled;\n (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);\n }\n }).onStart(function() {\n gs.panStarted = true;\n setIsDragging(true);\n scrollBridge.initialPosition = gs.startY;\n onStart();\n }).onChange(function(event) {\n var { translationY } = event;\n var isSwipingDown = gs.prevTranslationY < translationY;\n var deltaY = translationY - gs.prevTranslationY;\n gs.prevTranslationY = translationY;\n var scrollY = scrollBridge.y;\n if (scrollY > 0) {\n gs.scrollEngaged = true;\n }\n var currentPos = gs.startY + gs.accumulatedOffset;\n var isCurrentlyAtTop = currentPos <= minY + AT_TOP_THRESHOLD;\n var nodeIsScrolling = scrollY > 0;\n var panHandles = false;\n var hasScrollableContent = scrollBridge.hasScrollableContent !== false;\n if (!isCurrentlyAtTop) {\n if (isSwipingDown) {\n panHandles = !nodeIsScrolling || !hasScrollableContent;\n } else {\n panHandles = true;\n }\n } else {\n if (isSwipingDown) {\n if (nodeIsScrolling && hasScrollableContent) {\n panHandles = false;\n } else if (gs.scrollEngaged && hasScrollableContent) {\n panHandles = true;\n } else {\n panHandles = true;\n }\n } else {\n if (hasScrollableContent) {\n if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {\n gs.upwardDragAfterTop += Math.max(0, -deltaY);\n if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {\n gs.scrollUnlockedAfterTop = true;\n panHandles = false;\n } else {\n panHandles = true;\n }\n } else {\n panHandles = false;\n }\n } else {\n panHandles = true;\n }\n }\n }\n if (panHandles) {\n var _scrollBridge_setScrollEnabled;\n scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;\n var lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;\n (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, lockTo);\n gs.accumulatedOffset += deltaY;\n var newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);\n scrollBridge.paneY = newPosition;\n setAnimatedPosition(newPosition);\n scrollBridge.setParentDragging(newPosition > minY);\n } else {\n var _scrollBridge_setScrollEnabled1;\n scrollBridge.lockScrollAtTop = false;\n (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);\n scrollBridge.setParentDragging(false);\n }\n }).onEnd(function(event) {\n var { velocityY } = event;\n var currentPos = gs.startY + gs.accumulatedOffset;\n var keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;\n gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;\n var snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;\n var snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;\n if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {\n onEnd(0, void 0, keepScrollLockedAfterEnd);\n return;\n }\n var velocity = velocityY / 1e3;\n var projectedEnd = currentPos + frameSize * velocity * 0.2;\n var releaseConfig = releaseConfigRef.current;\n var closestPoint = getSheetReleasePosition({\n positions: snapPositions,\n projectedEnd,\n currentPosition: currentPos,\n frameSize,\n dismissOnSnapToBottom: releaseConfig.dismissOnSnapToBottom,\n snapPointsMode: releaseConfig.snapPointsMode,\n isKeyboardVisible: gs.frozenIsKeyboardVisible,\n isWeb\n });\n onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);\n }).onFinalize(function() {\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;\n if (gs.panStarted) {\n setIsDragging(false);\n } else {\n if (config.pauseKeyboardHandler) {\n config.pauseKeyboardHandler.current = false;\n }\n }\n }).runOnJS(true);\n if (scrollGestureRef === null || scrollGestureRef === void 0 ? void 0 : scrollGestureRef.current) {\n return gesture.simultaneousWithExternalGesture(scrollGestureRef.current);\n }\n return gesture;\n }, [\n gestureHandlerEnabled,\n disableDrag,\n isShowingInnerSheet,\n frameSize,\n positions,\n scrollBridge,\n getCurrentPosition,\n resisted,\n onStart,\n onEnd,\n setIsDragging,\n setAnimatedPosition\n ]);\n return {\n panGesture,\n panGestureRef,\n gestureHandlerEnabled\n };\n}\nexport {\n useGestureHandlerPan\n};\n//# sourceMappingURL=useGestureHandlerPan.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGestureHandlerPan.native.js","names":[],"sources":["esm/useGestureHandlerPan.native.js"],"sourcesContent":["import { isWeb } from \"@tamagui/constants\";\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { getGestureHandlerState, isGestureHandlerEnabled } from \"./gestureState\";\nimport { getSheetReleasePosition } from \"./keyboardAvoidance\";\nvar AT_TOP_THRESHOLD = 5;\nvar SCROLL_HANDOFF_THRESHOLD = 160;\nfunction useGestureHandlerPan(config) {\n var { positions, frameSize, setPosition, animateTo, stopSpring, scrollBridge, setIsDragging, getCurrentPosition, resisted, disableDrag, isShowingInnerSheet, setAnimatedPosition, scrollGestureRef } = config;\n var gestureHandlerEnabled = isGestureHandlerEnabled();\n var panGestureRef = useRef(null);\n var _config_snapPointsMode;\n var releaseConfigRef = useRef({\n dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,\n snapPointsMode: (_config_snapPointsMode = config.snapPointsMode) !== null && _config_snapPointsMode !== void 0 ? _config_snapPointsMode : \"percent\",\n isKeyboardVisible: config.isKeyboardVisible === true\n });\n var _config_snapPointsMode1;\n releaseConfigRef.current = {\n dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,\n snapPointsMode: (_config_snapPointsMode1 = config.snapPointsMode) !== null && _config_snapPointsMode1 !== void 0 ? _config_snapPointsMode1 : \"percent\",\n isKeyboardVisible: config.isKeyboardVisible === true\n };\n var gestureStateRef = useRef({\n startY: 0,\n // track last translation when pan was active (for position calculation after handoff)\n lastPanTranslationY: 0,\n // accumulated position offset from all pan movements\n accumulatedOffset: 0,\n // track previous translation for direction detection (like actions-sheet)\n prevTranslationY: 0,\n // track if scroll was engaged (scrollY > 0) at some point\n scrollEngaged: false,\n // positions frozen at gesture start — keyboard may dismiss during drag (input blur),\n // causing positions to revert. Frozen positions ensure stable snap calculation.\n frozenPositions: [],\n frozenMinY: 0,\n frozenIsKeyboardVisible: false,\n // whether pan gesture actually started (vs just a tap in onBegin)\n panStarted: false,\n startedBelowTop: false,\n upwardDragAfterTop: 0,\n scrollUnlockedAfterTop: false,\n keepScrollLockedAfterEnd: false\n });\n var unlockScrollTimer = useRef(null);\n useEffect(function() {\n return function() {\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n };\n }, []);\n var onStart = useCallback(function() {\n stopSpring();\n }, [\n stopSpring\n ]);\n var onEnd = useCallback(function(closestPoint, animationOverride) {\n var keepScrollLocked = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n setIsDragging(false);\n scrollBridge.setParentDragging(false);\n scrollBridge.lockScrollAtTop = false;\n if (keepScrollLocked) {\n var _scrollBridge_setScrollEnabled;\n (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);\n unlockScrollTimer.current = setTimeout(function() {\n var _scrollBridge_setScrollEnabled2;\n unlockScrollTimer.current = null;\n (_scrollBridge_setScrollEnabled2 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled2 === void 0 ? void 0 : _scrollBridge_setScrollEnabled2.call(scrollBridge, true);\n }, 160);\n } else {\n var _scrollBridge_setScrollEnabled1;\n (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);\n }\n setPosition(closestPoint);\n animateTo(closestPoint, animationOverride);\n }, [\n setIsDragging,\n scrollBridge,\n setPosition,\n animateTo\n ]);\n var panGesture = useMemo(function() {\n if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) {\n return null;\n }\n var { Gesture } = getGestureHandlerState();\n if (!Gesture) {\n return null;\n }\n var minY = positions[0];\n var gs = gestureStateRef.current;\n var gesture = Gesture.Pan().withRef(panGestureRef).activeOffsetY([\n -10,\n 10\n ]).failOffsetX([\n -20,\n 20\n ]).shouldCancelWhenOutside(false).onBegin(function() {\n gs.panStarted = false;\n if (config.pauseKeyboardHandler) {\n config.pauseKeyboardHandler.current = true;\n }\n var pos = getCurrentPosition();\n var atTop = pos <= minY + AT_TOP_THRESHOLD;\n var currentScrollY = scrollBridge.y;\n gs.startY = pos;\n gs.lastPanTranslationY = 0;\n gs.accumulatedOffset = 0;\n gs.prevTranslationY = 0;\n gs.scrollEngaged = currentScrollY > 0;\n gs.frozenPositions = [\n ...positions\n ];\n gs.frozenMinY = minY;\n gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;\n gs.startedBelowTop = !atTop;\n gs.upwardDragAfterTop = 0;\n gs.scrollUnlockedAfterTop = false;\n gs.keepScrollLockedAfterEnd = false;\n scrollBridge.lockScrollAtTop = false;\n if (unlockScrollTimer.current) {\n clearTimeout(unlockScrollTimer.current);\n unlockScrollTimer.current = null;\n }\n if (!atTop) {\n var _scrollBridge_setScrollEnabled;\n (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);\n }\n }).onStart(function() {\n gs.panStarted = true;\n setIsDragging(true);\n scrollBridge.initialPosition = gs.startY;\n onStart();\n }).onChange(function(event) {\n var { translationY } = event;\n var isSwipingDown = gs.prevTranslationY < translationY;\n var deltaY = translationY - gs.prevTranslationY;\n gs.prevTranslationY = translationY;\n var scrollY = scrollBridge.y;\n if (scrollY > 0) {\n gs.scrollEngaged = true;\n }\n var currentPos = gs.startY + gs.accumulatedOffset;\n var isCurrentlyAtTop = currentPos <= minY + AT_TOP_THRESHOLD;\n var nodeIsScrolling = scrollY > 0;\n var panHandles = false;\n var hasScrollableContent = scrollBridge.hasScrollableContent !== false;\n if (!isCurrentlyAtTop) {\n if (isSwipingDown) {\n panHandles = !nodeIsScrolling || !hasScrollableContent;\n } else {\n panHandles = true;\n }\n } else {\n if (isSwipingDown) {\n if (nodeIsScrolling && hasScrollableContent) {\n panHandles = false;\n } else if (gs.scrollEngaged && hasScrollableContent) {\n panHandles = true;\n } else {\n panHandles = true;\n }\n } else {\n if (hasScrollableContent) {\n if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {\n gs.upwardDragAfterTop += Math.max(0, -deltaY);\n if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {\n gs.scrollUnlockedAfterTop = true;\n panHandles = false;\n } else {\n panHandles = true;\n }\n } else {\n panHandles = false;\n }\n } else {\n panHandles = true;\n }\n }\n }\n if (panHandles) {\n var _scrollBridge_setScrollEnabled;\n scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;\n var lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;\n (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, lockTo);\n gs.accumulatedOffset += deltaY;\n var newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);\n scrollBridge.paneY = newPosition;\n setAnimatedPosition(newPosition);\n scrollBridge.setParentDragging(newPosition > minY);\n } else {\n var _scrollBridge_setScrollEnabled1;\n scrollBridge.lockScrollAtTop = false;\n (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);\n scrollBridge.setParentDragging(false);\n }\n }).onEnd(function(event) {\n var { velocityY } = event;\n var currentPos = gs.startY + gs.accumulatedOffset;\n var keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;\n gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;\n var snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;\n var snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;\n if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {\n onEnd(0, void 0, keepScrollLockedAfterEnd);\n return;\n }\n var velocity = velocityY / 1e3;\n var projectedEnd = currentPos + frameSize * velocity * 0.2;\n var releaseConfig = releaseConfigRef.current;\n var closestPoint = getSheetReleasePosition({\n positions: snapPositions,\n projectedEnd,\n currentPosition: currentPos,\n frameSize,\n dismissOnSnapToBottom: releaseConfig.dismissOnSnapToBottom,\n snapPointsMode: releaseConfig.snapPointsMode,\n isKeyboardVisible: gs.frozenIsKeyboardVisible,\n isWeb\n });\n onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);\n }).onFinalize(function() {\n scrollBridge.lockScrollAtTop = false;\n scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;\n if (gs.panStarted) {\n setIsDragging(false);\n } else {\n if (config.pauseKeyboardHandler) {\n config.pauseKeyboardHandler.current = false;\n }\n }\n }).runOnJS(true);\n if (scrollGestureRef === null || scrollGestureRef === void 0 ? void 0 : scrollGestureRef.current) {\n return gesture.simultaneousWithExternalGesture(scrollGestureRef.current);\n }\n return gesture;\n }, [\n gestureHandlerEnabled,\n disableDrag,\n isShowingInnerSheet,\n frameSize,\n positions,\n scrollBridge,\n getCurrentPosition,\n resisted,\n onStart,\n onEnd,\n setIsDragging,\n setAnimatedPosition\n ]);\n return {\n panGesture,\n panGestureRef,\n gestureHandlerEnabled\n };\n}\nexport {\n useGestureHandlerPan\n};\n//# sourceMappingURL=useGestureHandlerPan.js.map\n"],"mappings":"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"}
|