{"version":3,"file":"static/chunks/536-4ca19a5f20c6797e.js","mappings":"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","sources":["webpack://_N_E/./node_modules/react-hook-form/dist/index.esm.mjs"],"sourcesContent":["import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\r\nvar isObject = (value) => !isNullOrUndefined(value) &&\r\n !Array.isArray(value) &&\r\n isObjectType(value) &&\r\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\r\n ? isCheckBoxInput(event.target)\r\n ? event.target.checked\r\n : event.target.value\r\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj, path, defaultValue) => {\r\n if (!path || !isObject(obj)) {\r\n return defaultValue;\r\n }\r\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n};\n\nconst EVENTS = {\r\n BLUR: 'blur',\r\n FOCUS_OUT: 'focusout',\r\n CHANGE: 'change',\r\n};\r\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n onTouched: 'onTouched',\r\n all: 'all',\r\n};\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\n\nconst HookFormContext = React.createContext(null);\r\n/**\r\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}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @returns return all useForm methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * \r\n *
\r\n * \r\n * \r\n * \r\n *
\r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return ;\r\n * }\r\n * ```\r\n */\r\nconst useFormContext = () => React.useContext(HookFormContext);\r\n/**\r\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}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @param props - all useFrom methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * \r\n *
\r\n * \r\n * \r\n * \r\n *
\r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return ;\r\n * }\r\n * ```\r\n */\r\nconst FormProvider = (props) => {\r\n const { children, ...data } = props;\r\n return (React.createElement(HookFormContext.Provider, { value: data }, props.children));\r\n};\n\nvar getProxyFormState = (formState, _proxyFormState, localProxyFormState, isRoot = true) => {\r\n const result = {};\r\n for (const key in formState) {\r\n Object.defineProperty(result, key, {\r\n get: () => {\r\n const _key = key;\r\n if (_proxyFormState[_key] !== VALIDATION_MODE.all) {\r\n _proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\r\n }\r\n localProxyFormState && (localProxyFormState[_key] = true);\r\n return formState[_key];\r\n },\r\n });\r\n }\r\n return result;\r\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, isRoot) => {\r\n const { name, ...formState } = formStateData;\r\n return (isEmptyObject(formState) ||\r\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\r\n Object.keys(formState).find((key) => _proxyFormState[key] ===\r\n (!isRoot || VALIDATION_MODE.all)));\r\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => exact && signalName\r\n ? name === signalName\r\n : !name ||\r\n !signalName ||\r\n name === signalName ||\r\n convertToArrayPayload(name).some((currentName) => currentName &&\r\n (currentName.startsWith(signalName) ||\r\n signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\r\n const _props = React.useRef(props);\r\n _props.current = props;\r\n React.useEffect(() => {\r\n const tearDown = (subscription) => {\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n };\r\n const subscription = !props.disabled &&\r\n _props.current.subject.subscribe({\r\n next: _props.current.callback,\r\n });\r\n return () => tearDown(subscription);\r\n }, [props.disabled]);\r\n}\n\n/**\r\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.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\r\n *\r\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, control } = useForm({\r\n * defaultValues: {\r\n * firstName: \"firstName\"\r\n * }});\r\n * const { dirtyFields } = useFormState({\r\n * control\r\n * });\r\n * const onSubmit = (data) => console.log(data);\r\n *\r\n * return (\r\n *
\r\n * \r\n * {dirtyFields.firstName &&

Field is dirty.

}\r\n * \r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useFormState(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, disabled, name, exact } = props || {};\r\n const [formState, updateFormState] = React.useState(control._formState);\r\n const _localProxyFormState = React.useRef({\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n });\r\n const _name = React.useRef(name);\r\n const _mounted = React.useRef(true);\r\n _name.current = name;\r\n const callback = React.useCallback((value) => _mounted.current &&\r\n shouldSubscribeByName(_name.current, value.name, exact) &&\r\n shouldRenderFormState(value, _localProxyFormState.current) &&\r\n updateFormState({\r\n ...control._formState,\r\n ...value,\r\n }), [control, exact]);\r\n useSubscribe({\r\n disabled,\r\n callback,\r\n subject: control._subjects.state,\r\n });\r\n React.useEffect(() => {\r\n _mounted.current = true;\r\n return () => {\r\n _mounted.current = false;\r\n };\r\n }, []);\r\n return getProxyFormState(formState, control._proxyFormState, _localProxyFormState.current, false);\r\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal) => {\r\n const isArray = Array.isArray(names);\r\n if (isString(names)) {\r\n isGlobal && _names.watch.add(names);\r\n return get(formValues, names);\r\n }\r\n if (isArray) {\r\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\r\n get(formValues, fieldName)));\r\n }\r\n isGlobal && (_names.watchAll = true);\r\n return formValues;\r\n};\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar objectHasFunction = (data) => {\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n * name: \"fieldName\"\r\n * control,\r\n * })\r\n * ```\r\n */\r\nfunction useWatch(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n const callback = React.useCallback((formState) => {\r\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\r\n const fieldValues = generateWatchOutput(_name.current, control._names, formState.values || control._formValues);\r\n updateValue(isUndefined(_name.current) ||\r\n (isObject(fieldValues) && !objectHasFunction(fieldValues))\r\n ? { ...fieldValues }\r\n : Array.isArray(fieldValues)\r\n ? [...fieldValues]\r\n : isUndefined(fieldValues)\r\n ? defaultValue\r\n : fieldValues);\r\n }\r\n }, [control, exact, defaultValue]);\r\n useSubscribe({\r\n disabled,\r\n subject: control._subjects.watch,\r\n callback,\r\n });\r\n const [value, updateValue] = React.useState(isUndefined(defaultValue)\r\n ? control._getWatch(name)\r\n : defaultValue);\r\n React.useEffect(() => {\r\n control._removeUnmounted();\r\n });\r\n return value;\r\n}\n\n/**\r\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.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns field properties, field and form state. {@link UseControllerReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function Input(props) {\r\n * const { field, fieldState, formState } = useController(props);\r\n * return (\r\n *
\r\n * \r\n *

{fieldState.isTouched && \"Touched\"}

\r\n *

{formState.isSubmitted ? \"submitted\" : \"\"}

\r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useController(props) {\r\n const methods = useFormContext();\r\n const { name, control = methods.control, shouldUnregister } = props;\r\n const isArrayField = isNameInFieldArray(control._names.array, name);\r\n const value = useWatch({\r\n control,\r\n name,\r\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\r\n exact: true,\r\n });\r\n const formState = useFormState({\r\n control,\r\n name,\r\n });\r\n const _registerProps = React.useRef(control.register(name, {\r\n ...props.rules,\r\n value,\r\n }));\r\n React.useEffect(() => {\r\n const updateMounted = (name, value) => {\r\n const field = get(control._fields, name);\r\n if (field) {\r\n field._f.mount = value;\r\n }\r\n };\r\n updateMounted(name, true);\r\n return () => {\r\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\r\n (isArrayField\r\n ? _shouldUnregisterField && !control._stateFlags.action\r\n : _shouldUnregisterField)\r\n ? control.unregister(name)\r\n : updateMounted(name, false);\r\n };\r\n }, [name, control, isArrayField, shouldUnregister]);\r\n return {\r\n field: {\r\n name,\r\n value,\r\n onChange: React.useCallback((event) => {\r\n _registerProps.current.onChange({\r\n target: {\r\n value: getEventValue(event),\r\n name: name,\r\n },\r\n type: EVENTS.CHANGE,\r\n });\r\n }, [name]),\r\n onBlur: React.useCallback(() => {\r\n _registerProps.current.onBlur({\r\n target: {\r\n value: get(control._formValues, name),\r\n name: name,\r\n },\r\n type: EVENTS.BLUR,\r\n });\r\n }, [name, control]),\r\n ref: React.useCallback((elm) => {\r\n const field = get(control._fields, name);\r\n if (elm && field && elm.focus) {\r\n field._f.ref = {\r\n focus: () => elm.focus(),\r\n setCustomValidity: (message) => elm.setCustomValidity(message),\r\n reportValidity: () => elm.reportValidity(),\r\n };\r\n }\r\n }, [name, control._fields]),\r\n },\r\n formState,\r\n fieldState: Object.defineProperties({}, {\r\n invalid: {\r\n get: () => !!get(formState.errors, name),\r\n },\r\n isDirty: {\r\n get: () => !!get(formState.dirtyFields, name),\r\n },\r\n isTouched: {\r\n get: () => !!get(formState.touchedFields, name),\r\n },\r\n error: {\r\n get: () => get(formState.errors, name),\r\n },\r\n }),\r\n };\r\n}\n\n/**\r\n * Component based on `useController` hook to work with controlled component.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns provide field handler functions, field and form state.\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { control } = useForm({\r\n * defaultValues: {\r\n * test: \"\"\r\n * }\r\n * });\r\n *\r\n * return (\r\n *
\r\n * (\r\n * <>\r\n * \r\n *

{formState.isSubmitted ? \"submitted\" : \"\"}

\r\n *

{fieldState.isTouched ? \"touched\" : \"\"}

\r\n * \r\n * )}\r\n * />\r\n * \r\n * );\r\n * }\r\n * ```\r\n */\r\nconst Controller = (props) => props.render(useController(props));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? {\r\n ...errors[name],\r\n types: {\r\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\r\n [type]: message || true,\r\n },\r\n }\r\n : {};\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || Array.isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nconst focusFieldBy = (fields, callback, fieldsNames) => {\r\n for (const key of fieldsNames || Object.keys(fields)) {\r\n const field = get(fields, key);\r\n if (field) {\r\n const { _f, ...currentField } = field;\r\n if (_f && callback(_f.name)) {\r\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\r\n break;\r\n }\r\n else if (_f.refs) {\r\n _f.refs[0].focus();\r\n break;\r\n }\r\n }\r\n else if (isObject(currentField)) {\r\n focusFieldBy(currentField, callback);\r\n }\r\n }\r\n }\r\n};\n\nvar generateId = () => {\r\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\r\n ? options.focusName ||\r\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\r\n : '';\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\r\n (_names.watchAll ||\r\n _names.watch.has(name) ||\r\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\r\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nfunction append(data, value) {\r\n return [...data, ...convertToArrayPayload(value)];\r\n}\n\nfunction cloneObject(data) {\r\n let copy;\r\n const isArray = Array.isArray(data);\r\n if (data instanceof Date) {\r\n copy = new Date(data);\r\n }\r\n else if (data instanceof Set) {\r\n copy = new Set(data);\r\n }\r\n else if (globalThis.Blob && data instanceof Blob) {\r\n copy = data;\r\n }\r\n else if (globalThis.FileList && data instanceof FileList) {\r\n copy = data;\r\n }\r\n else if (isArray || isObject(data)) {\r\n copy = isArray ? [] : {};\r\n for (const key in data) {\r\n copy[key] = isFunction(data[key]) ? data[key] : cloneObject(data[key]);\r\n }\r\n }\r\n else {\r\n return data;\r\n }\r\n return copy;\r\n}\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...convertToArrayPayload(value),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar moveArrayAt = (data, from, to) => {\r\n if (!Array.isArray(data)) {\r\n return [];\r\n }\r\n if (isUndefined(data[to])) {\r\n data[to] = undefined;\r\n }\r\n data.splice(to, 0, data.splice(from, 1)[0]);\r\n return data;\r\n};\n\nfunction prepend(data, value) {\r\n return [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\r\n}\n\nfunction removeAtIndexes(data, indexes) {\r\n let i = 0;\r\n const temp = [...data];\r\n for (const index of indexes) {\r\n temp.splice(index - i, 1);\r\n i++;\r\n }\r\n return compact(temp).length ? temp : [];\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\r\n};\n\nfunction baseGet(object, updatePath) {\r\n const length = updatePath.slice(0, -1).length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return object;\r\n}\r\nfunction unset(object, path) {\r\n const updatePath = isKey(path) ? [path] : stringToPath(path);\r\n const childObject = updatePath.length == 1 ? object : baseGet(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n let previousObjRef;\r\n if (childObject) {\r\n delete childObject[key];\r\n }\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index &&\r\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (Array.isArray(objectRef) &&\r\n !objectRef.filter((data) => !isUndefined(data)).length))) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return object;\r\n}\n\nvar updateAt = (fieldValues, index, value) => {\r\n fieldValues[index] = value;\r\n return fieldValues;\r\n};\n\n/**\r\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.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\r\n *\r\n * @param props - useFieldArray props\r\n *\r\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\r\n * defaultValues: {\r\n * test: []\r\n * }\r\n * });\r\n * const { fields, append } = useFieldArray({\r\n * control,\r\n * name: \"test\"\r\n * });\r\n *\r\n * return (\r\n *
console.log(data))}>\r\n * {fields.map((item, index) => (\r\n * \r\n * ))}\r\n * \r\n * \r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useFieldArray(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;\r\n const [fields, setFields] = React.useState(control._getFieldArray(name));\r\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\r\n const _fieldIds = React.useRef(fields);\r\n const _name = React.useRef(name);\r\n const _actioned = React.useRef(false);\r\n _name.current = name;\r\n _fieldIds.current = fields;\r\n control._names.array.add(name);\r\n const callback = React.useCallback(({ values, name: fieldArrayName }) => {\r\n if (fieldArrayName === _name.current || !fieldArrayName) {\r\n const fieldValues = get(values, _name.current, []);\r\n setFields(fieldValues);\r\n ids.current = fieldValues.map(generateId);\r\n }\r\n }, []);\r\n useSubscribe({\r\n callback,\r\n subject: control._subjects.array,\r\n });\r\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\r\n _actioned.current = true;\r\n control._updateFieldArray(name, updatedFieldArrayValues);\r\n }, [control, name]);\r\n const append$1 = (value, options) => {\r\n const appendValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = append(control._getFieldArray(name), appendValue);\r\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\r\n ids.current = append(ids.current, appendValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, append, {\r\n argA: fillEmptyArray(value),\r\n });\r\n };\r\n const prepend$1 = (value, options) => {\r\n const prependValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = prepend(control._getFieldArray(name), prependValue);\r\n control._names.focus = getFocusFieldName(name, 0, options);\r\n ids.current = prepend(ids.current, prependValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, prepend, {\r\n argA: fillEmptyArray(value),\r\n });\r\n };\r\n const remove = (index) => {\r\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\r\n ids.current = removeArrayAt(ids.current, index);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\r\n argA: index,\r\n });\r\n };\r\n const insert$1 = (index, value, options) => {\r\n const insertValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\r\n control._names.focus = getFocusFieldName(name, index, options);\r\n ids.current = insert(ids.current, index, insertValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\r\n argA: index,\r\n argB: fillEmptyArray(value),\r\n });\r\n };\r\n const swap = (indexA, indexB) => {\r\n const updatedFieldArrayValues = control._getFieldArray(name);\r\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\r\n swapArrayAt(ids.current, indexA, indexB);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n }, false);\r\n };\r\n const move = (from, to) => {\r\n const updatedFieldArrayValues = control._getFieldArray(name);\r\n moveArrayAt(updatedFieldArrayValues, from, to);\r\n moveArrayAt(ids.current, from, to);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n }, false);\r\n };\r\n const update = (index, value) => {\r\n const updateValue = cloneObject(value);\r\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\r\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\r\n updateValues(updatedFieldArrayValues);\r\n setFields([...updatedFieldArrayValues]);\r\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\r\n argA: index,\r\n argB: updateValue,\r\n }, true, false);\r\n };\r\n const replace = (value) => {\r\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\r\n ids.current = updatedFieldArrayValues.map(generateId);\r\n updateValues([...updatedFieldArrayValues]);\r\n setFields([...updatedFieldArrayValues]);\r\n control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\r\n };\r\n React.useEffect(() => {\r\n control._stateFlags.action = false;\r\n isWatched(name, control._names) && control._subjects.state.next({});\r\n if (_actioned.current) {\r\n control._executeSchema([name]).then((result) => {\r\n const error = get(result.errors, name);\r\n const existingError = get(control._formState.errors, name);\r\n if (existingError ? !error && existingError.type : error && error.type) {\r\n error\r\n ? set(control._formState.errors, name, error)\r\n : unset(control._formState.errors, name);\r\n control._subjects.state.next({\r\n errors: control._formState.errors,\r\n });\r\n }\r\n });\r\n }\r\n control._subjects.watch.next({\r\n name,\r\n values: control._formValues,\r\n });\r\n control._names.focus &&\r\n focusFieldBy(control._fields, (key) => key.startsWith(control._names.focus));\r\n control._names.focus = '';\r\n control._proxyFormState.isValid && control._updateValid();\r\n }, [fields, name, control]);\r\n React.useEffect(() => {\r\n !get(control._formValues, name) && control._updateFieldArray(name);\r\n return () => {\r\n (control._options.shouldUnregister || shouldUnregister) &&\r\n control.unregister(name);\r\n };\r\n }, [name, control, keyName, shouldUnregister]);\r\n return {\r\n swap: React.useCallback(swap, [updateValues, name, control]),\r\n move: React.useCallback(move, [updateValues, name, control]),\r\n prepend: React.useCallback(prepend$1, [updateValues, name, control]),\r\n append: React.useCallback(append$1, [updateValues, name, control]),\r\n remove: React.useCallback(remove, [updateValues, name, control]),\r\n insert: React.useCallback(insert$1, [updateValues, name, control]),\r\n update: React.useCallback(update, [updateValues, name, control]),\r\n replace: React.useCallback(replace, [updateValues, name, control]),\r\n fields: React.useMemo(() => fields.map((field, index) => ({\r\n ...field,\r\n [keyName]: ids.current[index] || generateId(),\r\n })), [fields, keyName]),\r\n };\r\n}\n\nfunction createSubject() {\r\n let _observers = [];\r\n const next = (value) => {\r\n for (const observer of _observers) {\r\n observer.next(value);\r\n }\r\n };\r\n const subscribe = (observer) => {\r\n _observers.push(observer);\r\n return {\r\n unsubscribe: () => {\r\n _observers = _observers.filter((o) => o !== observer);\r\n },\r\n };\r\n };\r\n const unsubscribe = () => {\r\n _observers = [];\r\n };\r\n return {\r\n get observers() {\r\n return _observers;\r\n },\r\n next,\r\n subscribe,\r\n unsubscribe,\r\n };\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\r\n if (isPrimitive(object1) || isPrimitive(object2)) {\r\n return object1 === object2;\r\n }\r\n if (isDateObject(object1) && isDateObject(object2)) {\r\n return object1.getTime() === object2.getTime();\r\n }\r\n const keys1 = Object.keys(object1);\r\n const keys2 = Object.keys(object2);\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n for (const key of keys1) {\r\n const val1 = object1[key];\r\n if (!keys2.includes(key)) {\r\n return false;\r\n }\r\n if (key !== 'ref') {\r\n const val2 = object2[key];\r\n if ((isDateObject(val1) && isDateObject(val2)) ||\r\n (isObject(val1) && isObject(val2)) ||\r\n (Array.isArray(val1) && Array.isArray(val2))\r\n ? !deepEqual(val1, val2)\r\n : val1 !== val2) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\n\nvar getValidationModes = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n isOnAll: mode === VALIDATION_MODE.all,\r\n isOnTouch: mode === VALIDATION_MODE.onTouched,\r\n});\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => value instanceof HTMLElement;\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar isWeb = typeof window !== 'undefined' &&\r\n typeof window.HTMLElement !== 'undefined' &&\r\n typeof document !== 'undefined';\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction markFieldsDirty(data, fields = {}) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n fields[key] = Array.isArray(data[key]) ? [] : {};\r\n markFieldsDirty(data[key], fields[key]);\r\n }\r\n else if (!isNullOrUndefined(data[key])) {\r\n fields[key] = true;\r\n }\r\n }\r\n }\r\n return fields;\r\n}\r\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n if (isUndefined(formValues) ||\r\n isPrimitive(dirtyFieldsFromValues[key])) {\r\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\r\n ? markFieldsDirty(data[key], [])\r\n : { ...markFieldsDirty(data[key]) };\r\n }\r\n else {\r\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\r\n }\r\n }\r\n else {\r\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\r\n }\r\n }\r\n }\r\n return dirtyFieldsFromValues;\r\n}\r\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (Array.isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.checked && !option.disabled)\r\n .map((option) => option.value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n return options[0].checked && !options[0].disabled\r\n ? // @ts-expect-error expected to work in the browser\r\n options[0].attributes && !isUndefined(options[0].attributes.value)\r\n ? isUndefined(options[0].value) || options[0].value === ''\r\n ? validResult\r\n : { value: options[0].value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\r\n ? value\r\n : valueAsNumber\r\n ? value === ''\r\n ? NaN\r\n : +value\r\n : valueAsDate && isString(value)\r\n ? new Date(value)\r\n : setValueAs\r\n ? setValueAs(value)\r\n : value;\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: null,\r\n};\r\nvar getRadioValue = (options) => Array.isArray(options)\r\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\r\n ? {\r\n isValid: true,\r\n value: option.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nfunction getFieldValue(_f) {\r\n const ref = _f.ref;\r\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\r\n return;\r\n }\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return getRadioValue(_f.refs).value;\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return [...ref.selectedOptions].map(({ value }) => value);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return getCheckboxValue(_f.refs).value;\r\n }\r\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\r\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\r\n const fields = {};\r\n for (const name of fieldsNames) {\r\n const field = get(_fields, name);\r\n field && set(fields, name, field._f);\r\n }\r\n return {\r\n criteriaMode,\r\n names: [...fieldsNames],\r\n fields,\r\n shouldUseNativeValidation,\r\n };\r\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\r\n ? undefined\r\n : isRegex(rule)\r\n ? rule.source\r\n : isObject(rule)\r\n ? isRegex(rule.value)\r\n ? rule.value.source\r\n : rule.value\r\n : rule;\n\nvar hasValidation = (options) => options.mount &&\r\n (options.required ||\r\n options.min ||\r\n options.max ||\r\n options.maxLength ||\r\n options.minLength ||\r\n options.pattern ||\r\n options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\r\n const error = get(errors, name);\r\n if (error || isKey(name)) {\r\n return {\r\n error,\r\n name,\r\n };\r\n }\r\n const names = name.split('.');\r\n while (names.length) {\r\n const fieldName = names.join('.');\r\n const field = get(_fields, fieldName);\r\n const foundError = get(errors, fieldName);\r\n if (field && !Array.isArray(field) && name !== fieldName) {\r\n return { name };\r\n }\r\n if (foundError && foundError.type) {\r\n return {\r\n name: fieldName,\r\n error: foundError,\r\n };\r\n }\r\n names.pop();\r\n }\r\n return {\r\n name,\r\n };\r\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\r\n if (mode.isOnAll) {\r\n return false;\r\n }\r\n else if (!isSubmitted && mode.isOnTouch) {\r\n return !(isTouched || isBlurEvent);\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\r\n return !isBlurEvent;\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\r\n return isBlurEvent;\r\n }\r\n return true;\r\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar isMessage = (value) => isString(value) || React.isValidElement(value);\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) ||\r\n (Array.isArray(result) && result.every(isMessage)) ||\r\n (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\n\nvar validateField = async (field, inputValue, validateAllFieldCriteria, shouldUseNativeValidation) => {\r\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, } = field._f;\r\n if (!mount || disabled) {\r\n return {};\r\n }\r\n const inputRef = refs ? refs[0] : ref;\r\n const setCustomValidity = (message) => {\r\n if (shouldUseNativeValidation && inputRef.reportValidity) {\r\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || ' ');\r\n inputRef.reportValidity();\r\n }\r\n };\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\r\n inputValue === '' ||\r\n (Array.isArray(inputValue) && !inputValue.length);\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = {\r\n type: exceedMax ? maxType : minType,\r\n message,\r\n ref,\r\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\r\n };\r\n };\r\n if (required &&\r\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\r\n (isBoolean(inputValue) && !inputValue) ||\r\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\r\n (isRadio && !getRadioValue(refs).isValid))) {\r\n const { value, message } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (value) {\r\n error[name] = {\r\n type: INPUT_VALIDATION_RULES.required,\r\n message,\r\n ref: inputRef,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\r\n let exceedMax;\r\n let exceedMin;\r\n const maxOutput = getValueAndMessage(max);\r\n const minOutput = getValueAndMessage(min);\r\n if (!isNaN(inputValue)) {\r\n const valueNumber = ref.valueAsNumber || +inputValue;\r\n if (!isNullOrUndefined(maxOutput.value)) {\r\n exceedMax = valueNumber > maxOutput.value;\r\n }\r\n if (!isNullOrUndefined(minOutput.value)) {\r\n exceedMin = valueNumber < minOutput.value;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(inputValue);\r\n if (isString(maxOutput.value)) {\r\n exceedMax = valueDate > new Date(maxOutput.value);\r\n }\r\n if (isString(minOutput.value)) {\r\n exceedMin = valueDate < new Date(minOutput.value);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if ((maxLength || minLength) && !isEmpty && isString(inputValue)) {\r\n const maxLengthOutput = getValueAndMessage(maxLength);\r\n const minLengthOutput = getValueAndMessage(minLength);\r\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\r\n inputValue.length > maxLengthOutput.value;\r\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\r\n inputValue.length < minLengthOutput.value;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (pattern && !isEmpty && isString(inputValue)) {\r\n const { value: patternValue, message } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\r\n error[name] = {\r\n type: INPUT_VALIDATION_RULES.pattern,\r\n message,\r\n ref,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n if (isFunction(validate)) {\r\n const result = await validate(inputValue);\r\n const validateError = getValidateError(result, inputRef);\r\n if (validateError) {\r\n error[name] = {\r\n ...validateError,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(validateError.message);\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const key in validate) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateError = getValidateError(await validate[key](inputValue), inputRef, key);\r\n if (validateError) {\r\n validationResult = {\r\n ...validateError,\r\n ...appendErrorsCurry(key, validateError.message),\r\n };\r\n setCustomValidity(validateError.message);\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = {\r\n ref: inputRef,\r\n ...validationResult,\r\n };\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n setCustomValidity(true);\r\n return error;\r\n};\n\nconst defaultOptions = {\r\n mode: VALIDATION_MODE.onSubmit,\r\n reValidateMode: VALIDATION_MODE.onChange,\r\n shouldFocusError: true,\r\n};\r\nfunction createFormControl(props = {}) {\r\n let _options = {\r\n ...defaultOptions,\r\n ...props,\r\n };\r\n let _formState = {\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touchedFields: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n errors: {},\r\n };\r\n let _fields = {};\r\n let _defaultValues = cloneObject(_options.defaultValues) || {};\r\n let _formValues = _options.shouldUnregister\r\n ? {}\r\n : cloneObject(_defaultValues);\r\n let _stateFlags = {\r\n action: false,\r\n mount: false,\r\n watch: false,\r\n };\r\n let _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n };\r\n let delayErrorCallback;\r\n let timer = 0;\r\n let validateFields = {};\r\n const _proxyFormState = {\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n };\r\n const _subjects = {\r\n watch: createSubject(),\r\n array: createSubject(),\r\n state: createSubject(),\r\n };\r\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\r\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\r\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\r\n const debounce = (callback, wait) => (...args) => {\r\n clearTimeout(timer);\r\n timer = window.setTimeout(() => callback(...args), wait);\r\n };\r\n const _updateValid = async (shouldSkipRender) => {\r\n let isValid = false;\r\n if (_proxyFormState.isValid) {\r\n isValid = _options.resolver\r\n ? isEmptyObject((await _executeSchema()).errors)\r\n : await executeBuildInValidation(_fields, true);\r\n if (!shouldSkipRender && isValid !== _formState.isValid) {\r\n _formState.isValid = isValid;\r\n _subjects.state.next({\r\n isValid,\r\n });\r\n }\r\n }\r\n return isValid;\r\n };\r\n const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\r\n if (args && method) {\r\n _stateFlags.action = true;\r\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\r\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\r\n shouldSetValues && set(_fields, name, fieldValues);\r\n }\r\n if (_proxyFormState.errors &&\r\n shouldUpdateFieldsAndState &&\r\n Array.isArray(get(_formState.errors, name))) {\r\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.errors, name, errors);\r\n unsetEmptyArray(_formState.errors, name);\r\n }\r\n if (_proxyFormState.touchedFields &&\r\n shouldUpdateFieldsAndState &&\r\n Array.isArray(get(_formState.touchedFields, name))) {\r\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\r\n }\r\n if (_proxyFormState.dirtyFields) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n }\r\n _subjects.state.next({\r\n isDirty: _getDirty(name, values),\r\n dirtyFields: _formState.dirtyFields,\r\n errors: _formState.errors,\r\n isValid: _formState.isValid,\r\n });\r\n }\r\n else {\r\n set(_formValues, name, values);\r\n }\r\n };\r\n const updateErrors = (name, error) => (set(_formState.errors, name, error),\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n }));\r\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\r\n const field = get(_fields, name);\r\n if (field) {\r\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\r\n isUndefined(defaultValue) ||\r\n (ref && ref.defaultChecked) ||\r\n shouldSkipSetValueAs\r\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\r\n : setFieldValue(name, defaultValue);\r\n _stateFlags.mount && _updateValid();\r\n }\r\n };\r\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\r\n let isFieldDirty = false;\r\n const output = {\r\n name,\r\n };\r\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\r\n if (_proxyFormState.isDirty) {\r\n const isPreviousFormDirty = _formState.isDirty;\r\n _formState.isDirty = output.isDirty = _getDirty();\r\n isFieldDirty = isPreviousFormDirty !== output.isDirty;\r\n }\r\n if (_proxyFormState.dirtyFields && (!isBlurEvent || shouldDirty)) {\r\n const isPreviousFieldDirty = get(_formState.dirtyFields, name);\r\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\r\n isCurrentFieldPristine\r\n ? unset(_formState.dirtyFields, name)\r\n : set(_formState.dirtyFields, name, true);\r\n output.dirtyFields = _formState.dirtyFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n isPreviousFieldDirty !== get(_formState.dirtyFields, name);\r\n }\r\n if (isBlurEvent && !isPreviousFieldTouched) {\r\n set(_formState.touchedFields, name, isBlurEvent);\r\n output.touchedFields = _formState.touchedFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n (_proxyFormState.touchedFields &&\r\n isPreviousFieldTouched !== isBlurEvent);\r\n }\r\n isFieldDirty && shouldRender && _subjects.state.next(output);\r\n return isFieldDirty ? output : {};\r\n };\r\n const shouldRenderByError = async (shouldSkipRender, name, isValid, error, fieldState) => {\r\n const previousFieldError = get(_formState.errors, name);\r\n const shouldUpdateValid = _proxyFormState.isValid && _formState.isValid !== isValid;\r\n if (props.delayError && error) {\r\n delayErrorCallback =\r\n delayErrorCallback || debounce(updateErrors, props.delayError);\r\n delayErrorCallback(name, error);\r\n }\r\n else {\r\n clearTimeout(timer);\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n if (((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\r\n !isEmptyObject(fieldState) ||\r\n shouldUpdateValid) &&\r\n !shouldSkipRender) {\r\n const updatedFormState = {\r\n ...fieldState,\r\n ...(shouldUpdateValid ? { isValid } : {}),\r\n errors: _formState.errors,\r\n name,\r\n };\r\n _formState = {\r\n ..._formState,\r\n ...updatedFormState,\r\n };\r\n _subjects.state.next(updatedFormState);\r\n }\r\n validateFields[name]--;\r\n if (_proxyFormState.isValidating &&\r\n !Object.values(validateFields).some((v) => v)) {\r\n _subjects.state.next({\r\n isValidating: false,\r\n });\r\n validateFields = {};\r\n }\r\n };\r\n const _executeSchema = async (name) => _options.resolver\r\n ? await _options.resolver({ ..._formValues }, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation))\r\n : {};\r\n const executeSchemaAndUpdateState = async (names) => {\r\n const { errors } = await _executeSchema();\r\n if (names) {\r\n for (const name of names) {\r\n const error = get(errors, name);\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n }\r\n else {\r\n _formState.errors = errors;\r\n }\r\n return errors;\r\n };\r\n const executeBuildInValidation = async (fields, shouldOnlyCheckValid, context = {\r\n valid: true,\r\n }) => {\r\n for (const name in fields) {\r\n const field = fields[name];\r\n if (field) {\r\n const { _f: fieldReference, ...fieldValue } = field;\r\n if (fieldReference) {\r\n const fieldError = await validateField(field, get(_formValues, fieldReference.name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation);\r\n if (fieldError[fieldReference.name]) {\r\n context.valid = false;\r\n if (shouldOnlyCheckValid) {\r\n break;\r\n }\r\n }\r\n if (!shouldOnlyCheckValid) {\r\n fieldError[fieldReference.name]\r\n ? set(_formState.errors, fieldReference.name, fieldError[fieldReference.name])\r\n : unset(_formState.errors, fieldReference.name);\r\n }\r\n }\r\n fieldValue &&\r\n (await executeBuildInValidation(fieldValue, shouldOnlyCheckValid, context));\r\n }\r\n }\r\n return context.valid;\r\n };\r\n const _removeUnmounted = () => {\r\n for (const name of _names.unMount) {\r\n const field = get(_fields, name);\r\n field &&\r\n (field._f.refs\r\n ? field._f.refs.every((ref) => !live(ref))\r\n : !live(field._f.ref)) &&\r\n unregister(name);\r\n }\r\n _names.unMount = new Set();\r\n };\r\n const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\r\n !deepEqual(getValues(), _defaultValues));\r\n const _getWatch = (names, defaultValue, isGlobal) => {\r\n const fieldValues = {\r\n ...(_stateFlags.mount\r\n ? _formValues\r\n : isUndefined(defaultValue)\r\n ? _defaultValues\r\n : isString(names)\r\n ? { [names]: defaultValue }\r\n : defaultValue),\r\n };\r\n return generateWatchOutput(names, _names, fieldValues, isGlobal);\r\n };\r\n const _getFieldArray = (name) => compact(get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\r\n const setFieldValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n let fieldValue = value;\r\n if (field) {\r\n const fieldReference = field._f;\r\n if (fieldReference) {\r\n !fieldReference.disabled &&\r\n set(_formValues, name, getFieldValueAs(value, fieldReference));\r\n fieldValue =\r\n isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\r\n ? ''\r\n : value;\r\n if (isMultipleSelect(fieldReference.ref)) {\r\n [...fieldReference.ref.options].forEach((selectRef) => (selectRef.selected = fieldValue.includes(selectRef.value)));\r\n }\r\n else if (fieldReference.refs) {\r\n if (isCheckBoxInput(fieldReference.ref)) {\r\n fieldReference.refs.length > 1\r\n ? fieldReference.refs.forEach((checkboxRef) => !checkboxRef.disabled &&\r\n (checkboxRef.checked = Array.isArray(fieldValue)\r\n ? !!fieldValue.find((data) => data === checkboxRef.value)\r\n : fieldValue === checkboxRef.value))\r\n : fieldReference.refs[0] &&\r\n (fieldReference.refs[0].checked = !!fieldValue);\r\n }\r\n else {\r\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\r\n }\r\n }\r\n else if (isFileInput(fieldReference.ref)) {\r\n fieldReference.ref.value = '';\r\n }\r\n else {\r\n fieldReference.ref.value = fieldValue;\r\n if (!fieldReference.ref.type) {\r\n _subjects.watch.next({\r\n name,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n (options.shouldDirty || options.shouldTouch) &&\r\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\r\n options.shouldValidate && trigger(name);\r\n };\r\n const setValues = (name, value, options) => {\r\n for (const fieldKey in value) {\r\n const fieldValue = value[fieldKey];\r\n const fieldName = `${name}.${fieldKey}`;\r\n const field = get(_fields, fieldName);\r\n (_names.array.has(name) ||\r\n !isPrimitive(fieldValue) ||\r\n (field && !field._f)) &&\r\n !isDateObject(fieldValue)\r\n ? setValues(fieldName, fieldValue, options)\r\n : setFieldValue(fieldName, fieldValue, options);\r\n }\r\n };\r\n const setValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n const isFieldArray = _names.array.has(name);\r\n const cloneValue = cloneObject(value);\r\n set(_formValues, name, cloneValue);\r\n if (isFieldArray) {\r\n _subjects.array.next({\r\n name,\r\n values: _formValues,\r\n });\r\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\r\n options.shouldDirty) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n _subjects.state.next({\r\n name,\r\n dirtyFields: _formState.dirtyFields,\r\n isDirty: _getDirty(name, cloneValue),\r\n });\r\n }\r\n }\r\n else {\r\n field && !field._f && !isNullOrUndefined(cloneValue)\r\n ? setValues(name, cloneValue, options)\r\n : setFieldValue(name, cloneValue, options);\r\n }\r\n isWatched(name, _names) && _subjects.state.next({});\r\n _subjects.watch.next({\r\n name,\r\n });\r\n };\r\n const onChange = async (event) => {\r\n const target = event.target;\r\n let name = target.name;\r\n const field = get(_fields, name);\r\n if (field) {\r\n let error;\r\n let isValid;\r\n const fieldValue = target.type\r\n ? getFieldValue(field._f)\r\n : getEventValue(event);\r\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\r\n const shouldSkipValidation = (!hasValidation(field._f) &&\r\n !_options.resolver &&\r\n !get(_formState.errors, name) &&\r\n !field._f.deps) ||\r\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\r\n const watched = isWatched(name, _names, isBlurEvent);\r\n set(_formValues, name, fieldValue);\r\n if (isBlurEvent) {\r\n field._f.onBlur && field._f.onBlur(event);\r\n }\r\n else if (field._f.onChange) {\r\n field._f.onChange(event);\r\n }\r\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\r\n const shouldRender = !isEmptyObject(fieldState) || watched;\r\n !isBlurEvent &&\r\n _subjects.watch.next({\r\n name,\r\n type: event.type,\r\n });\r\n if (shouldSkipValidation) {\r\n return (shouldRender &&\r\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\r\n }\r\n !isBlurEvent && watched && _subjects.state.next({});\r\n validateFields[name] = validateFields[name] ? +1 : 1;\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const { errors } = await _executeSchema([name]);\r\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\r\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\r\n error = errorLookupResult.error;\r\n name = errorLookupResult.name;\r\n isValid = isEmptyObject(errors);\r\n }\r\n else {\r\n error = (await validateField(field, get(_formValues, name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\r\n isValid = await _updateValid(true);\r\n }\r\n field._f.deps &&\r\n trigger(field._f.deps);\r\n shouldRenderByError(false, name, isValid, error, fieldState);\r\n }\r\n };\r\n const trigger = async (name, options = {}) => {\r\n let isValid;\r\n let validationResult;\r\n const fieldNames = convertToArrayPayload(name);\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\r\n isValid = isEmptyObject(errors);\r\n validationResult = name\r\n ? !fieldNames.some((name) => get(errors, name))\r\n : isValid;\r\n }\r\n else if (name) {\r\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\r\n const field = get(_fields, fieldName);\r\n return await executeBuildInValidation(field && field._f ? { [fieldName]: field } : field);\r\n }))).every(Boolean);\r\n !(!validationResult && !_formState.isValid) && _updateValid();\r\n }\r\n else {\r\n validationResult = isValid = await executeBuildInValidation(_fields);\r\n }\r\n _subjects.state.next({\r\n ...(!isString(name) ||\r\n (_proxyFormState.isValid && isValid !== _formState.isValid)\r\n ? {}\r\n : { name }),\r\n ...(_options.resolver ? { isValid } : {}),\r\n errors: _formState.errors,\r\n isValidating: false,\r\n });\r\n options.shouldFocus &&\r\n !validationResult &&\r\n focusFieldBy(_fields, (key) => get(_formState.errors, key), name ? fieldNames : _names.mount);\r\n return validationResult;\r\n };\r\n const getValues = (fieldNames) => {\r\n const values = {\r\n ..._defaultValues,\r\n ...(_stateFlags.mount ? _formValues : {}),\r\n };\r\n return isUndefined(fieldNames)\r\n ? values\r\n : isString(fieldNames)\r\n ? get(values, fieldNames)\r\n : fieldNames.map((name) => get(values, name));\r\n };\r\n const getFieldState = (name, formState) => ({\r\n invalid: !!get((formState || _formState).errors, name),\r\n isDirty: !!get((formState || _formState).dirtyFields, name),\r\n isTouched: !!get((formState || _formState).touchedFields, name),\r\n error: get((formState || _formState).errors, name),\r\n });\r\n const clearErrors = (name) => {\r\n name\r\n ? convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName))\r\n : (_formState.errors = {});\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n });\r\n };\r\n const setError = (name, error, options) => {\r\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\r\n set(_formState.errors, name, {\r\n ...error,\r\n ref,\r\n });\r\n _subjects.state.next({\r\n name,\r\n errors: _formState.errors,\r\n isValid: false,\r\n });\r\n options && options.shouldFocus && ref && ref.focus && ref.focus();\r\n };\r\n const watch = (name, defaultValue) => isFunction(name)\r\n ? _subjects.watch.subscribe({\r\n next: (info) => name(_getWatch(undefined, defaultValue), info),\r\n })\r\n : _getWatch(name, defaultValue, true);\r\n const unregister = (name, options = {}) => {\r\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\r\n _names.mount.delete(fieldName);\r\n _names.array.delete(fieldName);\r\n if (get(_fields, fieldName)) {\r\n if (!options.keepValue) {\r\n unset(_fields, fieldName);\r\n unset(_formValues, fieldName);\r\n }\r\n !options.keepError && unset(_formState.errors, fieldName);\r\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\r\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\r\n !_options.shouldUnregister &&\r\n !options.keepDefaultValue &&\r\n unset(_defaultValues, fieldName);\r\n }\r\n }\r\n _subjects.watch.next({});\r\n _subjects.state.next({\r\n ..._formState,\r\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\r\n });\r\n !options.keepIsValid && _updateValid();\r\n };\r\n const register = (name, options = {}) => {\r\n let field = get(_fields, name);\r\n const disabledIsDefined = isBoolean(options.disabled);\r\n set(_fields, name, {\r\n _f: {\r\n ...(field && field._f ? field._f : { ref: { name } }),\r\n name,\r\n mount: true,\r\n ...options,\r\n },\r\n });\r\n _names.mount.add(name);\r\n field\r\n ? disabledIsDefined &&\r\n set(_formValues, name, options.disabled\r\n ? undefined\r\n : get(_formValues, name, getFieldValue(field._f)))\r\n : updateValidAndValue(name, true, options.value);\r\n return {\r\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\r\n ...(_options.shouldUseNativeValidation\r\n ? {\r\n required: !!options.required,\r\n min: getRuleValue(options.min),\r\n max: getRuleValue(options.max),\r\n minLength: getRuleValue(options.minLength),\r\n maxLength: getRuleValue(options.maxLength),\r\n pattern: getRuleValue(options.pattern),\r\n }\r\n : {}),\r\n name,\r\n onChange,\r\n onBlur: onChange,\r\n ref: (ref) => {\r\n if (ref) {\r\n register(name, options);\r\n field = get(_fields, name);\r\n const fieldRef = isUndefined(ref.value)\r\n ? ref.querySelectorAll\r\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\r\n : ref\r\n : ref;\r\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\r\n const refs = field._f.refs || [];\r\n if (radioOrCheckbox\r\n ? refs.find((option) => option === fieldRef)\r\n : fieldRef === field._f.ref) {\r\n return;\r\n }\r\n set(_fields, name, {\r\n _f: {\r\n ...field._f,\r\n ...(radioOrCheckbox\r\n ? {\r\n refs: [\r\n ...refs.filter(live),\r\n fieldRef,\r\n ...(!!Array.isArray(get(_defaultValues, name))\r\n ? [{}]\r\n : []),\r\n ],\r\n ref: { type: fieldRef.type, name },\r\n }\r\n : { ref: fieldRef }),\r\n },\r\n });\r\n updateValidAndValue(name, false, undefined, fieldRef);\r\n }\r\n else {\r\n field = get(_fields, name, {});\r\n if (field._f) {\r\n field._f.mount = false;\r\n }\r\n (_options.shouldUnregister || options.shouldUnregister) &&\r\n !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\r\n _names.unMount.add(name);\r\n }\r\n },\r\n };\r\n };\r\n const handleSubmit = (onValid, onInvalid) => async (e) => {\r\n if (e) {\r\n e.preventDefault && e.preventDefault();\r\n e.persist && e.persist();\r\n }\r\n let hasNoPromiseError = true;\r\n let fieldValues = cloneObject(_formValues);\r\n _subjects.state.next({\r\n isSubmitting: true,\r\n });\r\n try {\r\n if (_options.resolver) {\r\n const { errors, values } = await _executeSchema();\r\n _formState.errors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n await executeBuildInValidation(_fields);\r\n }\r\n if (isEmptyObject(_formState.errors)) {\r\n _subjects.state.next({\r\n errors: {},\r\n isSubmitting: true,\r\n });\r\n await onValid(fieldValues, e);\r\n }\r\n else {\r\n if (onInvalid) {\r\n await onInvalid({ ..._formState.errors }, e);\r\n }\r\n _options.shouldFocusError &&\r\n focusFieldBy(_fields, (key) => get(_formState.errors, key), _names.mount);\r\n }\r\n }\r\n catch (err) {\r\n hasNoPromiseError = false;\r\n throw err;\r\n }\r\n finally {\r\n _formState.isSubmitted = true;\r\n _subjects.state.next({\r\n isSubmitted: true,\r\n isSubmitting: false,\r\n isSubmitSuccessful: isEmptyObject(_formState.errors) && hasNoPromiseError,\r\n submitCount: _formState.submitCount + 1,\r\n errors: _formState.errors,\r\n });\r\n }\r\n };\r\n const resetField = (name, options = {}) => {\r\n if (get(_fields, name)) {\r\n if (isUndefined(options.defaultValue)) {\r\n setValue(name, get(_defaultValues, name));\r\n }\r\n else {\r\n setValue(name, options.defaultValue);\r\n set(_defaultValues, name, options.defaultValue);\r\n }\r\n if (!options.keepTouched) {\r\n unset(_formState.touchedFields, name);\r\n }\r\n if (!options.keepDirty) {\r\n unset(_formState.dirtyFields, name);\r\n _formState.isDirty = options.defaultValue\r\n ? _getDirty(name, get(_defaultValues, name))\r\n : _getDirty();\r\n }\r\n if (!options.keepError) {\r\n unset(_formState.errors, name);\r\n _proxyFormState.isValid && _updateValid();\r\n }\r\n _subjects.state.next({ ..._formState });\r\n }\r\n };\r\n const reset = (formValues, keepStateOptions = {}) => {\r\n const updatedValues = formValues || _defaultValues;\r\n const cloneUpdatedValues = cloneObject(updatedValues);\r\n const values = formValues && !isEmptyObject(formValues)\r\n ? cloneUpdatedValues\r\n : _defaultValues;\r\n if (!keepStateOptions.keepDefaultValues) {\r\n _defaultValues = updatedValues;\r\n }\r\n if (!keepStateOptions.keepValues) {\r\n if (keepStateOptions.keepDirtyValues) {\r\n for (const fieldName of _names.mount) {\r\n get(_formState.dirtyFields, fieldName)\r\n ? set(values, fieldName, get(_formValues, fieldName))\r\n : setValue(fieldName, get(values, fieldName));\r\n }\r\n }\r\n else {\r\n if (isWeb && isUndefined(formValues)) {\r\n for (const name of _names.mount) {\r\n const field = get(_fields, name);\r\n if (field && field._f) {\r\n const fieldReference = Array.isArray(field._f.refs)\r\n ? field._f.refs[0]\r\n : field._f.ref;\r\n try {\r\n isHTMLElement(fieldReference) &&\r\n fieldReference.closest('form').reset();\r\n break;\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n _fields = {};\r\n }\r\n _formValues = props.shouldUnregister\r\n ? keepStateOptions.keepDefaultValues\r\n ? cloneObject(_defaultValues)\r\n : {}\r\n : cloneUpdatedValues;\r\n _subjects.array.next({\r\n values,\r\n });\r\n _subjects.watch.next({\r\n values,\r\n });\r\n }\r\n _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n watchAll: false,\r\n focus: '',\r\n };\r\n _stateFlags.mount =\r\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\r\n _stateFlags.watch = !!props.shouldUnregister;\r\n _subjects.state.next({\r\n submitCount: keepStateOptions.keepSubmitCount\r\n ? _formState.submitCount\r\n : 0,\r\n isDirty: keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n ? _formState.isDirty\r\n : !!(keepStateOptions.keepDefaultValues &&\r\n !deepEqual(formValues, _defaultValues)),\r\n isSubmitted: keepStateOptions.keepIsSubmitted\r\n ? _formState.isSubmitted\r\n : false,\r\n dirtyFields: keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n ? _formState.dirtyFields\r\n : keepStateOptions.keepDefaultValues && formValues\r\n ? getDirtyFields(_defaultValues, formValues)\r\n : {},\r\n touchedFields: keepStateOptions.keepTouched\r\n ? _formState.touchedFields\r\n : {},\r\n errors: keepStateOptions.keepErrors\r\n ? _formState.errors\r\n : {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n });\r\n };\r\n const setFocus = (name, options = {}) => {\r\n const field = get(_fields, name)._f;\r\n const fieldRef = field.refs ? field.refs[0] : field.ref;\r\n options.shouldSelect ? fieldRef.select() : fieldRef.focus();\r\n };\r\n return {\r\n control: {\r\n register,\r\n unregister,\r\n getFieldState,\r\n _executeSchema,\r\n _getWatch,\r\n _getDirty,\r\n _updateValid,\r\n _removeUnmounted,\r\n _updateFieldArray,\r\n _getFieldArray,\r\n _subjects,\r\n _proxyFormState,\r\n get _fields() {\r\n return _fields;\r\n },\r\n get _formValues() {\r\n return _formValues;\r\n },\r\n get _stateFlags() {\r\n return _stateFlags;\r\n },\r\n set _stateFlags(value) {\r\n _stateFlags = value;\r\n },\r\n get _defaultValues() {\r\n return _defaultValues;\r\n },\r\n get _names() {\r\n return _names;\r\n },\r\n set _names(value) {\r\n _names = value;\r\n },\r\n get _formState() {\r\n return _formState;\r\n },\r\n set _formState(value) {\r\n _formState = value;\r\n },\r\n get _options() {\r\n return _options;\r\n },\r\n set _options(value) {\r\n _options = {\r\n ..._options,\r\n ...value,\r\n };\r\n },\r\n },\r\n trigger,\r\n register,\r\n handleSubmit,\r\n watch,\r\n setValue,\r\n getValues,\r\n reset,\r\n resetField,\r\n clearErrors,\r\n unregister,\r\n setError,\r\n setFocus,\r\n getFieldState,\r\n };\r\n}\n\n/**\r\n * Custom hook to mange the entire form.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\r\n *\r\n * @param props - form configuration and validation parameters.\r\n *\r\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * console.log(watch(\"example\"));\r\n *\r\n * return (\r\n *
\r\n * \r\n * \r\n * {errors.exampleRequired && This field is required}\r\n * \r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useForm(props = {}) {\r\n const _formControl = React.useRef();\r\n const [formState, updateFormState] = React.useState({\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touchedFields: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n errors: {},\r\n });\r\n if (_formControl.current) {\r\n _formControl.current.control._options = props;\r\n }\r\n else {\r\n _formControl.current = {\r\n ...createFormControl(props),\r\n formState,\r\n };\r\n }\r\n const control = _formControl.current.control;\r\n const callback = React.useCallback((value) => {\r\n if (shouldRenderFormState(value, control._proxyFormState, true)) {\r\n control._formState = {\r\n ...control._formState,\r\n ...value,\r\n };\r\n updateFormState({ ...control._formState });\r\n }\r\n }, [control]);\r\n useSubscribe({\r\n subject: control._subjects.state,\r\n callback,\r\n });\r\n React.useEffect(() => {\r\n if (!control._stateFlags.mount) {\r\n control._proxyFormState.isValid && control._updateValid();\r\n control._stateFlags.mount = true;\r\n }\r\n if (control._stateFlags.watch) {\r\n control._stateFlags.watch = false;\r\n control._subjects.state.next({});\r\n }\r\n control._removeUnmounted();\r\n });\r\n _formControl.current.formState = getProxyFormState(formState, control._proxyFormState);\r\n return _formControl.current;\r\n}\n\nexport { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n"],"names":["isCheckBoxInput","element","type","isDateObject","value","Date","isNullOrUndefined","isObjectType","isObject","Array","isArray","getEventValue","event","target","checked","isNameInFieldArray","names","name","has","substring","search","getNodeParentName","compact","filter","Boolean","isUndefined","val","undefined","get","obj","path","defaultValue","result","split","reduce","key","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","HookFormContext","useFormContext","getProxyFormState","formState","_proxyFormState","localProxyFormState","isRoot","Object","defineProperty","_key","isEmptyObject","keys","length","shouldRenderFormState","formStateData","find","convertToArrayPayload","shouldSubscribeByName","signalName","exact","some","currentName","startsWith","useSubscribe","props","_props","current","subscription","disabled","subject","subscribe","next","callback","unsubscribe","tearDown","isString","generateWatchOutput","_names","formValues","isGlobal","watch","add","map","fieldName","watchAll","isFunction","objectHasFunction","data","useController","methods","control","shouldUnregister","isArrayField","array","_name","fieldValues","values","_formValues","updateValue","_subjects","_getWatch","_removeUnmounted","useWatch","_defaultValues","updateFormState","_formState","_localProxyFormState","isDirty","dirtyFields","touchedFields","isValidating","isValid","errors","_mounted","state","useFormState","_registerProps","register","rules","updateMounted","field","_fields","_f","mount","_shouldUnregisterField","_options","_stateFlags","action","unregister","onChange","onBlur","ref","elm","focus","setCustomValidity","message","reportValidity","fieldState","defineProperties","invalid","isTouched","error","Controller","render","appendErrors","validateAllFieldCriteria","types","isKey","test","stringToPath","input","replace","set","object","index","tempPath","lastIndex","newValue","objValue","isNaN","focusFieldBy","fields","fieldsNames","currentField","refs","isWatched","isBlurEvent","watchName","slice","cloneObject","copy","Set","globalThis","Blob","FileList","unset","updatePath","childObject","baseGet","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","createSubject","_observers","observers","observer","push","o","isPrimitive","deepEqual","object1","object2","getTime","keys1","keys2","val1","includes","val2","getValidationModes","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isBoolean","isFileInput","isHTMLElement","HTMLElement","isMultipleSelect","isRadioInput","isWeb","window","document","live","isConnected","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","defaultValues","defaultResult","validResult","getCheckboxValue","options","option","attributes","getFieldValueAs","valueAsNumber","valueAsDate","setValueAs","NaN","defaultReturn","getRadioValue","previous","getFieldValue","every","files","selectedOptions","isRegex","RegExp","getRuleValue","rule","source","schemaErrorLookup","join","foundError","pop","isMessage","getValidateError","getValueAndMessage","validationData","validateField","async","inputValue","shouldUseNativeValidation","required","maxLength","minLength","min","max","pattern","validate","inputRef","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueNumber","maxLengthOutput","minLengthOutput","patternValue","match","validateError","validationResult","defaultOptions","reValidateMode","shouldFocusError","createFormControl","delayErrorCallback","isSubmitted","submitCount","isSubmitting","isSubmitSuccessful","unMount","timer","validateFields","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","criteriaMode","_updateValid","shouldSkipRender","resolver","_executeSchema","executeBuildInValidation","updateErrors","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","isFieldDirty","output","isPreviousFieldTouched","isPreviousFormDirty","_getDirty","isPreviousFieldDirty","shouldRenderByError","previousFieldError","shouldUpdateValid","wait","delayError","args","clearTimeout","setTimeout","updatedFormState","v","context","getResolverOptions","shouldOnlyCheckValid","valid","fieldReference","fieldError","getValues","forEach","selectRef","selected","checkboxRef","radioRef","shouldTouch","shouldValidate","trigger","setValues","fieldKey","setValue","isFieldArray","cloneValue","shouldSkipValidation","deps","skipValidation","watched","previousErrorLookupResult","errorLookupResult","fieldNames","executeSchemaAndUpdateState","Promise","all","shouldFocus","getFieldState","delete","keepValue","keepError","keepDirty","keepTouched","keepDefaultValue","keepIsValid","disabledIsDefined","fieldRef","querySelectorAll","radioOrCheckbox","_updateFieldArray","method","shouldSetValues","shouldUpdateFieldsAndState","argA","argB","unsetEmptyArray","_getFieldArray","handleSubmit","onValid","onInvalid","e","preventDefault","persist","hasNoPromiseError","err","info","reset","keepStateOptions","updatedValues","cloneUpdatedValues","keepDefaultValues","keepValues","keepDirtyValues","closest","_a","keepSubmitCount","keepIsSubmitted","keepErrors","resetField","clearErrors","inputName","setError","setFocus","shouldSelect","select","useForm","_formControl"],"sourceRoot":""}