react-hook-form 6.9.4 → 6.9.5
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.
- package/dist/index.cjs.development.js +29 -30
- package/dist/index.cjs.development.js.map +1 -1
- package/dist/index.cjs.production.min.js +1 -1
- package/dist/index.cjs.production.min.js.map +1 -1
- package/dist/index.esm.js +29 -30
- package/dist/index.esm.js.map +1 -1
- package/dist/index.ie11.development.js +51 -52
- package/dist/index.ie11.development.js.map +1 -1
- package/dist/index.ie11.production.min.js +1 -1
- package/dist/index.ie11.production.min.js.map +1 -1
- package/dist/index.umd.development.js +29 -30
- package/dist/index.umd.development.js.map +1 -1
- package/dist/index.umd.production.min.js +1 -1
- package/dist/index.umd.production.min.js.map +1 -1
- package/dist/types/form.d.ts +1 -3
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.umd.development.js","sources":["../src/utils/isHTMLElement.ts","../src/constants.ts","../src/logic/attachEventListeners.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/utils/isKey.ts","../src/utils/compact.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/transformToNestObject.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/logic/focusOnErrorField.ts","../src/logic/removeAllEventListeners.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/getFieldValue.ts","../src/utils/isDetached.ts","../src/utils/isEmptyObject.ts","../src/utils/isBoolean.ts","../src/utils/unset.ts","../src/logic/findRemovedFieldAndRemoveListener.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/utils/isString.ts","../src/utils/isPrimitive.ts","../src/utils/deepMerge.ts","../src/logic/getFieldsValues.ts","../src/utils/deepEqual.ts","../src/logic/isErrorStateChanged.ts","../src/utils/isRegex.ts","../src/logic/getValueAndMessage.ts","../src/utils/isFunction.ts","../src/utils/isMessage.ts","../src/logic/getValidateError.ts","../src/logic/appendErrors.ts","../src/logic/validateField.ts","../src/utils/getPath.ts","../src/logic/assignWatchFields.ts","../src/logic/skipValidation.ts","../src/logic/getFieldArrayParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/isSelectInput.ts","../src/utils/onDomRemove.ts","../src/utils/cloneObject.ts","../src/utils/validationModeChecker.ts","../src/utils/isRadioOrCheckbox.ts","../src/useForm.ts","../src/useFormContext.tsx","../src/logic/generateId.ts","../src/utils/remove.ts","../src/utils/move.ts","../src/utils/swap.ts","../src/utils/prepend.ts","../src/utils/insert.ts","../src/utils/fillEmptyArray.ts","../src/utils/fillBooleanArray.ts","../src/useFieldArray.ts","../src/useWatch.ts","../src/logic/getInputValue.ts","../src/controller.tsx"],"sourcesContent":["export default (value: any): value is HTMLElement =>\n value instanceof HTMLElement;\n","import { ValidationMode } from './types';\n\nexport const EVENTS = {\n BLUR: 'blur',\n CHANGE: 'change',\n INPUT: 'input',\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 VALUE = 'value';\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 isHTMLElement from '../utils/isHTMLElement';\nimport { EVENTS } from '../constants';\nimport { Field } from '../types';\n\nexport default function attachEventListeners(\n { ref }: Field,\n shouldAttachChangeEvent?: boolean,\n handleChange?: EventListenerOrEventListenerObject,\n): void {\n if (isHTMLElement(ref) && handleChange) {\n ref.addEventListener(\n shouldAttachChangeEvent ? EVENTS.CHANGE : EVENTS.INPUT,\n handleChange,\n );\n ref.addEventListener(EVENTS.BLUR, handleChange);\n }\n}\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: [] | string) =>\n !Array.isArray(value) &&\n (/^\\w*$/.test(value) ||\n !/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/.test(value));\n","export default (value: any[]) => value.filter(Boolean);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(\n input\n .replace(/[\"|']/g, '')\n .replace(/\\[/g, '.')\n .replace(/\\]/g, '')\n .split('.'),\n );\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","import set from '../utils/set';\nimport isKey from '../utils/isKey';\nimport { FieldValues } from '../types';\n\nexport default (data: FieldValues, value: Record<string, any> = {}): any => {\n for (const key in data) {\n !isKey(key) ? set(value, key, data[key]) : (value[key] = data[key]);\n }\n return value;\n};\n","export default (val: unknown): val is undefined => val === undefined;\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","import get from '../utils/get';\nimport { FieldErrors, FieldRefs } from '../types';\n\nexport default <TFieldValues>(\n fields: FieldRefs<TFieldValues>,\n fieldErrors: FieldErrors<TFieldValues>,\n) => {\n for (const key in fields) {\n if (get(fieldErrors, key)) {\n const field = fields[key];\n\n if (field) {\n if (field.ref.focus) {\n field.ref.focus();\n\n break;\n } else if (field.options) {\n field.options[0].ref.focus();\n\n break;\n }\n }\n }\n }\n};\n","import isHTMLElement from '../utils/isHTMLElement';\nimport { EVENTS } from '../constants';\nimport { Ref } from '../types';\n\nexport default (\n ref: Ref,\n validateWithStateUpdate: EventListenerOrEventListenerObject,\n): void => {\n if (isHTMLElement(ref) && ref.removeEventListener) {\n ref.removeEventListener(EVENTS.INPUT, validateWithStateUpdate);\n ref.removeEventListener(EVENTS.CHANGE, validateWithStateUpdate);\n ref.removeEventListener(EVENTS.BLUR, validateWithStateUpdate);\n }\n};\n","import { RadioOrCheckboxOption } from '../types';\n\ntype RadioFieldResult = {\n isValid: boolean;\n value: number | string;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: '',\n};\n\nexport default (options?: RadioOrCheckboxOption[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.ref.checked\n ? {\n isValid: true,\n value: option.ref.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';\nimport { RadioOrCheckboxOption } from '../types';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: RadioOrCheckboxOption[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.ref.checked)\n .map(({ ref: { value } }) => value);\n return { value: values, isValid: !!values.length };\n }\n\n const { checked, value, attributes } = options[0].ref;\n\n return checked\n ? attributes && !isUndefined((attributes as any).value)\n ? isUndefined(value) || value === ''\n ? validResult\n : { value: value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import * as React from 'react';\nimport getRadioValue from './getRadioValue';\nimport getMultipleSelectValue from './getMultipleSelectValue';\nimport isRadioInput from '../utils/isRadioInput';\nimport get from '../utils/get';\nimport isFileInput from '../utils/isFileInput';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport getCheckboxValue from './getCheckboxValue';\nimport { FieldRefs, FieldValues, InternalFieldName } from '../types';\n\nexport default function getFieldValue<TFieldValues extends FieldValues>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n name: InternalFieldName<TFieldValues>,\n shallowFieldsStateRef?: React.MutableRefObject<Partial<FieldValues>>,\n excludeDisabled?: boolean,\n) {\n const field = fieldsRef.current[name]!;\n\n if (field) {\n const {\n ref: { value, disabled },\n ref,\n } = field;\n\n if (disabled && excludeDisabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(field.options).value;\n }\n\n if (isMultipleSelect(ref)) {\n return getMultipleSelectValue(ref.options);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(field.options).value;\n }\n\n return value;\n }\n\n if (shallowFieldsStateRef) {\n return get(shallowFieldsStateRef.current, name);\n }\n}\n","import { Ref } from '../types';\n\nexport default function isDetached(element: Ref): boolean {\n if (!element) {\n return true;\n }\n\n if (\n !(element instanceof HTMLElement) ||\n element.nodeType === Node.DOCUMENT_NODE\n ) {\n return false;\n }\n\n return isDetached(element.parentNode as Ref);\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","export default (value: unknown): value is boolean => typeof value === 'boolean';\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 path = updatePath.slice(0, -1);\n const length = path.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 = undefined;\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 = undefined;\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';\nimport removeAllEventListeners from './removeAllEventListeners';\nimport getFieldValue from './getFieldValue';\nimport isRadioInput from '../utils/isRadioInput';\nimport set from '../utils/set';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDetached from '../utils/isDetached';\nimport unset from '../utils/unset';\nimport compact from '../utils/compact';\nimport isUndefined from '../utils/isUndefined';\nimport { Field, FieldRefs, FieldValues, Ref } from '../types';\n\nconst isSameRef = (fieldValue: Field, ref: Ref) =>\n fieldValue && fieldValue.ref === ref;\n\nexport default function findRemovedFieldAndRemoveListener<\n TFieldValues extends FieldValues\n>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n handleChange: ({ type, target }: Event) => Promise<void | boolean>,\n field: Field,\n shallowFieldsStateRef: React.MutableRefObject<FieldValues>,\n shouldUnregister?: boolean,\n forceDelete?: boolean,\n): void {\n const {\n ref,\n ref: { name, type },\n } = field;\n const fieldRef = fieldsRef.current[name] as Field;\n\n if (!shouldUnregister) {\n const value = getFieldValue(fieldsRef, name, shallowFieldsStateRef);\n\n if (!isUndefined(value)) {\n set(shallowFieldsStateRef.current, name, value);\n }\n }\n\n if (!type) {\n delete fieldsRef.current[name];\n return;\n }\n\n if ((isRadioInput(ref) || isCheckBoxInput(ref)) && fieldRef) {\n const { options } = fieldRef;\n\n if (Array.isArray(options) && options.length) {\n compact(options).forEach((option, index): void => {\n const { ref } = option;\n if ((ref && isDetached(ref) && isSameRef(option, ref)) || forceDelete) {\n removeAllEventListeners(ref, handleChange);\n unset(options, `[${index}]`);\n }\n });\n\n if (options && !compact(options).length) {\n delete fieldsRef.current[name];\n }\n } else {\n delete fieldsRef.current[name];\n }\n } else if ((isDetached(ref) && isSameRef(fieldRef, ref)) || forceDelete) {\n removeAllEventListeners(ref, handleChange);\n\n delete fieldsRef.current[name];\n }\n}\n","import { get } from '../utils';\nimport set from '../utils/set';\n\nexport default function setFieldArrayDirtyFields<\n T extends U,\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 setFieldArrayDirtyFields(\n values[index][key],\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n 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 !dirtyFields.length &&\n parentNode &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields.length ? dirtyFields : undefined;\n}\n","export default (value: unknown): value is string => typeof value === 'string';\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 getFieldValue from './getFieldValue';\nimport isString from '../utils/isString';\nimport { deepMerge } from '../utils/deepMerge';\nimport isUndefined from '../utils/isUndefined';\nimport { InternalFieldName, FieldValues, FieldRefs } from '../types';\nimport transformToNestObject from './transformToNestObject';\n\nexport default <TFieldValues extends FieldValues>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n shallowFieldsStateRef?: React.MutableRefObject<Record<string, any>>,\n excludeDisabled?: boolean,\n search?:\n | InternalFieldName<TFieldValues>\n | InternalFieldName<TFieldValues>[]\n | { nest: boolean },\n) => {\n const output = {} as TFieldValues;\n\n for (const name in fieldsRef.current) {\n if (\n isUndefined(search) ||\n (isString(search)\n ? name.startsWith(search)\n : Array.isArray(search) && search.find((data) => name.startsWith(data)))\n ) {\n output[name as InternalFieldName<TFieldValues>] = getFieldValue(\n fieldsRef,\n name,\n undefined,\n excludeDisabled,\n );\n }\n }\n\n return deepMerge(\n transformToNestObject({ ...((shallowFieldsStateRef || {}).current || {}) }),\n transformToNestObject(output),\n );\n};\n","import isObject from '../utils/isObject';\n\nexport default function deepEqual(\n object1: any = [],\n object2: any = [],\n isErrorObject?: boolean,\n) {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n if (!(isErrorObject && ['ref', 'context'].includes(key))) {\n const val1 = object1[key];\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 return true;\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 function isErrorStateChanged<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<TFieldValues>;\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, ValidationValueMessage } from '../types';\n\nconst isValueMessage = (\n value?: ValidationRule,\n): value is ValidationValueMessage => isObject(value) && !isRegex(value);\n\nexport default (validationData?: ValidationRule) =>\n isValueMessage(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import { isValidElement } from 'react';\nimport isString from '../utils/isString';\nimport isObject from '../utils/isObject';\nimport { Message } from '../types';\n\nexport default (value: unknown): value is Message =>\n isString(value) || (isObject(value) && isValidElement(value));\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 <TFieldValues>(\n name: InternalFieldName<TFieldValues>,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors<TFieldValues>,\n type: string,\n message: ValidateResult,\n) => {\n if (validateAllFieldCriteria) {\n const error = errors[name];\n\n return {\n ...error,\n types: {\n ...(error && error.types ? error.types : {}),\n [type]: message || true,\n },\n };\n }\n\n return {};\n};\n","import * as React from 'react';\nimport 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 getFieldsValue from './getFieldValue';\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 {\n Field,\n FieldValues,\n FieldRefs,\n Message,\n FieldError,\n InternalFieldName,\n InternalFieldErrors,\n} from '../types';\n\nexport default async <TFieldValues extends FieldValues>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n validateAllFieldCriteria: boolean,\n {\n ref,\n ref: { type, value },\n options,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n }: Field,\n shallowFieldsStateRef: React.MutableRefObject<Record<string, any>>,\n): Promise<InternalFieldErrors<TFieldValues>> => {\n const fields = fieldsRef.current;\n const name: InternalFieldName<TFieldValues> = ref.name;\n const error: InternalFieldErrors<TFieldValues> = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = value === '';\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 ...(exceedMax\n ? appendErrorsCurry(maxType, message)\n : appendErrorsCurry(minType, message)),\n };\n };\n\n if (\n required &&\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(value))) ||\n (isBoolean(value) && !value) ||\n (isCheckBox && !getCheckboxValue(options).isValid) ||\n (isRadio && !getRadioValue(options).isValid))\n ) {\n const { value: requiredValue, message: requiredMessage } = isMessage(\n required,\n )\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (requiredValue) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message: requiredMessage,\n ref: isRadioOrCheckbox\n ? (((fields[name] as Field).options || [])[0] || {}).ref\n : ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, requiredMessage),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (!isNullOrUndefined(min) || !isNullOrUndefined(max)) {\n let exceedMax;\n let exceedMin;\n const { value: maxValue, message: maxMessage } = getValueAndMessage(max);\n const { value: minValue, message: minMessage } = getValueAndMessage(min);\n\n if (type === 'number' || (!type && !isNaN(value))) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(value);\n if (!isNullOrUndefined(maxValue)) {\n exceedMax = valueNumber > maxValue;\n }\n if (!isNullOrUndefined(minValue)) {\n exceedMin = valueNumber < minValue;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(value);\n if (isString(maxValue)) {\n exceedMax = valueDate > new Date(maxValue);\n }\n if (isString(minValue)) {\n exceedMin = valueDate < new Date(minValue);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxMessage,\n minMessage,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (isString(value) && !isEmpty && (maxLength || minLength)) {\n const {\n value: maxLengthValue,\n message: maxLengthMessage,\n } = getValueAndMessage(maxLength);\n const {\n value: minLengthValue,\n message: minLengthMessage,\n } = getValueAndMessage(minLength);\n const inputLength = value.toString().length;\n const exceedMax =\n !isNullOrUndefined(maxLengthValue) && inputLength > maxLengthValue;\n const exceedMin =\n !isNullOrUndefined(minLengthValue) && inputLength < minLengthValue;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxLengthMessage, minLengthMessage);\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (pattern && !isEmpty) {\n const { value: patternValue, message: patternMessage } = getValueAndMessage(\n pattern,\n );\n\n if (isRegex(patternValue) && !patternValue.test(value)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message: patternMessage,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, patternMessage),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (validate) {\n const fieldValue = getFieldsValue(fieldsRef, name, shallowFieldsStateRef);\n const validateRef = isRadioOrCheckbox && options ? options[0].ref : ref;\n\n if (isFunction(validate)) {\n const result = await validate(fieldValue);\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(fieldValue);\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 isPrimitive from './isPrimitive';\nimport isObject from './isObject';\n\nexport const getPath = <T extends string, U extends object | unknown[]>(\n path: T,\n values: U,\n): string[] => {\n const getInnerPath = <K>(key: K, value: U, isObject?: boolean) => {\n const pathWithIndex = isObject ? `${path}.${key}` : `${path}[${key}]`;\n return isPrimitive(value) ? pathWithIndex : getPath(pathWithIndex, value);\n };\n\n return Object.entries(values)\n .map(([key, value]) => getInnerPath(key, value, isObject(values)))\n .flat(Infinity) as string[];\n};\n","import get from '../utils/get';\nimport { getPath } from '../utils/getPath';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isUndefined from '../utils/isUndefined';\nimport isObject from '../utils/isObject';\nimport {\n DeepPartial,\n FieldValue,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n} from '../types';\n\nexport default <TFieldValues extends FieldValues>(\n fieldValues: TFieldValues,\n fieldName: InternalFieldName<TFieldValues>,\n watchFields: Set<InternalFieldName<TFieldValues>>,\n inputValue: UnpackNestedValue<DeepPartial<TFieldValues>>,\n isSingleField?: boolean,\n):\n | FieldValue<TFieldValues>\n | UnpackNestedValue<DeepPartial<TFieldValues>>\n | undefined => {\n let value;\n\n watchFields.add(fieldName);\n\n if (isEmptyObject(fieldValues)) {\n value = undefined;\n } else {\n value = get(fieldValues, fieldName);\n\n if (isObject(value) || Array.isArray(value)) {\n getPath(fieldName, value).forEach((name) => watchFields.add(name));\n }\n }\n\n return isUndefined(value)\n ? isSingleField\n ? inputValue\n : get(inputValue, fieldName)\n : value;\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.indexOf('['));\n","import { FieldValues, InternalFieldName } from '../types';\n\nexport const isMatchFieldArrayName = (name: string, searchName: string) =>\n RegExp(\n `^${searchName}[\\\\d+]`.replace(/\\[/g, '\\\\[').replace(/\\]/g, '\\\\]'),\n ).test(name);\n\nexport default (\n names: Set<InternalFieldName<FieldValues>>,\n name: InternalFieldName<FieldValues>,\n) => [...names].some((current) => isMatchFieldArrayName(name, current));\n","import { FieldElement } from '../types';\nimport { SELECT } from '../constants';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-one`;\n","import * as React from 'react';\nimport { Field, FieldRefs } from '../types';\nimport isDetached from './isDetached';\n\nexport default function onDomRemove<TFieldValues>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n removeFieldEventListenerAndRef: (\n field: Field | undefined,\n forceDelete?: boolean,\n ) => void,\n): MutationObserver {\n const observer = new MutationObserver((): void => {\n for (const field of Object.values(fieldsRef.current)) {\n if (field && field.options) {\n for (const option of field.options) {\n if (option && option.ref && isDetached(option.ref)) {\n removeFieldEventListenerAndRef(field);\n }\n }\n } else if (field && isDetached(field.ref)) {\n removeFieldEventListenerAndRef(field);\n }\n }\n });\n\n observer.observe(window.document, {\n childList: true,\n subtree: true,\n });\n\n return observer;\n}\n","import isPrimitive from './isPrimitive';\n\nexport default function cloneObject<T extends unknown>(object: T): T {\n let copy: any;\n\n if (isPrimitive(object)) {\n return object;\n }\n\n if (object instanceof Date) {\n copy = new Date(object.getTime());\n return copy;\n }\n\n copy = Array.isArray(object) ? [] : {};\n\n for (const key in object) {\n copy[key] = cloneObject(object[key]);\n }\n\n return copy;\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","import * as React from 'react';\nimport attachEventListeners from './logic/attachEventListeners';\nimport transformToNestObject from './logic/transformToNestObject';\nimport focusOnErrorField from './logic/focusOnErrorField';\nimport findRemovedFieldAndRemoveListener from './logic/findRemovedFieldAndRemoveListener';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldValue from './logic/getFieldValue';\nimport isErrorStateChanged from './logic/isErrorStateChanged';\nimport validateField from './logic/validateField';\nimport assignWatchFields from './logic/assignWatchFields';\nimport skipValidation from './logic/skipValidation';\nimport getFieldArrayParentName from './logic/getFieldArrayParentName';\nimport deepEqual from './utils/deepEqual';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport isCheckBoxInput from './utils/isCheckBoxInput';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isRadioInput from './utils/isRadioInput';\nimport isSelectInput from './utils/isSelectInput';\nimport isFileInput from './utils/isFileInput';\nimport onDomRemove from './utils/onDomRemove';\nimport isObject from './utils/isObject';\nimport { getPath } from './utils/getPath';\nimport isPrimitive from './utils/isPrimitive';\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 isKey from './utils/isKey';\nimport cloneObject from './utils/cloneObject';\nimport modeChecker from './utils/validationModeChecker';\nimport isMultipleSelect from './utils/isMultipleSelect';\nimport compact from './utils/compact';\nimport isNullOrUndefined from './utils/isNullOrUndefined';\nimport isRadioOrCheckboxFunction from './utils/isRadioOrCheckbox';\nimport isHTMLElement from './utils/isHTMLElement';\nimport { EVENTS, UNDEFINED, VALIDATION_MODE } from './constants';\nimport {\n UseFormMethods,\n FieldValues,\n UnpackNestedValue,\n FieldName,\n InternalFieldName,\n FieldValue,\n FieldErrors,\n Field,\n FieldRefs,\n UseFormOptions,\n ValidationRules,\n SubmitHandler,\n FieldElement,\n FormStateProxy,\n ReadFormState,\n Ref,\n HandleChange,\n RadioOrCheckboxOption,\n OmitResetState,\n NestedValue,\n SetValueConfig,\n ErrorOption,\n FormState,\n SubmitErrorHandler,\n FieldNamesMarkedBoolean,\n LiteralToPrimitive,\n DeepPartial,\n InternalNameSet,\n DefaultValues,\n FieldError,\n} from './types';\n\nconst isWindowUndefined = typeof window === UNDEFINED;\nconst isWeb =\n typeof document !== UNDEFINED &&\n !isWindowUndefined &&\n !isUndefined(window.HTMLElement);\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== 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 UnpackNestedValue<DeepPartial<TFieldValues>>,\n shouldFocusError = true,\n shouldUnregister = true,\n criteriaMode,\n}: UseFormOptions<TFieldValues, TContext> = {}): UseFormMethods<TFieldValues> {\n const fieldsRef = React.useRef<FieldRefs<TFieldValues>>({});\n const fieldArrayDefaultValuesRef = React.useRef<\n Record<InternalFieldName<FieldValues>, unknown[]>\n >({});\n const watchFieldsRef = React.useRef<InternalNameSet<TFieldValues>>(new Set());\n const useWatchFieldsRef = React.useRef<\n Record<string, InternalNameSet<TFieldValues>>\n >({});\n const useWatchRenderFunctionsRef = React.useRef<Record<string, () => void>>(\n {},\n );\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 defaultValuesAtRenderRef = React.useRef<\n Partial<DefaultValues<TFieldValues>>\n >({});\n const isUnMount = React.useRef(false);\n const isWatchAllRef = React.useRef(false);\n const handleChangeRef = React.useRef<HandleChange>();\n const shallowFieldsStateRef = React.useRef(\n shouldUnregister ? {} : cloneObject(defaultValues),\n );\n const resetFieldArrayFunctionRef = React.useRef<\n Record<\n InternalFieldName<FieldValues>,\n (data?: UnpackNestedValue<DeepPartial<TFieldValues>>) => void\n >\n >({});\n const contextRef = React.useRef(context);\n const resolverRef = React.useRef(resolver);\n const fieldArrayNamesRef = React.useRef<InternalNameSet<TFieldValues>>(\n new Set(),\n );\n const modeRef = React.useRef(modeChecker(mode));\n const { isOnSubmit, isOnTouch } = modeRef.current;\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\n const [formState, setFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touched: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: !isOnSubmit,\n errors: {},\n });\n const readFormStateRef = React.useRef<ReadFormState>({\n isDirty: !isProxyEnabled,\n dirtyFields: !isProxyEnabled,\n touched: !isProxyEnabled || isOnTouch,\n isSubmitting: !isProxyEnabled,\n isValid: !isProxyEnabled,\n });\n const formStateRef = React.useRef(formState);\n const observerRef = React.useRef<MutationObserver | undefined>();\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = React.useRef(modeChecker(reValidateMode)).current;\n\n contextRef.current = context;\n resolverRef.current = resolver;\n formStateRef.current = formState;\n\n const updateFormState = React.useCallback(\n (state: Partial<FormState<TFieldValues>> = {}) =>\n !isUnMount.current &&\n setFormState({\n ...formStateRef.current,\n ...state,\n }),\n [],\n );\n\n const shouldRenderBaseOnError = React.useCallback(\n (\n name: InternalFieldName<TFieldValues>,\n error: FieldError | undefined,\n shouldRender: boolean | null = false,\n state: {\n dirtyFields?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } = {},\n isValid?: 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 unset(formStateRef.current.errors, name);\n }\n\n if (\n (shouldReRender && !isNullOrUndefined(shouldRender)) ||\n !isEmptyObject(state)\n ) {\n updateFormState({\n ...state,\n errors: formStateRef.current.errors,\n ...(resolverRef.current ? { isValid: !!isValid } : {}),\n });\n }\n },\n [],\n );\n\n const setFieldValue = React.useCallback(\n (\n name: string,\n rawValue:\n | FieldValue<TFieldValues>\n | UnpackNestedValue<DeepPartial<TFieldValues>>\n | string[]\n | undefined\n | null\n | boolean,\n ) => {\n const { ref, options } = fieldsRef.current[name] as Field;\n const value =\n isWeb && isHTMLElement(ref) && isNullOrUndefined(rawValue)\n ? ''\n : rawValue;\n\n if (isRadioInput(ref) && options) {\n options.forEach(\n ({ ref: radioRef }: { ref: HTMLInputElement }) =>\n (radioRef.checked = radioRef.value === value),\n );\n } else if (isFileInput(ref) && !isString(value)) {\n ref.files = value as FileList;\n } else if (isMultipleSelect(ref)) {\n [...ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (value as string[]).includes(\n selectRef.value,\n )),\n );\n } else if (isCheckBoxInput(ref) && options) {\n options.length > 1\n ? options.forEach(\n ({ ref: checkboxRef }) =>\n (checkboxRef.checked = Array.isArray(value)\n ? !!(value as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : value === checkboxRef.value),\n )\n : (options[0].ref.checked = !!value);\n } else {\n ref.value = value;\n }\n },\n [],\n );\n\n const isFormDirty = () =>\n !deepEqual(\n getValues(),\n isEmptyObject(defaultValuesRef.current)\n ? defaultValuesAtRenderRef.current\n : defaultValuesRef.current,\n );\n\n const updateAndGetDirtyState = React.useCallback(\n (\n name: InternalFieldName<TFieldValues>,\n shouldRender = true,\n ): {\n dirtyFields?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } => {\n if (\n readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields\n ) {\n const isFieldDirty =\n get(defaultValuesAtRenderRef.current, name) !==\n getFieldValue(fieldsRef, name, shallowFieldsStateRef);\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: isFormDirty(),\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 if (isChanged && shouldRender) {\n formStateRef.current = {\n ...formStateRef.current,\n ...state,\n };\n updateFormState({\n ...state,\n });\n }\n\n return isChanged ? state : {};\n }\n\n return {};\n },\n [],\n );\n\n const executeValidation = React.useCallback(\n async (\n name: InternalFieldName<TFieldValues>,\n skipReRender?: boolean | null,\n ): Promise<boolean> => {\n if (fieldsRef.current[name]) {\n const error = (\n await validateField<TFieldValues>(\n fieldsRef,\n isValidateAllFieldCriteria,\n fieldsRef.current[name] as Field,\n shallowFieldsStateRef,\n )\n )[name];\n\n shouldRenderBaseOnError(name, error, skipReRender);\n\n return isUndefined(error);\n }\n\n return false;\n },\n [shouldRenderBaseOnError, isValidateAllFieldCriteria],\n );\n\n const executeSchemaOrResolverValidation = React.useCallback(\n async (\n names:\n | InternalFieldName<TFieldValues>\n | InternalFieldName<TFieldValues>[],\n ) => {\n const { errors } = await resolverRef.current!(\n getValues(),\n contextRef.current,\n isValidateAllFieldCriteria,\n );\n const previousFormIsValid = formStateRef.current.isValid;\n\n if (Array.isArray(names)) {\n const isInputsValid = names\n .map((name) => {\n const error = get(errors, name);\n\n error\n ? set(formStateRef.current.errors, name, error)\n : unset(formStateRef.current.errors, name);\n\n return !error;\n })\n .every(Boolean);\n\n updateFormState({\n isValid: isEmptyObject(errors),\n errors: formStateRef.current.errors,\n });\n\n return isInputsValid;\n } else {\n const error = get(errors, names);\n\n shouldRenderBaseOnError(\n names,\n error,\n previousFormIsValid !== isEmptyObject(errors),\n {},\n isEmptyObject(errors),\n );\n\n return !error;\n }\n },\n [shouldRenderBaseOnError, isValidateAllFieldCriteria],\n );\n\n const trigger = React.useCallback(\n async (\n name?: FieldName<TFieldValues> | FieldName<TFieldValues>[],\n ): Promise<boolean> => {\n const fields = name || Object.keys(fieldsRef.current);\n\n if (resolverRef.current) {\n return executeSchemaOrResolverValidation(fields);\n }\n\n if (Array.isArray(fields)) {\n const result = await Promise.all(\n fields.map(async (data) => await executeValidation(data, null)),\n );\n updateFormState();\n return result.every(Boolean);\n }\n\n return await executeValidation(fields, readFormStateRef.current.isValid);\n },\n [executeSchemaOrResolverValidation, executeValidation],\n );\n\n const setInternalValues = React.useCallback(\n <T extends string, U extends object | unknown[]>(\n name: T,\n value: U,\n { shouldDirty, shouldValidate }: SetValueConfig,\n ) => {\n const data = {};\n set(data, name, value);\n\n for (const fieldName of getPath(name, value)) {\n if (fieldsRef.current[fieldName]) {\n setFieldValue(fieldName, get(data, fieldName));\n shouldDirty && updateAndGetDirtyState(fieldName);\n shouldValidate && trigger(fieldName as FieldName<TFieldValues>);\n }\n }\n },\n [trigger, setFieldValue, updateAndGetDirtyState],\n );\n\n const setInternalValue = React.useCallback(\n (\n name: InternalFieldName<TFieldValues>,\n value: FieldValue<TFieldValues> | null | undefined | boolean,\n config: SetValueConfig = {},\n ) => {\n if (fieldsRef.current[name]) {\n setFieldValue(name, value);\n config.shouldDirty && updateAndGetDirtyState(name);\n } else if (!isPrimitive(value)) {\n setInternalValues(name, value, config);\n\n if (fieldArrayNamesRef.current.has(name) && config.shouldDirty) {\n fieldArrayDefaultValuesRef.current[name] = value;\n resetFieldArrayFunctionRef.current[name]({\n [name]: value,\n } as UnpackNestedValue<DeepPartial<TFieldValues>>);\n\n if (\n readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields\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 updateFormState({\n isDirty: !deepEqual(\n { ...getValues(), [name]: value },\n defaultValuesRef.current,\n ),\n dirtyFields: formStateRef.current.dirtyFields,\n });\n }\n }\n }\n\n !shouldUnregister && set(shallowFieldsStateRef.current, name, value);\n },\n [updateAndGetDirtyState, setFieldValue, setInternalValues],\n );\n\n const isFieldWatched = (name: string) =>\n isWatchAllRef.current ||\n watchFieldsRef.current.has(name) ||\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\n\n const renderWatchedInputs = (name: string, found = true): boolean => {\n if (!isEmptyObject(useWatchFieldsRef.current)) {\n for (const key in useWatchFieldsRef.current) {\n if (\n !name ||\n !useWatchFieldsRef.current[key].size ||\n useWatchFieldsRef.current[key].has(name) ||\n useWatchFieldsRef.current[key].has(getFieldArrayParentName(name))\n ) {\n useWatchRenderFunctionsRef.current[key]();\n found = false;\n }\n }\n }\n\n return found;\n };\n\n function setValue<\n TFieldName extends string,\n TFieldValue extends TFieldValues[TFieldName]\n >(\n name: TFieldName,\n value: TFieldValue extends NestedValue<infer U>\n ? U\n : UnpackNestedValue<DeepPartial<LiteralToPrimitive<TFieldValue>>>,\n config?: SetValueConfig,\n ): void {\n setInternalValue(name, value as TFieldValues[string], config);\n\n isFieldWatched(name) && updateFormState();\n renderWatchedInputs(name);\n (config || {}).shouldValidate && trigger(name as any);\n }\n\n handleChangeRef.current = handleChangeRef.current\n ? handleChangeRef.current\n : async ({ type, target }: Event): Promise<void | boolean> => {\n const name = (target as Ref)!.name;\n const field = fieldsRef.current[name];\n let error;\n let isValid;\n\n if (field) {\n const isBlurEvent = type === EVENTS.BLUR;\n const shouldSkipValidation = skipValidation({\n isBlurEvent,\n isReValidateOnChange,\n isReValidateOnBlur,\n isTouched: !!get(formStateRef.current.touched, name),\n isSubmitted: formStateRef.current.isSubmitted,\n ...modeRef.current,\n });\n let state = updateAndGetDirtyState(name, false);\n let shouldRender = !isEmptyObject(state) || isFieldWatched(name);\n\n if (\n isBlurEvent &&\n !get(formStateRef.current.touched, name) &&\n readFormStateRef.current.touched\n ) {\n set(formStateRef.current.touched, name, true);\n state = {\n ...state,\n touched: formStateRef.current.touched,\n };\n }\n\n if (shouldSkipValidation) {\n renderWatchedInputs(name);\n return (\n (!isEmptyObject(state) ||\n (shouldRender && isEmptyObject(state))) &&\n updateFormState(state)\n );\n }\n\n if (resolverRef.current) {\n const { errors } = await resolverRef.current(\n getValues(),\n contextRef.current,\n isValidateAllFieldCriteria,\n );\n const previousFormIsValid = formStateRef.current.isValid;\n\n error = get(errors, name);\n\n isValid = isEmptyObject(errors);\n\n if (previousFormIsValid !== isValid) {\n shouldRender = true;\n }\n } else {\n error = (\n await validateField<TFieldValues>(\n fieldsRef,\n isValidateAllFieldCriteria,\n field,\n shallowFieldsStateRef,\n )\n )[name];\n }\n\n renderWatchedInputs(name);\n shouldRenderBaseOnError(name, error, shouldRender, state, isValid);\n }\n };\n\n function setFieldArrayDefaultValues<T extends FieldValues>(data: T): T {\n if (!shouldUnregister) {\n let copy = cloneObject(data);\n\n for (const value of fieldArrayNamesRef.current) {\n if (isKey(value) && !copy[value]) {\n copy = {\n ...copy,\n [value]: [],\n };\n }\n }\n\n return copy;\n }\n return data;\n }\n\n function getValues(): UnpackNestedValue<TFieldValues>;\n function getValues<TFieldName extends string, TFieldValue extends unknown>(\n name: TFieldName,\n ): TFieldName extends keyof TFieldValues\n ? UnpackNestedValue<TFieldValues>[TFieldName]\n : TFieldValue;\n function getValues<TFieldName extends keyof TFieldValues>(\n names: TFieldName[],\n ): UnpackNestedValue<Pick<TFieldValues, TFieldName>>;\n function getValues(payload?: string | string[]): unknown {\n if (isString(payload)) {\n return getFieldValue(fieldsRef, payload, shallowFieldsStateRef);\n }\n\n if (Array.isArray(payload)) {\n const data = {};\n\n for (const name of payload) {\n set(data, name, getFieldValue(fieldsRef, name, shallowFieldsStateRef));\n }\n\n return data;\n }\n\n return setFieldArrayDefaultValues(\n getFieldsValues(fieldsRef, shallowFieldsStateRef),\n );\n }\n\n const validateResolver = React.useCallback(\n async (values = {}) => {\n const { errors } = await resolverRef.current!(\n {\n ...defaultValuesRef.current,\n ...getValues(),\n ...values,\n },\n contextRef.current,\n isValidateAllFieldCriteria,\n );\n const isValid = isEmptyObject(errors);\n\n formStateRef.current.isValid !== isValid &&\n updateFormState({\n isValid,\n });\n },\n [isValidateAllFieldCriteria],\n );\n\n const removeFieldEventListener = React.useCallback(\n (field: Field, forceDelete?: boolean) =>\n findRemovedFieldAndRemoveListener(\n fieldsRef,\n handleChangeRef.current!,\n field,\n shallowFieldsStateRef,\n shouldUnregister,\n forceDelete,\n ),\n [shouldUnregister],\n );\n\n const removeFieldEventListenerAndRef = React.useCallback(\n (field: Field | undefined, forceDelete?: boolean) => {\n if (field) {\n removeFieldEventListener(field, forceDelete);\n\n if (shouldUnregister && !compact(field.options || []).length) {\n unset(defaultValuesAtRenderRef.current, field.ref.name);\n unset(validFieldsRef.current, field.ref.name);\n unset(fieldsWithValidationRef.current, field.ref.name);\n unset(formStateRef.current.errors, field.ref.name);\n set(formStateRef.current.dirtyFields, field.ref.name, true);\n\n updateFormState({\n errors: formStateRef.current.errors,\n isDirty: isFormDirty(),\n dirtyFields: formStateRef.current.dirtyFields,\n });\n\n resolverRef.current && validateResolver();\n }\n }\n },\n [validateResolver, removeFieldEventListener],\n );\n\n function clearErrors(\n name?: FieldName<TFieldValues> | FieldName<TFieldValues>[],\n ): void {\n name &&\n (Array.isArray(name) ? name : [name]).forEach((inputName) =>\n fieldsRef.current[inputName]\n ? isKey(inputName)\n ? delete formStateRef.current.errors[inputName]\n : set(formStateRef.current.errors, inputName, undefined)\n : unset(formStateRef.current.errors, inputName),\n );\n\n updateFormState({\n errors: name ? formStateRef.current.errors : {},\n });\n }\n\n function setError(name: FieldName<TFieldValues>, error: ErrorOption): void {\n const ref = (fieldsRef.current[name] || {})!.ref;\n\n set(formStateRef.current.errors, name, {\n ...error,\n ref,\n });\n\n updateFormState({\n isValid: false,\n errors: formStateRef.current.errors,\n });\n\n error.shouldFocus && ref && ref.focus && ref.focus();\n }\n\n const watchInternal = React.useCallback(\n (\n fieldNames?: string | string[],\n defaultValue?: unknown,\n watchId?: string,\n ) => {\n const watchFields = watchId\n ? useWatchFieldsRef.current[watchId]\n : watchFieldsRef.current;\n const combinedDefaultValues = isUndefined(defaultValue)\n ? defaultValuesRef.current\n : defaultValue;\n const fieldValues = getFieldsValues<TFieldValues>(\n fieldsRef,\n shallowFieldsStateRef,\n false,\n fieldNames,\n );\n\n if (isString(fieldNames)) {\n return assignWatchFields<TFieldValues>(\n fieldValues,\n fieldNames,\n watchFields,\n isUndefined(defaultValue)\n ? get(combinedDefaultValues, fieldNames)\n : (defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>),\n true,\n );\n }\n\n if (Array.isArray(fieldNames)) {\n return fieldNames.reduce(\n (previous, name) => ({\n ...previous,\n [name]: assignWatchFields<TFieldValues>(\n fieldValues,\n name,\n watchFields,\n combinedDefaultValues as UnpackNestedValue<\n DeepPartial<TFieldValues>\n >,\n ),\n }),\n {},\n );\n }\n\n isWatchAllRef.current = isUndefined(watchId);\n\n return transformToNestObject(\n (!isEmptyObject(fieldValues) && fieldValues) ||\n (combinedDefaultValues as FieldValues),\n );\n },\n [],\n );\n\n function watch(): UnpackNestedValue<TFieldValues>;\n function watch<\n TFieldName extends string,\n TFieldValue extends TFieldValues[TFieldName]\n >(\n name: TFieldName,\n defaultValue?: UnpackNestedValue<LiteralToPrimitive<TFieldValue>>,\n ): UnpackNestedValue<LiteralToPrimitive<TFieldValue>>;\n function watch<TFieldName extends keyof TFieldValues>(\n names: TFieldName[],\n defaultValues?: UnpackNestedValue<\n DeepPartial<Pick<TFieldValues, TFieldName>>\n >,\n ): UnpackNestedValue<Pick<TFieldValues, TFieldName>>;\n function watch(\n names: string[],\n defaultValues?: UnpackNestedValue<DeepPartial<TFieldValues>>,\n ): UnpackNestedValue<DeepPartial<TFieldValues>>;\n function watch(\n fieldNames?: string | string[],\n defaultValue?: unknown,\n ): unknown {\n return watchInternal(fieldNames, defaultValue);\n }\n\n function unregister(\n name: FieldName<TFieldValues> | FieldName<TFieldValues>[],\n ): void {\n for (const fieldName of Array.isArray(name) ? name : [name]) {\n removeFieldEventListenerAndRef(fieldsRef.current[fieldName], true);\n }\n }\n\n function registerFieldRef<TFieldElement extends FieldElement<TFieldValues>>(\n ref: TFieldElement & Ref,\n validateOptions: ValidationRules | null = {},\n ): ((name: InternalFieldName<TFieldValues>) => void) | void {\n if (process.env.NODE_ENV !== 'production') {\n if (!ref.name) {\n return console.warn(\n '📋 Field is missing `name` attribute',\n ref,\n `https://react-hook-form.com/api#useForm`,\n );\n }\n\n if (\n fieldArrayNamesRef.current.has(ref.name.split(/\\[\\d+\\]$/)[0]) &&\n !RegExp(\n `^${ref.name.split(/\\[\\d+\\]$/)[0]}[\\\\d+].\\\\w+`\n .replace(/\\[/g, '\\\\[')\n .replace(/\\]/g, '\\\\]'),\n ).test(ref.name)\n ) {\n return console.warn(\n '📋 `name` prop should be in object shape: name=\"test[index].name\"',\n ref,\n 'https://react-hook-form.com/api#useFieldArray',\n );\n }\n }\n\n const { name, type, value } = ref;\n const fieldRefAndValidationOptions = {\n ref,\n ...validateOptions,\n };\n const fields = fieldsRef.current;\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n const isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\n const compareRef = (currentRef: Ref) =>\n isWeb && (!isHTMLElement(ref) || currentRef === ref);\n let field = fields[name] as Field;\n let isEmptyDefaultValue = true;\n let defaultValue;\n\n if (\n field &&\n (isRadioOrCheckbox\n ? Array.isArray(field.options) &&\n compact(field.options).find((option) => {\n return value === option.ref.value && compareRef(option.ref);\n })\n : compareRef(field.ref))\n ) {\n fields[name] = {\n ...field,\n ...validateOptions,\n };\n return;\n }\n\n if (type) {\n field = isRadioOrCheckbox\n ? {\n options: [\n ...compact((field && field.options) || []),\n {\n ref,\n } as RadioOrCheckboxOption,\n ],\n ref: { type, name },\n ...validateOptions,\n }\n : {\n ...fieldRefAndValidationOptions,\n };\n } else {\n field = fieldRefAndValidationOptions;\n }\n\n fields[name] = field;\n\n const isEmptyUnmountFields = isUndefined(\n get(shallowFieldsStateRef.current, name),\n );\n\n if (!isEmptyObject(defaultValuesRef.current) || !isEmptyUnmountFields) {\n defaultValue = get(\n isEmptyUnmountFields\n ? defaultValuesRef.current\n : shallowFieldsStateRef.current,\n name,\n );\n isEmptyDefaultValue = isUndefined(defaultValue);\n\n if (!isEmptyDefaultValue && !isFieldArray) {\n setFieldValue(name, defaultValue);\n }\n }\n\n if (!isEmptyObject(validateOptions)) {\n set(fieldsWithValidationRef.current, name, true);\n\n if (!isOnSubmit && readFormStateRef.current.isValid) {\n validateField(\n fieldsRef,\n isValidateAllFieldCriteria,\n field,\n shallowFieldsStateRef,\n ).then((error: FieldErrors) => {\n const previousFormIsValid = formStateRef.current.isValid;\n\n isEmptyObject(error)\n ? set(validFieldsRef.current, name, true)\n : unset(validFieldsRef.current, name);\n\n if (previousFormIsValid !== isEmptyObject(error)) {\n updateFormState();\n }\n });\n }\n }\n\n if (\n !defaultValuesAtRenderRef.current[name] &&\n !(isFieldArray && isEmptyDefaultValue)\n ) {\n const fieldValue = getFieldValue(fieldsRef, name, shallowFieldsStateRef);\n set(\n defaultValuesAtRenderRef.current,\n name,\n isEmptyDefaultValue\n ? isObject(fieldValue)\n ? { ...fieldValue }\n : fieldValue\n : defaultValue,\n );\n !isFieldArray && unset(formStateRef.current.dirtyFields, name);\n }\n\n if (type) {\n attachEventListeners(\n isRadioOrCheckbox && field.options\n ? field.options[field.options.length - 1]\n : field,\n isRadioOrCheckbox || isSelectInput(ref),\n handleChangeRef.current,\n );\n }\n }\n\n function register<TFieldElement extends FieldElement<TFieldValues>>(\n rules?: ValidationRules,\n ): (ref: (TFieldElement & Ref) | null) => void;\n function register(\n name: FieldName<TFieldValues>,\n rules?: ValidationRules,\n ): void;\n function register<TFieldElement extends FieldElement<TFieldValues>>(\n ref: (TFieldElement & Ref) | null,\n rules?: ValidationRules,\n ): void;\n function register<TFieldElement extends FieldElement<TFieldValues>>(\n refOrValidationOptions?:\n | FieldName<TFieldValues>\n | ValidationRules\n | (TFieldElement & Ref)\n | null,\n rules?: ValidationRules,\n ): ((ref: (TFieldElement & Ref) | null) => void) | void {\n if (!isWindowUndefined) {\n if (isString(refOrValidationOptions)) {\n registerFieldRef({ name: refOrValidationOptions }, rules);\n } else if (\n isObject(refOrValidationOptions) &&\n 'name' in refOrValidationOptions\n ) {\n registerFieldRef(refOrValidationOptions, rules);\n } else {\n return (ref: (TFieldElement & Ref) | null) =>\n ref && registerFieldRef(ref, refOrValidationOptions);\n }\n }\n }\n\n const handleSubmit = React.useCallback(\n <TSubmitFieldValues extends FieldValues = TFieldValues>(\n onValid: SubmitHandler<TSubmitFieldValues>,\n onInvalid?: SubmitErrorHandler<TFieldValues>,\n ) => async (e?: React.BaseSyntheticEvent): Promise<void> => {\n if (e && e.preventDefault) {\n e.preventDefault();\n e.persist();\n }\n let fieldErrors: FieldErrors<TFieldValues> = {};\n let fieldValues = setFieldArrayDefaultValues(\n getFieldsValues(fieldsRef, shallowFieldsStateRef, true),\n );\n\n if (readFormStateRef.current.isSubmitting) {\n updateFormState({\n isSubmitting: true,\n });\n }\n\n try {\n if (resolverRef.current) {\n const { errors, values } = await resolverRef.current(\n fieldValues,\n contextRef.current,\n isValidateAllFieldCriteria,\n );\n formStateRef.current.errors = errors;\n fieldErrors = errors;\n fieldValues = values;\n } else {\n for (const field of Object.values(fieldsRef.current)) {\n if (field) {\n const {\n ref: { name },\n } = field;\n\n const fieldError = await validateField(\n fieldsRef,\n isValidateAllFieldCriteria,\n field,\n shallowFieldsStateRef,\n );\n\n if (fieldError[name]) {\n set(fieldErrors, name, fieldError[name]);\n unset(validFieldsRef.current, name);\n } else if (get(fieldsWithValidationRef.current, name)) {\n unset(formStateRef.current.errors, name);\n set(validFieldsRef.current, name, true);\n }\n }\n }\n }\n\n if (\n isEmptyObject(fieldErrors) &&\n Object.keys(formStateRef.current.errors).every(\n (name) => name in fieldsRef.current,\n )\n ) {\n updateFormState({\n errors: {},\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n formStateRef.current.errors = {\n ...formStateRef.current.errors,\n ...fieldErrors,\n };\n onInvalid && (await onInvalid(fieldErrors, e));\n shouldFocusError && focusOnErrorField(fieldsRef.current, fieldErrors);\n }\n } finally {\n updateFormState({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(formStateRef.current.errors),\n errors: formStateRef.current.errors,\n submitCount: formStateRef.current.submitCount + 1,\n });\n }\n },\n [shouldFocusError, isValidateAllFieldCriteria],\n );\n\n const resetRefs = ({\n errors,\n isDirty,\n isSubmitted,\n touched,\n isValid,\n submitCount,\n dirtyFields,\n }: OmitResetState) => {\n if (!isValid) {\n validFieldsRef.current = {};\n fieldsWithValidationRef.current = {};\n }\n\n defaultValuesAtRenderRef.current = {};\n fieldArrayDefaultValuesRef.current = {};\n watchFieldsRef.current = new Set();\n isWatchAllRef.current = false;\n\n updateFormState({\n submitCount: submitCount ? formStateRef.current.submitCount : 0,\n isDirty: isDirty ? formStateRef.current.isDirty : false,\n isSubmitted: isSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: isValid ? formStateRef.current.isValid : false,\n dirtyFields: dirtyFields ? formStateRef.current.dirtyFields : {},\n touched: touched ? formStateRef.current.touched : {},\n errors: errors ? formStateRef.current.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n };\n\n const reset = (\n values?: UnpackNestedValue<DeepPartial<TFieldValues>>,\n omitResetState: OmitResetState = {},\n ): void => {\n if (isWeb) {\n for (const field of Object.values(fieldsRef.current)) {\n if (field) {\n const { ref, options } = field;\n const inputRef =\n isRadioOrCheckboxFunction(ref) && Array.isArray(options)\n ? options[0].ref\n : ref;\n\n if (isHTMLElement(inputRef)) {\n try {\n inputRef.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n }\n\n fieldsRef.current = {};\n defaultValuesRef.current = cloneObject(values || defaultValuesRef.current);\n\n if (values) {\n renderWatchedInputs('');\n }\n\n shallowFieldsStateRef.current = shouldUnregister\n ? {}\n : cloneObject(values) || {};\n\n Object.values(resetFieldArrayFunctionRef.current).forEach(\n (resetFieldArray) => isFunction(resetFieldArray) && resetFieldArray(),\n );\n\n resetRefs(omitResetState);\n };\n\n React.useEffect(() => {\n isUnMount.current = false;\n resolver && readFormStateRef.current.isValid && validateResolver();\n\n observerRef.current =\n observerRef.current || !isWeb\n ? observerRef.current\n : onDomRemove(fieldsRef, removeFieldEventListenerAndRef);\n\n return () => {\n isUnMount.current = true;\n observerRef.current && observerRef.current.disconnect();\n shallowFieldsStateRef.current = {};\n\n if (process.env.NODE_ENV !== 'production') {\n return;\n }\n\n Object.values(fieldsRef.current).forEach((field) =>\n removeFieldEventListenerAndRef(field, true),\n );\n };\n }, [removeFieldEventListenerAndRef]);\n\n if (!resolver && readFormStateRef.current.isValid) {\n formState.isValid =\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\n isEmptyObject(formStateRef.current.errors);\n }\n\n const commonProps = {\n trigger,\n setValue: React.useCallback(setValue, [setInternalValue, trigger]),\n getValues: React.useCallback(getValues, []),\n register: React.useCallback(register, [defaultValuesRef.current]),\n unregister: React.useCallback(unregister, []),\n };\n\n const control = {\n renderWatchedInputs,\n shouldUnregister,\n removeFieldEventListener,\n watchInternal,\n mode: modeRef.current,\n reValidateMode: {\n isReValidateOnBlur,\n isReValidateOnChange,\n },\n fieldsRef,\n isWatchAllRef,\n watchFieldsRef,\n resetFieldArrayFunctionRef,\n useWatchFieldsRef,\n useWatchRenderFunctionsRef,\n fieldArrayDefaultValuesRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayNamesRef,\n readFormStateRef,\n formStateRef,\n defaultValuesRef,\n shallowFieldsStateRef,\n updateFormState,\n validateResolver: resolver ? validateResolver : undefined,\n ...commonProps,\n };\n\n return {\n watch,\n control,\n formState: isProxyEnabled\n ? new Proxy(formState, {\n get: (obj, prop: keyof FormStateProxy) => {\n if (process.env.NODE_ENV !== 'production') {\n if (prop === 'isValid' && isOnSubmit) {\n console.warn(\n '📋 `formState.isValid` is applicable with `onTouched`, `onChange` or `onBlur` mode. https://react-hook-form.com/api#formState',\n );\n }\n }\n\n if (prop in obj) {\n readFormStateRef.current[prop] = true;\n return obj[prop];\n }\n\n return undefined;\n },\n })\n : formState,\n handleSubmit,\n reset: React.useCallback(reset, []),\n clearErrors: React.useCallback(clearErrors, []),\n setError: React.useCallback(setError, []),\n errors: formState.errors,\n ...commonProps,\n };\n}\n","import * as React from 'react';\nimport { UseFormMethods, FieldValues, FormProviderProps } from './types';\n\nconst FormContext = React.createContext<UseFormMethods | null>(null);\n\nFormContext.displayName = 'RHFContext';\n\nexport const useFormContext = <\n TFieldValues extends FieldValues\n>(): UseFormMethods<TFieldValues> =>\n React.useContext(FormContext) as UseFormMethods<TFieldValues>;\n\nexport const FormProvider = <TFieldValues extends FieldValues>({\n children,\n ...props\n}: FormProviderProps<TFieldValues>) => (\n <FormContext.Provider value={{ ...props } as UseFormMethods}>\n {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, function (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 isUndefined from './isUndefined';\nimport compact from './compact';\n\nconst removeAt = <T>(data: T[], index: number): T[] => [\n ...data.slice(0, index),\n ...data.slice(index + 1),\n];\n\nfunction removeAtIndexes<T>(data: T[], index: number[]): T[] {\n let k = -1;\n\n while (++k < data.length) {\n if (index.indexOf(k) >= 0) {\n delete data[k];\n }\n }\n\n return compact(data);\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n isUndefined(index)\n ? []\n : Array.isArray(index)\n ? removeAtIndexes(data, index)\n : removeAt(data, index);\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 const temp = [data[indexB], data[indexA]];\n data[indexA] = temp[0];\n data[indexB] = temp[1];\n};\n","export default function prepend<T>(data: T[]): (T | undefined)[];\nexport default function prepend<T>(data: T[], value: T | T[]): T[];\nexport default function prepend<T>(\n data: T[],\n value?: T | T[],\n): (T | undefined)[] {\n return [...(Array.isArray(value) ? value : [value || undefined]), ...data];\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 || undefined]),\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 isObject from './isObject';\n\nfunction mapValueToBoolean<U>(value: U): boolean[] | Record<string, boolean>[] {\n if (isObject(value)) {\n const object: Record<string, boolean> = {};\n\n for (const key in value) {\n object[key] = true;\n }\n\n return [object];\n }\n\n return [true];\n}\n\nexport default <T>(value: T) =>\n ((Array.isArray(value) ? value : [value]) as T[])\n .map(mapValueToBoolean)\n .flat();\n","import * as React from 'react';\nimport { useFormContext } from './useFormContext';\nimport { isMatchFieldArrayName } from './logic/isNameInFieldArray';\nimport generateId from './logic/generateId';\nimport deepEqual from './utils/deepEqual';\nimport getFieldArrayParentName from './logic/getFieldArrayParentName';\nimport get from './utils/get';\nimport set from './utils/set';\nimport isUndefined from './utils/isUndefined';\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 insertAt from './utils/insert';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport fillBooleanArray from './utils/fillBooleanArray';\nimport compact from './utils/compact';\nimport {\n Field,\n FieldValues,\n UseFieldArrayOptions,\n Control,\n ArrayField,\n UnpackNestedValue,\n DeepPartial,\n UseFieldArrayMethods,\n} from './types';\n\nconst mapIds = <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id'\n>(\n values: Partial<TFieldArrayValues>[],\n keyName: TKeyName,\n): Partial<ArrayField<TFieldArrayValues, TKeyName>>[] =>\n values.map((value: Partial<TFieldArrayValues>) => ({\n [keyName]: generateId(),\n ...value,\n }));\n\nexport const useFieldArray = <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id',\n TControl extends Control = Control\n>({\n control,\n name,\n keyName = 'id' as TKeyName,\n}: UseFieldArrayOptions<TKeyName, TControl>): UseFieldArrayMethods<\n TFieldArrayValues,\n TKeyName\n> => {\n const methods = useFormContext();\n\n if (process.env.NODE_ENV !== 'production') {\n if (!control && !methods) {\n throw new Error(\n '📋 useFieldArray is missing `control` prop. https://react-hook-form.com/api#useFieldArray',\n );\n }\n }\n\n const focusIndexRef = React.useRef(-1);\n const {\n isWatchAllRef,\n resetFieldArrayFunctionRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n removeFieldEventListener,\n formStateRef,\n shallowFieldsStateRef,\n updateFormState,\n readFormStateRef,\n watchFieldsRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n validateResolver,\n renderWatchedInputs,\n getValues,\n shouldUnregister,\n } = control || methods.control;\n\n const fieldArrayParentName = getFieldArrayParentName(name);\n const memoizedDefaultValues = React.useRef<Partial<TFieldArrayValues>[]>([\n ...(get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)\n ? get(fieldArrayDefaultValuesRef.current, name, [])\n : get(\n shouldUnregister\n ? defaultValuesRef.current\n : shallowFieldsStateRef.current,\n name,\n [],\n )),\n ]);\n const [fields, setFields] = React.useState<\n Partial<ArrayField<TFieldArrayValues, TKeyName>>[]\n >(mapIds(memoizedDefaultValues.current, keyName));\n const allFields = React.useRef<\n Partial<ArrayField<TFieldArrayValues, TKeyName>>[]\n >(fields);\n\n const getCurrentFieldsValues = () =>\n get(getValues(), name, allFields.current).map(\n (item: Partial<TFieldArrayValues>, index: number) => ({\n ...allFields.current[index],\n ...item,\n }),\n );\n\n allFields.current = fields;\n fieldArrayNamesRef.current.add(name);\n\n if (!get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)) {\n set(\n fieldArrayDefaultValuesRef.current,\n fieldArrayParentName,\n get(defaultValuesRef.current, fieldArrayParentName),\n );\n }\n\n const setFieldAndValidState = (\n fieldsValues: Partial<ArrayField<TFieldArrayValues, TKeyName>>[],\n ) => {\n setFields(fieldsValues);\n\n if (readFormStateRef.current.isValid && validateResolver) {\n const values = getValues();\n set(values, name, fieldsValues);\n validateResolver(values);\n }\n };\n\n const getIsDirtyState = (\n flagOrFields?: (Partial<TFieldArrayValues> | undefined)[],\n ): boolean =>\n (readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields) &&\n (isUndefined(flagOrFields) ||\n !deepEqual(\n flagOrFields.map(({ [keyName]: omitted, ...rest } = {}) => rest),\n get(defaultValuesRef.current, name),\n ));\n\n const resetFields = () => {\n for (const key in fieldsRef.current) {\n isMatchFieldArrayName(key, name) &&\n removeFieldEventListener(fieldsRef.current[key] as Field, true);\n }\n };\n\n const cleanup = <T>(ref: T) =>\n !compact(get(ref, name, [])).length && unset(ref, name);\n\n const updateDirtyFieldsWithDefaultValues = <\n T extends { [k: string]: unknown }[]\n >(\n updatedFieldArrayValues?: T,\n ) => {\n const defaultFieldArrayValues = get(defaultValuesRef.current, name, []);\n const updateDirtyFieldsBaseOnDefaultValues = <U extends T>(\n base: U,\n target: U,\n ) => {\n for (const key in base) {\n for (const innerKey in base[key]) {\n if (\n innerKey !== keyName &&\n (!target[key] ||\n !base[key] ||\n base[key][innerKey] !== target[key][innerKey])\n ) {\n set(formStateRef.current.dirtyFields, `${name}[${key}]`, {\n ...get(formStateRef.current.dirtyFields, `${name}[${key}]`, {}),\n [innerKey]: true,\n });\n }\n }\n }\n };\n\n if (updatedFieldArrayValues) {\n updateDirtyFieldsBaseOnDefaultValues(\n defaultFieldArrayValues,\n updatedFieldArrayValues,\n );\n updateDirtyFieldsBaseOnDefaultValues(\n updatedFieldArrayValues,\n defaultFieldArrayValues,\n );\n }\n };\n\n const batchStateUpdate = <\n T extends Function,\n K extends { [k: string]: unknown }[]\n >(\n method: T,\n args: {\n argA?: unknown;\n argB?: unknown;\n argC?: unknown;\n argD?: unknown;\n },\n updatedFieldValues?: K,\n isDirty = true,\n shouldSet = true,\n shouldUpdateValid = false,\n ) => {\n if (get(shallowFieldsStateRef.current, name)) {\n const output = method(\n get(shallowFieldsStateRef.current, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(shallowFieldsStateRef.current, name, output);\n }\n\n if (get(fieldArrayDefaultValuesRef.current, name)) {\n const output = method(\n get(fieldArrayDefaultValuesRef.current, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(fieldArrayDefaultValuesRef.current, name, output);\n cleanup(fieldArrayDefaultValuesRef.current);\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.touched &&\n get(formStateRef.current.touched, name)\n ) {\n const output = method(\n get(formStateRef.current.touched, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.touched, name, output);\n cleanup(formStateRef.current.touched);\n }\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n const output = method(\n get(formStateRef.current.dirtyFields, name, []),\n args.argC,\n args.argD,\n );\n shouldSet && set(formStateRef.current.dirtyFields, name, output);\n updateDirtyFieldsWithDefaultValues(updatedFieldValues);\n cleanup(formStateRef.current.dirtyFields);\n }\n\n if (\n shouldUpdateValid &&\n readFormStateRef.current.isValid &&\n !validateResolver\n ) {\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 updateFormState({\n errors: formStateRef.current.errors,\n dirtyFields: formStateRef.current.dirtyFields,\n isDirty,\n touched: formStateRef.current.touched,\n });\n };\n\n const append = (\n value: Partial<TFieldArrayValues> | Partial<TFieldArrayValues>[],\n shouldFocus = true,\n ) => {\n const updateFormValues = [\n ...allFields.current,\n ...mapIds(Array.isArray(value) ? value : [value], keyName),\n ];\n setFieldAndValidState(updateFormValues);\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n updateDirtyFieldsWithDefaultValues(updateFormValues);\n\n updateFormState({\n isDirty: true,\n dirtyFields: formStateRef.current.dirtyFields,\n });\n }\n\n if (!shouldUnregister) {\n shallowFieldsStateRef.current[name] = [\n ...(shallowFieldsStateRef.current[name] || []),\n value,\n ];\n }\n focusIndexRef.current = shouldFocus ? allFields.current.length : -1;\n };\n\n const prepend = (\n value: Partial<TFieldArrayValues> | Partial<TFieldArrayValues>[],\n shouldFocus = true,\n ) => {\n const emptyArray = fillEmptyArray(value);\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n mapIds(Array.isArray(value) ? value : [value], keyName),\n );\n\n setFieldAndValidState(updatedFieldArrayValues);\n resetFields();\n batchStateUpdate(\n prependAt,\n {\n argA: emptyArray,\n argC: fillBooleanArray(value),\n },\n updatedFieldArrayValues,\n );\n focusIndexRef.current = shouldFocus ? 0 : -1;\n };\n\n const remove = (index?: number | number[]) => {\n const fieldValues = getCurrentFieldsValues();\n const updatedFieldValues: { [k: string]: unknown }[] = removeArrayAt(\n fieldValues,\n index,\n );\n setFieldAndValidState(\n updatedFieldValues as Partial<ArrayField<TFieldArrayValues, TKeyName>>[],\n );\n resetFields();\n batchStateUpdate(\n removeArrayAt,\n {\n argA: index,\n argC: index,\n },\n updatedFieldValues,\n getIsDirtyState(removeArrayAt(fieldValues, index)),\n true,\n true,\n );\n };\n\n const insert = (\n index: number,\n value: Partial<TFieldArrayValues> | Partial<TFieldArrayValues>[],\n shouldFocus = true,\n ) => {\n const emptyArray = fillEmptyArray(value);\n const fieldValues = getCurrentFieldsValues();\n const updatedFieldArrayValues = insertAt(\n fieldValues,\n index,\n mapIds(Array.isArray(value) ? value : [value], keyName),\n );\n\n setFieldAndValidState(updatedFieldArrayValues);\n resetFields();\n batchStateUpdate(\n insertAt,\n {\n argA: index,\n argB: emptyArray,\n argC: index,\n argD: fillBooleanArray(value),\n },\n updatedFieldArrayValues,\n getIsDirtyState(insertAt(fieldValues, index)),\n );\n focusIndexRef.current = shouldFocus ? index : -1;\n };\n\n const swap = (indexA: number, indexB: number) => {\n const fieldValues = getCurrentFieldsValues();\n swapArrayAt(fieldValues, indexA, indexB);\n resetFields();\n setFieldAndValidState([...fieldValues]);\n batchStateUpdate(\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n argC: indexA,\n argD: indexB,\n },\n undefined,\n getIsDirtyState(fieldValues),\n false,\n );\n };\n\n const move = (from: number, to: number) => {\n const fieldValues = getCurrentFieldsValues();\n moveArrayAt(fieldValues, from, to);\n resetFields();\n setFieldAndValidState([...fieldValues]);\n batchStateUpdate(\n moveArrayAt,\n {\n argA: from,\n argB: to,\n argC: from,\n argD: to,\n },\n undefined,\n getIsDirtyState(fieldValues),\n false,\n );\n };\n\n const reset = <TFieldValues>(\n data?: UnpackNestedValue<DeepPartial<TFieldValues>>,\n ) => {\n resetFields();\n !data && unset(fieldArrayDefaultValuesRef.current, name);\n unset(shallowFieldsStateRef.current, name);\n memoizedDefaultValues.current = get(data || defaultValuesRef.current, name);\n setFields(mapIds(memoizedDefaultValues.current, keyName));\n };\n\n React.useEffect(() => {\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n console.warn(\n '📋 useFieldArray is missing `name` attribute. https://react-hook-form.com/api#useFieldArray',\n );\n }\n }\n\n const defaultValues = get(fieldArrayDefaultValuesRef.current, name);\n\n if (defaultValues && fields.length < defaultValues.length) {\n defaultValues.pop();\n set(fieldArrayDefaultValuesRef.current, name, defaultValues);\n }\n\n if (isWatchAllRef.current) {\n updateFormState();\n } else if (watchFieldsRef) {\n let shouldRenderUseWatch = true;\n for (const watchField of watchFieldsRef.current) {\n if (watchField.startsWith(name)) {\n updateFormState();\n shouldRenderUseWatch = false;\n break;\n }\n }\n\n shouldRenderUseWatch && renderWatchedInputs(name);\n }\n\n if (focusIndexRef.current > -1) {\n for (const key in fieldsRef.current) {\n const field = fieldsRef.current[key];\n if (\n key.startsWith(`${name}[${focusIndexRef.current}]`) &&\n field!.ref.focus\n ) {\n field!.ref.focus();\n break;\n }\n }\n }\n\n focusIndexRef.current = -1;\n }, [fields, name]);\n\n React.useEffect(() => {\n const resetFunctions = resetFieldArrayFunctionRef.current;\n const fieldArrayNames = fieldArrayNamesRef.current;\n\n if (!getFieldArrayParentName(name)) {\n resetFunctions[name] = reset;\n }\n\n return () => {\n resetFields();\n delete resetFunctions[name];\n fieldArrayNames.delete(name);\n };\n }, []);\n\n return {\n swap: React.useCallback(swap, [name]),\n move: React.useCallback(move, [name]),\n prepend: React.useCallback(prepend, [name]),\n append: React.useCallback(append, [name]),\n remove: React.useCallback(remove, [name]),\n insert: React.useCallback(insert, [name]),\n fields,\n };\n};\n","import * as React from 'react';\nimport { useFormContext } from './useFormContext';\nimport isUndefined from './utils/isUndefined';\nimport isString from './utils/isString';\nimport generateId from './logic/generateId';\nimport get from './utils/get';\nimport isObject from './utils/isObject';\nimport {\n DeepPartial,\n UseWatchOptions,\n FieldValues,\n UnpackNestedValue,\n Control,\n} from './types';\n\nexport function useWatch<TWatchFieldValues extends FieldValues>(props: {\n defaultValue?: UnpackNestedValue<DeepPartial<TWatchFieldValues>>;\n control?: Control;\n}): UnpackNestedValue<DeepPartial<TWatchFieldValues>>;\nexport function useWatch<TWatchFieldValue extends any>(props: {\n name: string;\n control?: Control;\n}): undefined | UnpackNestedValue<TWatchFieldValue>;\nexport function useWatch<TWatchFieldValue extends any>(props: {\n name: string;\n defaultValue: UnpackNestedValue<TWatchFieldValue>;\n control?: Control;\n}): UnpackNestedValue<TWatchFieldValue>;\nexport function useWatch<TWatchFieldValues extends FieldValues>(props: {\n name: string[];\n defaultValue?: UnpackNestedValue<DeepPartial<TWatchFieldValues>>;\n control?: Control;\n}): UnpackNestedValue<DeepPartial<TWatchFieldValues>>;\nexport function useWatch<TWatchFieldValues>({\n control,\n name,\n defaultValue,\n}: UseWatchOptions): TWatchFieldValues {\n const methods = useFormContext();\n\n if (process.env.NODE_ENV !== 'production') {\n if (!control && !methods) {\n throw new Error(\n '📋 useWatch is missing `control` prop. https://react-hook-form.com/api#useWatch',\n );\n }\n }\n\n const {\n useWatchFieldsRef,\n useWatchRenderFunctionsRef,\n watchInternal,\n defaultValuesRef,\n } = control || methods.control;\n const [value, setValue] = React.useState<unknown>(\n isUndefined(defaultValue)\n ? isString(name)\n ? get(defaultValuesRef.current, name)\n : Array.isArray(name)\n ? name.reduce(\n (previous, inputName) => ({\n ...previous,\n [inputName]: get(defaultValuesRef.current, inputName),\n }),\n {},\n )\n : defaultValuesRef.current\n : defaultValue,\n );\n const idRef = React.useRef<string>();\n const defaultValueRef = React.useRef(value);\n\n const updateWatchValue = React.useCallback(() => {\n const value = watchInternal(name, defaultValueRef.current, idRef.current);\n setValue(\n isObject(value)\n ? { ...value }\n : Array.isArray(value)\n ? [...value]\n : value,\n );\n }, [setValue, watchInternal, defaultValueRef, name, idRef]);\n\n React.useEffect(() => {\n if (process.env.NODE_ENV !== 'production') {\n if (name === '') {\n console.warn(\n '📋 useWatch is missing `name` attribute. https://react-hook-form.com/api#useWatch',\n );\n }\n }\n\n const id = (idRef.current = generateId());\n const watchFieldsHookRender = useWatchRenderFunctionsRef.current;\n const watchFieldsHook = useWatchFieldsRef.current;\n watchFieldsHook[id] = new Set();\n watchFieldsHookRender[id] = updateWatchValue;\n watchInternal(name, defaultValueRef.current, id);\n\n return () => {\n delete watchFieldsHook[id];\n delete watchFieldsHookRender[id];\n };\n }, [\n name,\n updateWatchValue,\n useWatchRenderFunctionsRef,\n useWatchFieldsRef,\n watchInternal,\n defaultValueRef,\n ]);\n\n return (isUndefined(value) ? defaultValue : value) as TWatchFieldValues;\n}\n","import isUndefined from '../utils/isUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\n\nexport default (event: any) =>\n isPrimitive(event) ||\n !isObject(event.target) ||\n (isObject(event.target) && !event.type)\n ? event\n : isUndefined(event.target.value)\n ? event.target.checked\n : event.target.value;\n","import * as React from 'react';\nimport isUndefined from './utils/isUndefined';\nimport get from './utils/get';\nimport set from './utils/set';\nimport getInputValue from './logic/getInputValue';\nimport skipValidation from './logic/skipValidation';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport { useFormContext } from './useFormContext';\nimport { VALUE } from './constants';\nimport { Control } from './types';\nimport { ControllerProps } from './types';\n\nconst Controller = <\n TAs extends\n | React.ReactElement\n | React.ComponentType<any>\n | 'input'\n | 'select'\n | 'textarea',\n TControl extends Control = Control\n>({\n name,\n rules,\n as,\n render,\n defaultValue,\n control,\n onFocus,\n ...rest\n}: ControllerProps<TAs, TControl>) => {\n const methods = useFormContext();\n\n if (process.env.NODE_ENV !== 'production') {\n if (!control && !methods) {\n throw new Error(\n '📋 Controller is missing `control` prop. https://react-hook-form.com/api#Controller',\n );\n }\n }\n\n const {\n defaultValuesRef,\n setValue,\n register,\n unregister,\n trigger,\n mode,\n reValidateMode: { isReValidateOnBlur, isReValidateOnChange },\n formStateRef: {\n current: { isSubmitted, touched },\n },\n updateFormState,\n readFormStateRef,\n fieldsRef,\n fieldArrayNamesRef,\n shallowFieldsStateRef,\n } = control || methods.control;\n const isNotFieldArray = !isNameInFieldArray(fieldArrayNamesRef.current, name);\n const getInitialValue = () =>\n !isUndefined(get(shallowFieldsStateRef.current, name)) && isNotFieldArray\n ? get(shallowFieldsStateRef.current, name)\n : isUndefined(defaultValue)\n ? get(defaultValuesRef.current, name)\n : defaultValue;\n const [value, setInputStateValue] = React.useState(getInitialValue());\n const valueRef = React.useRef(value);\n const onFocusRef = React.useRef(onFocus);\n\n const shouldValidate = (isBlurEvent?: boolean) =>\n !skipValidation({\n isBlurEvent,\n isReValidateOnBlur,\n isReValidateOnChange,\n isSubmitted,\n isTouched: !!get(touched, name),\n ...mode,\n });\n\n const commonTask = ([event]: any[]) => {\n const data = getInputValue(event);\n setInputStateValue(data);\n valueRef.current = data;\n return data;\n };\n\n const registerField = React.useCallback(() => {\n if (process.env.NODE_ENV !== 'production' && !name) {\n return console.warn(\n '📋 Field is missing `name` prop. https://react-hook-form.com/api#Controller',\n );\n }\n\n if (fieldsRef.current[name]) {\n fieldsRef.current[name] = {\n ref: fieldsRef.current[name]!.ref,\n ...rules,\n };\n } else {\n register(\n Object.defineProperty({ name, focus: onFocusRef.current }, VALUE, {\n set(data) {\n setInputStateValue(data);\n valueRef.current = data;\n },\n get() {\n return valueRef.current;\n },\n }),\n rules,\n );\n if (isNotFieldArray && !get(defaultValuesRef.current, name)) {\n setInputStateValue(getInitialValue());\n }\n }\n }, [rules, name, register]);\n\n React.useEffect(() => () => unregister(name), [unregister, name]);\n\n React.useEffect(() => {\n if (process.env.NODE_ENV !== 'production') {\n if (isUndefined(value)) {\n console.warn(\n `📋 ${name} is missing in the 'defaultValue' prop of either its Controller (https://react-hook-form.com/api#Controller) or useForm (https://react-hook-form.com/api#useForm)`,\n );\n }\n\n if ((!as && !render) || (as && render)) {\n console.warn(\n `📋 ${name} Controller should use either the 'as' or 'render' prop, not both. https://react-hook-form.com/api#Controller`,\n );\n }\n\n if (!isNotFieldArray && isUndefined(defaultValue)) {\n console.warn(\n '📋 Controller is missing `defaultValue` prop when using `useFieldArray`. https://react-hook-form.com/api#Controller',\n );\n }\n }\n\n registerField();\n }, [registerField]);\n\n React.useEffect(() => {\n if (!fieldsRef.current[name]) {\n registerField();\n if (isNotFieldArray) {\n setInputStateValue(getInitialValue());\n }\n }\n });\n\n const onBlur = () => {\n if (readFormStateRef.current.touched && !get(touched, name)) {\n set(touched, name, true);\n updateFormState({\n touched,\n });\n }\n\n if (shouldValidate(true)) {\n trigger(name);\n }\n };\n\n const onChange = (...event: any[]) =>\n setValue(name, commonTask(event), {\n shouldValidate: shouldValidate(),\n shouldDirty: true,\n });\n\n const props = {\n ...rest,\n onChange,\n onBlur,\n name,\n value,\n };\n\n return as\n ? React.isValidElement(as)\n ? React.cloneElement(as, props)\n : React.createElement(as as string, props as any)\n : render\n ? render({\n onChange,\n onBlur,\n value,\n name,\n })\n : null;\n};\n\nexport { Controller };\n"],"names":["isCheckBox","isValidElement","getFieldsValue","React.useRef","React.useState","React.useCallback","React.useEffect","React.createContext","React.useContext","React.createElement","prepend","prependAt","insert","insertAt","React.isValidElement","React.cloneElement"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.umd.development.js","sources":["../src/utils/isHTMLElement.ts","../src/constants.ts","../src/logic/attachEventListeners.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/utils/isKey.ts","../src/utils/compact.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/transformToNestObject.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/logic/focusOnErrorField.ts","../src/logic/removeAllEventListeners.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/getFieldValue.ts","../src/utils/isDetached.ts","../src/utils/isEmptyObject.ts","../src/utils/isBoolean.ts","../src/utils/unset.ts","../src/logic/findRemovedFieldAndRemoveListener.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/utils/isString.ts","../src/utils/isPrimitive.ts","../src/utils/deepMerge.ts","../src/logic/getFieldsValues.ts","../src/utils/deepEqual.ts","../src/logic/isErrorStateChanged.ts","../src/utils/isRegex.ts","../src/logic/getValueAndMessage.ts","../src/utils/isFunction.ts","../src/utils/isMessage.ts","../src/logic/getValidateError.ts","../src/logic/appendErrors.ts","../src/logic/validateField.ts","../src/utils/getPath.ts","../src/logic/assignWatchFields.ts","../src/logic/skipValidation.ts","../src/logic/getFieldArrayParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/isSelectInput.ts","../src/utils/onDomRemove.ts","../src/utils/cloneObject.ts","../src/utils/validationModeChecker.ts","../src/utils/isRadioOrCheckbox.ts","../src/useForm.ts","../src/useFormContext.tsx","../src/logic/generateId.ts","../src/utils/remove.ts","../src/utils/move.ts","../src/utils/swap.ts","../src/utils/prepend.ts","../src/utils/insert.ts","../src/utils/fillEmptyArray.ts","../src/utils/fillBooleanArray.ts","../src/useFieldArray.ts","../src/useWatch.ts","../src/logic/getInputValue.ts","../src/controller.tsx"],"sourcesContent":["export default (value: any): value is HTMLElement =>\n value instanceof HTMLElement;\n","import { ValidationMode } from './types';\n\nexport const EVENTS = {\n BLUR: 'blur',\n CHANGE: 'change',\n INPUT: 'input',\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 VALUE = 'value';\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 isHTMLElement from '../utils/isHTMLElement';\nimport { EVENTS } from '../constants';\nimport { Field } from '../types';\n\nexport default function attachEventListeners(\n { ref }: Field,\n shouldAttachChangeEvent?: boolean,\n handleChange?: EventListenerOrEventListenerObject,\n): void {\n if (isHTMLElement(ref) && handleChange) {\n ref.addEventListener(\n shouldAttachChangeEvent ? EVENTS.CHANGE : EVENTS.INPUT,\n handleChange,\n );\n ref.addEventListener(EVENTS.BLUR, handleChange);\n }\n}\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: [] | string) =>\n !Array.isArray(value) &&\n (/^\\w*$/.test(value) ||\n !/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/.test(value));\n","export default (value: any[]) => value.filter(Boolean);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(\n input\n .replace(/[\"|']/g, '')\n .replace(/\\[/g, '.')\n .replace(/\\]/g, '')\n .split('.'),\n );\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","import set from '../utils/set';\nimport isKey from '../utils/isKey';\nimport { FieldValues } from '../types';\n\nexport default (data: FieldValues, value: Record<string, any> = {}): any => {\n for (const key in data) {\n !isKey(key) ? set(value, key, data[key]) : (value[key] = data[key]);\n }\n return value;\n};\n","export default (val: unknown): val is undefined => val === undefined;\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","import get from '../utils/get';\nimport { FieldErrors, FieldRefs } from '../types';\n\nexport default <TFieldValues>(\n fields: FieldRefs<TFieldValues>,\n fieldErrors: FieldErrors<TFieldValues>,\n) => {\n for (const key in fields) {\n if (get(fieldErrors, key)) {\n const field = fields[key];\n\n if (field) {\n if (field.ref.focus) {\n field.ref.focus();\n\n break;\n } else if (field.options) {\n field.options[0].ref.focus();\n\n break;\n }\n }\n }\n }\n};\n","import isHTMLElement from '../utils/isHTMLElement';\nimport { EVENTS } from '../constants';\nimport { Ref } from '../types';\n\nexport default (\n ref: Ref,\n validateWithStateUpdate: EventListenerOrEventListenerObject,\n): void => {\n if (isHTMLElement(ref) && ref.removeEventListener) {\n ref.removeEventListener(EVENTS.INPUT, validateWithStateUpdate);\n ref.removeEventListener(EVENTS.CHANGE, validateWithStateUpdate);\n ref.removeEventListener(EVENTS.BLUR, validateWithStateUpdate);\n }\n};\n","import { RadioOrCheckboxOption } from '../types';\n\ntype RadioFieldResult = {\n isValid: boolean;\n value: number | string;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: '',\n};\n\nexport default (options?: RadioOrCheckboxOption[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.ref.checked\n ? {\n isValid: true,\n value: option.ref.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';\nimport { RadioOrCheckboxOption } from '../types';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: RadioOrCheckboxOption[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.ref.checked)\n .map(({ ref: { value } }) => value);\n return { value: values, isValid: !!values.length };\n }\n\n const { checked, value, attributes } = options[0].ref;\n\n return checked\n ? attributes && !isUndefined((attributes as any).value)\n ? isUndefined(value) || value === ''\n ? validResult\n : { value: value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import * as React from 'react';\nimport getRadioValue from './getRadioValue';\nimport getMultipleSelectValue from './getMultipleSelectValue';\nimport isRadioInput from '../utils/isRadioInput';\nimport get from '../utils/get';\nimport isFileInput from '../utils/isFileInput';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport getCheckboxValue from './getCheckboxValue';\nimport { FieldRefs, FieldValues, InternalFieldName } from '../types';\n\nexport default function getFieldValue<TFieldValues extends FieldValues>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n name: InternalFieldName<TFieldValues>,\n shallowFieldsStateRef?: React.MutableRefObject<Partial<FieldValues>>,\n excludeDisabled?: boolean,\n) {\n const field = fieldsRef.current[name]!;\n\n if (field) {\n const {\n ref: { value, disabled },\n ref,\n } = field;\n\n if (disabled && excludeDisabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(field.options).value;\n }\n\n if (isMultipleSelect(ref)) {\n return getMultipleSelectValue(ref.options);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(field.options).value;\n }\n\n return value;\n }\n\n if (shallowFieldsStateRef) {\n return get(shallowFieldsStateRef.current, name);\n }\n}\n","import { Ref } from '../types';\n\nexport default function isDetached(element: Ref): boolean {\n if (!element) {\n return true;\n }\n\n if (\n !(element instanceof HTMLElement) ||\n element.nodeType === Node.DOCUMENT_NODE\n ) {\n return false;\n }\n\n return isDetached(element.parentNode as Ref);\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","export default (value: unknown): value is boolean => typeof value === 'boolean';\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 path = updatePath.slice(0, -1);\n const length = path.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 = undefined;\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 = undefined;\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';\nimport removeAllEventListeners from './removeAllEventListeners';\nimport getFieldValue from './getFieldValue';\nimport isRadioInput from '../utils/isRadioInput';\nimport set from '../utils/set';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDetached from '../utils/isDetached';\nimport unset from '../utils/unset';\nimport compact from '../utils/compact';\nimport isUndefined from '../utils/isUndefined';\nimport { Field, FieldRefs, FieldValues, Ref } from '../types';\n\nconst isSameRef = (fieldValue: Field, ref: Ref) =>\n fieldValue && fieldValue.ref === ref;\n\nexport default function findRemovedFieldAndRemoveListener<\n TFieldValues extends FieldValues\n>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n handleChange: ({ type, target }: Event) => Promise<void | boolean>,\n field: Field,\n shallowFieldsStateRef: React.MutableRefObject<FieldValues>,\n shouldUnregister?: boolean,\n forceDelete?: boolean,\n): void {\n const {\n ref,\n ref: { name, type },\n } = field;\n const fieldRef = fieldsRef.current[name] as Field;\n\n if (!shouldUnregister) {\n const value = getFieldValue(fieldsRef, name, shallowFieldsStateRef);\n\n if (!isUndefined(value)) {\n set(shallowFieldsStateRef.current, name, value);\n }\n }\n\n if (!type) {\n delete fieldsRef.current[name];\n return;\n }\n\n if ((isRadioInput(ref) || isCheckBoxInput(ref)) && fieldRef) {\n const { options } = fieldRef;\n\n if (Array.isArray(options) && options.length) {\n compact(options).forEach((option, index): void => {\n const { ref } = option;\n if ((ref && isDetached(ref) && isSameRef(option, ref)) || forceDelete) {\n removeAllEventListeners(ref, handleChange);\n unset(options, `[${index}]`);\n }\n });\n\n if (options && !compact(options).length) {\n delete fieldsRef.current[name];\n }\n } else {\n delete fieldsRef.current[name];\n }\n } else if ((isDetached(ref) && isSameRef(fieldRef, ref)) || forceDelete) {\n removeAllEventListeners(ref, handleChange);\n\n delete fieldsRef.current[name];\n }\n}\n","import { get } from '../utils';\nimport set from '../utils/set';\n\nexport default function setFieldArrayDirtyFields<\n T extends U,\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 setFieldArrayDirtyFields(\n values[index][key],\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n 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 !dirtyFields.length &&\n parentNode &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields.length ? dirtyFields : undefined;\n}\n","export default (value: unknown): value is string => typeof value === 'string';\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 getFieldValue from './getFieldValue';\nimport isString from '../utils/isString';\nimport { deepMerge } from '../utils/deepMerge';\nimport isUndefined from '../utils/isUndefined';\nimport { InternalFieldName, FieldValues, FieldRefs } from '../types';\nimport transformToNestObject from './transformToNestObject';\n\nexport default <TFieldValues extends FieldValues>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n shallowFieldsStateRef?: React.MutableRefObject<Record<string, any>>,\n excludeDisabled?: boolean,\n search?:\n | InternalFieldName<TFieldValues>\n | InternalFieldName<TFieldValues>[]\n | { nest: boolean },\n) => {\n const output = {} as TFieldValues;\n\n for (const name in fieldsRef.current) {\n if (\n isUndefined(search) ||\n (isString(search)\n ? name.startsWith(search)\n : Array.isArray(search) && search.find((data) => name.startsWith(data)))\n ) {\n output[name as InternalFieldName<TFieldValues>] = getFieldValue(\n fieldsRef,\n name,\n undefined,\n excludeDisabled,\n );\n }\n }\n\n return deepMerge(\n transformToNestObject({ ...((shallowFieldsStateRef || {}).current || {}) }),\n transformToNestObject(output),\n );\n};\n","import isObject from '../utils/isObject';\n\nexport default function deepEqual(\n object1: any = [],\n object2: any = [],\n isErrorObject?: boolean,\n) {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n if (!(isErrorObject && ['ref', 'context'].includes(key))) {\n const val1 = object1[key];\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 return true;\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 function isErrorStateChanged<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<TFieldValues>;\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, ValidationValueMessage } from '../types';\n\nconst isValueMessage = (\n value?: ValidationRule,\n): value is ValidationValueMessage => isObject(value) && !isRegex(value);\n\nexport default (validationData?: ValidationRule) =>\n isValueMessage(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import { isValidElement } from 'react';\nimport isString from '../utils/isString';\nimport isObject from '../utils/isObject';\nimport { Message } from '../types';\n\nexport default (value: unknown): value is Message =>\n isString(value) || (isObject(value) && isValidElement(value));\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 <TFieldValues>(\n name: InternalFieldName<TFieldValues>,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors<TFieldValues>,\n type: string,\n message: ValidateResult,\n) => {\n if (validateAllFieldCriteria) {\n const error = errors[name];\n\n return {\n ...error,\n types: {\n ...(error && error.types ? error.types : {}),\n [type]: message || true,\n },\n };\n }\n\n return {};\n};\n","import * as React from 'react';\nimport 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 getFieldsValue from './getFieldValue';\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 {\n Field,\n FieldValues,\n FieldRefs,\n Message,\n FieldError,\n InternalFieldName,\n InternalFieldErrors,\n} from '../types';\n\nexport default async <TFieldValues extends FieldValues>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n validateAllFieldCriteria: boolean,\n {\n ref,\n ref: { type, value },\n options,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n }: Field,\n shallowFieldsStateRef: React.MutableRefObject<Record<string, any>>,\n): Promise<InternalFieldErrors<TFieldValues>> => {\n const fields = fieldsRef.current;\n const name: InternalFieldName<TFieldValues> = ref.name;\n const error: InternalFieldErrors<TFieldValues> = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = value === '';\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 ...(exceedMax\n ? appendErrorsCurry(maxType, message)\n : appendErrorsCurry(minType, message)),\n };\n };\n\n if (\n required &&\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(value))) ||\n (isBoolean(value) && !value) ||\n (isCheckBox && !getCheckboxValue(options).isValid) ||\n (isRadio && !getRadioValue(options).isValid))\n ) {\n const { value: requiredValue, message: requiredMessage } = isMessage(\n required,\n )\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (requiredValue) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message: requiredMessage,\n ref: isRadioOrCheckbox\n ? (((fields[name] as Field).options || [])[0] || {}).ref\n : ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, requiredMessage),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (!isNullOrUndefined(min) || !isNullOrUndefined(max)) {\n let exceedMax;\n let exceedMin;\n const { value: maxValue, message: maxMessage } = getValueAndMessage(max);\n const { value: minValue, message: minMessage } = getValueAndMessage(min);\n\n if (type === 'number' || (!type && !isNaN(value))) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(value);\n if (!isNullOrUndefined(maxValue)) {\n exceedMax = valueNumber > maxValue;\n }\n if (!isNullOrUndefined(minValue)) {\n exceedMin = valueNumber < minValue;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(value);\n if (isString(maxValue)) {\n exceedMax = valueDate > new Date(maxValue);\n }\n if (isString(minValue)) {\n exceedMin = valueDate < new Date(minValue);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxMessage,\n minMessage,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (isString(value) && !isEmpty && (maxLength || minLength)) {\n const {\n value: maxLengthValue,\n message: maxLengthMessage,\n } = getValueAndMessage(maxLength);\n const {\n value: minLengthValue,\n message: minLengthMessage,\n } = getValueAndMessage(minLength);\n const inputLength = value.toString().length;\n const exceedMax =\n !isNullOrUndefined(maxLengthValue) && inputLength > maxLengthValue;\n const exceedMin =\n !isNullOrUndefined(minLengthValue) && inputLength < minLengthValue;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxLengthMessage, minLengthMessage);\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (pattern && !isEmpty) {\n const { value: patternValue, message: patternMessage } = getValueAndMessage(\n pattern,\n );\n\n if (isRegex(patternValue) && !patternValue.test(value)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message: patternMessage,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, patternMessage),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (validate) {\n const fieldValue = getFieldsValue(fieldsRef, name, shallowFieldsStateRef);\n const validateRef = isRadioOrCheckbox && options ? options[0].ref : ref;\n\n if (isFunction(validate)) {\n const result = await validate(fieldValue);\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(fieldValue);\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 isPrimitive from './isPrimitive';\nimport isObject from './isObject';\n\nexport const getPath = <T extends string, U extends object | unknown[]>(\n path: T,\n values: U,\n): string[] => {\n const getInnerPath = <K>(key: K, value: U, isObject?: boolean) => {\n const pathWithIndex = isObject ? `${path}.${key}` : `${path}[${key}]`;\n return isPrimitive(value) ? pathWithIndex : getPath(pathWithIndex, value);\n };\n\n return Object.entries(values)\n .map(([key, value]) => getInnerPath(key, value, isObject(values)))\n .flat(Infinity) as string[];\n};\n","import get from '../utils/get';\nimport { getPath } from '../utils/getPath';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isUndefined from '../utils/isUndefined';\nimport isObject from '../utils/isObject';\nimport {\n DeepPartial,\n FieldValue,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n} from '../types';\n\nexport default <TFieldValues extends FieldValues>(\n fieldValues: TFieldValues,\n fieldName: InternalFieldName<TFieldValues>,\n watchFields: Set<InternalFieldName<TFieldValues>>,\n inputValue: UnpackNestedValue<DeepPartial<TFieldValues>>,\n isSingleField?: boolean,\n):\n | FieldValue<TFieldValues>\n | UnpackNestedValue<DeepPartial<TFieldValues>>\n | undefined => {\n let value;\n\n watchFields.add(fieldName);\n\n if (isEmptyObject(fieldValues)) {\n value = undefined;\n } else {\n value = get(fieldValues, fieldName);\n\n if (isObject(value) || Array.isArray(value)) {\n getPath(fieldName, value).forEach((name) => watchFields.add(name));\n }\n }\n\n return isUndefined(value)\n ? isSingleField\n ? inputValue\n : get(inputValue, fieldName)\n : value;\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.indexOf('['));\n","import { FieldValues, InternalFieldName } from '../types';\n\nexport const isMatchFieldArrayName = (name: string, searchName: string) =>\n RegExp(\n `^${searchName}[\\\\d+]`.replace(/\\[/g, '\\\\[').replace(/\\]/g, '\\\\]'),\n ).test(name);\n\nexport default (\n names: Set<InternalFieldName<FieldValues>>,\n name: InternalFieldName<FieldValues>,\n) => [...names].some((current) => isMatchFieldArrayName(name, current));\n","import { FieldElement } from '../types';\nimport { SELECT } from '../constants';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-one`;\n","import * as React from 'react';\nimport { Field, FieldRefs } from '../types';\nimport isDetached from './isDetached';\n\nexport default function onDomRemove<TFieldValues>(\n fieldsRef: React.MutableRefObject<FieldRefs<TFieldValues>>,\n removeFieldEventListenerAndRef: (\n field: Field | undefined,\n forceDelete?: boolean,\n ) => void,\n): MutationObserver {\n const observer = new MutationObserver((): void => {\n for (const field of Object.values(fieldsRef.current)) {\n if (field && field.options) {\n for (const option of field.options) {\n if (option && option.ref && isDetached(option.ref)) {\n removeFieldEventListenerAndRef(field);\n }\n }\n } else if (field && isDetached(field.ref)) {\n removeFieldEventListenerAndRef(field);\n }\n }\n });\n\n observer.observe(window.document, {\n childList: true,\n subtree: true,\n });\n\n return observer;\n}\n","import isPrimitive from './isPrimitive';\n\nexport default function cloneObject<T extends unknown>(object: T): T {\n let copy: any;\n\n if (isPrimitive(object)) {\n return object;\n }\n\n if (object instanceof Date) {\n copy = new Date(object.getTime());\n return copy;\n }\n\n copy = Array.isArray(object) ? [] : {};\n\n for (const key in object) {\n copy[key] = cloneObject(object[key]);\n }\n\n return copy;\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","import * as React from 'react';\nimport attachEventListeners from './logic/attachEventListeners';\nimport transformToNestObject from './logic/transformToNestObject';\nimport focusOnErrorField from './logic/focusOnErrorField';\nimport findRemovedFieldAndRemoveListener from './logic/findRemovedFieldAndRemoveListener';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldValue from './logic/getFieldValue';\nimport isErrorStateChanged from './logic/isErrorStateChanged';\nimport validateField from './logic/validateField';\nimport assignWatchFields from './logic/assignWatchFields';\nimport skipValidation from './logic/skipValidation';\nimport getFieldArrayParentName from './logic/getFieldArrayParentName';\nimport deepEqual from './utils/deepEqual';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport isCheckBoxInput from './utils/isCheckBoxInput';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isRadioInput from './utils/isRadioInput';\nimport isSelectInput from './utils/isSelectInput';\nimport isFileInput from './utils/isFileInput';\nimport onDomRemove from './utils/onDomRemove';\nimport isObject from './utils/isObject';\nimport { getPath } from './utils/getPath';\nimport isPrimitive from './utils/isPrimitive';\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 isKey from './utils/isKey';\nimport cloneObject from './utils/cloneObject';\nimport modeChecker from './utils/validationModeChecker';\nimport isMultipleSelect from './utils/isMultipleSelect';\nimport compact from './utils/compact';\nimport isNullOrUndefined from './utils/isNullOrUndefined';\nimport isRadioOrCheckboxFunction from './utils/isRadioOrCheckbox';\nimport isHTMLElement from './utils/isHTMLElement';\nimport { EVENTS, UNDEFINED, VALIDATION_MODE } from './constants';\nimport {\n UseFormMethods,\n FieldValues,\n UnpackNestedValue,\n FieldName,\n InternalFieldName,\n FieldValue,\n FieldErrors,\n Field,\n FieldRefs,\n UseFormOptions,\n ValidationRules,\n SubmitHandler,\n FieldElement,\n FormStateProxy,\n ReadFormState,\n Ref,\n HandleChange,\n RadioOrCheckboxOption,\n OmitResetState,\n NestedValue,\n SetValueConfig,\n ErrorOption,\n FormState,\n SubmitErrorHandler,\n FieldNamesMarkedBoolean,\n LiteralToPrimitive,\n DeepPartial,\n InternalNameSet,\n DefaultValues,\n FieldError,\n} from './types';\n\nconst isWindowUndefined = typeof window === UNDEFINED;\nconst isWeb =\n typeof document !== UNDEFINED &&\n !isWindowUndefined &&\n !isUndefined(window.HTMLElement);\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== 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 UnpackNestedValue<DeepPartial<TFieldValues>>,\n shouldFocusError = true,\n shouldUnregister = true,\n criteriaMode,\n}: UseFormOptions<TFieldValues, TContext> = {}): UseFormMethods<TFieldValues> {\n const fieldsRef = React.useRef<FieldRefs<TFieldValues>>({});\n const fieldArrayDefaultValuesRef = React.useRef<\n Record<InternalFieldName<FieldValues>, unknown[]>\n >({});\n const watchFieldsRef = React.useRef<InternalNameSet<TFieldValues>>(new Set());\n const useWatchFieldsRef = React.useRef<\n Record<string, InternalNameSet<TFieldValues>>\n >({});\n const useWatchRenderFunctionsRef = React.useRef<Record<string, () => void>>(\n {},\n );\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 defaultValuesAtRenderRef = React.useRef<\n Partial<DefaultValues<TFieldValues>>\n >({});\n const isUnMount = React.useRef(false);\n const isWatchAllRef = React.useRef(false);\n const handleChangeRef = React.useRef<HandleChange>();\n const shallowFieldsStateRef = React.useRef(\n shouldUnregister ? {} : cloneObject(defaultValues),\n );\n const resetFieldArrayFunctionRef = React.useRef<\n Record<\n InternalFieldName<FieldValues>,\n (data?: UnpackNestedValue<DeepPartial<TFieldValues>>) => void\n >\n >({});\n const contextRef = React.useRef(context);\n const resolverRef = React.useRef(resolver);\n const fieldArrayNamesRef = React.useRef<InternalNameSet<TFieldValues>>(\n new Set(),\n );\n const modeRef = React.useRef(modeChecker(mode));\n const { isOnSubmit, isOnTouch } = modeRef.current;\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\n const [formState, setFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touched: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: !isOnSubmit,\n errors: {},\n });\n const readFormStateRef = React.useRef<ReadFormState>({\n isDirty: !isProxyEnabled,\n dirtyFields: !isProxyEnabled,\n touched: !isProxyEnabled || isOnTouch,\n isSubmitting: !isProxyEnabled,\n isValid: !isProxyEnabled,\n });\n const formStateRef = React.useRef(formState);\n const observerRef = React.useRef<MutationObserver | undefined>();\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = React.useRef(modeChecker(reValidateMode)).current;\n\n contextRef.current = context;\n resolverRef.current = resolver;\n formStateRef.current = formState;\n\n const updateFormState = React.useCallback(\n (state: Partial<FormState<TFieldValues>> = {}) =>\n !isUnMount.current &&\n setFormState({\n ...formStateRef.current,\n ...state,\n }),\n [],\n );\n\n const shouldRenderBaseOnError = React.useCallback(\n (\n name: InternalFieldName<TFieldValues>,\n error: FieldError | undefined,\n shouldRender: boolean | null = false,\n state: {\n dirtyFields?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } = {},\n isValid?: 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 unset(formStateRef.current.errors, name);\n }\n\n if (\n (shouldReRender && !isNullOrUndefined(shouldRender)) ||\n !isEmptyObject(state)\n ) {\n updateFormState({\n ...state,\n errors: formStateRef.current.errors,\n ...(resolverRef.current ? { isValid: !!isValid } : {}),\n });\n }\n },\n [],\n );\n\n const setFieldValue = React.useCallback(\n (\n name: string,\n rawValue:\n | FieldValue<TFieldValues>\n | UnpackNestedValue<DeepPartial<TFieldValues>>\n | string[]\n | undefined\n | null\n | boolean,\n ) => {\n const { ref, options } = fieldsRef.current[name] as Field;\n const value =\n isWeb && isHTMLElement(ref) && isNullOrUndefined(rawValue)\n ? ''\n : rawValue;\n\n if (isRadioInput(ref) && options) {\n options.forEach(\n ({ ref: radioRef }: { ref: HTMLInputElement }) =>\n (radioRef.checked = radioRef.value === value),\n );\n } else if (isFileInput(ref) && !isString(value)) {\n ref.files = value as FileList;\n } else if (isMultipleSelect(ref)) {\n [...ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (value as string[]).includes(\n selectRef.value,\n )),\n );\n } else if (isCheckBoxInput(ref) && options) {\n options.length > 1\n ? options.forEach(\n ({ ref: checkboxRef }) =>\n (checkboxRef.checked = Array.isArray(value)\n ? !!(value as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : value === checkboxRef.value),\n )\n : (options[0].ref.checked = !!value);\n } else {\n ref.value = value;\n }\n },\n [],\n );\n\n const isFormDirty = () =>\n !deepEqual(\n getValues(),\n isEmptyObject(defaultValuesRef.current)\n ? defaultValuesAtRenderRef.current\n : defaultValuesRef.current,\n );\n\n const updateAndGetDirtyState = React.useCallback(\n (\n name: InternalFieldName<TFieldValues>,\n shouldRender = true,\n ): {\n dirtyFields?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } => {\n if (\n readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields\n ) {\n const isFieldDirty =\n get(defaultValuesAtRenderRef.current, name) !==\n getFieldValue(fieldsRef, name, shallowFieldsStateRef);\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: isFormDirty(),\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 if (isChanged && shouldRender) {\n formStateRef.current = {\n ...formStateRef.current,\n ...state,\n };\n updateFormState({\n ...state,\n });\n }\n\n return isChanged ? state : {};\n }\n\n return {};\n },\n [],\n );\n\n const executeValidation = React.useCallback(\n async (\n name: InternalFieldName<TFieldValues>,\n skipReRender?: boolean | null,\n ): Promise<boolean> => {\n if (fieldsRef.current[name]) {\n const error = (\n await validateField<TFieldValues>(\n fieldsRef,\n isValidateAllFieldCriteria,\n fieldsRef.current[name] as Field,\n shallowFieldsStateRef,\n )\n )[name];\n\n shouldRenderBaseOnError(name, error, skipReRender);\n\n return isUndefined(error);\n }\n\n return false;\n },\n [shouldRenderBaseOnError, isValidateAllFieldCriteria],\n );\n\n const executeSchemaOrResolverValidation = React.useCallback(\n async (\n names:\n | InternalFieldName<TFieldValues>\n | InternalFieldName<TFieldValues>[],\n ) => {\n const { errors } = await resolverRef.current!(\n getValues(),\n contextRef.current,\n isValidateAllFieldCriteria,\n );\n const previousFormIsValid = formStateRef.current.isValid;\n\n if (Array.isArray(names)) {\n const isInputsValid = names\n .map((name) => {\n const error = get(errors, name);\n\n error\n ? set(formStateRef.current.errors, name, error)\n : unset(formStateRef.current.errors, name);\n\n return !error;\n })\n .every(Boolean);\n\n updateFormState({\n isValid: isEmptyObject(errors),\n errors: formStateRef.current.errors,\n });\n\n return isInputsValid;\n } else {\n const error = get(errors, names);\n\n shouldRenderBaseOnError(\n names,\n error,\n previousFormIsValid !== isEmptyObject(errors),\n {},\n isEmptyObject(errors),\n );\n\n return !error;\n }\n },\n [shouldRenderBaseOnError, isValidateAllFieldCriteria],\n );\n\n const trigger = React.useCallback(\n async (\n name?: FieldName<TFieldValues> | FieldName<TFieldValues>[],\n ): Promise<boolean> => {\n const fields = name || Object.keys(fieldsRef.current);\n\n if (resolverRef.current) {\n return executeSchemaOrResolverValidation(fields);\n }\n\n if (Array.isArray(fields)) {\n const result = await Promise.all(\n fields.map(async (data) => await executeValidation(data, null)),\n );\n updateFormState();\n return result.every(Boolean);\n }\n\n return await executeValidation(fields, readFormStateRef.current.isValid);\n },\n [executeSchemaOrResolverValidation, executeValidation],\n );\n\n const setInternalValues = React.useCallback(\n <T extends string, U extends object | unknown[]>(\n name: T,\n value: U,\n { shouldDirty, shouldValidate }: SetValueConfig,\n ) => {\n const data = {};\n set(data, name, value);\n\n for (const fieldName of getPath(name, value)) {\n if (fieldsRef.current[fieldName]) {\n setFieldValue(fieldName, get(data, fieldName));\n shouldDirty && updateAndGetDirtyState(fieldName);\n shouldValidate && trigger(fieldName as FieldName<TFieldValues>);\n }\n }\n },\n [trigger, setFieldValue, updateAndGetDirtyState],\n );\n\n const setInternalValue = React.useCallback(\n (\n name: InternalFieldName<TFieldValues>,\n value: FieldValue<TFieldValues> | null | undefined | boolean,\n config: SetValueConfig = {},\n ) => {\n if (fieldsRef.current[name]) {\n setFieldValue(name, value);\n config.shouldDirty && updateAndGetDirtyState(name);\n } else if (!isPrimitive(value)) {\n setInternalValues(name, value, config);\n\n if (fieldArrayNamesRef.current.has(name)) {\n fieldArrayDefaultValuesRef.current[name] = value;\n resetFieldArrayFunctionRef.current[name]({\n [name]: value,\n } as UnpackNestedValue<DeepPartial<TFieldValues>>);\n\n if (\n (readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields) &&\n config.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 updateFormState({\n isDirty: !deepEqual(\n { ...getValues(), [name]: value },\n defaultValuesRef.current,\n ),\n dirtyFields: formStateRef.current.dirtyFields,\n });\n }\n }\n }\n\n !shouldUnregister && set(shallowFieldsStateRef.current, name, value);\n },\n [updateAndGetDirtyState, setFieldValue, setInternalValues],\n );\n\n const isFieldWatched = (name: string) =>\n isWatchAllRef.current ||\n watchFieldsRef.current.has(name) ||\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\n\n const renderWatchedInputs = (name: string, found = true): boolean => {\n if (!isEmptyObject(useWatchFieldsRef.current)) {\n for (const key in useWatchFieldsRef.current) {\n if (\n !name ||\n !useWatchFieldsRef.current[key].size ||\n useWatchFieldsRef.current[key].has(name) ||\n useWatchFieldsRef.current[key].has(getFieldArrayParentName(name))\n ) {\n useWatchRenderFunctionsRef.current[key]();\n found = false;\n }\n }\n }\n\n return found;\n };\n\n function setValue<\n TFieldName extends string,\n TFieldValue extends TFieldValues[TFieldName]\n >(\n name: TFieldName,\n value: TFieldValue extends NestedValue<infer U>\n ? U\n : UnpackNestedValue<DeepPartial<LiteralToPrimitive<TFieldValue>>>,\n config?: SetValueConfig,\n ): void {\n setInternalValue(name, value as TFieldValues[string], config);\n isFieldWatched(name) && updateFormState();\n renderWatchedInputs(name);\n (config || {}).shouldValidate && trigger(name as any);\n }\n\n handleChangeRef.current = handleChangeRef.current\n ? handleChangeRef.current\n : async ({ type, target }: Event): Promise<void | boolean> => {\n const name = (target as Ref)!.name;\n const field = fieldsRef.current[name];\n let error;\n let isValid;\n\n if (field) {\n const isBlurEvent = type === EVENTS.BLUR;\n const shouldSkipValidation = skipValidation({\n isBlurEvent,\n isReValidateOnChange,\n isReValidateOnBlur,\n isTouched: !!get(formStateRef.current.touched, name),\n isSubmitted: formStateRef.current.isSubmitted,\n ...modeRef.current,\n });\n let state = updateAndGetDirtyState(name, false);\n let shouldRender = !isEmptyObject(state) || isFieldWatched(name);\n\n if (\n isBlurEvent &&\n !get(formStateRef.current.touched, name) &&\n readFormStateRef.current.touched\n ) {\n set(formStateRef.current.touched, name, true);\n state = {\n ...state,\n touched: formStateRef.current.touched,\n };\n }\n\n if (shouldSkipValidation) {\n renderWatchedInputs(name);\n return (\n (!isEmptyObject(state) ||\n (shouldRender && isEmptyObject(state))) &&\n updateFormState(state)\n );\n }\n\n if (resolverRef.current) {\n const { errors } = await resolverRef.current(\n getValues(),\n contextRef.current,\n isValidateAllFieldCriteria,\n );\n const previousFormIsValid = formStateRef.current.isValid;\n\n error = get(errors, name);\n\n isValid = isEmptyObject(errors);\n\n if (previousFormIsValid !== isValid) {\n shouldRender = true;\n }\n } else {\n error = (\n await validateField<TFieldValues>(\n fieldsRef,\n isValidateAllFieldCriteria,\n field,\n shallowFieldsStateRef,\n )\n )[name];\n }\n\n renderWatchedInputs(name);\n shouldRenderBaseOnError(name, error, shouldRender, state, isValid);\n }\n };\n\n function setFieldArrayDefaultValues<T extends FieldValues>(data: T): T {\n if (!shouldUnregister) {\n let copy = cloneObject(data);\n\n for (const value of fieldArrayNamesRef.current) {\n if (isKey(value) && !copy[value]) {\n copy = {\n ...copy,\n [value]: [],\n };\n }\n }\n\n return copy;\n }\n return data;\n }\n\n function getValues(): UnpackNestedValue<TFieldValues>;\n function getValues<TFieldName extends string, TFieldValue extends unknown>(\n name: TFieldName,\n ): TFieldName extends keyof TFieldValues\n ? UnpackNestedValue<TFieldValues>[TFieldName]\n : TFieldValue;\n function getValues<TFieldName extends keyof TFieldValues>(\n names: TFieldName[],\n ): UnpackNestedValue<Pick<TFieldValues, TFieldName>>;\n function getValues(payload?: string | string[]): unknown {\n if (isString(payload)) {\n return getFieldValue(fieldsRef, payload, shallowFieldsStateRef);\n }\n\n if (Array.isArray(payload)) {\n const data = {};\n\n for (const name of payload) {\n set(data, name, getFieldValue(fieldsRef, name, shallowFieldsStateRef));\n }\n\n return data;\n }\n\n return setFieldArrayDefaultValues(\n getFieldsValues(fieldsRef, shallowFieldsStateRef),\n );\n }\n\n const validateResolver = React.useCallback(\n async (values = {}) => {\n const { errors } = await resolverRef.current!(\n {\n ...defaultValuesRef.current,\n ...getValues(),\n ...values,\n },\n contextRef.current,\n isValidateAllFieldCriteria,\n );\n const isValid = isEmptyObject(errors);\n\n formStateRef.current.isValid !== isValid &&\n updateFormState({\n isValid,\n });\n },\n [isValidateAllFieldCriteria],\n );\n\n const removeFieldEventListener = React.useCallback(\n (field: Field, forceDelete?: boolean) =>\n findRemovedFieldAndRemoveListener(\n fieldsRef,\n handleChangeRef.current!,\n field,\n shallowFieldsStateRef,\n shouldUnregister,\n forceDelete,\n ),\n [shouldUnregister],\n );\n\n const updateWatchedValue = (name: string) => {\n if (isWatchAllRef.current) {\n updateFormState();\n } else if (watchFieldsRef) {\n let shouldRenderUseWatch = true;\n for (const watchField of watchFieldsRef.current) {\n if (watchField.startsWith(name)) {\n updateFormState();\n shouldRenderUseWatch = false;\n break;\n }\n }\n\n shouldRenderUseWatch && renderWatchedInputs(name);\n }\n };\n\n const removeFieldEventListenerAndRef = React.useCallback(\n (field: Field | undefined, forceDelete?: boolean) => {\n if (field) {\n removeFieldEventListener(field, forceDelete);\n\n if (shouldUnregister && !compact(field.options || []).length) {\n unset(defaultValuesAtRenderRef.current, field.ref.name);\n unset(validFieldsRef.current, field.ref.name);\n unset(fieldsWithValidationRef.current, field.ref.name);\n unset(formStateRef.current.errors, field.ref.name);\n set(formStateRef.current.dirtyFields, field.ref.name, true);\n\n updateFormState({\n errors: formStateRef.current.errors,\n isDirty: isFormDirty(),\n dirtyFields: formStateRef.current.dirtyFields,\n });\n\n resolverRef.current && validateResolver();\n updateWatchedValue(field.ref.name);\n }\n }\n },\n [validateResolver, removeFieldEventListener],\n );\n\n function clearErrors(\n name?: FieldName<TFieldValues> | FieldName<TFieldValues>[],\n ): void {\n name &&\n (Array.isArray(name) ? name : [name]).forEach((inputName) =>\n fieldsRef.current[inputName]\n ? isKey(inputName)\n ? delete formStateRef.current.errors[inputName]\n : set(formStateRef.current.errors, inputName, undefined)\n : unset(formStateRef.current.errors, inputName),\n );\n\n updateFormState({\n errors: name ? formStateRef.current.errors : {},\n });\n }\n\n function setError(name: FieldName<TFieldValues>, error: ErrorOption): void {\n const ref = (fieldsRef.current[name] || {})!.ref;\n\n set(formStateRef.current.errors, name, {\n ...error,\n ref,\n });\n\n updateFormState({\n isValid: false,\n errors: formStateRef.current.errors,\n });\n\n error.shouldFocus && ref && ref.focus && ref.focus();\n }\n\n const watchInternal = React.useCallback(\n (\n fieldNames?: string | string[],\n defaultValue?: unknown,\n watchId?: string,\n ) => {\n const watchFields = watchId\n ? useWatchFieldsRef.current[watchId]\n : watchFieldsRef.current;\n const combinedDefaultValues = isUndefined(defaultValue)\n ? defaultValuesRef.current\n : defaultValue;\n const fieldValues = getFieldsValues<TFieldValues>(\n fieldsRef,\n shallowFieldsStateRef,\n false,\n fieldNames,\n );\n\n if (isString(fieldNames)) {\n return assignWatchFields<TFieldValues>(\n fieldValues,\n fieldNames,\n watchFields,\n isUndefined(defaultValue)\n ? get(combinedDefaultValues, fieldNames)\n : (defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>),\n true,\n );\n }\n\n if (Array.isArray(fieldNames)) {\n return fieldNames.reduce(\n (previous, name) => ({\n ...previous,\n [name]: assignWatchFields<TFieldValues>(\n fieldValues,\n name,\n watchFields,\n combinedDefaultValues as UnpackNestedValue<\n DeepPartial<TFieldValues>\n >,\n ),\n }),\n {},\n );\n }\n\n isWatchAllRef.current = isUndefined(watchId);\n\n return transformToNestObject(\n (!isEmptyObject(fieldValues) && fieldValues) ||\n (combinedDefaultValues as FieldValues),\n );\n },\n [],\n );\n\n function watch(): UnpackNestedValue<TFieldValues>;\n function watch<\n TFieldName extends string,\n TFieldValue extends TFieldValues[TFieldName]\n >(\n name: TFieldName,\n defaultValue?: UnpackNestedValue<LiteralToPrimitive<TFieldValue>>,\n ): UnpackNestedValue<LiteralToPrimitive<TFieldValue>>;\n function watch<TFieldName extends keyof TFieldValues>(\n names: TFieldName[],\n defaultValues?: UnpackNestedValue<\n DeepPartial<Pick<TFieldValues, TFieldName>>\n >,\n ): UnpackNestedValue<Pick<TFieldValues, TFieldName>>;\n function watch(\n names: string[],\n defaultValues?: UnpackNestedValue<DeepPartial<TFieldValues>>,\n ): UnpackNestedValue<DeepPartial<TFieldValues>>;\n function watch(\n fieldNames?: string | string[],\n defaultValue?: unknown,\n ): unknown {\n return watchInternal(fieldNames, defaultValue);\n }\n\n function unregister(\n name: FieldName<TFieldValues> | FieldName<TFieldValues>[],\n ): void {\n for (const fieldName of Array.isArray(name) ? name : [name]) {\n removeFieldEventListenerAndRef(fieldsRef.current[fieldName], true);\n }\n }\n\n function registerFieldRef<TFieldElement extends FieldElement<TFieldValues>>(\n ref: TFieldElement & Ref,\n validateOptions: ValidationRules | null = {},\n ): ((name: InternalFieldName<TFieldValues>) => void) | void {\n if (process.env.NODE_ENV !== 'production') {\n if (!ref.name) {\n return console.warn(\n '📋 Field is missing `name` attribute',\n ref,\n `https://react-hook-form.com/api#useForm`,\n );\n }\n\n if (\n fieldArrayNamesRef.current.has(ref.name.split(/\\[\\d+\\]$/)[0]) &&\n !RegExp(\n `^${ref.name.split(/\\[\\d+\\]$/)[0]}[\\\\d+].\\\\w+`\n .replace(/\\[/g, '\\\\[')\n .replace(/\\]/g, '\\\\]'),\n ).test(ref.name)\n ) {\n return console.warn(\n '📋 `name` prop should be in object shape: name=\"test[index].name\"',\n ref,\n 'https://react-hook-form.com/api#useFieldArray',\n );\n }\n }\n\n const { name, type, value } = ref;\n const fieldRefAndValidationOptions = {\n ref,\n ...validateOptions,\n };\n const fields = fieldsRef.current;\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n const isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\n const compareRef = (currentRef: Ref) =>\n isWeb && (!isHTMLElement(ref) || currentRef === ref);\n let field = fields[name] as Field;\n let isEmptyDefaultValue = true;\n let defaultValue;\n\n if (\n field &&\n (isRadioOrCheckbox\n ? Array.isArray(field.options) &&\n compact(field.options).find((option) => {\n return value === option.ref.value && compareRef(option.ref);\n })\n : compareRef(field.ref))\n ) {\n fields[name] = {\n ...field,\n ...validateOptions,\n };\n return;\n }\n\n if (type) {\n field = isRadioOrCheckbox\n ? {\n options: [\n ...compact((field && field.options) || []),\n {\n ref,\n } as RadioOrCheckboxOption,\n ],\n ref: { type, name },\n ...validateOptions,\n }\n : {\n ...fieldRefAndValidationOptions,\n };\n } else {\n field = fieldRefAndValidationOptions;\n }\n\n fields[name] = field;\n\n const isEmptyUnmountFields = isUndefined(\n get(shallowFieldsStateRef.current, name),\n );\n\n if (!isEmptyObject(defaultValuesRef.current) || !isEmptyUnmountFields) {\n defaultValue = get(\n isEmptyUnmountFields\n ? defaultValuesRef.current\n : shallowFieldsStateRef.current,\n name,\n );\n isEmptyDefaultValue = isUndefined(defaultValue);\n\n if (!isEmptyDefaultValue && !isFieldArray) {\n setFieldValue(name, defaultValue);\n }\n }\n\n if (!isEmptyObject(validateOptions)) {\n set(fieldsWithValidationRef.current, name, true);\n\n if (!isOnSubmit && readFormStateRef.current.isValid) {\n validateField(\n fieldsRef,\n isValidateAllFieldCriteria,\n field,\n shallowFieldsStateRef,\n ).then((error: FieldErrors) => {\n const previousFormIsValid = formStateRef.current.isValid;\n\n isEmptyObject(error)\n ? set(validFieldsRef.current, name, true)\n : unset(validFieldsRef.current, name);\n\n if (previousFormIsValid !== isEmptyObject(error)) {\n updateFormState();\n }\n });\n }\n }\n\n if (\n !defaultValuesAtRenderRef.current[name] &&\n !(isFieldArray && isEmptyDefaultValue)\n ) {\n const fieldValue = getFieldValue(fieldsRef, name, shallowFieldsStateRef);\n set(\n defaultValuesAtRenderRef.current,\n name,\n isEmptyDefaultValue\n ? isObject(fieldValue)\n ? { ...fieldValue }\n : fieldValue\n : defaultValue,\n );\n !isFieldArray && unset(formStateRef.current.dirtyFields, name);\n }\n\n if (type) {\n attachEventListeners(\n isRadioOrCheckbox && field.options\n ? field.options[field.options.length - 1]\n : field,\n isRadioOrCheckbox || isSelectInput(ref),\n handleChangeRef.current,\n );\n }\n }\n\n function register<TFieldElement extends FieldElement<TFieldValues>>(\n rules?: ValidationRules,\n ): (ref: (TFieldElement & Ref) | null) => void;\n function register(\n name: FieldName<TFieldValues>,\n rules?: ValidationRules,\n ): void;\n function register<TFieldElement extends FieldElement<TFieldValues>>(\n ref: (TFieldElement & Ref) | null,\n rules?: ValidationRules,\n ): void;\n function register<TFieldElement extends FieldElement<TFieldValues>>(\n refOrValidationOptions?:\n | FieldName<TFieldValues>\n | ValidationRules\n | (TFieldElement & Ref)\n | null,\n rules?: ValidationRules,\n ): ((ref: (TFieldElement & Ref) | null) => void) | void {\n if (!isWindowUndefined) {\n if (isString(refOrValidationOptions)) {\n registerFieldRef({ name: refOrValidationOptions }, rules);\n } else if (\n isObject(refOrValidationOptions) &&\n 'name' in refOrValidationOptions\n ) {\n registerFieldRef(refOrValidationOptions, rules);\n } else {\n return (ref: (TFieldElement & Ref) | null) =>\n ref && registerFieldRef(ref, refOrValidationOptions);\n }\n }\n }\n\n const handleSubmit = React.useCallback(\n <TSubmitFieldValues extends FieldValues = TFieldValues>(\n onValid: SubmitHandler<TSubmitFieldValues>,\n onInvalid?: SubmitErrorHandler<TFieldValues>,\n ) => async (e?: React.BaseSyntheticEvent): Promise<void> => {\n if (e && e.preventDefault) {\n e.preventDefault();\n e.persist();\n }\n let fieldErrors: FieldErrors<TFieldValues> = {};\n let fieldValues = setFieldArrayDefaultValues(\n getFieldsValues(fieldsRef, shallowFieldsStateRef, true),\n );\n\n readFormStateRef.current.isSubmitting &&\n updateFormState({\n isSubmitting: true,\n });\n\n try {\n if (resolverRef.current) {\n const { errors, values } = await resolverRef.current(\n fieldValues,\n contextRef.current,\n isValidateAllFieldCriteria,\n );\n formStateRef.current.errors = fieldErrors = errors;\n fieldValues = values;\n } else {\n for (const field of Object.values(fieldsRef.current)) {\n if (field) {\n const {\n ref: { name },\n } = field;\n\n const fieldError = await validateField(\n fieldsRef,\n isValidateAllFieldCriteria,\n field,\n shallowFieldsStateRef,\n );\n\n if (fieldError[name]) {\n set(fieldErrors, name, fieldError[name]);\n unset(validFieldsRef.current, name);\n } else if (get(fieldsWithValidationRef.current, name)) {\n unset(formStateRef.current.errors, name);\n set(validFieldsRef.current, name, true);\n }\n }\n }\n }\n\n if (\n isEmptyObject(fieldErrors) &&\n Object.keys(formStateRef.current.errors).every(\n (name) => name in fieldsRef.current,\n )\n ) {\n updateFormState({\n errors: {},\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n formStateRef.current.errors = {\n ...formStateRef.current.errors,\n ...fieldErrors,\n };\n onInvalid && (await onInvalid(fieldErrors, e));\n shouldFocusError && focusOnErrorField(fieldsRef.current, fieldErrors);\n }\n } finally {\n updateFormState({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(formStateRef.current.errors),\n errors: formStateRef.current.errors,\n submitCount: formStateRef.current.submitCount + 1,\n });\n }\n },\n [shouldFocusError, isValidateAllFieldCriteria],\n );\n\n const resetRefs = ({\n errors,\n isDirty,\n isSubmitted,\n touched,\n isValid,\n submitCount,\n dirtyFields,\n }: OmitResetState) => {\n if (!isValid) {\n validFieldsRef.current = {};\n fieldsWithValidationRef.current = {};\n }\n\n defaultValuesAtRenderRef.current = {};\n fieldArrayDefaultValuesRef.current = {};\n watchFieldsRef.current = new Set();\n isWatchAllRef.current = false;\n\n updateFormState({\n submitCount: submitCount ? formStateRef.current.submitCount : 0,\n isDirty: isDirty ? formStateRef.current.isDirty : false,\n isSubmitted: isSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: isValid ? formStateRef.current.isValid : false,\n dirtyFields: dirtyFields ? formStateRef.current.dirtyFields : {},\n touched: touched ? formStateRef.current.touched : {},\n errors: errors ? formStateRef.current.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n };\n\n const reset = (\n values?: UnpackNestedValue<DeepPartial<TFieldValues>>,\n omitResetState: OmitResetState = {},\n ): void => {\n if (isWeb) {\n for (const field of Object.values(fieldsRef.current)) {\n if (field) {\n const { ref, options } = field;\n const inputRef =\n isRadioOrCheckboxFunction(ref) && Array.isArray(options)\n ? options[0].ref\n : ref;\n\n if (isHTMLElement(inputRef)) {\n try {\n inputRef.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n }\n\n fieldsRef.current = {};\n defaultValuesRef.current = cloneObject(values || defaultValuesRef.current);\n values && renderWatchedInputs('');\n\n Object.values(resetFieldArrayFunctionRef.current).forEach(\n (resetFieldArray) => isFunction(resetFieldArray) && resetFieldArray(),\n );\n\n shallowFieldsStateRef.current = shouldUnregister\n ? {}\n : cloneObject(values) || {};\n\n resetRefs(omitResetState);\n };\n\n React.useEffect(() => {\n isUnMount.current = false;\n resolver && readFormStateRef.current.isValid && validateResolver();\n\n observerRef.current =\n observerRef.current || !isWeb\n ? observerRef.current\n : onDomRemove(fieldsRef, removeFieldEventListenerAndRef);\n\n return () => {\n isUnMount.current = true;\n observerRef.current && observerRef.current.disconnect();\n shallowFieldsStateRef.current = {};\n\n if (process.env.NODE_ENV !== 'production') {\n return;\n }\n\n Object.values(fieldsRef.current).forEach((field) =>\n removeFieldEventListenerAndRef(field, true),\n );\n };\n }, [removeFieldEventListenerAndRef]);\n\n if (!resolver && readFormStateRef.current.isValid) {\n formState.isValid =\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\n isEmptyObject(formStateRef.current.errors);\n }\n\n const commonProps = {\n trigger,\n setValue: React.useCallback(setValue, [setInternalValue, trigger]),\n getValues: React.useCallback(getValues, []),\n register: React.useCallback(register, [defaultValuesRef.current]),\n unregister: React.useCallback(unregister, []),\n };\n\n const control = {\n updateWatchedValue,\n shouldUnregister,\n removeFieldEventListener,\n watchInternal,\n mode: modeRef.current,\n reValidateMode: {\n isReValidateOnBlur,\n isReValidateOnChange,\n },\n fieldsRef,\n resetFieldArrayFunctionRef,\n useWatchFieldsRef,\n useWatchRenderFunctionsRef,\n fieldArrayDefaultValuesRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayNamesRef,\n readFormStateRef,\n formStateRef,\n defaultValuesRef,\n shallowFieldsStateRef,\n updateFormState,\n validateResolver: resolver ? validateResolver : undefined,\n ...commonProps,\n };\n\n return {\n watch,\n control,\n formState: isProxyEnabled\n ? new Proxy(formState, {\n get: (obj, prop: keyof FormStateProxy) => {\n if (process.env.NODE_ENV !== 'production') {\n if (prop === 'isValid' && isOnSubmit) {\n console.warn(\n '📋 `formState.isValid` is applicable with `onTouched`, `onChange` or `onBlur` mode. https://react-hook-form.com/api#formState',\n );\n }\n }\n\n if (prop in obj) {\n readFormStateRef.current[prop] = true;\n return obj[prop];\n }\n\n return undefined;\n },\n })\n : formState,\n handleSubmit,\n reset: React.useCallback(reset, []),\n clearErrors: React.useCallback(clearErrors, []),\n setError: React.useCallback(setError, []),\n errors: formState.errors,\n ...commonProps,\n };\n}\n","import * as React from 'react';\nimport { UseFormMethods, FieldValues, FormProviderProps } from './types';\n\nconst FormContext = React.createContext<UseFormMethods | null>(null);\n\nFormContext.displayName = 'RHFContext';\n\nexport const useFormContext = <\n TFieldValues extends FieldValues\n>(): UseFormMethods<TFieldValues> =>\n React.useContext(FormContext) as UseFormMethods<TFieldValues>;\n\nexport const FormProvider = <TFieldValues extends FieldValues>({\n children,\n ...props\n}: FormProviderProps<TFieldValues>) => (\n <FormContext.Provider value={{ ...props } as UseFormMethods}>\n {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, function (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 isUndefined from './isUndefined';\nimport compact from './compact';\n\nconst removeAt = <T>(data: T[], index: number): T[] => [\n ...data.slice(0, index),\n ...data.slice(index + 1),\n];\n\nfunction removeAtIndexes<T>(data: T[], index: number[]): T[] {\n let k = -1;\n\n while (++k < data.length) {\n if (index.indexOf(k) >= 0) {\n delete data[k];\n }\n }\n\n return compact(data);\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n isUndefined(index)\n ? []\n : Array.isArray(index)\n ? removeAtIndexes(data, index)\n : removeAt(data, index);\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 const temp = [data[indexB], data[indexA]];\n data[indexA] = temp[0];\n data[indexB] = temp[1];\n};\n","export default function prepend<T>(data: T[]): (T | undefined)[];\nexport default function prepend<T>(data: T[], value: T | T[]): T[];\nexport default function prepend<T>(\n data: T[],\n value?: T | T[],\n): (T | undefined)[] {\n return [...(Array.isArray(value) ? value : [value || undefined]), ...data];\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 || undefined]),\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 isObject from './isObject';\n\nfunction mapValueToBoolean<U>(value: U): boolean[] | Record<string, boolean>[] {\n if (isObject(value)) {\n const object: Record<string, boolean> = {};\n\n for (const key in value) {\n object[key] = true;\n }\n\n return [object];\n }\n\n return [true];\n}\n\nexport default <T>(value: T) =>\n ((Array.isArray(value) ? value : [value]) as T[])\n .map(mapValueToBoolean)\n .flat();\n","import * as React from 'react';\nimport { useFormContext } from './useFormContext';\nimport { isMatchFieldArrayName } from './logic/isNameInFieldArray';\nimport generateId from './logic/generateId';\nimport deepEqual from './utils/deepEqual';\nimport getFieldArrayParentName from './logic/getFieldArrayParentName';\nimport get from './utils/get';\nimport set from './utils/set';\nimport isUndefined from './utils/isUndefined';\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 insertAt from './utils/insert';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport fillBooleanArray from './utils/fillBooleanArray';\nimport compact from './utils/compact';\nimport {\n Field,\n FieldValues,\n UseFieldArrayOptions,\n Control,\n ArrayField,\n UnpackNestedValue,\n DeepPartial,\n UseFieldArrayMethods,\n} from './types';\n\nconst mapIds = <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id'\n>(\n values: Partial<TFieldArrayValues>[],\n keyName: TKeyName,\n): Partial<ArrayField<TFieldArrayValues, TKeyName>>[] =>\n values.map((value: Partial<TFieldArrayValues>) => ({\n [keyName]: generateId(),\n ...value,\n }));\n\nexport const useFieldArray = <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id',\n TControl extends Control = Control\n>({\n control,\n name,\n keyName = 'id' as TKeyName,\n}: UseFieldArrayOptions<TKeyName, TControl>): UseFieldArrayMethods<\n TFieldArrayValues,\n TKeyName\n> => {\n const methods = useFormContext();\n\n if (process.env.NODE_ENV !== 'production') {\n if (!control && !methods) {\n throw new Error(\n '📋 useFieldArray is missing `control` prop. https://react-hook-form.com/api#useFieldArray',\n );\n }\n }\n\n const focusIndexRef = React.useRef(-1);\n const {\n updateWatchedValue,\n resetFieldArrayFunctionRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n removeFieldEventListener,\n formStateRef,\n shallowFieldsStateRef,\n updateFormState,\n readFormStateRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n validateResolver,\n getValues,\n shouldUnregister,\n } = control || methods.control;\n\n const fieldArrayParentName = getFieldArrayParentName(name);\n const memoizedDefaultValues = React.useRef<Partial<TFieldArrayValues>[]>([\n ...(get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)\n ? get(fieldArrayDefaultValuesRef.current, name, [])\n : get(\n shouldUnregister\n ? defaultValuesRef.current\n : shallowFieldsStateRef.current,\n name,\n [],\n )),\n ]);\n const [fields, setFields] = React.useState<\n Partial<ArrayField<TFieldArrayValues, TKeyName>>[]\n >(mapIds(memoizedDefaultValues.current, keyName));\n const allFields = React.useRef<\n Partial<ArrayField<TFieldArrayValues, TKeyName>>[]\n >(fields);\n\n const getCurrentFieldsValues = () =>\n get(getValues(), name, allFields.current).map(\n (item: Partial<TFieldArrayValues>, index: number) => ({\n ...allFields.current[index],\n ...item,\n }),\n );\n\n allFields.current = fields;\n fieldArrayNamesRef.current.add(name);\n\n if (!get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)) {\n set(\n fieldArrayDefaultValuesRef.current,\n fieldArrayParentName,\n get(defaultValuesRef.current, fieldArrayParentName),\n );\n }\n\n const setFieldAndValidState = (\n fieldsValues: Partial<ArrayField<TFieldArrayValues, TKeyName>>[],\n ) => {\n setFields(fieldsValues);\n\n if (readFormStateRef.current.isValid && validateResolver) {\n const values = getValues();\n set(values, name, fieldsValues);\n validateResolver(values);\n }\n };\n\n const getIsDirtyState = (\n flagOrFields?: (Partial<TFieldArrayValues> | undefined)[],\n ): boolean =>\n (readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields) &&\n (isUndefined(flagOrFields) ||\n !deepEqual(\n flagOrFields.map(({ [keyName]: omitted, ...rest } = {}) => rest),\n get(defaultValuesRef.current, name),\n ));\n\n const resetFields = () => {\n for (const key in fieldsRef.current) {\n isMatchFieldArrayName(key, name) &&\n removeFieldEventListener(fieldsRef.current[key] as Field, true);\n }\n };\n\n const cleanup = <T>(ref: T) =>\n !compact(get(ref, name, [])).length && unset(ref, name);\n\n const updateDirtyFieldsWithDefaultValues = <\n T extends { [k: string]: unknown }[]\n >(\n updatedFieldArrayValues?: T,\n ) => {\n const defaultFieldArrayValues = get(defaultValuesRef.current, name, []);\n const updateDirtyFieldsBaseOnDefaultValues = <U extends T>(\n base: U,\n target: U,\n ) => {\n for (const key in base) {\n for (const innerKey in base[key]) {\n if (\n innerKey !== keyName &&\n (!target[key] ||\n !base[key] ||\n base[key][innerKey] !== target[key][innerKey])\n ) {\n set(formStateRef.current.dirtyFields, `${name}[${key}]`, {\n ...get(formStateRef.current.dirtyFields, `${name}[${key}]`, {}),\n [innerKey]: true,\n });\n }\n }\n }\n };\n\n if (updatedFieldArrayValues) {\n updateDirtyFieldsBaseOnDefaultValues(\n defaultFieldArrayValues,\n updatedFieldArrayValues,\n );\n updateDirtyFieldsBaseOnDefaultValues(\n updatedFieldArrayValues,\n defaultFieldArrayValues,\n );\n }\n };\n\n const batchStateUpdate = <\n T extends Function,\n K extends { [k: string]: unknown }[]\n >(\n method: T,\n args: {\n argA?: unknown;\n argB?: unknown;\n argC?: unknown;\n argD?: unknown;\n },\n updatedFieldValues?: K,\n isDirty = true,\n shouldSet = true,\n shouldUpdateValid = false,\n ) => {\n if (get(shallowFieldsStateRef.current, name)) {\n const output = method(\n get(shallowFieldsStateRef.current, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(shallowFieldsStateRef.current, name, output);\n }\n\n if (get(fieldArrayDefaultValuesRef.current, name)) {\n const output = method(\n get(fieldArrayDefaultValuesRef.current, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(fieldArrayDefaultValuesRef.current, name, output);\n cleanup(fieldArrayDefaultValuesRef.current);\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.touched &&\n get(formStateRef.current.touched, name)\n ) {\n const output = method(\n get(formStateRef.current.touched, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.touched, name, output);\n cleanup(formStateRef.current.touched);\n }\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n const output = method(\n get(formStateRef.current.dirtyFields, name, []),\n args.argC,\n args.argD,\n );\n shouldSet && set(formStateRef.current.dirtyFields, name, output);\n updateDirtyFieldsWithDefaultValues(updatedFieldValues);\n cleanup(formStateRef.current.dirtyFields);\n }\n\n if (\n shouldUpdateValid &&\n readFormStateRef.current.isValid &&\n !validateResolver\n ) {\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 updateFormState({\n errors: formStateRef.current.errors,\n dirtyFields: formStateRef.current.dirtyFields,\n isDirty,\n touched: formStateRef.current.touched,\n });\n };\n\n const append = (\n value: Partial<TFieldArrayValues> | Partial<TFieldArrayValues>[],\n shouldFocus = true,\n ) => {\n const updateFormValues = [\n ...allFields.current,\n ...mapIds(Array.isArray(value) ? value : [value], keyName),\n ];\n setFieldAndValidState(updateFormValues);\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n updateDirtyFieldsWithDefaultValues(updateFormValues);\n\n updateFormState({\n isDirty: true,\n dirtyFields: formStateRef.current.dirtyFields,\n });\n }\n\n if (!shouldUnregister) {\n shallowFieldsStateRef.current[name] = [\n ...(shallowFieldsStateRef.current[name] || []),\n value,\n ];\n }\n focusIndexRef.current = shouldFocus ? allFields.current.length : -1;\n };\n\n const prepend = (\n value: Partial<TFieldArrayValues> | Partial<TFieldArrayValues>[],\n shouldFocus = true,\n ) => {\n const emptyArray = fillEmptyArray(value);\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n mapIds(Array.isArray(value) ? value : [value], keyName),\n );\n\n setFieldAndValidState(updatedFieldArrayValues);\n resetFields();\n batchStateUpdate(\n prependAt,\n {\n argA: emptyArray,\n argC: fillBooleanArray(value),\n },\n updatedFieldArrayValues,\n );\n focusIndexRef.current = shouldFocus ? 0 : -1;\n };\n\n const remove = (index?: number | number[]) => {\n const fieldValues = getCurrentFieldsValues();\n const updatedFieldValues: { [k: string]: unknown }[] = removeArrayAt(\n fieldValues,\n index,\n );\n setFieldAndValidState(\n updatedFieldValues as Partial<ArrayField<TFieldArrayValues, TKeyName>>[],\n );\n resetFields();\n batchStateUpdate(\n removeArrayAt,\n {\n argA: index,\n argC: index,\n },\n updatedFieldValues,\n getIsDirtyState(removeArrayAt(fieldValues, index)),\n true,\n true,\n );\n };\n\n const insert = (\n index: number,\n value: Partial<TFieldArrayValues> | Partial<TFieldArrayValues>[],\n shouldFocus = true,\n ) => {\n const emptyArray = fillEmptyArray(value);\n const fieldValues = getCurrentFieldsValues();\n const updatedFieldArrayValues = insertAt(\n fieldValues,\n index,\n mapIds(Array.isArray(value) ? value : [value], keyName),\n );\n\n setFieldAndValidState(updatedFieldArrayValues);\n resetFields();\n batchStateUpdate(\n insertAt,\n {\n argA: index,\n argB: emptyArray,\n argC: index,\n argD: fillBooleanArray(value),\n },\n updatedFieldArrayValues,\n getIsDirtyState(insertAt(fieldValues, index)),\n );\n focusIndexRef.current = shouldFocus ? index : -1;\n };\n\n const swap = (indexA: number, indexB: number) => {\n const fieldValues = getCurrentFieldsValues();\n swapArrayAt(fieldValues, indexA, indexB);\n resetFields();\n setFieldAndValidState([...fieldValues]);\n batchStateUpdate(\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n argC: indexA,\n argD: indexB,\n },\n undefined,\n getIsDirtyState(fieldValues),\n false,\n );\n };\n\n const move = (from: number, to: number) => {\n const fieldValues = getCurrentFieldsValues();\n moveArrayAt(fieldValues, from, to);\n resetFields();\n setFieldAndValidState([...fieldValues]);\n batchStateUpdate(\n moveArrayAt,\n {\n argA: from,\n argB: to,\n argC: from,\n argD: to,\n },\n undefined,\n getIsDirtyState(fieldValues),\n false,\n );\n };\n\n const reset = <TFieldValues>(\n data?: UnpackNestedValue<DeepPartial<TFieldValues>>,\n ) => {\n resetFields();\n !data && unset(fieldArrayDefaultValuesRef.current, name);\n unset(shallowFieldsStateRef.current, name);\n memoizedDefaultValues.current = get(data || defaultValuesRef.current, name);\n setFields(mapIds(memoizedDefaultValues.current, keyName));\n };\n\n React.useEffect(() => {\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n console.warn(\n '📋 useFieldArray is missing `name` attribute. https://react-hook-form.com/api#useFieldArray',\n );\n }\n }\n\n const defaultValues = get(fieldArrayDefaultValuesRef.current, name);\n\n if (defaultValues && fields.length < defaultValues.length) {\n defaultValues.pop();\n set(fieldArrayDefaultValuesRef.current, name, defaultValues);\n }\n\n updateWatchedValue(name);\n\n if (focusIndexRef.current > -1) {\n for (const key in fieldsRef.current) {\n const field = fieldsRef.current[key];\n if (\n key.startsWith(`${name}[${focusIndexRef.current}]`) &&\n field!.ref.focus\n ) {\n field!.ref.focus();\n break;\n }\n }\n }\n\n focusIndexRef.current = -1;\n }, [fields, name]);\n\n React.useEffect(() => {\n const resetFunctions = resetFieldArrayFunctionRef.current;\n const fieldArrayNames = fieldArrayNamesRef.current;\n\n if (!getFieldArrayParentName(name)) {\n resetFunctions[name] = reset;\n }\n\n return () => {\n resetFields();\n delete resetFunctions[name];\n fieldArrayNames.delete(name);\n };\n }, []);\n\n return {\n swap: React.useCallback(swap, [name]),\n move: React.useCallback(move, [name]),\n prepend: React.useCallback(prepend, [name]),\n append: React.useCallback(append, [name]),\n remove: React.useCallback(remove, [name]),\n insert: React.useCallback(insert, [name]),\n fields,\n };\n};\n","import * as React from 'react';\nimport { useFormContext } from './useFormContext';\nimport isUndefined from './utils/isUndefined';\nimport isString from './utils/isString';\nimport generateId from './logic/generateId';\nimport get from './utils/get';\nimport isObject from './utils/isObject';\nimport {\n DeepPartial,\n UseWatchOptions,\n FieldValues,\n UnpackNestedValue,\n Control,\n} from './types';\n\nexport function useWatch<TWatchFieldValues extends FieldValues>(props: {\n defaultValue?: UnpackNestedValue<DeepPartial<TWatchFieldValues>>;\n control?: Control;\n}): UnpackNestedValue<DeepPartial<TWatchFieldValues>>;\nexport function useWatch<TWatchFieldValue extends any>(props: {\n name: string;\n control?: Control;\n}): undefined | UnpackNestedValue<TWatchFieldValue>;\nexport function useWatch<TWatchFieldValue extends any>(props: {\n name: string;\n defaultValue: UnpackNestedValue<TWatchFieldValue>;\n control?: Control;\n}): UnpackNestedValue<TWatchFieldValue>;\nexport function useWatch<TWatchFieldValues extends FieldValues>(props: {\n name: string[];\n defaultValue?: UnpackNestedValue<DeepPartial<TWatchFieldValues>>;\n control?: Control;\n}): UnpackNestedValue<DeepPartial<TWatchFieldValues>>;\nexport function useWatch<TWatchFieldValues>({\n control,\n name,\n defaultValue,\n}: UseWatchOptions): TWatchFieldValues {\n const methods = useFormContext();\n\n if (process.env.NODE_ENV !== 'production') {\n if (!control && !methods) {\n throw new Error(\n '📋 useWatch is missing `control` prop. https://react-hook-form.com/api#useWatch',\n );\n }\n }\n\n const {\n useWatchFieldsRef,\n useWatchRenderFunctionsRef,\n watchInternal,\n defaultValuesRef,\n } = control || methods.control;\n const [value, setValue] = React.useState<unknown>(\n isUndefined(defaultValue)\n ? isString(name)\n ? get(defaultValuesRef.current, name)\n : Array.isArray(name)\n ? name.reduce(\n (previous, inputName) => ({\n ...previous,\n [inputName]: get(defaultValuesRef.current, inputName),\n }),\n {},\n )\n : defaultValuesRef.current\n : defaultValue,\n );\n const idRef = React.useRef<string>();\n const defaultValueRef = React.useRef(defaultValue);\n\n const updateWatchValue = React.useCallback(() => {\n const value = watchInternal(name, defaultValueRef.current, idRef.current);\n setValue(\n isObject(value)\n ? { ...value }\n : Array.isArray(value)\n ? [...value]\n : value,\n );\n }, [setValue, watchInternal, defaultValueRef, name, idRef]);\n\n React.useEffect(() => {\n if (process.env.NODE_ENV !== 'production') {\n if (name === '') {\n console.warn(\n '📋 useWatch is missing `name` attribute. https://react-hook-form.com/api#useWatch',\n );\n }\n }\n\n const id = (idRef.current = generateId());\n const watchFieldsHookRender = useWatchRenderFunctionsRef.current;\n const watchFieldsHook = useWatchFieldsRef.current;\n watchFieldsHook[id] = new Set();\n watchFieldsHookRender[id] = updateWatchValue;\n watchInternal(name, defaultValueRef.current, id);\n\n return () => {\n delete watchFieldsHook[id];\n delete watchFieldsHookRender[id];\n };\n }, [\n name,\n updateWatchValue,\n useWatchRenderFunctionsRef,\n useWatchFieldsRef,\n watchInternal,\n defaultValueRef,\n ]);\n\n return (isUndefined(value) ? defaultValue : value) as TWatchFieldValues;\n}\n","import isUndefined from '../utils/isUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\n\nexport default (event: any) =>\n isPrimitive(event) ||\n !isObject(event.target) ||\n (isObject(event.target) && !event.type)\n ? event\n : isUndefined(event.target.value)\n ? event.target.checked\n : event.target.value;\n","import * as React from 'react';\nimport isUndefined from './utils/isUndefined';\nimport get from './utils/get';\nimport set from './utils/set';\nimport getInputValue from './logic/getInputValue';\nimport skipValidation from './logic/skipValidation';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport { useFormContext } from './useFormContext';\nimport { VALUE } from './constants';\nimport { Control } from './types';\nimport { ControllerProps } from './types';\n\nconst Controller = <\n TAs extends\n | React.ReactElement\n | React.ComponentType<any>\n | 'input'\n | 'select'\n | 'textarea',\n TControl extends Control = Control\n>({\n name,\n rules,\n as,\n render,\n defaultValue,\n control,\n onFocus,\n ...rest\n}: ControllerProps<TAs, TControl>) => {\n const methods = useFormContext();\n\n if (process.env.NODE_ENV !== 'production') {\n if (!control && !methods) {\n throw new Error(\n '📋 Controller is missing `control` prop. https://react-hook-form.com/api#Controller',\n );\n }\n }\n\n const {\n defaultValuesRef,\n setValue,\n register,\n unregister,\n trigger,\n mode,\n reValidateMode: { isReValidateOnBlur, isReValidateOnChange },\n formStateRef: {\n current: { isSubmitted, touched },\n },\n updateFormState,\n readFormStateRef,\n fieldsRef,\n fieldArrayNamesRef,\n shallowFieldsStateRef,\n } = control || methods.control;\n const isNotFieldArray = !isNameInFieldArray(fieldArrayNamesRef.current, name);\n const getInitialValue = () =>\n !isUndefined(get(shallowFieldsStateRef.current, name)) && isNotFieldArray\n ? get(shallowFieldsStateRef.current, name)\n : isUndefined(defaultValue)\n ? get(defaultValuesRef.current, name)\n : defaultValue;\n const [value, setInputStateValue] = React.useState(getInitialValue());\n const valueRef = React.useRef(value);\n const onFocusRef = React.useRef(onFocus);\n\n const shouldValidate = (isBlurEvent?: boolean) =>\n !skipValidation({\n isBlurEvent,\n isReValidateOnBlur,\n isReValidateOnChange,\n isSubmitted,\n isTouched: !!get(touched, name),\n ...mode,\n });\n\n const commonTask = ([event]: any[]) => {\n const data = getInputValue(event);\n setInputStateValue(data);\n valueRef.current = data;\n return data;\n };\n\n const registerField = React.useCallback(() => {\n if (process.env.NODE_ENV !== 'production' && !name) {\n return console.warn(\n '📋 Field is missing `name` prop. https://react-hook-form.com/api#Controller',\n );\n }\n\n if (fieldsRef.current[name]) {\n fieldsRef.current[name] = {\n ref: fieldsRef.current[name]!.ref,\n ...rules,\n };\n } else {\n register(\n Object.defineProperty({ name, focus: onFocusRef.current }, VALUE, {\n set(data) {\n setInputStateValue(data);\n valueRef.current = data;\n },\n get() {\n return valueRef.current;\n },\n }),\n rules,\n );\n if (isNotFieldArray && !get(defaultValuesRef.current, name)) {\n setInputStateValue(getInitialValue());\n }\n }\n }, [rules, name, register]);\n\n React.useEffect(() => () => unregister(name), [unregister, name]);\n\n React.useEffect(() => {\n if (process.env.NODE_ENV !== 'production') {\n if (isUndefined(value)) {\n console.warn(\n `📋 ${name} is missing in the 'defaultValue' prop of either its Controller (https://react-hook-form.com/api#Controller) or useForm (https://react-hook-form.com/api#useForm)`,\n );\n }\n\n if ((!as && !render) || (as && render)) {\n console.warn(\n `📋 ${name} Controller should use either the 'as' or 'render' prop, not both. https://react-hook-form.com/api#Controller`,\n );\n }\n\n if (!isNotFieldArray && isUndefined(defaultValue)) {\n console.warn(\n '📋 Controller is missing `defaultValue` prop when using `useFieldArray`. https://react-hook-form.com/api#Controller',\n );\n }\n }\n\n registerField();\n }, [registerField]);\n\n React.useEffect(() => {\n if (!fieldsRef.current[name]) {\n registerField();\n if (isNotFieldArray) {\n setInputStateValue(getInitialValue());\n }\n }\n });\n\n const onBlur = () => {\n if (readFormStateRef.current.touched && !get(touched, name)) {\n set(touched, name, true);\n updateFormState({\n touched,\n });\n }\n\n if (shouldValidate(true)) {\n trigger(name);\n }\n };\n\n const onChange = (...event: any[]) =>\n setValue(name, commonTask(event), {\n shouldValidate: shouldValidate(),\n shouldDirty: true,\n });\n\n const props = {\n ...rest,\n onChange,\n onBlur,\n name,\n value,\n };\n\n return as\n ? React.isValidElement(as)\n ? React.cloneElement(as, props)\n : React.createElement(as as string, props as any)\n : render\n ? render({\n onChange,\n onBlur,\n value,\n name,\n })\n : null;\n};\n\nexport { Controller };\n"],"names":["isCheckBox","isValidElement","getFieldsValue","React.useRef","React.useState","React.useCallback","React.useEffect","React.createContext","React.useContext","React.createElement","prepend","prependAt","insert","insertAt","React.isValidElement","React.cloneElement"],"mappings":"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"}
|