UNPKG

@kietpt2003/react-native-core-ui

Version:
37 lines (36 loc) 1.55 kB
import { jsx as _jsx } from "react/jsx-runtime"; import React from "react"; import { useSharedValue } from "react-native-reanimated"; const NestableScrollContainerContext = React.createContext(undefined); function useSetupNestableScrollContextValue({ forwardedRef, }) { const [outerScrollEnabled, setOuterScrollEnabled] = React.useState(true); const scrollViewSize = useSharedValue(0); const scrollableRefInner = React.useRef(null); const scrollableRef = forwardedRef || scrollableRefInner; const outerScrollOffset = useSharedValue(0); const containerSize = useSharedValue(0); const contextVal = React.useMemo(() => ({ outerScrollEnabled, setOuterScrollEnabled, outerScrollOffset, scrollViewSize, scrollableRef, containerSize, }), [outerScrollEnabled]); return contextVal; } export function NestableScrollContainerProvider({ children, forwardedRef, }) { const contextVal = useSetupNestableScrollContextValue({ forwardedRef }); return (_jsx(NestableScrollContainerContext.Provider, { value: contextVal, children: children })); } export function useNestableScrollContainerContext() { const value = React.useContext(NestableScrollContainerContext); return value; } export function useSafeNestableScrollContainerContext() { const value = useNestableScrollContainerContext(); if (!value) { throw new Error("useSafeNestableScrollContainerContext must be called within a NestableScrollContainerContext.Provider"); } return value; }