react-hook-form 7.0.0-rc.8 → 7.0.3

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.umd.development.js","sources":["../src/utils/isUndefined.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/utils/compact.ts","../src/utils/get.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/utils/omit.ts","../src/logic/focusFieldBy.ts","../src/utils/isPrimitive.ts","../src/utils/deepMerge.ts","../src/utils/deepEqual.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/utils/isEmptyObject.ts","../src/constants.ts","../src/logic/shouldRenderFormState.ts","../src/logic/getFieldsValues.ts","../src/logic/getRadioValue.ts","../src/logic/getMultipleSelectValue.ts","../src/utils/isRadioInput.ts","../src/utils/isFileInput.ts","../src/utils/isCheckBoxInput.ts","../src/utils/isMultipleSelect.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getFieldValue.ts","../src/logic/isErrorStateChanged.ts","../src/utils/isRegex.ts","../src/logic/getValueAndMessage.ts","../src/utils/isString.ts","../src/utils/isFunction.ts","../src/utils/isBoolean.ts","../src/utils/isMessage.ts","../src/logic/getValidateError.ts","../src/logic/appendErrors.ts","../src/logic/validateField.ts","../src/logic/skipValidation.ts","../src/logic/getNodeParentName.ts","../src/logic/getProxyFormState.ts","../src/utils/Subject.ts","../src/utils/isWeb.ts","../src/utils/isProxyEnabled.ts","../src/utils/unset.ts","../src/utils/getValidationModes.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/isHTMLElement.ts","../src/logic/getFields.ts","../src/useForm.ts","../src/useFormContext.tsx","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/remove.ts","../src/utils/move.ts","../src/utils/swap.ts","../src/utils/prepend.ts","../src/utils/append.ts","../src/utils/insert.ts","../src/utils/fillEmptyArray.ts","../src/useFieldArray.ts","../src/useFormState.ts","../src/logic/getControllerValue.ts","../src/logic/isNameInFieldArray.ts","../src/useController.ts","../src/useWatch.ts","../src/controller.tsx"],"sourcesContent":["export default (val: unknown): val is undefined => val === undefined;\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 (value: any[]) => value.filter(Boolean);\n","import isUndefined from './isUndefined';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport compact from './compact';\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","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 isObject from './isObject';\nimport isKey from './isKey';\nimport stringToPath from './stringToPath';\nimport { FieldValues } from '../types';\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","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 isUndefined from '../utils/isUndefined';\nimport isObject from '../utils/isObject';\nimport { get } from '../utils';\nimport { FieldRefs, InternalFieldName } from '../types';\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 isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\nimport { Primitive } from '../types';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\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 * as React from 'react';\nimport isObject from '../utils/isObject';\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 set from '../utils/set';\nimport { deepMerge } from '../utils/deepMerge';\nimport deepEqual from '../utils/deepEqual';\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 { EmptyObject } from '../types';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\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","import isEmptyObject from '../utils/isEmptyObject';\nimport { ReadFormState } from '../types';\nimport { VALIDATION_MODE } from '../constants';\n\nexport default <T, K extends ReadFormState>(\n formState: T,\n readFormStateRef: K,\n isRoot?: boolean,\n) =>\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","import * as React from 'react';\nimport set from '../utils/set';\nimport { FieldRefs, FieldValues } from '../types';\nimport omit from '../utils/omit';\n\nconst getFieldsValues = (\n fieldsRef: React.MutableRefObject<FieldRefs>,\n defaultValuesRef: React.MutableRefObject<FieldValues> = { current: {} },\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.current,\n ...output,\n };\n};\n\nexport default getFieldsValues;\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","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => value);\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","import { FieldElement } from '../types';\nimport { SELECT } from '../constants';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-multiple`;\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)\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","import getRadioValue from './getRadioValue';\nimport getMultipleSelectValue from './getMultipleSelectValue';\nimport isRadioInput from '../utils/isRadioInput';\nimport isFileInput from '../utils/isFileInput';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport isUndefined from '../utils/isUndefined';\nimport { Field } from '../types';\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","import get from '../utils/get';\nimport isUndefined from '../utils/isUndefined';\nimport deepEqual from '../utils/deepEqual';\nimport {\n FieldValues,\n InternalFieldName,\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldError,\n} from '../types';\n\nexport default <TFieldValues extends FieldValues>({\n errors,\n name,\n error,\n validFields,\n fieldsWithValidation,\n}: {\n errors: FieldErrors<TFieldValues>;\n error: FieldError | undefined;\n name: InternalFieldName;\n validFields: FieldNamesMarkedBoolean<TFieldValues>;\n fieldsWithValidation: FieldNamesMarkedBoolean<TFieldValues>;\n}): boolean => {\n const isValid = isUndefined(error);\n const previousError = get(errors, name);\n\n return (\n (isValid && !!previousError) ||\n (!isValid && !deepEqual(previousError, error, true)) ||\n (isValid && get(fieldsWithValidation, name) && !get(validFields, name))\n );\n};\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport { ValidationRule } from '../types';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","export default (value: unknown): value is string => typeof value === 'string';\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","import * as React from 'react';\nimport isString from '../utils/isString';\nimport { Message } from '../types';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","import isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\nimport { FieldError, ValidateResult, Ref } from '../types';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (isMessage(result) || (isBoolean(result) && !result)) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import {\n InternalFieldName,\n ValidateResult,\n InternalFieldErrors,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","import getRadioValue from './getRadioValue';\nimport getCheckboxValue from './getCheckboxValue';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isRadioInput from '../utils/isRadioInput';\nimport getValueAndMessage from './getValueAndMessage';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isString from '../utils/isString';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isObject from '../utils/isObject';\nimport isFunction from '../utils/isFunction';\nimport isRegex from '../utils/isRegex';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\nimport getValidateError from './getValidateError';\nimport appendErrors from './appendErrors';\nimport { INPUT_VALIDATION_RULES } from '../constants';\nimport { Field, Message, FieldError, InternalFieldErrors } from '../types';\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 },\n }: Field,\n validateAllFieldCriteria: boolean,\n): Promise<InternalFieldErrors> => {\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n !inputValue || (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) && !patternValue.test(inputValue)) {\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","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","export default (name: string) => name.substring(0, name.search(/.\\d/)) || name;\n","import * as React from 'react';\nimport { FormState, FormStateProxy, ReadFormState } from '../types';\nimport { VALIDATION_MODE } from '../constants';\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","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 { UNDEFINED } from '../constants';\n\nexport default typeof window !== UNDEFINED &&\n typeof window.HTMLElement !== UNDEFINED &&\n typeof document !== UNDEFINED;\n","import isWeb from './isWeb';\nimport { UNDEFINED } from '../constants';\n\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\n\nexport default isProxyEnabled;\n","import isKey from './isKey';\nimport stringToPath from './stringToPath';\nimport isEmptyObject from './isEmptyObject';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport isBoolean from './isBoolean';\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 { 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","import isRadioInput from './isRadioInput';\nimport isCheckBoxInput from './isCheckBoxInput';\nimport { FieldElement } from '../types';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","export default (value: any): value is HTMLElement =>\n value instanceof HTMLElement;\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 * as React from 'react';\nimport focusFieldBy from './logic/focusFieldBy';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldValue from './logic/getFieldValue';\nimport isErrorStateChanged from './logic/isErrorStateChanged';\nimport validateField from './logic/validateField';\nimport skipValidation from './logic/skipValidation';\nimport getNodeParentName from './logic/getNodeParentName';\nimport deepEqual from './utils/deepEqual';\nimport getProxyFormState from './logic/getProxyFormState';\nimport Subject from './utils/Subject';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport isCheckBoxInput from './utils/isCheckBoxInput';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isRadioInput from './utils/isRadioInput';\nimport isFileInput from './utils/isFileInput';\nimport isFunction from './utils/isFunction';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport get from './utils/get';\nimport set from './utils/set';\nimport unset from './utils/unset';\nimport getValidationModes from './utils/getValidationModes';\nimport isMultipleSelect from './utils/isMultipleSelect';\nimport compact from './utils/compact';\nimport isNullOrUndefined from './utils/isNullOrUndefined';\nimport isRadioOrCheckboxFunction from './utils/isRadioOrCheckbox';\nimport isWeb from './utils/isWeb';\nimport omit from './utils/omit';\nimport isHTMLElement from './utils/isHTMLElement';\nimport getFields from './logic/getFields';\nimport { EVENTS, UNDEFINED, VALIDATION_MODE } from './constants';\nimport {\n UseFormReturn,\n FieldValues,\n UnpackNestedValue,\n FieldName,\n InternalFieldName,\n Field,\n FieldRefs,\n UseFormProps,\n RegisterOptions,\n ReadFormState,\n Ref,\n SetValueConfig,\n FormState,\n FieldNamesMarkedBoolean,\n InternalNameSet,\n DefaultValues,\n FieldError,\n SetFieldValue,\n FieldArrayDefaultValues,\n UseFormRegisterReturn,\n FieldPath,\n WatchObserver,\n KeepStateOptions,\n EventType,\n UseFormTrigger,\n UseFormSetValue,\n UseFormUnregister,\n UseFormClearErrors,\n UseFormSetError,\n UseFormRegister,\n UseFormHandleSubmit,\n UseFormReset,\n WatchInternal,\n GetFormIsDirty,\n ChangeHandler,\n PathValue,\n UseFormGetValues,\n UseFormWatch,\n Path,\n DeepPartial,\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 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(\n new Subject<Partial<FormState<TFieldValues>>>(),\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, setFormState] = 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 let shouldReRender =\n shouldRender ||\n isErrorStateChanged<TFieldValues>({\n errors: formStateRef.current.errors,\n error,\n name,\n validFields: validFieldsRef.current,\n fieldsWithValidation: fieldsWithValidationRef.current,\n });\n const previousError = get(formStateRef.current.errors, 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 };\n\n formStateRef.current = {\n ...formStateRef.current,\n ...updatedFormState,\n };\n\n formStateSubjectRef.current.next(isWatched ? {} : updatedFormState);\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 = rawValue;\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);\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n }\n },\n [],\n );\n\n const getFormIsDirty: GetFormIsDirty = React.useCallback((name, data) => {\n if (readFormStateRef.current.isDirty) {\n const formValues = getFieldsValues(fieldsRef);\n\n name && data && set(formValues, name, data);\n\n return !deepEqual(formValues, defaultValuesRef.current);\n }\n\n return false;\n }, []);\n\n const updateAndGetDirtyState = React.useCallback(\n (\n name: InternalFieldName,\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 getFieldValue(get(fieldsRef.current, name) as Field),\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 const state = {\n isDirty: getFormIsDirty(),\n dirtyFields: formStateRef.current.dirtyFields,\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, defaultValuesRef),\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 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 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\n const trigger: UseFormTrigger<TFieldValues> = React.useCallback(\n async (name) => {\n const fields = isUndefined(name)\n ? Object.keys(fieldsRef.current)\n : Array.isArray(name)\n ? name\n : [name];\n let isValid;\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n isValid = isEmptyObject(\n await executeSchemaOrResolverValidation(\n fields,\n isUndefined(name)\n ? undefined\n : (fields as FieldName<TFieldValues>[]),\n ),\n );\n } else {\n isUndefined(name)\n ? await validateForm(fieldsRef.current)\n : await Promise.all(\n fields.map(async (data) => await executeValidation(data, null)),\n );\n }\n\n formStateSubjectRef.current.next({\n errors: formStateRef.current.errors,\n isValidating: false,\n isValid: resolverRef.current ? isValid : getIsValid(),\n });\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\n 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 updateValueAndGetDefault = (name: InternalFieldName) => {\n let defaultValue;\n const field = get(fieldsRef.current, name) as Field;\n\n if (\n field &&\n (!isEmptyObject(defaultValuesRef.current) || !isUndefined(field._f.value))\n ) {\n defaultValue = isUndefined(field._f.value)\n ? get(defaultValuesRef.current, name)\n : field._f.value;\n\n if (!isUndefined(defaultValue)) {\n setFieldValue(name, defaultValue);\n }\n }\n\n return defaultValue;\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n isMountedRef.current = true;\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 dirtyFields: formStateRef.current.dirtyFields,\n isDirty: getFormIsDirty(name, value),\n });\n }\n }\n\n field && !field._f\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 const inputValue = inputType ? getFieldValue(field) : value;\n const isBlurEvent = type === EVENTS.BLUR;\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = getValidationModes(reValidateMode);\n const shouldSkipValidation = 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, false);\n\n if (isBlurEvent && !get(formStateRef.current.touchedFields, name)) {\n set(formStateRef.current.touchedFields, name, true);\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(isWatched ? {} : state)\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, defaultValuesRef),\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?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[],\n ) => {\n const values = isMountedRef.current\n ? getFieldsValues(fieldsRef, defaultValuesRef)\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(fieldsRef, defaultValuesRef),\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 (Array.isArray(name) ? name : [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 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 ? getValues()\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 | 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 ? Array.isArray(name)\n ? name\n : [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 !options.keepDefaultValue && 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: getFormIsDirty() }),\n ...(resolverRef.current ? {} : { isValid: getIsValid() }),\n });\n\n if (!options.keepIsValid) {\n updateIsValid();\n }\n };\n\n const registerFieldRef = (\n name: InternalFieldName,\n ref: HTMLInputElement,\n options?: RegisterOptions,\n ): ((name: InternalFieldName) => void) | void => {\n let field = get(fieldsRef.current, name) as Field;\n\n if (field) {\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n\n if (\n (isRadioOrCheckbox\n ? Array.isArray(field._f.refs) &&\n compact(field._f.refs).find(\n (option) => ref.value === option.value && option === ref,\n )\n : ref === field._f.ref) ||\n !field\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 = updateValueAndGetDefault(name);\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 if (options) {\n if (\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 &&\n !isEmptyObject(error) &&\n setFormState({ ...formStateRef.current, isValid: getIsValid() });\n });\n }\n }\n }\n };\n\n const register: UseFormRegister<TFieldValues> = React.useCallback(\n (name, options) => {\n set(fieldsRef.current, name, {\n _f: {\n ...(get(fieldsRef.current, name)\n ? {\n ref: get(fieldsRef.current, name)._f.ref,\n ...get(fieldsRef.current, name)._f,\n }\n : { ref: { name } }),\n name,\n ...options,\n },\n });\n options && set(fieldsWithValidationRef.current, name, true);\n fieldsNamesRef.current.add(name);\n\n updateValueAndGetDefault(name);\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) =>\n ref && registerFieldRef(name, ref, options),\n };\n },\n [defaultValuesRef.current],\n );\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> = React.useCallback(\n (onValid, onInvalid) => async (e) => {\n if (e && e.preventDefault) {\n e.preventDefault();\n e.persist();\n }\n let fieldValues = {\n ...defaultValuesRef.current,\n ...getFieldsValues(fieldsRef, defaultValuesRef),\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 } finally {\n formStateRef.current.isSubmitted = true;\n formStateSubjectRef.current.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(formStateRef.current.errors),\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 keepErrors,\n keepDirty,\n keepIsSubmitted,\n keepTouched,\n keepIsValid,\n keepSubmitCount,\n }: KeepStateOptions) => {\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 ? formStateRef.current.isDirty : false,\n isSubmitted: keepIsSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: keepIsValid\n ? formStateRef.current.isValid\n : !validationMode.isOnSubmit,\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 field of Object.values(fieldsRef.current)) {\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);\n };\n\n React.useEffect(() => {\n isMountedRef.current = true;\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next(formState: Partial<FormState<TFieldValues>> = {}) {\n if (shouldRenderFormState(formState, readFormStateRef.current, true)) {\n formStateRef.current = {\n ...formStateRef.current,\n ...formState,\n };\n setFormState(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 return {\n control: React.useMemo(\n () => ({\n register,\n isWatchAllRef,\n watchFieldsRef,\n getFormIsDirty,\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 }),\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 };\n}\n","import * as React from 'react';\nimport { UseFormReturn, FieldValues, FormProviderProps } from './types';\nimport omit from './utils/omit';\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 { 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';\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 isUndefined from './isUndefined';\nimport compact from './compact';\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 (Array.isArray(index) ? index : [index]).sort((a, b) => a - b),\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","export default <T>(data: T[], indexA: number, indexB: number): void => {\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\n};\n","export default function prepend<T>(data: T[], value: T | T[]): T[] {\n return [...(Array.isArray(value) ? value : [value]), ...data];\n}\n","export default function append<T>(data: T[], value: T | T[]): T[] {\n return [...data, ...(Array.isArray(value) ? value : [value])];\n}\n","export 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 ...(Array.isArray(value) ? value : [value]),\n ...data.slice(index),\n ];\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? Array(value.length).fill(undefined) : undefined;\n","import * as React from 'react';\nimport { useFormContext } from './useFormContext';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport mapIds from './logic/mapId';\nimport getFieldArrayParentName from './logic/getNodeParentName';\nimport get from './utils/get';\nimport set from './utils/set';\nimport removeArrayAt from './utils/remove';\nimport unset from './utils/unset';\nimport moveArrayAt from './utils/move';\nimport swapArrayAt from './utils/swap';\nimport prependAt from './utils/prepend';\nimport appendAt from './utils/append';\nimport insertAt from './utils/insert';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport compact from './utils/compact';\nimport isUndefined from './utils/isUndefined';\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFieldsValues from './logic/getFieldsValues';\nimport omit from './utils/omit';\nimport {\n FieldValues,\n UseFieldArrayProps,\n FieldArrayWithId,\n UseFieldArrayReturn,\n FieldArray,\n FieldArrayMethodProps,\n FieldErrors,\n FieldArrayPath,\n} from './types';\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}: 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 getFormIsDirty,\n watchSubjectRef,\n fieldArraySubjectRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n formStateRef,\n formStateSubjectRef,\n readFormStateRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n } = control || methods.control;\n\n const [fields, setFields] = React.useState<\n Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\n >(\n mapIds(\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, defaultValuesRef), 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 (Array.isArray(index) ? index : [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: getFormIsDirty(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((appendValueItem, valueIndex) =>\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 = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = appendAt(\n getCurrentFieldsValues(),\n appendValue,\n );\n const currentIndex = updatedFieldArrayValues.length - appendValue.length;\n setFieldsAndNotify(updatedFieldArrayValues);\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 = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n prependValue,\n );\n setFieldsAndNotify(updatedFieldArrayValues);\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 = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = insertAt(\n getCurrentFieldsValues(),\n index,\n insertValue,\n );\n setFieldsAndNotify(updatedFieldArrayValues);\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, defaultValuesRef), name, []),\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 fieldArrayDefaultValuesRef.current = getFieldsValues(fieldsRef);\n fieldArraySubscription.unsubscribe();\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","import * as React from 'react';\nimport { useFormContext } from './useFormContext';\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport {\n FieldValues,\n FormState,\n UseFormStateReturn,\n UseFormStateProps,\n} from './types';\n\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>({\n control,\n}: UseFormStateProps<TFieldValues> = {}): UseFormStateReturn<TFieldValues> {\n const methods = useFormContext();\n const { formStateRef, formStateSubjectRef, readFormStateRef } =\n control || methods.control;\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 shouldRenderFormState(formState, readFormState.current) &&\n updateFormState({\n ...formStateRef.current,\n ...formState,\n });\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 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 getNodeParentName from './getNodeParentName';\nimport { InternalFieldName } from '../types';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n [...names].some((current) => getNodeParentName(name) === current);\n","import * as React from 'react';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\nimport isUndefined from './utils/isUndefined';\nimport get from './utils/get';\nimport getControllerValue from './logic/getControllerValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport { EVENTS } from './constants';\nimport {\n FieldValues,\n UseControllerProps,\n UseControllerReturn,\n InternalFieldName,\n} from './types';\n\nexport function useController<TFieldValues extends FieldValues = FieldValues>({\n name,\n rules,\n defaultValue,\n control,\n}: UseControllerProps<TFieldValues>): UseControllerReturn<TFieldValues> {\n const methods = useFormContext<TFieldValues>();\n const {\n defaultValuesRef,\n register,\n fieldsRef,\n fieldArrayNamesRef,\n controllerSubjectRef,\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 });\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 () => controllerSubscription.unsubscribe();\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,\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 * as React from 'react';\nimport { useFormContext } from './useFormContext';\nimport isUndefined from './utils/isUndefined';\nimport isString from './utils/isString';\nimport {\n DeepPartial,\n UseWatchProps,\n FieldValues,\n UnpackNestedValue,\n Control,\n FieldPath,\n InternalFieldName,\n FieldPathValue,\n FieldPathValues,\n} from './types';\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\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 (!name ||\n !inputName ||\n (Array.isArray(name) ? name : [name]).some(\n (fieldName) =>\n inputName &&\n fieldName &&\n inputName.startsWith(fieldName as InternalFieldName),\n )) &&\n updateValue(\n isString(inputName) && name === inputName && !isUndefined(value)\n ? value\n : watchInternal(\n name as string,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n );\n },\n });\n\n return () => watchSubscription.unsubscribe();\n }, [name]);\n\n return value;\n}\n","import { useController } from './useController';\nimport { ControllerProps, FieldValues } from './types';\n\nconst Controller = <TFieldValues extends FieldValues = FieldValues>(\n props: ControllerProps<TFieldValues>,\n) => props.render(useController(props));\n\nexport { Controller };\n"],"names":["React","isCheckBox","getFieldArrayParentName","append","appendAt","prepend","prependAt","insert","insertAt"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.development.js","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getControllerValue.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/isWeb.ts","../src/utils/isProxyEnabled.ts","../src/useFormState.ts","../src/useController.ts","../src/controller.tsx","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/getFieldsValues.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/utils/deepMerge.ts","../src/logic/setFieldArrayDirtyFields.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/useFieldArray.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/getMultipleSelectValue.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/isErrorStateChanged.ts","../src/logic/skipValidation.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/isRadioOrCheckbox.ts","../src/utils/Subject.ts","../src/useForm.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","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","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';\n\nexport default <T, K extends ReadFormState>(\n formState: T,\n readFormStateRef: K,\n isRoot?: boolean,\n) =>\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","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 isProxyEnabled from './utils/isProxyEnabled';\nimport {\n FieldValues,\n FormState,\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 methods = useFormContext();\n const { formStateRef, formStateSubjectRef, readFormStateRef } =\n (props && props.control) || methods.control;\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 shouldRenderFormState(formState, readFormState.current) &&\n updateFormState({\n ...formStateRef.current,\n ...formState,\n });\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}: UseControllerProps<TFieldValues, TName>): UseControllerReturn<\n TFieldValues,\n TName\n> {\n const methods = useFormContext<TFieldValues>();\n const {\n defaultValuesRef,\n register,\n fieldsRef,\n fieldArrayNamesRef,\n controllerSubjectRef,\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 });\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 (ref as (instance: any) => void)({\n target: value,\n });\n\n return () => controllerSubscription.unsubscribe();\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,\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 { 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 {\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: React.MutableRefObject<FieldValues> = { current: {} },\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.current,\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 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 { 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","export default function append<T>(data: T[], value: T | T[]): T[] {\n return [...data, ...(Array.isArray(value) ? value : [value])];\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? Array(value.length).fill(undefined) : undefined;\n","export 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 ...(Array.isArray(value) ? value : [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","export default function prepend<T>(data: T[], value: T | T[]): T[] {\n return [...(Array.isArray(value) ? value : [value]), ...data];\n}\n","import compact from './compact';\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 (Array.isArray(index) ? index : [index]).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 * 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 fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\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}: 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 getFormIsDirty,\n watchSubjectRef,\n fieldArraySubjectRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n formStateRef,\n formStateSubjectRef,\n readFormStateRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n } = control || methods.control;\n\n const [fields, setFields] = React.useState<\n Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\n >(\n mapIds(\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, defaultValuesRef), 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 (Array.isArray(index) ? index : [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: getFormIsDirty(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((appendValueItem, valueIndex) =>\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 = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = appendAt(\n getCurrentFieldsValues(),\n appendValue,\n );\n const currentIndex = updatedFieldArrayValues.length - appendValue.length;\n setFieldsAndNotify(updatedFieldArrayValues);\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 = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n prependValue,\n );\n setFieldsAndNotify(updatedFieldArrayValues);\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 = Array.isArray(value) ? value : [value];\n const updatedFieldArrayValues = insertAt(\n getCurrentFieldsValues(),\n index,\n insertValue,\n );\n setFieldsAndNotify(updatedFieldArrayValues);\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, defaultValuesRef), name, []),\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 fieldArrayDefaultValuesRef.current = getFieldsValues(fieldsRef);\n fieldArraySubscription.unsubscribe();\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","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","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => 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","import {\n FieldError,\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <TFieldValues extends FieldValues>({\n errors,\n name,\n error,\n validFields,\n fieldsWithValidation,\n}: {\n errors: FieldErrors<TFieldValues>;\n error: FieldError | undefined;\n name: InternalFieldName;\n validFields: FieldNamesMarkedBoolean<TFieldValues>;\n fieldsWithValidation: FieldNamesMarkedBoolean<TFieldValues>;\n}): boolean => {\n const isValid = isUndefined(error);\n const previousError = get(errors, name);\n\n return (\n (isValid && !!previousError) ||\n (!isValid && !deepEqual(previousError, error, true)) ||\n (isValid && get(fieldsWithValidation, name) && !get(validFields, name))\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","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 (isMessage(result) || (isBoolean(result) && !result)) {\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 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 },\n }: Field,\n validateAllFieldCriteria: boolean,\n): Promise<InternalFieldErrors> => {\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n inputValue === '' || (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) && !patternValue.test(inputValue)) {\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","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","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 getNodeParentName from './logic/getNodeParentName';\nimport getProxyFormState from './logic/getProxyFormState';\nimport isErrorStateChanged from './logic/isErrorStateChanged';\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 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 FieldName,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n GetFormIsDirty,\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 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 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(\n new Subject<Partial<FormState<TFieldValues>>>(),\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, setFormState] = 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 let shouldReRender =\n shouldRender ||\n isErrorStateChanged<TFieldValues>({\n errors: formStateRef.current.errors,\n error,\n name,\n validFields: validFieldsRef.current,\n fieldsWithValidation: fieldsWithValidationRef.current,\n });\n const previousError = get(formStateRef.current.errors, 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 };\n\n formStateRef.current = {\n ...formStateRef.current,\n ...updatedFormState,\n };\n\n formStateSubjectRef.current.next(isWatched ? {} : updatedFormState);\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 = rawValue;\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 getFormIsDirty: GetFormIsDirty = React.useCallback((name, data) => {\n if (readFormStateRef.current.isDirty) {\n const formValues = getFieldsValues(fieldsRef);\n\n name && data && set(formValues, name, data);\n\n return !deepEqual(formValues, defaultValuesRef.current);\n }\n\n return false;\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 = getFormIsDirty();\n\n const state = {\n isDirty: formStateRef.current.isDirty,\n dirtyFields: formStateRef.current.dirtyFields,\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, defaultValuesRef),\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 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 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\n const trigger: UseFormTrigger<TFieldValues> = React.useCallback(\n async (name) => {\n const fields = isUndefined(name)\n ? Object.keys(fieldsRef.current)\n : Array.isArray(name)\n ? name\n : [name];\n let isValid;\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n isValid = isEmptyObject(\n await executeSchemaOrResolverValidation(\n fields,\n isUndefined(name)\n ? undefined\n : (fields as FieldName<TFieldValues>[]),\n ),\n );\n } else {\n isUndefined(name)\n ? await validateForm(fieldsRef.current)\n : await Promise.all(\n fields.map(async (data) => await executeValidation(data, null)),\n );\n }\n\n formStateSubjectRef.current.next({\n errors: formStateRef.current.errors,\n isValidating: false,\n isValid: resolverRef.current ? isValid : getIsValid(),\n });\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\n 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 updateValueAndGetDefault = (name: InternalFieldName) => {\n let defaultValue;\n const field = get(fieldsRef.current, name) as Field;\n\n if (\n field &&\n (!isEmptyObject(defaultValuesRef.current) || !isUndefined(field._f.value))\n ) {\n defaultValue = isUndefined(field._f.value)\n ? get(defaultValuesRef.current, name)\n : field._f.value;\n\n if (!isUndefined(defaultValue)) {\n setFieldValue(name, defaultValue);\n }\n }\n\n return defaultValue;\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n isMountedRef.current = true;\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 dirtyFields: formStateRef.current.dirtyFields,\n isDirty: getFormIsDirty(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 const inputValue = inputType ? getFieldValue(field) : value;\n const isBlurEvent = type === EVENTS.BLUR;\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = getValidationModes(reValidateMode);\n const shouldSkipValidation = 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 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(isWatched ? {} : state)\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, defaultValuesRef),\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?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[],\n ) => {\n const values = isMountedRef.current\n ? getFieldsValues(fieldsRef, defaultValuesRef)\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(fieldsRef, defaultValuesRef),\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 (Array.isArray(name) ? name : [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 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 ? getValues()\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 | 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 ? Array.isArray(name)\n ? name\n : [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 !options.keepDefaultValue && 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: getFormIsDirty() }),\n ...(resolverRef.current ? {} : { isValid: getIsValid() }),\n });\n\n if (!options.keepIsValid) {\n updateIsValid();\n }\n };\n\n const registerFieldRef = (\n name: InternalFieldName,\n ref: HTMLInputElement,\n options?: RegisterOptions,\n ): ((name: InternalFieldName) => void) | void => {\n let field = get(fieldsRef.current, name) as Field;\n\n if (field) {\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n\n if (\n (isRadioOrCheckbox\n ? Array.isArray(field._f.refs) &&\n compact(field._f.refs).find(\n (option) => ref.value === option.value && option === ref,\n )\n : ref === field._f.ref) ||\n !field ||\n (isWeb && isHTMLElement(field._f.ref) && !isHTMLElement(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 = updateValueAndGetDefault(name);\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 if (options) {\n if (\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 &&\n !isEmptyObject(error) &&\n setFormState({ ...formStateRef.current, isValid: getIsValid() });\n });\n }\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 ...options,\n },\n });\n options && set(fieldsWithValidationRef.current, name, true);\n fieldsNamesRef.current.add(name);\n\n isInitialRegister && updateValueAndGetDefault(name);\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) =>\n ref && registerFieldRef(name, ref, options),\n };\n },\n [defaultValuesRef.current],\n );\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> = React.useCallback(\n (onValid, onInvalid) => async (e) => {\n if (e && e.preventDefault) {\n e.preventDefault();\n e.persist();\n }\n let fieldValues = {\n ...defaultValuesRef.current,\n ...getFieldsValues(fieldsRef, defaultValuesRef),\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 } finally {\n formStateRef.current.isSubmitted = true;\n formStateSubjectRef.current.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(formStateRef.current.errors),\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 keepErrors,\n keepDirty,\n keepIsSubmitted,\n keepTouched,\n keepIsValid,\n keepSubmitCount,\n }: KeepStateOptions) => {\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 ? formStateRef.current.isDirty : false,\n isSubmitted: keepIsSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: keepIsValid\n ? formStateRef.current.isValid\n : !validationMode.isOnSubmit,\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 field of Object.values(fieldsRef.current)) {\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);\n };\n\n React.useEffect(() => {\n isMountedRef.current = true;\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next(formState: Partial<FormState<TFieldValues>> = {}) {\n if (shouldRenderFormState(formState, readFormStateRef.current, true)) {\n formStateRef.current = {\n ...formStateRef.current,\n ...formState,\n };\n setFormState(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 return {\n control: React.useMemo(\n () => ({\n register,\n isWatchAllRef,\n watchFieldsRef,\n getFormIsDirty,\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 }),\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 };\n}\n","import * as React from 'react';\n\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\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 (!name ||\n !inputName ||\n (Array.isArray(name) ? name : [name]).some(\n (fieldName) =>\n inputName &&\n fieldName &&\n inputName.startsWith(fieldName as InternalFieldName),\n )) &&\n updateValue(\n isString(inputName) && name === inputName && !isUndefined(value)\n ? value\n : watchInternal(\n name as string,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n );\n },\n });\n\n return () => watchSubscription.unsubscribe();\n }, [name]);\n\n return value;\n}\n"],"names":["React","getFieldArrayParentName","append","appendAt","prepend","prependAt","insert","insertAt","isCheckBox"],"mappings":"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"}