UNPKG

react-hook-form

Version:

Performant, flexible and extensible forms library for React Hooks

1 lines • 292 kB
{"version":3,"file":"index.esm.mjs","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isFileInput.ts","../src/utils/isDateObject.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getEventValue.ts","../src/utils/stringToPath.ts","../src/logic/getNullAncestorValue.ts","../src/logic/isNameInFieldArray.ts","../src/utils/isWeb.ts","../src/utils/cloneObject.ts","../src/constants.ts","../src/utils/isKey.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/utils/isBoolean.ts","../src/utils/isFunction.ts","../src/utils/set.ts","../src/useFormControlContext.ts","../src/logic/getProxyFormState.ts","../src/useIsomorphicLayoutEffect.ts","../src/utils/isPlainObject.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/useResyncOnReconnect.ts","../src/useFormState.ts","../src/utils/isString.ts","../src/logic/generateWatchOutput.ts","../src/useWatch.ts","../src/useController.ts","../src/controller.tsx","../src/errorMessage.tsx","../src/logic/generateId.ts","../src/logic/getFocusFieldName.ts","../src/logic/getValidationModes.ts","../src/logic/isWatched.ts","../src/logic/iterateFieldsByAction.ts","../src/logic/updateFieldArrayRootError.ts","../src/utils/isEmptyObject.ts","../src/utils/isHTMLElement.ts","../src/utils/isRadioInput.ts","../src/utils/isRegex.ts","../src/logic/appendErrors.ts","../src/logic/getCheckboxValue.ts","../src/logic/getRadioValue.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/utils/convertToArrayPayload.ts","../src/utils/append.ts","../src/utils/fillEmptyArray.ts","../src/utils/insert.ts","../src/utils/move.ts","../src/utils/prepend.ts","../src/utils/compact.ts","../src/utils/remove.ts","../src/utils/swap.ts","../src/utils/unset.ts","../src/utils/update.ts","../src/useFieldArray.ts","../src/fieldArray.tsx","../src/utils/flatten.ts","../src/utils/formData.ts","../src/utils/json.ts","../src/utils/noop.ts","../src/useFormContext.tsx","../src/form.tsx","../src/formState.tsx","../src/utils/createSubject.ts","../src/utils/extractFormValues.ts","../src/utils/has.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/live.ts","../src/logic/collectDirtyFieldNames.ts","../src/utils/objectHasFunction.ts","../src/logic/getDirtyFields.ts","../src/logic/getFieldArrayItemNames.ts","../src/logic/getFieldValueAs.ts","../src/logic/getFieldValue.ts","../src/logic/getResolverOptions.ts","../src/logic/getRuleValue.ts","../src/logic/hasPromiseValidation.ts","../src/logic/hasValidation.ts","../src/logic/schemaErrorLookup.ts","../src/logic/shouldRenderFormState.ts","../src/logic/shouldSubscribeByName.ts","../src/logic/skipValidation.ts","../src/logic/unsetEmptyArray.ts","../src/logic/createFormControl.ts","../src/useForm.ts","../src/watch.tsx"],"sourcesContent":["import type { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n  element.type === 'checkbox';\n","import type { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n  element.type === 'file';\n","export default (value: unknown): value is Date => value instanceof Date;\n","export default (value: unknown): value is null | undefined => value == null;\n","import isDateObject from './isDateObject';\nimport isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown): value is object =>\n  typeof value === 'object';\n\nexport default <T extends object>(value: unknown): value is T =>\n  !isNullOrUndefined(value) &&\n  !Array.isArray(value) &&\n  isObjectType(value) &&\n  !isDateObject(value);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n  isObject(event) && (event as Event).target\n    ? isCheckBoxInput((event as Event).target)\n      ? (event as Event).target.checked\n      : isFileInput((event as Event).target)\n        ? (event as Event).target.files\n        : (event as Event).target.value\n    : event;\n","const FIELD_PATH_RE = /[.[\\]'\"]/;\n\nexport default (input: string): string[] =>\n  input.split(FIELD_PATH_RE).filter(Boolean);\n","import stringToPath from '../utils/stringToPath';\n\nexport default function getNullAncestorValue(\n  control: { _formValues: unknown; _defaultValues: unknown },\n  name: string,\n) {\n  const segments = stringToPath(name);\n  let formValues: any = control._formValues;\n  let defaultValues: any = control._defaultValues;\n\n  for (let i = 0; i < segments.length - 1; i++) {\n    const key = segments[i];\n    formValues = formValues == null ? formValues : formValues[key];\n    defaultValues = defaultValues == null ? defaultValues : defaultValues[key];\n\n    if (formValues === null || defaultValues === null) {\n      return null;\n    }\n  }\n\n  return undefined;\n}\n","import type { InternalFieldName } from '../types';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n  name\n    .split('.')\n    .some(\n      (part, index, arr) =>\n        !isNaN(Number(part)) && names.has(arr.slice(0, index).join('.')),\n    );\n","export default typeof window !== 'undefined' &&\n  typeof window.HTMLElement !== 'undefined' &&\n  typeof document !== 'undefined';\n","import isWeb from './isWeb';\n\nexport default function cloneObject<T>(data: T): T {\n  if (data === null || typeof data !== 'object') {\n    return data;\n  }\n\n  if (data instanceof Date) {\n    return new Date(data) as T;\n  }\n\n  const isBlobInstance = typeof Blob !== 'undefined' && data instanceof Blob;\n  const isFileListInstance =\n    typeof FileList !== 'undefined' && data instanceof FileList;\n\n  if (isWeb && (isBlobInstance || isFileListInstance)) {\n    return data;\n  }\n\n  const isArray = Array.isArray(data);\n\n  if (!isArray && (data as object).constructor !== Object) {\n    return data;\n  }\n\n  const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\n\n  for (const key in data) {\n    if (Object.prototype.hasOwnProperty.call(data, key)) {\n      copy[key] = cloneObject(data[key]);\n    }\n  }\n\n  return copy;\n}\n","export const EVENTS = {\n  BLUR: 'blur',\n  FOCUS_OUT: 'focusout',\n  CHANGE: 'change',\n  SUBMIT: 'submit',\n  TRIGGER: 'trigger',\n  VALID: 'valid',\n} as const;\n\nexport const VALIDATION_MODE = {\n  onBlur: 'onBlur',\n  onChange: 'onChange',\n  onSubmit: 'onSubmit',\n  onTouched: 'onTouched',\n  all: 'all',\n} as const;\n\nexport const INPUT_VALIDATION_RULES = {\n  max: 'max',\n  min: 'min',\n  maxLength: 'maxLength',\n  minLength: 'minLength',\n  pattern: 'pattern',\n  required: 'required',\n  validate: 'validate',\n} as const;\n\nexport const ROOT_ERROR_TYPE = 'root';\n\nexport const PROTOTYPE_KEYWORDS = ['__proto__', 'constructor', 'prototype'];\n","const IS_KEY_RE = /^\\w*$/;\n\nexport default (value: string) => IS_KEY_RE.test(value);\n","export default (val: unknown): val is undefined => val === undefined;\n","import { PROTOTYPE_KEYWORDS } from '../constants';\n\nimport isKey from './isKey';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nexport default <T>(\n  object: T,\n  path?: string | null,\n  defaultValue?: unknown,\n): any => {\n  if (!path || !isObject(object)) {\n    return defaultValue;\n  }\n\n  const paths = isKey(path) ? [path] : stringToPath(path);\n  if (paths.some((key) => PROTOTYPE_KEYWORDS.includes(key))) {\n    return defaultValue;\n  }\n\n  const result = paths.reduce<any>((result, key) => {\n    return isNullOrUndefined(result) ? undefined : result[key];\n  }, object);\n\n  return isUndefined(result) || result === object\n    ? isUndefined(object[path as keyof T])\n      ? defaultValue\n      : object[path as keyof T]\n    : result;\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","export default (value: unknown): value is Function =>\n  typeof value === 'function';\n","import { PROTOTYPE_KEYWORDS } from '../constants';\nimport type { FieldPath, FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default (\n  object: FieldValues,\n  path: FieldPath<FieldValues>,\n  value?: unknown,\n) => {\n  let index = -1;\n  const tempPath = isKey(path) ? [path] : stringToPath(path);\n  const length = tempPath.length;\n  const lastIndex = length - 1;\n\n  while (++index < length) {\n    const key = tempPath[index];\n    let newValue = value;\n\n    if (index !== lastIndex) {\n      const objValue = object[key];\n      newValue =\n        isObject(objValue) || Array.isArray(objValue)\n          ? objValue\n          : !isNaN(+tempPath[index + 1])\n            ? []\n            : {};\n    }\n\n    if (PROTOTYPE_KEYWORDS.includes(key)) {\n      return;\n    }\n\n    object[key] = newValue;\n    object = object[key];\n  }\n};\n","import React from 'react';\n\nimport type { Control, FieldValues } from './types';\n\n/**\n * Separate context for `control` to prevent unnecessary rerenders.\n * Internal hooks that only need control use this instead of full form context.\n */\nexport const HookFormControlContext = React.createContext<Control | null>(null);\nHookFormControlContext.displayName = 'HookFormControlContext';\n\n/**\n * @internal Internal hook to access only control from context.\n */\nexport const useFormControlContext = <\n  TFieldValues extends FieldValues,\n  TContext = any,\n  TTransformedValues = TFieldValues,\n>(): Control<TFieldValues, TContext, TTransformedValues> =>\n  React.useContext(HookFormControlContext) as Control<\n    TFieldValues,\n    TContext,\n    TTransformedValues\n  >;\n","import { VALIDATION_MODE } from '../constants';\nimport type { Control, FieldValues, FormState, ReadFormState } from '../types';\n\nexport default <\n  TFieldValues extends FieldValues,\n  TContext = unknown,\n  TTransformedValues = TFieldValues,\n>(\n  formState: FormState<TFieldValues>,\n  control: Control<TFieldValues, TContext, TTransformedValues>,\n  localProxyFormState?: ReadFormState,\n  isRoot = true,\n) => {\n  const result = {} as typeof formState;\n\n  for (const key in formState) {\n    Object.defineProperty(result, key, {\n      get: () => {\n        const _key = key as keyof FormState<TFieldValues> & keyof ReadFormState;\n\n        if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n          control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n        }\n\n        localProxyFormState && (localProxyFormState[_key] = true);\n        return formState[_key];\n      },\n    });\n  }\n\n  return result;\n};\n","import React from 'react';\n\nimport isWeb from './utils/isWeb';\n\nexport const useIsomorphicLayoutEffect = isWeb\n  ? React.useLayoutEffect\n  : React.useEffect;\n","import isObject from './isObject';\n\nexport default (tempObject: object) => {\n  const prototypeCopy =\n    tempObject.constructor && tempObject.constructor.prototype;\n\n  return (\n    isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf')\n  );\n};\n","import type { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n  isNullOrUndefined(value) || !isObjectType(value);\n","import isDateObject from './isDateObject';\nimport isObject from './isObject';\nimport isPlainObject from './isPlainObject';\nimport isPrimitive from './isPrimitive';\n\nconst isEmptyObjectWithCustomPrototype = (object: object, keys: string[]) =>\n  keys.length === 0 && !Array.isArray(object) && !isPlainObject(object);\n\nexport default function deepEqual(\n  object1: unknown,\n  object2: unknown,\n  visited = new WeakMap<object, WeakSet<object>>(),\n) {\n  if (object1 === object2) {\n    return true;\n  }\n\n  if (isPrimitive(object1) || isPrimitive(object2)) {\n    return Object.is(object1, object2);\n  }\n\n  if (isDateObject(object1) && isDateObject(object2)) {\n    return Object.is(object1.getTime(), object2.getTime());\n  }\n\n  const keys1 = Object.keys(object1);\n  const keys2 = Object.keys(object2);\n\n  if (keys1.length !== keys2.length) {\n    return false;\n  }\n\n  if (\n    isEmptyObjectWithCustomPrototype(object1, keys1) ||\n    isEmptyObjectWithCustomPrototype(object2, keys2)\n  ) {\n    return Object.is(object1, object2);\n  }\n\n  if (!keys1.length && Array.isArray(object1) !== Array.isArray(object2)) {\n    return false;\n  }\n\n  const visitedPairs = visited.get(object1);\n\n  if (visitedPairs && visitedPairs.has(object2)) {\n    return true;\n  }\n\n  if (visitedPairs) {\n    visitedPairs.add(object2);\n  } else {\n    const ws = new WeakSet();\n    ws.add(object2);\n    visited.set(object1, ws);\n  }\n\n  for (const key of keys1) {\n    const val1 = (object1 as Record<string, unknown>)[key];\n\n    if (!(key in (object2 as object))) {\n      return false;\n    }\n\n    if (key !== 'ref') {\n      const val2 = (object2 as Record<string, unknown>)[key];\n\n      if (\n        (isDateObject(val1) && isDateObject(val2)) ||\n        ((isObject(val1) || Array.isArray(val1)) &&\n          (isObject(val2) || Array.isArray(val2)))\n          ? !deepEqual(val1, val2, visited)\n          : !Object.is(val1, val2)\n      ) {\n        return false;\n      }\n    }\n  }\n\n  return true;\n}\n","import React from 'react';\n\nimport cloneObject from './utils/cloneObject';\nimport deepEqual from './utils/deepEqual';\n\nexport function useResyncOnReconnect<T>(getInitialValue?: () => T) {\n  const _connected = React.useRef(false);\n  const _initialized = React.useRef(false);\n  const _prevValue = React.useRef<T | undefined>(undefined);\n  const _renderCount = React.useRef(0);\n\n  _renderCount.current++;\n\n  if (!_initialized.current && getInitialValue) {\n    _initialized.current = true;\n    _prevValue.current = cloneObject(getInitialValue());\n  }\n\n  const resyncIfNeeded = React.useCallback(\n    (\n      enabled: boolean,\n      getCurrentValue: () => T,\n      setValue: (value: T) => void,\n    ) => {\n      if (\n        enabled &&\n        (_connected.current ||\n          (_initialized.current && _renderCount.current > 1))\n      ) {\n        const currentValue = getCurrentValue();\n\n        if (!deepEqual(_prevValue.current, currentValue)) {\n          setValue(currentValue);\n        }\n      }\n\n      _connected.current = true;\n    },\n    [],\n  );\n\n  const snapshot = React.useCallback(\n    (enabled: boolean, getCurrentValue: () => T) => {\n      if (enabled) {\n        _prevValue.current = cloneObject(getCurrentValue());\n      }\n    },\n    [],\n  );\n\n  return { resyncIfNeeded, snapshot };\n}\n","import React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport type {\n  FieldValues,\n  FormState,\n  UseFormStateProps,\n  UseFormStateReturn,\n} from './types';\nimport { useFormControlContext } from './useFormControlContext';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useResyncOnReconnect } from './useResyncOnReconnect';\n\n/**\n * Subscribes to form state with re-renders isolated to this hook.\n * Optionally scope to specific field names to minimize re-render surface.\n *\n * @see [API](https://react-hook-form.com/docs/useformstate)\n *\n * @example\n * ```tsx\n * const { errors, isDirty } = useFormState({ control, name: \"email\" });\n * ```\n */\nexport function useFormState<\n  TFieldValues extends FieldValues = FieldValues,\n  TTransformedValues = TFieldValues,\n>(\n  props?: UseFormStateProps<TFieldValues, TTransformedValues>,\n): UseFormStateReturn<TFieldValues> {\n  const formControl = useFormControlContext<\n    TFieldValues,\n    unknown,\n    TTransformedValues\n  >();\n  const { control = formControl, disabled, name, exact } = props || {};\n\n  const getCurrentFormState = () => ({\n    ...control._formState,\n    defaultValues:\n      control._defaultValues as FormState<TFieldValues>['defaultValues'],\n  });\n\n  const [formState, updateFormState] =\n    React.useState<FormState<TFieldValues>>(getCurrentFormState);\n  const _localProxyFormState = React.useRef({\n    isDirty: false,\n    isLoading: false,\n    dirtyFields: false,\n    touchedFields: false,\n    validatingFields: false,\n    isValidating: false,\n    isValid: false,\n    errors: false,\n  });\n\n  const { resyncIfNeeded, snapshot } =\n    useResyncOnReconnect<FormState<TFieldValues>>(getCurrentFormState);\n\n  useIsomorphicLayoutEffect(() => {\n    resyncIfNeeded(!disabled, getCurrentFormState, updateFormState);\n\n    const unsubscribe = control._subscribe({\n      name,\n      formState: _localProxyFormState.current,\n      exact,\n      callback: (formState) => {\n        !disabled &&\n          updateFormState({\n            ...control._formState,\n            ...formState,\n            defaultValues:\n              control._defaultValues as FormState<TFieldValues>['defaultValues'],\n          });\n      },\n    });\n\n    return () => {\n      unsubscribe();\n      snapshot(!disabled, getCurrentFormState);\n    };\n  }, [control, name, disabled, exact, resyncIfNeeded, snapshot]);\n\n  React.useEffect(() => {\n    _localProxyFormState.current.isValid && control._setValid(true);\n  }, [control]);\n\n  return React.useMemo(\n    () =>\n      getProxyFormState(\n        formState,\n        control,\n        _localProxyFormState.current,\n        false,\n      ),\n    [formState, control],\n  );\n}\n","export default (value: unknown): value is string => typeof value === 'string';\n","import type { DeepPartial, FieldValues, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default <T>(\n  names: string | string[] | undefined,\n  _names: Names,\n  formValues?: FieldValues,\n  isGlobal?: boolean,\n  defaultValue?: DeepPartial<T> | unknown,\n) => {\n  if (isString(names)) {\n    isGlobal && _names.watch.add(names);\n    return get(formValues, names, defaultValue);\n  }\n\n  if (Array.isArray(names)) {\n    return names.map(\n      (fieldName) => (\n        isGlobal && _names.watch.add(fieldName),\n        get(formValues, fieldName, get(defaultValue, fieldName))\n      ),\n    );\n  }\n\n  isGlobal && (_names.watchAll = true);\n\n  return formValues;\n};\n","import React from 'react';\n\nimport generateWatchOutput from './logic/generateWatchOutput';\nimport deepEqual from './utils/deepEqual';\nimport type {\n  Control,\n  DeepPartialSkipArrayKey,\n  FieldPath,\n  FieldPathValue,\n  FieldPathValues,\n  FieldValues,\n  InternalFieldName,\n  UseWatchProps,\n} from './types';\nimport { useFormControlContext } from './useFormControlContext';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useResyncOnReconnect } from './useResyncOnReconnect';\n\n/** Watches the entire form; re-renders when any value changes. */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n  TTransformedValues = TFieldValues,\n>(props: {\n  name?: undefined;\n  defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n  control?: Control<TFieldValues, any, TTransformedValues>;\n  disabled?: boolean;\n  exact?: boolean;\n  compute?: undefined;\n}): DeepPartialSkipArrayKey<TFieldValues>;\n/** Watches a single field by name. */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n  TTransformedValues = TFieldValues,\n>(props: {\n  name: TFieldName;\n  defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n  control?: Control<TFieldValues, any, TTransformedValues>;\n  disabled?: boolean;\n  exact?: boolean;\n  compute?: undefined;\n}): FieldPathValue<TFieldValues, TFieldName>;\n/** Watches the entire form and derives a value via `compute`. */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n  TTransformedValues = TFieldValues,\n  TComputeValue = unknown,\n>(props: {\n  name?: undefined;\n  defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n  control?: Control<TFieldValues, any, TTransformedValues>;\n  disabled?: boolean;\n  exact?: boolean;\n  compute: (formValues: TFieldValues) => TComputeValue;\n}): TComputeValue;\n/** Watches a single field and derives a value via `compute`. */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n  TTransformedValues = TFieldValues,\n  TComputeValue = unknown,\n>(props: {\n  name: TFieldName;\n  defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n  control?: Control<TFieldValues, any, TTransformedValues>;\n  disabled?: boolean;\n  exact?: boolean;\n  compute: (\n    fieldValue: FieldPathValue<TFieldValues, TFieldName>,\n  ) => TComputeValue;\n}): TComputeValue;\n/** Watches multiple fields by name array. */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldNames extends readonly FieldPath<TFieldValues>[] =\n    readonly FieldPath<TFieldValues>[],\n  TTransformedValues = TFieldValues,\n>(props: {\n  name: readonly [...TFieldNames];\n  defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n  control?: Control<TFieldValues, any, TTransformedValues>;\n  disabled?: boolean;\n  exact?: boolean;\n  compute?: undefined;\n}): FieldPathValues<TFieldValues, TFieldNames>;\n/** Watches multiple fields and derives a value via `compute`. */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldNames extends readonly FieldPath<TFieldValues>[] =\n    readonly FieldPath<TFieldValues>[],\n  TTransformedValues = TFieldValues,\n  TComputeValue = unknown,\n>(props: {\n  name: readonly [...TFieldNames];\n  defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n  control?: Control<TFieldValues, any, TTransformedValues>;\n  disabled?: boolean;\n  exact?: boolean;\n  compute: (\n    fieldValue: FieldPathValues<TFieldValues, TFieldNames>,\n  ) => TComputeValue;\n}): TComputeValue;\n/** Watches the entire form; reads `control` from `FormProvider` context. */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n>(): DeepPartialSkipArrayKey<TFieldValues>;\n/**\n * Subscribes to field value changes and isolates re-renders to the hook level.\n *\n * @see [API](https://react-hook-form.com/docs/usewatch)\n *\n * @example\n * ```tsx\n * const email = useWatch({ control, name: \"email\" });\n * const all   = useWatch({ control });\n * const adult = useWatch({ control, name: \"age\", compute: (v) => v >= 18 });\n * ```\n */\nexport function useWatch<TFieldValues extends FieldValues>(\n  props?: UseWatchProps<TFieldValues>,\n) {\n  const formControl = useFormControlContext<TFieldValues>();\n  const {\n    control = formControl,\n    name,\n    defaultValue,\n    disabled,\n    exact,\n    compute,\n  } = props || {};\n  const _defaultValue = React.useRef(defaultValue);\n  const _compute = React.useRef(compute);\n\n  const _prevControl = React.useRef(control);\n  const _prevName = React.useRef(name);\n\n  _compute.current = compute;\n\n  const getInitialOutput = () => {\n    const defaultValue = control._getWatch(\n      name as InternalFieldName,\n      _defaultValue.current as DeepPartialSkipArrayKey<TFieldValues>,\n    );\n\n    return _compute.current ? _compute.current(defaultValue) : defaultValue;\n  };\n\n  const [value, updateValue] = React.useState(getInitialOutput);\n  const _computeFormValues = React.useRef<unknown>(value);\n\n  const getCurrentOutput = React.useCallback(\n    (values?: TFieldValues) => {\n      const formValues = generateWatchOutput(\n        name as InternalFieldName | InternalFieldName[],\n        control._names,\n        values || control._formValues,\n        false,\n        _defaultValue.current,\n      );\n\n      return _compute.current ? _compute.current(formValues) : formValues;\n    },\n    [control._formValues, control._names, name],\n  );\n\n  const refreshValue = React.useCallback(\n    (values?: TFieldValues) => {\n      if (!disabled) {\n        const formValues = generateWatchOutput(\n          name as InternalFieldName | InternalFieldName[],\n          control._names,\n          values || control._formValues,\n          false,\n          _defaultValue.current,\n        );\n\n        if (_compute.current) {\n          const computedFormValues = _compute.current(formValues);\n\n          if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n            updateValue(computedFormValues);\n            _computeFormValues.current = computedFormValues;\n          }\n        } else {\n          updateValue(formValues);\n        }\n      }\n    },\n    [control._formValues, control._names, disabled, name],\n  );\n\n  const { resyncIfNeeded, snapshot } =\n    useResyncOnReconnect<unknown>(getInitialOutput);\n\n  const _refreshValue = React.useRef(refreshValue);\n  _refreshValue.current = refreshValue;\n  const _getCurrentOutput = React.useRef(getCurrentOutput);\n  _getCurrentOutput.current = getCurrentOutput;\n\n  useIsomorphicLayoutEffect(() => {\n    if (\n      _prevControl.current !== control ||\n      !deepEqual(_prevName.current, name)\n    ) {\n      _prevControl.current = control;\n      _prevName.current = name;\n      _refreshValue.current();\n    } else {\n      resyncIfNeeded(\n        !disabled,\n        () => _getCurrentOutput.current(),\n        (currentValue) => {\n          updateValue(currentValue);\n          _computeFormValues.current = currentValue;\n        },\n      );\n    }\n\n    const unsubscribe = control._subscribe({\n      name,\n      formState: {\n        values: true,\n      },\n      exact,\n      callback: (formState) => {\n        _refreshValue.current(formState.values);\n      },\n    });\n\n    return () => {\n      unsubscribe();\n      snapshot(!disabled, () => _getCurrentOutput.current());\n    };\n  }, [control, exact, name, disabled, resyncIfNeeded, snapshot]);\n\n  React.useEffect(() => control._removeUnmounted());\n\n  // If name or control changed for this render, synchronously reflect the\n  // latest value so callers (like useController) see the correct value\n  // immediately on the same render.\n\n  // Optimize: Check control reference first before expensive deepEqual\n  const controlChanged = _prevControl.current !== control;\n  const prevName = _prevName.current;\n\n  // `null`/`undefined` are valid watched values, so a boolean flag (rather\n  // than a sentinel return value) decides whether to return the freshly\n  // computed output instead of the possibly-stale state value.\n  const shouldReturnImmediate = React.useMemo(() => {\n    if (disabled) {\n      return false;\n    }\n\n    const nameChanged = !controlChanged && !deepEqual(prevName, name);\n    return controlChanged || nameChanged;\n  }, [disabled, controlChanged, name, prevName]);\n\n  return shouldReturnImmediate ? getCurrentOutput() : value;\n}\n","import React from 'react';\n\nimport getEventValue from './logic/getEventValue';\nimport getNullAncestorValue from './logic/getNullAncestorValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport cloneObject from './utils/cloneObject';\nimport get from './utils/get';\nimport isBoolean from './utils/isBoolean';\nimport isFunction from './utils/isFunction';\nimport isUndefined from './utils/isUndefined';\nimport set from './utils/set';\nimport { EVENTS } from './constants';\nimport type {\n  ControllerFieldState,\n  Field,\n  FieldPath,\n  FieldPathValue,\n  FieldValues,\n  InternalFieldName,\n  UseControllerProps,\n  UseControllerReturn,\n} from './types';\nimport { useFormControlContext } from './useFormControlContext';\nimport { useFormState } from './useFormState';\nimport { useWatch } from './useWatch';\n\n/**\n * Hook for controlled inputs. Returns `field`, `fieldState`, and `formState`.\n * Re-renders are isolated to the hook level.\n *\n * @see [API](https://react-hook-form.com/docs/usecontroller)\n *\n * @example\n * ```tsx\n * const { field, fieldState } = useController({ control, name: \"email\" });\n * return <input {...field} />;\n * ```\n */\nexport function useController<\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n  TTransformedValues = TFieldValues,\n>(\n  props: UseControllerProps<TFieldValues, TName, TTransformedValues>,\n): UseControllerReturn<TFieldValues, TName> {\n  const formControl = useFormControlContext<\n    TFieldValues,\n    unknown,\n    TTransformedValues\n  >();\n  const {\n    name,\n    disabled,\n    control = formControl,\n    shouldUnregister,\n    defaultValue,\n    exact = true,\n  } = props;\n  const isArrayField = isNameInFieldArray(control._names.array, name);\n\n  const defaultValueMemo = React.useMemo(() => {\n    const resolved = get(\n      control._formValues,\n      name,\n      get(control._defaultValues, name, defaultValue),\n    );\n\n    return isUndefined(resolved)\n      ? getNullAncestorValue(control, name)\n      : resolved;\n  }, [control, name, defaultValue]);\n\n  const value = useWatch({\n    control,\n    name,\n    defaultValue: defaultValueMemo,\n    exact,\n  }) as FieldPathValue<TFieldValues, TName>;\n\n  const formState = useFormState({\n    control,\n    name,\n    exact,\n  });\n\n  const _props = React.useRef(props);\n  const _proxyRef = React.useRef<any>(null);\n\n  const _registerProps = React.useRef(\n    control.register(name, {\n      ...props.rules,\n      value,\n      ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n    }),\n  );\n\n  _props.current = props;\n\n  const fieldState = React.useMemo(\n    () =>\n      Object.defineProperties(\n        {},\n        {\n          invalid: {\n            enumerable: true,\n            get: () => !!get(formState.errors, name),\n          },\n          isDirty: {\n            enumerable: true,\n            get: () => !!get(formState.dirtyFields, name),\n          },\n          isTouched: {\n            enumerable: true,\n            get: () => !!get(formState.touchedFields, name),\n          },\n          isValidating: {\n            enumerable: true,\n            get: () => !!get(formState.validatingFields, name),\n          },\n          error: {\n            enumerable: true,\n            get: () => get(formState.errors, name),\n          },\n        },\n      ) as ControllerFieldState,\n    [formState, name],\n  );\n\n  const onChange = React.useCallback(\n    (event: unknown) => {\n      const value = getEventValue(event);\n\n      if (!get(control._fields, name)) {\n        _registerProps.current = control.register(name, {\n          ..._props.current.rules,\n          value,\n        });\n      }\n\n      return _registerProps.current.onChange({\n        target: {\n          value: getEventValue(event),\n          name: name as InternalFieldName,\n        },\n        type: EVENTS.CHANGE,\n      });\n    },\n    [name, control],\n  );\n\n  const onBlur = React.useCallback(\n    () =>\n      _registerProps.current.onBlur({\n        target: {\n          value: get(control._formValues, name),\n          name: name as InternalFieldName,\n        },\n        type: EVENTS.BLUR,\n      }),\n    [name, control._formValues],\n  );\n\n  const ref = React.useCallback(\n    (elm: any) => {\n      if (elm) {\n        _proxyRef.current = {\n          focus: () => isFunction(elm.focus) && elm.focus(),\n          select: () => isFunction(elm.select) && elm.select(),\n          setCustomValidity: (message: string) =>\n            isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),\n          reportValidity: () =>\n            isFunction(elm.reportValidity) && elm.reportValidity(),\n        };\n      }\n\n      const field = get(control._fields, name);\n\n      if (field && field._f && elm) {\n        field._f.ref = _proxyRef.current;\n      }\n    },\n    [control._fields, name],\n  );\n\n  const field = React.useMemo(\n    () => ({\n      name,\n      value,\n      ...(isBoolean(disabled) || formState.disabled\n        ? { disabled: formState.disabled || disabled }\n        : {}),\n      onChange,\n      onBlur,\n      ref,\n    }),\n    [name, disabled, formState.disabled, onChange, onBlur, ref, value],\n  );\n\n  React.useEffect(() => {\n    const _shouldUnregisterField =\n      control._options.shouldUnregister || shouldUnregister;\n\n    _registerProps.current = control.register(name, {\n      ..._props.current.rules,\n      ...(isBoolean(_props.current.disabled)\n        ? { disabled: _props.current.disabled }\n        : {}),\n    });\n\n    const updateMounted = (name: InternalFieldName, value: boolean) => {\n      const field: Field = get(control._fields, name);\n\n      if (field && field._f) {\n        field._f.mount = value;\n      }\n    };\n\n    updateMounted(name, true);\n\n    if (_shouldUnregisterField) {\n      const value = cloneObject(\n        get(\n          shouldUnregister\n            ? control._defaultValues\n            : control._options.values || control._defaultValues,\n          name,\n          get(\n            control._options.defaultValues,\n            name,\n            _props.current.defaultValue,\n          ),\n        ),\n      );\n      set(control._defaultValues, name, value);\n      if (isUndefined(get(control._formValues, name))) {\n        set(control._formValues, name, value);\n      }\n    }\n\n    !isArrayField && control.register(name);\n\n    if (_proxyRef.current) {\n      const field: Field = get(control._fields, name);\n      if (field && field._f) {\n        field._f.ref = _proxyRef.current;\n      }\n    }\n\n    return () => {\n      (\n        isArrayField\n          ? _shouldUnregisterField && !control._state.action\n          : _shouldUnregisterField\n      )\n        ? control.unregister(name)\n        : updateMounted(name, false);\n    };\n  }, [name, control, isArrayField, shouldUnregister]);\n\n  React.useEffect(() => {\n    control._setDisabledField({\n      disabled,\n      name,\n    });\n  }, [disabled, name, control]);\n\n  return React.useMemo(\n    () => ({\n      field,\n      formState,\n      fieldState,\n    }),\n    [field, formState, fieldState],\n  );\n}\n","import type { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\n/**\n * Component wrapper around `useController` for controlled inputs.\n *\n * @see [API](https://react-hook-form.com/docs/usecontroller/controller)\n *\n * @example\n * ```tsx\n * <Controller\n *   control={control}\n *   name=\"test\"\n *   render={({ field, fieldState, formState }) => <input {...field} />}\n * />\n * ```\n */\nexport const Controller = <\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n  TTransformedValues = TFieldValues,\n>(\n  props: ControllerProps<TFieldValues, TName, TTransformedValues>,\n) =>\n  props.render(useController<TFieldValues, TName, TTransformedValues>(props));\n","import React from 'react';\n\nimport type {\n  Control,\n  FieldPath,\n  FieldValues,\n  Message,\n  MultipleFieldErrors,\n} from './types';\nimport { useFormState } from './useFormState';\nimport { get } from './utils';\n\nexport type ErrorMessageProps<TFieldValues extends FieldValues = FieldValues> =\n  {\n    as?: React.ElementType;\n    control?: Control<TFieldValues>;\n    name: FieldPath<TFieldValues> | `root.${string}` | 'root';\n    render?: (data: {\n      message: Message;\n      messages?: MultipleFieldErrors;\n    }) => React.ReactNode;\n  };\n\n/**\n * Displays the validation error for a single field.\n * Reads from `control` when provided, otherwise from the nearest `FormProvider`.\n *\n * @see [API](https://react-hook-form.com/docs/useformstate/errormessage)\n *\n * @example\n * ```tsx\n * <ErrorMessage control={control} name=\"email\" as=\"p\" />\n * <ErrorMessage name=\"email\" as=\"span\" />\n * <ErrorMessage control={control} name=\"email\"\n *   render={({ message }) => <Alert>{message}</Alert>} />\n * ```\n */\nexport const ErrorMessage = <TFieldValues extends FieldValues = FieldValues>({\n  as,\n  control,\n  name,\n  render,\n}: ErrorMessageProps<TFieldValues>) => {\n  const { errors } = useFormState<TFieldValues>({\n    control,\n    name: name as FieldPath<TFieldValues>,\n  });\n\n  const error = get(errors, name);\n\n  if (!error) {\n    return null;\n  }\n\n  const message = error.message || '';\n\n  if (render) {\n    return render({ message, messages: error.types }) as React.ReactElement;\n  }\n\n  return React.createElement(as || React.Fragment, null, message);\n};\n","export default () =>\n  typeof crypto !== 'undefined' && crypto.randomUUID\n    ? crypto.randomUUID()\n    : 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n        const r = (Math.random() * 16) | 0;\n        return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n      });\n","import type { FieldArrayMethodProps, InternalFieldName } from '../types';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n  name: InternalFieldName,\n  index: number,\n  options: FieldArrayMethodProps = {},\n): string =>\n  options.shouldFocus || isUndefined(options.shouldFocus)\n    ? options.focusName ||\n      `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n    : '';\n","import { VALIDATION_MODE } from '../constants';\nimport type { Mode, ValidationModeFlags } from '../types';\n\nexport default (mode?: Mode): ValidationModeFlags => ({\n  isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n  isOnBlur: mode === VALIDATION_MODE.onBlur,\n  isOnChange: mode === VALIDATION_MODE.onChange,\n  isOnAll: mode === VALIDATION_MODE.all,\n  isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","import type { InternalFieldName, Names } from '../types';\n\nexport default (\n  name: InternalFieldName,\n  _names: Names,\n  isBlurEvent?: boolean,\n) => {\n  if (isBlurEvent) return false;\n  if (_names.watchAll || _names.watch.has(name)) return true;\n  for (const watchName of _names.watch) {\n    if (name.startsWith(watchName) && name.charAt(watchName.length) === '.')\n      return true;\n  }\n  return false;\n};\n","import type { FieldRefs, InternalFieldName, Ref } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\n\nconst iterateFieldsByAction = (\n  fields: FieldRefs,\n  action: (ref: Ref, name: string) => 1 | undefined | void,\n  fieldsNames?: Set<InternalFieldName> | InternalFieldName[] | 0,\n) => {\n  for (const key of fieldsNames || Object.keys(fields)) {\n    if (key === '_f') {\n      continue;\n    }\n\n    const field = fieldsNames ? get(fields, key) : fields[key];\n\n    if (field) {\n      const { _f } = field;\n\n      if (_f) {\n        if (_f.refs && _f.refs[0] && action(_f.refs[0], _f.name)) {\n          return true;\n        } else if (_f.ref && action(_f.ref, _f.name)) {\n          return true;\n        } else {\n          if (iterateFieldsByAction(field, action)) {\n            return true;\n          }\n        }\n      } else if (isObject(field) || Array.isArray(field)) {\n        if (iterateFieldsByAction(field as FieldRefs, action)) {\n          return true;\n        }\n      }\n    }\n  }\n  return;\n};\nexport default iterateFieldsByAction;\n","import { ROOT_ERROR_TYPE } from '../constants';\nimport type {\n  FieldError,\n  FieldErrors,\n  FieldValues,\n  InternalFieldName,\n} from '../types';\nimport get from '../utils/get';\nimport set from '../utils/set';\n\nexport default <T extends FieldValues = FieldValues>(\n  errors: FieldErrors<T>,\n  error: Partial<Record<string, FieldError>>,\n  name: InternalFieldName,\n): FieldErrors<T> => {\n  const existingErrors = get(errors, name);\n  const fieldArrayErrors = Array.isArray(existingErrors) ? existingErrors : [];\n  set(fieldArrayErrors, ROOT_ERROR_TYPE, error[name]);\n  set(errors, name, fieldArrayErrors);\n  return errors;\n};\n","import type { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n  isObject(value) && !Object.keys(value).length;\n","import isWeb from './isWeb';\n\nexport default (value: unknown): value is HTMLElement => {\n  if (!isWeb) {\n    return false;\n  }\n\n  const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\n  return (\n    value instanceof\n    (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement)\n  );\n};\n","import type { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n  element.type === 'radio';\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import type {\n  InternalFieldErrors,\n  InternalFieldName,\n  ValidateResult,\n} from '../types';\n\nexport default (\n  name: InternalFieldName,\n  validateAllFieldCriteria: boolean,\n  errors: InternalFieldErrors,\n  type: string,\n  message: ValidateResult,\n) =>\n  validateAllFieldCriteria\n    ? {\n        ...errors[name],\n        types: {\n          ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n          [type]: message || true,\n        },\n      }\n    : {};\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n  isValid: boolean;\n  value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n  value: false,\n  isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n  if (!Array.isArray(options)) {\n    return defaultResult;\n  }\n\n  if (options.length > 1) {\n    const values = options\n      .filter((option) => option && option.checked && !option.disabled)\n      .map((option) => option.value);\n\n    return { value: values, isValid: !!values.length };\n  }\n\n  const option = options[0];\n\n  if (!option || !option.checked || option.disabled) {\n    return defaultResult;\n  }\n\n  if (!option.attributes || !('value' in option.attributes)) {\n    return validResult;\n  }\n\n  return isUndefined(option.value) || option.value === ''\n    ? validResult\n    : { value: option.value, isValid: true };\n};\n","type RadioFieldResult = {\n  isValid: boolean;\n  value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n  isValid: false,\n  value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n  Array.isArray(options)\n    ? options.reduce(\n        (previous, option): RadioFieldResult =>\n          option && option.checked && !option.disabled\n            ? {\n                isValid: true,\n                value: option.value,\n              }\n            : previous,\n        defaultReturn,\n      )\n    : defaultReturn;\n","import type { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isString from '../utils/isString';\n\nexport default function getValidateError(\n  result: ValidateResult,\n  ref: Ref,\n  type = 'validate',\n): FieldError | void {\n  if (\n    isString(result) ||\n    (Array.isArray(result) && result.every(isString)) ||\n    (isBoolean(result) && !result)\n  ) {\n    return {\n      type,\n      message: isString(result) ? result : '',\n      ref,\n    };\n  }\n}\n","import type { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n  isObject(validationData) && !isRegex(validationData)\n    ? validationData\n    : {\n        value: validationData,\n        message: '',\n      };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport type {\n  Field,\n  FieldError,\n  FieldValues,\n  InternalFieldErrors,\n  InternalNameSet,\n  MaxType,\n  Message,\n  MinType,\n  NativeFieldValue,\n} from '../types';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async <T extends FieldValues>(\n  field: Field,\n  disabledFieldNames: InternalNameSet,\n  formValues: T,\n  validateAllFieldCriteria: boolean,\n  shouldUseNativeValidation?: boolean,\n  isFieldArray?: boolean,\n): Promise<InternalFieldErrors> => {\n  const {\n    ref,\n    refs,\n    required,\n    maxLength,\n    minLength,\n    min,\n    max,\n    pattern,\n    validate,\n    name,\n    valueAsNumber,\n    mount,\n  } = field._f;\n  const inputValue: NativeFieldValue = get(formValues, name);\n  if (!mount || disabledFieldNames.has(name)) {\n    return {};\n  }\n  const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\n  const setCustomValidity = (message?: string | boolean) => {\n    if (shouldUseNativeValidation && inputRef.reportValidity) {\n      const validityMessage = isBoolean(message) ? '' : message || '';\n      if (refs) {\n        refs.forEach((ref) => ref.setCustomValidity(validityMessage));\n      } else {\n        inputRef.setCustomValidity(validityMessage);\n      }\n      inputRef.reportValidity();\n    }\n  };\n  const error: InternalFieldErrors = {};\n  const isRadio = isRadioInput(ref);\n  const isCheckBox = isCheckBoxInput(ref);\n  const isRadioOrCheckbox = isRadio || isCheckBox;\n  const isEmpty =\n    ((valueAsNumber || isFileInput(ref)) &&\n      isUndefined(ref.value) &&\n      isUndefined(inputValue)) ||\n    (isHTMLElement(ref) && ref.value === '') ||\n    inputValue === '' ||\n    (Array.isArray(inputValue) && !inputValue.length);\n  const appendErrorsCurry = appendErrors.bind(\n    null,\n    name,\n    validateAllFieldCriteria,\n    error,\n  );\n  const getMinMaxMessage = (\n    exceedMax: boolean,\n    maxLengthMessage: Message,\n    minLengthMessage: Message,\n    maxType: MaxType = INPUT_VALIDATION_RULES.maxLength,\n    minType: MinType = INPUT_VALIDATION_RULES.minLength,\n  ) => {\n    const message = exceedMax ? maxLengthMessage : minLengthMessage;\n    error[name] = {\n      type: exceedMax ? maxType : minType,\n      message,\n      ref,\n      ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n    };\n  };\n\n  if (\n    isFieldArray\n      ? !Array.isArray(inputValue) || !inputValue.length\n      : required &&\n        ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n          (isBoolean(inputValue) && !inputValue) ||\n          (isCheckBox && !getCheckboxValue(refs).isValid) ||\n          (isRadio && !getRadioValue(refs).isValid))\n  ) {\n    const { value, message } = isString(required)\n      ? { value: !!required, message: required }\n      : getValueAndMessage(required);\n\n    if (value) {\n      error[name] = {\n        type: INPUT_VALIDATION_RULES.required,\n        message,\n        ref: inputRef,\n        ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n      };\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(message);\n        return error;\n      }\n    }\n  }\n\n  if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n    let exceedMax;\n    let exceedMin;\n    const maxOutput = getValueAndMessage(max);\n    const minOutput = getValueAndMessage(min);\n\n    if (\n      !isNullOrUndefined(inputValue) &&\n      !isDateObject(inputValue) &&\n      !isNaN(inputValue as number)\n    ) {\n      const valueNumber =\n        (ref as HTMLInputElement).valueAsNumber ||\n        (inputValue ? +inputValue : inputValue);\n      if (!isNullOrUndefined(maxOutput.value)) {\n        exceedMax = valueNumber > maxOutput.value;\n      }\n      if (!isNullOrUndefined(minOutput.value)) {\n        exceedMin = valueNumber < minOutput.value;\n      }\n    } else {\n      const valueDate =\n        (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\n      const convertTimeToDate = (time: unknown) =>\n        new Date(new Date().toDateString() + ' ' + time);\n      const isTime = ref.type == 'time';\n      const isWeek = ref.type == 'week';\n\n      if (isString(maxOutput.value) && inputValue) {\n        exceedMax = isTime\n          ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n          : isWeek\n            ? inputValue > maxOutput.value\n            : valueDate > new Date(maxOutput.value);\n      }\n\n      if (isString(minOutput.value) && inputValue) {\n        exceedMin = isTime\n          ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n          : isWeek\n            ? inputValue < minOutput.value\n            : valueDate < new Date(minOutput.value);\n      }\n    }\n\n    if (exceedMax || exceedMin) {\n      getMinMaxMessage(\n        !!exceedMax,\n        maxOutput.message,\n        minOutput.message,\n        INPUT_VALIDATION_RULES.max,\n        INPUT_VALIDATION_RULES.min,\n      );\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(error[name]!.message);\n        return error;\n      }\n    }\n  }\n\n  if (\n    (maxLength || minLength) &&\n    !isEmpty &&\n    (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))\n  ) {\n    const maxLengthOutput = getValueAndMessage(maxLength);\n    const minLengthOutput = getValueAndMessage(minLength);\n    const exceedMax =\n      !isNullOrUndefined(maxLengthOutput.value) &&\n      inputValue.length > +maxLengthOutput.value;\n    const exceedMin =\n      !isNullOrUndefined(minLengthOutput.value) &&\n      inputValue.length < +minLengthOutput.value;\n\n    if (exceedMax || exceedMin) {\n      getMinMaxMessage(\n        exceedMax,\n        maxLengthOutput.message,\n        minLengthOutput.message,\n      );\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(error[name]!.message);\n        return error;\n      }\n    }\n  }\n\n  if (pattern && !isEmpty && isString(inputValue)) {\n    const { value: patternValue, message } = getValueAndMessage(pattern);\n\n    if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n      error[name] = {\n        type: INPUT_VALIDATION_RULES.pattern,\n        message,\n        ref,\n        ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n      };\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(message);\n        return error;\n      }\n    }\n  }\n\n  if (validate) {\n    if (isFunction(validate)) {\n      const result = await validate(inputValue, formValues);\n      const validateError = getValidateError(result, inputRef);\n\n      if (validateError) {\n        error[name] = {\n          ...validateError,\n          ...appendErrorsCurry(\n            INPUT_VALIDATION_RULES.validate,\n            validateError.message,\n          ),\n        };\n        if (!validateAllFieldCriteria) {\n          setCustomValidity(validateError.message);\n          return error;\n        }\n      }\n    } else if (isObject(validate)) {\n      let validationResult = {} as FieldError;\n\n      for (const key in validate) {\n        if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n          break;\n        }\n\n        const validateError = getValidateError(\n          await validate[key](inputValue, formValues),\n          inputRef,\n          key,\n        );\n\n        if (validateError) {\n          validationResult = {\n            ...validateError,\n            ...appendErrorsCurry(key, validateError.message),\n          };\n\n          if (!validateAllFieldCriteria) {\n            setCustomValidity(validateError.message);\n          }\n\n          if (validateAllFieldCriteria) {\n            error[name] = validationResult;\n          }\n        }\n      }\n\n      if (!isEmptyObject(validationResult)) {\n        error[name] = {\n          ref: inputRef,\n          ...validationResult,\n        };\n        if (!validateAllFieldCriteria) {\n          return error;\n        }\n      }\n    }\n  }\n\n  const fieldError = error[name];\n\n  setCustomValidity(fieldError ? fieldError.message : true);\n\n  return error;\n};\n","export default <T>(value: T) => (Array.isArray(value) ? value : [value]);\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default <T>(data: T[], value: T | T[]): T[] => [\n  ...data,\n  ...convertToArrayPayload(value),\n];\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n  Array.isArray(value) ? value.map(() => undefined) : undefined;\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function insert<T>(data: T[], index: number): (T | undefined)[];\nexport default function insert<T>(\n  data: T[],\n  index: number,\n  value: T | T[],\n): T[];\nexport default function insert<T>(\n  data: T[],\n  index: number,\n  value?: T | T[],\n): (T | undefined)[] {\n  return [\n    ...data.slice(0, index),\n    ...convertToArrayPayload(value),\n    ...data.slice(index),\n  ];\n}\n","import isUndefined from './isUndefined';\n\nexport default <T>(\n  data: (T | undefined)[],\n  from: number,\n  to: number,\n): (T | undefined)[] => {\n  if (!Array.isArray(data)) {\n    return [];\n  }\n\n  if (isUndefined(data[to])) {\n    data[to] = undefined;\n  }\n  data.splice(to, 0, data.splice(from, 1)[0]);\n\n  return data;\n};\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default <T>(data: T[], value: T | T[]): T[] => [\n  ...convertToArrayPayload(value),\n  ...convertToArrayPayload(data),\n];\n","export default <TValue>(value: TValue[]) =>\n  Array.isArray(value) ? value.filter(Boolean) : [];\n","import compact from './compact';\nimport convertToArrayPayload from './convertToArrayPayload';\nimport isUndefined from './isUndefined';\n\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\n  let i = 0;\n  const temp = [...data];\n\n  for (const index of indexes) {\n    temp.splice(index - i, 1);\n    i++;\n  }\n\n  return compact(temp).length ? temp : [];\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n  isUndefined(index)\n    ? []\n    : removeAtIndexes(\n        data,\n        (convertToArrayPayload(index) as number[]).sort((a, b) => a - b),\n      );\n","export default <T>(data: T[], indexA: number, indexB: number): void => {\n  [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n","import { PROTOTYPE_KEYWORDS } from '../constants';\n\nimport isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isString from './isString';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n  const length = updatePath.length - 1;\n  let index = 0;\n\n  while (index < length) {\n    if (isNullOrUndefined(object)) {\n      object = undefined;\n      break;\n    }\n    object = object[updatePath[index]];\n    index++;\n  }\n\n  return object;\n}\n\nfunction isEmptyArray(obj: unknown[]) {\n  for (const key in obj) {\n    if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default function unset(object: any, path: string | (string | number)[]) {\n  if (isString(path) && Object.prototype.hasOwnProperty.call(object, path)) {\n    delete object[path];\n    return object;\n  }\n\n  const paths = Array.isArray(path)\n    ? path\n    : isKey(path)\n      ? [path]\n      : stringToPath(path);\n  if (paths.some((segment) => PROTOTYPE_KEYWORDS.includes(String(segment)))) {\n    return object;\n  }\n  const childObject = paths.length === 1 ? object : baseGet(object, paths);\n\n  const index = paths.length - 1;\n  const key = paths[index];\n\n  if (childObject) {\n    delete childObject[key];\n  }\n\n  if (\n    index !== 0 &&\n    ((isObject(childObject) && isEmptyObject(childObject)) ||\n      (Array.isArray(childObject) && isEmptyArray(childObject)))\n  ) {\n    unset(object, paths.slice(0, -1));\n  }\n\n  return object;\n}\n","export default <T>(fieldValues: T[], index: number, value: T) => {\n  fieldValues[index] = value;\n  return fieldValues;\n};\n","import React from 'react';\n\nimport generateId from './logic/generateId';\nimport getFocusFieldName from './logic/getFocusFieldName';\nimport getValidationModes from './logic/getValidationModes';\nimport isWatched from './logic/isWatched';\nimport iterateFieldsByAction from './logic/iterateFieldsByAction';\nimport updateFieldArrayRootError from './logic/updateFieldArrayRootError';\nimport validateField from './logic/validateField';\nimport appendAt from './utils/append';\nimport cloneObject from './utils/cloneObject';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport deepEqual from './utils/deepEqual';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isBoolean from './utils/isBoolean';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isObject from './utils/isObject';\nimport moveArrayAt from './utils/move';\nimport prependAt from './utils/prepend';\nimport removeArrayAt from './utils/remove';\nimport set from './utils/set';\nimport swapArrayAt from './utils/swap';\nimport unset from './utils/unset';\nimport updateAt from './utils/update';\nimport { VALIDATION_MODE } from './constants';\nimport type {\n  Control,\n  Field,\n  FieldArray,\n  FieldArrayMethodProps,\n  FieldArrayPath,\n  FieldArrayWithId,\n  FieldError,\n  FieldErrors,\n  FieldPath,\n  FieldValues,\n  FormState,\n  InternalFieldName,\n  RegisterOptions,\n  UseFieldArrayProps,\n  UseFieldArrayReturn,\n} from './types';\nimport { useFormControlContext } from './useFormControlContext';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useResyncOnReconnect } from './useResyncOnReconnect';\n\n/**\n * Hook for dynamic field arrays. Provides `fields` and mutation methods:\n * `append`, `prepend`, `remove`, `insert`, `swap`, `move`, `update`, `replace`.\n *\n * @see [API](https://react-hook-form.com/docs/usefieldarray)\n *\n * @example\n * ```tsx\n * const { fields, append } = useFieldArray({ control, name: \"items\" });\n * return fields.map((f, i) => <input key={f.id} {...register(`items.${i}.name`)} />);\n * ```\n */\nexport function useFieldArray<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldArrayName extends FieldArrayPath<TFieldValues> =\n    FieldArrayPath<TFieldValues>,\n  TKeyName extends string = 'id',\n  TTransformedValues = TFieldValues,\n>(\n  props: UseFieldArrayProps<\n    TFieldValues,\n    TFieldArrayName,\n    TKeyName,\n    TTransformedValues\n  >,\n): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> {\n  const formControl = useFormControlContext<\n    TFieldValues,\n    unknown,\n    TTransformedValues\n  >();\n  const {\n    control = formControl,\n    name,\n    keyName = 'id',\n    disabled,\n    shouldUnregister,\n    rules,\n  } = props;\n  const getCurrentFieldArray = () => control._getFieldArray(name);\n\n  const [fields, setFields] = React.useState(getCurrentFieldArray);\n  const ids = React.useRef<string[]>(\n    control._getFieldArray(name).map(generateId),\n  );\n\n  const _actioned = React.useRef(false);\n\n  const { resyncIfNeeded, snapshot } =\n    useResyncOnReconnect(getCurrentFieldArray);\n  const _prevControl = React.useRef(control);\n  const _prevName = React.useRef(name);\n\n  if (!disabled) {\n    control._names.array.add(name);\n  }\n\n  React.useMemo(\n    () =>\n      !disabled &&\n      rules &&\n      fields.length >= 0 &&\n      (control as Control<TFieldValues, unknown, TTransformedValues>).register(\n        name as FieldPath<TFieldValues>,\n        rules as RegisterOptions<TFieldValues>,\n      ),\n    [control, name, fields.length, rules, disabled],\n  );\n\n  useIsomorphicLayoutEffect(() => {\n    if (disabled) {\n      return;\n    }\n\n    if (_prevControl.current === control && _prevName.current === name) {\n      resyncIfNeeded(true, getCurrentFieldArray, (fieldValues) => {\n        setFields(fieldValues);\n        ids.current = fieldValues.map(generateId);\n      });\n    } else {\n      _prevControl.current = control;\n      _prevName.current = name;\n\n      const fieldValues = getCurrentFieldArray();\n      if (!deepEqual(fields, fieldValues)) {\n        setFields(fieldValues);\n        ids.current = fieldValues.map(generateId);\n      }\n      snapshot(true, getCurrentFieldArray);\n    }\n\n    const unsubscribe = control._subjects.array.subscribe({\n      next: ({\n        values,\n        name: fieldArrayName,\n      }: {\n        values?: FieldValues;\n        name?: InternalFieldName;\n      }) => {\n        if (fieldArrayName === name || !fieldArrayName) {\n          const fieldValues = get(values, name);\n          if (Array.isArray(fieldValues)) {\n            setFields(fieldValues);\n            ids.current = fieldValues.map(generateId);\n          } else if (!fieldArrayName) {\n            setFields([]);\n            ids.current = [];\n          }\n        }\n      },\n    }).unsubscribe;\n\n    return () => {\n      unsubscribe();\n      snapshot(true, getCurrentFieldArray);\n    };\n  }, [control, name, disabled, resyncIfNeeded, snapshot]);\n\n  const updateValues = React.useCallback(\n    <\n      T extends Partial<\n        FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n      >[],\n    >(\n      updatedFieldArrayValues: T,\n    ) => {\n      _actioned.current = true;\n      control._setFieldArray(name, updatedFieldArrayValues);\n    },\n    [control, name],\n  );\n\n  const append = (\n    value:\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    options?: FieldArrayMethodProps,\n  ) => {\n    if (disabled) {\n      return;\n    }\n\n    const appendValue = convertToArrayPayload(cloneObject(value));\n    const updatedFieldArrayValues = appendAt(\n      control._getFieldArray(name),\n      appendValue,\n    );\n    control._names.focus = getFocusFieldName(\n      name,\n      updatedFieldArrayValues.length - 1,\n      options,\n    );\n    ids.current = appendAt(ids.current, appendValue.map(generateId));\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n      argA: fillEmptyArray(value),\n    });\n  };\n\n  const prepend = (\n    value:\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    options?: FieldArrayMethodProps,\n  ) => {\n    if (disabled) {\n      return;\n    }\n\n    const prependValue = convertToArrayPayload(cloneObject(value));\n    const updatedFieldArrayValues = prependAt(\n      control._getFieldArray(name),\n      prependValue,\n    );\n    control._names.focus = getFocusFieldName(name, 0, options);\n    ids.current = prependAt(ids.current, prependValue.map(generateId));\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n      argA: fillEmptyArray(value),\n    });\n  };\n\n  const remove = (index?: number | number[]) => {\n    if (disabled) {\n      return;\n    }\n\n    const updatedFieldArrayValues: Partial<\n      FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n    >[] = removeArrayAt(control._getFieldArray(name), index);\n    ids.current = removeArrayAt(ids.current, index);\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    !Array.isArray(get(control._fields, name)) &&\n      set(control._fields, name, undefined);\n    control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n      argA: index,\n    });\n  };\n\n  const insert = (\n    index: number,\n    value:\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    options?: FieldArrayMethodProps,\n  ) => {\n    if (disabled) {\n      return;\n    }\n\n    const insertValue = convertToArrayPayload(cloneObject(value));\n    const updatedFieldArrayValues = insertAt(\n      control._getFieldArray(name),\n      index,\n      insertValue,\n    );\n    control._names.focus = getFocusFieldName(name, index, options);\n    ids.current = insertAt(ids.current, index, insertValue.map(generateId));\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._setFieldArray(name, updatedFieldArrayValues, insertAt, {\n      argA: index,\n      argB: fillEmptyArray(value),\n    });\n  };\n\n  const swap = (indexA: number, indexB: number) => {\n    if (disabled) {\n      return;\n    }\n\n    const updatedFieldArrayValues = control._getFieldArray(name);\n    swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n    swapArrayAt(ids.current, indexA, indexB);\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._setFieldArray(\n      name,\n      updatedFieldArrayValues,\n      swapArrayAt,\n      {\n        argA: indexA,\n        argB: indexB,\n      },\n      false,\n    );\n  };\n\n  const move = (from: number, to: number) => {\n    if (disabled) {\n      return;\n    }\n\n    const updatedFieldArrayValues = control._getFieldArray(name);\n    moveArrayAt(updatedFieldArrayValues, from, to);\n    moveArrayAt(ids.current, from, to);\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._setFieldArray(\n      name,\n      updatedFieldArrayValues,\n      moveArrayAt,\n      {\n        argA: from,\n        argB: to,\n      },\n      false,\n    );\n  };\n\n  const update = (\n    index: number,\n    value: FieldArray<TFieldValues, TFieldArrayName>,\n  ) => {\n    if (disabled) {\n      return;\n    }\n\n    const updateValue = cloneObject(value);\n    const updatedFieldArrayValues = updateAt(\n      control._getFieldArray<\n        FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n      >(name),\n      index,\n      updateValue as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>,\n    );\n    ids.current = [...updatedFieldArrayValues].map((item, i) =>\n      !item || i === index ? generateId() : ids.current[i],\n    );\n    updateValues(updatedFieldArrayValues);\n    setFields([...updatedFieldArrayValues]);\n    control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n      argA: index,\n      argB: fillEmptyArray(value),\n    });\n  };\n\n  const replace = (\n    value:\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n  ) => {\n    if (disabled) {\n      return;\n    }\n\n    const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n    ids.current = updatedFieldArrayValues.map(generateId);\n    updateValues([...updatedFieldArrayValues]);\n    setFields([...updatedFieldArrayValues]);\n    control._setFieldArray(\n      name,\n      [...updatedFieldArrayValues],\n      (data: unknown) =>\n        Array.isArray(data)\n          ? data.slice(0, updatedFieldArrayValues.length)\n          : data,\n      {},\n    );\n  };\n\n  React.useEffect(() => {\n    if (disabled) {\n      control._state.actionArrayLengths.delete(name);\n      return;\n    }\n\n    control._state.action = false;\n    control._state.actionArrayLengths.delete(name);\n\n    isWatched(name, control._names) &&\n      control._subjects.state.next({\n        ...control._formState,\n      } as FormState<TFieldValues>);\n\n    const validationModes = getValidationModes(control._options.mode);\n\n    if (\n      _actioned.current &&\n      (!validationModes.isOnSubmit || control._formState.isSubmitted) &&\n      !getValidationModes(control._options.reValidateMode).isOnSubmit &&\n      !validationModes.isOnBlur\n    ) {\n      if (control._options.resolver) {\n        control._runSchema([name]).then((result) => {\n          control._updateIsValidating([name]);\n          const error = get(result.errors, name);\n          const existingError = get(control._formState.errors, name);\n          const existingErrorType =\n            existingError && (existingError.type || existingError.root?.type);\n          const existingErrorMessage =\n            existingError &&\n            (existingError.message || existingError.root?.message);\n\n          if (\n            existingError\n              ? (!error && existingErrorType) ||\n                (error &&\n                  (existingErrorType !== error.type ||\n                    existingErrorMessage !== error.message))\n              : error && error.type\n          ) {\n            if (error) {\n              isObject(error) &&\n              !Object.keys(error).some((key) => !Number.isNaN(+key))\n                ? updateFieldArrayRootError(\n                    control._formState.errors as FieldErrors<TFieldValues>,\n                    { [name]: error } as Partial<Record<string, FieldError>>,\n                    name,\n                  )\n                : set(control._formState.errors, name, error);\n            } else {\n              unset(control._formState.errors, name);\n            }\n            control._subjects.state.next({\n              errors: control._formState.errors as FieldErrors<TFieldValues>,\n            });\n          }\n        });\n      } else {\n        const field: Field = get(control._fields, name);\n        if (field && field._f) {\n          validateField(\n            field,\n            control._names.disabled,\n            control._formValues,\n            control._options.criteriaMode === VALIDATION_MODE.all,\n            control._options.shouldUseNativeValidation,\n            true,\n          ).then(\n            (error) =>\n              !isEmptyObject(error) &&\n              control._subjects.state.next({\n                errors: updateFieldArrayRootError(\n                  control._formState.errors as FieldErrors<TFieldValues>,\n                  error,\n                  name,\n                ) as FieldErrors<TFieldValues>,\n              }),\n          );\n        }\n      }\n    }\n\n    // External updates that change `fields` (e.g. reset() or setValue() on\n    // the array) already notify subscribers with the up-to-date values\n    // themselves, so only re-broadcast here for genuine array method calls.\n    _actioned.current &&\n      control._subjects.state.next({\n        name,\n        values: cloneObject(control._formValues) as TFieldValues,\n      });\n\n    control._names.focus &&\n      iterateFieldsByAction(control._fields, (ref, key: string) => {\n        if (\n          control._names.focus &&\n          key.startsWith(control._names.focus) &&\n          ref.focus\n        ) {\n          ref.focus();\n          return 1;\n        }\n        return;\n      });\n\n    control._names.focus = '';\n\n    control._setValid();\n    _actioned.current = false;\n  }, [fields, name, control, disabled]);\n\n  React.useEffect(() => {\n    if (!disabled) {\n      !get(control._formValues, name) && control._setFieldArray(name);\n    }\n\n    return () => {\n      control._state.actionArrayLengths.delete(name);\n\n      if (disabled) {\n        return;\n      }\n\n      const shouldKeepFieldArrayValues = !(\n        control._options.shouldUnregister || shouldUnregister\n      );\n      const updateMounted = (name: InternalFieldName, value: boolean) => {\n        const field: Field = get(control._fields, name);\n        if (field && field._f) {\n          field._f.mount = value;\n        }\n      };\n\n      if (_actioned.current && shouldKeepFieldArrayValues) {\n        control._subjects.state.next({\n          name,\n          values: cloneObject(control._formValues) as TFieldValues,\n        });\n      }\n\n      shouldKeepFieldArrayValues\n        ? updateMounted(name, false)\n        : control.unregister(name as FieldPath<TFieldValues>);\n    };\n  }, [name, control, keyName, shouldUnregister, disabled]);\n\n  return {\n    swap: React.useCallback(swap, [updateValues, name, control, disabled]),\n    move: React.useCallback(move, [updateValues, name, control, disabled]),\n    prepend: React.useCallback(prepend, [\n      updateValues,\n      name,\n      control,\n      disabled,\n    ]),\n    append: React.useCallback(append, [updateValues, name, control, disabled]),\n    remove: React.useCallback(remove, [updateValues, name, control, disabled]),\n    insert: React.useCallback(insert, [updateValues, name, control, disabled]),\n    update: React.useCallback(update, [updateValues, name, control, disabled]),\n    replace: React.useCallback(replace, [\n      updateValues,\n      name,\n      control,\n      disabled,\n    ]),\n    fields: React.useMemo(\n      () =>\n        fields.map((field, index) => ({\n          ...field,\n          ...(isBoolean(disabled) ? { disabled } : {}),\n          [keyName]: ids.current[index] || generateId(),\n        })) as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>[],\n      [fields, keyName, disabled],\n    ),\n  };\n}\n","import type {\n  FieldArray as FieldArrayType,\n  FieldArrayPath,\n  FieldArrayProps,\n  FieldValues,\n} from './types';\nimport { useFieldArray } from './useFieldArray';\n\ntype FieldArray<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldArrayName extends FieldArrayPath<TFieldValues> =\n    FieldArrayPath<TFieldValues>,\n> = FieldArrayType<TFieldValues, TFieldArrayName>;\n\n/**\n * Component based on `useFieldArray` hook to work with controlled component.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control, register } = useForm<FormValues>({\n *     defaultValues: {\n *       test: [\n *         {\n *           value: '',\n *         },\n *       ],\n *     },\n *   });\n *\n *   return (\n *     <form>\n *       <FieldArray\n *         control={control}\n *         name=\"test\"\n *         render={({ fields }) =>\n *           fields.map((field, index) => (\n *             <input key={field.id} {...register(`test.${index}.value`)} />\n *           ))\n *         }\n *       />\n *     </form>\n *   );\n * }\n * ```\n */\nconst FieldArray = <\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n  TKeyName extends string = 'id',\n>(\n  props: FieldArrayProps<TFieldValues, TName, TKeyName>,\n) => props.render(useFieldArray<TFieldValues, TName, TKeyName>(props));\n\nexport { FieldArray };\n","import type { FieldValues } from '../types';\n\nimport isDateObject from './isDateObject';\nimport { isObjectType } from './isObject';\n\nconst isFileLike = (value: unknown) =>\n  (typeof Blob !== 'undefined' && value instanceof Blob) ||\n  (typeof File !== 'undefined' && value instanceof File);\n\nconst isFileListLike = (value: unknown) =>\n  typeof FileList !== 'undefined' && value instanceof FileList;\n\nexport const flatten = (obj: FieldValues) => {\n  const output: FieldValues = {};\n\n  for (const key of Object.keys(obj)) {\n    if (\n      isObjectType(obj[key]) &&\n      obj[key] !== null &&\n      !isDateObject(obj[key]) &&\n      !isFileLike(obj[key]) &&\n      !isFileListLike(obj[key])\n    ) {\n      const nested = flatten(obj[key]);\n\n      for (const nestedKey of Object.keys(nested)) {\n        output[`${key}.${nestedKey}`] = nested[nestedKey];\n      }\n    } else {\n      output[key] = obj[key];\n    }\n  }\n\n  return output;\n};\n","import { flatten } from './flatten';\nimport isUndefined from './isUndefined';\n\nfunction jsonToFormData(json: any) {\n  const result = new FormData();\n\n  const flattenFormValues = flatten(json);\n\n  for (const key in flattenFormValues) {\n    const value = flattenFormValues[key];\n\n    if (isUndefined(value)) {\n      continue;\n    }\n\n    if (typeof FileList !== 'undefined' && value instanceof FileList) {\n      for (let index = 0; index < value.length; index++) {\n        const file = value[index];\n\n        file && result.append(key, file);\n      }\n\n      continue;\n    }\n\n    result.append(key, value);\n  }\n\n  return result;\n}\n\nexport { jsonToFormData };\n","function safeJSONStringify(value?: unknown) {\n  try {\n    return JSON.stringify(value);\n  } catch {\n    return '';\n  }\n}\n\nfunction safeJSONParse(value?: string) {\n  try {\n    return JSON.parse(value as string);\n  } catch {\n    return;\n  }\n}\n\nconst safeJSON = {\n  stringify: safeJSONStringify,\n  parse: safeJSONParse,\n};\n\nexport { safeJSON, safeJSONParse, safeJSONStringify };\n\nexport default safeJSON;\n","export default function noop() {}\n","import React from 'react';\n\nimport type {\n  Control,\n  FieldValues,\n  FormProviderProps,\n  UseFormReturn,\n} from './types';\nimport { HookFormControlContext } from './useFormControlContext';\n\nconst HookFormContext = React.createContext<UseFormReturn | null>(null);\nHookFormContext.displayName = 'HookFormContext';\n\n/**\n * Retrieves all `useForm` methods from the nearest `FormProvider`.\n * Use in deeply nested components to avoid prop-drilling.\n *\n * @see [API](https://react-hook-form.com/docs/useformcontext)\n *\n * @example\n * ```tsx\n * const { register } = useFormContext<FormValues>();\n * ```\n */\nexport const useFormContext = <\n  TFieldValues extends FieldValues,\n  TContext = any,\n  TTransformedValues = TFieldValues,\n>(): UseFormReturn<TFieldValues, TContext, TTransformedValues> =>\n  React.useContext(HookFormContext) as UseFormReturn<\n    TFieldValues,\n    TContext,\n    TTransformedValues\n  >;\n\n/**\n * Provides all `useForm` methods to the component tree via React Context.\n * Pair with `useFormContext` to consume them in any descendant.\n *\n * @see [API](https://react-hook-form.com/docs/useformcontext)\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n *   <form onSubmit={methods.handleSubmit(onSubmit)}>{children}</form>\n * </FormProvider>\n * ```\n */\nexport const FormProvider = <\n  TFieldValues extends FieldValues,\n  TContext = any,\n  TTransformedValues = TFieldValues,\n>({\n  children,\n  watch,\n  getValues,\n  getErrors,\n  getFieldState,\n  setError,\n  clearErrors,\n  setValue,\n  setValues,\n  trigger,\n  formState,\n  resetField,\n  reset,\n  resetDefaultValues,\n  handleSubmit,\n  unregister,\n  control,\n  register,\n  setFocus,\n  subscribe,\n}: FormProviderProps<TFieldValues, TContext, TTransformedValues>) => {\n  const memoizedValue = React.useMemo<\n    UseFormReturn<TFieldValues, TContext, TTransformedValues>\n  >(\n    () => ({\n      watch,\n      getValues,\n      getErrors,\n      getFieldState,\n      setError,\n      clearErrors,\n      setValue,\n      setValues,\n      trigger,\n      formState,\n      resetField,\n      reset,\n      resetDefaultValues,\n      handleSubmit,\n      unregister,\n      control,\n      register,\n      setFocus,\n      subscribe,\n    }),\n    [\n      clearErrors,\n      control,\n      formState,\n      getErrors,\n      getFieldState,\n      getValues,\n      handleSubmit,\n      register,\n      reset,\n      resetDefaultValues,\n      resetField,\n      setError,\n      setFocus,\n      setValue,\n      setValues,\n      subscribe,\n      trigger,\n      unregister,\n      watch,\n    ],\n  );\n\n  return (\n    <HookFormContext.Provider value={memoizedValue as unknown as UseFormReturn}>\n      <HookFormControlContext.Provider value={memoizedValue.control as Control}>\n        {children}\n      </HookFormControlContext.Provider>\n    </HookFormContext.Provider>\n  );\n};\n","import React from 'react';\n\nimport { jsonToFormData } from './utils/formData';\nimport isFunction from './utils/isFunction';\nimport isString from './utils/isString';\nimport { safeJSONStringify } from './utils/json';\nimport noop from './utils/noop';\nimport type { FieldValues, FormProps } from './types';\nimport { useFormContext } from './useFormContext';\n\nconst POST_REQUEST = 'post';\n\nfunction defaultValidateStatus(status: number) {\n  return status >= 200 && status < 300;\n}\n\n/**\n * Form component that handles submission, including optional `action` fetch and server error wiring.\n *\n * @see [API](https://react-hook-form.com/docs/useform/form)\n *\n * @example\n * ```tsx\n * <Form action=\"/api\" control={control}>\n *   <input {...register(\"name\")} />\n *   <p>{errors?.root?.server && 'Server error'}</p>\n *   <button>Submit</button>\n * </Form>\n * ```\n */\nexport function Form<\n  TFieldValues extends FieldValues,\n  TTransformedValues = TFieldValues,\n>(props: FormProps<TFieldValues, TTransformedValues>): React.ReactNode {\n  const methods = useFormContext<TFieldValues, unknown, TTransformedValues>();\n  const [mounted, setMounted] = React.useState(false);\n  const {\n    control = methods.control,\n    onSubmit = noop,\n    children,\n    action,\n    method = POST_REQUEST,\n    headers,\n    encType,\n    onError = noop,\n    render,\n    onSuccess = noop,\n    validateStatus = defaultValidateStatus,\n    ...rest\n  } = props;\n\n  const handleSubmit = React.useMemo(() => {\n    return control.handleSubmit(async (data, event) => {\n      const formData = jsonToFormData(data);\n      const formDataJson = safeJSONStringify(data);\n\n      if (onSubmit) {\n        await onSubmit({\n          data,\n          event,\n          method,\n          formData,\n          formDataJson,\n        });\n      }\n\n      if (isString(action)) {\n        try {\n          const shouldStringifySubmissionData =\n            (headers &&\n              headers['Content-Type'] &&\n              headers['Content-Type'].includes('json')) ||\n            (encType && encType.includes('json'));\n\n          const response = await fetch(action, {\n            method,\n            headers: {\n              ...headers,\n              ...(encType &&\n                encType !== 'multipart/form-data' && {\n                  'Content-Type': encType,\n                }),\n            },\n            body: shouldStringifySubmissionData ? formDataJson : formData,\n          });\n\n          if (response && !validateStatus(response.status)) {\n            onError({ response });\n            return { type: String(response.status) };\n          } else {\n            onSuccess({ response });\n          }\n        } catch (error: unknown) {\n          onError({ error });\n          return { type: '' };\n        }\n      }\n\n      if (isFunction(action)) {\n        try {\n          await action(formData);\n        } catch (error: unknown) {\n          onError({ error });\n          return { type: '' };\n        }\n      }\n\n      // Return nothing when successful.\n      return;\n    });\n  }, [\n    control,\n    onSubmit,\n    method,\n    action,\n    headers,\n    encType,\n    validateStatus,\n    onError,\n    onSuccess,\n  ]);\n\n  const submit = React.useCallback(\n    async (event?: React.BaseSyntheticEvent) => {\n      const err = await handleSubmit(event);\n\n      if (err && control) {\n        control._subjects.state.next({ isSubmitSuccessful: false });\n        control.setError('root.server', err);\n      }\n    },\n    [handleSubmit, control],\n  );\n\n  React.useEffect(() => {\n    setMounted(true);\n  }, []);\n\n  if (render) {\n    return render({ submit });\n  }\n\n  // React forbids passing `method`/`encType` alongside a function `action`\n  // (a Server-Action-style submission) -- it manages those itself and warns\n  // if they're present, so they're only rendered for string/URL actions.\n  return (\n    <form\n      noValidate={mounted}\n      action={action}\n      {...(!isFunction(action) && { method, encType })}\n      onSubmit={submit}\n      {...rest}\n    >\n      {children}\n    </form>\n  );\n}\n","import type { ReactNode } from 'react';\n\nimport type {\n  FieldValues,\n  FormState as FormStateType,\n  UseFormStateProps,\n  UseFormStateReturn,\n} from './types';\nimport { useFormState } from './useFormState';\n\nexport type FormStateProps<\n  TFieldValues extends FieldValues,\n  TTransformedValues = TFieldValues,\n> = UseFormStateProps<TFieldValues, TTransformedValues> & {\n  render: (values: UseFormStateReturn<TFieldValues>) => ReactNode;\n};\n\nexport type FormState<TFieldValues extends FieldValues> =\n  FormStateType<TFieldValues>;\n\nexport const FormState = <\n  TFieldValues extends FieldValues,\n  TTransformedValues = TFieldValues,\n>({\n  control,\n  disabled,\n  exact,\n  name,\n  render,\n}: FormStateProps<TFieldValues, TTransformedValues>) =>\n  render(useFormState({ control, name, disabled, exact }));\n\n/** @deprecated Use `FormState` instead. Kept as an alias for backward compatibility. */\nexport const FormStateSubscribe = FormState;\n\n/** @deprecated Use `FormStateProps` instead. Kept as an alias for backward compatibility. */\nexport type FormStateSubscribeProps<\n  TFieldValues extends FieldValues,\n  TTransformedValues = TFieldValues,\n> = FormStateProps<TFieldValues, TTransformedValues>;\n","import type { Noop } from '../types';\n\nexport type Observer<T> = {\n  next: (value: T) => void;\n};\n\nexport type Subscription = {\n  unsubscribe: Noop;\n};\n\nexport type Subject<T> = {\n  readonly observers: Observer<T>[];\n  subscribe: (value: Observer<T>) => Subscription;\n  unsubscribe: Noop;\n} & Observer<T>;\n\nexport default <T>(): Subject<T> => {\n  let _observers: Observer<T>[] = [];\n\n  const next = (value: T) => {\n    for (const observer of _observers) {\n      observer.next && observer.next(value);\n    }\n  };\n\n  const subscribe = (observer: Observer<T>): Subscription => {\n    _observers.push(observer);\n    return {\n      unsubscribe: () => {\n        _observers = _observers.filter((o) => o !== observer);\n      },\n    };\n  };\n\n  const unsubscribe = () => {\n    _observers = [];\n  };\n\n  return {\n    get observers() {\n      return _observers;\n    },\n    next,\n    subscribe,\n    unsubscribe,\n  };\n};\n","import isObject from './isObject';\n\nexport default function extractFormValues<\n  T extends object,\n  K extends Record<string, unknown>,\n>(fieldsState: T, formValues: K) {\n  const values: Record<string, unknown> = {};\n\n  for (const key in fieldsState) {\n    if (fieldsState.hasOwnProperty(key)) {\n      const fieldState = fieldsState[key];\n      const fieldValue = formValues[key];\n\n      if (fieldState && isObject(fieldState) && fieldValue) {\n        const nestedFieldsState = extractFormValues(\n          fieldState,\n          fieldValue as K,\n        );\n\n        if (isObject(nestedFieldsState)) {\n          values[key] = nestedFieldsState;\n        }\n      } else if (fieldsState[key]) {\n        values[key] = fieldValue;\n      }\n    }\n  }\n\n  return values;\n}\n","import isKey from './isKey';\nimport { isObjectType } from './isObject';\nimport stringToPath from './stringToPath';\n\nconst hasOwn = (value: unknown, key: string) =>\n  value !== null &&\n  isObjectType(value) &&\n  Object.prototype.hasOwnProperty.call(value, key);\n\nexport default <T>(object: T, path?: string | null): boolean => {\n  if (!path) {\n    return false;\n  }\n\n  let result: unknown = object;\n\n  for (const key of isKey(path) ? [path] : stringToPath(path)) {\n    if (!hasOwn(result, key)) {\n      // `get` also resolves a path held as a single literal key, eg `{ 'a.b': 1 }`\n      return hasOwn(object, path);\n    }\n\n    result = (result as Record<string, unknown>)[key];\n  }\n\n  return true;\n};\n","import type { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n  element.type === `select-multiple`;\n","import type { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n  isRadioInput(ref) || isCheckBoxInput(ref);\n","import type { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\n","import type { FieldValues } from '../types';\nimport get from '../utils/get';\nimport isObject from '../utils/isObject';\n\nfunction isDirtyContainer(value: unknown): boolean {\n  return Array.isArray(value) || isObject(value);\n}\n\nexport default function collectDirtyFieldNames(\n  dirtyTree: FieldValues,\n  cachedDirtyFields: FieldValues,\n  prefix = '',\n  names: string[] = [],\n) {\n  for (const key in dirtyTree) {\n    const path = prefix ? `${prefix}.${key}` : key;\n    const value = dirtyTree[key];\n\n    if (\n      isDirtyContainer(value) &&\n      isDirtyContainer(get(cachedDirtyFields, path))\n    ) {\n      collectDirtyFieldNames(value, cachedDirtyFields, path, names);\n    } else {\n      names.push(path);\n    }\n  }\n\n  return names;\n}\n","import isFunction from './isFunction';\n\nexport default <T>(data: T): boolean => {\n  for (const key in data) {\n    if (isFunction(data[key])) {\n      return true;\n    }\n  }\n  return false;\n};\n","import type { FieldRefs } from '../types';\nimport deepEqual from '../utils/deepEqual';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isUndefined from '../utils/isUndefined';\nimport objectHasFunction from '../utils/objectHasFunction';\n\nfunction isTraversable<T>(value: T): boolean {\n  return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));\n}\n\nfunction isRegisteredLeaf(fieldRef: unknown): boolean {\n  return !!(fieldRef && '_f' in (fieldRef as object));\n}\n\nfunction isEmptyDirtyContainer(value: Record<string, any>): boolean {\n  return Array.isArray(value)\n    ? !value.some((item) => !isUndefined(item))\n    : !Object.keys(value).length;\n}\n\nfunction clearDirtyField(container: Record<string, any>, key: string) {\n  if (Array.isArray(container)) {\n    (container as any)[key] = undefined;\n  } else {\n    delete container[key];\n  }\n}\n\nfunction markFieldsDirty<T>(\n  data: T,\n  fields: Record<string, any> = {},\n  fieldRefs?: Record<string, any>,\n) {\n  for (const key in data) {\n    const value = data[key];\n    const fieldRef = fieldRefs && fieldRefs[key];\n\n    if (\n      isTraversable(value) &&\n      (!Array.isArray(value) || !isRegisteredLeaf(fieldRef))\n    ) {\n      fields[key] = Array.isArray(value) ? [] : {};\n      markFieldsDirty(value, fields[key], fieldRef);\n\n      if (isEmptyDirtyContainer(fields[key])) {\n        clearDirtyField(fields, key);\n      }\n    } else if (!isUndefined(value)) {\n      fields[key] = true;\n    }\n  }\n\n  return fields;\n}\n\nexport default function getDirtyFields<T>(\n  data: T,\n  formValues: T,\n  dirtyFieldsFromValues?: Record<\n    Extract<keyof T, string>,\n    ReturnType<typeof markFieldsDirty> | boolean\n  >,\n  fieldRefs?: FieldRefs,\n) {\n  if (!dirtyFieldsFromValues) {\n    dirtyFieldsFromValues = markFieldsDirty(formValues, {}, fieldRefs);\n  }\n\n  for (const key in data) {\n    const value = data[key];\n    const fieldRef = fieldRefs && (fieldRefs as Record<string, any>)[key];\n\n    if (\n      isTraversable(value) &&\n      (!Array.isArray(value) || !isRegisteredLeaf(fieldRef))\n    ) {\n      if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n        dirtyFieldsFromValues[key] = markFieldsDirty(\n          value,\n          Array.isArray(value) ? [] : {},\n          fieldRef,\n        );\n      } else {\n        getDirtyFields(\n          value,\n          isNullOrUndefined(formValues) ? {} : formValues[key],\n          dirtyFieldsFromValues[key],\n          fieldRef,\n        );\n      }\n\n      if (isEmptyDirtyContainer(dirtyFieldsFromValues[key])) {\n        clearDirtyField(dirtyFieldsFromValues, key);\n      }\n    } else if (deepEqual(value, formValues[key])) {\n      clearDirtyField(dirtyFieldsFromValues, key);\n    } else {\n      dirtyFieldsFromValues[key] = true;\n    }\n  }\n\n  return dirtyFieldsFromValues;\n}\n","import type { InternalFieldName } from '../types';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) => {\n  const segments = name.split('.');\n  const matches: InternalFieldName[] = [];\n  let prefix = segments[0];\n\n  for (let i = 1; i < segments.length; prefix += '.' + segments[i++]) {\n    if (!isNaN(+segments[i]) && names.has(prefix)) {\n      matches.push(`${prefix}.${segments[i]}`);\n    }\n  }\n\n  return matches;\n};\n","import type { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends NativeFieldValue>(\n  value: T,\n  { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n  isUndefined(value)\n    ? value\n    : valueAsNumber\n      ? value === ''\n        ? NaN\n        : value\n          ? +value\n          : value\n      : valueAsDate && isString(value)\n        ? new Date(value)\n        : setValueAs\n          ? setValueAs(value)\n          : value;\n","import type { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(_f: Field['_f']) {\n  const ref = _f.ref;\n\n  if (isFileInput(ref)) {\n    return ref.files;\n  }\n\n  if (isRadioInput(ref)) {\n    return getRadioValue(_f.refs).value;\n  }\n\n  if (isMultipleSelect(ref)) {\n    return [...ref.selectedOptions].map(({ value }) => value);\n  }\n\n  if (isCheckBox(ref)) {\n    return getCheckboxValue(_f.refs).value;\n  }\n\n  return getFieldValueAs(ref.value, _f);\n}\n","import type {\n  CriteriaMode,\n  Field,\n  FieldName,\n  FieldRefs,\n  FieldValues,\n  InternalFieldName,\n} from '../types';\nimport { get } from '../utils';\nimport set from '../utils/set';\n\nexport default <TFieldValues extends FieldValues>(\n  fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n  _fields: FieldRefs,\n  criteriaMode?: CriteriaMode,\n  shouldUseNativeValidation?: boolean | undefined,\n) => {\n  const fields: Record<InternalFieldName, Field['_f']> = {};\n\n  for (const name of fieldsNames) {\n    const field: Field = get(_fields, name);\n\n    field && set(fields, name, field._f);\n  }\n\n  return {\n    criteriaMode,\n    names: [...fieldsNames] as FieldName<TFieldValues>[],\n    fields,\n    shouldUseNativeValidation,\n  };\n};\n","import type {\n  ValidationRule,\n  ValidationValue,\n  ValidationValueMessage,\n} from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends ValidationValue>(\n  rule?: ValidationRule<T> | ValidationValueMessage<T>,\n) =>\n  isUndefined(rule)\n    ? rule\n    : isRegex(rule)\n      ? rule.source\n      : isObject(rule)\n        ? isRegex(rule.value)\n          ? rule.value.source\n          : rule.value\n        : rule;\n","import type { Field, Validate } from '../types';\nimport isFunction from '../utils/isFunction';\nimport isObject from '../utils/isObject';\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\n\nexport default (fieldReference: Field['_f']) => {\n  if (!fieldReference || !fieldReference.validate) return false;\n\n  if (isFunction(fieldReference.validate)) {\n    return fieldReference.validate.constructor.name === ASYNC_FUNCTION;\n  }\n\n  if (isObject(fieldReference.validate)) {\n    for (const key in fieldReference.validate) {\n      if (\n        (fieldReference.validate[key] as Validate<unknown, unknown>).constructor\n          .name === ASYNC_FUNCTION\n      ) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n","import type { Field } from '../types';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (options: Field['_f']) =>\n  options.mount &&\n  (options.required ||\n    (!isUndefined(options.required) && options.required !== false) ||\n    !isUndefined(options.min) ||\n    !isUndefined(options.max) ||\n    !isUndefined(options.maxLength) ||\n    !isUndefined(options.minLength) ||\n    options.pattern ||\n    options.validate);\n","import type { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\n\nexport default function schemaErrorLookup<T extends FieldValues = FieldValues>(\n  errors: FieldErrors<T>,\n  _fields: FieldValues,\n  name: string,\n): {\n  error?: FieldError;\n  name: string;\n} {\n  const error = get(errors, name);\n\n  if (error?.type || error?.message || Array.isArray(error)) {\n    return {\n      error,\n      name,\n    };\n  }\n\n  const names = name.split('.');\n\n  while (names.length) {\n    const fieldName = names.join('.');\n    const field = get(_fields, fieldName);\n    const foundError = get(errors, fieldName);\n\n    if (field && !Array.isArray(field) && name !== fieldName) {\n      return { name };\n    }\n\n    if (foundError && foundError.type) {\n      return {\n        name: fieldName,\n        error: foundError,\n      };\n    }\n\n    if (foundError && foundError.root && foundError.root.type) {\n      return {\n        name: `${fieldName}.root`,\n        error: foundError.root,\n      };\n    }\n\n    names.pop();\n  }\n\n  return {\n    name,\n  };\n}\n","import { VALIDATION_MODE } from '../constants';\nimport type {\n  FieldValues,\n  FormState,\n  InternalFieldName,\n  ReadFormState,\n} from '../types';\n\nexport default <T extends FieldValues, K extends ReadFormState>(\n  formStateData: Partial<FormState<T>> & {\n    name?: InternalFieldName;\n    values?: T;\n  },\n  _proxyFormState: K,\n  updateFormState: (formState: Partial<FormState<T>>) => void,\n  isRoot?: boolean,\n) => {\n  updateFormState(formStateData);\n  const keys = Object.keys(formStateData).filter((key) => key !== 'name');\n\n  return (\n    !keys.length ||\n    (isRoot && keys.length >= Object.keys(_proxyFormState).length) ||\n    keys.find(\n      (key) =>\n        _proxyFormState[key as keyof ReadFormState] ===\n        (!isRoot || VALIDATION_MODE.all),\n    )\n  );\n};\n","import convertToArrayPayload from '../utils/convertToArrayPayload';\n\nexport default <T extends string | readonly string[] | undefined>(\n  name?: T,\n  signalName?: string,\n  exact?: boolean,\n) =>\n  !name ||\n  !signalName ||\n  name === signalName ||\n  convertToArrayPayload(name).some(\n    (currentName) =>\n      currentName &&\n      (exact\n        ? currentName === signalName || currentName.startsWith(signalName + '.')\n        : currentName.startsWith(signalName) ||\n          signalName.startsWith(currentName)),\n  );\n","import type { ValidationModeFlags } from '../types';\n\nexport default (\n  isBlurEvent: boolean,\n  isTouched: boolean,\n  isSubmitted: boolean,\n  reValidateMode: Pick<ValidationModeFlags, 'isOnBlur' | 'isOnChange'>,\n  mode: Partial<ValidationModeFlags>,\n) => {\n  if (mode.isOnAll) {\n    return false;\n  } else if (!isSubmitted && mode.isOnTouch) {\n    return !(isTouched || isBlurEvent);\n  } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n    return !isBlurEvent;\n  } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n    return isBlurEvent;\n  }\n  return true;\n};\n","import compact from '../utils/compact';\nimport get from '../utils/get';\nimport unset from '../utils/unset';\n\nexport default <T>(ref: T, name: string) => {\n  const array = get(ref, name);\n\n  !compact(array).length &&\n    !(array as { root?: unknown })?.root &&\n    unset(ref, name);\n};\n","import {\n  EVENTS,\n  INPUT_VALIDATION_RULES,\n  ROOT_ERROR_TYPE,\n  VALIDATION_MODE,\n} from '../constants';\nimport type {\n  BatchFieldArrayUpdate,\n  ChangeHandler,\n  Control,\n  DeepPartial,\n  DelayCallback,\n  EventType,\n  Field,\n  FieldError,\n  FieldErrors,\n  FieldNamesMarkedBoolean,\n  FieldPath,\n  FieldPathValue,\n  FieldRefs,\n  FieldValues,\n  FormState,\n  FormStateProxy,\n  FromSubscribe,\n  GetIsDirty,\n  GetValuesConfig,\n  InternalFieldName,\n  Names,\n  Path,\n  ReadFormState,\n  Ref,\n  SetFieldValue,\n  SetValueConfig,\n  Subjects,\n  TriggerConfig,\n  UseFormClearErrors,\n  UseFormGetErrors,\n  UseFormGetFieldState,\n  UseFormGetValues,\n  UseFormHandleSubmit,\n  UseFormProps,\n  UseFormRegister,\n  UseFormReset,\n  UseFormResetDefaultValues,\n  UseFormResetField,\n  UseFormReturn,\n  UseFormSetError,\n  UseFormSetFocus,\n  UseFormSetValue,\n  UseFormSetValues,\n  UseFormSubscribe,\n  UseFormTrigger,\n  UseFormUnregister,\n  UseFormWatch,\n  ValidateFormEventType,\n  WatchInternal,\n  WatchObserver,\n} from '../types';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport createSubject from '../utils/createSubject';\nimport deepEqual from '../utils/deepEqual';\nimport extractFormValues from '../utils/extractFormValues';\nimport get from '../utils/get';\nimport has from '../utils/has';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isKey from '../utils/isKey';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\nimport isWeb from '../utils/isWeb';\nimport live from '../utils/live';\nimport set from '../utils/set';\nimport stringToPath from '../utils/stringToPath';\nimport unset from '../utils/unset';\n\nimport collectDirtyFieldNames from './collectDirtyFieldNames';\nimport generateWatchOutput from './generateWatchOutput';\nimport getDirtyFields from './getDirtyFields';\nimport getEventValue from './getEventValue';\nimport getFieldArrayItemNames from './getFieldArrayItemNames';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getResolverOptions from './getResolverOptions';\nimport getRuleValue from './getRuleValue';\nimport getValidationModes from './getValidationModes';\nimport hasPromiseValidation from './hasPromiseValidation';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport isWatched from './isWatched';\nimport iterateFieldsByAction from './iterateFieldsByAction';\nimport schemaErrorLookup from './schemaErrorLookup';\nimport shouldRenderFormState from './shouldRenderFormState';\nimport shouldSubscribeByName from './shouldSubscribeByName';\nimport skipValidation from './skipValidation';\nimport unsetEmptyArray from './unsetEmptyArray';\nimport updateFieldArrayRootError from './updateFieldArrayRootError';\nimport validateField from './validateField';\n\nconst defaultOptions = {\n  mode: VALIDATION_MODE.onSubmit,\n  reValidateMode: VALIDATION_MODE.onChange,\n  shouldFocusError: true,\n} as const;\n\nconst FORM_ERROR_TYPE = 'form';\n\nconst updateDirtyFields = (\n  dirtyFields: Record<string, unknown>,\n  nextDirtyFields: Record<string, unknown>,\n) => {\n  for (const key in dirtyFields) {\n    if (!(key in nextDirtyFields)) {\n      delete dirtyFields[key];\n    }\n  }\n\n  Object.assign(dirtyFields, nextDirtyFields);\n};\n\nexport const DEFAULT_FORM_STATE = {\n  submitCount: 0,\n  isDirty: false,\n  isReady: false,\n  isValidating: false,\n  isSubmitted: false,\n  isSubmitting: false,\n  isSubmitSuccessful: false,\n  isValid: false,\n  touchedFields: {},\n  dirtyFields: {},\n  validatingFields: {},\n};\n\nexport function createFormControl<\n  TFieldValues extends FieldValues = FieldValues,\n  TContext = any,\n  TTransformedValues = TFieldValues,\n>(\n  props: UseFormProps<TFieldValues, TContext, TTransformedValues> = {},\n): Omit<\n  UseFormReturn<TFieldValues, TContext, TTransformedValues>,\n  'formState'\n> & {\n  formControl: Omit<\n    UseFormReturn<TFieldValues, TContext, TTransformedValues>,\n    'formState'\n  >;\n} {\n  let _options = {\n    ...defaultOptions,\n    ...props,\n  };\n  let _formState: FormState<TFieldValues> & {\n    values?: TFieldValues;\n    name?: string;\n    type?: EventType;\n  } = {\n    ...cloneObject(DEFAULT_FORM_STATE),\n    isLoading: isFunction(_options.defaultValues),\n    errors: _options.errors || {},\n    disabled: _options.disabled || false,\n  };\n  let _fields: FieldRefs = {};\n  let _defaultValues =\n    isObject(_options.defaultValues) || isObject(_options.values)\n      ? cloneObject(_options.defaultValues || _options.values) || {}\n      : {};\n  let _formValues = _options.shouldUnregister\n    ? ({} as TFieldValues)\n    : (cloneObject(_defaultValues) as TFieldValues);\n  let _state = {\n    action: false,\n    actionArrayLengths: new Map<InternalFieldName, number>(),\n    mount: false,\n    watch: false,\n    keepIsValid: false,\n  };\n  let _names: Names = {\n    mount: new Set(),\n    disabled: new Set(),\n    unMount: new Set(),\n    array: new Set(),\n    watch: new Set(),\n    registerName: new Set(),\n  };\n  const delayErrorCallbacks: Partial<Record<InternalFieldName, DelayCallback>> =\n    {};\n  const timers: Partial<Record<InternalFieldName, number>> = {};\n  let _valuesSubscriberCount = 0;\n  let _validationModeBeforeSubmit = getValidationModes(_options.mode);\n  let _validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n  const defaultProxyFormState: ReadFormState = {\n    isDirty: false,\n    dirtyFields: false,\n    validatingFields: false,\n    touchedFields: false,\n    isValidating: false,\n    isValid: false,\n    errors: false,\n  };\n  const _proxyFormState: ReadFormState = {\n    ...defaultProxyFormState,\n  };\n  let _proxySubscribeFormState = {\n    ..._proxyFormState,\n  };\n  const _isTracked = (...keys: (keyof FormStateProxy)[]) =>\n    keys.some((key) => _proxyFormState[key] || _proxySubscribeFormState[key]);\n  const _subjects: Subjects<TFieldValues> = {\n    array: createSubject(),\n    state: createSubject(),\n  };\n\n  let _setValidCallId = 0;\n  let _resetCallId = 0;\n\n  let shouldDisplayAllAssociatedErrors =\n    _options.criteriaMode === VALIDATION_MODE.all;\n\n  const debounce =\n    <T extends Function>(name: InternalFieldName, callback: T) =>\n    (wait: number) => {\n      clearTimeout(timers[name]);\n      timers[name] = setTimeout(callback, wait);\n    };\n\n  const cancelDelayedError = (name: InternalFieldName) => {\n    clearTimeout(timers[name]);\n    delete timers[name];\n    delete delayErrorCallbacks[name];\n  };\n\n  const cancelDelayedErrorTree = (name: InternalFieldName) => {\n    cancelDelayedError(name);\n\n    const prefix = `${name}.`;\n\n    for (const key of Object.keys(delayErrorCallbacks)) {\n      key.startsWith(prefix) && cancelDelayedError(key);\n    }\n  };\n\n  const _setValid = async (shouldUpdateValid?: boolean) => {\n    if (_state.keepIsValid) {\n      return;\n    }\n    if (!_options.disabled && (_isTracked('isValid') || shouldUpdateValid)) {\n      const callId = ++_setValidCallId;\n      let isValid: boolean;\n      if (_options.resolver) {\n        isValid = isEmptyObject((await _runSchema()).errors);\n        callId === _setValidCallId && _updateIsValidating();\n      } else {\n        isValid = await executeBuiltInValidation({\n          fields: _fields,\n          onlyCheckValid: true,\n          eventType: EVENTS.VALID,\n        });\n      }\n      if (callId === _setValidCallId && isValid !== _formState.isValid) {\n        _subjects.state.next({\n          isValid,\n        });\n      }\n    }\n  };\n\n  const _updateIsValidating = (names?: string[], isValidating?: boolean) => {\n    if (!_options.disabled && _isTracked('isValidating', 'validatingFields')) {\n      (names || _names.mount).forEach((name) => {\n        if (name) {\n          isValidating\n            ? set(_formState.validatingFields, name, isValidating)\n            : unset(_formState.validatingFields, name);\n        }\n      });\n\n      _subjects.state.next({\n        validatingFields: _formState.validatingFields,\n        isValidating: !isEmptyObject(_formState.validatingFields),\n      });\n    }\n  };\n\n  const _updateDirtyFields = () => {\n    _formState.dirtyFields = getDirtyFields(\n      _defaultValues,\n      _formValues,\n      undefined,\n      _fields,\n    );\n  };\n\n  const _setFieldArray: BatchFieldArrayUpdate = (\n    name,\n    values = [],\n    method,\n    args,\n    shouldSetValues = true,\n    shouldUpdateFieldsAndState = true,\n  ) => {\n    if (args && method && !_options.disabled) {\n      _state.action = true;\n      const fields = get(_fields, name);\n      if (!_state.actionArrayLengths.has(name)) {\n        _state.actionArrayLengths.set(\n          name,\n          Array.isArray(fields) ? fields.length : 0,\n        );\n      }\n      if (shouldUpdateFieldsAndState && Array.isArray(fields)) {\n        const fieldValues = method(fields, args.argA, args.argB);\n        shouldSetValues && set(_fields, name, fieldValues);\n      }\n\n      const fieldArrayErrors:\n        | (FieldError[] & { root?: FieldError })\n        | undefined = get(_formState.errors, name);\n      if (shouldUpdateFieldsAndState && Array.isArray(fieldArrayErrors)) {\n        const rootError = fieldArrayErrors.root;\n        const errors =\n          method(fieldArrayErrors, args.argA, args.argB) || fieldArrayErrors;\n\n        if (rootError) {\n          errors.root = rootError;\n        }\n\n        shouldSetValues && set(_formState.errors, name, errors);\n        unsetEmptyArray(_formState.errors, name);\n      }\n\n      const touchedFieldsArray = get(_formState.touchedFields, name);\n      if (\n        _isTracked('touchedFields') &&\n        shouldUpdateFieldsAndState &&\n        Array.isArray(touchedFieldsArray)\n      ) {\n        const touchedFields = method(touchedFieldsArray, args.argA, args.argB);\n        shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n      }\n\n      if (_isTracked('dirtyFields')) {\n        _updateDirtyFields();\n      }\n\n      _subjects.state.next({\n        name,\n        isDirty: _getDirty(name, values),\n        dirtyFields: _formState.dirtyFields,\n        errors: _formState.errors,\n        isValid: _formState.isValid,\n      });\n    } else {\n      set(_formValues, name, values);\n    }\n  };\n\n  const updateErrors = (name: InternalFieldName, error: FieldError) => {\n    set(_formState.errors, name, error);\n    _formState.errors = { ..._formState.errors };\n    _subjects.state.next({\n      errors: _formState.errors,\n    });\n  };\n\n  const _setErrors = (errors: FieldErrors<TFieldValues>) => {\n    Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n    _formState.errors = errors;\n    _subjects.state.next({\n      errors: _formState.errors,\n      isValid: false,\n    });\n  };\n\n  const hasExplicitNullIntermediate = (name: InternalFieldName) => {\n    const segments = isKey(name) ? [name] : stringToPath(name);\n    let formValues = _formValues;\n    let defaultValues = _defaultValues;\n\n    for (let i = 0; i < segments.length - 1; i++) {\n      const key = segments[i];\n\n      formValues = isNullOrUndefined(formValues) ? formValues : formValues[key];\n\n      defaultValues = isNullOrUndefined(defaultValues)\n        ? defaultValues\n        : defaultValues[key as keyof typeof defaultValues];\n\n      if (formValues === null && defaultValues !== null) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  const isStaleArrayField = (name: InternalFieldName): boolean => {\n    if (!_state.actionArrayLengths.size) {\n      return false;\n    }\n\n    const segments = isKey(name) ? [name] : stringToPath(name);\n    let node: unknown = _formValues;\n    let path = '';\n    let ownerDepth = -1;\n    let ownerPreActionLength = 0;\n\n    for (let i = 0; i < segments.length; i++) {\n      if (isNullOrUndefined(node)) {\n        return false;\n      }\n\n      const key = segments[i];\n      path = path ? `${path}.${key}` : key;\n\n      if (Array.isArray(node) && +key >= node.length) {\n        return ownerDepth === -1\n          ? false\n          : i === ownerDepth\n            ? +key < ownerPreActionLength\n            : true;\n      }\n\n      if (_state.actionArrayLengths.has(path)) {\n        ownerDepth = i + 1;\n        ownerPreActionLength = _state.actionArrayLengths.get(path)!;\n      }\n\n      node = (node as Record<string, unknown>)[key];\n\n      if (\n        isUndefined(node) &&\n        ownerDepth !== -1 &&\n        i > ownerDepth &&\n        +segments[ownerDepth] < ownerPreActionLength\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  const updateValidAndValue = (\n    name: InternalFieldName,\n    shouldSkipSetValueAs: boolean,\n    value?: unknown,\n    ref?: Ref,\n  ) => {\n    const field: Field = get(_fields, name);\n\n    if (field) {\n      if (hasExplicitNullIntermediate(name) || isStaleArrayField(name)) {\n        return;\n      }\n\n      const wasUnsetInFormValues = isUndefined(get(_formValues, name));\n      const defaultValue = get(\n        _formValues,\n        name,\n        isUndefined(value) ? get(_defaultValues, name) : value,\n      );\n\n      isUndefined(defaultValue) ||\n      (ref && (ref as HTMLInputElement).defaultChecked) ||\n      shouldSkipSetValueAs\n        ? set(\n            _formValues,\n            name,\n            shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n          )\n        : setFieldValue(name, defaultValue);\n\n      if (_state.mount && !_state.action) {\n        _setValid();\n\n        if (\n          wasUnsetInFormValues &&\n          _formState.isDirty &&\n          _isTracked('isDirty')\n        ) {\n          const isDirty = _getDirty();\n          if (!isDirty) {\n            _formState.isDirty = false;\n            _subjects.state.next({ ..._formState });\n          }\n        }\n\n        if (\n          props.shouldUnregister &&\n          wasUnsetInFormValues &&\n          !isUndefined(get(_formValues, name)) &&\n          isWatched(name, _names)\n        ) {\n          _state.watch = true;\n        }\n      }\n    }\n  };\n\n  const updateTouchAndDirty = (\n    name: InternalFieldName,\n    fieldValue: unknown,\n    isBlurEvent?: boolean,\n    shouldDirty?: boolean,\n    shouldRender?: boolean,\n  ): Partial<\n    Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n  > => {\n    let shouldUpdateField = false;\n    let isPreviousDirty = false;\n    const output: Partial<FormState<TFieldValues>> & { name: string } = {\n      name,\n    };\n\n    // an explicit programmatic update (e.g. setValue with shouldDirty: true)\n    // opts into dirty tracking even when the form is disabled\n    if (!_options.disabled || shouldDirty === true) {\n      if (!isBlurEvent || shouldDirty) {\n        const isCurrentFieldPristine = deepEqual(\n          get(_defaultValues, name),\n          fieldValue,\n        );\n\n        if (_isTracked('isDirty')) {\n          isPreviousDirty = _formState.isDirty;\n\n          _formState.isDirty = output.isDirty =\n            !isCurrentFieldPristine || _getDirty();\n          shouldUpdateField = isPreviousDirty !== output.isDirty;\n        }\n\n        isPreviousDirty = !!get(_formState.dirtyFields, name);\n\n        if (isCurrentFieldPristine !== _formState.isDirty) {\n          updateDirtyFields(\n            _formState.dirtyFields as Record<string, unknown>,\n            getDirtyFields(\n              _defaultValues,\n              _formValues,\n              undefined,\n              _fields,\n            ) as Record<string, unknown>,\n          );\n        } else {\n          isCurrentFieldPristine\n            ? unset(_formState.dirtyFields, name)\n            : set(_formState.dirtyFields, name, true);\n        }\n\n        output.dirtyFields = _formState.dirtyFields;\n        shouldUpdateField =\n          shouldUpdateField ||\n          (_isTracked('dirtyFields') &&\n            isPreviousDirty !== !isCurrentFieldPristine);\n      }\n\n      if (isBlurEvent) {\n        const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n        if (!isPreviousFieldTouched) {\n          set(_formState.touchedFields, name, isBlurEvent);\n          output.touchedFields = _formState.touchedFields;\n          shouldUpdateField =\n            shouldUpdateField ||\n            (_isTracked('touchedFields') &&\n              isPreviousFieldTouched !== isBlurEvent);\n        }\n      }\n\n      shouldUpdateField && shouldRender && _subjects.state.next(output);\n    }\n\n    return shouldUpdateField ? output : {};\n  };\n\n  const shouldRenderByError = (\n    name: InternalFieldName,\n    isValid?: boolean,\n    error?: FieldError,\n    fieldState?: {\n      dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n      isDirty?: boolean;\n      touched?: FieldNamesMarkedBoolean<TFieldValues>;\n    },\n  ) => {\n    const previousFieldError = get(_formState.errors, name);\n    const shouldUpdateValid =\n      _isTracked('isValid') &&\n      isBoolean(isValid) &&\n      _formState.isValid !== isValid;\n\n    if (_options.delayError && error) {\n      delayErrorCallbacks[name] = debounce(name, () =>\n        updateErrors(name, error),\n      );\n      delayErrorCallbacks[name](_options.delayError);\n    } else {\n      cancelDelayedError(name);\n      error\n        ? set(_formState.errors, name, error)\n        : unset(_formState.errors, name);\n      _formState.errors = { ..._formState.errors };\n    }\n\n    if (\n      (error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n      !isEmptyObject(fieldState) ||\n      shouldUpdateValid\n    ) {\n      const updatedFormState = {\n        ...fieldState,\n        ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n        errors: _formState.errors,\n        name,\n      };\n\n      _subjects.state.next(updatedFormState);\n    }\n  };\n\n  const _runSchema = async (name?: InternalFieldName[]) => {\n    _updateIsValidating(name, true);\n    return await _options.resolver!(\n      _formValues as TFieldValues,\n      _options.context,\n      getResolverOptions(\n        name || _names.mount,\n        _fields,\n        _options.criteriaMode,\n        _options.shouldUseNativeValidation,\n      ),\n    );\n  };\n\n  const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\n    const resetCallId = _resetCallId;\n    const { errors } = await _runSchema(names);\n\n    if (resetCallId !== _resetCallId) {\n      return errors;\n    }\n\n    _updateIsValidating(names);\n\n    if (names) {\n      for (const name of names) {\n        const error = get(errors, name);\n        cancelDelayedError(name);\n        const isFieldArrayRootError =\n          _names.array.has(name) &&\n          isObject(error) &&\n          !Object.keys(error).some((key) => !Number.isNaN(Number(key)));\n        const field = get(_fields, name);\n        const hasNestedFields =\n          isObject(field) && Object.keys(field).some((key) => key !== '_f');\n\n        isFieldArrayRootError\n          ? updateFieldArrayRootError(\n              _formState.errors,\n              { [name]: error } as Partial<Record<string, FieldError>>,\n              name,\n            )\n          : error?.type ||\n              error?.message ||\n              Array.isArray(error) ||\n              (isObject(error) && hasNestedFields)\n            ? set(_formState.errors, name, error)\n            : unset(_formState.errors, name);\n      }\n      _formState.errors = { ..._formState.errors };\n    } else {\n      Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n      _formState.errors = errors;\n    }\n\n    return errors;\n  };\n\n  const validateForm = async ({\n    name,\n    eventType,\n  }: {\n    name: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | undefined;\n    eventType: ValidateFormEventType;\n  }) => {\n    if (props.validate) {\n      const result = await props.validate({\n        formValues: _formValues,\n        formState: _formState,\n        name,\n        eventType,\n      });\n\n      if (isObject(result)) {\n        for (const key in result) {\n          const error = result[key];\n\n          if (error) {\n            setError(`${FORM_ERROR_TYPE}.${key}`, {\n              message: isString(error.message) ? error.message : '',\n              type: error.type || INPUT_VALIDATION_RULES.validate,\n            });\n          }\n        }\n      } else if (isString(result) || !result) {\n        setError(FORM_ERROR_TYPE, {\n          message: result || '',\n          type: INPUT_VALIDATION_RULES.validate,\n        });\n      } else {\n        clearErrors(FORM_ERROR_TYPE);\n      }\n\n      return result;\n    }\n\n    return true;\n  };\n\n  const executeBuiltInValidation = async ({\n    fields,\n    onlyCheckValid,\n    name,\n    eventType,\n    context = {\n      valid: true,\n      runRootValidation: false,\n    },\n  }: {\n    fields: FieldRefs;\n    onlyCheckValid?: boolean;\n    name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[];\n    eventType: ValidateFormEventType;\n    context?: {\n      valid: boolean;\n      runRootValidation?: boolean;\n    };\n  }) => {\n    if (props.validate) {\n      context.runRootValidation = true;\n      const result = await validateForm({\n        name,\n        eventType,\n      });\n\n      if (!result) {\n        context.valid = false;\n\n        if (onlyCheckValid) {\n          return context.valid;\n        }\n      }\n    }\n\n    for (const name in fields) {\n      const field = fields[name];\n\n      if (field) {\n        const { _f, ...fieldValue } = field as Field;\n\n        if (_f) {\n          const isFieldArrayRoot = _names.array.has(_f.name);\n          const isPromiseFunction =\n            field._f && hasPromiseValidation((field as Field)._f);\n          const shouldTrackIsValidatingState = _isTracked(\n            'isValidating',\n            'validatingFields',\n          );\n\n          if (isPromiseFunction && shouldTrackIsValidatingState) {\n            _updateIsValidating([_f.name], true);\n          }\n\n          const fieldError = await validateField(\n            field as Field,\n            _names.disabled,\n            _formValues,\n            shouldDisplayAllAssociatedErrors,\n            _options.shouldUseNativeValidation && !onlyCheckValid,\n            isFieldArrayRoot,\n          );\n\n          if (isPromiseFunction && shouldTrackIsValidatingState) {\n            _updateIsValidating([_f.name]);\n          }\n\n          if (fieldError[_f.name]) {\n            context.valid = false;\n\n            if (onlyCheckValid) {\n              break;\n            }\n          }\n\n          if (!onlyCheckValid) {\n            cancelDelayedError(_f.name);\n            get(fieldError, _f.name)\n              ? isFieldArrayRoot\n                ? updateFieldArrayRootError(\n                    _formState.errors,\n                    fieldError,\n                    _f.name,\n                  )\n                : set(_formState.errors, _f.name, fieldError[_f.name])\n              : unset(_formState.errors, _f.name);\n          }\n\n          if (props.shouldUseNativeValidation && fieldError[_f.name]) {\n            break;\n          }\n        }\n\n        !isEmptyObject(fieldValue) &&\n          (await executeBuiltInValidation({\n            context,\n            onlyCheckValid,\n            fields: fieldValue,\n            name: name as FieldPath<TFieldValues>,\n            eventType,\n          }));\n      }\n    }\n\n    return context.valid;\n  };\n\n  const _removeUnmounted = () => {\n    for (const name of _names.unMount) {\n      const field: Field = get(_fields, name);\n\n      field &&\n        (field._f.refs\n          ? field._f.refs.every((ref) => !live(ref))\n          : !live(field._f.ref)) &&\n        unregister(name as FieldPath<TFieldValues>);\n    }\n\n    _names.unMount = new Set();\n  };\n\n  const _getDirty: GetIsDirty = (name, data) => (\n    name && data && set(_formValues, name, data),\n    !deepEqual(_state.mount ? _formValues : _defaultValues, _defaultValues)\n  );\n\n  const _getWatch: WatchInternal<TFieldValues> = (\n    names,\n    defaultValue,\n    isGlobal,\n  ) =>\n    generateWatchOutput(\n      names,\n      _names,\n      {\n        ...(_state.mount\n          ? _formValues\n          : isUndefined(defaultValue) || isString(names)\n            ? _defaultValues\n            : defaultValue),\n      },\n      isGlobal,\n      defaultValue,\n    );\n\n  const _getFieldArray = <TFieldArrayValues>(\n    name: InternalFieldName,\n  ): Partial<TFieldArrayValues>[] =>\n    compact(\n      get(\n        _state.mount ? _formValues : _defaultValues,\n        name,\n        _options.shouldUnregister ? get(_defaultValues, name, []) : [],\n      ),\n    );\n\n  const setFieldValue = (\n    name: InternalFieldName,\n    value: SetFieldValue<TFieldValues>,\n    options: SetValueConfig = {},\n    skipClone = false,\n    skipRender = false,\n    skipValueRender = false,\n  ) => {\n    const field: Field = get(_fields, name);\n    let fieldValue: unknown = value;\n\n    if (field) {\n      const fieldReference = field._f;\n\n      if (fieldReference) {\n        !fieldReference.disabled &&\n          set(_formValues, name, getFieldValueAs(value, fieldReference));\n\n        fieldValue =\n          isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n            ? ''\n            : value;\n\n        if (isMultipleSelect(fieldReference.ref)) {\n          [...fieldReference.ref.options].forEach(\n            (optionRef) =>\n              (optionRef.selected = (\n                fieldValue as InternalFieldName[]\n              ).includes(optionRef.value)),\n          );\n        } else if (fieldReference.refs) {\n          if (isCheckBoxInput(fieldReference.ref)) {\n            fieldReference.refs.forEach((checkboxRef) => {\n              if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n                if (Array.isArray(fieldValue)) {\n                  checkboxRef.checked = !!fieldValue.find(\n                    (data: string) => data === checkboxRef.value,\n                  );\n                } else {\n                  checkboxRef.checked =\n                    fieldValue === checkboxRef.value || !!fieldValue;\n                }\n              }\n            });\n          } else {\n            fieldReference.refs.forEach(\n              (radioRef: HTMLInputElement) =>\n                (radioRef.checked = radioRef.value === fieldValue),\n            );\n          }\n        } else if (isFileInput(fieldReference.ref)) {\n          fieldReference.ref.value = '';\n        } else {\n          fieldReference.ref.value = fieldValue;\n\n          if (!fieldReference.ref.type && !skipRender && !skipValueRender) {\n            _subjects.state.next({\n              name,\n              values: skipClone ? _formValues : cloneObject(_formValues),\n            });\n          }\n        }\n      }\n    }\n\n    (options.shouldDirty || options.shouldTouch) &&\n      updateTouchAndDirty(\n        name,\n        field &&\n          field._f &&\n          !field._f.disabled &&\n          (field._f.valueAsNumber ||\n            field._f.valueAsDate ||\n            field._f.setValueAs)\n          ? getFieldValueAs(value, field._f)\n          : fieldValue,\n        options.shouldTouch,\n        options.shouldDirty,\n        !skipRender,\n      );\n\n    options.shouldValidate &&\n      trigger(\n        name as Path<TFieldValues>,\n        {\n          delayError: options.delayError,\n        } as TriggerConfig & { delayError?: boolean },\n      );\n  };\n\n  const setFieldValues = <\n    T extends InternalFieldName,\n    K extends SetFieldValue<TFieldValues>,\n    U extends SetValueConfig,\n  >(\n    name: T,\n    value: K,\n    options: U,\n    skipClone = false,\n    skipRender = false,\n    skipValueRender = false,\n  ) => {\n    if (_names.array.has(name)) {\n      _subjects.array.next({\n        name,\n        values: skipClone ? _formValues : cloneObject(_formValues),\n      });\n    }\n\n    for (const fieldKey in value) {\n      if (!value.hasOwnProperty(fieldKey)) {\n        continue;\n      }\n      const fieldValue = value[fieldKey];\n      const fieldName = name + '.' + fieldKey;\n      const field = get(_fields, fieldName);\n\n      (_names.array.has(name) ||\n        isObject(fieldValue) ||\n        (field && !field._f)) &&\n      !isDateObject(fieldValue)\n        ? setFieldValues(\n            fieldName,\n            fieldValue,\n            options,\n            skipClone,\n            skipRender,\n            skipValueRender,\n          )\n        : setFieldValue(\n            fieldName,\n            fieldValue,\n            options,\n            skipClone,\n            skipRender,\n            skipValueRender,\n          );\n    }\n  };\n\n  const _setValue = <\n    TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n  >(\n    name: TFieldName,\n    value: FieldPathValue<TFieldValues, TFieldName>,\n    options: SetValueConfig,\n    skipClone: boolean,\n    skipStateEmit = false,\n  ) => {\n    const field = get(_fields, name);\n    const isFieldArray = _names.array.has(name);\n    const cloneValue = skipClone ? value : cloneObject(value);\n    const previousValue = get(_formValues, name);\n    const isValueUnchanged = deepEqual(previousValue, cloneValue);\n\n    if (!isValueUnchanged) {\n      set(_formValues, name, cloneValue);\n    }\n\n    if (isFieldArray) {\n      _subjects.array.next({\n        name,\n        values: skipClone ? _formValues : cloneObject(_formValues),\n      });\n\n      if (_isTracked('isDirty', 'dirtyFields') && options.shouldDirty) {\n        _updateDirtyFields();\n\n        if (!skipStateEmit) {\n          _subjects.state.next({\n            name,\n            dirtyFields: _formState.dirtyFields,\n            isDirty: _getDirty(name, cloneValue),\n          });\n        }\n      }\n    } else {\n      const isEmpty =\n        (Array.isArray(cloneValue) && !cloneValue.length) ||\n        isEmptyObject(cloneValue);\n\n      const skipValueRender = !isValueUnchanged && !skipStateEmit;\n      if (!field || field._f || isNullOrUndefined(cloneValue) || isEmpty) {\n        setFieldValue(\n          name,\n          cloneValue,\n          options,\n          skipClone,\n          skipStateEmit,\n          skipValueRender,\n        );\n      } else {\n        setFieldValues(\n          name,\n          cloneValue,\n          options,\n          skipClone,\n          skipStateEmit,\n          skipValueRender,\n        );\n      }\n    }\n\n    if (!isValueUnchanged && !skipStateEmit) {\n      const watched = isWatched(name, _names);\n      const values = skipClone ? _formValues : cloneObject(_formValues);\n\n      _subjects.state.next({\n        ...(watched && _formState),\n        name: _state.mount || watched ? name : undefined,\n        values,\n      });\n\n      if (!isFieldArray) {\n        for (const itemName of getFieldArrayItemNames(_names.array, name)) {\n          _subjects.state.next({ name: itemName, values });\n        }\n      }\n    }\n  };\n\n  const setValue: UseFormSetValue<TFieldValues> = (name, value, options = {}) =>\n    _setValue(name, value, options, false);\n\n  const setValues: UseFormSetValues<TFieldValues> = (\n    formValues,\n    options = {},\n  ) => {\n    const updatedFormValues = isFunction(formValues)\n      ? (formValues as Function)(_formValues as TFieldValues)\n      : formValues;\n\n    if (!deepEqual(_formValues, updatedFormValues)) {\n      _formValues = {\n        ..._formValues,\n        ...updatedFormValues,\n      };\n\n      for (const fieldName of _names.mount) {\n        if (has(updatedFormValues, fieldName)) {\n          _setValue(\n            fieldName as FieldPath<TFieldValues>,\n            get(updatedFormValues, fieldName),\n            options,\n            true,\n            true,\n          );\n        }\n      }\n\n      _subjects.state.next({\n        ..._formState,\n        name: undefined,\n        type: undefined,\n        ...(_valuesSubscriberCount ? { values: _formValues } : {}),\n      });\n\n      if (options.shouldValidate) {\n        _setValid();\n      }\n    }\n  };\n\n  const onChange: ChangeHandler = async (event) => {\n    _state.mount = true;\n    const target = event.target;\n    let name: string = target.name;\n    let isFieldValueUpdated = true;\n    const field: Field = get(_fields, name);\n    const _updateIsFieldValueUpdated = (fieldValue: unknown) => {\n      isFieldValueUpdated =\n        Number.isNaN(fieldValue) ||\n        (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n        deepEqual(fieldValue, get(_formValues, name, fieldValue));\n    };\n\n    if (field) {\n      let error;\n      let isValid;\n      const fieldValue = target.type\n        ? getFieldValue(field._f)\n        : getEventValue(event);\n      const isBlurEvent =\n        event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n      const hasNoValidationEffect =\n        !hasValidation(field._f) &&\n        !props.validate &&\n        !_options.resolver &&\n        !get(_formState.errors, name) &&\n        !field._f.deps;\n      const shouldSkipValidation =\n        hasNoValidationEffect ||\n        skipValidation(\n          isBlurEvent,\n          get(_formState.touchedFields, name),\n          _formState.isSubmitted,\n          _validationModeAfterSubmit,\n          _validationModeBeforeSubmit,\n        );\n      const watched = isWatched(name, _names, isBlurEvent);\n\n      set(_formValues, name, cloneObject(fieldValue));\n\n      if (isBlurEvent) {\n        if (!target || !target.readOnly) {\n          field._f.onBlur && field._f.onBlur(event);\n          const pendingDelayError = delayErrorCallbacks[name];\n          pendingDelayError && pendingDelayError(0);\n        }\n      } else if (field._f.onChange) {\n        field._f.onChange(event);\n      }\n\n      const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n\n      const shouldRender = !isEmptyObject(fieldState) || watched;\n\n      !isBlurEvent &&\n        _subjects.state.next({\n          name,\n          type: event.type,\n          ...(_valuesSubscriberCount\n            ? { values: cloneObject(_formValues) }\n            : {}),\n        });\n\n      if (shouldSkipValidation) {\n        if (\n          (!hasNoValidationEffect || !_formState.isValid) &&\n          _isTracked('isValid')\n        ) {\n          if (_options.mode === 'onBlur') {\n            if (isBlurEvent) {\n              _setValid();\n            }\n          } else if (!isBlurEvent) {\n            _setValid();\n          }\n        }\n\n        return (\n          shouldRender &&\n          _subjects.state.next({ name, ...(watched ? {} : fieldState) })\n        );\n      }\n\n      if (!_options.resolver && props.validate) {\n        await validateForm({\n          name: name as FieldPath<TFieldValues>,\n          eventType: event.type,\n        });\n      }\n\n      !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n\n      if (_options.resolver) {\n        const { errors } = await _runSchema([name]);\n        _updateIsValidating([name]);\n\n        _updateIsFieldValueUpdated(fieldValue);\n\n        if (!isFieldValueUpdated) {\n          !isEmptyObject(fieldState) && _subjects.state.next(fieldState);\n          return;\n        }\n\n        const previousErrorLookupResult = schemaErrorLookup(\n          _formState.errors,\n          _fields,\n          name,\n        );\n        const errorLookupResult = schemaErrorLookup(\n          errors,\n          _fields,\n          previousErrorLookupResult.name || name,\n        );\n\n        error = errorLookupResult.error;\n        name = errorLookupResult.name;\n\n        isValid = isEmptyObject(errors);\n      } else {\n        _updateIsValidating([name], true);\n        error = (\n          await validateField(\n            field,\n            _names.disabled,\n            _formValues,\n            shouldDisplayAllAssociatedErrors,\n            _options.shouldUseNativeValidation,\n          )\n        )[name];\n        _updateIsValidating([name]);\n\n        _updateIsFieldValueUpdated(fieldValue);\n\n        if (isFieldValueUpdated) {\n          if (error) {\n            isValid = false;\n          } else if (_isTracked('isValid')) {\n            isValid = await executeBuiltInValidation({\n              fields: _fields,\n              onlyCheckValid: true,\n              name: name as FieldPath<TFieldValues>,\n              eventType: event.type,\n            });\n          }\n        }\n      }\n\n      if (isFieldValueUpdated) {\n        field._f.deps &&\n          (!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&\n          trigger(\n            field._f.deps as\n              | FieldPath<TFieldValues>\n              | FieldPath<TFieldValues>[],\n          );\n        shouldRenderByError(name, isValid, error, fieldState);\n      }\n    }\n  };\n\n  const _focusInput = (ref: Ref, key: string) => {\n    if (get(_formState.errors, key) && ref.focus) {\n      ref.focus();\n      return 1;\n    }\n    return;\n  };\n\n  const trigger: UseFormTrigger<TFieldValues> = async (\n    name,\n    options: TriggerConfig & { delayError?: boolean } = {},\n  ) => {\n    let isValid;\n    let validationResult;\n    const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n    if (_options.resolver) {\n      const resetCallId = _resetCallId;\n      const errors = await executeSchemaAndUpdateState(\n        isUndefined(name) ? name : fieldNames,\n      );\n      isValid = isEmptyObject(errors);\n      validationResult = name\n        ? !fieldNames.some((name) => get(errors, name))\n        : isValid;\n\n      if (resetCallId !== _resetCallId) {\n        return validationResult;\n      }\n    } else if (name) {\n      validationResult = (\n        await Promise.all(\n          fieldNames.map(async (fieldName) => {\n            const field = get(_fields, fieldName);\n            return await executeBuiltInValidation({\n              fields: field && field._f ? { [fieldName]: field } : field,\n              eventType: EVENTS.TRIGGER,\n            });\n          }),\n        )\n      ).every(Boolean);\n      !(!validationResult && !_formState.isValid) && _setValid();\n    } else {\n      validationResult = isValid = await executeBuiltInValidation({\n        fields: _fields,\n        name,\n        eventType: EVENTS.TRIGGER,\n      });\n    }\n\n    if (options.delayError && _options.delayError && isString(name)) {\n      const error = get(_formState.errors, name);\n      if (error) {\n        unset(_formState.errors, name);\n        delayErrorCallbacks[name] = debounce(name, () =>\n          updateErrors(name, error),\n        );\n        delayErrorCallbacks[name](_options.delayError);\n      } else {\n        cancelDelayedError(name);\n      }\n    }\n\n    if (options.shouldTouch) {\n      for (const fieldName of name ? fieldNames : _names.mount) {\n        !_names.array.has(fieldName) &&\n          set(_formState.touchedFields, fieldName, true);\n      }\n    }\n\n    _subjects.state.next({\n      ...(!isString(name) ||\n      (_isTracked('isValid') && isValid !== _formState.isValid)\n        ? {}\n        : { name }),\n      ...(_options.resolver || !name ? { isValid } : {}),\n      ...(options.shouldTouch && _isTracked('touchedFields')\n        ? { touchedFields: _formState.touchedFields }\n        : {}),\n      errors: _formState.errors,\n    });\n\n    options.shouldFocus &&\n      !validationResult &&\n      iterateFieldsByAction(\n        _fields,\n        _focusInput,\n        name ? fieldNames : _names.mount,\n      );\n\n    return validationResult;\n  };\n\n  const getValues: UseFormGetValues<TFieldValues> = (\n    fieldNames?:\n      | FieldPath<TFieldValues>\n      | ReadonlyArray<FieldPath<TFieldValues>>,\n    config?: GetValuesConfig,\n  ) => {\n    let values = {\n      ...(_state.mount ? _formValues : _defaultValues),\n    };\n\n    if (config) {\n      values = extractFormValues(\n        config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields,\n        values,\n      );\n    }\n\n    return isUndefined(fieldNames)\n      ? values\n      : isString(fieldNames)\n        ? get(values, fieldNames)\n        : fieldNames.map((name) => get(values, name));\n  };\n\n  const getErrors: UseFormGetErrors<TFieldValues> = (\n    fieldNames?: InternalFieldName | ReadonlyArray<InternalFieldName>,\n  ) =>\n    isUndefined(fieldNames)\n      ? { ..._formState.errors }\n      : isString(fieldNames)\n        ? get(_formState.errors, fieldNames)\n        : fieldNames.map((name) => get(_formState.errors, name));\n\n  const getFieldState: UseFormGetFieldState<TFieldValues> = (\n    name,\n    formState,\n  ) => {\n    const targetFormState = formState || _formState;\n    const error = get(targetFormState.errors, name);\n\n    return {\n      invalid: !!error,\n      isDirty: !!get(targetFormState.dirtyFields, name),\n      error,\n      isValidating: !!get(targetFormState.validatingFields, name),\n      isTouched: !!get(targetFormState.touchedFields, name),\n    };\n  };\n\n  const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n    const names = name ? convertToArrayPayload(name) : undefined;\n\n    if (names) {\n      names.forEach((inputName) => {\n        cancelDelayedErrorTree(inputName);\n        unset(_formState.errors, inputName);\n        _subjects.state.next({\n          name: inputName,\n          errors: _formState.errors,\n        });\n      });\n    } else {\n      Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n      _formState.errors = {};\n      _subjects.state.next({\n        errors: _formState.errors,\n      });\n    }\n  };\n\n  const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n    cancelDelayedError(name);\n\n    const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n    const currentError = get(_formState.errors, name) || {};\n\n    const {\n      ref: currentRef,\n      message,\n      type,\n      types,\n      ...restOfErrorTree\n    } = currentError;\n\n    set(_formState.errors, name, {\n      ...restOfErrorTree,\n      ...error,\n      ref,\n    });\n\n    _subjects.state.next({\n      name,\n      errors: _formState.errors,\n      isValid: false,\n    });\n\n    options && options.shouldFocus && ref && ref.focus && ref.focus();\n  };\n\n  const watch: UseFormWatch<TFieldValues> = (\n    name?:\n      | FieldPath<TFieldValues>\n      | ReadonlyArray<FieldPath<TFieldValues>>\n      | WatchObserver<TFieldValues>,\n    defaultValue?: DeepPartial<TFieldValues>,\n  ) => {\n    if (isFunction(name)) {\n      _valuesSubscriberCount++;\n      const { unsubscribe } = _subjects.state.subscribe({\n        next: (payload) =>\n          'values' in payload &&\n          name(\n            payload.values || _getWatch(undefined, defaultValue),\n            payload as {\n              name?: FieldPath<TFieldValues>;\n              type?: EventType;\n              value?: unknown;\n            },\n          ),\n      });\n      let called = false;\n\n      return {\n        unsubscribe: () => {\n          if (called) {\n            return;\n          }\n\n          called = true;\n          _valuesSubscriberCount--;\n          unsubscribe();\n        },\n      };\n    }\n    return _getWatch(\n      name as InternalFieldName | InternalFieldName[],\n      defaultValue,\n      true,\n    );\n  };\n\n  const _subscribe: FromSubscribe<TFieldValues> = (props) => {\n    const needsValues = !!(props.formState as Record<string, unknown>)?.values;\n    if (needsValues) {\n      _valuesSubscriberCount++;\n    }\n    const { unsubscribe } = _subjects.state.subscribe({\n      next: (\n        formState: Partial<FormState<TFieldValues>> & {\n          name?: InternalFieldName;\n          values?: TFieldValues | undefined;\n          type?: EventType;\n        },\n      ) => {\n        if (\n          shouldSubscribeByName(props.name, formState.name, props.exact) &&\n          shouldRenderFormState(\n            formState,\n            (props.formState as ReadFormState) || _proxyFormState,\n            _setFormState,\n            props.reRenderRoot,\n          )\n        ) {\n          const snapshot = { ..._formValues } as TFieldValues;\n\n          props.callback({\n            values: snapshot,\n            ..._formState,\n            ...formState,\n            defaultValues:\n              _defaultValues as FormState<TFieldValues>['defaultValues'],\n          });\n        }\n      },\n    });\n    if (!needsValues) {\n      return unsubscribe;\n    }\n    let called = false;\n    return () => {\n      if (called) {\n        return;\n      }\n\n      called = true;\n      _valuesSubscriberCount--;\n      unsubscribe();\n    };\n  };\n\n  const subscribe: UseFormSubscribe<TFieldValues> = (props) => {\n    _state.mount = true;\n    _proxySubscribeFormState = {\n      ..._proxySubscribeFormState,\n      ...props.formState,\n    };\n    return _subscribe({\n      ...props,\n      formState: {\n        ...defaultProxyFormState,\n        ...props.formState,\n      },\n    });\n  };\n\n  const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n    for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n      _names.mount.delete(fieldName);\n      _names.array.delete(fieldName);\n      _names.disabled.delete(fieldName);\n\n      if (!options.keepValue) {\n        unset(_fields, fieldName);\n        unset(_formValues, fieldName);\n      }\n\n      if (!options.keepError) {\n        cancelDelayedErrorTree(fieldName);\n        unset(_formState.errors, fieldName);\n      }\n      !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n      !options.keepTouched && unset(_formState.touchedFields, fieldName);\n      !options.keepIsValidating &&\n        unset(_formState.validatingFields, fieldName);\n      !_options.shouldUnregister &&\n        !options.keepDefaultValue &&\n        unset(_defaultValues, fieldName);\n    }\n\n    _valuesSubscriberCount &&\n      _subjects.state.next({\n        values: cloneObject(_formValues),\n      });\n\n    _subjects.state.next({\n      ..._formState,\n      ...(options.keepDirty ? {} : { isDirty: _getDirty() }),\n      ...(options.keepIsValidating\n        ? {}\n        : { isValidating: !isEmptyObject(_formState.validatingFields) }),\n    });\n\n    !options.keepIsValid && _setValid();\n  };\n\n  const _setDisabledField: Control<TFieldValues>['_setDisabledField'] = ({\n    disabled,\n    name,\n  }) => {\n    if (\n      (isBoolean(disabled) && _state.mount) ||\n      !!disabled ||\n      _names.disabled.has(name)\n    ) {\n      const wasDisabled = _names.disabled.has(name);\n      const isDisabled = !!disabled;\n      const disabledStateChanged = wasDisabled !== isDisabled;\n\n      disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n      disabledStateChanged && _state.mount && !_state.action && _setValid();\n    }\n  };\n\n  const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\n    let field = get(_fields, name);\n    const disabledIsDefined =\n      isBoolean(options.disabled) || isBoolean(_options.disabled);\n    const shouldRevalidateRemount =\n      !_names.registerName.has(name) && field && field._f && !field._f.mount;\n\n    set(_fields, name, {\n      ...(field || {}),\n      _f: {\n        ...(field && field._f ? field._f : { ref: { name } }),\n        name,\n        mount: true,\n        ...options,\n      },\n    });\n    _names.mount.add(name);\n\n    if (field && !shouldRevalidateRemount) {\n      _setDisabledField({\n        disabled: isBoolean(options.disabled)\n          ? options.disabled\n          : _options.disabled,\n        name,\n      });\n    } else {\n      updateValidAndValue(name, true, options.value);\n    }\n\n    return {\n      ...(disabledIsDefined\n        ? { disabled: options.disabled || _options.disabled }\n        : {}),\n      ...(_options.progressive\n        ? {\n            required: !!options.required,\n            min: getRuleValue(options.min),\n            max: getRuleValue(options.max),\n            minLength: getRuleValue<number>(options.minLength) as number,\n            maxLength: getRuleValue(options.maxLength) as number,\n            pattern: getRuleValue(options.pattern) as string,\n          }\n        : {}),\n      name,\n      onChange,\n      onBlur: onChange,\n      ref: (ref: HTMLInputElement | null): void => {\n        if (ref) {\n          _names.registerName.add(name);\n          register(name, options);\n          _names.registerName.delete(name);\n          field = get(_fields, name);\n\n          const fieldRef = isUndefined(ref.value)\n            ? ref.querySelectorAll\n              ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n              : ref\n            : ref;\n          const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n          const refs = field._f.refs || [];\n\n          if (\n            radioOrCheckbox\n              ? refs.find((option: Ref) => option === fieldRef)\n              : fieldRef === field._f.ref\n          ) {\n            return;\n          }\n\n          const newField = {\n            ...field._f,\n          };\n          if (radioOrCheckbox) {\n            newField.refs = [\n              ...refs.filter(live),\n              fieldRef,\n              ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n            ];\n            newField.ref = { type: fieldRef.type, name };\n          } else {\n            newField.ref = fieldRef;\n            delete newField.refs;\n          }\n\n          set(_fields, name, {\n            _f: newField,\n          });\n\n          updateValidAndValue(name, false, undefined, fieldRef);\n        } else {\n          field = get(_fields, name, {});\n\n          if (field._f) {\n            field._f.mount = false;\n          }\n\n          (_options.shouldUnregister || options.shouldUnregister) &&\n            !(isNameInFieldArray(_names.array, name) && _state.action) &&\n            _names.unMount.add(name);\n        }\n      },\n    };\n  };\n\n  const _focusError = () =>\n    _options.shouldFocusError &&\n    !_options.shouldUseNativeValidation &&\n    iterateFieldsByAction(_fields, _focusInput, _names.mount);\n\n  const _disableForm = (disabled?: boolean) => {\n    if (isBoolean(disabled)) {\n      _subjects.state.next({ disabled });\n      iterateFieldsByAction(\n        _fields,\n        (ref, name) => {\n          const currentField: Field = get(_fields, name);\n          if (currentField) {\n            ref.disabled = currentField._f.disabled || disabled;\n\n            if (Array.isArray(currentField._f.refs)) {\n              currentField._f.refs.forEach((inputRef) => {\n                inputRef.disabled = currentField._f.disabled || disabled;\n              });\n            }\n          }\n        },\n        0,\n      );\n    }\n  };\n\n  const handleSubmit: UseFormHandleSubmit<TFieldValues, TTransformedValues> =\n    (onValid, onInvalid) => async (e) => {\n      let result: any = undefined;\n      let onValidError = undefined;\n      if (e) {\n        e.preventDefault && e.preventDefault();\n        (e as React.BaseSyntheticEvent).persist &&\n          (e as React.BaseSyntheticEvent).persist();\n      }\n      let fieldValues:\n        | TFieldValues\n        | TTransformedValues\n        | Record<string, never> = cloneObject(_formValues);\n\n      _subjects.state.next({\n        isSubmitting: true,\n      });\n\n      if (_options.resolver) {\n        const resetCallId = _resetCallId;\n        const { errors, values } = await _runSchema();\n\n        if (resetCallId !== _resetCallId) {\n          return;\n        }\n\n        _updateIsValidating();\n        Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n        _formState.errors = errors;\n        fieldValues = cloneObject(values);\n      } else {\n        await executeBuiltInValidation({\n          fields: _fields,\n          eventType: EVENTS.SUBMIT,\n        });\n\n        unset(_formState.errors, ROOT_ERROR_TYPE);\n      }\n\n      if (_names.disabled.size) {\n        for (const name of _names.disabled) {\n          unset(fieldValues, name);\n        }\n      }\n\n      if (isEmptyObject(_formState.errors)) {\n        _subjects.state.next({\n          errors: {},\n        });\n        try {\n          result = await onValid(fieldValues as TTransformedValues, e);\n        } catch (error) {\n          onValidError = error;\n        }\n      } else {\n        if (onInvalid) {\n          await onInvalid({ ..._formState.errors }, e);\n        }\n\n        _focusError();\n        setTimeout(_focusError);\n      }\n\n      _subjects.state.next({\n        isSubmitted: true,\n        isSubmitting: false,\n        isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n        submitCount: _formState.submitCount + 1,\n        errors: _formState.errors,\n      });\n      if (onValidError) {\n        throw onValidError;\n      }\n      return result;\n    };\n\n  const resetField: UseFormResetField<TFieldValues> = (name, options = {}) => {\n    if (get(_fields, name)) {\n      unset(_formState.validatingFields, name);\n\n      if (isUndefined(options.defaultValue)) {\n        setValue(name, cloneObject(get(_defaultValues, name)));\n      } else {\n        setValue(\n          name,\n          options.defaultValue as Parameters<typeof setValue<typeof name>>[1],\n        );\n        set(_defaultValues, name, cloneObject(options.defaultValue));\n      }\n\n      if (!options.keepTouched) {\n        unset(_formState.touchedFields, name);\n      }\n\n      if (!options.keepDirty) {\n        unset(_formState.dirtyFields, name);\n        _formState.isDirty = options.defaultValue\n          ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n          : _getDirty();\n      }\n\n      if (!options.keepError) {\n        cancelDelayedError(name);\n        unset(_formState.errors, name);\n        _setValid();\n      }\n\n      _subjects.state.next({\n        ..._formState,\n        isValidating: !isEmptyObject(_formState.validatingFields),\n      });\n    }\n  };\n\n  const _reset: UseFormReset<TFieldValues> = (\n    formValues,\n    keepStateOptions = {},\n  ) => {\n    _resetCallId++;\n    const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n    const cloneUpdatedValues = cloneObject(updatedValues);\n    const isEmptyResetValues = isEmptyObject(formValues);\n    const values = cloneUpdatedValues;\n    const fieldRefs = _fields;\n\n    Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n\n    if (!keepStateOptions.keepDefaultValues) {\n      _defaultValues = updatedValues;\n    }\n\n    if (!keepStateOptions.keepValues) {\n      if (keepStateOptions.keepDirtyValues) {\n        const fieldsToCheck = new Set([\n          ..._names.mount,\n          ...collectDirtyFieldNames(\n            getDirtyFields(_defaultValues, _formValues, undefined, fieldRefs),\n            _formState.dirtyFields,\n          ),\n        ]);\n        for (const fieldName of fieldsToCheck) {\n          const isDirty = get(_formState.dirtyFields, fieldName);\n          const existingValue = get(_formValues, fieldName);\n          const newValue = get(values, fieldName);\n\n          if (isDirty && !isUndefined(existingValue)) {\n            set(values, fieldName, existingValue);\n          } else if (!isDirty && !isUndefined(newValue)) {\n            setValue(fieldName as FieldPath<TFieldValues>, newValue);\n          }\n        }\n      } else {\n        if (isWeb && isUndefined(formValues)) {\n          for (const name of _names.mount) {\n            const field = get(_fields, name);\n            if (field && field._f) {\n              const fieldReference = Array.isArray(field._f.refs)\n                ? field._f.refs[0]\n                : field._f.ref;\n\n              if (isHTMLElement(fieldReference)) {\n                const form = fieldReference.closest('form');\n                if (form) {\n                  form.reset();\n                  break;\n                }\n              }\n            }\n          }\n        }\n\n        if (keepStateOptions.keepFieldsRef) {\n          for (const fieldName of _names.mount) {\n            setValue(\n              fieldName as FieldPath<TFieldValues>,\n              get(values, fieldName),\n            );\n          }\n        } else {\n          _fields = {};\n        }\n      }\n\n      if (_options.shouldUnregister) {\n        _formValues = keepStateOptions.keepDefaultValues\n          ? (cloneObject(_defaultValues) as TFieldValues)\n          : ({} as TFieldValues);\n\n        if (keepStateOptions.keepFieldsRef) {\n          for (const fieldName of _names.mount) {\n            set(_formValues, fieldName, get(values, fieldName));\n          }\n        }\n      } else {\n        _formValues = cloneObject(values) as TFieldValues;\n      }\n\n      _subjects.array.next({\n        values: { ...values },\n      });\n\n      _subjects.state.next({\n        name: undefined,\n        type: undefined,\n        values: { ...values } as TFieldValues,\n      });\n    }\n\n    _names = {\n      mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n      unMount: new Set(),\n      array: new Set(),\n      registerName: new Set(),\n      disabled: new Set(),\n      watch: new Set(),\n      watchAll: false,\n      focus: '',\n    };\n\n    _state.mount =\n      !_proxyFormState.isValid ||\n      !!keepStateOptions.keepIsValid ||\n      !!keepStateOptions.keepDirtyValues ||\n      (!_options.shouldUnregister && !isEmptyObject(values));\n\n    _state.watch = !!_options.shouldUnregister;\n    _state.keepIsValid = !!keepStateOptions.keepIsValid;\n    _state.action = false;\n    _state.actionArrayLengths.clear();\n\n    if (!keepStateOptions.keepErrors) {\n      _formState.errors = {};\n    }\n\n    _subjects.state.next({\n      submitCount: keepStateOptions.keepSubmitCount\n        ? _formState.submitCount\n        : 0,\n      isDirty: isEmptyResetValues\n        ? false\n        : keepStateOptions.keepDirty\n          ? _formState.isDirty\n          : keepStateOptions.keepValues\n            ? _getDirty()\n            : !!(\n                keepStateOptions.keepDefaultValues &&\n                !deepEqual(formValues, _defaultValues)\n              ),\n      isSubmitted: keepStateOptions.keepIsSubmitted\n        ? _formState.isSubmitted\n        : false,\n      dirtyFields: isEmptyResetValues\n        ? {}\n        : keepStateOptions.keepDirtyValues\n          ? keepStateOptions.keepDefaultValues && _formValues\n            ? getDirtyFields(_defaultValues, _formValues, undefined, fieldRefs)\n            : _formState.dirtyFields\n          : keepStateOptions.keepDefaultValues && formValues\n            ? getDirtyFields(_defaultValues, formValues, undefined, fieldRefs)\n            : keepStateOptions.keepDirty\n              ? _formState.dirtyFields\n              : keepStateOptions.keepValues\n                ? getDirtyFields(\n                    _defaultValues,\n                    _formValues,\n                    undefined,\n                    fieldRefs,\n                  )\n                : {},\n      touchedFields: keepStateOptions.keepTouched\n        ? _formState.touchedFields\n        : {},\n      ...(!keepStateOptions.keepIsValidating &&\n      (_formState.isValidating || !isEmptyObject(_formState.validatingFields))\n        ? { validatingFields: {}, isValidating: false }\n        : null),\n      errors: keepStateOptions.keepErrors ? _formState.errors : {},\n      isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n        ? _formState.isSubmitSuccessful\n        : false,\n      isSubmitting: false,\n      defaultValues: _defaultValues as FormState<TFieldValues>['defaultValues'],\n    });\n  };\n\n  const reset: UseFormReset<TFieldValues> = (formValues, keepStateOptions) =>\n    _reset(\n      isFunction(formValues)\n        ? (formValues as Function)(_formValues as TFieldValues)\n        : formValues,\n      { ..._options.resetOptions, ...keepStateOptions },\n    );\n\n  const setFocus: UseFormSetFocus<TFieldValues> = (name, options = {}) => {\n    const field = get(_fields, name);\n    const fieldReference = field && field._f;\n\n    if (fieldReference) {\n      const fieldRef = fieldReference.refs\n        ? fieldReference.refs[0]\n        : fieldReference.ref;\n\n      if (fieldRef.focus) {\n        setTimeout(() => {\n          fieldRef.focus();\n          options.shouldSelect &&\n            isFunction(fieldRef.select) &&\n            fieldRef.select();\n        });\n      }\n    }\n  };\n\n  const _setFormState = (\n    updatedFormState: Partial<FormState<TFieldValues>> & {\n      name?: InternalFieldName;\n      type?: EventType;\n      values?: TFieldValues;\n    },\n  ) => {\n    // `name`, `type`, and `values` describe the event that produced this\n    // update, not the form's persisted state (they aren't part of\n    // `FormState`). Merging them in would leak a stale `name`/`type` from\n    // one event into a later, unrelated notification that doesn't specify\n    // its own.\n    const { name, type, values, ...formState } = updatedFormState;\n\n    _formState = {\n      ..._formState,\n      ...formState,\n    };\n  };\n\n  _subjects.state.subscribe({ next: _setFormState });\n\n  const _resetDefaultValues = () =>\n    isFunction(_options.defaultValues) &&\n    (_options.defaultValues as Function)().then((values: TFieldValues) => {\n      reset(values, _options.resetOptions);\n      _subjects.state.next({\n        isLoading: false,\n      });\n    });\n\n  const resetDefaultValues: UseFormResetDefaultValues<TFieldValues> = (\n    values,\n    options = {},\n  ) => {\n    _defaultValues = cloneObject(values) as Partial<typeof _defaultValues>;\n\n    if (!options.keepDirty) {\n      const newDirtyFields = getDirtyFields(\n        _defaultValues,\n        _formValues,\n        undefined,\n        _fields,\n      );\n      _formState.dirtyFields = newDirtyFields as typeof _formState.dirtyFields;\n      _formState.isDirty = !isEmptyObject(newDirtyFields);\n    }\n\n    if (!options.keepIsValid) {\n      _setValid();\n    }\n\n    _subjects.state.next({\n      ..._formState,\n      defaultValues: _defaultValues as FormState<TFieldValues>['defaultValues'],\n    });\n  };\n\n  const methods = {\n    control: {\n      register,\n      unregister,\n      getFieldState,\n      handleSubmit,\n      setError,\n      _subscribe,\n      _runSchema,\n      _updateIsValidating,\n      _focusError,\n      _getWatch,\n      _getDirty,\n      _setValid,\n      _setFieldArray,\n      _setDisabledField,\n      _setErrors,\n      _getFieldArray,\n      _reset,\n      _resetDefaultValues,\n      _removeUnmounted,\n      _disableForm,\n      _subjects,\n      _proxyFormState,\n      get _fields() {\n        return _fields;\n      },\n      get _formValues() {\n        return _formValues;\n      },\n      get _state() {\n        return _state;\n      },\n      set _state(value) {\n        _state = value;\n      },\n      get _defaultValues() {\n        return _defaultValues;\n      },\n      get _names() {\n        return _names;\n      },\n      set _names(value) {\n        _names = value;\n      },\n      get _formState() {\n        return _formState;\n      },\n      get _options() {\n        return _options;\n      },\n      set _options(value) {\n        _options = {\n          ..._options,\n          ...value,\n        };\n        _validationModeBeforeSubmit = getValidationModes(_options.mode);\n        _validationModeAfterSubmit = getValidationModes(\n          _options.reValidateMode,\n        );\n        shouldDisplayAllAssociatedErrors =\n          _options.criteriaMode === VALIDATION_MODE.all;\n      },\n    },\n    subscribe,\n    trigger,\n    register,\n    handleSubmit,\n    watch,\n    setValue,\n    setValues,\n    getValues,\n    getErrors,\n    reset,\n    resetField,\n    resetDefaultValues,\n    clearErrors,\n    unregister,\n    setError,\n    setFocus,\n    getFieldState,\n  };\n\n  return {\n    ...methods,\n    formControl: methods,\n  };\n}\n","import React from 'react';\n\nimport { DEFAULT_FORM_STATE } from './logic/createFormControl';\nimport getProxyFormState from './logic/getProxyFormState';\nimport cloneObject from './utils/cloneObject';\nimport deepEqual from './utils/deepEqual';\nimport isFunction from './utils/isFunction';\nimport { createFormControl } from './logic';\nimport type {\n  FieldValues,\n  FormState,\n  UseFormProps,\n  UseFormReturn,\n} from './types';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useResyncOnReconnect } from './useResyncOnReconnect';\n\n/**\n * Core hook for managing a form. Returns all methods and state for\n * registration, validation, and submission.\n *\n * @see [API](https://react-hook-form.com/docs/useform)\n *\n * @example\n * ```tsx\n * const { register, handleSubmit, formState: { errors } } = useForm<FormValues>();\n * <form onSubmit={handleSubmit(onSubmit)}>\n *   <input {...register(\"email\", { required: true })} />\n * </form>\n * ```\n */\nexport function useForm<\n  TFieldValues extends FieldValues = FieldValues,\n  TContext = any,\n  TTransformedValues = TFieldValues,\n>(\n  props: UseFormProps<TFieldValues, TContext, TTransformedValues> = {},\n): UseFormReturn<TFieldValues, TContext, TTransformedValues> {\n  const _formControl = React.useRef<\n    UseFormReturn<TFieldValues, TContext, TTransformedValues> | undefined\n  >(undefined);\n  const _values = React.useRef<typeof props.values>(undefined);\n  const _formControlProp = React.useRef(props.formControl);\n  const [formState, updateFormState] = React.useState<FormState<TFieldValues>>(\n    () => ({\n      ...cloneObject(DEFAULT_FORM_STATE),\n      isLoading: isFunction(props.defaultValues),\n      errors: props.errors || {},\n      disabled: props.disabled || false,\n      defaultValues: isFunction(props.defaultValues)\n        ? undefined\n        : props.defaultValues,\n    }),\n  );\n\n  if (\n    !_formControl.current ||\n    (props.formControl && _formControlProp.current !== props.formControl)\n  ) {\n    _formControlProp.current = props.formControl;\n    if (props.formControl) {\n      _formControl.current = {\n        ...props.formControl,\n        formState,\n      };\n\n      if (props.defaultValues && !isFunction(props.defaultValues)) {\n        props.formControl.reset(props.defaultValues, props.resetOptions);\n      }\n    } else {\n      const { formControl, ...rest } = createFormControl(props);\n\n      _formControl.current = {\n        ...rest,\n        formState,\n      };\n    }\n  }\n\n  const control = _formControl.current.control;\n  control._options = props;\n\n  const getCurrentFormState = () => ({\n    ...control._formState,\n    defaultValues:\n      control._defaultValues as FormState<TFieldValues>['defaultValues'],\n  });\n\n  const { resyncIfNeeded, snapshot } =\n    useResyncOnReconnect<FormState<TFieldValues>>(getCurrentFormState);\n\n  useIsomorphicLayoutEffect(() => {\n    resyncIfNeeded(true, getCurrentFormState, updateFormState);\n\n    const unsubscribe = control._subscribe({\n      formState: control._proxyFormState,\n      callback: () =>\n        updateFormState({\n          ...control._formState,\n          defaultValues:\n            control._defaultValues as FormState<TFieldValues>['defaultValues'],\n        }),\n      reRenderRoot: true,\n    });\n\n    updateFormState((data) => ({\n      ...data,\n      isReady: true,\n    }));\n\n    control._formState.isReady = true;\n\n    return () => {\n      unsubscribe();\n      snapshot(true, getCurrentFormState);\n    };\n  }, [control, resyncIfNeeded, snapshot]);\n\n  React.useEffect(\n    () => control._disableForm(props.disabled),\n    [control, props.disabled],\n  );\n\n  React.useEffect(() => {\n    if (props.mode) {\n      control._options.mode = props.mode;\n    }\n    if (props.reValidateMode) {\n      control._options.reValidateMode = props.reValidateMode;\n    }\n  }, [control, props.mode, props.reValidateMode]);\n\n  React.useEffect(() => {\n    if (props.errors) {\n      control._setErrors(props.errors);\n      control._focusError();\n    }\n  }, [control, props.errors]);\n\n  React.useEffect(() => {\n    props.shouldUnregister &&\n      control._subjects.state.next({\n        values: control._getWatch(),\n      });\n  }, [control, props.shouldUnregister]);\n\n  React.useEffect(() => {\n    if (control._proxyFormState.isDirty) {\n      const isDirty = control._getDirty();\n      if (isDirty !== formState.isDirty) {\n        control._subjects.state.next({\n          isDirty,\n        });\n      }\n    }\n  }, [control, formState.isDirty]);\n\n  React.useEffect(() => {\n    if (props.values && !deepEqual(props.values, _values.current)) {\n      control._reset(props.values, {\n        keepFieldsRef: true,\n        ...control._options.resetOptions,\n      });\n      if (!control._options.resetOptions?.keepIsValid) {\n        control._setValid();\n      }\n      _values.current = props.values;\n      updateFormState((state) => ({ ...state }));\n    } else {\n      control._resetDefaultValues();\n    }\n  }, [control, props.values]);\n\n  React.useEffect(() => {\n    if (!control._state.mount) {\n      control._setValid();\n      control._state.mount = true;\n    }\n\n    if (control._state.watch) {\n      control._state.watch = false;\n      control._subjects.state.next({ ...control._formState });\n    }\n\n    control._removeUnmounted();\n  });\n\n  _formControl.current.formState = React.useMemo(\n    () => getProxyFormState(formState, control),\n    [control, formState],\n  );\n\n  return _formControl.current;\n}\n","import type {\n  FieldPath,\n  FieldValues,\n  WatchProps,\n  WatchRenderValue,\n} from './types';\nimport { useWatch } from './useWatch';\n\n/**\n * Component wrapper around `useWatch`. Re-renders only when watched fields change.\n *\n * @see [API](https://react-hook-form.com/docs/usewatch)\n *\n * @example\n * ```tsx\n * <Watch\n *   control={control}\n *   names={[\"foo\", \"bar\"]}\n *   render={([foo, bar]) => <span>{foo} {bar}</span>}\n * />\n * ```\n */\nexport const Watch = <\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldName extends\n    | FieldPath<TFieldValues>\n    | readonly [FieldPath<TFieldValues>, ...FieldPath<TFieldValues>[]]\n    | FieldPath<TFieldValues>[]\n    | readonly FieldPath<TFieldValues>[]\n    | undefined = undefined,\n  TContext = any,\n  TTransformedValues = TFieldValues,\n  TComputeValue = undefined,\n>(\n  props: WatchProps<\n    TFieldName,\n    TFieldValues,\n    TContext,\n    TTransformedValues,\n    TComputeValue\n  >,\n) =>\n  props.render(\n    useWatch({ name: props.names, ...(props as any) }) as WatchRenderValue<\n      TFieldName,\n      TFieldValues,\n      TComputeValue\n    >,\n  );\n"],"names":["insert","insertAt","isCheckBox"],"mappings":"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"}