import React from 'react'; import { useForm as useReactHookForm, FormProvider as ReactHookFormProvider, } from 'react-hook-form'; import type { FormValues, FormHandle, FormProviderProps } from './types'; const DEFAULT_MODE = 'onTouched'; const FormProvider = React.forwardRef< FormHandle, FormProviderProps >(function FormProvider( { children, defaultValues, mode = DEFAULT_MODE }: FormProviderProps, ref: React.ForwardedRef> ) { const formProviderProps = useReactHookForm({ defaultValues, mode, }); const { getValues, reset } = formProviderProps; React.useImperativeHandle( ref, () => ({ getValues, reset: () => reset(defaultValues) }), [defaultValues, getValues, reset] ); return ( {children} ); }); export default FormProvider;