Files
GNX-mailEnterprise/frontend/node_modules/.cache/babel-loader/253beee90c662657ef5329758f79504ca92bfb0085617e491ad2f99c378bc7d8.json
Iliyan Angelov c67067a2a4 Mail
2025-09-14 23:24:25 +03:00

1 line
320 KiB
JSON

{"ast":null,"code":"import React from 'react';\nvar isCheckBoxInput = element => element.type === 'checkbox';\nvar isDateObject = value => value instanceof Date;\nvar isNullOrUndefined = value => value == null;\nconst isObjectType = value => typeof value === 'object';\nvar isObject = value => !isNullOrUndefined(value) && !Array.isArray(value) && isObjectType(value) && !isDateObject(value);\nvar getEventValue = event => isObject(event) && event.target ? isCheckBoxInput(event.target) ? event.target.checked : event.target.value : event;\nvar getNodeParentName = name => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\nvar isPlainObject = tempObject => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf');\n};\nvar isWeb = typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined' && typeof document !== 'undefined';\nfunction cloneObject(data) {\n let copy;\n const isArray = Array.isArray(data);\n const isFileListInstance = typeof FileList !== 'undefined' ? data instanceof FileList : false;\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (!(isWeb && (data instanceof Blob || isFileListInstance)) && (isArray || isObject(data))) {\n copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\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 return copy;\n}\nvar isKey = value => /^\\w*$/.test(value);\nvar isUndefined = val => val === undefined;\nvar compact = value => Array.isArray(value) ? value.filter(Boolean) : [];\nvar stringToPath = input => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object ? isUndefined(object[path]) ? defaultValue : object[path] : result;\n};\nvar isBoolean = value => typeof value === 'boolean';\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue = isObject(objValue) || Array.isArray(objValue) ? objValue : !isNaN(+tempPath[index + 1]) ? [] : {};\n }\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n};\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change'\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all'\n};\nconst 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};\nconst HookFormContext = React.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\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 * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\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 * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = props => {\n const {\n children,\n ...data\n } = props;\n return React.createElement(HookFormContext.Provider, {\n value: data\n }, children);\n};\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n }\n });\n }\n return result;\n};\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const methods = useFormContext();\n const {\n control = methods.control,\n disabled,\n name,\n exact\n } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false\n });\n useIsomorphicLayoutEffect(() => control._subscribe({\n name,\n formState: _localProxyFormState.current,\n exact,\n callback: formState => {\n !disabled && updateFormState({\n ...control._formState,\n ...formState\n });\n }\n }), [name, disabled, exact]);\n React.useEffect(() => {\n _localProxyFormState.current.isValid && control._setValid(true);\n }, [control]);\n return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\nvar isString = value => typeof value === 'string';\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map(fieldName => (isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\nvar isPrimitive = value => isNullOrUndefined(value) || !isObjectType(value);\nfunction deepEqual(object1, object2, _internal_visited = new WeakSet()) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n if (_internal_visited.has(object1) || _internal_visited.has(object2)) {\n return true;\n }\n _internal_visited.add(object1);\n _internal_visited.add(object2);\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if (isDateObject(val1) && isDateObject(val2) || isObject(val1) && isObject(val2) || Array.isArray(val1) && Array.isArray(val2) ? !deepEqual(val1, val2, _internal_visited) : val1 !== val2) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n defaultValue,\n disabled,\n exact,\n compute\n } = props || {};\n const _defaultValue = React.useRef(defaultValue);\n const _compute = React.useRef(compute);\n const _computeFormValues = React.useRef(undefined);\n _compute.current = compute;\n const defaultValueMemo = React.useMemo(() => control._getWatch(name, _defaultValue.current), [control, name]);\n const [value, updateValue] = React.useState(_compute.current ? _compute.current(defaultValueMemo) : defaultValueMemo);\n useIsomorphicLayoutEffect(() => control._subscribe({\n name,\n formState: {\n values: true\n },\n exact,\n callback: formState => {\n if (!disabled) {\n const formValues = generateWatchOutput(name, control._names, formState.values || control._formValues, false, _defaultValue.current);\n if (_compute.current) {\n const computedFormValues = _compute.current(formValues);\n if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n updateValue(computedFormValues);\n _computeFormValues.current = computedFormValues;\n }\n } else {\n updateValue(formValues);\n }\n }\n }\n }), [control, disabled, name, exact]);\n React.useEffect(() => control._removeUnmounted());\n return value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const methods = useFormContext();\n const {\n name,\n disabled,\n control = methods.control,\n shouldUnregister,\n defaultValue\n } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const defaultValueMemo = React.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);\n const value = useWatch({\n control,\n name,\n defaultValue: defaultValueMemo,\n exact: true\n });\n const formState = useFormState({\n control,\n name,\n exact: true\n });\n const _props = React.useRef(props);\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? {\n disabled: props.disabled\n } : {})\n }));\n _props.current = props;\n const fieldState = React.useMemo(() => Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name)\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name)\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name)\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name)\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name)\n }\n }), [formState, name]);\n const onChange = React.useCallback(event => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name\n },\n type: EVENTS.CHANGE\n }), [name]);\n const onBlur = React.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name\n },\n type: EVENTS.BLUR\n }), [name, control._formValues]);\n const ref = React.useCallback(elm => {\n const field = get(control._fields, name);\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus && elm.focus(),\n select: () => elm.select && elm.select(),\n setCustomValidity: message => elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity()\n };\n }\n }, [control._fields, name]);\n const field = React.useMemo(() => ({\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled ? {\n disabled: formState.disabled || disabled\n } : {}),\n onChange,\n onBlur,\n ref\n }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n control.register(name, {\n ..._props.current.rules,\n ...(isBoolean(_props.current.disabled) ? {\n disabled: _props.current.disabled\n } : {})\n });\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n !isArrayField && control.register(name);\n return () => {\n (isArrayField ? _shouldUnregisterField && !control._state.action : _shouldUnregisterField) ? control.unregister(name) : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n control._setDisabledField({\n disabled,\n name\n });\n }, [disabled, name, control]);\n return React.useMemo(() => ({\n field,\n formState,\n fieldState\n }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = props => props.render(useController(props));\nconst flatten = obj => {\n const output = {};\n for (const key of Object.keys(obj)) {\n if (isObjectType(obj[key]) && obj[key] !== null) {\n const nested = flatten(obj[key]);\n for (const nestedKey of Object.keys(nested)) {\n output[`${key}.${nestedKey}`] = nested[nestedKey];\n }\n } else {\n output[key] = obj[key];\n }\n }\n return output;\n};\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const {\n control = methods.control,\n onSubmit,\n children,\n action,\n method = POST_REQUEST,\n headers,\n encType,\n onError,\n render,\n onSuccess,\n validateStatus,\n ...rest\n } = props;\n const submit = async event => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async data => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n } catch (_a) {}\n const flattenFormValues = flatten(control._formValues);\n for (const key in flattenFormValues) {\n formData.append(key, flattenFormValues[key]);\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [headers && headers['Content-Type'], encType].some(value => value && value.includes('json'));\n const response = await fetch(String(action), {\n method,\n headers: {\n ...headers,\n ...(encType && encType !== 'multipart/form-data' ? {\n 'Content-Type': encType\n } : {})\n },\n body: shouldStringifySubmissionData ? formDataJson : formData\n });\n if (response && (validateStatus ? !validateStatus(response.status) : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({\n response\n });\n type = String(response.status);\n } else {\n onSuccess && onSuccess({\n response\n });\n }\n } catch (error) {\n hasError = true;\n onError && onError({\n error\n });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false\n });\n props.control.setError('root.server', {\n type\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? React.createElement(React.Fragment, null, render({\n submit\n })) : React.createElement(\"form\", {\n noValidate: mounted,\n action: action,\n method: method,\n encType: encType,\n onSubmit: submit,\n ...rest\n }, children);\n}\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true\n }\n} : {};\nvar convertToArrayPayload = value => Array.isArray(value) ? value : [value];\nvar createSubject = () => {\n let _observers = [];\n const next = value => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = observer => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter(o => o !== observer);\n }\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe\n };\n};\nvar isEmptyObject = value => isObject(value) && !Object.keys(value).length;\nvar isFileInput = element => element.type === 'file';\nvar isFunction = value => typeof value === 'function';\nvar isHTMLElement = value => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return value instanceof (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement);\n};\nvar isMultipleSelect = element => element.type === `select-multiple`;\nvar isRadioInput = element => element.type === 'radio';\nvar isRadioOrCheckbox = ref => isRadioInput(ref) || isCheckBoxInput(ref);\nvar live = ref => isHTMLElement(ref) && ref.isConnected;\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path) ? path : isKey(path) ? [path] : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 && (isObject(childObject) && isEmptyObject(childObject) || Array.isArray(childObject) && isEmptyArray(childObject))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\nvar objectHasFunction = data => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\nfunction markFieldsDirty(data, fields = {}) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) || isObject(data[key]) && !objectHasFunction(data[key])) {\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 return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) || isObject(data[key]) && !objectHasFunction(data[key])) {\n if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key]) ? markFieldsDirty(data[key], []) : {\n ...markFieldsDirty(data[key])\n };\n } else {\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\nconst defaultResult = {\n value: false,\n isValid: false\n};\nconst validResult = {\n value: true,\n isValid: true\n};\nvar getCheckboxValue = options => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options.filter(option => option && option.checked && !option.disabled).map(option => option.value);\n return {\n value: values,\n 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) ? isUndefined(options[0].value) || options[0].value === '' ? validResult : {\n value: options[0].value,\n isValid: true\n } : validResult : defaultResult;\n }\n return defaultResult;\n};\nvar getFieldValueAs = (value, {\n valueAsNumber,\n valueAsDate,\n setValueAs\n}) => isUndefined(value) ? value : valueAsNumber ? value === '' ? NaN : value ? +value : value : valueAsDate && isString(value) ? new Date(value) : setValueAs ? setValueAs(value) : value;\nconst defaultReturn = {\n isValid: false,\n value: null\n};\nvar getRadioValue = options => Array.isArray(options) ? options.reduce((previous, option) => option && option.checked && !option.disabled ? {\n isValid: true,\n value: option.value\n} : previous, defaultReturn) : defaultReturn;\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({\n value\n }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation\n };\n};\nvar isRegex = value => value instanceof RegExp;\nvar getRuleValue = rule => isUndefined(rule) ? rule : isRegex(rule) ? rule.source : isObject(rule) ? isRegex(rule.value) ? rule.value.source : rule.value : rule;\nvar getValidationModes = mode => ({\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});\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = fieldReference => !!fieldReference && !!fieldReference.validate && !!(isFunction(fieldReference.validate) && fieldReference.validate.constructor.name === ASYNC_FUNCTION || isObject(fieldReference.validate) && Object.values(fieldReference.validate).find(validateFunction => validateFunction.constructor.name === ASYNC_FUNCTION));\nvar hasValidation = options => options.mount && (options.required || options.min || options.max || options.maxLength || options.minLength || options.pattern || options.validate);\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent && (_names.watchAll || _names.watch.has(name) || [..._names.watch].some(watchName => name.startsWith(watchName) && /^\\.\\w+/.test(name.slice(watchName.length))));\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const {\n _f,\n ...currentField\n } = field;\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};\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return {\n name\n };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError\n };\n }\n if (foundError && foundError.root && foundError.root.type) {\n return {\n name: `${fieldName}.root`,\n error: foundError.root\n };\n }\n names.pop();\n }\n return {\n name\n };\n}\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const {\n name,\n ...formState\n } = formStateData;\n return isEmptyObject(formState) || Object.keys(formState).length >= Object.keys(_proxyFormState).length || Object.keys(formState).find(key => _proxyFormState[key] === (!isRoot || VALIDATION_MODE.all));\n};\nvar shouldSubscribeByName = (name, signalName, exact) => !name || !signalName || name === signalName || convertToArrayPayload(name).some(currentName => currentName && (exact ? currentName === signalName : currentName.startsWith(signalName) || signalName.startsWith(currentName)));\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\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};\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\nvar isMessage = value => isString(value);\nfunction getValidateError(result, ref, type = 'validate') {\n if (isMessage(result) || Array.isArray(result) && result.every(isMessage) || isBoolean(result) && !result) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref\n };\n }\n}\nvar getValueAndMessage = validationData => isObject(validationData) && !isRegex(validationData) ? validationData : {\n value: validationData,\n message: ''\n};\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\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 } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = message => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = (valueAsNumber || isFileInput(ref)) && isUndefined(ref.value) && isUndefined(inputValue) || isHTMLElement(ref) && ref.value === '' || inputValue === '' || Array.isArray(inputValue) && !inputValue.length;\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\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 if (isFieldArray ? !Array.isArray(inputValue) || !inputValue.length : required && (!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue)) || isBoolean(inputValue) && !inputValue || isCheckBox && !getCheckboxValue(refs).isValid || isRadio && !getRadioValue(refs).isValid)) {\n const {\n value,\n message\n } = isMessage(required) ? {\n value: !!required,\n message: required\n } : getValueAndMessage(required);\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 if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber || (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 = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = time => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value) : isWeek ? inputValue > maxOutput.value : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value) : isWeek ? inputValue < minOutput.value : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) && !isEmpty && (isString(inputValue) || isFieldArray && Array.isArray(inputValue))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) && inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) && inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const {\n value: patternValue,\n message\n } = getValueAndMessage(pattern);\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 if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message)\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message)\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\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 setCustomValidity(true);\n return error;\n};\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isReady: 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 = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values) ? cloneObject(_options.defaultValues || _options.values) || {} : {};\n let _formValues = _options.shouldUnregister ? {} : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false\n };\n let _names = {\n mount: new Set(),\n disabled: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set()\n };\n let delayErrorCallback;\n let timer = 0;\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false\n };\n let _proxySubscribeFormState = {\n ..._proxyFormState\n };\n const _subjects = {\n array: createSubject(),\n state: createSubject()\n };\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = callback => wait => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _setValid = async shouldUpdateValid => {\n if (!_options.disabled && (_proxyFormState.isValid || _proxySubscribeFormState.isValid || shouldUpdateValid)) {\n const isValid = _options.resolver ? isEmptyObject((await _runSchema()).errors) : await executeBuiltInValidation(_fields, true);\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (!_options.disabled && (_proxyFormState.isValidating || _proxyFormState.validatingFields || _proxySubscribeFormState.isValidating || _proxySubscribeFormState.validatingFields)) {\n (names || Array.from(_names.mount)).forEach(name => {\n if (name) {\n isValidating ? set(_formState.validatingFields, name, isValidating) : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields)\n });\n }\n };\n const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method && !_options.disabled) {\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 if (shouldUpdateFieldsAndState && Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if ((_proxyFormState.touchedFields || _proxySubscribeFormState.touchedFields) && shouldUpdateFieldsAndState && Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\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 const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors\n });\n };\n const _setErrors = errors => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) || ref && ref.defaultChecked || shouldSkipSetValueAs ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f)) : setFieldValue(name, defaultValue);\n _state.mount && _setValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name\n };\n if (!_options.disabled) {\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!get(_formState.dirtyFields, name);\n isCurrentFieldPristine ? unset(_formState.dirtyFields, name) : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField = shouldUpdateField || (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) && isPreviousDirty !== !isCurrentFieldPristine;\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField = shouldUpdateField || (_proxyFormState.touchedFields || _proxySubscribeFormState.touchedFields) && isPreviousFieldTouched !== isBlurEvent;\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = (_proxyFormState.isValid || _proxySubscribeFormState.isValid) && isBoolean(isValid) && _formState.isValid !== isValid;\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.delayError);\n } else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error ? set(_formState.errors, name, error) : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) || !isEmptyObject(fieldState) || shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? {\n isValid\n } : {}),\n errors: _formState.errors,\n name\n };\n _formState = {\n ..._formState,\n ...updatedFormState\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _runSchema = async name => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n _updateIsValidating(name);\n return result;\n };\n const executeSchemaAndUpdateState = async names => {\n const {\n errors\n } = await _runSchema(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error ? set(_formState.errors, name, error) : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n valid: true\n }) => {\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const {\n _f,\n ...fieldValue\n } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name], true);\n }\n const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n !shouldOnlyCheckValid && (get(fieldError, _f.name) ? isFieldArrayRoot ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name) : set(_formState.errors, _f.name, fieldError[_f.name]) : unset(_formState.errors, _f.name));\n }\n !isEmptyObject(fieldValue) && (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field && (field._f.refs ? field._f.refs.every(ref => !live(ref)) : !live(field._f.ref)) && unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => !_options.disabled && (name && data && set(_formValues, name, data), !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount ? _formValues : isUndefined(defaultValue) ? _defaultValues : isString(names) ? {\n [names]: defaultValue\n } : defaultValue)\n }, isGlobal, defaultValue);\n const _getFieldArray = name => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled && set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue = isHTMLElement(fieldReference.ref) && isNullOrUndefined(value) ? '' : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach(optionRef => optionRef.selected = fieldValue.includes(optionRef.value));\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.forEach(checkboxRef => {\n if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n if (Array.isArray(fieldValue)) {\n checkboxRef.checked = !!fieldValue.find(data => data === checkboxRef.value);\n } else {\n checkboxRef.checked = fieldValue === checkboxRef.value || !!fieldValue;\n }\n }\n });\n } else {\n fieldReference.refs.forEach(radioRef => radioRef.checked = radioRef.value === fieldValue);\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n } else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.state.next({\n name,\n values: cloneObject(_formValues)\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) && updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n if (!value.hasOwnProperty(fieldKey)) {\n return;\n }\n const fieldValue = value[fieldKey];\n const fieldName = name + '.' + fieldKey;\n const field = get(_fields, fieldName);\n (_names.array.has(name) || isObject(fieldValue) || field && !field._f) && !isDateObject(fieldValue) ? setValues(fieldName, fieldValue, options) : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: cloneObject(_formValues)\n });\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields || _proxySubscribeFormState.isDirty || _proxySubscribeFormState.dirtyFields) && options.shouldDirty) {\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) ? setValues(name, cloneValue, options) : setFieldValue(name, cloneValue, options);\n }\n isWatched(name, _names) && _subjects.state.next({\n ..._formState,\n name\n });\n _subjects.state.next({\n name: _state.mount ? name : undefined,\n values: cloneObject(_formValues)\n });\n };\n const onChange = async event => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const _updateIsFieldValueUpdated = fieldValue => {\n isFieldValueUpdated = Number.isNaN(fieldValue) || isDateObject(fieldValue) && isNaN(fieldValue.getTime()) || deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type ? getFieldValue(field._f) : getEventValue(event);\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = !hasValidation(field._f) && !_options.resolver && !get(_formState.errors, name) && !field._f.deps || skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n if (!target || !target.readOnly) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent && _subjects.state.next({\n name,\n type: event.type,\n values: cloneObject(_formValues)\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n if (_options.mode === 'onBlur') {\n if (isBlurEvent) {\n _setValid();\n }\n } else if (!isBlurEvent) {\n _setValid();\n }\n }\n return shouldRender && _subjects.state.next({\n name,\n ...(watched ? {} : fieldState)\n });\n }\n !isBlurEvent && watched && _subjects.state.next({\n ..._formState\n });\n if (_options.resolver) {\n const {\n errors\n } = await _runSchema([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n } else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n } else if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps && trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name ? !fieldNames.some(name => get(errors, name)) : isValid;\n } else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async fieldName => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? {\n [fieldName]: field\n } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _setValid();\n } else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...(!isString(name) || (_proxyFormState.isValid || _proxySubscribeFormState.isValid) && isValid !== _formState.isValid ? {} : {\n name\n }),\n ...(_options.resolver || !name ? {\n isValid\n } : {}),\n errors: _formState.errors\n });\n options.shouldFocus && !validationResult && iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = fieldNames => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues)\n };\n return isUndefined(fieldNames) ? values : isString(fieldNames) ? get(values, fieldNames) : fieldNames.map(name => get(values, name));\n };\n const getFieldState = (name, formState) => ({\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 const clearErrors = name => {\n name && convertToArrayPayload(name).forEach(inputName => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {}\n });\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, {\n _f: {}\n })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const {\n ref: currentRef,\n message,\n type,\n ...restOfErrorTree\n } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name) ? _subjects.state.subscribe({\n next: payload => 'values' in payload && name(_getWatch(undefined, defaultValue), payload)\n }) : _getWatch(name, defaultValue, true);\n const _subscribe = props => _subjects.state.subscribe({\n next: formState => {\n if (shouldSubscribeByName(props.name, formState.name, props.exact) && shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {\n props.callback({\n values: {\n ..._formValues\n },\n ..._formState,\n ...formState,\n defaultValues: _defaultValues\n });\n }\n }\n }).unsubscribe;\n const subscribe = props => {\n _state.mount = true;\n _proxySubscribeFormState = {\n ..._proxySubscribeFormState,\n ...props.formState\n };\n return _subscribe({\n ...props,\n formState: _proxySubscribeFormState\n });\n };\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\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 && unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister && !options.keepDefaultValue && unset(_defaultValues, fieldName);\n }\n _subjects.state.next({\n values: cloneObject(_formValues)\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : {\n isDirty: _getDirty()\n })\n });\n !options.keepIsValid && _setValid();\n };\n const _setDisabledField = ({\n disabled,\n name\n }) => {\n if (isBoolean(disabled) && _state.mount || !!disabled || _names.disabled.has(name)) {\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : {\n ref: {\n name\n }\n }),\n name,\n mount: true,\n ...options\n }\n });\n _names.mount.add(name);\n if (field) {\n _setDisabledField({\n disabled: isBoolean(options.disabled) ? options.disabled : _options.disabled,\n name\n });\n } else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined ? {\n disabled: options.disabled || _options.disabled\n } : {}),\n ...(_options.progressive ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern)\n } : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: ref => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value) ? ref.querySelectorAll ? ref.querySelectorAll('input,select,textarea')[0] || ref : ref : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox ? refs.find(option => option === fieldRef) : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox ? {\n refs: [...refs.filter(live), fieldRef, ...(Array.isArray(get(_defaultValues, name)) ? [{}] : [])],\n ref: {\n type: fieldRef.type,\n name\n }\n } : {\n ref: fieldRef\n })\n }\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n } else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) && !(isNameInFieldArray(_names.array, name) && _state.action) && _names.unMount.add(name);\n }\n }\n };\n };\n const _focusError = () => _options.shouldFocusError && iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = disabled => {\n if (isBoolean(disabled)) {\n _subjects.state.next({\n disabled\n });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach(inputRef => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (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 _subjects.state.next({\n isSubmitting: true\n });\n if (_options.resolver) {\n const {\n errors,\n values\n } = await _runSchema();\n _formState.errors = errors;\n fieldValues = cloneObject(values);\n } else {\n await executeBuiltInValidation(_fields);\n }\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n unset(fieldValues, name);\n }\n }\n unset(_formState.errors, 'root');\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {}\n });\n try {\n await onValid(fieldValues, e);\n } catch (error) {\n onValidError = error;\n }\n } else {\n if (onInvalid) {\n await onInvalid({\n ..._formState.errors\n }, e);\n }\n _focusError();\n setTimeout(_focusError);\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 const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n } else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue ? _getDirty(name, cloneObject(get(_defaultValues, name))) : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _setValid();\n }\n _subjects.state.next({\n ..._formState\n });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = new Set([..._names.mount, ...Object.keys(getDirtyFields(_defaultValues, _formValues))]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n get(_formState.dirtyFields, fieldName) ? set(values, fieldName, get(_formValues, fieldName)) : setValue(fieldName, get(values, fieldName));\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) ? field._f.refs[0] : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n if (keepStateOptions.keepFieldsRef) {\n for (const fieldName of _names.mount) {\n setValue(fieldName, get(values, fieldName));\n }\n } else {\n _fields = {};\n }\n }\n _formValues = _options.shouldUnregister ? keepStateOptions.keepDefaultValues ? cloneObject(_defaultValues) : {} : cloneObject(values);\n _subjects.array.next({\n values: {\n ...values\n }\n });\n _subjects.state.next({\n values: {\n ...values\n }\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n disabled: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: ''\n };\n _state.mount = !_proxyFormState.isValid || !!keepStateOptions.keepIsValid || !!keepStateOptions.keepDirtyValues;\n _state.watch = !!_options.shouldUnregister;\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount ? _formState.submitCount : 0,\n isDirty: isEmptyResetValues ? false : keepStateOptions.keepDirty ? _formState.isDirty : !!(keepStateOptions.keepDefaultValues && !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted ? _formState.isSubmitted : false,\n dirtyFields: isEmptyResetValues ? {} : keepStateOptions.keepDirtyValues ? keepStateOptions.keepDefaultValues && _formValues ? getDirtyFields(_defaultValues, _formValues) : _formState.dirtyFields : keepStateOptions.keepDefaultValues && formValues ? getDirtyFields(_defaultValues, formValues) : keepStateOptions.keepDirty ? _formState.dirtyFields : {},\n touchedFields: keepStateOptions.keepTouched ? _formState.touchedFields : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful ? _formState.isSubmitSuccessful : false,\n isSubmitting: false,\n defaultValues: _defaultValues\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues) ? formValues(_formValues) : formValues, keepStateOptions);\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs ? fieldReference.refs[0] : fieldReference.ref;\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && isFunction(fieldRef.select) && fieldRef.select();\n }\n }\n };\n const _setFormState = updatedFormState => {\n _formState = {\n ..._formState,\n ...updatedFormState\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) && _options.defaultValues().then(values => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false\n });\n });\n const methods = {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _subscribe,\n _runSchema,\n _focusError,\n _getWatch,\n _getDirty,\n _setValid,\n _setFieldArray,\n _setDisabledField,\n _setErrors,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _removeUnmounted,\n _disableForm,\n _subjects,\n _proxyFormState,\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 get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value\n };\n }\n },\n subscribe,\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 return {\n ...methods,\n formControl: methods\n };\n}\nvar generateId = () => {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n};\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus) ? options.focusName || `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.` : '';\nvar appendAt = (data, value) => [...data, ...convertToArrayPayload(value)];\nvar fillEmptyArray = value => Array.isArray(value) ? value.map(() => undefined) : undefined;\nfunction insert(data, index, value) {\n return [...data.slice(0, index), ...convertToArrayPayload(value), ...data.slice(index)];\n}\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\nvar prependAt = (data, value) => [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index) ? [] : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n keyName = 'id',\n shouldUnregister,\n rules\n } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _fieldIds = React.useRef(fields);\n const _actioned = React.useRef(false);\n _fieldIds.current = fields;\n control._names.array.add(name);\n React.useMemo(() => rules && control.register(name, rules), [control, rules, name]);\n useIsomorphicLayoutEffect(() => control._subjects.array.subscribe({\n next: ({\n values,\n name: fieldArrayName\n }) => {\n if (fieldArrayName === name || !fieldArrayName) {\n const fieldValues = get(values, name);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n }\n }).unsubscribe, [control, name]);\n const updateValues = React.useCallback(updatedFieldArrayValues => {\n _actioned.current = true;\n control._setFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value)\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value)\n });\n };\n const remove = index => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n !Array.isArray(get(control._fields, name)) && set(control._fields, name, undefined);\n control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value)\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue\n }, true, false);\n };\n const replace = value => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, [...updatedFieldArrayValues], data => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) && control._subjects.state.next({\n ...control._formState\n });\n if (_actioned.current && (!getValidationModes(control._options.mode).isOnSubmit || control._formState.isSubmitted) && !getValidationModes(control._options.reValidateMode).isOnSubmit) {\n if (control._options.resolver) {\n control._runSchema([name]).then(result => {\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError ? !error && existingError.type || error && (existingError.type !== error.type || existingError.message !== error.message) : error && error.type) {\n error ? set(control._formState.errors, name, error) : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors\n });\n }\n });\n } else {\n const field = get(control._fields, name);\n if (field && field._f && !(getValidationModes(control._options.reValidateMode).isOnSubmit && getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then(error => !isEmptyObject(error) && control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name)\n }));\n }\n }\n }\n control._subjects.state.next({\n name,\n values: cloneObject(control._formValues)\n });\n control._names.focus && iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus && key.startsWith(control._names.focus) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._setValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._setFieldArray(name);\n return () => {\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n control._options.shouldUnregister || shouldUnregister ? control.unregister(name) : updateMounted(name, false);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId()\n })), [fields, keyName])\n };\n}\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 * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = React.useRef(undefined);\n const _values = React.useRef(undefined);\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 isReady: false,\n defaultValues: isFunction(props.defaultValues) ? undefined : props.defaultValues\n });\n if (!_formControl.current) {\n if (props.formControl) {\n _formControl.current = {\n ...props.formControl,\n formState\n };\n if (props.defaultValues && !isFunction(props.defaultValues)) {\n props.formControl.reset(props.defaultValues, props.resetOptions);\n }\n } else {\n const {\n formControl,\n ...rest\n } = createFormControl(props);\n _formControl.current = {\n ...rest,\n formState\n };\n }\n }\n const control = _formControl.current.control;\n control._options = props;\n useIsomorphicLayoutEffect(() => {\n const sub = control._subscribe({\n formState: control._proxyFormState,\n callback: () => updateFormState({\n ...control._formState\n }),\n reRenderRoot: true\n });\n updateFormState(data => ({\n ...data,\n isReady: true\n }));\n control._formState.isReady = true;\n return sub;\n }, [control]);\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (props.mode) {\n control._options.mode = props.mode;\n }\n if (props.reValidateMode) {\n control._options.reValidateMode = props.reValidateMode;\n }\n }, [control, props.mode, props.reValidateMode]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n control._focusError();\n }\n }, [control, props.errors]);\n React.useEffect(() => {\n props.shouldUnregister && control._subjects.state.next({\n values: control._getWatch()\n });\n }, [control, props.shouldUnregister]);\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 React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, {\n keepFieldsRef: true,\n ...control._options.resetOptions\n });\n _values.current = props.values;\n updateFormState(state => ({\n ...state\n }));\n } else {\n control._resetDefaultValues();\n }\n }, [control, props.values]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._setValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({\n ...control._formState\n });\n }\n control._removeUnmounted();\n });\n _formControl.current.formState = getProxyFormState(formState, control);\n return _formControl.current;\n}\nexport { Controller, Form, FormProvider, appendErrors, createFormControl, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };","map":{"version":3,"names":["isCheckBoxInput","element","type","isDateObject","value","Date","isNullOrUndefined","isObjectType","isObject","Array","isArray","getEventValue","event","target","checked","getNodeParentName","name","substring","search","isNameInFieldArray","names","has","isPlainObject","tempObject","prototypeCopy","constructor","prototype","hasOwnProperty","isWeb","window","HTMLElement","document","cloneObject","data","copy","isFileListInstance","FileList","Blob","Object","create","getPrototypeOf","key","isKey","test","isUndefined","val","undefined","compact","filter","Boolean","stringToPath","input","replace","split","get","object","path","defaultValue","result","reduce","isBoolean","set","index","tempPath","length","lastIndex","newValue","objValue","isNaN","EVENTS","BLUR","FOCUS_OUT","CHANGE","VALIDATION_MODE","onBlur","onChange","onSubmit","onTouched","all","INPUT_VALIDATION_RULES","max","min","maxLength","minLength","pattern","required","validate","HookFormContext","React","createContext","displayName","useFormContext","useContext","FormProvider","props","children","createElement","Provider","getProxyFormState","formState","control","localProxyFormState","isRoot","defaultValues","_defaultValues","defineProperty","_key","_proxyFormState","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","useFormState","methods","disabled","exact","updateFormState","useState","_formState","_localProxyFormState","useRef","isDirty","isLoading","dirtyFields","touchedFields","validatingFields","isValidating","isValid","errors","_subscribe","current","callback","_setValid","useMemo","isString","generateWatchOutput","_names","formValues","isGlobal","watch","add","map","fieldName","watchAll","isPrimitive","deepEqual","object1","object2","_internal_visited","WeakSet","getTime","keys1","keys","keys2","val1","includes","val2","useWatch","compute","_defaultValue","_compute","_computeFormValues","defaultValueMemo","_getWatch","updateValue","values","_formValues","computedFormValues","_removeUnmounted","useController","shouldUnregister","isArrayField","array","_props","_registerProps","register","rules","fieldState","defineProperties","invalid","enumerable","isTouched","error","useCallback","ref","elm","field","_fields","_f","focus","select","setCustomValidity","message","reportValidity","_shouldUnregisterField","_options","updateMounted","mount","_state","action","unregister","_setDisabledField","Controller","render","flatten","obj","output","nested","nestedKey","POST_REQUEST","Form","mounted","setMounted","method","headers","encType","onError","onSuccess","validateStatus","rest","submit","hasError","handleSubmit","formData","FormData","formDataJson","JSON","stringify","_a","flattenFormValues","append","shouldStringifySubmissionData","some","response","fetch","String","body","status","_subjects","state","next","isSubmitSuccessful","setError","Fragment","noValidate","appendErrors","validateAllFieldCriteria","types","convertToArrayPayload","createSubject","_observers","observer","subscribe","push","unsubscribe","o","observers","isEmptyObject","isFileInput","isFunction","isHTMLElement","owner","ownerDocument","defaultView","isMultipleSelect","isRadioInput","isRadioOrCheckbox","live","isConnected","baseGet","updatePath","slice","isEmptyArray","unset","paths","childObject","objectHasFunction","markFieldsDirty","fields","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","defaultResult","validResult","getCheckboxValue","options","option","attributes","getFieldValueAs","valueAsNumber","valueAsDate","setValueAs","NaN","defaultReturn","getRadioValue","previous","getFieldValue","files","refs","selectedOptions","getResolverOptions","fieldsNames","criteriaMode","shouldUseNativeValidation","isRegex","RegExp","getRuleValue","rule","source","getValidationModes","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","ASYNC_FUNCTION","hasPromiseValidation","fieldReference","find","validateFunction","hasValidation","isWatched","isBlurEvent","watchName","startsWith","iterateFieldsByAction","abortEarly","currentField","schemaErrorLookup","join","foundError","root","pop","shouldRenderFormState","formStateData","shouldSubscribeByName","signalName","currentName","skipValidation","isSubmitted","reValidateMode","unsetEmptyArray","updateFieldArrayRootError","fieldArrayErrors","isMessage","getValidateError","every","getValueAndMessage","validationData","validateField","disabledFieldNames","isFieldArray","inputValue","inputRef","isRadio","isCheckBox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueNumber","valueDate","convertTimeToDate","time","toDateString","isTime","isWeek","maxLengthOutput","minLengthOutput","patternValue","match","validateError","validationResult","defaultOptions","shouldFocusError","createFormControl","submitCount","isReady","isSubmitting","Set","unMount","delayErrorCallback","timer","_proxySubscribeFormState","shouldDisplayAllAssociatedErrors","debounce","wait","clearTimeout","setTimeout","shouldUpdateValid","resolver","_runSchema","executeBuiltInValidation","_updateIsValidating","from","forEach","_setFieldArray","args","shouldSetValues","shouldUpdateFieldsAndState","fieldValues","argA","argB","_getDirty","updateErrors","_setErrors","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","isCurrentFieldPristine","isPreviousFieldTouched","shouldRenderByError","previousFieldError","delayError","updatedFormState","context","executeSchemaAndUpdateState","shouldOnlyCheckValid","valid","isFieldArrayRoot","isPromiseFunction","fieldError","getValues","_getFieldArray","optionRef","selected","checkboxRef","radioRef","shouldTouch","shouldValidate","trigger","setValues","fieldKey","setValue","cloneValue","isFieldValueUpdated","_updateIsFieldValueUpdated","Number","validationModeBeforeSubmit","validationModeAfterSubmit","shouldSkipValidation","deps","watched","readOnly","previousErrorLookupResult","errorLookupResult","_focusInput","fieldNames","Promise","shouldFocus","getFieldState","clearErrors","inputName","currentError","currentRef","restOfErrorTree","payload","_setFormState","reRenderRoot","delete","keepValue","keepError","keepDirty","keepTouched","keepIsValidating","keepDefaultValue","keepIsValid","disabledIsDefined","progressive","fieldRef","querySelectorAll","radioOrCheckbox","_focusError","_disableForm","onValid","onInvalid","e","onValidError","preventDefault","persist","size","resetField","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","keepDefaultValues","keepValues","keepDirtyValues","fieldsToCheck","form","closest","reset","keepFieldsRef","keepSubmitCount","keepIsSubmitted","keepErrors","keepIsSubmitSuccessful","setFocus","shouldSelect","_resetDefaultValues","then","resetOptions","formControl","generateId","crypto","randomUUID","d","performance","now","c","r","Math","random","toString","getFocusFieldName","focusName","focusIndex","appendAt","fillEmptyArray","insert","moveArrayAt","to","splice","prependAt","removeAtIndexes","indexes","i","temp","removeArrayAt","sort","a","b","swapArrayAt","indexA","indexB","updateAt","useFieldArray","keyName","setFields","ids","_fieldIds","_actioned","fieldArrayName","updateValues","updatedFieldArrayValues","appendValue","prepend","prependValue","remove","insert$1","insertValue","swap","move","update","item","existingError","useForm","_formControl","_values","sub"],"sources":["/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isCheckBoxInput.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isDateObject.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isNullOrUndefined.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isObject.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getEventValue.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getNodeParentName.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/isNameInFieldArray.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isPlainObject.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isWeb.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/cloneObject.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isKey.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isUndefined.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/compact.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/stringToPath.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/get.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isBoolean.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/set.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/constants.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/useFormContext.tsx","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getProxyFormState.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/useIsomorphicLayoutEffect.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/useFormState.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isString.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/generateWatchOutput.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isPrimitive.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/deepEqual.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/useWatch.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/useController.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/controller.tsx","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/flatten.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/form.tsx","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/appendErrors.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/convertToArrayPayload.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/createSubject.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isEmptyObject.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isFileInput.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isFunction.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isHTMLElement.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isMultipleSelect.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isRadioInput.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/live.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/unset.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/objectHasFunction.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getDirtyFields.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getCheckboxValue.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getFieldValueAs.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getRadioValue.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getFieldValue.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getResolverOptions.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isRegex.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getRuleValue.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getValidationModes.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/hasPromiseValidation.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/hasValidation.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/isWatched.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/iterateFieldsByAction.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/schemaErrorLookup.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/shouldRenderFormState.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/shouldSubscribeByName.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/skipValidation.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/unsetEmptyArray.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/isMessage.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getValidateError.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getValueAndMessage.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/validateField.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/createFormControl.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/generateId.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/logic/getFocusFieldName.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/append.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/fillEmptyArray.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/insert.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/move.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/prepend.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/remove.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/swap.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/utils/update.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/useFieldArray.ts","/home/gnx/Desktop/gnx-mail/frontend/node_modules/react-hook-form/src/useForm.ts"],"sourcesContent":["import type { 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 <T extends object>(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","export default (name: string) =>\n name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n","import type { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n names.has(getNodeParentName(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<T>(data: T): T {\n let copy: any;\n const isArray = Array.isArray(data);\n const isFileListInstance =\n typeof FileList !== 'undefined' ? data instanceof FileList : false;\n\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (\n !(isWeb && (data instanceof Blob || isFileListInstance)) &&\n (isArray || isObject(data))\n ) {\n copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\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: string) => /^\\w*$/.test(value);\n","export default (val: unknown): val is undefined => val === undefined;\n","export default <TValue>(value: TValue[]) =>\n Array.isArray(value) ? value.filter(Boolean) : [];\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import isKey from './isKey';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nexport default <T>(\n object: T,\n path?: string | null,\n defaultValue?: unknown,\n): any => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n\n const result = (isKey(path) ? [path] : stringToPath(path)).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","import type { FieldPath, FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default (\n object: FieldValues,\n path: FieldPath<FieldValues>,\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\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n object[key] = newValue;\n object = object[key];\n }\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 type { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst HookFormContext = React.createContext<UseFormReturn | null>(null);\nHookFormContext.displayName = 'HookFormContext';\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 * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(): UseFormReturn<TFieldValues, TContext, TTransformedValues> =>\n React.useContext(HookFormContext) as UseFormReturn<\n TFieldValues,\n TContext,\n TTransformedValues\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 * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport const FormProvider = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n props: FormProviderProps<TFieldValues, TContext, TTransformedValues>,\n) => {\n const { children, ...data } = props;\n return (\n <HookFormContext.Provider value={data as unknown as UseFormReturn}>\n {children}\n </HookFormContext.Provider>\n );\n};\n","import { VALIDATION_MODE } from '../constants';\nimport type { Control, FieldValues, FormState, ReadFormState } from '../types';\n\nexport default <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n formState: FormState<TFieldValues>,\n control: Control<TFieldValues, TContext, TTransformedValues>,\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<TFieldValues> & 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 React from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n","import React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport type {\n FieldValues,\n UseFormStateProps,\n UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nexport function useFormState<\n TFieldValues extends FieldValues = FieldValues,\n TTransformedValues = TFieldValues,\n>(\n props?: UseFormStateProps<TFieldValues, TTransformedValues>,\n): UseFormStateReturn<TFieldValues> {\n const methods = useFormContext<TFieldValues, any, TTransformedValues>();\n const { control = methods.control, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n\n useIsomorphicLayoutEffect(\n () =>\n control._subscribe({\n name,\n formState: _localProxyFormState.current,\n exact,\n callback: (formState) => {\n !disabled &&\n updateFormState({\n ...control._formState,\n ...formState,\n });\n },\n }),\n [name, disabled, exact],\n );\n\n React.useEffect(() => {\n _localProxyFormState.current.isValid && control._setValid(true);\n }, [control]);\n\n return React.useMemo(\n () =>\n getProxyFormState(\n formState,\n control,\n _localProxyFormState.current,\n false,\n ),\n [formState, control],\n );\n}\n","export default (value: unknown): value is string => typeof value === 'string';\n","import type { DeepPartial, FieldValues, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default <T>(\n names: string | string[] | undefined,\n _names: Names,\n formValues?: FieldValues,\n isGlobal?: boolean,\n defaultValue?: DeepPartial<T> | 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),\n get(formValues, fieldName)\n ),\n );\n }\n\n isGlobal && (_names.watchAll = true);\n\n return formValues;\n};\n","import type { 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(\n object1: any,\n object2: any,\n _internal_visited = new WeakSet(),\n) {\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 if (_internal_visited.has(object1) || _internal_visited.has(object2)) {\n return true;\n }\n _internal_visited.add(object1);\n _internal_visited.add(object2);\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, _internal_visited)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import React from 'react';\n\nimport generateWatchOutput from './logic/generateWatchOutput';\nimport deepEqual from './utils/deepEqual';\nimport type {\n Control,\n DeepPartialSkipArrayKey,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\n/**\n * Subscribe to the entire form values change and re-render at the hook level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * defaultValue: {\n * name: \"data\"\n * },\n * exact: false,\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TTransformedValues = TFieldValues,\n>(props: {\n name?: undefined;\n defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n control?: Control<TFieldValues, any, TTransformedValues>;\n disabled?: boolean;\n exact?: boolean;\n compute?: undefined;\n}): DeepPartialSkipArrayKey<TFieldValues>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * name: \"fieldA\",\n * defaultValue: \"default value\",\n * exact: false,\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n TTransformedValues = TFieldValues,\n>(props: {\n name: TFieldName;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n control?: Control<TFieldValues, any, TTransformedValues>;\n disabled?: boolean;\n exact?: boolean;\n compute?: undefined;\n}): FieldPathValue<TFieldValues, TFieldName>;\n/**\n * Custom hook to subscribe to field change and compute function to produce state update\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * compute: (formValues) => formValues.fieldA\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TTransformedValues = TFieldValues,\n TComputeValue = unknown,\n>(props: {\n name?: undefined;\n defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n control?: Control<TFieldValues, any, TTransformedValues>;\n disabled?: boolean;\n exact?: boolean;\n compute: (formValues: TFieldValues) => TComputeValue;\n}): TComputeValue;\n/**\n * Custom hook to subscribe to field change and compute function to produce state update\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * name: \"fieldA\",\n * defaultValue: \"default value\",\n * exact: false,\n * compute: (fieldValue) => fieldValue === \"data\" ? fieldValue : null,\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n TTransformedValues = TFieldValues,\n TComputeValue = unknown,\n>(props: {\n name: TFieldName;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n control?: Control<TFieldValues, any, TTransformedValues>;\n disabled?: boolean;\n exact?: boolean;\n compute: (\n fieldValue: FieldPathValue<TFieldValues, TFieldName>,\n ) => TComputeValue;\n}): TComputeValue;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * name: [\"fieldA\", \"fieldB\"],\n * defaultValue: {\n * fieldA: \"data\",\n * fieldB: \"data\"\n * },\n * exact: false,\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldNames extends\n readonly FieldPath<TFieldValues>[] = readonly FieldPath<TFieldValues>[],\n TTransformedValues = TFieldValues,\n>(props: {\n name: readonly [...TFieldNames];\n defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n control?: Control<TFieldValues, any, TTransformedValues>;\n disabled?: boolean;\n exact?: boolean;\n compute?: undefined;\n}): FieldPathValues<TFieldValues, TFieldNames>;\n/**\n * Custom hook to subscribe to field change and compute function to produce state update\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * name: [\"fieldA\", \"fieldB\"],\n * defaultValue: {\n * fieldA: \"data\",\n * fieldB: 0\n * },\n * compute: ([fieldAValue, fieldBValue]) => fieldB === 2 ? fieldA : null,\n * exact: false,\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldNames extends\n readonly FieldPath<TFieldValues>[] = readonly FieldPath<TFieldValues>[],\n TTransformedValues = TFieldValues,\n TComputeValue = unknown,\n>(props: {\n name: readonly [...TFieldNames];\n defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n control?: Control<TFieldValues, any, TTransformedValues>;\n disabled?: boolean;\n exact?: boolean;\n compute: (\n fieldValue: FieldPathValues<TFieldValues, TFieldNames>,\n ) => TComputeValue;\n}): TComputeValue;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * // can skip passing down the control into useWatch if the form is wrapped with the FormProvider\n * const values = useWatch()\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n>(): DeepPartialSkipArrayKey<TFieldValues>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nexport function useWatch<TFieldValues extends FieldValues>(\n props?: UseWatchProps<TFieldValues>,\n) {\n const methods = useFormContext<TFieldValues>();\n const {\n control = methods.control,\n name,\n defaultValue,\n disabled,\n exact,\n compute,\n } = props || {};\n const _defaultValue = React.useRef(defaultValue);\n const _compute = React.useRef(compute);\n const _computeFormValues = React.useRef(undefined);\n\n _compute.current = compute;\n\n const defaultValueMemo = React.useMemo(\n () =>\n control._getWatch(\n name as InternalFieldName,\n _defaultValue.current as DeepPartialSkipArrayKey<TFieldValues>,\n ),\n [control, name],\n );\n\n const [value, updateValue] = React.useState(\n _compute.current ? _compute.current(defaultValueMemo) : defaultValueMemo,\n );\n\n useIsomorphicLayoutEffect(\n () =>\n control._subscribe({\n name,\n formState: {\n values: true,\n },\n exact,\n callback: (formState) => {\n if (!disabled) {\n const formValues = generateWatchOutput(\n name as InternalFieldName | InternalFieldName[],\n control._names,\n formState.values || control._formValues,\n false,\n _defaultValue.current,\n );\n\n if (_compute.current) {\n const computedFormValues = _compute.current(formValues);\n\n if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n updateValue(computedFormValues);\n _computeFormValues.current = computedFormValues;\n }\n } else {\n updateValue(formValues);\n }\n }\n },\n }),\n [control, disabled, name, exact],\n );\n\n React.useEffect(() => control._removeUnmounted());\n\n return value;\n}\n","import React from 'react';\n\nimport getEventValue from './logic/getEventValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport cloneObject from './utils/cloneObject';\nimport get from './utils/get';\nimport isBoolean from './utils/isBoolean';\nimport isUndefined from './utils/isUndefined';\nimport set from './utils/set';\nimport { EVENTS } from './constants';\nimport type {\n ControllerFieldState,\n Field,\n FieldPath,\n FieldPathValue,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\nimport { useWatch } from './useWatch';\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n TTransformedValues = TFieldValues,\n>(\n props: UseControllerProps<TFieldValues, TName, TTransformedValues>,\n): UseControllerReturn<TFieldValues, TName> {\n const methods = useFormContext<TFieldValues, any, TTransformedValues>();\n const {\n name,\n disabled,\n control = methods.control,\n shouldUnregister,\n defaultValue,\n } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n\n const defaultValueMemo = React.useMemo(\n () =>\n get(\n control._formValues,\n name,\n get(control._defaultValues, name, defaultValue),\n ),\n [control, name, defaultValue],\n );\n\n const value = useWatch({\n control,\n name,\n defaultValue: defaultValueMemo,\n exact: true,\n }) as FieldPathValue<TFieldValues, TName>;\n\n const formState = useFormState({\n control,\n name,\n exact: true,\n });\n\n const _props = React.useRef(props);\n\n const _registerProps = React.useRef(\n control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }),\n );\n\n _props.current = props;\n\n const fieldState = React.useMemo(\n () =>\n Object.defineProperties(\n {},\n {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n },\n ) as ControllerFieldState,\n [formState, name],\n );\n\n const onChange = React.useCallback(\n (event: any) =>\n _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n }),\n [name],\n );\n\n const onBlur = React.useCallback(\n () =>\n _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name as InternalFieldName,\n },\n type: EVENTS.BLUR,\n }),\n [name, control._formValues],\n );\n\n const ref = React.useCallback(\n (elm: any) => {\n const field = get(control._fields, name);\n\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus && elm.focus(),\n select: () => elm.select && elm.select(),\n setCustomValidity: (message: string) =>\n elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity(),\n };\n }\n },\n [control._fields, name],\n );\n\n const field = React.useMemo(\n () => ({\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange,\n onBlur,\n ref,\n }),\n [name, disabled, formState.disabled, onChange, onBlur, ref, value],\n );\n\n React.useEffect(() => {\n const _shouldUnregisterField =\n control._options.shouldUnregister || shouldUnregister;\n\n control.register(name, {\n ..._props.current.rules,\n ...(isBoolean(_props.current.disabled)\n ? { disabled: _props.current.disabled }\n : {}),\n });\n\n const updateMounted = (name: InternalFieldName, value: boolean) => {\n const field: Field = get(control._fields, name);\n\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n\n updateMounted(name, true);\n\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n\n !isArrayField && control.register(name);\n\n return () => {\n (\n isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField\n )\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n\n React.useEffect(() => {\n control._setDisabledField({\n disabled,\n name,\n });\n }, [disabled, name, control]);\n\n return React.useMemo(\n () => ({\n field,\n formState,\n fieldState,\n }),\n [field, formState, fieldState],\n );\n}\n","import type { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n TTransformedValues = TFieldValues,\n>(\n props: ControllerProps<TFieldValues, TName, TTransformedValues>,\n) =>\n props.render(useController<TFieldValues, TName, TTransformedValues>(props));\n\nexport { Controller };\n","import type { FieldValues } from '../types';\n\nimport { isObjectType } from './isObject';\n\nexport const flatten = (obj: FieldValues) => {\n const output: FieldValues = {};\n\n for (const key of Object.keys(obj)) {\n if (isObjectType(obj[key]) && obj[key] !== null) {\n const nested = flatten(obj[key]);\n\n for (const nestedKey of Object.keys(nested)) {\n output[`${key}.${nestedKey}`] = nested[nestedKey];\n }\n } else {\n output[key] = obj[key];\n }\n }\n\n return output;\n};\n","import React from 'react';\n\nimport { flatten } from './utils/flatten';\nimport type { FieldValues, FormProps } from './types';\nimport { useFormContext } from './useFormContext';\n\nconst POST_REQUEST = 'post';\n\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form<\n TFieldValues extends FieldValues,\n TTransformedValues = TFieldValues,\n>(props: FormProps<TFieldValues, TTransformedValues>) {\n const methods = useFormContext<TFieldValues, any, TTransformedValues>();\n const [mounted, setMounted] = React.useState(false);\n const {\n control = methods.control,\n onSubmit,\n children,\n action,\n method = POST_REQUEST,\n headers,\n encType,\n onError,\n render,\n onSuccess,\n validateStatus,\n ...rest\n } = props;\n\n const submit = async (event?: React.BaseSyntheticEvent) => {\n let hasError = false;\n let type = '';\n\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n\n try {\n formDataJson = JSON.stringify(data);\n } catch {}\n\n const flattenFormValues = flatten(control._formValues);\n\n for (const key in flattenFormValues) {\n formData.append(key, flattenFormValues[key]);\n }\n\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n\n const response = await fetch(String(action), {\n method,\n headers: {\n ...headers,\n ...(encType && encType !== 'multipart/form-data'\n ? { 'Content-Type': encType }\n : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n\n if (\n response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)\n ) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n } else {\n onSuccess && onSuccess({ response });\n }\n } catch (error: unknown) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n return render ? (\n <>\n {render({\n submit,\n })}\n </>\n ) : (\n <form\n noValidate={mounted}\n action={action}\n method={method}\n encType={encType}\n onSubmit={submit}\n {...rest}\n >\n {children}\n </form>\n );\n}\n\nexport { Form };\n","import type {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","export default <T>(value: T) => (Array.isArray(value) ? value : [value]);\n","import type { Noop } from '../types';\n\nexport type Observer<T> = {\n next: (value: T) => void;\n};\n\nexport type Subscription = {\n unsubscribe: Noop;\n};\n\nexport type Subject<T> = {\n readonly observers: Observer<T>[];\n subscribe: (value: Observer<T>) => Subscription;\n unsubscribe: Noop;\n} & Observer<T>;\n\nexport default <T>(): Subject<T> => {\n let _observers: Observer<T>[] = [];\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<T>): 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 type { 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 type { 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 type { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `select-multiple`;\n","import type { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","import type { 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 type { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\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 isFunction from './isFunction';\n\nexport default <T>(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<T>(data: T, fields: Record<string, any> = {}) {\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<T>(\n data: T,\n formValues: T,\n dirtyFieldsFromValues: Record<\n Extract<keyof T, string>,\n ReturnType<typeof markFieldsDirty> | 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 <T>(defaultValues: T, formValues: T) =>\n getDirtyFieldsFromDefaultValues(\n defaultValues,\n formValues,\n markFieldsDirty(formValues),\n );\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import type { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends NativeFieldValue>(\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","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 type { 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 (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 type {\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 <TFieldValues extends FieldValues>(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n _fields: FieldRefs,\n criteriaMode?: CriteriaMode,\n shouldUseNativeValidation?: boolean | undefined,\n) => {\n const fields: Record<InternalFieldName, Field['_f']> = {};\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<TFieldValues>[],\n fields,\n shouldUseNativeValidation,\n };\n};\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import type {\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 <T extends ValidationValue>(\n rule?: ValidationRule<T> | ValidationValueMessage<T>,\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 { VALIDATION_MODE } from '../constants';\nimport type { 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 type { 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 &&\n !!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<unknown, unknown>) =>\n validateFunction.constructor.name === ASYNC_FUNCTION,\n ))\n );\n","import type { 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 type { 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 type { 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> | 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 as FieldRefs, action)) {\n break;\n }\n }\n }\n }\n return;\n};\nexport default iterateFieldsByAction;\n","import type { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\nimport isKey from '../utils/isKey';\n\nexport default function schemaErrorLookup<T extends FieldValues = FieldValues>(\n errors: FieldErrors<T>,\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 if (foundError && foundError.root && foundError.root.type) {\n return {\n name: `${fieldName}.root`,\n error: foundError.root,\n };\n }\n\n names.pop();\n }\n\n return {\n name,\n };\n}\n","import { VALIDATION_MODE } from '../constants';\nimport type {\n FieldValues,\n FormState,\n InternalFieldName,\n ReadFormState,\n} from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\n\nexport default <T extends FieldValues, K extends ReadFormState>(\n formStateData: Partial<FormState<T>> & {\n name?: InternalFieldName;\n values?: T;\n },\n _proxyFormState: K,\n updateFormState: (formState: Partial<FormState<T>>) => void,\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","import convertToArrayPayload from '../utils/convertToArrayPayload';\n\nexport default <T extends string | readonly string[] | undefined>(\n name?: T,\n signalName?: string,\n exact?: boolean,\n) =>\n !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some(\n (currentName) =>\n currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)),\n );\n","import type { 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<ValidationModeFlags>,\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 <T>(ref: T, name: string) =>\n !compact(get(ref, name)).length && unset(ref, name);\n","import type {\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 <T extends FieldValues = FieldValues>(\n errors: FieldErrors<T>,\n error: Partial<Record<string, FieldError>>,\n name: InternalFieldName,\n): FieldErrors<T> => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n","import type { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message => isString(value);\n","import type { 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 type { 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 type {\n Field,\n FieldError,\n FieldValues,\n InternalFieldErrors,\n InternalNameSet,\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 <T extends FieldValues>(\n field: Field,\n disabledFieldNames: InternalNameSet,\n formValues: T,\n validateAllFieldCriteria: boolean,\n shouldUseNativeValidation?: boolean,\n isFieldArray?: boolean,\n): Promise<InternalFieldErrors> => {\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 } = field._f;\n const inputValue: NativeFieldValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\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 { EVENTS, VALIDATION_MODE } from '../constants';\nimport type {\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 FromSubscribe,\n GetIsDirty,\n InternalFieldName,\n Names,\n Path,\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 UseFormSubscribe,\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 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 shouldRenderFormState from './shouldRenderFormState';\nimport shouldSubscribeByName from './shouldSubscribeByName';\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 TTransformedValues = TFieldValues,\n>(\n props: UseFormProps<TFieldValues, TContext, TTransformedValues> = {},\n): Omit<\n UseFormReturn<TFieldValues, TContext, TTransformedValues>,\n 'formState'\n> & {\n formControl: Omit<\n UseFormReturn<TFieldValues, TContext, TTransformedValues>,\n 'formState'\n >;\n} {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState: FormState<TFieldValues> = {\n submitCount: 0,\n isDirty: false,\n isReady: 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 ? ({} as TFieldValues)\n : (cloneObject(_defaultValues) as TFieldValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names: Names = {\n mount: new Set(),\n disabled: 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 let _proxySubscribeFormState = {\n ..._proxyFormState,\n };\n const _subjects: Subjects<TFieldValues> = {\n array: createSubject(),\n state: createSubject(),\n };\n\n const shouldDisplayAllAssociatedErrors =\n _options.criteriaMode === VALIDATION_MODE.all;\n\n const debounce =\n <T extends Function>(callback: T) =>\n (wait: number) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n\n const _setValid = async (shouldUpdateValid?: boolean) => {\n if (\n !_options.disabled &&\n (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid ||\n shouldUpdateValid)\n ) {\n const isValid = _options.resolver\n ? isEmptyObject((await _runSchema()).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 (\n !_options.disabled &&\n (_proxyFormState.isValidating ||\n _proxyFormState.validatingFields ||\n _proxySubscribeFormState.isValidating ||\n _proxySubscribeFormState.validatingFields)\n ) {\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 _setFieldArray: BatchFieldArrayUpdate = (\n name,\n values = [],\n method,\n args,\n shouldSetValues = true,\n shouldUpdateFieldsAndState = true,\n ) => {\n if (args && method && !_options.disabled) {\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 _proxySubscribeFormState.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 || _proxySubscribeFormState.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<TFieldValues>) => {\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 && _setValid();\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<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output: Partial<FormState<TFieldValues>> & { name: string } = {\n name,\n };\n\n if (!_options.disabled) {\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n\n const isCurrentFieldPristine = deepEqual(\n get(_defaultValues, name),\n fieldValue,\n );\n\n isPreviousDirty = !!get(_formState.dirtyFields, name);\n isCurrentFieldPristine\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.dirtyFields ||\n _proxySubscribeFormState.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 _proxySubscribeFormState.touchedFields) &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n\n return shouldUpdateField ? output : {};\n };\n\n const shouldRenderByError = (\n name: InternalFieldName,\n isValid?: boolean,\n error?: FieldError,\n fieldState?: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n },\n ) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid =\n (_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.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 _runSchema = 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 _runSchema(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 as Field;\n\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction =\n field._f && hasPromiseValidation((field as Field)._f);\n\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name], true);\n }\n\n const fieldError = await validateField(\n field as Field,\n _names.disabled,\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<TFieldValues>);\n }\n\n _names.unMount = new Set();\n };\n\n const _getDirty: GetIsDirty = (name, data) =>\n !_options.disabled &&\n (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n\n const _getWatch: WatchInternal<TFieldValues> = (\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 = <TFieldArrayValues>(\n name: InternalFieldName,\n ): Partial<TFieldArrayValues>[] =>\n compact(\n get(\n _state.mount ? _formValues : _defaultValues,\n name,\n _options.shouldUnregister ? get(_defaultValues, name, []) : [],\n ),\n );\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue<TFieldValues>,\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.forEach((checkboxRef) => {\n if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n if (Array.isArray(fieldValue)) {\n checkboxRef.checked = !!fieldValue.find(\n (data: string) => data === checkboxRef.value,\n );\n } else {\n checkboxRef.checked =\n fieldValue === checkboxRef.value || !!fieldValue;\n }\n }\n });\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.state.next({\n name,\n values: cloneObject(_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<TFieldValues>);\n };\n\n const setValues = <\n T extends InternalFieldName,\n K extends SetFieldValue<TFieldValues>,\n U extends SetValueConfig,\n >(\n name: T,\n value: K,\n options: U,\n ) => {\n for (const fieldKey in value) {\n if (!value.hasOwnProperty(fieldKey)) {\n return;\n }\n const fieldValue = value[fieldKey];\n const fieldName = name + '.' + fieldKey;\n const field = get(_fields, fieldName);\n\n (_names.array.has(name) ||\n isObject(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<TFieldValues> = (\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: cloneObject(_formValues),\n });\n\n if (\n (_proxyFormState.isDirty ||\n _proxyFormState.dirtyFields ||\n _proxySubscribeFormState.isDirty ||\n _proxySubscribeFormState.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, name });\n _subjects.state.next({\n name: _state.mount ? name : undefined,\n values: cloneObject(_formValues),\n });\n };\n\n const onChange: ChangeHandler = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name: string = target.name;\n let isFieldValueUpdated = true;\n const field: Field = get(_fields, name);\n const _updateIsFieldValueUpdated = (fieldValue: unknown) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(\n _options.reValidateMode,\n );\n\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type\n ? getFieldValue(field._f)\n : getEventValue(event);\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 if (!target || !target.readOnly) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n\n const shouldRender = !isEmptyObject(fieldState) || watched;\n\n !isBlurEvent &&\n _subjects.state.next({\n name,\n type: event.type,\n values: cloneObject(_formValues),\n });\n\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n if (_options.mode === 'onBlur') {\n if (isBlurEvent) {\n _setValid();\n }\n } else if (!isBlurEvent) {\n _setValid();\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 _runSchema([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 _names.disabled,\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 (\n _proxyFormState.isValid ||\n _proxySubscribeFormState.isValid\n ) {\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<TFieldValues>\n | FieldPath<TFieldValues>[],\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<TFieldValues> = 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) && _setValid();\n } else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) ||\n ((_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n 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<TFieldValues> = (\n fieldNames?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>,\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<TFieldValues> = (\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<TFieldValues> = (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<TFieldValues> = (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<TFieldValues> = (\n name?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: DeepPartial<TFieldValues>,\n ) =>\n isFunction(name)\n ? _subjects.state.subscribe({\n next: (payload) =>\n 'values' in payload &&\n name(\n _getWatch(undefined, defaultValue),\n payload as {\n name?: FieldPath<TFieldValues>;\n type?: EventType;\n value?: unknown;\n },\n ),\n })\n : _getWatch(\n name as InternalFieldName | InternalFieldName[],\n defaultValue,\n true,\n );\n\n const _subscribe: FromSubscribe<TFieldValues> = (props) =>\n _subjects.state.subscribe({\n next: (\n formState: Partial<FormState<TFieldValues>> & {\n name?: InternalFieldName;\n values?: TFieldValues | undefined;\n type?: EventType;\n },\n ) => {\n if (\n shouldSubscribeByName(props.name, formState.name, props.exact) &&\n shouldRenderFormState(\n formState,\n (props.formState as ReadFormState) || _proxyFormState,\n _setFormState,\n props.reRenderRoot,\n )\n ) {\n props.callback({\n values: { ..._formValues } as TFieldValues,\n ..._formState,\n ...formState,\n defaultValues:\n _defaultValues as FormState<TFieldValues>['defaultValues'],\n });\n }\n },\n }).unsubscribe;\n\n const subscribe: UseFormSubscribe<TFieldValues> = (props) => {\n _state.mount = true;\n _proxySubscribeFormState = {\n ..._proxySubscribeFormState,\n ...props.formState,\n };\n return _subscribe({\n ...props,\n formState: _proxySubscribeFormState,\n });\n };\n\n const unregister: UseFormUnregister<TFieldValues> = (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.state.next({\n values: cloneObject(_formValues),\n });\n\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n\n !options.keepIsValid && _setValid();\n };\n\n const _setDisabledField: Control<TFieldValues>['_setDisabledField'] = ({\n disabled,\n name,\n }) => {\n if (\n (isBoolean(disabled) && _state.mount) ||\n !!disabled ||\n _names.disabled.has(name)\n ) {\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n }\n };\n\n const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined =\n isBoolean(options.disabled) || isBoolean(_options.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 _setDisabledField({\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : _options.disabled,\n name,\n });\n } else {\n updateValidAndValue(name, true, options.value);\n }\n\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || _options.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue<number>(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<TFieldValues, TTransformedValues> =\n (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n (e as React.BaseSyntheticEvent).persist &&\n (e as React.BaseSyntheticEvent).persist();\n }\n let fieldValues: TFieldValues | TTransformedValues | {} =\n cloneObject(_formValues);\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n if (_options.resolver) {\n const { errors, values } = await _runSchema();\n _formState.errors = errors;\n fieldValues = cloneObject(values) as TFieldValues;\n } else {\n await executeBuiltInValidation(_fields);\n }\n\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n unset(fieldValues, name);\n }\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 TTransformedValues, 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<TFieldValues> = (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 Parameters<typeof setValue<typeof name>>[1],\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 && _setValid();\n }\n\n _subjects.state.next({ ..._formState });\n }\n };\n\n const _reset: UseFormReset<TFieldValues> = (\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 const fieldsToCheck = new Set([\n ..._names.mount,\n ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n ]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(\n fieldName as FieldPath<TFieldValues>,\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 if (keepStateOptions.keepFieldsRef) {\n for (const fieldName of _names.mount) {\n setValue(\n fieldName as FieldPath<TFieldValues>,\n get(values, fieldName),\n );\n }\n } else {\n _fields = {};\n }\n }\n\n _formValues = _options.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? (cloneObject(_defaultValues) as TFieldValues)\n : ({} as TFieldValues)\n : (cloneObject(values) as TFieldValues);\n\n _subjects.array.next({\n values: { ...values },\n });\n\n _subjects.state.next({\n values: { ...values } as TFieldValues,\n });\n }\n\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n disabled: 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 = !!_options.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 defaultValues: _defaultValues as FormState<TFieldValues>['defaultValues'],\n });\n };\n\n const reset: UseFormReset<TFieldValues> = (formValues, keepStateOptions) =>\n _reset(\n isFunction(formValues)\n ? (formValues as Function)(_formValues as TFieldValues)\n : formValues,\n keepStateOptions,\n );\n\n const setFocus: UseFormSetFocus<TFieldValues> = (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 &&\n isFunction(fieldRef.select) &&\n fieldRef.select();\n }\n }\n };\n\n const _setFormState = (\n updatedFormState: Partial<FormState<TFieldValues>>,\n ) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n\n const _resetDefaultValues = () =>\n isFunction(_options.defaultValues) &&\n (_options.defaultValues as Function)().then((values: TFieldValues) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n\n const methods = {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _subscribe,\n _runSchema,\n _focusError,\n _getWatch,\n _getDirty,\n _setValid,\n _setFieldArray,\n _setDisabledField,\n _setErrors,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _removeUnmounted,\n _disableForm,\n _subjects,\n _proxyFormState,\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 get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n subscribe,\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 return {\n ...methods,\n formControl: methods,\n };\n}\n","export default () => {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n\n const d =\n typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n","import type { FieldArrayMethodProps, InternalFieldName } from '../types';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n name: InternalFieldName,\n index: number,\n options: FieldArrayMethodProps = {},\n): string =>\n options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default <T>(data: T[], value: T | T[]): T[] => [\n ...data,\n ...convertToArrayPayload(value),\n];\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? value.map(() => undefined) : undefined;\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function insert<T>(data: T[], index: number): (T | undefined)[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value: T | T[],\n): T[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value?: T | T[],\n): (T | undefined)[] {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n","import isUndefined from './isUndefined';\n\nexport default <T>(\n data: (T | undefined)[],\n from: number,\n to: number,\n): (T | undefined)[] => {\n if (!Array.isArray(data)) {\n return [];\n }\n\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n\n return data;\n};\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default <T>(data: T[], value: T | T[]): T[] => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n","import compact from './compact';\nimport convertToArrayPayload from './convertToArrayPayload';\nimport isUndefined from './isUndefined';\n\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\n let i = 0;\n const temp = [...data];\n\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n\n return compact(temp).length ? temp : [];\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n isUndefined(index)\n ? []\n : removeAtIndexes(\n data,\n (convertToArrayPayload(index) as number[]).sort((a, b) => a - b),\n );\n","export default <T>(data: T[], indexA: number, indexB: number): void => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n","export default <T>(fieldValues: T[], index: number, value: T) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n","import React from 'react';\n\nimport generateId from './logic/generateId';\nimport getFocusFieldName from './logic/getFocusFieldName';\nimport getValidationModes from './logic/getValidationModes';\nimport isWatched from './logic/isWatched';\nimport iterateFieldsByAction from './logic/iterateFieldsByAction';\nimport updateFieldArrayRootError from './logic/updateFieldArrayRootError';\nimport validateField from './logic/validateField';\nimport appendAt from './utils/append';\nimport cloneObject from './utils/cloneObject';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isEmptyObject from './utils/isEmptyObject';\nimport moveArrayAt from './utils/move';\nimport prependAt from './utils/prepend';\nimport removeArrayAt from './utils/remove';\nimport set from './utils/set';\nimport swapArrayAt from './utils/swap';\nimport unset from './utils/unset';\nimport updateAt from './utils/update';\nimport { VALIDATION_MODE } from './constants';\nimport type {\n Control,\n Field,\n FieldArray,\n FieldArrayMethodProps,\n FieldArrayPath,\n FieldArrayWithId,\n FieldErrors,\n FieldPath,\n FieldValues,\n FormState,\n InternalFieldName,\n RegisterOptions,\n UseFieldArrayProps,\n UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nexport function useFieldArray<\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends\n FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n TKeyName extends string = 'id',\n TTransformedValues = TFieldValues,\n>(\n props: UseFieldArrayProps<\n TFieldValues,\n TFieldArrayName,\n TKeyName,\n TTransformedValues\n >,\n): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n keyName = 'id',\n shouldUnregister,\n rules,\n } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef<string[]>(\n control._getFieldArray(name).map(generateId),\n );\n const _fieldIds = React.useRef(fields);\n const _actioned = React.useRef(false);\n\n _fieldIds.current = fields;\n control._names.array.add(name);\n\n React.useMemo(\n () =>\n rules &&\n (control as Control<TFieldValues, any, TTransformedValues>).register(\n name as FieldPath<TFieldValues>,\n rules as RegisterOptions<TFieldValues>,\n ),\n [control, rules, name],\n );\n\n useIsomorphicLayoutEffect(\n () =>\n control._subjects.array.subscribe({\n next: ({\n values,\n name: fieldArrayName,\n }: {\n values?: FieldValues;\n name?: InternalFieldName;\n }) => {\n if (fieldArrayName === name || !fieldArrayName) {\n const fieldValues = get(values, name);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n }).unsubscribe,\n [control, name],\n );\n\n const updateValues = React.useCallback(\n <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n >(\n updatedFieldArrayValues: T,\n ) => {\n _actioned.current = true;\n control._setFieldArray(name, updatedFieldArrayValues);\n },\n [control, name],\n );\n\n const append = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(\n control._getFieldArray(name),\n appendValue,\n );\n control._names.focus = getFocusFieldName(\n name,\n updatedFieldArrayValues.length - 1,\n options,\n );\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n\n const prepend = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(\n control._getFieldArray(name),\n prependValue,\n );\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n !Array.isArray(get(control._fields, name)) &&\n set(control._fields, name, undefined);\n control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n\n const insert = (\n index: number,\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insertAt(\n control._getFieldArray(name),\n index,\n insertValue,\n );\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insertAt(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, insertAt, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n\n const swap = (indexA: number, indexB: number) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(\n name,\n updatedFieldArrayValues,\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n false,\n );\n };\n\n const move = (from: number, to: number) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(\n name,\n updatedFieldArrayValues,\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n false,\n );\n };\n\n const update = (\n index: number,\n value: FieldArray<TFieldValues, TFieldArrayName>,\n ) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(\n control._getFieldArray<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >(name),\n index,\n updateValue as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>,\n );\n ids.current = [...updatedFieldArrayValues].map((item, i) =>\n !item || i === index ? generateId() : ids.current[i],\n );\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(\n name,\n updatedFieldArrayValues,\n updateAt,\n {\n argA: index,\n argB: updateValue,\n },\n true,\n false,\n );\n };\n\n const replace = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n ) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(\n name,\n [...updatedFieldArrayValues],\n <T>(data: T): T => data,\n {},\n true,\n false,\n );\n };\n\n React.useEffect(() => {\n control._state.action = false;\n\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n } as FormState<TFieldValues>);\n\n if (\n _actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted) &&\n !getValidationModes(control._options.reValidateMode).isOnSubmit\n ) {\n if (control._options.resolver) {\n control._runSchema([name]).then((result) => {\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n\n if (\n existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type\n ) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors as FieldErrors<TFieldValues>,\n });\n }\n });\n } else {\n const field: Field = get(control._fields, name);\n if (\n field &&\n field._f &&\n !(\n getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit\n )\n ) {\n validateField(\n field,\n control._names.disabled,\n control._formValues,\n control._options.criteriaMode === VALIDATION_MODE.all,\n control._options.shouldUseNativeValidation,\n true,\n ).then(\n (error) =>\n !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(\n control._formState.errors as FieldErrors<TFieldValues>,\n error,\n name,\n ) as FieldErrors<TFieldValues>,\n }),\n );\n }\n }\n }\n\n control._subjects.state.next({\n name,\n values: cloneObject(control._formValues) as TFieldValues,\n });\n\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key: string) => {\n if (\n control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus\n ) {\n ref.focus();\n return 1;\n }\n return;\n });\n\n control._names.focus = '';\n\n control._setValid();\n _actioned.current = false;\n }, [fields, name, control]);\n\n React.useEffect(() => {\n !get(control._formValues, name) && control._setFieldArray(name);\n\n return () => {\n const updateMounted = (name: InternalFieldName, value: boolean) => {\n const field: Field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n\n control._options.shouldUnregister || shouldUnregister\n ? control.unregister(name as FieldPath<TFieldValues>)\n : updateMounted(name, false);\n };\n }, [name, control, keyName, shouldUnregister]);\n\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(\n () =>\n fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })) as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>[],\n [fields, keyName],\n ),\n };\n}\n","import React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport deepEqual from './utils/deepEqual';\nimport isFunction from './utils/isFunction';\nimport { createFormControl } from './logic';\nimport type {\n FieldValues,\n FormState,\n UseFormProps,\n UseFormReturn,\n} from './types';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\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 * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n props: UseFormProps<TFieldValues, TContext, TTransformedValues> = {},\n): UseFormReturn<TFieldValues, TContext, TTransformedValues> {\n const _formControl = React.useRef<\n UseFormReturn<TFieldValues, TContext, TTransformedValues> | undefined\n >(undefined);\n const _values = React.useRef<typeof props.values>(undefined);\n const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\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 isReady: false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n\n if (!_formControl.current) {\n if (props.formControl) {\n _formControl.current = {\n ...props.formControl,\n formState,\n };\n\n if (props.defaultValues && !isFunction(props.defaultValues)) {\n props.formControl.reset(props.defaultValues, props.resetOptions);\n }\n } else {\n const { formControl, ...rest } = createFormControl(props);\n\n _formControl.current = {\n ...rest,\n formState,\n };\n }\n }\n\n const control = _formControl.current.control;\n control._options = props;\n\n useIsomorphicLayoutEffect(() => {\n const sub = control._subscribe({\n formState: control._proxyFormState,\n callback: () => updateFormState({ ...control._formState }),\n reRenderRoot: true,\n });\n\n updateFormState((data) => ({\n ...data,\n isReady: true,\n }));\n\n control._formState.isReady = true;\n\n return sub;\n }, [control]);\n\n React.useEffect(\n () => control._disableForm(props.disabled),\n [control, props.disabled],\n );\n\n React.useEffect(() => {\n if (props.mode) {\n control._options.mode = props.mode;\n }\n if (props.reValidateMode) {\n control._options.reValidateMode = props.reValidateMode;\n }\n }, [control, props.mode, props.reValidateMode]);\n\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n control._focusError();\n }\n }, [control, props.errors]);\n\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.state.next({\n values: control._getWatch(),\n });\n }, [control, props.shouldUnregister]);\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, {\n keepFieldsRef: true,\n ...control._options.resetOptions,\n });\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n } else {\n control._resetDefaultValues();\n }\n }, [control, props.values]);\n\n React.useEffect(() => {\n if (!control._state.mount) {\n control._setValid();\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 _formControl.current.formState = getProxyFormState(formState, control);\n\n return _formControl.current;\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}