{"version":3,"file":"static/js/4858.c684c1c4.chunk.js","mappings":"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","sources":["../node_modules/react-hook-form/src/utils/isCheckBoxInput.ts","../node_modules/react-hook-form/src/utils/isDateObject.ts","../node_modules/react-hook-form/src/utils/isNullOrUndefined.ts","../node_modules/react-hook-form/src/utils/isObject.ts","../node_modules/react-hook-form/src/logic/getEventValue.ts","../node_modules/react-hook-form/src/logic/isNameInFieldArray.ts","../node_modules/react-hook-form/src/logic/getNodeParentName.ts","../node_modules/react-hook-form/src/utils/isPlainObject.ts","../node_modules/react-hook-form/src/utils/isWeb.ts","../node_modules/react-hook-form/src/utils/cloneObject.ts","../node_modules/react-hook-form/src/utils/compact.ts","../node_modules/react-hook-form/src/utils/isUndefined.ts","../node_modules/react-hook-form/src/utils/get.ts","../node_modules/react-hook-form/src/utils/isBoolean.ts","../node_modules/react-hook-form/src/utils/isKey.ts","../node_modules/react-hook-form/src/utils/stringToPath.ts","../node_modules/react-hook-form/src/utils/set.ts","../node_modules/react-hook-form/src/constants.ts","../node_modules/react-hook-form/src/useFormContext.tsx","../node_modules/react-hook-form/src/logic/getProxyFormState.ts","../node_modules/react-hook-form/src/utils/isEmptyObject.ts","../node_modules/react-hook-form/src/logic/shouldRenderFormState.ts","../node_modules/react-hook-form/src/utils/convertToArrayPayload.ts","../node_modules/react-hook-form/src/useSubscribe.ts","../node_modules/react-hook-form/src/utils/isString.ts","../node_modules/react-hook-form/src/logic/generateWatchOutput.ts","../node_modules/react-hook-form/src/logic/appendErrors.ts","../node_modules/react-hook-form/src/logic/getValidationModes.ts","../node_modules/react-hook-form/src/logic/isWatched.ts","../node_modules/react-hook-form/src/logic/iterateFieldsByAction.ts","../node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts","../node_modules/react-hook-form/src/utils/isFileInput.ts","../node_modules/react-hook-form/src/utils/isFunction.ts","../node_modules/react-hook-form/src/utils/isHTMLElement.ts","../node_modules/react-hook-form/src/utils/isMessage.ts","../node_modules/react-hook-form/src/utils/isRadioInput.ts","../node_modules/react-hook-form/src/utils/isRegex.ts","../node_modules/react-hook-form/src/logic/getCheckboxValue.ts","../node_modules/react-hook-form/src/logic/getRadioValue.ts","../node_modules/react-hook-form/src/logic/getValidateError.ts","../node_modules/react-hook-form/src/logic/getValueAndMessage.ts","../node_modules/react-hook-form/src/logic/validateField.ts","../node_modules/react-hook-form/src/utils/unset.ts","../node_modules/react-hook-form/src/utils/createSubject.ts","../node_modules/react-hook-form/src/utils/isPrimitive.ts","../node_modules/react-hook-form/src/utils/deepEqual.ts","../node_modules/react-hook-form/src/utils/isMultipleSelect.ts","../node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts","../node_modules/react-hook-form/src/utils/live.ts","../node_modules/react-hook-form/src/utils/objectHasFunction.ts","../node_modules/react-hook-form/src/logic/getDirtyFields.ts","../node_modules/react-hook-form/src/logic/getFieldValueAs.ts","../node_modules/react-hook-form/src/logic/getFieldValue.ts","../node_modules/react-hook-form/src/logic/getResolverOptions.ts","../node_modules/react-hook-form/src/logic/getRuleValue.ts","../node_modules/react-hook-form/src/logic/hasPromiseValidation.ts","../node_modules/react-hook-form/src/logic/hasValidation.ts","../node_modules/react-hook-form/src/logic/schemaErrorLookup.ts","../node_modules/react-hook-form/src/logic/skipValidation.ts","../node_modules/react-hook-form/src/logic/unsetEmptyArray.ts","../node_modules/react-hook-form/src/logic/createFormControl.ts","../node_modules/react-hook-form/src/useForm.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is Date => value instanceof Date;\n","export default (value: unknown): value is null | undefined => value == null;\n","import isDateObject from './isDateObject';\nimport isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown): value is object =>\n typeof value === 'object';\n\nexport default (value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set, name: InternalFieldName) =>\n names.has(getNodeParentName(name));\n","export default (name: string) =>\n name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n","import isObject from './isObject';\n\nexport default (tempObject: object) => {\n const prototypeCopy =\n tempObject.constructor && tempObject.constructor.prototype;\n\n return (\n isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf')\n );\n};\n","export default typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n","import isObject from './isObject';\nimport isPlainObject from './isPlainObject';\nimport isWeb from './isWeb';\n\nexport default function cloneObject(data: T): T {\n let copy: any;\n const isArray = Array.isArray(data);\n\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (data instanceof Set) {\n copy = new Set(data);\n } else if (\n !(isWeb && (data instanceof Blob || data instanceof FileList)) &&\n (isArray || isObject(data))\n ) {\n copy = isArray ? [] : {};\n\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n } else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n } else {\n return data;\n }\n\n return copy;\n}\n","export default (value: TValue[]) =>\n Array.isArray(value) ? value.filter(Boolean) : [];\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\n\nexport default (object: T, path?: string, defaultValue?: unknown): any => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) =>\n isNullOrUndefined(result) ? result : result[key as keyof {}],\n object,\n );\n\n return isUndefined(result) || result === object\n ? isUndefined(object[path as keyof T])\n ? defaultValue\n : object[path as keyof T]\n : result;\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default (object: FieldValues, path: string, value?: unknown) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n\n if (key === '__proto__') {\n return;\n }\n\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\n","export const EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n} as const;\n\nexport const VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n} as const;\n\nexport const INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n} as const;\n","import React from 'react';\n\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst HookFormContext = React.createContext(null);\n\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * \n *
\n * \n * \n * \n *
\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return ;\n * }\n * ```\n */\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n TContext = any,\n TransformedValues extends FieldValues | undefined = undefined,\n>(): UseFormReturn =>\n React.useContext(HookFormContext) as UseFormReturn<\n TFieldValues,\n TContext,\n TransformedValues\n >;\n\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * \n *
\n * \n * \n * \n *
\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return ;\n * }\n * ```\n */\nexport const FormProvider = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues extends FieldValues | undefined = undefined,\n>(\n props: FormProviderProps,\n) => {\n const { children, ...data } = props;\n return (\n \n {children}\n \n );\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Control, FieldValues, FormState, ReadFormState } from '../types';\n\nexport default (\n formState: FormState,\n control: Control,\n localProxyFormState?: ReadFormState,\n isRoot = true,\n) => {\n const result = {\n defaultValues: control._defaultValues,\n } as typeof formState;\n\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key as keyof FormState & keyof ReadFormState;\n\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n\n return result;\n};\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport {\n Control,\n FieldValues,\n FormState,\n InternalFieldName,\n ReadFormState,\n} from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\n\nexport default (\n formStateData: Partial> & { name?: InternalFieldName },\n _proxyFormState: K,\n updateFormState: Control['_updateFormState'],\n isRoot?: boolean,\n) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find(\n (key) =>\n _proxyFormState[key as keyof ReadFormState] ===\n (!isRoot || VALIDATION_MODE.all),\n )\n );\n};\n","export default (value: T) => (Array.isArray(value) ? value : [value]);\n","import React from 'react';\n\nimport { Subject } from './utils/createSubject';\n\ntype Props = {\n disabled?: boolean;\n subject: Subject;\n next: (value: T) => void;\n};\n\nexport function useSubscribe(props: Props) {\n const _props = React.useRef(props);\n _props.current = props;\n\n React.useEffect(() => {\n const subscription =\n !props.disabled &&\n _props.current.subject &&\n _props.current.subject.subscribe({\n next: _props.current.next,\n });\n\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n","export default (value: unknown): value is string => typeof value === 'string';\n","import { DeepPartial, FieldValues, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default (\n names: string | string[] | undefined,\n _names: Names,\n formValues?: FieldValues,\n isGlobal?: boolean,\n defaultValue?: DeepPartial | unknown,\n) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n\n if (Array.isArray(names)) {\n return names.map(\n (fieldName) => (\n isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)\n ),\n );\n }\n\n isGlobal && (_names.watchAll = true);\n\n return formValues;\n};\n","import {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode, ValidationModeFlags } from '../types';\n\nexport default (mode?: Mode): ValidationModeFlags => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","import { InternalFieldName, Names } from '../types';\n\nexport default (\n name: InternalFieldName,\n _names: Names,\n isBlurEvent?: boolean,\n) =>\n !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some(\n (watchName) =>\n name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length)),\n ));\n","import { FieldRefs, InternalFieldName, Ref } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\n\nconst iterateFieldsByAction = (\n fields: FieldRefs,\n action: (ref: Ref, name: string) => 1 | undefined | void,\n fieldsNames?: Set | InternalFieldName[] | 0,\n abortEarly?: boolean,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const { _f, ...currentField } = field;\n\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n } else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n } else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n } else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\nexport default iterateFieldsByAction;\n","import {\n FieldError,\n FieldErrors,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport get from '../utils/get';\nimport set from '../utils/set';\n\nexport default (\n errors: FieldErrors,\n error: Partial>,\n name: InternalFieldName,\n): FieldErrors => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import isWeb from './isWeb';\n\nexport default (value: unknown): value is HTMLElement => {\n if (!isWeb) {\n return false;\n }\n\n const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\n return (\n value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement)\n );\n};\n","import { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message => isString(value);\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport {\n Field,\n FieldError,\n FieldValues,\n InternalFieldErrors,\n MaxType,\n Message,\n MinType,\n NativeFieldValue,\n} from '../types';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async (\n field: Field,\n formValues: T,\n validateAllFieldCriteria: boolean,\n shouldUseNativeValidation?: boolean,\n isFieldArray?: boolean,\n): Promise => {\n const {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n valueAsNumber,\n mount,\n disabled,\n } = field._f;\n const inputValue: NativeFieldValue = get(formValues, name);\n if (!mount || disabled) {\n return {};\n }\n const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\n const setCustomValidity = (message?: string | boolean) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(\n null,\n name,\n validateAllFieldCriteria,\n error,\n );\n const getMinMaxMessage = (\n exceedMax: boolean,\n maxLengthMessage: Message,\n minLengthMessage: Message,\n maxType: MaxType = INPUT_VALIDATION_RULES.maxLength,\n minType: MinType = INPUT_VALIDATION_RULES.minLength,\n ) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n\n if (\n isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue as number)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\n const convertTimeToDate = (time: unknown) =>\n new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (\n (maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))\n ) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateError = getValidateError(\n await validate[key](inputValue, formValues),\n inputRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n setCustomValidity(validateError.message);\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n setCustomValidity(true);\n return error;\n};\n","import isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nfunction isEmptyArray(obj: unknown[]) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\n\nexport default function unset(object: any, path: string | (string | number)[]) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n\n const index = paths.length - 1;\n const key = paths[index];\n\n if (childObject) {\n delete childObject[key];\n }\n\n if (\n index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))\n ) {\n unset(object, paths.slice(0, -1));\n }\n\n return object;\n}\n","import { Noop } from '../types';\n\nexport type Observer = {\n next: (value: T) => void;\n};\n\nexport type Subscription = {\n unsubscribe: Noop;\n};\n\nexport type Subject = {\n readonly observers: Observer[];\n subscribe: (value: Observer) => Subscription;\n unsubscribe: Noop;\n} & Observer;\n\nexport default (): Subject => {\n let _observers: Observer[] = [];\n\n const next = (value: T) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n\n const subscribe = (observer: Observer): Subscription => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n\n const unsubscribe = () => {\n _observers = [];\n };\n\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import isObject from '../utils/isObject';\n\nimport isDateObject from './isDateObject';\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(object1: any, object2: any) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!keys2.includes(key)) {\n return false;\n }\n\n if (key !== 'ref') {\n const val2 = object2[key];\n\n if (\n (isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `select-multiple`;\n","import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","import { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\n","import isFunction from './isFunction';\n\nexport default (data: T): boolean => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n","import deepEqual from '../utils/deepEqual';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isUndefined from '../utils/isUndefined';\nimport objectHasFunction from '../utils/objectHasFunction';\n\nfunction markFieldsDirty(data: T, fields: Record = {}) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n\n return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues(\n data: T,\n formValues: T,\n dirtyFieldsFromValues: Record<\n Extract,\n ReturnType | boolean\n >,\n) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n if (\n isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])\n ) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n } else {\n getDirtyFieldsFromDefaultValues(\n data[key],\n isNullOrUndefined(formValues) ? {} : formValues[key],\n dirtyFieldsFromValues[key],\n );\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n\n return dirtyFieldsFromValues;\n}\n\nexport default (defaultValues: T, formValues: T) =>\n getDirtyFieldsFromDefaultValues(\n defaultValues,\n formValues,\n markFieldsDirty(formValues),\n );\n","import { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n value: T,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(_f: Field['_f']) {\n const ref = _f.ref;\n\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n","import {\n CriteriaMode,\n Field,\n FieldName,\n FieldRefs,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport { get } from '../utils';\nimport set from '../utils/set';\n\nexport default (\n fieldsNames: Set | InternalFieldName[],\n _fields: FieldRefs,\n criteriaMode?: CriteriaMode,\n shouldUseNativeValidation?: boolean | undefined,\n) => {\n const fields: Record = {};\n\n for (const name of fieldsNames) {\n const field: Field = get(_fields, name);\n\n field && set(fields, name, field._f);\n }\n\n return {\n criteriaMode,\n names: [...fieldsNames] as FieldName[],\n fields,\n shouldUseNativeValidation,\n };\n};\n","import {\n ValidationRule,\n ValidationValue,\n ValidationValueMessage,\n} from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n rule?: ValidationRule | ValidationValueMessage,\n) =>\n isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n","import { Field, Validate } from '../types';\nimport isFunction from '../utils/isFunction';\nimport isObject from '../utils/isObject';\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\n\nexport default (fieldReference: Field['_f']) =>\n (!fieldReference || !fieldReference.validate) &&\n !!(\n (isFunction(fieldReference.validate) &&\n fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n (isObject(fieldReference.validate) &&\n Object.values(fieldReference.validate).find(\n (validateFunction: Validate) =>\n validateFunction.constructor.name === ASYNC_FUNCTION,\n ))\n );\n","import { Field } from '../types';\n\nexport default (options: Field['_f']) =>\n options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","import { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\nimport isKey from '../utils/isKey';\n\nexport default function schemaErrorLookup(\n errors: FieldErrors,\n _fields: FieldValues,\n name: string,\n): {\n error?: FieldError;\n name: string;\n} {\n const error = get(errors, name);\n\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n\n const names = name.split('.');\n\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n\n names.pop();\n }\n\n return {\n name,\n };\n}\n","import { ValidationModeFlags } from '../types';\n\nexport default (\n isBlurEvent: boolean,\n isTouched: boolean,\n isSubmitted: boolean,\n reValidateMode: {\n isOnBlur: boolean;\n isOnChange: boolean;\n },\n mode: Partial,\n) => {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","import compact from '../utils/compact';\nimport get from '../utils/get';\nimport unset from '../utils/unset';\n\nexport default (ref: T, name: string) =>\n !compact(get(ref, name)).length && unset(ref, name);\n","import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n BatchFieldArrayUpdate,\n ChangeHandler,\n Control,\n DeepPartial,\n DelayCallback,\n EventType,\n Field,\n FieldError,\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n GetIsDirty,\n InternalFieldName,\n Names,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n SetFieldValue,\n SetValueConfig,\n Subjects,\n UseFormClearErrors,\n UseFormGetFieldState,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormReset,\n UseFormResetField,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from '../types';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport createSubject from '../utils/createSubject';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\nimport isWeb from '../utils/isWeb';\nimport live from '../utils/live';\nimport set from '../utils/set';\nimport unset from '../utils/unset';\n\nimport generateWatchOutput from './generateWatchOutput';\nimport getDirtyFields from './getDirtyFields';\nimport getEventValue from './getEventValue';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getResolverOptions from './getResolverOptions';\nimport getRuleValue from './getRuleValue';\nimport getValidationModes from './getValidationModes';\nimport hasPromiseValidation from './hasPromiseValidation';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport isWatched from './isWatched';\nimport iterateFieldsByAction from './iterateFieldsByAction';\nimport schemaErrorLookup from './schemaErrorLookup';\nimport skipValidation from './skipValidation';\nimport unsetEmptyArray from './unsetEmptyArray';\nimport updateFieldArrayRootError from './updateFieldArrayRootError';\nimport validateField from './validateField';\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n} as const;\n\nexport function createFormControl<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n>(\n props: UseFormProps = {},\n): Omit, 'formState'> {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState: FormState = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields: FieldRefs = {};\n let _defaultValues =\n isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names: Names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback: DelayCallback | null;\n let timer = 0;\n const _proxyFormState: ReadFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects: Subjects = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors =\n _options.criteriaMode === VALIDATION_MODE.all;\n\n const debounce =\n (callback: T) =>\n (wait: number) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n\n const _updateValid = async (shouldUpdateValid?: boolean) => {\n if (_proxyFormState.isValid || shouldUpdateValid) {\n const isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n\n const _updateIsValidating = (names?: string[], isValidating?: boolean) => {\n if (_proxyFormState.isValidating || _proxyFormState.validatingFields) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n\n const _updateFieldArray: BatchFieldArrayUpdate = (\n name,\n values = [],\n method,\n args,\n shouldSetValues = true,\n shouldUpdateFieldsAndState = true,\n ) => {\n if (args && method) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n\n if (\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))\n ) {\n const errors = method(\n get(_formState.errors, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n\n if (\n _proxyFormState.touchedFields &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))\n ) {\n const touchedFields = method(\n get(_formState.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n } else {\n set(_formValues, name, values);\n }\n };\n\n const updateErrors = (name: InternalFieldName, error: FieldError) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n\n const _setErrors = (errors: FieldErrors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n\n const updateValidAndValue = (\n name: InternalFieldName,\n shouldSkipSetValueAs: boolean,\n value?: unknown,\n ref?: Ref,\n ) => {\n const field: Field = get(_fields, name);\n\n if (field) {\n const defaultValue = get(\n _formValues,\n name,\n isUndefined(value) ? get(_defaultValues, name) : value,\n );\n\n isUndefined(defaultValue) ||\n (ref && (ref as HTMLInputElement).defaultChecked) ||\n shouldSkipSetValueAs\n ? set(\n _formValues,\n name,\n shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n )\n : setFieldValue(name, defaultValue);\n\n _state.mount && _updateValid();\n }\n };\n\n const updateTouchAndDirty = (\n name: InternalFieldName,\n fieldValue: unknown,\n isBlurEvent?: boolean,\n shouldDirty?: boolean,\n shouldRender?: boolean,\n ): Partial<\n Pick, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output: Partial> & { name: string } = {\n name,\n };\n const disabledField = !!(\n get(_fields, name) &&\n get(_fields, name)._f &&\n get(_fields, name)._f.disabled\n );\n\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n\n const isCurrentFieldPristine =\n disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n\n isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n isCurrentFieldPristine || disabledField\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.dirtyFields &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n\n return shouldUpdateField ? output : {};\n };\n\n const shouldRenderByError = (\n name: InternalFieldName,\n isValid?: boolean,\n error?: FieldError,\n fieldState?: {\n dirty?: FieldNamesMarkedBoolean;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean;\n },\n ) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid =\n _proxyFormState.isValid &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n\n if (props.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(props.delayError);\n } else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n\n if (\n (error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid\n ) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n\n _subjects.state.next(updatedFormState);\n }\n };\n\n const _executeSchema = async (name?: InternalFieldName[]) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver!(\n _formValues as TFieldValues,\n _options.context,\n getResolverOptions(\n name || _names.mount,\n _fields,\n _options.criteriaMode,\n _options.shouldUseNativeValidation,\n ),\n );\n _updateIsValidating(name);\n return result;\n };\n\n const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\n const { errors } = await _executeSchema(names);\n\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors;\n }\n\n return errors;\n };\n\n const executeBuiltInValidation = async (\n fields: FieldRefs,\n shouldOnlyCheckValid?: boolean,\n context: {\n valid: boolean;\n } = {\n valid: true,\n },\n ) => {\n for (const name in fields) {\n const field = fields[name];\n\n if (field) {\n const { _f, ...fieldValue } = field;\n\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name], true);\n }\n\n const fieldError = await validateField(\n field,\n _formValues,\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation && !shouldOnlyCheckValid,\n isFieldArrayRoot,\n );\n\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name]);\n }\n\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(\n _formState.errors,\n fieldError,\n _f.name,\n )\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation(\n fieldValue,\n shouldOnlyCheckValid,\n context,\n ));\n }\n }\n\n return context.valid;\n };\n\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field: Field = get(_fields, name);\n\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name as FieldPath);\n }\n\n _names.unMount = new Set();\n };\n\n const _getDirty: GetIsDirty = (name, data) => (\n name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues)\n );\n\n const _getWatch: WatchInternal = (\n names,\n defaultValue,\n isGlobal,\n ) =>\n generateWatchOutput(\n names,\n _names,\n {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n },\n isGlobal,\n defaultValue,\n );\n\n const _getFieldArray = (\n name: InternalFieldName,\n ): Partial[] =>\n compact(\n get(\n _state.mount ? _formValues : _defaultValues,\n name,\n props.shouldUnregister ? get(_defaultValues, name, []) : [],\n ),\n );\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue,\n options: SetValueConfig = {},\n ) => {\n const field: Field = get(_fields, name);\n let fieldValue: unknown = value;\n\n if (field) {\n const fieldReference = field._f;\n\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach(\n (optionRef) =>\n (optionRef.selected = (\n fieldValue as InternalFieldName[]\n ).includes(optionRef.value)),\n );\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach(\n (checkboxRef) =>\n (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!(fieldValue as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : fieldValue === checkboxRef.value),\n )\n : fieldReference.refs[0] &&\n (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === fieldValue),\n );\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n } else {\n fieldReference.ref.value = fieldValue;\n\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: { ..._formValues },\n });\n }\n }\n }\n }\n\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(\n name,\n fieldValue,\n options.shouldTouch,\n options.shouldDirty,\n true,\n );\n\n options.shouldValidate && trigger(name as Path);\n };\n\n const setValues = <\n T extends InternalFieldName,\n K extends SetFieldValue,\n U extends SetValueConfig,\n >(\n name: T,\n value: K,\n options: U,\n ) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get(_fields, fieldName);\n\n (_names.array.has(name) ||\n !isPrimitive(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n\n const setValue: UseFormSetValue = (\n name,\n value,\n options = {},\n ) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n\n set(_formValues, name, cloneValue);\n\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: { ..._formValues },\n });\n\n if (\n (_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty\n ) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n\n isWatched(name, _names) && _subjects.state.next({ ..._formState });\n _subjects.values.next({\n name: _state.mount ? name : undefined,\n values: { ..._formValues },\n });\n };\n\n const onChange: ChangeHandler = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name as string;\n let isFieldValueUpdated = true;\n const field: Field = get(_fields, name);\n const getCurrentFieldValue = () =>\n target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = (fieldValue: any): void => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n\n if (field) {\n let error;\n let isValid;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent =\n event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation =\n (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(\n isBlurEvent,\n get(_formState.touchedFields, name),\n _formState.isSubmitted,\n validationModeAfterSubmit,\n validationModeBeforeSubmit,\n );\n const watched = isWatched(name, _names, isBlurEvent);\n\n set(_formValues, name, fieldValue);\n\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n const fieldState = updateTouchAndDirty(\n name,\n fieldValue,\n isBlurEvent,\n false,\n );\n\n const shouldRender = !isEmptyObject(fieldState) || watched;\n\n !isBlurEvent &&\n _subjects.values.next({\n name,\n type: event.type,\n values: { ..._formValues },\n });\n\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid) {\n if (props.mode === 'onBlur') {\n if (isBlurEvent) {\n _updateValid();\n }\n } else {\n _updateValid();\n }\n }\n\n return (\n shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) })\n );\n }\n\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n\n _updateIsFieldValueUpdated(fieldValue);\n\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(\n _formState.errors,\n _fields,\n name,\n );\n const errorLookupResult = schemaErrorLookup(\n errors,\n _fields,\n previousErrorLookupResult.name || name,\n );\n\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n\n isValid = isEmptyObject(errors);\n }\n } else {\n _updateIsValidating([name], true);\n error = (\n await validateField(\n field,\n _formValues,\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation,\n )\n )[name];\n _updateIsValidating([name]);\n\n _updateIsFieldValueUpdated(fieldValue);\n\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n } else if (_proxyFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n\n if (isFieldValueUpdated) {\n field._f.deps &&\n trigger(\n field._f.deps as\n | FieldPath\n | FieldPath[],\n );\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n\n const _focusInput = (ref: Ref, key: string) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n\n const trigger: UseFormTrigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(\n isUndefined(name) ? name : fieldNames,\n );\n\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n } else if (name) {\n validationResult = (\n await Promise.all(\n fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(\n field && field._f ? { [fieldName]: field } : field,\n );\n }),\n )\n ).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n } else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(\n _fields,\n _focusInput,\n name ? fieldNames : _names.mount,\n );\n\n return validationResult;\n };\n\n const getValues: UseFormGetValues = (\n fieldNames?:\n | FieldPath\n | ReadonlyArray>,\n ) => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n\n const getFieldState: UseFormGetFieldState = (\n name,\n formState,\n ) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n\n const clearErrors: UseFormClearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) =>\n unset(_formState.errors, inputName),\n );\n\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n\n const setError: UseFormSetError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watch: UseFormWatch = (\n name?:\n | FieldPath\n | ReadonlyArray>\n | WatchObserver,\n defaultValue?: DeepPartial,\n ) =>\n isFunction(name)\n ? _subjects.values.subscribe({\n next: (payload) =>\n name(\n _getWatch(undefined, defaultValue),\n payload as {\n name?: FieldPath;\n type?: EventType;\n value?: unknown;\n },\n ),\n })\n : _getWatch(\n name as InternalFieldName | InternalFieldName[],\n defaultValue,\n true,\n );\n\n const unregister: UseFormUnregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n\n _subjects.values.next({\n values: { ..._formValues },\n });\n\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n\n !options.keepIsValid && _updateValid();\n };\n\n const _updateDisabledField: Control['_updateDisabledField'] = ({\n disabled,\n name,\n field,\n fields,\n value,\n }) => {\n if ((isBoolean(disabled) && _state.mount) || !!disabled) {\n const inputValue = disabled\n ? undefined\n : isUndefined(value)\n ? getFieldValue(field ? field._f : get(fields, name)._f)\n : value;\n set(_formValues, name, inputValue);\n updateTouchAndDirty(name, inputValue, false, false, true);\n }\n };\n\n const register: UseFormRegister = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined =\n isBoolean(options.disabled) || isBoolean(props.disabled);\n\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n\n if (field) {\n _updateDisabledField({\n field,\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : props.disabled,\n name,\n value: options.value,\n });\n } else {\n updateValidAndValue(name, true, options.value);\n }\n\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || props.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength) as number,\n maxLength: getRuleValue(options.maxLength) as number,\n pattern: getRuleValue(options.pattern) as string,\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n\n if (\n radioOrCheckbox\n ? refs.find((option: Ref) => option === fieldRef)\n : fieldRef === field._f.ref\n ) {\n return;\n }\n\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n\n updateValidAndValue(name, false, undefined, fieldRef);\n } else {\n field = get(_fields, name, {});\n\n if (field._f) {\n field._f.mount = false;\n }\n\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n\n const _focusError = () =>\n _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n\n const _disableForm = (disabled?: boolean) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(\n _fields,\n (ref, name) => {\n const currentField: Field = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n },\n 0,\n false,\n );\n }\n };\n\n const handleSubmit: UseFormHandleSubmit =\n (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n } else {\n await executeBuiltInValidation(_fields);\n }\n\n unset(_formState.errors, 'root');\n\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues as TFieldValues, e);\n } catch (error) {\n onValidError = error;\n }\n } else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n\n const resetField: UseFormResetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n } else {\n setValue(\n name,\n options.defaultValue as PathValue<\n TFieldValues,\n FieldPath\n >,\n );\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n\n _subjects.state.next({ ..._formState });\n }\n };\n\n const _reset: UseFormReset = (\n formValues,\n keepStateOptions = {},\n ) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n for (const fieldName of _names.mount) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(\n fieldName as FieldPath,\n get(values, fieldName),\n );\n }\n } else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n\n _fields = {};\n }\n\n _formValues = props.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n\n _subjects.array.next({\n values: { ...values },\n });\n\n _subjects.values.next({\n values: { ...values },\n });\n }\n\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues;\n\n _state.watch = !!props.shouldUnregister;\n\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(\n keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)\n ),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n });\n };\n\n const reset: UseFormReset = (formValues, keepStateOptions) =>\n _reset(\n isFunction(formValues)\n ? formValues(_formValues as TFieldValues)\n : formValues,\n keepStateOptions,\n );\n\n const setFocus: UseFormSetFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && fieldRef.select();\n }\n }\n };\n\n const _updateFormState = (\n updatedFormState: Partial>,\n ) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n\n const _resetDefaultValues = () =>\n isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values: TFieldValues) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n}\n","import React from 'react';\n\nimport { createFormControl } from './logic/createFormControl';\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport deepEqual from './utils/deepEqual';\nimport isFunction from './utils/isFunction';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormProps,\n UseFormReturn,\n} from './types';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n *
\n * \n * \n * {errors.exampleRequired && This field is required}\n * \n *
\n * );\n * }\n * ```\n */\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues extends FieldValues | undefined = undefined,\n>(\n props: UseFormProps = {},\n): UseFormReturn {\n const _formControl = React.useRef<\n UseFormReturn | undefined\n >();\n const _values = React.useRef();\n const [formState, updateFormState] = React.useState>({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n\n const control = _formControl.current.control;\n control._options = props;\n\n useSubscribe({\n subject: control._subjects.state,\n next: (\n value: Partial> & { name?: InternalFieldName },\n ) => {\n if (\n shouldRenderFormState(\n value,\n control._proxyFormState,\n control._updateFormState,\n true,\n )\n ) {\n updateFormState({ ...control._formState });\n }\n },\n });\n\n React.useEffect(\n () => control._disableForm(props.disabled),\n [control, props.disabled],\n );\n\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n } else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n\n React.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n\n control._removeUnmounted();\n });\n\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.values.next({\n values: control._getWatch(),\n });\n }, [props.shouldUnregister, control]);\n\n _formControl.current.formState = getProxyFormState(formState, control);\n\n return _formControl.current;\n}\n"],"names":["isCheckBoxInput","element","type","isDateObject","value","Date","isNullOrUndefined","isObjectType","isObject","Array","isArray","getEventValue","event","target","checked","isNameInFieldArray","names","name","has","substring","search","getNodeParentName","isPlainObject","tempObject","prototypeCopy","constructor","prototype","hasOwnProperty","isWeb","window","HTMLElement","document","cloneObject","data","copy","Set","Blob","FileList","key","compact","filter","Boolean","isUndefined","val","undefined","get","object","path","defaultValue","result","split","reduce","isBoolean","isKey","test","stringToPath","input","replace","set","index","tempPath","length","lastIndex","newValue","objValue","isNaN","EVENTS","BLUR","FOCUS_OUT","CHANGE","VALIDATION_MODE","onBlur","onChange","onSubmit","onTouched","all","INPUT_VALIDATION_RULES","React","getProxyFormState","formState","control","localProxyFormState","isRoot","arguments","defaultValues","_defaultValues","Object","defineProperty","_key","_proxyFormState","isEmptyObject","keys","shouldRenderFormState","formStateData","updateFormState","find","convertToArrayPayload","useSubscribe","props","_props","current","subscription","disabled","subject","subscribe","next","unsubscribe","isString","generateWatchOutput","_names","formValues","isGlobal","watch","add","map","fieldName","watchAll","appendErrors","validateAllFieldCriteria","errors","message","types","getValidationModes","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isWatched","isBlurEvent","some","watchName","startsWith","slice","iterateFieldsByAction","fields","action","fieldsNames","abortEarly","field","_f","currentField","refs","ref","updateFieldArrayRootError","error","fieldArrayErrors","isFileInput","isFunction","isHTMLElement","owner","ownerDocument","defaultView","isMessage","isRadioInput","isRegex","RegExp","defaultResult","isValid","validResult","getCheckboxValue","options","values","option","attributes","defaultReturn","getRadioValue","previous","getValidateError","every","getValueAndMessage","validationData","validateField","async","shouldUseNativeValidation","isFieldArray","required","maxLength","minLength","min","max","pattern","validate","valueAsNumber","mount","inputValue","inputRef","setCustomValidity","reportValidity","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueAsDate","convertTimeToDate","time","toDateString","isTime","isWeek","valueNumber","maxLengthOutput","minLengthOutput","patternValue","match","validateError","validationResult","unset","paths","childObject","updatePath","baseGet","obj","isEmptyArray","createSubject","_observers","observers","observer","push","o","isPrimitive","deepEqual","object1","object2","getTime","keys1","keys2","val1","includes","val2","isMultipleSelect","live","isConnected","objectHasFunction","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","getFieldValueAs","_ref2","setValueAs","NaN","getFieldValue","files","selectedOptions","_ref3","getResolverOptions","_fields","criteriaMode","getRuleValue","rule","source","ASYNC_FUNCTION","hasPromiseValidation","fieldReference","validateFunction","hasValidation","schemaErrorLookup","join","foundError","pop","skipValidation","isTouched","isSubmitted","reValidateMode","unsetEmptyArray","defaultOptions","shouldFocusError","createFormControl","delayErrorCallback","_options","_formState","submitCount","isDirty","isLoading","isValidating","isSubmitting","isSubmitSuccessful","touchedFields","dirtyFields","validatingFields","_formValues","shouldUnregister","_state","unMount","array","timer","_subjects","state","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","_updateValid","shouldUpdateValid","resolver","_executeSchema","executeBuiltInValidation","_updateIsValidating","from","forEach","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","output","disabledField","_getDirty","isCurrentFieldPristine","isPreviousFieldTouched","shouldRenderByError","fieldState","previousFieldError","callback","delayError","updateErrors","wait","clearTimeout","setTimeout","updatedFormState","context","shouldOnlyCheckValid","valid","isFieldArrayRoot","isPromiseFunction","fieldError","getValues","_getWatch","optionRef","selected","checkboxRef","radioRef","shouldTouch","shouldValidate","trigger","setValues","fieldKey","setValue","cloneValue","isFieldValueUpdated","_updateIsFieldValueUpdated","Number","shouldSkipValidation","deps","watched","previousErrorLookupResult","errorLookupResult","_focusInput","focus","fieldNames","executeSchemaAndUpdateState","Promise","shouldFocus","getFieldState","invalid","setError","currentError","currentRef","restOfErrorTree","unregister","delete","keepValue","keepError","keepDirty","keepTouched","keepIsValidating","keepDefaultValue","keepIsValid","_updateDisabledField","_ref4","register","disabledIsDefined","progressive","fieldRef","querySelectorAll","radioOrCheckbox","_focusError","handleSubmit","onValid","onInvalid","onValidError","e","preventDefault","persist","fieldValues","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","keepDefaultValues","keepValues","keepDirtyValues","form","closest","reset","keepSubmitCount","keepIsSubmitted","keepErrors","keepIsSubmitSuccessful","_removeUnmounted","_updateFieldArray","method","args","shouldSetValues","shouldUpdateFieldsAndState","argA","argB","_getFieldArray","_resetDefaultValues","then","resetOptions","_updateFormState","_disableForm","_setErrors","payload","resetField","clearErrors","inputName","setFocus","shouldSelect","select","useForm","_formControl","_values"],"sourceRoot":""}