{"version":3,"file":"index.esm.mjs","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isDateObject.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getEventValue.ts","../src/logic/getNodeParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/compact.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/constants.ts","../src/useFormContext.tsx","../src/logic/getProxyFormState.ts","../src/utils/isEmptyObject.ts","../src/logic/shouldRenderFormState.ts","../src/utils/convertToArrayPayload.ts","../src/logic/shouldSubscribeByName.ts","../src/useSubscribe.ts","../src/useFormState.ts","../src/utils/isString.ts","../src/logic/generateWatchOutput.ts","../src/utils/isFunction.ts","../src/utils/objectHasFunction.ts","../src/useWatch.ts","../src/useController.ts","../src/controller.tsx","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/generateId.ts","../src/logic/getFocusFieldName.ts","../src/logic/isWatched.ts","../src/logic/updateFieldArrayRootError.ts","../src/utils/isBoolean.ts","../src/utils/isFileInput.ts","../src/utils/isMessage.ts","../src/utils/isRadioInput.ts","../src/utils/isRegex.ts","../src/logic/getCheckboxValue.ts","../src/logic/getRadioValue.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/utils/append.ts","../src/utils/isWeb.ts","../src/utils/cloneObject.ts","../src/utils/fillEmptyArray.ts","../src/utils/getValidationModes.ts","../src/utils/insert.ts","../src/utils/move.ts","../src/utils/prepend.ts","../src/utils/remove.ts","../src/utils/swap.ts","../src/utils/unset.ts","../src/utils/update.ts","../src/useFieldArray.ts","../src/utils/createSubject.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/utils/isHTMLElement.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/live.ts","../src/logic/getDirtyFields.ts","../src/logic/getFieldValueAs.ts","../src/logic/getFieldValue.ts","../src/logic/getResolverOptions.ts","../src/logic/getRuleValue.ts","../src/logic/hasValidation.ts","../src/logic/schemaErrorLookup.ts","../src/logic/skipValidation.ts","../src/logic/unsetEmptyArray.ts","../src/logic/createFormControl.ts","../src/useForm.ts"],"sourcesContent":["import { FieldElement } from '../types';\r\n\r\nexport default (element: FieldElement): element is HTMLInputElement =>\r\n  element.type === 'checkbox';\r\n","export default (value: unknown): value is Date => value instanceof Date;\r\n","export default (value: unknown): value is null | undefined => value == null;\r\n","import isDateObject from './isDateObject';\r\nimport isNullOrUndefined from './isNullOrUndefined';\r\n\r\nexport const isObjectType = (value: unknown) => typeof value === 'object';\r\n\r\nexport default <T extends object>(value: unknown): value is T =>\r\n  !isNullOrUndefined(value) &&\r\n  !Array.isArray(value) &&\r\n  isObjectType(value) &&\r\n  !isDateObject(value);\r\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\r\nimport isObject from '../utils/isObject';\r\n\r\ntype Event = { target: any };\r\n\r\nexport default (event: unknown) =>\r\n  isObject(event) && (event as Event).target\r\n    ? isCheckBoxInput((event as Event).target)\r\n      ? (event as Event).target.checked\r\n      : (event as Event).target.value\r\n    : event;\r\n","export default (name: string) =>\r\n  name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\r\n","import { InternalFieldName } from '../types';\r\n\r\nimport getNodeParentName from './getNodeParentName';\r\n\r\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\r\n  names.has(getNodeParentName(name));\r\n","export default <TValue>(value: TValue[]) =>\r\n  Array.isArray(value) ? value.filter(Boolean) : [];\r\n","export default (val: unknown): val is undefined => val === undefined;\r\n","import compact from './compact';\r\nimport isNullOrUndefined from './isNullOrUndefined';\r\nimport isObject from './isObject';\r\nimport isUndefined from './isUndefined';\r\n\r\nexport default <T>(obj: T, path: string, defaultValue?: unknown): any => {\r\n  if (!path || !isObject(obj)) {\r\n    return defaultValue;\r\n  }\r\n\r\n  const result = compact(path.split(/[,[\\].]+?/)).reduce(\r\n    (result, key) =>\r\n      isNullOrUndefined(result) ? result : result[key as keyof {}],\r\n    obj,\r\n  );\r\n\r\n  return isUndefined(result) || result === obj\r\n    ? isUndefined(obj[path as keyof T])\r\n      ? defaultValue\r\n      : obj[path as keyof T]\r\n    : result;\r\n};\r\n","import { ValidationMode } from './types';\r\n\r\nexport const EVENTS = {\r\n  BLUR: 'blur',\r\n  FOCUS_OUT: 'focusout',\r\n  CHANGE: 'change',\r\n};\r\n\r\nexport const VALIDATION_MODE: ValidationMode = {\r\n  onBlur: 'onBlur',\r\n  onChange: 'onChange',\r\n  onSubmit: 'onSubmit',\r\n  onTouched: 'onTouched',\r\n  all: 'all',\r\n};\r\n\r\nexport const INPUT_VALIDATION_RULES = {\r\n  max: 'max',\r\n  min: 'min',\r\n  maxLength: 'maxLength',\r\n  minLength: 'minLength',\r\n  pattern: 'pattern',\r\n  required: 'required',\r\n  validate: 'validate',\r\n};\r\n","import React from 'react';\r\n\r\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\r\n\r\nconst HookFormContext = React.createContext<UseFormReturn | null>(null);\r\n\r\n/**\r\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @returns return all useForm methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n *   const methods = useForm();\r\n *   const onSubmit = data => console.log(data);\r\n *\r\n *   return (\r\n *     <FormProvider {...methods} >\r\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\r\n *         <NestedInput />\r\n *         <input type=\"submit\" />\r\n *       </form>\r\n *     </FormProvider>\r\n *   );\r\n * }\r\n *\r\n *  function NestedInput() {\r\n *   const { register } = useFormContext(); // retrieve all hook methods\r\n *   return <input {...register(\"test\")} />;\r\n * }\r\n * ```\r\n */\r\nexport const useFormContext = <\r\n  TFieldValues extends FieldValues,\r\n>(): UseFormReturn<TFieldValues> =>\r\n  React.useContext(HookFormContext) as unknown as UseFormReturn<TFieldValues>;\r\n\r\n/**\r\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @param props - all useFrom methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n *   const methods = useForm();\r\n *   const onSubmit = data => console.log(data);\r\n *\r\n *   return (\r\n *     <FormProvider {...methods} >\r\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\r\n *         <NestedInput />\r\n *         <input type=\"submit\" />\r\n *       </form>\r\n *     </FormProvider>\r\n *   );\r\n * }\r\n *\r\n *  function NestedInput() {\r\n *   const { register } = useFormContext(); // retrieve all hook methods\r\n *   return <input {...register(\"test\")} />;\r\n * }\r\n * ```\r\n */\r\nexport const FormProvider = <TFieldValues extends FieldValues, TContext = any>(\r\n  props: FormProviderProps<TFieldValues, TContext>,\r\n) => {\r\n  const { children, ...data } = props;\r\n  return (\r\n    <HookFormContext.Provider value={data as unknown as UseFormReturn}>\r\n      {children}\r\n    </HookFormContext.Provider>\r\n  );\r\n};\r\n","import { VALIDATION_MODE } from '../constants';\r\nimport { FieldValues, FormState, ReadFormState } from '../types';\r\n\r\nexport default <TFieldValues extends FieldValues>(\r\n  formState: FormState<TFieldValues>,\r\n  _proxyFormState: ReadFormState,\r\n  localProxyFormState?: ReadFormState,\r\n  isRoot = true,\r\n) => {\r\n  const result = {} as typeof formState;\r\n\r\n  for (const key in formState) {\r\n    Object.defineProperty(result, key, {\r\n      get: () => {\r\n        const _key = key as keyof FormState<TFieldValues> & keyof ReadFormState;\r\n\r\n        if (_proxyFormState[_key] !== VALIDATION_MODE.all) {\r\n          _proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\r\n        }\r\n\r\n        localProxyFormState && (localProxyFormState[_key] = true);\r\n        return formState[_key];\r\n      },\r\n    });\r\n  }\r\n\r\n  return result;\r\n};\r\n","import { EmptyObject } from '../types';\r\n\r\nimport isObject from './isObject';\r\n\r\nexport default (value: unknown): value is EmptyObject =>\r\n  isObject(value) && !Object.keys(value).length;\r\n","import { VALIDATION_MODE } from '../constants';\r\nimport { ReadFormState } from '../types';\r\nimport isEmptyObject from '../utils/isEmptyObject';\r\n\r\nexport default <T extends Record<string, any>, K extends ReadFormState>(\r\n  formStateData: T,\r\n  _proxyFormState: K,\r\n  isRoot?: boolean,\r\n) => {\r\n  const { name, ...formState } = formStateData;\r\n\r\n  return (\r\n    isEmptyObject(formState) ||\r\n    Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\r\n    Object.keys(formState).find(\r\n      (key) =>\r\n        _proxyFormState[key as keyof ReadFormState] ===\r\n        (!isRoot || VALIDATION_MODE.all),\r\n    )\r\n  );\r\n};\r\n","export default <T>(value: T) => (Array.isArray(value) ? value : [value]);\r\n","import convertToArrayPayload from '../utils/convertToArrayPayload';\r\n\r\nexport default <T extends string | string[] | undefined>(\r\n  name?: T,\r\n  signalName?: string,\r\n  exact?: boolean,\r\n) =>\r\n  exact && signalName\r\n    ? name === signalName\r\n    : !name ||\r\n      !signalName ||\r\n      name === signalName ||\r\n      convertToArrayPayload(name).some(\r\n        (currentName) =>\r\n          currentName &&\r\n          (currentName.startsWith(signalName) ||\r\n            signalName.startsWith(currentName)),\r\n      );\r\n","import React from 'react';\r\n\r\nimport { Subject, Subscription } from './utils/createSubject';\r\n\r\ntype Props<T> = {\r\n  disabled?: boolean;\r\n  subject: Subject<T>;\r\n  callback: (value: T) => void;\r\n};\r\n\r\nexport function useSubscribe<T>(props: Props<T>) {\r\n  const _props = React.useRef(props);\r\n  _props.current = props;\r\n\r\n  React.useEffect(() => {\r\n    const tearDown = (subscription: Subscription | false) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    };\r\n\r\n    const subscription =\r\n      !props.disabled &&\r\n      _props.current.subject.subscribe({\r\n        next: _props.current.callback,\r\n      });\r\n\r\n    return () => tearDown(subscription);\r\n  }, [props.disabled]);\r\n}\r\n","import React from 'react';\r\n\r\nimport getProxyFormState from './logic/getProxyFormState';\r\nimport shouldRenderFormState from './logic/shouldRenderFormState';\r\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\r\nimport {\r\n  FieldValues,\r\n  InternalFieldName,\r\n  UseFormStateProps,\r\n  UseFormStateReturn,\r\n} from './types';\r\nimport { useFormContext } from './useFormContext';\r\nimport { useSubscribe } from './useSubscribe';\r\n\r\n/**\r\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\r\n *\r\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n *   const { register, handleSubmit, control } = useForm({\r\n *     defaultValues: {\r\n *     firstName: \"firstName\"\r\n *   }});\r\n *   const { dirtyFields } = useFormState({\r\n *     control\r\n *   });\r\n *   const onSubmit = (data) => console.log(data);\r\n *\r\n *   return (\r\n *     <form onSubmit={handleSubmit(onSubmit)}>\r\n *       <input {...register(\"firstName\")} placeholder=\"First Name\" />\r\n *       {dirtyFields.firstName && <p>Field is dirty.</p>}\r\n *       <input type=\"submit\" />\r\n *     </form>\r\n *   );\r\n * }\r\n * ```\r\n */\r\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\r\n  props?: UseFormStateProps<TFieldValues>,\r\n): UseFormStateReturn<TFieldValues> {\r\n  const methods = useFormContext<TFieldValues>();\r\n  const { control = methods.control, disabled, name, exact } = props || {};\r\n  const [formState, updateFormState] = React.useState(control._formState);\r\n  const _localProxyFormState = React.useRef({\r\n    isDirty: false,\r\n    dirtyFields: false,\r\n    touchedFields: false,\r\n    isValidating: false,\r\n    isValid: false,\r\n    errors: false,\r\n  });\r\n  const _name = React.useRef(name);\r\n  const _mounted = React.useRef(true);\r\n\r\n  _name.current = name;\r\n\r\n  const callback = React.useCallback(\r\n    (value: { name?: InternalFieldName }) =>\r\n      _mounted.current &&\r\n      shouldSubscribeByName(\r\n        _name.current as InternalFieldName,\r\n        value.name,\r\n        exact,\r\n      ) &&\r\n      shouldRenderFormState(value, _localProxyFormState.current) &&\r\n      updateFormState({\r\n        ...control._formState,\r\n        ...value,\r\n      }),\r\n    [control, exact],\r\n  );\r\n\r\n  useSubscribe({\r\n    disabled,\r\n    callback,\r\n    subject: control._subjects.state,\r\n  });\r\n\r\n  React.useEffect(() => {\r\n    _mounted.current = true;\r\n    return () => {\r\n      _mounted.current = false;\r\n    };\r\n  }, []);\r\n\r\n  return getProxyFormState(\r\n    formState,\r\n    control._proxyFormState,\r\n    _localProxyFormState.current,\r\n    false,\r\n  );\r\n}\r\n\r\nexport { useFormState };\r\n","export default (value: unknown): value is string => typeof value === 'string';\r\n","import { FieldValues, InternalFieldName, Names } from '../types';\r\nimport get from '../utils/get';\r\nimport isString from '../utils/isString';\r\n\r\nexport default (\r\n  names: string | string[] | undefined,\r\n  _names: Names,\r\n  formValues?: FieldValues,\r\n  isGlobal?: boolean,\r\n) => {\r\n  const isArray = Array.isArray(names);\r\n  if (isString(names)) {\r\n    isGlobal && _names.watch.add(names as InternalFieldName);\r\n    return get(formValues, names as InternalFieldName);\r\n  }\r\n\r\n  if (isArray) {\r\n    return names.map(\r\n      (fieldName) => (\r\n        isGlobal && _names.watch.add(fieldName as InternalFieldName),\r\n        get(formValues, fieldName as InternalFieldName)\r\n      ),\r\n    );\r\n  }\r\n\r\n  isGlobal && (_names.watchAll = true);\r\n  return formValues;\r\n};\r\n","export default (value: unknown): value is Function =>\r\n  typeof value === 'function';\r\n","import isFunction from './isFunction';\r\n\r\nexport default <T>(data: T): boolean => {\r\n  for (const key in data) {\r\n    if (isFunction(data[key])) {\r\n      return true;\r\n    }\r\n  }\r\n  return false;\r\n};\r\n","import React from 'react';\r\n\r\nimport generateWatchOutput from './logic/generateWatchOutput';\r\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\r\nimport isObject from './utils/isObject';\r\nimport isUndefined from './utils/isUndefined';\r\nimport objectHasFunction from './utils/objectHasFunction';\r\nimport {\r\n  Control,\r\n  DeepPartialSkipArrayKey,\r\n  FieldPath,\r\n  FieldPathValue,\r\n  FieldPathValues,\r\n  FieldValues,\r\n  InternalFieldName,\r\n  UnpackNestedValue,\r\n  UseWatchProps,\r\n} from './types';\r\nimport { useFormContext } from './useFormContext';\r\nimport { useSubscribe } from './useSubscribe';\r\n\r\n/**\r\n * Subscribe to the entire form values change and re-render at the hook level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @param props - defaultValue, disable subscription and match exact name.\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n *   control,\r\n *   defaultValue: {\r\n *     name: \"data\"\r\n *   },\r\n *   exact: false,\r\n * })\r\n * ```\r\n */\r\nexport function useWatch<\r\n  TFieldValues extends FieldValues = FieldValues,\r\n>(props: {\r\n  defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\r\n  control?: Control<TFieldValues>;\r\n  disabled?: boolean;\r\n  exact?: boolean;\r\n}): DeepPartialSkipArrayKey<TFieldValues>;\r\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @param props - defaultValue, disable subscription and match exact name.\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n *   control,\r\n *   name: \"fieldA\",\r\n *   defaultValue: \"default value\",\r\n *   exact: false,\r\n * })\r\n * ```\r\n */\r\nexport function useWatch<\r\n  TFieldValues extends FieldValues = FieldValues,\r\n  TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n>(props: {\r\n  name: TFieldName;\r\n  defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\r\n  control?: Control<TFieldValues>;\r\n  disabled?: boolean;\r\n  exact?: boolean;\r\n}): FieldPathValue<TFieldValues, TFieldName>;\r\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @param props - defaultValue, disable subscription and match exact name.\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n *   control,\r\n *   name: [\"fieldA\", \"fieldB\"],\r\n *   defaultValue: {\r\n *     fieldA: \"data\",\r\n *     fieldB: \"data\"\r\n *   },\r\n *   exact: false,\r\n * })\r\n * ```\r\n */\r\nexport function useWatch<\r\n  TFieldValues extends FieldValues = FieldValues,\r\n  TFieldNames extends readonly FieldPath<TFieldValues>[] = readonly FieldPath<TFieldValues>[],\r\n>(props: {\r\n  name: readonly [...TFieldNames];\r\n  defaultValue?: UnpackNestedValue<DeepPartialSkipArrayKey<TFieldValues>>;\r\n  control?: Control<TFieldValues>;\r\n  disabled?: boolean;\r\n  exact?: boolean;\r\n}): FieldPathValues<TFieldValues, TFieldNames>;\r\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @example\r\n * ```tsx\r\n * // can skip passing down the control into useWatch if the form is wrapped with the FormProvider\r\n * const values = useWatch()\r\n * ```\r\n */\r\nexport function useWatch<\r\n  TFieldValues extends FieldValues = FieldValues,\r\n>(): DeepPartialSkipArrayKey<TFieldValues>;\r\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n *   name: \"fieldName\"\r\n *   control,\r\n * })\r\n * ```\r\n */\r\nexport function useWatch<TFieldValues extends FieldValues>(\r\n  props?: UseWatchProps<TFieldValues>,\r\n) {\r\n  const methods = useFormContext();\r\n  const {\r\n    control = methods.control,\r\n    name,\r\n    defaultValue,\r\n    disabled,\r\n    exact,\r\n  } = props || {};\r\n  const _name = React.useRef(name);\r\n\r\n  _name.current = name;\r\n\r\n  const callback = React.useCallback(\r\n    (formState: { name?: InternalFieldName; values?: FieldValues }) => {\r\n      if (\r\n        shouldSubscribeByName(\r\n          _name.current as InternalFieldName,\r\n          formState.name,\r\n          exact,\r\n        )\r\n      ) {\r\n        const fieldValues = generateWatchOutput(\r\n          _name.current as InternalFieldName | InternalFieldName[],\r\n          control._names,\r\n          formState.values || control._formValues,\r\n        );\r\n\r\n        updateValue(\r\n          isUndefined(_name.current) ||\r\n            (isObject(fieldValues) && !objectHasFunction(fieldValues))\r\n            ? { ...fieldValues }\r\n            : Array.isArray(fieldValues)\r\n            ? [...fieldValues]\r\n            : isUndefined(fieldValues)\r\n            ? defaultValue\r\n            : fieldValues,\r\n        );\r\n      }\r\n    },\r\n    [control, exact, defaultValue],\r\n  );\r\n\r\n  useSubscribe({\r\n    disabled,\r\n    subject: control._subjects.watch,\r\n    callback,\r\n  });\r\n\r\n  const [value, updateValue] = React.useState<unknown>(\r\n    isUndefined(defaultValue)\r\n      ? control._getWatch(name as InternalFieldName)\r\n      : defaultValue,\r\n  );\r\n\r\n  React.useEffect(() => {\r\n    control._removeUnmounted();\r\n  });\r\n\r\n  return value;\r\n}\r\n","import React from 'react';\r\n\r\nimport getEventValue from './logic/getEventValue';\r\nimport isNameInFieldArray from './logic/isNameInFieldArray';\r\nimport get from './utils/get';\r\nimport { EVENTS } from './constants';\r\nimport {\r\n  ControllerFieldState,\r\n  Field,\r\n  FieldPath,\r\n  FieldPathValue,\r\n  FieldValues,\r\n  InternalFieldName,\r\n  UseControllerProps,\r\n  UseControllerReturn,\r\n} from './types';\r\nimport { useFormContext } from './useFormContext';\r\nimport { useFormState } from './useFormState';\r\nimport { useWatch } from './useWatch';\r\n\r\n/**\r\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns field properties, field and form state. {@link UseControllerReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function Input(props) {\r\n *   const { field, fieldState, formState } = useController(props);\r\n *   return (\r\n *     <div>\r\n *       <input {...field} placeholder={props.name} />\r\n *       <p>{fieldState.isTouched && \"Touched\"}</p>\r\n *       <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\r\n *     </div>\r\n *   );\r\n * }\r\n * ```\r\n */\r\nexport function useController<\r\n  TFieldValues extends FieldValues = FieldValues,\r\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n>(\r\n  props: UseControllerProps<TFieldValues, TName>,\r\n): UseControllerReturn<TFieldValues, TName> {\r\n  const methods = useFormContext<TFieldValues>();\r\n  const { name, control = methods.control, shouldUnregister } = props;\r\n  const isArrayField = isNameInFieldArray(control._names.array, name);\r\n  const value = useWatch({\r\n    control,\r\n    name,\r\n    defaultValue: get(\r\n      control._formValues,\r\n      name,\r\n      get(control._defaultValues, name, props.defaultValue),\r\n    ),\r\n    exact: true,\r\n  }) as FieldPathValue<TFieldValues, TName>;\r\n  const formState = useFormState({\r\n    control,\r\n    name,\r\n  });\r\n\r\n  const _registerProps = React.useRef(\r\n    control.register(name, {\r\n      ...props.rules,\r\n      value,\r\n    }),\r\n  );\r\n\r\n  React.useEffect(() => {\r\n    const updateMounted = (name: InternalFieldName, value: boolean) => {\r\n      const field: Field = get(control._fields, name);\r\n\r\n      if (field) {\r\n        field._f.mount = value;\r\n      }\r\n    };\r\n\r\n    updateMounted(name, true);\r\n\r\n    return () => {\r\n      const _shouldUnregisterField =\r\n        control._options.shouldUnregister || shouldUnregister;\r\n\r\n      (\r\n        isArrayField\r\n          ? _shouldUnregisterField && !control._stateFlags.action\r\n          : _shouldUnregisterField\r\n      )\r\n        ? control.unregister(name)\r\n        : updateMounted(name, false);\r\n    };\r\n  }, [name, control, isArrayField, shouldUnregister]);\r\n\r\n  return {\r\n    field: {\r\n      name,\r\n      value,\r\n      onChange: React.useCallback(\r\n        (event) => {\r\n          _registerProps.current.onChange({\r\n            target: {\r\n              value: getEventValue(event),\r\n              name: name as InternalFieldName,\r\n            },\r\n            type: EVENTS.CHANGE,\r\n          });\r\n        },\r\n        [name],\r\n      ),\r\n      onBlur: React.useCallback(() => {\r\n        _registerProps.current.onBlur({\r\n          target: {\r\n            value: get(control._formValues, name),\r\n            name: name as InternalFieldName,\r\n          },\r\n          type: EVENTS.BLUR,\r\n        });\r\n      }, [name, control]),\r\n      ref: React.useCallback(\r\n        (elm) => {\r\n          const field = get(control._fields, name);\r\n\r\n          if (elm && field && elm.focus) {\r\n            field._f.ref = {\r\n              focus: () => elm.focus(),\r\n              select: () => elm.select(),\r\n              setCustomValidity: (message: string) =>\r\n                elm.setCustomValidity(message),\r\n              reportValidity: () => elm.reportValidity(),\r\n            };\r\n          }\r\n        },\r\n        [name, control._fields],\r\n      ),\r\n    },\r\n    formState,\r\n    fieldState: Object.defineProperties(\r\n      {},\r\n      {\r\n        invalid: {\r\n          enumerable: true,\r\n          get: () => !!get(formState.errors, name),\r\n        },\r\n        isDirty: {\r\n          enumerable: true,\r\n          get: () => !!get(formState.dirtyFields, name),\r\n        },\r\n        isTouched: {\r\n          enumerable: true,\r\n          get: () => !!get(formState.touchedFields, name),\r\n        },\r\n        error: {\r\n          enumerable: true,\r\n          get: () => get(formState.errors, name),\r\n        },\r\n      },\r\n    ) as ControllerFieldState,\r\n  };\r\n}\r\n","import { ControllerProps, FieldPath, FieldValues } from './types';\r\nimport { useController } from './useController';\r\n\r\n/**\r\n * Component based on `useController` hook to work with controlled component.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns provide field handler functions, field and form state.\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n *   const { control } = useForm<FormValues>({\r\n *     defaultValues: {\r\n *       test: \"\"\r\n *     }\r\n *   });\r\n *\r\n *   return (\r\n *     <form>\r\n *       <Controller\r\n *         control={control}\r\n *         name=\"test\"\r\n *         render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\r\n *           <>\r\n *             <input\r\n *               onChange={onChange} // send value to hook form\r\n *               onBlur={onBlur} // notify when input is touched\r\n *               value={value} // return updated value\r\n *               ref={ref} // set ref for focus management\r\n *             />\r\n *             <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\r\n *             <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\r\n *           </>\r\n *         )}\r\n *       />\r\n *     </form>\r\n *   );\r\n * }\r\n * ```\r\n */\r\nconst Controller = <\r\n  TFieldValues extends FieldValues = FieldValues,\r\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n>(\r\n  props: ControllerProps<TFieldValues, TName>,\r\n) => props.render(useController<TFieldValues, TName>(props));\r\n\r\nexport { Controller };\r\n","import {\r\n  InternalFieldErrors,\r\n  InternalFieldName,\r\n  ValidateResult,\r\n} from '../types';\r\n\r\nexport default (\r\n  name: InternalFieldName,\r\n  validateAllFieldCriteria: boolean,\r\n  errors: InternalFieldErrors,\r\n  type: string,\r\n  message: ValidateResult,\r\n) =>\r\n  validateAllFieldCriteria\r\n    ? {\r\n        ...errors[name],\r\n        types: {\r\n          ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\r\n          [type]: message || true,\r\n        },\r\n      }\r\n    : {};\r\n","export default (value: string) => /^\\w*$/.test(value);\r\n","import compact from './compact';\r\n\r\nexport default (input: string): string[] =>\r\n  compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\r\n","import { FieldValues } from '../types';\r\n\r\nimport isKey from './isKey';\r\nimport isObject from './isObject';\r\nimport stringToPath from './stringToPath';\r\n\r\nexport default function set(\r\n  object: FieldValues,\r\n  path: string,\r\n  value?: unknown,\r\n) {\r\n  let index = -1;\r\n  const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n  const length = tempPath.length;\r\n  const lastIndex = length - 1;\r\n\r\n  while (++index < length) {\r\n    const key = tempPath[index];\r\n    let newValue = value;\r\n\r\n    if (index !== lastIndex) {\r\n      const objValue = object[key];\r\n      newValue =\r\n        isObject(objValue) || Array.isArray(objValue)\r\n          ? objValue\r\n          : !isNaN(+tempPath[index + 1])\r\n          ? []\r\n          : {};\r\n    }\r\n    object[key] = newValue;\r\n    object = object[key];\r\n  }\r\n  return object;\r\n}\r\n","import { FieldRefs, InternalFieldName } from '../types';\r\nimport { get } from '../utils';\r\nimport isObject from '../utils/isObject';\r\nimport isUndefined from '../utils/isUndefined';\r\n\r\nconst focusFieldBy = (\r\n  fields: FieldRefs,\r\n  callback: (name: string) => boolean,\r\n  fieldsNames?: Set<InternalFieldName> | InternalFieldName[],\r\n) => {\r\n  for (const key of fieldsNames || Object.keys(fields)) {\r\n    const field = get(fields, key);\r\n\r\n    if (field) {\r\n      const { _f, ...currentField } = field;\r\n\r\n      if (_f && callback(_f.name)) {\r\n        if (_f.ref.focus && isUndefined(_f.ref.focus())) {\r\n          break;\r\n        } else if (_f.refs) {\r\n          _f.refs[0].focus();\r\n          break;\r\n        }\r\n      } else if (isObject(currentField)) {\r\n        focusFieldBy(currentField, callback);\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\nexport default focusFieldBy;\r\n","export default () => {\r\n  const d =\r\n    typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\r\n\r\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n    const r = (Math.random() * 16 + d) % 16 | 0;\r\n\r\n    return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n  });\r\n};\r\n","import { FieldArrayMethodProps, InternalFieldName } from '../types';\r\nimport isUndefined from '../utils/isUndefined';\r\n\r\nexport default (\r\n  name: InternalFieldName,\r\n  index: number,\r\n  options: FieldArrayMethodProps = {},\r\n): string =>\r\n  options.shouldFocus || isUndefined(options.shouldFocus)\r\n    ? options.focusName ||\r\n      `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\r\n    : '';\r\n","import { InternalFieldName, Names } from '../types';\r\n\r\nexport default (\r\n  name: InternalFieldName,\r\n  _names: Names,\r\n  isBlurEvent?: boolean,\r\n) =>\r\n  !isBlurEvent &&\r\n  (_names.watchAll ||\r\n    _names.watch.has(name) ||\r\n    [..._names.watch].some(\r\n      (watchName) =>\r\n        name.startsWith(watchName) &&\r\n        /^\\.\\w+/.test(name.slice(watchName.length)),\r\n    ));\r\n","import {\r\n  FieldError,\r\n  FieldErrors,\r\n  FieldValues,\r\n  InternalFieldName,\r\n} from '../types';\r\nimport compact from '../utils/compact';\r\nimport get from '../utils/get';\r\nimport set from '../utils/set';\r\n\r\nexport default <T extends FieldValues = FieldValues>(\r\n  errors: FieldErrors<T>,\r\n  error: Partial<Record<string, FieldError>>,\r\n  name: InternalFieldName,\r\n): FieldErrors<T> => {\r\n  const fieldArrayErrors = compact(get(errors, name));\r\n  set(fieldArrayErrors, 'root', error[name]);\r\n  set(errors, name, fieldArrayErrors);\r\n  return errors;\r\n};\r\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\r\n","import { FieldElement } from '../types';\r\n\r\nexport default (element: FieldElement): element is HTMLInputElement =>\r\n  element.type === 'file';\r\n","import React from 'react';\r\n\r\nimport { Message } from '../types';\r\nimport isString from '../utils/isString';\r\n\r\nexport default (value: unknown): value is Message =>\r\n  isString(value) || React.isValidElement(value as JSX.Element);\r\n","import { FieldElement } from '../types';\r\n\r\nexport default (element: FieldElement): element is HTMLInputElement =>\r\n  element.type === 'radio';\r\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\r\n","import isUndefined from '../utils/isUndefined';\r\n\r\ntype CheckboxFieldResult = {\r\n  isValid: boolean;\r\n  value: string | string[] | boolean | undefined;\r\n};\r\n\r\nconst defaultResult: CheckboxFieldResult = {\r\n  value: false,\r\n  isValid: false,\r\n};\r\n\r\nconst validResult = { value: true, isValid: true };\r\n\r\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\r\n  if (Array.isArray(options)) {\r\n    if (options.length > 1) {\r\n      const values = options\r\n        .filter((option) => option && option.checked && !option.disabled)\r\n        .map((option) => option.value);\r\n      return { value: values, isValid: !!values.length };\r\n    }\r\n\r\n    return options[0].checked && !options[0].disabled\r\n      ? // @ts-expect-error expected to work in the browser\r\n        options[0].attributes && !isUndefined(options[0].attributes.value)\r\n        ? isUndefined(options[0].value) || options[0].value === ''\r\n          ? validResult\r\n          : { value: options[0].value, isValid: true }\r\n        : validResult\r\n      : defaultResult;\r\n  }\r\n\r\n  return defaultResult;\r\n};\r\n","type RadioFieldResult = {\r\n  isValid: boolean;\r\n  value: number | string | null;\r\n};\r\n\r\nconst defaultReturn: RadioFieldResult = {\r\n  isValid: false,\r\n  value: null,\r\n};\r\n\r\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\r\n  Array.isArray(options)\r\n    ? options.reduce(\r\n        (previous, option): RadioFieldResult =>\r\n          option && option.checked && !option.disabled\r\n            ? {\r\n                isValid: true,\r\n                value: option.value,\r\n              }\r\n            : previous,\r\n        defaultReturn,\r\n      )\r\n    : defaultReturn;\r\n","import { FieldError, Ref, ValidateResult } from '../types';\r\nimport isBoolean from '../utils/isBoolean';\r\nimport isMessage from '../utils/isMessage';\r\n\r\nexport default function getValidateError(\r\n  result: ValidateResult,\r\n  ref: Ref,\r\n  type = 'validate',\r\n): FieldError | void {\r\n  if (\r\n    isMessage(result) ||\r\n    (Array.isArray(result) && result.every(isMessage)) ||\r\n    (isBoolean(result) && !result)\r\n  ) {\r\n    return {\r\n      type,\r\n      message: isMessage(result) ? result : '',\r\n      ref,\r\n    };\r\n  }\r\n}\r\n","import { ValidationRule } from '../types';\r\nimport isObject from '../utils/isObject';\r\nimport isRegex from '../utils/isRegex';\r\n\r\nexport default (validationData?: ValidationRule) =>\r\n  isObject(validationData) && !isRegex(validationData)\r\n    ? validationData\r\n    : {\r\n        value: validationData,\r\n        message: '',\r\n      };\r\n","import { INPUT_VALIDATION_RULES } from '../constants';\r\nimport {\r\n  Field,\r\n  FieldError,\r\n  InternalFieldErrors,\r\n  Message,\r\n  NativeFieldValue,\r\n} from '../types';\r\nimport isBoolean from '../utils/isBoolean';\r\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\r\nimport isEmptyObject from '../utils/isEmptyObject';\r\nimport isFileInput from '../utils/isFileInput';\r\nimport isFunction from '../utils/isFunction';\r\nimport isMessage from '../utils/isMessage';\r\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\r\nimport isObject from '../utils/isObject';\r\nimport isRadioInput from '../utils/isRadioInput';\r\nimport isRegex from '../utils/isRegex';\r\nimport isString from '../utils/isString';\r\n\r\nimport appendErrors from './appendErrors';\r\nimport getCheckboxValue from './getCheckboxValue';\r\nimport getRadioValue from './getRadioValue';\r\nimport getValidateError from './getValidateError';\r\nimport getValueAndMessage from './getValueAndMessage';\r\n\r\nexport default async <T extends NativeFieldValue>(\r\n  field: Field,\r\n  inputValue: T,\r\n  validateAllFieldCriteria: boolean,\r\n  shouldUseNativeValidation?: boolean,\r\n  isFieldArray?: boolean,\r\n): Promise<InternalFieldErrors> => {\r\n  const {\r\n    ref,\r\n    refs,\r\n    required,\r\n    maxLength,\r\n    minLength,\r\n    min,\r\n    max,\r\n    pattern,\r\n    validate,\r\n    name,\r\n    valueAsNumber,\r\n    mount,\r\n    disabled,\r\n  } = field._f;\r\n  if (!mount || disabled) {\r\n    return {};\r\n  }\r\n  const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\r\n  const setCustomValidity = (message?: string | boolean) => {\r\n    if (shouldUseNativeValidation && inputRef.reportValidity) {\r\n      inputRef.setCustomValidity(isBoolean(message) ? '' : message || ' ');\r\n      inputRef.reportValidity();\r\n    }\r\n  };\r\n  const error: InternalFieldErrors = {};\r\n  const isRadio = isRadioInput(ref);\r\n  const isCheckBox = isCheckBoxInput(ref);\r\n  const isRadioOrCheckbox = isRadio || isCheckBox;\r\n  const isEmpty =\r\n    ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\r\n    inputValue === '' ||\r\n    (Array.isArray(inputValue) && !inputValue.length);\r\n  const appendErrorsCurry = appendErrors.bind(\r\n    null,\r\n    name,\r\n    validateAllFieldCriteria,\r\n    error,\r\n  );\r\n  const getMinMaxMessage = (\r\n    exceedMax: boolean,\r\n    maxLengthMessage: Message,\r\n    minLengthMessage: Message,\r\n    maxType = INPUT_VALIDATION_RULES.maxLength,\r\n    minType = INPUT_VALIDATION_RULES.minLength,\r\n  ) => {\r\n    const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n    error[name] = {\r\n      type: exceedMax ? maxType : minType,\r\n      message,\r\n      ref,\r\n      ...appendErrorsCurry(exceedMax ? maxType : minType, message),\r\n    };\r\n  };\r\n\r\n  if (\r\n    isFieldArray\r\n      ? !Array.isArray(inputValue) || !inputValue.length\r\n      : required &&\r\n        ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\r\n          (isBoolean(inputValue) && !inputValue) ||\r\n          (isCheckBox && !getCheckboxValue(refs).isValid) ||\r\n          (isRadio && !getRadioValue(refs).isValid))\r\n  ) {\r\n    const { value, message } = isMessage(required)\r\n      ? { value: !!required, message: required }\r\n      : getValueAndMessage(required);\r\n\r\n    if (value) {\r\n      error[name] = {\r\n        type: INPUT_VALIDATION_RULES.required,\r\n        message,\r\n        ref: inputRef,\r\n        ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\r\n      };\r\n      if (!validateAllFieldCriteria) {\r\n        setCustomValidity(message);\r\n        return error;\r\n      }\r\n    }\r\n  }\r\n\r\n  if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\r\n    let exceedMax;\r\n    let exceedMin;\r\n    const maxOutput = getValueAndMessage(max);\r\n    const minOutput = getValueAndMessage(min);\r\n\r\n    if (!isNullOrUndefined(inputValue) && !isNaN(inputValue as number)) {\r\n      const valueNumber =\r\n        (ref as HTMLInputElement).valueAsNumber ||\r\n        (inputValue ? +inputValue : inputValue);\r\n      if (!isNullOrUndefined(maxOutput.value)) {\r\n        exceedMax = valueNumber > maxOutput.value;\r\n      }\r\n      if (!isNullOrUndefined(minOutput.value)) {\r\n        exceedMin = valueNumber < minOutput.value;\r\n      }\r\n    } else {\r\n      const valueDate =\r\n        (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\r\n      if (isString(maxOutput.value)) {\r\n        exceedMax = valueDate > new Date(maxOutput.value);\r\n      }\r\n      if (isString(minOutput.value)) {\r\n        exceedMin = valueDate < new Date(minOutput.value);\r\n      }\r\n    }\r\n\r\n    if (exceedMax || exceedMin) {\r\n      getMinMaxMessage(\r\n        !!exceedMax,\r\n        maxOutput.message,\r\n        minOutput.message,\r\n        INPUT_VALIDATION_RULES.max,\r\n        INPUT_VALIDATION_RULES.min,\r\n      );\r\n      if (!validateAllFieldCriteria) {\r\n        setCustomValidity(error[name]!.message);\r\n        return error;\r\n      }\r\n    }\r\n  }\r\n\r\n  if (\r\n    (maxLength || minLength) &&\r\n    !isEmpty &&\r\n    (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))\r\n  ) {\r\n    const maxLengthOutput = getValueAndMessage(maxLength);\r\n    const minLengthOutput = getValueAndMessage(minLength);\r\n    const exceedMax =\r\n      !isNullOrUndefined(maxLengthOutput.value) &&\r\n      inputValue.length > maxLengthOutput.value;\r\n    const exceedMin =\r\n      !isNullOrUndefined(minLengthOutput.value) &&\r\n      inputValue.length < minLengthOutput.value;\r\n\r\n    if (exceedMax || exceedMin) {\r\n      getMinMaxMessage(\r\n        exceedMax,\r\n        maxLengthOutput.message,\r\n        minLengthOutput.message,\r\n      );\r\n      if (!validateAllFieldCriteria) {\r\n        setCustomValidity(error[name]!.message);\r\n        return error;\r\n      }\r\n    }\r\n  }\r\n\r\n  if (pattern && !isEmpty && isString(inputValue)) {\r\n    const { value: patternValue, message } = getValueAndMessage(pattern);\r\n\r\n    if (isRegex(patternValue) && !inputValue.match(patternValue)) {\r\n      error[name] = {\r\n        type: INPUT_VALIDATION_RULES.pattern,\r\n        message,\r\n        ref,\r\n        ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\r\n      };\r\n      if (!validateAllFieldCriteria) {\r\n        setCustomValidity(message);\r\n        return error;\r\n      }\r\n    }\r\n  }\r\n\r\n  if (validate) {\r\n    if (isFunction(validate)) {\r\n      const result = await validate(inputValue);\r\n      const validateError = getValidateError(result, inputRef);\r\n\r\n      if (validateError) {\r\n        error[name] = {\r\n          ...validateError,\r\n          ...appendErrorsCurry(\r\n            INPUT_VALIDATION_RULES.validate,\r\n            validateError.message,\r\n          ),\r\n        };\r\n        if (!validateAllFieldCriteria) {\r\n          setCustomValidity(validateError.message);\r\n          return error;\r\n        }\r\n      }\r\n    } else if (isObject(validate)) {\r\n      let validationResult = {} as FieldError;\r\n\r\n      for (const key in validate) {\r\n        if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n          break;\r\n        }\r\n\r\n        const validateError = getValidateError(\r\n          await validate[key](inputValue),\r\n          inputRef,\r\n          key,\r\n        );\r\n\r\n        if (validateError) {\r\n          validationResult = {\r\n            ...validateError,\r\n            ...appendErrorsCurry(key, validateError.message),\r\n          };\r\n\r\n          setCustomValidity(validateError.message);\r\n\r\n          if (validateAllFieldCriteria) {\r\n            error[name] = validationResult;\r\n          }\r\n        }\r\n      }\r\n\r\n      if (!isEmptyObject(validationResult)) {\r\n        error[name] = {\r\n          ref: inputRef,\r\n          ...validationResult,\r\n        };\r\n        if (!validateAllFieldCriteria) {\r\n          return error;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  setCustomValidity(true);\r\n  return error;\r\n};\r\n","import convertToArrayPayload from './convertToArrayPayload';\r\n\r\nexport default function append<T>(data: T[], value: T | T[]): T[] {\r\n  return [...data, ...convertToArrayPayload(value)];\r\n}\r\n","export default typeof window !== 'undefined' &&\r\n  typeof window.HTMLElement !== 'undefined' &&\r\n  typeof document !== 'undefined';\r\n","import isFunction from './isFunction';\r\nimport isObject from './isObject';\r\nimport isWeb from './isWeb';\r\n\r\nexport default function cloneObject<T>(data: T): T {\r\n  let copy: any;\r\n  const isArray = Array.isArray(data);\r\n\r\n  if (data instanceof Date) {\r\n    copy = new Date(data);\r\n  } else if (data instanceof Set) {\r\n    copy = new Set(data);\r\n  } else if (\r\n    !(isWeb && (data instanceof Blob || data instanceof FileList)) &&\r\n    (isArray || isObject(data))\r\n  ) {\r\n    copy = isArray ? [] : {};\r\n    for (const key in data) {\r\n      if (isFunction(data[key])) {\r\n        copy = data;\r\n        break;\r\n      }\r\n      copy[key] = cloneObject(data[key]);\r\n    }\r\n  } else {\r\n    return data;\r\n  }\r\n\r\n  return copy;\r\n}\r\n","export default <T>(value: T | T[]): undefined[] | undefined =>\r\n  Array.isArray(value) ? value.map(() => undefined) : undefined;\r\n","import { VALIDATION_MODE } from '../constants';\r\nimport { Mode } from '../types';\r\n\r\nexport default (\r\n  mode?: Mode,\r\n): {\r\n  isOnSubmit: boolean;\r\n  isOnBlur: boolean;\r\n  isOnChange: boolean;\r\n  isOnAll: boolean;\r\n  isOnTouch: boolean;\r\n} => ({\r\n  isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n  isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n  isOnChange: mode === VALIDATION_MODE.onChange,\r\n  isOnAll: mode === VALIDATION_MODE.all,\r\n  isOnTouch: mode === VALIDATION_MODE.onTouched,\r\n});\r\n","import convertToArrayPayload from './convertToArrayPayload';\r\n\r\nexport default function insert<T>(data: T[], index: number): (T | undefined)[];\r\nexport default function insert<T>(\r\n  data: T[],\r\n  index: number,\r\n  value: T | T[],\r\n): T[];\r\nexport default function insert<T>(\r\n  data: T[],\r\n  index: number,\r\n  value?: T | T[],\r\n): (T | undefined)[] {\r\n  return [\r\n    ...data.slice(0, index),\r\n    ...convertToArrayPayload(value),\r\n    ...data.slice(index),\r\n  ];\r\n}\r\n","import isUndefined from './isUndefined';\r\n\r\nexport default <T>(\r\n  data: (T | undefined)[],\r\n  from: number,\r\n  to: number,\r\n): (T | undefined)[] => {\r\n  if (!Array.isArray(data)) {\r\n    return [];\r\n  }\r\n\r\n  if (isUndefined(data[to])) {\r\n    data[to] = undefined;\r\n  }\r\n  data.splice(to, 0, data.splice(from, 1)[0]);\r\n\r\n  return data;\r\n};\r\n","import convertToArrayPayload from './convertToArrayPayload';\r\n\r\nexport default function prepend<T>(data: T[], value: T | T[]): T[] {\r\n  return [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\r\n}\r\n","import compact from './compact';\r\nimport convertToArrayPayload from './convertToArrayPayload';\r\nimport isUndefined from './isUndefined';\r\n\r\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\r\n  let i = 0;\r\n  const temp = [...data];\r\n\r\n  for (const index of indexes) {\r\n    temp.splice(index - i, 1);\r\n    i++;\r\n  }\r\n\r\n  return compact(temp).length ? temp : [];\r\n}\r\n\r\nexport default <T>(data: T[], index?: number | number[]): T[] =>\r\n  isUndefined(index)\r\n    ? []\r\n    : removeAtIndexes(\r\n        data,\r\n        (convertToArrayPayload(index) as number[]).sort((a, b) => a - b),\r\n      );\r\n","export default <T>(data: T[], indexA: number, indexB: number): void => {\r\n  data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\r\n};\r\n","import isEmptyObject from './isEmptyObject';\r\nimport isKey from './isKey';\r\nimport isObject from './isObject';\r\nimport isUndefined from './isUndefined';\r\nimport stringToPath from './stringToPath';\r\n\r\nfunction baseGet(object: any, updatePath: (string | number)[]) {\r\n  const length = updatePath.slice(0, -1).length;\r\n  let index = 0;\r\n\r\n  while (index < length) {\r\n    object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n  }\r\n\r\n  return object;\r\n}\r\n\r\nfunction isEmptyArray(obj: unknown[]) {\r\n  for (const key in obj) {\r\n    if (!isUndefined(obj[key])) {\r\n      return false;\r\n    }\r\n  }\r\n  return true;\r\n}\r\n\r\nexport default function unset(object: any, path: string) {\r\n  const updatePath = isKey(path) ? [path] : stringToPath(path);\r\n  const childObject =\r\n    updatePath.length == 1 ? object : baseGet(object, updatePath);\r\n  const key = updatePath[updatePath.length - 1];\r\n  let previousObjRef;\r\n\r\n  if (childObject) {\r\n    delete childObject[key];\r\n  }\r\n\r\n  for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n    let index = -1;\r\n    let objectRef;\r\n    const currentPaths = updatePath.slice(0, -(k + 1));\r\n    const currentPathsLength = currentPaths.length - 1;\r\n\r\n    if (k > 0) {\r\n      previousObjRef = object;\r\n    }\r\n\r\n    while (++index < currentPaths.length) {\r\n      const item = currentPaths[index];\r\n      objectRef = objectRef ? objectRef[item] : object[item];\r\n\r\n      if (\r\n        currentPathsLength === index &&\r\n        ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n          (Array.isArray(objectRef) && isEmptyArray(objectRef)))\r\n      ) {\r\n        previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n      }\r\n\r\n      previousObjRef = objectRef;\r\n    }\r\n  }\r\n\r\n  return object;\r\n}\r\n","export default <T>(fieldValues: T[], index: number, value: T) => {\r\n  fieldValues[index] = value;\r\n  return fieldValues;\r\n};\r\n","import React from 'react';\r\n\r\nimport focusFieldBy from './logic/focusFieldBy';\r\nimport generateId from './logic/generateId';\r\nimport getFocusFieldName from './logic/getFocusFieldName';\r\nimport isWatched from './logic/isWatched';\r\nimport updateFieldArrayRootError from './logic/updateFieldArrayRootError';\r\nimport validateField from './logic/validateField';\r\nimport appendAt from './utils/append';\r\nimport cloneObject from './utils/cloneObject';\r\nimport convertToArrayPayload from './utils/convertToArrayPayload';\r\nimport fillEmptyArray from './utils/fillEmptyArray';\r\nimport get from './utils/get';\r\nimport getValidationModes from './utils/getValidationModes';\r\nimport insertAt from './utils/insert';\r\nimport isEmptyObject from './utils/isEmptyObject';\r\nimport moveArrayAt from './utils/move';\r\nimport prependAt from './utils/prepend';\r\nimport removeArrayAt from './utils/remove';\r\nimport set from './utils/set';\r\nimport swapArrayAt from './utils/swap';\r\nimport unset from './utils/unset';\r\nimport updateAt from './utils/update';\r\nimport { VALIDATION_MODE } from './constants';\r\nimport {\r\n  Control,\r\n  Field,\r\n  FieldArray,\r\n  FieldArrayMethodProps,\r\n  FieldArrayPath,\r\n  FieldArrayWithId,\r\n  FieldErrors,\r\n  FieldPath,\r\n  FieldValues,\r\n  InternalFieldName,\r\n  RegisterOptions,\r\n  UseFieldArrayProps,\r\n  UseFieldArrayReturn,\r\n} from './types';\r\nimport { useFormContext } from './useFormContext';\r\nimport { useSubscribe } from './useSubscribe';\r\n\r\n/**\r\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\r\n *\r\n * @param props - useFieldArray props\r\n *\r\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n *   const { register, control, handleSubmit, reset, trigger, setError } = useForm({\r\n *     defaultValues: {\r\n *       test: []\r\n *     }\r\n *   });\r\n *   const { fields, append } = useFieldArray({\r\n *     control,\r\n *     name: \"test\"\r\n *   });\r\n *\r\n *   return (\r\n *     <form onSubmit={handleSubmit(data => console.log(data))}>\r\n *       {fields.map((item, index) => (\r\n *          <input key={item.id} {...register(`test.${index}.firstName`)}  />\r\n *       ))}\r\n *       <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\r\n *         append\r\n *       </button>\r\n *       <input type=\"submit\" />\r\n *     </form>\r\n *   );\r\n * }\r\n * ```\r\n */\r\nexport function useFieldArray<\r\n  TFieldValues extends FieldValues = FieldValues,\r\n  TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\r\n  TKeyName extends string = 'id',\r\n>(\r\n  props: UseFieldArrayProps<TFieldValues, TFieldArrayName, TKeyName>,\r\n): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> {\r\n  const methods = useFormContext();\r\n  const {\r\n    control = methods.control,\r\n    name,\r\n    keyName = 'id' as TKeyName,\r\n    shouldUnregister,\r\n  } = props;\r\n  const [fields, setFields] = React.useState<\r\n    Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\r\n  >(control._getFieldArray(name));\r\n  const ids = React.useRef<string[]>(\r\n    control._getFieldArray(name).map(generateId),\r\n  );\r\n  const _fieldIds = React.useRef(fields);\r\n  const _name = React.useRef(name);\r\n  const _actioned = React.useRef(false);\r\n\r\n  _name.current = name;\r\n  _fieldIds.current = fields;\r\n  control._names.array.add(name);\r\n\r\n  props.rules &&\r\n    (control as Control).register(\r\n      name as InternalFieldName,\r\n      props.rules as RegisterOptions<TFieldValues>,\r\n    );\r\n\r\n  const callback = React.useCallback(\r\n    ({\r\n      values,\r\n      name: fieldArrayName,\r\n    }: {\r\n      values?: FieldValues;\r\n      name?: InternalFieldName;\r\n    }) => {\r\n      if (fieldArrayName === _name.current || !fieldArrayName) {\r\n        const fieldValues = get(values, _name.current, []);\r\n        setFields(fieldValues);\r\n        ids.current = fieldValues.map(generateId);\r\n      }\r\n    },\r\n    [],\r\n  );\r\n\r\n  useSubscribe({\r\n    callback,\r\n    subject: control._subjects.array,\r\n  });\r\n\r\n  const updateValues = React.useCallback(\r\n    <\r\n      T extends Partial<\r\n        FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\r\n      >[],\r\n    >(\r\n      updatedFieldArrayValues: T,\r\n    ) => {\r\n      _actioned.current = true;\r\n      control._updateFieldArray(name, updatedFieldArrayValues);\r\n    },\r\n    [control, name],\r\n  );\r\n\r\n  const append = (\r\n    value:\r\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\r\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\r\n    options?: FieldArrayMethodProps,\r\n  ) => {\r\n    const appendValue = convertToArrayPayload(cloneObject(value));\r\n    const updatedFieldArrayValues = appendAt(\r\n      control._getFieldArray(name),\r\n      appendValue,\r\n    );\r\n    control._names.focus = getFocusFieldName(\r\n      name,\r\n      updatedFieldArrayValues.length - 1,\r\n      options,\r\n    );\r\n    ids.current = appendAt(ids.current, appendValue.map(generateId));\r\n    updateValues(updatedFieldArrayValues);\r\n    setFields(updatedFieldArrayValues);\r\n    control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\r\n      argA: fillEmptyArray(value),\r\n    });\r\n  };\r\n\r\n  const prepend = (\r\n    value:\r\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\r\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\r\n    options?: FieldArrayMethodProps,\r\n  ) => {\r\n    const prependValue = convertToArrayPayload(cloneObject(value));\r\n    const updatedFieldArrayValues = prependAt(\r\n      control._getFieldArray(name),\r\n      prependValue,\r\n    );\r\n    control._names.focus = getFocusFieldName(name, 0, options);\r\n    ids.current = prependAt(ids.current, prependValue.map(generateId));\r\n    updateValues(updatedFieldArrayValues);\r\n    setFields(updatedFieldArrayValues);\r\n    control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\r\n      argA: fillEmptyArray(value),\r\n    });\r\n  };\r\n\r\n  const remove = (index?: number | number[]) => {\r\n    const updatedFieldArrayValues: Partial<\r\n      FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\r\n    >[] = removeArrayAt(control._getFieldArray(name), index);\r\n    ids.current = removeArrayAt(ids.current, index);\r\n    updateValues(updatedFieldArrayValues);\r\n    setFields(updatedFieldArrayValues);\r\n    control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\r\n      argA: index,\r\n    });\r\n  };\r\n\r\n  const insert = (\r\n    index: number,\r\n    value:\r\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\r\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\r\n    options?: FieldArrayMethodProps,\r\n  ) => {\r\n    const insertValue = convertToArrayPayload(cloneObject(value));\r\n    const updatedFieldArrayValues = insertAt(\r\n      control._getFieldArray(name),\r\n      index,\r\n      insertValue,\r\n    );\r\n    control._names.focus = getFocusFieldName(name, index, options);\r\n    ids.current = insertAt(ids.current, index, insertValue.map(generateId));\r\n    updateValues(updatedFieldArrayValues);\r\n    setFields(updatedFieldArrayValues);\r\n    control._updateFieldArray(name, updatedFieldArrayValues, insertAt, {\r\n      argA: index,\r\n      argB: fillEmptyArray(value),\r\n    });\r\n  };\r\n\r\n  const swap = (indexA: number, indexB: number) => {\r\n    const updatedFieldArrayValues = control._getFieldArray(name);\r\n    swapArrayAt(updatedFieldArrayValues, indexA, indexB);\r\n    swapArrayAt(ids.current, indexA, indexB);\r\n    updateValues(updatedFieldArrayValues);\r\n    setFields(updatedFieldArrayValues);\r\n    control._updateFieldArray(\r\n      name,\r\n      updatedFieldArrayValues,\r\n      swapArrayAt,\r\n      {\r\n        argA: indexA,\r\n        argB: indexB,\r\n      },\r\n      false,\r\n    );\r\n  };\r\n\r\n  const move = (from: number, to: number) => {\r\n    const updatedFieldArrayValues = control._getFieldArray(name);\r\n    moveArrayAt(updatedFieldArrayValues, from, to);\r\n    moveArrayAt(ids.current, from, to);\r\n    updateValues(updatedFieldArrayValues);\r\n    setFields(updatedFieldArrayValues);\r\n    control._updateFieldArray(\r\n      name,\r\n      updatedFieldArrayValues,\r\n      moveArrayAt,\r\n      {\r\n        argA: from,\r\n        argB: to,\r\n      },\r\n      false,\r\n    );\r\n  };\r\n\r\n  const update = (\r\n    index: number,\r\n    value: FieldArray<TFieldValues, TFieldArrayName>,\r\n  ) => {\r\n    const updateValue = cloneObject(value);\r\n    const updatedFieldArrayValues = updateAt(\r\n      control._getFieldArray<\r\n        FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\r\n      >(name),\r\n      index,\r\n      updateValue as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>,\r\n    );\r\n    ids.current = [...updatedFieldArrayValues].map((item, i) =>\r\n      !item || i === index ? generateId() : ids.current[i],\r\n    );\r\n    updateValues(updatedFieldArrayValues);\r\n    setFields([...updatedFieldArrayValues]);\r\n    control._updateFieldArray(\r\n      name,\r\n      updatedFieldArrayValues,\r\n      updateAt,\r\n      {\r\n        argA: index,\r\n        argB: updateValue,\r\n      },\r\n      true,\r\n      false,\r\n    );\r\n  };\r\n\r\n  const replace = (\r\n    value:\r\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\r\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\r\n  ) => {\r\n    const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\r\n    ids.current = updatedFieldArrayValues.map(generateId);\r\n    updateValues([...updatedFieldArrayValues]);\r\n    setFields([...updatedFieldArrayValues]);\r\n    control._updateFieldArray(\r\n      name,\r\n      [...updatedFieldArrayValues],\r\n      <T>(data: T): T => data,\r\n      {},\r\n      true,\r\n      false,\r\n    );\r\n  };\r\n\r\n  React.useEffect(() => {\r\n    control._stateFlags.action = false;\r\n\r\n    isWatched(name, control._names) && control._subjects.state.next({});\r\n\r\n    if (_actioned.current) {\r\n      if (control._options.resolver) {\r\n        control._executeSchema([name]).then((result) => {\r\n          const error = get(result.errors, name);\r\n          const existingError = get(control._formState.errors, name);\r\n\r\n          if (\r\n            existingError ? !error && existingError.type : error && error.type\r\n          ) {\r\n            error\r\n              ? set(control._formState.errors, name, error)\r\n              : unset(control._formState.errors, name);\r\n            control._subjects.state.next({\r\n              errors: control._formState.errors as FieldErrors<TFieldValues>,\r\n            });\r\n          }\r\n        });\r\n      } else {\r\n        const field: Field = get(control._fields, name);\r\n        const validationModeBeforeSubmit = getValidationModes(\r\n          control._options.mode,\r\n        );\r\n        if (\r\n          (!validationModeBeforeSubmit.isOnSubmit ||\r\n            control._formState.isSubmitted) &&\r\n          field &&\r\n          field._f\r\n        ) {\r\n          validateField(\r\n            field,\r\n            get(control._formValues, name),\r\n            control._options.criteriaMode === VALIDATION_MODE.all,\r\n            control._options.shouldUseNativeValidation,\r\n            true,\r\n          ).then(\r\n            (error) =>\r\n              !isEmptyObject(error) &&\r\n              control._subjects.state.next({\r\n                errors: updateFieldArrayRootError(\r\n                  control._formState.errors,\r\n                  error,\r\n                  name,\r\n                ) as FieldErrors<TFieldValues>,\r\n              }),\r\n          );\r\n        }\r\n      }\r\n    }\r\n\r\n    control._subjects.watch.next({\r\n      name,\r\n      values: control._formValues,\r\n    });\r\n\r\n    control._names.focus &&\r\n      focusFieldBy(control._fields, (key: string) =>\r\n        key.startsWith(control._names.focus),\r\n      );\r\n\r\n    control._names.focus = '';\r\n\r\n    control._proxyFormState.isValid && control._updateValid();\r\n  }, [fields, name, control]);\r\n\r\n  React.useEffect(() => {\r\n    !get(control._formValues, name) && control._updateFieldArray(name);\r\n\r\n    return () => {\r\n      (control._options.shouldUnregister || shouldUnregister) &&\r\n        control.unregister(name as FieldPath<TFieldValues>);\r\n    };\r\n  }, [name, control, keyName, shouldUnregister]);\r\n\r\n  return {\r\n    swap: React.useCallback(swap, [updateValues, name, control]),\r\n    move: React.useCallback(move, [updateValues, name, control]),\r\n    prepend: React.useCallback(prepend, [updateValues, name, control]),\r\n    append: React.useCallback(append, [updateValues, name, control]),\r\n    remove: React.useCallback(remove, [updateValues, name, control]),\r\n    insert: React.useCallback(insert, [updateValues, name, control]),\r\n    update: React.useCallback(update, [updateValues, name, control]),\r\n    replace: React.useCallback(replace, [updateValues, name, control]),\r\n    fields: React.useMemo(\r\n      () =>\r\n        fields.map((field, index) => ({\r\n          ...field,\r\n          [keyName]: ids.current[index] || generateId(),\r\n        })) as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>[],\r\n      [fields, keyName],\r\n    ),\r\n  };\r\n}\r\n","import { Noop } from '../types';\r\n\r\nexport type Observer<T> = {\r\n  next: (value: T) => void;\r\n};\r\n\r\nexport type Subscription = {\r\n  unsubscribe: Noop;\r\n};\r\n\r\nexport type Subject<T> = {\r\n  readonly observers: Observer<T>[];\r\n  subscribe: (value: Observer<T>) => Subscription;\r\n  unsubscribe: Noop;\r\n} & Observer<T>;\r\n\r\nexport default function createSubject<T>(): Subject<T> {\r\n  let _observers: Observer<T>[] = [];\r\n\r\n  const next = (value: T) => {\r\n    for (const observer of _observers) {\r\n      observer.next(value);\r\n    }\r\n  };\r\n\r\n  const subscribe = (observer: Observer<T>): Subscription => {\r\n    _observers.push(observer);\r\n    return {\r\n      unsubscribe: () => {\r\n        _observers = _observers.filter((o) => o !== observer);\r\n      },\r\n    };\r\n  };\r\n\r\n  const unsubscribe = () => {\r\n    _observers = [];\r\n  };\r\n\r\n  return {\r\n    get observers() {\r\n      return _observers;\r\n    },\r\n    next,\r\n    subscribe,\r\n    unsubscribe,\r\n  };\r\n}\r\n","import { Primitive } from '../types';\r\n\r\nimport isNullOrUndefined from './isNullOrUndefined';\r\nimport { isObjectType } from './isObject';\r\n\r\nexport default (value: unknown): value is Primitive =>\r\n  isNullOrUndefined(value) || !isObjectType(value);\r\n","import isObject from '../utils/isObject';\r\n\r\nimport isDateObject from './isDateObject';\r\nimport isPrimitive from './isPrimitive';\r\n\r\nexport default function deepEqual(object1: any, object2: any) {\r\n  if (isPrimitive(object1) || isPrimitive(object2)) {\r\n    return object1 === object2;\r\n  }\r\n\r\n  if (isDateObject(object1) && isDateObject(object2)) {\r\n    return object1.getTime() === object2.getTime();\r\n  }\r\n\r\n  const keys1 = Object.keys(object1);\r\n  const keys2 = Object.keys(object2);\r\n\r\n  if (keys1.length !== keys2.length) {\r\n    return false;\r\n  }\r\n\r\n  for (const key of keys1) {\r\n    const val1 = object1[key];\r\n\r\n    if (!keys2.includes(key)) {\r\n      return false;\r\n    }\r\n\r\n    if (key !== 'ref') {\r\n      const val2 = object2[key];\r\n\r\n      if (\r\n        (isDateObject(val1) && isDateObject(val2)) ||\r\n        (isObject(val1) && isObject(val2)) ||\r\n        (Array.isArray(val1) && Array.isArray(val2))\r\n          ? !deepEqual(val1, val2)\r\n          : val1 !== val2\r\n      ) {\r\n        return false;\r\n      }\r\n    }\r\n  }\r\n\r\n  return true;\r\n}\r\n","export default (value: unknown): value is HTMLElement => {\r\n  const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\r\n  const ElementClass =\r\n    owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement;\r\n  return value instanceof ElementClass;\r\n};\r\n","import { FieldElement } from '../types';\r\n\r\nexport default (element: FieldElement): element is HTMLSelectElement =>\r\n  element.type === `select-multiple`;\r\n","import { FieldElement } from '../types';\r\n\r\nimport isCheckBoxInput from './isCheckBoxInput';\r\nimport isRadioInput from './isRadioInput';\r\n\r\nexport default (ref: FieldElement): ref is HTMLInputElement =>\r\n  isRadioInput(ref) || isCheckBoxInput(ref);\r\n","import { Ref } from '../types';\r\n\r\nimport isHTMLElement from './isHTMLElement';\r\n\r\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\r\n","import deepEqual from '../utils/deepEqual';\r\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\r\nimport isObject from '../utils/isObject';\r\nimport isPrimitive from '../utils/isPrimitive';\r\nimport isUndefined from '../utils/isUndefined';\r\nimport objectHasFunction from '../utils/objectHasFunction';\r\n\r\nfunction markFieldsDirty<U>(data: U, fields: Record<string, any> = {}) {\r\n  const isParentNodeArray = Array.isArray(data);\r\n\r\n  if (isObject(data) || isParentNodeArray) {\r\n    for (const key in data) {\r\n      if (\r\n        Array.isArray(data[key]) ||\r\n        (isObject(data[key]) && !objectHasFunction(data[key]))\r\n      ) {\r\n        fields[key] = Array.isArray(data[key]) ? [] : {};\r\n        markFieldsDirty(data[key], fields[key]);\r\n      } else if (!isNullOrUndefined(data[key])) {\r\n        fields[key] = true;\r\n      }\r\n    }\r\n  }\r\n\r\n  return fields;\r\n}\r\n\r\nfunction getDirtyFieldsFromDefaultValues<T>(\r\n  data: T,\r\n  formValues: T,\r\n  dirtyFieldsFromValues: any,\r\n) {\r\n  const isParentNodeArray = Array.isArray(data);\r\n\r\n  if (isObject(data) || isParentNodeArray) {\r\n    for (const key in data) {\r\n      if (\r\n        Array.isArray(data[key]) ||\r\n        (isObject(data[key]) && !objectHasFunction(data[key]))\r\n      ) {\r\n        if (\r\n          isUndefined(formValues) ||\r\n          isPrimitive(dirtyFieldsFromValues[key])\r\n        ) {\r\n          dirtyFieldsFromValues[key] = Array.isArray(data[key])\r\n            ? markFieldsDirty(data[key], [])\r\n            : { ...markFieldsDirty(data[key]) };\r\n        } else {\r\n          getDirtyFieldsFromDefaultValues(\r\n            data[key],\r\n            isNullOrUndefined(formValues) ? {} : formValues[key],\r\n            dirtyFieldsFromValues[key],\r\n          );\r\n        }\r\n      } else {\r\n        dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\r\n      }\r\n    }\r\n  }\r\n\r\n  return dirtyFieldsFromValues;\r\n}\r\n\r\nexport default <T>(defaultValues: T, formValues: T) =>\r\n  getDirtyFieldsFromDefaultValues(\r\n    defaultValues,\r\n    formValues,\r\n    markFieldsDirty(formValues),\r\n  );\r\n","import { Field, NativeFieldValue } from '../types';\r\nimport isString from '../utils/isString';\r\nimport isUndefined from '../utils/isUndefined';\r\n\r\nexport default <T extends NativeFieldValue>(\r\n  value: T,\r\n  { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\r\n) =>\r\n  isUndefined(value)\r\n    ? value\r\n    : valueAsNumber\r\n    ? value === ''\r\n      ? NaN\r\n      : value\r\n      ? +value\r\n      : value\r\n    : valueAsDate && isString(value)\r\n    ? new Date(value)\r\n    : setValueAs\r\n    ? setValueAs(value)\r\n    : value;\r\n","import { Field } from '../types';\r\nimport isCheckBox from '../utils/isCheckBoxInput';\r\nimport isFileInput from '../utils/isFileInput';\r\nimport isMultipleSelect from '../utils/isMultipleSelect';\r\nimport isRadioInput from '../utils/isRadioInput';\r\nimport isUndefined from '../utils/isUndefined';\r\n\r\nimport getCheckboxValue from './getCheckboxValue';\r\nimport getFieldValueAs from './getFieldValueAs';\r\nimport getRadioValue from './getRadioValue';\r\n\r\nexport default function getFieldValue(_f: Field['_f']) {\r\n  const ref = _f.ref;\r\n\r\n  if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\r\n    return;\r\n  }\r\n\r\n  if (isFileInput(ref)) {\r\n    return ref.files;\r\n  }\r\n\r\n  if (isRadioInput(ref)) {\r\n    return getRadioValue(_f.refs).value;\r\n  }\r\n\r\n  if (isMultipleSelect(ref)) {\r\n    return [...ref.selectedOptions].map(({ value }) => value);\r\n  }\r\n\r\n  if (isCheckBox(ref)) {\r\n    return getCheckboxValue(_f.refs).value;\r\n  }\r\n\r\n  return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\r\n}\r\n","import {\r\n  CriteriaMode,\r\n  Field,\r\n  FieldName,\r\n  FieldRefs,\r\n  FieldValues,\r\n  InternalFieldName,\r\n} from '../types';\r\nimport { get } from '../utils';\r\nimport set from '../utils/set';\r\n\r\nexport default <TFieldValues extends FieldValues>(\r\n  fieldsNames: Set<InternalFieldName> | InternalFieldName[],\r\n  _fields: FieldRefs,\r\n  criteriaMode?: CriteriaMode,\r\n  shouldUseNativeValidation?: boolean | undefined,\r\n) => {\r\n  const fields: Record<InternalFieldName, Field['_f']> = {};\r\n\r\n  for (const name of fieldsNames) {\r\n    const field: Field = get(_fields, name);\r\n\r\n    field && set(fields, name, field._f);\r\n  }\r\n\r\n  return {\r\n    criteriaMode,\r\n    names: [...fieldsNames] as FieldName<TFieldValues>[],\r\n    fields,\r\n    shouldUseNativeValidation,\r\n  };\r\n};\r\n","import {\r\n  ValidationRule,\r\n  ValidationValue,\r\n  ValidationValueMessage,\r\n} from '../types';\r\nimport isObject from '../utils/isObject';\r\nimport isRegex from '../utils/isRegex';\r\nimport isUndefined from '../utils/isUndefined';\r\n\r\nexport default <T extends ValidationValue>(\r\n  rule?: ValidationRule<T> | ValidationValueMessage<T>,\r\n) =>\r\n  isUndefined(rule)\r\n    ? undefined\r\n    : isRegex(rule)\r\n    ? rule.source\r\n    : isObject(rule)\r\n    ? isRegex(rule.value)\r\n      ? rule.value.source\r\n      : rule.value\r\n    : rule;\r\n","import { Field } from '../types';\r\n\r\nexport default (options: Field['_f']) =>\r\n  options.mount &&\r\n  (options.required ||\r\n    options.min ||\r\n    options.max ||\r\n    options.maxLength ||\r\n    options.minLength ||\r\n    options.pattern ||\r\n    options.validate);\r\n","import { FieldError, FieldErrors, FieldValues } from '../types';\r\nimport get from '../utils/get';\r\nimport isKey from '../utils/isKey';\r\n\r\nexport default function schemaErrorLookup<T extends FieldValues = FieldValues>(\r\n  errors: FieldErrors<T>,\r\n  _fields: FieldValues,\r\n  name: string,\r\n): {\r\n  error?: FieldError;\r\n  name: string;\r\n} {\r\n  const error = get(errors, name);\r\n\r\n  if (error || isKey(name)) {\r\n    return {\r\n      error,\r\n      name,\r\n    };\r\n  }\r\n\r\n  const names = name.split('.');\r\n\r\n  while (names.length) {\r\n    const fieldName = names.join('.');\r\n    const field = get(_fields, fieldName);\r\n    const foundError = get(errors, fieldName);\r\n\r\n    if (field && !Array.isArray(field) && name !== fieldName) {\r\n      return { name };\r\n    }\r\n\r\n    if (foundError && foundError.type) {\r\n      return {\r\n        name: fieldName,\r\n        error: foundError,\r\n      };\r\n    }\r\n\r\n    names.pop();\r\n  }\r\n\r\n  return {\r\n    name,\r\n  };\r\n}\r\n","export default (\r\n  isBlurEvent: boolean,\r\n  isTouched: boolean,\r\n  isSubmitted: boolean,\r\n  reValidateMode: {\r\n    isOnBlur: boolean;\r\n    isOnChange: boolean;\r\n  },\r\n  mode: Partial<{\r\n    isOnSubmit: boolean;\r\n    isOnBlur: boolean;\r\n    isOnChange: boolean;\r\n    isOnTouch: boolean;\r\n    isOnAll: boolean;\r\n  }>,\r\n) => {\r\n  if (mode.isOnAll) {\r\n    return false;\r\n  } else if (!isSubmitted && mode.isOnTouch) {\r\n    return !(isTouched || isBlurEvent);\r\n  } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\r\n    return !isBlurEvent;\r\n  } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\r\n    return isBlurEvent;\r\n  }\r\n  return true;\r\n};\r\n","import compact from '../utils/compact';\r\nimport get from '../utils/get';\r\nimport unset from '../utils/unset';\r\n\r\nexport default <T>(ref: T, name: string) =>\r\n  !compact(get(ref, name)).length && unset(ref, name);\r\n","import { EVENTS, VALIDATION_MODE } from '../constants';\r\nimport {\r\n  BatchFieldArrayUpdate,\r\n  ChangeHandler,\r\n  DeepPartial,\r\n  DelayCallback,\r\n  EventType,\r\n  Field,\r\n  FieldError,\r\n  FieldErrors,\r\n  FieldNamesMarkedBoolean,\r\n  FieldPath,\r\n  FieldRefs,\r\n  FieldValues,\r\n  FormState,\r\n  GetIsDirty,\r\n  InternalFieldName,\r\n  Names,\r\n  Path,\r\n  Ref,\r\n  ResolverResult,\r\n  SetFieldValue,\r\n  SetValueConfig,\r\n  Subjects,\r\n  UseFormClearErrors,\r\n  UseFormGetFieldState,\r\n  UseFormGetValues,\r\n  UseFormHandleSubmit,\r\n  UseFormProps,\r\n  UseFormRegister,\r\n  UseFormReset,\r\n  UseFormResetField,\r\n  UseFormReturn,\r\n  UseFormSetError,\r\n  UseFormSetFocus,\r\n  UseFormSetValue,\r\n  UseFormTrigger,\r\n  UseFormUnregister,\r\n  UseFormWatch,\r\n  WatchInternal,\r\n  WatchObserver,\r\n} from '../types';\r\nimport cloneObject from '../utils/cloneObject';\r\nimport compact from '../utils/compact';\r\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\r\nimport createSubject from '../utils/createSubject';\r\nimport deepEqual from '../utils/deepEqual';\r\nimport get from '../utils/get';\r\nimport getValidationModes from '../utils/getValidationModes';\r\nimport isBoolean from '../utils/isBoolean';\r\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\r\nimport isDateObject from '../utils/isDateObject';\r\nimport isEmptyObject from '../utils/isEmptyObject';\r\nimport isFileInput from '../utils/isFileInput';\r\nimport isFunction from '../utils/isFunction';\r\nimport isHTMLElement from '../utils/isHTMLElement';\r\nimport isMultipleSelect from '../utils/isMultipleSelect';\r\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\r\nimport isPrimitive from '../utils/isPrimitive';\r\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\r\nimport isString from '../utils/isString';\r\nimport isUndefined from '../utils/isUndefined';\r\nimport isWeb from '../utils/isWeb';\r\nimport live from '../utils/live';\r\nimport set from '../utils/set';\r\nimport unset from '../utils/unset';\r\n\r\nimport focusFieldBy from './focusFieldBy';\r\nimport generateWatchOutput from './generateWatchOutput';\r\nimport getDirtyFields from './getDirtyFields';\r\nimport getEventValue from './getEventValue';\r\nimport getFieldValue from './getFieldValue';\r\nimport getFieldValueAs from './getFieldValueAs';\r\nimport getResolverOptions from './getResolverOptions';\r\nimport getRuleValue from './getRuleValue';\r\nimport hasValidation from './hasValidation';\r\nimport isNameInFieldArray from './isNameInFieldArray';\r\nimport isWatched from './isWatched';\r\nimport schemaErrorLookup from './schemaErrorLookup';\r\nimport skipValidation from './skipValidation';\r\nimport unsetEmptyArray from './unsetEmptyArray';\r\nimport updateFieldArrayRootError from './updateFieldArrayRootError';\r\nimport validateField from './validateField';\r\n\r\nconst defaultOptions = {\r\n  mode: VALIDATION_MODE.onSubmit,\r\n  reValidateMode: VALIDATION_MODE.onChange,\r\n  shouldFocusError: true,\r\n} as const;\r\n\r\nexport function createFormControl<\r\n  TFieldValues extends FieldValues = FieldValues,\r\n  TContext = any,\r\n>(\r\n  props: UseFormProps<TFieldValues, TContext> = {},\r\n): Omit<UseFormReturn<TFieldValues, TContext>, 'formState'> {\r\n  let _options = {\r\n    ...defaultOptions,\r\n    ...props,\r\n  };\r\n  let _formState: FormState<TFieldValues> = {\r\n    isDirty: false,\r\n    isValidating: false,\r\n    dirtyFields: {} as FieldNamesMarkedBoolean<TFieldValues>,\r\n    isSubmitted: false,\r\n    submitCount: 0,\r\n    touchedFields: {} as FieldNamesMarkedBoolean<TFieldValues>,\r\n    isSubmitting: false,\r\n    isSubmitSuccessful: false,\r\n    isValid: false,\r\n    errors: {} as FieldErrors<TFieldValues>,\r\n  };\r\n  let _fields = {};\r\n  let _defaultValues = cloneObject(_options.defaultValues) || {};\r\n  let _formValues = _options.shouldUnregister\r\n    ? {}\r\n    : cloneObject(_defaultValues);\r\n  let _stateFlags = {\r\n    action: false,\r\n    mount: false,\r\n    watch: false,\r\n  };\r\n  let _names: Names = {\r\n    mount: new Set(),\r\n    unMount: new Set(),\r\n    array: new Set(),\r\n    watch: new Set(),\r\n  } as Names;\r\n  let delayErrorCallback: DelayCallback | null;\r\n  let timer = 0;\r\n  let validateFields: Record<InternalFieldName, number> = {};\r\n  const _proxyFormState = {\r\n    isDirty: false,\r\n    dirtyFields: false,\r\n    touchedFields: false,\r\n    isValidating: false,\r\n    isValid: false,\r\n    errors: false,\r\n  };\r\n  const _subjects: Subjects<TFieldValues> = {\r\n    watch: createSubject(),\r\n    array: createSubject(),\r\n    state: createSubject(),\r\n  };\r\n\r\n  const validationModeBeforeSubmit = getValidationModes(_options.mode);\r\n  const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\r\n  const shouldDisplayAllAssociatedErrors =\r\n    _options.criteriaMode === VALIDATION_MODE.all;\r\n\r\n  const debounce =\r\n    <T extends Function>(callback: T) =>\r\n    (wait: number) => {\r\n      clearTimeout(timer);\r\n      timer = window.setTimeout(callback, wait);\r\n    };\r\n\r\n  const _updateValid = async (shouldSkipRender?: boolean) => {\r\n    let isValid = false;\r\n\r\n    if (_proxyFormState.isValid) {\r\n      isValid = _options.resolver\r\n        ? isEmptyObject((await _executeSchema()).errors)\r\n        : await executeBuiltInValidation(_fields, true);\r\n\r\n      if (!shouldSkipRender && isValid !== _formState.isValid) {\r\n        _formState.isValid = isValid;\r\n        _subjects.state.next({\r\n          isValid,\r\n        });\r\n      }\r\n    }\r\n\r\n    return isValid;\r\n  };\r\n\r\n  const _updateFieldArray: BatchFieldArrayUpdate = (\r\n    name,\r\n    values = [],\r\n    method,\r\n    args,\r\n    shouldSetValues = true,\r\n    shouldUpdateFieldsAndState = true,\r\n  ) => {\r\n    if (args && method) {\r\n      _stateFlags.action = true;\r\n      if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\r\n        const fieldValues = method(get(_fields, name), args.argA, args.argB);\r\n        shouldSetValues && set(_fields, name, fieldValues);\r\n      }\r\n\r\n      if (\r\n        _proxyFormState.errors &&\r\n        shouldUpdateFieldsAndState &&\r\n        Array.isArray(get(_formState.errors, name))\r\n      ) {\r\n        const errors = method(\r\n          get(_formState.errors, name),\r\n          args.argA,\r\n          args.argB,\r\n        );\r\n        shouldSetValues && set(_formState.errors, name, errors);\r\n        unsetEmptyArray(_formState.errors, name);\r\n      }\r\n\r\n      if (\r\n        _proxyFormState.touchedFields &&\r\n        shouldUpdateFieldsAndState &&\r\n        Array.isArray(get(_formState.touchedFields, name))\r\n      ) {\r\n        const touchedFields = method(\r\n          get(_formState.touchedFields, name),\r\n          args.argA,\r\n          args.argB,\r\n        );\r\n        shouldSetValues && set(_formState.touchedFields, name, touchedFields);\r\n      }\r\n\r\n      if (_proxyFormState.dirtyFields) {\r\n        _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n      }\r\n\r\n      _subjects.state.next({\r\n        isDirty: _getDirty(name, values),\r\n        dirtyFields: _formState.dirtyFields,\r\n        errors: _formState.errors,\r\n        isValid: _formState.isValid,\r\n      });\r\n    } else {\r\n      set(_formValues, name, values);\r\n    }\r\n  };\r\n\r\n  const updateErrors = (name: InternalFieldName, error: FieldError) => {\r\n    set(_formState.errors, name, error);\r\n    _subjects.state.next({\r\n      errors: _formState.errors,\r\n    });\r\n  };\r\n\r\n  const updateValidAndValue = (\r\n    name: InternalFieldName,\r\n    shouldSkipSetValueAs: boolean,\r\n    value?: unknown,\r\n    ref?: Ref,\r\n  ) => {\r\n    const field: Field = get(_fields, name);\r\n\r\n    if (field) {\r\n      const defaultValue = get(\r\n        _formValues,\r\n        name,\r\n        isUndefined(value) ? get(_defaultValues, name) : value,\r\n      );\r\n\r\n      isUndefined(defaultValue) ||\r\n      (ref && (ref as HTMLInputElement).defaultChecked) ||\r\n      shouldSkipSetValueAs\r\n        ? set(\r\n            _formValues,\r\n            name,\r\n            shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\r\n          )\r\n        : setFieldValue(name, defaultValue);\r\n\r\n      _stateFlags.mount && _updateValid();\r\n    }\r\n  };\r\n\r\n  const updateTouchAndDirty = (\r\n    name: InternalFieldName,\r\n    fieldValue: unknown,\r\n    isBlurEvent?: boolean,\r\n    shouldDirty?: boolean,\r\n    shouldRender?: boolean,\r\n  ): Partial<\r\n    Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\r\n  > => {\r\n    let isFieldDirty = false;\r\n    const output: Partial<FormState<TFieldValues>> & { name: string } = {\r\n      name,\r\n    };\r\n    const isPreviousFieldTouched = get(_formState.touchedFields, name);\r\n\r\n    if (_proxyFormState.isDirty) {\r\n      const isPreviousFormDirty = _formState.isDirty;\r\n\r\n      _formState.isDirty = output.isDirty = _getDirty();\r\n      isFieldDirty = isPreviousFormDirty !== output.isDirty;\r\n    }\r\n\r\n    if (_proxyFormState.dirtyFields && (!isBlurEvent || shouldDirty)) {\r\n      const isPreviousFieldDirty = get(_formState.dirtyFields, name);\r\n      const isCurrentFieldPristine = deepEqual(\r\n        get(_defaultValues, name),\r\n        fieldValue,\r\n      );\r\n\r\n      isCurrentFieldPristine\r\n        ? unset(_formState.dirtyFields, name)\r\n        : set(_formState.dirtyFields as TFieldValues, name, true);\r\n      output.dirtyFields = _formState.dirtyFields;\r\n      isFieldDirty =\r\n        isFieldDirty ||\r\n        isPreviousFieldDirty !== get(_formState.dirtyFields, name);\r\n    }\r\n\r\n    if (isBlurEvent && !isPreviousFieldTouched) {\r\n      set(_formState.touchedFields as TFieldValues, name, isBlurEvent);\r\n      output.touchedFields = _formState.touchedFields;\r\n      isFieldDirty =\r\n        isFieldDirty ||\r\n        (_proxyFormState.touchedFields &&\r\n          isPreviousFieldTouched !== isBlurEvent);\r\n    }\r\n\r\n    isFieldDirty && shouldRender && _subjects.state.next(output);\r\n\r\n    return isFieldDirty ? output : {};\r\n  };\r\n\r\n  const shouldRenderByError = async (\r\n    name: InternalFieldName,\r\n    isValid: boolean,\r\n    error?: FieldError,\r\n    fieldState?: {\r\n      dirty?: FieldNamesMarkedBoolean<TFieldValues>;\r\n      isDirty?: boolean;\r\n      touched?: FieldNamesMarkedBoolean<TFieldValues>;\r\n    },\r\n  ): Promise<void> => {\r\n    const previousFieldError = get(_formState.errors, name);\r\n    const shouldUpdateValid =\r\n      _proxyFormState.isValid && _formState.isValid !== isValid;\r\n\r\n    if (props.delayError && error) {\r\n      delayErrorCallback = debounce(() => updateErrors(name, error));\r\n      delayErrorCallback(props.delayError);\r\n    } else {\r\n      clearTimeout(timer);\r\n      delayErrorCallback = null;\r\n      error\r\n        ? set(_formState.errors, name, error)\r\n        : unset(_formState.errors, name);\r\n    }\r\n\r\n    if (\r\n      (error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\r\n      !isEmptyObject(fieldState) ||\r\n      shouldUpdateValid\r\n    ) {\r\n      const updatedFormState = {\r\n        ...fieldState,\r\n        ...(shouldUpdateValid ? { isValid } : {}),\r\n        errors: _formState.errors,\r\n        name,\r\n      };\r\n\r\n      _formState = {\r\n        ..._formState,\r\n        ...updatedFormState,\r\n      };\r\n\r\n      _subjects.state.next(updatedFormState);\r\n    }\r\n\r\n    validateFields[name]--;\r\n\r\n    if (\r\n      _proxyFormState.isValidating &&\r\n      !Object.values(validateFields).some((v) => v)\r\n    ) {\r\n      _subjects.state.next({\r\n        isValidating: false,\r\n      });\r\n      validateFields = {};\r\n    }\r\n  };\r\n\r\n  const _executeSchema = async (name?: InternalFieldName[]) =>\r\n    _options.resolver\r\n      ? await _options.resolver(\r\n          { ..._formValues } as TFieldValues,\r\n          _options.context,\r\n          getResolverOptions(\r\n            name || _names.mount,\r\n            _fields,\r\n            _options.criteriaMode,\r\n            _options.shouldUseNativeValidation,\r\n          ),\r\n        )\r\n      : ({} as ResolverResult<TFieldValues>);\r\n\r\n  const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\r\n    const { errors } = await _executeSchema();\r\n\r\n    if (names) {\r\n      for (const name of names) {\r\n        const error = get(errors, name);\r\n        error\r\n          ? set(_formState.errors, name, error)\r\n          : unset(_formState.errors, name);\r\n      }\r\n    } else {\r\n      _formState.errors = errors as FieldErrors<TFieldValues>;\r\n    }\r\n\r\n    return errors;\r\n  };\r\n\r\n  const executeBuiltInValidation = async (\r\n    fields: FieldRefs,\r\n    shouldOnlyCheckValid?: boolean,\r\n    context = {\r\n      valid: true,\r\n    },\r\n  ) => {\r\n    for (const name in fields) {\r\n      const field = fields[name];\r\n\r\n      if (field) {\r\n        const { _f, ...fieldValue } = field;\r\n\r\n        if (_f) {\r\n          const isFieldArrayRoot = _names.array.has(_f.name);\r\n          const fieldError = await validateField(\r\n            field,\r\n            get(_formValues, _f.name),\r\n            shouldDisplayAllAssociatedErrors,\r\n            _options.shouldUseNativeValidation,\r\n            isFieldArrayRoot,\r\n          );\r\n\r\n          if (fieldError[_f.name]) {\r\n            context.valid = false;\r\n\r\n            if (shouldOnlyCheckValid) {\r\n              break;\r\n            }\r\n          }\r\n\r\n          !shouldOnlyCheckValid &&\r\n            (get(fieldError, _f.name)\r\n              ? isFieldArrayRoot\r\n                ? updateFieldArrayRootError(\r\n                    _formState.errors,\r\n                    fieldError,\r\n                    _f.name,\r\n                  )\r\n                : set(_formState.errors, _f.name, fieldError[_f.name])\r\n              : unset(_formState.errors, _f.name));\r\n        }\r\n\r\n        fieldValue &&\r\n          (await executeBuiltInValidation(\r\n            fieldValue,\r\n            shouldOnlyCheckValid,\r\n            context,\r\n          ));\r\n      }\r\n    }\r\n\r\n    return context.valid;\r\n  };\r\n\r\n  const _removeUnmounted = () => {\r\n    for (const name of _names.unMount) {\r\n      const field: Field = get(_fields, name);\r\n\r\n      field &&\r\n        (field._f.refs\r\n          ? field._f.refs.every((ref) => !live(ref))\r\n          : !live(field._f.ref)) &&\r\n        unregister(name as FieldPath<TFieldValues>);\r\n    }\r\n\r\n    _names.unMount = new Set();\r\n  };\r\n\r\n  const _getDirty: GetIsDirty = (name, data) => (\r\n    name && data && set(_formValues, name, data),\r\n    !deepEqual(getValues(), _defaultValues)\r\n  );\r\n\r\n  const _getWatch: WatchInternal<TFieldValues> = (\r\n    names,\r\n    defaultValue,\r\n    isGlobal,\r\n  ) => {\r\n    const fieldValues = {\r\n      ...(_stateFlags.mount\r\n        ? _formValues\r\n        : isUndefined(defaultValue)\r\n        ? _defaultValues\r\n        : isString(names)\r\n        ? { [names]: defaultValue }\r\n        : defaultValue),\r\n    };\r\n\r\n    return generateWatchOutput(names, _names, fieldValues, isGlobal);\r\n  };\r\n\r\n  const _getFieldArray = <TFieldArrayValues>(\r\n    name: InternalFieldName,\r\n  ): Partial<TFieldArrayValues>[] =>\r\n    compact(\r\n      get(\r\n        _stateFlags.mount ? _formValues : _defaultValues,\r\n        name,\r\n        props.shouldUnregister ? get(_defaultValues, name, []) : [],\r\n      ),\r\n    );\r\n\r\n  const setFieldValue = (\r\n    name: InternalFieldName,\r\n    value: SetFieldValue<TFieldValues>,\r\n    options: SetValueConfig = {},\r\n  ) => {\r\n    const field: Field = get(_fields, name);\r\n    let fieldValue: unknown = value;\r\n\r\n    if (field) {\r\n      const fieldReference = field._f;\r\n\r\n      if (fieldReference) {\r\n        !fieldReference.disabled &&\r\n          set(_formValues, name, getFieldValueAs(value, fieldReference));\r\n\r\n        fieldValue =\r\n          isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\r\n            ? ''\r\n            : value;\r\n\r\n        if (isMultipleSelect(fieldReference.ref)) {\r\n          [...fieldReference.ref.options].forEach(\r\n            (selectRef) =>\r\n              (selectRef.selected = (\r\n                fieldValue as InternalFieldName[]\r\n              ).includes(selectRef.value)),\r\n          );\r\n        } else if (fieldReference.refs) {\r\n          if (isCheckBoxInput(fieldReference.ref)) {\r\n            fieldReference.refs.length > 1\r\n              ? fieldReference.refs.forEach(\r\n                  (checkboxRef) =>\r\n                    !checkboxRef.disabled &&\r\n                    (checkboxRef.checked = Array.isArray(fieldValue)\r\n                      ? !!(fieldValue as []).find(\r\n                          (data: string) => data === checkboxRef.value,\r\n                        )\r\n                      : fieldValue === checkboxRef.value),\r\n                )\r\n              : fieldReference.refs[0] &&\r\n                (fieldReference.refs[0].checked = !!fieldValue);\r\n          } else {\r\n            fieldReference.refs.forEach(\r\n              (radioRef: HTMLInputElement) =>\r\n                (radioRef.checked = radioRef.value === fieldValue),\r\n            );\r\n          }\r\n        } else if (isFileInput(fieldReference.ref)) {\r\n          fieldReference.ref.value = '';\r\n        } else {\r\n          fieldReference.ref.value = fieldValue;\r\n\r\n          if (!fieldReference.ref.type) {\r\n            _subjects.watch.next({\r\n              name,\r\n            });\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    (options.shouldDirty || options.shouldTouch) &&\r\n      updateTouchAndDirty(\r\n        name,\r\n        fieldValue,\r\n        options.shouldTouch,\r\n        options.shouldDirty,\r\n        true,\r\n      );\r\n\r\n    options.shouldValidate && trigger(name as Path<TFieldValues>);\r\n  };\r\n\r\n  const setValues = <\r\n    T extends InternalFieldName,\r\n    K extends SetFieldValue<TFieldValues>,\r\n    U extends SetValueConfig,\r\n  >(\r\n    name: T,\r\n    value: K,\r\n    options: U,\r\n  ) => {\r\n    for (const fieldKey in value) {\r\n      const fieldValue = value[fieldKey];\r\n      const fieldName = `${name}.${fieldKey}` as Path<TFieldValues>;\r\n      const field = get(_fields, fieldName);\r\n\r\n      (_names.array.has(name) ||\r\n        !isPrimitive(fieldValue) ||\r\n        (field && !field._f)) &&\r\n      !isDateObject(fieldValue)\r\n        ? setValues(fieldName, fieldValue, options)\r\n        : setFieldValue(fieldName, fieldValue, options);\r\n    }\r\n  };\r\n\r\n  const setValue: UseFormSetValue<TFieldValues> = (\r\n    name,\r\n    value,\r\n    options = {},\r\n  ) => {\r\n    const field = get(_fields, name);\r\n    const isFieldArray = _names.array.has(name);\r\n    const cloneValue = cloneObject(value);\r\n\r\n    set(_formValues, name, cloneValue);\r\n\r\n    if (isFieldArray) {\r\n      _subjects.array.next({\r\n        name,\r\n        values: _formValues,\r\n      });\r\n\r\n      if (\r\n        (_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\r\n        options.shouldDirty\r\n      ) {\r\n        _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n\r\n        _subjects.state.next({\r\n          name,\r\n          dirtyFields: _formState.dirtyFields,\r\n          isDirty: _getDirty(name, cloneValue),\r\n        });\r\n      }\r\n    } else {\r\n      field && !field._f && !isNullOrUndefined(cloneValue)\r\n        ? setValues(name, cloneValue, options)\r\n        : setFieldValue(name, cloneValue, options);\r\n    }\r\n\r\n    isWatched(name, _names) && _subjects.state.next({});\r\n    _subjects.watch.next({\r\n      name,\r\n    });\r\n  };\r\n\r\n  const onChange: ChangeHandler = async (event) => {\r\n    const target = event.target;\r\n    let name = target.name;\r\n    const field: Field = get(_fields, name);\r\n\r\n    if (field) {\r\n      let error;\r\n      let isValid;\r\n      const fieldValue = target.type\r\n        ? getFieldValue(field._f)\r\n        : getEventValue(event);\r\n      const isBlurEvent =\r\n        event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\r\n      const shouldSkipValidation =\r\n        (!hasValidation(field._f) &&\r\n          !_options.resolver &&\r\n          !get(_formState.errors, name) &&\r\n          !field._f.deps) ||\r\n        skipValidation(\r\n          isBlurEvent,\r\n          get(_formState.touchedFields, name),\r\n          _formState.isSubmitted,\r\n          validationModeAfterSubmit,\r\n          validationModeBeforeSubmit,\r\n        );\r\n      const watched = isWatched(name, _names, isBlurEvent);\r\n\r\n      set(_formValues, name, fieldValue);\r\n\r\n      if (isBlurEvent) {\r\n        field._f.onBlur && field._f.onBlur(event);\r\n        delayErrorCallback && delayErrorCallback(0);\r\n      } else if (field._f.onChange) {\r\n        field._f.onChange(event);\r\n      }\r\n\r\n      const fieldState = updateTouchAndDirty(\r\n        name,\r\n        fieldValue,\r\n        isBlurEvent,\r\n        false,\r\n      );\r\n\r\n      const shouldRender = !isEmptyObject(fieldState) || watched;\r\n\r\n      !isBlurEvent &&\r\n        _subjects.watch.next({\r\n          name,\r\n          type: event.type,\r\n        });\r\n\r\n      if (shouldSkipValidation) {\r\n        return (\r\n          shouldRender &&\r\n          _subjects.state.next({ name, ...(watched ? {} : fieldState) })\r\n        );\r\n      }\r\n\r\n      !isBlurEvent && watched && _subjects.state.next({});\r\n\r\n      validateFields[name] = validateFields[name] ? +1 : 1;\r\n\r\n      _subjects.state.next({\r\n        isValidating: true,\r\n      });\r\n\r\n      if (_options.resolver) {\r\n        const { errors } = await _executeSchema([name]);\r\n        const previousErrorLookupResult = schemaErrorLookup(\r\n          _formState.errors,\r\n          _fields,\r\n          name,\r\n        );\r\n        const errorLookupResult = schemaErrorLookup(\r\n          errors,\r\n          _fields,\r\n          previousErrorLookupResult.name || name,\r\n        );\r\n\r\n        error = errorLookupResult.error;\r\n        name = errorLookupResult.name;\r\n\r\n        isValid = isEmptyObject(errors);\r\n      } else {\r\n        error = (\r\n          await validateField(\r\n            field,\r\n            get(_formValues, name),\r\n            shouldDisplayAllAssociatedErrors,\r\n            _options.shouldUseNativeValidation,\r\n          )\r\n        )[name];\r\n\r\n        isValid = await _updateValid(true);\r\n      }\r\n\r\n      field._f.deps &&\r\n        trigger(\r\n          field._f.deps as FieldPath<TFieldValues> | FieldPath<TFieldValues>[],\r\n        );\r\n\r\n      shouldRenderByError(name, isValid, error, fieldState);\r\n    }\r\n  };\r\n\r\n  const trigger: UseFormTrigger<TFieldValues> = async (name, options = {}) => {\r\n    let isValid;\r\n    let validationResult;\r\n    const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\r\n\r\n    _subjects.state.next({\r\n      isValidating: true,\r\n    });\r\n\r\n    if (_options.resolver) {\r\n      const errors = await executeSchemaAndUpdateState(\r\n        isUndefined(name) ? name : fieldNames,\r\n      );\r\n\r\n      isValid = isEmptyObject(errors);\r\n      validationResult = name\r\n        ? !fieldNames.some((name) => get(errors, name))\r\n        : isValid;\r\n    } else if (name) {\r\n      validationResult = (\r\n        await Promise.all(\r\n          fieldNames.map(async (fieldName) => {\r\n            const field = get(_fields, fieldName);\r\n            return await executeBuiltInValidation(\r\n              field && field._f ? { [fieldName]: field } : field,\r\n            );\r\n          }),\r\n        )\r\n      ).every(Boolean);\r\n      !(!validationResult && !_formState.isValid) && _updateValid();\r\n    } else {\r\n      validationResult = isValid = await executeBuiltInValidation(_fields);\r\n    }\r\n\r\n    _subjects.state.next({\r\n      ...(!isString(name) ||\r\n      (_proxyFormState.isValid && isValid !== _formState.isValid)\r\n        ? {}\r\n        : { name }),\r\n      ...(_options.resolver ? { isValid } : {}),\r\n      errors: _formState.errors,\r\n      isValidating: false,\r\n    });\r\n\r\n    options.shouldFocus &&\r\n      !validationResult &&\r\n      focusFieldBy(\r\n        _fields,\r\n        (key) => get(_formState.errors, key),\r\n        name ? fieldNames : _names.mount,\r\n      );\r\n\r\n    return validationResult;\r\n  };\r\n\r\n  const getValues: UseFormGetValues<TFieldValues> = (\r\n    fieldNames?:\r\n      | FieldPath<TFieldValues>\r\n      | ReadonlyArray<FieldPath<TFieldValues>>,\r\n  ) => {\r\n    const values = {\r\n      ..._defaultValues,\r\n      ...(_stateFlags.mount ? _formValues : {}),\r\n    };\r\n\r\n    return isUndefined(fieldNames)\r\n      ? values\r\n      : isString(fieldNames)\r\n      ? get(values, fieldNames as InternalFieldName)\r\n      : fieldNames.map((name) => get(values, name as InternalFieldName));\r\n  };\r\n\r\n  const getFieldState: UseFormGetFieldState<TFieldValues> = (\r\n    name,\r\n    formState,\r\n  ) => ({\r\n    invalid: !!get((formState || _formState).errors, name),\r\n    isDirty: !!get((formState || _formState).dirtyFields, name),\r\n    isTouched: !!get((formState || _formState).touchedFields, name),\r\n    error: get((formState || _formState).errors, name),\r\n  });\r\n\r\n  const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\r\n    name\r\n      ? convertToArrayPayload(name).forEach((inputName) =>\r\n          unset(_formState.errors, inputName),\r\n        )\r\n      : (_formState.errors = {} as FieldErrors<TFieldValues>);\r\n\r\n    _subjects.state.next({\r\n      errors: _formState.errors,\r\n    });\r\n  };\r\n\r\n  const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\r\n    const ref = ((get(_fields, name, { _f: {} }) as Field)._f || {}).ref;\r\n\r\n    set(_formState.errors, name, {\r\n      ...error,\r\n      ref,\r\n    });\r\n\r\n    _subjects.state.next({\r\n      name,\r\n      errors: _formState.errors,\r\n      isValid: false,\r\n    });\r\n\r\n    options && options.shouldFocus && ref && ref.focus && ref.focus();\r\n  };\r\n\r\n  const watch: UseFormWatch<TFieldValues> = (\r\n    name?:\r\n      | FieldPath<TFieldValues>\r\n      | ReadonlyArray<FieldPath<TFieldValues>>\r\n      | WatchObserver<TFieldValues>,\r\n    defaultValue?: unknown,\r\n  ) =>\r\n    isFunction(name)\r\n      ? _subjects.watch.subscribe({\r\n          next: (info) =>\r\n            name(\r\n              _getWatch(undefined, defaultValue as DeepPartial<TFieldValues>),\r\n              info as {\r\n                name?: FieldPath<TFieldValues>;\r\n                type?: EventType;\r\n                value?: unknown;\r\n              },\r\n            ),\r\n        })\r\n      : _getWatch(\r\n          name as InternalFieldName | InternalFieldName[],\r\n          defaultValue as DeepPartial<TFieldValues>,\r\n          true,\r\n        );\r\n\r\n  const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\r\n    for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\r\n      _names.mount.delete(fieldName);\r\n      _names.array.delete(fieldName);\r\n\r\n      if (get(_fields, fieldName)) {\r\n        if (!options.keepValue) {\r\n          unset(_fields, fieldName);\r\n          unset(_formValues, fieldName);\r\n        }\r\n\r\n        !options.keepError && unset(_formState.errors, fieldName);\r\n        !options.keepDirty && unset(_formState.dirtyFields, fieldName);\r\n        !options.keepTouched && unset(_formState.touchedFields, fieldName);\r\n        !_options.shouldUnregister &&\r\n          !options.keepDefaultValue &&\r\n          unset(_defaultValues, fieldName);\r\n      }\r\n    }\r\n\r\n    _subjects.watch.next({});\r\n\r\n    _subjects.state.next({\r\n      ..._formState,\r\n      ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\r\n    });\r\n\r\n    !options.keepIsValid && _updateValid();\r\n  };\r\n\r\n  const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\r\n    let field = get(_fields, name);\r\n    const disabledIsDefined = isBoolean(options.disabled);\r\n\r\n    set(_fields, name, {\r\n      _f: {\r\n        ...(field && field._f ? field._f : { ref: { name } }),\r\n        name,\r\n        mount: true,\r\n        ...options,\r\n      },\r\n    });\r\n    _names.mount.add(name);\r\n\r\n    field\r\n      ? disabledIsDefined &&\r\n        set(\r\n          _formValues,\r\n          name,\r\n          options.disabled\r\n            ? undefined\r\n            : get(_formValues, name, getFieldValue(field._f)),\r\n        )\r\n      : updateValidAndValue(name, true, options.value);\r\n\r\n    return {\r\n      ...(disabledIsDefined ? { disabled: options.disabled } : {}),\r\n      ...(_options.shouldUseNativeValidation\r\n        ? {\r\n            required: !!options.required,\r\n            min: getRuleValue(options.min),\r\n            max: getRuleValue(options.max),\r\n            minLength: getRuleValue<number>(options.minLength) as number,\r\n            maxLength: getRuleValue(options.maxLength) as number,\r\n            pattern: getRuleValue(options.pattern) as string,\r\n          }\r\n        : {}),\r\n      name,\r\n      onChange,\r\n      onBlur: onChange,\r\n      ref: (ref: HTMLInputElement | null): void => {\r\n        if (ref) {\r\n          register(name, options);\r\n          field = get(_fields, name);\r\n\r\n          const fieldRef = isUndefined(ref.value)\r\n            ? ref.querySelectorAll\r\n              ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\r\n              : ref\r\n            : ref;\r\n          const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\r\n          const refs = field._f.refs || [];\r\n\r\n          if (\r\n            radioOrCheckbox\r\n              ? refs.find((option: Ref) => option === fieldRef)\r\n              : fieldRef === field._f.ref\r\n          ) {\r\n            return;\r\n          }\r\n\r\n          set(_fields, name, {\r\n            _f: {\r\n              ...field._f,\r\n              ...(radioOrCheckbox\r\n                ? {\r\n                    refs: [\r\n                      ...refs.filter(live),\r\n                      fieldRef,\r\n                      ...(!!Array.isArray(get(_defaultValues, name))\r\n                        ? [{}]\r\n                        : []),\r\n                    ],\r\n                    ref: { type: fieldRef.type, name },\r\n                  }\r\n                : { ref: fieldRef }),\r\n            },\r\n          });\r\n\r\n          updateValidAndValue(name, false, undefined, fieldRef);\r\n        } else {\r\n          field = get(_fields, name, {});\r\n\r\n          if (field._f) {\r\n            field._f.mount = false;\r\n          }\r\n\r\n          (_options.shouldUnregister || options.shouldUnregister) &&\r\n            !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\r\n            _names.unMount.add(name);\r\n        }\r\n      },\r\n    };\r\n  };\r\n\r\n  const handleSubmit: UseFormHandleSubmit<TFieldValues> =\r\n    (onValid, onInvalid) => async (e) => {\r\n      if (e) {\r\n        e.preventDefault && e.preventDefault();\r\n        e.persist && e.persist();\r\n      }\r\n      let hasNoPromiseError = true;\r\n      let fieldValues: any = cloneObject(_formValues);\r\n\r\n      _subjects.state.next({\r\n        isSubmitting: true,\r\n      });\r\n\r\n      try {\r\n        if (_options.resolver) {\r\n          const { errors, values } = await _executeSchema();\r\n          _formState.errors = errors as FieldErrors<TFieldValues>;\r\n          fieldValues = values;\r\n        } else {\r\n          await executeBuiltInValidation(_fields);\r\n        }\r\n\r\n        if (isEmptyObject(_formState.errors)) {\r\n          _subjects.state.next({\r\n            errors: {} as FieldErrors<TFieldValues>,\r\n            isSubmitting: true,\r\n          });\r\n          await onValid(fieldValues, e);\r\n        } else {\r\n          if (onInvalid) {\r\n            await onInvalid({ ..._formState.errors }, e);\r\n          }\r\n\r\n          _options.shouldFocusError &&\r\n            focusFieldBy(\r\n              _fields,\r\n              (key) => get(_formState.errors, key),\r\n              _names.mount,\r\n            );\r\n        }\r\n      } catch (err) {\r\n        hasNoPromiseError = false;\r\n        throw err;\r\n      } finally {\r\n        _formState.isSubmitted = true;\r\n        _subjects.state.next({\r\n          isSubmitted: true,\r\n          isSubmitting: false,\r\n          isSubmitSuccessful:\r\n            isEmptyObject(_formState.errors) && hasNoPromiseError,\r\n          submitCount: _formState.submitCount + 1,\r\n          errors: _formState.errors,\r\n        });\r\n      }\r\n    };\r\n\r\n  const resetField: UseFormResetField<TFieldValues> = (name, options = {}) => {\r\n    if (get(_fields, name)) {\r\n      if (isUndefined(options.defaultValue)) {\r\n        setValue(name, get(_defaultValues, name));\r\n      } else {\r\n        setValue(name, options.defaultValue);\r\n        set(_defaultValues, name, options.defaultValue);\r\n      }\r\n\r\n      if (!options.keepTouched) {\r\n        unset(_formState.touchedFields, name);\r\n      }\r\n\r\n      if (!options.keepDirty) {\r\n        unset(_formState.dirtyFields, name);\r\n        _formState.isDirty = options.defaultValue\r\n          ? _getDirty(name, get(_defaultValues, name))\r\n          : _getDirty();\r\n      }\r\n\r\n      if (!options.keepError) {\r\n        unset(_formState.errors, name);\r\n        _proxyFormState.isValid && _updateValid();\r\n      }\r\n\r\n      _subjects.state.next({ ..._formState });\r\n    }\r\n  };\r\n\r\n  const reset: UseFormReset<TFieldValues> = (\r\n    formValues,\r\n    keepStateOptions = {},\r\n  ) => {\r\n    const updatedValues = formValues || _defaultValues;\r\n    const cloneUpdatedValues = cloneObject(updatedValues);\r\n    const values =\r\n      formValues && !isEmptyObject(formValues)\r\n        ? cloneUpdatedValues\r\n        : _defaultValues;\r\n\r\n    if (!keepStateOptions.keepDefaultValues) {\r\n      _defaultValues = updatedValues;\r\n    }\r\n\r\n    if (!keepStateOptions.keepValues) {\r\n      if (keepStateOptions.keepDirtyValues) {\r\n        for (const fieldName of _names.mount) {\r\n          get(_formState.dirtyFields, fieldName)\r\n            ? set(values, fieldName, get(_formValues, fieldName))\r\n            : setValue(\r\n                fieldName as FieldPath<TFieldValues>,\r\n                get(values, fieldName),\r\n              );\r\n        }\r\n      } else {\r\n        if (isWeb && isUndefined(formValues)) {\r\n          for (const name of _names.mount) {\r\n            const field = get(_fields, name);\r\n            if (field && field._f) {\r\n              const fieldReference = Array.isArray(field._f.refs)\r\n                ? field._f.refs[0]\r\n                : field._f.ref;\r\n\r\n              try {\r\n                if (isHTMLElement(fieldReference)) {\r\n                  fieldReference.closest('form')!.reset();\r\n                  break;\r\n                }\r\n              } catch {}\r\n            }\r\n          }\r\n        }\r\n\r\n        _fields = {};\r\n      }\r\n\r\n      _formValues = props.shouldUnregister\r\n        ? keepStateOptions.keepDefaultValues\r\n          ? cloneObject(_defaultValues)\r\n          : {}\r\n        : cloneUpdatedValues;\r\n\r\n      _subjects.array.next({\r\n        values,\r\n      });\r\n\r\n      _subjects.watch.next({\r\n        values,\r\n      });\r\n    }\r\n\r\n    _names = {\r\n      mount: new Set(),\r\n      unMount: new Set(),\r\n      array: new Set(),\r\n      watch: new Set(),\r\n      watchAll: false,\r\n      focus: '',\r\n    };\r\n\r\n    _stateFlags.mount =\r\n      !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\r\n\r\n    _stateFlags.watch = !!props.shouldUnregister;\r\n\r\n    _subjects.state.next({\r\n      submitCount: keepStateOptions.keepSubmitCount\r\n        ? _formState.submitCount\r\n        : 0,\r\n      isDirty:\r\n        keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n          ? _formState.isDirty\r\n          : !!(\r\n              keepStateOptions.keepDefaultValues &&\r\n              !deepEqual(formValues, _defaultValues)\r\n            ),\r\n      isSubmitted: keepStateOptions.keepIsSubmitted\r\n        ? _formState.isSubmitted\r\n        : false,\r\n      dirtyFields:\r\n        keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n          ? _formState.dirtyFields\r\n          : keepStateOptions.keepDefaultValues && formValues\r\n          ? getDirtyFields(_defaultValues, formValues)\r\n          : {},\r\n      touchedFields: keepStateOptions.keepTouched\r\n        ? _formState.touchedFields\r\n        : ({} as FieldNamesMarkedBoolean<TFieldValues>),\r\n      errors: keepStateOptions.keepErrors\r\n        ? _formState.errors\r\n        : ({} as FieldErrors<TFieldValues>),\r\n      isSubmitting: false,\r\n      isSubmitSuccessful: false,\r\n    });\r\n  };\r\n\r\n  const setFocus: UseFormSetFocus<TFieldValues> = (name, options = {}) => {\r\n    const field = get(_fields, name)._f;\r\n    const fieldRef = field.refs ? field.refs[0] : field.ref;\r\n    fieldRef.focus();\r\n    options.shouldSelect && fieldRef.select();\r\n  };\r\n\r\n  return {\r\n    control: {\r\n      register,\r\n      unregister,\r\n      getFieldState,\r\n      _executeSchema,\r\n      _getWatch,\r\n      _getDirty,\r\n      _updateValid,\r\n      _removeUnmounted,\r\n      _updateFieldArray,\r\n      _getFieldArray,\r\n      _subjects,\r\n      _proxyFormState,\r\n      get _fields() {\r\n        return _fields;\r\n      },\r\n      get _formValues() {\r\n        return _formValues;\r\n      },\r\n      get _stateFlags() {\r\n        return _stateFlags;\r\n      },\r\n      set _stateFlags(value) {\r\n        _stateFlags = value;\r\n      },\r\n      get _defaultValues() {\r\n        return _defaultValues;\r\n      },\r\n      get _names() {\r\n        return _names;\r\n      },\r\n      set _names(value) {\r\n        _names = value;\r\n      },\r\n      get _formState() {\r\n        return _formState;\r\n      },\r\n      set _formState(value) {\r\n        _formState = value;\r\n      },\r\n      get _options() {\r\n        return _options;\r\n      },\r\n      set _options(value) {\r\n        _options = {\r\n          ..._options,\r\n          ...value,\r\n        };\r\n      },\r\n    },\r\n    trigger,\r\n    register,\r\n    handleSubmit,\r\n    watch,\r\n    setValue,\r\n    getValues,\r\n    reset,\r\n    resetField,\r\n    clearErrors,\r\n    unregister,\r\n    setError,\r\n    setFocus,\r\n    getFieldState,\r\n  };\r\n}\r\n","import React from 'react';\r\n\r\nimport { createFormControl } from './logic/createFormControl';\r\nimport getProxyFormState from './logic/getProxyFormState';\r\nimport shouldRenderFormState from './logic/shouldRenderFormState';\r\nimport {\r\n  FieldErrors,\r\n  FieldNamesMarkedBoolean,\r\n  FieldValues,\r\n  FormState,\r\n  UseFormProps,\r\n  UseFormReturn,\r\n} from './types';\r\nimport { useSubscribe } from './useSubscribe';\r\n\r\n/**\r\n * Custom hook to manage the entire form.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\r\n *\r\n * @param props - form configuration and validation parameters.\r\n *\r\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n *   const { register, handleSubmit, watch, formState: { errors } } = useForm();\r\n *   const onSubmit = data => console.log(data);\r\n *\r\n *   console.log(watch(\"example\"));\r\n *\r\n *   return (\r\n *     <form onSubmit={handleSubmit(onSubmit)}>\r\n *       <input defaultValue=\"test\" {...register(\"example\")} />\r\n *       <input {...register(\"exampleRequired\", { required: true })} />\r\n *       {errors.exampleRequired && <span>This field is required</span>}\r\n *       <input type=\"submit\" />\r\n *     </form>\r\n *   );\r\n * }\r\n * ```\r\n */\r\nexport function useForm<\r\n  TFieldValues extends FieldValues = FieldValues,\r\n  TContext = any,\r\n>(\r\n  props: UseFormProps<TFieldValues, TContext> = {},\r\n): UseFormReturn<TFieldValues, TContext> {\r\n  const _formControl = React.useRef<\r\n    UseFormReturn<TFieldValues, TContext> | undefined\r\n  >();\r\n  const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\r\n    isDirty: false,\r\n    isValidating: false,\r\n    dirtyFields: {} as FieldNamesMarkedBoolean<TFieldValues>,\r\n    isSubmitted: false,\r\n    submitCount: 0,\r\n    touchedFields: {} as FieldNamesMarkedBoolean<TFieldValues>,\r\n    isSubmitting: false,\r\n    isSubmitSuccessful: false,\r\n    isValid: false,\r\n    errors: {} as FieldErrors<TFieldValues>,\r\n  });\r\n\r\n  if (_formControl.current) {\r\n    _formControl.current.control._options = props;\r\n  } else {\r\n    _formControl.current = {\r\n      ...createFormControl(props),\r\n      formState,\r\n    };\r\n  }\r\n\r\n  const control = _formControl.current.control;\r\n\r\n  const callback = React.useCallback(\r\n    (value: FieldValues) => {\r\n      if (shouldRenderFormState(value, control._proxyFormState, true)) {\r\n        control._formState = {\r\n          ...control._formState,\r\n          ...value,\r\n        };\r\n\r\n        updateFormState({ ...control._formState });\r\n      }\r\n    },\r\n    [control],\r\n  );\r\n\r\n  useSubscribe({\r\n    subject: control._subjects.state,\r\n    callback,\r\n  });\r\n\r\n  React.useEffect(() => {\r\n    if (!control._stateFlags.mount) {\r\n      control._proxyFormState.isValid && control._updateValid();\r\n      control._stateFlags.mount = true;\r\n    }\r\n    if (control._stateFlags.watch) {\r\n      control._stateFlags.watch = false;\r\n      control._subjects.state.next({});\r\n    }\r\n    control._removeUnmounted();\r\n  });\r\n\r\n  _formControl.current.formState = getProxyFormState(\r\n    formState,\r\n    control._proxyFormState,\r\n  );\r\n\r\n  return _formControl.current;\r\n}\r\n"],"names":["append","appendAt","prepend","prependAt","insert","insertAt","isCheckBox"],"mappings":"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"}