react-hook-form 7.4.3-beta.4 → 7.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getNodeParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/compact.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/constants.ts","../src/utils/omit.ts","../src/useFormContext.tsx","../src/logic/getProxyFormState.ts","../src/utils/isEmptyObject.ts","../src/logic/shouldRenderFormState.ts","../src/utils/convertToArrayPayload.ts","../src/utils/isWeb.ts","../src/utils/isProxyEnabled.ts","../src/useFormState.ts","../src/useController.ts","../src/logic/getControllerValue.ts","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/getFieldsValues.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/utils/deepMerge.ts","../src/utils/append.ts","../src/utils/fillEmptyArray.ts","../src/utils/insert.ts","../src/utils/isString.ts","../src/utils/move.ts","../src/utils/prepend.ts","../src/utils/remove.ts","../src/utils/swap.ts","../src/utils/isBoolean.ts","../src/utils/unset.ts","../src/logic/getFields.ts","../src/utils/isFileInput.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioInput.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/getMultipleSelectValue.ts","../src/logic/hasValidation.ts","../src/utils/isFunction.ts","../src/utils/isMessage.ts","../src/utils/isRegex.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/utils/getValidationModes.ts","../src/utils/isHTMLElement.ts","../src/utils/Subject.ts","../src/useForm.ts","../src/controller.tsx","../src/useFieldArray.ts","../src/logic/skipValidation.ts","../src/utils/isRadioOrCheckbox.ts","../src/useWatch.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is null | undefined => value == null;\n","import isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown) => 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 !(value instanceof Date);\n","export default (name: string) => name.substring(0, name.search(/.\\d/)) || name;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n [...names].some((current) => getNodeParentName(name) === current);\n","export default (value: any[]) => value.filter(Boolean);\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isUndefined from './isUndefined';\n\nexport default (obj: any = {}, path: string, defaultValue?: unknown) => {\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) => (isNullOrUndefined(result) ? result : result[key]),\n obj,\n );\n\n return isUndefined(result) || result === obj\n ? isUndefined(obj[path])\n ? defaultValue\n : obj[path]\n : result;\n};\n","import { ValidationMode } from './types';\n\nexport const EVENTS = {\n BLUR: 'blur',\n CHANGE: 'change',\n};\n\nexport const VALIDATION_MODE: ValidationMode = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\n\nexport const SELECT = 'select';\n\nexport const UNDEFINED = 'undefined';\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};\n","export default <Key extends string, T extends Record<Key, any>>(\n source: T,\n key: Key,\n): Omit<T, Key> => {\n const copy = { ...source };\n delete copy[key];\n\n return copy;\n};\n","import * as React from 'react';\n\nimport omit from './utils/omit';\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst FormContext = React.createContext<UseFormReturn | null>(null);\n\nFormContext.displayName = 'RHFContext';\n\nexport const useFormContext = <\n TFieldValues extends FieldValues\n>(): UseFormReturn<TFieldValues> =>\n (React.useContext(FormContext) as unknown) as UseFormReturn<TFieldValues>;\n\nexport const FormProvider = <TFieldValues extends FieldValues>(\n props: FormProviderProps<TFieldValues>,\n) => (\n <FormContext.Provider\n value={(omit(props, 'children') as unknown) as UseFormReturn}\n >\n {props.children}\n </FormContext.Provider>\n);\n","import * as React from 'react';\n\nimport { VALIDATION_MODE } from '../constants';\nimport { FormState, FormStateProxy, ReadFormState } from '../types';\n\nexport default <TFieldValues>(\n isProxyEnabled: boolean,\n formState: FormState<TFieldValues>,\n readFormStateRef: React.MutableRefObject<ReadFormState>,\n localReadFormStateRef?: React.MutableRefObject<ReadFormState>,\n isRoot = true,\n) =>\n isProxyEnabled\n ? new Proxy(formState, {\n get: (obj, prop: keyof FormStateProxy) => {\n if (prop in obj) {\n if (readFormStateRef.current[prop] !== VALIDATION_MODE.all) {\n readFormStateRef.current[prop] = isRoot\n ? VALIDATION_MODE.all\n : true;\n }\n localReadFormStateRef &&\n (localReadFormStateRef.current[prop] = true);\n return obj[prop];\n }\n\n return undefined;\n },\n })\n : formState;\n","import { 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 { VALIDATION_MODE } from '../constants';\nimport { ReadFormState } from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport omit from '../utils/omit';\n\nexport default <T extends Record<string, any>, K extends ReadFormState>(\n formStateData: T,\n readFormStateRef: K,\n isRoot?: boolean,\n) => {\n const formState = omit(formStateData, 'name');\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(readFormStateRef).length ||\n Object.keys(formState).find(\n (key) =>\n readFormStateRef[key as keyof ReadFormState] ===\n (isRoot ? VALIDATION_MODE.all : true),\n )\n );\n};\n","export default <T extends unknown>(value: T) =>\n Array.isArray(value) ? value : [value];\n","import { UNDEFINED } from '../constants';\n\nexport default typeof window !== UNDEFINED &&\n typeof window.HTMLElement !== UNDEFINED &&\n typeof document !== UNDEFINED;\n","import { UNDEFINED } from '../constants';\n\nimport isWeb from './isWeb';\n\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\n\nexport default isProxyEnabled;\n","import * as React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormStateProps,\n UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\n props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n const { control, name } = props || {};\n const methods = useFormContext();\n const { formStateRef, formStateSubjectRef, readFormStateRef } =\n control || methods.control;\n const nameRef = React.useRef<InternalFieldName>(name as InternalFieldName);\n nameRef.current = name as InternalFieldName;\n\n const [formState, updateFormState] = React.useState(formStateRef.current);\n const readFormState = React.useRef({\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n\n React.useEffect(() => {\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next: (formState) =>\n (!nameRef.current ||\n !formState.name ||\n convertToArrayPayload(nameRef.current).includes(formState.name)) &&\n shouldRenderFormState(formState, readFormState.current) &&\n updateFormState({\n ...formStateRef.current,\n ...formState,\n }),\n });\n\n return () => formStateSubscription.unsubscribe();\n }, []);\n\n return getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState as FormState<TFieldValues>,\n readFormStateRef,\n readFormState,\n false,\n );\n}\n\nexport { useFormState };\n","import * as React from 'react';\n\nimport getControllerValue from './logic/getControllerValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport isUndefined from './utils/isUndefined';\nimport { EVENTS } from './constants';\nimport {\n FieldPath,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\n\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n name,\n rules,\n defaultValue,\n control,\n shouldUnregister,\n}: UseControllerProps<TFieldValues, TName>): UseControllerReturn<\n TFieldValues,\n TName\n> {\n const methods = useFormContext<TFieldValues>();\n const {\n defaultValuesRef,\n register,\n fieldsRef,\n unregister,\n fieldArrayNamesRef,\n controllerSubjectRef,\n shouldUnmountUnregister,\n } = control || methods.control;\n\n const { onChange, onBlur, ref } = register(name, rules);\n const [value, setInputStateValue] = React.useState(\n isUndefined(get(fieldsRef.current, name)._f.value) ||\n isNameInFieldArray(fieldArrayNamesRef.current, name)\n ? isUndefined(defaultValue)\n ? get(defaultValuesRef.current, name)\n : defaultValue\n : get(fieldsRef.current, name)._f.value,\n );\n const formState = useFormState({\n control: control || methods.control,\n name,\n });\n get(fieldsRef.current, name)._f.value = value;\n\n React.useEffect(() => {\n const controllerSubscription = controllerSubjectRef.current.subscribe({\n next: (data) =>\n (!data.name || name === data.name) &&\n setInputStateValue(get(data.values, name)),\n });\n\n return () => {\n controllerSubscription.unsubscribe();\n if (shouldUnmountUnregister || shouldUnregister) {\n unregister(name);\n } else if (get(fieldsRef.current, name)) {\n get(fieldsRef.current, name)._f.mount = false;\n }\n };\n }, [name]);\n\n return {\n field: {\n onChange: (event: any) => {\n const value = getControllerValue(event);\n setInputStateValue(value);\n\n onChange({\n target: {\n value,\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n });\n },\n onBlur: () => {\n onBlur({\n target: {\n name: name as InternalFieldName,\n },\n type: EVENTS.BLUR,\n });\n },\n name,\n value,\n ref: (elm) => elm && ref(elm),\n },\n formState,\n fieldState: Object.defineProperties(\n {},\n {\n invalid: {\n get() {\n return !!get(formState.errors, name);\n },\n },\n isDirty: {\n get() {\n return !!get(formState.dirtyFields, name);\n },\n },\n isTouched: {\n get() {\n return !!get(formState.touchedFields, name);\n },\n },\n error: {\n get() {\n return get(formState.errors, name);\n },\n },\n },\n ),\n };\n}\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\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 : (event as Event).target.value\n : event;\n","import {\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","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default function set(\n object: FieldValues,\n path: string,\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 object[key] = newValue;\n object = object[key];\n }\n return object;\n}\n","import { FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\nimport isUndefined from '../utils/isUndefined';\nimport omit from '../utils/omit';\n\nconst focusFieldBy = (\n fields: FieldRefs,\n callback: (name: string) => boolean,\n fieldsNames?: Set<InternalFieldName>,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f && callback(_f.name)) {\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\n break;\n } else if (_f.refs) {\n _f.refs[0].focus();\n break;\n }\n } else if (isObject(current)) {\n focusFieldBy(current, callback);\n }\n }\n }\n};\n\nexport default focusFieldBy;\n","import * as React from 'react';\n\nimport { FieldRefs, FieldValues } from '../types';\nimport omit from '../utils/omit';\nimport set from '../utils/set';\n\nconst getFieldsValuesInternal = (\n fieldsRef: React.MutableRefObject<FieldRefs>,\n defaultValuesRef?: React.MutableRefObject<FieldValues>,\n output: FieldValues = {},\n) => {\n for (const name in fieldsRef.current) {\n const field = fieldsRef.current[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n set(\n output,\n name,\n _f\n ? _f.ref.disabled || (_f.refs && _f.refs.every((ref) => ref.disabled))\n ? undefined\n : _f.value\n : Array.isArray(field)\n ? []\n : {},\n );\n\n current &&\n getFieldsValuesInternal(\n {\n current,\n },\n defaultValuesRef,\n output[name],\n );\n }\n }\n\n return output;\n};\n\nexport default (\n fieldsRef: React.MutableRefObject<FieldRefs>,\n defaultValuesRef?: React.MutableRefObject<FieldValues>,\n): any => {\n const output = getFieldsValuesInternal(fieldsRef, defaultValuesRef);\n\n return defaultValuesRef && defaultValuesRef.current\n ? {\n ...defaultValuesRef.current,\n ...output,\n }\n : output;\n};\n","import { UNDEFINED } from '../constants';\n\nexport default () => {\n const d =\n typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n","import { FieldValues } from '../types';\n\nimport generateId from './generateId';\n\nexport default <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id'\n>(\n values: Partial<TFieldArrayValues>[] = [],\n keyName: TKeyName,\n): any =>\n values.map((value: Partial<TFieldArrayValues>) => ({\n [keyName]: (value && value[keyName]) || generateId(),\n ...value,\n }));\n","import { 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 * as React from 'react';\n\nimport isObject from '../utils/isObject';\n\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(\n object1: any,\n object2: any,\n isErrorObject?: boolean,\n) {\n if (\n isPrimitive(object1) ||\n isPrimitive(object2) ||\n object1 instanceof Date ||\n object2 instanceof Date\n ) {\n return object1 === object2;\n }\n\n if (!React.isValidElement(object1)) {\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 for (const key of keys1) {\n const val1 = object1[key];\n\n if (!(isErrorObject && key === 'ref')) {\n const val2 = object2[key];\n\n if (\n (isObject(val1) || Array.isArray(val1)) &&\n (isObject(val2) || Array.isArray(val2))\n ? !deepEqual(val1, val2, isErrorObject)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n","import { get } from '../utils';\nimport deepEqual from '../utils/deepEqual';\nimport { deepMerge } from '../utils/deepMerge';\nimport set from '../utils/set';\n\nfunction setDirtyFields<\n T extends Record<string, unknown>[],\n U extends Record<string, unknown>[],\n K extends Record<string, boolean | []>\n>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n parentNode?: K,\n parentName?: keyof K,\n) {\n let index = -1;\n\n while (++index < values.length) {\n for (const key in values[index]) {\n if (Array.isArray(values[index][key])) {\n !dirtyFields[index] && (dirtyFields[index] = {});\n dirtyFields[index][key] = [];\n setDirtyFields(\n values[index][key] as T,\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\n ? set(dirtyFields[index] || {}, key)\n : (dirtyFields[index] = {\n ...dirtyFields[index],\n [key]: true,\n });\n }\n }\n\n parentNode &&\n !dirtyFields.length &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields;\n}\n\nexport default <T extends U, U extends Record<string, unknown>[]>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n) =>\n deepMerge(\n setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)),\n setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)),\n );\n","import isObject from './isObject';\nimport isPrimitive from './isPrimitive';\n\nexport function deepMerge<\n T extends Record<keyof T, any>,\n U extends Record<keyof U, any>\n>(target: T, source: U): T & U {\n if (isPrimitive(target) || isPrimitive(source)) {\n return source;\n }\n\n for (const key in source) {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n try {\n target[key] =\n (isObject(targetValue) && isObject(sourceValue)) ||\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\n ? deepMerge(targetValue, sourceValue)\n : sourceValue;\n } catch {}\n }\n\n return target;\n}\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function append<T>(data: T[], value: T | T[]): T[] {\n return [...data, ...convertToArrayPayload(value)];\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? Array(value.length).fill(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","export default (value: unknown): value is string => typeof value === 'string';\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 if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n }\n\n return [];\n};\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function prepend<T>(data: T[], value: T | T[]): T[] {\n return [...convertToArrayPayload(value), ...data];\n}\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])][0];\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","import isBoolean from './isBoolean';\nimport isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nexport default function unset(object: any, path: string) {\n const updatePath = isKey(path) ? [path] : stringToPath(path);\n const childObject =\n updatePath.length == 1 ? object : baseGet(object, updatePath);\n const key = updatePath[updatePath.length - 1];\n let previousObjRef;\n\n if (childObject) {\n delete childObject[key];\n }\n\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\n let index = -1;\n let objectRef;\n const currentPaths = updatePath.slice(0, -(k + 1));\n const currentPathsLength = currentPaths.length - 1;\n\n if (k > 0) {\n previousObjRef = object;\n }\n\n while (++index < currentPaths.length) {\n const item = currentPaths[index];\n objectRef = objectRef ? objectRef[item] : object[item];\n\n if (\n currentPathsLength === index &&\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\n (Array.isArray(objectRef) &&\n !objectRef.filter(\n (data) =>\n (isObject(data) && !isEmptyObject(data)) || isBoolean(data),\n ).length))\n ) {\n previousObjRef ? delete previousObjRef[item] : delete object[item];\n }\n\n previousObjRef = objectRef;\n }\n }\n\n return object;\n}\n","import { Field, FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isKey from '../utils/isKey';\nimport set from '../utils/set';\n\nexport default function getFields(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n fieldsRefs: FieldRefs,\n) {\n const currentFields: Record<InternalFieldName, Field['_f']> = {};\n\n for (const name of fieldsNames) {\n const field = get(fieldsRefs, name) as Field | undefined;\n\n if (field) {\n !isKey(name)\n ? set(currentFields, name, field._f)\n : (currentFields[name] = field._f);\n }\n }\n\n return currentFields;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","import { SELECT } from '../constants';\nimport { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-multiple`;\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\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 if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import { Field } from '../types';\n\nexport default (\n value: any,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n valueAsNumber\n ? value === ''\n ? NaN\n : +value\n : valueAsDate\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\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 { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getMultipleSelectValue from './getMultipleSelectValue';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(field?: Field) {\n if (field && field._f) {\n const ref = field._f.ref;\n\n if (ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(field._f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return getMultipleSelectValue(ref.options);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(field._f.refs).value;\n }\n\n return getFieldValueAs(\n isUndefined(ref.value) ? field._f.ref.value : ref.value,\n field._f,\n );\n }\n}\n","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => value);\n","import { RegisterOptions } from '../types';\n\nexport default <T extends RegisterOptions>(options?: T, mounted?: boolean) =>\n options &&\n mounted &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import * as React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { 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 { Field, FieldError, InternalFieldErrors, Message } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isMessage from '../utils/isMessage';\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';\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 (\n {\n _f: {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n value: inputValue,\n valueAsNumber,\n mount,\n },\n }: Field,\n validateAllFieldCriteria: boolean,\n): Promise<InternalFieldErrors> => {\n if (!mount) {\n return {};\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)) && !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 = INPUT_VALIDATION_RULES.maxLength,\n 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 required &&\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(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: isRadioOrCheckbox ? (refs || [])[0] || {} : ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (\n (!isNullOrUndefined(min) || !isNullOrUndefined(max)) &&\n inputValue !== ''\n ) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNaN(inputValue)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(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);\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value)) {\n exceedMin = 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 return error;\n }\n }\n }\n\n if (isString(inputValue) && !isEmpty && (maxLength || minLength)) {\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 return error;\n }\n }\n }\n\n if (isString(inputValue) && pattern && !isEmpty) {\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 return error;\n }\n }\n }\n\n if (validate) {\n const validateRef = isRadioOrCheckbox && refs ? refs[0] : ref;\n\n if (isFunction(validate)) {\n const result = await validate(inputValue);\n const validateError = getValidateError(result, validateRef);\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 return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n for (const [key, validateFunction] of Object.entries(validate)) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateResult = await validateFunction(inputValue);\n const validateError = getValidateError(\n validateResult,\n validateRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: validateRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n return error;\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode } from '../types';\n\nexport default (\n mode?: Mode,\n): {\n isOnSubmit: boolean;\n isOnBlur: boolean;\n isOnChange: boolean;\n isOnAll: boolean;\n isOnTouch: boolean;\n} => ({\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","export default (value: any): value is HTMLElement =>\n value instanceof HTMLElement;\n","export type Observer<T> = {\n next: (value: T) => void;\n};\n\ntype TearDown = () => void;\n\nexport type SubjectType<T> = {\n next: (value: T) => void;\n subscribe: (\n value: Observer<T>,\n ) => {\n unsubscribe: TearDown;\n };\n};\n\nexport class Subscription {\n private tearDowns: TearDown[] = [];\n\n add(tearDown: TearDown) {\n this.tearDowns.push(tearDown);\n }\n\n unsubscribe() {\n for (const teardown of this.tearDowns) {\n teardown();\n }\n this.tearDowns = [];\n }\n}\n\nclass Subscriber<T> implements Observer<T> {\n closed = false;\n\n constructor(private observer: Observer<T>, subscription: Subscription) {\n subscription.add(() => (this.closed = true));\n }\n\n next(value: T) {\n if (!this.closed) {\n this.observer.next(value);\n }\n }\n}\n\nexport default class Subject<T> {\n observers: Observer<T>[];\n\n constructor() {\n this.observers = [];\n }\n\n next(value: T) {\n for (const observer of this.observers) {\n observer.next(value);\n }\n }\n\n subscribe(observer: Observer<T>) {\n const subscription = new Subscription();\n const subscriber = new Subscriber(observer, subscription);\n this.observers.push(subscriber);\n\n return subscription;\n }\n\n unsubscribe() {\n this.observers = [];\n }\n}\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFields from './logic/getFields';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldValue from './logic/getFieldValue';\nimport getFieldValueAs from './logic/getFieldValueAs';\nimport getNodeParentName from './logic/getNodeParentName';\nimport getProxyFormState from './logic/getProxyFormState';\nimport hasValidation from './logic/hasValidation';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport skipValidation from './logic/skipValidation';\nimport validateField from './logic/validateField';\nimport compact from './utils/compact';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport deepEqual from './utils/deepEqual';\nimport get from './utils/get';\nimport getValidationModes from './utils/getValidationModes';\nimport isCheckBoxInput from './utils/isCheckBoxInput';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isFileInput from './utils/isFileInput';\nimport isFunction from './utils/isFunction';\nimport isHTMLElement from './utils/isHTMLElement';\nimport isMultipleSelect from './utils/isMultipleSelect';\nimport isNullOrUndefined from './utils/isNullOrUndefined';\nimport isObject from './utils/isObject';\nimport isPrimitive from './utils/isPrimitive';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport isRadioInput from './utils/isRadioInput';\nimport isRadioOrCheckboxFunction from './utils/isRadioOrCheckbox';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport isWeb from './utils/isWeb';\nimport omit from './utils/omit';\nimport set from './utils/set';\nimport Subject from './utils/Subject';\nimport unset from './utils/unset';\nimport { EVENTS, UNDEFINED, VALIDATION_MODE } from './constants';\nimport {\n ChangeHandler,\n DeepPartial,\n DefaultValues,\n EventType,\n Field,\n FieldArrayDefaultValues,\n FieldError,\n FieldErrors,\n FieldName,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n FormStateSubjectRef,\n GetIsDirty,\n InternalFieldName,\n InternalNameSet,\n KeepStateOptions,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n RegisterOptions,\n SetFieldValue,\n SetValueConfig,\n UnpackNestedValue,\n UseFormClearErrors,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormRegisterReturn,\n UseFormReset,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from './types';\n\nconst isWindowUndefined = typeof window === UNDEFINED;\n\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object\n>({\n mode = VALIDATION_MODE.onSubmit,\n reValidateMode = VALIDATION_MODE.onChange,\n resolver,\n context,\n defaultValues = {} as DefaultValues<TFieldValues>,\n shouldFocusError = true,\n shouldUnregister,\n criteriaMode,\n}: UseFormProps<TFieldValues, TContext> = {}): UseFormReturn<TFieldValues> {\n const fieldsRef = React.useRef<FieldRefs>({});\n const fieldsNamesRef = React.useRef<Set<InternalFieldName>>(new Set());\n const formStateSubjectRef = React.useRef<FormStateSubjectRef<TFieldValues>>(\n new Subject(),\n );\n const unregisterFieldsNamesRef = React.useRef<Set<InternalFieldName>>(\n new Set(),\n );\n const watchSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n type?: EventType;\n value?: unknown;\n }>(),\n );\n const controllerSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n values: DefaultValues<TFieldValues>;\n }>(),\n );\n const fieldArraySubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n fields: any;\n isReset?: boolean;\n }>(),\n );\n const fieldArrayDefaultValuesRef = React.useRef<FieldArrayDefaultValues>({});\n const watchFieldsRef = React.useRef<InternalNameSet>(new Set());\n const isMountedRef = React.useRef(false);\n const fieldsWithValidationRef = React.useRef<\n FieldNamesMarkedBoolean<TFieldValues>\n >({});\n const validFieldsRef = React.useRef<FieldNamesMarkedBoolean<TFieldValues>>(\n {},\n );\n const defaultValuesRef = React.useRef<DefaultValues<TFieldValues>>(\n defaultValues,\n );\n const isWatchAllRef = React.useRef(false);\n const contextRef = React.useRef(context);\n const resolverRef = React.useRef(resolver);\n const fieldArrayNamesRef = React.useRef<InternalNameSet>(new Set());\n const validationMode = getValidationModes(mode);\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\n const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n isValidating: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: !validationMode.isOnSubmit,\n errors: {},\n });\n const readFormStateRef = React.useRef<ReadFormState>({\n isDirty: !isProxyEnabled,\n dirtyFields: !isProxyEnabled,\n touchedFields: !isProxyEnabled,\n isValidating: !isProxyEnabled,\n isValid: !isProxyEnabled,\n errors: !isProxyEnabled,\n });\n const formStateRef = React.useRef(formState);\n\n contextRef.current = context;\n resolverRef.current = resolver;\n\n const getIsValid = () =>\n (formStateRef.current.isValid =\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\n isEmptyObject(formStateRef.current.errors));\n\n const shouldRenderBaseOnError = React.useCallback(\n (\n name: InternalFieldName,\n error?: FieldError,\n shouldRender: boolean | null = false,\n state: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } = {},\n isValid?: boolean,\n isWatched?: boolean,\n ): boolean | void => {\n const previousError = get(formStateRef.current.errors, name);\n\n let shouldReRender =\n shouldRender ||\n !deepEqual(previousError, error, true) ||\n (readFormStateRef.current.isValid &&\n isUndefined(error) &&\n get(fieldsWithValidationRef.current, name) &&\n !get(validFieldsRef.current, name));\n\n if (error) {\n unset(validFieldsRef.current, name);\n shouldReRender =\n shouldReRender ||\n !previousError ||\n !deepEqual(previousError, error, true);\n set(formStateRef.current.errors, name, error);\n } else {\n if (get(fieldsWithValidationRef.current, name) || resolverRef.current) {\n set(validFieldsRef.current, name, true);\n shouldReRender = shouldReRender || previousError;\n }\n\n unset(formStateRef.current.errors, name);\n }\n\n if (\n (shouldReRender && !isNullOrUndefined(shouldRender)) ||\n !isEmptyObject(state) ||\n isWatched\n ) {\n const updatedFormState = {\n ...state,\n isValid: resolverRef.current ? !!isValid : getIsValid(),\n errors: formStateRef.current.errors,\n name,\n };\n\n formStateRef.current = {\n ...formStateRef.current,\n ...updatedFormState,\n };\n\n formStateSubjectRef.current.next(\n isWatched ? { name } : updatedFormState,\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: false,\n });\n },\n [],\n );\n\n const setFieldValue = React.useCallback(\n (\n name: InternalFieldName,\n rawValue: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n shouldRender?: boolean,\n shouldRegister?: boolean,\n ) => {\n shouldRegister && register(name as Path<TFieldValues>);\n const _f = get(fieldsRef.current, name, {})._f as Field['_f'];\n\n if (_f) {\n const value =\n isWeb && isHTMLElement(_f.ref) && isNullOrUndefined(rawValue)\n ? ''\n : rawValue;\n _f.value = getFieldValueAs(rawValue, _f);\n\n if (isRadioInput(_f.ref)) {\n (_f.refs || []).forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === value),\n );\n } else if (isFileInput(_f.ref) && !isString(value)) {\n _f.ref.files = value as FileList;\n } else if (isMultipleSelect(_f.ref)) {\n [..._f.ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (value as string[]).includes(\n selectRef.value,\n )),\n );\n } else if (isCheckBoxInput(_f.ref) && _f.refs) {\n _f.refs.length > 1\n ? _f.refs.forEach(\n (checkboxRef) =>\n (checkboxRef.checked = Array.isArray(value)\n ? !!(value as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : value === checkboxRef.value),\n )\n : (_f.refs[0].checked = !!value);\n } else {\n _f.ref.value = value;\n }\n\n if (shouldRender) {\n const values = getFieldsValues(fieldsRef);\n set(values, name, rawValue);\n controllerSubjectRef.current.next({\n values: {\n ...defaultValuesRef.current,\n ...values,\n } as DefaultValues<TFieldValues>,\n name,\n });\n }\n\n options.shouldDirty && updateAndGetDirtyState(name, value);\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n }\n },\n [],\n );\n\n const getIsDirty: GetIsDirty = React.useCallback((name, data) => {\n const formValues = getFieldsValues(fieldsRef);\n\n name && data && set(formValues, name, data);\n\n return !deepEqual(formValues, defaultValuesRef.current);\n }, []);\n\n const updateAndGetDirtyState = React.useCallback(\n (\n name: InternalFieldName,\n inputValue: unknown,\n shouldRender = true,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n if (\n readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields\n ) {\n const isFieldDirty = !deepEqual(\n get(defaultValuesRef.current, name),\n inputValue,\n );\n const isDirtyFieldExist = get(formStateRef.current.dirtyFields, name);\n const previousIsDirty = formStateRef.current.isDirty;\n\n isFieldDirty\n ? set(formStateRef.current.dirtyFields, name, true)\n : unset(formStateRef.current.dirtyFields, name);\n\n formStateRef.current.isDirty = getIsDirty();\n\n const state = {\n isDirty: formStateRef.current.isDirty,\n dirtyFields: formStateRef.current.dirtyFields,\n name,\n };\n\n const isChanged =\n (readFormStateRef.current.isDirty &&\n previousIsDirty !== state.isDirty) ||\n (readFormStateRef.current.dirtyFields &&\n isDirtyFieldExist !== get(formStateRef.current.dirtyFields, name));\n\n isChanged && shouldRender && formStateSubjectRef.current.next(state);\n\n return isChanged ? state : {};\n }\n\n return {};\n },\n [],\n );\n\n const executeValidation = React.useCallback(\n async (\n name: InternalFieldName,\n skipReRender?: boolean | null,\n ): Promise<boolean> => {\n const error = (\n await validateField(\n get(fieldsRef.current, name) as Field,\n isValidateAllFieldCriteria,\n )\n )[name];\n\n shouldRenderBaseOnError(name, error, skipReRender);\n\n return isUndefined(error);\n },\n [isValidateAllFieldCriteria],\n );\n\n const executeSchemaOrResolverValidation = React.useCallback(\n async (\n names: InternalFieldName[],\n currentNames: FieldName<TFieldValues>[] = [],\n ) => {\n const { errors } = await resolverRef.current!(\n getFieldsValues(fieldsRef),\n contextRef.current,\n {\n criteriaMode,\n names: currentNames,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(formStateRef.current.errors, name, error)\n : unset(formStateRef.current.errors, name);\n }\n\n return errors;\n },\n [criteriaMode],\n );\n\n const validateForm = async (fieldsRef: FieldRefs) => {\n let isValid = true;\n\n for (const name in fieldsRef) {\n const field = fieldsRef[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f) {\n const fieldError = await validateField(\n field,\n isValidateAllFieldCriteria,\n );\n\n if (fieldError[_f.name]) {\n isValid = false;\n set(formStateRef.current.errors, _f.name, fieldError[_f.name]);\n unset(validFieldsRef.current, _f.name);\n } else if (get(fieldsWithValidationRef.current, _f.name)) {\n set(validFieldsRef.current, _f.name, true);\n unset(formStateRef.current.errors, _f.name);\n }\n }\n\n current && (await validateForm(current));\n }\n }\n\n return isValid;\n };\n\n const trigger: UseFormTrigger<TFieldValues> = React.useCallback(\n async (name) => {\n const fields = isUndefined(name)\n ? Object.keys(fieldsRef.current)\n : (convertToArrayPayload(name) as InternalFieldName[]);\n let isValid;\n let schemaResult: FieldErrors<TFieldValues> | {} = {};\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n schemaResult = await executeSchemaOrResolverValidation(\n fields,\n isUndefined(name) ? undefined : (fields as FieldName<TFieldValues>[]),\n );\n isValid = fields.every((name) => !get(schemaResult, name));\n } else {\n isValid = isUndefined(name)\n ? await validateForm(fieldsRef.current)\n : (\n await Promise.all(\n fields\n .filter((fieldName) => get(fieldsRef.current, fieldName))\n .map(\n async (fieldName) =>\n await executeValidation(fieldName, null),\n ),\n )\n ).every(Boolean);\n }\n\n formStateSubjectRef.current.next({\n ...(isString(name) ? { name } : {}),\n errors: formStateRef.current.errors,\n isValidating: false,\n isValid: resolverRef.current\n ? isEmptyObject(schemaResult)\n : getIsValid(),\n });\n\n return isValid;\n },\n [executeSchemaOrResolverValidation, executeValidation],\n );\n\n const setInternalValues = React.useCallback(\n (\n name: FieldPath<TFieldValues>,\n value: UnpackNestedValue<\n PathValue<TFieldValues, FieldPath<TFieldValues>>\n >,\n options: SetValueConfig,\n ) =>\n Object.entries(value).forEach(([inputKey, inputValue]) => {\n const fieldName = `${name}.${inputKey}` as Path<TFieldValues>;\n const field = get(fieldsRef.current, fieldName);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n isFieldArray || (field && !field._f)\n ? setInternalValues(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n )\n : setFieldValue(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n true,\n !field,\n );\n }),\n [trigger],\n );\n\n const isFieldWatched = (name: FieldPath<TFieldValues>) =>\n isWatchAllRef.current ||\n watchFieldsRef.current.has(name) ||\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\n\n const updateValidAndValue = (\n name: InternalFieldName,\n options?: RegisterOptions,\n ref?: Ref,\n isWithinRefCallback?: boolean,\n ) => {\n const field = get(fieldsRef.current, name) as Field;\n const defaultValue = isUndefined(field._f.value)\n ? get(defaultValuesRef.current, name)\n : field._f.value;\n\n if (field && !isUndefined(defaultValue)) {\n if (ref && (ref as HTMLInputElement).defaultChecked) {\n field._f.value = getFieldValue(field);\n } else if (!isNameInFieldArray(fieldArrayNamesRef.current, name)) {\n setFieldValue(name, defaultValue);\n } else {\n field._f.value = defaultValue;\n }\n }\n\n if (\n (!isUndefined(defaultValue) || isWithinRefCallback) &&\n hasValidation(options, field._f.mount) &&\n !validationMode.isOnSubmit &&\n field &&\n readFormStateRef.current.isValid\n ) {\n validateField(field, isValidateAllFieldCriteria).then((error) => {\n isEmptyObject(error)\n ? set(validFieldsRef.current, name, true)\n : unset(validFieldsRef.current, name);\n\n formStateRef.current.isValid !== getIsValid() &&\n updateFormState({ ...formStateRef.current, isValid: getIsValid() });\n });\n }\n\n return defaultValue;\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n const field = get(fieldsRef.current, name);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n if (isFieldArray) {\n fieldArraySubjectRef.current.next({\n fields: value,\n name,\n isReset: true,\n });\n\n if (\n (readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields) &&\n options.shouldDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n value,\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n formStateSubjectRef.current.next({\n name,\n dirtyFields: formStateRef.current.dirtyFields,\n isDirty: getIsDirty(name, value),\n });\n }\n\n !(value as []).length &&\n set(fieldsRef.current, name, []) &&\n set(fieldArrayDefaultValuesRef.current, name, []);\n }\n\n (field && !field._f) || isFieldArray\n ? setInternalValues(name, value, isFieldArray ? {} : options)\n : setFieldValue(name, value, options, true, !field);\n\n isFieldWatched(name) && formStateSubjectRef.current.next({});\n watchSubjectRef.current.next({ name, value });\n };\n\n const handleChange: ChangeHandler = React.useCallback(\n async ({ type, target, target: { value, type: inputType } }) => {\n let name = (target as Ref)!.name;\n let error;\n let isValid;\n const field = get(fieldsRef.current, name) as Field;\n\n if (field) {\n let inputValue = inputType ? getFieldValue(field) : undefined;\n inputValue = isUndefined(inputValue) ? value : inputValue;\n\n const isBlurEvent = type === EVENTS.BLUR;\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = getValidationModes(reValidateMode);\n\n const shouldSkipValidation =\n (!hasValidation(field._f, field._f.mount) &&\n !resolverRef.current &&\n !get(formStateRef.current.errors, name)) ||\n skipValidation({\n isBlurEvent,\n isTouched: !!get(formStateRef.current.touchedFields, name),\n isSubmitted: formStateRef.current.isSubmitted,\n isReValidateOnBlur,\n isReValidateOnChange,\n ...validationMode,\n });\n const isWatched =\n !isBlurEvent && isFieldWatched(name as FieldPath<TFieldValues>);\n\n if (!isUndefined(inputValue)) {\n field._f.value = inputValue;\n }\n\n const state = updateAndGetDirtyState(name, field._f.value, false);\n\n if (isBlurEvent && !get(formStateRef.current.touchedFields, name)) {\n set(formStateRef.current.touchedFields, name, true);\n readFormStateRef.current.touchedFields &&\n (state.touchedFields = formStateRef.current.touchedFields);\n }\n\n let shouldRender = !isEmptyObject(state) || isWatched;\n\n if (shouldSkipValidation) {\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n return (\n shouldRender &&\n formStateSubjectRef.current.next(\n isWatched ? { name } : { ...state, name },\n )\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n const { errors } = await resolverRef.current(\n getFieldsValues(fieldsRef),\n contextRef.current,\n {\n criteriaMode,\n fields: getFields([name], fieldsRef.current),\n names: [name as FieldName<TFieldValues>],\n },\n );\n const previousFormIsValid = formStateRef.current.isValid;\n error = get(errors, name);\n\n if (isCheckBoxInput(target as Ref) && !error) {\n const parentNodeName = getNodeParentName(name);\n const currentError = get(errors, parentNodeName, {});\n currentError.type && currentError.message && (error = currentError);\n\n if (\n currentError ||\n get(formStateRef.current.errors, parentNodeName)\n ) {\n name = parentNodeName;\n }\n }\n\n isValid = isEmptyObject(errors);\n\n previousFormIsValid !== isValid && (shouldRender = true);\n } else {\n error = (await validateField(field, isValidateAllFieldCriteria))[\n name\n ];\n }\n\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n shouldRenderBaseOnError(\n name,\n error,\n shouldRender,\n state,\n isValid,\n isWatched,\n );\n }\n },\n [],\n );\n\n const getValues: UseFormGetValues<TFieldValues> = (\n fieldNames?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>,\n ) => {\n const values = getFieldsValues(fieldsRef, defaultValuesRef);\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames as InternalFieldName)\n : fieldNames.map((name) => get(values, name as InternalFieldName));\n };\n\n const updateIsValid = React.useCallback(\n async (values = {}) => {\n const previousIsValid = formStateRef.current.isValid;\n\n if (resolver) {\n const { errors } = await resolverRef.current!(\n {\n ...getFieldsValues(fieldsRef),\n ...values,\n },\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.isValid = isEmptyObject(errors);\n } else {\n getIsValid();\n }\n\n previousIsValid !== formStateRef.current.isValid &&\n formStateSubjectRef.current.next({\n isValid: formStateRef.current.isValid,\n });\n },\n [criteriaMode],\n );\n\n const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) =>\n unset(formStateRef.current.errors, inputName),\n );\n\n formStateSubjectRef.current.next({\n errors: name ? formStateRef.current.errors : {},\n });\n };\n\n const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n const ref = (\n ((get(fieldsRef.current, name) as Field) || { _f: {} })._f || {}\n ).ref;\n\n set(formStateRef.current.errors, name, {\n ...error,\n ref,\n });\n\n formStateSubjectRef.current.next({\n name,\n errors: formStateRef.current.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watchInternal: WatchInternal<TFieldValues> = React.useCallback(\n (fieldNames, defaultValue, isGlobal) => {\n const isArrayNames = Array.isArray(fieldNames);\n const fieldValues = isMountedRef.current\n ? getFieldsValues(fieldsRef, defaultValuesRef)\n : isUndefined(defaultValue)\n ? defaultValuesRef.current\n : isArrayNames\n ? defaultValue || {}\n : { [fieldNames as string]: defaultValue };\n\n if (isUndefined(fieldNames)) {\n isGlobal && (isWatchAllRef.current = true);\n return fieldValues;\n }\n\n const result = [];\n\n for (const fieldName of isArrayNames ? fieldNames : [fieldNames]) {\n isGlobal && watchFieldsRef.current.add(fieldName as string);\n result.push(get(fieldValues, fieldName as string));\n }\n\n return isArrayNames ? result : result[0];\n },\n [],\n );\n\n const watch: UseFormWatch<TFieldValues> = (\n fieldName?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: unknown,\n ) =>\n isFunction(fieldName)\n ? watchSubjectRef.current.subscribe({\n next: (info) =>\n fieldName(\n watchInternal(\n undefined,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ) as UnpackNestedValue<TFieldValues>,\n info,\n ),\n })\n : watchInternal(\n fieldName as string | string[],\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const inputName of name\n ? convertToArrayPayload(name)\n : Object.keys(fieldsNamesRef.current)) {\n fieldsNamesRef.current.delete(inputName);\n fieldArrayNamesRef.current.delete(inputName);\n\n if (get(fieldsRef.current, inputName) as Field) {\n if (!options.keepIsValid) {\n unset(fieldsWithValidationRef.current, inputName);\n unset(validFieldsRef.current, inputName);\n }\n !options.keepError && unset(formStateRef.current.errors, inputName);\n !options.keepValue && unset(fieldsRef.current, inputName);\n !options.keepDirty &&\n unset(formStateRef.current.dirtyFields, inputName);\n !options.keepTouched &&\n unset(formStateRef.current.touchedFields, inputName);\n !shouldUnregister &&\n !options.keepDefaultValue &&\n unset(defaultValuesRef.current, inputName);\n\n watchSubjectRef.current.next({\n name: inputName,\n });\n }\n }\n\n formStateSubjectRef.current.next({\n ...formStateRef.current,\n ...(!options.keepDirty ? {} : { isDirty: getIsDirty() }),\n ...(resolverRef.current ? {} : { isValid: getIsValid() }),\n });\n !options.keepIsValid && updateIsValid();\n };\n\n const registerFieldRef = (\n name: InternalFieldName,\n ref: HTMLInputElement,\n options?: RegisterOptions,\n ): ((name: InternalFieldName) => void) | void => {\n register(name as FieldPath<TFieldValues>, options);\n let field = get(fieldsRef.current, name) as Field;\n\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n\n if (\n ref === field._f.ref ||\n (isWeb && isHTMLElement(field._f.ref) && !isHTMLElement(ref)) ||\n (isRadioOrCheckbox &&\n Array.isArray(field._f.refs) &&\n compact(field._f.refs).find((option) => option === ref))\n ) {\n return;\n }\n\n field = {\n _f: isRadioOrCheckbox\n ? {\n ...field._f,\n refs: [\n ...compact(field._f.refs || []).filter(\n (ref) => isHTMLElement(ref) && document.contains(ref),\n ),\n ref,\n ],\n ref: { type: ref.type, name },\n }\n : {\n ...field._f,\n ref,\n },\n };\n\n set(fieldsRef.current, name, field);\n\n const defaultValue = updateValidAndValue(name, options, ref, true);\n\n if (\n isRadioOrCheckbox && Array.isArray(defaultValue)\n ? !deepEqual(get(fieldsRef.current, name)._f.value, defaultValue)\n : isUndefined(get(fieldsRef.current, name)._f.value)\n ) {\n get(fieldsRef.current, name)._f.value = getFieldValue(\n get(fieldsRef.current, name),\n );\n }\n };\n\n const register: UseFormRegister<TFieldValues> = React.useCallback(\n (name, options) => {\n const isInitialRegister = !get(fieldsRef.current, name);\n\n set(fieldsRef.current, name, {\n _f: {\n ...(isInitialRegister\n ? { ref: { name } }\n : {\n ref: (get(fieldsRef.current, name)._f || {}).ref,\n ...get(fieldsRef.current, name)._f,\n }),\n name,\n mount: true,\n ...options,\n },\n });\n hasValidation(options, true) &&\n set(fieldsWithValidationRef.current, name, true);\n fieldsNamesRef.current.add(name);\n isInitialRegister && updateValidAndValue(name, options);\n\n return isWindowUndefined\n ? ({ name: name as InternalFieldName } as UseFormRegisterReturn)\n : {\n name,\n onChange: handleChange,\n onBlur: handleChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n registerFieldRef(name, ref, options);\n } else {\n const field = get(fieldsRef.current, name) as Field;\n field && (field._f.mount = false);\n\n if (\n isWeb &&\n (shouldUnregister || (options && options.shouldUnregister))\n ) {\n unregisterFieldsNamesRef.current.add(name);\n }\n }\n },\n };\n },\n [defaultValuesRef.current],\n );\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> = React.useCallback(\n (onValid, onInvalid) => async (e) => {\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let hasNoPromiseError = true;\n let fieldValues = getFieldsValues(fieldsRef);\n\n formStateSubjectRef.current.next({\n isSubmitting: true,\n });\n\n try {\n if (resolverRef.current) {\n const { errors, values } = await resolverRef.current(\n fieldValues,\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.errors = errors;\n fieldValues = values;\n } else {\n await validateForm(fieldsRef.current);\n }\n\n if (\n isEmptyObject(formStateRef.current.errors) &&\n Object.keys(formStateRef.current.errors).every((name) =>\n get(fieldValues, name),\n )\n ) {\n formStateSubjectRef.current.next({\n errors: {},\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n onInvalid && (await onInvalid(formStateRef.current.errors, e));\n shouldFocusError &&\n focusFieldBy(\n fieldsRef.current,\n (key: string) => get(formStateRef.current.errors, key),\n fieldsNamesRef.current,\n );\n }\n } catch {\n hasNoPromiseError = false;\n } finally {\n formStateRef.current.isSubmitted = true;\n formStateSubjectRef.current.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful:\n isEmptyObject(formStateRef.current.errors) && hasNoPromiseError,\n submitCount: formStateRef.current.submitCount + 1,\n errors: formStateRef.current.errors,\n });\n }\n },\n [shouldFocusError, isValidateAllFieldCriteria, criteriaMode],\n );\n\n const resetFromState = React.useCallback(\n (\n {\n keepErrors,\n keepDirty,\n keepIsSubmitted,\n keepTouched,\n keepDefaultValues,\n keepIsValid,\n keepSubmitCount,\n }: KeepStateOptions,\n values?: DefaultValues<TFieldValues>,\n ) => {\n if (!keepIsValid) {\n validFieldsRef.current = {};\n fieldsWithValidationRef.current = {};\n }\n\n watchFieldsRef.current = new Set();\n isWatchAllRef.current = false;\n\n formStateSubjectRef.current.next({\n submitCount: keepSubmitCount ? formStateRef.current.submitCount : 0,\n isDirty: keepDirty\n ? formStateRef.current.isDirty\n : keepDefaultValues\n ? deepEqual(values, defaultValuesRef.current)\n : false,\n isSubmitted: keepIsSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: keepIsValid\n ? formStateRef.current.isValid\n : !!updateIsValid(values),\n dirtyFields: keepDirty ? formStateRef.current.dirtyFields : {},\n touchedFields: keepTouched ? formStateRef.current.touchedFields : {},\n errors: keepErrors ? formStateRef.current.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n },\n [],\n );\n\n const registerAbsentFields = <T extends DefaultValues<TFieldValues>>(\n value: T,\n name = '',\n ): void => {\n !get(fieldsRef.current, name) &&\n (isPrimitive(value) ||\n (isWeb &&\n (value instanceof File ||\n value instanceof Date ||\n isHTMLElement(value)))) &&\n set(fieldsRef.current, name, {\n _f: {\n ref: { name, value },\n value,\n name,\n },\n });\n\n if (Array.isArray(value) || isObject(value)) {\n if (name && !get(fieldsRef.current, name)) {\n set(fieldsRef.current, name, Array.isArray(value) ? [] : {});\n }\n\n for (const key in value) {\n registerAbsentFields(value[key], name + (name ? '.' : '') + key);\n }\n }\n };\n\n const reset: UseFormReset<TFieldValues> = (values, keepStateOptions = {}) => {\n const updatedValues = values || defaultValuesRef.current;\n\n if (isWeb && !keepStateOptions.keepValues) {\n for (const name of fieldsNamesRef.current) {\n const field = get(fieldsRef.current, name);\n if (field && field._f) {\n const inputRef = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(inputRef)) {\n try {\n inputRef.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n }\n\n if (!keepStateOptions.keepDefaultValues) {\n defaultValuesRef.current = { ...updatedValues };\n registerAbsentFields(updatedValues);\n }\n\n if (!keepStateOptions.keepValues) {\n fieldsRef.current = {};\n\n controllerSubjectRef.current.next({\n values: { ...updatedValues },\n });\n\n watchSubjectRef.current.next({\n value: { ...updatedValues },\n });\n\n fieldArraySubjectRef.current.next({\n fields: { ...updatedValues },\n isReset: true,\n });\n }\n\n resetFromState(keepStateOptions, values);\n isMountedRef.current = false;\n };\n\n const setFocus: UseFormSetFocus<TFieldValues> = (name) =>\n get(fieldsRef.current, name)._f.ref.focus();\n\n React.useEffect(() => {\n registerAbsentFields(defaultValuesRef.current);\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next(formState) {\n if (shouldRenderFormState(formState, readFormStateRef.current, true)) {\n formStateRef.current = {\n ...formStateRef.current,\n ...formState,\n };\n updateFormState(formStateRef.current);\n }\n },\n });\n\n const useFieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next(state) {\n if (state.fields && state.name && readFormStateRef.current.isValid) {\n const values = getFieldsValues(fieldsRef);\n set(values, state.name, state.fields);\n updateIsValid(values);\n }\n },\n });\n\n resolverRef.current && readFormStateRef.current.isValid && updateIsValid();\n\n return () => {\n watchSubjectRef.current.unsubscribe();\n formStateSubscription.unsubscribe();\n useFieldArraySubscription.unsubscribe();\n };\n }, []);\n\n React.useEffect(() => {\n const isLiveInDom = (ref: Ref) =>\n !isHTMLElement(ref) || !document.contains(ref);\n\n isMountedRef.current = true;\n unregisterFieldsNamesRef.current.forEach((name) => {\n const field = get(fieldsRef.current, name) as Field;\n\n field &&\n (field._f.refs\n ? field._f.refs.every(isLiveInDom)\n : isLiveInDom(field._f.ref)) &&\n unregister(name as FieldPath<TFieldValues>);\n });\n unregisterFieldsNamesRef.current = new Set();\n });\n\n return {\n control: React.useMemo(\n () => ({\n register,\n isWatchAllRef,\n watchFieldsRef,\n getIsDirty,\n formStateSubjectRef,\n fieldArraySubjectRef,\n controllerSubjectRef,\n watchSubjectRef,\n watchInternal,\n fieldsRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayNamesRef,\n readFormStateRef,\n formStateRef,\n defaultValuesRef,\n fieldArrayDefaultValuesRef,\n unregister,\n shouldUnmountUnregister: shouldUnregister,\n }),\n [],\n ),\n formState: getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState,\n readFormStateRef,\n ),\n trigger,\n register,\n handleSubmit,\n watch: React.useCallback(watch, []),\n setValue: React.useCallback(setValue, [setInternalValues]),\n getValues: React.useCallback(getValues, []),\n reset: React.useCallback(reset, []),\n clearErrors: React.useCallback(clearErrors, []),\n unregister: React.useCallback(unregister, []),\n setError: React.useCallback(setError, []),\n setFocus: React.useCallback(setFocus, []),\n };\n}\n","import { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>(\n props: ControllerProps<TFieldValues, TName>,\n) => props.render(useController<TFieldValues, TName>(props));\n\nexport { Controller };\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldArrayParentName from './logic/getNodeParentName';\nimport mapIds from './logic/mapId';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport appendAt from './utils/append';\nimport compact from './utils/compact';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isPrimitive from './utils/isPrimitive';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport moveArrayAt from './utils/move';\nimport omit from './utils/omit';\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 {\n FieldArray,\n FieldArrayMethodProps,\n FieldArrayPath,\n FieldArrayWithId,\n FieldErrors,\n FieldValues,\n UseFieldArrayProps,\n UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport const useFieldArray = <\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n TKeyName extends string = 'id'\n>({\n control,\n name,\n keyName = 'id' as TKeyName,\n shouldUnregister,\n}: UseFieldArrayProps<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n>): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> => {\n const methods = useFormContext();\n const focusNameRef = React.useRef('');\n const {\n isWatchAllRef,\n watchFieldsRef,\n getIsDirty,\n watchSubjectRef,\n fieldArraySubjectRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n formStateRef,\n formStateSubjectRef,\n readFormStateRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n unregister,\n shouldUnmountUnregister,\n } = control || methods.control;\n\n const [fields, setFields] = React.useState<\n Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\n >(\n mapIds(\n get(fieldsRef.current, name)\n ? get(getFieldsValues(fieldsRef), name)\n : get(fieldArrayDefaultValuesRef.current, getFieldArrayParentName(name))\n ? get(fieldArrayDefaultValuesRef.current, name, [])\n : get(defaultValuesRef.current, name, []),\n keyName,\n ),\n );\n\n set(fieldArrayDefaultValuesRef.current, name, [...fields]);\n fieldArrayNamesRef.current.add(name);\n\n const omitKey = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[]\n >(\n fields: T,\n ) =>\n fields.map((field) =>\n omit((field || {}) as Record<TKeyName, any>, keyName),\n );\n\n const getCurrentFieldsValues = () => {\n const values = get(getFieldsValues(fieldsRef), name, []);\n\n return mapIds<TFieldValues, TKeyName>(\n get(fieldArrayDefaultValuesRef.current, name, []).map(\n (item: Partial<TFieldValues>, index: number) => ({\n ...item,\n ...values[index],\n }),\n ),\n keyName,\n );\n };\n\n const getFocusDetail = (\n index: number,\n options?: FieldArrayMethodProps,\n ): string =>\n options\n ? !isUndefined(options.focusIndex)\n ? `${name}.${options.focusIndex}`\n : options.focusName\n ? options.focusName\n : !options.shouldFocus\n ? ''\n : `${name}.${index}`\n : `${name}.${index}`;\n\n const resetFields = <T>(index?: T) =>\n convertToArrayPayload(index).forEach((currentIndex) =>\n set(\n fieldsRef.current,\n `${name}${isUndefined(currentIndex) ? '' : `.${currentIndex}`}`,\n isUndefined(currentIndex) ? [] : undefined,\n ),\n );\n\n const setFieldsAndNotify = (\n fieldsValues: Partial<FieldArray<TFieldValues, TFieldArrayName>>[] = [],\n ) => setFields(mapIds(fieldsValues, keyName));\n\n const cleanup = <T>(ref: T) =>\n !compact(get(ref, name, [])).length && unset(ref, name);\n\n const updateDirtyFieldsWithDefaultValues = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[]\n >(\n updatedFieldArrayValues?: T,\n ) =>\n updatedFieldArrayValues &&\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n const batchStateUpdate = <T extends Function>(\n method: T,\n args: {\n argA?: unknown;\n argB?: unknown;\n },\n updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = [],\n shouldSet = true,\n ) => {\n if (get(fieldsRef.current, name)) {\n const output = method(get(fieldsRef.current, name), args.argA, args.argB);\n shouldSet && set(fieldsRef.current, name, output);\n }\n\n if (Array.isArray(get(formStateRef.current.errors, name))) {\n const output = method(\n get(formStateRef.current.errors, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.errors, name, output);\n cleanup(formStateRef.current.errors);\n }\n\n if (\n readFormStateRef.current.touchedFields &&\n get(formStateRef.current.touchedFields, name)\n ) {\n const output = method(\n get(formStateRef.current.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.touchedFields, name, output);\n cleanup(formStateRef.current.touchedFields);\n }\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n updateDirtyFieldsWithDefaultValues(updatedFieldArrayValues);\n cleanup(formStateRef.current.dirtyFields);\n }\n\n if (readFormStateRef.current.isValid) {\n set(\n validFieldsRef.current,\n name,\n method(get(validFieldsRef.current, name, []), args.argA),\n );\n cleanup(validFieldsRef.current);\n\n set(\n fieldsWithValidationRef.current,\n name,\n method(get(fieldsWithValidationRef.current, name, []), args.argA),\n );\n cleanup(fieldsWithValidationRef.current);\n }\n\n formStateSubjectRef.current.next({\n isDirty: getIsDirty(name, omitKey(updatedFieldArrayValues)),\n errors: formStateRef.current.errors as FieldErrors<TFieldValues>,\n isValid: formStateRef.current.isValid,\n });\n };\n\n const registerFieldArray = <T extends Object[]>(\n values: T,\n index = 0,\n parentName = '',\n ) =>\n values.forEach(\n (appendValueItem, valueIndex) =>\n !isPrimitive(appendValueItem) &&\n Object.entries(appendValueItem).forEach(([key, value]) => {\n const inputName = `${parentName || name}.${\n parentName ? valueIndex : index + valueIndex\n }.${key}`;\n\n Array.isArray(value)\n ? registerFieldArray(value, valueIndex, inputName)\n : set(fieldsRef.current, inputName, {\n _f: {\n ref: {\n name: inputName,\n },\n name: inputName,\n value,\n },\n });\n }),\n );\n\n const append = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const appendValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = appendAt(\n getCurrentFieldsValues(),\n appendValue,\n );\n const currentIndex = updatedFieldArrayValues.length - appendValue.length;\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n appendAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n false,\n );\n registerFieldArray(appendValue, currentIndex);\n\n focusNameRef.current = getFocusDetail(currentIndex, options);\n };\n\n const prepend = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const prependValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n prependValue,\n );\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n prependAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(prependValue);\n\n focusNameRef.current = getFocusDetail(0, options);\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(getCurrentFieldsValues(), index);\n resetFields(index);\n setFieldsAndNotify(updatedFieldArrayValues);\n batchStateUpdate(\n removeArrayAt,\n {\n argA: index,\n },\n updatedFieldArrayValues,\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 const insertValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = insertAt(\n getCurrentFieldsValues(),\n index,\n insertValue,\n );\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n insertAt,\n {\n argA: index,\n argB: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(insertValue, index);\n\n focusNameRef.current = getFocusDetail(index, options);\n };\n\n const swap = (indexA: number, indexB: number) => {\n const fieldValues = getCurrentFieldsValues();\n swapArrayAt(fieldValues, indexA, indexB);\n batchStateUpdate(\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n fieldValues,\n false,\n );\n setFieldsAndNotify(fieldValues);\n };\n\n const move = (from: number, to: number) => {\n const fieldValues = getCurrentFieldsValues();\n moveArrayAt(fieldValues, from, to);\n setFieldsAndNotify(fieldValues);\n batchStateUpdate(\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n fieldValues,\n false,\n );\n };\n\n React.useEffect(() => {\n if (isWatchAllRef.current) {\n formStateSubjectRef.current.next({});\n } else {\n for (const watchField of watchFieldsRef.current) {\n if (name.startsWith(watchField)) {\n formStateSubjectRef.current.next({});\n break;\n }\n }\n }\n\n watchSubjectRef.current.next({\n name,\n value: get(getFieldsValues(fieldsRef), name, []),\n });\n\n focusNameRef.current &&\n focusFieldBy(\n fieldsRef.current,\n (key: string) => isString(key) && key.startsWith(focusNameRef.current),\n );\n\n focusNameRef.current = '';\n\n fieldArraySubjectRef.current.next({\n name,\n fields: omitKey([...fields]),\n });\n }, [fields, name]);\n\n React.useEffect(() => {\n const fieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next({ name: inputFieldArrayName, fields, isReset }) {\n if (isReset) {\n unset(fieldsRef.current, inputFieldArrayName || name);\n\n inputFieldArrayName\n ? set(\n fieldArrayDefaultValuesRef.current,\n inputFieldArrayName,\n fields,\n )\n : (fieldArrayDefaultValuesRef.current = fields);\n\n setFieldsAndNotify(get(fieldArrayDefaultValuesRef.current, name));\n }\n },\n });\n !get(fieldsRef.current, name) && set(fieldsRef.current, name, []);\n\n return () => {\n fieldArraySubscription.unsubscribe();\n (shouldUnmountUnregister || shouldUnregister) && unregister(name);\n };\n }, []);\n\n return {\n swap: React.useCallback(swap, [name]),\n move: React.useCallback(move, [name]),\n prepend: React.useCallback(prepend, [name]),\n append: React.useCallback(append, [name]),\n remove: React.useCallback(remove, [name]),\n insert: React.useCallback(insert, [name]),\n fields: fields as FieldArrayWithId<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n >[],\n };\n};\n","export default ({\n isOnBlur,\n isOnChange,\n isOnTouch,\n isTouched,\n isReValidateOnBlur,\n isReValidateOnChange,\n isBlurEvent,\n isSubmitted,\n isOnAll,\n}: {\n isOnAll?: boolean;\n isOnBlur?: boolean;\n isOnChange?: boolean;\n isReValidateOnBlur?: boolean;\n isReValidateOnChange?: boolean;\n isBlurEvent?: boolean;\n isSubmitted?: boolean;\n isOnTouch?: boolean;\n isTouched?: boolean;\n}) => {\n if (isOnAll) {\n return false;\n } else if (!isSubmitted && isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? isReValidateOnBlur : isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? isReValidateOnChange : isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","import { 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 * as React from 'react';\n\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport {\n Control,\n DeepPartial,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues\n>(props: {\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): UnpackNestedValue<DeepPartial<TFieldValues>>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>(props: {\n name: TName;\n defaultValue?: FieldPathValue<TFieldValues, TName>;\n control?: Control<TFieldValues>;\n}): FieldPathValue<TFieldValues, TName>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues>[] = FieldPath<TFieldValues>[]\n>(props: {\n name: TName;\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): FieldPathValues<TFieldValues, TName>;\nexport function useWatch<TFieldValues>(props?: UseWatchProps<TFieldValues>) {\n const { control, name, defaultValue } = props || {};\n const methods = useFormContext();\n const nameRef = React.useRef(name);\n nameRef.current = name;\n\n const { watchInternal, watchSubjectRef } = control || methods.control;\n const [value, updateValue] = React.useState<unknown>(\n isUndefined(defaultValue)\n ? watchInternal(name as InternalFieldName)\n : defaultValue,\n );\n\n React.useEffect(() => {\n watchInternal(name as InternalFieldName);\n\n const watchSubscription = watchSubjectRef.current.subscribe({\n next: ({ name: inputName, value }) =>\n (!nameRef.current ||\n !inputName ||\n convertToArrayPayload(nameRef.current).some(\n (fieldName) =>\n inputName &&\n fieldName &&\n (fieldName.startsWith(inputName as InternalFieldName) ||\n inputName.startsWith(fieldName as InternalFieldName)),\n )) &&\n updateValue(\n isString(inputName) &&\n nameRef.current === inputName &&\n !isUndefined(value)\n ? value\n : watchInternal(\n nameRef.current as string,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n ),\n });\n\n return () => watchSubscription.unsubscribe();\n }, []);\n\n return value;\n}\n"],"names":["element","type","value","isObjectType","isNullOrUndefined","Array","isArray","Date","name","substring","search","names","some","current","getNodeParentName","filter","Boolean","val","undefined","obj","path","defaultValue","result","compact","split","reduce","key","isUndefined","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","source","copy","FormContext","React","createContext","displayName","useFormContext","useContext","isProxyEnabled","formState","readFormStateRef","localReadFormStateRef","isRoot","Proxy","get","prop","isObject","Object","keys","length","formStateData","omit","isEmptyObject","find","window","HTMLElement","document","isWeb","useFormState","props","control","methods","formStateRef","formStateSubjectRef","nameRef","useRef","updateFormState","useState","readFormState","isDirty","dirtyFields","touchedFields","isValidating","isValid","errors","useEffect","formStateSubscription","subscribe","next","convertToArrayPayload","includes","shouldRenderFormState","unsubscribe","getProxyFormState","useController","rules","shouldUnregister","defaultValuesRef","register","fieldsRef","unregister","fieldArrayNamesRef","controllerSubjectRef","shouldUnmountUnregister","onChange","onBlur","ref","setInputStateValue","_f","isNameInFieldArray","controllerSubscription","data","values","mount","field","event","target","isCheckBoxInput","checked","getControllerValue","elm","fieldState","defineProperties","invalid","isTouched","error","validateAllFieldCriteria","message","types","[object Object]","test","input","replace","set","object","index","tempPath","isKey","stringToPath","lastIndex","newValue","objValue","isNaN","focusFieldBy","fields","callback","fieldsNames","focus","refs","getFieldsValuesInternal","output","disabled","every","d","performance","now","c","r","Math","random","toString","keyName","map","generateId","deepEqual","object1","object2","isErrorObject","isPrimitive","isValidElement","keys1","keys2","val1","val2","setDirtyFields","defaultValues","parentNode","parentName","deepMerge","targetValue","sourceValue","slice","append","fill","insert","from","to","splice","prepend","indexes","i","temp","removeAtIndexes","sort","a","b","indexA","indexB","unset","updatePath","childObject","baseGet","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","isBoolean","getFields","fieldsRefs","currentFields","defaultResult","validResult","options","option","attributes","valueAsNumber","valueAsDate","setValueAs","NaN","defaultReturn","previous","getFieldValue","isFileInput","files","isRadioInput","getRadioValue","isMultipleSelect","selected","isCheckBox","getCheckboxValue","getFieldValueAs","mounted","required","min","max","maxLength","minLength","pattern","validate","isString","RegExp","getValidateError","isMessage","validationData","isRegex","async","inputValue","isRadio","isRadioOrCheckbox","isEmpty","appendErrorsCurry","appendErrors","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","getValueAndMessage","exceedMin","maxOutput","minOutput","valueDate","valueNumber","parseFloat","maxLengthOutput","minLengthOutput","patternValue","match","validateRef","isFunction","validateError","validationResult","validateFunction","entries","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","Subscription","this","tearDown","tearDowns","push","teardown","Subscriber","observer","subscription","add","closed","Subject","observers","subscriber","isWindowUndefined","render","Provider","children","focusNameRef","isWatchAllRef","watchFieldsRef","getIsDirty","watchSubjectRef","fieldArraySubjectRef","validFieldsRef","fieldsWithValidationRef","fieldArrayDefaultValuesRef","setFields","mapIds","getFieldsValues","getFieldArrayParentName","omitKey","getCurrentFieldsValues","getFocusDetail","focusIndex","focusName","shouldFocus","setFieldsAndNotify","fieldsValues","cleanup","batchStateUpdate","method","args","updatedFieldArrayValues","shouldSet","argA","argB","setFieldArrayDirtyFields","updateDirtyFieldsWithDefaultValues","registerFieldArray","forEach","appendValueItem","valueIndex","inputName","watchField","startsWith","fieldArraySubscription","inputFieldArrayName","isReset","swap","useCallback","fieldValues","swapArrayAt","move","moveArrayAt","prependValue","prependAt","fillEmptyArray","appendValue","appendAt","currentIndex","remove","removeArrayAt","resetFields","insertValue","insertAt","reValidateMode","resolver","context","shouldFocusError","criteriaMode","fieldsNamesRef","Set","unregisterFieldsNamesRef","isMountedRef","contextRef","resolverRef","validationMode","getValidationModes","isValidateAllFieldCriteria","isSubmitted","submitCount","isSubmitting","isSubmitSuccessful","getIsValid","shouldRenderBaseOnError","shouldRender","state","isWatched","previousError","shouldReRender","updatedFormState","setFieldValue","rawValue","shouldRegister","isHTMLElement","radioRef","selectRef","checkboxRef","shouldDirty","updateAndGetDirtyState","shouldValidate","trigger","formValues","isFieldDirty","isDirtyFieldExist","previousIsDirty","isChanged","executeValidation","skipReRender","validateField","executeSchemaOrResolverValidation","currentNames","validateForm","fieldError","schemaResult","Promise","all","fieldName","setInternalValues","inputKey","has","isFieldWatched","updateValidAndValue","isWithinRefCallback","defaultChecked","hasValidation","then","handleChange","inputType","isBlurEvent","isReValidateOnBlur","isReValidateOnChange","shouldSkipValidation","skipValidation","previousFormIsValid","parentNodeName","currentError","updateIsValid","previousIsValid","watchInternal","fieldNames","isGlobal","isArrayNames","delete","keepIsValid","keepError","keepValue","keepDirty","keepTouched","keepDefaultValue","registerFieldRef","isRadioOrCheckboxFunction","contains","isInitialRegister","handleSubmit","onValid","onInvalid","e","preventDefault","persist","hasNoPromiseError","resetFromState","keepErrors","keepIsSubmitted","keepDefaultValues","keepSubmitCount","registerAbsentFields","File","useFieldArraySubscription","isLiveInDom","useMemo","watch","info","setValue","isFieldArray","getValues","reset","keepStateOptions","updatedValues","keepValues","inputRef","closest","clearErrors","setError","setFocus","updateValue","watchSubscription"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getNodeParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/compact.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/constants.ts","../src/utils/omit.ts","../src/useFormContext.tsx","../src/logic/getProxyFormState.ts","../src/utils/isEmptyObject.ts","../src/logic/shouldRenderFormState.ts","../src/utils/convertToArrayPayload.ts","../src/utils/isWeb.ts","../src/utils/isProxyEnabled.ts","../src/useFormState.ts","../src/useController.ts","../src/logic/getControllerValue.ts","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/getFieldsValues.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/utils/deepMerge.ts","../src/utils/append.ts","../src/utils/fillEmptyArray.ts","../src/utils/insert.ts","../src/utils/move.ts","../src/utils/prepend.ts","../src/utils/remove.ts","../src/utils/swap.ts","../src/utils/isBoolean.ts","../src/utils/unset.ts","../src/logic/getFields.ts","../src/utils/isFileInput.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioInput.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/getMultipleSelectValue.ts","../src/logic/hasValidation.ts","../src/utils/isFunction.ts","../src/utils/isString.ts","../src/utils/isMessage.ts","../src/utils/isRegex.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/utils/getValidationModes.ts","../src/utils/isHTMLElement.ts","../src/utils/Subject.ts","../src/useForm.ts","../src/controller.tsx","../src/useFieldArray.ts","../src/logic/skipValidation.ts","../src/utils/isRadioOrCheckbox.ts","../src/useWatch.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is null | undefined => value == null;\n","import isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown) => 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 !(value instanceof Date);\n","export default (name: string) => name.substring(0, name.search(/.\\d/)) || name;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n [...names].some((current) => getNodeParentName(name) === current);\n","export default (value: any[]) => value.filter(Boolean);\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isUndefined from './isUndefined';\n\nexport default (obj: any = {}, path: string, defaultValue?: unknown) => {\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) => (isNullOrUndefined(result) ? result : result[key]),\n obj,\n );\n\n return isUndefined(result) || result === obj\n ? isUndefined(obj[path])\n ? defaultValue\n : obj[path]\n : result;\n};\n","import { ValidationMode } from './types';\n\nexport const EVENTS = {\n BLUR: 'blur',\n CHANGE: 'change',\n};\n\nexport const VALIDATION_MODE: ValidationMode = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\n\nexport const SELECT = 'select';\n\nexport const UNDEFINED = 'undefined';\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};\n","export default <Key extends string, T extends Record<Key, any>>(\n source: T,\n key: Key,\n): Omit<T, Key> => {\n const copy = { ...source };\n delete copy[key];\n\n return copy;\n};\n","import * as React from 'react';\n\nimport omit from './utils/omit';\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst FormContext = React.createContext<UseFormReturn | null>(null);\n\nFormContext.displayName = 'RHFContext';\n\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n>(): UseFormReturn<TFieldValues> =>\n React.useContext(FormContext) as unknown as UseFormReturn<TFieldValues>;\n\nexport const FormProvider = <TFieldValues extends FieldValues>(\n props: FormProviderProps<TFieldValues>,\n) => (\n <FormContext.Provider\n value={omit(props, 'children') as unknown as UseFormReturn}\n >\n {props.children}\n </FormContext.Provider>\n);\n","import * as React from 'react';\n\nimport { VALIDATION_MODE } from '../constants';\nimport { FormState, FormStateProxy, ReadFormState } from '../types';\n\nexport default <TFieldValues>(\n isProxyEnabled: boolean,\n formState: FormState<TFieldValues>,\n readFormStateRef: React.MutableRefObject<ReadFormState>,\n localReadFormStateRef?: React.MutableRefObject<ReadFormState>,\n isRoot = true,\n) =>\n isProxyEnabled\n ? new Proxy(formState, {\n get: (obj, prop: keyof FormStateProxy) => {\n if (prop in obj) {\n if (readFormStateRef.current[prop] !== VALIDATION_MODE.all) {\n readFormStateRef.current[prop] = isRoot\n ? VALIDATION_MODE.all\n : true;\n }\n localReadFormStateRef &&\n (localReadFormStateRef.current[prop] = true);\n return obj[prop];\n }\n\n return undefined;\n },\n })\n : formState;\n","import { 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 { VALIDATION_MODE } from '../constants';\nimport { ReadFormState } from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport omit from '../utils/omit';\n\nexport default <T extends Record<string, any>, K extends ReadFormState>(\n formStateData: T,\n readFormStateRef: K,\n isRoot?: boolean,\n) => {\n const formState = omit(formStateData, 'name');\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(readFormStateRef).length ||\n Object.keys(formState).find(\n (key) =>\n readFormStateRef[key as keyof ReadFormState] ===\n (isRoot ? VALIDATION_MODE.all : true),\n )\n );\n};\n","export default <T extends unknown>(value: T) =>\n Array.isArray(value) ? value : [value];\n","import { UNDEFINED } from '../constants';\n\nexport default typeof window !== UNDEFINED &&\n typeof window.HTMLElement !== UNDEFINED &&\n typeof document !== UNDEFINED;\n","import { UNDEFINED } from '../constants';\n\nimport isWeb from './isWeb';\n\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\n\nexport default isProxyEnabled;\n","import * as React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormStateProps,\n UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\n props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n const { control, name } = props || {};\n const methods = useFormContext();\n const { formStateRef, formStateSubjectRef, readFormStateRef } =\n control || methods.control;\n const nameRef = React.useRef<InternalFieldName>(name as InternalFieldName);\n nameRef.current = name as InternalFieldName;\n\n const [formState, updateFormState] = React.useState(formStateRef.current);\n const readFormState = React.useRef({\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n\n React.useEffect(() => {\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next: (formState) =>\n (!nameRef.current ||\n !formState.name ||\n convertToArrayPayload(nameRef.current).includes(formState.name)) &&\n shouldRenderFormState(formState, readFormState.current) &&\n updateFormState({\n ...formStateRef.current,\n ...formState,\n }),\n });\n\n return () => formStateSubscription.unsubscribe();\n }, []);\n\n return getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState as FormState<TFieldValues>,\n readFormStateRef,\n readFormState,\n false,\n );\n}\n\nexport { useFormState };\n","import * as React from 'react';\n\nimport getControllerValue from './logic/getControllerValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport isUndefined from './utils/isUndefined';\nimport { EVENTS } from './constants';\nimport {\n FieldPath,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\n\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n rules,\n defaultValue,\n control,\n shouldUnregister,\n}: UseControllerProps<TFieldValues, TName>): UseControllerReturn<\n TFieldValues,\n TName\n> {\n const methods = useFormContext<TFieldValues>();\n const {\n defaultValuesRef,\n register,\n fieldsRef,\n unregister,\n fieldArrayNamesRef,\n controllerSubjectRef,\n shouldUnmountUnregister,\n } = control || methods.control;\n\n const { onChange, onBlur, ref } = register(name, rules);\n const [value, setInputStateValue] = React.useState(\n isUndefined(get(fieldsRef.current, name)._f.value) ||\n isNameInFieldArray(fieldArrayNamesRef.current, name)\n ? isUndefined(defaultValue)\n ? get(defaultValuesRef.current, name)\n : defaultValue\n : get(fieldsRef.current, name)._f.value,\n );\n const formState = useFormState({\n control: control || methods.control,\n name,\n });\n get(fieldsRef.current, name)._f.value = value;\n\n React.useEffect(() => {\n const controllerSubscription = controllerSubjectRef.current.subscribe({\n next: (data) =>\n (!data.name || name === data.name) &&\n setInputStateValue(get(data.values, name)),\n });\n\n return () => {\n controllerSubscription.unsubscribe();\n if (shouldUnmountUnregister || shouldUnregister) {\n unregister(name);\n } else if (get(fieldsRef.current, name)) {\n get(fieldsRef.current, name)._f.mount = false;\n }\n };\n }, [name]);\n\n return {\n field: {\n onChange: (event: any) => {\n const value = getControllerValue(event);\n setInputStateValue(value);\n\n onChange({\n target: {\n value,\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n });\n },\n onBlur: () => {\n onBlur({\n target: {\n name: name as InternalFieldName,\n },\n type: EVENTS.BLUR,\n });\n },\n name,\n value,\n ref: (elm) => elm && ref(elm),\n },\n formState,\n fieldState: Object.defineProperties(\n {},\n {\n invalid: {\n get() {\n return !!get(formState.errors, name);\n },\n },\n isDirty: {\n get() {\n return !!get(formState.dirtyFields, name);\n },\n },\n isTouched: {\n get() {\n return !!get(formState.touchedFields, name);\n },\n },\n error: {\n get() {\n return get(formState.errors, name);\n },\n },\n },\n ),\n };\n}\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\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 : (event as Event).target.value\n : event;\n","import {\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","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default function set(\n object: FieldValues,\n path: string,\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 object[key] = newValue;\n object = object[key];\n }\n return object;\n}\n","import { FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\nimport isUndefined from '../utils/isUndefined';\nimport omit from '../utils/omit';\n\nconst focusFieldBy = (\n fields: FieldRefs,\n callback: (name: string) => boolean,\n fieldsNames?: Set<InternalFieldName>,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f && callback(_f.name)) {\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\n break;\n } else if (_f.refs) {\n _f.refs[0].focus();\n break;\n }\n } else if (isObject(current)) {\n focusFieldBy(current, callback);\n }\n }\n }\n};\n\nexport default focusFieldBy;\n","import * as React from 'react';\n\nimport { FieldRefs, FieldValues } from '../types';\nimport omit from '../utils/omit';\nimport set from '../utils/set';\n\nconst getFieldsValues = (\n fieldsRef: React.MutableRefObject<FieldRefs>,\n defaultValuesRef?: FieldValues,\n output: Record<string, any> = {},\n): any => {\n for (const name in fieldsRef.current) {\n const field = fieldsRef.current[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n set(\n output,\n name,\n _f\n ? _f.ref.disabled || (_f.refs && _f.refs.every((ref) => ref.disabled))\n ? undefined\n : _f.value\n : Array.isArray(field)\n ? []\n : {},\n );\n\n if (current) {\n getFieldsValues(\n {\n current,\n },\n defaultValuesRef,\n output[name],\n );\n }\n }\n }\n\n return {\n ...defaultValuesRef,\n ...output,\n };\n};\n\nexport default getFieldsValues;\n","import { UNDEFINED } from '../constants';\n\nexport default () => {\n const d =\n typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n","import { FieldValues } from '../types';\n\nimport generateId from './generateId';\n\nexport default <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id',\n>(\n values: Partial<TFieldArrayValues>[] = [],\n keyName: TKeyName,\n): any =>\n values.map((value: Partial<TFieldArrayValues>) => ({\n [keyName]: (value && value[keyName]) || generateId(),\n ...value,\n }));\n","import { 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 * as React from 'react';\n\nimport isObject from '../utils/isObject';\n\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(\n object1: any,\n object2: any,\n isErrorObject?: boolean,\n) {\n if (\n isPrimitive(object1) ||\n isPrimitive(object2) ||\n object1 instanceof Date ||\n object2 instanceof Date\n ) {\n return object1 === object2;\n }\n\n if (!React.isValidElement(object1)) {\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 for (const key of keys1) {\n const val1 = object1[key];\n\n if (!(isErrorObject && key === 'ref')) {\n const val2 = object2[key];\n\n if (\n (isObject(val1) || Array.isArray(val1)) &&\n (isObject(val2) || Array.isArray(val2))\n ? !deepEqual(val1, val2, isErrorObject)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n","import { get } from '../utils';\nimport deepEqual from '../utils/deepEqual';\nimport { deepMerge } from '../utils/deepMerge';\nimport set from '../utils/set';\n\nfunction setDirtyFields<\n T extends Record<string, unknown>[],\n U extends Record<string, unknown>[],\n K extends Record<string, boolean | []>,\n>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n parentNode?: K,\n parentName?: keyof K,\n) {\n let index = -1;\n\n while (++index < values.length) {\n for (const key in values[index]) {\n if (Array.isArray(values[index][key])) {\n !dirtyFields[index] && (dirtyFields[index] = {});\n dirtyFields[index][key] = [];\n setDirtyFields(\n values[index][key] as T,\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\n ? set(dirtyFields[index] || {}, key)\n : (dirtyFields[index] = {\n ...dirtyFields[index],\n [key]: true,\n });\n }\n }\n\n parentNode &&\n !dirtyFields.length &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields;\n}\n\nexport default <T extends U, U extends Record<string, unknown>[]>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n) =>\n deepMerge(\n setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)),\n setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)),\n );\n","import isObject from './isObject';\nimport isPrimitive from './isPrimitive';\n\nexport function deepMerge<\n T extends Record<keyof T, any>,\n U extends Record<keyof U, any>,\n>(target: T, source: U): T & U {\n if (isPrimitive(target) || isPrimitive(source)) {\n return source;\n }\n\n for (const key in source) {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n try {\n target[key] =\n (isObject(targetValue) && isObject(sourceValue)) ||\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\n ? deepMerge(targetValue, sourceValue)\n : sourceValue;\n } catch {}\n }\n\n return target;\n}\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function append<T>(data: T[], value: T | T[]): T[] {\n return [...data, ...convertToArrayPayload(value)];\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? Array(value.length).fill(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 if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n }\n\n return [];\n};\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function prepend<T>(data: T[], value: T | T[]): T[] {\n return [...convertToArrayPayload(value), ...data];\n}\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])][0];\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","import isBoolean from './isBoolean';\nimport isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nexport default function unset(object: any, path: string) {\n const updatePath = isKey(path) ? [path] : stringToPath(path);\n const childObject =\n updatePath.length == 1 ? object : baseGet(object, updatePath);\n const key = updatePath[updatePath.length - 1];\n let previousObjRef;\n\n if (childObject) {\n delete childObject[key];\n }\n\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\n let index = -1;\n let objectRef;\n const currentPaths = updatePath.slice(0, -(k + 1));\n const currentPathsLength = currentPaths.length - 1;\n\n if (k > 0) {\n previousObjRef = object;\n }\n\n while (++index < currentPaths.length) {\n const item = currentPaths[index];\n objectRef = objectRef ? objectRef[item] : object[item];\n\n if (\n currentPathsLength === index &&\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\n (Array.isArray(objectRef) &&\n !objectRef.filter(\n (data) =>\n (isObject(data) && !isEmptyObject(data)) || isBoolean(data),\n ).length))\n ) {\n previousObjRef ? delete previousObjRef[item] : delete object[item];\n }\n\n previousObjRef = objectRef;\n }\n }\n\n return object;\n}\n","import { Field, FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isKey from '../utils/isKey';\nimport set from '../utils/set';\n\nexport default function getFields(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n fieldsRefs: FieldRefs,\n) {\n const currentFields: Record<InternalFieldName, Field['_f']> = {};\n\n for (const name of fieldsNames) {\n const field = get(fieldsRefs, name) as Field | undefined;\n\n if (field) {\n !isKey(name)\n ? set(currentFields, name, field._f)\n : (currentFields[name] = field._f);\n }\n }\n\n return currentFields;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","import { SELECT } from '../constants';\nimport { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-multiple`;\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\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 if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import { Field } from '../types';\n\nexport default (\n value: any,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n valueAsNumber\n ? value === ''\n ? NaN\n : +value\n : valueAsDate\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\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 { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getMultipleSelectValue from './getMultipleSelectValue';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(field?: Field) {\n if (field && field._f) {\n const ref = field._f.ref;\n\n if (ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(field._f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return getMultipleSelectValue(ref.options);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(field._f.refs).value;\n }\n\n return getFieldValueAs(\n isUndefined(ref.value) ? field._f.ref.value : ref.value,\n field._f,\n );\n }\n}\n","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => value);\n","import { RegisterOptions } from '../types';\n\nexport default <T extends RegisterOptions>(options?: T, mounted?: boolean) =>\n options &&\n mounted &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","export default (value: unknown): value is string => typeof value === 'string';\n","import * as React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { 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 { Field, FieldError, InternalFieldErrors, Message } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isMessage from '../utils/isMessage';\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';\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 (\n {\n _f: {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n value: inputValue,\n valueAsNumber,\n mount,\n },\n }: Field,\n validateAllFieldCriteria: boolean,\n): Promise<InternalFieldErrors> => {\n if (!mount) {\n return {};\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)) && !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 = INPUT_VALIDATION_RULES.maxLength,\n 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 required &&\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(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: isRadioOrCheckbox ? (refs || [])[0] || {} : ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (\n (!isNullOrUndefined(min) || !isNullOrUndefined(max)) &&\n inputValue !== ''\n ) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNaN(inputValue)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(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);\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value)) {\n exceedMin = 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 return error;\n }\n }\n }\n\n if (isString(inputValue) && !isEmpty && (maxLength || minLength)) {\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 return error;\n }\n }\n }\n\n if (isString(inputValue) && pattern && !isEmpty) {\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 return error;\n }\n }\n }\n\n if (validate) {\n const validateRef = isRadioOrCheckbox && refs ? refs[0] : ref;\n\n if (isFunction(validate)) {\n const result = await validate(inputValue);\n const validateError = getValidateError(result, validateRef);\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 return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n for (const [key, validateFunction] of Object.entries(validate)) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateResult = await validateFunction(inputValue);\n const validateError = getValidateError(\n validateResult,\n validateRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: validateRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n return error;\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode } from '../types';\n\nexport default (\n mode?: Mode,\n): {\n isOnSubmit: boolean;\n isOnBlur: boolean;\n isOnChange: boolean;\n isOnAll: boolean;\n isOnTouch: boolean;\n} => ({\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","export default (value: any): value is HTMLElement =>\n value instanceof HTMLElement;\n","export type Observer<T> = {\n next: (value: T) => void;\n};\n\ntype TearDown = () => void;\n\nexport type SubjectType<T> = {\n next: (value: T) => void;\n subscribe: (value: Observer<T>) => {\n unsubscribe: TearDown;\n };\n};\n\nexport class Subscription {\n private tearDowns: TearDown[] = [];\n\n add(tearDown: TearDown) {\n this.tearDowns.push(tearDown);\n }\n\n unsubscribe() {\n for (const teardown of this.tearDowns) {\n teardown();\n }\n this.tearDowns = [];\n }\n}\n\nclass Subscriber<T> implements Observer<T> {\n closed = false;\n\n constructor(private observer: Observer<T>, subscription: Subscription) {\n subscription.add(() => (this.closed = true));\n }\n\n next(value: T) {\n if (!this.closed) {\n this.observer.next(value);\n }\n }\n}\n\nexport default class Subject<T> {\n observers: Observer<T>[];\n\n constructor() {\n this.observers = [];\n }\n\n next(value: T) {\n for (const observer of this.observers) {\n observer.next(value);\n }\n }\n\n subscribe(observer: Observer<T>) {\n const subscription = new Subscription();\n const subscriber = new Subscriber(observer, subscription);\n this.observers.push(subscriber);\n\n return subscription;\n }\n\n unsubscribe() {\n this.observers = [];\n }\n}\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFields from './logic/getFields';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldValue from './logic/getFieldValue';\nimport getFieldValueAs from './logic/getFieldValueAs';\nimport getNodeParentName from './logic/getNodeParentName';\nimport getProxyFormState from './logic/getProxyFormState';\nimport hasValidation from './logic/hasValidation';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport skipValidation from './logic/skipValidation';\nimport validateField from './logic/validateField';\nimport compact from './utils/compact';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport deepEqual from './utils/deepEqual';\nimport get from './utils/get';\nimport getValidationModes from './utils/getValidationModes';\nimport isCheckBoxInput from './utils/isCheckBoxInput';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isFileInput from './utils/isFileInput';\nimport isFunction from './utils/isFunction';\nimport isHTMLElement from './utils/isHTMLElement';\nimport isMultipleSelect from './utils/isMultipleSelect';\nimport isNullOrUndefined from './utils/isNullOrUndefined';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport isRadioInput from './utils/isRadioInput';\nimport isRadioOrCheckboxFunction from './utils/isRadioOrCheckbox';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport isWeb from './utils/isWeb';\nimport omit from './utils/omit';\nimport set from './utils/set';\nimport Subject from './utils/Subject';\nimport unset from './utils/unset';\nimport { EVENTS, UNDEFINED, VALIDATION_MODE } from './constants';\nimport {\n ChangeHandler,\n DeepPartial,\n DefaultValues,\n EventType,\n Field,\n FieldArrayDefaultValues,\n FieldError,\n FieldErrors,\n FieldName,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n FormStateSubjectRef,\n GetIsDirty,\n InternalFieldName,\n InternalNameSet,\n KeepStateOptions,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n RegisterOptions,\n SetFieldValue,\n SetValueConfig,\n UnpackNestedValue,\n UseFormClearErrors,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormRegisterReturn,\n UseFormReset,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from './types';\n\nconst isWindowUndefined = typeof window === UNDEFINED;\n\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object,\n>({\n mode = VALIDATION_MODE.onSubmit,\n reValidateMode = VALIDATION_MODE.onChange,\n resolver,\n context,\n defaultValues = {} as DefaultValues<TFieldValues>,\n shouldFocusError = true,\n shouldUnregister,\n criteriaMode,\n}: UseFormProps<TFieldValues, TContext> = {}): UseFormReturn<TFieldValues> {\n const fieldsRef = React.useRef<FieldRefs>({});\n const fieldsNamesRef = React.useRef<Set<InternalFieldName>>(new Set());\n const formStateSubjectRef = React.useRef<FormStateSubjectRef<TFieldValues>>(\n new Subject(),\n );\n const unregisterFieldsNamesRef = React.useRef<Set<InternalFieldName>>(\n new Set(),\n );\n const watchSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n type?: EventType;\n value?: unknown;\n }>(),\n );\n const controllerSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n values: DefaultValues<TFieldValues>;\n }>(),\n );\n const fieldArraySubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n fields: any;\n isReset?: boolean;\n }>(),\n );\n const fieldArrayDefaultValuesRef = React.useRef<FieldArrayDefaultValues>({});\n const watchFieldsRef = React.useRef<InternalNameSet>(new Set());\n const isMountedRef = React.useRef(false);\n const fieldsWithValidationRef = React.useRef<\n FieldNamesMarkedBoolean<TFieldValues>\n >({});\n const validFieldsRef = React.useRef<FieldNamesMarkedBoolean<TFieldValues>>(\n {},\n );\n const defaultValuesRef =\n React.useRef<DefaultValues<TFieldValues>>(defaultValues);\n const isWatchAllRef = React.useRef(false);\n const contextRef = React.useRef(context);\n const resolverRef = React.useRef(resolver);\n const fieldArrayNamesRef = React.useRef<InternalNameSet>(new Set());\n const validationMode = getValidationModes(mode);\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\n const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n isValidating: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: !validationMode.isOnSubmit,\n errors: {},\n });\n const readFormStateRef = React.useRef<ReadFormState>({\n isDirty: !isProxyEnabled,\n dirtyFields: !isProxyEnabled,\n touchedFields: !isProxyEnabled,\n isValidating: !isProxyEnabled,\n isValid: !isProxyEnabled,\n errors: !isProxyEnabled,\n });\n const formStateRef = React.useRef(formState);\n\n contextRef.current = context;\n resolverRef.current = resolver;\n\n const getIsValid = () =>\n (formStateRef.current.isValid =\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\n isEmptyObject(formStateRef.current.errors));\n\n const shouldRenderBaseOnError = React.useCallback(\n (\n name: InternalFieldName,\n error?: FieldError,\n shouldRender: boolean | null = false,\n state: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } = {},\n isValid?: boolean,\n isWatched?: boolean,\n ): boolean | void => {\n const previousError = get(formStateRef.current.errors, name);\n\n let shouldReRender =\n shouldRender ||\n !deepEqual(previousError, error, true) ||\n (readFormStateRef.current.isValid &&\n isUndefined(error) &&\n get(fieldsWithValidationRef.current, name) &&\n !get(validFieldsRef.current, name));\n\n if (error) {\n unset(validFieldsRef.current, name);\n shouldReRender =\n shouldReRender ||\n !previousError ||\n !deepEqual(previousError, error, true);\n set(formStateRef.current.errors, name, error);\n } else {\n if (get(fieldsWithValidationRef.current, name) || resolverRef.current) {\n set(validFieldsRef.current, name, true);\n shouldReRender = shouldReRender || previousError;\n }\n\n unset(formStateRef.current.errors, name);\n }\n\n if (\n (shouldReRender && !isNullOrUndefined(shouldRender)) ||\n !isEmptyObject(state) ||\n isWatched\n ) {\n const updatedFormState = {\n ...state,\n isValid: resolverRef.current ? !!isValid : getIsValid(),\n errors: formStateRef.current.errors,\n name,\n };\n\n formStateRef.current = {\n ...formStateRef.current,\n ...updatedFormState,\n };\n\n formStateSubjectRef.current.next(\n isWatched ? { name } : updatedFormState,\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: false,\n });\n },\n [],\n );\n\n const setFieldValue = React.useCallback(\n (\n name: InternalFieldName,\n rawValue: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n shouldRender?: boolean,\n shouldRegister?: boolean,\n ) => {\n shouldRegister && register(name as Path<TFieldValues>);\n const _f = get(fieldsRef.current, name, {})._f as Field['_f'];\n\n if (_f) {\n const value =\n isWeb && isHTMLElement(_f.ref) && isNullOrUndefined(rawValue)\n ? ''\n : rawValue;\n _f.value = getFieldValueAs(rawValue, _f);\n\n if (isRadioInput(_f.ref)) {\n (_f.refs || []).forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === value),\n );\n } else if (isFileInput(_f.ref) && !isString(value)) {\n _f.ref.files = value as FileList;\n } else if (isMultipleSelect(_f.ref)) {\n [..._f.ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (value as string[]).includes(\n selectRef.value,\n )),\n );\n } else if (isCheckBoxInput(_f.ref) && _f.refs) {\n _f.refs.length > 1\n ? _f.refs.forEach(\n (checkboxRef) =>\n (checkboxRef.checked = Array.isArray(value)\n ? !!(value as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : value === checkboxRef.value),\n )\n : (_f.refs[0].checked = !!value);\n } else {\n _f.ref.value = value;\n }\n\n if (shouldRender) {\n const values = getFieldsValues(fieldsRef);\n set(values, name, rawValue);\n controllerSubjectRef.current.next({\n values: {\n ...defaultValuesRef.current,\n ...values,\n } as DefaultValues<TFieldValues>,\n name,\n });\n }\n\n options.shouldDirty && updateAndGetDirtyState(name, value);\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n }\n },\n [],\n );\n\n const getIsDirty: GetIsDirty = React.useCallback((name, data) => {\n const formValues = getFieldsValues(fieldsRef);\n\n name && data && set(formValues, name, data);\n\n return !deepEqual(formValues, defaultValuesRef.current);\n }, []);\n\n const updateAndGetDirtyState = React.useCallback(\n (\n name: InternalFieldName,\n inputValue: unknown,\n shouldRender = true,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n if (\n readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields\n ) {\n const isFieldDirty = !deepEqual(\n get(defaultValuesRef.current, name),\n inputValue,\n );\n const isDirtyFieldExist = get(formStateRef.current.dirtyFields, name);\n const previousIsDirty = formStateRef.current.isDirty;\n\n isFieldDirty\n ? set(formStateRef.current.dirtyFields, name, true)\n : unset(formStateRef.current.dirtyFields, name);\n\n formStateRef.current.isDirty = getIsDirty();\n\n const state = {\n isDirty: formStateRef.current.isDirty,\n dirtyFields: formStateRef.current.dirtyFields,\n name,\n };\n\n const isChanged =\n (readFormStateRef.current.isDirty &&\n previousIsDirty !== state.isDirty) ||\n (readFormStateRef.current.dirtyFields &&\n isDirtyFieldExist !== get(formStateRef.current.dirtyFields, name));\n\n isChanged && shouldRender && formStateSubjectRef.current.next(state);\n\n return isChanged ? state : {};\n }\n\n return {};\n },\n [],\n );\n\n const executeValidation = React.useCallback(\n async (\n name: InternalFieldName,\n skipReRender?: boolean | null,\n ): Promise<boolean> => {\n const error = (\n await validateField(\n get(fieldsRef.current, name) as Field,\n isValidateAllFieldCriteria,\n )\n )[name];\n\n shouldRenderBaseOnError(name, error, skipReRender);\n\n return isUndefined(error);\n },\n [isValidateAllFieldCriteria],\n );\n\n const executeSchemaOrResolverValidation = React.useCallback(\n async (\n names: InternalFieldName[],\n currentNames: FieldName<TFieldValues>[] = [],\n ) => {\n const { errors } = await resolverRef.current!(\n getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n ),\n contextRef.current,\n {\n criteriaMode,\n names: currentNames,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(formStateRef.current.errors, name, error)\n : unset(formStateRef.current.errors, name);\n }\n\n return errors;\n },\n [criteriaMode],\n );\n\n const validateForm = async (fieldsRef: FieldRefs) => {\n let isValid = true;\n\n for (const name in fieldsRef) {\n const field = fieldsRef[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f) {\n const fieldError = await validateField(\n field,\n isValidateAllFieldCriteria,\n );\n\n if (fieldError[_f.name]) {\n isValid = false;\n set(formStateRef.current.errors, _f.name, fieldError[_f.name]);\n unset(validFieldsRef.current, _f.name);\n } else if (get(fieldsWithValidationRef.current, _f.name)) {\n set(validFieldsRef.current, _f.name, true);\n unset(formStateRef.current.errors, _f.name);\n }\n }\n\n current && (await validateForm(current));\n }\n }\n\n return isValid;\n };\n\n const trigger: UseFormTrigger<TFieldValues> = React.useCallback(\n async (name) => {\n const fields = isUndefined(name)\n ? Object.keys(fieldsRef.current)\n : (convertToArrayPayload(name) as InternalFieldName[]);\n let isValid;\n let schemaResult: FieldErrors<TFieldValues> | {} = {};\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n schemaResult = await executeSchemaOrResolverValidation(\n fields,\n isUndefined(name) ? undefined : (fields as FieldName<TFieldValues>[]),\n );\n isValid = fields.every((name) => !get(schemaResult, name));\n } else {\n isValid = isUndefined(name)\n ? await validateForm(fieldsRef.current)\n : (\n await Promise.all(\n fields\n .filter((fieldName) => get(fieldsRef.current, fieldName))\n .map(\n async (fieldName) =>\n await executeValidation(fieldName, null),\n ),\n )\n ).every(Boolean);\n }\n\n formStateSubjectRef.current.next({\n ...(isString(name) ? { name } : {}),\n errors: formStateRef.current.errors,\n isValidating: false,\n isValid: resolverRef.current\n ? isEmptyObject(schemaResult)\n : getIsValid(),\n });\n\n return isValid;\n },\n [executeSchemaOrResolverValidation, executeValidation],\n );\n\n const setInternalValues = React.useCallback(\n (\n name: FieldPath<TFieldValues>,\n value: UnpackNestedValue<\n PathValue<TFieldValues, FieldPath<TFieldValues>>\n >,\n options: SetValueConfig,\n ) =>\n Object.entries(value).forEach(([inputKey, inputValue]) => {\n const fieldName = `${name}.${inputKey}` as Path<TFieldValues>;\n const field = get(fieldsRef.current, fieldName);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n isFieldArray || (field && !field._f)\n ? setInternalValues(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n )\n : setFieldValue(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n true,\n !field,\n );\n }),\n [trigger],\n );\n\n const isFieldWatched = (name: FieldPath<TFieldValues>) =>\n isWatchAllRef.current ||\n watchFieldsRef.current.has(name) ||\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\n\n const updateValidAndValue = (\n name: InternalFieldName,\n options?: RegisterOptions,\n ref?: Ref,\n isWithinRefCallback?: boolean,\n ) => {\n const field = get(fieldsRef.current, name) as Field;\n const defaultValue = isUndefined(field._f.value)\n ? get(defaultValuesRef.current, name)\n : field._f.value;\n\n if (field && !isUndefined(defaultValue)) {\n if (ref && (ref as HTMLInputElement).defaultChecked) {\n field._f.value = getFieldValue(field);\n } else if (!isNameInFieldArray(fieldArrayNamesRef.current, name)) {\n setFieldValue(name, defaultValue);\n } else {\n field._f.value = defaultValue;\n }\n }\n\n if (\n (!isUndefined(defaultValue) || isWithinRefCallback) &&\n hasValidation(options, field._f.mount) &&\n !validationMode.isOnSubmit &&\n field &&\n readFormStateRef.current.isValid\n ) {\n validateField(field, isValidateAllFieldCriteria).then((error) => {\n isEmptyObject(error)\n ? set(validFieldsRef.current, name, true)\n : unset(validFieldsRef.current, name);\n\n formStateRef.current.isValid !== getIsValid() &&\n updateFormState({ ...formStateRef.current, isValid: getIsValid() });\n });\n }\n\n return defaultValue;\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n const field = get(fieldsRef.current, name);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n if (isFieldArray) {\n fieldArraySubjectRef.current.next({\n fields: value,\n name,\n isReset: true,\n });\n\n if (\n (readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields) &&\n options.shouldDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n value,\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n formStateSubjectRef.current.next({\n name,\n dirtyFields: formStateRef.current.dirtyFields,\n isDirty: getIsDirty(name, value),\n });\n }\n\n !(value as []).length &&\n set(fieldsRef.current, name, []) &&\n set(fieldArrayDefaultValuesRef.current, name, []);\n }\n\n (field && !field._f) || isFieldArray\n ? setInternalValues(name, value, isFieldArray ? {} : options)\n : setFieldValue(name, value, options, true, !field);\n\n isFieldWatched(name) && formStateSubjectRef.current.next({});\n watchSubjectRef.current.next({ name, value });\n };\n\n const handleChange: ChangeHandler = React.useCallback(\n async ({ type, target, target: { value, type: inputType } }) => {\n let name = (target as Ref)!.name;\n let error;\n let isValid;\n const field = get(fieldsRef.current, name) as Field;\n\n if (field) {\n let inputValue = inputType ? getFieldValue(field) : undefined;\n inputValue = isUndefined(inputValue) ? value : inputValue;\n\n const isBlurEvent = type === EVENTS.BLUR;\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = getValidationModes(reValidateMode);\n\n const shouldSkipValidation =\n (!hasValidation(field._f, field._f.mount) &&\n !resolverRef.current &&\n !get(formStateRef.current.errors, name)) ||\n skipValidation({\n isBlurEvent,\n isTouched: !!get(formStateRef.current.touchedFields, name),\n isSubmitted: formStateRef.current.isSubmitted,\n isReValidateOnBlur,\n isReValidateOnChange,\n ...validationMode,\n });\n const isWatched =\n !isBlurEvent && isFieldWatched(name as FieldPath<TFieldValues>);\n\n if (!isUndefined(inputValue)) {\n field._f.value = inputValue;\n }\n\n const state = updateAndGetDirtyState(name, field._f.value, false);\n\n if (isBlurEvent && !get(formStateRef.current.touchedFields, name)) {\n set(formStateRef.current.touchedFields, name, true);\n readFormStateRef.current.touchedFields &&\n (state.touchedFields = formStateRef.current.touchedFields);\n }\n\n let shouldRender = !isEmptyObject(state) || isWatched;\n\n if (shouldSkipValidation) {\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n return (\n shouldRender &&\n formStateSubjectRef.current.next(\n isWatched ? { name } : { ...state, name },\n )\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n const { errors } = await resolverRef.current(\n getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n ),\n contextRef.current,\n {\n criteriaMode,\n fields: getFields([name], fieldsRef.current),\n names: [name as FieldName<TFieldValues>],\n },\n );\n const previousFormIsValid = formStateRef.current.isValid;\n error = get(errors, name);\n\n if (isCheckBoxInput(target as Ref) && !error) {\n const parentNodeName = getNodeParentName(name);\n const currentError = get(errors, parentNodeName, {});\n currentError.type && currentError.message && (error = currentError);\n\n if (\n currentError ||\n get(formStateRef.current.errors, parentNodeName)\n ) {\n name = parentNodeName;\n }\n }\n\n isValid = isEmptyObject(errors);\n\n previousFormIsValid !== isValid && (shouldRender = true);\n } else {\n error = (await validateField(field, isValidateAllFieldCriteria))[\n name\n ];\n }\n\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n shouldRenderBaseOnError(\n name,\n error,\n shouldRender,\n state,\n isValid,\n isWatched,\n );\n }\n },\n [],\n );\n\n const getValues: UseFormGetValues<TFieldValues> = (\n fieldNames?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>,\n ) => {\n const values = isMountedRef.current\n ? getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n )\n : defaultValuesRef.current;\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames as InternalFieldName)\n : fieldNames.map((name) => get(values, name as InternalFieldName));\n };\n\n const updateIsValid = React.useCallback(\n async (values = {}) => {\n const previousIsValid = formStateRef.current.isValid;\n\n if (resolver) {\n const { errors } = await resolverRef.current!(\n {\n ...getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n ),\n ...values,\n },\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.isValid = isEmptyObject(errors);\n } else {\n getIsValid();\n }\n\n previousIsValid !== formStateRef.current.isValid &&\n formStateSubjectRef.current.next({\n isValid: formStateRef.current.isValid,\n });\n },\n [criteriaMode],\n );\n\n const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n name\n ? convertToArrayPayload(name).forEach((inputName) =>\n unset(formStateRef.current.errors, inputName),\n )\n : (formStateRef.current.errors = {});\n\n formStateSubjectRef.current.next({\n errors: formStateRef.current.errors,\n });\n };\n\n const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n const ref = (\n ((get(fieldsRef.current, name) as Field) || { _f: {} })._f || {}\n ).ref;\n\n set(formStateRef.current.errors, name, {\n ...error,\n ref,\n });\n\n formStateSubjectRef.current.next({\n name,\n errors: formStateRef.current.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watchInternal: WatchInternal<TFieldValues> = React.useCallback(\n (fieldNames, defaultValue, isGlobal) => {\n const isArrayNames = Array.isArray(fieldNames);\n const fieldValues = isMountedRef.current\n ? getFieldsValues(fieldsRef, defaultValuesRef.current)\n : isUndefined(defaultValue)\n ? defaultValuesRef.current\n : isArrayNames\n ? defaultValue || {}\n : { [fieldNames as string]: defaultValue };\n\n if (isUndefined(fieldNames)) {\n isGlobal && (isWatchAllRef.current = true);\n return fieldValues;\n }\n\n const result = [];\n\n for (const fieldName of isArrayNames ? fieldNames : [fieldNames]) {\n isGlobal && watchFieldsRef.current.add(fieldName as string);\n result.push(get(fieldValues, fieldName as string));\n }\n\n return isArrayNames ? result : result[0];\n },\n [],\n );\n\n const watch: UseFormWatch<TFieldValues> = (\n fieldName?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: unknown,\n ) =>\n isFunction(fieldName)\n ? watchSubjectRef.current.subscribe({\n next: (info) =>\n fieldName(\n watchInternal(\n undefined,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ) as UnpackNestedValue<TFieldValues>,\n info,\n ),\n })\n : watchInternal(\n fieldName as string | string[],\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const inputName of name\n ? convertToArrayPayload(name)\n : Object.keys(fieldsNamesRef.current)) {\n fieldsNamesRef.current.delete(inputName);\n fieldArrayNamesRef.current.delete(inputName);\n\n if (get(fieldsRef.current, inputName) as Field) {\n if (!options.keepIsValid) {\n unset(fieldsWithValidationRef.current, inputName);\n unset(validFieldsRef.current, inputName);\n }\n !options.keepError && unset(formStateRef.current.errors, inputName);\n !options.keepValue && unset(fieldsRef.current, inputName);\n !options.keepDirty &&\n unset(formStateRef.current.dirtyFields, inputName);\n !options.keepTouched &&\n unset(formStateRef.current.touchedFields, inputName);\n !shouldUnregister &&\n !options.keepDefaultValue &&\n unset(defaultValuesRef.current, inputName);\n\n watchSubjectRef.current.next({\n name: inputName,\n });\n }\n }\n\n formStateSubjectRef.current.next({\n ...formStateRef.current,\n ...(!options.keepDirty ? {} : { isDirty: getIsDirty() }),\n ...(resolverRef.current ? {} : { isValid: getIsValid() }),\n });\n !options.keepIsValid && updateIsValid();\n };\n\n const registerFieldRef = (\n name: InternalFieldName,\n ref: HTMLInputElement,\n options?: RegisterOptions,\n ): ((name: InternalFieldName) => void) | void => {\n register(name as FieldPath<TFieldValues>, options);\n let field = get(fieldsRef.current, name) as Field;\n\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n\n if (\n ref === field._f.ref ||\n (isWeb && isHTMLElement(field._f.ref) && !isHTMLElement(ref)) ||\n (isRadioOrCheckbox &&\n Array.isArray(field._f.refs) &&\n compact(field._f.refs).find((option) => option === ref))\n ) {\n return;\n }\n\n field = {\n _f: isRadioOrCheckbox\n ? {\n ...field._f,\n refs: [\n ...compact(field._f.refs || []).filter(\n (ref) => isHTMLElement(ref) && document.contains(ref),\n ),\n ref,\n ],\n ref: { type: ref.type, name },\n }\n : {\n ...field._f,\n ref,\n },\n };\n\n set(fieldsRef.current, name, field);\n\n const defaultValue = updateValidAndValue(name, options, ref, true);\n\n if (\n isRadioOrCheckbox && Array.isArray(defaultValue)\n ? !deepEqual(get(fieldsRef.current, name)._f.value, defaultValue)\n : isUndefined(get(fieldsRef.current, name)._f.value)\n ) {\n get(fieldsRef.current, name)._f.value = getFieldValue(\n get(fieldsRef.current, name),\n );\n }\n };\n\n const register: UseFormRegister<TFieldValues> = React.useCallback(\n (name, options) => {\n const isInitialRegister = !get(fieldsRef.current, name);\n\n set(fieldsRef.current, name, {\n _f: {\n ...(isInitialRegister\n ? { ref: { name } }\n : {\n ref: (get(fieldsRef.current, name)._f || {}).ref,\n ...get(fieldsRef.current, name)._f,\n }),\n name,\n mount: true,\n ...options,\n },\n });\n hasValidation(options, true) &&\n set(fieldsWithValidationRef.current, name, true);\n fieldsNamesRef.current.add(name);\n isInitialRegister && updateValidAndValue(name, options);\n\n return isWindowUndefined\n ? ({ name: name as InternalFieldName } as UseFormRegisterReturn)\n : {\n name,\n onChange: handleChange,\n onBlur: handleChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n registerFieldRef(name, ref, options);\n } else {\n const field = get(fieldsRef.current, name) as Field;\n field && (field._f.mount = false);\n\n if (\n isWeb &&\n (shouldUnregister || (options && options.shouldUnregister))\n ) {\n unregisterFieldsNamesRef.current.add(name);\n }\n }\n },\n };\n },\n [defaultValuesRef.current],\n );\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> = React.useCallback(\n (onValid, onInvalid) => async (e) => {\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let hasNoPromiseError = true;\n let fieldValues = getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n );\n\n formStateSubjectRef.current.next({\n isSubmitting: true,\n });\n\n try {\n if (resolverRef.current) {\n const { errors, values } = await resolverRef.current(\n fieldValues,\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.errors = errors;\n fieldValues = values;\n } else {\n await validateForm(fieldsRef.current);\n }\n\n if (\n isEmptyObject(formStateRef.current.errors) &&\n Object.keys(formStateRef.current.errors).every((name) =>\n get(fieldValues, name),\n )\n ) {\n formStateSubjectRef.current.next({\n errors: {},\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n onInvalid && (await onInvalid(formStateRef.current.errors, e));\n shouldFocusError &&\n focusFieldBy(\n fieldsRef.current,\n (key: string) => get(formStateRef.current.errors, key),\n fieldsNamesRef.current,\n );\n }\n } catch {\n hasNoPromiseError = false;\n } finally {\n formStateRef.current.isSubmitted = true;\n formStateSubjectRef.current.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful:\n isEmptyObject(formStateRef.current.errors) && hasNoPromiseError,\n submitCount: formStateRef.current.submitCount + 1,\n errors: formStateRef.current.errors,\n });\n }\n },\n [shouldFocusError, isValidateAllFieldCriteria, criteriaMode],\n );\n\n const resetFromState = React.useCallback(\n (\n {\n keepErrors,\n keepDirty,\n keepIsSubmitted,\n keepTouched,\n keepDefaultValues,\n keepIsValid,\n keepSubmitCount,\n }: KeepStateOptions,\n values?: DefaultValues<TFieldValues>,\n ) => {\n if (!keepIsValid) {\n validFieldsRef.current = {};\n fieldsWithValidationRef.current = {};\n }\n\n watchFieldsRef.current = new Set();\n isWatchAllRef.current = false;\n\n formStateSubjectRef.current.next({\n submitCount: keepSubmitCount ? formStateRef.current.submitCount : 0,\n isDirty: keepDirty\n ? formStateRef.current.isDirty\n : keepDefaultValues\n ? deepEqual(values, defaultValuesRef.current)\n : false,\n isSubmitted: keepIsSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: keepIsValid\n ? formStateRef.current.isValid\n : !!updateIsValid(values),\n dirtyFields: keepDirty ? formStateRef.current.dirtyFields : {},\n touchedFields: keepTouched ? formStateRef.current.touchedFields : {},\n errors: keepErrors ? formStateRef.current.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n },\n [],\n );\n\n const reset: UseFormReset<TFieldValues> = (values, keepStateOptions = {}) => {\n const updatedValues = values || defaultValuesRef.current;\n\n if (isWeb && !keepStateOptions.keepValues) {\n for (const name of fieldsNamesRef.current) {\n const field = get(fieldsRef.current, name);\n if (field && field._f) {\n const inputRef = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(inputRef)) {\n try {\n inputRef.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n }\n\n !keepStateOptions.keepDefaultValues &&\n (defaultValuesRef.current = { ...updatedValues });\n\n if (!keepStateOptions.keepValues) {\n fieldsRef.current = {};\n\n controllerSubjectRef.current.next({\n values: { ...updatedValues },\n });\n\n watchSubjectRef.current.next({\n value: { ...updatedValues },\n });\n\n fieldArraySubjectRef.current.next({\n fields: { ...updatedValues },\n isReset: true,\n });\n }\n\n resetFromState(keepStateOptions, values);\n isMountedRef.current = false;\n };\n\n const setFocus: UseFormSetFocus<TFieldValues> = (name) =>\n get(fieldsRef.current, name)._f.ref.focus();\n\n React.useEffect(() => {\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next(formState) {\n if (shouldRenderFormState(formState, readFormStateRef.current, true)) {\n formStateRef.current = {\n ...formStateRef.current,\n ...formState,\n };\n updateFormState(formStateRef.current);\n }\n },\n });\n\n const useFieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next(state) {\n if (state.fields && state.name && readFormStateRef.current.isValid) {\n const values = getFieldsValues(fieldsRef);\n set(values, state.name, state.fields);\n updateIsValid(values);\n }\n },\n });\n\n resolverRef.current && readFormStateRef.current.isValid && updateIsValid();\n\n return () => {\n watchSubjectRef.current.unsubscribe();\n formStateSubscription.unsubscribe();\n useFieldArraySubscription.unsubscribe();\n };\n }, []);\n\n React.useEffect(() => {\n const isLiveInDom = (ref: Ref) =>\n !isHTMLElement(ref) || !document.contains(ref);\n\n isMountedRef.current = true;\n unregisterFieldsNamesRef.current.forEach((name) => {\n const field = get(fieldsRef.current, name) as Field;\n\n field &&\n (field._f.refs\n ? field._f.refs.every(isLiveInDom)\n : isLiveInDom(field._f.ref)) &&\n unregister(name as FieldPath<TFieldValues>);\n });\n unregisterFieldsNamesRef.current = new Set();\n });\n\n return {\n control: React.useMemo(\n () => ({\n register,\n isWatchAllRef,\n watchFieldsRef,\n getIsDirty,\n formStateSubjectRef,\n fieldArraySubjectRef,\n controllerSubjectRef,\n watchSubjectRef,\n watchInternal,\n fieldsRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayNamesRef,\n readFormStateRef,\n formStateRef,\n defaultValuesRef,\n fieldArrayDefaultValuesRef,\n unregister,\n shouldUnmountUnregister: shouldUnregister,\n }),\n [],\n ),\n formState: getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState,\n readFormStateRef,\n ),\n trigger,\n register,\n handleSubmit,\n watch: React.useCallback(watch, []),\n setValue: React.useCallback(setValue, [setInternalValues]),\n getValues: React.useCallback(getValues, []),\n reset: React.useCallback(reset, []),\n clearErrors: React.useCallback(clearErrors, []),\n unregister: React.useCallback(unregister, []),\n setError: React.useCallback(setError, []),\n setFocus: React.useCallback(setFocus, []),\n };\n}\n","import { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: ControllerProps<TFieldValues, TName>,\n) => props.render(useController<TFieldValues, TName>(props));\n\nexport { Controller };\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldArrayParentName from './logic/getNodeParentName';\nimport mapIds from './logic/mapId';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport appendAt from './utils/append';\nimport compact from './utils/compact';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isPrimitive from './utils/isPrimitive';\nimport isUndefined from './utils/isUndefined';\nimport moveArrayAt from './utils/move';\nimport omit from './utils/omit';\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 {\n FieldArray,\n FieldArrayMethodProps,\n FieldArrayPath,\n FieldArrayWithId,\n FieldErrors,\n FieldValues,\n UseFieldArrayProps,\n UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport const useFieldArray = <\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n TKeyName extends string = 'id',\n>({\n control,\n name,\n keyName = 'id' as TKeyName,\n shouldUnregister,\n}: UseFieldArrayProps<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n>): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> => {\n const methods = useFormContext();\n const focusNameRef = React.useRef('');\n const {\n isWatchAllRef,\n watchFieldsRef,\n getIsDirty,\n watchSubjectRef,\n fieldArraySubjectRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n formStateRef,\n formStateSubjectRef,\n readFormStateRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n unregister,\n shouldUnmountUnregister,\n } = control || methods.control;\n\n const [fields, setFields] = React.useState<\n Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\n >(\n mapIds(\n get(fieldsRef.current, name)\n ? get(getFieldsValues(fieldsRef), name)\n : get(fieldArrayDefaultValuesRef.current, getFieldArrayParentName(name))\n ? get(fieldArrayDefaultValuesRef.current, name, [])\n : get(defaultValuesRef.current, name, []),\n keyName,\n ),\n );\n\n set(fieldArrayDefaultValuesRef.current, name, [...fields]);\n fieldArrayNamesRef.current.add(name);\n\n const omitKey = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n >(\n fields: T,\n ) =>\n fields.map((field) =>\n omit((field || {}) as Record<TKeyName, any>, keyName),\n );\n\n const getCurrentFieldsValues = () => {\n const values = get(\n getFieldsValues(fieldsRef, defaultValuesRef.current),\n name,\n [],\n );\n\n return mapIds<TFieldValues, TKeyName>(\n get(fieldArrayDefaultValuesRef.current, name, []).map(\n (item: Partial<TFieldValues>, index: number) => ({\n ...item,\n ...values[index],\n }),\n ),\n keyName,\n );\n };\n\n const getFocusDetail = (\n index: number,\n options?: FieldArrayMethodProps,\n ): string =>\n options\n ? !isUndefined(options.focusIndex)\n ? `${name}.${options.focusIndex}`\n : options.focusName\n ? options.focusName\n : !options.shouldFocus\n ? ''\n : `${name}.${index}`\n : `${name}.${index}`;\n\n const resetFields = <T>(index?: T) =>\n convertToArrayPayload(index).forEach((currentIndex) =>\n set(\n fieldsRef.current,\n `${name}${isUndefined(currentIndex) ? '' : `.${currentIndex}`}`,\n isUndefined(currentIndex) ? [] : undefined,\n ),\n );\n\n const setFieldsAndNotify = (\n fieldsValues: Partial<FieldArray<TFieldValues, TFieldArrayName>>[] = [],\n ) => setFields(mapIds(fieldsValues, keyName));\n\n const cleanup = <T>(ref: T) =>\n !compact(get(ref, name, [])).length && unset(ref, name);\n\n const updateDirtyFieldsWithDefaultValues = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n >(\n updatedFieldArrayValues?: T,\n ) =>\n updatedFieldArrayValues &&\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n const batchStateUpdate = <T extends Function>(\n method: T,\n args: {\n argA?: unknown;\n argB?: unknown;\n },\n updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = [],\n shouldSet = true,\n ) => {\n if (get(fieldsRef.current, name)) {\n const output = method(get(fieldsRef.current, name), args.argA, args.argB);\n shouldSet && set(fieldsRef.current, name, output);\n }\n\n if (Array.isArray(get(formStateRef.current.errors, name))) {\n const output = method(\n get(formStateRef.current.errors, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.errors, name, output);\n cleanup(formStateRef.current.errors);\n }\n\n if (\n readFormStateRef.current.touchedFields &&\n get(formStateRef.current.touchedFields, name)\n ) {\n const output = method(\n get(formStateRef.current.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.touchedFields, name, output);\n cleanup(formStateRef.current.touchedFields);\n }\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n updateDirtyFieldsWithDefaultValues(updatedFieldArrayValues);\n cleanup(formStateRef.current.dirtyFields);\n }\n\n if (readFormStateRef.current.isValid) {\n set(\n validFieldsRef.current,\n name,\n method(get(validFieldsRef.current, name, []), args.argA),\n );\n cleanup(validFieldsRef.current);\n\n set(\n fieldsWithValidationRef.current,\n name,\n method(get(fieldsWithValidationRef.current, name, []), args.argA),\n );\n cleanup(fieldsWithValidationRef.current);\n }\n\n formStateSubjectRef.current.next({\n isDirty: getIsDirty(name, omitKey(updatedFieldArrayValues)),\n errors: formStateRef.current.errors as FieldErrors<TFieldValues>,\n isValid: formStateRef.current.isValid,\n });\n };\n\n const registerFieldArray = <T extends Object[]>(\n values: T,\n index = 0,\n parentName = '',\n ) =>\n values.forEach(\n (appendValueItem, valueIndex) =>\n !isPrimitive(appendValueItem) &&\n Object.entries(appendValueItem).forEach(([key, value]) => {\n const inputName = `${parentName || name}.${\n parentName ? valueIndex : index + valueIndex\n }.${key}`;\n\n Array.isArray(value)\n ? registerFieldArray(value, valueIndex, inputName)\n : set(fieldsRef.current, inputName, {\n _f: {\n ref: {\n name: inputName,\n },\n name: inputName,\n value,\n },\n });\n }),\n );\n\n const append = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const appendValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = appendAt(\n getCurrentFieldsValues(),\n appendValue,\n );\n const currentIndex = updatedFieldArrayValues.length - appendValue.length;\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n appendAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n false,\n );\n registerFieldArray(appendValue, currentIndex);\n\n focusNameRef.current = getFocusDetail(currentIndex, options);\n };\n\n const prepend = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const prependValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n prependValue,\n );\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n prependAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(prependValue);\n\n focusNameRef.current = getFocusDetail(0, options);\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(getCurrentFieldsValues(), index);\n resetFields(index);\n setFieldsAndNotify(updatedFieldArrayValues);\n batchStateUpdate(\n removeArrayAt,\n {\n argA: index,\n },\n updatedFieldArrayValues,\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 const insertValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = insertAt(\n getCurrentFieldsValues(),\n index,\n insertValue,\n );\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n insertAt,\n {\n argA: index,\n argB: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(insertValue, index);\n\n focusNameRef.current = getFocusDetail(index, options);\n };\n\n const swap = (indexA: number, indexB: number) => {\n const fieldValues = getCurrentFieldsValues();\n swapArrayAt(fieldValues, indexA, indexB);\n batchStateUpdate(\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n fieldValues,\n false,\n );\n setFieldsAndNotify(fieldValues);\n };\n\n const move = (from: number, to: number) => {\n const fieldValues = getCurrentFieldsValues();\n moveArrayAt(fieldValues, from, to);\n setFieldsAndNotify(fieldValues);\n batchStateUpdate(\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n fieldValues,\n false,\n );\n };\n\n React.useEffect(() => {\n if (isWatchAllRef.current) {\n formStateSubjectRef.current.next({});\n } else {\n for (const watchField of watchFieldsRef.current) {\n if (name.startsWith(watchField)) {\n formStateSubjectRef.current.next({});\n break;\n }\n }\n }\n\n watchSubjectRef.current.next({\n name,\n value: get(\n getFieldsValues(fieldsRef, defaultValuesRef.current),\n name,\n [],\n ),\n });\n\n focusNameRef.current &&\n focusFieldBy(fieldsRef.current, (key: string) =>\n key.startsWith(focusNameRef.current),\n );\n\n focusNameRef.current = '';\n\n fieldArraySubjectRef.current.next({\n name,\n fields: omitKey([...fields]),\n });\n }, [fields, name]);\n\n React.useEffect(() => {\n const fieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next({ name: inputFieldArrayName, fields, isReset }) {\n if (isReset) {\n unset(fieldsRef.current, inputFieldArrayName || name);\n\n inputFieldArrayName\n ? set(\n fieldArrayDefaultValuesRef.current,\n inputFieldArrayName,\n fields,\n )\n : (fieldArrayDefaultValuesRef.current = fields);\n\n setFieldsAndNotify(get(fieldArrayDefaultValuesRef.current, name));\n }\n },\n });\n !get(fieldsRef.current, name) && set(fieldsRef.current, name, []);\n\n return () => {\n fieldArraySubscription.unsubscribe();\n (shouldUnmountUnregister || shouldUnregister) && unregister(name);\n };\n }, []);\n\n return {\n swap: React.useCallback(swap, [name]),\n move: React.useCallback(move, [name]),\n prepend: React.useCallback(prepend, [name]),\n append: React.useCallback(append, [name]),\n remove: React.useCallback(remove, [name]),\n insert: React.useCallback(insert, [name]),\n fields: fields as FieldArrayWithId<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n >[],\n };\n};\n","export default ({\n isOnBlur,\n isOnChange,\n isOnTouch,\n isTouched,\n isReValidateOnBlur,\n isReValidateOnChange,\n isBlurEvent,\n isSubmitted,\n isOnAll,\n}: {\n isOnAll?: boolean;\n isOnBlur?: boolean;\n isOnChange?: boolean;\n isReValidateOnBlur?: boolean;\n isReValidateOnChange?: boolean;\n isBlurEvent?: boolean;\n isSubmitted?: boolean;\n isOnTouch?: boolean;\n isTouched?: boolean;\n}) => {\n if (isOnAll) {\n return false;\n } else if (!isSubmitted && isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? isReValidateOnBlur : isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? isReValidateOnChange : isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","import { 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 * as React from 'react';\n\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport {\n Control,\n DeepPartial,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n>(props: {\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): UnpackNestedValue<DeepPartial<TFieldValues>>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: {\n name: TName;\n defaultValue?: FieldPathValue<TFieldValues, TName>;\n control?: Control<TFieldValues>;\n}): FieldPathValue<TFieldValues, TName>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues>[] = FieldPath<TFieldValues>[],\n>(props: {\n name: TName;\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): FieldPathValues<TFieldValues, TName>;\nexport function useWatch<TFieldValues>(props?: UseWatchProps<TFieldValues>) {\n const { control, name, defaultValue } = props || {};\n const methods = useFormContext();\n const nameRef = React.useRef(name);\n nameRef.current = name;\n\n const { watchInternal, watchSubjectRef } = control || methods.control;\n const [value, updateValue] = React.useState<unknown>(\n isUndefined(defaultValue)\n ? watchInternal(name as InternalFieldName)\n : defaultValue,\n );\n\n React.useEffect(() => {\n watchInternal(name as InternalFieldName);\n\n const watchSubscription = watchSubjectRef.current.subscribe({\n next: ({ name: inputName, value }) =>\n (!nameRef.current ||\n !inputName ||\n convertToArrayPayload(nameRef.current).some(\n (fieldName) =>\n inputName &&\n fieldName &&\n (fieldName.startsWith(inputName as InternalFieldName) ||\n inputName.startsWith(fieldName as InternalFieldName)),\n )) &&\n updateValue(\n isString(inputName) &&\n nameRef.current === inputName &&\n !isUndefined(value)\n ? value\n : watchInternal(\n nameRef.current as string,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n ),\n });\n\n return () => watchSubscription.unsubscribe();\n }, []);\n\n return value;\n}\n"],"names":["element","type","value","isObjectType","isNullOrUndefined","Array","isArray","Date","name","substring","search","names","some","current","getNodeParentName","filter","Boolean","val","undefined","obj","path","defaultValue","result","compact","split","reduce","key","isUndefined","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","source","copy","FormContext","React","createContext","displayName","useFormContext","useContext","isProxyEnabled","formState","readFormStateRef","localReadFormStateRef","isRoot","Proxy","get","prop","isObject","Object","keys","length","formStateData","omit","isEmptyObject","find","window","HTMLElement","document","isWeb","useFormState","props","control","methods","formStateRef","formStateSubjectRef","nameRef","useRef","updateFormState","useState","readFormState","isDirty","dirtyFields","touchedFields","isValidating","isValid","errors","useEffect","formStateSubscription","subscribe","next","convertToArrayPayload","includes","shouldRenderFormState","unsubscribe","getProxyFormState","useController","rules","shouldUnregister","defaultValuesRef","register","fieldsRef","unregister","fieldArrayNamesRef","controllerSubjectRef","shouldUnmountUnregister","onChange","onBlur","ref","setInputStateValue","_f","isNameInFieldArray","controllerSubscription","data","values","mount","field","event","target","isCheckBoxInput","checked","getControllerValue","elm","fieldState","defineProperties","invalid","isTouched","error","validateAllFieldCriteria","message","types","[object Object]","test","input","replace","set","object","index","tempPath","isKey","stringToPath","lastIndex","newValue","objValue","isNaN","focusFieldBy","fields","callback","fieldsNames","focus","refs","getFieldsValues","output","disabled","every","d","performance","now","c","r","Math","random","toString","keyName","map","generateId","deepEqual","object1","object2","isErrorObject","isPrimitive","isValidElement","keys1","keys2","val1","val2","setDirtyFields","defaultValues","parentNode","parentName","deepMerge","targetValue","sourceValue","slice","append","fill","insert","from","to","splice","prepend","indexes","i","temp","removeAtIndexes","sort","a","b","indexA","indexB","unset","updatePath","childObject","baseGet","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","isBoolean","getFields","fieldsRefs","currentFields","defaultResult","validResult","options","option","attributes","valueAsNumber","valueAsDate","setValueAs","NaN","defaultReturn","previous","getFieldValue","isFileInput","files","isRadioInput","getRadioValue","isMultipleSelect","selected","isCheckBox","getCheckboxValue","getFieldValueAs","mounted","required","min","max","maxLength","minLength","pattern","validate","isString","RegExp","getValidateError","isMessage","validationData","isRegex","async","inputValue","isRadio","isRadioOrCheckbox","isEmpty","appendErrorsCurry","appendErrors","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","getValueAndMessage","exceedMin","maxOutput","minOutput","valueDate","valueNumber","parseFloat","maxLengthOutput","minLengthOutput","patternValue","match","validateRef","isFunction","validateError","validationResult","validateFunction","entries","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","Subscription","this","tearDown","tearDowns","push","teardown","Subscriber","observer","subscription","add","closed","Subject","observers","subscriber","isWindowUndefined","render","Provider","children","focusNameRef","isWatchAllRef","watchFieldsRef","getIsDirty","watchSubjectRef","fieldArraySubjectRef","validFieldsRef","fieldsWithValidationRef","fieldArrayDefaultValuesRef","setFields","mapIds","getFieldArrayParentName","omitKey","getCurrentFieldsValues","getFocusDetail","focusIndex","focusName","shouldFocus","setFieldsAndNotify","fieldsValues","cleanup","batchStateUpdate","method","args","updatedFieldArrayValues","shouldSet","argA","argB","setFieldArrayDirtyFields","updateDirtyFieldsWithDefaultValues","registerFieldArray","forEach","appendValueItem","valueIndex","inputName","watchField","startsWith","fieldArraySubscription","inputFieldArrayName","isReset","swap","useCallback","fieldValues","swapArrayAt","move","moveArrayAt","prependValue","prependAt","fillEmptyArray","appendValue","appendAt","currentIndex","remove","removeArrayAt","resetFields","insertValue","insertAt","reValidateMode","resolver","context","shouldFocusError","criteriaMode","fieldsNamesRef","Set","unregisterFieldsNamesRef","isMountedRef","contextRef","resolverRef","validationMode","getValidationModes","isValidateAllFieldCriteria","isSubmitted","submitCount","isSubmitting","isSubmitSuccessful","getIsValid","shouldRenderBaseOnError","shouldRender","state","isWatched","previousError","shouldReRender","updatedFormState","setFieldValue","rawValue","shouldRegister","isHTMLElement","radioRef","selectRef","checkboxRef","shouldDirty","updateAndGetDirtyState","shouldValidate","trigger","formValues","isFieldDirty","isDirtyFieldExist","previousIsDirty","isChanged","executeValidation","skipReRender","validateField","executeSchemaOrResolverValidation","currentNames","validateForm","fieldError","schemaResult","Promise","all","fieldName","setInternalValues","inputKey","has","isFieldWatched","updateValidAndValue","isWithinRefCallback","defaultChecked","hasValidation","then","handleChange","inputType","isBlurEvent","isReValidateOnBlur","isReValidateOnChange","shouldSkipValidation","skipValidation","previousFormIsValid","parentNodeName","currentError","updateIsValid","previousIsValid","watchInternal","fieldNames","isGlobal","isArrayNames","delete","keepIsValid","keepError","keepValue","keepDirty","keepTouched","keepDefaultValue","registerFieldRef","isRadioOrCheckboxFunction","contains","isInitialRegister","handleSubmit","onValid","onInvalid","e","preventDefault","persist","hasNoPromiseError","resetFromState","keepErrors","keepIsSubmitted","keepDefaultValues","keepSubmitCount","useFieldArraySubscription","isLiveInDom","useMemo","watch","info","setValue","isFieldArray","getValues","reset","keepStateOptions","updatedValues","keepValues","inputRef","closest","clearErrors","setError","setFocus","updateValue","watchSubscription"],"mappings":"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"}