/** * Copyright (c) Paymium. * * This source code is licensed under the MIT license found in the * LICENSE file in the root of this projects source tree. */ import { useUncontrolled } from '@crossed/core'; import { forwardRef, type PropsWithChildren, useCallback, useRef } from 'react'; import { type SheetContext, sheetContext } from './context'; import { useSharedValue } from 'react-native-reanimated'; import { ActionSheetRef } from '@crossed/sheet'; export type SheetProps = PropsWithChildren<{ open?: boolean; defaultValue?: boolean; onOpenChange?: (_value: boolean) => void; offset?: number; }> & Pick; export const Root = forwardRef( ( { open: openProps, defaultValue: defaultValueProps = false, onOpenChange, children, dismissOnOverlayPress = true, hideHandle, offset = 20, }, ref ) => { const [open, setOpen] = useUncontrolled({ value: openProps, defaultValue: defaultValueProps, onChange: onOpenChange, }); const isMove = useSharedValue(false); const height = useSharedValue(0); const snapInitialHeight = useSharedValue(0); const onClose = useCallback(() => { setOpen(false); height.value = 0; }, [setOpen, height]); const actionSheetRef = useRef(null); return ( {children} ); } );