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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.ie11.production.min.js","sources":["../src/utils/isHTMLElement.ts","../src/constants.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/removeAllEventListeners.ts","../src/logic/getRadioValue.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/logic/getMultipleSelectValue.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/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/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/controller.tsx","../src/logic/getInputValue.ts","../src/logic/isErrorStateChanged.ts","../src/logic/attachEventListeners.ts","../src/utils/isSelectInput.ts","../src/logic/focusOnErrorField.ts","../src/utils/onDomRemove.ts","../src/useWatch.ts"],"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","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 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","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","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => value);\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","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 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 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","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 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","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","import { FieldElement } from '../types';\nimport { SELECT } from '../constants';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-one`;\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 * 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 * 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"],"names":["value","HTMLElement","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","isObjectType","isNullOrUndefined","Array","isArray","Date","test","filter","Boolean","input","compact","replace","split","set","object","path","index","tempPath","isKey","stringToPath","length","lastIndex","key","newValue","objValue","isObject","isNaN","data","val","undefined","obj","defaultValue","result","reduce","isUndefined","ref","validateWithStateUpdate","isHTMLElement","removeEventListener","defaultReturn","isValid","options","previous","option","checked","element","type","SELECT","defaultResult","validResult","values","map","_a","attributes","getFieldValue","fieldsRef","name","shallowFieldsStateRef","excludeDisabled","field","current","disabled","isFileInput","files","isRadioInput","getRadioValue","isMultipleSelect","__spread","isCheckBox","getCheckboxValue","get","isDetached","nodeType","Node","DOCUMENT_NODE","parentNode","Object","keys","unset","updatePath","childObject","slice","baseGet","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","isEmptyObject","isBoolean","isSameRef","fieldValue","setFieldArrayDirtyFields","defaultValues","dirtyFields","parentName","deepMerge","target","source","isPrimitive","targetValue","sourceValue","search","output","name_1","isString","startsWith","find","transformToNestObject","deepEqual","object1","object2","isErrorObject","keys1","keys2","keys1_1","__values","includes","val1","val2","RegExp","validationData","isRegex","message","isValidElement","getValidateError","isMessage","validateAllFieldCriteria","errors","error","types","_b","required","maxLength","minLength","min","max","pattern","validate","fields","isRadio","isCheckBoxInput","isRadioOrCheckbox","isEmpty","appendErrorsCurry","appendErrors","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","_c","getValueAndMessage","requiredValue","requiredMessage","exceedMin","_d","maxValue","maxMessage","_e","minValue","minMessage","valueNumber","valueAsNumber","parseFloat","valueDate","valueAsDate","_f","maxLengthValue","_g","minLengthValue","inputLength","toString","_h","patternValue","patternMessage","getFieldsValue","validateRef","isFunction","_o","validateError","validationResult","_j","entries","_l","__read","validateFunction","validateResult","getPath","pathWithIndex","getInnerPath","flat","Infinity","fieldValues","fieldName","watchFields","inputValue","isSingleField","add","forEach","isOnBlur","isOnChange","isOnTouch","isTouched","isReValidateOnBlur","isReValidateOnChange","isBlurEvent","isSubmitted","substring","indexOf","isMatchFieldArrayName","searchName","names","some","cloneObject","copy","getTime","mode","isOnSubmit","isOnAll","isWindowUndefined","window","isWeb","document","isProxyEnabled","Proxy","FormContext","React.createContext","displayName","useFormContext","React.useContext","d","performance","now","c","r","Math","random","removeAtIndexes","removeAt","from","to","splice","indexA","indexB","temp","prepend","insert","fill","mapValueToBoolean","mapIds","keyName","generateId","rules","as","render","control","onFocus","rest","methods","defaultValuesRef","setValue","register","unregister","trigger","touched","updateFormState","readFormStateRef","fieldArrayNamesRef","isNotFieldArray","isNameInFieldArray","getInitialValue","React.useState","setInputStateValue","valueRef","React.useRef","onFocusRef","shouldValidate","skipValidation","commonTask","event","getInputValue","registerField","React.useCallback","defineProperty","focus","React.useEffect","onBlur","onChange","_i","shouldDirty","props","React.isValidElement","React.cloneElement","React.createElement","children","Provider","__assign","focusIndexRef","isWatchAllRef","resetFieldArrayFunctionRef","removeFieldEventListener","formStateRef","watchFieldsRef","validFieldsRef","fieldsWithValidationRef","fieldArrayDefaultValuesRef","validateResolver","renderWatchedInputs","getValues","shouldUnregister","fieldArrayParentName","getFieldArrayParentName","memoizedDefaultValues","setFields","allFields","getCurrentFieldsValues","setFieldAndValidState","fieldsValues","getIsDirtyState","flagOrFields","isDirty","resetFields","cleanup","updateDirtyFieldsWithDefaultValues","updatedFieldArrayValues","defaultFieldArrayValues","updateDirtyFieldsBaseOnDefaultValues","base","innerKey","batchStateUpdate","method","args","updatedFieldValues","shouldSet","shouldUpdateValid","argA","argB","argC","argD","reset","pop","shouldRenderUseWatch","resetFunctions","fieldArrayNames","delete","swap","swapArrayAt","move","moveArrayAt","shouldFocus","emptyArray","fillEmptyArray","prependAt","fillBooleanArray","append","updateFormValues","remove","removeArrayAt","insertAt","reValidateMode","resolver","context","shouldFocusError","criteriaMode","Set","useWatchFieldsRef","useWatchRenderFunctionsRef","defaultValuesAtRenderRef","isUnMount","handleChangeRef","contextRef","resolverRef","modeRef","modeChecker","isValidateAllFieldCriteria","submitCount","isSubmitting","isSubmitSuccessful","formState","setFormState","observerRef","_k","state","shouldRenderBaseOnError","shouldRender","shouldReRender","validFields","fieldsWithValidation","previousError","isErrorStateChanged","setFieldValue","rawValue","radioRef","selectRef","selected","checkboxRef","isFormDirty","updateAndGetDirtyState","isFieldDirty","isDirtyFieldExist","previousIsDirty","isChanged","executeValidation","skipReRender","validateField","executeSchemaOrResolverValidation","previousFormIsValid","isInputsValid","every","Promise","all","setInternalValues","setInternalValue","config","has","isFieldWatched","match","found","size","setFieldArrayDefaultValues","payload","payload_1","getFieldsValues","shouldSkipValidation","forceDelete","handleChange","fieldRef","options_1","removeAllEventListeners","findRemovedFieldAndRemoveListener","removeFieldEventListenerAndRef","watchInternal","fieldNames","watchId","combinedDefaultValues","assignWatchFields","registerFieldRef","validateOptions","fieldRefAndValidationOptions","isRadioOrCheckboxFunction","isFieldArray","compareRef","currentRef","isEmptyDefaultValue","isEmptyUnmountFields","then","shouldAttachChangeEvent","addEventListener","attachEventListeners","handleSubmit","onValid","onInvalid","e","preventDefault","persist","fieldErrors","name_2","fieldError","focusOnErrorField","observer","MutationObserver","observe","childList","subtree","onDomRemove","disconnect","commonProps","refOrValidationOptions","watch","prop","omitResetState","inputRef","closest","resetFieldArray","resetRefs","clearErrors","inputName","setError","idRef","defaultValueRef","updateWatchValue","id","watchFieldsHookRender","watchFieldsHook"],"mappings":"8lFAAA,eAAgBA,GACd,OAAAA,aAAiBC,aCCNC,EACL,OADKA,EAEH,SAFGA,EAGJ,QAGIC,EACH,SADGA,EAED,WAFCA,EAGD,WAHCA,EAIA,YAJAA,EAKN,MASMC,EACN,MADMA,EAEN,MAFMA,EAGA,YAHAA,EAIA,YAJAA,EAKF,UALEA,EAMD,WANCA,EAOD,WC7BZ,eAAgBJ,GAA8C,OAAS,MAATA,GCEjDK,EAAe,SAACL,GAAmB,MAAiB,iBAAVA,cAErBA,GAChC,OAACM,EAAkBN,KAClBO,MAAMC,QAAQR,IACfK,EAAaL,MACXA,aAAiBS,kBCRLT,GACd,OAACO,MAAMC,QAAQR,KACd,QAAQU,KAAKV,KACX,mDAAmDU,KAAKV,gBCH7CA,GAAiB,OAAAA,EAAMW,OAAOC,qBCE9BC,GACd,OAAAC,EACED,EACGE,QAAQ,SAAU,IAClBA,QAAQ,MAAO,KACfA,QAAQ,MAAO,IACfC,MAAM,gBCHWC,EACtBC,EACAC,EACAnB,GAOA,IALA,IAAIoB,GAAS,EACPC,EAAWC,EAAMH,GAAQ,CAACA,GAAQI,EAAaJ,GAC/CK,EAASH,EAASG,OAClBC,EAAYD,EAAS,IAElBJ,EAAQI,GAAQ,CACvB,IAAME,EAAML,EAASD,GACjBO,EAAW3B,EAEf,GAAIoB,IAAUK,EAAW,CACvB,IAAMG,EAAWV,EAAOQ,GACxBC,EACEE,EAASD,IAAarB,MAAMC,QAAQoB,GAChCA,EACCE,OAAOT,EAASD,EAAQ,IAEzB,GADA,GAGRF,EAAOQ,GAAOC,EACdT,EAASA,EAAOQ,GAElB,OAAOR,EC3BT,eAAgBa,EAAmB/B,GACjC,IAAK,IAAM0B,kBADsB1B,MACf+B,EACfT,EAAMI,GAAqC1B,EAAM0B,GAAOK,EAAKL,GAAhDT,EAAIjB,EAAO0B,EAAKK,EAAKL,IAErC,OAAO1B,cCROgC,GAAmC,YAAQC,IAARD,cCInCE,EAAUf,EAAcgB,GACtC,IAAMC,EAAStB,EAAQK,EAAKH,MAAM,cAAcqB,QAC9C,SAACD,EAAQV,GAAQ,OAACpB,EAAkB8B,GAAUA,EAASA,EAAOV,KAC9DQ,GAGF,OAAOI,EAAYF,IAAWA,IAAWF,EACrCI,EAAYJ,EAAIf,IACdgB,EACAD,EAAIf,GACNiB,cCTJG,EACAC,GAEIC,EAAcF,IAAQA,EAAIG,sBAC5BH,EAAIG,oBAAoBxC,EAAcsC,GACtCD,EAAIG,oBAAoBxC,EAAesC,GACvCD,EAAIG,oBAAoBxC,EAAasC,KCJnCG,EAAkC,CACtCC,SAAS,EACT5C,MAAO,eAGO6C,GACd,OAAAtC,MAAMC,QAAQqC,GACVA,EAAQR,QACN,SAACS,EAAUC,GACT,OAAAA,GAAUA,EAAOR,IAAIS,QACjB,CACEJ,SAAS,EACT5C,MAAO+C,EAAOR,IAAIvC,OAEpB8C,IACNH,GAEFA,cCtBUM,GACd,MAAiB,UAAjBA,EAAQC,iBCDMD,GACd,MAAiB,SAAjBA,EAAQC,iBCDMD,GACd,MAAiB,aAAjBA,EAAQC,iBCAMD,GACd,MAAoBE,oBAApBF,EAAQC,MCIJE,EAAqC,CACzCpD,OAAO,EACP4C,SAAS,GAGLS,EAAc,CAAErD,OAAO,EAAM4C,SAAS,cAE5BC,GACd,GAAItC,MAAMC,QAAQqC,GAAU,CAC1B,GAAIA,EAAQrB,OAAS,EAAG,CACtB,IAAM8B,EAAST,EACZlC,QAAO,SAACoC,GAAW,OAAAA,GAAUA,EAAOR,IAAIS,WACxCO,KAAI,SAACC,GAAuB,sBAC/B,MAAO,CAAExD,MAAOsD,EAAQV,UAAWU,EAAO9B,QAGtC,IAAAgC,EAAiCX,EAAQ,GAAGN,IAA1CS,YAAShD,UAAOyD,eAExB,OAAOT,EACHS,IAAenB,EAAamB,EAAmBzD,OAC7CsC,EAAYtC,IAAoB,KAAVA,EACpBqD,EACA,CAAErD,MAAOA,EAAO4C,SAAS,GAC3BS,EACFD,EAGN,OAAOA,YCxBeM,EACtBC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAQJ,EAAUK,QAAQJ,GAEhC,GAAIG,EAAO,CAEP,IAAAP,EAEEO,MAFK/D,UAAOiE,aACd1B,EACEwB,MAEJ,GAAIE,GAAYH,EACd,OAGF,OAAII,EAAY3B,GACPA,EAAI4B,MAGTC,EAAa7B,GACR8B,EAAcN,EAAMlB,SAAS7C,MAGlCsE,EAAiB/B,GClCvBgC,EDmCkChC,EAAIM,SClCnClC,QAAO,SAAC6C,GAA0B,qBAClCD,KAAI,SAACC,GAAsB,kBDoCxBgB,EAAWjC,GACNkC,EAAiBV,EAAMlB,SAAS7C,MAGlCA,EAGT,GAAI6D,EACF,OAAOa,EAAIb,EAAsBG,QAASJ,YE/CtBe,EAAW1B,GACjC,OAAKA,GAKDA,aAAmBhD,aACrBgD,EAAQ2B,WAAaC,KAAKC,eAKrBH,EAAW1B,EAAQ8B,YCX5B,eAAgB/E,GACd,OAAA6B,EAAS7B,KAAWgF,OAAOC,KAAKjF,GAAOwB,mBCJzBxB,GAAqC,MAAiB,kBAAVA,YCmBpCkF,EAAMhE,EAAaC,GACzC,IAAMgE,EAAa7D,EAAMH,GAAQ,CAACA,GAAQI,EAAaJ,GACjDiE,EACiB,GAArBD,EAAW3D,OAAcN,EAf7B,SAAiBA,EAAaiE,GAK5B,IAJA,IACM3D,EADO2D,EAAWE,MAAM,GAAI,GACd7D,OAChBJ,EAAQ,EAELA,EAAQI,GACbN,EAASoB,EAAYpB,GAAUE,IAAUF,EAAOiE,EAAW/D,MAG7D,OAAOF,EAM6BoE,CAAQpE,EAAQiE,GAC9CzD,EAAMyD,EAAWA,EAAW3D,OAAS,GACvC+D,OAAiBtD,EAEjBmD,UACKA,EAAY1D,GAGrB,IAAK,IAAI8D,EAAI,EAAGA,EAAIL,EAAWE,MAAM,GAAI,GAAG7D,OAAQgE,IAAK,CACvD,IAAIpE,GAAS,EACTqE,OAAYxD,EACVyD,EAAeP,EAAWE,MAAM,IAAKG,EAAI,IACzCG,EAAqBD,EAAalE,OAAS,EAMjD,IAJIgE,EAAI,IACND,EAAiBrE,KAGVE,EAAQsE,EAAalE,QAAQ,CACpC,IAAMoE,EAAOF,EAAatE,GAC1BqE,EAAYA,EAAYA,EAAUG,GAAQ1E,EAAO0E,GAG/CD,IAAuBvE,IACrBS,EAAS4D,IAAcI,EAAcJ,IACpClF,MAAMC,QAAQiF,KACZA,EAAU9E,QACT,SAACoB,GACC,OAACF,EAASE,KAAU8D,EAAc9D,IAAU+D,EAAU/D,MACxDP,UAEN+D,SAAwBA,EAAeK,UAAe1E,EAAO0E,IAG/DL,EAAiBE,GAIrB,OAAOvE,EChDT,IAAM6E,EAAY,SAACC,EAAmBzD,GACpC,OAAAyD,GAAcA,EAAWzD,MAAQA,YCVX0D,EAKtB3C,EACA4C,EACAC,EACApB,EACAqB,GAIA,UAFIhF,GAAS,IAEJA,EAAQkC,EAAO9B,QAAQ,CAC9B,IAAK,IAAME,KAAO4B,EAAOlC,GACnBb,MAAMC,QAAQ8C,EAAOlC,GAAOM,MAC7ByE,EAAY/E,KAAW+E,EAAY/E,GAAS,IAC7C+E,EAAY/E,GAAOM,GAAO,GAC1BuE,EACE3C,EAAOlC,GAAOM,GACdgD,EAAIwB,EAAc9E,IAAU,GAAIM,EAAK,IACrCyE,EAAY/E,GAAOM,GACnByE,EAAY/E,GACZM,IAGFgD,EAAIwB,EAAc9E,IAAU,GAAIM,KAAS4B,EAAOlC,GAAOM,GACnDT,EAAIkF,EAAY/E,IAAU,GAAIM,GAC7ByE,EAAY/E,UACR+E,EAAY/E,YACdM,IAAM,OAIhByE,EAAY3E,QACXuD,UACOA,EAAWqB,GAGtB,OAAOD,EAAY3E,OAAS2E,OAAclE,EC1C5C,eAAgBjC,GAAoC,MAAiB,iBAAVA,cCI3CA,GACd,OAAAM,EAAkBN,KAAWK,EAAaL,aCF5BqG,EAGdC,EAAWC,GACX,GAAIC,EAAYF,IAAWE,EAAYD,GACrC,OAAOA,EAGT,IAAK,IAAM7E,KAAO6E,EAAQ,CACxB,IAAME,EAAcH,EAAO5E,GACrBgF,EAAcH,EAAO7E,GAE3B,IACE4E,EAAO5E,GACJG,EAAS4E,IAAgB5E,EAAS6E,IAClCnG,MAAMC,QAAQiG,IAAgBlG,MAAMC,QAAQkG,GACzCL,EAAUI,EAAaC,GACvBA,EACN,WAGJ,OAAOJ,EChBT,gBACE3C,EACAE,EACAC,EACA6C,GAKA,IAAMC,EAAS,cAEJC,IAEPvE,EAAYqE,KACXG,EAASH,GACNE,EAAKE,WAAWJ,GAChBpG,MAAMC,QAAQmG,IAAWA,EAAOK,MAAK,SAACjF,GAAS,OAAA8E,EAAKE,WAAWhF,UAEnE6E,EAAOC,GAA2CnD,EAChDC,EACAkD,OACA5E,EACA6B,KAXN,IAAK,IAAM+C,KAAQlD,EAAUK,UAAlB6C,GAgBX,OAAOR,EACLY,QAA6BpD,GAAyB,IAAIG,SAAW,KACrEiD,EAAsBL,cCnCFM,GACtBC,EACAC,EACAC,wBAFAF,mBACAC,MAGA,IAAME,EAAQtC,OAAOC,KAAKkC,GACpBI,EAAQvC,OAAOC,KAAKmC,GAE1B,GAAIE,EAAM9F,SAAW+F,EAAM/F,OACzB,OAAO,MAGT,IAAkB,IAAAgG,EAAAC,EAAAH,iCAAO,CAApB,IAAM5F,UACT,IAAM2F,IAAiB,CAAC,MAAO,WAAWK,SAAShG,GAAO,CACxD,IAAMiG,EAAOR,EAAQzF,GACfkG,EAAOR,EAAQ1F,GAErB,IACGG,EAAS8F,IAASpH,MAAMC,QAAQmH,MAChC9F,EAAS+F,IAASrH,MAAMC,QAAQoH,KAC5BV,GAAUS,EAAMC,EAAMP,GACvBM,IAASC,EAEb,OAAO,qGAKb,OAAO,EC9BT,gBAAgB5H,GAAoC,OAAAA,aAAiB6H,oBCQrDC,GACd,OAHoCjG,EADpC7B,EAIe8H,KAHyCC,GAAQ/H,GAI5D8H,EACA,CACE9H,MAAO8H,EACPE,QAAS,IATM,IACrBhI,eCLcA,GACd,MAAiB,mBAAVA,eCIOA,GACd,OAAA8G,EAAS9G,IAAW6B,EAAS7B,IAAUiI,iBAAejI,aCFhCkI,GACtB9F,EACAG,EACAW,GAEA,gBAFAA,cAEIiF,GAAU/F,IAAY0D,EAAU1D,KAAYA,EAC9C,MAAO,CACLc,OACA8E,QAASG,GAAU/F,GAAUA,EAAS,GACtCG,OCPN,gBACEqB,EACAwE,EACAC,EACAnF,EACA8E,SAEA,GAAII,EAA0B,CAC5B,IAAME,EAAQD,EAAOzE,GAErB,cACK0E,IACHC,aACMD,GAASA,EAAMC,MAAQD,EAAMC,MAAQ,YACxCrF,GAAO8E,IAAW,QAKzB,MAAO,gBCIPrE,EACAyE,EACA5E,EAYAK,OAXEtB,QACAiG,QAAOtF,SAAMlD,UACb6C,YACA4F,aACAC,cACAC,cACAC,QACAC,QACAC,YACAC,oOAmCF,OA/BMC,EAASrF,EAAUK,QACnBJ,EAAwCrB,EAAIqB,KAC5C0E,EAA2C,GAC3CW,EAAU7E,EAAa7B,GACvBiC,EAAa0E,EAAgB3G,GAC7B4G,EAAoBF,GAAWzE,EAC/B4E,EAAoB,KAAVpJ,EACVqJ,EAAoBC,GAAaC,KACrC,KACA3F,EACAwE,EACAE,GAEIkB,EAAmB,SACvBC,EACAC,EACAC,EACAC,EACAC,gBADAD,EAAUxJ,gBACVyJ,EAAUzJ,GAEV,IAAM4H,EAAUyB,EAAYC,EAAmBC,EAC/CrB,EAAM1E,MACJV,KAAMuG,EAAYG,EAAUC,EAC5B7B,UACAzF,OAEI8G,EADAI,EACkBG,EACAC,EADS7B,KAMjCS,KACGQ,IAAYzE,IAAe4E,GAAW9I,EAAkBN,KACxD8F,EAAU9F,KAAWA,GACrBwE,IAAeC,EAAiB5B,GAASD,SACzCqG,IAAY5E,EAAcxB,GAASD,WAEhCkH,EAAqD3B,GACzDM,GAEE,CAAEzI,QAASyI,EAAUT,QAASS,GAC9BsB,GAAmBtB,GAJRuB,UAAwBC,YAMnCD,IACF1B,EAAM1E,MACJV,KAAM9C,EACN4H,QAASiC,EACT1H,IAAK4G,IACEH,EAAOpF,GAAgBf,SAAW,IAAI,IAAM,IAAIN,IACnDA,GACD8G,EAAkBjJ,EAAiC6J,KAEnD7B,OACIE,IAKRhI,EAAkBsI,IAAStI,EAAkBuI,KAC5CY,UACAS,UACEC,EAA2CJ,GAAmBlB,GAArDuB,UAAmBC,YAC5BC,EAA2CP,GAAmBnB,GAArD2B,UAAmBC,YAErB,WAATtH,IAAuBA,IAASpB,MAAM9B,IAClCyK,EACHlI,EAAyBmI,eAAiBC,WAAW3K,GACnDM,EAAkB8J,KACrBX,GAAYgB,EAAcL,GAEvB9J,EAAkBiK,KACrBL,GAAYO,EAAcF,KAGtBK,GACHrI,EAAyBsI,aAAe,IAAIpK,KAAKT,GAChD8G,EAASsD,KACXX,GAAYmB,GAAY,IAAInK,KAAK2J,IAE/BtD,EAASyD,KACXL,GAAYU,GAAY,IAAInK,KAAK8J,MAIjCd,KAAaS,KACfV,IACIC,GACFY,EACAG,EACApK,EACAA,GAEGgI,QAMLtB,EAAS9G,IAAWoJ,IAAYV,IAAaC,IACzCmC,GAGFf,GAAmBrB,GAFdqC,YACErB,cAELsB,GAGFjB,GAAmBpB,GAFdsC,YACEtB,cAELuB,GAAclL,EAAMmL,WAAW3J,OAC/BiI,IACHnJ,EAAkByK,KAAmBG,GAAcH,GAChDb,IACH5J,EAAkB2K,KAAmBC,GAAcD,IAElDxB,KAAaS,KACfV,IAAmBC,GAAWC,GAAkBC,IAC3CvB,QAMLU,GAAYM,IACRgC,GAAmDrB,GACvDjB,GADauC,YAAuBC,eAIlCvD,GAAQsD,KAAkBA,GAAa3K,KAAKV,KAC9CsI,EAAM1E,MACJV,KAAM9C,EACN4H,QAASsD,GACT/I,OACG8G,EAAkBjJ,EAAgCkL,KAElDlD,KAMLW,GACI/C,GAAauF,EAAe5H,EAAWC,EAAMC,GAC7C2H,GAAcrC,GAAqBtG,EAAUA,EAAQ,GAAGN,IAAMA,EAEhEkJ,GAAW1C,MACQA,EAAS/C,sBAnDrBsC,UAsDT,OAHMlG,GAASsJ,UACTC,GAAgBzD,GAAiB9F,GAAQoJ,OAG7ClD,EAAM1E,UACD+H,IACAtC,EACDjJ,EACAuL,GAAc3D,WAGbI,MACIE,qBAGFzG,EAASkH,GAAT,aACL6C,GAAmB,4CACeC,GAAApE,EAAAzC,OAAO8G,QAAQ/C,wDAA1CgD,GAAAC,cAACtK,SAAKuK,SACVpG,EAAc+F,KAAsBxD,KAIZ6D,GAAiBjG,mBAAxCkG,GAAiBR,UACjBC,GAAgBzD,GACpBgE,GACAV,GACA9J,OAIAkK,UACKD,IACAtC,EAAkB3H,GAAKiK,GAAc3D,UAGtCI,IACFE,EAAM1E,GAAQgI,uNAKpB,IAAK/F,EAAc+F,MACjBtD,EAAM1E,MACJrB,IAAKiJ,IACFI,KAEAxD,GACH,SAAOE,sBAMf,SAAOA,WChPI6D,GAAU,SACrBhL,EACAmC,GAOA,OAAO0B,OAAO8G,QAAQxI,GACnBC,KAAI,SAACC,OAAAgF,EAAAwD,OAAiB,OANJ,SAAItK,EAAQ1B,EAAU6B,GACzC,IAAMuK,EAAgBvK,EAAcV,MAAQO,EAAWP,MAAQO,MAC/D,OAAO8E,EAAYxG,GAASoM,EAAgBD,GAAQC,EAAepM,GAI5CqM,WAAyBxK,EAASyB,OACxDgJ,KAAKC,EAAAA,gBCARC,EACAC,EACAC,EACAC,EACAC,GAKA,IAAI5M,EAcJ,OAZA0M,EAAYG,IAAIJ,GAEZ5G,EAAc2G,GAChBxM,OAAQiC,GAERjC,EAAQ0E,EAAI8H,EAAaC,IAErB5K,EAAS7B,IAAUO,MAAMC,QAAQR,KACnCmM,GAAQM,EAAWzM,GAAO8M,SAAQ,SAAClJ,GAAS,OAAA8I,EAAYG,IAAIjJ,OAIzDtB,EAAYtC,GACf4M,EACED,EACAjI,EAAIiI,EAAYF,GAClBzM,eCzCUwD,OACduJ,aACAC,eACAC,cACAC,cACAC,uBACAC,yBACAC,gBACAC,gBAaA,oBAEYA,GAAeL,IAChBC,GAAaG,IACbC,EAAcH,EAAqBJ,IACpCM,IACCC,EAAcF,EAAuBJ,IACvCK,gBC5BKzJ,GAAiB,OAAAA,EAAK2J,UAAU,EAAG3J,EAAK4J,QAAQ,OCEnDC,GAAwB,SAAC7J,EAAc8J,GAClD,OAAA7F,QACE,IAAI6F,YAAmB3M,QAAQ,MAAO,OAAOA,QAAQ,MAAO,QAC5DL,KAAKkD,gBAGP+J,EACA/J,GACG,OAAAW,EAAIoJ,GAAOC,MAAK,SAAC5J,GAAY,OAAAyJ,GAAsB7J,EAAMI,gBCRtC6J,GAA+B3M,GACrD,IAAI4M,EAEJ,GAAItH,EAAYtF,GACd,OAAOA,EAGT,GAAIA,aAAkBT,KAEpB,OADAqN,EAAO,IAAIrN,KAAKS,EAAO6M,WAMzB,IAAK,IAAMrM,KAFXoM,EAAOvN,MAAMC,QAAQU,GAAU,GAAK,GAElBA,EAChB4M,EAAKpM,GAAOmM,GAAY3M,EAAOQ,IAGjC,OAAOoM,ECjBT,gBACEE,GAOG,OACHC,YAAaD,GAAQA,IAAS7N,EAC9B4M,SAAUiB,IAAS7N,EACnB6M,WAAYgB,IAAS7N,EACrB+N,QAASF,IAAS7N,EAClB8M,UAAWe,IAAS7N,gBCZNoC,GACd,OAAA6B,EAAa7B,IAAQ2G,EAAgB3G,ICmEjC4L,G7CpDmB,oB6CoDQC,OAC3BC,G7CrDmB,oB6CsDhBC,WACNH,KACA7L,EAAY8L,OAAOnO,aAChBsO,GAAiBF,GAAQ,UAAWD,O7CzDjB,oB6CyDiCI,MC1E1D,IAAMC,GAAcC,gBAA2C,MAE/DD,GAAYE,YAAc,iBAEbC,GAAiB,WAG5B,OAAAC,aAAiBJ,mBCPjB,IAAMK,E/CiBiB,oB+ChBdC,YAA4BtO,KAAKuO,MAA4B,IAApBD,YAAYC,MAE9D,MAAO,uCAAuCjO,QAAQ,SAAS,SAAUkO,GACvE,IAAMC,GAAqB,GAAhBC,KAAKC,SAAgBN,GAAK,GAAK,EAE1C,OAAa,KAALG,EAAWC,EAAS,EAAJA,EAAW,GAAK/D,SAAS,QCWrD,gBAAmBpJ,EAAWX,GAC5B,OAAAkB,EAAYlB,GACR,GACAb,MAAMC,QAAQY,GAfpB,SAA4BW,EAAWX,GAGrC,IAFA,IAAIoE,GAAK,IAEAA,EAAIzD,EAAKP,QACZJ,EAAMoM,QAAQhI,IAAM,UACfzD,EAAKyD,GAIhB,OAAO1E,EAAQiB,GAOXsN,CAAgBtN,EAAMX,GArBX,SAAIW,EAAWX,GAAuB,SAClDW,EAAKsD,MAAM,EAAGjE,GACdW,EAAKsD,MAAMjE,EAAQ,IAoBlBkO,CAASvN,EAAMX,gBCtBnBW,EACAwN,EACAC,GAEA,OAAIjP,MAAMC,QAAQuB,IACZO,EAAYP,EAAKyN,MACnBzN,EAAKyN,QAAMvN,GAEbF,EAAK0N,OAAOD,EAAI,EAAGzN,EAAK0N,OAAOF,EAAM,GAAG,IACjCxN,GAGF,gBCfUA,EAAW2N,EAAgBC,GAC5C,IAAMC,EAAO,CAAC7N,EAAK4N,GAAS5N,EAAK2N,IACjC3N,EAAK2N,GAAUE,EAAK,GACpB7N,EAAK4N,GAAUC,EAAK,aCDEC,GACtB9N,EACA/B,GAEA,SAAYO,MAAMC,QAAQR,GAASA,EAAQ,CAACA,QAASiC,GAAgBF,YCA/C+N,GACtB/N,EACAX,EACApB,GAEA,SACK+B,EAAKsD,MAAM,EAAGjE,GACbb,MAAMC,QAAQR,GAASA,EAAQ,CAACA,QAASiC,GAC1CF,EAAKsD,MAAMjE,ICdlB,gBAAmBpB,GACjB,OAAAO,MAAMC,QAAQR,GAASO,MAAMP,EAAMwB,QAAQuO,UAAK9N,QAAaA,GCC/D,SAAS+N,GAAqBhQ,GAC5B,GAAI6B,EAAS7B,GAAQ,CACnB,IAAMkB,EAAkC,GAExC,IAAK,IAAMQ,KAAO1B,EAChBkB,EAAOQ,IAAO,EAGhB,MAAO,CAACR,GAGV,MAAO,EAAC,GAGV,gBAAmBlB,GACjB,OAAEO,MAAMC,QAAQR,GAASA,EAAQ,CAACA,IAC/BuD,IAAIyM,IACJ1D,QCUC2D,GAAS,SAIb3M,EACA4M,GAEA,OAAA5M,EAAOC,KAAI,SAACvD,SAAsC,iBAC/CkQ,GAAUC,QACRnQ,0BC1BY,SAQjBwD,GACA,IAAAI,SACAwM,UACAC,OACAC,WACAnO,iBACAoO,YACAC,YACGC,MARH,mEAUMC,EAAU9B,KAUVpG,EAgBF+H,GAAWG,EAAQH,QAfrBI,qBACAC,aACAC,aACAC,eACAC,YACA/C,SACAlE,mBAAkBqD,uBAAoBC,yBAEpCjD,yBAAWmD,gBAAa0D,YAE1BC,oBACAC,qBACAvN,cACAwN,uBACAtN,0BAEIuN,GAAmBC,GAAmBF,EAAmBnN,QAASJ,GAClE0N,EAAkB,WACtB,OAAChP,EAAYoC,EAAIb,EAAsBG,QAASJ,KAAUwN,EACtD1M,EAAIb,EAAsBG,QAASJ,GACnCtB,EAAYH,GACZuC,EAAIiM,EAAiB3M,QAASJ,GAC9BzB,GACAmI,EAAA0B,EAA8BuF,WAAeD,QAA5CtR,OAAOwR,OACRC,EAAWC,SAAa1R,GACxB2R,EAAaD,SAAalB,GAE1BoB,EAAiB,SAACvE,GACtB,OAACwE,MACCxE,cACAF,qBACAC,uBACAE,cACAJ,YAAaxI,EAAIsM,EAASpN,IACvBoK,KAGD8D,EAAa,SAACtO,OACZzB,WC3EMgQ,GACd,OAAAvL,EAAYuL,KACXlQ,EAASkQ,EAAMzL,SACfzE,EAASkQ,EAAMzL,UAAYyL,EAAM7O,KAC9B6O,EACAzP,EAAYyP,EAAMzL,OAAOtG,OACzB+R,EAAMzL,OAAOtD,QACb+O,EAAMzL,OAAOtG,MDoEFgS,CADKhG,WAIlB,OAFAwF,EAAmBzP,GACnB0P,EAASzN,QAAUjC,EACZA,GAGHkQ,EAAgBC,eAAkB,WAOlCvO,EAAUK,QAAQJ,GACpBD,EAAUK,QAAQJ,MAChBrB,IAAKoB,EAAUK,QAAQJ,GAAOrB,KAC3B6N,IAGLS,EACE7L,OAAOmN,eAAe,CAAEvO,OAAMwO,MAAOT,EAAW3N,SxDnFnC,QwDmFqD,CAChE/C,aAAIc,GACFyP,EAAmBzP,GACnB0P,EAASzN,QAAUjC,GAErB2C,eACE,OAAO+M,EAASzN,WAGpBoM,GAEEgB,IAAoB1M,EAAIiM,EAAiB3M,QAASJ,IACpD4N,EAAmBF,QAGtB,CAAClB,EAAOxM,EAAMiN,IAEjBwB,aAAgB,WAAM,OAAA,WAAM,OAAAvB,EAAWlN,MAAO,CAACkN,EAAYlN,IAE3DyO,aAAgB,WAqBdJ,MACC,CAACA,IAEJI,aAAgB,WACT1O,EAAUK,QAAQJ,KACrBqO,IACIb,GACFI,EAAmBF,SAKzB,IAAMgB,EAAS,WACTpB,EAAiBlN,QAAQgN,UAAYtM,EAAIsM,EAASpN,KACpD3C,EAAI+P,EAASpN,GAAM,GACnBqN,EAAgB,CACdD,aAIAY,GAAe,IACjBb,EAAQnN,IAIN2O,EAAW,eAAC,aAAAC,mBAAAA,IAAAT,kBAChB,OAAAnB,EAAShN,EAAMkO,EAAWC,GAAQ,CAChCH,eAAgBA,IAChBa,aAAa,KAGXC,SACDjC,IACH8B,WACAD,SACA1O,OACA5D,UAGF,OAAOqQ,EACHsC,iBAAqBtC,GACnBuC,eAAmBvC,EAAIqC,GACvBG,gBAAoBxC,EAAcqC,GACpCpC,EACAA,EAAO,CACLiC,WACAD,SACAtS,QACA4D,SAEF,2BVjLsB,SAAmCJ,GAC7D,IAAAsP,aACGJ,MAF0D,cAGxB,OACrCG,gBAACpE,GAAYsE,UAAS/S,MAAOgT,KAAKN,IAC/BI,gGSwBwB,SAI3BtP,OACA+M,YACA3M,SACA4E,YAAA0H,aAAU,OAKJQ,EAAU9B,KAUVqE,EAAgBvB,UAAc,GAC9B5H,EAmBFyG,GAAWG,EAAQH,QAlBrB2C,kBACAC,+BACAhC,uBACAxN,cACAgN,qBACAyC,6BACAC,iBACAxP,0BACAoN,oBACAC,qBACAoC,mBACAC,mBACAC,4BACAC,+BACAC,qBACAC,wBACAC,cACAC,qBAGIC,EAAuBC,GAAwBnQ,GAC/CoQ,EAAwBtC,WACxBhN,EAAI+O,EAA2BzP,QAAS8P,GACxCpP,EAAI+O,EAA2BzP,QAASJ,EAAM,IAC9Cc,EACEmP,EACIlD,EAAiB3M,QACjBH,EAAsBG,QAC1BJ,EACA,MAGFuG,EAAA6B,EAAsBuF,WAE1BtB,GAAO+D,EAAsBhQ,QAASkM,OAFjClH,OAAQiL,OAGTC,EAAYxC,SAEhB1I,GAEImL,EAAyB,WAC7B,OAAAzP,EAAIkP,IAAahQ,EAAMsQ,EAAUlQ,SAAST,KACxC,SAACqC,EAAkCxE,GAAkB,cAChD8S,EAAUlQ,QAAQ5C,IAClBwE,OAITsO,EAAUlQ,QAAUgF,EACpBmI,EAAmBnN,QAAQ6I,IAAIjJ,GAE1Bc,EAAI+O,EAA2BzP,QAAS8P,IAC3C7S,EACEwS,EAA2BzP,QAC3B8P,EACApP,EAAIiM,EAAiB3M,QAAS8P,IAIlC,IAAMM,EAAwB,SAC5BC,GAIA,GAFAJ,EAAUI,GAENnD,EAAiBlN,QAAQpB,SAAW8Q,EAAkB,CACxD,IAAMpQ,EAASsQ,IACf3S,EAAIqC,EAAQM,EAAMyQ,GAClBX,EAAiBpQ,KAIfgR,EAAkB,SACtBC,GAEA,OAACrD,EAAiBlN,QAAQwQ,SACxBtD,EAAiBlN,QAAQmC,eAC1B7D,EAAYiS,KACVrN,GACCqN,EAAahR,KAAI,SAACC,gBAAAA,UAAEgF,EAAC0H,OAAsC,WAAzC,gCAClBxL,EAAIiM,EAAiB3M,QAASJ,MAG9B6Q,EAAc,WAClB,IAAK,IAAM/S,KAAOiC,EAAUK,QAC1ByJ,GAAsB/L,EAAKkC,IACzBwP,EAAyBzP,EAAUK,QAAQtC,IAAe,IAI1DgT,EAAU,SAAInS,GAClB,OAACzB,EAAQ4D,EAAInC,EAAKqB,EAAM,KAAKpC,QAAU0D,EAAM3C,EAAKqB,IAE9C+Q,EAAqC,SAGzCC,GAEA,IAAMC,EAA0BnQ,EAAIiM,EAAiB3M,QAASJ,EAAM,IAC9DkR,EAAuC,SAC3CC,EACAzO,SAEA,IAAK,IAAM5E,KAAOqT,EAChB,IAAK,IAAMC,KAAYD,EAAKrT,GAExBsT,IAAa9E,GACX5J,EAAO5E,IACNqT,EAAKrT,IACNqT,EAAKrT,GAAKsT,KAAc1O,EAAO5E,GAAKsT,IAEtC/T,EAAIoS,EAAarP,QAAQmC,YAAgBvC,MAAQlC,aAC5CgD,EAAI2O,EAAarP,QAAQmC,YAAgBvC,MAAQlC,MAAQ,aAC3DsT,IAAW,QAOlBJ,IACFE,EACED,EACAD,GAEFE,EACEF,EACAC,KAKAI,EAAmB,SAIvBC,EACAC,EAMAC,EACAZ,EACAa,EACAC,GAEA,gBAJAd,mBACAa,mBACAC,MAEI5Q,EAAIb,EAAsBG,QAASJ,GAAO,CAC5C,IAAMgD,EAASsO,EACbxQ,EAAIb,EAAsBG,QAASJ,GACnCuR,EAAKI,KACLJ,EAAKK,MAEPH,GAAapU,EAAI4C,EAAsBG,QAASJ,EAAMgD,GAGxD,GAAIlC,EAAI+O,EAA2BzP,QAASJ,GAAO,CAC3CgD,EAASsO,EACbxQ,EAAI+O,EAA2BzP,QAASJ,GACxCuR,EAAKI,KACLJ,EAAKK,MAEPH,GAAapU,EAAIwS,EAA2BzP,QAASJ,EAAMgD,GAC3D8N,EAAQjB,EAA2BzP,SAGrC,GAAIzD,MAAMC,QAAQkE,EAAI2O,EAAarP,QAAQqE,OAAQzE,IAAQ,CACnDgD,EAASsO,EACbxQ,EAAI2O,EAAarP,QAAQqE,OAAQzE,GACjCuR,EAAKI,KACLJ,EAAKK,MAEPH,GAAapU,EAAIoS,EAAarP,QAAQqE,OAAQzE,EAAMgD,GACpD8N,EAAQrB,EAAarP,QAAQqE,QAG/B,GACE6I,EAAiBlN,QAAQgN,SACzBtM,EAAI2O,EAAarP,QAAQgN,QAASpN,GAClC,CACMgD,EAASsO,EACbxQ,EAAI2O,EAAarP,QAAQgN,QAASpN,GAClCuR,EAAKI,KACLJ,EAAKK,MAEPH,GAAapU,EAAIoS,EAAarP,QAAQgN,QAASpN,EAAMgD,GACrD8N,EAAQrB,EAAarP,QAAQgN,SAG/B,GACEE,EAAiBlN,QAAQmC,aACzB+K,EAAiBlN,QAAQwQ,QACzB,CACM5N,EAASsO,EACbxQ,EAAI2O,EAAarP,QAAQmC,YAAavC,EAAM,IAC5CuR,EAAKM,KACLN,EAAKO,MAEPL,GAAapU,EAAIoS,EAAarP,QAAQmC,YAAavC,EAAMgD,GACzD+N,EAAmCS,GACnCV,EAAQrB,EAAarP,QAAQmC,aAI7BmP,GACApE,EAAiBlN,QAAQpB,UACxB8Q,IAEDzS,EACEsS,EAAevP,QACfJ,EACAsR,EAAOxQ,EAAI6O,EAAevP,QAASJ,EAAM,IAAKuR,EAAKI,OAErDb,EAAQnB,EAAevP,SAEvB/C,EACEuS,EAAwBxP,QACxBJ,EACAsR,EAAOxQ,EAAI8O,EAAwBxP,QAASJ,EAAM,IAAKuR,EAAKI,OAE9Db,EAAQlB,EAAwBxP,UAGlCiN,EAAgB,CACd5I,OAAQgL,EAAarP,QAAQqE,OAC7BlC,YAAakN,EAAarP,QAAQmC,YAClCqO,UACAxD,QAASqC,EAAarP,QAAQgN,WAoJ5B2E,EAAQ,SACZ5T,GAEA0S,KACC1S,GAAQmD,EAAMuO,EAA2BzP,QAASJ,GACnDsB,EAAMrB,EAAsBG,QAASJ,GACrCoQ,EAAsBhQ,QAAUU,EAAI3C,GAAQ4O,EAAiB3M,QAASJ,GACtEqQ,EAAUhE,GAAO+D,EAAsBhQ,QAASkM,KAiElD,OA9DAmC,aAAgB,mBASRnM,EAAgBxB,EAAI+O,EAA2BzP,QAASJ,GAO9D,GALIsC,GAAiB8C,EAAOxH,OAAS0E,EAAc1E,SACjD0E,EAAc0P,MACd3U,EAAIwS,EAA2BzP,QAASJ,EAAMsC,IAG5CgN,EAAclP,QAChBiN,SACK,GAAIqC,EAAgB,CACzB,IAAIuC,GAAuB,MAC3B,IAAyB,IAAArN,EAAAf,EAAA6L,EAAetP,uCAAS,CAC/C,WAAe+C,WAAWnD,GAAO,CAC/BqN,IACA4E,GAAuB,EACvB,yGAIJA,GAAwBlC,EAAoB/P,GAG9C,GAAIqP,EAAcjP,SAAW,EAC3B,IAAK,IAAMtC,KAAOiC,EAAUK,QAAS,CACnC,IAAMD,EAAQJ,EAAUK,QAAQtC,GAChC,GACEA,EAAIqF,WAAcnD,MAAQqP,EAAcjP,cACxCD,EAAOxB,IAAI6P,MACX,CACArO,EAAOxB,IAAI6P,QACX,OAKNa,EAAcjP,SAAW,IACxB,CAACgF,EAAQpF,IAEZyO,aAAgB,WACd,IAAMyD,EAAiB3C,EAA2BnP,QAC5C+R,EAAkB5E,EAAmBnN,QAM3C,OAJK+P,GAAwBnQ,KAC3BkS,EAAelS,GAAQ+R,GAGlB,WACLlB,WACOqB,EAAelS,GACtBmS,EAAgBC,OAAOpS,MAExB,IAEI,CACLqS,KAAM/D,eA/GK,SAACxC,EAAgBC,GAC5B,IAAMnD,EAAc2H,IACpB+B,GAAY1J,EAAakD,EAAQC,GACjC8E,IACAL,IAA0B5H,IAC1ByI,EACEiB,GACA,CACEX,KAAM7F,EACN8F,KAAM7F,EACN8F,KAAM/F,EACNgG,KAAM/F,QAER1N,EACAqS,EAAgB9H,IAChB,KAgG4B,CAAC5I,IAC/BuS,KAAMjE,eA7FK,SAAC3C,EAAcC,GAC1B,IAAMhD,EAAc2H,IACpBiC,GAAY5J,EAAa+C,EAAMC,GAC/BiF,IACAL,IAA0B5H,IAC1ByI,EACEmB,GACA,CACEb,KAAMhG,EACNiG,KAAMhG,EACNiG,KAAMlG,EACNmG,KAAMlG,QAERvN,EACAqS,EAAgB9H,IAChB,KA8E4B,CAAC5I,IAC/BiM,QAASqC,eA5LK,SACdlS,EACAqW,gBAAAA,MAEA,IAAMC,EAAaC,GAAevW,GAC5B4U,EAA0B4B,GAC9BrC,IACAlE,GAAO1P,MAAMC,QAAQR,GAASA,EAAQ,CAACA,GAAQkQ,IAGjDkE,EAAsBQ,GACtBH,IACAQ,EACEuB,GACA,CACEjB,KAAMe,EACNb,KAAMgB,GAAiBzW,IAEzB4U,GAEF3B,EAAcjP,QAAUqS,EAAc,GAAK,IAwKP,CAACzS,IACrC8S,OAAQxE,eA5NK,SACblS,EACAqW,gBAAAA,MAEA,IAAMM,IACDzC,EAAUlQ,QACViM,GAAO1P,MAAMC,QAAQR,GAASA,EAAQ,CAACA,GAAQkQ,IAEpDkE,EAAsBuC,IAGpBzF,EAAiBlN,QAAQmC,aACzB+K,EAAiBlN,QAAQwQ,WAEzBG,EAAmCgC,GAEnC1F,EAAgB,CACduD,SAAS,EACTrO,YAAakN,EAAarP,QAAQmC,eAIjC0N,IACHhQ,EAAsBG,QAAQJ,KACxBC,EAAsBG,QAAQJ,IAAS,IAC3C5D,KAGJiT,EAAcjP,QAAUqS,EAAcnC,EAAUlQ,QAAQxC,QAAU,IAgMhC,CAACoC,IACnCgT,OAAQ1E,eAvKK,SAAC9Q,GACd,IAAMoL,EAAc2H,IACdiB,EAAiDyB,GACrDrK,EACApL,GAEFgT,EACEgB,GAEFX,IACAQ,EACE4B,GACA,CACEtB,KAAMnU,EACNqU,KAAMrU,GAERgU,EACAd,EAAgBuC,GAAcrK,EAAapL,KAC3C,GACA,KAoJgC,CAACwC,IACnCkM,OAAQoC,eAjJK,SACb9Q,EACApB,EACAqW,gBAAAA,MAEA,IAAMC,EAAaC,GAAevW,GAC5BwM,EAAc2H,IACdS,EAA0BkC,GAC9BtK,EACApL,EACA6O,GAAO1P,MAAMC,QAAQR,GAASA,EAAQ,CAACA,GAAQkQ,IAGjDkE,EAAsBQ,GACtBH,IACAQ,EACE6B,GACA,CACEvB,KAAMnU,EACNoU,KAAMc,EACNb,KAAMrU,EACNsU,KAAMe,GAAiBzW,IAEzB4U,EACAN,EAAgBwC,GAAStK,EAAapL,KAExC6R,EAAcjP,QAAUqS,EAAcjV,GAAS,IAuHb,CAACwC,IACnCoF,oCVpbFxF,GAHF,WAGEgF,aAS0C,KAR1CsB,SAAAkE,aAAO7N,IACPgK,mBAAA4M,aAAiB5W,IACjB6W,aACAC,YACA3M,kBAAApE,aAAgB,KAChB4E,qBAAAoM,gBACAlM,qBAAA6I,gBACAsD,iBAEMxT,EAAY+N,SAAsC,IAClD+B,EAA6B/B,SAEjC,IACI4B,EAAiB5B,SAA4C,IAAI0F,KACjEC,GAAoB3F,SAExB,IACI4F,GAA6B5F,SACjC,IAEI8B,GAA0B9B,SAE9B,IACI6B,GAAiB7B,SACrB,IAEIf,GAAmBe,SACvBxL,GAEIqR,GAA2B7F,SAE/B,IACI8F,GAAY9F,UAAa,GACzBwB,GAAgBxB,UAAa,GAC7B+F,GAAkB/F,WAClB7N,GAAwB6N,SAC5BmC,EAAmB,GAAKhG,GAAY3H,IAEhCiN,GAA6BzB,SAKjC,IACIgG,GAAahG,SAAauF,GAC1BU,GAAcjG,SAAasF,GAC3B7F,GAAqBO,SACzB,IAAI0F,KAEAQ,GAAUlG,SAAamG,GAAY7J,IACnC5C,GAA4BwM,GAAQ5T,QAAlCiK,iBAAYhB,gBACd6K,GAA6BX,IAAiBhX,EAC9C0L,GAAAG,EAA4BuF,WAAwC,CACxEiD,SAAS,EACTrO,YAAa,GACbmH,aAAa,EACbyK,YAAa,EACb/G,QAAS,GACTgH,cAAc,EACdC,oBAAoB,EACpBrV,SAAUqL,GACV5F,OAAQ,QATH6P,SAAWC,SAWZjH,GAAmBQ,SAA4B,CACnD8C,SAAUjG,GACVpI,aAAcoI,GACdyC,SAAUzC,IAAkBtB,GAC5B+K,cAAezJ,GACf3L,SAAU2L,KAEN8E,GAAe3B,SAAawG,IAC5BE,GAAc1G,WACd2G,GAGF3G,SAAamG,GAAYd,IAAiB/S,QAFlCmJ,eACEC,iBAGdsK,GAAW1T,QAAUiT,EACrBU,GAAY3T,QAAUgT,EACtB3D,GAAarP,QAAUkU,GAEvB,IAAMjH,GAAkBiB,eACtB,SAACoG,GACC,oBADDA,OACEd,GAAUxT,SACXmU,UACK9E,GAAarP,SACbsU,MAEP,IAGIC,GAA0BrG,eAC9B,SACEtO,EACA0E,EACAkQ,EACAF,EAKA1V,gBANA4V,mBACAF,MAOA,IAAIG,EACFD,YahLsEhV,OAC5E6E,WACAzE,SACA0E,UACAoQ,gBACAC,yBAQM/V,EAAUN,EAAYgG,GACtBsQ,EAAgBlU,EAAI2D,EAAQzE,GAElC,OACGhB,KAAagW,IACZhW,IAAYsE,GAAU0R,EAAetQ,GAAO,IAC7C1F,GAAW8B,EAAIiU,EAAsB/U,KAAUc,EAAIgU,EAAa9U,Gb8J7DiV,CAAkC,CAChCxQ,OAAQgL,GAAarP,QAAQqE,OAC7BC,QACA1E,OACA8U,YAAanF,GAAevP,QAC5B2U,qBAAsBnF,GAAwBxP,UAE5C4U,EAAgBlU,EAAI2O,GAAarP,QAAQqE,OAAQzE,GAEnD0E,GACFpD,EAAMqO,GAAevP,QAASJ,GAC9B6U,EACEA,IACCG,IACA1R,GAAU0R,EAAetQ,GAAO,GACnCrH,EAAIoS,GAAarP,QAAQqE,OAAQzE,EAAM0E,MAEnC5D,EAAI8O,GAAwBxP,QAASJ,IAAS+T,GAAY3T,WAC5D/C,EAAIsS,GAAevP,QAASJ,GAAM,GAClC6U,EAAiBA,GAAkBG,GAErC1T,EAAMmO,GAAarP,QAAQqE,OAAQzE,KAIlC6U,IAAmBnY,EAAkBkY,KACrC3S,EAAcyS,KAEfrH,YACKqH,IACHjQ,OAAQgL,GAAarP,QAAQqE,SACzBsP,GAAY3T,QAAU,CAAEpB,UAAWA,GAAY,OAIzD,IAGIkW,GAAgB5G,eACpB,SACEtO,EACAmV,GAQM,IAAAvV,EAAmBG,EAAUK,QAAQJ,GAAnCrB,QAAKM,YACP7C,EACJqO,IAAS5L,EAAcF,IAAQjC,EAAkByY,GAC7C,GACAA,EAEF3U,EAAa7B,IAAQM,EACvBA,EAAQiK,SACN,SAACtJ,OAAOwV,QACN,OAACA,EAAShW,QAAUgW,EAAShZ,QAAUA,KAElCkE,EAAY3B,KAASuE,EAAS9G,GACvCuC,EAAI4B,MAAQnE,EACHsE,EAAiB/B,GAC1BgC,EAAIhC,EAAIM,SAASiK,SACf,SAACmM,GACC,OAACA,EAAUC,SAAYlZ,EAAmB0H,SACxCuR,EAAUjZ,UAGPkJ,EAAgB3G,IAAQM,EACjCA,EAAQrB,OAAS,EACbqB,EAAQiK,SACN,SAACtJ,OAAO2V,QACN,OAACA,EAAYnW,QAAUzC,MAAMC,QAAQR,KAC9BA,EAAagH,MACd,SAACjF,GAAiB,OAAAA,IAASoX,EAAYnZ,SAEzCA,IAAUmZ,EAAYnZ,SAE7B6C,EAAQ,GAAGN,IAAIS,UAAYhD,EAEhCuC,EAAIvC,MAAQA,IAGhB,IAGIoZ,GAAc,WAClB,OAAClS,GACC0M,KACA/N,EAAc8K,GAAiB3M,SAC3BuT,GAAyBvT,QACzB2M,GAAiB3M,UAGnBqV,GAAyBnH,eAC7B,SACEtO,EACA4U,GAMA,gBANAA,MAOEtH,GAAiBlN,QAAQwQ,SACzBtD,GAAiBlN,QAAQmC,YACzB,CACA,IAAMmT,EACJ5U,EAAI6S,GAAyBvT,QAASJ,KACtCF,EAAcC,EAAWC,EAAMC,IAC3B0V,EAAoB7U,EAAI2O,GAAarP,QAAQmC,YAAavC,GAC1D4V,EAAkBnG,GAAarP,QAAQwQ,QAE7C8E,EACIrY,EAAIoS,GAAarP,QAAQmC,YAAavC,GAAM,GAC5CsB,EAAMmO,GAAarP,QAAQmC,YAAavC,GAE5C,IAAM0U,EAAQ,CACZ9D,QAAS4E,KACTjT,YAAakN,GAAarP,QAAQmC,aAG9BsT,EACHvI,GAAiBlN,QAAQwQ,SACxBgF,IAAoBlB,EAAM9D,SAC3BtD,GAAiBlN,QAAQmC,aACxBoT,IAAsB7U,EAAI2O,GAAarP,QAAQmC,YAAavC,GAYhE,OAVI6V,GAAajB,IACfnF,GAAarP,eACRqP,GAAarP,SACbsU,GAELrH,QACKqH,KAIAmB,EAAYnB,EAAQ,GAG7B,MAAO,KAET,IAGIoB,GAAoBxH,eACxB,SACEtO,EACA+V,uGAEIhW,EAAUK,QAAQJ,MAEZgW,GACJjW,EACAmU,GACAnU,EAAUK,QAAQJ,GAClBC,kBAMJ,OAXMyE,EACJ9E,SAMAI,GAEF2U,GAAwB3U,EAAM0E,EAAOqR,MAE9BrX,EAAYgG,WAGrB,UAAO,YAET,CAACiQ,GAAyBT,KAGtB+B,GAAoC3H,eACxC,SACEvE,sGAImB,SAAMgK,GAAY3T,QACnC4P,KACA8D,GAAW1T,QACX8T,YAIF,OAPQzP,EAAW7E,gBAKbsW,EAAsBzG,GAAarP,QAAQpB,QAE7CrC,MAAMC,QAAQmN,IACVoM,EAAgBpM,EACnBpK,KAAI,SAACK,GACJ,IAAM0E,EAAQ5D,EAAI2D,EAAQzE,GAM1B,OAJA0E,EACIrH,EAAIoS,GAAarP,QAAQqE,OAAQzE,EAAM0E,GACvCpD,EAAMmO,GAAarP,QAAQqE,OAAQzE,IAE/B0E,KAET0R,MAAMpZ,SAETqQ,GAAgB,CACdrO,QAASiD,EAAcwC,GACvBA,OAAQgL,GAAarP,QAAQqE,YAGxB0R,KAEDzR,EAAQ5D,EAAI2D,EAAQsF,GAE1B4K,GACE5K,EACArF,EACAwR,IAAwBjU,EAAcwC,GACtC,GACAxC,EAAcwC,QAGRC,aAGZ,CAACiQ,GAAyBT,KAGtB/G,GAAUmB,eACd,SACEtO,yGAIA,OAFMoF,EAASpF,GAAQoB,OAAOC,KAAKtB,EAAUK,SAEzC2T,GAAY3T,WACP6V,GAAkC7Q,IAGvCzI,MAAMC,QAAQwI,MACKiR,QAAQC,IAC3BlR,EAAOzF,KAAI,SAAOxB,0FAAS,SAAM2X,GAAkB3X,EAAM,cAA9B,SAAAyB,mCAG7B,OAJMpB,EAASoB,SAGfyN,QACO7O,EAAO4X,MAAMpZ,iBAGf,SAAM8Y,GAAkB1Q,EAAQkI,GAAiBlN,QAAQpB,iBAAhE,SAAOY,mBAET,CAACqW,GAAmCH,KAGhCS,GAAoBjI,eACxB,SACEtO,EACA5D,EACAwD,WAAEiP,gBAAab,mBAET7P,EAAO,GACbd,EAAIc,EAAM6B,EAAM5D,OAEhB,IAAwB,IAAA8J,EAAArC,EAAA0E,GAAQvI,EAAM5D,kCAAQ,CAAzC,IAAMyM,UACL9I,EAAUK,QAAQyI,KACpBqM,GAAcrM,EAAW/H,EAAI3C,EAAM0K,IACnCgG,GAAe4G,GAAuB5M,GACtCmF,GAAkBb,GAAQtE,yGAIhC,CAACsE,GAAS+H,GAAeO,KAGrBe,GAAmBlI,eACvB,SACEtO,EACA5D,EACAqa,wBAAAA,MAEI1W,EAAUK,QAAQJ,IACpBkV,GAAclV,EAAM5D,GACpBqa,EAAO5H,aAAe4G,GAAuBzV,IACnC4C,EAAYxG,KACtBma,GAAkBvW,EAAM5D,EAAOqa,GAE3BlJ,GAAmBnN,QAAQsW,IAAI1W,IAASyW,EAAO5H,cACjDgB,EAA2BzP,QAAQJ,GAAQ5D,EAC3CmT,GAA2BnP,QAAQJ,KAAMJ,MACtCI,GAAO5D,OAIRkR,GAAiBlN,QAAQwQ,SACzBtD,GAAiBlN,QAAQmC,eAEzBlF,EACEoS,GAAarP,QAAQmC,YACrBvC,EACAqC,EACEjG,EACA0E,EAAIiM,GAAiB3M,QAASJ,EAAM,IACpCc,EAAI2O,GAAarP,QAAQmC,YAAavC,EAAM,MAIhDqN,GAAgB,CACduD,SAAUtN,UACH0M,cAAchQ,GAAO5D,MAC1B2Q,GAAiB3M,SAEnBmC,YAAakN,GAAarP,QAAQmC,kBAMzC0N,GAAoB5S,EAAI4C,GAAsBG,QAASJ,EAAM5D,KAEhE,CAACqZ,GAAwBP,GAAeqB,KAGpCI,GAAiB,SAAC3W,GACtB,OAAAsP,GAAclP,SACdsP,EAAetP,QAAQsW,IAAI1W,IAC3B0P,EAAetP,QAAQsW,KAAK1W,EAAK4W,MAAM,QAAU,IAAI,KAEjD7G,GAAsB,SAAC/P,EAAc6W,GACzC,gBADyCA,OACpC5U,EAAcwR,GAAkBrT,SACnC,IAAK,IAAMtC,KAAO2V,GAAkBrT,QAE/BJ,GACAyT,GAAkBrT,QAAQtC,GAAKgZ,OAChCrD,GAAkBrT,QAAQtC,GAAK4Y,IAAI1W,KACnCyT,GAAkBrT,QAAQtC,GAAK4Y,IAAIvG,GAAwBnQ,MAE3D0T,GAA2BtT,QAAQtC,KACnC+Y,GAAQ,GAKd,OAAOA,GA6FT,SAASE,GAAkD5Y,aACzD,IAAK8R,EAAkB,CACrB,IAAI/F,EAAOD,GAAY9L,OAEvB,IAAoB,IAAA+H,EAAArC,EAAA0J,GAAmBnN,uCAAS,CAA3C,IAAMhE,UACLsB,EAAMtB,KAAW8N,EAAK9N,KACxB8N,SACKA,WACF9N,GAAQ,0GAKf,OAAO8N,EAET,OAAO/L,EAYT,SAAS6R,GAAUgH,WACjB,GAAI9T,EAAS8T,GACX,OAAOlX,EAAcC,EAAWiX,EAAS/W,IAG3C,GAAItD,MAAMC,QAAQoa,GAAU,CAC1B,IAAM7Y,EAAO,OAEb,IAAmB,IAAA8Y,EAAApT,EAAAmT,iCAAS,CAAvB,IAAM/T,UACT5F,EAAIc,EAAM8E,EAAMnD,EAAcC,EAAWkD,EAAMhD,uGAGjD,OAAO9B,EAGT,OAAO4Y,GACLG,GAAgBnX,EAAWE,KApH/B4T,GAAgBzT,QAAUyT,GAAgBzT,QACtCyT,GAAgBzT,QAChB,SAAOR,OAAEN,SAAMoD,iIACP1C,EAAQ0C,EAAgB1C,MACxBG,EAAQJ,EAAUK,QAAQJ,KAMxBmX,EAAuBlJ,MAC3BxE,YAFIA,EAAcnK,IAAShD,EAG3BkN,wBACAD,sBACAD,YAAaxI,EAAI2O,GAAarP,QAAQgN,QAASpN,GAC/C0J,YAAa+F,GAAarP,QAAQsJ,aAC/BsK,GAAQ5T,UAETsU,EAAQe,GAAuBzV,GAAM,GACrC4U,GAAgB3S,EAAcyS,IAAUiC,GAAe3W,GAGzDyJ,IACC3I,EAAI2O,GAAarP,QAAQgN,QAASpN,IACnCsN,GAAiBlN,QAAQgN,UAEzB/P,EAAIoS,GAAarP,QAAQgN,QAASpN,GAAM,GACxC0U,SACKA,IACHtH,QAASqC,GAAarP,QAAQgN,WAI9B+J,GACFpH,GAAoB/P,QAEhBiC,EAAcyS,IACbE,GAAgB3S,EAAcyS,KACjCrH,GAAgBqH,KAIhBX,GAAY3T,WACW2T,GAAY3T,QACnC4P,KACA8D,GAAW1T,QACX8T,gCAHMzP,EAAWG,gBAKbsR,EAAsBzG,GAAarP,QAAQpB,QAEjD0F,EAAQ5D,EAAI2D,EAAQzE,GAEpBhB,EAAUiD,EAAcwC,GAEpByR,IAAwBlX,IAC1B4V,GAAe,gBAIf,SAAMoB,GACJjW,EACAmU,GACA/T,EACAF,YALJyE,EACEE,SAMA5E,oBAGJ+P,GAAoB/P,GACpB2U,GAAwB3U,EAAM0E,EAAOkQ,EAAcF,EAAO1V,sCAmDlE,IAAM8Q,GAAmBxB,eACvB,SAAO5O,uBAAAA,8FACc,SAAMqU,GAAY3T,iBAE9B2M,GAAiB3M,SACjB4P,MACAtQ,GAELoU,GAAW1T,QACX8T,mBAPMzP,EAAW7E,gBASbZ,EAAUiD,EAAcwC,GAE9BgL,GAAarP,QAAQpB,UAAYA,GAC/BqO,GAAgB,CACdrO,yBAGN,CAACkV,KAGG1E,GAA2BlB,eAC/B,SAACnO,EAAciX,GACb,gBtBzpBJrX,EACAsX,EACAlX,EACAF,EACAgQ,EACAmH,GAGE,IAAAzY,EAEEwB,MADFP,EACEO,MADKH,SAAMV,SAETgY,EAAWvX,EAAUK,QAAQJ,GAEnC,IAAKiQ,EAAkB,CACrB,IAAM7T,EAAQ0D,EAAcC,EAAWC,EAAMC,GAExCvB,EAAYtC,IACfiB,EAAI4C,EAAsBG,QAASJ,EAAM5D,GAI7C,GAAKkD,EAKL,IAAKkB,EAAa7B,IAAQ2G,EAAgB3G,KAAS2Y,EAAU,CACnD,IAAAC,EAAYD,UAEhB3a,MAAMC,QAAQ2a,IAAYA,EAAQ3Z,QACpCV,EAAQqa,GAASrO,SAAQ,SAAC/J,EAAQ3B,GACxB,IAAAmB,EAAQQ,OACXR,GAAOoC,EAAWpC,IAAQwD,EAAUhD,EAAQR,IAASyY,KACxDI,EAAwB7Y,EAAK0Y,GAC7B/V,EAAMiW,EAAS,IAAI/Z,WAInB+Z,IAAYra,EAAQqa,GAAS3Z,eACxBmC,EAAUK,QAAQJ,WAGpBD,EAAUK,QAAQJ,QAEjBe,EAAWpC,IAAQwD,EAAUmV,EAAU3Y,IAASyY,KAC1DI,EAAwB7Y,EAAK0Y,UAEtBtX,EAAUK,QAAQJ,gBAzBlBD,EAAUK,QAAQJ,GsBmoBvByX,CACE1X,EACA8T,GAAgBzT,QAChBD,EACAF,GACAgQ,EACAmH,KAEJ,CAACnH,IAGGyH,GAAiCpJ,eACrC,SAACnO,EAA0BiX,GACrBjX,IACFqP,GAAyBrP,EAAOiX,GAE5BnH,IAAqB/S,EAAQiD,EAAMlB,SAAW,IAAIrB,SACpD0D,EAAMqS,GAAyBvT,QAASD,EAAMxB,IAAIqB,MAClDsB,EAAMqO,GAAevP,QAASD,EAAMxB,IAAIqB,MACxCsB,EAAMsO,GAAwBxP,QAASD,EAAMxB,IAAIqB,MACjDsB,EAAMmO,GAAarP,QAAQqE,OAAQtE,EAAMxB,IAAIqB,MAC7C3C,EAAIoS,GAAarP,QAAQmC,YAAapC,EAAMxB,IAAIqB,MAAM,GAEtDqN,GAAgB,CACd5I,OAAQgL,GAAarP,QAAQqE,OAC7BmM,QAAS4E,KACTjT,YAAakN,GAAarP,QAAQmC,cAGpCwR,GAAY3T,SAAW0P,SAI7B,CAACA,GAAkBN,KAoCfmI,GAAgBrJ,eACpB,SACEsJ,EACArZ,EACAsZ,GAEA,IAAM/O,EAAc+O,EAChBpE,GAAkBrT,QAAQyX,GAC1BnI,EAAetP,QACb0X,EAAwBpZ,EAAYH,GACtCwO,GAAiB3M,QACjB7B,EACEqK,EAAcsO,GAClBnX,EACAE,IACA,EACA2X,GAGF,OAAI1U,EAAS0U,GACJG,GACLnP,EACAgP,EACA9O,EACApK,EAAYH,GACRuC,EAAIgX,EAAuBF,GAC1BrZ,GACL,GAIA5B,MAAMC,QAAQgb,GACTA,EAAWnZ,QAChB,SAACS,EAAUc,SAAS,cACfd,WACFc,GAAO+X,GACNnP,EACA5I,EACA8I,EACAgP,SAKJ,KAIJxI,GAAclP,QAAU1B,EAAYmZ,GAE7BxU,GACHpB,EAAc2G,IAAgBA,GAC7BkP,MAGP,IAoCF,SAASE,GACPrZ,EACAsZ,gBAAAA,MA2BQ,IAYJ1Z,EAZIyB,EAAsBrB,OAAhBW,EAAgBX,OAAVvC,EAAUuC,QACxBuZ,KACJvZ,OACGsZ,GAEC7S,EAASrF,EAAUK,QACnBmF,EAAoB4S,GAA0BxZ,GAC9CyZ,EAAe3K,GAAmBF,GAAmBnN,QAASJ,GAC9DqY,EAAa,SAACC,GAClB,OAAA7N,MAAW5L,EAAcF,IAAQ2Z,IAAe3Z,IAC9CwB,EAAQiF,EAAOpF,GACfuY,GAAsB,EAG1B,GACEpY,IACCoF,EACG5I,MAAMC,QAAQuD,EAAMlB,UACpB/B,EAAQiD,EAAMlB,SAASmE,MAAK,SAACjE,GAC3B,OAAO/C,IAAU+C,EAAOR,IAAIvC,OAASic,EAAWlZ,EAAOR,QAEzD0Z,EAAWlY,EAAMxB,MAErByG,EAAOpF,UACFG,GACA8X,OAXP,CAiBE9X,EADEb,EACMiG,KAEFtG,UACK/B,EAASiD,GAASA,EAAMlB,SAAY,KACvC,CACEN,SAGJA,IAAK,CAAEW,OAAMU,SACViY,QAGAC,GAGDA,EAGV9S,EAAOpF,GAAQG,EAEf,IAAMqY,EAAuB9Z,EAC3BoC,EAAIb,GAAsBG,QAASJ,IAwCrC,GArCKiC,EAAc8K,GAAiB3M,UAAaoY,IAC/Cja,EAAeuC,EACb0X,EACIzL,GAAiB3M,QACjBH,GAAsBG,QAC1BJ,IAEFuY,EAAsB7Z,EAAYH,KAEL6Z,GAC3BlD,GAAclV,EAAMzB,IAInB0D,EAAcgW,KACjB5a,EAAIuS,GAAwBxP,QAASJ,GAAM,IAEtCqK,IAAciD,GAAiBlN,QAAQpB,SAC1CgX,GACEjW,EACAmU,GACA/T,EACAF,IACAwY,MAAK,SAAC/T,GACN,IAAMwR,EAAsBzG,GAAarP,QAAQpB,QAEjDiD,EAAcyC,GACVrH,EAAIsS,GAAevP,QAASJ,GAAM,GAClCsB,EAAMqO,GAAevP,QAASJ,GAE9BkW,IAAwBjU,EAAcyC,IACxC2I,WAOLsG,GAAyBvT,QAAQJ,IAChCoY,GAAgBG,GAClB,CACA,IAAMnW,EAAatC,EAAcC,EAAWC,EAAMC,IAClD5C,EACEsW,GAAyBvT,QACzBJ,EACAuY,EACIta,EAASmE,QACFA,GACLA,EACF7D,IAEL6Z,GAAgB9W,EAAMmO,GAAarP,QAAQmC,YAAavC,GAGvDV,Ych9BNM,EACA8Y,EACArB,OAFE1Y,QAIEE,EAAcF,IAAQ0Y,IACxB1Y,EAAIga,iBACFD,EAA0Bpc,EAAgBA,EAC1C+a,GAEF1Y,EAAIga,iBAAiBrc,EAAa+a,Idw8BhCuB,CACErT,GAAqBpF,EAAMlB,QACvBkB,EAAMlB,QAAQkB,EAAMlB,QAAQrB,OAAS,GACrCuC,EACJoF,Get9BchG,efs9BqBZ,Eet9BjCW,Kfu9BFuU,GAAgBzT,UAuCtB,IAAMyY,GAAevK,eACnB,SACEwK,EACAC,GACG,OAAA,SAAOC,wHACNA,GAAKA,EAAEC,iBACTD,EAAEC,iBACFD,EAAEE,WAEAC,EAAyC,GACzCvQ,EAAcmO,GAChBG,GAAgBnX,EAAWE,IAAuB,IAGhDqN,GAAiBlN,QAAQgU,cAC3B/G,GAAgB,CACd+G,cAAc,oDAKZL,GAAY3T,WACmB2T,GAAY3T,QAC3CwI,EACAkL,GAAW1T,QACX8T,yBAHItU,EAAqBsH,SAAnBzC,WAAQ/E,WAKhB+P,GAAarP,QAAQqE,OAASA,EAC9B0U,EAAc1U,EACdmE,EAAclJ,wCAEMkF,EAAAf,EAAAzC,OAAO1B,OAAOK,EAAUK,2DAAjCD,YAGEiZ,EACLjZ,cAEqB6V,GACvBjW,EACAmU,GACA/T,EACAF,oBAJIoZ,EAAanS,UAOJkS,IACb/b,EAAI8b,EAAaC,EAAMC,EAAWD,IAClC9X,EAAMqO,GAAevP,QAASgZ,IACrBtY,EAAI8O,GAAwBxP,QAASgZ,KAC9C9X,EAAMmO,GAAarP,QAAQqE,OAAQ2U,GACnC/b,EAAIsS,GAAevP,QAASgZ,GAAM,gNAOxCnX,EAAckX,IACd/X,OAAOC,KAAKoO,GAAarP,QAAQqE,QAAQ2R,OACvC,SAACpW,GAAS,OAAAA,KAAQD,EAAUK,YAG9BiN,GAAgB,CACd5I,OAAQ,GACR2P,cAAc,OAEV0E,EAAQlQ,EAAaoQ,2BAA3B9R,+BAEAuI,GAAarP,QAAQqE,cAChBgL,GAAarP,QAAQqE,QACrB0U,GAELJ,KAAoBA,EAAUI,EAAaH,mBAA7B9R,4BACdoM,YgBtkCRlO,EACA+T,GAEA,IAAK,IAAMrb,KAAOsH,EAChB,GAAItE,EAAIqY,EAAarb,GAAM,CACzB,IAAMqC,EAAQiF,EAAOtH,GAErB,GAAIqC,EAAO,CACT,GAAIA,EAAMxB,IAAI6P,MAAO,CACnBrO,EAAMxB,IAAI6P,QAEV,MACK,GAAIrO,EAAMlB,QAAS,CACxBkB,EAAMlB,QAAQ,GAAGN,IAAI6P,QAErB,ShBujCoB8K,CAAkBvZ,EAAUK,QAAS+Y,kDAG3D9L,GAAgB,CACd3D,aAAa,EACb0K,cAAc,EACdC,mBAAoBpS,EAAcwN,GAAarP,QAAQqE,QACvDA,OAAQgL,GAAarP,QAAQqE,OAC7B0P,YAAa1E,GAAarP,QAAQ+T,YAAc,oCAItD,CAACb,EAAkBY,KA4ErBzF,aAAgB,WASd,OARAmF,GAAUxT,SAAU,EACpBgT,GAAY9F,GAAiBlN,QAAQpB,SAAW8Q,KAEhD0E,GAAYpU,QACVoU,GAAYpU,UAAYqK,GACpB+J,GAAYpU,iBiBnqCpBL,EACA2X,GAKA,IAAM6B,EAAW,IAAIC,kBAAiB,2BACpC,IAAoB,IAAAtT,EAAArC,EAAAzC,OAAO1B,OAAOK,EAAUK,wCAAU,CAAjD,IAAMD,UACT,GAAIA,GAASA,EAAMlB,YACjB,IAAqB,IAAAyH,YAAA7C,EAAA1D,EAAMlB,wCAAS,CAA/B,IAAME,UACLA,GAAUA,EAAOR,KAAOoC,EAAW5B,EAAOR,MAC5C+Y,EAA+BvX,0GAG1BA,GAASY,EAAWZ,EAAMxB,MACnC+Y,EAA+BvX,yGAUrC,OALAoZ,EAASE,QAAQjP,OAAOE,SAAU,CAChCgP,WAAW,EACXC,SAAS,IAGJJ,EjB2oCCK,CAAY7Z,EAAW2X,IAEtB,WACL9D,GAAUxT,SAAU,EACpBoU,GAAYpU,SAAWoU,GAAYpU,QAAQyZ,aAC3C5Z,GAAsBG,QAAU,GAMhCgB,OAAO1B,OAAOK,EAAUK,SAAS8I,SAAQ,SAAC/I,GACxC,OAAAuX,GAA+BvX,GAAO,SAGzC,CAACuX,MAECtE,GAAY9F,GAAiBlN,QAAQpB,UACxCsV,GAAUtV,QACRsE,GAAUqM,GAAevP,QAASwP,GAAwBxP,UAC1D6B,EAAcwN,GAAarP,QAAQqE,SAGvC,IAAMqV,GAAc,CAClB3M,WACAH,SAAUsB,eAvrBZ,SAIEtO,EACA5D,EAGAqa,GAEAD,GAAiBxW,EAAM5D,EAA+Bqa,GAEtDE,GAAe3W,IAASqN,KACxB0C,GAAoB/P,IACnByW,GAAU,IAAIzI,gBAAkBb,GAAQnN,KAyqBH,CAACwW,GAAkBrJ,KACzD6C,UAAW1B,cAAkB0B,GAAW,IACxC/C,SAAUqB,eAzNZ,SACEyL,EAKAvN,GAEA,IAAKjC,GACH,GAAIrH,EAAS6W,GACX/B,GAAiB,CAAEhY,KAAM+Z,GAA0BvN,OAC9C,CAAA,IACLvO,EAAS8b,MACT,SAAUA,GAIV,OAAO,SAACpb,GACN,OAAAA,GAAOqZ,GAAiBrZ,EAAKob,IAH/B/B,GAAiB+B,EAAwBvN,MA0MP,CAACO,GAAiB3M,UACxD8M,WAAYoB,eAlYd,SACEtO,eAEA,IAAwB,IAAA4E,EAAAf,EAAAlH,MAAMC,QAAQoD,GAAQA,EAAO,CAACA,kCAAO,CAAxD,IAAM6I,UACT6O,GAA+B3X,EAAUK,QAAQyI,IAAY,wGA8XrB,KAGtC8D,MACJoD,uBACAE,mBACAT,4BACAmI,iBACAvN,KAAM4J,GAAQ5T,QACd+S,eAAgB,CACd5J,sBACAC,yBAEFzJ,YACAuP,iBACAI,iBACAH,8BACAkE,qBACAC,8BACA7D,6BACAF,kBACAC,2BACArC,sBACAD,oBACAmC,gBACA1C,oBACA9M,yBACAoN,mBACAyC,iBAAkBsD,EAAWtD,QAAmBzR,GAC7Cyb,IAGL,UACEE,MA1aF,SACEpC,EACArZ,GAEA,OAAOoZ,GAAcC,EAAYrZ,IAuajCoO,WACA2H,UAAW3J,GACP,IAAIC,MAAM0J,GAAW,CACnBxT,IAAK,SAACxC,EAAK2b,GAST,GAAIA,KAAQ3b,EAEV,OADAgP,GAAiBlN,QAAQ6Z,IAAQ,EAC1B3b,EAAI2b,MAMjB3F,GACJuE,gBACA9G,MAAOzD,eApIK,SACZ5O,EACAwa,WAEA,gBAFAA,MAEIzP,OACF,IAAoB,IAAA7F,EAAAf,EAAAzC,OAAO1B,OAAOK,EAAUK,wCAAU,CAAjD,IAAMD,UACT,GAAIA,EAAO,CACD,IAAAxB,EAAiBwB,MAAZlB,EAAYkB,UACnBga,EACJhC,GAA0BxZ,IAAQhC,MAAMC,QAAQqC,GAC5CA,EAAQ,GAAGN,IACXA,EAEN,GAAIE,EAAcsb,GAChB,IACEA,EAASC,QAAQ,QAASrI,QAC1B,MACA,8GAMVhS,EAAUK,QAAU,GACpB2M,GAAiB3M,QAAU6J,GAAYvK,GAAUqN,GAAiB3M,SAE9DV,GACFqQ,GAAoB,IAGtB9P,GAAsBG,QAAU6P,EAC5B,GACAhG,GAAYvK,IAAW,GAE3B0B,OAAO1B,OAAO6P,GAA2BnP,SAAS8I,SAChD,SAACmR,GAAoB,OAAAxS,GAAWwS,IAAoBA,OAnEtC,SAACza,OACjB6E,WACAmM,YACAlH,gBACA0D,YACApO,YACAmV,gBACA5R,gBAEKvD,IACH2Q,GAAevP,QAAU,GACzBwP,GAAwBxP,QAAU,IAGpCuT,GAAyBvT,QAAU,GACnCyP,EAA2BzP,QAAU,GACrCsP,EAAetP,QAAU,IAAIoT,IAC7BlE,GAAclP,SAAU,EAExBiN,GAAgB,CACd8G,YAAaA,EAAc1E,GAAarP,QAAQ+T,YAAc,EAC9DvD,UAASA,GAAUnB,GAAarP,QAAQwQ,QACxClH,cAAaA,GAAc+F,GAAarP,QAAQsJ,YAChD1K,UAASA,GAAUyQ,GAAarP,QAAQpB,QACxCuD,YAAaA,EAAckN,GAAarP,QAAQmC,YAAc,GAC9D6K,QAASA,EAAUqC,GAAarP,QAAQgN,QAAU,GAClD3I,OAAQA,EAASgL,GAAarP,QAAQqE,OAAS,GAC/C2P,cAAc,EACdC,oBAAoB,IA0CtBiG,CAAUJ,KA8FsB,IAChCK,YAAajM,eA/iBf,SACEtO,GAEAA,IACGrD,MAAMC,QAAQoD,GAAQA,EAAO,CAACA,IAAOkJ,SAAQ,SAACsR,GAC7C,OAAAza,EAAUK,QAAQoa,GACd9c,EAAM8c,UACG/K,GAAarP,QAAQqE,OAAO+V,GACnCnd,EAAIoS,GAAarP,QAAQqE,OAAQ+V,OAAWnc,GAC9CiD,EAAMmO,GAAarP,QAAQqE,OAAQ+V,MAG3CnN,GAAgB,CACd5I,OAAQzE,EAAOyP,GAAarP,QAAQqE,OAAS,OAkiBH,IAC5CgW,SAAUnM,eA/hBZ,SAAkBtO,EAA+B0E,GAC/C,IAAM/F,GAAOoB,EAAUK,QAAQJ,IAAS,IAAKrB,IAE7CtB,EAAIoS,GAAarP,QAAQqE,OAAQzE,SAC5B0E,IACH/F,SAGF0O,GAAgB,CACdrO,SAAS,EACTyF,OAAQgL,GAAarP,QAAQqE,SAG/BC,EAAM+N,aAAe9T,GAAOA,EAAI6P,OAAS7P,EAAI6P,UAkhBP,IACtC/J,OAAQ6P,GAAU7P,QACfqV,yDkBhuCqCla,OAC1C+M,YACA3M,SACAzB,iBAEMuO,EAAU9B,KAUVpG,EAKF+H,GAAWG,EAAQH,QAJrB8G,sBACAC,+BACAiE,kBACA5K,qBAEI7G,EAAAkC,EAAoBuF,WACxBjP,EAAYH,GACR2E,EAASlD,GACPc,EAAIiM,EAAiB3M,QAASJ,GAC9BrD,MAAMC,QAAQoD,GACdA,EAAKvB,QACH,SAACS,EAAUsb,SAAc,cACpBtb,WACFsb,GAAY1Z,EAAIiM,EAAiB3M,QAASoa,SAE7C,IAEFzN,EAAiB3M,QACnB7B,MAbCnC,OAAO4Q,OAeR0N,EAAQ5M,WACR6M,EAAkB7M,SAAa1R,GAE/Bwe,EAAmBtM,eAAkB,WACzC,IAAMlS,EAAQub,EAAc3X,EAAM2a,EAAgBva,QAASsa,EAAMta,SACjE4M,EACE/O,EAAS7B,QACAA,GACLO,MAAMC,QAAQR,KACVA,GACJA,KAEL,CAAC4Q,EAAU2K,EAAegD,EAAiB3a,EAAM0a,IA+BpD,OA7BAjM,aAAgB,WASd,IAAMoM,EAAMH,EAAMta,QAAUmM,KACtBuO,EAAwBpH,EAA2BtT,QACnD2a,EAAkBtH,EAAkBrT,QAK1C,OAJA2a,EAAgBF,GAAM,IAAIrH,IAC1BsH,EAAsBD,GAAMD,EAC5BjD,EAAc3X,EAAM2a,EAAgBva,QAASya,GAEtC,kBACEE,EAAgBF,UAChBC,EAAsBD,MAE9B,CACD7a,EACA4a,EACAlH,EACAD,EACAkE,EACAgD,IAGMjc,EAAYtC,GAASmC,EAAenC"}
1
+ {"version":3,"file":"index.ie11.production.min.js","sources":["../src/utils/isHTMLElement.ts","../src/constants.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/removeAllEventListeners.ts","../src/logic/getRadioValue.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/logic/getMultipleSelectValue.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/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/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/controller.tsx","../src/logic/getInputValue.ts","../src/logic/isErrorStateChanged.ts","../src/logic/attachEventListeners.ts","../src/utils/isSelectInput.ts","../src/logic/focusOnErrorField.ts","../src/utils/onDomRemove.ts","../src/useWatch.ts"],"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","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 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","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","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => value);\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","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 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 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","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 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","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","import { FieldElement } from '../types';\nimport { SELECT } from '../constants';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-one`;\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 * 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 * 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"],"names":["value","HTMLElement","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","isObjectType","isNullOrUndefined","Array","isArray","Date","test","filter","Boolean","input","compact","replace","split","set","object","path","index","tempPath","isKey","stringToPath","length","lastIndex","key","newValue","objValue","isObject","isNaN","data","val","undefined","obj","defaultValue","result","reduce","isUndefined","ref","validateWithStateUpdate","isHTMLElement","removeEventListener","defaultReturn","isValid","options","previous","option","checked","element","type","SELECT","defaultResult","validResult","values","map","_a","attributes","getFieldValue","fieldsRef","name","shallowFieldsStateRef","excludeDisabled","field","current","disabled","isFileInput","files","isRadioInput","getRadioValue","isMultipleSelect","__spread","isCheckBox","getCheckboxValue","get","isDetached","nodeType","Node","DOCUMENT_NODE","parentNode","Object","keys","unset","updatePath","childObject","slice","baseGet","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","isEmptyObject","isBoolean","isSameRef","fieldValue","setFieldArrayDirtyFields","defaultValues","dirtyFields","parentName","deepMerge","target","source","isPrimitive","targetValue","sourceValue","search","output","name_1","isString","startsWith","find","transformToNestObject","deepEqual","object1","object2","isErrorObject","keys1","keys2","keys1_1","__values","includes","val1","val2","RegExp","validationData","isRegex","message","isValidElement","getValidateError","isMessage","validateAllFieldCriteria","errors","error","types","_b","required","maxLength","minLength","min","max","pattern","validate","fields","isRadio","isCheckBoxInput","isRadioOrCheckbox","isEmpty","appendErrorsCurry","appendErrors","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","_c","getValueAndMessage","requiredValue","requiredMessage","exceedMin","_d","maxValue","maxMessage","_e","minValue","minMessage","valueNumber","valueAsNumber","parseFloat","valueDate","valueAsDate","_f","maxLengthValue","_g","minLengthValue","inputLength","toString","_h","patternValue","patternMessage","getFieldsValue","validateRef","isFunction","_o","validateError","validationResult","_j","entries","_l","__read","validateFunction","validateResult","getPath","pathWithIndex","getInnerPath","flat","Infinity","fieldValues","fieldName","watchFields","inputValue","isSingleField","add","forEach","isOnBlur","isOnChange","isOnTouch","isTouched","isReValidateOnBlur","isReValidateOnChange","isBlurEvent","isSubmitted","substring","indexOf","isMatchFieldArrayName","searchName","names","some","cloneObject","copy","getTime","mode","isOnSubmit","isOnAll","isWindowUndefined","window","isWeb","document","isProxyEnabled","Proxy","FormContext","React.createContext","displayName","useFormContext","React.useContext","d","performance","now","c","r","Math","random","removeAtIndexes","removeAt","from","to","splice","indexA","indexB","temp","prepend","insert","fill","mapValueToBoolean","mapIds","keyName","generateId","rules","as","render","control","onFocus","rest","methods","defaultValuesRef","setValue","register","unregister","trigger","touched","updateFormState","readFormStateRef","fieldArrayNamesRef","isNotFieldArray","isNameInFieldArray","getInitialValue","React.useState","setInputStateValue","valueRef","React.useRef","onFocusRef","shouldValidate","skipValidation","commonTask","event","getInputValue","registerField","React.useCallback","defineProperty","focus","React.useEffect","onBlur","onChange","_i","shouldDirty","props","React.isValidElement","React.cloneElement","React.createElement","children","Provider","__assign","focusIndexRef","updateWatchedValue","resetFieldArrayFunctionRef","removeFieldEventListener","formStateRef","validFieldsRef","fieldsWithValidationRef","fieldArrayDefaultValuesRef","validateResolver","getValues","shouldUnregister","fieldArrayParentName","getFieldArrayParentName","memoizedDefaultValues","setFields","allFields","getCurrentFieldsValues","setFieldAndValidState","fieldsValues","getIsDirtyState","flagOrFields","isDirty","resetFields","cleanup","updateDirtyFieldsWithDefaultValues","updatedFieldArrayValues","defaultFieldArrayValues","updateDirtyFieldsBaseOnDefaultValues","base","innerKey","batchStateUpdate","method","args","updatedFieldValues","shouldSet","shouldUpdateValid","argA","argB","argC","argD","reset","pop","resetFunctions","fieldArrayNames","delete","swap","swapArrayAt","move","moveArrayAt","shouldFocus","emptyArray","fillEmptyArray","prependAt","fillBooleanArray","append","updateFormValues","remove","removeArrayAt","insertAt","reValidateMode","resolver","context","shouldFocusError","criteriaMode","watchFieldsRef","Set","useWatchFieldsRef","useWatchRenderFunctionsRef","defaultValuesAtRenderRef","isUnMount","isWatchAllRef","handleChangeRef","contextRef","resolverRef","modeRef","modeChecker","isValidateAllFieldCriteria","submitCount","isSubmitting","isSubmitSuccessful","formState","setFormState","observerRef","_k","state","shouldRenderBaseOnError","shouldRender","shouldReRender","validFields","fieldsWithValidation","previousError","isErrorStateChanged","setFieldValue","rawValue","radioRef","selectRef","selected","checkboxRef","isFormDirty","updateAndGetDirtyState","isFieldDirty","isDirtyFieldExist","previousIsDirty","isChanged","executeValidation","skipReRender","validateField","executeSchemaOrResolverValidation","previousFormIsValid","isInputsValid","every","Promise","all","setInternalValues","setInternalValue","config","has","isFieldWatched","match","renderWatchedInputs","found","size","setFieldArrayDefaultValues","payload","payload_1","getFieldsValues","shouldSkipValidation","forceDelete","handleChange","fieldRef","options_1","removeAllEventListeners","findRemovedFieldAndRemoveListener","shouldRenderUseWatch","removeFieldEventListenerAndRef","watchInternal","fieldNames","watchId","combinedDefaultValues","assignWatchFields","registerFieldRef","validateOptions","fieldRefAndValidationOptions","isRadioOrCheckboxFunction","isFieldArray","compareRef","currentRef","isEmptyDefaultValue","isEmptyUnmountFields","then","shouldAttachChangeEvent","addEventListener","attachEventListeners","handleSubmit","onValid","onInvalid","e","preventDefault","persist","fieldErrors","name_2","fieldError","focusOnErrorField","observer","MutationObserver","observe","childList","subtree","onDomRemove","disconnect","commonProps","refOrValidationOptions","watch","prop","omitResetState","inputRef","closest","resetFieldArray","resetRefs","clearErrors","inputName","setError","idRef","defaultValueRef","updateWatchValue","id","watchFieldsHookRender","watchFieldsHook"],"mappings":"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"}