import type { TypedDocumentNode } from '@apollo/client' import type { useLazyQuery } from '@apollo/client/react' import { useLazyQuery as useLazyQueryHook } from '@apollo/client/react' import type { FieldValues } from 'react-hook-form' import { useForm } from 'react-hook-form' import type { UseFormGraphQlOptions } from './useFormGql' import { useFormGql } from './useFormGql' import { type UseFormGqlMutationReturn } from './useFormGqlMutation' export type UseFormGqlQueryReturn< Q extends Record, V extends FieldValues, > = UseFormGqlMutationReturn export function useFormGqlQuery, V extends FieldValues>( document: TypedDocumentNode, options: UseFormGraphQlOptions = {}, operationOptions?: useLazyQuery.Options, ): UseFormGqlQueryReturn { const form = useForm(options) const tuple = useLazyQueryHook(document, { ...operationOptions }) const operation = useFormGql({ document, form, tuple, operationOptions, ...options }) return { ...form, ...operation } }